diff --git a/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.elf b/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.elf index 13cc2cb..29c5c22 100755 Binary files a/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.elf and b/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.elf differ diff --git a/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.hex b/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.hex index 34477ed..834757f 100644 --- a/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.hex +++ b/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.hex @@ -338,42 +338,42 @@ :10150000203DD5F8FC3D43F08073C5F8FC3D3B4BD6 :101510001A6842F001021A605B680B6000F004FA7E :10152000C6F804913648C6F800B1C6F8F490C6F87B -:10153000F0A000F07DFBD8F86C10324B324A41F439 +:10153000F0A000F069FBD8F86C10324B324A41F44D :101540004051C8F86C101F60C3F80871C3F81871D7 :10155000C3F82871C3F83871936BDB0708D442F6DF :1015600015632A4951651365936B43F00103936337 :10157000254A274C936843F00113936000F026F945 -:1015800000F03EFB00F0FEF900F04CF92368132B4D +:1015800000F046FB00F0FEF900F04CF92368132B45 :10159000FCD900F08FFA2368B3F5967FFBD300F0F7 -:1015A00045F900F041F900F033FB00F039FB30BFA2 -:1015B000FDE700BF00800D40883E03008CE3016022 -:1015C00000000000C0560020182205600000002026 -:1015D000C0BC0020C0560020005400209DAB02007B -:1015E00000E400E0A0E400E000C00A40AD95020085 -:1015F000E4BA0020B195020000002020001000E0B5 +:1015A00045F900F041F900F03FFB00F029FB30BFA6 +:1015B000FDE700BF00800D40883F03008CE3016021 +:1015C00000000000C0560020182305600000002025 +:1015D000E0BC0020C05600200054002085AC020072 +:1015E00000E400E0A0E400E000C00A409996020098 +:1015F00004BB00209D96020000002020001000E0A7 :1016000080D1F0080040084000400D400000C05666 -:10161000E8BA00201B1018200C0D111300C00F4059 +:1016100008BB00201B1018200C0D111300C00F4038 :10162000074B4FF42A01074A07485A641864074ACF :1016300099639546BFF34F8FBFF36F8FFFF7F4FEAB :1016400000C00A40FFBFAAAA0700200000800420B3 :1016500043690A4A03EB011010B4037A084C02EB09 :101660000313D3E901321460C2681A6003690BB135 -:1016700042691A605DF8044B704700BFB444002013 +:1016700042691A605DF8044B704700BF7445002052 :1016800061F801004369027E03EB021292F808C080 :101690008C451CD01A7AFF2A19D0914210B5044605 :1016A00016D01A7EFF2A06D00121D3E90023126842 :1016B0001A4201D1217610BD064B0522204603EBCC :1016C0000C135B681A60FFF7C3FF2176F3E77047DE -:1016D0000021EAE7B444002043690A4A03EB011001 +:1016D0000021EAE77445002043690A4A03EB011040 :1016E00010B490F82830084C02EB0313D3E9013210 :1016F0001460C26A1A60036B0BB1426B1A605DF82A -:10170000044B7047B444002061F801004369427EF5 +:10170000044B70477445002061F801004369427E34 :1017100003EB021292F828C08C451ED093F82820C3 :10172000FF2A1AD0914210B5044617D093F83820FA :10173000FF2A06D00121D3E9002312681A4201D101 :10174000617610BD064B0522204603EB0C135B6847 :101750001A60FFF7C1FF6176F3E770470021EAE7FF -:10176000B4440020164942698B6B23F47C0343F494 +:1017600074450020164942698B6B23F47C0343F4D3 :10177000802370B58B630446124DD2E900130A68CA :101780001A4303690A60022200211A610E4A196194 :101790009A6401225A629D624FF43035DD624FF047 @@ -384,7 +384,7 @@ :1017E000D96E41F44071D96654649064936C1B06C1 :1017F000FCD4094A40F23761A02351649364936C8E :1018000013F08003FBD1054A13705DF8044B704759 -:1018100000C00F4000400C4000800C4081BC002004 +:1018100000C00F4000400C4000800C40A1BC0020E4 :10182000704700BF704700BF704700BF00BF7047E0 :1018300010B44FF0E023002110242B48C3F8941D6E :10184000C3F89C4D1124C3F8A00D2848C3F89C4D43 @@ -398,7 +398,7 @@ :1018C000942DBFF34F8FBFF36F8FC3F8501FBFF33B :1018D0004F8FBFF36F8FD3F8142D5DF8044B42F494 :1018E0004032C3F8142D70473F0000102500080354 -:1018F00009001000C0BC00201300200021000207D6 +:1018F00009001000E0BC00201300200021000207B6 :1019000014000020250008130900001016002020F4 :1019100027000B1317000040180000602F000B0772 :10192000190000702F000B13F0B4154A40274FF434 @@ -424,35 +424,35 @@ :101A6000803043F00203C2F88030114B80F840C050 :101A7000C1F840314FF0E023012230BCC3F8082107 :101A8000704700BF00810D4000441F400000AA4283 -:101A90000000B442B4BA0020B0BA0020B8BA0020A6 -:101AA000BCBA00200000FF0F00E400E0005400205A -:101AB0007DAD0200314B40F6617210B5C3F82021B4 -:101AC00040F2044400F0A0F82D4A2E49D2F88030AC +:101A90000000B442D4BA0020D0BA0020D8BA002046 +:101AA000DCBA00200000FF0F00E400E0005400203A +:101AB00065AE0200314B40F6617210B5C3F82021CB +:101AC00040F2044400F0A8F82D4A2E49D2F88030A4 :101AD0002D4843F00303C2F880302C4BC1F860411D :101AE00002681A4203D1D1F8A8319A071BD0254ABF :101AF0004FF00041244B5963D2F8403143F00203C8 :101B0000C2F84031D2F840319B07FBD44FF400308B :101B10004FF0E0211C4B4FF00042C1F88C0219201D -:101B20009A6300F081F8184A4FF08040154C00216C +:101B20009A6300F07DF8184A4FF08040154C002170 :101B300090630A20164B11604FF42072C4F8A8017C -:101B4000184600F069F84FF4800203464FF4810014 +:101B4000184600F075F84FF4800203464FF4810008 :101B500040F243111860C4F858311A640D4B0E4A14 :101B6000C4F84811C3F804224FF0E0224FF40031CA :101B70000123C2F80C11C4F8403110BD00800D40A3 :101B800000C00F4000002E4000900D40001C1E00C1 -:101B900000000020005400209DAF020008B50E4B4D +:101B9000000000200054002085B0020008B50E4B64 :101BA0001B6E9B0700D4FBBE72B60C4B00200C4A88 :101BB000C3F8400103F160430A49A3F55F231164B0 :101BC0009D46BFF34F8F4FF400130748074ADB6968 :101BD00002609B68984700BF00441F4000002E40F1 :101BE00000C00A400300200000802020000012EB0B :101BF000F8B500BFF8BC08BC9E4670470000000066 -:101C00005FF800F0A1AA02005FF800F099B60200A8 -:101C10005FF800F039EA02005FF800F08DE402009E -:101C20005FF800F0F9A602005FF800F0CDA4020012 -:101C30005FF800F0DDA1020045000000A5000000F3 -:101C40000590010059570200956B0200E16B0200FC -:0C1C5000E1800200419C0200C19C0200E7 +:101C00005FF800F0E1A702005FF800F0C5A2020053 +:101C10005FF800F089AB02005FF800F081B70200C6 +:101C20005FF800F0B5A502005FF800F019EB0200C4 +:101C30005FF800F075E5020045000000A500000017 +:101C4000E990010045580200816C0200CD6C020051 +:0C1C5000CD8102002D9D0200AD9D020020 :101C5C00B41F0060BC1C006020007E0071000000FE :101C6C00C8740060D071006020007E005E0000002F :101C7C0098AF0060A0AC006020007E004B0000001C @@ -7708,17 +7708,17 @@ :10E1800001000000FF000000FF0000000000000090 :10E19000000000001300000013000000CC841F40AA :10E1A00001000000FF000000FF0000000000000070 -:10E1B000000000001C000000BD56020070C00F40AF +:10E1B000000000001C000000A957020070C00F40C2 :10E1C000000C00001100000011000000E0841F405E :10E1D000020000002400000012000000E0841F4044 :10E1E000010000001000000011000000DC841F404E :10E1F000020000002500000012000000DC841F4027 -:10E20000010000001E000000C956020080C00F403F +:10E20000010000001E000000B557020080C00F4052 :10E21000000000031900000010000000E8841F4007 :10E2200001000000FF000000FF00000000000000EF :10E23000000000001800000010000000E4841F40EF :10E2400001000000FF000000FF00000000000000CF -:10E25000000000001F000000D55602000000000171 +:10E25000000000001F000000C15702000000000184 :10E260000100000018035400650065006E00730093 :10E27000790020004D004900440049001803540073 :10E28000650065006E007300790064007500690028 @@ -7744,37 +7744,37 @@ :10E3BC00034B03B118477047C0560020C0560020CD :10E3CC000000000008B5054B1BB105490548AFF32B :10E3DC000080BDE80840FFF7E3BF00BF000000006D -:10E3EC004CBA00200088056070B543F6546443F6BF -:10E3FC00045506460444054404F10C00383C18F05E -:10E40C0021FCAC42F8D1304670BD00BF014802F08F -:10E41C0077BC00BF80640020014802F0E3BE00BF5F -:10E42C008064002010B5054C204601F0FBFD204611 -:10E43C00034A0449BDE810402DF062BB8064002003 -:10E44C00244C002069000000704700BF704700BFDB +:10E3EC006CBA00200088056070B543F6746443F67F +:10E3FC00245506460444054404F10C00383C18F03E +:10E40C0093FCAC42F8D1304670BD00BF014802F01D +:10E41C007BBC00BF80640020014802F0E7BE00BF57 +:10E42C008064002010B5054C204601F0F5FD204617 +:10E43C00034A0449BDE810402DF0D6BB806400208F +:10E44C00E44C002069000000704700BF704700BF1B :10E45C002DE9F041C2EB02144FF4616C1F46884663 :10E46C00A400064615460CFB014417211C441A4B0C -:10E47C009C42C8BF0024446018482CF025FA0121A6 -:10E48C0017482CF021FA002341460A22154829F09E -:10E49C00CDFE012112482CF017FA00230A2229463E -:10E4AC00104829F0C3FE01210D482CF00DFA002371 -:10E4BC000A2239460B4829F0B9FE012108482CF0F4 -:10E4CC0003FA716800230A22064829F0AFFE0548BA -:10E4DC00BDE8F04129F08EBE8051010004190020E6 -:10E4EC00EC230020A84B00202DE9F04F8BB00F46F9 +:10E47C009C42C8BF0024446018482CF099FA012132 +:10E48C0017482CF095FA002341460A22154829F02A +:10E49C0043FF012112482CF08BFA00230A22294653 +:10E4AC00104829F039FF01210D482CF081FA002386 +:10E4BC000A2239460B4829F02FFF012108482CF07D +:10E4CC0077FA716800230A22064829F025FF0548CF +:10E4DC00BDE8F04129F004BF80510100041900206F +:10E4EC00EC230020684C00202DE9F04F8BB00F4638 :10E4FC000446012107933846BDF8503090469DF8EC :10E50C005CB00125069308AEBDF85430BDF85890A8 -:10E51C00059326F0B7FA00234FEA4B0223606360A1 +:10E51C00059326F02DFB00234FEA4B02236063602A :10E52C00059B0492A3EB0B0A6B1E042B00F28B8051 :10E53C00DFE803F03B36433103004549384626F00B -:10E54C00A7FA0023C6E90033B8F1000F0DD00DF186 +:10E54C001DFB0023C6E90033B8F1000F0DD00DF10F :10E55C002602414638460096039209AA02920DF112 -:10E56C00220201921A4626F07FFB334603CB6160F0 +:10E56C00220201921A4626F0F5FB334603CB61607A :10E57C00A188206051450ADCE288A9EB0B0CB4F9A8 :10E58C000230049813441018184460451EDD062D03 -:10E59C0018D00135C8E72F49384626F079FAD0E76C -:10E5AC002D49384626F074FACBE7B9F13F0FF0D974 -:10E5BC002A49384626F06CFAC3E72949384626F032 -:10E5CC0067FABEE7E288B4F90230134407EE903ADA +:10E59C0018D00135C8E72F49384626F0EFFAD0E7F6 +:10E5AC002D49384626F0EAFACBE7B9F13F0FF0D9FE +:10E5BC002A49384626F0E2FAC3E72949384626F0BC +:10E5CC00DDFABEE7E288B4F90230134407EE903A64 :10E5DC00B4F90000A9EB0202059DB8EEE76B05EE5D :10E5EC00909A07EE902A281AB6EE004B079BB8EECD :10E5FC00E77B401AB8EEE55B48BF0130A7EE445B01 @@ -7782,7 +7782,7 @@ :10E61C00B8EEE77B37EE057B37EE467BBDEEC77B6E :10E62C0017EE103A1BB2934204DA204663800BB00B :10E63C00BDE8F08F069B2046013B9944A4F802905C -:10E64C000BB0BDE8F08F0749384626F021FA78E781 +:10E64C000BB0BDE8F08F0749384626F097FA78E70B :10E65C009C1C00608C1C00606C1C00605C1C0060CE :10E66C007C1C0060AC1C0060754A4FF0000C10B5AF :10E67C001368044680F801C082B0C0691B1AA088D8 @@ -7794,30 +7794,30 @@ :10E6DC0051230E0230EE000ABDEEC00A10EE103AC5 :10E6EC00DB0740F19180A07902B010BD70EE007A8A :10E6FC00B7EE001BB7EEC00AFCEEE77A17EE903AC5 -:10E70C00DA076AD52CF0A8F99FED435B9FED447BAB +:10E70C00DA076AD52CF01CFA9FED435B9FED447B36 :10E71C009FED456B0FE0B7EE001BB7EEC00A2CF077 -:10E72C009BF9B7EE007B9FED3E6B37EE400B9FEDF8 +:10E72C000FFAB7EE007B9FED3E6B37EE400B9FED83 :10E73C00405BB0EE467BA0EE057B37EE467BFCEEF5 :10E74C00C77BCDED017A9DF80430A079E279121ADD :10E75C00002A02FB03F332DB3F333B4A82FB0312FA :10E76C00D917002B1A44C1EBA21210444EDB02B095 :10E77C0010BD9FED317BB7EEC00A20EE070B2CF0DD -:10E78C0093F99FED277BA0EE077BFCEEC77BCDEDCD +:10E78C0007FA9FED277BA0EE077BFCEEC77BCDED58 :10E79C00017A9DF80430D8E7A36994ED036AC91A8D :10E7AC00DFED2A6A94ED087A07EE901AF8EE677A94 :10E7BC0067EE867A87EEA60A30EE070A7FE73F3BC4 :10E7CC00214A82FB0312D917002B1A44C1EBA21267 -:10E7DC001044CCDB013002B010BD2CF03DF9B0EE92 +:10E7DC001044CCDB013002B010BD2CF0B1F9B0EE1E :10E7EC00004BB7EE086B9FED125BA0EE446B9FEDF8 :10E7FC000C7BA6EE057B37EE457BFCEEC77BCDEDA7 :10E80C00017A9DF80430A0E77E239EE7013802B020 :10E81C0010BD002399E700BF0000000000C06F404E :10E82C000000000000804F400000000000A0674086 :10E83C000000000000C05F40EA2E4454FB21194048 -:10E84C00E8BA0020C0E1644C090402810024744938 +:10E84C0008BB0020C0E1644C090402810024744917 :10E85C0038B5044600254FF4C8623430294625608B -:10E86C0065862DF0D3FF4FF40862294604F27460DC -:10E87C002DF0CCFF04F6F66304F6167203F8025C76 +:10E86C0065862EF047F84FF40862294604F274606E +:10E87C002EF040F804F6F66304F6167203F8025C08 :10E88C0002339342FAD141F2B31204F633734FF0D0 :10E89C00000C84F8145F224484F81B5F84F8245F16 :10E8AC0003F80ACC0A339342FAD141F2BB1341F27A @@ -7834,20 +7834,20 @@ :10E95C001178A94249D023793A4843F00103237135 :10E96C00157023691E70A268D4E903131B7809780B :10E97C0003F0070343EAC1031421402BA8BF002373 -:10E98C0013802BF0A1FF01212F482BF09DFF0023BA -:10E99C000A2229462D4829F049FC01212A482BF04E -:10E9AC0093FF07212A482BF08FFF012126482BF0DB -:10E9BC008BFF00230A223146244829F037FC012121 -:10E9CC0021482BF081FF0C2122482BF07DFF0121E7 -:10E9DC001D482BF079FFA3681C48198829F0FEFB11 -:10E9EC001A48BDE8704029F005BC01690978B142AC -:10E9FC00B1D1002BAFD170BD172117482BF064FF9C -:10EA0C00012111482BF060FF00230A2229460F48F0 -:10EA1C0029F00CFC01210C482BF056FF00230A2294 -:10EA2C0031460A4829F002FC012107482BF04CFF23 -:10EA3C0003210A482BF048FF0448BDE8704029F038 -:10EA4C00D9BB00BFF8150020EC230020A84B0020F8 -:10EA5C001016002018160020E01500205836002053 +:10E98C0013802CF015F801212F482CF011F80023DE +:10E99C000A2229462D4829F0BFFC01212A482CF0D7 +:10E9AC0007F807212A482CF003F8012126482BF000 +:10E9BC00FFFF00230A223146244829F0ADFC012137 +:10E9CC0021482BF0F5FF0C2122482BF0F1FF0121FF +:10E9DC001D482BF0EDFFA3681C48198829F074FC26 +:10E9EC001A48BDE8704029F07BBC01690978B14236 +:10E9FC00B1D1002BAFD170BD172117482BF0D8FF28 +:10EA0C00012111482BF0D4FF00230A2229460F487C +:10EA1C0029F082FC01210C482BF0CAFF00230A22AA +:10EA2C0031460A4829F078FC012107482BF0C0FF39 +:10EA3C0003210A482BF0BCFF0448BDE8704029F0C4 +:10EA4C004FBC00BFF8150020EC230020684C0020C0 +:10EA5C001016002018160020E01500201837002092 :10EA6C00072957D8036910B51A7804468A424BD047 :10EA7C0019702068D4E904231B881178402B4AD8DC :10EA8C00026803EB830341F23E20D2F8082112689E @@ -7856,13 +7856,13 @@ :10EABC000403137063691B883F2B0ED8206803EB8B :10EACC0083030268D2F80821126802EB430322691F :10EADC00127813445A5C91B21ABB062116482BF0DB -:10EAEC00F3FE012115482BF0EFFE216900230A22C9 -:10EAFC000978134829F09AFB114829F07BFB237FF6 +:10EAEC0067FF012115482BF063FF216900230A22DF +:10EAFC000978134829F010FC114829F0F1FB237F09 :10EB0C0043F00403237710BD027F1007B0D49207A3 :10EB1C00F9D5ADE77047A269137843F0040313707D :10EB2C00DBE7013A0139012302F00702C1F3C70107 :10EB3C00FFF706FFD1E700BFA0170020EC23002051 -:10EB4C00A84B00200F297BD8C26838B50D46138816 +:10EB4C00684C00200F297BD8C26838B50D46138855 :10EB5C00044689B2AB42037F60D043F0020341F21A :10EB6C00AF102377236811801A68A168D2F80821A6 :10EB7C000B78126803EBC30302EB43032B441B5CBF @@ -7871,14 +7871,14 @@ :10EBAC00A269002B3DD09D423BD2137843F0020367 :10EBBC001370A269137843F00403137023681B6865 :10EBCC00D3F808315B681B68DB689B0633D40621DD -:10EBDC001C482BF079FE01211B482BF075FE0023FD -:10EBEC000A222946194829F021FB012116482BF04D -:10EBFC006BFE0D2116482BF067FE012112482BF0FD -:10EC0C0063FE63691148198829F0E8FA0F48BDE8DA -:10EC1C00384029F0EFBA60690380B9E7D8079CD473 +:10EBDC001C482BF0EDFE01211B482BF0E9FE002315 +:10EBEC000A222946194829F097FB012116482BF0D7 +:10EBFC00DFFE0D2116482BF0DBFE012112482BF015 +:10EC0C00D7FE63691148198829F05EFB0F48BDE8EF +:10EC1C00384029F065BB60690380B9E7D8079CD4FC :10EC2C0038BD137823F002031370A269137823F014 :10EC3C0004031370C2E700212046FFF711FFC6E75B -:10EC4C00704700BFA8170020EC230020A84B002021 +:10EC4C00704700BFA8170020EC230020684C002060 :10EC5C00B0170020F0B5072A83B004460D469DF886 :10EC6C00207094BF164690F8D160632965D8DFE810 :10EC7C0011F0AA00A40094008600C400B700DA02C8 @@ -7895,121 +7895,121 @@ :10ED2C0064006400640064006400640064006400B7 :10ED3C006400640064001B03730103B97FB103B06A :10ED4C00F0BD002B40F0A283019301227F231146DA -:10ED5C0000935023006C22F0BDFE002FEFD1236DE9 +:10ED5C0000935023006C22F01FFF002FEFD1236D86 :10ED6C00002B40F08983B34B1922A4F854501B6834 :10ED7C00A4F85660A4F84C20236503B0F0BD06F14E :10ED8C001802D1B273B97F2201930B460092012273 -:10ED9C00206C114622F09EFED0E706F11002D1B293 +:10ED9C00206C114622F000FFD0E706F11002D1B230 :10EDAC00002BF0D0002501220B46206C1146CDE93A -:10EDBC00005522F0E3FF03B0F0BD06F10802D1B21A +:10EDBC00005523F047F803B0F0BD06F10802D1B2BC :10EDCC00002BEFD1DFE7002B40F0E483019301220D -:10EDDC007F23114600933346006C22F07BFEADE797 +:10EDDC007F23114600933346006C22F0DDFEADE735 :10EDEC00002B40F0DB83019301227F23114600931B -:10EDFC002823006C22F06EFEA0E706F12002D1B2AF +:10EDFC002823006C22F0D0FEA0E706F12002D1B24D :10EE0C00002BCFD1BFE7002B40F04C8301930122A4 -:10EE1C007F23114600934F23006C22F05BFE8DE79D +:10EE1C007F23114600934F23006C22F0BDFE8DE73B :10EE2C00002B40F01C84019301227F231146009398 -:10EE3C005923006C22F04EFE80E7002B40F06A83D1 +:10EE3C005923006C22F0B0FE80E7002B40F06A836F :10EE4C00019301227F23114600934223006C22F090 -:10EE5C0041FE73E7002B40F02A84019301227F23AB -:10EE6C00114600936323006C22F034FE66E7002BFE +:10EE5C00A3FE73E7002B40F02A84019301227F2349 +:10EE6C00114600936323006C22F096FE66E7002B9C :10EE7C0040F03083019301227F231146009332230B -:10EE8C00006C22F027FE59E7002B40F08B83019396 -:10EE9C0001227F23114600934A23006C22F01AFEB4 +:10EE8C00006C22F089FE59E7002B40F08B83019334 +:10EE9C0001227F23114600934A23006C22F07CFE52 :10EEAC004CE7002B40F05683019301227F2311463F -:10EEBC0000933A23006C22F00DFE3FE7002B40F04C +:10EEBC0000933A23006C22F06FFE3FE7002B40F0EA :10EECC001E84019301227F23114600935B23006C67 -:10EEDC0022F000FE32E7002B40F0EC82019301227D -:10EEEC007F23114600932A23006C22F0F3FD25E7C3 +:10EEDC0022F062FE32E7002B40F0EC82019301221B +:10EEEC007F23114600932A23006C22F055FE25E760 :10EEFC00002B40F0C883019301227F23114600931D -:10EF0C005723006C22F0E6FD18E7002B40F012832B +:10EF0C005723006C22F048FE18E7002B40F01283C8 :10EF1C00019301227F23114600933E23006C22F0C3 -:10EF2C00D9FD0BE7002B40F0D683019301227F2300 -:10EF3C00114600935F23006C22F0CCFDFEE6002B03 +:10EF2C003BFE0BE7002B40F0D683019301227F239D +:10EF3C00114600935F23006C22F02EFEFEE6002BA0 :10EF4C0040F0D882019301227F23114600932F2396 -:10EF5C00006C22F0BFFDF1E6D0F8D45015F48035EA +:10EF5C00006C22F021FEF1E6D0F8D45015F4803587 :10EF6C0000F02A8301227F2100255C23CDE90015C6 -:10EF7C001146006C22F0AEFD01225C2315E7002B3C +:10EF7C001146006C22F010FE01225C2315E7002BD9 :10EF8C0040F0F882019301227F231146009336232F -:10EF9C00006C22F09FFDD1E6002B40F0C48301935E -:10EFAC0001227F23114600934E23006C22F092FD28 +:10EF9C00006C22F001FED1E6002B40F0C4830193FB +:10EFAC0001227F23114600934E23006C22F0F4FDC6 :10EFBC00C4E6002B40F07A82019301227F23114694 -:10EFCC0000934623006C22F085FDB7E6002B40F041 +:10EFCC0000934623006C22F0E7FDB7E6002B40F0DF :10EFDC005083019301227F23114600935823006C28 -:10EFEC0022F078FDAAE6002B40F09C8201930122CE -:10EFFC007F23114600934023006C22F06BFD9DE6AD +:10EFEC0022F0DAFDAAE6002B40F09C82019301226C +:10EFFC007F23114600934023006C22F0CDFD9DE64B :10F00C00002B40F05E83019301227F231146009375 -:10F01C006123006C22F05EFD90E6002B40F06282D2 +:10F01C006123006C22F0C0FD90E6002B40F0628270 :10F02C00019301227F23114600933123006C22F0BF -:10F03C0051FD83E6E8BA0020002B40F02B820193AF -:10F04C0001227F23114600936523006C22F042FDC0 +:10F03C00B3FD83E608BB0020002B40F02B8201932C +:10F04C0001227F23114600936523006C22F0A4FD5E :10F05C0074E6002B40F08682019301227F23114637 -:10F06C0000933823006C22F035FD67E6002B40F04E +:10F06C0000933823006C22F097FD67E6002B40F0EC :10F07C005083019301227F23114600935223006C8D -:10F08C0022F028FD5AE6002B40F01C82019301224D -:10F09C007F23114600934823006C22F01BFD4DE6A4 +:10F08C0022F08AFD5AE6002B40F01C8201930122EB +:10F09C007F23114600934823006C22F07DFD4DE642 :10F0AC00002B40F0FA82019301227F23114600933A -:10F0BC005523006C22F00EFD40E6002B40F04282FE +:10F0BC005523006C22F070FD40E6002B40F042829C :10F0CC00019301227F23114600933C23006C22F014 -:10F0DC0001FD33E6002B40F00883019301227F23CE -:10F0EC00114600935D23006C22F0F4FC26E6002B05 +:10F0DC0063FD33E6002B40F00883019301227F236C +:10F0EC00114600935D23006C22F056FD26E6002BA2 :10F0FC0040F00882019301227F23114600932C23B8 -:10F10C00006C22F0E7FC19E6002B40F09E82019384 -:10F11C0001227F23114600937023006C22F0DAFC4D +:10F10C00006C22F049FD19E6002B40F09E82019321 +:10F11C0001227F23114600937023006C22F03CFDEA :10F12C000CE6002B40F02E82019301227F23114626 -:10F13C0000933423006C22F0CDFCFFE5002B40F053 +:10F13C0000933423006C22F02FFDFFE5002B40F0F0 :10F14C00FC82019301227F23114600934C23006C17 -:10F15C0022F0C0FCF2E5002B40F0B08101930122BB -:10F16C007F23114600934423006C22F0B3FCE5E5A9 +:10F15C0022F022FDF2E5002B40F0B0810193012258 +:10F16C007F23114600934423006C22F015FDE5E546 :10F17C00002B40F07982019301227F2311460093EA -:10F18C005623006C22F0A6FCD8E5002B40F0C6817B +:10F18C005623006C22F008FDD8E5002B40F0C68118 :10F19C00019301227F23114600934123006C22F03E -:10F1AC0099FCCBE5002B40F08782019301227F2351 -:10F1BC00114600936223006C22F08CFCBEE5002B00 +:10F1AC00FBFCCBE5002B40F08782019301227F23EF +:10F1BC00114600936223006C22F0EEFCBEE5002B9E :10F1CC0040F08C81019301227F2311460093302360 -:10F1DC00006C22F07FFCB1E5002B40F0E88101933C -:10F1EC0001227F23114600934923006C22F072FC0C +:10F1DC00006C22F0E1FCB1E5002B40F0E8810193DA +:10F1EC0001227F23114600934923006C22F0D4FCAA :10F1FC00A4E5002B40F0B281019301227F2311463C -:10F20C0000933923006C22F065FC97E5002B40F04D +:10F20C0000933923006C22F0C7FC97E5002B40F0EB :10F21C007B82019301227F23114600935A23006CB9 -:10F22C0022F058FC8AE5002B40F05081019301221A -:10F23C007F23114600932923006C22F04BFC7DE5C3 +:10F22C0022F0BAFC8AE5002B40F0508101930122B8 +:10F23C007F23114600932923006C22F0ADFC7DE561 :10F24C00002B40F02582019301227F23114600936D -:10F25C005423006C22F03EFC70E5002B40F06E81D4 +:10F25C005423006C22F0A0FC70E5002B40F06E8172 :10F26C00019301227F23114600933D23006C22F071 -:10F27C0031FC63E5002B40F03382019301227F23A4 -:10F28C00114600935E23006C22F024FC56E5002B03 +:10F27C0093FC63E5002B40F03382019301227F2342 +:10F28C00114600935E23006C22F086FC56E5002BA1 :10F29C0040F03481019301227F23114600932D23EA -:10F2AC00006C22F017FC49E5D0F8D45015F48035E9 +:10F2AC00006C22F079FC49E5D0F8D45015F4803587 :10F2BC0000F0AF8101227F2100255B23CDE90015F1 -:10F2CC001146006C22F006FC01225B236DE5002B3D +:10F2CC001146006C22F068FC01225B236DE5002BDB :10F2DC0040F05481019301227F2311460093352382 -:10F2EC00006C22F0F7FB29E5002B40F02182019302 -:10F2FC0001227F23114600934D23006C22F0EAFB80 +:10F2EC00006C22F059FC29E5002B40F0218201939F +:10F2FC0001227F23114600934D23006C22F04CFC1D :10F30C001CE5002B40F0F280019301227F23114673 -:10F31C0000934523006C22F0DDFB0FE5002B40F041 +:10F31C0000934523006C22F03FFC0FE5002B40F0DE :10F32C00AD81019301227F23114600936423006C6D -:10F33C0022F0D0FB02E5002B40F0F8800193012273 -:10F34C007F23114600933F23006C22F0C3FBF5E4AE +:10F33C0022F032FC02E5002B40F0F8800193012210 +:10F34C007F23114600933F23006C22F025FCF5E44B :10F35C00002B40F0BB81019301227F2311460093C7 -:10F36C006023006C22F0B6FBE8E4002B40F0CE806A +:10F36C006023006C22F018FCE8E4002B40F0CE8007 :10F37C00019301227F23114600932E23006C22F06F -:10F38C00A9FBDBE406F16802D1B2002B7FF40AADD5 +:10F38C000BFCDBE406F16802D1B2002B7FF40AAD72 :10F39C00F9E4002B40F05E81019301227F2311469A -:10F3AC0000933723006C22F095FBC7E4002B40F050 +:10F3AC0000933723006C22F0F7FBC7E4002B40F0EE :10F3BC00DD80019301227F23114600933323006CDF -:10F3CC0022F088FBBAE4002B40F0A88101930122C3 -:10F3DC007F23114600935123006C22F07BFBADE49C +:10F3CC0022F0EAFBBAE4002B40F0A8810193012261 +:10F3DC007F23114600935123006C22F0DDFBADE43A :10F3EC00002B40F0B380019301227F231146009340 -:10F3FC004723006C22F06EFBA0E4002B40F05281FE +:10F3FC004723006C22F0D0FBA0E4002B40F052819C :10F40C00019301227F23114600935C23006C22F0B0 -:10F41C0061FB93E4002B40F0B980019301227F2320 -:10F42C00114600933B23006C22F054FB86E4002B26 +:10F41C00C3FB93E4002B40F0B980019301227F23BE +:10F42C00114600933B23006C22F0B6FB86E4002BC4 :10F43C0040F06081019301227F23114600934B23FE -:10F44C00006C22F047FB79E4002B40F07B810193A8 -:10F45C0001227F23114600932B23006C22F03AFBF0 +:10F44C00006C22F0A9FB79E4002B40F07B81019346 +:10F45C0001227F23114600932B23006C22F09CFB8E :10F46C006CE4DBB9019301227F2311460093432303 -:10F47C00006C22F02FFB61E40097012394F85620D6 +:10F47C00006C22F091FB61E40097012394F8562074 :10F48C00204694F85410FFF7E5FB6CE400250122AC :10F49C0050238AE400250122652386E400250122FD :10F4AC00432382E4002501224F237EE40025012220 @@ -8030,15 +8030,15 @@ :10F59C003B230AE400250122334606E40025012220 :10F5AC00282302E4002501224A23FFF7FEBB002595 :10F5BC0001224923FFF7F9BB01227F265423114670 -:10F5CC00CDE90065006C22F085FA01225423114626 -:10F5DC00CDE90055206C22F0D1FB01225C231146B1 -:10F5EC00CDE90065206C22F075FA01225C231146EE -:10F5FC00CDE90055206C22F0C1FB012254231146A9 -:10F60C00CDE90065206C22F065FA01225423FFF746 +:10F5CC00CDE90065006C22F0E7FA012254231146C4 +:10F5DC00CDE90055206C22F035FC01225C2311464C +:10F5EC00CDE90065206C22F0D7FA01225C2311468C +:10F5FC00CDE90055206C22F025FC01225423114644 +:10F60C00CDE90065206C22F0C7FA01225423FFF7E4 :10F61C00CCBB01227F2654231146CDE90065006C3A -:10F62C0022F058FA012254231146CDE90055206CE2 -:10F63C0022F0A4FB01225B231146CDE90065206C6E -:10F64C0022F048FA01225B23D1E700250122702326 +:10F62C0022F0BAFA012254231146CDE90055206C80 +:10F63C0022F008FC01225B231146CDE90065206C09 +:10F64C0022F0AAFA01225B23D1E7002501227023C4 :10F65C00FFF7ABBB002501223723FFF7A6BB002524 :10F66C0001225923FFF7A1BB002501225623FFF7E6 :10F67C009CBB002501225823FFF797BB00250122D4 @@ -8060,7 +8060,7 @@ :10F77C006AD0417FD9B1B4FA84F25209BCB19DF878 :10F78C001530F02BBDF8173000D19BBB0DF11902D1 :10F79C009DF819400125A4F1F004B4FA84F464092D -:10F7AC00009400240068CDE9014521F04DFE47B0DE +:10F7AC00009400240068CDE9014521F0B3FE47B078 :10F7BC00F0BD01F07F018DF819508DF81D10F0216E :10F7CC008DF8151047F20141ADF81A1004F07F01C5 :10F7DC008DF81C1005218DF81710002EC4D19DF842 @@ -8078,566 +8078,566 @@ :10F89C0017206EE79DF81730FD2B3FF66AAF591C09 :10F8AC008DF8171005A90B4402F07F01C2F3C612A4 :10F8BC005971BDF81730FD2B95D95AE7D0F8543152 -:10F8CC0030B5044683B033B16C4AB0F850111268AD -:10F8DC00D31A8B4222D2636B2BB1684A218E1268E9 -:10F8EC00D31A8B4243D2E36A2BB1644A218D12683E -:10F8FC00D31A8B4260D2236933B1604AA189126852 -:10F90C00D31A8B4280F0AB80A3692BB15B4DA18ADB +:10F8CC0030B5044683B033B1694AB0F850111268B0 +:10F8DC00D31A8B4222D2636B2BB1654A218E1268EC +:10F8EC00D31A8B4243D2E36A2BB1614A218D126841 +:10F8FC00D31A8B4260D2236933B15D4AA189126855 +:10F90C00D31A8B4280F0A680A3692BB1584DA18AE3 :10F91C002A68D31A8B421DD203B030BD0020236855 :10F92C00A4F8440184F8460184F84C0184F84F0192 -:10F93C00D3F80431C4F85401D3F8DC30C4F84801CE -:10F94C0003B1984713214E482AF0BEFF4D4828F0CA -:10F95C0051FCC0E7E27F0023D207A36100F186804F +:10F93C00D3F80431C4F85401D3F8E030C4F84801CA +:10F94C0003B1984713214B482BF032F84A4828F062 +:10F95C00C7FCC0E7E27F0023D207A36100F18180DE :10F96C004FF47A722B68A282A36103B030BD0023DE :10F97C0001200D214FF6FF72636300902046FFF7C4 -:10F98C00E7FE6368B3F86030D905ACD50B213E486F -:10F99C002AF09AFF3B4828F02DFC0B213B482AF01B -:10F9AC0093FF384828F026FC0B2137482AF08CFFAF -:10F9BC00344828F01FFC96E7022300254FF6FF720F +:10F98C00E7FE6368B3F86030D905ACD50B213B4872 +:10F99C002BF00EF8384828F0A3FC0B2138482BF03C +:10F9AC0007F8354828F09CFC0B2134482BF000F864 +:10F9BC00314828F095FC96E7022300254FF6FF729C :10F9CC004FF40071E37704F15D0004F1E503E562A7 :10F9DC00A583218484F8235084F8245065632287FE :10F9EC0084F83A2084F8415100F8115B9842FBD11D -:10F9FC005B22002184F83C502CF008FFFF231521DA -:10FA0C00C4F8485184F8403184F83B30A4F8445190 -:10FA1C0084F8465184F84C51C4F8545184F84F5131 -:10FA2C00A56184F842511A482AF04EFF154828F077 -:10FA3C00E1FB2568D5F838090368DB689847D5F8E9 -:10FA4C00480A0368DB6898472368D3F80431D3F875 -:10FA5C00C830002B3FF44FAF002098474BE7238969 -:10FA6C00002223F00403226123814DE77F220F2122 -:10FA7C0020460093FFF76CFE72E700BFE8BA002047 -:10FA8C00AC360020A84B0020C0360020CC3600201D -:10FA9C00D8360020436930B504462DED028B83B077 -:10FAAC0033B1614A018A1268D31A994240F2A98093 -:10FABC00637B1D0753D4D80642D4D9073CD59A078B -:10FACC003AD55B0738D5217AB1B3637AA3B307EE85 -:10FADC00901ADFED566A237BB3EE0F7AF8EE675A75 -:10FAEC00E27EB7EE006AC6EEA57A05EE903A0133D7 -:10FAFC00DBB2F8EE655A994238BF0123237367EEE7 -:10FB0C00A57A67EE877A87EEA67A77EE067AFCEE10 -:10FB1C00E77ACDED017A9DF8040082420CD023687F -:10FB2C00E076D3F80431D3F8C4302BB103B0BDEC7C -:10FB3C00028BBDE83040184703B0BDEC028B30BDE2 -:10FB4C0003F0EF0322686373D2F80421D2F8C420C7 -:10FB5C00002AB2D0217A00209047637BADE703F0F6 -:10FB6C00F70322686373D2F80421D2F8C420002A68 -:10FB7C00A1D0237AB3EE0F7ADFED2C6AB7EE006AD0 -:10FB8C0007EE903A18212A48F8EE677A86EEA78A93 -:10FB9C0028EE077AC7EE267A77EE867AFCEEE77ABD -:10FBAC00CDED017A9DF804502AF08EFE01212148FA -:10FBBC002AF08AFE00230A22217A1F4828F036FBFD -:10FBCC0001211C482AF080FEB7EEC80A02211A480F -:10FBDC0028F042FB012117482AF076FE00230A2266 -:10FBEC002946154828F022FB134828F003FB23680C -:10FBFC00217A2846D3F80431D3F8C4309847637B74 -:10FC0C0059E7002521210D4865612AF05DFE0A485F -:10FC1C0028F0F0FA637B257323F06603658343F0C9 -:10FC2C001003637345E700BFE8BA00200000C84228 -:10FC3C0048180020EC230020A84B0020241800209A -:10FC4C002DE9F04F9A46D1F80831DFF88C8183B05A -:10FC5C001B680446C6460E4603F1040BC0F80CA004 -:10FC6C00016000F1100CC0F808B0002542604FF4A0 -:10FC7C007A7701924FF0FF39BEE80F00ACE80F0025 -:10FC8C00BEE80F00ACE80F00BEE80F00ACE80F00B8 -:10FC9C009EE80F008CE80F0008F14001722204F17D -:10FCAC0068002665A4F85C70C4E915BAC4E9185953 -:10FCBC0028F0EAFE98F8B4302946482284F8DA3065 -:10FCCC0004F1EC00A4F8DB50A4F8E050C4F8E450C4 -:10FCDC0084F8E850A4F8EA502CF098FDD6F80831D6 -:10FCEC0029462022C4F838314FF4604304F27110D5 -:10FCFC00C4F83461A4F8EE30A4F8F630A4F8FE3061 -:10FD0C00A4F80631A4F80E31A4F81631A4F81E316B -:10FD1C00A4F82631A4F82E3198F8B830A4F83C5148 -:10FD2C0084F870314FF4803384F83E51C4F850316C -:10FD3C004FF40073A4F84071A4F85431C4F8445142 -:10FD4C00A4F84871C4F84C5184F85651A4F85C716D -:10FD5C00C4F86051A4F86471C4E95A592CF056FDEA -:10FD6C00FF2308F1DC014FF43672A4F8743204F569 -:10FD7C00237084F87652A4F8785284F87A52A4F856 -:10FD8C008472C4F88852C4E99F5528F07DFE019A0C -:10FD9C0020460323C4F87425C4F86465C4F8706560 -:10FDAC00C4F8685584F8785584F8795584F87A55F0 -:10FDBC0084F87B5584F87C5584F87D55A4F88075BF -:10FDCC00C4F88455C4F8885584F88C9584F86C353F -:10FDDC0003B0BDE8F08F00BFC00300202DE9F04355 -:10FDEC00054689B00F213E4805F580592AF06CFD77 -:10FDFC003C4841F2665828F0FDF9D9F86C38A84413 -:10FE0C0000261B7803EB431203EB820202F5AB5482 -:10FE1C0090442C4402E0D9F86C381B7814F8017F1C -:10FE2C000422012128460097CDE9016609F0E6FE7F -:10FE3C004445F0D1D9F8FC371A68D0041FD405F525 -:10FE4C00405595F86C3AD5F8702AD90711D4926AB6 -:10FE5C0062B14FF6FF72002123F00203A5F8602A6D -:10FE6C0085F8622AC5F8681A85F86C3A09B0BDE8BD -:10FE7C00F083D26A002AECD109B0BDE8F083DC68CB -:10FE8C00C4F38354012CDAD1196905F5CE50002343 -:10FE9C000096C1F30322C9B201320791CDE9016486 -:10FEAC00CDE9040221F05AFC059A079904980692B0 -:10FEBC000591CDE90164D9F86C381B78DB09009306 -:10FECC00202321F04BFCD9F86C3804981B78009651 -:10FEDC0003F07F03DDE9051221F0C6FAAFE700BF9E -:10FEEC000C250020A84B00202DE9F04700F54056CA -:10FEFC00054688B0D6F8EC01D6E97E32D0F8080178 -:10FF0C001278197802F00703006843EAC103402B0A -:10FF1C00A8BF002303EB830300EB430393F82E3FAE -:10FF2C00C3B905F5805742F69C400123284420F0C4 -:10FF3C00FBFED7F8FC371A68D2043FD4D7F8C83880 -:10FF4C00002B6BD0D6E97E210978107808B0BDE87B -:10FF5C00F0471847D6F8F42103F1FF3905F62F7353 -:10FF6C0005F58057B2F800A04FF0000897F8642907 -:10FF7C000AEB8A046400234404F62E7453FA89F9BC -:10FF8C002C4442F0100053460422012187F86409E6 -:10FF9C00284614F801CFCDE90188CDF800C009F04E -:10FFAC002DFE97F864294C4502F0EF0287F864297E -:10FFBC00E7D1D6E97E2311781A78B4E7DA68C2F370 -:10FFCC008352022ABAD11B6900244FF0010805F5AF -:10FFDC00CE50D9B2C3F3032305905A1CD6F8F43192 -:10FFEC001D882346CDF80880CDE90044CDE90612E2 -:04FFFC0021F0B4FB41 +:10F9FC005B22002184F83C502CF07CFFFF23152166 +:10FA0C00204884F8403184F83B30C4F84851A4F8BD +:10FA1C00445184F8465184F84C51C4F8545184F83C +:10FA2C004F51A56184F842512AF0C2FF124828F0C8 +:10FA3C0057FC2368D3F838090368DB6898472368B8 +:10FA4C00D3F80431D3F8CC30002B3FF454AF002062 +:10FA5C00984750E72389002223F004032261238175 +:10FA6C0052E77F220F2120460093FFF771FE77E7C4 +:10FA7C0008BB00206C370020684C00208037002029 +:10FA8C008C37002098370020436930B504462DEDA3 +:10FA9C00028B83B033B1614A018A1268D31A99423E +:10FAAC0040F2A980637B1D0753D4D80642D4D907F2 +:10FABC003CD59A073AD55B0738D5217AB1B3637A2E +:10FACC00A3B307EE901ADFED566A237BB3EE0F7AE1 +:10FADC00F8EE675AE27EB7EE006AC6EEA57A05EE3E +:10FAEC00903A0133DBB2F8EE655A994238BF0123E4 +:10FAFC00237367EEA57A67EE877A87EEA67A77EEA0 +:10FB0C00067AFCEEE77ACDED017A9DF8040082428C +:10FB1C000CD02368E076D3F80431D3F8C8302BB17D +:10FB2C0003B0BDEC028BBDE83040184703B0BDEC10 +:10FB3C00028B30BD03F0EF0322686373D2F804210B +:10FB4C00D2F8C820002AB2D0217A00209047637BDB +:10FB5C00ADE703F0F70322686373D2F80421D2F8FF +:10FB6C00C820002AA1D0237AB3EE0F7ADFED2C6ADD +:10FB7C00B7EE006A07EE903A18212A48F8EE677A39 +:10FB8C0086EEA78A28EE077AC7EE267A77EE867A73 +:10FB9C00FCEEE77ACDED017A9DF804502AF008FFCF +:10FBAC00012121482AF004FF00230A22217A1F4850 +:10FBBC0028F0B2FB01211C482AF0FAFEB7EEC80A65 +:10FBCC0002211A4828F0BCFB012117482AF0F0FE4C +:10FBDC0000230A222946154828F09EFB134828F0DA +:10FBEC007FFB2368217A2846D3F80431D3F8C83038 +:10FBFC009847637B59E7002521210D4865612AF060 +:10FC0C00D7FE0A4828F06CFB637B257323F0660350 +:10FC1C00658343F01003637345E700BF08BB002006 +:10FC2C000000C84248180020EC230020684C00203B +:10FC3C00241800202DE9F04F9A46D1F80831DFF84E +:10FC4C008C8183B01B680446C6460E4603F1040B38 +:10FC5C00C0F80CA0016000F1100CC0F808B0002531 +:10FC6C0042604FF47A7701924FF0FF39BEE80F00F3 +:10FC7C00ACE80F00BEE80F00ACE80F00BEE80F00C8 +:10FC8C00ACE80F009EE80F008CE80F0008F1400173 +:10FC9C00722204F168002665A4F85C70C4E915BAF8 +:10FCAC00C4E9185928F064FF98F8B4302946482262 +:10FCBC0084F8DA3004F1EC00A4F8DB50A4F8E0503E +:10FCCC00C4F8E45084F8E850A4F8EA502CF012FE82 +:10FCDC00D6F8083129462022C4F838314FF4604355 +:10FCEC0004F27110C4F83461A4F8EE30A4F8F630C4 +:10FCFC00A4F8FE30A4F80631A4F80E31A4F816319D +:10FD0C00A4F81E31A4F82631A4F82E3198F8B83096 +:10FD1C00A4F83C5184F870314FF4803384F83E5190 +:10FD2C00C4F850314FF40073A4F84071A4F8543166 +:10FD3C00C4F84451A4F84871C4F84C5184F8565195 +:10FD4C00A4F85C71C4F86051A4F86471C4E95A5900 +:10FD5C002CF0D0FDFF2308F1DC014FF43672A4F82F +:10FD6C00743204F5237084F87652A4F8785284F82F +:10FD7C007A52A4F88472C4F88852C4E99F5528F0CA +:10FD8C00F7FE019A20460323C4F87425C4F8646571 +:10FD9C00C4F87065C4F8685584F8785584F87955BA +:10FDAC0084F87A5584F87B5584F87C5584F87D5515 +:10FDBC00A4F88075C4F88455C4F8885584F88C95DB +:10FDCC0084F86C3503B0BDE8F08F00BFC003002091 +:10FDDC002DE9F043054689B00F213E4805F58059C1 +:10FDEC002AF0E6FD3C4841F2665828F079FAD9F839 +:10FDFC006C38A84400261B7803EB431203EB8202F9 +:10FE0C0002F5AB5490442C4402E0D9F86C381B78C2 +:10FE1C0014F8017F0422012128460097CDE90166E0 +:10FE2C0009F050FF4445F0D1D9F8FC371A68D004DA +:10FE3C001FD405F5405595F88C3AD5F8902AD9077A +:10FE4C0011D4926A62B14FF6FF72002123F00203C3 +:10FE5C00A5F8802A85F8822AC5F8881A85F88C3A84 +:10FE6C0009B0BDE8F083D26A002AECD109B0BDE834 +:10FE7C00F083DC68C4F38354012CDAD1196905F5DD +:10FE8C00CE5000230096C1F30322C9B20132079170 +:10FE9C00CDE90164CDE9040221F0C2FC059A079971 +:10FEAC00049806920591CDE90164D9F86C381B7859 +:10FEBC00DB090093202321F0B3FCD9F86C380498AB +:10FECC001B78009603F07F03DDE9051221F032FB6D +:10FEDC00AFE700BF0C250020684C00202DE9F0474F +:10FEEC0000F54056054688B0D6F80C02D6E98632A5 +:10FEFC00D0F808011278197802F00703006843EA79 +:10FF0C00C103402BA8BF002303EB830300EB430387 +:10FF1C0093F82E3FC3B905F5805742F6BC40012338 +:10FF2C00284420F071FFD7F8FC371A68D2043FD46C +:10FF3C00D7F8C838002B6BD0D6E986210978107811 +:10FF4C0008B0BDE8F0471847D6F8142203F1FF3982 +:10FF5C0005F62F7305F58057B2F800A04FF0000896 +:10FF6C0097F868290AEB8A046400234404F62E747B +:10FF7C0053FA89F92C4442F0100053460422012113 +:10FF8C0087F86809284614F801CFCDE90188CDF827 +:10FF9C0000C009F097FE97F868294C4502F0EF0273 +:10FFAC0087F86829E7D1D6E9862311781A78B4E75F +:10FFBC00DA68C2F38352022ABAD11B6900244FF0CB +:10FFCC00010805F5CE50D9B2C3F3032305905A1C92 +:10FFDC00D6F814321D882346CDF80880CDE90044AC +:10FFEC00CDE9061221F01CFCC5F3C613059800934D +:04FFFC002023DDE9F8 :02000004600298 -:10000000C5F3C613059800932023DDE90612CDE958 -:10001000014821F0A9FB05F07F0305980094DDE974 -:10002000061221F027FA8FE708B0BDE8F08700BF7D -:100030002DE9F04F06460024814687B046F8044B70 -:100040003046FEF70BFC41F6810541F2E85241F2E1 -:10005000D85041F2C2514D444A4448444944A2F167 -:10006000740302F8884C03F80D4C0D338B42FAD11F -:10007000A2F12E0303F8054C05338342FAD1A2F115 -:10008000120303F8034C03339342FAD103F18502C0 -:1000900085308531AA42E2D109F5805509F5C05372 -:1000A00041F2FC7A41F64A0CC5F8FC6705F5016E91 -:1000B000EE4ECA44049341F65607C5F8009841F63F -:1000C0004608C5F80C48CC44C5F804A84F444FF086 -:1000D000000B0FCEAEE80F0096E80F008EE80F0081 -:1000E00041F63A0385F83048A5F8324885F8344897 -:1000F000A5F8364885F8384885F83C4829F8034083 -:1001000041F63E0385F8404829F8034041F6420392 -:1001100085F8444829F8034085F8484829F80840FC -:100120008CF802B02CF804BBBC45F9D141F60903A8 -:1001300041F6560285F858B84FF080414B4429F8F3 -:1001400002B0CB480022C5F86C384FF4F003C5F874 -:100150005CB805F5196EC5F8083841F67003A5F8C6 -:1001600060B841F64F34C5F864B84B44C5F868B878 -:1001700042F26F3CC5F87CB84C44C5F874B8CC4426 -:10018000C5F878B809F5CE57C5F870B8C5F880B885 -:10019000C5F884B8C5F888B8C5F88CB8C5F890B863 -:1001A000C5F894B8C5F898B8C5F89CB8C5F8A0B813 -:1001B000C5F8A4B8C5F8A8B8C5F8ACB8C5F8B0B8C3 -:1001C000C5F8B4B8C5F8B8B8C5F8BCB8C5F8C0B873 -:1001D000C5F8C4B8C5F8E8B8C5F8ECB8C5F8F0B8C3 -:1001E000C5F8C8B8C5F8D0B8C5F8D4B8C5F8D8B8F7 -:1001F000C5F8CCB8C5F8E4B8C5F8DCB8C5F8E0B8BF -:10020000C5F8F4B8C5F8F8B8C5F8FCB8C5F800B931 -:10021000C5F804B9C5F808B9C5F80CB9C5F810B9DE -:10022000C5F814B9C5F818B9C5F81CB9C5F820B98E -:10023000C5F824B9C5F828B9C5F82CB9C5F830B93E -:10024000C5F834B9C5F838B9C5F83CB9C5F840B9EE -:10025000C5F844B9C5F848B9C5F84CB9C5F850B99E -:10026000C5F854B90068834E05904FF0A060039321 -:1002700005F66813C5F868097F48DFF81482C5F8E9 -:100280006C090120C5F858B985F870097820C5F8BF -:100290005CB9C5F860B985F864B9DE600026A5F8D8 -:1002A00078095961C5F880B91A625A62B8E80F0036 -:1002B000AEE80F00D8F800300598CEF80030C5F849 -:1002C000840985F8C0B985F8C1B985F8C2B985F83F -:1002D000C3B985F8C4B9039B85F8CCBAC5F8C43A4C -:1002E000049BC5F8C83A04F8826C04F8816C823427 -:1002F0006445F8D109F50054039B42F220504FF4B5 -:100300007A78C4F8F4325D4B4844A4F8EE62C4F83D -:100310000034C4F810354FF6FF73A4F8F062C4F847 -:100320000434C4F8143500F59F63C4F8FC62C4F8C3 -:10033000503500F5A76384F80063C4F8543500F520 -:10034000AF63C4F80C64C4F8583500F5B76384F89B -:100350001064C4F860354A4BC4F82465C4F8F83218 -:10036000484BC4F82865C4F80834474BC4F8400526 -:10037000C4F820354023A4F866355023A4F8683526 -:1003800026F05EFA039A049942F69C40C4F8202CA9 -:1003900042F67042C4F8241C53463C494A4484F84F -:1003A000406C4844C4F8201543F29C1A039984F821 -:1003B000416CCA4484F8426C84F8436C84F8446C01 -:1003C00084F8456C84F8466C84F8476C84F8486C73 -:1003D00084F8496C84F84A6C84F84B6C84F84C6C53 -:1003E00084F84D6C84F84E6C84F84F6C84F8506C33 -:1003F00084F8516C84F8526C84F8536C84F8546C13 -:1004000085F8CC6AC4F8606CC4F8646CA4F8686CB5 -:10041000C4F86C1C4946A4F8706CC4F8746C84F879 -:10042000786C09F5405400923A4617F09DFFD5F8D4 -:10043000C83A84F884610A33A4F88C61C4F89061E6 -:10044000C4F8883184F89461C4F8807128F058FAAF -:10045000A4F89C6184F89E6184F8A861C4F8B8612E -:1004600084F8BC61C4F8C06114E000BF74070020C8 -:10047000E8BA00200000F0411900007F0000FFFFF3 -:1004800038B0002098B00020CC410020DC40002093 -:1004900094070020C4F89801A4F8B481C4E96B66FD -:1004A000CAF80460CAF80860C4F8C861C4F8D0612A -:1004B00084F89461A4F8C481A4F8CC8128F020FACF -:1004C00043F2EC1384F8BC6143F2202284F8A86163 -:1004D0004B44C4F8980109EB0200CAF8046009F51E -:1004E0004652CAF80860394684F89E6184F8F06183 -:1004F000D5F8C8AAC4F800320AF10C03C4F8B861F0 -:10050000C4F8DC61C4F8F4310AF10E03C4F8E46104 -:10051000C4F8F8310AF10F0384F81C62C4F8FC3106 -:100520000AF13003C4F8D471C4F808320AF1320376 -:10053000A4F8D881C4F80C320AF13403A4F8E0819D -:10054000C4F810320AF13603C4F8EC71C4F814325E -:100550000AF13803C4F80472C4F81832039B0590FA -:10056000FFF774FBDAF8003043F2CA71C4F8C467CD -:1005700043F61002043384F8C86784F8CC674A4411 -:10058000C4F8BC3743F2F073C4F8B077C4F8B4775A -:100590004B44C4F8B8A7A4F8C08729F8016043F217 -:1005A000DE71A4F8CE67C4F8D06784F8DC6784F8FD -:1005B000E067C4F8D477C4F8D87729F8016084F8E4 -:1005C000E267C4F8E867A4F8EC670026C4F8E477AB -:1005D000C3E9008608339342FAD1AF4A43F63C0A96 -:1005E000C4F810681368CA4484F81468C4F818384A -:1005F0000AF160081368C4F8206884F82468C4F815 -:100600002868C4F82C68A4F8306884F83268C4F804 -:100610001C3828F075F9A149049B43F6F402C4F88C -:100620009C180AF11601C4F83C3843F6C403C4F818 -:10063000A01809F56151C4F8A8684B44C4F8A4187F -:10064000FF21C4F8AC684A44C4F8B468002684F8B2 -:10065000B0184FF47A71C4F838081980083343F899 -:10066000046C9342F9D1FA234046A4F8FA684FF09B -:10067000000B84F8FE68A4F8FC3826F075FD802392 -:10068000404643F6781884F8B03826F043FEB4F8B4 -:10069000FA38D4F83C28322003F00203C844A4F806 -:1006A000FA3843F6B803A2F84A60A2F84E60A2F8FE -:1006B0005260C4F8C868C4F8D068C4F8D868C4F8F0 -:1006C000E068C4F8E868C4F8F06849F803604B448F -:1006D0009E80CAF8B860AAF8BC6009F564564FF469 -:1006E0007A7A28F0B9F84FF0FF3386F801B086F82F -:1006F00002B0183606F8183C002126F814ACFF208A -:1007000046F810BC06F80CBC26F808AC46F804BC49 -:1007100028F020F94645E6D143F6881343F66020D9 -:10072000FF2600224B4448444FF47A71A4F878A97C -:10073000A4F880A9C4F87CB984F884B91E70243365 -:1007400003F8232C03F8222C03F8212C43F8202C47 -:1007500003F81C2C03F81B2C23F81A2C23F8181C64 -:1007600043F8142C23F8101C43F80C2C23F8081C15 -:1007700043F8042C8342E1D1039B09F56B5CC4F878 -:10078000682AFF26C4F8703A049B84F86C2A6FF03C -:100790007942C4F8743A43F67823A4F8641A4FF403 -:1007A0007A71C4F8602A4B4400221E70243303F887 -:1007B000232C4FF0000003F8222C03F8212C43F8DF -:1007C000202C03F81C2C03F81B2C23F81A2C23F8DC -:1007D000181C43F8142C23F8101C43F80C2C23F895 -:1007E000081C43F8042C6345DFD1039B84F8000BFD -:1007F000FF20C4F8D03A049BC4F8C82AC4F8D43AFD -:1008000040F2FF3384F8D82AC4F8DC3AA4F8F43A6A -:100810006FF07D43C4F8E82AC4F8C03A012384F895 -:10082000F02A84F8CC3A4FF6FF73A4F8F22AA4F821 -:10083000DA3A6FF0FF03C4F8FC2AC4F8E03A4FF448 -:100840007F43A4F8C41AC4F8EC3AA4F8E41AA4F854 -:10085000F81A27F043FEB4F8F23AB4F8F42AD21AA0 -:10086000002A1DD0A0EB03001146B8BF511CC301E4 -:1008700003EB610303FB02F193FBF2F30029B8BF22 -:1008800003F1FF33DBB284F8EF3A63B994F8F00A6E -:100890000130C1B20CE000BFE8BA00200600080237 -:1008A000402384F8EF3A01210022084684F8F02A18 -:1008B00094F8EE2AB2FBF0F2981AD6B20028B8BF2C -:1008C00040420A2800F3D08084F8EE2A94F8EC3AEB -:1008D000FF294FF0000243F6C84003F0120308BF9F -:1008E000002184F8E02A484484F8EC3A4FF47F432E -:1008F00084F8F01AA4F8043BA4F80C3BD5F8C86AB5 -:1009000005993368C4F83C6BC4F8403B7368C4F87D -:10091000581BC4F8443B3368C4F84C6BC4F8503BD4 -:100920007368C4F85C1BC4F8701B5249C4F8543B8C -:1009300043F696330968C4F8646B4B44C4F8081B4B -:100940004C49C4F8387B0968C4F8487BC4F8101BCC -:100950003168C4F8607BC4F8681B7168FF26C4F86E -:100960006C1B4FF0000103F8226C03F80A2C2233B1 -:1009700003F82B2C23F82A2C03F8281C23F8262C08 -:100980009842EED1059B4FF0800B84F8F86C43F64B -:100990009866C4F8B83C4FF02008D5F8C83A43F63A -:1009A0004855C4F8A87C4E4418684D44C4F8AC3C83 -:1009B00001275B6884F8F41CC4F8B43C6FF0FF03B3 -:1009C000C4F8B00C04F6F940C4F8F03C4FF6FF73DD -:1009D000A4F8C82CA4F8F63C4FF47A7384F8CA1C27 -:1009E000A4F8D43CA4F8E83C234B84F8DE1CC4F8FB -:1009F000BC3C4FF47F03C4F8CC2CC4F8C03C4FF48B -:100A00007F43C4F8D02CC4F8D82CA4F8DC2CC4F84C -:100A1000E02CC4F8E42CC4F8EC2C42221749C4F8AA -:100A2000C43C28F037F84FF6FF73FF224FF0000A5E -:100A300005F80CBC05F8082C284605F80B8C383551 -:100A400005F8427C202205F841AC802125F83E3C87 -:100A500025F83C3C16F0F0F8AE42E4D14846C4F824 -:100A60008CAE07B0BDE8F08F33445B1084F8EE3AEB -:100A70002CE700BFE8BA0020FF0000FFA807002015 -:100A800010B5944604461A469DF8083004290DD83E -:100A9000DFE801F02103272A0D000CEB0201D94207 -:100AA0002FD104F54050012380F8243810BD0CEB01 -:100AB0000201D9422CD104F5405090F82438002B83 -:100AC000F1D0002380F82438C0F82C38A0F8303852 -:100AD00080F8323810BD04F54050002380F82438E7 -:100AE00010BD04F54050ECE70CEB0201D94216D1E1 -:100AF00004F5405090F8243883F0010380F824383E -:100B000010BD43F6240061462044FDF7A7FCC8E76A -:100B100043F6240061462044FDF7A0FCCBE743F6F2 -:100B2000240061462044FDF799FCE1E738B5431EF7 -:100B30000146042B1DD8DFE803F003181A04160041 -:100B400020210D4C0125E023204684F8305184F803 -:100B5000A53084F82F5122F0F5FC29462046BDE847 -:100B6000384022F0FDBD0221EBE71021E9E7082122 -:100B7000E7E70121E5E700BFF8B000202DE9F04FDD -:100B80008DB003465D48002504AF9B4631F036FB2F -:100B900005E001350BF1380B062D00F0AA800BF5AE -:100BA0000474E8B2FFF7C2FF3C220221204616F08F -:100BB00061F90028EDD000264FF001082046EA46F2 -:100BC0003146454422F0ECFF414620468BF82B622B -:100BD00016F076F8414620464FF0020923F058FF00 -:100BE00047492046ABF82682ABF824820BF1380B3C -:100BF00023F054FF9BF8CC31CDF8048032469BF8AB -:100C0000CD0131460090204623F086F89BF8CC11A8 -:100C10009BF8CD312A46043907F11000043B3E61B0 -:100C200089B27E619BB2796036493B60C7E906664E -:100C30002BF072FC07F110002CF048F900F10803CA -:100C400007F1100223F00703114600EB0802ADEB99 -:100C5000030D04AB184627F01DFFCDF80C803B6850 -:100C6000024607F1080002934B467968CDE90091EE -:100C70002146FDF73FFCB7F90020D546DBF8D81137 -:100C8000B7F904302046CDE900264A46D1F840A005 -:100C90004946D047B7F90A203B8907F11000ABF865 -:100CA000EA21ABF8E831ABF8EE81ABF8EC818BF8D8 -:100CB000F3612CF00BF9DBF8D831024607F1100193 -:100CC0005B6820469847204616F036F80E492046C5 -:100CD00023F0E4FE9BF8CC31019632469BF8CDC15F -:100CE00031462046CDF800C023F016F8062D7FF4DB -:100CF00056AF2437BD46BDE8F08F00BFF8B00020E6 -:100D00007C1C0060DC1500209C1C00602DE9F84371 -:100D1000D34D0646D34C40F2EE29DFF89C832F6872 -:100D200029F012FE2378002B00F03D8298F8003065 -:100D3000002B00F038820A21CB4829F0CBFDCB48AC -:100D400027F05EFA1321CA4843F6383729F0C2FD6E -:100D5000C64827F055FA43F6753343F6A7413744A2 -:100D60003344FF25314400224FF0000403F8015CB6 -:100D7000DA77223303F8222C03F8182C03F80B2C13 -:100D800003F80A2C23F8092C03F8074C23F8052C48 -:100D90008B42E9D11D21B74829F09CFDB34827F0CB -:100DA0002FFA06F540534FF6FF72384683F8BC5CC5 -:100DB000A3F8F22CA3F8F62C83F8F82C83F8BD4C9A -:100DC00083F8BE4C83F8BF5C83F8C04C83F8C14CF9 -:100DD00083F8C25C83F8C34C83F8C44C83F8C55CC9 -:100DE00083F8C64C83F8C74C83F8F15C06F5805550 -:100DF00083F8F44C43F6A843334483F8514083F816 -:100E0000724006F50054FFF7B9FE0A2027F024FDD2 -:100E1000304601F029F90021974829F05BFD9348FD -:100E200027F0EEF90E21954829F054FD8F4827F060 -:100E3000E7F91C21924829F04DFD8C4827F0E0F994 -:100E40000022D4F8F80247F6122126F05DFE1321A5 -:100E50008C4829F03FFD854827F0D2F90022D4F8CC -:100E6000080447F6122126F04FFE1321864800247D -:100E700029F030FD7D4827F0C3F91A21834829F075 -:100E800029FD7A4827F0BCF924F082F8C82027F021 -:100E9000E3FC0021784829F01DFD744827F0B0F9E3 -:100EA00017217B4829F016FD704827F0A9F91D216C -:100EB000784829F00FFD6D4827F0A2F942F69C40D2 -:100EC000304417F023FC304610F01EFCD5F8FC37F8 -:100ED00069481A6895F8CC3A51064FF000014CBFAA -:100EE00043F0020303F0FD0312064CBF43F004037A -:100EF00003F0FB0385F8CC3A29F0ECFC5B4827F0C3 -:100F00007FF92E21644829F0E5FC584827F078F94C -:100F10002E21614829F0DEFC544827F071F90121A7 -:100F20005E4829F0D7FC1B215D4829F0D3FC4F48CF -:100F300027F066F92E21584829F0CCFC4B4827F0C1 -:100F40005FF92E21544829F0C5FC484827F058F98C -:100F50002146494829F0BEFC444827F051F9642055 -:100F600027F07AFC2146444829F0B4FC3F4827F09A -:100F700047F92E21484829F0ADFC3C4827F040F9BC -:100F80002E21454829F0A6FC384827F039F90121DF -:100F9000424829F09FFC0D21424829F09BFC334830 -:100FA00027F02EF901213D4829F094FC06213E4806 -:100FB00029F090FC2D4827F023F90121374829F02A -:100FC00089FC1121394829F085FC284827F018F9B7 -:100FD0000121324829F07EFC0821354829F07AFCAD -:100FE000224827F00DF901212C4829F073FC0C212F -:100FF000304829F06FFC1D4827F002F92E212648C1 -:1010000029F068FC194827F0FBF82E21224829F026 -:1010100061FC164827F0F4F82146174829F05AFCDD -:10102000124827F0EDF843F23023214612483344AA -:1010300083F8584083F8914029F04CFC0B4827F086 -:10104000DFF82E21144829F045FC084827F0D8F88D -:101050002E21114829F03EFC044827F0D1F82DE05C -:10106000E8BA00208EBC00206C260020A84B00208F -:10107000782600208C260020583C0020AC2600203A -:10108000BC260020DC260020F026002004270020BB -:10109000202700203827002058270020EC2300209C -:1010A00088270020A4270020B4270020BC27002088 -:1010B000D0270020DC27002096BC002001214148D9 -:1010C00029F008FC3921404829F004FC3F4827F06A -:1010D00097F801213B4829F0FDFB2B213C4829F0E2 -:1010E000F9FB3A4827F08CF80121364829F0F2FB49 -:1010F0003521384829F0EEFB344827F081F80121EA -:10110000304829F0E7FB2221334829F0E3FB2F4840 -:1011100027F076F801212B4829F0DCFB33212F48FA -:1011200029F0D8FB294827F06BF80121254829F040 -:10113000D1FB3A212A4829F0CDFB244827F060F85A -:101140000121204829F0C6FB2146264829F0C2FB90 -:101150001E4827F055F801211A4829F0BBFB42210F -:10116000214829F0B7FB194827F04AF82E211F48DB -:1011700029F0B0FB154827F043F82E211B4829F031 -:10118000A9FB124827F03CF82146164829F0A2FB9B -:101190000E4827F035F895F8643943F0040385F8D4 -:1011A0006439BDE8F8832B682278DB1B32B1B3F5D4 -:1011B000FA6F3FF6C0AD29F0C7FBB1E54B45FAD950 -:1011C000B9E500BFEC230020EC270020A84B00204D -:1011D00028280020542800208C280020B028002037 -:1011E000E4280020583C0020202900205827002017 -:1011F0002DE9F04F00F580568FB0074696F8643918 -:101200005A0700F1CC8100F5485300F54055DFF84E -:101210002CA60693D6F85C38990508D523F40073FC -:101220003846C6F85C3812F059F9D6F85C38DA0559 -:1012300006D523F480733846C6F85C3803F040F9CD -:1012400042F69C49384615F017F93846B94415F06E -:1012500085F9484617F046FC384614F0C1FBD6F82D -:10126000EC3803B19847D5F88032002B40F0EA8083 -:1012700043F22023FB18059343F2113843F2123B4B -:101280000024B844BB4402E00134082C16D018F8FE -:101290003420E0B29307F7D522F0020302F00102F6 -:1012A00008F83430D5F878321BF83410D3F89C3075 -:1012B000002BE9D001349847082CE8D1059B03F5B1 -:1012C0009A70FEF701FB95F889379BB1013BD5F881 -:1012D000842703F00F0303EB831302EB430292F81E -:1012E000543195F88B279A4204D095F88827022A22 -:1012F00040F2D182059B03F5AE60FEF7D1FB95F875 -:1013000073339C0709D523F00203012295F870136B -:10131000484685F873331FF08DFB384610F0E4FB28 -:10132000D6F85C38580500F13581190500F1E480E4 -:1013300095F8F031DA0708D523F00103384685F82F -:10134000F031FEF7D7FD95F8F0319C0700F11481DC -:10135000D6F85C38D80400F10A8199047FD45A0485 -:1013600009D523F480430698C6F85C38D5F81032C6 -:101370001978FDF77BFB95F81C32DC077DD49807C4 -:1013800000F18D805A0700F1A080384611F0C8FEA8 -:10139000002840F0AD80384600F01EFFD6F8B8288F -:1013A000D6F85C3842B113F00100C3F3400140F0BD -:1013B000BB809C0700F1B880D6F8BC2822B19C06FF -:1013C00002D59047D6F85C3823F02303C6F85C3882 -:1013D000D6F864380133C6F8643827F091FA01462C -:1013E00041F668103844FDF745F996F86839C0B2FF -:1013F000002B40F09D80DAF80020D5F818389A428A -:1014000003D0DAF80030C5F81838DAF80030D5F82B -:101410001C289B1AB3F57A7F80F06681D5F81028D6 -:101420006AB1DAF800309B1A952B08D996F864391E -:10143000002223F0080386F86439C5F810280FB09D -:10144000BDE8F08FDAF80020D31AB5F87C22934279 -:1014500043F220233B4480F0C98105930CE723F439 -:1014600000530698C6F85C38D5F80C321978FDF7A9 -:101470006FFB95F81C32DC0781D503F0FE0385F87D -:101480001C32D6F8D028002A3FF479AFD5F80832BC -:101490001878904795F81C3298077FF573AF23F0C2 -:1014A000020385F81C32D6F8FC371A68D10400F123 -:1014B0001282D6F8D4381BB1D5F80C221078984790 -:1014C00095F81C325A077FF560AF23F0040385F8C6 -:1014D0001C32D6F8D838002B3FF457AFD5F810227D -:1014E00010789847384611F01BFE00283FF453AFA0 -:1014F0003846FEF779FC4EE723F400631521C64811 -:10150000C6F85C3829F0E6F9C44826F079FED5F82B -:10151000FC3143F2EC101A783844D5F8F8311978D8 -:101520000123FDF713FA03E79047D6F85C3843E749 -:1015300096F86939002B3FF45EAF96F8A4398342E0 -:101540003FF459AF86F8A40900230090012097F8D2 -:10155000232F02F00F02CDE90130013297F8243F2A -:1015600097F8251F07F5CE5020F0FEF843E723F447 -:101570008053C6F85C38FEE623F0020385F8F031AC -:10158000D6F8CC38002B3FF4E3AED5F8F82110782C -:101590009847DDE623F48063C6F85C38B7E723F0AC -:1015A00004030C2143F648549D4886F864394FF0F3 -:1015B000000829F08FF999483C4407F5405541F25D -:1015C000D45A4FF0FF0926F01BFE04E0B8F1060FD5 -:1015D00004F1380434D05FFA88F0FFF7A7FAD5F8A1 -:1015E0003C3B08EB480CD5F8402B5B7A01212046A8 -:1015F00003EB431E884403EB8E0363441A4412F842 -:101600000AB023F045FA4FF6FF7304F8089C1BF06C -:10161000020F04F809BC24F8063C24F8043CD5D099 -:10162000012214F80C3C20463834019214F8432C63 -:1016300000920022114622F0B9FBB8F1060FCAD180 -:10164000002301223846194611F040FFD6F8FC3736 -:101650005B8E002B40F0768107F54853D5F80822C1 -:1016600006931378002B40F0ED8006980021FDF7DB -:10167000FDF9D6F8FC371B68980600F17581DFF894 -:10168000BCA10023DFF8B8C14FF0010E09AC0193F3 -:10169000CDF808E0CDF800E0BCE80F000FC4DCF89E -:1016A0000030714609AAD5F87002238012231FF07A -:1016B000D1FED6F8E83803B19847DAF800300021B7 -:1016C0005848C5F81C38DAF80030C5F8183829F041 -:1016D00001F9524826F094FD1521534829F0FAF8F3 -:1016E0004E4826F08DFD95E595F824384BB1D5F898 -:1016F0002828D5F82C38002A00F0E1809A4200F220 -:10170000DE80D5F82038B5F8DA2A0133C5F820385C -:10171000B6F8603843F40063A6F860384FF6FF73FC -:101720009A4204D0D6F85C38590700F1BB80D6F84D -:10173000703873B195F8240850B1D5F828080028FE -:1017400000F04581D5F82C2890428CBF0120022062 -:101750009847D6F864280023C6F86828C6F8643885 -:10176000D5F8203813F0010439D196F86439DAF845 -:10177000002043F0080386F86439B6F86038C5F8ED -:1017800010289B072DD50321284829F0A3F8012113 -:10179000274829F09FF823460A22D6F868181F48E0 -:1017A00026F04AFD0121224829F094F8122121480F -:1017B00029F090F801211E4829F08CF823460A22CE -:1017C0002146164826F038FD0121194829F082F8F3 -:1017D0000321194829F07EF8104826F011FDD5F8AC -:1017E0001028DAF80030C5F81C3819E6002418462D -:1017F00005930123C5F880421030009495F88622A5 -:1018000095F88412FDF72CFA4FF0FF33C5F88042AB -:10181000C5F8843230E500BFB8290020A84B00206D -:1018200064290020583C0020A0290020D029002055 -:10183000EC230020D4290020E8290020E8BA002069 -:10184000EC07002000240D216648147029F042F8AE -:101850000121654829F03EF823460A2221466348C3 -:1018600026F0EAFC614826F0CBFC95F81C3243F0E8 -:10187000010385F81C32D5F800321B68D3F8083113 -:101880005B681B68DB68DB067FF5EFAE21460698D8 -:10189000FDF75EF9E9E656498A5C9A4288BF85F809 -:1018A0008B3727E5012348460193B5F8DE3A0093CC -:1018B000B5F8DC3A95F8D81A1FF0E4FA37E70133A7 -:1018C000C5F82C3895F832380133DBB23B2B6AD897 -:1018D00085F8323815E7DA68C2F38352032A7FF4B9 -:1018E000E8AD19690024D5F80C224FF0010BD5F8AA -:1018F000083207F5CE5092F80080C1F303221B781E +:100000000612CDE9014821F011FC05F07F030598A7 +:100010000094DDE9061221F093FA8FE708B0BDE8FD +:10002000F08700BF2DE9F04F06460024814687B0D7 +:1000300046F8044B3046FEF711FC41F6810541F2CB +:10004000E85241F2D85041F2C2514D444A4448442A +:100050004944A2F1740302F8884C03F80D4C0D33A7 +:100060008B42FAD1A2F12E0303F8054C05338342EB +:10007000FAD1A2F1120303F8034C03339342FAD1ED +:1000800003F1850285308531AA42E2D109F5805518 +:1000900009F5C05341F2FC7A41F64A0CC5F8FC67F9 +:1000A00005F5016EEF4ECA44049341F65607C5F8B4 +:1000B000009841F64608C5F80C48CC44C5F804A899 +:1000C0004F444FF0000B0FCEAEE80F0096E80F0044 +:1000D0008EE80F0041F63A0385F83048A5F832481B +:1000E00085F83448A5F8364885F8384885F83C48FE +:1000F00029F8034041F63E0385F8404829F80340BB +:1001000041F6420385F8444829F8034085F84848F9 +:1001100029F808408CF802B02CF804BBBC45F9D192 +:1001200041F6090341F6560285F858B84FF0804170 +:100130004B4429F802B0CC480022C5F86C384FF483 +:10014000F003C5F85CB805F6941EC5F8083841F60A +:100150007003A5F860B841F64F34C5F864B84B4455 +:10016000C5F868B842F26F3CC5F87CB84C44C5F895 +:1001700074B8CC44C5F878B809F5CE57C5F870B84E +:10018000C5F880B8C5F884B8C5F888B8C5F88CB883 +:10019000C5F890B8C5F894B8C5F898B8C5F89CB833 +:1001A000C5F8A0B8C5F8A4B8C5F8A8B8C5F8ACB8E3 +:1001B000C5F8B0B8C5F8B4B8C5F8B8B8C5F8BCB893 +:1001C000C5F8C0B8C5F8C4B8C5F8E8B8C5F8ECB803 +:1001D000C5F8F0B8C5F8C8B8C5F8D0B8C5F8D4B8EF +:1001E000C5F8D8B8C5F8CCB8C5F8E4B8C5F8DCB8D7 +:1001F000C5F8E0B8C5F8F4B8C5F8F8B8C5F8FCB863 +:10020000C5F800B9C5F804B9C5F808B9C5F80CB9FE +:10021000C5F810B9C5F814B9C5F818B9C5F81CB9AE +:10022000C5F820B9C5F824B9C5F828B9C5F82CB95E +:10023000C5F830B9C5F834B9C5F838B9C5F83CB90E +:10024000C5F840B9C5F844B9C5F848B9C5F84CB9BE +:10025000C5F850B9C5F854B90068844E05904FF000 +:10026000A060039305F66C13C5F86C098048DFF8AD +:100270001482C5F870090120C5F858B985F87409C9 +:100280007820C5F85CB9C5F860B9C5F864B985F8D7 +:1002900068B9DE600026A5F87C095961C5F884B903 +:1002A0001A625A62B8E80F00AEE80F00D8F80030C2 +:1002B0000598CEF80030C5F8880985F8C0B985F8EA +:1002C000C1B985F8C2B985F8C3B9039B85F8C4B92B +:1002D000C5F8C43A049B85F8CCBAC5F8C83A04F806 +:1002E000826C04F8816C82346445F8D142F220407B +:1002F00009F50054039B4FF6FF784844DFF888B1B6 +:10030000C4F8F43200F59F63A4F8EE62A4F8F0623A +:10031000C4F8503400F5A763C4F8FC62C4F8543440 +:1003200000F5AF6384F80063C4F8583400F5B76390 +:10033000C4F82464C4F860344E4BC4F82864C4F88C +:10034000F8324D4BC4F84004C4F820344023C4F8BC +:100350000484A4F866345023C4F800B4A4F86834C4 +:1003600026F0E4FA049A03985346C4F8242B09F5BE +:10037000475AC4F8442B42F690424049C4F8548C82 +:100380004A44C4F8200B4FF47A78C4F8400BC4F800 +:100390004C6B84F8506BC4F8586C84F85C6C84F82F +:1003A000606C84F8616C84F8626C84F8636C84F827 +:1003B000646C84F8656C84F8666C84F8676C84F807 +:1003C000686C84F8696C84F86A6C84F86B6C84F8E7 +:1003D0006C6C84F86D6C84F86E6C84F86F6C84F8C7 +:1003E000706C84F8716C84F8726C84F8736CC4F867 +:1003F00050BCC4F82014224984F8746CC4F8481B1B +:10040000494600923A4685F8CC6AC4F88C0C42F60C +:10041000BC40C4F8806CC4F8846C4844A4F8886C70 +:10042000A4F8906CC4F8946C84F8986C09F5405466 +:1004300018F00AF8D5F8C83A84F8A4610A33A4F889 +:10044000AC61C4F8B061C4F8A83184F8B461C4F8F0 +:10045000A07128F0C9FA09F54952A4F8BC6184F8E2 +:10046000BE6113E07407002008BB00200000F041CB +:100470001900007F58B000208C4200209C410020D1 +:10048000B8B00020940700200000FFFF84F8C86186 +:10049000C4F8D86184F8DC61C4F8E061C4F8B8013C +:1004A000A4F8D4810592C4E97366CAF80060CAF85A +:1004B0000460C4F8E861C4F8F06184F8B461A4F899 +:1004C000E481A4F8EC8128F08FFA43F20C2384F83D +:1004D000DC6143F2A01284F8C8614B44C4F8B8014F +:1004E0004A44CAF800603946CAF8046084F8BE611C +:1004F00084F81062D5F8C8AAC4F820320AF10C03B7 +:10050000C4F8D861C4F8FC61C4F814320AF10E03CF +:10051000C4F80462C4F818320AF10F0384F83C628C +:10052000C4F81C320AF130030598C4F828320AF1E5 +:100530003203C4F8F471C4F82C320AF13403A4F87D +:10054000F881C4F830320AF13603A4F80082C4F806 +:1005500034320AF13803C4F80C72C4F83832C4F8E3 +:100560002472039BFFF76CFBDAF8003043F2EA7168 +:10057000C4F8E467043384F8E86784F8EC6743F66A +:100580003002C4F8DC3743F61003C4F8D0774A448D +:10059000C4F8D4774B44C4F8D8A7A4F8E08729F866 +:1005A000016043F2FE71A4F8EE67C4F8F06784F8C6 +:1005B000FC6784F80068C4F8F477C4F8F87729F881 +:1005C000016084F80268C4F80868A4F80C68002682 +:1005D000C4F80478C3E9008608339342FAD1B04ADC +:1005E00043F65C0AC4F830681368CA4484F8346877 +:1005F000C4F838381368C4F8406884F84468C4F80C +:100600004868C4F84C68A4F8506884F85268C4F884 +:100610003C3828F0E9F9049B43F6E40243F6141150 +:10062000C4F85C389F4B4A44C4F858084944C4F89D +:10063000BC380AF11603C4F8C8684FF47A70C4F8DD +:10064000C0380AF10403C4F8CC68C4F8C438FF23E6 +:10065000C4F8D4680AF1600684F8D038002310800A +:10066000083242F8043C8A42F9D1FA22A4F81A3935 +:1006700084F81E393046A4F81C2943F6981826F051 +:10068000E9FD8022304643F6201684F8D028C8447D +:1006900026F0B6FEB4F81A290023D4F85C1802F04C +:1006A000020232204E449B46A4F81A2943F6D8028F +:1006B000A1F84A30A1F84E30A1F85230C4F8E83819 +:1006C000C4F8F038C4F8F838C4F80039C4F8083968 +:1006D000C4F8103949F802304A449380CAF8B83057 +:1006E000AAF8BC304FF47A7A28F02AF94FF0FF3399 +:1006F00086F801B086F802B0183606F8183C0021DA +:1007000026F814ACFF2046F810BC06F80CBC26F8FE +:1007100008AC46F804BC28F091F94645E6D143F60A +:10072000A81309F56A56FF2000224B444FF47A7152 +:10073000A4F898A9A4F8A0A9C4F89CB984F8A4B90D +:100740001870243303F8232C03F8222C03F8212CEF +:1007500043F8202C03F81C2C03F81B2C23F81A2C2C +:1007600023F8181C43F8142C23F8101C43F80C2C05 +:1007700023F8081C43F8042C9E42E1D1039B43F666 +:10078000E020C4F8882A4FF0FF0CC4F8903A48449F +:10079000049B84F88C2A6FF07942C4F8943A43F6AB +:1007A0009823A4F8841A4FF47A71C4F8802A4B4431 +:1007B000002283F800C0243303F8232C4FF00006F6 +:1007C00003F8222C03F8212C43F8202C03F81C2CCE +:1007D00003F81B2C23F81A2C23F8181C43F8142CAC +:1007E00023F8101C43F80C2C23F8081C43F8042CA5 +:1007F0009842DED1039BFF20C4F8E82AC4F8F03AFF +:10080000049B84F8F82AC4F8F43A40F2FF33C4F8A1 +:10081000082BC4F8FC3AA4F8143B6FF07D4384F82D +:10082000102BC4F8E03A0123A4F8122B84F8EC3A18 +:100830004FF6FF73C4F81C2BA4F8FA3A6FF0FF03CD +:1008400084F8206BC4F8003B4FF47F43A4F8E41A0B +:10085000C4F80C3BA4F8041BA4F8181B27F0B2FE44 +:10086000B4F8123BB4F8142BD21A002A1CD0A0EB17 +:1008700003001146B8BF511CC30103EB610303FB26 +:1008800002F193FBF2F30029B8BF03F1FF33DBB2AF +:1008900084F80F3B5BB994F8100B0130C1B20BE048 +:1008A00008BB002006000802402384F80F3B01210A +:1008B0000022084684F8102B94F80E2BB2FBF0F2BD +:1008C000981AD6B20028B8BF40420A2800F3D08058 +:1008D00084F80E2B94F80C3BFF294FF0000243F6EE +:1008E000E84003F0120308BF002184F8002B4844BD +:1008F00084F80C3B4FF47F4384F8101BA4F8243B8E +:10090000A4F82C3BD5F8C86A05993368C4F85C6B29 +:10091000C4F8603B7368C4F8781BC4F8643B336860 +:10092000C4F86C6BC4F8703B7368C4F87C1BC4F8E3 +:10093000901B5249C4F8743B43F6B6330968C4F8B7 +:10094000846B4B44C4F8281B4C49C4F8587B096895 +:10095000C4F8687BC4F8301B3168C4F8807BC4F8E5 +:10096000881B7168FF26C4F88C1B4FF0000103F848 +:10097000226C03F80A2C223303F82B2C23F82A2CA0 +:1009800003F8281C23F8262C9842EED1059B4FF043 +:10099000800B84F8186D43F6B866C4F8D83C4FF065 +:1009A0002008D5F8C83A43F66855C4F8C87C4E44C8 +:1009B00018684D44C4F8CC3C01275B6884F8141DCA +:1009C000C4F8D43C6FF0FF03C4F8D00C04F61950FF +:1009D000C4F8103D4FF6FF73A4F8E82CA4F8163DB8 +:1009E0004FF47A7384F8EA1CA4F8F43CA4F8083DA8 +:1009F000234B84F8FE1CC4F8DC3C4FF47F03C4F89E +:100A0000EC2CC4F8E03C4FF47F43C4F8F02CC4F85D +:100A1000F82CA4F8FC2CC4F8002DC4F8042DC4F85C +:100A20000C2D42221749C4F8E43C28F0A7F84FF6F1 +:100A3000FF73FF224FF0000A05F80CBC05F8082CE4 +:100A4000284605F80B8C383505F8427C202205F83D +:100A500041AC802125F83E3C25F83C3C16F05EF97F +:100A6000AE42E4D14846C4F8ACAE07B0BDE8F08F62 +:100A700033445B1084F80E3B2CE700BF08BB00201A +:100A8000FF0000FFA807002010B5944604461A4650 +:100A90009DF8083004290DD8DFE801F02103272A4A +:100AA0000D000CEB0201D9422FD104F54050012377 +:100AB00080F8443810BD0CEB0201D9422CD104F56A +:100AC000405090F84438002BF1D0002380F844388F +:100AD000C0F84C38A0F8503880F8523810BD04F5F2 +:100AE0004050002380F8443810BD04F54050ECE736 +:100AF0000CEB0201D94216D104F5405090F844386D +:100B000083F0010380F8443810BD43F64400614689 +:100B10002044FDF7A3FCC8E743F6440061462044A7 +:100B2000FDF79CFCCBE743F6440061462044FDF70B +:100B300095FCE1E738B5431E0146042B1DD8DFE8DC +:100B400003F003181A04160020210D4C0125E023A0 +:100B5000204684F8305184F8A53084F82F5122F0D3 +:100B600067FD29462046BDE8384022F06FBE0221CD +:100B7000EBE71021E9E70821E7E70121E5E700BFFE +:100B800018B100202DE9F04F8DB003465D480025D7 +:100B900004AF9B4631F0B2FB05E001350BF1380B99 +:100BA000062D00F0AA800BF50474E8B2FFF7C2FF2F +:100BB0003C220221204616F0CFF90028EDD0002675 +:100BC0004FF001082046EA463146454423F05EF8DE +:100BD000414620468BF82B6216F0E4F84146204649 +:100BE0004FF0020923F0CAFF47492046ABF826829E +:100BF000ABF824820BF1380B23F0C6FF9BF8CC3105 +:100C0000CDF8048032469BF8CD0131460090204655 +:100C100023F0F8F89BF8CC119BF8CD312A46043923 +:100C200007F11000043B3E6189B27E619BB279609E +:100C300036493B60C7E906662BF0E2FC07F110007D +:100C40002CF0C4F900F1080307F1100223F00703A8 +:100C5000114600EB0802ADEB030D04AB184627F07C +:100C60008DFFCDF80C803B68024607F10800029327 +:100C70004B467968CDE900912146FDF73BFCB7F979 +:100C80000020D546DBF8D811B7F904302046CDE96D +:100C900000264A46D1F840A04946D047B7F90A2075 +:100CA0003B8907F11000ABF8EA21ABF8E831ABF86B +:100CB000EE81ABF8EC818BF8F3612CF087F9DBF86F +:100CC000D831024607F110015B682046984720465C +:100CD00016F0A4F80E49204623F056FF9BF8CC31BD +:100CE000019632469BF8CDC131462046CDF800C072 +:100CF00023F088F8062D7FF456AF2437BD46BDE8B3 +:100D0000F08F00BF18B100207C1C0060DC150020B3 +:100D10009C1C00602DE9F843D34D0646D34C40F2AD +:100D2000EE29DFF89C832F6829F082FE2378002BC0 +:100D300000F03D8298F80030002B00F038820A2144 +:100D4000CB4829F03BFECB4827F0D0FA1321CA4804 +:100D500043F6583729F032FEC64827F0C7FA43F663 +:100D6000953343F6C74137443344FF2531440022CD +:100D70004FF0000403F8015CDA77223303F8222CE9 +:100D800003F8182C03F80B2C03F80A2C23F8092C71 +:100D900003F8074C23F8052C8B42E9D11D21B748F5 +:100DA00029F00CFEB34827F0A1FA06F540534FF6A0 +:100DB000FF72384683F8DC5CA3F8122DA3F8162DD9 +:100DC00083F8182D83F8DD4C83F8DE4C83F8DF5C64 +:100DD00083F8E04C83F8E14C83F8E25C83F8E34C61 +:100DE00083F8E44C83F8E55C83F8E64C83F8E74C41 +:100DF00083F8115D06F5805583F8144D43F6C8431A +:100E0000334483F8514083F8724006F50054FFF7ED +:100E1000B9FE0A2027F094FD304601F025F90021A3 +:100E2000974829F0CBFD934827F060FA0E219548AA +:100E300029F0C4FD8F4827F059FA1C21924829F067 +:100E4000BDFD8C4827F052FA0022D4F8F80247F68C +:100E5000122126F0CFFE13218C4829F0AFFD8548E2 +:100E600027F044FA1A218A4829F0A8FD814827F082 +:100E70003DFA24F003F9C82027F062FD19218548C6 +:100E800029F09CFD7B4827F031FA0022D4F8480B6A +:100E900047F6122126F0AEFE00217948002429F001 +:100EA0008DFD744827F022FA17217B4829F086FD32 +:100EB000704827F01BFA1D21784829F07FFD6D4806 +:100EC00027F014FA42F6BC40304417F08FFC30464D +:100ED00010F07EFCD5F8FC3769481A6895F8CC3AD2 +:100EE00051064FF000014CBF43F0020303F0FD0335 +:100EF00012064CBF43F0040303F0FB0385F8CC3A21 +:100F000029F05CFD5B4827F0F1F92E21644829F0B7 +:100F100055FD584827F0EAF92E21614829F04EFD89 +:100F2000544827F0E3F901215E4829F047FD1B21D1 +:100F30005D4829F043FD4F4827F0D8F92E21584845 +:100F400029F03CFD4B4827F0D1F92E21544829F0D7 +:100F500035FD484827F0CAF92146494829F02EFDB9 +:100F6000444827F0C3F9642027F0EAFC21464448AE +:100F700029F024FD3F4827F0B9F92E21484829F0EF +:100F80001DFD3C4827F0B2F92E21454829F016FDF9 +:100F9000384827F0ABF90121424829F00FFD0D2117 +:100FA000424829F00BFD334827F0A0F901213D48C4 +:100FB00029F004FD06213E4829F000FD2D4827F0C8 +:100FC00095F90121374829F0F9FC1121394829F018 +:100FD000F5FC284827F08AF90121324829F0EEFC77 +:100FE0000821354829F0EAFC224827F07FF9012141 +:100FF0002C4829F0E3FC0C21304829F0DFFC1D4887 +:1010000027F074F92E21264829F0D8FC194827F03A +:101010006DF92E21224829F0D1FC164827F066F9F7 +:101020002146174829F0CAFC124827F05FF943F21D +:10103000502321461248334483F8584083F89140A6 +:1010400029F0BCFC0B4827F051F92E21144829F057 +:10105000B5FC084827F04AF92E21114829F0AEFCCA +:10106000044827F043F92DE008BB0020AEBC002067 +:101070006C260020684C0020782600208C2600205A +:10108000183D0020AC260020BC260020DC260020D5 +:10109000F02600200C2700202827002040270020D1 +:1010A00060270020EC23002090270020AC270020A0 +:1010B000BC270020C4270020D8270020E4270020D8 +:1010C000B6BC00200121414829F078FC3921404874 +:1010D00029F074FC3F4827F009F901213B4829F029 +:1010E0006DFC2B213C4829F069FC3A4827F0FEF8BA +:1010F0000121364829F062FC3521384829F05EFC90 +:10110000344827F0F3F80121304829F057FC222118 +:10111000334829F053FC2F4827F0E8F801212B48E9 +:1011200029F04CFC33212F4829F048FC294827F0AE +:10113000DDF80121254829F041FC3A212A4829F00F +:101140003DFC244827F0D2F80121204829F036FC44 +:101150002146264829F032FC1E4827F0C7F8012115 +:101160001A4829F02BFC4221214829F027FC194874 +:1011700027F0BCF82E211F4829F020FC154827F045 +:10118000B5F82E211B4829F019FC124827F0AEF8BB +:101190002146164829F012FC0E4827F0A7F895F8CA +:1011A000683943F0040385F86839BDE8F8832B6893 +:1011B0002278DB1B32B1B3F5FA6F3FF6C0AD29F0F0 +:1011C00037FCB1E54B45FAD9B9E500BFEC23002067 +:1011D000F4270020684C0020302800205C280020E4 +:1011E00094280020B8280020EC280020183D00207A +:1011F00028290020602700202DE9F04F00F58056B7 +:101200008FB0074696F868395A0700F1C18143F25A +:10121000202300F54055DFF824A6C3180693D6F81E +:101220005C38990508D523F400733846C6F85C3855 +:1012300012F0BAF9D6F85C38DA0506D523F48073D3 +:101240003846C6F85C3803F07FF942F6BC493846A8 +:1012500015F084F93846B94415F0F2F9484617F00C +:10126000B1FC384614F002FDD6F8EC3803B19847CB +:10127000D5F8A0323BB1DAF80020D31AB5F89C2299 +:10128000934280F0B28207F54953059343F2313817 +:1012900043F2323B0024B844BB4402E00134082C42 +:1012A00016D018F83420E0B29307F7D522F00203E5 +:1012B00002F0010208F83430D5F898321BF83410E7 +:1012C000D3F8A030002BE9D001349847082CE8D19E +:1012D000059B03F59A70FEF7F7FA95F8A9379BB1CD +:1012E000013BD5F8A42703F00F0303EB831302EBB4 +:1012F000430292F8543195F8AB279A4204D095F8FE +:10130000A827022A40F2C782059B03F5AE60FEF7CC +:10131000C1FB95F893339C0709D523F00203012202 +:1013200095F89013484685F893331FF0F3FB384641 +:1013300010F03EFCD6F85C38580500F1CF81190555 +:1013400000F1D48095F81032DA0708D523F00103B4 +:10135000384685F81032FEF7C7FD95F810329C0725 +:1013600000F1FF80D6F85C38D80400F10C819904B4 +:1013700071D45A0409D523F480430698C6F85C3822 +:10138000D5F830321978FDF771FB95F83C32DC075F +:101390006FD498077DD45A0700F19180384611F038 +:1013A00025FF002840F09E80384600F015FFD6F853 +:1013B000B828D6F85C3842B113F00100C3F34001FD +:1013C00040F0AC809C0700F1A980D6F8BC2822B17F +:1013D0009C0602D59047D6F85C3823F02303C6F864 +:1013E0005C38D6F864380133C6F8643827F0FCFA64 +:1013F000014641F66C103844FDF73CF996F86C391B +:10140000C0B2002B40F08E80DAF80020D5F83838D2 +:101410009A4203D0DAF80030C5F83838DAF80030EC +:10142000D5F83C289B1AB3F57A7F80F05C81D5F81B +:1014300030286AB1DAF800309B1A952B08D996F853 +:101440006839002223F0080386F86839C5F8302887 +:101450000FB0BDE8F08F23F400530698C6F85C384F +:10146000D5F82C321978FDF773FB95F83C32DC0780 +:101470008FD503F0FE0385F83C32D6F8D028002A39 +:1014800087D0D5F828321878904795F83C329807DD +:1014900081D523F0020385F83C32D6F8FC371A6870 +:1014A000D10400F11882D6F8D4381BB1D5F82C221B +:1014B0001078984795F83C325A077FF56FAF23F0C4 +:1014C000040385F83C32D6F8D838002B3FF466AFD9 +:1014D000D5F8302210789847384611F087FE00285A +:1014E0003FF462AF3846FEF779FC5DE723F4006312 +:1014F0001521C948C6F85C3829F060FAC74826F0BB +:10150000F5FED5F81C3243F20C201A783844D5F891 +:10151000183219780123FDF719FA13E79047D6F826 +:101520005C3852E796F86D39002B3FF46DAF96F8B2 +:10153000A83983423FF468AF86F8A80900230090D9 +:10154000012097F8232F02F00F02CDE9013001327C +:1015500097F8243F97F8251F07F5CE5020F066F93D +:1015600052E723F0020385F81032D6F8CC38002B6E +:101570003FF4F8AED5F8182210789847D6F85C38C2 +:10158000D8047FF5F4AE23F48053C6F85C38FCE64B +:1015900023F004030C2143F66854A14886F8683907 +:1015A0004FF0000829F00AFA9C483C4407F54055E2 +:1015B00041F2D45A4FF0FF0926F098FE04E0B8F14A +:1015C000060F04F1380434D05FFA88F0FFF7B2FA5E +:1015D000D5F85C3B08EB480CD5F8602B5B7A012111 +:1015E000204603EB431E884403EB8E0363441A44F6 +:1015F00012F80AB023F0C2FA4FF6FF7304F8089C01 +:101600001BF0020F04F809BC24F8063C24F8043C43 +:10161000D5D0012214F80C3C20463834019214F83D +:10162000432C00920022114622F036FCB8F1060F3E +:10163000CAD1002301223846194611F0ADFFD6F871 +:10164000FC375B8E002B40F09C8143F22023D5F8C1 +:101650002822FB1806931378002B40F0F38006989D +:101660000021FDF703FAD6F8FC371B68980600F155 +:101670006981DFF8C8A10023DFF8C4C14FF0010E73 +:1016800009AC0193CDF808E0CDF800E0BCE80F000C +:101690000FC4DCF80030714609AAD5F89002238007 +:1016A00012231FF03DFFD6F8E83803B19847DAF867 +:1016B000003000215B48C5F83C38DAF80030C5F846 +:1016C000383829F07BF9554826F010FE1521564888 +:1016D00029F074F9514826F009FEA0E523F480634F +:1016E000C6F85C380DE795F844384BB1D5F8482872 +:1016F000D5F84C38002A00F0E2809A4200F2DF80F0 +:10170000D5F84038B5F8FA2A0133C5F84038B6F8AC +:10171000603843F40063A6F860384FF6FF739A42CE +:1017200004D0D6F85C38590700F1BC80D6F8703880 +:1017300073B195F8440850B1D5F84808002800F076 +:101740004681D5F84C2890428CBF01200220984752 +:10175000D6F864280023C6F86828C6F86438D5F897 +:10176000403813F0010439D196F86839DAF80020CE +:1017700043F0080386F86839B6F86038C5F83028B1 +:101780009B072DD50321294829F018F90121284864 +:1017900029F014F923460A22D6F868181F4826F0C3 +:1017A000C1FD0121224829F009F91221214829F01F +:1017B00005F901211E4829F001F923460A22214694 +:1017C000164826F0AFFD0121194829F0F7F803214A +:1017D000194829F0F3F8114826F088FDD5F830288B +:1017E000DAF80030C5F83C3823E607F54953002401 +:1017F0001846C5F8A042059301230094103095F8CF +:10180000A62295F8A412FDF72BFA4FF0FF33C5F886 +:10181000A042C5F8A43239E5C0290020684C002058 +:101820006C290020183D0020A8290020D82900207C +:10183000EC230020DC290020F029002008BB002038 +:10184000EC07002000240D216648147029F0B6F83A +:101850000121654829F0B2F823460A22214663484F +:1018600026F060FD614826F041FD95F83C3243F0DA +:10187000010385F83C32D5F820321B68D3F80831D3 +:101880005B681B68DB68DB067FF5E9AE21460698DE +:10189000FDF75EF9E3E656498A5C9A4288BF85F80F +:1018A000AB3731E5012348460193B5F8FE3A009382 +:1018B000B5F8FC3A95F8F81A1FF054FB36E70133F7 +:1018C000C5F84C3895F852380133DBB23B2B6AD857 +:1018D00085F8523814E7DA68C2F38352032A7FF49A +:1018E000E2AD19690024D5F82C224FF0010BD5F890 +:1018F000283207F5CE5092F80080C1F303221B78FE :10190000C9B20132CDF808B008EB031823460590A0 -:10191000CDE90044CDE906121FF026FF05984FEAF5 +:10191000CDE90044CDE906121FF088FF05984FEA93 :10192000D813DDE9061200932023CDE9014B1FF007 -:101930001BFF08F07F0305980094DDE906121FF0F5 -:1019400099FDB6E5012026F087FFD6F8FC2743F283 -:10195000EC100023518E3844013901F00702C1F325 -:10196000C401FCF7F3FF77E6012026F075FF95F838 -:10197000E831002B3FF483AED5F8DC31002B7FF447 -:101980007EAE18211B4828F0A5FF184826F038FC29 -:10199000DFF864A04FF49673A5F8D831DAF8003078 -:1019A000C5F8DC316DE695F831380022013385F851 -:1019B0003228DBB23B2B0CD995F8303885F831282A -:1019C0000133DBB2172B07D885F8303899E60120B0 -:1019D000BEE685F8313894E685F83028C5F82C281D -:1019E0008FE600BF74290020EC230020A84B0020C4 -:1019F000180F002084290020E8BA002010B5044602 -:101A000026F0F2FB2046BDE8104026F0F9BB00BFEF -:101A100069B170B5054608460C462BF057FA2B689D +:101930007DFF08F07F0305980094DDE906121FF093 +:10194000FFFDB0E5012026F0FBFF95F80832002BE3 +:101950003FF48FAED5F8FC31002B7FF48AAE18210E +:10196000244829F02BF8214826F0C0FCDFF888A095 +:101970004FF49673A5F8F831DAF80030C5F8FC3169 +:1019800079E6012026F0DCFFD6F8FC2743F20C2094 +:101990000023518E3844013901F00702C1F3C4011C +:1019A000FCF7D4FF51E695F851380022013385F851 +:1019B0005228DBB23B2B0CD995F8503885F85128CA +:1019C0000133DBB2172B07D885F8503898E6012091 +:1019D000BDE685F8513893E685F85028C5F84C28BF +:1019E0008EE600BF7C290020EC230020684C0020FC +:1019F000180F00208C29002008BB002010B50446D9 +:101A000026F068FC2046BDE8104026F06FBC00BF01 +:101A100069B170B5054608460C462BF0D7FA2B681D :101A20000246214628465B68BDE87040184770476B -:101A300038B5044649B108460D462BF047FA2368ED +:101A300038B5044649B108460D462BF0C7FA23686D :101A4000024629465B68204698472046BDE8384054 -:101A500026F0D6BB10B500210446154828F03AFF01 -:101A6000144826F0CDFB1421134828F033FF012140 -:101A7000124828F02FFF34B120462BF027FA0146F8 -:101A8000204628F027FF01210C4828F023FF1421CD -:101A90000B4828F01FFF074826F0B2FB002104483E -:101AA00028F018FF0348BDE8104026F0A9BB00BF8E -:101AB000583C0020A84B00201C250020EC230020CF +:101A500026F04CBC10B500210446154828F0AEFF16 +:101A6000144826F043FC1421134828F0A7FF012155 +:101A7000124828F0A3FF34B120462BF0A7FA014604 +:101A8000204628F09BFF01210C4828F097FF1421E5 +:101A90000B4828F093FF074826F028FC0021044853 +:101AA00028F08CFF0348BDE8104026F01FBC00BFA3 +:101AB000183D0020684C00201C250020EC2300204D :101AC00034250020CB0710B5044622D4880712D451 :101AD0004A0735D40B0741D4C80628D48A0646D411 -:101AE0004B0610D50521264828F0F4FE0121254893 -:101AF00028F0F0FE07E00921234828F0EBFE012141 -:101B0000204828F0E7FE2149204626F0B7FC204671 -:101B100010BD05211E4828F0DDFE0121194828F0DE -:101B2000D9FE1A49204626F0A9FC204610BD0921FD -:101B3000184828F0CFFE0121124828F0CBFEE2E73A -:101B40000921154828F0C6FE01210E4828F0C2FEE2 -:101B50000E49204626F092FC204610BD09210F4870 -:101B600028F0B8FE0121074828F0B4FECBE70A218F -:101B70000B4828F0AFFE0121024828F0ABFEC2E777 -:101B8000F4380020EC230020B8380020583C002016 -:101B9000B0380020DC380020C4380020D0380020C5 -:101BA000E8380020803910B504467F2941D8DFE8A5 +:101AE0004B0610D50521264828F068FF012125481E +:101AF00028F064FF07E00921234828F05FFF012157 +:101B0000204828F05BFF2149204626F02BFD204687 +:101B100010BD05211E4828F051FF0121194828F069 +:101B20004DFF1A49204626F01DFD204610BD092113 +:101B3000184828F043FF0121124828F03FFFE2E750 +:101B40000921154828F03AFF01210E4828F036FFF8 +:101B50000E49204626F006FD204610BD09210F48FB +:101B600028F02CFF0121074828F028FFCBE70A21A5 +:101B70000B4828F023FF0121024828F01FFFC2E78D +:101B8000B4390020EC23002078390020183D0020D3 +:101B9000703900209C3900208439002090390020C1 +:101BA000A8390020803910B504467F2941D8DFE8E4 :101BB00001F04540404040404040404040404040AF :101BC000404049404040404040404040404040400C :101BD00040404D40404040404040404040404040F8 @@ -8646,12409 +8646,12409 @@ :101C000040405940404040404040404040404040BB :101C100040405D40404040404040404040404040A7 :101C200040406165696D404071407540797D8140FB -:101C30008589264926F022FC204610BD244926F03D -:101C40001DFCF9E7234926F019FCF5E7224926F0A7 -:101C500015FCF1E7214926F011FCEDE7204926F0BB -:101C60000DFCE9E71F4926F009FCE5E71E4926F0CF -:101C700005FCE1E71D4926F001FCDDE71C4926F0E3 -:101C8000FDFBD9E71B4926F0F9FBD5E71A4926F0F9 -:101C9000F5FBD1E7194926F0F1FBCDE7184926F00D -:101CA000EDFBC9E7174926F0E9FBC5E7164926F021 -:101CB000E5FBC1E7154926F0E1FBBDE7144926F035 -:101CC000DDFBB9E7134926F0D9FBB5E7EC39002075 -:101CD0005039002048390020783900202839002068 -:101CE000383900208C3900206C3900202039002040 -:101CF00098390020B0390020C0390020CC390020AC -:101D0000FC380020043900200C390020183900204C -:101D10005C390020DC3900202DE9F04F002187B02C -:101D20000546544828F0D6FD534826F069FA1C2190 -:101D3000524828F0CFFD504826F062FA1C21504846 -:101D400028F0C8FD4C4826F05BFA1C214B4828F0CF -:101D5000C1FD494826F054FA95F84730002B70D061 +:101C30008589264926F096FC204610BD244926F0C9 +:101C400091FCF9E7234926F08DFCF5E7224926F0BF +:101C500089FCF1E7214926F085FCEDE7204926F0D3 +:101C600081FCE9E71F4926F07DFCE5E71E4926F0E7 +:101C700079FCE1E71D4926F075FCDDE71C4926F0FB +:101C800071FCD9E71B4926F06DFCD5E71A4926F00F +:101C900069FCD1E7194926F065FCCDE7184926F023 +:101CA00061FCC9E7174926F05DFCC5E7164926F037 +:101CB00059FCC1E7154926F055FCBDE7144926F04B +:101CC00051FCB9E7134926F04DFCB5E7AC3A0020CA +:101CD000103A0020083A0020383A0020E839002065 +:101CE000F83900204C3A00202C3A0020E03900203E +:101CF000583A0020703A0020803A00208C3A0020A8 +:101D0000BC390020C4390020CC390020D83900204B +:101D10001C3A00209C3A00202DE9F04F002187B0AA +:101D20000546544828F04AFE534826F0DFFA1C21A5 +:101D3000524828F043FE504826F0D8FA1C2150485B +:101D400028F03CFE4C4826F0D1FA1C214B4828F0E4 +:101D500035FE494826F0CAFA95F84730002B70D076 :101D60000026454FDFF82481DFF82491B3462FE0A9 :101D700001AC49310023294420460593CDE90133C4 -:101D8000CDE903332AF0ECFD011B034601F11802F3 +:101D8000CDE903332AF060FE011B034601F118027E :101D90006A4412F8152C02F0F700702807D0732A55 -:101DA00005D0732220461A702BF090F80146204689 -:101DB00028F090FD00212F48013628F08BFD384691 -:101DC00026F01EFA95F847305FFA86FB5B4538D956 +:101DA00005D0732220461A702BF010F90146204608 +:101DB00028F004FE00212F48013628F0FFFD3846A8 +:101DC00026F094FA95F847305FFA86FB5B4538D9E0 :101DD000CBEBCB0A4FEACB0405EB8A0A9AF84830E2 -:101DE0007BB3BAF85E10384626F0FEF90121404672 -:101DF00028F070FD9AF8613093B9A4EB0B0105EB64 +:101DE0007BB3BAF85E10384626F074FA01214046FB +:101DF00028F0E4FD9AF8613093B9A4EB0B0105EBF0 :101E000081038900B3F85E30012BB1D849316C18D9 -:101E100020462BF05BF80146204628F05BFDC9E721 -:101E20000121484628F056FD9AF86030002BE4D096 -:101E30009AF86130002BE0D00721124828F04AFDC3 -:101E4000DBE71C210D4828F045FD0B4826F0D8F9AA -:101E50000D210D4828F03EFD074826F0D1F91C2140 -:101E6000064828F037FD044807B0BDE8F04F26F0DB -:101E7000C7B900BF583C0020A84B00201C3C0020E4 -:101E80003C3C00206C3C00205C3C0020EC2300200B +:101E100020462BF0DBF80146204628F0CFFDC9E72D +:101E20000121484628F0CAFD9AF86030002BE4D022 +:101E30009AF86130002BE0D00721124828F0BEFD4F +:101E4000DBE71C210D4828F0B9FD0B4826F04EFABF +:101E50000D210D4828F0B2FD074826F047FA1C2155 +:101E6000064828F0ABFD044807B0BDE8F04F26F067 +:101E70003DBA00BF183D0020684C0020DC3C00202B +:101E8000FC3C00202C3D00201C3D0020EC230020C9 :101E9000941C002070B5614D0C216148614C28F004 -:101EA00019FD0121284628F015FD09215E4828F07A -:101EB00011FD204626F0A4F919215C4828F00AFDFE -:101EC000012128465A4E28F005FD9E21204626F085 -:101ED0008BF9204626F094F90721564828F0FAFCA1 -:101EE0000321554828F0F6FC0321544828F0F2FC61 -:101EF000022120469FED470B26F0B4F905215048FA -:101F000028F0E8FC4F49204626F06EF901214E48A2 -:101F100028F0E0FC204626F073F904214B4828F015 -:101F2000D9FC0121284628F0D5FC4FF47A2120461F -:101F300026F05AF90121284628F0CCFC052130462C -:101F400028F0C8FC204626F05BF90721404828F01D -:101F5000C1FC0121284628F0BDFC4FF487612046D2 -:101F600026F042F90121284628F0B4FC052130462C -:101F700028F0B0FC204626F043F90621354828F029 -:101F8000A9FC0121284628F0A5FC00230A2241F2E1 -:101F9000FC71204626F050F90121284628F09AFCD1 -:101FA000052130462C4E28F095FC204626F028F9D5 -:101FB00009212A4828F08EFC0121284628F08AFCB5 -:101FC0000321304628F086FC204626F019F9082126 -:101FD000234828F07FFC0121284628F07BFC0321C0 -:101FE000304628F077FC204626F00AF916211D48D5 -:101FF00028F070FC0121284628F06CFC20460721BF -:1020000026F0F2F82046BDE8704026F0F9B800BF8F +:101EA0008DFD0121284628F089FD09215E4828F092 +:101EB00085FD204626F01AFA19215C4828F07EFD9F +:101EC000012128465A4E28F079FD9E21204626F011 +:101ED00001FA204626F00AFA0721564828F06EFD3E +:101EE0000321554828F06AFD0321544828F066FD77 +:101EF000022120469FED470B26F028FA0521504885 +:101F000028F05CFD4F49204626F0E4F901214E48B7 +:101F100028F054FD204626F0E9F904214B4828F02A +:101F20004DFD0121284628F049FD4FF47A21204635 +:101F300026F0D0F90121284628F040FD0521304641 +:101F400028F03CFD204626F0D1F90721404828F032 +:101F500035FD0121284628F031FD4FF487612046E8 +:101F600026F0B8F90121284628F028FD0521304641 +:101F700028F024FD204626F0B9F90621354828F03E +:101F80001DFD0121284628F019FD00230A2241F2F7 +:101F9000FC71204626F0C6F90121284628F00EFDE6 +:101FA000052130462C4E28F009FD204626F09EF9EA +:101FB00009212A4828F002FD0121284628F0FEFCCC +:101FC0000321304628F0FAFC204626F08FF908213C +:101FD000234828F0F3FC0121284628F0EFFC0321D8 +:101FE000304628F0EBFC204626F080F916211D48EB +:101FF00028F0E4FC0121284628F0E0FC20460721D7 +:1020000026F068F92046BDE8704026F06FB900BFA1 :10201000AFF300800000000000C06240EC2300200D -:10202000F0230020A84B0020002400200C240020D6 +:10202000F0230020684C0020002400200C24002015 :1020300048240020282400203024002034240020BC -:102040003824002080D1F008142B002040240020E8 +:102040003824002080D1F0081C2B002040240020E0 :1020500050240020582400206C24002060240020FC :10206000702400207C2400202DE9F84307464FF41B -:102070007A7026F0F1FB002607F54053DFF8509107 -:10208000494C314683F8146B4846DFF8488128F004 -:1020900021FC2046454D26F0B3F82E21404628F07D -:1020A00019FC204626F0ACF82E21404628F012FC00 -:1020B000204626F0A5F80121284628F00BFC1C211B -:1020C0003B4828F007FC204626F09AF801212846D4 -:1020D00028F000FC2F21374828F0FCFB204626F092 -:1020E0008FF80121284628F0F5FB2221324828F0FC -:1020F000F1FB204626F084F80121284628F0EAFB6F -:1021000014212E4828F0E6FB204626F079F801211C -:10211000284628F0DFFB2721294828F0DBFB204652 -:1021200026F06EF80121284628F0D4FB242125480A -:1021300028F0D0FB204626F063F80121284628F03D -:10214000C9FB2621204828F0C5FB204626F058F878 -:102150002846012128F0BEFB29211C4828F0BAFBA3 -:10216000204626F04DF82E21404628F0B3FB2046AD -:1021700026F046F82E21404628F0ACFB204626F0FB -:102180003FF83146484628F0A5FB204626F038F8AF -:102190003846FFF77FFE3146484628F09BFB204635 -:1021A000BDE8F84326F02CB8A84B0020EC23002013 +:102070007A7026F065FC002607F54053DFF8509192 +:10208000494C314683F8346B4846DFF8488128F0E4 +:1020900095FC2046454D26F029F92E21404628F092 +:1020A0008DFC204626F022F92E21404628F086FCA1 +:1020B000204626F01BF90121284628F07FFC1C2130 +:1020C0003B4828F07BFC204626F010F901212846E9 +:1020D00028F074FC2F21374828F070FC204626F0A9 +:1020E00005F90121284628F069FC2221324828F010 +:1020F00065FC204626F0FAF80121284628F05EFC0F +:1021000014212E4828F05AFC204626F0EFF8012131 +:10211000284628F053FC2721294828F04FFC204668 +:1021200026F0E4F80121284628F048FC242125481F +:1021300028F044FC204626F0D9F80121284628F052 +:102140003DFC2621204828F039FC204626F0CEF818 +:102150002846012128F032FC29211C4828F02EFCB9 +:10216000204626F0C3F82E21404628F027FC2046C2 +:1021700026F0BCF82E21404628F020FC204626F010 +:10218000B5F83146484628F019FC204626F0AEF84E +:102190003846FFF77FFE3146484628F00FFC2046C0 +:1021A000BDE8F84326F0A2B8684C0020EC230020DC :1021B000BC1A0020DC1A00200C1B0020301B002061 :1021C000481B0020701B0020981B0020C01B002013 -:1021D000583C0020582700202DE9F0411B4C8CB0C2 -:1021E0001827064600F5405528F058FA002895F8BB -:1021F000143B18DD13F001082AD128F0F9F9C3B215 +:1021D000183D0020602700202DE9F0411B4C8CB0F9 +:1021E0001827064600F5405528F0CCFA002895F847 +:1021F000343B18DD13F001082AD128F06DFAC3B280 :102200000A2B15D02278511C3032C9B26A441829E1 -:1022100002F81C3C94BF2170277028F03FFA002878 -:1022200095F8143BE6DCD90712D40CB0BDE8F08178 -:10223000227895F8143B303284F8008043F0010393 -:102240006A4485F8143B02F81C8CCDE77FBC002063 -:1022500023F001039DF8142085F8143B002A00F0B8 -:102260000482B64A05AC059B934200F0E482B4496F -:10227000059A8A4200F0E482B2490598884200F04B -:10228000B482B1480599814200F0DC83AF48059FD4 -:10229000874200F0EF83AE4FDDF814E0BE4500F05A -:1022A0006783AC4FBB4200F01384AB4FDDF814C022 -:1022B000BC4500F02684A94FB94200F07384A849B8 -:1022C0008B4200F0A784A74B9E4500F01185A64BDA -:1022D0009E4500F02785A54B9C4500F06C85A44BDE -:1022E0009C4500F05485A34B9A4201F08181A2499C -:1022F00020462AF09FFB002801F062819F4920467A -:102300002AF098FB002801F0AA819D4920462AF076 -:1023100091FB002801F03C819A4920462AF08AFB73 -:10232000002801F01381984920462AF083FB0028F9 -:1023300001F0DE80954920462AF07CFB0546002806 -:1023400001F0A080924920462AF074FB054600283F -:1023500001F039808F4920462AF06CFB002801F0FB -:1023600015808D4920462AF065FB0546002800F0BF -:102370007F858A4920462AF05DFB002840F02A85A7 -:102380002046FFF767FB86498648FFF741FB8649F1 -:102390008448FFF73DFB00230A2243F6A0618148F1 -:1023A00025F04AFF80497F48FFF732FB7F497D488F -:1023B000FFF73EFB7E497B48FFF73AFB7D497948B2 -:1023C000FFF726FB78497748FFF722FB00230A2214 -:1023D0004FF49551734825F02FFF73497148FFF76B -:1023E00017FB72496F48FFF723FB73496D48FFF7EE -:1023F0000FFB6D496B48FFF70BFB00230A224FF4DC -:102400000261684825F018FF67496648FFF700FB3E -:1024100066496448FFF70CFB68496248FFF7F8FA21 -:1024200061496048FFF7F4FA00230A2240F2E441D0 -:102430005C4825F001FF5C495A48FFF7E9FA5B491F -:102440005848FFF7F5FA5E495648FFF7E1FA564952 -:102450005448FFF7DDFA00230A225421514825F0A1 -:10246000EBFE51494F48FFF7D3FA50494D48FFF76B -:10247000DFFA54494B48FFF7CBFA4B494948FFF77D -:10248000C7FA00230A221821464825F0D5FE4649FE -:102490004448FFF7BDFA45494248FFF7C9FA4A499F -:1024A0004048FFF7B5FA40493E48FFF7B1FA00232C -:1024B0000A2220213B4825F0BFFE3B493948FFF75F -:1024C000A7FA3A493748FFF7B3FA40493548FFF7CA -:1024D0009FFA35493348FFF79BFA00230A220C2163 -:1024E000304825F0A9FE30492E48FFF791FA2F49D0 -:1024F0002C48FFF79DFA36492A48FFF789FA2A49FE -:102500002848FFF785FA00230A222421254825F0D0 -:1025100093FE25492348FFF77BFA2E492148FFF710 -:1025200077FA21491F48FFF773FA00230A22D821BE -:102530001C4825F081FE1C494EE000BF68656C70A8 +:1022100002F81C3C94BF2170277028F0B3FA002804 +:1022200095F8343BE6DCD90712D40CB0BDE8F08158 +:10223000227895F8343B303284F8008043F0010373 +:102240006A4485F8343B02F81C8CCDE79FBC002023 +:1022500023F001039DF8142085F8343B002A00F098 +:102260001682B64A05AC059B934200F00483B4493C +:10227000059A8A4200F04E83B2490598884200F0E0 +:10228000D482B1480599814200F0FC83AF48059F94 +:10229000874200F00A84AE4FDDF814E0BE4500F03E +:1022A0008783AC4FBB4200F02E84AB4FDDF814C0E7 +:1022B000BC4500F04184A94FB94200F08E84A84982 +:1022C0008B4200F0C584A74B9E4500F02F85A64B9E +:1022D0009E4500F04585A54B9C4500F08A85A44BA2 +:1022E0009C4500F07285A34B9A4201F0C481A2493B +:1022F00020462AF00FFC002801F0A5819F492046C6 +:102300002AF008FC002801F0ED819D4920462AF0C2 +:1023100001FC002801F07F819A4920462AF0FAFB4F +:10232000002801F05681984920462AF0F3FB002846 +:1023300001F03281954920462AF0ECFB002801F09B +:102340002381934920462AF0E5FB002801F0EE8026 +:10235000904920462AF0DEFB0546002801F0B080B7 +:102360008D4920462AF0D6FB0546002801F0498019 +:102370008A4920462AF0CEFB002801F025808849B2 +:1023800020462AF0C7FB0546002800F08F858549C6 +:1023900020462AF0BFFB0546002840F0398520463C +:1023A000FFF758FB80498148FFF732FB80497F489F +:1023B000FFF72EFB2B460A224FF47B517B4825F07A +:1023C000B1FF7B497948FFF723FB7A497748FFF74C +:1023D0002FFB79497548FFF72BFB78497348FFF7C6 +:1023E00017FB73497148FFF713FB2B460A224FF482 +:1023F00096516E4825F096FF6D496C48FFF708FB33 +:102400006C496A48FFF714FB6D496848FFF700FB09 +:1024100067496648FFF7FCFA2B460A224FF402612F +:10242000624825F07FFF62496048FFF7F1FA614991 +:102430005E48FFF7FDFA63495C48FFF7E9FA5C493B +:102440005A48FFF7E5FA2B460A2240F2E441574882 +:1024500025F068FF56495548FFF7DAFA55495348C1 +:10246000FFF7E6FA58495148FFF7D2FA50494F486A +:10247000FFF7CEFA2B460A2254214C4825F052FF92 +:102480004B494A48FFF7C4FA4A494848FFF7D0FA8F +:102490004E494648FFF7BCFA45494448FFF7B8FAA9 +:1024A0002B460A221821414825F03CFF40493F486D +:1024B000FFF7AEFA3F493D48FFF7BAFA44493B48B7 +:1024C000FFF7A6FA3A493948FFF7A2FA2B460A2243 +:1024D0002021364825F026FF35493448FFF798FA81 +:1024E00034493248FFF7A4FA3A493048FFF790FAE6 +:1024F0002F492E48FFF78CFA2B460A220C212B4835 +:1025000025F010FF2A492948FFF782FA2949274870 +:10251000FFF78EFA30492548FFF77AFA2449234815 +:10252000FFF776FA2B460A222421204825F0FAFEEE +:102530001F491E48FFF76CFA284951E068656C7026 :102540006661734366617344666C757373746F720E :1025500072756E54706F747373746F70626F6172A2 :1025600073796E63627574746D6574726E65787478 -:10257000707265766D696469BC310020C4310020D9 -:10258000D0310020D8310020E83100203432002042 -:102590005032002088320020BC3200203C35002020 -:1025A00044350020A84B0020EC230020EC32002012 -:1025B000583C002050350020603500207435002044 -:1025C000883500209C350020B8350020CC3500200F -:1025D000DC350020F0350020C048FFF719FAC0496B -:1025E000BE48FFF725FABF49BC48FFF711FABE49BC -:1025F000BA48FFF70DFA00230A22C421B74825F094 -:102600001BFEB949B548FFF703FAB849B348FFF7CD -:102610000FFAB749B148FFF7FBF9B349AF48FFF7E5 -:10262000F7F900230A221821AC4825F005FEAE492F -:10263000AA48FFF7EDF9AF49A848FFF7E9F9AA4919 -:10264000A648FFF7E5F900230A227821A34825F0E0 -:10265000F3FDA549A148FFF7DBF9A1499F48FFF722 -:10266000E7F92046FFF7F6F9DFE505ACA24B93E862 -:102670000300034620468DF818100593FFF7EAF98A -:102680001E219E4828F026F9944825F0B9FD002126 -:102690009B4828F01FF9914825F0B2FD4A2199483E -:1026A00028F018F98D4825F0ABFD2C21964828F02C -:1026B00011F98A4825F0A4FD1E21944828F00AF952 -:1026C000864825F09DFD1821914828F003F983489C -:1026D00025F096FD21218F4828F0FCF87F4825F051 -:1026E0008FFD38218C4828F0F5F87C4825F088FDCE -:1026F0002B218A4828F0EEF8784825F081FD372113 -:10270000874828F0E7F8754825F07AFD3B21854891 -:1027100028F0E0F8714825F073FD4321824828F045 -:10272000D9F86E4825F06CFD6021804828F0D2F879 -:102730006A4825F065FD6F217D4828F0CBF8674891 -:1027400025F05EFD1C217B4828F0C4F8634825F085 -:1027500057FD2021784828F0BDF8604825F050FD4D -:102760002F21764828F0B6F85C4825F049FD47212E -:10277000734828F0AFF8594825F042FD48217148C8 -:1027800028F0A8F8554825F03BFD5B216E4828F05D -:10279000A1F8524825F034FD5D216C4828F09AF8E4 -:1027A0004E4825F02DFD2D21694828F093F84B481F -:1027B00025F026FD3121674828F08CF8474825F0A0 -:1027C0001FFD2421644828F085F8444825F018FDB1 -:1027D0001B21624828F07EF8404825F011FD204674 -:1027E000FFF738F90CB0BDE8F0815D4906988842E2 -:1027F0007FF447AD9DF81C1000297FF442AD2046C0 -:1028000006F58056FFF726F90A21564828F062F8A7 -:102810000121354828F05EF8B6F860382F4883F477 -:102820008073C3F30021A6F8603825F0DDFC2B4847 -:1028300025F0E6FC15E72279002A3FF417AF16E5EC -:102840004949069888427FF417AD01F11F61079846 -:1028500001F5302101F2F45188427FF40DADBDF84D -:1028600020106E297FF408AD20460027FFF7F2F80C -:1028700095F87333DA077FF5F4AE13213B4828F05F -:1028800029F8164825F0BCFC4FF40073A5F87073C6 -:10289000A5F87433022385F8777385F8733343F210 -:1028A000A04385F87873A5F8987485F89A74C5F8EC -:1028B0008073C5F88873C5F89C749F55D5F8543358 -:1028C00085F8A374D3F80431C5F8A874D3F8C830D8 -:1028D000002B3FF4C6AE38469847C2E6A84B00200E -:1028E000F835002004360020EC230020EC320020D4 -:1028F00018360020F0350020142A00201C2A002061 -:10290000583C00203C2A0020882A0020B82A0020B9 -:10291000D82A0020F42A0020182B0020542B002055 -:10292000802B0020B82B0020F42B0020382C002016 -:102930009C2C00200C2D00202C2D0020502D002040 -:10294000802D0020C82D0020142E0020702E002085 -:10295000D02E0020002F0020342F00205C2F0020DC -:1029600065627567A82F00206F6E6E65882F002046 -:10297000984F6068B8427FF494AC2046FFF76AF83D -:102980000821954827F0A6FF0121944827F0A2FFCF -:10299000934900230A220968924825F04DFC91488A -:1029A00025F02EFC00230A22D5F820188D4825F0AA -:1029B00043FC0121894827F08DFF07218A4827F031 -:1029C00089FF884825F01CFCD5F82028874900237A -:1029D0008448A1FB021251090A2225F02DFC012195 -:1029E0007E4827F077FF0721814827F073FF7D4855 -:1029F00025F006FCD5F820287E4900237948A1FB64 -:102A00000212D10A0A2225F017FC0121734827F08F -:102A100061FF0521784827F05DFF724825F0F0FB43 -:102A2000D5F82018754800230A22A0FB01016D4843 -:102A3000090C25F001FC0121684827F04BFF042117 -:102A40006F48C7E6A08868287FF420AC06F50056DA -:102A50002046FEF7FFFFD6F8F8020368DB689847C8 -:102A6000D6F808040368DB6898472046FEF7F2FFB3 -:102A7000FFF7DBBB00F15240069FA0F52020A0F637 -:102A8000125087427FF407AC00F10C50079F00F50D -:102A90007F2000F6043087427FF4FDAB9DF82000D4 -:102AA00000287FF4F8AB204606F58056FEF7D2FFEB -:102AB0000E21544827F00EFF0121484827F00AFF55 -:102AC000B6F86038474883F0010303F00101AAE635 -:102AD0002779002F7FF4E9AB204606F58056FEF7F4 -:102AE000B9FF0A21484827F0F5FE01213B4827F0AD -:102AF000F1FEB6F860383B4883F40073C3F340211D -:102B000091E607F17347069807F1041707F56D473B -:102B1000B8427FF4D0ABBDF81C70682F7FF4CBAB0C -:102B20002046FEF797FF95F82438002B49D0D5F8BA -:102B30002838002B40F0D28034492A48FEF778FF2D -:102B400000230A2295F83018264825F075FB01214C -:102B5000224827F0BFFE0521274827F0BBFE214869 -:102B600025F04EFB00230A2295F831181D4825F068 -:102B700063FB0121194827F0ADFE07211C4827F00F -:102B8000A9FE184825F03CFB00230A2295F83218CC -:102B9000144825F051FB0121104827F09BFE072126 -:102BA000114817E6A18864297FF489AB2046FEF717 -:102BB00051FF3046FFF76EF92046FEF74BFFFFF757 -:102BC00034BB1221124827F085FE064825F018FB79 -:102BD000B6E700BF696D6500E42F0020EC230020FC -:102BE000E8BA0020A84B0020F02F002089888888B0 -:102BF000F82F0020C5B3A2910030002007452EC257 -:102C000008300020CC2F0020183000204430002055 -:102C1000303000202779002F7FF455AB2046FEF797 -:102C200019FF39467C4827F055FE7C4825F0E8FA24 -:102C30002E217B4827F04EFE784825F0E1FA2E2120 -:102C4000774827F047FE754825F0DAFA01217548E4 -:102C500027F040FE0D21744827F03CFE6F4825F018 -:102C6000CFFA01216F4827F035FE06216F4827F083 -:102C700031FE6A4825F0C4FA01216A4827F02AFE8D -:102C800011216B4827F026FE644825F0B9FA01218E -:102C9000644827F01FFE0821664827F01BFE5F48A6 -:102CA00025F0AEFA01215F4827F014FE0C2162489E -:102CB00027F010FE594825F0A3FA2E21584827F096 -:102CC00009FE564825F09CFA2E21554827F002FEB1 -:102CD000524825F095FA39464F487BE5D5F82C281F -:102CE00093423FF629AF55494C48FEF7A1FE27E72E -:102CF000534B616899427FF4EAAA204606F5805654 -:102D0000FEF7A8FE0D214F4827F0E4FD01214548BC -:102D100027F0E0FDB6F86038404883F08003C3F345 -:102D2000C01180E5484B616899427FF4D4AA06F54A -:102D300080562046FEF78EFE0721B6F860384348DD -:102D400083F00203A6F860385D1027F0C3FD01216F -:102D500034480D4027F0BEFD3048294625F044FA9E -:102D60002E4825F04DFA002D3FF47BAC38492B4816 -:102D7000FEF75EFE37492948FEF75AFE36492748D6 -:102D8000FEF756FE35492548FEF752FE69E403F189 -:102D90006F43069903F59F1303F6DC6399427FF4B2 -:102DA000A2AABDF81C30722B7FF49DAA304610F009 -:102DB000E9FBFFF73ABA2A4B069999427FF48FAAAA -:102DC000BDF81C30722B7FF48AAA304610F0EAFB63 -:102DD000FFF72BBA10491148FEF72AFE0F48214988 -:102DE000FEF726FE21460D48FEF712FE0D490B4860 -:102DF000FEF70EFE1C490948FEF71AFE1B4907485C -:102E0000FEF716FE17490548FEF712FE0249034871 -:102E1000FEF70EFEFFF709BA583C0020A84B002031 -:102E200058270020EC230020A4270020B4270020EE -:102E3000BC270020D0270020DC27002058300020AD -:102E40006F6E73007C300020696373008C3000204B -:102E500094300020BC300020E030002044310020BD -:102E60004C617965303600205C36002074360020D5 -:102E70002046FEF7EFFDB349B348FEF7C9FDB3495D -:102E8000B148FEF7C5FD7188AF4825F0ADF9AF49EF -:102E9000AD48FEF7BDFDAE49AB48FEF7B9FD2B4688 -:102EA00010227188A84825F0C7F9AA49A648FEF75C -:102EB000BFFDA949A448FEF7ABFDA449A248FEF70F -:102EC000A7FD3188A04825F08FF9A0499E48FEF75C -:102ED0009FFD9F499C48FEF79BFD2B4610223188A1 -:102EE000994825F0A9F99B499748FEF7A1FD9B4910 -:102EF0009548FEF79DFD9A499348FEF789FD934951 -:102F00009148FEF785FD2B460A2241F2FC718E485E -:102F100025F092F98D498C48FEF77AFD91498A484F -:102F2000FEF786FD90498848FEF772FD874986487E -:102F3000FEF76EFD2B460A2241F25C51824825F0D5 -:102F40007BF982498048FEF763FD86497E48FEF79B -:102F50006FFD86497C48FEF75BFD7C497A48FEF7A9 -:102F600057FD2B460A223421774825F065F9774929 -:102F70007548FEF74DFD7B497348FEF759FD7C49C6 -:102F80007148FEF745FD71496F48FEF741FD2B463C -:102F90000A224FF420716C4825F04EF96B496A48BB -:102FA000FEF736FD6F496848FEF742FD71496648F5 -:102FB000FEF72EFD65496448FEF72AFD0A222B46DE -:102FC0006148114625F038F960495F48FEF720FD59 -:102FD00064495D48FEF72CFD67495B48FEF718FD24 -:102FE0005A495948FEF714FD2B460A220521564836 -:102FF00025F022F955495448FEF70AFD594952482F -:10300000FEF716FD5D495048FEF702FD4F494E4858 -:10301000FEF7FEFC2B460A2248214B4825F00CF90E -:103020004A494948FEF7F4FC4E494748FEF700FD7F -:1030300053494548FEF7ECFC44494348FEF7E8FC99 -:103040002B460A221221404825F0F6F83F493E4817 -:10305000FEF7DEFC43493C48FEF7EAFC49493A48A2 -:10306000FEF7D6FC39493848FEF7D2FC2B460A2237 -:103070001021354825F0E0F834493348FEF7C8FC04 -:1030800038493148FEF7D4FC3F492F48FEF7C0FCD1 -:103090002E492D48FEF7BCFC2B460A2204212A4863 -:1030A00025F0CAF829492848FEF7B2FC2D492648E0 -:1030B000FEF7BEFC35492448FEF7AAFC2349224806 -:1030C000FEF7A6FC2B460A2210211F4825F0B4F873 -:1030D0001E491D48FEF79CFC22491B48FEF7A8FC30 -:1030E0002B491948FEF794FC18491748FEF790FC45 -:1030F0002B460A220421144825F09EF81349124851 -:10310000FEF786FC17491048FEF792FC21490E484D -:10311000FEF77EFC0D490C48FEF77AFC2B460A228E -:103120000621094825F088F808490748FEF770FC91 -:103130000C490548FEF77CFC17490348FEF768FC7C -:103140002CE000BFC4320020A84B0020EC2300205C -:1031500084320020D4320020E0320020583C00208D -:10316000BC320020EC320020F43200200433002076 -:103170001C330020343300204C33002068330020FF -:1031800084330020A0330020B8330020D433002043 -:10319000F03300200C34002024340020A349A4483C -:1031A000FEF736FC2B460A220321A14825F044F8FD -:1031B0009E499F48FEF72CFC9E499D48FEF738FC2F -:1031C0009D499B48FEF724FC98499948FEF720FC4E -:1031D0002B460A221A21964825F02EF89349944846 -:1031E000FEF716FC93499248FEF722FC934990485B -:1031F000FEF70EFC8D498E48FEF70AFC2B460A228C -:103200000D218B4825F018F888498948FEF700FC05 -:1032100088498748FEF70CFC89498548FEF7F8FB8A -:1032200082498348FEF7F4FB2B460A22012180489D -:1032300025F002F87D497E48FEF7EAFB7D497C488F -:10324000FEF7F6FB7F497A48FEF7E2FB77497848BC -:10325000FEF7DEFB2B460A220F21754824F0ECFF17 -:1032600072497348FEF7D4FB72497148FEF7E0FBE0 -:1032700075496F48FEF7CCFB6C496D48FEF7C8FBFB -:103280002B460A2203216A4824F0D6FF6749684882 -:10329000FEF7BEFB67496648FEF7CAFB6B49644808 -:1032A000FEF7C6FB6A496248FEF7B2FB5F49604819 -:1032B000FEF7AEFB2B460A2240F299215C4824F02F -:1032C000BBFF5A495A48FEF7A3FB5A495848FEF734 -:1032D000AFFB60495648FEF79BFB54495448FEF744 -:1032E00097FB2B460A228521514824F0A5FF4F4920 -:1032F0004F48FEF78DFB4F494D48FEF799FB564965 -:103300004B48FEF785FB49494948FEF781FB2B46B0 -:103310000A224E21464824F08FFF44494448FEF7D4 -:1033200077FB44494248FEF783FB4C494048FEF78F -:103330006FFB3E493E48FEF76BFB2B460A220D21F0 -:103340003B4824F079FF39493948FEF761FB394998 -:103350003748FEF76DFB42493548FEF759FB3349C4 -:103360003348FEF755FB2B460A220121304824F052 -:1033700063FF2E492E48FEF74BFB2E492C48FEF7E3 -:1033800057FB2046FEF766FBFEF74FBF2046FEF7D1 -:1033900061FB34492648FEF74BFB2C492448FEF7D5 -:1033A00047FB31492248FEF743FB28492048FEF7F6 -:1033B0003FFB2E491E48FEF73BFB24491C48FEF705 -:1033C00037FBFFF74EB92046FEF744FB2849184863 -:1033D000FEF71EFB15491648FEF71AFB254914484F -:1033E000FEF726FB24491248FEF712FB0F4910484E -:1033F000FEF70EFB21490E4824F0F6FE0B490C485F -:10340000FEF706FB1E490A48FEF702FB2B46102278 -:103410001A49074824F010FF0C490548FEF708FB3D -:1034200042F69C403044FEF777FCC6E7EC230020D0 -:10343000A84B0020EC3200204034002058340020FB -:103440007034002094340020A8340020583C002020 -:10345000C0340020D0340020E0340020F8340020B4 -:1034600014350020903200209C320020AC32002025 -:1034700058320020002400206C3200207D7D7D0029 -:1034800084320020204606F50056FEF7E3FA9949FB -:103490009948FEF7BDFA99499748FEF7B9FAB6F888 -:1034A000B81C954824F0A0FE94499348FEF7B0FA62 -:1034B00093499148FEF7BCFA92498F48FEF7A8FA63 -:1034C0008E498D48FEF7A4FA2B460A2241F2FC7180 -:1034D000894824F0B1FE89498748FEF799FA8A495C -:1034E0008548FEF7A5FA2046FEF7B4FAFEF79DBE22 -:1034F0002046FEF7AFFA85497F48FEF789FA7F49F3 -:103500007D48FEF785FA82497B48FEF791FA8149AA -:103510007948FEF77DFA222027F0C6F971887648AF -:10352000090A24F061FE7C497348FEF771FAB1780C -:10353000714824F059FE222027F0B6F96E4824F095 -:103540005FFE2046FEF786FAFEF76FBE204606F5C0 -:103550008056FEF77FFA71496748FEF759FA6749C6 -:103560006548FEF755FAB6F860389A06C3F340117D -:1035700040F18D8083F04003C3F380115E48A6F8CC -:103580006038FEF73BFA2046FEF764FAFEF74DBEC0 -:10359000204606F58056FEF75DFA61495648FEF76B -:1035A00037FA56495448FEF733FAB6F8603883F0D4 -:1035B00020039806C3F3401158BF23F04003DDE712 -:1035C000204606F58056FEF745FA56494A48FEF76A -:1035D0001FFA4A494848FEF71BFAB6F8603883F0EC -:1035E00008031F07C3F3C00158BF23F01003C5E74A -:1035F00003F17A43069A03F5302303F2D6239A4265 -:103600007EF475AE03F13F73079A03F5373303F584 -:1036100094739A427EF46BAEBDF820306F2B7EF42B -:1036200066AE2046FEF716FA95F89431DB0732D5E0 -:103630003D493148FEF7FCF93C492F48FEF7E8F9CF -:103640002E492D48FEF7E4F9D5F888312A48198823 -:10365000FEF7D4F92046FEF7FDF9FEF7E6BD204659 -:1036600006F58056FEF7F6F931492348FEF7D0F902 -:1036700022492148FEF7CCF9B6F860381D07C3F39C -:10368000C00128D583F01003C3F3001176E723F0BF -:1036900040039BB272E727491748FEF7B9F917496B -:1036A0001548FEF7B5F906F5005306F5805693F870 -:1036B000EE1293F9EE32002B11DB01A8FEF702FAAD -:1036C00001A90D4824F06AFD0B4824F099FD01A8DA -:1036D00024F098FEB0E723F010039BB24EE7D6F833 -:1036E000C83A01F00F011B6803EB410393F8F91E80 -:1036F000E3E700BF3C320020A84B0020EC23002071 -:10370000483200205824002048240020F0310020B6 -:10371000043200200C320020B8300020D8310020C4 -:10372000D0310020BC310020A03100200019002041 -:10373000C4310020A831002084B000F58050F0B5DD -:1037400085B00BAC84E80E00B0F860381E0740F17D -:103750008F809DF82D50002D00F08A80EF2D00F213 -:103760008C80F02D00F26782E02D00F0D982B04904 -:1037700000230A22AF4809686E4624F05DFD01214E -:10378000AD4827F0A7F89DF82C30DA0700F18A83BE -:103790009F0700F1AF835C0700F1D983180700F1A0 -:1037A000F983D90600F114849A0600F126845B0699 -:1037B00030464CBFA149A24924F060FE31469D48E5 -:1037C00024F0ECFC304624F01DFE01219A4827F03D -:1037D00081F808219B4827F07DF80121964827F0C1 -:1037E00079F829463046FEF7DDF93146914824F054 -:1037F000D5FC304624F006FE01218F4827F06AF8F8 -:103800000821914827F066F801218B4827F062F8DB -:1038100000230A229DF82E10864824F00DFD012178 -:10382000854827F057F80621884827F053F80121EA -:10383000814827F04FF800230A229DF82F107D4879 -:1038400024F0FAFC01217C4827F044F80621804846 -:1038500027F040F80121784827F03CF800230A229D -:103860009DF83010734824F0E7FC724824F0C8FC3F -:1038700005B0BDE8F04004B07047F82D3BD1DD063F -:10388000F6D56B4900230A226A4809686E4624F07F -:10389000D3FC0121684827F01DF89DF82C30DC0787 -:1038A00000F10F82980700F1CB82590700F1E18205 -:1038B0001A0700F10683DF0600F130839D0600F150 -:1038C0005A835C0630464CBF5C495D4924F0D6FD06 -:1038D0003146584824F062FC304624F093FD012123 -:1038E000554826F0F7FF0E215A4826F0F3FF5148BD -:1038F00024F086FCBCE7A5F1F0020E2A3FF631AFBA -:1039000001A151F822F000BFB9550000D7530000C3 -:10391000D7530000D7530000D7530000D7530000FF -:10392000D7530000D7530000D7530000D7530000EF -:103930004F570000C357000037580000D75300000E -:10394000D55600003A4900230A223A4809686E46D3 -:1039500024F072FC0121384826F0BCFF9DF82C3081 -:10396000DF0700F1BD819D0700F16F82580700F16C -:103970009482190700F1AF82DA0600F1E3829F0614 -:1039800000F103835D0630464CBF2C492C4924F0DE -:1039900075FD3146274824F001FC304624F032FD05 -:1039A0000121254826F096FF0821264826F092FF9F -:1039B0000121214826F08EFF3046F021FEF7F2F873 -:1039C00031461C4824F0EAFB1A4824F019FC304622 -:1039D00024F018FDBDF82F5007211F4826F07AFF6C -:1039E000294600231022134824F026FC01211B48FD -:1039F00026F070FFA5B1013D0DF1310304340E4FE7 -:103A000013FA85F50B4E0121384626F063FF14F8B2 -:103A1000011F00231022304624F00EFCAC42F2D1EC -:103A20000021074826F056FF024824F0E9FB1FE773 -:103A3000E8BA0020A84B0020EC230020741C0020D2 -:103A4000583C0020BC1C0020E01C0020D01C0020A2 -:103A5000D81C0020781C0020C81C0020142B00203B -:103A6000DB067FF505AFA34900230A22A2480968B7 -:103A70006E4624F0E1FB0121A04826F02BFF9DF8C3 -:103A80002C30DF0700F118829D0700F142825C07AD -:103A900000F16C82180700F19182D90600F1A3822F -:103AA0009A0600F1B5825B0630464CBF94499549B1 -:103AB00024F0E4FC3146904824F070FB304624F0BA -:103AC000A1FC01218D4826F005FF0C218E4826F02F -:103AD00001FF894824F094FBCAE6864900230A22A4 -:103AE000854809686E4624F0A7FB0121834826F02B -:103AF000F1FE9DF82C30D80700F1ED80990700F118 -:103B0000B3815A0700F1C4811F0700F1EE81DD0681 -:103B100000F109829C0600F14282580630464CBFF3 -:103B20007749784924F0AAFC3146734824F036FBE3 -:103B3000304624F067FC0121704826F0CBFE0D21B1 -:103B4000724826F0C7FE6C4824F05AFB90E669499B -:103B500000230A22684809686E4624F06DFB0121A3 -:103B6000664826F0B7FE9DF82C30D90700F1AE80EC -:103B70009A0700F174815F0700F180811D0700F151 -:103B8000A581DC0600F1D481980600F10D8259066A -:103B900030464CBF5A495B4924F070FC31465648C8 -:103BA00024F0FCFA304624F02DFC0121534826F085 -:103BB00091FE1021564826F08DFE4F4824F020FB40 -:103BC00056E64C4900230A224B4809686E4624F009 -:103BD00033FB0121494826F07DFE9DF82C30DA07A1 -:103BE00000F183809F0700F135815D0700F14B8173 -:103BF0001C0700F17581D80600F19F81990600F13C -:103C0000BF815A0630464CBF3D493E4924F036FC40 -:103C10003146394824F0C2FA304624F0F3FB012142 -:103C2000364826F057FE0C213A4826F053FE32481B -:103C300024F0E6FA1CE62F4900230A222E480968E0 -:103C40006E4624F0F9FA01212C4826F043FE9DF837 -:103C50002C30DC0700F12B81980700F155815907C2 -:103C600000F17F811A0700F1A481DF0600F1C08115 -:103C70009C0600F1C881580630464CBF20492149B6 -:103C800024F0FCFB31461C4824F088FA304624F02E -:103C9000B9FB0121194826F01DFE08211E4826F017 -:103CA00019FE0121154826F015FE29463046FDF77C -:103CB00079FF3146104824F071FA304624F0A2FB17 -:103CC000ADE51649304624F0D9FB01E613493046EC -:103CD00024F0D4FB62E71149304624F0CFFB23E700 -:103CE0000E49304624F0CAFB53E60C49304624F016 -:103CF000C5FB8DE7E8BA0020A84B0020EC2300208C -:103D0000741C0020583C00205C390020881C0020D6 -:103D1000981C0020AC1C0020BC1C0020441C00206F -:103D20009DF8305041F6FF719DF82F706E46EA0104 -:103D3000BA4B07F07F0002F47E520243B848C2EB50 -:103D400082321144A3FB0123B64AC91A03EB510482 -:103D5000002311680A2224F06FFA0121B248640B93 -:103D600026F0B8FD9DF82C30A4F50054D90700F1D9 -:103D7000C6809A0700F1F080580700F124811907E6 -:103D800000F12C81DA0600F16781980600F1698163 -:103D9000590630464CBFA549A54924F06FFB314672 -:103DA0009F4824F0FBF9304624F02CFB01219E486B -:103DB00026F090FD08219F4826F08CFD01219A48AD -:103DC00026F088FD9C49304624F058FB3146944843 -:103DD00024F0E4F9304624F015FB0121924826F046 -:103DE00079FD00230A229DF82E108D4824F024FA34 -:103DF00001218D4826F06EFD00230A2239468848AD -:103E000024F01AFA0121884826F064FD00230A22D2 -:103E10002946834824F010FA0121834826F05AFDF0 -:103E20000321864826F056FD01217F4826F052FDE9 -:103E300021467B4824F0D8F9794824F0E1F917E5C8 -:103E40007F49304624F01AFB42E57D49304624F094 -:103E500015FB9EE57A49304624F010FBD8E67849F8 -:103E6000304624F00BFB99E67549304624F006FBFA -:103E70005AE67449304624F001FB29E57149304681 -:103E800024F0FCFA8AE66F49304624F0F7FABFE6E0 -:103E90006C49304624F0F2FA46E66A49304624F08E -:103EA000EDFA76E56849304624F0E8FA86E466499A -:103EB000304624F0E3FAE5E66349304624F0DEFAC2 -:103EC000F8E56249304624F0D9FA01E55F49304609 -:103ED00024F0D4FA62E65D49304624F0CFFA58E582 -:103EE0005A49304624F0CAFA92E65849304624F03E -:103EF000C5FA19E65249304624F0C0FA5EE4524948 -:103F0000304624F0BBFA4AE74D49304624F0B6FA71 -:103F1000B8E64B49304624F0B1FACBE54C4930467F -:103F200024F0ACFAD4E44A49304624F0A7FAFBE581 -:103F30004749304624F0A2FA30E64549304624F09D -:103F40009DFA65E64249304624F098FA21E53D495C -:103F5000304624F093FA31E43949304624F08EFAA1 -:103F60001DE73849304624F089FA8BE6354930465A -:103F700024F084FA9EE53749304624F07FFAA7E41E -:103F80003449304624F07AFA42E63249304624F089 -:103F900075FAFEE42D49304624F070FA0EE42D49FE -:103FA000304624F06BFABFE52A49304624F066FA21 -:103FB000F4E52649304624F061FA63E623493046A9 -:103FC00024F05CFA76E51F49304624F057FAE6E61D -:103FD0001F49304624F052FAFFF7F0BB1B49304628 -:103FE00024F04CFADBE61A49304624F047FA61E542 -:103FF0001749304624F042FA44E61649304624F088 -:104000003DFAFFF7DBBB1349304624F037FA39E6B7 -:104010001049304624F032FA4CE500BF110004008C -:10402000A84B0020E8BA0020EC230020741C0020DC -:10403000583C0020BC1C00206C390020D0290020F6 -:10404000481C0020501C0020441C0020581C00204C -:10405000601C0020681C00200449304624F00EFA41 -:104060009DE60349304624F009FA98E6601C0020DA -:10407000681C002070B500F580551C46B5F8603806 -:104080001B0622D505294C4B4C48164616BF184630 -:104090000D21062126F01EFC0121494826F01AFCBC -:1040A00095F808184748314424F09EF80121444807 -:1040B00026F010FC631E0B2B74D8DFE803F01019F8 -:1040C000222B343D464F58616A0770BD0C213E4893 -:1040D00026F000FC3B48BDE8704024F091B8052173 -:1040E0003A4826F0F7FB3748BDE8704024F088B81E -:1040F0001021374826F0EEFB3248BDE8704024F02E -:104100007FB80421334826F0E5FB2E48BDE8704017 -:1041100024F076B80C21304826F0DCFB2948BDE8B5 -:10412000704024F06DB80A212C4826F0D3FB2548B6 -:10413000BDE8704024F064B80921294826F0CAFB84 -:104140002048BDE8704024F05BB81A21254826F0CD -:10415000C1FB1C48BDE8704024F052B81921224828 -:1041600026F0B8FB1748BDE8704024F049B821217B -:104170001E4826F0AFFB1348BDE8704024F040B85D -:104180001F211B4826F0A6FB0E48BDE8704024F016 -:1041900037B81E21174826F09DFB0A48BDE870403D -:1041A00024F02EB80021144826F094FB0548BDE801 -:1041B000704024F025B800BF4C2500205425002075 -:1041C000EC230020A84B002044260020A02500203E -:1041D00064250020782500208025002090250020DF -:1041E0009C250020A8250020C4250020E0250020D3 -:1041F0000426002024260020583C00202DE9F04F02 -:10420000054685B014F0B2FC0746EB682E68B3F89B -:10421000603006F1040AD907544621D500216548CB -:1042200026F058FB644823F0EBFF0321634826F097 -:1042300051FB0121624826F04DFB0821614826F020 -:1042400049FB01215E4826F045FB08215E4826F027 -:1042500041FB01215A4826F03DFB24F051FBA862A6 -:104260006FF00308BFB241F25C590E21A8EB0608BB -:10427000564826F02FFB564E07EB0903B84401378A -:104280004FF0000BBB4238BF4FF00109336805F116 -:1042900010072B6208E033682A6A9B1AF92B1FD893 -:1042A0000AEB09039C4225D004EB080114F8013BFA -:1042B000384601918DF80F301FF00EF99DF80F3040 -:1042C00001999842E7D001230DF10F0238460BF116 -:1042D000010B1EF0F7FF33682A6A9B1AF92BDFD90E -:1042E00001213C4826F0F6FA33682B620AEB0903F9 -:1042F0009C42D9D10121374826F0ECFA2E4823F010 -:104300007FFF0921344826F0E5FA01212C4826F0E8 -:10431000E1FA00230A225946274823F08DFF0121A4 -:10432000274826F0D7FA05212C4826F0D3FA224850 -:1043300023F066FFEB68B3F86030DA0729D5042173 -:10434000274826F0C7FA01211D4826F0C3FA24F0B9 -:10435000D7FAAB6A0221C31A174807EE103A9FED4D -:10436000130BB8EE477B87EE000B23F07BFF012198 -:10437000134826F0AFFA0C211A4826F0ABFA0E4883 -:1043800023F03EFF00210B4826F0A4FA0A4823F050 -:1043900037FF6B68D3F80831DB6D5B0703D52B6BF8 -:1043A00043F004032B6305B0BDE8F08F000000006C -:1043B00000408F40583C0020A84B0020C836002009 -:1043C000EC230020043E0020103E00201C3E002074 -:1043D000E8BA0020B83000202C3E002048240020FD -:1043E000383E0020403E00200268D2F808315B6869 -:1043F0001B68DB68C3F34333013380F85231D2F8D2 -:1044000008315B681B689B68C3F38301022906D8E7 -:1044100080F86815D2F808315B681B689B68012139 -:10442000C3F383130B4480F86935D2F808315B6815 -:104430001B689B68C3F3832301FA03F380F86A3592 -:10444000D2F808315B681B681B6813F0100F90F8F6 -:104450007D3514BF0B4303F0FE0380F87D3513F068 -:10446000010317D0D2F80811012349680968498966 -:1044700001F00F01194480F88815D2F8082152681C -:1044800012689268C2F3035203FA02F2D2B280F8C1 -:10449000892570471A4680F87D35A0F88A35C0F81E -:1044A000843580F8783580F8793580F87A3580F869 -:1044B0007B3580F87C3580F8883580F88925704711 -:1044C00010B5162104460D4826F004FA0C4823F0D6 -:1044D00097FE42F69C40204414F03CFB01462046E7 -:1044E00004F58054002301220EF0F0FFD4F8783850 -:1044F00013B1BDE81040184710BD00BFF4240020E0 -:10450000A84B00202DE9F84F00F580540746D4F859 -:10451000FC2707F540561368C3F3002383F001031B -:1045200084F80838116896F89431C1F3400003F01C -:104530000105A8421AD0002840F0E58003F0FE03F0 -:104540000020D6F8885186F8943186F884012880B6 -:10455000C6F89001D80709D5BB4B1B68C6F8C8310F -:104560007823A6F88C316423A6F8C431536811F07F -:10457000080F07F50055C3F3C610C3F3840386F88C -:10458000E8014FF0010094F8CC1A14BF41F001018A -:1045900001F0FE0184F8CC1A04F5805181F8EF3265 -:1045A0005368C3F3C61CC3F3825385F8EDC200FA07 -:1045B00003F391F8EEC243EA0C0381F8EE3253683C -:1045C00013F0606FC3F3426100F0E581884085F825 -:1045D000E10CD3681C219D484FEA931826F07AF924 -:1045E000012108F001089A4826F074F999484146DB -:1045F00023F0FAFD974823F003FE96F81C32B8F139 -:10460000000F7DD043F0080386F81C320022D4F856 -:10461000FC3743F2202019683844A5F8622C85F84D -:10462000612CC90595F8602C4CBF42F0010202F0E4 -:10463000FE0285F8602C9A8C02F07F0185F8401C00 -:10464000C2F3C311D20A85F8411C85F8422CDA8CDA -:1046500002F07F0185F8431CC2F3C311D20A85F82A -:10466000441C85F8452C1A8D02F07F0185F8461C04 -:10467000C2F3C311D20A85F8471C85F8482CDB8D9C -:1046800003F07F0285F84F2CC3F3C312DB0A85F8D1 -:10469000502C85F8513CFFF7A7FED5F8CC1C0A0634 -:1046A00000F1DE80CB05C1F3002800F122818805EE -:1046B0007FD44B052AD4B4F83A18B4F83E28B4F89D -:1046C0004A38C943D243B4F84608DB43A4F83A1841 -:1046D000A4F83E28C043B4F84E18B4F85228A4F801 -:1046E0004A38C943B4F85638D243A4F84608DB43E5 -:1046F000A4F84E18A4F85228A4F85638BDE8F88F4C -:1047000003F0F70380E743F0010319E721F4806128 -:1047100043F2E97043F2F47C0022C5F8CC1C384423 -:1047200096F8E837BC440121D6F8E47723F001037A -:1047300041F2525E86F8ED2786F8E837D7F808513F -:1047400002F252532D6805EB8303DB7AD3B94CF8A0 -:104750003230013201310130042AC9B2EED12121B7 -:104760003D4826F0B7F80121394826F0B3F8002378 -:104770000A2296F8ED17374823F05EFD354823F0FE -:104780003FFD98E796F8E83705EB820586F8ED17C8 -:1047900043F0010386F8E83715F80E30C3F38103C0 -:1047A000012B03780CBF43F0010323F001030370D6 -:1047B000CFE721F40071D6F8D4E741F23D58C5F8AF -:1047C000CC1C012196F8DC37894623F0010386F8DA -:1047D000DC37002386F8E237A6F8DE37DEF808017A -:1047E00003F24C5201F1010C006800EB820200EB75 -:1047F000830A127B00EBC200013AC72A09D890F85D -:104800003220013A032A04D81AF80820002A40F07E -:10481000C58001335FFA8CF1042BDFD11E210F48D4 -:1048200026F058F801210A4826F054F896F8E217C5 -:1048300000230A22074823F0FFFC064823F0E0FC8F -:10484000D5F8CC1C35E700BFE8BA00208C23002047 -:10485000EC230020A84B0020CC230020AC23002018 -:1048600021F08001C5F8CC1C97F826CF97F8270FC8 -:1048700097F8203F844597F8218F4FEAD31E97F889 -:10488000222F03F07F0300F09F8002D9E146844687 -:104890004846092B84F86AE9D6F888E1A8BF0923BD -:1048A000042A03F10103A8BF0422B8F1040F03EBAB -:1048B000830302F26462A8BF4FF0040884454FEA04 -:1048C000430307EB8202A4F86C3904F67C13BEF8AC -:1048D00000E084F87089A4F878E912681A6055D36A -:1048E0004FF4FE43C1F30028A4F86E39CB057FF5E1 -:1048F000DEAED6F8BC27012041F2485C002321F44B -:10490000807181469444C5F8CC1CA6F8CA3786F855 -:10491000C83703EB430200F1010E1CF802A00AF1B4 -:10492000FF3BBAF1000F2AD0D6F8B427BBF1C70F6E -:10493000D2F80821126802EBCA0220D892F833A0FC -:1049400092F83220BAF1000F19D0013A032A16D892 -:10495000B6F8CAA709FA03F296F8C8B74AEA0202FB -:104960004AFA03FA4BF0010B1AF0010F86F8C8B7A8 -:1049700003D1A6F8CA2786F8CC9786F8CF075FFA46 -:104980008EF0002B7FF493AE4346C2E784F86EC9E5 -:1049900084F86F0986E685F8E11C1AE696F8DC27AC -:1049A000B6F8DE0742F0010286F8DC2740FA03F28F -:1049B000D20706D409FA03F286F8E0971043A6F866 -:1049C000DE0786F8E21724E77F204FF0000C60E74F -:1049D0002DE9F04F00F5005504462DED028B95F8BA -:1049E000D23C87B00F2B17D8DFE813F020001B0054 -:1049F0002B003D004A005C00EB003A011600160057 -:104A000016001600160016002B011000D5F8CC3C3D -:104A100043F48023C5F8CC3C07B0BDEC028BBDE865 -:104A2000F08F95F8D03C002B40F0678142F69C4017 -:104A30000021204407B0BDEC028BBDE8F04F1BF015 -:104A40001BBFD5F8D33C052BE6D803EBC30343F6D5 -:104A5000881200EB83031A4453899D041ED443F447 -:104A600000535381D8E7D5F8D33C052BD4D803EBBA -:104A7000C30343F6881200EB83031A445389EEE71D -:104A8000D5F8D33C052BC7D803EBC30343F68812F4 -:104A900000EB83031A4453899C04BDD543F480433F -:104AA0005381B9E7D5F8D35C0821C548C5F307475A -:104AB00025F010FF0121C34825F00CFF00230A2236 -:104AC0003946C148EEB223F0B7FB0121BD48ADB273 -:104AD00025F000FF0B21BD4825F0FCFE0121B9485F -:104AE00025F0F8FE3146B84823F07EFBB64823F0A7 -:104AF00087FB062F90D0072F00F01B810E2F8BD144 -:104B0000052E89D84FEA860804F5405A06EB460977 -:104B100043F69C0B08F101034FF47F02A3440027E6 -:104B2000039308F10203AA4C049308F103030593CD -:104B300009F10103019309F102030293BAF89C38C9 -:104B40009E4212D29AF89F38052BDAF8A43800F268 -:104B5000798103F80920110ADAF8A438120C0198B7 -:104B600019540299DAF8A4385A54584622F0D2FB64 -:104B7000192023F071FEBAF89C389E4210D29AF8A0 -:104B80009F38052BDAF8A43800F24D8103F809703C -:104B9000019ADAF8A4389F54029ADAF8A4389F549C -:104BA000584622F0B7FB192023F056FE894B9C4251 -:104BB00000F05E81BAF89C3854F8042F9E42C1D3AD -:104BC000D3E7D5F8D37C2121834804F5405A3E0C25 -:104BD0004FF6FF7925F07EFE0121F6B2794825F0E7 -:104BE00079FE00230A223146774823F025FB012174 -:104BF000744825F06FFE7448B9B223F0F5FA724894 -:104C000023F0FEFABAF8DA8AC8454BD0BAF8DC1AB3 -:104C1000BAF8DE2A8A4240F28780B8F1000F41D10B -:104C2000D5F89C0C00F58050A0F8EA24A0F8E81410 -:104C300042F69C4020440190FFF7E0FA424601987A -:104C400034E000F5405342F69C40012293F8701383 -:104C5000204407B0BDEC028BBDE8F04F1BF0EABE6C -:104C600000F5405A4FF6FF72BAF8DA1A91424FD166 -:104C700019215A4825F02EFE534823F0C1FA4FF669 -:104C8000FF72BAF8DA1A012342F69C40891A1A46D2 -:104C9000204418BF012107B0BDEC028BBDE8F04FE6 -:104CA0001CF0AAB842F69C40002220440FFA87FC70 -:104CB000BCF1FF3F10D01B2E354600F0918000263E -:104CC000BAF8DA4A4FF6FF718C4205D1B44580F24A -:104CD0009280BCB2012103E000254FF6FF74294603 -:104CE000AAF8DA4A40F2FF3401238AF8D85AAAF81F -:104CF000DC4A0024AAF8DE4ACDE7D5F8D31C042903 -:104D00003FF694AE0023C9B21A460EF0DFFB8DE6E3 -:104D1000002140F2FF30AAF8DA2A8AF8D81AAAF855 -:104D2000DC0AAAF8DE1AA3E742F69C4001222044DE -:104D3000BCE7042E3FF670AE06EB46050426ED00F8 -:104D400005F5645325441C44637803F00107002FE4 -:104D500087F00108BB464FEA072715BF4FF4807262 -:104D600001224FF001094FF4807998064FEA082A92 -:104D700008EE102A1DD5590647D54946207823F05C -:104D8000B1FF192023F068FD63789A0644D55806D0 -:104D900034D518EE101A207823F0A4FF013E192014 -:104DA00023F05AFD16F0FF063FF436AE63789806FE -:104DB000E1D405F564534146187823F0CBFDE0E7D4 -:104DC000EC1C0020EC230020A84B0020F81C002045 -:104DD000B00E0020BC0E0020041D0020281D002065 -:104DE000342143F6E0261CFB0161615C11F00101F6 -:104DF0003AD0012664E70025294671E705F564539A -:104E00003946187823F06EFFC8E705F5645351461C -:104E1000187823F067FFB4E705F56453594618780E -:104E200023F098FDBAE703F80870039ADAF8A4387B -:104E30009F54049ADAF8A4389F54059ADAF8A438F3 -:104E40009F54ADE603F80820110ADAF8A438039855 -:104E50001954110CDAF8A438120E04981954059953 -:104E6000DAF8A4385A5480E60D464FF6FF7437E757 -:104E70000AEB060292F9B80892F8B828002829DA55 -:104E800002F07F02013AD2B2092A37D8264B53F8F2 -:104E90002220BAF89C08864211D29AF89F08052869 -:104EA000DAF8A4082CD800F80920140A019B120C87 -:104EB000DAF8A408C4540299DAF8A4385A545846C7 -:104EC00022F028FA052007B0BDEC028BBDE8F04FB8 -:104ED00023F0C2BCBAF8FA088107C0F34002D8D563 -:104EE00006B372085244EB07104892F8BE2854BF2C -:104EF00002F00F02120950F82220CAE70022C8E788 -:104F000000F82620140ADAF8A408120C039BC454F3 -:104F1000049BDAF8A408C2540022DAF8A4380599F0 -:104F20005A54CCE73246DDE7B00E0020D80E002000 -:104F300000F5005310B593F8D22C04462AB1012A8B -:104F400002D193F8D02C6AB910BD00F5405142F659 -:104F50009C400123D1F8FC1120440978BDE81040A1 -:104F60001BF0E8BED3F8D31C43F2EC100023CAB206 -:104F70002044C1F30721F9F7E9FC04F58053D3F885 -:104F80005C28C2F380035207DED404F54052D2E914 -:104F90007E10027842F69C4009782044BDE810401B -:104FA0001BF0C8BE70B542F69C4504460544284631 -:104FB00013F052FF002845D104F50056284613F09F -:104FC000B7FD98B104F58053D3F85C285507C2F3B8 -:104FD000800007D404F540524FF6FF71B2F8DA5A58 -:104FE0008D4249D1D3F8743803B19847D6F8CC3CF8 -:104FF000190507D49A0300D470BD23F40033C6F812 -:10500000CC3C70BD23F400630525C6F8CC3C0121DF -:1050100020460CF02DFC642023F01EFC00212046CD -:105020000CF026FC642023F017FC6B1E13F0FF0528 -:10503000EDD104F58054D4F8E43803B19847D6F89C -:10504000CC3CD7E7284613F053FD78B9284604F541 -:10505000005613F059FD0028B0D096F8D13CD3B1DA -:10506000012BABD12046FFF763FFA7E7204604F5ED -:105070000056FFF725FAA1E7A2F8DA1A40F2FF314D -:1050800082F8D80AD3F87438A2F8DE0AA2F8DC1A3B -:10509000002BAAD1AAE72046FFF79AFC8EE700BFB3 -:1050A00043682BB1806883428CBF01200220704787 -:1050B00001207047002300F5AC7C02E001335B2B3C -:1050C0000BD01CF833208A42F8D1184490F8E50040 -:1050D00010F00E0018BF012070470020704700BF7D -:1050E00070B5012284B0002604460292C1F3C612B4 -:1050F00033460D46CDE90026827F417F00681CF0D3 -:1051000033FBE37FDB070BD40A4B012041F28831EC -:105110001A681B68208621856263E36204B070BD53 -:10512000A27F05F07F03617F009620681CF0A2F942 -:10513000EAE700BFE8BA00202DE9F04F89B08A46BF -:10514000BDF84840BDF84C5066089DF858C0AC42C8 -:10515000BDF85090BDF854B04FEA55072CBF2C1F36 -:10516000043C3F2D9DF85C10A4B28CBF083C043C6D -:10517000A4B24FEA540E5FFA8EFEBCF1000F21D1AB -:105180002C1BA6EB0E08764448BF01341FFA88F8A2 -:1051900005969EB26410644225446442ADB2A4B246 -:1051A000069595B2002958D137443FB2BAF1000FA5 -:1051B00008BFD946059A08F102030434043ACDE940 -:1051C000147920E02C1BA6EB0E0C06EB0E0848BF52 -:1051D00001341FFA8CF6641005969EB26442254491 -:1051E0006442ADB2A4B2069595B2F1B937443FB26C -:1051F000059ABAF1000F08BFD946A8F1020304349A -:105200000432CDE914792B441544069A34441BB278 -:10521000043A24B22DB2194632441294139512B2B4 -:1052200009B0BDE8F04F1FF05DB8059A374408EBB0 -:105230000503CDF80C902A443FB21BB2079012B27E -:10524000029719460192A21912B20092069A3244AC -:1052500012B21FF047F80798CAE7059A374408EBDF -:105260000503CDF80C902A443FB21BB2079012B24E -:10527000029719460192A21912B20092069A32447C -:1052800012B21FF02FF8079890E700BF69B170B510 -:10529000054608460C4627F019FE2B6802462146B3 -:1052A00028465B68BDE870401847704784B070B509 -:1052B00004AC84E80F009DF81340630720D50DF17E -:1052C000520027F003FE002856D000229DF81560FA -:1052D0005FFA80FE0DF15105134606EB030C15F83D -:1052E000011F01336144DBB24A409E45D2B2F4D87B -:1052F0008EEA0205BDF81C3000FB0355EDB21CE040 -:105300000DF1290027F0E2FDA0B300229DF8156001 -:10531000C5B20DF1280C134606EB030E1CF8011F55 -:1053200001337144DBB24A409D42D2B2F4D85540B9 -:10533000BDF81A3000FB0355EDB29DF817109DF82B -:1053400016309DF818200B449DF8191013449DF851 -:1053500028200B449DF8241013449DF8142003EBDF -:10536000410354401D44EDB285EA0400BDE870409D -:1053700004B070470546DBE70546BBE782B02DE980 -:10538000F04F95B00446BDF92051BDF824611F933C -:10539000ABB2BDF828710893A6F10C034FEA570988 -:1053A0003F2F9BB29DF88EB09DF891000693BDF8FB -:1053B0002C3109960593BDF830310793A9F1080304 -:1053C0009BB20B93BDF88630CDE90312029306D849 -:1053D0002F2F40F2C780032518262B4602E0042514 -:1053E00020262B46B9EB0606BDF88A10BDF88C20A6 -:1053F00048BF0136761000B30698521ADA46A0EB81 -:105400000B0800F0B3800298B8F1000FA0EB010187 -:1054100008FB01F180F2F480002A1046B8BF501C4E -:10542000A1EB600191FBF2F802FB01F1D8440029E5 -:1054300080F2DE80029A93441CE0B2EB010ADDF8B0 -:1054400008B0DDF8188000F09380029A511A524695 -:105450008246069800FB01F1002A1046B8BF501C96 -:1054600001EB600191FBF2F802FB01F1D04400294D -:10547000C0F2C380002120460A931FF00FFB0A9B55 -:10548000204636B2A7EB090719461FF001FB00239F -:105490005C490CA8E376BFB2CDE90C33CDE90E33FD -:1054A000CDE91033CDE91233039B1A88524405EB42 -:1054B000450A27F031F80CA827F008FD079B4FEAB2 -:1054C0004A0A0246E382A382099B66821D4423683E -:1054D0000AFB10515B682046490821820CA99847B5 -:1054E0005A4648490CA827F017F80CA827F0EEFCFC -:1054F000059B0AFB10550246E3820CA96D08A382A6 -:10550000236820466682BE1C5B681FFA88FA2582E3 -:10551000B6B29847089B4FF6FF729D1D049B1B88EF -:10552000ADB293422CD09A450DD056D9059B01932C -:10553000BDF92C3000930FFA88F3206829B232B2FB -:10554000056C2046A847049B01212046A3F800A033 -:10555000DDE902231A801FF09BFA15B0BDE8F04F79 -:1055600002B07047022510262B463BE7029A93446F -:10557000B8F1000FB8BF08F101080AEB680879E735 -:105580000598023F099B2DB208993AB2CDF80090D8 -:10559000043B0190023120681BB209B2BDF92C70A6 -:1055A000D0F84C902046C847079B009736B201932D -:1055B000294622682046BDF91830D2F8409032467C -:1055C000C847059829460FFA88F33246CDE900709E -:1055D0002068056C2046A847B5E7079B5544BDF9F0 -:1055E0002C200193069B0092A3EB0A031BB2A4E7B5 -:1055F000029A08F1010893443CE708F1FF3839E7C3 -:10560000834429E730200020000000002DE9F04FFE -:105610002DED048B93B01E4600F51E7C92F802908F -:10562000BDF9803015460C460DF1340E0493BDF8DB -:105630008830BDF884700593BDF88C309DF89C804F -:105640000893BDF890300993BDF894300793BDF8E6 -:1056500098300693BCE80F00AEE80F009DF83620A6 -:10566000DCF800304A45CEF8003008D1B8F1000F20 -:105670000ED1404613B0BDEC048BBDE8F08FBDF8F1 -:1056800034102B88994203D1B8F1000F00F06181EA -:10569000002120461FF002FADDED057A802FB8EEDA -:1056A000E79BB6EE007B29EE077B00F08181059B2E -:1056B000282B00F04681B4EE005BBBFE476B26EE64 -:1056C000056BBBFE466BFCEEC66BCDED0A6A9DF822 -:1056D0002810032928BF0321A1EB81031FFA81F9B8 -:1056E0005B001FFA83FBCB0006EE103AB8EEC66BE8 -:1056F00037EE467BDDED046AB6EE005B2046B8EE81 -:10570000E68B1FFA86F8B0EE486BA7EE056BBCEE91 -:10571000C66B16EE103A1FFA83FA1FF0B9F9079B11 -:105720009DF83520E382A3826B789A4219D0069BBC -:1057300031460FFA8AF2019309EB49032068268269 -:105740004FEAC90662829B000096066C2046B0476D -:105750000FA827F0BBFB236802460FA95B68204611 -:1057600098479DF834202B789A4219D04FEAC90304 -:1057700008EB07010FFA8AF200935944069B09B21D -:105780000193CBF10003206821821BB2066C2046F6 -:105790006282B0479DF834102046013122F024FD8A -:1057A000012120461FF074F9A7F1180395F8029023 -:1057B000002B9DF8362003FB09F9C0F2DB8009F1CC -:1057C0003F09884880FB0910B9F1000F4FEAE971E1 -:1057D0004844C1EBA011C0F2E9800C3189B202FB50 -:1057E00003F30B913F338049A1FB03015B1A01EBEB -:1057F000530189090C31069E4FEA570A089BBDF8F0 -:105800001090402A88BF3346784E8AB2049803939A -:10581000A6FB0736AAF106030A92C244059AA3EB37 -:105820009603B60800904FEA520B434420461FFAF5 -:105830008AFA16FA83F1ABF104021BB292B209B2F2 -:10584000019109EB52014A4409B212B20291194680 -:105850001EF048FD0499ABF10802089800910AF186 -:10586000060192B289B20E4409B233B20191069E8A -:105870009DF836103D2998BF304609EB52014A4445 -:1058800009B2039012B22046029119461EF02AFD79 -:10589000B6EE087B5FFA8BF00B9B0096A9EE078BA8 -:1058A00007EE100A4344204619B29FED4C6BFCEE04 -:1058B000C87BCDED087AB8EEC77B9DF8202027EE97 -:1058C000067B0892FCEEC77BCDED067A9DF818307A -:1058D000062B38BF062306931EF046FC0A9B099848 -:1058E00003EB0801089A069B009009B220461EF0BF -:1058F0003BFC0798BDF914300FFA8AF1009020683C -:10590000049A866B2046B0470798CDF800B03B1F3D -:1059100001900BEB0902266808F1020120461BB238 -:10592000F46C12B209B24FF00108A0470DAC0FCCD5 -:105930000FC5236840462B6013B0BDEC048BBDE857 -:10594000F08F4FF00209B3EE006B4FF6F47B49463F -:10595000CEE6DDED057AA7F118031FFA86F8B8EE5A -:10596000E79B002BDDED047A03FB09F9B8EEE78B2A -:10597000BFF625AFA9F13F091A4880FB0910B9F11C -:10598000000F4FEAE9714844C1EBA01121DA0C3154 -:1059900002FB03F389B213483F3B0B9180FB0310DA -:1059A000D9171844C1EBA0110C3124E70B3115E7CE -:1059B000059B402BC5D0282BC3D0059B202B7FF403 -:1059C0007AAE4FF00109B2EE006B4FF6FA7B494612 -:1059D0008EE60D31DCE700BFAFF3008033333333A5 -:1059E0003333D33F0904028111080402CDCCCCCC5F -:1059F000F0B509298FB04FF000050E4604460A465F -:105A000005958DF81850CDE90155CDE903551ED9FE -:105A1000374901A826F080FD364A234601A91278AD -:105A2000204603F8012BC4F801505D609D60DD60E5 -:105A30001D6127F069F9FF2201236575A575E275DF -:105A400023766576A576E57620460FB0F0BD2A4927 -:105A500001A826F061FD274B01A920461A782346AC -:105A600003F8012BC4F801505D609D60DD601D618D -:105A700027F04AF9FF2201236575A575E2752376A3 -:105A80006576A576E576032EDED8DFE806F02B26D0 -:105A900021021A4F07AEDFF868C035460FCF0FC698 -:105AA00097E8070086E807009CE803000B0C0790C6 -:105AB000ADF820108DF822300FCD20606160A2601B -:105AC000E36007CD206120466161A2610FB0F0BDA7 -:105AD0000A4F07AEDFF82CC0DFE7084F07AEDFF84C -:105AE00028C0DAE7054F07AEDFF820C0D5E700BFD2 -:105AF000A818002000080020B41800201808002072 -:105B0000D8180020D0180020C8180020C018002085 -:105B100030B58DB00546144605A8FFF769FF9DF81E -:105B20002F3000219DF82DC0013B9DF82E20CDE99E -:105B30000111CDE903110E2B0FD8DFE803F05A5DF8 -:105B4000656D757D818597088B914C5308004C4B92 -:105B500093E803000190ADF80810BCF1050F00F2C6 -:105B60008880DFE80CF00E161E262F03454B2846D2 -:105B70004549002C18BF19460DB0BDE8304027F04C -:105B8000C3B801AB22464149284626F0C5FC0DB0FA -:105B900030BD01AB22443D49284626F0BDFC0DB086 -:105BA00030BD01ABA21A3949284626F0B5FC0DB02C -:105BB00030BD01AB04FB02F23449284626F0ACFCB0 -:105BC0000DB030BDB4FBF2F201AB3049284626F0EF -:105BD000A3FC0DB030BD2E4B93E8030001908DF86F -:105BE0000810BAE72B4B93E803000190ADF80810BA -:105BF000B3E7294B0193B0E7284B1B68ADF804309D -:105C00001B0C8DF80630A8E7254B1B68ADF8043057 -:105C10001B0C8DF80630A0E7224B1B68ADF8043052 -:105C20001B0C8DF8063098E71F4B1B68ADF804304D -:105C30001B0C8DF8063090E76D23ADF804308CE72F -:105C40002523ADF8043088E7184901AB03C983E880 -:105C5000030082E7164901AB03C983E803007CE730 -:105C6000144901AB03C983E8030076E7124B0193A3 -:105C700073E722461149284626F04EFC87E700BF0D -:105C800000300020F8390020F43900201C3A0020B0 -:105C900008300020143A002073656300FC390020AE -:105CA000003A0020043A0020083A00200C3A002074 -:105CB000F82F0020F02F002062706D0030200020AF -:105CC00000231F280B7000D9704730B500F1200366 -:105CD00089B00A4D8E460DEB030C6C460FCD0FC4F8 -:105CE00095E80F0084E80F00054970461CF8202C49 -:105CF00009B0BDE8304026F00FBC00BF8C38002052 -:105D0000883800202DE9F04F054685B012F026FFB7 -:105D10008046EB682C68B3F86030DA0721D50021A3 -:105D2000604824F0D7FD604822F06AFA03215F48FA -:105D300024F0D0FD01215E4824F0CCFD08215D480F -:105D400024F0C8FD01215A4824F0C4FD08215A4816 -:105D500024F0C0FD0121564824F0BCFD22F0D0FD06 -:105D6000A862564E0E2156481FFA88F824F0B2FD5C -:105D700041F2FC79326808F1010305F110074FF098 -:105D8000000A2A6208EB0902DFF838B1A8EB040820 -:105D90009A4238BF4FF00109A14406E033682A6AED -:105DA0009B1AF92B1DD84C4523D004EB080114F89D -:105DB000013B384601918DF80F301DF08DFB9DF8A9 -:105DC0000F3001999842E9D001230DF10F023846B6 -:105DD0000AF1010A1DF076FA33682A6A9B1AF92B38 -:105DE000E1D90121584624F075FD33684C452B62FA -:105DF000DBD10121334824F06DFD2B4822F000FA5D -:105E00000921314824F066FD0121294824F062FD72 -:105E100000230A225146244822F00EFA0121244888 -:105E200024F058FD0521294824F054FD1E4822F095 -:105E3000E7F9EB68B3F86030DB0702D405B0BDE8E2 -:105E4000F08F0421224824F045FD0121184824F058 -:105E500041FD22F055FDAB6A0221C31A124807EE3C -:105E6000103A9FED0E0BB8EE477B87EE000B22F049 -:105E7000F9F901210E4824F02DFD0C21154824F0DC -:105E800029FD094822F0BCF90021064824F022FD32 -:105E9000054805B0BDE8F04F22F0B2B9000000009F -:105EA00000408F40583C0020A84B0020C8360020FE -:105EB000EC230020043E0020103E0020E8BA002021 -:105EC0001C3E0020B83000202C3E0020482400203A -:105ED000383E0020403E002010B4B44C84460139C6 -:105EE00020681860282938D8DFE811F04A013B0102 -:105EF00027011101F5003700EA00370037003700AD -:105F0000370037003700D60037003700370037003A -:105F1000370037003700C20037003700370037003E -:105F2000B4003700A5009C003700930088007A0079 -:105F3000290037006C006100370054003A00012A44 -:105F40000BD8DCF8001002EB420241F24A500A443E -:105F5000125C013A90B27E280FD95DF8044B70476D -:105F6000052AFAD8DCF80010C2EBC2020A4492F803 -:105F7000182F013A90B27E28EFD802EB021202F5F8 -:105F8000CF62885C11440028E7D018465DF8044BC6 -:105F900026F0BABE0F2AE0D8DCF8001001EB42026E -:105FA00092F8F82E013A90B27E28D6D8E5E7002A7A -:105FB000D3D1DCF8001091F81F2F013A90B27E285F -:105FC000CBD8DAE7032AC8D8DCF8001002F2525224 -:105FD00001EB8202127A013A90B27E28BDD8CCE75A -:105FE000032ABAD8DCF8001002F24C5201EB82020C -:105FF000927A013A90B27E28AFD8BEE7032AACD895 -:10600000DCF8001002EBC20241F2F24001EB420266 -:106010009EE73F2AA1D8DCF8001002EB820241F291 -:106020003D20F3E7072A98D8DCF8001002EBC20203 -:1060300041F2AD10EAE73F2A8FD8DCF8001002EBFE -:10604000820201EB420292F82D2F013A90B27E2893 -:1060500083D892E7002A80D1DCF8001001F5805245 -:1060600092F8EC24013A90B27E283FF676AF84E7AE -:10607000052A3FF672AFDCF8041002EB4202DCF8AE -:106080000000D1F80811497A01EB411401EB8401B9 -:1060900041F2D3540A4429E0052A3FF65EAFDCF80A -:1060A000041002EB8202DCF80000D1F80811497AF2 -:1060B00001EB411401EB840141F2B5540A4415E0AF -:1060C000042A3FF64AAFDCF8001002EB420241F22C -:1060D000D7400A443CE7012A3FF63FAF02EB4201BA -:1060E000DCF8000041F2BD4402EB81020244125D83 -:1060F000013A91B27E293FF630AF02EB021202F56F -:10610000CF62845C8118002C3FF427AF3DE7052A5D -:106110003FF623AFDCF8044002EB4201DCF800005C -:10612000D4F8084102EB8102617A01EB411401EBE2 -:10613000840141F267540A44D8E77F2A3FF60DAF45 -:10614000013292B2802A3FF408AF02EB0212DCF86F -:10615000001002F26762885C114400283FF4FDAE33 -:1061600013E7C72A3FF6F9AEDCF8001001EBC202D4 -:1061700092F83820013A90B27E283FF6EEAEFCE667 -:10618000042A3FF6EAAEDCE90012D2F80821527A7E -:1061900002EB421002EB80020A4402F5AB52127885 -:1061A000013A90B27E283FF6D8AEE6E6743C002075 -:1061B0000368D3F808312DE9F04115465A680446C2 -:1061C0008AB012680E461268900516D4E268196803 -:1061D00006F00703127843EAC203402BA8BF00234E -:1061E00003EB830301EB430393F82D3F002B37D1DF -:1061F0002B78B3B10AB0BDE8F0810022ADF80420DD -:10620000E26812781F2A3DD90DF104081B7A424634 -:1062100036492846334426F07FF92368D3F80831FD -:10622000D4E72268D2F8082151680968096849054D -:106230001FD52F49ADF8053091F83410E3688DF87B -:1062400004101B781F2B37D90DF10408137A42462E -:1062500028492846334426F05FF90AB0BDE8F081AA -:1062600003EB0313284603F26763194426F026FB69 -:10627000BEE7127A2846204932440AB0BDE8F04110 -:1062800026F04AB902F128031C4F0DF1080C0DF15C -:1062900004080DEB030E0FCFACE80F0097E80F00DA -:1062A0008CE80F00164940461EF8202C26F034F9E1 -:1062B0002368D3F80831A9E72833DFF840C002AFDC -:1062C0000DF104080DEB030EBCE80F000FC79CE8AE -:1062D0000F0087E80F000A4940461EF8202C26F0E0 -:1062E0001BF92368D3F80821B0E700BF2816002067 -:1062F0000008002030160020302000208C380020BC -:106300008838002007292BD838B583680C46054605 -:106310001A788A4200D138BD1C700D21114824F032 -:10632000D9FA0121104824F0D5FA00230A22214687 -:106330000E4821F081FF0D4821F062FF2B7F2A6873 -:1063400043F001032B771368D3F808315B681B68AF -:10635000DB68DB06DFD500212846F8F7F9FB38BDFE -:10636000704700BF74290020EC230020A84B0020B8 -:1063700070B59DF810C005469DF81440A44503D89B -:106380004ED0204664468446BCF1070F28BF4FF02C -:10639000070C082C28BF0024AE68307849B10344AC -:1063A000002A38D063450ADCA34207DAA04208D1AC -:1063B00070BDC31A5ABBA342B8BF2346DCB2A04289 -:1063C000F6D0072CF4D80D211748347024F082FA47 -:1063D0000121164824F07EFA00230A22214614489F -:1063E00021F02AFF124821F00BFF2B7F2A6843F08F -:1063F00001032B771368D3F808315B681B68DB68EF -:10640000DB06D5D500212846F8F7A2FB70BDA342D4 -:10641000D4DA6446D3E76345FBDCA342CEDAC5E7B2 -:106420004FF0070C0024B7E774290020EC2300206C -:10643000A84B002010B59DF808E09DF80CC0E6457B -:1064400003D832D06446F446A646BEF10F0F28BFEB -:106450004FF00F0EBCF1100F28BF4FF0000CC468B6 -:10646000247859B12344DAB173450EDC63450CDB63 -:106470005FFA83FC6146F8F76BFB10BDE31A42B983 -:106480009C45B8BF9C465FFA8CFC6146F8F760FB00 -:1064900010BD6345ECDAF4466146F8F759FB10BDD0 -:1064A0007345F8DC6345E3DAEFE74FF00F0E4FF08A -:1064B000000CD4E710B59DF808E09DF80CC0E64547 -:1064C00003D832D06446F446A646BEF1070F28BF73 -:1064D0004FF0070EBCF1080F28BF4FF0000CC46846 -:1064E000247859B12344DAB173450EDC63450CDBE3 -:1064F0005FFA83FC6146F8F7B9FA10BDE31A42B9B6 -:106500009C45B8BF9C465FFA8CFC6146F8F7AEFA32 -:1065100010BD6345ECDAF4466146F8F7A7FA10BD02 -:106520007345F8DC6345E3DAEFE74FF0070E4FF011 -:10653000000CD4E707290B46944670B58AB00CD8F6 -:10654000026801EBC10141F2AD141268D2F80821D2 -:10655000126802EB4101095D59B942686046204961 -:10656000D2F80821127A1A440AB0BDE8704025F02A -:10657000D3BF00230139CDE90033CDE902338DF8D3 -:1065800010308BB27F2B20D801EB011105AC6E4689 -:1065900002EB010E2546DEF88436DEF87806DEF8DA -:1065A0007C16DEF880260FC59EF888362B70A6462E -:1065B0003446BEE80F000FC4DEF8003031466046B6 -:1065C000237026F0A1FB0AB070BD6E4605AC3546BF -:1065D000A6460FCDAEE80F002B688EF80030E6E738 -:1065E0007C170020944602688368126830B5D2F8A0 -:1065F00008218E461B7841F2AE1112688BB003EB76 -:10660000C30302EB4303595C71450DD941F2AF114D -:1066100073445B5C41F23D21013B9BB203EB83037E -:1066200002EB43035B5C5BB9436860461B49D3F8EC -:1066300008311A7A72440BB0BDE8304025F06CBFC7 -:106640000021013BCDE90511CDE907118DF824109A -:1066500099B27F2917D803EB03136D4602EB030EA3 -:106660002C46DEF88436DEF87806DEF87C16DEF896 -:1066700080260FC49EF8883623702946604626F08F -:1066800043FB0BB030BD6D4605ACAE460FCCAEE85B -:106690000F0023688EF80030EFE700BF941700204A -:1066A000436984461B88402B30B514468BB08E4618 -:1066B00002681CD8126803EB8303D2F80821116822 -:1066C00041F23E2201EB43039A5C82B196450ED221 -:1066D000734441F23F229B5C013B9BB23F2B06D8A7 -:1066E00003EB830301EB430393F82D3F63B9DCF81D -:1066F000043020461D49D3F808311A7A72440BB091 -:10670000BDE8304025F008BF0022013BCDE905225D -:10671000CDE907228DF824209AB27F2A19D803EBFD -:1067200003136D4601EB030CAE46DCF88436DCF84F -:106730007806DCF87C16DCF88026AEE80F009CF8C2 -:1067400088368EF800302946204626F0DDFA0BB058 -:1067500030BD6D460DF1140EAC46BEE80F00ACE83E -:106760000F00DEF800308CF80030ECE788170020CE -:10677000642966D8DFE811F06E0261025402470214 -:10678000650042023D023802330232032D036500E8 -:1067900065006500650037037B02650065006500E4 -:1067A00065006500650065006500650065006500C1 -:1067B00065006500650065006500650065006500B1 -:1067C0006500650065004103F6023C0352010A03BF -:1067D00005030003FB026500650014030F031903A2 -:1067E0000E0223031E032803CB022F012A012501D9 -:1067F00020016500650065006500DE02D9026500C4 -:106800006500D402D002E3022E0221021302AD027F -:106810009E028F028002E802BC0243013401FF01A4 -:10682000F001E101C601AB019001720157010501C0 -:10683000EA00CC00B000940079006C0065006500AF -:1068400067000020704790F8D00000F0010070470A -:10685000082A00F2F58208BF90F8D12000EBC200B0 -:1068600090F8E000C0F380107047082A00F2FC8224 -:1068700008BF90F8D12000EBC20090F8E030C3F3DD -:10688000011203F00F03022A00F06983032A00F0CB -:106890005F83012A00F057830B3B584258417047F1 -:1068A000082A00F2E38208BF90F8D12000EBC20072 -:1068B00090F8E030C3F3011203F00F03022A00F056 -:1068C0000483032A00F0E582012A00F0DD82A3F1AF -:1068D0000A02504250417047082A00F2C38208BFA2 -:1068E00090F8D12000EBC20090F8E030C3F3011221 -:1068F00003F00F03022A00F02183032A00F04C83E7 -:10690000012A00F04483A3F109014842484170473D -:10691000082A00F2A58208BF90F8D12000EBC2003F -:1069200090F8E000C0F30113022B00F07583032BF5 -:1069300000F06083012B00F0558300F00F00A0F100 -:10694000080CDCF1000040EB0C007047082A00F254 -:106950008F8208BF90F8D12000EBC20090F8E030A1 -:10696000C3F3011203F00F03022A00F0C182032ACD -:1069700000F0B582012A00F0AD82073B5842584131 -:106980007047082A00F2568208BF90F8D12000EB29 -:10699000C20090F8E000C0F30113022B00F0AD82BA -:1069A000032B00F04183012B00F0178300F00F0050 -:1069B000821F504250417047D0F8D400C0F3C060ED -:1069C0007047D0F8D400C0F380607047D0F8D4008E -:1069D000C0F34060704790F8D70000F001007047A6 -:1069E000082A00F22F8208BF90F8D12000EBC200E5 -:1069F00090F8E200082894BF002001207047082A80 -:106A000000F2008208BF90F8D12000EBC20090F89D -:106A1000E200072894BF002001207047D0F8D4007E -:106A2000C0F3C0207047082A00F2168208BF90F811 -:106A3000D12000EBC20090F8E030C3F30112022A2B -:106A400000F06282032A00F06E82012A00F0638265 -:106A500003F00F03591F484248417047082A00F2CB -:106A6000FD8108BF90F8D12000EBC20090F8E02033 -:106A7000C2F30113022B00F09782032B00F07C82FB -:106A8000012B00F0718202F00F02A2F1040CDCF184 -:106A9000000040EB0C007047082A00F2BF8108BFDD -:106AA00090F8D12000EBC20090F8E000C0F3011391 -:106AB000022B00F0C682032B00F0CA82012B00F0EB -:106AC000A38200F00F00C31E584258417047082AA5 -:106AD00000F2D08108BF90F8D12000EBC20090F8FE -:106AE000E020C2F30113022B00F0C681032B00F05B -:106AF000E181012B00F0D68102F00F02023A5042F0 -:106B000050417047082A00F28B8108BF90F8D120CD -:106B100000EBC20090F8E000C0F30113022B00F07C -:106B2000A182032B00F05182012B00F0468200F07D -:106B30000F00411E484248417047082A00F2728106 -:106B400008BF90F8D12000EBC20090F8E2000B28BB -:106B500094BF002001207047082A00F2658108BF19 -:106B600090F8D12000EBC20090F8E2000A2894BF10 -:106B7000002001207047082A00F24E8108BF90F8DB -:106B8000D12000EBC20090F8E200092894BF002059 -:106B900001207047D0F8D400C0F3C0407047082AE5 -:106BA00000F2528108BF90F8D12000EBC20090F8AB -:106BB000E200003818BF01207047082A00F238812F -:106BC00008BF90F8D12000EBC20090F8E10000F07F -:106BD0000100704790F8D800C0F340007047D0F82B -:106BE000D400C0F3C0007047D0F8D400C0F38000D8 -:106BF0007047D0F8D400C0F340007047D0F8D400FC -:106C000000F001007047082A00F2208108BF90F8C8 -:106C1000D12000EBC20090F8DC00C0F3C000704748 -:106C2000082A00F2158108BF90F8D12000EBC200BD -:106C300090F8DC00C0F380007047082A00F20A8157 -:106C400008BF90F8D12000EBC20090F8DC00C0F340 -:106C500040007047082A00F2DB8008BF90F8D1207E -:106C600000EBC20090F8DC0000F001007047D0F8A3 -:106C7000D400C0F3C0107047082A00F2D78008BFC4 -:106C800090F8D12000EBC20090F8E200042894BFF5 -:106C9000002001207047082A00F2CE8008BF90F83B -:106CA000D12000EBC20090F8E200032894BF00203E -:106CB00001207047082A00F2C18008BF90F8D12057 -:106CC00000EBC20090F8E200022894BF00200120EF -:106CD0007047082A00F29E8008BF90F8D12000EB90 -:106CE000C20090F8E200012894BF00200120704704 -:106CF000082A00F28B8008BF90F8D12000EBC20078 -:106D000090F8E200062894BF002001207047D0F8D8 -:106D1000D400C0F3C0507047D0F8D400C00F704703 -:106D2000D0F8D400C0F380707047D0F8D400C0F31E -:106D300040707047D0F8D400C0F30070704790F8EE -:106D4000D80000F001007047082A5DD808BF90F80D -:106D5000D12000EBC20090F8E200052894BF00208B -:106D600001207047D0F8D400C0F340207047D0F81D -:106D7000D400C0F3C0307047D0F8D400C0F38030E6 -:106D80007047D0F8D400C0F340307047D0F8D4003A -:106D9000C0F300307047D0F8D400C0F340407047D3 -:106DA000B0F8D60000F001007047D0F8D400C0F36E -:106DB00080407047D0F8D400C0F340507047D0F8FE -:106DC000D400C0F300507047D0F8D400C0F3805016 -:106DD0007047D0F8D400C0F340107047D0F8D4000A -:106DE000C0F300107047D0F8D400C0F38010704793 -:106DF000D0F8D400C0F380207047D0F8D400C0F39E +:10257000707265766D696469543200205C320020A7 +:102580006832002070320020803200209832002013 +:10259000A8320020F43200201033002048330020FD +:1025A0007C330020FC35002004360020684C0020DD +:1025B000EC230020AC330020183D00201036002012 +:1025C0002036002034360020483600205C360020BB +:1025D000783600208C3600209C360020B036002053 +:1025E000A748FFF715FAA749A548FFF711FA2B46A8 +:1025F0000A22D821A24825F095FEA249A048FFF75B +:1026000007FAA1499E48FFF713FAA0499C48FFF733 +:10261000FFF99C499A48FFF7FBF92B460A22C4218F +:10262000974825F07FFE97499548FFF7F1F99849BB +:102630009348FFF7FDF997499148FFF7E9F9914968 +:102640008F48FFF7E5F92B460A2218218C4825F020 +:1026500069FE8C498A48FFF7DBF98F498848FFF704 +:10266000D7F988498648FFF7D3F92B460A22782103 +:10267000834825F057FE83498148FFF7C9F982490D +:102680007F48FFF7D5F92046FFF7E4F9CDE505AC23 +:10269000824B93E80300034620468DF818100593FB +:1026A000FFF7D8F91E217E4828F088F9744825F0F4 +:1026B0001DFE00217B4828F081F9714825F016FEA7 +:1026C0004A21794828F07AF96D4825F00FFE2C212F +:1026D000764828F073F96A4825F008FE1E217448F0 +:1026E00028F06CF9664825F001FE1821714828F0A1 +:1026F00065F9634825F0FAFD21216F4828F05EF95D +:102700005F4825F0F3FD38216C4828F057F95C4804 +:1027100025F0ECFD2B216A4828F050F9584825F0A7 +:10272000E5FD3721674828F049F9554825F0DEFDD9 +:102730005421654828F042F9514825F0D7FD37214A +:10274000624828F03BF94E4825F0D0FD3B21604817 +:1027500028F034F94A4825F0C9FD43215D4828F0A6 +:102760002DF9474825F0C2FD60215B4828F026F985 +:10277000434825F0BBFD6F21584828F01FF9404819 +:1027800025F0B4FD1C21564828F018F93C4825F0E6 +:10279000ADFD2021534828F011F9394825F0A6FD58 +:1027A0002F21514828F00AF9354825F09FFD47218F +:1027B0004E4828F003F9324825F098FD48214C484E +:1027C00028F0FCF82E4825F091FD5B21494828F0BF +:1027D000F5F82B4825F08AFD5D21474828F0EEF8F2 +:1027E000274825F083FD2D21444828F0E7F82448A8 +:1027F00025F07CFD3121424828F0E0F8204825F002 +:1028000075FD24213F4828F0D9F81D4825F06EFDBC +:102810001B213D4828F0D2F8194825F067FD2046D5 +:10282000FFF718F90CB0BDE8F081384906988842E6 +:102830007FF427AD9DF81C1000297FF422AD2046BF +:1028400006F58056FFF706F90A21314828F0B6F858 +:1028500001210C4828F0B2F8B6F86038084883F433 +:102860008073C3F30021A6F8603825F033FD0448D7 +:1028700025F03CFD07E72279002A3FF409AFF6E492 +:10288000684C0020EC230020B8360020C43600201D +:10289000AC330020D8360020B03600201C2A00209F +:1028A000242A0020183D0020442A0020902A0020DD +:1028B000C02A0020E02A0020FC2A0020202B002033 +:1028C0005C2B0020882B0020C02B0020182C00201F +:1028D000502C00208C2C0020D02C0020342D0020E7 +:1028E000A42D0020C42D0020E82D0020182E00204B +:1028F000602E0020AC2E0020082F0020682F002022 +:10290000982F0020CC2F0020F42F002065627567DF +:1029100040300020BC49069888427FF4ADAC01F1FC +:102920001F61079801F5302101F2F45188427FF4CC +:10293000A3ACBDF820106E297FF49EAC2046002782 +:10294000FFF788F895F89333DA077FF59CAE1321EB +:10295000AE4828F033F8AE4825F0C8FC4FF40073B9 +:1029600006F55356A5F89073A5F89433022385F81D +:10297000977385F8933385F89873A5F8B87485F83C +:10298000BA74C5F8A073C5F8A873C5F8BC743770DD +:10299000D5F8743385F8C374D3F80431C5F8C87416 +:1029A000D3F8CC30002B3FF46EAE384698476AE639 +:1029B000984F6068B8427FF474AC2046FFF74AF83D +:1029C0000821954827F0FAFF0121944827F0F6FFE7 +:1029D000934900230A2209688D4825F0A3FC8C48FE +:1029E00025F084FC00230A22D5F84018884825F0F9 +:1029F00099FC0121894827F0E1FF0721894827F048 +:102A0000DDFF834825F072FCD5F840288649002375 +:102A10007F48A1FB021251090A2225F083FC012103 +:102A20007E4827F0CBFF0721804827F0C7FF784872 +:102A300025F05CFCD5F840287D4900237448A1FBB3 +:102A40000212D10A0A2225F06DFC0121734827F0F9 +:102A5000B5FF0521774827F0B1FF6D4825F046FC0A +:102A6000D5F84018744800230A22A0FB01016848E9 +:102A7000090C25F057FC0121684827F09FFF04212D +:102A80006E48C7E6A08868287FF400AC06F50056BB +:102A90002046FEF7DFFFD6F8F8020368DB689847A8 +:102AA0002046FEF7D7FFFFF7C0BB00F15240069F5C +:102AB000A0F52020A0F6125087427FF4ECAB00F185 +:102AC0000C50079F00F57F2000F6043087427FF40A +:102AD000E2AB9DF8200000287FF4DDAB204606F530 +:102AE0008056FEF7B7FF0E21554827F067FF0121FA +:102AF0004A4827F063FFB6F86038454883F0010381 +:102B000003F00101AFE62779002F7FF4CEAB20461A +:102B100006F58056FEF79EFF0A214A4827F04EFF31 +:102B200001213E4827F04AFFB6F86038384883F460 +:102B30000073C3F3402196E607F17347069807F147 +:102B4000041707F56D47B8427FF4B5ABBDF81C70AC +:102B5000682F7FF4B0AB2046FEF77CFF95F8443831 +:102B6000002B49D0D5F84838002B40F0D5803649A5 +:102B70002748FEF75DFF00230A2295F850182448E5 +:102B800025F0D0FB0121254827F018FF0521294811 +:102B900027F014FF1E4825F0A9FB00230A2295F810 +:102BA00051181B4825F0BEFB01211C4827F006FFE9 +:102BB00007211E4827F002FF154825F097FB002348 +:102BC0000A2295F85218124825F0ACFB012113484F +:102BD00027F0F4FE072113481CE6A18864297FF43E +:102BE0006EAB2046FEF736FF3046FFF753F920461E +:102BF000FEF730FFFFF719BB1221144827F0DEFE65 +:102C0000034825F073FBB6E76F6E6E652030002039 +:102C1000684C0020696D65007C300020EC230020AA +:102C200008BB0020883000208988888890300020E8 +:102C3000C5B3A2919830002007452EC2A0300020D5 +:102C400064300020B0300020DC300020C83000208C +:102C50002779002F7FF437AB2046FEF7FBFE39467D +:102C60007C4827F0ABFE7C4825F040FB2E217B48BA +:102C700027F0A4FE784825F039FB2E21774827F06D +:102C80009DFE754825F032FB0121754827F096FE20 +:102C90000D21744827F092FE6F4825F027FB012193 +:102CA0006F4827F08BFE06216F4827F087FE6A48A1 +:102CB00025F01CFB01216A4827F080FE11216B489A +:102CC00027F07CFE644825F011FB0121644827F0C1 +:102CD00075FE0821664827F071FE5F4825F006FB67 +:102CE00001215F4827F06AFE0C21624827F066FE4A +:102CF000594825F0FBFA2E21584827F05FFE564828 +:102D000025F0F4FA2E21554827F058FE524825F0B8 +:102D1000EDFA39464F487DE5D5F84C2893423FF609 +:102D200026AF55494C48FEF783FE24E7534B6168B4 +:102D300099427FF4CCAA204606F58056FEF78AFE1B +:102D40000D214F4827F03AFE0121454827F036FE75 +:102D5000B6F86038404883F08003C3F3C01182E5C1 +:102D6000484B616899427FF4B6AA06F58056204622 +:102D7000FEF770FE0721B6F86038434883F002037F +:102D8000A6F860385D1027F019FE012134480D4087 +:102D900027F014FE3048294625F09CFA2E4825F0ED +:102DA000A5FA002D3FF46FAC38492B48FEF740FEE2 +:102DB00037492948FEF73CFE36492748FEF738FEDA +:102DC00035492548FEF734FE5DE403F16F4306996B +:102DD00003F59F1303F6DC6399427FF484AABDF8E0 +:102DE0001C30722B7FF47FAA304610F031FCFFF7C5 +:102DF0001CBA2A4B069999427FF471AABDF81C307F +:102E0000722B7FF46CAA304610F032FCFFF70DBA3B +:102E100010491148FEF70CFE0F482149FEF708FE45 +:102E200021460D48FEF7F4FD0D490B48FEF7F0FD75 +:102E30001C490948FEF7FCFD1B490748FEF7F8FD51 +:102E400017490548FEF7F4FD02490348FEF7F0FD77 +:102E5000FFF7EBB9183D0020684C002060270020E8 +:102E6000EC230020AC270020BC270020C427002032 +:102E7000D8270020E4270020F03000206F6E730078 +:102E80001431002069637300243100202C310020AC +:102E90005431002078310020DC3100204C6179650C +:102EA000F03600201C370020343700202046FEF783 +:102EB000D1FDB349B348FEF7ABFDB349B148FEF7C6 +:102EC000A7FD7188AF4825F005FAAF49AD48FEF778 +:102ED0009FFDAE49AB48FEF79BFD2B461022718843 +:102EE000A84825F01FFAAA49A648FEF7A1FDA9495E +:102EF000A448FEF78DFDA449A248FEF789FD31885C +:102F0000A04825F0E7F9A0499E48FEF781FD9F49BA +:102F10009C48FEF77DFD2B4610223188994825F00C +:102F200001FA9B499748FEF783FD9B499548FEF7B8 +:102F30007FFD9A499348FEF76BFD93499148FEF750 +:102F400067FD2B460A2241F2FC718E4825F0EAF912 +:102F50008D498C48FEF75CFD91498A48FEF768FD73 +:102F600090498848FEF754FD87498648FEF750FD92 +:102F70002B460A2241F25C51824825F0D3F982495E +:102F80008048FEF745FD86497E48FEF751FD86499B +:102F90007C48FEF73DFD7C497A48FEF739FD2B461B +:102FA0000A223421774825F0BDF977497548FEF7A4 +:102FB0002FFD7B497348FEF73BFD7C497148FEF7C6 +:102FC00027FD71496F48FEF723FD2B460A224FF477 +:102FD00020716C4825F0A6F96B496A48FEF718FD88 +:102FE0006F496848FEF724FD71496648FEF710FDF9 +:102FF00065496448FEF70CFD0A222B4661481146DC +:1030000025F090F960495F48FEF702FD64495D488C +:10301000FEF70EFD67495B48FEF7FAFC5A4959482E +:10302000FEF7F6FC2B460A220521564825F07AF9D0 +:1030300055495448FEF7ECFC59495248FEF7F8FC54 +:103040005D495048FEF7E4FC4F494E48FEF7E0FC6E +:103050002B460A2248214B4825F064F94A49494841 +:10306000FEF7D6FC4E494748FEF7E2FC5349454877 +:10307000FEF7CEFC44494348FEF7CAFC2B460A2221 +:103080001221404825F04EF93F493E48FEF7C0FC6A +:1030900043493C48FEF7CCFC49493A48FEF7B8FCA6 +:1030A00039493848FEF7B4FC2B460A22102135482E +:1030B00025F038F934493348FEF7AAFC384931483D +:1030C000FEF7B6FC3F492F48FEF7A2FC2E492D48DB +:1030D000FEF79EFC2B460A2204212A4825F022F9FD +:1030E00029492848FEF794FC2D492648FEF7A0FC04 +:1030F00035492448FEF78CFC23492248FEF788FC1A +:103100002B460A2210211F4825F00CF91E491D48A4 +:10311000FEF77EFC22491B48FEF78AFC2B49194822 +:10312000FEF776FC18491748FEF772FC2B460A2278 +:103130000421144825F0F6F813491248FEF768FCFC +:1031400017491048FEF774FC21490E48FEF760FC51 +:103150000D490C48FEF75CFC2B460A220621094863 +:1031600025F0E0F808490748FEF752FC0C490548ED +:10317000FEF75EFC17490348FEF74AFC2CE000BF4F +:1031800084330020684C0020EC23002044330020CE +:1031900094330020A0330020183D00207C33002011 +:1031A000AC330020B4330020C4330020DC330020D3 +:1031B000F43300200C340020283400204434002054 +:1031C000603400207834002094340020B034002093 +:1031D000CC340020E4340020A349A448FEF718FCB6 +:1031E0002B460A220321A14825F09CF89E499F48BE +:1031F000FEF70EFC9E499D48FEF71AFC9D499B4830 +:10320000FEF706FC98499948FEF702FC2B460A2275 +:103210001A21964825F086F893499448FEF7F8FB62 +:1032200093499248FEF704FC93499048FEF7F0FB5F +:103230008D498E48FEF7ECFB2B460A220D218B4868 +:1032400025F070F888498948FEF7E2FB88498748ED +:10325000FEF7EEFB89498548FEF7DAFB8249834891 +:10326000FEF7D6FB2B460A220121804825F05AF8AA +:103270007D497E48FEF7CCFB7D497C48FEF7D8FBB4 +:103280007F497A48FEF7C4FB77497848FEF7C0FBD0 +:103290002B460A220F21754825F044F872497348DD +:1032A000FEF7B6FB72497148FEF7C2FB75496F48DD +:1032B000FEF7AEFB6C496D48FEF7AAFB2B460A22CF +:1032C00003216A4825F02EF867496848FEF7A0FBFD +:1032D00067496648FEF7ACFB6B496448FEF7A8FBFC +:1032E0006A496248FEF794FB5F496048FEF790FB2D +:1032F0002B460A2240F299215C4825F013F85A49DE +:103300005A48FEF785FB5A495848FEF791FB604939 +:103310005648FEF77DFB54495448FEF779FB2B468F +:103320000A228521514824F0FDFF4F494F48FEF7FE +:103330006FFB4F494D48FEF77BFB56494B48FEF764 +:1033400067FB49494948FEF763FB2B460A224E2199 +:10335000464824F0E7FF44494448FEF759FB4449F6 +:103360004248FEF765FB4C494048FEF751FB3E4999 +:103370003E48FEF74DFB2B460A220D213B4824F028 +:10338000D1FF39493948FEF743FB39493748FEF741 +:103390004FFB42493548FEF73BFB33493348FEF7C4 +:1033A00037FB2B460A220121304824F0BBFF2E496F +:1033B0002E48FEF72DFB2E492C48FEF739FB204600 +:1033C000FEF748FBFEF731BF2046FEF743FB3449CA +:1033D0002648FEF72DFB2C492448FEF729FB3149EE +:1033E0002248FEF725FB28492048FEF721FB2E49FD +:1033F0001E48FEF71DFB24491C48FEF719FBFFF78A +:1034000042B92046FEF726FB28491848FEF700FB84 +:1034100015491648FEF7FCFA25491448FEF708FB43 +:1034200024491248FEF7F4FA0F491048FEF7F0FA63 +:1034300021490E4824F04EFF0B490C48FEF7E8FAEC +:103440001E490A48FEF7E4FA2B4610221A4907489B +:1034500024F068FF0C490548FEF7EAFA42F6BC4042 +:103460003044FEF759FCC6E7EC230020684C0020EE +:10347000AC33002000350020183500203035002006 +:103480005435002068350020183D0020803500208C +:1034900090350020A0350020B8350020D43500201C +:1034A000503300205C3300206C33002018330020A0 +:1034B000002400202C3300207D7D7D00443300203B +:1034C000204606F50056FEF7C5FAAB49AB48FEF7B5 +:1034D0009FFAAB49A948FEF79BFAB6F8D81CA74853 +:1034E00024F0F8FEA649A548FEF792FAA549A3489C +:1034F000FEF79EFAA449A148FEF78AFAA0499F4820 +:10350000FEF786FA2B460A2241F2FC719B4824F012 +:1035100009FF9B499948FEF77BFA9C499748FEF7BB +:1035200087FA2046FEF796FAFEF77FBE2046FEF7A2 +:1035300091FA97499148FEF76BFA91498F48FEF747 +:1035400067FA94498D48FEF773FA93498B48FEF762 +:103550005FFA222027F01CFA71888848090A24F0B3 +:10356000B9FE8E498548FEF753FAB178834824F0B6 +:10357000B1FE222027F00CFA804824F0B7FE204646 +:10358000FEF768FAFEF751BE2046FEF763FA2046C2 +:10359000FEF760FAFEF749BE204606F58056FEF7B4 +:1035A00059FA7F497548FEF733FA75497348FEF7B3 +:1035B0002FFAB6F86038714883F00403C3F3800132 +:1035C000A6F86038FEF71AFA2046FEF743FAFEF72F +:1035D0002CBE204606F58056FEF73CFA7149674836 +:1035E000FEF716FA66496548FEF712FAB6F8603833 +:1035F0009A06C3F3401140F18D8083F04003C3F37A +:1036000080115E48A6F86038FEF7F8F92046FEF70C +:1036100021FAFEF70ABE204606F58056FEF71AFA92 +:1036200061495648FEF7F4F955495448FEF7F0F958 +:10363000B6F8603883F020039806C3F3401158BFF2 +:1036400023F04003DDE7204606F58056FEF702FA38 +:1036500056494A48FEF7DCF949494848FEF7D8F987 +:10366000B6F8603883F008031F07C3F3C00158BFE2 +:1036700023F01003C5E703F17A43069A03F53023DC +:1036800003F2D6239A427EF432AE03F13F73079AD7 +:1036900003F5373303F594739A427EF428AEBDF8F0 +:1036A00020306F2B7EF423AE2046FEF7D3F995F839 +:1036B000B431DB0732D53E493048FEF7B9F93D4910 +:1036C0002E48FEF7A5F92E492C48FEF7A1F9D5F8AA +:1036D000A8312A481988FEF791F92046FEF7BAF971 +:1036E000FEF7A3BD204606F58056FEF7B3F9324932 +:1036F0002248FEF78DF922492048FEF789F9B6F8ED +:1037000060381D07C3F3C00128D583F01003C3F34D +:10371000001176E723F040039BB272E72749174870 +:10372000FEF776F916491548FEF772F906F50053CB +:1037300006F5805693F8EE1293F9EE32002B11DB6A +:1037400001A8FEF7BFF901A90C4824F09DFD0B4824 +:1037500024F0CCFD01A824F0C9FEB0E723F010034B +:103760009BB24EE7D6F8C83A01F00F011B6803EB95 +:10377000410393F8F91EE3E7FC320020684C002077 +:10378000EC23002008330020582400204824002087 +:10379000B0320020C4320020CC3200205031002052 +:1037A0008C32002070320020683200205432002019 +:1037B00038320020001900205C3200204032002006 +:1037C00084B000F58050F0B585B00BAC84E80E00F5 +:1037D000B0F860381E0740F18F809DF82D50002D05 +:1037E00000F08A80EF2D00F28C80F02D00F26782CD +:1037F000E02D00F0D982B04900230A22AF480968C1 +:103800006E4624F08FFD0121AD4827F0D7F89DF8D2 +:103810002C30DA0700F18A839F0700F1AF835C0741 +:1038200000F1D983180700F1F983D90600F1148457 +:103830009A0600F126845B0630464CBFA149A24996 +:1038400024F090FE31469D4824F01EFD304624F0C1 +:103850004DFE01219A4827F0B1F808219B4827F036 +:10386000ADF80121964827F0A9F829463046FEF721 +:1038700099F93146914824F007FD304624F036FE90 +:1038800001218F4827F09AF80821914827F096F8EF +:1038900001218B4827F092F800230A229DF82E1070 +:1038A000864824F03FFD0121854827F087F806214E +:1038B000884827F083F80121814827F07FF800230A +:1038C0000A229DF82F107D4824F02CFD01217C4810 +:1038D00027F074F80621804827F070F80121784815 +:1038E00027F06CF800230A229DF83010734824F06A +:1038F00019FD724824F0FAFC05B0BDE8F04004B0B0 +:103900007047F82D3BD1DD06F6D56B4900230A221E +:103910006A4809686E4624F005FD0121684827F0D1 +:103920004DF89DF82C30DC0700F10F82980700F16C +:10393000CB82590700F1E1821A0700F10683DF0606 +:1039400000F130839D0600F15A835C0630464CBF7F +:103950005C495D4924F006FE3146584824F094FC49 +:10396000304624F0C3FD0121554827F027F80E21E9 +:103970005A4827F023F8514824F0B8FCBCE7A5F1D9 +:10398000F0020E2A3FF631AF01A151F822F000BF3C +:10399000415600005F5400005F5400005F54000077 +:1039A0005F5400005F5400005F5400005F5400004B +:1039B0005F5400005F540000D75700004B580000D0 +:1039C000BF5800005F5400005D5700003A490023D3 +:1039D0000A223A4809686E4624F0A4FC01213848BE +:1039E00026F0ECFF9DF82C30DF0700F1BD819D072C +:1039F00000F16F82580700F19482190700F1AF823D +:103A0000DA0600F1E3829F0600F103835D0630468B +:103A10004CBF2C492C4924F0A5FD3146274824F001 +:103A200033FC304624F062FD0121254826F0C6FF14 +:103A30000821264826F0C2FF0121214826F0BEFFBA +:103A40003046F021FEF7AEF831461C4824F01CFC4D +:103A50001A4824F04BFC304624F048FDBDF82F50A6 +:103A600007211F4826F0AAFF2946002310221348E9 +:103A700024F058FC01211B4826F0A0FFA5B1013D10 +:103A80000DF1310304340E4F13FA85F50B4E01216D +:103A9000384626F093FF14F8011F00231022304609 +:103AA00024F040FCAC42F2D10021074826F086FF0A +:103AB000024824F01BFC1FE708BB0020684C0020D4 +:103AC000EC230020741C0020183D0020BC1C0020AA +:103AD000E01C0020D01C0020D81C0020781C0020F6 +:103AE000C81C00201C2B0020DB067FF505AFA34976 +:103AF00000230A22A24809686E4624F013FC012123 +:103B0000A04826F05BFF9DF82C30DF0700F11882FB +:103B10009D0700F142825C0700F16C82180700F1FA +:103B20009182D90600F1A3829A0600F1B5825B0664 +:103B300030464CBF9449954924F014FD31469048D5 +:103B400024F0A2FB304624F0D1FC01218D4826F060 +:103B500035FF0C218E4826F031FF894824F0C6FB42 +:103B6000CAE6864900230A22854809686E4624F081 +:103B7000D9FB0121834826F021FF9DF82C30D8077E +:103B800000F1ED80990700F1B3815A0700F1C4817B +:103B90001F0700F1EE81DD0600F109829C0600F1AD +:103BA0004282580630464CBF7749784924F0DAFC07 +:103BB0003146734824F068FB304624F097FC01211D +:103BC000704826F0FBFE0D21724826F0F7FE6C4887 +:103BD00024F08CFB90E6694900230A2268480968B2 +:103BE0006E4624F09FFB0121664826F0E7FE9DF813 +:103BF0002C30D90700F1AE809A0700F174815F077D +:103C000000F180811D0700F1A581DC0600F1D4815F +:103C1000980600F10D82590630464CBF5A495B495F +:103C200024F0A0FC3146564824F02EFB304624F008 +:103C30005DFC0121534826F0C1FE1021564826F0B4 +:103C4000BDFE4F4824F052FB56E64C4900230A22A1 +:103C50004B4809686E4624F065FB0121494826F06F +:103C6000ADFE9DF82C30DA0700F183809F0700F14C +:103C700035815D0700F14B811C0700F17581D80685 +:103C800000F19F81990600F1BF815A0630464CBF72 +:103C90003D493E4924F066FC3146394824F0F4FAA7 +:103CA000304624F023FC0121364826F087FE0C2103 +:103CB0003A4826F083FE324824F018FB1CE62F49D0 +:103CC00000230A222E4809686E4624F02BFB0121AE +:103CD0002C4826F073FE9DF82C30DC0700F12B8178 +:103CE000980700F15581590700F17F811A0700F10B +:103CF000A481DF0600F1C0819C0600F1C88158064E +:103D000030464CBF2049214924F02CFC31461C4848 +:103D100024F0BAFA304624F0E9FB0121194826F0D4 +:103D20004DFE08211E4826F049FE0121154826F0C7 +:103D300045FE29463046FDF735FF3146104824F050 +:103D4000A3FA304624F0D2FBADE51649304624F004 +:103D500009FC01E61349304624F004FC62E71149EE +:103D6000304624F0FFFB23E70E49304624F0FAFBEF +:103D700053E60C49304624F0F5FB8DE708BB0020E4 +:103D8000684C0020EC230020741C0020183D00200B +:103D90001C3A0020881C0020981C0020AC1C00202D +:103DA000BC1C0020441C00209DF8305041F6FF71DF +:103DB0009DF82F706E46EA01BA4B07F07F0002F4BF +:103DC0007E520243B848C2EB82321144A3FB012366 +:103DD000B64AC91A03EB5104002311680A2224F0E1 +:103DE000A1FA0121B248640B26F0E8FD9DF82C30C1 +:103DF000A4F50054D90700F1C6809A0700F1F080BD +:103E0000580700F12481190700F12C81DA0600F12E +:103E10006781980600F16981590630464CBFA54973 +:103E2000A54924F09FFB31469F4824F02DFA3046E7 +:103E300024F05CFB01219E4826F0C0FD08219F482C +:103E400026F0BCFD01219A4826F0B8FD9C49304679 +:103E500024F088FB3146944824F016FA304624F0CA +:103E600045FB0121924826F0A9FD00230A229DF876 +:103E70002E108D4824F056FA01218D4826F09EFD23 +:103E800000230A223946884824F04CFA0121884848 +:103E900026F094FD00230A222946834824F042FAA2 +:103EA0000121834826F08AFD0321864826F086FDFD +:103EB00001217F4826F082FD21467B4824F00AFA42 +:103EC000794824F013FA17E57F49304624F04AFB7D +:103ED00042E57D49304624F045FB9EE57A4930466F +:103EE00024F040FBD8E67849304624F03BFB99E6C5 +:103EF0007549304624F036FB5AE67449304624F0C2 +:103F000031FB29E57149304624F02CFB8AE66F49E4 +:103F1000304624F027FBBFE66C49304624F022FBF4 +:103F200046E66A49304624F01DFB76E5684930468E +:103F300024F018FB86E46649304624F013FBE5E6DE +:103F40006349304624F00EFBF8E56249304624F020 +:103F500009FB01E55F49304624F004FB62E65D4958 +:103F6000304624F0FFFA58E55A49304624F0FAFA70 +:103F700092E65849304624F0F5FA19E6524930469F +:103F800024F0F0FA5EE45249304624F0EBFA4AE7B6 +:103F90004D49304624F0E6FAB8E64B49304624F065 +:103FA000E1FACBE54C49304624F0DCFAD4E44A4946 +:103FB000304624F0D7FAFBE54749304624F0D2FAE0 +:103FC00030E64549304624F0CDFA65E642493046B0 +:103FD00024F0C8FA21E53D49304624F0C3FA31E423 +:103FE0003949304624F0BEFA1DE73849304624F0FE +:103FF000B9FA8BE63549304624F0B4FA9EE53749E4 +:10400000304624F0AFFAA7E43449304624F0AAFA47 +:1040100042E63249304624F0A5FAFEE42D49304606 +:1040200024F0A0FA0EE42D49304624F09BFABFE5B7 +:104030002A49304624F096FAF4E52649304624F021 +:1040400091FA63E62349304624F08CFA76E51F495D +:10405000304624F087FAE6E61F49304624F082FA1B +:10406000FFF7F0BB1B49304624F07CFADBE61A4927 +:10407000304624F077FA61E51749304624F072FAA9 +:1040800044E61649304624F06DFAFFF7DBBB1349CE +:10409000304624F067FA39E61049304624F062FAD7 +:1040A0004CE500BF11000400684C002008BB002054 +:1040B000EC230020741C0020183D0020BC1C0020B4 +:1040C0002C3A0020D8290020481C0020501C002039 +:1040D000441C0020581C0020601C0020681C00208C +:1040E0000449304624F03EFA9DE60349304624F068 +:1040F00039FA98E6601C0020681C002070B500F5B5 +:1041000080551C46B5F860381B0622D505294C4B56 +:104110004C48164616BF18460D21062126F04EFCC7 +:104120000121494826F04AFC95F8081847483144CF +:1041300024F0D0F80121444826F040FC631E0B2BEC +:1041400074D8DFE803F01019222B343D464F586134 +:104150006A0770BD0C213E4826F030FC3B48BDE8A4 +:10416000704024F0C3B805213A4826F027FC3748B0 +:10417000BDE8704024F0BAB81021374826F01EFC84 +:104180003248BDE8704024F0B1B80421334826F02D +:1041900015FC2E48BDE8704024F0A8B80C2130482A +:1041A00026F00CFC2948BDE8704024F09FB80A2195 +:1041B0002C4826F003FC2548BDE8704024F096B852 +:1041C0000921294826F0FAFB2048BDE8704024F078 +:1041D0008DB81A21254826F0F1FB1C48BDE8704037 +:1041E00024F084B81921224826F0E8FB1748BDE8DE +:1041F000704024F07BB821211E4826F0DFFB1348D5 +:10420000BDE8704024F072B81F211B4826F0D6FB91 +:104210000E48BDE8704024F069B81E21174826F00A +:10422000CDFB0A48BDE8704024F060B80021144876 +:1042300026F0C4FB0548BDE8704024F057B800BF25 +:104240004C25002054250020EC230020684C002041 +:1042500044260020A0250020642500207825002089 +:1042600080250020902500209C250020A8250020E6 +:10427000C4250020E025002004260020242600205C +:10428000183D00202DE9F04F054685B014F0DEFC06 +:104290000746EB682E68B3F8603006F1040AD907C8 +:1042A000544621D50021654826F088FB644824F057 +:1042B0001DF80321634826F081FB0121624826F0A6 +:1042C0007DFB0821614826F079FB01215E4826F03C +:1042D00075FB08215E4826F071FB01215A4826F043 +:1042E0006DFB24F081FBA8626FF00308BFB241F2BE +:1042F0005C590E21A8EB0608564826F05FFB564E87 +:1043000007EB0903B84401374FF0000BBB4238BF3D +:104310004FF00109336805F110072B6208E033689C +:104320002A6A9B1AF92B1FD80AEB09039C4225D055 +:1043300004EB080114F8013B384601918DF80F3069 +:104340001FF040F99DF80F3001999842E7D0012302 +:104350000DF10F0238460BF1010B1FF029F83368FD +:104360002A6A9B1AF92BDFD901213C4826F026FB4B +:1043700033682B620AEB09039C42D9D101213748EB +:1043800026F01CFB2E4823F0B1FF0921344826F00B +:1043900015FB01212C4826F011FB00230A22594667 +:1043A000274823F0BFFF0121274826F007FB0521FE +:1043B0002C4826F003FB224823F098FFEB68B3F863 +:1043C0006030DA0729D50421274826F0F7FA0121C1 +:1043D0001D4826F0F3FA24F007FBAB6A0221C31A4A +:1043E000174807EE103A9FED130BB8EE477B87EEA8 +:1043F000000B23F0ABFF0121134826F0DFFA0C215C +:104400001A4826F0DBFA0E4823F070FF00210B4813 +:1044100026F0D4FA0A4823F069FF6B68D3F8083114 +:10442000DB6D5B0703D52B6B43F004032B6305B0F7 +:10443000BDE8F08F0000000000408F40183D0020D4 +:10444000684C002088370020EC230020C43E002068 +:10445000D03E0020DC3E002008BB00205031002070 +:10446000EC3E002048240020F83E0020003F0020C1 +:104470000268D2F808315B681B68DB68C3F343331A +:10448000013380F85231D2F808315B681B689B68B1 +:10449000C3F38301022906D880F86815D2F80831E1 +:1044A0005B681B689B680121C3F383130B4480F88E +:1044B0006935D2F808315B681B689B68C3F38323B6 +:1044C00001FA03F380F86A35D2F808315B681B689B +:1044D0001B6813F0100F90F87D3514BF0B4303F0E9 +:1044E000FE0380F87D3513F0010317D0D2F80811D0 +:1044F000012349680968498901F00F01194480F8CE +:104500008815D2F80821526812689268C2F30352E3 +:1045100003FA02F2D2B280F8892570471A4680F871 +:104520007D35A0F88A35C0F8843580F8783580F874 +:10453000793580F87A3580F87B3580F87C3580F8DD +:10454000883580F88925704710B5162104460D4836 +:1045500026F034FA0C4823F0C9FE42F6BC40204451 +:1045600014F068FB0146204604F580540023012224 +:104570000FF012F8D4F8783813B1BDE8104018479E +:1045800010BD00BFF4240020684C00202DE9F84F36 +:1045900000F580540746D4F8FC2707F5405513680A +:1045A000C3F3002383F0010384F80838116895F8F9 +:1045B000B431C1F3400003F00106B0421AD0002824 +:1045C00040F0D88003F0FE030020D5F8A86185F8FC +:1045D000B43185F8A4013080C5F8B001D80709D5F9 +:1045E000B44B1B68C5F8E8317823A5F8AC316423D7 +:1045F000A5F8E431536811F0080F07F50056C3F32E +:10460000C610C3F3840385F808024FF0010094F844 +:10461000CC1A14BF41F0010101F0FE0184F8CC1A5C +:1046200004F5805181F8EF325368C3F3C61CC3F31D +:10463000825386F8EDC200FA03F391F8EEC243EA22 +:104640000C0381F8EE32536813F0606FC3F34261DC +:1046500000F0D781884086F8010DD3681C21964868 +:104660004FEA931826F0AAF9012108F001089348AF +:1046700026F0A4F99248414623F02CFE904823F0FE +:1046800035FE95F83C32B8F1000F70D043F00803C6 +:1046900085F83C320023D4F8FC2707F5495011680F +:1046A000A6F8823CC90586F8813C96F8803C4CBF50 +:1046B00043F0010303F0FE0386F8803C938C03F083 +:1046C0007F0186F8601CC3F3C311DB0A86F8611C06 +:1046D00086F8623CD38C03F07F0186F8631CC3F339 +:1046E000C311DB0A86F8641C86F8653CD38D03F0A1 +:1046F0007F0286F86F2CC3F3C312DB0A86F8702C96 +:1047000086F8713CFFF7B4FED6F8EC1C0A0600F1FF +:10471000DD80CB05C1F3002800F1218188057FD41D +:104720004B052AD4B4F83A18B4F83E28B4F84A38FD +:10473000C943D243B4F84608DB43A4F83A18A4F8B6 +:104740003E28C043B4F84E18B4F85228A4F84A38AA +:10475000C943B4F85638D243A4F84608DB43A4F85A +:104760004E18A4F85228A4F85638BDE8F88F03F084 +:10477000F7038DE743F0010326E721F4806143F658 +:10478000090043F6140C0022C6F8EC1C384495F8D6 +:104790000838BC440121D5F8047823F0010341F224 +:1047A000525E85F80D2885F80838D7F8086102F2BE +:1047B0005253366806EB8303DB7AD3B94CF83230B8 +:1047C000013201310130042AC9B2EED121213D4824 +:1047D00026F0F4F80121394826F0F0F800230A22E7 +:1047E00095F80D18364823F09DFD354823F07EFDE1 +:1047F00098E795F8083806EB820685F80D1843F01F +:10480000010385F8083816F80E30C3F38103012B35 +:1048100003780CBF43F0010323F001030370CFE7DB +:1048200021F40071D5F8F4E741F23D58C6F8EC1CCC +:10483000012195F8FC37894623F0010385F8FC3700 +:10484000002385F80238A5F8FE37DEF8080103F2E8 +:104850004C5201F1010C006800EB820200EB830A6C +:10486000127B00EBC200013AC72A09D890F8322027 +:10487000013A032A04D81AF80820002A40F0C4801C +:1048800001335FFA8CF1042BDFD11E210E4826F094 +:1048900095F80121094826F091F895F802180023AF +:1048A0000A22074823F03EFD054823F01FFDD6F8F5 +:1048B000EC1C35E708BB00208C230020EC230020F3 +:1048C000684C0020CC230020AC23002021F0800184 +:1048D000C6F8EC1C97F826CF97F8270F97F8203FDB +:1048E000844597F8218F4FEAD31E97F8222F03F0C3 +:1048F0007F0300F09F8002D9E14684464846092B99 +:1049000084F86EE9D5F8A8E1A8BF0923042A03F1C9 +:104910000103A8BF0422B8F1040F03EB830302F2E2 +:104920006462A8BF4FF0040884454FEA430307EBD5 +:104930008202A4F8703907F5CC53BEF800E084F881 +:104940007489A4F87CE952681A6055D34FF4FE4389 +:10495000C1F30028A4F87239CB057FF5DFAED5F896 +:10496000DC27012041F2485C002321F4807181465C +:104970009444C6F8EC1CA5F8EA3785F8E83703EB51 +:10498000430200F1010E1CF802A00AF1FF3BBAF14C +:10499000000F2AD0D5F8D427BBF1C70FD2F80821D1 +:1049A000126802EBCA0220D892F833A092F83220A3 +:1049B000BAF1000F19D0013A032A16D8B5F8EAA7C0 +:1049C00009FA03F295F8E8B74AEA02024AFA03FA4A +:1049D0004BF0010B1AF0010F85F8E8B703D1A5F8E9 +:1049E000EA2785F8EC9785F8EF075FFA8EF0002B41 +:1049F0007FF494AE4346C2E784F872C984F8730921 +:104A000087E686F8011D28E695F8FC27B5F8FE072D +:104A100042F0010285F8FC2740FA03F2D20706D4DF +:104A200009FA03F285F800981043A5F8FE0785F807 +:104A3000021825E77F204FF0000C60E72DE9F04FCA +:104A400000F5005504462DED028B95F8F23C87B039 +:104A50000F2B17D8DFE813F020001B002B003D00C0 +:104A60004A005C00EB003A01160016001600160022 +:104A7000160016002B011000D5F8EC3C43F48023FF +:104A8000C5F8EC3C07B0BDEC028BBDE8F08F95F8A3 +:104A9000F03C002B40F0678142F6BC4000212044EE +:104AA00007B0BDEC028BBDE8F04F1BF055BFD5F849 +:104AB000F33C052BE6D803EBC30343F6A81200EB47 +:104AC00083031A4453899D041ED443F40053538135 +:104AD000D8E7D5F8F33C052BD4D803EBC30343F652 +:104AE000A81200EB83031A445389EEE7D5F8F33C90 +:104AF000052BC7D803EBC30343F6A81200EB8303CF +:104B00001A4453899C04BDD543F480435381B9E7CB +:104B1000D5F8F35C0821C648C5F3074725F04EFFDA +:104B20000121C44825F04AFF00230A223946C24821 +:104B3000EEB223F0F7FB0121BE48ADB225F03EFFF7 +:104B40000B21BE4825F03AFF0121BA4825F036FF77 +:104B50003146B94823F0BEFBB74823F0C7FB062F08 +:104B600090D0072F00F01B810E2F8BD1052E89D8F6 +:104B70004FEA860804F5405A06EB460943F6BC0B9B +:104B800008F101034FF47F02A3440027039308F1C7 +:104B90000203AB4C049308F10303059309F10103ED +:104BA000019309F102030293BAF8BC389E4212D273 +:104BB0009AF8BF38052BDAF8C43800F27B8103F885 +:104BC0000920110ADAF8C438120C01981954029914 +:104BD000DAF8C4385A54584622F012FC192023F04F +:104BE000AFFEBAF8BC389E4210D29AF8BF38052BF7 +:104BF000DAF8C43800F24F8103F80970019ADAF844 +:104C0000C4389F54029ADAF8C4389F54584622F0A8 +:104C1000F7FB192023F094FE8A4B9C4200F0608140 +:104C2000BAF8BC3854F8042F9E42C1D3D3E7D5F864 +:104C3000F37C2121844804F5405A3E0C4FF6FF795D +:104C400025F0BCFE0121F6B27A4825F0B7FE00231C +:104C50000A223146784823F065FB0121754825F08A +:104C6000ADFE7548B9B223F035FB734823F03EFB27 +:104C7000BAF8FA8AC8454BD0BAF8FC1ABAF8FE2A34 +:104C80008A4240F28780B8F1000F41D1D5F8BC0CC0 +:104C900000F58050A0F8EA24A0F8E81442F6BC40E1 +:104CA00020440190FFF7EEFA4246019834E000F507 +:104CB000405342F6BC40012293F89013204407B0C1 +:104CC000BDEC028BBDE8F04F1BF024BF00F5405A4D +:104CD0004FF6FF72BAF8FA1A91424FD119215B4888 +:104CE00025F06CFE544823F001FB4FF6FF72BAF832 +:104CF000FA1A012342F6BC40891A1A46204418BF0A +:104D0000012107B0BDEC028BBDE8F04F1CF0E4B808 +:104D100042F6BC40002220440FFA87FCBCF1FF3F62 +:104D200010D01B2E354600F093800026BAF8FA4AC0 +:104D30004FF6FF718C4205D1B44580F29480BCB22D +:104D4000012103E000254FF6FF742946AAF8FA4A2C +:104D500040F2FF3401238AF8F85AAAF8FC4A0024EA +:104D6000AAF8FE4ACDE7D5F8F31C04293FF694AE25 +:104D70000023C9B21A460EF00FFC8DE6002140F266 +:104D8000FF30AAF8FA2A8AF8F81AAAF8FC0AAAF850 +:104D9000FE1AA3E742F6BC4001222044BCE7042EE1 +:104DA0003FF670AE06EB460343F62016042504EBEF +:104DB000C30216441446737803F00107002F87F0EE +:104DC0000108BB464FEA072715BF4FF48072012246 +:104DD0004FF001094FF4807998064FEA082A08EE4F +:104DE000102A1DD5590648D54946307823F0EEFFE4 +:104DF000192023F0A5FD73789A0645D5580635D5B8 +:104E000018EE101A307823F0E1FF013D192023F04D +:104E100097FD15F0FF053FF435AE73789806E1D4A1 +:104E200043F620134146E05C23F008FEE0E700BFB4 +:104E3000EC1C0020EC230020684C0020F81C002013 +:104E4000B00E0020BC0E0020041D0020281D0020F4 +:104E500034214FF46C561CFB0161615C11F00101BF +:104E60003AD0012662E7002529466FE743F6201372 +:104E70003946E05C23F0AAFFC7E743F6201351460A +:104E8000E05C23F0A3FFB3E743F620135946E05C50 +:104E900023F0D4FDB9E703F80870039ADAF8C438B0 +:104EA0009F54049ADAF8C4389F54059ADAF8C43843 +:104EB0009F54ABE603F80820110ADAF8C4380398C7 +:104EC0001954110CDAF8C438120E049819540599C3 +:104ED000DAF8C4385A547EE60D464FF6FF7435E7CB +:104EE0000AEB060292F9D80892F8D828002829DAA5 +:104EF00002F07F02013AD2B2092A37D8264B53F882 +:104F00002220BAF8BC08864211D29AF8BF080528B8 +:104F1000DAF8C4082CD800F80920140A019B120CF6 +:104F2000DAF8C408C4540299DAF8C4385A54584616 +:104F300022F066FA052007B0BDEC028BBDE8F04F09 +:104F400023F0FEBCBAF81A098107C0F34002D8D595 +:104F500006B372085244EB07104892F8DE2854BF9B +:104F600002F00F02120950F82220CAE70022C8E717 +:104F700000F82620140ADAF8C408120C039BC45463 +:104F8000049BDAF8C408C2540022DAF8C438059940 +:104F90005A54CCE73246DDE7B00E0020D80E002090 +:104FA00000F5005310B593F8F22C04462AB1012AFB +:104FB00002D193F8F02C6AB910BD00F5405142F6C9 +:104FC000BC400123D1F81C1220440978BDE81040F0 +:104FD0001BF020BFD3F8F31C43F20C200023CAB20D +:104FE0002044C1F30721F9F7B1FC04F58053D3F84D +:104FF0005C28C2F380035207DED404F54052D2E9A4 +:105000008610027842F6BC4009782044BDE8104082 +:105010001BF000BF70B542F6BC4504460544284667 +:1050200013F08AFF002845D104F50056284613F0F6 +:10503000EFFD98B104F58053D3F85C285507C2F30F +:10504000800007D404F540524FF6FF71B2F8FA5AC7 +:105050008D4249D1D3F8743803B19847D6F8EC3C67 +:10506000190507D49A0300D470BD23F40033C6F8A1 +:10507000EC3C70BD23F400630525C6F8EC3C01212F +:1050800020460CF059FC642023F05AFC00212046F5 +:105090000CF052FC642023F053FC6B1E13F0FF0550 +:1050A000EDD104F58054D4F8E43803B19847D6F82C +:1050B000EC3CD7E7284613F08BFD78B9284604F579 +:1050C000005613F091FD0028B0D096F8F13CD3B112 +:1050D000012BABD12046FFF763FFA7E7204604F57D +:1050E0000056FFF731FAA1E7A2F8FA1A40F2FF31B1 +:1050F00082F8F80AD3F87438A2F8FE0AA2F8FC1A6B +:10510000002BAAD1AAE72046FFF798FC8EE700BF44 +:1051100043682BB1806883428CBF01200220704716 +:1051200001207047002300F5AC7C02E001335B2BCB +:105130000BD01CF833208A42F8D1184490F8E500CF +:1051400010F00E0018BF012070470020704700BF0C +:1051500070B5012284B0002604460292C1F3C61243 +:1051600033460D46CDE90026827F417F00681CF062 +:105170005DFBE37FDB070BD40A4B012041F2883152 +:105180001A681B68208621856263E36204B070BDE3 +:10519000A27F05F07F03617F009620681CF0D0F9A4 +:1051A000EAE700BF08BB00202DE9F04F89B08A462E +:1051B000BDF84840BDF84C5066089DF858C0AC4258 +:1051C000BDF85090BDF854B04FEA55072CBF2C1FC6 +:1051D000043C3F2D9DF85C10A4B28CBF083C043CFD +:1051E000A4B24FEA540E5FFA8EFEBCF1000F21D13B +:1051F0002C1BA6EB0E08764448BF01341FFA88F832 +:1052000005969EB26410644225446442ADB2A4B2D5 +:10521000069595B2002958D137443FB2BAF1000F34 +:1052200008BFD946059A08F102030434043ACDE9CF +:10523000147920E02C1BA6EB0E0C06EB0E0848BFE1 +:1052400001341FFA8CF6641005969EB26442254420 +:105250006442ADB2A4B2069595B2F1B937443FB2FB +:10526000059ABAF1000F08BFD946A8F10203043429 +:105270000432CDE914792B441544069A34441BB208 +:10528000043A24B22DB2194632441294139512B244 +:1052900009B0BDE8F04F1FF09BB8059A374408EB02 +:1052A0000503CDF80C902A443FB21BB2079012B20E +:1052B000029719460192A21912B20092069A32443C +:1052C00012B21FF085F80798CAE7059A374408EB31 +:1052D0000503CDF80C902A443FB21BB2079012B2DE +:1052E000029719460192A21912B20092069A32440C +:1052F00012B21FF06DF8079890E700BF69B170B562 +:10530000054608460C4627F061FE2B6802462146FA +:1053100028465B68BDE870401847704782B02DE9A9 +:10532000F04F95B00446BDF92051BDF824611F939C +:10533000ABB2BDF828710893A6F10C034FEA5709E8 +:105340003F2F9BB29DF88EB09DF891000693BDF85B +:105350002C3109960593BDF830310793A9F1080364 +:105360009BB20B93BDF88630CDE90312029306D8A9 +:105370002F2F40F2C780032518262B4602E0042574 +:1053800020262B46B9EB0606BDF88A10BDF88C2006 +:1053900048BF0136761000B30698521ADA46A0EBE1 +:1053A0000B0800F0B3800298B8F1000FA0EB0101E8 +:1053B00008FB01F180F2F480002A1046B8BF501CAF +:1053C000A1EB600191FBF2F802FB01F1D844002946 +:1053D00080F2DE80029A93441CE0B2EB010ADDF811 +:1053E00008B0DDF8188000F09380029A511A5246F6 +:1053F0008246069800FB01F1002A1046B8BF501CF7 +:1054000001EB600191FBF2F802FB01F1D0440029AD +:10541000C0F2C380002120460A931FF0B5FB0A9B0F +:10542000204636B2A7EB090719461FF0A7FB002359 +:105430005C490CA8E376BFB2CDE90C33CDE90E335D +:10544000CDE91033CDE91233039B1A88524405EBA2 +:10545000450A27F0D5F80CA827F0B8FD079B4FEABE +:105460004A0A0246E382A382099B66821D4423689E +:105470000AFB10515B682046490821820CA9984715 +:105480005A4648490CA827F0BBF80CA827F09EFD07 +:10549000059B0AFB10550246E3820CA96D08A38206 +:1054A000236820466682BE1C5B681FFA88FA258244 +:1054B000B6B29847089B4FF6FF729D1D049B1B8850 +:1054C000ADB293422CD09A450DD056D9059B01938D +:1054D000BDF92C3000930FFA88F3206829B232B25C +:1054E000056C2046A847049B01212046A3F800A094 +:1054F000DDE902231A801FF041FB15B0BDE8F04F33 +:1055000002B07047022510262B463BE7029A9344CF +:10551000B8F1000FB8BF08F101080AEB680879E795 +:105520000598023F099B2DB208993AB2CDF8009038 +:10553000043B0190023120681BB209B2BDF92C7006 +:10554000D0F84C902046C847079B009736B201938D +:10555000294622682046BDF91830D2F840903246DC +:10556000C847059829460FFA88F33246CDE90070FE +:105570002068056C2046A847B5E7079B5544BDF950 +:105580002C200193069B0092A3EB0A031BB2A4E715 +:10559000029A08F1010893443CE708F1FF3839E723 +:1055A000834429E730200020000000002DE9F04F5F +:1055B0002DED048B93B01E4600F51E7C92F80290F0 +:1055C000BDF9803015460C460DF1340E0493BDF83C +:1055D0008830BDF884700593BDF88C309DF89C80B0 +:1055E0000893BDF890300993BDF894300793BDF847 +:1055F00098300693BCE80F00AEE80F009DF8362007 +:10560000DCF800304A45CEF8003008D1B8F1000F80 +:105610000ED1404613B0BDEC048BBDE8F08FBDF851 +:1056200034102B88994203D1B8F1000F00F061814A +:10563000002120461FF0A8FADDED057A802FB8EE94 +:10564000E79BB6EE007B29EE077B00F08181059B8E +:10565000282B00F04681B4EE005BBBFE476B26EEC4 +:10566000056BBBFE466BFCEEC66BCDED0A6A9DF882 +:105670002810032928BF0321A1EB81031FFA81F918 +:105680005B001FFA83FBCB0006EE103AB8EEC66B48 +:1056900037EE467BDDED046AB6EE005B2046B8EEE1 +:1056A000E68B1FFA86F8B0EE486BA7EE056BBCEEF2 +:1056B000C66B16EE103A1FFA83FA1FF05FFA079BCB +:1056C0009DF83520E382A3826B789A4219D0069B1D +:1056D00031460FFA8AF2019309EB490320682682CA +:1056E0004FEAC90662829B000096066C2046B047CE +:1056F0000FA827F06BFC236802460FA95B682046C1 +:1057000098479DF834202B789A4219D04FEAC90364 +:1057100008EB07010FFA8AF200935944069B09B27D +:105720000193CBF10003206821821BB2066C204656 +:105730006282B0479DF834102046013122F0CAFD44 +:10574000012120461FF01AFAA7F1180395F80290DC +:10575000002B9DF8362003FB09F9C0F2DB8009F12C +:105760003F09884880FB0910B9F1000F4FEAE97141 +:105770004844C1EBA011C0F2E9800C3189B202FBB0 +:1057800003F30B913F338049A1FB03015B1A01EB4B +:10579000530189090C31069E4FEA570A089BBDF850 +:1057A0001090402A88BF3346784E8AB204980393FB +:1057B000A6FB0736AAF106030A92C244059AA3EB98 +:1057C0009603B60800904FEA520B434420461FFA56 +:1057D0008AFA16FA83F1ABF104021BB292B209B253 +:1057E000019109EB52014A4409B212B202911946E1 +:1057F0001EF0EEFD0499ABF10802089800910AF141 +:10580000060192B289B20E4409B233B20191069EEA +:105810009DF836103D2998BF304609EB52014A44A5 +:1058200009B2039012B22046029119461EF0D0FD33 +:10583000B6EE087B5FFA8BF00B9B0096A9EE078B08 +:1058400007EE100A4344204619B29FED4C6BFCEE64 +:10585000C87BCDED087AB8EEC77B9DF8202027EEF7 +:10586000067B0892FCEEC77BCDED067A9DF81830DA +:10587000062B38BF062306931EF0ECFC0A9B099802 +:1058800003EB0801089A069B009009B220461EF01F +:10589000E1FC0798BDF914300FFA8AF100902068F6 +:1058A000049A866B2046B0470798CDF800B03B1F9E +:1058B00001900BEB0902266808F1020120461BB299 +:1058C000F46C12B209B24FF00108A0470DAC0FCC36 +:1058D0000FC5236840462B6013B0BDEC048BBDE8B8 +:1058E000F08F4FF00209B3EE006B4FF6F47B4946A0 +:1058F000CEE6DDED057AA7F118031FFA86F8B8EEBB +:10590000E79B002BDDED047A03FB09F9B8EEE78B8A +:10591000BFF625AFA9F13F091A4880FB0910B9F17C +:10592000000F4FEAE9714844C1EBA01121DA0C31B4 +:1059300002FB03F389B213483F3B0B9180FB03103A +:10594000D9171844C1EBA0110C3124E70B3115E72E +:10595000059B402BC5D0282BC3D0059B202B7FF463 +:105960007AAE4FF00109B2EE006B4FF6FA7B494672 +:105970008EE60D31DCE700BFAFF300803333333305 +:105980003333D33F0904028111080402CDCCCCCCBF +:10599000F0B509298FB04FF000050E4604460A46BF +:1059A00005958DF81850CDE90155CDE903551ED95F +:1059B000374901A826F024FE364A234601A9127869 +:1059C000204603F8012BC4F801505D609D60DD6046 +:1059D0001D6127F009FAFF2201236575A575E2759F +:1059E00023766576A576E57620460FB0F0BD2A4988 +:1059F00001A826F005FE274B01A920461A78234668 +:105A000003F8012BC4F801505D609D60DD601D61ED +:105A100027F0EAF9FF2201236575A575E275237663 +:105A20006576A576E576032EDED8DFE806F02B2630 +:105A300021021A4F07AEDFF868C035460FCF0FC6F8 +:105A400097E8070086E807009CE803000B0C079026 +:105A5000ADF820108DF822300FCD20606160A2607B +:105A6000E36007CD206120466161A2610FB0F0BD07 +:105A70000A4F07AEDFF82CC0DFE7084F07AEDFF8AC +:105A800028C0DAE7054F07AEDFF820C0D5E700BF32 +:105A9000A818002000080020B418002018080020D2 +:105AA000D8180020D0180020C8180020C0180020E6 +:105AB00030B58DB00546144605A8FFF769FF9DF87F +:105AC0002F3000219DF82DC0013B9DF82E20CDE9FF +:105AD0000111CDE903110E2B0FD8DFE803F05A5D59 +:105AE000656D757D818597088B914C5308004C4BF3 +:105AF00093E803000190ADF80810BCF1050F00F227 +:105B00008880DFE80CF00E161E262F03454B284632 +:105B10004549002C18BF19460DB0BDE8304027F0AC +:105B200063B901AB22464149284626F069FD0DB014 +:105B300030BD01AB22443D49284626F061FD0DB041 +:105B400030BD01ABA21A3949284626F059FD0DB0E7 +:105B500030BD01AB04FB02F23449284626F050FD6B +:105B60000DB030BDB4FBF2F201AB3049284626F04F +:105B700047FD0DB030BD2E4B93E8030001908DF82A +:105B80000810BAE72B4B93E803000190ADF808101A +:105B9000B3E7294B0193B0E7284B1B68ADF80430FD +:105BA0001B0C8DF80630A8E7254B1B68ADF80430B8 +:105BB0001B0C8DF80630A0E7224B1B68ADF80430B3 +:105BC0001B0C8DF8063098E71F4B1B68ADF80430AE +:105BD0001B0C8DF8063090E76D23ADF804308CE790 +:105BE0002523ADF8043088E7184901AB03C983E8E1 +:105BF000030082E7164901AB03C983E803007CE791 +:105C0000144901AB03C983E8030076E7124B019303 +:105C100073E722461149284626F0F2FC87E700BFC9 +:105C200098300020B83A0020B43A0020DC3A002036 +:105C3000A0300020D43A002073656300BC3A0020F5 +:105C4000C03A0020C43A0020C83A0020CC3A0020D4 +:105C5000903000208830002062706D0030200020DD +:105C600000231F280B7000D9704730B500F12003C6 +:105C700089B00A4D8E460DEB030C6C460FCD0FC458 +:105C800095E80F0084E80F00054970461CF8202CA9 +:105C900009B0BDE8304026F0B3BC00BF4C3900204D +:105CA000483900202DE9F04F054685B012F0C6FFB7 +:105CB0008046EB682C68B3F86030DA0721D5002104 +:105CC000604824F07BFE604822F010FB03215F480F +:105CD00024F074FE01215E4824F070FE08215D4826 +:105CE00024F06CFE01215A4824F068FE08215A482D +:105CF00024F064FE0121564824F060FE22F074FE78 +:105D0000A862564E0E2156481FFA88F824F056FE17 +:105D100041F2FC79326808F1010305F110074FF0F8 +:105D2000000A2A6208EB0902DFF838B1A8EB040880 +:105D30009A4238BF4FF00109A14406E033682A6A4D +:105D40009B1AF92B1DD84C4523D004EB080114F8FD +:105D5000013B384601918DF80F301DF033FC9DF862 +:105D60000F3001999842E9D001230DF10F02384616 +:105D70000AF1010A1DF01CFB33682A6A9B1AF92BF1 +:105D8000E1D90121584624F019FE33684C452B62B5 +:105D9000DBD10121334824F011FE2B4822F0A6FA72 +:105DA0000921314824F00AFE0121294824F006FE89 +:105DB00000230A225146244822F0B4FA0121244843 +:105DC00024F0FCFD0521294824F0F8FD1E4822F0AE +:105DD0008DFAEB68B3F86030DB0702D405B0BDE89C +:105DE000F08F0421224824F0E9FD0121184824F015 +:105DF000E5FD22F0F9FDAB6A0221C31A124807EE55 +:105E0000103A9FED0E0BB8EE477B87EE000B22F0A9 +:105E10009DFA01210E4824F0D1FD0C21154824F0F3 +:105E2000CDFD094822F062FA0021064824F0C6FDA3 +:105E3000054805B0BDE8F04F22F058BA0000000058 +:105E400000408F40183D0020684C0020883700201B +:105E5000EC230020C43E0020D03E002008BB0020E0 +:105E6000DC3E002050310020EC3E00204824002081 +:105E7000F83E0020003F002010B4B44C84460139A5 +:105E800020681860282938D8DFE811F04A013B0162 +:105E900027011101F5003700EA003700370037000D +:105EA000370037003700D60037003700370037009B +:105EB000370037003700C20037003700370037009F +:105EC000B4003700A5009C003700930088007A00DA +:105ED000290037006C006100370054003A00012AA5 +:105EE0000BD8DCF8001002EB420241F24A500A449F +:105EF000125C013A90B27E280FD95DF8044B7047CE +:105F0000052AFAD8DCF80010C2EBC2020A4492F863 +:105F1000182F013A90B27E28EFD802EB021202F558 +:105F2000CF62885C11440028E7D018465DF8044B26 +:105F300026F05ABF0F2AE0D8DCF8001001EB42022D +:105F400092F8F82E013A90B27E28D6D8E5E7002ADA +:105F5000D3D1DCF8001091F81F2F013A90B27E28BF +:105F6000CBD8DAE7032AC8D8DCF8001002F2525284 +:105F700001EB8202127A013A90B27E28BDD8CCE7BA +:105F8000032ABAD8DCF8001002F24C5201EB82026C +:105F9000927A013A90B27E28AFD8BEE7032AACD8F5 +:105FA000DCF8001002EBC20241F2F24001EB4202C7 +:105FB0009EE73F2AA1D8DCF8001002EB820241F2F2 +:105FC0003D20F3E7072A98D8DCF8001002EBC20264 +:105FD00041F2AD10EAE73F2A8FD8DCF8001002EB5F +:105FE000820201EB420292F82D2F013A90B27E28F4 +:105FF00083D892E7002A80D1DCF8001001F58052A6 +:1060000092F8EC24013A90B27E283FF676AF84E70E +:10601000052A3FF672AFDCF8041002EB4202DCF80E +:106020000000D1F80811497A01EB411401EB840119 +:1060300041F2D3540A4429E0052A3FF65EAFDCF86A +:10604000041002EB8202DCF80000D1F80811497A52 +:1060500001EB411401EB840141F2B5540A4415E00F +:10606000042A3FF64AAFDCF8001002EB420241F28C +:10607000D7400A443CE7012A3FF63FAF02EB42011A +:10608000DCF8000041F2BD4402EB81020244125DE3 +:10609000013A91B27E293FF630AF02EB021202F5CF +:1060A000CF62845C8118002C3FF427AF3DE7052ABE +:1060B0003FF623AFDCF8044002EB4201DCF80000BD +:1060C000D4F8084102EB8102617A01EB411401EB43 +:1060D000840141F267540A44D8E77F2A3FF60DAFA6 +:1060E000013292B2802A3FF408AF02EB0212DCF8D0 +:1060F000001002F26762885C114400283FF4FDAE94 +:1061000013E7C72A3FF6F9AEDCF8001001EBC20234 +:1061100092F83820013A90B27E283FF6EEAEFCE6C7 +:10612000042A3FF6EAAEDCE90012D2F80821527ADE +:1061300002EB421002EB80020A4402F5AB521278E5 +:10614000013A90B27E283FF6D8AEE6E6343D002014 +:106150000368D3F808312DE9F04115465A68044622 +:106160008AB012680E461268900516D4E268196863 +:1061700006F00703127843EAC203402BA8BF0023AE +:1061800003EB830301EB430393F82D3F002B37D13F +:106190002B78B3B10AB0BDE8F0810022ADF804203D +:1061A000E26812781F2A3DD90DF104081B7A424695 +:1061B00036492846334426F023FA2368D3F80831B9 +:1061C000D4E72268D2F808215168096809684905AE +:1061D0001FD52F49ADF8053091F83410E3688DF8DC +:1061E00004101B781F2B37D90DF10408137A42468F +:1061F00028492846334426F003FA0AB0BDE8F08166 +:1062000003EB0313284603F26763194426F0CAFB25 +:10621000BEE7127A2846204932440AB0BDE8F04170 +:1062200026F0EEB902F128031C4F0DF1080C0DF118 +:1062300004080DEB030E0FCFACE80F0097E80F003A +:106240008CE80F00164940461EF8202C26F0D8F99D +:106250002368D3F80831A9E72833DFF840C002AF3C +:106260000DF104080DEB030EBCE80F000FC79CE80E +:106270000F0087E80F000A4940461EF8202C26F040 +:10628000BFF92368D3F80821B0E700BF2816002023 +:106290000008002030160020302000204C3900205B +:1062A0004839002007292BD838B583680C460546A5 +:1062B0001A788A4200D138BD1C700D21114824F093 +:1062C0007DFB0121104824F079FB00230A2221469E +:1062D0000E4822F027F80D4822F008F82B7F2A6894 +:1062E00043F001032B771368D3F808315B681B6810 +:1062F000DB68DB06DFD500212846F8F729FC38BD2E +:10630000704700BF7C290020EC230020684C00204F +:1063100070B59DF810C005469DF81440A44503D8FB +:106320004ED0204664468446BCF1070F28BF4FF08C +:10633000070C082C28BF0024AE68307849B103440C +:10634000002A38D063450ADCA34207DAA04208D10C +:1063500070BDC31A5ABBA342B8BF2346DCB2A042E9 +:10636000F6D0072CF4D80D211748347024F026FB02 +:106370000121164824F022FB00230A22214614485A +:1063800021F0D0FF124821F0B1FF2B7F2A6843F0A3 +:1063900001032B771368D3F808315B681B68DB684F +:1063A000DB06D5D500212846F8F7D2FB70BDA34205 +:1063B000D4DA6446D3E76345FBDCA342CEDAC5E713 +:1063C0004FF0070C0024B7E77C290020EC230020C5 +:1063D000684C002010B59DF808E09DF80CC0E6451B +:1063E00003D832D06446F446A646BEF10F0F28BF4C +:1063F0004FF00F0EBCF1100F28BF4FF0000CC46817 +:10640000247859B12344DAB173450EDC63450CDBC3 +:106410005FFA83FC6146F8F79BFB10BDE31A42B9B3 +:106420009C45B8BF9C465FFA8CFC6146F8F790FB30 +:1064300010BD6345ECDAF4466146F8F789FB10BD00 +:106440007345F8DC6345E3DAEFE74FF00F0E4FF0EA +:10645000000CD4E710B59DF808E09DF80CC0E645A7 +:1064600003D832D06446F446A646BEF1070F28BFD3 +:106470004FF0070EBCF1080F28BF4FF0000CC468A6 +:10648000247859B12344DAB173450EDC63450CDB43 +:106490005FFA83FC6146F8F7E9FA10BDE31A42B9E6 +:1064A0009C45B8BF9C465FFA8CFC6146F8F7DEFA63 +:1064B00010BD6345ECDAF4466146F8F7D7FA10BD33 +:1064C0007345F8DC6345E3DAEFE74FF0070E4FF072 +:1064D000000CD4E707290B46944670B58AB00CD857 +:1064E000026801EBC10141F2AD141268D2F8082133 +:1064F000126802EB4101095D59B9426860462049C2 +:10650000D2F80821127A1A440AB0BDE8704026F089 +:1065100077B800230139CDE90033CDE902338DF896 +:1065200010308BB27F2B20D801EB011105AC6E46E9 +:1065300002EB010E2546DEF88436DEF87806DEF83A +:106540007C16DEF880260FC59EF888362B70A6468E +:106550003446BEE80F000FC4DEF800303146604616 +:10656000237026F041FC0AB070BD6E4605AC35467E +:10657000A6460FCDAEE80F002B688EF80030E6E798 +:106580007C170020944602688368126830B5D2F800 +:1065900008218E461B7841F2AE1112688BB003EBD6 +:1065A000C30302EB4303595C71450DD941F2AF11AE +:1065B00073445B5C41F23D21013B9BB203EB8303DF +:1065C00002EB43035B5C5BB9436860461B49D3F84D +:1065D00008311A7A72440BB0BDE8304026F010B88A +:1065E0000021013BCDE90511CDE907118DF82410FB +:1065F00099B27F2917D803EB03136D4602EB030E04 +:106600002C46DEF88436DEF87806DEF87C16DEF8F6 +:1066100080260FC49EF8883623702946604626F0EF +:10662000E3FB0BB030BD6D4605ACAE460FCCAEE81B +:106630000F0023688EF80030EFE700BF94170020AA +:10664000436984461B88402B30B514468BB08E4678 +:1066500002681CD8126803EB8303D2F80821116882 +:1066600041F23E2201EB43039A5C82B196450ED281 +:10667000734441F23F229B5C013B9BB23F2B06D807 +:1066800003EB830301EB430393F82D3F63B9DCF87D +:10669000043020461D49D3F808311A7A72440BB0F1 +:1066A000BDE8304025F0ACBF0022013BCDE905221A +:1066B000CDE907228DF824209AB27F2A19D803EB5E +:1066C00003136D4601EB030CAE46DCF88436DCF8B0 +:1066D0007806DCF87C16DCF88026AEE80F009CF823 +:1066E00088368EF800302946204626F07DFB0BB018 +:1066F00030BD6D460DF1140EAC46BEE80F00ACE89F +:106700000F00DEF800308CF80030ECE7881700202E +:10671000642966D8DFE811F06E0261025402470274 +:10672000650042023D023802330232032D03650048 +:1067300065006500650037037B0265006500650044 +:106740006500650065006500650065006500650021 +:106750006500650065006500650065006500650011 +:106760006500650065004103F6023C0352010A031F +:1067700005030003FB026500650014030F03190302 +:106780000E0223031E032803CB022F012A01250139 +:1067900020016500650065006500DE02D902650024 +:1067A0006500D402D002E3022E0221021302AD02E0 +:1067B0009E028F028002E802BC0243013401FF0105 +:1067C000F001E101C601AB01900172015701050121 +:1067D000EA00CC00B000940079006C006500650010 +:1067E00067000020704790F8D00000F0010070476B +:1067F000082A00F2F58208BF90F8D12000EBC20011 +:1068000090F8E000C0F380107047082A00F2FC8284 +:1068100008BF90F8D12000EBC20090F8E030C3F33D +:10682000011203F00F03022A00F06983032A00F02B +:106830005F83012A00F057830B3B58425841704751 +:10684000082A00F2E38208BF90F8D12000EBC200D2 +:1068500090F8E030C3F3011203F00F03022A00F0B6 +:106860000483032A00F0E582012A00F0DD82A3F10F +:106870000A02504250417047082A00F2C38208BF02 +:1068800090F8D12000EBC20090F8E030C3F3011281 +:1068900003F00F03022A00F02183032A00F04C8347 +:1068A000012A00F04483A3F109014842484170479E +:1068B000082A00F2A58208BF90F8D12000EBC200A0 +:1068C00090F8E000C0F30113022B00F07583032B56 +:1068D00000F06083012B00F0558300F00F00A0F161 +:1068E000080CDCF1000040EB0C007047082A00F2B5 +:1068F0008F8208BF90F8D12000EBC20090F8E03002 +:10690000C3F3011203F00F03022A00F0C182032A2D +:1069100000F0B582012A00F0AD82073B5842584191 +:106920007047082A00F2568208BF90F8D12000EB89 +:10693000C20090F8E000C0F30113022B00F0AD821A +:10694000032B00F04183012B00F0178300F00F00B0 +:10695000821F504250417047D0F8D400C0F3C0604D +:106960007047D0F8D400C0F380607047D0F8D400EE +:10697000C0F34060704790F8D70000F00100704706 +:10698000082A00F22F8208BF90F8D12000EBC20045 +:1069900090F8E200082894BF002001207047082AE0 +:1069A00000F2008208BF90F8D12000EBC20090F8FE +:1069B000E200072894BF002001207047D0F8D400DF +:1069C000C0F3C0207047082A00F2168208BF90F872 +:1069D000D12000EBC20090F8E030C3F30112022A8C +:1069E00000F06282032A00F06E82012A00F06382C6 +:1069F00003F00F03591F484248417047082A00F22C +:106A0000FD8108BF90F8D12000EBC20090F8E02093 +:106A1000C2F30113022B00F09782032B00F07C825B +:106A2000012B00F0718202F00F02A2F1040CDCF1E4 +:106A3000000040EB0C007047082A00F2BF8108BF3D +:106A400090F8D12000EBC20090F8E000C0F30113F1 +:106A5000022B00F0C682032B00F0CA82012B00F04B +:106A6000A38200F00F00C31E584258417047082A05 +:106A700000F2D08108BF90F8D12000EBC20090F85E +:106A8000E020C2F30113022B00F0C681032B00F0BB +:106A9000E181012B00F0D68102F00F02023A504250 +:106AA00050417047082A00F28B8108BF90F8D1202E +:106AB00000EBC20090F8E000C0F30113022B00F0DD +:106AC000A182032B00F05182012B00F0468200F0DE +:106AD0000F00411E484248417047082A00F2728167 +:106AE00008BF90F8D12000EBC20090F8E2000B281C +:106AF00094BF002001207047082A00F2658108BF7A +:106B000090F8D12000EBC20090F8E2000A2894BF70 +:106B1000002001207047082A00F24E8108BF90F83B +:106B2000D12000EBC20090F8E200092894BF0020B9 +:106B300001207047D0F8D400C0F3C0407047082A45 +:106B400000F2528108BF90F8D12000EBC20090F80B +:106B5000E200003818BF01207047082A00F238818F +:106B600008BF90F8D12000EBC20090F8E10000F0DF +:106B70000100704790F8D800C0F340007047D0F88B +:106B8000D400C0F3C0007047D0F8D400C0F3800038 +:106B90007047D0F8D400C0F340007047D0F8D4005C +:106BA00000F001007047082A00F2208108BF90F829 +:106BB000D12000EBC20090F8DC00C0F3C0007047A9 +:106BC000082A00F2158108BF90F8D12000EBC2001E +:106BD00090F8DC00C0F380007047082A00F20A81B8 +:106BE00008BF90F8D12000EBC20090F8DC00C0F3A1 +:106BF00040007047082A00F2DB8008BF90F8D120DF +:106C000000EBC20090F8DC0000F001007047D0F803 +:106C1000D400C0F3C0107047082A00F2D78008BF24 +:106C200090F8D12000EBC20090F8E200042894BF55 +:106C3000002001207047082A00F2CE8008BF90F89B +:106C4000D12000EBC20090F8E200032894BF00209E +:106C500001207047082A00F2C18008BF90F8D120B7 +:106C600000EBC20090F8E200022894BF002001204F +:106C70007047082A00F29E8008BF90F8D12000EBF0 +:106C8000C20090F8E200012894BF00200120704764 +:106C9000082A00F28B8008BF90F8D12000EBC200D8 +:106CA00090F8E200062894BF002001207047D0F839 +:106CB000D400C0F3C0507047D0F8D400C00F704764 +:106CC000D0F8D400C0F380707047D0F8D400C0F37F +:106CD00040707047D0F8D400C0F30070704790F84F +:106CE000D80000F001007047082A5DD808BF90F86E +:106CF000D12000EBC20090F8E200052894BF0020EC +:106D000001207047D0F8D400C0F340207047D0F87D +:106D1000D400C0F3C0307047D0F8D400C0F3803046 +:106D20007047D0F8D400C0F340307047D0F8D4009A +:106D3000C0F300307047D0F8D400C0F34040704733 +:106D4000B0F8D60000F001007047D0F8D400C0F3CE +:106D500080407047D0F8D400C0F340507047D0F85E +:106D6000D400C0F300507047D0F8D400C0F3805076 +:106D70007047D0F8D400C0F340107047D0F8D4006A +:106D8000C0F300107047D0F8D400C0F380107047F3 +:106D9000D0F8D400C0F380207047D0F8D400C0F3FE +:106DA0000020704700207047002070470020704787 +:106DB0000020704700207047002070470020704777 +:106DC0000020704700207047002070470020704767 +:106DD0000020704700207047002070470020704757 +:106DE0000020704700207047002070470020704747 +:106DF0000020704700207047002070470020704737 :106E00000020704700207047002070470020704726 -:106E10000020704700207047002070470020704716 -:106E20000020704700207047002070470020704706 -:106E300000207047002070470020704700207047F6 -:106E400000207047002070470020704700207047E6 -:106E500000207047002070470020704700207047D6 -:106E600000207047002070470020704700207047C6 -:106E7000002070470020704712F00E00D9D012F0A9 -:106E80000F0018BF01207047092B94BF002001207C -:106E90007047062B00F2FB80053B012B8CBF0020C6 -:106EA0000120704702F00F03013B012B8CBF002033 -:106EB0000120704702F00F03062B00F2EC80053B27 -:106EC000012B8CBF002001207047092B94BF0020AC -:106ED00001207047062B94BF002001207047062B2D -:106EE00000F2DB80023B042B8CBF002001207047A6 -:106EF000062B94BF00200120704700F00F000528EA -:106F000094BF00200120704703F00F03042B94BFAF -:106F100000200120704703F00F00013804288CBFC7 -:106F200000200120704703F00F03062B00F2B7800A -:106F3000023B042B8CBF002001207047082B94BF1C -:106F40000020012070470A2B94BF002001207047C9 -:106F5000062B00F2A6800CBF0120002070470A2BF0 -:106F600094BF00200120704702F00F03013B032B68 -:106F70008CBF00200120704702F00F03062B00F2A7 -:106F80008880033B032B8CBF002001207047082B17 -:106F900094BF002001207047062B70D8043B022BC1 -:106FA0008CBF00200120704712F00C003FF441AF6D -:106FB00012F00F0018BF0120704710F00E0F58D1CB -:106FC00010F00F0018BF0120704700F00F000628D6 -:106FD0005BD80CBF01200020704710F00F0018BFD5 -:106FE0000120704710F0080345D010F00F0018BFC3 -:106FF0000120704700F00F00062844D8033803280A -:107000008CBF00200120704710F00C0F35D110F01C -:107010000F0018BF0120704710F0080327D010F0B0 -:107020000F0018BF0120704700F00F0001283FF447 -:1070300000AF062837D8023804288CBF0020012072 -:10704000704700F00F00022894BF00200120704715 -:1070500000F00F00062814D8043802288CBF002046 -:107060000120704710F00F0018BF0120704718462C -:107070007047002070471846704700207047012075 -:1070800070470120704701207047012070470120A0 -:107090007047012070470120704701207047012090 -:1070A0007047012070470120704700BFD0F8D430EE -:1070B00030B50446D80783B014D49A0724D50029E4 -:1070C00042D101250023204605211A460095F7F7F5 -:1070D000C7FD2B460022052120460095F7F7C0FD8D -:1070E00003B030BDE9B9012500230A2120461A4624 -:1070F0000095F7F7B5FD2B4600220A2120460095A2 -:10710000F7F7AEFD03B030BD5D0708D418072CD4E7 -:10711000DA0654D49B06F5D50029D2D13EE00029E9 -:107120004FD101250023204606211A460095F7F786 -:1071300097FD2B460022062120460095F7F790FD8B -:1071400003B030BD042B17D10125002320460721B1 -:107150001A460095F7F784FD2B46002207212046AA -:107160000095F7F77DFD03B030BD04230029E9D079 -:10717000032B03F101020FD1012500232046082132 -:107180001A460095F7F76CFD2B4600220821204691 -:107190000095F7F765FDB5E7052AA4D10125002381 -:1071A000204609211A460095F7F75AFD2B46002282 -:1071B000092120460095F7F753FD03B030BD0523A4 -:1071C000D4E70323D4E700BF70B5043984B0054683 -:1071D0001C4610469DF820C05F2948D8DFE801F022 -:1071E000304949494949496D6D9292474747474758 -:1071F000474747474747474747474747474747471F -:10720000474747474747474747474747474747470E -:107210004747474747474747475A5A808047DEA472 -:10722000C047474747474747474747474747474775 -:1072300047473030303030303030303030304E4EE4 -:10724000072A4FF000014FF0010288BF95F8D100E6 -:10725000002C40F0100314BF144641240191114644 -:107260006444286C0292E4B200941AF07DFA04B0EF -:1072700070BD21462846FFF719FFF8E7002C40F0C3 -:10728000E180012123462246284600916221F7F73A -:10729000E7FCECE7002C40F0C5800126234622469F -:1072A00028463D210096F7F7DBFC334622463D2178 -:1072B00028460096F7F7D4FCD9E7002C40F0A280CE -:1072C00001262346224628460B210096F7F7C8FCE4 -:1072D000334622460B2128460096F7F7C1FCC6E745 -:1072E000002C7FD101262346224628463F210096C6 -:1072F000F7F7B6FC334622463F2128460096F7F7BB -:10730000AFFCB4E7002C5DD1012623462246284677 -:107310000D210096F7F7A4FC334622460D2128469E -:107320000096F7F79DFCA2E7072A40F2968095F8B1 -:10733000D130082B40F28F800CF1010C0133CCEBE3 -:107340000C1CDAB24FEA8C03002C40F09A802146E4 -:10735000CB1A51498B42B8BF0B4600241BB215E033 -:107360000CF1010CB5F9DA30CCEB0C1C4FEA8C0CAB -:10737000E4B913F5005F7FF77AAFA3EB0C03464A3D -:107380009342B8BF134600241BB20922286C012186 -:10739000089404B0BDE870401AF04ABE002C4FF0CB -:1073A00001024FF000014FF03C0354E741F6FA129E -:1073B00093423FF75CAF634441F6FB129342A8BF90 -:1073C0001346E0E70124002328460E211A460094C4 -:1073D000F7F746FC234600220E2128460094F7F7D3 -:1073E0003FFC44E701240023284640211A4600942C -:1073F000F7F736FC23460022402128460094F7F791 -:107400002FFC34E70124002328460C211A4600945F -:10741000F7F726FC234600220C2128460094F7F7B4 -:107420001FFC24E70124002328463E211A4600942D -:10743000F7F716FC234600223E2128460094F7F772 -:107440000FFC14E701240023632128461A46009408 -:10745000F7F706FC0BE7184600D003460CF1010CC9 -:10746000013305EBC000CCEB0C1CDAB2B0F9DE1036 -:107470004FEA8C035CB141F6FA1081423FF7F7AE58 -:107480000B4441F6FB118B42A8BF0B4665E711F593 -:10749000005F7FF7ECAE5BE700E0FFFF10B54FF059 -:1074A000000C82B000F5AC7404E00CF1010CBCF1EE -:1074B0005B0F16D014F83CE08E45F6D184449CF85E -:1074C000E54014F00E0418BF0124A2424FF002045C -:1074D00018BF13460A460B210094F8F73FF902B093 -:1074E00010BD0024F1E700BF00B5C37F13F0010E0B -:1074F00010D0002300F5AC7C02E001335B2B09D0F7 -:107500001CF833208A42F8D1184490F8E530DB4368 -:1075100003F0010E70465DF804FB00BFC27FD30785 -:1075200004D590F84F3113F0010300D0704700B537 -:1075300083B0012211210093F8F710F903B05DF830 -:1075400004FB00BFC27FD20703D590F84F31DB07A1 -:1075500000D470470023112100B583B01A46009370 -:10756000F8F7FCF803B05DF804FB00BFC37FDB074E -:107570007FD510B5044682B00B2915D8DFE801F09D -:10758000693608161924272A2D484F59DB070BD4D2 -:107590000023012200930F212046F8F7DFF8354B36 -:1075A0000A221B68A282A36102B010BD002303223D -:1075B000F0E790F823309907F6D513F00103E7D1EF -:1075C0001A460F21009316E000230422E2E700236D -:1075D0000522DFE700230222DCE790F823309A0738 -:1075E0003CD4DB07D4D42389D807D1D400230F217E -:1075F00020461A460093F8F7B1F823891D4A0A215C -:1076000043F001031268A1822381A26102B010BD80 -:1076100090F82330990721D4DA07E7D4E3E790F80C -:107620002330580720D1238923F00103238102B09E -:1076300010BD90F823309907A8D5DA07B4D45907BC -:107640000FD502212046FFF791FFE37FDB079FD490 -:10765000AAE790F82330D807F3D4F0E7DB0797D4F4 -:10766000C4E79A0794D49FE700212046FFF77EFFE6 -:10767000D9E77047E8BA002070B5044684B01646D2 -:107680001D46052910D8DFE801F00330354A5D11A9 -:10769000012100227F254023CDE901216279A179D2 -:1076A000206800951AF060F804B070BD0379C279C3 -:1076B000022BF9D85D4EF15C002A6CD0551E022BCE -:1076C000EDB26CD1093A012A4DD9022DECD8012135 -:1076D000002200954523CDE901216279A179206836 -:1076E0001AF042F8E57104B070BD012100227F2537 -:1076F0004423D1E70379022B5BD0D5D84B4AD35C26 -:10770000B342D1D90121002200964523CDE90121C0 -:107710006279A17920681AF027F8E671C4E7037945 -:10772000022BC1D8414AAE42D15C324638BF2A460C -:10773000D2B29142B8D9C279B24218BF3546022BB3 -:10774000C3D0C4E70379C179022BADD8374E4D1CA5 -:10775000F05C421ED2B2954224DC022BEDB225D160 -:1077600007390129B1D8012200230095CDE9013262 -:1077700045236279A179206819F0F6FF082D1FD101 -:107780002279E379022A03D80133B25C93428BDB7E -:107790000023E37188E74D1E022BEDB295D08D4298 -:1077A00095D381E7022B4FF0000590D0A8428ED8E8 -:1077B0007AE7A2F10803012B10D9022AA2D973E7B4 -:1077C000092D8FD1E379002B7FF46EAF2379022B43 -:1077D00029D8F35C013BDBB2E37165E701210022AC -:1077E00000964523CDE9012142798179006819F09D -:1077F000BBFF082E0AD12279E379022AC8D80B49A7 -:1078000001338A5C9342FFF64FAFC1E7E379002B67 -:107810007FF44AAF2379022B05D8044AD35C013B9D -:10782000DBB2E37140E7FF23E3713DE7AC0F0020DB -:1078300030B5027985B00446C379022A0ED82C48A7 -:10784000805C451EEDB269B10133AB420EDCDDB2A6 -:10785000022A1DD0A8420DD805B030BDFF2500205A -:107860000029F1D1002BF3D0013BF0E7022A4FF0C1 -:107870000005EFD10121002200954523CDE901212A -:107880006279A179206819F06FFFE57105B030BD0C -:10789000A5F10803012B03D9022DEBD905B030BDAA -:1078A0000121002200954523CDE901216279A179CA -:1078B000206819F059FF082D0BD12279E379022AAB -:1078C00004D80B4901338A5C9342C5DB0023E37182 -:1078D000C2E7E379002BBFD12379022B05D8044AF4 -:1078E000D35C013BDBB2E371B6E7FF23E371B3E79F -:1078F000AC0F002030B5037985B004460D46022B4D -:1079000012D00FD8204AD35C8B420BD90121002220 -:1079100000954523CDE901216279A179206819F00C -:1079200023FFE57105B030BDA1F10803012B03D998 -:107930000229EBD905B030BD012100220095452375 -:10794000CDE9012142798179006819F00DFF082DF8 -:107950000BD12279E379022A04D80B4901338A5CDE -:107960009342DFDB0023E371DCE7E379002BD9D11D -:107970002379022B05D8044AD35C013BDBB2E371C7 -:10798000D0E7FF23E371CDE7AC0F00200379022B92 -:1079900021D830B51546104A044685B0A942D05CBE -:1079A0000A4638BF2A46904213D9E2798A4218BF64 -:1079B0000D46022B01D1022D0BD80121002200958A -:1079C0004523CDE901216279A179206819F0CCFE27 -:1079D000E57105B030BD7047AC0F0020437B13F05C -:1079E000010F31D0F0B51646A1F16402044685B00E -:1079F00010060D46D7B228D5152923D8DFE811F097 -:107A0000160085008D009900A500B20025012A010D -:107A10002F0135013B01410156016E015F01F30069 -:107A2000060119011D01CC00E000B70056B101218B -:107A300000225023009602910192227E617E2068EE -:107A400019F092FE05B0F0BD70473121B14822F027 -:107A500041FF0121B04822F03DFF00230A222946C0 -:107A6000AE4820F0E9FB0121AB4822F033FF0023B0 -:107A70000A223146A94820F0DFFBA84820F0C0FBCD -:107A8000637BDA0735D42F21A54822F023FF01219B -:107A9000A14822F01FFF00230A2239469F4820F008 -:107AA000CBFB01219C4822F015FF00230A2231461E -:107AB0009A4820F0C1FB994820F0A2FB7FB17F2EAD -:107AC0000DD1637BDB07BDD500220121712300921C -:107AD000CDE90121227E617E206819F045FE637B9D -:107AE000DE07AFD5A27E002AACD15D07AAD4A77667 -:107AF000A8E7012200230097CDE901327123227EFD -:107B0000617E206819F030FEBDE7002E9AD0012179 -:107B100000225123009602918EE7002101206F235D -:107B2000227E0091CDE90110617E206819F01CFED3 -:107B300088E7012100206F23227E0091CDE9010119 -:107B4000617E206819F010FE7CE7012100227F256C -:107B50006F23CDE90121227E617E2068009519F016 -:107B600003FE6FE7012100227F257023F1E783F0F8 -:107B70004002980648BF02F0DF0212F0400F627325 -:107B800014BF7F210021D3077FF55CAF01200022C5 -:107B90005323009102904FE7012100257723227E95 -:107BA0000091CDE90151617E206819F0DDFD637B14 -:107BB000257323F06403658343F01003637341E787 -:107BC00083F020025E0648BF02F0BF0212F0200FD1 -:107BD000627314BF7F210021D5077FF533AF0120E9 -:107BE00000225223D5E7012100227F205223CDE934 -:107BF0000121227E617E0090206819F0B5FD637B33 -:107C000023F0400343F0200363731BE701210022AC -:107C10007F205323CDE90121227E617E00902068E0 -:107C200019F0A2FD637B23F0200343F0400363734C -:107C300008E70121002076237EE700250121227E2E -:107C400077230095CDE90151ADE7012100227F2581 -:107C500073237EE7012100227F25752379E7012127 -:107C600000226C2300960291E6E6012100226D239A -:107C700000960291E0E6012100226E230096029117 -:107C8000DAE6012100227F207223CDE90121227E44 -:107C9000617E0090206819F067FDA37E002B7FF4C1 -:107CA000D1AE637B03F00103A376CBE60023FC2275 -:107CB000617E206805B0BDE8F04019F0C3BB9806AE -:107CC00015D45A067FF5BEAE03F0BF03DF0763731A -:107CD0007FF5B8AE00210120532321E7002E3FF4A9 -:107CE000B1AE01210022742300960291A4E603F0B4 -:107CF000DF03D9076373E4D500210120227E5223DC -:107D00000091CDE90110617E206819F02DFD637BA3 -:107D1000D7E700BFC0170020EC230020A84B0020AD -:107D2000F4170020437BDA077FD5A1F12803B3F5D0 -:107D3000827F2DE9F04F0D4687B002D907B0BDE82C -:107D4000F08F027E044600684FF0010A531E4FF088 -:107D500000094FF06A0B03F00F0303EB831300EBF2 -:107D6000430393F8718193F8727193F8796193F8F2 -:107D70007A31CDF800B005936323CDE9019A617E95 -:107D800019F0F2FC637BDB0750D4059B08F07F08F9 -:107D9000216807F07F0703F07F02237E06F07F064D -:107DA000013B03F00F0303EB831301EB430383F861 -:107DB0007181D1F808012168C36D43F02003C365C8 -:107DC000237E013B03F00F0303EB831301EB43031B -:107DD00083F87271D1F80811CB6D43F02003CB65A5 -:107DE000237E2168013B03F00F0303EB831301EBB8 -:107DF000430383F87961D1F808012168C36D43F02A -:107E00002003C365237E013B03F00F0303EB8313C1 -:107E100001EB430383F87A21D1F80821D36D43F0B5 -:107E20002003D36507B0BDE8F08F70476B23CDE921 -:107E3000019A00936223227E2068617E19F094FCEF -:107E4000627BC5F3C713D0079FD500935B4605F04F -:107E50007F05CDE9019A617E227E206819F084FCBD -:107E6000637BD90791D500956B23CDE9019A227EDA -:107E7000617E206819F078FC637BDA0785D57F2561 -:107E80006323CDE9019A0095227E617E206819F076 -:107E90006BFC637BDB077FF578AF00956223CDE950 -:107EA000019A227E617E206819F05EFC6DE700BFBA -:107EB000A9B110B584B0437B1AB9DB0710D404B064 -:107EC00010BDDA07FBD50124002250238DE81600EF -:107ED000027E417E006819F047FC04B010BD704777 -:107EE00001245123CDE90012027E417E00680294F4 -:107EF00019F03AFC04B010BD2DE9F04F01F0030475 -:107F000089B080461546012C04AF9C4697F838602E -:107F100006D0022C50D094B31437BD46BDE8F08F84 -:107F2000032B0DD8006803EBC30341F2F341D0F8F3 -:107F30000821126802EB43035B5C002B40F0AB802E -:107F4000032EE9D8D8F8000006EBC60341F2F3414E -:107F5000D0F80821126802EB43035B5C002BDBD0F6 -:107F600012242946012504FB062400220295CDE9AE -:107F7000002241F2F442224419F06CFACCE7032BC0 -:107F8000CAD8006803EBC30341F2F342D0F80811EA -:107F90000E6806EB43039B5C002BBDD041F2F4421C -:107FA0002946CDE90044122404FB0C660124324426 -:107FB000029419F04FFAAFE73343032BACD8002AF1 -:107FC000AAD0D0F800A00CEBCC0C06EBC60241F214 -:107FD000F349DAF80831EB461B6803EB420203EB86 -:107FE0004C0412F8091014F809200A44F10012F0A8 -:107FF000FF02F96090D0D11D7B60BA6001F4FC7182 -:10800000ADEB010D00210DF11008404624F004FCF9 -:1080100014F80900D7E90132A0B14FF0000CA144D7 -:1080200041F2F44E614660180CF1010C10F80E009C -:1080300000F07F0008F801005FFA8CF199F8000069 -:108040008842F0D8FC68344441F2F34603EB440420 -:10805000A35D9BB10021264441F2F44C0B4623441E -:1080600013F80CE0431801310EF07F0EDBB208F874 -:1080700003E0CBB296F800E09E45F0D80120002442 -:1080800013462946029042465046CDE9004419F075 -:10809000E1F9DD4640E71221029401FB0C210022A8 -:1080A000CDE9002241F2F4420A44294619F0D2F9FE -:1080B00046E700BF2DE9F04F41F2D94543F6781667 -:1080C00089B04FF09608C34F054400F56454064448 -:1080D00000F5805A00902B785A1EC72A0CD8DAF87F -:1080E000002802EBC30292F83230103B012B03D878 -:1080F0006378990740F11C8118340335A642EAD110 -:10810000009B43F6B804002743F6C4021C444FF01A -:10811000020813443E460793B30041F2B65208F1F9 -:108120000100049308F1FF330390781C0293DAF8FE -:108130006C380690B81C197801230590B3401FFADB -:1081400083FB852313FB012306EB8602009913446E -:108150006FEA0B0201F5405C92B20B4401920022DF -:1081600013F8010F411EC72908D8DAF8001801EBEF -:10817000C00191F83210103901290CD90132032ABB -:10818000EED101360134033708F10408062EC3D1BD -:1081900009B0BDE8F08F012194F83C009140C9B2CC -:1081A000084384F83C0020780843FF28207000F042 -:1081B00083807F2876D0010602D40A2800F08380CD -:1081C00000F07F010139C9B2092976D8824D55F8EE -:1081D00021E0BCF89C18B14216D99CF89F180529DB -:1081E000DCF8A41800F2888001F807E04FEA1E29A5 -:1081F000DCF8A4184FEA1E4E069D01F80590059D77 -:10820000DCF8A41801F805E040F0800E00F00F0043 -:1082100084F800E00EF0010EDCF83C18B1F84A904A -:1082200049FA06F505F0010575450AD0BEF1000FC3 -:108230007AD049EA0B094FF00105A1F84A9081F87C -:108240004C50B1F84EE0C0F340054EFA06F909F083 -:108250000109A9450AD0002D4BD1019D0EEA050E5A -:108260004FF00105A1F84EE081F85050B1F852E00E -:10827000C0F380094EFA06F000F0010048450BD02B -:10828000B9F1000F1CD101980EEA000E4FF0010069 -:10829000A1F852E081F85400BCF8FA1841F001014D -:1082A000ACF8FA1807984FF0960120F836104949B3 -:1082B000096840F8181061E70F204FF0000E88E7BA -:1082C0004EEA0B0EE2E7BCF89C18B14242D88A2174 -:1082D0002170DCF83C18B1F84A9049FA06FE1EF00D -:1082E000010F21D1B1F84EE04EFA06F919F0010F55 -:1082F000BCD14EEA0B0EB3E7049D4FEA1E2901F8EC -:1083000005E04FEA1E4EDCF8A418029D01F8059026 -:10831000DCF8A418039D01F808E04FF0000EDCF82B -:10832000A41801F805E06FE7019D09EA050982E755 -:10833000DA070AD4980630D54FF48071207820F0FF -:10834000D1FC637843F0090363703B68A4F81080A4 -:108350006361D1E69CF8FEE89CF8FD184FEA0E4EEA -:108360004EEA012E9CF8FC184EEA010E9CF89F186C -:108370000529DCF8A41815D801F807E04FEA1E29F2 -:10838000DCF8A4184FEA1E4E069D01F80590059DE5 -:10839000DCF8A41801F805E099E70121207820F025 -:1083A000D9FACEE7049D4FEA1E2901F805E04FEA0D -:1083B0001E4EDCF8A418029D01F80590DCF8A41804 -:1083C000039D01F808E04FF0000EDCF8A41801F856 -:1083D00005E07CE7E8BA00201C0F002082B02DE900 -:1083E000F04F046991B090460846B4F83C211EB2A3 -:1083F000BDF876101D1412F0080F1B9308919DF81C -:108400008070BDF87030BDF872A09DF87C1009D165 -:10841000DFF894C2DCF800C0C4F84CC14FF47A7C99 -:10842000A4F848C142F00802A4F83C2194F857414E -:1084300098F80020A24208D1002F40F0C9803846A9 -:1084400011B0BDE8F04F02B070474FEA920982EADE -:10845000040C5208BDF874B089EA940982EA540207 -:1084600049EA0C0C099204F001021CF0010F0B9276 -:10847000C4F340020A92BDF87A20079275D0002911 -:1084800041D15A08BAEB530F4FEA930C0C924FEAC2 -:108490005A0E00F2AE80AAF104039BB2BAF13F0F6C -:1084A00001D9083B9BB25B08002F40F0C6800B99B6 -:1084B000DBB2079A023B0B90002908BF9346B1B28A -:1084C0000EEB05020D91614412B2CDF800B009B275 -:1084D0001BF04AFE099B0B9849EA030919F0010FAA -:1084E0003BD0079B0A990393089B0597CDE901A30D -:1084F000DDE90C321A4400932B46002512B2049594 -:10850000FCF71AFE29E00236B3B20C934FEA5A0385 -:108510001A1F91B2C2F34E023F290D9194BF083B3E -:10852000103B9BB25E08002F67D10B9B07990B9005 -:10853000002B08BF8B460C99F3B211442A44023B2E -:10854000CDF800B009B212B21BF00EFE099B0B98D9 -:1085500049EA030919F0010F19D1012088F80040F8 -:1085600011B0BDE8F04F02B07047002F87D1099AD3 -:1085700042EA090919F0010FEFD000297ED0023636 -:10858000B3B24FEA5A060C93043EB3B20D9307EE12 -:1085900090AAB6EE006B079BB8EEE75B07EE905A29 -:1085A0000393B8EEE77B089BBDF930200293A5EE5C -:1085B000067B0D9B0A990597CDE9003300230493B0 -:1085C000BDEEC77B17EE103A1BB2FCF7B5FDC4E752 -:1085D00004F00102BDF874B00B92C4F340020A9299 -:1085E000002291460992BDF87A20079200298AD18B -:1085F00047E70C9B043B9BB250E70C9B5FFA86F964 -:10860000CDF800B099182A444B46099009B212B22D -:10861000CDE90E211BF0A8FDA9F1020309981EB2B5 -:108620000B9BDDE90E21002B35D13346079E0990C7 -:1086300000961BF099FD0998A9E7B1B20EEB05026F -:108640005FFA83F9CDF800B00D91614412B24B4648 -:1086500009B20990CDE90E121BF086FDA9F10203C3 -:1086600009981EB20B9BDDE90E1263B93346079ED3 -:10867000099000961BF078FD099832E75B080C938F -:10868000B3B20D932DE73346CDF800B009901BF03F -:108690006BFD099825E73346CDF800B009901BF033 -:1086A00063FD099873E700BFE8BA002038B5431EA0 -:1086B0000146042B1DD8DFE803F003181A04160046 -:1086C00020210D4C0125E023204684F8305184F808 -:1086D000A53084F82F511AF035FF29462046BDE811 -:1086E00038401BF03DB80221EBE71021E9E70821F3 -:1086F000E7E70121E5E700BFF8B0002084B02DE9ED -:10870000F04F2DED028BB3B004463FAD09A885E8CC -:108710000E002946A122BDF8FC609DF80F5120F003 -:10872000B9F99DF827707B0723D50DF1660024F079 -:10873000CDFB002800F0418100239DF82980C1B2C3 -:108740000DF1650E9C4608EB0C091EF8012F0CF18B -:10875000010C4A445FFA8CFC53406145DBB2F2D80D -:1087600081EA030CBDF8303000FB03CC5FFA8CFCCF -:108770001FE00DF13D0024F0A9FB88B300239DF814 -:1087800029805FFA80FC0DF13C0E194608EB0109C7 -:108790001EF8012F01314A44C9B253408C45DBB267 -:1087A000F4D88CEA030CBDF82E3000FB03CC5FFA42 -:1087B0008CFC162D9DF82AE09DF82B909DF82C003E -:1087C0009DF82D109DF838809DF83C309DF82820AC -:1087D00008D033B0BDEC028BBDE8F04F04B0704759 -:1087E0008446E0E7CE447A4070440144F0B20B4442 -:1087F00003EB48039C445FFA8CFC8CEA020BFFF706 -:1088000055FFF3000293C6EBC60304EBC30393F8D2 -:1088100006325B45DDD000239DF802210793ADF8B9 -:10882000203003929DF801319DF80321B02B049272 -:108830009DF80421059200F0DC80C02B00F0E5805B -:10884000902B00F0E08002230293F3009FED738AE7 -:108850004FF0200A9D1B18EE101A8023ED0004EB48 -:10886000050805F50475D8F810222544CDF800A0B8 -:1088700028468DED018AD2F8409018EE102AC8479C -:108880004FF00109D8F810321022CDF8049018EEFC -:10889000101A009228461B6C18EE102A1F468023DF -:1088A000B847D8F8103218EE102A18EE101A2846D9 -:1088B000CDE900A9D3F84CA08023D04718EE101AB8 -:1088C00028461CF0EBF8494628461CF0E1F8039BCB -:1088D000534909A803F00F0285ED058A8DED098A39 -:1088E0004A448DED0A8A8DED0B8A8DED0C8A23F0BA -:1088F00013FE09A824F0EAFAD8F8103200EB400180 -:1089000002465B68284601FA09F1C1F1800121FAAB -:1089100009F129820421698209A998474FF00113BE -:108920006B61029B032B4AD1494628461CF0B0F8E4 -:10893000049B07AA3B4909A8142723F0EDFD09A8C9 -:1089400024F0C4FA09A900EB400302466F822846CE -:1089500003FA09F3C3F1400323FA09F32B82D8F891 -:1089600010325B689847059A2F4909A823F0D4FD77 -:1089700009A824F0ABFAD8F8103202466F825F687B -:1089800009A902EB4203284603FA09F3C3F14003A5 -:1089900023FA09F3803323EAE3732B82B8470121DA -:1089A00028461CF075F828460EF0C6F9F3009B1B0C -:1089B00004EBC30484F806B20BE78446D2E6049BBA -:1089C00007AA184909A823F0A7FD09A824F07EFAF0 -:1089D000D8F81032024609A95F6814236B8200EBB5 -:1089E000400328465B00C3F180035B082B82B84735 -:1089F000D5E70E4B1B68ADF81C301B0C8DF81E30F4 -:108A00000323029321E70A4BF4E70A4B1B68ADF8F6 -:108A10001C301B0C8DF81E3015E700BF0000000055 -:108A20005C150020641500206C15002054150020F2 -:108A300058150020501500202DE9F04F8BB004464A -:108A40008B46914604AF9A4697F8405097F8446099 -:108A5000761B16F0FF0604D178E013F0FF06CDB2C6 -:108A600074D01BF80520691C731E202AF5D00A2E2D -:108A70005846A8BF0A2624F029FA00F10803024646 -:108A8000002123F00703ADEB030D0DF110080DF1EC -:108A900011008DF810101AB1002123F0BDFE5EB157 -:108AA0002E4408F1FF33F6B2691C1BF80520CDB245 -:108AB00003F8012FAE42F7D1BAF1020F637859D013 -:108AC0009AB24FF0000A1BB2FA60C7E9013A404679 -:108AD000EB4624F0FBF900F108032546421C23F085 -:108AE0000703414615F80C9B0026ADEB030D04ABC4 -:108AF00018461FF0CFFFFA68334629460292BA683B -:108B0000039600920246CDF8049007F11000F5F7A5 -:108B1000F1FCDD467B6831465246284600934B46C1 -:108B200001961BF0F9F83A694FF00113404684F8BA -:108B30002760C4E9072324F0C9F9414602462846C4 -:108B40001FF004FB1C37BD46BDE8F08F58460026D9 -:108B500024F0BCF900F10803024623F00703ADEB53 -:108B6000030D0DF110080DF111008DF81060002AB1 -:108B700092D1A1E75A08B9F1010FFA6005D04FF080 -:108B8000000A13B2C7E9013AA1E70FFA82FAFB68BB -:108B9000C7E901A39BE700BF2DE9F04F2DED028B44 -:108BA00085B01E46837802AF8B42D7F8389060D0EC -:108BB00000F10C0A81700446904650460EF050F8C1 -:108BC000484624F083F910F0FF0E4FD0BEF1140F89 -:108BD0006378F34628BF4FF0140B202B4FD009F1D8 -:108BE000FF3C0BF1FF304FF0FF32002559FA80F0C7 -:108BF000634601E083420CD013F8011F2029F9D10C -:108C0000591E35B9A1EB0C0183424FF001054AB260 -:108C1000F2D1002A4DDBBEF1070F4AD9D5B20022AE -:108C200049462046022300920195FFF705FF6A1C82 -:108C300049460223D2B22046CDF804B00092012268 -:108C4000FFF7FAFE18F0020F28D17EB10125237834 -:108C500062780021504600950DF078FF6278237805 -:108C600000215046013A00950DF070FF50460EF07D -:108C700063F80C37BD46BDEC028BBDE8F08FBEF14A -:108C80000A0F3ED80022494601232046CDF804B001 -:108C90000092FFF7D1FE18F0020FD6D00121237801 -:108CA0000022504601916178009111461BF07EF838 -:108CB000CBE7BEF10A0F01D8002AE3DBABF10803D2 -:108CC000022B01D8531CA9D1ABF10B03012BD9D92D -:108CD000BEF10C0FD6D9002AA0DC4FEA5B050022BA -:108CE00049462046009202230195FFF7A5FE49461A -:108CF000022301222046CDF804B00095FFF79CFE28 -:108D0000C9E76A4683B208EE102A002BBAD01D4686 -:108D100008330021DB08A2EBC3039D4602AB0DF133 -:108D200009008DF80810BDB12A467B6023F074FD60 -:108D300000217B6808460A4619F8021002F1010C6E -:108D400000F1010E20295FFA8CF203D021B11954F1 -:108D50005FFA8EF09542EFDC1946484623F0D4FFC7 -:108D600018EE103A9D468DE784B02DE9F04FADF531 -:108D7000197DA3AC2F9084E80E009DF88F52EE066B -:108D800004D59DF8A332002B40F0EB806807C5F3B3 -:108D9000800736D500210DF5DE79242233A83291E3 -:108DA00032AE8DF8A01223F037FDA12221464846AD -:108DB000C5F3C0081FF06EFE0DF5FF7024F086F8B5 -:108DC0002E97002800F08B8100229DF8C1B1C3B21C -:108DD0000DF2FD1E94460BEB0C0A1EF8011F0CF160 -:108DE000010C51445FFA8CFC4A406345D2B2F2D880 -:108DF00083EA020CBDF8C83100FB03CC5FFA8CFC9F -:108E000032E00DF5DE792422394633A8329732AEAE -:108E100023F002FDA122214648461FF03BFE0DF241 -:108E2000D51024F053F8C5F3C0082E97002800F0A1 -:108E30003B8100239DF8C1B15FFA80FC0DF5EA7E0D -:108E400019460BEB010A1EF8012F01315244C9B239 -:108E500053408C45DBB2F4D88CEA030CBDF8C63124 -:108E600000FB03CC5FFA8CFC9DF8C32121469DF8E2 -:108E7000C231484613449DF8C42113449DF8C521CE -:108E800013449DF8D42113449DF8D02103EB4203F1 -:108E9000A1220CEB03049DF8C031E4B26B405C40AE -:108EA0008DF88E421FF0F6FD2E9BBBB9B8F1000F76 -:108EB00014D00DF2D511304623F026FF31460DF2C5 -:108EC000A52023F021FF9DF89F32162B00F0EE80A5 -:108ED0000DF5197DBDE8F04F04B070470021242244 -:108EE0003DA83C9123F098FC9DF8D1318BB39DF8BF -:108EF000CE3127B3BDF8C8210DF5FF713CA813444E -:108F00009FB223F001FFB8F1000F0FD09DF85882F7 -:108F10009DF8D431C8F125091BB1B9F1000F00F358 -:108F2000A1803CA9304623F0EFFEC7E79DF8483208 -:108F30003A468BB192A9304623F0EEFABEE7BDF86F -:108F4000C6210DF2D5113CA813449FB223F0DCFEDC -:108F5000D9E78DF8CE31CCE76849304623F0DCFA0A -:108F6000ACE7BDF898522146A12246A8ADF896522A -:108F70001FF090FDBDF89C3200272A4660490093FF -:108F80003CA8BDF89A32BDF88C529DF891429DF8EC -:108F90009F62CDE93C77CDE93E77CDE94077CDE9D9 -:108FA000427723F0B9FA3CA823F090FF002800F0A4 -:108FB00098803B46C7B23CA8194604EB010C10F858 -:108FC000012B01316244C9B253408F42DBB2F4D865 -:108FD0005F40162E7FF47CAFE8B2FFF767FBA1225B -:108FE00046A96FA8C5EBC5058DF82B618DF81A71E0 -:108FF0001FF050FD2F9A02EBC506ED0096F80632E1 -:10900000BB423FF465AFB6F80C3205F5047586F83F -:1090100006720121ADF8C6302A44B6F80A32684615 -:1090200015469D22ADF8C83000232C9328932023A9 -:10903000CDE92A31802370A929931FF02BFD6F9B66 -:1090400032AA0DF1C6012846FCF798F928460DF022 -:1090500073FEBDF8C620BDF8C830A6F80C22A6F8ED -:109060000A3235E70DF58C7A4FF0000B242247A821 -:109070005946CAF800B023F0CFFB3CA9504623F074 -:1090800043FEB8F1040F53463A460AF809B02AD015 -:10909000B8F1030F2CD0B8F1020F30460CBF1949BC -:1090A000194923F039FA09E78446D7E6BDF88C72EE -:1090B000F8B2FFF7FBFA2F9BC7EBC7072A462146FA -:1090C000009603EBC7009DF8A03200F50170FFF792 -:1090D00063FD0DF5197DBDE8F04F04B0704784467F -:1090E00088E6074675E70949304623F015FAE5E6B4 -:1090F0000749304623F010FAE0E600BF3020002098 -:109100007415002098150020A4150020801500205B -:109110008C15002084B02DE9F04FDBB0894E054658 -:1091200065AC306884E80E00B388A122CDF8AD01AB -:10913000214631A8ADF8B1311FF0ACFC9DF8C770E5 -:10914000780721D50DF5837023F0C0FE002800F0CC -:109150008C8000219DF8C980C3B20DF2051E0A461D -:1091600008EB02091EF801CF0132CC44D2B281EAE9 -:109170000C019342C9B2F3D883EA0102BDF8D030A2 -:1091800000FB0322D2B21EE00DF1DD0023F09EFEB3 -:1091900000283ED000219DF8C980C2B20DF1DC0E3E -:1091A0000B4608EB03091EF801CF0133CC44DBB2B8 -:1091B00081EA0C019A42C9B2F3D84A40BDF8CE30D8 -:1091C00000FB0322D2B29DF8CB309DF8CA109DF867 -:1091D000A78119449DF8CC30B8F1160F19449DF8B9 -:1091E000CD3019449DF8DC3019449DF8D83001EB9E -:1091F00043019DF8C8300A4487EA0307D2B287EAE0 -:1092000002078DF8967106D05BB0BDE8F04F04B050 -:1092100070470246D2E7BDF894915FFA89F0FFF7F4 -:1092200045FA2146C9EBC904A12208A84FEAC90A98 -:109230001FF030FC95F98431E400002B04F5017B2C -:10924000AB4414DB95F88521162A1ED199451CD113 -:10925000D5F8800195F8862190F8833203F0010358 -:1092600093422DD18BB1002348E0024686E70023CC -:1092700085F8858185F8849185F88631D5F8803127 -:1092800093F8833213F001031AD108A931A8A1225F -:109290000DF1DD041FF0FEFB3068B2883946CDF8D1 -:1092A000DD005846ADF8E1209DF8D8309DF8C72084 -:1092B0000094FFF771FC5BB0BDE8F04F04B070475D -:1092C000002285F8863120230BF10C00C5F8A82177 -:1092D0001146A5F8A42185F8A62185F8AC21C5F88A -:1092E000B42185F8AF210093802301921AF014FD78 -:1092F00095F88631002BC8D0D5F88001012204F5FD -:109300000474202107932C440023039206930093B6 -:10931000CDE904228022CDE9012105F5D272214652 -:10932000FCF774F900283FF46FAFAAEB090A064B6B -:1093300020461B6805EBCA0585F806320DF0FCFCDB -:1093400062E700BFB0150020E8BA002084B02DE924 -:10935000F04FE1B005466BAF37A89DF8BFA187E895 -:109360000E00A1223946BDF8AC611FF093FB9DF8B9 -:10937000DF40630723D50DF58F7023F0A7FD00288C -:1093800000F0B88000239DF8E180C1B20DF21D1EEF -:109390009C4608EB0C091EF8012F0CF1010C4A4405 -:1093A0005FFA8CFC53406145DBB2F2D881EA030CD2 -:1093B000BDF8E83000FB03CC5FFA8CFC1FE00DF138 -:1093C000F50023F083FD80B300239DF8E1805FFA70 -:1093D00080FC0DF1F40E194608EB01091EF8012F6F -:1093E00001314A44C9B253408C45DBB2F4D88CEA0F -:1093F000030CBDF8E63000FB03CC5FFA8CFCBAF13D -:10940000160F9DF8E2809DF8E3909DF8E4009DF82A -:10941000E5109DF8F0E09DF8F4309DF8E02006D0CE -:1094200061B0BDE8F04F04B070478446E1E7C8443E -:1094300062404FEAC60940440144F0B20B4403EBDA -:109440004E039C445FFA8CF45440FFF72FF93946E1 -:10945000C6EBC607A1220EA8FF008DF8AE411FF093 -:1094600019FB95F9873107F50178002BA84443DBF8 -:1094700095F88821162A40F08A809E4240F0878025 -:10948000D5F880310DF1240ADFF860B193F853C1AB -:10949000D64695F889310CF0010C0793BBE80F0014 -:1094A000AEE80F00DBF80030AEF80030079B9C45BB -:1094B0003DD1BCF1000F76D00023049307F504776B -:1094C0000AAB6C462F440FCB07C405F2B9122380B8 -:1094D0003946DAF8003005F5B870FEF77FFF00284E -:1094E0007DD1A9EB06099DF83A3005EBC90585F851 -:1094F000063295E784465BE7FF23A5F888A1DFF8ED -:10950000ECB00DF1240A85F8B931D5F88031D64692 -:1095100085F8876193F853C1BBE80F001CF0010C7C -:10952000AEE80F00DBF80030AEF800303BD0002290 -:10953000FF2385F889C108F10C000192114685F8D6 -:10954000B9312023009380231AF0E6FB95F8893186 -:10955000002BB2D1244C0EA9A12237A81FF09AFAF1 -:109560000DF1F50307CC24880093CDF8F5004046B3 -:10957000CDF8F910CDF8FD209DF8F0309DF8DE1003 -:109580009DF8DF20ADF80141FFF706FB48E70DF13C -:1095900051059DF84C309DF83B20214640460095F2 -:1095A000FFF7FAFA3CE7104D0EA9A12237A81FF0E9 -:1095B00071FA0DF1F50307CD2D880093CDF8F50074 -:1095C0004046CDF8F9102146CDF8FD209DF8F03049 -:1095D0009DF8DF20ADF80151FFF7DEFA20E73846AD -:1095E0000DF0AAFB7DE700BFB81500203808002069 -:1095F00084B02DE9F047DAB0054663AC31A89DF898 -:109600009F6184E80E00A1222146BDF88C711FF0F5 -:1096100041FA9DF8C78018F0040F23D00DF5837030 -:1096200023F054FC002800F0A5804FF0000C9DF8BA -:10963000C990C3B20DF2051E614609EB010A1EF87E -:10964000012F01315244C9B28CEA02028B425FFA07 -:1096500082FCF2D883EA0C01BDF8D03000FB031184 -:10966000C9B220E00DF1DD0023F030FC80B34FF0F3 -:10967000000C9DF8C990C1B20DF1DC0E634609EBF8 -:10968000030A1EF8012F01335244DBB28CEA0202B6 -:1096900099425FFA82FCF2D881EA0C01BDF8CE3023 -:1096A00000FB0311C9B2162E9DF8CAC09DF8CBA0CD -:1096B0009DF8CC009DF8CD209DF8D8909DF8DC3029 -:1096C0009DF8C8E006D05AB0BDE8F04704B0704736 -:1096D0000146E3E7D44488EA0E0E60440244F8B23F -:1096E000134403EB49034FEAC70919445FFA81F8B1 -:1096F00088EA0E08FEF7DAFF2146C7EBC704A1226D -:1097000008A8E4008DF89F618DF88E811FF0C2F9E2 -:109710002B1904F5017693F806222E444245D2D047 -:1097200083F8068204F504749DF8923128199DF897 -:10973000A0410B3B0C2BC6D801A252F823F000BF6E -:109740001FB40000EDB30000EDB3000045B500000C -:1097500017B50000E3B400003BB300003BB30000CA -:109760003BB300003BB30000A9B4000075B4000097 -:1097700045B4000001466FE707900DF071FA012132 -:109780000E2310220798009140211AF0EDFC0C23C3 -:1097900010224021079800941AF0E6FC07985AB06E -:1097A000BDE8F04704B00DF0C7BA079020250DF0D2 -:1097B00057FA00230122214680240798019500943E -:1097C000CDE90432CDE902231A46FBF7B5FCE5E703 -:1097D000042507900DF044FA1C230122079832213A -:1097E00002920222CDE900351AF006FD18232A461E -:1097F000342107980093CDE901541AF0FDFCCDE720 -:10980000162308A9414D31A8A1228DF826301FF05A -:1098100041F90DF1DD032868414600932346AC88E9 -:10982000CDF8DD0030469DF8C720ADF8E140FFF7E8 -:10983000B3F948E7A9EB070907900DF011FA0123E6 -:1098400005EBC90507983221D5F8102201931C2396 -:109850000093166C0222B047D5F810221823342149 -:109860000798CDE90034146C0422A04796E7102332 -:10987000274D08A931A8A1228DF826301FF00AF93A -:109880000DF1DD02286823462C7941460092CDF87F -:10989000DD0030469DF8C7208DF8E140FFF77CF9E8 -:1098A00011E70F2308A931A8A1228DF826301FF057 -:1098B000F1F818490DF1DD0223460868414600928F -:1098C000CDF8DD0030469DF8C720FFF765F9FAE6D0 -:1098D000102507900DF0C4F9012234230798CDE933 -:1098E0000252019304224C2300921C2219461AF0C2 -:1098F000F9FC4A2338220394082419460798009457 -:10990000CDE9012518221AF0EDFC47E7D415002017 -:10991000CC150020C815002084B02DE9F047B6B062 -:1099200004463FAD85E80E00436A93F85331DA07E9 -:1099300076D5B24B03CB1B88CDF81501CDF81911A4 -:10994000ADF81D31A12229460DA81FF0A3F89DF8FE -:109950003760730721D50DF1760023F0B7FA0028A0 -:1099600000F09A8000229DF839805FFA80FE0DF1A8 -:109970007507134608EB030C17F8011F0133614408 -:10998000DBB24A409E45D2B2F4D88EEA020EBDF850 -:10999000403000FB03E0C0B21DE00DF14D0023F0AC -:1099A00095FA002848D000229DF83980C7B20DF101 -:1099B0004C0C134608EB030E1CF8011F01337144D5 -:1099C000DBB24A409F42D2B2F4D85740BDF83E3095 -:1099D00000FB0370C0B29DF83B209DF83A309DF823 -:1099E0000F7113449DF83C20162F13449DF83D2021 -:1099F00013449DF84C2013449DF8482003EB420388 -:109A000018449DF83830C0B286EA030686EA00069C -:109A10008DF8FE6012D036B0BDE8F04704B0704754 -:109A2000774B07CB1B88CDF81501CDF81911CDF870 -:109A30001D21ADF8213185E70746C7E7BDF8FC8059 -:109A40005FFA88F0FEF732FE2946C8EBC8050DA87C -:109A5000A1224FEAC80A1FF01DF894F98A31ED00DF -:109A6000002B05F50179A14418DB94F88B21162A07 -:109A700002D1984500F092800DF14D049DF84830D8 -:109A80009DF83720314648460094FFF785F836B0F8 -:109A9000BDE8F04704B07047864678E7002284F8B6 -:109AA0008B71012784F88A8184F88C21D4F8801185 -:109AB00091F8533103F00103934277D084F88C314D -:109AC000002BD9D091F883E294F88F310EF0010E7B -:109AD000734501D084F88FE109F10C0000211AF0E0 -:109AE0004DF8012794F88FE1DFF818C108AE05F5AD -:109AF0000475BCE80F000FC6DCF800302544338045 -:109B0000BEF1000F60D109AB04976E460FCB07C6BC -:109B1000338004F5DD72089B294604F5B870FEF722 -:109B20005DFCD4F8803194F8B861B3F83C91C9F386 -:109B30008009B9EBD61F00D1A7B316F00F065AD093 -:109B4000711E490189B2B9F1000F1FD0AAEB0807B5 -:109B50004FF0000C09B2202304EBC7071F22D7F8EF -:109B60001002CDF800C0D0F83C802846C047D7F896 -:109B700010327101013601222846F6B200921F22EE -:109B8000DF6B2023B847042E28BF002646EAC916FB -:109B900084F8B86128460DF0CFF83CE794F88C21A2 -:109BA000002783E700283FF436AFF3E7002A3FF4AD -:109BB00063AF91F883E294F88F310EF0010E734594 -:109BC00088D1002F90D087E7012200232021039223 -:109BD0000093CDE904228022CDE90637CDE90121A9 -:109BE00004F5C8722946D4F88001FBF70FFD002860 -:109BF0003FF411AFCEE76021A5E700BFBC15002000 -:109C0000B8150020380800202DE9F04F2DED048B09 -:109C1000ADF53F7D9B460E4600F5805A2EAF0546BA -:109C2000914697F87C3207F15404B7F87882A12264 -:109C3000FB62204697F88032B3497B621EF02AFF10 -:109C4000B8F1000F08BF082E9AF80828A4F800B051 -:109C50000CBF01230023A274BB624DD1DAF8FC379C -:109C600084F813901B681B054AD5B9F1160F11D162 -:109C7000DAF86C280BEB4B0341F2D351127802EB6C -:109C8000421002EB800213442B4413F80180B8F118 -:109C9000000F37D0002342F69C405A46494698466A -:109CA000284487F8AC3143F63836C7E96733C7E94B -:109CB000693307F5CE732E44FCF70EF9FF2307F541 -:109CC000CE7107F16D00637123F01EF840F6FF03BB -:109CD00007F160019522684663801EF0DBFE304686 -:109CE00094E80E00FFF740F8404607F51177BD46AF -:109CF000BDEC048BBDE8F08F08F1FF33C72B09D909 -:109D00004FF00008404607F51177BD46BDEC048BC7 -:109D1000BDE8F08F05EBC80090F8323078613B6207 -:109D2000002BEDD0416B032E6371C1F3072390F834 -:109D30003180B0F834C0C8B2BB61C1F30743C8F387 -:109D4000400EF8613B61C8F3800023724FEA116353 -:109D5000A4F806C008F0010C7B6063724FEA11237F -:109D600084F89EE04FEA116EBB60BB69D7F81C8097 -:109D7000FB604FEA114384F89DC084F89F003B606C -:109D80005DD1BCF1000FFB6A08BF012003F07F0C1E -:109D900084F89F00012084F8A0C084F89D00D809B1 -:109DA00084F89E00BCF1000F4DD03B6A013B432B71 -:109DB00073D8DFE813F0E7069106AF058205600669 -:109DC0003506450425049F036A037C034703EB041F -:109DD000C2040F05180360054805FD07230572003E -:109DE0002108720036070804CE038707510797043D -:109DF0006E04C607E905720072002006AB027F02FE -:109E000067024D0272000A02E102CF014A017200AC -:109E10000E01D900720072007200720072007200AE -:109E200072007200720072007200720072007200A2 -:109E30007200720072007200AD009B007500FB6A38 -:109E4000002B44F0298701204FF0000C84F8A0007B -:109E5000082EAAD1B9F1160F84F81390A5D1DAF81B -:109E60006C08007800EB401300EB83000BEB4B0316 -:109E7000184441F2D4532844C05CE07095E7FB6974 -:109E80000F2B45F01D83D4F86C2C9369002B45F003 -:109E900091845369002B45F017834FF0000831E798 -:109EA000082E7FF42DAFE378184A23F004031068DE -:109EB00043F008031279C7F8BF00E3704FF68073D0 -:109EC00087F8C320194203F0E88443F6383607F1D7 -:109ED0006001952268462E441EF0DCFD4FF000081C -:109EE000304694E80E00FEF73FFF0BE7DAF894489F -:109EF000002C3FF405AF013E032ECED8DFE816F06C -:109F00006E08640858084E084C080020CC20002039 -:109F1000FB69002B7FF4F4AE022E02F01083052EB5 -:109F200002F08087082E7FF4EBAEE178BF4B21F082 -:109F3000040141F00801E17005F5405191F8E06A33 -:109F400003CB1B78C7F8BF00F00787F8C730C6F30C -:109F50004003C7F8C31007F16D004CBFB449B549C1 -:109F6000237522F0D9FAB0E7082E7FF4C9AEE37862 -:109F7000B14E23F004033A89306843F00803F969CD -:109F8000C7F8BF0042F69C40E3703379284443F69B -:109F9000383687F8C3300023C7E96733C7E9693328 -:109FA00087F8AC31984607F5CE73FBF795FF07F5B8 -:109FB000CE7107F16D0022F0A7FE07F16001952236 -:109FC00068461EF067FD701994E80E00FEF7CCFE9F -:109FD00098E606F0FD03012B41F0A48494F89D302F -:109FE000002B02F0DE813B69002B03F0B882BA69D6 -:109FF00094F89E009A42BFF483AE05F5405999F853 -:10A000008837022B03F268848C4AD35C591EBA69E4 -:10A010003C69C9B299F88B378A4228BF0A468C42FC -:10A0200028BF0C462146002803F0C1830133A34218 -:10A0300002DC9342A8BFDAB2114643F284704FF0BB -:10A0400000082844FDF756FC5CE6012E01F0BC86B2 -:10A05000022E02F08082052E02F02586082E7FF463 -:10A060004FAE774B43F25438D7F818900026186853 -:10A07000A8449B884946C7F8BF004046A7F8C330AC -:10A08000FDF732FAE37843F2AC414A46207523F0FB -:10A090000403294443F00803E37003E001365B2E18 -:10A0A00004F0398011F836309A42F7D1002305F5D3 -:10A0B000405907F5CE7207F13001DFF890E107F162 -:10A0C000F80A944609EE102AC7E93E3309EB060365 -:10A0D0002B3693F839B409EBC609CBF3420B0BF5D9 -:10A0E000047303EB010BBEE80F00ACE80F009EE821 -:10A0F0000F008CE80F00534950461BF8A42C22F0A7 -:10A100000BFA99F85A3308EBC6024F49013307F1AD -:10A110006D000132CDF800A022F0FEF92146A12207 -:10A1200019EE104A19EE100A1EF0B4FC912207F540 -:10A13000D67168461EF0AEFC94E80F00FBF7B6F847 -:10A1400097F8AF3187F89E01162B04F03C814FF051 -:10A150000008D7E505F5405999F8732312F001027C -:10A1600001F0D287B9F87433013B9BB223820B0C08 -:10A17000C1F30901C3F30A03002B00F03987013B47 -:10A180008B4242F3A580E181238294F89D00002850 -:10A1900042F04E80002A03F05981B9F88C038142C5 -:10A1A00003F051810B4606F0FD00012800F02B87DB -:10A1B000082E02F083860AB1B9F88C23A1EB0208BD -:10A1C000B8FA88F84FEA58189CE5FB69102B01F2A1 -:10A1D0007F820A2B01F28182022E01F0AA84032ED3 -:10A1E00002F06381012E02F0A085082E7FF488AD75 -:10A1F000FA69172A3FF651AEDFE812F05F2A962679 -:10A2000096269626612631260226F227C227932714 -:10A21000612737271027D126A826BB209820632046 -:10A22000472024200120D71FAD1F2128B020002067 -:10A23000BC200020C4200020CC200020AC0F002037 -:10A24000C422002088380020CC2200208C38002036 -:10A2500006F0FD03012B41F0AF8294F89D30002BF6 -:10A2600001F09A8794F8A0104FF0000843F2907024 -:10A2700094F89E20B1EB0801284418BF0121FDF796 -:10A2800017FE3FE5012E01F0C686023E062E3FF680 -:10A2900004AE01A353F826F05DCF000029CF0000E3 -:10A2A000D9CE00000FBB00000FBB00000FBB0000A9 -:10A2B00039CE0000082E7FF423ADFB69022B02F09B -:10A2C0001887032B7FF4E9ADE37843F2FA21C54AFE -:10A2D00043F6383623F00403294410682E4443F033 -:10A2E00008034FF00008C7F8BF0007F16D00E370E6 -:10A2F00022F00AFD07F16001952268461EF0CAFBB4 -:10A30000304694E80E00FEF72FFDFBE4012E02F02C -:10A31000DE81022E01F00787032E02F0F286052E61 -:10A320007FF4EEACFA69A2F156030B2B43F2A38142 -:10A33000111F4B424B41002B43F09D81FA69493A72 -:10A340000C2A03F2C385BA69082A0AD805F54059D0 -:10A3500004BF99F80133FB60FB6809EBC30393F872 -:10A3600012334FF0640806210C2218FB0318B8FBC7 -:10A37000F2F85FFA88F8C5E4FB6903F007080723E1 -:10A380002382BB6913F0070201F07783531E434514 -:10A3900041F31987A4F80E80238294F89D20002AA7 -:10A3A00041F0188705F5405999F8732312F001021E -:10A3B00018BF99F88E23904503F04280424606F07C -:10A3C000FD03012B41F0288299F87333DB077FF5F9 -:10A3D00097AC002343F254300C2128440093984654 -:10A3E000F5F7BCF98EE4012E01F08883052E02F00A -:10A3F0002581082E42F03881E37805F540527A49EC -:10A4000007F16D00D2F8882123F0040343F63836B3 -:10A410004FF00008128843F008032E446281E37075 -:10A4200022F07AF8714B07F1600195221868C7F89D -:10A43000BF0068461EF02EFB304694E80E00FEF783 -:10A4400093FC5FE4012E02F00982082E7FF458ACE1 -:10A45000E37843F63838664E952223F0040303CEA2 -:10A4600043F00803C7F86D006846C7F8711007F19C -:10A470006001E3701EF00EFB08EB05004FF00008D2 -:10A4800094E80E00FEF770FC3CE4012E01F0B38569 -:10A49000052E01F0ED87082E03F01181FB699AF873 -:10A4A000CC8A002B42F00C83C8F340082AE4012E2A -:10A4B00002F0F681082E7FF423ACE37843F63838B7 -:10A4C0004C4E952223F0040303CE43F00803C7F853 -:10A4D0006D006846C7F8711007F16001E3701EF067 -:10A4E000D9FA08EB05004FF0000894E80E00FEF7DB -:10A4F0003BFC07E406F0FD03012B01F0DD84052E93 -:10A5000001F0C387082E7FF4FBAB3B4A43F6383893 -:10A51000E3783A4EA84423F0040303CA43F0080347 -:10A520009522C7F86D00C7F87110E37003CEC7F825 -:10A53000BF006846C7F8C31007F160011EF0AAFA11 -:10A5400040464FF0000894E80E00FEF70DFCFFF7C0 -:10A55000D9BBFB69032B3FF6D3AB06F0FD03012B00 -:10A5600002F08680082E7FF4CBABF96907F5CE7038 -:10A57000FBF73EFAA179284643F63836F9620BF02C -:10A5800009FEF96A024607F16D002E44FBF7C0FA96 -:10A5900007F5CE7107F1BF004FF0000822F0B4FBC1 -:10A5A000E37807F16001952223F00403684643F045 -:10A5B0000803E3701EF06EFA304694E80E00FEF7D2 -:10A5C000D3FBFFF79FBBFB69002B7FF499AB012EF8 -:10A5D00002F01B80082E02F0EB879AF86889FFF7DB -:10A5E00091BB00BFD4200020582600200019002075 -:10A5F000201F0020341F00200C1F0020041F0020FB -:10A600007F233A692382002A01F07E80B86994F89A -:10A610009D30E0812282002B41F0A28605F5405951 -:10A6200006F0FD0399F81418814218BF0246012B69 -:10A6300041F078804FF0000889F81428FFF762BBDA -:10A64000012E02F0C981052E01F08A85082E7FF4C3 -:10A6500057ABE37843F63836C5494FF0000823F08E -:10A6600004039522086843F0080384F81580C7F8AE -:10A670006D006846E3700B7907F1600187F871306F -:10A680001EF008FA701994E80E00FEF76DFBFFF754 -:10A6900039BB07232382BB69002B01F02281013BD8 -:10A6A000FA69934241F32B862382E28194F89D302C -:10A6B000002B41F02B8605F54053FA69D3F8083298 -:10A6C0001B78934202F05687F96906F0FD03012BCF -:10A6D00041F0138105F548504FF00008FBF712FEDA -:10A6E000FFF710BB07232382BB6993B1013BFA69D3 -:10A6F000934241F35B852382E28194F89D3043B914 -:10A7000005F54053FA69D3F8F8311B78934202F00B -:10A71000A086F9699AF86439DB063FF5F1AA013E93 -:10A72000072E00F22C84DFE816F0EA032A04EA037D -:10A730002A043C052A042A04FE0406F0FD08B8F1A8 -:10A74000010F01F09684082E7FF4DAAAE27843F62E -:10A750003836884B4FF0000822F004022E4442F0B5 -:10A760000802E27007CBC7F86D006846C7F87110A1 -:10A7700007F16001C7F8752095221EF08BF930466D -:10A7800094E80E00FEF7F0FAFFF7BCBA012E02F0D3 -:10A79000B580082E7FF4B4AAE37843F63838764EB5 -:10A7A000952223F0040303CE43F00803C7F86D009D -:10A7B0006846C7F8711007F16001E3701EF06AF98E -:10A7C00008EB05004FF0000894E80E00FEF7CCFA05 -:10A7D000FFF798BA012E02F0B780052E01F0988499 -:10A7E000082E02F0528405F54055D5F8DC31B3F15E -:10A7F000000818BF4FF00108FFF784BA012E02F0DD -:10A80000DC80082E7FF47CAAE27843F638365B4B76 -:10A810004FF0000822F0040242F00802E27007CB79 -:10A82000C7F86D006846C7F8711007F16001C7F8F6 -:10A83000752095221EF02EF9701994E80E00FEF78F -:10A8400093FAFFF75FBA022E01F04483082E7FF4DB -:10A8500057AAFA690B2A3FF620ABDFE812F0F6069A -:10A86000F606C5069406690636060306BE058E057D -:10A87000620562056205012E01F07B87082E41F01A -:10A880003081E37843F638363D4A07F1600123F022 -:10A8900004032E441068952243F008034FF000088B -:10A8A000C7F86D006846E3701EF0F4F8304694E88F -:10A8B0000E00FEF759FAFFF725BA4FF00008012EF7 -:10A8C00084F8158001F00F87042E02F01581052E03 -:10A8D00001F0C085082E7FF413AAFB6907F16D0013 -:10A8E000396943F6383603F00F02BB690091013233 -:10A8F000244921F011FE802307F16001952268466A -:10A9000063711EF0C7F8701994E80E00FDF7F6FEAB -:10A91000FFF7F8B94FF00008012E84F8158002F017 -:10A920002F80042E02F00481052E01F08585082E6B -:10A930007FF4E6A9FB6907F16D00396943F6383603 -:10A9400003F00F02BB69009101320E4921F0E4FDD2 -:10A95000902307F160019522684663711EF09AF812 -:10A96000701994E80E00FDF7C9FEFFF7CBB900BFE0 -:10A97000FC1E0020301F0020281F0020D01F0020B8 -:10A98000641F0020D81E002007232382BB69002BF0 -:10A9900000F05487013BFA69934241F346852382D4 -:10A9A000E28194F89D30002B41F0278505F5405356 -:10A9B000FA69D3F810321B78934202F0E085F96906 -:10A9C000012E00F04487032E02F00B82052E02F0C8 -:10A9D0006680082E02F00D8305F54055D5F810323B -:10A9E00093F80080FB69A8EB030CDCF1000848EB4E -:10A9F0000C08FFF787B9012E7FF482A97B6943F227 -:10AA0000B0703C694FF0000893F833202844D7E930 -:10AA10000631009401F00301FDF76EFAFFF772B9F9 -:10AA2000012E01F0F687052E01F0A883082E7FF491 -:10AA300067A9E17843F63836A04B4FF0000821F0C3 -:10AA40000401952284F8158041F00801E17003CBE0 -:10AA50001B88C7F86D006846C7F8711007F16001E0 -:10AA6000A7F875301EF016F8701994E80E00FEF77E -:10AA70007BF9FFF747B9042E01F07681082E7FF4A9 -:10AA80003FA98F4A0026E37810689288C3F3001824 -:10AA90006675A7F8C320DA06C7F8BF0002F153872E -:10AAA00023F0040343F6383607F16001952243F0A2 -:10AAB00008036846E370D7F8BF30C7F86D30B7F8C1 -:10AAC000C330A7F871301DF0E5FF701994E80E004F -:10AAD000FEF74AF9FFF716B9FB69002103F00F02F0 -:10AAE000BB69617503F07F0002EB821301320AEB50 -:10AAF00043030344388A93F8CF9A7F232382BEF11D -:10AB0000000F10D00EF1FF33E0819BB298422382F8 -:10AB100041F2EE83E381208294F89D301BB9E089F5 -:10AB2000814508BF208A94F81680B8F1000F00F024 -:10AB3000AA8694F89E30002B01F0D083208A00234F -:10AB400084F89D3006F0FD03012B40F088867B6978 -:10AB5000C6B2002093F833108046BB6901900120F3 -:10AB60000096029005F5CE5016F0FEFDA279E3792D -:10AB7000B02102F00F022846009601320BF0A2FB32 -:10AB8000FFF7C0B8FB69396903F00F027F231FFA92 -:10AB900081FC238202EB821301320AEB430393F818 -:10ABA000CD0A3B8B81B10CF1FF31E38189B28B423D -:10ABB000218241F2EE83E181238294F89D1019B93C -:10ABC000E389984208BF238A94F81680B8F1000FF1 -:10ABD00000F0B88694F89E30002B01F0EE82238AB4 -:10ABE000002184F89D1006F0FD01012940F05487F2 -:10ABF0007969DBB2002091F833108046009005F5AA -:10AC0000CE50FB6216F036FCA279FF24FB6A02F0FC -:10AC10000F02C0212846009401320BF053FBFFF7CE -:10AC200071B8012E01F05E86052E01F08682082E95 -:10AC300002F0FE8205F5405393F8240820B143F654 -:10AC400024002844FAF72CFAA0F10108B8FA88F891 -:10AC50004FEA5818FFF756B807232382BB6993B110 -:10AC6000013BFA69934241F33C832382E28194F8E9 -:10AC70009D3043B905F54053FA69D3F8FC311B7890 -:10AC8000934202F06784FA693B69012B03D10023E8 -:10AC9000E3813F2323829AF86439D9063FF530A82F -:10ACA000013E072E00F21C81DFE816F0C8001A01F1 -:10ACB000C8001A0120021A011A01BA01F01E002070 -:10ACC000E81E0020DAF86CC84FF0040EBA699CF850 -:10ACD0000000BB8B1FFA82F8A4F810E0002A00F0F5 -:10ACE000108508F1FF32E38192B29342228241F251 -:10ACF0002F83E281238294F89D20002A40F0018571 -:10AD0000E289904200D1228A94F81680B8F1000FAF -:10AD100000F0988694F89E20002A01F05182228A41 -:10AD2000002084F89D0006F0FD00012840F03786E1 -:10AD30000023D1B228461A46984608F0C7FBFEF712 -:10AD4000E1BF0F232382BB69002B00F0B986013BD2 -:10AD5000FA69934241F34A832382E28194F89D3059 -:10AD6000002B41F02B8305F54053FA69D3F80C32E0 -:10AD70001B789A4202F04583F969012E00F0A986FA -:10AD8000032E01F07B87052E01F06186082E02F06C -:10AD9000E48005F54055D5F80C3293F80080FB6946 -:10ADA000A8EB0309D9F1000848EB0908FEF7AABF90 -:10ADB000022E00F0C787082E7EF4A2AFE37843F698 -:10ADC0003838C54E952223F0040303CE43F0080320 -:10ADD000C7F86D006846C7F8711007F16001E370AD -:10ADE0001DF058FE08EB05004FF0000894E80E0037 -:10ADF000FDF7BAFFFEF786BF012E01F09184082E01 -:10AE00007EF47EAFE3781B0742F11784FB69092BC0 -:10AE100042F23B85FB690A3B0C2B00F23B84DFE8E6 -:10AE200013F0B722B122AB22A5225F1F5D1F541F72 -:10AE3000481FC21F30043004411E391E94F89D3053 -:10AE4000002B02F0BA843B69012B02F0598794F879 -:10AE50000E802D2194F810A043F2EC169F4894F830 -:10AE60009EB02E4494F89F401FF034FD9C481DF086 -:10AE7000C7F9D04504D803F050805346C2469846DF -:10AE8000424605F54059072AD9F8FC3128BF072268 -:10AE9000BAF1080F1B78D2B228BF4FF0000A524512 -:10AEA00003F24380B8F1000F43F050810722BBF159 -:10AEB000000F02F080870133002C02F07687934266 -:10AEC00003DC434501DB5FFA83F84246D9F8F81109 -:10AED0000023304609789846F3F738FDFEF712BF95 -:10AEE00005F54055D5F8FC3193F80080FB69A8EBD7 -:10AEF0000302D2F1000848EB0208FEF703BF94F802 -:10AF00009D30002B02F01983A27B43F2EC10267CCB -:10AF100094F89EC02844B24294F89F4004D802F0AE -:10AF2000CC86334616461A46072A114605F540597F -:10AF300028BF0721082ED9F8F831C9B228BF00264A -:10AF40001B78B14202F2C086002A43F0288707210D -:10AF5000BCF1000F03F090800133002C03F08680D9 -:10AF60008B4202DC934200DBDAB21146D9F8FC21B5 -:10AF7000002312789846F3F7E9FCFEF7C3BE05F507 -:10AF80004055D5F8F83193F80080FB69A8EB030C25 -:10AF9000DCF1000848EB0C08FEF7B4BE0025FB6AA4 -:10AFA000FA69594648460095A846A047FEF7AABE4A -:10AFB000FB6A5946FA694846DB09CDF800C04FF0F4 -:10AFC0000008A047FEF79EBE00257B6AFA69594635 -:10AFD00048460095A0478046FEF794BE00257B6A50 -:10AFE000FA69594648460095A846A047FEF78ABE2A -:10AFF00006F0FD03012B7FF4DBA894F89D30002BB5 -:10B0000041F01B810B46002A3EF47AAE43F25430E5 -:10B0100019464FF000082844FAF762F8FEF772BEAE -:10B02000FB69072B3EF66CAE2E4A05F54059BB8BEB -:10B030000126106891889279638187F8C520D9F834 -:10B04000FC21C7F8BF00A7F8C3101178E078A3EB84 -:10B05000010CE675A181DCF1000343EB0C032375C1 -:10B06000C3060AD53B69B34204F082831378D9F84A -:10B07000F8216381A3811378637243F2EC1607F120 -:10B080006D0261894FF000082E443046FBF790F8BE -:10B0900007F19602A1893046FBF78AF8124A43F677 -:10B0A000383692E8030001222E44C7F8E000080C6D -:10B0B00084F89C209522A7F8E41007F1600187F836 -:10B0C000E60068461DF0E6FC304694E80E00FDF709 -:10B0D0004BFEFEF717BE00BFC81F00203C2000201B -:10B0E000A84B0020002000206C200020E189238A4A -:10B0F0005B1A02F0C18405F5405503EBD378642058 -:10B10000D5F8FC214FEA68081278521A00FB028831 -:10B1100008FB03F2002A98FBF3F8C2F2BC855FFA41 -:10B1200088F8FEF7EFBDC54B05F540524FF001081A -:10B1300007F16D01186843F638361B79C7F8BF0070 -:10B140002E44F86987F8C330D2F8F82183B26381BE -:10B15000127884F81780A3EB020EA281DEF10003BF -:10B1600043EB0E032375FAF7ABFD07F19601207B45 -:10B17000FAF7A6FDB24907F1E003952284F89C8016 -:10B180004FF0000803C983E8030007F16001684637 -:10B190001DF080FC304694E80E00FDF7E5FDFEF75B -:10B1A000B1BD05F540554FF0640803220723D5F8DB -:10B1B000F811097818FB0128B8FBF3F85FFA88F852 -:10B1C000FEF7A0BDFB69A3F16502D6B27C2E02F2A8 -:10B1D000578405F5405192B291F89D376281D807A6 -:10B1E00008D591F8AA17C3F380005B07A18101D5A8 -:10B1F0008E4200D00020934907F1E003207501261C -:10B2000003C9E67583E8030003238F4907F16D0046 -:10B2100084F89C3021F080F9A28907F196008A49D0 -:10B2200021F07AF9E37823F0040343F00803E37094 -:10B23000864B43F6383695224FF0000803CB1B8827 -:10B24000C7F8BF006846C7F8C31007F16001A7F848 -:10B25000C7301DF01FFC701994E80E00FDF784FD47 -:10B26000FEF750BDFB69082B02F06A8501F2D58418 -:10B27000012B3EF612AEFA6A3F237F2105F54059B5 -:10B2800003EB021399F8AC27B3FBF1F3FF2ADCB20E -:10B2900004F0BF8094423EF433AD99F89D3744F2F8 -:10B2A000A580DA0703F19C854FF0000889F8AC47C8 -:10B2B000FEF728BDFB69653B7C2B42F2B782FB6938 -:10B2C000012B02F2A88194F8A0104FF0000843F27D -:10B2D000907094F89E20B1EB0801284418BF01211A -:10B2E000FCF7E6FDFEF70EBDFB69653BDBB27C2B90 -:10B2F00002F2878305F5405595F89D2712F0010865 -:10B300003EF400AD5407C2F380087EF5FBAC95F81F -:10B31000AA87A8EB0300D0F1000848EB0008FEF76D -:10B32000F1BC05F540524A4907F16D0043F6383645 -:10B3300092F831384FF0010892F830282E4421F06D -:10B34000EBF8444AE37803CA23F00403C7F8BF00CC -:10B35000108843F00803C7F8C310952207F1600175 -:10B36000A7F8C7006846E3701DF094FB304694E8E8 -:10B370000E00FDF7F9FCFEF7C5BCE17843F6383660 -:10B38000354B4FF0010821F004019AF8CC2A2E44E5 -:10B3900041F00801C2F38002E1702275952203CBCF -:10B3A000C7F86D0018782D4BC7F8711087F8750035 -:10B3B000998818689B79C7F8BF006846A7F8C3103A -:10B3C00007F1600187F8C5301DF064FB304694E852 -:10B3D0000E00FDF7C9FCFEF795BC9AF8CC3A43F68F -:10B3E00038391F4E9522C3F34003DFF870C04FF089 -:10B3F00001082375E37823F0040343F0080303CE28 -:10B40000E370BCF80430C7F86D00DCF80000A7F862 -:10B41000C3309CF80630C7F8711007F16001C7F817 -:10B42000BF00684687F8C5301DF034FB09EB050006 -:10B4300094E80E00FDF798FCFEF764BC7420002031 -:10B440007C200020E8200020F020002004220020A2 -:10B45000B01F0020BC1F0020A41F0020741F00206C -:10B460009C1F0020C84B43F63836C84A4FF00108ED -:10B470002E4403CB1B88C7F8711005F54051A7F87F -:10B4800075309388D1F8E411A7F8C3309379003967 -:10B49000C7F86D0087F8C53018BF0121E378106840 -:10B4A000952223F004032175C7F8BF0007F160015E -:10B4B00043F008036846E3701DF0ECFA304694E868 -:10B4C0000E00FDF751FCFEF71DBCB14B43F63836BC -:10B4D000AE4A4FF001082E4403CB1B88C7F8711009 -:10B4E00005F54051A7F875309388D1F8DC11A7F81D -:10B4F000C33093790039C7F86D0087F8C53018BF9D -:10B500000121E3781068952223F004032175C7F820 -:10B51000BF0007F1600143F008036846E3701DF0C7 -:10B52000B9FA304694E80E00FDF71EFCFEF7EABBC0 -:10B53000DAF85C3843F63836944A4FF00108C3F322 -:10B54000001394492E442375E3780868918823F00A -:10B550000403C7F86D00A7F8C31043F00803106890 -:10B5600091799522C7F8BF00684687F8C51007F1A2 -:10B570006001E3701DF08EFA304694E80E00FDF78E -:10B58000F3FBFEF7BFBBDAF85C3843F63836824986 -:10B590009522C3F3C003DFF8F4C108684FF0010837 -:10B5A0002375E378C7F86D0023F00403DCF800008E -:10B5B00043F00803C7F8BF006846E3700B7907F152 -:10B5C000600187F87130BCF80430A7F8C3309CF8EC -:10B5D000063087F8C5301DF05DFA701994E80E004A -:10B5E000FDF7C2FBFEF78EBBDAF85C3843F638365F -:10B5F0006A4A4FF00108C3F380032E441068237594 -:10B60000E378918823F004039279C7F86D0043F042 -:10B61000080387F87320A7F8711007F16001E37041 -:10B620005A4B18689A889B79A7F8C3209522C7F8C7 -:10B63000BF00684687F8C5301DF02CFA304694E804 -:10B640000E00FDF791FBFEF75DBBE37843F638365D -:10B65000534A07F1600123F004032E441068952239 -:10B6600043F008034FF00108C7F86D006846E37027 -:10B670001DF010FA304694E80E00FDF775FBFEF75A -:10B6800041BB484B03CB1B88C7F86D00C7F871104E -:10B69000A7F87530E37843F638364349952223F00E -:10B6A00004034FF00008086843F00803C7F8BF0020 -:10B6B0006846E3708B8807F16001A7F8C3301DF07E -:10B6C000E9F9701994E80E00FDF74EFBFEF71ABB7E -:10B6D000FB69133B042B3EF67FAD05F54059B9F8E5 -:10B6E0005C331A0707D4314A1268C9F86C234FF447 -:10B6F0007A72A9F8682343F00803A9F85C33FEF7CF -:10B700006BBD1A46FFF700BB06F0FD03012B09D104 -:10B7100094F89D30002B40F02886BA6905F5405911 -:10B72000FEF788BF052E01F02F82082E7EF4E8AACE -:10B73000E378580742F1778005F5405292F81428D3 -:10B7400023F004031A4907F16D00628143F00803F6 -:10B7500043F638364FF00008E37020F0DDFE154B5D -:10B760002E44952203CBC7F8BF006846C7F8C31024 -:10B7700007F160011DF08EF9304694E80E00FDF7E8 -:10B78000F3FAFEF7BFBA00BF901F0020741F00201D -:10B79000841F0020741C00207C1F00206C1F0020D0 -:10B7A000681F00200820002024200020E8BA002084 -:10B7B00058260020041F0020082E7EF4A1AAE3785A -:10B7C00043F63836C94A4FF0000823F004032E44EC -:10B7D000106843F008039188C7F86D00E370C44B0C -:10B7E000A7F87110927903CB87F8732095221B88F4 -:10B7F000C7F8BF006846C7F8C31007F16001A7F893 -:10B80000C7301DF047F9304694E80E00FDF7ACFA5A -:10B81000FEF778BA05F54059082E01F0918599F8A0 -:10B82000733313F0010318BF99F88E33A8EB0308A4 -:10B83000B8FA88F84FEA5818FEF764BA012E7FF478 -:10B84000C2A894F89D30002B40F0DA85F96905F51F -:10B8500048504FF00008F3F709F9FEF753BA042EE9 -:10B8600001F0EF82052E01F0FD81082E01F03B86EC -:10B870003B6903F07F08A8EB0901D1F1000848EB10 -:10B880000108FEF73FBA06F0FD03012BE7D194F85B -:10B890009D30002B3FF45BA97B69207C93F833102B -:10B8A000BB690490A07B039094F89F00029094F8E9 -:10B8B0009E00019094F8A000003818BF012000906D -:10B8C00005F5CE5017F072FCA2790646E37902F036 -:10B8D0000F02B0212846009601320AF0F3FCFEF771 -:10B8E00011BA06F0FD03012B07D194F89D30002B0F -:10B8F00040F01185F969FEF7EDBE052E01F0548187 -:10B90000082E01F0D68405F54055D5F8083293F895 -:10B910000080FB69A8EB030BDBF1000848EB0B0888 -:10B92000FEF7F0B9082E01F00E8405F54055BB690D -:10B9300095F88B87A8EB0308B8FA88F84FEA5818EF -:10B94000FEF7E0B906F0FD01012940F0A58094F86A -:10B950009D1000293FF44CA97969207C94F8A0300F -:10B9600091F833100390003BA07B18BF0123029095 -:10B9700094F89F00019094F89E00009005F5CE5039 -:10B9800017F028FCA279FF24034602F00F02C02121 -:10B990002846009401320AF095FCFEF7B3B9052E53 -:10B9A00001F07280082E41F06380BA69052A3EF6E4 -:10B9B000A7A9FA69042A3EF6A3A911464D4A638154 -:10B9C000012610684FF000089288C7F8BF00A7F85A -:10B9D000C3209CF80000DAF8FCE7A3EB000CDEF8CB -:10B9E0000020DCF10003A081C2F34022284643EB93 -:10B9F0000C03E675227607F16D02237507F09EFBB6 -:10BA000007F19602217B284607F098FB3A4A84F812 -:10BA10009C6043F6383692E803002E449522C7F81E -:10BA2000E000080CA7F8E41007F1600187F8E600D1 -:10BA300068461DF02FF8304694E80E00FDF794F9A3 -:10BA4000FEF760B906F0FD000128A8D194F89D30FA -:10BA5000002B3FF46DA9284694F8A050A37B003D2D -:10BA600094F89F2094F89E1018BF01250195247C1E -:10BA7000009407F03DFDFEF745B906F0FD03012BEC -:10BA80007FF4C8AE94F89D30002B41F04D834246C0 -:10BA900005F54059FEF798BC042E01F0ED81052E06 -:10BAA00001F0B481082E01F0D984BB6903F07F084E -:10BAB000A8EB0004D4F1000848EB0408FEF722B913 -:10BAC000012E7FF45DA994F89D30002B40F079841D -:10BAD000F96905F548504FF00008F3F739F8FEF71B -:10BAE00011B94FF0FF08FEF70DB900BF102200207A -:10BAF00004220020F41F00203420002005F54055CA -:10BB000095F89431DB077EF5FBA889B2A1F11E03FD -:10BB1000B3F5877F3EF6F4A8D44B64224FF00008BB -:10BB2000A5F88C111B68A5F8C421C5F8C831FEF72B -:10BB3000E9B8FA69162A3EF6B0A901A353F822F033 -:10BB400021D8000011D80000A5D9000011D80000AC -:10BB500083D900006BD9000053D9000011D8000030 -:10BB60003BD9000023D900000BD90000FBD800000E -:10BB7000EBD80000DBD80000CBD80000BBD8000019 -:10BB80000FBB000099D8000089D800006FD80000D2 -:10BB900055D8000041D8000031D8000005F54055C7 -:10BBA00095F8A38408F00108FEF7ACB805F54055F8 -:10BBB00095F8738308F00108FEF7A4B805F5405521 -:10BBC000B5F85C8308F00108FEF79CB805F5405510 -:10BBD00095F87783B8FA88F84FEA5818FEF792B8C4 -:10BBE00005F5405595F8778318F0020F18BF4FF010 -:10BBF000010808F00108FEF785B805F5405595F8ED -:10BC0000778318F0020F18BF4FF0010808F0010801 -:10BC1000FEF778B805F54055B5F85C83C8F38008A1 -:10BC2000FEF770B805F5405595F8A33413F00108F8 -:10BC30003EF468A85807C3F380083EF563A8C3F331 -:10BC4000C008FEF75FB805F5405595F87783C8F34F -:10BC50004018FEF757B805F5405595F87783C8F3B7 -:10BC60000018FEF74FB805F5405595F87783C8F3EF -:10BC70008008FEF747B805F5405595F8778308F03A -:10BC80000108FEF73FB805F5405595F87783C8F3EE -:10BC90004008FEF737B805F5405595F8A33413F082 -:10BCA00001083EF42FA8C3F34018FEF72BB805F5A2 -:10BCB000405595F8A33413F001083EF423A8C3F3CC -:10BCC0000018FEF71FB805F5405595F8A33413F09A -:10BCD00001083EF417A8C3F3C008FEF713B805F532 -:10BCE000405595F8A33413F001083EF40BA8C3F3B4 -:10BCF0004008FEF707B805F5405595F8A33413F052 -:10BD000001083DF4FFAFC3F38008FDF7FBBF05F565 -:10BD1000405595F8A33413F001083DF4F3AF5C07E8 -:10BD200002F1C886C3F3C00383F00108FDF7EABF40 -:10BD300005F5405595F8A38408F0010888F001083E -:10BD4000FDF7E0BFFB69012B41F23C80DAF85C387B -:10BD5000D80701F1998213F0020F0CBF4FF0FF08D2 -:10BD60004FF00208FDF7CEBFFB69B96903F00F037E -:10BD70005A1C002940F0298703EB8313F96A05EB6D -:10BD800043033A2903F5805494F9CE3A41F22285CF -:10BD9000F96A442902F20C81002B3DF4B1AF7B69B2 -:10BDA00005F5CE50BD6993F833102B46009516F07B -:10BDB0003FF984F8CE5ADAF8C82AA846D36D43F082 -:10BDC0002003D365FDF79EBF05F5405999F87333FD -:10BDD000DE077DF595AFFA69082A03F2E784DFE80C -:10BDE00002F047381505050505605400FB6902247B -:10BDF00043F25430BA69033B0B2128440094DBB270 -:10BE00004FF00108F3F7AAFCFDF77CBF43F2543072 -:10BE100043F2AC413A8B00232844294403E0013328 -:10BE20005B2B02F02D8711F83340BD69AC42F6D18F -:10BE30004B4493F83934DB4313F0010342F020877D -:10BE400002240A214FF001080094F3F787FCFDF764 -:10BE500059BF022143F25430BA69002300912844AB -:10BE60000A21F3F77BFCFDF74DBF00BFE8BA0020C5 -:10BE7000022443F254300123BA690A212844009471 -:10BE80009846F3F76BFCFDF73DBF43F254300323B4 -:10BE90000222B96928444FF00108FBF7FFFAFDF7C9 -:10BEA00031BF43F2543001230022B9692844984637 -:10BEB000FBF7F4FAFDF726BFFB6928464FF00008B0 -:10BEC00003F00F017B69013193F8332009F072FB15 -:10BED000FDF718BFFA690B2A3DF6DFAF01A353F84F -:10BEE00022F000BF5FDC000079B9000053DC0000E5 -:10BEF00047DC00003BDC000025DC00000FDC00001C -:10BF0000FFDB0000EFDB0000CDDB0000ABDB00005F -:10BF100089DB000005F5405393F8240820B143F66F -:10BF200024002844F9F7BCF8841ED4F1000848EB3B -:10BF30000408FDF7E7BE05F5405393F8240820B147 -:10BF400043F624002844F9F7ABF8451ED5F1000864 -:10BF500048EB0508FDF7D6BE05F5405393F82408D5 -:10BF600020B143F624002844F9F79AF8B0F100080C -:10BF700018BF4FF00108FDF7C5BE9AF8CC8AC8F388 -:10BF8000800888F00108FDF7BDBE9AF8CC8AC8F396 -:10BF9000400888F00108FDF7B5BE05F54055D5F815 -:10BFA000E431B3F1000818BF4FF00108FDF7AABE55 -:10BFB00005F54055D5F8DC31B3F1000818BF4FF056 -:10BFC0000108FDF79FBEDAF85C38C3F30018FDF7EF -:10BFD00099BEDAF85C38C3F3C008FDF793BEDAF80F -:10BFE0005C38C3F38008FDF78DBE9AF86489C8F306 -:10BFF000C008FDF787BEFB69002B40F06F85BB6969 -:10C00000012B41F28A839AF8CC3A83F002038AF832 -:10C01000CC3AFDF777BE94F89D3023B1FB69653BC0 -:10C020007C2B41F24082C6494FF00008C548F9F721 -:10C030002DF9C549C348F9F729F900230A22A17946 -:10C04000C0481CF0F9F8C049BE48F9F71FF9E1797A -:10C0500000230A22BB481CF0EFF8BA481CF0D0F8C5 -:10C0600043F29070E279A1792844FBF7B7FCFDF721 -:10C0700049BEFB6905F5CE5000267D6903F00F022D -:10C08000BB6995F83310013203F07F03CDF80880C7 -:10C09000009333460196C7E90A2015F065FB95F831 -:10C0A0003310BA6ACDE90168237A03F07F03009365 -:10C0B0002023F86A15F058FB94F89D50F86A002D7B -:10C0C00000F052857E22A37DE68122820BB184F8A6 -:10C0D0009D607A69002594F8A0307E2692F833108E -:10C0E000A846A2795B1BCDE9025694F89F5002F056 -:10C0F0000F0218BF01230195013294F89E4000946D -:10C1000017F068F8FDF7FEBD4FF6FF73FEF72EB887 -:10C1100005F54055D5F8DC31002B3DF4F1AD4FF07D -:10C120006408FDF7EFBD43F23020D7E9062128442B -:10C13000FAF71EFB8046FDF7E5BD05F5405393F881 -:10C140002438002B3DF4DCAD43F624002844F8F7F6 -:10C15000A7FF01287DF4D4AD4FF06408FDF7D2BDF0 -:10C160004FF064083A697F2308FB02F808F13F08A2 -:10C17000B8FBF3F85FFA88F8FDF7C4BD4FF0640828 -:10C180003A697F2308FB02F808F13F08B8FBF3F88F -:10C190005FFA88F8FDF7B6BD43F29070C1F308016D -:10C1A00098462844FBF7BEFDFDF7ACBD3EF4A5AABA -:10C1B000E381FB692382FEF7A0BAE389FEF710BD95 -:10C1C000E289FEF7ADBD3EF4E8A8A4F81080E38153 -:10C1D000FEF7E3B806F0FD03012B7FF41BAB05F57A -:10C1E000405394F89E0094F89F1093F87323D2075D -:10C1F0007DF586AD227C93F88E33072A28BF002276 -:10C20000002801F080820133002901F04A86072BC3 -:10C2100002DC934200DBDAB2002343F2543092B2E4 -:10C220000C21284400939846F3F798FAFDF76ABD6D -:10C2300006F0FD03012B7DF4BBAF94F89E5094F8FB -:10C240009F00E389248A002A3DF45AADA342B9F83D -:10C250007413B9F88C2381F0DD828C4202D91C461C -:10C2600023460C46002D01F0CB82511C002801F022 -:10C270002E85A14202DC994200DB8BB21C4694421F -:10C2800022D0012399F8722399F8711300250293A3 -:10C29000C4F3C613CDE900352B46D9F8540315F085 -:10C2A00063FA99F87333DA0701F1FE86274B012010 -:10C2B00041F288311A681B68A9F88403A9F87C1335 -:10C2C000C9F88823C9F880334FF00008FDF71ABD7C -:10C2D0003DF45BAF2182E381FDF757BFE089FEF7B4 -:10C2E0002EBC3EF4C4ACE381FB692382FEF7BFBCE5 -:10C2F0007EF412AC7E23E1812382FEF70DBC3EF476 -:10C30000D5A9E381FB692382FEF7D0B906F0FD03CE -:10C31000012B7FF4F2AA207C4FF0000894F8A030A3 -:10C3200094F89F2094F89E10003B019005F548502A -:10C33000A47B18BF01230094FAF71AF8FDF7E2BCBA -:10C34000D8200020A84B0020EC230020E8BA0020D1 -:10C350007EF4D1AC0022E28103222282FEF7CBBC24 -:10C3600006F0FD03012B7FF4DDA938694FF00008CA -:10C3700094F8A03094F89F2094F89E10003B019010 -:10C380002846BC6918BF0123009409F0ADF8FDF7F9 -:10C39000B9BC7EF412AC0021E1817E212182FEF73E -:10C3A0000CBC3A6943F28470002A00F07E85B969BA -:10C3B00028449846FBF7EAFAFDF7A4BC012E7EF468 -:10C3C000DFAC207C4FF0000894F8A03094F89F2058 -:10C3D00094F89E10003B019005F54850A47B18BFCF -:10C3E00001230094FAF726F8FDF78CBC3EF4B6ACB6 -:10C3F000E381FB692382FEF7B1BC012E7EF4E3AA40 +:106E1000002070470020704712F00E00D9D012F009 +:106E20000F0018BF01207047092B94BF00200120DC +:106E30007047062B00F2FB80053B012B8CBF002026 +:106E40000120704702F00F03013B012B8CBF002093 +:106E50000120704702F00F03062B00F2EC80053B87 +:106E6000012B8CBF002001207047092B94BF00200C +:106E700001207047062B94BF002001207047062B8D +:106E800000F2DB80023B042B8CBF00200120704706 +:106E9000062B94BF00200120704700F00F0005284A +:106EA00094BF00200120704703F00F03042B94BF10 +:106EB00000200120704703F00F00013804288CBF28 +:106EC00000200120704703F00F03062B00F2B7806B +:106ED000023B042B8CBF002001207047082B94BF7D +:106EE0000020012070470A2B94BF0020012070472A +:106EF000062B00F2A6800CBF0120002070470A2B51 +:106F000094BF00200120704702F00F03013B032BC8 +:106F10008CBF00200120704702F00F03062B00F207 +:106F20008880033B032B8CBF002001207047082B77 +:106F300094BF002001207047062B70D8043B022B21 +:106F40008CBF00200120704712F00C003FF441AFCD +:106F500012F00F0018BF0120704710F00E0F58D12B +:106F600010F00F0018BF0120704700F00F00062836 +:106F70005BD80CBF01200020704710F00F0018BF35 +:106F80000120704710F0080345D010F00F0018BF23 +:106F90000120704700F00F00062844D8033803286A +:106FA0008CBF00200120704710F00C0F35D110F07D +:106FB0000F0018BF0120704710F0080327D010F011 +:106FC0000F0018BF0120704700F00F0001283FF4A8 +:106FD00000AF062837D8023804288CBF00200120D3 +:106FE000704700F00F00022894BF00200120704776 +:106FF00000F00F00062814D8043802288CBF0020A7 +:107000000120704710F00F0018BF0120704718468C +:1070100070470020704718467047002070470120D5 +:107020007047012070470120704701207047012000 +:1070300070470120704701207047012070470120F0 +:107040007047012070470120704700BFD0F8D4304E +:1070500030B50446D80783B014D49A0724D5002944 +:1070600042D101250023204605211A460095F7F755 +:10707000F7FD2B460022052120460095F7F7F0FD8D +:1070800003B030BDE9B9012500230A2120461A4684 +:107090000095F7F7E5FD2B4600220A2120460095D2 +:1070A000F7F7DEFD03B030BD5D0708D418072CD418 +:1070B000DA0654D49B06F5D50029D2D13EE000294A +:1070C0004FD101250023204606211A460095F7F7E7 +:1070D000C7FD2B460022062120460095F7F7C0FD8C +:1070E00003B030BD042B17D1012500232046072112 +:1070F0001A460095F7F7B4FD2B46002207212046DB +:107100000095F7F7ADFD03B030BD04230029E9D0A9 +:10711000032B03F101020FD1012500232046082192 +:107120001A460095F7F79CFD2B46002208212046C1 +:107130000095F7F795FDB5E7052AA4D101250023B1 +:10714000204609211A460095F7F78AFD2B460022B2 +:10715000092120460095F7F783FD03B030BD0523D4 +:10716000D4E70323D4E700BF70B5043984B00546E3 +:107170001C4610469DF820C05F2948D8DFE801F082 +:10718000304949494949496D6D92924747474747B8 +:10719000474747474747474747474747474747477F +:1071A000474747474747474747474747474747476F +:1071B0004747474747474747475A5A808047DEA4D3 +:1071C000C0474747474747474747474747474747D6 +:1071D00047473030303030303030303030304E4E45 +:1071E000072A4FF000014FF0010288BF95F8D10047 +:1071F000002C40F0100314BF1446412401911146A5 +:107200006444286C0292E4B200941AF00FFB04B0BC +:1072100070BD21462846FFF719FFF8E7002C40F023 +:10722000E180012123462246284600916221F7F79A +:1072300017FDECE7002C40F0C580012623462246CE +:1072400028463D210096F7F70BFD334622463D21A7 +:1072500028460096F7F704FDD9E7002C40F0A280FD +:1072600001262346224628460B210096F7F7F8FC14 +:10727000334622460B2128460096F7F7F1FCC6E775 +:10728000002C7FD101262346224628463F21009626 +:10729000F7F7E6FC334622463F2128460096F7F7EB +:1072A000DFFCB4E7002C5DD10126234622462846A8 +:1072B0000D210096F7F7D4FC334622460D212846CF +:1072C0000096F7F7CDFCA2E7072A40F2968095F8E2 +:1072D000D130082B40F28F800CF1010C0133CCEB44 +:1072E0000C1CDAB24FEA8C03002C40F09A80214645 +:1072F000CB1A51498B42B8BF0B4600241BB215E094 +:107300000CF1010CB5F9DA30CCEB0C1C4FEA8C0C0B +:10731000E4B913F5005F7FF77AAFA3EB0C03464A9D +:107320009342B8BF134600241BB20922286C0121E6 +:10733000089404B0BDE870401AF0E0BE002C4FF095 +:1073400001024FF000014FF03C0354E741F6FA12FE +:1073500093423FF75CAF634441F6FB129342A8BFF0 +:107360001346E0E70124002328460E211A46009424 +:10737000F7F776FC234600220E2128460094F7F703 +:107380006FFC44E701240023284640211A4600945C +:10739000F7F766FC23460022402128460094F7F7C1 +:1073A0005FFC34E70124002328460C211A46009490 +:1073B000F7F756FC234600220C2128460094F7F7E5 +:1073C0004FFC24E70124002328463E211A4600945E +:1073D000F7F746FC234600223E2128460094F7F7A3 +:1073E0003FFC14E701240023632128461A46009439 +:1073F000F7F736FC0BE7184600D003460CF1010CFA +:10740000013305EBC000CCEB0C1CDAB2B0F9DE1096 +:107410004FEA8C035CB141F6FA1081423FF7F7AEB8 +:107420000B4441F6FB118B42A8BF0B4665E711F5F3 +:10743000005F7FF7ECAE5BE700E0FFFF10B54FF0B9 +:10744000000C82B000F5AC7404E00CF1010CBCF14E +:107450005B0F16D014F83CE08E45F6D184449CF8BE +:10746000E54014F00E0418BF0124A2424FF00204BC +:1074700018BF13460A460B210094F8F76FF902B0C3 +:1074800010BD0024F1E700BF00B5C37F13F0010E6B +:1074900010D0002300F5AC7C02E001335B2B09D057 +:1074A0001CF833208A42F8D1184490F8E530DB43C9 +:1074B00003F0010E70465DF804FB00BFC27FD307E6 +:1074C00004D590F84F3113F0010300D0704700B598 +:1074D00083B0012211210093F8F740F903B05DF861 +:1074E00004FB00BFC27FD20703D590F84F31DB0702 +:1074F00000D470470023112100B583B01A460093D1 +:10750000F8F72CF903B05DF804FB00BFC37FDB077D +:107510007FD510B5044682B00B2915D8DFE801F0FD +:10752000693608161924272A2D484F59DB070BD432 +:107530000023012200930F212046F8F70FF9354B65 +:107540000A221B68A282A36102B010BD002303229D +:10755000F0E790F823309907F6D513F00103E7D14F +:107560001A460F21009316E000230422E2E70023CD +:107570000522DFE700230222DCE790F823309A0798 +:107580003CD4DB07D4D42389D807D1D400230F21DE +:1075900020461A460093F8F7E1F823891D4A0A218C +:1075A00043F001031268A1822381A26102B010BDE1 +:1075B00090F82330990721D4DA07E7D4E3E790F86D +:1075C0002330580720D1238923F00103238102B0FF +:1075D00010BD90F823309907A8D5DA07B4D459071D +:1075E0000FD502212046FFF791FFE37FDB079FD4F1 +:1075F000AAE790F82330D807F3D4F0E7DB0797D455 +:10760000C4E79A0794D49FE700212046FFF77EFF46 +:10761000D9E7704708BB002070B5044684B0164611 +:107620001D46052910D8DFE801F00330354A5D1109 +:10763000012100227F254023CDE901216279A17932 +:10764000206800951AF0F2F804B070BD0379C27991 +:10765000022BF9D85D4EF15C002A6CD0551E022B2E +:10766000EDB26CD1093A012A4DD9022DECD8012195 +:10767000002200954523CDE901216279A179206896 +:107680001AF0D4F8E57104B070BD012100227F2505 +:107690004423D1E70379022B5BD0D5D84B4AD35C86 +:1076A000B342D1D90121002200964523CDE9012121 +:1076B0006279A17920681AF0B9F8E671C4E7037914 +:1076C000022BC1D8414AAE42D15C324638BF2A466D +:1076D000D2B29142B8D9C279B24218BF3546022B14 +:1076E000C3D0C4E70379C179022BADD8374E4D1C06 +:1076F000F05C421ED2B2954224DC022BEDB225D1C1 +:1077000007390129B1D8012200230095CDE90132C2 +:1077100045236279A17920681AF088F8082D1FD1D5 +:107720002279E379022A03D80133B25C93428BDBDE +:107730000023E37188E74D1E022BEDB295D08D42F8 +:1077400095D381E7022B4FF0000590D0A8428ED848 +:107750007AE7A2F10803012B10D9022AA2D973E714 +:10776000092D8FD1E379002B7FF46EAF2379022BA3 +:1077700029D8F35C013BDBB2E37165E7012100220C +:1077800000964523CDE901214279817900681AF0FC +:107790004DF8082E0AD12279E379022AC8D80B497C +:1077A00001338A5C9342FFF64FAFC1E7E379002BC8 +:1077B0007FF44AAF2379022B05D8044AD35C013BFE +:1077C000DBB2E37140E7FF23E3713DE7AC0F00203C +:1077D00030B5027985B00446C379022A0ED82C4808 +:1077E000805C451EEDB269B10133AB420EDCDDB207 +:1077F000022A1DD0A8420DD805B030BDFF250020BB +:107800000029F1D1002BF3D0013BF0E7022A4FF021 +:107810000005EFD10121002200954523CDE901218A +:107820006279A17920681AF001F8E57105B030BDE0 +:10783000A5F10803012B03D9022DEBD905B030BD0A +:107840000121002200954523CDE901216279A1792A +:10785000206819F0EBFF082D0BD12279E379022A79 +:1078600004D80B4901338A5C9342C5DB0023E371E2 +:10787000C2E7E379002BBFD12379022B05D8044A54 +:10788000D35C013BDBB2E371B6E7FF23E371B3E7FF +:10789000AC0F002030B5037985B004460D46022BAD +:1078A00012D00FD8204AD35C8B420BD90121002281 +:1078B00000954523CDE901216279A179206819F06D +:1078C000B5FFE57105B030BDA1F10803012B03D967 +:1078D0000229EBD905B030BD0121002200954523D6 +:1078E000CDE9012142798179006819F09FFF082DC7 +:1078F0000BD12279E379022A04D80B4901338A5C3F +:107900009342DFDB0023E371DCE7E379002BD9D17D +:107910002379022B05D8044AD35C013BDBB2E37127 +:10792000D0E7FF23E371CDE7AC0F00200379022BF2 +:1079300021D830B51546104A044685B0A942D05C1E +:107940000A4638BF2A46904213D9E2798A4218BFC4 +:107950000D46022B01D1022D0BD8012100220095EA +:107960004523CDE901216279A179206819F05EFFF4 +:10797000E57105B030BD7047AC0F0020437B13F0BC +:10798000010F31D0F0B51646A1F16402044685B06E +:1079900010060D46D7B228D5152923D8DFE811F0F7 +:1079A000160085008D009900A500B20025012A016E +:1079B0002F0135013B01410156016E015F01F300CA +:1079C000060119011D01CC00E000B70056B10121EC +:1079D00000225023009602910192227E617E20684F +:1079E00019F024FF05B0F0BD70473121B14822F0F5 +:1079F000E5FF0121B04822F0E1FF00230A222946D9 +:107A0000AE4820F08FFC0121AB4822F0D7FF0023C5 +:107A10000A223146A94820F085FCA84820F066FCDF +:107A2000637BDA0735D42F21A54822F0C7FF012157 +:107A3000A14822F0C3FF00230A2239469F4820F0C4 +:107A400071FC01219C4822F0B9FF00230A22314633 +:107A50009A4820F067FC994820F048FC7FB17F2EBF +:107A60000DD1637BDB07BDD500220121712300927C +:107A7000CDE90121227E617E206819F0D7FE637B6B +:107A8000DE07AFD5A27E002AACD15D07AAD4A776C7 +:107A9000A8E7012200230097CDE901327123227E5D +:107AA000617E206819F0C2FEBDE7002E9AD0012148 +:107AB00000225123009602918EE7002101206F23BE +:107AC000227E0091CDE90110617E206819F0AEFEA2 +:107AD00088E7012100206F23227E0091CDE901017A +:107AE000617E206819F0A2FE7CE7012100227F253B +:107AF0006F23CDE90121227E617E2068009519F077 +:107B000095FE6FE7012100227F257023F1E783F0C6 +:107B10004002980648BF02F0DF0212F0400F627385 +:107B200014BF7F210021D3077FF55CAF0120002225 +:107B30005323009102904FE7012100257723227EF5 +:107B40000091CDE90151617E206819F06FFE637BE1 +:107B5000257323F06403658343F01003637341E7E7 +:107B600083F020025E0648BF02F0BF0212F0200F31 +:107B7000627314BF7F210021D5077FF533AF012049 +:107B800000225223D5E7012100227F205223CDE994 +:107B90000121227E617E0090206819F047FE637B00 +:107BA00023F0400343F0200363731BE7012100220D +:107BB0007F205323CDE90121227E617E0090206841 +:107BC00019F034FE637B23F0200343F0400363731A +:107BD00008E70121002076237EE700250121227E8F +:107BE00077230095CDE90151ADE7012100227F25E2 +:107BF00073237EE7012100227F25752379E7012188 +:107C000000226C2300960291E6E6012100226D23FA +:107C100000960291E0E6012100226E230096029177 +:107C2000DAE6012100227F207223CDE90121227EA4 +:107C3000617E0090206819F0F9FDA37E002B7FF48F +:107C4000D1AE637B03F00103A376CBE60023FC22D5 +:107C5000617E206805B0BDE8F04019F059BC980677 +:107C600015D45A067FF5BEAE03F0BF03DF0763737A +:107C70007FF5B8AE00210120532321E7002E3FF409 +:107C8000B1AE01210022742300960291A4E603F014 +:107C9000DF03D9076373E4D500210120227E52233C +:107CA0000091CDE90110617E206819F0BFFD637B72 +:107CB000D7E700BFC0170020EC230020684C00204D +:107CC000F4170020437BDA077FD5A1F12803B3F531 +:107CD000827F2DE9F04F0D4687B002D907B0BDE88D +:107CE000F08F027E044600684FF0010A531E4FF0E9 +:107CF00000094FF06A0B03F00F0303EB831300EB53 +:107D0000430393F8718193F8727193F8796193F852 +:107D10007A31CDF800B005936323CDE9019A617EF5 +:107D200019F084FD637BDB0750D4059B08F07F08C6 +:107D3000216807F07F0703F07F02237E06F07F06AD +:107D4000013B03F00F0303EB831301EB430383F8C1 +:107D50007181D1F808012168C36D43F02003C36528 +:107D6000237E013B03F00F0303EB831301EB43037B +:107D700083F87271D1F80811CB6D43F02003CB6505 +:107D8000237E2168013B03F00F0303EB831301EB18 +:107D9000430383F87961D1F808012168C36D43F08A +:107DA0002003C365237E013B03F00F0303EB831322 +:107DB00001EB430383F87A21D1F80821D36D43F016 +:107DC0002003D36507B0BDE8F08F70476B23CDE982 +:107DD000019A00936223227E2068617E19F026FDBD +:107DE000627BC5F3C713D0079FD500935B4605F0B0 +:107DF0007F05CDE9019A617E227E206819F016FD8B +:107E0000637BD90791D500956B23CDE9019A227E3A +:107E1000617E206819F00AFD637BDA0785D57F252E +:107E20006323CDE9019A0095227E617E206819F0D6 +:107E3000FDFC637BDB077FF578AF00956223CDE91E +:107E4000019A227E617E206819F0F0FC6DE700BF88 +:107E5000A9B110B584B0437B1AB9DB0710D404B0C4 +:107E600010BDDA07FBD50124002250238DE816004F +:107E7000027E417E006819F0D9FC04B010BD704745 +:107E800001245123CDE90012027E417E0068029454 +:107E900019F0CCFC04B010BD2DE9F04F01F0030443 +:107EA00089B080461546012C04AF9C4697F838608F +:107EB00006D0022C50D094B31437BD46BDE8F08FE5 +:107EC000032B0DD8006803EBC30341F2F341D0F854 +:107ED0000821126802EB43035B5C002B40F0AB808F +:107EE000032EE9D8D8F8000006EBC60341F2F341AF +:107EF000D0F80821126802EB43035B5C002BDBD057 +:107F000012242946012504FB062400220295CDE90E +:107F1000002241F2F442224419F002FBCCE7032B89 +:107F2000CAD8006803EBC30341F2F342D0F808114A +:107F30000E6806EB43039B5C002BBDD041F2F4427C +:107F40002946CDE90044122404FB0C660124324486 +:107F5000029419F0E5FAAFE73343032BACD8002ABB +:107F6000AAD0D0F800A00CEBCC0C06EBC60241F274 +:107F7000F349DAF80831EB461B6803EB420203EBE6 +:107F80004C0412F8091014F809200A44F10012F008 +:107F9000FF02F96090D0D11D7B60BA6001F4FC71E2 +:107FA000ADEB010D00210DF11008404624F0A8FCB6 +:107FB00014F80900D7E90132A0B14FF0000CA14438 +:107FC00041F2F44E614660180CF1010C10F80E00FD +:107FD00000F07F0008F801005FFA8CF199F80000CA +:107FE0008842F0D8FC68344441F2F34603EB440481 +:107FF000A35D9BB10021264441F2F44C0B4623447F +:1080000013F80CE0431801310EF07F0EDBB208F8D4 +:1080100003E0CBB296F800E09E45F0D801200024A2 +:1080200013462946029042465046CDE9004419F0D5 +:1080300077FADD4640E71221029401FB0C21002271 +:10804000CDE9002241F2F4420A44294619F068FAC7 +:1080500046E700BF2DE9F04F41F2D94543F6201421 +:1080600043F6981689B005440444064400F5805A46 +:108070004FF09608C04F00902B785A1EC72A0CD894 +:10808000DAF8002802EBC30292F83230103B012BE1 +:1080900003D86378990740F11C8118340335A64250 +:1080A000EAD1009B43F6D804002743F6E4021C44BF +:1080B0004FF0020813443E460793B30041F2B65214 +:1080C00008F10100049308F1FF330390781C029338 +:1080D000DAF86C380690B81C197801230590B34083 +:1080E0001FFA83FB852313FB012306EB860200990D +:1080F00013446FEA0B0201F5405C92B20B4401920B +:10810000002213F8010F411EC72908D8DAF8001819 +:1081100001EBC00191F83210103901290CD901325C +:10812000032AEED101360134033708F10408062E84 +:10813000C3D109B0BDE8F08F012194F83C00914013 +:10814000C9B2084384F83C0020780843FF28207017 +:1081500000F083807F2876D0010602D40A2800F040 +:10816000838000F07F010139C9B2092976D8834D97 +:1081700055F821E0BCF8BC18B14216D99CF8BF18DC +:108180000529DCF8C41800F2888001F807E04FEAFE +:108190001E29DCF8C4184FEA1E4E069D01F8059012 +:1081A000059DDCF8C41801F805E040F0800E00F0F1 +:1081B0000F0084F800E00EF0010EDCF85C18B1F856 +:1081C0004A9049FA06F505F0010575450AD0BEF159 +:1081D000000F7AD049EA0B094FF00105A1F84A9047 +:1081E00081F84C50B1F84EE0C0F340054EFA06F964 +:1081F00009F00109A9450AD0002D4BD1019D0EEAD5 +:10820000050E4FF00105A1F84EE081F85050B1F88D +:1082100052E0C0F380094EFA06F000F00100484534 +:108220000BD0B9F1000F1CD101980EEA000E4FF0EF +:108230000100A1F852E081F85400BCF81A1941F08D +:108240000101ACF81A1907984FF0960120F8361082 +:108250004949096840F8181061E70F204FF0000EF7 +:1082600088E74EEA0B0EE2E7BCF8BC18B14242D8F0 +:108270008A212170DCF85C18B1F84A9049FA06FEB0 +:108280001EF0010F21D1B1F84EE04EFA06F919F0B7 +:10829000010FBCD14EEA0B0EB3E7049D4FEA1E2935 +:1082A00001F805E04FEA1E4EDCF8C418029D01F803 +:1082B0000590DCF8C418039D01F808E04FF0000EAB +:1082C000DCF8C41801F805E06FE7019D09EA05092B +:1082D00082E7DA070AD4980630D54FF48071207807 +:1082E00020F074FD637843F0090363703B68A4F8E1 +:1082F00010806361D1E69CF81EE99CF81D194FEAD5 +:108300000E4E4EEA012E9CF81C194EEA010E9CF806 +:10831000BF180529DCF8C41815D801F807E04FEAA2 +:108320001E29DCF8C4184FEA1E4E069D01F8059080 +:10833000059DDCF8C41801F805E099E701212078D3 +:1083400020F07CFBCEE7049D4FEA1E2901F805E0F2 +:108350004FEA1E4EDCF8C418029D01F80590DCF8C7 +:10836000C418039D01F808E04FF0000EDCF8C418B3 +:1083700001F805E07CE700BF08BB00201C0F0020CF +:1083800082B02DE9F04F046991B090460846B4F8E8 +:108390003C211EB2BDF876101D1412F0080F1B937D +:1083A00008919DF88070BDF87030BDF872A09DF8FE +:1083B0007C1009D1DFF894C2DCF800C0C4F84CC1CD +:1083C0004FF47A7CA4F848C142F00802A4F83C219A +:1083D00094F8574198F80020A24208D1002F40F0AD +:1083E000C980384611B0BDE8F04F02B070474FEA7F +:1083F000920982EA040C5208BDF874B089EA940923 +:1084000082EA540249EA0C0C099204F001021CF0C1 +:10841000010F0B92C4F340020A92BDF87A20079232 +:1084200075D0002941D15A08BAEB530F4FEA930C8B +:108430000C924FEA5A0E00F2AE80AAF104039BB2EE +:10844000BAF13F0F01D9083B9BB25B08002F40F007 +:10845000C6800B99DBB2079A023B0B90002908BF3C +:108460009346B1B20EEB05020D91614412B2CDF804 +:1084700000B009B21BF0EEFE099B0B9849EA030914 +:1084800019F0010F3BD0079B0A990393089B0597AE +:10849000CDE901A3DDE90C321A4400932B460025F7 +:1084A00012B20495FCF780FE29E00236B3B20C93B9 +:1084B0004FEA5A031A1F91B2C2F34E023F290D919F +:1084C00094BF083B103B9BB25E08002F67D10B9B0B +:1084D00007990B90002B08BF8B460C99F3B21144FF +:1084E0002A44023BCDF800B009B212B21BF0B2FE32 +:1084F000099B0B9849EA030919F0010F19D10120D2 +:1085000088F8004011B0BDE8F04F02B07047002F6E +:1085100087D1099A42EA090919F0010FEFD0002921 +:108520007ED00236B3B24FEA5A060C93043EB3B281 +:108530000D9307EE90AAB6EE006B079BB8EEE75BD3 +:1085400007EE905A0393B8EEE77B089BBDF9302005 +:108550000293A5EE067B0D9B0A990597CDE90033A2 +:1085600000230493BDEEC77B17EE103A1BB2FCF755 +:108570001BFEC4E704F00102BDF874B00B92C4F313 +:1085800040020A92002291460992BDF87A20079291 +:1085900000298AD147E70C9B043B9BB250E70C9B18 +:1085A0005FFA86F9CDF800B099182A444B46099035 +:1085B00009B212B2CDE90E211BF04CFEA9F1020363 +:1085C00009981EB20B9BDDE90E21002B35D13346F5 +:1085D000079E099000961BF03DFE0998A9E7B1B2ED +:1085E0000EEB05025FFA83F9CDF800B00D916144FE +:1085F00012B24B4609B20990CDE90E121BF02AFEC9 +:10860000A9F1020309981EB20B9BDDE90E1263B9B2 +:108610003346079E099000961BF01CFE099832E72E +:108620005B080C93B3B20D932DE73346CDF800B041 +:1086300009901BF00FFE099825E73346CDF800B0EE +:1086400009901BF007FE099873E700BF08BB0020E4 +:1086500038B5431E0146042B1DD8DFE803F003188C +:108660001A04160020210D4C0125E023204684F831 +:10867000305184F8A53084F82F511AF0D9FF2946DB +:108680002046BDE838401BF0E1B80221EBE710219D +:10869000E9E70821E7E70121E5E700BF18B100207D +:1086A00084B02DE9F04F2DED028BB3B004463FAD01 +:1086B00009A885E80E002946A122BDF8FC609DF8B6 +:1086C0000F5120F05BFA9DF827707B0723D50DF141 +:1086D000660024F07BFC002800F0418100239DF817 +:1086E0002980C1B20DF1650E9C4608EB0C091EF8FD +:1086F000012F0CF1010C4A445FFA8CFC5340614598 +:10870000DBB2F2D881EA030CBDF8303000FB03CCB9 +:108710005FFA8CFC1FE00DF13D0024F057FC88B39C +:1087200000239DF829805FFA80FC0DF13C0E19466C +:1087300008EB01091EF8012F01314A44C9B2534028 +:108740008C45DBB2F4D88CEA030CBDF82E3000FB6C +:1087500003CC5FFA8CFC162D9DF82AE09DF82B9037 +:108760009DF82C009DF82D109DF838809DF83C3028 +:108770009DF8282008D033B0BDEC028BBDE8F04F47 +:1087800004B070478446E0E7CE447A407044014428 +:10879000F0B20B4403EB48039C445FFA8CFC8CEA78 +:1087A000020BFFF755FFF3000293C6EBC60304EB81 +:1087B000C30393F806325B45DDD000239DF8022108 +:1087C0000793ADF8203003929DF801319DF8032105 +:1087D000B02B04929DF80421059200F0DC80C02BA0 +:1087E00000F0E580902B00F0E08002230293F3007C +:1087F0009FED738A4FF0200A9D1B18EE101A8023FC +:10880000ED0004EB050805F50475D8F810222544A1 +:10881000CDF800A028468DED018AD2F8409018EEE0 +:10882000102AC8474FF00109D8F810321022CDF8AD +:10883000049018EE101A009228461B6C18EE102AAD +:108840001F468023B847D8F8103218EE102A18EEC9 +:10885000101A2846CDE900A9D3F84CA08023D047B0 +:1088600018EE101A28461CF08FF9494628461CF0CD +:1088700085F9039B534909A803F00F0285ED058A8A +:108880008DED098A4A448DED0A8A8DED0B8A8DEDB6 +:108890000C8A23F0B5FE09A824F098FBD8F8103212 +:1088A00000EB400102465B68284601FA09F1C1F17C +:1088B000800121FA09F129820421698209A99847D6 +:1088C0004FF001136B61029B032B4AD149462846A6 +:1088D0001CF054F9049B07AA3B4909A8142723F06C +:1088E0008FFE09A824F072FB09A900EB40030246A1 +:1088F0006F82284603FA09F3C3F1400323FA09F310 +:108900002B82D8F810325B689847059A2F4909A83E +:1089100023F076FE09A824F059FBD8F8103202465D +:108920006F825F6809A902EB4203284603FA09F344 +:10893000C3F1400323FA09F3803323EAE3732B8264 +:10894000B847012128461CF019F928460EF066FAAE +:10895000F3009B1B04EBC30484F806B20BE78446C8 +:10896000D2E6049B07AA184909A823F049FE09A8E2 +:1089700024F02CFBD8F81032024609A95F681423B2 +:108980006B8200EB400328465B00C3F180035B0869 +:108990002B82B847D5E70E4B1B68ADF81C301B0C7B +:1089A0008DF81E300323029321E70A4BF4E70A4BAC +:1089B0001B68ADF81C301B0C8DF81E3015E700BF8E +:1089C000000000005C150020641500206C150020DC +:1089D0005415002058150020501500202DE9F04FA7 +:1089E0008BB004468B46914604AF9A4697F84050A8 +:1089F00097F84460761B16F0FF0604D178E013F078 +:108A0000FF06CDB274D01BF80520691C731E202A06 +:108A1000F5D00A2E5846A8BF0A2624F0D7FA00F14E +:108A200008030246002123F00703ADEB030D0DF10F +:108A300010080DF111008DF810101AB1002123F06B +:108A40005FFF5EB12E4408F1FF33F6B2691C1BF8DC +:108A50000520CDB203F8012FAE42F7D1BAF1020FD3 +:108A6000637859D09AB24FF0000A1BB2FA60C7E996 +:108A7000013A4046EB4624F0A9FA00F108032546E6 +:108A8000421C23F00703414615F80C9B0026ADEB72 +:108A9000030D04AB184620F071F8FA6833462946F6 +:108AA0000292BA68039600920246CDF8049007F14C +:108AB0001000F5F71FFDDD467B683146524628461B +:108AC00000934B4601961BF09DF93A694FF0011354 +:108AD000404684F82760C4E9072324F077FA41462A +:108AE000024628461FF0A8FB1C37BD46BDE8F08FA4 +:108AF0005846002624F06AFA00F10803024623F0E3 +:108B00000703ADEB030D0DF110080DF111008DF809 +:108B10001060002A92D1A1E75A08B9F1010FFA605A +:108B200005D04FF0000A13B2C7E9013AA1E70FFAE6 +:108B300082FAFB68C7E901A39BE700BF2DE9F04F6C +:108B40002DED028B85B01E46837802AF8B42D7F89D +:108B5000389060D000F10C0A81700446904650466F +:108B60000EF0F0F8484624F031FA10F0FF0E4FD026 +:108B7000BEF1140F6378F34628BF4FF0140B202B7F +:108B80004FD009F1FF3C0BF1FF304FF0FF320025D1 +:108B900059FA80F0634601E083420CD013F8011FBC +:108BA0002029F9D1591E35B9A1EB0C0183424FF0B0 +:108BB00001054AB2F2D1002A4DDBBEF1070F4AD9B6 +:108BC000D5B2002249462046022300920195FFF7C4 +:108BD00005FF6A1C49460223D2B22046CDF804B0F4 +:108BE00000920122FFF7FAFE18F0020F28D17EB1A1 +:108BF0000125237862780021504600950EF018F880 +:108C00006278237800215046013A00950EF010F862 +:108C100050460EF003F90C37BD46BDEC028BBDE8A3 +:108C2000F08FBEF10A0F3ED80022494601232046AC +:108C3000CDF804B00092FFF7D1FE18F0020FD6D0A5 +:108C4000012123780022504601916178009111465C +:108C50001BF022F9CBE7BEF10A0F01D8002AE3DBB3 +:108C6000ABF10803022B01D8531CA9D1ABF10B03C4 +:108C7000012BD9D9BEF10C0FD6D9002AA0DC4FEABE +:108C80005B05002249462046009202230195FFF72A +:108C9000A5FE4946022301222046CDF804B00095E6 +:108CA000FFF79CFEC9E76A4683B208EE102A002B44 +:108CB000BAD01D4608330021DB08A2EBC3039D4652 +:108CC00002AB0DF109008DF80810BDB12A467B609A +:108CD00023F016FE00217B6808460A4619F80210A8 +:108CE00002F1010C00F1010E20295FFA8CF203D091 +:108CF00021B119545FFA8EF09542EFDC19464846CF +:108D000024F072F818EE103A9D468DE784B02DE9F4 +:108D1000F04FADF5197DA3AC2F9084E80E009DF8BF +:108D20008F52EE0604D59DF8A332002B40F0EB8065 +:108D30006807C5F3800736D500210DF5DE792422BA +:108D400033A8329132AE8DF8A01223F0D9FDA122C2 +:108D500021464846C5F3C0081FF010FF0DF5FF700F +:108D600024F034F92E97002800F08B8100229DF822 +:108D7000C1B1C3B20DF2FD1E94460BEB0C0A1EF8F6 +:108D8000011F0CF1010C51445FFA8CFC4A40634511 +:108D9000D2B2F2D883EA020CBDF8C83100FB03CC92 +:108DA0005FFA8CFC32E00DF5DE792422394633A8D7 +:108DB000329732AE23F0A4FDA122214648461FF08F +:108DC000DDFE0DF2D51024F001F9C5F3C0082E9791 +:108DD000002800F03B8100239DF8C1B15FFA80FCC0 +:108DE0000DF5EA7E19460BEB010A1EF8012F013141 +:108DF0005244C9B253408C45DBB2F4D88CEA030C20 +:108E0000BDF8C63100FB03CC5FFA8CFC9DF8C32192 +:108E100021469DF8C231484613449DF8C4211344AD +:108E20009DF8C52113449DF8D42113449DF8D02109 +:108E300003EB4203A1220CEB03049DF8C031E4B222 +:108E40006B405C408DF88E421FF098FE2E9BBBB9A4 +:108E5000B8F1000F14D00DF2D511304623F0C4FF45 +:108E600031460DF2A52023F0BFFF9DF89F32162B4F +:108E700000F0EE800DF5197DBDE8F04F04B07047AD +:108E8000002124223DA83C9123F03AFD9DF8D131E8 +:108E90008BB39DF8CE3127B3BDF8C8210DF5FF7116 +:108EA0003CA813449FB223F09FFFB8F1000F0FD0EE +:108EB0009DF858829DF8D431C8F125091BB1B9F14C +:108EC000000F00F3A1803CA9304623F08DFFC7E7D7 +:108ED0009DF848323A468BB192A9304623F090FB78 +:108EE000BEE7BDF8C6210DF2D5113CA813449FB2D0 +:108EF00023F07AFFD9E78DF8CE31CCE768493046C8 +:108F000023F07EFBACE7BDF898522146A12246A88B +:108F1000ADF896521FF032FEBDF89C3200272A466B +:108F2000604900933CA8BDF89A32BDF88C529DF878 +:108F300091429DF89F62CDE93C77CDE93E77CDE93E +:108F40004077CDE9427723F05BFB3CA824F03EF864 +:108F5000002800F098803B46C7B23CA8194604EBB5 +:108F6000010C10F8012B01316244C9B253408F4209 +:108F7000DBB2F4D85F40162E7FF47CAFE8B2FFF787 +:108F800067FBA12246A96FA8C5EBC5058DF82B612B +:108F90008DF81A711FF0F2FD2F9A02EBC506ED0055 +:108FA00096F80632BB423FF465AFB6F80C3205F5D1 +:108FB000047586F806720121ADF8C6302A44B6F869 +:108FC0000A32684615469D22ADF8C83000232C931E +:108FD00028932023CDE92A31802370A929931FF0FB +:108FE000CDFD6F9B32AA0DF1C6012846FCF796F91C +:108FF00028460DF013FFBDF8C620BDF8C830A6F80E +:109000000C22A6F80A3235E70DF58C7A4FF0000BEA +:10901000242247A85946CAF800B023F071FC3CA9A5 +:10902000504623F0E1FEB8F1040F53463A460AF8E1 +:1090300009B02AD0B8F1030F2CD0B8F1020F304696 +:109040000CBF1949194923F0DBFA09E78446D7E632 +:10905000BDF88C72F8B2FFF7FBFA2F9BC7EBC7077E +:109060002A462146009603EBC7009DF8A03200F582 +:109070000170FFF763FD0DF5197DBDE8F04F04B0F9 +:109080007047844688E6074675E70949304623F06D +:10909000B7FAE5E60749304623F0B2FAE0E600BF4A +:1090A000302000207415002098150020A415002001 +:1090B000801500208C15002084B0F0B5ADB00446BA +:1090C00033AD03A885E80E002946A1221FF056FD06 +:1090D0009DF80F506B0720D50DF14E0023F076FF61 +:1090E000002878D000229DF811705FFA80FE0DF103 +:1090F0004D06134607EB030C16F8011F01336144BC +:10910000DBB24A409E45D2B2F4D88EEA020EBDF8D8 +:10911000183000FB03E0C0B21DE00DF1250023F084 +:1091200055FF002839D000229DF81170C6B20DF10C +:10913000240C134607EB030E1CF8011F0133714486 +:10914000DBB24A409E42D2B2F4D85640BDF8163047 +:1091500000FB0360C0B29DF813209DF81230134449 +:109160009DF8142013449DF8152013449DF82420E5 +:1091700013449DF8202003EB42039DF8102018446F +:1091800055409DF8DF306840162B8DF8CE0006D094 +:109190002DB0BDE8F04004B070470646D6E79DF814 +:1091A000CC00FFF755FABDF8CC200DF1E5009DF895 +:1091B000E030C2EBC2019DF8CF20009004EBC1006B +:1091C0009DF8CE1000F50170FFF7B8FC2DB0BDE89A +:1091D000F04004B07047864699E700BF84B02DE99F +:1091E000F04FDBB0894E054665AC306884E80E0070 +:1091F000B388A122CDF8AD01214631A8ADF8B13137 +:109200001FF0BCFC9DF8C770780721D50DF5837061 +:1092100023F0DCFE002800F08C8000219DF8C9803E +:10922000C3B20DF2051E0A4608EB02091EF801CF73 +:109230000132CC44D2B281EA0C019342C9B2F3D8D4 +:1092400083EA0102BDF8D03000FB0322D2B21EE057 +:109250000DF1DD0023F0BAFE00283ED000219DF87C +:10926000C980C2B20DF1DC0E0B4608EB03091EF8F3 +:1092700001CF0133CC44DBB281EA0C019A42C9B27E +:10928000F3D84A40BDF8CE3000FB0322D2B29DF89D +:10929000CB309DF8CA109DF8A78119449DF8CC30B9 +:1092A000B8F1160F19449DF8CD3019449DF8DC3003 +:1092B00019449DF8D83001EB43019DF8C8300A44A9 +:1092C00087EA0307D2B287EA02078DF8967106D0C3 +:1092D0005BB0BDE8F04F04B070470246D2E7BDF87E +:1092E00094915FFA89F0FFF7B3F92146C9EBC904FD +:1092F000A12208A84FEAC90A1FF040FC95F9843161 +:10930000E400002B04F5017BAB4414DB95F88521C8 +:10931000162A1ED199451CD1D5F8800195F88621D1 +:1093200090F8833203F0010393422DD18BB10023D7 +:1093300048E0024686E7002385F8858185F8849118 +:1093400085F88631D5F8803193F8833213F0010324 +:109350001AD108A931A8A1220DF1DD041FF00EFCDD +:109360003068B2883946CDF8DD005846ADF8E120C6 +:109370009DF8D8309DF8C7200094FFF7DFFB5BB065 +:10938000BDE8F04F04B07047002285F886312023F5 +:109390000BF10C00C5F8A8211146A5F8A42185F809 +:1093A000A62185F8AC21C5F8B42185F8AF2100933A +:1093B000802301921AF026FD95F88631002BC8D043 +:1093C000D5F88001012204F50474202107932C4470 +:1093D0000023039206930093CDE904228022CDE975 +:1093E000012105F5D2722146FCF7E0F800283FF490 +:1093F0006FAFAAEB090A064B20461B6805EBCA05AE +:1094000085F806320DF00AFD62E700BFB0150020B6 +:1094100008BB002084B02DE9F04FE1B005466BAFEA +:1094200037A89DF8BFA187E80E00A1223946BDF8F4 +:10943000AC611FF0A3FB9DF8DF40630723D50DF55A +:109440008F7023F0C3FD002800F0B88000239DF842 +:10945000E180C1B20DF21D1E9C4608EB0C091EF8FE +:10946000012F0CF1010C4A445FFA8CFC534061451A +:10947000DBB2F2D881EA030CBDF8E83000FB03CC84 +:109480005FFA8CFC1FE00DF1F50023F09FFD80B327 +:1094900000239DF8E1805FFA80FC0DF1F40E19467F +:1094A00008EB01091EF8012F01314A44C9B25340AB +:1094B0008C45DBB2F4D88CEA030CBDF8E63000FB37 +:1094C00003CC5FFA8CFCBAF1160F9DF8E2809DF890 +:1094D000E3909DF8E4009DF8E5109DF8F0E09DF81C +:1094E000F4309DF8E02006D061B0BDE8F04F04B044 +:1094F00070478446E1E7C84462404FEAC6094044E9 +:109500000144F0B20B4403EB4E039C445FFA8CF42D +:109510005440FFF79DF83946C6EBC607A1220EA8B6 +:10952000FF008DF8AE411FF029FB95F9873107F553 +:109530000178002BA84443DB95F88821162A40F0D7 +:109540008A809E4240F08780D5F880310DF1240A50 +:10955000DFF860B193F853C1D64695F889310CF025 +:10956000010C0793BBE80F00AEE80F00DBF80030FA +:10957000AEF80030079B9C453DD1BCF1000F76D082 +:109580000023049307F504770AAB6C462F440FCBF6 +:1095900007C405F2B91223803946DAF8003005F520 +:1095A000B870FEF7EDFE00287DD1A9EB06099DF805 +:1095B0003A3005EBC90585F8063295E784465BE746 +:1095C000FF23A5F888A1DFF8ECB00DF1240A85F897 +:1095D000B931D5F88031D64685F8876193F853C103 +:1095E000BBE80F001CF0010CAEE80F00DBF8003008 +:1095F000AEF800303BD00022FF2385F889C108F186 +:109600000C000192114685F8B93120230093802384 +:109610001AF0F8FB95F88931002BB2D1244C0EA931 +:10962000A12237A81FF0AAFA0DF1F50307CC248870 +:109630000093CDF8F5004046CDF8F910CDF8FD20A7 +:109640009DF8F0309DF8DE109DF8DF20ADF8014167 +:10965000FFF774FA48E70DF151059DF84C309DF87D +:109660003B20214640460095FFF768FA3CE7104D45 +:109670000EA9A12237A81FF081FA0DF1F50307CD3D +:109680002D880093CDF8F5004046CDF8F91021461D +:10969000CDF8FD209DF8F0309DF8DF20ADF80151A8 +:1096A000FFF74CFA20E738460DF0B8FB7DE700BF26 +:1096B000B81500203808002084B02DE9F047DAB052 +:1096C000054663AC31A89DF89F6184E80E00A12295 +:1096D0002146BDF88C711FF051FA9DF8C78018F033 +:1096E000040F23D00DF5837023F070FC002800F0E8 +:1096F000A5804FF0000C9DF8C990C3B20DF2051E75 +:10970000614609EB010A1EF8012F01315244C9B22A +:109710008CEA02028B425FFA82FCF2D883EA0C01E7 +:10972000BDF8D03000FB0311C9B220E00DF1DD001F +:1097300023F04CFC80B34FF0000C9DF8C990C1B2EF +:109740000DF1DC0E634609EB030A1EF8012F01330D +:109750005244DBB28CEA020299425FFA82FCF2D8F0 +:1097600081EA0C01BDF8CE3000FB0311C9B2162E00 +:109770009DF8CAC09DF8CBA09DF8CC009DF8CD20E7 +:109780009DF8D8909DF8DC309DF8C8E006D05AB01E +:10979000BDE8F04704B070470146E3E7D44488EAE7 +:1097A0000E0E60440244F8B2134403EB49034FEA3F +:1097B000C70919445FFA81F888EA0E08FEF748FFE6 +:1097C0002146C7EBC704A12208A8E4008DF89F61D9 +:1097D0008DF88E811FF0D2F92B1904F5017693F8DC +:1097E00006222E444245D2D083F8068204F5047442 +:1097F0009DF8923128199DF8A0410B3B0C2BC6D83F +:1098000001A252F823F000BFE7B40000B5B4000095 +:10981000B5B400000DB60000DFB50000ABB5000028 +:1098200003B4000003B4000003B4000003B400005C +:1098300071B500003DB500000DB5000001466FE7B1 +:1098400007900DF07FFA01210E2310220798009156 +:1098500040211AF0FFFC0C231022402107980094AD +:109860001AF0F8FC07985AB0BDE8F04704B00DF0C4 +:10987000D5BA079020250DF065FA00230122214674 +:109880008024079801950094CDE90432CDE90223A4 +:109890001A46FBF789FCE5E7042507900DF052FA1C +:1098A0001C2301220798322102920222CDE90035C1 +:1098B0001AF018FD18232A46342107980093CDE9A1 +:1098C00001541AF00FFDCDE7162308A9414D31A828 +:1098D000A1228DF826301FF051F90DF1DD03286823 +:1098E000414600932346AC88CDF8DD0030469DF814 +:1098F000C720ADF8E140FFF721F948E7A9EB0709D8 +:1099000007900DF01FFA012305EBC90507983221D6 +:10991000D5F8102201931C230093166C0222B04745 +:10992000D5F81022182334210798CDE90034146C9F +:109930000422A04796E71023274D08A931A8A122A9 +:109940008DF826301FF01AF90DF1DD022868234644 +:109950002C7941460092CDF8DD0030469DF8C720B5 +:109960008DF8E140FFF7EAF811E70F2308A931A8C5 +:10997000A1228DF826301FF001F918490DF1DD0202 +:109980002346086841460092CDF8DD0030469DF838 +:10999000C720FFF7D3F8FAE6102507900DF0D2F9AB +:1099A000012234230798CDE90252019304224C236B +:1099B00000921C2219461AF00BFD4A233822039408 +:1099C0000824194607980094CDE9012518221AF0B9 +:1099D000FFFC47E7D4150020CC150020C815002057 +:1099E00084B02DE9F047B6B004463FAD85E80E00DF +:1099F000436A93F85331DA0776D5B24B03CB1B8811 +:109A0000CDF81501CDF81911ADF81D31A122294667 +:109A10000DA81FF0B3F89DF83760730721D50DF13D +:109A2000760023F0D3FA002800F09A8000229DF8F7 +:109A300039805FFA80FE0DF17507134608EB030CC1 +:109A400017F8011F01336144DBB24A409E45D2B290 +:109A5000F4D88EEA020EBDF8403000FB03E0C0B23D +:109A60001DE00DF14D0023F0B1FA002848D000228E +:109A70009DF83980C7B20DF14C0C134608EB030E6C +:109A80001CF8011F01337144DBB24A409F42D2B23D +:109A9000F4D85740BDF83E3000FB0370C0B29DF8CB +:109AA0003B209DF83A309DF80F7113449DF83C20FF +:109AB000162F13449DF83D2013449DF84C20134469 +:109AC0009DF8482003EB420318449DF83830C0B29B +:109AD00086EA030686EA00068DF8FE6012D036B0EC +:109AE000BDE8F04704B07047774B07CB1B88CDF833 +:109AF0001501CDF81911CDF81D21ADF8213185E7FB +:109B00000746C7E7BDF8FC805FFA88F0FEF7A0FDC6 +:109B10002946C8EBC8050DA8A1224FEAC80A1FF0C4 +:109B20002DF894F98A31ED00002B05F50179A14457 +:109B300018DB94F88B21162A02D1984500F0928008 +:109B40000DF14D049DF848309DF8372031464846C8 +:109B50000094FEF7F3FF36B0BDE8F04704B070475D +:109B6000864678E7002284F88B71012784F88A8181 +:109B700084F88C21D4F8801191F8533103F001035B +:109B8000934277D084F88C31002BD9D091F883E2BE +:109B900094F88F310EF0010E734501D084F88FE1F7 +:109BA00009F10C0000211AF05FF8012794F88FE109 +:109BB000DFF818C108AE05F50475BCE80F000FC644 +:109BC000DCF8003025443380BEF1000F60D109ABD2 +:109BD00004976E460FCB07C6338004F5DD72089BF1 +:109BE000294604F5B870FEF7CBFBD4F8803194F821 +:109BF000B861B3F83C91C9F38009B9EBD61F00D125 +:109C0000A7B316F00F065AD0711E490189B2B9F1F7 +:109C1000000F1FD0AAEB08074FF0000C09B2202359 +:109C200004EBC7071F22D7F81002CDF800C0D0F808 +:109C30003C802846C047D7F8103271010136012216 +:109C40002846F6B200921F22DF6B2023B847042E6D +:109C500028BF002646EAC91684F8B86128460DF0E8 +:109C6000DDF83CE794F88C21002783E700283FF4D7 +:109C700036AFF3E7002A3FF463AF91F883E294F83C +:109C80008F310EF0010E734588D1002F90D087E7F9 +:109C900001220023202103920093CDE90422802297 +:109CA000CDE90637CDE9012104F5C8722946D4F87B +:109CB0008001FBF77BFC00283FF411AFCEE7602169 +:109CC000A5E700BFBC150020B8150020380800200B +:109CD0002DE9F04F2DED048BADF53F7D9B460E46F3 +:109CE00000F5805A2EAF0546914697F87C3207F171 +:109CF0005404B7F87882A122FB62204697F880329C +:109D0000B3497B621EF03AFFB8F1000F08BF082E7E +:109D10009AF80828A4F800B00CBF01230023A2740D +:109D2000BB624DD1DAF8FC3784F813901B681B0531 +:109D300051D5B9F1160F11D1DAF86C280BEB4B03A2 +:109D400041F2D351127802EB421002EB800213442D +:109D50002B4413F80180B8F1000F3ED0002342F6E7 +:109D6000BC405A4649469846284487F8AC3143F6E9 +:109D70005836C7E96733C7E9693307F5CE732E4410 +:109D8000FCF77AF8FF2307F5CE7107F16D006371D8 +:109D900023F02AF840F6FF0307F160019522684698 +:109DA00063801EF0EBFE304694E80E00FEF7AEFF37 +:109DB000404607F51177BD46BDEC048BBDE8F08F3A +:109DC00008F1FF33C72B06D805EBC80090F83230F6 +:109DD00078613B624BB94FF00008404607F51177B8 +:109DE000BD46BDEC048BBDE8F08F416B032E637163 +:109DF000C1F3072390F83180B0F834C0C8B2BB611A +:109E0000C1F30743C8F3400EF8613B61C8F380001B +:109E100023724FEA1163A4F806C008F0010C7B60BE +:109E200063724FEA112384F89EE04FEA116EBB6023 +:109E3000BB69D7F81C80FB604FEA114384F89DC0D2 +:109E400084F89F003B605DD1BCF1000FFB6A08BF46 +:109E5000012003F07F0C84F89F00012084F8A0C04B +:109E600084F89D00D80984F89E00BCF1000F4DD005 +:109E70003B6A013B432B73D8DFE813F0D60680061C +:109E80002507AF05310506054A06D804EB03B403E0 +:109E9000C70390038B05620552076103A3078B0775 +:109EA000FD07660772002108EF078C047E04F102AB +:109EB000B30281025602C507DC0513067200720068 +:109EC000300247041A041702FD017200A7042A0396 +:109ED000C2014B017200E300AE007200720072001A +:109EE00072007200720072007200720072007200E2 +:109EF00072007200720072007200720072001F0124 +:109F00009B007500FB6A002B44F09C8201204FF0FF +:109F1000000C84F8A000082EAAD1B9F1160F84F81D +:109F20001390A5D1DAF86C08007800EB401300EB31 +:109F300083000BEB4B03184441F2D4532844C05C1C +:109F4000E07095E7FB690F2B44F0DA81D4F88C2C94 +:109F50009369002B45F063845369002B44F0D4814E +:109F60004FF0000839E7082E7FF435AFE378194A3F +:109F700023F00403106843F008031279C7F8BF0008 +:109F8000E3704FF6807387F8C320194203F00C8604 +:109F900043F6583607F16001952268462E441EF0BC +:109FA000EDFD4FF00008304694E80E00FEF7AEFEDF +:109FB00013E7DAF89448002C3FF40DAF013E032E6E +:109FC000CED8DFE816F0700866085A08500800BFBF +:109FD0004C080020CC200020082E7FF4FCAEE37853 +:109FE000C84E23F004033A89306843F00803F96946 +:109FF000C7F8BF0042F6BC40E3703379284443F60B +:10A00000583687F8C3300023C7E96733C7E9693397 +:10A0100087F8AC31984607F5CE73FBF72DFF07F5AF +:10A02000CE7107F16D0022F0DFFE07F1600195228D +:10A0300068461EF0A3FD701994E80E00FEF766FE58 +:10A04000CBE606F0FD03012B41F0D28494F89D305D +:10A05000002B02F07A813B69002B03F0B283BA69CE +:10A0600094F89E009A42BFF4B6AE05F5405999F8AF +:10A07000A837022B03F2A485A34AD35C591EBA6900 +:10A080003C69C9B299F8AB378A4228BF0A468C426C +:10A0900028BF0C462146002803F05B860133A3420B +:10A0A00002DC9342A8BFDAB2114643F2A4704FF02B +:10A0B00000082844FDF7EEFB8FE6FB69002B7FF4D8 +:10A0C0008AAE022E02F05983052E02F07586082E04 +:10A0D0007FF481AEE1788D4B21F0040141F008015D +:10A0E000E17005F5405191F8006B03CB1B78C7F880 +:10A0F000BF00F00787F8C730C6F34003C7F8C310A6 +:10A1000007F16D004CBF82498249237522F078FA2D +:10A110003EE7012E01F0B286022E02F00882052EE3 +:10A1200002F05986082E7FF456AE7B4B43F274380A +:10A13000D7F8189000261868A8449B884946C7F8A5 +:10A14000BF004046A7F8C330FDF79EF9E37843F21D +:10A15000CC414A46207523F00403294443F0080308 +:10A16000E37002E001365B2E39D011F836309A42A6 +:10A17000F8D1002305F5405907F13002DFF8A4E1DA +:10A1800007F5CE7C07F1F80AC7E93E3309EB060371 +:10A1900093F859B4CBF3420B0BF5047303EB020BAA +:10A1A000BEE80F00ACE80F009EE80F008CE80F003F +:10A1B0005A4950461BF8A42C22F022FA06F12B0330 +:10A1C000574907F16D0009EBC30908EBC30299F881 +:10A1D0007A330132CDF800A0013322F011FA43F6B0 +:10A1E000583607F16001952268462E441EF0C6FCE1 +:10A1F0004FF00008304694E80E00FEF75DFFECE5F6 +:10A2000005F5405999F8932312F0010201F03286C6 +:10A21000B9F89433013B9BB223820B0CC1F30901C3 +:10A22000C3F30A03002B00F04887013B8B4242F343 +:10A230007880E181238294F89D00002842F01A8002 +:10A24000002A03F08782B9F8AC03814203F07F82D1 +:10A250000B4606F0FD00012800F03A87082E02F0B8 +:10A26000AB860AB1B9F8AC23A1EB0208B8FA88F8BA +:10A270004FEA5818B1E506F0FD03012B41F0C0820A +:10A2800094F89D30002B01F0EB8794F8A0104FF06C +:10A29000000843F2B07094F89E20B1EB0801284406 +:10A2A00018BF0121FDF7D4FD97E5012E01F03B8792 +:10A2B000023E062E3FF654AE01A353F826F000BF2F +:10A2C00029D000003DCF0000EDCE0000D5BB00003E +:10A2D000D5BB0000D5BB000089CF0000012E7FF464 +:10A2E0007AAD7B6943F2D0703C694FF0000893F877 +:10A2F00033202844D7E90631009401F00301FDF72B +:10A30000CBFD6AE5CC200020AC0F0020B02000205F +:10A31000BC200020C4200020C42200204839002096 +:10A32000CC2200204C39002007232382BB6993B143 +:10A33000013BFA69934242F379802382E28194F8E7 +:10A340009D3043B905F54053FA69D3F818321B78AC +:10A35000934203F0EA80F9699AF86839DB063FF521 +:10A360003AAD013E072E00F20586DFE816F0CA0579 +:10A370000306CA0503067407030603063607072308 +:10A380002382BB6993B1013BFA69934242F3858012 +:10A390002382E28194F89D3043B905F54053FA6970 +:10A3A000D3F81C321B78934203F01B82FA693B6995 +:10A3B000012B03D10023E3813F2323829AF86839DC +:10A3C000D9063FF508AD013E072E00F23D86DFE8D5 +:10A3D00016F0E9053B06E9053B06E7063B063B06AA +:10A3E0008C06DAF86CC84FF0040EBA699CF80000CD +:10A3F000BB8B1FFA82F8A4F810E0002A01F0EB8171 +:10A4000008F1FF32E38192B29342228242F2158038 +:10A41000E281238294F89D20002A41F0DC81E289C8 +:10A42000904200D1228A94F81680B8F1000F01F012 +:10A430003E8394F89E20002A02F03680228A002073 +:10A4400084F89D0006F0FD00012841F007820023FA +:10A45000D1B228461A46984609F09EF8BDE4FB6939 +:10A46000032B3FF6B8AC06F0FD03012B02F0108180 +:10A47000082E7FF4B0ACF96907F5CE70FBF788FAC7 +:10A48000A179284643F65836F9620BF0F5FEF96AD1 +:10A49000024607F16D002E44FBF70AFB07F5CE716B +:10A4A00007F1BF004FF0000822F09EFCE37807F1AF +:10A4B0006001952223F00403684643F00803E3702B +:10A4C0001EF05CFB304694E80E00FEF71FFC84E4AF +:10A4D000FB6903F0070807232382BB6913F0070217 +:10A4E00001F07882531E434541F32887A4F80E807B +:10A4F000238294F89D20002A41F0548705F54059A5 +:10A5000099F8932312F0010218BF99F8AE239045F1 +:10A5100003F09780424606F0FD03012B41F0B5821F +:10A5200099F89333DB077FF556AC002343F2743080 +:10A530000C21284400939846F5F710F94DE4012EBC +:10A5400001F01F86052E02F0F080082E42F00381F4 +:10A55000E37805F54052C54907F16D00D2F8A8210E +:10A5600023F0040343F658364FF00008128843F0F6 +:10A5700008032E446281E37022F042F8BC4B07F1DD +:10A58000600195221868C7F8BF0068461EF0F6FA09 +:10A59000304694E80E00FEF7B9FB1EE4012E02F0EF +:10A5A0005582082E7FF417ACE37843F65838B14E45 +:10A5B000952223F0040303CE43F00803C7F86D008F +:10A5C0006846C7F8711007F16001E3701EF0D6FA13 +:10A5D00008EB05004FF0000894E80E00FEF796FB2C +:10A5E000FFF7FBBB012E01F0E785052E02F043804B +:10A5F000082E03F05E80FB699AF8CC8A002B42F0AB +:10A60000CF82C8F34008FFF7E8BB012E02F040827A +:10A61000082E7FF4E0ABE37843F65838964E952247 +:10A6200023F0040303CE43F00803C7F86D00684627 +:10A63000C7F8711007F16001E3701EF09FFA08EB94 +:10A6400005004FF0000894E80E00FEF75FFBFFF7EF +:10A65000C4BB06F0FD03012B01F08584052E02F03A +:10A660005480082E7FF4B7AB844A43F65838E37819 +:10A67000834EA84423F0040303CA43F00803952241 +:10A68000C7F86D00C7F87110E37003CEC7F8BF00BC +:10A690006846C7F8C31007F160011EF06FFA404624 +:10A6A0004FF0000894E80E00FEF730FBFFF795BB73 +:10A6B000082E7FF490ABFB69022B02F0B385032BCD +:10A6C0007FF44EACE37843F21A316E4A43F65836C3 +:10A6D00023F00403294410682E4443F008034FF08C +:10A6E0000008C7F8BF0007F16D00E37022F07CFBA3 +:10A6F00007F16001952268461EF040FA304694E862 +:10A700000E00FEF703FBFFF768BB012E02F06A8024 +:10A71000022E01F07485032E02F0F184052E7FF4E1 +:10A720005AABFA69A2F156030B2B43F22680111F94 +:10A730004B424B41002B43F02080FA69493A0C2AE6 +:10A7400003F27A83BA69082A0AD805F5405904BF8A +:10A7500099F82133FB60FB6809EBC30393F83233AC +:10A760004FF0640806210C2218FB0318B8FBF2F81E +:10A770005FFA88F8FFF731BBFB69002B7FF42BAB46 +:10A78000012E01F0BB86082E02F018879AF86C891A +:10A79000FFF723BB012E02F03081052E01F01C854E +:10A7A000082E02F0EF8505F5405393F8440820B1D8 +:10A7B00043F644002844FAF7ABFCA0F10108B8FACC +:10A7C00088F84FEA5818FFF708BBFB69102B00F216 +:10A7D000E9870A2B00F2EB87022E01F04282032E5A +:10A7E00001F0FF86012E02F09B82082E7FF4F3AA6F +:10A7F000FA69172A3FF6B4ABDFE812F00C22F02119 +:10A80000F021F021BD219E2658262926F925CA25AA +:10A8100098256E25472541231823EE22CB22962228 +:10A820007A22432220220F25E524FC237F233A6944 +:10A830002382002A01F00481B86994F89D30E081F8 +:10A840002282002B41F0958505F5405906F0FD0365 +:10A8500099F83418814218BF0246012B41F05D80FF +:10A860004FF0000889F83428FFF7B7BA58260020BF +:10A8700000190020201F0020341F00200C1F002082 +:10A88000041F0020D4200020012E02F02381052E79 +:10A8900001F0BF84082E7FF49EAAE17843F6583673 +:10A8A000B04B4FF0000821F00401952284F8158088 +:10A8B00041F00801E17003CB1B88C7F86D006846C2 +:10A8C000C7F8711007F16001A7F875301EF056F94E +:10A8D000701994E80E00FEF719FAFFF77EBA042EFD +:10A8E00001F04F83082E7FF476AA9F4A0026E37872 +:10A8F00010689288C3F300186675A7F8C320DA06BB +:10A90000C7F8BF0003F1088023F0040343F658366C +:10A9100007F16001952243F008036846E370D7F819 +:10A92000BF30C7F86D30B7F8C330A7F871301EF0EC +:10A9300025F9701994E80E00FEF7E8F9FFF74DBA13 +:10A9400006F0FD08B8F1010F01F04081082E7FF4F8 +:10A9500042AAE27843F65836844B4FF0000822F0C2 +:10A9600004022E4442F00802E27007CBC7F86D00E3 +:10A970006846C7F8711007F16001C7F87520952285 +:10A980001EF0FCF8304694E80E00FEF7BFF9FFF722 +:10A9900024BA012E01F0D287082E7FF41CAAE37896 +:10A9A00043F65838724E952223F0040303CE43F049 +:10A9B0000803C7F86D006846C7F8711007F1600119 +:10A9C000E3701EF0DBF808EB05004FF0000894E898 +:10A9D0000E00FEF79BF9FFF700BA4FF00008012EBA +:10A9E00084F8158001F08D87042E02F02481052E55 +:10A9F00001F07D86082E7FF4EEA9FB6907F16D005A +:10AA0000396943F6583603F00F02BB6900910132F1 +:10AA1000584921F0F5FD802307F160019522684631 +:10AA200063711EF0ABF8701994E80E00FDF738FE64 +:10AA3000FFF7D3B90F232382BB69002B00F09E8759 +:10AA4000013BFA69934241F372842382E28194F8D4 +:10AA50009D30002B41F02B8505F54053FA69D3F862 +:10AA60002C321B789A4202F01F86F969012E00F001 +:10AA70008E87032E02F0F181052E02F0CB80082E86 +:10AA800002F04D8205F54055D5F82C3293F8008040 +:10AA9000FB69A8EB0309D9F1000848EB0908FFF7A7 +:10AAA0009CB907232382BB69002B00F09786013BEA +:10AAB000FA69934241F3C9842382E28194F89D307C +:10AAC000002B41F0D18405F54053FA69D3F83032B8 +:10AAD0001B78934202F08086F969012E00F0878688 +:10AAE000032E02F00781052E02F04980082E02F0A5 +:10AAF000FC8305F54055D5F8303293F80080FB69AA +:10AB0000A8EB030CDCF1000848EB0C08FFF765B973 +:10AB1000012E01F05587052E01F09483082E7FF455 +:10AB20005AA9E37843F6583613494FF0000823F04A +:10AB300004039522086843F0080384F81580C7F8D9 +:10AB40006D006846E3700B7907F1600187F871309A +:10AB50001EF014F8701994E80E00FEF7D7F8FFF70E +:10AB60003CB900BFF01E0020E81E0020301F00206E +:10AB7000281F0020D81E0020FC1E0020FB69002199 +:10AB800003F00F02BB69617503F07F0002EB8213D3 +:10AB900001320AEB43030344388A93F8CF9A7F23A8 +:10ABA0002382BEF1000F10D00EF1FF33E0819BB283 +:10ABB0009842238241F2D683E381208294F89D302B +:10ABC0001BB9E089814508BF208A94F81680B8F146 +:10ABD000000F00F0C88794F89E30002B01F08084AD +:10ABE000208A002384F89D3006F0FD03012B40F0FD +:10ABF00036877B69C6B2002093F833108046BB6964 +:10AC0000019001200096029005F5CE5016F00EFE40 +:10AC1000A279E379B02102F00F02284600960132B2 +:10AC20000BF0C2FBFFF7D9B8FB69396903F00F02DB +:10AC30007F231FFA81FC238202EB821301320AEB8D +:10AC4000430393F8CD0A3B8B81B10CF1FF31E381D3 +:10AC500089B28B42218241F24684E181238294F8B9 +:10AC60009D1019B9E389984208BF238A94F8168089 +:10AC7000B8F1000F00F04B8794F89E30002B01F0E4 +:10AC80003A84238A002184F89D1006F0FD010129F1 +:10AC900040F029877969DBB2002091F833108046B3 +:10ACA000009005F5CE50FB6216F04AFCA279FF2415 +:10ACB000FB6A02F00F02C0212846009401320BF01B +:10ACC00073FBFFF78AB84FF00008012E84F8158057 +:10ACD00001F09F86042E01F02587052E01F03F85A7 +:10ACE000082E7FF478A8FB6907F16D00396943F6F7 +:10ACF000583603F00F02BB6900910132A54921F0DB +:10AD00007FFC902307F160019522684663711DF076 +:10AD100035FF701994E80E00FDF7C2FCFFF75DB82F +:10AD2000012E01F03186052E01F08182082E02F0FD +:10AD3000F98105F54055D5F8FC31B3F1000818BF8D +:10AD40004FF00108FFF749B8012E01F0CB85082E1E +:10AD50007FF441A8E27843F658368F4B4FF0000855 +:10AD600022F0040242F00802E27007CBC7F86D003F +:10AD70006846C7F8711007F16001C7F87520952281 +:10AD80001DF0FCFE701994E80E00FDF7BFFFFFF701 +:10AD900024B8022E01F02581082E7FF41CA8FA6940 +:10ADA0000B2A3FF6DDA8DFE812F0BA04BA048904E2 +:10ADB00040041504E203AF037E034E032203220383 +:10ADC0002203012E01F01A85082E40F0FB86E3785D +:10ADD00043F65836714A07F1600123F004032E440C +:10ADE0001068952243F008034FF00008C7F86D0083 +:10ADF0006846E3701DF0C2FE304694E80E00FDF791 +:10AE000085FFFEF7EABF07232382BB69002B00F012 +:10AE10007885013BFA69934241F37C822382E28187 +:10AE200094F89D30002B40F0BB8505F54053FA693E +:10AE3000D3F828321B78934202F07C83F96906F03C +:10AE4000FD03012B40F0B18543F220204FF00008B4 +:10AE50002844FBF727FAFEF7C0BF06F0FD03012BDD +:10AE60003EF4B9AF082E02F08881DAF85C38C3F3FB +:10AE70000018FEF7B2BF022E01F04381082E7EF4C7 +:10AE8000AAAFE37843F65838454E952223F00403E1 +:10AE900003CE43F00803C7F86D006846C7F8711089 +:10AEA00007F16001E3701DF069FE08EB05004FF04B +:10AEB000000894E80E00FDF729FFFEF78EBF012E73 +:10AEC00001F06784082E7EF486AFE3781B0742F119 +:10AED000BB83FB69092B42F26985FB690A3B0C2B9A +:10AEE00000F24284DFE813F0692063205D205720E0 +:10AEF0006F236D23642358239C19370437047E2065 +:10AF0000762094F89D30002B02F00283A27B43F25E +:10AF10000C20267C94F89EC02844B24294F89F40AE +:10AF200004D803F00581334616461A46072A11460F +:10AF300005F5405928BF0721082ED9F81832C9B2A3 +:10AF400028BF00261B78B14203F2F980002A43F0A3 +:10AF50000E860721BCF1000F03F02E800133002C78 +:10AF600003F024808B4202DC934200DBDAB211460C +:10AF700003F027B805F54055D5F8183293F800804E +:10AF8000FB69A8EB030CDCF1000848EB0C08FEF7AA +:10AF900024BF00BFD81E0020D01F0020641F002047 +:10AFA000C81F002094F89D30002B02F073843B6989 +:10AFB000012B03F0DE8094F80E802D2194F810A070 +:10AFC00043F20C26CD4894F89EB02E4494F89F404E +:10AFD0001FF0F4FCCA481DF089F9D04504D803F0ED +:10AFE0001B805346C2469846424605F54059072AFB +:10AFF000D9F81C3228BF0722BAF1080F1B78D2B249 +:10B0000028BF4FF0000A524503F20E80B8F1000F3E +:10B0100044F0C5800722BBF1000F02F0F087013336 +:10B02000002C02F0E687934203DC434501DB5FFA24 +:10B0300083F84246D9F8181200233046097898461A +:10B04000F3F784FCFEF7C9BE05F54055D5F81C3270 +:10B0500093F80080FB69A8EB0302D2F1000848EBEB +:10B060000208FEF7BABE0025FB6AFA69594648464F +:10B070000095A846A047FEF7B0BEFB6A5946FA699C +:10B080004846DB09CDF800C04FF00008A047FEF7A6 +:10B09000A4BE00257B6AFA69594648460095A04738 +:10B0A0008046FEF79ABE00257B6AFA6959464846F3 +:10B0B0000095A846A047FEF790BE06F0FD03012BC1 +:10B0C0007FF4CCA894F89D30002B41F0D8800B463B +:10B0D000002A3EF480AE43F2743019464FF0000867 +:10B0E0002844FAF735F8FEF778BEFB69072B3EF6E1 +:10B0F00072AE844A05F54059BB8B012610689188D1 +:10B100009279638187F8C520D9F81C22C7F8BF005F +:10B11000A7F8C3101178E078A3EB010CE675A181C4 +:10B12000DCF1000343EB0C032375C3060AD53B692E +:10B13000B34204F067821378D9F818226381A3819F +:10B140001378637243F20C2607F16D0261894FF0A8 +:10B1500000082E443046FAF7FBFF07F19602A1895A +:10B160003046FAF7F5FF684A43F6583692E803008E +:10B1700001222E44C7F8E000080C84F89C20952298 +:10B18000A7F8E41007F1600187F8E60068461DF0B3 +:10B19000F5FC304694E80E00FDF7B8FDFEF71DBE45 +:10B1A000E189238A5B1A02F0668505F5405503EBB9 +:10B1B000D3786420D5F81C224FEA68081278521A16 +:10B1C00000FB028808FB03F2002A98FBF3F8C2F2A6 +:10B1D000FD855FFA88F8FEF700BE4C4B05F540523E +:10B1E0004FF0010807F16D01186843F658361B79D6 +:10B1F000C7F8BF002E44F86987F8C330D2F8182288 +:10B2000083B26381127884F81780A3EB020EA281C7 +:10B21000DEF1000343EB0E032375FAF721FD07F17E +:10B220009601207BFAF71CFD394907F1E0039522CE +:10B2300084F89C804FF0000803C983E8030007F1FD +:10B24000600168461DF09AFC304694E80E00FDF758 +:10B250005DFDFEF7C2BD05F540554FF064080322C1 +:10B260000723D5F81812097818FB0128B8FBF3F862 +:10B270005FFA88F8FEF7B1BDFB69082B02F0BB85C9 +:10B2800001F20186012B3EF66BAEFA6A3F237F2165 +:10B2900005F5405903EB021399F8CC27B3FBF1F302 +:10B2A000FF2ADCB204F0A88194423EF494AD99F8F0 +:10B2B000BD3744F28E81DA0704F1A9814FF000080E +:10B2C00089F8CC47FEF789BDFB69653B7C2B42F2D0 +:10B2D000F882FB69012B02F2D58194F8A0104FF09F +:10B2E000000843F2B07094F89E20B1EB08012844A6 +:10B2F00018BF0121FCF7ACFDFEF76FBD3C2000201C +:10B30000684C0020002000206C20002074200020C9 +:10B310007C200020FB69A3F16502D6B27C2E02F2EC +:10B32000678305F5405192B291F8BD376281D80725 +:10B3300008D591F8CA17C3F380005B07A18101D536 +:10B340008E4200D00020D14907F1E003207501268C +:10B3500003C9E67583E803000323CD4907F16D00B7 +:10B3600084F89C3021F04CF9A28907F19600C84975 +:10B3700021F046F9E37823F0040343F00803E37077 +:10B38000C44B43F6583695224FF0000803CB1B8878 +:10B39000C7F8BF006846C7F8C31007F16001A7F8F7 +:10B3A000C7301DF0EBFB701994E80E00FDF7AEFC02 +:10B3B000FEF713BDFB69653BDBB27C2B02F23082EA +:10B3C00005F5405595F8BD2712F001083EF405AD8E +:10B3D0005407C2F380087EF500AD95F8CA87A8EB44 +:10B3E0000300D0F1000848EB0008FEF7F6BC05F5B5 +:10B3F0004052A94907F16D0043F6583692F851388A +:10B400004FF0010892F850282E4421F0F9F8A34A91 +:10B41000E37803CA23F00403C7F8BF00108843F0A1 +:10B420000803C7F8C310952207F16001A7F8C70009 +:10B430006846E3701DF0A2FB304694E80E00FDF76D +:10B4400065FCFEF7CABCE17843F65836944B4FF0E2 +:10B45000010821F004019AF8CC2A2E4441F0080199 +:10B46000C2F38002E1702275952203CBC7F86D000C +:10B4700018788C4BC7F8711087F875009988186890 +:10B480009B79C7F8BF006846A7F8C31007F16001B1 +:10B4900087F8C5301DF072FB304694E80E00FDF7CA +:10B4A00035FCFEF79ABC9AF8CC3A43F658397E4EF2 +:10B4B0009522C3F34003DFF8ECC14FF00108237578 +:10B4C000E37823F0040343F0080303CEE370BCF8F1 +:10B4D0000430C7F86D00DCF80000A7F8C3309CF812 +:10B4E0000630C7F8711007F16001C7F8BF00684661 +:10B4F00087F8C5301DF042FB09EB050094E80E000B +:10B50000FDF704FCFEF769BC684B43F65836654A04 +:10B510004FF001082E4403CB1B88C7F8711005F5C6 +:10B520004051A7F875309388D1F80412A7F8C330BA +:10B5300093790039C7F86D0087F8C53018BF01212D +:10B54000E3781068952223F004032175C7F8BF0043 +:10B5500007F1600143F008036846E3701DF00EFB3D +:10B56000304694E80E00FDF7D1FBFEF736BC504B99 +:10B5700043F658364B4A4FF001082E4403CB1B8844 +:10B58000C7F8711005F54051A7F875309388D1F8C8 +:10B59000FC11A7F8C33093790039C7F86D0087F81C +:10B5A000C53018BF0121E3781068952223F0040309 +:10B5B0002175C7F8BF0007F1600143F00803684632 +:10B5C000E3701DF0DBFA304694E80E00FDF79EFBB9 +:10B5D000FEF703BCDAF85C3843F65836314A4FF0D0 +:10B5E0000108C3F3001333492E442375E378086838 +:10B5F000918823F00403C7F86D00A7F8C31043F047 +:10B600000803106891799522C7F8BF00684687F84B +:10B61000C51007F16001E3701DF0B0FA304694E800 +:10B620000E00FDF773FBFEF7D8BBDAF85C3843F683 +:10B63000583621499522C3F3C003DFF868C0086873 +:10B640004FF001082375E378C7F86D0023F0040379 +:10B65000DCF8000043F00803C7F8BF006846E37059 +:10B660000B7907F1600187F87130BCF80430A7F856 +:10B67000C3309CF8063087F8C5301DF07FFA70198A +:10B6800094E80E00FDF742FBFEF7A7BBE820002080 +:10B69000F020002004220020B01F0020BC1F00204A +:10B6A000A41F0020741F00209C1F0020901F00205A +:10B6B000841F0020741C00207C1F0020DAF85C38F6 +:10B6C00043F65836D24A4FF00108C3F380032E44A4 +:10B6D00010682375E378918823F004039279C7F802 +:10B6E0006D0043F0080387F87320A7F8711007F185 +:10B6F0006001E370C74B18689A889B79A7F8C3204C +:10B700009522C7F8BF00684687F8C5301DF036FAA5 +:10B71000304694E80E00FDF7F9FAFEF75EBBE378D9 +:10B7200043F65836BC4A07F1600123F004032E4467 +:10B730001068952243F008034FF00108C7F86D0028 +:10B740006846E3701DF01AFA304694E80E00FDF7E3 +:10B75000DDFAFEF742BBB14B03CB1B88C7F86D0087 +:10B76000C7F87110A7F87530E37843F65836AC493E +:10B77000952223F004034FF00008086843F0080303 +:10B78000C7F8BF006846E3708B8807F16001A7F82F +:10B79000C3301DF0F3F9701994E80E00FDF7B6FA06 +:10B7A000FEF71BBBFB69133B042B3FF615A805F501 +:10B7B0004059B9F87C331A0707D49A4A1268C9F875 +:10B7C0008C234FF47A72A9F8882343F00803A9F870 +:10B7D0007C33FFF701B81A46FEF725BE012E7FF431 +:10B7E0007FA994F89D30002B40F04186F96943F21F +:10B7F00020204FF000082844F3F738F9FEF7EDBA9F +:10B80000082E7EF4E8AAE37843F65836864A4FF0CD +:10B81000000823F004032E44106843F008039188C5 +:10B82000C7F86D00E370814BA7F87110927903CBD4 +:10B8300087F8732095221B88C7F8BF006846C7F8B1 +:10B84000C31007F16001A7F8C7301DF097F9304623 +:10B8500094E80E00FDF75AFAFEF7BFBA052E01F084 +:10B860002282082E41F01382BA69052A3EF6B3AA55 +:10B87000FA69042A3EF6AFAA11466D4A6381012691 +:10B8800010684FF000089288C7F8BF00A7F8C320DF +:10B890009CF80000DAF8FCE7A3EB000CDEF80020CF +:10B8A000DCF10003A081C2F34022284643EB0C03E5 +:10B8B000E675227607F16D02237507F0A5FC07F106 +:10B8C0009602217B284607F09FFC5A4A84F89C6028 +:10B8D00043F6583692E803002E449522C7F8E0005C +:10B8E000080CA7F8E41007F1600187F8E600684645 +:10B8F0001DF044F9304694E80E00FDF707FAFEF714 +:10B900006CBA06F0FD03012B4FD194F89D30002B4B +:10B9100040F07685F969FFF797BA052E01F0CE81E0 +:10B92000082E7EF458AAE378580742F1A18105F564 +:10B93000405292F8342823F004033F4907F16D0088 +:10B94000628143F0080343F658364FF00008E37075 +:10B9500020F056FE394B2E44952203CBC7F8BF008A +:10B960006846C7F8C31007F160011DF007F93046BB +:10B9700094E80E00FDF7CAF9FEF72FBA012E7FF406 +:10B9800078A894F89D30002B40F09485F96943F233 +:10B9900020204FF000082844F3F7DAF8FEF71DBA2C +:10B9A00006F0FD03012B00F02B85052E01F0D6805B +:10B9B000082E01F0518405F54055D5F8283293F84A +:10B9C0000080FB69A8EB030BDBF1000848EB0B08D8 +:10B9D000FEF703BA06F0FD03012B54D194F89D3015 +:10B9E000002B41F0F583424605F54059FEF798BD1E +:10B9F000082E01F0F38405F54055BB6995F8AB8737 +:10BA0000A8EB0308B8FA88F84FEA5818FEF7E5B92A +:10BA10006C1F0020741F0020681F002008200020D9 +:10BA20002420002008BB0020102200200422002037 +:10BA3000F41F00203420002058260020041F00207E +:10BA400006F0FD03012B7FF468AF94F89D30002BC6 +:10BA500040F09484BA6905F54059FEF701BF042E01 +:10BA600001F0C583052E01F03981082E01F04586CD +:10BA70003B6903F07F08A8EB0901D1F1000848EB0E +:10BA80000108FEF7AAB905F54059082E01F0E08239 +:10BA900099F8933313F0010318BF99F8AE33A8EB6C +:10BAA0000308B8FA88F84FEA5818FEF796B906F076 +:10BAB000FD0001287FF4D2AE94F89D30002B3EF4B7 +:10BAC000C6AC284694F8A050A37B003D94F89F2074 +:10BAD00094F89E1018BF01250195247C009407F06E +:10BAE0006DFDFEF77AB9042E01F0E684052E01F013 +:10BAF000FE81082E01F02385BB6903F07F08A8EBC7 +:10BB00000004D4F1000848EB0408FEF766B906F01B +:10BB1000FD010129E7D194F89D1000293FF4BAA84E +:10BB20007969207C94F8A03091F833100390003BA1 +:10BB3000A07B18BF0123029094F89F00019094F815 +:10BB40009E00009005F5CE5017F0BAFBA279FF24B5 +:10BB5000034602F00F02C0212846009401320AF089 +:10BB600023FCFEF73AB906F0FD03012B7FF477AF13 +:10BB700094F89D30002B3FF43CA87B69207C93F81F +:10BB80003310BB690490A07B039094F89F0002904F +:10BB900094F89E00019094F8A000003818BF01208E +:10BBA000009005F5CE5017F077FBA2790646E379B1 +:10BBB00002F00F02B0212846009601320AF0F4FB91 +:10BBC000FEF70BB94FF0FF08FEF707B9FB6905F563 +:10BBD000CE5000267D6903F00F02BB6995F8331043 +:10BBE000013203F07F03CDF80880009333460196BD +:10BBF000C7E90A2015F01AFE95F83310BA6ACDE9A4 +:10BC00000168237A03F07F0300932023F86A15F07C +:10BC10000DFE94F89D50F86A002D01F028807E22D8 +:10BC2000A37DE68122820BB184F89D607A690025AC +:10BC300094F8A0307E2692F83310A846A2795B1BB8 +:10BC4000CDE9025694F89F5002F00F0218BF01236D +:10BC50000195013294F89E40009417F031FBFEF7F5 +:10BC6000BCB8FA69162A3EF67BA901A353F822F064 +:10BC700051D9000041D90000D5DA000041D90000B7 +:10BC8000B3DA00009BDA000083DA000041D900003B +:10BC90006BDA000053DA00003BDA00002BDA000018 +:10BCA0001BDA00000BDA0000FBD90000EBD9000022 +:10BCB000D5BB0000C9D90000B9D900009FD9000048 +:10BCC00085D9000071D9000061D9000005F5405503 +:10BCD00095F8C38408F00108FEF77FB805F54055D4 +:10BCE00095F8938308F00108FEF777B805F54055FD +:10BCF000B5F87C8308F00108FEF76FB805F54055EC +:10BD000095F89783B8FA88F84FEA5818FEF765B89F +:10BD100005F5405595F8978318F0020F18BF4FF0BE +:10BD2000010808F00108FEF758B805F5405595F8E8 +:10BD3000978318F0020F18BF4FF0010808F00108B0 +:10BD4000FEF74BB805F54055B5F87C83C8F380087D +:10BD5000FEF743B805F5405595F8C33413F00108D4 +:10BD60003EF43BA85807C3F380083EF536A8C3F35A +:10BD7000C008FEF732B805F5405595F89783C8F32B +:10BD80004018FEF72AB805F5405595F89783C8F393 +:10BD90000018FEF722B805F5405595F89783C8F3CB +:10BDA0008008FEF71AB805F5405595F8978308F016 +:10BDB0000108FEF712B805F5405595F89783C8F3CA +:10BDC0004008FEF70AB805F5405595F8C33413F05E +:10BDD00001083EF402A8C3F34018FDF7FEBF05F5C5 +:10BDE000405595F8C33413F001083DF4F6AFC3F3A2 +:10BDF0000018FDF7F2BF05F5405595F8C33413F070 +:10BE000001083DF4EAAFC3F3C008FDF7E6BF05F54E +:10BE1000405595F8C33413F001083DF4DEAFC3F389 +:10BE20004008FDF7DABF05F5405595F8C33413F027 +:10BE300001083DF4D2AFC3F38008FDF7CEBF05F58E +:10BE4000405595F8C33413F001083DF4C6AF5C07C4 +:10BE500003F11782C3F3C00383F00108FDF7BDBFF0 +:10BE600005F5405595F8C38408F0010888F00108ED +:10BE7000FDF7B3BF4FF6FF73FEF7CEB905F5405996 +:10BE800099F89333D8077DF5A6AFFA69082A03F22B +:10BE9000C284DFE802F0443815050505055D510050 +:10BEA000FB69022443F27430BA69033B0B21284436 +:10BEB0000094DBB24FF00108F3F750FCFDF78DBFA3 +:10BEC00043F2743043F2CC413A8B00232844294496 +:10BED00003E001335B2B03F0598111F83340BD6956 +:10BEE000AC42F6D14B4493F85934DB4313F00103D1 +:10BEF00043F04C8102240A214FF001080094F3F72B +:10BF00002DFCFDF76ABF022143F27430BA690023A9 +:10BF1000009128440A21F3F721FCFDF75EBF0224BB +:10BF200043F274300123BA690A21284400949846E8 +:10BF3000F3F714FCFDF751BF43F2743003230222E0 +:10BF4000B96928444FF00108FBF778FAFDF745BFBF +:10BF500043F2743001230022B96928449846FBF764 +:10BF60006DFAFDF73ABFFB6928464FF0000803F071 +:10BF70000F017B69013193F8332009F077FBFDF75E +:10BF80002CBFFB69B96903F00F035A1C002940F06C +:10BF9000198603EB8313F96A05EB43033A2903F58A +:10BFA000805494F9CE3A41F23E86F96A442901F26E +:10BFB000F586002B3DF40FAF7B6905F5CE50BD69CA +:10BFC00093F833102B46009516F098F884F8CE5A63 +:10BFD000DAF8C82AA846D36D43F02003D365FDF7ED +:10BFE000FCBEFA690B2A3DF6BBAF01A353F822F061 +:10BFF0006BDD00004FBA00005FDD000053DD000084 +:10C0000047DD000031DD00001BDD00000BDD00001E +:10C01000FBDC0000D9DC0000B7DC000095DC000090 +:10C0200005F5405393F8440820B143F644002844F2 +:10C03000F9F76EF8841ED4F1000848EB0408FDF708 +:10C04000CCBE05F5405393F8440820B143F64400B4 +:10C050002844F9F75DF8451ED5F1000848EB0508BE +:10C06000FDF7BBBE05F5405393F8440820B143F6F5 +:10C0700044002844F9F74CF8B0F1000818BF4FF01D +:10C080000108FDF7AABE9AF8CC8AC8F3800888F0A8 +:10C090000108FDF7A2BE9AF8CC8AC8F3400888F0E0 +:10C0A0000108FDF79ABE05F54055D5F80432B3F105 +:10C0B000000818BF4FF00108FDF78FBE05F5405589 +:10C0C000D5F8FC31B3F1000818BF4FF00108FDF7B7 +:10C0D00084BEDAF85C38C3F30018FDF77EBEDAF8E8 +:10C0E0005C38C3F3C008FDF778BEDAF85C38C3F3F8 +:10C0F0008008FDF772BE9AF86889C8F3C008FDF79A +:10C100006CBEFB69012B40F2E386DAF85C38D80795 +:10C1100000F1F98613F0020F0CBF4FF0FF084FF04B +:10C120000208FDF75ABE94F89D3023B1FB69653BC8 +:10C130007C2B41F26682C8494FF00008C748F9F7E6 +:10C14000DDF8C749C548F9F7D9F800230A22A179D3 +:10C15000C2481CF0E7F8C249C048F9F7CFF8E179C6 +:10C1600000230A22BD481CF0DDF8BC481CF0BEF8D4 +:10C1700043F2B070E279A1792844FBF7FFFBFDF7A9 +:10C180002CBE05F5405595F8B431DB077DF523AE9F +:10C1900089B2A1F11E03B3F5877F3DF61CAEB14B0A +:10C1A00064224FF00008A5F8AC111B68A5F8E42143 +:10C1B000C5F8E831FDF711BEFB69002B40F0F484AF +:10C1C000BB69012B41F2A4859AF8CC3A83F00203B3 +:10C1D0008AF8CC3AFDF701BE05F5405393F8443890 +:10C1E000002B3DF4F8AD43F644002844F8F790FFE7 +:10C1F00001287DF4F0AD4FF06408FDF7EEBD43F289 +:10C200005020D7E906212844FAF782FA8046FDF744 +:10C21000E4BD4FF064083A697F2308FB02F808F197 +:10C220003F08B8FBF3F85FFA88F8FDF7D6BD05F5CF +:10C230004055D5F8FC31002B3DF4CDAD4FF06408EE +:10C24000FDF7CBBD4FF064083A697F2308FB02F885 +:10C2500008F13F08B8FBF3F85FFA88F8FDF7BDBDB9 +:10C2600043F2B070C1F3080198462844FBF72AFD59 +:10C27000FDF7B3BD06F0FD03012B7DF4EFAF94F89D +:10C280009E5094F89F00E389248A002A3DF4A3ADD0 +:10C29000A342B9F89413B9F8AC2381F051858C42CC +:10C2A00002D91C4623460C46002D01F03F85511C47 +:10C2B000002801F04B87A14202DC994200DB8BB2DF +:10C2C0001C46A24222D0012399F8922399F8911397 +:10C2D00000250293C4F3C613CDE900352B46D9F8E7 +:10C2E000740315F0A3FA99F89333DA0701F1348750 +:10C2F0005C4B012041F288311A681B68A9F8A4033D +:10C30000A9F89C13C9F8A823C9F8A0334FF0000876 +:10C31000FDF763BD3EF484ADE381FB692382FEF744 +:10C320007FBD3DF488AF2182E381FDF784BF3EF4F9 +:10C330008EABE381FB692382FEF789BB3EF4D9A86B +:10C34000A4F81080E381FEF7D4B83A6943F2A470F0 +:10C35000002A00F0DB85B96928449846FBF7E6FA25 +:10C36000FDF73BBD7EF42AAC7E23E1812382FEF7FC +:10C3700025BC06F0FD03012B7FF4CFAA38694FF0EE +:10C38000000894F8A03094F89F2094F89E10003B89 +:10C3900001902846BC6918BF0123009409F000F9F8 +:10C3A000FDF71BBD06F0FD03012B7FF46CAB05F51B +:10C3B000405394F89E0094F89F1093F89323D2076B +:10C3C0007DF509AD227C93F8AE33072A28BF002201 +:10C3D000002801F06C820133002901F00885072B49 +:10C3E00002DC934200DBDAB2002343F2743092B2F3 +:10C3F0000C21284400939846F3F7B0F9FDF7EDBC03 :10C40000207C4FF0000894F8A03094F89F2094F816 -:10C410009E10003B019005F54850A47B18BF0123F6 -:10C420000094FAF747F8FDF76DBC3EF4BAAAE38131 -:10C43000FB692382FEF7B5BA4FF064083A697F239F -:10C4400008FB02F808F13F08B8FBF3F85FFA88F838 -:10C45000FDF758BC4FF064083A697F2308FB02F8E7 -:10C4600008F13F08B8FBF3F85FFA88F8FDF74ABC1B -:10C47000FB69002B40F034869AF8CC3A99077DF599 -:10C480003FAC4FF06408FDF73DBC05F540554FF05B -:10C4900064083F227F2395F8141818FB0128B8FB85 -:10C4A000F3F85FFA88F8FDF72DBCFB69013B102B10 -:10C4B0003DF6F3AC01A252F823F000BFA1E1000069 -:10C4C0008FE1000075E1000075E1000075E10000FA -:10C4D00075E1000075E1000075E1000075E1000004 -:10C4E00075E100000FBB00000FBB00000FBB000098 -:10C4F0000FBB00000FBB00000FBB000075E1000088 -:10C50000FB6A43F254304FF000081906284401F149 -:10C51000A985FBF717F8FDF7F5BB43F254304FF050 -:10C5200000082844FBF70EF8FDF7ECBB43F254304B -:10C530004FF000082844FAF7F1FFFDF7E3BBBB69B1 -:10C54000002B40F0A48605F5405595F8E08AC8F325 -:10C550004008FDF7D7BBFA69072A3DF69EACDFE835 -:10C5600002F0261D1D040404044405F54053FA6935 -:10C5700093F87333A2F1030813F0010301F0C885A7 -:10C5800043F25430B9692844F8F794FDA0EB080051 -:10C59000D0F1000848EB0008FDF7B4BB43F254307B -:10C5A000B9692844FAF7A0FF8046FDF7ABBB05F553 -:10C5B000405999F87333DC0741F1A68543F2AC4149 -:10C5C0000023294402E001335B2B0AD011F8332009 -:10C5D000B8699042F7D14B4493F8393403F0010322 -:10C5E000BB62D7F82880FDF78DBB05F5405393F863 -:10C5F0007333D9077DF584AB43F25430B9692844CD -:10C60000F8F758FD8046FDF77DBBBB69002B00F0B5 -:10C61000F287BB69012B01F04283BB69022B7DF4D9 -:10C620006FABFB698AF868391CF06AF90AF688135F -:10C630000022CAF880091A60FDF764BB05F5405571 -:10C6400064224FF48778D5F888311B881E3B02FBA3 -:10C6500003F3873393FBF8F8002BB8BF08F1FF38DA -:10C660005FFA88F8FDF74EBB4FF0FF08FDF74ABBB5 -:10C6700007F5CE73F969184609EE103AF9F7B8F9DB -:10C68000A179284609F086FD94F89D30002B40F0F2 -:10C69000BD86E37997F8B261B34204D397F8B361EA -:10C6A0009E4228BF1E4619EE103A324627212846E0 -:10C6B00009F08AFD3246A179284609F051FDDAF8E1 -:10C6C000783803B198474FF00008FDF71BBB0023F3 -:10C6D00043F23020D7E90621284400939846F2F728 -:10C6E000BFFAFDF70FBB7B6905F5CE5093F8331009 -:10C6F0003B690093FB6903F00F02BB69CDF804802E -:10C70000013215F041FBA279217A284602F00F028E -:10C71000E3790091B021013209F0D4FDFDF7F2BABE -:10C72000FB6905F50054092B01F2578194F8693C27 -:10C730004FF00008F969E218013382F8661CDBB299 -:10C7400094F8661C94F8672C032B01EB810194F894 -:10C75000680C02EB820228BF434601EB81015200C4 -:10C7600084F8693C02EB81028318A4F8643CFDF76D -:10C77000C9BA05F5405999F89431DE077DF5C0AA8C -:10C78000D1484FF4FA61D9F8AC310268A9F8B41174 -:10C79000C9F8B8211BB9D9F8B031C9F8AC31DFED0F -:10C7A000CB6A99F8A821D9E96B31CB1A07EE903AF8 -:10C7B000531C09EB8202F8EE677ADBB2012B86EE9E -:10C7C000A77AB7EEC77AB8FE477BFDEEC77BF8EED7 -:10C7D000E77AC2ED687A89F8A831C9F8AC117DF61C -:10C7E0008FAA99ED687AF6EE007A9FEDB96A43F266 -:10C7F0009C13D9ED696A002237EE067A2B4489F83A -:10C80000BC2189F8A82137EE267A5A609A60B9F8D7 -:10C810009C1127EE277AC9F8B82189F89E21B7EE36 -:10C82000C77AB8FE477BBDEEC77B17EE103A9BB2C6 -:10C8300099423DF465AAA3F11E01B1F5877F3DF64B -:10C840005FAA642401689046A9F89C31A9F88C314C -:10C85000A9F8C441C9F8C811FDF754BAFB6905F538 -:10C86000CE507D6903F00F02BB6995F83310013299 -:10C87000029603F07F030026009320230196B04622 -:10C88000C7E90A2014F070FF237A95F83310BA6ACA -:10C8900003F07F03F86A009614F0ECFDFDF732BA5E -:10C8A000FB6905F5CE507D6903F00F02BB6995F871 -:10C8B00033100132029603F07F03002600933346C3 -:10C8C0000196B046C7E90A2014F04EFF237A95F886 -:10C8D0003310BA6A03F07F03F86A009614F0CAFDB9 -:10C8E000FDF710BA7C6828463B694FF00008D7E98D -:10C8F00006210094F4F7C4F8FDF704BAFB6905F5C6 -:10C90000CE507969002503F00F02BB6991F833100E -:10C91000A846013203F07F03029600932B4601954F -:10C92000C7E90A2014F020FF7969202391F8331019 -:10C93000CDE90156247ABA6A04F07F04F86A0094BB -:10C9400014F012FFFDF7DEB9FB6903F00308B8F13C -:10C95000010F00F00E87B8F1020F00F0EC86B8F17D -:10C96000000F7DF49AAA17215A4805F540551DF08D -:10C97000B1FF59481BF044FCC5F8DC81FDF7C2B992 -:10C980007B6905F5CE5093F833103B690093FB6942 -:10C9900003F00F02BB69CDF80480013215F0A0F856 -:10C9A000A279217A284602F00F02E3790091B021A2 -:10C9B000013209F087FCFDF7A5B942F69C402844F6 -:10C9C000F9F7A0F9DAF87838002B3DF499A94FF07F -:10C9D00000089847FDF796B97B694FF00008386961 -:10C9E00093F83310FB6903F00F02BB69009005F563 -:10C9F000CE50013215F0C2FCA279E379D021247A1D -:10CA000002F00F0228460132009409F05BFCFDF7AA -:10CA100079B97B69002093F8331080463B69009315 -:10CA2000FB6903F00F02BB69019005F5CE5001329E -:10CA300015F0C8FDA279217A284602F00F02E379A9 -:10CA40000091A021013209F03DFCFDF75BB905F52D -:10CA500040554FF0640807220F23D5F80C120978CF -:10CA600018FB0128B8FBF3F85FFA88F8FDF74AB91C -:10CA70009CF80080C1F30D01A1EB0800D0F1000883 -:10CA800048EB0008FDF73EB99CF800204FF0640821 -:10CA9000022318FB0238C8F38708FDF733B905F500 -:10CAA00040554FF0640803220723D5F81012097887 -:10CAB00018FB0128B8FBF3F85FFA88F8FDF722B9F4 -:10CAC000C8F38008FDF71EB9E8BA0020C0E1644C45 -:10CAD000000000003C1F0020A84B0020BB69012B78 -:10CAE00040F2C4869AF8CC3A4FF0000883F0040371 -:10CAF0008AF8CC3AFDF706B97B6905F5CE5093F874 -:10CB00003310FB6903F00F02BB69CDF80480FE6AA5 -:10CB10000132009615F038F9A279E379B02102F0DC -:10CB20000F0228460096013209F0CCFBFDF7EAB867 -:10CB30007B6905F5CE5093F83310FB6903F00F02C3 -:10CB4000BB69CDF80480FE6A0132009614F0C8FF7C -:10CB5000A279E379B02102F00F0228460096013253 -:10CB600009F0B0FBFDF7CEB8A279A846637A7969DF -:10CB700002F00F0203F07F0391F8331001320095A9 -:10CB800014F078FCFDF7BEB805F540554FF0640889 -:10CB90003F227F2395F8141818FB0128B8FBF3F8FF -:10CBA0005FFA88F8FDF7AEB805F540554FF0640818 -:10CBB00003220723D5F80812097818FB0128B8FBCF -:10CBC000F3F85FFA88F8FDF79DB8B9690129F96AA9 -:10CBD00000F09686092901F2478003EB831305EBE9 -:10CBE000430404F5805494F9CE3A002B3DF488A810 -:10CBF00000267B6905F5CE5093F833103346009636 -:10CC0000B04615F015FA84F8CE6ADAF8C82AD36D62 -:10CC100043F02003D365FDF775B8FB69092B7DF45C -:10CC20003CA905F5405595F89D37DC077DF568A8CA -:10CC3000FC6A3F2364217F2095F8A82711FB04316B -:10CC400001246D23B1FBF0F1C8B295F8A917029445 -:10CC5000002400900194A046D5F8900714F084FDBC -:10CC6000FDF750B84FF064083F227F2318FB0928D6 -:10CC7000B8FBF3F85FFA88F8FDF744B8207C4FF072 -:10CC8000000894F8A03094F89F2094F89E10003B80 -:10CC9000019005F54850A47B18BF01230094F9F7D3 -:10CCA000C9FBFDF72FB8FB69022B21D8002B41F0FF -:10CCB000A28105F5405999F87333DA0741F11682DC -:10CCC00043F2AC41FB69294403E001335B2B3DF4A3 -:10CCD00017A811F83320B8699042F6D14B4493F865 -:10CCE0003934DB077DF50CA84FF06408FDF70AB86E -:10CCF000FB69033B052B3DF6D0A805F5405393F89F -:10CD0000733313F0010806D043F25430B969284454 -:10CD1000F8F7D0F9804608F1010808EB880808EB1D -:10CD200088085FFA88F8FCF7EDBFFB69013B152B1B -:10CD30003DF6B3A801A252F823F000BFA1E1000024 -:10CD40008FE1000009EA000009EA000009EA00009A -:10CD500009EA000009EA000009EA000009EA000007 -:10CD600009EA0000FF090100EB090100D7090100F1 -:10CD7000C3090100AF0901009B09010009EA000095 -:10CD800075090100610901000D140100FB13010088 -:10CD900069FD000005F5405393F87323D2077CF535 -:10CDA000AFAF93F8A33443F2543013F00103284497 -:10CDB00042F068830122112100939846F2F7CEFCDD -:10CDC000FCF7A0BF002B40F07485DAF85C3803F064 -:10CDD0000103002B0CBF4FF0FF084FF00208FCF7D7 -:10CDE00091BF207C4FF0000894F8A03094F89F2069 -:10CDF00094F89E10003B019005F54850A47B18BFA5 -:10CE000001230094F9F756FBFCF77CBF4FF0640850 -:10CE10003F227F2318FB0028B8FBF3F85FFA88F85D -:10CE2000FCF770BFBB69002B40F0D88205F5405578 -:10CE300095F8E03A9E077CF563AF4FF06408FCF785 -:10CE400061BF7B690020FE6A93F833108046BB699E -:10CE5000019001200096029005F5CE5014F084FC5C -:10CE6000A279E379B02102F00F0228460096013240 -:10CE700009F028FAFCF746BF7B6905F5CE5093F818 -:10CE80003310002300939846FE6A334614F0F2FAFA -:10CE9000A279FF24334602F00F02C02128460094F5 -:10CEA000013209F00FFAFCF72DBF3B692844D7E99E -:10CEB00006219846FAF7E0FBFCF724BFD04B6181CE -:10CEC0001868C7F8BF0098889B79A7F8C30087F84F -:10CED000C530002A01F08480B9F88C33A1EB030C33 -:10CEE000A381DAF8FC2707F16D00DCF1000343EBC6 -:10CEF0000C03237513680A46C249C3F34023237603 -:10CF00001FF00AFB99F87333DB0740F1D88443F232 -:10CF1000903107F1960029441FF0F6FEB94A04212A -:10CF200043F638364FF0000884F89C102E4492E8FF -:10CF300003009522C7F8E000080CA7F8E41007F1F9 -:10CF4000600187F8E60068461BF0A4FD304694E8CF -:10CF50000E00FBF709FFFCF7D5BEFB690F2B3CF673 -:10CF6000CFAE05F54051A84BDAF8FC274FF000088A -:10CF70001868D1F80C621B79F96987F8C3308BB255 -:10CF8000C7F8BF00126805F5485063813678C2F3D0 -:10CF90004022F862A3EB060A22760122A681DAF18A -:10CFA000000343F63836E27507F16D0243EB0A03DE -:10CFB0002E442375F9F716FB07F19602217BF86AD8 -:10CFC000F9F710FB914A07F1E00392E8030002220F -:10CFD00083E8030084F89C2007F1600195226846ED -:10CFE0001BF058FD304694E80E00FBF7BDFEFCF741 -:10CFF00089BEFB69072B3CF683AE05F54051844B97 -:10D00000DAF8FC274FF001081868D1F810621B7994 -:10D01000F96987F8C3308BB2C7F8BF00126805F50D -:10D02000485063813678C2F3402284F81780A3EB1E -:10D03000060E227607F16D02A681DEF10003F8628A -:10D0400043F6383643EB0E032E442375F9F728FBDD -:10D0500007F19602217BF86AF9F722FB6D4907F187 -:10D06000E003952284F89C804FF0000803C983E810 -:10D07000030007F1600168461BF00CFD304694E8A0 -:10D080000E00FBF771FEFCF73DBEE27843F6383642 -:10D09000614B4FF0000822F004022E4442F00802D7 -:10D0A000E27005F54052D2F8DC21003A18BF0122A7 -:10D0B000227507CB1B78C7F86D006846C7F871105A -:10D0C00007F16001C7F87520952287F879301BF0C9 -:10D0D000E1FC304694E80E00FBF746FEFCF712BE7A -:10D0E0009AF8CC3A5A077CF50BAE4FF06408FCF77F -:10D0F00009BEE67C162E00F067864FF00008FCF7AC -:10D1000001BE94F8A01043F2302094F89E304FF006 -:10D1100000080C1EBA69F969284418BF012400945C -:10D12000FAF752F8FCF7EEBD05F5405394F89E006F -:10D1300094F89F1093F87343E4077CF5E1AD93F8FE -:10D140008E33FFF75DB8354BF96918689B88C7F8CF -:10D15000BF00A7F8C330032914D8DFE801F0453B2E -:10D160002B0205F54051BE693B6991F88B071344CA -:10D170003244861B2A4970427041207507F16D00C8 -:10D180001FF0CAF9E37843F6383607F160019522BB -:10D1900023F004032E4468464FF0000843F00803D0 -:10D1A000E3701BF077FC304694E80E00FBF7DCFDE3 -:10D1B000FCF7A8BDE37813F0040F05F5405302F027 -:10D1C0006A8193F88B3707F16D0016491A441FF0F6 -:10D1D000A3F9D7E7144B03CB1B88C7F86D00C7F83A -:10D1E0007110A7F87530CDE7104B18689A889B79B5 -:10D1F000A7F87120C7F86D0087F87330C2E700BF49 -:10D2000000200020BC220020902000209820002038 -:10D21000A0200020A8200020541F0020D42200209D -:10D22000F8220020F0220020E4220020DC2200204E -:10D2300005F54052D44907F16D0043F6383692F8AF -:10D2400031384FF0000892F830282E441FF064F96E -:10D25000CE4AE37803CA23F00403C7F8BF0010885E -:10D2600043F00803C7F8C310952207F16001A7F83F -:10D27000C7006846E3701BF00DFC304694E80E00D2 -:10D28000FBF772FDFCF73EBDB046FCF73BBDBB694A -:10D29000012B00F02285BB69022B7CF431AD05F532 -:10D2A000405595F8E08A08F0010888F00108FCF77D -:10D2B00029BDFB69072B3CF623AD05F54051B44869 -:10D2C0001E469BB200684FF00108D1F80812C7F85B -:10D2D000BF00638108783146DAF8FC271E1A12680D -:10D2E0007342A081C2F3402205F54850734184F88F -:10D2F0001780227607F16D02237543F63836F862FF -:10D30000F9F718F907F19602217BF86A2E44F9F72C -:10D3100011F9A04907F1E003952284F89C804FF0B1 -:10D32000000803C983E8030007F1600168461BF0A9 -:10D33000B1FB304694E80E00FBF716FDFCF7E2BCAB -:10D34000954B1FFA88F218689B886281A7F8C33052 -:10D3500099F87333C7F8BF00DE0740F16286DAF848 -:10D36000FC37112643F28C3A4FF0250B1B6816FB55 -:10D3700008B8AA44C3F340230AEB0801237699F8BE -:10D380008E33D01A9846A3814242424107F16D0084 -:10D3900022751FF0B9FCB8F1070F40F239867F4AB9 -:10D3A000012143F638364FF0000884F89C102E44D3 -:10D3B00092E803009522C7F8E000080CA7F8E410F3 -:10D3C00007F1600187F8E60068461BF063FB304612 -:10D3D00094E80E00FBF7C8FCFCF794BCBB69012B7A -:10D3E00000F0DB85BB69022B7CF48AAC05F5405567 -:10D3F00095F8E03ADC073CF583AC4FF06408FCF7A5 -:10D4000081BCBB69591EC9B2FDF7B7BC94F89EC078 -:10D4100097F8B21197F8B36197F8B43194F89F2058 -:10D42000BCF1000F00F0A3851844002A00F0988595 -:10D43000B04202DC884200DBC1B20E46FFF733B9CE -:10D44000DAB2FCF7BCBF9BB2FCF7ADBE1046FCF7EE -:10D45000A6BEBB69591EC9B2FDF75CB9504B4FF06F -:10D460000008E1781E889B78A7F8BF604E0743F656 -:10D47000383687F8C13048BFE07107F16D00E379B5 -:10D480002E4448491FF048F8C02307F16001952257 -:10D49000684663711BF0FEFA304694E80E00FBF715 -:10D4A0002DF9FCF72FBC05F5405292F89D3713F08B -:10D4B000010300F0038594F89E1092F8AA37002922 -:10D4C00000F0F7847B2B88BF002340F2CA836533CA -:10D4D00043F29070BA694FF00008D9B22844FAF7C5 -:10D4E0007DFAFCF70FBCBA6907F1BF002E4943F67D -:10D4F00038361FF011F8E378A2794FF0000858078A -:10D500002A4902F00F02E37948BF84F80890207A94 -:10D510000132009007F16D001EF0FEFFB02307F10D -:10D5200060019522684663711BF0B4FA701994E8A3 -:10D530000E00FBF7E3F8FCF7E5BB05F5405243F2BC -:10D54000EC109846D2F8FC2128441278F1F7FEF945 -:10D55000FCF7D8BBBB695A1ED2B2FDF795BB43F2AC -:10D56000847094F89E10D7F810802844FAF760F978 -:10D57000FCF7C8BBBB69591EC9B2FDF7A6B8BB69A9 -:10D58000591EC9B2FDF71CBAB01F0020BC1F0020F5 -:10D5900084200020882000200C200020B4220020BD -:10D5A00050150020B41E0020C01E0020C81E002000 -:10D5B000CB4907F16D001EF0AFFFA2793C21E37863 -:10D5C00043F6383601FB025241F6681123F004039A -:10D5D0002E44505C07F1600143F00803952220754A -:10D5E0006846E3701BF056FA304694E80E00FBF7ED -:10D5F000BBFBFCF787BB9AF8683983F001038AF814 -:10D6000068391BF07DF90AF688130022CAF88009F0 -:10D610001A60FCF777BB123B012B3CF63EAC94F84A -:10D620009E1043F290707F224FF000081231284480 -:10D63000C9B2FAF7D3F9FCF765BB05F50056A9495D -:10D6400007F16D00B6F8642C1EF066FFE37C162B24 -:10D650007EF420A85FFA8BF105F54053382096F848 -:10D66000692C00FB013393F9401D8A4218BF83F8EF -:10D67000402DFEF70FB8BB69082B00F2828305F539 -:10D68000405904BF99F80133FB60FB6809EBC30301 -:10D6900093F8103313F00F0300F073830B2BA8BF24 -:10D6A0000B2303F1FF3864220A2302FB08F808F178 -:10D6B0000508B8FBF3F85FFA88F8FCF723BBE278BB -:10D6C00043F63836884B4FF0000822F004022E440F -:10D6D00003CB42F00802C7F86D006846E2701A8872 -:10D6E0009B78A7F875209522C7F8711007F16001A3 -:10D6F00087F877301BF0CEF9304694E80E00FBF740 -:10D7000033FBFCF7FFBA013B002900F03C83934256 -:10D71000BEF681AD0722FEF77FBDBB6813F0010F97 -:10D720009AF8CC3A14BF43F0020323F002038AF8BC -:10D73000CC3AFCF7E7BA05F54055D5F8DC41002CAA -:10D7400040F0268395F8E831002B3CF4D9AA182143 -:10D7500066481DF0BFF866481AF052FD654B4FF45D -:10D760009672A0461B68A5F8D821C5F8DC31FCF7F5 -:10D77000C9BA05F5405595F8E831002B3CF4C0AA2C -:10D78000D5F8DC41002C7CF4BBAA5849A046584887 -:10D79000F7F77CFD56481AF033FD564B4FF496725E -:10D7A0001B68A5F8D821C5F8DC31FCF7ABBA013B02 -:10D7B0009342A8BFD9B2FCF740BC05F5405143F2F3 -:10D7C000EC109846D1F8F81128440978F1F7BEF822 -:10D7D000FCF798BA7B69C1EB413B3A2405F5CE5082 -:10D7E00093F833100BF11D03BD69B3FBF4F3A3F5FC -:10D7F00000530095A8461BB214F01AFCFCF782BA3D -:10D80000002800F06584511E9942FEF638AD8CB2B6 -:10D81000FEF735BD8C4200F26F83002C3EF420AD44 -:10D820000023FEF71FBD3A8BFDF78ABF05F5405276 -:10D8300092F89D3713F0010300F0D58394F89E1001 -:10D8400092F8AA37002901F08C877B2B88BF002330 -:10D8500040F2CE83653343F29070BA694FF000080E -:10D86000D9B22844FAF7BAF8FCF74CBABB6813F0FF -:10D8700001089AF8CC3A00F0388243F004034FF0E4 -:10D8800000088AF8CC3AFCF73DBA1A461A4907F163 -:10D890006D001EF041FEFDF7FDBE89B207F16D007F -:10D8A00001EB011101F5CF6129441FF02DFAFCF7BE -:10D8B0000CBBDAF85C38C3F34003FFF78ABA0F4BAE -:10D8C00007CB1B88C7F89600C7F89A10C7F89E20A8 -:10D8D000A7F8A230FFF722BB0023FCF797BB00BFDD -:10D8E0002C20002058260020141F0020842900200E -:10D8F000A84B0020E8BA002030200020B8150020F6 -:10D90000092900F2158303EB831305EB430303F5A9 -:10D91000805494F9CE3A002B3CF4F2A900267B699E -:10D9200005F5CE5093F8331033460096B04614F008 -:10D930007FFB84F8CE6ADAF8C82AD36D43F020035F -:10D94000D365FCF7DFB9FB69822207F1F8082146AD -:10D9500003F00F03404602FB03A34FF0640AA12229 -:10D9600093F8CE9A3F23A4F80EA01AFB09397F231F -:10D97000B9FBF3F9A4F80A901BF08CF8E47C534649 -:10D980003E654A467E6307F13400DB49C7E90E660F -:10D99000C7E91066C7E9126600961EF0BDFD07F1E3 -:10D9A00034001FF093FA002800F08581C0B207F11F -:10D9B0003402314601F1050C12F8013B0131634498 -:10D9C000C9B25E408842F6B2F4D84640162C01F047 -:10D9D00060844FF00008FCF795B994F8693C022B7D -:10D9E00040F2CF82002384F8693CFB690A3B042B98 -:10D9F0003CF645AADFE813F0560E610DA80E9F0E07 -:10DA0000800EFB690B3B0A2B3CF647AA01A252F899 -:10DA100023F000BFD5F60000D5F600000FBB0000D4 -:10DA2000370A0100C5F60000B5F600000FBB000084 -:10DA30000FBB00000FBB0000C5F60000B5F60000EC -:10DA400005F5405595F89D87C8F38018FCF75AB93D -:10DA500005F5405595F89D87C8F34018FCF752B975 -:10DA600005F5405595F89D3713F001083CF44AA997 -:10DA7000C3F38008FCF746B94FF03208FDF74FBBFF -:10DA8000E37823F0040343F00803E370FB69642B9D -:10DA900000F2D2801A46642A3DF6CAAB01A353F8BD -:10DAA00022F000BF7508010065080100530801005D -:10DAB0004308010029080100250801002108010090 -:10DAC0001508010005080100ED070100E707010046 -:10DAD000C1070100970701008307010055070100F6 -:10DAE00031070100D7100100D1100100B31001006F -:10DAF00093100100D10F0100AB0F0100A5CE000073 -:10DB0000A5CE0000A5CE0000A5CE0000A5CE000049 -:10DB1000A5CE0000A5CE0000A5CE0000A5CE000039 -:10DB2000A5CE0000A5CE0000A5CE0000A5CE000029 -:10DB3000A5CE0000A5CE0000A5CE0000A5CE000019 -:10DB4000A5CE0000A5CE0000A5CE0000A5CE000009 -:10DB5000A5CE0000A5CE0000A5CE0000A5CE0000F9 -:10DB6000A5CE0000A5CE0000A5CE0000A5CE0000E9 -:10DB7000A5CE0000A5CE0000A5CE0000A5CE0000D9 -:10DB8000A5CE0000A5CE0000A5CE0000A5CE0000C9 -:10DB9000A5CE0000A5CE0000A5CE0000A5CE0000B9 -:10DBA000A5CE0000A5CE0000A5CE0000A5CE0000A9 -:10DBB000A5CE0000A5CE0000A5CE0000A5CE000099 -:10DBC000A5CE0000A5CE0000A5CE0000A5CE000089 -:10DBD000A5CE0000A5CE0000A5CE0000A5CE000079 -:10DBE000A5CE0000A5CE0000A5CE0000A5CE000069 -:10DBF000A5CE0000A5CE0000A5CE0000A5CE000059 -:10DC0000A5CE0000A5CE0000A5CE0000A5CE000048 -:10DC1000A5CE0000A5CE0000A5CE0000A5CE000038 -:10DC2000A5CE0000A5CE0000A5CE0000A5CE000028 -:10DC3000A5CE000055100100FB69E22B01F0D38353 -:10DC4000E32B7DF4F5AA2D4B03CB1A889B78C7F8FC -:10DC50006D00A7F87520C7F8711087F87730FDF7C9 -:10DC6000E7BA0133DBB232E4A1F10A0B7B69752616 -:10DC70000024ABEB4B3B93F8331005F5CE500094EA -:10DC8000ABF13A03A04693FBF6F3013B1BB214F051 -:10DC9000CFF9FCF737B808F1FF38FDF740BA8AF83A -:10DCA00068391AF02DFE0AF688130022CAF8800996 -:10DCB0001A60FCF727B8064688E605F540590721A3 -:10DCC0000026D9F8F8311B783246FDF741B9A14258 -:10DCD0007EF7D1AA2346FEF7D1BA05F5405595F84F -:10DCE000E08A08F00108FCF70DB823F004038AF875 -:10DCF000CC3AFCF707B800BF74150020F8210020CB -:10DD000005F5405343F2EC1094F89E10D3F8F4312B -:10DD1000284494F89F201B88002900F0BC81002A29 -:10DD200000F076873E2B40F2DE810021002301F0D7 -:10DD30000702C1F3C4019846F0F708FEFBF7E2BF03 -:10DD400005F5405595F89D37DE077BF5D9AFFC6AA0 -:10DD50003F2364217F2095F8A82711FB043101247B -:10DD60006C23B1FBF0F1C8B295F8A9170294002416 -:10DD700000900194A046D5F8900713F0F5FCFBF74E -:10DD8000C1BF01238DE49342B8BF1346FEF743BAE7 -:10DD90001721CC481CF09EFDCB481AF031FA002325 -:10DDA0009846C5F8DC31FBF7ADBF93427DF789A8F3 -:10DDB0009046FDF78AB8013B002C76D04345FDF62E -:10DDC00085A8DAB2FDF782B85FFA8BF84046FAF719 -:10DDD0006DFCBA69082A3FF690A9222305F540593F -:10DDE00002FB03F309EB030292F9741B0029C0F252 -:10DDF00085830023FB612223B96903FB019393F917 -:10DE0000742B42457FF479A993F8943B162B7FF449 -:10DE100074A90829D9F8702B00F0EE82FB6802EB98 -:10DE2000C30393F8F01093F8F23039627B62FB6819 -:10DE3000002107F1F808C3EBC303C8F80010C7F8C6 -:10DE40000411DBB287F80811D81DC7E93F11C0B231 -:10DE50004146D4180133DBB294F86840834201F89C -:10DE6000014BF6D10023C7E96733C7E9693387F867 -:10DE7000AC31FB68082B01D192F8E130C3EBC3034E -:10DE800007F5CE70DBB209EE100AD91DC9B2D4185D -:10DE90000133DBB294F8A1408B4200F8014BF6D17C -:10DEA000C6E2072B7EF7B5A934E44345B8BF434625 -:10DEB00087E743B1013BDBB2FFF709BB94F89E2033 -:10DEC000002A7FF4CEAE7C23FFF701BBFB69422B17 -:10DED00015D9BB6905F54059072B40F2228199F805 -:10DEE0000133082BFB6088BF4FF0370840F21981DF -:10DEF0005FFA88F8FBF706BF0024FEF7B1B943F2DA -:10DF00003020D7E906212844F8F732FC00283BF4FA -:10DF1000F7AE4FF06408FBF7F5BE05F54059072250 -:10DF20004FF0000AD9F8FC311B78D046FCF7BFBF90 -:10DF3000A1F10A0341F6FE707524796900FB03F331 -:10DF400005F5CE5091F833103A33B3FBF4F30024C7 -:10DF5000013300941BB2A04614F06AF8FBF7D2BE5E -:10DF6000B0427FF767AA31460E46FEF79CBB002AF7 -:10DF700000F08A80C01A8842FEF695ABC6B2FEF762 -:10DF800092BBFA690A3A042A3BF679AFDFE812F04D -:10DF90008A0BF50BDC0BD30BB40B05F5405595F84C -:10DFA000E03ADD077BF5ACAE4FF06408FBF7AABEA4 -:10DFB000A1F1450341F6FE703A24796900FB03F3B1 -:10DFC00005F5CE50BD691D3391F833100095A84674 -:10DFD000B3FBF4F301331BB214F02AF8FBF792BE43 -:10DFE0001346FEF77BBF94F89E20002A00F051866E -:10DFF0000133DBB22EE443F25430B9692844F9F717 -:10E0000073FA00283BF47CAE4FF06408FBF77ABE4D -:10E0100016FB08B107F1960051441EF075FEFFF79C -:10E02000BEB9DAF8FC17B2FA82F2284B0968520935 -:10E03000C1F340212275217607CBC7F8711033F860 -:10E040000C19C7F86D00C7F87520A7F87910A7F864 -:10E05000A21007CBC7F89600C7F89A10C7F89E2001 -:10E06000FFF79DB9F9F75AFAFBF74CBE8B427CF7E4 -:10E0700079AF0A46FCF779BF013B84B39342FCF6C3 -:10E0800075AFD9B2FCF772BFC31A8B42B8BF0B464B -:10E09000DEB2FEF708BB002A00F0C085002B00F0BE -:10E0A000BA85013B99B241E699F8722304F07F03E7 -:10E0B00099F871130095D9F8540313F0DBF9FEF7C2 -:10E0C000F5B800BF3C1F0020A84B0020B815002069 -:10E0D000541E9C42B8BF1C46A4B2FEF7D0B893426F -:10E0E000B8BF1346CDE7013399B21FE64FF064087D -:10E0F000FBF708BE43F254300A214FF000082844D1 -:10E10000F9F734FAFBF7FEBD0123BB62FEF769BAEB -:10E110001846FEF73BBA07F5CE7309EE103AFBF747 -:10E12000FDBFFB68642143F6FB1809EBC30241F60F -:10E13000FD43B2F90E2302F5005201FB023393FBBB -:10E14000F8F8002BB8BF08F1FF38D1E64FF0000A0D -:10E15000D046FCF7ACBED54A05F54051D44B43F64A -:10E16000383610684FF0000892882E44C7F86D00CA -:10E17000A7F871209A881868A7F8C3209A7991F8AF -:10E180005C3307F16001C7F8BF00684603F0010384 -:10E1900087F8C520952223751AF07CFC304694E858 -:10E1A0000E00FBF725FAFBF7ADBDC24A05F540515D -:10E1B000BF4B43F6383610684FF0000812792E44F2 -:10E1C000C7F86D0087F871209A881868A7F8C320EF -:10E1D0009A7991F85C3307F16001C7F8BF0068468F -:10E1E00003F0010387F8C520952223751AF052FC2D -:10E1F000304694E80E00FBF7FBF9FBF783BDAE4A0F -:10E2000043F63836AA4B07F1600110682E44928815 -:10E210004FF00008C7F86D00A7F8712018689A88B9 -:10E220009B79A7F8C3209522C7F8BF00684687F8F6 -:10E23000C5301AF02FFC304694E80E00FBF786F844 -:10E24000FBF760BD9D4A43F63836994B07F16001F4 -:10E2500010682E4492884FF00008C7F86D00A7F8A8 -:10E26000712018689A889B79A7F8C3209522C7F86F -:10E27000BF00684687F8C5301AF00CFC304694E8B9 -:10E280000E00FBF763F8FBF73DBDE37843F6383645 -:10E290008B4A07F1600123F004032E441068952295 -:10E2A00043F008034FF00008C7F86D006846E370BC -:10E2B0001AF0F0FB304694E80E00FAF755FDFBF734 -:10E2C00021BD804B804E07CB05F54053C7F86D004C -:10E2D000C7F8711093F8A3343068C7F8752013F0AD -:10E2E0000101B288C7F8BF00A7F8C32005D05807BE -:10E2F000C3F3800158BFC3F3C001E37843F6383657 -:10E300002175952223F004032E4407F1600168462D -:10E3100043F008034FF00008E3701AF0BBFB3046EF -:10E3200094E80E00FAF720FDFBF7ECBC674A43F6D1 -:10E3300038365F4B07F1600110682E4412794FF0B8 -:10E340000008C7F86D0087F8712018689A889B79D3 -:10E35000A7F8C3209522C7F8BF00684687F8C530E4 -:10E360001AF098FB304694E80E00FBF741F9FBF7F2 -:10E37000C9BC574A05F540514D4B43F63836106835 -:10E380004FF0000812792E44C7F86D0087F871200D -:10E390009A881868A7F8C3209A7991F8773307F11B -:10E3A0006001C7F8BF006846C3F3401387F8C52073 -:10E3B000952223751AF06EFB304694E80E00FBF7A9 -:10E3C00017F9FBF79FBC97F89C01FAF76FF9B7F8BC -:10E3D0009C41382097F8B03197F89F2100FB0454F6 -:10E3E00007F2B51543F63C5097F89E11009520446E -:10E3F000FAF7D2FBFBF7ABBE92F8E130082BFB60DB -:10E4000073D907F5CE72002307F1F80809EE102A38 -:10E41000C8F8003087F8AC31C7F8043187F8083104 -:10E420007B623B62C7E96733C7E96933C7E93F33BA -:10E430004046EA461EF04AFD064638B398F80030DA -:10E44000202B23D100F108030024024623F0070308 -:10E450002146ADEB030D0DF1B9008DF8B8401EF06B -:10E46000DBF92EA818F80430202B00F0C4804BB143 -:10E470000023611C18F80420CCB2C2540133A64218 -:10E48000DBB2F6DC014640461EF03EFC4046D54677 -:10E490001EF01CFD002855D007F1F7031B5C202B54 -:10E4A00048D108EB0003002117E000BFD41500207D -:10E4B00074220020AC220020A42200209C220020F4 -:10E4C000641F00202822002020220020CC150020DC -:10E4D0008C2200202ED801382CD013F8012D002AD0 -:10E4E000F9D0202AF6D11970F5E77FF497AC92F8AD -:10E4F00030313B6292F832317B6298E443F660340B -:10E500000021E81803F1150C2C441F3300F540508E -:10E5100004F80C10E1540123A0F88C1BFB6182F875 -:10E52000946BA2F88E1B82F8901BA2F8921B82F8C3 -:10E5300074BB60E440461EF0C9FC062802D90023E3 -:10E5400088F8063019EE100AEA461EF0BFFC0646AF -:10E5500090B397F89C31202B2ED100F108030024B2 -:10E56000024623F007032146ADEB030D0DF1B90080 -:10E570008DF8B8401EF050F92EA804F5047307F189 -:10E5800030029A1812F8A43C202B00F07D8273B15F -:10E590000023013412F8A41C5A1CE4B2C154D3B2B3 -:10E5A00007F1300104F50472A6420A44F1DC014689 -:10E5B00019EE100A1EF0A8FB19EE100AD5461EF03F -:10E5C00085FC38B300F5047307F13002134413F8E7 -:10E5D000A53C202B15D119EE103A0021034402E08E -:10E5E0000FD801380DD013F8012D002AF9D0202AB8 -:10E5F000F6D11970F5E70134E4B2A6423FF732AF25 -:10E6000040E719EE100A1EF061FC062802D900232B -:10E6100087F8A231382343F6383603FB0BFA2E4431 -:10E620000AF50173F318FB62FB69002B40F08C8143 -:10E63000BA6922230AF5047A404603FB02F343F643 -:10E640006032B244AA1803F115047B611444FA61E4 -:10E6500021461EF0EFF9002840F03B817B6919EE5E -:10E66000100AFC691F331C4421461EF0E3F9002800 -:10E6700040F0A380BB6922257A6A05FB039595F8D3 -:10E680008D3B934246D00C241E26D7F80C80D7F839 -:10E690002CB085F88D2B29E00CBF93F8E120424681 -:10E6A00003EBC20393F8F220C4F10D03DBB29A42EC -:10E6B00021D3B5F88E3B43FA04F2D20712D40121DC -:10E6C0000BF10C0032B201FA04FC43EA0C039BB2DA -:10E6D000A5F88E3B0123019102210091BB620C231E -:10E6E00015F01AFB023E013CB6B213D0B8F1080F88 -:10E6F000D9F8703BD0D9B5F88E3B43FA04F2D10774 -:10E70000F0D501220BF10C000021A24023EA020304 -:10E7100032B2DDE7BB6922243A6A04FB039494F821 -:10E72000903B934240D001251A26D7F80C80D7F8A9 -:10E730002CB084F8902B2FE093F8E12003EBC20378 -:10E7400093F8F030C3F30112022A53D0032A55D0B4 -:10E75000012A38D003F00F03EAB293423CD0B4F858 -:10E76000921B681E41FA00F3DA0710D5012300223C -:10E7700083400BF10C0021EA030331B2A4F8923B71 -:10E78000042301921A220093092315F0C5FA0B2DD8 -:10E790000ED009360135B6B2B8F1080FD9F8703B82 -:10E7A000DDD8C9D04246C9E7BB6A002B3EF4A5AC10 -:10E7B000504608F0C1FAFEF7A0BC19EE101A204628 -:10E7C0001EF0A2FA56E7062D03F00F03EAB259D065 -:10E7D000052A4CD99A42C2D8B4F8921B681E003B55 -:10E7E00041FA00F218BF012302F001029A42CED092 -:10E7F000ABB9BBE703F00F03EAB2EBE703F00F039B -:10E80000E9B203F1FF3CDCF1000040EB0C0006290B -:10E810000ED168B1B4F8921B8B06BAD40520012240 -:10E8200002FA00F30BF10C000B4331B29BB2A5E7E7 -:10E83000062BD1D8062901D0002890D1022B39D03F -:10E84000032B44D0042B40D0052B34D0062B29D0E9 -:10E850008B4284D1B4F8921B681E003B41FA00F24F -:10E8600018BF012302F001029A42D8D18FE79A42E1 -:10E8700008D2B4F8921B681E41FA00F3DB073FF59B -:10E8800075AF86E7B4F8921B681E003B41FA00F2B0 -:10E8900018BF012302F001029A423FF47AAF002B25 -:10E8A000BDD163E7B4F8921B681E41FA00F3DA07A2 -:10E8B000B5D56CE70022C2F10501A9423FF74FAF81 -:10E8C0000732AA42FFF64BAF86E70222F3E70122A6 -:10E8D000F1E7204641461EF017FA3823002507F1DC -:10E8E000340403FB0B93BB62002D00F0C280012DAA -:10E8F00077D0022D56D0CC49504616F0CFF80023E1 -:10E9000007F13A0241465046C4E90033039207F149 -:10E910003802029207F13602CDE900421A4616F09B -:10E92000A9F9A688B4F900B0692EB4F90220E388E9 -:10E9300006D802EB4301D018102909EE900A58DDE1 -:10E94000032D53D00135CFE7BA6922234FF6FF716B -:10E95000012403FB0293FA6AA3F8921B02F10C0054 -:10E96000A3F88E1B002220230192114600938023DE -:10E97000786215F0D1F9082318221921CDE9003465 -:10E980006523786A15F0C8F9FF2301944721786A56 -:10E990001A467B620423009309233A621A2215F077 -:10E9A000BBF945E6A149504616F078F8002307F177 +:10C410009E10003B019043F22020A47B18BF012313 +:10C4200028440094F9F774FFFDF7D7BC3DF487AFBB +:10C43000E381FB692382FDF782BF7DF4EBAF00222D +:10C44000E28103222282FDF7E5BF3EF437ABE381B0 +:10C45000FB692382FEF732BBD8200020684C002005 +:10C46000EC23002008BB0020012E7EF439AB207C99 +:10C470004FF0000894F8A03094F89F2094F89E1094 +:10C48000003B019043F22020A47B18BF01232844E5 +:10C490000094F9F7DFFFFDF7A0BC3DF47BAFE3812B +:10C4A000FB692382FDF776BFE289FDF7C8BF012E45 +:10C4B0007EF4DFAA207C4FF0000894F8A03094F8B6 +:10C4C0009F2094F89E10003B019043F22020A47B13 +:10C4D00018BF012328440094F9F77CFFFDF77DBCC9 +:10C4E000E089FEF77EBB7EF4BAAB0021E1817E21BC +:10C4F0002182FEF7B4BBE389FEF7C4BBBB69002B06 +:10C5000001F02B81BB69012B01F01085BB69022B67 +:10C510007DF461ACFB698AF86C391CF065FA0AF6A7 +:10C520008C130022CAF884091A60FDF756BCFA6918 +:10C53000072A3DF615ADDFE802F0261D1D040404B0 +:10C54000044405F54053FA6993F89333A2F10308C4 +:10C5500013F0010302F01C8543F27430B9692844DA +:10C56000F8F7E0FDA0EB0802D2F1000848EB020862 +:10C57000FDF733BC43F27430B9692844FAF784FFFD +:10C580008046FDF72ABC05F5405999F89333D90741 +:10C5900042F1EB8443F2CC410023294402E0013311 +:10C5A0005B2B0AD011F83320B8699042F7D14B4485 +:10C5B00093F8593403F00103BB62D7F82880FDF7E4 +:10C5C0000CBC05F5405393F89333DB077DF503ACC2 +:10C5D00043F27430B9692844F8F7A4FD8046FDF7AA +:10C5E000FCBBFB69013B102B3DF6BAAC01A252F833 +:10C5F00023F000BFD9E20000C7E20000ADE2000076 +:10C60000ADE20000ADE20000ADE20000ADE20000EE +:10C61000ADE20000ADE20000ADE20000D5BB0000DD +:10C62000D5BB0000D5BB0000D5BB0000D5BB0000CA +:10C63000D5BB0000ADE20000FB6A43F274304FF05E +:10C6400000081906284401F19F83FAF74BFFFDF714 +:10C65000C4BB43F274304FF000082844FAF742FF9D +:10C66000FDF7BBBB43F274304FF000082844FAF7E3 +:10C6700025FFFDF7B2BBFB69002B40F037859AF828 +:10C68000CC3A99077DF5A7AB4FF06408FDF7A5BB41 +:10C6900007F5CE73F969184609EE103AF9F778F9FB +:10C6A000A179284609F0E8FD94F89D30002B41F06F +:10C6B0009D80E37997F8B261B34204D397F8B361F0 +:10C6C0009E4228BF1E4619EE103A324627212846C0 +:10C6D00009F0ECFD3246A179284609F0B3FDDAF8FD +:10C6E000783803B198474FF00008FDF776BB4FF05C +:10C6F00064083A697F2308FB02F808F13F08B8FB99 +:10C70000F3F85FFA88F8FDF768BB05F540554FF080 +:10C7100064083F227F2395F8341818FB0128B8FBE2 +:10C72000F3F85FFA88F8FDF758BB05F54055642229 +:10C730004FF48778D5F8A8311B881E3B02FB03F322 +:10C74000873393FBF8F8002BB8BF08F1FF385FFA86 +:10C7500088F8FDF742BB4FF0FF08FDF73EBB4FF0F6 +:10C7600064083A697F2308FB02F808F13F08B8FB28 +:10C77000F3F85FFA88F8FDF730BBBB69002B40F097 +:10C78000898605F5405595F8008BC8F34008FDF7FC +:10C7900024BBFB6905F50054092B01F20F8194F8C5 +:10C7A000893C4FF00008F969E218013382F8861CD1 +:10C7B000DBB294F8861C94F8872C032B01EB8101E3 +:10C7C00094F8880C02EB820228BF434601EB8101FA +:10C7D000520084F8893C02EB81028318A4F8843C5F +:10C7E000FDF7FBBA002343F25020D7E90621284485 +:10C7F00000939846F2F734FAFDF7EFBA05F5405981 +:10C8000099F8B431DE077DF5E6AAC1484FF4FA6124 +:10C81000D9F8CC310268A9F8D411C9F8D8211BB9CC +:10C82000D9F8D031C9F8CC31DFEDBA6A99F8C8210E +:10C83000D9E97331CB1A07EE903A531C09EB820207 +:10C84000F8EE677ADBB2012B86EEA77AB7EEC77AED +:10C85000B8FE477BFDEEC77BF8EEE77AC2ED707A53 +:10C8600089F8C831C9F8CC117DF6B5AA99ED707A6E +:10C87000F6EE007A9FEDA86A0022D9ED716A05F5FF +:10C88000475537EE067A89F8DC2189F8C8212A60F5 +:10C8900037EE267A6A60B9F8BC11C9F8D82127EEBC +:10C8A000277A89F8BE21B7EEC77AB8FE477BBDEE7E +:10C8B000C77B17EE103A9BB299423DF48CAAA3F1C4 +:10C8C0001E01B1F5877F3DF686AA64240168904673 +:10C8D000A9F8BC31A9F8AC31A9F8E441C9F8E811CC +:10C8E000FDF77BBA42F6BC402844F9F7DBF9DAF8E9 +:10C8F0007838002B3DF46FAA4FF000089847FDF7F9 +:10C900006CBA7B6905F5CE5093F833103B69009300 +:10C91000FB6903F00F02BB69CDF80480013215F00A +:10C9200097FAA279217A284602F00F02E379009162 +:10C93000B021013209F038FDFDF74FBAFB6905F56A +:10C94000CE507969002503F00F02BB6991F83310CE +:10C95000A846013203F07F03029600932B4601950F +:10C96000C7E90A2014F062FF7969202391F8331097 +:10C97000CDE90156247ABA6A04F07F04F86A00947B +:10C9800014F054FFFDF729BAFB6903F00308B8F16E +:10C99000010F01F09F81B8F1020F01F07081B8F131 +:10C9A000000F7DF4DDAA17215C4805F540551EF007 +:10C9B00005F85B481BF09AFCC5F8FC81FDF70DBA41 +:10C9C0007B694FF00008386993F83310FB6903F076 +:10C9D0000F02BB69009005F5CE50013215F032FD13 +:10C9E000A279E379D021247A02F00F02284601329D +:10C9F000009409F0D9FCFDF7F0B97C6828463B6942 +:10CA00004FF00008D7E906210094F4F73DF8FDF750 +:10CA1000E4B97B6905F5CE5093F833103B69009378 +:10CA2000FB6903F00F02BB69CDF80480013215F0F9 +:10CA3000B9F8A279217A284602F00F02E379009131 +:10CA4000B021013209F0B0FCFDF7C7B9FB6905F56B +:10CA5000CE507D6903F00F02BB6995F833100132A7 +:10CA6000029603F07F030026009320230196B04630 +:10CA7000C7E90A2014F0DAFE237A95F83310BA6A6F +:10CA800003F07F03F86A009614F05AFDFDF7A5B98C +:10CA9000FB6905F5CE507D6903F00F02BB6995F87F +:10CAA00033100132029603F07F03002600933346D1 +:10CAB0000196B046C7E90A2014F0B8FE237A95F82B +:10CAC0003310BA6A03F07F03F86A009614F038FD59 +:10CAD000FDF783B97B69002093F8331080463B69EA +:10CAE0000093FB6903F00F02BB69019005F5CE507E +:10CAF000013215F0CFFDA279217A284602F00F020B +:10CB0000E3790091A021013209F04EFCFDF765B9EF +:10CB100008BB0020C0E1644C000000003C1F002066 +:10CB2000684C00207B6905F5CE5093F83310FB6903 +:10CB300003F00F02BB69CDF80480FE6A0132009653 +:10CB400015F030F8A279E379B02102F00F022846FF +:10CB50000096013209F028FCFDF73FB905F5405574 +:10CB60004FF0640803220723D5F82812097818FB30 +:10CB70000128B8FBF3F85FFA88F8FDF72EB905F540 +:10CB800040554FF0640803220723D5F83012097886 +:10CB900018FB0128B8FBF3F85FFA88F8FDF71DB918 +:10CBA000C8F38008FDF719B9BB69012B41F2518028 +:10CBB0009AF8CC3A4FF0000883F004038AF8CC3A94 +:10CBC000FDF70BB9B9690129F96A00F0FC87092959 +:10CBD00001F2BA8103EB831305EB430404F580549F +:10CBE00094F9CE3A002B3DF4F6A800267B6905F5B2 +:10CBF000CE5093F8331033460096B04615F07EFAC7 +:10CC000084F8CE6ADAF8C82AD36D43F02003D365DE +:10CC1000FDF7E3B805F540554FF0640807220F23F0 +:10CC2000D5F82C12097818FB0128B8FBF3F85FFA45 +:10CC300088F8FDF7D2B87B6905F5CE5093F833102C +:10CC4000FB6903F00F02BB69CDF80480FE6A013274 +:10CC5000009615F0FDF8A279E379B02102F00F02F9 +:10CC600028460096013209F09FFBFDF7B6B8A2797D +:10CC7000A846637A796902F00F0203F07F0391F806 +:10CC800033100132009514F05BFCFDF7A6B89CF858 +:10CC90000080C1F30D01A1EB0800D0F1000848EBC2 +:10CCA0000008FDF79AB89CF800204FF064080223B2 +:10CCB00018FB0238C8F38708FDF78FB805F5405513 +:10CCC0004FF064083F227F2395F8341818FB0128A1 +:10CCD000B8FBF3F85FFA88F8FDF77FB84FF0640807 +:10CCE0003F227F2318FB0928B8FBF3F85FFA88F886 +:10CCF000FDF773B8207C4FF0000894F8A03094F84A +:10CD00009F2094F89E10003B019043F22020A47BCA +:10CD100018BF012328440094F9F79CFBFDF75DB888 +:10CD2000FB69013B152B3DF61BA901A252F823F02C +:10CD3000D9E20000C7E20000FDE90000FDE90000C3 +:10CD4000FDE90000FDE90000FDE90000FDE900004B +:10CD5000FDE90000FDE90000ED0D0100D90D010025 +:10CD6000C50D0100B10D01009D0D0100890D0100EF +:10CD7000FDE90000630D01004F0D01003B0D0100B6 +:10CD8000290D0100E30E010005F5405393F89323AC +:10CD9000D2077DF520A893F8C33443F2743013F022 +:10CDA0000103284441F09C820122112100939846FE +:10CDB000F2F7D4FCFDF711B8BB69002B40F0958366 +:10CDC00005F5405595F8003B9E077DF504A84FF00A +:10CDD0006408FDF702B8FB69022B21D8002B41F053 +:10CDE000428005F5405999F89333DE0741F12287D7 +:10CDF00043F2CC41FB69294403E001335B2B3CF453 +:10CE0000EAAF11F83320B8699042F6D14B4493F859 +:10CE10005934DC077CF5DFAF4FF06408FCF7DDBF69 +:10CE2000FB69033B052B3DF69BA805F5405393F8A2 +:10CE3000933313F0010806D043F27430B9692844E3 +:10CE4000F8F770F9804608F1010808EB880808EB4C +:10CE500088085FFA88F8FCF7C0BF207C4FF0000814 +:10CE600094F8A03094F89F2094F89E10003B019015 +:10CE700043F22020A47B18BF012328440094F9F733 +:10CE8000A9FAFCF7AABFFB69092B7DF469A805F58F +:10CE9000405595F8BD37DC077CF59DAFFC6A3F2314 +:10CEA00064217F2095F8C82711FB043101246D23EC +:10CEB000B1FBF0F1C8B295F8C917029400240090B4 +:10CEC0000194A046D5F8B00714F0B0FCFCF785BF7C +:10CED000002B40F08785DAF85C3803F00103002B63 +:10CEE0000CBF4FF0FF084FF00208FCF776BF4FF081 +:10CEF00064083F227F2318FB0028B8FBF3F85FFA91 +:10CF000088F8FCF76ABFB046FCF767BF3B69284466 +:10CF1000D7E906219846FAF77FFBFCF75EBFFB696D +:10CF20000F2B3CF658AF05F54051C24BDAF8FC2701 +:10CF30004FF00008D1F82C621868F9691B79C7F81E +:10CF4000BF0087F8C3308BB2126863813078C2F3B8 +:10CF5000402243F22026A3EB000A22762E4401222F +:10CF6000DAF10003A081E275304643EB0A0307F1D2 +:10CF70006D022375F9F706FB07F19602217B304617 +:10CF800043F65836F9F7FEFAAB4A07F1E0032E44B0 +:10CF900092E80300022283E8030084F89C2007F152 +:10CFA0006001952268461BF0E9FD304694E80E00CA +:10CFB000FBF7ACFEFCF711BFA04B61811868C7F806 +:10CFC000BF0098889B79A7F8C30087F8C530002A6E +:10CFD00000F0D187B9F8AC33CE1AA381DAF8FC2778 +:10CFE00007F16D0073427341237513680A46944933 +:10CFF000C3F3402323761FF003FB99F89333DB0739 +:10D0000040F1048643F2B03107F1960029441FF045 +:10D01000EBFE8B4A042143F658364FF0000884F8A3 +:10D020009C102E4492E803009522C7F8E000080CFB +:10D03000A7F8E41007F1600187F8E60068461BF0E6 +:10D040009DFD304694E80E00FBF760FEFCF7C5BE80 +:10D050007C4B1FFA88F218689B886281A7F8C3305E +:10D0600099F89333C7F8BF00DE0740F12287DAF85A +:10D07000FC37112643F2AC3A4FF0250B1B6816FB28 +:10D0800008B8AA44C3F340230AEB0801237699F8B1 +:10D09000AE33D01A9846A3814242424107F16D0057 +:10D0A00022751FF0A1FEB8F1070F40F2F986664A1B +:10D0B000012143F658364FF0000884F89C102E44A6 +:10D0C00092E803009522C7F8E000080CA7F8E410E6 +:10D0D00007F1600187F8E60068461BF04FFD304617 +:10D0E00094E80E00FBF712FEFCF777BE9AF8CC3AF4 +:10D0F0005A077CF570AE4FF06408FCF76EBE94F8EA +:10D10000A01043F2502094F89E304FF000080C1EFF +:10D11000BA69F969284418BF01240094FAF724F881 +:10D12000FCF75BBEE27843F65836484B4FF00008F8 +:10D1300022F004022E4442F00802E27005F540524B +:10D14000D2F8FC21003A18BF0122227507CB1B78C8 +:10D15000C7F86D006846C7F8711007F16001C7F89D +:10D160007520952287F879301BF008FD304694E849 +:10D170000E00FBF7CBFDFCF730BEDAF85C3843F667 +:10D180005836334A4FF00008C3F3001331492E4498 +:10D190002375E3780868918823F00403C7F86D00CD +:10D1A000A7F8C31043F00803106891799522C7F8D7 +:10D1B000BF00684687F8C51007F16001E3701BF0F7 +:10D1C000DDFC304694E80E00FBF7A0FDFCF705BE41 +:10D1D00005F5405394F89E0094F89F1093F89343FC +:10D1E000E4077CF5F8AD93F8AE33FFF7F1B87B694F +:10D1F0000020FE6A93F833108046BB69019001203D +:10D200000096029005F5CE5014F010FBA279E37958 +:10D21000B02102F00F0228460096013209F0C4F84E +:10D22000FCF7DBBDE67C162E00F010874FF00008FF +:10D23000FCF7D3BD90200020982000200020002083 +:10D24000BC2200200C200020B4220020541F00200B +:10D25000741F0020741C0020FB69072B3CF6BBAD3B +:10D2600005F54051C8481E469BB200684FF00108C2 +:10D27000D1F8281243F65839C7F8BF0063810878FF +:10D280003146DAF8FC271E1A12687342A081C2F3F5 +:10D29000402284F81780734143F22026227607F15A +:10D2A0006D022E4423753046F9F714F907F1960202 +:10D2B000217B3046F9F70EF9B44A07F1E00384F810 +:10D2C0009C804FF0000892E80300952283E8030059 +:10D2D00007F1600168461BF051FC09EB050094E87A +:10D2E0000E00FBF713FDFCF778BDFB69072B3CF63E +:10D2F00072AD05F54051A64BDAF8FC274FF0010856 +:10D30000D1F830621868F9691B79C7F8BF0087F84F +:10D31000C3308BB212686381307843F22026C2F3A7 +:10D32000402284F81780A3EB000E2E44227607F1EA +:10D330006D02DEF10003A081304643EB0E0323753E +:10D34000F9F77EF907F19602217B304643F658360D +:10D35000F9F776F98F4907F1E0032E44952284F816 +:10D360009C804FF0000803C983E8030007F16001C7 +:10D3700068461BF003FC304694E80E00FBF7C6FC41 +:10D38000FCF72BBD05F54052834907F16D0043F6CC +:10D39000583692F851384FF0000892F850282E4431 +:10D3A0001FF02EF97D4AE37803CA23F00403C7F87F +:10D3B000BF00108843F00803C7F8C310952207F197 +:10D3C0006001A7F8C7006846E3701BF0D7FB304642 +:10D3D00094E80E00FBF79AFCFCF7FFBC704BF96970 +:10D3E00018689B88C7F8BF00A7F8C330032914D872 +:10D3F000DFE801F0352B400205F54051BE693B697D +:10D4000091F8AB0713443244811B484248416549B7 +:10D41000207507F16D001FF0F3F8E37843F65836F6 +:10D4200007F16001952223F004032E4468464FF073 +:10D43000000843F00803E3701BF0A0FB304694E8BB +:10D440000E00FBF763FCFCF7C8BC574B03CB1B88F3 +:10D45000C7F86D00C7F87110A7F87530DDE7534BBA +:10D4600018689A889B79A7F87120C7F86D0087F82B +:10D470007330D2E7E37813F0040F05F5405301F061 +:10D48000788593F8AB3707F16D0049491A441FF0CE +:10D49000B7F8C2E7BB69012B00F03485BB69022BEA +:10D4A0007CF499AC05F5405595F8008B08F001081F +:10D4B00088F00108FCF791BC7B6905F5CE5093F824 +:10D4C0003310002300939846FE6A334614F038F870 +:10D4D000A279FF24334602F00F02C02128460094AF +:10D4E000013208F061FFFCF778BCBB69012B00F04A +:10D4F0007585BB69022B7CF46EAC05F5405595F83B +:10D50000003BDC073CF567AC4FF06408FCF765BCFA +:10D5100005F5405243F20C209846D2F81C222844CC +:10D520001278F1F713FAFCF758BCBB69591EC9B25F +:10D53000FCF712BFBB69591EC9B2FDF780BC1D4B79 +:10D540004FF00008E1781E889B78A7F8BF604E076F +:10D5500043F6583687F8C13048BFE07107F16D00D7 +:10D56000E3792E4414491FF04BF8C02307F1600102 +:10D570009522684663711BF001FB304694E80E006B +:10D58000FBF78EF8FCF729BC8420002088200020BF +:10D59000A0200020A8200020B01F0020BC1F0020D9 +:10D5A000D4220020F8220020E4220020DC220020E7 +:10D5B000F022002050150020B41E0020D14907F1B0 +:10D5C0006D001FF01DF8A2793C21E37843F6583630 +:10D5D00001FB025241F66C1123F004032E44505C0F +:10D5E00007F1600143F00803952220756846E37057 +:10D5F0001BF0C4FA304694E80E00FBF787FBFCF7FB +:10D60000ECBB05F5405292F8BD3713F0010300F072 +:10D61000408494F89E1092F8CA37002900F03484B0 +:10D620007B2B88BF002340F22B84653343F2B0701C +:10D63000BA694FF00008D9B22844FAF79FF9FCF70D +:10D64000CCBBDAB2FCF767BF05F50056AE4907F16F +:10D650006D00B6F8842C1EF0D3FFE37C162B7EF40D +:10D6600083A85FFA8BF105F54053382096F8892C92 +:10D6700000FB013393F9601D8A4218BF83F8602DC7 +:10D68000FEF772B8123B012B3CF66AAC94F89E1080 +:10D6900043F2B0707F224FF0000812312844C9B223 +:10D6A000FAF76CF9FCF799BBBB69591EC9B2FDF7D3 +:10D6B000DDB9E27843F65836944B4FF0000822F07B +:10D6C00004022E4403CB42F00802C7F86D006846FE +:10D6D000E2701A889B78A7F875209522C7F8711018 +:10D6E00007F1600187F877301BF048FA304694E87C +:10D6F0000E00FBF70BFBFCF770BBBA6907F1BF002C +:10D70000834943F658361EF07BFFE378A2794FF049 +:10D71000000858077F4902F00F02E37948BF84F8F8 +:10D720000890207A0132009007F16D001EF068FF2A +:10D73000B02307F160019522684663711BF01EFA61 +:10D74000701994E80E00FAF7ABFFFCF746BB9BB2EA +:10D75000FCF77FBD1046FCF778BD9AF86C3983F072 +:10D7600001038AF86C391BF03FF90AF68C1300228A +:10D77000CAF884091A60FCF730BBBB69082B00F2B9 +:10D78000E18305F5405904BF99F82133FB60FB683C +:10D7900009EBC30393F8303313F00F0300F0D28387 +:10D7A0000B2BA8BF0B2303F1FF3864220A2302FBD3 +:10D7B00008F808F10508B8FBF3F85FFA88F8FCF7F9 +:10D7C0000CBB43F2A47094F89E10D7F81080284444 +:10D7D000F9F7FEFFFCF701BBBB69591EC9B2FDF7A3 +:10D7E0007CB9BB695A1ED2B2FCF7E1BD94F89EC069 +:10D7F00097F8B21197F8B36197F8B43194F89F2075 +:10D80000BCF1000F00F0F3841844002A00F0E88413 +:10D81000B04202DC884200DBC1B20E46FEF753BFC5 +:10D82000FB690B3B0A2B3CF69BAB01A252F823F0A1 +:10D83000F1F40000F1F40000D5BB00001D0E010062 +:10D84000E1F40000D1F40000D5BB0000D5BB00001E +:10D85000D5BB0000E1F40000D1F4000005F540550F +:10D8600095F8BD87C8F38018FCF7B7BA05F54055A1 +:10D8700095F8BD87C8F34018FCF7AFBA05F54055D9 +:10D8800095F8BD3713F001083CF4A7AAC3F380084C +:10D89000FCF7A3BA05F5405143F20C209846D1F8A5 +:10D8A000181228440978F1F751F8FCF796BA013BB1 +:10D8B000002900F038849342BEF695AD0722FEF7AA +:10D8C00093BD05F5405292F8BD3713F0010300F007 +:10D8D000118394F89E1092F8CA37002901F0298329 +:10D8E0007B2B88BF002340F20A83653343F2B0707C +:10D8F000BA694FF00008D9B22844FAF73FF8FCF7AC +:10D900006CBA00BF2C20002058260020141F0020D5 +:10D91000C01E0020C81E0020FB69822207F1F80803 +:10D92000214603F00F03404602FB03A34FF0640AB5 +:10D93000A12293F8CE9A3F23A4F80EA01AFB09392E +:10D940007F23B9FBF3F9A4F80A901BF017F9E47CE4 +:10D9500053463E654A467E6307F13400D749C7E91E +:10D960000E66C7E91066C7E9126600961EF048FE0B +:10D9700007F134001FF02AFB002800F06583C0B2D5 +:10D9800007F13402314601F1050C12F8013B013177 +:10D990006344C9B25E408842F6B2F4D84640162CC1 +:10D9A00000F04C844FF00008FCF717BA1A46C4493F +:10D9B00007F16D001EF024FEFDF7D6BE94F8893CF9 +:10D9C000022B40F2A782002384F8893CFB690A3BC2 +:10D9D000042B3CF6B7AADFE813F09C0A990ABB0AAD +:10D9E000B20A790ADAF85C38C3F34003FFF777BA72 +:10D9F000E37823F0040343F00803E370FB69642B2E +:10DA000000F2AD811A46642A3DF6BAAC01A353F880 +:10DA100022F000BF79080100931301008113010077 +:10DA2000C3130100BF130100BB130100A3130100C6 +:10DA30007F1401006F1401006B14010065140100D4 +:10DA40003F1401001514010001140100D31301005B +:10DA500069130100471301002D1301000F1301008A +:10DA6000EF120100DF120100B9120100F5CF000032 +:10DA7000F5CF0000F5CF0000F5CF0000F5CF000096 +:10DA8000F5CF0000F5CF0000F5CF0000F5CF000086 +:10DA9000F5CF0000F5CF0000F5CF0000F5CF000076 +:10DAA000F5CF0000F5CF0000F5CF0000F5CF000066 +:10DAB000F5CF0000F5CF0000F5CF0000F5CF000056 +:10DAC000F5CF0000F5CF0000F5CF0000F5CF000046 +:10DAD000F5CF0000F5CF0000F5CF0000F5CF000036 +:10DAE000F5CF0000F5CF0000F5CF0000F5CF000026 +:10DAF000F5CF0000F5CF0000F5CF0000F5CF000016 +:10DB0000F5CF0000F5CF0000F5CF0000F5CF000005 +:10DB1000F5CF0000F5CF0000F5CF0000F5CF0000F5 +:10DB2000F5CF0000F5CF0000F5CF0000F5CF0000E5 +:10DB3000F5CF0000F5CF0000F5CF0000F5CF0000D5 +:10DB4000F5CF0000F5CF0000F5CF0000F5CF0000C5 +:10DB5000F5CF0000F5CF0000F5CF0000F5CF0000B5 +:10DB6000F5CF0000F5CF0000F5CF0000F5CF0000A5 +:10DB7000F5CF0000F5CF0000F5CF0000F5CF000095 +:10DB8000F5CF0000F5CF0000F5CF0000F5CF000085 +:10DB9000F5CF0000F5CF0000F5CF0000F5CF000075 +:10DBA000F5CF0000A312010089B207F16D0001EB6F +:10DBB000011101F5CF6129441FF016F9FCF7E8B90E +:10DBC0000023FCF75BBA092900F2D88103EB831329 +:10DBD00005EB430404F5805494F9CE3A002B3CF451 +:10DBE000FAA800267B6905F5CE5093F8331033462A +:10DBF0000096B04614F082FA84F8CE6ADAF8C82AA1 +:10DC0000D36D43F02003D365FCF7E7B82D4B07CB6A +:10DC10001B88C7F89600C7F89A10C7F89E20A7F887 +:10DC2000A230FFF7F6B97B69C1EB413B3A2405F519 +:10DC3000CE5093F833100BF11D03BD69B3FBF4F321 +:10DC4000A3F500530095A8461BB214F057FAFCF751 +:10DC5000C4B8BB6813F001089AF8CC3A00F0988079 +:10DC600043F004034FF000088AF8CC3AFCF7B5B84B +:10DC70003A8BFDF760BE4FF03208FDF7AABA05F502 +:10DC80004055D5F8FC41002C40F0A48095F80832AE +:10DC9000002B3CF4A0A818210B481CF08FFE0B4869 +:10DCA0001AF024FB0A4B4FF49672A0461B68A5F8A5 +:10DCB000F821C5F8FC31FCF790B800BF74150020BE +:10DCC00030200020B81500208C290020684C00204E +:10DCD00008BB002005F5405595F80832002B3CF4B0 +:10DCE0007AA8D5F8FC41002C7CF475A8D049A04650 +:10DCF000D048F7F703FBCF481AF0F8FACE4B4FF4B1 +:10DD000096721B68A5F8F821C5F8FC31FCF765B8D8 +:10DD1000BB6813F0010F9AF8CC3A14BF43F002032A +:10DD200023F002038AF8CC3AFCF757B8002800F039 +:10DD30003D82511E9942FEF6C4AA8CB2FEF7C1BACA +:10DD40008C4200F26681002C3EF4ACAA0023FEF760 +:10DD5000ABBA013B9342A8BFD9B2FCF7A6B9FB69A5 +:10DD6000E22B01F0D084E32B7DF40AABB34B03CB61 +:10DD70001A889B78C7F86D00A7F87520C7F871104E +:10DD800087F87730FDF7FCBAF9F798FBFCF725B870 +:10DD900023F004038AF8CC3AFCF71FB8A1F145033D +:10DDA00041F6FE703A24796900FB03F305F5CE5085 +:10DDB000BD691D3391F833100095A846B3FBF4F309 +:10DDC00001331BB214F09AF9FCF707B808F1FF38D9 +:10DDD000FDF7FFB917219A481CF0F0FD95481AF09D +:10DDE00085FA00239846C5F8FC31FBF7F6BF072BF0 +:10DDF0007EF7F7AA62E505F5405595F8BD37DE07D1 +:10DE00007BF5E9AFFC6A3F2364217F2095F8C827A2 +:10DE100011FB043101246C23B1FBF0F1C8B295F879 +:10DE2000C9170294002400900194A046D5F8B007C9 +:10DE300013F0FCFCFBF7D1BFFB69422B40F2C2811F +:10DE4000BB6905F54059072B41F21E8199F8213332 +:10DE5000082BFB6088BF4FF0370841F215815FFA4D +:10DE600088F8FBF7BABF43F27430B9692844F9F770 +:10DE70000BFB00283BF4AFAF4FF06408FBF7ADBFDE +:10DE80000133DBB2FFF7D1BB3BB1013BDBB2FFF7A4 +:10DE9000CCBB94F89E20002AF2D17C23FFF7C5BBAF +:10DEA00016FB08B107F1960051441EF09DFFFFF7E5 +:10DEB000FEB8DAF8FC17B2FA82F2624B096852092E +:10DEC000C1F340212275217607CBC7F8711033F8D2 +:10DED0000C19C7F86D00C7F87520A7F87910A7F8D6 +:10DEE000A21007CBC7F89600C7F89A10C7F89E2073 +:10DEF000FFF7DDB894F89E20002A01F01780013367 +:10DF0000DBB2F2E405F5405595F8008B08F0010806 +:10DF1000FBF763BFFA690A3A042A3CF613A8DFE864 +:10DF200012F0F807E80117080E08D5078AF86C39CF +:10DF30001AF05AFD0AF68C130022CAF884091A60F6 +:10DF4000FBF74BBF01232EE4A1F10A0B7B69752679 +:10DF50000024ABEB4B3B93F8331005F5CE50009407 +:10DF6000ABF13A03A04693FBF6F3013B1BB214F06E +:10DF7000C5F8FBF732BF1346FFF72EB8A1F10A032D +:10DF800041F6FE707524796900FB03F305F5CE5068 +:10DF900091F833103A33B3FBF4F3002401330094C7 +:10DFA0001BB2A04614F0AAF8FBF717BF8B427CF710 +:10DFB000DBAF0A46114604E0013B5CB1934200DB53 +:10DFC000D9B2D9F81C22002312789846F0F7BEFC8B +:10DFD000FBF703BF9342B8BF1346F1E705F5405581 +:10DFE00095F8003BDD077BF5F6AE4FF06408FBF7D4 +:10DFF000F4BE93427DF719A89046FDF71AB8013B8D +:10E00000002C00F09F804345FDF614A8DAB2FDF71E +:10E0100011B80024FEF746B905F5405907224FF024 +:10E02000000AD9F81C321B78D046FCF7F4BF00BFB9 +:10E030008C290020684C002008BB0020F82100201B +:10E040003C1F0020B81500200646A8E45FFA8BF8B4 +:10E050004046FAF7FDFABA69082A3FF6E7A82223F4 +:10E0600005F5405902FB03F309EB030292F9941BF7 +:10E070000029C0F2A7820023FB612223B96903FBB8 +:10E08000019393F9942B42457FF4D0A893F8B43BC5 +:10E09000162B7FF4CBA80829D9F8902B00F02E82FC +:10E0A000FB6802EBC30393F8F01093F8F230396287 +:10E0B0007B62FB68002107F1F808C3EBC303C8F8D3 +:10E0C0000010C7F80411DBB287F80811D81DC7E9A2 +:10E0D0003F11C0B24146D4180133DBB294F8684016 +:10E0E000834201F8014BF6D10023C7E96733C7E942 +:10E0F000693387F8AC31FB68082B01D192F8E13025 +:10E10000C3EBC30307F5CE70DBB209EE100AD91DCD +:10E11000C9B2D4180133DBB294F8A1408B4200F8A5 +:10E12000014BF6D107E29342B8BF1346FEF75BB945 +:10E1300005F5405907210026D9F818321B783246D8 +:10E14000FCF708BF4345B8BF43465FE7A1427EF7EF +:10E15000B4A82346FEF7B4B899F8922304F07F03DD +:10E1600099F891130095D9F8740313F0E9F9FEF7C3 +:10E17000BFB805F5405343F20C2094F89E10D3F835 +:10E180001432284494F89F201B88B1B1002A3DD056 +:10E190003E2B40F21B870021002301F00702C1F350 +:10E1A000C4019846F0F7D2FBFBF717BE541E9C4201 +:10E1B000B8BF1C46A4B2FEF784B862B34BB3013BB0 +:10E1C00099B2E9E743F25020D7E906212844F8F74D +:10E1D0009FFA00283BF4FFAD4FF06408FBF7FDBD4C +:10E1E000B0427FF717AB31460E46FEF76CBA32B13C +:10E1F000C01A8842FEF667AAC6B2FEF764BAC31A0E +:10E200008B42B8BF0B46DEB2FEF75DBA3E2B40F242 +:10E21000DD863F21C0E7013B23EAE37399B2BBE708 +:10E22000B54B03CB1A889B78C7F86D00A7F875200B +:10E23000C7F8711087F87730FDF796BA5FFA8BF060 +:10E240004FF00009FAF704FA0523A12288F81340D9 +:10E2500088F80530414607F5CE70A8F800B088F878 +:10E26000026005F54054A8F810901AF087FC382396 +:10E2700003FB0BF31C4494F85E2DB2423FF492ABC7 +:10E280002B4443F66855B4F8642D07F5D0711D444E +:10E29000B4F8623D3A8668467B86012384F85E6D59 +:10E2A00020262B9380239D22CDF8B090CDF8A0900E +:10E2B000CDE929361AF062FCD7F89C3107F1320219 +:10E2C00007F130012846F7F729F8284608F0A6FD9F +:10E2D0003A8E7B8EA4F8642DA4F8623DFFF762BBF2 +:10E2E000002311211A4600939846F1F737FAFBF7FD +:10E2F00074BD002B00F00A86013BDBB284F8893C38 +:10E30000D4F88C3C5B693BB194F8802CB4F8840C55 +:10E31000D2070FD501469847FB690A2B3BF45BAD4A +:10E32000103B062B3BF61CAEDFE803F0AC99C57240 +:10E33000593809000028EDD0411E89B2EBE794F965 +:10E34000843CB4F8846C002BFBF645ADDAF8FC375E +:10E35000F6B205F5CE5A4FF00008DA68334650465B +:10E36000C2F38312541C7A6992F83310224614F0D7 +:10E3700077FF7A698146012392F83310504622468E +:10E3800002933346CDE9009813F050FA4B463246DB +:10E390002146284608F08AF8FBF71FBD94F9843C13 +:10E3A000B4F8846C002BFBF616ADDAF8FC37F6B245 +:10E3B0007A69002092F833108046DA68334600907C +:10E3C00005F5CE50C2F38312541C224613F0B8F860 +:10E3D00032462146284608F03DF8FBF7FEBC94F88B +:10E3E000803CB4F8842CD8077BD505F5405393F8CE +:10E3F0009333D9077BF5EFAC002343F27430D2B2EC +:10E400000C21284400939846F1F7A8F9FBF7E5BCE6 +:10E4100094F8803CB4F8842CDE0740F1A28305F523 +:10E42000405393F89333DC077BF5D5AC002343F2DC +:10E430007430D2B20C21284400939846F1F78EF93B +:10E44000FBF7CBBCD80903F07F0C84F89E0084F85E +:10E45000A0C0BCF1000F7BF45EADFBF757BD94F894 +:10E46000803C43F20C20B4F8841CDC07284418D507 +:10E47000002301F00702C1F3C4019846F0F766FAE1 +:10E48000FBF7ABBC94F8803CB4F8841CDE070DD5D8 +:10E490000023C9B228461A46984605F07DF8FBF7D6 +:10E4A0009CBC0029E4D0013989B2E1E70029EFD012 +:10E4B000013989B2ECE794F8803CB4F8841CDA079F +:10E4C00014D505F5405393F89333DB077BF583AC04 +:10E4D00043F274304FF000082844F6F739FEFBF79A +:10E4E0007CBC002A81D0013A92B27EE70029E8D0B4 +:10E4F000013989B2E5E700BFFC1F002092F8E13046 +:10E50000082BFB6040F2238307F5CE72002307F14E +:10E51000F80809EE102AC8F8003087F8AC31C7F8BF +:10E52000043187F808317B623B62C7E96733C7E98A +:10E530006933C7E93F334046EA461EF047FD0646C9 +:10E5400038B398F80030202B23D100F108030024C1 +:10E55000024623F007032146ADEB030D0DF1B90090 +:10E560008DF8B8401EF0CCF92EA818F80430202BF6 +:10E5700000F0E7824BB10023611C18F80420CCB2F4 +:10E58000C2540133A642DBB2F6DC014640461EF01F +:10E590002BFC4046D5461EF019FDB0B307F1F7033A +:10E5A0001B5C202B29D108EB0003002102E024D8BA +:10E5B000013822D013F8012D002AF9D0202AF6D1F3 +:10E5C0001970F5E70021E81805F56E5403F1150CF4 +:10E5D0001F3300F5405004F80C10E1540123A0F85B +:10E5E000AC1BFB6182F8B46BA2F8AE1B82F8B01BC7 +:10E5F000A2F8B21B82F894BB3FE540461EF0E6FC51 +:10E60000062802D9002388F8063019EE100AEA46D7 +:10E610001EF0DCFC064690B397F89C31202B2ED1DF +:10E6200000F108030024024623F007032146ADEB66 +:10E63000030D0DF1B9008DF8B8401EF061F92EA858 +:10E6400004F5047307F130029A1812F8A43C202B49 +:10E6500000F0718273B10023013412F8A41C5A1C1B +:10E66000E4B2C154D3B207F1300104F50472A642FA +:10E670000A44F1DC014619EE100A1EF0B5FB19EE52 +:10E68000100AD5461EF0A2FC08B300F5047307F18A +:10E690003002134413F8A53C202B0FD119EE103A89 +:10E6A0000021034402E009D8013807D013F8012DF6 +:10E6B000002AF9D0202AF6D11970F5E719EE100AD0 +:10E6C0001EF084FC062802D9002387F8A2313823E3 +:10E6D00043F6583603FB0BFA2E440AF50173F31880 +:10E6E000FB62FB69002B40F08681B969222305F5A6 +:10E6F0006E520AF5047A03FB01F34046B244FA6114 +:10E7000003F115047B61144421461EF003FA00282E +:10E7100040F036817B6919EE100AFD691F331D44F4 +:10E7200029461EF0F7F9002840F0A380BB69222596 +:10E730007A6A05FB039595F8AD3B934246D00C24CD +:10E740001E26D7F80C80D7F82CB085F8AD2B29E021 +:10E750000CBF93F8E120424603EBC20393F8F2208A +:10E76000C4F10D03DBB29A4221D3B5F8AE3B43FAB4 +:10E7700004F2D20712D401210BF10C0032B201FADB +:10E7800004FC43EA0C039BB2A5F8AE3B01230191C4 +:10E7900002210091BB620C2315F034FB023E013CC8 +:10E7A000B6B213D0B8F1080FD9F8903BD0D9B5F86C +:10E7B000AE3B43FA04F2D207F0D501220BF10C0074 +:10E7C0000021A24023EA020332B2DDE7BB69222422 +:10E7D0003A6A04FB039494F8B03B934240D001257D +:10E7E0001A26D7F80C80D7F82CB084F8B02B2FE07D +:10E7F00093F8E12003EBC20393F8F030C3F3011266 +:10E80000022A53D0032A55D0012A38D003F00F032F +:10E81000EAB293423CD0B4F8B21B681E41FA00F34E +:10E82000DA0710D50123002283400BF10C0021EA06 +:10E83000030331B2A4F8B23B042301921A220093DD +:10E84000092315F0DFFA0B2D0ED009360135B6B2CB +:10E85000B8F1080FD9F8903BDDD8C9D04246C9E7D6 +:10E86000BB6A002B3EF4E2AC504608F0D7FAFEF744 +:10E87000DDBC19EE101A28461EF0B6FA56E7062D32 +:10E8800003F00F03EAB254D0052A47D99A42C2D8FE +:10E89000B4F8B21B681E003B41FA00F218BF012316 +:10E8A00002F001029A42CED0ABB9BBE703F00F03EE +:10E8B000EAB2EBE703F00F03E9B203F1FF3CDCF14E +:10E8C000000040EB0C0006290ED168B1B4F8B21B71 +:10E8D0008B06BAD40520012202FA00F30BF10C00DA +:10E8E0000B4331B29BB2A5E7062BD1D8062901D044 +:10E8F000002890D1022B34D0032B3FD0042B3BD0E7 +:10E90000052B2FD0062B24D0994284D1B4F8B21B0A +:10E91000681E41FA00F3DA07DDD596E79A4208D27D +:10E92000B4F8B21B681E41FA00F3DB073FF57AAF7B +:10E930008BE7B4F8B21B681E003B41FA00F218BF27 +:10E94000012302F001029A423FF47FAF002BC2D1B3 +:10E9500068E7B4F8B21B681E41FA00F3DB07BAD5CA +:10E9600071E70022C2F10501A9423FF754AF073217 +:10E97000AA42FFF650AF8BE70222F3E70122F1E74C +:10E98000204641461EF030FA3823002507F13404B2 +:10E9900003FB0B93BB62002D00F0C280012D77D0EA +:10E9A000022D56D0C849504616F0EEF8002307F164 :10E9B0003A0241465046C4E90033039207F1380257 -:10E9C000029207F13602CDE900421A4616F052F9DA -:10E9D000A688B4F900B0692EB4F90220E388B1D852 -:10E9E000A7E79349504616F059F8DFE71A4409EEB5 -:10E9F000902AC3F11003B6EE006BB3EE008B002437 -:10EA000007EE903A102317210122B8EEE77B50461B -:10EA1000CDE90034A7EE468B692315F07DF9CBF1E3 -:10EA20006903FA6A40469B1BB7EE007B82F82740D9 -:10EA3000B8EEE96B03EBD3735B10173338EE077B4B -:10EA400093834FF0011337EE467B1362BDEEC77B15 -:10EA500017EE103A1BB2102BA8BF1023D3831EF061 -:10EA600035FA41460246504619F070FB0123BB625D -:10EA7000F4E5BB6A93F83D3D3F2B7FF663AF6D49EC -:10EA8000504616F00BF891E70134E4B2B442FFF6B9 -:10EA900074AD8CE5684B03CBC7F86D00C7F87110F7 -:10EAA000FCF7F8BD654B03CBC7F86D00C7F87110D4 -:10EAB000FCF7F0BD4FF00008FBF724B905F5405214 -:10EAC0005F4B92F89D27C2F34012227503CB1B883F -:10EAD000C7F86D00C7F87110A7F87530FCF7A8BB30 -:10EAE00005F54052574B92F89D6707CBC7F8711058 -:10EAF000B106C7F86D00C7F8752004D4C6F38016B8 -:10EB000086F00103BB62BB6A2375FCF791BB4E4BD9 -:10EB100007CBC7F86D00C7F87110C7F87520FCF770 -:10EB200087BB4A4A05F540531068117993F89D2731 -:10EB3000C7F86D0012F0010387F8711018BFC2F317 -:10EB4000800383F001032375FCF772BB404A05F58F -:10EB50004053106893F89D379288C7F86D00A7F866 -:10EB6000712013F0010218BFC3F380022275FCF775 -:10EB70005FBB384BFFF768B8374B18689A889B79AA -:10EB8000A7F87120C7F86D0087F87330FCF750BB09 -:10EB9000324B03CBC7F86D00C7F87110FCF748BBC8 -:10EBA0002F4B1868C7F86D00FCF742BB2D4BE4E70C -:10EBB0002D4B8BE72D4B07CB1B78C7F86D00C7F8A3 -:10EBC0007110C7F8752087F87930FCF731BB284BF6 -:10EBD00003CBC7F86D00C7F87110FCF729BB254BB4 -:10EBE00018689B88C7F86D00A7F87130FCF720BB48 -:10EBF000214B03CBC7F86D00C7F87110FCF718BBA9 -:10EC00001E4B03CBC7F86D00C7F87110FCF710BBA3 -:10EC10003E2B7FF668AA3F21FFF788B8013B23EA25 -:10EC2000E37399B2FFF782B804FF0060F4FE00605E -:10EC3000E4FE0060D4FE00601C20002014200020B0 -:10EC400074210020682100205C2100201839002058 -:10EC500004390020502100204821002040210020BC -:10EC600020340020382100202C2100201C210020ED -:10EC7000142100200C210020FC2000200421002071 -:10EC8000022401230A2100949846F0F767FDFBF760 -:10EC900039B87C23FEF7DEBDD80903F07F0C84F879 -:10ECA0009E0084F8A0C0BCF1000F7BF4D1A8FBF754 -:10ECB000CAB8CE4B18689A889B79A7F87120C7F814 -:10ECC0006D0087F87330FCF7E5BCC94B18689B886A -:10ECD000C7F86D00A7F87130FCF7DCBCC54BE9E75D -:10ECE000C54B1868C7F86D00FCF7D4BC43F254302C -:10ECF00009214FF000082844F8F738FCFBF702B868 -:10ED000005F5405393F87333DB077AF5F9AF002329 -:10ED100043F2543010211A46284400939846F0F7E5 -:10ED20001DFDFAF7EFBF43F2543007214FF0000802 -:10ED30002844F8F71BFCFAF7E5BF43F254300621EC -:10ED40004FF000082844F8F711FCFAF7DBBF43F254 -:10ED5000543005214FF000082844F8F707FCFAF773 -:10ED6000D1BF43F2543004214FF000082844F8F793 -:10ED7000FDFBFAF7C7BF43F2543001214FF0000802 -:10ED80002844F8F7F3FBFAF7BDBF43F254300221F1 -:10ED90004FF000082844F8F7E9FBFAF7B3BF002664 -:10EDA0003246FCF7D5B8954B03CB1A889B78C7F849 -:10EDB0006D00A7F87520C7F8711087F87730FCF759 -:10EDC00069BC05F5405595F89D37990604D4C3F301 -:10EDD000801383F00103BB62D7F82880FAF792BF53 -:10EDE0000123002099F8A82799F8A9170093CDE9E5 -:10EDF00001035023D9F8900712F0B6FCFCF754BA7F -:10EE00007F4B43F638367F4A4FF000082E4403CB41 -:10EE100005F54053C7F8711093F8A334C7F86D0097 -:10EE200013F001011068928818BFC3F34001E37822 -:10EE3000C7F8BF00684623F00403A7F8C320217574 -:10EE4000952243F0080307F16001E37019F022FEF8 -:10EE5000304694E80E00F9F787FFFAF753BF6A4B84 -:10EE600043F63836674A4FF0000818682E441B797D -:10EE7000C7F86D0087F8713005F54053106893F8B6 -:10EE8000A334928813F00101C7F8BF00A7F8C3208C -:10EE9000684618BFC3F38001E378952223F004038A -:10EEA000217507F1600143F00803E37019F0F2FDEA -:10EEB000304694E80E00F9F757FFFAF723BF534B9B -:10EEC000504A03CB05F54053C7F86D0093F8A334BF -:10EED0001068C7F8711013F001019288C7F8BF00DD -:10EEE000A7F8C32005D05E071CD4C3F3C00383F08A -:10EEF0000101E37843F638362175952223F00403A7 -:10EF00002E4407F16001684643F008034FF0000803 -:10EF1000E37019F0BFFD304694E80E00F9F724FFC6 -:10EF2000FAF7F0BE0021E4E743F6383607F1600156 -:10EF3000952268462E4419F0ADFD4FF0000830468A -:10EF400094E80E00FAF7E6F8FAF7DCBE304A43F62A -:10EF50003836304B4FF000082E4403CB9388C7F867 -:10EF60006D00A7F8C33005F54053106893F8773368 -:10EF70009279C3F30013C7F87110C7F8BF0007F107 -:10EF8000600187F8C52068469522237519F082FD37 -:10EF9000304694E80E00FAF72BFBFAF7B3BE1C4B91 -:10EFA00005F540511C4A43F638364FF0000810680A -:10EFB0002E449A88C7F86D00A7F8C32018689A797C -:10EFC00091F8773307F16001C7F8BF006846C3F3D3 -:10EFD000800387F8C5209522237519F05BFD304624 -:10EFE00094E80E00FAF704FBFAF78CBE002000202C -:10EFF000F41F0020EC1F0020E81F0020FC1F002051 -:10F000003C22002020220020342200201822002050 -:10F01000742200208422002080220020E14B05F58C -:10F020004051E14A43F638364FF0000810682E444C -:10F030009A88C7F86D00A7F8C32018689A7991F8E4 -:10F04000773307F16001C7F8BF00684603F001039A -:10F0500087F8C5209522237519F01CFD304694E8E9 -:10F060000E00FAF7C5FAFAF74DBED04A05F5405141 -:10F07000CC4B43F6383610684FF0000812792E4416 -:10F08000C7F86D0087F871209A881868A7F8C32020 -:10F090009A7991F8773307F16001C7F8BF006846A5 -:10F0A000C3F3400387F8C5209522237519F0F2FCBD -:10F0B000304694E80E00FAF79BFAFAF723BEBC4BF1 -:10F0C00043F63836BB4A4FF000082E4403CB1B787A -:10F0D000C7F8711087F8753005F54053C7F86D0013 -:10F0E00093F8A334106813F001019288C7F8BF00A9 -:10F0F000684618BFC3F34011E378A7F8C3209522F0 -:10F1000023F00403217507F1600143F00803E37065 -:10F1100019F0C0FC304694E80E00F9F725FEFAF726 -:10F12000F1BDA54B43F63836A24A4FF000082E44F5 -:10F1300003CB05F54053C7F8711093F8A334C7F813 -:10F140006D0013F001011068928818BFC3F300111D -:10F15000E378C7F8BF00684623F00403A7F8C3208C -:10F160002175952243F0080307F16001E37019F05F -:10F1700091FC304694E80E00F9F7F6FDFAF7C2BDAF -:10F180008E4B43F638368B4A4FF0000818682E44F1 -:10F190009B88C7F86D00A7F8713005F540531068DB -:10F1A00093F8A334928813F00101C7F8BF00A7F8C1 -:10F1B000C320684618BFC3F3C001E378952223F04B -:10F1C0000403217507F1600143F00803E37019F0AF -:10F1D00061FC304694E80E00F9F7C6FDFAF792BDDF -:10F1E000E37805F54052764E43F6383923F00403B0 -:10F1F00092F8A324A9444FF0000843F00803E370F9 -:10F2000002F00103952223756A4B9988A7F8C31071 -:10F2100003CEC7F86D0018683378C7F8711007F18E -:10F220006001C7F8BF00684687F8753019F032FCF6 -:10F23000484694E80E00F9F797FDFAF763BD614A76 -:10F2400005F54051574B43F6383610684FF000082B -:10F2500012792E44C7F86D0087F871209A881868D3 -:10F26000A7F8C3209A7991F8773307F16001C7F8BE -:10F27000BF006846C3F3401387F8C5209522237565 -:10F2800019F008FC304694E80E00FAF7B1F9FAF7E5 -:10F2900039BD5FFA8BF04FF00009F9F707FA052343 -:10F2A000A12288F8134088F80530414607F5CE7052 -:10F2B000A8F800B088F8026005F54054A8F810904E -:10F2C00019F0E8FB382303FB0BF31C4494F83E2DA4 -:10F2D000B2423EF47EAB2B4443F64855B4F8442D7D -:10F2E00007F5D0711D44B4F8423D3A8668467B86E6 -:10F2F000012384F83E6D20262B9380239D22CDF898 -:10F30000B090CDF8A090CDE9293619F0C3FBD7F81D -:10F310009C3107F1320207F130012846F6F72EF84A -:10F32000284607F009FD3A8E7B8EA4F8442DA4F8F8 -:10F33000423DFEF74EBB05F54053234E93F89D37F3 -:10F34000C3F3801323750FCEC7F86D00C7F8711093 -:10F35000C7F87520C7F87930FBF76ABF05F5405349 -:10F360001A4E93F89D37C3F34013EBE7184B186818 -:10F37000C7F86D00FCF78EB9164B1B88A7F86D30E7 -:10F38000FCF788B9144B1B88A7F86D30FCF782B9DD -:10F39000124B18689B88C7F86D00A7F87130FCF70E -:10F3A00079B900BF742200207C2200206C2200204A -:10F3B000602200202022002058220020502200201D -:10F3C00044220020942200209C2100208021002043 -:10F3D000E41F0020E01F0020DC1F0020D4150020C7 -:10F3E000BE4BFFF773BBBE4BFEF72EBCDB077BF5B6 -:10F3F0005BAF0123002099F8A82799F8A91700937B -:10F40000CDE901035123D9F8900712F0ADF9FBF7CC -:10F410004BBF4FF0000889F8AC47FAF773BCB14B0B -:10F4200007CBC7F8711019889B78C7F86D00A7F84B -:10F430007910C7F8752087F87B30FBF7F9BEAA4E24 -:10F440000FCEC7F871103178C7F86D00C7F8752076 -:10F45000C7F8793087F87D10FBF7EABEA34BFFF7BA -:10F46000AABB05F54052A24B92F89D27C2F3801229 -:10F47000227507CBC7F86D00C7F87110C7F8752063 -:10F48000FBF7D6BE002311211A4600939846F0F7E9 -:10F4900065F9FAF737BCB86993F88B370244954998 -:10F4A000A3EB000C07F16D00DCF1000343EB0C0350 -:10F4B00023751DF031F8FDF765BE022384F8693C21 -:10F4C000D4F86C3C5B693BB194F8602CB4F8640CE4 -:10F4D000D2070FD501469847FB690A2B3AF410ACC6 -:10F4E000103B062B3AF6D9ACDFE803F0C3B08B72C1 -:10F4F000593809000028EDD0411E89B2EBE794F994 -:10F50000643CB4F8646C002BFAF6FAABDAF8FC371A -:10F51000F6B205F5CE5A4FF00008DA683346504689 -:10F52000C2F38312541C7A6992F83310224613F006 -:10F5300021FE7A698146012392F833105046224613 -:10F5400002933346CDE9009812F00EF94B4632464D -:10F550002146284606F038FFFAF7D4BB94F9643CFC -:10F56000B4F8646C002BFAF6CBABDAF8FC37F6B2E1 -:10F570007A69002092F833108046DA6833460090AA -:10F5800005F5CE50C2F38312541C224611F072FFCF -:10F5900032462146284606F0EBFEFAF7B3BB94F854 -:10F5A000603CB4F8642CD80741D505F5405393F876 -:10F5B0007333D9077AF5A4AB002343F25430D2B2A7 -:10F5C0000C21284400939846F0F7C8F8FAF79ABB44 -:10F5D00094F8603CB4F8642CDE072DD505F5405353 -:10F5E00093F87333DC077AF58BAB002343F2543086 -:10F5F000D2B20C21284400939846F0F7AFF8FAF7FE -:10F6000081BB94F8603CB4F8641CDA0719D505F5A1 -:10F61000405393F87333DB077AF572AB43F25430FF -:10F620004FF000082844F5F75BFDFAF76BBB002AA2 -:10F63000BBD0013A92B2B8E7002ACFD0013A92B2D9 -:10F64000CCE70029E3D0013989B2E0E794F8603CC7 -:10F6500043F2EC10B4F8641CDC07284418D50023EE -:10F6600001F00702C1F3C4019846EFF76FF9FAF70A -:10F6700049BB94F8603CB4F8641CDE070DD5002348 -:10F68000C9B228461A46984603F020FFFAF73ABB5B -:10F690000029E4D0013989B2E1E70029EFD001392E -:10F6A00089B2ECE742F6604300222B44A4F8642CB4 -:10F6B00084F8692CDA801A7202E743F6383607F1CB -:10F6C0006001952268462E4419F0E4F994E80E0092 -:10F6D0003046FAF721F9FAF715BB00BFE021002008 -:10F6E000EC210020D0210020BC210020AC210020F2 -:10F6F00090210020F022002094F8692CA31893F8A0 -:10F70000663C082B26D80133DBB2224482F8663CE3 -:10F7100094F8663C03EB830303EB830294F8673CA5 -:10F7200003EB83035B0003EB820394F8682C134420 -:10F73000A4F8643CC4E694F8692CA31893F8663CDA -:10F7400053B1013BDBB2E0E794F8693C012B05D9EA -:10F750000023B3E60023D8E70923D6E70133DBB261 -:10F76000ACE6002B3FF495AA013BDBB2FEF772B882 -:10F77000D9F8F4311B88FBF77ABC002B3FF49DAE1F -:10F78000013BDBB29AE643F254300021284488461C -:10F79000F7F7ECFEFAF7B6BA43F2543008214FF00F -:10F7A00000082844F7F7E2FEFAF7ACBA4FF0010878 -:10F7B000FAF7A8BA94F8602CB4F8640CD10705D510 -:10F7C00001464FF000089847FAF79CBA0028F7D096 -:10F7D000411E89B2F5E700BF70B504464078FF28A6 -:10F7E00040F00A81FF290D4600F00781E67818F005 -:10F7F00075FEE3882289D21A002A00F0E381A0EB8B -:10F8000003031146B8BF511CDB0103EB610303FB8B -:10F8100002F193FBF2F30029B8BF03F1FF33DBB22F -:10F820001946B342E37000F0C7810122002016465A -:10F830002071A37865700344B3FBF6F3DEB2881B36 -:10F840000028B8BF40420A28C8BF8B192178C8BF1A -:10F850005B10FF2A01F01201A370A5F10E0308BF8F -:10F86000002221700D2B227140F2A0810021C64898 -:10F870001BF030F8C54818F0C3FC2E21C4481BF01B -:10F8800029F8C24818F0BCFC2E21C1481BF022F810 -:10F89000BE4818F0B5FC2E21BD481BF01BF8BB4834 -:10F8A00018F0AEFC2E21BA481BF014F8B74818F037 -:10F8B000A7FC0121B7481BF00DF80421B6481BF046 -:10F8C00009F8B24818F09CFC0121B2481BF002F87C -:10F8D00000230A222946AD4818F0AEFCAB4818F0C8 -:10F8E0008FFC0121AB481AF0F5FF4521AB481AF017 -:10F8F000F1FFA64818F084FC2E21A5481AF0EAFF73 -:10F90000A24818F07DFC2E21A1481AF0E3FF9F4881 -:10F9100018F076FC2E219E481AF0DCFF9B4818F068 -:10F920006FFC2E219A481AF0D5FF984818F068FC11 -:10F93000002195481AF0CEFF944818F061FC002190 -:10F9400091481AF0C7FF914818F05AFC2E219048B0 -:10F950001AF0C0FF8D4818F053FC2E218C481AF085 -:10F96000B9FF8A4818F04CFC2E2189481AF0B2FFE2 -:10F97000864818F045FC2E2185481AF0ABFF8348D5 -:10F9800018F03EFC012183481AF0A4FF1821844896 -:10F990001AF0A0FF7D4818F033FC01217D481AF0D1 -:10F9A00099FF3F217F481AF095FF784818F028FC0E -:10F9B0002E2177481AF08EFF744818F021FC2E2172 -:10F9C00073481AF087FF714818F01AFC2E2170480E -:10F9D0001AF080FF6D4818F013FC2E216C481AF0C5 -:10F9E00079FF6A4818F00CFC002167481AF072FF92 -:10F9F000664818F005FCFEE770BD002162481AF069 -:10FA000069FF624818F0FCFB2E2161481AF062FF82 -:10FA10005E4818F0F5FB2E215D481AF05BFF5B484D -:10FA200018F0EEFB2E215A481AF054FF574818F0F0 -:10FA3000E7FB2E2156481AF04DFF544818F0E0FB22 -:10FA4000012154481AF046FF042153481AF042FF9E -:10FA50004E4818F0D5FB01214E481AF03BFF002319 -:10FA60000A222946494818F0E7FB484818F0C8FB25 -:10FA7000012148481AF02EFF47214B481AF02AFF6F -:10FA8000424818F0BDFB2E2141481AF023FF3F48A1 -:10FA900018F0B6FB2E213E481AF01CFF3B4818F028 -:10FAA000AFFB2E213A481AF015FF384818F0A8FB92 -:10FAB0002E2137481AF00EFF344818F0A1FB002120 -:10FAC00031481AF007FF314818F09AFB00212E4800 -:10FAD0001AF000FF2D4818F093FB2E212C481AF045 -:10FAE000F9FE2A4818F08CFB2E2129481AF0F2FE64 -:10FAF000264818F085FB2E2125481AF0EBFE2348F6 -:10FB000018F07EFB2E2122481AF0E4FE1F4818F060 -:10FB100077FB01211F481AF0DDFE182120481AF05A -:10FB2000D9FE1A4818F06CFB01211A481AF0D2FECF -:10FB30003F211C481AF0CEFE144818F061FB2E211C -:10FB400013481AF0C7FE114818F05AFB2E2110482E -:10FB50001AF0C0FE0D4818F053FB2E210C481AF085 -:10FB6000B9FE0A4818F04CFB2E2109481AF0B2FEE3 -:10FB7000064818F045FB002103481AF0ABFE034885 -:10FB800018F03EFBFEE700BF583C0020A84B0020C9 -:10FB900050190020EC230020801900202C1A00208E -:10FBA000D0190020EC1900208819002028460221D5 -:10FBB000BDE8704018F00ABF267906FB01F0013657 -:10FBC000F2B236E640210B462BE600BF38B543784B -:10FBD000FF2B40F0D680FF290C4600F0E580272956 -:10FBE0000546417040F2C680002166481AF072FE58 -:10FBF000654818F005FB2E2164481AF06BFE624838 -:10FC000018F0FEFA2E2161481AF064FE5E4818F0E2 -:10FC1000F7FA2E215D481AF05DFE5B4818F0F0FA05 -:10FC20002E215A481AF056FE574818F0E9FA0121D9 -:10FC300057481AF04FFE042156481AF04BFE52481E -:10FC400018F0DEFA012152481AF044FE00230A227D -:10FC500021464D4818F0F0FA4B4818F0D1FA01212E -:10FC60004B481AF037FE46214B481AF033FE4648FF -:10FC700018F0C6FA2E2145481AF02CFE424818F01A -:10FC8000BFFA2E2141481AF025FE3F4818F0B8FA75 -:10FC90002E213E481AF01EFE3B4818F0B1FA2E21E4 -:10FCA0003A481AF017FE384818F0AAFA00213548E9 -:10FCB0001AF010FE344818F0A3FA002131481AF067 -:10FCC00009FE314818F09CFA2E2130481AF002FE45 -:10FCD0002D4818F095FA2E212C481AF0FBFD2A48E1 -:10FCE00018F08EFA2E2129481AF0F4FD264818F053 -:10FCF00087FA2E2125481AF0EDFD234818F080FAE6 -:10FD0000012123481AF0E6FD182124481AF0E2FDEB -:10FD10001D4818F075FA01211D481AF0DBFD3F213E -:10FD20001F481AF0D7FD184818F06AFA2E21174814 -:10FD30001AF0D0FD144818F063FA2E2113481AF077 -:10FD4000C9FD114818F05CFA2E2110481AF0C2FDC6 -:10FD50000D4818F055FA2E210C481AF0BBFD0A4840 -:10FD600018F04EFA002107481AF0B4FD064818F0C2 -:10FD700047FAFEE70221204618F028FE094B1B68CF -:10FD80006B6038BD583C0020A84B00205019002063 -:10FD9000EC23002080190020741A0020D0190020C4 -:10FDA000EC190020E8BA0020002162481AF092FD08 -:10FDB000614818F025FA2E2160481AF08BFD5E4844 -:10FDC00018F01EFA2E215D481AF084FD5A4818F0EA -:10FDD00017FA2E2159481AF07DFD574818F010FAED -:10FDE0002E2156481AF076FD534818F009FA0121E1 -:10FDF00053481AF06FFD042152481AF06BFD4E482B -:10FE000018F0FEF901214E481AF064FD00230A2281 -:10FE10002146494818F010FA474818F0F1F9012135 -:10FE200047481AF057FD472147481AF053FD42480A -:10FE300018F0E6F92E2141481AF04CFD3E4818F022 -:10FE4000DFF92E213D481AF045FD3B4818F0D8F95E -:10FE50002E213A481AF03EFD374818F0D1F92E21EC -:10FE600036481AF037FD344818F0CAF900213148F5 -:10FE70001AF030FD304818F0C3F900212D481AF06F -:10FE800029FD2D4818F0BCF92E212C481AF022FD2E -:10FE9000294818F0B5F92E2128481AF01BFD2648EC -:10FEA00018F0AEF92E2125481AF014FD224818F05A -:10FEB000A7F92E2121481AF00DFD1F4818F0A0F9CE -:10FEC00001211F481AF006FD182120481AF002FDF2 -:10FED000194818F095F9012119481AF0FBFC3F2147 -:10FEE0001B481AF0F7FC144818F08AF92E21134821 -:10FEF0001AF0F0FC104818F083F92E210F481AF080 -:10FF0000E9FC0D4818F07CF92E210C481AF0E2FCAF -:10FF1000094818F075F92E2108481AF0DBFC06484C -:10FF200018F06EF9002103481AF0D4FC024818F0CA -:10FF300067F9FEE7583C0020A84B0020501900202C -:10FF4000EC2300208019002088190020D0190020FF -:10FF5000EC19002070B500F54054054694F8E03ADD -:10FF6000DA0740F1D18094F8E10A002118F02EFD63 -:10FF700094F8E20A012118F029FD94F8E20A01211F -:10FF800018F0E8FC022194F8E30A18F01FFD94F839 -:10FF9000ED0A94F8EF6A18F0A1FAB4F8F21AB4F87E -:10FFA000F42A521A002A00F0BF80A0EB0103114688 -:10FFB000B8BF511CDB0103EB610303FB02F193FBB0 -:10FFC000F2F30029B8BF03F1FF33DBB2B3421946A5 -:10FFD00084F8EF3A00F0AF8001220020164684F842 -:10FFE000F00A94F8EE3A0344B3FBF6F3DEB2881B52 -:10FFF0000028B8BF40420A2800F3818084F8EE3A16 +:10E9C000029207F13602CDE900421A4616F0C8F964 +:10E9D000A688B4F900B0692EB4F90220E38806D8FD +:10E9E00002EB4301D018102909EE900A58DD032DDF +:10E9F00053D00135CFE7BA6922234FF6FF710124C6 +:10EA000003FB0293FA6AA3F8B21B02F10C00A3F80D +:10EA1000AE1B0022202301921146009380237862CE +:10EA200015F0F0F9082318221921CDE900346523E7 +:10EA3000786A15F0E7F9FF2301944721786A1A46AE +:10EA40007B620423009309233A621A2215F0DAF953 +:10EA50004BE69E49504616F097F8002307F13A021C +:10EA600041465046C4E90033039207F1380202924E +:10EA700007F13602CDE900421A4616F071F9A68870 +:10EA8000B4F900B0692EB4F90220E388A8D9B0E740 +:10EA90008F49504616F078F8DFE71A4409EE902ABD +:10EAA000C3F11003B6EE006BB3EE008B002407EE4B +:10EAB000903A102317210122B8EEE77B5046CDE9AA +:10EAC0000034A7EE468B692315F09CF9CBF169035E +:10EAD000FA6A40469B1BB7EE007B82F82740B8EEEF +:10EAE000E96B03EBD3735B10173338EE077B93832B +:10EAF0004FF0011337EE467B1362BDEEC77B17EE76 +:10EB0000103A1BB2102BA8BF1023D3831EF05EFA5D +:10EB100041460246504619F08FFB0123BB62F9E5DE +:10EB2000BB6A93F85D3D3F2B7FF663AF6949504662 +:10EB300016F02AF891E70134E4B2A6423FF780AD1F +:10EB400098E50134E4B2A6423FF70FAD1DE57FF42E +:10EB5000A7AA92F830313B6292F832317B62FFF71C +:10EB6000A8BA002A3FF45BAC013A92B257E40026FF +:10EB70003246FCF7EFB9584B584A03CB05F54053E2 +:10EB8000C7F86D0093F8C3341068C7F8711013F01C +:10EB900001019288C7F8BF00A7F8C32005D05E071F +:10EBA0002ED4C3F3C00383F00101E37843F6583653 +:10EBB0002175952223F004032E4407F16001684675 +:10EBC00043F008034FF00008E37019F0D7FF304618 +:10EBD00094E80E00FAF79AF8FBF7FFB843F65836B8 +:10EBE00007F16001952268462E4419F0C7FF4FF0E7 +:10EBF0000008304694E80E00FAF7F0FAFBF7EDB89B +:10EC00000021D2E7364B03CBC7F86D00C7F871106F +:10EC1000FCF7B6BB43F6583607F16001952268460B +:10EC20002E4419F0ABFF94E80E003046FAF7D8FEF8 +:10EC3000FBF7D3B84FF06408FBF7CFB8294A43F687 +:10EC40005836294B07F1600110682E4492884FF026 +:10EC50000008C7F86D00A7F8712018689A889B799A +:10EC6000A7F8C3209522C7F8BF00684687F8C530CB +:10EC700019F084FF304694E80E00FAF7CBFBFBF75F +:10EC8000ACB81A4A43F65836174B07F160011068C2 +:10EC90002E4492884FF00008C7F86D00A7F8712045 +:10ECA00018689A889B79A7F8C3209522C7F8BF00F7 +:10ECB000684687F8C53019F061FF304694E80E00C9 +:10ECC000FAF7A8FBFBF789B804FF0060F4FE0060C8 +:10ECD000E4FE0060D4FE0060182200202022002004 +:10ECE00004210020A4220020742200209C22002065 +:10ECF000E37843F65836D44A07F1600123F0040361 +:10ED00002E441068952243F008034FF00008C7F81E +:10ED10006D006846E37019F031FF304694E80E004C +:10ED2000F9F7F4FFFBF759B8C84BC94E07CB05F507 +:10ED30004053C7F86D00C7F8711093F8C3343068BA +:10ED4000C7F8752013F00101B288C7F8BF00A7F813 +:10ED5000C32005D05807C3F3800158BFC3F3C001D7 +:10ED6000E37843F658362175952223F004032E44A8 +:10ED700007F16001684643F008034FF00008E370B4 +:10ED800019F0FCFE304694E80E00F9F7BFFFFBF7E0 +:10ED900024B8B04A43F65836AF4B07F1600110680B +:10EDA0002E4412794FF00008C7F86D0087F87120E3 +:10EDB00018689A889B79A7F8C3209522C7F8BF00E6 +:10EDC000684687F8C53019F0D9FE304694E80E0041 +:10EDD000FAF772FCFBF701B8A04A05F540519E4BCB +:10EDE00043F6583610684FF0000812792E44C7F8E1 +:10EDF0006D0087F871209A881868A7F8C3209A795F +:10EE000091F8973307F16001C7F8BF006846C3F374 +:10EE1000401387F8C5209522237519F0AFFE3046C0 +:10EE200094E80E00FAF748FCFAF7D7BF8A4A43F68F +:10EE300058368B4B4FF000082E4403CB9388C7F80D +:10EE40006D00A7F8C33005F54053106893F8973369 +:10EE50009279C3F30013C7F87110C7F8BF0007F128 +:10EE6000600187F8C52068469522237519F086FE53 +:10EE7000304694E80E00FAF71FFCFAF7AEBF764B67 +:10EE800005F54051774A43F658364FF000081068B0 +:10EE90002E449A88C7F86D00A7F8C32018689A799D +:10EEA00091F8973307F16001C7F8BF006846C3F3D4 +:10EEB000800387F8C5209522237519F05FFE304640 +:10EEC00094E80E00FAF7F8FBFAF787BF94F8892C5C +:10EED000A31893F8863C082B26D80133DBB22244D2 +:10EEE00082F8863C94F8863C03EB830303EB8302B1 +:10EEF00094F8873C03EB83035B0003EB820394F8F5 +:10EF0000882C1344A4F8843CFFF7FAB90223FFF7D6 +:10EF1000F5B9002305F53252A4F8843C84F8893C05 +:10EF2000D3801372FFF7ECB90023D8E77C23FEF7F8 +:10EF3000DCBC002BFAD0013BDBB2FEF7D6BC94F868 +:10EF4000892CA31893F8863C4BB1013BDBB2C6E792 +:10EF500094F8893C012B04D90023FFF7CFB909238A +:10EF6000BDE70133DBB2FFF7C9B90123BB62FDF78F +:10EF700024BBB86993F8AB3702443B49181A4342A3 +:10EF8000434107F16D0023751DF03AFBFEF745BACA +:10EF90001846FDF7E7BA354B1868C7F86D00FCF75F +:10EFA000E3BB334B1B88A7F86D30FCF7DDBB314B5F +:10EFB0001B88A7F86D30FCF7D7BB2F4B18689B88D0 +:10EFC000C7F86D00A7F87130FCF7CEBB013399B2DA +:10EFD000FFF7E2B8294B03CBC7F86D00C7F87110F3 +:10EFE000FCF7C2BB264B03CBC7F86D00C7F8711006 +:10EFF000FCF7BABB234A05F54051174B43F6583688 +:10F0000010684FF0000812792E44C7F86D0087F899 +:10F0100071209A881868A7F8C3209A7991F89733D5 +:10F0200007F16001C7F8BF006846C3F3401387F8D3 +:10F03000C5209522237519F0A1FD304694E80E00F5 +:10F04000FAF73AFBFAF7C9BE641F00202822002015 +:10F0500020220020CC150020742200208C220020C9 +:10F060008422002080220020F0220020E41F0020C3 +:10F07000E01F0020DC1F0020D41500201C200020F1 +:10F080001420002094220020FB68642143F6FB1822 +:10F0900009EBC30241F6FD43B2F92E2302F50052FB +:10F0A00001FB023393FBF8F8002BB8BF08F1FF38DF +:10F0B000FEF7D5BE43F27430002128448846F8F7A5 +:10F0C00025FAFAF78ABE43F2743008214FF000089F +:10F0D0002844F8F71BFAFAF780BE43F2743009218E +:10F0E0004FF000082844F8F711FAFAF776BE05F554 +:10F0F000405393F89333DB077AF56DAE002343F268 +:10F10000743010211A46284400939846F0F726FBE5 +:10F11000FAF763BE43F2743007214FF00008284429 +:10F12000F8F7F4F9FAF759BE43F2743006214FF0BC +:10F1300000082844F8F7EAF9FAF74FBE43F27430B2 +:10F1400005214FF000082844F8F7E0F9FAF745BE2A +:10F1500043F2743004214FF000082844F8F7D6F940 +:10F16000FAF73BBE43F2743001214FF00008284407 +:10F17000F8F7CCF9FAF731BE43F2743002214FF0C0 +:10F1800000082844F8F7C2F9FAF727BE0224012341 +:10F190000A2100949846F0F7E1FAFAF71EBE4FF004 +:10F1A000000AD046FBF737BF05F5405595F8BD3747 +:10F1B000990604D4C3F3801383F00103BB62D7F82C +:10F1C0002880FAF70ABED14A05F54051D04B43F6E4 +:10F1D000583610684FF0000892882E44C7F86D002A +:10F1E000A7F871209A881868A7F8C3209A7991F82F +:10F1F0007C3307F16001C7F8BF00684603F00103E4 +:10F2000087F8C5209522237519F0B8FC304694E89C +:10F210000E00FAF751FAFAF7E0BDBE4A05F5405183 +:10F22000BB4B43F6583610684FF0000812792E4455 +:10F23000C7F86D0087F871209A881868A7F8C3206E +:10F240009A7991F87C3307F16001C7F8BF006846EE +:10F2500003F0010387F8C5209522237519F08EFC71 +:10F26000304694E80E00FAF727FAFAF7B6BD43F2F3 +:10F2700074300A214FF000082844F8F747F9FAF7EC +:10F28000ACBD4FF00008FAF7A8BDA14B05F5405101 +:10F29000A14A43F658364FF0000810682E449A8869 +:10F2A000C7F86D00A7F8C32018689A7991F89733CA +:10F2B00007F16001C7F8BF00684603F0010387F853 +:10F2C000C5209522237519F059FC304694E80E00AC +:10F2D000FAF7F2F9FAF781BD904A05F540518C4BE7 +:10F2E00043F6583610684FF0000812792E44C7F8DC +:10F2F0006D0087F871209A881868A7F8C3209A795A +:10F3000091F8973307F16001C7F8BF006846C3F36F +:10F31000400387F8C5209522237519F02FFC30464D +:10F3200094E80E00FAF7C8F9FAF757BD7C4B43F69C +:10F3300058367C4A4FF000082E4403CB1B78C7F8A0 +:10F34000711087F8753005F54053C7F86D0093F8D4 +:10F35000C334106813F001019288C7F8BF006846F3 +:10F3600018BFC3F34011E378A7F8C320952223F018 +:10F370000403217507F1600143F00803E37019F0FD +:10F38000FDFB304694E80E00F9F7C0FCFAF725BD06 +:10F39000654B43F65836634A4FF000082E4403CBC2 +:10F3A00005F54053C7F8711093F8C334C7F86D00E2 +:10F3B00013F001011068928818BFC3F30011E378BD +:10F3C000C7F8BF00684623F00403A7F8C3202175DF +:10F3D000952243F0080307F16001E37019F0CEFBBA +:10F3E000304694E80E00F9F791FCFAF7F6BC4F4B63 +:10F3F00043F658364B4A4FF0000818682E449B8855 +:10F40000C7F86D00A7F8713005F54053106893F800 +:10F41000C334928813F00101C7F8BF00A7F8C320D6 +:10F42000684618BFC3F3C001E378952223F00403B4 +:10F43000217507F1600143F00803E37019F09EFBAA +:10F44000304694E80E00F9F761FCFAF7C6BCE378A1 +:10F4500005F54052364E43F6583923F0040392F82E +:10F46000C324A9444FF0000843F00803E37002F0FE +:10F470000103952223752B4B9988A7F8C31003CE5F +:10F48000C7F86D0018683378C7F8711007F160018C +:10F49000C7F8BF00684687F8753019F06FFB48461B +:10F4A00094E80E00F9F732FCFAF797BC214B43F6CB +:10F4B00058361C4A4FF000082E4403CB05F5405344 +:10F4C000C7F8711093F8C334C7F86D0013F0010149 +:10F4D0001068928818BFC3F34001E378C7F8BF00F3 +:10F4E000684623F00403A7F8C3202175952243F052 +:10F4F000080307F16001E37019F040FB304694E81F +:10F500000E00F9F703FCFAF768BC00BFD415002021 +:10F5100074220020AC2200207C2200206C220020DB +:10F5200060220020202200205822002050220020AB +:10F53000442200203C220020C14B43F65836C14AE9 +:10F540004FF0000818682E441B79C7F86D0087F843 +:10F55000713005F54053106893F8C334928813F066 +:10F560000101C7F8BF00A7F8C320684618BFC3F35E +:10F570008001E378952223F00403217507F16001EF +:10F5800043F00803E37019F0F9FA304694E80E00EE +:10F59000F9F7BCFBFAF721BCAB4B18689A889B794A +:10F5A000A7F87120C7F86D0087F87330FCF7DCB856 +:10F5B000A64B18689B88C7F86D00A7F87130FCF758 +:10F5C000D3B8A34BE9E7A34B1868C7F86D00FCF765 +:10F5D000CBB8DB077BF572AE0123002099F8C82772 +:10F5E00099F8C9170093CDE901035123D9F8B00761 +:10F5F00012F01CF9FBF762BE4FF0000889F8CC4707 +:10F60000FAF7EBBBD9F814321B88FBF795BD012341 +:10F61000002099F8C82799F8C9170093CDE901038C +:10F620005023D9F8B00712F001F9FBF747BE8A4B17 +:10F6300003CB1B88C7F86D00C7F87110A7F87530A9 +:10F64000FBF79EBE05F54053844E93F8BD37C3F3D8 +:10F65000801323750FCEC7F86D00C7F87110C7F877 +:10F660007520C7F87930FBF78BBE05F540537C4E0B +:10F6700093F8BD37C3F34013EBE77A4B07CBC7F8DA +:10F68000711019889B78C7F86D00A7F87910C7F832 +:10F69000752087F87B30FBF773BE734E0FCEC7F82B +:10F6A00071103178C7F86D00C7F87520C7F8793048 +:10F6B00087F87D10FBF764BE6C4B07CB1B78C7F84F +:10F6C0006D00C7F87110C7F8752087F87930FBF71F +:10F6D00057BE05F54052664B92F8BD27C2F3801223 +:10F6E000227507CBC7F86D00C7F87110C7F87520F1 +:10F6F000FBF746BE05F540525E4B92F8BD27C2F3BC +:10F700004012227594E75C4BFEF731BB5B4B1868E7 +:10F710009B88C7F86D00A7F87130FBF731BE584BD6 +:10F7200003CBC7F86D00C7F87110FBF729BE554B26 +:10F7300018689A889B79A7F87120C7F86D0087F838 +:10F740007330FBF71DBE504B72E7504BB5E7504B83 +:10F7500003CBC7F86D00C7F87110FBF711BE05F5B4 +:10F7600040524C4B92F8BD6707CBC7F87110B106F9 +:10F77000C7F86D00C7F8752004D4C6F3801686F06C +:10F780000103BB62BB6A2375FBF7FABD424B07CB93 +:10F79000C7F86D00C7F87110C7F87520FBF7F0BD0A +:10F7A0003E4A05F540531068117993F8BD27C7F814 +:10F7B0006D0012F0010387F8711018BFC2F38003C7 +:10F7C00083F001032375FBF7DBBD354A05F5405394 +:10F7D000106893F8BD379288C7F86D00A7F87120BC +:10F7E00013F0010218BFC3F380022275FBF7C8BDF6 +:10F7F0002C4BFEF7BCBA2C4B9AE72C4B03CBC7F82B +:10F800006D00C7F87110FBF7BBBD294B1868C7F82E +:10F810006D00FBF7B5BD4FF00108FAF7DEBA94F8BA +:10F82000802CB4F8840CD10705D501464FF00008B0 +:10F830009847FAF7D2BA0028F7D0411E89B2F5E707 +:10F84000342200202022002000200020F41F00206D +:10F85000EC1F0020E81F0020E02100209C21002058 +:10F8600080210020D0210020BC210020AC210020DC +:10F870009021002074210020EC2100200C21002088 +:10F88000FC200020382100202C2100201C210020F9 +:10F8900014210020682100205C210020D83900209C +:10F8A000C4390020502100204821002040210020A0 +:10F8B000E034002070B504464078FF2840F00A810B +:10F8C000FF290D4600F00781E67818F07BFEE388FB +:10F8D0002289D21A002A00F0E381A0EB030311462B +:10F8E000B8BF511CDB0103EB610303FB02F193FB87 +:10F8F000F2F30029B8BF03F1FF33DBB21946B3427C +:10F90000E37000F0C7810122002016462071A37821 +:10F9100065700344B3FBF6F3DEB2881B0028B8BF62 +:10F9200040420A28C8BF8B192178C8BF5B10FF2A44 +:10F9300001F01201A370A5F10E0308BF002221708F +:10F940000D2B227140F2A0810021C6481BF036F831 +:10F95000C54818F0CBFC2E21C4481BF02FF8C24834 +:10F9600018F0C4FC2E21C1481BF028F8BE4818F03E +:10F97000BDFC2E21BD481BF021F8BB4818F0B6FC99 +:10F980002E21BA481BF01AF8B74818F0AFFC012135 +:10F99000B7481BF013F80421B6481BF00FF8B24823 +:10F9A00018F0A4FC0121B2481BF008F800230A2239 +:10F9B0002946AD4818F0B6FCAB4818F097FC012179 +:10F9C000AB481AF0FBFF4521AB481AF0F7FFA648F9 +:10F9D00018F08CFC2E21A5481AF0F0FFA24818F070 +:10F9E00085FC2E21A1481AF0E9FF9F4818F07EFC03 +:10F9F0002E219E481AF0E2FF9B4818F077FC2E213A +:10FA00009A481AF0DBFF984818F070FC00219548DE +:10FA10001AF0D4FF944818F069FC002191481AF0BC +:10FA2000CDFF914818F062FC2E2190481AF0C6FFD5 +:10FA30008D4818F05BFC2E218C481AF0BFFF8A48D5 +:10FA400018F054FC2E2189481AF0B8FF864818F0A7 +:10FA50004DFC2E2185481AF0B1FF834818F046FC72 +:10FA6000012183481AF0AAFF182184481AF0A6FF42 +:10FA70007D4818F03BFC01217D481AF09FFF3F2193 +:10FA80007F481AF09BFF784818F030FC2E21774809 +:10FA90001AF094FF744818F029FC2E2173481AF0CC +:10FAA0008DFF714818F022FC2E2170481AF086FF55 +:10FAB0006D4818F01BFC2E216C481AF07FFF6A4835 +:10FAC00018F014FC002167481AF078FF664818F017 +:10FAD0000DFCFEE770BD002162481AF06FFF62481E +:10FAE00018F004FC2E2161481AF068FF5E4818F0F7 +:10FAF000FDFB2E215D481AF061FF5B4818F0F6FB14 +:10FB00002E215A481AF05AFF574818F0EFFB2E21C1 +:10FB100056481AF053FF544818F0E8FB01215448A6 +:10FB20001AF04CFF042153481AF048FF4E4818F0D1 +:10FB3000DDFB01214E481AF041FF00230A2229462D +:10FB4000494818F0EFFB484818F0D0FB012148481D +:10FB50001AF034FF47214B481AF030FF424818F0A2 +:10FB6000C5FB2E2141481AF029FF3F4818F0BEFB83 +:10FB70002E213E481AF022FF3B4818F0B7FB2E21F9 +:10FB80003A481AF01BFF384818F0B0FB2E213748CE +:10FB90001AF014FF344818F0A9FB002131481AF07C +:10FBA0000DFF314818F0A2FB00212E481AF006FF85 +:10FBB0002D4818F09BFB2E212C481AF0FFFE2A48F6 +:10FBC00018F094FB2E2129481AF0F8FE264818F068 +:10FBD0008DFB2E2125481AF0F1FE234818F086FBF4 +:10FBE0002E2122481AF0EAFE1F4818F07FFB01215F +:10FBF0001F481AF0E3FE182120481AF0DFFE1A48C9 +:10FC000018F074FB01211A481AF0D8FE3F211C4855 +:10FC10001AF0D4FE144818F069FB2E2113481AF08C +:10FC2000CDFE114818F062FB2E2110481AF0C6FED6 +:10FC30000D4818F05BFB2E210C481AF0BFFE0A4855 +:10FC400018F054FB2E2109481AF0B8FE064818F0A7 +:10FC50004DFB002103481AF0B1FE034818F046FBA3 +:10FC6000FEE700BF183D0020684C0020501900201E +:10FC7000EC230020801900202C1A0020D01900202D +:10FC8000EC1900208819002028460221BDE87040A8 +:10FC900018F010BF267906FB01F00136F2B236E605 +:10FCA00040210B462BE600BF38B54378FF2B40F0D0 +:10FCB000D680FF290C4600F0E580272905464170D3 +:10FCC00040F2C680002166481AF078FE654818F0B8 +:10FCD0000DFB2E2164481AF071FE624818F006FBF5 +:10FCE0002E2161481AF06AFE5E4818F0FFFA2E21B4 +:10FCF0005D481AF063FE5B4818F0F8FA2E215A4866 +:10FD00001AF05CFE574818F0F1FA012157481AF032 +:10FD100055FE042156481AF051FE524818F0E6FAF2 +:10FD2000012152481AF04AFE00230A2221464D487A +:10FD300018F0F8FA4B4818F0D9FA01214B481AF09C +:10FD40003DFE46214B481AF039FE464818F0CEFADF +:10FD50002E2145481AF032FE424818F0C7FA2E21EB +:10FD600041481AF02BFE3F4818F0C0FA2E213E48B9 +:10FD70001AF024FE3B4818F0B9FA2E213A481AF03E +:10FD80001DFE384818F0B2FA002135481AF016FE68 +:10FD9000344818F0ABFA002131481AF00FFE314810 +:10FDA00018F0A4FA2E2130481AF008FE2D4818F059 +:10FDB0009DFA2E212C481AF001FE2A4818F096FAD6 +:10FDC0002E2129481AF0FAFD264818F08FFA2E2124 +:10FDD00025481AF0F3FD234818F088FA012123483A +:10FDE0001AF0ECFD182124481AF0E8FD1D4818F01F +:10FDF0007DFA01211D481AF0E1FD3F211F481AF04C +:10FE0000DDFD184818F072FA2E2117481AF0D6FDB9 +:10FE1000144818F06BFA2E2113481AF0CFFD114840 +:10FE200018F064FA2E2110481AF0C8FD0D4818F099 +:10FE30005DFA2E210C481AF0C1FD0A4818F056FA56 +:10FE4000002107481AF0BAFD064818F04FFAFEE7FD +:10FE50000221204618F02EFE094B1B686B6038BD4E +:10FE6000183D0020684C002050190020EC23002091 +:10FE700080190020741A0020D0190020EC190020ED +:10FE800008BB0020002162481AF098FD614818F074 +:10FE90002DFA2E2160481AF091FD5E4818F026FADE +:10FEA0002E215D481AF08AFD5A4818F01FFA2E21BB +:10FEB00059481AF083FD574818F018FA2E21564871 +:10FEC0001AF07CFD534818F011FA012153481AF03A +:10FED00075FD042152481AF071FD4E4818F006FADB +:10FEE00001214E481AF06AFD00230A2221464948A2 +:10FEF00018F018FA474818F0F9F9012147481AF0A4 +:10FF00005DFD472147481AF059FD424818F0EEF9C7 +:10FF10002E2141481AF052FD3E4818F0E7F92E21F3 +:10FF20003D481AF04BFD3B4818F0E0F92E213A48C5 +:10FF30001AF044FD374818F0D9F92E2136481AF046 +:10FF40003DFD344818F0D2F9002131481AF036FD51 +:10FF5000304818F0CBF900212D481AF02FFD2D481C +:10FF600018F0C4F92E212C481AF028FD294818F061 +:10FF7000BDF92E2128481AF021FD264818F0B6F9BF +:10FF80002E2125481AF01AFD224818F0AFF92E212B +:10FF900021481AF013FD1F4818F0A8F901211F4845 +:10FFA0001AF00CFD182120481AF008FD194818F025 +:10FFB0009DF9012119481AF001FD3F211B481AF053 +:10FFC000FDFC144818F092F92E2113481AF0F6FCA3 +:10FFD000104818F08BF92E210F481AF0EFFC0D484D +:10FFE00018F084F92E210C481AF0E8FC094818F0A2 +:10FFF0007DF92E2108481AF0E1FC064818F076F940 :02000004600397 -:1000000094F8EC3A0020FF2A4E4903F0120305F55C -:10001000805508BF024684F8040B43F0010384F8BE -:100020000C0B84F8F02A84F8EC3A0A680B68C4F8E0 -:10003000082BC4F8103B95F8ED34002B5AD094F8F7 -:10004000E03A43F0010384F8E03ADB0742D594F844 -:10005000E10A002118F0BAFC94F8E20A012118F034 -:10006000B5FC94F8E20A012118F074FC022194F81E -:10007000E30A18F0ABFC95F8F03495F8EE240BB3D6 -:1000800095F8F134F3B194F8EC3A84F8002B43F08E -:10009000080340F2FE3184F8EC3AB5F8E834B5F8DC -:1000A000EA248B4288BF002340F2FF318A4228BFF6 -:1000B0000A469A4201D80A460023A4F8F23AA4F864 -:1000C000F42A70BD94F8EC3A002203F0F70384F8A8 -:1000D000002BDEE794F8E10A022118F077FC94F88F -:1000E000E20A022118F072FC022194F8E30A18F0E7 -:1000F0006DFCC0E794F8E03A03F0FE03A3E7314457 -:10010000491084F8EE1A7BE794F8E10A022118F00E -:100110005DFC94F8E20A022118F058FC022194F8E0 -:10012000E30A18F053FC32E740210B46B34284F84F -:10013000EF3A7FF451AF94F8F06A06FB01F0013614 -:10014000F2B24EE7E8BA002070B543F6E02500F5BC -:10015000405641F21653172105440446A6F8E23AE8 -:1001600005F1240086F8E11AFFF730FD96F8E21A4F -:1001700005F12C00FFF72AFD05F10C0096F8E11AB5 -:10018000FFF72AFB2046BDE87040FFF7E3BE00BF43 -:100190002DE9F04300F540544FF6FF7585B0064653 -:1001A000B4F8DA3AAB4204D094F8D82A1B2A00F00B -:1001B000A781D4F8E82A002A00F0E880DFF83C8321 -:1001C000B4F8E41AD8F800309B1A8B4294F8E03A5D -:1001D00020D3002283F002032121C248C4F8E82A78 -:1001E00084F8E03A1AF076FB0121BF481AF072FB5E -:1001F00094F8E03ABD4AC3F34003BD48002B12BF58 -:1002000009210C2110461AF065FBBA4817F0F8FFD7 -:1002100094F8E03AC3F34007394606F58055B5F83F -:10022000562802F00100B8427AD0002900F0A680DA -:1002300042F00102012113F00107A5F8562885F8C4 -:10024000581872D094F8EC3A1F0702D5980600F1BE -:10025000318194F8ED0A94F8EE7A94F8EF8A18F068 -:100260003DF9B4F8F23AB4F8F42AD21A002A00F0B0 -:100270001181A0EB03001146B8BF511CC30103EB71 -:10028000610303FB02F193FBF2F30029B8BF03F112 -:10029000FF33DBB24345184684F8EF3A00F00181A2 -:1002A00001220021944684F8F01A94F8EE3A0B44A7 -:1002B000B3FBFCF3DBB2C11A0029B8BF49420A29DB -:1002C00000F3A4809C4684F8EE3AFF2A94F8EC3AB6 -:1002D00008BF0022D90784F8F02A00F1B6801A0777 -:1002E00040F1828094F8002B910900F02A810129C5 -:1002F0006CD067457AD195F85838002B42D106F575 -:100300000053D3F8CC3C5B0340F1188142F69C408B -:1003100001221B21304405B0BDE8F04310F0D0BBF2 -:100320000029E8D013F001078CD1DFF8D081D4F890 -:10033000082BD8F800309B1A312B6DD8D8F8003034 -:10034000D4F8102B9B1A312BD5D994F80C7BD8F804 -:100350000030C7F3400794F80D0BC4F8103B18F0B9 -:1003600023FB8742C7D094F80C3B83F00203990724 -:1003700084F80C3BBFD501270237A4E022F001022C -:10038000A5F85628002385F85838BFE794F8E30A03 -:1003900018F00AFBA0F1010294F8E03AB2FA82F2F6 -:1003A000C3F3400152090F468A423FF436AF012899 -:1003B000DFF848810CBF4FF47A704FF4FA70D8F828 -:1003C0000020A4F8E40AC4F8E82A26E702F00701AE -:1003D000013101EB8101C1F17F01C9B2614540F2F8 -:1003E000C5800023C4F8FC3A674584D0B5F860386E -:1003F0009A0532D495F8EF4400230A2204213046AE -:100400000094CDE901C3F9F7FFFB74E70344C3F39C -:10041000470C84F8EECA58E794F8049BD8F80030EB -:10042000C9F3400994F8050BC4F8083B18F0BCFA6E -:10043000484583D094F8043B83F00203980784F87E -:10044000043B7FF57BAF02373DE023F0010384F8E6 -:10045000EC3AB5F860389A05CCD50C2126481AF04C -:1004600039FA012120481AF035FA00230A222148DE -:10047000194617F0E1FE01211B481AF02BFA94F8F7 -:10048000EE1A1C4817F0B0FE1A4817F0B9FE94F89F -:10049000EECAAFE740200346434584F8EF3A7FF4C5 -:1004A000FFAE94F8F01A01F1010C00FB01F15FFAC4 -:1004B0008CF2FAE603F0DF03C3F3001784F8EC3A9A -:1004C000C7F10307FFB20023374441F2EE41042293 -:1004D0003046CDE901337C5C01210094F9F794FBAF -:1004E00009E700BF14230020EC2300200423002090 -:1004F000BC150020A84B002038230020E8BA0020BB -:1005000043F6E022342101FB0323C218C35CDB075E -:100510007FF54FAE507817F0E1FFB4F8DA3AAB420E -:100520000CD083B2B4F8DC2A9A42B4F8DE2A88BF31 -:10053000A4F8DC3A9A4201D2A4F8DE3A05B0BDE84C -:10054000F08302F0070113F0100FC3F3001001F164 -:10055000010101EB81012FD161453FF645AF43F029 -:100560003003C4F8FC0A84F8EC3A3DE78F4248D2E5 -:10057000C2F3C202013202EB820202EB820292005B -:10058000C832A4F8F82A254A1168C4F8FC1A0029D0 -:100590003FF42AAF214A1268521AB4F8F81A8A4274 -:1005A000FFF422AF83F0100343F0200384F8EC3A09 -:1005B0000023C4F8FC3A17E76145FFF412AF674522 -:1005C00022D0D208DFF854800132D8F8000002EBC4 -:1005D0008202C4F8FC0A02EB82029200C832A4F83C -:1005E000F82A00283FF402AFD8F80010091A914207 -:1005F000FFF4FAAE23F0100343F0200384F8EC3A42 -:10060000EFE6D4F8FC1AC2E7D4F8FC0A00283FF45D -:1006100072AEB4F8F82ADFF80480E5E7E8BA002003 -:100620000378FF2B00D07047FF2970B50D4600F00E -:10063000D38000263F29044601700672467240F2BC -:10064000B881A1F14005072D40F2A0813146C5488F -:100650001AF040F9C44817F0D3FD2E21C3481AF010 -:1006600039F9C14817F0CCFD2E21C0481AF032F9F3 -:10067000BD4817F0C5FD2E21BC481AF02BF9BA4829 -:1006800017F0BEFD2E21B9481AF024F9B64817F02C -:10069000B7FD0121B6481AF01DF90821B5481AF036 -:1006A00019F9B14817F0ACFD0121B1481AF012F95F -:1006B00033460A222178AC4817F0BEFDAA4817F04D -:1006C0009FFD0121AA481AF005F93C21AA481AF019 -:1006D00001F9A54817F094FD2E21A4481AF0FAF864 -:1006E000A14817F08DFD2E21A0481AF0F3F89E487E -:1006F00017F086FD2E219D481AF0ECF89A4817F065 -:100700007FFD2E2199481AF0E5F8974817F078FDFB -:10071000314694481AF0DEF8934817F071FD3146DF -:1007200090481AF0D7F8904817F06AFD2E218F48AC -:100730001AF0D0F88C4817F063FD2E218B481AF080 -:10074000C9F8894817F05CFD2E2188481AF0C2F8D4 -:10075000854817F055FD2E2184481AF0BBF88248D1 -:1007600017F04EFD012182481AF0B4F81821834891 -:100770001AF0B0F87C4817F043FD01217C481AF0CC -:10078000A9F83F217E481AF0A5F8774817F038FD00 -:100790002E2176481AF09EF8734817F031FD2E216D -:1007A00072481AF097F8704817F02AFD2E216F480A -:1007B0001AF090F86C4817F023FD2E216B481AF0C0 -:1007C00089F8694817F01CFD314666481AF082F82E -:1007D000654817F015FDFEE7002162481AF07AF827 -:1007E000614817F00DFD2E2160481AF073F85E483D -:1007F00017F006FD2E215D481AF06CF85A4817F0E4 -:10080000FFFC2E2159481AF065F8574817F0F8FCFC -:100810002E2156481AF05EF8534817F0F1FC0121DA -:1008200053481AF057F8042156481AF053F84E4826 -:1008300017F0E6FC01214E481AF04CF800230A227A -:100840002946494817F0F8FC474817F0D9FC012120 -:1008500047481AF03FF847214B481AF03BF8424806 -:1008600017F0CEFC2E2141481AF034F83E4817F01C -:10087000C7FC2E213D481AF02DF83B4817F0C0FC6C -:100880002E213A481AF026F8374817F0B9FC2E21E5 -:1008900036481AF01FF8344817F0B2FC00213148EE -:1008A0001AF018F8304817F0ABFC00212D481AF068 -:1008B00011F82D4817F0A4FC2E212C481AF00AF844 -:1008C000294817F09DFC2E2128481AF003F82648E5 -:1008D00017F096FC2E21254819F0FCFF224817F04E -:1008E0008FFC2E21214819F0F5FF1F4817F088FCD6 -:1008F00001211F4819F0EEFF1821204819F0EAFFE6 -:10090000194817F07DFC0121194819F0E3FF3F2138 -:100910001B4819F0DFFF144817F072FC2E21134812 -:1009200019F0D8FF104817F06BFC2E210F4819F072 -:10093000D1FF0D4817F064FC2E210C4819F0CAFFB6 -:10094000094817F05DFC2E21084819F0C3FF06483E -:1009500017F056FC0021034819F0BCFF024817F0BD -:100960004FFCFEE7583C0020A84B00205019002007 -:10097000EC230020143B0020203B0020D019002055 -:10098000EC19002080190020881900200120207215 -:1009900017F062FF627A638942F001029804627282 -:1009A00040F1D680590400F1E28043F002036381F4 -:1009B00070BD272940F2C68031466F4819F08AFF82 -:1009C0006E4817F01DFC2E216D4819F083FF6B480F -:1009D00017F016FC2E216A4819F07CFF674817F0C3 -:1009E0000FFC2E21664819F075FF644817F008FCCB -:1009F0002E21634819F06EFF604817F001FC0121B9 -:100A0000604819F067FF04215F4819F063FF5B48F5 -:100A100017F0F6FB01215B4819F05CFF33460A2210 -:100A20002178564817F008FC544817F0E9FB0121DB -:100A3000544819F04FFF3921544819F04BFF4F48E3 -:100A400017F0DEFB2E214E4819F044FF4B4817F0FB -:100A5000D7FB2E214A4819F03DFF484817F0D0FB3C -:100A60002E21474819F036FF444817F0C9FB2E21C4 -:100A7000434819F02FFF414817F0C2FB31463E486A -:100A800019F028FF3D4817F0BBFB31463A4819F0F2 -:100A900021FF3A4817F0B4FB2E21394819F01AFF0C -:100AA000364817F0ADFB2E21354819F013FF3348B7 -:100AB00017F0A6FB2E21324819F00CFF2F4817F033 -:100AC0009FFB2E212E4819F005FF2C4817F098FBAC -:100AD00001212C4819F0FEFE18212D4819F0FAFECC -:100AE000264817F08DFB0121264819F0F3FE3F211F -:100AF000284819F0EFFE214817F082FB2E212048EC -:100B000019F0E8FE1D4817F07BFB2E211C4819F058 -:100B1000E1FE1A4817F074FB2E21194819F0DAFE8D -:100B2000164817F06DFB2E21154819F0D3FE134817 -:100B300017F066FB3146104819F0CCFE0F4817F04D -:100B40005FFBFEE72846022117F040FF01201FE768 -:100B5000227AD20703D523F00203638170BD207887 -:100B600017F022FF638900283FF41FAFF3E723F457 -:100B7000C0439BB2EFE700BF583C0020A84B0020C9 -:100B800050190020EC23002080190020603B002039 -:100B9000D0190020EC19002070B5414D0446426880 -:100BA0002B689B1A312B24D8037A9A07C3F3400091 -:100BB00001D5A2697AB9226922B129688A1AA18964 -:100BC0008A4248D2236A23B12A68A18BD31A8B4266 -:100BD0002ED2012070BD29688A1AA18A8A42EAD3DE -:100BE0000022A261628922F4207242F48072628142 -:100BF000E1E743892A689904C3F340064260C3F3DE -:100C000040303CD55A0435D4237A8642CDD0618910 -:100C100081F00202890705D422F0100242F0090295 -:100C20006281C2E722F0080242F011026281BCE751 -:100C30006389FA21227A43F041032868A183638102 -:100C400093072062C5D522F00202002342F0200261 -:100C5000A3612272BDE76289002142F02002216176 -:100C600062810028AED023F00203A16143F020038B -:100C70002372A7E723F4C04300206381C4E7237AEB -:100C8000D80705D5607A00F0010080F00100BCE7CC -:100C9000207817F089FE0038237A18BF0120F4E786 -:100CA000E8BA002010B50446FFF776FF002838D0D8 -:100CB0006389DA05194645D598054FEA63226CD554 -:100CC00013F0040FC3F3800040F04581DA0740F1D0 -:100CD000E5801A0742D48B067BD521F02001002045 -:100CE000627A41F480532061D00689B2638102D5D3 -:100CF00041F4C0516181237A990701D50023A36192 -:100D000063789749C3EB4310096803EB80032162C2 -:100D10009B00A383930600F10E8102230320A3709E -:100D200010BDA37823B163899907C3F3400241D56D -:100D3000637A9A07C3F34000F2D523F002030C2034 -:100D4000637210BD13F0040F4FEAA302C3F38000D7 -:100D50003DD1DA0740F1A2801A07BCD5627823F0B2 -:100D600008016181C2EB421102EB81027C49520011 -:100D70000968A281227A216191077BD4637A1007E6 -:100D800043F00203637204D5D10619D442F0100275 -:100D9000227201231846A37010BD43F400735A0752 -:100DA000638105D4D80703D51907C3F3C000D5D490 -:100DB000227AE3E7637A0220A2700343637210BDD4 -:100DC00022F01002052306202272A37010BDD8075E -:100DD0002ED5CB0662D54807C1F380027AD40B0525 -:100DE000C1F3C02000F18C80237A13F0020FC3F30B -:100DF000400278D04B05C1F3802240F19080594BDE -:100E000020610B40E070A061638100222262D8055E -:100E10000DD55A12D1070AD500225248617A0340F3 -:100E200022612262E270A2614A06638147D59A106C -:100E300012F001027FF475AFD8077FF572AF190683 -:100E400065D458067FF56DAFE27823F0400C444836 -:100E5000042102F10A03C2F1FA020068DBB2A4F82D -:100E60000AC020620520642BA170A28328BF6423DE -:100E7000E37010BDA16939B1002123F48473A1612D -:100E800040F281411943618100287FF477AF618985 -:100E900048070B4651D4CA073FF51DAF0B46B6E7CE -:100EA000304800220840990622612262E270608187 -:100EB00005D523F02003A26143F002032372A0783A -:100EC000431E042B02D80630C0B210BD00230220FE -:100ED000A37010BD234B00220B4022612262A2614D -:100EE0006381628093E7607AC006D9D5C804D7D5FC -:100EF0001C4B22610B402262A2616280638186E703 -:100F0000184B22610B402262628063817FE723F0ED -:100F1000800303210420A2616381A17010BD21F030 -:100F20001103A06922619BB2638150B143F0810338 -:100F3000A261638169E761890B46CA077FF567AFE4 -:100F400047E7074B21F09101FA201A688BB2A08283 -:100F5000A261638159E7D8073FF53BAF5AE700BF6D -:100F6000E8BA00200280FFFF70B590F80CC0056958 -:100F70001CF001041AD1AD6AB5B11CF0020FCCF31C -:100F8000400519D090F90140A14240D090F90240AB -:100F9000A1420ED1022A06D12BB9FF238370026829 -:100FA0003A4B93434BD00124204670BDED6A002D8F -:100FB000E3D10024204670BD002BFAD042698DB2E7 -:100FC000002C32D02C0902EB4402D48F01F00F0226 -:100FD000144104F00104002CEBD190F90020002A08 -:100FE0001CDB8A421AD04CF0020C41708460827083 -:100FF00080F80CC02DDD1CF0010436D101698E6A29 -:10100000002ED0D091B228461C46B047CCE7022A29 -:10101000C9D1002BC7D1FF234370C0E71C4B4B2223 -:1010200001701B6882808360BEE72C0902EB4402DA -:10103000548F01F00F02144104F00104CBE74FF686 -:10104000FF732CF0020C2C460380837080F80CC0D8 -:10105000AAE71CF0010410D101698E6A002EA2D00B -:10106000294690B21C46B0479EE70369DB6A002B15 -:1010700099D091B22846984796E70369DB6A002B1E -:1010800091D0294690B298478EE700BF00FFFF003D -:10109000E8BA002070B543F68815012406460544D9 -:1010A000631E9BB2013B042B23D8DFE803F01E0B29 -:1010B00003200D0043212846FFF7B2FA01342435FE -:1010C000A4B2EDE74221F6E745212846FFF7A8FA4A -:1010D00043F678201E213044FFF7A2FA43F69C2005 -:1010E0001F213044FFF79CFA70BD4121E3E7442102 -:1010F000E1E740212846FFF793FA062CDED1E7E727 -:10110000F0B500F5805683B01446951D96F86479C5 -:101110009446C7F380071CF8013F03F00F030C2B24 -:101120005CD06545F7D14B89002091F808C023F4C5 -:10113000FF4391F809E00CF0010C086123F07D03F6 -:101140000EF0010E81F808C09BB281F809E0086238 -:101150004B81C8708861002F36D0D6F8FC37002646 -:10116000DB6803F00F0302334B7001E0A54221D08E -:1011700014F8013F13F00F03F8D0042B1CD0062BFA -:1011800003D10B7A43F008030B725378DF0603D5C3 -:10119000487A40F010004872980603D5487A40F02B -:1011A000200048725B06E1D54B7AA54243F040032C -:1011B0004B72DDD103B0F0BD0B7A8E6123F02003BA -:1011C00043F002030B72E0E7BCF1000F18D0BEF150 -:1011D000000FC2D143F004034B81BEE74B8923F4D7 -:1011E000FF4323F07D034B810B8923F47E4323F0DF -:1011F000FE030B8100230B610B62CB708B61ACE7AC -:1012000008780192009117F0CFFBDDE90012002869 -:10121000A3D14B89DEE700BF2DE9F04743F68814E0 -:1012200043F66026002582460444064400F58059B2 -:101230004FF0850841F26757D9F86C3821462434BD -:1012400050461A7818FB02722A440D355244FFF7B3 -:1012500057FFA642F0D141F2BD4243F678215046F5 -:1012600052445144FFF74CFF41F2CA4243F69C21DD -:10127000504652445144BDE8F047FFF741BF00BF1C -:101280002DE9F04784B00746924698469DF83050C5 -:101290008C1D01F10C0600F5805914F8011F01F1B5 -:1012A000FF3C1FFA81FEBCF1C70F1AD814F806CC18 -:1012B000B5FA85F0D9F800284346400902EBC1028F -:1012C0000CF00F01A94292F832200AD14AB145B17F -:1012D00052460121CDF800E0CDE901053846F8F786 -:1012E00093FCB442D9D104B0BDE8F0872DE9F04FAA -:1012F00043F688154FF0000A834600F5805956469C -:10130000054400F540542DED028B85B0D9F86C28CA -:101310001FFA86F82B7A127813F00103039200F07B -:10132000FA802B78403BDBB2072B40F2F4806B7ADB -:1013300023F001036B722846FFF7B4FC94F86C3A73 -:101340006A89074613F00100D4F8701A4FEA620C5C -:10135000C2F3400240F0EB80896A61B1990740F125 -:10136000ED8094F9611A8E4200F01E8194F9621AA0 -:101370008E4200F06581C7B10399852243465846E5 -:1013800002FB01A241F26751009711440422594423 -:10139000FFF776FF3B46F2B204215846F2F76AFEA9 -:1013A0006A894FEA620CC2F34002B9F83A1841FA6E -:1013B00006F383EA0C03DB070BD5002A00F0168145 -:1013C0000123B3400B439BB20122A9F83A3889F8B4 -:1013D0003C28013624350AF10D0A062E96D199F8DB -:1013E0003C384BB1002342F69C4001220421584472 -:1013F00089F83C380FF064FB94F86C3AD4F8702A02 -:10140000DF0700F10981926A22B1D4F8682A002A24 -:1014100040F0258143F6782541F2BD480BF56B532A -:1014200000275D44D84408EE103A2B7A5FFA87FA19 -:1014300013F0010300F0DF802B78403BDBB2072B79 -:1014400040F2D9806B7A23F001036B722846FFF7D4 -:1014500029FC6B8906460246C3F34003514618EE49 -:10146000100AFFF781FD86B180F00100C0B260B1C3 -:10147000414658463B4605220096FFF701FF33469A -:10148000524605215846F2F7F5FDB9F83E286B891A -:1014900042FA07F181EA53015B10C8070FD513F038 -:1014A000010F4FF0010303FA07F300F0B2801A4373 -:1014B00092B24FF00103A9F83E2889F8403824354C -:1014C00008F10D08002F00F0A28099F840384BB1C8 -:1014D000002342F69C403A460521584489F840389A -:1014E0000FF0EEFA94F8CC3AD4F8D02AD90700F1EC -:1014F0009D80926A52B1D4F8C82A3AB18049B4F8B2 -:10150000C40A09688A1A824280F0C98005B0BDEC1D -:10151000028BBDE8F08F94F8342842FA03F3D80721 -:101520007FF505AF6B7A43F001036B7203E7C96A7D -:1015300000293FF420AF99073FF513AF002A3FF48D -:101540001AAFD4F8741A002800F08480C98F314192 -:1015500001F0010100297FF40EAF94F9600A002820 -:10156000C0F29380864200F0908043F00203C4F8FA -:10157000681A84F8616A84F8620A84F86C3A80F226 -:101580009C8013F0010FD4F8703A00F0B380DB6A4E -:10159000002B00F0998081B2404698476A894FEA53 -:1015A000620CC2F3400200E7022F7FF4FEAE002A75 -:1015B0007FF4FBAEFF2284F8612AD4F8602A5149F7 -:1015C00031EA020209D123F0020384F86C3A4FF6A3 -:1015D000FF73A4F8603A84F8623AB9F83A1841FA0D -:1015E00006F383EA0C03DB077FF5F3AE0123B34078 -:1015F00021EA0303E8E694F8342842FA03F3DE070D -:101600007FF520AF6B7A43F001036B721EE7012771 -:101610000BE722EA03024CE7D26A002A3FF4FAAE53 -:10162000D4F8682A002A3FF4F5AE18E0D26A002AFE -:101630003FF46CAFD4F8C82A002A3FF467AF5DE7E7 -:10164000022F7FF4B2AE002A7FF4AFAEFF2284F8FF -:10165000622AB2E7498F314101F001017AE7284956 -:1016600009688A1AB4F8641A8A42FFF4D3AE0022D9 -:1016700023F00203C4F8682A4FF6FF7284F86C3A2C -:10168000A4F8602A84F8622AC4E64B2384F8606ACE -:10169000A4F8643A1A4B1B68C4F8683A6BE64FF634 -:1016A000FF72002123F00203C4F8C81AA4F8C02A6C -:1016B00084F8C22A84F8CC3A28E713F0010FD4F852 -:1016C000703A0BD19B6A63B9B9F83A1841FA06F33C -:1016D00083EA0C03DA073FF573AE7AE6DB6A002B88 -:1016E000F2D0414680B298476A894FEA620CC2F351 -:1016F00040025AE69B6A002B7FF44DAFE4E700BF3F -:10170000E8BA002000FFFF002DE9F047002106465F -:101710004E484FF4806519F0DDF84D4816F070FD25 -:1017200000214A4819F0D6F8494816F069FD112100 -:10173000484819F0CFF8464816F062FD182146488F -:1017400019F0C8F8424816F05BFD01210720434C10 -:1017500017F03CF90121062017F038F90021052087 -:1017600017F034F94FF400333220C4F88830C4F84D -:10177000845017F071F83A49DFF8ECE0C4F888506B -:10178000384B4868DEF80020A3FB0232920C02EBD3 -:1017900082024B681B1A9A42FBD830484FF4806390 -:1017A0004FF0070C06F54055DFF8C0A04FF00109D7 -:1017B0004FF400372A49DFF8AC80C0F88430DAF8FB -:1017C000083009FA0CF213F4807F95F8343839D1D7 -:1017D00023EA020385F83438C0F884704C68DEF8D8 -:1017E0000020A8FB0232920C02EB82024B681B1B0A -:1017F0009A42FBD80CF1FF3CC0F88870BCF1FF3F67 -:10180000DDD117F07DF8034600211048C5F83838BF -:1018100019F060F80E4816F0F3FC304601F068FA53 -:10182000304600F009FD3046FFF734FC3046FEF745 -:101830008BFC0021054819F04DF80548BDE8F0473C -:1018400016F0DEBC1343DBB2C4E700BF583C0020F7 -:10185000A84B00205C2300207023002000400042A1 -:10186000001000E083DE1B43A44B002000C00042B8 -:1018700070B500F540540D4694F801399E0640F1CC -:10188000CC8058066DD4090294F8000917F02AFAA2 -:1018900094F8B828002D71D002F0070343F001033B -:1018A000110600F1BF80B4F89C28AAB15A1E94F822 -:1018B0009F187148D2B20529D4F8A41850F82220F4 -:1018C0000A704FEA1220D4F8A41800F2BA80120C61 -:1018D0004870D4F8A4188A7043F08002D4F83C18F9 -:1018E00084F8B82802F00106B1F84A0000F00105BA -:1018F000AE420AD0002E40F0A18020F0010080B25C -:101900000122A1F84A0081F84C20B1F84E20C3F31F -:10191000400002F00105A8420AD0002840F08B8068 -:1019200022F0010292B20120A1F84E2081F850006D -:10193000B1F852209D0802F00100B0EB930F09D0DE -:10194000002D75D122F0010292B20123A1F852209C -:1019500081F85430B4F8FA3843F00103A4F8FA38A7 -:1019600070BD002994F8000914BF4FF48071012163 -:1019700017F0B8F994F8B828002D8DD112F00603AD -:101980008ED11206ECD5B4F8FA28930706D594F850 -:10199000BE383A4903F00F0351F82350B4F89C388D -:1019A00083B194F89F38052BD4F8A43853D81D7010 -:1019B000290AD4F8A4382A0C5970D4F8A4389A709B -:1019C000B4F8FA280021D4F83C3884F8B818B3F8F1 -:1019D0004A10CE0706D521F001010120A3F84A10D4 -:1019E00083F84C00B3F84E10CD0706D521F0010165 -:1019F0000120A3F84E1083F85000B3F85210C80726 -:101A000006D521F001010120A3F8521083F85400FB -:101A100042F00102A4F8FA2870BD94F8000916F00B -:101A200099FF35E702F07F029A427FF43CAF70BD28 -:101A300042F0010289E742F0010274E740F0010040 -:101A40005EE74870100CD4F8A418120E8870D4F811 -:101A5000A418CA7040E71D702A0AD4F8A438290CCB -:101A60005A700022D4F8A4389970D4F8A438DA70E7 -:101A7000B4F8FA28A6E700BFB00F0020700E0020CF -:101A800070B50446FFF7C8FB204601F039F920463F -:101A900000F00CFC2046FEF75DFA04F50052D2F887 -:101AA000CC3C190500D470BD23F400630525C2F8B1 -:101AB000CC3C01212046FFF7DBFE642016F0CCFE73 -:101AC00000212046FFF7D4FE642016F0C5FE6B1EF1 -:101AD00013F0FF05EDD104F58054D4F8E438002B61 -:101AE000E1D0BDE8704018472DE9F04F054685B0BC -:101AF00016F006FF05F54056D6F83838C01AB0F58E -:101B0000FA7F6FD2DFF8DCA1D6F81838DAF80020B7 -:101B10009A4231D043F648560024DAF800B005F571 -:101B200080582E4441F2D5592746D8F86C2804EB4A -:101B30004403E1B2127802EB421002EB800213443C -:101B40002B4413F8092022B9D8F8FC371B681B0571 -:101B500021D50092A3B2162208212846CDE90177AB -:101B6000F8F752F801343836062CDED1DAF80040A6 -:101B7000A4EB0B04012C1BD82846FFF7B7FB284623 -:101B800000F0C0FD284601F0D5F9284605B0BDE8B3 -:101B9000F04FFEF7FDBA16F80A3C002BE2D04B1EC0 -:101BA000042B00F28F80DFE803F06D8B896E8700D5 -:101BB0001321454818F08EFE0121444818F08AFE92 -:101BC00000230A222146424816F036FB01213F48F5 -:101BD00018F080FE02213F4818F07CFE3C4816F0C9 -:101BE0000FFBC9E73C4B4FF480623C49C3F88820A7 -:101BF00003F18D73DFF8F0E003F5CF334868DEF8CA -:101C000000208333A3FB0232920C02EB82024B686A -:101C10001B1A9A42FBD8304F4FF480630724DFF839 -:101C2000CCA04FF001094FF4003C2C49DFF8C080F4 -:101C3000C7F88430DAF8083009FA04F213F4807F28 -:101C400096F834381BD123EA020386F83438C7F8F3 -:101C500084C04868DEF80020A8FB0232920C02EB38 -:101C600082024B681B1A9A42FBD8013CC7F888C015 -:101C7000621CDFD116F044FEC6F8380842E7134371 -:101C8000DBB2E2E72021E0221548012380F8A520FD -:101C900080F8303180F82F3111F054FC01231048C6 -:101CA000194611F05DFD304606F80A7C04F0D8FFB5 -:101CB000304605F041F855E70221E4E70821E2E764 -:101CC0001021E0E70121DEE748230020EC2300207B -:101CD000A84B0020FC39002000400042001000E02A -:101CE000F8B00020E8BA0020A44B002000C0004259 -:101CF00083DE1B4338B50378FF2B3DD1FF290D460A -:101D000000F01481272938D804460121284625707F -:101D100016F05CFE20780F280BD9A0F11203DBB27D -:101D2000152B00F2EF81784A22FA03F3D90740F12C -:101D3000E981637843F020039A06637000F1BC8167 -:101D4000C3F38011C3F38002002309B143F04003C1 -:101D50000AB143F004030022C3F340116370A27080 -:101D600022739A0640F1D681991100F0CF810121AA -:101D7000BDE8384016F0B6BF38BD0021634818F002 -:101D8000A9FD634816F03CFA2E21624818F0A2FD26 -:101D90005F4816F035FA2E215E4818F09BFD5C482E -:101DA00016F02EFA2E215B4818F094FD584816F0D4 -:101DB00027FA2E21574818F08DFD554816F020FAC5 -:101DC0000121554818F086FD0421544818F082FD81 -:101DD0004F4816F015FA01214F4818F07BFD0023FB -:101DE0000A2229464A4816F027FA494816F008FA06 -:101DF0000121494818F06EFD3D21494818F06AFD5F -:101E0000434816F0FDF92E21424818F063FD404882 -:101E100016F0F6F92E213F4818F05CFD3C4816F00C -:101E2000EFF92E213B4818F055FD394816F0E8F936 -:101E30002E21384818F04EFD354816F0E1F9002102 -:101E4000324818F047FD324816F0DAF900212F48E1 -:101E500018F040FD2E4816F0D3F92E212D4818F029 -:101E600039FD2B4816F0CCF92E212A4818F032FD06 -:101E7000274816F0C5F92E21264818F02BFD2448D6 -:101E800016F0BEF92E21234818F024FD204816F044 -:101E9000B7F90121204818F01DFD1821214818F03C -:101EA00019FD1B4816F0ACF901211B4818F012FD72 -:101EB0003F211D4818F00EFD154816F0A1F92E21FE -:101EC000144818F007FD124816F09AF92E2111480F -:101ED00018F000FD0E4816F093F92E210D4818F069 -:101EE000F9FC0B4816F08CF92E210A4818F0F2FC88 -:101EF000074816F085F90021044818F0EBFC044867 -:101F000016F07EF9FEE700BFF38C3F00583C00203E -:101F1000A84B002050190020EC230020801900203D -:101F2000F0360020D0190020EC19002000217B4859 -:101F300018F0D0FC7A4816F063F92E21794818F091 -:101F4000C9FC774816F05CF92E21764818F0C2FCDF -:101F5000734816F055F92E21724818F0BBFC7048F2 -:101F600016F04EF92E216F4818F0B4FC6C4816F0AC -:101F700047F901216C4818F0ADFC04216B4818F0BA -:101F8000A9FC674816F03CF90121674818F0A2FC4B -:101F900000230A222946624816F04EF9604816F0DE -:101FA0002FF90121604818F095FC4721604818F08E -:101FB00091FC5B4816F024F92E215A4818F08AFC4F -:101FC000574816F01DF92E21564818F083FC544846 -:101FD00016F016F92E21534818F07CFC504816F0E4 -:101FE0000FF92E214F4818F075FC4D4816F008F9EE -:101FF00000214A4818F06EFC494816F001F900210A -:10200000464818F067FC464816F0FAF82E21454875 -:1020100018F060FC424816F0F3F82E21414818F001 -:1020200059FC3F4816F0ECF82E213E4818F052FCBF -:102030003B4816F0E5F82E213A4818F04BFC38489A -:1020400016F0DEF80121384818F044FC1821394810 -:1020500018F040FC324816F0D3F80121324818F04D -:1020600039FC3F21344818F035FC2D4816F0C8F8EB -:102070002E212C4818F02EFC294816F0C1F82E21EC -:10208000284818F027FC264816F0BAF82E212548D3 -:1020900018F020FC224816F0B3F82E21214818F041 -:1020A00019FC1F4816F0ACF800211C4818F012FC6F -:1020B0001B4816F0A5F8FEE70A21204818F00AFC94 -:1020C0000121194818F006FC00230A22217814483F -:1020D00016F0B2F80121144818F0FCFB0E21184844 -:1020E00018F0F8FB0E4816F08BF8637800209D0678 -:1020F000C3F380116070C3F3800220787FF524AEB3 -:10210000202322E6637803F0DF0315E6BDE83840BC -:1021100016F0E8BDBDE8384016F01CBC583C002065 -:10212000A84B002050190020EC230020801900202B -:1021300088190020D0190020EC1900203037002029 -:102140003C3700202DE9F84F0C460546D1B2204619 -:1021500005F58055FFF7CEFD6378D5F8FC27990685 -:1021600052685AD557034CBF43F0400303F0BF03F6 -:1021700013F0010103F00107637041D0002981F0E1 -:1021800001084FEA01264FF0020515BF4FF0010A82 -:102190004FF4807A4FF480794FF001099806FFB22E -:1021A0004FEA082B1CD5590620784CBF514659469A -:1021B00016F098FD192016F04FFB63789A0614D597 -:1021C0005B0620784CBF4946314616F08BFD19203E -:1021D00016F042FB012D11D0637801259806E2D458 -:1021E0004146207816F0B6FBE4E73946207816F031 -:1021F000B1FB192016F030FB012DEDD1BDE8F88FB1 -:102200009E0611D55D06207848BF012116F06AFDB3 -:10221000637803F001073946B0E703F0BF0303F02A -:10222000010763703946A9E7207816F093FB6378BD -:1022300003F001073946A1E71B4B642270B519680A -:10224000012400F54053064600F56455C3F87C1997 -:10225000A3F88029A3F87829631E9BB2013B032BC6 -:1022600019D8DFE803F00D0B020F1B222946304678 -:10227000FFF768FF01341835A4B2EDE71A22F5E73D -:102280001922F3E743F6601130461C223144BDE8C1 -:102290007040FFF757BF182229463046FFF752FF1C -:1022A000052CE7D170BD00BFE8BA00202DE9F84F3A -:1022B00000F5805A41F2D84543F678174FF00009EF -:1022C000BAF846384FF0200805440744DB4300F5D0 -:1022D0006454AAF846386B785A1EC72A62D8DAF8CE -:1022E000002802EBC30292F832B0ABF1100B637816 -:1022F0002E789806C3F3801184F80190C3F380020E -:1023000048BF84F801806378002947D043F0400338 -:1023100063706378002A3DD043F0040363706378F0 -:1023200084F802909A06C3F3401184F80C9040D5CB -:10233000C3F380115B06207848BF012116F0D2FC60 -:1023400063781EB3052E43F00203A8BF0526637011 -:10235000013EA670BBF1030F03D8637823F002039C -:1023600063706378DAF8FC279E0652681DD5500327 -:102370004CBF43F0400303F0BF03D90763701CD583 -:1023800018340335A742A6D1BDE8F88F23F0020325 -:102390006370DFE723F004036370C0E723F04003BA -:1023A0006370B6E76FF00F0BA1E723F04003637093 -:1023B000E6E7207816F0CEFAC2E79A06C3F340119A -:1023C00008D5C3F380115B06207848BF012116F0C1 -:1023D00089FCD5E7207816F0BDFAD1E72DE9F04168 -:1023E0009DF818E006460C461746BEF1010F1D4643 -:1023F00091F801C035D9BEF1020F56D0BEF1030FDE -:1024000000F0ED80BEF1FF0F40F0A88006F54056C9 -:102410001CF0100F96F88439AEB252D11CF0020FA6 -:10242000CCF3400240F085806369002B40F0AF8020 -:102430000CF00102360905F00F0537F8163043FAA3 -:1024400005F101F00101914209D0002A6CD001226E -:10245000AA4013439BB2012227F81630BA70BDE898 -:10246000F0810EF001080CF001039845CED01CF06D -:10247000200F00F0AF801CF0400F00F0CA80B8F1D0 -:10248000000F207814BF4FF48071012116F02AFC50 -:1024900094F801C0B8F1000F00F0B8804CF0010CC6 -:1024A0004CF0080C84F801C0B0E71CF0020F00F0FB -:1024B000BA8000F540561CF0100F96F88439AEB281 -:1024C00037D0A36863B3DFF83882A188D8F800203A -:1024D000D31A8B4224D300230CF00101A360237B89 -:1024E000D80748BF81F001011CF0200F00F0978051 -:1024F0001CF0400F00F0CA800029207814BF4FF470 -:102500008071012116F0EEFBD8F800306422A36040 -:10251000237BA2800133DBB2062B00F2BC80237345 -:10252000627802F0010285E70122AA4023EA020351 -:1025300091E71CF0010FF3D0002BF1D0A27802F04C -:102540000F081309B8EB121F40F28480013348EAE8 -:1025500003135FFA83F884F80280E1E71EF0040FAA -:10256000CEF3C00814BF4CF0020C0CF0FD0C0CF0C4 -:10257000010381F801C098453FF448AF1CF0200FDB -:102580007FF479AF4146207816F0E4F980E75C49A2 -:102590000968CB1A218A8B42FFF44AAF62611CF0B2 -:1025A00001023FF447AF1CF0200FCCF3401100F0C4 -:1025B00093801CF0400FCCF38011207818BF0121CC -:1025C00016F090FB6378002223F0010343F0080328 -:1025D00063702FE77146207816F0BCF958E74CF08D -:1025E000020C1CF0010F81F801C07FF40FAF1CF04A -:1025F000200F46D04FF48071207816F073FB94F8CA -:1026000001C04CF0090C84F801C0FFE60CF0FE0C90 -:1026100046E74FEA0821207816F064FB38E7207877 -:1026200016F098F970E71CF0010F0DD11CF0200F87 -:1026300056D04FF48071207816F054FB94F801C006 -:102640004CF0090C84F801C02D4B1B686361962384 -:102650002382DBE68CF0040C1CF0200F4FEAAC0365 -:10266000CCF3800184F801C032D01CF0400F28D098 -:102670000029207814BF4FF48071012116F032FB3D -:1026800069E70121207816F065F9B8E7090220789A -:1026900016F028FB38E7002361782373A36001F06C -:1026A000EF039A06637025D503F001015B061CD584 -:1026B0000029207814BF4FF48071012116F012FB1D -:1026C0002EE71B02207803F4807116F00BFB42E723 -:1026D000207816F03FF93EE7207816F03BF971E7D5 -:1026E0000121207816F036F9A8E70902207816F0C3 -:1026F000F9FA15E701F00101207816F02BF90FE740 -:10270000E8BA002000F54052D2F87C392DE9F043B8 -:10271000054685B03BB12A480168CB1AB2F8781952 -:102720008B4243D2002341F64609002441F2D948A6 -:1027300005F56456A9442746A84482F8843904EB79 -:1027400044020221A3B22846CDE9017718F802C05D -:102750000722CDF800C0F7F757FA8446E3B20134F8 -:1027600031464A462846CDF800C0FFF737FE052C13 -:1027700006F11806E3D105F5805393F8482892B97D -:1027800005F50053D3F8CC3C5B0309D542F69C40D9 -:1027900001220721284405B0BDE8F0430EF090B9AE -:1027A00005B0BDE8F08383F84878EFE7B2F88049D8 -:1027B00001230168A2F87849C2F87C19B3E700BF89 -:1027C000E8BA0020002070472DE9F04F122189B0AF -:1027D0008346974818F07EF8964815F011FD1D21A4 -:1027E00095484FF0000918F075F8012193480BF156 -:1027F000600A18F06FF880218E48C84615F0F4FC86 -:102800008C4815F0FDFC1D218D4818F063F801215E -:102810008A4818F05FF80A21864815F0E5FC0BF1AC -:102820007B038448069315F0EBFC1FFA89F75FFAE7 -:1028300089F338460793FFF7C5FFB9F1000F40F061 -:10284000B9809BF882105C4601F0F00100F00F00A7 -:1028500001434FEA890584F8821009EB4906794C57 -:102860006B1C4FF47F010393AB1C0493EB1C05938B -:10287000731C0193B31C0293BBF86030994511D2CD -:102880009BF863300A0A052B1046DBF8683047D8FE -:102890009955090CDBF86830019A9854029ADBF8D4 -:1028A00068309954504614F035FD192015F0D4FFC6 -:1028B000BBF86030994511D29BF86330052BDBF8EB -:1028C00068301BD803F80680019ADBF8683003F8FB -:1028D0000280029ADBF8683003F80280504614F058 -:1028E00019FD192015F0B8FF574B9C4228D0BBF8B2 -:1028F000603054F8041F9945C2D3D3E703F805802C -:10290000039ADBF8683003F80280049ADBF8683039 -:1029100003F80280059ADBF8683003F80280DDE7EF -:1029200059550398DBF868301A540A0CDBF8683004 -:10293000090E04981A54059ADBF868309954B1E7E7 -:10294000069B13F8011F0C06069341D501F07F0189 -:102950000139C9B2092950D83A4B53F82110BBF8B4 -:102960006000814510D29BF863000528DBF8680001 -:1029700045D881550C0ADBF86800090C019BC4544A -:10298000029BDBF86800C154504609F1010914F0BC -:10299000C1FC052015F060FFB9F1060F7FF445AFCB -:1029A00000212A4817F096FF224809B0BDE8F04FF1 -:1029B00015F026BC079B0BEB5704DB0794F882103D -:1029C0007FF542AF01F00F0141EA0010C1B240E7CC -:1029D000BBF8BE00C0F340018007C0D5B9F1000FBD -:1029E0001ED0079B7F08DA071BD55F4497F882103B -:1029F0000909174B53F82110B1E70021AFE7415502 -:102A00000C0ADBF86800090C039BC454049BDBF838 -:102A10006800C154059BDBF8681001F80380B3E738 -:102A20004F465F4497F8821001F00F01E1E700BFC5 -:102A300080400020A84B002094400020EC23002080 -:102A4000B4400020440F0020480F0020583C0020D4 -:102A50006C0F0020052900F28C80FF2A034670B518 -:102A600000EB010595F87C4008D07F2A00F0E68055 -:102A7000104638B9240600F1848070BD04F00F00C0 -:102A80000028F7D0260675D40A2A00F0DB8000F073 -:102A90007F02013AD2B2092A71D8934C54F822200D -:102AA000B3F86040A14212D293F86340052C00F2C3 -:102AB000DD809E6E01EB41044FEA122C3255120C60 -:102AC0009E6E264486F801C09E6E2644B27060F069 -:102AD0007F0200F00F00D2B285F87C2002F00102E4 -:102AE0001C68B4F84A5045FA01FC0CF0010C9445FE -:102AF0000BD0002A00F0CD8001228A401543ADB2F0 -:102B00000122A4F84A5084F84C20B4F84E20C0F3B7 -:102B1000400642FA01F505F00105B5420BD001254A -:102B20008D40002E00F0BA802A4392B2A4F84E20C5 -:102B3000012284F85020B4F85220C0F3800042FAF9 -:102B400001F505F0010585420CD0002800F0A980B0 -:102B5000012000FA01F10A4392B20121A4F85220A7 -:102B600084F85410B3F8BE2042F00102A3F8BE204E -:102B700070BD704704F07F04A04285D170BD002273 -:102B80008EE7B3F8BE40A2070ED5002900F0A4805E -:102B9000CE074FEA510240F1A0801A4492F88220F9 -:102BA0001209524850F82200B3F86020914211D225 -:102BB00093F86320052A7AD89C6E01EB4102060A3D -:102BC000A054000C9C6E144466709C6E1444A0705B -:102BD000B3F8BE40002285F87C201A68B2F84A009B -:102BE00040FA01F5ED0707D5012582F84C508D40DC -:102BF00020EA0500A2F84A00B2F84E0040FA01F5BA -:102C0000EE0707D5012582F850508D4020EA0500D7 -:102C1000A2F84E00B2F8520040FA01F5ED0708D5CF -:102C2000012505FA01F182F8545020EA0100A2F8CA -:102C3000520044F00104A3F8BE4070BD0846FFF7FF -:102C4000C1FD16E7B3F860209142BFF440AF93F89E -:102C5000C22093F8C140120442EA042293F8C04013 -:102C6000224393F86340052C7FF623AF9C6E160A2F -:102C700004F82120120C9C6E04EB810466709C6E9B -:102C800004EB8104A27000249A6E02EB8102D470DE -:102C90001DE701228A4025EA020531E722EA050202 -:102CA00044E7012000FA01F122EA010255E79A6E99 -:102CB000040A02F82100000C9A6E02EB81025470A3 -:102CC0009A6E02EB8102907000209A6E02EB8102F4 -:102CD000D070B3F8BE407DE70A461A4492F88220CD -:102CE00002F00F025DE700BF440F00206C0F0020D0 -:102CF00008B5034643F63C001844FFF765FD08BDE0 -:102D00002DE9F84F00F58056002341F2B75941F202 -:102D1000B858B6F84A28054641F2B95A00F5405469 -:102D2000D243D6F86C78A6F84A28B6F84E28D24393 -:102D3000A6F84E28B6F85228D243A6F852283A7878 -:102D400003EB830099B202EB421E4FEA830C02EBC5 -:102D50008E0E70444FEA421E284410F809B00BF161 -:102D6000FF30C72800F2C280D6F8000800EBCB0085 -:102D700090F8320096449C4402EB8E0262442A444E -:102D800012F808C00CF1FF3EBEF1C70F40F291806F -:102D900012F80AC00CF1FF32C72A40F2B0800028B6 -:102DA00074D00120002B76D194F8BE289C4602F006 -:102DB000F00200F00F0010430133A444062B8CF8FE -:102DC000BE08BCD143F63C080027A844B9B201377D -:102DD00000224046FFF73EFE062FF7D10023D4F82D -:102DE0003C0843F6B801B4F8FA28A0F84A30A0F835 -:102DF0004E3002F00202A0F85230C4F8C83842F057 -:102E00000102C4F8D038C4F8D838C4F8E038C4F89F -:102E1000E838C4F8F0386B5029448B80C8F8B830D3 -:102E2000A8F8BC30D6F8FC17A4F8FA284968C1F312 -:102E30008041B1EB520F27D099421E460CBF0123AF -:102E40000323A4F8FA3843F6B7042C440AE0954269 -:102E500006F10106257014BF2A46FF22FFF7FAFD8E -:102E6000062E11D014F8013FB1B24046002203F003 -:102E70007F0563F07F071B06E9D4B1B201362770E6 -:102E8000FFF7E8FD062EEDD1BDE8F88F0846FFF705 -:102E900099FC002B88D004EB51024FEA510CC90772 -:102EA00092F8BE2883D502F00F0242EA0010C0B2A9 -:102EB00082E712F80AE0D6F800280EF1FF3B02EB99 -:102EC000CC0CBBF1C70F9CF832C011D802EBCE027C -:102ED00092F83220F8B1BCF1000F17D00320002A7D -:102EE0003FF460AF40F00400C0B25BE7002041E770 -:102EF000D0B1BCF1000F14BF0320012052E7D6F877 -:102F0000002802EBCC0292F8322048B1002A14BF0C -:102F10000520012046E7BCF1000F01D00220DEE7CA -:102F2000002AB3D004203DE7BCF1000FAED0022050 -:102F300038E700BF2DE9F04F00F5805387B043F626 -:102F40003C0A43F6B808049343F6C4030026074638 -:102F5000C318824480440593049B41F2B65106EBAA -:102F6000860243F6C809D3F86C0885231FFA86FB4E -:102F700000240578B94413FB051515443D44E3B21C -:102F80000E220221384602930023019315F8013FD7 -:102F900000935B46F6F738FE01286AD9022873D001 -:102FA000032800F08B80FF280ED098F80020012322 -:102FB000410702F0070203FA04F362D51A43D2B2C2 -:102FC00059465046FFF746FD0134032CD7D1013650 -:102FD00008F10108062EBFD143F6F4060025059C32 -:102FE0003E44DFF83881A94663689BB1D8F80020D9 -:102FF0002188D31A8B420DD3C4F80490A9B216F8D5 -:103000003C3C5046327803F007035A40FFF722FD5C -:1030100086F80090013508340136062DE4D107F515 -:103020004054B4F8FA38DA070DD523F001030AF159 -:103030006000A4F8FA3814F06DF9B4F8FA3823F007 -:103040000C03A4F8FA38049A92F84C38002B53D1A8 -:1030500092F85038002B3ED192F85438002B57D1BB -:1030600007F50053D3F8CC3C5B033BD407B0BDE875 -:10307000F08F98F80020012302F00702A3400028F7 -:103080009CD122EA03029BE7012298F83C30594682 -:103090005046A240D2B2134388F83C3098F8003032 -:1030A0001A4388F80020FFF7D5FC9623059A22F8EA -:1030B00036301A4B1B6849F8363085E798F80020FF -:1030C000012359465046A34002F007021A43D2B2E8 -:1030D000FFF7C0FC78E70499002291F8543881F892 -:1030E0005028ABB942F69C4001220E21384407B06B -:1030F000BDE8F04F0DF0E4BC0499002291F850387F -:1031000081F84C28002BE6D191F85438002BE9D0F7 -:103110000023049A82F85438E4E700BFE8BA00209C -:1031200000F5805393F864299107C2F3400004D559 -:1031300022F00202012083F86429704701EB411359 -:103140008C4601EB8303034403F5AB53F0B51B78C6 -:1031500000248BB08646013B059408948DF82440EA -:10316000CDE9064414469AB27F2A23D800F580524E -:1031700003EB03136F46D2F800683D461E44D6F8B1 -:103180008436D6F87806D6F87C16D6F880260FC591 -:1031900096F888362B709DF80030B3B90EF5805E36 -:1031A0000D4920469EF8082862440BB0BDE8F04067 -:1031B00019F0B2B96F4605AE3D460FCE0FC5336864 -:1031C0002B709DF80030002BE8D03946204619F0CE -:1031D0009BFD0BB0F0BD00BF441D00202DE9F04F5A -:1031E00000F5805A15460C468FB0DAF86C288146F7 -:1031F0001178A14202D0002B00F007811470142135 -:10320000AC4817F067FB0121AB4817F063FBDAF815 -:103210006C38AA481978013114F0E6FF0121A6485C -:1032200017F058FB0121A64817F054FB0121A248D2 -:1032300017F050FBDAF86C280023A04811780A2216 -:1032400014F0FAFF01219C4817F044FB01219D482E -:1032500017F040FB42F69C4398481C4614F0D0FF00 -:1032600009EB04031C460393DAF86C3820461978FE -:1032700005F06AFC012120460DF0FEFA002D40F019 -:10328000FE80484643F6A744FEF7FAFB43F6753343 -:103290004C44FF204B4400224FF0000103F8010C86 -:1032A000DA77223303F8222C03F8182C03F80B2CBE -:1032B00003F80A2C23F8092C03F8071C23F8052C23 -:1032C000A342E9D143F6A84343F6485409F54056D2 -:1032D0004FF6FF724B444C4400257B4F4FF00108E2 -:1032E00086F8BC0C86F8BD1C86F8BE1C86F8BF0CA0 -:1032F00086F8C01C86F8C11C86F8C20C86F8C31C70 -:1033000086F8C41C86F8C50C86F8F10C86F8C61C35 -:1033100086F8C71C86F8F41CA6F8F22CA6F8F62C42 -:1033200086F8F82C83F8511083F87210E9B24B1E1E -:10333000042B00F2BD80DFE803F00358560454006C -:103340002021E023384687F8308187F8A53087F8B8 -:103350002F8110F0F7F80121384610F001FAD6F865 -:103360003C3B05EB450ED6F8402B5B7A41F2D45C32 -:103370000121204603EB431B0D4403EB8B037344F5 -:103380001A4412F80CB011F083FB4FF6FF73FF22C2 -:103390001BF0020F04F809BC04F8082C24F8063CC2 -:1033A00024F8043C23D1062D04F13804BED1B6F82C -:1033B0005C33002223F00803A6F85C33FF2386F871 -:1033C000AC37DAF87C38C6F86C231BB1DAF86C2815 -:1033D000107898479AF864399B0740D40FB0BDE83D -:1033E000F08F0221ADE70821ABE71021A9E714F81F -:1033F0000C3C0022CDF80480204614F80BCC11467A -:10340000CDF800C010F0D2FCCDE7CDE90933CDE90D -:103410000B338DF834309AF8643943F002038AF89C -:103420006439137803EB431203EB8203034403F57F -:10343000AB531B78013B9AB27F2A24D90DF1100CB3 -:1034400009AF66460FCF0FC63B683370224663460E -:103450000121484602F0B8FEDAF86C28CEE603985F -:1034600005F05EFB0028B9D009F50059D9F8CC3C2D -:1034700043F48023C9F8CC3C0FB0BDE8F08F484638 -:10348000F1F740F8FDE603EB0313DAF800780DF1ED -:10349000100C1F446646D7F88436D7F87806D7F85C -:1034A0007C16D7F880260FC697F888363370CDE79C -:1034B000012146E7FC290020EC230020A84B002036 -:1034C0003C240020142B0020F8B00020042902D94D -:1034D000012B00D07047FFF781BE00BF00F580517F -:1034E0000123D1F86C181A460978FFF777BE00BFA0 -:1034F00010B500F580549DF808C0D4F86C486345B9 -:1035000094F800E09DF80C4012D30CF1FF33DBB2CD -:10351000032B4FF0000301D94FF0040C71B1A64406 -:103520003AB3E64527DD9C46BCF1040F11D910BD26 -:10353000BCF1040FF2D94FF0040CEFE7AEEB040E30 -:1035400072B99E45B8BF9E465FFA8EFCBCF1040F6F -:10355000EDD8002361461A46BDE81040FFF73EBE95 -:103560009E45F1DA002361461A46BDE81040FFF798 -:1035700035BEE645EDDC9E45A8BF5FFA8EF39C465E -:10358000D2E700BF00F58053D3F86C38197821B129 -:103590000139C9B2042901D97047042100231A4610 -:1035A000FFF71CBE00F58053D3F86C381978032957 -:1035B00005D801310023C9B21A46FFF70FBE002318 -:1035C00000211A46FFF70ABE70B500228AB04FF4F8 -:1035D000604C0446034600F1480180F8D120C0F851 -:1035E000D42083F8E120083383F8DA2083F8DB2045 -:1035F00083F8D420A3F8D6C083F8D8208B42F0D12A -:103600000120A36C84F8D000D3F8883003B1984728 -:1036100001260023094D0DF1140C0096CDE9013669 -:103620000FCDACE80F002A6812233146206CACF8AD -:10363000002005AA0DF00EFF0AB070BDF0080020B2 -:103640004FF07F0C02EA0C0201EA0C0102703F22EB -:10365000417000B503EA0C0E1CFB0323434A80F8BB -:1036600002E0A2FB03C29B1A02EB530292093F3A0B -:1036700042600B2974D8DFE801F01B21272D333974 -:103680003F454B5157063A4B1A889B78028183720B -:10369000384BFA22BEF13D0F1B688281036149D885 -:1036A000BEF1290F8CBF05230723C3725DF804FB0D -:1036B000314B1A889B7802818372E9E72F4B1A8875 -:1036C0009B7802818372E3E72D4B1A889B780281F5 -:1036D0008372DDE72B4B1A889B7802818372D7E7D0 -:1036E000294B1A889B7802818372D1E7274B1A886D -:1036F0009B7802818372CBE7254B1A889B780281E5 -:103700008372C5E7234B1A889B7802818372BFE7D7 -:10371000214B1A889B7802818372B9E71F4B1A8864 -:103720009B7802818372B3E71D4B1A889B780281D4 -:103730008372ADE7BEF1400F03D80123C3725DF879 -:1037400004FBBEF1540F03D80923C3725DF804FBD8 -:10375000BEF1690F94BF19233923C3725DF804FBCE -:10376000104B1A889B780281837291E7110804023A -:1037700048190020E8BA00201C1900202019002058 -:1037800024190020281900202C19002030190020AD -:1037900034190020381900203C190020401900205D -:1037A000441900204C1900202DE9F84304460D4629 -:1037B000174612F085FBD4F80427A368D06D003BB0 -:1037C000C0F3C00118BF01238B420BD1A3682BB1FA -:1037D0000021204613F0D0F90646A8B9002630464D -:1037E000BDE8F883A36863B140F00800D4F800375F -:1037F000D065D3F88430002BE8D0C0F3C0009847E0 -:10380000E4E720F00800F1E705F105090021FE22B8 -:103810004846884619F000F8202385F8018085F88D -:10382000028085F8038085F804802B7094F8563068 -:1038300003F108026B70D2B2072A10D8DD23D340FF -:10384000DB073ED5002FCAD0FE22414648464646F9 -:1038500018F0E2FF012385F801802B70BFE794F890 -:103860005720EF2BEA7094F858202A710CD8B02B0F -:1038700006D01CD8A02B03D003F0EF03802BAED1D1 -:1038800094F85530AB70AAE7F02BA8D185F80380E7 -:1038900085F80480B4F85770FE2F0FD89FD004F13C -:1038A000590148463A4615F0F5F8EF7097E7E02BD6 -:1038B000E6D003F0EF03C02B91D1E1E785F801805A -:1038C0008DE794F85730EB7094F858302B7186E7F9 -:1038D000F0B54B780C460A78C3B08978002B34D009 -:1038E000013A05461F2A30D8DFE802F05D4B2F541D -:1038F0002F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2FD8 -:103900002F2F2F2F2F2F2F2F2F2F2F31F32B6AD920 -:10391000F62B5CD1530718D5D5F804311B6D1BB1BC -:1039200031462046984780B10023276804F10801FA -:10393000FB223F9368466368419315F0ABF83A4623 -:10394000419B314628460FF0E1FB43B0F0BD05F541 -:10395000805696F8902296F8910296F88F62002E83 -:10396000F3D0B02B06D027D8A02B03D003F0EF075D -:10397000802FEAD1D70725D50028CDD08842E4D1C1 -:10398000CAE705F5805696F8842296F8850296F8DF -:103990008362E4E705F5805696F8872296F8880258 -:1039A00096F88662DBE705F5805696F8812296F850 -:1039B000820296F88062D2E7E02BDBD003F0EF07BB -:1039C000C02FD7D0F02BA1D19007BED5A4E70833E4 -:1039D000DBB2072BB9D8DD2121FA03F3D907B4D51F -:1039E0001207B2D598E7F02B94D8AEE7F8B50446A5 -:1039F0000D46164614F084FFA36B206333B19D4A35 -:103A00001268D31AA28E934280F08A80237D13F02D -:103A100001072CD1002E7FD1002D34D022681178DF -:103A200092F82E2911422ED04FF4FA62914EA4F84A -:103A30004C2043F008022275326822652AB13168B1 -:103A40008A1AB2F5FA6F80F0D8800023237194F8B7 -:103A50003C30002B00F0FD800C2BA27F40F08B80CF -:103A600042F00102A277013384F83C300CE043F0CD -:103A70000801A26C21754AB914F042FFA2692369BA -:103A8000801A834256D900273846F8BD7948006825 -:103A9000821AB4F844008242EED30022A589A264BF -:103AA000CA07E9D5A5F11E02B2F5877FE4D8A2685E -:103AB0001288AA4202D043F00C03237517216E48E6 -:103AC00016F008FF01216D4816F004FF29466C48E6 -:103AD00014F08AFB0121694816F0FCFE03216948B5 -:103AE00016F0F8FE0121654816F0F4FEA36864485C -:103AF000198814F079FB624814F082FB624B634A28 -:103B0000A168B3FBF5F3A2FB03230D801B0923611E -:103B100014F0F6FEA061AFE7277184F83C707BE7F4 -:103B20000023A36384F83C3084F828302362636266 -:103B3000A3776BE713442068F822A361002390F871 -:103B40002D190DF07FFC23790133DBB20C2B23718F -:103B500005D1237D002743F01003237594E7227DD0 -:103B6000172B02F0EF0222758DD9002342F01202CA -:103B70002371227588E7172B02F0FE0243D942F029 -:103B80000102A27714F0BCFE236CC01A07EE900A63 -:103B90009FED344BB8EE677B9FED345B87EE046B93 -:103BA00085EE067BB8FE477BBDEEC77B17EE103A6D -:103BB0009BB2A3F11E02B2F5877F98BFA38314F0D6 -:103BC0009FFE0123A28B84F83C30A36820641988EF -:103BD000914244D06421A4F844103168A1641A8051 -:103BE000237D43F00203237529B133685B1AB4F8CF -:103BF00044108B4209D22F4646E723F00803237571 -:103C00000023236521E7A2772DE7A38900219342B2 -:103C1000A164F0D0A28107211D482F4616F05AFE5C -:103C20000121164816F056FEA3681548198814F0AD -:103C3000DBFA0121114816F04DFE0821154816F057 -:103C400049FE0F4814F0DCFA237D43F0040323758A -:103C50001AE714F055FE94F83C302064FCE6A16CA1 -:103C6000BDE700BF0000000000408F4000000000E2 -:103C7000004CED40E8BA0020E0180020EC230020C2 -:103C8000A84B0020F818002000879303ABAAAAAA2B -:103C9000FC180020CC1D002084B0F0B5ADF5017DEE -:103CA000044687AD85E80E009DF82632BDF81F62F8 -:103CB000132B17D8DFE803F077161C161616161606 -:103CC00016161616161616160A233660A36CD3F8A7 -:103CD0008C403CB18BA9F322684614F0DBFE95E8DA -:103CE0000F00A0470DF5017DBDE8F04004B070471E -:103CF0000DF5017DBDE8F04004B0FFF765BC082E6E -:103D0000F0D99DF827229DF82832511E3D2902D86E -:103D1000825C80F8CB205A1E3D2AE3D8E35C84F80D -:103D2000CA30DFE7294640F203123FA814F0B2FE82 -:103D3000711E9DF807310729C8DD0722C3F1080C61 -:103D400008E086F8582003EB0C02013392B29BB2D4 -:103D50008A42BBDA3FA8E61802445279A2F1200059 -:103D60005E2888BF2022372BEBD9702B04EB030091 -:103D700098BF80F85920E6E7164B01263FAD002793 -:103D80000296009693E807000C2385E80700206C54 -:103D90002A46314601970DF05DFB0DF5017DBDE82A -:103DA000F04004B0704700230B4E01273FAD019354 -:103DB000029700970FCE0FC533683FAA3946206C93 -:103DC0002B8012230DF046FB0DF5017DBDE8F04080 -:103DD00004B07047180900200409002084B030B5F1 -:103DE00083B004460DF11C0C8CE80E00637BBDF81B -:103DF0001F10DD079DF81F009DF820C09DF81D20B5 -:103E000004D5657E9DF81CE0754504D003B0BDE87F -:103E1000304004B07047EF2A21D802F0F002B02AF7 -:103E2000F4D1227E9DF81E309A42EFD16628EDD162 -:103E30000E2184F81AC04F4816F04CFD01214E485F -:103E400016F048FD00230A22A17E4C4814F0F4F934 -:103E50004A4803B0BDE8304004B014F0D1B9F82AA4 -:103E600009D1474A43F002034FF4FA6112686373C1 -:103E700021826261CAE7FA2A11D1227A2AB1627AD2 -:103E80001AB1022243F00803227323F01003112118 -:103E90003C4843F00403637316F01CFDD8E7FC2A8A -:103EA00008D123F06403002243F0100322736283DD -:103EB0006373ABE7F02A9DF822309DF823509DF8FC -:103EC00024009DF825C0A1D1A3F17F030A29B3FAEC -:103ED00083F34FEA531398BF00237F2D14BF0023B1 -:103EE00003F00103032814BF002303F00103002B98 -:103EF0008CD0BCF1020F89D19DF828309DF8291093 -:103F00005B429DF82720A17207EE903A217A9DF836 -:103F10002A30B8EEE77B8A42E372607A27EE077BAD -:103F20002272FCEEC77BCDED017A9DF804306372FE -:103F300002D198423FF46AAF1821134816F0CAFC28 -:103F400001210D4816F0C6FC00230A22217A0B48F5 -:103F500014F072F90121084816F0BCFC01210B484D -:103F600016F0B8FC0121044816F0B4FC00230A2224 -:103F7000617A6AE764180020EC230020A84B002037 -:103F8000E8BA00207418002088180020A418002027 -:103F900084B02DE9F04F2DED028BADF5117D9DAC78 -:103FA00084E80E009DF87562002E00F09A8006F1FC -:103FB00008039DF87722054600F5805ADBB23F9250 -:103FC000072B2ED8DD2222FA03F3D80729D5A6F134 -:103FD000F801FA2E3E96B1FA81F14FEA511140F004 -:103FE00030820122002105F54650FFF7FFFC002832 -:103FF00040F0FE802846F0F7D5FF284602F02CFB63 -:104000009DF874229DF87632012A9DF878922BD182 -:1040100005F5405797F80023D20725D50DF59E7872 -:1040200051E1DAF85C38EF2E43F00103CAF85C384E -:10403000CDD8002206F0F00305F5465011463E9318 -:10404000FFF7D4FC002840F008822846F0F7AAFFCA -:10405000284602F001FB9DF874229DF87632012A71 -:104060009DF8789200F09A8043F2202B0DF59E780F -:10407000AB4440F203129DA9404614F00BFD98F8A2 -:104080000130F02B04D1B8F80390B9F1040F4BD8EC -:10409000F722A0A968460BF5AE6B14F0FBFC9DABB4 -:1040A00058460ECBFFF79AFE9AF8CC3ADF0709D5AF -:1040B0009AF8C13903F0F003B02B00F09881C02BBF -:1040C00000F095813E9BF82B13D0310616D4A0A9A1 -:1040D000F722684614F0DEFC9DAB28460ECBEFF7C6 -:1040E0002BFB0DF5117DBDEC028BBDE8F04F04B04C -:1040F0007047DAF8AC3853B19847E8E70C36F6B2B7 -:10410000092E04D840F20B23F340DC07DFD4DAF8A1 -:10411000A868002EDBD0A1A9F322684614F0BAFCEF -:104120009DAB0FCBB047D2E798F80620002AAFD15D -:1041300098F80730012BABD198F80830742BA7D131 -:1041400098F80A10A1F11003012B00F2358505F54E -:104150004057102900F0798597F87333DA0797D51F -:104160000BF59A730A394093092991D801A353F8A2 -:1041700021F000BF4B650100B564010055640100EA -:104180008B630100EF62010091620100055D010097 -:1041900039610100055D0100FB6101000DF59E78AC -:1041A00005F5405797F80023D20740F11C813E9A4D -:1041B000B02A40F084803F9BA3F13000C0B20728B2 -:1041C00000F26786D7F8783207EBC00743F2202B5E -:1041D00087F81093D3F8A070AB44002F3FF449AF99 -:1041E000C9F30113C9F3801209F00F01B84740E782 -:1041F0002846F3F75FFFDAF8B038002B3FF425AF1D -:104200009847FE2E09D1AA4B05F540571B68C7F801 -:10421000E4314FF4FA73A7F8E03128460DF59E78A3 -:10422000F0F7C0FE284602F017FA40F203129DA9EB -:10423000404614F02FFC9DF874229DF87632012A36 -:104240009DF878929DF87A129DF87B029DF87C4249 -:104250009DF87DC240F0C7803E9FF02FA0D13F9FC8 -:1042600047EA092EBEF1060F40F2BD80014340F03F -:10427000BA80662C40F0B780BCF1100F40F0B380DC -:1042800043F2202B88F802303F9B6846AB4488F805 -:10429000002088F8033041F266030BF11007A8F8FC -:1042A0000610A8F8083052A9F72288F8049014F0F4 -:1042B000F1FB384698E80E00FFF7EEFCD9E63E9A8F -:1042C000D02A00F0B1853E9A22F01002802A5ED1F9 -:1042D0003F9B072B40F2BB863F9BA3F10800C0B277 -:1042E000072840F2F0863F9BA3F11000C0B20728D8 -:1042F00040F26D873F9BA3F1180B5FFA8BFBBBF17C -:10430000070F40F2D1873F9B283B3D2B6BD8DFE85E -:1043100013F0EE03A603CA038203DC0394036A00CE -:104320006A006A006A00B80370036A006A006A00E3 -:104330006A006A006A006A006A006A006A006A002D -:104340006A006A006A006A006A006A006A006A001D -:104350006A006A006A003F04F7031B04AF032D04E0 -:10436000D30309048B036A006A003604E5031204D0 -:104370009D032404C10300047903670355035E030E -:104380004C036A006A006A006A00430327033E9AEE -:10439000E02A28D1013B4FEAC912D8B23F9B02F470 -:1043A0007E5203F07C0141F6FC43082841EA0201F9 -:1043B00043F6FB1211FB02313E4B4FEAD101A3FB46 -:1043C00001314FEA1121A1F500510BB200F0BE8777 -:1043D00003D807EBC002A2F80E33D7F87832D3F82F -:1043E000A43003B1984743F2202BAB4441E60AF5D1 -:1043F000805393F8EF3223B19AF8C2299A427FF49E -:1044000061AE05F500539AF8C02993F8ED321A42CF -:104410003FF458AE3E9BC02B7FF454AEDAF8FC3725 -:104420009B6803F00303022B20D0032B28D0012B21 -:104430007FF44BAE00233F9928461A46FFF746F813 -:1044400043E6A6F1FB0205F54650B2FA82F25209A4 -:10445000FFF7CCFA00283FF4D4AE2846F3F72AFE43 -:10446000DAF8B038002B7FF4CBAECAE63F9943F2BE -:10447000EC10002301F007022844C908EAF766FAA5 -:104480000B210D4816F026FA01210C4816F022FAED -:104490003F9C00230A222146094813F0CDFE08481C -:1044A00013F0AEFE214605F54850EAF751FB0CE645 -:1044B000E8BA0020415254238C1E0020EC23002037 -:1044C000A84B0020D7F8582343F2984998F80B10CE -:1044D000D36DA9440C4623F001034846D36598F8F0 -:1044E0000C2098F80D8008EE102A4346FFF7A8F834 -:1044F00097F8A334DA070FD4D7F85433D3F804313C -:10450000D3F8DC300BB1012098471221AE4816F0E9 -:10451000E1F9AE4813F074FED7F85433D3F8043100 -:10452000D3F8E0300BB148469847D7F85833B3F882 -:104530006030DB057FF5ACAD1321A54816F0CAF954 -:104540000121A44816F0C6F900230A2221469F48FB -:1045500013F072FE01219F4816F0BCF9002318EEFB -:10456000101A0A22994813F067FE0121994816F0A3 -:10457000B1F9414600230A22944813F05DFE9348A6 -:1045800013F03EFE84E508EB090397F89424DB78EA -:104590009A4287F8943407D0D7F85433D3F80431CB -:1045A000D3F8D83003B19847A9F102031FFA83FE6C -:1045B000BEF1060F40F2F28443F2AC404FF0060C1D -:1045C0003446284408E00CF1030C08F103081FFAF4 -:1045D0008CF39E4540F2E1840CF101039945F2DD34 -:1045E00098F80C1098F80B30C90198F80D6003F09A -:1045F0007F0301F080011943A1F12503DBB29F2B5A -:10460000E1D8002302E001335B2BDCD010F833202B -:104610008A42F8D13B4483F83964D4E798F80B8098 -:104620004FF00009D7F8583387F8778387F87893E5 -:10463000B3F86030DB057FF52BAD1021664816F02E -:1046400049F94B4641460222604813F0F5FD5F48A8 -:1046500013F0D6FD97F87733DC0700F195869807BD -:1046600000F1878659077FF513AD16215B4816F0D8 -:1046700031F9564813F0C4FD0AE5A9F10B0346A928 -:10468000DAB200230C46012A41928DF82831CDE997 -:104690004633CDE9483308D9112A28BF11221146E3 -:1046A0000732D2B24A45C0F2C38598F80B80B8F100 -:1046B000070F00F2278497F8963443F2B139214668 -:1046C0007F2B4FF0110303FB085308BF87F88E833D -:1046D0009944484618F044F9A0EB090083B2002B36 -:1046E00000F0108418464B4413F8012C202A40F0A7 -:1046F0000984002800F00684002104E000F202840E -:104700004B4500F0FF8313F8012D002AF8D0202A32 -:10471000F4D11970F4E746AB00211D2247A81C46CE -:10472000469118F079F8A9F10B03DBB2012B419304 -:1047300004D9083300214B45C0F2618598F80C205C -:1047400098F80B30D20103F07F0302F47E5213433A -:10475000B3F5806F80F23184B7F88C139AB2994226 -:1047600005D097F8953443F0010387F8953443F268 -:1047700090382146A7F88C23A844404618F0F0F85A -:10478000A0EB080083B2002B00F017849844184671 -:1047900018F8013C202B40F01084002800F00D8414 -:1047A00043F29031084429442B18002004E000F221 -:1047B00004848B4200F0018413F8012D002AF8D004 -:1047C000202AF4D11870F4E7641E0020A84B0020C2 -:1047D000781E0020EC2300200C1E00204C1E002020 -:1047E00098F80B80B8F1070F0ED897F88E3387F83A -:1047F0008E83434508D0D7F85433D3F80431D3F827 -:10480000D4300BB1404698474FF0000940987F22C2 -:104810000E214B46CDF80090EAF7A0FFD7F85833A9 -:10482000B3F86030D8057FF533AC1321DD4816F0BE -:1048300051F80121DC4816F04DF84B4641469AE606 -:10484000B9F1070F00F26E84002143F2AC4398F8EF -:104850000D904FF000082B4404E008F10108B8F176 -:104860005B0F6CD013F838208A42F6D107EB0802B0 -:104870004FEA490192F8393401F00E0123F00E039A -:104880000B4382F83934D7F85833B3F86030DA057F -:1048900055D51B21C54816F01DF80121C24816F058 -:1048A00019F8409B03EBC80808F25918404618F065 -:1048B0000DFB0146404616F00DF80121BA4816F0EE -:1048C00009F8494600230A22B94813F0B5FCB84854 -:1048D00013F096FC33E0B9F1070F00F20F840021CA -:1048E00043F2AC4398F80D904FF000082B4404E0DD -:1048F00008F10108B8F15B0F21D013F838208A4283 -:10490000F6D107EB080393F83924B9F1000F00F052 -:10491000C88342F0010207EB080383F83924D7F873 -:104920005813B1F86010C80500F10F84B844B9F10C -:10493000000F00F0B18342F0010288F839249D4B4A -:104940004FF4FA62A7F884231A681B68C7F8882313 -:10495000C7F8803341F28833A7F87C33FFF798BB60 -:10496000D7F80433B9F1000F00F0428543F000534B -:10497000C7F80433D7F87832D3F8BC30002B3FF4B3 -:1049800032ADB9F1000143F2202B3F9818BF01214D -:10499000AB449847FFF76DBBD7F80433B9F1000F6C -:1049A00000F02A8543F08053E2E7D7F80433B9F1E9 -:1049B000000F00F0298543F00063D9E7D7F80433EE -:1049C000B9F1000F00F01C8543F00073D0E7D7F871 -:1049D0000433B9F1000F00F01B8543F08063C7E793 -:1049E000D7F80433B9F1000F00F0168543F0807357 -:1049F000BEE7D7F80433B9F1000F00F02D8543F07E -:104A00008003B5E7D7F80433B9F1000F00F014853F -:104A100043F40003ACE7D7F80433B9F1000F00F01A -:104A20003B8543F00803A3E7D7F80433B9F1000F3F -:104A300000F0FA8443F400439AE7D7F80433B9F15D -:104A4000000F00F0198543F0200391E7D7F80433F5 -:104A5000B9F1000F00F0F88443F4002388E7D7F899 -:104A60000433B9F1000F00F0278543F002037FE71C -:104A7000D7F80433B9F1000F00F0D28443F4006397 -:104A800076E7D7F80433B9F1000F00F0ED8443F076 -:104A900040036DE7D7F80433B9F1000F00F0D0847C -:104AA00043F4001364E7D7F80433B9F1000F00F0C2 -:104AB000FB8443F004035BE7D7F80433B9F1000F3C -:104AC00000F0B68443F4005352E7D7F80433B9F149 -:104AD000000F00F0D98443F0100349E7D7F80433FE -:104AE000B9F1000F00F0B48443F4003340E7D7F885 -:104AF0000433B9F1000F00F0E78443F0010337E716 -:104B0000D7F80433B9F1000F00F0AA8443F400731E -:104B10002EE7D7F80433B9F1000F00F0C18443F455 -:104B2000800325E7D7F80433B9F1000F00F0A8841B -:104B300043F480431CE7D7F80433B9F1000F00F0C9 -:104B4000BF8443F4802313E7D7F80433B9F1000F8F -:104B500000F08E8443F480630AE7D7F80433B9F198 -:104B6000000F00F0A58443F4801301E7D7F8043365 -:104B7000B9F1000F00F08C8443F48053F8E6D7F8C5 -:104B80000433B9F1000F00F0A38443F48033EFE65F -:104B9000D7F80433B9F1000F00F0268443F4807392 -:104BA000E6E600BFA81D0020EC230020F01D002039 -:104BB000A84B0020E8BA002008EB090350AFD878D2 -:104BC0000DF59F7303EB090C17F8013F03F07F030A -:104BD000674582EA0302F7D105F54057D7F8583305 -:104BE000B3F86030DC0551D590423FF4B2AA0DF520 -:104BF000A0781021B84815F06DFE08EB090349466E -:104C0000B6481C4613F0F0FA0221B54815F062FED2 -:104C1000DFF8E8924096264618F8011F00230A2282 -:104C2000AE4813F009FB0121484615F053FE4645F6 -:104C3000F2D10121AB48409E15F04CFEA74813F07D -:104C4000DFFAA94B4FF4FA727CE697F8731311F070 -:104C500001011FD0D7F85813B7F85C33CA6DA248CA -:104C600043F0040322F00102CA65A7F85C3303682D -:104C7000C7F880330368C7F8643341F28833A7F874 -:104C80007C334B23A7F86033FFF702BA90423FF41E -:104C900060AAD6E7954815F01DFE904813F0B0FACB -:104CA0001221934815F016FE8C4813F0A9FA97F8D4 -:104CB000733398F8092013F0010319D1A2F1100100 -:104CC00098F8000002293FF6E3A987F8773387F8C0 -:104CD0007833C7F88033C7F888334FF4007387F808 -:104CE0007023A7F87433072387F8710387F87333A9 -:104CF0004FF6FF7243F2B13343F23941A7F88C23E8 -:104D00002B4487F88E232944002287F8952403F842 -:104D1000112B8B42FBD143F28C30002128440271CD -:104D2000AD305B2217F078FDFF2387F8943487F8C5 -:104D30008F3397F87033112B00F00283122B00F0A1 -:104D40009B82102B00F08D820DF58478002167483E -:104D500015F0C0FD614813F053FA2E21654815F097 -:104D6000B9FD5E4813F04CFA2E21624815F0B2FDF1 -:104D70005A4813F045FA00215C4815F0ABFD57483E -:104D800013F03EFA0C215C4815F0A4FD01215B48AC -:104D900015F0A0FD404618F099F80146404615F080 -:104DA00099FD0121554815F095FD0221544815F053 -:104DB00091FD0121514815F08DFD46A897F871131A -:104DC000ECF780FE46A9454813F0E8F9434813F094 -:104DD00017FA46A813F016FB0021444815F07AFD97 -:104DE0003E4813F00DFA2E21424815F073FD3B4862 -:104DF00013F006FA2E213F4815F06CFD374813F0EA -:104E0000FFF90021394815F065FD344813F0F8F931 -:104E1000D7F85433D3F80431D3F8C8300BB101209C -:104E20009847314B0A228DE5012B7FF4DCAA3F9B8A -:104E300005F54C5C03F00F01C3F302100E294FEA95 -:104E4000C00303F1110300F0C2820F2900F0B28207 -:104E50000D2911D005EBC00202F5405292F812E381 -:104E60008E4507D082F812131CF803E04EF0020EB4 -:104E70000CF803E082F81313D7F87832D3F898309F -:104E8000002B3FF4B0AA43F2202B9847AB44FFF726 -:104E9000F0B83F9B4A2B00F007813F9B4B2B00F063 -:104EA00087813F9B03F0F003402B7FF49CAA3F9B3C -:104EB00003F00F0009283FF696AAD7F87832D3F806 -:104EC000C030002B3FF48FAA43F2202B494698476D -:104ED000AB44FFF7CEB800BF4C1D0020A84B00200C -:104EE000C8230020DC1F0020E8BA0020583C002026 -:104EF000601D002058270020801D0020EC2300208A -:104F000000380020B7F85C23D106C2F3001340F14B -:104F1000158197F89634062B00F2FC800133DBB242 -:104F20009AB287F89634002340980E210093EAF74E -:104F300015FCD44BD7F8582319681B68B2F86020C9 -:104F4000C7F880334FF4FA63D005C7F88813A7F881 -:104F5000843341F28833A7F87C337FF599A8182170 -:104F6000C94815F0B7FC0121C84815F0B3FC41460B -:104F700000230A22C64813F05FF90121C34815F047 -:104F8000A9FC204617F0A2FF0146204615F0A2FC1E -:104F9000BF4813F035F9FFF77BB82646D7F85833EA -:104FA000B3F86030D9057FF5CAAC1421B94815F0C3 -:104FB00091FCB74813F024F9C1E497F8952412F056 -:104FC00001035CD0002322F0010240980E2187F8F3 -:104FD00095241A4687F896340093EAF7BFFBD7F872 -:104FE0005433D3F80431D3F8CC20B7F85C3343F012 -:104FF0001003A7F85C3332B1B7F88C03B0F5806FBB -:1050000028BF002090479F4BD7F8582319681B688A -:10501000B2F86020C7F880334FF4FA63C7F88813FA -:10502000A7F8843341F28833A7F87C33D3057FF5A2 -:105030002FA81421984815F04DFC0121934815F034 -:1050400049FCB7F88C13924813F0CEF895E7B9F104 -:10505000000F00F0A480013307EBC30292F8042391 -:1050600042F0010207EBC30383F80423D7F8783238 -:10507000D3F8B830002B7FF484ACFFF7B4B90093B9 -:105080007F2240980E21EAF769FBB7F85C3323F0E2 -:105090001003A7F85C33B6E722F0010288F8392440 -:1050A0004DE402F0FE0236E409F1FF333D2B3FF6FA -:1050B0009AA9B94443F2202B99F83032AB4487F8CF -:1050C000FB32FEF7D6BF431C07EBC30292F8042362 -:1050D000B9F1000F00F0C28042F0020207EBC303F7 -:1050E00083F80423D7F87832D3F8B030002B3FF49C -:1050F0007AA9B9F1000118BF0121C4E698F80C3073 -:1051000098F80B10DB0101F07F0103F47E53194383 -:10511000FFF7E6BB22F01002A7F85C237F2287F896 -:10512000962400E798F80C3098F80B10DB0101F09A -:105130007F0103F47E531943FFF787BB40981A465B -:1051400013210093EAF70AFBF3E61A21534841932F -:1051500015F0C0FB01214D4815F0BCFB409B03EB53 -:10516000C80202F259121046409217F0AFFE409A60 -:105170000146104615F0AEFB0121444815F0AAFB8C -:10518000B9F10001424818BF012113F02DF8404841 -:1051900013F036F8419B93F83924FFF7C7BB3F9BC8 -:1051A000013307EBC30292F8042302F0FE0259E731 -:1051B00009F1FF333D2B3FF616A9B94443F2202BEA -:1051C00099F83032AB4487F8FA32FEF752BF431CED -:1051D00007EBC30292F80423B9F1000F00F0C68078 -:1051E00042F0040207EBC30383F80423D7F87832B4 -:1051F000D3F8B430002B7FF47CAFFFF7F4B8419ABA -:10520000204617F009FBA9F1030022460823C0B28B -:1052100008EB03010133DBB24979834202F8011B39 -:10522000F6D10DF21713002241995A54FFF786BAAE -:105230000A4689462046194617F0EEFA419B52A9C4 -:105240002046002B14BF4A46012213F023FC0DF226 -:105250001712002302F80930FFF727BA02F0FD0207 -:105260003CE70F4A0DF5847807CA434603C323F889 -:10527000022B120C1A7069E50A4B0DF584784293E3 -:1052800064E500BFE8BA0020BC1D0020EC2300202C -:10529000A84B0020D81D0020901D0020981E002043 -:1052A000741D0020464D3900B9F1000F77D005EB91 -:1052B000CB0CB9F17F0F0CF5405C9CF80C3343F03C -:1052C00008038CF80C3329D143F2113343F25130E7 -:1052D00005F54C5E00212B44284487F801B35A7829 -:1052E00022B11A78597042F002021A70997008338C -:1052F0008342F4D1D7F87832D3F8A0301C466BB192 -:105300000EEBCB0E9CF8102358469EF81010C2F3FB -:105310000113C2F3801201F00F01A047D7F87832D1 -:10532000D3F8AC30002B3FF45EA8B9F10001584629 -:1053300043F2202B18BF0121AB449847FEF799BEDA -:105340000DF58478644BC8F80030FFE4A7F80A3301 -:10535000D7F87832D3F8A830002B3FF444A843F2B2 -:10536000202B08469847AB44FEF783BE02F0FB02B1 -:1053700038E71221594815F0ADFA594812F040FFAC -:1053800097F87733FFF76EB91421564815F0A2FA53 -:10539000534812F035FF97F87733FFF760B905EB04 -:1053A000CB0303F5405393F80C2322F0080283F853 -:1053B0000C23B3E71CF80320D40703D542F0020204 -:1053C0000CF8032022F001020CF8032054E51CF82D -:1053D0000320D40703D442F002020CF8032042F069 -:1053E00001020CF8032047E523F48073FFF7C0BAED -:1053F00023F00053FFF7BCBA23F08053FFF7B8BA8D -:1054000023F00073FFF7B4BA23F00063FFF7B0BADC -:1054100023F08063FFF7ACBA23F08073FFF7A8BADC -:1054200023F40063FFF7A4BA23F40043FFF7A0BA04 -:1054300023F40053FFF79CBA23F40003FFF798BA54 -:1054400023F40013FFF794BA23F40023FFF790BA74 -:1054500023F40033FFF78CBA23F08003FFF788BAF8 -:1054600023F40073FFF784BA23F04003FFF780BAF8 -:1054700023F48063FFF77CBA23F02003FFF778BAA8 -:1054800023F48043FFF774BA23F01003FFF770BAD8 -:1054900023F48053FFF76CBA23F00803FFF768BAD0 -:1054A00023F48003FFF764BA23F00403FFF760BA24 -:1054B00023F48013FFF75CBA23F00203FFF758BA16 -:1054C00023F48023FFF754BA23F00103FFF750BA07 -:1054D00023F48033FFF74CBA464D3300381E0020CA -:1054E000A84B0020201E002070B59DF810C09DF82C -:1054F00014E0002B47D0402BA8BF4023DEB200F5BC -:105500004054F44594F814580ED21EF0800F12D176 -:10551000A9B12B44002A3ED0734517DC634515DB47 -:1055200035445FFA85FC11E04FFA8EFCBCF1000FA8 -:105530004FF0000CECDC4FF07F0E0029E9D12ABBC4 -:10554000ED1A6545B8BF65465FFA85FC00F58050E9 -:1055500084F814C8D0F8DC380BB1604698470B21AA -:10556000114815F0B7F90121104815F0B3F994F876 -:10557000141800230A220E4812F05EFE0C48BDE803 -:10558000704012F03DBE01263346B8E7EB1A634582 -:1055900006DAF446DAE77345FBDC6345C0DAD5E7A3 -:1055A000AD1B5FFA85FCD1E760260020EC230020CC -:1055B000A84B002070B50D4600F5405182B091F81F -:1055C000146891F91418002905F1FF31B8BF0026BD -:1055D0000F2904D80446B2FA82F040090AB902B091 -:1055E00070BD114633462A46009004F5CE500BF0AC -:1055F00041FFFF21204604F58054334600912A469E -:10560000C02100F05FFED4F8E038002BE7D0304630 -:1056100002B0BDE8704018472DE9F8434FF001088B -:105620004FF0000941F6A8370446206803681B695B -:105630009847002840F3CF80206803685B6998474B -:1056400094F80F310546C6B223B12068314603688D -:105650001B6898472A0613D494F80E31002BE4D126 -:105660006279F02A00F0948020790028DDD00228A9 -:1056700000F0A980012800F0AA8001382071D4E749 -:10568000F22E13DCCF2E2FDCA02E22D01DDDB02E6B -:105690001FD0C02EC9D126F00F0306F00F0684F8E4 -:1056A000048084F80E916371A671BEE7A6F1F3033E -:1056B00008FA03F313EA070264D00023012066719D -:1056C000237184F80E31BDE8F88305F0EF05802DD5 -:1056D000ABD126F00F0306F00F0684F80E9163712C -:1056E0000223A6712371A0E7A6F1D003222B9CD838 -:1056F00001A252F823F000BF0B7301009F7201005A -:105700009F7201009F7201009F7201009F72010051 -:105710009F7201009F7201009F7201009F72010041 -:105720009F7201009F7201009F7201009F72010031 -:105730009F7201009F720100477301009F72010078 -:105740009F7201009F7201009F7201009F72010011 -:105750009F7201009F7201009F7201009F72010001 -:105760009F7201009F7201009F7201009F720100F1 -:105770009F7201009F720100237401000B730100EE -:1057800047730100F72E18D0DB077FF54EAF82E795 -:10579000B4F80821FD2A05D8531C2244A4F8083186 -:1057A000567242E7A4F8083184F80E813DE7F023F1 -:1057B0006671A4F80881637237E76379F02B0DD026 -:1057C0000120BDE8F883E67184F804802DE7267295 -:1057D0002371BDE8F8830020BDE8F88394F80E013A -:1057E00010B184F80E216EE7B4F8083101201A18C0 -:1057F0002344A4F808215E7265E700BF2DE9F84351 -:105800004FF001084FF0000941F6A8370446206820 -:1058100003681B699847002840F3CF80206803681D -:105820005B69984794F80F310546C6B223B12068EA -:10583000314603681B6898472A0613D494F80E3142 -:10584000002BE4D16279F02A00F0948020790028BE -:10585000DDD0022800F0A980012800F0AA800138DC -:105860002071D4E7F22E13DCCF2E2FDCA02E22D015 -:105870001DDDB02E1FD0C02EC9D126F00F0306F0BB -:105880000F0684F8048084F80E916371A671BEE758 -:10589000A6F1F30308FA03F313EA070264D0002326 -:1058A00001206671237184F80E31BDE8F88305F09C -:1058B000EF05802DABD126F00F0306F00F0684F81C -:1058C0000E9163710223A6712371A0E7A6F1D003A4 -:1058D000222B9CD801A252F823F000BFEF740100E4 -:1058E00083740100837401008374010083740100D8 -:1058F00083740100837401008374010083740100C8 -:1059000083740100837401008374010083740100B7 -:105910008374010083740100837401002B750100FE -:105920008374010083740100837401008374010097 -:105930008374010083740100837401008374010087 -:105940008374010083740100837401008374010077 -:1059500083740100837401008374010007760100E1 -:10596000EF7401002B750100F72E18D0DB077FF5CF -:105970004EAF82E7B4F80821FD2A05D8531C224413 -:10598000A4F80831567242E7A4F8083184F80E8171 -:105990003DE7F0236671A4F80881637237E7637905 -:1059A000F02B0DD00120BDE8F883E67184F8048067 -:1059B0002DE726722371BDE8F8830020BDE8F88347 -:1059C00094F80E0110B184F80E216EE7B4F8083196 -:1059D00001201A182344A4F808215E7265E700BF6D -:1059E00000222DE9F04F0546ADF20C5D114600F5A1 -:1059F000465005F58054FDF7F9FF002840F02D8151 -:105A000005F5405696F894315F0700F1D380D6F83B -:105A1000DC313BB1BF4FB6F8D8113A68D31A8B428C -:105A200080F02882D6F8E4313BB1BA4A1268D31A22 -:105A3000B6F8E021934280F0328205F5CE5600217F -:105A40004FF00109FE2206F105080F46404616F008 -:105A5000E3FE384684F8C17984F8C27984F8C379C2 -:105A600084F8C47984F8C09914F02CFB002840F025 -:105A7000DA813EAF40F203123146384613F00AF89D -:105A8000F72241A9684613F005F8284697E80E006A -:105A9000FEF77EFAFE220021404616F0BDFE0023EE -:105AA00094F8CC2A314684F8C13906F5366084F87A -:105AB000C239C2F3400284F8C33984F8C4390123DF -:105AC00084F8C039FDF770FE002840F07C810DF5A8 -:105AD000FE7A40F20312314642F2F4295046002782 -:105AE00012F0D8FFF72282A9684612F0D3FFA9442A -:105AF00028464FF0010B9AE80E00FEF749FAFE2205 -:105B00003946404616F088FE09F1040084F8C17950 -:105B100084F8C27984F8C37984F8C47984F8C0B968 -:105B200094F8CCAAFFF778FD002840F0F9800DF535 -:105B3000407A40F203123146002750464FF0010BE5 -:105B400012F0A8FFF722C3A9684612F0A3FF284667 -:105B50009AE80E00FEF71CFAFE223946404616F07F -:105B60005BFE09F58A7084F8C17984F8C27984F8FB -:105B7000C37984F8C47984F8C0B994F8CC9AFFF753 -:105B80003DFE002873D10DF20444314640F2031269 -:105B9000204612F07FFF0DF58261F722684612F071 -:105BA00079FF284694E80E00FEF7F2F90DF20C5D3D -:105BB000BDE8F08F23F004030E21574886F8943196 -:105BC00014F088FE554812F01BFBD6F88821B6F871 -:105BD000D21713888B4228D0A3F11E01B1F5877F1D -:105BE00023D8B6F8D017994200F05D8296F8C8170E -:105BF000002001F0FD01C6F8C40786F8CE07C807EB -:105C0000A6F8D037A6F8D23740F1558241F002010C -:105C100086F8C8174EF66021B1FBF3F33D49A6F8AC -:105C2000C03713880A68C6F8C427A4F8783912F078 -:105C300067FE04F688130022C4F880091A60D4F8BD -:105C4000B4381BB1D6F8882110889847D6F8883127 -:105C50002846198800F0E8FBD9E62846F2F72AFA28 -:105C6000D4F8B038002B3FF4CBAE9847C8E6FE22FC -:105C70003946404616F0D0FD042384F8C27984F8F2 -:105C8000C03905F5005384F8C37984F8C47993F8D2 -:105C90000D2402F1080184F8C129C9B2072900F2D4 -:105CA0006281DD22CA40D20740F1D98119F0020F8A -:105CB00040F0C18131463046FDF70AFE94F8C13903 -:105CC00083F080026F2A3FF65EAF94F8C229002A63 -:105CD0003FF459AF94F8C019013A43EA016302F066 -:105CE0000F0294F8C319134394F8C429120442EA2A -:105CF00001221A4303F0F003C02B40F0E28102F0CE -:105D00000F03C2F3062203EB831304EB430383F870 -:105D1000CD2A38E7E8BA0020EC290020A84B002063 -:105D2000FE223946404616F077FD022384F8C279F8 -:105D300084F8C03905F5005384F8C37984F8C47930 -:105D400093F8FD2202F1080184F8C129C9B207299C -:105D500000F2E880DD22CA40D10740F189811AF0C3 -:105D6000020F40F0728131463046FDF7B1FD94F8E4 -:105D7000C13983F080026F2A3FF6D9AE94F8C22968 -:105D8000002A3FF4D4AE94F8C019013A43EA016303 -:105D900002F00F0294F8C319134394F8C4291204B3 -:105DA00042EA01221A4303F0F003C02B40F0BC8109 -:105DB00002F00F03C2F3062203EB831304EB430349 -:105DC00083F8CD2AB3E631463046FDF781FD94F8DD -:105DD000C13983F080026F2A3FF679AE94F8C22968 -:105DE000002A3FF474AE94F8C019013A43EA016303 -:105DF00002F00F0294F8C319134394F8C429120453 -:105E000042EA01221A4303F0F003C02B40F07B81E9 -:105E100002F00F03C2F3062203EB831304EB4303E8 -:105E200083F8CD2A53E6FE223946404616F0F4FCAC -:105E3000C64B84F8C0991B7884F8C27903F1080234 -:105E400084F8C37984F8C479D2B284F8C139072AB6 -:105E500029D8DD23D340DB0740F1138194F8CC3AF5 -:105E6000980734D5FE223946404616F0D5FC84F812 -:105E7000C179FEE5002396F8E811C6F8DC31002967 -:105E80003FF4D0ADFE22D6F8D4010BF0DBFA4FF48C -:105E900096723B68A6F8D821C6F8DC31C2E500232B -:105EA000C6F8E431C9E5AA4AEF2BAA491278097865 -:105EB00084F8C32984F8C41900F2A680B02B11D04D -:105EC0000AD8A02B0ED003F0EF0080280AD031466C -:105ED0003046FDF7FDFCCCE5E02B03D003F0EF00EE -:105EE000C028F4D19C48007884F8C2090028EED07C -:105EF000090441EA0222411E01F00F010A43134343 -:105F000003F0F00243F08073C02A40F0EB8003F00E -:105F10000F02C3F3062302EB821204EB420282F863 -:105F2000CD3AD4E793F8FF12EF2A84F8C31993F817 -:105F3000001384F8C4194FD8B02A07D00BD9E02A2F -:105F400004D002F0EF02C02A7FF40DAF93F8FE32C6 -:105F500084F8C23907E7A02AF8D002F0EF02802ABD -:105F60007FF401AFF2E793F80F14EF2A84F8C31916 -:105F700093F8101484F8C41916D8B02A07D00BD996 -:105F8000E02A04D002F0EF02C02A7FF493AE93F827 -:105F90000E3484F8C2398DE6A02AF8D002F0EF0260 -:105FA000802A7FF487AEF2E7F02A7FF483AE84F88C -:105FB000C37984F8C479B3F81095B9F1FE0F6FD89E -:105FC0003FF478AE42F2114140464A46294412F06D -:105FD00061FD84F8C3996DE6F02A7FF4C4AE84F8BD -:105FE000C37984F8C479B3F800A4BAF1FE0F54D889 -:105FF0003FF4B9AE42F2013152464046294412F014 -:1060000049FD84F8C3A9AEE6F02B7FF460AF42EA05 -:10601000012384F8C37984F8C479FE2B1A460FFA59 -:1060200083F937D83FF453AF4C49404612F032FD64 -:1060300084F8C3994BE74046FE22394616F0ECFB44 -:1060400084F8C17984F8C0B99DE5FE2239464046FE -:1060500016F0E2FB84F8C17984F8C0B967E593F8DB -:106060000F2484F8C32993F8103484F8C43921E646 -:1060700093F8FF2284F8C32993F8003384F8C439D5 -:1060800071E6334B1B7884F8C339324B1B7884F8A4 -:10609000C4391CE784F8C17919E784F8C17962E64C -:1060A00084F8C17906E6D6F8C41700297FF4BDAD9F -:1060B00096F8C817A3E521F0020186F8C8171388DF -:1060C000B3E5B02B7FF45FAD02F00F03C2F30641DE -:1060D000C2F3062203EB831304EB4303134483F858 -:1060E000CF1A50E5B02A7FF4F2AE03F00F02C3F3EB -:1060F0000621C3F3064302EB821204EB42020A4478 -:1061000082F8CF3AE3E6B02B7FF4E1AC02F00F0364 -:10611000C2F30621C2F3064203EB831304EB4303ED -:106120000B4483F8CF2AD2E4B02B7FF400AD02F009 -:106130000F03C2F30621C2F3064203EB831304EB01 -:1061400043030B4483F8CF2AF1E400BF94BC002042 -:1061500092BC002093BC002091BC002040BB0020DA -:10616000032900D9704770B588B0054616460C461D -:1061700001A8EFF73DFC9DF81A309DF81B209E42C8 -:1061800003D39642334628BF1346281980F8293F87 -:1061900008B070BD032901D90020704730B50C4606 -:1061A000054689B0254401A8EFF722FC9DF81A00A6 -:1061B00095F8293F9DF81B20834203D3934228BFC3 -:1061C0001346184609B030BDF0B500F5805595B0BE -:1061D000D5F8C478BFB31E4601294FF0000314461A -:1061E00030468DF825100A928DF824300B9313D089 -:1061F0001D292AD01E2938D116F068FE00F10F03A0 -:106200001D2B0FD8621C33462A490CA8D2B216F0B7 -:1062100083F9D5F8C47807E016F058FE00F10D03B5 -:106220001D2B34D91D283CD90DF1340EEC4609AC98 -:10623000BEE80F00ACE80F009EE807008CE80700FE -:1062400094E80F00B84715B0F0BD16F03FFE00F11E -:106250000E031D2BE6D8621C334617490CA8D2B298 -:1062600016F05AF9D5F8C478DEE71F291ED116F0CA -:106270002DFE00F10C031D2BD4D8621C33460F49B0 -:106280000CA8D2B216F048F9D5F8C478CCE7621C55 -:1062900033460B490CA8D2B216F03EF9D5F8C478B3 -:1062A000C2E731460CA816F02FFDBDE716F00EFE32 -:1062B000B8E700BFD4240020C4240020E424002038 -:1062C000B4240020F0B500F5805495B0D4F8C4583B -:1062D0009DF868606DB3FF2E2DD0180241EA0207C9 -:1062E00040EA064038433746B0298DF82510CDE9FD -:1062F0000A704FF000008DF824002BD021D801F057 -:10630000EF01802906D117490CA8009616F004F970 -:10631000D4F8C4580DF1340EEC4609ACBEE80F00B9 -:10632000ACE80F009EE807008CE8070094E80F0037 -:10633000A84715B0F0BD41EA02001F4640EA03201D -:10634000D2E7C029E6D108490CA816F0E5F8D4F840 -:10635000C458DFE705490CA8009616F0DDF8D4F81C -:10636000C458D7E70C1C00202C1C0020EC1B00207C -:1063700030B500F58054134695B0D4F8C428FAB16E -:1063800041EA03204FF440450A460E4940F0C00060 -:106390000A93ADF8245009AD0B900CA816F0BCF888 -:1063A0000DF1340EEC46BEE80F00ACE80F009EE89D -:1063B00007008CE8070095E80F00D4F8C448A04710 -:1063C00015B030BD2C1C002030B500F580541046AF -:1063D00095B0D4F8C4281AB341EA034C0A464FF4E6 -:1063E000304500934CEA00210A9303460CA841F083 -:1063F000B001ADF8245009AD0B910A4916F08CF8A4 -:106400000DF1340EEC46BEE80F00ACE80F009EE83C -:1064100007008CE8070095E80F00D4F8C448A047AF -:1064200015B030BDEC1B002030B500F5805495B0A0 -:10643000D4F8C438DBB10A464FF478430D490CA8B0 -:106440000A9209ADADF824300B9216F065F80DF103 -:10645000340EEC46BEE80F00ACE80F009EE80700E3 -:106460008CE8070095E80F00D4F8C448A04715B0A1 -:1064700030BD00BF542600202DE9F04300F5405404 -:1064800085B00546D4F8C43733B133490A68D31A06 -:10649000B4F8C027934223D294F8C837D90701D55E -:1064A0009A0702D405B0BDE8F08323F0020394F804 -:1064B000CF7784F8C837002FF4D0002641F24C582B -:1064C000B146A844012E04D8B4F8CA373341DB07DB -:1064D0002FD40136F3B29F42F4D805B0BDE8F08363 -:1064E00094F8CE270020022AC4F8C40708D994F8EB -:1064F000C83784F8CE0703F0FD0384F8C837CDE72A -:1065000094F8C837B4F8D007DE07A4F8D2071ED530 -:10651000096843F00203C4F8C4174EF6602184F8FA -:10652000C837B1FBF0F1A4F8C017013284F8CE27C8 -:10653000B4E706EB4603232201212846CDE9019961 -:1065400018F803300093B3B2F3F75EFBC1E703F032 -:10655000FD0384F8C837E8E7E8BA00202DE9F84FD2 -:1065600000F5405898F8ED77002F64D043F2F075AD -:1065700043F2E9763B46002405440644DFF8CCA00C -:10658000DFF8CCB0DFF8CC9007E0013408350136F5 -:10659000E3B29F424FD998F8ED37E2B2002BF4D026 -:1065A000032AF2D86B68002BEFD0DAF80020D31A58 -:1065B0002A689342E9D333780022DB076A6011D559 -:1065C000D8F8E43704F25252D3F808311B6803EBD1 -:1065D00082035B7A013303EB83035B002B60DAF801 -:1065E00000306B600B21584614F074F901214846C5 -:1065F00014F070F90A2200232146104811F01CFE05 -:106600000121484614F066F90B210D4814F062F997 -:106610000121484614F05EF931780A4B11F001016E -:1066200009484FEA810108BF184614F053F903489E -:1066300011F0E6FDA9E7BDE8F88F00BFA84B0020E8 -:10664000A8240020583C002094240020E8BA002010 -:106650009C240020EC2300202DE9F04F00F540554C -:1066600089B095F8E27777B1D5F8D81706464A7819 -:10667000B02A0FD055D8A02A08D002F0EF0322F09C -:106680001000802B03D009B0BDE8F08F1046C0B2D7 -:106690008028F8D1002441F23D5A0596B2442346A1 -:1066A000A346002A7DD095F8E207984279D9C4F331 -:1066B0000B1003F00F0305EB4000B0F8DE071841A4 -:1066C000A3B2C0076DD5D5F8D407D0F80801D0F82B -:1066D00000C00CEB840000F5805090F83CE50EF112 -:1066E000FF38B8F1C70F5CD80CEBCE0C9CF832E049 -:1066F0000EF1FF3EBEF1030F53D8DCF834809CF856 -:106700003390C8F3062608F00F0C0796C8F3064628 -:106710000696BEF1030F00F2A380DFE80EF0514EA3 -:106720004B0DE02AAFD002F0EF03C02BABD1C02A53 -:10673000B0D009B0BDE8F08F4CF0800C079E4CEA59 -:10674000096C4CEA062C069E4CEA064C16063FD411 -:10675000E6464FF0000890F83B05CEF30E0E4607D4 -:1067600051D4BEF1000F1CD14FEA1C6C1CEA186C0E -:1067700017D0EF2A03D802F0F002C02A07D000F0A9 -:106780000300022863D0032858D001284DD00121EE -:106790000598CDE901BB1AF8242000922222F3F7D4 -:1067A00033FA0134E3B29F427FF66DAFD5F8D817C4 -:1067B0004A7876E74CF0900CC0E74CF0B00CBDE79F -:1067C0004CF0C00C079E4CEA096C4CEA062CBDE765 -:1067D000EF2A1CD9F02ABBD091F80280B8F1000F43 -:1067E0001AD0914691F804E091F803804FEA0E4EDA -:1067F0004EEA082E91F800804EEA086E4EEA09082B -:106800008CEA080EA7E7BEF1000FB2D0C9E791F8F5 -:106810000280B8F1000F01D1E6469CE708F1FF388D -:1068200008F00F0E4EEA0209DCE70A790699521ABF -:10683000B2FA82F25209002AA9D1B2E70A7906997E -:106840008A428CBF00220122002AA0D1A9E70A793E -:1068500006998A4234BF00220122002A97D1A0E77C -:106860004FF0000C72E700BF00207047704700BF78 -:10687000002905DBB0F90CC08C4501DD002A00DAE7 -:106880007047B0F90EC09445FADD10B490F81AC004 -:10689000BCF1020F0DD0BCF1030F58D0BCF1010FB9 -:1068A0004CD0012B38D0022B24D07BB15DF8044BA7 -:1068B0007047B0F808C00CF1FF3CACEB010C41890B -:1068C0008A1A0FFA8CF1013A12B2EAE7002A13464B -:1068D000B0F808C0B8BFD31D446A02F00702012017 -:1068E000DB1000FA02F213FB0C13E15C21EA020256 -:1068F000E254DBE7002A13460489B8BFD31D406A7F -:1069000002F00702DB1013FB04130121C45C01FA3F -:1069100002F26240C254C9E7002A1346B0F808C028 -:1069200002F00704B8BFD31D406A0122DB10A24069 -:1069300013FB0C13C15C0A43C254B7E7B0F808C09C -:10694000ACEB020C0A460CF1FF3109B2A9E7B0F832 -:106950000AC00CF1FF3CACEB010C11460FFA8CF2B3 -:106960009FE700BF002930B5BDF80C4002DA0B44A8 -:1069700000211BB2B0F908C05D188E46654502DDE6 -:10698000ACEB01010BB2002B0FDD416AD01002F01D -:1069900007021CFB00EC012000FA02F28442614471 -:1069A000D2B219D0022C0DD004B130BDD24311FAAD -:1069B00083F3D2B211F8010B1040994201F8010C97 -:1069C000F8D130BD11FA83F311F8010B50408B421E -:1069D00001F8010CF8D130BD11FA83F311F8010B65 -:1069E0001043994201F8010CF8D130BD2DE9F04176 -:1069F000B0F908E0BDF818508E452DDD002A2DDBDA -:106A00009446B0F90A409C44A44501DDA41A23B27F -:106A1000002B21DDC2F3C404466A12F00702DBB288 -:106A20001EFB041406EB040136D0C2F1080CDFF89B -:106A300018815FFA8CFC634518F80C7018D2ACEB27 -:106A400003084FF0FF0E012D4EFA08FE07EA0E076D -:106A500071D0022D49D08DB1BDE8F08113440022E0 -:106A6000B0F90A401BB294469C44A445D0DDCDE762 -:106A7000012D60D0022D38D0002D3BD116F804E056 -:106A80002EEA070E634506F804E0B0F90840E3D3A8 -:106A9000083A21441344DBB2072B16D9022D35D016 -:106AA000B5F1000C1A4618BF4FF0010CCCF1000CE8 -:106AB0005FFA8CFC083A81F800C0B0F90840D2B205 -:106AC0002144072AF6D803F00703002BC4D01E4A3E -:106AD000012D13441B7A33D0022D28D0002DBBD1B9 -:106AE0000A7822EA03030B70B6E716F804E087EA97 -:106AF0000E0EC7E7083A71441344DBB2072BCFD818 -:106B0000002BA9D0984498F80830E5E71A460C788D -:106B1000083AE443D2B20C70072AB0F90840214485 -:106B2000F5D813F0070397D0074A13441B7A0A7865 -:106B300053400B7090E716F804E047EA0E0EA1E709 -:106B40000A7813430B7087E72CE101609446827E3C -:106B5000022A10B4BDF8044028D0032A21D0012A0B -:106B60000FD0BCF1000F09DBB0F90A20624505DD4A -:106B7000019462465DF8044BFFF7F4BE5DF8044BE8 -:106B800070470289A2EB0C02013A0FFA82FCBCF1B9 -:106B9000000FF3DB0A46019461465DF8044BFFF7F2 -:106BA00025BF19444289521A11B2F0E742891944AB -:106BB000A2EB0C02013A0FFA82FC0289521A11B2BE -:106BC000CFE700BF9446827E022A10B4BDF804408D -:106BD00027D0032A14D0012A07D000290DDB019405 -:106BE00062465DF8044BFFF701BF9C44028900290F -:106BF000A2EB0C020FFA82FC08DA5DF8044B704736 -:106C00004289521A013A11B20029F6DBB0F90A2082 -:106C10008A42F2DD0A46019461465DF8044BFFF7B3 -:106C2000A1BE02899C44521A013A11B24289A2EBD8 -:106C30000C020FFA82FCD0E710B504460DF0ACF957 -:106C4000024A002320462260636210BDF840002003 -:106C500010B50446406A08B114F0A2FF204610BDEA -:106C6000B0F90A300021DA1D48BF03F10E02B0F975 -:106C70000830406AD21003FB02F215F0CDBD00BF10 -:106C800070B5012690F828300C4C0D46B340002119 -:106C9000204684F8306184F8A53084F82F610CF028 -:106CA00051FCA5F15A012046C9B20CF04BFC31460B -:106CB0002046BDE870400CF053BD00BFF8B0002086 -:106CC000F8B5064699BB90F92930012B0CBF9F27D8 -:106CD000CF27012596F82830164C0021AB402046DE -:106CE00084F8305184F8A53084F82F510CF02AFC38 -:106CF000812120460CF026FC294620460CF030FD70 -:106D000096F8283000212046AB4084F8305184F8B2 -:106D10002F5184F8A5300CF015FC394620460CF0B4 -:106D200011FC29462046BDE8F8400CF019BD0027AB -:106D3000CFE700BFF8B000202DE9F0470746012457 -:106D40004A4D002197F82830A146494E2846A340D5 -:106D500085F8304185F82F4106F1040885F8A53003 -:106D60000CF0F0FB222101E016F8011F2846013447 -:106D70000CF0E8FB4645E4B214D0882CF4D1012194 -:106D800028460CF0EDFC012497F828300021284615 -:106D900085F83091A34085F82F9185F8A5300CF047 -:106DA000D1FBE1E7012131480CF0DAFC3C8997F88E -:106DB00028300126013C0021B3402C48E4B285F87C -:106DC000306185F8A53085F82F610CF0BBFB2146BA -:106DD00026480CF0B7FB3146244801240CF0C0FCD7 -:106DE000B7F90A20B7F808804021D31D1F487E6AF2 -:106DF00048BF02F10E0397F8282085F83041DB10D8 -:106E000085F82F4118FB03F853001FFA88F885F81E -:106E1000A5300CF097FBB8F1000F21D0B044DFF89B -:106E20004C90A24616F8011B484601340CF08AFB30 -:106E30004645E4B214D0882CF4D1012148460CF028 -:106E40008FFC012497F828304021484685F830A16E -:106E5000A34085F82FA185F8A5300CF073FBE1E77E -:106E600001210248BDE8F0470CF07ABCF8B00020E0 -:106E70003CE101602DE9F0470646406A154682B0C4 -:106E80000F46B6F90A20002800F06C81D31D48BFD8 -:106E900002F10E03B6F90820DB1003FB02F2C64C28 -:106EA000002115F0B9FC86F82970204686F8285094 -:106EB0001BF0A4F9C149204601250CF0D7FD96F836 -:106EC0002830BF4F0021AB40204684F8305107F1F5 -:106ED000030884F82F51A94684F8A5300CF032FB42 -:106EE000AE2101E017F8011F204601350CF02AFB06 -:106EF000B845EDB214D0882DF4D1012120460CF014 -:106F00002FFC012596F828300021204684F8309186 -:106F1000AB4084F82F9184F8A5300CF013FBE1E727 -:106F20000121A5480CF01CFC7789012596F8283032 -:106F3000013F0021AB40A048FFB284F8305184F8F3 -:106F4000A530A94684F82F510CF0FCFA39469A482E -:106F50000CF0F8FA294698480CF002FC96F8283014 -:106F6000DFF870A20021AB40934884F830510AF159 -:106F7000030884F82F5184F8A5300CF0E3FA8E4F03 -:106F8000D32101E01AF8011F384601350CF0DAFA76 -:106F9000C245EDB214D0882DF4D1012138460CF051 -:106FA000DFFB012596F828300021384684F830911F -:106FB000AB4084F82F9184F8A5300CF0C3FAE1E7D8 -:106FC00001217D4801250CF0CBFB96F929200021F9 -:106FD00096F82830A946AA42774803FA05F384F8C0 -:106FE00030510CBF1027142784F8A53084F82F5196 -:106FF0000CF0A8FA394670480CF0A4FA29466E48FD -:107000000CF0AEFB96F82830DFF8CCA10021AB40A5 -:10701000694884F830510AF1030884F82F5184F844 -:10702000A5300CF08FFA644F202101E01AF8011FFF -:10703000384601350CF086FAC245EDB214D0882DE1 -:10704000F4D1012138460CF08BFB012596F828304D -:107050000021384684F83091AB4084F82F9184F8B1 -:10706000A5300CF06FFAE1E7012153480CF078FBF2 -:10707000B368544A934200F08880534A934200F028 -:10708000D280524A934200F02481012596F828309C -:1070900000214948AB4084F8305184F82F51A9466B -:1070A00084F8A5300CF04EFAD92143480CF04AFA86 -:1070B000294641480CF054FB96F9292096F82830CF -:1070C0000021AA423C4803FA05F384F830510CBF72 -:1070D0002227F12784F8A53084F82F510CF032FADA -:1070E000394635480CF02EFA294633480CF038FB67 -:1070F00096F82830DFF8E4A00021AB402E4884F851 -:1071000030510AF1050884F82F5184F8A5300CF0AD -:1071100019FA294FDB2101E01AF8011F3846013521 -:107120000CF010FAD045EDB214D0882DF4D1012125 -:1071300038460CF015FB012596F82830002138461A -:1071400084F83091AB4084F82F9184F8A5300CF08E -:10715000F9F9E1E7012118480CF002FB012002B027 -:10716000BDE8F087D31D48BF02F10E03DA10B6F96F -:10717000083003FB02F21046019214F009FD019A57 -:10718000706200287FF48BAEE9E796F8283001257D -:107190000F4F0021AB40084884F8305107F1030934 -:1071A00084F82F51AA4684F8A5300CF0CBF9DFF80B -:1071B0000880DA2116E000BFF8B00020801A06002F -:1071C0004CE1016080002000800040006000100061 -:1071D00058E1016050E1016054E1016064E1016047 -:1071E00017F8011F404601350CF0ACF9B945EDB276 -:1071F00014D0882DF4D1012140460CF0B1FA96F854 -:107200002830002140465B00012584F830A184F835 -:107210002FA184F8A5300CF095F9E1E70121504841 -:107220000CF09EFA31E796F8283001254D4F0021E9 -:10723000AB404B4884F8305107F1020984F82F51D4 -:10724000AA4684F8A5300CF07DF9DFF81481DA2124 -:1072500001E017F8011F404601350CF073F94F4566 -:10726000EDB214D0882DF4D1012140460CF078FA0B -:1072700096F82830002140465B00012584F830A1B3 -:1072800084F82FA184F8A5300CF05CF9E1E7012126 -:1072900033480CF065FA012596F9292096F8283034 -:1072A000AA4284F8305103FA05F30CBF9F27CF2779 -:1072B00000212B4884F8A53084F82F510CF042F9B6 -:1072C000394627480CF03EF9294625480CF048FA83 -:1072D000DBE696F828300125234F0021AB402048FB -:1072E00084F8305107F1020984F82F51AA4684F836 -:1072F000A5300CF027F9DFF86880DA2101E017F8F3 -:10730000011F404601350CF01DF94F45EDB214D078 -:10731000882DF4D1012140460CF022FA96F828304D -:10732000002140465B00012584F830A184F82FA19C -:1073300084F8A5300CF006F9E1E7012108480CF0CB -:107340000FFA012596F9292096F82830AA4284F8E8 -:10735000305103FA05F30CBF1027AF27A8E700BF91 -:10736000F8B000205CE1016060E1016010B5074CFD -:1073700004F5207010F062FA04F5D07010F05EFA97 -:1073800004F1C000BDE8104010F058BAE0610020E0 -:1073900038B50D4C04F5287504F1400204F1800362 -:1073A00004F1A00044F8204C2262E034002144F8AB -:1073B000803C10F0E9F9AC42EED1044A00200449C7 -:1073C000BDE8384014F0A2BB00620020244C00202D -:1073D000E18F01002DE9F041C46B82B0B4F80330B5 -:1073E000994208D0002310211A46009301F092FC24 -:1073F00002B0BDE8F0810D2990F82DC0056859D87C -:107400000023294604F12806C4F1120E41F8043F76 -:1074100023460EEB0307B4F803800022474515DA34 -:10742000DA7D9F7D02F07F0293F81380FF0142EA2C -:10743000087207F47E573A435F7DBF0307F4FE17D7 -:107440003A431F7D7F0507F07E673A43053341F8D5 -:10745000042F9E42DDD1263504F115072346C4F1E1 -:107460003806F118B4F803E0002271450EDA93F8FB -:107470003D2093F83C1002F07F0293F83BE0C901F5 -:1074800042EA8E3201F47E510A4392B2033325F868 -:10749000022FBB42E5D1836880F82DC04FEA8C3CB7 -:1074A0001A680CF4703C536823F4703343EA0C03FD -:1074B000536097E7A37C627C03F07F03A17BD2013A -:1074C00043EA017302F47E521343227C920302F4D6 -:1074D000FE121343E27B520502F07E62134390E7F3 -:1074E000C36B844610B5B3F803E082B0BEF1070F5A -:1074F0000BD8002271451AD000230A46604610219D -:10750000009301F007FC02B010BDDC7A1A7BE401A5 -:1075100002F07F0204F47E542243C72A2CDD0023AC -:1075200010211A46009301F0F5FB02B010BD0A29A4 -:10753000DCF8004022D8002004EBC20282F83800B8 -:10754000B3F803000C284DD8002082F83900B3F8B6 -:1075500003000E283ED8002082F83A00B3F803005A -:1075600010282FD8002082F83B00B3F8030015281C -:107570000FD80023D363BFE792B2BBE7987B93F8A1 -:107580000FE0C0010EF07F0E00F0800040EA0E0018 -:10759000D2E7987E5C7E93F816E000F07F00E4016D -:1075A00040EA0E7093F818E004F47E542043DC7D2A -:1075B0004FEA8E33640503F4FE13034304F07E6048 -:1075C0000343D7E7587D1C7D00F07F0040EAC410DC -:1075D000C0B2C8E7D87C9C7C00F07F0040EAC410B1 -:1075E000C0B2B9E7587C1C7C00F07F0040EAC410B0 -:1075F000C0B2AAE7C26B2DE9F0410C46B2F8031005 -:1076000082B00546072941D800238C4209D90023BE -:10761000224610212846009301F07CFB02B0BDE811 -:10762000F081967B32199142F1D103EB03132A6862 -:10763000002103F5CF6302EB030840F2211240461C -:1076400015F0EAF8012EEF6BE1D9112EB7F80320FF -:1076500028BF112606F10A03DBB29342D7DA32467D -:107660000021404615F0D8F807F10E0108F1FF326D -:107670000023013311F8010FDBB202F8010F9E4223 -:10768000F7D84644002306F8013CC0E792F80BC047 -:10769000137B4FEACC1C03F07F030CF47E5C43EABF -:1076A0000C037F2B08DD002310211A46009301F004 -:1076B00031FB02B0BDE8F0819BB2A6E7704700BF86 -:1076C00010B51B210446AC4813F004F9AB4810F088 -:1076D00097FDAB49201D0BF0C1FD60B1431E044670 -:1076E0000021A848032B00F26381DFE813F0C700F4 -:1076F000F1001B01050010BD13F0ECF89F4810F0DD -:107700007FFD2E21A04813F0E5F89C4810F078FD8D -:107710002E219D4813F0DEF8984810F071FD2E21BF -:10772000994813F0D7F8954810F06AFD2E21964835 -:1077300013F0D0F8914810F063FD0121934813F045 -:10774000C9F81C21924813F0C5F88C4810F058FD78 -:1077500001218E4813F0BEF825218E4813F0BAF8A7 -:10776000864810F04DFD0121884813F0B3F825211B -:10777000894813F0AFF8814810F042FD2E2182486D -:1077800013F0A8F87D4810F03BFD2E217E4813F041 -:10779000A1F87A4810F034FD2E217B4813F09AF8B6 -:1077A000764810F02DFD2E21774813F093F873489A -:1077B00010F026FD0021734813F08CF86F4810F08C -:1077C0001FFD00216F4813F085F86C4810F018FD7C -:1077D0002E216D4813F07EF8684810F011FD2E211F -:1077E000694813F077F8654810F00AFD2E216648C5 -:1077F00013F070F8614810F003FD2E21624813F079 -:1078000069F85E4810F0FCFC0121604813F062F852 -:107810001821624813F05EF8584810F0F1FC01217D -:107820005A4813F057F83F215D4813F053F8534876 -:1078300010F0E6FC2E21544813F04CF84F4810F09D -:10784000DFFC2E21504813F045F84C4810F0D8FCCE -:107850002E214D4813F03EF8484810F0D1FC2E215F -:10786000494813F037F8454810F0CAFC0021454854 -:1078700013F030F8414810F0C3FCFEE713F02AF88B -:107880003E4810F0BDFC2E213F4813F023F83B4842 -:1078900010F0B6FC2E213C4813F01CF8374810F0CD -:1078A000AFFC2E21384813F015F8344810F0A8FC2E -:1078B0002E21354813F00EF8304810F0A1FC0121BC -:1078C000324813F007F83721364813F003F83CE745 -:1078D00013F000F8294810F093FC2E212A4812F0EA -:1078E000F9FF264810F08CFC2E21274812F0F2FFF9 -:1078F000224810F085FC2E21234812F0EBFF1F4890 -:1079000010F07EFC2E21204812F0E4FF1B4810F0FE -:1079100077FC01211D4812F0DDFF3421224812F0CE -:10792000D9FF12E712F0D6FF144810F069FC2E219F -:10793000154812F0CFFF114810F062FC2E211248BA -:1079400012F0C8FF0D4810F05BFC2E210E4812F01B -:10795000C1FF0A4810F054FC2E210B4812F0BAFF68 -:10796000064810F04DFC0121084812F0B3FF322107 -:107970000E4812F0AFFFE8E638160020A84B0020B2 -:10798000801A0600583C002050190020EC230020EB -:10799000481700208C160020B4160020D0190020B3 -:1079A000EC19002054160020DC16002014170020CB -:1079B00012F090FF1A4810F023FC2E21194812F003 -:1079C00089FF174810F01CFC2E21164812F082FF88 -:1079D000134810F015FC2E21124812F07BFF1048BE -:1079E00010F00EFC2E210F4812F074FF0C4810F01E -:1079F00007FC01210C4812F06DFF11210B4812F019 -:107A000069FF074810F0FCFB0121074812F062FFF4 -:107A100000230A222146024810F00EFC95E600BF22 -:107A2000A84B002050190020EC23002068170020EC -:107A3000000000002DE9F04F41F2FC7390F82F7028 -:107A4000066885B003FB07F7C36806F1040A05461C -:107A5000B3F8603004375446DA0721D50021634873 -:107A600012F038FF624810F0CBFB0321614812F09E -:107A700031FF0121604812F02DFF08215F4812F00C -:107A800029FF01215C4812F025FF08215C4812F013 -:107A900021FF0121584812F01DFF10F031FFA862AC -:107AA0006FF00308BFB20E215648A8EB0608564EE9 -:107AB00007F1340912F00EFFB844336801374FF074 -:107AC000000B2B62B94534BF4FF001094FF0340968 -:107AD00005F1100708E033682A6A9B1AF92B1FD8B2 -:107AE0000AEB09039C4225D004EB080114F8013B82 -:107AF000384601918DF80F300BF0EEFC9DF80F30F9 -:107B000001999842E7D001230DF10F0238460BF19D -:107B1000010B0BF0D7FB33682A6A9B1AF92BDFD9CC -:107B200001213A4812F0D6FE33682B620AEB0903B2 -:107B30009C42D9D10121354812F0CCFE2C4810F0DE -:107B40005FFB0921324812F0C5FE01212A4812F0DC -:107B5000C1FE00230A225946254810F06DFB012181 -:107B6000254812F0B7FE05212A4812F0B3FE20483E -:107B700010F046FBEB68B3F86030DB0702D405B0C9 -:107B8000BDE8F08F0421244812F0A4FE01211A4818 -:107B900012F0A0FE10F0B4FEAB6A0221C31A144822 -:107BA00007EE103A9FED0F0BB8EE477B87EE000B08 -:107BB00010F058FB0121104812F08CFE0C211748E0 -:107BC00012F088FE0A4810F01BFB0021074812F053 -:107BD00081FE074805B0BDE8F04F10F011BB00BFB3 -:107BE000AFF300800000000000408F40583C0020B0 -:107BF000A84B0020C8360020EC230020043E0020C3 -:107C0000103E00201C3E0020E8BA0020B8300020C2 -:107C10002C3E002048240020383E0020403E00201A -:107C2000000000002DE9F04FADF5C05D41F2FC729F -:107C300090F82F30002183B0054602FB03F341F298 -:107C4000E45403A841F68D06019314F0E5FD04A861 -:107C50006C44E6F703FE41F2F45141F2CE506E441B -:107C6000694400226844A1F1740301F8882C03F8E8 -:107C70000D2C0D339842FAD1A1F12E0303F8052CF7 -:107C80000533A342FAD1A1F1120303F8032C033305 -:107C90008B42FAD103F1850185348530B142E2D1BE -:107CA00003AE41F2FC7228680024314610F0F2FE67 -:107CB0002B68A24A1A60E1B23046EDF799FE717D59 -:107CC000B27D2B689142F07D234404F1010403D37B -:107CD00081420A4628BF0246042C83F8292FEAD1A4 -:107CE0002B6802229648032603F58051C1F8E80468 -:107CF00083F8192F26222B6883F81A6F2B6883F8D4 -:107D00001B2F28222B6883F81C2FAB682C6819685E -:107D100095F82D304A689B0322F4703203F47033D7 -:107D2000134341F2FC724B60EB6895F82F90B3F867 -:107D3000603002FB09F9D80721D50021814812F0F3 -:107D4000C9FD814810F05CFA3146804812F0C2FD4E -:107D500001217F4812F0BEFD08217E4812F0BAFDD5 -:107D600001217B4812F0B6FD08217B4812F0B2FDDC -:107D70000121774812F0AEFD10F0C2FDA8621FFA93 -:107D800089F941F2FC7A0E21744812F0A3FD744E79 -:107D900009F1010309EB0A020DF10C08A9EB040932 -:107DA0009A4238BF4FF0010A336805F110074FF0CF -:107DB000000BA2442B6206E033682A6A9B1AF92B57 -:107DC0001CD8544522D004EB090114F8013B384675 -:107DD00088F8003000910BF07FFB98F80030009994 -:107DE0009842E9D0012303AA38460BF1010B0BF0AE -:107DF00069FA33682A6A9B1AF92BE2D9012159489A -:107E000012F068FD336854452B62DCD101215548DE -:107E100012F060FD4C4810F0F3F90921524812F0BD -:107E200059FD01214A4812F055FD00230A22594606 -:107E3000454810F001FA0121454812F04BFD05219B -:107E40004A4812F047FD404810F0DAF9EB68B3F801 -:107E50006030D90700F192802C680F214448BDF8AA -:107E6000049041F2FC7812F035FD336809F101020B -:107E7000DFF8F0A02B6209EB0803A9EB04099A4292 -:107E800088BF4FF00108A04401E0444513D004EB43 -:107E9000090138460BF020FB04F8010B33682A6A0D -:107EA0009B1AF92BF1D90121504612F013FD3368CA -:107EB00044452B62EBD101212A4812F00BFD2248E8 -:107EC00010F09EF9EB68B3F86030DB0729D5042188 -:107ED000284812F0FFFC01211D4812F0FBFC10F0B5 -:107EE0000FFDAB6A0221C31A174807EE103A9FED47 -:107EF000110BB8EE477B87EE000B10F0B3F90121B0 -:107F0000134812F0E7FC0C211B4812F0E3FC0E486A -:107F100010F076F900210B4812F0DCFC0A4810F052 -:107F20006FF92B6B43F400632B630DF5C05D03B059 -:107F3000BDE8F08F0000000000408F40B049020211 -:107F40000000FF03583C0020A84B0020C83600204A -:107F5000EC230020043E0020103E00201C3E0020A8 -:107F6000E8BA0020B83000202C3E00204824002031 -:107F7000A43B0020383E0020403E002004212B4836 -:107F800012F0A8FC01212A4812F0A4FC10F0B8FC61 -:107F9000AB6A0221C01A07EE900A2648B8EE677B4A -:107FA0009FED200B87EE000B10F05CF901212048BB -:107FB00012F090FC0C21204812F08CFC1D4810F0AF -:107FC0001FF900211D4812F085FC1A4810F018F91D -:107FD000EB682C68B3F86030DA077FF53EAF00211C -:107FE000164812F077FC134810F00AF903211448E0 -:107FF00012F070FC01210E4812F06CFC07211148B0 -:1080000012F068FC01210A4812F064FC08210E48B5 -:1080100012F060FC0121064812F05CFC10F070FCCC -:10802000A8621AE70000000000408F40383E0020A0 -:10803000EC230020A84B0020403E0020583C0020AC -:10804000C83600209C3B0020103E00202DE9F84F50 -:10805000C36841F2FC7290F82FB00546B3F8603067 -:10806000046802FB0BFBD90721D50021AB4812F0B5 -:1080700031FCAB4810F0C4F80321AA4812F02AFCE6 -:108080000121A94812F026FC0721A84812F022FC81 -:108090000121A54812F01EFC0821A54812F01AFC87 -:1080A0000121A14812F016FC10F02AFCA862A14E92 -:1080B0000F21A1481FFA8BFB12F00CFC41F2FC7758 -:1080C00032680BF1010305F11009ABEB04082A62D9 -:1080D0000BEB0702DFF864A29A4238BF012727445E -:1080E00001E0BC4213D004EB080148460BF0F4F960 -:1080F00004F8010B33682A6A9B1AF92BF1D9012184 -:10810000504612F0E7FB3368BC422B62EBD10121F1 -:108110008A4812F0DFFB824810F072F8EB68B3F87F -:108120006030DA0729D50421854812F0D3FB0121FC -:108130007D4812F0CFFB10F0E3FBAB6A0221C31ABB -:10814000774807EE103A9FED730BB8EE477B87EE4A -:10815000000B10F087F80121734812F0BBFB0C21D3 -:10816000784812F0B7FB6E4810F04AF800216B48CF -:1081700012F0B0FB6A4810F043F82B6844F6B014D4 -:108180001B88A3420FD12A6BD304C2F3003408D456 -:10819000AA6895F82D3012685268C2F38332934270 -:1081A0007ED1BDE8F88F00215C4812F093FB5C485B -:1081B00010F026F82E21644812F08CFB584810F07D -:1081C0001FF82E21604812F085FB554810F018F872 -:1081D0000C215E4812F07EFB0121534812F07AFB1D -:1081E00059464F4810F000F801214F4812F072FB39 -:1081F0001121574812F06EFB494810F001F80A218E -:10820000544812F067FB0121474812F063FB2B68CA -:10821000434819880FF0E8FF0121434812F05AFB48 -:108220000A214D4812F056FB01213F4812F052FB43 -:1082300021463B480FF0D8FF39480FF0E1FF0C21F1 -:10824000424812F047FB0121374812F043FB5946E0 -:1082500033480FF0C9FF0121334812F03BFB1021D6 -:108260003E4812F037FB2E480FF0CAFF2E21364849 -:1082700012F030FB2A480FF0C3FF2E21324812F0D3 -:1082800029FB27480FF0BCFF0021244812F022FBF5 -:1082900023480FF0B5FF2846BDE8F84FFFF7C2BCF2 -:1082A00017212F4812F016FB01211F4812F012FB74 -:1082B000A96823460A22096819484968C1F383312D -:1082C0000FF0BAFF0121184812F004FB02212548E3 -:1082D00012F000FB0121144812F0FCFA234695F835 -:1082E0002D100A220E480FF0A7FF0D480FF088FF4F -:1082F000AA6895F82D30284611689B034A6803F454 -:10830000703322F4703213434B60FFF793FBBDE8E8 -:10831000F88F00BF0000000000408F40583C002054 -:10832000A84B0020C8360020EC2300209C3B0020F6 -:10833000103E0020E8BA0020A43B0020B830002006 -:10834000383E0020403E0020F43F00202440002022 -:1083500034400020E03200204840002054400020FB -:1083600068400020B83100202DE9F04FC0E901231A -:1083700085B00160D2F80811502204462023C16064 -:108380004FF480710092103001220E9E0AF036FFE9 -:10839000DA4B002562681B684FF001082664294605 -:1083A000D74E04F148000292656306F1480725871D -:1083B00084F83A50E2634FF4936284F8445084F8AE -:1083C000455084F84650C4E909352A23C4E90B8591 -:1083D00084F8473014F020FA338F706B06F1800C6C -:1083E000A4F84D30C74BC4F84900E365C4F84F50BA -:1083F000C4F85350C4F8575084F85B5006F1640534 -:1084000084F848800FCFC4F86300C4F86710C4F83C -:108410006F30C4F86B2003CF3B8804F22717C4F8F1 -:108420007300C4F87710A4F87B300FCDC4F888200F -:10843000C4F88C30C4F88000C4F8841003CD2B78C5 -:1084400006F1F005C4F89000C4F8941084F8983050 -:10845000BCE80F00C4F89C00C4F8A010C4F8A42025 -:108460005522C4F8A830BCE80300C4F8AC0004F1FD -:10847000B500C4F8B01006F1980110F00BFB06F53A -:10848000867C06F59E7684F825810FCDC4F80B0115 -:10849000C4F80F11C4F81731C4F8132103CD2B7899 -:1084A000C4F81B01C4F81F1184F823316546103746 -:1084B0000CF1100C0FCDB54247F8100C47F80C1C0E -:1084C00047F8082C47F8043CF0D1BCF80430DCF83D -:1084D0000000BB804FF001038B4D386084F8793188 -:1084E0000FCDC4F85E01C4F86211C4F86A31C4F853 -:1084F000662103CDAC46C4F86E01C4F8721105F1D3 -:10850000200B3CF8043B05F13C0A05F1580905F144 -:108510007406A4F8763105F1AC0305F1900805F175 -:10852000C40E039305F1E007FC35BCE80F00C4F866 -:108530007B01C4F87F11C4F88321C4F88731BCE8FB -:108540000300C4F88B01C4F88F11BCF800304FF061 -:10855000010CA4F8933184F896C184F8B2C184F870 -:10856000CEC1BBE80F00C4F89801C4F89C11C4F850 -:10857000A431C4F8A021BBE803009BF80030C4F884 -:10858000A801C4F8AC1184F8B031BAE80F00C4F8FF -:10859000B401C4F8B811C4F8C031C4F8BC21BAE8B9 -:1085A00003009AF80030C4F8C401C4F8C81184F874 -:1085B000CC31B9E80F00C4F8D001C4F8D411C4F824 -:1085C000DC31C4F8D821B9E8030099F800304FF045 -:1085D0000409C4F8E001C4F8E41184F8E8310FCECE -:1085E000C4F8EA01C4F8EE11C4F8F631C4F8F22177 -:1085F00003CE3388C4F8FA01A4F80232B378C4F881 -:10860000FE1184F80432B8E80F00C4F80702C4F879 -:108610000B12039EC4F81332C4F80F22A4F83A9246 -:10862000E14684F83CC2B8E80300B8F80030C4F86A -:108630001702C4F81B12A4F81F320FCEC4F822028E -:10864000C4F82612C4F82A22C4F82E3203CEC4F885 -:108650003202C4F83612BEE80F00C4F83E02C4F875 -:108660004212C4F84A32C4F84622BEE80300BEF8FB -:108670000030C4F84E02A4F856329EF80230C4F816 -:10868000521284F858320FCFC4F85B02C4F85F125C -:10869000C4F86732C4F8632203CF3B88C4F86B0286 -:1086A000C4F86F12A4F873320FCDC4F883324FF0C0 -:1086B0000603C4F87F22FE22C4F87702C4F87B12B6 -:1086C00003CD84F893324FF00503C4F8870284F891 -:1086D000E0342B88029DC4F88B120021A4F88F325D -:1086E000681D14F099F80023204685F800906B70FF -:1086F000AB70EB702B7105B0BDE8F08FE8BA0020CD -:1087000024090020FFFF0500680A002070B54FF41F -:108710008053044600217448236312F0DBF8734849 -:108720000FF06EFD2B21724812F0D4F86F480FF055 -:1087300067FD10216F4812F0CDF86C480FF060FD16 -:1087400094F8E03404F10C00103384F8E034FEF7C0 -:10875000B7FFA28B41F2FB739A4200F2D98000214D -:10876000614812F0B7F861480FF04AFD2E216248C7 -:1087700012F0B0F85D480FF043FD2E215E4812F074 -:10878000A9F85A480FF03CFD2E215B4812F0A2F8E0 -:1087900056480FF035FD2E21574812F09BF85348EC -:1087A0000FF02EFD0121554812F094F83421544861 -:1087B00012F090F84D480FF023FD01214F4812F0C0 -:1087C00089F82C214F4812F085F848480FF018FD21 -:1087D00001214A4812F07EF8A18B44480FF004FDB5 -:1087E00042480FF00DFD2E21434812F073F83F4828 -:1087F0000FF006FD2E21404812F06CF83B480FF0B8 -:10880000FFFC2E213C4812F065F838480FF0F8FCC8 -:108810002E21394812F05EF834480FF0F1FC0021A7 -:10882000314812F057F831480FF0EAFC00212E4889 -:1088300012F050F82D480FF0E3FC2E212E4812F0D4 -:1088400049F82A480FF0DCFC2E212B4812F042F8A0 -:1088500026480FF0D5FC2E21274812F03BF823487C -:108860000FF0CEFC2E21244812F034F81F480FF0F0 -:10887000C7FC0121214812F02DF81821224812F0DE -:1088800029F81A480FF0BCFC01211C4812F022F80C -:108890003F211E4812F01EF814480FF0B1FC2E21A3 -:1088A000154812F017F811480FF0AAFC2E211248B3 -:1088B00012F010F80D480FF0A3FC2E210E4812F014 -:1088C00009F80A480FF09CFC2E210B4812F002F820 -:1088D00006480FF095FC0021034811F0FBFF034808 -:1088E0000FF08EFCFEE700BF583C0020A84B002094 -:1088F000883E0020B43E002050190020EC230020C8 -:10890000C83E0020003F0020D0190020EC190020B4 -:108910002821644811F0DEFF63480FF071FC1D212F -:10892000624811F0D7FF60480FF06AFCA38B604AE1 -:108930009B08A1685F4DA2FB03230A682E685B0AAF -:108940005268012BC2F3015238BF0123934294BFF6 -:1089500094F82F2084F82F20002A40F09F80204692 -:10896000FFF774FB1E21544811F0B4FF0121534856 -:1089700011F0B0FF296800230A22891B4A480FF032 -:108980005BFC01214D4811F0A5FF02214C4811F07C -:10899000A1FF45480FF034FC2821424811F09AFF0E -:1089A00041480FF02DFCA268236B1521156843F494 -:1089B000E06244486B682263C3F3833384F82D304C -:1089C00011F088FF022138480FF00EFC01213E48CB -:1089D00011F080FF022134480FF006FC01213A48D3 -:1089E00011F078FF022130480FF0FEFB01213748DB -:1089F00011F070FF2C480FF003FC2221344811F0D5 -:108A000069FF236828485988090A0FF0EDFB012106 -:108A10002D4811F05FFF2368234899780FF0E4FB9D -:108A200001212A4811F056FF1F480FF0E9FB0A21E7 -:108A3000284811F04FFF0121204811F04BFF00237F -:108A40000A2294F82D1018480FF0F6FB16480FF084 -:108A5000D7FB0E21204811F03DFF0121174811F0EE -:108A600039FF00230A2294F82F100F480FF0E4FB7F -:108A70000D480FF0C5FB2B21184811F02BFF0A48B9 -:108A80000FF0BEFB0021164811F024FF06480FF03E -:108A9000B7FB236B23F48053236370BD2046FFF79D -:108AA000D5FA5CE7303F0020A84B00205C3F002057 -:108AB00099906355E8BA00207C3F0020EC23002009 -:108AC000FC3900209C3F0020B8300020B03F00203F -:108AD000B43F0020D83F0020E43F0020883E002023 -:108AE000583C0020036B23F480230363704700BFCE -:108AF000026B03465107C2F3800003D522F0040243 -:108B000001201A63704700BF026B03461107C2F3CE -:108B1000C00003D522F0080201201A63704700BF8D -:108B20004368D3F80831D86DC0F38000704700BFA8 -:108B3000026B03469107C2F3400003D522F0020204 -:108B400001201A63704700BF042998BF80F82E10D7 -:108B5000704700BF90F82E00704700BF41F2FC72D2 -:108B600090F82F0002FB00F0704700BF41F2FC7349 -:108B700090F82F0003FB00F004307047C90001F1AA -:108B80003400704701EB011101F27460704700BFBF -:108B9000490001F6F4607047C1EBC10101F61470A1 -:108BA000704700BF01EBC10101F61B70704700BFA9 -:108BB00001EB810101F62470704700BF01EB8101D8 -:108BC000480000F62970704701EBC10141F2A9107D -:108BD00000EB4100704700BF01EB810141F23920F9 -:108BE00000EB4100704700BF01EB410341F2B94087 -:108BF00001EB83010844704701EB410141F2D3408E -:108C00000844704701EB410141F2E24000EB4100B2 -:108C1000704700BF01EB410141F2E84000EB410029 -:108C2000704700BF01EBC10141F2EE4000EB410093 -:108C3000704700BF41F2365000EB8100704700BF23 -:108C400001EB410141F246500844704701EB4101FC -:108C500041F24C500844704784B0F0B585B00DF136 -:108C60002C0C9DF834418CE80E009DF82D309DF8B9 -:108C70003021F02B02D190F82C1021B905B0BDE8BD -:108C8000F04004B07047BDF82F306BB90DF13102E0 -:108C9000406802940024CDE9004408F0DBFB05B0F5 -:108CA000BDE8F04004B070473AB303F128026A44CB -:108CB000157AF72D01D0FD2B21D90127DF1B9DF857 -:108CC00031C00DF13102BCF1F00FBFB214BF7025FD -:108CD000002567B17E1E964612FA86F601E01EF860 -:108CE00001CF0CF07F0C764585EA0C05F7D107F132 -:108CF00028060DEB06077D72CAE70227DEE701337F -:108D00008DF82F3000238DF830305372BDF82F309E -:108D1000D3E700BF2DE9F04F1B01ADF5037D0746FA -:108D20000E4641AC5FFA83F89DF830920023154659 -:108D300090F82CB023602371B9F1000F02D1C36BFE -:108D400093F800B0FA2200210DF20D1097F82DA033 -:108D500013F062FDF0230121FA6B63707D2301FAA9 -:108D60000BF10AF07F0A637147F67D53C9B284F8AC -:108D70000980E3807F2384F808A02373537B21704C -:108D8000F02B03D0F72B18BF03F07F036373B30BF3 -:108D9000A373C6F3C61306F07F06E3732B0F267486 -:108DA0006374C5F34653A374C5F38633E374C5F304 -:108DB000C61305F07F05237511236575927AE3705C -:108DC000F02A1BD0F72A19D002F07F021223A275D5 -:108DD000E370B9F1000F3AD10123002044A9F72232 -:108DE000CDE93E3068460FF055FE384694E80E0057 -:108DF000FFF732FF0DF5037DBDE8F08F1223A2755A -:108E0000E370B9F1000FE7D0F72A20D11126B04660 -:108E100000207D2270250DF2091E01E01EF8012FB1 -:108E2000013002F07F021FFA80FC5540C445F5D3A3 -:108E3000A2190024786855710DF209120094CDE949 -:108E4000014408F007FB0DF5037DBDE8F08F132307 -:108E50001226E370B046DBE7C26B5378F02B13D1D8 -:108E6000B2F803300A2B0FD970B591790446D07946 -:108E700084B0090441EA0021107A01435748814235 -:108E800004D0002004B070BD0020704794F82D007D -:108E9000517A884229D094F8451001B310780142E4 -:108EA00020D194F846501DB984F84600B2F803303A -:108EB0000025012605320096CDE90155606808F0CD -:108EC000C9FAE46BFE222946601D13F0A5FC284672 -:108ED0006570A570E5702571267004B070BD0846F8 -:108EE00004B070BD94F84610E2E7023B13F0FF03B4 -:108EF00071D05D1E511D101D002611FA85F510F868 -:108F0000011F01F07F01A84286EA0106F7D1134450 -:108F10005B79B3421FD1937A204603F07F0384F834 -:108F20004430527B7E2A53D09B0711D507F026FD93 -:108F3000E46BFE220021601D13F06EFC0122002371 -:108F4000104622706370A370E370237104B070BD8B -:108F500007F058F8ECE70021214811F0BBFC21484C -:108F60000FF04EF92E21204811F0B4FC1D480FF0EF -:108F700047F92E211C4811F0ADFC1A480FF040F9BA -:108F800001211A4811F0A6FC1921194811F0A2FC80 -:108F900014480FF035F92E21134811F09BFC1148AD -:108FA0000FF02EF92E21104811F094FC0D480FF00F -:108FB00027F900210A4811F08DFC0A480FF020F92A -:108FC00000230922012120460093FFF7A3FEAFE70B -:108FD00007F0EEFCACE71E4699E700BF7D7D7D0003 -:108FE000583C0020A84B0020F43F0020EC23002038 -:108FF0006C3E00202AB1F02903D0F72918BF01F0F8 -:109000007F01B0F80330FD2B07D800EB030C0022E2 -:1090100001338CF80510C3700271704769B170B5E7 -:10902000054608460C4613F051FF2B6802462146C0 -:1090300028465B68BDE870401847704738B504465D -:1090400049B108460D4613F041FF23680246294600 -:109050005B68204698472046BDE838400FF0D0B8FE -:109060000439844630B587B0252919D8DFE801F0E6 -:109070004713184E181818181818551818181818D3 -:1090800018185C182D181843182D2D182D1818189D -:10909000181818181863002A00F08D80012A5AD079 -:1090A000464C01AD0FCCAE460FC52368CCF810304E -:1090B000BEE80F00CCF800006046CCF80410CCF8F5 -:1090C0000820CCF80C3007B030BD3C4C0DF1040E3C -:1090D0000FCC7546AEE80F002368CCF810300FCDEA -:1090E000CCF800006046CCF80410CCF80820CCF88E -:1090F0000C3007B030BD002AD2D1314C1CE0052A1B -:10910000CED8DFE802F0565452504E4C042AC7D84D -:10911000DFE802F02B2927252300052AC0D8DFE845 -:1091200002F0262A283A3836052AB9D8DFE802F0B4 -:109130002D2B29272535234C0FCCCCF80000206897 -:10914000CCF80410CCF810006046CCF80820CCF81D -:109150000C3007B030BD1C4CEEE71C4CECE71C4C4F -:10916000EAE71C4CE8E71C4CE6E71C4CE4E71C4C27 -:10917000E2E71C4CE0E71C4CDEE71C4CDCE71C4C37 -:10918000DAE71C4CD8E71C4CD6E71C4CD4E71C4C47 -:10919000D2E71C4CD0E71C4CCEE71C4CCCE71C4C57 -:1091A000CAE71C4CC8E71C4CC6E71C4CC4E71C4C67 -:1091B000C2E71C4CC0E71C4CBEE700BFAC0B002054 -:1091C0003C0D0020980B00204C0C0020B00C00201F -:1091D0009C0C0020880C0020740C0020600C0020E7 -:1091E000C40C0020EC0C0020D80C0020A00D0020A6 -:1091F0008C0D0020780D0020640D0020500D002003 -:10920000280D0020140D0020000D0020B40D0020BA -:10921000240C0020100C0020FC0B0020E80B002088 -:10922000D40B0020C00B0020380C0020B0F8032025 -:109230004B1C934201DB00207047014418444B79DA -:109240004079DB0100F07F0003F47E531843704740 -:109250002DE9F843BDF824700446884616460021DF -:10926000F6220D301D469DF8209013F0D5FAC7F375 -:10927000C612082306F07F0609F07F09A2720122B8 -:10928000E3707D2305F07F0507F07F07F02102FAE8 -:1092900008F26371A371E3710023267284F80990C8 -:1092A0002573E77261702270A3702371BDE8F883A3 -:1092B00070B5ADF5027D002605460B2341AC419605 -:1092C0008DF80861CDE9006690F82D2090F82C10FB -:1092D0002046FFF7BDFF012344A9F7226846CDE9E8 -:1092E0003E360FF0D7FB284694E80E00FFF7B4FC9B -:1092F0000DF5027D70BD00BF2DE9F0430546ADF5CB -:10930000037D21B1C36BB3F803300B2B4BD800277F -:1093100041AC00260F232046CDE90066266095F873 -:109320002D2095F82C102671FFF792FFB4F803302A -:10933000FD2B2AD90123002244A96846CDE93E32FB -:10934000F7220FF0A7FB284694E80E00FFF784FCF5 -:109350001FB90DF5037DBDE8F0836B68D3F80431C8 -:10936000D3F88070002FF4D02E6C6C4606F11005F7 -:109370000FCD0FC495E8070084E8070096E80F00BA -:10938000B8470DF5037DBDE8F0835A1C23442671D0 -:10939000E2705E71B4F80330FD2BCBD8E2180133D4 -:1093A0005771E370C6E7046C0021227A04F10900CA -:1093B00013F032FA00232372EA6B23806360B2F861 -:1093C0000300296C0B280BD9137C907B03F07F03DF -:1093D00043EA8033D07BC00100F47E5003439BB24C -:1093E0000B80B2F80330102B0DD800234B60B2F87D -:1093F0000330112B1DD800230B722C6C267A012E02 -:109400001BD8012784E7537D507C03F07F0343EA98 -:109410000073107DC00100F47E500343D07C8003B4 -:1094200000F4FE100343907C400500F07E6003438F -:10943000DCE7937D03F07F03DEE7EF6B06F11209B3 -:10944000B7F803309945DCDA04F109080021324607 -:109450000834404613F0E0F912235FFA89F1FA1854 -:109460000133DBB25279994204F8012FF7D1B044AD -:109470000023012708F8013C4AE700BF70B5054604 -:10948000ADF5027D21B1C36BB3F803200B2A2AD8B6 -:1094900041AC00260C2395F82D202046CDE900662E -:1094A000266095F82C102671FFF7D2FEB4F8033031 -:1094B000FD2B07D82A6BE11801332671C2F3401245 -:1094C000E3704A7101230021F7226846CDE93E315D -:1094D00044A90FF0DFFA284694E80E00FFF7BCFB22 -:1094E0000DF5027D70BD997B036B11F07F040C4874 -:1094F0004FF01F0114BF43F0200323F020032B6320 -:1095000011F0E8F90121074811F0E4F900230A22DB -:10951000214605480EF090FE03480EF071FEB7E7B5 -:10952000F43C0020EC230020A84B0020B0F80330CE -:10953000FD2B00D97047C218C1F3C61C013301F0DE -:109540007F0182F805C00022C3700271B0F80330B9 -:10955000FD2BEFD8C21801335171C370704700BFA3 -:10956000B0F80330FD2B00D9704700EB030C8A0BD9 -:1095700001338CF805200022C370C1F3C61C0271B0 -:10958000B0F80330FD2BEFD8C218013301F07F0192 -:1095900082F805C0C370B0F80330FD2BE4D8C218C0 -:1095A00001335171C370704730B587B00C4612B2A9 -:1095B0001946054601A8FFF753FDBDF804102046E3 -:1095C000FFF7B4FFBDF806102046FFF7AFFFB4F871 -:1095D0000330BDF90820FD2B73D9BDF80A102046D1 -:1095E000FFF7BEFFBDF80C102046FFF7B9FFB4F837 -:1095F00003309DF80E20FD2B42D9BDF812102046F5 -:10960000FFF794FFB4F80330FD2B09D8BDF8142000 -:10961000E118013302F07F024A710022E3702271E7 -:1096200029782046FFF782FFB4F80330FD2B5CD980 -:109630006A1C05F111004FF0000E03E082421DD0BC -:10964000B4F80330FD2B12F8011FF7D84FEAD11CF4 -:10965000E518013301F07F0185F805C0E37084F857 -:1096600004E0B4F80330FD2B04EB030C03F1010319 -:10967000E4D882428CF80510E370E1D107B030BD28 -:10968000E11802F07F0201334A710021E370217179 -:10969000B4F803309DF80F20FD2B02F07F02ACD808 -:1096A000E11801334A71E370B4F803309DF81020DB -:1096B000FD2B02F07F02A0D8E11801334A71E3705C -:1096C0009BE7E118C2F3C610013302F07F02487134 -:1096D0000021E3702171B4F80330FD2B3FF67DAF1C -:1096E000E11801334A71E37077E7E2180121013391 -:1096F00051710022E3702271B4F80330FD2B97D82A -:10970000E2180B4410215171E370B4F803306A7809 -:10971000FD2B4FEAD2108BD8E118013302F07F0203 -:109720004871E370B4F80330FD2B81D8E1180133A0 -:109730004A71E370B4F803307AE700BF30B587B000 -:109740000C4612B21946054601A8FFF789FCBDF880 -:1097500004102046FFF7EAFEBDF806102046FFF78A -:10976000E5FEB4F80330BDF90820FD2B73D9BDF830 -:109770000A102046FFF7F4FEBDF80C102046FFF754 -:10978000EFFEB4F803309DF80E20FD2B42D9BDF852 -:1097900012102046FFF7CAFEB4F80330FD2B09D89B -:1097A000BDF81420E118013302F07F024A71002253 -:1097B000E370227129782046FFF7B8FEB4F8033031 -:1097C000FD2B5CD96A1C05F109004FF0000E03E087 -:1097D00082421DD0B4F80330FD2B12F8011FF7D8D8 -:1097E0004FEAD11CE518013301F07F0185F805C06F -:1097F000E37084F804E0B4F80330FD2B04EB030CB1 -:1098000003F10103E4D882428CF80510E370E1D142 -:1098100007B030BDE11802F07F0201334A71002128 -:10982000E3702171B4F803309DF80F20FD2B02F096 -:109830007F02ACD8E11801334A71E370B4F8033009 -:109840009DF81020FD2B02F07F02A0D8E118013313 -:109850004A71E3709BE7E118C2F3C610013302F0CE -:109860007F0248710021E3702171B4F80330FD2BB1 -:109870003FF67DAFE11801334A71E37077E7E218F4 -:109880000121013351710022E3702271B4F80330D9 -:10989000FD2B97D8E2180B4408215171E370B4F8FE -:1098A00003306A78FD2B4FEAD2108BD8E1180133D0 -:1098B00002F07F024871E370B4F80330FD2B81D8C9 -:1098C000E11801334A71E370B4F803307AE700BF5E -:1098D00030B587B00C4612B21946054601A8FFF70D -:1098E000BFFBBDF804102046FFF720FEBDF80610B0 -:1098F0002046FFF71BFEB4F80330BDF90820FD2B0E -:109900001DD9BDF80A102046FFF72AFEBDF80C103D -:109910002046FFF725FEB4F803309DF80E20FD2BFE -:109920004AD929782046FFF701FEB4F80330FD2B11 -:1099300018D9A9782046FFF7F9FD07B030BDE11826 -:10994000C2F3C610013302F07F0248710021E370B8 -:109950002171B4F80330FD2BD3D8E11801334A71DB -:10996000E370CEE7E11801224A7113440021E3704D -:109970002171B4F80330FD2BDBD8E11813444A7190 -:10998000E370B4F803306A78FD2B4FEAD210D0D8D8 -:10999000E118013302F07F024871E370B4F803303C -:1099A000FD2BC6D8E118013320464A71E370A9782F -:1099B000FFF7BCFD07B030BDE11802F07F020133B4 -:1099C0004A710021E3702171B4F803309DF80F2033 -:1099D000FD2B02F07F02A4D8E11801334A71E37035 -:1099E000B4F803309DF81020FD2B02F07F0298D8C8 -:1099F000E11801334A71E370B4F80330BDF8122066 -:109A0000FD2BC2F3C6108CD8E118013302F07F029F -:109A10004871E370B4F80330FD2B82D8E1180133AC -:109A20004A71E370B4F80330BDF81420FD2B02F046 -:109A30007F023FF676AFE11801334A71E37070E7B9 -:109A400070B586B00C4612B21946054601A8FFF75C -:109A500007FBBDF804102046FFF768FDB4F803309B -:109A6000BDF90620FD2B40F2A080BDF8081020466D -:109A7000FFF75CFDBDF80A102046FFF771FDBDF849 -:109A80000C102046FFF76CFDB4F803309DF80E2053 -:109A9000FD2B68D9BDF812102046FFF747FDB4F83A -:109AA0000330FD2B09D8BDF81420E118013302F072 -:109AB0007F024A710022E370227129782046FFF765 -:109AC00035FDB4F80330FD2B40F283806A1C05F1AC -:109AD000070C002602E0013262451CD0FD2BFAD8AB -:109AE0001178E01801334FEAD11E01F07F0180F8B0 -:109AF00005E0E3702671B4F80330FD2B04EB030E90 -:109B000003F10100E7D801328EF80510E0706245DC -:109B1000B4F80330E2D1AA1D05F10C004FF0000E9D -:109B200003E090421DD0B4F80330FD2B12F8011F62 -:109B3000F7D84FEAD11CE518013301F07F0185F811 -:109B400005C0E37084F804E0B4F80330FD2B04EBA7 -:109B5000030C03F10103E4D890428CF80510E37084 -:109B6000E1D106B070BDE11802F07F0201334A7105 -:109B70000021E3702171B4F803309DF80F20FD2B14 -:109B800002F07F0286D8E11801334A71E370B4F81D -:109B900003309DF81020FD2B02F07F023FF67AAFD4 -:109BA000E11801334A71E37074E7E118C2F3C6109B -:109BB000013302F07F0248710021E3702171B4F893 -:109BC0000330FD2B3FF651AFE11801334A71E370CA -:109BD0004BE7E118062201334A710021E37021713D -:109BE000B4F80330FD2B3FF671AFE11801334A7131 -:109BF000E370B4F8033069E730B587B00C4612B2B1 -:109C00001946054601A8FFF72BFAB4F80330BDF951 -:109C10000420FD2B47D9BDF806102046FFF786FC2F -:109C2000BDF808102046FFF781FCBDF80A10204659 -:109C3000FFF796FCBDF80C102046FFF791FCB4F836 -:109C400003309DF80E20FD2B52D929782046FFF7CE -:109C50006DFCB4F80330FD2B38D928464FF0000EC8 -:109C6000A91D03E088421CD0B4F80330FD2B10F886 -:109C7000012FF7D8E5184FEAD21C013302F07F021A -:109C800085F805C0E37084F804E0B4F80330FD2BD8 -:109C900004EB030503F10103E4D888426A71E37021 -:109CA000E2D107B030BDE118C2F3C610013302F0B3 -:109CB0007F0248710021E3702171B4F80330FD2B5D -:109CC000A9D8E11801334A71E370A4E7E118002232 -:109CD00001334A712271E370B4F80330FD2BBCD814 -:109CE000E218062101335171E370B4F80330B4E790 -:109CF000E11802F07F0201334A710021E370217103 -:109D0000B4F803309DF80F20FD2B02F07F029CD8A1 -:109D1000E11801334A71E370B4F803309DF8102064 -:109D2000FD2B02F07F0290D8E11801334A71E370F5 -:109D3000B4F80330BDF81220FD2BC2F3C61084D84E -:109D4000E118013302F07F024871E370B4F8033088 -:109D5000FD2B3FF67AAFE11801334A71E370B4F896 -:109D60000330BDF81420FD2B02F07F023FF66DAFEB -:109D7000E11801334A71E37067E700BFB0F80330C0 -:109D8000FD2B00D9704700EB030C0A0F01338CF850 -:109D900005200022C370C1F3465C0271B0F80330A5 -:109DA000FD2BEFD8C218013382F805C0C1F3863C01 -:109DB000C370B0F80330FD2BE4D8C218013382F829 -:109DC00005C0C1F3C61CC370B0F80330FD2BD9D851 -:109DD000C218013301F07F0182F805C0C370B0F8EA -:109DE0000330FD2BCED8C21801335171C3707047B8 -:109DF0002DE9F04FADF50B7D0646C36B40AFB3F8D0 -:109E00000320072A00F2F880002007F1240496F8C6 -:109E10002D207D232060207196F82C10CDE90000C4 -:109E20002046FFF715FAB4F80330FD2B40F21781F6 -:109E3000BE492046FFF7A2FF336820465988FFF746 -:109E40008FFB41F2FC712046FFF798FFB84920468E -:109E5000FFF794FFC8212046FFF768FB80212046CA -:109E6000FFF764FBB4F80330FD2B06D8E11811208E -:109E7000013300224871E370227140212046FFF730 -:109E800055FBB4F80330FD2B40F2568140212046AB -:109E9000FFF74CFB05212046FFF748FB0621204633 -:109EA000FFF744FB06212046FFF740FB0221204636 -:109EB000FFF73CFB00212046FFF738FB002120463E -:109EC000FFF734FB00212046FFF730FB002120463E -:109ED000FFF72CFB00212046FFF728FB0521204639 -:109EE000FFF724FB00212046FFF720FB002120463E -:109EF000FFF71CFB00212046FFF718FB002120463E -:109F0000FFF714FB00212046FFF710FB002120463D -:109F1000FFF70CFB06212046FFF708FB0021204637 -:109F2000FFF704FB00212046FFF700FB002120463D -:109F3000FFF7FCFA01212046FFF7F8FAB4F80330E6 -:109F4000FD2B78D8581C002223440621E070227192 -:109F5000B4F803005971FD286DD825180130E07060 -:109F6000B4F803306A71FD2B65D8E0180133012580 -:109F7000E370B4F803304571FD2B5CD8E0182B4436 -:109F8000E370B4F803304271FD2B54D8E0182B4431 -:109F9000E370B4F803304271FD2B4CD8E0182B4429 -:109FA000E370B4F803304271FD2B44D8E0182B4421 -:109FB000E370B4F803304171FD2B3CD8E0182B441A -:109FC000E370B4F803304171FD2B34D85819E1180F -:109FD000E070B4F803304A71FD2B2CD85819E21800 -:109FE0000021E070B4F803305171FD2B23D8E21842 -:109FF0002B445171E3701EE0DA7A07F124041B7BD5 -:10A000000025D20190F82C1003F07F03256002F4A4 -:10A010007E52257143EA020990F82D207D232046C7 -:10A02000CDE90059FFF714F9B9F1000F3FF4FBAE89 -:10A03000B9F1010F1BD00123002007F13001F722F5 -:10A040003F9068463E930EF025FD304694E80E00A2 -:10A05000FEF702FE07F59677BD46BDE8F08FE118E2 -:10A060002820013300224871E3702271E0E6314973 -:10A07000381D0EF003FAF9684A4620460131E946D8 -:10A0800001F07F01FEF7B6FF391D07F114000EF055 -:10A090009BF997F81C802B4607F1140008F1010B7F -:10A0A0005FFA8BFB0BF1070202F4FC72ADEB020DC1 -:10A0B0005A460DF5807A51460EF0F4F9BBF1000FC7 -:10A0C0002AD02B46284610E0FD2A08D81AF803109B -:10A0D000A5180132207101F07F01E2706971984585 -:10A0E00003F1010318D0202B0CD0DAB24245B4F8AA -:10A0F0000320E9D1FD2AF2D8A1180132207148715C -:10A10000E270ECE7B4F80330FD2B05D80022E1182B -:10A11000013322714A71E37007F11400CD460EF04D -:10A1200071F9381D0EF06EF985E700BF02020200DA -:10A130008775898000240020591C002223440820B0 -:10A14000E1702271B4F803105871FD293FF69EAEFC -:10A1500065180131E170B4F803306871FD2B3FF6EA -:10A1600095AEE1180133E370B4F803304871FD2B6C -:10A170003FF68CAEE01801330421E370B4F80330ED -:10A180004171FD2B3FF682AEE0180133E370B4F865 -:10A1900003304171FD2B3FF679AEE0180133022503 -:10A1A000E370B4F803304571FD2B3FF66FAEE01855 -:10A1B0000133E370B4F803304171FD2B3FF666AE16 -:10A1C000E0180133E370B4F803304271FD2B3FF621 -:10A1D0005DAE581CE218E070B4F803305171FD2BED -:10A1E0003FF654AE581CE2180821E070B4F8033072 -:10A1F0005171FD2B3FF64AAEE21801331020E37097 -:10A20000B4F803305071FD2B3FF640AEE218013335 -:10A210005171E3703AE600BF70B5ADF5027D0025DF -:10A2200006460E2341ACCDE90055256090F82D205F -:10A2300090F82C1020462571FFF70AF87368204625 -:10A24000D3F80831996EFFF799FDB4F80330FD2B70 -:10A2500010D901230021F7226846CDE93E3144A9F7 -:10A260000EF018FC304694E80E00FEF7F5FC0DF5F4 -:10A27000027D70BDE21801332571E370B4F803303C -:10A280005571FD2BE5D8E2180133E370B4F80330C3 -:10A290005571FD2BDDD8E2180133E370B4F80330BB -:10A2A0005571FD2BD5D8E2180133E370B4F80330B3 -:10A2B0005571FD2BCDD8E21801335571E370C8E715 -:10A2C00038B50368B3F86030DB0700D438BD0D46FD -:10A2D00004460021124810F0FDFA12480DF090FFDC -:10A2E0000321114810F0F6FA0121104810F0F2FA9B -:10A2F00035B1284612F0EAFD0146284610F0EAFA88 -:10A3000001210A4810F0E6FA0821094810F0E2FAA3 -:10A310000121064810F0DEFA0EF0F2FAE06138BDD5 -:10A32000583C0020A84B0020C8360020EC23002019 -:10A33000103E00200368B3F86030DB0700D470479C -:10A3400010B504210446174810F0C4FA012116483C -:10A3500010F0C0FA0EF0D4FAE3690221C31A1348D0 -:10A3600000EE103A9FED0D7BB8EE400B80EE070B30 -:10A370000DF078FF01210C4810F0ACFA0C210C48CC -:10A3800010F0A8FA09480DF03BFF0021094810F031 -:10A39000A1FA0648BDE810400DF032BF00000000F1 -:10A3A00000408F40383E0020EC230020A84B0020C6 -:10A3B000403E0020583C00202DE9F04F05460C4659 -:10A3C00085B0FEF7D3FB214606462846FEF704FC7F -:10A3D0002A4604EB840441F23D23B6B203EB440366 -:10A3E00052F80C4B06441C44EB68B6B20192B3F829 -:10A3F0006030DB0721D50021444810F06BFA444857 -:10A400000DF0FEFE0321434810F064FA012142489A -:10A4100010F060FA0821414810F05CFA01213E4832 -:10A4200010F058FA08213E4810F054FA01213A4839 -:10A4300010F050FA0EF064FAA8620E21394810F0BC -:10A4400049FA06F10A08731C374F05F11009361B4B -:10A45000984534BF4FF001084FF00A083B684FF0B1 -:10A46000000ADFF8C8B0A0442B6206E03B682A6A05 -:10A470009B1AF92B1CD8444522D0A11914F8013B92 -:10A48000484600918DF80F3009F026F89DF80F30FE -:10A4900000999842EAD001230DF10F0248460AF1D3 -:10A4A000010A08F00FFF3B682A6A9B1AF92BE2D9D0 -:10A4B0000121584610F00EFA3B6844452B62DCD16E -:10A4C00001211A4810F006FA11480DF099FE0921F1 -:10A4D000174810F0FFF901210F4810F0FBF9002395 -:10A4E0000A2251460A480DF0A7FE01210A4810F041 -:10A4F000F1F905210F4810F0EDF905480DF080FE47 -:10A500000198FFF717FF05B0BDE8F08F583C002019 -:10A51000A84B0020C8360020EC230020043E002079 -:10A52000103E00201C3E0020E8BA0020B830002079 -:10A530002C3E0020482400202DE9F04F0C46054613 -:10A5400085B0FEF713FB214606462846FEF73CFB86 -:10A5500041F2AD121223B6B213FB04232A4606447D -:10A5600052F80C4BB6B21C44EB680192B3F8603061 -:10A57000DB0721D50021454810F0ACF944480DF027 -:10A580003FFE0321434810F0A5F90121424810F095 -:10A59000A1F90821414810F09DF901213E4810F031 -:10A5A00099F908213E4810F095F901213A4810F038 -:10A5B00091F90EF0A5F9A8620E213A4810F08AF937 -:10A5C00006F11209731C384F05F11008361B994526 -:10A5D00034BF4FF001094FF012093B684FF0000AF9 -:10A5E000DFF8C8B0A1442B6206E03B682A6A9B1AD8 -:10A5F000F92B1CD84C4522D0A11914F8013B404638 -:10A6000000918DF80F3008F067FF9DF80F3000992A -:10A610009842EAD001230DF10F0240460AF1010AE7 -:10A6200008F050FE3B682A6A9B1AF92BE2D90121F7 -:10A63000584610F04FF93B684C452B62DCD10121A4 -:10A640001A4810F047F912480DF0DAFD09211848B0 -:10A6500010F040F90121104810F03CF900230A22C3 -:10A6600051460B480DF0E8FD01210B4810F032F97E -:10A670000521104810F02EF905480DF0C1FD019894 -:10A68000FFF758FE05B0BDE8F08F00BF583C002032 -:10A69000A84B0020C8360020EC230020043E0020F8 -:10A6A000103E00201C3E0020E8BA0020B8300020F8 -:10A6B0002C3E0020482400202DE9F04F0C46054692 -:10A6C00085B0FEF753FA214606462846FEF78CFA77 -:10A6D00041F2BD420D23B6B213FB04232A460644C1 -:10A6E00052F80C4BB6B21C44EB680192B3F86030E0 -:10A6F000DB0721D50021454810F0ECF844480DF067 -:10A700007FFD0321434810F0E5F80121424810F095 -:10A71000E1F80821414810F0DDF801213E4810F031 -:10A72000D9F808213E4810F0D5F801213A4810F038 -:10A73000D1F80EF0E5F8A8620E213A4810F0CAF8F8 -:10A7400006F10D09731C384F05F11008361B9945A9 -:10A7500034BF4FF001094FF00D093B684FF0000A7C -:10A76000DFF8C8B0A1442B6206E03B682A6A9B1A56 -:10A77000F92B1CD84C4522D0A11914F8013B4046B6 -:10A7800000918DF80F3008F0A7FE9DF80F3000996A -:10A790009842EAD001230DF10F0240460AF1010A66 -:10A7A00008F090FD3B682A6A9B1AF92BE2D9012137 -:10A7B000584610F08FF83B684C452B62DCD10121E4 -:10A7C0001A4810F087F812480DF01AFD09211848B0 -:10A7D00010F080F80121104810F07CF800230A22C4 -:10A7E00051460B480DF028FD01210B4810F072F87E -:10A7F0000521104810F06EF805480DF001FD019894 -:10A80000FFF798FD05B0BDE8F08F00BF583C002071 -:10A81000A84B0020C8360020EC230020043E002076 -:10A82000103E00201C3E0020E8BA0020B830002076 -:10A830002C3E0020482400202DE9F04F06460C460F -:10A8400085B00327FEF792F9214605463046FEF70C -:10A85000F7F941F24A53B246ADB217FB0434F3683C -:10A860000544B3F860205AF80C3BADB21C44D30742 -:10A8700021D50021414810F02DF841480DF0C0FCD1 -:10A880003946404810F026F801213F4810F022F8E0 -:10A8900008213E4810F01EF801213B4810F01AF83C -:10A8A00008213B4810F016F80121374810F012F843 -:10A8B0000EF026F8B0620E21364810F00BF8EF1CAF -:10A8C0006B1CDFF8E08006F110092D1B9F4234BF9E -:10A8D000012703274FF0000BD8F8003027443362DC -:10A8E000611914F8013B484601918DF80F3008F0CA -:10A8F000F3FD9DF80F300199984235D1D8F800301A -:10A90000326A9B1AF92B27D8BC42E9D1012122488F -:10A910000FF0E0FF1A480DF073FC09211F480FF0FB -:10A92000D9FF012118480FF0D5FF00230A2259460C -:10A9300013480DF081FC012113480FF0CBFF0521D6 -:10A9400017480FF0C7FF0E480DF05AFC5046FFF7AE -:10A95000F1FC05B0BDE8F08F01210F480FF0BAFF00 -:10A96000D8F800303362CFE701230DF10F024846DB -:10A970000BF1010B08F0A6FCC0E700BF583C00201B -:10A98000A84B0020C8360020EC230020043E002005 -:10A99000103E00201C3E0020B83000202C3E00203D -:10A9A00048240020E8BA00202DE9F04F064685B083 -:10A9B000FEF7DCF8002104463046FEF723F9F36881 -:10A9C0003246A4B2B3F8603041F2E64552F80CAB1F -:10A9D0000444DB07A4B25544009221D50021464827 -:10A9E0000FF078FF45480DF00BFC032144480FF0B1 -:10A9F00071FF012143480FF06DFF082142480FF01D -:10AA000069FF01213F480FF065FF08213F480FF023 -:10AA100061FF01213B480FF05DFF0DF071FFB06257 -:10AA20000E213B480FF056FFDFF8F480631CA71D92 -:10AA300006F110094FF0000B9F4234BF0127062793 -:10AA4000D8F8003033620CE0D8F800300134326AB4 -:10AA50009B1AF92B1BD841F2E6435B1B5344DB19CD -:10AA600022D015F8013B214648468DF80F3008F0FA -:10AA700033FD9DF80F309842E6D0214601230DF1B9 -:10AA80000F0248460BF1010B08F01CFCDCE701212A -:10AA900020480FF01FFFD8F80030336241F2E64340 -:10AAA0005B1B5344DB19DCD101211A4801930FF0E1 -:10AAB00011FF12480DF0A4FB092117480FF00AFFFF -:10AAC000012110480FF006FF019B0A2259460B484E -:10AAD0000DF0B2FB01210B480FF0FCFE05210F48E1 -:10AAE0000FF0F8FE05480DF08BFB0098FFF722FCF5 -:10AAF00005B0BDE8F08F00BF583C0020A84B0020F7 -:10AB0000C8360020EC230020043E0020103E002028 -:10AB10001C3E0020B83000202C3E0020482400209D -:10AB2000E8BA00202DE9F04F064685B0FEF71EF882 -:10AB3000002104463046FEF76DF8F3683246A4B2B1 -:10AB4000B3F8603041F2EC4552F80CAB0444DB073B -:10AB5000A4B25544009221D5002146480FF0BAFE18 -:10AB600045480DF04DFB032144480FF0B3FE012191 -:10AB700043480FF0AFFE082142480FF0ABFE012121 -:10AB80003F480FF0A7FE08213F480FF0A3FE012128 -:10AB90003B480FF09FFE0DF0B3FEB0620E213B4824 -:10ABA0000FF098FEDFF8F480631CA71D06F1100972 -:10ABB0004FF0000B9F4234BF01270627D8F8003022 -:10ABC00033620CE0D8F800300134326A9B1AF92B5A -:10ABD0001BD841F2EC435B1B5344DB1922D015F820 -:10ABE000013B214648468DF80F3008F075FC9DF872 -:10ABF0000F309842E6D0214601230DF10F0248465E -:10AC00000BF1010B08F05EFBDCE7012120480FF09F -:10AC100061FED8F80030336241F2EC435B1B5344D1 -:10AC2000DB19DCD101211A4801930FF053FE1248C1 -:10AC30000DF0E6FA092117480FF04CFE01211048EB -:10AC40000FF048FE019B0A2259460B480DF0F4FA1A -:10AC500001210B480FF03EFE05210F480FF03AFE90 -:10AC600005480DF0CDFA0098FFF764FB05B0BDE88C -:10AC7000F08F00BF583C0020A84B0020C8360020B1 -:10AC8000EC230020043E0020103E00201C3E00204B -:10AC9000B83000202C3E002048240020E8BA0020D4 -:10ACA0002DE9F04F06460C4685B0FDF75FFF2146C3 -:10ACB00005463046FDF7BEFFB346A40041F23A53C5 -:10ACC000ADB223445BF80C4B05441C44F368ADB2B1 -:10ACD000B3F86030DB0721D5002141480FF0FAFDC1 -:10ACE00040480DF08DFA03213F480FF0F3FD01219C -:10ACF0003E480FF0EFFD08213D480FF0EBFD01212C -:10AD00003A480FF0E7FD08213A480FF0E3FD012132 -:10AD100036480FF0DFFD0DF0F3FDB0620E2136482E -:10AD20000FF0D8FD2F1D6B1CDFF8DC8006F1100939 -:10AD30002D1B9F4234BF012704274FF0000AD8F88B -:10AD4000003027443362611914F8013B48460191F1 -:10AD50008DF80F3008F0C0FB9DF80F300199984234 -:10AD600035D1D8F80030326A9B1AF92B27D8BC426B -:10AD7000E9D1012121480FF0ADFD1A480DF040FA4C -:10AD800009211F480FF0A6FD012118480FF0A2FD70 -:10AD900000230A22514613480DF04EFA01211348B0 -:10ADA0000FF098FD052117480FF094FD0D480DF0A8 -:10ADB00027FA5846FFF7BEFA05B0BDE8F08F01212B -:10ADC0000E480FF087FDD8F800303362CFE701233B -:10ADD0000DF10F0248460AF1010A08F073FAC0E7C4 -:10ADE000583C0020A84B0020C8360020EC2300204F -:10ADF000043E0020103E00201C3E0020B830002001 -:10AE00002C3E002048240020E8BA00202DE9F04F15 -:10AE100006460C4685B0FDF7A9FE2146054630469C -:10AE2000FDF714FFB346F368ADB204F25454B3F81F -:10AE3000602005445BF80C3BADB203EB8404D30700 -:10AE400021D5002141480FF045FD41480DF0D8F9CA -:10AE5000032140480FF03EFD01213F480FF03AFD2D -:10AE600008213E480FF036FD01213B480FF032FD2E -:10AE700008213B480FF02EFD012137480FF02AFD35 -:10AE80000DF03EFDB0620E2136480FF023FD2F1D60 -:10AE90006B1CDFF8E08006F110092D1B9F4234BFC8 -:10AEA000012704274FF0000AD8F800302744336206 -:10AEB000611914F8013B484601918DF80F3008F0F4 -:10AEC0000BFB9DF80F300199984235D1D8F800302E -:10AED000326A9B1AF92B27D8BC42E9D101212248BA -:10AEE0000FF0F8FC1A480DF08BF909211F480FF0FC -:10AEF000F1FC012118480FF0EDFC00230A22514615 -:10AF000013480DF099F9012113480FF0E3FC0521D6 -:10AF100017480FF0DFFC0E480DF072F95846FFF7A6 -:10AF200009FA05B0BDE8F08F01210F480FF0D2FCFF -:10AF3000D8F800303362CFE701230DF10F02484605 -:10AF40000AF1010A08F0BEF9C0E700BF583C002032 -:10AF5000A84B0020C8360020EC230020043E00202F -:10AF6000103E00201C3E0020B83000202C3E002067 -:10AF700048240020E8BA00202DE9F04F0C46054691 -:10AF800085B0FDF7F3FD214604EB84040646284610 -:10AF9000FDF714FE2946EB686400B6B2B3F86020F2 -:10AFA00004F62D7451F80C3B06441C44D307B6B28A -:10AFB000019121D5002145480FF08CFC44480DF04B -:10AFC0001FF9032143480FF085FC012142480FF08F -:10AFD00081FC082141480FF07DFC01213E480FF023 -:10AFE00079FC08213E480FF075FC01213A480FF02A -:10AFF00071FC0DF085FCA8620E213A480FF06AFC46 -:10B0000006F10A08731C384F05F11009361B9845E4 -:10B0100034BF4FF001084FF00A083B684FF0000AB8 -:10B02000DFF8C8B0A0442B6206E03B682A6A9B1A8E -:10B03000F92B1CD8444522D0A11914F8013B4846ED -:10B0400000918DF80F3008F047FA9DF80F30009905 -:10B050009842EAD001230DF10F0248460AF1010A95 -:10B0600008F030F93B682A6A9B1AF92BE2D90121D2 -:10B0700058460FF02FFC3B6844452B62DCD1012180 -:10B080001A480FF027FC12480DF0BAF809211848A9 -:10B090000FF020FC012110480FF01CFC00230A22B5 -:10B0A00051460B480DF0C8F801210B480FF012FC77 -:10B0B000052110480FF00EFC05480DF0A1F801988D -:10B0C000FFF738F905B0BDE8F08F00BF583C00200D -:10B0D000A84B0020C8360020EC230020043E0020AE -:10B0E000103E00201C3E0020E8BA0020B8300020AE -:10B0F0002C3E0020482400202DE9F04F0C46054648 -:10B1000085B0FDF733FD214606462846FDF78AFD4A -:10B1100041F2F2421223B6B213FB04232A4606443C -:10B1200052F80C4BB6B21C44EB680192B3F8603095 -:10B13000DB0721D5002145480FF0CCFB44480DF03A -:10B140005FF8032143480FF0C5FB012142480FF08F -:10B15000C1FB082141480FF0BDFB01213E480FF023 -:10B16000B9FB08213E480FF0B5FB01213A480FF02A -:10B17000B1FB0DF0C5FBA8620E213A480FF0AAFB07 -:10B1800006F11209731C384F05F11008361B99455A -:10B1900034BF4FF001094FF012093B684FF0000A2D -:10B1A000DFF8C8B0A1442B6206E03B682A6A9B1A0C -:10B1B000F92B1CD84C4522D0A11914F8013B40466C -:10B1C00000918DF80F3008F087F99DF80F30009945 -:10B1D0009842EAD001230DF10F0240460AF1010A1C -:10B1E00008F070F83B682A6A9B1AF92BE2D9012112 -:10B1F00058460FF06FFB3B684C452B62DCD10121B8 -:10B200001A480FF067FB12480CF0FAFF09211848A2 -:10B210000FF060FB012110480FF05CFB00230A22B5 -:10B2200051460B480DF008F801210B480FF052FB76 -:10B23000052110480FF04EFB05480CF0E1FF019886 -:10B24000FFF778F805B0BDE8F08F00BF583C00204C -:10B25000A84B0020C8360020EC230020043E00202C -:10B26000103E00201C3E0020E8BA0020B83000202C -:10B270002C3E0020482400202DE9F04F06460C46C5 -:10B2800085B00327FDF772FC214605463046FDF7E1 -:10B29000B3FC41F2D743B246ADB217FB0434F368B6 -:10B2A0000544B3F860205AF80C3BADB21C44D307F8 -:10B2B00021D5002141480FF00DFB41480CF0A0FFC3 -:10B2C000394640480FF006FB01213F480FF002FBD2 -:10B2D00008213E480FF0FEFA01213B480FF0FAFA30 -:10B2E00008213B480FF0F6FA012137480FF0F2FA37 -:10B2F0000DF006FBB0620E2136480FF0EBFAEF1CA2 -:10B300006B1CDFF8E08006F110092D1B9F4234BF53 -:10B31000012703274FF0000BD8F800302744336291 -:10B32000611914F8013B484601918DF80F3008F07F -:10B33000D3F89DF80F300199984235D1D8F80030F4 -:10B34000326A9B1AF92B27D8BC42E9D10121224845 -:10B350000FF0C0FA1A480CF053FF09211F480FF0F4 -:10B36000B9FA012118480FF0B5FA00230A2259460C -:10B3700013480CF061FF012113480FF0ABFA0521CF -:10B3800017480FF0A7FA0E480CF03AFF5046FEF7A8 -:10B39000D1FF05B0BDE8F08F01210F480FF09AFAF8 -:10B3A000D8F800303362CFE701230DF10F02484691 -:10B3B0000BF1010B07F086FFC0E700BF583C0020EF -:10B3C000A84B0020C8360020EC230020043E0020BB -:10B3D000103E00201C3E0020B83000202C3E0020F3 -:10B3E00048240020E8BA002090F844201107C2F356 -:10B3F000C0030AD54368D3F80831DA6DC2F380037D -:10B40000520702D5036BC3F340331846704700BFA1 -:10B410002DE9F04F05460E4685B0FDF7A7FB3146F6 -:10B4200004462846FDF7B4FBEB68A4B2A946B3F87E -:10B43000603006F27C76044459F80C7BDB07A4B23A -:10B4400007EB460721D5002142480FF043FA424856 -:10B450000CF0D6FE032141480FF03CFA0121404890 -:10B460000FF038FA08213F480FF034FA01213C4828 -:10B470000FF030FA08213C480FF02CFA012138482F -:10B480000FF028FA0DF03CFAA8620E2137480FF0B1 -:10B4900021FA631CA21CDFF8E48005F1100A7E1E6D -:10B4A0009A424FF0000B34BF002301230193D8F8D8 -:10B4B00000302B6216F8013F214650468DF80F30C0 -:10B4C00008F00AF89DF80F30984231D1D8F80030D2 -:10B4D00001342A6A9B1AF92B34D8BB1B019A9B189A -:10B4E000E8D10121224801930FF0F4F91A480CF039 -:10B4F00087FE09211F480FF0EDF9012118480FF0D0 -:10B50000E9F9019B0A22594613480CF095FE0121E6 -:10B5100013480FF0DFF9052117480FF0DBF90E484B -:10B520000CF06EFE4846FEF705FF05B0BDE8F08F53 -:10B53000012321460DF10F0250460BF1010B07F0DC -:10B54000C1FEC3E701210A480FF0C4F9D8F8003062 -:10B550002B62C2E7583C0020A84B0020C8360020D0 -:10B56000EC230020043E0020103E00201C3E002062 -:10B57000B83000202C3E002048240020E8BA0020EB -:10B580002DE9F04F0C46064685B0FDF7EFFA21464F -:10B5900005463046FDF700FB40F618720723ADB2B2 -:10B5A00013FB04233246054452F80C4BADB21C4445 -:10B5B000F3680192B3F86030DB0721D500214648DB -:10B5C0000FF088F945480CF01BFE032144480FF0AA -:10B5D00081F9012143480FF07DF9082142480FF01D -:10B5E00079F901213F480FF075F908213F480FF024 -:10B5F00071F901213B480FF06DF90DF081F9B0624E -:10B600000E213B480FF066F9EF1D6B1CDFF8F08050 -:10B6100006F110092D1B9F4234BF01270727D8F8D8 -:10B6200000304FF0000ADFF8CCB02744336207E067 -:10B63000D8F80030326A9B1AF92B1DD8BC4224D0AE -:10B64000611914F8013B484600918DF80F3007F05E -:10B6500043FF9DF80F3000999842E9D001230DF186 -:10B660000F0248460AF1010A07F02CFED8F8003014 -:10B67000326A9B1AF92BE1D9012158460FF02AF9B9 -:10B68000D8F80030BC423362DAD1012119480FF0FA -:10B6900021F912480CF0B4FD092117480FF01AF9EE -:10B6A000012110480FF016F900230A2251460B48D9 -:10B6B0000CF0C2FD01210B480FF00CF905210F48D9 -:10B6C0000FF008F905480CF09BFD0198FEF732FEDB -:10B6D00005B0BDE8F08F00BF583C0020A84B00200B -:10B6E000C8360020EC230020043E0020103E00203D -:10B6F0001C3E0020B83000202C3E002048240020B2 -:10B70000E8BA00202DE9F04F0C46054685B0FDF75C -:10B710002DFA214606462846FDF744FA40F61F72E8 -:10B720000923B6B213FB04232A46064452F80C4BF5 -:10B73000B6B21C44EB680192B3F86030DB0721D548 -:10B74000002144480FF0C6F843480CF059FD03218E -:10B7500042480FF0BFF8012141480FF0BBF8082123 -:10B7600040480FF0B7F801213D480FF0B3F8082129 -:10B770003D480FF0AFF8012139480FF0ABF80DF05C -:10B78000BFF8A8620E2139480FF0A4F806F10907A6 -:10B79000731CDFF8E88005F11009361B9F4234BFA7 -:10B7A00001270927D8F800304FF0000ADFF8C0B0B1 -:10B7B00027442B6201E0BC421CD0A11914F8013BC4 -:10B7C000484600918DF80F3007F086FE9DF80F3047 -:10B7D0000099984234D1D8F800302A6A9B1AF92B84 -:10B7E000E9D9012158460FF075F8D8F80030BC426D -:10B7F0002B62E2D101211E480FF06CF816480CF0C4 -:10B80000FFFC09211B480FF065F8012114480FF0D7 -:10B8100061F800230A2251460F480CF00DFD01216A -:10B820000F480FF057F8052113480FF053F80A4856 -:10B830000CF0E6FC0198FEF77DFD05B0BDE8F08F49 -:10B8400001230DF10F0248460AF1010A07F03AFD03 -:10B85000C1E700BF583C0020A84B0020C83600209C -:10B86000EC230020043E0020103E00201C3E00205F -:10B87000B83000202C3E002048240020E8BA0020E8 -:10B880002DE9F04F064685B0FDF770F9002104461A -:10B890003046FDF78DF93346A4B253F80CAB04449F -:10B8A00000930AF62875F368A4B2B3F86030DB079A -:10B8B00021D5002142480FF00DF842480CF0A0FCC1 -:10B8C000032141480FF006F8012140480FF002F82B -:10B8D00008213F480EF0FEFF01213C480EF0FAFF20 -:10B8E00008213C480EF0F6FF012138480EF0F2FF27 -:10B8F0000DF006F8B0620E2137480EF0EBFFDFF8CE -:10B90000E880631C671D06F110094FF0000B9F4291 -:10B9100034BF01270527D8F80030336215F8013B02 -:10B92000214648468DF80F3007F0D6FD9DF80F30C0 -:10B9300098423BD1D8F800300134326A9B1AF92B77 -:10B940002CD840F628735B1B5344DB19E6D1012148 -:10B95000224801930EF0BEFF1A480CF051FC092159 -:10B960001F480EF0B7FF012118480EF0B3FF019BEE -:10B970000A22594613480CF05FFC012113480EF0CF -:10B98000A9FF052117480EF0A5FF0E480CF038FC62 -:10B990000098FEF7CFFC05B0BDE8F08F01210F48FD -:10B9A0000EF098FFD8F800303362CAE72146012331 -:10B9B0000DF10F0248460BF1010B07F083FCB9E7CC -:10B9C000583C0020A84B0020C8360020EC23002063 -:10B9D000043E0020103E00201C3E0020B830002015 -:10B9E0002C3E002048240020E8BA00202DE9F04F2A -:10B9F0000C4685B00546FDF7B9F804EB441241F258 -:10BA00005C5304EB820213444FF4AB5213FA80F8F8 -:10BA1000852313FB04232A461FFA88F852F80C4B9F -:10BA20001C44EB680192B3F86030DA0721D500219D -:10BA30004B480EF04FFF4B480CF0E2FB03214A4805 -:10BA40000EF048FF012149480EF044FF0821484804 -:10BA50000EF040FF012145480EF03CFF082145480B -:10BA60000EF038FF012141480EF034FF0CF048FF82 -:10BA7000A8620E2140480EF02DFF08F1850908F15B -:10BA800001033E4E05F11007A8EB0408994534BFA9 -:10BA90004FF001094FF0850933684FF0000ADFF8D5 -:10BAA000E0B0A1442B6206E033682A6A9B1AF92BA6 -:10BAB0001DD84C4523D004EB080114F8013B38464F -:10BAC00000918DF80F3007F007FD9DF80F300099B9 -:10BAD0009842E9D001230DF10F0238460AF1010A1C -:10BAE00007F0F0FB33682A6A9B1AF92BE1D9012190 -:10BAF00058460EF0EFFE33684C452B62DBD1012136 -:10BB00001F480EF0E7FE17480CF07AFB09211D488C -:10BB10000EF0E0FE012115480EF0DCFE00230A22A3 -:10BB2000514610480CF088FB012110480EF0D2FE5F -:10BB3000052115480EF0CEFE0A480CF061FB019875 -:10BB4000FEF7F8FB6B68D3F80831DB6D5B0703D5B4 -:10BB50002B6B43F004032B6305B0BDE8F08F00BFEF -:10BB6000583C0020A84B0020C8360020EC230020C1 -:10BB7000043E0020103E00201C3E0020E8BA0020B9 -:10BB8000B83000202C3E0020482400202DE9F84346 -:10BB9000C36B8146B3F803400E2C6FD800230B70A3 -:10BBA000D9F83C40B4F803500F2D79D8082501236B -:10BBB000002466001136F6B2002C54D00134E6B2EF -:10BBC0009E42F6D35B0002314FF0000E1133DBB220 -:10BBD00007E00EF1010E02335FFA8EFCDBB2AC45DA -:10BBE0001CD2BEF1070FF4D8D9F83C405E1C4FF0D0 -:10BBF000000CB4F80370BE420DDAE71834447E79C5 -:10BC00006479F60104F07F0406F47E563443C82CB0 -:10BC1000D8BF5FFA84FC01F80EC0DAE7002A14DB13 -:10BC200099F844301C0712D4D1B24846FFF7DEFE23 -:10BC3000D9F80430D3F80831DB6D5B0705D5D9F8A6 -:10BC4000303043F00403C9F83030BDE8F883D9F848 -:10BC50000430D3F80831DB6D5807E5D5D9F830301A -:10BC60009904F2D4E0E7D9F83C0006F1010E27462A -:10BC7000B0F80380C64522DB4F709FE79C7CDB7CDD -:10BC8000E40103F07F0304F47E542343802B85DC1E -:10BC9000DBB20B70D9F83C40B4F803500F2D85D9B6 -:10BCA000237D102D03F07F0317D0657D012B05F058 -:10BCB0007F0538BF0123082D38BF082578E7864463 -:10BCC00000EB060C9EF805709CF8056007F07F07F6 -:10BCD00047EAC617FFB24F7070E7012B4FF0080517 -:10BCE00038BF012364E700BF2DE9F843C36B8146E9 -:10BCF000B3F803400E2C7AD800230B70D9F83C40DF -:10BD0000B4F803500F2D00F286804FF0100E01237F -:10BD1000002465001135EDB2002C5DD00134E5B290 -:10BD20009D42F6D3013B02314FF0000C5B00DBB2C9 -:10BD300003EB4E0E13330EF1130EDBB25FFA8EFEE1 -:10BD400005E002330CF1010CDBB29E451FD0BCF1C3 -:10BD50000F0FF6D8D9F83C405D1C0026B4F80370EC -:10BD6000BD420CDAE7182C447D796479ED0104F0CA -:10BD70007F0405F47E552C43C82CD8BFE6B20233AD -:10BD800001F80C600CF1010CDBB29E45DFD1002AFA -:10BD900014DB99F844301C0712D4D1B24846FFF79F -:10BDA00025FED9F80430D3F80831DB6D5B0705D5E3 -:10BDB000D9F8303043F00403C9F83030BDE8F883D7 -:10BDC000D9F80430D3F80831DB6D5807E5D5D9F838 -:10BDD00030309904F2D4E0E7D9F83C7005F1010C59 -:10BDE0002646B7F80380C44527DB4E7096E79C7C57 -:10BDF000DB7CE40103F07F0304F47E542343802BB7 -:10BE00003FF77AAFDBB20B70D9F83C40B4F803507F -:10BE10000F2D7FF67AAF237D102D03F07F0318D00E -:10BE200094F815E0012B0EF07F0E38BF0123BEF110 -:10BE3000100F38BF4FF0100E6AE7BC442F449CF837 -:10BE400005607D7906F07F0646EAC516F6B24E70AB -:10BE500064E7012BAE4638BF012359E72DE9F843CB -:10BE6000C36B8146B3F803400E2C73D800230B70CC -:10BE7000D9F83C40B4F803500F2D7DD84FF0010C99 -:10BE80006346002465001135EDB2002C57D0013413 -:10BE9000E5B29D42F6D3013B00245B00DBB203EB2D -:10BEA0004C0C13330CF1130CDBB25FFA8CFCECB1CD -:10BEB00002330134DBB29C45F9D1002A14DB99F836 -:10BEC00044301C072FD4D1B24846FFF78FFDD9F874 -:10BED0000430D3F80831DB6D5B0705D5D9F8303075 -:10BEE00043F00403C9F83030BDE8F883D9F83C507A -:10BEF00003F1010E2646B5F80370BE4501DB8E70D6 -:10BF0000D6E7EF18754497F805E06D794FEACE1E35 -:10BF100005F07F050EF47E5E45EA0E05C82DD8BFFC -:10BF2000EEB28E70C4E7D9F80430D3F80831DB6D77 -:10BF30005807C8D5D9F830309904D5D4C3E7D9F813 -:10BF40003C7005F1010E2646B7F80380C64525DB97 -:10BF50004E709CE79C7CDB7CE40103F07F0304F4DF -:10BF60007E542343802B81DCDBB20B70D9F83C403C -:10BF7000B4F803500F2D81D9237D102D03F07F03DA -:10BF800018D094F815C0012B0CF07F0C38BF01239A -:10BF9000BCF1010F38BF4FF0010C72E7BE442F44D3 -:10BFA0009EF805607D7906F07F0646EAC516F6B272 -:10BFB0004E706CE7012B4FF0010C38BF012360E796 -:10BFC0002DE9F84FC36B8346B3F803400E2C00F203 -:10BFD0009F8000230B70DBF83C40B4F803500F2D1A -:10BFE00000F28780062633465C004FF0000E4FF0CB -:10BFF000110C4F1C1134E4B207E00CF1020C0EF1ED -:10C00000010E5FFA8CFC644521D0BEF1050FF4D817 -:10C01000DBF83C000CF101090025B0F803A0D14584 -:10C020000BDA814400EB0C0899F8055098F805806C -:10C0300005F07F0545EAC815EDB20CF1020C07F8D2 -:10C040000E500EF1010E5FFA8CFC6445DDD15B00F1 -:10C05000073100251133DBB206E0013502335FFA08 -:10C0600085FCDBB2B4451FD2052DF6D8DBF83C4089 -:10C0700003F1010C0027B4F803E0F44501DB4F5550 -:10C08000EBE704EB030E64449EF805C064794FEAC5 -:10C09000CC1C04F07F040CF47E5C44EA0C04C82C35 -:10C0A000D8BFE7B24F55D8E7002A14DB9BF84430DD -:10C0B0001C0712D4D1B25846FFF798FCDBF80430C5 -:10C0C000D3F80831DB6D5B0705D5DBF8303043F082 -:10C0D0000403CBF83030BDE8F88FDBF80430D3F838 -:10C0E0000831DB6D5807E5D5DBF830309904F2D420 -:10C0F000E0E7237D102D03F07F0316D0667D062B2D -:10C1000006F07F0638BF0623062E38BF06266BE7EB -:10C110009C7CDB7CE40103F07F0304F47E54234326 -:10C12000802B3FF756AFDBB254E7062B4FF00606E5 -:10C1300038BF062358E700BFC36B2DE9F041B3F8C1 -:10C14000034080460E2C70D800230B70D8F83C407A -:10C15000B4F803500F2D55D84FF0060E112303EB02 -:10C160004E0E01314FF0000C5FFA8EFE05E00233F7 -:10C170000CF1010CDBB29E451FD0BCF1050FF6D8C7 -:10C18000D8F83C405E1C0025B4F80370BE420CDABF -:10C19000E71834447E796479F60104F07F0406F4EC -:10C1A0007E563443C82CD8BFE5B2023301F80C5098 -:10C1B0000CF1010CDBB29E45DFD1002A14DB98F8AC -:10C1C00044301C0712D4D1B24046FFF70FFCD8F818 -:10C1D0000430D3F80831DB6D5B0705D5D8F8303073 -:10C1E00043F00403C8F83030BDE8F081D8F80430DB -:10C1F000D3F80831DB6D5807E5D5D8F8303099040D -:10C20000F2D4E0E7237D102D03F07F031BD094F8D8 -:10C2100015E00EF07F0EBEF1060F38BF4FF0060E90 -:10C220007BB15B001133DBB299E79C7CDB7CE401E2 -:10C2300003F07F0304F47E542343802B84DCDBB2C1 -:10C2400083E711238BE74FF0060EE9E72DE9F04F66 -:10C25000ADF5C05D054641F2EC5441F6950685B05A -:10C26000FCF77CFC41F2FC720021039005A86C44B1 -:10C2700010F0D2FA06A8E2F7F1FA41F2FC5141F2CD -:10C28000D6506E44694400226844A1F1740301F859 -:10C29000882C03F80D2C0D339842FAD1A1F12E030E -:10C2A00003F8052C0533A342FAD1A1F1120303F8D8 -:10C2B000032C03338B42FAD103F185018534853099 -:10C2C000B142E2D105AE41F2FC7228680024314649 -:10C2D0000CF0E0FB2B689D4A1A60E1B23046E9F7AA -:10C2E00087FB717DB27D2B689142F07D234404F180 -:10C2F000010403D381420A4628BF0246042C83F876 -:10C30000292FEAD12B6802229148032603F5805198 -:10C31000C1F8E804284683F8192F26222B6883F8F1 -:10C320001A6F2B6883F81B2F28222B6883F81C2F89 -:10C33000AB68196895F82D304A689B0322F4703277 -:10C3400003F4703313434B60FCF708FC2A46EB6898 -:10C35000814652F80C4BB3F860300292DA0721D5CF -:10C3600000217C480EF0B6FA7B480BF049FF3146BD -:10C370007A480EF0AFFA012179480EF0ABFA0821A5 -:10C3800078480EF0A7FA012175480EF0A3FA0821AB -:10C3900075480EF09FFA012171480EF09BFA0CF0DF -:10C3A000AFFAA8621FFA89F941F2FC7A0E216F48B0 -:10C3B0000EF090FA6E4E09F1010309EB0A020DF13D -:10C3C0001408A9EB04099A4238BF4FF0010A3368F8 -:10C3D00005F110074FF0000BA2442B6206E0336812 -:10C3E0002A6A9B1AF92B1CD8544522D004EB090168 -:10C3F00014F8013B384688F80030019107F06CF8DA -:10C4000098F8003001999842E9D0012305AA3846EE -:10C410000BF1010B06F056FF33682A6A9B1AF92BC1 -:10C42000E2D9012153480EF055FA336854452B6286 -:10C43000DCD101214F480EF04DFA47480BF0E0FEE9 -:10C4400009214D480EF046FA012145480EF042FA06 -:10C4500000230A22594640480BF0EEFE01214048D5 -:10C460000EF038FA052145480EF034FA3A480BF040 -:10C47000C7FE0298FDF75EFFEB682C68B3F86030EA -:10C48000DB0721D5002133480EF024FA32480BF0A7 -:10C49000B7FE032131480EF01DFA012130480EF09D -:10C4A00019FA072136480EF015FA01212C480EF032 -:10C4B00011FA08212C480EF00DFA012128480EF03F -:10C4C00009FA0CF01DFAA8620F212E48BDF80C9055 -:10C4D00041F2FC780EF0FEF9336809F10102DFF851 -:10C4E00094A02B6209EB0803A9EB04099A4288BFC8 -:10C4F0004FF00108A04401E0444513D004EB0901CA -:10C50000384606F0E9FF04F8010B33682A6A9B1AE3 -:10C51000F92BF1D9012150460EF0DCF9336844457E -:10C520002B62EBD1012113480EF0D4F90A480BF02D -:10C5300067FE0298FDF7FEFE2B6B43F400632B634E -:10C540000DF5C05D05B0BDE8F08F00BFB049020237 -:10C550000000FF03583C0020A84B0020C8360020F4 -:10C56000EC230020043E0020103E00201C3E002052 -:10C57000E8BA0020B83000202C3E002048240020DB -:10C580009C3B0020A43B00204368D3F80831DB6DBE -:10C59000590705D5036B9A0410B5044601D410BDA4 -:10C5A0007047002123480EF095F923480BF028FE30 -:10C5B0002E2122480EF08EF91F480BF021FE2E216D -:10C5C0001E480EF087F91C480BF01AFE01211C488A -:10C5D0000EF080F90F211B480EF07CF916480BF085 -:10C5E0000FFE2E2115480EF075F913480BF008FECA -:10C5F0002E2112480EF06EF90F480BF001FE0021BB -:10C600000C480EF067F90C480BF0FAFD236B20463E -:10C6100023F4404343F440332363FBF717FD63687F -:10C62000D3F80831DB6D5B07B9D5236B43F0040306 -:10C63000236310BD583C0020A84B0020F43F00208D -:10C64000EC230020B43B0020F0B50C21ADF5037DB8 -:10C6500005462B480EF03EF92A480BF0D1FDEB6B56 -:10C66000B3F80320072A2FD80B2127480EF032F900 -:10C67000244800270BF0C4FD41AC002613232046BC -:10C68000CDE90066266095F82D2095F82C102671CE -:10C69000FCF7DEFDB4F80330FD2B04D8E2180133BB -:10C6A00026715771E37001230021F7226846CDE916 -:10C6B0003E3144A90CF0EEF9284694E80E00FCF750 -:10C6C000CBFA0DF5037DF0BDDA7A43F6FF711B7BE3 -:10C6D000D20103F07F0302F47E5213438B42C3D195 -:10C6E00008210A480EF0F6F806480BF089FD2846A6 -:10C6F000FFF7ACFD4FF47A7001270CF0ADF8BBE703 -:10C70000783C0020A84B0020943C0020883C00206E -:10C7100090F82F208A4200F0D680838B2DE9F04FCD -:10C720009B0889468C490646A1FB03135B0A012B33 -:10C7300038BF012399452DED028B83B080F0BD8079 -:10C7400000F10C0308EE103A002A40F0BE8000F120 -:10C750001008824F86F82F90B2684FEA0953356867 -:10C76000106803F44013F268B2F86010426822F4D3 -:10C7700040121343436023F4703396F82D20920344 -:10C7800002F4703213434360CB0721D50021744873 -:10C790000EF0A0F873480BF033FD032172480EF041 -:10C7A00099F8012171480EF095F8082170480EF0B3 -:10C7B00091F801216D480EF08DF808216D480EF0BA -:10C7C00089F8012169480EF085F80CF099F8B062FB -:10C7D0000E2169480EF07EF84FF000093B684C4688 -:10C7E000DFF898A1336209E03B680134326A9B1A92 -:10C7F000F92B19D841F2FC739C421FD015F8013B6C -:10C80000214640468DF8073006F066FE9DF8073059 -:10C810009842E9D0214601230DF10702404609F173 -:10C82000010906F04FFDDFE7012150460EF052F8F6 -:10C830003B68336241F2FC739C42DFD101214F48D7 -:10C840000EF048F847480BF0DBFC09214C480EF08D -:10C8500041F8012145480EF03DF800230A224946DF -:10C8600040480BF0E9FC012140480EF033F8052167 -:10C8700044480EF02FF83B480BF0C2FC18EE100AAB -:10C88000FDF758FD3046FBF7E1FB05200BF0E4FF18 -:10C89000B26896F82D30304611689B034A6803F45D -:10C8A000703322F4703213434B60FBF7C3F801205E -:10C8B00003B0BDEC028BBDE8F08F002003B0BDECEF -:10C8C000028BBDE8F08F0020704780462E49184645 -:10C8D000224F58F8104BFDF7F3FC0F212B480DF0B9 -:10C8E000F9FF3A684FF0000BDFF890A041F2FC75B9 -:10C8F000326201E0AB4514D05946404606F0ECFDEB -:10C9000004F8010B3A680BF1010B316A521AF92A4B -:10C91000F0D9012150460DF0DDFF3A68AB45326297 -:10C92000EAD1012115480DF0D5FF0E480BF068FC47 -:10C9300018EE100AFDF7FEFCB38B074A9B08A2FB1A -:10C9400003235B0A012B38BF01239945FFF402AF93 -:10C9500096F82F9000E700BF99906355E8BA002041 -:10C96000583C0020A84B0020C8360020EC230020B3 -:10C97000043E0020103E00201C3E0020B830002065 -:10C980002C3E0020482400209C3B0020A43B00209B -:10C990004368D3F80831DB6D5A0710D52DE9F04113 -:10C9A000C46BADF5027D90F82D300546627A90F8A3 -:10C9B0002C609A4204D00DF5027DBDE8F0817047ED -:10C9C0002178B142F7D1B4F803300A2BF3D990F8AB -:10C9D0004430C3F340069B07EDD4E37A247BDB01AC -:10C9E00004F07F0403F47E5344EA0307052F09DDB6 -:10C9F00001233A4613210096FCF78CF90DF5027DD0 -:10CA0000BDE8F08141AC1423CDE9006720462660E3 -:10CA10002671FCF71DFCB4F80330FD2B51D9013F02 -:10CA2000042F5DD8DFE807F00348433E390016279E -:10CA30004FF00E08012620460421FCF777FD314611 -:10CA40002046FCF773FD41462046FCF76FFD31465A -:10CA50002046FCF76BFD39462046FCF767FD314662 -:10CA60002046FCF763FD20460021FCF75FFD2046D1 -:10CA70000021FCF75BFD01230021F7226846CDE988 -:10CA80003E3144A90CF006F8284694E80E00FCF765 -:10CA9000E3F80DF5027DBDE8F0810E274FF0160892 -:10CAA0000526C8E716274FF00E080426C3E7162709 -:10CAB0004FF00E080326BEE716274FF00E08022699 -:10CAC000B9E75A1C23442671E2705E71B4F8033052 -:10CAD000FD2BA4D8E2180133E370062353719EE7BF -:10CAE00016274FF00E080026A5E700BF4368D3F8CD -:10CAF0000831DB6D5A0714D52DE9F04FC56B04469C -:10CB00002DED028B90F82D20ADF5077D6B7A90F816 -:10CB10002C70934206D00DF5077DBDEC028BBDE86D -:10CB2000F08F70472B78BB42F5D1B5F803600A2E21 -:10CB3000F1D990F844309B07EDD409B3FEF754FCCB -:10CB40000746002840F09681EB7A2A7BDB0102F051 -:10CB50007F0203F47E5342EA0308B8F1C70FCDF811 -:10CB6000088152DD00250123429A052120460095C7 -:10CB7000FCF7D0F80DF5077DBDEC028BBDE8F08F1A -:10CB8000EB7A297BDB0101F07F0103F47E5341EA5C -:10CB90000300C7284290E5DC45AD4390429B3946EF -:10CBA000002728460193102300972F602F71FCF770 -:10CBB0004FFBC8212846FCF7B9FC439B2668284652 -:10CBC00006EBC30696F83810FCF7B0FCB5F8033056 -:10CBD00096F83920FD2B40F2D580F16B2846FDF701 -:10CBE000CDF80123002048A9F722CDE93E30684660 -:10CBF0000BF050FF204695E80E00FCF72DF80DF5E0 -:10CC0000077DBDEC028BBDE8F08F182E40F0FC8054 -:10CC1000EA7B2368A97B02F07F0203EBC803CDF80F -:10CC20000C8142EAC11283F83820B5F803200C2A9F -:10CC300000F2F280002283F83920B5F803200E2A92 -:10CC400000F21081002283F83A20B5F80320102A60 -:10CC500000F20081002283F83B20B5F80320152A5A -:10CC600000F2E2800022DA632046FBF77FFF429960 -:10CC700087B22046FBF782FF08F10703A04607446E -:10CC800004F10C00804958F8106BBFB208EE100A8E -:10CC9000DFF810A206EBC30607F10109FDF710FB50 -:10CCA0000E217A484FF0000B0DF014FE07F1080337 -:10CCB00045ADBF1B99458CBF4FF001094FF00809E6 -:10CCC000DAF80030B144236207E0DAF80030226A73 -:10CCD0009B1AF92B1AD84E4521D0F11916F8013BB1 -:10CCE00040462B70419106F0F7FB2B784199984212 -:10CCF000EBD001232A4640460BF1010B06F0E2FA85 -:10CD0000DAF80030226A9B1AF92BE4D90121604835 -:10CD10000DF0E0FDDAF800304E452362DDD101214F -:10CD20005B480DF0D7FD5B480BF06AFA09215A48C1 -:10CD30000DF0D0FD012159480DF0CCFD00230A2251 -:10CD4000594654480BF078FA012154480DF0C2FDC1 -:10CD5000052153480DF0BEFD4E480BF051FA18EE78 -:10CD6000100AFDF7E7FA6368D3F80831DB6D5B075B -:10CD700003D5236B43F00403236394F82C7094F8D9 -:10CD80002D200BE7E918D009013302F07F0248712A -:10CD9000EB702F71B5F80330FD2B3FF61EAFE9188D -:10CDA00001334A71EB70B5F8033096F83A20FD2B49 -:10CDB0004FEAD2103FF611AFE918013302F07F02BB -:10CDC0004871EB70B5F80330FD2B3FF606AFE9185C -:10CDD00001334A71EB70B5F8033096F83B20FD2B18 -:10CDE0004FEAD2103FF6F9AEE918013302F07F02A4 -:10CDF0004871EB70B5F80330FD2B3FF6EEAEE91845 -:10CE000001334A71EB70E8E6012318220A2120461B -:10CE10000097FBF77FFF7EE66A7C297C02F07F02A9 -:10CE200042EAC112D2B206E7AA7E697EA87D02F06C -:10CE30007F02C90142EA0072287E01F47E5180031C -:10CE40000A43E97D00F4FE104905024301F07E61CA -:10CE50000A4308E76A7D297D02F07F0242EAC11297 -:10CE6000D2B2F8E6EA7CA97C02F07F0242EAC11263 -:10CE7000D2B2E8E6182120460DF5077DBDEC028B05 -:10CE8000BDE8F04FFAF72CBB043E00201C3E00200A -:10CE9000B8300020A84B00202C3E0020EC230020BE -:10CEA00048240020E8BA00204368D3F80831DB6D3D -:10CEB0005A0714D52DE9F04FC46B05462DED028BB2 -:10CEC00090F82D20ADF5077D637A90F82C609342A1 -:10CED00006D00DF5077DBDEC028BBDE8F08F7047E5 -:10CEE0002378B342F5D1B4F803700A2FF1D990F842 -:10CEF00044309B07EDD4F9B1FEF776FA06460028D8 -:10CF000040F02C81E27A217BD20101F07F0102F412 -:10CF10007E5241EA02037F2B42936FDD00240123FE -:10CF2000429A062128460094FBF7F4FE0DF5077D92 -:10CF3000BDEC028BBDE8F08FE07A217BC00101F0EF -:10CF40007F0100F47E5041EA00037F2B4293E5DC31 -:10CF500011204FF4CF6145AC13FB00134393429B68 -:10CF60003146002620460193112300962660267143 -:10CF7000FCF76EF980212046FCF7D8FAB4F80320BC -:10CF80002B68FD2A07D8A118112001324871E270E0 -:10CF90002671B4F80320439900270B4403F11000D5 -:10CFA00001E0B4F80320FD2A07D81978A618013249 -:10CFB00001F07F017171E270277101338342F0D17A -:10CFC000B4F80330FD2B05D80022E11801334A7173 -:10CFD0002271E3700123002048A9F722CDE93E30F9 -:10CFE00068460BF057FD284694E80E00FBF734FE28 -:10CFF0000DF5077DBDEC028BBDE8F08F1D2F40F0D5 -:10D00000A58011214FF4CF6213FB01231A464393ED -:10D010002B689E50134404F10E021F34591E5E60AB -:10D020009E60DE601E7412F8010FA24201F8010F2B -:10D03000F9D14FF0000B2846A846DFF8509183F84D -:10D0400010B045ACFBF792FD429987B22846FBF73A -:10D0500099FD439B074458F8106B05F10C004449B7 -:10D06000BFB21E4408EE100AFDF72AF90E2141480E -:10D070000DF030FC07F1110A7B1CBF1B9A4534BF31 -:10D080004FF0010A4FF0110AD9F80030B2442B6278 -:10D0900007E0D9F800302A6A9B1AF92B1AD85645AE -:10D0A00021D0F11916F8013B40462370419106F05A -:10D0B00013FA237841999842EBD001232246404647 -:10D0C0000BF1010B06F0FEF8D9F800302A6A9B1A22 -:10D0D000F92BE4D9012128480DF0FCFBD9F80030E8 -:10D0E00056452B62DDD1012123480DF0F3FB234887 -:10D0F0000BF086F8092122480DF0ECFB01212148B4 -:10D100000DF0E8FB00230A2259461C480BF094F866 -:10D1100001211C480DF0DEFB05211B480DF0DAFB58 -:10D1200016480BF06DF818EE100AFDF703F96B685E -:10D13000D3F80831DB6D5B0703D52B6B43F0040399 -:10D140002B6395F82C6095F82D2008E701231D220C -:10D150000A2128460096FBF7DDFDBAE60C21284699 -:10D160000DF5077DBDEC028BBDE8F04FFAF742BA32 -:10D17000043E00201C3E0020B8300020A84B0020B8 -:10D180002C3E0020EC23002048240020E8BA002098 -:10D190004368D3F80831DB6D5B0713D52DE9F04FF9 -:10D1A000D0F83CE0884690F82D20ADF50F7D9EF834 -:10D1B0000930044690F82C10934204D00DF50F7DF1 -:10D1C000BDE8F08F70479EF800308B42F6D1BEF874 -:10D1D00003300A2BF2D990F844B01BF0020FCBF3C6 -:10D1E0004007EBD19EF80F500C2B9EF80E0005F077 -:10D1F0007F0545EAC01568B2EDB2429009D99EF8A4 -:10D2000010009EF81170C00107F07F0700F47E50F7 -:10D210000743B7F1000A94F8E06418BF4FF0010A21 -:10D22000D6B1A446002005E001305FFA80F9B1458F -:10D2300080F07D819CF848900CF11C0CA945F3D13D -:10D24000C0EBC00004EB8000B0F85E60BE428CBF53 -:10D250004FF0000A0AF0010A9EF80B000F2B9EF80F -:10D260000C904FEAC01009F07F0900F47E5049EAA3 -:10D27000000C5FFA8CF0CDF804C1469041F216879D -:10D280009EF81490102B09F07F094FEA490909F123 -:10D2900013095FFA89F905D09EF8150009EB4000E3 -:10D2A00000F0FF09BAF1000F11D02046FEF79CF8FC -:10D2B0000546002800F09E810023102120461A46D2 -:10D2C0000093FBF727FD0DF50F7DBDE8F08F20469D -:10D2D0004393CDE94412FEF787F8459ADDE94331DF -:10D2E000002800F02681BE42E6D9B8F1000FE3D055 -:10D2F0004B4540F053819DF8048108F101034393AD -:10D30000A249A348FBF78AFEA148A249FBF786FE83 -:10D3100041469F480AF068FF9D489E49FBF77EFE04 -:10D3200043999B480AF060FF99480AF069FF20463C -:10D33000FEF75AF8B8F1040F01D90028BCD1C14654 -:10D34000429B013B282B49D8DFE813F0AC0848008A -:10D3500048008D08EB064800C90548004800480011 -:10D36000480048004800560548004800480048006A -:10D37000480048004800350548004800480048007B -:10D38000380867071B082B074800FD074907AF0748 -:10D39000E6054800A1065A06310605062900C7EB36 -:10D3A000C703216820464FF0FF3203F61873194473 -:10D3B000FEF7C2FE2046FEF717F800287FF47CAF88 -:10D3C000F9B22046FEF7DCF86368D3F80831DB6D6C -:10D3D000580703D5236B43F0040323632046FEF76D -:10D3E00003F800287FF468AF9DF8043194F82C10FE -:10D3F00094F82D200DF59A79019300234846009367 -:10D40000C9F8003089F804301223FBF721FF01220C -:10D41000484605F07F01FBF7EDFD3946FCF786F83D -:10D4200031464846FCF782F8429B013B282B6CD8DA -:10D43000DFE813F0D3026B006B00C00266036B00E1 -:10D4400077036B006B006B006B006B006B00E302FB -:10D450006B006B006B006B006B006B006B00AD0230 -:10D460006B006B006B006B008603500441043204B8 -:10D470006B002304B10444022C026B002900BD019F -:10D4800063010E01020148AD3A462521266828466F -:10D49000FBF7E6FDB9F80330B5F90020FD2B41F2AA -:10D4A000AA8369884846FCF741F8A9884846FCF7F2 -:10D4B0003DF8E9884846FCF753F829894846FCF7C7 -:10D4C0004FF8B9F80330AA7AFD2B41F2478306EBF7 -:10D4D000870548464FEA870805F5805595F85015A9 -:10D4E000FCF724F8B9F80330FD2B41F2048341F234 -:10D4F00052534644F25CB9F80330FD2B41F2E3820B -:10D5000095F853154846FCF711F80123002050A95F -:10D51000F722CDE93E3068460BF0BCFA204699E888 -:10D520000E00FBF799FB0DF50F7DBDE8F08F00268F -:10D5300092E6B8F1000F7CD099452FD1002E3FF430 -:10D540004DAF9DF804811BF0040F08F101034393D4 -:10D550003FF4D6AE1049C1460D48D046FBF75EFDFC -:10D560000B480C49FBF75AFD514609480AF03CFEAE -:10D5700008490748FBF752FD052105480AF034FE2B -:10D5800003480AF03DFE05234393D9E6D43D00202D -:10D59000A84B0020EC230020F03D0020C2490025CC -:10D5A000C248FBF73BFDC249C048FBF737FDE36BC0 -:10D5B000BE48B3F803100AF017FEBD49BB48FBF79D -:10D5C0002DFDBC49B948FBF729FDB949B748FBF720 -:10D5D00025FD494600230A22B4480AF02DFEB3482F -:10D5E0000AF00EFE01234A460A2120460095FBF769 -:10D5F00091FBE3E5B049AD48FBF710FDAC49AB4802 -:10D60000FBF70CFD3946A9480AF0EEFDA849A748EA -:10D61000FBF704FD3146A5480AF0E6FDA3480AF0F1 -:10D62000EFFD01233A46072120460095FBF772FBE8 -:10D63000C4E59DF80431DDE6C7EBC70320683A4630 -:10D64000494603F6187318442923FCF7D5FA5CE71A -:10D650003A4648A828212568FBF702FDBDF82011AD -:10D66000484605EB4705FBF761FFBDF82211484628 -:10D67000FBF75CFFBDF824114846FBF757FFBDF8E8 -:10D6800026114846FBF76CFFBDF828114846FBF70A -:10D6900067FF9DF82A114846012201F07F01FBF740 -:10D6A000A9FC9DF82B11012201F07F01FBF7A2FCE0 -:10D6B0009DF82C11012201F07F01FBF79BFCBDF8C6 -:10D6C0002E11FBF733FFBDF830114846012201F05F -:10D6D0007F01FBF78FFC95F8F81EFBF727FF484604 -:10D6E00001220021FBF786FC01221146FBF782FC98 -:10D6F00095F8F91EFBF71AFF07E70022272148A833 -:10D700002668FBF7ADFCBDF82011484606F62875E3 -:10D71000FBF70CFFBDF82211484606F62C76FBF706 -:10D7200005FFBDF824114846FBF700FFBDF82611A0 -:10D730004846FBF715FFBDF828114846FBF710FFD8 -:10D740009DF82A114846012201F07F01FBF752FCA7 -:10D750009DF82B11012201F07F01FBF74BFC9DF896 -:10D760002C11012201F07F01FBF744FCBDF82E11C2 -:10D77000FBF7DCFEBDF830110122484601F07F01C5 -:10D78000FBF738FC16F8041CFBF7D0FE0122002141 -:10D790004846FBF72FFC01220421FBF72BFC15F870 -:10D7A000011F4846FBF7C2FEB542F8D1ADE63A4646 -:10D7B000262148A82568FBF753FCBDF820114846F0 -:10D7C000FBF7B4FEBDF822114846FBF7AFFEBDF8EB -:10D7D00024114846FBF7AAFEBDF826114846FBF780 -:10D7E000BFFEBDF828114846FBF7BAFEB9F8033072 -:10D7F0009DF82A21FD2B41F2C98007EBC70348465B -:10D800004FEAC7082B4493F81F1FFBF78FFEB9F8A8 -:10D810000330FD2B41F20880B84405F62376002042 -:10D8200008F5726146442944FD2B40F21687013108 -:10D830008E42F9D108F6227205F62771FD2B4FF0C2 -:10D8400000062A44414412F8010F08D991423FF4DE -:10D850005CAEB9F8033012F8010FFD2BF6D809EBD6 -:10D860000305013389F8046089F80330C30900F027 -:10D870007F006B71B9F80330FD2B09EB030503F151 -:10D880000103E3D889F803306871DFE707EB47014C -:10D8900041F24A5320683A460B4449461844232330 -:10D8A000FCF716F831E600BFA43D0020A84B00208D -:10D8B000EC230020C83D0020803D002048AD3A46C2 -:10D8C000222126682846FBF7CBFBB9F80330B5F9CF -:10D8D0000020FD2B40F28F8769884846FBF726FE23 -:10D8E000A9884846FBF722FEE9884846FBF738FE40 -:10D8F00029894846FBF734FEB9F80330AA7AFD2B94 -:10D9000040F2DD87E9894846FBF710FEB9F803309D -:10D91000FD2B0BD809EB03012A8A013302F07F02A9 -:10D9200089F8033000234A7189F8043006EB870533 -:10D9300048464FEA870805F5805595F83A15FBF7F4 -:10D94000F5FDB9F80330FD2B41F27180B9F80330D1 -:10D95000464441F23D52FD2BB25C3FF6D6AD09EB99 -:10D960000300013302F07F01D20989F8033000235C -:10D97000427189F80430B9F80330FD2B3FF6C5AD8C -:10D9800009EB03020133517189F80330BDE5469874 -:10D9900007EB47013A4600EB401300EB8303206896 -:10D9A000194441F2D3530B44494618441623FBF75C -:10D9B0008FFFAAE507EB4703469885213A4607EB18 -:10D9C000830311FB003141F2675320680B44494641 -:10D9D00018440423FCF734F897E5C7EBC7014698D1 -:10D9E00085233A4613FB00132068494603F5AB53E1 -:10D9F00018440123FCF700F987E548AD3A460E21AB -:10DA000026682846FBF72CFB29884846FBF78EFD45 -:10DA100069884846FBF78AFDB9F80330B5F9042058 -:10DA2000FD2B40F29A87E9884846FBF799FD298942 -:10DA30004846FBF795FDB9F80330AA7AFD2B40F272 -:10DA40006587E9894846FBF771FDB9F80330FD2B7E -:10DA50000BD809EB03012A8A013302F07F0289F80F -:10DA6000033000234A7189F80430469A07EB870592 -:10DA700048464FEA870802EB421302EB83031D443A -:10DA800041F2B5533544E95CFBF750FDB9F803307A -:10DA9000FD2B40F2E1864699B8448522FD2B4FF0DC -:10DAA000000512FB018241F2B65111444FF003020E -:10DAB000314402F1FF3211F8010F0AD912F0FF02CE -:10DAC0003FF423ADB9F80330013A11F8010FFD2BF3 -:10DAD000F4D809EB0306013389F8045089F80330C0 -:10DAE000C30900F07F007371B9F80330FD2B09EB17 -:10DAF000030603F10103E1D889F803307071DDE713 -:10DB00004FEA470B0BEB070141F2BD4320683A4651 -:10DB100007EB81010B44494618440523FBF790FFAE -:10DB2000F3E44FEA470B0BEB070141F2D7432068C0 -:10DB30003A460B44494618440723FBF7C9FEE4E480 -:10DB40004FEA470B48AD3A461B2126682846FBF7AB -:10DB500087FA29884846FBF7E9FC69884846FBF7BD -:10DB6000E5FCA9884846FBF7E1FCE9884846FBF755 -:10DB7000F7FC29894846FBF7F3FCB9F80330AA7A89 -:10DB8000FD2B40F21186E9894846FBF7CFFCB9F836 -:10DB90000330FD2B0BD809EB03012A8A013302F075 -:10DBA0007F0289F8033000234A7189F804300BEBB7 -:10DBB000070341F2EC42484606EB4303995CFBF74E -:10DBC000B5FCB9F80330FD2B40F2D6850BEB07000E -:10DBD00041F2ED41002206EB400517464000294482 -:10DBE000FD2B30D9002A00F0358541F2EE4241F29A -:10DBF000F141FD2B4FF00005024431443244014411 -:10DC000012F8010F08D98A423FF47FACB9F803300B -:10DC100012F8010FFD2BF6D809EB0306013389F842 -:10DC2000045089F80330C30900F07F007371B9F81C -:10DC30000330FD2B09EB030603F10103E3D889F858 -:10DC400003307071DFE709EB030E01338D5C89F857 -:10DC5000047089F8033005F07F0CB9F80330ED0942 -:10DC6000FD2B8EF80550BDD85D1C4B4489F8035040 -:10DC700083F805C0B9F80330B4E74FEA8708B84421 -:10DC800041F23D2320683A4603EB480349461844D5 -:10DC90002023FBF753FD38E44FEAC708B84441F2AC -:10DCA000AD1320683A4603EB4803494618441E2347 -:10DCB000FBF77AFC29E44FEA870808EB07032068A2 -:10DCC0003A4649465B0003F62D7318441D23FBF7C3 -:10DCD00035FD1AE44FEA470B3A4648A81C2125684F -:10DCE000FBF7BEF9BDF8201148465F44FBF71EFC68 -:10DCF000BDF82211484605EB4705FBF717FCBDF8B8 -:10DD000024114846FBF712FCBDF826114846FBF7E4 -:10DD100027FCBDF828114846FBF722FC9DF82A1184 -:10DD20004846012201F07F01FBF764F99DF82B11B1 -:10DD3000012201F07F01FBF75DF99DF82C11012212 -:10DD400001F07F01FBF756F9BDF82E11FBF7EEFB52 -:10DD5000BDF830114846012201F07F01FBF74AF976 -:10DD600041F2E643E95CFBF7E1FB48460122002172 -:10DD7000FBF740F901220221FBF73CF941F2E843AD -:10DD8000E95AFBF7D3FB41F2EA434846E95AFBF76D -:10DD9000CDFBFFF7BABB4FEAC708B84441F2F243E4 -:10DDA00020683A4603EB4803494618442123FBF711 -:10DDB000FBFBFFF7AABB439B9845BFF40FAB07EBF8 -:10DDC000470341F2D359DDF80CA1994408EB4813FD -:10DDD00008EB830399440FFA88F208F101082168DF -:10DDE00020461FFA88F8494409F18509FEF736F8FC -:10DDF000D045F0D1FFF7F2BA439B9845BFF4EEAAA5 -:10DE000008EB4813479507EB870208EB830313449D -:10DE1000CDE944671E461746E36B2068B3F803203C -:10DE20000E2A00F2BD83002208EB481341F2B551DF -:10DE300008EB83033B4403445A544FEA4812E16B16 -:10DE4000B1F803500F2D00F29B83032501234244B8 -:10DE500041F2B65C08EB82023A4402449444002248 -:10DE600051001131C9B2002A00F072830132D1B2DF -:10DE70009942F5D34FEA430A41F2B7594FF0000BEC -:10DE80000AF1110AB1445FFA8AFA8144BBF1020F28 -:10DE900008D8E06B5146FBF7C9F9C92828BF002014 -:10DEA00009F80B000BF1010B0AF1020A5FFA8BF380 -:10DEB0005FFA8AFAAB42E9D32046FDF795FA0028CB -:10DEC00000F0998308F10108439A85361FFA88F318 -:10DED0009342A1D3479DDDE94467FFF77FBA07EB83 -:10DEE000470241F2D7432168204613444FF0FF32E6 -:10DEF0004FEA470B1944FDF7B1FF2046FDF774FACE -:10DF000000287FF4D9A9F9B2042901F288802046BB -:10DF1000FDF7B2F9FFF758BA07EB470241F24A534F -:10DF20002168204613444FF0FF321944FDF796FF55 -:10DF30002046FDF759FA00287FF4BEA9236BF9B2F9 -:10DF400043F48073012923633FF63EAA2046FCF781 -:10DF500073FCFFF739BAE36B2168B3F803200E2A8C -:10DF600000F2DB86002301EB470888F8F83EE26BFD -:10DF7000B2F803100F2900F246870122112303EBA8 -:10DF80004202D1B20022002A00F0A88202330132FC -:10DF9000DBB28B42F7D12046FDF726FA00287FF44A -:10DFA0008BA9F9B22046FDF733FAFFF70DBAE36B00 -:10DFB0002268B3F803100E2900F2A186002382F82C -:10DFC000283FE16BB1F803000F2800F240860421DE -:10DFD000112302F6297C0022032A40F21D8301321C -:10DFE0000233D0B2DBB28142F6D82046FDF7FCF90D -:10DFF00000287FF461A92046FDF742FCFFF7E4B951 -:10E00000E36B2268B3F803100E2900F29486002314 -:10E0100007EBC7014FEAC708114481F81F3FE36BC4 -:10E02000B3F803000F2800F2C28605200321B8448C -:10E03000112302EB080A00220AF5726B022A40F251 -:10E040002783013202335FFA82FCDBB26145F5D8E7 -:10E050004B000AF6237900221133DBB2042A40F286 -:10E06000AC8201320233D1B2DBB28142F6D3204618 -:10E07000FDF7BAF900287FF41FA9236BF9B22046F7 -:10E0800043F080032363FDF73DFBFFF79DB9E36B8E -:10E090002168B3F803200E2A00F27B86002301EBEF -:10E0A000870101F5805C8CF85035E26BB2F8030013 -:10E0B0000F2800F25C864FF0010B022341F2515A07 -:10E0C00011228A440021012940F23F8301310232AA -:10E0D000C8B2D2B29842F6D3013B00225B00DBB259 -:10E0E00003EB4B0113331331DBB2C9B2002A00F04A -:10E0F000128202330132DBB29942F7D12046FDF79A -:10E1000073F900287FF4D8A8236BF9B243F4806335 -:10E11000032923633FF658A92046FCF777FEFFF753 -:10E1200053B907EB470241F2BD432168204607EB94 -:10E1300082024FEA470B13444FF0FF321944FDF7B8 -:10E140003FFF2046FDF750F900287FF4B5A8F9B24B -:10E15000012940F28B876368D3F80831DA6D5107E3 -:10E16000C2F380033FF536A9CDE900390DF59A7960 -:10E1700094F82D2094F82C104846C9F8003089F8FE -:10E1800004301223FBF764F8484601220521FAF710 -:10E1900031FF3946FBF7CAF931464846FBF7C6F965 -:10E1A000B0E407EBC70241F2AD132168204603EB50 -:10E1B00042034FF0FF324FEAC7081944FDF794FDC0 -:10E1C0002046FDF711F900287FF476A8F9B2072957 -:10E1D00000F262862046FCF7AFF9FFF7F5B807EBCF -:10E1E000C70241F2F2432168204603EB42034FF09D -:10E1F000FF324FEAC7081944FDF776FD2046FDF7C8 -:10E20000F3F800287FF458A8F9B2032900F2B98680 -:10E210002046FCF771FFFFF7D7B8E36B2268B3F82D -:10E2200003100E2900F20386002307EB470141F299 -:10E23000E6404FEA470B02EB41010B54E36BB3F8A6 -:10E24000031043930F2900F2C38511214FF0020AF6 -:10E250000BEB07034494CDF814B14FF0000802EB28 -:10E26000430241F2E843CB460C46A9469D18B8F15B -:10E27000010F40F2608208F1010802345FFA88F170 -:10E28000E4B25145F3D34D46D946DDE9444B20462F -:10E29000FDF7AAF800287FF40FA8002F40F0D585DD -:10E2A0002046FCF781FBFFF78FB8E36B2168B3F8DA -:10E2B00003200E2A00F21585002301EB870B0BF5D6 -:10E2C000805A8AF83A35E26BB2F803100F2900F24F -:10E2D000F4844FF002080123002041001131C9B23B -:10E2E000002800F0D3840130C2B29342F5D84FEA3F -:10E2F000430941F23C5A09F11109DA444FF0000B8D -:10E300005FFA89F9BBF1010F40F2F7810BF1010BC4 -:10E3100009F102095FFA8BF35FFA89F94345F1D3FA -:10E320002046FDF761F800287EF4C6AF236BF9B2F2 -:10E3300043F40073032923633FF646A82046FCF705 -:10E34000AFFCFFF741B807EB870241F23D2321689C -:10E35000204603EB42034FF0FF324FEA870819448F -:10E36000FDF714FC2046FDF73FF800287EF4A4AF2B -:10E370003F2F00F2DF8539462046FCF71DF8FFF7F6 -:10E3800023B807EB870321684FF0FF3220465B007C -:10E390004FEA870803F62D731944FDF7F7FB204673 -:10E3A000FDF722F800287EF487AF3F2F00F2108699 -:10E3B00039462046FCF7E0FDFFF706B8E36B22681C -:10E3C000B3F803100E2900F2C484002307EB4701C1 -:10E3D00041F2EC404FEA470B02EB41010B54E16B79 -:10E3E000B1F803000F2800F21F844FF0030A4FF02A -:10E3F00002080BEB070341F2ED4C4FF0110E449570 -:10E4000002EB43039C4443930023012B40F27F81A2 -:10E4100001330EF1020EDAB25FFA8EFE4245F4D3FA -:10E420004FEA4803439A41F2EF48449D1133424476 -:10E43000DBB290460022022A40F2438101320233CD -:10E44000D1B2DBB25145F6D32046FCF7CDFF002810 -:10E450007EF432AFFBB2002B40F045852046FCF73E -:10E4600061FBFEF7B1BF07EB470341F26759DDF8E7 -:10E470000CA107EB8303994408EB481308EB8303D3 -:10E4800099440FFA88F208F10108216820461FFA22 -:10E4900088F8494409F18509FDF792FDD045F0D18E -:10E4A000FEF79CBFC7EBC709DDF80CA108EB4813CA -:10E4B00009F5AB5908EB830399440FFA88F208F188 -:10E4C0000108216820461FFA88F8494409F18509A6 -:10E4D000FDF732FED045F0D3FEF780BFE06B03F1CD -:10E4E000010E9446B0F80390CE4511DA00EB030913 -:10E4F000704499F805E040794FEACE1E00F07F00A5 -:10E500000EF47E5E40EA0E00C828D8BF5FFA80FC99 -:10E5100088F8F9CE3AE5E06B03F101089646B0F8C9 -:10E520000390C84511DA00EB0309404499F80580CF -:10E5300040794FEAC81800F07F0008F47E5840EA9E -:10E540000800C828D8BF5FFA80FE8CF853E5D0E5F4 -:10E55000D4F83C9001F1010A9646B9F803B0DA45C7 -:10E560000BDACA4489449AF805E099F805100EF0D0 -:10E570007F0E4EEAC11E5FFA8EFE8CF800E075E455 -:10E580000B7D102D03F07F0300F0AA854D7D012B3C -:10E5900005F07F0538BF0123032D38BF032556E45E -:10E5A000997CDA7CCB0102F07F0203F47E531A439C -:10E5B000802A3FF738ACD2B236E4E16B03F1010EAA -:10E5C0004FF0000CB1F80380C64511DA01EB0308E7 -:10E5D000714498F805E049794FEACE1E01F07F01B9 -:10E5E0000EF47E5E41EA0E01C829D8BF5FFA81FCB5 -:10E5F00009F802C035E55FFA88F12046FDF7F6F923 -:10E600006368D3F80831DB6D5D077FF55BAC236B86 -:10E6100043F00403236355E4E06B03F101084FF07A -:10E62000000EB0F80390C84511DA00EB030940442E -:10E6300099F8058040794FEAC81800F07F0008F487 -:10E640007E5840EA0800C828D8BF5FFA80FE0CF860 -:10E6500002E0C4E40122FFF7C3BA5F1C0A784B440E -:10E6600089F8040089F80370D70902F07F025F710E -:10E67000B9F80330FD2B09EB030703F1010C3FF65A -:10E68000D6A889F803C07A71B9F80330FFF7CFB87C -:10E69000D4F83CE003F101084FF0000CBEF8039001 -:10E6A000C8450BDAF0449E4498F805C09EF805E092 -:10E6B0000CF07F0C4CEACE1C5FFA8CFC0BF802C00D -:10E6C000BFE4E16B03F1010E0020B1F803C0E645A1 -:10E6D00010DA01EB030C71449CF805C049794FEA4C -:10E6E000CC1C01F07F010CF47E5C41EA0C01C829CE -:10E6F000D8BFC8B208F80200A0E6E06B4946FAF7B6 -:10E7000095FDC92828BF00200AF80B00FEE5E16B43 -:10E710000EF101000022B1F80350A84208DA0844C3 -:10E7200071444279497902F07F0242EAC112D2B2C1 -:10E730000CF803206CE621464398FAF777FDC928C8 -:10E7400028BF002025F8180095E5D4F83CE002F138 -:10E7500001080020BEF80390C8450ADAF044964448 -:10E7600098F805009EF805E000F07F0040EACE1022 -:10E77000C0B20AF80100A9E45A1C4B4489F80320EE -:10E78000002289F8042002225A71B9F80330FD2BC7 -:10E790003FF61CAA5A1C4B4489F8032003225A71E5 -:10E7A000B9F80330FFF712BA02F07F02591C4B444C -:10E7B00089F803105A710023EA7A89F80430B9F80D -:10E7C000033002F07F02FD2B3FF6DDA9591C4B44BC -:10E7D00089F803105A71B9F803302A7BFD2B02F037 -:10E7E0007F023FF6D0A909EB030101334A7189F892 -:10E7F0000330FFF7C8B9591C4B4489F803100021B6 -:10E8000089F80410C2F3C61102F07F025971B9F8F9 -:10E810000330FD2B3FF660A809EB030101334A7179 -:10E8200089F80330FFF758B85A1C4B4489F8032085 -:10E83000002289F8042003225A71B9F80330FD2B15 -:10E840003EF6EAAF5A1C4B4489F8032005225A7160 -:10E85000B9F80330FEF7E0BF5A1C4B4489F8032097 -:10E86000002289F8042001225A71B9F80330FD2BE7 -:10E870003FF611A99A1803214B4489F8032041F26D -:10E88000B6525971B9F80330AA5CFD2B4FEAD21188 -:10E890003FF601A9581C4B4402F07F0289F803009F -:10E8A0005971B9F80330FD2B3FF6F5A8591C4B44BC -:10E8B00089F803105A71B9F80330FFF7ECB802F089 -:10E8C0007F02591C4B4489F803105A710023EA7ADD -:10E8D00089F80430B9F8033002F07F02FD2B3FF6CF -:10E8E00011A8591C4B4489F803105A71B9F8033028 -:10E8F0002A7BFD2B02F07F023FF604A809EB0301FF -:10E9000001334A7189F80330FEF7FCBF02F07F0241 -:10E91000591C4B4489F803105A710023EA7A89F88C -:10E920000430B9F8033002F07F02FD2B3FF689A8CE -:10E93000591C4B4489F803105A71B9F803302A7BEB -:10E94000FD2B02F07F023FF67CA809EB03010133A7 -:10E950004A7189F80330FFF774B8591C4B4489F8A1 -:10E960000310002189F80410C2F3C61102F07F02DF -:10E970005971B9F80330FD2B3FF655A809EB030197 -:10E9800001334A7189F80330FFF74DB802F07F0276 -:10E99000591C4B4489F803105A7100239DF82B2110 -:10E9A00089F80430B9F8033002F07F02FD2B3EF6FF -:10E9B00024AF591C4B4489F803105A71B9F803303D -:10E9C0009DF82C21FD2B02F07F023EF616AF591C5C -:10E9D0004B4489F803105A71B9F80330BDF82E2161 -:10E9E000FD2BC2F3C6113EF608AF581C4B4402F093 -:10E9F0007F0289F803005971B9F80330FD2B3EF608 -:10EA0000FCAE581C4B44BDF8301189F803005A7114 -:10EA100001F07F01B9F80330FD2B3EF6EEAE09EBB5 -:10EA200003020133517189F80330FEF7E6BE5A1C28 -:10EA30004B4489F80320002289F8042001225A71EE -:10EA4000B9F80330FD2B3EF681AF591C4B4495F8C5 -:10EA50003B2589F803100221D0095971B9F8033018 -:10EA6000FD2B3EF673AF02F07F015A1C4B4489F830 -:10EA700003205871B9F80330FD2B3EF667AF581CE0 -:10EA80004B4407F24C5289F80300597106EB82029D -:10EA9000B9F80330127BFD2B3EF658AF591C4B449E -:10EAA00089F80310D10902F07F025971B9F80330D7 -:10EAB000FD2B3EF62AAD09EB030101334A7189F8BB -:10EAC0000330FEF743BF591C4B4489F80310002163 -:10EAD00089F80410D10902F07F025971B9F80330A6 -:10EAE000FD2B3EF60DAD09EB030101334A7189F8A8 -:10EAF0000330FEF705BD5A1C4B4489F80320002261 -:10EB000089F8042002225A71B9F80330FD2B3EF631 -:10EB1000EEAC591C4B4407F2525289F80310012104 -:10EB200006EB82025971B9F80330527AFD2B3EF69A -:10EB3000DEAC59184B4489F80310D10902F07F026A -:10EB40005971B9F80330FD2B3EF6DAAC09EB03013D -:10EB500001334A7189F80330FEF7C9BC02F07F0225 -:10EB6000591C4B4489F803105A710023EA7A89F83A -:10EB70000430B9F8033002F07F02FD2B3EF6A7AC5B -:10EB8000591C4B4489F803105A71B9F803302A7B99 -:10EB9000FD2B02F07F023EF69AAC591C4B4489F8DB -:10EBA00003105A71B9F80330EA89FD2BC2F3C6107D -:10EBB0003EF68DAC02F07F015A1C4B4489F80320CD -:10EBC0005871B9F80330FD2B3EF681AC581C4B440C -:10EBD0002A8A89F80300597102F07F02B9F80330DC -:10EBE000FD2B3EF674AC09EB030101334A7189F841 -:10EBF0000330FEF76CBC591C4B4489F8031000210C -:10EC000089F80410C2F3C61102F07F025971B9F8F5 -:10EC10000330FD2B3EF645AC09EB030101334A718D -:10EC200089F80330FEF73DBC0B7D102803F07F030D -:10EC300000F05D82022B497D38BF0223984601F027 -:10EC40007F03032B38BF03239A46FFF7D2BB0B7D0C -:10EC5000102803F07F0303D0497D11F07C0F08D109 -:10EC6000002B3FF4B4A95B0004211133DBB2FFF7A2 -:10EC7000B0B901F07F01002B00F02C825B00113352 -:10EC8000DBB200293FF4B1A9FFF7A3B9D4F83CE007 -:10EC900001F1010C0246BEF80390CC4509DAF444B8 -:10ECA00071449CF80520497902F07F0242EAC112C2 -:10ECB000D2B28AF83B25FFF716BB137D102903F06B -:10ECC0007F0300F0EC8192F81580012B08F07F089B -:10ECD00038BF0123B8F1020F38BF4FF00208FFF729 -:10ECE000FBBA9A7CDB7CD20103F07F0302F47E52F4 -:10ECF0001343802B3FF7E0AADBB2FFF7DEBA997C23 -:10ED0000DB7CC90103F07F0301F47E510B43802BB0 -:10ED10003FF754A9DBB2FFF752B99A7CDB7CD201F2 -:10ED200003F07F0302F47E521343802B3FF71AA9AE -:10ED3000DBB2FFF718B9997CDB7CC90103F07F03D4 -:10ED400001F47E510B43802B3FF761A9DBB2FFF743 -:10ED50005FB9997CDB7CC90103F07F0301F47E512C -:10ED60000B43802B3FF731ABDBB2FFF72FBB137D9B -:10ED7000102803F07F0300F0A681527D022B02F0E1 -:10ED80007F0238BF0223012A38BF01229346FFF7D2 -:10ED900095B99A7CDB7CD20103F07F0302F47E52AA -:10EDA0001343802B3FF77AA9DBB2FFF778B9197DBF -:10EDB000102801F07F0100F06881587D032900F0E0 -:10EDC0007F0038BF0321052838BF0520FFF72FB982 -:10EDD000184610291B7D03F07F0300F04C8190F84A -:10EDE00015A01AF07E0F00F046810AF07F0A002B72 -:10EDF00000F0628159001131C9B2BAF1000F3FF43D -:10EE000046AAFFF725BA137D102903F07F0300F00F -:10EE10005181527D02F07F02012A38BF0122002B6E -:10EE200000F03A815B001133DBB2FFF7A8B8997CA0 -:10EE3000DB7CC90103F07F0301F47E510B43802B7F -:10EE40003FF7F2A9DBB2FFF7F0B96368D3F80831F6 -:10EE5000DA6D5107C2F380033EF5BCAACDE9003953 -:10EE60000DF59A7994F82D2094F82C104846C9F89D -:10EE7000003089F804301223FAF7EAF948460122F3 -:10EE80001C21FAF7B7F83946FAF750FB31464846E5 -:10EE9000FAF74CFBFEF720BF6368D3F80831DA6D50 -:10EEA0005007C2F380033EF595AACDE900390DF570 -:10EEB0009A7994F82D2094F82C104846C9F800301F -:10EEC00089F804301223FAF7C3F9484601221E21BB -:10EED000FAF790F83946FAF729FB31464846FAF72F -:10EEE00025FBFEF7DBBE6368D3F80831DA6D510706 -:10EEF000C2F380033EF56EAACDE900390DF59A798B -:10EF000094F82D2094F82C104846C9F8003089F860 -:10EF100004301223FAF79CF9484601221B21FAF724 -:10EF200069F83946FAF702FB31464846FAF7FEFA25 -:10EF3000FEF708BE6368D3F80831DA6DC2F38003C8 -:10EF400052073EF547AACDE900390DF59A7994F8B4 -:10EF50002D2094F82C104846C9F8003089F8043068 -:10EF60001223FAF775F9484601222021FAF742F8F0 -:10EF70003946FAF7DBFA31464846FAF7D7FAFEF790 -:10EF80007EBE6368D3F80831DA6DC2F3800352079E -:10EF90003EF520AACDE900390DF59A7994F82D2097 -:10EFA00094F82C104846C9F8003089F80430122330 -:10EFB000FAF74EF9484601222121FAF71BF83946A3 -:10EFC000FAF7B4FA31464846FAF7B0FAFEF7E5BE6A -:10EFD0006368D3F80831DA6DC2F3800352073EF557 -:10EFE000F9A9CDE900390DF59A7994F82D2094F816 -:10EFF0002C104846C9F8003089F804301223FAF77B -:10F0000027F9484601221D21F9F7F4FF3946FAF79E -:10F010008DFA31464846FAF789FAFEF74EBE636824 -:10F02000D3F80831DA6D5007C2F380033EF5D2A958 -:10F03000CDE900390DF59A7994F82D2094F82C102B -:10F040004846C9F8003089F804301223FAF700F96D -:10F05000484601220721F9F7CDFF3946FAF766FA4B -:10F0600031464846FAF762FAFEF75DBD2046FBF7E7 -:10F0700023FBFEF7A9B9002B3FF4E7A859004FF096 -:10F08000020A1131C9B2FFF7E3B803294FF00500B6 -:10F0900038BF0321FEF7CBBF1123FEF770BF012B52 -:10F0A0004FF0020838BF0123FFF716B94FF01309DC -:10F0B000FEF7F8B80122B2E61121BAF1000F3FF4D1 -:10F0C000E6A8FFF7C5B8022B4FF0010B38BF0223AB -:10F0D000FEF7F4BF112300293EF487AFFEF779BF96 -:10F0E000012B4FF0030538BF0123FEF7B0BE022B02 -:10F0F0004FF0030A38BF02239846FFF77AB900BFE2 -:10F1000030B590F8443087B013F0010300F08880E8 -:10F1100043680446D3F80831DB6D5D07C3F3800113 -:10F120003ED48F4802AD0BF0D5FB8E4809F068F84D -:10F130002E218D480BF0CEFB8A4809F061F82E2174 -:10F1400089480BF0C7FB874809F05AF80121874826 -:10F150000BF0C0FB172186480BF0BCFB814809F07F -:10F160004FF8012181480BF0B5FBE36B1B78D80702 -:10F170005DD4990700F1C7805A0700F1BF801807D6 -:10F1800000F1CB80D90600F1DC809A0600F1CA803C -:10F190005B0628464CBF7749714909F06FF94AE090 -:10F1A00000216F480BF096FB6E4809F029F82E21DC -:10F1B000714802AD0BF08EFB6A4809F021F82E2150 -:10F1C0006D480BF087FB674809F01AF80121674882 -:10F1D0000BF080FB1B2169480BF07CFB614809F0B8 -:10F1E0000FF8012161480BF075FBE36B1B78D80722 -:10F1F00058D4990700F18C805A0700F19D801807B8 -:10F2000000F1A480D90600F192809A0600F1A38053 -:10F210005B0628464CBF5749514909F02FF945E094 -:10F22000012219460093F9F775FD07B030BD544926 -:10F23000284609F023F929464A4808F0AFFF494813 -:10F2400008F0DEFF284609F0DDF82E2146480BF0D5 -:10F2500041FB444808F0D4FF2E2143480BF03AFB11 -:10F26000404808F0CDFF00213D480BF033FB3D48FE -:10F2700008F0C6FFE16B62680023097884F82C105F -:10F28000D2F80811CA6D42F00402CA651946206B13 -:10F290003C4A40F01200009320632046F9F73AFD03 -:10F2A00007B030BD3649284609F0E8F829462D4810 -:10F2B00008F074FF2B4808F0A3FF284609F0A2F8D5 -:10F2C0002E212D480BF006FB264808F099FF2E2131 -:10F2D00029480BF0FFFA234808F092FF002120484C -:10F2E0000BF0F8FA1F4808F08BFF012302220021DF -:10F2F00020460093F9F70EFD07B030BD224928469D -:10F3000009F0BCF897E72149284609F0B7F892E7D9 -:10F310001E49284609F0B2F8C8E71D49284609F0F9 -:10F32000ADF888E71B49284609F0A8F883E71A4991 -:10F33000284609F0A3F8B9E71349284609F09EF8D2 -:10F34000B4E71549284609F099F874E710492846AA -:10F3500009F094F8AAE70F49284609F08FF8A5E7C5 -:10F36000583C0020A84B002058270020EC23002008 -:10F37000E03B0020741C0020F43F0020C43B002030 -:10F38000441C00207D7D7D00501C0020481C002076 -:10F39000581C0020681C0020601C00204368D3F823 -:10F3A0000821D26D30B50446500783B00D4602D512 -:10F3B000226B91041AD485B9002284F82C20D3F84A -:10F3C0000821D36D23F00403D365236B23F03003AE -:10F3D00043F04203236303B030BD002320461A46A6 -:10F3E00019460093F9F796FC6368E5E70021324877 -:10F3F0000BF070FA314808F003FF2E2130480BF073 -:10F4000069FA2E4808F0FCFE2E212D480BF062FA16 -:10F410002A4808F0F5FE01212A480BF05BFA0F217B -:10F4200029480BF057FA254808F0EAFE2E21244817 -:10F430000BF050FA214808F0E3FE2E2120480BF093 -:10F4400049FA1E4808F0DCFE00211B480BF042FA86 -:10F450001A4808F0D5FE236B204623F4404343F4BA -:10F4600040332363F8F7F2FD6368D3F80801C26DF7 -:10F470005207A0D5216B41F004022263C06D400702 -:10F4800099D5900497D5500409D410040ED4D20312 -:10F4900091D521F4903141F0040121638BE721F4EF -:10F4A000804142F204020A43226384E721F42041AE -:10F4B00041F0040121637EE7583C0020A84B002066 -:10F4C000F43F0020EC230020B43B00204368D3F835 -:10F4D0000831DB6D590730B5044683B008D40023EA -:10F4E0000122204619460093F9F714FC03B030BD01 -:10F4F000C36B90F82D105A7A9142F0D190F82C10ED -:10F500001A789142EBD1B3F803300A2BE7D990F87F -:10F5100044309A07C3F34005E1D4DB07E6D529461A -:10F520001D480BF0D7F91D4808F06AFE2E211C4833 -:10F530000BF0D0F9194808F063FE2E2118480BF0A3 -:10F54000C9F9164808F05CFE012116480BF0C2F913 -:10F55000222115480BF0BEF9104808F051FE2E216B -:10F560000F480BF0B7F90D4808F04AFE2E210C4861 -:10F570000BF0B0F9094808F043FE294606480BF0A5 -:10F58000A9F9064808F03CFE0121204603B0BDE879 -:10F590003040FFF703BF00BF583C0020A84B0020BD -:10F5A00058270020EC230020403D002090F84430F4 -:10F5B000DA070ED54368D3F80831DB6D5B0710B569 -:10F5C000044605D5C36B90F82D205B7A9A4201D092 -:10F5D00010BD704700211D480BF07CF91C4808F055 -:10F5E0000FFE2E211B480BF075F9194808F008FE94 -:10F5F0002E2118480BF06EF9154808F001FE012184 -:10F6000015480BF067F92A2114480BF063F91048EC -:10F6100008F0F6FD2E210F480BF05CF90C4808F0BD -:10F62000EFFD2E210B480BF055F9094808F0E8FDD5 -:10F63000002106480BF04EF9054808F0E1FD204690 -:10F640000121BDE81040FFF7A9BE00BF583C0020D3 -:10F65000A84B002058270020EC230020383D002034 -:10F660004268D2F80821D26D520705D5C26B90F8D6 -:10F670002DC0517A8C4500D0704790F82CC011787D -:10F680008C45F9D1B2F803200A2AF5D990F8443014 -:10F690009B07F1D4FAF7ACBB4268D2F80821D26DCF -:10F6A00053070DD50B46F0B5C56BADF5037D90F84E -:10F6B0002D200446697A914203D00DF5037DF0BDFB -:10F6C000704790F82C102E788E42F6D190F8446056 -:10F6D000C6F34007B607F0D4F3B1B5F803300C2BEE -:10F6E00042D1808B42F6F773984215D9A87B94F8E3 -:10F6F0002F30984210D01D212F480BF0EBF82F48E7 -:10F7000008F07EFDE36B2046997BFDF701F890BB86 -:10F7100094F82C1094F82D2041AD0026052328469E -:10F72000CDE900662E602E71F9F792FDB5F8033031 -:10F73000FD2B08D894F82F20E91801332E7102F020 -:10F740007F02EB704A7101230021F7226846CDE960 -:10F750003E3144A909F09EF9204695E80E00F9F7DC -:10F760007BFA0DF5037DF0BD01230C220A210097E1 -:10F77000F9F7D0FAA1E712491048F9F74FFC1149FF -:10F780000E48F9F74BFCE16B3B460A22897B0B489C -:10F7900008F052FD094808F033FD6368D3F80831DA -:10F7A000DB6D5B07B4D5236B94F82C1043F0040396 -:10F7B00094F82D202363AFE7A03C0020A84B002045 -:10F7C000C03C0020EC23002070B5ADF5027D002682 -:10F7D0000922054641AC0623CDE90026266090F8B3 -:10F7E0002D2090F82C1020462671F9F731FDB4F841 -:10F7F0000330296BFD2B4FEA513225D96868D0F8C8 -:10F800000801C06D02EA9002D20710D40123002043 -:10F8100044A9F722CDE93E30684609F03BF9284675 -:10F8200094E80E00F9F718FA0DF5027D70BD480452 -:10F8300025D40A042AD4CE03C1F3004016D521F4FE -:10F8400090310320296311E068682671E618D0F82A -:10F8500008010133C06DE37002EA900002F001027A -:10F86000B4F8033010F001007271E0D1FD2BCDD857 -:10F87000E218013350710022E3702271C6E721F4CF -:10F880008041012041F400512963EFE721F4204138 -:10F8900002202963EAE700BF4368D3F80831DB6D33 -:10F8A0005B070BD5C36B10B593F809C082B090F815 -:10F8B0002D200446944502D002B010BD704793F845 -:10F8C00000C090F82C209445F6D190F8442092077F -:10F8D000F2D40029F0D0B3F803200C2A0CD19B7B82 -:10F8E000012B14D0022B3DD0032B0DD0204602B0AB -:10F8F000BDE81040FFF768BF002401230C220A2155 -:10F900000094F9F707FAD7E7FCF73EFEEEE7036B42 -:10F910009904EBD431493248F9F790FB314930482A -:10F92000F9F78CFB2F492E48F9F788FB2E492C4814 -:10F93000F9F774FB2D492A48F9F780FB2949284833 -:10F94000F9F77CFB27492648F9F778FB2448234937 -:10F95000F9F774FB236B204623F4C03343F41833C8 -:10F960002363C4E7036B9A04C0D51C491C48F9F70C -:10F9700065FB1C491A48F9F761FB1A491848F9F761 -:10F980005DFB19491648F9F749FB19491448F9F77D -:10F9900055FB14491248F9F751FB12491048F9F781 -:10F9A0004DFB0E490E48F9F749FB226B114B2046DF -:10F9B00022F4A03213432363FFF706FF2046E6F745 -:10F9C000A1F96368D3F80831DB6D5B077FF574AF8D -:10F9D000236B43F0040323636EE700BF583C002011 -:10F9E000A84B002058270020EC230020D43C002006 -:10F9F000E43C0020808702004368D3F80831DB6DC7 -:10FA00005B070FD5C36B2DE9F0430F4690F82D200F -:10FA1000597AADF5037D0546914204D00DF5037D7D -:10FA2000BDE8F08370471A7890F82C309A42F5D1EF -:10FA300090F84420C2F340049207EFD40F21B2485B -:10FA40000AF048FF0121B1480AF044FFEB6BB048CF -:10FA5000B3F8031008F0C8FB0121AC480AF03AFFE4 -:10FA60000821AC480AF036FF0121A8480AF032FF0D -:10FA700023460A224D21A64808F0DEFBA44808F0E0 -:10FA8000BFFB002F00F083802846FBF7ADFC044647 -:10FA9000002840F03081E96BB1F803304D2B40F085 -:10FAA00022818B7C01F1280C4A7CC1F11207887BF2 -:10FAB00003F07F03D2012E6843EA007302F47E5202 -:10FAC000344613430A7C920302F4FE121343CA7BAA -:10FAD000520502F07E62134344F8043F0B46B1F82E -:10FAE00003E0F8180022864515DDDA7D987D02F0E6 -:10FAF0007F0293F813E0C00142EA0E7200F47E50D8 -:10FB00000243587D800300F4FE100243187D400537 -:10FB100000F07E600243053344F8042F9C45DED19B -:10FB2000263601F115070B46C1F13804B1F803C0C0 -:10FB3000E018002284450EDD93F83D2093F83C0048 -:10FB400002F07F0293F83BC0C00142EA8C3200F41D -:10FB50007E50024392B2033326F8022FBB42E5D116 -:10FB6000AB68284695F82D701B685B68C3F3833338 -:10FB7000FF1A18BF0127F7F75DFF6B68D3F808314C -:10FB8000DB6D5B0703D52B6B43F004032B6341ACA8 -:10FB900095F82E3000262046009626600193022319 -:10FBA00095F82D2095F82C102671F9F751FBB4F833 -:10FBB0000330FD2B0DD8AA8B574992082671A1FB63 -:10FBC0000212E1180133520AE370012A38BF012200 -:10FBD0004A7195F82F100122204601F07F01F9F7B4 -:10FBE00009FAD5F800904E4609F1240856F8041F8A -:10FBF000FAF7C4F856F8041F2046FAF7BFF846454E -:10FC0000F8D109F1260209F13401002601E08A4207 -:10FC100029D0B4F8033032F8020FFD2BF7D804EBEB -:10FC2000030C01332671E370830B8CF80530C0F3AD -:10FC3000C61CB4F8033000F07F00FD2BE7D803F1B9 -:10FC4000010E234484F803E083F805C0B4F80330C0 -:10FC5000FD2B04EB030C03F10103D8D88A428CF886 -:10FC60000500E370D5D100230126F72244A9684698 -:10FC7000CDE93E6308F00EFF284694E80E00F8F741 -:10FC8000EBFF002F3FF4CAAE24492148F9F7D6F91B -:10FC900023491F48F9F7D2F91D482149F9F7CEF950 -:10FCA00031461A480AF016FE1E491948F9F7C6F9F6 -:10FCB0001B491748F9F7C2F919491548F9F7BEF970 -:10FCC00016491348F9F7BAF931462846FFF766FB9B -:10FCD000AB681B685B68C3F3833385F82D300DF583 -:10FCE000037DBDE8F08301234D220A2128460094BC -:10FCF000F9F710F892E64D2128460DF5037DBDE891 -:10FD0000F043F7F767BB00BF643D0020EC23002001 -:10FD1000A84B0020743D002099906355583C00206A -:10FD200058270020403D00204368D3F80831DB6DA0 -:10FD30005A0710D52DE9F041C46BADF5087D90F858 -:10FD40002D300646627A90F82C509A4204D00DF578 -:10FD5000087DBDE8F08170472178A942F7D1B4F859 -:10FD600003300A2BF3D990F84430C3F340079B07C4 -:10FD7000EDD4E37A247BDB0104F07F0403F47E53AB -:10FD800044EA0308B8F1030F09DD012342461121BB -:10FD90000097F8F7BFFF0DF5087DBDE8F08147AC8F -:10FDA0000A23CDE90078204627602771F9F750FA39 -:10FDB000B4F80350FD2D07D86A1C63192771E2704F -:10FDC0000422B4F803505A715FFA88F140A8E5F7AD -:10FDD0000FFE40AB45A94FF0000CFD2D0AD86F1C5B -:10FDE0001A78601984F804C002F07F02E770B4F852 -:10FDF0000350427101339942EFD1FD2D11D90123F6 -:10FE00000021F7226846CDE93E314AA908F042FEBA -:10FE1000304694E80E00F8F71FFF0DF5087DBDE8A9 -:10FE2000F0816219002301355371E5702371B4F834 -:10FE300003309DF81621FD2BE1D8591C2344E170B5 -:10FE4000D10902F07F025971B4F80330FD2BD6D8E6 -:10FE5000591C2344E1705A71B4F803309DF81721FE -:10FE6000FD2B4FEAD211CAD8581C234402F07F025E -:10FE7000E0705971B4F80330FD2BC0D8591C2344ED -:10FE8000E1705A71B4F803309DF81821FD2B4FEA48 -:10FE9000D211B4D8581C234402F07F02E07059718B -:10FEA000B4F80330FD2BAAD8591C2344E1705A71D1 -:10FEB000B4F803309DF81921FD2B4FEAD2119ED8DA -:10FEC000581C234402F07F02E0705971B4F80330EB -:10FED000FD2B94D8591C2344E1705A71B4F80330B7 -:10FEE0009DF81A21FD2B4FEAD21088D802F07F012D -:10FEF0005A1C2344E2705871B4F80330FD2B3FF6CE -:10FF00007EAF581C23449DF81B215971E070D10924 -:10FF1000B4F80330FD2B3FF672AF581C234402F0B7 -:10FF20007F02E0705971B4F80330FD2B3FF667AFE4 -:10FF3000E11801334A71E37061E700BF4268D2F80B -:10FF40000821D26D520700D47047C26B00B590F8FB -:10FF50002DE092F809C0E64501D05DF804FB90F869 -:10FF60002CE092F800C0E645F7D1B2F803200A2A47 -:10FF7000F3D990F844309B07EFD45DF804EBF9F720 -:10FF80007DBA00BF4268D2F80821D26D520705D56C -:10FF9000C26B90F82DC0517A8C4500D0704790F814 -:10FFA0002CC011788C45F9D1B2F803200A2AF5D972 -:10FFB00090F844309B07F1D4FAF72EB94268D2F892 -:10FFC0000821D26D520700D47047C26B00B590F87B -:10FFD0002DE092F809C0E64501D05DF804FB90F8E9 -:10FFE0002CE092F800C0E645F7D1B2F803200A2AC7 -:10FFF000F3D990F844309B07EFD45DF804EBF9F7A0 +:10000000002103481AF0DAFC024818F06FF9FEE705 +:10001000183D0020684C002050190020EC230020DF +:100020008019002088190020D0190020EC19002028 +:1000300070B500F54054054694F8003BDA0740F1EE +:10004000D18094F8010B002118F034FD94F8020BD4 +:10005000012118F02FFD94F8020B012118F0EEFC9D +:10006000022194F8030B18F025FD94F80D0B94F879 +:100070000F6B18F0A7FAB4F8121BB4F8142B521A2D +:10008000002A00F0BF80A0EB01031146B8BF511C4D +:10009000DB0103EB610303FB02F193FBF2F30029A5 +:1000A000B8BF03F1FF33DBB2B342194684F80F3B0C +:1000B00000F0AF8001220020164684F8100B94F85F +:1000C0000E3B0344B3FBF6F3DEB2881B0028B8BF37 +:1000D00040420A2800F3818084F80E3B94F80C3BE0 +:1000E0000020FF2A4E4903F0120305F5805508BF92 +:1000F000024684F8240B43F0010384F82C0B84F8A7 +:10010000102B84F80C3B0A680B68C4F8282BC4F841 +:10011000303B95F8ED34002B5AD094F8003B43F077 +:10012000010384F8003BDB0742D594F8010B002162 +:1001300018F0C0FC94F8020B012118F0BBFC94F8F5 +:10014000020B012118F07AFC022194F8030B18F03D +:10015000B1FC95F8F03495F8EE240BB395F8F13432 +:10016000F3B194F80C3B84F8202B43F0080340F2E1 +:10017000FE3184F80C3BB5F8E834B5F8EA248B423C +:1001800088BF002340F2FF318A4228BF0A469A42C4 +:1001900001D80A460023A4F8123BA4F8142B70BD22 +:1001A00094F80C3B002203F0F70384F8202BDEE7E1 +:1001B00094F8010B022118F07DFC94F8020B022147 +:1001C00018F078FC022194F8030B18F073FCC0E7D8 +:1001D00094F8003B03F0FE03A3E73144491084F890 +:1001E0000E1B7BE794F8010B022118F063FC94F8D6 +:1001F000020B022118F05EFC022194F8030B18F0A8 +:1002000059FC32E740210B46B34284F80F3B7FF4A0 +:1002100051AF94F8106B06FB01F00136F2B24EE7D5 +:1002200008BB002070B541F2165300F5405500F5AB +:100230006C561721A5F8023B044685F8011B06F110 +:100240002400FFF731FD95F8021B06F12C00FFF7A3 +:100250002BFD06F10C0095F8011BFFF72BFB204648 +:10026000BDE87040FFF7E4BE2DE9F04300F54054CF +:100270004FF6FF7585B00646B4F8FA3AAB4204D0A3 +:1002800094F8F82A1B2A00F0A781D4F8082B002A3A +:1002900000F0E880DFF83C83B4F8041BD8F80030A5 +:1002A0009B1A8B4294F8003B20D3002283F0020378 +:1002B0002121C248C4F8082B84F8003B1AF07EFBC9 +:1002C0000121BF481AF07AFB94F8003BBD4AC3F302 +:1002D0004003BD48002B12BF09210C2110461AF023 +:1002E0006DFBBA4818F002F894F8003BC3F34007DE +:1002F000394606F58055B5F8562802F00100B84297 +:100300007AD0002900F0A68042F00102012113F00A +:100310000107A5F8562885F8581872D094F80C3BB8 +:100320001F0702D5980600F1318194F80D0B94F85F +:100330000E7B94F80F8B18F045F9B4F8123BB4F823 +:10034000142BD21A002A00F01181A0EB03001146F1 +:10035000B8BF511CC30103EB610303FB02F193FB24 +:10036000F2F30029B8BF03F1FF33DBB2434518466F +:1003700084F80F3B00F0018101220021944684F8AB +:10038000101B94F80E3B0B44B3FBFCF3DBB2C11A19 +:100390000029B8BF49420A2900F3A4809C4684F88A +:1003A0000E3BFF2A94F80C3B08BF0022D90784F8C3 +:1003B000102B00F1B6801A0740F1828094F8202BB0 +:1003C000910900F02A8101296CD067457AD195F80E +:1003D0005838002B42D106F50053D3F8EC3C5B03B0 +:1003E00040F1188142F6BC4001221B21304405B087 +:1003F000BDE8F04310F0D4BB0029E8D013F00107AA +:100400008CD1DFF8D081D4F8282BD8F800309B1A93 +:10041000312B6DD8D8F80030D4F8302B9B1A312B03 +:10042000D5D994F82C7BD8F80030C7F3400794F85E +:100430002D0BC4F8303B18F02BFB8742C7D094F843 +:100440002C3B83F00203990784F82C3BBFD501278E +:100450000237A4E022F00102A5F85628002385F80F +:100460005838BFE794F8030B18F012FBA0F1010213 +:1004700094F8003BB2FA82F2C3F3400152090F46EE +:100480008A423FF436AF0128DFF848810CBF4FF4B1 +:100490007A704FF4FA70D8F80020A4F8040BC4F86E +:1004A000082B26E702F00701013101EB8101C1F1C0 +:1004B0007F01C9B2614540F2C5800023C4F81C3BEE +:1004C000674584D0B5F860389A0532D495F8EF4482 +:1004D00000230A22042130460094CDE901C3F9F734 +:1004E000F7FB74E70344C3F3470C84F80ECB58E7DB +:1004F00094F8249BD8F80030C9F3400994F8250BF0 +:10050000C4F8283B18F0C4FA484583D094F8243B3B +:1005100083F00203980784F8243B7FF57BAF023712 +:100520003DE023F0010384F80C3BB5F860389A05F0 +:10053000CCD50C2126481AF041FA012120481AF0A6 +:100540003DFA00230A222148194617F0EBFE01214B +:100550001B481AF033FA94F80E1B1C4817F0BAFE29 +:100560001A4817F0C3FE94F80ECBAFE740200346BD +:10057000434584F80F3B7FF4FFAE94F8101B01F164 +:10058000010C00FB01F15FFA8CF2FAE603F0DF03E5 +:10059000C3F3001784F80C3BC7F10307FFB2002335 +:1005A000374441F2EE4104223046CDE901337C5C10 +:1005B00001210094F9F78CFB09E700BF1423002008 +:1005C000EC23002004230020BC150020684C0020F0 +:1005D0003823002008BB0020342202FB03F303F57C +:1005E0006C53C218C35CDB077FF54FAE507817F031 +:1005F000E9FFB4F8FA3AAB420CD083B2B4F8FC2A63 +:100600009A42B4F8FE2A88BFA4F8FC3A9A4201D272 +:10061000A4F8FE3A05B0BDE8F08302F0070113F03C +:10062000100FC3F3001001F1010101EB81012FD183 +:1006300061453FF645AF43F03003C4F81C0B84F826 +:100640000C3B3DE78F4248D2C2F3C202013202EBBB +:10065000820202EB82029200C832A4F8182B254ACB +:100660001168C4F81C1B00293FF42AAF214A126804 +:10067000521AB4F8181B8A42FFF422AF83F0100319 +:1006800043F0200384F80C3B0023C4F81C3B17E71D +:100690006145FFF412AF674522D0D208DFF85480DD +:1006A0000132D8F8000002EB8202C4F81C0B02EB06 +:1006B00082029200C832A4F8182B00283FF402AF3F +:1006C000D8F80010091A9142FFF4FAAE23F0100393 +:1006D00043F0200384F80C3BEFE6D4F81C1BC2E780 +:1006E000D4F81C0B00283FF472AEB4F8182BDFF8D6 +:1006F0000480E5E708BB00200378FF2B00D070479B +:10070000FF2970B50D4600F0D38000263F2904462E +:1007100001700672467240F2B881A1F14005072DC2 +:1007200040F2A0813146C5481AF048F9C44817F094 +:10073000DDFD2E21C3481AF041F9C14817F0D6FD5E +:100740002E21C0481AF03AF9BD4817F0CFFD2E21EE +:10075000BC481AF033F9BA4817F0C8FD2E21B94841 +:100760001AF02CF9B64817F0C1FD0121B6481AF06D +:1007700025F90821B5481AF021F9B14817F0B6FD5E +:100780000121B1481AF01AF933460A222178AC48FF +:1007900017F0C8FDAA4817F0A9FD0121AA481AF0D0 +:1007A0000DF93C21AA481AF009F9A54817F09EFD59 +:1007B0002E21A4481AF002F9A14817F097FD2E2126 +:1007C000A0481AF0FBF89E4817F090FD2E219D4896 +:1007D0001AF0F4F89A4817F089FD2E2199481AF07A +:1007E000EDF8974817F082FD314694481AF0E6F884 +:1007F000934817F07BFD314690481AF0DFF8904897 +:1008000017F074FD2E218F481AF0D8F88C4817F095 +:100810006DFD2E218B481AF0D1F8894817F066FD3E +:100820002E2188481AF0CAF8854817F05FFD2E215E +:1008300084481AF0C3F8824817F058FD0121824815 +:100840001AF0BCF8182183481AF0B8F87C4817F061 +:100850004DFD01217C481AF0B1F83F217E481AF085 +:10086000ADF8774817F042FD2E2176481AF0A6F829 +:10087000734817F03BFD2E2172481AF09FF870481C +:1008800017F034FD2E216F481AF098F86C4817F0D5 +:100890002DFD2E216B481AF091F8694817F026FDBE +:1008A000314666481AF08AF8654817F01FFDFEE7E2 +:1008B000002162481AF082F8614817F017FD2E21D6 +:1008C00060481AF07BF85E4817F010FD2E215D4855 +:1008D0001AF074F85A4817F009FD2E2159481AF0F9 +:1008E0006DF8574817F002FD2E2156481AF066F8A9 +:1008F000534817F0FBFC012153481AF05FF804211C +:1009000056481AF05BF84E4817F0F0FC01214E48AB +:100910001AF054F800230A222946494817F002FD2C +:10092000474817F0E3FC012147481AF047F84721F0 +:100930004B481AF043F8424817F0D8FC2E214148A2 +:100940001AF03CF83E4817F0D1FC2E213D481AF031 +:1009500035F83B4817F0CAFC2E213A481AF02EF819 +:10096000374817F0C3FC2E2136481AF027F83448D0 +:1009700017F0BCFC002131481AF020F8304817F07D +:10098000B5FC00212D481AF019F82D4817F0AEFCDF +:100990002E212C481AF012F8294817F0A7FC2E2116 +:1009A00028481AF00BF8264817F0A0FC2E212548FD +:1009B0001AF004F8224817F099FC2E21214819F06A +:1009C000FDFF1F4817F092FC01211F4819F0F6FFA8 +:1009D0001821204819F0F2FF194817F087FC01216F +:1009E000194819F0EBFF3F211B4819F0E7FF1448A5 +:1009F00017F07CFC2E21134819F0E0FF104817F087 +:100A000075FC2E210F4819F0D9FF0D4817F06EFC28 +:100A10002E210C4819F0D2FF094817F067FC2E214F +:100A2000084819F0CBFF064817F060FC0021034886 +:100A300019F0C4FF024817F059FCFEE7183D0020EA +:100A4000684C002050190020EC230020D43B0020EB +:100A5000E03B0020D0190020EC1900208019002074 +:100A6000881900200120207217F06AFF627A6389DA +:100A700042F001029804627240F1D680590400F1FC +:100A8000E28043F00203638170BD272940F2C680F3 +:100A900031466F4819F092FF6E4817F027FC2E215F +:100AA0006D4819F08BFF6B4817F020FC2E216A4827 +:100AB00019F084FF674817F019FC2E21664819F0D9 +:100AC0007DFF644817F012FC2E21634819F076FF71 +:100AD000604817F00BFC0121604819F06FFF0421FA +:100AE0005F4819F06BFF5B4817F000FC01215B4881 +:100AF00019F064FF33460A222178564817F012FC99 +:100B0000544817F0F3FB0121544819F057FF3921DD +:100B1000544819F053FF4F4817F0E8FB2E214E4878 +:100B200019F04CFF4B4817F0E1FB2E214A4819F011 +:100B300045FF484817F0DAFB2E21474819F03EFFE1 +:100B4000444817F0D3FB2E21434819F037FF4148A2 +:100B500017F0CCFB31463E4819F030FF3D4817F006 +:100B6000C5FB31463A4819F029FF3A4817F0BEFB59 +:100B70002E21394819F022FF364817F0B7FB2E21F5 +:100B8000354819F01BFF334817F0B0FB2E213248CF +:100B900019F014FF2F4817F0A9FB2E212E4819F049 +:100BA0000DFF2C4817F0A2FB01212C4819F006FF7D +:100BB00018212D4819F002FF264817F097FB012154 +:100BC000264819F0FBFE3F21284819F0F7FE21487E +:100BD00017F08CFB2E21204819F0F0FE1D4817F06D +:100BE00085FB2E211C4819F0E9FE1A4817F07EFB00 +:100BF0002E21194819F0E2FE164817F077FB2E2136 +:100C0000154819F0DBFE134817F070FB3146104809 +:100C100019F0D4FE0F4817F069FBFEE728460221C1 +:100C200017F048FF01201FE7227AD20703D523F0EF +:100C30000203638170BD207817F02AFF63890028C2 +:100C40003FF41FAFF3E723F4C0439BB2EFE700BFCD +:100C5000183D0020684C002050190020EC23002093 +:100C600080190020203C0020D0190020EC19002021 +:100C700070B5414D044642682B689B1A312B24D82D +:100C8000037A9A07C3F3400001D5A2697AB92269B1 +:100C900022B129688A1AA1898A4248D2236A23B1DB +:100CA0002A68A18BD31A8B422ED2012070BD2968ED +:100CB0008A1AA18A8A42EAD30022A261628922F4B6 +:100CC000207242F480726281E1E743892A689904C4 +:100CD000C3F340064260C3F340303CD55A0435D4D8 +:100CE000237A8642CDD0618981F00202890705D43A +:100CF00022F0100242F009026281C2E722F00802EB +:100D000042F011026281BCE76389FA21227A43F042 +:100D100041032868A183638193072062C5D522F02F +:100D20000202002342F02002A3612272BDE7628921 +:100D3000002142F02002216162810028AED023F020 +:100D40000203A16143F020032372A7E723F4C04309 +:100D500000206381C4E7237AD80705D5607A00F0C4 +:100D6000010080F00100BCE7207817F091FE003808 +:100D7000237A18BF0120F4E708BB002010B5044611 +:100D8000FFF776FF002838D06389DA05194645D584 +:100D900098054FEA63226CD513F0040FC3F380006B +:100DA00040F04581DA0740F1E5801A0742D48B060E +:100DB0007BD521F020010020627A41F4805320612C +:100DC000D00689B2638102D541F4C0516181237A92 +:100DD000990701D50023A36163789749C3EB4310BA +:100DE000096803EB800321629B00A383930600F153 +:100DF0000E8102230320A37010BDA37823B1638961 +:100E00009907C3F3400241D5637A9A07C3F34000C0 +:100E1000F2D523F002030C20637210BD13F0040F0F +:100E20004FEAA302C3F380003DD1DA0740F1A2806C +:100E30001A07BCD5627823F008016181C2EB421128 +:100E400002EB81027C4952000968A281227A216169 +:100E500091077BD4637A100743F00203637204D5D1 +:100E6000D10619D442F01002227201231846A37051 +:100E700010BD43F400735A07638105D4D80703D526 +:100E80001907C3F3C000D5D4227AE3E7637A0220BE +:100E9000A2700343637210BD22F0100205230620E6 +:100EA0002272A37010BDD8072ED5CB0662D5480795 +:100EB000C1F380027AD40B05C1F3C02000F18C800D +:100EC000237A13F0020FC3F3400278D04B05C1F32D +:100ED000802240F19080594B20610B40E070A0616E +:100EE000638100222262D8050DD55A12D1070AD596 +:100EF00000225248617A034022612262E270A261BC +:100F00004A06638147D59A1012F001027FF475AF4B +:100F1000D8077FF572AF190665D458067FF56DAF17 +:100F2000E27823F0400C4448042102F10A03C2F1A4 +:100F3000FA020068DBB2A4F80AC020620520642B24 +:100F4000A170A28328BF6423E37010BDA16939B1E9 +:100F5000002123F48473A16140F28141194361812E +:100F600000287FF477AF618948070B4651D4CA0740 +:100F70003FF51DAF0B46B6E7304800220840990602 +:100F800022612262E270608105D523F02003A26114 +:100F900043F002032372A078431E042B02D80630CC +:100FA000C0B210BD00230220A37010BD234B00224D +:100FB0000B4022612262A2616381628093E7607AC2 +:100FC000C006D9D5C804D7D51C4B22610B4022627C +:100FD000A2616280638186E7184B22610B40226226 +:100FE000628063817FE723F0800303210420A261F4 +:100FF0006381A17010BD21F01103A06922619BB231 +:10100000638150B143F08103A261638169E7618923 +:101010000B46CA077FF567AF47E7074B21F0910101 +:10102000FA201A688BB2A082A261638159E7D807BF +:101030003FF53BAF5AE700BF08BB00200280FFFF2F +:1010400070B590F80CC005691CF001041AD1AD6AA6 +:10105000B5B11CF0020FCCF3400519D090F9014056 +:10106000A14240D090F90240A1420ED1022A06D1FD +:101070002BB9FF23837002683A4B93434BD0012472 +:10108000204670BDED6A002DE3D10024204670BDDE +:10109000002BFAD042698DB2002C32D02C0902EB21 +:1010A0004402D48F01F00F02144104F00104002C1B +:1010B000EBD190F90020002A1CDB8A421AD04CF0B8 +:1010C000020C41708460827080F80CC02DDD1CF031 +:1010D000010436D101698E6A002ED0D091B2284623 +:1010E0001C46B047CCE7022AC9D1002BC7D1FF2349 +:1010F0004370C0E71C4B4B2201701B6882808360E9 +:10110000BEE72C0902EB4402548F01F00F02144198 +:1011100004F00104CBE74FF6FF732CF0020C2C46D1 +:101120000380837080F80CC0AAE71CF0010410D182 +:1011300001698E6A002EA2D0294690B21C46B047A3 +:101140009EE70369DB6A002B99D091B22846984745 +:1011500096E70369DB6A002B91D0294690B2984745 +:101160008EE700BF00FFFF0008BB002070B543F60C +:10117000A815012406460544631E9BB2013B042BBF +:1011800023D8DFE803F01E0B03200D00432128467F +:10119000FFF7B2FA01342435A4B2EDE74221F6E7B5 +:1011A00045212846FFF7A8FA43F698201E2130442F +:1011B000FFF7A2FA43F6BC201F213044FFF79CFA48 +:1011C00070BD4121E3E74421E1E740212846FFF7D4 +:1011D00093FA062CDED1E7E7F0B500F5805683B030 +:1011E0001446951D96F868799446C7F380071CF855 +:1011F000013F03F00F030C2B5CD06545F7D14B8901 +:10120000002091F808C023F4FF4391F809E00CF0A6 +:10121000010C086123F07D030EF0010E81F808C077 +:101220009BB281F809E008624B81C8708861002F89 +:1012300036D0D6F8FC370026DB6803F00F03023304 +:101240004B7001E0A54221D014F8013F13F00F03C9 +:10125000F8D0042B1CD0062B03D10B7A43F00803E3 +:101260000B725378DF0603D5487A40F010004872BD +:10127000980603D5487A40F0200048725B06E1D515 +:101280004B7AA54243F040034B72DDD103B0F0BD71 +:101290000B7A8E6123F0200343F002030B72E0E728 +:1012A000BCF1000F18D0BEF1000FC2D143F004030F +:1012B0004B81BEE74B8923F4FF4323F07D034B8131 +:1012C0000B8923F47E4323F0FE030B8100230B6183 +:1012D0000B62CB708B61ACE708780192009117F03C +:1012E000D7FBDDE900120028A3D14B89DEE700BF60 +:1012F0002DE9F04743F6A81400254FF085088246F3 +:1013000041F26757044400F56A5600F58059D9F850 +:101310006C382146243450461A7818FB02722A444D +:101320000D355244FFF758FFA642F0D141F2BD42BD +:1013300043F69821504652445144FFF74DFF41F285 +:10134000CA4243F6BC21504652445144BDE8F047DE +:10135000FFF742BF2DE9F04784B007469246984612 +:101360009DF830508C1D01F10C0600F5805914F8E1 +:10137000011F01F1FF3C1FFA81FEBCF1C70F1AD813 +:1013800014F806CCB5FA85F0D9F800284346400990 +:1013900002EBC1020CF00F01A94292F832200AD1EF +:1013A0004AB145B152460121CDF800E0CDE9010531 +:1013B0003846F8F78DFCB442D9D104B0BDE8F087C7 +:1013C0002DE9F04F43F6A8154FF0000A85B083468B +:1013D0005646054400F5805900F54054D9F86C286C +:1013E0001FFA86F82B7A127813F00103039200F0AB +:1013F000F7802B78403BDBB2072B40F2F1806B7A11 +:1014000023F001036B722846FFF7B8FC94F88C3A7E +:101410006A89074613F00100D4F8901A4FEA620C6B +:10142000C2F3400240F0E880896A61B1990740F157 +:10143000EA8094F9811A8E4200F01B8194F9821A95 +:101440008E4200F06281C7B1039985224346584617 +:1014500002FB01A241F26751009711440422594452 +:10146000FFF778FF3B46F2B204215846F2F746FEFA +:101470006A894FEA620CC2F34002B9F83A1841FA9D +:1014800006F383EA0C03DB070BD5002A00F0138177 +:101490000123B3400B439BB20122A9F83A3889F8E3 +:1014A0003C28013624350AF10D0A062E96D199F80A +:1014B0003C384BB1002342F6BC4001220421584481 +:1014C00089F83C380FF06CFB94F88C3AD4F8902AE9 +:1014D000DF0700F10681926A22B1D4F8882A002A37 +:1014E00040F0228143F6E02343F6982541F2BD48BF +:1014F00000275B445D44D84403932B7A5FFA87FA54 +:1015000013F0010300F0DC802B78403BDBB2072BAB +:1015100040F2D6806B7A23F001036B722846FFF706 +:101520002DFC6B8906460246C3F3400351460398DF +:10153000FFF786FD86B180F00100C0B260B1414680 +:1015400058463B4605220096FFF704FF33465246B5 +:1015500005215846F2F7D2FDB9F83E286B8942FAC8 +:1015600007F181EA53015B10C8070FD513F0010F93 +:101570004FF0010303FA07F300F0B0801A4392B270 +:101580004FF00103A9F83E2889F84038243508F1C6 +:101590000D08002F00F0A08099F840384BB10023CF +:1015A00042F6BC403A460521584489F840380FF0CD +:1015B000F7FA94F8EC3AD4F8F02AD90700F19B80B6 +:1015C000926A52B1D4F8E82A3AB17F49B4F8E40AF1 +:1015D00009688A1A824280F0C78005B0BDE8F08FA2 +:1015E00094F8542842FA03F3D8077FF508AF6B7AD2 +:1015F00043F001036B7206E7C96A00293FF423AF89 +:1016000099073FF516AF002A3FF41DAFD4F8941A9E +:10161000002800F08480C98F314101F001010029C8 +:101620007FF411AF94F9800A0028C0F293808642BB +:1016300000F0908043F00203C4F8881A84F8816AAD +:1016400084F8820A84F88C3A80F29C8013F0010FAF +:10165000D4F8903A00F0B380DB6A002B00F0998058 +:1016600081B2404698476A894FEA620CC2F3400251 +:1016700003E7022F7FF401AF002A7FF4FEAEFF22C2 +:1016800084F8812AD4F8802A504931EA020209D12B +:1016900023F0020384F88C3A4FF6FF73A4F8803AE3 +:1016A00084F8823AB9F83A1841FA06F383EA0C034F +:1016B000DB077FF5F6AE0123B34021EA0303EBE637 +:1016C00094F8542842FA03F3DE077FF523AF6B7AD0 +:1016D00043F001036B7221E701270EE722EA0302C0 +:1016E0004EE7D26A002A3FF4FDAED4F8882A002AD9 +:1016F0003FF4F8AE18E0D26A002A3FF46EAFD4F897 +:10170000E82A002A3FF469AF5FE7022F7FF4B5AE05 +:10171000002A7FF4B2AEFF2284F8822AB2E7498F12 +:10172000314101F001017AE7274909688A1AB4F8C2 +:10173000841A8A42FFF4D6AE002223F00203C4F8D2 +:10174000882A4FF6FF7284F88C3AA4F8802A84F82D +:10175000822AC7E64B2384F8806AA4F8843A1A4B9D +:101760001B68C4F8883A6EE64FF6FF72002123F03A +:101770000203C4F8E81AA4F8E02A84F8E22A84F8FC +:10178000EC3A2AE713F0010FD4F8903A0BD19B6A98 +:1017900063B9B9F83A1841FA06F383EA0C03DA0799 +:1017A0003FF576AE7DE6DB6A002BF2D0414680B293 +:1017B00098476A894FEA620CC2F340025DE69B6A71 +:1017C000002B7FF44DAFE4E708BB002000FFFF00D3 +:1017D0002DE9F047002106464E484FF4806519F088 +:1017E000EDF84D4816F082FD00214A4819F0E6F860 +:1017F000494816F07BFD1121484819F0DFF84648AA +:1018000016F074FD1821464819F0D8F8424816F031 +:101810006DFD01210720434C17F04CF901210620F2 +:1018200017F048F90021052017F044F94FF4003370 +:101830003220C4F88830C4F8845017F081F83A494F +:10184000DFF8ECE0C4F88850384B4868DEF8002038 +:10185000A3FB0232920C02EB82024B681B1A9A42E3 +:10186000FBD830484FF480634FF0070C06F5405525 +:10187000DFF8C0A04FF001094FF400372A49DFF824 +:10188000AC80C0F88430DAF8083009FA0CF213F4AE +:10189000807F95F8543839D123EA020385F854380B +:1018A000C0F884704C68DEF80020A8FB0232920C6D +:1018B00002EB82024B681B1B9A42FBD80CF1FF3CE7 +:1018C000C0F88870BCF1FF3FDDD117F08DF80346FA +:1018D00000211048C5F8583819F070F80E4816F075 +:1018E00005FD304601F06AFA304600F009FD304649 +:1018F000FFF73CFC3046FEF795FC0021054819F047 +:101900005DF80548BDE8F04716F0F0BC1343DBB2C4 +:10191000C4E700BF183D0020684C00205C23002075 +:101920007023002000400042001000E083DE1B43D3 +:10193000644C002000C0004270B500F540540D46D4 +:1019400094F821399E0640F1CC8058066DD40902E6 +:1019500094F8200917F03AFA94F8D828002D71D09D +:1019600002F0070343F00103110600F1BF80B4F851 +:10197000BC28AAB15A1E94F8BF187148D2B20529E2 +:10198000D4F8C41850F822200A704FEA1220D4F874 +:10199000C41800F2BA80120C4870D4F8C4188A70C7 +:1019A00043F08002D4F85C1884F8D82802F00106CD +:1019B000B1F84A0000F00105AE420AD0002E40F016 +:1019C000A18020F0010080B20122A1F84A0081F834 +:1019D0004C20B1F84E20C3F3400002F00105A842AC +:1019E0000AD0002840F08B8022F0010292B2012040 +:1019F000A1F84E2081F85000B1F852209D0802F065 +:101A00000100B0EB930F09D0002D75D122F0010237 +:101A100092B20123A1F8522081F85430B4F81A3957 +:101A200043F00103A4F81A3970BD002994F8200985 +:101A300014BF4FF48071012117F0C8F994F8D82829 +:101A4000002D8DD112F006038ED11206ECD5B4F81C +:101A50001A29930706D594F8DE383A4903F00F03A4 +:101A600051F82350B4F8BC3883B194F8BF38052B33 +:101A7000D4F8C43853D81D70290AD4F8C4382A0CB5 +:101A80005970D4F8C4389A70B4F81A290021D4F8DF +:101A90005C3884F8D818B3F84A10CE0706D521F080 +:101AA00001010120A3F84A1083F84C00B3F84E104E +:101AB000CD0706D521F001010120A3F84E1083F8CF +:101AC0005000B3F85210C80706D521F001010120DB +:101AD000A3F8521083F8540042F00102A4F81A2926 +:101AE00070BD94F8200916F0A9FF35E702F07F02D7 +:101AF0009A427FF43CAF70BD42F0010289E742F0A8 +:101B0000010274E740F001005EE74870100CD4F861 +:101B1000C418120E8870D4F8C418CA7040E71D703B +:101B20002A0AD4F8C438290C5A700022D4F8C438D0 +:101B30009970D4F8C438DA70B4F81A29A6E700BF4F +:101B4000B00F0020700E002070B50446FFF7D0FBE8 +:101B5000204601F03BF9204600F00CFC2046FEF741 +:101B600067FA04F50052D2F8EC3C190500D470BDB8 +:101B700023F400630525C2F8EC3C01212046FFF761 +:101B8000DBFE642016F0DCFE00212046FFF7D4FEC9 +:101B9000642016F0D5FE6B1E13F0FF05EDD104F5A1 +:101BA0008054D4F8E438002BE1D0BDE870401847E9 +:101BB0002DE9F04F054685B016F016FF05F54056A5 +:101BC000D6F85838C01AB0F5FA7F6FD2DFF8DCA12A +:101BD000D6F83838DAF800209A4231D043F6685601 +:101BE0000024DAF800B005F580582E4441F2D559AA +:101BF0002746D8F86C2804EB4403E1B2127802EBD4 +:101C0000421002EB800213442B4413F8092022B93E +:101C1000D8F8FC371B681B0521D50092A3B2162209 +:101C200008212846CDE90177F8F752F80134383613 +:101C3000062CDED1DAF80040A4EB0B04012C1BD8F3 +:101C40002846FFF7BDFB284600F0C2FD284601F0FC +:101C5000D7F9284605B0BDE8F04FFEF705BB16F8EA +:101C60000A3C002BE2D04B1E042B00F28F80DFE8F1 +:101C700003F06D8B896E87001321454818F09EFE96 +:101C80000121444818F09AFE00230A2221464248C6 +:101C900016F048FB01213F4818F090FE02213F4812 +:101CA00018F08CFE3C4816F021FBC9E73C4B4FF482 +:101CB00080623C49C3F8882003F18D73DFF8F0E0BF +:101CC00003F5CF334868DEF800208333A3FB0232EC +:101CD000920C02EB82024B681B1A9A42FBD8304FDF +:101CE0004FF480630724DFF8CCA04FF001094FF4D4 +:101CF000003C2C49DFF8C080C7F88430DAF808309F +:101D000009FA04F213F4807F96F854381BD123EAC1 +:101D1000020386F85438C7F884C04868DEF800200B +:101D2000A8FB0232920C02EB82024B681B1A9A4209 +:101D3000FBD8013CC7F888C0621CDFD116F054FE06 +:101D4000C6F8580842E71343DBB2E2E72021E0225D +:101D50001548012380F8A52080F8303180F82F3114 +:101D600011F066FC01231048194611F06FFD304652 +:101D700006F80A7C04F0E6FF304605F04FF855E718 +:101D80000221E4E70821E2E71021E0E70121DEE794 +:101D900048230020EC230020684C0020BC3A00209F +:101DA00000400042001000E018B1002008BB0020F5 +:101DB000644C002000C0004283DE1B4338B503782A +:101DC000FF2B3DD1FF290D4600F01481272938D87B +:101DD000044601212846257016F06CFE20780F2855 +:101DE0000BD9A0F11203DBB2152B00F2EF81784A78 +:101DF00022FA03F3D90740F1E981637843F0200325 +:101E00009A06637000F1BC81C3F38011C3F38002B2 +:101E1000002309B143F040030AB143F00403002258 +:101E2000C3F340116370A27022739A0640F1D68109 +:101E3000991100F0CF810121BDE8384016F0C6BFEE +:101E400038BD0021634818F0B9FD634816F04EFA1A +:101E50002E21624818F0B2FD5F4816F047FA2E2195 +:101E60005E4818F0ABFD5C4816F040FA2E215B4846 +:101E700018F0A4FD584816F039FA2E21574818F0EA +:101E80009DFD554816F032FA0121554818F096FD8F +:101E90000421544818F092FD4F4816F027FA01210A +:101EA0004F4818F08BFD00230A2229464A4816F0B5 +:101EB00039FA494816F01AFA0121494818F07EFD0E +:101EC0003D21494818F07AFD434816F00FFA2E21BB +:101ED000424818F073FD404816F008FA2E213F489A +:101EE00018F06CFD3C4816F001FA2E213B4818F022 +:101EF00065FD394816F0FAF92E21384818F05EFDD4 +:101F0000354816F0F3F90021324818F057FD3248F1 +:101F100016F0ECF900212F4818F050FD2E4816F06D +:101F2000E5F92E212D4818F049FD2B4816F0DEF971 +:101F30002E212A4818F042FD274816F0D7F92E2105 +:101F4000264818F03BFD244816F0D0F92E212348EE +:101F500018F034FD204816F0C9F90121204818F086 +:101F60002DFD1821214818F029FD1B4816F0BEF957 +:101F700001211B4818F022FD3F211D4818F01EFDCD +:101F8000154816F0B3F92E21144818F017FD124821 +:101F900016F0ACF92E21114818F010FD0E4816F07D +:101FA000A5F92E210D4818F009FD0B4816F09EF9F1 +:101FB0002E210A4818F002FD074816F097F9002173 +:101FC000044818F0FBFC044816F090F9FEE700BF47 +:101FD000F38C3F00183D0020684C00205019002071 +:101FE000EC23002080190020B0370020D0190020F9 +:101FF000EC19002000217B4818F0E0FC7A4816F02C +:1020000075F92E21794818F0D9FC774816F06EF949 +:102010002E21764818F0D2FC734816F067F92E216D +:10202000724818F0CBFC704816F060F92E216F480A +:1020300018F0C4FC6C4816F059F901216C4818F0EE +:10204000BDFC04216B4818F0B9FC674816F04EF946 +:102050000121674818F0B2FC00230A222946624891 +:1020600016F060F9604816F041F90121604818F057 +:10207000A5FC4721604818F0A1FC5B4816F036F932 +:102080002E215A4818F09AFC574816F02FF92E21A5 +:10209000564818F093FC544816F028F92E2153485E +:1020A00018F08CFC504816F021F92E214F4818F0FA +:1020B00085FC4D4816F01AF900214A4818F07EFCBC +:1020C000494816F013F90021464818F077FC4648B5 +:1020D00016F00CF92E21454818F070FC424816F015 +:1020E00005F92E21414818F069FC3F4816F0FEF82A +:1020F0002E213E4818F062FC3B4816F0F7F82E21DE +:102100003A4818F05BFC384816F0F0F801213848DE +:1021100018F054FC1821394818F050FC324816F0D9 +:10212000E5F80121324818F049FC3F21344818F005 +:1021300045FC2D4816F0DAF82E212C4818F03EFC0C +:10214000294816F0D3F82E21284818F037FC2648E5 +:1021500016F0CCF82E21254818F030FC224816F055 +:10216000C5F82E21214818F029FC1F4816F0BEF8AA +:1021700000211C4818F022FC1B4816F0B7F8FEE7B7 +:102180000A21204818F01AFC0121194818F016FC01 +:1021900000230A222178144816F0C4F801211448BB +:1021A00018F00CFC0E21184818F008FC0E4816F028 +:1021B0009DF8637800209D06C3F380116070C3F31F +:1021C000800220787FF524AE202322E6637803F096 +:1021D000DF0315E6BDE8384016F0F8BDBDE838402D +:1021E00016F02CBC183D0020684C0020501900202F +:1021F000EC2300208019002088190020D01900202D +:10220000EC190020F0370020FC3700202DE9F84FB2 +:102210000C460546D1B2204605F58055FFF7CEFDA8 +:102220006378D5F8FC27990652685AD557034CBFF6 +:1022300043F0400303F0BF0313F0010103F0010773 +:10224000637041D0002981F001084FEA01264FF068 +:10225000020515BF4FF0010A4FF4807A4FF48079E0 +:102260004FF001099806FFB24FEA082B1CD559061A +:1022700020784CBF5146594616F0A8FD192016F09B +:102280005FFB63789A0614D55B0620784CBF4946FD +:10229000314616F09BFD192016F052FB012D11D08E +:1022A000637801259806E2D44146207816F0C6FBF3 +:1022B000E4E73946207816F0C1FB192016F040FB00 +:1022C000012DEDD1BDE8F88F9E0611D55D06207871 +:1022D00048BF012116F07AFD637803F00107394603 +:1022E000B0E703F0BF0303F0010763703946A9E7C5 +:1022F000207816F0A3FB637803F001073946A1E7C5 +:1023000070B51B4B43F6201564220646196801245C +:1023100000F540530544C3F89C19A3F8A029A3F87D +:102320009829631E9BB2013B032B18D8DFE803F00A +:102330000D0B020F1B2229463046FFF767FF0134C1 +:102340001835A4B2EDE71A22F5E71922F3E706F5EE +:10235000665130461C22BDE87040FFF757BF182277 +:1023600029463046FFF752FF052CE8D170BD00BF6B +:1023700008BB00202DE9F84F00F5805A41F2D845FE +:1023800043F6201443F69817BAF846384FF0000980 +:1023900005440444DB4307444FF02008AAF84638BC +:1023A0006B785A1EC72A62D8DAF8002802EBC302FB +:1023B00092F832B0ABF1100B63782E789806C3F325 +:1023C000801184F80190C3F3800248BF84F8018033 +:1023D0006378002947D043F0400363706378002A94 +:1023E0003DD043F004036370637884F802909A064A +:1023F000C3F3401184F80C9040D5C3F380115B0601 +:10240000207848BF012116F0E1FC63781EB3052E49 +:1024100043F00203A8BF05266370013EA670BBF11E +:10242000030F03D8637823F0020363706378DAF84C +:10243000FC279E0652681DD550034CBF43F0400355 +:1024400003F0BF03D90763701CD518340335A742C6 +:10245000A6D1BDE8F88F23F002036370DFE723F015 +:1024600004036370C0E723F040036370B6E76FF0C6 +:102470000F0BA1E723F040036370E6E7207816F026 +:10248000DDFAC2E79A06C3F3401108D5C3F3801101 +:102490005B06207848BF012116F098FCD5E720782C +:1024A00016F0CCFAD1E700BF2DE9F0419DF818E015 +:1024B00006460C461746BEF1010F1D4691F801C0B5 +:1024C00035D9BEF1020F56D0BEF1030F00F0ED80FA +:1024D000BEF1FF0F40F0A88006F540561CF0100F2B +:1024E00096F8A439AEB252D11CF0020FCCF34002E0 +:1024F00040F085806369002B40F0AF800CF0010252 +:10250000360905F00F0537F8163043FA05F101F0EA +:102510000101914209D0002A6CD00122AA40134344 +:102520009BB2012227F81630BA70BDE8F0810EF098 +:1025300001080CF001039845CED01CF0200F00F0EC +:10254000AF801CF0400F00F0CA80B8F1000F207877 +:1025500014BF4FF48071012116F038FC94F801C0CB +:10256000B8F1000F00F0B8804CF0010C4CF0080CF2 +:1025700084F801C0B0E71CF0020F00F0BA8000F54B +:1025800040561CF0100F96F8A439AEB237D0A368AD +:1025900063B3DFF83882A188D8F80020D31A8B42C1 +:1025A00024D300230CF00101A360237BD80748BF8C +:1025B00081F001011CF0200F00F097801CF0400F0B +:1025C00000F0CA800029207814BF4FF480710121E7 +:1025D00016F0FCFBD8F800306422A360237BA280B5 +:1025E0000133DBB2062B00F2BC802373627802F069 +:1025F000010285E70122AA4023EA020391E71CF0C9 +:10260000010FF3D0002BF1D0A27802F00F081309CC +:10261000B8EB121F40F28480013348EA03135FFADB +:1026200083F884F80280E1E71EF0040FCEF3C008BF +:1026300014BF4CF0020C0CF0FD0C0CF0010381F8FF +:1026400001C098453FF448AF1CF0200F7FF479AFEC +:102650004146207816F0F2F980E75C490968CB1A08 +:10266000218A8B42FFF44AAF62611CF001023FF401 +:1026700047AF1CF0200FCCF3401100F093801CF00A +:10268000400FCCF38011207818BF012116F09EFB7B +:102690006378002223F0010343F0080363702FE7FF +:1026A0007146207816F0CAF958E74CF0020C1CF07D +:1026B000010F81F801C07FF40FAF1CF0200F46D04E +:1026C0004FF48071207816F081FB94F801C04CF033 +:1026D000090C84F801C0FFE60CF0FE0C46E74FEA57 +:1026E0000821207816F072FB38E7207816F0A6F95A +:1026F00070E71CF0010F0DD11CF0200F56D04FF4E5 +:102700008071207816F062FB94F801C04CF0090C3F +:1027100084F801C02D4B1B68636196232382DBE69E +:102720008CF0040C1CF0200F4FEAAC03CCF38001BA +:1027300084F801C032D01CF0400F28D00029207846 +:1027400014BF4FF48071012116F040FB69E70121AD +:10275000207816F073F9B8E70902207816F036FBF6 +:1027600038E7002361782373A36001F0EF039A0632 +:10277000637025D503F001015B061CD50029207884 +:1027800014BF4FF48071012116F020FB2EE71B02CD +:10279000207803F4807116F019FB42E7207816F0D8 +:1027A0004DF93EE7207816F049F971E701212078CC +:1027B00016F044F9A8E70902207816F007FB15E7A0 +:1027C00001F00101207816F039F90FE708BB00206D +:1027D00000F54052D2F89C392DE9F043054685B00A +:1027E0003BB12A480168CB1AB2F898198B4244D2FF +:1027F000002341F6460943F62016002441F2D94849 +:10280000A9442E44A844274682F8A43904EB440284 +:102810000221A3B22846CDE9017718F802C00722A9 +:10282000CDF800C0F7F754FA8446E3B201343146DC +:102830004A462846CDF800C0FFF736FE052C06F1C3 +:102840001806E3D105F5805393F8482892B905F5A9 +:102850000053D3F8EC3C5B0309D542F6BC4001229F +:102860000721284405B0BDE8F0430EF099B905B042 +:10287000BDE8F08383F84878EFE7B2F8A049012378 +:102880000168A2F89849C2F89C19B2E708BB002079 +:10289000002070472DE9F04F122189B083469748F8 +:1028A00018F08CF8964815F021FD1D2195484FF041 +:1028B000000918F083F8012193480BF1600A18F021 +:1028C0007DF880218E48C84615F004FD8C4815F02F +:1028D0000DFD1D218D4818F071F801218A4818F06E +:1028E0006DF80A21864815F0F5FC0BF17B0384484E +:1028F000069315F0FBFC1FFA89F75FFA89F3384657 +:102900000793FFF7C5FFB9F1000F40F0B9809BF8BE +:1029100082105C4601F0F00100F00F0001434FEA25 +:10292000890584F8821009EB4906794C6B1C4FF439 +:102930007F010393AB1C0493EB1C0593731C019361 +:10294000B31C0293BBF86030994511D29BF86330F9 +:102950000A0A052B1046DBF8683047D89955090C50 +:10296000DBF86830019A9854029ADBF86830995481 +:10297000504614F045FD192015F0E2FFBBF8603019 +:10298000994511D29BF86330052BDBF868301BD8D2 +:1029900003F80680019ADBF8683003F80280029A97 +:1029A000DBF8683003F80280504614F029FD192046 +:1029B00015F0C6FF574B9C4228D0BBF8603054F846 +:1029C000041F9945C2D3D3E703F80580039ADBF8C7 +:1029D000683003F80280049ADBF8683003F802805C +:1029E000059ADBF8683003F80280DDE75955039853 +:1029F000DBF868301A540A0CDBF86830090E0498CA +:102A00001A54059ADBF868309954B1E7069B13F81D +:102A1000011F0C06069341D501F07F010139C9B2AF +:102A2000092950D83A4B53F82110BBF86000814572 +:102A300010D29BF863000528DBF8680045D8815563 +:102A40000C0ADBF86800090C019BC454029BDBF8FC +:102A50006800C154504609F1010914F0D1FC052069 +:102A600015F06EFFB9F1060F7FF445AF00212A483B +:102A700017F0A4FF224809B0BDE8F04F15F036BCAE +:102A8000079B0BEB5704DB0794F882107FF542AFEE +:102A900001F00F0141EA0010C1B240E7BBF8BE00EF +:102AA000C0F340018007C0D5B9F1000F1ED0079BCD +:102AB0007F08DA071BD55F4497F882100909174B86 +:102AC00053F82110B1E70021AFE741550C0ADBF8BC +:102AD0006800090C039BC454049BDBF86800C154D4 +:102AE000059BDBF8681001F80380B3E74F465F44AD +:102AF00097F8821001F00F01E1E700BF404100208C +:102B0000684C002054410020EC2300207441002038 +:102B1000440F0020480F0020183D00206C0F0020BB +:102B2000052900F28C80FF2A034670B500EB0105F1 +:102B300095F87C4008D07F2A00F0E680104638B92E +:102B4000240600F1848070BD04F00F000028F7D047 +:102B5000260675D40A2A00F0DB8000F07F02013AD5 +:102B6000D2B2092A71D8934C54F82220B3F86040AD +:102B7000A14212D293F86340052C00F2DD809E6ED4 +:102B800001EB41044FEA122C3255120C9E6E264482 +:102B900086F801C09E6E2644B27060F07F0200F09D +:102BA0000F00D2B285F87C2002F001021C68B4F854 +:102BB0004A5045FA01FC0CF0010C94450BD0002A58 +:102BC00000F0CD8001228A401543ADB20122A4F865 +:102BD0004A5084F84C20B4F84E20C0F3400642FA24 +:102BE00001F505F00105B5420BD001258D40002E01 +:102BF00000F0BA802A4392B2A4F84E20012284F851 +:102C00005020B4F85220C0F3800042FA01F505F0DC +:102C1000010585420CD0002800F0A980012000FAAF +:102C200001F10A4392B20121A4F8522084F8541011 +:102C3000B3F8BE2042F00102A3F8BE2070BD704779 +:102C400004F07F04A04285D170BD00228EE7B3F866 +:102C5000BE40A2070ED5002900F0A480CE074FEA9F +:102C6000510240F1A0801A4492F882201209524881 +:102C700050F82200B3F86020914211D293F86320FB +:102C8000052A7AD89C6E01EB4102060AA054000C7A +:102C90009C6E144466709C6E1444A070B3F8BE40E1 +:102CA000002285F87C201A68B2F84A0040FA01F543 +:102CB000ED0707D5012582F84C508D4020EA05002C +:102CC000A2F84A00B2F84E0040FA01F5EE0707D527 +:102CD000012582F850508D4020EA0500A2F84E00F0 +:102CE000B2F8520040FA01F5ED0708D5012505FAC2 +:102CF00001F182F8545020EA0100A2F8520044F099 +:102D00000104A3F8BE4070BD0846FFF7C1FD16E7F9 +:102D1000B3F860209142BFF440AF93F8C22093F81B +:102D2000C140120442EA042293F8C040224393F8BF +:102D30006340052C7FF623AF9C6E160A04F8212011 +:102D4000120C9C6E04EB810466709C6E04EB810493 +:102D5000A27000249A6E02EB8102D4701DE701225A +:102D60008A4025EA020531E722EA050244E701200C +:102D700000FA01F122EA010255E79A6E040A02F80C +:102D80002100000C9A6E02EB810254709A6E02EBE5 +:102D90008102907000209A6E02EB8102D070B3F82D +:102DA000BE407DE70A461A4492F8822002F00F02E4 +:102DB0005DE700BF440F00206C0F002008B50346FC +:102DC00043F65C001844FFF765FD08BD2DE9F84F98 +:102DD00000F58056002341F2B75941F2B858B6F8D1 +:102DE0004A28054641F2B95A00F54054D243D6F874 +:102DF0006C78A6F84A28B6F84E28D243A6F84E2892 +:102E0000B6F85228D243A6F852283A7803EB83004A +:102E100099B202EB421E4FEA830C02EB8E0E704415 +:102E20004FEA421E284410F809B00BF1FF30C728C2 +:102E300000F2C280D6F8000800EBCB0090F8320018 +:102E400096449C4402EB8E0262442A4412F808C065 +:102E50000CF1FF3EBEF1C70F40F2918012F80AC09C +:102E60000CF1FF32C72A40F2B080002874D0012054 +:102E7000002B76D194F8DE289C4602F0F00200F098 +:102E80000F0010430133A444062B8CF8DE08BCD19C +:102E900043F65C080027A844B9B201370022404637 +:102EA000FFF73EFE062FF7D10023D4F85C0843F667 +:102EB000D801B4F81A29A0F84A30A0F84E3002F030 +:102EC0000202A0F85230C4F8E83842F00102C4F817 +:102ED000F038C4F8F838C4F80039C4F80839C4F830 +:102EE00010396B5029448B80C8F8B830A8F8BC3032 +:102EF000D6F8FC17A4F81A294968C1F38041B1EB50 +:102F0000520F27D099421E460CBF01230323A4F879 +:102F10001A3943F6D7042C440AE0954206F101061B +:102F2000257014BF2A46FF22FFF7FAFD062E11D0A6 +:102F300014F8013FB1B24046002203F07F0563F070 +:102F40007F071B06E9D4B1B201362770FFF7E8FD11 +:102F5000062EEDD1BDE8F88F0846FFF799FC002B4F +:102F600088D004EB51024FEA510CC90792F8DE28D1 +:102F700083D502F00F0242EA0010C0B282E712F8D5 +:102F80000AE0D6F800280EF1FF3B02EBCC0CBBF1B7 +:102F9000C70F9CF832C011D802EBCE0292F8322053 +:102FA000F8B1BCF1000F17D00320002A3FF460AF46 +:102FB00040F00400C0B25BE7002041E7D0B1BCF1B3 +:102FC000000F14BF0320012052E7D6F8002802EBBF +:102FD000CC0292F8322048B1002A14BF052001200B +:102FE00046E7BCF1000F01D00220DEE7002AB3D093 +:102FF00004203DE7BCF1000FAED0022038E700BF4F +:103000002DE9F04F00F5805387B043F65C0A43F694 +:10301000D808049343F6E40300260746C318824405 +:1030200080440593049B41F2B65106EB860243F6B9 +:10303000E809D3F86C0885231FFA86FB002405787D +:10304000B94413FB051515443D44E3B20E22022199 +:10305000384602930023019315F8013F00935B4625 +:10306000F6F736FE01286AD9022873D0032800F04B +:103070008B80FF280ED098F800200123410702F032 +:10308000070203FA04F362D51A43D2B259465046F6 +:10309000FFF746FD0134032CD7D1013608F10108B2 +:1030A000062EBFD143F614160025059C3E44DFF8DA +:1030B0003881A94663689BB1D8F800202188D31ACB +:1030C0008B420DD3C4F80490A9B216F83C3C50468C +:1030D000327803F007035A40FFF722FD86F800908C +:1030E000013508340136062DE4D107F54054B4F813 +:1030F0001A39DA070DD523F001030AF16000A4F8AC +:103100001A3914F07DF9B4F81A3923F00C03A4F835 +:103110001A39049A92F84C38002B53D192F850384F +:10312000002B3ED192F85438002B57D107F50053AD +:10313000D3F8EC3C5B033BD407B0BDE8F08F98F8C4 +:103140000020012302F00702A34000289CD122EABC +:1031500003029BE7012298F83C3059465046A240B2 +:10316000D2B2134388F83C3098F800301A4388F8FC +:103170000020FFF7D5FC9623059A22F836301A4B2B +:103180001B6849F8363085E798F800200123594636 +:103190005046A34002F007021A43D2B2FFF7C0FC28 +:1031A00078E70499002291F8543881F85028ABB997 +:1031B00042F6BC4001220E21384407B0BDE8F04F72 +:1031C0000DF0EEBC0499002291F8503881F84C289B +:1031D000002BE6D191F85438002BE9D00023049A53 +:1031E00082F85438E4E700BF08BB002000F58053A4 +:1031F00093F868299107C2F3400004D522F0020237 +:10320000012083F86829704701EB41138C4601EBDC +:103210008303034403F5AB53F0B51B7800248BB054 +:103220008646013B059408948DF82440CDE9064478 +:1032300014469AB27F2A23D800F5805203EB031379 +:103240006F46D2F800683D461E44D6F88436D6F85C +:103250007806D6F87C16D6F880260FC596F88836FC +:103260002B709DF80030B3B90EF5805E0D492046F5 +:103270009EF8082862440BB0BDE8F04019F0C0B9D0 +:103280006F4605AE3D460FCE0FC533682B709DF8D7 +:103290000030002BE8D03946204619F0A5FD0BB0D0 +:1032A000F0BD00BF441D00202DE9F04F00F5805A0D +:1032B00015460C468FB0DAF86C2881461178A14289 +:1032C00002D0002B00F0078114701421AC4817F0D5 +:1032D00075FB0121AB4817F071FBDAF86C38AA488E +:1032E0001978013114F0F6FF0121A64817F066FBAA +:1032F0000121A64817F062FB0121A24817F05EFBEE +:10330000DAF86C280023A04811780A2215F00AF890 +:1033100001219C4817F052FB01219D4817F04EFBFC +:1033200042F6BC4398481C4614F0E0FF09EB040346 +:103330001C460393DAF86C382046197805F074FCC3 +:10334000012120460DF008FB002D40F0FE8048468C +:1033500043F6C744FEF7F8FB43F695334C44FF2091 +:103360004B4400224FF0000103F8010CDA772233BE +:1033700003F8222C03F8182C03F80B2C03F80A2C62 +:1033800023F8092C03F8071C23F8052CA342E9D1E4 +:1033900043F6C84343F6685409F540564FF6FF72AA +:1033A0004B444C4400257B4F4FF0010886F8DC0C61 +:1033B00086F8DD1C86F8DE1C86F8DF0C86F8E01C3B +:1033C00086F8E11C86F8E20C86F8E31C86F8E41C1B +:1033D00086F8E50C86F8110D86F8E61C86F8E71CE1 +:1033E00086F8141DA6F8122DA6F8162D86F8182DAD +:1033F00083F8511083F87210E9B24B1E042B00F2CF +:10340000BD80DFE803F00358560454002021E02378 +:10341000384687F8308187F8A53087F82F8110F07B +:1034200007F90121384610F011FAD6F85C3B05EB9C +:10343000450ED6F8602B5B7A41F2D45C0121204620 +:1034400003EB431B0D4403EB8B0373441A4412F844 +:103450000CB011F093FB4FF6FF73FF221BF0020F2D +:1034600004F809BC04F8082C24F8063C24F8043CB1 +:1034700023D1062D04F13804BED1B6F87C330022E6 +:1034800023F00803A6F87C33FF2386F8CC37DAF85C +:103490007C38C6F88C231BB1DAF86C281078984772 +:1034A0009AF868399B0740D40FB0BDE8F08F02212D +:1034B000ADE70821ABE71021A9E714F80C3C002286 +:1034C000CDF80480204614F80BCC1146CDF800C08E +:1034D00010F0E2FCCDE7CDE90933CDE90B338DF8EF +:1034E00034309AF8683943F002038AF8683913785F +:1034F00003EB431203EB8203034403F5AB531B7846 +:10350000013B9AB27F2A24D90DF1100C09AF66460F +:103510000FCF0FC63B6833702246634601214846F1 +:1035200002F0C4FEDAF86C28CEE6039805F068FBDA +:103530000028B9D009F50059D9F8EC3C43F48023B0 +:10354000C9F8EC3C0FB0BDE8F08F4846F1F71EF823 +:10355000FDE603EB0313DAF800780DF1100C1F44BD +:103560006646D7F88436D7F87806D7F87C16D7F8A9 +:1035700080260FC697F888363370CDE7012146E7DD +:10358000042A0020EC230020684C00203C2400206A +:103590001C2B002018B10020042902D9012B00D0D7 +:1035A0007047FFF781BE00BF00F580510123D1F8BD +:1035B0006C181A460978FFF777BE00BF10B500F502 +:1035C00080549DF808C0D4F86C48634594F800E036 +:1035D0009DF80C4012D30CF1FF33DBB2032B4FF0FC +:1035E000000301D94FF0040C71B1A6443AB3E6458B +:1035F00027DD9C46BCF1040F11D910BDBCF1040FAE +:10360000F2D94FF0040CEFE7AEEB040E72B99E4511 +:10361000B8BF9E465FFA8EFCBCF1040FEDD80023C4 +:1036200061461A46BDE81040FFF73EBE9E45F1DAFE +:10363000002361461A46BDE81040FFF735BEE64557 +:10364000EDDC9E45A8BF5FFA8EF39C46D2E700BF33 +:1036500000F58053D3F86C38197821B10139C9B21B +:10366000042901D97047042100231A46FFF71CBE24 +:1036700000F58053D3F86C381978032905D8013147 +:103680000023C9B21A46FFF70FBE002300211A46D5 +:10369000FFF70ABE70B500228AB04FF4604C0446B2 +:1036A000034600F1480180F8D120C0F8D42083F807 +:1036B000E120083383F8DA2083F8DB2083F8D42074 +:1036C000A3F8D6C083F8D8208B42F0D10120A36C98 +:1036D00084F8D000D3F88C3003B19847012600233A +:1036E000094D0DF1140C0096CDE901360FCDACE873 +:1036F0000F002A6812233146206CACF8002005AA7E +:103700000DF00EFF0AB070BDF00800204FF07F0CE6 +:1037100002EA0C0201EA0C0102703F22417000B57E +:1037200003EA0C0E1CFB0323434A80F802E0A2FBD1 +:1037300003C29B1A02EB530292093F3A42600B29E3 +:1037400074D8DFE801F01B21272D33393F454B5159 +:1037500057063A4B1A889B7802818372384BFA22BB +:10376000BEF13D0F1B688281036149D8BEF1290F6C +:103770008CBF05230723C3725DF804FB314B1A8805 +:103780009B7802818372E9E72F4B1A889B7802812C +:103790008372E3E72D4B1A889B7802818372DDE701 +:1037A0002B4B1A889B7802818372D7E7294B1A88A2 +:1037B0009B7802818372D1E7274B1A889B7802811C +:1037C0008372CBE7254B1A889B7802818372C5E709 +:1037D000234B1A889B7802818372BFE7214B1A889A +:1037E0009B7802818372B9E71F4B1A889B7802810C +:1037F0008372B3E71D4B1A889B7802818372ADE711 +:10380000BEF1400F03D80123C3725DF804FBBEF183 +:10381000540F03D80923C3725DF804FBBEF1690F8E +:1038200094BF19233923C3725DF804FB104B1A8827 +:103830009B780281837291E71108040248190020E5 +:1038400008BB00201C19002020190020241900208A +:10385000281900202C1900203019002034190020CC +:10386000381900203C19002040190020441900207C +:103870004C1900202DE9F84304460D46174612F076 +:1038800095FBD4F80427A368D06D003BC0F3C001BA +:1038900018BF01238B420BD1A3682BB10021204616 +:1038A00013F0E0F90646A8B900263046BDE8F883D3 +:1038B000A36863B140F00800D4F80037D065D3F8AE +:1038C0008430002BE8D0C0F3C0009847E4E720F034 +:1038D0000800F1E705F105090021FE224846884667 +:1038E00019F00EF8202385F8018085F8028085F80C +:1038F000038085F804802B7094F8563003F1080299 +:103900006B70D2B2072A10D8DD23D340DB073ED537 +:10391000002FCAD0FE2241464846464618F0F0FF26 +:10392000012385F801802B70BFE794F85720EF2B17 +:10393000EA7094F858202A710CD8B02B06D01CD805 +:10394000A02B03D003F0EF03802BAED194F85530B9 +:10395000AB70AAE7F02BA8D185F8038085F8048026 +:10396000B4F85770FE2F0FD89FD004F15901484684 +:103970003A4615F003F9EF7097E7E02BE6D003F035 +:10398000EF03C02B91D1E1E785F801808DE794F832 +:103990005730EB7094F858302B7186E7F0B54B78C0 +:1039A0000C460A78C3B08978EBB1202A054662D06C +:1039B0001BD8012A32D0022A15D100F5805696F87C +:1039C000A42296F8A50296F8A36266B1B02B1FD088 +:1039D00018D9E02B1CD003F0EF07C02F18D0F02B24 +:1039E00027D190072BD443B0F0BD402AFBD100F57E +:1039F000805696F8B32296F8B40296F8B262002E7A +:103A0000F1D0E3E7A02B03D003F0EF07802FEAD13A +:103A1000D707E4D598B18842E5D110E000F580568B +:103A200096F8A12296F8A20296F8A062002EDAD0AB +:103A3000CCE7F32B36D9F62B28D15307D3D5D5F8BD +:103A400004311B6D23B13146204698470028CAD067 +:103A50000023276804F1080168463F93FB2263684E +:103A6000419315F08BF83A46419B314628460FF0BA +:103A7000C3FB43B0F0BD00F5805696F8B02296F82F +:103A8000B10296F8AF62002EADD09FE70833DBB2EB +:103A9000072BA8D8DD2121FA03F3D907A3D51207F4 +:103AA000A1D5CCE7F02BC8D89DE700BFF8B50446F8 +:103AB0000D46164614F098FFA36B206333B19D4A60 +:103AC0001268D31AA28E934280F08A80237D13F06D +:103AD00001072CD1002E7FD1002D34D0226811781F +:103AE00092F82E2911422ED04FF4FA62914EA4F88A +:103AF0004C2043F008022275326822652AB13168F1 +:103B00008A1AB2F5FA6F80F0D8800023237194F8F6 +:103B10003C30002B00F0FD800C2BA27F40F08B800E +:103B200042F00102A277013384F83C300CE043F00C +:103B30000801A26C21754AB914F056FFA2692369E5 +:103B4000801A834256D900273846F8BD7948006864 +:103B5000821AB4F844008242EED30022A589A264FE +:103B6000CA07E9D5A5F11E02B2F5877FE4D8A2689D +:103B70001288AA4202D043F00C03237517216E4825 +:103B800016F01CFF01216D4816F018FF29466C48FD +:103B900014F0A0FB0121694816F010FF03216948C9 +:103BA00016F00CFF0121654816F008FFA368644871 +:103BB000198814F08FFB624814F098FB624B634A3B +:103BC000A168B3FBF5F3A2FB03230D801B0923615E +:103BD00014F00AFFA061AFE7277184F83C707BE71F +:103BE0000023A36384F83C3084F8283023626362A6 +:103BF000A3776BE713442068F822A361002390F8B1 +:103C00002D190DF085FC23790133DBB20C2B2371C8 +:103C100005D1237D002743F01003237594E7227D0F +:103C2000172B02F0EF0222758DD9002342F0120209 +:103C30002371227588E7172B02F0FE0243D942F068 +:103C40000102A27714F0D0FE236CC01A07EE900A8E +:103C50009FED344BB8EE677B9FED345B87EE046BD2 +:103C600085EE067BB8FE477BBDEEC77B17EE103AAC +:103C70009BB2A3F11E02B2F5877F98BFA38314F015 +:103C8000B3FE0123A28B84F83C30A368206419881A +:103C9000914244D06421A4F844103168A1641A8090 +:103CA000237D43F00203237529B133685B1AB4F80E +:103CB00044108B4209D22F4646E723F008032375B0 +:103CC0000023236521E7A2772DE7A38900219342F2 +:103CD000A164F0D0A28107211D482F4616F06EFE88 +:103CE0000121164816F06AFEA3681548198814F0D9 +:103CF000F1FA0121114816F061FE0821154816F06D +:103D00005DFE0F4814F0F2FA237D43F0040323759F +:103D10001AE714F069FE94F83C302064FCE6A16CCC +:103D2000BDE700BF0000000000408F400000000021 +:103D3000004CED4008BB0020E0180020EC230020E0 +:103D4000684C0020F818002000879303ABAAAAAAA9 +:103D5000FC180020CC1D002084B0F0B5ADF5017D2D +:103D6000044687AD85E80E009DF82632BDF81F6237 +:103D7000132B17D8DFE803F077161C161616161645 +:103D800016161616161616160A233660A36CD3F8E6 +:103D900090403CB18BA9F322684614F0EFFE95E801 +:103DA0000F00A0470DF5017DBDE8F04004B070475D +:103DB0000DF5017DBDE8F04004B0FFF76BBC082EA7 +:103DC000F0D99DF827229DF82832511E3D2902D8AE +:103DD000825C80F8CB205A1E3D2AE3D8E35C84F84D +:103DE000CA30DFE7294640F203123FA814F0C6FEAE +:103DF000711E9DF807310729C8DD0722C3F1080CA1 +:103E000008E086F8582003EB0C02013392B29BB213 +:103E10008A42BBDA3FA8E61802445279A2F1200098 +:103E20005E2888BF2022372BEBD9702B04EB0300D0 +:103E300098BF80F85920E6E7164B01263FAD0027D2 +:103E40000296009693E807000C2385E80700206C93 +:103E50002A46314601970DF063FB0DF5017DBDE863 +:103E6000F04004B0704700230B4E01273FAD019393 +:103E7000029700970FCE0FC533683FAA3946206CD2 +:103E80002B8012230DF04CFB0DF5017DBDE8F040B9 +:103E900004B07047180900200409002084B030B530 +:103EA00083B004460DF11C0C8CE80E00637BBDF85A +:103EB0001F10DD079DF81F009DF820C09DF81D20F4 +:103EC00004D5657E9DF81CE0754504D003B0BDE8BF +:103ED000304004B07047EF2A21D802F0F002B02A37 +:103EE000F4D1227E9DF81E309A42EFD16628EDD1A2 +:103EF0000E2184F81AC04F4816F060FD01214E488B +:103F000016F05CFD00230A22A17E4C4814F00AFA48 +:103F10004A4803B0BDE8304004B014F0E7B9F82ACD +:103F200009D1474A43F002034FF4FA611268637300 +:103F300021826261CAE7FA2A11D1227A2AB1627A11 +:103F40001AB1022243F00803227323F01003112157 +:103F50003C4843F00403637316F030FDD8E7FC2AB5 +:103F600008D123F06403002243F01003227362831C +:103F70006373ABE7F02A9DF822309DF823509DF83B +:103F800024009DF825C0A1D1A3F17F030A29B3FA2B +:103F900083F34FEA531398BF00237F2D14BF0023F0 +:103FA00003F00103032814BF002303F00103002BD7 +:103FB0008CD0BCF1020F89D19DF828309DF82910D2 +:103FC0005B429DF82720A17207EE903A217A9DF876 +:103FD0002A30B8EEE77B8A42E372607A27EE077BED +:103FE0002272FCEEC77BCDED017A9DF8043063723E +:103FF00002D198423FF46AAF1821134816F0DEFC54 +:1040000001210D4816F0DAFC00230A22217A0B4820 +:1040100014F088F90121084816F0D0FC01210B4862 +:1040200016F0CCFC0121044816F0C8FC00230A223B +:10403000617A6AE764180020EC230020684C0020B5 +:1040400008BB00207418002088180020A418002045 +:1040500084B02DE9F04F2DED028BADF5117D9DACB7 +:1040600084E80E009DF87562002E00F09C8006F139 +:1040700008039DF87722054600F5805BDBB23F928E +:10408000072B2FD8DD2222FA03F3D8072AD5A6F171 +:10409000F80143F2A010FA2EB246B1FA81F1284499 +:1040A0004FEA511140F02C8201220021FFF7FEFC63 +:1040B000002840F0FF802846F0F7ACFF284602F0C9 +:1040C0003DFB9DF874229DF87632012A9DF8789286 +:1040D0002BD105F5405797F82023D20725D50DF5AC +:1040E0009E7853E1DBF85C38EF2E43F00103CBF808 +:1040F0005C38CCD8002243F2A01006F0F00A284425 +:104100001146FFF7D3FC002840F004822846F0F760 +:1041100081FF284602F012FB9DF874229DF876324A +:10412000012A9DF8789200F09B8005F549530DF522 +:104130009E783E9340F203129DA9404614F01EFD66 +:1041400098F80130F02B04D1B8F80390B9F1040FBE +:104150004CD83E9BF722A0A9684603F5AE6714F041 +:104160000DFD9DAB38460ECBFFF798FE9BF8CC3A81 +:10417000DF0709D59BF8C13903F0F003B02B00F03D +:104180009581C02B00F09281BAF1F80F13D031065F +:1041900016D4A0A9F722684614F0F0FC9DAB28467F +:1041A0000ECBEFF70DFB0DF5117DBDEC028BBDE8DD +:1041B000F04F04B07047DBF8AC3853B19847E8E7EC +:1041C0000C36F6B2092E04D840F20B23F340DC077C +:1041D000DFD4DBF8A868002EDBD0A1A9F322684663 +:1041E00014F0CCFC9DAB0FCBB047D2E798F806207B +:1041F000002AAED198F80730012BAAD198F80830E0 +:10420000742BA6D198F80A10A1F11003012B00F22B +:10421000318505F54057102900F0778597F89333DD +:10422000DA0796D53E9B0A3903F59A73409309291C +:104230008FD801A353F821F00766010071650100D2 +:104240001165010047640100AB6301004D6301008B +:10425000C75D0100F5610100C75D0100B7620100A3 +:104260000DF59E7805F5405797F82023D20740F1C9 +:104270001981BAF1B00F40F085803F9BA3F1300067 +:10428000C0B2072800F26186D7F8983207EBC00762 +:1042900087F83093D3F8A470002F00F00381C9F39E +:1042A0000113C9F3801209F00F01B84705F549530E +:1042B0003E933FE72846F3F7CDFEDBF8B038002BFE +:1042C0003FF424AF9847FE2E09D1A84B05F540577F +:1042D0001B68C7F804324FF4FA73A7F80032284677 +:1042E0000DF59E78F0F796FE284602F027FA40F288 +:1042F00003129DA9404614F041FC9DF874229DF8DC +:104300007632012A9DF878929DF87A129DF87B0208 +:104310009DF87C429DF87DC240F0C480BAF1F00F58 +:10432000A0D13F9F47EA092EBEF1060F40F2BA80A6 +:10433000014340F0B780662C40F0B480BCF1100F10 +:1043400040F0B08088F8023068463F9B88F8002033 +:1043500088F8033005F54953A8F8061052A91A4603 +:104360003E9341F2660388F8049002F11007F722A9 +:10437000A8F8083014F002FC384698E80E00FFF761 +:10438000EBFCD7E6BAF1D00F00F0AE852AF01002B0 +:10439000802A5BD13F9B072B40F2B5863F9BA3F160 +:1043A0000800C0B2072840F2EA863F9BA3F1100044 +:1043B000C0B2072840F26C873F9B183BD8B2072851 +:1043C00040F2D1873F9B283B3D2B6BD8DFE813F0B1 +:1043D000ED03A503C9038103DB0393036A006A00AD +:1043E0006A006A00B7036F036A006A006A006A0025 +:1043F0006A006A006A006A006A006A006A006A006D +:104400006A006A006A006A006A006A006A006A005C +:104410006A006A003E04F6031A04AE032C04D203B9 +:1044200008048A036A006A003504E40311049C034B +:104430002304C003FF037803660354035D034B03A7 +:104440006A006A006A006A0042032603BAF1E00FBC +:1044500028D1013B4FEAC912D8B23F9B02F47E52E9 +:1044600003F07C0141F6FC43082841EA020143F6CF +:10447000FB1211FB02313E4B4FEAD101A3FB01318C +:104480004FEA1121A1F500510BB200F0B98703D812 +:1044900007EBC002A2F82E33D7F89832D3F8A83031 +:1044A00003B1984705F549533E9343E60BF5805316 +:1044B00093F8EF3223B19BF8C2299A427FF464AE9D +:1044C00005F500539BF8C02993F8ED321A423FF4EA +:1044D0005BAEBAF1C00F7FF457AEDBF8FC379B68D8 +:1044E00003F00303022B1ED0032B26D0012B7FF4F5 +:1044F0004EAE00233F9928461A46FFF74DF846E690 +:10450000A6F1FB02B2FA82F25209FFF7CFFA0028B5 +:104510003FF4D9AE2846F3F79DFDDBF8B038002B09 +:104520007FF4D0AECFE63F9943F20C20002301F098 +:1045300007022844C908EAF709FA0B210D4816F0CA +:104540003DFA01210C4816F039FA3F9C00230A225B +:1045500021460A4813F0E6FE084813F0C7FE43F26E +:10456000202021462844EAF7F3FA10E608BB002091 +:10457000415254238C1E0020EC230020684C002064 +:10458000D7F8782343F2B84998F80B10D36DA944B3 +:104590000C4623F001034846D36598F80C2098F8A0 +:1045A0000D8008EE102A4346FFF7B0F897F8C334A1 +:1045B000DA070FD4D7F87433D3F80431D3F8E030E6 +:1045C0000BB1012098471221AE4816F0F7F9AE481A +:1045D00013F08CFED7F87433D3F80431D3F8E430F9 +:1045E0000BB148469847D7F87833B3F86030DB050D +:1045F0007FF5AFAD1321A54816F0E0F90121A448DD +:1046000016F0DCF900230A2221469F4813F08AFEA7 +:1046100001219F4816F0D2F9002318EE101A0A2241 +:10462000994813F07FFE0121994816F0C7F94146D9 +:1046300000230A22944813F075FE934813F056FEA7 +:1046400087E508EB090397F8B424DB789A4287F8EA +:10465000B43407D0D7F87433D3F80431D3F8DC304E +:1046600003B19847A9F102031FFA83FEBEF1060FBA +:1046700040F2F08443F2CC404FF0060C54462844FC +:1046800008E00CF1030C08F103081FFA8CF39E45B7 +:1046900040F2DF840CF101039945F2DD98F80C102B +:1046A00098F80B30C90198F80DA003F07F0301F0D2 +:1046B00080011943A1F12503DBB29F2BE1D8002330 +:1046C00002E001335B2BDCD010F833208A42F8D1B2 +:1046D0003B4483F859A4D4E798F80B804FF00009C5 +:1046E000D7F8783387F8978387F89893B3F86030D2 +:1046F000DB057FF52EAD1021664816F05FF94B46BD +:1047000041460222604813F00DFE5F4813F0EEFDB3 +:1047100097F89733DC0700F19186980700F18386BC +:1047200059077FF516AD16215B4816F047F9564834 +:1047300013F0DCFD0DE5A9F10B0346A9DAB2002365 +:104740000C46012A41928DF82831CDE94633CDE956 +:10475000483308D9112A28BF112211460732D2B294 +:104760004A45C0F2C68598F80B80B8F1070F00F2F1 +:10477000258497F8B63443F2D13921467F2B4FF088 +:10478000110303FB085308BF87F8AE8399444846DA +:1047900018F05AF9A0EB090083B2002B00F00E8448 +:1047A00018464B4413F8012C202A40F007840028B7 +:1047B00000F00484002104E000F200844B4500F086 +:1047C000FD8313F8012D002AF8D0202AF4D11970A6 +:1047D000F4E746AB00211D2247A81C46469118F07D +:1047E0008FF8A9F10B03DBB2012B419304D90833F5 +:1047F00000214B45C0F2648598F80C2098F80B30E6 +:10480000D20103F07F0302F47E521343B3F5806FAD +:1048100080F22F84B7F8AC139AB2994205D097F87A +:10482000B53443F0010387F8B53443F2B03821467C +:10483000A7F8AC23A844404618F006F9A0EB0800FE +:1048400083B2002B00F015849844184618F8013CF8 +:10485000202B40F00E84002800F00B8443F2B0318E +:10486000084429442B18002004E000F202848B4203 +:1048700000F0FF8313F8012D002AF8D0202AF4D18C +:104880001870F4E7641E0020684C0020781E002099 +:10489000EC2300200C1E00204C1E002098F80B80FA +:1048A000B8F1070F0ED897F8AE3387F8AE834345BB +:1048B00008D0D7F87433D3F80431D3F8D8300BB11B +:1048C000404698474FF0000940987F220E214B4602 +:1048D000CDF80090EAF742FFD7F87833B3F86030AC +:1048E000D8057FF536AC1321DD4816F067F80121B5 +:1048F000DC4816F063F84B4641469AE6B9F1070FDB +:1049000000F27184002143F2CC4398F80D904FF0EF +:1049100000082B4404E008F10108B8F15B0F6CD0EB +:1049200013F838208A42F6D107EB08024FEA490112 +:1049300092F8593401F00E0123F00E030B4382F874 +:104940005934D7F87833B3F86030DA0555D51B21E0 +:10495000C54816F033F80121C24816F02FF8409BE5 +:1049600003EBC80808F25918404618F02FFB01461F +:10497000404616F023F80121BA4816F01FF84946C0 +:1049800000230A22B94813F0CDFCB84813F0AEFC5E +:1049900033E0B9F1070F00F21284002143F2CC4357 +:1049A00098F80D904FF000082B4404E008F101083E +:1049B000B8F15B0F21D013F838208A42F6D107EB0B +:1049C000080393F85924B9F1000F00F0C68342F0B0 +:1049D000010207EB080383F85924D7F87813B1F8DC +:1049E0006010C80500F11284B844B9F1000F00F05E +:1049F000AF8342F0010288F859249D4B4FF4FA62CC +:104A0000A7F8A4231A681B68C7F8A823C7F8A0331F +:104A100041F28833A7F89C33FFF79BBBD7F82433C8 +:104A2000B9F1000F00F03E8543F00053C7F824337E +:104A3000D7F89832D3F8C030002B3FF433ADB9F13A +:104A400000013F9818BF0121984705F549533E934F +:104A5000FFF770BBD7F82433B9F1000F00F02685BB +:104A600043F08053E2E7D7F82433B9F1000F00F0A8 +:104A7000258543F00063D9E7D7F82433B9F1000F57 +:104A800000F0188543F00073D0E7D7F82433B9F16C +:104A9000000F00F0178543F08063C7E7D7F8243391 +:104AA000B9F1000F00F0128543F08073BEE7D7F82C +:104AB0002433B9F1000F00F0298543F08003B5E7F6 +:104AC000D7F82433B9F1000F00F0108543F4000348 +:104AD000ACE7D7F82433B9F1000F00F0378543F085 +:104AE0000803A3E7D7F82433B9F1000F00F0F684E8 +:104AF00043F400439AE7D7F82433B9F1000F00F0EC +:104B0000158543F0200391E7D7F82433B9F1000F5E +:104B100000F0F48443F4002388E7D7F82433B9F194 +:104B2000000F00F0238543F002037FE7D7F824331A +:104B3000B9F1000F00F0CE8443F4006376E7D7F8B4 +:104B40002433B9F1000F00F0E98443F040036DE72E +:104B5000D7F82433B9F1000F00F0CC8443F40013EC +:104B600064E7D7F82433B9F1000F00F0F78443F07D +:104B700004035BE7D7F82433B9F1000F00F0B284E7 +:104B800043F4005352E7D7F82433B9F1000F00F093 +:104B9000D58443F0100349E7D7F82433B9F1000F67 +:104BA00000F0B08443F4003340E7D7F82433B9F180 +:104BB000000F00F0E38443F0010337E7D7F8243314 +:104BC000B9F1000F00F0A68443F400732EE7D7F884 +:104BD0002433B9F1000F00F0BD8443F4800325E7CE +:104BE000D7F82433B9F1000F00F0A48443F48043D4 +:104BF0001CE7D7F82433B9F1000F00F0BB8443F46D +:104C0000802313E7D7F82433B9F1000F00F08A842A +:104C100043F480630AE7D7F82433B9F1000F00F0BA +:104C2000A18443F4801301E7D7F82433B9F1000FCE +:104C300000F0888443F48053F8E6D7F82433B9F1C0 +:104C4000000F00F09F8443F48033EFE6D7F824335D +:104C5000B9F1000F00F0228443F48073E6E600BF50 +:104C6000A81D0020EC230020F01D0020684C00202F +:104C700008BB002008EB090350AFD8780DF59F73EF +:104C800003EB090C17F8013F03F07F03674582EA45 +:104C90000302F7D105F54057D7F87833B3F8603001 +:104CA000DC0553D590423FF4B6AA0DF5A07810214B +:104CB000B74815F083FE08EB09034946B5481C4682 +:104CC00013F008FB0221B44815F078FEDFF8E492F7 +:104CD000CDF800A1A24618F8011F00230A22AD4812 +:104CE00013F020FB0121484615F068FEC245F2D1C1 +:104CF0000121AA48DDF800A115F060FEA54813F0D7 +:104D0000F5FAA74B4FF4FA727AE697F8931311F07D +:104D100001011FD0D7F87813B7F87C33CA6DA048CB +:104D200043F0040322F00102CA65A7F87C3303684C +:104D3000C7F8A0330368C7F8843341F28833A7F873 +:104D40009C334B23A7F88033FFF703BA90423FF41C +:104D500062AAD6E7934815F031FE8E4813F0C6FAE2 +:104D60001221914815F02AFE8A4813F0BFFA97F8ED +:104D7000933398F8092013F0010319D1A2F110011F +:104D800098F8000002293FF6E4A987F8973387F8DE +:104D90009833C7F8A033C7F8A8334FF4007387F8E7 +:104DA0009023A7F89433072387F8910387F8933368 +:104DB0004FF6FF7243F2D13343F25941A7F8AC23C7 +:104DC0002B4487F8AE232944002287F8B52403F842 +:104DD000112B8B42FBD143F2AC30002128440271ED +:104DE000AD305B2217F08CFDFF2387F8B43487F8D1 +:104DF000AF3397F89033112B00F0FC82122B00F0A8 +:104E0000AD82102B00F08E820DF58478002165486C +:104E100015F0D4FD5F4813F069FA2E21634815F0B0 +:104E2000CDFD5C4813F062FA2E21604815F0C6FDF6 +:104E3000584813F05BFA00215A4815F0BFFD554859 +:104E400013F054FA0C215A4815F0B8FD01215948C5 +:104E500015F0B4FD404618F0B9F80146404615F08B +:104E6000ADFD0121534815F0A9FD0221524815F06E +:104E7000A5FD01214F4815F0A1FD46A897F8911313 +:104E8000ECF720FE46A9434813F0FEF9414813F021 +:104E90002DFA46A813F02AFB0021424815F08EFD9A +:104EA0003C4813F023FA2E21404815F087FD39487D +:104EB00013F01CFA2E213D4815F080FD354813F003 +:104EC00015FA0021374815F079FD324813F00EFA33 +:104ED000D7F87433D3F80431D3F8CC300BB10120B8 +:104EE00098472F4B0A228BE5012B7FF4DBAA3F99D1 +:104EF00043F22032C1F3021001F00F012A44C30033 +:104F00000E2903F1110300F0BB820F2900F0AA82E1 +:104F10000D2911D005EBC00C0CF5405C9CF832E378 +:104F20008E4507D08CF8321312F803E04EF0020ED3 +:104F300002F803E08CF83313D7F89832D3F89C309A +:104F4000002B7FF481ADFFF7ADBA3F9B4A2B00F0F9 +:104F500007813F9B4B2B00F08C813F9B03F0F003BC +:104F6000402B7FF49FAA3F9B03F00F0009283FF6D8 +:104F700099AAD7F89832D3F8C430002B3FF492AAFC +:104F80004946984705F549533E93FFF7D3B800BF0C +:104F90004C1D0020684C0020C8230020DC1F00208E +:104FA00008BB0020183D0020601D00206027002065 +:104FB000801D0020EC230020C0380020B7F87C239F +:104FC000D106C2F3001340F11A8197F8B634062BCC +:104FD00000F201810133DBB29AB287F8B6340023C4 +:104FE00040980E210093EAF7B9FBD44BD7F8782309 +:104FF00019681B68B2F86020C7F8A0334FF4FA6351 +:10500000D005C7F8A813A7F8A43341F28833A7F84E +:105010009C337FF59EA81821C94815F0CFFC0121CB +:10502000C84815F0CBFC414600230A22C64813F0BD +:1050300079F90121C34815F0C1FC204617F0C6FFDD +:105040000146204615F0BAFCBF4813F04FF9FFF7B0 +:1050500080B8A246D7F87833B3F86030D9057FF529 +:10506000CCAC1421B94815F0A9FCB74813F03EF9AF +:10507000C3E497F8B52412F001035CD0002322F0BA +:10508000010240980E2187F8B5241A4687F8B634F5 +:105090000093EAF763FBD7F87433D3F80431D3F8FD +:1050A000D020B7F87C3343F01003A7F87C3332B13B +:1050B000B7F8AC03B0F5806F28BF002090479F4B36 +:1050C000D7F8782319681B68B2F86020C7F8A033B6 +:1050D0004FF4FA63C7F8A813A7F8A43341F2883352 +:1050E000A7F89C33D3057FF534A81421984815F010 +:1050F00065FC0121934815F061FCB7F8AC139248A8 +:1051000013F0E8F895E7B9F1000F00F0A98001333A +:1051100007EBC30292F8242342F0010207EBC3031A +:1051200083F82423D7F89832D3F8BC30002B7FF4CF +:1051300086ACFFF7B7B900937F2240980E21EAF7BB +:105140000DFBB7F87C3323F01003A7F87C33B6E7E8 +:1051500022F0010288F859244FE402F0FE0238E4FC +:1051600009F1FF333D2B3FF69DA9B94499F8503220 +:1051700087F81B3305F549533E93FEF7DBBF431C0D +:1051800007EBC30292F82423B9F1000F00F0C780A7 +:1051900042F0020207EBC30383F82423D7F89832C6 +:1051A000D3F8B430002B3FF47DA9B9F1000118BF4A +:1051B0000121984705F549533E93FEF7BBBF98F888 +:1051C0000C3098F80B10DB0101F07F0103F47E53E3 +:1051D0001943FFF7E3BB22F01002A7F87C237F22DC +:1051E00087F8B624FBE698F80C3098F80B10DB0132 +:1051F00001F07F0103F47E531943FFF784BB40980D +:105200001A4613210093EAF7A9FAEEE61A2151484B +:10521000419315F0D3FB01214A4815F0CFFB409B89 +:1052200003EBC80202F259121046409217F0CEFE6C +:10523000409A0146104615F0C1FB0121414815F086 +:10524000BDFBB9F10001404818BF012113F042F83D +:105250003D4813F04BF8419B93F85924FFF7C4BB2A +:105260003F9B013307EBC30292F8242302F0FE02B6 +:1052700054E709F1FF333D2B3FF614A9B94499F8DF +:10528000503287F81A3305F549533E93FEF752BF63 +:10529000431C07EBC30292F82423B9F1000F00F07E +:1052A000BF8042F0040207EBC30383F82423D7F83E +:1052B0009832D3F8B830002B7FF477AFFFF7F2B80D +:1052C000419A204617F01CFBA9F10300224608234F +:1052D000C0B208EB03010133DBB24979834202F823 +:1052E000011BF6D10DF21713002241995A54FFF712 +:1052F00083BA0A4689462046194617F001FB419BAE +:1053000052A92046002B14BF4A46012213F036FC56 +:105310000DF21712002302F80930FFF724BA02F049 +:10532000FD0237E70C4A0DF5847807CA434603C3EC +:1053300023F8022B120C1A7068E500BF08BB00208E +:10534000BC1D0020EC230020684C0020D81D00204C +:10535000901D0020981E0020741D00208B4B0DF521 +:105360008478429352E505EBC003B9F1000F70D089 +:1053700003F54052B9F17F0F92F82C333E9243F07F +:10538000080382F82C332CD143F2203C43F2313312 +:1053900043F2713E0021AC442B44AE4487F8210314 +:1053A0005A7822B11A78597042F002021A70997034 +:1053B00008337345F4D1D7F89832D3F8A4301C469B +:1053C0007BB10CEBC00C3E9A3E9092F830239CF8D7 +:1053D0001010C2F30113C2F3801201F00F01A047B5 +:1053E0003E98D7F89832D3F8B030002B7FF4DDAE7A +:1053F000FFF758B80DF58478654BC8F8003005E51F +:10540000A7F82A33D7F89832D3F8AC30002B3FF402 +:1054100049A80846984705F549533E93FEF78ABECA +:1054200002F0FB023FE712215A4815F0C7FA5A482A +:1054300012F05CFF97F89733FFF772B914215748C1 +:1054400015F0BCFA544812F051FF97F89733FFF764 +:1054500064B903F5405393F82C2322F0080283F833 +:105460002C23BEE712F803C01CF0010F03D04CF050 +:10547000020C02F803C02CF0010C02F803C05BE53B +:1054800012F803C01CF0010F03D14CF0020C02F81B +:1054900003C04CF0010C02F803C04DE523F4807307 +:1054A000FFF7C4BA23F00053FFF7C0BA23F08053CC +:1054B000FFF7BCBA23F00073FFF7B8BA23F000631C +:1054C000FFF7B4BA23F08063FFF7B0BA23F080731C +:1054D000FFF7ACBA23F40063FFF7A8BA23F4004344 +:1054E000FFF7A4BA23F40053FFF7A0BA23F4000394 +:1054F000FFF79CBA23F40013FFF798BA23F40023B4 +:10550000FFF794BA23F40033FFF790BA23F0800337 +:10551000FFF78CBA23F40073FFF788BA23F0400337 +:10552000FFF784BA23F48063FFF780BA23F02003E7 +:10553000FFF77CBA23F48043FFF778BA23F0100317 +:10554000FFF774BA23F48053FFF770BA23F008030F +:10555000FFF76CBA23F48003FFF768BA23F0040363 +:10556000FFF764BA23F48013FFF760BA23F0020355 +:10557000FFF75CBA23F48023FFF758BA23F0010346 +:10558000FFF754BA23F48033FFF750BA464D390081 +:10559000464D3300381E0020684C0020201E00209D +:1055A00070B59DF810C09DF814E0002B47D0402B3B +:1055B000A8BF4023DEB200F54054F44594F83458B7 +:1055C0000ED21EF0800F12D1A9B12B44002A3ED07A +:1055D000734517DC634515DB35445FFA85FC11E044 +:1055E0004FFA8EFCBCF1000F4FF0000CECDC4FF0DA +:1055F0007F0E0029E9D12ABBED1A6545B8BF654683 +:105600005FFA85FC00F5805084F834C8D0F8DC38A7 +:105610000BB1604698470B21114815F0CFF90121D5 +:10562000104815F0CBF994F8341800230A220E48DC +:1056300012F078FE0C48BDE8704012F057BE01260B +:105640003346B8E7EB1A634506DAF446DAE7734502 +:10565000FBDC6345C0DAD5E7AD1B5FFA85FCD1E71B +:1056600060260020EC230020684C002070B50D4619 +:1056700000F5405182B091F8346891F9341800294E +:1056800005F1FF31B8BF00260F2904D80446B2FA4D +:1056900082F040090AB902B070BD114633462A466D +:1056A000009004F5CE500BF04BFFFF21204604F58F +:1056B0008054334600912A46C02100F075FED4F88C +:1056C000E038002BE7D0304602B0BDE87040184704 +:1056D0002DE9F8434FF001084FF0000941F6A837D3 +:1056E0000446206803681B699847002840F3CF8070 +:1056F000206803685B69984794F80F310546C6B285 +:1057000023B12068314603681B6898472A0613D4E2 +:1057100094F80E31002BE4D16279F02A00F09480E5 +:1057200020790028DDD0022800F0A980012800F0AF +:10573000AA8001382071D4E7F22E13DCCF2E2FDCA3 +:10574000A02E22D01DDDB02E1FD0C02EC9D126F034 +:105750000F0306F00F0684F8048084F80E9163713D +:10576000A671BEE7A6F1F30308FA03F313EA0702F2 +:1057700064D0002301206671237184F80E31BDE8E6 +:10578000F88305F0EF05802DABD126F00F0306F06E +:105790000F0684F80E9163710223A6712371A0E7AE +:1057A000A6F1D003222B9CD801A252F823F000BF0F +:1057B000C373010057730100577301005773010051 +:1057C00057730100577301005773010057730100AD +:1057D000577301005773010057730100577301009D +:1057E000577301005773010057730100577301008D +:1057F000FF730100577301005773010057730100D5 +:10580000577301005773010057730100577301006C +:10581000577301005773010057730100577301005C +:10582000577301005773010057730100577301004C +:10583000DB740100C3730100FF730100F72E18D061 +:10584000DB077FF54EAF82E7B4F80821FD2A05D8C3 +:10585000531C2244A4F80831567242E7A4F80831D8 +:1058600084F80E813DE7F0236671A4F80881637225 +:1058700037E76379F02B0DD00120BDE8F883E6719E +:1058800084F804802DE726722371BDE8F883002098 +:10589000BDE8F88394F80E0110B184F80E216EE78C +:1058A000B4F8083101201A182344A4F808215E72C4 +:1058B00065E700BF2DE9F8434FF001084FF00009FC +:1058C00041F6A8370446206803681B6998470028FA +:1058D00040F3CF80206803685B69984794F80F31E4 +:1058E0000546C6B223B12068314603681B68984755 +:1058F0002A0613D494F80E31002BE4D16279F02AF1 +:1059000000F0948020790028DDD0022800F0A980E2 +:10591000012800F0AA8001382071D4E7F22E13DCB0 +:10592000CF2E2FDCA02E22D01DDDB02E1FD0C02EFA +:10593000C9D126F00F0306F00F0684F8048084F81E +:105940000E916371A671BEE7A6F1F30308FA03F3A3 +:1059500013EA070264D0002301206671237184F8E2 +:105960000E31BDE8F88305F0EF05802DABD126F0B0 +:105970000F0306F00F0684F80E9163710223A671DF +:105980002371A0E7A6F1D003222B9CD801A252F8E4 +:1059900023F000BFA77501003B7501003B750100B6 +:1059A0003B7501003B7501003B7501003B75010033 +:1059B0003B7501003B7501003B7501003B75010023 +:1059C0003B7501003B7501003B7501003B75010013 +:1059D0003B750100E37501003B7501003B7501005B +:1059E0003B7501003B7501003B7501003B750100F3 +:1059F0003B7501003B7501003B7501003B750100E3 +:105A00003B7501003B7501003B7501003B750100D2 +:105A10003B750100BF760100A7750100E375010029 +:105A2000F72E18D0DB077FF54EAF82E7B4F80821D8 +:105A3000FD2A05D8531C2244A4F80831567242E7C7 +:105A4000A4F8083184F80E813DE7F0236671A4F8CC +:105A50000881637237E76379F02B0DD00120BDE830 +:105A6000F883E67184F804802DE726722371BDE87F +:105A7000F8830020BDE8F88394F80E0110B184F893 +:105A80000E216EE7B4F8083101201A182344A4F857 +:105A900008215E7265E700BF2DE9F0470C46002142 +:105AA000FE22064604F105080D464FF00109404666 +:105AB00016F026FF41F2881065702044A570E5704D +:105AC000257184F8009094F80CA1FFF7F3FE00BB59 +:105AD00004F5805797F89C3273B9D7F88421D36DB9 +:105AE00023F01003D36540F203122146304613F031 +:105AF00045F83046BDE8F0875B4BD7F898221B6825 +:105B00009B1A41F27072934254D9002387F89C3259 +:105B1000E3E7FE222946404604F5805716F0F0FEE2 +:105B20004023A570E5702571237097F88D3103F13E +:105B300008026370D2B2072A43D8DD23D340DB07C3 +:105B400078D51AF0020F6CD1474B0121D7F8842188 +:105B500020461B6887F89C122146C7F89832D36DFF +:105B600043F01003D365FDF719FF637883F08002DB +:105B70006F2AB8D8A278002AB5D02178013AE07807 +:105B800043EA016302F00F0122790B43120403F090 +:105B9000F00142EA0022C02943EA020353D103F094 +:105BA0000F02C3F3062302EB821204EB420282F8D7 +:105BB0000D3198E7D7F88421D36D43F01003D365F6 +:105BC00091E797F88F21EF2BE27097F890212271DF +:105BD00013D8B02B06D009D9E02B03D003F0EF0384 +:105BE000C02BB1D197F88E31A370ADE7A02BF9D0BF +:105BF00003F0EF03802BA7D1F4E7F02BA4D1E570DD +:105C00002571B7F89092B9F1FE0F1AD89CD041F2E5 +:105C1000911140464A46214412F0B0FF84F80390A7 +:105C200092E74046FE22294616F06AFE657084F827 +:105C300000904FE797F88F31E37097F89031237118 +:105C400082E7657080E7B0297FF44DAF03F00F0263 +:105C5000C3F30621C3F3064302EB821204EB4202B4 +:105C60000A4482F80F313EE708BB00202DE9F04FCF +:105C70000022054643F2A010ADF20C5D114605F579 +:105C800080542844FDF712FF002840F00E8105F5EE +:105C9000405696F8B4315F0700F1B480D6F8FC3175 +:105CA0003BB1DC4FB6F8F8113A68D31A8B4280F05A +:105CB000B981D6F804323BB1D64A1268D31AB6F885 +:105CC0000022934280F0C38105F5CE5600214FF0AB +:105CD0000108FE2206F1050A0F46504616F010FE96 +:105CE000384684F8C17984F8C27984F8C37984F895 +:105CF000C47984F8C08914F059FA002840F0628110 +:105D00003EAF40F203123146384612F037FFF72219 +:105D100041A9684612F032FF284697E80E00FEF7C8 +:105D200097F9FE220021504616F0EAFD002394F870 +:105D3000CC2A314684F8C13906F5266084F8C23988 +:105D4000C2F3400284F8C33984F8C439012384F8CB +:105D5000C039FDF78FFD002840F004810DF5FE7974 +:105D600040F2031231460DF540784846002712F004 +:105D700005FFF72282A9684612F000FF28464FF07F +:105D8000010B99E80E00FEF763F940463146FFF734 +:105D900083FEF722C3A9684612F0F0FE284698E871 +:105DA0000E00FEF755F9FE223946504616F0A8FDC2 +:105DB00042F2F82084F8C179284484F8C27984F842 +:105DC000C37984F8C47984F8C0B994F8CC8AFFF711 +:105DD0007FFC002873D10DF20444314640F20312D7 +:105DE000204612F0CBFE0DF58261F722684612F0D4 +:105DF000C5FE284694E80E00FEF72AF90DF20C5D68 +:105E0000BDE8F08F23F004030E21834886F8B431F7 +:105E100014F0D4FD814812F069FAD6F8A821B6F83A +:105E2000F21713888B4228D0A3F11E01B1F5877FAA +:105E300023D8B6F8F017994200F0BA8196F8E8171F +:105E4000002001F0FD01C6F8E40786F8EE07C80758 +:105E5000A6F8F037A6F8F23740F1B28141F002011E +:105E600086F8E8174EF66021B1FBF3F36949A6F80E +:105E7000E03713880A68C6F8E427A4F87C3912F0E2 +:105E8000B3FD04F68C130022C4F884091A60D4F818 +:105E9000B4381BB1D6F8A82110889847D6F8A83195 +:105EA0002846198800F032FBF8E62846F2F7D2F8C7 +:105EB000D4F8B038002B3FF4EAAE9847E7E6FE226C +:105EC0003946504616F01CFD022305F5005184F8B2 +:105ED000C27984F8C37984F8C47984F8C03991F818 +:105EE000FD3203F1080284F8C139D2B2072A00F268 +:105EF000CA80DD23D340DB0740F1428118F0020F56 +:105F000040F0348131463046FDF748FD94F8C13900 +:105F100083F080026F2A3FF65EAF94F8C229002A10 +:105F20003FF459AF94F8C019013A43EA016302F013 +:105F30000F0294F8C319134394F8C429120442EAD7 +:105F400001221A4303F0F003C02B40F0618102F0FC +:105F50000F03C2F3062203EB831304EB430383F81E +:105F6000CD2A38E731463046FDF718FD94F8C1399F +:105F700083F080026F2A3FF6F1AE94F8C229002A1E +:105F80003FF4ECAE94F8C019013A43EA016302F021 +:105F90000F0294F8C319134394F8C429120442EA77 +:105FA00001221A4303F0F003C02B40F0208102F0DD +:105FB0000F03C2F3062203EB831304EB430383F8BE +:105FC000CD2ACBE6FE223946504616F099FC144BFA +:105FD00084F8C0891B7884F8C27903F1080284F838 +:105FE000C37984F8C479D2B284F8C139072A32D887 +:105FF000DD23D340D90740F1CC8094F8CC3A9A07FE +:106000003CD5FE223946504616F07AFC84F8C17918 +:1060100076E600BF08BB0020F4290020684C002071 +:10602000B4BC0020002396F80812C6F8FC31002901 +:106030003FF43FAEFE22D6F8F4010BF069FA4FF4BC +:1060400096723B68A6F8F821C6F8FC3131E60023C9 +:10605000C6F8043238E6774AEF2B77491278097888 +:1060600084F8C32984F8C41953D8B02B32D02BD864 +:10607000A02B2FD003F0EF0080282BD031463046E4 +:10608000FDF78CFC3CE691F8FF22EF2B84F8C32946 +:1060900091F8002384F8C42950D8B02B07D00BD92D +:1060A000E02B04D003F0EF03C02B7FF42BAF91F86B +:1060B000FE3284F8C23925E7A02BF8D003F0EF03B5 +:1060C000802B7FF41FAFF2E7E02B03D003F0EF004B +:1060D000C028D3D15948007884F8C2090028CDD00F +:1060E000090441EA0222411E01F00F010A43134351 +:1060F00003F0F00243F08073C02A67D103F00F026F +:10610000C3F3062302EB821204EB420282F8CD3A7B +:10611000B4E7F02BB2D142EA012384F8C37984F8C2 +:10612000C479FE2B1A460FFA83F83ED8A6D044490C +:10613000504612F023FD84F8C3899FE7F02B7FF4CB +:10614000E1AE84F8C37984F8C479B1F80084B8F179 +:10615000FE0F27D83FF4D6AE42F2013150464246F8 +:10616000294412F00BFD84F8C389CBE65046FE2289 +:10617000394616F0C5FB84F8C17984F8C0B92AE61F +:1061800091F8FF3284F8C33991F8003384F8C439A8 +:10619000B8E6284B1B7884F8C339274B1B7884F862 +:1061A000C4396BE784F8C179ACE684F8C17965E756 +:1061B000D6F8E41700297FF460AE96F8E81746E6B3 +:1061C00021F0020186F8E817138856E6B02A7FF41A +:1061D00055AF03F00F02C3F30621C3F3064302EBEE +:1061E000821204EB42020A4482F8CF3A46E7B02B0F +:1061F0007FF4B4AD02F00F03C2F30621C2F30642EE +:1062000003EB831304EB43030B4483F8CF2AA5E588 +:10621000B02B7FF4E0AD02F00F03C2F30641C2F3EE +:10622000062203EB831304EB4303134483F8CF1AD2 +:10623000D1E500BFB2BC0020B3BC0020B1BC00203F +:1062400060BB0020032900D9704770B588B00546AF +:1062500016460C4601A8EFF79BFB9DF81A309DF8F7 +:106260001B209E4203D39642334628BF134628196B +:1062700080F8293F08B070BD032901D9002070477C +:1062800030B50C46054689B0254401A8EFF780FBE0 +:106290009DF81A0095F8293F9DF81B20834203D3EF +:1062A000934228BF1346184609B030BDF0B500F53B +:1062B000805595B0D5F8C478BFB31E4601294FF07C +:1062C0000003144630468DF825100A928DF82430CC +:1062D0000B9313D01D292AD01E2938D116F076FE33 +:1062E00000F10F031D2B0FD8621C33462A490CA85E +:1062F000D2B216F085F9D5F8C47807E016F066FE3C +:1063000000F10D031D2B34D91D283CD90DF1340E9D +:10631000EC4609ACBEE80F00ACE80F009EE80700B1 +:106320008CE8070094E80F00B84715B0F0BD16F0F0 +:106330004DFE00F10E031D2BE6D8621C33461749B3 +:106340000CA8D2B216F05CF9D5F8C478DEE71F29A4 +:106350001ED116F03BFE00F10C031D2BD4D8621C9D +:1063600033460F490CA8D2B216F04AF9D5F8C478D2 +:10637000CCE7621C33460B490CA8D2B216F040F9A8 +:10638000D5F8C478C2E731460CA816F02DFDBDE75C +:1063900016F01CFEB8E700BFD4240020C42400205F +:1063A000E4240020B4240020F0B500F5805495B01A +:1063B000D4F8C4589DF868606DB3FF2E2DD0180234 +:1063C00041EA020740EA064038433746B0298DF8D3 +:1063D0002510CDE90A704FF000008DF824002BD075 +:1063E00021D801F0EF01802906D117490CA80096A9 +:1063F00016F006F9D4F8C4580DF1340EEC4609AC89 +:10640000BEE80F00ACE80F009EE807008CE807002C +:1064100094E80F00A84715B0F0BD41EA02001F46FE +:1064200040EA0320D2E7C029E6D108490CA816F0BB +:10643000E7F8D4F8C458DFE705490CA8009616F031 +:10644000DFF8D4F8C458D7E70C1C00202C1C00201F +:10645000EC1B002030B500F58054134695B0D4F8FD +:10646000C428FAB141EA03204FF440450A460E49D8 +:1064700040F0C0000A93ADF8245009AD0B900CA871 +:1064800016F0BEF80DF1340EEC46BEE80F00ACE895 +:106490000F009EE807008CE8070095E80F00D4F88D +:1064A000C448A04715B030BD2C1C002030B500F505 +:1064B0008054104695B0D4F8C4281AB341EA034C6E +:1064C0000A464FF4304500934CEA00210A930346F4 +:1064D0000CA841F0B001ADF8245009AD0B910A4968 +:1064E00016F08EF80DF1340EEC46BEE80F00ACE865 +:1064F0000F009EE807008CE8070095E80F00D4F82D +:10650000C448A04715B030BDEC1B002030B500F5E5 +:10651000805495B0D4F8C438DBB10A464FF47843C0 +:106520000D490CA80A9209ADADF824300B9216F073 +:1065300067F80DF1340EEC46BEE80F00ACE80F0032 +:106540009EE807008CE8070095E80F00D4F8C448DF +:10655000A04715B030BD00BF542600202DE9F04300 +:1065600000F5405485B00546D4F8E43733B13349DB +:106570000A68D31AB4F8E027934223D294F8E83794 +:10658000D90701D59A0702D405B0BDE8F08323F0FE +:10659000020394F8EF7784F8E837002FF4D0002650 +:1065A00041F24C58B146A844012E04D8B4F8EA3759 +:1065B0003341DB072FD40136F3B29F42F4D805B044 +:1065C000BDE8F08394F8EE270020022AC4F8E4071F +:1065D00008D994F8E83784F8EE0703F0FD0384F84F +:1065E000E837CDE794F8E837B4F8F007DE07A4F809 +:1065F000F2071ED5096843F00203C4F8E4174EF60B +:10660000602184F8E837B1FBF0F1A4F8E01701321B +:1066100084F8EE27B4E706EB46032322012128463F +:10662000CDE9019918F803300093B3B2F3F750FBAA +:10663000C1E703F0FD0384F8E837E8E708BB002072 +:106640002DE9F84F00F5405898F80D78002F64D0E8 +:1066500043F6100543F609063B460024054406446C +:10666000DFF8CCA0DFF8CCB0DFF8CC9007E0013445 +:1066700008350136E3B29F424FD998F80D38E2B29F +:10668000002BF4D0032AF2D86B68002BEFD0DAF895 +:106690000020D31A2A689342E9D333780022DB071B +:1066A0006A6011D5D8F8043804F25252D3F8083190 +:1066B0001B6803EB82035B7A013303EB83035B000C +:1066C0002B60DAF800306B600B21584614F076F935 +:1066D0000121484614F072F90A220023214610488D +:1066E00011F020FE0121484614F068F90B210D48F5 +:1066F00014F064F90121484614F060F931780A4B2E +:1067000011F0010109484FEA810108BF184614F051 +:1067100055F9034811F0EAFDA9E7BDE8F88F00BF7D +:10672000684C0020A8240020183D0020942400205C +:1067300008BB00209C240020EC2300202DE9F04F12 +:1067400000F5405589B095F8027877B1D5F8F8177B +:1067500006464A78B02A0FD055D8A02A08D002F0B1 +:10676000EF0322F01000802B03D009B0BDE8F08FBA +:106770001046C0B28028F8D1002441F23D5A059657 +:10678000B2442346A346002A7DD095F802089842D9 +:1067900079D9C4F30B1003F00F0305EB4000B0F8F8 +:1067A000FE071841A3B2C0076DD5D5F8F407D0F89D +:1067B0000801D0F800C00CEB840000F5805090F880 +:1067C0003CE50EF1FF38B8F1C70F5CD80CEBCE0CEE +:1067D0009CF832E00EF1FF3EBEF1030F53D8DCF817 +:1067E00034809CF83390C8F3062608F00F0C079607 +:1067F000C8F306460696BEF1030F00F2A380DFE859 +:106800000EF0514E4B0DE02AAFD002F0EF03C02B3B +:10681000ABD1C02AB0D009B0BDE8F08F4CF0800CED +:10682000079E4CEA096C4CEA062C069E4CEA064C84 +:1068300016063FD4E6464FF0000890F83B05CEF32D +:106840000E0E460751D4BEF1000F1CD14FEA1C6C4E +:106850001CEA186C17D0EF2A03D802F0F002C02A05 +:1068600007D000F00300022863D0032858D0012885 +:106870004DD001210598CDE901BB1AF824200092E2 +:106880002222F3F725FA0134E3B29F427FF66DAF7F +:10689000D5F8F8174A7876E74CF0900CC0E74CF042 +:1068A000B00CBDE74CF0C00C079E4CEA096C4CEAFA +:1068B000062CBDE7EF2A1CD9F02ABBD091F8028044 +:1068C000B8F1000F1AD0914691F804E091F80380D6 +:1068D0004FEA0E4E4EEA082E91F800804EEA086EFE +:1068E0004EEA09088CEA080EA7E7BEF1000FB2D005 +:1068F000C9E791F80280B8F1000F01D1E6469CE7A4 +:1069000008F1FF3808F00F0E4EEA0209DCE70A79B9 +:106910000699521AB2FA82F25209002AA9D1B2E7B4 +:106920000A7906998A428CBF00220122002AA0D14E +:10693000A9E70A7906998A4234BF00220122002A77 +:1069400097D1A0E74FF0000C72E700BF002070471E +:10695000704700BF002905DBB0F90CC08C4501DD94 +:10696000002A00DA7047B0F90EC09445FADD10B481 +:1069700090F81AC0BCF1020F0DD0BCF1030F58D033 +:10698000BCF1010F4CD0012B38D0022B24D07BB1AD +:106990005DF8044B7047B0F808C00CF1FF3CACEB5D +:1069A000010C41898A1A0FFA8CF1013A12B2EAE716 +:1069B000002A1346B0F808C0B8BFD31D446A02F0DD +:1069C00007020120DB1000FA02F213FB0C13E15C5A +:1069D00021EA0202E254DBE7002A13460489B8BF29 +:1069E000D31D406A02F00702DB1013FB04130121E0 +:1069F000C45C01FA02F26240C254C9E7002A13469D +:106A0000B0F808C002F00704B8BFD31D406A0122E5 +:106A1000DB10A24013FB0C13C15C0A43C254B7E75E +:106A2000B0F808C0ACEB020C0A460CF1FF3109B219 +:106A3000A9E7B0F80AC00CF1FF3CACEB010C114621 +:106A40000FFA8CF29FE700BF002930B5BDF80C406B +:106A500002DA0B4400211BB2B0F908C05D188E4663 +:106A6000654502DDACEB01010BB2002B0FDD416A85 +:106A7000D01002F007021CFB00EC012000FA02F229 +:106A800084426144D2B219D0022C0DD004B130BD81 +:106A9000D24311FA83F3D2B211F8010B104099429C +:106AA00001F8010CF8D130BD11FA83F311F8010B94 +:106AB00050408B4201F8010CF8D130BD11FA83F33C +:106AC00011F8010B1043994201F8010CF8D130BDC7 +:106AD0002DE9F041B0F908E0BDF818508E452DDDE4 +:106AE000002A2DDB9446B0F90A409C44A44501DD00 +:106AF000A41A23B2002B21DDC2F3C404466A12F0AB +:106B00000702DBB21EFB041406EB040136D0C2F10F +:106B1000080CDFF818815FFA8CFC634518F80C70DC +:106B200018D2ACEB03084FF0FF0E012D4EFA08FE11 +:106B300007EA0E0771D0022D49D08DB1BDE8F08172 +:106B400013440022B0F90A401BB294469C44A44569 +:106B5000D0DDCDE7012D60D0022D38D0002D3BD106 +:106B600016F804E02EEA070E634506F804E0B0F9D3 +:106B70000840E3D3083A21441344DBB2072B16D96B +:106B8000022D35D0B5F1000C1A4618BF4FF0010C9C +:106B9000CCF1000C5FFA8CFC083A81F800C0B0F927 +:106BA0000840D2B22144072AF6D803F00703002B8D +:106BB000C4D01E4A012D13441B7A33D0022D28D095 +:106BC000002DBBD10A7822EA03030B70B6E716F852 +:106BD00004E087EA0E0EC7E7083A71441344DBB2BB +:106BE000072BCFD8002BA9D0984498F80830E5E7B8 +:106BF0001A460C78083AE443D2B20C70072AB0F96E +:106C000008402144F5D813F0070397D0074A1344EE +:106C10001B7A0A7853400B7090E716F804E047EAB5 +:106C20000E0EA1E70A7813430B7087E72CE1016091 +:106C30009446827E022A10B4BDF8044028D0032A6C +:106C400021D0012A0FD0BCF1000F09DBB0F90A20D6 +:106C5000624505DD019462465DF8044BFFF7F4BE22 +:106C60005DF8044B70470289A2EB0C02013A0FFA5F +:106C700082FCBCF1000FF3DB0A46019461465DF82B +:106C8000044BFFF725BF19444289521A11B2F0E7AD +:106C900042891944A2EB0C02013A0FFA82FC0289E4 +:106CA000521A11B2CFE700BF9446827E022A10B476 +:106CB000BDF8044027D0032A14D0012A07D00029A8 +:106CC0000DDB019462465DF8044BFFF701BF9C4465 +:106CD00002890029A2EB0C020FFA82FC08DA5DF8A7 +:106CE000044B70474289521A013A11B20029F6DB6F +:106CF000B0F90A208A42F2DD0A46019461465DF845 +:106D0000044BFFF7A1BE02899C44521A013A11B20A +:106D10004289A2EB0C020FFA82FCD0E710B50446C0 +:106D20000DF0B0F9024A002320462260636210BDD4 +:106D3000B841002010B50446406A08B114F0A4FF21 +:106D4000204610BDB0F90A300021DA1D48BF03F11A +:106D50000E02B0F90830406AD21003FB02F215F0BF +:106D6000CFBD00BF70B5012690F828300C4C0D4601 +:106D7000B3400021204684F8306184F8A53084F8BF +:106D80002F610CF055FCA5F15A012046C9B20CF058 +:106D90004FFC31462046BDE870400CF057BD00BFA7 +:106DA00018B10020F8B5064699BB90F92930012B9F +:106DB0000CBF9F27CF27012596F82830164C0021BD +:106DC000AB40204684F8305184F8A53084F82F5128 +:106DD0000CF02EFC812120460CF02AFC294620468E +:106DE0000CF034FD96F8283000212046AB4084F8A2 +:106DF000305184F82F5184F8A5300CF019FC394635 +:106E000020460CF015FC29462046BDE8F8400CF061 +:106E10001DBD0027CFE700BF18B100202DE9F047C6 +:106E2000074601244A4D002197F82830A146494ED3 +:106E30002846A34085F8304185F82F4106F1040823 +:106E400085F8A5300CF0F4FB222101E016F8011FB3 +:106E5000284601340CF0ECFB4645E4B214D0882CF3 +:106E6000F4D1012128460CF0F1FC012497F82830D8 +:106E70000021284685F83091A34085F82F9185F8A8 +:106E8000A5300CF0D5FBE1E7012131480CF0DEFC28 +:106E90003C8997F828300126013C0021B3402C485A +:106EA000E4B285F8306185F8A53085F82F610CF0E3 +:106EB000BFFB214626480CF0BBFB31462448012489 +:106EC0000CF0C4FCB7F90A20B7F808804021D31DA4 +:106ED0001F487E6A48BF02F10E0397F8282085F804 +:106EE0003041DB1085F82F4118FB03F853001FFADF +:106EF00088F885F8A5300CF09BFBB8F1000F21D085 +:106F0000B044DFF84C90A24616F8011B4846013405 +:106F10000CF08EFB4645E4B214D0882CF4D101214C +:106F200048460CF093FC012497F82830402148464D +:106F300085F830A1A34085F82FA185F8A5300CF085 +:106F400077FBE1E701210248BDE8F0470CF07EBC89 +:106F500018B100203CE101602DE9F0470646406A87 +:106F6000154682B00F46B6F90A20002800F06C8161 +:106F7000D31D48BF02F10E03B6F90820DB1003FB56 +:106F800002F2C64C002115F0BBFC86F829702046A1 +:106F900086F828501BF0B2F9C149204601250CF0B3 +:106FA000DBFD96F82830BF4F0021AB40204684F827 +:106FB000305107F1030884F82F51A94684F8A53011 +:106FC0000CF036FBAE2101E017F8011F2046013519 +:106FD0000CF02EFBB845EDB214D0882DF4D1012170 +:106FE00020460CF033FC012596F82830002120467D +:106FF00084F83091AB4084F82F9184F8A5300CF0E0 +:1070000017FBE1E70121A5480CF020FC7789012559 +:1070100096F82830013F0021AB40A048FFB284F829 +:10702000305184F8A530A94684F82F510CF000FBAC +:1070300039469A480CF0FCFA294698480CF006FCB0 +:1070400096F82830DFF870A20021AB40934884F80E +:1070500030510AF1030884F82F5184F8A5300CF060 +:10706000E7FA8E4FD32101E01AF8011F38460135A7 +:107070000CF0DEFAC245EDB214D0882DF4D1012116 +:1070800038460CF0E3FB012596F8283000213846FD +:1070900084F83091AB4084F82F9184F8A5300CF03F +:1070A000C7FAE1E701217D4801250CF0CFFB96F9F5 +:1070B0002920002196F82830A946AA42774803FAE9 +:1070C00005F384F830510CBF1027142784F8A5303D +:1070D00084F82F510CF0ACFA394670480CF0A8FA3D +:1070E00029466E480CF0B2FB96F82830DFF8CCA1A8 +:1070F0000021AB40694884F830510AF1030884F854 +:107100002F5184F8A5300CF093FA644F202101E050 +:107110001AF8011F384601350CF08AFAC245EDB263 +:1071200014D0882DF4D1012138460CF08FFB0125B5 +:1071300096F828300021384684F83091AB4084F826 +:107140002F9184F8A5300CF073FAE1E70121534840 +:107150000CF07CFBB368544A934200F08880534A99 +:10716000934200F0D280524A934200F024810125DC +:1071700096F8283000214948AB4084F8305184F813 +:107180002F51A94684F8A5300CF052FAD921434872 +:107190000CF04EFA294641480CF058FB96F929208C +:1071A00096F828300021AA423C4803FA05F384F8F7 +:1071B00030510CBF2227F12784F8A53084F82F51D5 +:1071C0000CF036FA394635480CF032FA2946334885 +:1071D0000CF03CFB96F82830DFF8E4A00021AB402F +:1071E0002E4884F830510AF1050884F82F5184F8AC +:1071F000A5300CF01DFA294FDB2101E01AF8011F20 +:10720000384601350CF014FAD045EDB214D0882D73 +:10721000F4D1012138460CF019FB012596F82830ED +:107220000021384684F83091AB4084F82F9184F8DF +:10723000A5300CF0FDF9E1E7012118480CF006FB40 +:10724000012002B0BDE8F087D31D48BF02F10E0354 +:10725000DA10B6F9083003FB02F21046019214F07E +:107260000BFD019A706200287FF48BAEE9E796F877 +:10727000283001250F4F0021AB40084884F83051D9 +:1072800007F1030984F82F51AA4684F8A5300CF0C1 +:10729000CFF9DFF80880DA2116E000BF18B100202E +:1072A000801A06004CE10160800020008000400050 +:1072B0006000100058E1016050E1016054E101609C +:1072C00064E1016017F8011F404601350CF0B0F988 +:1072D000B945EDB214D0882DF4D1012140460CF00F +:1072E000B5FA96F82830002140465B00012584F865 +:1072F00030A184F82FA184F8A5300CF099F9E1E7CA +:10730000012150480CF0A2FA31E796F82830012507 +:107310004D4F0021AB404B4884F8305107F1020932 +:1073200084F82F51AA4684F8A5300CF081F9DFF8D3 +:107330001481DA2101E017F8011F404601350CF0F5 +:1073400077F94F45EDB214D0882DF4D10121404694 +:107350000CF07CFA96F82830002140465B000125AD +:1073600084F830A184F82FA184F8A5300CF060F9DE +:10737000E1E7012133480CF069FA012596F929204B +:1073800096F82830AA4284F8305103FA05F30CBF6E +:107390009F27CF2700212B4884F8A53084F82F5150 +:1073A0000CF046F9394627480CF042F929462548A1 +:1073B0000CF04CFADBE696F828300125234F00212B +:1073C000AB40204884F8305107F1020984F82F516E +:1073D000AA4684F8A5300CF02BF9DFF86880DA2192 +:1073E00001E017F8011F404601350CF021F94F4527 +:1073F000EDB214D0882DF4D1012140460CF026FACC +:1074000096F82830002140465B00012584F830A121 +:1074100084F82FA184F8A5300CF00AF9E1E70121E6 +:1074200008480CF013FA012596F9292096F828301F +:10743000AA4284F8305103FA05F30CBF1027AF2796 +:10744000A8E700BF18B100205CE1016060E10160C5 +:1074500010B5074C04F5207010F066FA04F5D070F2 +:1074600010F062FA04F1C000BDE8104010F05CBA00 +:10747000E061002038B50D4C04F5287504F1400298 +:1074800004F1800304F1A00044F8204C2262E034AF +:10749000002144F8803C10F0EDF9AC42EED1044AF2 +:1074A00000200449BDE8384014F0A4BB006200206D +:1074B000E44C0020C59001002DE9F041C46B82B07E +:1074C000B4F80330994208D0002310211A460093E3 +:1074D00001F090FC02B0BDE8F0810D2990F82DC0BC +:1074E000056859D80023294604F12806C4F1120E74 +:1074F00041F8043F23460EEB0307B4F80380002253 +:10750000474515DADA7D9F7D02F07F0293F81380FC +:10751000FF0142EA087207F47E573A435F7DBF03DA +:1075200007F4FE173A431F7D7F0507F07E673A4355 +:10753000053341F8042F9E42DDD1263504F11507AD +:107540002346C4F13806F118B4F803E0002271456F +:107550000EDA93F83D2093F83C1002F07F0293F886 +:107560003BE0C90142EA8E3201F47E510A4392B2F5 +:10757000033325F8022FBB42E5D1836880F82DC084 +:107580004FEA8C3C1A680CF4703C536823F4703357 +:1075900043EA0C03536097E7A37C627C03F07F030C +:1075A000A17BD20143EA017302F47E521343227C91 +:1075B000920302F4FE121343E27B520502F07E6254 +:1075C000134390E7C36B844610B5B3F803E082B071 +:1075D000BEF1070F0BD8002271451AD000230A46CE +:1075E00060461021009301F005FC02B010BDDC7A6A +:1075F0001A7BE40102F07F0204F47E542243C72A7E +:107600002CDD002310211A46009301F0F3FB02B099 +:1076100010BD0A29DCF8004022D8002004EBC20289 +:1076200082F83800B3F803000C284DD8002082F807 +:107630003900B3F803000E283ED8002082F83A0043 +:10764000B3F8030010282FD8002082F83B00B3F8CD +:10765000030015280FD80023D363BFE792B2BBE71E +:10766000987B93F80FE0C0010EF07F0E00F08000D1 +:1076700040EA0E00D2E7987E5C7E93F816E000F0B8 +:107680007F00E40140EA0E7093F818E004F47E54A1 +:107690002043DC7D4FEA8E33640503F4FE1303437D +:1076A00004F07E600343D7E7587D1C7D00F07F0027 +:1076B00040EAC410C0B2C8E7D87C9C7C00F07F00D0 +:1076C00040EAC410C0B2B9E7587C1C7C00F07F00CF +:1076D00040EAC410C0B2AAE7C26B2DE9F0410C46E3 +:1076E000B2F8031082B00546072941D800238C4226 +:1076F00009D90023224610212846009301F07AFB85 +:1077000002B0BDE8F081967B32199142F1D103EBD2 +:1077100003132A68002103F5CF6302EB030840F24C +:107720002112404615F0ECF8012EEF6BE1D9112E35 +:10773000B7F8032028BF112606F10A03DBB29342F3 +:10774000D7DA32460021404615F0DAF807F10E018B +:1077500008F1FF320023013311F8010FDBB202F808 +:10776000010F9E42F7D84644002306F8013CC0E7CB +:1077700092F80BC0137B4FEACC1C03F07F030CF490 +:107780007E5C43EA0C037F2B08DD002310211A46A0 +:10779000009301F02FFB02B0BDE8F0819BB2A6E799 +:1077A000704700BF10B51B210446AC4813F006F922 +:1077B000AB4810F09BFDAB49201D0BF0C5FD60B13F +:1077C000431E04460021A848032B00F26381DFE832 +:1077D00013F0C700F1001B01050010BD13F0EEF817 +:1077E0009F4810F083FD2E21A04813F0E7F89C4835 +:1077F00010F07CFD2E219D4813F0E0F8984810F021 +:1078000075FD2E21994813F0D9F8954810F06EFDBA +:107810002E21964813F0D2F8914810F067FD01210F +:10782000934813F0CBF81C21924813F0C7F88C480A +:1078300010F05CFD01218E4813F0C0F825218E4820 +:1078400013F0BCF8864810F051FD0121884813F070 +:10785000B5F82521894813F0B1F8814810F046FDAC +:107860002E21824813F0AAF87D4810F03FFD2E210A +:107870007E4813F0A3F87A4810F038FD2E217B489B +:1078800013F09CF8764810F031FD2E21774813F064 +:1078900095F8734810F02AFD0021734813F08EF814 +:1078A0006F4810F023FD00216F4813F087F86C48F3 +:1078B00010F01CFD2E216D4813F080F8684810F080 +:1078C00015FD2E21694813F079F8654810F00EFD7A +:1078D0002E21664813F072F8614810F007FD2E2142 +:1078E000624813F06BF85E4810F000FD012160481B +:1078F00013F064F81821624813F060F8584810F04B +:10790000F5FC01215A4813F059F83F215D4813F066 +:1079100055F8534810F0EAFC2E21544813F04EF865 +:107920004F4810F0E3FC2E21504813F047F84C4824 +:1079300010F0DCFC2E214D4813F040F8484810F0C0 +:10794000D5FC2E21494813F039F8454810F0CEFCFB +:107950000021454813F032F8414810F0C7FCFEE71B +:1079600013F02CF83E4810F0C1FC2E213F4813F0D4 +:1079700025F83B4810F0BAFC2E213C4813F01EF8C5 +:10798000374810F0B3FC2E21384813F017F834486C +:1079900010F0ACFC2E21354813F010F8304810F0F0 +:1079A000A5FC0121324813F009F83721364813F0BD +:1079B00005F83CE713F002F8294810F097FC2E2157 +:1079C0002A4812F0FBFF264810F090FC2E21274891 +:1079D00012F0F4FF224810F089FC2E21234812F007 +:1079E000EDFF1F4810F082FC2E21204812F0E6FF28 +:1079F0001B4810F07BFC01211D4812F0DFFF3421F1 +:107A0000224812F0DBFF12E712F0D8FF144810F002 +:107A10006DFC2E21154812F0D1FF114810F066FCC4 +:107A20002E21124812F0CAFF0D4810F05FFC2E21E3 +:107A30000E4812F0C3FF0A4810F058FC2E210B48E4 +:107A400012F0BCFF064810F051FC0121084812F06A +:107A5000B5FF32210E4812F0B1FFE8E638160020DB +:107A6000684C0020801A0600183D002050190020A4 +:107A7000EC230020481700208C160020B4160020AC +:107A8000D0190020EC19002054160020DC1600202C +:107A90001417002012F092FF1A4810F027FC2E2134 +:107AA000194812F08BFF174810F020FC2E211648C1 +:107AB00012F084FF134810F019FC2E21124812F026 +:107AC0007DFF104810F012FC2E210F4812F076FFB7 +:107AD0000C4810F00BFC01210C4812F06FFF112133 +:107AE0000B4812F06BFF074810F000FC012107481B +:107AF00012F064FF00230A222146024810F012FC13 +:107B000095E600BF684C002050190020EC230020AF +:107B1000681700202DE9F04F41F2FC7390F82F70A8 +:107B2000066885B003FB07F7C36806F1040A05463B +:107B3000B3F8603004375446DA0721D50021634892 +:107B400012F03CFF624810F0D1FB0321614812F0B3 +:107B500035FF0121604812F031FF08215F4812F023 +:107B60002DFF01215C4812F029FF08215C4812F02A +:107B700025FF0121584812F021FF10F035FFA862BF +:107B80006FF00308BFB20E215648A8EB0608564E08 +:107B900007F1340912F012FFB844336801374FF08F +:107BA000000B2B62B94534BF4FF001094FF0340987 +:107BB00005F1100708E033682A6A9B1AF92B1FD8D1 +:107BC0000AEB09039C4225D004EB080114F8013BA1 +:107BD000384601918DF80F300BF0F4FC9DF80F3012 +:107BE00001999842E7D001230DF10F0238460BF1BD +:107BF000010B0BF0DDFB33682A6A9B1AF92BDFD9E6 +:107C000001213A4812F0DAFE33682B620AEB0903CD +:107C10009C42D9D10121354812F0D0FE2C4810F0F9 +:107C200065FB0921324812F0C9FE01212A4812F0F1 +:107C3000C5FE00230A225946254810F073FB012196 +:107C4000254812F0BBFE05212A4812F0B7FE204855 +:107C500010F04CFBEB68B3F86030DB0702D405B0E2 +:107C6000BDE8F08F0421244812F0A8FE01211A4833 +:107C700012F0A4FE10F0B8FEAB6A0221C31A144839 +:107C800007EE103A9FED0F0BB8EE477B87EE000B27 +:107C900010F05CFB0121104812F090FE0C211748F7 +:107CA00012F08CFE0A4810F021FB0021074812F068 +:107CB00085FE074805B0BDE8F04F10F017BB00BFC8 +:107CC000AFF300800000000000408F40183D00200E +:107CD000684C002088370020EC230020C43E0020A0 +:107CE000D03E0020DC3E002008BB002050310020A8 +:107CF000EC3E002048240020F83E0020003F0020F9 +:107D0000000000002DE9F04FADF5C05D41F2FC72BE +:107D100090F82F30002183B0054602FB03F341F2B7 +:107D2000E45403A841F68D06019314F0E9FD04A87C +:107D30006C44E6F793FD41F2F45141F2CE506E44AB +:107D4000694400226844A1F1740301F8882C03F807 +:107D50000D2C0D339842FAD1A1F12E0303F8052C16 +:107D60000533A342FAD1A1F1120303F8032C033324 +:107D70008B42FAD103F1850185348530B142E2D1DD +:107D800003AE41F2FC7228680024314610F0F6FE82 +:107D90002B68A24A1A60E1B23046EDF7F9FD717D19 +:107DA000B27D2B689142F07D234404F1010403D39A +:107DB00081420A4628BF0246042C83F8292FEAD1C3 +:107DC0002B6802229648032603F58051C1F8E80487 +:107DD00083F8192F26222B6883F81A6F2B6883F8F3 +:107DE0001B2F28222B6883F81C2FAB682C6819687E +:107DF00095F82D304A689B0322F4703203F47033F7 +:107E0000134341F2FC724B60EB6895F82F90B3F886 +:107E1000603002FB09F9D80721D50021814812F012 +:107E2000CDFD814810F062FA3146804812F0C6FD5F +:107E300001217F4812F0C2FD08217E4812F0BEFDEC +:107E400001217B4812F0BAFD08217B4812F0B6FDF3 +:107E50000121774812F0B2FD10F0C6FDA8621FFAAA +:107E600089F941F2FC7A0E21744812F0A7FD744E94 +:107E700009F1010309EB0A020DF10C08A9EB040951 +:107E80009A4238BF4FF0010A336805F110074FF0EE +:107E9000000BA2442B6206E033682A6A9B1AF92B76 +:107EA0001CD8544522D004EB090114F8013B384694 +:107EB00088F8003000910BF085FB98F800300099AD +:107EC0009842E9D0012303AA38460BF1010B0BF0CD +:107ED0006FFA33682A6A9B1AF92BE2D901215948B3 +:107EE00012F06CFD336854452B62DCD101215548FA +:107EF00012F064FD4C4810F0F9F90921524812F0D3 +:107F00005DFD01214A4812F059FD00230A2259461D +:107F1000454810F007FA0121454812F04FFD0521B0 +:107F20004A4812F04BFD404810F0E0F9EB68B3F816 +:107F30006030D90700F192802C680F214448BDF8C9 +:107F4000049041F2FC7812F039FD336809F1010226 +:107F5000DFF8F0A02B6209EB0803A9EB04099A42B1 +:107F600088BF4FF00108A04401E0444513D004EB62 +:107F7000090138460BF026FB04F8010B33682A6A26 +:107F80009B1AF92BF1D90121504612F017FD3368E5 +:107F900044452B62EBD101212A4812F00FFD224803 +:107FA00010F0A4F9EB68B3F86030DB0729D50421A1 +:107FB000284812F003FD01211D4812F0FFFC10F0CB +:107FC00013FDAB6A0221C31A174807EE103A9FED62 +:107FD000110BB8EE477B87EE000B10F0B7F90121CB +:107FE000134812F0EBFC0C211B4812F0E7FC0E4882 +:107FF00010F07CF900210B4812F0E0FC0A4810F068 +:1080000075F92B6B43F400632B630DF5C05D03B072 +:10801000BDE8F08F0000000000408F40B049020230 +:108020000000FF03183D0020684C00208837002026 +:10803000EC230020C43E0020D03E0020DC3E002087 +:1080400008BB002050310020EC3E002048240020D6 +:10805000643C0020F83E0020003F002004212B4813 +:1080600012F0ACFC01212A4812F0A8FC10F0BCFC74 +:10807000AB6A0221C01A07EE900A2648B8EE677B69 +:108080009FED200B87EE000B10F060F901212048D6 +:1080900012F094FC0C21204812F090FC1D4810F0C6 +:1080A00025F900211D4812F089FC1A4810F01EF92C +:1080B000EB682C68B3F86030DA077FF53EAF00213B +:1080C000164812F07BFC134810F010F903211448F5 +:1080D00012F074FC01210E4812F070FC07211148C7 +:1080E00012F06CFC01210A4812F068FC08210E48CD +:1080F00012F064FC0121064812F060FC10F074FCE0 +:10810000A8621AE70000000000408F40F83E0020FF +:10811000EC230020684C0020003F0020183D002088 +:10812000883700205C3C0020D03E00202DE9F84F2D +:10813000C36841F2FC7290F82FB00546B3F8603086 +:10814000046802FB0BFBD90721D50021AB4812F0D4 +:1081500035FCAB4810F0CAF80321AA4812F02EFCF7 +:108160000121A94812F02AFC0721A84812F026FC98 +:108170000121A54812F022FC0821A54812F01EFC9E +:108180000121A14812F01AFC10F02EFCA862A14EA9 +:108190000F21A1481FFA8BFB12F010FC41F2FC7773 +:1081A00032680BF1010305F11009ABEB04082A62F8 +:1081B0000BEB0702DFF864A29A4238BF012727447D +:1081C00001E0BC4213D004EB080148460BF0FAF979 +:1081D00004F8010B33682A6A9B1AF92BF1D90121A3 +:1081E000504612F0EBFB3368BC422B62EBD101210D +:1081F0008A4812F0E3FB824810F078F8EB68B3F895 +:108200006030DA0729D50421854812F0D7FB012117 +:108210007D4812F0D3FB10F0E7FBAB6A0221C31AD2 +:10822000774807EE103A9FED730BB8EE477B87EE69 +:10823000000B10F08BF80121734812F0BFFB0C21EA +:10824000784812F0BBFB6E4810F050F800216B48E4 +:1082500012F0B4FB6A4810F049F82B6844F6B014E9 +:108260001B88A3420FD12A6BD304C2F3003408D475 +:10827000AA6895F82D3012685268C2F3833293428F +:108280007ED1BDE8F88F00215C4812F097FB5C4876 +:1082900010F02CF82E21644812F090FB584810F092 +:1082A00025F82E21604812F089FB554810F01EF881 +:1082B0000C215E4812F082FB0121534812F07EFB34 +:1082C00059464F4810F006F801214F4812F076FB4E +:1082D0001121574812F072FB494810F007F80A21A3 +:1082E000544812F06BFB0121474812F067FB2B68E2 +:1082F000434819880FF0EEFF0121434812F05EFB5E +:108300000A214D4812F05AFB01213F4812F056FB5A +:1083100021463B480FF0DEFF39480FF0E7FF0C2104 +:10832000424812F04BFB0121374812F047FB5946F7 +:1083300033480FF0CFFF0121334812F03FFB1021EB +:108340003E4812F03BFB2E480FF0D0FF2E2136485E +:1083500012F034FB2A480FF0C9FF2E21324812F0E8 +:108360002DFB27480FF0C2FF0021244812F026FB06 +:1083700023480FF0BBFF2846BDE8F84FFFF7C2BC0B +:1083800017212F4812F01AFB01211F4812F016FB8B +:10839000A96823460A22096819484968C1F383314C +:1083A0000FF0C0FF0121184812F008FB02212548F8 +:1083B00012F004FB0121144812F000FB234695F84B +:1083C0002D100A220E480FF0ADFF0D480FF08EFF62 +:1083D000AA6895F82D30284611689B034A6803F473 +:1083E000703322F4703213434B60FFF793FBBDE808 +:1083F000F88F00BF0000000000408F40183D0020B3 +:10840000684C002088370020EC2300205C3C0020D2 +:10841000D03E002008BB0020643C002050310020EA +:10842000F83E0020003F0020B4400020E44000203F +:10843000F4400020A0330020084100201441002017 +:1084400028410020503200202DE9F04FC0E90123DF +:1084500085B00160D2F80811502204462023C16083 +:108460004FF480710092103001220E9E0AF03CFF02 +:10847000DA4B002562681B684FF001082664294624 +:10848000D74E04F148000292656306F1480725873C +:1084900084F83A50E2634FF4936284F8445084F8CD +:1084A000455084F84650C4E909352A23C4E90B85B0 +:1084B00084F8473014F024FA338F706B06F1800C87 +:1084C000A4F84D30C74BC4F84900E365C4F84F50D9 +:1084D000C4F85350C4F8575084F85B5006F1640553 +:1084E00084F848800FCFC4F86300C4F86710C4F85C +:1084F0006F30C4F86B2003CF3B8804F22717C4F811 +:108500007300C4F87710A4F87B300FCDC4F888202E +:10851000C4F88C30C4F88000C4F8841003CD2B78E4 +:1085200006F1F005C4F89000C4F8941084F898306F +:10853000BCE80F00C4F89C00C4F8A010C4F8A42044 +:108540005522C4F8A830BCE80300C4F8AC0004F11C +:10855000B500C4F8B01006F1980110F00FFB06F555 +:10856000867C06F59E7684F825810FCDC4F80B0134 +:10857000C4F80F11C4F81731C4F8132103CD2B78B8 +:10858000C4F81B01C4F81F1184F823316546103765 +:108590000CF1100C0FCDB54247F8100C47F80C1C2D +:1085A00047F8082C47F8043CF0D1BCF80430DCF85C +:1085B0000000BB804FF001038B4D386084F87931A7 +:1085C0000FCDC4F85E01C4F86211C4F86A31C4F872 +:1085D000662103CDAC46C4F86E01C4F8721105F1F2 +:1085E000200B3CF8043B05F13C0A05F1580905F164 +:1085F0007406A4F8763105F1AC0305F1900805F195 +:10860000C40E039305F1E007FC35BCE80F00C4F885 +:108610007B01C4F87F11C4F88321C4F88731BCE81A +:108620000300C4F88B01C4F88F11BCF800304FF080 +:10863000010CA4F8933184F896C184F8B2C184F88F +:10864000CEC1BBE80F00C4F89801C4F89C11C4F86F +:10865000A431C4F8A021BBE803009BF80030C4F8A3 +:10866000A801C4F8AC1184F8B031BAE80F00C4F81E +:10867000B401C4F8B811C4F8C031C4F8BC21BAE8D8 +:1086800003009AF80030C4F8C401C4F8C81184F893 +:10869000CC31B9E80F00C4F8D001C4F8D411C4F843 +:1086A000DC31C4F8D821B9E8030099F800304FF064 +:1086B0000409C4F8E001C4F8E41184F8E8310FCEED +:1086C000C4F8EA01C4F8EE11C4F8F631C4F8F22196 +:1086D00003CE3388C4F8FA01A4F80232B378C4F8A0 +:1086E000FE1184F80432B8E80F00C4F80702C4F899 +:1086F0000B12039EC4F81332C4F80F22A4F83A9266 +:10870000E14684F83CC2B8E80300B8F80030C4F889 +:108710001702C4F81B12A4F81F320FCEC4F82202AD +:10872000C4F82612C4F82A22C4F82E3203CEC4F8A4 +:108730003202C4F83612BEE80F00C4F83E02C4F894 +:108740004212C4F84A32C4F84622BEE80300BEF81A +:108750000030C4F84E02A4F856329EF80230C4F835 +:10876000521284F858320FCFC4F85B02C4F85F127B +:10877000C4F86732C4F8632203CF3B88C4F86B02A5 +:10878000C4F86F12A4F873320FCDC4F883324FF0DF +:108790000603C4F87F22FE22C4F87702C4F87B12D5 +:1087A00003CD84F893324FF00503C4F8870284F8B0 +:1087B000E0342B88029DC4F88B120021A4F88F327C +:1087C000681D14F09DF80023204685F800906B701A +:1087D000AB70EB702B7105B0BDE8F08F08BB0020CB +:1087E00024090020FFFF0500680A002070B54FF43F +:1087F0008053044600217448236312F0DFF8734865 +:108800000FF074FD2B21724812F0D8F86F480FF06A +:108810006DFD10216F4812F0D1F86C480FF066FD25 +:1088200094F8E03404F10C00103384F8E034FEF7DF +:10883000B9FFA28B41F2FB739A4200F2D98000216A +:10884000614812F0BBF861480FF050FD2E216248DC +:1088500012F0B4F85D480FF049FD2E215E4812F089 +:10886000ADF85A480FF042FD2E215B4812F0A6F8F1 +:1088700056480FF03BFD2E21574812F09FF8534801 +:108880000FF034FD0121554812F098F83421544876 +:1088900012F094F84D480FF029FD01214F4812F0D5 +:1088A0008DF82C214F4812F089F848480FF01EFD32 +:1088B00001214A4812F082F8A18B44480FF00AFDCA +:1088C00042480FF013FD2E21434812F077F83F483D +:1088D0000FF00CFD2E21404812F070F83B480FF0CD +:1088E00005FD2E213C4812F069F838480FF0FEFCD7 +:1088F0002E21394812F062F834480FF0F7FC0021BD +:10890000314812F05BF831480FF0F0FC00212E489E +:1089100012F054F82D480FF0E9FC2E212E4812F0E9 +:108920004DF82A480FF0E2FC2E212B4812F046F8B1 +:1089300026480FF0DBFC2E21274812F03FF8234891 +:108940000FF0D4FC2E21244812F038F81F480FF005 +:10895000CDFC0121214812F031F81821224812F0F3 +:108960002DF81A480FF0C2FC01211C4812F026F81D +:108970003F211E4812F022F814480FF0B7FC2E21B8 +:10898000154812F01BF811480FF0B0FC2E211248C8 +:1089900012F014F80D480FF0A9FC2E210E4812F029 +:1089A0000DF80A480FF0A2FC2E210B4812F006F831 +:1089B00006480FF09BFC0021034811F0FFFF03481D +:1089C0000FF094FCFEE700BF183D0020684C00202B +:1089D000483F0020743F002050190020EC23002065 +:1089E000883F0020C03F0020D0190020EC19002053 +:1089F0002821644811F0E2FF63480FF077FC1D2145 +:108A0000624811F0DBFF60480FF070FCA38B604AF6 +:108A10009B08A1685F4DA2FB03230A682E685B0ACE +:108A20005268012BC2F3015238BF0123934294BF15 +:108A300094F82F2084F82F20002A40F09F802046B1 +:108A4000FFF774FB1E21544811F0B8FF0121534871 +:108A500011F0B4FF296800230A22891B4A480FF04D +:108A600061FC01214D4811F0A9FF02214C4811F091 +:108A7000A5FF45480FF03AFC2821424811F09EFF1F +:108A800041480FF033FCA268236B1521156843F4AD +:108A9000E06244486B682263C3F3833384F82D306B +:108AA00011F08CFF022138480FF014FC01213E48E0 +:108AB00011F084FF022134480FF00CFC01213A48E8 +:108AC00011F07CFF022130480FF004FC01213748EF +:108AD00011F074FF2C480FF009FC2221344811F0EA +:108AE0006DFF236828485988090A0FF0F3FB01211C +:108AF0002D4811F063FF2368234899780FF0EAFBB3 +:108B000001212A4811F05AFF1F480FF0EFFB0A21FC +:108B1000284811F053FF0121204811F04FFF002396 +:108B20000A2294F82D1018480FF0FCFB16480FF09D +:108B3000DDFB0E21204811F041FF0121174811F003 +:108B40003DFF00230A2294F82F100F480FF0EAFB94 +:108B50000D480FF0CBFB2B21184811F02FFF0A48CE +:108B60000FF0C4FB0021164811F028FF06480FF053 +:108B7000BDFB236B23F48053236370BD2046FFF7B6 +:108B8000D5FA5CE7F03F0020684C00201C40002034 +:108B90009990635508BB00203C400020EC23002046 +:108BA000BC3A00205C400020503100207040002082 +:108BB0007440002098400020A4400020483F00203E +:108BC000183D0020036B23F480230363704700BF2C +:108BD000026B03465107C2F3800003D522F0040262 +:108BE00001201A63704700BF026B03461107C2F3EE +:108BF000C00003D522F0080201201A63704700BFAD +:108C00004368D3F80831D86DC0F38000704700BFC7 +:108C1000026B03469107C2F3400003D522F0020223 +:108C200001201A63704700BF042998BF80F82E10F6 +:108C3000704700BF90F82E00704700BF41F2FC72F1 +:108C400090F82F0002FB00F0704700BF41F2FC7368 +:108C500090F82F0003FB00F004307047C90001F1C9 +:108C60003400704701EB011101F27460704700BFDE +:108C7000490001F6F4607047C1EBC10101F61470C0 +:108C8000704700BF01EBC10101F61B70704700BFC8 +:108C900001EB810101F62470704700BF01EB8101F7 +:108CA000480000F62970704701EBC10141F2A9109C +:108CB00000EB4100704700BF01EB810141F2392018 +:108CC00000EB4100704700BF01EB410341F2B940A6 +:108CD00001EB83010844704701EB410141F2D340AD +:108CE0000844704701EB410141F2E24000EB4100D2 +:108CF000704700BF01EB410141F2E84000EB410049 +:108D0000704700BF01EBC10141F2EE4000EB4100B2 +:108D1000704700BF41F2365000EB8100704700BF42 +:108D200001EB410141F246500844704701EB41011B +:108D300041F24C500844704784B0F0B585B00DF155 +:108D40002C0C9DF834418CE80E009DF82D309DF8D8 +:108D50003021F02B02D190F82C1021B905B0BDE8DC +:108D6000F04004B07047BDF82F306BB90DF13102FF +:108D7000406802940024CDE9004408F0D1FB05B01E +:108D8000BDE8F04004B070473AB303F128026A44EA +:108D9000157AF72D01D0FD2B21D90127DF1B9DF876 +:108DA00031C00DF13102BCF1F00FBFB214BF70251C +:108DB000002567B17E1E964612FA86F601E01EF87F +:108DC00001CF0CF07F0C764585EA0C05F7D107F151 +:108DD00028060DEB06077D72CAE70227DEE701339E +:108DE0008DF82F3000238DF830305372BDF82F30BE +:108DF000D3E700BF2DE9F04F1B01ADF5037D07461A +:108E00000E4641AC5FFA83F89DF830920023154678 +:108E100090F82CB023602371B9F1000F02D1C36B1D +:108E200093F800B0FA2200210DF20D1097F82DA052 +:108E300013F066FDF0230121FA6B63707D2301FAC4 +:108E40000BF10AF07F0A637147F67D53C9B284F8CB +:108E50000980E3807F2384F808A02373537B21706B +:108E6000F02B03D0F72B18BF03F07F036373B30B12 +:108E7000A373C6F3C61306F07F06E3732B0F2674A5 +:108E80006374C5F34653A374C5F38633E374C5F323 +:108E9000C61305F07F05237511236575927AE3707B +:108EA000F02A1BD0F72A19D002F07F021223A275F4 +:108EB000E370B9F1000F3AD10123002044A9F72251 +:108EC000CDE93E3068460FF059FE384694E80E0072 +:108ED000FFF732FF0DF5037DBDE8F08F1223A27579 +:108EE000E370B9F1000FE7D0F72A20D11126B04680 +:108EF00000207D2270250DF2091E01E01EF8012FD1 +:108F0000013002F07F021FFA80FC5540C445F5D3C2 +:108F1000A2190024786855710DF209120094CDE968 +:108F2000014408F0FDFA0DF5037DBDE8F08F132331 +:108F30001226E370B046DBE7C26B5378F02B13D1F7 +:108F4000B2F803300A2B0FD970B591790446D07965 +:108F500084B0090441EA0021107A01435748814254 +:108F600004D0002004B070BD0020704794F82D009C +:108F7000517A884229D094F8451001B31078014203 +:108F800020D194F846501DB984F84600B2F8033059 +:108F90000025012605320096CDE90155606808F0EC +:108FA000BFFAE46BFE222946601D13F0A9FC284697 +:108FB0006570A570E5702571267004B070BD084617 +:108FC00004B070BD94F84610E2E7023B13F0FF03D3 +:108FD00071D05D1E511D101D002611FA85F510F887 +:108FE000011F01F07F01A84286EA0106F7D1134470 +:108FF0005B79B3421FD1937A204603F07F0384F854 +:109000004430527B7E2A53D09B0711D507F026FDB2 +:10901000E46BFE220021601D13F072FC012200238C +:10902000104622706370A370E370237104B070BDAA +:1090300007F058F8ECE70021214811F0BFFC214867 +:109040000FF054F92E21204811F0B8FC1D480FF004 +:109050004DF92E211C4811F0B1FC1A480FF046F9C9 +:1090600001211A4811F0AAFC1921194811F0A6FC97 +:1090700014480FF03BF92E21134811F09FFC1148C2 +:109080000FF034F92E21104811F098FC0D480FF024 +:109090002DF900210A4811F091FC0A480FF026F939 +:1090A00000230922012120460093FFF7A3FEAFE72A +:1090B00007F0EEFCACE71E4699E700BF7D7D7D0022 +:1090C000183D0020684C0020B4400020EC23002014 +:1090D0002C3F00202AB1F02903D0F72918BF01F056 +:1090E0007F01B0F80330FD2B07D800EB030C002202 +:1090F00001338CF80510C3700271704769B170B507 +:10910000054608460C4613F061FF2B6802462146CF +:1091100028465B68BDE870401847704738B504467C +:1091200049B108460D4613F051FF2368024629460F +:109130005B68204698472046BDE838400FF0D6B817 +:109140000439844630B587B0252919D8DFE801F005 +:109150004713184E181818181818551818181818F2 +:1091600018185C182D181843182D2D182D181818BC +:10917000181818181863002A00F08D80012A5AD098 +:10918000464C01AD0FCCAE460FC52368CCF810306D +:10919000BEE80F00CCF800006046CCF80410CCF814 +:1091A0000820CCF80C3007B030BD3C4C0DF1040E5B +:1091B0000FCC7546AEE80F002368CCF810300FCD09 +:1091C000CCF800006046CCF80410CCF80820CCF8AD +:1091D0000C3007B030BD002AD2D1314C1CE0052A3A +:1091E000CED8DFE802F0565452504E4C042AC7D86D +:1091F000DFE802F02B2927252300052AC0D8DFE865 +:1092000002F0262A283A3836052AB9D8DFE802F0D3 +:109210002D2B29272535234C0FCCCCF800002068B6 +:10922000CCF80410CCF810006046CCF80820CCF83C +:109230000C3007B030BD1C4CEEE71C4CECE71C4C6E +:10924000EAE71C4CE8E71C4CE6E71C4CE4E71C4C46 +:10925000E2E71C4CE0E71C4CDEE71C4CDCE71C4C56 +:10926000DAE71C4CD8E71C4CD6E71C4CD4E71C4C66 +:10927000D2E71C4CD0E71C4CCEE71C4CCCE71C4C76 +:10928000CAE71C4CC8E71C4CC6E71C4CC4E71C4C86 +:10929000C2E71C4CC0E71C4CBEE700BFAC0B002073 +:1092A0003C0D0020980B00204C0C0020B00C00203E +:1092B0009C0C0020880C0020740C0020600C002006 +:1092C000C40C0020EC0C0020D80C0020A00D0020C5 +:1092D0008C0D0020780D0020640D0020500D002022 +:1092E000280D0020140D0020000D0020B40D0020DA +:1092F000240C0020100C0020FC0B0020E80B0020A8 +:10930000D40B0020C00B0020380C0020B0F8032044 +:109310004B1C934201DB00207047014418444B79F9 +:109320004079DB0100F07F0003F47E53184370475F +:109330002DE9F843BDF824700446884616460021FE +:10934000F6220D301D469DF8209013F0D9FAC7F390 +:10935000C612082306F07F0609F07F09A2720122D7 +:10936000E3707D2305F07F0507F07F07F02102FA07 +:1093700008F26371A371E3710023267284F80990E7 +:109380002573E77261702270A3702371BDE8F883C2 +:1093900070B5ADF5027D002605460B2341AC419624 +:1093A0008DF80861CDE9006690F82D2090F82C101A +:1093B0002046FFF7BDFF012344A9F7226846CDE907 +:1093C0003E360FF0DBFB284694E80E00FFF7B4FCB6 +:1093D0000DF5027D70BD00BF2DE9F0430546ADF5EA +:1093E000037D21B1C36BB3F803300B2B4BD800279F +:1093F00041AC00260F232046CDE90066266095F893 +:109400002D2095F82C102671FFF792FFB4F8033049 +:10941000FD2B2AD90123002244A96846CDE93E321A +:10942000F7220FF0ABFB284694E80E00FFF784FC10 +:109430001FB90DF5037DBDE8F0836B68D3F80431E7 +:10944000D3F88070002FF4D02E6C6C4606F1100516 +:109450000FCD0FC495E8070084E8070096E80F00D9 +:10946000B8470DF5037DBDE8F0835A1C23442671EF +:10947000E2705E71B4F80330FD2BCBD8E2180133F3 +:109480005771E370C6E7046C0021227A04F10900E9 +:1094900013F036FA00232372EA6B23806360B2F87C +:1094A0000300296C0B280BD9137C907B03F07F03FE +:1094B00043EA8033D07BC00100F47E5003439BB26B +:1094C0000B80B2F80330102B0DD800234B60B2F89C +:1094D0000330112B1DD800230B722C6C267A012E21 +:1094E0001BD8012784E7537D507C03F07F0343EAB8 +:1094F0000073107DC00100F47E500343D07C8003D4 +:1095000000F4FE100343907C400500F07E600343AE +:10951000DCE7937D03F07F03DEE7EF6B06F11209D2 +:10952000B7F803309945DCDA04F109080021324626 +:109530000834404613F0E4F912235FFA89F1FA186F +:109540000133DBB25279994204F8012FF7D1B044CC +:109550000023012708F8013C4AE700BF70B5054623 +:10956000ADF5027D21B1C36BB3F803200B2A2AD8D5 +:1095700041AC00260C2395F82D202046CDE900664D +:10958000266095F82C102671FFF7D2FEB4F8033050 +:10959000FD2B07D82A6BE11801332671C2F3401264 +:1095A000E3704A7101230021F7226846CDE93E317C +:1095B00044A90FF0E3FA284694E80E00FFF7BCFB3D +:1095C0000DF5027D70BD997B036B11F07F040C4893 +:1095D0004FF01F0114BF43F0200323F020032B633F +:1095E00011F0ECF90121074811F0E8F900230A22F3 +:1095F000214605480EF096FE03480EF077FEB7E7C9 +:10960000B43D0020EC230020684C0020B0F803306B +:10961000FD2B00D97047C218C1F3C61C013301F0FD +:109620007F0182F805C00022C3700271B0F80330D8 +:10963000FD2BEFD8C21801335171C370704700BFC2 +:10964000B0F80330FD2B00D9704700EB030C8A0BF8 +:1096500001338CF805200022C370C1F3C61C0271CF +:10966000B0F80330FD2BEFD8C218013301F07F01B1 +:1096700082F805C0C370B0F80330FD2BE4D8C218DF +:1096800001335171C370704730B587B00C4612B2C8 +:109690001946054601A8FFF753FDBDF80410204602 +:1096A000FFF7B4FFBDF806102046FFF7AFFFB4F890 +:1096B0000330BDF90820FD2B73D9BDF80A102046F0 +:1096C000FFF7BEFFBDF80C102046FFF7B9FFB4F856 +:1096D00003309DF80E20FD2B42D9BDF81210204614 +:1096E000FFF794FFB4F80330FD2B09D8BDF8142020 +:1096F000E118013302F07F024A710022E370227107 +:1097000029782046FFF782FFB4F80330FD2B5CD99F +:109710006A1C05F111004FF0000E03E082421DD0DB +:10972000B4F80330FD2B12F8011FF7D84FEAD11C13 +:10973000E518013301F07F0185F805C0E37084F876 +:1097400004E0B4F80330FD2B04EB030C03F1010338 +:10975000E4D882428CF80510E370E1D107B030BD47 +:10976000E11802F07F0201334A710021E370217198 +:10977000B4F803309DF80F20FD2B02F07F02ACD827 +:10978000E11801334A71E370B4F803309DF81020FA +:10979000FD2B02F07F02A0D8E11801334A71E3707B +:1097A0009BE7E118C2F3C610013302F07F02487153 +:1097B0000021E3702171B4F80330FD2B3FF67DAF3B +:1097C000E11801334A71E37077E7E21801210133B0 +:1097D00051710022E3702271B4F80330FD2B97D849 +:1097E000E2180B4410215171E370B4F803306A7829 +:1097F000FD2B4FEAD2108BD8E118013302F07F0223 +:109800004871E370B4F80330FD2B81D8E1180133BF +:109810004A71E370B4F803307AE700BF30B587B01F +:109820000C4612B21946054601A8FFF789FCBDF89F +:1098300004102046FFF7EAFEBDF806102046FFF7A9 +:10984000E5FEB4F80330BDF90820FD2B73D9BDF84F +:109850000A102046FFF7F4FEBDF80C102046FFF773 +:10986000EFFEB4F803309DF80E20FD2B42D9BDF871 +:1098700012102046FFF7CAFEB4F80330FD2B09D8BA +:10988000BDF81420E118013302F07F024A71002272 +:10989000E370227129782046FFF7B8FEB4F8033050 +:1098A000FD2B5CD96A1C05F109004FF0000E03E0A6 +:1098B00082421DD0B4F80330FD2B12F8011FF7D8F7 +:1098C0004FEAD11CE518013301F07F0185F805C08E +:1098D000E37084F804E0B4F80330FD2B04EB030CD0 +:1098E00003F10103E4D882428CF80510E370E1D162 +:1098F00007B030BDE11802F07F0201334A71002148 +:10990000E3702171B4F803309DF80F20FD2B02F0B5 +:109910007F02ACD8E11801334A71E370B4F8033028 +:109920009DF81020FD2B02F07F02A0D8E118013332 +:109930004A71E3709BE7E118C2F3C610013302F0ED +:109940007F0248710021E3702171B4F80330FD2BD0 +:109950003FF67DAFE11801334A71E37077E7E21813 +:109960000121013351710022E3702271B4F80330F8 +:10997000FD2B97D8E2180B4408215171E370B4F81D +:1099800003306A78FD2B4FEAD2108BD8E1180133EF +:1099900002F07F024871E370B4F80330FD2B81D8E8 +:1099A000E11801334A71E370B4F803307AE700BF7D +:1099B00030B587B00C4612B21946054601A8FFF72C +:1099C000BFFBBDF804102046FFF720FEBDF80610CF +:1099D0002046FFF71BFEB4F80330BDF90820FD2B2D +:1099E0001DD9BDF80A102046FFF72AFEBDF80C105D +:1099F0002046FFF725FEB4F803309DF80E20FD2B1E +:109A00004AD929782046FFF701FEB4F80330FD2B30 +:109A100018D9A9782046FFF7F9FD07B030BDE11845 +:109A2000C2F3C610013302F07F0248710021E370D7 +:109A30002171B4F80330FD2BD3D8E11801334A71FA +:109A4000E370CEE7E11801224A7113440021E3706C +:109A50002171B4F80330FD2BDBD8E11813444A71AF +:109A6000E370B4F803306A78FD2B4FEAD210D0D8F7 +:109A7000E118013302F07F024871E370B4F803305B +:109A8000FD2BC6D8E118013320464A71E370A9784E +:109A9000FFF7BCFD07B030BDE11802F07F020133D3 +:109AA0004A710021E3702171B4F803309DF80F2052 +:109AB000FD2B02F07F02A4D8E11801334A71E37054 +:109AC000B4F803309DF81020FD2B02F07F0298D8E7 +:109AD000E11801334A71E370B4F80330BDF8122085 +:109AE000FD2BC2F3C6108CD8E118013302F07F02BF +:109AF0004871E370B4F80330FD2B82D8E1180133CC +:109B00004A71E370B4F80330BDF81420FD2B02F065 +:109B10007F023FF676AFE11801334A71E37070E7D8 +:109B200070B586B00C4612B21946054601A8FFF77B +:109B300007FBBDF804102046FFF768FDB4F80330BA +:109B4000BDF90620FD2B40F2A080BDF8081020468C +:109B5000FFF75CFDBDF80A102046FFF771FDBDF868 +:109B60000C102046FFF76CFDB4F803309DF80E2072 +:109B7000FD2B68D9BDF812102046FFF747FDB4F859 +:109B80000330FD2B09D8BDF81420E118013302F091 +:109B90007F024A710022E370227129782046FFF784 +:109BA00035FDB4F80330FD2B40F283806A1C05F1CB +:109BB000070C002602E0013262451CD0FD2BFAD8CA +:109BC0001178E01801334FEAD11E01F07F0180F8CF +:109BD00005E0E3702671B4F80330FD2B04EB030EAF +:109BE00003F10100E7D801328EF80510E0706245FC +:109BF000B4F80330E2D1AA1D05F10C004FF0000EBD +:109C000003E090421DD0B4F80330FD2B12F8011F81 +:109C1000F7D84FEAD11CE518013301F07F0185F830 +:109C200005C0E37084F804E0B4F80330FD2B04EBC6 +:109C3000030C03F10103E4D890428CF80510E370A3 +:109C4000E1D106B070BDE11802F07F0201334A7124 +:109C50000021E3702171B4F803309DF80F20FD2B33 +:109C600002F07F0286D8E11801334A71E370B4F83C +:109C700003309DF81020FD2B02F07F023FF67AAFF3 +:109C8000E11801334A71E37074E7E118C2F3C610BA +:109C9000013302F07F0248710021E3702171B4F8B2 +:109CA0000330FD2B3FF651AFE11801334A71E370E9 +:109CB0004BE7E118062201334A710021E37021715C +:109CC000B4F80330FD2B3FF671AFE11801334A7150 +:109CD000E370B4F8033069E730B587B00C4612B2D0 +:109CE0001946054601A8FFF72BFAB4F80330BDF971 +:109CF0000420FD2B47D9BDF806102046FFF786FC4F +:109D0000BDF808102046FFF781FCBDF80A10204678 +:109D1000FFF796FCBDF80C102046FFF791FCB4F855 +:109D200003309DF80E20FD2B52D929782046FFF7ED +:109D30006DFCB4F80330FD2B38D928464FF0000EE7 +:109D4000A91D03E088421CD0B4F80330FD2B10F8A5 +:109D5000012FF7D8E5184FEAD21C013302F07F0239 +:109D600085F805C0E37084F804E0B4F80330FD2BF7 +:109D700004EB030503F10103E4D888426A71E37040 +:109D8000E2D107B030BDE118C2F3C610013302F0D2 +:109D90007F0248710021E3702171B4F80330FD2B7C +:109DA000A9D8E11801334A71E370A4E7E118002251 +:109DB00001334A712271E370B4F80330FD2BBCD833 +:109DC000E218062101335171E370B4F80330B4E7AF +:109DD000E11802F07F0201334A710021E370217122 +:109DE000B4F803309DF80F20FD2B02F07F029CD8C1 +:109DF000E11801334A71E370B4F803309DF8102084 +:109E0000FD2B02F07F0290D8E11801334A71E37014 +:109E1000B4F80330BDF81220FD2BC2F3C61084D86D +:109E2000E118013302F07F024871E370B4F80330A7 +:109E3000FD2B3FF67AAFE11801334A71E370B4F8B5 +:109E40000330BDF81420FD2B02F07F023FF66DAF0A +:109E5000E11801334A71E37067E700BFB0F80330DF +:109E6000FD2B00D9704700EB030C0A0F01338CF86F +:109E700005200022C370C1F3465C0271B0F80330C4 +:109E8000FD2BEFD8C218013382F805C0C1F3863C20 +:109E9000C370B0F80330FD2BE4D8C218013382F848 +:109EA00005C0C1F3C61CC370B0F80330FD2BD9D870 +:109EB000C218013301F07F0182F805C0C370B0F809 +:109EC0000330FD2BCED8C21801335171C3707047D7 +:109ED0002DE9F04FADF50B7D0646C36B40AFB3F8EF +:109EE0000320072A00F2F880002007F1240496F8E6 +:109EF0002D207D232060207196F82C10CDE90000E4 +:109F00002046FFF715FAB4F80330FD2B40F2178115 +:109F1000BE492046FFF7A2FF336820465988FFF765 +:109F20008FFB41F2FC712046FFF798FFB8492046AD +:109F3000FFF794FFC8212046FFF768FB80212046E9 +:109F4000FFF764FBB4F80330FD2B06D8E1181120AD +:109F5000013300224871E370227140212046FFF74F +:109F600055FBB4F80330FD2B40F2568140212046CA +:109F7000FFF74CFB05212046FFF748FB0621204652 +:109F8000FFF744FB06212046FFF740FB0221204655 +:109F9000FFF73CFB00212046FFF738FB002120465D +:109FA000FFF734FB00212046FFF730FB002120465D +:109FB000FFF72CFB00212046FFF728FB0521204658 +:109FC000FFF724FB00212046FFF720FB002120465D +:109FD000FFF71CFB00212046FFF718FB002120465D +:109FE000FFF714FB00212046FFF710FB002120465D +:109FF000FFF70CFB06212046FFF708FB0021204657 +:10A00000FFF704FB00212046FFF700FB002120465C +:10A01000FFF7FCFA01212046FFF7F8FAB4F8033005 +:10A02000FD2B78D8581C002223440621E0702271B1 +:10A03000B4F803005971FD286DD825180130E0707F +:10A04000B4F803306A71FD2B65D8E018013301259F +:10A05000E370B4F803304571FD2B5CD8E0182B4455 +:10A06000E370B4F803304271FD2B54D8E0182B4450 +:10A07000E370B4F803304271FD2B4CD8E0182B4448 +:10A08000E370B4F803304271FD2B44D8E0182B4440 +:10A09000E370B4F803304171FD2B3CD8E0182B4439 +:10A0A000E370B4F803304171FD2B34D85819E1182E +:10A0B000E070B4F803304A71FD2B2CD85819E2181F +:10A0C0000021E070B4F803305171FD2B23D8E21861 +:10A0D0002B445171E3701EE0DA7A07F124041B7BF4 +:10A0E0000025D20190F82C1003F07F03256002F4C4 +:10A0F0007E52257143EA020990F82D207D232046E7 +:10A10000CDE90059FFF714F9B9F1000F3FF4FBAEA8 +:10A11000B9F1010F1BD00123002007F13001F72214 +:10A120003F9068463E930EF029FD304694E80E00BD +:10A13000FEF702FE07F59677BD46BDE8F08FE11801 +:10A140002820013300224871E3702271E0E6314992 +:10A15000381D0EF007FAF9684A4620460131E946F3 +:10A1600001F07F01FEF7B6FF391D07F114000EF074 +:10A170009FF997F81C802B4607F1140008F1010B9A +:10A180005FFA8BFB0BF1070202F4FC72ADEB020DE0 +:10A190005A460DF5807A51460EF0F8F9BBF1000FE2 +:10A1A0002AD02B46284610E0FD2A08D81AF80310BA +:10A1B000A5180132207101F07F01E27069719845A4 +:10A1C00003F1010318D0202B0CD0DAB24245B4F8C9 +:10A1D0000320E9D1FD2AF2D8A1180132207148717B +:10A1E000E270ECE7B4F80330FD2B05D80022E1184B +:10A1F000013322714A71E37007F11400CD460EF06D +:10A2000075F9381D0EF072F985E700BF02020200F1 +:10A21000A375898000240020591C002223440820B3 +:10A22000E1702271B4F803105871FD293FF69EAE1B +:10A2300065180131E170B4F803306871FD2B3FF609 +:10A2400095AEE1180133E370B4F803304871FD2B8B +:10A250003FF68CAEE01801330421E370B4F803300C +:10A260004171FD2B3FF682AEE0180133E370B4F884 +:10A2700003304171FD2B3FF679AEE0180133022522 +:10A28000E370B4F803304571FD2B3FF66FAEE01874 +:10A290000133E370B4F803304171FD2B3FF666AE35 +:10A2A000E0180133E370B4F803304271FD2B3FF640 +:10A2B0005DAE581CE218E070B4F803305171FD2B0C +:10A2C0003FF654AE581CE2180821E070B4F8033091 +:10A2D0005171FD2B3FF64AAEE21801331020E370B6 +:10A2E000B4F803305071FD2B3FF640AEE218013355 +:10A2F0005171E3703AE600BF70B5ADF5027D0025FF +:10A3000006460E2341ACCDE90055256090F82D207E +:10A3100090F82C1020462571FFF70AF87368204644 +:10A32000D3F80831996EFFF799FDB4F80330FD2B8F +:10A3300010D901230021F7226846CDE93E3144A916 +:10A340000EF01CFC304694E80E00FEF7F5FC0DF50F +:10A35000027D70BDE21801332571E370B4F803305B +:10A360005571FD2BE5D8E2180133E370B4F80330E2 +:10A370005571FD2BDDD8E2180133E370B4F80330DA +:10A380005571FD2BD5D8E2180133E370B4F80330D2 +:10A390005571FD2BCDD8E21801335571E370C8E734 +:10A3A00038B50368B3F86030DB0700D438BD0D461C +:10A3B00004460021124810F001FB12480DF096FFF0 +:10A3C0000321114810F0FAFA0121104810F0F6FAB2 +:10A3D00035B1284612F0FAFD0146284610F0EEFA93 +:10A3E00001210A4810F0EAFA0821094810F0E6FABB +:10A3F0000121064810F0E2FA0EF0F6FAE06138BDED +:10A40000183D0020684C002088370020EC230020F5 +:10A41000D03E00200368B3F86030DB0700D47047FB +:10A4200010B504210446174810F0C8FA0121164857 +:10A4300010F0C4FA0EF0D8FAE3690221C31A1348E7 +:10A4400000EE103A9FED0D7BB8EE400B80EE070B4F +:10A450000DF07CFF01210C4810F0B0FA0C210C48E3 +:10A4600010F0ACFA09480DF041FF0021094810F046 +:10A47000A5FA0648BDE810400DF038BF0000000006 +:10A4800000408F40F83E0020EC230020684C002064 +:10A49000003F0020183D00202DE9F04F05460C46F6 +:10A4A00085B0FEF7D3FB214606462846FEF704FC9E +:10A4B0002A4604EB840441F23D23B6B203EB440385 +:10A4C00052F80C4B06441C44EB68B6B20192B3F848 +:10A4D0006030DB0721D50021444810F06FFA444872 +:10A4E0000DF004FF0321434810F068FA01214248AF +:10A4F00010F064FA0821414810F060FA01213E484A +:10A5000010F05CFA08213E4810F058FA01213A4850 +:10A5100010F054FA0EF068FAA8620E21394810F0D3 +:10A520004DFA06F10A08731C374F05F11009361B66 +:10A53000984534BF4FF001084FF00A083B684FF0D0 +:10A54000000ADFF8C8B0A0442B6206E03B682A6A24 +:10A550009B1AF92B1CD8444522D0A11914F8013BB1 +:10A56000484600918DF80F3009F02CF89DF80F3017 +:10A5700000999842EAD001230DF10F0248460AF1F2 +:10A58000010A08F015FF3B682A6A9B1AF92BE2D9E9 +:10A590000121584610F012FA3B6844452B62DCD189 +:10A5A00001211A4810F00AFA11480DF09FFE092106 +:10A5B000174810F003FA01210F4810F0FFF90023AB +:10A5C0000A2251460A480DF0ADFE01210A4810F05A +:10A5D000F5F905210F4810F0F1F905480DF086FE58 +:10A5E0000198FFF717FF05B0BDE8F08F183D002078 +:10A5F000684C002088370020EC230020C43E002057 +:10A60000D03E0020DC3E002008BB0020503100205E +:10A61000EC3E0020482400202DE9F04F0C46054672 +:10A6200085B0FEF713FB214606462846FEF73CFBA5 +:10A6300041F2AD121223B6B213FB04232A4606449C +:10A6400052F80C4BB6B21C44EB680192B3F8603080 +:10A65000DB0721D50021454810F0B0F944480DF042 +:10A6600045FE0321434810F0A9F90121424810F0AA +:10A67000A5F90821414810F0A1F901213E4810F048 +:10A680009DF908213E4810F099F901213A4810F04F +:10A6900095F90EF0A9F9A8620E213A4810F08EF94A +:10A6A00006F11209731C384F05F11008361B994545 +:10A6B00034BF4FF001094FF012093B684FF0000A18 +:10A6C000DFF8C8B0A1442B6206E03B682A6A9B1AF7 +:10A6D000F92B1CD84C4522D0A11914F8013B404657 +:10A6E00000918DF80F3008F06DFF9DF80F30009944 +:10A6F0009842EAD001230DF10F0240460AF1010A07 +:10A7000008F056FE3B682A6A9B1AF92BE2D9012110 +:10A71000584610F053F93B684C452B62DCD10121BF +:10A720001A4810F04BF912480DF0E0FD09211848C5 +:10A7300010F044F90121104810F040F900230A22DA +:10A7400051460B480DF0EEFD01210B4810F036F993 +:10A750000521104810F032F905480DF0C7FD0198A9 +:10A76000FFF758FE05B0BDE8F08F00BF183D002090 +:10A77000684C002088370020EC230020C43E0020D5 +:10A78000D03E0020DC3E002008BB002050310020DD +:10A79000EC3E0020482400202DE9F04F0C460546F1 +:10A7A00085B0FEF753FA214606462846FEF78CFA96 +:10A7B00041F2BD420D23B6B213FB04232A460644E0 +:10A7C00052F80C4BB6B21C44EB680192B3F86030FF +:10A7D000DB0721D50021454810F0F0F844480DF082 +:10A7E00085FD0321434810F0E9F80121424810F0AB +:10A7F000E5F80821414810F0E1F801213E4810F049 +:10A80000DDF808213E4810F0D9F801213A4810F04F +:10A81000D5F80EF0E9F8A8620E213A4810F0CEF80B +:10A8200006F10D09731C384F05F11008361B9945C8 +:10A8300034BF4FF001094FF00D093B684FF0000A9B +:10A84000DFF8C8B0A1442B6206E03B682A6A9B1A75 +:10A85000F92B1CD84C4522D0A11914F8013B4046D5 +:10A8600000918DF80F3008F0ADFE9DF80F30009983 +:10A870009842EAD001230DF10F0240460AF1010A85 +:10A8800008F096FD3B682A6A9B1AF92BE2D9012150 +:10A89000584610F093F83B684C452B62DCD10121FF +:10A8A0001A4810F08BF812480DF020FD09211848C5 +:10A8B00010F084F80121104810F080F800230A22DB +:10A8C00051460B480DF02EFD01210B4810F076F893 +:10A8D0000521104810F072F805480DF007FD0198A9 +:10A8E000FFF798FD05B0BDE8F08F00BF183D0020D0 +:10A8F000684C002088370020EC230020C43E002054 +:10A90000D03E0020DC3E002008BB0020503100205B +:10A91000EC3E0020482400202DE9F04F06460C466E +:10A9200085B00327FEF792F9214605463046FEF72B +:10A93000F7F941F24A53B246ADB217FB0434F3685B +:10A940000544B3F860205AF80C3BADB21C44D30761 +:10A9500021D50021414810F031F841480DF0C6FCE6 +:10A960003946404810F02AF801213F4810F026F8F7 +:10A9700008213E4810F022F801213B4810F01EF853 +:10A9800008213B4810F01AF80121374810F016F85A +:10A990000EF02AF8B0620E21364810F00FF8EF1CC6 +:10A9A0006B1CDFF8E08006F110092D1B9F4234BFBD +:10A9B000012703274FF0000BD8F8003027443362FB +:10A9C000611914F8013B484601918DF80F3008F0E9 +:10A9D000F9FD9DF80F300199984235D1D8F8003033 +:10A9E000326A9B1AF92B27D8BC42E9D101212248AF +:10A9F0000FF0E4FF1A480DF079FC09211F480FF011 +:10AA0000DDFF012118480FF0D9FF00230A22594623 +:10AA100013480DF087FC012113480FF0CFFF0521EB +:10AA200017480FF0CBFF0E480DF060FC5046FFF7C3 +:10AA3000F1FC05B0BDE8F08F01210F480FF0BEFF1B +:10AA4000D8F800303362CFE701230DF10F024846FA +:10AA50000BF1010B08F0ACFCC0E700BF183D002073 +:10AA6000684C002088370020EC230020C43E0020E2 +:10AA7000D03E0020DC3E002050310020EC3E002083 +:10AA80004824002008BB00202DE9F04F064685B081 +:10AA9000FEF7DCF8002104463046FEF723F9F368A0 +:10AAA0003246A4B2B3F8603041F2E64552F80CAB3E +:10AAB0000444DB07A4B25544009221D50021464846 +:10AAC0000FF07CFF45480DF011FC032144480FF0C6 +:10AAD00075FF012143480FF071FF082142480FF034 +:10AAE0006DFF01213F480FF069FF08213F480FF03B +:10AAF00065FF01213B480FF061FF0DF075FFB0626B +:10AB00000E213B480FF05AFFDFF8F480631CA71DAD +:10AB100006F110094FF0000B9F4234BF01270627B2 +:10AB2000D8F8003033620CE0D8F800300134326AD3 +:10AB30009B1AF92B1BD841F2E6435B1B5344DB19EC +:10AB400022D015F8013B214648468DF80F3008F019 +:10AB500039FD9DF80F309842E6D0214601230DF1D2 +:10AB60000F0248460BF1010B08F022FCDCE7012143 +:10AB700020480FF023FFD8F80030336241F2E6435B +:10AB80005B1B5344DB19DCD101211A4801930FF000 +:10AB900015FF12480DF0AAFB092117480FF00EFF10 +:10ABA000012110480FF00AFF019B0A2259460B4869 +:10ABB0000DF0B8FB01210B480FF000FF05210F48F5 +:10ABC0000FF0FCFE05480DF091FB0098FFF722FC0A +:10ABD00005B0BDE8F08F00BF183D0020684C002094 +:10ABE00088370020EC230020C43E0020D03E002007 +:10ABF000DC3E002050310020EC3E002048240020A4 +:10AC000008BB00202DE9F04F064685B0FEF71EF880 +:10AC1000002104463046FEF76DF8F3683246A4B2D0 +:10AC2000B3F8603041F2EC4552F80CAB0444DB075A +:10AC3000A4B25544009221D5002146480FF0BEFE33 +:10AC400045480DF053FB032144480FF0B7FE0121A6 +:10AC500043480FF0B3FE082142480FF0AFFE012138 +:10AC60003F480FF0ABFE08213F480FF0A7FE01213F +:10AC70003B480FF0A3FE0DF0B7FEB0620E213B483B +:10AC80000FF09CFEDFF8F480631CA71D06F110098D +:10AC90004FF0000B9F4234BF01270627D8F8003041 +:10ACA00033620CE0D8F800300134326A9B1AF92B79 +:10ACB0001BD841F2EC435B1B5344DB1922D015F83F +:10ACC000013B214648468DF80F3008F07BFC9DF88B +:10ACD0000F309842E6D0214601230DF10F0248467D +:10ACE0000BF1010B08F064FBDCE7012120480FF0B9 +:10ACF00065FED8F80030336241F2EC435B1B5344ED +:10AD0000DB19DCD101211A4801930FF057FE1248DC +:10AD10000DF0ECFA092117480FF050FE0121104800 +:10AD20000FF04CFE019B0A2259460B480DF0FAFA2F +:10AD300001210B480FF042FE05210F480FF03EFEA7 +:10AD400005480DF0D3FA0098FFF764FB05B0BDE8A5 +:10AD5000F08F00BF183D0020684C0020883700208D +:10AD6000EC230020C43E0020D03E0020DC3E00202A +:10AD700050310020EC3E00204824002008BB002079 +:10AD80002DE9F04F06460C4685B0FDF75FFF2146E2 +:10AD900005463046FDF7BEFFB346A40041F23A53E4 +:10ADA000ADB223445BF80C4B05441C44F368ADB2D0 +:10ADB000B3F86030DB0721D5002141480FF0FEFDDC +:10ADC00040480DF093FA03213F480FF0F7FD0121B1 +:10ADD0003E480FF0F3FD08213D480FF0EFFD012143 +:10ADE0003A480FF0EBFD08213A480FF0E7FD01214A +:10ADF00036480FF0E3FD0DF0F7FDB0620E21364846 +:10AE00000FF0DCFD2F1D6B1CDFF8DC8006F1100954 +:10AE10002D1B9F4234BF012704274FF0000AD8F8AA +:10AE2000003027443362611914F8013B4846019110 +:10AE30008DF80F3008F0C6FB9DF80F30019998424D +:10AE400035D1D8F80030326A9B1AF92B27D8BC428A +:10AE5000E9D1012121480FF0B1FD1A480DF046FA61 +:10AE600009211F480FF0AAFD012118480FF0A6FD87 +:10AE700000230A22514613480DF054FA01211348C9 +:10AE80000FF09CFD052117480FF098FD0D480DF0BF +:10AE90002DFA5846FFF7BEFA05B0BDE8F08F012144 +:10AEA0000E480FF08BFDD8F800303362CFE7012356 +:10AEB0000DF10F0248460AF1010A08F079FAC0E7DD +:10AEC000183D0020684C002088370020EC2300202B +:10AED000C43E0020D03E0020DC3E00205031002047 +:10AEE000EC3E00204824002008BB00202DE9F04F54 +:10AEF00006460C4685B0FDF7A9FE214605463046BC +:10AF0000FDF714FFB346F368ADB204F25454B3F83E +:10AF1000602005445BF80C3BADB203EB8404D3071F +:10AF200021D5002141480FF049FD41480DF0DEF9DF +:10AF3000032140480FF042FD01213F480FF03EFD44 +:10AF400008213E480FF03AFD01213B480FF036FD45 +:10AF500008213B480FF032FD012137480FF02EFD4C +:10AF60000DF042FDB0620E2136480FF027FD2F1D77 +:10AF70006B1CDFF8E08006F110092D1B9F4234BFE7 +:10AF8000012704274FF0000AD8F800302744336225 +:10AF9000611914F8013B484601918DF80F3008F013 +:10AFA00011FB9DF80F300199984235D1D8F8003047 +:10AFB000326A9B1AF92B27D8BC42E9D101212248D9 +:10AFC0000FF0FCFC1A480DF091F909211F480FF011 +:10AFD000F5FC012118480FF0F1FC00230A2251462C +:10AFE00013480DF09FF9012113480FF0E7FC0521EC +:10AFF00017480FF0E3FC0E480DF078F95846FFF7BC +:10B0000009FA05B0BDE8F08F01210F480FF0D6FC1A +:10B01000D8F800303362CFE701230DF10F02484624 +:10B020000AF1010A08F0C4F9C0E700BF183D00208A +:10B03000684C002088370020EC230020C43E00200C +:10B04000D03E0020DC3E002050310020EC3E0020AD +:10B050004824002008BB00202DE9F04F0C4605468F +:10B0600085B0FDF7F3FD214604EB8404064628462F +:10B07000FDF714FE2946EB686400B6B2B3F8602011 +:10B0800004F62D7451F80C3B06441C44D307B6B2A9 +:10B09000019121D5002145480FF090FC44480DF066 +:10B0A00025F9032143480FF089FC012142480FF0A4 +:10B0B00085FC082141480FF081FC01213E480FF03A +:10B0C0007DFC08213E480FF079FC01213A480FF041 +:10B0D00075FC0DF089FCA8620E213A480FF06EFC59 +:10B0E00006F10A08731C384F05F11009361B984504 +:10B0F00034BF4FF001084FF00A083B684FF0000AD8 +:10B10000DFF8C8B0A0442B6206E03B682A6A9B1AAD +:10B11000F92B1CD8444522D0A11914F8013B48460C +:10B1200000918DF80F3008F04DFA9DF80F3000991E +:10B130009842EAD001230DF10F0248460AF1010AB4 +:10B1400008F036F93B682A6A9B1AF92BE2D90121EB +:10B1500058460FF033FC3B6844452B62DCD101219B +:10B160001A480FF02BFC12480DF0C0F809211848BE +:10B170000FF024FC012110480FF020FC00230A22CC +:10B1800051460B480DF0CEF801210B480FF016FC8C +:10B19000052110480FF012FC05480DF0A7F80198A2 +:10B1A000FFF738F905B0BDE8F08F00BF183D00206B +:10B1B000684C002088370020EC230020C43E00208B +:10B1C000D03E0020DC3E002008BB00205031002093 +:10B1D000EC3E0020482400202DE9F04F0C460546A7 +:10B1E00085B0FDF733FD214606462846FDF78AFD6A +:10B1F00041F2F2421223B6B213FB04232A4606445C +:10B2000052F80C4BB6B21C44EB680192B3F86030B4 +:10B21000DB0721D5002145480FF0D0FB44480DF055 +:10B2200065F8032143480FF0C9FB012142480FF0A4 +:10B23000C5FB082141480FF0C1FB01213E480FF03A +:10B24000BDFB08213E480FF0B9FB01213A480FF041 +:10B25000B5FB0DF0C9FBA8620E213A480FF0AEFB1A +:10B2600006F11209731C384F05F11008361B994579 +:10B2700034BF4FF001094FF012093B684FF0000A4C +:10B28000DFF8C8B0A1442B6206E03B682A6A9B1A2B +:10B29000F92B1CD84C4522D0A11914F8013B40468B +:10B2A00000918DF80F3008F08DF99DF80F3000995E +:10B2B0009842EAD001230DF10F0240460AF1010A3B +:10B2C00008F076F83B682A6A9B1AF92BE2D901212B +:10B2D00058460FF073FB3B684C452B62DCD10121D3 +:10B2E0001A480FF06BFB12480DF000F809211848BE +:10B2F0000FF064FB012110480FF060FB00230A22CD +:10B3000051460B480DF00EF801210B480FF056FB8B +:10B31000052110480FF052FB05480CF0E7FF01989B +:10B32000FFF778F805B0BDE8F08F00BF183D0020AA +:10B33000684C002088370020EC230020C43E002009 +:10B34000D03E0020DC3E002008BB00205031002011 +:10B35000EC3E0020482400202DE9F04F06460C4624 +:10B3600085B00327FDF772FC214605463046FDF700 +:10B37000B3FC41F2D743B246ADB217FB0434F368D5 +:10B380000544B3F860205AF80C3BADB21C44D30717 +:10B3900021D5002141480FF011FB41480CF0A6FFD8 +:10B3A000394640480FF00AFB01213F480FF006FBE9 +:10B3B00008213E480FF002FB01213B480FF0FEFA46 +:10B3C00008213B480FF0FAFA012137480FF0F6FA4E +:10B3D0000DF00AFBB0620E2136480FF0EFFAEF1CB9 +:10B3E0006B1CDFF8E08006F110092D1B9F4234BF73 +:10B3F000012703274FF0000BD8F8003027443362B1 +:10B40000611914F8013B484601918DF80F3008F09E +:10B41000D9F89DF80F300199984235D1D8F800300D +:10B42000326A9B1AF92B27D8BC42E9D10121224864 +:10B430000FF0C4FA1A480CF059FF09211F480FF009 +:10B44000BDFA012118480FF0B9FA00230A22594623 +:10B4500013480CF067FF012113480FF0AFFA0521E4 +:10B4600017480FF0ABFA0E480CF040FF5046FEF7BD +:10B47000D1FF05B0BDE8F08F01210F480FF09EFA13 +:10B48000D8F800303362CFE701230DF10F024846B0 +:10B490000BF1010B07F08CFFC0E700BF183D002047 +:10B4A000684C002088370020EC230020C43E002098 +:10B4B000D03E0020DC3E002050310020EC3E002039 +:10B4C0004824002008BB002090F844201107C2F354 +:10B4D000C0030AD54368D3F80831DA6DC2F380039C +:10B4E000520702D5036BC3F340331846704700BFC1 +:10B4F0002DE9F04F05460E4685B0FDF7A7FB314616 +:10B5000004462846FDF7B4FBEB68A4B2A946B3F89D +:10B51000603006F27C76044459F80C7BDB07A4B259 +:10B5200007EB460721D5002142480FF047FA424871 +:10B530000CF0DCFE032141480FF040FA01214048A5 +:10B540000FF03CFA08213F480FF038FA01213C483F +:10B550000FF034FA08213C480FF030FA0121384846 +:10B560000FF02CFA0DF040FAA8620E2137480FF0C8 +:10B5700025FA631CA21CDFF8E48005F1100A7E1E88 +:10B580009A424FF0000B34BF002301230193D8F8F7 +:10B5900000302B6216F8013F214650468DF80F30DF +:10B5A00008F010F89DF80F30984231D1D8F80030EB +:10B5B00001342A6A9B1AF92B34D8BB1B019A9B18B9 +:10B5C000E8D10121224801930FF0F8F91A480CF054 +:10B5D0008DFE09211F480FF0F1F9012118480FF0E5 +:10B5E000EDF9019B0A22594613480CF09BFE0121FC +:10B5F00013480FF0E3F9052117480FF0DFF90E4863 +:10B600000CF074FE4846FEF705FF05B0BDE8F08F6C +:10B61000012321460DF10F0250460BF1010B07F0FB +:10B62000C7FEC3E701210A480FF0C8F9D8F8003077 +:10B630002B62C2E7183D0020684C002088370020AC +:10B64000EC230020C43E0020D03E0020DC3E002041 +:10B6500050310020EC3E00204824002008BB002090 +:10B660002DE9F04F0C46064685B0FDF7EFFA21466E +:10B6700005463046FDF700FB40F618720723ADB2D1 +:10B6800013FB04233246054452F80C4BADB21C4464 +:10B69000F3680192B3F86030DB0721D500214648FA +:10B6A0000FF08CF945480CF021FE032144480FF0BF +:10B6B00085F9012143480FF081F9082142480FF034 +:10B6C0007DF901213F480FF079F908213F480FF03B +:10B6D00075F901213B480FF071F90DF085F9B06261 +:10B6E0000E213B480FF06AF9EF1D6B1CDFF8F0806C +:10B6F00006F110092D1B9F4234BF01270727D8F8F8 +:10B7000000304FF0000ADFF8CCB02744336207E086 +:10B71000D8F80030326A9B1AF92B1DD8BC4224D0CD +:10B72000611914F8013B484600918DF80F3007F07D +:10B7300049FF9DF80F3000999842E9D001230DF19F +:10B740000F0248460AF1010A07F032FED8F800302D +:10B75000326A9B1AF92BE1D9012158460FF02EF9D4 +:10B76000D8F80030BC423362DAD1012119480FF019 +:10B7700025F912480CF0BAFD092117480FF01EF9FF +:10B78000012110480FF01AF900230A2251460B48F4 +:10B790000CF0C8FD01210B480FF010F905210F48EE +:10B7A0000FF00CF905480CF0A1FD0198FEF732FEF0 +:10B7B00005B0BDE8F08F00BF183D0020684C0020A8 +:10B7C00088370020EC230020C43E0020D03E00201B +:10B7D000DC3E002050310020EC3E002048240020B8 +:10B7E00008BB00202DE9F04F0C46054685B0FDF75B +:10B7F0002DFA214606462846FDF744FA40F61F7208 +:10B800000923B6B213FB04232A46064452F80C4B14 +:10B81000B6B21C44EB680192B3F86030DB0721D567 +:10B82000002144480FF0CAF843480CF05FFD0321A3 +:10B8300042480FF0C3F8012141480FF0BFF808213A +:10B8400040480FF0BBF801213D480FF0B7F8082140 +:10B850003D480FF0B3F8012139480FF0AFF80DF073 +:10B86000C3F8A8620E2139480FF0A8F806F10907BD +:10B87000731CDFF8E88005F11009361B9F4234BFC6 +:10B8800001270927D8F800304FF0000ADFF8C0B0D0 +:10B8900027442B6201E0BC421CD0A11914F8013BE3 +:10B8A000484600918DF80F3007F08CFE9DF80F3060 +:10B8B0000099984234D1D8F800302A6A9B1AF92BA3 +:10B8C000E9D9012158460FF079F8D8F80030BC4288 +:10B8D0002B62E2D101211E480FF070F816480CF0DF +:10B8E00005FD09211B480FF069F8012114480FF0EC +:10B8F00065F800230A2251460F480CF013FD012180 +:10B900000F480FF05BF8052113480FF057F80A486D +:10B910000CF0ECFC0198FEF77DFD05B0BDE8F08F62 +:10B9200001230DF10F0248460AF1010A07F040FD1C +:10B93000C1E700BF183D0020684C00208837002078 +:10B94000EC230020C43E0020D03E0020DC3E00203E +:10B9500050310020EC3E00204824002008BB00208D +:10B960002DE9F04F064685B0FDF770F90021044639 +:10B970003046FDF78DF93346A4B253F80CAB0444BE +:10B9800000930AF62875F368A4B2B3F86030DB07B9 +:10B9900021D5002142480FF011F842480CF0A6FCD6 +:10B9A000032141480FF00AF8012140480FF006F842 +:10B9B00008213F480FF002F801213C480EF0FEFF3D +:10B9C00008213C480EF0FAFF012138480EF0F6FF3E +:10B9D0000DF00AF8B0620E2137480EF0EFFFDFF8E5 +:10B9E000E880631C671D06F110094FF0000B9F42B1 +:10B9F00034BF01270527D8F80030336215F8013B22 +:10BA0000214648468DF80F3007F0DCFD9DF80F30D9 +:10BA100098423BD1D8F800300134326A9B1AF92B96 +:10BA20002CD840F628735B1B5344DB19E6D1012167 +:10BA3000224801930EF0C2FF1A480CF057FC09216E +:10BA40001F480EF0BBFF012118480EF0B7FF019B05 +:10BA50000A22594613480CF065FC012113480EF0E8 +:10BA6000ADFF052117480EF0A9FF0E480CF03EFC73 +:10BA70000098FEF7CFFC05B0BDE8F08F01210F481C +:10BA80000EF09CFFD8F800303362CAE7214601234C +:10BA90000DF10F0248460BF1010B07F089FCB9E7E5 +:10BAA000183D0020684C002088370020EC2300203F +:10BAB000C43E0020D03E0020DC3E0020503100205B +:10BAC000EC3E00204824002008BB00202DE9F04F68 +:10BAD0000C4685B00546FDF7B9F804EB441241F277 +:10BAE0005C5304EB820213444FF4AB5213FA80F818 +:10BAF000852313FB04232A461FFA88F852F80C4BBF +:10BB00001C44EB680192B3F86030DA0721D50021BC +:10BB10004B480EF053FF4B480CF0E8FB03214A481A +:10BB20000EF04CFF012149480EF048FF082148481B +:10BB30000EF044FF012145480EF040FF0821454822 +:10BB40000EF03CFF012141480EF038FF0CF04CFF95 +:10BB5000A8620E2140480EF031FF08F1850908F176 +:10BB600001033E4E05F11007A8EB0408994534BFC8 +:10BB70004FF001094FF0850933684FF0000ADFF8F4 +:10BB8000E0B0A1442B6206E033682A6A9B1AF92BC5 +:10BB90001DD84C4523D004EB080114F8013B38466E +:10BBA00000918DF80F3007F00DFD9DF80F300099D2 +:10BBB0009842E9D001230DF10F0238460AF1010A3B +:10BBC00007F0F6FB33682A6A9B1AF92BE1D90121A9 +:10BBD00058460EF0F3FE33684C452B62DBD1012151 +:10BBE0001F480EF0EBFE17480CF080FB09211D48A2 +:10BBF0000EF0E4FE012115480EF0E0FE00230A22BB +:10BC0000514610480CF08EFB012110480EF0D6FE74 +:10BC1000052115480EF0D2FE0A480CF067FB01988A +:10BC2000FEF7F8FB6B68D3F80831DB6D5B0703D5D3 +:10BC30002B6B43F004032B6305B0BDE8F08F00BF0E +:10BC4000183D0020684C002088370020EC2300209D +:10BC5000C43E0020D03E0020DC3E002008BB002077 +:10BC600050310020EC3E0020482400202DE9F8430C +:10BC7000C36B8146B3F803400E2C6FD800230B70C2 +:10BC8000D9F83C40B4F803500F2D79D8082501238A +:10BC9000002466001136F6B2002C54D00134E6B20E +:10BCA0009E42F6D35B0002314FF0000E1133DBB23F +:10BCB00007E00EF1010E02335FFA8EFCDBB2AC45F9 +:10BCC0001CD2BEF1070FF4D8D9F83C405E1C4FF0EF +:10BCD000000CB4F80370BE420DDAE71834447E79E4 +:10BCE0006479F60104F07F0406F47E563443C82CD0 +:10BCF000D8BF5FFA84FC01F80EC0DAE7002A14DB33 +:10BD000099F844301C0712D4D1B24846FFF7DEFE42 +:10BD1000D9F80430D3F80831DB6D5B0705D5D9F8C5 +:10BD2000303043F00403C9F83030BDE8F883D9F867 +:10BD30000430D3F80831DB6D5807E5D5D9F8303039 +:10BD40009904F2D4E0E7D9F83C0006F1010E274649 +:10BD5000B0F80380C64522DB4F709FE79C7CDB7CFC +:10BD6000E40103F07F0304F47E542343802B85DC3D +:10BD7000DBB20B70D9F83C40B4F803500F2D85D9D5 +:10BD8000237D102D03F07F0317D0657D012B05F077 +:10BD90007F0538BF0123082D38BF082578E7864482 +:10BDA00000EB060C9EF805709CF8056007F07F0715 +:10BDB00047EAC617FFB24F7070E7012B4FF0080536 +:10BDC00038BF012364E700BF2DE9F843C36B814608 +:10BDD000B3F803400E2C7AD800230B70D9F83C40FE +:10BDE000B4F803500F2D00F286804FF0100E01239F +:10BDF000002465001135EDB2002C5DD00134E5B2B0 +:10BE00009D42F6D3013B02314FF0000C5B00DBB2E8 +:10BE100003EB4E0E13330EF1130EDBB25FFA8EFE00 +:10BE200005E002330CF1010CDBB29E451FD0BCF1E2 +:10BE30000F0FF6D8D9F83C405D1C0026B4F803700B +:10BE4000BD420CDAE7182C447D796479ED0104F0E9 +:10BE50007F0405F47E552C43C82CD8BFE6B20233CC +:10BE600001F80C600CF1010CDBB29E45DFD1002A19 +:10BE700014DB99F844301C0712D4D1B24846FFF7BE +:10BE800025FED9F80430D3F80831DB6D5B0705D502 +:10BE9000D9F8303043F00403C9F83030BDE8F883F6 +:10BEA000D9F80430D3F80831DB6D5807E5D5D9F857 +:10BEB00030309904F2D4E0E7D9F83C7005F1010C78 +:10BEC0002646B7F80380C44527DB4E7096E79C7C76 +:10BED000DB7CE40103F07F0304F47E542343802BD6 +:10BEE0003FF77AAFDBB20B70D9F83C40B4F803509F +:10BEF0000F2D7FF67AAF237D102D03F07F0318D02E +:10BF000094F815E0012B0EF07F0E38BF0123BEF12F +:10BF1000100F38BF4FF0100E6AE7BC442F449CF856 +:10BF200005607D7906F07F0646EAC516F6B24E70CA +:10BF300064E7012BAE4638BF012359E72DE9F843EA +:10BF4000C36B8146B3F803400E2C73D800230B70EB +:10BF5000D9F83C40B4F803500F2D7DD84FF0010CB8 +:10BF60006346002465001135EDB2002C57D0013432 +:10BF7000E5B29D42F6D3013B00245B00DBB203EB4C +:10BF80004C0C13330CF1130CDBB25FFA8CFCECB1EC +:10BF900002330134DBB29C45F9D1002A14DB99F855 +:10BFA00044301C072FD4D1B24846FFF78FFDD9F893 +:10BFB0000430D3F80831DB6D5B0705D5D9F8303094 +:10BFC00043F00403C9F83030BDE8F883D9F83C5099 +:10BFD00003F1010E2646B5F80370BE4501DB8E70F5 +:10BFE000D6E7EF18754497F805E06D794FEACE1E55 +:10BFF00005F07F050EF47E5E45EA0E05C82DD8BF1C +:10C00000EEB28E70C4E7D9F80430D3F80831DB6D96 +:10C010005807C8D5D9F830309904D5D4C3E7D9F832 +:10C020003C7005F1010E2646B7F80380C64525DBB6 +:10C030004E709CE79C7CDB7CE40103F07F0304F4FE +:10C040007E542343802B81DCDBB20B70D9F83C405B +:10C05000B4F803500F2D81D9237D102D03F07F03F9 +:10C0600018D094F815C0012B0CF07F0C38BF0123B9 +:10C07000BCF1010F38BF4FF0010C72E7BE442F44F2 +:10C080009EF805607D7906F07F0646EAC516F6B291 +:10C090004E706CE7012B4FF0010C38BF012360E7B5 +:10C0A0002DE9F84FC36B8346B3F803400E2C00F222 +:10C0B0009F8000230B70DBF83C40B4F803500F2D39 +:10C0C00000F28780062633465C004FF0000E4FF0EA +:10C0D000110C4F1C1134E4B207E00CF1020C0EF10C +:10C0E000010E5FFA8CFC644521D0BEF1050FF4D837 +:10C0F000DBF83C000CF101090025B0F803A0D145A4 +:10C100000BDA814400EB0C0899F8055098F805808B +:10C1100005F07F0545EAC815EDB20CF1020C07F8F1 +:10C120000E500EF1010E5FFA8CFC6445DDD15B0010 +:10C13000073100251133DBB206E0013502335FFA27 +:10C1400085FCDBB2B4451FD2052DF6D8DBF83C40A8 +:10C1500003F1010C0027B4F803E0F44501DB4F556F +:10C16000EBE704EB030E64449EF805C064794FEAE4 +:10C17000CC1C04F07F040CF47E5C44EA0C04C82C54 +:10C18000D8BFE7B24F55D8E7002A14DB9BF84430FC +:10C190001C0712D4D1B25846FFF798FCDBF80430E4 +:10C1A000D3F80831DB6D5B0705D5DBF8303043F0A1 +:10C1B0000403CBF83030BDE8F88FDBF80430D3F857 +:10C1C0000831DB6D5807E5D5DBF830309904F2D43F +:10C1D000E0E7237D102D03F07F0316D0667D062B4C +:10C1E00006F07F0638BF0623062E38BF06266BE70B +:10C1F0009C7CDB7CE40103F07F0304F47E54234346 +:10C20000802B3FF756AFDBB254E7062B4FF0060604 +:10C2100038BF062358E700BFC36B2DE9F041B3F8E0 +:10C22000034080460E2C70D800230B70D8F83C4099 +:10C23000B4F803500F2D55D84FF0060E112303EB21 +:10C240004E0E01314FF0000C5FFA8EFE05E0023316 +:10C250000CF1010CDBB29E451FD0BCF1050FF6D8E6 +:10C26000D8F83C405E1C0025B4F80370BE420CDADE +:10C27000E71834447E796479F60104F07F0406F40B +:10C280007E563443C82CD8BFE5B2023301F80C50B7 +:10C290000CF1010CDBB29E45DFD1002A14DB98F8CB +:10C2A00044301C0712D4D1B24046FFF70FFCD8F837 +:10C2B0000430D3F80831DB6D5B0705D5D8F8303092 +:10C2C00043F00403C8F83030BDE8F081D8F80430FA +:10C2D000D3F80831DB6D5807E5D5D8F8303099042C +:10C2E000F2D4E0E7237D102D03F07F031BD094F8F8 +:10C2F00015E00EF07F0EBEF1060F38BF4FF0060EB0 +:10C300007BB15B001133DBB299E79C7CDB7CE40101 +:10C3100003F07F0304F47E542343802B84DCDBB2E0 +:10C3200083E711238BE74FF0060EE9E72DE9F04F85 +:10C33000ADF5C05D054641F2EC5441F6950685B079 +:10C34000FCF77CFC41F2FC720021039005A86C44D0 +:10C3500010F0D6FA06A8E2F781FA41F2FC5141F258 +:10C36000D6506E44694400226844A1F1740301F878 +:10C37000882C03F80D2C0D339842FAD1A1F12E032D +:10C3800003F8052C0533A342FAD1A1F1120303F8F7 +:10C39000032C03338B42FAD103F1850185348530B8 +:10C3A000B142E2D105AE41F2FC7228680024314668 +:10C3B0000CF0E4FB2B689D4A1A60E1B23046E9F7C5 +:10C3C000E7FA717DB27D2B689142F07D234404F140 +:10C3D000010403D381420A4628BF0246042C83F895 +:10C3E000292FEAD12B6802229148032603F58051B8 +:10C3F000C1F8E804284683F8192F26222B6883F811 +:10C400001A6F2B6883F81B2F28222B6883F81C2FA8 +:10C41000AB68196895F82D304A689B0322F4703296 +:10C4200003F4703313434B60FCF708FC2A46EB68B7 +:10C43000814652F80C4BB3F860300292DA0721D5EE +:10C4400000217C480EF0BAFA7B480BF04FFF3146D2 +:10C450007A480EF0B3FA012179480EF0AFFA0821BC +:10C4600078480EF0ABFA012175480EF0A7FA0821C2 +:10C4700075480EF0A3FA012171480EF09FFA0CF0F6 +:10C48000B3FAA8621FFA89F941F2FC7A0E216F48CB +:10C490000EF094FA6E4E09F1010309EB0A020DF158 +:10C4A0001408A9EB04099A4238BF4FF0010A336817 +:10C4B00005F110074FF0000BA2442B6206E0336831 +:10C4C0002A6A9B1AF92B1CD8544522D004EB090187 +:10C4D00014F8013B384688F80030019107F072F8F3 +:10C4E00098F8003001999842E9D0012305AA38460E +:10C4F0000BF1010B06F05CFF33682A6A9B1AF92BDB +:10C50000E2D9012153480EF059FA336854452B62A1 +:10C51000DCD101214F480EF051FA47480BF0E6FEFE +:10C5200009214D480EF04AFA012145480EF046FA1D +:10C5300000230A22594640480BF0F4FE01214048EE +:10C540000EF03CFA052145480EF038FA3A480BF057 +:10C55000CDFE0298FDF75EFFEB682C68B3F8603003 +:10C56000DB0721D5002133480EF028FA32480BF0C2 +:10C57000BDFE032131480EF021FA012130480EF0B2 +:10C580001DFA072136480EF019FA01212C480EF049 +:10C5900015FA08212C480EF011FA012128480EF056 +:10C5A0000DFA0CF021FAA8620F212E48BDF80C906C +:10C5B00041F2FC780EF002FA336809F10102DFF86B +:10C5C00094A02B6209EB0803A9EB04099A4288BFE7 +:10C5D0004FF00108A04401E0444513D004EB0901E9 +:10C5E000384606F0EFFF04F8010B33682A6A9B1AFD +:10C5F000F92BF1D9012150460EF0E0F9336844459A +:10C600002B62EBD1012113480EF0D8F90A480BF048 +:10C610006DFE0298FDF7FEFE2B6B43F400632B6367 +:10C620000DF5C05D05B0BDE8F08F00BFB049020256 +:10C630000000FF03183D0020684C002088370020D0 +:10C64000EC230020C43E0020D03E0020DC3E002031 +:10C6500008BB002050310020EC3E00204824002080 +:10C660005C3C0020643C00204368D3F80831DB6D5B +:10C67000590705D5036B9A0410B5044601D410BDC3 +:10C680007047002123480EF099F923480BF02EFE45 +:10C690002E2122480EF092F91F480BF027FE2E2182 +:10C6A0001E480EF08BF91C480BF020FE01211C489F +:10C6B0000EF084F90F211B480EF080F916480BF09C +:10C6C00015FE2E2115480EF079F913480BF00EFED9 +:10C6D0002E2112480EF072F90F480BF007FE0021D0 +:10C6E0000C480EF06BF90C480BF000FE236B204653 +:10C6F00023F4404343F440332363FBF717FD63689F +:10C70000D3F80831DB6D5B07B9D5236B43F0040325 +:10C71000236310BD183D0020684C0020B440002069 +:10C72000EC230020743C0020F0B50C21ADF5037D16 +:10C7300005462B480EF042F92A480BF0D7FDEB6B6B +:10C74000B3F80320072A2FD80B2127480EF036F91B +:10C75000244800270BF0CAFD41AC002613232046D5 +:10C76000CDE90066266095F82D2095F82C102671ED +:10C77000FCF7DEFDB4F80330FD2B04D8E2180133DA +:10C7800026715771E37001230021F7226846CDE935 +:10C790003E3144A90CF0F2F9284694E80E00FCF76B +:10C7A000CBFA0DF5037DF0BDDA7A43F6FF711B7B02 +:10C7B000D20103F07F0302F47E5213438B42C3D1B4 +:10C7C00008210A480EF0FAF806480BF08FFD2846BB +:10C7D000FFF7ACFD4FF47A7001270CF0B1F8BBE71E +:10C7E000383D0020684C0020543D0020483D00208A +:10C7F00090F82F208A4200F0D680838B2DE9F04FED +:10C800009B0889468C490646A1FB03135B0A012B52 +:10C8100038BF012399452DED028B83B080F0BD8098 +:10C8200000F10C0308EE103A002A40F0BE8000F13F +:10C830001008824F86F82F90B2684FEA0953356886 +:10C84000106803F44013F268B2F86010426822F4F2 +:10C8500040121343436023F4703396F82D20920363 +:10C8600002F4703213434360CB0721D50021744892 +:10C870000EF0A4F873480BF039FD032172480EF056 +:10C880009DF8012171480EF099F8082170480EF0CA +:10C8900095F801216D480EF091F808216D480EF0D1 +:10C8A0008DF8012169480EF089F80CF09DF8B0620E +:10C8B0000E2169480EF082F84FF000093B684C46A3 +:10C8C000DFF898A1336209E03B680134326A9B1AB1 +:10C8D000F92B19D841F2FC739C421FD015F8013B8B +:10C8E000214640468DF8073006F06CFE9DF8073073 +:10C8F0009842E9D0214601230DF10702404609F193 +:10C90000010906F055FDDFE7012150460EF056F80B +:10C910003B68336241F2FC739C42DFD101214F48F6 +:10C920000EF04CF847480BF0E1FC09214C480EF0A2 +:10C9300045F8012145480EF041F800230A224946F6 +:10C9400040480BF0EFFC012140480EF037F805217C +:10C9500044480EF033F83B480BF0C8FC18EE100AC0 +:10C96000FDF758FD3046FBF7E1FB05200BF0E8FF33 +:10C97000B26896F82D30304611689B034A6803F47C +:10C98000703322F4703213434B60FBF7C3F801207D +:10C9900003B0BDEC028BBDE8F08F002003B0BDEC0E +:10C9A000028BBDE8F08F0020704780462E49184664 +:10C9B000224F58F8104BFDF7F3FC0F212B480DF0D8 +:10C9C000FDFF3A684FF0000BDFF890A041F2FC75D4 +:10C9D000326201E0AB4514D05946404606F0F2FD04 +:10C9E00004F8010B3A680BF1010B316A521AF92A6B +:10C9F000F0D9012150460DF0E1FF3A68AB453262B3 +:10CA0000EAD1012115480DF0D9FF0E480BF06EFC5C +:10CA100018EE100AFDF7FEFCB38B074A9B08A2FB39 +:10CA200003235B0A012B38BF01239945FFF402AFB2 +:10CA300096F82F9000E700BF9990635508BB00203F +:10CA4000183D0020684C002088370020EC2300208F +:10CA5000C43E0020D03E0020DC3E002050310020AB +:10CA6000EC3E0020482400205C3C0020643C002078 +:10CA70004368D3F80831DB6D5A0710D52DE9F04132 +:10CA8000C46BADF5027D90F82D300546627A90F8C2 +:10CA90002C609A4204D00DF5027DBDE8F08170470C +:10CAA0002178B142F7D1B4F803300A2BF3D990F8CA +:10CAB0004430C3F340069B07EDD4E37A247BDB01CB +:10CAC00004F07F0403F47E5344EA0307052F09DDD5 +:10CAD00001233A4613210096FCF78CF90DF5027DEF +:10CAE000BDE8F08141AC1423CDE900672046266003 +:10CAF0002671FCF71DFCB4F80330FD2B51D9013F22 +:10CB0000042F5DD8DFE807F00348433E39001627BD +:10CB10004FF00E08012620460421FCF777FD314630 +:10CB20002046FCF773FD41462046FCF76FFD314679 +:10CB30002046FCF76BFD39462046FCF767FD314681 +:10CB40002046FCF763FD20460021FCF75FFD2046F0 +:10CB50000021FCF75BFD01230021F7226846CDE9A7 +:10CB60003E3144A90CF00AF8284694E80E00FCF780 +:10CB7000E3F80DF5027DBDE8F0810E274FF01608B1 +:10CB80000526C8E716274FF00E080426C3E7162728 +:10CB90004FF00E080326BEE716274FF00E080226B8 +:10CBA000B9E75A1C23442671E2705E71B4F8033071 +:10CBB000FD2BA4D8E2180133E370062353719EE7DE +:10CBC00016274FF00E080026A5E700BF4368D3F8EC +:10CBD0000831DB6D5A0714D52DE9F04FC56B0446BB +:10CBE0002DED028B90F82D20ADF5077D6B7A90F836 +:10CBF0002C70934206D00DF5077DBDEC028BBDE88D +:10CC0000F08F70472B78BB42F5D1B5F803600A2E40 +:10CC1000F1D990F844309B07EDD409B3FEF754FCEA +:10CC20000746002840F09681EB7A2A7BDB0102F070 +:10CC30007F0203F47E5342EA0308B8F1C70FCDF830 +:10CC4000088152DD00250123429A052120460095E6 +:10CC5000FCF7D0F80DF5077DBDEC028BBDE8F08F39 +:10CC6000EB7A297BDB0101F07F0103F47E5341EA7B +:10CC70000300C7284290E5DC45AD4390429B39460E +:10CC8000002728460193102300972F602F71FCF78F +:10CC90004FFBC8212846FCF7B9FC439B2668284671 +:10CCA00006EBC30696F83810FCF7B0FCB5F8033075 +:10CCB00096F83920FD2B40F2D580F16B2846FDF720 +:10CCC000CDF80123002048A9F722CDE93E3068467F +:10CCD0000BF054FF204695E80E00FCF72DF80DF5FB +:10CCE000077DBDEC028BBDE8F08F182E40F0FC8074 +:10CCF000EA7B2368A97B02F07F0203EBC803CDF82F +:10CD00000C8142EAC11283F83820B5F803200C2ABE +:10CD100000F2F280002283F83920B5F803200E2AB1 +:10CD200000F21081002283F83A20B5F80320102A7F +:10CD300000F20081002283F83B20B5F80320152A79 +:10CD400000F2E2800022DA632046FBF77FFF42997F +:10CD500087B22046FBF782FF08F10703A04607448D +:10CD600004F10C00804958F8106BBFB208EE100AAD +:10CD7000DFF810A206EBC30607F10109FDF710FB6F +:10CD80000E217A484FF0000B0DF018FE07F1080352 +:10CD900045ADBF1B99458CBF4FF001094FF0080905 +:10CDA000DAF80030B144236207E0DAF80030226A92 +:10CDB0009B1AF92B1AD84E4521D0F11916F8013BD0 +:10CDC00040462B70419106F0FDFB2B78419998422B +:10CDD000EBD001232A4640460BF1010B06F0E8FA9E +:10CDE000DAF80030226A9B1AF92BE4D90121604855 +:10CDF0000DF0E4FDDAF800304E452362DDD101216B +:10CE00005B480DF0DBFD5B480BF070FA09215A48D6 +:10CE10000DF0D4FD012159480DF0D0FD00230A2268 +:10CE2000594654480BF07EFA012154480DF0C6FDD6 +:10CE3000052153480DF0C2FD4E480BF057FA18EE8D +:10CE4000100AFDF7E7FA6368D3F80831DB6D5B077A +:10CE500003D5236B43F00403236394F82C7094F8F8 +:10CE60002D200BE7E918D009013302F07F02487149 +:10CE7000EB702F71B5F80330FD2B3FF61EAFE918AC +:10CE800001334A71EB70B5F8033096F83A20FD2B68 +:10CE90004FEAD2103FF611AFE918013302F07F02DA +:10CEA0004871EB70B5F80330FD2B3FF606AFE9187B +:10CEB00001334A71EB70B5F8033096F83B20FD2B37 +:10CEC0004FEAD2103FF6F9AEE918013302F07F02C3 +:10CED0004871EB70B5F80330FD2B3FF6EEAEE91864 +:10CEE00001334A71EB70E8E6012318220A2120463B +:10CEF0000097FBF77FFF7EE66A7C297C02F07F02C9 +:10CF000042EAC112D2B206E7AA7E697EA87D02F08B +:10CF10007F02C90142EA0072287E01F47E5180033B +:10CF20000A43E97D00F4FE104905024301F07E61E9 +:10CF30000A4308E76A7D297D02F07F0242EAC112B6 +:10CF4000D2B2F8E6EA7CA97C02F07F0242EAC11282 +:10CF5000D2B2E8E6182120460DF5077DBDEC028B24 +:10CF6000BDE8F04FFAF72EBBC43E0020DC3E0020A7 +:10CF700050310020684C0020EC3E0020EC230020C3 +:10CF80004824002008BB00204368D3F80831DB6D3B +:10CF90005A0714D52DE9F04FC46B05462DED028BD1 +:10CFA00090F82D20ADF5077D637A90F82C609342C0 +:10CFB00006D00DF5077DBDEC028BBDE8F08F704704 +:10CFC0002378B342F5D1B4F803700A2FF1D990F861 +:10CFD00044309B07EDD4F9B1FEF776FA06460028F7 +:10CFE00040F02C81E27A217BD20101F07F0102F432 +:10CFF0007E5241EA02037F2B42936FDD002401231E +:10D00000429A062128460094FBF7F4FE0DF5077DB1 +:10D01000BDEC028BBDE8F08FE07A217BC00101F00E +:10D020007F0100F47E5041EA00037F2B4293E5DC50 +:10D0300011204FF4CF6145AC13FB00134393429B87 +:10D040003146002620460193112300962660267162 +:10D05000FCF76EF980212046FCF7D8FAB4F80320DB +:10D060002B68FD2A07D8A118112001324871E270FF +:10D070002671B4F80320439900270B4403F11000F4 +:10D0800001E0B4F80320FD2A07D81978A618013268 +:10D0900001F07F017171E270277101338342F0D199 +:10D0A000B4F80330FD2B05D80022E11801334A7192 +:10D0B0002271E3700123002048A9F722CDE93E3018 +:10D0C00068460BF05BFD284694E80E00FBF734FE43 +:10D0D0000DF5077DBDEC028BBDE8F08F1D2F40F0F4 +:10D0E000A58011214FF4CF6213FB01231A4643930D +:10D0F0002B689E50134404F10E021F34591E5E60CB +:10D100009E60DE601E7412F8010FA24201F8010F4A +:10D11000F9D14FF0000B2846A846DFF8509183F86C +:10D1200010B045ACFBF792FD429987B22846FBF759 +:10D1300099FD439B074458F8106B05F10C004449D6 +:10D14000BFB21E4408EE100AFDF72AF90E2141482D +:10D150000DF034FC07F1110A7B1CBF1B9A4534BF4C +:10D160004FF0010A4FF0110AD9F80030B2442B6297 +:10D1700007E0D9F800302A6A9B1AF92B1AD85645CD +:10D1800021D0F11916F8013B40462370419106F079 +:10D1900019FA237841999842EBD001232246404660 +:10D1A0000BF1010B06F004F9D9F800302A6A9B1A3A +:10D1B000F92BE4D9012128480DF000FCD9F8003002 +:10D1C00056452B62DDD1012123480DF0F7FB2348A2 +:10D1D0000BF08CF8092122480DF0F0FB01212148C9 +:10D1E0000DF0ECFB00230A2259461C480BF09AF87C +:10D1F00001211C480DF0E2FB05211B480DF0DEFB70 +:10D2000016480BF073F818EE100AFDF703F96B6877 +:10D21000D3F80831DB6D5B0703D52B6B43F00403B8 +:10D220002B6395F82C6095F82D2008E701231D222B +:10D230000A2128460096FBF7DDFDBAE60C212846B8 +:10D240000DF5077DBDEC028BBDE8F04FFAF744BA4F +:10D25000C43E0020DC3E002050310020684C0020FD +:10D26000EC3E0020EC2300204824002008BB0020D6 +:10D270004368D3F80831DB6D5B0713D52DE9F04F18 +:10D28000D0F83CE0884690F82D20ADF50F7D9EF853 +:10D290000930044690F82C10934204D00DF50F7D10 +:10D2A000BDE8F08F70479EF800308B42F6D1BEF893 +:10D2B00003300A2BF2D990F844B01BF0020FCBF3E5 +:10D2C0004007EBD19EF80F500C2B9EF80E0005F096 +:10D2D0007F0545EAC01568B2EDB2429009D99EF8C3 +:10D2E00010009EF81170C00107F07F0700F47E5017 +:10D2F0000743B7F1000A94F8E06418BF4FF0010A41 +:10D30000D6B1A446002005E001305FFA80F9B145AE +:10D3100080F07D819CF848900CF11C0CA945F3D15C +:10D32000C0EBC00004EB8000B0F85E60BE428CBF72 +:10D330004FF0000A0AF0010A9EF80B000F2B9EF82E +:10D340000C904FEAC01009F07F0900F47E5049EAC2 +:10D35000000C5FFA8CF0CDF804C1469041F21687BC +:10D360009EF81490102B09F07F094FEA490909F142 +:10D3700013095FFA89F905D09EF8150009EB400002 +:10D3800000F0FF09BAF1000F11D02046FEF79CF81B +:10D390000546002800F09E810023102120461A46F1 +:10D3A0000093FBF727FD0DF50F7DBDE8F08F2046BC +:10D3B0004393CDE94412FEF787F8459ADDE94331FE +:10D3C000002800F02681BE42E6D9B8F1000FE3D074 +:10D3D0004B4540F053819DF8048108F101034393CC +:10D3E000A249A348FBF78AFEA148A249FBF786FEA3 +:10D3F00041469F480AF06EFF9D489E49FBF77EFE1E +:10D4000043999B480AF066FF99480AF06FFF20464F +:10D41000FEF75AF8B8F1040F01D90028BCD1C14673 +:10D42000429B013B282B49D8DFE813F0AC084800A9 +:10D4300048008D08EB064800C90548004800480030 +:10D440004800480048005605480048004800480089 +:10D45000480048004800350548004800480048009A +:10D46000380867071B082B074800FD074907AF0767 +:10D47000E6054800A1065A06310605062900C7EB55 +:10D48000C703216820464FF0FF3203F61873194492 +:10D49000FEF7C2FE2046FEF717F800287FF47CAFA7 +:10D4A000F9B22046FEF7DCF86368D3F80831DB6D8B +:10D4B000580703D5236B43F0040323632046FEF78C +:10D4C00003F800287FF468AF9DF8043194F82C101D +:10D4D00094F82D200DF59A79019300234846009386 +:10D4E000C9F8003089F804301223FBF721FF01222C +:10D4F000484605F07F01FBF7EDFD3946FCF786F85D +:10D5000031464846FCF782F8429B013B282B6CD8F9 +:10D51000DFE813F0D3026B006B00C00266036B0000 +:10D5200077036B006B006B006B006B006B00E3021A +:10D530006B006B006B006B006B006B006B00AD024F +:10D540006B006B006B006B008603500441043204D7 +:10D550006B002304B10444022C026B002900BD01BE +:10D5600063010E01020148AD3A462521266828468E +:10D57000FBF7E6FDB9F80330B5F90020FD2B41F2C9 +:10D58000AA8369884846FCF741F8A9884846FCF711 +:10D590003DF8E9884846FCF753F829894846FCF7E6 +:10D5A0004FF8B9F80330AA7AFD2B41F2478306EB16 +:10D5B000870548464FEA870805F5805595F85015C8 +:10D5C000FCF724F8B9F80330FD2B41F2048341F253 +:10D5D00052534644F25CB9F80330FD2B41F2E3822A +:10D5E00095F853154846FCF711F80123002050A97F +:10D5F000F722CDE93E3068460BF0C0FA204699E8A4 +:10D600000E00FBF799FB0DF50F7DBDE8F08F0026AE +:10D6100092E6B8F1000F7CD099452FD1002E3FF44F +:10D620004DAF9DF804811BF0040F08F101034393F3 +:10D630003FF4D6AE1049C1460D48D046FBF75EFD1B +:10D640000B480C49FBF75AFD514609480AF042FEC7 +:10D6500008490748FBF752FD052105480AF03AFE44 +:10D6600003480AF043FE05234393D9E6943E002085 +:10D67000684C0020EC230020B03E0020C249002569 +:10D68000C248FBF73BFDC249C048FBF737FDE36BDF +:10D69000BE48B3F803100AF01DFEBD49BB48FBF7B6 +:10D6A0002DFDBC49B948FBF729FDB949B748FBF73F +:10D6B00025FD494600230A22B4480AF033FEB34848 +:10D6C0000AF014FE01234A460A2120460095FBF782 +:10D6D00091FBE3E5B049AD48FBF710FDAC49AB4821 +:10D6E000FBF70CFD3946A9480AF0F4FDA849A74804 +:10D6F000FBF704FD3146A5480AF0ECFDA3480AF00B +:10D70000F5FD01233A46072120460095FBF772FB01 +:10D71000C4E59DF80431DDE6C7EBC70320683A464F +:10D72000494603F6187318442923FCF7D5FA5CE739 +:10D730003A4648A828212568FBF702FDBDF82011CC +:10D74000484605EB4705FBF761FFBDF82211484647 +:10D75000FBF75CFFBDF824114846FBF757FFBDF807 +:10D7600026114846FBF76CFFBDF828114846FBF729 +:10D7700067FF9DF82A114846012201F07F01FBF75F +:10D78000A9FC9DF82B11012201F07F01FBF7A2FCFF +:10D790009DF82C11012201F07F01FBF79BFCBDF8E5 +:10D7A0002E11FBF733FFBDF830114846012201F07E +:10D7B0007F01FBF78FFC95F8F81EFBF727FF484623 +:10D7C00001220021FBF786FC01221146FBF782FCB7 +:10D7D00095F8F91EFBF71AFF07E70022272148A852 +:10D7E0002668FBF7ADFCBDF82011484606F6287503 +:10D7F000FBF70CFFBDF82211484606F62C76FBF726 +:10D8000005FFBDF824114846FBF700FFBDF82611BF +:10D810004846FBF715FFBDF828114846FBF710FFF7 +:10D820009DF82A114846012201F07F01FBF752FCC6 +:10D830009DF82B11012201F07F01FBF74BFC9DF8B5 +:10D840002C11012201F07F01FBF744FCBDF82E11E1 +:10D85000FBF7DCFEBDF830110122484601F07F01E4 +:10D86000FBF738FC16F8041CFBF7D0FE0122002160 +:10D870004846FBF72FFC01220421FBF72BFC15F88F +:10D88000011F4846FBF7C2FEB542F8D1ADE63A4665 +:10D89000262148A82568FBF753FCBDF8201148460F +:10D8A000FBF7B4FEBDF822114846FBF7AFFEBDF80A +:10D8B00024114846FBF7AAFEBDF826114846FBF79F +:10D8C000BFFEBDF828114846FBF7BAFEB9F8033091 +:10D8D0009DF82A21FD2B41F2C98007EBC70348467A +:10D8E0004FEAC7082B4493F81F1FFBF78FFEB9F8C8 +:10D8F0000330FD2B41F20880B84405F62376002062 +:10D9000008F5726146442944FD2B40F21687013127 +:10D910008E42F9D108F6227205F62771FD2B4FF0E1 +:10D9200000062A44414412F8010F08D991423FF4FD +:10D930005CAEB9F8033012F8010FFD2BF6D809EBF5 +:10D940000305013389F8046089F80330C30900F046 +:10D950007F006B71B9F80330FD2B09EB030503F170 +:10D960000103E3D889F803306871DFE707EB47016B +:10D9700041F24A5320683A460B444946184423234F +:10D98000FCF716F831E600BF643E0020684C00202A +:10D99000EC230020883E0020403E002048AD3A465F +:10D9A000222126682846FBF7CBFBB9F80330B5F9EE +:10D9B0000020FD2B40F28F8769884846FBF726FE42 +:10D9C000A9884846FBF722FEE9884846FBF738FE5F +:10D9D00029894846FBF734FEB9F80330AA7AFD2BB3 +:10D9E00040F2DD87E9894846FBF710FEB9F80330BD +:10D9F000FD2B0BD809EB03012A8A013302F07F02C9 +:10DA000089F8033000234A7189F8043006EB870552 +:10DA100048464FEA870805F5805595F83A15FBF713 +:10DA2000F5FDB9F80330FD2B41F27180B9F80330F0 +:10DA3000464441F23D52FD2BB25C3FF6D6AD09EBB8 +:10DA40000300013302F07F01D20989F8033000237B +:10DA5000427189F80430B9F80330FD2B3FF6C5ADAB +:10DA600009EB03020133517189F80330BDE5469893 +:10DA700007EB47013A4600EB401300EB83032068B5 +:10DA8000194441F2D3530B44494618441623FBF77B +:10DA90008FFFAAE507EB4703469885213A4607EB37 +:10DAA000830311FB003141F2675320680B44494660 +:10DAB00018440423FCF734F897E5C7EBC7014698F0 +:10DAC00085233A4613FB00132068494603F5AB5300 +:10DAD00018440123FCF700F987E548AD3A460E21CA +:10DAE00026682846FBF72CFB29884846FBF78EFD65 +:10DAF00069884846FBF78AFDB9F80330B5F9042078 +:10DB0000FD2B40F29A87E9884846FBF799FD298961 +:10DB10004846FBF795FDB9F80330AA7AFD2B40F291 +:10DB20006587E9894846FBF771FDB9F80330FD2B9D +:10DB30000BD809EB03012A8A013302F07F0289F82E +:10DB4000033000234A7189F80430469A07EB8705B1 +:10DB500048464FEA870802EB421302EB83031D4459 +:10DB600041F2B5533544E95CFBF750FDB9F8033099 +:10DB7000FD2B40F2E1864699B8448522FD2B4FF0FB +:10DB8000000512FB018241F2B65111444FF003022D +:10DB9000314402F1FF3211F8010F0AD912F0FF02ED +:10DBA0003FF423ADB9F80330013A11F8010FFD2B12 +:10DBB000F4D809EB0306013389F8045089F80330DF +:10DBC000C30900F07F007371B9F80330FD2B09EB36 +:10DBD000030603F10103E1D889F803307071DDE732 +:10DBE0004FEA470B0BEB070141F2BD4320683A4671 +:10DBF00007EB81010B44494618440523FBF790FFCE +:10DC0000F3E44FEA470B0BEB070141F2D7432068DF +:10DC10003A460B44494618440723FBF7C9FEE4E49F +:10DC20004FEA470B48AD3A461B2126682846FBF7CA +:10DC300087FA29884846FBF7E9FC69884846FBF7DC +:10DC4000E5FCA9884846FBF7E1FCE9884846FBF774 +:10DC5000F7FC29894846FBF7F3FCB9F80330AA7AA8 +:10DC6000FD2B40F21186E9894846FBF7CFFCB9F855 +:10DC70000330FD2B0BD809EB03012A8A013302F094 +:10DC80007F0289F8033000234A7189F804300BEBD6 +:10DC9000070341F2EC42484606EB4303995CFBF76D +:10DCA000B5FCB9F80330FD2B40F2D6850BEB07002D +:10DCB00041F2ED41002206EB4005174640002944A1 +:10DCC000FD2B30D9002A00F0358541F2EE4241F2B9 +:10DCD000F141FD2B4FF00005024431443244014430 +:10DCE00012F8010F08D98A423FF47FACB9F803302B +:10DCF00012F8010FFD2BF6D809EB0306013389F862 +:10DD0000045089F80330C30900F07F007371B9F83B +:10DD10000330FD2B09EB030603F10103E3D889F877 +:10DD200003307071DFE709EB030E01338D5C89F876 +:10DD3000047089F8033005F07F0CB9F80330ED0961 +:10DD4000FD2B8EF80550BDD85D1C4B4489F803505F +:10DD500083F805C0B9F80330B4E74FEA8708B84440 +:10DD600041F23D2320683A4603EB480349461844F4 +:10DD70002023FBF753FD38E44FEAC708B84441F2CB +:10DD8000AD1320683A4603EB4803494618441E2366 +:10DD9000FBF77AFC29E44FEA870808EB07032068C1 +:10DDA0003A4649465B0003F62D7318441D23FBF7E2 +:10DDB00035FD1AE44FEA470B3A4648A81C2125686E +:10DDC000FBF7BEF9BDF8201148465F44FBF71EFC87 +:10DDD000BDF82211484605EB4705FBF717FCBDF8D7 +:10DDE00024114846FBF712FCBDF826114846FBF704 +:10DDF00027FCBDF828114846FBF722FC9DF82A11A4 +:10DE00004846012201F07F01FBF764F99DF82B11D0 +:10DE1000012201F07F01FBF75DF99DF82C11012231 +:10DE200001F07F01FBF756F9BDF82E11FBF7EEFB71 +:10DE3000BDF830114846012201F07F01FBF74AF995 +:10DE400041F2E643E95CFBF7E1FB48460122002191 +:10DE5000FBF740F901220221FBF73CF941F2E843CC +:10DE6000E95AFBF7D3FB41F2EA434846E95AFBF78C +:10DE7000CDFBFFF7BABB4FEAC708B84441F2F24303 +:10DE800020683A4603EB4803494618442123FBF730 +:10DE9000FBFBFFF7AABB439B9845BFF40FAB07EB17 +:10DEA000470341F2D359DDF80CA1994408EB48131C +:10DEB00008EB830399440FFA88F208F101082168FE +:10DEC00020461FFA88F8494409F18509FEF736F81B +:10DED000D045F0D1FFF7F2BA439B9845BFF4EEAAC4 +:10DEE00008EB4813479507EB870208EB83031344BD +:10DEF000CDE944671E461746E36B2068B3F803205C +:10DF00000E2A00F2BD83002208EB481341F2B551FE +:10DF100008EB83033B4403445A544FEA4812E16B35 +:10DF2000B1F803500F2D00F29B83032501234244D7 +:10DF300041F2B65C08EB82023A4402449444002267 +:10DF400051001131C9B2002A00F072830132D1B2FE +:10DF50009942F5D34FEA430A41F2B7594FF0000B0B +:10DF60000AF1110AB1445FFA8AFA8144BBF1020F47 +:10DF700008D8E06B5146FBF7C9F9C92828BF002033 +:10DF800009F80B000BF1010B0AF1020A5FFA8BF39F +:10DF90005FFA8AFAAB42E9D32046FDF795FA0028EA +:10DFA00000F0998308F10108439A85361FFA88F337 +:10DFB0009342A1D3479DDDE94467FFF77FBA07EBA2 +:10DFC000470241F2D7432168204613444FF0FF3205 +:10DFD0004FEA470B1944FDF7B1FF2046FDF774FAED +:10DFE00000287FF4D9A9F9B2042901F288802046DB +:10DFF000FDF7B2F9FFF758BA07EB470241F24A536F +:10E000002168204613444FF0FF321944FDF796FF74 +:10E010002046FDF759FA00287FF4BEA9236BF9B218 +:10E0200043F48073012923633FF63EAA2046FCF7A0 +:10E0300073FCFFF739BAE36B2168B3F803200E2AAB +:10E0400000F2DB86002301EB470888F8F83EE26B1C +:10E05000B2F803100F2900F246870122112303EBC7 +:10E060004202D1B20022002A00F0A882023301321B +:10E07000DBB28B42F7D12046FDF726FA00287FF469 +:10E080008BA9F9B22046FDF733FAFFF70DBAE36B1F +:10E090002268B3F803100E2900F2A186002382F84B +:10E0A000283FE16BB1F803000F2800F240860421FD +:10E0B000112302F6297C0022032A40F21D8301323B +:10E0C0000233D0B2DBB28142F6D82046FDF7FCF92C +:10E0D00000287FF461A92046FDF742FCFFF7E4B970 +:10E0E000E36B2268B3F803100E2900F29486002334 +:10E0F00007EBC7014FEAC708114481F81F3FE36BE4 +:10E10000B3F803000F2800F2C28605200321B844AB +:10E11000112302EB080A00220AF5726B022A40F270 +:10E120002783013202335FFA82FCDBB26145F5D806 +:10E130004B000AF6237900221133DBB2042A40F2A5 +:10E14000AC8201320233D1B2DBB28142F6D3204637 +:10E15000FDF7BAF900287FF41FA9236BF9B2204616 +:10E1600043F080032363FDF73DFBFFF79DB9E36BAD +:10E170002168B3F803200E2A00F27B86002301EB0E +:10E18000870101F5805C8CF85035E26BB2F8030032 +:10E190000F2800F25C864FF0010B022341F2515A26 +:10E1A00011228A440021012940F23F8301310232C9 +:10E1B000C8B2D2B29842F6D3013B00225B00DBB278 +:10E1C00003EB4B0113331331DBB2C9B2002A00F069 +:10E1D000128202330132DBB29942F7D12046FDF7B9 +:10E1E00073F900287FF4D8A8236BF9B243F4806355 +:10E1F000032923633FF658A92046FCF777FEFFF773 +:10E2000053B907EB470241F2BD432168204607EBB3 +:10E2100082024FEA470B13444FF0FF321944FDF7D7 +:10E220003FFF2046FDF750F900287FF4B5A8F9B26A +:10E23000012940F28B876368D3F80831DA6D510702 +:10E24000C2F380033FF536A9CDE900390DF59A797F +:10E2500094F82D2094F82C104846C9F8003089F81D +:10E2600004301223FBF764F8484601220521FAF72F +:10E2700031FF3946FBF7CAF931464846FBF7C6F984 +:10E28000B0E407EBC70241F2AD132168204603EB6F +:10E2900042034FF0FF324FEAC7081944FDF794FDDF +:10E2A0002046FDF711F900287FF476A8F9B2072976 +:10E2B00000F262862046FCF7AFF9FFF7F5B807EBEE +:10E2C000C70241F2F2432168204603EB42034FF0BC +:10E2D000FF324FEAC7081944FDF776FD2046FDF7E7 +:10E2E000F3F800287FF458A8F9B2032900F2B986A0 +:10E2F0002046FCF771FFFFF7D7B8E36B2268B3F84D +:10E3000003100E2900F20386002307EB470141F2B8 +:10E31000E6404FEA470B02EB41010B54E36BB3F8C5 +:10E32000031043930F2900F2C38511214FF0020A15 +:10E330000BEB07034494CDF814B14FF0000802EB47 +:10E34000430241F2E843CB460C46A9469D18B8F17A +:10E35000010F40F2608208F1010802345FFA88F18F +:10E36000E4B25145F3D34D46D946DDE9444B20464E +:10E37000FDF7AAF800287FF40FA8002F40F0D585FC +:10E380002046FCF781FBFFF78FB8E36B2168B3F8F9 +:10E3900003200E2A00F21585002301EB870B0BF5F5 +:10E3A000805A8AF83A35E26BB2F803100F2900F26E +:10E3B000F4844FF002080123002041001131C9B25A +:10E3C000002800F0D3840130C2B29342F5D84FEA5E +:10E3D000430941F23C5A09F11109DA444FF0000BAC +:10E3E0005FFA89F9BBF1010F40F2F7810BF1010BE4 +:10E3F00009F102095FFA8BF35FFA89F94345F1D31A +:10E400002046FDF761F800287EF4C6AF236BF9B211 +:10E4100043F40073032923633FF646A82046FCF724 +:10E42000AFFCFFF741B807EB870241F23D232168BB +:10E43000204603EB42034FF0FF324FEA87081944AE +:10E44000FDF714FC2046FDF73FF800287EF4A4AF4A +:10E450003F2F00F2DF8539462046FCF71DF8FFF715 +:10E4600023B807EB870321684FF0FF3220465B009B +:10E470004FEA870803F62D731944FDF7F7FB204692 +:10E48000FDF722F800287EF487AF3F2F00F21086B8 +:10E4900039462046FCF7E0FDFFF706B8E36B22683B +:10E4A000B3F803100E2900F2C484002307EB4701E0 +:10E4B00041F2EC404FEA470B02EB41010B54E16B98 +:10E4C000B1F803000F2800F21F844FF0030A4FF049 +:10E4D00002080BEB070341F2ED4C4FF0110E44958F +:10E4E00002EB43039C4443930023012B40F27F81C2 +:10E4F00001330EF1020EDAB25FFA8EFE4245F4D31A +:10E500004FEA4803439A41F2EF48449D1133424495 +:10E51000DBB290460022022A40F2438101320233EC +:10E52000D1B2DBB25145F6D32046FCF7CDFF00282F +:10E530007EF432AFFBB2002B40F045852046FCF75D +:10E5400061FBFEF7B1BF07EB470341F26759DDF806 +:10E550000CA107EB8303994408EB481308EB8303F2 +:10E5600099440FFA88F208F10108216820461FFA41 +:10E5700088F8494409F18509FDF792FDD045F0D1AD +:10E58000FEF79CBFC7EBC709DDF80CA108EB4813E9 +:10E5900009F5AB5908EB830399440FFA88F208F1A7 +:10E5A0000108216820461FFA88F8494409F18509C5 +:10E5B000FDF732FED045F0D3FEF780BFE06B03F1EC +:10E5C000010E9446B0F80390CE4511DA00EB030932 +:10E5D000704499F805E040794FEACE1E00F07F00C4 +:10E5E0000EF47E5E40EA0E00C828D8BF5FFA80FCB9 +:10E5F00088F8F9CE3AE5E06B03F101089646B0F8E9 +:10E600000390C84511DA00EB0309404499F80580EE +:10E6100040794FEAC81800F07F0008F47E5840EABD +:10E620000800C828D8BF5FFA80FE8CF853E5D0E513 +:10E63000D4F83C9001F1010A9646B9F803B0DA45E6 +:10E640000BDACA4489449AF805E099F805100EF0EF +:10E650007F0E4EEAC11E5FFA8EFE8CF800E075E474 +:10E660000B7D102D03F07F0300F0AA854D7D012B5B +:10E6700005F07F0538BF0123032D38BF032556E47D +:10E68000997CDA7CCB0102F07F0203F47E531A43BB +:10E69000802A3FF738ACD2B236E4E16B03F1010EC9 +:10E6A0004FF0000CB1F80380C64511DA01EB030806 +:10E6B000714498F805E049794FEACE1E01F07F01D8 +:10E6C0000EF47E5E41EA0E01C829D8BF5FFA81FCD4 +:10E6D00009F802C035E55FFA88F12046FDF7F6F942 +:10E6E0006368D3F80831DB6D5D077FF55BAC236BA6 +:10E6F00043F00403236355E4E06B03F101084FF09A +:10E70000000EB0F80390C84511DA00EB030940444D +:10E7100099F8058040794FEAC81800F07F0008F4A6 +:10E720007E5840EA0800C828D8BF5FFA80FE0CF87F +:10E7300002E0C4E40122FFF7C3BA5F1C0A784B442D +:10E7400089F8040089F80370D70902F07F025F712D +:10E75000B9F80330FD2B09EB030703F1010C3FF679 +:10E76000D6A889F803C07A71B9F80330FFF7CFB89B +:10E77000D4F83CE003F101084FF0000CBEF8039020 +:10E78000C8450BDAF0449E4498F805C09EF805E0B1 +:10E790000CF07F0C4CEACE1C5FFA8CFC0BF802C02C +:10E7A000BFE4E16B03F1010E0020B1F803C0E645C0 +:10E7B00010DA01EB030C71449CF805C049794FEA6B +:10E7C000CC1C01F07F010CF47E5C41EA0C01C829ED +:10E7D000D8BFC8B208F80200A0E6E06B4946FAF7D5 +:10E7E00095FDC92828BF00200AF80B00FEE5E16B63 +:10E7F0000EF101000022B1F80350A84208DA0844E3 +:10E8000071444279497902F07F0242EAC112D2B2E0 +:10E810000CF803206CE621464398FAF777FDC928E7 +:10E8200028BF002025F8180095E5D4F83CE002F157 +:10E8300001080020BEF80390C8450ADAF044964467 +:10E8400098F805009EF805E000F07F0040EACE1041 +:10E85000C0B20AF80100A9E45A1C4B4489F803200D +:10E86000002289F8042002225A71B9F80330FD2BE6 +:10E870003FF61CAA5A1C4B4489F8032003225A7104 +:10E88000B9F80330FFF712BA02F07F02591C4B446B +:10E8900089F803105A710023EA7A89F80430B9F82C +:10E8A000033002F07F02FD2B3FF6DDA9591C4B44DB +:10E8B00089F803105A71B9F803302A7BFD2B02F056 +:10E8C0007F023FF6D0A909EB030101334A7189F8B1 +:10E8D0000330FFF7C8B9591C4B4489F803100021D5 +:10E8E00089F80410C2F3C61102F07F025971B9F819 +:10E8F0000330FD2B3FF660A809EB030101334A7199 +:10E9000089F80330FFF758B85A1C4B4489F80320A4 +:10E91000002289F8042003225A71B9F80330FD2B34 +:10E920003EF6EAAF5A1C4B4489F8032005225A717F +:10E93000B9F80330FEF7E0BF5A1C4B4489F80320B6 +:10E94000002289F8042001225A71B9F80330FD2B06 +:10E950003FF611A99A1803214B4489F8032041F28C +:10E96000B6525971B9F80330AA5CFD2B4FEAD211A7 +:10E970003FF601A9581C4B4402F07F0289F80300BE +:10E980005971B9F80330FD2B3FF6F5A8591C4B44DB +:10E9900089F803105A71B9F80330FFF7ECB802F0A8 +:10E9A0007F02591C4B4489F803105A710023EA7AFC +:10E9B00089F80430B9F8033002F07F02FD2B3FF6EE +:10E9C00011A8591C4B4489F803105A71B9F8033047 +:10E9D0002A7BFD2B02F07F023FF604A809EB03011E +:10E9E00001334A7189F80330FEF7FCBF02F07F0261 +:10E9F000591C4B4489F803105A710023EA7A89F8AC +:10EA00000430B9F8033002F07F02FD2B3FF689A8ED +:10EA1000591C4B4489F803105A71B9F803302A7B0A +:10EA2000FD2B02F07F023FF67CA809EB03010133C6 +:10EA30004A7189F80330FFF774B8591C4B4489F8C0 +:10EA40000310002189F80410C2F3C61102F07F02FE +:10EA50005971B9F80330FD2B3FF655A809EB0301B6 +:10EA600001334A7189F80330FFF74DB802F07F0295 +:10EA7000591C4B4489F803105A7100239DF82B212F +:10EA800089F80430B9F8033002F07F02FD2B3EF61E +:10EA900024AF591C4B4489F803105A71B9F803305C +:10EAA0009DF82C21FD2B02F07F023EF616AF591C7B +:10EAB0004B4489F803105A71B9F80330BDF82E2180 +:10EAC000FD2BC2F3C6113EF608AF581C4B4402F0B2 +:10EAD0007F0289F803005971B9F80330FD2B3EF627 +:10EAE000FCAE581C4B44BDF8301189F803005A7134 +:10EAF00001F07F01B9F80330FD2B3EF6EEAE09EBD5 +:10EB000003020133517189F80330FEF7E6BE5A1C47 +:10EB10004B4489F80320002289F8042001225A710D +:10EB2000B9F80330FD2B3EF681AF591C4B4495F8E4 +:10EB30003B2589F803100221D0095971B9F8033037 +:10EB4000FD2B3EF673AF02F07F015A1C4B4489F84F +:10EB500003205871B9F80330FD2B3EF667AF581CFF +:10EB60004B4407F24C5289F80300597106EB8202BC +:10EB7000B9F80330127BFD2B3EF658AF591C4B44BD +:10EB800089F80310D10902F07F025971B9F80330F6 +:10EB9000FD2B3EF62AAD09EB030101334A7189F8DA +:10EBA0000330FEF743BF591C4B4489F80310002182 +:10EBB00089F80410D10902F07F025971B9F80330C5 +:10EBC000FD2B3EF60DAD09EB030101334A7189F8C7 +:10EBD0000330FEF705BD5A1C4B4489F80320002280 +:10EBE00089F8042002225A71B9F80330FD2B3EF651 +:10EBF000EEAC591C4B4407F2525289F80310012124 +:10EC000006EB82025971B9F80330527AFD2B3EF6B9 +:10EC1000DEAC59184B4489F80310D10902F07F0289 +:10EC20005971B9F80330FD2B3EF6DAAC09EB03015C +:10EC300001334A7189F80330FEF7C9BC02F07F0244 +:10EC4000591C4B4489F803105A710023EA7A89F859 +:10EC50000430B9F8033002F07F02FD2B3EF6A7AC7A +:10EC6000591C4B4489F803105A71B9F803302A7BB8 +:10EC7000FD2B02F07F023EF69AAC591C4B4489F8FA +:10EC800003105A71B9F80330EA89FD2BC2F3C6109C +:10EC90003EF68DAC02F07F015A1C4B4489F80320EC +:10ECA0005871B9F80330FD2B3EF681AC581C4B442B +:10ECB0002A8A89F80300597102F07F02B9F80330FB +:10ECC000FD2B3EF674AC09EB030101334A7189F860 +:10ECD0000330FEF76CBC591C4B4489F8031000212B +:10ECE00089F80410C2F3C61102F07F025971B9F815 +:10ECF0000330FD2B3EF645AC09EB030101334A71AD +:10ED000089F80330FEF73DBC0B7D102803F07F032C +:10ED100000F05D82022B497D38BF0223984601F046 +:10ED20007F03032B38BF03239A46FFF7D2BB0B7D2B +:10ED3000102803F07F0303D0497D11F07C0F08D128 +:10ED4000002B3FF4B4A95B0004211133DBB2FFF7C1 +:10ED5000B0B901F07F01002B00F02C825B00113371 +:10ED6000DBB200293FF4B1A9FFF7A3B9D4F83CE026 +:10ED700001F1010C0246BEF80390CC4509DAF444D7 +:10ED800071449CF80520497902F07F0242EAC112E1 +:10ED9000D2B28AF83B25FFF716BB137D102903F08A +:10EDA0007F0300F0EC8192F81580012B08F07F08BA +:10EDB00038BF0123B8F1020F38BF4FF00208FFF748 +:10EDC000FBBA9A7CDB7CD20103F07F0302F47E5213 +:10EDD0001343802B3FF7E0AADBB2FFF7DEBA997C42 +:10EDE000DB7CC90103F07F0301F47E510B43802BD0 +:10EDF0003FF754A9DBB2FFF752B99A7CDB7CD20112 +:10EE000003F07F0302F47E521343802B3FF71AA9CD +:10EE1000DBB2FFF718B9997CDB7CC90103F07F03F3 +:10EE200001F47E510B43802B3FF761A9DBB2FFF762 +:10EE30005FB9997CDB7CC90103F07F0301F47E514B +:10EE40000B43802B3FF731ABDBB2FFF72FBB137DBA +:10EE5000102803F07F0300F0A681527D022B02F000 +:10EE60007F0238BF0223012A38BF01229346FFF7F1 +:10EE700095B99A7CDB7CD20103F07F0302F47E52C9 +:10EE80001343802B3FF77AA9DBB2FFF778B9197DDE +:10EE9000102801F07F0100F06881587D032900F0FF +:10EEA0007F0038BF0321052838BF0520FFF72FB9A1 +:10EEB000184610291B7D03F07F0300F04C8190F869 +:10EEC00015A01AF07E0F00F046810AF07F0A002B91 +:10EED00000F0628159001131C9B2BAF1000F3FF45C +:10EEE00046AAFFF725BA137D102903F07F0300F02F +:10EEF0005181527D02F07F02012A38BF0122002B8E +:10EF000000F03A815B001133DBB2FFF7A8B8997CBF +:10EF1000DB7CC90103F07F0301F47E510B43802B9E +:10EF20003FF7F2A9DBB2FFF7F0B96368D3F8083115 +:10EF3000DA6D5107C2F380033EF5BCAACDE9003972 +:10EF40000DF59A7994F82D2094F82C104846C9F8BC +:10EF5000003089F804301223FAF7EAF94846012212 +:10EF60001C21FAF7B7F83946FAF750FB3146484604 +:10EF7000FAF74CFBFEF720BF6368D3F80831DA6D6F +:10EF80005007C2F380033EF595AACDE900390DF58F +:10EF90009A7994F82D2094F82C104846C9F800303E +:10EFA00089F804301223FAF7C3F9484601221E21DA +:10EFB000FAF790F83946FAF729FB31464846FAF74E +:10EFC00025FBFEF7DBBE6368D3F80831DA6D510725 +:10EFD000C2F380033EF56EAACDE900390DF59A79AA +:10EFE00094F82D2094F82C104846C9F8003089F880 +:10EFF00004301223FAF79CF9484601221B21FAF744 +:10F0000069F83946FAF702FB31464846FAF7FEFA44 +:10F01000FEF708BE6368D3F80831DA6DC2F38003E7 +:10F0200052073EF547AACDE900390DF59A7994F8D3 +:10F030002D2094F82C104846C9F8003089F8043087 +:10F040001223FAF775F9484601222021FAF742F80F +:10F050003946FAF7DBFA31464846FAF7D7FAFEF7AF +:10F060007EBE6368D3F80831DA6DC2F380035207BD +:10F070003EF520AACDE900390DF59A7994F82D20B6 +:10F0800094F82C104846C9F8003089F8043012234F +:10F09000FAF74EF9484601222121FAF71BF83946C2 +:10F0A000FAF7B4FA31464846FAF7B0FAFEF7E5BE89 +:10F0B0006368D3F80831DA6DC2F3800352073EF576 +:10F0C000F9A9CDE900390DF59A7994F82D2094F835 +:10F0D0002C104846C9F8003089F804301223FAF79A +:10F0E00027F9484601221D21F9F7F4FF3946FAF7BE +:10F0F0008DFA31464846FAF789FAFEF74EBE636844 +:10F10000D3F80831DA6D5007C2F380033EF5D2A977 +:10F11000CDE900390DF59A7994F82D2094F82C104A +:10F120004846C9F8003089F804301223FAF700F98C +:10F13000484601220721F9F7CDFF3946FAF766FA6A +:10F1400031464846FAF762FAFEF75DBD2046FBF706 +:10F1500023FBFEF7A9B9002B3FF4E7A859004FF0B5 +:10F16000020A1131C9B2FFF7E3B803294FF00500D5 +:10F1700038BF0321FEF7CBBF1123FEF770BF012B71 +:10F180004FF0020838BF0123FFF716B94FF01309FB +:10F19000FEF7F8B80122B2E61121BAF1000F3FF4F0 +:10F1A000E6A8FFF7C5B8022B4FF0010B38BF0223CA +:10F1B000FEF7F4BF112300293EF487AFFEF779BFB5 +:10F1C000012B4FF0030538BF0123FEF7B0BE022B21 +:10F1D0004FF0030A38BF02239846FFF77AB900BF01 +:10F1E00030B590F8443087B013F0010300F0888008 +:10F1F00043680446D3F80831DB6D5D07C3F3800133 +:10F200003ED48F4802AD0BF0D9FB8E4809F06EF862 +:10F210002E218D480BF0D2FB8A4809F067F82E2189 +:10F2200089480BF0CBFB874809F060F8012187483B +:10F230000BF0C4FB172186480BF0C0FB814809F096 +:10F2400055F8012181480BF0B9FBE36B1B78D80717 +:10F250005DD4990700F1C7805A0700F1BF801807F5 +:10F2600000F1CB80D90600F1DC809A0600F1CA805B +:10F270005B0628464CBF7749714909F073F94AE0AB +:10F2800000216F480BF09AFB6E4809F02FF82E21F1 +:10F29000714802AD0BF092FB6A4809F027F82E2165 +:10F2A0006D480BF08BFB674809F020F80121674897 +:10F2B0000BF084FB1B2169480BF080FB614809F0CF +:10F2C00015F8012161480BF079FBE36B1B78D80737 +:10F2D00058D4990700F18C805A0700F19D801807D7 +:10F2E00000F1A480D90600F192809A0600F1A38073 +:10F2F0005B0628464CBF5749514909F033F945E0B0 +:10F30000012219460093F9F775FD07B030BD544945 +:10F31000284609F027F929464A4808F0B5FF494828 +:10F3200008F0E4FF284609F0E1F82E2146480BF0EA +:10F3300045FB444808F0DAFF2E2143480BF03EFB22 +:10F34000404808F0D3FF00213D480BF037FB3D4813 +:10F3500008F0CCFFE16B62680023097884F82C1078 +:10F36000D2F80811CA6D42F00402CA651946206B32 +:10F370003C4A40F01200009320632046F9F73AFD22 +:10F3800007B030BD3649284609F0ECF829462D482B +:10F3900008F07AFF2B4808F0A9FF284609F0A6F8E4 +:10F3A0002E212D480BF00AFB264808F09FFF2E2146 +:10F3B00029480BF003FB234808F098FF0021204860 +:10F3C0000BF0FCFA1F4808F091FF012302220021F4 +:10F3D00020460093F9F70EFD07B030BD22492846BC +:10F3E00009F0C0F897E72149284609F0BBF892E7F1 +:10F3F0001E49284609F0B6F8C8E71D49284609F015 +:10F40000B1F888E71B49284609F0ACF883E71A49A8 +:10F41000284609F0A7F8B9E71349284609F0A2F8E9 +:10F42000B4E71549284609F09DF874E710492846C5 +:10F4300009F098F8AAE70F49284609F093F8A5E7DC +:10F44000183D0020684C002060270020EC2300209D +:10F45000A03C0020741C0020B4400020843C00200C +:10F46000441C00207D7D7D00501C0020481C002095 +:10F47000581C0020681C0020601C00204368D3F842 +:10F480000821D26D30B50446500783B00D4602D531 +:10F49000226B91041AD485B9002284F82C20D3F869 +:10F4A0000821D36D23F00403D365236B23F03003CD +:10F4B00043F04203236303B030BD002320461A46C5 +:10F4C00019460093F9F796FC6368E5E70021324896 +:10F4D0000BF074FA314808F009FF2E2130480BF088 +:10F4E0006DFA2E4808F002FF2E212D480BF066FA27 +:10F4F0002A4808F0FBFE01212A480BF05FFA0F2191 +:10F5000029480BF05BFA254808F0F0FE2E2124482C +:10F510000BF054FA214808F0E9FE2E2120480BF0A8 +:10F520004DFA1E4808F0E2FE00211B480BF046FA97 +:10F530001A4808F0DBFE236B204623F4404343F4D3 +:10F5400040332363F8F7F2FD6368D3F80801C26D16 +:10F550005207A0D5216B41F004022263C06D400721 +:10F5600099D5900497D5500409D410040ED4D20331 +:10F5700091D521F4903141F0040121638BE721F40E +:10F58000804142F204020A43226384E721F42041CD +:10F5900041F0040121637EE7183D0020684C002003 +:10F5A000B4400020EC230020743C00204368D3F8D2 +:10F5B0000831DB6D590730B5044683B008D4002309 +:10F5C0000122204619460093F9F714FC03B030BD20 +:10F5D000C36B90F82D105A7A9142F0D190F82C100C +:10F5E0001A789142EBD1B3F803300A2BE7D990F89F +:10F5F00044309A07C3F34005E1D4DB07E6D529463A +:10F600001D480BF0DBF91D4808F070FE2E211C4848 +:10F610000BF0D4F9194808F069FE2E2118480BF0B8 +:10F62000CDF9164808F062FE012116480BF0C6F924 +:10F63000222115480BF0C2F9104808F057FE2E2180 +:10F640000F480BF0BBF90D4808F050FE2E210C4876 +:10F650000BF0B4F9094808F049FE294606480BF0BA +:10F66000ADF9064808F042FE0121204603B0BDE88E +:10F670003040FFF703BF00BF183D0020684C00205A +:10F6800060270020EC230020003E002090F844304A +:10F69000DA070ED54368D3F80831DB6D5B0710B588 +:10F6A000044605D5C36B90F82D205B7A9A4201D0B1 +:10F6B00010BD704700211D480BF080F91C4808F070 +:10F6C00015FE2E211B480BF079F9194808F00EFEA3 +:10F6D0002E2118480BF072F9154808F007FE012199 +:10F6E00015480BF06BF92A2114480BF067F9104804 +:10F6F00008F0FCFD2E210F480BF060F90C4808F0D3 +:10F70000F5FD2E210B480BF059F9094808F0EEFDE4 +:10F71000002106480BF052F9054808F0E7FD2046A5 +:10F720000121BDE81040FFF7A9BE00BF183D002031 +:10F73000684C002060270020EC230020F83D0020CA +:10F740004268D2F80821D26D520705D5C26B90F8F5 +:10F750002DC0517A8C4500D0704790F82CC011789C +:10F760008C45F9D1B2F803200A2AF5D990F8443033 +:10F770009B07F1D4FAF7ACBB4268D2F80821D26DEE +:10F7800053070DD50B46F0B5C56BADF5037D90F86D +:10F790002D200446697A914203D00DF5037DF0BD1A +:10F7A000704790F82C102E788E42F6D190F8446075 +:10F7B000C6F34007B607F0D4F3B1B5F803300C2B0D +:10F7C00042D1808B42F6F773984215D9A87B94F802 +:10F7D0002F30984210D01D212F480BF0EFF82F4802 +:10F7E00008F084FDE36B2046997BFDF701F890BBA0 +:10F7F00094F82C1094F82D2041AD002605232846BE +:10F80000CDE900662E602E71F9F792FDB5F8033050 +:10F81000FD2B08D894F82F20E91801332E7102F03F +:10F820007F02EB704A7101230021F7226846CDE97F +:10F830003E3144A909F0A2F9204695E80E00F9F7F7 +:10F840007BFA0DF5037DF0BD01230C220A21009700 +:10F85000F9F7D0FAA1E712491048F9F74FFC11491E +:10F860000E48F9F74BFCE16B3B460A22897B0B48BB +:10F8700008F058FD094808F039FD6368D3F80831ED +:10F88000DB6D5B07B4D5236B94F82C1043F00403B5 +:10F8900094F82D202363AFE7603D0020684C0020E2 +:10F8A000803D0020EC23002070B5ADF5027D0026E0 +:10F8B0000922054641AC0623CDE90026266090F8D2 +:10F8C0002D2090F82C1020462671F9F731FDB4F860 +:10F8D0000330296BFD2B4FEA513225D96868D0F8E7 +:10F8E0000801C06D02EA9002D20710D40123002063 +:10F8F00044A9F722CDE93E30684609F03FF9284691 +:10F9000094E80E00F9F718FA0DF5027D70BD480471 +:10F9100025D40A042AD4CE03C1F3004016D521F41D +:10F9200090310320296311E068682671E618D0F849 +:10F9300008010133C06DE37002EA900002F0010299 +:10F94000B4F8033010F001007271E0D1FD2BCDD876 +:10F95000E218013350710022E3702271C6E721F4EE +:10F960008041012041F400512963EFE721F4204157 +:10F9700002202963EAE700BF4368D3F80831DB6D52 +:10F980005B070BD5C36B10B593F809C082B090F834 +:10F990002D200446944502D002B010BD704793F864 +:10F9A00000C090F82C209445F6D190F8442092079E +:10F9B000F2D40029F0D0B3F803200C2A0CD19B7BA1 +:10F9C000012B14D0022B3DD0032B0DD0204602B0CA +:10F9D000BDE81040FFF768BF002401230C220A2174 +:10F9E0000094F9F707FAD7E7FCF73EFEEEE7036B62 +:10F9F0009904EBD431493248F9F790FB314930484A +:10FA0000F9F78CFB2F492E48F9F788FB2E492C4833 +:10FA1000F9F774FB2D492A48F9F780FB2949284852 +:10FA2000F9F77CFB27492648F9F778FB2448234956 +:10FA3000F9F774FB236B204623F4C03343F41833E7 +:10FA40002363C4E7036B9A04C0D51C491C48F9F72B +:10FA500065FB1C491A48F9F761FB1A491848F9F780 +:10FA60005DFB19491648F9F749FB19491448F9F79C +:10FA700055FB14491248F9F751FB12491048F9F7A0 +:10FA80004DFB0E490E48F9F749FB226B114B2046FE +:10FA900022F4A03213432363FFF706FF2046E6F764 +:10FAA00001F96368D3F80831DB6D5B077FF574AF4C +:10FAB000236B43F0040323636EE700BF183D00206F +:10FAC000684C002060270020EC230020943D00209B +:10FAD000A43D0020808702004368D3F80831DB6D25 +:10FAE0005B070FD5C36B2DE9F0430F4690F82D202F +:10FAF000597AADF5037D0546914204D00DF5037D9D +:10FB0000BDE8F08370471A7890F82C309A42F5D10E +:10FB100090F84420C2F340049207EFD40F21B2487A +:10FB20000AF04CFF0121B1480AF048FFEB6BB048E6 +:10FB3000B3F8031008F0CEFB0121AC480AF03EFFF9 +:10FB40000821AC480AF03AFF0121A8480AF036FF24 +:10FB500023460A224D21A64808F0E4FBA44808F0F9 +:10FB6000C5FB002F00F083802846FBF7ADFC044660 +:10FB7000002840F03081E96BB1F803304D2B40F0A4 +:10FB800022818B7C01F1280C4A7CC1F11207887B11 +:10FB900003F07F03D2012E6843EA007302F47E5221 +:10FBA000344613430A7C920302F4FE121343CA7BC9 +:10FBB000520502F07E62134344F8043F0B46B1F84D +:10FBC00003E0F8180022864515DDDA7D987D02F005 +:10FBD0007F0293F813E0C00142EA0E7200F47E50F7 +:10FBE0000243587D800300F4FE100243187D400557 +:10FBF00000F07E600243053344F8042F9C45DED1BB +:10FC0000263601F115070B46C1F13804B1F803C0DF +:10FC1000E018002284450EDD93F83D2093F83C0067 +:10FC200002F07F0293F83BC0C00142EA8C3200F43C +:10FC30007E50024392B2033326F8022FBB42E5D135 +:10FC4000AB68284695F82D701B685B68C3F3833357 +:10FC5000FF1A18BF0127F7F75DFF6B68D3F808316B +:10FC6000DB6D5B0703D52B6B43F004032B6341ACC7 +:10FC700095F82E3000262046009626600193022338 +:10FC800095F82D2095F82C102671F9F751FBB4F852 +:10FC90000330FD2B0DD8AA8B574992082671A1FB82 +:10FCA0000212E1180133520AE370012A38BF01221F +:10FCB0004A7195F82F100122204601F07F01F9F7D3 +:10FCC00009FAD5F800904E4609F1240856F8041FA9 +:10FCD000FAF7C4F856F8041F2046FAF7BFF846456D +:10FCE000F8D109F1260209F13401002601E08A4227 +:10FCF00029D0B4F8033032F8020FFD2BF7D804EB0B +:10FD0000030C01332671E370830B8CF80530C0F3CC +:10FD1000C61CB4F8033000F07F00FD2BE7D803F1D8 +:10FD2000010E234484F803E083F805C0B4F80330DF +:10FD3000FD2B04EB030C03F10103D8D88A428CF8A5 +:10FD40000500E370D5D100230126F72244A96846B7 +:10FD5000CDE93E6308F012FF284694E80E00F8F75C +:10FD6000EBFF002F3FF4CAAE24492148F9F7D6F93A +:10FD700023491F48F9F7D2F91D482149F9F7CEF96F +:10FD800031461A480AF01AFE1E491948F9F7C6F911 +:10FD90001B491748F9F7C2F919491548F9F7BEF98F +:10FDA00016491348F9F7BAF931462846FFF766FBBA +:10FDB000AB681B685B68C3F3833385F82D300DF5A2 +:10FDC000037DBDE8F08301234D220A2128460094DB +:10FDD000F9F710F892E64D2128460DF5037DBDE8B0 +:10FDE000F043F7F769BB00BF243E0020EC2300205E +:10FDF000684C0020343E002099906355183D002047 +:10FE000060270020003E00204368D3F80831DB6DF6 +:10FE10005A0710D52DE9F041C46BADF5087D90F877 +:10FE20002D300646627A90F82C509A4204D00DF597 +:10FE3000087DBDE8F08170472178A942F7D1B4F878 +:10FE400003300A2BF3D990F84430C3F340079B07E3 +:10FE5000EDD4E37A247BDB0104F07F0403F47E53CA +:10FE600044EA0308B8F1030F09DD012342461121DA +:10FE70000097F8F7BFFF0DF5087DBDE8F08147ACAE +:10FE80000A23CDE90078204627602771F9F750FA58 +:10FE9000B4F80350FD2D07D86A1C63192771E2706E +:10FEA0000422B4F803505A715FFA88F140A8E5F7CC +:10FEB0006FFD40AB45A94FF0000CFD2D0AD86F1C1B +:10FEC0001A78601984F804C002F07F02E770B4F871 +:10FED0000350427101339942EFD1FD2D11D9012315 +:10FEE0000021F7226846CDE93E314AA908F046FED6 +:10FEF000304694E80E00F8F71FFF0DF5087DBDE8C9 +:10FF0000F0816219002301355371E5702371B4F853 +:10FF100003309DF81621FD2BE1D8591C2344E170D4 +:10FF2000D10902F07F025971B4F80330FD2BD6D805 +:10FF3000591C2344E1705A71B4F803309DF817211D +:10FF4000FD2B4FEAD211CAD8581C234402F07F027D +:10FF5000E0705971B4F80330FD2BC0D8591C23440C +:10FF6000E1705A71B4F803309DF81821FD2B4FEA67 +:10FF7000D211B4D8581C234402F07F02E0705971AA +:10FF8000B4F80330FD2BAAD8591C2344E1705A71F0 +:10FF9000B4F803309DF81921FD2B4FEAD2119ED8F9 +:10FFA000581C234402F07F02E0705971B4F803300A +:10FFB000FD2B94D8591C2344E1705A71B4F80330D6 +:10FFC0009DF81A21FD2B4FEAD21088D802F07F014C +:10FFD0005A1C2344E2705871B4F80330FD2B3FF6ED +:10FFE0007EAF581C23449DF81B215971E070D10944 +:10FFF000B4F80330FD2B3FF672AF581C234402F0D7 :02000004600496 -:100000007BB900BFC26B10B5537B04467D2B47D82C -:10001000DFE803F0474B4F4646575F46673F6B6F3D -:100020008C469498A0A8B0B8D74646464646464661 -:100030004646464646464646464646464646464660 -:100040004646464646464646464646464646464650 -:100050004646464646464646464646464646464640 -:100060004646464646464646464646464646464630 -:100070004646464646464646464646464646464620 -:100080004646464646464646464646464646464610 -:1000900046DB4368D3F80831DB6D580700F19980DF -:1000A00010BDBDE81040FFF72BB8BDE81040FFF7CA -:1000B0000DBA90F84410BDE8104001F00101FFF7BF -:1000C0009BBC90F84410BDE8104001F00101FFF71F -:1000D000E3BA90F84410BDE8104001F00101FFF7C9 -:1000E000DBBBBDE81040FFF761BABDE81040FFF789 -:1000F0001BBE4368D3F80831DB6D5B07D0D590F8A1 -:100100002D10537A9942CBD190F82C101378994244 -:10011000C6D1B2F803300A2BC2D990F84430980700 -:10012000BED42046BDE81040F9F7C2B890F844109C -:10013000BDE8104001F00101FFF700BFBDE810402D -:10014000FFF720BF90F84410BDE8104001F0010116 -:10015000FFF734BF90F84410BDE8104001F00101F2 -:10016000FCF7C4BC90F84410BDE8104001F0010158 -:10017000FCF79ABE90F84410BDE8104001F0010170 -:10018000FDF706B84368D3F80831DB6D590787D50A -:1001900090F82D10537A994282D190F82C10137850 -:1001A00099427FF47DAFB2F803300A2B7FF678AF27 -:1001B00090F844309B073FF573AFBDE81040FCF763 -:1001C00043BABDE81040FCF7E3BBBDE81040FFF7C1 -:1001D00047BA94F82D10537A99427FF461AF94F89E -:1001E0002C10137899427FF45BAFB2F803300A2BDE -:1001F0007FF656AF94F8443099073FF551AFDA07D0 -:100200007FF54EAF04490548F8F718FF236B23F03C -:100210001003236310BD00BF143D0020A84B002035 -:10022000000000002DE9F04F0C4685B00546F8F7B8 -:100230009DFC04EB441341F25C5204EB83031A442B -:10024000852312FA80F84FF4AB5213FB0423EA68BB -:100250002C681FFA88F8B2F860201C44D20721D518 -:10026000002160480AF036FB5F4807F0C9FF032110 -:100270005E480AF02FFB01215D480AF02BFB0821A4 -:100280005C480AF027FB012159480AF023FB0821AA -:1002900059480AF01FFB012155480AF01BFB08F0E2 -:1002A0002FFBA8620E2155480AF014FB08F18509BE -:1002B00008F10103524E05F11007A8EB0408994517 -:1002C00034BF4FF001094FF0850933684FF0000A41 -:1002D000DFF830B1A1442B6206E033682A6A9B1A2A -:1002E000F92B1DD84C4523D004EB080114F8013B31 -:1002F000384601918DF80F3003F0EEF89DF80F307D -:1003000001999842E9D001230DF10F0238460AF114 -:10031000010A02F0D7FF33682A6A9B1AF92BE1D948 -:10032000012158460AF0D6FA33684C452B62DBD1DE -:10033000012134480AF0CEFA2B4807F061FF092169 -:1003400031480AF0C7FA012129480AF0C3FA00230C -:100350000A225146244807F06FFF012124480AF081 -:10036000B9FA052129480AF0B5FA1F4807F048FFF5 -:10037000EB68B3F86030DB0702D405B0BDE8F08F5E -:10038000042123480AF0A6FA012119480AF0A2FA2A -:1003900008F0B6FAAB6A0221C31A134807EE103A06 -:1003A0009FED0E0BB8EE477B87EE000B07F05AFF70 -:1003B00001210F480AF08EFA0C2116480AF08AFA39 -:1003C000094807F01DFF002106480AF083FA064895 -:1003D00005B0BDE8F04F07F013BF00BF00000000FC -:1003E00000408F40583C0020A84B0020C836002019 -:1003F000EC230020043E0020103E00201C3E002084 -:10040000E8BA0020B83000202C3E0020482400200C -:10041000383E0020403E0020C36B2DE9F0430446E7 -:10042000B3F80300A5B0072800F28B8000252E4604 -:100430002F46A84693F81090192166480AF04AFA08 -:10044000012165480AF046FAB9F10001634818BF76 -:10045000012107F0C9FE01215F480AF03BFA31464D -:100460005E4807F0C1FE01215B480AF033FA2946D5 -:100470005A4807F0B9FE012157480AF02BFAE36BFE -:100480005648B3F8031007F0AFFE544807F0B8FE23 -:10049000042F00F28680B8F1040F00F28D80E36B28 -:1004A000B3F803300E2B41D1B9F1000F61D006EB48 -:1004B0004611D4F80090852202A806EB81064E442E -:1004C00006F5AB56314608F0E5FA852205EB4513F3 -:1004D000304605EB830509EB050101F5AB5108F04A -:1004E000D9FA206802A98522284400F5AB5008F00B -:1004F000D1FA5FFA88F12046FFF794FE2046F9B260 -:10050000FFF790FE6368D3F80831DB6D5B0703D516 -:10051000236B43F00403236300233A460221204661 -:100520000093F8F7F7FB25B0BDE8F0830025012321 -:100530000E220A2120460095F8F7ECFB25B0BDE815 -:10054000F083DA7A0A281F7B4FEAC21207F07F078E -:1005500002F47E5247EA0206374638D99A7BDD7BA1 -:10056000D20105F07F0502F47E5245EA02084546B5 -:1005700060E706EB4613852202A806EB8301266896 -:10058000314401F5AB5108F085FA02A905EB45139A -:10059000852205EB8305701900F5AB5008F07AFA57 -:1005A000A7E7002501233A460C2120460095F8F7DD -:1005B000B1FB25B0BDE8F0830025012342460C21A4 -:1005C00020460095F8F7A6FB25B0BDE8F08300258E -:1005D000A8462FE7503E0020EC230020A84B002027 -:1005E00070B5046B82B0A504C4F3403612D4C56B59 -:1005F0000346B5F80320072A0ED8324651B1596890 -:1006000083F82E20D1F80821D26D520702D544F08C -:1006100004041C6302B070BDEA7A2D7BD20105F0A0 -:100620007F0502F080022A43042AE7D901230C2126 -:100630000096F8F76FFB02B070BD00BF4368D3F8B7 -:100640000831DB6D5B07F0B50446ADF5037D7BD566 -:10065000E36B084694F82D205D7A94F82C109542AF -:1006600075D094F844502D076ED5256BAE046BD52C -:10067000002800F0F0800D2120460DF5037DBDE837 -:10068000F040F7F71BB82D0700F1A480DE7A1D7B40 -:10069000F60105F07F0506F47E5635435FFA85FCCA -:1006A000BCF1040F70D8ADB2002800F0D1800D2F3E -:1006B00040F09780DF7B66469A7B07F07F032068D7 -:1006C00043EAC2130CEB4C120CEB8202104400F50F -:1006D000AB50037094F84430190771D4614620463A -:1006E000FFF7A0FD6368D3F80831DB6D5F0700F109 -:1006F000A48094F82C10EDB294F82D2001950223DB -:1007000041AD00270093012328462F602F71F8F791 -:100710009FFD236806EB461206EB82021344B5F8F0 -:10072000032003F5AB53FD2A1B7838D901230020A1 -:1007300044A9F722CDE93E30684608F0ABF92046DF -:1007400095E80E00F8F788FA0DF5037DF0BD1D78E9 -:100750008D4286D1B3F803600A2E37B281D994F85E -:10076000445015F0020F3FF47EAF00288BD1D87AA9 -:100770001D7BC30105F07F0503F47E531D435FFA23 -:1007800085FCBCF1040F62D90025012362460C21CF -:1007900020460095F8F7BEFA0DF5037DF0BD501C1C -:1007A00003F07F012A44DB092F71E8705371B5F81B -:1007B0000330FD2BBAD8EA1801335171EB70B5E75D -:1007C0006368D3F80831DB6D5A0787D5236B9B0428 -:1007D00084D58EE7256BAD043FF54DAF072E3FF670 -:1007E00055AF202120480AF075F801211F48002547 -:1007F0000AF070F8E36B1E48B3F8031007F0F4FC3E -:1008000001211A480AF066F80B211A480AF062F82A -:10081000012116480AF05EF800230A220D2114482F -:1008200007F00AFD124807F0EBFC01230D220A2114 -:1008300020460095F8F76EFA86E7236BEDB294F840 -:100840002C1043F0040394F82D20236356E7ADB237 -:100850006646EDB252E7B3F80350072D2FB23FF6CC -:1008600015AF0546064649E7F83B0020EC2300207B -:10087000A84B0020C83D0020036B9A0435D42DE915 -:10088000F0410446ADF5027D29B14368D3F8083143 -:10089000DB6D5B0725D594F82E7041AD0026022351 -:1008A0001FFA87F828462E602E7100933346CDF844 -:1008B000048094F82D2094F82C10F8F7C9FCB5F8B2 -:1008C0000330FD2B12D901230021F7226846CDE920 -:1008D0003E3144A908F0DEF8204695E80E00F8F70E -:1008E000BBF90DF5027DBDE8F08170475A1C2B4421 -:1008F0002E71EA705E71B5F80330FD2BE3D85A1CF7 -:100900002B444FEAD818EA7005225A71B5F8033023 -:10091000FD2BD8D85A1C2B4407F07F07EA7083F8C8 -:100920000580B5F80330FD2BCDD8EA180133577197 -:10093000EB70C8E74368D3F80831DB6D5B0705D57A -:10094000C36B90F82DC05A7A944500D0704790F848 -:100950002CC01A789445F9D1B3F803300A2BF5D995 -:1009600090F844309A07F1D51A0702D5036B9B041F -:10097000ECD40029EAD0FFF74FBD00BFC26B527B19 -:10098000012A03D0022A0DD032B1704790F84410EA -:1009900001F00101FFF752BE90F8441001F001018F -:1009A000FFF71EBE90F8441001F00101FFF7C2BF2F -:1009B000C36B0022F0B580F8352080F8362080F82F -:1009C000372080F8382080F8392080F83A20B3F8B2 -:1009D000036093F80EC0122ED97B1F7C5A7C9C7C3E -:1009E000DD7C90F844E01B7D00D0F0BD03F07F0378 -:1009F000ED01A4030EF0010E43EA077305F47E55E2 -:100A0000520504F4FE142B430CF07F0C02F07E62BE -:100A100001F07F01234380F834E080F835C01343B0 -:100A2000026B80F8361042F00802C0F837300263DB -:100A3000F0BD00BF036B13F4005F14D1F0B50446A2 -:100A4000ADF5037D0D463AB14268D2F80821D26D6A -:100A5000510705D59A0603D5C3F30017DB0603D566 -:100A60000DF5037DF0BD70470D2341AE01930123C9 -:100A700037603046377100937E2394F82D2094F828 -:100A80002C10F8F7E5FBB6F80330FD2B06D8F2186A -:100A900005F07F01013337715171F370012300219B -:100AA000F7226846CDE93E3144A907F0F3FF20461E -:100AB00096E80E00F8F7D0F80DF5037DF0BD00BF05 -:100AC000036B13F4005F14D1F0B50446ADF5037D5C -:100AD0000E463AB14268D2F80821D26D510705D5C9 -:100AE0009A0603D5C3F30017DB0603D50DF5037D86 -:100AF000F0BD704741AD01232846CDE900377E2384 -:100B000094F82D2094F82C102F602F71F8F7A0FB8B -:100B1000B5F80330FD2B40F28F80311F17297AD8AA -:100B2000DFE801F079DE79C87979797979790C791A -:100B30007979797979797979797979EBB5F80330B7 -:100B40006268FD2BD2F8082165D8E918013301202D -:100B5000EB70002348712B71B5F80310B2F84A30DE -:100B6000FD294FEA933056D84E1C2944EE70C3F34A -:100B7000C6164871B5F80300FD284CD803F07F0174 -:100B8000431C2844EB70B5F803304671FD2B42D866 -:100B9000581C2B44E8705971B5F80310B2F84E3068 -:100BA000FD294FEA933036D84E1C2944EE70C3F32A -:100BB000C6164871B5F80310FD292CD803F07F0044 -:100BC0004B1C2944EB704E71B5F80310FD2922D857 -:100BD000B2F852304A1C2944EA70B5F80320487133 -:100BE000990BFD2A17D8501C2A44E870C3F3C6108D -:100BF0005171B5F80310FD290DD803F07F024B1C8D -:100C00002944EB704871B5F80330FD2B03D8E9187F -:100C100001334A71EB700123002044A9F722CDE98A -:100C20003E30684607F036FF204695E80E00F8F79C -:100C300013F80DF5037DF0BDE81806F07F010133D0 -:100C4000321F2F714171EB70172AE4D801A353F8BA -:100C500022F000BF8B290200552902008B280200D8 -:100C6000292902008B2802008B2802008B28020011 -:100C70008B2802008B2802008B280200B12702007B -:100C80008B2802008B2802008B2802008B28020090 -:100C90008B2802008B2802008B2802008B28020080 -:100CA0008B2802008B2802008B2802008B28020070 -:100CB0006F290200B5F803306268FD2BD2F80821D5 -:100CC000A9D8E81801330021EB70B2F846300122B0 -:100CD0002971990B4271B5F80320FD2A83D99AE74F -:100CE000B5F803306268FD2BD2F8082193D8E818D4 -:100CF00001330021EB70D38FE9E7B5F80330626868 -:100D0000FD2BD2F8082186D8E81801330021EB70BA -:100D1000B2F85630DBE7B5F803306268FD2BD2F845 -:100D200008213FF678AFE81801330021EB70538FAC -:100D3000CDE700BF2DE9F0410446006BADF5027D23 -:100D400086042FD40F4616463BB16368D3F80831AA -:100D5000DB6D5D0726D5810624D541AD4FF0000837 -:100D600001230322C5F80080284685F80480CDE9D8 -:100D700000327E2394F82D2094F82C10F8F768FAAE -:100D8000B5F80330FD2B11D901230021F722684665 -:100D9000CDE93E3144A907F07DFE204695E80E00DE -:100DA000F7F75AFF0DF5027DBDE8F0815A1C2B4480 -:100DB00085F8048007F07F01EA70FA095A71B5F8E6 -:100DC0000330FD2BE0D85A1C2B44EA705971F1090D -:100DD000B5F80330FD2BD7D8581C2B4406F07F0202 -:100DE000E8705971B5F80330FD2BCDD8E9180133FF -:100DF0004A71EB70C8E700BF2DE9F0410446006B73 -:100E0000ADF5027D800429D40F4690462BB163686E -:100E1000D3F80831DB6D5B0720D541AD00260623F2 -:100E2000009628462E602E7101937E2394F82D2083 -:100E300094F82C10F8F70CFAB5F80330FD2B11D903 -:100E400001230021F7226846CDE93E3144A907F08D -:100E500021FE204695E80E00F7F7FEFE0DF5027D17 -:100E6000BDE8F0815A1C2B442E71EA705F71B5F811 -:100E70000330FD2BE4D8EA18013382F80580EB70CB -:100E8000DEE700BF2DE9F0470546006BADF5027DBA -:100E90001F468004BDF828A29DF82C3229D488462C -:100EA00091462BB16B68D3F80831DB6D5B0720D519 -:100EB00041AC002607230096204626602671019348 -:100EC0007E2395F82D2095F82C10F8F7C1F9B4F889 -:100ED0000330FD2B11D901230021F7226846CDE90B -:100EE0003E3144A907F0D6FD284694E80E00F7F7F6 -:100EF000B3FE0DF5027DBDE8F0875A1C08F07F08AF -:100F000023442671E270C9F3C61183F80580B4F852 -:100F10000330FD2BDFD8581C234409F07F02E0701A -:100F20005971B4F80330FD2BD5D8591C2344E17016 -:100F3000C7F3C6115A71B4F80320FD2ACBD8501C50 -:100F4000224407F07F03E0705171B4F80320FD2ABA -:100F5000C1D8511C2244E1705371CAF3C612B4F8CF -:100F60000330FD2BB7D8591C23440AF07F0AE170E7 -:100F70005A71B4F80330FD2BADD8E218013382F872 -:100F800005A0E370A7E700BF2DE9F04F87B01D462D -:100F90004FFA81F988469DF844300646B9F1000FB2 -:100FA000174601939DF848309DF840A00093C0F289 -:100FB000D98011F0010F3FD0019B002B3CD1BAF139 -:100FC000000F40F0F88052462946384608F09EFF50 -:100FD000B9F1000F30DAD6F8083108F00F011A68BD -:100FE00002EB410292F8F92E940741D450072CD518 -:100FF000BAF1000F00F0D580B5B107F1FF3B5C46B8 -:10100000D6F8480A1BF8011F02340368E41B1B686A -:101010009847A542F3DCBAF1000F05D1D6F8480A8B -:10102000F72103681B689847B9F1000FD6F808311B -:10103000C0F2DE80424608E018F0020F18D118F026 -:10104000040FD5D1D6F808314246910603D5DA6DA2 -:10105000120700F1B680009A1AB1DA6D42F002026E -:10106000DA65B3F860309B062BD407B0BDE8F08F8B -:10107000BAF1000F00F08B80B5B107F1FF3B5C4681 -:10108000D6F838091BF8011F02340368E41B1B68FB -:101090009847A542F3DCBAF1000F05D1D6F838091C -:1010A000F72103681B689847B9F1000FC7DAD6F833 -:1010B000083108F00F011A6802EB410292F8F92E8C -:1010C00094E7524B0A2252481968002307F0B4F8FB -:1010D0000121504809F0FEFBB9F1000F7EDB4146CB -:1010E00002A8E0F7EFFC02A9494807F057F802A868 -:1010F00007F088F90121474809F0ECFB0E2146482A -:1011000009F0E8FB424807F07BF80721434809F063 -:10111000E1FB2946002310223D4807F08DF801210C -:101120003F4809F0D7FB9DB1013D7C1EDFF8E4800C -:10113000374E17FA85F50121404609F0CBFB14F82C -:10114000011F00231022304607F076F8AC42F2D19E -:101150000021344809F0BEFB2D4807B0BDE8F04F30 -:1011600007F04EB8D0F8083101F00F011A6802EB11 -:10117000410292F8F92ED1077FF536AF0199002987 -:101180007FF432AFBAF1000F3FF41DAF13E0D6F891 -:101190003809F02103681B689847002D7FF46DAF74 -:1011A0007CE7D6F8480AF02103681B689847002DB1 -:1011B0007FF423AF32E700222946384608F046FE86 -:1011C00006E706F53660019B2A463946BAF1000F5C -:1011D00016D005F007FCD6F808313CE7D6F8083100 -:1011E00008F00F081B6803EB480393F8F98E76E7C5 -:1011F00008F00F011A6802EB410292F8F92E24E779 -:1012000005F046FCD6F8083125E700BFE8BA002013 -:10121000A84B0020EC23002078380020C81C0020B8 -:10122000142B0020583C00202DE9F0434FB285B02C -:101230000C460646002F15469846C0F28380CB0721 -:1012400014D505F10803DBB2072B0FD8DD2222FAF3 -:1012500003F3DB070AD5B8F1000F04D1280240F0F0 -:101260000F0008F09BFD002FC0F2B280A10720D52F -:10127000D6F83809294603681B689847600700F1CB -:101280008280D6F808212146880603D5D36D190738 -:1012900000F1AB80F82D19D0FE2D17D0D36D43F09F -:1012A0000203D365B2F86030980615D405B0BDE8E6 -:1012B000F0836207E5D5D6F8480A294603681B681B -:1012C0009847002FDDDA04F00F0979E0B2F86030BA -:1012D0009A06EBD55906E9D5564B0A2256481968A5 -:1012E000002306F0A9FF0121544809F0F3FA002F6A -:1012F000C0F2958021466846E0F7E4FB69464E4817 -:1013000006F04CFF684607F07DF801214B4809F0D4 -:10131000E1FA08214A4809F0DDFA0121474809F0BD -:10132000D9FA29466846E0F73DFC6946424806F08E -:1013300035FF414806F064FF684607F063F805B0E2 -:10134000BDE8F083D0F8080101F00F020368914670 -:1013500003EB4203024693F8F91ECB070ED505F1C5 -:101360000803DBB2072B37D8DD2222FA03F3DA07B2 -:1013700032D5B8F1000F3FF471AF74E78B0709D491 -:101380004B0798D480E7D6F8480A294603681B68BB -:10139000984776E7D6F83809294603681B689847C6 -:1013A000D6F80821136803EB490393F8F91E4807A0 -:1013B0007FF56AAFD6F8480A294603681B68984744 -:1013C000D6F80821136803EB490393F8F91E5BE78D -:1013D000D6F8080104F00F090368024603EB49033D -:1013E00093F8F91E8B07CBD5D4E705F10803DBB2E0 -:1013F000072B3FF653AFDD2121FA03F3DB077FF51F -:1014000049AF4FEA081106F53660C9B241EA052135 -:1014100041F00F0105F094FAD6F808213AE7D6F822 -:10142000083104F00F041B6803EB440393F8F94EF2 -:1014300060E700BFE8BA0020A84B0020EC230020A2 -:101440008837002090F80CC11CF0040F01D1FFF781 -:10145000EBBE704770B49DF80C409DF810509DF89D -:1014600014602BB10394CDE9045670BCFFF78CBD1A -:1014700070BC70472DE9F04F4FFA81FA87B01F46D4 -:101480000D469DF84030BAF1000F06469046009395 -:10149000C0F2B480CA073AD5009B002B37D108F1BF -:1014A000FF393A044CF20C004FEA092302F4FE0221 -:1014B00003F470631343184308F070FC2B4698073D -:1014C00028D4BAF1000F5FFA89F407F07F0B36DBFE -:1014D0006B0700F1B780D6F8082129468B0603D5A3 -:1014E000D16D080700F1D18004F00F0404EB8414DF -:1014F00006EB440484F80DB1D36D43F02203D365A9 -:10150000B2F8603099062DD407B0BDE8F08F08F12D -:10151000FF39D3E7D6F8380969F03F0107F07F0BB0 -:101520005FFA89F40368C9B21B689847D6F838098E -:101530005946026812689047BAF1000FC8DAD6F827 -:10154000082105F00F001168034601EB400191F8F6 -:10155000F91E490700F18780116801EB430191F8FA -:10156000F91EBBE7594B0A2259481968002306F0B7 -:1015700063FE0121574809F0ADF9BAF1000FC0F23E -:101580009A80294602A8E0F79DFA02A9504806F081 -:1015900005FE02A806F036FF01214E4809F09AF92F -:1015A00017214D4809F096F901214A4809F092F9AE -:1015B00008214A4809F08EF90121464809F08AF9C4 -:1015C00000230A224146424806F036FE01214148E6 -:1015D00009F080F90821424809F07CF901213D48D1 -:1015E00009F078F900230A223946394806F024FE2A -:1015F000374807B0BDE8F04F06F002BED0F808311A -:101600001A6801F00F0303F5EF6302EB43025C007D -:10161000537ADA0724D5009A12BB08F1FF393A044D -:101620004CF20C004FEA092302F4FE0203F470634B -:101630001343184308F0B2FBD6F808311B68234463 -:101640005B7A3CE7D6F8480A44F0C00102681268A9 -:101650009047D6F8480A59460268126890473AE718 -:1016600008F1FF392BE7019044F0C001D6F8480A91 -:10167000026812689047D6F8480A5946026812680C -:101680009047D6F80821019B66E7009B4FEA0922A4 -:10169000390406F536601B0102F4706201F4FE01A4 -:1016A000DBB20A434CF20C011A43114305F048F92E -:1016B000D6F8082118E7D6F8083105F00F051B68A1 -:1016C00003EB450393F8F95E5BE700BFE8BA00203F -:1016D000A84B0020EC23002038380020E01C00201C -:1016E0005038002002F1FF3C0CF00F0C0CEB8C1C6E -:1016F00030B500EB4C0C83B09CF80D419DF81CE01C -:101700009DF820C09DF81850E64509D21CF0800FC6 -:101710000DD183B1013405B3644520DD744610E07A -:101720004FFA8CFEBEF1000F4FF0000EF1DC4FF0CF -:101730007F0C002BEED1013C5DB97445B8BF7446F7 -:10174000E4B2002300932346FFF794FE204603B043 -:1017500030BD7445F4DA6446F3E76445FBDC744558 -:10176000EEDA7446EDE700BF2DE9F04F87B01F4673 -:1017700005460C469DF9403016469DF84090002BDA -:101780009DF844A09DF848B011DA531E07F07F027F -:1017900003F00F0303EB831300EB4303134493F8AD -:1017A0000F31002B14BF4FF000094FF07F094FFAA3 -:1017B00084F8B8F1000FC0F2F280E30736D4234674 -:1017C0009A0700F1C880B8F1000FC0F2DE8023460E -:1017D0005B0700F19C80B8F1000FD5F80831C0F22A -:1017E000B2802246900603D5DA6D110700F1008120 -:1017F000BBF1000F0AD1DA6D42F00202DA65B3F8EC -:1018000060309A0625D407B0BDE8F08F701E07F04F -:101810007F0200F00F0000EB801005EB4000104449 -:1018200080F80F91DA6D42F02002E5E7BAF1000F7F -:10183000C5D13B04721E4BF20B0003F4FE031202EF -:1018400043EA096302F470621343184308F0A6FAEE -:10185000B5E7784B0A2278481968002306F0ECFCBB -:101860000121764809F036F8B8F1000FC0F2D880AF -:10187000214602A8E0F726F902A96F4806F08EFC7F -:1018800002A806F0BFFD01216C4809F023F81721DA -:101890006B4809F01FF80121684809F01BF808217E -:1018A000684809F017F80121644809F013F800238B -:1018B0000A223146604806F0BFFC01215F4809F06A -:1018C00009F80821604809F005F801215B4809F092 -:1018D00001F800230A223946574806F0ADFC0121E1 -:1018E000564808F0F7FF0621584808F0F3FF012199 -:1018F000524808F0EFFF00230A2249464E4806F0FE -:101900009BFC4D4807B0BDE8F04F06F079BCD5F818 -:10191000480A711E036861F04F011B68C9B29847FD -:10192000D5F8480A07F07F0103681B689847D5F887 -:10193000480A494603681B689847B8F1000FD5F874 -:101940000831BFF64EAF04F00F011A6802EB4102F6 -:1019500092F8F92E46E7D5F83809711E036861F050 -:101960004F011B68C9B29847D5F8380907F07F01C5 -:1019700003681B689847D5F83809494603681B680F -:101980009847B8F1000FBFF622AFD5F8083104F040 -:101990000F021B6803EB420393F8F93E18E7D5F8F2 -:1019A0000831196804F00F0303F5EF6301EB4301FD -:1019B0005A004B7AD9077FF503AFBAF1000F7FF4D5 -:1019C000FFAE3B04711E4BF20B00019203F4FE03C9 -:1019D000090243EA096301F470610B43184308F0FC -:1019E000DDF9D5F80831019A1B6813445B7AE7E604 -:1019F0004FEA0A134BF20B013A0405F53660DBB2ED -:101A000002F4FE0243EA09631343721E120202F457 -:101A100070621343194304F093FFD5F80831E7E6E9 -:101A2000D5F8083104F00F041B6803EB440393F866 -:101A3000F94E1DE7E8BA0020A84B0020EC23002057 -:101A40000C380020E01C0020243800203038002012 -:101A500002F1FF3C0CF00F0C0CEB8C1C70B500EB92 -:101A60004C0C03F07F0484B0A4449DF828E09CF85B -:101A70000F419DF82CC09DF82060E6459DF824504C -:101A800009D21CF0800F0DD186B1013415B3644525 -:101A900022DD744610E04FFA8CFEBEF1000F4FF0CD -:101AA000000EF1DC4FF07F0C002EEED1013C6DB941 -:101AB0007445B8BF7446E4B2002501260094CDE910 -:101AC0000156FFF751FE204604B070BD7445F2DAAE -:101AD0006446F1E76445FBDC7445ECDA7446EBE7F9 -:101AE0002DE9F04F4FFA81F885B00C460546B8F164 -:101AF000000F17461E469DF838909DF83CA0C0F296 -:101B0000E380CB0722D42346980700F1B880B8F1D0 -:101B1000000FC0F2CF802346590700F18B80B8F147 -:101B2000000FD5F80831C0F2A28022469206D86D87 -:101B300002D5010700F1F38040F00200D865B3F848 -:101B400060309A0618D405B0BDE8F08FBAF1000FE6 -:101B5000D9D1531E4FEA096249F209001B0202F073 -:101B6000FE4203F470631343320402F4FE02134393 -:101B7000184308F013F9C6E77C4B0A227C48196821 -:101B8000002306F059FB01217A4808F0A3FEB8F1C2 -:101B9000000FC0F2E08021466846DFF793FF6946F8 -:101BA000734806F0FBFA684606F02CFC01217148E8 -:101BB00008F090FE1021704808F08CFE01216D485D -:101BC00008F088FE08216D4808F084FE012169486C -:101BD00008F080FE00230A223946654806F02CFBF7 -:101BE0000121644808F076FE0521654808F072FE80 -:101BF0000121604808F06EFE00230A2231465C484D -:101C000006F01AFB01215B4808F064FE09215D48DB -:101C100008F060FE0121574808F05CFE00230A220C -:101C20004946534806F008FB514805B0BDE8F04F5F -:101C300006F0E6BAD5F8480A791E036861F06F012C -:101C40001B68C9B29847D5F8480A06F07F010368B7 -:101C50001B689847D5F8480A09F07F0103681B689C -:101C60009847B8F1000FD5F80831BFF65EAF04F021 -:101C70000F011A6802EB410292F8F92E56E7D5F8E7 -:101C80003809791E036861F06F011B68C9B2984773 -:101C9000D5F8380906F07F0103681B689847D5F826 -:101CA000380909F07F0103681B689847B8F1000FF5 -:101CB000BFF631AFD5F8083104F00F021B6803EB13 -:101CC000420393F8F93E27E7D0F808311A6801F08B -:101CD0000F0303F5EF6302EB43024FEA430B537A22 -:101CE000DA077FF511AFBAF1000F7FF40DAF7B1E5D -:101CF0004FEA096249F209001B0202F0FE4203F4B6 -:101D000070631343320402F4FE021343184308F0D5 -:101D100045F8D5F808311B685B445B7AF4E64FEA76 -:101D20000A1349F20901320405F53660DBB202F408 -:101D3000FE0213437A1E120202F4706213434FEA4A -:101D4000096202F0FE421343194304F0F9FDD5F88D -:101D50000831D86DF0E6D5F8083104F00F041B689F -:101D600003EB440393F8F94E15E700BFE8BA0020EF -:101D7000A84B0020EC2300204C370020E01C002062 -:101D800060370020683700202DE9F04F4FFA81F8C6 -:101D900085B00C460546B8F1000F17461E469DF863 -:101DA00038909DF83CA0C0F2E380CB0722D42346B4 -:101DB000980700F1B880B8F1000FC0F2CF80234639 -:101DC000590700F18B80B8F1000FD5F80831C0F247 -:101DD000A28022469206D86D02D5010700F1F38059 -:101DE00040F00200D865B3F860309A0618D405B008 -:101DF000BDE8F08FBAF1000FD9D1531E4FEA096246 -:101E000048F208001B0202F0FE4203F47063134321 -:101E1000320402F4FE021343184307F0BFFFC6E783 -:101E20007C4B0A227C481968002306F005FA012140 -:101E30007A4808F04FFDB8F1000FC0F2E08021466B -:101E40006846DFF73FFE6946734806F0A7F9684623 -:101E500006F0D8FA0121714808F03CFD11217048C4 -:101E600008F038FD01216D4808F034FD08216D4867 -:101E700008F030FD0121694808F02CFD00230A22FA -:101E80003946654806F0D8F90121644808F022FD7A -:101E90000521654808F01EFD0121604808F01AFD83 -:101EA00000230A2231465C4806F0C6F901215B484E -:101EB00008F010FD09215D4808F00CFD012157488C -:101EC00008F008FD00230A224946534806F0B4F9F9 -:101ED000514805B0BDE8F04F06F092B9D5F8480A70 -:101EE000791E036861F07F011B68C9B29847D5F875 -:101EF000480A06F07F0103681B689847D5F8480A2E -:101F000009F07F0103681B689847B8F1000FD5F806 -:101F10000831BFF65EAF04F00F011A6802EB410210 -:101F200092F8F92E56E7D5F83809791E036861F062 -:101F30007F011B68C9B29847D5F8380906F07F01C0 -:101F400003681B689847D5F8380909F07F010368D2 -:101F50001B689847B8F1000FBFF631AFD5F80831CC -:101F600004F00F021B6803EB420393F8F93E27E7E6 -:101F7000D0F808311A6801F00F0303F5EF6302EBA4 -:101F800043024FEA430B537ADA077FF511AFBAF1F8 -:101F9000000F7FF40DAF7B1E4FEA096248F2080084 -:101FA0001B0202F0FE4203F470631343320402F496 -:101FB000FE021343184307F0F1FED5F808311B6801 -:101FC0005B445B7AF4E64FEA0A1348F208013204F4 -:101FD00005F53660DBB202F4FE0213437A1E1202EC -:101FE00002F4706213434FEA096202F0FE421343A7 -:101FF000194304F0A5FCD5F80831D86DF0E6D5F802 -:10200000083104F00F041B6803EB440393F8F94E06 -:1020100015E700BFE8BA0020A84B0020EC23002001 -:1020200074370020E01C0020603700206837002053 -:102030002DE9F04F4FFA81F887B00D460646B8F10A -:10204000000F91461F469DF840A0C0F20E81CB07BD -:102050004CD5BAF1000F49D107F30D0209F1FF3B4E -:102060004EF20E0002F500524FEA0B23110403F466 -:102070007063D21101F4FE010B4343EA026318437B -:1020800007F08CFE2B469C0700F1C580B8F1000FCD -:102090005FFA8BF4C0F2DF802B46580700F1938083 -:1020A000B8F1000FD6F80801C0F2AD802B4613F04E -:1020B000200FC36D02D0190700F1268143F00203FF -:1020C000002FC36515D104F00F0404EB841406EB54 -:1020D000440484F80E71C36D43F02003C365B0F867 -:1020E00060309A0625D407B0BDE8F08F09F1FF3BB8 -:1020F000C8E740F3E68040F6FF727B1E7E2104F0C5 -:102100000F0413FB0123954A04EB84145B0806EBD0 -:102110004404A2FB0323DB0A013303F07F0384F8AA -:102120000E31C36D43F02003C365B0F860309A06EA -:10213000D9D58B4B0A228B481968002306F07CF80E -:102140000121894808F0C6FBB8F1000FC0F2FC80FD -:10215000294602A8DFF7B6FC02A9824806F01EF85D -:1021600002A806F04FF901217F4808F0B3FB1321C4 -:102170007E4808F0AFFB01217B4808F0ABFB08214B -:102180007B4808F0A7FB0121774808F0A3FB002358 -:102190000A224946734806F04FF80121724808F0B8 -:1021A00099FB0621734808F095FB01216E4808F061 -:1021B00091FB39466B4806F017F86A4807B0BDE84E -:1021C000F04F06F01DB8D6F8480A07F5005344F062 -:1021D000E0010268019312689047D6F8480A019B13 -:1021E000026803F07F0112689047019BD6F8480A05 -:1021F000C3F3C61103681B689847B8F1000FD6F8FF -:102200000801BFF653AF05F00F02036803EB42036A -:1022100093F8F93E4BE7D6F838096BF01F015FFAE7 -:102220008BF40368C9B21B689847D6F8380907F5DC -:102230000053026803F07F01019312689047019BED -:10224000D6F83809C3F3C61103681B689847B8F17C -:10225000000FBFF621AFD6F8083105F00F021B685A -:1022600003EB420393F8F93E17E7D0F808311A68F8 -:1022700001F00F0303F5EF6302EB43025C00537AB6 -:10228000DA073ED5BAF1000F3BD107F30D0309F190 -:10229000FF3B4EF20E0003F50053DA1119044FEA2A -:1022A0000B2301F4FE0103F470630B4343EA026362 -:1022B000184307F073FDD6F808311B6823445B7A96 -:1022C000E1E640F6FF737E2107F5005204F00F04AB -:1022D00012FB0132284904EB841481FB0231D3172D -:1022E000002A06EB44041144C3EB2133ACBF7F3B0F -:1022F000803B03F07F0384F80E31C36D43F020036D -:10230000ECE609F1FF3BBEE607F30D024FEA0A13C4 -:102310004FEA0B2B4EF20E0102F50052DBB20BF42A -:10232000706B06F536604FEAE21C120443EA0C6358 -:1023300002F4FE0243EA0B031343194304F000FBCB -:10234000D6F80801C36DB9E6D6F8083105F00F05D7 -:102350001B6803EB450393F8F95EF9E681000880FA -:10236000E8BA0020A84B0020EC230020943700207E -:10237000E01C002030380020210004802DE9F047C7 -:102380004FFA81F984B00C460546B9F1000F90462A -:102390001F469DF830A0C0F2BF80CB0721D4234652 -:1023A000990700F19A80B9F1000FC0F2AB80234683 -:1023B0005A0773D4B9F1000FD5F80861C0F28580CF -:1023C00023469B06F06D02D5010700F1CB80B6F8DD -:1023D000603040F002009A06F06513D404B0BDE806 -:1023E000F087BAF1000FDAD1531E3A044DF20D0016 -:1023F0001B0202F4FE0203F470631343184307F058 -:10240000CDFCCCE7694B0A2269481968002305F026 -:1024100013FF0121674808F05DFAB9F1000FC0F21F -:10242000BB8021466846DFF74DFB6946604805F0F2 -:10243000B5FE684605F0E6FF01215E4808F04AFA5D -:1024400014215D4808F046FA01215A4808F042FA82 -:1024500008215A4808F03EFA0121564808F03AFA95 -:1024600000230A224146524805F0E6FE0121514868 -:1024700008F030FA0921524808F02CFA01214D48A1 -:1024800008F028FA00230A223946494805F0D4FE0C -:10249000474804B0BDE8F04705F0B2BED5F8480A99 -:1024A00008F1FF31036861F02F011B68C9B298473A -:1024B000D5F8480A07F07F0103681B689847B9F10F -:1024C000000FD5F80861BFF67BAF04F00F02336848 -:1024D00003EB420393F8F93E73E7D5F8380908F1A6 -:1024E000FF31036861F02F011B68C9B29847D5F826 -:1024F000380907F07F0103681B689847B9F1000F9E -:10250000BFF655AFD5F8083104F00F021B6803EB96 -:10251000420393F8F93E4BE7D0F808311A6801F00E -:102520000F0303F5EF6302EB43025E00537AD80713 -:102530007FF536AFBAF1000F7FF432AF08F1FF3309 -:102540003A044DF20D001B0202F4FE0203F4706324 -:102550001343184307F022FCD5F808311B683344B5 -:102560005B7A1DE708F1FF333A044FEA0A1A4DF28D -:102570000D011B0202F4FE025FFA8AFA05F53660CD -:1025800003F47063134343EA0A03194304F0D8F9D0 -:10259000D5F80861F06D1AE7D5F8083104F00F049A -:1025A0001B6803EB440393F8F94E3AE7E8BA0020BE -:1025B000A84B0020EC230020A8370020E01C0020BE -:1025C000C03700202DE9F04F4FFA81F885B00C4656 -:1025D0000546B8F1000F17461E469DF838909DF845 -:1025E0003CA0C0F2E380CB0722D42346980700F139 -:1025F000B880B8F1000FC0F2CF802346590700F130 -:102600008B80B8F1000FD5F80831C0F2A2802246C5 -:102610009206D86D02D5010700F1F38040F0020068 -:10262000D865B3F860309A0618D405B0BDE8F08FCD -:10263000BAF1000FD9D1531E4FEA09624AF20A00DB -:102640001B0202F0FE4203F470631343320402F4EF -:10265000FE021343184307F0A1FBC6E77C4B0A2296 -:102660007C481968002305F0E7FD01217A4808F04D -:1026700031F9B8F1000FC0F2E08021466846DFF77B -:1026800021FA6946734805F089FD684605F0BAFEEF -:102690000121714808F01EF91921704808F01AF953 -:1026A00001216D4808F016F908216D4808F012F96B -:1026B0000121694808F00EF900230A2239466548CD -:1026C00005F0BAFD0121644808F004F905216548C8 -:1026D00008F000F90121604808F0FCF800230A2204 -:1026E00031465C4805F0A8FD01215B4808F0F2F88E -:1026F00009215D4808F0EEF80121574808F0EAF892 -:1027000000230A224946534805F096FD514805B07A -:10271000BDE8F04F05F074BDD5F8480A791E03688E -:1027200061F05F011B68C9B29847D5F8480A06F006 -:102730007F0103681B689847D5F8480A09F07F01B4 -:1027400003681B689847B8F1000FD5F80831BFF649 -:102750005EAF04F00F011A6802EB410292F8F92E05 -:1027600056E7D5F83809791E036861F05F011B68E8 -:10277000C9B29847D5F8380906F07F0103681B688D -:102780009847D5F8380909F07F0103681B68984716 -:10279000B8F1000FBFF631AFD5F8083104F00F02E1 -:1027A0001B6803EB420393F8F93E27E7D0F80831A2 -:1027B0001A6801F00F0303F5EF6302EB43024FEADF -:1027C000430B537ADA077FF511AFBAF1000F7FF4AC -:1027D0000DAF7B1E4FEA09624AF20A001B0202F0AB -:1027E000FE4203F470631343320402F4FE02134307 -:1027F000184307F0D3FAD5F808311B685B445B7ABD -:10280000F4E64FEA0A134AF20A01320405F536608B -:10281000DBB202F4FE0213437A1E120202F470626B -:1028200013434FEA096202F0FE421343194304F0D6 -:1028300087F8D5F80831D86DF0E6D5F8083104F0FE -:102840000F041B6803EB440393F8F94E15E700BF30 -:10285000E8BA0020A84B0020EC2300205C380020C0 -:10286000E01C002060370020C03700202DE9F04335 -:102870004FB285B00C460546002F16469846C0F26A -:10288000A980CB071ED42246910700F18280002F39 -:10289000C0F2968023465A075BD4002FD5F8081162 -:1028A0006FDB23469B06CA6D02D5100700F1B78087 -:1028B00042F00202B1F86030CA659A0612D405B03F -:1028C000BDE8F083B8F1000FDDD153044FF20320CF -:1028D000120403F0FE4302F4FE021343184307F010 -:1028E0005DFAD0E75F4B0A225F481968002305F0C4 -:1028F000A3FC01215D4807F0EDFF002FC0F2A78087 -:1029000021466846DFF7DEF86946574805F046FC81 -:10291000684605F077FD0121544807F0DBFF1621DA -:10292000534807F0D7FF0121504807F0D3FF062195 -:10293000504807F0CFFF01214C4807F0CBFF31464C -:10294000494805F051FC484805B0BDE8F04305F0A2 -:1029500057BCD5F8480AF22103681B689847D5F898 -:10296000480A06F07F0103681B689847D5F8480AB3 -:10297000C6F3C61103681B689847002FD5F80811E5 -:102980008FDA04F00F020B6803EB420393F8F93E71 -:1029900088E7D5F83809F22103681B689847D5F80D -:1029A000380906F07F0103681B689847D5F8380995 -:1029B000C6F3C61103681B689847002FBFF66AAFBD -:1029C000D5F8083104F00F021B6803EB420393F8BB -:1029D000F93E60E7D0F808311A6801F00F0303F5FB -:1029E000EF6302EB43024FEA4309527AD0077FF5C7 -:1029F0004BAFB8F1000F7FF447AF73044FF20320E1 -:102A0000320403F0FE4302F4FE021343184307F0BE -:102A1000C5F9D5F808311B684B445A7A34E74FEAB8 -:102A200008184FF20321730405F536605FFA88F841 -:102A300003F0FE43320443EA080302F4FE021343A8 -:102A4000194303F07DFFD5F80811CA6D30E7D5F8BA -:102A5000083104F00F041B6803EB440393F8F94EAC -:102A60004EE700BFE8BA0020A84B0020EC2300206E -:102A7000EC370020043800202DE9F0434FFA81F9AB -:102A800085B00C460546B9F1000F90461F46C0F2CE -:102A9000A280CA071AD4234698076BD4B9F1000F55 -:102AA00078DB63071ED4D5F8080123469A06C66D65 -:102AB00002D5330700F1AF80B0F8603046F002066F -:102AC0009906C6651CD405B0BDE8F083002FE2D19D -:102AD0004FEA08434FF2023003F4FE03184307F0B5 -:102AE0005DF9D8E7D5F8480AF32103681B689847D1 -:102AF000D5F8480A08F07F0103681B689847D2E7B9 -:102B0000534B0A2253481968002305F095FB012115 -:102B1000514807F0DFFEB9F1000FC0F28E80214668 -:102B20006846DEF7CFFF69464A4805F037FB68463E -:102B300005F068FC0121484807F0CCFE1721474802 -:102B400007F0C8FE0121444807F0C4FE05214448AF -:102B500007F0C0FE0121404807F0BCFE00230A2216 -:102B600041463C4805F068FB3A4805B0BDE8F043F3 -:102B700005F046BBD5F83809F32103681B68984770 -:102B8000D5F8380908F07F0103681B689847B9F148 -:102B9000000F86DAD5F8080104F00F03026803F588 -:102BA000EF6302EB43025E00537A59077FF57EAF75 -:102BB000D5F8480AF32103681B689847D5F8480AF6 -:102BC00008F07F0103681B689847D5F8080103687F -:102BD00033445B7A6AE7D0F808311A6801F00F03D2 -:102BE00003F5EF6302EB43025E00537ADA077FF5E9 -:102BF00053AF002F7FF450AF4FEA08434FF202303B -:102C000003F4FE03184307F0C9F8D5F808311B6830 -:102C100033445B7A40E73F014FF202314FEA084309 -:102C200005F53660FFB203F4FE031F43394303F09A -:102C300087FED5F80801C66D3EE7D5F8083104F0E7 -:102C40000F041B6803EB440393F8F94E67E700BFDA -:102C5000E8BA0020A84B0020EC230020CC3700204D -:102C6000E43700202DE9F04FF22A87B01D460746D1 -:102C700014460E469DF840809DF844909DF84830DB -:102C800013D902F10D0E4FF0010C5FFA8EFE0CFA13 -:102C90000EFC1CF4DD5F40F0E78040F246421CEA87 -:102CA000020F13D007B0BDE8F08FF02AFAD0F22A55 -:102CB00010D14FEAC81805F07F0208F47E5842EAA6 -:102CC000080207B0BDE8F04FFFF7D0BD1CF0010FC0 -:102CD00040F0C48018F0800F04F0F00A40F0CE807D -:102CE0004FFA86FBBBF1000FC0F2DC80F20740F127 -:102CF000F480002B40F0F180BAF1F00F00F0ED808D -:102D00001AF0800F00F0E98009F1FF302A040193E6 -:102D1000000202F4FE0200F47060104340EA0A2050 -:102D200040EA1A1040EA086007F038F8BBF1000FDB -:102D3000019B80F2D280D7F8080106F00F0C0268E0 -:102D4000014602EB4C0292F8F92E900700F1CD807B -:102D5000500700F1F980940603D5CA6D100700F101 -:102D6000B381BAF1C00F00F01681BAF1B00F00F0D4 -:102D70003581CA6D42F00202B1F86030CA65990629 -:102D800090D5B24B0A22B2481968002305F054FAD4 -:102D90000121B04807F09EFDBBF1000FC0F20C818D -:102DA000314602A8DEF78EFE02A9A94805F0F6F921 -:102DB00002A805F027FB0121A64807F08BFD08219A -:102DC000A54807F087FD0121A24807F083FD514681 -:102DD00002A8DEF7E7FE02A99D4805F0DFF902A888 -:102DE00005F010FB01219B4807F074FD08219B486A -:102DF00007F070FD0121974807F06CFD00230A22BF -:102E00004946934805F018FA0121924807F062FDFF -:102E10000621934807F05EFD01218E4807F05AFD18 -:102E200000230A2229468A4805F006FA012189482A -:102E300007F050FD06218B4807F04CFD0121854825 -:102E400007F048FD00230A224146814805F0F4F9C5 -:102E50007F4807B0BDE8F04F05F0D2B92A4607B069 -:102E6000BDE8F04FFFF708BE90F80C4164073FF54E -:102E700019AF07B0BDE8F04FFEF7D6B909F1FF3240 -:102E800005F07F0102F00F0202EB821207EB420213 -:102E90000A4492F80F21002A14BF4FF000084FF0A7 -:102EA0007F081DE7D7F8080106F00F0102688C467D -:102EB00002EB4102014692F8F92E12F0010F3FF4A5 -:102EC00044AFBAF1F00F3FF440AF002B7FF43DAFB9 -:102ED0001AF0800F3FF433AF16E7B20705D472073C -:102EE00032D4D7F80811324635E7B9F1000F1ED0B9 -:102EF000BAF1E00F1BD8BAF1C00F05D040F2D28072 -:102F0000BAF1D00F40F0B080D7F8380909F1FF319D -:102F1000019302684AEA01011268C9B29047D7F8E2 -:102F2000380905F07F01026812689047019BBBF1E8 -:102F3000000FD4DAD7F8081106F00F000A6802EB88 -:102F4000400292F8F92E03E7B9F1000F1CD0BAF154 -:102F5000E00F19D8BAF1C00F03D06ED9BAF1D00F73 -:102F60004ED1D7F8480A09F1FF31019302684AEAC5 -:102F700001011268C9B29047D7F8480A05F07F01ED -:102F8000026812689047019BBBF1000FD7F8081147 -:102F90001CDB3246DFE609F1FF3305F07F0203F068 -:102FA0000F0303EB831307EB430383F80D21CA6D73 -:102FB00042F02002CA65DDE6D7F8083106F00F06B8 -:102FC0001B6803EB460393F8F96EE9E606F00F0081 -:102FD0000A6802EB400292F8F92EBCE609F1FF33D1 -:102FE00005F07F0203F00F0303EB831307EB4303AA -:102FF000134483F80F81CA6D42F02002CA65B9E616 -:10300000BAF1E00FC0D1D7F8480A09F1FF310193B6 -:1030100002684AEA01011268C9B29047D7F8480A23 -:1030200005F07F01026812689047D7F8480A4146C8 -:10303000026812689047019BA6E7BAF1A00FE2D0A0 -:1030400038D9BAF1B00FDED09EE700BFE8BA002051 -:10305000A84B0020EC23002088370020E01C002033 -:10306000D01C0020D81C0020BAF1E00F7FF45FAF25 -:10307000D7F8380909F1FF31019302684AEA0101E2 -:103080001268C9B29047D7F8380905F07F01026885 -:1030900012689047D7F8380941460268126890478D -:1030A000019B44E7BAF1A00FE2D008D9BAF1B00F02 -:1030B000DED03CE704F0E004802CA4D064E704F008 -:1030C000E002802AD4D032E7BAF1F00F3FF452AEDA -:1030D0001AF0800F3FF445AE09F1FF312A041B01BD -:1030E00007F53660090202F4FE02DBB201F47061FA -:1030F0001143194341EA0A2141EA1A1141EA0861E0 -:1031000003F01EFCD7F808112BE600BF82B030B5E3 -:1031100085B008AC84E80C009DF821209DF824417E -:103120009AB1F02A16D1BDF8233073B19DF825204D -:1031300001250194A2F1F0020295B2FA82F252093D -:1031400000920DF12502FDF71FFF05B0BDE83040EC -:1031500002B070479DF82230CDE901349DF824403B -:103160009DF823300094FFF77DFD05B0BDE83040A9 -:1031700002B0704770B54FF0010C84B000261446C1 -:103180000546CDE9016CFF2600961E46FEF7ECFAD7 -:10319000621E06F07F0602F00F0202EB821205EBC0 -:1031A0004205354495F80F0104B070BDF0B49DF8A8 -:1031B00014409DF818509DF81C609DF8207012B9BD -:1031C0001046F0BC7047CDE90667CDE90445F0BC78 -:1031D000FEF73EBC70B49DF80C309DF810409DF891 -:1031E00014509DF8186012B9104670BC7047CDE9B4 -:1031F0000456039470BCFEF775BA00BFC380102953 -:1032000001FB02F39DF800C002714FEA8323124ACA -:10321000418012684FEAD30380F800C0C0E903324E -:1032200011D90223B1F5007F438111D20C23890902 -:10323000037210D00D235A1C49089C46D3B2FAD110 -:1032400080F808C07047012208234281037270474A -:103250001023037270477047E8BA002070B5164C0F -:1032600005460E461548112107F034FB144804F0BA -:10327000C7FF20460EF0C2FF3146204600F0F6FBA5 -:103280002B780122934084F8302184F82F2184F890 -:10329000A5306B89022B09D00021074800F052F9B4 -:1032A00001210548BDE8704000F05ABA00212046CF -:1032B00000F048F9F0E700BFF8B000203C1500200E -:1032C000A84B00202DE9F04F85B08DE80E000A468E -:1032D00019461A44C3689A4200F28680002979D0C0 -:1032E0008046DFF810910126DFF80CB1404CDFF882 -:1032F0000CA1B8F806300098591E98F80870B8F874 -:103300000A20014020FA07F7C2F188025D1A029BE9 -:10331000ADB29D4228BF1D4698F8003089F8306153 -:103320001F43954289F82F614FEA4707A8BF15460A -:10333000FFB289F8A570B8F80A30022B4ED0ABB2B4 -:103340009DF8001048461D46039300F0FBF80199D4 -:103350002A46484600F00CF90121484600F000FAE0 -:1033600028BB64256168DBF80020AAFB02324FF419 -:10337000FA73920C03FB02F263685B1A9A42FBD861 -:1033800089F8A57089F8306189F82F61B8F80A309A -:10339000022B0FD00021484600F0D4F80121484606 -:1033A00000F0DEF958B1013D15F0FF05DAD105B0A6 -:1033B000BDE8F08F0021484600F0C4F8EAE7039B1F -:1033C000009A1A440092019A1A440192029AD31A5E -:1033D00002938ED1002005B0BDE8F08FC0F3072125 -:1033E000484600F0AFF8AAE7092005B0BDE8F08F25 -:1033F000001000E0F8B00020A44B002083DE1B4347 -:103400002DE9F84F9B461746CA18C3689A425DD803 -:10341000BBF1000F4ED0824689462E4C9AF80880A8 -:103420005A46BAF806604FF001009AF8001029FADF -:1034300008F8731E882A48EA010884F8300103EA74 -:10344000090328BF88225FFA88F884F82F01F61A4A -:103450004FEA4803964284F8A530BAF80A3028BFEC -:103460001646022B2AD05FFA89F1204600F06AF84E -:103470000121204600F074F90546E0B90123F2B2BB -:103480004146204600F0EAF97EB194F8A23094F863 -:10349000A320591C9A42234416D99A7E84F8A2107C -:1034A0006B1C7A55DDB2AE42EFD8BBEB060BB144D4 -:1034B0003744B3D100252846BDE8F88FC9F307216A -:1034C000204600F03FF8CEE7FF22E9E7092528462D -:1034D000BDE8F88FF8B0002000B583B001230DF1EE -:1034E0000702FFF78DFF20B99DF8070003B05DF8D4 -:1034F00004FB404203B05DF804FB00BF90F8A3203A -:1035000090F8A200101A704790F8A23090F8A3200B -:103510009A4205D95A1C034480F8A220987E70472D -:103520004FF0FF30704700BF90F8A23090F8A32012 -:103530009A4202D91844807E70474FF0FF3070479E -:10354000704700BF0346B0F8300178B193F82F21DF -:10355000882A03D9012200205A60704702F1010C29 -:1035600001201A4483F82FC182F8A510704700BFCC -:1035700038B5B0F830410CB9204638BD90F82F313D -:103580000546C3F18904A2420DD8144605F1A500F1 -:103590002246184405F07EFA95F82F312046234440 -:1035A00085F82F3138BD01224260EFE738B500259C -:1035B00013464FF47A720446C0E901521548882236 -:1035C00021612946206004F11A0063612573257684 -:1035D000657609F021F98922294604F1A50084F8CD -:1035E000A25084F8A35084F8A45009F015F920469D -:1035F00084F82E5184F82F5184F8305184F83151D9 -:1036000084F8325184F8335184F83451C4E94E556A -:1036100038BD00BF0C4200202DE9F04FD0F814A0B7 -:103620001524017E8146437E83B00AEB0111384A9E -:103630000AEB0313374F097A93F8283002EB011590 -:103640000901E86852F8018002EB0311D5F804B0D3 -:103650001B01CE68D558CBF80040C8F88400D8F8D4 -:1036600004304A6803432C490192C8F804301460BE -:10367000C5F884606B6833436B60284B4C683A68CC -:10368000A3FB0232920C02EB820252004B681B1B1E -:103690009A42FBD84FF0090C1F4ADFF880E0D8F8B7 -:1036A0000830034202D0AB6833422FD1C5F888609E -:1036B00054683968AEFB0131890C01EB8101536814 -:1036C0001B1B9942FBD8C5F8846054683968AEFB6F -:1036D0000131890C01EB810153681B1B9942FBD816 -:1036E000BCF1010CDBD1604699F81830019A0AEB65 -:1036F0000313DB68CBF8003099F819300AEB031A92 -:10370000DAF82C30136003B0BDE8F08F0120EBE74E -:10371000B4440020A44B0020001000E083DE1B43D3 -:103720000E4A10B51168046905E0DB0107D413687F -:103730005B1A102B08D8636913F0007FF5D14FF4A2 -:10374000FE430120636110BDFFF766FF0028FAD039 -:103750004FF4FE4301206361F5E700BFE8BA0020A3 -:103760002DE9F04790F82FA1BAF1000F58D081460B -:103770008846FFF7D5FF002852D0374E002437681F -:1037800016E06B691A0544D4580558D499044CD4F2 -:103790003268D21B322A48D8544507D9EA6D5207FD -:1037A00004D19B0555D4B8F1000F52D007F0CCF8E6 -:1037B0005445D9F81050E4D8EA6D510702F00703D8 -:1037C000DFD413E099F8A5200133022442F480628B -:1037D000042B2A6627D08A4503F1010309EB010275 -:1037E0000ED992F8A520042B2A66CAD00121002CFC -:1037F000E8D02146013301348A4509EB0102F0D8B3 -:10380000B8F1000FBDD04FF400732B666B691A0539 -:10381000BAD52B69042043F440732B61BDE8F087CF -:103820000420BDE8F0870124ABE72B694FF4007258 -:10383000042043F440732B612A66BDE8F0872B69AE -:103840004FF40072022043F440732B612A66BDE8F6 -:10385000F0870020E5E700BFE8BA00202DE9F04737 -:1038600082460C4615461F46FFF75AFF002800F017 -:103870008F8063000021012DDFF81C81DBB240F254 -:10388000014638BF01250C461E43D8F80090AAF81F -:10389000A2101EE09AF8A330872B3DD951690B0581 -:1038A00057D411F4105F67D1D8F80030A3EB0903A7 -:1038B000322B61D89AF8A330AB4208D3022C06D938 -:1038C000D36D580703D18B0547D4002F45D007F09F -:1038D0003BF8022CDAF81020DCD8D36D590703F03E -:1038E0000700D7D421466C1E084444F4807441B9C3 -:1038F00016660131431A032B01D80229F7D90C4669 -:10390000C8E7012931D017B14FF4007313669AF854 -:10391000A3300324872BC1D8D16D11F4E02FC1F35C -:10392000024EBBD0591C9E441933C9B25FFA8EFEB9 -:103930005AFA83F3D2F870C0481C71458AF8A31074 -:10394000C1B203F801CFA9D08929F3D151690B0580 -:10395000A7D5136943F440731361D36D13F4E02FBB -:1039600005D19AF8A300BDE8F0871466C1E7136992 -:1039700043F400731361F4E713694FF4007143F4E7 -:10398000407313611166D36D13F4E02FE9D0EEE7B5 -:103990000420BDE8F08700BFE8BA0020036970B5D5 -:1039A000D3F81451044615F4706201D0C3F8142101 -:1039B000AE070BD5D3F8701108043ED500220120C4 -:1039C00084F8A220224484F8A3009176EA0710D557 -:1039D00094F83061F6B194F82E6194F82F21B24238 -:1039E00027D9721C264484F82E2196F8A520C3F806 -:1039F0006021AB050DD594F8A30018B1D4F83C3183 -:103A000003B198470023A4F8A230A4F82E3184F81B -:103A1000303170BDD4F838210AB1904723690022B3 -:103A200084F82E21012284F8302194F82F21B2420B -:103A3000D7D80022C3F86021DBE794F8A320872AB7 -:103A4000C4D8501CC0B2BDE70148FFF7A7BF00BFF4 -:103A5000F8B000200148FFF7A1BF00BF38B2002036 -:103A60000148FFF79BBF00BF78B3002010B4144C8F -:103A700000220369A1421A6114D8124C0120124994 -:103A80004FF430329C6458629962DA629C6C002078 -:103A90004FF0011101221C6518625DF8044B996515 -:103AA0001A6170470948814207D9094C09480A49F7 -:103AB0009C645A629862D962E8E7084C0848F6E7C5 -:103AC0007F1A06003B372819B80B05053F420F0047 -:103AD0000A09070460090101007F05001C1A120C85 -:103AE000100E020210B5094C094922460948FFF799 -:103AF0005DFD04F1500208490848FFF757FD04F145 -:103B0000A00207490748FFF751FD10BD6CE10160B5 -:103B100000003F40F8B0002000803F4038B2002055 -:103B200000C03F4078B30020704700BF10B4046865 -:103B30002469A4465DF8044B604700BF30B40468B4 -:103B4000BDF808500295A46BA44630BC604700BF86 -:103B500030B40468BDF808500295E46BA44630BC4C -:103B6000604700BF30B4BDF9085004680295BDF845 -:103B70000C500395246CA44630BC604730B500223D -:103B800083B00468B0F90E50019111460095B0F968 -:103B90000C30246CA04703B030BD00BF704700BF9D -:103BA00001F003038376CB0705D40289B0F90A300C -:103BB0008281C38170474289B0F908308281C38114 -:103BC000704700BF2DE9F0411C460B46016884B0E8 -:103BD000114E05464F69BDF82880B74210D1013C0F -:103BE000CDF804802846144424B200948C6A194607 -:103BF000A0472B68DB6AB34209D104B0BDE8F0816D -:103C0000CDE90232B8472968DDE90232E7E7284604 -:103C100004B0BDE8F04118479D5702002DE9F0437C -:103C2000056885B0124E04466F699946BDF830802C -:103C3000B74210D109F1FF33CDF80480009220463D -:103C40000B44AD6A1BB2A8472368DB6AB34209D1B3 -:103C500005B0BDE8F083CDE90212B8472568DDE97B -:103C60000212E7E7204605B0BDE8F043184700BF61 -:103C70009D5702002DE9F043994287B00546BDF9F2 -:103C80003840BDF83C6022D0A24212D00768DFF86D -:103C90008480D7F81490C14533D12846CDE9004639 -:103CA000BC6AA0472B68DB6A434525D107B0BDE855 -:103CB000F08399421CDC0E9601332C6828465B1A6F -:103CC000E46B1BB2A44607B0BDE8F0436047A242D4 -:103CD00002DD134622461C460E96631C2C682846BD -:103CE0009B1AA46B1BB2A44607B0BDE8F043604723 -:103CF000084619460346DEE7284607B0BDE8F0430C -:103D00001847CDE904230391C8472F680399DDE9DB -:103D10000423C2E79D570200D0F800C02DE9F04F00 -:103D200090461F461F4A83B0DCF8143005460C4607 -:103D3000BDF930909342BDF834A029D12744A74261 -:103D40001EDDDFF864B00AE00134CDF800A0DCF835 -:103D5000386024B2B047D5F800C0BC4210DADCF8B5 -:103D600020604B46424621465E452846ECD0013451 -:103D7000CDF800A0B047D5F800C024B2BC42EEDBBD -:103D8000DCF82C30074A934206D103B0BDE8F08F2F -:103D90009847D5F800C0D1E7284603B0BDE8F04FFA -:103DA000184700BF9D570200B15702002DE9F04FA0 -:103DB0001D4603681646DFF8BC905A6985B0044674 -:103DC0004A45BDF93880BDF83C7043D1D3F824B0E2 -:103DD0003246DFF8A4A020460097D345039108BFE0 -:103DE000D3F83CB02B46D847236808F1FF3203993B -:103DF000D3F824B032440097D34512B234D1D3F86B -:103E00003CA0204603912B46D047039923683246B5 -:103E1000DFF868A02046D3F820B0013D0097D345D5 -:103E2000039108BFD3F838B04346D84703992268B6 -:103E300043460D44204629B2156A0097554508BFF0 -:103E4000956B3246A8472368DB6A4B4507D105B01E -:103E5000BDE8F08F0391904723680399B6E72046A9 -:103E600005B0BDE8F04F184703912B462046D847D0 -:103E70000399CBE79D570200C5570200B1570200D6 -:103E80002DE9F04F2DED028B85B098460C46164675 -:103E9000BDF940C0A8EB010A0746BDF84490ACEB61 -:103EA0000203BAF1000F83EAE375B8BFCAF1000A52 -:103EB000A5EBE3755545019566DD41462046224652 -:103EC00043463446E04606468C46444508DD1D46DA -:103ED000304621461346664644462A46844688466E -:103EE0009B1AA8EB0402002B15B292B2B8BF5B423A -:103EF000002D0092B8BF0135B4454FEA65053ADDA3 -:103F0000012202929BB208EE107A03931EE018EE93 -:103F1000101A204F18EE100AD1F800C03146DCF814 -:103F200018B0BB452ED1DCF810B0D847039B013444 -:103F3000029AEB1A0099B21824B21DB29BB2002D5E -:103F40000B4401DA16B21DB2A04516DB019B2246D6 -:103F5000214653454B46DADC18EE103A0D4F3246F7 -:103F600018EE100AD3F800C04B46DCF818B0BB4579 -:103F7000D9D0D847DAE7A04508DA05B0BDEC028B06 -:103F8000BDE8F08FD847D1E763469EE74FF0FF3298 -:103F90000292B7E7A15702004281C281084A01811B -:103FA00081814FF0FF318261064A10B40024026023 -:103FB000446004770462C0E904415DF8044B704733 -:103FC00001010001504100202DE9F04F8BB01E4649 -:103FD0009CB28346BDF95430002E059103F10103D4 -:103FE0009DF8501098B20491C4EBC43308904FEA86 -:103FF00043031BB20393BDF85830069340F39F80F0 -:10400000C4F1010493B201F00102814624B20025FB -:10401000984609930792029488E0039B771E029AC0 -:1040200002333FB212FA83F41BB2A4B203930135F8 -:104030001FFA85FA2DB204EB4A04AF4204F10104E1 -:1040400023B2029338DB079BCBB1059ABBB2089C25 -:104050000AEB0201099ADBF80000D21A04EB4303D1 -:10406000046A09B20FFA83FC3E4B12B29C426ED135 -:10407000069B00936346806B04465846A047049B0A -:104080009A0719D5059B089CA3EB0A0ADBF80000E8 -:10409000BBB2099A0FFA8AF1D0F820A0D21A04EB29 -:1040A0004303304C12B2A2451BB256D1069C009479 -:1040B000D0F838A05846D047B7422DD0079B9BB1C7 -:1040C000DBF800000FFA88F2059BD0F820A0254C01 -:1040D00099190FFA89F3A24509B233D1069C0094CD -:1040E000D0F838A05846D047049B9B0725D5059BA0 -:1040F0000FFA88F21B489E1B0FFA89F331B2DBF8E6 -:104100000060D6F820A0824506980090584608BF67 -:10411000D6F838A03E46D04708F1FF3809F1020929 -:10412000AE421FFA88F81FFA89F908DD029B002BBE -:10413000BFF673AF9CB2374679E73E46ECE70BB06B -:10414000BDE8F08F069800905846D047CCE7069817 -:10415000634600905846A04791E70698009058465D -:10416000D047A9E7B15702002DE9F043D0F800E0AD -:104170001E461F4F87B0DEF8143004461546BDF8C2 -:104180003880BB4228D11FFA86FCDEF820901948FF -:104190004FEA4C03A5EB0C028145CDF8008003F1FA -:1041A000010312B208BFDEF8389020461BB2059119 -:1041B000C8472A460320002533460599CDF80880D4 -:1041C000CDE900052046FFF7FFFE2368DB6ABB420E -:1041D00008D107B0BDE8F08305919847D4F800E016 -:1041E0000599D0E7204607B0BDE8F043184700BF67 -:1041F0009D570200B15702002DE9F04F89B01F46CC -:1042000082460E46BDF94840BDF850109C422546F6 -:104210000068A8BF1D46BDF94C300591002D2F49FF -:10422000B8BF01356D109D42A8BF1D4643698B4242 -:1042300047D11FFA85F8D0F81CB0B6B228494FEA2A -:1042400048090792BBB206EB08071FFA89F98B45AC -:104250003FB205990693A3EB090306F1FF361BB2A3 -:10426000CDE90041394608BFD0F840B05046013C86 -:10427000D8470699079AA4EB090431440123424424 -:10428000059E24B2A1EB080112B2504609B2019476 -:1042900000932B4602960592FFF796FE2B46059A51 -:1042A00039465046CDE9014602240094FFF78CFEC2 -:1042B000DAF80030094ADB6A934209D109B0BDE857 -:1042C000F08F504606929847DAF80000069AB0E759 -:1042D000504609B0BDE8F04F184700BF9D57020097 -:1042E000D95702002DE9F04F8FB0944605461F467E -:1042F0000C920E46BDF96020BDF96830BDF86C0027 -:104300009445BDF964400D920593039040F3E3801A -:104310009C4540F317813B463746CDF834C01E46D6 -:104320000C920C9A05998A4240F31F8133460C91F6 -:1043300026460D993C461F4605910D92D5F800C0C2 -:104340008E4ADCF81430934240F0D2800C9B059AE0 -:10435000934200F0D680B8B2DDF834E0B6B2059FE3 -:10436000A3B207900446801B1FFA8EFABDF83010E6 -:10437000BAB2BE4500B20890AAEB0100A2EB01015F -:10438000A2EB0A0200B212B209B209900A92A3EBA0 -:104390000602A3EB040304910FFA82F91BB2069301 -:1043A00000F0D8800AF1FF3A0FFA8AFA0C9C5445C3 -:1043B00000F3D9800027724BAB46B8460B930BE055 -:1043C0000134039824B200905846DCF83C50A847CA -:1043D000A24528DBDBF800C0099B224698FBF3F0DE -:1043E000089B30449844049B01B280B297FBF3F3DE -:1043F00033444F441DB29BB2A9429E4602DD0346A0 -:10440000294670460133DCF824501B1A0B9885426C -:104410001BB2D5D0039A5846009222460134A847D1 -:1044200024B2A245D6DA5D46DBF800C00D9BE71A40 -:104430000C9BA4EB0308069B03FB07F7059B09FBFA -:1044400008F8A3423FDB4E4B604608969A460BE0C5 -:10445000039E0134009624B2D0F83CB02846D847D9 -:10446000059BA3422DDB28680A9B089A97FBF3FE65 -:10447000069B1F44079B9E44049B98FBF3F3134445 -:104480000FFA8EF1C8441FFA8EFE0FFA83FC224603 -:104490009BB261459B4602DD73466146DE460133B1 -:1044A000D0F824B0A3EB0E03D3451BB2D0D0039AAF -:1044B0002846009222460134D847059B24B2A342E5 -:1044C000D1DAD5F800C0DCF82C302C4A934234D134 -:1044D0000FB0BDE8F08F0D9B059A93423FF721AFD7 -:1044E000D5F800C0254ADCF8143093423FF42EAFD3 -:1044F000284698470C9B059AD5F800C093427FF454 -:104500002AAFBE4202DD33463E461F46A64224DDA8 -:10451000DCF824607B1C1A4A21461B1B2846964265 -:10452000039A1BB200920C9A08BFDCF83C60B047BB -:104530002B68124ADB6A9342CAD028460FB0BDE806 -:10454000F04F18470C9A33460D993E460D921F4680 -:104550000C91F3E6DDF834A028E7A742B8BF274660 -:1045600034463FB2D4E70C9C60E70D9A3B46059970 -:10457000274605921C460D91E0E600BF9D570200BC -:10458000C55702002DE9F04F2DED028B91B09146F9 -:104590008246BDF8702004919DF8781005920E9126 -:1045A000026A9DF87C10BDF874B00291002A00F0F8 -:1045B000B380117AD2E900245B1A02990392DBB22C -:1045C0000E9A114304EBC30234F8337092F90500DC -:1045D0000129D37892F8028092F906400A93089054 -:1045E0005AD800230B930993A34BDAF800201946FD -:1045F0000F9353698B4240F07D810A9B002B78D04A -:104600001FFA89F3D346DDF838900C9323440D93B9 -:1046100000231D4607930693B8F1000F61D0069959 -:104620000B9B029CCB180C98079E03FB04030024F1 -:104630001BB208EE103A0D9B0B441BB208EE903AE9 -:1046400005E001346D00E4B2EDB2A04545D9334632 -:1046500001365907F6B203D17B1C0399CD5D9FB299 -:104660002B06EED5B9F1010F1BD1029B012B18D1FE -:10467000089B58460499D2F818A059187F4B21443A -:104680009A45059B08BFD2F810A009B218EE902AEF -:10469000D047DBF80020D4E703B2099323B20B9391 -:1046A000A2E7099BD2F81CA01919DFF8D8E1049BF6 -:1046B000BDF90800F24501FB09310FFA89F30090BA -:1046C00009B220D1059801905846D2F840A018EEC2 -:1046D000102AD047DBF80020B3E7079B4344DBB246 -:1046E0000793069B0A990133DBB29942069393D84C -:1046F000DA46D36A0F9A934240F0F58011B0BDECD0 -:10470000028BBDE8F08F059A5846019218EE102AE8 -:10471000D047DBF8002094E7B0F90C2004998A42D6 -:10472000ECDDB0F90E204A45E8DD06220E9812FBBA -:104730000012002AE2DD029A09EBC202002ADDDD46 -:104740009AF81C20012A03D0AF2B01D90133DBB228 -:10475000494ADAF8000011460F9242698A4240F055 -:10476000F080BDF8102003EB8303CDF80C90D14608 -:1047700011460B92424ACDF810B0D3180A46DDF824 -:10478000148008934B1D0E999BB2029F8B46099390 -:104790008BB20A930346CDE90622089A0824002525 -:1047A000CA4612F8016B0892BDF91C2008EE102AC7 -:1047B0000FFA8BF208EE902A1CE0BBF1010F039A6E -:1047C00036D1012F34D1D3F81890AA182B4812B241 -:1047D000BDF918108145504608BFD3F810904346E4 -:1047E000C847DAF80030013C0135760814F0FF04C0 -:1047F0006DB249D0F007E0D404988045F3D0BBF106 -:10480000010F039A2AD1012F28D1AA18D3F81890A2 -:10481000BDF918100FFA82FC184A91456FD1D3F8F0 -:104820001090624603465046C847DAF80030DAE78F -:10483000D3F81C9005FB0722124839B212B2814509 -:10484000CDE9001801D1D3F8409018EE903A18EE57 -:10485000101A5046C847DAF80030C4E7D3F81C9065 -:1048600005FB0722074839B212B2814500914DD1AC -:1048700004990191E7E700BF9D570200A15702008C -:104880003C100020D9570200079AD1460A98069991 -:104890000244013192B289B20792099A06918A4282 -:1048A0007FF47BAF1846059BDDE9039B5B4515D084 -:1048B0000E9B012B2DD1029B012B2AD1046A4A4663 -:1048C000234BCDF800B09C42BDF924104FF00803F3 -:1048D00008BF846B5046A047DAF80000C36A0F9AFD -:1048E00093423FF40BAF504611B0BDEC028BBDE8D4 -:1048F000F04F184750469847DAF800207DE6049BB1 -:1049000062465046C847DAF800306CE7049B0193D2 -:104910009BE70A9BC46903EB83010B9B029A0B4440 -:104920000C4DD2001946AC42BDF9383009B2CDE980 -:10493000002B4A4608BF046C5046A047DAF8000036 -:10494000CCE7504603939047DAF80000039B08E752 -:10495000B1570200D9570200036AF0B5074685B087 -:10496000002B3AD00A292BD00D2933D01A7A914244 -:1049700030D39C7A8C422DD38A1A5C68D2B204EB75 -:10498000C204E578A278A5B19AB1C57E002D63D1A5 -:10499000067E437EB0F91050B0F912203846CDE9BA -:1049A00002630B462946FD8A0195BD8A0095FFF7F3 -:1049B000E9FD21793B8A3A7E01FB02333B8209E023 -:1049C0004FF0000C428A417EA0F810C01B7B01FB17 -:1049D00003234382012005B0F0BD0A291ED00D2912 -:1049E000F8D0C27EB0F910400ABBB0F91220067EA2 -:1049F000457E03950B4602962146FC8A3846019473 -:104A0000BC8A0094FFF7BEFD3B7E3A8A012003EB8F -:104A1000430302EB43033B8205B0F0BD428A417E73 -:104A2000038202EBC1034382012005B0F0BD067E84 -:104A30000622B0F90C5012FB0642AA4208DD428A57 -:104A40001C46457E038202EBC50212B24282D0E7C9 -:104A5000B0F91220457ECCE794F90550067E2A4431 -:104A6000B0F91050B0F90CC006FB0252624503DCED -:104A7000437EB0F9122091E70025428A058293F81F -:104A80000CC0437E0CFB032212B2428286E700BFB9 -:104A9000012938BF0121017641767047036A39B197 -:104AA0000BB101627047438A01620633438270474B -:104AB000002BF6D0438A0162063B4382704700BF59 -:104AC0002DE9F047046A002C5FD00A2953D00D2944 -:104AD00059D0A67A257A8E4255D3A94253D3491B81 -:104AE0006568C67EC9B205EBC10191F802C0CD78F8 -:104AF00091F804E091F9058091F90670002E40F0DC -:104B000088801C88B2F90060017E437E08FB016644 -:104B100007FB034415FB03F00CFB01F3089D013870 -:104B200089B2013BB5F9005010FA84F024B213FAAF -:104B300086F336B200B2B5421BB201DD089D2E806D -:104B4000099DB5F90050A54201DD099D2C800A9C04 -:104B5000B4F900409C4201DA0A9C23800B9BB3F914 -:104B60000030834201DA0B9B188013880EFB01335F -:104B70001380BDE8F08700211180407E217B1A88D8 -:104B800000FB01221A80BDE8F0870A2939D00D29DF -:104B9000F9D0C17EB2F90050002952D1B3F90040DA -:104BA000017E407E04EBC000062414FB01540A9DE4 -:104BB0000138013CB5F90050A54201DA0A9D2C806C -:104BC0000B9CB4F90040844201DA0B9C2080089CC5 -:104BD000B2F90000B4F90040844201DD089C208055 -:104BE0000998B3F90030B0F90000984201DD099846 -:104BF0000380138801EB410103EB41031380BDE8FF -:104C0000F0871480417E1A8802EBC1021A80BDE849 -:104C1000F087B2F9006008EB0C09017EB0F90CA036 -:104C200001FB0969D1451FDD00211180217B467EF2 -:104C30001C8806FB0144A4B21C80B2F90060017E0E -:104C400063E7017E0626B0F90C7016FB0156BE42E2 -:104C50000CDD1480417E1C8804EBC10424B21C804E -:104C6000B2F90050017E9CE71C884EE7B3F9004082 -:104C700097E700BF2DE9F04F89B00C46DDF848B04A -:104C8000ADF81620ABF8002047F6FF721399ADF887 -:104C90001820ADF81A204FF6FF720B80ADF81430D3 -:104CA000ADF81C20ADF81E200022DDE914A31A8007 -:104CB000AAF8002014F8011B61B381460DF11E080B -:104CC00007AF0DF11A0606AD05AB0DF11602484609 -:104CD000CDE90278CDE90056FFF7F2FE14F8011B8A -:104CE0000029F1D1BDF91C30BDF91820934214DB25 -:104CF0000133ABF800209A1ABDF91E30AAF8002043 -:104D0000BDF91A20934205DB013313999B1A0A80DF -:104D1000159A138009B0BDE8F08FBDF91E30BDF9BA -:104D20001A20EFE790F81CC04160BCF1020FC2608E -:104D300001D18368184702F09BBD00BF324B334955 -:104D400030B5D3E911542079C8771A6C95F804C0AE -:104D500081F81CC0087752B1B2F5004F23D32C491B -:104D600011442A4A1964D07682F81BC030BD1968F4 -:104D70000F24D86C8C6540F20134CA610C614FF489 -:104D80007C544C6103210468246883F83D10214B56 -:104D90009C4226D1037F4260022BC26026D18368E9 -:104DA000BDE8304018472D68E98B090422D492B23F -:104DB000EA832168EC8BA4B2EC82CC8B240405D569 -:104DC000CC8BC2F3080204F47E442243CA83CA8B0C -:104DD00092B2CA8200210D4A1964D07682F81BC0B3 -:104DE00030BD23461146BDE830401847BDE830408D -:104DF00002F03EBDE98BC2F3080E92B201F47E418F -:104E000041EA0E01E983D4E780AF002000800E4024 -:104E10000180FFFF99690200324B334930B5D3E975 -:104E200011542079C8771A6C95F804C081F81CC019 -:104E3000087752B1B2F5004F23D32C4911442A4AC6 -:104E40001964D07682F81BC030BD19680F24D86C65 -:104E50008C6540F20134CA610C614FF47C544C61A2 -:104E600003210468246883F83D10214B9C4226D11D -:104E7000037F4260022BC26026D18368BDE83040C8 -:104E800018472D68E98B090422D492B2EA8321687D -:104E9000EC8BA4B2EC82CC8B240405D5CC8BC2F372 -:104EA000080204F47E442243CA83CA8B92B2CA82A7 -:104EB00000210D4A1964D07682F81BC030BD23460C -:104EC0001146BDE830401847BDE8304002F0D0BC84 -:104ED000E98BC2F3080E92B201F47E4141EA0E0161 -:104EE000E983D4E730AF002000800E400180FFFF4F -:104EF000996902000023C0E90012C0E90233C0E949 -:104F00000433C0E90633C0E90833C0E90A33C0E915 -:104F10000C3383638387C0E91033C0E912337047D1 -:104F200008B5084A08490948FFF7E4FF084A094953 -:104F30000948FFF7DFFF094A09490A48FFF7DAFF86 -:104F400008BD00BFC43A002000003A4030AF002046 -:104F5000743A002000C0394080AF0020243A00207D -:104F600000403940D0AF0020704700BF08B503F0C3 -:104F700065FD044B04491868044A1B680860136007 -:104F800008BD00BFE8BA002034BA002030BA0020C3 -:104F9000F8B5474A4FF0400C4FF480314FF480573A -:104FA0004FF400554FF4404443F24200136A9E0709 -:104FB00070D49E0472D5DE0472D5002BF6DA13F499 -:104FC00080366FD15B066FD53A494FF040453A4B7A -:104FD0004FF44044D1F880200A2042F00302C1F887 -:104FE00080209D635C631E6003F036FC334AD2F878 -:104FF000403143F00203C2F84031D2F840319B0700 -:10500000FBD42F4D01F046FA01242B1F05F17C0241 -:1050100043F8044F9A42FBD14FF480720021294893 -:1050200007F0FAFB00222849244B0A700321C3F839 -:105030009040C3F8A8112549C3F84821C3F854513A -:10504000C3F84C21C3F85821C3F84011D3F8842188 -:105050001F49204842F48052C3F88421D3F85821D4 -:10506000D3F85421C1F800021B4A4FF0E0214FF45D -:105070008030C1F80C01C3F84821D3F8482142F030 -:105080001202C3F84821D3F8482142F44022C3F861 -:105090004821F8BD94625162906287E7556285E7C6 -:1050A000576283E7916281E7C2F824C07EE700BFC0 -:1050B00000800D4000C00F4000A00D4000022E40B7 -:1050C00000600020D4B500207ABC0020158B0100C0 -:1050D000005400203173020004000003C36853B37E -:1050E000632970B58CBF002601260C4616BB054609 -:1050F00003F006FC2649A8600868264B00283AD031 -:10510000D3F88C2022F07F42944215D34369A11A30 -:1051100023B929E05C69891A3CB323461A698A429B -:10512000F8D99869521A1A61A861C5E904139D61FA -:10513000AB695D6170BD704772B64FF00070C3F827 -:105140008C60121BC3F8440108682C61013CAE61FD -:10515000686102614FF040420D608561C3F888408C -:10516000C3F88C2062B670BD034600222961C5E9F0 -:1051700005235D6170BD661E4FF04042A8610D6061 -:10518000C5E90440C3F88860C3F88C2070BD00BF37 -:10519000A0B5002000022E4072B6194A1368FBB178 -:1051A00083421AD117485B6930B40024C0F88C40A0 -:1051B00023B3D0F88C101D6921F07F412944196177 -:1051C000C0F888104FF04041C0F88C109C6113600B -:1051D00062B630BC7047984204D05B69002BFAD1AC -:1051E00062B67047D3E905214A61002AF8D01869F0 -:1051F000136991610344136162B670471360E7E776 -:10520000A0B5002000022E40036984469A68F0B5DC -:105210000D46510603D41B689A685206FBD54022FE -:10522000D5F808E005F13401EE6BAA602A681A602F -:105230006A685A60EA68DA602A691A616A695A61BA -:10524000AA699A61EA69C3F828C0DA61EA6A1C6847 -:10525000DA622A6B012C03C91A6303F1340282E873 -:1052600003001A46DE6303D0126811680129FBD1DE -:10527000156001222A601A6895421A462ED000262F -:10528000116814460F680A4666622646BD422162CE -:10529000F6D10021546211629CF8341011F0FD0F18 -:1052A00009D10F480168596289B10B62026001207F -:1052B000C3F808E0F0BD0B48016859620029F4D139 -:1052C00009490B6002600120C3F808E0F0BD0749FE -:1052D0000B6002600120C3F808E0F0BD0024D8E7AD -:1052E000DCB60020E4B60020E8B60020E0B60020DE -:1052F0002DE9F0479846CB88B3F5804F02D90020BE -:10530000BDE8F0870D468146174601F00BF90646C9 -:105310000028F4D001F006F9044600286CD0E98892 -:1053200000293BD1DFF8F0C03060394B0122DFF8B3 -:10533000ECA02B40D9F80000D5F804E0D5F8009097 -:105340007260C6F808A0F56003F58055356103F575 -:105350000055756103F5405503F58043B561F36170 -:1053600000236260C4F808C0E3604FF48053C4F8BF -:105370003C8023614FF40053A06263614FF44053BB -:10538000A3614FF48043C4E90B71E36131462260AD -:10539000C4E90D9EBDE8F047FFF736BF01F0C2F843 -:1053A00070B32A78E988D209194BDFF874C04FEA44 -:1053B000022E3B4082F001024EEA014E4EEA0C0CF6 -:1053C0004FF0010EC0F804E0C0F808C003F5805C9F -:1053D000C760C0F810C003F5005CC0F814C003F546 -:1053E000405C03F58043C0F818C0C361094B3060CE -:1053F00043EA022C046098E7304601F09BF87EE710 -:10540000304601F097F8204601F094F877E700BFA6 -:1054100000F0FFFF80800080808100808002080013 -:10542000800000802DE9F84F4FF0E0244FF4803ADF -:1054300099460746D4F80C318B46C4F88CA1164621 -:1054400003EA0A0801F06EF8054600287DD0731EB5 -:105450009C0B08D0824601F065F8002860D0013C22 -:10546000CAF80000F6D100230121B6F5804FC0F83C -:105470003C9006632A460160374CC0E90A7BC0E9CC -:105480000D33364820D997F83530A6F5804651605F -:1054900044EA0323B6F5804F93600BEA0003C2F899 -:1054A0000CB00BF5804B03F5805CC2F810C003F51F -:1054B000005CC2F814C003F5405C03F58043C2F8F9 -:1054C00018C0D3611268DED8360497F83500234C33 -:1054D000294646F4004301250BEA040443EA00236D -:1054E0005560384643F08003936004F58053C2F85A -:1054F0000CB0136104F50053536104F5405304F5F7 -:1055000080449361D461FFF77FFEB8F1000F05D0AE -:105510004FF0E0234FF48032C3F80C21BDE8F88F40 -:105520002C462D68204601F005F85445F8D1B8F115 -:10553000000F07D04FF0E0234FF480320020C3F873 -:105540000C21EBE70020BDE8F88FB8F1000FF9D08F -:10555000C4F80CA1E2E700BF8000004000F0FFFFAC -:105560002DE9F04F534D83B02F6837B10026BB684B -:105570001A0605D53F6A002FF9D103B0BDE8F08FB8 -:10558000BB681B0404D5BB6ADB6B0BB1384698477C -:10559000D7E9082363B11A626AB1B96853624C064D -:1055A00045D43846174600F0C5FF002FDFD1E4E7A9 -:1055B0002A60002AF1D140490B60BB685806F0D53B -:1055C000BC6A3846019200F0B5FF2369019A33F0B6 -:1055D0001F03D2D01746934605E09A681A681B68E5 -:1055E00033F01F0305D09A685106F6D52361E660B3 -:1055F000A661BBF1000FBED0DBF808301A040AD553 -:10560000E26B43F0400358462AB1DBF82820CBF880 -:105610000830D36B9847DBF820A0584600F08AFF8B -:10562000D346BAF1000FE7D1002FA0D1A5E7384645 -:10563000BC6A019200F07EFF0020019A8446174662 -:1056400083461146126A8B6AA3420AD0002AF8D117 -:10565000C0B9BCF1000F25D1236933F01F03C2D1BB -:10566000C7E74B6AD3B11A62AAB15362BBF1000F0C -:105670000FD0CBF820108F4208BF17460E62002AC9 -:10568000DFD1E5E70C4BC3F80080BCF1000FE3D09D -:1056900008E08B46EFE798460120E7E791464FF098 -:1056A000010CE1E72369C5F8009033F01F039AD19C -:1056B0009FE700BFE0B60020DCB600206C4B2DE970 -:1056C000F041D3F844516803C3F8445109D5694EF9 -:1056D000346834B1684FA3681A0659D5246A002C7F -:1056E000F9D1290309D5654E346834B1644FA368F4 -:1056F000190662D5246A002CF9D1A8077BD46B0760 -:105700000ED55B4BD3F8844144F02A02A707C3F8B7 -:1057100084212AD4260703D45A4B1A78022A6DD042 -:1057200005F0807333B1574B1A78012A00F0968048 -:10573000032A78D0A90116D5534A116899B14B694B -:10574000136053B11A69002449489C61013A4FF033 -:105750004043C0F88820C0F88C30C8684B4A0368C2 -:105760009B68934277D1BDE8F08114F00106454A69 -:1057700067D011780129CDD80120454925F08075E1 -:1057800010704FF04042C3F88010C3F88420D1E776 -:10579000A3681B0404D5A36ADB6B0BB120469847B2 -:1057A000D4E908322AB313620BB35A6220461C466E -:1057B00000F0C0FE002C8ED193E7A3681A0404D534 -:1057C000A36ADB6B0BB120469847D4E908324AB193 -:1057D000136253B15A6220461C4600F0ABFE002C07 -:1057E00085D18AE73360002BF4D13A60F3E73A6061 -:1057F000DCE73360D8E7FFF7B3FE80E7640799D5AD -:1058000003201B49187042F21070C1F880004FF05D -:105810004040C1F88400D1F88411880501D51D49A4 -:105820004A63EA0186D50420114900221870D1F894 -:1058300084011146C0F3816000F06EFB164B1860C6 -:1058400078E716700222134B134F9A63386800F002 -:10585000CDFD3E605EE7BDE8F0411847044A0221F5 -:105860001970D2F8843143F48073C2F8843161E74F -:1058700000022E40E0B60020DCB60020E8B6002092 -:10588000E4B600207ABC0020A0B50020DD6B020049 -:10589000A086010000A00D40F0B600208D4B012A2B -:1058A00003FB01F1036B2DE9F04F85B01B7D4FEA3F -:1058B00011410290104638BF0120022B00F0948065 -:1058C00005234FF0010A4AEA5A02824280F0E4803E -:1058D000013B4FEA4A0AF6D14FF0200ACDF80CA05E -:1058E000029A039892F83530A2F84000002B40F05D -:1058F000CF80843102244F0900234FF0FF36DFF8B8 -:10590000D8B1B04699460193DDF804E00BEBCE0226 -:10591000002512F8010B5178384492F802C0214456 -:10592000D378A4448842234454D960454ED9834255 -:1059300038BF0346B34202D2A946F0461E4601359F -:10594000042DE6D1D644BEF11F0FDFD9019B0133F0 -:105950009A450193D8D1BB2E42D8FFB2B8F11F0FA0 -:10596000E4B21FFA88F5DDE90232A3F84420A3F877 -:10597000489083F84A7083F84B40A3F8465015D8F6 -:1059800009EBC803019E5B44F0001978B0449A7893 -:105990003944B8F11F0F224419709A70D9781A79D6 -:1059A00021442244D9701A710344EED901201C23EA -:1059B000029900FA09F203FA09F3A1F8425081F8BA -:1059C000362081F8373005B0BDE8F08F634538BF29 -:1059D0006346AFE76145F9D98B4238BF0B46A9E76B -:1059E000002005B0BDE8F08F0F2803464FF0010CF2 -:1059F00001F1570128BF0F234FF0FF3E4C0900264D -:105A0000013B0299DFF8D0B077460CFA03FCBCF5F5 -:105A1000807F654628BF4FF48075EB08012B38BFA7 -:105A20000123A1F84030334600201BF803102B441B -:105A30002144884238BF0846FF2BF6D9704501D271 -:105A4000864637460136B542EDD1BEF1BB0FC7D809 -:105A5000029BE4B2FF2FA3F84450A3F8467083F8EA -:105A60004A4008D83B461BF8031021440BF80310AA -:105A70002B44FF2BF7D9012A12D9022A1ED0BCF1E0 -:105A8000040F21DC07F0030211239340DBB208E08E -:105A9000663102274C092FE71FFA8AF303931FE7A9 -:105AA000FF230299FF080022012081F83630A1F877 -:105AB000427081F8372005B0BDE8F08F07F0010291 -:105AC00055239340DBB2ECE707F007020123934034 -:105AD000DBB2E6E7AB2A0100D4B50020B0F84210F3 -:105AE000B0F840C01F2934D830B51A4C40F0020538 -:105AF00009E0B3F840E0E64511D2026044F82150D5 -:105B000061441F2924D854F82120D307F5D402F08A -:105B1000060E22F01F03BEF1020FEAD007E0984202 -:105B2000EED01A68D20706D41B6823F01F03B3F81F -:105B300040206245F3D21A468242E1D0126832F028 -:105B40001F02F9D161441A681F2902601D60DAD969 -:105B500030BD7047006000202DE9F84305460E4631 -:105B60001446994600F0CEFC0746002865D000F0A8 -:105B7000D9FC8046002800F086806022002138464B -:105B800006F04AFE3C22002108F1040006F044FE23 -:105B900001224023032EC8F80020C8F80830C7F8B7 -:105BA000108087F835907A613D6387F8346058D06B -:105BB0003CB16B68002B61D01A469B6B002BFBD16C -:105BC0009763297D002E3BD101294FF480408CBF83 -:105BD00000220122D206230243EA0133089943EA54 -:105BE0000143697D0B43134397F83720034343F088 -:105BF00070437B60AB7DE97D1B0443EAC15343EAFC -:105C0000022397F83620134343F08043BB6036F0FD -:105C1000020318D1224BD3F85821D2B9796847F042 -:105C2000020241F4004179603A60C3F85871D3F838 -:105C3000402142F02002C3F840213846BDE8F883F5 -:105C400000200246C7E7032EF7D13846FFF746FF8C -:105C5000F3E7116847F00203384639601360BDE886 -:105C6000F883DDE908123846FFF718FE814678B15F -:105C7000002C9ED1297D20462246ACE7297D6F600D -:105C8000002EA1D0DCE73846474600F043FCD4E7BD -:105C9000404600F04FFC384600F03CFC4F46CCE755 -:105CA00000022E40F8B590F83430044613F0FD0F92 -:105CB0003BD1036823F01F03984200F0CB801A68A1 -:105CC000194622F01F039C42F9D163681D0400F1BC -:105CD000AC802368734A0B60D2F8403143F0400334 -:105CE000C2F84031D2F844319806FBD52023C2F8DF -:105CF00044316D4E35683DB16C4F28462D6A836A3C -:105D0000A3427FD0002DF8D1256935F01F0307D0BD -:105D10002B6828461D4600F00DFC35F01F03F7D117 -:105D20002046BDE8F84000F0F5BB614800F1800571 -:105D300050F8042FD1070CD422F01F02944203D153 -:105D400056E08C4259D00A46136823F01F01DB0746 -:105D5000F7D5A842ECD1236B1B7D022B6AD0B4F897 -:105D60004650B4F844E01F2DB4F8483094F84A6027 -:105D700094F84BC018D803EBC5034E4A4FEACE0740 -:105D800013449A7875441878A2EB0C02D978801BDA -:105D90001F2D9A70A1EB0C011A791870A2EB0C025E -:105DA000D9701A713B44ECD9434E3568002DABD005 -:105DB0002846424F2D6A836AA34206D0002DA3D005 -:105DC00028462D6A836AA342F8D1436A002B66D025 -:105DD0001D62002D61D06B62236933F01F0204D174 -:105DE00050E01B6833F01F024CD08342F9D1E5E745 -:105DF0002368A84203609BD1ADE72368A8421360E3 -:105E000096D1A8E7436A002B45D01D62002D40D0F3 -:105E10006B62236933F01F0204D12AE01B6833F060 -:105E20001F0226D08342F9D16CE74B6843F400434C -:105E30004B604EE7B4F84630B4F84450FF2B94F86A -:105E40004A00B1D81B49CA5C121ACA542B44FF2B12 -:105E5000F9D9A9E7134AD2F8403123F02003C2F858 -:105E60004031D2F8443113F40043FAD1C2F858312A -:105E70003FE783423FF446AF00F05CFB002D7FF428 -:105E80003CAF41E7834299D000F054FB002D97D1FD -:105E90003AE73B60BDE73560B8E73B609CE73560BB -:105EA00097E700BF00022E40E0B60020DCB60020DD -:105EB000FC5F0020D4B50020E8B60020E4B6002046 -:105EC0000B4B70B51E688EB10A4DF46814B90AE028 -:105ED000646844B12368DB68AB42F9D02046984738 -:105EE0006468002CF6D1B668002EEED170BD00BFFC -:105EF000ECB60020CD000000064900220B68C0E986 -:105F000001222BB11A465B68002BFBD15060704711 -:105F100008607047D4B60020F0B583B007460E463F -:105F2000154600F0DFFA044680B32422002106F073 -:105F300073FC0023082127751A46A675E5752046CF -:105F4000CDE900131946FFF707FE0246206020B393 -:105F500000F0F8FA2168134A00232061CA63012285 -:105F6000114881F8352002704FF400220F49104883 -:105F7000C1E900020F4A2046FFF7BAF90E4A13683A -:105F80003BB11A469B68002BFBD19460204603B0BE -:105F9000F0BD2046146003B0F0BD2046144600F06A -:105FA000A9FAF3E7C17D02007DBC002020AF0020EC -:105FB0008006000120A70020ECB6002070B50D6916 -:105FC0009DB3D66A90B3295C0131C9B26EB37378C0 -:105FD000032B2AD12954347801EB5403312B27DCCD -:105FE000022C13D9302911D84FF0020C0CF1020207 -:105FF0000B4616F80CE001315FFA82FC2B44C9B263 -:10600000644583F803E001D93029EFD96B180022E9 -:10601000DA70431CDBB2022B07D8C0F10202E81889 -:10602000D2B2BDE8704006F0F7BB70BD0146CDE7C7 -:10603000C1F132046400E4B2D2E700BF3F4B2DE966 -:10604000F04F1C6883B00646002C73D04FF0000957 -:10605000DFF8F4803A4F01E06468A4B1A2682046FA -:106060003B463146002AF7D1B8F80050D4F800C0BA -:10607000093D0095DCF80050A847002847D1A1460B -:106080006468002CEAD12F4BB8F8002003F1090511 -:1060900003EB0209A94503D843E04544A94540D98B -:1060A0006B7895F80080042BF7D1B8F1090FF4D183 -:1060B000224B1C68002CF0D0A7684FF0000AA9EB17 -:1060C000050B20462B46012231464FB16468002C57 -:1060D000E3D0A76820462B4601223146002FF5D198 -:1060E0002768CDF800B03F68B84708B9A246EDE789 -:1060F0006368BAF1000F17D0CAF80430F368A246FB -:106100006360F460A6601C46002CE2D1C5E76368BA -:10611000B9F1000F0BD0C9F804300023C4E90136EF -:10612000F46003B0BDE8F08F044A1360E6E7034A69 -:106130001360F2E7DFF81080A5E700BFD4B60020B7 -:1061400029A7002020A700206CBC002070B50446C1 -:10615000C06B28B10368984A5B68934217D170BD41 -:10616000A36A964E1D6B2B7E0E2BF8D8DFE813F03A -:106170001C0044005A0071007E0088009B00A600AD -:10618000F5000101B900BF00CD00E1001300214678 -:10619000BDE8704018472846FFF750FF0F21884B95 -:1061A000002229761A7070BD2A6884495068854B90 -:1061B000C9790340844C43EA014384492078096843 -:1061C00053600130802828BF012031B10B465A7D31 -:1061D0008242F6D09B68002BF9D103047C492070E1 -:1061E000284643F4A0630B6000231A464B60FFF778 -:1061F0007FF801232B7670BD75494FF490142A68FF -:106200004888744B68750B60536823F07F03034321 -:10621000284653600023694A4C60FFF769F802235F -:106220002B7670BDF27BB37B727033701343327C7C -:1062300031791343B270727914BF03230B23AA760A -:10624000B2796976EA7632892B76EA8372892A8472 -:1062500089E75F4900236048604AC1E90002604A5B -:106260002846FFF745F804232B7670BD3379032BBE -:1062700003D97379032B00F096800B232B7672E7FA -:106280004E4A554B12F8040B6C8C43EA00435348BA -:106290004F4920430B60002348602846FFF728F849 -:1062A00006232B7670BD224629460020FFF786FE86 -:1062B0007378002B56D007232B7654E73F4A464B82 -:1062C000507804326C8C43EA0043444840492043F0 -:1062D0000B60002348602846FFF70AF808232B7656 -:1062E00070BD224629460220FFF768FEC5E73849FF -:1062F0004FF410223B480023C1E900022F4A2846F0 -:10630000FEF7F6FF0C232B7670BD2C4B5B88B3F5A4 -:10631000006F41D8344A180413802D490023314AB4 -:10632000C1E90020254A2846FEF7E2FF0D232B761F -:1063300070BD2248002326494279C4791204007AAC -:106340002C7742F41062687728464B600A601A4640 -:10635000FEF7CEFF0E232B7670BD22462946012084 -:10636000FFF72CFEB378002B0CBF0B2309232B76F1 -:10637000F9E6124A184B907804326C8C43EA0043D9 -:106380001648134920430B60002348602846FEF757 -:10639000AFFF0A232B7670BD134B4FF400624FF012 -:1063A00000601A80B9E7F28833786A84002B3FF4E2 -:1063B0007FAF05232B76D6E6C900000020A700207A -:1063C0007DBC0020FFFF00F880BC0020ECB6002060 -:1063D00020AF002080060001800600030000FC07BB -:1063E00024A70020800600026CBC0020002837D0C3 -:1063F000F8B5C46806466CB11A4D002723682046DC -:106400001B69984723462A68A76064682B605A6016 -:10641000002CF3D174682CB12046A46BFFF742FC2A -:10642000002CF9D13068FFF73DFC0F4B1C6844B1DC -:10643000A64202D111E0A64204D02346A468002C53 -:10644000F9D1F8BDA2689A60206908B100F088F817 -:106450002046BDE8F84000F04DB8A2681A60F3E7A6 -:10646000704700BFD4B60020ECB60020074A084BA6 -:10647000506EB2F868C0B2F87010C3F80600D06E63 -:10648000A3F80AC0D982C3F812007047FC0D00209F -:1064900020B0002030B40D4C0D4925680D4A0E4B3C -:1064A00015600E480D6822600D4A04680A6019469E -:1064B00015601A4603F140051C601B6442F8805FBA -:1064C00041F8C02F016030BC704700BFCCB5002040 -:1064D000C8B50020A4B50020E0600020D8B6002098 -:1064E00080600020024B186808B102681A6070478B -:1064F000CCB50020024B1A6818600260704700BFDC -:10650000CCB50020024B186808B102681A607047C9 -:10651000C8B50020024B1A6818600260704700BFBF -:10652000C8B50020024B186808B102681A607047AD -:10653000D8B60020024B1A6818600260704700BF8E -:10654000D8B60020054A106830B1016800231160F8 -:10655000037043708370C370704700BFD0B50020D4 -:10656000024B1A6818600260704700BFD0B5002067 -:1065700001EB410100EB411188420ED210B4074CEF -:10658000226800E01846034643F8602B9942024611 -:10659000F8D820605DF8044B70477047C8B50020FC -:1065A00000EB811C604511D2024610B5084C4FEA41 -:1065B000811E2168134643F8401B9C4511461A462C -:1065C000F8D8AEF1400E7044206010BD704700BF97 -:1065D000D8B60020352303FB010188420ED210B447 -:1065E000074C226800E01846034643F8352B9942D1 -:1065F0000246F8D820605DF8044B7047704700BF32 -:10660000D0B50020C36B33B1C26A596B8A4203D044 -:10661000996B8A4204D07047002283F84E2070475D -:10662000002283F84F2070470023C0E903337047EE -:1066300070B5C38F044690F84E109D0829B994F8A0 -:106640004F3003F0FF028BB970BD01F0FF02E9B2D9 -:10665000034680F84E109200416B0069FEF7E2FE9F -:1066600094F84F3003F0FF02002BEDD0EDB223463B -:10667000A16B9200206984F84F50BDE87040FEF78E -:10668000D1BE00BF012A01D0002070471A78092A24 -:10669000FAD15A78042AF7D170B582B05A790D46EA -:1066A00004460699012A194459D0023A102A25D9DC -:1066B000093300228B42A4F850201FD293F800C067 -:1066C0001646BCF1030F19D903EB0C0E714515D317 -:1066D0005A780B2A18BF042A0CBF0120002071D061 -:1066E000242A0ED0052A1BD0252A07D1714569D945 -:1066F000734693F800C0BCF1030FE5D8002002B048 -:1067000070BD9A78012A06D0042A06D9F12AF6D15A -:10671000DB78022BF2D10126E8E7012AEFD9FAE76C -:10672000BCF1060FEAD993F803C0ACF1020CBCF13E -:10673000010FE3D893F802C01CF0F00236D0802A93 -:10674000DDD194F85020002AD0D10CF00F0C84F841 -:1067500050C0DA7884F852209B88A387C6E79879DE -:106760000328A5D1093300209942A4F85000A5D8E8 -:106770000023E36094F8512022B1E18FB4F8463051 -:106780008B4246D2002323610023E268A4F84A30FA -:10679000A4F84C3084F85530A4F8563084F85830BA -:1067A000A4F87C31002A2FD00120A8E794F85120CA -:1067B000002A9BD184F851C0DA7884F853209B8852 -:1067C000E38793E7002E99D094F85020002ACFD089 -:1067D000A38FB4F846109942CAD3002100932846EB -:1067E0000123019194F85210FFF7B6F9E0600028F8 -:1067F000C0D0114A2346216BC263A28FFEF712FE5E -:10680000012384F84430B5E72069C01A18BF01207D -:1068100075E70026009128460196334694F85310F8 -:10682000FFF79AF920610028AED0044BC36384F8C7 -:106830004E6084F84F60A7E7A985020079820200C4 -:1068400010B50446032100F5F070FFF791FE04F542 -:1068500040700721FFF7A4FE04F598600121FFF7BF -:10686000B9FE00232046A4F84A30A4F84C30C4E90D -:106870006033C4E96233C4E96433C4E96633C4E90C -:106880006833C4E96A33C4E96C33C4E96E33C4E9DC -:106890007033C4E97233C4E90333BDE81040FFF735 -:1068A0002BBB00BF8A680B6BC2F30E42B0F84A10D4 -:1068B000B0F84CC09B1A9B0870B5054638D0026BE7 -:1068C000043A02EB830352F8044F54B10131B5F896 -:1068D000480088424FEA810001D8002108462E6C0A -:1068E00034509A42EFD188B28C45A5F84A00A5F8F9 -:1068F0004CC00BD90CF1FF3CAA8FACEB0101B1EB02 -:10690000920F0CD2002385F8443070BDB5F84830A2 -:10691000AA8F6344013B591AB1EB920FF2D32B4675 -:10692000296BE868FEF77EFD012385F8443070BDD1 -:106930000846D9E70146C06B08B1FFF7B3BF7047FF -:106940000369002B4CD070B5C58F82B00646AD08E8 -:1069500072B696F84E4096F84F20A542E3B2D2B2F6 -:106960001BD9F2B195421CD9B36B541C06F114002B -:1069700043F82210E3B2019086F84F30FEF70CFC8A -:10698000A542019823D97F2D40F2DC5188BFC82150 -:10699000FEF7A4FB62B602B070BD9542E4D862B6C1 -:1069A000D6E7726B5C1C06F1140042F82310E3B2C8 -:1069B000019086F84E30FEF7EFFBA5420198E2D831 -:1069C0003346AA00716B3069FEF72CFDE2E73346CF -:1069D000AA00B16B3069FEF725FD62B602B070BD4A -:1069E000704700BF2DE9F843032A4FEA0313154609 -:1069F00081468846DFB216D947F00406CC1C14F84D -:106A0000023C033D14F8032C48461B0414F8011CF7 -:106A1000A046033443EA0223334343EA0161FFF70C -:106A20008FFF032DEBD8032D05D0022D16D0012D9D -:106A300023D0BDE8F88398F8013047F0070798F8AD -:106A4000002048461B0498F8021043EA02233B4307 -:106A500043EA0161BDE8F843FFF772BF98F80130DF -:106A600047F0060198F8002048461B0443EA022339 -:106A70001943BDE8F843FFF763BF98F8001047F0EB -:106A80000507484647EA0121BDE8F843FFF758BF2C -:106A90002DE9F8431B01DEB2DAB3012A0C464BD0D4 -:106AA000497846F004072378A2F102090906054651 -:106AB00004F1020841EA0341394341F47041FFF710 -:106AC0003FFFB9F1020F16D9053414F8023CA9F1C1 -:106AD000030914F8032C28461B0414F8011CA046D3 -:106AE000033443EA02233B4343EA0161FFF728FFF3 -:106AF000B9F1020FE9D8B9F1020F28D0B9F1010FAD -:106B00000DD04FF2057128463143BDE8F843FFF739 -:106B100017BF16493143BDE8F843FFF711BF98F896 -:106B2000003046F00601284641EA0321BDE8F8435B -:106B300041F47701FFF704BF0B7846F007060C49D4 -:106B400046EA03463143BDE8F843FFF7F9BE98F83B -:106B50000130284698F800201B04064943EA022326 -:106B600033431943BDE8F843FFF7EABE06F0F700E8 -:106B700000F000F7070000F72DE9F84F0F46B0F8D6 -:106B80004C30B0F84A10994233D00133B0F8482065 -:106B900004469A4231D99D0098B2266C7559A4F8E2 -:106BA0004C0094F8440090B9E06880B18B4240F208 -:106BB000AF805B1A5A1EA38FB2EB930F07D372B646 -:106BC0002346A28F216BE068FEF72CFC62B6C5F36A -:106BD000031305F00F08C5F303264FEA152984F8BF -:106BE0005430A8F108030136062B2BD84FB1B74219 -:106BF00007D000273846BDE8F88F00200546034639 -:106C0000CBE7B8F1080FC5F3033340F08580082BBC -:106C100040F082808022D4F88031C5F30748F6B274 -:106C20002D0E84F856201BB1414630462A4698471F -:106C3000012784F8556084F85780384684F8585006 -:106C4000BDE8F88FA8F102025FFA89F3012A3BD967 -:106C5000B3F1F70BA8F1050A18BF4FF0010BBAFA10 -:106C60008AFAF02B94BF00270BF001074FEA5A1A5B -:106C70001AEA070728D1B8F1040F00F07381A8F1D0 -:106C80000502022A40F21181B8F10F0FB1D1F72BA2 -:106C90001AD8F02BB4F87C1101D00029A9D0D4F86F -:106CA0009C31002B00F01A82B1F5917FC0F01A825E -:106CB000002204F159009847002101232144A4F83F -:106CC0007C3181F8599095E7F13B0E2B91D801A2C8 -:106CD00052F823F0CD8A0200DF8A0200FF8A020008 -:106CE0006788020067880200278A0200678802001E -:106CF0003D8A0200678802004F8A0200698A02000A -:106D0000838A0200678802009D8A0200B38A02001B -:106D1000013A521A1A444EE7B8F1090F13D1092B60 -:106D200011D12A0E38D18023F6B2C5F3074884F872 -:106D30005630D4F88031002B00F06981414630464E -:106D40001546984774E7B8F10A0F05D10A2B03D10D -:106D5000A022D4F8883160E7B8F10B0F05D10B2BD6 -:106D600003D1B022D4F88C3157E7B8F10C0F40F0C2 -:106D700093800C2B40F09080C022D4F89031C5F362 -:106D80000748F6B22D0E84F85620002B3FF450AF82 -:106D90004146304698474BE79023C5F30748F6B283 -:106DA00084F85630D5B2D4F88431002B7FF43CAF50 -:106DB0003EE7D4F8B0316BB1C5F307489847F6B257 -:106DC00084F856902D0E33E7D4F8B431002B00F040 -:106DD0004E819847C5F30748F1E7D4F8B831002B46 -:106DE000F7D1D4F8CC31002BF4D0FA20C5F3074802 -:106DF0009847E4E7D4F8BC31002BDDD1D4F8CC318E -:106E0000002BE7D0FB20C5F307489847D7E7D4F815 -:106E1000C031002BD0D1D4F8CC31002BDAD0FC20FB -:106E2000C5F307489847CAE7D4F8C431002BC3D14B -:106E3000D4F8CC31002BCDD0FE209847CAE7D4F847 -:106E4000C831002BB8D1D4F8CC31C5F30748002B9A -:106E5000B5D0FF209847B2E7D4F8A431C5F307486E -:106E6000002BACD040469847A9E7D4F8A821002AC7 -:106E7000B0D06B0CC5F306404FEA154803F47E53BF -:106E80005FFA88F81843904799E7D4F8AC31C5F316 -:106E90000748002BE6D192E7B8F10D0F3CD10D2B3E -:106EA0003AD1D022D4F8943169E7D4F89C31B4F8BF -:106EB0007C11002B50D0B1F5917F50D33A4604F1AC -:106EC00059009847394601232144A4F87C3181F8C0 -:106ED0005990BAF1000F03D0BBF1000F7FF489AED7 -:106EE000B8F1050F6DD1B4F87C11D4F89C31C8B25B -:106EF0000A0A84F85700002084F85820F022A4F8E9 -:106F00007C0184F85620002B00F0A880012204F1B7 -:106F10005900174698476DE6B8F10E0F7FF469AE39 -:106F20000E2B7FF466AEE022D4F8983184F8562018 -:106F3000002B00F0F580690CC5F30642F6B201F4AF -:106F40007E514FEA154830462D0E11435FFA88F8FE -:106F5000A1F5005198476BE6B1F5917FB9D24B1C72 -:106F60009BB2B1E7D4F89C61002E52D0B4F87C31CA -:106F7000B3F5917FC0F0888019463A4604F1590074 -:106F8000B0470123D4F89C21C5F3074084F85990F9 -:106F9000A4F87C31002A40F0E280591C23442D0ED5 -:106FA00089B2B1F5917FA4F87C1183F85900BFF440 -:106FB00020AE4B1C9BB22144A4F87C3181F859507F -:106FC00018E6D4F89C31B4F87C11B3B3B1F5917FD5 -:106FD000C0F08B80002204F15900984701212A0C4F -:106FE000B8F1070FD4F89C3184F85920A4F87C112B -:106FF00047D1002B00F0AB804F1C0E46F8B2C7F310 -:107000000722B9B226442D0E86F8595071E71D4665 -:107010000EE6B4F87C21B2F5917FBFF4EAAD531CC3 -:107020002244C5F307409BB2B3F5917FA4F87C31AD -:1070300082F859903FF4DDADAFE7B1F5917F76D39B -:10704000B8F1070F1DD10B0A0020F02284F8571069 -:1070500084F85830A4F87C0184F85620D4F8A03184 -:10706000002B62D004F1590001279847C2E5D4F8FB -:10707000CC31002B3FF4AEAEF820C5F3074898475B -:107080009DE6C8B20A0A34E7591CE218C5F307485E -:1070900089B2B1F5917FA4F87C1182F8599012D091 -:1070A000023362182D0E99B2B1F5917FA4F87C11CC -:1070B00082F859807FF47DAF3A4604F15900B04719 -:1070C0003946012377E73A4604F15900B0470121D8 -:1070D0002D0E84F85980A4F87C116AE7B1F5917FF0 -:1070E000BFF487AD4B1C9BB2E8E5481C6218B8F1B1 -:1070F000070F81B24FEA1540A4F87C1182F85900BD -:10710000BFD1B1F5917F7FF477AF002204F1590030 -:10711000984700220120D4F89C311646014671E7B9 -:10712000C5F30748F6B22D0E82E5012762E54A1C39 -:10713000280C2144B8F1070F92B2A4F87C2181F801 -:10714000590011469DD1B2F5917F3FF47CAF4F1CA1 -:107150000E460023F8B2C7F30722B9B252E72D0E4C -:10716000022184F85A0024E7F8B5817804464B1EC2 -:10717000262B15D8DFE803F0821414141414148B92 -:1071800014141414149414149D1414161414146464 -:10719000141414147914141414141414141416005C -:1071A0000020F8BD484A4948D2F88030484E43F4A0 -:1071B0004043A061C2F88030E568002D4BD0A36940 -:1071C000002244489A611861DA609A6A920802F0D3 -:1071D0001C020F2A76D8520802F00202DA621C332F -:1071E0003D4ADFF82CC102EB0112D96841F0800161 -:1071F000D2E90107D96000212A6843F804CC4FF096 -:10720000D90CB3F1804FC7F800C04FF002070760F8 -:1072100013619182917101D393680BB9012393603B -:1072200000212E4BA06891612A7943F8221043F87F -:107230002260228802EB420205F0EEFA0120F8BD3E -:10724000214A2748D36FE56843F04073A061254E7B -:10725000D367002DB3D1082001F0B6FC054600210C -:1072600000F092FAA178E560A9E7174A1E48D36FAB -:107270001E4E43F04063A061D3679DE7124A1C484D -:10728000536F1C4E43F0C003A061536794E70E4A4E -:107290001948D36E194E43F04073A061D3668BE753 -:1072A000094A1748936E174E43F04053A061936606 -:1072B00082E7054A1448936E144E43F44053A0618C -:1072C000936679E7032289E700C00F4000001A4067 -:1072D0004800008001008005B444002000C00E403A -:1072E000004018400200008000C0194008000080E3 -:1072F00000801940460000800000194044000080D2 -:10730000008018404200008000C018400400008047 -:1073100000000810C3682DE9F04FB14E01251B791C -:1073200083B0F268044605FA03F3134208D003F071 -:107330000BFBE368F2681B7905FA03F31342F6D1FD -:10734000E078052826D82388A66803EB43076568FC -:107350003744BE4280F00D8203360C35217DA5F105 -:107360000C0216F8013C16F803EC16F802CC01FBEF -:107370000EEE01FB0CCC01FB03314FEA1E284FEA55 -:107380001C290B0A052800F2FB81DFE800F07D765E -:107390006F696246A2682388616802EB830B5A45D5 -:1073A00080F0E48102F1040C1031237D06381CF8D2 -:1073B000036CA1F110021CF804EC1CF8027C03FB26 -:1073C00006661CF8015C03FB0EEE03FB077703FB6C -:1073D0000555330A4FEA1E2801934FEA15293B0A47 -:1073E000172800F2CF81DFE810F0B501AB01A00152 -:1073F00095018C01820179016F0165015B015101E9 -:1074000048013E01330128011D0113010A01FF005B -:10741000F100E700DD00D400B3000CF47F4C4CEA2F -:1074200008410B4313F4000F0CBF0F21082113F484 -:10743000800F4FEA830308BF41F0E00102F8011B0F -:10744000AA42EFD1B74202F10C0524D9E078033605 -:1074500084E701F47F4343EA084343EA0903E1E791 -:107460000EF47F4141EA09410B43DBE701F47F431E -:1074700043EA094343EA0803D4E70EF47F4E4EEA99 -:10748000034343EA0903CDE70CF47F4C4CEA034382 -:1074900043EA0803C6E723880C261E2202FB03F3F7 -:1074A00003F5967501E003F04FFA01F029FA23691C -:1074B000C31AAB42F7D962684A4B20619A4212D98B -:1074C000218822F01F0306FB0122BFF34F8F4FF0EC -:1074D000E021C1F8683F20339A42FAD8BFF34F8FBA -:1074E000BFF36F8F6268E0682188036806FB01F1D3 -:1074F00000261A60012205689A809A604A42DE716D -:10750000DA608AB2DA83DA82EE8B360412D4B1F50D -:10751000004F01D2EA83EA829A8BA169002492B2D9 -:1075200042F008029A834C612D4B0279DA7603B05F -:10753000BDE8F08FB1F5007FEED2E98B01F47E411A -:107540001143E983E98A01F47E410A43EA82E3E7D1 -:107550004FEA0860019E05F47F4540EA0640284353 -:107560000343002BB4BF08200F2013F0804F4FEAD5 -:10757000830308BF40F0E00002F8010B8A42F0D11B -:10758000E34502F1100140F2F780E0780CF1040CC1 -:107590000BE71B0405F47F45019843EA08632B437E -:1075A0000343DEE74FEA0840019E05F47F4540EAC9 -:1075B000066028430343D4E71B04019805F47F4584 -:1075C00043EA00632B4343EA0803CAE74FEA08484B -:1075D00005F47F45019848EA03632B430343C0E762 -:1075E00000800E40FFFF1F20019805F47F454FEA01 -:1075F000004A4AEA03632B4343EA0803B1E74FEA30 -:10760000094006F47F4640EA086030430343A8E798 -:107610004FEA094307F47F47019843EA08633B4375 -:1076200003439EE74FEA0940019D0EF47F4E40EA76 -:10763000056040EA0E00034393E74FEA09430198CF -:1076400007F47F4743EA00633B4343EA080388E7C4 -:107650004FEA09490EF47F4E019849EA036343EA71 -:107660000E0303437DE74FEA094906F47F4649EAE2 -:107670000363334343EA080373E74FEA084006F421 -:107680007F4640EA0960304303436AE74FEA084314 -:1076900007F47F47019843EA09633B43034360E7EC -:1076A00001980EF47F4E000440EA096040EA0E00A3 -:1076B000034356E7019B07F47F471B0443EA096332 -:1076C0003B4343EA08034CE71B040EF47F4E01984A -:1076D00043EA096343EA0E03034342E71B0406F44B -:1076E0007F4643EA0963334343EA080339E74FEA35 -:1076F000084307F47F4743EA08633B4343EA09032F -:107700002FE71B0406F47F4643EA0863334343EA4A -:10771000090326E74FEA0843019807F47F4743EA45 -:1077200000633B4343EA09031BE71B0401980EF483 -:107730007F4E43EA006343EA0E0343EA090310E77E -:107740004FEA084806F47F4648EA0363334343EAB6 -:10775000090306E701980EF47F4E4FEA004A4AEA11 -:10776000036343EA0E0343EA0903FAE610262822DC -:1077700094E60C261E2291E62388102628228DE608 -:1077800000234FE60023ECE630B472B621B903685B -:1077900013B102790F2A3BD9244C2188002341FAE6 -:1077A00003F212F0010208D00133102BF7D162B6B8 -:1077B00000220371026030BC70474FF0010C0CFADC -:1077C00003FC41EA0C01218062B619495FFA83FC8F -:1077D000184C194480F804C04B01E16F41F0C0011E -:1077E000E16740F2824414490C6081F81AC081F8C4 -:1077F0001EC081F818C081F81FC0036030BCC3E907 -:107800000022C3E90222C3E90422C3E90622704729 -:10781000064C218841FA02F5ED07BFD5044D154409 -:10782000B3EB451FBAD162B6C5E700BF6EBC0020FE -:107830008074000200C00F4000800E4003790F2BBF -:1078400011D8094A937672B60849012290F804C00B -:107850000B8802FA0CF223EA02030B8062B61022B4 -:10786000002302710360704700800E406EBC002050 -:10787000EFF3108272B6437F5BB9017F012930B408 -:107880000BD0032913D00123437702B962B630BC71 -:1078900070470AB962B670477047124C2168B1B19F -:1078A000114943610B68086083615861EBE70F4D34 -:1078B0000F492C688CB143610B68836158614FF0AC -:1078C000E0234FF080540860C3F8044DDBE7064B1B -:1078D00020601860C0E90511D5E7C0E905442860BB -:1078E000EDE700BFF4B6002000B70020FCB6002092 -:1078F000F8B6002070B5EFF3108272B60C4C206819 -:1079000080B10C4E00254369236073B19D6102B9BB -:1079100062B6836845779847EFF3108272B62068A5 -:107920000028F0D102B962B670BD3360EFE700BF46 -:10793000FCB60020F8B60020FFF7DCBF0449054A7A -:107940004968054B1960136801331360704700BF25 -:10795000001000E0E8BA0020E4BA0020B0F8463099 -:10796000B0F848209BB292B2934202D2013AD01AA8 -:107970007047416B01390A44D01A704772B6B0F8AB -:107980004A20B0F84C3092B29BB29A423CBF816B15 -:107990005218D31A0269D06A62B6C0F30260184462 -:1079A000704700BFB0F84A100246B0F84C3089B2B8 -:1079B0009BB2994210D00133906B116B984298BFE3 -:1079C0000023994203D9126AD05CC0B270475B1A97 -:1079D000526AD05CC0B2704772B6B0F84A0080B24A -:1079E000814201D062B6E6E71369D96A11F0E06F0F -:1079F00003D14FF0FF3062B67047DB6901204FF0D2 -:107A0000000C116AA2F84A00C3F30900DBB2A2F825 -:107A10004CC04B70EFE700BFB0F84A100246B0F818 -:107A20004C3089B29BB2994226D0013330B4946B6A -:107A30009C4216D9106B1FFA83FC984217D9106A22 -:107A4000C05CC0B2956DA2F84CC045B199421CD340 -:107A5000CB1AD16B994202D3D36DC5F8883030BCB4 -:107A600070474FF0000C106B63469842E7D8181A25 -:107A7000556A285CC0B2E5E7084672B6B2F84A100B -:107A800089B2884204D062B6CFE70C44E31AE0E73B -:107A90001369DA6A12F0E06F03D14FF0FF3062B67B -:107AA0007047D869C0F30900F9E700BF90F8443087 -:107AB00043B110B5044602F047FF94F84430002B60 -:107AC000F9D110BD704700BFEFF31380B8B9EFF3E1 -:107AD00010834BB9EFF305823AB94FF48073EFF39B -:107AE000118050B1984208D270470F2AF7D9054B40 -:107AF0009B5CEFF311800028F4D1184670474FF0DB -:107B0000FF30F1E7F0E300E007EE901A9FED917A85 -:107B10000421B6EE005AF8EE677A9FED8F6A41F6BF -:107B2000FF7CC7EE275A2DE9F0418E46012407EE6F -:107B3000901AF8EEE77A85EEA77A77EE057AFDEEF1 -:107B4000E77A17EE903A6345A8BF6346012BB8BFAA -:107B5000012307EE903AF8EEE76A76EEC76AC6EEC2 -:107B6000877AF5EEC07AF1EE10FA48BFF1EE677A47 -:107B7000F4EEC67AF1EE10FA03D8B0EE676A8E46DC -:107B80001C4601312129D2D10021436902F400753C -:107B9000A0F84A10B3F85EC08D42A0F84C10B3F8BC -:107BA0005C50A0F84610A0F8481080F84410816B93 -:107BB0001E69A1EB0505A1EB0C01C0E90F5131686D -:107BC0005D6941EA0501316014BF01210021817620 -:107BD00040F09180057EDFF8988103EB051C5F4E35 -:107BE0009CF8185008EB0515A9686D680E60DCF864 -:107BF0001C602E60DCF8205015B1DCF824602E608B -:107C0000457ED92703EB051595F8386008EB06117A -:107C10008E6849683760ED6B0D60417E03EB0111A2 -:107C20000D6C0DB1496C29600EF1FF31BEF1080FEA -:107C30005D684FF00006CCBF4FF0000E4FF0010E14 -:107C4000090644EA4E4401F0F85121435C7804F1FE -:107C50001003046921614249E66041F823504369F9 -:107C60004FF0010C3F4902F003055C7893F85A305D -:107C7000635444693C4B617803EB511301F01F01DD -:107C80009B000CFA01F119604FF002110369D962EF -:107C9000996A41F088019962510729D445F470111D -:107CA00002F00F05042D857E08BF41F08041970644 -:107CB00048BF41F080510DB141F0A0011607996114 -:107CC00003D5196941F0005119615969D50621F0B0 -:107CD000805148BF41F08051D205596103D51A69DE -:107CE00042F400521A61E3681B78A3B1BDE8F08149 -:107CF0001E492943D4E7417E4FF2D9071C4D03EBBF -:107D0000011191F8386005EB0615AE686D683760B3 -:107D1000C96B296081E7174E3478BCB1611E164DDE -:107D2000C9B22B1F05EB810153F8042F9042DDD01F -:107D30009942F9D1631CDBB2104A3370137845F8CD -:107D4000240043F002031370BDE8F08101230A4DC3 -:107D5000F2E700BF001BB74BEC78AD6038F00100D4 -:107D60000054002000E400E04038003810003C00DF -:107D7000B44400207CBC002004B70020175200202F -:107D8000F8B5036D04460E4613B1426DC3F8842066 -:107D9000A37E33B172B62269936943F000539361B5 -:107DA00062B6B4F84650636BADB20135AB424CD805 -:107DB00000273D46B4F848309BB29D421AD029E0D6 -:107DC00021694B691B0210D5B4F84830626B9BB235 -:107DD00001339A4236D99AB2E06A98422DD9E069C5 -:107DE000C35CDBB2CB61A4F84820B4F848309BB246 -:107DF000AB420FD1FFF768FE6369B3F85A30834294 -:107E0000DEDAFF28F1DD02F09FFDB4F848309BB2C6 -:107E1000AB42EFD0E36AAB4219D9E369F6B25E55E3 -:107E200072B60120226984F84400A4F84670936970 -:107E300043F40003936162B6F8BD1B1AA06AC35CE9 -:107E4000DBB2CFE700221346C6E7AFB2B2E7ED1AC6 -:107E5000F6B2A36A5E55E3E7FFF792BF0269536982 -:107E600013F4401F70B5154647D0D36A13F0E06F86 -:107E7000C3F3026E3ED0B0F84A40B0F84C50A4B202 -:107E8000ADB208E0026A02F803C002690EF1FF33E6 -:107E900013F0FF0E1ED0D169631CB0F84CC0866B86 -:107EA000C1F309011FFA8CFC9E4298BF00239C4538 -:107EB000ECD0026B5FFA81FC1C469A42A3EB0206EF -:107EC000E0D8436A03F806C00EF1FF33026913F0ED -:107ED000FF0EE0D1A3B2A0F84A30836D002B5AD038 -:107EE000AC425DD3641B016CA14254D8C16D1546F0 -:107EF000C3F884105369DC0248D49669310229D54D -:107F000053691B0226D5B0F846C0B0F848301FFAB6 -:107F10008CFC9BB206E0C169C95CC9B2D161D16A6F -:107F20004C0512D463453FD0446B0133C16A9C4277 -:107F300098BF00239942A3EB0104ECD8816A095D44 -:107F4000C9B2D161D16A4C05ECD599B26345A0F8AC -:107F500048102CD0710218D553695B0215D5002248 -:107F6000036D80F8442013B1426DC3F88820837EEE -:107F70003BB172B60269936923F00053936162B614 -:107F80000569AB6923F48003AB6170BD536943F4A9 -:107F900080135361B1E753691546DC02ADD5F5E7AF -:107FA000816B491B0C449EE79BB2A0F84830936953 -:107FB00023F400039361936943F480039361C9E759 -:107FC0000148FFF74BBF00BF38B0002010B4164B7C -:107FD0004FF47A74154800229C604021144C1860BC -:107FE00014481C615861144C144883F844201A73D7 -:107FF0001A839A76A3F84620DC61A3F848205DF83E -:10800000044BA3F84A205A605A629A621862A3F895 -:108010004C20C3E90B11C3E90D11C3E90F22C3E9D9 -:108020001422C3E91622704738B00020A84100206E -:1080300000801940D80F002038B50020B8B40020C7 -:108040000148FFF70BBF00BF98B0002010B4174BDA -:108050004FF47A74002228209C604021144C83F84D -:1080600044201C60134C1A731C61134C1A835C610E -:10807000124C9A76A3F84620DC61A3F848205DF8FC -:10808000044BA3F84A205A605A621A64A3F84C20A1 -:10809000C3E90A20C3E90C100948C3E90E121862AB -:1080A000C3E91422C3E91622704700BF98B000202C -:1080B000A841002000801840B84B002078B500206F -:1080C000F8B40020084602F0EFBB00BF012A70B5EB -:1080D00008BF0A228AB091B34FF0210E01E05FFA87 -:1080E00086FE0EF1FF36B1FBF2F502FB15145FFAC6 -:1080F00084FC092C0CF137040CF1300C98BF5FFAAA -:108100008CF40EF1280C88BFE4B29142EC4429466D -:108110000CF8244CE3D24BB10EF1FF3E2D225FFA56 -:108120008EFE0EF128036B4403F8242C036801A98A -:10813000CEF122025B68714498470AB070BD3022CC -:108140004FF0210E8DF82520E5E700BF2DE9F04125 -:108150000C46D1B1EAB180468E1800250E4F04E0DE -:1081600002F0A2FBB44205440CD0D8F8003014F859 -:10817000010B1B68BB42F3D0014640469847B4420E -:108180000544F2D12846BDE8F0810D462846BDE8F9 -:10819000F0811546F6E700BF399D02002DE9F04158 -:1081A0008C688AB0DCB10025884606462F462B46EF -:1081B000212201A9404600F075F9202C224633689F -:1081C00028BF202201A930465B68A41A15449847AD -:1081D0000744002CEBD138460AB0BDE8F0812746B1 -:1081E00038460AB0BDE8F081002903DB00230A22EB -:1081F000FFF76CBF49422D230A22FFF767BF00BF7C -:1082000000B5036883B040F60D2C022201A95B681B -:10821000ADF804C0984703B05DF804FB054B022895 -:1082200088BF034610B41C68184663685DF8044BA9 -:10823000184700BFA84B00205AB90368C9B2074AC3 -:108240001B68934200B506D108465DF804EB02F0C6 -:108250002BBBFFF73BBF5DF804EB1847399D0200CD -:1082600000000000B4EE400B70B5F1EE10FA0546C8 -:108270002DED028B86B07CD6B0EEC07B9FED476BB8 -:10828000B4EE467BF1EE10FA6BDC9FED467BB4EE6C -:10829000C70BF1EE10FA5ADC9FED447BB4EEC70B2E -:1082A000F1EE10FA53D4B5EEC00B0C46F1EE10FA15 -:1082B0005BD40023B6EE007B002C5ED04FF0000CA8 -:1082C0009FED3C6B0CF1010C27EE067B5FFA8CF204 -:1082D000A242F7D330EE070B0A222846FCEEC07B01 -:1082E000B8EE678B17EE901A30EE488BFFF7EEFE74 -:1082F0000F2C4FF02E03B2EE046B064628BF0F245E -:108300008DF808300DF1090302AA611E53FA81F1BC -:1083100028EE060BFCEEC07BCDED017A9DF8043013 -:1083200007EE903A3033B8EEE78B02F8013F914206 -:1083300030EE488BECD12B68013402A928465B68EB -:10834000E2B29847304606B0BDEC028B70BD2B6898 -:1083500003221A495B6806B0BDEC028BBDE8704091 -:108360001847036803221649F4E7B1EE400B0123D6 -:10837000A0E7036803221349ECE730EE070B0A225B -:108380002846FCEEC07B17EE901A06B0BDEC028BBF -:10839000BDE87040FFF79ABEAFF30080FFFFFFFF1C -:1083A000FFFFEF7F000000E0FFFFEF41000000E073 -:1083B000FFFFEFC19A9999999999B93FA836002082 -:1083C000A4360020A0360020F8B588424FF0000502 -:1083D000044685600573C0E9005502D08E680F68B9 -:1083E0000EB92046F8BD701C03F0D2FB0028F8D06F -:1083F000394605702060C4E9016604F085FC20461A -:10840000F8BD00BF10B50446006803F0C9FB204664 -:1084100010BD00BFF8B50446154632B9036803B174 -:108420001A7000232046A360F8BD43680E469A42A6 -:108430001CD9511C006803F077FE074660B1A368A1 -:10844000C4E900050BB90370276831463846A560BA -:1084500004F05AFC2046F8BD206810B103F0A0FBE0 -:10846000276000232046C4E90133F8BD0768314680 -:10847000A560384604F048FCECE700BF38B500239F -:108480000446C0E900338360037341B10D460846DA -:1084900004F01CFD024629462046FFF7BBFF20469C -:1084A00038BD00BFC2B170B5B1FA81F60C4676098D -:1084B00019B185689D4201D80E7070BDED1A02F1A8 -:1084C000FF3C016820466545194428BF65462A4699 -:1084D00004F014FA665570BD704700BF1C2839D8E7 -:1084E000F8B51D4F04463B7893B91C4B1B5DFF2B21 -:1084F0001FD01C061FD41A4C2360236AD80704D44B -:1085000002F022FA236AD907FAD5154B586AF8BD4A -:10851000134D144E01E002F017FAAB6C1B06FAD4AF -:10852000B36C13F08003F6D13B700C4B1B5DFF2B3B -:10853000DFD10020F8BD0B4C03F07F032360236ADA -:10854000DA0704D402F000FA236ADB07FAD5054BF8 -:10855000586AF8BD0020704781BC0020D047002039 -:1085600000400C4000800C40A249A34B88422DE9FA -:10857000F047A24C5E699A69D4F80C801BD9A04BD5 -:10858000984240F20281C31A9E491B0AA1FB0313C1 -:1085900040F22761DB0903EB830303EB830303F260 -:1085A000E2438B4228BF0B46A3F54877964BA3FBCB -:1085B0000737FF0804E0954FB8428CBF0E27062707 -:1085C0008D4908F01F09D1F88030B94543F0C00348 -:1085D000C1F880300CD228F01F08A1F5F82148EA34 -:1085E0000708C1F80C800B68002BFCDA08F01F09A3 -:1085F00016F0007324D186490C698649A14300F026 -:10860000EA8082F4805134464FF4805514F0605F64 -:1086100004D026F060561E43774B5E6111F4405F34 -:1086200007D022F4405274492A438A618B6C1A079E -:10863000FCD446F00076704A5661936C9B06FCD4DD -:10864000754CA04200F2CE804FF0010C014663460B -:1086500003FB011203F1010E0CF10105A24218D82F -:10866000BEF1080F4FF0010340F08D80BCF1040F04 -:1086700000F291800A18A24200F2A48005FB00F1EA -:10868000AC4603F1010E03FB01120CF10105A242FD -:10869000E6D90CF1FF318C0286EA81215F48104453 -:1086A0005F4A90427FD9DFF8A4A16C225D48584D03 -:1086B000B0FBFEF0D5F800E0B0FBFCF0DFF890C1B5 -:1086C0000EEA0C0CD44509D042F400524FF4805C01 -:1086D000C5F800C02A602A68002AFCDA464A1569F3 -:1086E00005F007059D4203D01361936CDD03FCD4B4 -:1086F00011F4E05F09D026F4E05604F4E0543E4A59 -:1087000026435661936C9907FCD44749474A014474 -:1087100091423CD8464BC909A3FB0131090B4B1EC2 -:108720001B0286EA030212F4407F06D026F440764C -:1087300003F44073304A334353612F4A536923F0A3 -:1087400000735361936C9B06FCD43A4B4F45A3FBDB -:1087500000234FF0FF324FEA9343B0FBF1F1B2FB3D -:10876000F3F3354A1060354A1160354A136008D278 -:1087700028F01F08214A48EA0707D7601368002B32 -:10878000FCDABDE8F087734662E7122718E74FF47A -:1087900040730421C5E70CF1FF31204807238C0208 -:1087A000104486EA8121274ADFF8A8A0A2FB002016 -:1087B000020D2548362A38BF362202FB00F042EA75 -:1087C0000A0A74E74FEA8C24002386EA8C214FF0D2 -:1087D000010EAC4662E71D4686F0C05411464FF0CC -:1087E000C05313E700244FF0010C024631462346E4 -:1087F000E64653E700A4781F00C00F400000084081 -:108800000046C32323B24C001F85EB5100366E0196 -:1088100000800D4040300080FFB19F26808D5B00BE -:10882000FF7EF64D00643F4D7FD1F0087F17B42CDA -:108830009F10E50083DE1B43A44B0020A04B0020CB -:10884000C0BA0020819F5E16001BB7006C2000801C -:108850007F3001800020008000B970472DE9F84F7B -:1088600001218146214C224D224E54E8003F2A68C6 -:10887000306844E80013002BF7D11F494B684FF4D0 -:108880007A7BDFF878A01B1A01270BFB02F8DAF8D5 -:108890000020A3FB02325A4594BF9044D84454E8C8 -:1088A000003F2A68306844E80073002BF7D14B681A -:1088B000DAF800C01B1A0BFB02F2A3FB0C3CBCF560 -:1088C0007A7F94BF624402F57A72A2EB0802B2F595 -:1088D0007A7F06D3B9F1010908F57A78DFD1BDE8CE -:1088E000F88F02F031F80449D9E700BFECBA002054 -:1088F000E8BA0020E4BA0020001000E0C0BA00206E -:1089000030B40F4B4FF0010C0E4D0F4C53E8002FBD -:108910002868216843E800C2002AF7D10B4B5B6846 -:108920000B4A5B1A4FF47A71126801FB00F0A3FB4B -:10893000023230BC8A4294BF80184018704700BF92 -:10894000ECBA0020E8BA0020E4BA0020001000E0F1 -:10895000C0BA0020272816D80201104B03EB0010E4 -:108960009B5810B4C2685C68144205D061B95DF8C8 -:10897000044BC3F888207047836851B1084A5DF8FA -:10898000044B1A60704770475DF8044BC3F88420AD -:108990007047044A5DF8044B1A607047B4440020E5 -:1089A00038F001003830010027280BD8064B0201AF -:1089B00003EB00109A58C36892681A4214BF012052 -:1089C0000020704700207047B4440020272829D891 -:1089D000164B0201012903EB00109A5810B453689A -:1089E000C4680ED004290CD023EA040353608368C2 -:1089F000A9B1022917D003290CBF0D4A0D4A1A60EC -:108A000007E0234301295360836808D040F6380209 -:108A10001A60436815225DF8044B1A6070473822CB -:108A20001A60F6E77047044A1A60F2E7B44400207F -:108A3000383001003800010038F0010070B50E4CEC -:108A40004FF6FF7E0D4E04F11E05A6F58053002162 -:108A500002E0B34281B204D21A88481C0233724544 -:108A6000F7D124F8021FAC4206F58056EDD1044B35 -:108A700001221A7070BD00BFC2BA002000101F6032 -:108A800082BC002008B5D5F7C7FCD5F7CBFC01F0B8 -:108A90005BFFFAE7844641EA000313F003036DD15C -:108AA000403A41D351F8043B40F8043B51F8043BB1 -:108AB00040F8043B51F8043B40F8043B51F8043BB8 -:108AC00040F8043B51F8043B40F8043B51F8043BA8 -:108AD00040F8043B51F8043B40F8043B51F8043B98 -:108AE00040F8043B51F8043B40F8043B51F8043B88 -:108AF00040F8043B51F8043B40F8043B51F8043B78 -:108B000040F8043B51F8043B40F8043B51F8043B67 -:108B100040F8043B51F8043B40F8043B51F8043B57 -:108B200040F8043B403ABDD2303211D351F8043BF7 -:108B300040F8043B51F8043B40F8043B51F8043B37 -:108B400040F8043B51F8043B40F8043B103AEDD2A6 -:108B50000C3205D351F8043B40F8043B043AF9D2F7 -:108B6000043208D0D2071CBF11F8013B00F8013BCA -:108B700001D30B8803806046704700BF082A13D3D7 -:108B80008B078DD010F003038AD0C3F10403D21AEF -:108B9000DB071CBF11F8013B00F8013B80D331F823 -:108BA000023B20F8023B7BE7043AD9D3013A11F8A3 -:108BB000013B00F8013BF9D20B7803704B7843700E -:108BC0008B7883706046704702F0E2BF01F1FF3C92 -:108BD00070B56646002400E00134B0FBF2F502FBFC -:108BE0001503092B03F1370E03F130035FFA8EFEF4 -:108BF00098BF5FFA83FE9042284606F801EFEBD259 -:108C0000631C0022C818CA547CB162461CF8015F7C -:108C100010F8016DA1EB0C0302328CF80060013BEF -:108C2000521A057023449A42EFDB084670BD00BF1C -:108C30004FF0010C0CFA01FC01EB410100EB41117A -:108C400070B5B1F80EE01FFA8CF5254C1FFA8EFEB8 -:108C500024782E010EFB033306F0F006E340B0F853 -:108C600088417345A4B228BF73463443012AA0F853 -:108C700088410DD0022A28D0C2B10CF00F02B0F802 -:108C800088C11FFA8CFC4CEA020CA0F888C170BDA8 -:108C90009BB20CF00F022D02CB82B0F8803105F4AC -:108CA00070659BB22B43A0F88031E8E7AEEB030E72 -:108CB0000CF00F021FFA8EFEA1F80AE0B0F8803126 -:108CC0009BB21343A0F88031D9E79BB20CF00F029E -:108CD000CB83B0F880319BB21E43A0F88061CEE711 -:108CE0001652002027284BD8F8B52A4D044615F80F -:108CF000202005EB8005012A2DD0022A3FD16B7878 -:108D0000C3F3011003283ED0234A02EB803203F064 -:108D1000030C224889B2634602EB4C1C0678BCF86F -:108D200006E05801BCF810301FFA8EFECEF1011E8D -:108D30001EFA83F303F1FF3E0EFB01F1F1408E4575 -:108D400023D95B1AC3F101039BB289B20244ACF888 -:108D5000063011820DE06A78C2F30113032B10D0A4 -:108D60000F4800EB83308BB202F00301AA78FFF7C3 -:108D70005FFF0C4BEA7803EB04135B681A60F8BDE5 -:108D800070470948EFE7094AC1E7991E4FF6FF739C -:108D9000DBE700BFEC47002000C01D40165200205A -:108DA00000C03D40B444002000803E4000801E4092 -:108DB00000230F2248F2B82C194610B54FF4704426 -:108DC0004FF4806EA0F88C414FF46044A0F88E21DF -:108DD0000A46A0F89031B0F888319BB243F0F00316 -:108DE000A0F8883101EB4103013100EB4313042962 -:108DF0009C80A3F806E05A841A865A805A81A3F808 -:108E00000EC05A82DA825A83DA83EBD1B0F8883105 -:108E10009BB243F00F03A0F88831B0F888319BB2C1 -:108E200043F47063A0F8883110BD00BF374B384A57 -:108E3000996F384841F47F0170B5996741F2010696 -:108E4000D3F8801045F6C05543F226040A43C3F810 -:108E50008020FFF7ADFF00F58040FFF7A9FF00F588 -:108E60008040FFF7A5FF00F58040FFF7A1FF00223B -:108E7000A0F503104FF00F0E114600EB42134FEA1E -:108E8000421C01329981042A5981A3F80EE09E8286 -:108E9000DD8020F80C1019829C81EED100221E4842 -:108EA0004FF00F0E41F20106114645F6C05543F250 -:108EB000260400EB42134FEA421C01329981042A36 -:108EC0005981A3F80EE09E82DD8020F80C101982F3 -:108ED0009C81EED1002211480F2641F20105114676 -:108EE00045F6C05443F2260E00EB42134FEA421CF3 -:108EF00001329981042A5981DE819D82DC8020F82B -:108F00000C101982A3F80CE0EED170BD00C00F4028 -:108F1000000003FC00C03D4000001E4000401E4019 -:108F2000704700BF704700BF72B6EFF305834F4C28 -:108F3000C4F88430EFF308824FF0E0234C4E4D4DDF -:108F4000D3F8280DD3F82C1DC4E92201D3F8341D21 -:108F5000D3F8383DC4E924139369C4F89830D36931 -:108F6000C4F89C3000F0D2F884ED280A01F064FDCA -:108F70000B214FF0FF32C4F8A4000B46C4F8801058 -:108F80003D49301D5A40202402F00103013C01FB01 -:108F900003F383EA5202F7D1A84202D0736806466F -:108FA000EFE7324BC3F8A820BFF34F8F4FF0E02319 -:108FB0002F49324AC3F8701FC3F8702FBFF34F8F89 -:108FC000BFF36F8F2E4A02252E48D36E2E4943F4ED -:108FD0004053D3660560D3692C4823F07F0343F0E8 -:108FE0004003D3610B6883423DD8264D00214FF0EA -:108FF000E0234FF0FF3229600126C5F8081124490B -:10900000C5F80011C5F80861C3F88021C3F88421B0 -:10901000C3F88821C3F88C21C3F8902101E000F047 -:1090200083F9D5F80C31002BF9D00134C5F80C6167 -:109030004F2CF4D9174B022017494FF00042C1F8CA -:1090400040015A63D5F80C313BB9144814490D4A14 -:109050000163D2F80C31002BFAD04FF0E023114A13 -:10906000C3F80C2DFEE7FFF77FFABEE700FF2720CD -:1090700080FF2720A8FF27202083B8EDA0FF27200E -:1090800000C00F4000400840A44B0020803DCD0BA5 -:10909000009F240000900D4000002E4000800F40F3 -:1090A000F100AD0B0400FA050A490A6838B108B5A9 -:1090B00013180948834204D810460B6008BD1046B7 -:1090C000704703F0A5FC0C234FF0FF3203601046FD -:1090D00008BD00BF204C0020000028200020704761 -:1090E0004FF0FF30704700BF4FF4005300204B603B -:1090F000704700BF012070474FF0FF30704700BF3E -:1091000030BFFDE730BFFDE7FFF70EBF124AD2F8D0 -:1091100080305B07FBD5D2F880301048C3F30B23B7 -:109120000F4990ED007A07EE903A91ED006AB8EEA3 -:10913000477A0C4AF8EEE77A0B4BD2ED006A77EEED -:10914000C77A93ED007AB8EE477A67EE867A87EEB3 -:10915000A60A37EE400A704700810D40B0BA0020E1 -:10916000B8BA0020BCBA0020B4BA0020836BF0B4B7 -:109170001BB1536843F40043536072B6446B3CB375 -:109180001A4B2260D3F8B0410C421DD1184E7768BB -:1091900004E07468E41BB4F5166F0BD2D3F84041B9 -:1091A00044F48044C3F84041D3F8B851D3F8404167 -:1091B0006404EED50D4007D10C4CC0E90225D4F86B -:1091C000B0310B43C4F8B031426362B6F0BC7047B3 -:1091D000064DC0E90224D5F8B0310B43C5F8B031D3 -:1091E0000263426362B6F0BC704700BF00002E40CD -:1091F000001000E070B5056B9DB106462A460024BC -:1092000003E012680134012A0CD0536813F0800384 -:10921000F7D032632CB12846B36B2D689847013CD8 -:10922000F9D170BDC6E90C33F4E700BF30B4D9B949 -:109230001F4C204B0021204A01254FF0011099605E -:109240001D60C4E9023180245C60C2F8BC01D2F820 -:10925000B0311A482B43C2F8B0310160D2F8B031B6 -:10926000002BFBD130BC70470904154B104C012575 -:1092700041F080019860104A596000F580511D60EE -:10928000D96000F50051A364196100F5405100F563 -:109290008040596100219861E164D2F8B03143F413 -:1092A0008033C2F8B031D2F8B031002BFBD1C0E727 -:1092B0000000002020A3002000002E4040BA002023 -:1092C00040A3002010B472B60A4C01220A49237848 -:1092D00002FA00F018432070D1F848311A0605D47C -:1092E00080221343C1F84421C1F8483162B65DF8C9 -:1092F000044B704787BC002000002E400849012223 -:109300000B7802FA00F023EA0000087030B9054A31 -:10931000D2F8483123F08003C2F84831704700BFCB -:1093200087BC002000002E402DE9F04F9D4C83B0FB -:10933000D4F84461F107C4F844616FD5D4F8AC3176 -:10934000002B66D0984DDFF87CB2DFF884A2974FEF -:10935000DFF88082DFF88092C4F8AC31D5E90A20CA -:10936000D4F8403143F40053C4F84031D4F84031CC -:109370009B04F5D5D4F8403123F40053C4F84031B0 -:109380004FF00113C4F8B431D4F8B43113F0011321 -:10939000FAD191B2CBF80030B1F5A06F00F0B281F4 -:1093A00000F2D780B1F5817F00F0508140F2B180AA -:1093B00040F20233994240F0DB8010F0780F83B224 -:1093C00040F0D68003F07F0213F0800F59F822306E -:1093D00014BF43F4803343F0010349F822300023E3 -:1093E000AF64EB64BB6001233B6080237B604FF084 -:1093F0000113C4F8BC31D4F8B03143F48033C4F85D -:10940000B031D4F8B031002BFBD1D4F8AC31002B03 -:10941000A2D1644BD3F8BC41002C48D1720614D5BC -:10942000604AD2F8AC31C2F8AC31D2F8BC31C2F8E3 -:10943000BC31D2F8B031002BFBD14FF0FF305C498A -:10944000C2F8B401D2F884210B60F40103D5594B62 -:109450001B6803B19847B00103D5574B1B6803B194 -:109460009847710708D54F4BD3F8843113F4007334 -:109470001AD0524B01221A704A4BD3F848311A06BF -:109480000FD533060DD54E4A13782BB1013BDBB215 -:109490001370002B00F0078203B0BDE8F04F00F01E -:1094A00085BC03B0BDE8F08F444A1370E4E7454A39 -:1094B000C3F8BC4113681C4240F054813C4B1B680C -:1094C0001C40ABD05FEA144810D0374D4FF0010973 -:1094D00098FAA8F7B7FA87F705EBC71009FA07F764 -:1094E0004030FFF787FE38EA0708F1D1A4B2002C1C -:1094F00094D02D4D4FF0010894FAA4F7B7FA87F7EE -:1095000005EBC71008FA07F7FFF774FEBC43F3D169 -:1095100084E7802900F01781822929D183B210F0D5 -:10952000780025D103F07F0259F82210264A1080D6 -:10953000180640F11381C90301D5012313700221DC -:109540002148FFF773FED4F8AC31002B7FF404AF51 -:109550005FE7B1F5106F00F0A68013D940F6211C2B -:10956000614505D1B0F5102F4FEA1041C0F02A81B6 -:109570004FF00113C4F8C031D4F8AC31002B7FF4A4 -:10958000EBAE46E740F2816399424FD8B1F5D06F18 -:10959000EED30E4B59680029EAD04FEA124E82B240 -:1095A00020E000BF00002E400000002020A300208B -:1095B00044BA002064BC002068BC00208FBC00209E -:1095C00095BC002040BA002064BA0020D849002091 -:1095D00038CA00208EBC0020C0012E4019690C330F -:1095E0000029C5D0B3F800C0F445F7D1B3F802C0E4 -:1095F0009445F3D14FEA1E22032A00F0C8801A894D -:10960000000C824228BF0246BEF5007F40F0C480B5 -:10961000A74BA8491878A84B0092002818BF1946F4 -:10962000A648FFF737FAA54B009A14E1B1F5086F89 -:109630009ED198F800300121A1480370FFF7F6FD94 -:10964000D4F8AC31002B7FF487AEE2E610F0780F4F -:1096500083B28DD103F07F0213F0800F59F82230CE -:1096600014BF23F4803323F0010349F82230002390 -:10967000AF64EB64BB6001233B6080237B604FF0F1 -:109680000113C4F8BC31D4F8B03143F48033C4F8CA -:10969000B031D4F8B031002BFBD1D4F8AC31002B71 -:1096A0007FF45AAEB5E6C2F30742009388F8002073 -:1096B0004FF0CC12C4F8C8214FF0C812C4F8CC2126 -:1096C00000F03EFF00F008FB0122009B3A60802280 -:1096D000AF647A604FF00112EB64BB60C4F8BC2148 -:1096E000D4F8B02142F48032C4F8B021CBF8003075 -:1096F000D4F8B031002BFBD1D4F8AC31002B7FF47F -:109700002BAE86E6C5E91273BB6001233B60802364 -:109710007B604FF00113C4F8BC31D4F8B03143F48E -:109720008033C4F8B031D4F8B031002BFBD1130C26 -:109730005B0643F08073C4F85431D4F8AC31002B8D -:109740007FF40AAE65E65E4802210380FFF76EFDF6 -:10975000D4F8AC31002B7FF4FFAD5AE6CB077FF590 -:10976000EEAEEAE6574B00211160D3E90021564BDB -:109770009A427FF4A3AE554B99427FF49FAE544B6F -:109780001A78A92A7CD0534B01221A7096E6000C55 -:109790000A78824228BF0246BEF5E06F53D1444B9F -:1097A000444893F800C04449444BBCF1000F18BF33 -:1097B000014600921846FFF76DF9072103464170F4 -:1097C000009A48E0DFF8FCC0CCE900204048E922DC -:1097D0000270E1B1EB600B043F4A43F08003AA60E2 -:1097E00053603E4B13610123C2E9020A1360D4F8AF -:1097F000B03143F00103C4F8B03100F5405300F537 -:10980000804053619061D4F8B031002BFBD100232C -:10981000AF64EB64BB6001233B6048F280037B6074 -:109820004FF00113C4F8BC31D4F8B03143F48033A5 -:10983000C4F8B0314FF48033CBF80030D4F8B031F5 -:10984000002BFBD1E1E51D4B1846CDE90023FFF7C6 -:1098500021F9DDE9002323F01F011344BFF34F8FEB -:109860004FF0E020C0F8701F20318B42FAD8BFF3D0 -:109870004F8FBFF36F8F11481146FFF7D7FCC4E538 -:109880005A78452A7FF47FAF9A78C22A7FF47BAF5B -:10989000DB786B2B7FF477AF0220FFF713FD104BC3 -:1098A00050221A700AE60220FFF728FD08F0A2FCF9 -:1098B0008FBC002098E201600CE3016000002020D2 -:1098C00064BA002028AF0020210900030100040031 -:1098D00038BA002096BC002040A3002038DA0020CF -:1098E00095BC00202DE9F0471F46831E022B01D9AD -:1098F000BDE8F087DFF84C9015460C463C2209EB9A -:10990000C01806464FEAC01A002108F104002404DA -:1099100002F082FFB5FA85F20123520944EA42744B -:1099200049F80A40C8F83870C8F80830002FDFD06E -:10993000034AB34011680B431360BDE8F08700BFD2 -:1099400044BA0020000000202DE9F0470D46811E9A -:10995000022901D9BDE8F087C701DFF84C90924693 -:10996000044640373C2200211E4609EB07082D041F -:1099700008F1040002F050FFBAFA8AF2520945EAEF -:10998000427249F807200122C8F83860C8F8082058 -:10999000002EDFD0034B10341968A2400A431A602E -:1099A000BDE8F08744BA0020000000201204816066 -:1099B000C36101F5405342F0800210B401244260BB -:1099C00001F50052046001F5805401F58041C46046 -:1099D00081615DF8044BC0E904237047831E0A4689 -:1099E000022B00D97047064B00F110014FF0010C1B -:1099F00003EBC0100CFA01F14030FFF7B7BB00BF1A -:109A000000000020831E0A46022B00D97047012166 -:109A1000024B814003EBC010FFF7A8BB0000002001 -:109A200040687047124A134BD2F8200220F07F4062 -:109A3000984210B584B002D200EB800040000E4C7A -:109A400001A90A22FFF7C2F801A90023204611F854 -:109A5000012B01333AB10A2B20F8022FF7D116233C -:109A6000237004B010BD5B00DBB2237004B010BDE6 -:109A700000441F40809698000052002000F0ECBD8A -:109A800000F0B6BD00F00ABE00F032BF00F02EBFFD -:109A90000846114600F01EBF38B50C4B04460C4D6D -:109AA0001B68298843B1B1F5917F09D24B1C9BB249 -:109AB000084A2B80545438BDB1F5917FF6D338BD98 -:109AC00000220448984700210123F1E72CBB002025 -:109AD00078BC002040BB0020F8B5144C4FF0E025C6 -:109AE000134E4FF4003204EB4024124F06EB4016A5 -:109AF0000346C5F88C2121463A883046FFF756FFC9 -:109B00003B882344BFF34F8FC5F85C4F2034A342FA -:109B1000FAD8BFF34F8FBFF36F8F03203146FFF7A3 -:109B200071FF4FF40033C5F80C31F8BD80002020E0 -:109B300060A3002070BC002042684FF6FC71114BFE -:109B4000C2F30E42C0691B889B1A0B4017D00E4906 -:109B500030B40E4C0E4D227821F810300021013225 -:109B600025F81010062A94BFD1B20A46217009497F -:109B70000C6823440B60084B985430BC7047FFF7C7 -:109B8000ABBF00BF70BC002074BA002083BC0020B3 -:109B900080BA00206CBA00209CBA00202DE9F04F5A -:109BA0000123DFF828A1DFF828B183B0414E9AF8ED -:109BB0000020414D414F8BF8003005EB42153388B2 -:109BC000D7F80080CDE90002002B6DD13C4CDFF8C6 -:109BD00004912846FFF724FF10F080005DD03B6819 -:109BE000A3EB0803282B04D90123237003B0BDE89D -:109BF000F08F2378002BF9D199F80030002BF5D0A5 -:109C000000F0A2FE3388002BE3D02E4A9AF8001011 -:109C10001288D01A043B2C4C9BB22044338000EBBA -:109C20004120009E4902C0F8006C93BB04F54064DB -:109C300028460C442146FFF7B9FEBFF34F8F04F1CD -:109C4000200204F50073934234BF012310234FF028 -:109C5000E02204EB4313C2F8704F20349C42FAD147 -:109C6000BFF34F8FBFF36F8F03202946FFF7B6FE78 -:109C7000019B00200133032B94BFDBB200238AF841 -:109C80000030FFF73BFB00238BF8003003B0BDE84A -:109C9000F08F0020FFF716FBF5E70A4B9AF800104B -:109CA0001A8820701346B5E7064A01991288D01A1F -:109CB000B0E700BF72BC002020A50020E8BA002059 -:109CC00088BC002076BC0020800020208ABC0020B8 -:109CD0008CBC00208EBC0020214B70B51B78002B63 -:109CE0003BD04FF400731E461E4980221E4D0024B7 -:109CF0000B8000211D482B8002F08EFD1C4A21465E -:109D00001C4B1470C0221C481C8002F085FD1B4AAD -:109D100031461B4B032094609C60C2E90044194A01 -:109D2000C3E900441470184B184A1C70184B146097 -:109D30002246FFF7D7FD2346224629880320FFF756 -:109D400003FE20460134FFF7C7FE062CF9D100239D -:109D50001049114A0B70137070BD40231E46C3E7B3 -:109D60008FBC002070BC002076BC002020A5002005 -:109D70008ABC002072BC002060A3002074BA0020BE -:109D800080BA002083BC002085BC00206CBA002073 -:109D9000ADB7020088BC00208CBC0020024B1B78B1 -:109DA0000BB1FFF7FBBE70478EBC00202DE9F843D6 -:109DB000204B1D7815B9204E33880BB9BDE8F883C8 -:109DC000DFF884801D4A98F800701D4C02EB47199B -:109DD0001C4A04EB4724128848462146D21A2B46D7 -:109DE000FFF7E4FDBFF34F8F04F1200204F5007389 -:109DF000934234BF012310234FF0E02204EB4313BE -:109E0000C2F8704F20349C42FAD1BFF34F8FBFF39A -:109E10006F8F013749460320FFF7E0FD032F4FF016 -:109E2000000098BFFDB2308088F80050BDE8F843CC -:109E3000FFF764BA8CBC002072BC002020A5002073 -:109E4000800C202076BC00208ABC0020120103294F -:109E50002DE9F0418846D6B21BD946F00407C41C50 -:109E6000294D2B78A8F103086BB114F8013C14F8C4 -:109E7000022C1B0614F8030C43EA02433B4343EA5B -:109E80000020FFF78BFEB8F1030F204604F1030416 -:109E9000E7D8B8F1030F17D0B8F1020F04D0B8F12A -:109EA000010F24D0BDE8F081174B1B78002BF9D0AF -:109EB0004378027846F006001B0443EA0223BDE81B -:109EC000F0411843FFF76ABE0F4B1B78002BE9D017 -:109ED000837846F0070642781B06007843EA02437F -:109EE0003343BDE8F04143EA0020FFF757BE064B7D -:109EF0001B78002BD6D046F00506007846EA0020F5 -:109F0000BDE8F041FFF74ABE8EBC002012012DE9EA -:109F1000F041D5B2002942D001290446884657D0E5 -:109F20003A4E45F0040733784BB140782378000669 -:109F300040EA0340384340F47040FFF72FFEA8F199 -:109F40000208A31CB8F1020F18D905343378A8F120 -:109F500003086BB114F8013C14F8022C1B0614F82A -:109F6000030C43EA02433B4343EA0020FFF716FE9B -:109F7000B8F1020F234604F10304E7D8B8F1020F49 -:109F800017D0B8F1010F32D0337833B14FF20570EA -:109F90002843BDE8F041FFF701BEBDE8F0811B4B4F -:109FA0001B78002BF9D01A482843BDE8F041FFF791 -:109FB000F5BD327819785B78002AEED01B0415487D -:109FC00043EA01232B43BDE8F0411843FFF7E6BD08 -:109FD0000E4B02781B78002BDFD045F007050E48AA -:109FE00045EA02452843BDE8F041FFF7D7BD327886 -:109FF0001B78002AD1D045F0060040EA0320BDE8D6 -:10A00000F04140F47700FFF7C9BD00BF8EBC0020CF -:10A0100006F0F700070000F700F000F7F8B54FF47E -:10A0200000324FF0E023204CC3F88C211F4B2278E4 -:10A0300019788A422ED0D3B21D4A1E4F01331E49D1 -:10A040001E4E072B28BF0023D05C37F8102001EBF1 -:10A0500040218D580432316892B2043927F810201B -:10A060003160174931F81010914207D94FF0E023C1 -:10A070004FF400322846C3F80C21F8BDDBB2237040 -:10A08000FFF72AFD4FF0E0234FF400322846C3F8D3 -:10A090000C21F8BD00254FF0E0234FF40032284694 -:10A0A000C3F80C21F8BD00BF85BC002083BC002094 -:10A0B0009CBA002080BA0020800020206CBA0020CA -:10A0C00074BA00202DE9F0410746FFF7A7FF98B1C9 -:10A0D000C0F3032300F00F059F4A04465E1CC0F343 -:10A0E00003134FEA10281370A5F10803062B06D8B6 -:10A0F000002F47D0BE4245D00020BDE8F081AB1E06 -:10A100005FFA88F0012B19D9F72818BFF02801D978 -:10A11000052D13D0042D00F089816B1F022B40F216 -:10A1200049810F2DE8D1F72808D8F02803D08B4BB0 -:10A130001B88002BE0D0FFF7AFFCDDE7F1380E28DD -:10A14000DAD801A353F820F03DBF02004FBF020050 -:10A150006BBF02006DBD02006DBD020079BF020041 -:10A160006DBD020087BF02006DBD0200C1BE0200CE -:10A17000F5BE0200DDBE02006DBD02000DBF020093 -:10A1800025BF0200082DC4F3033318D1082B16D1C4 -:10A1900073498022734BC4F307450F68F6B2240E4F -:10A1A0001A701FB1294630462246B8476E49012031 -:10A1B0006E4A6F4B0E7015701C70BDE8F081092D52 -:10A1C00014D1092B12D1220E664B00F0B7809021DA -:10A1D000C4F30745F6B21970D4B2664B1B68002B66 -:10A1E000E4D02246294630469847DFE70A2D05D1BC -:10A1F0000A2B03D1604BA0215A4A06E00B2D11D146 -:10A200000B2B0FD15D4BB021564A1B68C4F3074599 -:10A21000F6B21170240E002BC8D0294630462246D3 -:10A220009847C3E70C2D40F081800C2B7ED1544B16 -:10A23000C0214C4A1B68C4F30745F6B21170240EC6 -:10A24000002BB3D0294630469847AFE74D4B1B68EB -:10A25000002B00F0FF80C4F307459847414AF6B24F -:10A26000240E82F80080A1E7474B1B68002BF2D137 -:10A27000464B1B682BB3FC20C4F307459847EDE71A -:10A28000434B1B68002BE6D1404B1B68CBB1FB2036 -:10A29000C4F307459847E1E73E4B1B68002BDAD132 -:10A2A0003A4B1B686BB1FE20C4F307459847D5E7CE -:10A2B000394B1B68002BCED1344B1B680BB1FF20F0 -:10A2C0009847C4F30745C9E7344BC4F307451B68F7 -:10A2D000002BC3D028469847C0E7314B1A68002AA4 -:10A2E000EFD0630CC4F30640250C03F47E53EDB2AB -:10A2F00018439047B2E72B4BC4F307451B68002B6C -:10A30000E8D1ABE7284BC4F307451B68002BA4D169 -:10A31000A4E7264B1B68002B9DD11C4B1B68002B10 -:10A32000CFD0F820C4F30745984797E70D2D62D1A9 -:10A330000D2B60D11E4BD0210A4A7BE78021F6B25B -:10A34000C4F307451970064B1B68002B79D02946CA -:10A3500030461446984729E790BC002078BC00207E -:10A3600004BB002094BC002091BC002092BC0020C3 -:10A3700093BC002008BB00203CBB002000BB002099 -:10A3800010BB002020BB002024BB002014BB0020F9 -:10A39000FCBA0020F0BA002030BB002034BB002003 -:10A3A00018BB00201CBB002038BB0020F8BA0020DE -:10A3B000F4BA0020FFF770FB052D08D0C4F3074066 -:10A3C000FFF76AFB072D02D1200EFFF765FB2A4B32 -:10A3D0002A4819882A4A0170080A2A4C107000205D -:10A3E000294A1880F0232468137064B32748012297 -:10A3F000A047012081E60E2D7FF47EAE0E2B7FF468 -:10A400007BAE234BE021204A1B68117063B3610CC3 -:10A41000C4F30642F6B201F47E51250C3046240EF8 -:10A420001143EDB2A1F500519847BFE6FFF734FBA9 -:10A43000C4F30740FFF730FB200EFFF72DFB002091 -:10A440005BE61C46B2E6134B1B6893B10F48984776 -:10A45000012052E6104B1B68002B3FF432AFFA206C -:10A46000C4F307459847F9E6C4F30745F6B2240E4E -:10A470009CE6012041E600BF78BC002092BC002091 -:10A4800093BC00202CBB002094BC002040BB0020CB -:10A490000CBB002028BB002014BB0020F8B5104DD9 -:10A4A0004FF0E0260F4C4FF4003705EB4015034604 -:10A4B00004EB401420222946C6F88C712046FFF791 -:10A4C00075FABFF34F8FC6F85C5FBFF34F8FBFF3D2 -:10A4D0006F8F02202146FFF795FAC6F80C71F8BD80 -:10A4E0008014202020A400204368C069C3F30E43D9 -:10A4F000C3B90E4942018A5CA2B10D4910B40A7871 -:10A500000C4C013224F81030082A0DD8D4B213466E -:10A510000C700949094C0A68E05420325DF8044B7C -:10A520000A607047FFF7BABF1C46F1E7801420208D -:10A5300084BC00208CBA002070BA0020A4BA00208D -:10A5400038B500244FF4C0721D4821461D4D02F05D -:10A5500063F91D481D4B4FF48072214604701C485E -:10A560001C8002F059F91B4A02201B491B4B0C703E -:10A5700020211C7014601A4B54602C60C2E9024404 -:10A580002246FFF7AFF92346224640210220FFF77B -:10A59000DBF920460134FFF781FF082CF9D1114B7C -:10A5A0004A2211480021114C0460C3F88410C3F8FA -:10A5B0008020D3F8482142F08072C3F8482138BD8A -:10A5C000A0A5002070BA00208BBC002074BC002025 -:10A5D00020A400208CBA002084BC002086BC00206F -:10A5E0005DC1020000002E4064BC002099C302003F -:10A5F00070B5144B144D2A7819788A421FD0D3B203 -:10A60000124A134E0133134C092B28BF0023D05C90 -:10A6100036F8102002EB401101321F2A04EB010C26 -:10A62000645C02D89CF8011029B9DBB22B70FFF7EB -:10A6300035FF204670BD26F81020204670BD4FF033 -:10A64000FF34F6E784BC002086BC0020A4BA0020BA -:10A650008CBA0020801420200B4B0C4A12781978F9 -:10A66000D3B28A420DD00133094A0A48092B0A495C -:10A6700028BF0023D25C30F8123003EB4213C85CD1 -:10A6800070474FF0FF30704784BC002086BC00202C -:10A69000A4BA00208CBA00208014202008B5064AF5 -:10A6A000064B12781B789A4201D0012008BD00F0B9 -:10A6B0004BF9002008BD00BF86BC002084BC0020F0 -:10A6C00070B5154E0023154D3278154C05EB42152B -:10A6D00004EB8214402228462146FFF767F9BFF3B6 -:10A6E0004F8F4FF0E02304F12002C3F8704F403445 -:10A6F000944201D9C3F8702FBFF34F8FBFF36F8F10 -:10A7000002202946FFF76AF933780133DBB20B2BBD -:10A7100088BF0023337070BD8BBC0020A0A5002033 -:10A720008015202038B50D4B1B7833B90C4D03F044 -:10A73000FF042A88531E3E2B00D938BD0949C2F1B7 -:10A7400040030948097803EB81132146184402F0BD -:10A7500063F82C80BDE83840FFF7B2BF8DBC002005 -:10A7600074BC00208BBC0020801520202DE9F04F08 -:10A7700085B0CDE90110002900F081800023414F10 -:10A78000DFF81C81DFF81CA13F4E009301233F4AF4 -:10A790003B703F4B1978B8F8003002EB4119002BA1 -:10A7A00069D11D461C469B464846FFF739F910F013 -:10A7B000800051D09AF8003087F800B004B93568AD -:10A7C000002B2FD1336801245B1B322B4DD8314B2A -:10A7D0001B783BB300F0B8F8B8F80030002BE3D09A -:10A7E0002B4AC3F1400011781A4600EB81102A4928 -:10A7F00008440199914219D3009B8D1A00241344F7 -:10A8000001950093029B194613440293FEF742F907 -:10A81000A8F80040FFF754FF204BC3F884403C7079 -:10A82000002DB3D1009805B0BDE8F08FDDE90141FE -:10A8300003932246FEF72EF9039B00984FF0404108 -:10A840001B1B164A2044A8F800300023C2F88410CD -:10A850003B7005B0BDE8F08F40220D4B8AF8000038 -:10A8600019781346A8F80020BFE700988AF800403E -:10A8700005B0BDE8F08F1A46C3F14000B5E7019876 -:10A88000D1E700BF8DBC0020E8BA0020A0A50020C1 -:10A890008BBC00208EBC00208015202000002E40A4 -:10A8A00074BC002089BC0020094B00B583B01B7824 -:10A8B0008DF807003BB101210DF10700FFF756FFAE -:10A8C00003B05DF804FB03F0FF0003B05DF804FB88 -:10A8D0008EBC0020044B1B7803F0FF020BB1FFF786 -:10A8E00045BF1046704700BF8EBC00200120704756 -:10A8F0000F4B1B78DBB170B50E4C228802B970BDCE -:10A900000D49C2F140030D48002509780C4E03EBB8 -:10A910008113294618440123337001F07DFF2580FF -:10A92000FFF7CEFE074BC3F88450357070BD7047FB -:10A930008EBC002074BC00208BBC00208015202021 -:10A940008DBC002000002E402DE9F843324E3378B4 -:10A9500063B1324F3A784AB90122D9073A7044D4E8 -:10A960009A0726D400225B073A7001D4BDE8F88329 -:10A970002B4B1A68002AF9D0EFF30582002AF5D193 -:10A98000EFF3108572B6186800283BD0254C21786B -:10A99000002937D10122227042691A60002A38D07A -:10A9A000916105B962B6002583684577984725709F -:10A9B000DCE7DFF87C8098F80020002AD2D0002560 -:10A9C000DFF870902B4659F8234001352368204664 -:10A9D0001B69984710B163699B68984798F80020F5 -:10A9E000EBB29A42EFD83378BCE7FFF757FE68B96D -:10A9F0000D4B1B780BB93378B2E7337803F0FE03C5 -:10AA00003370ADE7002DB1D162B6AFE700F026F8A4 -:10AA1000EEE7064B1A60C4E7175200207EBC002008 -:10AA2000F4B600207BBC00205EE2016000B700208D -:10AA30007CBC002004B70020074A506A936A19467C -:10AA40008446506A936A9942F9D18445F7D1DB0B69 -:10AA500043EA4040704700BF00400D40704700BFD0 -:10AA60000000000008B52DED048BB0EE409BB0EE69 -:10AA7000418B00F05FF8B4EE489BF1EE10FA06D679 -:10AA80009FED0A9BB4EE498BF1EE10FA02D0BDECBB -:10AA9000048B08BD01F0BCFF89EE090BBDEC048BF3 -:10AAA0002123036008BD00BFAFF300800000000059 -:10AAB00000000000B0EE407B17EE903A1B4A23F0F6 -:10AAC000004393421BDD1A4A934202DD30EE400BF5 -:10AAD000704700B585B0684600F078F900F00300D3 -:10AAE00001289DED021B9DED000B0CD0022812D019 -:10AAF00070B1012000F096FE05B05DF804FB9FEDFB -:10AB0000091B00F0F7BD00F08DFEB1EE400BF3E73E -:10AB100000F0F0FDF0E700F0EDFDB1EE400BEBE7EB -:10AB2000AFF300800000000000000000FB21E93FBF -:10AB3000FFFFEF7F2DE9F04385B08DED001BDDE9D0 -:10AB4000007C2CF0004050EA07038DED020B2FD063 -:10AB5000039B984A23F0004E964529DC7A42964999 -:10AB60003A4340EAD2728A4222D8DDF808908645FC -:10AB70003C464A4603F0004606DCC0F2C780B945B1 -:10AB8000C0F0C48000F0FD808B491940D9B9BEF1F6 -:10AB9000000F40F0DF80B9F1000F4D4640F308810F -:10ABA000A1F213416D00002D01F1FF31FADC0EE03E -:10ABB0009DED027B9DED006B27EE067B87EE070B7C -:10ABC00005B0BDE8F0834FEA2E51A1F2FF317A4D76 -:10ABD0000CEA050585B9002840F0AD80002FB84685 -:10ABE00040F3E480A5F213454FEA4808B8F1000F9E -:10ABF00005F1FF35F8DC02E00515A5F2FF35DFF8B9 -:10AC0000BC81414572DBC3F3130343F48013DFF8C7 -:10AC1000ACE1754559DBCCF3130C4CF4801CD01B14 -:10AC2000491B0BD11DE050EA0E0345D04FEADE73FD -:10AC3000013903EB40034FEA4E0211D0A3EB0C00A5 -:10AC4000944288BF00F1FF300028A2EB040E4FEAC7 -:10AC5000D277E8DA013907EB43034FEA4202EDD13C -:10AC6000101BA3EB0C0C944288BF0CF1FF3CBCF111 -:10AC7000000FA4BF0246634653EA020105D11BE060 -:10AC8000D10F01EB43035200013DB3F5801FF7DB09 -:10AC90004A498D426ADA491B142978DC05F21E40C4 -:10ACA000CA4003FA00F043FA01F110430E43334661 -:10ACB000024643EC102B83E7414BF60F03EBC60330 -:10ACC00093ED000B05B0BDE8F083AEEB05041F2C3F -:10ACD00025DD3C48491BA0EB050C07FA0CFC18BF0E -:10ACE0000024ABD1A3EB0C0C1046C0E7A8EB010885 -:10ACF000B8F11F0F0DDC01F21E430EFA08FE29FA0F -:10AD000003F309FA08F243EA0E0380E79DED020B14 -:10AD100056E72C4B5B1A09FA03F3002277E705F29A -:10AD20001E4C00FA04FE27FA0CFC07FA04F44CEA65 -:10AD30000E0C101B74E74FEAC028B8F1000F1F4D2E -:10AD40007FF75DAF4FEA4808B8F1000F05F1FF3516 -:10AD5000F8DC54E74FEACE25002D18497FF737AFCE -:10AD60006D00002D01F1FF31FADC30E7A3F580130F -:10AD7000334305F2FF3543EA0551104641EC100B11 -:10AD80001EE70F4B03EB167393ED000B18E71F291B -:10AD900007DC05F21E4022FA01F103FA00F0084335 -:10ADA00085E70848401B43FA00F080E7064D26E798 -:10ADB00005490CE7FFFFEF7F0000F07F02FCFFFF7B -:10ADC000C0020020E2FBFFFFEDFBFFFF70B553EC7C -:10ADD000102B9C4923F000458D4288B004466ADD63 -:10ADE00099498D421E461BDC002B9FED867B40F36C -:10ADF000EB8030EE477BA1F51B21A1F5F0618D4280 -:10AE00006AD09FED826B012037EE465B37EE457BC3 -:10AE100084ED005B37EE467B84ED027B08B070BDAD -:10AE20008A498D4260DD8A498D424DDC2A1510EE3B -:10AE3000100AA2F21642A5EB025141EC170B9FED4E -:10AE4000755BBDEEC76BB8EEC66B37EE467B27EE83 -:10AE5000057BFDEEC74B8DED026BB8EEE46B37EE74 -:10AE6000467B27EE057BB5EE407BF1EE10FA8DEDCB -:10AE7000046B8DED067B40F0968014EE903A002B2B -:10AE80000CBF01230223734901910221009102A802 -:10AE9000214600F0E7F8002EC0DA94ED006B94ED47 -:10AEA000027BB1EE466BB1EE477B84ED006B84ED27 -:10AEB000027B4042B2E700200021C4E902010020E9 -:10AEC00084ED000B08B070BD30EE407B002084EDB7 -:10AED000027B84ED007BA1E79FED505B9FED516B02 -:10AEE00037EE457B01208FE700F0F4FCB6EE007BE7 -:10AEF0009FED4E5BA0EE057BFDEEC77B9FED413BDA -:10AF000017EE900A9FED416B1F28B8EEE75BB1EE9C -:10AF1000454BA5EE430B25EE067B1CDC4E4B421E3B -:10AF200053F82230AB4216D030EE476B84ED006B05 -:10AF300030EE460B30EE470B002E84ED020BBFF6D1 -:10AF40006DAFB1EE466BB1EE400B84ED006B84ED5E -:10AF5000020B404262E730EE476B16EE903AC3F3C5 -:10AF60000A53C3EB1553102B4FEA2552DEDDB0EE2A -:10AF7000403B9FED2A6B9FED2B2BA4EE063B30EE62 -:10AF8000437BA4EE067B95EE027B33EE476B16EE19 -:10AF9000903AC3F30A53D21A312A06DCB0EE430BBF -:10AFA00084ED006BC4E703236DE79FED226BB0EEE9 -:10AFB000430B9FED222BA4EE060B33EE407BA4EE59 -:10AFC000067B95EE027BAFE7244930EE077B8D428E -:10AFD0000ED09FED0E6B4FF0FF3037EE065B37EE75 -:10AFE000457B84ED005B37EE067B84ED027B15E745 -:10AFF0009FED0A5B9FED0B6B37EE057B4FF0FF304B -:10B00000EBE700BF00004054FB21F93F3163621AB7 -:10B0100061B4D03D00000000000070410000601AE3 -:10B0200061B4D03D7370032E8A19A33B83C8C96DE8 -:10B03000305FE43F0000002E8A19A33BC149202560 -:10B040009A837B39FB21E93F7BD90240FB213941BF -:10B05000FFFFEF7FD048002044470020FB21F93F4D -:10B06000000000002DE9F04F2DED088BADF5157DAA -:10B070001C4604930791AB4BA69912F1140F53F899 -:10B080002150824604F1FF38C0F29982A649D31EAE -:10B0900081FB0301DB17C3EBA10303930133A3EB94 -:10B0A0008303DB00D3180693039B15EB0801A3EB86 -:10B0B00008031AD401319FED956BA79819441CAA77 -:10B0C0000AE050F8234007EE904A0133B8EEE77BE0 -:10B0D0008B42A2EC027B08D0002BF2DAB0EE467B6A -:10B0E00001338B42A2EC027BF6D1002DC0F2C98263 -:10B0F000049B1CAA02EBC3046CAE4FEAC30C40468F -:10B10000EF180AEBC301B8F1000F9FED807B09DB5C -:10B1100022465346B3EC025B32ED026B8B42A5EE46 -:10B12000067BF7D10130B842A6EC027B04F108049B -:10B13000E9D108AF07EB85039FED769B9FED778BF9 -:10B14000043BDDF818B005930AEB0C0407EB850906 -:10B150006CAE2946019594AB03EBC103002913EDB6 -:10B16000280B16DD06EBC1033A4620EE097B33EDD2 -:10B17000025BB0EE406BBDEEC77BB342B8EEC77B5F -:10B18000A7EE486BBDEEC66B37EE050BA2EC016A6D -:10B19000EBD15846029100F0A9FBB0EE40ABB4EE03 -:10B1A000000B2AEE000B00F029FCB2EE007BA0EEB3 -:10B1B00047ABBDEECABBBBF1000FB8EECB7B02992B -:10B1C0003AEE47AB74DD01F1FF3ECBF1180357F8BF -:10B1D0002E2042FA03FC0CFA03F3D21ACBF117002B -:10B1E0001BEE103A42FA00F56344002D47F82E207A -:10B1F0000BEE103A64DCB5EE40ABF1EE10FA40F025 -:10B20000C480019B01F1FF3E73450DDC4FEA810CC8 -:10B2100007EB8103002053F8042D4B4540EA020060 -:10B22000F9D1002840F0F280019B013B57F8233010 -:10B23000002B40F0E680059B012553F8042D0135D5 -:10B24000002AFAD001F1010E0D447046049B194406 -:10B25000039B03EB0E0C0CF1804CA79B0CF1FF3C05 -:10B2600003EB8C0C1CAB06EBCE0E03EBC1019CED8B -:10B27000017AB8EEC77BB8F1000F81ED007B0CF1CD -:10B28000040C0A469FED216B01F1080109DB5346CE -:10B2900001E032ED027BB3EC025BA342A5EE076B4B -:10B2A000F7D10130A842AEEC026BE0DD294652E74F -:10B2B00040F09D804B1E57F82350ED15002D9ADD70 -:10B2C0001BEE103A002903F101030BEE103A40F394 -:10B2D0008C813A68002A40F0828001292DD03B46BB -:10B2E000012053F8042F002A7CD0431CC2F1807245 -:10B2F000994247F820201FDD57F8232007EB810CE7 -:10B3000007EB83036FF07F4011E000BF00000000F7 -:10B3100000000000000000000000703E000000007F -:10B320000000704134470020ABAAAA2A1A68821A8A -:10B3300043F8042B6345F9D10122BBF1000F0DDD69 -:10B34000BBF1010F00F03381BBF1020F06D1481EA3 -:10B3500057F82030C3F3150347F82030022D7FF44F -:10B360004AAFB7EE000B30EE4AAB002A3FF443AFD2 -:10B370005846029100F0BAFA3AEE40ABB5EE40AB57 -:10B38000F1EE10FA02993FF43CAF069CB0EE4A0B86 -:10B390006042A8468B46019D00F0A8FA9FEDC16B64 -:10B3A000B4EEC60BF1EE10FAC0F247819FEDBF7B01 -:10B3B00020EE077BBDEEC77B0BF10102B8EEC75B49 -:10B3C000A5EE460BBDEEC00B183410EE103A47F850 -:10B3D0002B3017EE103A069447F822302AE001236A -:10B3E000002083E7013088427FF47BAFA5E7B6EE0B -:10B3F000007BB4EEC7ABF1EE10FA80F2E5800025D9 -:10B40000F9E601F1010E704675461FE7069BA3F1B0 -:10B41000180157F82E300691A8467246019D4BB987 -:10B42000ACF104033B4453F8040D013A18390028E9 -:10B43000F9D006910698B7EE000B019200F056FA8B -:10B44000019A002AC0F221819FED986B02F1010C54 -:10B450006CA907EB8C034FEACC0E01EBCC0133ED6A -:10B46000017ABB42B8EEC77B27EE007B20EE060BCD -:10B4700021ED027BF3D19FED8F4BAEF108036CA958 -:10B48000CE18002444AF002D9FED8C7B10DBB0EE76 -:10B49000446B8C483146002303E09C4208DBB0EC4F -:10B4A000026BB1EC025B01339D42A5EE067BF4DA40 -:10B4B00007EBC403944283ED007B4FEAC40104F11F -:10B4C0000103A6F1080601D01C46DCE7A69B022B6F -:10B4D0001DDC002B00F38B800FD19FED787BBE44E9 -:10B4E0003EED026B774537EE067BF9D143460BB153 -:10B4F000B1EE477B079B83ED007B1BEE103A03F018 -:10B5000007000DF5157DBDEC088BBDE8F08FA69BFF -:10B51000032BF2D1002A00F0E38002F1005307EB85 -:10B52000C20030ED026BB0EE475B874237EE067B20 -:10B5300036EE476B80ED007B36EE056B80ED026BDF -:10B54000EFD1012A40F3CC80394491ED006BDA0051 -:10B5500046A907EBC30333ED027BB0EE465B99428D -:10B5600036EE076B37EE467B83ED006B37EE057BDF -:10B5700083ED027BEFD19FED517B02F108033B4449 -:10B5800007F1100233ED026B9A4237EE067BF9D1D8 -:10B590004346002B59D1D7E90001D7E90223079C84 -:10B5A00084ED047BC4E90001C4E90223A5E7481E39 -:10B5B00057F82030C3F3160347F82030CEE60021B9 -:10B5C0006FF0170303916DE51BEE103A002903F1AC -:10B5D00001030BEE103AC8BF02253FF77AAEB7EE73 -:10B5E000007B37EE4AAB022505E60022A5E69FED7B -:10B5F000337B07EBCC0C3CED026B674537EE067BEB -:10B60000F9D1434697ED006B8BBB079B002A83ED76 -:10B61000007B36EE477B0CDD46A90123B1EC026BC3 -:10B6200001339A4237EE067BF8DA43460BB1B1EEAE -:10B63000477B079B83ED027B5FE7BDEEC00B5A465D -:10B6400010EE103A47F82B30F4E697ED005BB1EEC0 -:10B65000477B97ED026BB1EE455B079BB1EE466B06 -:10B6600083ED005B83ED026B83ED047B45E7079B75 -:10B67000B1EE475B002A83ED005B36EE477BCBDC07 -:10B68000D5E7049B4FEAC30C53E5A69B022B1BDCBA -:10B69000002B21DC7FF431AF9FED087B26E700BF54 -:10B6A000AFF30080000000000000704100000000C7 -:10B6B0000000703E00000040FB21F93F0000000048 -:10B6C0000000000088020020A69B032B7FF415AF2A -:10B6D0009FED067B44AF5BE79FED047B44AF90E7B3 -:10B6E0009FED027B54E700BFAFF300800000000035 -:10B6F0000000000010EE903A23F00043B3F1795FB0 -:10B700002DED028B2EDAFDEEC07B17EE903A002B6A -:10B7100065D020EE004B9FED358B9FED362B9FEDD6 -:10B72000373BA4EE082B9FED375BA4EE023B9FED69 -:10B73000376BA4EE035B9FED377BA4EE056BA4EEA5 -:10B74000067B24EE077B21EE401BB6EE006BA4EED9 -:10B75000071BB7EE000B94EE061BBDEC028B30EE20 -:10B76000410B70479FED218B20EE004B9FED212B6D -:10B770009FED223BA4EE082B9FED225BA2EE043B43 -:10B780009FED226BA3EE045B9FED227BA5EE046B85 -:10B79000224AA6EE047B934227EE047BD3DD204AA7 -:10B7A000934217DCB7EE006B0020A3F5001141ECCB -:10B7B000150B36EE456B21EE401BB6EE003BA4EEBA -:10B7C000071B94EE035BBDEC028B35EE410B36EEAE -:10B7D000400B7047B6EE076BB5EE025BEBE7B7EEDA -:10B7E000000BBDEC028B7047AFF30080D43888BEED -:10B7F000E9FAA8BDC4B1B4BD9EEE213EAD529C8015 -:10B800004F7E92BE9015CB19A001FA3E7751C1161A -:10B810006CC156BF4C5555555555A53F3233D33F96 -:10B820000000E93F10EE903A23F00043B3F1795F56 -:10B8300004DAFDEEC07B17EE903A5BB320EE007B9E -:10B840009FED162B9FED173B9FED184BA7EE023B8C -:10B850009FED185BA3EE074B9FED186BA4EE075B03 -:10B86000A5EE076B20EE075B30B99FED164BA7EEF8 -:10B87000064BA4EE050B70479FED144B26EE456B6F -:10B88000B6EE003BA1EE036B96EE071BA5EE041B84 -:10B8900030EE410B704700BFAFF300807CD5CF5A2C -:10B8A0003AD9E53DEB9C2B8AE6E55ABE7DFEB157C1 -:10B8B000E31DC73ED561C119A0012ABFA6F810112A -:10B8C0001111813F495555555555C5BF49555555D8 -:10B8D0005555C53F51EC100B10EE102A21F00043D6 -:10B8E00043EC102B704700BF0000000053EC102BFE -:10B8F00010B4C3F30A54194674BB23F0004111433A -:10B9000027D09FED307B3B4920EE077B884253ECEC -:10B91000172B43DBC3F30A541946363C4CF2503C18 -:10B92000604522DC204440F2FE74A0421DDC002869 -:10B9300029DC10F1350F38DB21F0FF41363021F4DE -:10B94000E0019FED227B41EA005343EC102B20EEF7 -:10B95000070B5DF8044B704740F2FF7C6445DDD176 -:10B9600030EE000B5DF8044B70479FED1A7B9FEDA6 -:10B970001B5BB0EE470B002B5DF8044B27FE057BED -:10B9800027EE000B704721F0FF4121F4E00141EA6E -:10B99000005343EC102B5DF8044B70479FED110BE7 -:10B9A0005DF8044B27EE000B70479FED0E7B9FED7B -:10B9B0000F5BB0EE470B002B27FE057B27EE000B3D -:10B9C000C7E700BF00000000000050430000000077 -:10B9D0000000903C9C7500883CE4377E9C75008894 -:10B9E0003CE437FE59F3F8C21F6EA50159F3F8C2C3 -:10B9F0001F6EA581B03CFFFF0000000010B582B0B3 -:10BA00008DED000B01990098C1F30A52A2F2FF33A9 -:10BA1000132B844631DC002B21DB3A4A1A4101EA20 -:10BA2000020404438E462DD09FED347B9DED006BC8 -:10BA300036EE077BB5EEC07BF1EE10FA09DD00298A -:10BA400004DA4FF4801141FA03F39E442EEA020116 -:10BA500000200B46024643EC102B02B010BD9FEDB8 -:10BA6000277B30EE077BB5EEC07BF1EE10FAF0DD00 -:10BA7000002928DB00200146EBE7332B06DDB3F578 -:10BA8000806F1BD09DED000B02B010BDA2F21342DF -:10BA90004FF0FF3E2EFA02F21042F3D09FED177BDB -:10BAA0009DED006B36EE077BB5EEC07BF1EE10FA34 -:10BAB000CFDD002913DB2CEA0200CAE79DED007BF5 -:10BAC00037EE070BE0E721F0004101430E4B002960 -:10BAD0004FF000000CBF4FF000411946B9E7142B9E -:10BAE00009D00124C3F1340304FA03F39C446045F4 -:10BAF00088BF0919DFE70131DDE700BF9C750088C9 -:10BB00003CE4377EFFFF0F000000F0BF034608460D -:10BB1000194600F04FBF00BF38B5A1FB02148CBB23 -:10BB200000F046F80546E0B150F8042C22F003027C -:10BB3000043A242A17D8132A1AD91B2AC0E9004428 -:10BB40001DD9242A14BF00F1100200F118024FF091 -:10BB50000003C0E9024404BF04614461C2E9003348 -:10BB60009360284638BD214600F056FE284638BD71 -:10BB700002460023C2E900339360284638BD00F135 -:10BB80000802F6E700F044FF0C2300250360E8E715 -:10BB9000024B0146186800F00BB800BFB0510020FE -:10BBA000024B0146186801F093BA00BFB051002063 -:10BBB0002DE9F04F01F10B06162E83B0044624D870 -:10BBC000102900F2BA8000F0A3FA102618220220F1 -:10BBD000B54F3A44A2F1080153688B4200F0BA8095 -:10BBE0005A68D96822F003021A449D68E9608D60A2 -:10BBF000516841F001012046516003F1080500F051 -:10BC00008DFA284603B0BDE8F08F36F0070600F144 -:10BC10009480B14200F2918000F07AFAB6F5FC7F90 -:10BC2000C0F09A81730A00F08F80042B00F26F81BC -:10BC3000B30903F1390003F1380CC3009A4F3B44B8 -:10BC4000A3F108055B689D4206D10CE0002980F253 -:10BC50002781DB689D4206D05A6822F00302911BBF -:10BC60000F29F3DD60463D69DFF850C265457CD0A1 -:10BC70006A6822F00302931B0F2B00F37B81002BD9 -:10BC8000C7E904CC80F26C81B2F5007F80F01A81A4 -:10BC9000D308796801334FEA521E012202FA0EF2EC -:10BCA0000A4357F833E0C5F808E007EBC301083949 -:10BCB000E9607A6047F83350CEF80C5083100121C8 -:10BCC0009940914257D8114206D120F00300490013 -:10BCD000114200F10400FAD007EBC0094D46864638 -:10BCE000D5F80C80454508D11DE1002B80F2248158 -:10BCF000D8F80C80454500F01681D8F8042022F0D1 -:10BD00000302931B0F2BF0DD2046D8E9025408EB09 -:10BD1000060146F00106C8F80460EC60A56043F037 -:10BD20000104C7E90411C1E902CC4C6048F80230B3 -:10BD300000F0F4F908F1080502E00C232360002567 -:10BD4000284603B0BDE8F08F4FF4007340204FF059 -:10BD50003F0C73E7D3689A4208BF02307FF440AFCC -:10BD60003D69DFF858C1654582D17A6883100121A9 -:10BD700099409142A7D9BD686B6823F003094E45ED -:10BD800003D8A9EB06030F2B7ADCDFF834B1474B5D -:10BD9000DBF800201B680132334405EB090A00F090 -:10BDA000338103F580530F3323F47F6828F00F08A5 -:10BDB0004146204600F004FE411C024600F0F3809C -:10BDC000824500F2EE803A4B1968414419600846FA -:10BDD00000F04E81DBF80010019301311BBFA2EB94 -:10BDE0000A010918CBF80020196012F0070B00F0C7 -:10BDF0001781CBF108010A44CBF5805190440831FA -:10BE0000A1EB0801C1F30B0A51462046009200F055 -:10BE1000D7FD421CDDE9002300F04F81801A00EBC2 -:10BE20000A081968BA6048F001005144BD425060E8 -:10BE3000196000F02981B9F10F0F40F2278168687D -:10BE4000A9F10C0C2CF0070C00F0010040EA0C00EA -:10BE500068604FF0050E05EB0C00BCF10F0FC0E958 -:10BE600001EE00F2328150681546124B1A688A4280 -:10BE700038BF1960104B1A688A4238BF196094E0C5 -:10BE8000AA1943F0010346F001066E602046BA602D -:10BE9000536000F043F90835284603B0BDE8F08F41 -:10BEA000D9681A44A1E600BF944D0020F0B80020E4 -:10BEB000C0B80020E8B80020ECB800209C4D00205D -:10BEC0009C510020B2F5206F4FEA522363D3142B0C -:10BED00000F2B78003F15C01C9005B3307EB010E90 -:10BEE0007958AEF1080E8E4500F091804B6823F032 -:10BEF0000303934202D989688E45F7D1D1F80CE04B -:10BF00007A68C5E9021ECEF80850CD60D6E6142B3B -:10BF100059D9542B00F29D80330B03F16F0003F1CC -:10BF20006E0CC3008AE60EF1010E1EF0030F05F140 -:10BF300008057FF4D5AE51E0424445465368D8F831 -:10BF40000C1043F00103536055F8083F2046D960B8 -:10BF50008B6000F0E3F8F3E6F00806F1080237E63C -:10BF60002A442046536843F001035360083500F02B -:10BF7000D5F8E5E6A919204646F0010643F001048C -:10BF80006E60C7E90411C1E902CC4C60AB5000F00F -:10BF9000C5F80835D4E6930903F13901C9003833EF -:10BFA0009CE7BD425FD0BD68686820F00308464545 -:10BFB000A8EB060302D80F2B3FF762AF204600F034 -:10BFC000ADF80025BCE603F15C0003F15B0CC30097 -:10BFD00034E659F808394B4540F0968010F0030FCD -:10BFE00000F1FF30F5D17B6823EA01037B60490053 -:10BFF00099423FF6C0AE19B9BDE649000EF1040EF4 -:10C000001942FAD0704667E603F11008D0E69A109C -:10C010004FF001087B6808FA02F21A437A6070E771 -:10C0200002EB08014942C1F30B0A51462046009237 -:10C0300000F0C6FC431CDDE900237FF4EFAEDA46D6 -:10C04000EFE6542B25D8130B03F16F01C9006E33B3 -:10C0500044E7B3F5AA7F25D8F30B03F1780003F189 -:10C06000770CC300EAE5294B186840441860B1E634 -:10C07000CAF30B0CBCF1000F7FF4ACAEBD68C84432 -:10C0800048F001006860F0E61546EEE601235360D3 -:10C0900094E7B3F5AA7F23D8D30B03F17801C90045 -:10C0A00077331BE740F25452934223D8B30C03F189 -:10C0B0007D0003F17C0CC300C0E5ABF1080BD84454 -:10C0C000A8EB02084FF0000AABE605F10801204694 -:10C0D000009300F0FDFFBD68009B68681968C4E626 -:10C0E00040F254518B420BD8930C03F17D01C900EF -:10C0F0007C33F3E64FF47E737F204FF07E0C9DE59A -:10C100004FF47E717E23E9E67B6870E7C0B80020BB -:10C11000014800F07FBE00BFB8B80020014800F021 -:10C120007BBE00BFB8B8002010B4044C03460A46DA -:10C1300020685DF8044B194600F002B8B0510020A9 -:10C140002DE9F84F1746002900F098800C4607F1BA -:10C150000B058046FFF7DCFF162D54F8041C5BD856 -:10C1600010252A46AF425CD821F003069642A4F17E -:10C17000080962DABC4BD3F808C009EB0600844515 -:10C1800000F09780D0F804C02CF0010303445B68F2 -:10C19000DB0768D42CF0030C06EB0C03934247DA60 -:10C1A000CB0710D454F8083CA9EB030ADAF80430A2 -:10C1B00023F003018C44B444944580F21181731838 -:10C1C000934280F2E88039464046FFF7F1FC07468B -:10C1D000E0B154F8043C23F001034B44A0F1080201 -:10C1E000934200F0D280321F242A00F2F580132AF5 -:10C1F00000F2AC800346224611681960516859600C -:10C2000092689A602146404600F062FF4046FFF780 -:10C2100085FF3846BDE8F88F25F00705002D2A4632 -:10C22000A0DA0C23C8F8003000273846BDE8F88FA4 -:10C230001E46D0E90223D3609A60731B0F2B22D8CD -:10C24000D9F8043003F0010333434E44C9F80430F5 -:10C25000736843F00103736040462746FFF75EFFB3 -:10C260003846BDE8F88FC907ADD454F8083CA9EBAF -:10C27000030ADAF8041021F00301A0E7BDE8F84F43 -:10C280001146FFF795BCD9F8042009EB050102F02F -:10C2900001024E4443F001032A43C9F804204B60D5 -:10C2A000736843F0010308317360404600F010FFEB -:10C2B000D2E7DCF8040020F0030B06EB0B0C05F1D1 -:10C2C000100084454DDAC9073FF57DAF54F8081CCE -:10C2D000A9EB010ADAF8041021F003018B44B344FE -:10C2E00058453FF76CAF5746DAF80C1057F8080F6F -:10C2F000321F242AC160886000F2DB80132A40F2DA -:10C30000D6802168CAF808106168CAF80C101B2A88 -:10C3100000F2DF8008340AF11002216811606168C0 -:10C320005160A16891600AEB0501ABEB050242F098 -:10C33000010299604A60DAF8043003F001032B43EC -:10C340004046CAF80430FFF7E9FE6EE72368036051 -:10C35000636843601B2A68D804F1080200F10803EF -:10C360004AE709EB05029A60ACEB050343F00103D1 -:10C37000536054F8043C03F001032B43404644F857 -:10C38000043CFFF7CBFE27464FE750F8043C23F070 -:10C3900003031E4451E75746DAF80C1057F8080F0C -:10C3A000321F242AC16088604CD8132A48D92168DA -:10C3B000CAF808106168CAF80C101B2A56D808344D -:10C3C0000AF110021E462368136063685360A36875 -:10C3D0009360D1463C4630E7214600F0A1F911E7D1 -:10C3E000D0E902135746CB60996057F8081FDAF876 -:10C3F0000C30CB60321F242A99602DD8132A29D9FA -:10C400002368CAF808306368CAF80C301B2A42D87F -:10C4100008340AF1100322681A6062685A60A26840 -:10C420009A606646D1463C4607E7A3688360E368A6 -:10C43000C360242A26D004F1100200F11003DBE6C9 -:10C440003A46BFE7214638461E46D14600F068F915 -:10C450003C46F2E63B46DEE7214638466646D14694 -:10C4600000F05EF93C46E8E6944D0020A168CAF869 -:10C470001010E168CAF81410242A20D010340AF1F0 -:10C4800018029FE7236903616169416104F11802A1 -:10C4900000F11803B0E6A368CAF81030E368CAF8E0 -:10C4A0001430242A21D010340AF11803B3E73A4695 -:10C4B00033E72146384600F033F9164B33E722695B -:10C4C000CAF818206269CAF81C2018340AF1200240 -:10C4D00078E7A168CAF81010E168CAF81410242A95 -:10C4E0000DD010340AF1180217E72369CAF8183082 -:10C4F0006369CAF81C3018340AF120038BE72269FB -:10C50000CAF818206269CAF81C2018340AF12002FF -:10C5100003E700BF944D00200EB410B59DB06FF03E -:10C5200000411FABCDE906010491094953F8042BE2 -:10C530000290084C0868019302A9059400F0E6FEF9 -:10C54000029B00221A701DB0BDE8104003B0704776 -:10C55000B05100200802FFFF024A0349034800F0DF -:10C56000BBB800BFA45100203D120300804A002048 -:10C570000C4B4168994210B5044601D003F024F8F1 -:10C58000A168094B994202D0204603F01DF8E168EA -:10C59000064B994204D02046BDE8104003F014B881 -:10C5A00010BD00BFF4B800205CB90020C4B9002061 -:10C5B0002DE9F8432A4C2B4B2B48DFF8C090DFF8CD -:10C5C000C0802A4F1860002504230822294604F160 -:10C5D0005C00274E6566C4E90253C4E90055C4E90E -:10C5E0000455A56100F018F9224B6367082229461B -:10C5F00004F1C400C4E90749C4E90987C4E91A552C -:10C60000C4E91E55C4F8CC502567C4F88050E662D2 -:10C6100000F002F9184BC4F8DC30294604F1680335 -:10C62000082204F59670C4F88430C4E92298C4E95D -:10C630002476C4E93455C4E93855C4F83451C4F8F3 -:10C64000D850C4F8E85000F0E7F804F1D003C4E98A -:10C650003C98C4E93E76C4F8EC30BDE8F88300BFEE -:10C66000F4B800202CBA0020CDE10200ED14030044 -:10C670000D150300090001001200020089140300D7 -:10C68000AD14030010B504460A4800F0C3FB636B09 -:10C6900023B9094B094A1B68626323B1BDE8104006 -:10C6A000044800F0B9BBFFF783FFBDE81040014824 -:10C6B00000F0B2BBBCB800202CBA0020E5E10200BB -:10C6C000014800F0A7BB00BFBCB80020014800F043 -:10C6D000A3BB00BFBCB800202DE9F84380460F463D -:10C6E00016464FF00009D6E90154013D11D4A38943 -:10C6F000012B05F1FF3508D9B4F90E30013321467D -:10C7000003D04046B84749EA00096B1C04F16804AD -:10C71000EDD13668002EE6D14846BDE8F88300BF6B -:10C7200088420DD98B1883420AD900EB020CBAB1AA -:10C73000624613F801CD02F801CD9942F9D1704754 -:10C740000F2A0ED8034602F1FF3C4AB10CF1010C4E -:10C75000013B8C4411F8012B03F8012F6145F9D1FD -:10C76000704740EA01039B0750D1A2F1100370B556 -:10C7700001F1200C23F00F0501F1100E00F110045F -:10C78000AC441B095EF8105C44F8105C5EF80C5C6D -:10C7900044F80C5C5EF8085C44F8085C5EF8045CE5 -:10C7A00044F8045C0EF1100EE64504F11004E9D1E2 -:10C7B000013312F00C0F01EB031102F00F0400EB38 -:10C7C000031327D0043C24F003064FEA940C1E44C4 -:10C7D0001C1F8E465EF8045B44F8045FB442F9D136 -:10C7E0000CF1010402F0030203EB840301EB84016A -:10C7F00002F1FF3C4AB10CF1010C013B8C4411F8F1 -:10C80000012B03F8012F6145F9D170BD02F1FF3C06 -:10C8100003469BE72246EBE7830730B548D0541E1A -:10C82000002A3FD0CAB2034601E0013C3AD303F8E4 -:10C83000012B9D07F9D1032C2DD9CDB245EA052551 -:10C840000F2C45EA054536D9A4F1100222F00F0C51 -:10C8500003F1200EE6444FEA121C03F1100242E9F4 -:10C86000045542E9025510327245F8D10CF101022B -:10C8700014F00C0F03EB021204F00F0C13D0ACF108 -:10C88000040323F003030433134442F8045B93428C -:10C89000FBD10CF003042CB1C9B21C4403F8011BFA -:10C8A0009C42FBD130BD64461346002CF4D1F9E71D -:10C8B00003461446BFE71A46A446E0E7830710B5CF -:10C8C000044610D10268A2F1013323EA020313F0F7 -:10C8D000803F08D150F8042FA2F1013323EA02036C -:10C8E00013F0803FF6D003781BB110F8013F002B06 -:10C8F000FBD100F009FA204610BD00BF40EA010359 -:10C900009B0730B501D1032A0FD8844601F1FF3EC1 -:10C9100007E01EF8011F03F8011B541EC1B19C461D -:10C9200022466346002AF4D130BD0B4684461946A0 -:10C9300053F8045BA5F1013424EA050414F0803FA8 -:10C94000E4D1043A032A4CF8045B1946EFD8DDE73A -:10C950009444002CE8D003F8011B6345FBD130BDA3 -:10C9600041EA00039B0715D10B68A3F1013222EACB -:10C97000030212F0803F0DD101F1040C40F8043B9A -:10C9800061465CF8043BA3F1013222EA030212F093 -:10C99000803FF3D0034611F8012B184603F8012B12 -:10C9A000002AF8D1704700BF014B93F82801704767 -:10C9B000284C002013460A460146022000F0F4BA33 -:10C9C00038B5074D0022044608462A60FCF76CFB88 -:10C9D000431C00D038BD2B68002BFBD0236038BD32 -:10C9E00048BA002038B50C46084D8446114620460A -:10C9F0001A4600232B606446FBF710FC431C00D052 -:10CA000038BD2B68002BFBD0236038BD48BA00200E -:10CA1000014B1868704700BFB051002000000000B3 -:10CA2000000000000000000000000000A2EB030076 -:10CA3000704700BF02780B78012A28BF9A42F5D1CF -:10CA40006DE9044540EA0104CDE902676FF0000C8E -:10CA50004FEA447212B380EA010414F0070F6AD15E -:10CA600000F0070420F0070004F0030521F007019F -:10CA70004FEAC505F0E8042314F0040FF1E8046759 -:10CA80000CFA05F462EA040266EA04060AD063EAD4 -:10CA90000403624667EA0407664603E0F0E80423FD -:10CAA000F1E8046782FA4CF582EA0604A4FA8CF4F1 -:10CAB0006CBB83FA4CF583EA0705A5FA8CF595B9AA -:10CAC00050E9022351E9026782FA4CF582EA060432 -:10CAD000A4FA8CF483FA4CF583EA0705A5FA8CF5E1 -:10CAE0002543DBD09CB92DBAB5FA85F424F00704B0 -:10CAF00027FA04F1DDE9026723FA04F303F0FF00EB -:10CB000001F0FF01FDE80445A0EB0100704724BAE5 -:10CB1000B4FA84F424F0070426FA04F1DDE902678C -:10CB200022FA04F202F0FF0001F0FF01FDE80445E3 -:10CB3000A0EB0100704714F0030F3CD110F0030488 -:10CB400028D150F8082B51F8083B82FA4CF582EABC -:10CB50000305A5FA8CF55DB950F8042C51F8043C96 -:10CB600082FA4CF582EA0305A5FA8CF5002DE8D08F -:10CB70002DBAB5FA85F424F0070423FA04F122FA59 -:10CB800004F202F0FF0001F0FF01FDE80445A0EB14 -:10CB9000010070474FEAC40420F0030050F8082B4E -:10CBA00021F0030151F8083B0CFA04F462EA040294 -:10CBB00063EA0403C9E710F003041AD0A1EB0401EF -:10CBC00020F00300E40750F8042B06D00FD28B7836 -:10CBD0005FFAA2F4E41A06D12BB1CB785FFAB2F473 -:10CBE000E41A00D11BB920465DF8104B704701F1E3 -:10CBF000040150F8042BCC0721F0030151F8043B49 -:10CC000048D824D222F07F4482FA4CF594EA1325C6 -:10CC1000A5FA8CF50AD165B951F8043B84EA0204FF -:10CC2000B4EB036F0ED150F8042BEBE74FEA13235C -:10CC300055E035F07F454DD10878FDE80445C0F159 -:10CC4000000070474FEA126203F0FF0347E002EA78 -:10CC50001C4482FA4CF594EA1345A5FA8CF50AD1E6 -:10CC600065B951F8043B84EA0204B4EB034F0CD1DC -:10CC700050F8042BEBE74FEA134330E015EA1C456C -:10CC800028D10B884FEA124229E04FEA124203EA08 -:10CC90001C4324E002F0FF0482FA4CF594EA136589 -:10CCA000A5FA8CF50AD165B951F8043B84EA02046F -:10CCB000B4EB032F09D150F8042BEBE74FEA1363D1 -:10CCC0000DE015F0FF0F05D10B684FEA122223F09B -:10CCD0007F4304E04FF00000FDE80445704712BABE -:10CCE0001BBA82FA4CF482EA0304A4FA8CF5B5FA72 -:10CCF00085F402FA04F203FA04F34FEA1260FDE845 -:10CD00000445A0EB1360704780EA0102844612F0EC -:10CD1000030F4FD111F0030F32D14DF8044D11F034 -:10CD2000040F51F8043B0BD0A3F101329A4312F0E7 -:10CD3000803F04BF4CF8043B51F8043B16D100BFC0 -:10CD400051F8044BA3F101329A4312F0803FA4F151 -:10CD500001320BD14CF8043BA24312F0803F04BFD8 -:10CD600051F8043B4CF8044BEAD023460CF8013B45 -:10CD700013F0FF0F4FEA3323F8D15DF8044B7047EF -:10CD800011F0010F06D011F8012B0CF8012B002A2D -:10CD900008BF704711F0020FBFD031F8022B12F01C -:10CDA000FF0F16BF2CF8022B8CF8002012F47F4FD7 -:10CDB000B3D1704711F8012B0CF8012B002AF9D1DF -:10CDC000704700BF70B50D4E0D4D761BB61006D0E6 -:10CDD000002455F8043B01349847A642F9D1094E86 -:10CDE000094D761B05F00EFAB61006D0002455F852 -:10CDF000043B01349847A642F9D170BD381C00604D -:10CE0000381C00605C1C0060381C0060704700BF6C -:10CE1000704700BF704700BF704700BF01F0FF01BF -:10CE2000102A2BDB10F0070F08D010F8013B013A55 -:10CE30008B422DD010F0070F42B3F6D1F0B441EA87 -:10CE4000012141EA014122F007047FF0000700239D -:10CE5000F0E80256083C85EA010586EA010685FAF3 -:10CE600047F5A3FA87F586FA47F6A5FA87F68EB94D -:10CE7000EED1F0BC01F0FF0102F0070232B110F870 -:10CE8000013B013A83EA010313B1F8D10020704756 -:10CE900001387047002D06BF35460338073815F0B6 -:10CEA000010F07D1013015F4807F02BF013015F466 -:10CEB000C03F0130F0BC0138704700BF00000000E7 -:10CEC00000000000000000000000000090F800F0EA -:10CED0006DE9024520F007016FF0000C10F0070427 -:10CEE00091F820F040F049804FF000046FF0070007 -:10CEF000D1E9002391F840F000F1080082FA4CF2E9 -:10CF0000A4FA8CF283FA4CF3A2FA8CF34BBBD1E96E -:10CF1000022382FA4CF200F10800A4FA8CF283FAA0 -:10CF20004CF3A2FA8CF3E3B9D1E9042382FA4CF270 -:10CF300000F10800A4FA8CF283FA4CF3A2FA8CF305 -:10CF40007BB9D1E9062301F1200182FA4CF200F10C -:10CF50000800A4FA8CF283FA4CF3A2FA8CF3002BAB -:10CF6000C6D0002A04BF04301A4612BAB2FA82F2BE -:10CF7000FDE8024500EBD2007047D1E9002304F040 -:10CF80000305C4F100004FEAC50514F0040F91F841 -:10CF900040F00CFA05F562EA05021CBF63EA0503DE -:10CFA00062464FF00004A9E72DE9F047DFF87CA0C6 -:10CFB0000646DAF8000098460F469146FFF72AFF2A -:10CFC000184B1C6824B365681F2D24DC5EB96B1CEC -:10CFD0000235DAF80000636044F82570FFF71CFFA3 -:10CFE0000020BDE8F08704EB85010123C1F888909B -:10CFF000D4F88821AB401A43022EC4F88821C1F826 -:10D000000881E4D1D4F88C211A43C4F88C21DEE7DE -:10D01000054C1C60D7E7DAF80000FFF7FDFE4FF083 -:10D02000FF30DEE720B7002024B700201C4C002092 -:10D03000F8B5244F0C460646FFF76AF8BB685D68F2 -:10D04000C4F57E610F3125F003054B1923F47F638E -:10D0500023F00F03A3F58054B4F5805F07DB0021B4 -:10D060003046FFF7ADFCBB682B44984204D03046F5 -:10D07000FFF754F80020F8BD61423046FFF7A0FCEE -:10D0800001300DD0104ABB682D1B45F001055D60D5 -:10D09000136830461B1B1360FFF740F80120F8BDF2 -:10D0A00000213046FFF78CFCBA68831A0F2BDEDDB7 -:10D0B00043F001035360054B03491B68C01A086025 -:10D0C000D5E700BF944D0020C0B800209C5100203F -:10D0D000002961D0F8B50C460646FFF719F854F858 -:10D0E000042C7B4FA4F1080522F0010105EB010C93 -:10D0F000B868DCF80430604523F0030300F08B804F -:10D10000D207CCF8043032D454F8082CAD1A1144AC -:10D11000AA6807F1080082426AD00CEB0304D4F835 -:10D1200004E0EC68D4601EF0010FA26000F097806C -:10D1300041F001036B60CCF80010B1F5007F35D2EF -:10D140007868CB080122490901338A40024357F825 -:10D1500033107A6007EBC302083AC5E9021247F8B8 -:10D160003350CD603046BDE8F840FEF7D7BF0CEB3A -:10D1700003025268D00710D4194407F10800DCF804 -:10D180000830834273D0DCF80C20DA60936041F001 -:10D1900001036B606950D0E7704741F00103B1F5BE -:10D1A000007F44F8043CCCF80010C9D3B1F5206FDF -:10D1B0004FEA512348D28B0903F1390003F13802B9 -:10D1C000C300F818FB580838984259D05A6822F022 -:10D1D00003028A4202D99B689842F7D1D868C5E910 -:10D1E00002308560DD603046BDE8F840FEF796BF4E -:10D1F0000CEB03025268D20763D40B44DCE9021241 -:10D20000CA60916043F001026A603046EB50BDE8AD -:10D21000F840FEF783BF0B44D10707D454F8082C1D -:10D22000AD1A1344D5E90212CA60916043F00102BD -:10D230006A60284ABD6012689A4293D8264B3046ED -:10D240001968FFF7F5FE8DE7142B0AD9542B1FD868 -:10D250000B0B03F16F0003F16E02C300B1E7194439 -:10D260008DE703F15C0003F15B02C300A9E741F025 -:10D270000103C7E90455C5E902006B60695071E715 -:10D2800079689210012404FA02F20A437A60A6E750 -:10D29000B3F5AA7F06D8CB0B03F1780003F1770230 -:10D2A000C3008EE740F25452934206D88B0C03F130 -:10D2B0007D0003F17C02C30083E74FF47E737E227E -:10D2C0007FE741F001036B60CCF800104AE700BF34 -:10D2D000944D0020A0510020F0B8002082B049B148 -:10D2E0005AB16BB113780B601278101E18BF012071 -:10D2F00002B0704701A9002AF3D1104602B070476E -:10D300006FF00100F4E700BF000000002DE9F04FCE -:10D310002DED088BD1B00C460BEE101A90460893F9 -:10D32000834602F0CBFA036812931846FFF7CEFD4E -:10D3300020AF1090082200213846FFF76DFAA3892C -:10D340001B0603D52369002B00F0558700239FEDB2 -:10D35000838B9FED849BCDE92533CDE91333CDE954 -:10D36000153327AA0E9324929246119304934446B0 -:10D37000A1467E4BD3F8E450FFF716FB4A4603461E -:10D380001CA900975846A847002800F0B080C0F2BA -:10D39000A6801C9A252A034601D09944E9E7B9EBF7 -:10D3A0000405064640F0A78000234FF0FF328DF8B9 -:10D3B00067309846069309F1010999F80030039205 -:10D3C0002B25202609F10109A3F120025A2A00F297 -:10D3D000CF80DFE812F0E802CD00CD00E302CD00FF -:10D3E000CD00CD006A00CD00CD0005028402CD0045 -:10D3F0001002C902CD00BD025B005B005B005B0058 -:10D400005B005B005B005B005B00CD00CD00CD00EE -:10D41000CD00CD00CD00CD005301CD0083011A0217 -:10D42000530153015301CD00CD00CD00CD001502B5 -:10D43000CD00CD009602CD00CD00CD00AB01CD00DA -:10D44000AA02CD00CD00E306CD00CD00CD00CD0079 -:10D45000CD00CD00CD00CD005301CD008301DE0114 -:10D460005301530153017702DE017F00CD00890291 -:10D47000CD005F02E0062F027F00CD00AB017C00F3 -:10D48000B806CD00CD00BD06CD007C00A3F1300272 -:10D49000002119F8013B01EB810102EB4101A3F1ED -:10D4A0003002092AF5D906918EE7584602F006FAAD -:10D4B000436815931846FFF709FD1690584602F089 -:10D4C000FDF983681393169B002B40F02D8699F885 -:10D4D000003077E799F8003048F0200872E708221A -:10D4E00000213846FFF798F90123994441E7B9EB49 -:10D4F0000405064611D0269B2B442693259B013319 -:10D50000072BCAE9004525931CDC0AF1080A049B95 -:10D510002B440493002E7FF447AF269B002B41F051 -:10D520000B821BEE103AB3F90C3013F0400F049B42 -:10D5300018BF4FF0FF330493049851B0BDEC088B33 -:10D54000BDE8F08F1BEE101A24AA584603F0A4F988 -:10D550000028E6D10DF19C0AD9E700BF00000000C9 -:10D5600000000000FFFFFFFFFFFFEF7F284C0020BF -:10D570000B93002BD1D00021CDE90C118DF8DC30BC -:10D5800001238DF8671002930791059303910F9182 -:10D5900037AC18F00203099302D0029B02330293C6 -:10D5A00018F084030A9305D1069B029A9D1A002D58 -:10D5B00000F36983269A89B125990DF1670001313D -:10D5C0000132CAF8000007294FF001002692259188 -:10D5D000CAF8040000F3A2830AF1080A099B83B188 -:10D5E000259B1AA901330232CAF80010072B4FF00D -:10D5F000020126922593CAF8041000F3A3830AF1CE -:10D60000080A0A9B802B00F06C82039B05995D1A27 -:10D61000002D00F3A58218F4807F40F00D82059B59 -:10D62000CAF804301A44259BCAF800400133072B7E -:10D630002692259300F31B830AF1080A18F0040FC1 -:10D6400005D0069B02995C1A002C00F38883049B8A -:10D65000069902988142ACBF5B181B180493002AFC -:10D6600040F0B08200232593079B1BB107995846D1 -:10D67000FFF72EFD0DF19C0A4C4679E60B93089BB3 -:10D68000073323F00703B3EC028BB0EEC87BB4EE94 -:10D69000497BF1EE10FA089340F3E984B5EEC08BB4 -:10D6A000F1EE10FA01F159809DF86710AB4CAC4BCC -:10D6B00028F080080B9A472AC8BF1C460023CDE9F2 -:10D6C0000C33032207930292059203930F930029D0 -:10D6D0003FF45FAF029B013302935AE7432B0B9356 -:10D6E00003D018F0100F00F05D85089D082200217E -:10D6F00022A837ACFFF790F822AB55F8042B21464F -:10D70000584602F01DF903460133059001F0EE8200 -:10D71000059B089523EAE37302930021CDE90C11E0 -:10D720008DF86710079103910F9132E70B93089BD7 -:10D730001A4600238DF86730134653F8044B0893BC -:10D74000002C00F048850B9B532B00F0EC8618F062 -:10D7500010030C9340F0E786039B5D1C01F0E5800D -:10D760000C991A462046FFF759FB0790002801F054 -:10D770002883079B1A1B05920C9B039322EAE272F3 -:10D780000F930D93079373239DF8671002920B93E9 -:10D790009DE718F0200F0B93089B3DD0073323F033 -:10D7A00007031A4611465B6851F8082B0891194681 -:10D7B000002BC0F20C84039B013300F09E8228F002 -:10D7C000800052EA0103029040F09982039B002BF3 -:10D7D00040F09A82804600230393059350AC06E103 -:10D7E000089B53F8042B0692002A80F21984069AAB -:10D7F00008935242069299F8003048F00408E1E597 -:10D8000099F8003048F00808DCE548F0100818F0F6 -:10D81000200F0B93089BC1D118F0100F40F00B8420 -:10D8200018F0400F00F0038433F9042B0893D1174C -:10D830000B46BDE7089B48F00202029253F8042B06 -:10D84000089347F63003ADF868307820454B1193C4 -:10D85000002102230B900020039C8DF86700601CC0 -:10D8600000F0AD80029820F0800852EA010040F0FC -:10D87000A480002C40F0AE86002BACD1029B13F0AC -:10D880000103059300F0D18330238DF83F310DF271 -:10D890003F14ACE018F0200F40F0D48318F0100FC4 -:10D8A00040F09F8618F0400F40F0978718F4007FF3 -:10D8B00000F09786089B049953F8042B0893117085 -:10D8C0004C4655E599F80030682B03BF99F80130B4 -:10D8D00048F4007809F1010948F0400872E599F828 -:10D8E00000308DF867506DE599F800306C2B03BF60 -:10D8F00099F8013048F0200809F1010948F01008B2 -:10D9000060E50B9348F0100818F0200100F05183F7 -:10D91000089B073323F00703596853F8082B089333 -:10D9200028F480630293002395E70B9348F01003DB -:10D930000293029B13F0200100F02983089B073318 -:10D9400023F00703596853F8082B0893012382E753 -:10D9500099F8003048F0800834E500BF58440020B2 -:10D96000A436002060440020494611F8013B2A2BD0 -:10D9700001F04982A3F13002092A894698BF0021AB -:10D9800001F2448119F8013B01EB810102EB4101F5 -:10D99000A3F13002092AF5D9039115E599F8003071 -:10D9A00048F001080EE59DF86730002B7FF48FAD3D -:10D9B00099F800308DF8676004E5CDF80880012BF8 -:10D9C00000F09D81022B50AC20D1119802F00F0382 -:10D9D0001209C35C04F8013D42EA0172090952EAE6 -:10D9E0000103F3D150AB1B1BDDF808800593059AAA -:10D9F00003989DF8671082424FF00003B8BF0246BB -:10DA0000CDE90C33079302920F9360E602F007030F -:10DA1000D20842EA4172C908303352EA0105204671 -:10DA200004F8013DF2D1029AD10700F14D8250ABCA -:10DA30001B1B90460593DAE70B9B652B40F3D480C4 -:10DA4000B5EE408BF1EE10FA40F0C181259BBA494A -:10DA5000CAF80010013301320121072B26922593C9 -:10DA6000CAF8041000F351850AF1080A1B9B0E99AD -:10DA70008B4280F2D082109B12991A44CAE900139B -:10DA8000259B26920133072B259300F397830AF1F8 -:10DA9000080A0E9B5C1E002C7FF7D0AD102C259B36 -:10DAA00040F36E851BEE106A102505E00AF1080AA6 -:10DAB000103C102C40F364850133A0491032072B31 -:10DAC000CAE90015CDE92532F0DD24AA31465846D1 -:10DAD00002F0E2FE00287ED1DDE925320DF19C0A3C -:10DAE000E6E7069B02995D1A002D7FF78EAD102D9B -:10DAF000259B21DD099410261BEE104A04E0103D01 -:10DB0000102D0AF1080A16DD01338C491032072B5B -:10DB1000CAE90016CDE92532F1DD24AA214658468E -:10DB20000DF19C0A02F0B8FE002854D1103D102DD2 -:10DB3000DDE92532E8DC099C8049CAF8045001334C -:10DB40002A44072BCDE92532CAF8001000F32685B8 -:10DB5000039B05995D1A002D0AF1080A7FF75BAD5A -:10DB6000102D259B1FDD514610261BEE10AA04E048 -:10DB7000103D102D01F1080114DD01336F48103202 -:10DB8000072BC1E90006CDE92532F1DD24AA514673 -:10DB9000584602F081FEF0B9103D102DDDE9253226 -:10DBA00027A9EADC8A4601336449CAF804502A44AA -:10DBB000072BCDE92532CAF8001000F3DA810AF10B -:10DBC000080A28E51BEE101A24AA584602F064FE43 -:10DBD00000283FF447AD079B002B3FF4A2AC079908 -:10DBE0005846FFF775FA9CE40E9B012B40F37A81AF -:10DBF000259BCAF80040013301320121072B2692F0 -:10DC00002593CAF8041000F3F8810AF1080A109964 -:10DC1000129801330A44072BCAE90001CDE92532E5 -:10DC200000F3DD810AF1080AB5EE408BF1EE10FA3F -:10DC300000F077810E990133013901340A44072B32 -:10DC4000CAF800402593CAF80410269200F35B81BD -:10DC50000AF1080A1499CAF8041001330A44072B80 -:10DC60001EA9CDE92532CAF800107FF7E5AC1BEEFE -:10DC7000101A24AA584602F00FFE0028ABD1269AAB -:10DC80000DF19C0ADAE4102DDDE925122C4E24DD7D -:10DC9000179410231BEE104A084604E0103D102D87 -:10DCA0000AF1080A17DD013010320728CAE90063BB -:10DCB000CDE92502F2DD24AA214658460DF19C0A41 -:10DCC00002F0EAFD002886D1103D102DDDE9250285 -:10DCD0004FF01003E7DC179C014601312A44072965 -:10DCE000CDE92512CAF80060CAF8045000F3BD83DC -:10DCF0009DF867100AF1080A5DE4CDF808800A2A49 -:10DD000071F1000380F0458330320123DDF8088093 -:10DD10008DF83F2105930DF23F1468E61BEE101AB3 -:10DD200024AA584602F0B8FD00287FF454AF269A82 -:10DD30000DF19C0A52E400BF904400205C4A002090 -:10DD4000944400201BEE101A24AA584602F0A4FDA9 -:10DD500000287FF440AF269A0DF19C0A51E4102C64 -:10DD6000259BBE4E1FDD1BEE108A102504E0103CE3 -:10DD7000102C0AF1080A16DD01331032072BCAE90C -:10DD80000065CDE92532F2DD24AA414658460DF161 -:10DD90009C0A02F081FD00287FF41DAF103C102C7E -:10DDA000DDE92532E8DC01332244072BCAE90064AF -:10DDB000CDE925327FF74BAC1BEE101A24AA58464A -:10DDC00002F06AFD00287FF406AF269A3FE41B9913 -:10DDD000002940F35A830C9E0E9B9E42A8BF1E460C -:10DDE000002E0BDD259B01333244072BCAE9004688 -:10DDF0002692259300F389860AF1080A0C9D002ECD -:10DE0000A8BFAD1B002D00F303820C9B18F4806F9C -:10DE10002344059340F01F821B9B0E998B4203DB2A -:10DE200018F0010F00F0CF84109912980A44CAE943 -:10DE300000012599269201310729259100F3A58635 -:10DE40000AF1080A0E996518CC1A059BED1AA5422D -:10DE5000A8BF2546002D0DDDCAF80030259BCAF865 -:10DE6000045001332A44072B2692259300F3BB86E6 -:10DE70000AF1080A002DA8BF641B002C7FF7DEAB57 -:10DE8000102C259B40F37C831BEE106A102505E0C7 -:10DE90000AF1080A103C102C40F3728301337049D8 -:10DEA0001032072BCAE90015CDE92532F0DD24AA8E -:10DEB0003146584602F0F0FC00287FF48CAEDDE9D4 -:10DEC00025320DF19C0AE5E7302B3FF48BAD302372 -:10DED000023804F8013C50AB1B1ADDF808800593AA -:10DEE000044684E518F0010F7FF482AE259BCAF842 -:10DEF0000040013301320121072B26922593CAF8F5 -:10DF000004107FF7A5AE1BEE101A24AA584602F0A3 -:10DF1000C3FC00287FF45FAEDDE925320DF19C0AD9 -:10DF200098E60E994C1E002C7FF794AE102C40F30F -:10DF300061831BEE106A102505E00AF1080A103C07 -:10DF4000102C40F35783013345491032072BCAE99F -:10DF50000015CDE92532F0DD24AA3146584602F0FD -:10DF60009BFC00287FF437AEDDE925320DF19C0AD9 -:10DF7000E5E71BEE101A24AA584602F08DFC002893 -:10DF80007FF429AE269A0DF19C0AFFF744BB029B51 -:10DF900013F0100340F0C180029A12F0400200F02A -:10DFA0007A83089850F8042B0890194692B20123FE -:10DFB00051E418F0100355D118F0400200F05D83D1 -:10DFC000089850F8042B0890194692B2A8E45242DF -:10DFD00061EB4101CDF808802D2001233CE41BEECC -:10DFE000101A24AA584602F057FC00287FF4F3AD1B -:10DFF000DDE925320DF19C0A16E61BEE101A24AA63 -:10E00000584602F049FC00287FF4E5ADDDE92532F1 -:10E010000DF19C0AFBE518F0010F3FF40FAB2AE568 -:10E02000089399F80030FFF7CDB950ACDFE418F44D -:10E03000007F40F0DB8353F8042B0893D1170B4685 -:10E04000FFF7B6BB089B049853F8041B0893C2174C -:10E05000C1E900024C46FFF78BB900BF9444002091 -:10E060005C4A0020089B53F8042B089358E4B4EE54 -:10E07000488BF1EE10FA80F194860B9B612B00F037 -:10E080005285412B00F0C085039B01330B9B23F08D -:10E09000200500F08084472D04D1039B002B08BF8E -:10E0A0000123039318EE903A002B48F48072464601 -:10E0B000C0F21886B0EE48AB002390460993079350 -:10E0C0000B9B413B252B00F29883DFE813F06F0494 -:10E0D00096039603960368046C04960396039603CE -:10E0E0009603960396039603960396039603960368 -:10E0F0009603960396039603960396039603960358 -:10E100009603960396039603960396039603960347 -:10E1100096039603960368046C04089B53F8042B3B -:10E1200008930123FFF797BB139B002B3FF4CFA964 -:10E13000139B1B78002B3FF4CAA999F8003048F4D0 -:10E140008068FFF73FB90B93CDF80880FFF7F1BB6C -:10E150000B939A4B119318F0200100F00581089B56 -:10E16000073323F00703596853F8082B089318F076 -:10E17000010F0AD052EA010307D00B9B8DF86930DA -:10E18000302348F002088DF8683028F48063029349 -:10E190000223FFF760BB0B93FFF7B6BB0B93884BD3 -:10E1A0001193D8E7089B012153F8042B02918DF8B5 -:10E1B000DC200893059137ACFFF7AFBA1BEE101ABD -:10E1C00024AA584602F068FB00287FF404AD269A82 -:10E1D0000DF19C0A5DE4039B0794062B224628BFA1 -:10E1E000062303942146CDE90C22764C0293059335 -:10E1F0000F92FFF76CBA40215846FDF7D9FC20601A -:10E200002061002800F00F8640236361FFF79EB86D -:10E21000102D259B40F35D82514610261BEE10AA5F -:10E2200004E00831103D102D40F35282013366485E -:10E230001032072BC1E90006CDE92532F1DD24AA11 -:10E240005146584602F028FB00287FF4C4ACDDE9B3 -:10E25000253227A9E6E70E9BCDF82490E318039317 -:10E260000D9BCDF82880139E059DDDF85890DDF8B4 -:10E270003C800B941BEE101A5046002B34D0B8F1A2 -:10E28000000F35D10D9B013B013E0D93159BC0E95D -:10E290000039259B01334A44072B269225936CDCD9 -:10E2A0000830039B96F800C05B1B6345A8BF63461C -:10E2B000002B9A460CDD259C01341A44072CC0E93A -:10E2C00000532692259400F3778196F800C0083019 -:10E2D000BAF1000FACBFACEB0A046446002C0ADCB8 -:10E2E00065440D9B002BCAD1B8F1000F00F0AC8340 -:10E2F00008F1FF38CAE7102CDDF894C024DD05953D -:10E300004FF0100A63460D4604E0103C102C00F15B -:10E31000080016DD01332C491032072BC0E9001A22 -:10E32000CDE92532F1DD24AA2946584602F0B4FA97 -:10E3300000287FF450AC103C102CDDE9253227A8D2 -:10E34000E8DC2946059D9C460CF10103224444600B -:10E35000072B1D4C0460CDE9253200F3C68396F8E7 -:10E3600000C008306544BCE718F0100300F0C2801C -:10E37000089B53F8042B0893F9E624AA5846059104 -:10E3800002F08AFA00287FF426AC269A059927A87D -:10E3900087E70298CDF81CA050AC00F480600025FF -:10E3A0000AEE10BA094BDDF84CA0CDF81490A34644 -:10E3B0004FF00508AC46044610E000BF6044002062 -:10E3C00074440020884400205C4A0020CDCCCCCC92 -:10E3D0000A2A71F1000136D34A463146501840F1FD -:10E3E0000000A3FB005626F0030505EB9605401B35 -:10E3F000151A4FF0CC3661F1000E06FB05F6A5FBB1 -:10E40000039503FB0E6609F0010E2E44AEFB085E79 -:10E410002D184FEA590930350BF8015C49EAC679E5 -:10E420000CF1010C0BF1FF3B7608002CD0D09AF8D0 -:10E4300000008445CCD1BCF1FF0FC9D00A2A71F18C -:10E44000000180F08F815C4650AB1B1BDDF81490FF -:10E45000CDF84CA01AEE10BADDF81CA0DDF808804B -:10E46000CDF838C00593FFF7C2BA1BEE101A24AAE4 -:10E47000584602F011FA00287FF4ADAB9DF8671002 -:10E48000269A0DF19C0AFFF796B8259BBE48CAF85C -:10E490000000013301320120072B26922593CAF890 -:10E4A000040000F377810AF1080A002940F0AF80E8 -:10E4B0000E9908F001030B433FF4C0A8109B12997A -:10E4C0001A44CAE90013259B26920133072B259392 -:10E4D00000F352820AF1080A0E99CAF8004001338B -:10E4E0000A44072BCDE92532CAF804107FF7A4A807 -:10E4F000FFF7BDBB18F0400200F0DD80089850F82F -:10E50000042B0890194692B231E61BEE101A24AA89 -:10E51000584602F0C1F900287FF45DAB269A0DF150 -:10E520009C0AFFF7A3BA22AE0822002130461D94B0 -:10E53000FEF772F9039B5A1C00F0DB800025CDF832 -:10E540000890CDF81C809946A8460CE037A958469B -:10E5500001F0F6F9431C404400F0C883484508DC4C -:10E5600000F0188480461D9A525933460435002A1B -:10E57000ECD1CDF81480DDF80890DDF81C80C5E002 -:10E5800001338249CAF804402244072BCAF800101C -:10E59000CDE925327FF750A8FFF769BB1BEE101AB3 -:10E5A00024AA584602F078F900287FF414AB269A82 -:10E5B0000DF19C0AFFF729B824AA5846059102F0EC -:10E5C0006BF900287FF407AB96F800C0269A0599EE -:10E5D00027A87DE6012BCDF808807FF4F3A9FFF78B -:10E5E00093BB089B049953F8042B4C461160089385 -:10E5F000FEF7BEBE01336549CAF804402244072B2A -:10E60000CDE92532CAF800107FF722AB7BE4109BDE -:10E6100012981A44CAE90003259B26920133072B5E -:10E62000259300F3A9810AF1080A0029BFF654AF27 -:10E630004D42103180F20F831BEE101A102605E0B8 -:10E640000AF1080A103D102D40F3058301334F48AD -:10E650001032072BCAE90006CDE92532F0DD24AAE5 -:10E660005846039102F018F900287FF4B4AADDE9B6 -:10E67000253203990DF19C0AE4E7089B18F4007118 -:10E680001ABF114653F8042B53F8042B089318BFF4 -:10E69000D2B2FFF745B9029B13F40071089B1ABF71 -:10E6A000114653F8042B53F8042B089318BFD2B229 -:10E6B0000123FFF7D0B8089B18F400711ABF114668 -:10E6C00053F8042B53F8042B089318BFD2B24EE52D -:10E6D0008A4601332D49CAF804502A44072BCDE954 -:10E6E0002532CAF8001000F339810AF1080AFFF751 -:10E6F0008CBB0023194600961DAA584601F046F926 -:10E7000003460133059000F0F1821D94059B002B18 -:10E710004ED0632B00F318810023079337AC0822F7 -:10E7200000213046FEF778F8059D00962B461DAA7D -:10E730002146584601F02AF9854240F07C83059A2B -:10E740000023A35422EAE272CDE90C339DF867104E -:10E75000039302920F93FEF7BABF2D218DF8671035 -:10E76000FEF7A4BF169B1599ABEB030B1A46584650 -:10E77000FEF7C4F89AF80120054B0AB10AF1010A24 -:10E780004FF0000C28E600BF904400205C4A0020B7 -:10E79000CDCCCCCC1BEE101A24AA584602F07CF843 -:10E7A00000287FF418AA1B99269A0DF19C0A7CE692 -:10E7B000059B9DF867100F93CDE90233CDE90C332B -:10E7C0000793FEF784BF0E99059865182D1ACC1A89 -:10E7D000A542A8BF2546FFF74DBB089B049953F8F7 -:10E7E000042B089311804C46FEF7C2BD13F9042B8D -:10E7F0000893D1170B46FEF7DBBF039A022122AB29 -:10E8000001931DAB009358461BABB0EE4A0B02922E -:10E8100001F0B8F9472D029A044600F06181462DB7 -:10E82000104405D12378302B00F06F821B9A1044DE -:10E83000B5EE40ABF1EE10FA40F0468103461B1BEB -:10E840000E93472D00F01081462D00F0B5811B9BE3 -:10E850000C930C9B412D03F1FF331B9300F0E581DA -:10E860009DF82C200021002BB8BF0C9B8DF8782040 -:10E87000BABFC3F101032D222B22092B8DF8792079 -:10E8800040F3DA810DF18F05DFF81CC42A461046EB -:10E890008CFB0321DA17C2EBA10202EB8201A3EB8E -:10E8A0004101303100F8011C19466329134600F17B -:10E8B000FF32ECDC3033D9B2831E9D4202F8011CDA -:10E8C00040F28B8213460DF17A0201E013F8011B2E -:10E8D00002F8011B9D42F9D10DF191030DF17A026D -:10E8E0001B1A13441EAA9B1A14930E9B149A012BF5 -:10E8F0001A44059240F30382059B109A1344059332 -:10E9000026F48063059A43F480780023CDE90C3324 -:10E9100022EAE2720F930292099B002B40F0B18031 -:10E920009DF867100393FEF7D2BE2046FEF7CEFA9D -:10E9300002460590FEF720BF1BEE101A24AA584687 -:10E9400001F0AAFFFEF7EDBD591C5846FDF730F95E -:10E950000446002800F0CA810790E0E61BEE101A7A -:10E9600024AA584601F098FF00287FF434A9269A7B -:10E970000DF19C0AFFF749BA1BEE101A24AA58465B -:10E9800001F08AFF00287FF426A9DDE925321B99D2 -:10E990000DF19C0A49E606230393FFF783BB039B13 -:10E9A00002215A1C2BE7039A032128E71BA8B0EE8B -:10E9B0004A0B00F0F7FFB4EE007B20EE070BB5EE3C -:10E9C000400BF1EE10FA01D101231B93B348039BD6 -:10E9D000B3EE005B013B224604E0B5EE400BF1EEE6 -:10E9E00010FA13D020EE050BFDEEC07BB3F1FF3F14 -:10E9F00017EE901A415CB8EEE76B944630EE460B8A -:10EA000002F8011B194603F1FF33E6D1B6EE006BA5 -:10EA1000B4EEC60BF1EE10FA00F34881B4EE460BEB -:10EA2000F1EE10FA04D117EE903ADB0700F13E81C7 -:10EA3000002906DB4B1C1344302102F8011B9342D2 -:10EA4000FBD1131B0E93FCE60B9C0E9BDDF8249070 -:10EA5000DDF828801396E3189D42294628BF194601 -:10EA600082460591FFF7D8B91B9B0C93DA1C02DB99 -:10EA7000039A93420CDD0B9B023B0B9323F0200582 -:10EA8000E7E62D2100238DF867100393FEF722BEE1 -:10EA90000C9B0E9A9342C0F2BD80F0070C9B40F194 -:10EAA0003281109A13440593710503D50C9B002BFA -:10EAB00000F33581059B23EAE373029367230B93ED -:10EAC00000230F930D9327E7229B8342BFF4B7AE39 -:10EAD00030215A1C22921970229B9842F9D8AEE636 -:10EAE000F30700F1A780229BA9E624AA58460591C6 -:10EAF00001F0D2FE00287FF46EA896F800C0269A96 -:10EB0000059927A86544FFF7ECBB1BEE101A24AA51 -:10EB1000584601F0C1FE00287FF45DA8269A0DF149 -:10EB20009C0AFFF76BB978238DF8693030238DF894 -:10EB30006830039B632B48F0020600F3A680002395 -:10EB4000079337AC18EE903A002B48F481782BDB12 -:10EB5000B0EE48AB0B9B23F02005002309930B9BE1 -:10EB6000612B7FF4ADAAB0EE4A0B1BA800F01AFF90 -:10EB7000B4EE007B20EE070BB5EE400BF1EE10FA81 -:10EB800001D101231B93464821E71BEE101A24AA4A -:10EB9000584601F081FE00287FF41DA81B9B269A91 -:10EBA0000DF19C0AFFF74EB90B9B23F020052D2396 -:10EBB0000993B1EE48ABD2E71B9A0C92002A06F0FB -:10EBC000010340F30D8103990B4340F0CF800C9B70 -:10EBD000059366230B93720500F1A380059B23EA3E -:10EBE000E37302936CE71BEE101A24AA584601F057 -:10EBF00053FE00287EF4EFAF1B9C0E9B269A1C1B35 -:10EC00000DF19C0AFFF736B958238DE700220392D5 -:10EC1000FEF7DABB0E9B109A9A180C9B0592002BFC -:10EC200040F3AB8067230B93D5E70B9A0F32D2B238 -:10EC3000012118E6A018FBE5002940F0A880302249 -:10EC40008DF87A200DF17B02303302F8013B1EABC8 -:10EC5000D31A149349E601331249CAF804502A44DE -:10EC6000072BCDE92532CAF800107FF733AC1BEE35 -:10EC7000101A24AA584601F00FFE00287EF4ABAF0C -:10EC8000DDE925320DF19C0A26E4591C5846FCF7B3 -:10EC90008FFF044650B3079054E700BF7444002030 -:10ECA000604400205C4A002067666666CDF888C034 -:10ECB00012F8011C90F80FC0614513460AD14FF0BD -:10ECC000300E03F801EC229B591E229113F8011C0F -:10ECD0008C45F6D0392916BF0131817AC9B203F8C3 -:10ECE000011CAEE600239046079360E71BEE102A56 -:10ECF000B2F90C3043F040039381FEF716BCF507E0 -:10ED00007FF5FEADF8E50593CEE6B5EE40ABF1EE4E -:10ED100010FA3FF48BADC2F101021B9287E5672325 -:10ED20000B9313990B78FF2B79D000250C9A28466A -:10ED300003E001300131FF2B08D0934206DAD21AEA -:10ED40004B78002BF5D10B780135F4E70C92139139 -:10ED50000D900F950F9A0D9B16991344059A01FB80 -:10ED60000323059323EAE3730293D5E5109BD3189D -:10ED70001944662305910B932DE7C3F101031A444F -:10ED800022EAE2730293672305920B9398E60DF152 -:10ED90007A0259E7039BDDF80890DDF81C800593A3 -:10EDA000B4E418EE903A002BB4BF2D219DF8671003 -:10EDB000254C264BB8BF8DF8671028F08008FEF769 -:10EDC00079BC039B0293059373239DF8671003900E -:10EDD0000F900D900B93FEF77ABC0223149384E5F9 -:10EDE000039A134305D10123662202930B920593E4 -:10EDF00066E6109B01331A4422EAE273029366230B -:10EE000005920B935CE6089A99F80130894652F80E -:10EE1000041B089241EAE1710391FEF7D3BA002383 -:10EE20000F930D9396E70C23CBF800304FF0FF3390 -:10EE30000493FEF781BB1BEE102A938943F0400335 -:10EE40009381FEF7C8BE00BF5C440020A0360020BE -:10EE5000436C70B505460C464BB153F8240080B1A5 -:10EE6000026843F824200023C0E9033370BD212247 -:10EE70000421FCF751FE034668640028EDD1002010 -:10EE800070BD012101FA04F6721D92002846FCF7BC -:10EE900043FE0028F3D0C0E90146E4E731B1436CFA -:10EEA0004A6853F82200086043F82210704700BFF8 -:10EEB0002DE9F0410E6980460F461D4601F1140E02 -:10EEC0000020DEF800108CB202FB0453090C4FEA5C -:10EED000134C02FB01CC01309CB204EB0C44864283 -:10EEE0004EF8044B4FEA1C45EBDC3DB1BB68B34226 -:10EEF00007DD07EB860301365D613E613846BDE8FC -:10EF0000F081796840460131FFF7A2FF0446B0B1B5 -:10EF10003A69023207F10C0192000C30F9F7BAFDA0 -:10EF2000D8F844307A6853F82210396043F82270D8 -:10EF3000274607EB860301365D613E61DEE7034B42 -:10EF400003482246BA2100F069FD00BF6842002054 -:10EF50007C420020030C1B04D3B90004102310F0E2 -:10EF60007F4F04BF0002083310F0704F04BF000150 -:10EF7000043310F0404F04BF80000233002805DB4B -:10EF800010F0804F03F1010308BF2023184670479B -:10EF90000023E4E7036813F0070208D0D9071FD461 -:10EFA0009A0722D55B08036001221046704799B288 -:10EFB00009B91B0C1022D9B209B908321B0A19076A -:10EFC00004BF1B090432990704BF9B080232D9070A -:10EFD00003D45B0802F1010205D0036010467047BC -:10EFE0000022104670472022DFE79B0802220360C0 -:10EFF0001046704738B5436C04460D464BB158680F -:10F00000B0B102685A6000220123C0E90435C26031 -:10F0100038BD21220421FCF77FFD034660640028EF -:10F02000EDD1094B0948002240F2451100F0F6FCF1 -:10F030001C2201212046FCF76FFD0028F1D001229F -:10F040000223C0E90123DEE7684200207C42002061 -:10F050002DE9F04F0E691569AE4285B08846144619 -:10F0600005DB2A46234635460C4616469846A368D5 -:10F070006168AF19BB42B8BF0131FFF7E9FE0190EB -:10F08000002800F08780019B03F1140909EB870A2F -:10F09000D14505D24B46002243F8042B9A45FBD8B4 -:10F0A00008F1140808EB860B04F11403D8451A463E -:10F0B00003EB85055FD22B1B153B23F003030433C1 -:10F0C0001534A54238BF0423CDE902A7AC461F463C -:10F0D000924605E0090C29D1C34509F1040948D934 -:10F0E00058F8041B8DB2002DF4D056464C46002330 -:10F0F00056F8041B22681FFA81FE90B2090C05FB2A -:10F100000E00120C034405FB012202EB13429BB2DA -:10F1100043EA0243B44544F8043B4FEA1243E7D8BC -:10F1200049F8073058F8041C090CD5D0D9F800303C -:10F1300050461A464C4600260588120C01FB052253 -:10F1400016449BB243EA064344F8043B50F8045B80 -:10F1500022682D0C93B201FB053303EB1643844563 -:10F160004FEA1346E8D8C34549F8073009F10409C6 -:10F17000B6D8DDE902A7002F02DC05E0013F03D08D -:10F180005AF8043D002BF9D0019B18461F6105B0C9 -:10F19000BDE8F08F034B0448019A4FF4B17100F0C1 -:10F1A0003DFC00BF684200207C42002012F00303B7 -:10F1B0002DE9F0411446064632D10D46A41020D068 -:10F1C000D6F84080B8F1000F33D0E3074FF00007C6 -:10F1D00007D4641015D0D8F80000A8B18046E30722 -:10F1E000F7D5424629463046FFF732FFB5B1696888 -:10F1F000736C641053F821202A6043F821500546AF -:10F20000E9D12846BDE8F081424641463046FFF745 -:10F210001FFFC8F8000007608046E0E70546D8E712 -:10F22000013B0F4A52F823200023FFF741FE054619 -:10F23000C4E701213046FFF70BFE804640B10123B1 -:10F2400040F27122C0E90432002330640360BCE75D -:10F25000044B0548424640F2451100F0DFFB00BF79 -:10F26000C4470020684200207C4200202DE9F0477E -:10F270000D4614462F69AB68496807EB62177E1C80 -:10F280009E4280464FEA621904DD5B009E4201F116 -:10F290000101FADC4046FFF7DBFD8446002852D02E -:10F2A000B9F1000F00F114020EDD09F105014FEA7A -:10F2B000810E134600EB8101002043F8040B8B42C2 -:10F2C000FBD1AEF114031A44296905F1140314F0BB -:10F2D0001F0E03EB81012ED0CEF1200910464FF016 -:10F2E000000A1C6804FA0EF444EA0A0440F8044BCD -:10F2F00053F8044B994224FA09FAF2D84B1B153BF8 -:10F3000023F00303043305F11500814238BF0423C1 -:10F31000BAF1000F18BF374642F803A0D8F84430BE -:10F320006A68CCF8107053F822102960604643F8E0 -:10F330002250BDE8F087043A53F8040B42F8040F5A -:10F340009942F9D8EAE7034B034862464FF4EF715C -:10F3500000F064FB684200207C4200200B69844678 -:10F360000069C01A16D10CF1140C14310CEB830295 -:10F3700010B401EB830301E0944508D252F8044D28 -:10F3800053F8041D8C42F7D005D24FF0FF305DF8E2 -:10F39000044B7047704701205DF8044B704700BF75 -:10F3A0002DE9F84F0F691369FF1A002F0E4690469A -:10F3B0007FD101F11405143202EB830205EB8303C4 -:10F3C00001E09D4278D253F8041D52F8044DA14249 -:10F3D000F7D069D37168FFF73BFD8146002877D0ED -:10F3E0003569D8F81020C76008F1140E06F1140032 -:10F3F00009F1140A06F110010EEB820200EB8507F9 -:10F4000056464FF0000C5EF8044B51F804BFA3B20F -:10F410001CFA8BFCACEB03034FEA144CCCEB1B4CFB -:10F420000CEB234C9BB243EA0C43724546F8043B79 -:10F430004FEA2C4CE7D8A2EB0801153908F1150862 -:10F44000424521F0030404F1040438BF042420449D -:10F4500021F0030238BF002287425244544418D995 -:10F460002646014651F8043B1CFA83FC4FEA2C4225 -:10F4700002EB13421FFA8CFC4CEA02438F4246F81F -:10F48000043B4FEA224CEDD8013F3F1A27F0030717 -:10F49000E21923B952F8043D013D002BFAD0C9F816 -:10F4A00010504846BDE8F88F334601274646984637 -:10F4B00090E7F9DB00278DE70021FFF7C9FC8146C3 -:10F4C00068B101220023C9E904234846BDE8F88F4A -:10F4D000064B07484A4640F2452100F09FFA034B8D -:10F4E00003484A4640F2372100F098FA684200206B -:10F4F0007C4200202DE9F043884683B0012157EC7F -:10F50000106B1546FFF7A4FC0446002851D0C7F342 -:10F510000A59C7F31303B9F1000F01D043F4801364 -:10F52000002E019318D101A8FFF734FD019A626102 -:10F53000012200F120032261B9F1000F25D0A9F2C8 -:10F54000334909EB03022046C3F13503C8F8002014 -:10F550002B6003B0BDE8F08368460096FFF71AFD04 -:10F56000034610B3DDE90002C3F1200102FA01F104 -:10F570000143DA4061610192002AA26114BF0222B4 -:10F5800001222261B9F1000FD9D1A3F23243C8F8A8 -:10F59000003004EB82031869FFF7DCFCC0EB421378 -:10F5A00020462B6003B0BDE8F083009A6261019AA7 -:10F5B000E2E7034B0348224640F20F3100F02EFAF7 -:10F5C000684200207C42002070B500294BD00646DE -:10F5D0000C4610B1436B002B48D0636ED80734D56E -:10F5E000B4F90C30002B3ED02146304600F050F8E4 -:10F5F000E36A054633B1E169304698470028B8BF51 -:10F600004FF0FF35A3891A063CD4216B41B104F1B8 -:10F610004003994202D03046FDF75AFD0023236390 -:10F62000616C21B13046FDF753FD00236364FDF7A3 -:10F6300047F8636E0022DB07A2811FD5A06DFDF79E -:10F64000E7FBFDF743F8284670BDA3899905CBD4A5 -:10F65000A06DFDF7DFFBB4F90C30002BC4D1656E53 -:10F6600015F0010505D00025284670BDFDF70AF804 -:10F67000B3E7A06DFDF7D0FB284670BDA06DFDF788 -:10F68000CBFBDBE721693046FDF722FDBDE700BF7C -:10F69000B1F90C202DE9F0410C461107804647D402 -:10F6A000636842F40062002BA2815EDDA56A002D32 -:10F6B00058D00023D8F80060C8F8003093B212F494 -:10F6C000805256D10123E1694046A847431C67D0C8 -:10F6D000A389A56A5F0705D56368C01A236B0BB1C0 -:10F6E000E36BC01AE169024600234046A847411C6B -:10F6F00041D1D8F80030002B3DD01D2B01D0162B66 -:10F7000056D1A3892269226023F40063002161603D -:10F71000A381216BC8F8006021B304F14003994232 -:10F7200002D04046FDF7D4FC00202063BDE8F08104 -:10F730002669BEB193B2256826609A070CBF63693B -:10F740000023AD1BA3600BE02B463246E169676ADC -:10F750004046B847B0F1000CA5EB0C05664417DD38 -:10F76000002DF1DC0020BDE8F081E36B002B9DDC77 -:10F77000F8E7206DAEE7B4F90C302269226023F47B -:10F780000063A3810022DB046260C2D52065C0E76C -:10F79000A38943F040034FF0FF30A381BDE8F0811F -:10F7A000D8F80030002B93D01D2B06D0162B04D098 -:10F7B000A38943F04003A381D5E7C8F80060D1E7EF -:10F7C00038B50C46054608B1436B03B3B4F90C00D9 -:10F7D00088B1636EDB0701D481050FD52846214629 -:10F7E000FFF756FF636EDA07054602D4A3899B052F -:10F7F00008D5284638BD0546284638BDA06DFDF71A -:10F8000009FBEBE7A06DFDF707FB284638BDFCF7C9 -:10F8100039FFDBE710B50C46B1F90E1000F07AF8AD -:10F82000002803DB236D0344236510BDA38923F463 -:10F830008053A38110BD00BF2DE9F0410C46B1F902 -:10F840000C101F46CB05054616460BD421F48051FB -:10F85000A1813B46B4F90E1032462846BDE8F0417E -:10F86000FDF7C0B8B4F90E100223002200F03CF8F6 -:10F87000B4F90C10EAE700BF10B50C46B1F90E1050 -:10F8800000F032F8A389421C0EBF23F4805343F4E6 -:10F8900080532065A38110BDB1F90E1000F012B89D -:10F8A00049B1FF2A02D80A70012070478A230360F9 -:10F8B0004FF0FF3070470846704700BF0048704760 -:10F8C000184D002038B5074D0022044608462A602E -:10F8D000F9F706FC431C00D038BD2B68002BFBD089 -:10F8E000236038BD48BA002038B50C46084D844620 -:10F8F000114620461A4600232B606446F9F7FCFBAC -:10F90000431C00D038BD2B68002BFBD0236038BDD2 -:10F9100048BA002038B50C46084D844611462046AA -:10F920001A4600232B606446F9F7D8FB431C00D02D -:10F9300038BD2B68002BFBD0236038BD48BA0020AF -:10F9400070B5054684B05BB11C4669B10E4B2846C4 -:10F95000D3F8E0602346B047431C0FD004B070BD1D -:10F9600000F582740029F1D1074A2346D2F8E060FD -:10F9700028460A4601A9B047431CEFD100228A233A -:10F9800022602B6004B070BD284C002010B582B0FE -:10F99000049CCDE900344FF0FF3302F02DFB02B0A0 -:10F9A00010BD00BF30B482B08DED000B019A194C30 -:10F9B00022F000430021A342016021DC009C1C4393 -:10F9C0001ED0154C144054B99FED107B20EE077BE0 -:10F9D0008DED007B019A6FF0350122F0004322F09B -:10F9E000FF42DDE9004522F4E00242F07F551B159D -:10F9F00045F40015A3F2FE33CDE900450B44036046 -:10FA00009DED000B02B030BC704700BF000000004D -:10FA100000005043FFFFEF7F0000F07F00B50B4C6C -:10FA200025681446EE681A4685B003460D464CB16B -:10FA300007490095CDE901143046064900F018FF4A -:10FA4000F9F760FB04490C46F3E700BFB051002012 -:10FA50002842002038420020583C00202DE9F04F79 -:10FA600003690C69A34283B0C0F28780013C01F1B5 -:10FA70001405A30000F11408009355F8243058F839 -:10FA80002420013381469A4208EB840005EB840769 -:10FA90000190B2FBF3F63BD34FF0000CAE4640466C -:10FAA000E24663465EF804BB02681FFA8BFC06FB65 -:10FAB0000C334FEA134C4FEA1B4B06FB0BCC9BB2AB -:10FAC000AAEB03031FFA8CFA13FA82F3CAEB124271 -:10FAD00002EB23429BB243EA0243774540F8043BE2 -:10FAE0004FEA224A4FEA1C43DCD2009B58F803300D -:10FAF00073B9019B043B984504D307E0984504F192 -:10FB0000FF3403D253F80429002AF7D0C9F8104073 -:10FB10004846FFF723FC00282BDB01364146002333 -:10FB200055F8040BD1F800C082B29A1A030C12FAED -:10FB30008CF2C3EB1C4303EB224392B242EA034232 -:10FB4000AF4241F8042B4FEA2343E9D258F824206E -:10FB500008EB84036AB9043B984504D307E0984551 -:10FB600004F1FF3403D253F80429002AF7D0C9F86E -:10FB70001040304603B0BDE8F08F002003B0BDE870 -:10FB8000F08F00BF2DE9F04F2DED028B8FB08DED82 -:10FB9000020B0191816B1A9D059357EC106B044683 -:10FBA000934641B1C26B4A60012393408B60FFF7DB -:10FBB00075F90023A363B7F10008B4BF0123002344 -:10FBC0002B60BE4BBCBF28F00048CDF80C8033EA58 -:10FBD000080300F09F809DED028BB5EE408BF1EEA7 -:10FBE00010FA11D1059A012313601B9B002B00F022 -:10FBF0003F82B34B1B9A1360013B009300980FB0F8 -:10FC0000BDEC028BBDE8F08F0CAA0DA92046B0EE2A -:10FC1000480BFFF76FFC5FEA1853054640F09280EF -:10FC2000DDE90C130B4403F23242202A40F3FA823E -:10FC3000C2F1400208FA02F803F21242D64048EA42 -:10FC4000060207EE102AB8EE477B581E17EE906AA0 -:10FC500053EC172B4FF0010AA6F1F8739FED913B7F -:10FC60009FED927B9FED935B06EE900A43EC122B87 -:10FC7000B8EEE64BB7EE086B32EE466BA6EE037BB2 -:10FC8000A4EE057BFDEEC76BB5EEC07BF1EE10FA7E -:10FC900016EE907A08D5B8EEE66BB4EE476BF1EE4F -:10FCA00010FA18BF07F1FF37162F00F24581854B78 -:10FCB00003EBC70393ED007BB4EEC78BF1EE10FAB4 -:10FCC00057D5091A0023B1F1010807F1FF370A934C -:10FCD00000F1398100230693002F52DA069B049726 -:10FCE000DB1B06937B420893019B092B4FF0000717 -:10FCF0004ED8052B40F39D82043B01930026019BC7 -:10FD00009A1E032A00F22581DFE812F0AA03A70356 -:10FD10009D037E03059AC8F3130842F20F7358EA55 -:10FD2000060813601ED11B9B002B00F09185664BCB -:10FD3000009308331B9A009813600FB0BDEC028B40 -:10FD4000BDE8F08F18EE906AC6F31306A3F2FF30F9 -:10FD500053EC182B46F07F530C994FF0000A43F4F4 -:10FD600040137BE71B9B002B40F03B83574B0093DA -:10FD700044E7091A0023B1F101080A9300F1E38076 -:10FD8000069300230893019B0497092BB844B0D92C -:10FD900000230126019307964FF0FF399B4600216F -:10FDA000E163CDF82C902046FFF752F80090002830 -:10FDB00000F04085009BA363B9F10E0F00F2DC80D8 -:10FDC000002E00F0D980049B002B40F3DE833D4AD7 -:10FDD00003F00F0102EBC10292ED007B1A11DB056B -:10FDE00040F182833A4991ED086B02F00F02032043 -:10FDF00088EE065B5AB13649D60704D591ED006B03 -:10FE0000013027EE067B521001F10801F4D185EE96 -:10FE1000076B0A9B3BB1B7EE007BB4EEC76BF1EE0C -:10FE200010FA00F1AE8407EE900AB8EEE75BB1EE8F -:10FE30000C7BA5EE067B17EE902A51EC170BA2F176 -:10FE40005071B9F1000F00F08883049E4A46079B69 -:10FE5000002B00F04784B6EE003B1A4BFDEEC64B7C -:10FE600003EBC20CB8EEE47B36EE477B1CED026B75 -:10FE700083EE065B41EC160B14EE900A35EE465B02 -:10FE80000099B4EEC75B3030F1EE10FA01F8010BC7 -:10FE900000F3AC84B7EE002BB2EE044B4FF0000C35 -:10FEA00031E000BF61436F63A787D23FB3C8608B67 -:10FEB000288AC63FFB799F501344D33F0000F07F50 -:10FEC00091440020F8020020E4430020F043002089 -:10FED000D00200200CF1010C94454DDA27EE047B92 -:10FEE00025EE045BFDEEC76B16EE903AB8EEE63BEE -:10FEF000303337EE437BB4EEC57BF1EE10FA01F8F8 -:10FF0000013B00F1738432EE476BB4EEC56BF1EE4A -:10FF100010FADFD5009A049602E08A4200F050847D -:10FF2000894611F8013D392BF7D00133DBB20B7054 -:10FF3000049B0133049355E1091A0123B1F101082F -:10FF40000A937FF5C7AEC1F1010306934FF0000895 -:10FF5000C2E60026E66331462046FEF779FF0090B0 -:10FF6000002800F06784009BA3634FF0FF330B93DE -:10FF700099460123B34607930D9A002A55DB04994D -:10FF80000E2952DCB74BBBF1000F03EBC10393ED1D -:10FF9000006B15DAB9F1000F12DC40F0F282B1EE1D -:10FFA000047B26EE077BB4EEC78BF1EE10FACA464F -:10FFB0004E4600F26D82DDF800806FEA0B0B70E2B6 -:10FFC00088EE067BBDEEC77B009917EE103AB9F1BB -:10FFD000010F03F13003B8EEC75B01F8013BA5EE5A -:10FFE000468B00F03483B2EE044B012311E088EE1F -:10FFF000067BBDEEC77B013317EE102A4B4502F19D +:100000007F02E0705971B4F80330FD2B3FF667AF03 +:10001000E11801334A71E37061E700BF4268D2F82A +:100020000821D26D520700D47047C26B00B590F81A +:100030002DE092F809C0E64501D05DF804FB90F888 +:100040002CE092F800C0E645F7D1B2F803200A2A66 +:10005000F3D990F844309B07EFD45DF804EBF9F73F +:100060007DBA00BF4268D2F80821D26D520705D58B +:10007000C26B90F82DC0517A8C4500D0704790F833 +:100080002CC011788C45F9D1B2F803200A2AF5D991 +:1000900090F844309B07F1D4FAF72EB94268D2F8B1 +:1000A0000821D26D520700D47047C26B00B590F89A +:1000B0002DE092F809C0E64501D05DF804FB90F808 +:1000C0002CE092F800C0E645F7D1B2F803200A2AE6 +:1000D000F3D990F844309B07EFD45DF804EBF9F7BF +:1000E0007BB900BFC26B10B5537B04467D2B47D84C +:1000F000DFE803F0474B4F4646575F46673F6B6F5D +:100100008C469498A0A8B0B8D74646464646464680 +:10011000464646464646464646464646464646467F +:10012000464646464646464646464646464646466F +:10013000464646464646464646464646464646465F +:10014000464646464646464646464646464646464F +:10015000464646464646464646464646464646463F +:10016000464646464646464646464646464646462F +:1001700046DB4368D3F80831DB6D580700F19980FE +:1001800010BDBDE81040FFF72BB8BDE81040FFF7E9 +:100190000DBA90F84410BDE8104001F00101FFF7DE +:1001A0009BBC90F84410BDE8104001F00101FFF73E +:1001B000E3BA90F84410BDE8104001F00101FFF7E8 +:1001C000DBBBBDE81040FFF761BABDE81040FFF7A8 +:1001D0001BBE4368D3F80831DB6D5B07D0D590F8C0 +:1001E0002D10537A9942CBD190F82C101378994264 +:1001F000C6D1B2F803300A2BC2D990F84430980720 +:10020000BED42046BDE81040F9F7C2B890F84410BB +:10021000BDE8104001F00101FFF700BFBDE810404C +:10022000FFF720BF90F84410BDE8104001F0010135 +:10023000FFF734BF90F84410BDE8104001F0010111 +:10024000FCF7C4BC90F84410BDE8104001F0010177 +:10025000FCF79ABE90F84410BDE8104001F001018F +:10026000FDF706B84368D3F80831DB6D590787D529 +:1002700090F82D10537A994282D190F82C1013786F +:1002800099427FF47DAFB2F803300A2B7FF678AF46 +:1002900090F844309B073FF573AFBDE81040FCF782 +:1002A00043BABDE81040FCF7E3BBBDE81040FFF7E0 +:1002B00047BA94F82D10537A99427FF461AF94F8BD +:1002C0002C10137899427FF45BAFB2F803300A2BFD +:1002D0007FF656AF94F8443099073FF551AFDA07EF +:1002E0007FF54EAF04490548F8F718FF236B23F05C +:1002F0001003236310BD00BFD43D0020684C0020D4 +:10030000000000002DE9F04F0C4685B00546F8F7D7 +:100310009DFC04EB441341F25C5204EB83031A444A +:10032000852312FA80F84FF4AB5213FB0423EA68DA +:100330002C681FFA88F8B2F860201C44D20721D537 +:10034000002160480AF03AFB5F4807F0CFFF032125 +:100350005E480AF033FB01215D480AF02FFB0821BB +:100360005C480AF02BFB012159480AF027FB0821C1 +:1003700059480AF023FB012155480AF01FFB08F0F9 +:1003800033FBA8620E2155480AF018FB08F18509D5 +:1003900008F10103524E05F11007A8EB0408994536 +:1003A00034BF4FF001094FF0850933684FF0000A60 +:1003B000DFF830B1A1442B6206E033682A6A9B1A49 +:1003C000F92B1DD84C4523D004EB080114F8013B50 +:1003D000384601918DF80F3003F0F4F89DF80F3096 +:1003E00001999842E9D001230DF10F0238460AF134 +:1003F000010A02F0DDFF33682A6A9B1AF92BE1D962 +:10040000012158460AF0DAFA33684C452B62DBD1F9 +:10041000012134480AF0D2FA2B4807F067FF09217E +:1004200031480AF0CBFA012129480AF0C7FA002323 +:100430000A225146244807F075FF012124480AF09A +:10044000BDFA052129480AF0B9FA1F4807F04EFF06 +:10045000EB68B3F86030DB0702D405B0BDE8F08F7D +:10046000042123480AF0AAFA012119480AF0A6FA41 +:1004700008F0BAFAAB6A0221C31A134807EE103A21 +:100480009FED0E0BB8EE477B87EE000B07F05EFF8B +:1004900001210F480AF092FA0C2116480AF08EFA50 +:1004A000094807F023FF002106480AF087FA0648AA +:1004B00005B0BDE8F04F07F019BF00BF0000000015 +:1004C00000408F40183D0020684C002088370020F5 +:1004D000EC230020C43E0020D03E0020DC3E002063 +:1004E00008BB002050310020EC3E002048240020B2 +:1004F000F83E0020003F0020C36B2DE9F043044686 +:10050000B3F80300A5B0072800F28B8000252E4623 +:100510002F46A84693F81090192166480AF04EFA23 +:10052000012165480AF04AFAB9F10001634818BF91 +:10053000012107F0CFFE01215F480AF03FFA314662 +:100540005E4807F0C7FE01215B480AF037FA2946EA +:100550005A4807F0BFFE012157480AF02FFAE36B13 +:100560005648B3F8031007F0B5FE544807F0BEFE36 +:10057000042F00F28680B8F1040F00F28D80E36B47 +:10058000B3F803300E2B41D1B9F1000F61D006EB67 +:100590004611D4F80090852202A806EB81064E444D +:1005A00006F5AB56314608F0E9FA852205EB45130E +:1005B000304605EB830509EB050101F5AB5108F069 +:1005C000DDFA206802A98522284400F5AB5008F026 +:1005D000D5FA5FFA88F12046FFF794FE2046F9B27B +:1005E000FFF790FE6368D3F80831DB6D5B0703D536 +:1005F000236B43F00403236300233A460221204681 +:100600000093F8F7F7FB25B0BDE8F0830025012340 +:100610000E220A2120460095F8F7ECFB25B0BDE834 +:10062000F083DA7A0A281F7B4FEAC21207F07F07AD +:1006300002F47E5247EA0206374638D99A7BDD7BC0 +:10064000D20105F07F0502F47E5245EA02084546D4 +:1006500060E706EB4613852202A806EB83012668B5 +:10066000314401F5AB5108F089FA02A905EB4513B5 +:10067000852205EB8305701900F5AB5008F07EFA72 +:10068000A7E7002501233A460C2120460095F8F7FC +:10069000B1FB25B0BDE8F0830025012342460C21C3 +:1006A00020460095F8F7A6FB25B0BDE8F0830025AD +:1006B000A8462FE7103F0020EC230020684C0020C4 +:1006C00070B5046B82B0A504C4F3403612D4C56B78 +:1006D0000346B5F80320072A0ED8324651B15968AF +:1006E00083F82E20D1F80821D26D520702D544F0AC +:1006F00004041C6302B070BDEA7A2D7BD20105F0C0 +:100700007F0502F080022A43042AE7D901230C2145 +:100710000096F8F76FFB02B070BD00BF4368D3F8D6 +:100720000831DB6D5B07F0B50446ADF5037D7BD585 +:10073000E36B084694F82D205D7A94F82C109542CE +:1007400075D094F844502D076ED5256BAE046BD54B +:10075000002800F0F0800D2120460DF5037DBDE856 +:10076000F040F7F71DB82D0700F1A480DE7A1D7B5D +:10077000F60105F07F0506F47E5635435FFA85FCE9 +:10078000BCF1040F70D8ADB2002800F0D1800D2F5D +:1007900040F09780DF7B66469A7B07F07F032068F6 +:1007A00043EAC2130CEB4C120CEB8202104400F52E +:1007B000AB50037094F84430190771D46146204659 +:1007C000FFF7A0FD6368D3F80831DB6D5F0700F128 +:1007D000A48094F82C10EDB294F82D2001950223FA +:1007E00041AD00270093012328462F602F71F8F7B1 +:1007F0009FFD236806EB461206EB82021344B5F810 +:10080000032003F5AB53FD2A1B7838D901230020C0 +:1008100044A9F722CDE93E30684608F0AFF92046FA +:1008200095E80E00F8F788FA0DF5037DF0BD1D7808 +:100830008D4286D1B3F803600A2E37B281D994F87D +:10084000445015F0020F3FF47EAF00288BD1D87AC8 +:100850001D7BC30105F07F0503F47E531D435FFA42 +:1008600085FCBCF1040F62D90025012362460C21EE +:1008700020460095F8F7BEFA0DF5037DF0BD501C3B +:1008800003F07F012A44DB092F71E8705371B5F83A +:100890000330FD2BBAD8EA1801335171EB70B5E77C +:1008A0006368D3F80831DB6D5A0787D5236B9B0447 +:1008B00084D58EE7256BAD043FF54DAF072E3FF68F +:1008C00055AF202120480AF079F801211F48002562 +:1008D0000AF074F8E36B1E48B3F8031007F0FAFC53 +:1008E00001211A480AF06AF80B211A480AF066F842 +:1008F000012116480AF062F800230A220D2114484B +:1009000007F010FD124807F0F1FC01230D220A2127 +:1009100020460095F8F76EFA86E7236BEDB294F85F +:100920002C1043F0040394F82D20236356E7ADB256 +:100930006646EDB252E7B3F80350072D2FB23FF6EB +:1009400015AF0546064649E7B83C0020EC230020D9 +:10095000684C0020883E0020036B9A0435D42DE9B2 +:10096000F0410446ADF5027D29B14368D3F8083162 +:10097000DB6D5B0725D594F82E7041AD0026022370 +:100980001FFA87F828462E602E7100933346CDF863 +:10099000048094F82D2094F82C10F8F7C9FCB5F8D1 +:1009A0000330FD2B12D901230021F7226846CDE93F +:1009B0003E3144A908F0E2F8204695E80E00F8F729 +:1009C000BBF90DF5027DBDE8F08170475A1C2B4440 +:1009D0002E71EA705E71B5F80330FD2BE3D85A1C16 +:1009E0002B444FEAD818EA7005225A71B5F8033043 +:1009F000FD2BD8D85A1C2B4407F07F07EA7083F8E8 +:100A00000580B5F80330FD2BCDD8EA1801335771B6 +:100A1000EB70C8E74368D3F80831DB6D5B0705D599 +:100A2000C36B90F82DC05A7A944500D0704790F867 +:100A30002CC01A789445F9D1B3F803300A2BF5D9B4 +:100A400090F844309A07F1D51A0702D5036B9B043E +:100A5000ECD40029EAD0FFF74FBD00BFC26B527B38 +:100A6000012A03D0022A0DD032B1704790F8441009 +:100A700001F00101FFF752BE90F8441001F00101AE +:100A8000FFF71EBE90F8441001F00101FFF7C2BF4E +:100A9000C36B0022F0B580F8352080F8362080F84E +:100AA000372080F8382080F8392080F83A20B3F8D1 +:100AB000036093F80EC0122ED97B1F7C5A7C9C7C5D +:100AC000DD7C90F844E01B7D00D0F0BD03F07F0397 +:100AD000ED01A4030EF0010E43EA077305F47E5501 +:100AE000520504F4FE142B430CF07F0C02F07E62DE +:100AF00001F07F01234380F834E080F835C01343D0 +:100B0000026B80F8361042F00802C0F837300263FA +:100B1000F0BD00BF036B13F4005F14D1F0B50446C1 +:100B2000ADF5037D0D463AB14268D2F80821D26D89 +:100B3000510705D59A0603D5C3F30017DB0603D585 +:100B40000DF5037DF0BD70470D2341AE01930123E8 +:100B500037603046377100937E2394F82D2094F847 +:100B60002C10F8F7E5FBB6F80330FD2B06D8F21889 +:100B700005F07F01013337715171F37001230021BA +:100B8000F7226846CDE93E3144A907F0F7FF204639 +:100B900096E80E00F8F7D0F80DF5037DF0BD00BF24 +:100BA000036B13F4005F14D1F0B50446ADF5037D7B +:100BB0000E463AB14268D2F80821D26D510705D5E8 +:100BC0009A0603D5C3F30017DB0603D50DF5037DA5 +:100BD000F0BD704741AD01232846CDE900377E23A3 +:100BE00094F82D2094F82C102F602F71F8F7A0FBAB +:100BF000B5F80330FD2B40F28F80311F17297AD8CA +:100C0000DFE801F079DE79C87979797979790C7939 +:100C10007979797979797979797979EBB5F80330D6 +:100C20006268FD2BD2F8082165D8E918013301204C +:100C3000EB70002348712B71B5F80310B2F84A30FD +:100C4000FD294FEA933056D84E1C2944EE70C3F369 +:100C5000C6164871B5F80300FD284CD803F07F0193 +:100C6000431C2844EB70B5F803304671FD2B42D885 +:100C7000581C2B44E8705971B5F80310B2F84E3087 +:100C8000FD294FEA933036D84E1C2944EE70C3F349 +:100C9000C6164871B5F80310FD292CD803F07F0063 +:100CA0004B1C2944EB704E71B5F80310FD2922D876 +:100CB000B2F852304A1C2944EA70B5F80320487152 +:100CC000990BFD2A17D8501C2A44E870C3F3C610AC +:100CD0005171B5F80310FD290DD803F07F024B1CAC +:100CE0002944EB704871B5F80330FD2B03D8E9189F +:100CF00001334A71EB700123002044A9F722CDE9AA +:100D00003E30684607F03AFF204695E80E00F8F7B7 +:100D100013F80DF5037DF0BDE81806F07F010133EF +:100D2000321F2F714171EB70172AE4D801A353F8D9 +:100D300022F000BF6B2A0200352A02006B29020054 +:100D4000092A02006B2902006B2902006B290200AC +:100D50006B2902006B2902006B2902009128020016 +:100D60006B2902006B2902006B2902006B2902002B +:100D70006B2902006B2902006B2902006B2902001B +:100D80006B2902006B2902006B2902006B2902000B +:100D90004F2A0200B5F803306268FD2BD2F8082113 +:100DA000A9D8E81801330021EB70B2F846300122CF +:100DB0002971990B4271B5F80320FD2A83D99AE76E +:100DC000B5F803306268FD2BD2F8082193D8E818F3 +:100DD00001330021EB70D38FE9E7B5F80330626887 +:100DE000FD2BD2F8082186D8E81801330021EB70DA +:100DF000B2F85630DBE7B5F803306268FD2BD2F865 +:100E000008213FF678AFE81801330021EB70538FCB +:100E1000CDE700BF2DE9F0410446006BADF5027D42 +:100E200086042FD40F4616463BB16368D3F80831C9 +:100E3000DB6D5D0726D5810624D541AD4FF0000856 +:100E400001230322C5F80080284685F80480CDE9F7 +:100E500000327E2394F82D2094F82C10F8F768FACD +:100E6000B5F80330FD2B11D901230021F722684684 +:100E7000CDE93E3144A907F081FE204695E80E00F9 +:100E8000F7F75AFF0DF5027DBDE8F0815A1C2B449F +:100E900085F8048007F07F01EA70FA095A71B5F805 +:100EA0000330FD2BE0D85A1C2B44EA705971F1092C +:100EB000B5F80330FD2BD7D8581C2B4406F07F0221 +:100EC000E8705971B5F80330FD2BCDD8E91801331E +:100ED0004A71EB70C8E700BF2DE9F0410446006B92 +:100EE000ADF5027D800429D40F4690462BB163688E +:100EF000D3F80831DB6D5B0720D541AD0026062312 +:100F0000009628462E602E7101937E2394F82D20A2 +:100F100094F82C10F8F70CFAB5F80330FD2B11D922 +:100F200001230021F7226846CDE93E3144A907F0AC +:100F300025FE204695E80E00F7F7FEFE0DF5027D32 +:100F4000BDE8F0815A1C2B442E71EA705F71B5F830 +:100F50000330FD2BE4D8EA18013382F80580EB70EA +:100F6000DEE700BF2DE9F0470546006BADF5027DD9 +:100F70001F468004BDF828A29DF82C3229D488464B +:100F800091462BB16B68D3F80831DB6D5B0720D538 +:100F900041AC002607230096204626602671019367 +:100FA0007E2395F82D2095F82C10F8F7C1F9B4F8A8 +:100FB0000330FD2B11D901230021F7226846CDE92A +:100FC0003E3144A907F0DAFD284694E80E00F7F711 +:100FD000B3FE0DF5027DBDE8F0875A1C08F07F08CE +:100FE00023442671E270C9F3C61183F80580B4F872 +:100FF0000330FD2BDFD8581C234409F07F02E0703A +:101000005971B4F80330FD2BD5D8591C2344E17035 +:10101000C7F3C6115A71B4F80320FD2ACBD8501C6F +:10102000224407F07F03E0705171B4F80320FD2AD9 +:10103000C1D8511C2244E1705371CAF3C612B4F8EE +:101040000330FD2BB7D8591C23440AF07F0AE17006 +:101050005A71B4F80330FD2BADD8E218013382F891 +:1010600005A0E370A7E700BF2DE9F04F87B01D464C +:101070004FFA81F90F469DF840308046B9F1000FD4 +:10108000164600939DF848309DF844B00193C0F295 +:10109000BE80CB0737D5BBF1000F34D1009B002BAE +:1010A00040F0D080009A2946304608F0A3FFB9F1FD +:1010B000000F28DAD8F8083107F00F011A6802EBA0 +:1010C000410292F8F92E940727D4910608D5DA6DDB +:1010D000140700F1BD80B9F1000FC0F2EB803A4671 +:1010E000500603D5DA6DD10600F1BF80019A1AB11E +:1010F000DA6D42F00202DA65B3F860309A0634D451 +:1011000007B0BDE8F08FBB0707D4B806D8F80831A0 +:10111000E5D5DA6D1407DED59AE0009B002B00F0D0 +:101120008780ADB106F1FF3A5446D8F838091AF86D +:10113000011F02340368A41B1B689847A542F3DC17 +:10114000009B2BB9D8F83809F72103681B6898472A +:10115000B9F1000FD9DAD8F8083107F00F011A6891 +:1011600002EB410292F8F92EAFE7624B0A22624885 +:101170001968002307F0D6F80121604809F01EFC29 +:10118000B9F1000FC0F29E80394602A8E0F79AFC40 +:1011900002A9594807F078F802A807F0A7F9012139 +:1011A000564809F00BFC0E21554809F007FC52483F +:1011B00007F09CF80721534809F000FC294600235A +:1011C00010224D4807F0AEF801214F4809F0F6FB18 +:1011D0009DB1013D741EDFF82481474F16FA85F555 +:1011E0000121404609F0EAFB14F8011F00231022F8 +:1011F000384607F097F8AC42F2D10021434809F095 +:10120000DDFB3D4807B0BDE8F04F07F06FB8D0F800 +:10121000083101F00F011A6802EB410292F8F92E31 +:10122000D1077FF550AFBBF1000F3FF437AF4AE76E +:10123000D8F83809F02103681B689847002D7FF41F +:1012400071AF7FE700222946304608F073FE2EE793 +:10125000009B08F52660002B3ED05B462A463146AF +:1012600005F036FCD8F8083135E7009A002A3BD162 +:1012700008F5805AF021DAF8880103681B6898475E +:101280007DB106F1FF3B5C46DAF888011BF8011FCF +:1012900002340368A41B1B689847A542F3DC009B3B +:1012A0002BB9DAF88801F72103681B689847D8F84A +:1012B00008311BE71A6807F00F0102EB410292F8B0 +:1012C000F92E0DE7D8F8083107F00F071B6803EB7C +:1012D000470393F8F97E57E75B462A46314605F007 +:1012E0004DFCD8F80831F6E6002D3FF4FFAE08F5C6 +:1012F000805AC6E708BB0020684C0020EC23002081 +:1013000038390020C81C00201C2B0020183D00206C +:101310002DE9F0434FB285B00C460646002F154626 +:101320009846C0F29080CB0713D505F10803DBB2D5 +:10133000072B0ED8DD2222FA03F3DB0709D5B8F11B +:10134000000F04D1280240F00F0008F09BFD002F91 +:1013500020DBA10705D5D6F83809294603681B68A4 +:101360009847A306D6F8082123D42146490602D57A +:10137000D36DDB062AD4F82D2AD0FE2D28D0D36DCC +:1013800043F00203D365B2F86030980626D405B066 +:10139000BDE8F083D6F8080104F00F09036802469F +:1013A00003EB490393F8F91E880700F18E80880645 +:1013B000DCD5D36D1B0770D4002FD6DA04F00F01F3 +:1013C000136803EB410393F8F91ECFE7F82D56D1CC +:1013D000B2F860309A06DAD55906D8D5484B0A22B9 +:1013E00048481968002306F09DFF0121464809F08E +:1013F000E5FA002F7ADB21466846E0F763FB694691 +:10140000404806F041FF684607F070F801213E4869 +:1014100009F0D4FA08213D4809F0D0FA01213A48F0 +:1014200009F0CCFA29466846E0F7BCFB6946354826 +:1014300006F02AFF334806F059FF684607F056F8D1 +:1014400005B0BDE8F083D0F8080101F00F02036891 +:10145000914603EB4203024693F8F91ECB07A3D54E +:1014600005F10803DBB2072B98D8DD2222FA03F33B +:10147000DA0793D5B8F1000F3FF464AF67E7FE2DAC +:101480003FF479AF06F580532946D3F88801036805 +:101490001B689847D6F8082171E705F10803DBB20D +:1014A000072B89D8DD2121FA03F3D80784D54FEA29 +:1014B000081106F52660C9B241EA052141F00F0185 +:1014C00005F0B4FAD6F8082176E7D6F838092946A7 +:1014D00003681B689847D6F80821136803EB490393 +:1014E00093F8F91E88067FF541AF62E7D6F8083118 +:1014F00004F00F041B6803EB440393F8F94E7AE7FA +:1015000008BB0020684C0020EC2300204838002055 +:1015100090F80CC11CF0040F01D1FFF7F9BE704721 +:1015200070B49DF80C409DF810509DF814602BB1DC +:101530000394CDE9045670BCFFF796BD70BC7047AC +:101540002DE9F04F4FFA81F987B090460D46B9F179 +:10155000000F06461F469DF84020C0F2D580CB07FD +:1015600040D5002A3ED108F1FF3B39044CF20C0073 +:1015700001924FEA0B2301F4FE0103F470630B4365 +:10158000184308F07FFC019A2B469C072DD4B9F133 +:10159000000F5FFA8BF407F07F0AD6F808313DDBC5 +:1015A000A90605D5D96D080744D4B9F1000F58DB59 +:1015B0002946490603D5DA6DD20600F1CD8004F044 +:1015C0000F0C0CEB8C1C06EB4C0C8CF80DA1DA6D9F +:1015D00042F02202DA65B3F86030980649D407B0C9 +:1015E000BDE8F08F08F1FF3BCEE7D6F838096BF085 +:1015F0003F01019207F07F0A0368C9B25FFA8BF4DA +:101600001B689847D6F83809514603681B68984705 +:10161000B9F1000F019AD6F80831C1DA05F00F00D0 +:10162000196801EB400191F8F91E8806C1D5D96D02 +:101630000807BAD54FEA0B2306F5266039041201D4 +:1016400003F4706301F4FE01D2B20B434CF20C01BF +:101650001343194305F0EAF9B9F1000FD6F8083140 +:10166000A6DA05F00F011A6802EB410292F8F91EA2 +:101670009FE7474B0A2247481968002306F052FEAD +:101680000121454809F09AF9B9F1000F76DB2946A6 +:1016900002A8E0F717FA02A93E4806F0F5FD02A8F5 +:1016A00006F024FF01213C4809F088F917213B4846 +:1016B00009F084F90121384809F080F908213848F7 +:1016C00009F07CF90121344809F078F900230A2255 +:1016D0004146304806F026FE01212F4809F06EF9F8 +:1016E0000821304809F06AF901212B4809F066F910 +:1016F00000230A223946274806F014FE254807B081 +:10170000BDE8F04F06F0F2BDD0F80831196805F0D9 +:101710000F0303F5EF6301EB43015C004B7AD9073C +:1017200017D5B2B908F1FF3B39044CF20C00019215 +:101730004FEA0B2301F4FE0103F470630B431843DB +:1017400008F0A0FBD6F80831019A1B6823445B7AA5 +:101750001BE708F1FF3B18E706F5805B44F0C0018A +:10176000DBF8880103681B689847DBF8880151465D +:1017700003681B689847D6F8083120E7D6F8083187 +:1017800005F00F051B6803EB450393F8F95E7EE750 +:1017900008BB0020684C0020EC230020F838002013 +:1017A000E01C00201039002002F1FF3C0CF00F0C6F +:1017B0000CEB8C1C30B500EB4C0C83B09CF80D414D +:1017C0009DF81CE09DF820C09DF81850E64509D210 +:1017D0001CF0800F0DD183B1013405B3644520DDC9 +:1017E000744610E04FFA8CFEBEF1000F4FF0000E71 +:1017F000F1DC4FF07F0C002BEED1013C5DB974455C +:10180000B8BF7446E4B2002300932346FFF798FE66 +:10181000204603B030BD7445F4DA6446F3E764450E +:10182000FBDC7445EEDA7446EDE700BF2DE9F04FBE +:1018300087B01F4605460C469DF9403016469DF878 +:101840004090002B9DF844A09DF848B011DA531E3B +:1018500007F07F0203F00F0303EB831300EB430356 +:10186000134493F80F31002B14BF4FF000094FF0D1 +:101870007F094FFA84F8B8F1000FC0F2D380E30774 +:1018800048D42346990700F1B680B8F1000FD5F887 +:10189000080116DBA2061DD423465A0603D5C36DE4 +:1018A000DB0600F10481BBF1000F22D1C36D43F0D0 +:1018B0000203C365B0F8603099063ED407B0BDE8B6 +:1018C000F08F04F00F02036803EB420393F8F93E34 +:1018D0009A06E2D5C36D190700F1CD80B8F1000F6B +:1018E000DADA036804F00F0203EB420393F8F93EDF +:1018F000D3E706F1FF3C07F07F030CF00F0C0CEB75 +:101900008C1C05EB4C0C9C448CF80F91C36D43F080 +:101910002003CCE7BAF1000FB3D13B04721E4BF2A7 +:101920000B0003F4FE03120243EA096302F470623F +:101930001343184308F0A6FAA3E76F4B0A226F4837 +:101940001968002306F0EEFC01216D4809F036F815 +:10195000B8F1000FC0F2C680214602A8E0F7B2F845 +:1019600002A9664806F090FC02A806F0BFFD01211E +:10197000634809F023F81721624809F01FF8012194 +:101980005F4809F01BF808215F4809F017F80121AA +:101990005B4809F013F800230A223146574806F045 +:1019A000C1FC0121564809F009F80821574809F0FF +:1019B00005F80121524809F001F800230A223946AE +:1019C0004E4806F0AFFC01214D4808F0F7FF062114 +:1019D0004F4808F0F3FF0121494808F0EFFF0023CA +:1019E0000A224946454806F09DFC444807B0BDE838 +:1019F000F04F06F07BBCD5F83809711E036861F022 +:101A00004F011B68C9B29847D5F8380907F07F0124 +:101A100003681B689847D5F83809494603681B686E +:101A2000984732E7D5F80831196804F00F0303F539 +:101A3000EF6301EB43015A004B7AD8077FF522AFE1 +:101A4000BAF1000F7FF41EAF3B04711E4BF20B0086 +:101A5000019203F4FE03090243EA096301F4706191 +:101A60000B43184308F00EFAD5F80831019A1B68A9 +:101A700013445B7A06E74FEA0A134BF20B013A0470 +:101A800005F52660DBB202F4FE0243EA0963134364 +:101A9000721E120202F470621343194304F0C6FF6F +:101AA000B8F1000FD5F80801BFF6F6AE19E705F555 +:101AB000805A711EDAF8880161F04F010368C9B2DB +:101AC0001B689847DAF8880107F07F0103681B68F4 +:101AD0009847DAF88801494603681B689847D5F8A3 +:101AE0000801E0E6D5F8083104F00F041B6803EBA9 +:101AF000440393F8F94E2FE708BB0020684C002000 +:101B0000EC230020CC380020E01C0020E43800202A +:101B1000F038002002F1FF3C0CF00F0C0CEB8C1C99 +:101B200070B500EB4C0C03F07F0484B0A4449DF826 +:101B300028E09CF80F419DF82CC09DF82060E645F8 +:101B40009DF8245009D21CF0800F0DD186B10134CC +:101B500015B3644522DD744610E04FFA8CFEBEF1E9 +:101B6000000F4FF0000EF1DC4FF07F0C002EEED195 +:101B7000013C6DB97445B8BF7446E4B20025012636 +:101B80000094CDE90156FFF751FE204604B070BD28 +:101B90007445F2DA6446F1E76445FBDC7445ECDA3F +:101BA0007446EBE72DE9F04F4FFA81F885B00C460B +:101BB0000546B8F1000F17461E469DF838909DF86F +:101BC0003CA0C0F2BD80CB072ED42346980700F17D +:101BD0009F80B8F1000FD5F8083104DBA2060BD4C2 +:101BE0002246D86D11E004F00F011A6802EB4102A1 +:101BF00092F8F92E9106F4D5D86D020700F1CB804A +:101C0000B8F1000FC0F2E6802246510602D5C206A6 +:101C100000F1E88040F00200D865B3F86030990622 +:101C200018D405B0BDE8F08FBAF1000FCDD1531E26 +:101C30004FEA096249F209001B0202F0FE4203F476 +:101C400070631343320402F4FE021343184308F096 +:101C500019F9BAE7774B0A2277481968002306F08A +:101C600061FB0121754808F0A9FEB8F1000FC0F230 +:101C7000D68021466846DFF725FF69466E4806F0A4 +:101C800003FB684606F032FC01216C4808F096FE22 +:101C900010216B4808F092FE0121684808F08EFE82 +:101CA0000821684808F08AFE0121644808F086FE91 +:101CB00000230A223946604806F034FB01215F48C0 +:101CC00008F07CFE0521604808F078FE01215B48A1 +:101CD00008F074FE00230A223146574806F022FB22 +:101CE0000121564808F06AFE0921584808F066FEAE +:101CF0000121524808F062FE00230A2249464E485C +:101D000006F010FB4C4805B0BDE8F04F06F0EEBA07 +:101D1000D5F83809791E036861F06F011B68C9B2F4 +:101D20009847D5F8380906F07F0103681B68984783 +:101D3000D5F8380909F07F0103681B68984748E720 +:101D4000D0F808311A6801F00F0303F5EF6302EBD6 +:101D500043024FEA430B537ADA077FF537AFBAF104 +:101D6000000F7FF433AF7B1E4FEA096249F209008E +:101D70001B0202F0FE4203F470631343320402F4C8 +:101D8000FE021343184308F07DF8D5F808311B68AC +:101D90005B445B7A1AE74FEA0A1349F209013204FD +:101DA00005F52660DBB202F4FE0213437A1E12022E +:101DB00002F4706213434FEA096202F0FE421343D9 +:101DC000194304F033FED5F80831B8F1000FD86D8F +:101DD000BFF61AAF1A6804F00F0102EB410292F845 +:101DE000F92E12E705F5805A791EDAF8880161F0BC +:101DF0006F010368C9B21B689847DAF8880106F0DA +:101E00007F0103681B689847DAF8880109F07F01B1 +:101E100003681B689847D5F80831D86DFAE6D5F8FD +:101E2000083104F00F041B6803EB440393F8F94EE8 +:101E30001FE700BF08BB0020684C0020EC230020F7 +:101E40000C380020E01C002020380020283800201A +:101E50002DE9F04F4FFA81F885B00C460546B8F1F0 +:101E6000000F17461E469DF838909DF83CA0C0F222 +:101E7000BD80CB072ED42346980700F19F80B8F190 +:101E8000000FD5F8083104DBA2060BD42246D86D2A +:101E900011E004F00F011A6802EB410292F8F92EEA +:101EA0009106F4D5D86D020700F1CB80B8F1000F90 +:101EB000C0F2E6802246510602D5C20600F1E88053 +:101EC00040F00200D865B3F86030990618D405B028 +:101ED000BDE8F08FBAF1000FCDD1531E4FEA096271 +:101EE00048F208001B0202F0FE4203F47063134341 +:101EF000320402F4FE021343184307F0C3FFBAE7AB +:101F0000774B0A2277481968002306F00BFA012163 +:101F1000754808F053FDB8F1000FC0F2D680214695 +:101F20006846DFF7CFFD69466E4806F0ADF96846B2 +:101F300006F0DCFA01216C4808F040FD11216B48E5 +:101F400008F03CFD0121684808F038FD0821684888 +:101F500008F034FD0121644808F030FD00230A2216 +:101F60003946604806F0DEF901215F4808F026FD99 +:101F70000521604808F022FD01215B4808F01EFDA4 +:101F800000230A223146574806F0CCF90121564871 +:101F900008F014FD0921584808F010FD01215248AD +:101FA00008F00CFD00230A2249464E4806F0BAF913 +:101FB0004C4805B0BDE8F04F06F098B9D5F838099F +:101FC000791E036861F07F011B68C9B29847D5F894 +:101FD000380906F07F0103681B689847D5F838096F +:101FE00009F07F0103681B68984748E7D0F808317B +:101FF0001A6801F00F0303F5EF6302EB43024FEAA7 +:10200000430B537ADA077FF537AFBAF1000F7FF44D +:1020100033AF7B1E4FEA096248F208001B0202F050 +:10202000FE4203F470631343320402F4FE021343CE +:10203000184307F027FFD5F808311B685B445B7A2B +:102040001AE74FEA0A1348F20801320405F5266040 +:10205000DBB202F4FE0213437A1E120202F4706233 +:1020600013434FEA096202F0FE421343194304F09E +:10207000DDFCD5F80831B8F1000FD86DBFF61AAF06 +:102080001A6804F00F0102EB410292F8F92E12E7F0 +:1020900005F5805A791EDAF8880161F07F0103683E +:1020A000C9B21B689847DAF8880106F07F01036817 +:1020B0001B689847DAF8880109F07F0103681B68FC +:1020C0009847D5F80831D86DFAE6D5F8083104F00C +:1020D0000F041B6803EB440393F8F94E1FE700BF9E +:1020E00008BB0020684C0020EC230020343800207E +:1020F000E01C002020380020283800202DE9F04F77 +:102100004FFA81F987B00D460646B9F1000F9046A7 +:102110001F469DF840B0C0F2E480CB0744D5BBF128 +:10212000000F41D107F30D0208F1FF3A4EF20E0005 +:1021300002F500524FEA0A23110403F47063D2112E +:1021400001F4FE010B4343EA0263184307F09AFED1 +:102150002B46980700F1A8805FFA8AF4B9F1000FC6 +:10216000D6F8080123DBAA062AD42A46C36D5106F5 +:1021700002D5DA0600F12F8143F00203002FC36578 +:1021800028D104F00F0404EB841406EB440484F813 +:102190000E71C36D43F02003C365B0F8603099063B +:1021A00038D407B0BDE8F08F08F1FF3AD0E705F06A +:1021B0000F02036803EB420393F8F92E9106D5D57D +:1021C000C36D1A0700F1DC80B9F1000FC0F2FB808B +:1021D0002A46CCE740F3B1807E2140F6FF727B1E99 +:1021E00004F00F0413FB01238E4A04EB84145B08F4 +:1021F00006EB4404A2FB0323DB0A013303F07F0355 +:1022000084F80E31C36D43F02003C365B0F860302D +:102210009906C6D5844B0A2284481968002306F023 +:1022200081F80121824808F0C9FBB9F1000FC0F222 +:10223000EF80294602A8DFF745FC02A97B4806F09B +:1022400023F802A806F052F90121794808F0B6FBFC +:102250001321784808F0B2FB0121754808F0AEFB65 +:102260000821754808F0AAFB0121714808F0A6FB77 +:1022700000230A2241466D4806F054F801216C48BB +:1022800008F09CFB06216D4808F098FB0121684886 +:1022900008F094FB3946654806F01CF8634807B01F +:1022A000BDE8F04F06F022B8D6F838096AF01F01F1 +:1022B0005FFA8AF40368C9B21B689847D6F83809F0 +:1022C00007F50053026803F07F01019312689047FD +:1022D000019BD6F83809C3F3C61103681B689847F9 +:1022E0003CE7D0F808311A6801F00F0303F5EF63FB +:1022F00002EB43025C00537ADA073ED5BBF1000FD4 +:102300003BD107F30D0308F1FF3A4EF20E0003F53F +:102310000053DA1119044FEA0A2301F4FE0103F411 +:1023200070630B4343EA0263184307F0ABFDD6F832 +:1023300008311B6823445B7A0BE740F6FF737E216C +:1023400007F5005204F00F0412FB01323C4904EB84 +:10235000841481FB0231D317002A06EB4404114494 +:10236000C3EB2133ACBF7F3B803B03F07F0384F89A +:102370000E31C36D43F020030EE708F1FF3AE8E6A3 +:1023800007F30D024FEA0B134FEA0A2A4EF20E0131 +:1023900002F50052DBB20AF4706A06F526604FEAD5 +:1023A000E21C120443EA0C6302F4FE0243EA0A034D +:1023B0001343194304F03AFBD6F80801B9F1000FB2 +:1023C000C36DBFF605AF026805F00F0102EB4102D5 +:1023D00092F8F92ECBE606F5805B44F0E00107F5B4 +:1023E000005ADBF8880103681B689847DBF888010E +:1023F0000AF07F0103681B689847DBF88801CAF37D +:10240000C61103681B689847D6F80801C36DB3E688 +:10241000D6F8083105F00F051B6803EB450393F868 +:10242000F95E06E78100088008BB0020684C0020A8 +:10243000EC23002054380020E01C0020F03800205D +:10244000210004802DE9F0474FFA81F984B00C4651 +:102450000546B9F1000F90461F469DF830A0C0F226 +:10246000A080CB072ED423469E0700F18880B9F1C7 +:10247000000FD5F8086104DBA2060BD42346F06DEB +:1024800011E004F00F02336803EB420393F8F93EC6 +:102490009806F4D5F06D010700F1A980B9F1000F9D +:1024A000C0F2C28023465A0602D5C30600F1C4809A +:1024B000B6F8603040F002009906F06513D404B01D +:1024C000BDE8F087BAF1000FCDD1531E3A044DF2AA +:1024D0000D001B0202F4FE0203F470631343184361 +:1024E00007F0D0FCBFE7654B0A2265481968002356 +:1024F00005F018FF0121634808F060FAB9F1000FF8 +:10250000C0F2B18021466846DFF7DCFA69465C48D4 +:1025100005F0BAFE684605F0E9FF0121594808F0C8 +:102520004DFA1421584808F049FA0121554808F09D +:1025300045FA0821554808F041FA0121514808F0B0 +:102540003DFA00230A2241464D4805F0EBFE0121E9 +:102550004C4808F033FA09214D4808F02FFA0121C0 +:10256000484808F02BFA00230A223946444805F06F +:10257000D9FE434804B0BDE8F04705F0B7BED5F832 +:10258000380908F1FF31036861F02F011B68C9B2F7 +:102590009847D5F8380907F07F0103681B6898470A +:1025A00065E7D0F808311A6801F00F0303F5EF630F +:1025B00002EB43025E00537ADA077FF555AFBAF1BA +:1025C000000F7FF451AF08F1FF333A044DF20D00D4 +:1025D0001B0202F4FE0203F470631343184307F076 +:1025E00051FCD5F808311B6833445B7A3CE708F1AD +:1025F000FF333A044FEA0A1A4DF20D011B0202F4AE +:10260000FE025FFA8AFA05F5266003F4706313434D +:1026100043EA0A03194304F009FAD5F80861B9F14D +:10262000000FF06DBFF63EAF336804F00F0203EB0E +:10263000420393F8F93E36E705F5805608F1FF317D +:10264000D6F8880161F02F010368C9B21B6898476A +:10265000D6F8880107F07F0103681B689847D5F812 +:102660000861F06D24E7D5F8083104F00F041B6809 +:1026700003EB440393F8F94E44E700BF08BB002086 +:10268000684C0020EC23002068380020E01C00206B +:10269000803800202DE9F04F4FFA81F885B00C46C4 +:1026A0000546B8F1000F17461E469DF838909DF874 +:1026B0003CA0C0F2BD80CB072ED42346980700F182 +:1026C0009F80B8F1000FD5F8083104DBA2060BD4C7 +:1026D0002246D86D11E004F00F011A6802EB4102A6 +:1026E00092F8F92E9106F4D5D86D020700F1CB804F +:1026F000B8F1000FC0F2E6802246510602D5C206AC +:1027000000F1E88040F00200D865B3F86030990627 +:1027100018D405B0BDE8F08FBAF1000FCDD1531E2B +:102720004FEA09624AF20A001B0202F0FE4203F479 +:1027300070631343320402F4FE021343184307F09C +:10274000A1FBBAE7774B0A2277481968002305F006 +:10275000E9FD0121754808F031F9B8F1000FC0F228 +:10276000D68021466846DFF7ADF969466E4805F028 +:102770008BFD684605F0BAFE01216C4808F01EF991 +:1027800019216B4808F01AF90121684808F016F978 +:102790000821684808F012F90121644808F00EF990 +:1027A00000230A223946604805F0BCFD01215F483C +:1027B00008F004F90521604808F000F901215B48A0 +:1027C00008F0FCF800230A223146574805F0AAFD1C +:1027D0000121564808F0F2F80921584808F0EEF8AF +:1027E0000121524808F0EAF800230A2249464E48DF +:1027F00005F098FD4C4805B0BDE8F04F05F076BDFA +:10280000D5F83809791E036861F05F011B68C9B209 +:102810009847D5F8380906F07F0103681B68984788 +:10282000D5F8380909F07F0103681B68984748E725 +:10283000D0F808311A6801F00F0303F5EF6302EBDB +:1028400043024FEA430B537ADA077FF537AFBAF109 +:10285000000F7FF433AF7B1E4FEA09624AF20A0091 +:102860001B0202F0FE4203F470631343320402F4CD +:10287000FE021343184307F005FBD5F808311B6827 +:102880005B445B7A1AE74FEA0A134AF20A01320400 +:1028900005F52660DBB202F4FE0213437A1E120233 +:1028A00002F4706213434FEA096202F0FE421343DE +:1028B000194304F0BBF8D5F80831B8F1000FD86D12 +:1028C000BFF61AAF1A6804F00F0102EB410292F84A +:1028D000F92E12E705F5805A791EDAF8880161F0C1 +:1028E0005F010368C9B21B689847DAF8880106F0EF +:1028F0007F0103681B689847DAF8880109F07F01B7 +:1029000003681B689847D5F80831D86DFAE6D5F802 +:10291000083104F00F041B6803EB440393F8F94EED +:102920001FE700BF08BB0020684C0020EC230020FC +:102930001C390020E01C00202038002080380020B6 +:102940002DE9F0434FB285B00C460546002F1646E0 +:102950009846C0F2AE80CB071DD4224693072DD4F3 +:10296000002FD5F8082141DBA10624D5D06D03073F +:1029700048D4002F5FDB2146490602D5C30600F18B +:10298000BD8040F00200B2F86030D06598065AD49D +:1029900005B0BDE8F083B8F1000FDED153044FF26B +:1029A0000320120403F0FE4302F4FE021343184313 +:1029B00007F068FAD1E72146D06DDDE7D5F8380990 +:1029C000F22103681B689847D5F8380906F07F01A3 +:1029D00003681B689847D5F83809C6F3C611036821 +:1029E0001B689847002FD5F80821BDDA04F00F01C5 +:1029F000136803EB410393F8F91E8806DCD5D06D0C +:102A00000307B6D54FEA08184FF20321730405F502 +:102A100026605FFA88F803F0FE43320443EA0803B5 +:102A200002F4FE021343194304F000F8D5F808211C +:102A3000002FD06D9FDA04F00F01136803EB410300 +:102A400093F8F91E98E73F4B0A223F481968002384 +:102A500005F068FC01213D4807F0B0FF002F67DB5F +:102A600021466846DFF72EF86946374805F00CFC2A +:102A7000684605F03BFD0121344807F09FFF162111 +:102A8000334807F09BFF0121304807F097FF0621EC +:102A9000304807F093FF01212C4807F08FFF3146A3 +:102AA000294805F017FC284805B0BDE8F04305F0BB +:102AB0001DBCD0F808311A6801F00F0303F5EF636D +:102AC00002EB43024FEA4309527AD1077FF546AF42 +:102AD000B8F1000F7FF442AF73044FF203203204C9 +:102AE00003F0FE4302F4FE021343184307F0CAF951 +:102AF000D5F808311B684B445A7A2FE705F5805802 +:102B0000F221D8F8880103681B689847D8F8880133 +:102B100006F07F0103681B689847D8F88801C6F360 +:102B2000C61103681B689847D5F80821D06D28E7BF +:102B3000D5F8083104F00F041B6803EB440393F845 +:102B4000F94E8DE708BB0020684C0020EC230020E4 +:102B5000AC380020C43800202DE9F0474FFA81F846 +:102B600084B00C460546B8F1000F1746994623DBA2 +:102B7000CA070AD5B9F1000F07D13B044FF2023062 +:102B800003F4FE03184307F07DF9A30725D4D5F815 +:102B90000801A1063CD4C66D2246520602D5F306B2 +:102BA00000F18A8046F00206B0F86030C6659806EB +:102BB00036D404B0BDE8F087D0F8080101F00F0367 +:102BC00001F00F0A03F5EF63026802EB43025E00B7 +:102BD000537ADA075FD49B0713D5D5F83809F32168 +:102BE00003681B689847D5F8380907F07F01036828 +:102BF0001B689847B8F1000FD5F80801C9DA04F04E +:102C00000F0A036803EB4A0393F8F92E960640D5A2 +:102C1000C66D310763D4B8F1000F74DB2246BCE700 +:102C2000424B0A2242481968002305F07BFB012130 +:102C3000404807F0C3FEB8F1000F6CDB2146684640 +:102C4000DEF740FF69463A4805F01EFB684605F08E +:102C50004DFC0121374807F0B1FE1721364807F037 +:102C6000ADFE0121334807F0A9FE0521334807F0E6 +:102C7000A5FE01212F4807F0A1FE00230A223946B4 +:102C80002B4805F04FFB2A4804B0BDE8F04705F09B +:102C90002DBBC66D81E7B9F1000F9CD13B044FF20B +:102CA000023003F4FE03184307F0ECF8D5F80801EE +:102CB000036833445B7A8EE705F58056F321D6F836 +:102CC000880103681B689847D6F8880107F07F01E0 +:102CD00003681B689847D5F80801C66D62E74FEA9C +:102CE00009134FF202313A0405F52660DBB202F413 +:102CF000FE021343194303F099FED5F80801B8F119 +:102D0000000FC66D8ADA04F00F02036803EB42037A +:102D100093F8F92E41E7D5F8083104F00F041B6849 +:102D200003EB440393F8F94E88E700BF08BB00208B +:102D3000684C0020EC2300208C380020A4380020B0 +:102D40002DE9F04FF22A87B01D46074614460E467D +:102D50009DF840809DF844909DF8483013D902F1C9 +:102D60000D0E4FF0010C5FFA8EFE0CFA0EFC1CF4F7 +:102D7000DD5F40F0F08040F246421CEA020F13D0C3 +:102D800007B0BDE8F08FF02AFAD0F22A10D14FEA4E +:102D9000C81805F07F0208F47E5842EA080207B01E +:102DA000BDE8F04FFFF7CCBD1CF0010F40F0CD8027 +:102DB00018F0800F04F0F00A40F0D7804FFA86FB3D +:102DC000BBF1000FC0F2E580F20740F1FD80BAF1DF +:102DD000F00F00F0F980002B40F0F6801AF0800F21 +:102DE00000F0F28009F1FF302A040193000202F49E +:102DF000FE0200F47060104340EA0A2040EA1A1014 +:102E000040EA086007F03EF8BBF1000F019B80F23A +:102E1000DB80D7F8080106F00F0C0168024601EBD1 +:102E20004C0191F8F91E880700F1DD80880600F159 +:102E3000D18048060CD5BAF1E00FD16D8CBF0023CC +:102E4000012313EA111303D0B9F1000F40F01C81E4 +:102E5000BAF1C00F00F0F580BAF1B00F00F0338185 +:102E6000D36D43F00203D365B2F86030990687D57D +:102E7000B34B0A22B3481968002305F053FA012125 +:102E8000B14807F09BFDBBF1000FC0F2F380314663 +:102E900002A8DEF717FE02A9AA4805F0F5F902A874 +:102EA00005F024FB0121A84807F088FD0821A74868 +:102EB00007F084FD0121A44807F080FD514602A8D7 +:102EC000DEF770FE02A99F4805F0DEF902A805F0C2 +:102ED0000DFB01219C4807F071FD08219C4807F07B +:102EE0006DFD0121984807F069FD00230A2249463B +:102EF000944805F017FA0121934807F05FFD062179 +:102F0000944807F05BFD01218F4807F057FD00232F +:102F10000A2229468B4805F005FA01218A4807F064 +:102F20004DFD06218C4807F049FD0121864807F038 +:102F300045FD00230A224146824805F0F3F9814805 +:102F400007B0BDE8F04F05F0D1B92A4607B0BDE89B +:102F5000F04FFFF701BE90F80C4164073FF510AF4A +:102F600007B0BDE8F04FFEF7D3B909F1FF3205F025 +:102F70007F0102F00F0202EB821207EB42020A44C9 +:102F800092F80F21002A14BF4FF000084FF07F087D +:102F900014E7D7F8080106F00F0102688C4602EB2F +:102FA000410292F8F91E024611F0010F3FF43BAFC7 +:102FB000BAF1F00F3FF437AF002B7FF434AF1AF0C3 +:102FC000800F3FF42AAF0DE7B2070CD4B106D7F853 +:102FD000082106D5D16D090700F1C080BBF1000FB3 +:102FE00040DB314625E7B9F1000F1DD0BAF1E00F03 +:102FF0001AD8BAF1C00F04D040F29480BAF1D00FC1 +:1030000073D1D7F8380909F1FF31019302684AEA10 +:1030100001011268C9B29047D7F8380905F07F015D +:10302000026812689047019BBBF1000FCEDAD7F817 +:10303000082106F00F00116801EB400191F8F91E1C +:10304000F4E609F1FF3305F07F0103F00F0303EB12 +:10305000831307EB430383F80D11D36D43F0200373 +:10306000D365FEE606F00F01136803EB410393F806 +:10307000F91EDEE6D7F8083106F00F061B6803EBF1 +:10308000460393F8F96E02E7BAF1C00F05D040F29B +:10309000A680BAF1D00F40F0828007F5805409F184 +:1030A000FF31D4F888014AEA01010368C9B21B68FC +:1030B0009847D4F8880105F07F0103681B6898479A +:1030C000D7F80821C4E609F1FF3305F07F0103F0CA +:1030D0000F0303EB831307EB43030B4483F80F81C8 +:1030E000D36D43F02003D365BBE6BAF1E00F9BD16B +:1030F000D7F8380909F1FF31019302684AEA010162 +:103100001268C9B29047D7F8380905F07F01026804 +:1031100012689047D7F8380941460268126890470C +:10312000019B81E7BAF1A00FE2D003D9BAF1B00F49 +:10313000DED079E704F0E002802AD9D074E700BF3E +:1031400008BB0020684C0020EC23002048380020F9 +:10315000E01C0020D01C0020D81C0020BAF1F00F89 +:103160003FF43CAF1AF0800F3FF438AF09F1FF3164 +:103170002A041B0107F52660090202F4FE02DBB2F5 +:1031800001F470611143194341EA0A2141EA1A111D +:1031900041EA086103F04AFCD7F808211EE7BAF1BA +:1031A000E00F7FF45DAE07F5805409F1FF31D4F8EC +:1031B00088014AEA01010368C9B21B689847D4F83C +:1031C000880105F07F0103681B689847D4F88801DF +:1031D000414603681B689847D7F808213CE6BAF1D6 +:1031E000A00FE0D003D9BAF1B00FDCD038E604F07C +:1031F000E004802CD7D033E682B030B585B008AC7F +:1032000084E80C009DF821209DF824419AB1F02A11 +:1032100016D1BDF8233073B19DF825200125019406 +:10322000A2F1F0020295B2FA82F2520900920DF177 +:103230002502FDF719FF05B0BDE8304002B0704728 +:103240009DF82230CDE901349DF824409DF82330CB +:103250000094FFF775FD05B0BDE8304002B070473F +:1032600070B54FF0010C84B0002614460546CDE938 +:10327000016CFF2600961E46FEF7D8FA621E06F085 +:103280007F0602F00F0202EB821205EB4205354485 +:1032900095F80F0104B070BDF0B49DF814409DF88E +:1032A00018509DF81C609DF8207012B91046F0BCB3 +:1032B0007047CDE90667CDE90445F0BCFEF72ABCAE +:1032C00070B49DF80C309DF810409DF814509DF896 +:1032D000186012B9104670BC7047CDE904560394CB +:1032E00070BCFEF761BA00BFC380102901FB02F376 +:1032F0009DF800C002714FEA8323124A4180126890 +:103300004FEAD30380F800C0C0E9033211D9022389 +:10331000B1F5007F438111D20C238909037210D0CB +:103320000D235A1C49089C46D3B2FAD180F808C034 +:1033300070470122082342810372704710230372F1 +:103340007047704708BB002070B5164C05460E4606 +:103350001548112107F032FB144804F0C7FF20463E +:103360000EF0CCFF3146204600F0F6FB2B78012210 +:10337000934084F8302184F82F2184F8A5306B899C +:10338000022B09D00021074800F052F9012105481D +:10339000BDE8704000F05ABA0021204600F048F91C +:1033A000F0E700BF18B100203C150020684C002059 +:1033B0002DE9F04F85B08DE80E000A4619461A44F3 +:1033C000C3689A4200F28680002979D08046DFF8EF +:1033D00010910126DFF80CB1404CDFF80CA1B8F8D1 +:1033E00006300098591E98F80870B8F80A20014075 +:1033F00020FA07F7C2F188025D1A029BADB29D4226 +:1034000028BF1D4698F8003089F830611F43954267 +:1034100089F82F614FEA4707A8BF1546FFB289F820 +:10342000A570B8F80A30022B4ED0ABB29DF8001050 +:1034300048461D46039300F0FBF801992A4648468A +:1034400000F00CF90121484600F000FA28BB642581 +:103450006168DBF80020AAFB02324FF4FA73920C89 +:1034600003FB02F263685B1A9A42FBD889F8A570E5 +:1034700089F8306189F82F61B8F80A30022B0FD033 +:103480000021484600F0D4F80121484600F0DEF95A +:1034900058B1013D15F0FF05DAD105B0BDE8F08F58 +:1034A0000021484600F0C4F8EAE7039B009A1A445A +:1034B0000092019A1A440192029AD31A02938ED171 +:1034C000002005B0BDE8F08FC0F30721484600F0AA +:1034D000AFF8AAE7092005B0BDE8F08F001000E0C2 +:1034E00018B10020644C002083DE1B432DE9F84F07 +:1034F0009B461746CA18C3689A425DD8BBF1000FB5 +:103500004ED0824689462E4C9AF808805A46BAF820 +:1035100006604FF001009AF8001029FA08F8731EAF +:10352000882A48EA010884F8300103EA090328BF21 +:1035300088225FFA88F884F82F01F61A4FEA4803C8 +:10354000964284F8A530BAF80A3028BF1646022BF6 +:103550002AD05FFA89F1204600F06AF8012120465E +:1035600000F074F90546E0B90123F2B24146204665 +:1035700000F0EAF97EB194F8A23094F8A320591C27 +:103580009A42234416D99A7E84F8A2106B1C7A556D +:10359000DDB2AE42EFD8BBEB060BB1443744B3D13A +:1035A00000252846BDE8F88FC9F30721204600F022 +:1035B0003FF8CEE7FF22E9E709252846BDE8F88F66 +:1035C00018B1002000B583B001230DF10702FFF709 +:1035D0008DFF20B99DF8070003B05DF804FB404261 +:1035E00003B05DF804FB00BF90F8A32090F8A200A0 +:1035F000101A704790F8A23090F8A3209A4205D98B +:103600005A1C034480F8A220987E70474FF0FF3088 +:10361000704700BF90F8A23090F8A3209A4202D9D8 +:103620001844807E70474FF0FF307047704700BFEE +:103630000346B0F8300178B193F82F21882A03D9D6 +:10364000012200205A60704702F1010C01201A4447 +:1036500083F82FC182F8A510704700BF38B5B0F8C5 +:1036600030410CB9204638BD90F82F310546C3F1E2 +:103670008904A2420DD8144605F1A500224618443B +:1036800005F07CFA95F82F312046234485F82F3138 +:1036900038BD01224260EFE738B5002513464FF4EC +:1036A0007A720446C0E901521548882221612946F0 +:1036B000206004F11A00636125732576657609F0B0 +:1036C0001FF98922294604F1A50084F8A25084F844 +:1036D000A35084F8A45009F013F9204684F82E5121 +:1036E00084F82F5184F8305184F8315184F83251E4 +:1036F00084F8335184F83451C4E94E5538BD00BFC5 +:10370000CC4200202DE9F04FD0F814A01524017E02 +:103710008146437E83B00AEB0111384A0AEB03135A +:10372000374F097A93F8283002EB01150901E86850 +:1037300052F8018002EB0311D5F804B01B01CE68EA +:10374000D558CBF80040C8F88400D8F804304A684F +:1037500003432C490192C8F804301460C5F8846012 +:103760006B6833436B60284B4C683A68A3FB0232AA +:10377000920C02EB820252004B681B1B9A42FBD850 +:103780004FF0090C1F4ADFF880E0D8F808300342F8 +:1037900002D0AB6833422FD1C5F8886054683968CD +:1037A000AEFB0131890C01EB810153681B1B99426F +:1037B000FBD8C5F8846054683968AEFB0131890CC8 +:1037C00001EB810153681B1B9942FBD8BCF1010C32 +:1037D000DBD1604699F81830019A0AEB0313DB68D5 +:1037E000CBF8003099F819300AEB031ADAF82C30CC +:1037F000136003B0BDE8F08F0120EBE774450020B3 +:10380000644C0020001000E083DE1B430E4A10B51C +:103810001168046905E0DB0107D413685B1A102BFB +:1038200008D8636913F0007FF5D14FF4FE430120FF +:10383000636110BDFFF766FF0028FAD04FF4FE4326 +:1038400001206361F5E700BF08BB00202DE9F047C8 +:1038500090F82FA1BAF1000F58D081468846FFF7A3 +:10386000D5FF002852D0374E0024376816E06B6928 +:103870001A0544D4580558D499044CD43268D21B44 +:10388000322A48D8544507D9EA6D520704D19B051E +:1038900055D4B8F1000F52D007F0CAF85445D9F802 +:1038A0001050E4D8EA6D510702F00703DFD413E0AB +:1038B00099F8A5200133022442F48062042B2A6681 +:1038C00027D08A4503F1010309EB01020ED992F8D2 +:1038D000A520042B2A66CAD00121002CE8D021465D +:1038E000013301348A4509EB0102F0D8B8F1000F29 +:1038F000BDD04FF400732B666B691A05BAD52B69DE +:10390000042043F440732B61BDE8F0870420BDE838 +:10391000F0870124ABE72B694FF40072042043F4D5 +:1039200040732B612A66BDE8F0872B694FF4007263 +:10393000022043F440732B612A66BDE8F087002023 +:10394000E5E700BF08BB00202DE9F04782460C46A2 +:1039500015461F46FFF75AFF002800F08F806300CE +:103960000021012DDFF81C81DBB240F2014638BF97 +:1039700001250C461E43D8F80090AAF8A2101EE0BC +:103980009AF8A330872B3DD951690B0557D411F410 +:10399000105F67D1D8F80030A3EB0903322B61D850 +:1039A0009AF8A330AB4208D3022C06D9D36D58073E +:1039B00003D18B0547D4002F45D007F039F8022CEE +:1039C000DAF81020DCD8D36D590703F00700D7D4FC +:1039D00021466C1E084444F4807441B916660131D6 +:1039E000431A032B01D80229F7D90C46C8E701294D +:1039F00031D017B14FF4007313669AF8A330032443 +:103A0000872BC1D8D16D11F4E02FC1F3024EBBD08A +:103A1000591C9E441933C9B25FFA8EFE5AFA83F3D9 +:103A2000D2F870C0481C71458AF8A310C1B203F8DF +:103A300001CFA9D08929F3D151690B05A7D5136905 +:103A400043F440731361D36D13F4E02F05D19AF85A +:103A5000A300BDE8F0871466C1E7136943F400735F +:103A60001361F4E713694FF4007143F44073136179 +:103A70001166D36D13F4E02FE9D0EEE70420BDE822 +:103A8000F08700BF08BB0020036970B5D3F814515C +:103A9000044615F4706201D0C3F81421AE070BD5AB +:103AA000D3F8701108043ED50022012084F8A2202A +:103AB000224484F8A3009176EA0710D594F8306187 +:103AC000F6B194F82E6194F82F21B24227D9721CD6 +:103AD000264484F82E2196F8A520C3F86021AB0572 +:103AE0000DD594F8A30018B1D4F83C3103B1984730 +:103AF0000023A4F8A230A4F82E3184F8303170BD30 +:103B0000D4F838210AB190472369002284F82E2185 +:103B1000012284F8302194F82F21B242D7D8002214 +:103B2000C3F86021DBE794F8A320872AC4D8501C8F +:103B3000C0B2BDE70148FFF7A7BF00BF18B1002022 +:103B40000148FFF7A1BF00BF58B200200148FFF7AE +:103B50009BBF00BF98B3002010B4144C002203692F +:103B6000A1421A6114D8124C012012494FF430328C +:103B70009C6458629962DA629C6C00204FF00111DB +:103B800001221C6518625DF8044B99651A61704743 +:103B90000948814207D9094C09480A499C645A627C +:103BA0009862D962E8E7084C0848F6E77F1A0600F1 +:103BB0003B372819B80B05053F420F000A090704D7 +:103BC00060090101007F05001C1A120C100E020290 +:103BD00010B5094C094922460948FFF75DFD04F17B +:103BE000500208490848FFF757FD04F1A0020749B1 +:103BF0000748FFF751FD10BD6CE1016000003F4038 +:103C000018B1002000803F4058B2002000C03F4063 +:103C100098B30020704700BF10B404682469A4461C +:103C20005DF8044B604700BF30B40468BDF808502D +:103C30000295A46BA44630BC604700BF30B4046852 +:103C4000BDF808500295E46BA44630BC604700BF45 +:103C500030B4BDF9085004680295BDF80C500395C6 +:103C6000246CA44630BC604730B5002283B00468A1 +:103C7000B0F90E50019111460095B0F90C30246C4A +:103C8000A04703B030BD00BF704700BF01F0030381 +:103C90008376CB0705D40289B0F90A308281C381CB +:103CA00070474289B0F908308281C381704700BFF4 +:103CB0002DE9F0411C460B46016884B0114E0546C3 +:103CC0004F69BDF82880B74210D1013CCDF804807F +:103CD0002846144424B200948C6A1946A0472B68E5 +:103CE000DB6AB34209D104B0BDE8F081CDE902320C +:103CF000B8472968DDE90232E7E7284604B0BDE8A5 +:103D0000F0411847895802002DE9F043056885B055 +:103D1000124E04466F699946BDF83080B74210D103 +:103D200009F1FF33CDF80480009220460B44AD6AC0 +:103D30001BB2A8472368DB6AB34209D105B0BDE8CE +:103D4000F083CDE90212B8472568DDE90212E7E702 +:103D5000204605B0BDE8F043184700BF895802006F +:103D60002DE9F043994287B00546BDF93840BDF8CA +:103D70003C6022D0A24212D00768DFF88480D7F8D6 +:103D80001490C14533D12846CDE90046BC6AA0470E +:103D90002B68DB6A434525D107B0BDE8F083994223 +:103DA0001CDC0E9601332C6828465B1AE46B1BB2B0 +:103DB000A44607B0BDE8F0436047A24202DD1346C7 +:103DC00022461C460E96631C2C6828469B1AA46B40 +:103DD0001BB2A44607B0BDE8F04360470846194649 +:103DE0000346DEE7284607B0BDE8F0431847CDE9B3 +:103DF00004230391C8472F680399DDE90423C2E730 +:103E000089580200D0F800C02DE9F04F90461F46B7 +:103E10001F4A83B0DCF8143005460C46BDF93090DB +:103E20009342BDF834A029D12744A7421EDDDFF814 +:103E300064B00AE00134CDF800A0DCF8386024B2A8 +:103E4000B047D5F800C0BC4210DADCF820604B4621 +:103E5000424621465E452846ECD00134CDF800A00C +:103E6000B047D5F800C024B2BC42EEDBDCF82C3001 +:103E7000074A934206D103B0BDE8F08F9847D5F8C2 +:103E800000C0D1E7284603B0BDE8F04F184700BF97 +:103E9000895802009D5802002DE9F04F1D46036825 +:103EA0001646DFF8BC905A6985B004464A45BDF90C +:103EB0003880BDF83C7043D1D3F824B03246DFF8E7 +:103EC000A4A020460097D345039108BFD3F83CB087 +:103ED0002B46D847236808F1FF320399D3F824B062 +:103EE00032440097D34512B234D1D3F83CA02046D7 +:103EF00003912B46D047039923683246DFF868A028 +:103F00002046D3F820B0013D0097D345039108BF68 +:103F1000D3F838B04346D8470399226843460D4446 +:103F2000204629B2156A0097554508BF956B324661 +:103F3000A8472368DB6A4B4507D105B0BDE8F08F81 +:103F40000391904723680399B6E7204605B0BDE882 +:103F5000F04F184703912B462046D8470399CBE7EB +:103F600089580200B15802009D5802002DE9F04F17 +:103F70002DED028B85B098460C461646BDF940C023 +:103F8000A8EB010A0746BDF84490ACEB0203BAF176 +:103F9000000F83EAE375B8BFCAF1000AA5EBE37529 +:103FA0005545019566DD4146204622464346344646 +:103FB000E04606468C46444508DD1D46304621460F +:103FC0001346664644462A46844688469B1AA8EB12 +:103FD0000402002B15B292B2B8BF5B42002D0092D2 +:103FE000B8BF0135B4454FEA65053ADD01220292BA +:103FF0009BB208EE107A03931EE018EE101A204FC1 +:1040000018EE100AD1F800C03146DCF818B0BB45F4 +:104010002ED1DCF810B0D847039B0134029AEB1A7A +:104020000099B21824B21DB29BB2002D0B4401DAE4 +:1040300016B21DB2A04516DB019B22462146534510 +:104040004B46DADC18EE103A0D4F324618EE100AE5 +:10405000D3F800C04B46DCF818B0BB45D9D0D847E0 +:10406000DAE7A04508DA05B0BDEC028BBDE8F08FB9 +:10407000D847D1E763469EE74FF0FF320292B7E799 +:104080008D5802004281C281084A018181814FF02E +:10409000FF318261064A10B4002402604460047754 +:1040A0000462C0E904415DF8044B7047010100015E +:1040B000104200202DE9F04F8BB01E469CB2834683 +:1040C000BDF95430002E059103F101039DF8501005 +:1040D00098B20491C4EBC43308904FEA43031BB277 +:1040E0000393BDF85830069340F39F80C4F1010458 +:1040F00093B201F00102814624B20025984609934B +:104100000792029488E0039B771E029A02333FB223 +:1041100012FA83F41BB2A4B2039301351FFA85FA95 +:104120002DB204EB4A04AF4204F1010423B202931E +:1041300038DB079BCBB1059ABBB2089C0AEB0201A6 +:10414000099ADBF80000D21A04EB4303046A09B2AF +:104150000FFA83FC3E4B12B29C426ED1069B009339 +:104160006346806B04465846A047049B9A0719D5BE +:10417000059B089CA3EB0A0ADBF80000BBB2099A76 +:104180000FFA8AF1D0F820A0D21A04EB4303304C86 +:1041900012B2A2451BB256D1069C0094D0F838A0AA +:1041A0005846D047B7422DD0079B9BB1DBF80000A3 +:1041B0000FFA88F2059BD0F820A0254C99190FFA28 +:1041C00089F3A24509B233D1069C0094D0F838A0F7 +:1041D0005846D047049B9B0725D5059B0FFA88F2CC +:1041E0001B489E1B0FFA89F331B2DBF80060D6F84A +:1041F00020A0824506980090584608BFD6F838A0FF +:104200003E46D04708F1FF3809F10209AE421FFAD5 +:1042100088F81FFA89F908DD029B002BBFF673AFFF +:104220009CB2374679E73E46ECE70BB0BDE8F08F2D +:10423000069800905846D047CCE706986346009011 +:104240005846A04791E7069800905846D047A9E7FE +:104250009D5802002DE9F043D0F800E01E461F4FA4 +:1042600087B0DEF8143004461546BDF83880BB42EE +:1042700028D11FFA86FCDEF8209019484FEA4C033B +:10428000A5EB0C028145CDF8008003F1010312B2C9 +:1042900008BFDEF8389020461BB20591C8472A4671 +:1042A0000320002533460599CDF80880CDE90005A7 +:1042B0002046FFF7FFFE2368DB6ABB4208D107B048 +:1042C000BDE8F08305919847D4F800E00599D0E760 +:1042D000204607B0BDE8F043184700BF89580200E8 +:1042E0009D5802002DE9F04F89B01F4682460E46C8 +:1042F000BDF94840BDF850109C4225460068A8BF53 +:104300001D46BDF94C300591002D2F49B8BF013530 +:104310006D109D42A8BF1D4643698B4247D11FFACD +:1043200085F8D0F81CB0B6B228494FEA4809079280 +:10433000BBB206EB08071FFA89F98B453FB2059916 +:104340000693A3EB090306F1FF361BB2CDE900414A +:10435000394608BFD0F840B05046013CD8470699CE +:10436000079AA4EB0904314401234244059E24B278 +:10437000A1EB080112B2504609B2019400932B46FA +:1043800002960592FFF796FE2B46059A394650464F +:10439000CDE9014602240094FFF78CFEDAF80030E4 +:1043A000094ADB6A934209D109B0BDE8F08F504653 +:1043B00006929847DAF80000069AB0E7504609B02E +:1043C000BDE8F04F184700BF89580200C5580200E9 +:1043D0002DE9F04F8FB0944605461F460C920E46CD +:1043E000BDF96020BDF96830BDF86C009445BDF999 +:1043F00064400D920593039040F3E3809C4540F3A5 +:1044000017813B463746CDF834C01E460C920C9AB5 +:1044100005998A4240F31F8133460C9126460D9937 +:104420003C461F4605910D92D5F800C08E4ADCF837 +:104430001430934240F0D2800C9B059A934200F0D6 +:10444000D680B8B2DDF834E0B6B2059FA3B20790CB +:104450000446801B1FFA8EFABDF83010BAB2BE4572 +:1044600000B20890AAEB0100A2EB0101A2EB0A0244 +:1044700000B212B209B209900A92A3EB0602A3EBB2 +:10448000040304910FFA82F91BB2069300F0D8805E +:104490000AF1FF3A0FFA8AFA0C9C544500F3D980CE +:1044A0000027724BAB46B8460B930BE001340398E0 +:1044B00024B200905846DCF83C50A847A24528DBBF +:1044C000DBF800C0099B224698FBF3F0089B3044C0 +:1044D0009844049B01B280B297FBF3F333444F44FA +:1044E0001DB29BB2A9429E4602DD03462946704694 +:1044F0000133DCF824501B1A0B9885421BB2D5D02F +:10450000039A5846009222460134A84724B2A24595 +:10451000D6DA5D46DBF800C00D9BE71A0C9BA4EBD6 +:104520000308069B03FB07F7059B09FB08F8A3425A +:104530003FDB4E4B604608969A460BE0039E0134E3 +:10454000009624B2D0F83CB02846D847059BA34239 +:104550002DDB28680A9B089A97FBF3FE069B1F44F5 +:10456000079B9E44049B98FBF3F313440FFA8EF1D0 +:10457000C8441FFA8EFE0FFA83FC22469BB26145A7 +:104580009B4602DD73466146DE460133D0F824B017 +:10459000A3EB0E03D3451BB2D0D0039A284600925A +:1045A00022460134D847059B24B2A342D1DAD5F87C +:1045B00000C0DCF82C302C4A934234D10FB0BDE857 +:1045C000F08F0D9B059A93423FF721AFD5F800C0BD +:1045D000254ADCF8143093423FF42EAF2846984722 +:1045E0000C9B059AD5F800C093427FF42AAFBE42D7 +:1045F00002DD33463E461F46A64224DDDCF8246039 +:104600007B1C1A4A21461B1B28469642039A1BB262 +:1046100000920C9A08BFDCF83C60B0472B68124A45 +:10462000DB6A9342CAD028460FB0BDE8F04F184766 +:104630000C9A33460D993E460D921F460C91F3E6B7 +:10464000DDF834A028E7A742B8BF274634463FB27A +:10465000D4E70C9C60E70D9A3B46059927460592E6 +:104660001C460D91E0E600BF89580200B1580200D7 +:104670002DE9F04F2DED028B91B091468246BDF8A9 +:10468000702004919DF8781005920E91026A9DF8B1 +:104690007C10BDF874B00291002A00F0B380117A4A +:1046A000D2E900245B1A02990392DBB20E9A1143FD +:1046B00004EBC30234F8337092F905000129D37872 +:1046C00092F8028092F906400A9308905AD8002383 +:1046D0000B930993A34BDAF8002019460F93536903 +:1046E0008B4240F07D810A9B002B78D01FFA89F322 +:1046F000D346DDF838900C9323440D9300231D46D8 +:1047000007930693B8F1000F61D006990B9B029CAA +:10471000CB180C98079E03FB040300241BB208EE81 +:10472000103A0D9B0B441BB208EE903A05E00134A1 +:104730006D00E4B2EDB2A04545D9334601365907C4 +:10474000F6B203D17B1C0399CD5D9FB22B06EED54B +:10475000B9F1010F1BD1029B012B18D1089B5846C0 +:104760000499D2F818A059187F4B21449A45059B0B +:1047700008BFD2F810A009B218EE902AD047DBF893 +:104780000020D4E703B2099323B20B93A2E7099B5D +:10479000D2F81CA01919DFF8D8E1049BBDF9080074 +:1047A000F24501FB09310FFA89F3009009B220D1DB +:1047B000059801905846D2F840A018EE102AD0472C +:1047C000DBF80020B3E7079B4344DBB20793069B6B +:1047D0000A990133DBB29942069393D8DA46D36A39 +:1047E0000F9A934240F0F58011B0BDEC028BBDE80A +:1047F000F08F059A5846019218EE102AD047DBF840 +:10480000002094E7B0F90C2004998A42ECDDB0F95D +:104810000E204A45E8DD06220E9812FB0012002AFF +:10482000E2DD029A09EBC202002ADDDD9AF81C20C3 +:10483000012A03D0AF2B01D90133DBB2494ADAF8A0 +:10484000000011460F9242698A4240F0F080BDF8A4 +:10485000102003EB8303CDF80C90D14611460B9248 +:10486000424ACDF810B0D3180A46DDF814800893F8 +:104870004B1D0E999BB2029F8B4609938BB20A93F4 +:104880000346CDE90622089A08240025CA4612F8F4 +:10489000016B0892BDF91C2008EE102A0FFA8BF26A +:1048A00008EE902A1CE0BBF1010F039A36D1012FCC +:1048B00034D1D3F81890AA182B4812B2BDF91810A9 +:1048C0008145504608BFD3F810904346C847DAF8F0 +:1048D0000030013C0135760814F0FF046DB249D078 +:1048E000F007E0D404988045F3D0BBF1010F039AA0 +:1048F0002AD1012F28D1AA18D3F81890BDF9181081 +:104900000FFA82FC184A91456FD1D3F81090624695 +:1049100003465046C847DAF80030DAE7D3F81C906F +:1049200005FB0722124839B212B28145CDE90018C1 +:1049300001D1D3F8409018EE903A18EE101A504674 +:10494000C847DAF80030C4E7D3F81C9005FB07220B +:10495000074839B212B2814500914DD104990191B5 +:10496000E7E700BF895802008D5802003C10002084 +:10497000C5580200079AD1460A98069902440131A7 +:1049800092B289B20792099A06918A427FF47BAF6C +:104990001846059BDDE9039B5B4515D00E9B012B5B +:1049A0002DD1029B012B2AD1046A4A46234BCDF814 +:1049B00000B09C42BDF924104FF0080308BF846B7F +:1049C0005046A047DAF80000C36A0F9A93423FF4BA +:1049D0000BAF504611B0BDEC028BBDE8F04F18474D +:1049E00050469847DAF800207DE6049B6246504620 +:1049F000C847DAF800306CE7049B01939BE70A9BF9 +:104A0000C46903EB83010B9B029A0B440C4DD2004B +:104A10001946AC42BDF9383009B2CDE9002B4A46FF +:104A200008BF046C5046A047DAF80000CCE75046B7 +:104A300003939047DAF80000039B08E79D580200B3 +:104A4000C5580200036AF0B5074685B0002B3AD07E +:104A50000A292BD00D2933D01A7A914230D39C7A6F +:104A60008C422DD38A1A5C68D2B204EBC204E5787A +:104A7000A278A5B19AB1C57E002D63D1067E437E92 +:104A8000B0F91050B0F912203846CDE902630B4658 +:104A90002946FD8A0195BD8A0095FFF7E9FD217938 +:104AA0003B8A3A7E01FB02333B8209E04FF0000C67 +:104AB000428A417EA0F810C01B7B01FB0323438286 +:104AC000012005B0F0BD0A291ED00D29F8D0C27E04 +:104AD000B0F910400ABBB0F91220067E457E03955E +:104AE0000B4602962146FC8A38460194BC8A009403 +:104AF000FFF7BEFD3B7E3A8A012003EB430302EB46 +:104B000043033B8205B0F0BD428A417E038202EB43 +:104B1000C1034382012005B0F0BD067E0622B0F934 +:104B20000C5012FB0642AA4208DD428A1C46457E12 +:104B3000038202EBC50212B24282D0E7B0F9122022 +:104B4000457ECCE794F90550067E2A44B0F9105012 +:104B5000B0F90CC006FB0252624503DC437EB0F99B +:104B6000122091E70025428A058293F80CC0437E0B +:104B70000CFB032212B2428286E700BF012938BF34 +:104B80000121017641767047036A39B10BB10162A8 +:104B90007047438A0162063343827047002BF6D088 +:104BA000438A0162063B4382704700BF2DE9F0470C +:104BB000046A002C5FD00A2953D00D2959D0A67A57 +:104BC000257A8E4255D3A94253D3491B6568C67EC8 +:104BD000C9B205EBC10191F802C0CD7891F804E0AB +:104BE00091F9058091F90670002E40F088801C88AC +:104BF000B2F90060017E437E08FB016607FB0344B7 +:104C000015FB03F00CFB01F3089D013889B2013B51 +:104C1000B5F9005010FA84F024B213FA86F336B2D4 +:104C200000B2B5421BB201DD089D2E80099DB5F989 +:104C30000050A54201DD099D2C800A9CB4F900407A +:104C40009C4201DA0A9C23800B9BB3F9003083421B +:104C500001DA0B9B188013880EFB01331380BDE82B +:104C6000F08700211180407E217B1A8800FB012201 +:104C70001A80BDE8F0870A2939D00D29F9D0C17E04 +:104C8000B2F90050002952D1B3F90040017E407EB4 +:104C900004EBC000062414FB01540A9D0138013CBA +:104CA000B5F90050A54201DA0A9D2C800B9CB4F99D +:104CB0000040844201DA0B9C2080089CB2F900007D +:104CC000B4F90040844201DD089C20800998B3F9C2 +:104CD0000030B0F90000984201DD09980380138884 +:104CE00001EB410103EB41031380BDE8F087148021 +:104CF000417E1A8802EBC1021A80BDE8F087B2F942 +:104D0000006008EB0C09017EB0F90CA001FB0969F9 +:104D1000D1451FDD00211180217B467E1C8806FBCA +:104D20000144A4B21C80B2F90060017E63E7017EF9 +:104D30000626B0F90C7016FB0156BE420CDD14803D +:104D4000417E1C8804EBC10424B21C80B2F90050DF +:104D5000017E9CE71C884EE7B3F9004097E700BF4F +:104D60002DE9F04F89B00C46DDF848B0ADF81620BB +:104D7000ABF8002047F6FF721399ADF81820ADF894 +:104D80001A204FF6FF720B80ADF81430ADF81C20DE +:104D9000ADF81E200022DDE914A31A80AAF8002035 +:104DA00014F8011B61B381460DF11E0807AF0DF128 +:104DB0001A0606AD05AB0DF116024846CDE902789C +:104DC000CDE90056FFF7F2FE14F8011B0029F1D1DE +:104DD000BDF91C30BDF91820934214DB0133ABF848 +:104DE00000209A1ABDF91E30AAF80020BDF91A2039 +:104DF000934205DB013313999B1A0A80159A13809D +:104E000009B0BDE8F08FBDF91E30BDF91A20EFE7FB +:104E100090F81CC04160BCF1020FC26001D18368F0 +:104E2000184702F09BBD00BF324B334930B5D3E980 +:104E300011542079C8771A6C95F804C081F81CC009 +:104E4000087752B1B2F5004F23D32C4911442A4AB6 +:104E50001964D07682F81BC030BD19680F24D86C55 +:104E60008C6540F20134CA610C614FF47C544C6192 +:104E700003210468246883F83D10214B9C4226D10D +:104E8000037F4260022BC26026D18368BDE83040B8 +:104E900018472D68E98B090422D492B2EA8321686D +:104EA000EC8BA4B2EC82CC8B240405D5CC8BC2F362 +:104EB000080204F47E442243CA83CA8B92B2CA8297 +:104EC00000210D4A1964D07682F81BC030BD2346FC +:104ED0001146BDE830401847BDE8304002F03EBD05 +:104EE000E98BC2F3080E92B201F47E4141EA0E0151 +:104EF000E983D4E7A0AF002000800E400180FFFFCF +:104F0000856A0200324B334930B5D3E91154207918 +:104F1000C8771A6C95F804C081F81CC0087752B1A4 +:104F2000B2F5004F23D32C4911442A4A1964D07694 +:104F300082F81BC030BD19680F24D86C8C6540F214 +:104F40000134CA610C614FF47C544C610321046844 +:104F5000246883F83D10214B9C4226D1037F426098 +:104F6000022BC26026D18368BDE8304018472D6807 +:104F7000E98B090422D492B2EA832168EC8BA4B2B3 +:104F8000EC82CC8B240405D5CC8BC2F3080204F44C +:104F90007E442243CA83CA8B92B2CA8200210D4A40 +:104FA0001964D07682F81BC030BD23461146BDE897 +:104FB00030401847BDE8304002F0D0BCE98BC2F366 +:104FC000080E92B201F47E4141EA0E01E983D4E772 +:104FD00050AF002000800E400180FFFF856A020074 +:104FE0000023C0E90012C0E90233C0E90433C0E97C +:104FF0000633C0E90833C0E90A33C0E90C338363E0 +:105000008387C0E91033C0E91233704708B5084AF6 +:1050100008490948FFF7E4FF084A09490948FFF72A +:10502000DFFF094A09490A48FFF7DAFF08BD00BF58 +:10503000843B002000003A4050AF0020343B002069 +:1050400000C03940A0AF0020E43A002000403940C1 +:10505000F0AF0020704700BF08B503F063FD044BBC +:1050600004491868044A1B680860136008BD00BF43 +:1050700008BB002054BA002050BA0020F8B5474AB7 +:105080004FF0400C4FF480314FF480574FF40055EF +:105090004FF4404443F24200136A9E0770D49E04CA +:1050A00072D5DE0472D5002BF6DA13F480366FD198 +:1050B0005B066FD53A494FF040453A4B4FF44044B8 +:1050C000D1F880200A2042F00302C1F880209D63BD +:1050D0005C631E6003F034FC334AD2F8403143F085 +:1050E0000203C2F84031D2F840319B07FBD42F4D68 +:1050F00001F046FA01242B1F05F17C0243F8044F0E +:105100009A42FBD14FF480720021294807F0F8FB46 +:1051100000222849244B0A700321C3F89040C3F8A9 +:10512000A8112549C3F84821C3F85451C3F84C21AC +:10513000C3F85821C3F84011D3F884211F492048EF +:1051400042F48052C3F88421D3F85821D3F8542173 +:10515000C1F800021B4A4FF0E0214FF48030C1F843 +:105160000C01C3F84821D3F8482142F01202C3F8D9 +:105170004821D3F8482142F44022C3F84821F8BD21 +:1051800094625162906287E7556285E7576283E7D0 +:10519000916281E7C2F824C07EE700BF00800D4025 +:1051A00000C00F4000A00D4000022E400060002013 +:1051B000F4B500209ABC0020158B0100005400209B +:1051C0001D74020004000003C36853B3632970B563 +:1051D0008CBF002601260C4616BB054603F004FCD6 +:1051E0002649A8600868264B00283AD0D3F88C20BE +:1051F00022F07F42944215D34369A11A23B929E0D2 +:105200005C69891A3CB323461A698A42F8D99869BD +:10521000521A1A61A861C5E904139D61AB695D6109 +:1052200070BD704772B64FF00070C3F88C60121BEF +:10523000C3F8440108682C61013CAE6168610261F9 +:105240004FF040420D608561C3F88840C3F88C2060 +:1052500062B670BD034600222961C5E905235D6180 +:1052600070BD661E4FF04042A8610D60C5E9044064 +:10527000C3F88860C3F88C2070BD00BFC0B50020A3 +:1052800000022E4072B6194A1368FBB183421AD14C +:1052900017485B6930B40024C0F88C4023B3D0F8C1 +:1052A0008C101D6921F07F4129441961C0F88810D4 +:1052B0004FF04041C0F88C109C61136062B630BC66 +:1052C0007047984204D05B69002BFAD162B67047F0 +:1052D000D3E905214A61002AF8D018691369916160 +:1052E0000344136162B670471360E7E7C0B500205E +:1052F00000022E40036984469A68F0B50D465106B7 +:1053000003D41B689A685206FBD54022D5F808E002 +:1053100005F13401EE6BAA602A681A606A685A6067 +:10532000EA68DA602A691A616A695A61AA699A6147 +:10533000EA69C3F828C0DA61EA6A1C68DA622A6B93 +:10534000012C03C91A6303F1340282E803001A46F0 +:10535000DE6303D0126811680129FBD115600122B8 +:105360002A601A6895421A462ED000261168144603 +:105370000F680A4666622646BD422162F6D10021C8 +:10538000546211629CF8341011F0FD0F09D10F48DE +:105390000168596289B10B6202600120C3F808E01C +:1053A000F0BD0B48016859620029F4D109490B602E +:1053B00002600120C3F808E0F0BD07490B600260FD +:1053C0000120C3F808E0F0BD0024D8E7FCB60020B7 +:1053D00004B7002008B7002000B700202DE9F047EF +:1053E0009846CB88B3F5804F02D90020BDE8F087FE +:1053F0000D468146174601F00BF906460028F4D009 +:1054000001F006F9044600286CD0E98800293BD158 +:10541000DFF8F0C03060394B0122DFF8ECA02B4000 +:10542000D9F80000D5F804E0D5F800907260C6F80D +:1054300008A0F56003F58055356103F500557561E9 +:1054400003F5405503F58043B561F36100236260C5 +:10545000C4F808C0E3604FF48053C4F83C80236173 +:105460004FF40053A06263614FF44053A3614FF4C3 +:105470008043C4E90B71E36131462260C4E90D9EAB +:10548000BDE8F047FFF736BF01F0C2F870B32A78E5 +:10549000E988D209194BDFF874C04FEA022E3B406D +:1054A00082F001024EEA014E4EEA0C0C4FF0010E62 +:1054B000C0F804E0C0F808C003F5805CC760C0F81D +:1054C00010C003F5005CC0F814C003F5405C03F5A0 +:1054D0008043C0F818C0C361094B306043EA022C16 +:1054E000046098E7304601F09BF87EE7304601F013 +:1054F00097F8204601F094F877E700BF00F0FFFF2F +:105500008080008080810080800208008000008010 +:105510002DE9F84F4FF0E0244FF4803A99460746C2 +:10552000D4F80C318B46C4F88CA1164603EA0A085D +:1055300001F06EF8054600287DD0731E9C0B08D044 +:10554000824601F065F8002860D0013CCAF80000EE +:10555000F6D100230121B6F5804FC0F83C900663D8 +:105560002A460160374CC0E90A7BC0E90D33364852 +:1055700020D997F83530A6F58046516044EA0323D8 +:10558000B6F5804F93600BEA0003C2F80CB00BF540 +:10559000804B03F5805CC2F810C003F5005CC2F8D4 +:1055A00014C003F5405C03F58043C2F818C0D36112 +:1055B0001268DED8360497F83500234C294646F4A5 +:1055C000004301250BEA040443EA002355603846F2 +:1055D00043F08003936004F58053C2F80CB013616C +:1055E00004F50053536104F5405304F5804493617E +:1055F000D461FFF77FFEB8F1000F05D04FF0E02334 +:105600004FF48032C3F80C21BDE8F88F2C462D688A +:10561000204601F005F85445F8D1B8F1000F07D045 +:105620004FF0E0234FF480320020C3F80C21EBE769 +:105630000020BDE8F88FB8F1000FF9D0C4F80CA134 +:10564000E2E700BF8000004000F0FFFF2DE9F04FCF +:10565000534D83B02F6837B10026BB681A0605D5B5 +:105660003F6A002FF9D103B0BDE8F08FBB681B047F +:1056700004D5BB6ADB6B0BB138469847D7E90823E2 +:1056800063B11A626AB1B96853624C0645D43846B0 +:10569000174600F0C5FF002FDFD1E4E72A60002A9B +:1056A000F1D140490B60BB685806F0D5BC6A38465A +:1056B000019200F0B5FF2369019A33F01F03D2D0A5 +:1056C0001746934605E09A681A681B6833F01F0373 +:1056D00005D09A685106F6D52361E660A661BBF154 +:1056E000000FBED0DBF808301A040AD5E26B43F095 +:1056F000400358462AB1DBF82820CBF80830D36B9A +:105700009847DBF820A0584600F08AFFD346BAF14C +:10571000000FE7D1002FA0D1A5E73846BC6A01925F +:1057200000F07EFF0020019A84461746834611460A +:10573000126A8B6AA3420AD0002AF8D1C0B9BCF120 +:10574000000F25D1236933F01F03C2D1C7E74B6A8D +:10575000D3B11A62AAB15362BBF1000F0FD0CBF8DC +:1057600020108F4208BF17460E62002ADFD1E5E7FE +:105770000C4BC3F80080BCF1000FE3D008E08B466F +:10578000EFE798460120E7E791464FF0010CE1E78B +:105790002369C5F8009033F01F039AD19FE700BF3B +:1057A00000B70020FCB600206C4B2DE9F041D3F887 +:1057B00044516803C3F8445109D5694E346834B183 +:1057C000684FA3681A0659D5246A002CF9D1290319 +:1057D00009D5654E346834B1644FA368190662D5A3 +:1057E000246A002CF9D1A8077BD46B070ED55B4B3C +:1057F000D3F8844144F02A02A707C3F884212AD4AD +:10580000260703D45A4B1A78022A6DD005F080730C +:1058100033B1574B1A78012A00F09680032A78D0CA +:10582000A90116D5534A116899B14B69136053B158 +:105830001A69002449489C61013A4FF04043C0F87E +:105840008820C0F88C30C8684B4A03689B68934234 +:1058500077D1BDE8F08114F00106454A67D0117890 +:105860000129CDD80120454925F0807510704FF0F1 +:105870004042C3F88010C3F88420D1E7A3681B041A +:1058800004D5A36ADB6B0BB120469847D4E90832F4 +:105890002AB313620BB35A6220461C4600F0C0FEC6 +:1058A000002C8ED193E7A3681A0404D5A36ADB6B9E +:1058B0000BB120469847D4E908324AB1136253B17C +:1058C0005A6220461C4600F0ABFE002C85D18AE7C8 +:1058D0003360002BF4D13A60F3E73A60DCE73360E1 +:1058E000D8E7FFF7B3FE80E7640799D503201B498B +:1058F000187042F21070C1F880004FF04040C1F8BB +:105900008400D1F88411880501D51D494A63EA0154 +:1059100086D50420114900221870D1F8840111465F +:10592000C0F3816000F06EFB164B186078E71670CC +:105930000222134B134F9A63386800F0CDFD3E608E +:105940005EE7BDE8F0411847044A02211970D2F819 +:10595000843143F48073C2F8843161E700022E4041 +:1059600000B70020FCB6002008B7002004B70020D4 +:105970009ABC0020C0B50020C96C0200A0860100BE +:1059800000A00D4010B700208D4B012A03FB01F150 +:10599000036B2DE9F04F85B01B7D4FEA114102905A +:1059A000104638BF0120022B00F0948005234FF0F1 +:1059B000010A4AEA5A02824280F0E480013B4FEA3F +:1059C0004A0AF6D14FF0200ACDF80CA0029A0398AB +:1059D00092F83530A2F84000002B40F0CF8084319F +:1059E00002244F0900234FF0FF36DFF8D8B1B0464C +:1059F00099460193DDF804E00BEBCE02002512F886 +:105A0000010B5178384492F802C02144D378A44461 +:105A10008842234454D960454ED9834238BF034657 +:105A2000B34202D2A946F0461E460135042DE6D106 +:105A3000D644BEF11F0FDFD9019B01339A45019374 +:105A4000D8D1BB2E42D8FFB2B8F11F0FE4B21FFA73 +:105A500088F5DDE90232A3F84420A3F8489083F8E2 +:105A60004A7083F84B40A3F8465015D809EBC80399 +:105A7000019E5B44F0001978B0449A783944B8F13B +:105A80001F0F224419709A70D9781A792144224440 +:105A9000D9701A710344EED901201C23029900FA2F +:105AA00009F203FA09F3A1F8425081F8362081F88F +:105AB000373005B0BDE8F08F634538BF6346AFE7C8 +:105AC0006145F9D98B4238BF0B46A9E7002005B0E4 +:105AD000BDE8F08F0F2803464FF0010C01F157018C +:105AE00028BF0F234FF0FF3E4C090026013B0299CF +:105AF000DFF8D0B077460CFA03FCBCF5807F654632 +:105B000028BF4FF48075EB08012B38BF0123A1F8A3 +:105B10004030334600201BF803102B4421448842B8 +:105B200038BF0846FF2BF6D9704501D28646374666 +:105B30000136B542EDD1BEF1BB0FC7D8029BE4B22E +:105B4000FF2FA3F84450A3F8467083F84A4008D8C2 +:105B50003B461BF8031021440BF803102B44FF2B8A +:105B6000F7D9012A12D9022A1ED0BCF1040F21DC78 +:105B700007F0030211239340DBB208E066310227ED +:105B80004C092FE71FFA8AF303931FE7FF230299BB +:105B9000FF080022012081F83630A1F8427081F818 +:105BA000372005B0BDE8F08F07F001025523934080 +:105BB000DBB2ECE707F0070201239340DBB2E6E734 +:105BC000AB2A0100F4B50020B0F84210B0F840C094 +:105BD0001F2934D830B51A4C40F0020509E0B3F85B +:105BE00040E0E64511D2026044F8215061441F298B +:105BF00024D854F82120D307F5D402F0060E22F061 +:105C00001F03BEF1020FEAD007E09842EED01A68F7 +:105C1000D20706D41B6823F01F03B3F84020624567 +:105C2000F3D21A468242E1D0126832F01F02F9D153 +:105C300061441A681F2902601D60DAD930BD7047BF +:105C4000006000202DE9F84305460E4614469946AB +:105C500000F0CEFC0746002865D000F0D9FC804655 +:105C6000002800F0868060220021384606F048FEB9 +:105C70003C22002108F1040006F042FE01224023EC +:105C8000032EC8F80020C8F80830C7F8108087F83D +:105C900035907A613D6387F8346058D03CB16B68C9 +:105CA000002B61D01A469B6B002BFBD19763297D9B +:105CB000002E3BD101294FF480408CBF00220122ED +:105CC000D206230243EA0133089943EA0143697D7E +:105CD0000B43134397F83720034343F070437B6033 +:105CE000AB7DE97D1B0443EAC15343EA022397F8E5 +:105CF0003620134343F08043BB6036F0020318D1D3 +:105D0000224BD3F85821D2B9796847F0020241F406 +:105D1000004179603A60C3F85871D3F8402142F0ED +:105D20002002C3F840213846BDE8F883002002462F +:105D3000C7E7032EF7D13846FFF746FFF3E71168B0 +:105D400047F00203384639601360BDE8F883DDE9A7 +:105D500008123846FFF718FE814678B1002C9ED114 +:105D6000297D20462246ACE7297D6F60002EA1D018 +:105D7000DCE73846474600F043FCD4E7404600F0F5 +:105D80004FFC384600F03CFC4F46CCE700022E406A +:105D9000F8B590F83430044613F0FD0F3BD103689A +:105DA00023F01F03984200F0CB801A68194622F0B6 +:105DB0001F039C42F9D163681D0400F1AC80236885 +:105DC000734A0B60D2F8403143F04003C2F84031CF +:105DD000D2F844319806FBD52023C2F844316D4EE9 +:105DE00035683DB16C4F28462D6A836AA3427FD047 +:105DF000002DF8D1256935F01F0307D02B68284600 +:105E00001D4600F00DFC35F01F03F7D12046BDE81C +:105E1000F84000F0F5BB614800F1800550F8042F10 +:105E2000D1070CD422F01F02944203D156E08C42D9 +:105E300059D00A46136823F01F01DB07F7D5A842A3 +:105E4000ECD1236B1B7D022B6AD0B4F84650B4F81A +:105E500044E01F2DB4F8483094F84A6094F84BC0E1 +:105E600018D803EBC5034E4A4FEACE0713449A787D +:105E700075441878A2EB0C02D978801B1F2D9A70FC +:105E8000A1EB0C011A791870A2EB0C02D9701A71EF +:105E90003B44ECD9434E3568002DABD02846424FE9 +:105EA0002D6A836AA34206D0002DA3D028462D6A0E +:105EB000836AA342F8D1436A002B66D01D62002D8D +:105EC00061D06B62236933F01F0204D150E01B687C +:105ED00033F01F024CD08342F9D1E5E72368A84292 +:105EE00003609BD1ADE72368A842136096D1A8E771 +:105EF000436A002B45D01D62002D40D06B622369A0 +:105F000033F01F0204D12AE01B6833F01F0226D0B1 +:105F10008342F9D16CE74B6843F400434B604EE792 +:105F2000B4F84630B4F84450FF2B94F84A00B1D886 +:105F30001B49CA5C121ACA542B44FF2BF9D9A9E792 +:105F4000134AD2F8403123F02003C2F84031D2F88E +:105F5000443113F40043FAD1C2F858313FE7834289 +:105F60003FF446AF00F05CFB002D7FF43CAF41E70F +:105F7000834299D000F054FB002D97D13AE73B6063 +:105F8000BDE73560B8E73B609CE7356097E700BF49 +:105F900000022E4000B70020FCB60020FC5F00206D +:105FA000F4B5002008B7002004B700200B4B70B5F3 +:105FB0001E688EB10A4DF46814B90AE0646844B1F1 +:105FC0002368DB68AB42F9D0204698476468002C10 +:105FD000F6D1B668002EEED170BD00BF0CB7002020 +:105FE000CD000000064900220B68C0E901222BB158 +:105FF0001A465B68002BFBD1506070470860704701 +:10600000F4B60020F0B583B007460E46154600F002 +:10601000DFFA044680B32422002106F071FC00233D +:10602000082127751A46A675E5752046CDE90013A7 +:106030001946FFF707FE0246206020B300F0F8FA89 +:106040002168134A00232061CA630122114881F8A4 +:10605000352002704FF400220F491048C1E90002B8 +:106060000F4A2046FFF7BAF90E4A13683BB11A46A9 +:106070009B68002BFBD19460204603B0F0BD204606 +:10608000146003B0F0BD2046144600F0A9FAF3E70F +:10609000AD7E02009DBC002040AF002080060001C4 +:1060A00040A700200CB7002070B50D699DB3D66ADB +:1060B00090B3295C0131C9B26EB37378032B2AD136 +:1060C0002954347801EB5403312B27DC022C13D9EB +:1060D000302911D84FF0020C0CF102020B4616F8D1 +:1060E0000CE001315FFA82FC2B44C9B2644583F8AD +:1060F00003E001D93029EFD96B180022DA70431C74 +:10610000DBB2022B07D8C0F10202E818D2B2BDE818 +:10611000704006F0F5BB70BD0146CDE7C1F1320419 +:106120006400E4B2D2E700BF3F4B2DE9F04F1C689A +:1061300083B00646002C73D04FF00009DFF8F480DE +:106140003A4F01E06468A4B1A26820463B4631465C +:10615000002AF7D1B8F80050D4F800C0093D0095E6 +:10616000DCF80050A847002847D1A1466468002CFD +:10617000EAD12F4BB8F8002003F1090503EB02091F +:10618000A94503D843E04544A94540D96B7895F823 +:106190000080042BF7D1B8F1090FF4D1224B1C6811 +:1061A000002CF0D0A7684FF0000AA9EB050B2046A1 +:1061B0002B46012231464FB16468002CE3D0A7681A +:1061C00020462B4601223146002FF5D12768CDF815 +:1061D00000B03F68B84708B9A246EDE76368BAF176 +:1061E000000F17D0CAF80430F368A2466360F46069 +:1061F000A6601C46002CE2D1C5E76368B9F1000F28 +:106200000BD0C9F804300023C4E90136F46003B0B0 +:10621000BDE8F08F044A1360E6E7034A1360F2E733 +:10622000DFF81080A5E700BFF4B6002049A70020E2 +:1062300040A700208CBC002070B50446C06B28B17C +:106240000368984A5B68934217D170BDA36A964E63 +:106250001D6B2B7E0E2BF8D8DFE813F01C004400DA +:106260005A0071007E0088009B00A600F500010125 +:10627000B900BF00CD00E10013002146BDE8704029 +:1062800018472846FFF750FF0F21884B0022297638 +:106290001A7070BD2A6884495068854BC9790340DB +:1062A000844C43EA014384492078096853600130F3 +:1062B000802828BF012031B10B465A7D8242F6D09A +:1062C0009B68002BF9D103047C492070284643F4D5 +:1062D000A0630B6000231A464B60FFF77FF8012391 +:1062E0002B7670BD75494FF490142A684888744B1A +:1062F00068750B60536823F07F030343284653609F +:106300000023694A4C60FFF769F802232B7670BDC1 +:10631000F27BB37B727033701343327C3179134359 +:10632000B270727914BF03230B23AA76B27969760F +:10633000EA7632892B76EA8372892A8489E75F4973 +:1063400000236048604AC1E90002604A2846FFF71E +:1063500045F804232B7670BD3379032B03D9737969 +:10636000032B00F096800B232B7672E74E4A554B99 +:1063700012F8040B6C8C43EA004353484F49204306 +:106380000B60002348602846FFF728F806232B7689 +:1063900070BD224629460020FFF786FE7378002B49 +:1063A00056D007232B7654E73F4A464B50780432A9 +:1063B0006C8C43EA00434448404920430B6000236F +:1063C00048602846FFF70AF808232B7670BD22465E +:1063D00029460220FFF768FEC5E738494FF410222E +:1063E0003B480023C1E900022F4A2846FEF7F6FF8A +:1063F0000C232B7670BD2C4B5B88B3F5006F41D816 +:10640000344A180413802D490023314AC1E9002081 +:10641000254A2846FEF7E2FF0D232B7670BD224861 +:10642000002326494279C4791204007A2C7742F479 +:106430001062687728464B600A601A46FEF7CEFF66 +:106440000E232B7670BD224629460120FFF72CFE35 +:10645000B378002B0CBF0B2309232B76F9E6124AE5 +:10646000184B907804326C8C43EA00431648134969 +:1064700020430B60002348602846FEF7AFFF0A2345 +:106480002B7670BD134B4FF400624FF000601A8002 +:10649000B9E7F28833786A84002B3FF47FAF052395 +:1064A0002B76D6E6C900000040A700209DBC002046 +:1064B000FFFF00F8A0BC00200CB7002040AF002078 +:1064C00080060001800600030000FC0744A70020AE +:1064D000800600028CBC0020002837D0F8B5C468C4 +:1064E00006466CB11A4D0027236820461B69984761 +:1064F00023462A68A76064682B605A60002CF3D199 +:1065000074682CB12046A46BFFF742FC002CF9D133 +:106510003068FFF73DFC0F4B1C6844B1A64202D126 +:1065200011E0A64204D02346A468002CF9D1F8BD9E +:10653000A2689A60206908B100F088F82046BDE89A +:10654000F84000F04DB8A2681A60F3E7704700BF4A +:10655000F4B600200CB70020074A084B506EB2F882 +:1065600068C0B2F87010C3F80600D06EA3F80AC075 +:10657000D982C3F812007047FC0D002040B0002003 +:1065800030B40D4C0D4925680D4A0E4B15600E4870 +:106590000D6822600D4A04680A60194615601A46A3 +:1065A00003F140051C601B6442F8805F41F8C02F76 +:1065B000016030BC704700BFECB50020E8B500209A +:1065C000C4B50020E0600020F8B600208060002004 +:1065D000024B186808B102681A607047ECB50020D9 +:1065E000024B1A6818600260704700BFECB50020CB +:1065F000024B186808B102681A607047E8B50020BD +:10660000024B1A6818600260704700BFE8B50020AE +:10661000024B186808B102681A607047F8B600208B +:10662000024B1A6818600260704700BFF8B600207D +:10663000054A106830B1016800231160037043708F +:106640008370C370704700BFF0B50020024B1A681A +:1066500018600260704700BFF0B5002001EB4101F7 +:1066600000EB411188420ED210B4074C226800E0C2 +:106670001846034643F8602B99420246F8D820603A +:106680005DF8044B70477047E8B5002000EB811CB3 +:10669000604511D2024610B5084C4FEA811E2168B0 +:1066A000134643F8401B9C4511461A46F8D8AEF1F4 +:1066B000400E7044206010BD704700BFF8B6002047 +:1066C000352303FB010188420ED210B4074C226827 +:1066D00000E01846034643F8352B99420246F8D8A5 +:1066E00020605DF8044B7047704700BFF0B5002094 +:1066F000C36B33B1C26A596B8A4203D0996B8A4229 +:1067000004D07047002283F84E207047002283F89F +:106710004F2070470023C0E90333704770B5C38F23 +:10672000044690F84E109D0829B994F84F3003F0B4 +:10673000FF028BB970BD01F0FF02E9B2034680F899 +:106740004E109200416B0069FEF7E2FE94F84F3064 +:1067500003F0FF02002BEDD0EDB22346A16B9200B7 +:10676000206984F84F50BDE87040FEF7D1BE00BFED +:10677000012A01D0002070471A78092AFAD15A78E4 +:10678000042AF7D170B582B05A790D4604460699AD +:10679000012A194459D0023A102A25D90933002276 +:1067A0008B42A4F850201FD293F800C01646BCF1CB +:1067B000030F19D903EB0C0E714515D35A780B2A28 +:1067C00018BF042A0CBF0120002071D0242A0ED04B +:1067D000052A1BD0252A07D1714569D9734693F83C +:1067E00000C0BCF1030FE5D8002002B070BD9A785C +:1067F000012A06D0042A06D9F12AF6D1DB78022B29 +:10680000F2D10126E8E7012AEFD9FAE7BCF1060F39 +:10681000EAD993F803C0ACF1020CBCF1010FE3D844 +:1068200093F802C01CF0F00236D0802ADDD194F833 +:106830005020002AD0D10CF00F0C84F850C0DA7828 +:1068400084F852209B88A387C6E798790328A5D1AE +:10685000093300209942A4F85000A5D80023E36032 +:1068600094F8512022B1E18FB4F846308B4246D2E1 +:10687000002323610023E268A4F84A30A4F84C30D6 +:1068800084F85530A4F8563084F85830A4F87C3198 +:10689000002A2FD00120A8E794F85120002A9BD18C +:1068A00084F851C0DA7884F853209B88E38793E713 +:1068B000002E99D094F85020002ACFD0A38FB4F89E +:1068C00046109942CAD30021009328460123019122 +:1068D00094F85210FFF7B6F9E0600028C0D0114AD2 +:1068E0002346216BC263A28FFEF712FE012384F8B8 +:1068F0004430B5E72069C01A18BF012075E70026AB +:10690000009128460196334694F85310FFF79AF900 +:1069100020610028AED0044BC36384F84E6084F835 +:106920004F60A7E7958602006583020010B5044614 +:10693000032100F5F070FFF791FE04F54070072188 +:10694000FFF7A4FE04F598600121FFF7B9FE0023CC +:106950002046A4F84A30A4F84C30C4E96033C4E9B6 +:106960006233C4E96433C4E96633C4E96833C4E913 +:106970006A33C4E96C33C4E96E33C4E97033C4E9E3 +:106980007233C4E90333BDE81040FFF72BBB00BFEF +:106990008A680B6BC2F30E42B0F84A10B0F84CC0D4 +:1069A0009B1A9B0870B5054638D0026B043A02EB7F +:1069B000830352F8044F54B10131B5F848008842BE +:1069C0004FEA810001D8002108462E6C34509A42CB +:1069D000EFD188B28C45A5F84A00A5F84CC00BD978 +:1069E0000CF1FF3CAA8FACEB0101B1EB920F0CD282 +:1069F000002385F8443070BDB5F84830AA8F634451 +:106A0000013B591AB1EB920FF2D32B46296BE86880 +:106A1000FEF77EFD012385F8443070BD0846D9E7B6 +:106A20000146C06B08B1FFF7B3BF70470369002B85 +:106A30004CD070B5C58F82B00646AD0872B696F8D8 +:106A40004E4096F84F20A542E3B2D2B21BD9F2B124 +:106A500095421CD9B36B541C06F1140043F8221064 +:106A6000E3B2019086F84F30FEF70CFCA542019886 +:106A700023D97F2D40F2DC5188BFC821FEF7A4FB4B +:106A800062B602B070BD9542E4D862B6D6E7726BCA +:106A90005C1C06F1140042F82310E3B2019086F862 +:106AA0004E30FEF7EFFBA5420198E2D83346AA002C +:106AB000716B3069FEF72CFDE2E73346AA00B16B3B +:106AC0003069FEF725FD62B602B070BD704700BFA9 +:106AD0002DE9F843032A4FEA0313154681468846F9 +:106AE000DFB216D947F00406CC1C14F8023C033D73 +:106AF00014F8032C48461B0414F8011CA046033468 +:106B000043EA0223334343EA0161FFF78FFF032D7A +:106B1000EBD8032D05D0022D16D0012D23D0BDE8D2 +:106B2000F88398F8013047F0070798F800204846A6 +:106B30001B0498F8021043EA02233B4343EA016135 +:106B4000BDE8F843FFF772BF98F8013047F006013F +:106B500098F8002048461B0443EA02231943BDE885 +:106B6000F843FFF763BF98F8001047F00507484661 +:106B700047EA0121BDE8F843FFF758BF2DE9F84384 +:106B80001B01DEB2DAB3012A0C464BD0497846F03D +:106B900004072378A2F102090906054604F1020858 +:106BA00041EA0341394341F47041FFF73FFFB9F136 +:106BB000020F16D9053414F8023CA9F1030914F8A0 +:106BC000032C28461B0414F8011CA046033443EA96 +:106BD00002233B4343EA0161FFF728FFB9F1020FAB +:106BE000E9D8B9F1020F28D0B9F1010F0DD04FF259 +:106BF000057128463143BDE8F843FFF717BF164932 +:106C00003143BDE8F843FFF711BF98F8003046F074 +:106C10000601284641EA0321BDE8F84341F4770123 +:106C2000FFF704BF0B7846F007060C4946EA034617 +:106C30003143BDE8F843FFF7F9BE98F80130284624 +:106C400098F800201B04064943EA02233343194302 +:106C5000BDE8F843FFF7EABE06F0F70000F000F7E2 +:106C6000070000F72DE9F84F0F46B0F84C30B0F8A8 +:106C70004A10994233D00133B0F8482004469A4272 +:106C800031D99D0098B2266C7559A4F84C0094F83F +:106C9000440090B9E06880B18B4240F2AF805B1A4B +:106CA0005A1EA38FB2EB930F07D372B62346A28F5F +:106CB000216BE068FEF72CFC62B6C5F3031305F008 +:106CC0000F08C5F303264FEA152984F85430A8F1BC +:106CD00008030136062B2BD84FB1B74207D0002747 +:106CE0003846BDE8F88F002005460346CBE7B8F1EB +:106CF000080FC5F3033340F08580082B40F08280F5 +:106D00008022D4F88031C5F30748F6B22D0E84F8FE +:106D100056201BB1414630462A469847012784F841 +:106D2000556084F85780384684F85850BDE8F88F8D +:106D3000A8F102025FFA89F3012A3BD9B3F1F70BFC +:106D4000A8F1050A18BF4FF0010BBAFA8AFAF02B26 +:106D500094BF00270BF001074FEA5A1A1AEA0707F7 +:106D600028D1B8F1040F00F07381A8F10502022ABE +:106D700040F21181B8F10F0FB1D1F72B1AD8F02BD7 +:106D8000B4F87C1101D00029A9D0D4F89C31002B93 +:106D900000F01A82B1F5917FC0F01A82002204F14E +:106DA00059009847002101232144A4F87C3181F83F +:106DB000599095E7F13B0E2B91D801A252F823F0A0 +:106DC000B98B0200CB8B0200EB8B020053890200CF +:106DD00053890200138B020053890200298B0200A1 +:106DE000538902003B8B0200558B02006F8B02001F +:106DF00053890200898B02009F8B0200013A521ACC +:106E00001A444EE7B8F1090F13D1092B11D12A0EFC +:106E100038D18023F6B2C5F3074884F85630D4F849 +:106E20008031002B00F06981414630461546984775 +:106E300074E7B8F10A0F05D10A2B03D1A022D4F8C8 +:106E4000883160E7B8F10B0F05D10B2B03D1B022CD +:106E5000D4F88C3157E7B8F10C0F40F093800C2B2D +:106E600040F09080C022D4F89031C5F30748F6B2C4 +:106E70002D0E84F85620002B3FF450AF414630468B +:106E800098474BE79023C5F30748F6B284F856308D +:106E9000D5B2D4F88431002B7FF43CAF3EE7D4F870 +:106EA000B0316BB1C5F307489847F6B284F85690F5 +:106EB0002D0E33E7D4F8B431002B00F04E81984703 +:106EC000C5F30748F1E7D4F8B831002BF7D1D4F86F +:106ED000CC31002BF4D0FA20C5F307489847E4E7FB +:106EE000D4F8BC31002BDDD1D4F8CC31002BE7D065 +:106EF000FB20C5F307489847D7E7D4F8C031002BEB +:106F0000D0D1D4F8CC31002BDAD0FC20C5F307481F +:106F10009847CAE7D4F8C431002BC3D1D4F8CC3198 +:106F2000002BCDD0FE209847CAE7D4F8C831002BFB +:106F3000B8D1D4F8CC31C5F30748002BB5D0FF2029 +:106F40009847B2E7D4F8A431C5F30748002BACD07A +:106F500040469847A9E7D4F8A821002AB0D06B0C86 +:106F6000C5F306404FEA154803F47E535FFA88F8EC +:106F70001843904799E7D4F8AC31C5F30748002B84 +:106F8000E6D192E7B8F10D0F3CD10D2B3AD1D022CA +:106F9000D4F8943169E7D4F89C31B4F87C11002B13 +:106FA00050D0B1F5917F50D33A4604F1590098473B +:106FB000394601232144A4F87C3181F85990BAF173 +:106FC000000F03D0BBF1000F7FF489AEB8F1050FBD +:106FD0006DD1B4F87C11D4F89C31C8B20A0A84F897 +:106FE0005700002084F85820F022A4F87C0184F88F +:106FF0005620002B00F0A880012204F1590017460A +:1070000098476DE6B8F10E0F7FF469AE0E2B7FF452 +:1070100066AEE022D4F8983184F85620002B00F0B8 +:10702000F580690CC5F30642F6B201F47E514FEAD1 +:10703000154830462D0E11435FFA88F8A1F500512E +:1070400098476BE6B1F5917FB9D24B1C9BB2B1E783 +:10705000D4F89C61002E52D0B4F87C31B3F5917F06 +:10706000C0F0888019463A4604F15900B047012320 +:10707000D4F89C21C5F3074084F85990A4F87C31DA +:10708000002A40F0E280591C23442D0E89B2B1F54C +:10709000917FA4F87C1183F85900BFF420AE4B1CFB +:1070A0009BB22144A4F87C3181F8595018E6D4F8F9 +:1070B0009C31B4F87C11B3B3B1F5917FC0F08B80F3 +:1070C000002204F15900984701212A0CB8F1070F5A +:1070D000D4F89C3184F85920A4F87C1147D1002BB6 +:1070E00000F0AB804F1C0E46F8B2C7F30722B9B2CE +:1070F00026442D0E86F8595071E71D460EE6B4F869 +:107100007C21B2F5917FBFF4EAAD531C2244C5F354 +:1071100007409BB2B3F5917FA4F87C3182F8599077 +:107120003FF4DDADAFE7B1F5917F76D3B8F1070F4E +:107130001DD10B0A0020F02284F8571084F8583033 +:10714000A4F87C0184F85620D4F8A031002B62D03A +:1071500004F1590001279847C2E5D4F8CC31002B3F +:107160003FF4AEAEF820C5F3074898479DE6C8B295 +:107170000A0A34E7591CE218C5F3074889B2B1F589 +:10718000917FA4F87C1182F8599012D002336218D2 +:107190002D0E99B2B1F5917FA4F87C1182F8598037 +:1071A0007FF47DAF3A4604F15900B04739460123D8 +:1071B00077E73A4604F15900B04701212D0E84F8D3 +:1071C0005980A4F87C116AE7B1F5917FBFF487ADCF +:1071D0004B1C9BB2E8E5481C6218B8F1070F81B25E +:1071E0004FEA1540A4F87C1182F85900BFD1B1F5DF +:1071F000917F7FF477AF002204F159009847002275 +:107200000120D4F89C311646014671E7C5F30748C2 +:10721000F6B22D0E82E5012762E54A1C280C2144B6 +:10722000B8F1070F92B2A4F87C2181F859001146F9 +:107230009DD1B2F5917F3FF47CAF4F1C0E460023E9 +:10724000F8B2C7F30722B9B252E72D0E022184F833 +:107250005A0024E7F8B5817804464B1E262B15D832 +:10726000DFE803F0821414141414148B141414148F +:10727000149414149D141416141414641414141473 +:107280007914141414141414141416000020F8BDE6 +:10729000484A4948D2F88030484E43F44043A06100 +:1072A000C2F88030E568002D4BD0A3690022444825 +:1072B0009A611861DA609A6A920802F01C020F2A39 +:1072C00076D8520802F00202DA621C333D4ADFF837 +:1072D0002CC102EB0112D96841F08001D2E901070B +:1072E000D96000212A6843F804CC4FF0D90CB3F1DF +:1072F000804FC7F800C04FF002070760136191820A +:10730000917101D393680BB90123936000212E4B37 +:10731000A06891612A7943F8221043F822602288FC +:1073200002EB420205F0ECFA0120F8BD214A2748A1 +:10733000D36FE56843F04073A061254ED367002DFD +:10734000B3D1082001F0B4FC0546002100F092FA08 +:10735000A178E560A9E7174A1E48D36F1E4E43F097 +:107360004063A061D3679DE7124A1C48536F1C4ECF +:1073700043F0C003A061536794E70E4A1948D36EE7 +:10738000194E43F04073A061D3668BE7094A174852 +:10739000936E174E43F04053A061936682E7054A0F +:1073A0001448936E144E43F44053A061936679E7FA +:1073B000032289E700C00F4000001A404800008007 +:1073C000010080057445002000C00E4000401840B8 +:1073D0000200008000C019400800008000801940B1 +:1073E00046000080000019404400008000801840E2 +:1073F0004200008000C01840040000800000081017 +:10740000C3682DE9F04FB14E01251B7983B0F268B6 +:10741000044605FA03F3134208D003F009FBE368BE +:10742000F2681B7905FA03F31342F6D1E0780528D8 +:1074300026D82388A66803EB430765683744BE4215 +:1074400080F00D8203360C35217DA5F10C0216F873 +:10745000013C16F803EC16F802CC01FB0EEE01FB22 +:107460000CCC01FB03314FEA1E284FEA1C290B0A02 +:10747000052800F2FB81DFE800F07D766F69624647 +:10748000A2682388616802EB830B5A4580F0E4818F +:1074900002F1040C1031237D06381CF8036CA1F1B5 +:1074A00010021CF804EC1CF8027C03FB06661CF8B6 +:1074B000015C03FB0EEE03FB077703FB0555330A64 +:1074C0004FEA1E2801934FEA15293B0A172800F2BC +:1074D000CF81DFE810F0B501AB01A00195018C016F +:1074E000820179016F0165015B01510148013E0193 +:1074F000330128011D0113010A01FF00F100E7001B +:10750000DD00D400B3000CF47F4C4CEA08410B437F +:1075100013F4000F0CBF0F21082113F4800F4FEA62 +:10752000830308BF41F0E00102F8011BAA42EFD13A +:10753000B74202F10C0524D9E078033684E701F460 +:107540007F4343EA084343EA0903E1E70EF47F413E +:1075500041EA09410B43DBE701F47F4343EA094376 +:1075600043EA0803D4E70EF47F4E4EEA034343EAAE +:107570000903CDE70CF47F4C4CEA034343EA0803CC +:10758000C6E723880C261E2202FB03F303F596753B +:1075900001E003F04DFA01F027FA2369C31AAB4268 +:1075A000F7D962684A4B20619A4212D9218822F0A9 +:1075B0001F0306FB0122BFF34F8F4FF0E021C1F8FC +:1075C000683F20339A42FAD8BFF34F8FBFF36F8FD3 +:1075D0006268E0682188036806FB01F100261A60F2 +:1075E000012205689A809A604A42DE71DA608AB2A6 +:1075F000DA83DA82EE8B360412D4B1F5004F01D271 +:10760000EA83EA829A8BA169002492B242F00802CE +:107610009A834C612D4B0279DA7603B0BDE8F08F86 +:10762000B1F5007FEED2E98B01F47E411143E9838D +:10763000E98A01F47E410A43EA82E3E74FEA0860FF +:10764000019E05F47F4540EA064028430343002B92 +:10765000B4BF08200F2013F0804F4FEA830308BF08 +:1076600040F0E00002F8010B8A42F0D1E34502F15C +:10767000100140F2F780E0780CF1040C0BE71B04DA +:1076800005F47F45019843EA08632B430343DEE793 +:107690004FEA0840019E05F47F4540EA0660284312 +:1076A0000343D4E71B04019805F47F4543EA0063D4 +:1076B0002B4343EA0803CAE74FEA084805F47F452D +:1076C000019848EA03632B430343C0E700800E4060 +:1076D000FFFF1F20019805F47F454FEA004A4AEA60 +:1076E00003632B4343EA0803B1E74FEA094006F47A +:1076F0007F4640EA086030430343A8E74FEA094366 +:1077000007F47F47019843EA08633B4303439EE73E +:107710004FEA0940019D0EF47F4E40EA056040EAC1 +:107720000E00034393E74FEA0943019807F47F47AC +:1077300043EA00633B4343EA080388E74FEA094909 +:107740000EF47F4E019849EA036343EA0E030343B4 +:107750007DE74FEA094906F47F4649EA036333436C +:1077600043EA080373E74FEA084006F47F4640EA1D +:107770000960304303436AE74FEA084307F47F4751 +:10778000019843EA09633B43034360E701980EF421 +:107790007F4E000440EA096040EA0E00034356E7CA +:1077A000019B07F47F471B0443EA09633B4343EA19 +:1077B00008034CE71B040EF47F4E019843EA09636B +:1077C00043EA0E03034342E71B0406F47F4643EA01 +:1077D0000963334343EA080339E74FEA084307F4F0 +:1077E0007F4743EA08633B4343EA09032FE71B044F +:1077F00006F47F4643EA0863334343EA090326E776 +:107800004FEA0843019807F47F4743EA00633B438C +:1078100043EA09031BE71B0401980EF47F4E43EA79 +:10782000006343EA0E0343EA090310E74FEA0848FE +:1078300006F47F4648EA0363334343EA090306E755 +:1078400001980EF47F4E4FEA004A4AEA036343EA86 +:107850000E0343EA0903FAE61026282294E60C26D2 +:107860001E2291E62388102628228DE600234FE66B +:107870000023ECE630B472B621B9036813B1027983 +:107880000F2A3BD9244C2188002341FA03F212F03D +:10789000010208D00133102BF7D162B60022037128 +:1078A000026030BC70474FF0010C0CFA03FC41EA57 +:1078B0000C01218062B619495FFA83FC184C194407 +:1078C00080F804C04B01E16F41F0C001E16740F274 +:1078D000824414490C6081F81AC081F81EC081F8F6 +:1078E00018C081F81FC0036030BCC3E90022C3E99F +:1078F0000222C3E90422C3E906227047064C21880C +:1079000041FA02F5ED07BFD5044D1544B3EB451F11 +:10791000BAD162B6C5E700BF8EBC002080740002F9 +:1079200000C00F4000800E4003790F2B11D8094A88 +:10793000937672B60849012290F804C00B8802FAC7 +:107940000CF223EA02030B8062B6102200230271BC +:107950000360704700800E408EBC0020EFF3108261 +:1079600072B6437F5BB9017F012930B40BD0032984 +:1079700013D00123437702B962B630BC70470AB90D +:1079800062B670477047124C2168B1B1114943612A +:107990000B68086083615861EBE70F4D0F492C6855 +:1079A0008CB143610B68836158614FF0E0234FF065 +:1079B00080540860C3F8044DDBE7064B2060186074 +:1079C000C0E90511D5E7C0E905442860EDE700BF2F +:1079D00014B7002020B700201CB7002018B70020E3 +:1079E00070B5EFF3108272B60C4C206880B10C4E6B +:1079F00000254369236073B19D6102B962B6836853 +:107A000045779847EFF3108272B620680028F0D1CE +:107A100002B962B670BD3360EFE700BF1CB700204B +:107A200018B70020FFF7DCBF0449054A4968054B39 +:107A30001960136801331360704700BF001000E045 +:107A400008BB002004BB0020B0F84630B0F8482046 +:107A50009BB292B2934202D2013AD01A7047416B64 +:107A600001390A44D01A704772B6B0F84A20B0F80B +:107A70004C3092B29BB29A423CBF816B5218D31ADF +:107A80000269D06A62B6C0F302601844704700BF52 +:107A9000B0F84A100246B0F84C3089B29BB2994215 +:107AA00010D00133906B116B984298BF002399421C +:107AB00003D9126AD05CC0B270475B1A526AD05CBC +:107AC000C0B2704772B6B0F84A0080B2814201D0AD +:107AD00062B6E6E71369D96A11F0E06F03D14FF09F +:107AE000FF3062B67047DB6901204FF0000C116A6D +:107AF000A2F84A00C3F30900DBB2A2F84CC04B70F5 +:107B0000EFE700BFB0F84A100246B0F84C3089B237 +:107B10009BB2994226D0013330B4946B9C4216D963 +:107B2000106B1FFA83FC984217D9106AC05CC0B270 +:107B3000956DA2F84CC045B199421CD3CB1AD16BBC +:107B4000994202D3D36DC5F8883030BC70474FF0EE +:107B5000000C106B63469842E7D8181A556A285CE7 +:107B6000C0B2E5E7084672B6B2F84A1089B2884258 +:107B700004D062B6CFE70C44E31AE0E71369DA6A8F +:107B800012F0E06F03D14FF0FF3062B67047D86952 +:107B9000C0F30900F9E700BF90F8443043B110B5D5 +:107BA000044602F045FF94F84430002BF9D110BD93 +:107BB000704700BFEFF31380B8B9EFF310834BB9F0 +:107BC000EFF305823AB94FF48073EFF3118050B1AF +:107BD000984208D270470F2AF7D9054B9B5CEFF308 +:107BE00011800028F4D1184670474FF0FF30F1E7BC +:107BF000F0E300E007EE901A9FED917A0421B6EED3 +:107C0000005AF8EE677A9FED8F6A41F6FF7CC7EE67 +:107C1000275A2DE9F0418E46012407EE901AF8EE1E +:107C2000E77A85EEA77A77EE057AFDEEE77A17EE2A +:107C3000903A6345A8BF6346012BB8BF012307EE06 +:107C4000903AF8EEE76A76EEC76AC6EE877AF5EE06 +:107C5000C07AF1EE10FA48BFF1EE677AF4EEC67A18 +:107C6000F1EE10FA03D8B0EE676A8E461C46013179 +:107C70002129D2D10021436902F40075A0F84A10ED +:107C8000B3F85EC08D42A0F84C10B3F85C50A0F879 +:107C90004610A0F8481080F84410816B1E69A1EBD3 +:107CA0000505A1EB0C01C0E90F5131685D6941EA9E +:107CB0000501316014BF01210021817640F09180DF +:107CC000057EDFF8988103EB051C5F4E9CF8185089 +:107CD00008EB0515A9686D680E60DCF81C602E6065 +:107CE000DCF8205015B1DCF824602E60457ED927E1 +:107CF00003EB051595F8386008EB06118E684968A6 +:107D00003760ED6B0D60417E03EB01110D6C0DB121 +:107D1000496C29600EF1FF31BEF1080F5D684FF02C +:107D20000006CCBF4FF0000E4FF0010E090644EAEA +:107D30004E4401F0F85121435C7804F110030469CA +:107D400021614249E66041F8235043694FF0010C3C +:107D50003F4902F003055C7893F85A306354446954 +:107D60003C4B617803EB511301F01F019B000CFAAF +:107D700001F119604FF002110369D962996A41F06B +:107D800088019962510729D445F4701102F00F055A +:107D9000042D857E08BF41F08041970648BF41F021 +:107DA00080510DB141F0A0011607996103D5196901 +:107DB00041F0005119615969D50621F0805148BF41 +:107DC00041F08051D205596103D51A6942F400523D +:107DD0001A61E3681B78A3B1BDE8F0811E4929430D +:107DE000D4E7417E4FF2D9071C4D03EB011191F806 +:107DF000386005EB0615AE686D683760C96B2960A1 +:107E000081E7174E3478BCB1611E164DC9B22B1FE5 +:107E100005EB810153F8042F9042DDD09942F9D14E +:107E2000631CDBB2104A3370137845F8240043F02A +:107E300002031370BDE8F08101230A4DF2E700BF91 +:107E4000001BB74BEC78AD6038F001000054002007 +:107E500000E400E04038003810003C007445002089 +:107E60009CBC002024B70020D7520020F8B5036D39 +:107E700004460E4613B1426DC3F88420A37E33B18D +:107E800072B62269936943F00053936162B6B4F805 +:107E90004650636BADB20135AB424CD800273D462E +:107EA000B4F848309BB29D421AD029E021694B6951 +:107EB0001B0210D5B4F84830626B9BB201339A4272 +:107EC00036D99AB2E06A98422DD9E069C35CDBB238 +:107ED000CB61A4F84820B4F848309BB2AB420FD134 +:107EE000FFF768FE6369B3F85A308342DEDAFF2891 +:107EF000F1DD02F09DFDB4F848309BB2AB42EFD00B +:107F0000E36AAB4219D9E369F6B25E5572B6012055 +:107F1000226984F84400A4F84670936943F400038E +:107F2000936162B6F8BD1B1AA06AC35CDBB2CFE7EF +:107F300000221346C6E7AFB2B2E7ED1AF6B2A36A63 +:107F40005E55E3E7FFF792BF0269536913F4401FE0 +:107F500070B5154647D0D36A13F0E06FC3F3026ED5 +:107F60003ED0B0F84A40B0F84C50A4B2ADB208E0F0 +:107F7000026A02F803C002690EF1FF3313F0FF0E2C +:107F80001ED0D169631CB0F84CC0866BC1F30901E7 +:107F90001FFA8CFC9E4298BF00239C45ECD0026BDC +:107FA0005FFA81FC1C469A42A3EB0206E0D8436AC2 +:107FB00003F806C00EF1FF33026913F0FF0EE0D1A3 +:107FC000A3B2A0F84A30836D002B5AD0AC425DD3E7 +:107FD000641B016CA14254D8C16D1546C3F88410CE +:107FE0005369DC0248D49669310229D553691B02D2 +:107FF00026D5B0F846C0B0F848301FFA8CFC9BB2CA +:1080000006E0C169C95CC9B2D161D16A4C0512D41C +:1080100063453FD0446B0133C16A9C4298BF002343 +:108020009942A3EB0104ECD8816A095DC9B2D16120 +:10803000D16A4C05ECD599B26345A0F848102CD014 +:10804000710218D553695B0215D50022036D80F8C3 +:10805000442013B1426DC3F88820837E3BB172B6D1 +:108060000269936923F00053936162B60569AB69B5 +:1080700023F48003AB6170BD536943F480135361F3 +:10808000B1E753691546DC02ADD5F5E7816B491BB5 +:108090000C449EE79BB2A0F84830936923F4000398 +:1080A0009361936943F480039361C9E70148FFF743 +:1080B0004BBF00BF58B0002010B4164B4FF47A7479 +:1080C000154800229C604021144C186014481C6123 +:1080D0005861144C144883F844201A731A839A7612 +:1080E000A3F84620DC61A3F848205DF8044BA3F810 +:1080F0004A205A605A629A621862A3F84C20C3E977 +:108100000B11C3E90D11C3E90F22C3E91422C3E91E +:108110001622704758B000206842002000801940A5 +:10812000D80F002058B50020D8B400200148FFF730 +:108130000BBF00BFB8B0002010B4174B4FF47A74D7 +:10814000002228209C604021144C83F844201C60AD +:10815000134C1A731C61134C1A835C61124C9A768F +:10816000A3F84620DC61A3F848205DF8044BA3F88F +:108170004A205A605A621A64A3F84C20C3E90A20C4 +:10818000C3E90C100948C3E90E121862C3E91422AE +:10819000C3E91622704700BFB8B000206842002033 +:1081A00000801840784C002098B5002018B50020B9 +:1081B000084602F0EDBB00BF012A70B508BF0A22D5 +:1081C0008AB091B34FF0210E01E05FFA86FE0EF106 +:1081D000FF36B1FBF2F502FB15145FFA84FC092CA3 +:1081E0000CF137040CF1300C98BF5FFA8CF40EF1EF +:1081F000280C88BFE4B29142EC4429460CF8244C88 +:10820000E3D24BB10EF1FF3E2D225FFA8EFE0EF14E +:1082100028036B4403F8242C036801A9CEF1220241 +:108220005B68714498470AB070BD30224FF0210E50 +:108230008DF82520E5E700BF2DE9F0410C46D1B1CE +:10824000EAB180468E1800250E4F04E002F0A0FB34 +:10825000B44205440CD0D8F8003014F8010B1B6868 +:10826000BB42F3D0014640469847B4420544F2D1A0 +:108270002846BDE8F0810D462846BDE8F081154648 +:10828000F6E700BF259E02002DE9F0418C688AB018 +:10829000DCB10025884606462F462B46212201A93F +:1082A000404600F073F9202C2246336828BF202274 +:1082B00001A930465B68A41A154498470744002C6E +:1082C000EBD138460AB0BDE8F081274638460AB0FF +:1082D000BDE8F081002903DB00230A22FFF76CBF11 +:1082E00049422D230A22FFF767BF00BF00B503688C +:1082F00083B040F60D2C022201A95B68ADF804C0E2 +:10830000984703B05DF804FB054B022888BF03467D +:1083100010B41C68184663685DF8044B184700BF2A +:10832000684C00205AB90368C9B2074A1B689342D7 +:1083300000B506D108465DF804EB02F029BBFFF753 +:108340003BBF5DF804EB1847259E0200B4EE400BDE +:1083500070B5F1EE10FA05462DED028B86B07CD695 +:10836000B0EEC07B9FED476BB4EE467BF1EE10FAAA +:108370006BDC9FED467BB4EEC70BF1EE10FA5ADCD6 +:108380009FED447BB4EEC70BF1EE10FA53D4B5EE7B +:10839000C00B0C46F1EE10FA5BD40023B6EE007B66 +:1083A000002C5ED04FF0000C9FED3C6B0CF1010CEB +:1083B00027EE067B5FFA8CF2A242F7D330EE070B72 +:1083C0000A222846FCEEC07BB8EE678B17EE901AA7 +:1083D00030EE488BFFF7F0FE0F2C4FF02E03B2EE7D +:1083E000046B064628BF0F248DF808300DF10903F1 +:1083F00002AA611E53FA81F128EE060BFCEEC07B47 +:10840000CDED017A9DF8043007EE903A3033B8EEA6 +:10841000E78B02F8013F914230EE488BECD12B689C +:10842000013402A928465B68E2B29847304606B09C +:10843000BDEC028B70BD2B6803221A495B6806B045 +:10844000BDEC028BBDE87040184703680322164953 +:10845000F4E7B1EE400B0123A0E7036803221349C0 +:10846000ECE730EE070B0A222846FCEEC07B17EE45 +:10847000901A06B0BDEC028BBDE87040FFF79CBEC1 +:10848000AFF30080FFFFFFFFFFFFEF7F000000E082 +:10849000FFFFEF41000000E0FFFFEFC19A999999BB +:1084A0009999B93F68370020643700206037002071 +:1084B000F8B588424FF00005044685600573C0E9B1 +:1084C000005502D08E680F680EB92046F8BD701CAA +:1084D00003F0D2FB0028F8D0394605702060C4E9CB +:1084E000016604F081FC2046F8BD00BF10B50446CB +:1084F000006803F0C9FB204610BD00BFF8B5044674 +:10850000154632B9036803B11A7000232046A360F0 +:10851000F8BD43680E469A421CD9511C006803F00E +:1085200077FE074660B1A368C4E900050BB9037084 +:10853000276831463846A56004F056FC2046F8BD51 +:10854000206810B103F0A0FB276000232046C4E997 +:108550000133F8BD07683146A560384604F044FC95 +:10856000ECE700BF38B500230446C0E90033836060 +:10857000037341B10D46084604F028FD0246294622 +:108580002046FFF7BBFF204638BD00BFC2B170B523 +:10859000B1FA81F60C46760919B185689D4201D879 +:1085A0000E7070BDED1A02F1FF3C01682046654572 +:1085B000194428BF65462A4604F014FA665570BD72 +:1085C000704700BF1C2839D8F8B51D4F04463B78CA +:1085D00093B91C4B1B5DFF2B1FD01C061FD41A4CDC +:1085E0002360236AD80704D402F022FA236AD90749 +:1085F000FAD5154B586AF8BD134D144E01E002F040 +:1086000017FAAB6C1B06FAD4B36C13F08003F6D1E7 +:108610003B700C4B1B5DFF2BDFD10020F8BD0B4CDA +:1086200003F07F032360236ADA0704D402F000FA20 +:10863000236ADB07FAD5054B586AF8BD002070475E +:10864000A1BC00209048002000400C4000800C405D +:10865000A249A34B88422DE9F047A24C5E699A6972 +:10866000D4F80C801BD9A04B984240F20281C31A67 +:108670009E491B0AA1FB031340F22761DB0903EBB0 +:10868000830303EB830303F2E2438B4228BF0B46D1 +:10869000A3F54877964BA3FB0737FF0804E0954FF7 +:1086A000B8428CBF0E2706278D4908F01F09D1F864 +:1086B0008030B94543F0C003C1F880300CD228F0B7 +:1086C0001F08A1F5F82148EA0708C1F80C800B68DB +:1086D000002BFCDA08F01F0916F0007324D186493C +:1086E0000C698649A14300F0EA8082F48051344647 +:1086F0004FF4805514F0605F04D026F060561E439E +:10870000774B5E6111F4405F07D022F44052744908 +:108710002A438A618B6C1A07FCD446F00076704AB3 +:108720005661936C9B06FCD4754CA04200F2CE803F +:108730004FF0010C0146634603FB011203F1010EE9 +:108740000CF10105A24218D8BEF1080F4FF0010349 +:1087500040F08D80BCF1040F00F291800A18A24213 +:1087600000F2A48005FB00F1AC4603F1010E03FB0F +:1087700001120CF10105A242E6D90CF1FF318C0285 +:1087800086EA81215F4810445F4A90427FD9DFF832 +:10879000A4A16C225D48584DB0FBFEF0D5F800E076 +:1087A000B0FBFCF0DFF890C10EEA0C0CD44509D008 +:1087B00042F400524FF4805CC5F800C02A602A6879 +:1087C000002AFCDA464A156905F007059D4203D0E8 +:1087D0001361936CDD03FCD411F4E05F09D026F43F +:1087E000E05604F4E0543E4A26435661936C9907E0 +:1087F000FCD44749474A014491423CD8464BC909F9 +:10880000A3FB0131090B4B1E1B0286EA030212F483 +:10881000407F06D026F4407603F44073304A334359 +:1088200053612F4A536923F000735361936C9B0685 +:10883000FCD43A4B4F45A3FB00234FF0FF324FEAE5 +:108840009343B0FBF1F1B2FBF3F3354A1060354AC4 +:108850001160354A136008D228F01F08214A48EAFF +:108860000707D7601368002BFCDABDE8F087734672 +:1088700062E7122718E74FF440730421C5E70CF1B3 +:10888000FF31204807238C02104486EA8121274AC1 +:10889000DFF8A8A0A2FB0020020D2548362A38BF29 +:1088A000362202FB00F042EA0A0A74E74FEA8C24FF +:1088B000002386EA8C214FF0010EAC4662E71D468C +:1088C00086F0C05411464FF0C05313E700244FF018 +:1088D000010C024631462346E64653E700A4781FC2 +:1088E00000C00F40000008400046C32323B24C00E4 +:1088F0001F85EB5100366E0100800D404030008036 +:10890000FFB19F26808D5B00FF7EF64D00643F4DDA +:108910007FD1F0087F17B42C9F10E50083DE1B4346 +:10892000644C0020604C0020E0BA0020819F5E165D +:10893000001BB7006C2000807F3001800020008089 +:1089400000B970472DE9F84F01218146214C224D95 +:10895000224E54E8003F2A68306844E80013002B98 +:10896000F7D11F494B684FF47A7BDFF878A01B1AC8 +:1089700001270BFB02F8DAF80020A3FB02325A456C +:1089800094BF9044D84454E8003F2A68306844E8D3 +:108990000073002BF7D14B68DAF800C01B1A0BFBF1 +:1089A00002F2A3FB0C3CBCF57A7F94BF624402F553 +:1089B0007A72A2EB0802B2F57A7F06D3B9F1010907 +:1089C00008F57A78DFD1BDE8F88F02F031F8044974 +:1089D000D9E700BF0CBB002008BB002004BB00206F +:1089E000001000E0E0BA002030B40F4B4FF0010C53 +:1089F0000E4D0F4C53E8002F2868216843E800C251 +:108A0000002AF7D10B4B5B680B4A5B1A4FF47A7163 +:108A1000126801FB00F0A3FB023230BC8A4294BF13 +:108A200080184018704700BF0CBB002008BB002016 +:108A300004BB0020001000E0E0BA0020272816D870 +:108A40000201104B03EB00109B5810B4C2685C6825 +:108A5000144205D061B95DF8044BC3F88820704713 +:108A6000836851B1084A5DF8044B1A60704770473B +:108A70005DF8044BC3F884207047044A5DF8044B4A +:108A80001A6070477445002038F00100383001004A +:108A900027280BD8064B020103EB00109A58C36835 +:108AA00092681A4214BF01200020704700207047CE +:108AB00074450020272829D8164B0201012903EB11 +:108AC00000109A5810B45368C4680ED004290CD012 +:108AD00023EA040353608368A9B1022917D003294C +:108AE0000CBF0D4A0D4A1A6007E023430129536069 +:108AF000836808D040F638021A60436815225DF892 +:108B0000044B1A60704738221A60F6E77047044A2F +:108B10001A60F2E774450020383001003800010087 +:108B200038F0010070B50E4C4FF6FF7E0D4E04F18B +:108B30001E05A6F58053002102E0B34281B204D2A3 +:108B40001A88481C02337245F7D124F8021FAC4240 +:108B500006F58056EDD1044B01221A7070BD00BF9E +:108B6000E2BA002000101F60A2BC002008B5D5F7B3 +:108B700053FCD5F757FC01F05BFFFAE7844641EA66 +:108B8000000313F003036DD1403A41D351F8043B85 +:108B900040F8043B51F8043B40F8043B51F8043BD7 +:108BA00040F8043B51F8043B40F8043B51F8043BC7 +:108BB00040F8043B51F8043B40F8043B51F8043BB7 +:108BC00040F8043B51F8043B40F8043B51F8043BA7 +:108BD00040F8043B51F8043B40F8043B51F8043B97 +:108BE00040F8043B51F8043B40F8043B51F8043B87 +:108BF00040F8043B51F8043B40F8043B51F8043B77 +:108C000040F8043B51F8043B40F8043B403ABDD2E5 +:108C1000303211D351F8043B40F8043B51F8043B87 +:108C200040F8043B51F8043B40F8043B51F8043B46 +:108C300040F8043B103AEDD20C3205D351F8043B16 +:108C400040F8043B043AF9D2043208D0D2071CBFE2 +:108C500011F8013B00F8013B01D30B88038060460B +:108C6000704700BF082A13D38B078DD010F0030381 +:108C70008AD0C3F10403D21ADB071CBF11F8013BF1 +:108C800000F8013B80D331F8023B20F8023B7BE740 +:108C9000043AD9D3013A11F8013B00F8013BF9D26B +:108CA0000B7803704B7843708B7883706046704705 +:108CB00002F0E2BF01F1FF3C70B56646002400E01F +:108CC0000134B0FBF2F502FB1503092B03F1370E5B +:108CD00003F130035FFA8EFE98BF5FFA83FE904285 +:108CE000284606F801EFEBD2631C0022C818CA54CC +:108CF0007CB162461CF8015F10F8016DA1EB0C031A +:108D000002328CF80060013B521A057023449A42EB +:108D1000EFDB084670BD00BF4FF0010C0CFA01FC00 +:108D200001EB410100EB411170B5B1F80EE01FFA03 +:108D30008CF5254C1FFA8EFE24782E010EFB033392 +:108D400006F0F006E340B0F888417345A4B228BFAE +:108D500073463443012AA0F888410DD0022A28D056 +:108D6000C2B10CF00F02B0F888C11FFA8CFC4CEABB +:108D7000020CA0F888C170BD9BB20CF00F022D024E +:108D8000CB82B0F8803105F470659BB22B43A0F81C +:108D90008031E8E7AEEB030E0CF00F021FFA8EFEF7 +:108DA000A1F80AE0B0F880319BB21343A0F88031FB +:108DB000D9E79BB20CF00F02CB83B0F880319BB2A5 +:108DC0001E43A0F88061CEE7D652002027284BD85A +:108DD000F8B52A4D044615F8202005EB8005012A38 +:108DE0002DD0022A3FD16B78C3F3011003283ED067 +:108DF000234A02EB803203F0030C224889B2634617 +:108E000002EB4C1C0678BCF806E05801BCF81030A8 +:108E10001FFA8EFECEF1011E1EFA83F303F1FF3E10 +:108E20000EFB01F1F1408E4523D95B1AC3F101031A +:108E30009BB289B20244ACF8063011820DE06A7828 +:108E4000C2F30113032B10D00F4800EB83308BB219 +:108E500002F00301AA78FFF75FFF0C4BEA7803EBFF +:108E600004135B681A60F8BD70470948EFE7094AC8 +:108E7000C1E7991E4FF6FF73DBE700BFAC48002047 +:108E800000C01D40D652002000C03D407445002067 +:108E900000803E4000801E4000230F2248F2B82C84 +:108EA000194610B54FF470444FF4806EA0F88C4111 +:108EB0004FF46044A0F88E210A46A0F89031B0F833 +:108EC00088319BB243F0F003A0F8883101EB4103F5 +:108ED000013100EB431304299C80A3F806E05A8477 +:108EE0001A865A805A81A3F80EC05A82DA825A83AF +:108EF000DA83EBD1B0F888319BB243F00F03A0F8CE +:108F00008831B0F888319BB243F47063A0F888319F +:108F100010BD00BF374B384A996F384841F47F0184 +:108F200070B5996741F20106D3F8801045F6C05537 +:108F300043F226040A43C3F88020FFF7ADFF00F593 +:108F40008040FFF7A9FF00F58040FFF7A5FF00F57F +:108F50008040FFF7A1FF0022A0F503104FF00F0E95 +:108F6000114600EB42134FEA421C01329981042A58 +:108F70005981A3F80EE09E82DD8020F80C10198242 +:108F80009C81EED100221E484FF00F0E41F20106E7 +:108F9000114645F6C05543F2260400EB42134FEA52 +:108FA000421C01329981042A5981A3F80EE09E8265 +:108FB000DD8020F80C1019829C81EED1002211482E +:108FC0000F2641F20105114645F6C05443F2260E24 +:108FD00000EB42134FEA421C01329981042A598165 +:108FE000DE819D82DC8020F80C101982A3F80CE051 +:108FF000EED170BD00C00F40000003FC00C03D403A +:1090000000001E4000401E40704700BF704700BF78 +:1090100072B6EFF305834F4CC4F88430EFF3088247 +:109020004FF0E0234C4E4D4DD3F8280DD3F82C1DB6 +:10903000C4E92201D3F8341DD3F8383DC4E9241320 +:109040009369C4F89830D369C4F89C3000F0D2F822 +:1090500084ED280A01F064FD0B214FF0FF32C4F8C3 +:10906000A4000B46C4F880103D49301D5A4020240E +:1090700002F00103013C01FB03F383EA5202F7D142 +:10908000A84202D073680646EFE7324BC3F8A82027 +:10909000BFF34F8F4FF0E0232F49324AC3F8701FC0 +:1090A000C3F8702FBFF34F8FBFF36F8F2E4A022587 +:1090B0002E48D36E2E4943F44053D3660560D369DE +:1090C0002C4823F07F0343F04003D3610B688342B5 +:1090D0003DD8264D00214FF0E0234FF0FF322960AC +:1090E0000126C5F808112449C5F80011C5F8086122 +:1090F000C3F88021C3F88421C3F88821C3F88C21E8 +:10910000C3F8902101E000F083F9D5F80C31002B71 +:10911000F9D00134C5F80C614F2CF4D9174B02205B +:1091200017494FF00042C1F840015A63D5F80C319D +:109130003BB9144814490D4A0163D2F80C31002B95 +:10914000FAD04FF0E023114AC3F80C2DFEE7FFF7E9 +:109150007FFABEE700FF272080FF2720A8FF2720F7 +:109160002083B8EDA0FF272000C00F40004008403A +:10917000644C0020803DCD0B009F240000900D40EA +:1091800000002E4000800F40F100AD0B0400FA05F6 +:109190000A490A6838B108B513180948834204D847 +:1091A00010460B6008BD1046704703F0A5FC0C2369 +:1091B0004FF0FF320360104608BD00BFE04C0020B6 +:1091C00000002820002070474FF0FF30704700BF9C +:1091D0004FF4005300204B60704700BF01207047E0 +:1091E0004FF0FF30704700BF30BFFDE730BFFDE7F5 +:1091F000FFF70EBF124AD2F880305B07FBD5D2F8DA +:1092000080301048C3F30B230F4990ED007A07EE2E +:10921000903A91ED006AB8EE477A0C4AF8EEE77A98 +:109220000B4BD2ED006A77EEC77A93ED007AB8EE79 +:10923000477A67EE867A87EEA60A37EE400A7047CD +:1092400000810D40D0BA0020D8BA0020DCBA00203E +:10925000D4BA0020836BF0B41BB1536843F40043CD +:10926000536072B6446B3CB31A4B2260D3F8B041E2 +:109270000C421DD1184E776804E07468E41BB4F505 +:10928000166F0BD2D3F8404144F48044C3F84041F8 +:10929000D3F8B851D3F840416404EED50D4007D15E +:1092A0000C4CC0E90225D4F8B0310B43C4F8B031FE +:1092B000426362B6F0BC7047064DC0E90224D5F89F +:1092C000B0310B43C5F8B0310263426362B6F0BC03 +:1092D000704700BF00002E40001000E070B5056B25 +:1092E0009DB106462A46002403E012680134012A93 +:1092F0000CD0536813F08003F7D032632CB12846AA +:10930000B36B2D689847013CF9D170BDC6E90C33A9 +:10931000F4E700BF30B4D9B91F4C204B0021204ADC +:1093200001254FF0011099601D60C4E902318024CD +:109330005C60C2F8BC01D2F8B0311A482B43C2F8C5 +:10934000B0310160D2F8B031002BFBD130BC704796 +:109350000904154B104C012541F080019860104A1A +:10936000596000F580511D60D96000F50051A3647B +:10937000196100F5405100F5804059610021986164 +:10938000E164D2F8B03143F48033C2F8B031D2F89E +:10939000B031002BFBD1C0E70000002040A300202B +:1093A00000002E4060BA002060A3002010B472B606 +:1093B0000A4C01220A49237802FA00F0184320706F +:1093C000D1F848311A0605D480221343C1F844214C +:1093D000C1F8483162B65DF8044B7047A7BC002065 +:1093E00000002E40084901220B7802FA00F023EA1F +:1093F0000000087030B9054AD2F8483123F08003E4 +:10940000C2F84831704700BFA7BC002000002E40C2 +:109410002DE9F04F9D4C83B0D4F84461F107C4F8B6 +:1094200044616FD5D4F8AC31002B66D0984DDFF88D +:109430007CB2DFF884A2974FDFF88082DFF8809259 +:10944000C4F8AC31D5E90A20D4F8403143F40053D4 +:10945000C4F84031D4F840319B04F5D5D4F84031FC +:1094600023F40053C4F840314FF00113C4F8B43171 +:10947000D4F8B43113F00113FAD191B2CBF8003023 +:10948000B1F5A06F00F0B28100F2D780B1F5817F15 +:1094900000F0508140F2B18040F20233994240F036 +:1094A000DB8010F0780F83B240F0D68003F07F02AB +:1094B00013F0800F59F8223014BF43F4803343F087 +:1094C000010349F822300023AF64EB64BB60012341 +:1094D0003B6080237B604FF00113C4F8BC31D4F8AB +:1094E000B03143F48033C4F8B031D4F8B031002B3C +:1094F000FBD1D4F8AC31002BA2D1644BD3F8BC41E2 +:10950000002C48D1720614D5604AD2F8AC31C2F8AA +:10951000AC31D2F8BC31C2F8BC31D2F8B031002B3A +:10952000FBD14FF0FF305C49C2F8B401D2F884217E +:109530000B60F40103D5594B1B6803B19847B00188 +:1095400003D5574B1B6803B19847710708D54F4B9C +:10955000D3F8843113F400731AD0524B01221A70DD +:109560004A4BD3F848311A060FD533060DD54E4A6B +:1095700013782BB1013BDBB21370002B00F0078294 +:1095800003B0BDE8F04F00F085BC03B0BDE8F08F3C +:10959000444A1370E4E7454AC3F8BC4113681C42CF +:1095A00040F054813C4B1B681C40ABD05FEA144830 +:1095B00010D0374D4FF0010998FAA8F7B7FA87F79E +:1095C00005EBC71009FA07F74030FFF787FE38EAC6 +:1095D0000708F1D1A4B2002C94D02D4D4FF0010812 +:1095E00094FAA4F7B7FA87F705EBC71008FA07F75C +:1095F000FFF774FEBC43F3D184E7802900F01781A4 +:10960000822929D183B210F0780025D103F07F029E +:1096100059F82210264A1080180640F11381C90318 +:1096200001D50123137002212148FFF773FED4F8FE +:10963000AC31002B7FF404AF5FE7B1F5106F00F0A1 +:10964000A68013D940F6211C614505D1B0F5102F35 +:109650004FEA1041C0F02A814FF00113C4F8C03125 +:10966000D4F8AC31002B7FF4EBAE46E740F28163D7 +:1096700099424FD8B1F5D06FEED30E4B59680029FF +:10968000EAD04FEA124E82B220E000BF00002E4026 +:109690000000002040A3002064BA002084BC002009 +:1096A00088BC0020AFBC0020B5BC002060BA002000 +:1096B00084BA0020984A002058CA0020AEBC00207E +:1096C000C0012E4019690C330029C5D0B3F800C081 +:1096D000F445F7D1B3F802C09445F3D14FEA1E2206 +:1096E000032A00F0C8801A89000C824228BF024673 +:1096F000BEF5007F40F0C480A74BA8491878A84B5E +:109700000092002818BF1946A648FFF737FAA54B64 +:10971000009A14E1B1F5086F9ED198F8003001214C +:10972000A1480370FFF7F6FDD4F8AC31002B7FF4AD +:1097300087AEE2E610F0780F83B28DD103F07F029E +:1097400013F0800F59F8223014BF23F4803323F034 +:10975000010349F822300023AF64EB64BB600123AE +:109760003B6080237B604FF00113C4F8BC31D4F818 +:10977000B03143F48033C4F8B031D4F8B031002BA9 +:10978000FBD1D4F8AC31002B7FF45AAEB5E6C2F36E +:109790000742009388F800204FF0CC12C4F8C8218B +:1097A0004FF0C812C4F8CC2100F03EFF00F008FBD7 +:1097B0000122009B3A608022AF647A604FF0011270 +:1097C000EB64BB60C4F8BC21D4F8B02142F4803211 +:1097D000C4F8B021CBF80030D4F8B031002BFBD165 +:1097E000D4F8AC31002B7FF42BAE86E6C5E91273BA +:1097F000BB6001233B6080237B604FF00113C4F802 +:10980000BC31D4F8B03143F48033C4F8B031D4F86B +:10981000B031002BFBD1130C5B0643F08073C4F80E +:109820005431D4F8AC31002B7FF40AAE65E65E48C3 +:1098300002210380FFF76EFDD4F8AC31002B7FF4DA +:10984000FFAD5AE6CB077FF5EEAEEAE6574B0021B7 +:109850001160D3E90021564B9A427FF4A3AE554BD9 +:1098600099427FF49FAE544B1A78A92A7CD0534B6F +:1098700001221A7096E6000C0A78824228BF02463E +:10988000BEF5E06F53D1444B444893F800C04449BF +:10989000444BBCF1000F18BF014600921846FFF779 +:1098A0006DF9072103464170009A48E0DFF8FCC0DB +:1098B000CCE900204048E9220270E1B1EB600B04E2 +:1098C0003F4A43F08003AA6053603E4B136101237B +:1098D000C2E9020A1360D4F8B03143F00103C4F8BE +:1098E000B03100F5405300F5804053619061D4F8E9 +:1098F000B031002BFBD10023AF64EB64BB600123CC +:109900003B6048F280037B604FF00113C4F8BC3128 +:10991000D4F8B03143F48033C4F8B0314FF480331D +:10992000CBF80030D4F8B031002BFBD1E1E51D4B72 +:109930001846CDE90023FFF721F9DDE9002323F0E4 +:109940001F011344BFF34F8F4FF0E020C0F8701F8A +:1099500020318B42FAD8BFF34F8FBFF36F8F11487E +:109960001146FFF7D7FCC4E55A78452A7FF47FAF4C +:109970009A78C22A7FF47BAFDB786B2B7FF477AFCA +:109980000220FFF713FD104B50221A700AE6022046 +:10999000FFF728FD08F0AEFCAFBC002098E20160A4 +:1099A0000CE301600000202084BA002048AF0020B2 +:1099B000210900030100040058BA0020B6BC0020B1 +:1099C00060A3002058DA0020B5BC00202DE9F04744 +:1099D0001F46831E022B01D9BDE8F087DFF84C90AB +:1099E00015460C463C2209EBC01806464FEAC01A41 +:1099F000002108F10400240402F082FFB5FA85F288 +:109A00000123520944EA427449F80A40C8F8387000 +:109A1000C8F80830002FDFD0034AB34011680B4369 +:109A20001360BDE8F08700BF64BA0020000000208A +:109A30002DE9F0470D46811E022901D9BDE8F087C6 +:109A4000C701DFF84C909246044640373C22002183 +:109A50001E4609EB07082D0408F1040002F050FF30 +:109A6000BAFA8AF2520945EA427249F807200122FD +:109A7000C8F83860C8F80820002EDFD0034B103437 +:109A80001968A2400A431A60BDE8F08764BA002052 +:109A90000000002012048160C36101F5405342F0D0 +:109AA000800210B40124426001F50052046001F507 +:109AB000805401F58041C46081615DF8044BC0E9C8 +:109AC00004237047831E0A46022B00D97047064BB9 +:109AD00000F110014FF0010C03EBC0100CFA01F182 +:109AE0004030FFF7B7BB00BF00000020831E0A46CE +:109AF000022B00D970470121024B814003EBC010BB +:109B0000FFF7A8BB0000002040687047124A134BC3 +:109B1000D2F8200220F07F40984210B584B002D2E3 +:109B200000EB800040000E4C01A90A22FFF7C2F8AA +:109B300001A90023204611F8012B01333AB10A2B69 +:109B400020F8022FF7D11623237004B010BD5B005C +:109B5000DBB2237004B010BD00441F408096980013 +:109B6000C052002000F0ECBD00F0B6BD00F00ABE0F +:109B700000F032BF00F02EBF0846114600F01EBFB5 +:109B800038B50C4B04460C4D1B68298843B1B1F520 +:109B9000917F09D24B1C9BB2084A2B80545438BD8C +:109BA000B1F5917FF6D338BD0022044898470021D3 +:109BB0000123F1E74CBB002098BC002060BB0020D3 +:109BC000F8B5144C4FF0E025134E4FF4003204EB7F +:109BD0004024124F06EB40160346C5F88C2121465F +:109BE0003A883046FFF756FF3B882344BFF34F8F38 +:109BF000C5F85C4F2034A342FAD8BFF34F8FBFF3B0 +:109C00006F8F03203146FFF771FF4FF40033C5F823 +:109C10000C31F8BD8000202080A3002090BC0020E3 +:109C200042684FF6FC71114BC2F30E42C0691B88AB +:109C30009B1A0B4017D00E4930B40E4C0E4D2278B3 +:109C400021F810300021013225F81010062A94BFA7 +:109C5000D1B20A46217009490C6823440B60084BB5 +:109C6000985430BC7047FFF7ABBF00BF90BC0020DA +:109C700094BA0020A3BC0020A0BA00208CBA002017 +:109C8000BCBA00202DE9F04F0123DFF828A1DFF84E +:109C900028B183B0414E9AF80020414D414F8BF8D6 +:109CA000003005EB42153388D7F80080CDE900027B +:109CB000002B6DD13C4CDFF804912846FFF724FFC0 +:109CC00010F080005DD03B68A3EB0803282B04D97B +:109CD0000123237003B0BDE8F08F2378002BF9D166 +:109CE00099F80030002BF5D000F0A2FE3388002B4D +:109CF000E3D02E4A9AF800101288D01A043B2C4C5C +:109D00009BB22044338000EB4120009E4902C0F802 +:109D1000006C93BB04F5406428460C442146FFF7D1 +:109D2000B9FEBFF34F8F04F1200204F50073934294 +:109D300034BF012310234FF0E02204EB4313C2F899 +:109D4000704F20349C42FAD1BFF34F8FBFF36F8F17 +:109D500003202946FFF7B6FE019B00200133032BA9 +:109D600094BFDBB200238AF80030FFF73BFB0023EF +:109D70008BF8003003B0BDE8F08F0020FFF716FB32 +:109D8000F5E70A4B9AF800101A8820701346B5E7D9 +:109D9000064A01991288D01AB0E700BF92BC002091 +:109DA00040A5002008BB0020A8BC002096BC0020D5 +:109DB00080002020AABC0020ACBC0020AEBC00204B +:109DC000214B70B51B78002B3BD04FF400731E461F +:109DD0001E4980221E4D00240B8000211D482B802F +:109DE00002F08EFD1C4A21461C4B1470C0221C48F8 +:109DF0001C8002F085FD1B4A31461B4B03209460FA +:109E00009C60C2E90044194AC3E900441470184B2D +:109E1000184A1C70184B14602246FFF7D7FD2346E2 +:109E2000224629880320FFF703FE20460134FFF76E +:109E3000C7FE062CF9D100231049114A0B7013708C +:109E400070BD40231E46C3E7AFBC002090BC00207D +:109E500096BC002040A50020AABC002092BC002097 +:109E600080A3002094BA0020A0BA0020A3BC002048 +:109E7000A5BC00208CBA002095B80200A8BC002028 +:109E8000ACBC0020024B1B780BB1FFF7FBBE704748 +:109E9000AEBC00202DE9F843204B1D7815B9204EAB +:109EA00033880BB9BDE8F883DFF884801D4A98F841 +:109EB00000701D4C02EB47191C4A04EB4724128822 +:109EC00048462146D21A2B46FFF7E4FDBFF34F8FD9 +:109ED00004F1200204F50073934234BF01231023E0 +:109EE0004FF0E02204EB4313C2F8704F20349C4241 +:109EF000FAD1BFF34F8FBFF36F8F0137494603206D +:109F0000FFF7E0FD032F4FF0000098BFFDB2308057 +:109F100088F80050BDE8F843FFF764BAACBC0020F5 +:109F200092BC002040A50020800C202096BC002080 +:109F3000AABC0020120103292DE9F0418846D6B2BF +:109F40001BD946F00407C41C294D2B78A8F103083F +:109F50006BB114F8013C14F8022C1B0614F8030C26 +:109F600043EA02433B4343EA0020FFF78BFEB8F18C +:109F7000030F204604F10304E7D8B8F1030F17D00C +:109F8000B8F1020F04D0B8F1010F24D0BDE8F08180 +:109F9000174B1B78002BF9D04378027846F0060067 +:109FA0001B0443EA0223BDE8F0411843FFF76ABEF1 +:109FB0000F4B1B78002BE9D0837846F007064278D8 +:109FC0001B06007843EA02433343BDE8F04143EA0D +:109FD0000020FFF757BE064B1B78002BD6D046F06B +:109FE0000506007846EA0020BDE8F041FFF74ABECA +:109FF000AEBC002012012DE9F041D5B2002942D0BB +:10A0000001290446884657D03A4E45F00407337874 +:10A010004BB140782378000640EA0340384340F4CF +:10A020007040FFF72FFEA8F10208A31CB8F1020F41 +:10A0300018D905343378A8F103086BB114F8013C42 +:10A0400014F8022C1B0614F8030C43EA02433B43AA +:10A0500043EA0020FFF716FEB8F1020F234604F191 +:10A060000304E7D8B8F1020F17D0B8F1010F32D0CE +:10A07000337833B14FF205702843BDE8F041FFF764 +:10A0800001BEBDE8F0811B4B1B78002BF9D01A48AC +:10A090002843BDE8F041FFF7F5BD327819785B78C9 +:10A0A000002AEED01B04154843EA01232B43BDE8E8 +:10A0B000F0411843FFF7E6BD0E4B02781B78002BEA +:10A0C000DFD045F007050E4845EA02452843BDE8C4 +:10A0D000F041FFF7D7BD32781B78002AD1D045F088 +:10A0E000060040EA0320BDE8F04140F47700FFF7A6 +:10A0F000C9BD00BFAEBC002006F0F700070000F7A6 +:10A1000000F000F7F8B54FF400324FF0E023204C98 +:10A11000C3F88C211F4B227819788A422ED0D3B2F3 +:10A120001D4A1E4F01331E491E4E072B28BF002318 +:10A13000D05C37F8102001EB40218D580432316893 +:10A1400092B2043927F810203160174931F8101005 +:10A15000914207D94FF0E0234FF400322846C3F86C +:10A160000C21F8BDDBB22370FFF72AFD4FF0E0238E +:10A170004FF400322846C3F80C21F8BD00254FF0FB +:10A18000E0234FF400322846C3F80C21F8BD00BF8D +:10A19000A5BC0020A3BC0020BCBA0020A0BA0020AF +:10A1A000800020208CBA002094BA00202DE9F041D4 +:10A1B0000746FFF7A7FF98B1C0F3032300F00F0590 +:10A1C0009F4A04465E1CC0F303134FEA1028137025 +:10A1D000A5F10803062B06D8002F47D0BE4245D074 +:10A1E0000020BDE8F081AB1E5FFA88F0012B19D981 +:10A1F000F72818BFF02801D9052D13D0042D00F041 +:10A2000089816B1F022B40F249810F2DE8D1F7287D +:10A2100008D8F02803D08B4B1B88002BE0D0FFF729 +:10A22000AFFCDDE7F1380E28DAD801A353F820F0AF +:10A2300025C0020037C0020053C0020055BE020014 +:10A2400055BE020061C0020055BE02006FC0020090 +:10A2500055BE0200A9BF0200DDBF0200C5BF02005B +:10A2600055BE0200F5BF02000DC00200082DC4F368 +:10A27000033318D1082B16D173498022734BC4F3D2 +:10A2800007450F68F6B2240E1A701FB129463046F2 +:10A290002246B8476E4901206E4A6F4B0E7015700A +:10A2A0001C70BDE8F081092D14D1092B12D1220EAA +:10A2B000664B00F0B7809021C4F30745F6B21970E1 +:10A2C000D4B2664B1B68002BE4D0224629463046A8 +:10A2D0009847DFE70A2D05D10A2B03D1604BA02157 +:10A2E0005A4A06E00B2D11D10B2B0FD15D4BB0213B +:10A2F000564A1B68C4F30745F6B21170240E002BB2 +:10A30000C8D02946304622469847C3E70C2D40F076 +:10A3100081800C2B7ED1544BC0214C4A1B68C4F366 +:10A320000745F6B21170240E002BB3D029463046F3 +:10A330009847AFE74D4B1B68002B00F0FF80C4F33C +:10A3400007459847414AF6B2240E82F80080A1E7FB +:10A35000474B1B68002BF2D1464B1B682BB3FC20EC +:10A36000C4F307459847EDE7434B1B68002BE6D144 +:10A37000404B1B68CBB1FB20C4F307459847E1E78E +:10A380003E4B1B68002BDAD13A4B1B686BB1FE20A9 +:10A39000C4F307459847D5E7394B1B68002BCED14E +:10A3A000344B1B680BB1FF209847C4F30745C9E73E +:10A3B000344BC4F307451B68002BC3D0284698478D +:10A3C000C0E7314B1A68002AEFD0630CC4F3064093 +:10A3D000250C03F47E53EDB218439047B2E72B4BA4 +:10A3E000C4F307451B68002BE8D1ABE7284BC4F347 +:10A3F00007451B68002BA4D1A4E7264B1B68002B44 +:10A400009DD11C4B1B68002BCFD0F820C4F307450F +:10A41000984797E70D2D62D10D2B60D11E4BD021AF +:10A420000A4A7BE78021F6B2C4F307451970064B50 +:10A430001B68002B79D0294630461446984729E7F7 +:10A44000B0BC002098BC002024BB0020B4BC00207D +:10A45000B1BC0020B2BC0020B3BC002028BB00204F +:10A460005CBB002020BB002030BB002040BB002094 +:10A4700044BB002034BB00201CBB002010BB0020CC +:10A4800050BB002054BB002038BB00203CBB002048 +:10A4900058BB002018BB002014BB0020FFF770FB46 +:10A4A000052D08D0C4F30740FFF76AFB072D02D142 +:10A4B000200EFFF765FB2A4B2A4819882A4A0170AB +:10A4C000080A2A4C10700020294A1880F0232468BA +:10A4D000137064B327480122A047012081E60E2DA6 +:10A4E0007FF47EAE0E2B7FF47BAE234BE021204A1F +:10A4F0001B68117063B3610CC4F30642F6B201F439 +:10A500007E51250C3046240E1143EDB2A1F50051C9 +:10A510009847BFE6FFF734FBC4F30740FFF730FB73 +:10A52000200EFFF72DFB00205BE61C46B2E6134B26 +:10A530001B6893B10F489847012052E6104B1B68E7 +:10A54000002B3FF432AFFA20C4F307459847F9E6F1 +:10A55000C4F30745F6B2240E9CE6012041E600BF95 +:10A5600098BC0020B2BC0020B3BC00204CBB002033 +:10A57000B4BC002060BB00202CBB002048BB0020E6 +:10A5800034BB0020F8B5104D4FF0E0260F4C4FF4CF +:10A59000003705EB4015034604EB40142022294602 +:10A5A000C6F88C712046FFF775FABFF34F8FC6F8D7 +:10A5B0005C5FBFF34F8FBFF36F8F02202146FFF721 +:10A5C00095FAC6F80C71F8BD8014202040A4002034 +:10A5D0004368C069C3F30E43C3B90E4942018A5CA4 +:10A5E000A2B10D4910B40A780C4C013224F8103095 +:10A5F000082A0DD8D4B213460C700949094C0A68D0 +:10A60000E05420325DF8044B0A607047FFF7BABF90 +:10A610001C46F1E780142020A4BC0020ACBA002026 +:10A6200090BA0020C4BA002038B500244FF4C0729C +:10A630001D4821461D4D02F063F91D481D4B4FF486 +:10A640008072214604701C481C8002F059F91B4A94 +:10A6500002201B491B4B0C7020211C7014601A4BEC +:10A6600054602C60C2E902442246FFF7AFF923464A +:10A67000224640210220FFF7DBF920460134FFF794 +:10A6800081FF082CF9D1114B4A2211480021114CAD +:10A690000460C3F88410C3F88020D3F8482142F046 +:10A6A0008072C3F8482138BDC0A5002090BA0020B0 +:10A6B000ABBC002094BC002040A40020ACBA002019 +:10A6C000A4BC0020A6BC002045C2020000002E4011 +:10A6D00084BC002081C4020070B5144B144D2A784C +:10A6E00019788A421FD0D3B2124A134E0133134C49 +:10A6F000092B28BF0023D05C36F8102002EB401154 +:10A7000001321F2A04EB010C645C02D89CF8011092 +:10A7100029B9DBB22B70FFF735FF204670BD26F854 +:10A720001020204670BD4FF0FF34F6E7A4BC002097 +:10A73000A6BC0020C4BA0020ACBA0020801420209F +:10A740000B4B0C4A12781978D3B28A420DD00133E0 +:10A75000094A0A48092B0A4928BF0023D25C30F86D +:10A76000123003EB4213C85C70474FF0FF30704764 +:10A77000A4BC0020A6BC0020C4BA0020ACBA0020B3 +:10A780008014202008B5064A064B12781B789A429E +:10A7900001D0012008BD00F04BF9002008BD00BF2A +:10A7A000A6BC0020A4BC002070B5154E0023154D9A +:10A7B0003278154C05EB421504EB821440222846F2 +:10A7C0002146FFF767F9BFF34F8F4FF0E02304F105 +:10A7D0002002C3F8704F4034944201D9C3F8702F5F +:10A7E000BFF34F8FBFF36F8F02202946FFF76AF93F +:10A7F00033780133DBB20B2B88BF0023337070BD7D +:10A80000ABBC0020C0A500208015202038B50D4B22 +:10A810001B7833B90C4D03F0FF042A88531E3E2BDE +:10A8200000D938BD0949C2F140030948097803EB52 +:10A8300081132146184402F063F82C80BDE83840AB +:10A84000FFF7B2BFADBC002094BC0020ABBC002021 +:10A85000801520202DE9F04F85B0CDE901100029A9 +:10A8600000F081800023414FDFF81C81DFF81CA13C +:10A870003F4E009301233F4A3B703F4B1978B8F895 +:10A88000003002EB4119002B69D11D461C469B4646 +:10A890004846FFF739F910F0800051D09AF800309F +:10A8A00087F800B004B93568002B2FD13368012434 +:10A8B0005B1B322B4DD8314B1B783BB300F0B8F803 +:10A8C000B8F80030002BE3D02B4AC3F140001178D8 +:10A8D0001A4600EB81102A4908440199914219D384 +:10A8E000009B8D1A0024134401950093029B194686 +:10A8F00013440293FEF742F9A8F80040FFF754FF13 +:10A90000204BC3F884403C70002DB3D1009805B0B3 +:10A91000BDE8F08FDDE9014103932246FEF72EF9F1 +:10A92000039B00984FF040411B1B164A2044A8F897 +:10A9300000300023C2F884103B7005B0BDE8F08FF2 +:10A9400040220D4B8AF8000019781346A8F8002021 +:10A95000BFE700988AF8004005B0BDE8F08F1A46BE +:10A96000C3F14000B5E70198D1E700BFADBC0020BE +:10A9700008BB0020C0A50020ABBC0020AEBC00205E +:10A980008015202000002E4094BC0020A9BC00208F +:10A99000094B00B583B01B788DF807003BB101214E +:10A9A0000DF10700FFF756FF03B05DF804FB03F05D +:10A9B000FF0003B05DF804FBAEBC0020044B1B7825 +:10A9C00003F0FF020BB1FFF745BF1046704700BF11 +:10A9D000AEBC0020012070470F4B1B78DBB170B577 +:10A9E0000E4C228802B970BD0D49C2F140030D48DA +:10A9F000002509780C4E03EB8113294618440123E6 +:10AA0000337001F07DFF2580FFF7CEFE074BC3F8C2 +:10AA10008450357070BD7047AEBC002094BC0020DF +:10AA2000ABBC002080152020ADBC002000002E40D3 +:10AA30002DE9F843324E337863B1324F3A784AB950 +:10AA40000122D9073A7044D49A0726D400225B0722 +:10AA50003A7001D4BDE8F8832B4B1A68002AF9D06C +:10AA6000EFF30582002AF5D1EFF3108572B618686E +:10AA700000283BD0254C2178002937D101222270B3 +:10AA800042691A60002A38D0916105B962B6002582 +:10AA90008368457798472570DCE7DFF87C8098F875 +:10AAA0000020002AD2D00025DFF870902B4659F8FC +:10AAB00023400135236820461B69984710B163691C +:10AAC0009B68984798F80020EBB29A42EFD8337809 +:10AAD000BCE7FFF757FE68B90D4B1B780BB933780D +:10AAE000B2E7337803F0FE033370ADE7002DB1D148 +:10AAF00062B6AFE700F026F8EEE7064B1A60C4E74F +:10AB0000D75200209EBC002014B700209BBC002020 +:10AB10005EE2016020B700209CBC002024B700202A +:10AB2000074A506A936A19468446506A936A994262 +:10AB3000F9D18445F7D1DB0B43EA4040704700BFB1 +:10AB400000400D40704700BF0000000008B52DED2B +:10AB5000048BB0EE409BB0EE418B00F05FF8B4EE9A +:10AB6000489BF1EE10FA06D69FED0A9BB4EE498B96 +:10AB7000F1EE10FA02D0BDEC048B08BD01F0BCFF71 +:10AB800089EE090BBDEC048B2123036008BD00BFD7 +:10AB9000AFF300800000000000000000B0EE407B3A +:10ABA00017EE903A1B4A23F0004393421BDD1A4AEA +:10ABB000934202DD30EE400B704700B585B0684629 +:10ABC00000F078F900F0030001289DED021B9DEDD7 +:10ABD000000B0CD0022812D070B1012000F096FEBC +:10ABE00005B05DF804FB9FED091B00F0F7BD00F018 +:10ABF0008DFEB1EE400BF3E700F0F0FDF0E700F062 +:10AC0000EDFDB1EE400BEBE7AFF30080000000007C +:10AC100000000000FB21E93FFFFFEF7F2DE9F0433B +:10AC200085B08DED001BDDE9007C2CF0004050EA82 +:10AC300007038DED020B2FD0039B984A23F0004EA3 +:10AC4000964529DC7A4296493A4340EAD2728A42D2 +:10AC500022D8DDF8089086453C464A4603F0004677 +:10AC600006DCC0F2C780B945C0F0C48000F0FD80AA +:10AC70008B491940D9B9BEF1000F40F0DF80B9F11E +:10AC8000000F4D4640F30881A1F213416D00002DE5 +:10AC900001F1FF31FADC0EE09DED027B9DED006BD2 +:10ACA00027EE067B87EE070B05B0BDE8F0834FEA81 +:10ACB0002E51A1F2FF317A4D0CEA050585B9002825 +:10ACC00040F0AD80002FB84640F3E480A5F2134574 +:10ACD0004FEA4808B8F1000F05F1FF35F8DC02E053 +:10ACE0000515A5F2FF35DFF8BC81414572DBC3F3E2 +:10ACF000130343F48013DFF8ACE1754559DBCCF363 +:10AD0000130C4CF4801CD01B491B0BD11DE050EAE6 +:10AD10000E0345D04FEADE73013903EB40034FEADF +:10AD20004E0211D0A3EB0C00944288BF00F1FF301B +:10AD30000028A2EB040E4FEAD277E8DA013907EBDC +:10AD400043034FEA4202EDD1101BA3EB0C0C9442DB +:10AD500088BF0CF1FF3CBCF1000FA4BF0246634664 +:10AD600053EA020105D11BE0D10F01EB430352006E +:10AD7000013DB3F5801FF7DB4A498D426ADA491B72 +:10AD8000142978DC05F21E40CA4003FA00F043FAA9 +:10AD900001F110430E433346024643EC102B83E788 +:10ADA000414BF60F03EBC60393ED000B05B0BDE876 +:10ADB000F083AEEB05041F2C25DD3C48491BA0EBBE +:10ADC000050C07FA0CFC18BF0024ABD1A3EB0C0C4C +:10ADD0001046C0E7A8EB0108B8F11F0F0DDC01F227 +:10ADE0001E430EFA08FE29FA03F309FA08F243EAB1 +:10ADF0000E0380E79DED020B56E72C4B5B1A09FA18 +:10AE000003F3002277E705F21E4C00FA04FE27FA4E +:10AE10000CFC07FA04F44CEA0E0C101B74E74FEA22 +:10AE2000C028B8F1000F1F4D7FF75DAF4FEA48080B +:10AE3000B8F1000F05F1FF35F8DC54E74FEACE25F5 +:10AE4000002D18497FF737AF6D00002D01F1FF315C +:10AE5000FADC30E7A3F58013334305F2FF3543EA0C +:10AE60000551104641EC100B1EE70F4B03EB167318 +:10AE700093ED000B18E71F2907DC05F21E4022FAAC +:10AE800001F103FA00F0084385E70848401B43FA44 +:10AE900000F080E7064D26E705490CE7FFFFEF7F4E +:10AEA0000000F07F02FCFFFFC0020020E2FBFFFF7A +:10AEB000EDFBFFFF70B553EC102B9C4923F00045D0 +:10AEC0008D4288B004466ADD99498D421E461BDCDE +:10AED000002B9FED867B40F3EB8030EE477BA1F5A6 +:10AEE0001B21A1F5F0618D426AD09FED826B01209C +:10AEF00037EE465B37EE457B84ED005B37EE467BF5 +:10AF000084ED027B08B070BD8A498D4260DD8A49BC +:10AF10008D424DDC2A1510EE100AA2F21642A5EB66 +:10AF2000025141EC170B9FED755BBDEEC76BB8EEA0 +:10AF3000C66B37EE467B27EE057BFDEEC74B8DEDEE +:10AF4000026BB8EEE46B37EE467B27EE057BB5EE81 +:10AF5000407BF1EE10FA8DED046B8DED067B40F039 +:10AF6000968014EE903A002B0CBF01230223734904 +:10AF700001910221009102A8214600F0E7F8002E7D +:10AF8000C0DA94ED006B94ED027BB1EE466BB1EE4E +:10AF9000477B84ED006B84ED027B4042B2E70020EA +:10AFA0000021C4E90201002084ED000B08B070BD4F +:10AFB00030EE407B002084ED027B84ED007BA1E736 +:10AFC0009FED505B9FED516B37EE457B01208FE786 +:10AFD00000F0F4FCB6EE007B9FED4E5BA0EE057B2F +:10AFE000FDEEC77B9FED413B17EE900A9FED416B55 +:10AFF0001F28B8EEE75BB1EE454BA5EE430B25EEFF +:10B00000067B1CDC4E4B421E53F82230AB4216D05E +:10B0100030EE476B84ED006B30EE460B30EE470BA5 +:10B02000002E84ED020BBFF66DAFB1EE466BB1EEB4 +:10B03000400B84ED006B84ED020B404262E730EE82 +:10B04000476B16EE903AC3F30A53C3EB1553102B1C +:10B050004FEA2552DEDDB0EE403B9FED2A6B9FEDBF +:10B060002B2BA4EE063B30EE437BA4EE067B95EE45 +:10B07000027B33EE476B16EE903AC3F30A53D21AB3 +:10B08000312A06DCB0EE430B84ED006BC4E70323EA +:10B090006DE79FED226BB0EE430B9FED222BA4EEEC +:10B0A000060B33EE407BA4EE067B95EE027BAFE70A +:10B0B000244930EE077B8D420ED09FED0E6B4FF092 +:10B0C000FF3037EE065B37EE457B84ED005B37EEF5 +:10B0D000067B84ED027B15E79FED0A5B9FED0B6B12 +:10B0E00037EE057B4FF0FF30EBE700BF0000405428 +:10B0F000FB21F93F3163621A61B4D03D00000000CA +:10B10000000070410000601A61B4D03D7370032EDE +:10B110008A19A33B83C8C96D305FE43F0000002E4D +:10B120008A19A33BC14920259A837B39FB21E93F3A +:10B130007BD90240FB213941FFFFEF7F904900207E +:10B1400004480020FB21F93F000000002DE9F04FEA +:10B150002DED088BADF5157D1C4604930791AB4B87 +:10B16000A69912F1140F53F82150824604F1FF38CA +:10B17000C0F29982A649D31E81FB0301DB17C3EB02 +:10B18000A10303930133A3EB8303DB00D3180693DE +:10B19000039B15EB0801A3EB08031AD401319FEDC3 +:10B1A000956BA79819441CAA0AE050F8234007EEB3 +:10B1B000904A0133B8EEE77B8B42A2EC027B08D0C9 +:10B1C000002BF2DAB0EE467B01338B42A2EC027B1D +:10B1D000F6D1002DC0F2C982049B1CAA02EBC30465 +:10B1E0006CAE4FEAC30C4046EF180AEBC301B8F14E +:10B1F000000F9FED807B09DB22465346B3EC025BD8 +:10B2000032ED026B8B42A5EE067BF7D10130B842DE +:10B21000A6EC027B04F10804E9D108AF07EB850333 +:10B220009FED769B9FED778B043BDDF818B005937F +:10B230000AEB0C0407EB85096CAE2946019594AB2B +:10B2400003EBC103002913ED280B16DD06EBC10348 +:10B250003A4620EE097B33ED025BB0EE406BBDEE6B +:10B26000C77BB342B8EEC77BA7EE486BBDEEC66B9B +:10B2700037EE050BA2EC016AEBD15846029100F0C3 +:10B28000A9FBB0EE40ABB4EE000B2AEE000B00F0D1 +:10B2900029FCB2EE007BA0EE47ABBDEECABBBBF112 +:10B2A000000FB8EECB7B02993AEE47AB74DD01F1AB +:10B2B000FF3ECBF1180357F82E2042FA03FC0CFA9C +:10B2C00003F3D21ACBF117001BEE103A42FA00F545 +:10B2D0006344002D47F82E200BEE103A64DCB5EEE7 +:10B2E00040ABF1EE10FA40F0C480019B01F1FF3E4B +:10B2F00073450DDC4FEA810C07EB8103002053F806 +:10B30000042D4B4540EA0200F9D1002840F0F280BC +:10B31000019B013B57F82330002B40F0E680059B52 +:10B32000012553F8042D0135002AFAD001F1010E50 +:10B330000D447046049B1944039B03EB0E0C0CF167 +:10B34000804CA79B0CF1FF3C03EB8C0C1CAB06EB79 +:10B35000CE0E03EBC1019CED017AB8EEC77BB8F1CC +:10B36000000F81ED007B0CF1040C0A469FED216B70 +:10B3700001F1080109DB534601E032ED027BB3EC39 +:10B38000025BA342A5EE076BF7D10130A842AEECF9 +:10B39000026BE0DD294652E740F09D804B1E57F8D6 +:10B3A0002350ED15002D9ADD1BEE103A002903F114 +:10B3B00001030BEE103A40F38C813A68002A40F00A +:10B3C000828001292DD03B46012053F8042F002A0A +:10B3D0007CD0431CC2F18072994247F820201FDDC7 +:10B3E00057F8232007EB810C07EB83036FF07F40B6 +:10B3F00011E000BF0000000000000000000000009D +:10B400000000703E0000000000007041F447002082 +:10B41000ABAAAA2A1A68821A43F8042B6345F9D109 +:10B420000122BBF1000F0DDDBBF1010F00F03381F4 +:10B43000BBF1020F06D1481E57F82030C3F31503A5 +:10B4400047F82030022D7FF44AAFB7EE000B30EE04 +:10B450004AAB002A3FF443AF5846029100F0BAFAD3 +:10B460003AEE40ABB5EE40ABF1EE10FA02993FF484 +:10B470003CAF069CB0EE4A0B6042A8468B46019D4D +:10B4800000F0A8FA9FEDC16BB4EEC60BF1EE10FA16 +:10B49000C0F247819FEDBF7B20EE077BBDEEC77BEF +:10B4A0000BF10102B8EEC75BA5EE460BBDEEC00B7B +:10B4B000183410EE103A47F82B3017EE103A069475 +:10B4C00047F822302AE00123002083E70130884238 +:10B4D0007FF47BAFA5E7B6EE007BB4EEC7ABF1EE31 +:10B4E00010FA80F2E5800025F9E601F1010E7046C0 +:10B4F00075461FE7069BA3F1180157F82E300691F9 +:10B50000A8467246019D4BB9ACF104033B4453F885 +:10B51000040D013A18390028F9D006910698B7EEC3 +:10B52000000B019200F056FA019A002AC0F2218124 +:10B530009FED986B02F1010C6CA907EB8C034FEAAD +:10B54000CC0E01EBCC0133ED017ABB42B8EEC77BE8 +:10B5500027EE007B20EE060B21ED027BF3D19FED61 +:10B560008F4BAEF108036CA9CE18002444AF002D18 +:10B570009FED8C7B10DBB0EE446B8C483146002392 +:10B5800003E09C4208DBB0EC026BB1EC025B0133E0 +:10B590009D42A5EE067BF4DA07EBC403944283EDEB +:10B5A000007B4FEAC40104F10103A6F1080601D0B3 +:10B5B0001C46DCE7A69B022B1DDC002B00F38B80D6 +:10B5C0000FD19FED787BBE443EED026B774537EEA1 +:10B5D000067BF9D143460BB1B1EE477B079B83ED68 +:10B5E000007B1BEE103A03F007000DF5157DBDEC56 +:10B5F000088BBDE8F08FA69B032BF2D1002A00F048 +:10B60000E38002F1005307EBC20030ED026BB0EEB5 +:10B61000475B874237EE067B36EE476B80ED007B5B +:10B6200036EE056B80ED026BEFD1012A40F3CC8042 +:10B63000394491ED006BDA0046A907EBC30333ED03 +:10B64000027BB0EE465B994236EE076B37EE467BE7 +:10B6500083ED006B37EE057B83ED027BEFD19FED31 +:10B66000517B02F108033B4407F1100233ED026BFA +:10B670009A4237EE067BF9D14346002B59D1D7E9E0 +:10B680000001D7E90223079C84ED047BC4E9000193 +:10B69000C4E90223A5E7481E57F82030C3F3160378 +:10B6A00047F82030CEE600216FF0170303916DE5D7 +:10B6B0001BEE103A002903F101030BEE103AC8BF4C +:10B6C00002253FF77AAEB7EE007B37EE4AAB022594 +:10B6D00005E60022A5E69FED337B07EBCC0C3CEDA5 +:10B6E000026B674537EE067BF9D1434697ED006B59 +:10B6F0008BBB079B002A83ED007B36EE477B0CDD7E +:10B7000046A90123B1EC026B01339A4237EE067B66 +:10B71000F8DA43460BB1B1EE477B079B83ED027B22 +:10B720005FE7BDEEC00B5A4610EE103A47F82B30DB +:10B73000F4E697ED005BB1EE477B97ED026BB1EE5F +:10B74000455B079BB1EE466B83ED005B83ED026BBF +:10B7500083ED047B45E7079BB1EE475B002A83ED51 +:10B76000005B36EE477BCBDCD5E7049B4FEAC30C8E +:10B7700053E5A69B022B1BDC002B21DC7FF431AFB1 +:10B780009FED087B26E700BFAFF3008000000000BC +:10B7900000007041000000000000703E000000400A +:10B7A000FB21F93F0000000000000000880200209B +:10B7B000A69B032B7FF415AF9FED067B44AF5BE7A1 +:10B7C0009FED047B44AF90E79FED027B54E700BF01 +:10B7D000AFF30080000000000000000010EE903A7F +:10B7E00023F00043B3F1795F2DED028B2EDAFDEEED +:10B7F000C07B17EE903A002B65D020EE004B9FEDFA +:10B80000358B9FED362B9FED373BA4EE082B9FED3C +:10B81000375BA4EE023B9FED376BA4EE035B9FED1D +:10B82000377BA4EE056BA4EE067B24EE077B21EEAE +:10B83000401BB6EE006BA4EE071BB7EE000B94EEB8 +:10B84000061BBDEC028B30EE410B70479FED218B48 +:10B8500020EE004B9FED212B9FED223BA4EE082B09 +:10B860009FED225BA2EE043B9FED226BA3EE045BF7 +:10B870009FED227BA5EE046B224AA6EE047B934249 +:10B8800027EE047BD3DD204A934217DCB7EE006B32 +:10B890000020A3F5001141EC150B36EE456B21EEAF +:10B8A000401BB6EE003BA4EE071B94EE035BBDEC21 +:10B8B000028B35EE410B36EE400B7047B6EE076B50 +:10B8C000B5EE025BEBE7B7EE000BBDEC028B704709 +:10B8D000AFF30080D43888BEE9FAA8BDC4B1B4BDC6 +:10B8E0009EEE213EAD529C804F7E92BE9015CB19AC +:10B8F000A001FA3E7751C1166CC156BF4C55555543 +:10B900005555A53F3233D33F0000E93F10EE903A42 +:10B9100023F00043B3F1795F04DAFDEEC07B17EE4C +:10B92000903A5BB320EE007B9FED162B9FED173B0B +:10B930009FED184BA7EE023B9FED185BA3EE074B64 +:10B940009FED186BA4EE075BA5EE076B20EE075B7F +:10B9500030B99FED164BA7EE064BA4EE050B7047D2 +:10B960009FED144B26EE456BB6EE003BA1EE036B4C +:10B9700096EE071BA5EE041B30EE410B704700BF8F +:10B98000AFF300807CD5CF5A3AD9E53DEB9C2B8AAA +:10B99000E6E55ABE7DFEB157E31DC73ED561C1192C +:10B9A000A0012ABFA6F810111111813F4955555524 +:10B9B0005555C5BF495555555555C53F51EC100B0B +:10B9C00010EE102A21F0004343EC102B704700BF0B +:10B9D0000000000053EC102B10B4C3F30A541946B6 +:10B9E00074BB23F00041114327D09FED307B3B49CE +:10B9F00020EE077B884253EC172B43DBC3F30A543A +:10BA00001946363C4CF2503C604522DC204440F262 +:10BA1000FE74A0421DDC002829DC10F1350F38DB54 +:10BA200021F0FF41363021F4E0019FED227B41EA15 +:10BA3000005343EC102B20EE070B5DF8044B7047CE +:10BA400040F2FF7C6445DDD130EE000B5DF8044B25 +:10BA500070479FED1A7B9FED1B5BB0EE470B002BF1 +:10BA60005DF8044B27FE057B27EE000B704721F0A5 +:10BA7000FF4121F4E00141EA005343EC102B5DF853 +:10BA8000044B70479FED110B5DF8044B27EE000B44 +:10BA900070479FED0E7B9FED0F5BB0EE470B002BC9 +:10BAA00027FE057B27EE000BC7E700BF0000000064 +:10BAB00000005043000000000000903C9C7500888E +:10BAC0003CE4377E9C7500883CE437FE59F3F8C2AD +:10BAD0001F6EA50159F3F8C21F6EA581B03CFFFF90 +:10BAE0000000000010B582B08DED000B01990098A8 +:10BAF000C1F30A52A2F2FF33132B844631DC002B30 +:10BB000021DB3A4A1A4101EA020404438E462DD051 +:10BB10009FED347B9DED006B36EE077BB5EEC07B71 +:10BB2000F1EE10FA09DD002904DA4FF4801141FA30 +:10BB300003F39E442EEA020100200B46024643EC2A +:10BB4000102B02B010BD9FED277B30EE077BB5EECA +:10BB5000C07BF1EE10FAF0DD002928DB0020014661 +:10BB6000EBE7332B06DDB3F5806F1BD09DED000BAB +:10BB700002B010BDA2F213424FF0FF3E2EFA02F2C5 +:10BB80001042F3D09FED177B9DED006B36EE077BE7 +:10BB9000B5EEC07BF1EE10FACFDD002913DB2CEA05 +:10BBA0000200CAE79DED007B37EE070BE0E721F0CE +:10BBB000004101430E4B00294FF000000CBF4FF035 +:10BBC00000411946B9E7142B09D00124C3F134030D +:10BBD00004FA03F39C44604588BF0919DFE701318B +:10BBE000DDE700BF9C7500883CE4377EFFFF0F0057 +:10BBF0000000F0BF03460846194600F04FBF00BFE3 +:10BC000038B5A1FB02148CBB00F046F80546E0B144 +:10BC100050F8042C22F00302043A242A17D8132ADD +:10BC20001AD91B2AC0E900441DD9242A14BF00F1E7 +:10BC3000100200F118024FF00003C0E9024404BFF3 +:10BC400004614461C2E900339360284638BD21464F +:10BC500000F056FE284638BD02460023C2E90033F4 +:10BC60009360284638BD00F10802F6E700F044FF73 +:10BC70000C2300250360E8E7024B0146186800F03A +:10BC80000BB800BF70520020024B0146186801F04B +:10BC90009FBA00BF705200202DE9F04F01F10B0652 +:10BCA000162E83B0044624D8102900F2BA8000F082 +:10BCB000A3FA102618220220B54F3A44A2F1080137 +:10BCC00053688B4200F0BA805A68D96822F00302A8 +:10BCD0001A449D68E9608D60516841F00101204679 +:10BCE000516003F1080500F08DFA284603B0BDE865 +:10BCF000F08F36F0070600F19480B14200F2918097 +:10BD000000F07AFAB6F5FC7FC0F09A81730A00F071 +:10BD10008F80042B00F26F81B30903F1390003F126 +:10BD2000380CC3009A4F3B44A3F108055B689D4261 +:10BD300006D10CE0002980F22781DB689D4206D005 +:10BD40005A6822F00302911B0F29F3DD60463D691A +:10BD5000DFF850C265457CD06A6822F00302931B6D +:10BD60000F2B00F37B81002BC7E904CC80F26C81A0 +:10BD7000B2F5007F80F01A81D308796801334FEA69 +:10BD8000521E012202FA0EF20A4357F833E0C5F8B8 +:10BD900008E007EBC3010839E9607A6047F83350DF +:10BDA000CEF80C50831001219940914257D811428E +:10BDB00006D120F003004900114200F10400FAD03E +:10BDC00007EBC0094D468646D5F80C80454508D19D +:10BDD0001DE1002B80F22481D8F80C80454500F04D +:10BDE0001681D8F8042022F00302931B0F2BF0DDFC +:10BDF0002046D8E9025408EB060146F00106C8F8CF +:10BE00000460EC60A56043F00104C7E90411C1E9D6 +:10BE100002CC4C6048F8023000F0F4F908F1080553 +:10BE200002E00C2323600025284603B0BDE8F08F14 +:10BE30004FF4007340204FF03F0C73E7D3689A42F1 +:10BE400008BF02307FF440AF3D69DFF858C1654557 +:10BE500082D17A688310012199409142A7D9BD68A7 +:10BE60006B6823F003094E4503D8A9EB06030F2B9B +:10BE70007ADCDFF834B1474BDBF800201B68013275 +:10BE8000334405EB090A00F0338103F580530F3387 +:10BE900023F47F6828F00F084146204600F004FE96 +:10BEA000411C024600F0F380824500F2EE803A4BDE +:10BEB000196841441960084600F04E81DBF8001013 +:10BEC000019301311BBFA2EB0A010918CBF8002036 +:10BED000196012F0070B00F01781CBF108010A443A +:10BEE000CBF5805190440831A1EB0801C1F30B0A56 +:10BEF00051462046009200F0D7FD421CDDE90023A8 +:10BF000000F04F81801A00EB0A081968BA6048F007 +:10BF100001005144BD425060196000F02981B9F11F +:10BF20000F0F40F227816868A9F10C0C2CF0070C68 +:10BF300000F0010040EA0C0068604FF0050E05EBD0 +:10BF40000C00BCF10F0FC0E901EE00F23281506825 +:10BF50001546124B1A688A4238BF1960104B1A688E +:10BF60008A4238BF196094E0AA1943F0010346F0F1 +:10BF700001066E602046BA60536000F043F9083550 +:10BF8000284603B0BDE8F08FD9681A44A1E600BF87 +:10BF9000544E002010B90020E0B8002008B900205D +:10BFA0000CB900205C4E00205C520020B2F5206FDE +:10BFB0004FEA522363D3142B00F2B78003F15C01E4 +:10BFC000C9005B3307EB010E7958AEF1080E8E45C0 +:10BFD00000F091804B6823F00303934202D98968F3 +:10BFE0008E45F7D1D1F80CE07A68C5E9021ECEF88B +:10BFF0000850CD60D6E6142B59D9542B00F29D8001 +:10C00000330B03F16F0003F16E0CC3008AE60EF1EF +:10C01000010E1EF0030F05F108057FF4D5AE51E0C7 +:10C02000424445465368D8F80C1043F0010353606E +:10C0300055F8083F2046D9608B6000F0E3F8F3E63E +:10C04000F00806F1080237E62A442046536843F018 +:10C0500001035360083500F0D5F8E5E6A91920463C +:10C0600046F0010643F001046E60C7E90411C1E91E +:10C0700002CC4C60AB5000F0C5F80835D4E693090B +:10C0800003F13901C90038339CE7BD425FD0BD6878 +:10C09000686820F003084645A8EB060302D80F2B7A +:10C0A0003FF762AF204600F0ADF80025BCE603F193 +:10C0B0005C0003F15B0CC30034E659F808394B45CA +:10C0C00040F0968010F0030F00F1FF30F5D17B684F +:10C0D00023EA01037B60490099423FF6C0AE19B9DB +:10C0E000BDE649000EF1040E1942FAD0704667E62B +:10C0F00003F11008D0E69A104FF001087B6808FAA7 +:10C1000002F21A437A6070E702EB08014942C1F378 +:10C110000B0A51462046009200F0C6FC431CDDE9A4 +:10C1200000237FF4EFAEDA46EFE6542B25D8130B4D +:10C1300003F16F01C9006E3344E7B3F5AA7F25D838 +:10C14000F30B03F1780003F1770CC300EAE5294B08 +:10C15000186840441860B1E6CAF30B0CBCF1000F3C +:10C160007FF4ACAEBD68C84448F001006860F0E6FA +:10C170001546EEE60123536094E7B3F5AA7F23D872 +:10C18000D30B03F17801C90077331BE740F2545217 +:10C19000934223D8B30C03F17D0003F17C0CC30060 +:10C1A000C0E5ABF1080BD844A8EB02084FF0000A39 +:10C1B000ABE605F108012046009301F009F8BD68DF +:10C1C000009B68681968C4E640F254518B420BD852 +:10C1D000930C03F17D01C9007C33F3E64FF47E73C9 +:10C1E0007F204FF07E0C9DE54FF47E717E23E9E6C3 +:10C1F0007B6870E7E0B80020014800F07BBE00BF1C +:10C20000D8B80020014800F077BE00BFD8B80020A1 +:10C2100010B4044C03460A4620685DF8044B1946E6 +:10C2200000F002B8705200202DE9F84F174600299F +:10C2300000F098800C4607F10B058046FFF7DCFF05 +:10C24000162D54F8041C5BD810252A46AF425CD842 +:10C2500021F003069642A4F1080962DABC4BD3F838 +:10C2600008C009EB0600844500F09780D0F804C0B0 +:10C270002CF0010303445B68DB0768D42CF0030C4B +:10C2800006EB0C03934247DACB0710D454F8083C72 +:10C29000A9EB030ADAF8043023F003018C44B44418 +:10C2A000944580F211817318934280F2E8803946F8 +:10C2B0004046FFF7F1FC0746E0B154F8043C23F098 +:10C2C00001034B44A0F10802934200F0D280321FD8 +:10C2D000242A00F2F580132A00F2AC80034622469D +:10C2E000116819605168596092689A602146404609 +:10C2F00000F06EFF4046FFF785FF3846BDE8F88F37 +:10C3000025F00705002D2A46A0DA0C23C8F80030D6 +:10C3100000273846BDE8F88F1E46D0E90223D360D7 +:10C320009A60731B0F2B22D8D9F8043003F0010355 +:10C3300033434E44C9F80430736843F0010373601B +:10C3400040462746FFF75EFF3846BDE8F88FC9072D +:10C35000ADD454F8083CA9EB030ADAF8041021F034 +:10C360000301A0E7BDE8F84F1146FFF795BCD9F8E7 +:10C37000042009EB050102F001024E4443F00103E1 +:10C380002A43C9F804204B60736843F00103083165 +:10C390007360404600F01CFFD2E7DCF8040020F098 +:10C3A000030B06EB0B0C05F1100084454DDAC907B1 +:10C3B0003FF57DAF54F8081CA9EB010ADAF8041028 +:10C3C00021F003018B44B34458453FF76CAF574607 +:10C3D000DAF80C1057F8080F321F242AC160886061 +:10C3E00000F2DB80132A40F2D6802168CAF80810D8 +:10C3F0006168CAF80C101B2A00F2DF8008340AF1C9 +:10C4000010022168116061685160A16891600AEBB7 +:10C410000501ABEB050242F0010299604A60DAF8CF +:10C42000043003F001032B434046CAF80430FFF701 +:10C43000E9FE6EE723680360636843601B2A68D8DF +:10C4400004F1080200F108034AE709EB05029A60CB +:10C45000ACEB050343F00103536054F8043C03F0D4 +:10C4600001032B43404644F8043CFFF7CBFE27462C +:10C470004FE750F8043C23F003031E4451E75746AE +:10C48000DAF80C1057F8080F321F242AC1608860B0 +:10C490004CD8132A48D92168CAF808106168CAF82C +:10C4A0000C101B2A56D808340AF110021E462368C5 +:10C4B000136063685360A3689360D1463C4630E7DD +:10C4C000214600F0A1F911E7D0E902135746CB60ED +:10C4D000996057F8081FDAF80C30CB60321F242A15 +:10C4E00099602DD8132A29D92368CAF808306368BF +:10C4F000CAF80C301B2A42D808340AF1100322680B +:10C500001A6062685A60A2689A606646D1463C46E4 +:10C5100007E7A3688360E368C360242A26D004F198 +:10C52000100200F11003DBE63A46BFE72146384629 +:10C530001E46D14600F068F93C46F2E63B46DEE78F +:10C54000214638466646D14600F05EF93C46E8E6AC +:10C55000544E0020A168CAF81010E168CAF81410FF +:10C56000242A20D010340AF118029FE723690361BE +:10C570006169416104F1180200F11803B0E6A36893 +:10C58000CAF81030E368CAF81430242A21D01034D5 +:10C590000AF11803B3E73A4633E72146384600F07C +:10C5A00033F9164B33E72269CAF818206269CAF8D2 +:10C5B0001C2018340AF1200278E7A168CAF810108C +:10C5C000E168CAF81410242A0DD010340AF11802B8 +:10C5D00017E72369CAF818306369CAF81C301834A1 +:10C5E0000AF120038BE72269CAF818206269CAF8A9 +:10C5F0001C2018340AF1200203E700BF544E00202B +:10C600000EB410B59DB06FF000411FABCDE906012F +:10C610000491094953F8042B0290084C08680193CF +:10C6200002A9059400F0F2FE029B00221A701DB0D0 +:10C63000BDE8104003B07047705200200802FFFFB1 +:10C64000024A0349034800F0BBB800BF645200200F +:10C650003D130300404B00200C4B4168994210B53C +:10C66000044601D003F030F8A168094B994202D08A +:10C67000204603F029F8E168064B994204D0204691 +:10C68000BDE8104003F020B810BD00BF14B9002071 +:10C690007CB90020E4B900202DE9F8432A4C2B4B4B +:10C6A0002B48DFF8C090DFF8C0802A4F18600025C3 +:10C6B00004230822294604F15C00274E6566C4E97C +:10C6C0000253C4E90055C4E90455A56100F018F906 +:10C6D000224B63670822294604F1C400C4E90749D4 +:10C6E000C4E90987C4E91A55C4E91E55C4F8CC50F9 +:10C6F0002567C4F88050E66200F002F9184BC4F8D0 +:10C70000DC30294604F16803082204F59670C4F869 +:10C710008430C4E92298C4E92476C4E93455C4E9D4 +:10C720003855C4F83451C4F8D850C4F8E85000F073 +:10C73000E7F804F1D003C4E93C98C4E93E76C4F8B4 +:10C74000EC30BDE8F88300BF14B900204CBA0020DB +:10C75000B5E20200ED1503000D160300090001000B +:10C760001200020089150300AD15030010B5044640 +:10C770000A4800F0BFFB636B23B9094B094A1B68E9 +:10C78000626323B1BDE81040044800F0B5BBFFF779 +:10C7900083FFBDE81040014800F0AEBBDCB80020CC +:10C7A0004CBA0020CDE20200014800F0A3BB00BF5C +:10C7B000DCB80020014800F09FBB00BFDCB80020BF +:10C7C0002DE9F84380460F4616464FF00009D6E99A +:10C7D0000154013D11D4A389012B05F1FF3508D97E +:10C7E000B4F90E300133214603D04046B84749EA38 +:10C7F00000096B1C04F16804EDD13668002EE6D107 +:10C800004846BDE8F88300BF88420DD98B188342A3 +:10C810000AD900EB020CBAB1624613F801CD02F856 +:10C8200001CD9942F9D170470F2A0ED8034602F183 +:10C83000FF3C4AB10CF1010C013B8C4411F8012B77 +:10C8400003F8012F6145F9D1704740EA01039B07C6 +:10C8500050D1A2F1100370B501F1200C23F00F05A7 +:10C8600001F1100E00F11004AC441B095EF8105CDD +:10C8700044F8105C5EF80C5C44F80C5C5EF8085CF4 +:10C8800044F8085C5EF8045C44F8045C0EF1100E99 +:10C89000E64504F11004E9D1013312F00C0F01EB6D +:10C8A000031102F00F0400EB031327D0043C24F023 +:10C8B00003064FEA940C1E441C1F8E465EF8045B70 +:10C8C00044F8045FB442F9D10CF1010402F0030210 +:10C8D00003EB840301EB840102F1FF3C4AB10CF14C +:10C8E000010C013B8C4411F8012B03F8012F614529 +:10C8F000F9D170BD02F1FF3C03469BE72246EBE70E +:10C90000830730B548D0541E002A3FD0CAB2034630 +:10C9100001E0013C3AD303F8012B9D07F9D1032C28 +:10C920002DD9CDB245EA05250F2C45EA054536D966 +:10C93000A4F1100222F00F0C03F1200EE6444FEA9E +:10C94000121C03F1100242E9045542E9025510326B +:10C950007245F8D10CF1010214F00C0F03EB021236 +:10C9600004F00F0C13D0ACF1040323F003030433E1 +:10C97000134442F8045B9342FBD10CF003042CB146 +:10C98000C9B21C4403F8011B9C42FBD130BD644674 +:10C990001346002CF4D1F9E703461446BFE71A46C4 +:10C9A000A446E0E7830710B5044610D10268A2F15F +:10C9B000013323EA020313F0803F08D150F8042F1B +:10C9C000A2F1013323EA020313F0803FF6D003788B +:10C9D0001BB110F8013F002BFBD100F005FA2046F7 +:10C9E00010BD00BF40EA01039B0730B501D1032A07 +:10C9F0000FD8844601F1FF3E07E01EF8011F03F83F +:10CA0000011B541EC1B19C4622466346002AF4D144 +:10CA100030BD0B468446194653F8045BA5F101343A +:10CA200024EA050414F0803FE4D1043A032A4CF8C8 +:10CA3000045B1946EFD8DDE79444002CE8D003F8F6 +:10CA4000011B6345FBD130BD41EA00039B0715D1B3 +:10CA50000B68A3F1013222EA030212F0803F0DD1EC +:10CA600001F1040C40F8043B61465CF8043BA3F17F +:10CA7000013222EA030212F0803FF3D0034611F89C +:10CA8000012B184603F8012B002AF8D1704700BF8C +:10CA9000014B93F828017047E84C002013460A46E2 +:10CAA0000146022000F000BB38B5074D00220446C5 +:10CAB00008462A60FCF76CFB431C00D038BD2B688D +:10CAC000002BFBD0236038BD68BA002038B50C4677 +:10CAD000084D8446114620461A4600232B606446C2 +:10CAE000FBF712FC431C00D038BD2B68002BFBD099 +:10CAF000236038BD68BA0020014B1868704700BF3A +:10CB0000705200200000000000000000A2EB0300B3 +:10CB1000704700BF02780B78012A28BF9A42F5D1EE +:10CB20006DE9044540EA0104CDE902676FF0000CAD +:10CB30004FEA447212B380EA010414F0070F6AD17D +:10CB400000F0070420F0070004F0030521F00701BE +:10CB50004FEAC505F0E8042314F0040FF1E8046778 +:10CB60000CFA05F462EA040266EA04060AD063EAF3 +:10CB70000403624667EA0407664603E0F0E804231C +:10CB8000F1E8046782FA4CF582EA0604A4FA8CF410 +:10CB90006CBB83FA4CF583EA0705A5FA8CF595B9C9 +:10CBA00050E9022351E9026782FA4CF582EA060451 +:10CBB000A4FA8CF483FA4CF583EA0705A5FA8CF500 +:10CBC0002543DBD09CB92DBAB5FA85F424F00704CF +:10CBD00027FA04F1DDE9026723FA04F303F0FF000A +:10CBE00001F0FF01FDE80445A0EB0100704724BA05 +:10CBF000B4FA84F424F0070426FA04F1DDE90267AC +:10CC000022FA04F202F0FF0001F0FF01FDE8044502 +:10CC1000A0EB0100704714F0030F3CD110F00304A7 +:10CC200028D150F8082B51F8083B82FA4CF582EADB +:10CC30000305A5FA8CF55DB950F8042C51F8043CB5 +:10CC400082FA4CF582EA0305A5FA8CF5002DE8D0AE +:10CC50002DBAB5FA85F424F0070423FA04F122FA78 +:10CC600004F202F0FF0001F0FF01FDE80445A0EB33 +:10CC7000010070474FEAC40420F0030050F8082B6D +:10CC800021F0030151F8083B0CFA04F462EA0402B3 +:10CC900063EA0403C9E710F003041AD0A1EB04010E +:10CCA00020F00300E40750F8042B06D00FD28B7855 +:10CCB0005FFAA2F4E41A06D12BB1CB785FFAB2F492 +:10CCC000E41A00D11BB920465DF8104B704701F102 +:10CCD000040150F8042BCC0721F0030151F8043B68 +:10CCE00048D824D222F07F4482FA4CF594EA1325E6 +:10CCF000A5FA8CF50AD165B951F8043B84EA02041F +:10CD0000B4EB036F0ED150F8042BEBE74FEA13237B +:10CD100055E035F07F454DD10878FDE80445C0F178 +:10CD2000000070474FEA126203F0FF0347E002EA97 +:10CD30001C4482FA4CF594EA1345A5FA8CF50AD105 +:10CD400065B951F8043B84EA0204B4EB034F0CD1FB +:10CD500050F8042BEBE74FEA134330E015EA1C458B +:10CD600028D10B884FEA124229E04FEA124203EA27 +:10CD70001C4324E002F0FF0482FA4CF594EA1365A8 +:10CD8000A5FA8CF50AD165B951F8043B84EA02048E +:10CD9000B4EB032F09D150F8042BEBE74FEA1363F0 +:10CDA0000DE015F0FF0F05D10B684FEA122223F0BA +:10CDB0007F4304E04FF00000FDE80445704712BADD +:10CDC0001BBA82FA4CF482EA0304A4FA8CF5B5FA91 +:10CDD00085F402FA04F203FA04F34FEA1260FDE864 +:10CDE0000445A0EB1360704780EA0102844612F00C +:10CDF000030F4FD111F0030F32D14DF8044D11F054 +:10CE0000040F51F8043B0BD0A3F101329A4312F006 +:10CE1000803F04BF4CF8043B51F8043B16D100BFDF +:10CE200051F8044BA3F101329A4312F0803FA4F170 +:10CE300001320BD14CF8043BA24312F0803F04BFF7 +:10CE400051F8043B4CF8044BEAD023460CF8013B64 +:10CE500013F0FF0F4FEA3323F8D15DF8044B70470E +:10CE600011F0010F06D011F8012B0CF8012B002A4C +:10CE700008BF704711F0020FBFD031F8022B12F03B +:10CE8000FF0F16BF2CF8022B8CF8002012F47F4FF6 +:10CE9000B3D1704711F8012B0CF8012B002AF9D1FE +:10CEA000704700BF70B50D4E0D4D761BB61006D005 +:10CEB000002455F8043B01349847A642F9D1094EA5 +:10CEC000094D761B05F01EFAB61006D0002455F861 +:10CED000043B01349847A642F9D170BD381C00606C +:10CEE000381C00605C1C0060381C0060704700BF8C +:10CEF000704700BF704700BF704700BF01F0FF01DF +:10CF0000102A2BDB10F0070F08D010F8013B013A74 +:10CF10008B422DD010F0070F42B3F6D1F0B441EAA6 +:10CF2000012141EA014122F007047FF000070023BC +:10CF3000F0E80256083C85EA010586EA010685FA12 +:10CF400047F5A3FA87F586FA47F6A5FA87F68EB96C +:10CF5000EED1F0BC01F0FF0102F0070232B110F88F +:10CF6000013B013A83EA010313B1F8D10020704775 +:10CF700001387047002D06BF35460338073815F0D5 +:10CF8000010F07D1013015F4807F02BF013015F485 +:10CF9000C03F0130F0BC0138704700BF0000000006 +:10CFA0000000000000000000000000000000000081 +:10CFB0000000000000000000000000000000000071 +:10CFC00000000000000000000000000090F800F0E9 +:10CFD0006DE9024520F007016FF0000C10F0070426 +:10CFE00091F820F040F049804FF000046FF0070006 +:10CFF000D1E9002391F840F000F1080082FA4CF2E8 +:10D00000A4FA8CF283FA4CF3A2FA8CF34BBBD1E96D +:10D01000022382FA4CF200F10800A4FA8CF283FA9F +:10D020004CF3A2FA8CF3E3B9D1E9042382FA4CF26F +:10D0300000F10800A4FA8CF283FA4CF3A2FA8CF304 +:10D040007BB9D1E9062301F1200182FA4CF200F10B +:10D050000800A4FA8CF283FA4CF3A2FA8CF3002BAA +:10D06000C6D0002A04BF04301A4612BAB2FA82F2BD +:10D07000FDE8024500EBD2007047D1E9002304F03F +:10D080000305C4F100004FEAC50514F0040F91F840 +:10D0900040F00CFA05F562EA05021CBF63EA0503DD +:10D0A00062464FF00004A9E72DE9F047DFF87CA0C5 +:10D0B0000646DAF8000098460F469146FFF71AFF39 +:10D0C000184B1C6824B365681F2D24DC5EB96B1CEB +:10D0D0000235DAF80000636044F82570FFF70CFFB2 +:10D0E0000020BDE8F08704EB85010123C1F888909A +:10D0F000D4F88821AB401A43022EC4F88821C1F825 +:10D100000881E4D1D4F88C211A43C4F88C21DEE7DD +:10D11000054C1C60D7E7DAF80000FFF7EDFE4FF092 +:10D12000FF30DEE740B7002044B70020DC4C002091 +:10D13000F8B5244F0C460646FFF75EF8BB685D68FD +:10D14000C4F57E610F3125F003054B1923F47F638D +:10D1500023F00F03A3F58054B4F5805F07DB0021B3 +:10D160003046FFF7A1FCBB682B44984204D0304600 +:10D17000FFF748F80020F8BD61423046FFF794FC05 +:10D1800001300DD0104ABB682D1B45F001055D60D4 +:10D19000136830461B1B1360FFF734F80120F8BDFD +:10D1A00000213046FFF780FCBA68831A0F2BDEDDC2 +:10D1B00043F001035360054B03491B68C01A086024 +:10D1C000D5E700BF544E0020E0B800205C5200209C +:10D1D000002961D0F8B50C460646FFF70DF854F863 +:10D1E000042C7B4FA4F1080522F0010105EB010C92 +:10D1F000B868DCF80430604523F0030300F08B804E +:10D20000D207CCF8043032D454F8082CAD1A1144AB +:10D21000AA6807F1080082426AD00CEB0304D4F834 +:10D2200004E0EC68D4601EF0010FA26000F097806B +:10D2300041F001036B60CCF80010B1F5007F35D2EE +:10D240007868CB080122490901338A40024357F824 +:10D2500033107A6007EBC302083AC5E9021247F8B7 +:10D260003350CD603046BDE8F840FEF7CBBF0CEB45 +:10D2700003025268D00710D4194407F10800DCF803 +:10D280000830834273D0DCF80C20DA60936041F000 +:10D2900001036B606950D0E7704741F00103B1F5BD +:10D2A000007F44F8043CCCF80010C9D3B1F5206FDE +:10D2B0004FEA512348D28B0903F1390003F13802B8 +:10D2C000C300F818FB580838984259D05A6822F021 +:10D2D00003028A4202D99B689842F7D1D868C5E90F +:10D2E00002308560DD603046BDE8F840FEF78ABF59 +:10D2F0000CEB03025268D20763D40B44DCE9021240 +:10D30000CA60916043F001026A603046EB50BDE8AC +:10D31000F840FEF777BF0B44D10707D454F8082C28 +:10D32000AD1A1344D5E90212CA60916043F00102BC +:10D330006A60284ABD6012689A4293D8264B3046EC +:10D340001968FFF7F5FE8DE7142B0AD9542B1FD867 +:10D350000B0B03F16F0003F16E02C300B1E7194438 +:10D360008DE703F15C0003F15B02C300A9E741F024 +:10D370000103C7E90455C5E902006B60695071E714 +:10D3800079689210012404FA02F20A437A60A6E74F +:10D39000B3F5AA7F06D8CB0B03F1780003F177022F +:10D3A000C3008EE740F25452934206D88B0C03F12F +:10D3B0007D0003F17C02C30083E74FF47E737E227D +:10D3C0007FE741F001036B60CCF800104AE700BF33 +:10D3D000544E00206052002010B9002082B049B1A4 +:10D3E0005AB16BB113780B601278101E18BF012070 +:10D3F00002B0704701A9002AF3D1104602B070476D +:10D400006FF00100F4E700BF000000002DE9F04FCD +:10D410002DED088BD1B00C460BEE101A90460893F8 +:10D42000834602F0CBFA036812931846FFF7CEFD4D +:10D4300020AF1090082200213846FFF761FAA38937 +:10D440001B0603D52369002B00F0558700239FEDB1 +:10D45000838B9FED849BCDE92533CDE91333CDE953 +:10D46000153327AA0E9324929246119304934446AF +:10D47000A1467E4BD3F8E450FFF70AFB4A46034629 +:10D480001CA900975846A847002800F0B080C0F2B9 +:10D49000A6801C9A252A034601D09944E9E7B9EBF6 +:10D4A0000405064640F0A78000234FF0FF328DF8B8 +:10D4B00067309846069309F1010999F80030039204 +:10D4C0002B25202609F10109A3F120025A2A00F296 +:10D4D000CF80DFE812F0E802CD00CD00E302CD00FE +:10D4E000CD00CD006A00CD00CD0005028402CD0044 +:10D4F0001002C902CD00BD025B005B005B005B0057 +:10D500005B005B005B005B005B00CD00CD00CD00ED +:10D51000CD00CD00CD00CD005301CD0083011A0216 +:10D52000530153015301CD00CD00CD00CD001502B4 +:10D53000CD00CD009602CD00CD00CD00AB01CD00D9 +:10D54000AA02CD00CD00E306CD00CD00CD00CD0078 +:10D55000CD00CD00CD00CD005301CD008301DE0113 +:10D560005301530153017702DE017F00CD00890290 +:10D57000CD005F02E0062F027F00CD00AB017C00F2 +:10D58000B806CD00CD00BD06CD007C00A3F1300271 +:10D59000002119F8013B01EB810102EB4101A3F1EC +:10D5A0003002092AF5D906918EE7584602F006FAAC +:10D5B000436815931846FFF709FD1690584602F088 +:10D5C000FDF983681393169B002B40F02D8699F884 +:10D5D000003077E799F8003048F0200872E7082219 +:10D5E00000213846FFF78CF90123994441E7B9EB54 +:10D5F0000405064611D0269B2B442693259B013318 +:10D60000072BCAE9004525931CDC0AF1080A049B94 +:10D610002B440493002E7FF447AF269B002B41F050 +:10D620000B821BEE103AB3F90C3013F0400F049B41 +:10D6300018BF4FF0FF330493049851B0BDEC088B32 +:10D64000BDE8F08F1BEE101A24AA584603F0A4F987 +:10D650000028E6D10DF19C0AD9E700BF00000000C8 +:10D6600000000000FFFFFFFFFFFFEF7FE84C0020FE +:10D670000B93002BD1D00021CDE90C118DF8DC30BB +:10D6800001238DF8671002930791059303910F9181 +:10D6900037AC18F00203099302D0029B02330293C5 +:10D6A00018F084030A9305D1069B029A9D1A002D57 +:10D6B00000F36983269A89B125990DF1670001313C +:10D6C0000132CAF8000007294FF001002692259187 +:10D6D000CAF8040000F3A2830AF1080A099B83B187 +:10D6E000259B1AA901330232CAF80010072B4FF00C +:10D6F000020126922593CAF8041000F3A3830AF1CD +:10D70000080A0A9B802B00F06C82039B05995D1A26 +:10D71000002D00F3A58218F4807F40F00D82059B58 +:10D72000CAF804301A44259BCAF800400133072B7D +:10D730002692259300F31B830AF1080A18F0040FC0 +:10D7400005D0069B02995C1A002C00F38883049B89 +:10D75000069902988142ACBF5B181B180493002AFB +:10D7600040F0B08200232593079B1BB107995846D0 +:10D77000FFF72EFD0DF19C0A4C4679E60B93089BB2 +:10D78000073323F00703B3EC028BB0EEC87BB4EE93 +:10D79000497BF1EE10FA089340F3E984B5EEC08BB3 +:10D7A000F1EE10FA01F159809DF86710AB4CAC4BCB +:10D7B00028F080080B9A472AC8BF1C460023CDE9F1 +:10D7C0000C33032207930292059203930F930029CF +:10D7D0003FF45FAF029B013302935AE7432B0B9355 +:10D7E00003D018F0100F00F05D85089D082200217D +:10D7F00022A837ACFFF784F822AB55F8042B21465A +:10D80000584602F01DF903460133059001F0EE82FF +:10D81000059B089523EAE37302930021CDE90C11DF +:10D820008DF86710079103910F9132E70B93089BD6 +:10D830001A4600238DF86730134653F8044B0893BB +:10D84000002C00F048850B9B532B00F0EC8618F061 +:10D8500010030C9340F0E786039B5D1C01F0E5800C +:10D860000C991A462046FFF749FB0790002801F063 +:10D870002883079B1A1B05920C9B039322EAE272F2 +:10D880000F930D93079373239DF8671002920B93E8 +:10D890009DE718F0200F0B93089B3DD0073323F032 +:10D8A00007031A4611465B6851F8082B0891194680 +:10D8B000002BC0F20C84039B013300F09E8228F001 +:10D8C000800052EA0103029040F09982039B002BF2 +:10D8D00040F09A82804600230393059350AC06E102 +:10D8E000089B53F8042B0692002A80F21984069AAA +:10D8F00008935242069299F8003048F00408E1E596 +:10D9000099F8003048F00808DCE548F0100818F0F5 +:10D91000200F0B93089BC1D118F0100F40F00B841F +:10D9200018F0400F00F0038433F9042B0893D1174B +:10D930000B46BDE7089B48F00202029253F8042B05 +:10D94000089347F63003ADF868307820454B1193C3 +:10D95000002102230B900020039C8DF86700601CBF +:10D9600000F0AD80029820F0800852EA010040F0FB +:10D97000A480002C40F0AE86002BACD1029B13F0AB +:10D980000103059300F0D18330238DF83F310DF270 +:10D990003F14ACE018F0200F40F0D48318F0100FC3 +:10D9A00040F09F8618F0400F40F0978718F4007FF2 +:10D9B00000F09786089B049953F8042B0893117084 +:10D9C0004C4655E599F80030682B03BF99F80130B3 +:10D9D00048F4007809F1010948F0400872E599F827 +:10D9E00000308DF867506DE599F800306C2B03BF5F +:10D9F00099F8013048F0200809F1010948F01008B1 +:10DA000060E50B9348F0100818F0200100F05183F6 +:10DA1000089B073323F00703596853F8082B089332 +:10DA200028F480630293002395E70B9348F01003DA +:10DA30000293029B13F0200100F02983089B073317 +:10DA400023F00703596853F8082B0893012382E752 +:10DA500099F8003048F0800834E500BF18450020F0 +:10DA60006437002020450020494611F8013B2A2B4D +:10DA700001F04982A3F13002092A894698BF0021AA +:10DA800001F2448119F8013B01EB810102EB4101F4 +:10DA9000A3F13002092AF5D9039115E599F8003070 +:10DAA00048F001080EE59DF86730002B7FF48FAD3C +:10DAB00099F800308DF8676004E5CDF80880012BF7 +:10DAC00000F09D81022B50AC20D1119802F00F0381 +:10DAD0001209C35C04F8013D42EA0172090952EAE5 +:10DAE0000103F3D150AB1B1BDDF808800593059AA9 +:10DAF00003989DF8671082424FF00003B8BF0246BA +:10DB0000CDE90C33079302920F9360E602F007030E +:10DB1000D20842EA4172C908303352EA0105204670 +:10DB200004F8013DF2D1029AD10700F14D8250ABC9 +:10DB30001B1B90460593DAE70B9B652B40F3D480C3 +:10DB4000B5EE408BF1EE10FA40F0C181259BBA4949 +:10DB5000CAF80010013301320121072B26922593C8 +:10DB6000CAF8041000F351850AF1080A1B9B0E99AC +:10DB70008B4280F2D082109B12991A44CAE900139A +:10DB8000259B26920133072B259300F397830AF1F7 +:10DB9000080A0E9B5C1E002C7FF7D0AD102C259B35 +:10DBA00040F36E851BEE106A102505E00AF1080AA5 +:10DBB000103C102C40F364850133A0491032072B30 +:10DBC000CAE90015CDE92532F0DD24AA31465846D0 +:10DBD00002F0E2FE00287ED1DDE925320DF19C0A3B +:10DBE000E6E7069B02995D1A002D7FF78EAD102D9A +:10DBF000259B21DD099410261BEE104A04E0103D00 +:10DC0000102D0AF1080A16DD01338C491032072B5A +:10DC1000CAE90016CDE92532F1DD24AA214658468D +:10DC20000DF19C0A02F0B8FE002854D1103D102DD1 +:10DC3000DDE92532E8DC099C8049CAF8045001334B +:10DC40002A44072BCDE92532CAF8001000F32685B7 +:10DC5000039B05995D1A002D0AF1080A7FF75BAD59 +:10DC6000102D259B1FDD514610261BEE10AA04E047 +:10DC7000103D102D01F1080114DD01336F48103201 +:10DC8000072BC1E90006CDE92532F1DD24AA514672 +:10DC9000584602F081FEF0B9103D102DDDE9253225 +:10DCA00027A9EADC8A4601336449CAF804502A44A9 +:10DCB000072BCDE92532CAF8001000F3DA810AF10A +:10DCC000080A28E51BEE101A24AA584602F064FE42 +:10DCD00000283FF447AD079B002B3FF4A2AC079907 +:10DCE0005846FFF775FA9CE40E9B012B40F37A81AE +:10DCF000259BCAF80040013301320121072B2692EF +:10DD00002593CAF8041000F3F8810AF1080A109963 +:10DD1000129801330A44072BCAE90001CDE92532E4 +:10DD200000F3DD810AF1080AB5EE408BF1EE10FA3E +:10DD300000F077810E990133013901340A44072B31 +:10DD4000CAF800402593CAF80410269200F35B81BC +:10DD50000AF1080A1499CAF8041001330A44072B7F +:10DD60001EA9CDE92532CAF800107FF7E5AC1BEEFD +:10DD7000101A24AA584602F00FFE0028ABD1269AAA +:10DD80000DF19C0ADAE4102DDDE925122C4E24DD7C +:10DD9000179410231BEE104A084604E0103D102D86 +:10DDA0000AF1080A17DD013010320728CAE90063BA +:10DDB000CDE92502F2DD24AA214658460DF19C0A40 +:10DDC00002F0EAFD002886D1103D102DDDE9250284 +:10DDD0004FF01003E7DC179C014601312A44072964 +:10DDE000CDE92512CAF80060CAF8045000F3BD83DB +:10DDF0009DF867100AF1080A5DE4CDF808800A2A48 +:10DE000071F1000380F0458330320123DDF8088092 +:10DE10008DF83F2105930DF23F1468E61BEE101AB2 +:10DE200024AA584602F0B8FD00287FF454AF269A81 +:10DE30000DF19C0A52E400BF504500201C4B00200D +:10DE4000544500201BEE101A24AA584602F0A4FDE7 +:10DE500000287FF440AF269A0DF19C0A51E4102C63 +:10DE6000259BBE4E1FDD1BEE108A102504E0103CE2 +:10DE7000102C0AF1080A16DD01331032072BCAE90B +:10DE80000065CDE92532F2DD24AA414658460DF160 +:10DE90009C0A02F081FD00287FF41DAF103C102C7D +:10DEA000DDE92532E8DC01332244072BCAE90064AE +:10DEB000CDE925327FF74BAC1BEE101A24AA584649 +:10DEC00002F06AFD00287FF406AF269A3FE41B9912 +:10DED000002940F35A830C9E0E9B9E42A8BF1E460B +:10DEE000002E0BDD259B01333244072BCAE9004687 +:10DEF0002692259300F389860AF1080A0C9D002ECC +:10DF0000A8BFAD1B002D00F303820C9B18F4806F9B +:10DF10002344059340F01F821B9B0E998B4203DB29 +:10DF200018F0010F00F0CF84109912980A44CAE942 +:10DF300000012599269201310729259100F3A58634 +:10DF40000AF1080A0E996518CC1A059BED1AA5422C +:10DF5000A8BF2546002D0DDDCAF80030259BCAF864 +:10DF6000045001332A44072B2692259300F3BB86E5 +:10DF70000AF1080A002DA8BF641B002C7FF7DEAB56 +:10DF8000102C259B40F37C831BEE106A102505E0C6 +:10DF90000AF1080A103C102C40F3728301337049D7 +:10DFA0001032072BCAE90015CDE92532F0DD24AA8D +:10DFB0003146584602F0F0FC00287FF48CAEDDE9D3 +:10DFC00025320DF19C0AE5E7302B3FF48BAD302371 +:10DFD000023804F8013C50AB1B1ADDF808800593A9 +:10DFE000044684E518F0010F7FF482AE259BCAF841 +:10DFF0000040013301320121072B26922593CAF8F4 +:10E0000004107FF7A5AE1BEE101A24AA584602F0A2 +:10E01000C3FC00287FF45FAEDDE925320DF19C0AD8 +:10E0200098E60E994C1E002C7FF794AE102C40F30E +:10E0300061831BEE106A102505E00AF1080A103C06 +:10E04000102C40F35783013345491032072BCAE99E +:10E050000015CDE92532F0DD24AA3146584602F0FC +:10E060009BFC00287FF437AEDDE925320DF19C0AD8 +:10E07000E5E71BEE101A24AA584602F08DFC002892 +:10E080007FF429AE269A0DF19C0AFFF744BB029B50 +:10E0900013F0100340F0C180029A12F0400200F029 +:10E0A0007A83089850F8042B0890194692B20123FD +:10E0B00051E418F0100355D118F0400200F05D83D0 +:10E0C000089850F8042B0890194692B2A8E45242DE +:10E0D00061EB4101CDF808802D2001233CE41BEECB +:10E0E000101A24AA584602F057FC00287FF4F3AD1A +:10E0F000DDE925320DF19C0A16E61BEE101A24AA62 +:10E10000584602F049FC00287FF4E5ADDDE92532F0 +:10E110000DF19C0AFBE518F0010F3FF40FAB2AE567 +:10E12000089399F80030FFF7CDB950ACDFE418F44C +:10E13000007F40F0DB8353F8042B0893D1170B4684 +:10E14000FFF7B6BB089B049853F8041B0893C2174B +:10E15000C1E900024C46FFF78BB900BF54450020CF +:10E160001C4B0020089B53F8042B089358E4B4EE92 +:10E17000488BF1EE10FA80F194860B9B612B00F036 +:10E180005285412B00F0C085039B01330B9B23F08C +:10E19000200500F08084472D04D1039B002B08BF8D +:10E1A0000123039318EE903A002B48F48072464600 +:10E1B000C0F21886B0EE48AB00239046099307934F +:10E1C0000B9B413B252B00F29883DFE813F06F0493 +:10E1D00096039603960368046C04960396039603CD +:10E1E0009603960396039603960396039603960367 +:10E1F0009603960396039603960396039603960357 +:10E200009603960396039603960396039603960346 +:10E2100096039603960368046C04089B53F8042B3A +:10E2200008930123FFF797BB139B002B3FF4CFA963 +:10E23000139B1B78002B3FF4CAA999F8003048F4CF +:10E240008068FFF73FB90B93CDF80880FFF7F1BB6B +:10E250000B939A4B119318F0200100F00581089B55 +:10E26000073323F00703596853F8082B089318F075 +:10E27000010F0AD052EA010307D00B9B8DF86930D9 +:10E28000302348F002088DF8683028F48063029348 +:10E290000223FFF760BB0B93FFF7B6BB0B93884BD2 +:10E2A0001193D8E7089B012153F8042B02918DF8B4 +:10E2B000DC200893059137ACFFF7AFBA1BEE101ABC +:10E2C00024AA584602F068FB00287FF404AD269A81 +:10E2D0000DF19C0A5DE4039B0794062B224628BFA0 +:10E2E000062303942146CDE90C22764C0293059334 +:10E2F0000F92FFF76CBA40215846FDF7CDFC206025 +:10E300002061002800F00F8640236361FFF79EB86C +:10E31000102D259B40F35D82514610261BEE10AA5E +:10E3200004E00831103D102D40F35282013366485D +:10E330001032072BC1E90006CDE92532F1DD24AA10 +:10E340005146584602F028FB00287FF4C4ACDDE9B2 +:10E35000253227A9E6E70E9BCDF82490E318039316 +:10E360000D9BCDF82880139E059DDDF85890DDF8B3 +:10E370003C800B941BEE101A5046002B34D0B8F1A1 +:10E38000000F35D10D9B013B013E0D93159BC0E95C +:10E390000039259B01334A44072B269225936CDCD8 +:10E3A0000830039B96F800C05B1B6345A8BF63461B +:10E3B000002B9A460CDD259C01341A44072CC0E939 +:10E3C00000532692259400F3778196F800C0083018 +:10E3D000BAF1000FACBFACEB0A046446002C0ADCB7 +:10E3E00065440D9B002BCAD1B8F1000F00F0AC833F +:10E3F00008F1FF38CAE7102CDDF894C024DD05953C +:10E400004FF0100A63460D4604E0103C102C00F15A +:10E41000080016DD01332C491032072BC0E9001A21 +:10E42000CDE92532F1DD24AA2946584602F0B4FA96 +:10E4300000287FF450AC103C102CDDE9253227A8D1 +:10E44000E8DC2946059D9C460CF10103224444600A +:10E45000072B1D4C0460CDE9253200F3C68396F8E6 +:10E4600000C008306544BCE718F0100300F0C2801B +:10E47000089B53F8042B0893F9E624AA5846059103 +:10E4800002F08AFA00287FF426AC269A059927A87C +:10E4900087E70298CDF81CA050AC00F480600025FE +:10E4A0000AEE10BA094BDDF84CA0CDF81490A34643 +:10E4B0004FF00508AC46044610E000BF20450020A0 +:10E4C00034450020484500201C4B0020CDCCCCCC4E +:10E4D0000A2A71F1000136D34A463146501840F1FC +:10E4E0000000A3FB005626F0030505EB9605401B34 +:10E4F000151A4FF0CC3661F1000E06FB05F6A5FBB0 +:10E50000039503FB0E6609F0010E2E44AEFB085E78 +:10E510002D184FEA590930350BF8015C49EAC679E4 +:10E520000CF1010C0BF1FF3B7608002CD0D09AF8CF +:10E5300000008445CCD1BCF1FF0FC9D00A2A71F18B +:10E54000000180F08F815C4650AB1B1BDDF81490FE +:10E55000CDF84CA01AEE10BADDF81CA0DDF808804A +:10E56000CDF838C00593FFF7C2BA1BEE101A24AAE3 +:10E57000584602F011FA00287FF4ADAB9DF8671001 +:10E58000269A0DF19C0AFFF796B8259BBE48CAF85B +:10E590000000013301320120072B26922593CAF88F +:10E5A000040000F377810AF1080A002940F0AF80E7 +:10E5B0000E9908F001030B433FF4C0A8109B129979 +:10E5C0001A44CAE90013259B26920133072B259391 +:10E5D00000F352820AF1080A0E99CAF8004001338A +:10E5E0000A44072BCDE92532CAF804107FF7A4A806 +:10E5F000FFF7BDBB18F0400200F0DD80089850F82E +:10E60000042B0890194692B231E61BEE101A24AA88 +:10E61000584602F0C1F900287FF45DAB269A0DF14F +:10E620009C0AFFF7A3BA22AE0822002130461D94AF +:10E63000FEF766F9039B5A1C00F0DB800025CDF83D +:10E640000890CDF81C809946A8460CE037A958469A +:10E6500001F0F6F9431C404400F0C883484508DC4B +:10E6600000F0188480461D9A525933460435002A1A +:10E67000ECD1CDF81480DDF80890DDF81C80C5E001 +:10E6800001338249CAF804402244072BCAF800101B +:10E69000CDE925327FF750A8FFF769BB1BEE101AB2 +:10E6A00024AA584602F078F900287FF414AB269A81 +:10E6B0000DF19C0AFFF729B824AA5846059102F0EB +:10E6C0006BF900287FF407AB96F800C0269A0599ED +:10E6D00027A87DE6012BCDF808807FF4F3A9FFF78A +:10E6E00093BB089B049953F8042B4C461160089384 +:10E6F000FEF7BEBE01336549CAF804402244072B29 +:10E70000CDE92532CAF800107FF722AB7BE4109BDD +:10E7100012981A44CAE90003259B26920133072B5D +:10E72000259300F3A9810AF1080A0029BFF654AF26 +:10E730004D42103180F20F831BEE101A102605E0B7 +:10E740000AF1080A103D102D40F3058301334F48AC +:10E750001032072BCAE90006CDE92532F0DD24AAE4 +:10E760005846039102F018F900287FF4B4AADDE9B5 +:10E77000253203990DF19C0AE4E7089B18F4007117 +:10E780001ABF114653F8042B53F8042B089318BFF3 +:10E79000D2B2FFF745B9029B13F40071089B1ABF70 +:10E7A000114653F8042B53F8042B089318BFD2B228 +:10E7B0000123FFF7D0B8089B18F400711ABF114667 +:10E7C00053F8042B53F8042B089318BFD2B24EE52C +:10E7D0008A4601332D49CAF804502A44072BCDE953 +:10E7E0002532CAF8001000F339810AF1080AFFF750 +:10E7F0008CBB0023194600961DAA584601F046F925 +:10E8000003460133059000F0F1821D94059B002B17 +:10E810004ED0632B00F318810023079337AC0822F6 +:10E8200000213046FEF76CF8059D00962B461DAA88 +:10E830002146584601F02AF9854240F07C83059A2A +:10E840000023A35422EAE272CDE90C339DF867104D +:10E85000039302920F93FEF7BABF2D218DF8671034 +:10E86000FEF7A4BF169B1599ABEB030B1A4658464F +:10E87000FEF7B8F89AF80120054B0AB10AF1010A2F +:10E880004FF0000C28E600BF504500201C4B002034 +:10E89000CDCCCCCC1BEE101A24AA584602F07CF842 +:10E8A00000287FF418AA1B99269A0DF19C0A7CE691 +:10E8B000059B9DF867100F93CDE90233CDE90C332A +:10E8C0000793FEF784BF0E99059865182D1ACC1A88 +:10E8D000A542A8BF2546FFF74DBB089B049953F8F6 +:10E8E000042B089311804C46FEF7C2BD13F9042B8C +:10E8F0000893D1170B46FEF7DBBF039A022122AB28 +:10E9000001931DAB009358461BABB0EE4A0B02922D +:10E9100001F0B8F9472D029A044600F06181462DB6 +:10E92000104405D12378302B00F06F821B9A1044DD +:10E93000B5EE40ABF1EE10FA40F0468103461B1BEA +:10E940000E93472D00F01081462D00F0B5811B9BE2 +:10E950000C930C9B412D03F1FF331B9300F0E581D9 +:10E960009DF82C200021002BB8BF0C9B8DF878203F +:10E97000BABFC3F101032D222B22092B8DF8792078 +:10E9800040F3DA810DF18F05DFF81CC42A461046EA +:10E990008CFB0321DA17C2EBA10202EB8201A3EB8D +:10E9A0004101303100F8011C19466329134600F17A +:10E9B000FF32ECDC3033D9B2831E9D4202F8011CD9 +:10E9C00040F28B8213460DF17A0201E013F8011B2D +:10E9D00002F8011B9D42F9D10DF191030DF17A026C +:10E9E0001B1A13441EAA9B1A14930E9B149A012BF4 +:10E9F0001A44059240F30382059B109A1344059331 +:10EA000026F48063059A43F480780023CDE90C3323 +:10EA100022EAE2720F930292099B002B40F0B18030 +:10EA20009DF867100393FEF7D2BE2046FEF7CEFA9C +:10EA300002460590FEF720BF1BEE101A24AA584686 +:10EA400001F0AAFFFEF7EDBD591C5846FDF724F969 +:10EA50000446002800F0CA810790E0E61BEE101A79 +:10EA600024AA584601F098FF00287FF434A9269A7A +:10EA70000DF19C0AFFF749BA1BEE101A24AA58465A +:10EA800001F08AFF00287FF426A9DDE925321B99D1 +:10EA90000DF19C0A49E606230393FFF783BB039B12 +:10EAA00002215A1C2BE7039A032128E71BA8B0EE8A +:10EAB0004A0B00F0F7FFB4EE007B20EE070BB5EE3B +:10EAC000400BF1EE10FA01D101231B93B348039BD5 +:10EAD000B3EE005B013B224604E0B5EE400BF1EEE5 +:10EAE00010FA13D020EE050BFDEEC07BB3F1FF3F13 +:10EAF00017EE901A415CB8EEE76B944630EE460B89 +:10EB000002F8011B194603F1FF33E6D1B6EE006BA4 +:10EB1000B4EEC60BF1EE10FA00F34881B4EE460BEA +:10EB2000F1EE10FA04D117EE903ADB0700F13E81C6 +:10EB3000002906DB4B1C1344302102F8011B9342D1 +:10EB4000FBD1131B0E93FCE60B9C0E9BDDF824906F +:10EB5000DDF828801396E3189D42294628BF194600 +:10EB600082460591FFF7D8B91B9B0C93DA1C02DB98 +:10EB7000039A93420CDD0B9B023B0B9323F0200581 +:10EB8000E7E62D2100238DF867100393FEF722BEE0 +:10EB90000C9B0E9A9342C0F2BD80F0070C9B40F193 +:10EBA0003281109A13440593710503D50C9B002BF9 +:10EBB00000F33581059B23EAE373029367230B93EC +:10EBC00000230F930D9327E7229B8342BFF4B7AE38 +:10EBD00030215A1C22921970229B9842F9D8AEE635 +:10EBE000F30700F1A780229BA9E624AA58460591C5 +:10EBF00001F0D2FE00287FF46EA896F800C0269A95 +:10EC0000059927A86544FFF7ECBB1BEE101A24AA50 +:10EC1000584601F0C1FE00287FF45DA8269A0DF148 +:10EC20009C0AFFF76BB978238DF8693030238DF893 +:10EC30006830039B632B48F0020600F3A680002394 +:10EC4000079337AC18EE903A002B48F481782BDB11 +:10EC5000B0EE48AB0B9B23F02005002309930B9BE0 +:10EC6000612B7FF4ADAAB0EE4A0B1BA800F01AFF8F +:10EC7000B4EE007B20EE070BB5EE400BF1EE10FA80 +:10EC800001D101231B93464821E71BEE101A24AA49 +:10EC9000584601F081FE00287FF41DA81B9B269A90 +:10ECA0000DF19C0AFFF74EB90B9B23F020052D2395 +:10ECB0000993B1EE48ABD2E71B9A0C92002A06F0FA +:10ECC000010340F30D8103990B4340F0CF800C9B6F +:10ECD000059366230B93720500F1A380059B23EA3D +:10ECE000E37302936CE71BEE101A24AA584601F056 +:10ECF00053FE00287EF4EFAF1B9C0E9B269A1C1B34 +:10ED00000DF19C0AFFF736B958238DE700220392D4 +:10ED1000FEF7DABB0E9B109A9A180C9B0592002BFB +:10ED200040F3AB8067230B93D5E70B9A0F32D2B237 +:10ED3000012118E6A018FBE5002940F0A880302248 +:10ED40008DF87A200DF17B02303302F8013B1EABC7 +:10ED5000D31A149349E601331249CAF804502A44DD +:10ED6000072BCDE92532CAF800107FF733AC1BEE34 +:10ED7000101A24AA584601F00FFE00287EF4ABAF0B +:10ED8000DDE925320DF19C0A26E4591C5846FCF7B2 +:10ED900083FF044650B3079054E700BF344500207A +:10EDA000204500201C4B002067666666CDF888C0B1 +:10EDB00012F8011C90F80FC0614513460AD14FF0BC +:10EDC000300E03F801EC229B591E229113F8011C0E +:10EDD0008C45F6D0392916BF0131817AC9B203F8C2 +:10EDE000011CAEE600239046079360E71BEE102A55 +:10EDF000B2F90C3043F040039381FEF716BCF507DF +:10EE00007FF5FEADF8E50593CEE6B5EE40ABF1EE4D +:10EE100010FA3FF48BADC2F101021B9287E5672324 +:10EE20000B9313990B78FF2B79D000250C9A284669 +:10EE300003E001300131FF2B08D0934206DAD21AE9 +:10EE40004B78002BF5D10B780135F4E70C92139138 +:10EE50000D900F950F9A0D9B16991344059A01FB7F +:10EE60000323059323EAE3730293D5E5109BD3189C +:10EE70001944662305910B932DE7C3F101031A444E +:10EE800022EAE2730293672305920B9398E60DF151 +:10EE90007A0259E7039BDDF80890DDF81C800593A2 +:10EEA000B4E418EE903A002BB4BF2D219DF8671002 +:10EEB000254C264BB8BF8DF8671028F08008FEF768 +:10EEC00079BC039B0293059373239DF8671003900D +:10EED0000F900D900B93FEF77ABC0223149384E5F8 +:10EEE000039A134305D10123662202930B920593E3 +:10EEF00066E6109B01331A4422EAE273029366230A +:10EF000005920B935CE6089A99F80130894652F80D +:10EF1000041B089241EAE1710391FEF7D3BA002382 +:10EF20000F930D9396E70C23CBF800304FF0FF338F +:10EF30000493FEF781BB1BEE102A938943F0400334 +:10EF40009381FEF7C8BE00BF1C450020603700203B +:10EF5000436C70B505460C464BB153F8240080B1A4 +:10EF6000026843F824200023C0E9033370BD212246 +:10EF70000421FCF745FE034668640028EDD100201B +:10EF800070BD012101FA04F6721D92002846FCF7BB +:10EF900037FE0028F3D0C0E90146E4E731B1436C05 +:10EFA0004A6853F82200086043F82210704700BFF7 +:10EFB0002DE9F0410E6980460F461D4601F1140E01 +:10EFC0000020DEF800108CB202FB0453090C4FEA5B +:10EFD000134C02FB01CC01309CB204EB0C44864282 +:10EFE0004EF8044B4FEA1C45EBDC3DB1BB68B34225 +:10EFF00007DD07EB860301365D613E613846BDE8FB +:10F00000F081796840460131FFF7A2FF0446B0B1B4 +:10F010003A69023207F10C0192000C30F9F7AEFDAB +:10F02000D8F844307A6853F82210396043F82270D7 +:10F03000274607EB860301365D613E61DEE7034B41 +:10F0400003482246BA2100F069FD00BF2843002092 +:10F050003C430020030C1B04D3B90004102310F020 +:10F060007F4F04BF0002083310F0704F04BF00014F +:10F07000043310F0404F04BF80000233002805DB4A +:10F0800010F0804F03F1010308BF2023184670479A +:10F090000023E4E7036813F0070208D0D9071FD460 +:10F0A0009A0722D55B08036001221046704799B287 +:10F0B00009B91B0C1022D9B209B908321B0A190769 +:10F0C00004BF1B090432990704BF9B080232D90709 +:10F0D00003D45B0802F1010205D0036010467047BB +:10F0E0000022104670472022DFE79B0802220360BF +:10F0F0001046704738B5436C04460D464BB158680E +:10F10000B0B102685A6000220123C0E90435C26030 +:10F1100038BD21220421FCF773FD034660640028FA +:10F12000EDD1094B0948002240F2451100F0F6FCF0 +:10F130001C2201212046FCF763FD0028F1D00122AA +:10F140000223C0E90123DEE7284300203C430020DE +:10F150002DE9F04F0E691569AE4285B08846144618 +:10F1600005DB2A46234635460C4616469846A368D4 +:10F170006168AF19BB42B8BF0131FFF7E9FE0190EA +:10F18000002800F08780019B03F1140909EB870A2E +:10F19000D14505D24B46002243F8042B9A45FBD8B3 +:10F1A00008F1140808EB860B04F11403D8451A463D +:10F1B00003EB85055FD22B1B153B23F003030433C0 +:10F1C0001534A54238BF0423CDE902A7AC461F463B +:10F1D000924605E0090C29D1C34509F1040948D933 +:10F1E00058F8041B8DB2002DF4D056464C4600232F +:10F1F00056F8041B22681FFA81FE90B2090C05FB29 +:10F200000E00120C034405FB012202EB13429BB2D9 +:10F2100043EA0243B44544F8043B4FEA1243E7D8BB +:10F2200049F8073058F8041C090CD5D0D9F800303B +:10F2300050461A464C4600260588120C01FB052252 +:10F2400016449BB243EA064344F8043B50F8045B7F +:10F2500022682D0C93B201FB053303EB1643844562 +:10F260004FEA1346E8D8C34549F8073009F10409C5 +:10F27000B6D8DDE902A7002F02DC05E0013F03D08C +:10F280005AF8043D002BF9D0019B18461F6105B0C8 +:10F29000BDE8F08F034B0448019A4FF4B17100F0C0 +:10F2A0003DFC00BF284300203C43002012F0030334 +:10F2B0002DE9F0411446064632D10D46A41020D067 +:10F2C000D6F84080B8F1000F33D0E3074FF00007C5 +:10F2D00007D4641015D0D8F80000A8B18046E30721 +:10F2E000F7D5424629463046FFF732FFB5B1696887 +:10F2F000736C641053F821202A6043F821500546AE +:10F30000E9D12846BDE8F081424641463046FFF744 +:10F310001FFFC8F8000007608046E0E70546D8E711 +:10F32000013B0F4A52F823200023FFF741FE054618 +:10F33000C4E701213046FFF70BFE804640B10123B0 +:10F3400040F27122C0E90432002330640360BCE75C +:10F35000044B0548424640F2451100F0DFFB00BF78 +:10F3600084480020284300203C4300202DE9F0473A +:10F370000D4614462F69AB68496807EB62177E1C7F +:10F380009E4280464FEA621904DD5B009E4201F115 +:10F390000101FADC4046FFF7DBFD8446002852D02D +:10F3A000B9F1000F00F114020EDD09F105014FEA79 +:10F3B000810E134600EB8101002043F8040B8B42C1 +:10F3C000FBD1AEF114031A44296905F1140314F0BA +:10F3D0001F0E03EB81012ED0CEF1200910464FF015 +:10F3E000000A1C6804FA0EF444EA0A0440F8044BCC +:10F3F00053F8044B994224FA09FAF2D84B1B153BF7 +:10F4000023F00303043305F11500814238BF0423C0 +:10F41000BAF1000F18BF374642F803A0D8F84430BD +:10F420006A68CCF8107053F822102960604643F8DF +:10F430002250BDE8F087043A53F8040B42F8040F59 +:10F440009942F9D8EAE7034B034862464FF4EF715B +:10F4500000F064FB284300203C4300200B698446F5 +:10F460000069C01A16D10CF1140C14310CEB830294 +:10F4700010B401EB830301E0944508D252F8044D27 +:10F4800053F8041D8C42F7D005D24FF0FF305DF8E1 +:10F49000044B7047704701205DF8044B704700BF74 +:10F4A0002DE9F84F0F691369FF1A002F0E46904699 +:10F4B0007FD101F11405143202EB830205EB8303C3 +:10F4C00001E09D4278D253F8041D52F8044DA14248 +:10F4D000F7D069D37168FFF73BFD8146002877D0EC +:10F4E0003569D8F81020C76008F1140E06F1140031 +:10F4F00009F1140A06F110010EEB820200EB8507F8 +:10F5000056464FF0000C5EF8044B51F804BFA3B20E +:10F510001CFA8BFCACEB03034FEA144CCCEB1B4CFA +:10F520000CEB234C9BB243EA0C43724546F8043B78 +:10F530004FEA2C4CE7D8A2EB0801153908F1150861 +:10F54000424521F0030404F1040438BF042420449C +:10F5500021F0030238BF002287425244544418D994 +:10F560002646014651F8043B1CFA83FC4FEA2C4224 +:10F5700002EB13421FFA8CFC4CEA02438F4246F81E +:10F58000043B4FEA224CEDD8013F3F1A27F0030716 +:10F59000E21923B952F8043D013D002BFAD0C9F815 +:10F5A00010504846BDE8F88F334601274646984636 +:10F5B00090E7F9DB00278DE70021FFF7C9FC8146C2 +:10F5C00068B101220023C9E904234846BDE8F88F49 +:10F5D000064B07484A4640F2452100F09FFA034B8C +:10F5E00003484A4640F2372100F098FA28430020A9 +:10F5F0003C4300202DE9F043884683B0012157ECBD +:10F60000106B1546FFF7A4FC0446002851D0C7F341 +:10F610000A59C7F31303B9F1000F01D043F4801363 +:10F62000002E019318D101A8FFF734FD019A626101 +:10F63000012200F120032261B9F1000F25D0A9F2C7 +:10F64000334909EB03022046C3F13503C8F8002013 +:10F650002B6003B0BDE8F08368460096FFF71AFD03 +:10F66000034610B3DDE90002C3F1200102FA01F103 +:10F670000143DA4061610192002AA26114BF0222B3 +:10F6800001222261B9F1000FD9D1A3F23243C8F8A7 +:10F69000003004EB82031869FFF7DCFCC0EB421377 +:10F6A00020462B6003B0BDE8F083009A6261019AA6 +:10F6B000E2E7034B0348224640F20F3100F02EFAF6 +:10F6C000284300203C43002070B500294BD006465B +:10F6D0000C4610B1436B002B48D0636ED80734D56D +:10F6E000B4F90C30002B3ED02146304600F050F8E3 +:10F6F000E36A054633B1E169304698470028B8BF50 +:10F700004FF0FF35A3891A063CD4216B41B104F1B7 +:10F710004003994202D03046FDF75AFD002323638F +:10F72000616C21B13046FDF753FD00236364FDF7A2 +:10F730003BF8636E0022DB07A2811FD5A06DFDF7A9 +:10F74000D7FBFDF737F8284670BDA3899905CBD4C0 +:10F75000A06DFDF7CFFBB4F90C30002BC4D1656E62 +:10F7600015F0010505D00025284670BDFCF7FEFF09 +:10F77000B3E7A06DFDF7C0FB284670BDA06DFDF797 +:10F78000BBFBDBE721693046FDF722FDBDE700BF8B +:10F79000B1F90C202DE9F0410C461107804647D401 +:10F7A000636842F40062002BA2815EDDA56A002D31 +:10F7B00058D00023D8F80060C8F8003093B212F493 +:10F7C000805256D10123E1694046A847431C67D0C7 +:10F7D000A389A56A5F0705D56368C01A236B0BB1BF +:10F7E000E36BC01AE169024600234046A847411C6A +:10F7F00041D1D8F80030002B3DD01D2B01D0162B65 +:10F8000056D1A3892269226023F40063002161603C +:10F81000A381216BC8F8006021B304F14003994231 +:10F8200002D04046FDF7D4FC00202063BDE8F08103 +:10F830002669BEB193B2256826609A070CBF63693A +:10F840000023AD1BA3600BE02B463246E169676ADB +:10F850004046B847B0F1000CA5EB0C05664417DD37 +:10F86000002DF1DC0020BDE8F081E36B002B9DDC76 +:10F87000F8E7206DAEE7B4F90C302269226023F47A +:10F880000063A3810022DB046260C2D52065C0E76B +:10F89000A38943F040034FF0FF30A381BDE8F0811E +:10F8A000D8F80030002B93D01D2B06D0162B04D097 +:10F8B000A38943F04003A381D5E7C8F80060D1E7EE +:10F8C00038B50C46054608B1436B03B3B4F90C00D8 +:10F8D00088B1636EDB0701D481050FD52846214628 +:10F8E000FFF756FF636EDA07054602D4A3899B052E +:10F8F00008D5284638BD0546284638BDA06DFDF719 +:10F90000F9FAEBE7A06DFDF7F7FA284638BDFCF7EA +:10F910002DFFDBE710B50C46B1F90E1000F07AF8B8 +:10F92000002803DB236D0344236510BDA38923F462 +:10F930008053A38110BD00BF2DE9F0410C46B1F901 +:10F940000C101F46CB05054616460BD421F48051FA +:10F95000A1813B46B4F90E1032462846BDE8F0417D +:10F96000FDF7B4B8B4F90E100223002200F03CF801 +:10F97000B4F90C10EAE700BF10B50C46B1F90E104F +:10F9800000F032F8A389421C0EBF23F4805343F4E5 +:10F9900080532065A38110BDB1F90E1000F012B89C +:10F9A00049B1FF2A02D80A70012070478A230360F8 +:10F9B0004FF0FF3070470846704700BF004870475F +:10F9C000D84D002038B5074D0022044608462A606D +:10F9D000F9F7FAFB431C00D038BD2B68002BFBD095 +:10F9E000236038BD68BA002038B50C46084D8446FF +:10F9F000114620461A4600232B606446F9F7F0FBB7 +:10FA0000431C00D038BD2B68002BFBD0236038BDD1 +:10FA100068BA002038B50C46084D84461146204689 +:10FA20001A4600232B606446F9F7CCFB431C00D038 +:10FA300038BD2B68002BFBD0236038BD68BA00208E +:10FA400070B5054684B05BB11C4669B10E4B2846C3 +:10FA5000D3F8E0602346B047431C0FD004B070BD1C +:10FA600000F582740029F1D1074A2346D2F8E060FC +:10FA700028460A4601A9B047431CEFD100228A2339 +:10FA800022602B6004B070BDE84C002010B582B03D +:10FA9000049CCDE900344FF0FF3302F02DFB02B09F +:10FAA00010BD00BF30B482B08DED000B019A194C2F +:10FAB00022F000430021A342016021DC009C1C4392 +:10FAC0001ED0154C144054B99FED107B20EE077BDF +:10FAD0008DED007B019A6FF0350122F0004322F09A +:10FAE000FF42DDE9004522F4E00242F07F551B159C +:10FAF00045F40015A3F2FE33CDE900450B44036045 +:10FB00009DED000B02B030BC704700BF000000004C +:10FB100000005043FFFFEF7F0000F07F00B50B4C6B +:10FB200025681446EE681A4685B003460D464CB16A +:10FB300007490095CDE901143046064900F018FF49 +:10FB4000F9F754FB04490C46F3E700BF705200205C +:10FB5000E8420020F8420020183D00202DE9F04F37 +:10FB600003690C69A34283B0C0F28780013C01F1B4 +:10FB70001405A30000F11408009355F8243058F838 +:10FB80002420013381469A4208EB840005EB840768 +:10FB90000190B2FBF3F63BD34FF0000CAE4640466B +:10FBA000E24663465EF804BB02681FFA8BFC06FB64 +:10FBB0000C334FEA134C4FEA1B4B06FB0BCC9BB2AA +:10FBC000AAEB03031FFA8CFA13FA82F3CAEB124270 +:10FBD00002EB23429BB243EA0243774540F8043BE1 +:10FBE0004FEA224A4FEA1C43DCD2009B58F803300C +:10FBF00073B9019B043B984504D307E0984504F191 +:10FC0000FF3403D253F80429002AF7D0C9F8104072 +:10FC10004846FFF723FC00282BDB01364146002332 +:10FC200055F8040BD1F800C082B29A1A030C12FAEC +:10FC30008CF2C3EB1C4303EB224392B242EA034231 +:10FC4000AF4241F8042B4FEA2343E9D258F824206D +:10FC500008EB84036AB9043B984504D307E0984550 +:10FC600004F1FF3403D253F80429002AF7D0C9F86D +:10FC70001040304603B0BDE8F08F002003B0BDE86F +:10FC8000F08F00BF2DE9F04F2DED028B8FB08DED81 +:10FC9000020B0191816B1A9D059357EC106B044682 +:10FCA000934641B1C26B4A60012393408B60FFF7DA +:10FCB00075F90023A363B7F10008B4BF0123002343 +:10FCC0002B60BE4BBCBF28F00048CDF80C8033EA57 +:10FCD000080300F09F809DED028BB5EE408BF1EEA6 +:10FCE00010FA11D1059A012313601B9B002B00F021 +:10FCF0003F82B34B1B9A1360013B009300980FB0F7 +:10FD0000BDEC028BBDE8F08F0CAA0DA92046B0EE29 +:10FD1000480BFFF76FFC5FEA1853054640F09280EE +:10FD2000DDE90C130B4403F23242202A40F3FA823D +:10FD3000C2F1400208FA02F803F21242D64048EA41 +:10FD4000060207EE102AB8EE477B581E17EE906A9F +:10FD500053EC172B4FF0010AA6F1F8739FED913B7E +:10FD60009FED927B9FED935B06EE900A43EC122B86 +:10FD7000B8EEE64BB7EE086B32EE466BA6EE037BB1 +:10FD8000A4EE057BFDEEC76BB5EEC07BF1EE10FA7D +:10FD900016EE907A08D5B8EEE66BB4EE476BF1EE4E +:10FDA00010FA18BF07F1FF37162F00F24581854B77 +:10FDB00003EBC70393ED007BB4EEC78BF1EE10FAB3 +:10FDC00057D5091A0023B1F1010807F1FF370A934B +:10FDD00000F1398100230693002F52DA069B049725 +:10FDE000DB1B06937B420893019B092B4FF0000716 +:10FDF0004ED8052B40F39D82043B01930026019BC6 +:10FE00009A1E032A00F22581DFE812F0AA03A70355 +:10FE10009D037E03059AC8F3130842F20F7358EA54 +:10FE2000060813601ED11B9B002B00F09185664BCA +:10FE3000009308331B9A009813600FB0BDEC028B3F +:10FE4000BDE8F08F18EE906AC6F31306A3F2FF30F8 +:10FE500053EC182B46F07F530C994FF0000A43F4F3 +:10FE600040137BE71B9B002B40F03B83574B0093D9 +:10FE700044E7091A0023B1F101080A9300F1E38075 +:10FE8000069300230893019B0497092BB844B0D92B +:10FE900000230126019307964FF0FF399B4600216E +:10FEA000E163CDF82C902046FFF752F8009000282F +:10FEB00000F04085009BA363B9F10E0F00F2DC80D7 +:10FEC000002E00F0D980049B002B40F3DE833D4AD6 +:10FED00003F00F0102EBC10292ED007B1A11DB056A +:10FEE00040F182833A4991ED086B02F00F02032042 +:10FEF00088EE065B5AB13649D60704D591ED006B02 +:10FF0000013027EE067B521001F10801F4D185EE95 +:10FF1000076B0A9B3BB1B7EE007BB4EEC76BF1EE0B +:10FF200010FA00F1AE8407EE900AB8EEE75BB1EE8E +:10FF30000C7BA5EE067B17EE902A51EC170BA2F175 +:10FF40005071B9F1000F00F08883049E4A46079B68 +:10FF5000002B00F04784B6EE003B1A4BFDEEC64B7B +:10FF600003EBC20CB8EEE47B36EE477B1CED026B74 +:10FF700083EE065B41EC160B14EE900A35EE465B01 +:10FF80000099B4EEC75B3030F1EE10FA01F8010BC6 +:10FF900000F3AC84B7EE002BB2EE044B4FF0000C34 +:10FFA00031E000BF61436F63A787D23FB3C8608B66 +:10FFB000288AC63FFB799F501344D33F0000F07F4F +:10FFC00051450020F8020020A4440020B044002045 +:10FFD000D00200200CF1010C94454DDA27EE047B91 +:10FFE00025EE045BFDEEC76B16EE903AB8EEE63BED +:10FFF000303337EE437BB4EEC57BF1EE10FA01F8F7 :02000004600595 -:100000003002B8EEC75B01F8012BA5EE468B00F07D -:100010001E8328EE048BB5EE408BF1EE10FAE6D18C -:10002000049B013304938946DCE0079B43B3019BA7 -:10003000012B40F37682089B09F1FF3A534580F289 -:100040003F82089BCDF820A0AAEB030217444FF093 -:10005000000AB9F1000FC0F22583069B09934B44B7 -:10006000C844069301212046FEF7C4FF06460CE073 -:100070007D4B009300980FB0BDEC028BBDE8F08F74 -:10008000069BDDF820A0079E0993099B6BB1B8F190 -:10009000000F0ADD434506991A46A8BF4246891A51 -:1000A0009B1A06910993A8EB0208089B63B1079B72 -:1000B000002B00F0A782BAF1000F00F30482089B26 -:1000C000B3EB0A0240F0FF8201212046FEF792FFC7 -:1000D000002F824600F3AF80019B012B40F3878104 -:1000E000002308930120002F40F0B180404410F01D -:1000F0001F0000F07A81C0F12002042A00F38880FA -:1001000040F0F681069B002B05DD29461A46204665 -:10011000FFF7ACF80546B8F1000F05DD5146424641 -:100120002046FFF7A3F882460A9B002B40F03F8150 -:10013000B9F1000F40F32581079B002B40F0A3800D -:10014000049B01330493DDF80080012707E0294672 -:1001500000230A222046FEF7ABFE01370546514632 -:100160002846FFF77BFCB94500F1300008F8010B89 -:10017000EDDCB9F1000F009ACCBFCB464FF0010B7C -:100180000346934400272946012220460193FFF7A6 -:100190006DF851460546FFF7E1F8002840F3AF81BE -:1001A0001BF8013C009A0BF1FF3B04E05A4500F0BC -:1001B000B1811BF8013D392B0BF10109F6D0013358 -:1001C0008BF8003051462046FEF768FE56B12FB13D -:1001D000B74203D039462046FEF760FE314620463E -:1001E000FEF75CFE29462046FEF758FE002389F8FC -:1001F0000030DDE904231A601B9B002B3FF4FEACAA -:100200000098C3F800900FB0BDEC028BBDE8F08FF2 -:10021000C0F11C00069B03440693099B0344099309 -:1002200080446FE7C2F1200206FA02F207EE102ABC -:1002300009E5012663E501463A462046FEF7B6FF8A -:10024000019B012B824640F3C58100230893DAF815 -:1002500010200AEB82021069FEF77CFEC0F120003C -:1002600044E700BFF80200209044002031460023FC -:100270000A222046FEF71CFE0B9B002B064640F38D -:10028000CE8204979946099B002B05DD31461A461C -:100290002046FEF7EBFF0646089B002B40F0EB8163 -:1002A000B046029B009F03F001027B1E4B44089363 -:1002B000019B0A921343099351462846FFF7CEFB50 -:1002C000314683462846FFF749F842465146814663 -:1002D0002046FFF765F8C26801460BF13003002A9B -:1002E00042D1CDE906032846FFF738F80699029077 -:1002F0002046FEF7D3FD029A079B1AB909990029F7 -:1003000000F07E82B9F1000FC0F28381019949EAC1 -:1003100001090A9951EA090900F07B81002A00F3DA -:10032000C681089A3B7007F101099742CB4600F05D -:10033000C481294600230A222046FEF7B9FD46451E -:10034000054631464FF000034FF00A02204612D016 -:10035000FEF7AEFD4146064600230A222046FEF780 -:10036000A7FD4F468046A7E720460293FEF796FD7D -:10037000029B0122C6E7FEF79BFD4F4606468046DC -:100380009AE7019B022B71DC079B002B7FF47BAF6C -:10039000049B5146013328460493FFF75FFBDDF8C9 -:1003A00000B000F130030BF8013B0027EBE65146AB -:1003B0002846FEF7D3FF0028BFF6BAAE2946002331 -:1003C0000A222046FEF774FD049B5F1E079B05462C -:1003D000002B7FF44BAF0B9B002B40F31882994608 -:1003E000B1E6BC4B00930333A4E41C2012E7DDE923 -:1003F000020100287FF474AEC1F31302002A00F05A -:10040000F480029B08936DE601230793049B5B44F1 -:1004100003F10109B9F1010FCC460B93B8BF4FF0BE -:10042000010C0021BCF1170FE1637FF7BCAC012088 -:100430000422520002F114036345014600F1010059 -:10044000F7D9E163AFE401230793BBF1000F52DD5D -:10045000CDF82CB0D946DC46E3E700230793D5E777 -:1004600000230793F1E7DDF82C900497B9F1000F12 -:100470007FF4A1AD51464B4605222046FEF718FDFC -:10048000014682462846FEF769FF00287FF793ADB4 -:10049000049B03F1010B009B3122984603F8012BCA -:1004A000009351462046FEF7F9FC0BF10103DDF8FD -:1004B00000900493CDF80080002E7FF48FAE91E67B -:1004C000A3EB0A0AC5E5314652462046FEF76EFE0A -:1004D0002A46014606462046FEF7BAFD294605464D -:1004E0002046FEF7DBFCEAE50220B0EE485B81E443 -:1004F000C0F13C008EE64FF0010BD9464FE403D12A -:10050000019BDB073FF54CAED9461BF8013D302B74 -:10051000FAD057E6049B009A0133049331231370F9 -:1005200050E6BAF1000F00F0238102F23342069B3D -:1005300009931344DDF820A00693904492E507EE5A -:10054000900AB1EE0C5BB8EEE77BA6EE075B15EE0A -:10055000902A51EC150BA2F1507141EC150BB1EE44 -:10056000047B36EE477BB4EEC57BF1EE10FA00F368 -:100570003781B1EE455BB4EEC57BF1EE10FA7FF545 -:10058000FBAC4FF0000A564615E500F0F580049BE1 -:1005900051495A4202F00F0001EBC00191ED006B8E -:1005A000121128EE066B00F04281B0EE467B4B49FB -:1005B00000260220D30705D591ED005B013001260E -:1005C00027EE057B521001F10801F3D1002E06FE43 -:1005D000076B1EE4029B002B7FF437AEDDE90201BE -:1005E000C1F31302002A40F037813D4A0A40002A35 -:1005F00000F0FA80069B01330693012308F10108FD -:1006000008936FE52946089A2046FEF7CFFD054678 -:100610005AE5002A12DD2946012220460193FEF701 -:1006200025FE51460546FEF799FE0028019B40F342 -:10063000E180392B00F0CA800BF13103B94609F88B -:10064000013B049B0133374604934646BAE538EE36 -:10065000088BB4EEC68BF1EE10FA0ADCB4EE468BD2 -:10066000F1EE10FA7FF4DCAC17EE103AD8077FF504 -:10067000D7AC009A54E471682046FEF7E9FB0746C0 -:10068000002800F0DE80336902339A0006F10C0185 -:100690000C30F8F7FFF9394601222046FEF7E6FD57 -:1006A0008046FEE5069BA3EB09030993DAE4392BA8 -:1006B00000F08C80B9460133C1E7049A0132374615 -:1006C000049246465FE529462046FEF76FFD054643 -:1006D000FAE400BFF0430020F8020020D00200201E -:1006E0000000F07F5E4BFDEEC65B03EBC20C1CED21 -:1006F000023BB8EEE57B36EE477B41EC160B15EE80 -:10070000901A23EE063B00983031012A00F8011BB5 -:1007100000F08380B2EE044B009B991827EE047B17 -:10072000FDEEC76B16EE903A303300F8013B814284 -:10073000B8EEE65B37EE457BF0D1B6EE006B33EEFC -:10074000065BB4EEC75BF1EE10FA3FF5E3AB36EEB5 -:10075000436BB4EEC76BF1EE10FA7FF70DAC894630 -:10076000013919F8013C302BF9D0731C049339E599 -:100770000C9AC2F13602DAE60220B0EE486BFFF7BF -:1007800048BBB9F1000F3FF4DAAE0B9A002A7FF7AD -:10079000F3ABB2EE044B26EE046B013007EE900A89 -:1007A000049BB8EEE75BB1EE0C7BA6EE057B17EE83 -:1007B00090CA51EC170B5E1EACF15071FFF747BBAE -:1007C000049B013304933123FFF7B1BB049BBB4669 -:1007D00001330493392337460BF8013B4646E1E4E5 -:1007E0004FF0000A564653E608927BE4731C0493CC -:1007F0008946F7E47FF422AFDA077FF51FAF18E7E9 -:10080000392BE3D0B9F1000F3FF716AF16E7019B84 -:10081000022B3FF728AE0497BAE501468DE7019B0E -:10082000022B3FF720AEDDF82C9004972BE5022039 -:10083000FFF7EFBA0B4B0C48002240F2AF11FFF765 -:10084000EDF8084B08483A4640F2EF21FFF7E6F88A -:10085000064B0093FFF7D2B9029B0893F7E400BF61 -:10086000F802002068420020F4430020E443002006 -:100870000EB410B583B005AB064C53F8042B0193AE -:100880000146206800F0C4F803B0BDE8104003B092 -:10089000704700BFB05100202DE9F04F93681768F2 -:1008A00083B09246002B70D081468A6808680C4657 -:1008B000083743E0A38913F4906F2ED0D4E90416CF -:1008C000A0EB010806EB460606EBD67608F1010020 -:1008D00076102844B042324684BF064632465B0555 -:1008E00037D511464846FBF763F9019000283AD006 -:1008F00042462169F8F7CEF8A289019B22F4906262 -:1009000042F08002A281A6EB080203EB08006661B8 -:10091000A260236120602E46A84642465946FBF756 -:10092000FFFEDAF80830A2682068921B40445B1B87 -:10093000A2602060CAF808303BB3083757E902B517 -:10094000002DFAD0AA4216469046B3D92E46A846A4 -:10095000E3E74846FBF7F4FB03460028D3D12169BF -:100960004846FCF7B5FBA3890C2243F04003C9F8C5 -:1009700000204FF0FF30A38100220023CAF8082096 -:10098000CAF8043003B0BDE8F08F00200023CAF895 -:10099000043003B0BDE8F08F2DE9F84F4B6E9C0496 -:1009A00090462DD59368126843B38B46064602F1F4 -:1009B000080959E9025A5FEA9A0715D0043D002454 -:1009C00001E0A7420ED055F8041F5A46304601F008 -:1009D0005BFA431C04F10104F3D10023C8E901339D -:1009E000BDE8F88FD8F808302AF0030AA3EB0A0311 -:1009F000C8F8083009F10809002BDAD10020ECE72B -:100A000001F00CF80023C8E90133BDE8F88F00BFFE -:100A10002DE9F04F2DED028BC5B00DF1500A834644 -:100A200008EE101A16460021082250461C4607936D -:100A3000FBF7F2FEBBF1000F04D0DBF83430002BE3 -:100A400000F0A08618EE102A536EDB0740F11385E4 -:100A5000B2F90C108AB295040BD418EE103A41F496 -:100A6000005199815B6E8AB218EE101A23F400537C -:100A70004B66100740F1058118EE103A1B69002BF8 -:100A800000F0FF8002F01A030A2B00F00A81002315 -:100A9000CDE91933CDE90D331BAA0C931892914679 -:100AA0000B930593B0464446A84BD3F8E450FBF7AC -:100AB0007BFF2246034612A9CDF800A05846A8475E -:100AC000002800F04581C0F23981129A252A034698 -:100AD00001D01C44E8E7B4EB0806054640F03C8131 -:100AE000002361788DF8433004F1010806934FF03C -:100AF000FF371E462B2408F10108A1F120035A2BD1 -:100B000000F27881DFE813F0B50276017601B002D9 -:100B10007601760176016A00760176017D028D020A -:100B2000760188029702760192025B005B005B000F -:100B30005B005B005B005B005B005B0076017601A5 -:100B400076017601760176017601760176015C0206 -:100B500084007601760176017601760176017601D0 -:100B6000760176017601E80076017601760133029E -:100B70007601DA02760176018B057601760176013F -:100B800076017601760176017601760176015C02C6 -:100B90008600760176017601CD0286007F0076011F -:100BA000C0027601FD02EA00ED027F007601330209 -:100BB0007C006905760176016B0576017C00A1F168 -:100BC0003003002218F8011B02EB820203EB420201 -:100BD000A1F13003092BF5D906928EE75846FEF7AE -:100BE0006DFE43680D931846FCF770F90E900546AC -:100BF0005846FEF763FE83680B93002D40F0D684C1 -:100C000098F8001077E798F8001046F0200672E791 -:100C100046F01006B40640F18E81079B073323F09F -:100C200007031A46596852F8083B07920A460029FA -:100C3000C0F27084791C00F0A28526F08001039137 -:100C400053EA020100F03F840A2B72F1000180F0A8 -:100C5000418530338DF80F31039E012304930DF24B -:100C60000F14049BBB42B8BF3B4603930023089379 -:100C70009DF84330002B00F0CB80039B013303939E -:100C8000C6E018EE101A584618EE105A01F040F857 -:100C9000002840F05286AA8902F01A030A2B7FF43A -:100CA000F6AE18EE101AB1F90E30002BFFF6EFAECB -:100CB0004B6EDB0702D4970540F1128618EE101A2E -:100CC00023463246584600F069FE0590059845B027 -:100CD000BDEC028BBDE8F08F46F0100616F0200246 -:100CE00000F03681079B073323F0070319465A6843 -:100CF00051F8083B079126F4806103910021002000 -:100D00008DF84300781C00F01082039820F08006D4 -:100D100053EA020040F00882002F40F03885002995 -:100D200040F0D583039B13F00103049300F011847A -:100D300030238DF80F310DF20F1492E708220021B5 -:100D40005046FBF769FD01231C44ADE6284C00200A -:100D5000B4EB080605461BD0199B1A9A013332449E -:100D6000072BC9E900861A9219931CDD002A00F0AE -:100D7000A68318EE101A18AA5846FFF70DFE20BBDE -:100D80000DF16C09059B33440593002D7FF4A8AE4B -:100D90001A9B002B40F0C18518EE103A0022B3F9DF -:100DA0000C30199215E009F10809EBE718EE101A5A -:100DB00018AA5846FFF7F0FD002800F0A680089B0F -:100DC0001BB108995846FCF783F918EE103AB3F9AD -:100DD0000C3018EE102A526E12F0010F9AB200F089 -:100DE000A080500600F1B285059845B0BDEC028B9D -:100DF000BDE8F08F0029CBD000238DF843300123CC -:100E0000CDE903338DF8AC102BAC002308931F46BB -:100E100016F00203099302D0039B0233039316F0EA -:100E200084030A9305D1069B039A9D1A002D00F3B3 -:100E30007B82DDE91903411C9DF8432082B1012228 -:100E40000133C9F8042007290DF14302CDE9191334 -:100E5000C9F8002000F34A82084609F10809013167 -:100E6000099AE2B111AA0233C9F8002007294FF00C -:100E70000202CDE91913C9F8042040F35082002B77 -:100E800000F0438318EE101A18AA5846FFF784FDA5 -:100E9000002894D1DDE919030DF16C09411C0A9A6F -:100EA000802A00F08481049ABD1A002D00F3D781B6 -:100EB000049AC9F8004013440729CDE91913C9F869 -:100EC000042040F36E81002B00F0758218EE101A9A -:100ED00018AA5846FFF760FD00287FF470AF1A9BF0 -:100EE0000DF16C09750705D5069A0399541A002C63 -:100EF00000F36B82DDE9052103988142ACBF5218F3 -:100F000012180592002B7FF451AF08990023199312 -:100F1000002900F049815846FCF7DAF80DF16C0918 -:100F2000C1E59C053FF55DAF18EE104AA06DFBF7DB -:100F300073FFA28955E7F006079A00F11F83710637 -:100F400040F1198332F9043B0792DA1711466EE635 -:100F500016F01003079940F0098316F0400000F0E6 -:100F600001831A4651F8043B07919BB2C3E6079BE5 -:100F70001A4600238DF84330134653F8044B03936D -:100F8000002C00F01284532900F0658316F0100540 -:100F900040F061837B1C00F0B3843A46294620462A -:100FA000FBF73CFF0890002800F09F84031B039A86 -:100FB000049323EAE3732F4607920393089557E6B9 -:100FC000432902D0F50640F12D83079D0822002118 -:100FD00016A82BACFBF720FC16AB55F8042B2146CA -:100FE0005846FEF7ADFC03460133049000F0B3848D -:100FF000049B079523EAE373039300238DF84330A2 -:1010000003E7079B53F8042B0692002A80F29C8288 -:10101000069A5242CDE9062398F8001046F00406DD -:1010200069E598F800108DF8434064E598F80010E1 -:1010300046F080065FE5424612F8011B2A2900F0BF -:101040009684A1F13003092B90464FF000073FF63C -:1010500054AD18F8011B07EB870703EB4707A1F115 -:101060003003092BF5D948E598F8001046F0010641 -:1010700041E59DF84330002B7FF4C2AD202398F862 -:1010800000108DF8433036E598F800106C2903BF46 -:1010900098F8011046F0200608F1010846F0100605 -:1010A00029E598F80010682903BF98F8011046F464 -:1010B000007608F1010846F040061CE546F01003F2 -:1010C0000393039B13F0200200F00682079B073373 -:1010D00023F0070319465A6851F8083B079101218C -:1010E0000DE6079A46F00203039352F8043B079279 -:1010F00047F63002ADF84420B84A0C920221002293 -:10110000FDE5B70600F14882F50600F14683740656 -:1011100000F1D583B00540F14083079B059953F852 -:10112000042B07931170BEE4039601293FF48CADA4 -:10113000022944AC11D10C9803F00F011B09415C4A -:1011400004F8011D43EA0273120953EA0201F3D1C4 -:10115000039E44AB1B1B049383E503F00701DB08EC -:1011600043EA4273D208303153EA0205204604F8BC -:10117000011DF2D1039EF307EBD53029E8D03023CF -:10118000023804F8013C44AB1B1A039E0493044646 -:1011900067E5049B1B9401221C931A9319920DF18D -:1011A0006C0909F108099DE60DF16C097BE4069ACA -:1011B000039D551B002D7FF776AE102D40F3BB83AA -:1011C000099418EE104A07E000F1020C09F1080931 -:1011D0001046103D102D1EDD8149C9F80010421C3B -:1011E00010331021072ACDE91923C9F80410EBDDCB -:1011F00018AA002B74D0214658460DF16C09FFF750 -:10120000CBFB00287FF4DBADDDE91903103D102D89 -:1012100000F1010CE0DC099C714AC9F804502B4430 -:10122000BCF1070FCDE919C3C9F8002040F3948140 -:10123000002B00F01F8318EE101A18AA5846FFF76B -:10124000ABFB00287FF4BBAD049ADDE91903BD1A9E -:10125000002D00F101010DF16C097FF729AE102D71 -:1012600029DD0994102718EE104A07E000F1020C5E -:1012700009F108091046103D102D1ADD421C58498D -:101280001033072AC9E90017CDE91923EEDD18AAA2 -:1012900003B3214658460DF16C09FFF77DFB00288A -:1012A0007FF48DADDDE91903103D102D00F1010C27 -:1012B000E4DC099C61464A4AC9F804502B440729DA -:1012C000CDE91913C9F8002000F3E78009F10809F6 -:1012D0000131EDE54FF0010C18460DF16C09CAE73C -:1012E0004FF0010C18460DF16C0972E7002B00F06D -:1012F000048118EE101A18AA5846FFF74DFB002873 -:101300007FF45DADDDE919030DF16C09411CA7E522 -:10131000022311AA1C931B9201210DF16C090846AE -:1013200009F10809411CBAE5102D40F3E582DDE919 -:1013300019130F94084618EE104A07E000F1020C4A -:1013400009F108091046103D102D1DDD2549C9F889 -:101350000010421C10331021072ACDE91923C9F8C7 -:101360000410EBDD18AA03B3214658460DF16C09B1 -:10137000FFF712FB00287FF422ADDDE91903103DD1 -:10138000102D00F1010CE1DC0F9C6046154AC9F8F4 -:1013900004502B440728CDE91903C9F8002000F3B5 -:1013A000C18009F10809411C46E518464FF0010CBF -:1013B0000DF16C09C7E77607199353D5069A03997F -:1013C000541A002C4EDD0DF16C09102C40F3B08244 -:1013D000199918EE106A10250DE000BF6044002036 -:1013E0006C4A0020A4440020881C09F10809114619 -:1013F000103C102C1ADD4A1CB3481033072AC9E9E7 -:101400000005CDE91923EFDD18AA33B3314658465C -:10141000FFF7C2FA00287FF4D2ACDDE91913103CC3 -:10142000102C01F101000DF16C09E4DCA64AC9F8A9 -:10143000044023440728CDE91903C9F800207FF7A9 -:1014400059AD7BB118EE101A18AA5846FFF7A4FA46 -:1014500000287FF4B4AC1A9B4CE5012019460DF12D -:101460006C09C5E7DDE9053203998A42ACBF9B18D8 -:101470005B18059349E5B2F90C108F0518EE103A88 -:101480008AB23FF5E8AA18EE105A986DFBF7C2FC35 -:10149000B5F90C108AB2FFF7DEBA002B3FF479AE33 -:1014A00018EE101A18AA5846FFF776FA00287FF4AB -:1014B00086AC19991A9B01310DF16C09F8E4199267 -:1014C0000DF16C095EE4002F7FF4C3AB039E00278F -:1014D000049744ACFFF7C5BB039B13F0100354D132 -:1014E000039A12F0400000F06B8107991A4651F8F8 -:1014F000043B07919BB2012101E4099A002A64D1BF -:10150000184601210DF16C09C9E4012118460DF1BD -:101510006C09C4E45B4262EB420203962D20012178 -:10152000FFF7EEBB002B00F0888018EE101A18AA07 -:101530005846FFF731FA00287FF441ACDDE9190382 -:101540000DF16C09411C77E498F800100793FFF740 -:10155000D2BA44ACFFF785BB09F108090CF10101CF -:101560006046A0E416F4007240F0978151F8043B05 -:101570000791FFF7C0BBB30500F1888152F8043B27 -:101580000792DA171146FFF752BB079951F8043B4F -:1015900007910121FFF7B3BB079B059853F8041B84 -:1015A0000793C217C1E90002FFF77DBA0B9B002B1E -:1015B0003FF426AB0B9B1B78002B3FF421AB98F834 -:1015C000001046F48066FFF796BA022311AA1C9316 -:1015D0001B9201200DF16C09A2E6039671E53B4BCD -:1015E0000C9316F0200259D0079B073323F0070312 -:1015F00018465A6850F8083B0790F40709D553EA93 -:10160000020006D08DF84510302146F002068DF814 -:10161000441026F4806103910221FFF770BB2C4B2C -:101620000C93DEE7079B012153F8042B03918DF8FF -:10163000AC20079304912BACDFE49DF84320002AF3 -:1016400040F03281099A002A7FF462AE18460121E7 -:101650000DF16C0927E40021082216A81394FBF76A -:10166000DBF8791C00F0BC80002507942C460CE0C8 -:101670002BA95846FEF764F9421C204400F06B8108 -:10168000B84208DC00F070810446139A525916AB38 -:101690000435002AECD10494079CAFE016F0100347 -:1016A00007980CD116F0400405D01A4650F8043BB8 -:1016B00007909BB2A1E716F4007240F0E18050F869 -:1016C000043B079099E700BFA44400206044002039 -:1016D000744400200399049744AC9E4608EE90BAE7 -:1016E00001F480664FF0000C234606E0BEF10A0FBD -:1016F00072F1000239D3A6462A46A6491EEB020023 -:1017000040F100000F46A1FB001424F0030101EB9F -:101710009401401ABEEB00014FF0CC3562F1000499 -:1017200005FB01F507FB0455A1FB07410D44052707 -:1017300004F00101A1FB071B09186408303103F80C -:10174000011C44EAC5740CF1010C013B6D08002E2C -:10175000CCD00B9909786145C8D1BCF1FF0FC5D039 -:10176000BEF10A0F72F100026CD21C4644AB1B1B87 -:10177000049F039E049318EE90BAFFF772BA039683 -:10178000FFF762BA5846FAF77DFFFFF75BB9012908 -:1017900003967FF4CDACFFF75CBA079B059953F82D -:1017A000042B11600793FFF77EB9062F3B46039A7F -:1017B000794C079228BF062304930393FFF725BBB8 -:1017C000039B079913F4007214BF51F8043B51F8BE -:1017D000043B07911CBF0246DBB20121FFF78FBA21 -:1017E00016AB00930023194613AA5846FEF7CEF80D -:1017F00003460133049000F0AE801394049B002B49 -:1018000030D0632B63DC002308932BAC082200212B -:1018100016A8FBF701F8049D16AB009313AA2B46FC -:1018200021465846FEF7B2F8854240F0AB80039B54 -:10183000049A07930023A3541F4622EAE2730393FA -:10184000FFF716BA0E9A0D999B1A18460893FBF7E4 -:1018500055F80B99089B4A780AB101310B914FF06A -:10186000000C48E7039B0793049B03931F460893D0 -:10187000FFF7FEB9012118460DF16C09FFF713BB04 -:1018800050F8043B07902246DBB2B6E612F9043B5F -:101890000792DA171146FFF7CAB951F8043B0791CE -:1018A0000246DBB2FFF727BA01231C9301210DF199 -:1018B00043031B930DF16C090B46FFF7CDBA079B51 -:1018C000059953F8042B07931180FFF7ECB8591CC6 -:1018D0005846FAF76DF9044600283CD0089095E781 -:1018E000886DFBF799FAFFF7E9B9039B0793CDE9F8 -:1018F0000377089FFFF7BCB919981A9B013045E59B -:10190000039B07932046FBF7E1FA20EAE0732F469A -:10191000049003930895FFF7ABB918EE101A18AAB4 -:101920005846FFF739F800283FF436AAFFF74DBABA -:10193000199801307AE58C466EE46B6ED90705D4B0 -:10194000AB899A0502D4A86DFBF766FA4FF0FF3316 -:101950000593FFF749BA18EE102AB2F90C3043F09C -:1019600040039381FFF735BA079C049746E7079B2E -:1019700098F8011053F8047B0793904647EAE777FD -:10198000FFF7B9B818EE102A938943F0400393810A -:10199000FFF715BACDCCCCCC8844002070B50C46EE -:1019A0008989ADF58E6D21F00201ADF81410616EDC -:1019B0001B91E189ADF81610E1690991616A0B91FB -:1019C0001CA9029106914FF480610646049107918B -:1019D00018A80021CDE900320891FBF717FADDE9DC -:1019E000003202A93046FFF713F8051E07DB02A9F3 -:1019F0003046FDF7E5FE002818BF4FF0FF35BDF873 -:101A000014305B0603D5A38943F04003A3811898E3 -:101A1000FBF7FEF928460DF58E6D70BD9368002B1F -:101A200000F085802DE9F04FB1F90C300C46190714 -:101A3000804683B0174698B225D523691BB310F0B2 -:101A400002033D682DD04FF0000ADFF8C0B25646C1 -:101A5000B9465E453346524628BF5B464046002E97 -:101A600052D0E169676AB847002856DDD9F80830D6 -:101A70001B1A8244361AC9F80830002BE9D100201D -:101A800003B0BDE8F08F2146404600F041F9002840 -:101A900040F03881B4F90C303D6898B210F0020380 -:101AA000D1D110F0010944D14E46009746B38205CA -:101AB000D4F808B040F18580B3455A4600F2B480AE -:101AC00010F4906F40F0C180206801924946FAF707 -:101AD00027FEA368019AA3EB0B012368A1601344BE -:101AE000B24623600026009A9368A3EB0A03D14410 -:101AF0009360002BC3D0B4F90C0080B2002ED6D175 -:101B0000D5E900960835D1E7D5E900A60835A0E764 -:101B100021464046FDF754FE88B3B4F90C3043F03B -:101B200040034FF0FF30A38103B0BDE8F08F0020E9 -:101B300070471E46BA469946184600951F4666B33A -:101B4000002832D04A46D4E904132068A568B2427E -:101B500028BF3246884204D905EB030B5A4500F3EF -:101B6000A780934264DCE169656A3A464046A8472B -:101B7000B0F1000BD1DDB9EB0B09C9D00120DAF8C7 -:101B80000830A3EB0B035F44A6EB0B06CAF8083042 -:101B9000002B3FF474AF002ED2D1009A5668134642 -:101BA00008320092002EF8D01F6832460A213846CB -:101BB000FBF734F9002800F09C800130A0EB070906 -:101BC000C0E720682369984216D86269B24213D8E8 -:101BD0006FF00043B34228BF3346E16993FBF2F351 -:101BE000676A02FB03F340464A46B847B0F1000A71 -:101BF00093DDA6EB0A0676E7B345DA4628BFB24680 -:101C000052464946FAF78CFDA3682268A3EB0A0303 -:101C10005244A3602260002BEBD121464046FDF7E1 -:101C2000CFFD0028E5D078E72068B34632464CE780 -:101C300039460192FAF774FD019AA3689B1AA360D2 -:101C4000236813442360934695E723682169A3EB37 -:101C5000010B636903EB430A0AEBDA7A0BF1010328 -:101C60004FEA6A0A33445345524684BF9A46524665 -:101C700043052CD511464046F9F79AFF00283BD082 -:101C80005A4621690190F6F705FFA289019B22F4CB -:101C9000906242F08002A28103EB0B002361AAEB69 -:101CA0000B03C4F814A0A3602060B34632460CE7CF -:101CB00039465A46FAF734FD23685B4423602146CF -:101CC0004046FDF77DFD00283FF455AF25E740462F -:101CD000FAF736FA03460028DED121694046FBF7C1 -:101CE000F7F9B4F90C300C2223F08003C8F8002077 -:101CF00015E7721C914626E70C22B4F90C30C8F89F -:101D000000200CE74FF0FF30BAE600BF00FCFF7F79 -:101D100038B5314B1B6805460C4613B15A6B002A87 -:101D20004ED0B4F90C3018079AB21CD5216929B3EA -:101D300012F0010007D00020A06060694042A0615D -:101D400039B1002038BD950758BF6069A0600029EF -:101D5000F7D1120658BF0846F4D543F04003A381DB -:101D60004FF0FF3038BDD1062ED5520714D421696B -:101D700043F00803A3819AB20029D9D102F420705C -:101D8000B0F5007FD4D02146284600F047F9B4F9D9 -:101D90000C3021699AB2CBE7216B51B104F14002BA -:101DA000914204D02846FBF793F9B4F90C30002295 -:101DB000226321690022C4E9001223F02403D7E73B -:101DC0001846FAF75FFCACE7092243F040032A60AB -:101DD0004FF0FF30A38138BDB05100202DE9F0470E -:101DE00082B0824688461446FAF7DEFD012803D108 -:101DF00008F1FF33FE2B36D90DF10409424604F1F8 -:101E00005C0349465046FDF79BFD421C064632D016 -:101E100020B39DF804C0002509E023685A1C226005 -:101E200083F800C00135B54218D219F801CFA36874 -:101E3000013B002BA360F0DAA769BB426146224652 -:101E4000504602DBBCF10A0FE7D100F053F9431C06 -:101E5000E8D10646304602B0BDE8F0874646304637 -:101E600002B0BDE8F0875FFA88FC8DF804C0064632 -:101E70000DF10409CFE7A389304643F04003A38165 -:101E800002B0BDE8F08700BF30B5536E13F0010F0C -:101E9000B2F90C30144683B005469AB201D19805C8 -:101EA0001CD5900406D4626E43F4005342F40052F1 -:101EB000A381626622462846FFF790FF636EDA0729 -:101EC000054602D4A3899B0502D5284603B030BD40 -:101ED000A06DFAF7A1FF284603B030BDA06D0191B7 -:101EE000FAF798FFB4F90C3001999AB2D9E700BF1C -:101EF0002DE9F04F8BB0DDE9158A149F03918146DF -:101F000005921E46B8F1000F5CD0039B002B5ED0FB -:101F1000059B1D68002F6AD0741E4EB3039B04936B -:101F2000043D002601950BE0039B2BBB019B1A6827 -:101F3000002A3AD0BC455CD2013C631C664617D0EF -:101F4000D8F800300293019BDAF8E05053F8042FE0 -:101F5000019307A943464846D8F804B0A847421C55 -:101F60003AD000EB060CBC45DED9029BC8E9003B29 -:101F700030460BB0BDE8F08F00280EDD049B019DBC -:101F800018445A1E07A900F1FF3E11F8013B02F860 -:101F9000013F7245F9D101950490059B1A680432FE -:101FA0001A60019B1A68002AC4D1039B0BB1059BE0 -:101FB0001A600CF1FF3600223046C8F800200BB042 -:101FC000BDE8F08F039B00F58678002BA0D1059B20 -:101FD0004FF0FF371D689FE706468A2100223046F2 -:101FE000C9F80010C8F800200BB0BDE8F08F3E46DD -:101FF000BEE76646BCE700BF10B584B0054C069846 -:10200000009007980190044800680294FFF770FF61 -:1020100004B010BD284C0020B05100202DE9F04143 -:102020008B890C46990796B008D504F14303012229 -:10203000C4E90432236016B0BDE8F081B4F90E1093 -:102040000029064625DB6A4600F0ACF800281FDBB5 -:10205000019D05F47045A5F50055B5FA85F54FF4D9 -:1020600080686D094FF4006741463046F9F7A0FDDE -:10207000E0B1B4F90C30C4F8148043F08003206060 -:102080002061A38135BB3B43A38116B0BDE8F0813D -:10209000A38913F0800519D04FF040080025414670 -:1020A00030462F46F9F784FD0028E2D1B4F90C3010 -:1020B0009A05C0D423F0030304F1430243F0020362 -:1020C0000121C4E90421A3812260B4E74FF48068B0 -:1020D0002F46C9E7B4F90E10304600F079F810B970 -:1020E000B4F90C30CFE7A38923F0030343F00103D5 -:1020F0001BB2C8E7F8B50D461446064610B1436B4F -:10210000002B4CD0B4F90C20A369A360170790B240 -:102110001BD52369CBB1EDB281042F4622D52268AD -:102120006169D31A994229DD0133A1680139A1609F -:10213000511C2160157062699A4227D0A389DB0780 -:1021400001D50A2D22D03846F8BD21463046FFF78A -:10215000DFFD08BBB4F90C20236990B2EDB2810415 -:102160002F46DCD442F40052A281626E616922F4EF -:10217000005262662268D31A9942D5DC2146304665 -:10218000FDF71EFB40B922680123CEE72146304609 -:10219000FDF716FB0028D6D04FF0FF37D3E7FAF74C -:1021A00071FAAFE770B50C46084D0346002620468D -:1021B00011461C462E60F6F797FF431C00D070BDF9 -:1021C0002B68002BFBD0236070BD00BF48BA0020F5 -:1021D00038B5074D0022044608462A60F6F78AFF04 -:1021E000431C00D038BD2B68002BFBD0236038BDCA -:1021F00048BA00205FF800F09D1B00605FF800F017 -:0C220000651700605FF800F0F11B006043 -:04220C00F8B500BF62 -:08221000FC98FF7F01000000B3 -:1022180000000000000000000000000000000000B6 -:1022280000000000000000000000000000000000A6 -:102238000000000000000000000000000000000096 -:102248000000000000000000000000000000000086 -:102258000000000000000000000000000000000076 -:102268000000000000000000000000000000000066 -:102278000000000000000000000000000000000056 -:102288000000000000000000000000000000000046 -:102298000000000000000000000000000000000036 -:1022A8000000000000000000000000000000000026 -:1022B8000000000000000000000000000000000016 -:1022C8000000000000000000000000000000000006 -:1022D80000000000000000000000000000000000F6 -:1022E80000000000000000000000000000000000E6 -:1022F80000000000000000000000000000000000D6 -:1023080000000000000000000000000000000000C5 +:10000000013B00F1738432EE476BB4EEC56BF1EE49 +:1000100010FADFD5009A049602E08A4200F050847C +:10002000894611F8013D392BF7D00133DBB20B7053 +:10003000049B0133049355E1091A0123B1F101082E +:100040000A937FF5C7AEC1F1010306934FF0000894 +:10005000C2E60026E66331462046FEF779FF0090AF +:10006000002800F06784009BA3634FF0FF330B93DD +:1000700099460123B34607930D9A002A55DB04994C +:100080000E2952DCB74BBBF1000F03EBC10393ED1C +:10009000006B15DAB9F1000F12DC40F0F282B1EE1C +:1000A000047B26EE077BB4EEC78BF1EE10FACA464E +:1000B0004E4600F26D82DDF800806FEA0B0B70E2B5 +:1000C00088EE067BBDEEC77B009917EE103AB9F1BA +:1000D000010F03F13003B8EEC75B01F8013BA5EE59 +:1000E000468B00F03483B2EE044B012311E088EE1E +:1000F000067BBDEEC77B013317EE102A4B4502F19C +:100100003002B8EEC75B01F8012BA5EE468B00F07C +:100110001E8328EE048BB5EE408BF1EE10FAE6D18B +:10012000049B013304938946DCE0079B43B3019BA6 +:10013000012B40F37682089B09F1FF3A534580F288 +:100140003F82089BCDF820A0AAEB030217444FF092 +:10015000000AB9F1000FC0F22583069B09934B44B6 +:10016000C844069301212046FEF7C4FF06460CE072 +:100170007D4B009300980FB0BDEC028BBDE8F08F73 +:10018000069BDDF820A0079E0993099B6BB1B8F18F +:10019000000F0ADD434506991A46A8BF4246891A50 +:1001A0009B1A06910993A8EB0208089B63B1079B71 +:1001B000002B00F0A782BAF1000F00F30482089B25 +:1001C000B3EB0A0240F0FF8201212046FEF792FFC6 +:1001D000002F824600F3AF80019B012B40F3878103 +:1001E000002308930120002F40F0B180404410F01C +:1001F0001F0000F07A81C0F12002042A00F38880F9 +:1002000040F0F681069B002B05DD29461A46204664 +:10021000FFF7ACF80546B8F1000F05DD5146424640 +:100220002046FFF7A3F882460A9B002B40F03F814F +:10023000B9F1000F40F32581079B002B40F0A3800C +:10024000049B01330493DDF80080012707E0294671 +:1002500000230A222046FEF7ABFE01370546514631 +:100260002846FFF77BFCB94500F1300008F8010B88 +:10027000EDDCB9F1000F009ACCBFCB464FF0010B7B +:100280000346934400272946012220460193FFF7A5 +:100290006DF851460546FFF7E1F8002840F3AF81BD +:1002A0001BF8013C009A0BF1FF3B04E05A4500F0BB +:1002B000B1811BF8013D392B0BF10109F6D0013357 +:1002C0008BF8003051462046FEF768FE56B12FB13C +:1002D000B74203D039462046FEF760FE314620463D +:1002E000FEF75CFE29462046FEF758FE002389F8FB +:1002F0000030DDE904231A601B9B002B3FF4FEACA9 +:100300000098C3F800900FB0BDEC028BBDE8F08FF1 +:10031000C0F11C00069B03440693099B0344099308 +:1003200080446FE7C2F1200206FA02F207EE102ABB +:1003300009E5012663E501463A462046FEF7B6FF89 +:10034000019B012B824640F3C58100230893DAF814 +:1003500010200AEB82021069FEF77CFEC0F120003B +:1003600044E700BFF802002050450020314600233A +:100370000A222046FEF71CFE0B9B002B064640F38C +:10038000CE8204979946099B002B05DD31461A461B +:100390002046FEF7EBFF0646089B002B40F0EB8162 +:1003A000B046029B009F03F001027B1E4B44089362 +:1003B000019B0A921343099351462846FFF7CEFB4F +:1003C000314683462846FFF749F842465146814662 +:1003D0002046FFF765F8C26801460BF13003002A9A +:1003E00042D1CDE906032846FFF738F80699029076 +:1003F0002046FEF7D3FD029A079B1AB909990029F6 +:1004000000F07E82B9F1000FC0F28381019949EAC0 +:1004100001090A9951EA090900F07B81002A00F3D9 +:10042000C681089A3B7007F101099742CB4600F05C +:10043000C481294600230A222046FEF7B9FD46451D +:10044000054631464FF000034FF00A02204612D015 +:10045000FEF7AEFD4146064600230A222046FEF77F +:10046000A7FD4F468046A7E720460293FEF796FD7C +:10047000029B0122C6E7FEF79BFD4F4606468046DB +:100480009AE7019B022B71DC079B002B7FF47BAF6B +:10049000049B5146013328460493FFF75FFBDDF8C8 +:1004A00000B000F130030BF8013B0027EBE65146AA +:1004B0002846FEF7D3FF0028BFF6BAAE2946002330 +:1004C0000A222046FEF774FD049B5F1E079B05462B +:1004D000002B7FF44BAF0B9B002B40F31882994607 +:1004E000B1E6BC4B00930333A4E41C2012E7DDE922 +:1004F000020100287FF474AEC1F31302002A00F059 +:10050000F480029B08936DE601230793049B5B44F0 +:1005100003F10109B9F1010FCC460B93B8BF4FF0BD +:10052000010C0021BCF1170FE1637FF7BCAC012087 +:100530000422520002F114036345014600F1010058 +:10054000F7D9E163AFE401230793BBF1000F52DD5C +:10055000CDF82CB0D946DC46E3E700230793D5E776 +:1005600000230793F1E7DDF82C900497B9F1000F11 +:100570007FF4A1AD51464B4605222046FEF718FDFB +:10058000014682462846FEF769FF00287FF793ADB3 +:10059000049B03F1010B009B3122984603F8012BC9 +:1005A000009351462046FEF7F9FC0BF10103DDF8FC +:1005B00000900493CDF80080002E7FF48FAE91E67A +:1005C000A3EB0A0AC5E5314652462046FEF76EFE09 +:1005D0002A46014606462046FEF7BAFD294605464C +:1005E0002046FEF7DBFCEAE50220B0EE485B81E442 +:1005F000C0F13C008EE64FF0010BD9464FE403D129 +:10060000019BDB073FF54CAED9461BF8013D302B73 +:10061000FAD057E6049B009A0133049331231370F8 +:1006200050E6BAF1000F00F0238102F23342069B3C +:1006300009931344DDF820A00693904492E507EE59 +:10064000900AB1EE0C5BB8EEE77BA6EE075B15EE09 +:10065000902A51EC150BA2F1507141EC150BB1EE43 +:10066000047B36EE477BB4EEC57BF1EE10FA00F367 +:100670003781B1EE455BB4EEC57BF1EE10FA7FF544 +:10068000FBAC4FF0000A564615E500F0F580049BE0 +:1006900051495A4202F00F0001EBC00191ED006B8D +:1006A000121128EE066B00F04281B0EE467B4B49FA +:1006B00000260220D30705D591ED005B013001260D +:1006C00027EE057B521001F10801F3D1002E06FE42 +:1006D000076B1EE4029B002B7FF437AEDDE90201BD +:1006E000C1F31302002A40F037813D4A0A40002A34 +:1006F00000F0FA80069B01330693012308F10108FC +:1007000008936FE52946089A2046FEF7CFFD054677 +:100710005AE5002A12DD2946012220460193FEF700 +:1007200025FE51460546FEF799FE0028019B40F341 +:10073000E180392B00F0CA800BF13103B94609F88A +:10074000013B049B0133374604934646BAE538EE35 +:10075000088BB4EEC68BF1EE10FA0ADCB4EE468BD1 +:10076000F1EE10FA7FF4DCAC17EE103AD8077FF503 +:10077000D7AC009A54E471682046FEF7E9FB0746BF +:10078000002800F0DE80336902339A0006F10C0184 +:100790000C30F8F7F3F9394601222046FEF7E6FD62 +:1007A0008046FEE5069BA3EB09030993DAE4392BA7 +:1007B00000F08C80B9460133C1E7049A0132374614 +:1007C000049246465FE529462046FEF76FFD054642 +:1007D000FAE400BFB0440020F8020020D00200205C +:1007E0000000F07F5E4BFDEEC65B03EBC20C1CED20 +:1007F000023BB8EEE57B36EE477B41EC160B15EE7F +:10080000901A23EE063B00983031012A00F8011BB4 +:1008100000F08380B2EE044B009B991827EE047B16 +:10082000FDEEC76B16EE903A303300F8013B814283 +:10083000B8EEE65B37EE457BF0D1B6EE006B33EEFB +:10084000065BB4EEC75BF1EE10FA3FF5E3AB36EEB4 +:10085000436BB4EEC76BF1EE10FA7FF70DAC89462F +:10086000013919F8013C302BF9D0731C049339E598 +:100870000C9AC2F13602DAE60220B0EE486BFFF7BE +:1008800048BBB9F1000F3FF4DAAE0B9A002A7FF7AC +:10089000F3ABB2EE044B26EE046B013007EE900A88 +:1008A000049BB8EEE75BB1EE0C7BA6EE057B17EE82 +:1008B00090CA51EC170B5E1EACF15071FFF747BBAD +:1008C000049B013304933123FFF7B1BB049BBB4668 +:1008D00001330493392337460BF8013B4646E1E4E4 +:1008E0004FF0000A564653E608927BE4731C0493CB +:1008F0008946F7E47FF422AFDA077FF51FAF18E7E8 +:10090000392BE3D0B9F1000F3FF716AF16E7019B83 +:10091000022B3FF728AE0497BAE501468DE7019B0D +:10092000022B3FF720AEDDF82C9004972BE5022038 +:10093000FFF7EFBA0B4B0C48002240F2AF11FFF764 +:10094000EDF8084B08483A4640F2EF21FFF7E6F889 +:10095000064B0093FFF7D2B9029B0893F7E400BF60 +:10096000F802002028430020B4440020A4440020C2 +:100970000EB410B583B005AB064C53F8042B0193AD +:100980000146206800F0C4F803B0BDE8104003B091 +:10099000704700BF705200202DE9F04F9368176830 +:1009A00083B09246002B70D081468A6808680C4656 +:1009B000083743E0A38913F4906F2ED0D4E90416CE +:1009C000A0EB010806EB460606EBD67608F101001F +:1009D00076102844B042324684BF064632465B0554 +:1009E00037D511464846FBF757F9019000283AD011 +:1009F00042462169F8F7C2F8A289019B22F490626D +:100A000042F08002A281A6EB080203EB08006661B7 +:100A1000A260236120602E46A84642465946FBF755 +:100A2000F3FEDAF80830A2682068921B40445B1B92 +:100A3000A2602060CAF808303BB3083757E902B516 +:100A4000002DFAD0AA4216469046B3D92E46A846A3 +:100A5000E3E74846FBF7E8FB03460028D3D12169CA +:100A60004846FCF7B5FBA3890C2243F04003C9F8C4 +:100A700000204FF0FF30A38100220023CAF8082095 +:100A8000CAF8043003B0BDE8F08F00200023CAF894 +:100A9000043003B0BDE8F08F2DE9F84F4B6E9C0495 +:100AA00090462DD59368126843B38B46064602F1F3 +:100AB000080959E9025A5FEA9A0715D0043D002453 +:100AC00001E0A7420ED055F8041F5A46304601F007 +:100AD0005BFA431C04F10104F3D10023C8E901339C +:100AE000BDE8F88FD8F808302AF0030AA3EB0A0310 +:100AF000C8F8083009F10809002BDAD10020ECE72A +:100B000001F00CF80023C8E90133BDE8F88F00BFFD +:100B10002DE9F04F2DED028BC5B00DF1500A834643 +:100B200008EE101A16460021082250461C4607936C +:100B3000FBF7E6FEBBF1000F04D0DBF83430002BEE +:100B400000F0A08618EE102A536EDB0740F11385E3 +:100B5000B2F90C108AB295040BD418EE103A41F495 +:100B6000005199815B6E8AB218EE101A23F400537B +:100B70004B66100740F1058118EE103A1B69002BF7 +:100B800000F0FF8002F01A030A2B00F00A81002314 +:100B9000CDE91933CDE90D331BAA0C931892914678 +:100BA0000B930593B0464446A84BD3F8E450FBF7AB +:100BB0006FFF2246034612A9CDF800A05846A84769 +:100BC000002800F04581C0F23981129A252A034697 +:100BD00001D01C44E8E7B4EB0806054640F03C8130 +:100BE000002361788DF8433004F1010806934FF03B +:100BF000FF371E462B2408F10108A1F120035A2BD0 +:100C000000F27881DFE813F0B50276017601B002D8 +:100C10007601760176016A00760176017D028D0209 +:100C2000760188029702760192025B005B005B000E +:100C30005B005B005B005B005B005B0076017601A4 +:100C400076017601760176017601760176015C0205 +:100C500084007601760176017601760176017601CF +:100C6000760176017601E80076017601760133029D +:100C70007601DA02760176018B057601760176013E +:100C800076017601760176017601760176015C02C5 +:100C90008600760176017601CD0286007F0076011E +:100CA000C0027601FD02EA00ED027F007601330208 +:100CB0007C006905760176016B0576017C00A1F167 +:100CC0003003002218F8011B02EB820203EB420200 +:100CD000A1F13003092BF5D906928EE75846FEF7AD +:100CE0006DFE43680D931846FCF770F90E900546AB +:100CF0005846FEF763FE83680B93002D40F0D684C0 +:100D000098F8001077E798F8001046F0200672E790 +:100D100046F01006B40640F18E81079B073323F09E +:100D200007031A46596852F8083B07920A460029F9 +:100D3000C0F27084791C00F0A28526F08001039136 +:100D400053EA020100F03F840A2B72F1000180F0A7 +:100D5000418530338DF80F31039E012304930DF24A +:100D60000F14049BBB42B8BF3B4603930023089378 +:100D70009DF84330002B00F0CB80039B013303939D +:100D8000C6E018EE101A584618EE105A01F040F856 +:100D9000002840F05286AA8902F01A030A2B7FF439 +:100DA000F6AE18EE101AB1F90E30002BFFF6EFAECA +:100DB0004B6EDB0702D4970540F1128618EE101A2D +:100DC00023463246584600F069FE0590059845B026 +:100DD000BDEC028BBDE8F08F46F0100616F0200245 +:100DE00000F03681079B073323F0070319465A6842 +:100DF00051F8083B079126F48061039100210020FF +:100E00008DF84300781C00F01082039820F08006D3 +:100E100053EA020040F00882002F40F03885002994 +:100E200040F0D583039B13F00103049300F0118479 +:100E300030238DF80F310DF20F1492E708220021B4 +:100E40005046FBF75DFD01231C44ADE6E84C002055 +:100E5000B4EB080605461BD0199B1A9A013332449D +:100E6000072BC9E900861A9219931CDD002A00F0AD +:100E7000A68318EE101A18AA5846FFF70DFE20BBDD +:100E80000DF16C09059B33440593002D7FF4A8AE4A +:100E90001A9B002B40F0C18518EE103A0022B3F9DE +:100EA0000C30199215E009F10809EBE718EE101A59 +:100EB00018AA5846FFF7F0FD002800F0A680089B0E +:100EC0001BB108995846FCF783F918EE103AB3F9AC +:100ED0000C3018EE102A526E12F0010F9AB200F088 +:100EE000A080500600F1B285059845B0BDEC028B9C +:100EF000BDE8F08F0029CBD000238DF843300123CB +:100F0000CDE903338DF8AC102BAC002308931F46BA +:100F100016F00203099302D0039B0233039316F0E9 +:100F200084030A9305D1069B039A9D1A002D00F3B2 +:100F30007B82DDE91903411C9DF8432082B1012227 +:100F40000133C9F8042007290DF14302CDE9191333 +:100F5000C9F8002000F34A82084609F10809013166 +:100F6000099AE2B111AA0233C9F8002007294FF00B +:100F70000202CDE91913C9F8042040F35082002B76 +:100F800000F0438318EE101A18AA5846FFF784FDA4 +:100F9000002894D1DDE919030DF16C09411C0A9A6E +:100FA000802A00F08481049ABD1A002D00F3D781B5 +:100FB000049AC9F8004013440729CDE91913C9F868 +:100FC000042040F36E81002B00F0758218EE101A99 +:100FD00018AA5846FFF760FD00287FF470AF1A9BEF +:100FE0000DF16C09750705D5069A0399541A002C62 +:100FF00000F36B82DDE9052103988142ACBF5218F2 +:1010000012180592002B7FF451AF08990023199311 +:10101000002900F049815846FCF7DAF80DF16C0917 +:10102000C1E59C053FF55DAF18EE104AA06DFBF7DA +:1010300063FFA28955E7F006079A00F11F83710646 +:1010400040F1198332F9043B0792DA1711466EE634 +:1010500016F01003079940F0098316F0400000F0E5 +:1010600001831A4651F8043B07919BB2C3E6079BE4 +:101070001A4600238DF84330134653F8044B03936C +:10108000002C00F01284532900F0658316F010053F +:1010900040F061837B1C00F0B3843A462946204629 +:1010A000FBF72CFF0890002800F09F84031B039A95 +:1010B000049323EAE3732F4607920393089557E6B8 +:1010C000432902D0F50640F12D83079D0822002117 +:1010D00016A82BACFBF714FC16AB55F8042B2146D5 +:1010E0005846FEF7ADFC03460133049000F0B3848C +:1010F000049B079523EAE373039300238DF84330A1 +:1011000003E7079B53F8042B0692002A80F29C8287 +:10111000069A5242CDE9062398F8001046F00406DC +:1011200069E598F800108DF8434064E598F80010E0 +:1011300046F080065FE5424612F8011B2A2900F0BE +:101140009684A1F13003092B90464FF000073FF63B +:1011500054AD18F8011B07EB870703EB4707A1F114 +:101160003003092BF5D948E598F8001046F0010640 +:1011700041E59DF84330002B7FF4C2AD202398F861 +:1011800000108DF8433036E598F800106C2903BF45 +:1011900098F8011046F0200608F1010846F0100604 +:1011A00029E598F80010682903BF98F8011046F463 +:1011B000007608F1010846F040061CE546F01003F1 +:1011C0000393039B13F0200200F00682079B073372 +:1011D00023F0070319465A6851F8083B079101218B +:1011E0000DE6079A46F00203039352F8043B079278 +:1011F00047F63002ADF84420B84A0C920221002292 +:10120000FDE5B70600F14882F50600F14683740655 +:1012100000F1D583B00540F14083079B059953F851 +:10122000042B07931170BEE4039601293FF48CADA3 +:10123000022944AC11D10C9803F00F011B09415C49 +:1012400004F8011D43EA0273120953EA0201F3D1C3 +:10125000039E44AB1B1B049383E503F00701DB08EB +:1012600043EA4273D208303153EA0205204604F8BB +:10127000011DF2D1039EF307EBD53029E8D03023CE +:10128000023804F8013C44AB1B1A039E0493044645 +:1012900067E5049B1B9401221C931A9319920DF18C +:1012A0006C0909F108099DE60DF16C097BE4069AC9 +:1012B000039D551B002D7FF776AE102D40F3BB83A9 +:1012C000099418EE104A07E000F1020C09F1080930 +:1012D0001046103D102D1EDD8149C9F80010421C3A +:1012E00010331021072ACDE91923C9F80410EBDDCA +:1012F00018AA002B74D0214658460DF16C09FFF74F +:10130000CBFB00287FF4DBADDDE91903103D102D88 +:1013100000F1010CE0DC099C714AC9F804502B442F +:10132000BCF1070FCDE919C3C9F8002040F394813F +:10133000002B00F01F8318EE101A18AA5846FFF76A +:10134000ABFB00287FF4BBAD049ADDE91903BD1A9D +:10135000002D00F101010DF16C097FF729AE102D70 +:1013600029DD0994102718EE104A07E000F1020C5D +:1013700009F108091046103D102D1ADD421C58498C +:101380001033072AC9E90017CDE91923EEDD18AAA1 +:1013900003B3214658460DF16C09FFF77DFB002889 +:1013A0007FF48DADDDE91903103D102D00F1010C26 +:1013B000E4DC099C61464A4AC9F804502B440729D9 +:1013C000CDE91913C9F8002000F3E78009F10809F5 +:1013D0000131EDE54FF0010C18460DF16C09CAE73B +:1013E0004FF0010C18460DF16C0972E7002B00F06C +:1013F000048118EE101A18AA5846FFF74DFB002872 +:101400007FF45DADDDE919030DF16C09411CA7E521 +:10141000022311AA1C931B9201210DF16C090846AD +:1014200009F10809411CBAE5102D40F3E582DDE918 +:1014300019130F94084618EE104A07E000F1020C49 +:1014400009F108091046103D102D1DDD2549C9F888 +:101450000010421C10331021072ACDE91923C9F8C6 +:101460000410EBDD18AA03B3214658460DF16C09B0 +:10147000FFF712FB00287FF422ADDDE91903103DD0 +:10148000102D00F1010CE1DC0F9C6046154AC9F8F3 +:1014900004502B440728CDE91903C9F8002000F3B4 +:1014A000C18009F10809411C46E518464FF0010CBE +:1014B0000DF16C09C7E77607199353D5069A03997E +:1014C000541A002C4EDD0DF16C09102C40F3B08243 +:1014D000199918EE106A10250DE000BF2045002074 +:1014E0002C4B002064450020881C09F10809114696 +:1014F000103C102C1ADD4A1CB3481033072AC9E9E6 +:101500000005CDE91923EFDD18AA33B3314658465B +:10151000FFF7C2FA00287FF4D2ACDDE91913103CC2 +:10152000102C01F101000DF16C09E4DCA64AC9F8A8 +:10153000044023440728CDE91903C9F800207FF7A8 +:1015400059AD7BB118EE101A18AA5846FFF7A4FA45 +:1015500000287FF4B4AC1A9B4CE5012019460DF12C +:101560006C09C5E7DDE9053203998A42ACBF9B18D7 +:101570005B18059349E5B2F90C108F0518EE103A87 +:101580008AB23FF5E8AA18EE105A986DFBF7B2FC44 +:10159000B5F90C108AB2FFF7DEBA002B3FF479AE32 +:1015A00018EE101A18AA5846FFF776FA00287FF4AA +:1015B00086AC19991A9B01310DF16C09F8E4199266 +:1015C0000DF16C095EE4002F7FF4C3AB039E00278E +:1015D000049744ACFFF7C5BB039B13F0100354D131 +:1015E000039A12F0400000F06B8107991A4651F8F7 +:1015F000043B07919BB2012101E4099A002A64D1BE +:10160000184601210DF16C09C9E4012118460DF1BC +:101610006C09C4E45B4262EB420203962D20012177 +:10162000FFF7EEBB002B00F0888018EE101A18AA06 +:101630005846FFF731FA00287FF441ACDDE9190381 +:101640000DF16C09411C77E498F800100793FFF73F +:10165000D2BA44ACFFF785BB09F108090CF10101CE +:101660006046A0E416F4007240F0978151F8043B04 +:101670000791FFF7C0BBB30500F1888152F8043B26 +:101680000792DA171146FFF752BB079951F8043B4E +:1016900007910121FFF7B3BB079B059853F8041B83 +:1016A0000793C217C1E90002FFF77DBA0B9B002B1D +:1016B0003FF426AB0B9B1B78002B3FF421AB98F833 +:1016C000001046F48066FFF796BA022311AA1C9315 +:1016D0001B9201200DF16C09A2E6039671E53B4BCC +:1016E0000C9316F0200259D0079B073323F0070311 +:1016F00018465A6850F8083B0790F40709D553EA92 +:10170000020006D08DF84510302146F002068DF813 +:10171000441026F4806103910221FFF770BB2C4B2B +:101720000C93DEE7079B012153F8042B03918DF8FE +:10173000AC20079304912BACDFE49DF84320002AF2 +:1017400040F03281099A002A7FF462AE18460121E6 +:101750000DF16C0927E40021082216A81394FBF769 +:10176000CFF8791C00F0BC80002507942C460CE0D3 +:101770002BA95846FEF764F9421C204400F06B8107 +:10178000B84208DC00F070810446139A525916AB37 +:101790000435002AECD10494079CAFE016F0100346 +:1017A00007980CD116F0400405D01A4650F8043BB7 +:1017B00007909BB2A1E716F4007240F0E18050F868 +:1017C000043B079099E700BF6445002020450020B6 +:1017D000344500200399049744AC9E4608EE90BA25 +:1017E00001F480664FF0000C234606E0BEF10A0FBC +:1017F00072F1000239D3A6462A46A6491EEB020022 +:1018000040F100000F46A1FB001424F0030101EB9E +:101810009401401ABEEB00014FF0CC3562F1000498 +:1018200005FB01F507FB0455A1FB07410D44052706 +:1018300004F00101A1FB071B09186408303103F80B +:10184000011C44EAC5740CF1010C013B6D08002E2B +:10185000CCD00B9909786145C8D1BCF1FF0FC5D038 +:10186000BEF10A0F72F100026CD21C4644AB1B1B86 +:10187000049F039E049318EE90BAFFF772BA039682 +:10188000FFF762BA5846FAF771FFFFF75BB9012913 +:1018900003967FF4CDACFFF75CBA079B059953F82C +:1018A000042B11600793FFF77EB9062F3B46039A7E +:1018B000794C079228BF062304930393FFF725BBB7 +:1018C000039B079913F4007214BF51F8043B51F8BD +:1018D000043B07911CBF0246DBB20121FFF78FBA20 +:1018E00016AB00930023194613AA5846FEF7CEF80C +:1018F00003460133049000F0AE801394049B002B48 +:1019000030D0632B63DC002308932BAC082200212A +:1019100016A8FAF7F5FF049D16AB009313AA2B4601 +:1019200021465846FEF7B2F8854240F0AB80039B53 +:10193000049A07930023A3541F4622EAE2730393F9 +:10194000FFF716BA0E9A0D999B1A18460893FBF7E3 +:1019500049F80B99089B4A780AB101310B914FF075 +:10196000000C48E7039B0793049B03931F460893CF +:10197000FFF7FEB9012118460DF16C09FFF713BB03 +:1019800050F8043B07902246DBB2B6E612F9043B5E +:101990000792DA171146FFF7CAB951F8043B0791CD +:1019A0000246DBB2FFF727BA01231C9301210DF198 +:1019B00043031B930DF16C090B46FFF7CDBA079B50 +:1019C000059953F8042B07931180FFF7ECB8591CC5 +:1019D0005846FAF761F9044600283CD0089095E78C +:1019E000886DFBF789FAFFF7E9B9039B0793CDE907 +:1019F0000377089FFFF7BCB919981A9B013045E59A +:101A0000039B07932046FBF7E1FA20EAE0732F4699 +:101A1000049003930895FFF7ABB918EE101A18AAB3 +:101A20005846FFF739F800283FF436AAFFF74DBAB9 +:101A3000199801307AE58C466EE46B6ED90705D4AF +:101A4000AB899A0502D4A86DFBF756FA4FF0FF3325 +:101A50000593FFF749BA18EE102AB2F90C3043F09B +:101A600040039381FFF735BA079C049746E7079B2D +:101A700098F8011053F8047B0793904647EAE777FC +:101A8000FFF7B9B818EE102A938943F04003938109 +:101A9000FFF715BACDCCCCCC4845002070B50C462C +:101AA0008989ADF58E6D21F00201ADF81410616EDB +:101AB0001B91E189ADF81610E1690991616A0B91FA +:101AC0001CA9029106914FF480610646049107918A +:101AD00018A80021CDE900320891FBF707FADDE9EB +:101AE000003202A93046FFF713F8051E07DB02A9F2 +:101AF0003046FDF7E5FE002818BF4FF0FF35BDF872 +:101B000014305B0603D5A38943F04003A3811898E2 +:101B1000FBF7EEF928460DF58E6D70BD9368002B2E +:101B200000F085802DE9F04FB1F90C300C46190713 +:101B3000804683B0174698B225D523691BB310F0B1 +:101B400002033D682DD04FF0000ADFF8C0B25646C0 +:101B5000B9465E453346524628BF5B464046002E96 +:101B600052D0E169676AB847002856DDD9F80830D5 +:101B70001B1A8244361AC9F80830002BE9D100201C +:101B800003B0BDE8F08F2146404600F041F900283F +:101B900040F03881B4F90C303D6898B210F002037F +:101BA000D1D110F0010944D14E46009746B38205C9 +:101BB000D4F808B040F18580B3455A4600F2B480AD +:101BC00010F4906F40F0C180206801924946FAF706 +:101BD0001BFEA368019AA3EB0B012368A1601344C9 +:101BE000B24623600026009A9368A3EB0A03D1440F +:101BF0009360002BC3D0B4F90C0080B2002ED6D174 +:101C0000D5E900960835D1E7D5E900A60835A0E763 +:101C100021464046FDF754FE88B3B4F90C3043F03A +:101C200040034FF0FF30A38103B0BDE8F08F0020E8 +:101C300070471E46BA469946184600951F4666B339 +:101C4000002832D04A46D4E904132068A568B2427D +:101C500028BF3246884204D905EB030B5A4500F3EE +:101C6000A780934264DCE169656A3A464046A8472A +:101C7000B0F1000BD1DDB9EB0B09C9D00120DAF8C6 +:101C80000830A3EB0B035F44A6EB0B06CAF8083041 +:101C9000002B3FF474AF002ED2D1009A5668134641 +:101CA00008320092002EF8D01F6832460A213846CA +:101CB000FBF724F9002800F09C800130A0EB070915 +:101CC000C0E720682369984216D86269B24213D8E7 +:101CD0006FF00043B34228BF3346E16993FBF2F350 +:101CE000676A02FB03F340464A46B847B0F1000A70 +:101CF00093DDA6EB0A0676E7B345DA4628BFB2467F +:101D000052464946FAF780FDA3682268A3EB0A030E +:101D10005244A3602260002BEBD121464046FDF7E0 +:101D2000CFFD0028E5D078E72068B34632464CE77F +:101D300039460192FAF768FD019AA3689B1AA360DD +:101D4000236813442360934695E723682169A3EB36 +:101D5000010B636903EB430A0AEBDA7A0BF1010327 +:101D60004FEA6A0A33445345524684BF9A46524664 +:101D700043052CD511464046F9F78EFF00283BD08D +:101D80005A4621690190F6F7F9FEA289019B22F4D7 +:101D9000906242F08002A28103EB0B002361AAEB68 +:101DA0000B03C4F814A0A3602060B34632460CE7CE +:101DB00039465A46FAF728FD23685B4423602146DA +:101DC0004046FDF77DFD00283FF455AF25E740462E +:101DD000FAF72AFA03460028DED121694046FBF7CC +:101DE000F7F9B4F90C300C2223F08003C8F8002076 +:101DF00015E7721C914626E70C22B4F90C30C8F89E +:101E000000200CE74FF0FF30BAE600BF00FCFF7F78 +:101E100038B5314B1B6805460C4613B15A6B002A86 +:101E20004ED0B4F90C3018079AB21CD5216929B3E9 +:101E300012F0010007D00020A06060694042A0615C +:101E400039B1002038BD950758BF6069A0600029EE +:101E5000F7D1120658BF0846F4D543F04003A381DA +:101E60004FF0FF3038BDD1062ED5520714D421696A +:101E700043F00803A3819AB20029D9D102F420705B +:101E8000B0F5007FD4D02146284600F047F9B4F9D8 +:101E90000C3021699AB2CBE7216B51B104F14002B9 +:101EA000914204D02846FBF793F9B4F90C30002294 +:101EB000226321690022C4E9001223F02403D7E73A +:101EC0001846FAF753FCACE7092243F040032A60B6 +:101ED0004FF0FF30A38138BD705200202DE9F0474C +:101EE00082B0824688461446FAF7D2FD012803D113 +:101EF00008F1FF33FE2B36D90DF10409424604F1F7 +:101F00005C0349465046FDF79BFD421C064632D015 +:101F100020B39DF804C0002509E023685A1C226004 +:101F200083F800C00135B54218D219F801CFA36873 +:101F3000013B002BA360F0DAA769BB426146224651 +:101F4000504602DBBCF10A0FE7D100F053F9431C05 +:101F5000E8D10646304602B0BDE8F0874646304636 +:101F600002B0BDE8F0875FFA88FC8DF804C0064631 +:101F70000DF10409CFE7A389304643F04003A38164 +:101F800002B0BDE8F08700BF30B5536E13F0010F0B +:101F9000B2F90C30144683B005469AB201D19805C7 +:101FA0001CD5900406D4626E43F4005342F40052F0 +:101FB000A381626622462846FFF790FF636EDA0728 +:101FC000054602D4A3899B0502D5284603B030BD3F +:101FD000A06DFAF791FF284603B030BDA06D0191C6 +:101FE000FAF788FFB4F90C3001999AB2D9E700BF2B +:101FF0002DE9F04F8BB0DDE9158A149F03918146DE +:1020000005921E46B8F1000F5CD0039B002B5ED0FA +:10201000059B1D68002F6AD0741E4EB3039B04936A +:10202000043D002601950BE0039B2BBB019B1A6826 +:10203000002A3AD0BC455CD2013C631C664617D0EE +:10204000D8F800300293019BDAF8E05053F8042FDF +:10205000019307A943464846D8F804B0A847421C54 +:102060003AD000EB060CBC45DED9029BC8E9003B28 +:1020700030460BB0BDE8F08F00280EDD049B019DBB +:1020800018445A1E07A900F1FF3E11F8013B02F85F +:10209000013F7245F9D101950490059B1A680432FD +:1020A0001A60019B1A68002AC4D1039B0BB1059BDF +:1020B0001A600CF1FF3600223046C8F800200BB041 +:1020C000BDE8F08F039B00F58678002BA0D1059B1F +:1020D0004FF0FF371D689FE706468A2100223046F1 +:1020E000C9F80010C8F800200BB0BDE8F08F3E46DC +:1020F000BEE76646BCE700BF10B584B0054C069845 +:10210000009007980190044800680294FFF770FF60 +:1021100004B010BDE84C0020705200202DE9F041C1 +:102120008B890C46990796B008D504F14303012228 +:10213000C4E90432236016B0BDE8F081B4F90E1092 +:102140000029064625DB6A4600F0ACF800281FDBB4 +:10215000019D05F47045A5F50055B5FA85F54FF4D8 +:1021600080686D094FF4006741463046F9F794FDE9 +:10217000E0B1B4F90C30C4F8148043F0800320605F +:102180002061A38135BB3B43A38116B0BDE8F0813C +:10219000A38913F0800519D04FF04008002541466F +:1021A00030462F46F9F778FD0028E2D1B4F90C301B +:1021B0009A05C0D423F0030304F1430243F0020361 +:1021C0000121C4E90421A3812260B4E74FF48068AF +:1021D0002F46C9E7B4F90E10304600F079F810B96F +:1021E000B4F90C30CFE7A38923F0030343F00103D4 +:1021F0001BB2C8E7F8B50D461446064610B1436B4E +:10220000002B4CD0B4F90C20A369A360170790B23F +:102210001BD52369CBB1EDB281042F4622D52268AC +:102220006169D31A994229DD0133A1680139A1609E +:10223000511C2160157062699A4227D0A389DB077F +:1022400001D50A2D22D03846F8BD21463046FFF789 +:10225000DFFD08BBB4F90C20236990B2EDB2810414 +:102260002F46DCD442F40052A281626E616922F4EE +:10227000005262662268D31A9942D5DC2146304664 +:10228000FDF71EFB40B922680123CEE72146304608 +:10229000FDF716FB0028D6D04FF0FF37D3E7FAF74B +:1022A00065FAAFE770B50C46084D03460026204698 +:1022B00011461C462E60F6F78BFF431C00D070BD04 +:1022C0002B68002BFBD0236070BD00BF68BA0020D4 +:1022D00038B5074D0022044608462A60F6F77EFF0F +:1022E000431C00D038BD2B68002BFBD0236038BDC9 +:1022F00068BA00205FF800F09D1B00605FF800F0F6 +:0C230000651700605FF800F0F11B006042 +:04230C00F8B500BF61 +:08231000E498FF7F01000000CA :1023180000000000000000000000000000000000B5 :1023280000000000000000000000000000000000A5 :102338000000000000000000000000000000000095 @@ -21073,1308 +21073,1308 @@ :102468000000000000000000000000000000000064 :102478000000000000000000000000000000000054 :102488000000000000000000000000000000000044 -:1024980000000040FB21F93F000000002D44743E7D -:1024A800000000809846F83C0000006051CC783B62 -:1024B80000000080831BF0390000004020257A3896 -:1024C800000000802282E336000000001DF3693519 -:1024D8000000000000000000000000000000008074 -:1024E8000080E03779C34143176E05B5B5B8934608 -:1024F800F5F93FE9034F384D321D30F94877825AD4 -:102508003CBF737FDD4F1575000000000000F03FF1 -:1025180000000000000024400000000000005940B6 -:102528000000000000408F40000000000088C34009 -:1025380000000000006AF8400000000080842E417E -:1025480000000000D01263410000000084D79741CA -:102558000000000065CDCD41000000205FA00242D0 -:10256800000000E876483742000000A2941A6D4245 -:10257800000040E59C30A2420000901EC4BCD64238 -:1025880000003426F56B0C430080E03779C34143E3 -:1025980000A0D8855734764300C84E676DC1AB4359 -:1025A800003D9160E458E143408CB5781DAF154477 -:1025B80050EFE2D6E41A4B4492D54D06CFF0804452 -:1025C800F64AE1C7022DB544B49DD9794378EA4467 -:1025D800404142434445464748494A4B4C4D4E4F7B -:1025E800505152535455565758595A5B5C5D5E5F6B -:1025F800202122232425262728292A2B2C2D2E2F5B -:10260800303132333435363738393A3B3C3D3E3F4A -:1026180000000000000000000000000000000000B2 -:1026280000000000000000000000000000000000A2 -:102638000000000000000000000000000000000092 -:102648000000000000000000000000000000000082 -:102658000000000000000000000000000000000072 -:102668000000000000000000000000000000000062 -:102678000000000000000000000000000000000052 -:102688000000000000000000000000000000000042 -:102698000000000000000000000000000000000032 -:1026A80000000000000000000000000025494E0066 -:1026B8000000003426494E000000013427494E002E -:1026C8000000021428494E000000031429494E0056 -:1026D800000004042A4F5554000000342B4F555471 -:1026E800000001342C4F5554000002142D4F55544E -:1026F800000003042E434D50000000342F434D507A -:102708000000013430434D500000020431434D5065 -:102718000000030432474551000000343347455157 -:102728000000013434474551000002143547455133 -:10273800000003143650455100000034375045510D -:1027480000000134385045510000021439504551F9 -:10275800000003143A414D50000000343B414D50F5 -:10276800000001143E434142000000343F4341420F -:1027780000000114425245560000003443524556A9 -:102788000000011446444C590000003447444C5999 -:102798000000013448444C590000020449444C5993 -:1027A800000003044A4D5444000000344B4D544487 -:1027B800000001144E43484F000000344F43484F77 -:1027C8000000013452464C470000003453464C4741 -:1027D8000000013456524F540000003457524F54F1 -:1027E800000001345A504841000000345B50484111 -:1027F800000001345E574148000000345F574148EB -:102808000000013462464F520000003463464F52C4 -:102818000000013466564F4C0000003467564F4C98 -:102828000000013468564F4C0000021469564F4CA2 -:10283800000003146A54524D000000346B54524D8A -:10284800000001346E504954000000346F50495460 -:10285800000001047246494C000000347346494C9C -:10286800000001347446494C000002347546494C56 -:102878000000033476445256000000347744525620 -:10288800000001347844525600000214794452562C -:10289800000003047A454E48000000347B454E484A -:1028A800000001348253594E000000348353594EBE -:1028B8000000010486564F43000000018A4D47542A -:1028C800000000328B4D4754000001128E585652BA -:1028D800000000128F5856520000011492475445C8 -:1028E8000000003493475445000001349447544590 -:1028F80000000214954754450000031496524E47B1 -:10290800000000329A4D4243000000349B4D424380 -:10291800000001149E545444000000349F54544451 -:1029280000000114A252455300000032A35245533F -:1029380000000132A64C505200000031AA544D410B -:1029480000000001B2504C5800000034B3504C58FD -:1029580000000104B6534E4400000031B7534E4402 -:1029680000000131BA52544E00000031BB52544E9F -:1029780000000131C349525000000004C4495250BC -:10298800000001044142434445464748494A4B4CEC -:102998004D4E4F505152535455565758595A6162DB -:1029A800636465660000803E0000003F0000803FD1 -:1029B800000000400000804000000000000000000F -:1029C80000000000000000000000000000000000FF -:1029D80000000000000000000000000000000000EF -:1029E80000000000000000000000000000000000DF -:1029F800000000000000000000000000F000006679 -:102A08001001313233343536374F4E4569F70000FF -:102A180000000000000000000000000000000000AE -:102A2800000000000000000000000000000000009E -:102A3800000000000000000000000000000000FF8F -:102A480001000000000000000000000080002000DD -:102A5800010001000100000000010000000000006A -:102A6800000000000000000000000000000000005E -:102A7800000100000000000000000000000000004D -:102A8800000000000000000000000000000000003E -:102A9800000000000000000000000000000000002E -:102AA800000000000000000000000000000000001E -:102AB800000000000000000000000000000000000E +:102498000000000000000000000000000000000034 +:1024A8000000000000000000000000000000000024 +:1024B8000000000000000000000000000000000014 +:1024C8000000000000000000000000000000000004 +:1024D80000000000000000000000000000000000F4 +:1024E80000000000000000000000000000000000E4 +:1024F80000000000000000000000000000000000D4 +:1025080000000000000000000000000000000000C3 +:1025180000000000000000000000000000000000B3 +:1025280000000000000000000000000000000000A3 +:102538000000000000000000000000000000000093 +:102548000000000000000000000000000000000083 +:102558000000000000000000000000000000000073 +:102568000000000000000000000000000000000063 +:102578000000000000000000000000000000000053 +:102588000000000000000000000000000000000043 +:1025980000000040FB21F93F000000002D44743E7C +:1025A800000000809846F83C0000006051CC783B61 +:1025B80000000080831BF0390000004020257A3895 +:1025C800000000802282E336000000001DF3693518 +:1025D8000000000000000000000000000000008073 +:1025E8000080E03779C34143176E05B5B5B8934607 +:1025F800F5F93FE9034F384D321D30F94877825AD3 +:102608003CBF737FDD4F1575000000000000F03FF0 +:1026180000000000000024400000000000005940B5 +:102628000000000000408F40000000000088C34008 +:1026380000000000006AF8400000000080842E417D +:1026480000000000D01263410000000084D79741C9 +:102658000000000065CDCD41000000205FA00242CF +:10266800000000E876483742000000A2941A6D4244 +:10267800000040E59C30A2420000901EC4BCD64237 +:1026880000003426F56B0C430080E03779C34143E2 +:1026980000A0D8855734764300C84E676DC1AB4358 +:1026A800003D9160E458E143408CB5781DAF154476 +:1026B80050EFE2D6E41A4B4492D54D06CFF0804451 +:1026C800F64AE1C7022DB544B49DD9794378EA4466 +:1026D800404142434445464748494A4B4C4D4E4F7A +:1026E800505152535455565758595A5B5C5D5E5F6A +:1026F800202122232425262728292A2B2C2D2E2F5A +:10270800303132333435363738393A3B3C3D3E3F49 +:1027180000000000000000000000000000000000B1 +:1027280000000000000000000000000000000000A1 +:102738000000000000000000000000000000000091 +:102748000000000000000000000000000000000081 +:102758000000000000000000000000000000000071 +:102768000000000000000000000000000000000061 +:102778000000000000000000000000000000000051 +:102788000000000000000000000000000000000041 +:102798000000000000000000000000000000000031 +:1027A80000000000000000000000000025494E0065 +:1027B8000000003426494E000000013427494E002D +:1027C8000000021428494E000000031429494E0055 +:1027D800000004042A4F5554000000342B4F555470 +:1027E800000001342C4F5554000002142D4F55544D +:1027F800000003042E434D50000000342F434D5079 +:102808000000013430434D500000020431434D5064 +:102818000000030432474551000000343347455156 +:102828000000013434474551000002143547455132 +:10283800000003143650455100000034375045510C +:1028480000000134385045510000021439504551F8 +:10285800000003143A414D50000000343B414D50F4 +:10286800000001143E434142000000343F4341420E +:1028780000000114425245560000003443524556A8 +:102888000000011446444C590000003447444C5998 +:102898000000013448444C590000020449444C5992 +:1028A800000003044A4D5444000000344B4D544486 +:1028B800000001144E43484F000000344F43484F76 +:1028C8000000013452464C470000003453464C4740 +:1028D8000000013456524F540000003457524F54F0 +:1028E800000001345A504841000000345B50484110 +:1028F800000001345E574148000000345F574148EA +:102908000000013462464F520000003463464F52C3 +:102918000000013466564F4C0000003467564F4C97 +:102928000000013468564F4C0000021469564F4CA1 +:10293800000003146A54524D000000346B54524D89 +:10294800000001346E504954000000346F5049545F +:10295800000001047246494C000000347346494C9B +:10296800000001347446494C000002347546494C55 +:10297800000003347644525600000034774452561F +:10298800000001347844525600000214794452562B +:10299800000003047A454E48000000347B454E4849 +:1029A800000001348253594E000000348353594EBD +:1029B8000000010486564F43000000018A4D475429 +:1029C800000000328B4D4754000001128E585652B9 +:1029D800000000128F5856520000011492475445C7 +:1029E800000000349347544500000134944754458F +:1029F80000000214954754450000031496524E47B0 +:102A0800000000329A4D4243000000349B4D42437F +:102A1800000001149E545444000000349F54544450 +:102A280000000114A252455300000032A35245533E +:102A380000000132A64C505200000031AA544D410A +:102A480000000001B2504C5800000034B3504C58FC +:102A580000000104B6534E4400000031B7534E4401 +:102A680000000131BA52544E00000031BB52544E9E +:102A780000000131C349525000000004C4495250BB +:102A8800000001044142434445464748494A4B4CEB +:102A98004D4E4F505152535455565758595A6162DA +:102AA800636465660000803E0000003F0000803FD0 +:102AB800000000400000804000000000000000000E :102AC80000000000000000000000000000000000FE :102AD80000000000000000000000000000000000EE :102AE80000000000000000000000000000000000DE -:102AF80000000000000000000100000101000000CB -:102B0800F00000661003313233343536374F4E4506 -:102B180069F70000F00000661001313233343536B1 -:102B2800374F4E4569F70000F00000661014563222 -:102B38002E3533F700000000000000000000000000 -:102B4800000000000000000000000000000000007D -:102B5800000000000000000000000000000000006D -:102B6800000000FF010000004C6179657200000060 -:102B7800000000000000000000000000060245768A -:102B8800656E7400000000000000000000000000F6 -:102B980000FFFFC800010000034E616D65000000E2 -:102BA800000000000000000000000000FFFF80009F -:102BB8000100000004427574746F6E00000000008C -:102BC80000000000000000000100060001060605E4 -:102BD800427574746F6E0000000000000000000071 -:102BE8000000000100020001010606074C656400B0 -:102BF80000000000000000000000000000000002CB -:102C0800000500010101011C43616C696272617475 -:102C1800696F6E0000000000000000FFFF01000166 -:102C280001000000020E52474220506978656C008E -:102C38000000000000000000000200060000000084 -:102C4800031B417578204A61636B00000000000097 -:102C580000000000000700010001010203264C46A5 -:102C68004F0000000000000000000000000000000D -:102C780000FFFF01000100000305164F4C454420EA -:102C8800446973706C61790000000000000008005E -:102C980006000000011D5072657365740000000095 -:102CA800000000000000000000FFFF4000010000DD -:102CB8001E5365744C697374000000000000000026 -:102CC80000000000FFFF08000100000020536F6EA5 -:102CD8006700000000000000000000000000000085 -:102CE800FFFF4000010000002254726967676572A7 -:102CF800000000000000000000000000FFFF0400CA -:102D08000100000001022354656D706F20322054C9 -:102D180061700000000000000000FFFF02000100D9 -:102D28000121437573746F6D2053797345780000E2 -:102D38000000000000FFFF040001000001102554FE -:102D4800696D6564204576656E74000000000000BA -:102D58000000FFFF020127536B6574636820427906 -:102D680074657300000000000000FFFF010001000F -:102D78000428506F727420507265736574000000E7 -:102D88000000000000FFFF10000100000129536847 -:102D98006F72746375747300000000000000000017 -:102DA80000FFFF0100010000FFFFFFFFFFFF84039A -:102DB8000A0000000000000000000000FFFFFFFF05 -:102DC800FFFF0000000000000000000000000000FD -:102DD8004000FFFFFFFFDC00B80100000E0000000C -:102DE800000000004100FFFFFFFF0802B8010000DB -:102DF8000E000100000000004200FFFFFFFF340347 -:102E0800B80100000E000200000000004300FFFFB0 -:102E1800FFFF3403BE0000000E00030000000000A6 -:102E28004400FFFFFFFF0802BE0000000E00040080 -:102E3800000000004500FFFFFFFFDC00BE000000AF -:102E48000E000500000000001E00FFFFFFFF8002CB -:102E58001801042000000000010000001F00FFFF0F -:102E6800FFFFD0021801042000000000010000004C -:102E78001800FFFFFFFF7602860100000000000037 -:102E8800020000001900FFFFFFFF94028601000006 -:102E980000000000020000001A00FFFFFFFFB2025E -:102EA8008601000000000000020000001B00FFFF78 -:102EB800FFFFD002860100000000000002000000B1 -:102EC8001C00FFFFFFFFEE0286010000000000006B -:102ED80002000000FFFFFFFFFFFFF0003A020000C2 -:102EE8000400000001000000FFFFFFFFFFFF1C02BD -:102EF8003A0200000400010001000000FFFFFFFF8C -:102F0800FFFF48033A02000004000200010000002D -:102F1800FFFFFFFFFFFF3E037800000004000300EF -:102F280001000000FFFFFFFFFFFF1C027800000008 -:102F38000400040001000000FFFFFFFFFFFFF00096 -:102F48006E000000040005000100000017001600D4 -:102F5800150062021E0000000000000000000000D2 -:102F6800FFFFFFFFFFFFC8007C0102000000000018 -:102F780000000000FFFFFFFFFFFFF4017C010200DB -:102F88000000000000000500FFFFFFFFFFFF200317 -:102F98007C0102000000000000000400FFFFFFFFAA -:102FA800FFFF2003180102000000000000000300DA -:102FB800FFFFFFFFFFFFF4011801020000000000FF -:102FC80000000200FFFFFFFFFFFFC800180102001A -:102FD80000000000000001000000000000000000E8 -:102FE80000000000000000000000000000000000D9 -:102FF80000000000000000000000000000000000C9 -:1030080000000000000000FF0100000000000000B8 -:10301800000000000000FF27100032FF27100032D8 -:10302800FF27100032FF27100032000000000000C8 -:103038000000000000000000000000005201000035 -:103048000000000000000000FF27100032FF2710DA -:103058000032FF27100032FF271000320000000066 -:103068000000000000000000000000000000000058 -:103078000040004000400000E73BE73BE73B000022 -:10308800000000000000140000140000000E1400EE -:103098001400000014001400141000000C0C0C00A4 -:1030A80000041400000014000000140002100A00BC -:1030B8000A021400100208000A1400000202140098 -:1030C8000000FF0000FF000000B2FF00FF0000004A -:1030D800FF00FF00FFC80000999999000033FF0026 -:1030E800FFFFFF00FEFFFF000000000000001400CB -:1030F80000140000000E1400140000001400140056 -:10310800141000000C0C0C00000414000000140043 -:103118000000140002100A000A021400100208003D -:103128000A14000002021400080403000000FF0053 -:1031380000FF000000B2FF00FF000000FF00FF00DA -:10314800FFC80000999999000033FF00FFFFFF00B6 -:10315800FEFFFF000000FF0000FF000000B2FF00BC -:10316800FF000000FF00FF00FFC8000099999900C8 -:103178000033FF00FFFFFF00FEFFFF00000000001C -:103188000000140000140000000E140014000000D9 -:1031980014001400141000000C0C0C00000414009F -:1031A800000014000000140002100A000A021400B3 -:1031B800100208000A1400000202140008040300A8 +:102AF800000000000000000000000000F000006678 +:102B08001001313233343536374F4E4569F70000FE +:102B180000000000000000000000000000000000AD +:102B2800000000000000000000000000000000009D +:102B3800000000000000000000000000000000FF8E +:102B480001000000000000000000000080002000DC +:102B58000100010001000000000100000000000069 +:102B6800000000000000000000000000000000005D +:102B7800000100000000000000000000000000004C +:102B8800000000000000000000000000000000003D +:102B9800000000000000000000000000000000002D +:102BA800000000000000000000000000000000001D +:102BB800000000000000000000000000000000000D +:102BC80000000000000000000000000000000000FD +:102BD80000000000000000000000000000000000ED +:102BE80000000000000000000000000000000000DD +:102BF80000000000000000000100000101000000CA +:102C0800F00000661003313233343536374F4E4505 +:102C180069F70000F00000661001313233343536B0 +:102C2800374F4E4569F70000F00000661014563221 +:102C38002E3533F7000000000000000000000000FF +:102C4800000000000000000000000000000000007C +:102C5800000000000000000000000000000000006C +:102C6800000000FF010000004C617965720000005F +:102C78000000000000000000000000000602457689 +:102C8800656E7400000000000000000000000000F5 +:102C980000FFFFC800010000034E616D65000000E1 +:102CA800000000000000000000000000FFFF80009E +:102CB8000100000004427574746F6E00000000008B +:102CC80000000000000000000100060001060605E3 +:102CD800427574746F6E0000000000000000000070 +:102CE8000000000100020001010606074C656400AF +:102CF80000000000000000000000000000000002CA +:102D0800000500010101011C43616C696272617474 +:102D1800696F6E0000000000000000FFFF01000165 +:102D280001000000020E52474220506978656C008D +:102D38000000000000000000000200060000000083 +:102D4800031B417578204A61636B00000000000096 +:102D580000000000000700010001010203264C46A4 +:102D68004F0000000000000000000000000000000C +:102D780000FFFF01000100000305164F4C454420E9 +:102D8800446973706C61790000000000000008005D +:102D980006000000011D5072657365740000000094 +:102DA800000000000000000000FFFF4000010000DC +:102DB8001E5365744C697374000000000000000025 +:102DC80000000000FFFF08000100000020536F6EA4 +:102DD8006700000000000000000000000000000084 +:102DE800FFFF4000010000002254726967676572A6 +:102DF800000000000000000000000000FFFF0400C9 +:102E08000100000001022354656D706F20322054C8 +:102E180061700000000000000000FFFF02000100D8 +:102E28000121437573746F6D2053797345780000E1 +:102E38000000000000FFFF040001000001102554FD +:102E4800696D6564204576656E74000000000000B9 +:102E58000000FFFF020127536B6574636820427905 +:102E680074657300000000000000FFFF010001000E +:102E78000428506F727420507265736574000000E6 +:102E88000000000000FFFF10000100000129536846 +:102E98006F72746375747300000000000000000016 +:102EA80000FFFF0100010000FFFFFFFFFFFF840399 +:102EB8000A0000000000000000000000FFFFFFFF04 +:102EC800FFFF0000000000000000000000000000FC +:102ED8004000FFFFFFFFDC00B80100000E0000000B +:102EE800000000004100FFFFFFFF0802B8010000DA +:102EF8000E000100000000004200FFFFFFFF340346 +:102F0800B80100000E000200000000004300FFFFAF +:102F1800FFFF3403BE0000000E00030000000000A5 +:102F28004400FFFFFFFF0802BE0000000E0004007F +:102F3800000000004500FFFFFFFFDC00BE000000AE +:102F48000E000500000000001E00FFFFFFFF8002CA +:102F58001801042000000000010000001F00FFFF0E +:102F6800FFFFD0021801042000000000010000004B +:102F78001800FFFFFFFF7602860100000000000036 +:102F8800020000001900FFFFFFFF94028601000005 +:102F980000000000020000001A00FFFFFFFFB2025D +:102FA8008601000000000000020000001B00FFFF77 +:102FB800FFFFD002860100000000000002000000B0 +:102FC8001C00FFFFFFFFEE0286010000000000006A +:102FD80002000000FFFFFFFFFFFFF0003A020000C1 +:102FE8000400000001000000FFFFFFFFFFFF1C02BC +:102FF8003A0200000400010001000000FFFFFFFF8B +:10300800FFFF48033A02000004000200010000002C +:10301800FFFFFFFFFFFF3E037800000004000300EE +:1030280001000000FFFFFFFFFFFF1C027800000007 +:103038000400040001000000FFFFFFFFFFFFF00095 +:103048006E000000040005000100000017001600D3 +:10305800150062021E0000000000000000000000D1 +:10306800FFFFFFFFFFFFC8007C0102000000000017 +:1030780000000000FFFFFFFFFFFFF4017C010200DA +:103088000000000000000500FFFFFFFFFFFF200316 +:103098007C0102000000000000000400FFFFFFFFA9 +:1030A800FFFF2003180102000000000000000300D9 +:1030B800FFFFFFFFFFFFF4011801020000000000FE +:1030C80000000200FFFFFFFFFFFFC8001801020019 +:1030D80000000000000001000000000000000000E7 +:1030E80000000000000000000000000000000000D8 +:1030F80000000000000000000000000000000000C8 +:1031080000000000000000FF0100000000000000B7 +:10311800000000000000FF27100032FF27100032D7 +:10312800FF27100032FF27100032000000000000C7 +:103138000000000000000000000000005201000034 +:103148000000000000000000FF27100032FF2710D9 +:103158000032FF27100032FF271000320000000065 +:103168000000000000000000000000000000000057 +:103178000040004000400000E73BE73BE73B000021 +:10318800000000000000140000140000000E1400ED +:103198001400000014001400141000000C0C0C00A3 +:1031A80000041400000014000000140002100A00BB +:1031B8000A021400100208000A1400000202140097 :1031C8000000FF0000FF000000B2FF00FF00000049 :1031D800FF00FF00FFC80000999999000033FF0025 -:1031E800FFFFFF00FEFFFF0000190000359C0200F2 -:1031F80095AB02005FE2016074C00F40C0000000A0 -:10320800000000000200000050851F40010000007F -:10321800FF000000FF0000000000000000000000A8 -:10322800010000000200000054851F40010000005A -:10323800FF000000FF000000000000000000000088 -:10324800FF004000260018007C000000000000007D -:10325800003E5B4F5B3E3E6B4F6B3E1C3E7C3E1C14 -:10326800183C7E3C181C577D571C1C5E7F5E1C005A -:10327800183C1800FFE7C3E7FF0018241800FFE711 -:10328800DBE7FF30483A060E2629792926407F05D4 -:103298000507407F05253F5A3CE73C5A7F3E1C1CEA -:1032A80008081C1C3E7F14227F22145F5F005F5FAA -:1032B80006097F017F006689956A60606060609496 -:1032C800A2FFA29408047E040810207E201008089B -:1032D8002A1C08081C2A08081E101010100C1E0CA6 -:1032E8001E0C30383E3830060E3E0E060000000038 -:1032F8000000005F00000007000700147F147F141F -:10330800242A7F2A12231308646236495620500063 -:1033180008070300001C2241000041221C002A1C4F -:103328007F1C2A08083E080800807030000808083A -:103338000808000060600020100804023E5149455A -:103348003E00427F400072494949462141494D3378 -:103358001814127F1027454545393C4A49493141DF -:10336800211109073649494936464949291E0000AD -:103378001400000040340000000814224114141402 -:103388001414004122140802015909063E415D59EE -:103398004E7C1211127C7F494949363E41414122F7 -:1033A8007F4141413E7F494949417F090909013E21 -:1033B800414151737F0808087F00417F4100204048 -:1033C800413F017F081422417F404040407F021C5A -:1033D800027F7F0408107F3E4141413E7F09090971 -:1033E800063E4151215E7F0919294626494949323D -:1033F80003017F01033F4040403F1F2040201F3F03 -:103408004038403F63140814630304780403615987 -:10341800494D43007F4141410204081020004141C9 -:10342800417F040201020440404040400003070875 -:103438000020545478407F28444438384444442871 -:10344800384444287F385454541800087E09021818 -:10345800A4A49C787F0804047800447D40002040A0 -:10346800403D007F1028440000417F40007C0478E4 -:1034780004787C080404783844444438FC1824242C -:103488001818242418FC7C080404084854545424AC -:1034980004043F44243C4040207C1C2040201C3C29 -:1034A8004030403C44281028444C9090907C446420 -:1034B800544C4400083641000000770000004136B3 -:1034C800080002010204023C2623263C1EA1A16139 -:1034D800123A4040207A385454555921555579416B -:1034E8002254547842215554784020545579400C40 -:1034F8001E52721239555555593954545459395523 -:103508005454580000457C410002457D4200014565 -:103518007C407D1211127DF0282528F07C545545F9 -:10352800002054547C547C0A097F49324949493265 -:103538003A4444443A324A4848303A4141217A3A76 -:1035480042402078009DA0A07D3D4242423D3D4042 -:1035580040403D3C24FF2424487E4943662B2FFCF1 -:103568002F2BFF0929F620C0887E0903205454799F -:10357800410000447D413048484A32384040227A70 -:10358800007A0A0A727D0D19317D2629292F2826ED -:103598002929292630484D402038080808080808F5 -:1035A8000808382F10C8ACBA2F102834FA00007B4E -:1035B800000008142A142222142A14085500550061 -:1035C80055AA55AA55AAFF55FF55FF000000FF0050 -:1035D800101010FF00141414FF001010FF00FF104B -:1035E80010F010F0141414FC001414F700FF00007D -:1035F800FF00FF1414F404FC141417101F10101FFC -:10360800101F1414141F00101010F0000000001FE9 -:10361800101010101F10101010F010000000FF10F4 -:103628001010101010101010FF10000000FF1400F0 -:1036380000FF00FF00001F10170000FC04F4141422 -:103648001710171414F404F40000FF00F7141414EE -:1036580014141414F700F7141414171410101F106E -:103668001F141414F4141010F010F000001F101F91 -:103678000000001F14000000FC140000F010F010FF -:1036880010FF10FF141414FF141010101F00000076 -:1036980000F010FFFFFFFFFFF0F0F0F0F0FFFFFF7A -:1036A8000000000000FFFF0F0F0F0F0F38444438D1 -:1036B80044FC4A4A4A347E02020606027E027E0220 -:1036C80063554941633844443C04407E201E20062B -:1036D800027E020299A5E7A5991C2A492A1C4C7268 -:1036E80001724C304A4D4D303048784830BC625AEF -:1036F800463D3E494949007E0101017E2A2A2A2A7F -:103708002A44445F444440514A444040444A51405A -:103718000000FF0103E080FF000008086B6B08361B -:1037280012362436060F090F06000018180000008C -:103738001010003040FF0101001F01011E00191D7B -:103748001712003C3C3C3C0000000000424D433254 -:10375800344C433235363A3A626567696E00000088 -:1037680050430000434300004E4E000043682025AC -:1037780030327500257320253033750056202530EA -:1037880033750000736C6925752F25752F25750015 -:10379800253034753A202573000000002530337534 -:1037A8003A20257300000000253032753A20257331 -:1037B80000000000253031753A2025730000000014 -:1037C80054756E65720000004E6F7420436F6E6E04 -:1037D8006563746564000000312F3200554E444F14 -:1037E80000000000434C45415200000025640000E1 -:1037F80021212120496E76616C69642042616E6BDB -:103808002F5072657365740053776974636820502C -:1038180072657365742C2042616E6B3A000000007B -:103828005072657365743A00707265736574496E99 -:103838006465783A000000002573257520000000B3 -:103848002573257500000000424D4353746F726163 -:1038580067653A3A626567696E202832344C4332AC -:103868003536290032344C43323536204572726F72 -:103878007220313A6461746120746F6F206C6F6ECE -:103888006720746F2066697420696E207472616E97 -:10389800736D697420627566666572004368656356 -:1038A8006B2074686520776972696E6720746F2071 -:1038B800796F75722032344C43323536204368694B -:1038C8007000000032344C43323536204D75737425 -:1038D80020626520636F6E6E656374656420746F23 -:1038E800206932632050696E7300000032344C4303 -:1038F800323536204572726F7220323A72656365CE -:1039080069766564204E41434B206F6E2074726166 -:103918006E736D6974206F66206164647265737379 -:103928000000000032344C43323536204572726F45 -:103938007220333A207265636569766564204E416A -:10394800434B206F6E207472616E736D6974206FC3 -:10395800662064617461000032344C43323536208D -:103968004572726F7220343A206F746865722065F0 -:1039780072726F720000000032344C4332353620C8 -:103988004572726F72203F3F3F00000053657420FC -:1039980023202530327500005061727420232025C1 -:1039A80030327500536F6E67202320253032750042 -:1039B8005061727420230000536F6E67202300004B -:1039C800736F6E67496E4C696272617279000000AC -:1039D8002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A3F -:1039E8002A2A2A2A2A2A2A2A2A2A204245415442AD -:1039F800554444592053454E4420434F4D4D414E64 -:103A0800440000002A2A2A2A2A2A2A2A2A2A2A2A72 -:103A18002A2A2A2A2A2A2A2A2A2A2A2A2A2A2042F0 -:103A28004541544255444459205452414E534954F7 -:103A3800494F4E00426561744275646479204D496E -:103A4800444920436C6F636B206E6F74207265630A -:103A5800656976656400000074696D655369676E11 -:103A6800617475726554726967676572656428293F -:103A780000000000426561744275646479205061F9 -:103A880072740000426561744275646479205374ED -:103A98006172746564000000426561744275646413 -:103AA800792054696D65205369676E617475726514 -:103AB800000000002F000000427974652025303294 -:103AC80075000000427974652025303175000000CA -:103AD8004279746520300000427974652031000015 -:103AE8004279746520320000427974652033000001 -:103AF800424D434D696469436C6F636B3A3A617335 -:103B08007369676E42706D00776173004E45572088 -:103B180042504D0053746F70776174636820682C4D -:103B28006D2C732C74696D656F75740041200000ED -:103B380042620000422000004320000043230000AE -:103B48004420000045620000452000004620000097 -:103B58004623000047200000472300003F3F0000A5 -:103B6800213F402425213F402425213F4024252171 -:103B78003F402425213F402425213F402425213F43 -:103B8800402425213F402425213F402425210000B1 -:103B980050494E3A00000000697320696E76616CE6 -:103BA80069642C206D616B65207375726520796F6F -:103BB8007520636865636B20746861742074686538 -:103BC8002070696E2077617320646566696E65642C -:103BD80020696E20796F757220636F6E6669670061 -:103BE800424D432077696C6C2073746F7020726546 -:103BF80073706F6E64696E6700000000596F7520FE -:103C08004D5553542075706461746520796F7572D1 -:103C180020736B6574636820616E642F6F72206314 -:103C28006F6E6669672066696C6520616E642072D4 -:103C38006575706C6F61642069742E0043616E2035 -:103C48004E4F5420626520757365642077697468E7 -:103C580020506F7473206173206974206973204E3B -:103C68004F5420416E616C6F672043617061626CD4 -:103C780065206F722069732061204D555820706946 -:103C88006E00000043616E204E4F5420626520751F -:103C9800736564207769746820506F74732061734A -:103CA800206974206973204E4F54204469676974F1 -:103CB800616C2043617061626C65206F722069736A -:103CC8002061204D55582070696E00004261646182 -:103CD8007373204D49444920436F6E74726F6C6C46 -:103CE80065722028424D432900000000466F72206B -:103CF8006D6F726520696E666F20616E6420746FE7 -:103D080020646F776E6C6F61642F61636365737392 -:103D18002074686520456469746F72005669736918 -:103D2800742068747470733A2F2F7777772E526FD8 -:103D38007858787461722E636F6D2F424D4300007E -:103D4800424D4320444542554720697320656E61C2 -:103D5800626C656400000000596F752063616E2015 -:103D6800747970652068656C7020696E2074686568 -:103D78002053657269616C204D6F6E69746F7200B3 -:103D8800746F207365652061206C697374206F6699 -:103D980020636F6D6D616E647320617661696C611B -:103DA800626C652E000000004F6E636520796F75A8 -:103DB8002061726520646F6E65204465627567676F -:103DC800696E672064656C657465207468650000B9 -:103DD8006C696E65202723646566696E6520424DAF -:103DE800435F4445425547272066726F6D20796FBF -:103DF800757220636F6E666967000000436F6E74AA -:103E0800726F6C2043683A253032752043433A2557 -:103E180030337520563A2530337500004E6F74657F -:103E2800204F6E2043683A25303275204E3A2530AF -:103E3800337520563A2530337500000050726F678D -:103E480072616D2043683A253032752050433A2517 -:103E5800303375005553420053657269616C4100F7 -:103E680053657269616C420053657269616C430005 -:103E780053657269616C440055534220486F7374EE -:103E880000000000424C4500496E636F6D696E6723 -:103E980020436C6F636B00002A2A2A2053746172D6 -:103EA80074202A2A2A0000002A2A2A20436F6E74C6 -:103EB800696E7565202A2A2A000000002A2A2A200D -:103EC80053746F70202A2A2A00000000496E636F1D -:103ED8006D696E67000000002848455829202800B1 -:103EE80064617461313A000064617461323A0000BF -:103EF8006368616E6E656C3A0000000064657669FF -:103F08006365496400000000646576696365496E0D -:103F180064657800424D434374726C3A3A68617242 -:103F280064776172653A3A506F7443616C69627282 -:103F38006174696F6E000000506F742043616C6992 -:103F480062726174696F6E2043616E63656C6C6543 -:103F5800640000004C202575000000003E2046410A -:103F6800533320424144204352432028000000009C -:103F78004641533320436F6E6E656374696E672ED6 -:103F88002E2E0000417865204658204949490000F6 -:103F9800436F6E6E656374656420746F0000000083 -:103FA80046415333205072657365742052656365CA -:103FB8006976656400000000464153332053636509 -:103FC8006E652052656365697665640046415333C2 -:103FD800205363656E65204E616D6520526563658B -:103FE80069766564000000004641533320426C6FD7 -:103FF800636B732052656365697665640000000031 -:104008004641533320426C6F636B204368616E6E88 -:10401800656C205265636569766564002A2A2A2AD8 -:104028002A2A2A2A204C6F6F70657220000000002F -:104038002A2A2A2A2A2A2A2A202D205265636F72C0 -:1040480064696E67000000002A2A2A2A2A2A2A2A76 -:10405800202D20506C6179696E6700002A2A2A2A6F -:104068002A2A2A2A202D204F766572647562626991 -:104078006E6700002D2D3E20464153332054554E87 -:1040880045523A204F4E0000464153332054756E36 -:104098006572205265636569766564004368616E80 -:1040A800676520736F6E67004641533320426C6F1B -:1040B800636B20427970617373205265636569761A -:1040C80065640000434825752050432575000000AD -:1040D80043432325750000004348257520434325A5 -:1040E800752056257500000043482575204E257516 -:1040F8002056257500000000504954434800000030 -:10410800412E542E20504F4C59000000412E542E61 -:104118000000000050474D20424E4B005452494782 -:1041280047455200522E542E20424C4F434B00001C -:104138004D53422050474D004D5342204C534200AE -:104148004D5342204C53422050474D00424D434D61 -:1041580069646941637469766553656E7365205354 -:10416800746F70004143544956452053454E53459A -:104178000000000054415000424D4300454449545A -:104188004F5200005354415455530000484F535464 -:1041980000000000412E532E2053454E44000000DD -:1041A800412E532E2052454144000000522E542ED9 -:1041B80020494E00522E542E204F55540000000026 -:1041C800253032753A2530327500000053544F506F -:1041D80057415443480000004D49444920494F0085 -:1041E8005341564520454550524F4D003C00000074 -:1041F8003E00000044454300494E43004355535494 -:104208004F4D00004C415945520000004641532093 -:104218005052455345540000464153205343454EA0 -:104228004500000050524F4752414D00434F4E54F5 -:10423800524F4C0054595045520000004C464F20F4 -:10424800257500004C202530317500002A2A2A2ABD -:104258002A2A2A2A2A2A2A2A2A2A2A205343524F31 -:104268004C4C20505245534554202A2A2A2A2A2A9F -:104278002A2A2A2A2A2A2A2A2A00000050202530F7 -:104288003175000042414E4B00000000426B202572 -:104298003031750053455400537420253031750072 -:1042A800534F4E47000000005367202530327500F9 -:1042B80050415254000000005074202530317500E0 -:1042C800415558204A41434B000000004578702072 -:1042D800257500004374726C202575004E414D45CC -:1042E80000000000444157006576656E74207661D1 -:1042F8006C7565730000000050542025303375003C -:1043080050617274202530337500000042504D20F2 -:104318004465630042504D20496E630050617573D7 -:1043280065000000556E70617573650050617573A6 -:104338006520546F67676C65000000004472756DF6 -:104348002046696C6C0000004F757474726F000031 -:104358004D697820566F6C00485020566F6C0000ED -:10436800416363656E742048697400004472756D1A -:104378007365742053656C004E6F726D616C2054C8 -:10438800696D650048616C662054696D65000000C0 -:1043980048616C662054696D65205467676C6500D8 -:1043A800446F75626C652054696D650044626C6584 -:1043B8002054696D65205467676C6500466F6C64AE -:1043C800657220456E74657200000000536F6E6759 -:1043D800205363726F6C6C20446F776E000000008E -:1043E800536F6E67205363726F6C6C2055700000BA -:1043F8005472616E7320456E640000005472616EE1 -:1044080073205072657600005472616E73204E6599 -:104418007874000042454154425544445900000014 -:1044280042422042504D0000496E2054756E65008E -:1044380054554E45520000004F7574206F66205445 -:10444800756E6500466C617400000000466C61740E -:1044580074657200466C61747465737400000000C2 -:104468005368617270000000536861727065720071 -:10447800536861727065737400000000504C4159B4 -:10448800000000004C4F4F50455200005245430079 -:1044980044554200524556455253450048414C4602 -:1044A800000000004F4E434500000000522F442FEB -:1044B80050000000522F502F4400000053544F501A -:1044C80000000000532025303175000050202530B1 -:1044D80034750000424C4F434B00000025732025E3 -:1044E8007525730048454C49580000004858205429 -:1044F8004150000048582054554E4E455200000087 -:10450800534E202575000000534E20257520257533 -:1045180000000000446973636F6E6E6563746564C0 -:10452800000000003E3E3E20424D434175784A61FE -:10453800636B3A3A7570646174652829204175780F -:10454800204A61636B000000417578204A61636B03 -:1045580020506F7400000000646973706C617920EA -:1045680072656E6465722074696D6500424D434DD5 -:104578007578496E3A3A626567696E2829000000C5 -:10458800424D434D7578496E373448433136353A94 -:104598003A626567696E282900000000424D435F52 -:1045A8005345544C4953545F464C41475F50415220 -:1045B800545F524543414C4C00000000424D435467 -:1045C800726967676572733A3A6275696C644C69B7 -:1045D8007374656E6572732829200000424D435438 -:1045E800696D65644576656E74733A3A6275696C8F -:1045F800644C697374656E65727328292000000025 -:10460800446576696365204E616D653A0000000077 -:10461800424D4320486F6C6C79000000436F6D7009 -:10462800696C65642077697468205465656E737970 -:104638006475696E6F0000005465656E73792000BB -:10464800342E3000204020004D487A2028000000F9 -:1046580052414D3A00000000427974657300000031 -:10466800454550524F4D3A0053746F72653A0000F9 -:1046780055534220486F73743A000000596573001F -:10468800534420436172643A000000004861726438 -:10469800776172652053657269616C20506F72741E -:1046A800733A00004C4F4F500000000074696D656C -:1046B80064206576656E7400697320636F6D706C35 -:1046C800657465004C617965722025303375202545 -:1046D80073000000507265736574202530337520AF -:1046E800257300005365744C697374202530337545 -:1046F80020257300536F6E6720253033752025738E -:1047080000000000656469746F722E7265616479D7 -:10471800546F52656C6F61642829000072756E4C85 -:10472800617965724368616E676564003E3E3E3E2E -:104738003E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E91 -:10474800000000003C3C3C3C3C3C3C3C3C3C3C3C91 -:104758003C3C3C3C3C3C3C3C0000000042757474D2 -:104768006F6E0000476C6F62616C20427574746FE5 -:104778006E00000052454C454153452028416C7756 -:104788006179732900000000484F4C440000000084 -:10479800444F55424C4520505245535300000000A9 -:1047A800434F4E54494E554F55530000324E442006 -:1047B800505245535300000052454C454153452043 -:1047C800286F6E6C7920616674657220507265730B -:1047D8007329000052454C4541534520286F6E6CA3 -:1047E8007920616674657220486F6C642900000046 -:1047F80052454C4541534520286F6E6C79206166BF -:1048080074657220446F75626C65205072657373AD -:104818002900000052454C4541534520286F6E6CD5 -:104828007920616674657220436F6E74696E756F66 -:104838007573290052454C4541534520286F6E6CCD -:104848007920616674657220416C742050726573BA -:10485800732900005354415445204348414E47456D -:104868000000000042504D20253033750000000044 -:1048780070726F6772616D42616E6B00424D433AB0 -:104888003A626567696E0000424D43446973706C13 -:1048980061793A3A626567696E282900424D434456 -:1048A8006973706C617948616E646C657246617396 -:1048B8003A3A626567696E2829000000424D434D07 -:1048C8006964693A3A626567696E000020202020B1 -:1048D800424D434D696469506F72745365726961E2 -:1048E8006C3A3A626567696E00000000202020205B -:1048F80053657269616C4120626567696E28290099 -:104908002020202053657269616C422062656769C6 -:104918006E28290020202020424D434D69646950AB -:104928006F7274486F73743A3A626567696E000013 -:1049380020202020424D434D696469436C6F636BAE -:104948003A3A626567696E0020202020424D434D47 -:1049580069646941637469766553656E73653A3A4B -:10496800626567696E000000232323232323232322 -:1049780023232323232323232323232323232323FF -:1049880023232323232323232323232323232323EF -:104998002323232323230000424D4320496E6974B7 -:1049A80069616C20536574757020436F6D706C6518 -:1049B8007465210053594E43204F5054494F4E536C -:1049C8003A000000202D204441570000202D2046A9 -:1049D800415320284178652046582033290000009B -:1049E800202D2048454C495800000000202D204229 -:1049F8004541544255444459000000004641533350 -:104A08002053796E63206973206D65616E7420741C -:104A18006F2053796E632077697468207468652005 -:104A280041786520467820332C20464D3920616E28 -:104A38006420464D33000000486F77657665722024 -:104A480069742773206F6E6C79207465737465645C -:104A58002077697468207468652041786520465815 -:104A680020332E00496E206F7264657220746F20A7 -:104A780073796E6320796F75206D75737420747502 -:104A8800726E206F6E2053656E64205265616C747F -:104A9800696D652053797365780000004F6E207446 -:104AA80068652041786520465820332066726F6E0D -:104AB800742070616E656C20676F20746F3A000017 -:104AC8005345545550203E204D4944492F52656D59 -:104AD8006F7465203E2047454E4552414C203E208C -:104AE80053656E64205265616C74696D65205379F5 -:104AF80073657800424D43206C697374656E73204A -:104B0800746F207468652054656D706F20446F77EA -:104B18006E62656174206D65737361676520667286 -:104B28006F6D20746865204178652046582E000016 -:104B3800424D43206973206E6F77206C69737465EA -:104B48006E696E6720616E642077616974696E674B -:104B580020666F7220746865204178652046582069 -:104B68003320616E6E6F756E636520697473656C52 -:104B7800662E00004649525354206C6F6F702829E6 -:104B880000000000536574205365744C69737420E9 -:104B980023000000424D434D69646941637469769E -:104BA8006553656E7365205374617274000000006C -:104BB8004649525354206C6F6F70282920636F6DDB -:104BC800706C6574650000005472696767657220CF -:104BD800507265736574204368616E6765000000F4 -:104BE8003E3E3E006C6F6F70732F732C20467265CB -:104BF800652052414D3A00003C3C3C0074656D70A4 -:104C08006F4368616E67656428290000537769748B -:104C18006368696E6720746F204C61796572202320 -:104C28000000000068656C70000000002A2A2A2035 -:104C38004E6F74653A20576F726B20696E20507200 -:104C48006F6772657373202A2A2A0000766572736B -:104C5800696F6E203D20446973706C6179732074AC -:104C6800686520424D43204C6962726172792076F2 -:104C7800657273696F6E20616E6420746865205672 -:104C8800657273696F6E2073746F726520696E2028 -:104C9800454550524F4D000073746F7265203D209A -:104CA800446973706C6179732064657461696C73AD -:104CB800206F66207468652073746F7265206F6258 -:104CC8006A656374000000006275696C64203D20A9 -:104CD800446973706C617973206275696C642064CF -:104CE800657461696C730000626F617264203D20B5 -:104CF8005072696E7420426F61726420496E666FEB -:104D080000000000656570726F6D203D2044697376 -:104D1800706C61797320454550524F4D2E6C656E0D -:104D280067746828290000006F626A6563747320DD -:104D38003D20446973706C617973207468652073D1 -:104D4800697A6573206F66206D616E79206F626A7B -:104D580065637473207573656420627920424D43DE -:104D68000000000073796E63203D20446973706C05 -:104D7800617973207468652053796E632046656194 -:104D8800747572657320417661696C61626C650047 -:104D980070696E73203D20446973706C617973206B -:104DA8007468652070696E7320666F72206275740E -:104DB800746F6E732F6C6564732F706F74732F65C7 -:104DC8006E636F6465727300666173436F6E6E65C0 -:104DD8006374696F6E203D20546F67676C6520743B -:104DE800686520636F6E6E656374696F6E20737497 -:104DF800617465206F6620612046415320646576A2 -:104E0800696365006661734465627567203D205477 -:104E18006F67676C65204164646974696F6E616C63 -:104E280020646562756720696E666F726D6174696A -:104E38006F6E206F662073796E63656420464153F8 -:104E4800206465766963650073746F726167654491 -:104E580065627567203D205072696E7473207468AE -:104E6800652074696D652069742074616B657320B1 -:104E7800746F20726561642F77726974652F636C33 -:104E880065617220454550524F4D206576657279AF -:104E980074696D652074686520616374696F6E73E9 -:104EA8002068617070656E73000000006D65747233 -:104EB800696373203D205072696E747320736F6D3F -:104EC80065206D657472696373206F662074686508 -:104ED80020706572666F726D616E6365206F662003 -:104EE800424D43206C696B65206C6F6F7073207046 -:104EF8006572207365636F6E642C206574632E2061 -:104F080048617070656E73206576657279206F747C -:104F1800686572207365636F6E642E006E657874C1 -:104F28004C61796572203D20476F20746F206E6553 -:104F38007874206C61796572000000007072657683 -:104F48004C61796572203D20476F20746F20707224 -:104F58006576696F7573206C617965720000000071 -:104F68006D696469436C6F636B496E666F203D20A1 -:104F7800446973706C6179204D61737465722F5345 -:104F88006C61766520436C6F636B20496E666F00B9 -:104F98006D696469496E203D20546F67676C65735D -:104FA80020646973706C6179696E6720616C6C202C -:104FB800696E636F6D696E67204D494449204D6580 -:104FC80073736167657320286578636C75646573AE -:104FD80020436C6F636B29006D6964694F75742099 -:104FE8003D20546F67676C657320646973706C61EA -:104FF80079696E6720616C6C206F7574676F696E74 -:1050080067204D494449204D657373616765732076 -:10501800286578636C7564657320436C6F636B29CE -:10502800000000006D696469496E436C6F636B2012 -:105038003D20546F67676C657320646973706C6199 -:1050480079696E6720496E636F6D696E6720436C7E -:105058006F636B204D65737361676573202620410C -:1050680063746976652053656E736520286D69647D -:1050780069496E206D757374206265206F6E290012 -:105088006D6964694F7574436C6F636B203D205480 -:105098006F67676C657320646973706C6179696E9A -:1050A80067204F7574676F696E6720436C6F636B19 -:1050B800204D6573736167657320262041637469A9 -:1050C80076652053656E736520286D6964694F7530 -:1050D80074206D757374206265206F6E290000005E -:1050E800627574746F6E73203D20546F67676C65CA -:1050F8007320646973706C6179696E672062757476 -:10510800746F6E7320616374697669747900000046 -:1051180072756E54696D65203D20446973706C61C9 -:10512800797320686F77206C6F6E6720424D43203B -:10513800686173206265656E2072756E6E696E6750 -:105148002E00000073746F707761746368203D20CF -:10515800446973706C6179732053746F70776174EC -:10516800636820696E666F2E00000000666C7573B8 -:1051780068203D20666C757368206D6964692062DB -:105188007566666572732E00666173436F6E6E6531 -:105198006374696F6E0000002D2D3E204641533325 -:1051A80020446973636F6E6E65637400666173444F -:1051B80065627567000000004641532044656275CA -:1051C800673A0000666C75736800000073746F724C -:1051D80061676544656275670000000053746F720B -:1051E8006167652044656275673A000072756E54A0 -:1051F800696D65006D696C6C697328290000000091 -:105208007365636F6E6473006D696E7574657300A2 -:10521800686F7572730000006461797300000000A4 -:10522800706F747300000000706F7473206465629F -:105238007567000073746F707761746368000000AD -:1052480053746F70776174636820496E6163746921 -:105258007665000053746F707761746368204163EA -:10526800746976650000000053746F707761746329 -:105278006820436F6D706C6574650000626F6172C1 -:105288006400000073796E63000000006275747436 -:105298006F6E732064656275670000006D657472D7 -:1052A800696373007479706520226D65747269632F -:1052B800732220746F2073746F7020736565696E34 -:1052C8006720746869732E2E2E0000006D65747255 -:1052D800696373206172652073686F776E206576E5 -:1052E8006572792032207365636F6E647300000005 -:1052F800506C65617365206B65657020696E206D03 -:10530800696E642C206C6F6F7073207065722073E7 -:1053180065636F6E64206973206A75737420746F97 -:1053280020657374696D61746520686F77206661A4 -:10533800737420746865206C6F6F702829206675F7 -:105348006E6374696F6E2069732065786563757420 -:10535800696E6700536F6D65206665617475726567 -:1053680073206D617920696E637265617365206F62 -:10537800722064656372656173652074686973205F -:105388006E756D62657200006E6578744C61796542 -:1053980072000000707265764C61796572000000D9 -:1053A8006D696469436C6F636B496E666F000000DA -:1053B8004D61737465720000536C617665206C6989 -:1053C8007374656E696E6720746F00006D69646937 -:1053D800496E00006D696469496E436C6F636B00C8 -:1053E8006D6964694F7574006D6964694F757443BC -:1053F8006C6F636B0000000076657273696F6E00F6 -:10540800424D43204C69627261727920566572730D -:10541800696F6E00322E322E32000000424D43205A -:105428004C6962726172792056657273696F6E2079 -:1054380073746F72656420696E20454550524F4DF4 -:1054480020000000656570726F6D00004545505280 -:105458004F4D2073697A650062797465732E000078 -:105468006275696C64000000424D435F44455649CB -:1054780043455F4E414D453A00000000424D435FB1 -:10548800454449544F525F53595345585F49443A2C -:10549800000000003078000070696E7300000000A2 -:1054A800427574746F6E733A00000000476C6F6247 -:1054B800616C20427574746F6E733A00476C6F624A -:1054C800616C204C6564733A0000000073746F725D -:1054D8006500000073746F72652E76657273696F6C -:1054E8006E3A000020283220627974657329000022 -:1054F80073746F72652E6372633A00006279746523 -:105508007300000073746F72652E676C6F62616C54 -:105518000000000073746F72652E676C6F62616CB7 -:105528002E73657474696E677300000073746F720C -:10553800652E676C6F62616C2E707265736574732B -:105548000000000073746F72652E676C6F62616C87 -:105558002E707265736574735B305D0073746F725F -:10556800652E676C6F62616C2E736B65746368423D -:10557800797465730000000073746F72652E676C30 -:105588006F62616C2E637573746F6D5379734578B0 -:105598000000000073746F72652E676C6F62616C37 -:1055A8002E637573746F6D53797345785B305D0046 -:1055B80073746F72652E676C6F62616C2E7472699A -:1055C800676765727300000073746F72652E676C8D -:1055D8006F62616C2E74726967676572735B305DA8 -:1055E8000000000073746F72652E676C6F62616CE7 -:1055F8002E74696D65644576656E747300000000ED -:1056080073746F72652E676C6F62616C2E74696D4E -:1056180065644576656E74735B305D0073746F7294 -:10562800652E676C6F62616C2E74656D706F546F58 -:105638005461700073746F72652E676C6F62616C71 -:105648002E74656D706F546F5461705B305D00002F -:1056580073746F72652E676C6F62616C2E627574FD -:10566800746F6E730000000073746F72652E676C40 -:105678006F62616C2E627574746F6E735B305D005F -:1056880073746F72652E676C6F62616C2E627574CD -:10569800746F6E735B305D2E6576656E74735B3008 -:1056A8005D00000073746F72652E676C6F62616CC9 -:1056B8002E6C65647300000073746F72652E676CDE -:1056C8006F62616C2E6C6564735B305D0000000076 -:1056D80073746F72652E6C617965727300000000D7 -:1056E80073746F72652E6C61796572735B305D00DF -:1056F80073746F72652E6C61796572735B305D2EA1 -:10570800627574746F6E730073746F72652E6C615A -:10571800796572735B305D2E627574746F6E735B3E -:10572800305D000073746F72652E6C6179657273F9 -:105738005B305D2E627574746F6E735B305D2E65C1 -:1057480076656E74735B305D000000006F626A6599 -:105758006374730073697A656F6620424D43000075 -:1057680073697A656F6620424D434D69646900002C -:1057780073697A656F6620424D434D696469446177 -:105788007461000073697A656F6620424D43456411 -:1057980069746F720000000073697A656F66204251 -:1057A8004D434D696469436C6F636B0073697A6537 -:1057B8006F6620424D434D6964694163746976653B -:1057C80053656E736500000073697A656F662042E1 -:1057D8004D434265617442756464790073697A6502 -:1057E8006F6620424D4348656C69780073697A6535 -:1057F8006F6620424D43427574746F6E000000005E -:1058080062797465732C0000627974657320746F13 -:1058180074616C0073697A656F6620424D43506904 -:1058280078656C730000000073697A656F662042C2 -:105838004D434C65642028676C6F62616C290000D9 -:105848002121212121212121212121212121212140 -:105858002121212121212121212121212121212130 -:105868002121212121212121212121006973204E7B -:105878004F5420612076616C696420636F6D6D619F -:105888006E64000054797065202268656C7022206F -:10589800746F207669657720616C6C206176616928 -:1058A8006C61626C6520636F6D6D616E647300007E -:1058B8006E616E00696E66006F7666002D2D3E2063 -:1058C800464153332054554E45523A204F464600E0 -:1058D8002A2A2A2A2A2A2A2A2A2A2A0046415333E5 -:1058E80020526553796E63004641533320436F6EEF -:1058F8006E656374696F6E204C6F737421000000CD -:1059080043616E204E4F5420626520757365642094 -:1059180077697468204C454453206173206974206A -:105928006973204E4F54204469676974616C206F15 -:10593800722050574D2063617061626C65000000F1 -:105948004C4544206F6E2070696E000069732050CA -:10595800574D2043617061626C6500004F75746734 -:105968006F696E67204E6F7465204F6E00000000EF -:105978006E6F74653A00000076656C6F63697479C0 -:105988003A0000004F7574676F696E67204E6F7438 -:1059980065204F66660000004F7574676F696E6713 -:1059A800000000004F7574676F696E672050697456 -:1059B80063682042656E64004F7574676F696E672F -:1059C80020416674657220546F756368000000009A -:1059D80070726573737572653A0000004F7574676D -:1059E8006F696E6720536F6E672053656C656374CB -:1059F800696F6E00736F6E673A0000004F757467C9 -:105A08006F696E6720536F6E6720506F7369746992 -:105A18006F6E000062656174733A00004F757467B9 -:105A28006F696E6720436F6E74726F6C2043686194 -:105A38006E676500636F6E74726F6C3A00000000E9 -:105A480076616C75653A00004F7574676F696E67AB -:105A58002050726F6772616D204368616E676500E0 -:105A680070726F6772616D3A000000004F7574675D -:105A78006F696E6720416674657220546F7563683C -:105A880020506F6C790000004F7574676F696E67FE -:105A98002053797345780000256300004142434450 -:105AA80045464748494A4B4C4D4E4F505152535426 -:105AB80055565758595A616263646566000000007C -:105AC8005553422C2000000053657269616C412CCB -:105AD8002000000053657269616C422C20000000B0 -:105AE80053657269616C432C20000000536572692C -:105AF800616C442C2000000055534220486F737499 -:105B08002C200000424C452C20000000436C6F63A1 -:105B18006B0000005374617274000000436F6E7470 -:105B2800696E75650000000053746F700000000016 -:105B38005379734578000000436F6E74726F6C2060 -:105B48004368616E6765000050726F6772616D200F -:105B58004368616E676500004E6F7465204F6E0084 -:105B68004E6F7465204F66660000000041637469DB -:105B780076652053656E7365000000005069746394 -:105B8800682042656E640000416674657220546F37 -:105B980075636820506F6C79000000004166746579 -:105BA8007220546F7563680054696D6520436F6493 -:105BB800652051756172746572204672616D650069 -:105BC800536F6E6720506F736974696F6E000000C1 -:105BD800536F6E672053656C6563740054756E650A -:105BE80020526571756573740000000053797374F1 -:105BF800656D20526573657400000000556E6B6E0C -:105C08006F776E004F6666004F6E00006D73000080 -:105C1800757300006D6D0000636D00006465677248 -:105C2800656573007765656B730000002575202531 -:105C3800730000006CC00F40030000000E0D000050 -:105C4800B1690200220000001400000001000000F9 -:105C5800F4841F402300000014000000010000002D -:105C6800F8841F4025000000140000000100000017 -:105C7800F0841F4024000000140000000100000010 -:105C8800EC841F406CC00F4030000000100F000073 -:105C9800B1690200010000001700000000000000C8 -:105CA80014851F401A0000001200000001000000C7 -:105CB80018851F401B0000001200000001000000B2 -:105CC80010851F40000000001700000001000000C0 -:105CD8000C851F406CC00F40C0000000504F0000F2 -:105CE8008D6A02000C000000130000000000000094 -:105CF80024851F400B000000130000000000000076 -:105D080028851F400D00000013000000000000005F -:105D180020851F400A000000130000000100000059 -:105D28001C851F404D75782050696E3A00000000B0 -:105D380043616E204E4F5420626520757365642060 -:105D48007769746820627574746F6E73206173204C -:105D58006974206973204E4F5420612076616C6904 -:105D680064204D757820496E2050696E000000004F -:105D780043616E204E4F5420626520757365642020 -:105D88007769746820627574746F6E73206173200C -:105D98006974206973204E4F54204469676974619F -:105DA8006C2063617061626C65000000526561641B -:105DB800696E670032344C433235362052454144CF -:105DC800494E47004261636B75702043616E63659D -:105DD8006C656400416C726561647920436F6E6E16 -:105DE800656374656420746F20456469746F72001C -:105DF800436F6E6E656374696E6720746F204564C7 -:105E080069746F72206F6E00706167654E616D65B1 -:105E18004D6573736167653A20696E636F6D696E6E -:105E2800672E73697A652829000000002D2D2D2D15 -:105E38002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D8A -:105E48002D2D2D2D2D2D2D2D000000002020202062 -:105E5800202020204445564943455320444154417D -:105E68002020202020202020000000002A20697304 -:105E7800206861726477617265000000476C6F6228 -:105E8800616C20002E2E2E00454550524F4D204566 -:105E980052415345000000004552415345204F4BA5 -:105EA800000000004552415345204552524F5200D0 -:105EB8006368616E67652073746F726520616464DE -:105EC80072657373207265636569766564000000A6 -:105ED80053746F7265206368616E67656420746FC0 -:105EE800000000004261636B757020537461727426 -:105EF800656400004261636B757020436F6D706C60 -:105F080065746500424D435F454449544F525F46AE -:105F18004C41475F454449544F525F4645454442CA -:105F280041434B00424D435F474C4F42414C465F13 -:105F3800454449544F525F46455443485F434F4D8B -:105F4800504C455445000000464F524345443A20C2 -:105F5800446973636F6E6E656374696E67206672F9 -:105F68006F6D20456469746F722E2E2E20427965FC -:105F78002121000053657474696E6773204C656E47 -:105F88006774680072657175697265640000000065 -:105F98002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A59 -:105FA8002A2A2A20696E76616C696420646576699C -:105FB800636500002A2A2A2A2A2A2A2A2A2A2A2A19 -:105FC8002A2A2A2A2A2A2A20696E636F6D696E672F -:105FD8002E73697A6528290073797345784C656E44 -:105FE80067746800444F204E4F54205361766520F3 -:105FF800746F20616C6C206C6179657273000000AD -:106008005361766520746F20616C6C206C617965D2 -:10601800727300005570646174696E670000000057 -:1060280053746F72652E2E2E0000000032344C43DC -:106038003235362055504441544500002E205570C5 -:106048006461746564000000746F6F6B0000000089 -:106058006D696C6C697365636F6E64730000000032 -:106068006C617965724D6573736167654C617965BB -:1060780072436F707953776170000000494E564142 -:106088004C494420434845434B53554D20524543C2 -:1060980045495645440000002B2B2B2B2B2B2B2B33 -:1060A8002B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B38 -:1060B8002B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B28 -:1060C8002B2B2B00424D43456469746F723A3A6238 -:1060D8006567696E000000005468652073697A6519 -:1060E800206F6620626D6353746F726520686173F8 -:1060F80020657863656564656420746865207369E4 -:106108007A65206F6620454550524F4D00000000CB -:10611800526575706C6F616420796F757220736B4E -:1061280065746368207769746820612064696666AD -:106138006572656E7420636F6E66696700000000A3 -:106148002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2AA7 +:1031E800FFFFFF00FEFFFF000000000000001400CA +:1031F80000140000000E1400140000001400140055 +:10320800141000000C0C0C00000414000000140042 +:103218000000140002100A000A021400100208003C +:103228000A14000002021400080403000000FF0052 +:1032380000FF000000B2FF00FF000000FF00FF00D9 +:10324800FFC80000999999000033FF00FFFFFF00B5 +:10325800FEFFFF000000FF0000FF000000B2FF00BB +:10326800FF000000FF00FF00FFC8000099999900C7 +:103278000033FF00FFFFFF00FEFFFF00000000001B +:103288000000140000140000000E140014000000D8 +:1032980014001400141000000C0C0C00000414009E +:1032A800000014000000140002100A000A021400B2 +:1032B800100208000A1400000202140008040300A7 +:1032C8000000FF0000FF000000B2FF00FF00000048 +:1032D800FF00FF00FFC80000999999000033FF0024 +:1032E800FFFFFF00FEFFFF0000190000219D020004 +:1032F8007DAC02005FE2016074C00F40C0000000B6 +:10330800000000000200000050851F40010000007E +:10331800FF000000FF0000000000000000000000A7 +:10332800010000000200000054851F400100000059 +:10333800FF000000FF000000000000000000000087 +:10334800FF004000260018007C000000000000007C +:10335800003E5B4F5B3E3E6B4F6B3E1C3E7C3E1C13 +:10336800183C7E3C181C577D571C1C5E7F5E1C0059 +:10337800183C1800FFE7C3E7FF0018241800FFE710 +:10338800DBE7FF30483A060E2629792926407F05D3 +:103398000507407F05253F5A3CE73C5A7F3E1C1CE9 +:1033A80008081C1C3E7F14227F22145F5F005F5FA9 +:1033B80006097F017F006689956A60606060609495 +:1033C800A2FFA29408047E040810207E201008089A +:1033D8002A1C08081C2A08081E101010100C1E0CA5 +:1033E8001E0C30383E3830060E3E0E060000000037 +:1033F8000000005F00000007000700147F147F141E +:10340800242A7F2A12231308646236495620500062 +:1034180008070300001C2241000041221C002A1C4E +:103428007F1C2A08083E0808008070300008080839 +:103438000808000060600020100804023E51494559 +:103448003E00427F400072494949462141494D3377 +:103458001814127F1027454545393C4A49493141DE +:10346800211109073649494936464949291E0000AC +:103478001400000040340000000814224114141401 +:103488001414004122140802015909063E415D59ED +:103498004E7C1211127C7F494949363E41414122F6 +:1034A8007F4141413E7F494949417F090909013E20 +:1034B800414151737F0808087F00417F4100204047 +:1034C800413F017F081422417F404040407F021C59 +:1034D800027F7F0408107F3E4141413E7F09090970 +:1034E800063E4151215E7F0919294626494949323C +:1034F80003017F01033F4040403F1F2040201F3F02 +:103508004038403F63140814630304780403615986 +:10351800494D43007F4141410204081020004141C8 +:10352800417F040201020440404040400003070874 +:103538000020545478407F28444438384444442870 +:10354800384444287F385454541800087E09021817 +:10355800A4A49C787F0804047800447D400020409F +:10356800403D007F1028440000417F40007C0478E3 +:1035780004787C080404783844444438FC1824242B +:103588001818242418FC7C080404084854545424AB +:1035980004043F44243C4040207C1C2040201C3C28 +:1035A8004030403C44281028444C9090907C44641F +:1035B800544C4400083641000000770000004136B2 +:1035C800080002010204023C2623263C1EA1A16138 +:1035D800123A4040207A385454555921555579416A +:1035E8002254547842215554784020545579400C3F +:1035F8001E52721239555555593954545459395522 +:103608005454580000457C410002457D4200014564 +:103618007C407D1211127DF0282528F07C545545F8 +:10362800002054547C547C0A097F49324949493264 +:103638003A4444443A324A4848303A4141217A3A75 +:1036480042402078009DA0A07D3D4242423D3D4041 +:1036580040403D3C24FF2424487E4943662B2FFCF0 +:103668002F2BFF0929F620C0887E0903205454799E +:10367800410000447D413048484A32384040227A6F +:10368800007A0A0A727D0D19317D2629292F2826EC +:103698002929292630484D402038080808080808F4 +:1036A8000808382F10C8ACBA2F102834FA00007B4D +:1036B800000008142A142222142A14085500550060 +:1036C80055AA55AA55AAFF55FF55FF000000FF004F +:1036D800101010FF00141414FF001010FF00FF104A +:1036E80010F010F0141414FC001414F700FF00007C +:1036F800FF00FF1414F404FC141417101F10101FFB +:10370800101F1414141F00101010F0000000001FE8 +:10371800101010101F10101010F010000000FF10F3 +:103728001010101010101010FF10000000FF1400EF +:1037380000FF00FF00001F10170000FC04F4141421 +:103748001710171414F404F40000FF00F7141414ED +:1037580014141414F700F7141414171410101F106D +:103768001F141414F4141010F010F000001F101F90 +:103778000000001F14000000FC140000F010F010FE +:1037880010FF10FF141414FF141010101F00000075 +:1037980000F010FFFFFFFFFFF0F0F0F0F0FFFFFF79 +:1037A8000000000000FFFF0F0F0F0F0F38444438D0 +:1037B80044FC4A4A4A347E02020606027E027E021F +:1037C80063554941633844443C04407E201E20062A +:1037D800027E020299A5E7A5991C2A492A1C4C7267 +:1037E80001724C304A4D4D303048784830BC625AEE +:1037F800463D3E494949007E0101017E2A2A2A2A7E +:103808002A44445F444440514A444040444A514059 +:103818000000FF0103E080FF000008086B6B08361A +:1038280012362436060F090F06000018180000008B +:103838001010003040FF0101001F01011E00191D7A +:103848001712003C3C3C3C0000000000424D433253 +:10385800344C433235363A3A626567696E00000087 +:1038680050430000434300004E4E000043682025AB +:1038780030327500257320253033750056202530E9 +:1038880033750000736C6925752F25752F25750014 +:10389800253034753A202573000000002530337533 +:1038A8003A20257300000000253032753A20257330 +:1038B80000000000253031753A2025730000000013 +:1038C80054756E65720000004E6F7420436F6E6E03 +:1038D8006563746564000000312F3200554E444F13 +:1038E80000000000434C45415200000025640000E0 +:1038F80021212120496E76616C69642042616E6BDA +:103908002F5072657365740053776974636820502B +:1039180072657365742C2042616E6B3A000000007A +:103928005072657365743A00707265736574496E98 +:103938006465783A000000002573257520000000B2 +:103948002573257500000000424D4353746F726162 +:1039580067653A3A626567696E202832344C4332AB +:103968003536290032344C43323536204572726F71 +:103978007220313A6461746120746F6F206C6F6ECD +:103988006720746F2066697420696E207472616E96 +:10399800736D697420627566666572004368656355 +:1039A8006B2074686520776972696E6720746F2070 +:1039B800796F75722032344C43323536204368694A +:1039C8007000000032344C43323536204D75737424 +:1039D80020626520636F6E6E656374656420746F22 +:1039E800206932632050696E7300000032344C4302 +:1039F800323536204572726F7220323A72656365CD +:103A080069766564204E41434B206F6E2074726165 +:103A18006E736D6974206F66206164647265737378 +:103A28000000000032344C43323536204572726F44 +:103A38007220333A207265636569766564204E4169 +:103A4800434B206F6E207472616E736D6974206FC2 +:103A5800662064617461000032344C43323536208C +:103A68004572726F7220343A206F746865722065EF +:103A780072726F720000000032344C4332353620C7 +:103A88004572726F72203F3F3F00000053657420FB +:103A980023202530327500005061727420232025C0 +:103AA80030327500536F6E67202320253032750041 +:103AB8005061727420230000536F6E67202300004A +:103AC800736F6E67496E4C696272617279000000AB +:103AD8002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A3E +:103AE8002A2A2A2A2A2A2A2A2A2A204245415442AC +:103AF800554444592053454E4420434F4D4D414E63 +:103B0800440000002A2A2A2A2A2A2A2A2A2A2A2A71 +:103B18002A2A2A2A2A2A2A2A2A2A2A2A2A2A2042EF +:103B28004541544255444459205452414E534954F6 +:103B3800494F4E00426561744275646479204D496D +:103B4800444920436C6F636B206E6F742072656309 +:103B5800656976656400000074696D655369676E10 +:103B6800617475726554726967676572656428293E +:103B780000000000426561744275646479205061F8 +:103B880072740000426561744275646479205374EC +:103B98006172746564000000426561744275646412 +:103BA800792054696D65205369676E617475726513 +:103BB800000000002F000000427974652025303293 +:103BC80075000000427974652025303175000000C9 +:103BD8004279746520300000427974652031000014 +:103BE8004279746520320000427974652033000000 +:103BF800424D434D696469436C6F636B3A3A617334 +:103C08007369676E42706D00776173004E45572087 +:103C180042504D0053746F70776174636820682C4C +:103C28006D2C732C74696D656F75740041200000EC +:103C380042620000422000004320000043230000AD +:103C48004420000045620000452000004620000096 +:103C58004623000047200000472300003F3F0000A4 +:103C6800213F402425213F402425213F4024252170 +:103C78003F402425213F402425213F402425213F42 +:103C8800402425213F402425213F402425210000B0 +:103C980050494E3A00000000697320696E76616CE5 +:103CA80069642C206D616B65207375726520796F6E +:103CB8007520636865636B20746861742074686537 +:103CC8002070696E2077617320646566696E65642B +:103CD80020696E20796F757220636F6E6669670060 +:103CE800424D432077696C6C2073746F7020726545 +:103CF80073706F6E64696E6700000000596F7520FD +:103D08004D5553542075706461746520796F7572D0 +:103D180020736B6574636820616E642F6F72206313 +:103D28006F6E6669672066696C6520616E642072D3 +:103D38006575706C6F61642069742E0043616E2034 +:103D48004E4F5420626520757365642077697468E6 +:103D580020506F7473206173206974206973204E3A +:103D68004F5420416E616C6F672043617061626CD3 +:103D780065206F722069732061204D555820706945 +:103D88006E00000043616E204E4F5420626520751E +:103D9800736564207769746820506F747320617349 +:103DA800206974206973204E4F54204469676974F0 +:103DB800616C2043617061626C65206F7220697369 +:103DC8002061204D55582070696E00004261646181 +:103DD8007373204D49444920436F6E74726F6C6C45 +:103DE80065722028424D432900000000466F72206A +:103DF8006D6F726520696E666F20616E6420746FE6 +:103E080020646F776E6C6F61642F61636365737391 +:103E18002074686520456469746F72005669736917 +:103E2800742068747470733A2F2F7777772E526FD7 +:103E38007858787461722E636F6D2F424D4300007D +:103E4800424D4320444542554720697320656E61C1 +:103E5800626C656400000000596F752063616E2014 +:103E6800747970652068656C7020696E2074686567 +:103E78002053657269616C204D6F6E69746F7200B2 +:103E8800746F207365652061206C697374206F6698 +:103E980020636F6D6D616E647320617661696C611A +:103EA800626C652E000000004F6E636520796F75A7 +:103EB8002061726520646F6E65204465627567676E +:103EC800696E672064656C657465207468650000B8 +:103ED8006C696E65202723646566696E6520424DAE +:103EE800435F4445425547272066726F6D20796FBE +:103EF800757220636F6E666967000000436F6E74A9 +:103F0800726F6C2043683A253032752043433A2556 +:103F180030337520563A2530337500004E6F74657E +:103F2800204F6E2043683A25303275204E3A2530AE +:103F3800337520563A2530337500000050726F678C +:103F480072616D2043683A253032752050433A2516 +:103F5800303375005553420053657269616C4100F6 +:103F680053657269616C420053657269616C430004 +:103F780053657269616C440055534220486F7374ED +:103F880000000000424C4500496E636F6D696E6722 +:103F980020436C6F636B00002A2A2A2053746172D5 +:103FA80074202A2A2A0000002A2A2A20436F6E74C5 +:103FB800696E7565202A2A2A000000002A2A2A200C +:103FC80053746F70202A2A2A00000000496E636F1C +:103FD8006D696E67000000002848455829202800B0 +:103FE80064617461313A000064617461323A0000BE +:103FF8006368616E6E656C3A0000000064657669FE +:104008006365496400000000646576696365496E0C +:1040180064657800424D434374726C3A3A68617241 +:1040280064776172653A3A506F7443616C69627281 +:104038006174696F6E000000506F742043616C6991 +:1040480062726174696F6E2043616E63656C6C6542 +:10405800640000004C202575000000003E20464109 +:10406800533320424144204352432028000000009B +:104078004641533320436F6E6E656374696E672ED5 +:104088002E2E0000417865204658204949490000F5 +:10409800436F6E6E656374656420746F0000000082 +:1040A80046415333205072657365742052656365C9 +:1040B8006976656400000000464153332053636508 +:1040C8006E652052656365697665640046415333C1 +:1040D800205363656E65204E616D6520526563658A +:1040E80069766564000000004641533320426C6FD6 +:1040F800636B732052656365697665640000000030 +:104108004641533320426C6F636B204368616E6E87 +:10411800656C205265636569766564002A2A2A2AD7 +:104128002A2A2A2A204C6F6F70657220000000002E +:104138002A2A2A2A2A2A2A2A202D205265636F72BF +:1041480064696E67000000002A2A2A2A2A2A2A2A75 +:10415800202D20506C6179696E6700002A2A2A2A6E +:104168002A2A2A2A202D204F766572647562626990 +:104178006E6700002D2D3E20464153332054554E86 +:1041880045523A204F4E0000464153332054756E35 +:104198006572205265636569766564004368616E7F +:1041A800676520736F6E67004641533320426C6F1A +:1041B800636B204279706173732052656365697619 +:1041C80065640000434825752050432575000000AC +:1041D80043432325750000004348257520434325A4 +:1041E800752056257500000043482575204E257515 +:1041F800205625750000000050495443480000002F +:10420800412E542E20504F4C59000000412E542E60 +:104218000000000050474D20424E4B005452494781 +:1042280047455200522E542E20424C4F434B00001B +:104238004D53422050474D004D5342204C534200AD +:104248004D5342204C53422050474D00424D434D60 +:1042580069646941637469766553656E7365205353 +:10426800746F70004143544956452053454E534599 +:104278000000000054415000424D43004544495459 +:104288004F5200005354415455530000484F535463 +:1042980000000000412E532E2053454E44000000DC +:1042A800412E532E2052454144000000522E542ED8 +:1042B80020494E00522E542E204F55540000000025 +:1042C800253032753A2530327500000053544F506E +:1042D80057415443480000004D49444920494F0084 +:1042E8005341564520454550524F4D003C00000073 +:1042F8003E00000044454300494E43004355535493 +:104308004F4D00004C415945520000004641532092 +:104318005052455345540000464153205343454E9F +:104328004500000050524F4752414D00434F4E54F4 +:10433800524F4C0054595045520000004C464F20F3 +:10434800257500004C202530317500002A2A2A2ABC +:104358002A2A2A2A2A2A2A2A2A2A2A205343524F30 +:104368004C4C20505245534554202A2A2A2A2A2A9E +:104378002A2A2A2A2A2A2A2A2A00000050202530F6 +:104388003175000042414E4B00000000426B202571 +:104398003031750053455400537420253031750071 +:1043A800534F4E47000000005367202530327500F8 +:1043B80050415254000000005074202530317500DF +:1043C800415558204A41434B000000004578702071 +:1043D800257500004374726C202575004E414D45CB +:1043E80000000000444157006576656E74207661D0 +:1043F8006C7565730000000050542025303375003B +:1044080050617274202530337500000042504D20F1 +:104418004465630042504D20496E630050617573D6 +:1044280065000000556E70617573650050617573A5 +:104438006520546F67676C65000000004472756DF5 +:104448002046696C6C0000004F757474726F000030 +:104458004D697820566F6C00485020566F6C0000EC +:10446800416363656E742048697400004472756D19 +:104478007365742053656C004E6F726D616C2054C7 +:10448800696D650048616C662054696D65000000BF +:1044980048616C662054696D65205467676C6500D7 +:1044A800446F75626C652054696D650044626C6583 +:1044B8002054696D65205467676C6500466F6C64AD +:1044C800657220456E74657200000000536F6E6758 +:1044D800205363726F6C6C20446F776E000000008D +:1044E800536F6E67205363726F6C6C2055700000B9 +:1044F8005472616E7320456E640000005472616EE0 +:1045080073205072657600005472616E73204E6598 +:104518007874000042454154425544445900000013 +:1045280042422042504D0000496E2054756E65008D +:1045380054554E45520000004F7574206F66205444 +:10454800756E6500466C617400000000466C61740D +:1045580074657200466C61747465737400000000C1 +:104568005368617270000000536861727065720070 +:10457800536861727065737400000000504C4159B3 +:10458800000000004C4F4F50455200005245430078 +:1045980044554200524556455253450048414C4601 +:1045A800000000004F4E434500000000522F442FEA +:1045B80050000000522F502F4400000053544F5019 +:1045C80000000000532025303175000050202530B0 +:1045D80034750000424C4F434B00000025732025E2 +:1045E8007525730048454C49580000004858205428 +:1045F8004150000048582054554E4E455200000086 +:10460800534E202575000000534E20257520257532 +:1046180000000000446973636F6E6E6563746564BF +:10462800000000003E3E3E20424D434175784A61FD +:10463800636B3A3A7570646174652829204175780E +:10464800204A61636B000000417578204A61636B02 +:1046580020506F7400000000646973706C617920E9 +:1046680072656E6465722074696D6500424D434DD4 +:104678007578496E3A3A626567696E2829000000C4 +:10468800424D434D7578496E373448433136353A93 +:104698003A626567696E282900000000424D435F51 +:1046A8005345544C4953545F464C41475F5041521F +:1046B800545F524543414C4C00000000424D435466 +:1046C800726967676572733A3A6275696C644C69B6 +:1046D8007374656E6572732829200000424D435437 +:1046E800696D65644576656E74733A3A6275696C8E +:1046F800644C697374656E65727328292000000024 +:10470800446576696365204E616D653A0000000076 +:10471800424D4320486F6C6C79000000436F6D7008 +:10472800696C65642077697468205465656E73796F +:104738006475696E6F0000005465656E73792000BA +:10474800342E3000204020004D487A2028000000F8 +:1047580052414D3A00000000427974657300000030 +:10476800454550524F4D3A0053746F72653A0000F8 +:1047780055534220486F73743A000000596573001E +:10478800534420436172643A000000004861726437 +:10479800776172652053657269616C20506F72741D +:1047A800733A00004C4F4F500000000074696D656B +:1047B80064206576656E7400697320636F6D706C34 +:1047C800657465004C617965722025303375202544 +:1047D80073000000507265736574202530337520AE +:1047E800257300005365744C697374202530337544 +:1047F80020257300536F6E6720253033752025738D +:1048080000000000656469746F722E7265616479D6 +:10481800546F52656C6F61642829000072756E4C84 +:10482800617965724368616E676564003E3E3E3E2D +:104838003E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E90 +:10484800000000003C3C3C3C3C3C3C3C3C3C3C3C90 +:104858003C3C3C3C3C3C3C3C0000000042757474D1 +:104868006F6E0000476C6F62616C20427574746FE4 +:104878006E00000052454C454153452028416C7755 +:104888006179732900000000484F4C440000000083 +:10489800444F55424C4520505245535300000000A8 +:1048A800434F4E54494E554F55530000324E442005 +:1048B800505245535300000052454C454153452042 +:1048C800286F6E6C7920616674657220507265730A +:1048D8007329000052454C4541534520286F6E6CA2 +:1048E8007920616674657220486F6C642900000045 +:1048F80052454C4541534520286F6E6C79206166BE +:1049080074657220446F75626C65205072657373AC +:104918002900000052454C4541534520286F6E6CD4 +:104928007920616674657220436F6E74696E756F65 +:104938007573290052454C4541534520286F6E6CCC +:104948007920616674657220416C742050726573B9 +:10495800732900005354415445204348414E47456C +:104968000000000042504D20253033750000000043 +:1049780070726F6772616D42616E6B00424D433AAF +:104988003A626567696E0000424D43446973706C12 +:1049980061793A3A626567696E282900424D434455 +:1049A8006973706C617948616E646C657246617395 +:1049B8003A3A626567696E2829000000424D434D06 +:1049C8006964693A3A626567696E000020202020B0 +:1049D800424D434D696469506F72745365726961E1 +:1049E8006C3A3A626567696E00000000202020205A +:1049F80053657269616C4120626567696E28290098 +:104A080020202020424D434D696469506F727448DC +:104A18006F73743A3A626567696E0000202020203F +:104A2800424D434D696469506F7274426C653A3AFD +:104A3800626567696E00000020202020424D434DCA +:104A4800696469436C6F636B3A3A626567696E00C3 +:104A580020202020424D434D696469416374697682 +:104A68006553656E73653A3A626567696E00000062 +:104A780023232323232323232323232323232323FE +:104A880023232323232323232323232323232323EE +:104A98002323232323232323232323232323000024 +:104AA800424D4320496E697469616C205365747581 +:104AB8007020436F6D706C657465210053594E43C7 +:104AC800204F5054494F4E533A000000202D2044A7 +:104AD80041570000202D2046415320284178652069 +:104AE8004658203329000000202D2048454C4958BD +:104AF80000000000202D20424541544255444459AD +:104B080000000000464153332053796E63206973D7 +:104B1800206D65616E7420746F2053796E63207701 +:104B28006974682074686520417865204678203368 +:104B38002C20464D3920616E6420464D330000001C +:104B4800486F77657665722069742773206F6E6C7D +:104B58007920746573746564207769746820746853 +:104B6800652041786520465820332E00496E206F15 +:104B78007264657220746F2073796E6320796F7523 +:104B8800206D757374207475726E206F6E20536576 +:104B98006E64205265616C74696D65205379736524 +:104BA800780000004F6E20746865204178652046C3 +:104BB8005820332066726F6E742070616E656C20A9 +:104BC800676F20746F3A00005345545550203E20BB +:104BD8004D4944492F52656D6F7465203E20474505 +:104BE8004E4552414C203E2053656E64205265610B +:104BF8006C74696D6520537973657800424D432064 +:104C08006C697374656E7320746F207468652054C2 +:104C1800656D706F20446F776E62656174206D6595 +:104C280073736167652066726F6D207468652041D3 +:104C380078652046582E0000424D43206973206E47 +:104C48006F77206C697374656E696E6720616E6436 +:104C58002077616974696E6720666F722074686571 +:104C680020417865204658203320616E6E6F756E3E +:104C7800636520697473656C662E0000464952535B +:104C880054206C6F6F702829000000005365742051 +:104C98005365744C6973742023000000424D434DE2 +:104CA80069646941637469766553656E73652053F9 +:104CB80074617274000000004649525354206C6FAE +:104CC8006F70282920636F6D706C65746500000033 +:104CD8005472696767657220507265736574204302 +:104CE80068616E67650000003E3E3E006C6F6F7045 +:104CF800732F732C20467265652052414D3A00008F +:104D08003C3C3C0074656D706F4368616E67656418 +:104D180028290000537769746368696E6720746F87 +:104D2800204C6179657220230000000068656C7072 +:104D3800000000002A2A2A204E6F74653A20576F17 +:104D4800726B20696E2050726F6772657373202AC8 +:104D58002A2A000076657273696F6E203D204469C7 +:104D680073706C6179732074686520424D43204CE0 +:104D78006962726172792076657273696F6E2061FB +:104D88006E64207468652056657273696F6E20734F +:104D9800746F726520696E20454550524F4D000072 +:104DA80073746F7265203D20446973706C61797308 +:104DB8002064657461696C73206F6620746865206F +:104DC80073746F7265206F626A6563740000000017 +:104DD8006275696C64203D20446973706C617973F5 +:104DE800206275696C642064657461696C73000085 +:104DF800626F617264203D205072696E7420426F48 +:104E080061726420496E666F00000000656570720B +:104E18006F6D203D20446973706C6179732045453E +:104E280050524F4D2E6C656E67746828290000003B +:104E38006F626A65637473203D20446973706C61A6 +:104E48007973207468652073697A6573206F6620AA +:104E58006D616E79206F626A65637473207573651E +:104E68006420627920424D430000000073796E632C +:104E7800203D20446973706C6179732074686520E3 +:104E880053796E6320466561747572657320417647 +:104E980061696C61626C650070696E73203D2044C5 +:104EA8006973706C617973207468652070696E73BA +:104EB80020666F7220627574746F6E732F6C6564F0 +:104EC800732F706F74732F656E636F6465727300F0 +:104ED800626C654465627567203D20546F67676C36 +:104EE800657320424C45204D49444920446562750C +:104EF8006767696E672C20646973706C61797320C9 +:104F0800496E636F6D696E672F4F7574676F696E51 +:104F18006720424C45205061636B65742061727252 +:104F28006179732E00000000646973636F6E6E65AB +:104F38006374424C45203D20446973636F6E6E650F +:104F480063742074686520424C45204D6F64756C0D +:104F58006520696620636F6E6E65637465642E00F4 +:104F6800666173436F6E6E656374696F6E203D2072 +:104F7800546F67676C652074686520636F6E6E6533 +:104F88006374696F6E207374617465206F66206145 +:104F98002046415320646576696365006661734401 +:104FA80065627567203D20546F67676C65204164B2 +:104FB800646974696F6E616C2064656275672069E5 +:104FC8006E666F726D6174696F6E206F662073799B +:104FD8006E636564204641532064657669636500A5 +:104FE80073746F726167654465627567203D205010 +:104FF80072696E7473207468652074696D652069C0 +:10500800742074616B657320746F20726561642FFE +:1050180077726974652F636C6561722045455052DB +:105028004F4D20657665727974696D652074686581 +:1050380020616374696F6E732068617070656E7348 +:10504800000000006D657472696373203D20507222 +:10505800696E747320736F6D65206D657472696312 +:1050680073206F662074686520706572666F726D54 +:10507800616E6365206F6620424D43206C696B65E5 +:10508800206C6F6F707320706572207365636F6E2C +:10509800642C206574632E2048617070656E7320DF +:1050A8006576657279206F74686572207365636FC1 +:1050B8006E642E006E6578744C61796572203D20AF +:1050C800476F20746F206E657874206C6179657203 +:1050D80000000000707265764C61796572203D2091 +:1050E800476F20746F2070726576696F7573206CD6 +:1050F80061796572000000006D696469436C6F63D3 +:105108006B496E666F203D20446973706C6179202D +:105118004D61737465722F536C61766520436C6FB3 +:10512800636B20496E666F006D696469496E203D46 +:1051380020546F67676C657320646973706C61795C +:10514800696E6720616C6C20696E636F6D696E674C +:10515800204D494449204D65737361676573202864 +:105168006578636C7564657320436C6F636B2900A5 +:105178006D6964694F7574203D20546F67676C656D +:105188007320646973706C6179696E6720616C6CF7 +:10519800206F7574676F696E67204D494449204DCB +:1051A8006573736167657320286578636C756465DA +:1051B8007320436C6F636B29000000006D6964699C +:1051C800496E436C6F636B203D20546F67676C6555 +:1051D8007320646973706C6179696E6720496E63C6 +:1051E8006F6D696E6720436C6F636B204D657373D9 +:1051F800616765732026204163746976652053656D +:105208006E736520286D696469496E206D757374C5 +:10521800206265206F6E29006D6964694F7574435B +:105228006C6F636B203D20546F67676C65732064F7 +:105238006973706C6179696E67204F7574676F69FF +:105248006E6720436C6F636B204D65737361676590 +:10525800732026204163746976652053656E7365F3 +:1052680020286D6964694F7574206D7573742062A8 +:1052780065206F6E29000000627574746F6E73206C +:105288003D20546F67676C657320646973706C6147 +:1052980079696E6720627574746F6E7320616374C8 +:1052A800697669747900000072756E54696D6520BD +:1052B8003D20446973706C61797320686F77206C46 +:1052C8006F6E6720424D4320686173206265656E8A +:1052D8002072756E6E696E672E00000073746F70B1 +:1052E8007761746368203D20446973706C617973D9 +:1052F8002053746F70776174636820696E666F2ECF +:1053080000000000666C757368203D20666C75733C +:1053180068206D69646920627566666572732E001F +:10532800666173436F6E6E656374696F6E0000002B +:105338002D2D3E204641533320446973636F6E6EB2 +:1053480065637400666173446562756700000000F8 +:105358004641532044656275673A0000666C757370 +:105368006800000073746F726167654465627567F1 +:105378000000000053746F726167652044656275B0 +:10538800673A000072756E54696D65006D696C6CE2 +:1053980069732829000000007365636F6E647300E9 +:1053A8006D696E7574657300686F757273000000BF +:1053B8006461797300000000706F7473000000006E +:1053C800706F7473206465627567000073746F7022 +:1053D800776174636800000053746F707761746359 +:1053E8006820496E616374697665000053746F7054 +:1053F8007761746368204163746976650000000012 +:1054080053746F70776174636820436F6D706C6557 +:1054180074650000626F61726400000073796E63E6 +:1054280000000000627574746F6E732064656275A5 +:10543800670000006D657472696373007479706544 +:1054480020226D6574726963732220746F207374EF +:105458006F7020736565696E6720746869732E2E96 +:105468002E0000006D657472696373206172652097 +:1054780073686F776E206576657279203220736560 +:10548800636F6E6473000000506C65617365206B18 +:1054980065657020696E206D696E642C206C6F6F75 +:1054A800707320706572207365636F6E6420697312 +:1054B800206A75737420746F20657374696D6174E4 +:1054C8006520686F77206661737420746865206C46 +:1054D8006F6F7028292066756E6374696F6E206916 +:1054E8007320657865637574696E6700536F6D65C1 +:1054F800206665617475726573206D617920696EC7 +:10550800637265617365206F72206465637265619B +:1055180073652074686973206E756D62657200002A +:105528006E6578744C6179657200000070726576FA +:105538004C617965720000006D696469436C6F6342 +:105548006B496E666F0000004D61737465720000F0 +:10555800536C617665206C697374656E696E67203B +:10556800746F00006D696469496E00006D69646953 +:10557800496E436C6F636B006D6964694F757400A5 +:105588006D6964694F7574436C6F636B000000004C +:10559800626C65446562756700000000424C4520F6 +:1055A8004465627567000000646973636F6E6E65B9 +:1055B8006374424C4500000076657273696F6E0033 +:1055C800424D43204C69627261727920566572734C +:1055D800696F6E00322E322E32000000424D432099 +:1055E8004C6962726172792056657273696F6E20B8 +:1055F80073746F72656420696E20454550524F4D33 +:1056080020000000656570726F6D000045455052BE +:105618004F4D2073697A650062797465732E0000B6 +:105628006275696C64000000424D435F4445564909 +:1056380043455F4E414D453A00000000424D435FEF +:10564800454449544F525F53595345585F49443A6A +:10565800000000003078000070696E7300000000E0 +:10566800427574746F6E733A00000000476C6F6285 +:10567800616C20427574746F6E733A00476C6F6288 +:10568800616C204C6564733A0000000073746F729B +:105698006500000073746F72652E76657273696FAA +:1056A8006E3A000020283220627974657329000060 +:1056B80073746F72652E6372633A00006279746561 +:1056C8007300000073746F72652E676C6F62616C93 +:1056D8000000000073746F72652E676C6F62616CF6 +:1056E8002E73657474696E677300000073746F724B +:1056F800652E676C6F62616C2E707265736574736A +:105708000000000073746F72652E676C6F62616CC5 +:105718002E707265736574735B305D0073746F729D +:10572800652E676C6F62616C2E736B65746368427B +:10573800797465730000000073746F72652E676C6E +:105748006F62616C2E637573746F6D5379734578EE +:105758000000000073746F72652E676C6F62616C75 +:105768002E637573746F6D53797345785B305D0084 +:1057780073746F72652E676C6F62616C2E747269D8 +:10578800676765727300000073746F72652E676CCB +:105798006F62616C2E74726967676572735B305DE6 +:1057A8000000000073746F72652E676C6F62616C25 +:1057B8002E74696D65644576656E7473000000002B +:1057C80073746F72652E676C6F62616C2E74696D8D +:1057D80065644576656E74735B305D0073746F72D3 +:1057E800652E676C6F62616C2E74656D706F546F97 +:1057F8005461700073746F72652E676C6F62616CB0 +:105808002E74656D706F546F5461705B305D00006D +:1058180073746F72652E676C6F62616C2E6275743B +:10582800746F6E730000000073746F72652E676C7E +:105838006F62616C2E627574746F6E735B305D009D +:1058480073746F72652E676C6F62616C2E6275740B +:10585800746F6E735B305D2E6576656E74735B3046 +:105868005D00000073746F72652E676C6F62616C07 +:105878002E6C65647300000073746F72652E676C1C +:105888006F62616C2E6C6564735B305D00000000B4 +:1058980073746F72652E6C61796572730000000015 +:1058A80073746F72652E6C61796572735B305D001D +:1058B80073746F72652E6C61796572735B305D2EDF +:1058C800627574746F6E730073746F72652E6C6199 +:1058D800796572735B305D2E627574746F6E735B7D +:1058E800305D000073746F72652E6C617965727338 +:1058F8005B305D2E627574746F6E735B305D2E6500 +:1059080076656E74735B305D000000006F626A65D7 +:105918006374730073697A656F6620424D430000B3 +:1059280073697A656F6620424D434D69646900006A +:1059380073697A656F6620424D434D6964694461B5 +:105948007461000073697A656F6620424D4345644F +:1059580069746F720000000073697A656F6620428F +:105968004D434D696469436C6F636B0073697A6575 +:105978006F6620424D434D69646941637469766579 +:1059880053656E736500000073697A656F6620421F +:105998004D434265617442756464790073697A6540 +:1059A8006F6620424D4348656C69780073697A6573 +:1059B8006F6620424D43427574746F6E000000009C +:1059C80062797465732C0000627974657320746F52 +:1059D80074616C0073697A656F6620424D43506943 +:1059E80078656C730000000073697A656F66204201 +:1059F8004D434C65642028676C6F62616C29000018 +:105A0800212121212121212121212121212121217E +:105A1800212121212121212121212121212121216E +:105A28002121212121212121212121006973204EB9 +:105A38004F5420612076616C696420636F6D6D61DD +:105A48006E64000054797065202268656C702220AD +:105A5800746F207669657720616C6C206176616966 +:105A68006C61626C6520636F6D6D616E64730000BC +:105A78006E616E00696E66006F7666002D2D3E20A1 +:105A8800464153332054554E45523A204F4646001E +:105A98002A2A2A2A2A2A2A2A2A2A2A004641533323 +:105AA80020526553796E63004641533320436F6E2D +:105AB8006E656374696F6E204C6F7374210000000B +:105AC80043616E204E4F54206265207573656420D3 +:105AD80077697468204C45445320617320697420A9 +:105AE8006973204E4F54204469676974616C206F54 +:105AF800722050574D2063617061626C6500000030 +:105B08004C4544206F6E2070696E00006973205008 +:105B1800574D2043617061626C6500004F75746772 +:105B28006F696E67204E6F7465204F6E000000002D +:105B38006E6F74653A00000076656C6F63697479FE +:105B48003A0000004F7574676F696E67204E6F7476 +:105B580065204F66660000004F7574676F696E6751 +:105B6800000000004F7574676F696E672050697494 +:105B780063682042656E64004F7574676F696E676D +:105B880020416674657220546F75636800000000D8 +:105B980070726573737572653A0000004F757467AB +:105BA8006F696E6720536F6E672053656C65637409 +:105BB800696F6E00736F6E673A0000004F75746707 +:105BC8006F696E6720536F6E6720506F73697469D1 +:105BD8006F6E000062656174733A00004F757467F8 +:105BE8006F696E6720436F6E74726F6C20436861D3 +:105BF8006E676500636F6E74726F6C3A0000000028 +:105C080076616C75653A00004F7574676F696E67E9 +:105C18002050726F6772616D204368616E6765001E +:105C280070726F6772616D3A000000004F7574679B +:105C38006F696E6720416674657220546F7563687A +:105C480020506F6C790000004F7574676F696E673C +:105C5800205379734578000025630000414243448E +:105C680045464748494A4B4C4D4E4F505152535464 +:105C780055565758595A61626364656600000000BA +:105C88005553422C2000000053657269616C412C09 +:105C98002000000053657269616C422C20000000EE +:105CA80053657269616C432C20000000536572696A +:105CB800616C442C2000000055534220486F7374D7 +:105CC8002C200000424C452C20000000436C6F63E0 +:105CD8006B0000005374617274000000436F6E74AF +:105CE800696E75650000000053746F700000000055 +:105CF8005379734578000000436F6E74726F6C209F +:105D08004368616E6765000050726F6772616D204D +:105D18004368616E676500004E6F7465204F6E00C2 +:105D28004E6F7465204F6666000000004163746919 +:105D380076652053656E73650000000050697463D2 +:105D4800682042656E640000416674657220546F75 +:105D580075636820506F6C790000000041667465B7 +:105D68007220546F7563680054696D6520436F64D1 +:105D7800652051756172746572204672616D6500A7 +:105D8800536F6E6720506F736974696F6E000000FF +:105D9800536F6E672053656C6563740054756E6548 +:105DA800205265717565737400000000537973742F +:105DB800656D20526573657400000000556E6B6E4A +:105DC8006F776E004F6666004F6E00006D730000BF +:105DD800757300006D6D0000636D00006465677287 +:105DE800656573007765656B730000002575202570 +:105DF800730000006CC00F40030000000E0D00008F +:105E08009D6A02002200000014000000010000004A +:105E1800F4841F402300000014000000010000006B +:105E2800F8841F4025000000140000000100000055 +:105E3800F0841F402400000014000000010000004E +:105E4800EC841F406CC00F4030000000100F0000B1 +:105E58009D6A020001000000170000000000000019 +:105E680014851F401A000000120000000100000005 +:105E780018851F401B0000001200000001000000F0 +:105E880010851F40000000001700000001000000FE +:105E98000C851F406CC00F40C0000000504F000030 +:105EA800796B02000C0000001300000000000000E5 +:105EB80024851F400B0000001300000000000000B4 +:105EC80028851F400D00000013000000000000009E +:105ED80020851F400A000000130000000100000098 +:105EE8001C851F404D75782050696E3A00000000EF +:105EF80043616E204E4F542062652075736564209F +:105F08007769746820627574746F6E73206173208A +:105F18006974206973204E4F5420612076616C6942 +:105F280064204D757820496E2050696E000000008D +:105F380043616E204E4F542062652075736564205E +:105F48007769746820627574746F6E73206173204A +:105F58006974206973204E4F5420446967697461DD +:105F68006C2063617061626C650000005265616459 +:105F7800696E670032344C4332353620524541440D +:105F8800494E47004261636B75702043616E6365DB +:105F98006C656400416C726561647920436F6E6E54 +:105FA800656374656420746F20456469746F72005A +:105FB800436F6E6E656374696E6720746F20456405 +:105FC80069746F72206F6E00706167654E616D65F0 +:105FD8004D6573736167653A20696E636F6D696EAD +:105FE800672E73697A652829000000002D2D2D2D54 +:105FF8002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DC9 +:106008002D2D2D2D2D2D2D2D0000000020202020A0 +:1060180020202020444556494345532044415441BB +:106028002020202020202020000000002A20697342 +:10603800206861726477617265000000476C6F6266 +:10604800616C20002E2E2E00454550524F4D2045A4 +:1060580052415345000000004552415345204F4BE3 +:10606800000000004552415345204552524F52000E +:106078006368616E67652073746F7265206164641C +:1060880072657373207265636569766564000000E4 +:1060980053746F7265206368616E67656420746FFE +:1060A800000000004261636B757020537461727464 +:1060B800656400004261636B757020436F6D706C9E +:1060C80065746500424D435F454449544F525F46ED +:1060D8004C41475F454449544F525F464545444209 +:1060E80041434B00424D435F474C4F42414C465F52 +:1060F800454449544F525F46455443485F434F4DCA +:10610800504C455445000000464F524345443A2000 +:10611800446973636F6E6E656374696E6720667237 +:106128006F6D20456469746F722E2E2E204279653A +:106138002121000053657474696E6773204C656E85 +:1061480067746800726571756972656400000000A3 :106158002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A97 -:106168002A2A2A2A2A2A2A2A000000004564697451 -:106178006F72204C6F6164696E672073746F72650B -:10618800206174207365747570000000456469743B -:106198006F7220496E697469616C2073746F7265DF -:1061A800206C6F616420746F6F6B0000424D432058 -:1061B8004C6962726172792056657273696F6E20DC -:1061C800220000004C696272617279205665727310 -:1061D800696F6E2073746F72656420696E2045451F -:1061E80050524F4D2022000064657669636549640A -:1061F800203D000073746F72654164647265737347 -:10620800203D00002121212121212121212121219D -:106218002121212121212121212121212121212166 -:106228002121212121212121212121212121212156 -:1062380021210000454550524F4D2053746F72651F -:106248000000000043524320646964204E4F5420EC -:106258006D617463680000002C20424D435F435217 -:10626800433A00006973206265696E672045726170 -:106278007365642E000000004368616E67696E678D -:10628800204465766963652049442066726F6D0015 -:10629800424D43506978656C733A3A626567696E36 -:1062A8002829000020202020424D435F50495845AE -:1062B8004C5F4D41585F4252494748544E455353ED -:1062C8003A00000020202020424D435F50495845A5 -:1062D8004C5F44494D5F4252494748544E455353D9 -:1062E8003A0000000000000000000000F9820200EF -:1062F800C9000000A5820200CD0000009D820200B6 -:106308000000000000000000CD650200C19D0200F1 -:10631800DD840100E1840100E58401009D5702004D -:10632800A1570200D9570200B1570200C557020011 -:10633800F55A02009D57020015580200F588010021 -:1063480039880100C18701008D590200F157020008 -:10635800E9580200215A0200000000000000000075 -:10636800CD650200C19D0200DD840100E1840100C9 -:1063780075AD02009D570200A1570200D9570200CF -:10638800B1570200C5570200F55A02009D57020096 -:10639800155802001158020039580200915802009D -:1063A8008D590200F1570200E9580200215A0200F3 -:1063B8000000000000000000CD9A0200C19D02000C -:1063C800D195020021970200F19502008D960200F6 -:1063D800199602000000000000000000F982020087 -:1063E800C9000000A5820200CD0000009D820200C5 -:1063F8000000000000000000399D020005B70200FF -:1064080001B70200FDB60200F9B60200F5B60200B7 -:10641800F1B602000000000000000000B9510200BF -:10642800E5510200DD840100B551020071510200FE -:106438007D5102009D5102002C2066756E637469BF -:106448006F6E3A2000000000617373657274696FA3 -:106458006E2022257322206661696C65643A206685 -:10646800696C6520222573222C206C696E652025B5 -:1064780064257325730A000042616C6C6F63207396 -:106488007563636565646564000000002F566F6C72 -:10649800756D65732F646174612F6A656E6B696EC3 -:1064A800732F776F726B73706163652F474E552D2D -:1064B800746F6F6C636861696E2F61726D2D313115 -:1064C8002F7372632F6E65776C69622D63796777B6 -:1064D800696E2F6E65776C69622F6C6962632F73C2 -:1064E80074646C69622F6D707265632E63000000BE -:1064F800002020202020202020202828282828208C -:106508002020202020202020202020202020202083 -:1065180020881010101010101010101010101010EB -:1065280010040404040404040404041010101010DB -:1065380010104141414141410101010101010101A5 -:1065480001010101010101010101010110101010F7 -:106558001010424242424242020202020202020277 -:1065680002020202020202020202020210101010CB -:1065780020000000000000000000000000000000F3 -:106588000000000000000000000000000000000003 -:1065980000000000000000000000000000000000F3 -:1065A80000000000000000000000000000000000E3 -:1065B80000000000000000000000000000000000D3 -:1065C80000000000000000000000000000000000C3 -:1065D80000000000000000000000000000000000B3 -:1065E80000000000000000000000000000000000A3 -:1065F80000000000496E66696E6974790000000049 -:106608004E614E002F566F6C756D65732F64617403 -:10661800612F6A656E6B696E732F776F726B73701B -:106628006163652F474E552D746F6F6C63686169A0 -:106638006E2F61726D2D31312F7372632F6E6577F6 -:106648006C69622D63796777696E2F6E65776C69FF -:10665800622F6C6962632F7374646C69622F64744F -:106668006F612E6300000000494E46004E414E0007 -:1066780030313233343536373839616263646566B0 -:106688000000000030313233343536373839414272 -:106698004344454600000000286E756C6C290000D4 -:1066A8003000000020202020202020202020202032 -:1066B80020202020202020202020202020202020D2 -:1066C8002020202000000042C8801F40B8821F40C0 -:1066D8000800000000000042C4801F40B4821F4030 -:1066E8000400000000C0004224801F4014821F40A4 -:1066F8001000000000C0004228801F4018821F4080 -:106708002000000000C000422C801F401C821F4057 -:106718004000000000C0004234801F4024821F4017 -:10672800000100000040004264811F4054831F4064 -:10673800000400000040004280811F4070831F4019 -:1067480000000200004000427C811F406C831F4013 -:10675800000001000040004268811F4058831F402C -:1067680000080000004000423C811F402C831F406D -:10677800010000000040004244811F4034831F4054 -:10678800040000000040004240811F4030831F4049 -:10679800020000000040004248811F4038831F402B -:1067A800080000000000004204811F40F4821F40DE -:1067B800000004000000004208811F40F8821F40CA -:1067C800000008000000004218811F4008831F4095 -:1067D800000080000000004214811F4004831F4015 -:1067E800000040000000004200811F40F0821F406E -:1067F8000000020000000042FC801F40EC821F40A5 -:10680800000001000000004224811F4014831F4043 -:10681800000000040000004228811F4018831F4028 -:1068280000000008000000421C811F400C831F402C -:10683800000000010000004220811F4010831F401B -:106848000000000200000042EC801F40DC821F4074 -:106858000010000000000042F0801F40E0821F404E -:10686800002000000000004234811F4024831F40A4 -:10687800000000400000004238811F4028831F406C -:10688800000000800080004294801F4084821F40E6 -:106898000000040000C0004290801F4080821F401A -:1068A8000000008000800042A8801F4098821F409E -:1068B8000000800000800042A4801F4094821F4096 -:1068C80000004000004000426C811F405C831F4074 -:1068D8000010000000C0004230801F4020821F408E -:1068E8008000000000800042C8811F40B8831F401C -:1068F8000080000000800042C4811F40B4831F4014 -:106908000040000000800042C0811F40B0831F404B -:106918000020000000800042BC811F40AC831F4063 -:106928000010000000800042D0811F40C0831F403B -:106938000000020000800042CC811F40BC831F4041 -:106948000000010002000000030000000400000035 -:1069580006000000FB21F93FFB2109407CD91240C9 -:10696800FB2119407A6A1F407CD92240BBFD254093 -:10697800FB2129403A462C407A6A2F405C47314037 -:106988007CD932409C6B3440BBFD3540DB8F3740AF -:10699800FB2139401BB43A403A463C405AD83D4066 -:1069A8007A6A3F404C7E40405C4741406C10424010 -:1069B8007CD942408CA243409C6B4440AC34454057 -:1069C800BBFD4540CBC64640DB8F4740EB584840AF -:1069D800FB21494005000000190000007D0000006F -:1069E80007080C0B06050F000D0E0102838407082B -:1069F8000C0B06050F000D0E010283840101000433 -:106A080001000004013201010132020101100101FB -:106A1800011101010112010201030206010301062D -:106A2800011202020200000102020001020100013B -:106A380002100001022200010223000100000000F0 -:106A480000000000022100010220000100000000F7 -:106A580000000000013001010131010101020004C0 -:106A680001030004000000000000000001210201F1 -:106A780001210101000000000000000000000000EA -:106A880001100201010102010101010101000201DD -:106A98000100010101020201010201014C435F43AF -:106AA8004F4C4C41544500004C435F4354595045AA -:106AB800000000004C435F4D4F4E45544152590071 -:106AC8004C435F4E554D4552494300004C435F547B -:106AD800494D45004C435F4D45535341474553008D -:106AE80083F9A200444E6E00FC291500D1572700F7 -:106AF800DD34F50062DBC0003C999500419043000D -:106B08006351FE00BBDEAB00B761C5003A6E2400DE -:106B1800D24D42004906E00009EA2E001C92D1003D -:106B2800EB1DFE0029B11C00E83EA700F5358200E8 -:106B380044BB2E009CE98400B4267000417E5F00AF -:106B4800D6913900538339009CF439008B5F840057 -:106B580028F9BD00F81F3B00DEFF97000F980500DD -:106B6800112FEF000A5A8B006D1F6D00CF7E360083 -:106B780009CB2700464FB7009E663F002DEA5F000D -:106B8800BA277500E5EBC7003D7BF100F739070030 -:106B980092528A00FB6BEA001FB15F00085D8D000E -:106BA800300356007BFC4600F0AB6B0020BCCF00E6 -:106BB80036F49A00E3A91D005E619100081BE60007 -:106BC80085996500A0145F008D40680080D8FF009B -:106BD80027734D0006063100CA561500C9A8730070 -:106BE8007BE260006B8CC00000010000B451002003 -:106BF800120000000006000080E301600A000000A7 -:106C0800000200000CE301607300000000070000B0 -:106C180098E201607300000000220100C8510020C2 -:106C2800210000000021010068E301600900000064 -:106C38000003000094E20160000000000103090461 -:106C48007CE201600000000002030904EC5100200E -:106C580000000000030309040052002000000000A7 -:106C6800000000000000000000000000303030305C -:106C7800303030303030303030303030303030300C -:106C880030303030303030303030303000000000BC -:106C980000000000F4B800205CB90020C4B900204E -:106CA80000000000000000000000000000000000DC -:106CB80000000000000000000000000000000000CC -:106CC80000000000000000000000000000000000BC -:106CD80000000000000000000000000000000000AC -:106CE800000000000000000000000000000000009C -:106CF800000000000000000000000000000000008C -:106D0800000000000000000000000000000000007B -:106D1800000000000000000000000000000000006B -:106D2800000000000000000001000000000000005A -:106D38000E33CDAB34126DE6ECDE05000B0000001F -:106D4800000000000000000000000000000000003B -:106D5800000000000000000000000000000000002B -:106D6800000000000000000000000000000000001B -:106D7800000000000000000000000000000000000B -:106D880000000000000000000000000000000000FB -:106D980000000000000000000000000000000000EB -:106DA80000000000000000000000000000000000DB -:106DB8000029DE07007B9A17E84100200000000048 -:106DC800E80300000000000002150000B59C020066 -:106DD80099AB020060E2016068C00F40000000301B -:106DE8000F000000020000002C851F400100000079 -:106DF800FF000000FF00000000000000000000008D -:106E08000E0000000200000030851F400100000055 -:106E1800FF000000FF00000000000000000000006C -:106E2800130240002600180078000000B4B80020C3 -:106E3800801820200000000043000000000000002F -:106E4800000000000000000000000000000000003A -:106E580000000000000000004300000000000000E7 +:106168002A2A2A20696E76616C69642064657669DA +:10617800636500002A2A2A2A2A2A2A2A2A2A2A2A57 +:106188002A2A2A2A2A2A2A20696E636F6D696E676D +:106198002E73697A6528290073797345784C656E82 +:1061A80067746800444F204E4F5420536176652031 +:1061B800746F20616C6C206C6179657273000000EB +:1061C8005361766520746F20616C6C206C61796511 +:1061D800727300005570646174696E670000000096 +:1061E80053746F72652E2E2E0000000032344C431B +:1061F8003235362055504441544500002E20557004 +:106208006461746564000000746F6F6B00000000C7 +:106218006D696C6C697365636F6E64730000000070 +:106228006C617965724D6573736167654C617965F9 +:1062380072436F707953776170000000494E564180 +:106248004C494420434845434B53554D2052454300 +:1062580045495645440000002B2B2B2B2B2B2B2B71 +:106268002B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B76 +:106278002B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B66 +:106288002B2B2B00424D43456469746F723A3A6276 +:106298006567696E000000005468652073697A6557 +:1062A800206F6620626D6353746F72652068617336 +:1062B8002065786365656465642074686520736922 +:1062C8007A65206F6620454550524F4D000000000A +:1062D800526575706C6F616420796F757220736B8D +:1062E80065746368207769746820612064696666EC +:1062F8006572656E7420636F6E66696700000000E2 +:106308002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2AE5 +:106318002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2AD5 +:106328002A2A2A2A2A2A2A2A00000000456469748F +:106338006F72204C6F6164696E672073746F726549 +:106348002061742073657475700000004564697479 +:106358006F7220496E697469616C2073746F72651D +:10636800206C6F616420746F6F6B0000424D432096 +:106378004C6962726172792056657273696F6E201A +:10638800220000004C69627261727920566572734E +:10639800696F6E2073746F72656420696E2045455D +:1063A80050524F4D20220000646576696365496448 +:1063B800203D000073746F72654164647265737385 +:1063C800203D0000212121212121212121212121DC +:1063D80021212121212121212121212121212121A5 +:1063E8002121212121212121212121212121212195 +:1063F80021210000454550524F4D2053746F72655E +:106408000000000043524320646964204E4F54202A +:106418006D617463680000002C20424D435F435255 +:10642800433A00006973206265696E6720457261AE +:106438007365642E000000004368616E67696E67CB +:10644800204465766963652049442066726F6D0053 +:10645800424D43506978656C733A3A626567696E74 +:106468002829000020202020424D435F50495845EC +:106478004C5F4D41585F4252494748544E4553532B +:106488003A00000020202020424D435F50495845E3 +:106498004C5F44494D5F4252494748544E45535317 +:1064A8003A0000000000000000000000E583020040 +:1064B800C900000091830200CD000000898302001A +:1064C8000000000000000000B9660200AD9E020056 +:1064D800C1850100C5850100C985010089580200F0 +:1064E8008D580200C55802009D580200B15802009C +:1064F800E15B02008958020001590200D9890100B4 +:106508001D890100A5880100795A0200DD580200A2 +:10651800D55902000D5B02000000000000000000D9 +:10652800B9660200AD9E0200C1850100C585010063 +:106538005DAE0200895802008D580200C55802005D +:106548009D580200B1580200E15B02008958020020 +:1065580001590200FD580200255902007D59020028 +:10656800795A0200DD580200D55902000D5B02007D +:106578000000000000000000B99B0200AD9E020070 +:10658800BD9602000D980200DD9602007997020080 +:10659800059702000000000000000000E5830200EB +:1065A800C900000091830200CD0000008983020029 +:1065B8000000000000000000259E0200EDB7020068 +:1065C800E9B70200E5B70200E1B70200DDB7020053 +:1065D800D9B702000000000000000000A552020028 +:1065E800D1520200C1850100A15202005D52020091 +:1065F80069520200895202002C2066756E63746924 +:106608006F6E3A2000000000617373657274696FE1 +:106618006E2022257322206661696C65643A2066C3 +:10662800696C6520222573222C206C696E652025F3 +:1066380064257325730A000042616C6C6F632073D4 +:106648007563636565646564000000002F566F6CB0 +:10665800756D65732F646174612F6A656E6B696E01 +:10666800732F776F726B73706163652F474E552D6B +:10667800746F6F6C636861696E2F61726D2D313153 +:106688002F7372632F6E65776C69622D63796777F4 +:10669800696E2F6E65776C69622F6C6962632F7300 +:1066A80074646C69622F6D707265632E63000000FC +:1066B80000202020202020202020282828282820CA +:1066C80020202020202020202020202020202020C2 +:1066D800208810101010101010101010101010102A +:1066E800100404040404040404040410101010101A +:1066F80010104141414141410101010101010101E4 +:106708000101010101010101010101011010101035 +:1067180010104242424242420202020202020202B5 +:106728000202020202020202020202021010101009 +:106738002000000000000000000000000000000031 +:106748000000000000000000000000000000000041 +:106758000000000000000000000000000000000031 +:106768000000000000000000000000000000000021 +:106778000000000000000000000000000000000011 +:106788000000000000000000000000000000000001 +:1067980000000000000000000000000000000000F1 +:1067A80000000000000000000000000000000000E1 +:1067B80000000000496E66696E6974790000000087 +:1067C8004E614E002F566F6C756D65732F64617442 +:1067D800612F6A656E6B696E732F776F726B73705A +:1067E8006163652F474E552D746F6F6C63686169DF +:1067F8006E2F61726D2D31312F7372632F6E657735 +:106808006C69622D63796777696E2F6E65776C693D +:10681800622F6C6962632F7374646C69622F64748D +:106828006F612E6300000000494E46004E414E0045 +:1068380030313233343536373839616263646566EE +:1068480000000000303132333435363738394142B0 +:106858004344454600000000286E756C6C29000012 +:106868003000000020202020202020202020202070 +:106878002020202020202020202020202020202010 +:106888002020202000000042C8801F40B8821F40FE +:106898000800000000000042C4801F40B4821F406E +:1068A8000400000000C0004224801F4014821F40E2 +:1068B8001000000000C0004228801F4018821F40BE +:1068C8002000000000C000422C801F401C821F4096 +:1068D8004000000000C0004234801F4024821F4056 +:1068E800000100000040004264811F4054831F40A3 +:1068F800000400000040004280811F4070831F4058 +:1069080000000200004000427C811F406C831F4051 +:10691800000001000040004268811F4058831F406A +:1069280000080000004000423C811F402C831F40AB +:10693800010000000040004244811F4034831F4092 +:10694800040000000040004240811F4030831F4087 +:10695800020000000040004248811F4038831F4069 +:10696800080000000000004204811F40F4821F401C +:10697800000004000000004208811F40F8821F4008 +:10698800000008000000004218811F4008831F40D3 +:10699800000080000000004214811F4004831F4053 +:1069A800000040000000004200811F40F0821F40AC +:1069B8000000020000000042FC801F40EC821F40E3 +:1069C800000001000000004224811F4014831F4082 +:1069D800000000040000004228811F4018831F4067 +:1069E80000000008000000421C811F400C831F406B +:1069F800000000010000004220811F4010831F405A +:106A08000000000200000042EC801F40DC821F40B2 +:106A18000010000000000042F0801F40E0821F408C +:106A2800002000000000004234811F4024831F40E2 +:106A3800000000400000004238811F4028831F40AA +:106A4800000000800080004294801F4084821F4024 +:106A58000000040000C0004290801F4080821F4058 +:106A68000000008000800042A8801F4098821F40DC +:106A78000000800000800042A4801F4094821F40D4 +:106A880000004000004000426C811F405C831F40B2 +:106A98000010000000C0004230801F4020821F40CC +:106AA8008000000000800042C8811F40B8831F405A +:106AB8000080000000800042C4811F40B4831F4052 +:106AC8000040000000800042C0811F40B0831F408A +:106AD8000020000000800042BC811F40AC831F40A2 +:106AE8000010000000800042D0811F40C0831F407A +:106AF8000000020000800042CC811F40BC831F4080 +:106B08000000010002000000030000000400000073 +:106B180006000000FB21F93FFB2109407CD9124007 +:106B2800FB2119407A6A1F407CD92240BBFD2540D1 +:106B3800FB2129403A462C407A6A2F405C47314075 +:106B48007CD932409C6B3440BBFD3540DB8F3740ED +:106B5800FB2139401BB43A403A463C405AD83D40A4 +:106B68007A6A3F404C7E40405C4741406C1042404E +:106B78007CD942408CA243409C6B4440AC34454095 +:106B8800BBFD4540CBC64640DB8F4740EB584840ED +:106B9800FB21494005000000190000007D000000AD +:106BA80007080C0B06050F000D0E01028384070869 +:106BB8000C0B06050F000D0E010283840101000471 +:106BC800010000040132010101320201011001013A +:106BD800011101010112010201030206010301066C +:106BE800011202020200000102020001020100017A +:106BF800021000010222000102230001000000002F +:106C08000000000002210001022000010000000035 +:106C180000000000013001010131010101020004FE +:106C2800010300040000000000000000012102012F +:106C38000121010100000000000000000000000028 +:106C4800011002010101020101010101010002011B +:106C58000100010101020201010201014C435F43ED +:106C68004F4C4C41544500004C435F4354595045E8 +:106C7800000000004C435F4D4F4E455441525900AF +:106C88004C435F4E554D4552494300004C435F54B9 +:106C9800494D45004C435F4D4553534147455300CB +:106CA80083F9A200444E6E00FC291500D157270035 +:106CB800DD34F50062DBC0003C999500419043004B +:106CC8006351FE00BBDEAB00B761C5003A6E24001D +:106CD800D24D42004906E00009EA2E001C92D1007C +:106CE800EB1DFE0029B11C00E83EA700F535820027 +:106CF80044BB2E009CE98400B4267000417E5F00EE +:106D0800D6913900538339009CF439008B5F840095 +:106D180028F9BD00F81F3B00DEFF97000F9805001B +:106D2800112FEF000A5A8B006D1F6D00CF7E3600C1 +:106D380009CB2700464FB7009E663F002DEA5F004B +:106D4800BA277500E5EBC7003D7BF100F73907006E +:106D580092528A00FB6BEA001FB15F00085D8D004C +:106D6800300356007BFC4600F0AB6B0020BCCF0024 +:106D780036F49A00E3A91D005E619100081BE60045 +:106D880085996500A0145F008D40680080D8FF00D9 +:106D980027734D0006063100CA561500C9A87300AE +:106DA8007BE260006B8CC000000100007452002080 +:106DB800120000000006000080E301600A000000E5 +:106DC800000200000CE301607300000000070000EF +:106DD80098E2016073000000002201008852002040 +:106DE800210000000021010068E3016009000000A3 +:106DF8000003000094E201600000000001030904A0 +:106E08007CE201600000000002030904AC5200208B +:106E18000000000003030904C05200200000000025 +:106E2800000000000000000000000000303030309A +:106E3800303030303030303030303030303030304A +:106E480030303030303030303030303000000000FA +:106E58000000000014B900207CB90020E4B900202B :106E6800000000000000000000000000000000001A -:106E780000000000000000004300000000000000C7 +:106E7800000000000000000000000000000000000A :106E880000000000000000000000000000000000FA -:106E980000000000000000004300000000000000A7 +:106E980000000000000000000000000000000000EA :106EA80000000000000000000000000000000000DA -:106EB8000000000000000000430000000000000087 +:106EB80000000000000000000000000000000000CA :106EC80000000000000000000000000000000000BA -:106ED8000000000000000000430000000000000067 -:106EE800000000000000000000000000000000009A -:106EF8000000000000000000430000000000000047 +:106ED80000000000000000000000000000000000AA +:106EE8000000000000000000010000000000000099 +:106EF8000E33CDAB34126DE6ECDE05000B0000005E :106F08000000000000000000000000000000000079 -:106F180000000000000000001515030051EF0200FA -:106F280000000000E0420020B8300020583C00205B -:106F3800583C0020583C0020583C0020583C002079 -:106F4800583C0020583C0020583C0020583C002069 -:106F5800FFFFFFFFFFFFFFFFFFFFFFFFFFFF000037 -:106F680001004153434949000000000000000000AF -:106F78000000000000000000000000000000000009 -:106F88000000415343494900000000000000000090 -:106F980000000000000000000000000000000000E9 -:106FA800000000000000000000000000944D0020D8 -:106FB800944D00209C4D00209C4D0020A44D0020A5 -:106FC800A44D0020AC4D0020AC4D0020B44D002055 -:106FD800B44D0020BC4D0020BC4D0020C44D002005 -:106FE800C44D0020CC4D0020CC4D0020D44D0020B5 -:106FF800D44D0020DC4D0020DC4D0020E44D002065 -:10700800E44D0020EC4D0020EC4D0020F44D002014 -:10701800F44D0020FC4D0020FC4D0020044E0020C3 -:10702800044E00200C4E00200C4E0020144E002070 -:10703800144E00201C4E00201C4E0020244E002020 -:10704800244E00202C4E00202C4E0020344E0020D0 -:10705800344E00203C4E00203C4E0020444E002080 -:10706800444E00204C4E00204C4E0020544E002030 -:10707800544E00205C4E00205C4E0020644E0020E0 -:10708800644E00206C4E00206C4E0020744E002090 -:10709800744E00207C4E00207C4E0020844E002040 -:1070A800844E00208C4E00208C4E0020944E0020F0 -:1070B800944E00209C4E00209C4E0020A44E0020A0 -:1070C800A44E0020AC4E0020AC4E0020B44E002050 -:1070D800B44E0020BC4E0020BC4E0020C44E002000 -:1070E800C44E0020CC4E0020CC4E0020D44E0020B0 -:1070F800D44E0020DC4E0020DC4E0020E44E002060 -:10710800E44E0020EC4E0020EC4E0020F44E00200F -:10711800F44E0020FC4E0020FC4E0020044F0020BE -:10712800044F00200C4F00200C4F0020144F00206B -:10713800144F00201C4F00201C4F0020244F00201B -:10714800244F00202C4F00202C4F0020344F0020CB -:10715800344F00203C4F00203C4F0020444F00207B -:10716800444F00204C4F00204C4F0020544F00202B -:10717800544F00205C4F00205C4F0020644F0020DB -:10718800644F00206C4F00206C4F0020744F00208B -:10719800744F00207C4F00207C4F0020844F00203B -:1071A800844F00208C4F00208C4F0020944F0020EB -:1071B800944F00209C4F00209C4F0020A44F00209B -:1071C800A44F0020AC4F0020AC4F0020B44F00204B -:1071D800B44F0020BC4F0020BC4F0020C44F0020FB -:1071E800C44F0020CC4F0020CC4F0020D44F0020AB -:1071F800D44F0020DC4F0020DC4F0020E44F00205B -:10720800E44F0020EC4F0020EC4F0020F44F00200A -:10721800F44F0020FC4F0020FC4F002004500020B9 -:10722800045000200C5000200C5000201450002066 -:10723800145000201C5000201C5000202450002016 -:10724800245000202C5000202C50002034500020C6 -:10725800345000203C5000203C5000204450002076 -:10726800445000204C5000204C5000205450002026 -:10727800545000205C5000205C50002064500020D6 -:10728800645000206C5000206C5000207450002086 -:10729800745000207C5000207C5000208450002036 -:1072A800845000208C5000208C50002094500020E6 -:1072B800945000209C5000209C500020A450002096 -:1072C800A4500020AC500020AC500020B450002046 -:1072D800B4500020BC500020BC500020C4500020F6 -:1072E800C4500020CC500020CC500020D4500020A6 -:1072F800D4500020DC500020DC500020E450002056 -:10730800E4500020EC500020EC500020F450002005 -:10731800F4500020FC500020FC50002004510020B4 -:10732800045100200C5100200C5100201451002061 -:10733800145100201C5100201C5100202451002011 -:10734800245100202C5100202C51002034510020C1 -:10735800345100203C5100203C5100204451002071 -:10736800445100204C5100204C5100205451002021 -:10737800545100205C5100205C51002064510020D1 -:10738800645100206C5100206C5100207451002081 -:10739800745100207C5100207C5100208451002031 -:1073A800845100208C5100208C510020FFFFFFFFEA -:1073B800000002000000000003000000F4B80020F4 -:1073C800804A00201201000200000040C016850417 -:1073D800790201020301000006C9FF0904A15C75D6 -:1073E80008150026FF009540097581029520097649 -:1073F800910295040976B102C0000000140342000E -:107408004D004300200048006F006C006C007900BC -:107418000C03000000000000000000000000000055 -:10742800000000000000080100000000000000004B -:107438000000000000000000000000000000000044 -:107448000000000000000000000000000000000034 -:107458000000000000000000000000000000000024 -:107468000000000000000000000000000000000014 -:107478000000000000000000000000000000000004 -:1074880000000000000000000000000000000000F4 -:1074980000000000000000000000000000000000E4 -:1074A80000000000000000000000000000000000D4 -:1074B80000000000000000000000000000000000C4 -:1074C80000000000000000000000000000000000B4 -:1074D80000000000000000000000000000000000A4 -:1074E8000000000000000000000000000000000094 -:1074F8000000000000000000000000000000000084 -:107508000000000000000000000000000000000073 -:107518000000000000000000000000000000000063 -:107528000000000000000000000000000000000053 -:107538000000000000000000000000000000000043 -:107548000000000000000000000000000000000033 -:107558000000000000000000000000000000000023 -:107568000000000000000000000000000000000013 -:107578000000000000000000000000000000000003 -:1075880000000000000000000000000000000000F3 -:1075980000000000000000000000000000000000E3 -:1075A80000000000000000000000000000000000D3 -:1075B80000000000000000000000000000000000C3 -:1075C80000000000000000000000000000000000B3 -:1075D80000000000000000000000000000000000A3 -:1075E8000000000000000000000000000000000093 +:106F18000000000000000000000000000000000069 +:106F28000000000000000000000000000000000059 +:106F38000000000000000000000000000000000049 +:106F48000000000000000000000000000000000039 +:106F58000000000000000000000000000000000029 +:106F68000000000000000000000000000000000019 +:106F78000029DE07007B9A17A842002000000000C5 +:106F8800E80300000000000002150000A19D0200B7 +:106F980081AC020060E2016068C00F400000003070 +:106FA8000F000000020000002C851F4001000000B7 +:106FB800FF000000FF0000000000000000000000CB +:106FC8000E0000000200000030851F400100000094 +:106FD800FF000000FF0000000000000000000000AB +:106FE800130240002600180078000000D4B80020E2 +:106FF800801820200000000043000000000000006E +:107008000000000000000000000000000000000078 +:107018000000000000000000430000000000000025 +:107028000000000000000000000000000000000058 +:107038000000000000000000430000000000000005 +:107048000000000000000000000000000000000038 +:1070580000000000000000004300000000000000E5 +:107068000000000000000000000000000000000018 +:1070780000000000000000004300000000000000C5 +:1070880000000000000000000000000000000000F8 +:1070980000000000000000004300000000000000A5 +:1070A80000000000000000000000000000000000D8 +:1070B8000000000000000000430000000000000085 +:1070C80000000000000000000000000000000000B8 +:1070D80000000000000000001516030051F0020037 +:1070E80000000000A043002050310020183D00207F +:1070F800183D0020183D0020183D0020183D0020B4 +:10710800183D0020183D0020183D0020183D0020A3 +:10711800FFFFFFFFFFFFFFFFFFFFFFFFFFFF000075 +:1071280001004153434949000000000000000000ED +:107138000000000000000000000000000000000047 +:1071480000004153434949000000000000000000CE +:107158000000000000000000000000000000000027 +:10716800000000000000000000000000544E002055 +:10717800544E00205C4E00205C4E0020644E0020DF +:10718800644E00206C4E00206C4E0020744E00208F +:10719800744E00207C4E00207C4E0020844E00203F +:1071A800844E00208C4E00208C4E0020944E0020EF +:1071B800944E00209C4E00209C4E0020A44E00209F +:1071C800A44E0020AC4E0020AC4E0020B44E00204F +:1071D800B44E0020BC4E0020BC4E0020C44E0020FF +:1071E800C44E0020CC4E0020CC4E0020D44E0020AF +:1071F800D44E0020DC4E0020DC4E0020E44E00205F +:10720800E44E0020EC4E0020EC4E0020F44E00200E +:10721800F44E0020FC4E0020FC4E0020044F0020BD +:10722800044F00200C4F00200C4F0020144F00206A +:10723800144F00201C4F00201C4F0020244F00201A +:10724800244F00202C4F00202C4F0020344F0020CA +:10725800344F00203C4F00203C4F0020444F00207A +:10726800444F00204C4F00204C4F0020544F00202A +:10727800544F00205C4F00205C4F0020644F0020DA +:10728800644F00206C4F00206C4F0020744F00208A +:10729800744F00207C4F00207C4F0020844F00203A +:1072A800844F00208C4F00208C4F0020944F0020EA +:1072B800944F00209C4F00209C4F0020A44F00209A +:1072C800A44F0020AC4F0020AC4F0020B44F00204A +:1072D800B44F0020BC4F0020BC4F0020C44F0020FA +:1072E800C44F0020CC4F0020CC4F0020D44F0020AA +:1072F800D44F0020DC4F0020DC4F0020E44F00205A +:10730800E44F0020EC4F0020EC4F0020F44F002009 +:10731800F44F0020FC4F0020FC4F002004500020B8 +:10732800045000200C5000200C5000201450002065 +:10733800145000201C5000201C5000202450002015 +:10734800245000202C5000202C50002034500020C5 +:10735800345000203C5000203C5000204450002075 +:10736800445000204C5000204C5000205450002025 +:10737800545000205C5000205C50002064500020D5 +:10738800645000206C5000206C5000207450002085 +:10739800745000207C5000207C5000208450002035 +:1073A800845000208C5000208C50002094500020E5 +:1073B800945000209C5000209C500020A450002095 +:1073C800A4500020AC500020AC500020B450002045 +:1073D800B4500020BC500020BC500020C4500020F5 +:1073E800C4500020CC500020CC500020D4500020A5 +:1073F800D4500020DC500020DC500020E450002055 +:10740800E4500020EC500020EC500020F450002004 +:10741800F4500020FC500020FC50002004510020B3 +:10742800045100200C5100200C5100201451002060 +:10743800145100201C5100201C5100202451002010 +:10744800245100202C5100202C51002034510020C0 +:10745800345100203C5100203C5100204451002070 +:10746800445100204C5100204C5100205451002020 +:10747800545100205C5100205C51002064510020D0 +:10748800645100206C5100206C5100207451002080 +:10749800745100207C5100207C5100208451002030 +:1074A800845100208C5100208C51002094510020E0 +:1074B800945100209C5100209C510020A451002090 +:1074C800A4510020AC510020AC510020B451002040 +:1074D800B4510020BC510020BC510020C4510020F0 +:1074E800C4510020CC510020CC510020D4510020A0 +:1074F800D4510020DC510020DC510020E451002050 +:10750800E4510020EC510020EC510020F4510020FF +:10751800F4510020FC510020FC51002004520020AE +:10752800045200200C5200200C520020145200205B +:10753800145200201C5200201C520020245200200B +:10754800245200202C5200202C52002034520020BB +:10755800345200203C5200203C520020445200206B +:10756800445200204C5200204C520020FFFFFFFFE5 +:1075780000000200000000000300000014B9002011 +:10758800404B00201201000200000040C016850494 +:10759800790201020301000006C9FF0904A15C7514 +:1075A80008150026FF009540097581029520097687 +:1075B800910295040976B102C0000000140342004C +:1075C8004D004300200048006F006C006C007900FB +:1075D8000C03000000000000000000000000000094 +:1075E800000000000000080100000000000000008A :1075F8000000000000000000000000000000000083 :107608000000000000000000000000000000000072 :107618000000000000000000000000000000000062 @@ -22421,22 +22421,22 @@ :1078A80000000000000000000000000000000000D0 :1078B80000000000000000000000000000000000C0 :1078C80000000000000000000000000000000000B0 -:1078D800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 -:1078E800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 -:1078F800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 -:10790800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F -:10791800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F -:10792800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F -:10793800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F -:10794800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F -:10795800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F -:10796800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F -:10797800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F -:10798800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -:10799800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF -:1079A800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF -:1079B800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF -:1079C800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +:1078D80000000000000000000000000000000000A0 +:1078E8000000000000000000000000000000000090 +:1078F8000000000000000000000000000000000080 +:10790800000000000000000000000000000000006F +:10791800000000000000000000000000000000005F +:10792800000000000000000000000000000000004F +:10793800000000000000000000000000000000003F +:10794800000000000000000000000000000000002F +:10795800000000000000000000000000000000001F +:10796800000000000000000000000000000000000F +:1079780000000000000000000000000000000000FF +:1079880000000000000000000000000000000000EF +:1079980000000000000000000000000000000000DF +:1079A80000000000000000000000000000000000CF +:1079B80000000000000000000000000000000000BF +:1079C80000000000000000000000000000000000AF :1079D800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF :1079E800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F :1079F800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F diff --git a/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.lst b/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.lst index 07185d9..4cac0aa 100644 --- a/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.lst +++ b/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.lst @@ -190,7 +190,7 @@ static void memory_clear(uint32_t *dest, uint32_t *dest_end) CCM_ANALOG_PFD_480 = 0x13110D0C; // PFD0:720, PFD1:664, PFD2:508, PFD3:454 MHz 6000152e: f8c6 a0f0 str.w sl, [r6, #240] ; 0xf0 set_arm_clock(F_CPU); -60001532: f000 fb7d bl 60001c30 <__set_arm_clock_veneer> +60001532: f000 fb69 bl 60001c08 <__set_arm_clock_veneer> CCM_CCGR1 |= CCM_CCGR1_PIT(CCM_CCGR_ON); 60001536: f8d8 106c ldr.w r1, [r8, #108] ; 0x6c PIT_MCR = 0; @@ -234,7 +234,7 @@ static void memory_clear(uint32_t *dest, uint32_t *dest_end) analog_init(); 6000157c: f000 f926 bl 600017cc pwm_init(); -60001580: f000 fb3e bl 60001c00 <__pwm_init_veneer> +60001580: f000 fb46 bl 60001c10 <__pwm_init_veneer> tempmon_init(); 60001584: f000 f9fe bl 60001984 startup_middle_hook(); @@ -260,37 +260,37 @@ static inline uint32_t millis(void) startup_late_hook(); 600015a2: f000 f941 bl 60001828 __libc_init_array(); -600015a6: f000 fb33 bl 60001c10 <____libc_init_array_veneer> +600015a6: f000 fb3f bl 60001c28 <____libc_init_array_veneer> main(); -600015aa: f000 fb39 bl 60001c20 <__main_veneer> +600015aa: f000 fb29 bl 60001c00 <__main_veneer> while (1) asm("WFI"); 600015ae: bf30 wfi 600015b0: e7fd b.n 600015ae 600015b2: bf00 nop 600015b4: 400d8000 .word 0x400d8000 -600015b8: 00033e88 .word 0x00033e88 +600015b8: 00033f88 .word 0x00033f88 600015bc: 6001e38c .word 0x6001e38c 600015c0: 00000000 .word 0x00000000 600015c4: 200056c0 .word 0x200056c0 -600015c8: 60052218 .word 0x60052218 +600015c8: 60052318 .word 0x60052318 600015cc: 20000000 .word 0x20000000 -600015d0: 2000bcc0 .word 0x2000bcc0 +600015d0: 2000bce0 .word 0x2000bce0 600015d4: 200056c0 .word 0x200056c0 600015d8: 20005400 .word 0x20005400 -600015dc: 0002ab9d .word 0x0002ab9d +600015dc: 0002ac85 .word 0x0002ac85 600015e0: e000e400 .word 0xe000e400 600015e4: e000e4a0 .word 0xe000e4a0 600015e8: 400ac000 .word 0x400ac000 -600015ec: 000295ad .word 0x000295ad -600015f0: 2000bae4 .word 0x2000bae4 -600015f4: 000295b1 .word 0x000295b1 +600015ec: 00029699 .word 0x00029699 +600015f0: 2000bb04 .word 0x2000bb04 +600015f4: 0002969d .word 0x0002969d 600015f8: 20200000 .word 0x20200000 600015fc: e0001000 .word 0xe0001000 60001600: 08f0d180 .word 0x08f0d180 60001604: 40084000 .word 0x40084000 60001608: 400d4000 .word 0x400d4000 6000160c: 56c00000 .word 0x56c00000 -60001610: 2000bae8 .word 0x2000bae8 +60001610: 2000bb08 .word 0x2000bb08 60001614: 2018101b .word 0x2018101b 60001618: 13110d0c .word 0x13110d0c 6000161c: 400fc000 .word 0x400fc000 @@ -359,7 +359,7 @@ FLASHMEM void TwoWire::configSDApin(uint8_t i) 60001674: f85d 4b04 ldr.w r4, [sp], #4 60001678: 4770 bx lr 6000167a: bf00 nop -6000167c: 200044b4 .word 0x200044b4 +6000167c: 20004574 .word 0x20004574 60001680: 0001f861 .word 0x0001f861 60001684 : @@ -414,7 +414,7 @@ FLASHMEM void TwoWire::setSDA(uint8_t pin) { if (sda_pin == pin) break; 600016d0: 2100 movs r1, #0 600016d2: e7ea b.n 600016aa -600016d4: 200044b4 .word 0x200044b4 +600016d4: 20004574 .word 0x20004574 600016d8 : scl_pin_index_ = newindex; @@ -449,7 +449,7 @@ FLASHMEM void TwoWire::configSCLpin(uint8_t i) } 600016fe: f85d 4b04 ldr.w r4, [sp], #4 60001702: 4770 bx lr -60001704: 200044b4 .word 0x200044b4 +60001704: 20004574 .word 0x20004574 60001708: 0001f861 .word 0x0001f861 6000170c : @@ -504,7 +504,7 @@ FLASHMEM void TwoWire::setSCL(uint8_t pin) { if (scl_pin == pin) break; 6000175c: 2100 movs r1, #0 6000175e: e7ea b.n 60001736 -60001760: 200044b4 .word 0x200044b4 +60001760: 20004574 .word 0x20004574 60001764 : CCM_CSCDR2 = (CCM_CSCDR2 & ~CCM_CSCDR2_LPI2C_CLK_PODF(63)) | CCM_CSCDR2_LPI2C_CLK_SEL; @@ -656,7 +656,7 @@ FLASHMEM void TwoWire::setSCL(uint8_t pin) { 60001810: 400fc000 .word 0x400fc000 60001814: 400c4000 .word 0x400c4000 60001818: 400c8000 .word 0x400c8000 -6000181c: 2000bc81 .word 0x2000bc81 +6000181c: 2000bca1 .word 0x2000bca1 60001820 : FLASHMEM void startup_default_early_hook(void) {} @@ -794,7 +794,7 @@ FLASHMEM void startup_debug_reset(void) { __asm__ volatile("nop"); } 600018e8: 1000003f .word 0x1000003f 600018ec: 03080025 .word 0x03080025 600018f0: 00100009 .word 0x00100009 -600018f4: 2000bcc0 .word 0x2000bcc0 +600018f4: 2000bce0 .word 0x2000bce0 600018f8: 00200013 .word 0x00200013 600018fc: 07020021 .word 0x07020021 60001900: 20000014 .word 0x20000014 @@ -1037,14 +1037,14 @@ static inline void attachInterruptVector(enum IRQ_NUMBER_t irq, void (*function) 60001a88: 401f4400 .word 0x401f4400 60001a8c: 42aa0000 .word 0x42aa0000 60001a90: 42b40000 .word 0x42b40000 -60001a94: 2000bab4 .word 0x2000bab4 -60001a98: 2000bab0 .word 0x2000bab0 -60001a9c: 2000bab8 .word 0x2000bab8 -60001aa0: 2000babc .word 0x2000babc +60001a94: 2000bad4 .word 0x2000bad4 +60001a98: 2000bad0 .word 0x2000bad0 +60001a9c: 2000bad8 .word 0x2000bad8 +60001aa0: 2000badc .word 0x2000badc 60001aa4: 0fff0000 .word 0x0fff0000 60001aa8: e000e400 .word 0xe000e400 60001aac: 20005400 .word 0x20005400 -60001ab0: 0002ad7d .word 0x0002ad7d +60001ab0: 0002ae65 .word 0x0002ae65 60001ab4 : FLASHMEM void usb_init(void) @@ -1067,7 +1067,7 @@ FLASHMEM void usb_init(void) USB1_BURSTSIZE = 0x0404; 60001ac0: f240 4404 movw r4, #1028 ; 0x404 usb_init_serialnumber(); -60001ac4: f000 f8a0 bl 60001c08 <__usb_init_serialnumber_veneer> +60001ac4: f000 f8a8 bl 60001c18 <__usb_init_serialnumber_veneer> CCM_CCGR6 |= CCM_CCGR6_USBOH3(CCM_CCGR_ON); // turn on clocks to USB peripheral 60001ac8: 4a2d ldr r2, [pc, #180] ; (60001b80 ) USB1_BURSTSIZE = 0x0404; @@ -1133,7 +1133,7 @@ FLASHMEM void usb_init(void) USBPHY1_CTRL_CLR = USBPHY_CTRL_SFTRST; // reset PHY 60001b20: 639a str r2, [r3, #56] ; 0x38 delay(25); -60001b22: f000 f881 bl 60001c28 <__delay_veneer> +60001b22: f000 f87d bl 60001c20 <__delay_veneer> // ENDPTFLUSH pg 3247 // ENDPTSTAT pg 3247 // ENDPTCOMPLETE 3248 @@ -1164,7 +1164,7 @@ FLASHMEM void usb_init(void) 60001b3c: f8c4 01a8 str.w r0, [r4, #424] ; 0x1a8 memset(endpoint_queue_head, 0, sizeof(endpoint_queue_head)); 60001b40: 4618 mov r0, r3 -60001b42: f000 f869 bl 60001c18 <__memset_veneer> +60001b42: f000 f875 bl 60001c30 <__memset_veneer> endpoint_queue_head[0].config = (64 << 16) | (1 << 15); endpoint_queue_head[1].config = (64 << 16); 60001b46: f44f 0280 mov.w r2, #4194304 ; 0x400000 @@ -1216,7 +1216,7 @@ FLASHMEM void usb_init(void) 60001b8c: 001e1c00 .word 0x001e1c00 60001b90: 20000000 .word 0x20000000 60001b94: 20005400 .word 0x20005400 -60001b98: 0002af9d .word 0x0002af9d +60001b98: 0002b085 .word 0x0002b085 60001b9c <_reboot_Teensyduino_>: @@ -1288,38 +1288,38 @@ FLASHMEM void _reboot_Teensyduino_(void) 60001bfc: 0000 movs r0, r0 ... -60001c00 <__pwm_init_veneer>: -60001c00: f85f f000 ldr.w pc, [pc] ; 60001c04 <__pwm_init_veneer+0x4> -60001c04: 0002aaa1 .word 0x0002aaa1 +60001c00 <__main_veneer>: +60001c00: f85f f000 ldr.w pc, [pc] ; 60001c04 <__main_veneer+0x4> +60001c04: 0002a7e1 .word 0x0002a7e1 -60001c08 <__usb_init_serialnumber_veneer>: -60001c08: f85f f000 ldr.w pc, [pc] ; 60001c0c <__usb_init_serialnumber_veneer+0x4> -60001c0c: 0002b699 .word 0x0002b699 +60001c08 <__set_arm_clock_veneer>: +60001c08: f85f f000 ldr.w pc, [pc] ; 60001c0c <__set_arm_clock_veneer+0x4> +60001c0c: 0002a2c5 .word 0x0002a2c5 -60001c10 <____libc_init_array_veneer>: -60001c10: f85f f000 ldr.w pc, [pc] ; 60001c14 <____libc_init_array_veneer+0x4> -60001c14: 0002ea39 .word 0x0002ea39 +60001c10 <__pwm_init_veneer>: +60001c10: f85f f000 ldr.w pc, [pc] ; 60001c14 <__pwm_init_veneer+0x4> +60001c14: 0002ab89 .word 0x0002ab89 -60001c18 <__memset_veneer>: -60001c18: f85f f000 ldr.w pc, [pc] ; 60001c1c <__memset_veneer+0x4> -60001c1c: 0002e48d .word 0x0002e48d +60001c18 <__usb_init_serialnumber_veneer>: +60001c18: f85f f000 ldr.w pc, [pc] ; 60001c1c <__usb_init_serialnumber_veneer+0x4> +60001c1c: 0002b781 .word 0x0002b781 -60001c20 <__main_veneer>: -60001c20: f85f f000 ldr.w pc, [pc] ; 60001c24 <__main_veneer+0x4> -60001c24: 0002a6f9 .word 0x0002a6f9 +60001c20 <__delay_veneer>: +60001c20: f85f f000 ldr.w pc, [pc] ; 60001c24 <__delay_veneer+0x4> +60001c24: 0002a5b5 .word 0x0002a5b5 -60001c28 <__delay_veneer>: -60001c28: f85f f000 ldr.w pc, [pc] ; 60001c2c <__delay_veneer+0x4> -60001c2c: 0002a4cd .word 0x0002a4cd +60001c28 <____libc_init_array_veneer>: +60001c28: f85f f000 ldr.w pc, [pc] ; 60001c2c <____libc_init_array_veneer+0x4> +60001c2c: 0002eb19 .word 0x0002eb19 -60001c30 <__set_arm_clock_veneer>: -60001c30: f85f f000 ldr.w pc, [pc] ; 60001c34 <__set_arm_clock_veneer+0x4> -60001c34: 0002a1dd .word 0x0002a1dd +60001c30 <__memset_veneer>: +60001c30: f85f f000 ldr.w pc, [pc] ; 60001c34 <__memset_veneer+0x4> +60001c34: 0002e575 .word 0x0002e575 60001c38 <__frame_dummy_init_array_entry>: -60001c38: 00000045 000000a5 00019005 00025759 E...........YW.. -60001c48: 00026b95 00026be1 000280e1 00029c41 .k...k......A... -60001c58: 00029cc1 .... +60001c38: 00000045 000000a5 000190e9 00025845 E...........EX.. +60001c48: 00026c81 00026ccd 000281cd 00029d2d .l...l......-... +60001c58: 00029dad .... Disassembly of section .text.itcm: @@ -1334,23 +1334,29 @@ Disassembly of section .text.itcm: return false; } 20: 4805 ldr r0, [pc, #20] ; (38 <_teensy_model_identifier+0x14>) +void BMC::handleMidiClock(bool isClock, bool isStartOrContinue){ + if(midiClock.read(isClock, isStartOrContinue)){ +#if (BMC_TOTAL_LEDS + BMC_TOTAL_PIXELS) > 0 + handleClockLeds(); +#endif + if(callback.midiClockBeat){ + 22: 4b06 ldr r3, [pc, #24] ; (3c <_teensy_model_identifier+0x18>) } } #if BMC_MAX_PIXELS > 0 || BMC_MAX_GLOBAL_PIXELS > 0 pixels.clockBeat(midiClock.getBpm()); #endif } - 22: 4b06 ldr r3, [pc, #24] ; (3c <_teensy_model_identifier+0x18>) 24: 1a1b subs r3, r3, r0 - callback.midiClockBeat(); 26: 0fd9 lsrs r1, r3, #31 + callback.midiClockBeat(); + 28: eb01 01a3 add.w r1, r1, r3, asr #2 if (!address_in_use(addr)) { last_assigned_address = addr; return addr; } } } - 28: eb01 01a3 add.w r1, r1, r3, asr #2 2c: 1049 asrs r1, r1, #1 2e: d002 beq.n 36 <_teensy_model_identifier+0x12> 30: 4b03 ldr r3, [pc, #12] ; (40 <_teensy_model_identifier+0x1c>) @@ -1404,7 +1410,7 @@ void MIDIDeviceBase::sysex_byte(uint8_t b) 5a: bf00 nop } 5c: 00000000 .word 0x00000000 - 60: 2000ba4c .word 0x2000ba4c + 60: 2000ba6c .word 0x2000ba6c if (mult < 1 || mult > 3) return; uint32_t config = (packet_size << 16) | (mult << 30); if (ep < 2 || ep > NUM_ENDPOINTS) return; @@ -1421,8 +1427,8 @@ class BMC; class BMCApi : public BMC { 68: b570 push {r4, r5, r6, lr} - 6a: f643 6454 movw r4, #15956 ; 0x3e54 - 6e: f643 5504 movw r5, #15620 ; 0x3d04 + 6a: f643 6474 movw r4, #15988 ; 0x3e74 + 6e: f643 5524 movw r5, #15652 ; 0x3d24 72: 4606 mov r6, r0 #define __oledMuxSelect(a) selectMux(a) #else @@ -1440,7 +1446,7 @@ class BMCDisplay { class BMC_OLED { 78: f104 000c add.w r0, r4, #12 7c: 3c38 subs r4, #56 ; 0x38 - 7e: f018 fc21 bl 188c4 + 7e: f018 fc93 bl 189a8 82: 42ac cmp r4, r5 84: d1f8 bne.n 78 86: 4630 mov r0, r6 @@ -1461,7 +1467,7 @@ BMC_DEFAULT(); void setup(){ bmc.begin(); 8c: 4801 ldr r0, [pc, #4] ; (94 ) - 8e: f002 bc77 b.w 2980 + 8e: f002 bc7b b.w 2988 92: bf00 nop 94: 20006480 .word 0x20006480 @@ -1470,7 +1476,7 @@ void setup(){ void loop(){ bmc.update(); 98: 4801 ldr r0, [pc, #4] ; (a0 ) - 9a: f002 bee3 b.w 2e64 + 9a: f002 bee7 b.w 2e6c 9e: bf00 nop a0: 20006480 .word 0x20006480 @@ -1481,7 +1487,7 @@ public: BMCApi(){} a6: 4c05 ldr r4, [pc, #20] ; (bc <_GLOBAL__sub_I_bmc+0x18>) a8: 4620 mov r0, r4 - aa: f001 fdfb bl 1ca4 + aa: f001 fdf5 bl 1c98 BMC_DEFAULT(); ae: 4620 mov r0, r4 b0: 4a03 ldr r2, [pc, #12] ; (c0 <_GLOBAL__sub_I_bmc+0x1c>) @@ -1489,9 +1495,9 @@ BMC_DEFAULT(); } b4: e8bd 4010 ldmia.w sp!, {r4, lr} BMC_DEFAULT(); - b8: f02d bb62 b.w 2d780 <__aeabi_atexit> + b8: f02d bbd6 b.w 2d868 <__aeabi_atexit> bc: 20006480 .word 0x20006480 - c0: 20004c24 .word 0x20004c24 + c0: 20004ce4 .word 0x20004ce4 c4: 00000069 .word 0x00000069 000000c8 : @@ -1559,10 +1565,10 @@ void HardwareSerial::setRX(uint8_t pin) f4: 2400 movgt r4, #0 f6: 6044 str r4, [r0, #4] f8: 4818 ldr r0, [pc, #96] ; (15c ) - fa: f02c fa25 bl 2c548 + fa: f02c fa99 bl 2c630 fe: 2101 movs r1, #1 100: 4817 ldr r0, [pc, #92] ; (160 ) - 102: f02c fa21 bl 2c548 + 102: f02c fa95 bl 2c630 // Print a string size_t print(const char s[]) { return write(s); } // Print a string @@ -1573,26 +1579,26 @@ void HardwareSerial::setRX(uint8_t pin) 108: 4641 mov r1, r8 10a: 220a movs r2, #10 10c: 4815 ldr r0, [pc, #84] ; (164 ) - 10e: f029 fecd bl 29eac + 10e: f029 ff43 bl 29f98 112: 2101 movs r1, #1 114: 4812 ldr r0, [pc, #72] ; (160 ) - 116: f02c fa17 bl 2c548 + 116: f02c fa8b bl 2c630 11a: 2300 movs r3, #0 11c: 220a movs r2, #10 11e: 4629 mov r1, r5 120: 4810 ldr r0, [pc, #64] ; (164 ) - 122: f029 fec3 bl 29eac + 122: f029 ff39 bl 29f98 126: 2101 movs r1, #1 128: 480d ldr r0, [pc, #52] ; (160 ) - 12a: f02c fa0d bl 2c548 + 12a: f02c fa81 bl 2c630 12e: 2300 movs r3, #0 130: 220a movs r2, #10 132: 4639 mov r1, r7 134: 480b ldr r0, [pc, #44] ; (164 ) - 136: f029 feb9 bl 29eac + 136: f029 ff2f bl 29f98 13a: 2101 movs r1, #1 13c: 4808 ldr r0, [pc, #32] ; (160 ) - 13e: f02c fa03 bl 2c548 + 13e: f02c fa77 bl 2c630 // Print an unsigned number size_t print(unsigned int n) { return printNumber(n, 10, 0); } // Print a signed number @@ -1603,7 +1609,7 @@ void HardwareSerial::setRX(uint8_t pin) 144: 2300 movs r3, #0 146: 220a movs r2, #10 148: 4806 ldr r0, [pc, #24] ; (164 ) - 14a: f029 feaf bl 29eac + 14a: f029 ff25 bl 29f98 // Print an unsigned number and newline size_t println(unsigned int n) { return print(n) + println(); } // Print a signed number and newline @@ -1616,11 +1622,11 @@ void HardwareSerial::setRX(uint8_t pin) BMC_PRINTLN("Stopwatch h,m,s,timeout",h,m,s,timeout); } 150: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 154: f029 be8e b.w 29e74 + 154: f029 bf04 b.w 29f60 158: 00015180 .word 0x00015180 15c: 20001904 .word 0x20001904 160: 200023ec .word 0x200023ec - 164: 20004ba8 .word 0x20004ba8 + 164: 20004c68 .word 0x20004c68 00000168 : BMCTextPixelSize getCenteredXY(const char * str, uint16_t t_x, uint16_t t_y, uint16_t t_w, uint16_t t_h, uint8_t t_padding){ @@ -1657,7 +1663,7 @@ void HardwareSerial::setRX(uint8_t pin) 18c: f8bd 9058 ldrh.w r9, [sp, #88] ; 0x58 190: 9305 str r3, [sp, #20] setTextSize(1); - 192: f026 fab7 bl 26704 + 192: f026 fb2d bl 267f0 BMCTextPixelSize t; 196: 2300 movs r3, #0 if((t.w) <= (t_w-t_padding) && ((t.h+(t_padding*2))+((t.y) + (t.h))) <= (t_h-t_padding)){ @@ -1681,7 +1687,7 @@ void HardwareSerial::setRX(uint8_t pin) setFont(BMC_FONT_SM); 1ba: 4945 ldr r1, [pc, #276] ; (2d0 ) 1bc: 4638 mov r0, r7 - 1be: f026 faa7 bl 26710 + 1be: f026 fb1d bl 267fc BMCTextPixelSize t; 1c2: 2300 movs r3, #0 1c4: e9c6 3300 strd r3, r3, [r6] @@ -1699,7 +1705,7 @@ void HardwareSerial::setRX(uint8_t pin) 1de: f10d 0222 add.w r2, sp, #34 ; 0x22 1e2: 9201 str r2, [sp, #4] 1e4: 461a mov r2, r3 - 1e6: f026 fb7f bl 268e8 + 1e6: f026 fbf5 bl 269d4 t = strPixelSize(str, 0, 0); 1ea: 4633 mov r3, r6 1ec: cb03 ldmia r3!, {r0, r1} @@ -1728,12 +1734,12 @@ void HardwareSerial::setRX(uint8_t pin) setFont(BMC_FONT_MD); 216: 492f ldr r1, [pc, #188] ; (2d4 ) 218: 4638 mov r0, r7 - 21a: f026 fa79 bl 26710 + 21a: f026 faef bl 267fc 21e: e7d0 b.n 1c2 setFont(BMC_FONT_XL); 220: 492d ldr r1, [pc, #180] ; (2d8 ) 222: 4638 mov r0, r7 - 224: f026 fa74 bl 26710 + 224: f026 faea bl 267fc 228: e7cb b.n 1c2 if(t_h < 64){ 22a: f1b9 0f3f cmp.w r9, #63 ; 0x3f @@ -1741,12 +1747,12 @@ void HardwareSerial::setRX(uint8_t pin) setFont(BMC_FONT_XXL); 230: 492a ldr r1, [pc, #168] ; (2dc ) 232: 4638 mov r0, r7 - 234: f026 fa6c bl 26710 + 234: f026 fae2 bl 267fc 238: e7c3 b.n 1c2 setFont(BMC_FONT_LG); 23a: 4929 ldr r1, [pc, #164] ; (2e0 ) 23c: 4638 mov r0, r7 - 23e: f026 fa67 bl 26710 + 23e: f026 fadd bl 267fc 242: e7be b.n 1c2 if((t.w) <= (t_w-t_padding) && ((t.h+(t_padding*2))+((t.y) + (t.h))) <= (t_h-t_padding)){ 244: 88e2 ldrh r2, [r4, #6] @@ -1829,7 +1835,7 @@ void HardwareSerial::setRX(uint8_t pin) setFont(BMC_FONT_XS); 2c6: 4907 ldr r1, [pc, #28] ; (2e4 ) 2c8: 4638 mov r0, r7 - 2ca: f026 fa21 bl 26710 + 2ca: f026 fa97 bl 267fc 2ce: e778 b.n 1c2 2d0: 60001c9c .word 0x60001c9c 2d4: 60001c8c .word 0x60001c8c @@ -1940,7 +1946,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 37c: ee17 3a90 vmov r3, s15 380: 07da lsls r2, r3, #31 382: d56a bpl.n 45a - 384: f02c f9a8 bl 2c6d8 + 384: f02c fa1c bl 2c7c0 output = 2 * BMC_LFO_AMPLITUDE * fmod(outputPhase, 1) + BMC_LFO_AMPLITUDE_HALF - 3 * BMC_LFO_AMPLITUDE_HALF; 388: ed9f 5b43 vldr d5, [pc, #268] ; 498 38c: ed9f 7b44 vldr d7, [pc, #272] ; 4a0 @@ -1948,7 +1954,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 394: e00f b.n 3b6 396: eeb7 1b00 vmov.f64 d1, #112 ; 0x3f800000 1.0 39a: eeb7 0ac0 vcvt.f64.f32 d0, s0 - 39e: f02c f99b bl 2c6d8 + 39e: f02c fa0f bl 2c7c0 output = BMC_LFO_AMPLITUDE * (1 - fmod(outputPhase, 1)) + BMC_LFO_AMPLITUDE_HALF - BMC_LFO_AMPLITUDE_HALF; 3a2: eeb7 7b00 vmov.f64 d7, #112 ; 0x3f800000 1.0 3a6: ed9f 6b3e vldr d6, [pc, #248] ; 4a0 @@ -2009,7 +2015,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 3f2: ed9f 7b31 vldr d7, [pc, #196] ; 4b8 3f6: eeb7 0ac0 vcvt.f64.f32 d0, s0 3fa: ee20 0b07 vmul.f64 d0, d0, d7 - 3fe: f02c f993 bl 2c728 + 3fe: f02c fa07 bl 2c810 402: ed9f 7b27 vldr d7, [pc, #156] ; 4a0 406: eea0 7b07 vfma.f64 d7, d0, d7 40a: eefc 7bc7 vcvt.u32.f64 s15, d7 @@ -2049,7 +2055,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl } 456: b002 add sp, #8 458: bd10 pop {r4, pc} - 45a: f02c f93d bl 2c6d8 + 45a: f02c f9b1 bl 2c7c0 output = BMC_LFO_AMPLITUDE * (1.5 - 2 * fmod(outputPhase, 1)) + BMC_LFO_AMPLITUDE_HALF - BMC_LFO_AMPLITUDE; 45e: eeb0 4b00 vmov.f64 d4, #0 ; 0x40000000 2.0 462: eeb7 6b08 vmov.f64 d6, #120 ; 0x3fc00000 1.5 @@ -2084,7 +2090,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 4b4: 405fc000 .word 0x405fc000 4b8: 54442eea .word 0x54442eea 4bc: 401921fb .word 0x401921fb - 4c0: 2000bae8 .word 0x2000bae8 + 4c0: 2000bb08 .word 0x2000bb08 4c4: 4c64e1c0 .word 0x4c64e1c0 4c8: 81020409 .word 0x81020409 4cc: 49742400 .word 0x49742400 @@ -2108,11 +2114,11 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 4de: 6025 str r5, [r4, #0] 4e0: 8665 strh r5, [r4, #50] ; 0x32 struct bmcStoreGlobal { - 4e2: f02d ffd3 bl 2e48c + 4e2: f02e f847 bl 2e574 4e6: f44f 6208 mov.w r2, #2176 ; 0x880 4ea: 4629 mov r1, r5 4ec: f204 6074 addw r0, r4, #1652 ; 0x674 - 4f0: f02d ffcc bl 2e48c + 4f0: f02e f840 bl 2e574 4f4: f604 63f6 addw r3, r4, #3830 ; 0xef6 4f8: f604 7216 addw r2, r4, #3862 ; 0xf16 struct bmcStoreDevice { @@ -2255,50 +2261,50 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 5fe: 2300 movge r3, #0 presetIndex = toPresetIndex(bank, preset); 600: 8013 strh r3, [r2, #0] - 602: f02b ffa1 bl 2c548 + 602: f02c f815 bl 2c630 606: 2101 movs r1, #1 608: 482f ldr r0, [pc, #188] ; (6c8 ) - 60a: f02b ff9d bl 2c548 + 60a: f02c f811 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } 60e: 2300 movs r3, #0 610: 220a movs r2, #10 612: 4629 mov r1, r5 614: 482d ldr r0, [pc, #180] ; (6cc ) - 616: f029 fc49 bl 29eac + 616: f029 fcbf bl 29f98 61a: 2101 movs r1, #1 61c: 482a ldr r0, [pc, #168] ; (6c8 ) - 61e: f02b ff93 bl 2c548 + 61e: f02c f807 bl 2c630 622: 2107 movs r1, #7 624: 482a ldr r0, [pc, #168] ; (6d0 ) - 626: f02b ff8f bl 2c548 + 626: f02c f803 bl 2c630 62a: 2101 movs r1, #1 62c: 4826 ldr r0, [pc, #152] ; (6c8 ) - 62e: f02b ff8b bl 2c548 + 62e: f02b ffff bl 2c630 632: 2300 movs r3, #0 634: 220a movs r2, #10 636: 4631 mov r1, r6 638: 4824 ldr r0, [pc, #144] ; (6cc ) - 63a: f029 fc37 bl 29eac + 63a: f029 fcad bl 29f98 63e: 2101 movs r1, #1 640: 4821 ldr r0, [pc, #132] ; (6c8 ) - 642: f02b ff81 bl 2c548 + 642: f02b fff5 bl 2c630 646: 210c movs r1, #12 648: 4822 ldr r0, [pc, #136] ; (6d4 ) - 64a: f02b ff7d bl 2c548 + 64a: f02b fff1 bl 2c630 64e: 2101 movs r1, #1 650: 481d ldr r0, [pc, #116] ; (6c8 ) - 652: f02b ff79 bl 2c548 + 652: f02b ffed bl 2c630 BMC_PRINTLN("Switch Preset, Bank:", t_bank, "Preset:", t_preset, "presetIndex:", presetIndex); 656: 68a3 ldr r3, [r4, #8] size_t print(int n) { return print((long)n); } 658: 481c ldr r0, [pc, #112] ; (6cc ) 65a: 8819 ldrh r1, [r3, #0] - 65c: f029 fbfe bl 29e5c + 65c: f029 fc74 bl 29f48 size_t println(int n) { return print(n) + println(); } 660: 481a ldr r0, [pc, #104] ; (6cc ) } 662: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 666: f029 bc05 b.w 29e74 + 666: f029 bc7b b.w 29f60 if((bank != t_bank) || (preset != t_preset) || forced){ 66a: 6901 ldr r1, [r0, #16] 66c: 7809 ldrb r1, [r1, #0] @@ -2310,42 +2316,42 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 676: bd70 pop {r4, r5, r6, pc} 678: 2117 movs r1, #23 67a: 4817 ldr r0, [pc, #92] ; (6d8 ) - 67c: f02b ff64 bl 2c548 + 67c: f02b ffd8 bl 2c630 680: 2101 movs r1, #1 682: 4811 ldr r0, [pc, #68] ; (6c8 ) - 684: f02b ff60 bl 2c548 + 684: f02b ffd4 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } 688: 2300 movs r3, #0 68a: 220a movs r2, #10 68c: 4629 mov r1, r5 68e: 480f ldr r0, [pc, #60] ; (6cc ) - 690: f029 fc0c bl 29eac + 690: f029 fc82 bl 29f98 694: 2101 movs r1, #1 696: 480c ldr r0, [pc, #48] ; (6c8 ) - 698: f02b ff56 bl 2c548 + 698: f02b ffca bl 2c630 69c: 2300 movs r3, #0 69e: 220a movs r2, #10 6a0: 4631 mov r1, r6 6a2: 480a ldr r0, [pc, #40] ; (6cc ) - 6a4: f029 fc02 bl 29eac + 6a4: f029 fc78 bl 29f98 6a8: 2101 movs r1, #1 6aa: 4807 ldr r0, [pc, #28] ; (6c8 ) - 6ac: f02b ff4c bl 2c548 + 6ac: f02b ffc0 bl 2c630 6b0: 2103 movs r1, #3 6b2: 480a ldr r0, [pc, #40] ; (6dc ) - 6b4: f02b ff48 bl 2c548 + 6b4: f02b ffbc bl 2c630 size_t println(const char s[]) { return print(s) + println(); } 6b8: 4804 ldr r0, [pc, #16] ; (6cc ) 6ba: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 6be: f029 bbd9 b.w 29e74 + 6be: f029 bc4f b.w 29f60 6c2: bf00 nop 6c4: 200015f8 .word 0x200015f8 6c8: 200023ec .word 0x200023ec - 6cc: 20004ba8 .word 0x20004ba8 + 6cc: 20004c68 .word 0x20004c68 6d0: 20001610 .word 0x20001610 6d4: 20001618 .word 0x20001618 6d8: 200015e0 .word 0x200015e0 - 6dc: 20003658 .word 0x20003658 + 6dc: 20003718 .word 0x20003718 000006e0 : } @@ -2444,10 +2450,10 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 758: bb1a cbnz r2, 7a2 75a: 2106 movs r1, #6 75c: 4816 ldr r0, [pc, #88] ; (7b8 ) - 75e: f02b fef3 bl 2c548 + 75e: f02b ff67 bl 2c630 762: 2101 movs r1, #1 764: 4815 ldr r0, [pc, #84] ; (7bc ) - 766: f02b feef bl 2c548 + 766: f02b ff63 bl 2c630 BMC_PRINTLN("Part #", songPart); 76a: 6921 ldr r1, [r4, #16] size_t print(uint8_t b) { return printNumber(b, 10, 0); } @@ -2455,10 +2461,10 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 76e: 220a movs r2, #10 770: 7809 ldrb r1, [r1, #0] 772: 4813 ldr r0, [pc, #76] ; (7c0 ) - 774: f029 fb9a bl 29eac + 774: f029 fc10 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } 778: 4811 ldr r0, [pc, #68] ; (7c0 ) - 77a: f029 fb7b bl 29e74 + 77a: f029 fbf1 bl 29f60 77e: 7f23 ldrb r3, [r4, #28] 780: f043 0304 orr.w r3, r3, #4 784: 7723 strb r3, [r4, #28] @@ -2498,7 +2504,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 7b6: bf00 nop 7b8: 200017a0 .word 0x200017a0 7bc: 200023ec .word 0x200023ec - 7c0: 20004ba8 .word 0x20004ba8 + 7c0: 20004c68 .word 0x20004c68 000007c4 : if(n >= BMC_MAX_SETLISTS_SONGS){ @@ -2583,36 +2589,36 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 84c: d433 bmi.n 8b6 84e: 2106 movs r1, #6 850: 481c ldr r0, [pc, #112] ; (8c4 ) - 852: f02b fe79 bl 2c548 + 852: f02b feed bl 2c630 856: 2101 movs r1, #1 858: 481b ldr r0, [pc, #108] ; (8c8 ) - 85a: f02b fe75 bl 2c548 + 85a: f02b fee9 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } 85e: 2300 movs r3, #0 860: 220a movs r2, #10 862: 4629 mov r1, r5 864: 4819 ldr r0, [pc, #100] ; (8cc ) - 866: f029 fb21 bl 29eac + 866: f029 fb97 bl 29f98 86a: 2101 movs r1, #1 86c: 4816 ldr r0, [pc, #88] ; (8c8 ) - 86e: f02b fe6b bl 2c548 + 86e: f02b fedf bl 2c630 872: 210d movs r1, #13 874: 4816 ldr r0, [pc, #88] ; (8d0 ) - 876: f02b fe67 bl 2c548 + 876: f02b fedb bl 2c630 87a: 2101 movs r1, #1 87c: 4812 ldr r0, [pc, #72] ; (8c8 ) - 87e: f02b fe63 bl 2c548 + 87e: f02b fed7 bl 2c630 BMC_PRINTLN("Song #", n, "songInLibrary", songInLibrary); 882: 6963 ldr r3, [r4, #20] size_t print(int n) { return print((long)n); } 884: 4811 ldr r0, [pc, #68] ; (8cc ) 886: 8819 ldrh r1, [r3, #0] - 888: f029 fae8 bl 29e5c + 888: f029 fb5e bl 29f48 size_t println(int n) { return print(n) + println(); } 88c: 480f ldr r0, [pc, #60] ; (8cc ) } 88e: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 892: f029 baef b.w 29e74 + 892: f029 bb65 b.w 29f60 songInLibrary = s-1; 896: 6960 ldr r0, [r4, #20] 898: 8003 strh r3, [r0, #0] @@ -2641,7 +2647,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 8c2: bf00 nop 8c4: 200017a8 .word 0x200017a8 8c8: 200023ec .word 0x200023ec - 8cc: 20004ba8 .word 0x20004ba8 + 8cc: 20004c68 .word 0x20004c68 8d0: 200017b0 .word 0x200017b0 000008d4 : @@ -2750,7 +2756,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 9d0: 9300 str r3, [sp, #0] 9d2: 2350 movs r3, #80 ; 0x50 9d4: 6c00 ldr r0, [r0, #64] ; 0x40 - 9d6: f022 febd bl 23754 + 9d6: f022 ff1f bl 23818 if(release==false && !ignoreQueue){ 9da: 2f00 cmp r7, #0 9dc: d1ef bne.n 9be @@ -2790,7 +2796,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl a0e: 2201 movs r2, #1 a10: 6c20 ldr r0, [r4, #64] ; 0x40 a12: 4611 mov r1, r2 - a14: f022 fe9e bl 23754 + a14: f022 ff00 bl 23818 a18: e7d0 b.n 9bc case BMC_DAW_CMD_MUTE: sendNote(0x10+ch, release); break; a1a: f106 0210 add.w r2, r6, #16 @@ -2806,7 +2812,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl a2a: 6c20 ldr r0, [r4, #64] ; 0x40 a2c: 4611 mov r1, r2 a2e: e9cd 5500 strd r5, r5, [sp] - a32: f022 ffe3 bl 239fc + a32: f023 f847 bl 23ac4 } a36: b003 add sp, #12 a38: bdf0 pop {r4, r5, r6, r7, pc} @@ -2827,7 +2833,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl a54: 9300 str r3, [sp, #0] a56: 4633 mov r3, r6 a58: 6c00 ldr r0, [r0, #64] ; 0x40 - a5a: f022 fe7b bl 23754 + a5a: f022 fedd bl 23818 a5e: e7ad b.n 9bc if(!release){ a60: 2b00 cmp r3, #0 @@ -2840,7 +2846,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl a6e: 9300 str r3, [sp, #0] a70: 2328 movs r3, #40 ; 0x28 a72: 6c00 ldr r0, [r0, #64] ; 0x40 - a74: f022 fe6e bl 23754 + a74: f022 fed0 bl 23818 a78: e7a0 b.n 9bc case BMC_DAW_CMD_VPOT_SELECT: sendNote(0x20+ch, release); break; a7a: f106 0220 add.w r2, r6, #32 @@ -2859,7 +2865,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl a94: 9300 str r3, [sp, #0] a96: 234f movs r3, #79 ; 0x4f a98: 6c00 ldr r0, [r0, #64] ; 0x40 - a9a: f022 fe5b bl 23754 + a9a: f022 febd bl 23818 a9e: e78d b.n 9bc if(!release){ aa0: 2b00 cmp r3, #0 @@ -2872,7 +2878,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl aae: 9300 str r3, [sp, #0] ab0: 2359 movs r3, #89 ; 0x59 ab2: 6c00 ldr r0, [r0, #64] ; 0x40 - ab4: f022 fe4e bl 23754 + ab4: f022 feb0 bl 23818 ab8: e780 b.n 9bc if(!release){ aba: 2b00 cmp r3, #0 @@ -2885,7 +2891,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl ac8: 9300 str r3, [sp, #0] aca: 2342 movs r3, #66 ; 0x42 acc: 6c00 ldr r0, [r0, #64] ; 0x40 - ace: f022 fe41 bl 23754 + ace: f022 fea3 bl 23818 ad2: e773 b.n 9bc if(!release){ ad4: 2b00 cmp r3, #0 @@ -2898,7 +2904,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl ae2: 9300 str r3, [sp, #0] ae4: 2363 movs r3, #99 ; 0x63 ae6: 6c00 ldr r0, [r0, #64] ; 0x40 - ae8: f022 fe34 bl 23754 + ae8: f022 fe96 bl 23818 aec: e766 b.n 9bc if(!release){ aee: 2b00 cmp r3, #0 @@ -2911,7 +2917,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl afc: 9300 str r3, [sp, #0] afe: 2332 movs r3, #50 ; 0x32 b00: 6c00 ldr r0, [r0, #64] ; 0x40 - b02: f022 fe27 bl 23754 + b02: f022 fe89 bl 23818 b06: e759 b.n 9bc if(!release){ b08: 2b00 cmp r3, #0 @@ -2924,7 +2930,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl b16: 9300 str r3, [sp, #0] b18: 234a movs r3, #74 ; 0x4a b1a: 6c00 ldr r0, [r0, #64] ; 0x40 - b1c: f022 fe1a bl 23754 + b1c: f022 fe7c bl 23818 b20: e74c b.n 9bc if(!release){ b22: 2b00 cmp r3, #0 @@ -2937,7 +2943,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl b30: 9300 str r3, [sp, #0] b32: 233a movs r3, #58 ; 0x3a b34: 6c00 ldr r0, [r0, #64] ; 0x40 - b36: f022 fe0d bl 23754 + b36: f022 fe6f bl 23818 b3a: e73f b.n 9bc if(!release){ b3c: 2b00 cmp r3, #0 @@ -2950,7 +2956,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl b4a: 9300 str r3, [sp, #0] b4c: 235b movs r3, #91 ; 0x5b b4e: 6c00 ldr r0, [r0, #64] ; 0x40 - b50: f022 fe00 bl 23754 + b50: f022 fe62 bl 23818 b54: e732 b.n 9bc if(!release){ b56: 2b00 cmp r3, #0 @@ -2963,7 +2969,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl b64: 9300 str r3, [sp, #0] b66: 232a movs r3, #42 ; 0x2a b68: 6c00 ldr r0, [r0, #64] ; 0x40 - b6a: f022 fdf3 bl 23754 + b6a: f022 fe55 bl 23818 b6e: e725 b.n 9bc if(!release){ b70: 2b00 cmp r3, #0 @@ -2976,7 +2982,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl b7e: 9300 str r3, [sp, #0] b80: 2357 movs r3, #87 ; 0x57 b82: 6c00 ldr r0, [r0, #64] ; 0x40 - b84: f022 fde6 bl 23754 + b84: f022 fe48 bl 23818 b88: e718 b.n 9bc if(!release){ b8a: 2b00 cmp r3, #0 @@ -2989,7 +2995,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl b98: 9300 str r3, [sp, #0] b9a: 233e movs r3, #62 ; 0x3e b9c: 6c00 ldr r0, [r0, #64] ; 0x40 - b9e: f022 fdd9 bl 23754 + b9e: f022 fe3b bl 23818 ba2: e70b b.n 9bc if(!release){ ba4: 2b00 cmp r3, #0 @@ -3002,7 +3008,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl bb2: 9300 str r3, [sp, #0] bb4: 235f movs r3, #95 ; 0x5f bb6: 6c00 ldr r0, [r0, #64] ; 0x40 - bb8: f022 fdcc bl 23754 + bb8: f022 fe2e bl 23818 bbc: e6fe b.n 9bc if(!release){ bbe: 2b00 cmp r3, #0 @@ -3015,7 +3021,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl bcc: 9300 str r3, [sp, #0] bce: 232f movs r3, #47 ; 0x2f bd0: 6c00 ldr r0, [r0, #64] ; 0x40 - bd2: f022 fdbf bl 23754 + bd2: f022 fe21 bl 23818 bd6: e6f1 b.n 9bc bool getAutomationTouch(){ return bitRead(states, 11); } bool getAutomationLatch(){ return bitRead(states, 12); } @@ -3035,7 +3041,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl bec: e9cd 1500 strd r1, r5, [sp] bf0: 4611 mov r1, r2 bf2: 6c00 ldr r0, [r0, #64] ; 0x40 - bf4: f022 fdae bl 23754 + bf4: f022 fe10 bl 23818 midi.sendNoteOff(BMC_USB, 1, note, 0); bf8: 2201 movs r2, #1 bfa: 235c movs r3, #92 ; 0x5c @@ -3051,7 +3057,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl c0c: 9300 str r3, [sp, #0] c0e: 2336 movs r3, #54 ; 0x36 c10: 6c00 ldr r0, [r0, #64] ; 0x40 - c12: f022 fd9f bl 23754 + c12: f022 fe01 bl 23818 c16: e6d1 b.n 9bc if(!release){ c18: 2b00 cmp r3, #0 @@ -3064,7 +3070,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl c26: 9300 str r3, [sp, #0] c28: 234e movs r3, #78 ; 0x4e c2a: 6c00 ldr r0, [r0, #64] ; 0x40 - c2c: f022 fd92 bl 23754 + c2c: f022 fdf4 bl 23818 c30: e6c4 b.n 9bc if(!release){ c32: 2b00 cmp r3, #0 @@ -3077,7 +3083,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl c40: 9300 str r3, [sp, #0] c42: 2346 movs r3, #70 ; 0x46 c44: 6c00 ldr r0, [r0, #64] ; 0x40 - c46: f022 fd85 bl 23754 + c46: f022 fde7 bl 23818 c4a: e6b7 b.n 9bc if(!release){ c4c: 2b00 cmp r3, #0 @@ -3090,7 +3096,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl c5a: 9300 str r3, [sp, #0] c5c: 2358 movs r3, #88 ; 0x58 c5e: 6c00 ldr r0, [r0, #64] ; 0x40 - c60: f022 fd78 bl 23754 + c60: f022 fdda bl 23818 c64: e6aa b.n 9bc if(!release){ c66: 2b00 cmp r3, #0 @@ -3103,7 +3109,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl c74: 9300 str r3, [sp, #0] c76: 2340 movs r3, #64 ; 0x40 c78: 6c00 ldr r0, [r0, #64] ; 0x40 - c7a: f022 fd6b bl 23754 + c7a: f022 fdcd bl 23818 c7e: e69d b.n 9bc if(!release){ c80: 2b00 cmp r3, #0 @@ -3116,7 +3122,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl c8e: 9300 str r3, [sp, #0] c90: 2361 movs r3, #97 ; 0x61 c92: 6c00 ldr r0, [r0, #64] ; 0x40 - c94: f022 fd5e bl 23754 + c94: f022 fdc0 bl 23818 c98: e690 b.n 9bc if(!release){ c9a: 2b00 cmp r3, #0 @@ -3129,9 +3135,9 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl ca8: 9300 str r3, [sp, #0] caa: 2331 movs r3, #49 ; 0x31 cac: 6c00 ldr r0, [r0, #64] ; 0x40 - cae: f022 fd51 bl 23754 + cae: f022 fdb3 bl 23818 cb2: e683 b.n 9bc - cb4: 2000bae8 .word 0x2000bae8 + cb4: 2000bb08 .word 0x2000bb08 if(!release){ cb8: 2b00 cmp r3, #0 cba: f040 822b bne.w 1114 @@ -3143,7 +3149,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl cc6: 9300 str r3, [sp, #0] cc8: 2365 movs r3, #101 ; 0x65 cca: 6c00 ldr r0, [r0, #64] ; 0x40 - ccc: f022 fd42 bl 23754 + ccc: f022 fda4 bl 23818 cd0: e674 b.n 9bc if(!release){ cd2: 2b00 cmp r3, #0 @@ -3156,7 +3162,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl ce0: 9300 str r3, [sp, #0] ce2: 2338 movs r3, #56 ; 0x38 ce4: 6c00 ldr r0, [r0, #64] ; 0x40 - ce6: f022 fd35 bl 23754 + ce6: f022 fd97 bl 23818 cea: e667 b.n 9bc if(!release){ cec: 2b00 cmp r3, #0 @@ -3169,7 +3175,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl cfa: 9300 str r3, [sp, #0] cfc: 2352 movs r3, #82 ; 0x52 cfe: 6c00 ldr r0, [r0, #64] ; 0x40 - d00: f022 fd28 bl 23754 + d00: f022 fd8a bl 23818 d04: e65a b.n 9bc if(!release){ d06: 2b00 cmp r3, #0 @@ -3182,7 +3188,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl d14: 9300 str r3, [sp, #0] d16: 2348 movs r3, #72 ; 0x48 d18: 6c00 ldr r0, [r0, #64] ; 0x40 - d1a: f022 fd1b bl 23754 + d1a: f022 fd7d bl 23818 d1e: e64d b.n 9bc if(!release){ d20: 2b00 cmp r3, #0 @@ -3195,7 +3201,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl d2e: 9300 str r3, [sp, #0] d30: 2355 movs r3, #85 ; 0x55 d32: 6c00 ldr r0, [r0, #64] ; 0x40 - d34: f022 fd0e bl 23754 + d34: f022 fd70 bl 23818 d38: e640 b.n 9bc if(!release){ d3a: 2b00 cmp r3, #0 @@ -3208,7 +3214,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl d48: 9300 str r3, [sp, #0] d4a: 233c movs r3, #60 ; 0x3c d4c: 6c00 ldr r0, [r0, #64] ; 0x40 - d4e: f022 fd01 bl 23754 + d4e: f022 fd63 bl 23818 d52: e633 b.n 9bc if(!release){ d54: 2b00 cmp r3, #0 @@ -3221,7 +3227,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl d62: 9300 str r3, [sp, #0] d64: 235d movs r3, #93 ; 0x5d d66: 6c00 ldr r0, [r0, #64] ; 0x40 - d68: f022 fcf4 bl 23754 + d68: f022 fd56 bl 23818 d6c: e626 b.n 9bc if(!release){ d6e: 2b00 cmp r3, #0 @@ -3234,7 +3240,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl d7c: 9300 str r3, [sp, #0] d7e: 232c movs r3, #44 ; 0x2c d80: 6c00 ldr r0, [r0, #64] ; 0x40 - d82: f022 fce7 bl 23754 + d82: f022 fd49 bl 23818 d86: e619 b.n 9bc if(!release){ d88: 2b00 cmp r3, #0 @@ -3247,7 +3253,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl d96: 9300 str r3, [sp, #0] d98: 2370 movs r3, #112 ; 0x70 d9a: 6c00 ldr r0, [r0, #64] ; 0x40 - d9c: f022 fcda bl 23754 + d9c: f022 fd3c bl 23818 da0: e60c b.n 9bc if(!release){ da2: 2b00 cmp r3, #0 @@ -3260,7 +3266,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl db0: 9300 str r3, [sp, #0] db2: 2334 movs r3, #52 ; 0x34 db4: 6c00 ldr r0, [r0, #64] ; 0x40 - db6: f022 fccd bl 23754 + db6: f022 fd2f bl 23818 dba: e5ff b.n 9bc if(!release){ dbc: 2b00 cmp r3, #0 @@ -3273,7 +3279,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl dca: 9300 str r3, [sp, #0] dcc: 234c movs r3, #76 ; 0x4c dce: 6c00 ldr r0, [r0, #64] ; 0x40 - dd0: f022 fcc0 bl 23754 + dd0: f022 fd22 bl 23818 dd4: e5f2 b.n 9bc if(!release){ dd6: 2b00 cmp r3, #0 @@ -3286,7 +3292,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl de4: 9300 str r3, [sp, #0] de6: 2344 movs r3, #68 ; 0x44 de8: 6c00 ldr r0, [r0, #64] ; 0x40 - dea: f022 fcb3 bl 23754 + dea: f022 fd15 bl 23818 dee: e5e5 b.n 9bc if(!release){ df0: 2b00 cmp r3, #0 @@ -3299,7 +3305,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl dfe: 9300 str r3, [sp, #0] e00: 2356 movs r3, #86 ; 0x56 e02: 6c00 ldr r0, [r0, #64] ; 0x40 - e04: f022 fca6 bl 23754 + e04: f022 fd08 bl 23818 e08: e5d8 b.n 9bc if(!release){ e0a: 2b00 cmp r3, #0 @@ -3312,7 +3318,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl e18: 9300 str r3, [sp, #0] e1a: 2341 movs r3, #65 ; 0x41 e1c: 6c00 ldr r0, [r0, #64] ; 0x40 - e1e: f022 fc99 bl 23754 + e1e: f022 fcfb bl 23818 e22: e5cb b.n 9bc if(!release){ e24: 2b00 cmp r3, #0 @@ -3325,7 +3331,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl e32: 9300 str r3, [sp, #0] e34: 2362 movs r3, #98 ; 0x62 e36: 6c00 ldr r0, [r0, #64] ; 0x40 - e38: f022 fc8c bl 23754 + e38: f022 fcee bl 23818 e3c: e5be b.n 9bc if(!release){ e3e: 2b00 cmp r3, #0 @@ -3338,7 +3344,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl e4c: 9300 str r3, [sp, #0] e4e: 2330 movs r3, #48 ; 0x30 e50: 6c00 ldr r0, [r0, #64] ; 0x40 - e52: f022 fc7f bl 23754 + e52: f022 fce1 bl 23818 e56: e5b1 b.n 9bc if(!release){ e58: 2b00 cmp r3, #0 @@ -3351,7 +3357,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl e66: 9300 str r3, [sp, #0] e68: 2349 movs r3, #73 ; 0x49 e6a: 6c00 ldr r0, [r0, #64] ; 0x40 - e6c: f022 fc72 bl 23754 + e6c: f022 fcd4 bl 23818 e70: e5a4 b.n 9bc if(!release){ e72: 2b00 cmp r3, #0 @@ -3364,7 +3370,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl e80: 9300 str r3, [sp, #0] e82: 2339 movs r3, #57 ; 0x39 e84: 6c00 ldr r0, [r0, #64] ; 0x40 - e86: f022 fc65 bl 23754 + e86: f022 fcc7 bl 23818 e8a: e597 b.n 9bc if(!release){ e8c: 2b00 cmp r3, #0 @@ -3377,7 +3383,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl e9a: 9300 str r3, [sp, #0] e9c: 235a movs r3, #90 ; 0x5a e9e: 6c00 ldr r0, [r0, #64] ; 0x40 - ea0: f022 fc58 bl 23754 + ea0: f022 fcba bl 23818 ea4: e58a b.n 9bc if(!release){ ea6: 2b00 cmp r3, #0 @@ -3390,7 +3396,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl eb4: 9300 str r3, [sp, #0] eb6: 2329 movs r3, #41 ; 0x29 eb8: 6c00 ldr r0, [r0, #64] ; 0x40 - eba: f022 fc4b bl 23754 + eba: f022 fcad bl 23818 ebe: e57d b.n 9bc if(!release){ ec0: 2b00 cmp r3, #0 @@ -3403,7 +3409,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl ece: 9300 str r3, [sp, #0] ed0: 2354 movs r3, #84 ; 0x54 ed2: 6c00 ldr r0, [r0, #64] ; 0x40 - ed4: f022 fc3e bl 23754 + ed4: f022 fca0 bl 23818 ed8: e570 b.n 9bc if(!release){ eda: 2b00 cmp r3, #0 @@ -3416,7 +3422,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl ee8: 9300 str r3, [sp, #0] eea: 233d movs r3, #61 ; 0x3d eec: 6c00 ldr r0, [r0, #64] ; 0x40 - eee: f022 fc31 bl 23754 + eee: f022 fc93 bl 23818 ef2: e563 b.n 9bc if(!release){ ef4: 2b00 cmp r3, #0 @@ -3429,7 +3435,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl f02: 9300 str r3, [sp, #0] f04: 235e movs r3, #94 ; 0x5e f06: 6c00 ldr r0, [r0, #64] ; 0x40 - f08: f022 fc24 bl 23754 + f08: f022 fc86 bl 23818 f0c: e556 b.n 9bc if(!release){ f0e: 2b00 cmp r3, #0 @@ -3442,7 +3448,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl f1c: 9300 str r3, [sp, #0] f1e: 232d movs r3, #45 ; 0x2d f20: 6c00 ldr r0, [r0, #64] ; 0x40 - f22: f022 fc17 bl 23754 + f22: f022 fc79 bl 23818 f26: e549 b.n 9bc f28: f8d0 50d4 ldr.w r5, [r0, #212] ; 0xd4 if(controller.getTransportMarker()){ @@ -3456,7 +3462,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl f3c: e9cd 1500 strd r1, r5, [sp] f40: 4611 mov r1, r2 f42: 6c00 ldr r0, [r0, #64] ; 0x40 - f44: f022 fc06 bl 23754 + f44: f022 fc68 bl 23818 midi.sendNoteOff(BMC_USB, 1, note, 0); f48: 2201 movs r2, #1 f4a: 235b movs r3, #91 ; 0x5b @@ -3472,7 +3478,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl f5c: 9300 str r3, [sp, #0] f5e: 2335 movs r3, #53 ; 0x35 f60: 6c00 ldr r0, [r0, #64] ; 0x40 - f62: f022 fbf7 bl 23754 + f62: f022 fc59 bl 23818 f66: e529 b.n 9bc if(!release){ f68: 2b00 cmp r3, #0 @@ -3485,7 +3491,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl f76: 9300 str r3, [sp, #0] f78: 234d movs r3, #77 ; 0x4d f7a: 6c00 ldr r0, [r0, #64] ; 0x40 - f7c: f022 fbea bl 23754 + f7c: f022 fc4c bl 23818 f80: e51c b.n 9bc if(!release){ f82: 2b00 cmp r3, #0 @@ -3498,7 +3504,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl f90: 9300 str r3, [sp, #0] f92: 2345 movs r3, #69 ; 0x45 f94: 6c00 ldr r0, [r0, #64] ; 0x40 - f96: f022 fbdd bl 23754 + f96: f022 fc3f bl 23818 f9a: e50f b.n 9bc if(!release){ f9c: 2b00 cmp r3, #0 @@ -3511,7 +3517,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl faa: 9300 str r3, [sp, #0] fac: 2364 movs r3, #100 ; 0x64 fae: 6c00 ldr r0, [r0, #64] ; 0x40 - fb0: f022 fbd0 bl 23754 + fb0: f022 fc32 bl 23818 fb4: e502 b.n 9bc if(!release){ fb6: 2b00 cmp r3, #0 @@ -3524,7 +3530,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl fc4: 9300 str r3, [sp, #0] fc6: 233f movs r3, #63 ; 0x3f fc8: 6c00 ldr r0, [r0, #64] ; 0x40 - fca: f022 fbc3 bl 23754 + fca: f022 fc25 bl 23818 fce: e4f5 b.n 9bc if(!release){ fd0: 2b00 cmp r3, #0 @@ -3537,7 +3543,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl fde: 9300 str r3, [sp, #0] fe0: 2360 movs r3, #96 ; 0x60 fe2: 6c00 ldr r0, [r0, #64] ; 0x40 - fe4: f022 fbb6 bl 23754 + fe4: f022 fc18 bl 23818 fe8: e4e8 b.n 9bc if(!release){ fea: 2b00 cmp r3, #0 @@ -3550,7 +3556,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl ff8: 9300 str r3, [sp, #0] ffa: 232e movs r3, #46 ; 0x2e ffc: 6c00 ldr r0, [r0, #64] ; 0x40 - ffe: f022 fba9 bl 23754 + ffe: f022 fc0b bl 23818 1002: e4db b.n 9bc case BMC_DAW_CMD_FADER_TOUCH: sendNote(0x68+ch, release); break; 1004: f106 0268 add.w r2, r6, #104 ; 0x68 @@ -3569,7 +3575,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 1020: 9300 str r3, [sp, #0] 1022: 2337 movs r3, #55 ; 0x37 1024: 6c00 ldr r0, [r0, #64] ; 0x40 - 1026: f022 fb95 bl 23754 + 1026: f022 fbf7 bl 23818 102a: e4c7 b.n 9bc if(!release){ 102c: 2b00 cmp r3, #0 @@ -3582,7 +3588,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 103a: 9300 str r3, [sp, #0] 103c: 2333 movs r3, #51 ; 0x33 103e: 6c00 ldr r0, [r0, #64] ; 0x40 - 1040: f022 fb88 bl 23754 + 1040: f022 fbea bl 23818 1044: e4ba b.n 9bc if(!release){ 1046: 2b00 cmp r3, #0 @@ -3595,7 +3601,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 1054: 9300 str r3, [sp, #0] 1056: 2351 movs r3, #81 ; 0x51 1058: 6c00 ldr r0, [r0, #64] ; 0x40 - 105a: f022 fb7b bl 23754 + 105a: f022 fbdd bl 23818 105e: e4ad b.n 9bc if(!release){ 1060: 2b00 cmp r3, #0 @@ -3608,7 +3614,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 106e: 9300 str r3, [sp, #0] 1070: 2347 movs r3, #71 ; 0x47 1072: 6c00 ldr r0, [r0, #64] ; 0x40 - 1074: f022 fb6e bl 23754 + 1074: f022 fbd0 bl 23818 1078: e4a0 b.n 9bc if(!release){ 107a: 2b00 cmp r3, #0 @@ -3621,7 +3627,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 1088: 9300 str r3, [sp, #0] 108a: 235c movs r3, #92 ; 0x5c 108c: 6c00 ldr r0, [r0, #64] ; 0x40 - 108e: f022 fb61 bl 23754 + 108e: f022 fbc3 bl 23818 1092: e493 b.n 9bc if(!release){ 1094: 2b00 cmp r3, #0 @@ -3634,7 +3640,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 10a2: 9300 str r3, [sp, #0] 10a4: 233b movs r3, #59 ; 0x3b 10a6: 6c00 ldr r0, [r0, #64] ; 0x40 - 10a8: f022 fb54 bl 23754 + 10a8: f022 fbb6 bl 23818 10ac: e486 b.n 9bc if(!release){ 10ae: 2b00 cmp r3, #0 @@ -3647,7 +3653,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 10bc: 9300 str r3, [sp, #0] 10be: 234b movs r3, #75 ; 0x4b 10c0: 6c00 ldr r0, [r0, #64] ; 0x40 - 10c2: f022 fb47 bl 23754 + 10c2: f022 fba9 bl 23818 10c6: e479 b.n 9bc if(!release){ 10c8: 2b00 cmp r3, #0 @@ -3660,7 +3666,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 10d6: 9300 str r3, [sp, #0] 10d8: 232b movs r3, #43 ; 0x2b 10da: 6c00 ldr r0, [r0, #64] ; 0x40 - 10dc: f022 fb3a bl 23754 + 10dc: f022 fb9c bl 23818 10e0: e46c b.n 9bc if(!release){ 10e2: b9db cbnz r3, 111c @@ -3672,7 +3678,7 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 10ec: 9300 str r3, [sp, #0] 10ee: 2343 movs r3, #67 ; 0x43 10f0: 6c00 ldr r0, [r0, #64] ; 0x40 - 10f2: f022 fb2f bl 23754 + 10f2: f022 fb91 bl 23818 10f6: e461 b.n 9bc sendButtonCommand(delayCmd, delayCh, true); 10f8: 9700 str r7, [sp, #0] @@ -3844,35 +3850,35 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 123e: 4611 mov r1, r2 1240: e9cd 6500 strd r6, r5, [sp] 1244: 6c00 ldr r0, [r0, #64] ; 0x40 - 1246: f022 fa85 bl 23754 + 1246: f022 fae7 bl 23818 midi.sendNoteOff(BMC_USB, 1, note, 0); 124a: 2201 movs r2, #1 124c: 2354 movs r3, #84 ; 0x54 124e: 4611 mov r1, r2 1250: e9cd 5500 strd r5, r5, [sp] 1254: 6c20 ldr r0, [r4, #64] ; 0x40 - 1256: f022 fbd1 bl 239fc + 1256: f022 fc35 bl 23ac4 midi.sendNoteOn(BMC_USB, 1, note, 127); 125a: 2201 movs r2, #1 125c: 235c movs r3, #92 ; 0x5c 125e: 4611 mov r1, r2 1260: e9cd 6500 strd r6, r5, [sp] 1264: 6c20 ldr r0, [r4, #64] ; 0x40 - 1266: f022 fa75 bl 23754 + 1266: f022 fad7 bl 23818 midi.sendNoteOff(BMC_USB, 1, note, 0); 126a: 2201 movs r2, #1 126c: 235c movs r3, #92 ; 0x5c 126e: 4611 mov r1, r2 1270: e9cd 5500 strd r5, r5, [sp] 1274: 6c20 ldr r0, [r4, #64] ; 0x40 - 1276: f022 fbc1 bl 239fc + 1276: f022 fc25 bl 23ac4 midi.sendNoteOn(BMC_USB, 1, note, 127); 127a: 2201 movs r2, #1 127c: 2354 movs r3, #84 ; 0x54 127e: 4611 mov r1, r2 1280: e9cd 6500 strd r6, r5, [sp] 1284: 6c20 ldr r0, [r4, #64] ; 0x40 - 1286: f022 fa65 bl 23754 + 1286: f022 fac7 bl 23818 midi.sendNoteOff(BMC_USB, 1, note, 0); 128a: 2201 movs r2, #1 128c: 2354 movs r3, #84 ; 0x54 @@ -3884,21 +3890,21 @@ long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enabl 1298: 4611 mov r1, r2 129a: e9cd 6500 strd r6, r5, [sp] 129e: 6c00 ldr r0, [r0, #64] ; 0x40 - 12a0: f022 fa58 bl 23754 + 12a0: f022 faba bl 23818 midi.sendNoteOff(BMC_USB, 1, note, 0); 12a4: 2201 movs r2, #1 12a6: 2354 movs r3, #84 ; 0x54 12a8: 4611 mov r1, r2 12aa: e9cd 5500 strd r5, r5, [sp] 12ae: 6c20 ldr r0, [r4, #64] ; 0x40 - 12b0: f022 fba4 bl 239fc + 12b0: f022 fc08 bl 23ac4 midi.sendNoteOn(BMC_USB, 1, note, 127); 12b4: 2201 movs r2, #1 12b6: 235b movs r3, #91 ; 0x5b 12b8: 4611 mov r1, r2 12ba: e9cd 6500 strd r6, r5, [sp] 12be: 6c20 ldr r0, [r4, #64] ; 0x40 - 12c0: f022 fa48 bl 23754 + 12c0: f022 faaa bl 23818 midi.sendNoteOff(BMC_USB, 1, note, 0); 12c4: 2201 movs r2, #1 12c6: 235b movs r3, #91 ; 0x5b @@ -4089,7 +4095,7 @@ struct BMCMidiMessage { 1422: 2400 movs r4, #0 1424: 6800 ldr r0, [r0, #0] 1426: e9cd 4501 strd r4, r5, [sp, #4] - 142a: f021 fe4d bl 230c8 + 142a: f021 feb3 bl 23194 } 142e: b047 add sp, #284 ; 0x11c 1430: bdf0 pop {r4, r5, r6, r7, pc} @@ -4265,7 +4271,7 @@ struct BMCMidiMessage { 1544: b083 sub sp, #12 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { 1546: b133 cbz r3, 1556 - 1548: 4a6c ldr r2, [pc, #432] ; (16fc ) + 1548: 4a69 ldr r2, [pc, #420] ; (16f0 ) 154a: f8b0 1150 ldrh.w r1, [r0, #336] ; 0x150 154e: 6812 ldr r2, [r2, #0] 1550: 1ad3 subs r3, r2, r3 @@ -4280,7 +4286,7 @@ struct BMCMidiMessage { bool syncReady(){ return resyncTimer.active() && resyncTimer.complete(); 1558: b12b cbz r3, 1566 - 155a: 4a68 ldr r2, [pc, #416] ; (16fc ) + 155a: 4a65 ldr r2, [pc, #404] ; (16f0 ) if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { 155c: 8e21 ldrh r1, [r4, #48] ; 0x30 155e: 6812 ldr r2, [r2, #0] @@ -4291,7 +4297,7 @@ struct BMCMidiMessage { 1566: 6ae3 ldr r3, [r4, #44] ; 0x2c return syncTimer.active() && syncTimer.complete(); 1568: b12b cbz r3, 1576 - 156a: 4a64 ldr r2, [pc, #400] ; (16fc ) + 156a: 4a61 ldr r2, [pc, #388] ; (16f0 ) if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { 156c: 8d21 ldrh r1, [r4, #40] ; 0x28 156e: 6812 ldr r2, [r2, #0] @@ -4302,17 +4308,17 @@ struct BMCMidiMessage { 1576: 6923 ldr r3, [r4, #16] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { 1578: b133 cbz r3, 1588 - 157a: 4a60 ldr r2, [pc, #384] ; (16fc ) + 157a: 4a5d ldr r2, [pc, #372] ; (16f0 ) 157c: 89a1 ldrh r1, [r4, #12] 157e: 6812 ldr r2, [r2, #0] 1580: 1ad3 subs r3, r2, r3 1582: 428b cmp r3, r1 - 1584: f080 80ab bcs.w 16de + 1584: f080 80a6 bcs.w 16d4 return (prevTime>0); 1588: 69a3 ldr r3, [r4, #24] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { 158a: b12b cbz r3, 1598 - 158c: 4d5b ldr r5, [pc, #364] ; (16fc ) + 158c: 4d58 ldr r5, [pc, #352] ; (16f0 ) 158e: 8aa1 ldrh r1, [r4, #20] 1590: 682a ldr r2, [r5, #0] 1592: 1ad3 subs r3, r2, r3 @@ -4345,18 +4351,18 @@ struct BMCMidiMessage { 15ac: f884 014f strb.w r0, [r4, #335] ; 0x14f 15b0: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 15b4: f8c4 0154 str.w r0, [r4, #340] ; 0x154 - 15b8: f8d3 30dc ldr.w r3, [r3, #220] ; 0xdc + 15b8: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 pitch = 0; 15bc: f8c4 0148 str.w r0, [r4, #328] ; 0x148 15c0: b103 cbz r3, 15c4 midi.callback.fasTunerStateChange(false); 15c2: 4798 blx r3 15c4: 2113 movs r1, #19 - 15c6: 484e ldr r0, [pc, #312] ; (1700 ) - 15c8: f02a ffbe bl 2c548 + 15c6: 484b ldr r0, [pc, #300] ; (16f4 ) + 15c8: f02b f832 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 15cc: 484d ldr r0, [pc, #308] ; (1704 ) - 15ce: f028 fc51 bl 29e74 + 15cc: 484a ldr r0, [pc, #296] ; (16f8 ) + 15ce: f028 fcc7 bl 29f60 15d2: e7c0 b.n 1556 void reSync(uint16_t t_time = BMC_FAS3_POLL_TIME){ resyncTimer.start(t_time); @@ -4369,7 +4375,7 @@ struct BMCMidiMessage { if(connected()){ 15d8: 07d2 lsls r2, r2, #31 15da: 61a3 str r3, [r4, #24] - 15dc: f100 8086 bmi.w 16ec + 15dc: f100 8081 bmi.w 16e2 interval = value; 15e0: f44f 727a mov.w r2, #1000 ; 0x3e8 15e4: 682b ldr r3, [r5, #0] @@ -4396,20 +4402,20 @@ struct BMCMidiMessage { 1608: 05d9 lsls r1, r3, #23 160a: d5ac bpl.n 1566 160c: 210b movs r1, #11 - 160e: 483e ldr r0, [pc, #248] ; (1708 ) - 1610: f02a ff9a bl 2c548 - 1614: 483b ldr r0, [pc, #236] ; (1704 ) - 1616: f028 fc2d bl 29e74 + 160e: 483b ldr r0, [pc, #236] ; (16fc ) + 1610: f02b f80e bl 2c630 + 1614: 4838 ldr r0, [pc, #224] ; (16f8 ) + 1616: f028 fca3 bl 29f60 161a: 210b movs r1, #11 - 161c: 483b ldr r0, [pc, #236] ; (170c ) - 161e: f02a ff93 bl 2c548 - 1622: 4838 ldr r0, [pc, #224] ; (1704 ) - 1624: f028 fc26 bl 29e74 + 161c: 4838 ldr r0, [pc, #224] ; (1700 ) + 161e: f02b f807 bl 2c630 + 1622: 4835 ldr r0, [pc, #212] ; (16f8 ) + 1624: f028 fc9c bl 29f60 1628: 210b movs r1, #11 - 162a: 4837 ldr r0, [pc, #220] ; (1708 ) - 162c: f02a ff8c bl 2c548 - 1630: 4834 ldr r0, [pc, #208] ; (1704 ) - 1632: f028 fc1f bl 29e74 + 162a: 4834 ldr r0, [pc, #208] ; (16fc ) + 162c: f02b f800 bl 2c630 + 1630: 4831 ldr r0, [pc, #196] ; (16f8 ) + 1632: f028 fc95 bl 29f60 1636: e796 b.n 1566 } return false; @@ -4463,3743 +4469,3750 @@ struct BMCMidiMessage { strcpy(name, ""); 1674: f884 503c strb.w r5, [r4, #60] ; 0x3c memset(blockStates, 0, sizeof(blockStates)); - 1678: f02c ff08 bl 2e48c + 1678: f02c ff7c bl 2e574 lastBlockCrc = 0xFF; 167c: 23ff movs r3, #255 ; 0xff 167e: 2115 movs r1, #21 - pitch = 0; - 1680: f8c4 5148 str.w r5, [r4, #328] ; 0x148 - 1684: f884 3140 strb.w r3, [r4, #320] ; 0x140 + 1680: 4820 ldr r0, [pc, #128] ; (1704 ) + 1682: f884 3140 strb.w r3, [r4, #320] ; 0x140 sceneCount = -1; - 1688: f884 303b strb.w r3, [r4, #59] ; 0x3b + 1686: f884 303b strb.w r3, [r4, #59] ; 0x3b + pitch = 0; + 168a: f8c4 5148 str.w r5, [r4, #328] ; 0x148 stringNumber = 0; - 168c: f8a4 5144 strh.w r5, [r4, #324] ; 0x144 + 168e: f8a4 5144 strh.w r5, [r4, #324] ; 0x144 pitchRaw = 0; - 1690: f884 5146 strb.w r5, [r4, #326] ; 0x146 + 1692: f884 5146 strb.w r5, [r4, #326] ; 0x146 strcpy(noteName, ""); - 1694: f884 514c strb.w r5, [r4, #332] ; 0x14c - 1698: f8c4 5154 str.w r5, [r4, #340] ; 0x154 + 1696: f884 514c strb.w r5, [r4, #332] ; 0x14c + 169a: f8c4 5154 str.w r5, [r4, #340] ; 0x154 flags = 0; - 169c: f884 514f strb.w r5, [r4, #335] ; 0x14f - 16a0: 61a5 str r5, [r4, #24] + 169e: f884 514f strb.w r5, [r4, #335] ; 0x14f + 16a2: 61a5 str r5, [r4, #24] scenePolled = 0; - 16a2: f884 5142 strb.w r5, [r4, #322] ; 0x142 - 16a6: 481a ldr r0, [pc, #104] ; (1710 ) - 16a8: f02a ff4e bl 2c548 - 16ac: 4815 ldr r0, [pc, #84] ; (1704 ) - 16ae: f028 fbe1 bl 29e74 - midi.flush(); - 16b2: 6825 ldr r5, [r4, #0] + 16a4: f884 5142 strb.w r5, [r4, #322] ; 0x142 + 16a8: f02a ffc2 bl 2c630 + 16ac: 4812 ldr r0, [pc, #72] ; (16f8 ) + 16ae: f028 fc57 bl 29f60 void begin(){ Port.begin(31250); } void flush(){ Port.flush(); - 16b4: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 16b2: 6823 ldr r3, [r4, #0] + 16b4: f8d3 0938 ldr.w r0, [r3, #2360] ; 0x938 16b8: 6803 ldr r3, [r0, #0] 16ba: 68db ldr r3, [r3, #12] 16bc: 4798 blx r3 - 16be: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 16c2: 6803 ldr r3, [r0, #0] - 16c4: 68db ldr r3, [r3, #12] - 16c6: 4798 blx r3 if(midi.callback.fasConnection){ - 16c8: 6823 ldr r3, [r4, #0] - 16ca: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 16ce: f8d3 30c8 ldr.w r3, [r3, #200] ; 0xc8 - 16d2: 2b00 cmp r3, #0 - 16d4: f43f af4f beq.w 1576 + 16be: 6823 ldr r3, [r4, #0] + 16c0: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 16c4: f8d3 30cc ldr.w r3, [r3, #204] ; 0xcc + 16c8: 2b00 cmp r3, #0 + 16ca: f43f af54 beq.w 1576 midi.callback.fasConnection(false); - 16d8: 2000 movs r0, #0 - 16da: 4798 blx r3 - 16dc: e74b b.n 1576 + 16ce: 2000 movs r0, #0 + 16d0: 4798 blx r3 + 16d2: e750 b.n 1576 bitClear(flags, bit); - 16de: 8923 ldrh r3, [r4, #8] - 16e0: 2200 movs r2, #0 - 16e2: f023 0304 bic.w r3, r3, #4 - 16e6: 6122 str r2, [r4, #16] - 16e8: 8123 strh r3, [r4, #8] + 16d4: 8923 ldrh r3, [r4, #8] + 16d6: 2200 movs r2, #0 + 16d8: f023 0304 bic.w r3, r3, #4 + 16dc: 6122 str r2, [r4, #16] + 16de: 8123 strh r3, [r4, #8] } - 16ea: e74d b.n 1588 + 16e0: e752 b.n 1588 fetchSysEx(BMC_FAS3_FUNC_ID_LOOPER, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 16ec: 227f movs r2, #127 ; 0x7f - 16ee: 210f movs r1, #15 - 16f0: 4620 mov r0, r4 - 16f2: 9300 str r3, [sp, #0] - 16f4: f7ff fe6c bl 13d0 - } - 16f8: e772 b.n 15e0 - 16fa: bf00 nop - 16fc: 2000bae8 .word 0x2000bae8 - 1700: 200036ac .word 0x200036ac - 1704: 20004ba8 .word 0x20004ba8 - 1708: 200036c0 .word 0x200036c0 - 170c: 200036cc .word 0x200036cc - 1710: 200036d8 .word 0x200036d8 - -00001714 : + 16e2: 227f movs r2, #127 ; 0x7f + 16e4: 210f movs r1, #15 + 16e6: 4620 mov r0, r4 + 16e8: 9300 str r3, [sp, #0] + 16ea: f7ff fe71 bl 13d0 + } + 16ee: e777 b.n 15e0 + 16f0: 2000bb08 .word 0x2000bb08 + 16f4: 2000376c .word 0x2000376c + 16f8: 20004c68 .word 0x20004c68 + 16fc: 20003780 .word 0x20003780 + 1700: 2000378c .word 0x2000378c + 1704: 20003798 .word 0x20003798 + +00001708 : return (prevTime>0); - 1714: 6943 ldr r3, [r0, #20] + 1708: 6943 ldr r3, [r0, #20] flags.write(BMC_BEATBUDDY_FLAG_SYNC_ENABLED,t_value); if(!isSyncEnabled()){ reset(); } } void update(){ - 1716: b530 push {r4, r5, lr} - 1718: 4604 mov r4, r0 - 171a: ed2d 8b02 vpush {d8} - 171e: b083 sub sp, #12 + 170a: b530 push {r4, r5, lr} + 170c: 4604 mov r4, r0 + 170e: ed2d 8b02 vpush {d8} + 1712: b083 sub sp, #12 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 1720: b133 cbz r3, 1730 - 1722: 4a61 ldr r2, [pc, #388] ; (18a8 ) - 1724: 8a01 ldrh r1, [r0, #16] - 1726: 6812 ldr r2, [r2, #0] - 1728: 1ad3 subs r3, r2, r3 - 172a: 4299 cmp r1, r3 - 172c: f240 80a9 bls.w 1882 + 1714: b133 cbz r3, 1724 + 1716: 4a61 ldr r2, [pc, #388] ; (189c ) + 1718: 8a01 ldrh r1, [r0, #16] + 171a: 6812 ldr r2, [r2, #0] + 171c: 1ad3 subs r3, r2, r3 + 171e: 4299 cmp r1, r3 + 1720: f240 80a9 bls.w 1876 if(bitRead(flags, bit)){ - 1730: 7b63 ldrb r3, [r4, #13] - 1732: 071d lsls r5, r3, #28 - 1734: d453 bmi.n 17de - 1736: 06d8 lsls r0, r3, #27 - 1738: d442 bmi.n 17c0 + 1724: 7b63 ldrb r3, [r4, #13] + 1726: 071d lsls r5, r3, #28 + 1728: d453 bmi.n 17d2 + 172a: 06d8 lsls r0, r3, #27 + 172c: d442 bmi.n 17b4 bool checkExpressionBounds(uint8_t prev, uint8_t next, uint8_t tolerance){ return (prev>=(next+tolerance) || ((prev>=tolerance) && prev<=(next-tolerance))); } bool inSync(){ return isSyncEnabled() && flags.read(BMC_BEATBUDDY_FLAG_SYNCED); - 173a: 07d9 lsls r1, r3, #31 - 173c: d53c bpl.n 17b8 - 173e: 079a lsls r2, r3, #30 - 1740: d53a bpl.n 17b8 + 172e: 07d9 lsls r1, r3, #31 + 1730: d53c bpl.n 17ac + 1732: 079a lsls r2, r3, #30 + 1734: d53a bpl.n 17ac } bool timeSignatureTriggered(){ return flags.toggleIfTrue(BMC_BEATBUDDY_FLAG_TIME_SIGN_TRIGGERED); } bool isTimeSignatureAvailable(){ return (inSync() && flags.read(BMC_BEATBUDDY_FLAG_PLAYING) && timeSignature.available()); - 1742: 075b lsls r3, r3, #29 - 1744: d538 bpl.n 17b8 + 1736: 075b lsls r3, r3, #29 + 1738: d538 bpl.n 17ac return numerator>0&&denominator>0; - 1746: 7a21 ldrb r1, [r4, #8] - 1748: b3b1 cbz r1, 17b8 - 174a: 7a63 ldrb r3, [r4, #9] - 174c: b3a3 cbz r3, 17b8 + 173a: 7a21 ldrb r1, [r4, #8] + 173c: b3b1 cbz r1, 17ac + 173e: 7a63 ldrb r3, [r4, #9] + 1740: b3a3 cbz r3, 17ac float x = ((float)100/(float)numerator) * (float)beat; - 174e: ee07 1a90 vmov s15, r1 - 1752: eddf 6a56 vldr s13, [pc, #344] ; 18ac - 1756: 7b23 ldrb r3, [r4, #12] + 1742: ee07 1a90 vmov s15, r1 + 1746: eddf 6a56 vldr s13, [pc, #344] ; 18a0 + 174a: 7b23 ldrb r3, [r4, #12] // mapping. template T map(T x, A in_min, B in_max, C out_min, D out_max, typename std::enable_if::value >::type* = 0) { // when the input is a float or double, do all math using the input's type return (x - (T)in_min) * ((T)out_max - (T)out_min) / ((T)in_max - (T)in_min) + (T)out_min; - 1758: eeb3 7a0f vmov.f32 s14, #63 ; 0x41f80000 31.0 - 175c: eef8 5a67 vcvt.f32.u32 s11, s15 + 174c: eeb3 7a0f vmov.f32 s14, #63 ; 0x41f80000 31.0 + 1750: eef8 5a67 vcvt.f32.u32 s11, s15 } bool beatLocationChanged(){ uint8_t bl = timeSignature.getBeatLocation(); if(beatLocation!= bl){ - 1760: 7ee2 ldrb r2, [r4, #27] - 1762: eeb7 6a00 vmov.f32 s12, #112 ; 0x3f800000 1.0 - 1766: eec6 7aa5 vdiv.f32 s15, s13, s11 - 176a: ee05 3a90 vmov s11, r3 + 1754: 7ee2 ldrb r2, [r4, #27] + 1756: eeb7 6a00 vmov.f32 s12, #112 ; 0x3f800000 1.0 + 175a: eec6 7aa5 vdiv.f32 s15, s13, s11 + 175e: ee05 3a90 vmov s11, r3 beat++; - 176e: 3301 adds r3, #1 - 1770: b2db uxtb r3, r3 + 1762: 3301 adds r3, #1 + 1764: b2db uxtb r3, r3 float x = ((float)100/(float)numerator) * (float)beat; - 1772: eef8 5a65 vcvt.f32.u32 s11, s11 + 1766: eef8 5a65 vcvt.f32.u32 s11, s11 beat = 1; - 1776: 4299 cmp r1, r3 - 1778: bf38 it cc - 177a: 2301 movcc r3, #1 - 177c: 7323 strb r3, [r4, #12] + 176a: 4299 cmp r1, r3 + 176c: bf38 it cc + 176e: 2301 movcc r3, #1 + 1770: 7323 strb r3, [r4, #12] float x = ((float)100/(float)numerator) * (float)beat; - 177e: ee67 7aa5 vmul.f32 s15, s15, s11 - 1782: ee67 7a87 vmul.f32 s15, s15, s14 - 1786: ee87 7aa6 vdiv.f32 s14, s15, s13 - 178a: ee77 7a06 vadd.f32 s15, s14, s12 + 1772: ee67 7aa5 vmul.f32 s15, s15, s11 + 1776: ee67 7a87 vmul.f32 s15, s15, s14 + 177a: ee87 7aa6 vdiv.f32 s14, s15, s13 + 177e: ee77 7a06 vadd.f32 s15, s14, s12 return map(x,0,100,1,32); - 178e: eefc 7ae7 vcvt.u32.f32 s15, s15 - 1792: edcd 7a01 vstr s15, [sp, #4] - 1796: f89d 0004 ldrb.w r0, [sp, #4] - 179a: 4282 cmp r2, r0 - 179c: d00c beq.n 17b8 + 1782: eefc 7ae7 vcvt.u32.f32 s15, s15 + 1786: edcd 7a01 vstr s15, [sp, #4] + 178a: f89d 0004 ldrb.w r0, [sp, #4] + 178e: 4282 cmp r2, r0 + 1790: d00c beq.n 17ac if(isTimeSignatureAvailable() && beatLocationChanged() && midi.callback.beatBuddyBeatLocation){ - 179e: 6823 ldr r3, [r4, #0] + 1792: 6823 ldr r3, [r4, #0] beatLocation = bl; - 17a0: 76e0 strb r0, [r4, #27] + 1794: 76e0 strb r0, [r4, #27] if(isTimeSignatureAvailable() && beatLocationChanged() && midi.callback.beatBuddyBeatLocation){ - 17a2: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 17a6: f8d3 30c4 ldr.w r3, [r3, #196] ; 0xc4 - 17aa: b12b cbz r3, 17b8 + 1796: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 179a: f8d3 30c8 ldr.w r3, [r3, #200] ; 0xc8 + 179e: b12b cbz r3, 17ac } - 17ac: b003 add sp, #12 - 17ae: ecbd 8b02 vpop {d8} - 17b2: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 17a0: b003 add sp, #12 + 17a2: ecbd 8b02 vpop {d8} + 17a6: e8bd 4030 ldmia.w sp!, {r4, r5, lr} midi.callback.beatBuddyBeatLocation(getBeatLocation(), getTimeSignatureNumerator()); - 17b6: 4718 bx r3 + 17aa: 4718 bx r3 } - 17b8: b003 add sp, #12 - 17ba: ecbd 8b02 vpop {d8} - 17be: bd30 pop {r4, r5, pc} + 17ac: b003 add sp, #12 + 17ae: ecbd 8b02 vpop {d8} + 17b2: bd30 pop {r4, r5, pc} bitClear(flags, bit); - 17c0: f003 03ef and.w r3, r3, #239 ; 0xef + 17b4: f003 03ef and.w r3, r3, #239 ; 0xef if(hasStopped() && midi.callback.beatBuddyBeatLocation){ - 17c4: 6822 ldr r2, [r4, #0] - 17c6: 7363 strb r3, [r4, #13] - 17c8: f8d2 2104 ldr.w r2, [r2, #260] ; 0x104 - 17cc: f8d2 20c4 ldr.w r2, [r2, #196] ; 0xc4 - 17d0: 2a00 cmp r2, #0 - 17d2: d0b2 beq.n 173a + 17b8: 6822 ldr r2, [r4, #0] + 17ba: 7363 strb r3, [r4, #13] + 17bc: f8d2 2104 ldr.w r2, [r2, #260] ; 0x104 + 17c0: f8d2 20c8 ldr.w r2, [r2, #200] ; 0xc8 + 17c4: 2a00 cmp r2, #0 + 17c6: d0b2 beq.n 172e midi.callback.beatBuddyBeatLocation(0, getTimeSignatureNumerator()); - 17d4: 7a21 ldrb r1, [r4, #8] - 17d6: 2000 movs r0, #0 - 17d8: 4790 blx r2 + 17c8: 7a21 ldrb r1, [r4, #8] + 17ca: 2000 movs r0, #0 + 17cc: 4790 blx r2 return bitRead(flags, bit); - 17da: 7b63 ldrb r3, [r4, #13] - 17dc: e7ad b.n 173a + 17ce: 7b63 ldrb r3, [r4, #13] + 17d0: e7ad b.n 172e bitClear(flags, bit); - 17de: f003 03f7 and.w r3, r3, #247 ; 0xf7 + 17d2: f003 03f7 and.w r3, r3, #247 ; 0xf7 if(timeSignatureTriggered() && midi.callback.beatBuddyBeatLocation){ - 17e2: 6822 ldr r2, [r4, #0] - 17e4: 7363 strb r3, [r4, #13] - 17e6: f8d2 2104 ldr.w r2, [r2, #260] ; 0x104 - 17ea: f8d2 20c4 ldr.w r2, [r2, #196] ; 0xc4 - 17ee: 2a00 cmp r2, #0 - 17f0: d0a1 beq.n 1736 + 17d6: 6822 ldr r2, [r4, #0] + 17d8: 7363 strb r3, [r4, #13] + 17da: f8d2 2104 ldr.w r2, [r2, #260] ; 0x104 + 17de: f8d2 20c8 ldr.w r2, [r2, #200] ; 0xc8 + 17e2: 2a00 cmp r2, #0 + 17e4: d0a1 beq.n 172a float x = ((float)100/(float) getTimeSignatureNumerator())*1.0; - 17f2: 7a23 ldrb r3, [r4, #8] - 17f4: eeb3 7a0f vmov.f32 s14, #63 ; 0x41f80000 31.0 - 17f8: eddf 6a2c vldr s13, [pc, #176] ; 18ac - 17fc: eeb7 6a00 vmov.f32 s12, #112 ; 0x3f800000 1.0 - 1800: ee07 3a90 vmov s15, r3 - 1804: 2118 movs r1, #24 - 1806: 482a ldr r0, [pc, #168] ; (18b0 ) - 1808: eef8 7a67 vcvt.f32.u32 s15, s15 - 180c: ee86 8aa7 vdiv.f32 s16, s13, s15 - 1810: ee28 7a07 vmul.f32 s14, s16, s14 - 1814: eec7 7a26 vdiv.f32 s15, s14, s13 - 1818: ee77 7a86 vadd.f32 s15, s15, s12 + 17e6: 7a23 ldrb r3, [r4, #8] + 17e8: eeb3 7a0f vmov.f32 s14, #63 ; 0x41f80000 31.0 + 17ec: eddf 6a2c vldr s13, [pc, #176] ; 18a0 + 17f0: eeb7 6a00 vmov.f32 s12, #112 ; 0x3f800000 1.0 + 17f4: ee07 3a90 vmov s15, r3 + 17f8: 2118 movs r1, #24 + 17fa: 482a ldr r0, [pc, #168] ; (18a4 ) + 17fc: eef8 7a67 vcvt.f32.u32 s15, s15 + 1800: ee86 8aa7 vdiv.f32 s16, s13, s15 + 1804: ee28 7a07 vmul.f32 s14, s16, s14 + 1808: eec7 7a26 vdiv.f32 s15, s14, s13 + 180c: ee77 7a86 vadd.f32 s15, s15, s12 uint8_t y = map(x, 0, 100, 1, 32); - 181c: eefc 7ae7 vcvt.u32.f32 s15, s15 - 1820: edcd 7a01 vstr s15, [sp, #4] - 1824: f89d 5004 ldrb.w r5, [sp, #4] - 1828: f02a fe8e bl 2c548 - 182c: 2101 movs r1, #1 - 182e: 4821 ldr r0, [pc, #132] ; (18b4 ) - 1830: f02a fe8a bl 2c548 + 1810: eefc 7ae7 vcvt.u32.f32 s15, s15 + 1814: edcd 7a01 vstr s15, [sp, #4] + 1818: f89d 5004 ldrb.w r5, [sp, #4] + 181c: f02a ff08 bl 2c630 + 1820: 2101 movs r1, #1 + 1822: 4821 ldr r0, [pc, #132] ; (18a8 ) + 1824: f02a ff04 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 1834: 2300 movs r3, #0 - 1836: 220a movs r2, #10 - 1838: 7a21 ldrb r1, [r4, #8] - 183a: 481f ldr r0, [pc, #124] ; (18b8 ) - 183c: f028 fb36 bl 29eac - 1840: 2101 movs r1, #1 - 1842: 481c ldr r0, [pc, #112] ; (18b4 ) - 1844: f02a fe80 bl 2c548 + 1828: 2300 movs r3, #0 + 182a: 220a movs r2, #10 + 182c: 7a21 ldrb r1, [r4, #8] + 182e: 481f ldr r0, [pc, #124] ; (18ac ) + 1830: f028 fbb2 bl 29f98 + 1834: 2101 movs r1, #1 + 1836: 481c ldr r0, [pc, #112] ; (18a8 ) + 1838: f02a fefa bl 2c630 size_t print(double n, int digits = 2) { return printFloat(n, digits); } - 1848: eeb7 0ac8 vcvt.f64.f32 d0, s16 - 184c: 2102 movs r1, #2 - 184e: 481a ldr r0, [pc, #104] ; (18b8 ) - 1850: f028 fb42 bl 29ed8 - 1854: 2101 movs r1, #1 - 1856: 4817 ldr r0, [pc, #92] ; (18b4 ) - 1858: f02a fe76 bl 2c548 + 183c: eeb7 0ac8 vcvt.f64.f32 d0, s16 + 1840: 2102 movs r1, #2 + 1842: 481a ldr r0, [pc, #104] ; (18ac ) + 1844: f028 fbbc bl 29fc0 + 1848: 2101 movs r1, #1 + 184a: 4817 ldr r0, [pc, #92] ; (18a8 ) + 184c: f02a fef0 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 185c: 2300 movs r3, #0 - 185e: 220a movs r2, #10 - 1860: 4629 mov r1, r5 - 1862: 4815 ldr r0, [pc, #84] ; (18b8 ) - 1864: f028 fb22 bl 29eac + 1850: 2300 movs r3, #0 + 1852: 220a movs r2, #10 + 1854: 4629 mov r1, r5 + 1856: 4815 ldr r0, [pc, #84] ; (18ac ) + 1858: f028 fb9e bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 1868: 4813 ldr r0, [pc, #76] ; (18b8 ) - 186a: f028 fb03 bl 29e74 + 185c: 4813 ldr r0, [pc, #76] ; (18ac ) + 185e: f028 fb7f bl 29f60 midi.callback.beatBuddyBeatLocation(y, getTimeSignatureNumerator()); - 186e: 6823 ldr r3, [r4, #0] - 1870: 7a21 ldrb r1, [r4, #8] - 1872: 4628 mov r0, r5 - 1874: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 1878: f8d3 30c4 ldr.w r3, [r3, #196] ; 0xc4 - 187c: 4798 blx r3 + 1862: 6823 ldr r3, [r4, #0] + 1864: 7a21 ldrb r1, [r4, #8] + 1866: 4628 mov r0, r5 + 1868: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 186c: f8d3 30c8 ldr.w r3, [r3, #200] ; 0xc8 + 1870: 4798 blx r3 if(bitRead(flags, bit)){ - 187e: 7b63 ldrb r3, [r4, #13] - 1880: e759 b.n 1736 + 1872: 7b63 ldrb r3, [r4, #13] + 1874: e759 b.n 172a prevTime = 0; - 1882: 2500 movs r5, #0 - 1884: 2121 movs r1, #33 ; 0x21 - 1886: 480d ldr r0, [pc, #52] ; (18bc ) - 1888: 6165 str r5, [r4, #20] - 188a: f02a fe5d bl 2c548 + 1876: 2500 movs r5, #0 + 1878: 2121 movs r1, #33 ; 0x21 + 187a: 480d ldr r0, [pc, #52] ; (18b0 ) + 187c: 6165 str r5, [r4, #20] + 187e: f02a fed7 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 188e: 480a ldr r0, [pc, #40] ; (18b8 ) - 1890: f028 faf0 bl 29e74 + 1882: 480a ldr r0, [pc, #40] ; (18ac ) + 1884: f028 fb6c bl 29f60 bitClear(flags, bit); - 1894: 7b63 ldrb r3, [r4, #13] + 1888: 7b63 ldrb r3, [r4, #13] void bbStopped(){ flags.on(BMC_BEATBUDDY_FLAG_STOPPED); flags.off(BMC_BEATBUDDY_FLAG_PLAYING); flags.off(BMC_BEATBUDDY_FLAG_HALF_TIME); flags.off(BMC_BEATBUDDY_FLAG_DOUBLE_TIME); timeSignature.beat = 0; - 1896: 7325 strb r5, [r4, #12] - 1898: f023 0366 bic.w r3, r3, #102 ; 0x66 + 188a: 7325 strb r5, [r4, #12] + 188c: f023 0366 bic.w r3, r3, #102 ; 0x66 beatLocation = 0; songPart = 0; - 189c: 8365 strh r5, [r4, #26] - 189e: f043 0310 orr.w r3, r3, #16 - 18a2: 7363 strb r3, [r4, #13] + 1890: 8365 strh r5, [r4, #26] + 1892: f043 0310 orr.w r3, r3, #16 + 1896: 7363 strb r3, [r4, #13] //BMC_PRINTLN("BeatBuddy Stopped"); } - 18a4: e745 b.n 1732 - 18a6: bf00 nop - 18a8: 2000bae8 .word 0x2000bae8 - 18ac: 42c80000 .word 0x42c80000 - 18b0: 20001848 .word 0x20001848 - 18b4: 200023ec .word 0x200023ec - 18b8: 20004ba8 .word 0x20004ba8 - 18bc: 20001824 .word 0x20001824 + 1898: e745 b.n 1726 + 189a: bf00 nop + 189c: 2000bb08 .word 0x2000bb08 + 18a0: 42c80000 .word 0x42c80000 + 18a4: 20001848 .word 0x20001848 + 18a8: 200023ec .word 0x200023ec + 18ac: 20004c68 .word 0x20004c68 + 18b0: 20001824 .word 0x20001824 -000018c0 : +000018b4 : #if defined(BMC_USE_KEMPER) // handles Kemper devices see src/sync/BMC-Kemper.h BMCKemper kemper; #endif BMCSync( - 18c0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 18c4: 469a mov sl, r3 + 18b4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 18b8: 469a mov sl, r3 BMCCallbacks& t_callback ) : midi(t_midi), midiClock(t_midiClock), global(midi.globals.store.global), - 18c6: f8d1 3108 ldr.w r3, [r1, #264] ; 0x108 + 18ba: f8d1 3108 ldr.w r3, [r1, #264] ; 0x108 callback(t_callback) - 18ca: f8df 818c ldr.w r8, [pc, #396] ; 1a58 + 18be: f8df 818c ldr.w r8, [pc, #396] ; 1a4c BMCSync( - 18ce: b083 sub sp, #12 + 18c2: b083 sub sp, #12 global(midi.globals.store.global), - 18d0: 681b ldr r3, [r3, #0] + 18c4: 681b ldr r3, [r3, #0] BMCSync( - 18d2: 4604 mov r4, r0 - 18d4: 46c6 mov lr, r8 - 18d6: 460e mov r6, r1 + 18c6: 4604 mov r4, r0 + 18c8: 46c6 mov lr, r8 + 18ca: 460e mov r6, r1 global(midi.globals.store.global), - 18d8: f103 0b04 add.w fp, r3, #4 + 18cc: f103 0b04 add.w fp, r3, #4 callback(t_callback) - 18dc: f8c0 a00c str.w sl, [r0, #12] + 18d0: f8c0 a00c str.w sl, [r0, #12] midi(t_midi), - 18e0: 6001 str r1, [r0, #0] - 18e2: f100 0c10 add.w ip, r0, #16 + 18d4: 6001 str r1, [r0, #0] + 18d6: f100 0c10 add.w ip, r0, #16 global(midi.globals.store.global), - 18e6: f8c0 b008 str.w fp, [r0, #8] + 18da: f8c0 b008 str.w fp, [r0, #8] BMCTimerBase(){ - 18ea: 2500 movs r5, #0 + 18de: 2500 movs r5, #0 midiClock(t_midiClock), - 18ec: 6042 str r2, [r0, #4] - 18ee: f44f 777a mov.w r7, #1000 ; 0x3e8 - 18f2: 9201 str r2, [sp, #4] - 18f4: f04f 39ff mov.w r9, #4294967295 ; 0xffffffff - 18f8: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 18fc: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - 1900: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 1904: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - 1908: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 190c: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - 1910: e89e 000f ldmia.w lr, {r0, r1, r2, r3} - 1914: e88c 000f stmia.w ip, {r0, r1, r2, r3} - 1918: f108 0140 add.w r1, r8, #64 ; 0x40 - 191c: 2272 movs r2, #114 ; 0x72 - 191e: f104 0068 add.w r0, r4, #104 ; 0x68 + 18e0: 6042 str r2, [r0, #4] + 18e2: f44f 777a mov.w r7, #1000 ; 0x3e8 + 18e6: 9201 str r2, [sp, #4] + 18e8: f04f 39ff mov.w r9, #4294967295 ; 0xffffffff + 18ec: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 18f0: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 18f4: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 18f8: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 18fc: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 1900: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 1904: e89e 000f ldmia.w lr, {r0, r1, r2, r3} + 1908: e88c 000f stmia.w ip, {r0, r1, r2, r3} + 190c: f108 0140 add.w r1, r8, #64 ; 0x40 + 1910: 2272 movs r2, #114 ; 0x72 + 1912: f104 0068 add.w r0, r4, #104 ; 0x68 midi(t_midi), - 1922: 6526 str r6, [r4, #80] ; 0x50 - 1924: f8a4 705c strh.w r7, [r4, #92] ; 0x5c + 1916: 6526 str r6, [r4, #80] ; 0x50 + 1918: f8a4 705c strh.w r7, [r4, #92] ; 0x5c callback(t_callback) - 1928: e9c4 ba15 strd fp, sl, [r4, #84] ; 0x54 - 192c: e9c4 5918 strd r5, r9, [r4, #96] ; 0x60 - 1930: f028 feea bl 2a708 - 1934: f898 30b4 ldrb.w r3, [r8, #180] ; 0xb4 + 191c: e9c4 ba15 strd fp, sl, [r4, #84] ; 0x54 + 1920: e9c4 5918 strd r5, r9, [r4, #96] ; 0x60 + 1924: f028 ff64 bl 2a7f0 + 1928: f898 30b4 ldrb.w r3, [r8, #180] ; 0xb4 struct BMCLogicControlData { - 1938: 4629 mov r1, r5 - 193a: 2248 movs r2, #72 ; 0x48 - 193c: f884 30da strb.w r3, [r4, #218] ; 0xda - 1940: f104 00ec add.w r0, r4, #236 ; 0xec - 1944: f8a4 50db strh.w r5, [r4, #219] ; 0xdb - 1948: f8a4 50e0 strh.w r5, [r4, #224] ; 0xe0 - 194c: f8c4 50e4 str.w r5, [r4, #228] ; 0xe4 - 1950: f884 50e8 strb.w r5, [r4, #232] ; 0xe8 - 1954: f8a4 50ea strh.w r5, [r4, #234] ; 0xea - 1958: f02c fd98 bl 2e48c + 192c: 4629 mov r1, r5 + 192e: 2248 movs r2, #72 ; 0x48 + 1930: f884 30da strb.w r3, [r4, #218] ; 0xda + 1934: f104 00ec add.w r0, r4, #236 ; 0xec + 1938: f8a4 50db strh.w r5, [r4, #219] ; 0xdb + 193c: f8a4 50e0 strh.w r5, [r4, #224] ; 0xe0 + 1940: f8c4 50e4 str.w r5, [r4, #228] ; 0xe4 + 1944: f884 50e8 strb.w r5, [r4, #232] ; 0xe8 + 1948: f8a4 50ea strh.w r5, [r4, #234] ; 0xea + 194c: f02c fe12 bl 2e574 globals(midi.globals){ - 195c: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 + 1950: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 struct BMCFas3Preset { - 1960: 4629 mov r1, r5 - 1962: 2220 movs r2, #32 - 1964: f8c4 3138 str.w r3, [r4, #312] ; 0x138 - 1968: f44f 4360 mov.w r3, #57344 ; 0xe000 - 196c: f204 1071 addw r0, r4, #369 ; 0x171 + 1954: 4629 mov r1, r5 + 1956: 2220 movs r2, #32 + 1958: f8c4 3138 str.w r3, [r4, #312] ; 0x138 + 195c: f44f 4360 mov.w r3, #57344 ; 0xe000 + 1960: f204 1071 addw r0, r4, #369 ; 0x171 midi(t_midi), - 1970: f8c4 6134 str.w r6, [r4, #308] ; 0x134 - 1974: f8a4 30ee strh.w r3, [r4, #238] ; 0xee - 1978: f8a4 30f6 strh.w r3, [r4, #246] ; 0xf6 - 197c: f8a4 30fe strh.w r3, [r4, #254] ; 0xfe - 1980: f8a4 3106 strh.w r3, [r4, #262] ; 0x106 - 1984: f8a4 310e strh.w r3, [r4, #270] ; 0x10e - 1988: f8a4 3116 strh.w r3, [r4, #278] ; 0x116 - 198c: f8a4 311e strh.w r3, [r4, #286] ; 0x11e - 1990: f8a4 3126 strh.w r3, [r4, #294] ; 0x126 - 1994: f8a4 312e strh.w r3, [r4, #302] ; 0x12e - 1998: f898 30b8 ldrb.w r3, [r8, #184] ; 0xb8 + 1964: f8c4 6134 str.w r6, [r4, #308] ; 0x134 + 1968: f8a4 30ee strh.w r3, [r4, #238] ; 0xee + 196c: f8a4 30f6 strh.w r3, [r4, #246] ; 0xf6 + 1970: f8a4 30fe strh.w r3, [r4, #254] ; 0xfe + 1974: f8a4 3106 strh.w r3, [r4, #262] ; 0x106 + 1978: f8a4 310e strh.w r3, [r4, #270] ; 0x10e + 197c: f8a4 3116 strh.w r3, [r4, #278] ; 0x116 + 1980: f8a4 311e strh.w r3, [r4, #286] ; 0x11e + 1984: f8a4 3126 strh.w r3, [r4, #294] ; 0x126 + 1988: f8a4 312e strh.w r3, [r4, #302] ; 0x12e + 198c: f898 30b8 ldrb.w r3, [r8, #184] ; 0xb8 class BMCFlags { - 199c: f8a4 513c strh.w r5, [r4, #316] ; 0x13c - 19a0: f884 3170 strb.w r3, [r4, #368] ; 0x170 + 1990: f8a4 513c strh.w r5, [r4, #316] ; 0x13c + 1994: f884 3170 strb.w r3, [r4, #368] ; 0x170 struct BMCFas3Device { - 19a4: f44f 3380 mov.w r3, #65536 ; 0x10000 - 19a8: f884 513e strb.w r5, [r4, #318] ; 0x13e - 19ac: f8c4 3150 str.w r3, [r4, #336] ; 0x150 - 19b0: f44f 7300 mov.w r3, #512 ; 0x200 - 19b4: f8a4 7140 strh.w r7, [r4, #320] ; 0x140 - 19b8: f8a4 3154 strh.w r3, [r4, #340] ; 0x154 - 19bc: f8c4 5144 str.w r5, [r4, #324] ; 0x144 - 19c0: f8a4 7148 strh.w r7, [r4, #328] ; 0x148 - 19c4: f8c4 514c str.w r5, [r4, #332] ; 0x14c + 1998: f44f 3380 mov.w r3, #65536 ; 0x10000 + 199c: f884 513e strb.w r5, [r4, #318] ; 0x13e + 19a0: f8c4 3150 str.w r3, [r4, #336] ; 0x150 + 19a4: f44f 7300 mov.w r3, #512 ; 0x200 + 19a8: f8a4 7140 strh.w r7, [r4, #320] ; 0x140 + 19ac: f8a4 3154 strh.w r3, [r4, #340] ; 0x154 + 19b0: f8c4 5144 str.w r5, [r4, #324] ; 0x144 + 19b4: f8a4 7148 strh.w r7, [r4, #328] ; 0x148 + 19b8: f8c4 514c str.w r5, [r4, #332] ; 0x14c struct BMCLooperData { - 19c8: f884 5156 strb.w r5, [r4, #342] ; 0x156 - 19cc: f8a4 715c strh.w r7, [r4, #348] ; 0x15c - 19d0: f8c4 5160 str.w r5, [r4, #352] ; 0x160 - 19d4: f8a4 7164 strh.w r7, [r4, #356] ; 0x164 + 19bc: f884 5156 strb.w r5, [r4, #342] ; 0x156 + 19c0: f8a4 715c strh.w r7, [r4, #348] ; 0x15c + 19c4: f8c4 5160 str.w r5, [r4, #352] ; 0x160 + 19c8: f8a4 7164 strh.w r7, [r4, #356] ; 0x164 struct BMCFas3Preset { - 19d8: e9c4 595a strd r5, r9, [r4, #360] ; 0x168 - 19dc: f02c fd56 bl 2e48c - 19e0: 23ff movs r3, #255 ; 0xff + 19cc: e9c4 595a strd r5, r9, [r4, #360] ; 0x168 + 19d0: f02c fdd0 bl 2e574 + 19d4: 23ff movs r3, #255 ; 0xff globals(midi.globals){ - 19e2: f108 01dc add.w r1, r8, #220 ; 0xdc - 19e6: f44f 7236 mov.w r2, #728 ; 0x2d8 - 19ea: f8a4 3274 strh.w r3, [r4, #628] ; 0x274 - 19ee: f504 7023 add.w r0, r4, #652 ; 0x28c - 19f2: f884 5276 strb.w r5, [r4, #630] ; 0x276 + 19d6: f108 01dc add.w r1, r8, #220 ; 0xdc + 19da: f44f 7236 mov.w r2, #728 ; 0x2d8 + 19de: f8a4 3274 strh.w r3, [r4, #628] ; 0x274 + 19e2: f504 7023 add.w r0, r4, #652 ; 0x28c + 19e6: f884 5276 strb.w r5, [r4, #630] ; 0x276 struct BMCTunerData { - 19f6: f8a4 5278 strh.w r5, [r4, #632] ; 0x278 - 19fa: f884 527a strb.w r5, [r4, #634] ; 0x27a - 19fe: f8a4 7284 strh.w r7, [r4, #644] ; 0x284 - 1a02: f8c4 5288 str.w r5, [r4, #648] ; 0x288 - 1a06: e9c4 559f strd r5, r5, [r4, #636] ; 0x27c - 1a0a: f028 fe7d bl 2a708 + 19ea: f8a4 5278 strh.w r5, [r4, #632] ; 0x278 + 19ee: f884 527a strb.w r5, [r4, #634] ; 0x27a + 19f2: f8a4 7284 strh.w r7, [r4, #644] ; 0x284 + 19f6: f8c4 5288 str.w r5, [r4, #648] ; 0x288 + 19fa: e9c4 559f strd r5, r5, [r4, #636] ; 0x27c + 19fe: f028 fef7 bl 2a7f0 midiClock(t_midiClock) - 1a0e: 9a01 ldr r2, [sp, #4] + 1a02: 9a01 ldr r2, [sp, #4] #if defined(BMC_USE_KEMPER) ,kemper(midi) #endif { } - 1a10: 4620 mov r0, r4 + 1a04: 4620 mov r0, r4 #ifdef BMC_USE_HELIX class BMCHelix { public: BMCHelix(BMCMidi& t_midi) : midi(t_midi){ - 1a12: 2303 movs r3, #3 - 1a14: f8c4 2574 str.w r2, [r4, #1396] ; 0x574 - 1a18: f8c4 6564 str.w r6, [r4, #1380] ; 0x564 + 1a06: 2303 movs r3, #3 + 1a08: f8c4 2574 str.w r2, [r4, #1396] ; 0x574 + 1a0c: f8c4 6564 str.w r6, [r4, #1380] ; 0x564 midi(t_midi), - 1a1c: f8c4 6570 str.w r6, [r4, #1392] ; 0x570 - 1a20: f8c4 5568 str.w r5, [r4, #1384] ; 0x568 + 1a10: f8c4 6570 str.w r6, [r4, #1392] ; 0x570 + 1a14: f8c4 5568 str.w r5, [r4, #1384] ; 0x568 struct BMCMidiTimeSignature { - 1a24: f884 5578 strb.w r5, [r4, #1400] ; 0x578 - 1a28: f884 5579 strb.w r5, [r4, #1401] ; 0x579 - 1a2c: f884 557a strb.w r5, [r4, #1402] ; 0x57a - 1a30: f884 557b strb.w r5, [r4, #1403] ; 0x57b - 1a34: f884 557c strb.w r5, [r4, #1404] ; 0x57c - 1a38: f884 557d strb.w r5, [r4, #1405] ; 0x57d - 1a3c: f8a4 7580 strh.w r7, [r4, #1408] ; 0x580 - 1a40: f8c4 5584 str.w r5, [r4, #1412] ; 0x584 + 1a18: f884 5578 strb.w r5, [r4, #1400] ; 0x578 + 1a1c: f884 5579 strb.w r5, [r4, #1401] ; 0x579 + 1a20: f884 557a strb.w r5, [r4, #1402] ; 0x57a + 1a24: f884 557b strb.w r5, [r4, #1403] ; 0x57b + 1a28: f884 557c strb.w r5, [r4, #1404] ; 0x57c + 1a2c: f884 557d strb.w r5, [r4, #1405] ; 0x57d + 1a30: f8a4 7580 strh.w r7, [r4, #1408] ; 0x580 + 1a34: f8c4 5584 str.w r5, [r4, #1412] ; 0x584 midiClock(t_midiClock) - 1a44: f8c4 5588 str.w r5, [r4, #1416] ; 0x588 - 1a48: f884 958c strb.w r9, [r4, #1420] ; 0x58c - 1a4c: f884 356c strb.w r3, [r4, #1388] ; 0x56c - 1a50: b003 add sp, #12 - 1a52: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1a56: bf00 nop - 1a58: 200003c0 .word 0x200003c0 - -00001a5c : + 1a38: f8c4 5588 str.w r5, [r4, #1416] ; 0x588 + 1a3c: f884 958c strb.w r9, [r4, #1420] ; 0x58c + 1a40: f884 356c strb.w r3, [r4, #1388] ; 0x56c + 1a44: b003 add sp, #12 + 1a46: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1a4a: bf00 nop + 1a4c: 200003c0 .word 0x200003c0 + +00001a50 : BMCStopwatch stopwatch; // code @ BMC.cpp void stopwatchCmd(uint8_t cmd, uint8_t h=0, uint8_t m=0, uint8_t s=0); void runLayerChanged(){ - 1a5c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 1a60: 4605 mov r5, r0 - 1a62: b089 sub sp, #36 ; 0x24 - 1a64: 210f movs r1, #15 - 1a66: 483e ldr r0, [pc, #248] ; (1b60 ) + 1a50: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 1a54: 4605 mov r5, r0 + 1a56: b089 sub sp, #36 ; 0x24 + 1a58: 210f movs r1, #15 + 1a5a: 483e ldr r0, [pc, #248] ; (1b54 ) #if defined(BMC_HAS_DISPLAY) && BMC_MAX_ILI9341_BLOCKS > 0 globals.setRenderDisplayList(BMC_DEVICE_ID_LAYER); display.renderLayerBanner(); #endif bmcStoreDevice <0, BMC_MAX_LAYER_EVENTS>& device = store.layers[layer].events[0]; - 1a68: f505 5980 add.w r9, r5, #4096 ; 0x1000 - 1a6c: f02a fd6c bl 2c548 - 1a70: 483c ldr r0, [pc, #240] ; (1b64 ) - 1a72: f241 5866 movw r8, #5478 ; 0x1566 - 1a76: f028 f9fd bl 29e74 - 1a7a: f8d9 386c ldr.w r3, [r9, #2156] ; 0x86c - 1a7e: 44a8 add r8, r5 + 1a5c: f505 5980 add.w r9, r5, #4096 ; 0x1000 + 1a60: f02a fde6 bl 2c630 + 1a64: 483c ldr r0, [pc, #240] ; (1b58 ) + 1a66: f241 5866 movw r8, #5478 ; 0x1566 + 1a6a: f028 fa79 bl 29f60 + 1a6e: f8d9 386c ldr.w r3, [r9, #2156] ; 0x86c + 1a72: 44a8 add r8, r5 for(uint8_t i = 0 ; i < BMC_MAX_LAYER_EVENTS ; i++){ processEvent(BMC_DEVICE_GROUP_BUTTON, - 1a80: 2600 movs r6, #0 + 1a74: 2600 movs r6, #0 bmcStoreDevice <0, BMC_MAX_LAYER_EVENTS>& device = store.layers[layer].events[0]; - 1a82: 781b ldrb r3, [r3, #0] + 1a76: 781b ldrb r3, [r3, #0] for(uint8_t i = 0 ; i < BMC_MAX_LAYER_EVENTS ; i++){ - 1a84: eb03 1243 add.w r2, r3, r3, lsl #5 - 1a88: eb03 0282 add.w r2, r3, r2, lsl #2 - 1a8c: f502 54ab add.w r4, r2, #5472 ; 0x1560 - 1a90: 4490 add r8, r2 - 1a92: 442c add r4, r5 - 1a94: e002 b.n 1a9c + 1a78: eb03 1243 add.w r2, r3, r3, lsl #5 + 1a7c: eb03 0282 add.w r2, r3, r2, lsl #2 + 1a80: f502 54ab add.w r4, r2, #5472 ; 0x1560 + 1a84: 4490 add r8, r2 + 1a86: 442c add r4, r5 + 1a88: e002 b.n 1a90 BMC_DEVICE_ID_BUTTON, layer, - 1a96: f8d9 386c ldr.w r3, [r9, #2156] ; 0x86c - 1a9a: 781b ldrb r3, [r3, #0] + 1a8a: f8d9 386c ldr.w r3, [r9, #2156] ; 0x86c + 1a8e: 781b ldrb r3, [r3, #0] processEvent(BMC_DEVICE_GROUP_BUTTON, - 1a9c: f814 7f01 ldrb.w r7, [r4, #1]! - 1aa0: 2204 movs r2, #4 - 1aa2: 2101 movs r1, #1 - 1aa4: 4628 mov r0, r5 - 1aa6: 9700 str r7, [sp, #0] - 1aa8: e9cd 6601 strd r6, r6, [sp, #4] - 1aac: f009 fee6 bl b87c + 1a90: f814 7f01 ldrb.w r7, [r4, #1]! + 1a94: 2204 movs r2, #4 + 1a96: 2101 movs r1, #1 + 1a98: 4628 mov r0, r5 + 1a9a: 9700 str r7, [sp, #0] + 1a9c: e9cd 6601 strd r6, r6, [sp, #4] + 1aa0: f009 ff50 bl b944 for(uint8_t i = 0 ; i < BMC_MAX_LAYER_EVENTS ; i++){ - 1ab0: 4544 cmp r4, r8 - 1ab2: d1f0 bne.n 1a96 + 1aa4: 4544 cmp r4, r8 + 1aa6: d1f0 bne.n 1a8a return bitRead(settings.flags, bit); - 1ab4: f8d9 37fc ldr.w r3, [r9, #2044] ; 0x7fc - 1ab8: 681a ldr r2, [r3, #0] + 1aa8: f8d9 37fc ldr.w r3, [r9, #2044] ; 0x7fc + 1aac: 681a ldr r2, [r3, #0] device.events[i] ); } if(settings.getOutgoingListenerEnabled() > 0 && settings.getOutgoingProgramType() == 1){ - 1aba: 04d0 lsls r0, r2, #19 - 1abc: d41f bmi.n 1afe + 1aae: 04d0 lsls r0, r2, #19 + 1ab0: d41f bmi.n 1af2 return bitRead(flags, bit); - 1abe: f505 5540 add.w r5, r5, #12288 ; 0x3000 - 1ac2: f895 3a6c ldrb.w r3, [r5, #2668] ; 0xa6c + 1ab2: f505 5540 add.w r5, r5, #12288 ; 0x3000 + 1ab6: f895 3a8c ldrb.w r3, [r5, #2700] ; 0xa8c releaseA = -1; releaseB = -1; } bool callbackAvailable(){ if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ if(callback.buttonDualPress){ - 1ac6: f8d5 2a70 ldr.w r2, [r5, #2672] ; 0xa70 + 1aba: f8d5 2a90 ldr.w r2, [r5, #2704] ; 0xa90 if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 1aca: 07d9 lsls r1, r3, #31 - 1acc: d411 bmi.n 1af2 + 1abe: 07d9 lsls r1, r3, #31 + 1ac0: d411 bmi.n 1ae6 if(callback.buttonDualPress){ - 1ace: 6a92 ldr r2, [r2, #40] ; 0x28 - 1ad0: b162 cbz r2, 1aec + 1ac2: 6a92 ldr r2, [r2, #40] ; 0x28 + 1ac4: b162 cbz r2, 1ae0 last = -1; - 1ad2: f64f 72ff movw r2, #65535 ; 0xffff + 1ac6: f64f 72ff movw r2, #65535 ; 0xffff prevTime = 0; - 1ad6: 2100 movs r1, #0 + 1aca: 2100 movs r1, #0 bitClear(flags, bit); - 1ad8: f023 0302 bic.w r3, r3, #2 - 1adc: f8a5 2a60 strh.w r2, [r5, #2656] ; 0xa60 + 1acc: f023 0302 bic.w r3, r3, #2 + 1ad0: f8a5 2a80 strh.w r2, [r5, #2688] ; 0xa80 releaseB = -1; - 1ae0: f885 2a62 strb.w r2, [r5, #2658] ; 0xa62 - 1ae4: f8c5 1a68 str.w r1, [r5, #2664] ; 0xa68 - 1ae8: f885 3a6c strb.w r3, [r5, #2668] ; 0xa6c + 1ad4: f885 2a82 strb.w r2, [r5, #2690] ; 0xa82 + 1ad8: f8c5 1a88 str.w r1, [r5, #2696] ; 0xa88 + 1adc: f885 3a8c strb.w r3, [r5, #2700] ; 0xa8c } #if BMC_MAX_BUTTONS > 1 dualPress.layerChanged(); #endif } - 1aec: b009 add sp, #36 ; 0x24 - 1aee: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 1ae0: b009 add sp, #36 ; 0x24 + 1ae2: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return true; } } else { if(callback.globalButtonDualPress){ - 1af2: 6ad2 ldr r2, [r2, #44] ; 0x2c - 1af4: 2a00 cmp r2, #0 - 1af6: d1ec bne.n 1ad2 - 1af8: b009 add sp, #36 ; 0x24 - 1afa: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 1ae6: 6ad2 ldr r2, [r2, #44] ; 0x2c + 1ae8: 2a00 cmp r2, #0 + 1aea: d1ec bne.n 1ac6 + 1aec: b009 add sp, #36 ; 0x24 + 1aee: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} // @value: 0 do nothing // 1 change layers // 2 trigger presets // 3 songs uint8_t getOutgoingProgramType(){ return (settings.data[2]>>22) & 0x0F; - 1afe: 68dc ldr r4, [r3, #12] + 1af2: 68dc ldr r4, [r3, #12] if(settings.getOutgoingListenerEnabled() > 0 && settings.getOutgoingProgramType() == 1){ - 1b00: f3c4 5483 ubfx r4, r4, #22, #4 - 1b04: 2c01 cmp r4, #1 - 1b06: d1da bne.n 1abe + 1af4: f3c4 5483 ubfx r4, r4, #22, #4 + 1af8: 2c01 cmp r4, #1 + 1afa: d1da bne.n 1ab2 BMC_WRITE_BITS(settings.data[2],value,0x0F,22); } uint8_t getOutgoingPCPort(){ return (settings.data[3]>>0) & 0xFF; - 1b08: 6919 ldr r1, [r3, #16] + 1afc: 6919 ldr r1, [r3, #16] midi.sendControlChange(ports, channel, 0, 0); - 1b0a: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - 1b0e: 2300 movs r3, #0 - 1b10: 9600 str r6, [sp, #0] + 1afe: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + 1b02: 2300 movs r3, #0 + 1b04: 9600 str r6, [sp, #0] } void setOutgoingPCPort(uint8_t value){ BMC_WRITE_BITS(settings.data[3],value, 0xFF, 0); } uint8_t getOutgoingPCChannel(){ return (settings.data[3]>>8) & 0x0F; - 1b12: f3c1 2203 ubfx r2, r1, #8, #4 + 1b06: f3c1 2203 ubfx r2, r1, #8, #4 return (settings.data[3]>>0) & 0xFF; - 1b16: b2c9 uxtb r1, r1 + 1b0a: b2c9 uxtb r1, r1 uint8_t channel = (settings.getOutgoingPCChannel() & 0x0F)+1; - 1b18: 3201 adds r2, #1 + 1b0c: 3201 adds r2, #1 midi.sendControlChange(ports, channel, 0, 0); - 1b1a: 9107 str r1, [sp, #28] - 1b1c: e9cd 6401 strd r6, r4, [sp, #4] - 1b20: e9cd 0204 strd r0, r2, [sp, #16] - 1b24: f021 fc5a bl 233dc + 1b0e: 9107 str r1, [sp, #28] + 1b10: e9cd 6401 strd r6, r4, [sp, #4] + 1b14: e9cd 0204 strd r0, r2, [sp, #16] + 1b18: f021 fcc2 bl 234a0 midi.sendControlChange(ports, channel, 32, (layer >> 7) & 0x7F); - 1b28: 9a05 ldr r2, [sp, #20] - 1b2a: 9907 ldr r1, [sp, #28] - 1b2c: 9804 ldr r0, [sp, #16] - 1b2e: 9206 str r2, [sp, #24] - 1b30: 9105 str r1, [sp, #20] - 1b32: e9cd 6401 strd r6, r4, [sp, #4] - 1b36: f8d9 386c ldr.w r3, [r9, #2156] ; 0x86c - 1b3a: 781b ldrb r3, [r3, #0] - 1b3c: 09db lsrs r3, r3, #7 - 1b3e: 9300 str r3, [sp, #0] - 1b40: 2320 movs r3, #32 - 1b42: f021 fc4b bl 233dc + 1b1c: 9a05 ldr r2, [sp, #20] + 1b1e: 9907 ldr r1, [sp, #28] + 1b20: 9804 ldr r0, [sp, #16] + 1b22: 9206 str r2, [sp, #24] + 1b24: 9105 str r1, [sp, #20] + 1b26: e9cd 6401 strd r6, r4, [sp, #4] + 1b2a: f8d9 386c ldr.w r3, [r9, #2156] ; 0x86c + 1b2e: 781b ldrb r3, [r3, #0] + 1b30: 09db lsrs r3, r3, #7 + 1b32: 9300 str r3, [sp, #0] + 1b34: 2320 movs r3, #32 + 1b36: f021 fcb3 bl 234a0 midi.sendProgramChange(ports, channel, layer & 0x7F); - 1b46: f8d9 386c ldr.w r3, [r9, #2156] ; 0x86c - 1b4a: 9804 ldr r0, [sp, #16] - 1b4c: 781b ldrb r3, [r3, #0] - 1b4e: 9600 str r6, [sp, #0] - 1b50: f003 037f and.w r3, r3, #127 ; 0x7f - 1b54: e9dd 1205 ldrd r1, r2, [sp, #20] - 1b58: f021 fac6 bl 230e8 - 1b5c: e7af b.n 1abe - 1b5e: bf00 nop - 1b60: 2000250c .word 0x2000250c - 1b64: 20004ba8 .word 0x20004ba8 - -00001b68 : + 1b3a: f8d9 386c ldr.w r3, [r9, #2156] ; 0x86c + 1b3e: 9804 ldr r0, [sp, #16] + 1b40: 781b ldrb r3, [r3, #0] + 1b42: 9600 str r6, [sp, #0] + 1b44: f003 037f and.w r3, r3, #127 ; 0x7f + 1b48: e9dd 1205 ldrd r1, r2, [sp, #20] + 1b4c: f021 fb32 bl 231b4 + 1b50: e7af b.n 1ab2 + 1b52: bf00 nop + 1b54: 2000250c .word 0x2000250c + 1b58: 20004c68 .word 0x20004c68 + +00001b5c : void runPresetChanged(){ - 1b68: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 1b5c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} return getLength(bank, preset); - 1b6c: f500 5640 add.w r6, r0, #12288 ; 0x3000 - 1b70: 4605 mov r5, r0 - 1b72: b088 sub sp, #32 + 1b60: f500 5640 add.w r6, r0, #12288 ; 0x3000 + 1b64: 4605 mov r5, r0 + 1b66: b088 sub sp, #32 return midi.globals.store.global.presets[n].settings[0]; - 1b74: f8d6 01ec ldr.w r0, [r6, #492] ; 0x1ec + 1b68: f8d6 020c ldr.w r0, [r6, #524] ; 0x20c return getLength(bank, preset); - 1b78: e9d6 327e ldrd r3, r2, [r6, #504] ; 0x1f8 + 1b6c: e9d6 3286 ldrd r3, r2, [r6, #536] ; 0x218 return midi.globals.store.global.presets[n].settings[0]; - 1b7c: f8d0 0108 ldr.w r0, [r0, #264] ; 0x108 + 1b70: f8d0 0108 ldr.w r0, [r0, #264] ; 0x108 return getLength(bank, preset); - 1b80: 7812 ldrb r2, [r2, #0] - 1b82: 7819 ldrb r1, [r3, #0] + 1b74: 7812 ldrb r2, [r2, #0] + 1b76: 7819 ldrb r1, [r3, #0] uint16_t p = (t_bank << BMC_PRESET_BANK_MASK) | (t_preset & (BMC_MAX_PRESETS_PER_BANK-1)); - 1b84: f002 0307 and.w r3, r2, #7 + 1b78: f002 0307 and.w r3, r2, #7 return midi.globals.store.global.presets[n].settings[0]; - 1b88: 6800 ldr r0, [r0, #0] + 1b7c: 6800 ldr r0, [r0, #0] uint16_t p = (t_bank << BMC_PRESET_BANK_MASK) | (t_preset & (BMC_MAX_PRESETS_PER_BANK-1)); - 1b8a: ea43 03c1 orr.w r3, r3, r1, lsl #3 + 1b7e: ea43 03c1 orr.w r3, r3, r1, lsl #3 if(p >= BMC_MAX_PRESETS){ - 1b8e: 2b40 cmp r3, #64 ; 0x40 - 1b90: bfa8 it ge - 1b92: 2300 movge r3, #0 + 1b82: 2b40 cmp r3, #64 ; 0x40 + 1b84: bfa8 it ge + 1b86: 2300 movge r3, #0 return midi.globals.store.global.presets[n].settings[0]; - 1b94: eb03 0383 add.w r3, r3, r3, lsl #2 - 1b98: eb00 0343 add.w r3, r0, r3, lsl #1 - 1b9c: f893 3f2e ldrb.w r3, [r3, #3886] ; 0xf2e + 1b88: eb03 0383 add.w r3, r3, r3, lsl #2 + 1b8c: eb00 0343 add.w r3, r0, r3, lsl #1 + 1b90: f893 3f2e ldrb.w r3, [r3, #3886] ; 0xf2e } #endif } void triggerPreset(uint16_t t_preset, uint8_t len){ #if BMC_MAX_PRESETS > 0 if(len > 0){ - 1ba0: b9c3 cbnz r3, 1bd4 - 1ba2: f505 5780 add.w r7, r5, #4096 ; 0x1000 + 1b94: b9c3 cbnz r3, 1bc8 + 1b96: f505 5780 add.w r7, r5, #4096 ; 0x1000 // disable the preset triggering block flags.off(BMC_FLAGS_BLOCK_PRESETS); } } editor.utilitySendPreset(presets.getBank(), presets.get()); - 1ba6: f642 409c movw r0, #11420 ; 0x2c9c - 1baa: 2301 movs r3, #1 - 1bac: 4428 add r0, r5 - 1bae: f020 fefb bl 229a8 + 1b9a: f642 40bc movw r0, #11452 ; 0x2cbc + 1b9e: 2301 movs r3, #1 + 1ba0: 4428 add r0, r5 + 1ba2: f020 ff71 bl 22a88 return bitRead(settings.flags, bit); - 1bb2: f8d7 37fc ldr.w r3, [r7, #2044] ; 0x7fc - 1bb6: 681a ldr r2, [r3, #0] + 1ba6: f8d7 37fc ldr.w r3, [r7, #2044] ; 0x7fc + 1baa: 681a ldr r2, [r3, #0] if(settings.getOutgoingListenerEnabled() > 0 && settings.getOutgoingProgramType() == 2){ - 1bb8: 04d2 lsls r2, r2, #19 - 1bba: d43f bmi.n 1c3c + 1bac: 04d2 lsls r2, r2, #19 + 1bae: d43f bmi.n 1c30 if(callback.presetChanged){ - 1bbc: f8d7 38c8 ldr.w r3, [r7, #2248] ; 0x8c8 - 1bc0: 2b00 cmp r3, #0 - 1bc2: d06b beq.n 1c9c + 1bb0: f8d7 38c8 ldr.w r3, [r7, #2248] ; 0x8c8 + 1bb4: 2b00 cmp r3, #0 + 1bb6: d06b beq.n 1c90 return bank; - 1bc4: e9d6 217e ldrd r2, r1, [r6, #504] ; 0x1f8 + 1bb8: e9d6 2186 ldrd r2, r1, [r6, #536] ; 0x218 callback.presetChanged(presets.getBank(), presets.get()); - 1bc8: 7809 ldrb r1, [r1, #0] - 1bca: 7810 ldrb r0, [r2, #0] + 1bbc: 7809 ldrb r1, [r1, #0] + 1bbe: 7810 ldrb r0, [r2, #0] } - 1bcc: b008 add sp, #32 - 1bce: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 1bc0: b008 add sp, #32 + 1bc2: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} callback.presetChanged(presets.getBank(), presets.get()); - 1bd2: 4718 bx r3 + 1bc6: 4718 bx r3 return presetIndex; - 1bd4: f8d6 21f4 ldr.w r2, [r6, #500] ; 0x1f4 - 1bd8: f103 39ff add.w r9, r3, #4294967295 ; 0xffffffff - 1bdc: f605 732f addw r3, r5, #3887 ; 0xf2f + 1bc8: f8d6 2214 ldr.w r2, [r6, #532] ; 0x214 + 1bcc: f103 39ff add.w r9, r3, #4294967295 ; 0xffffffff + 1bd0: f605 732f addw r3, r5, #3887 ; 0xf2f bitSet(flags, bit); - 1be0: f505 5780 add.w r7, r5, #4096 ; 0x1000 - 1be4: f8b2 a000 ldrh.w sl, [r2] + 1bd4: f505 5780 add.w r7, r5, #4096 ; 0x1000 + 1bd8: f8b2 a000 ldrh.w sl, [r2] processEvent(BMC_DEVICE_GROUP_BUTTON, - 1be8: f04f 0800 mov.w r8, #0 - 1bec: f897 2964 ldrb.w r2, [r7, #2404] ; 0x964 - 1bf0: eb0a 048a add.w r4, sl, sl, lsl #2 - 1bf4: 0064 lsls r4, r4, #1 - 1bf6: 4423 add r3, r4 - 1bf8: f604 742e addw r4, r4, #3886 ; 0xf2e - 1bfc: fa53 f989 uxtab r9, r3, r9 - 1c00: 442c add r4, r5 - 1c02: f042 0010 orr.w r0, r2, #16 - 1c06: 4653 mov r3, sl - 1c08: 2204 movs r2, #4 - 1c0a: 2101 movs r1, #1 - 1c0c: f887 0964 strb.w r0, [r7, #2404] ; 0x964 - 1c10: 4628 mov r0, r5 - 1c12: f814 cf01 ldrb.w ip, [r4, #1]! - 1c16: e9cd 8801 strd r8, r8, [sp, #4] - 1c1a: f8cd c000 str.w ip, [sp] - 1c1e: f009 fe2d bl b87c + 1bdc: f04f 0800 mov.w r8, #0 + 1be0: f897 2968 ldrb.w r2, [r7, #2408] ; 0x968 + 1be4: eb0a 048a add.w r4, sl, sl, lsl #2 + 1be8: 0064 lsls r4, r4, #1 + 1bea: 4423 add r3, r4 + 1bec: f604 742e addw r4, r4, #3886 ; 0xf2e + 1bf0: fa53 f989 uxtab r9, r3, r9 + 1bf4: 442c add r4, r5 + 1bf6: f042 0010 orr.w r0, r2, #16 + 1bfa: 4653 mov r3, sl + 1bfc: 2204 movs r2, #4 + 1bfe: 2101 movs r1, #1 + 1c00: f887 0968 strb.w r0, [r7, #2408] ; 0x968 + 1c04: 4628 mov r0, r5 + 1c06: f814 cf01 ldrb.w ip, [r4, #1]! + 1c0a: e9cd 8801 strd r8, r8, [sp, #4] + 1c0e: f8cd c000 str.w ip, [sp] + 1c12: f009 fe97 bl b944 bitClear(flags, bit); - 1c22: f897 2964 ldrb.w r2, [r7, #2404] ; 0x964 + 1c16: f897 2968 ldrb.w r2, [r7, #2408] ; 0x968 for(uint8_t i = 0 ; i < len ; i++){ - 1c26: 454c cmp r4, r9 - 1c28: f002 02ef and.w r2, r2, #239 ; 0xef - 1c2c: f887 2964 strb.w r2, [r7, #2404] ; 0x964 - 1c30: d1e7 bne.n 1c02 + 1c1a: 454c cmp r4, r9 + 1c1c: f002 02ef and.w r2, r2, #239 ; 0xef + 1c20: f887 2968 strb.w r2, [r7, #2408] ; 0x968 + 1c24: d1e7 bne.n 1bf6 return preset; - 1c32: e9d6 237e ldrd r2, r3, [r6, #504] ; 0x1f8 + 1c26: e9d6 2386 ldrd r2, r3, [r6, #536] ; 0x218 return bank; - 1c36: 7811 ldrb r1, [r2, #0] + 1c2a: 7811 ldrb r1, [r2, #0] return preset; - 1c38: 781a ldrb r2, [r3, #0] - 1c3a: e7b4 b.n 1ba6 + 1c2c: 781a ldrb r2, [r3, #0] + 1c2e: e7b4 b.n 1b9a return (settings.data[2]>>22) & 0x0F; - 1c3c: 68da ldr r2, [r3, #12] + 1c30: 68da ldr r2, [r3, #12] if(settings.getOutgoingListenerEnabled() > 0 && settings.getOutgoingProgramType() == 2){ - 1c3e: f3c2 5283 ubfx r2, r2, #22, #4 - 1c42: 2a02 cmp r2, #2 - 1c44: d1ba bne.n 1bbc + 1c32: f3c2 5283 ubfx r2, r2, #22, #4 + 1c36: 2a02 cmp r2, #2 + 1c38: d1ba bne.n 1bb0 return (settings.data[3]>>0) & 0xFF; - 1c46: 691b ldr r3, [r3, #16] + 1c3a: 691b ldr r3, [r3, #16] midi.sendControlChange(ports, channel, 0, 0); - 1c48: 2400 movs r4, #0 - 1c4a: f04f 0801 mov.w r8, #1 - 1c4e: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - 1c52: b2d9 uxtb r1, r3 + 1c3c: 2400 movs r4, #0 + 1c3e: f04f 0801 mov.w r8, #1 + 1c42: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + 1c46: b2d9 uxtb r1, r3 return (settings.data[3]>>8) & 0x0F; - 1c54: f3c3 2303 ubfx r3, r3, #8, #4 - 1c58: 9005 str r0, [sp, #20] + 1c48: f3c3 2303 ubfx r3, r3, #8, #4 + 1c4c: 9005 str r0, [sp, #20] uint8_t channel = (settings.getOutgoingPCChannel() & 0x0F)+1; - 1c5a: 1c5a adds r2, r3, #1 + 1c4e: 1c5a adds r2, r3, #1 return presetIndex; - 1c5c: f8d6 31f4 ldr.w r3, [r6, #500] ; 0x1f4 - 1c60: 881d ldrh r5, [r3, #0] + 1c50: f8d6 3214 ldr.w r3, [r6, #532] ; 0x214 + 1c54: 881d ldrh r5, [r3, #0] midi.sendControlChange(ports, channel, 0, 0); - 1c62: 4623 mov r3, r4 - 1c64: f8cd 8008 str.w r8, [sp, #8] - 1c68: e9cd 4400 strd r4, r4, [sp] - 1c6c: e9cd 1206 strd r1, r2, [sp, #24] - 1c70: f021 fbb4 bl 233dc + 1c56: 4623 mov r3, r4 + 1c58: f8cd 8008 str.w r8, [sp, #8] + 1c5c: e9cd 4400 strd r4, r4, [sp] + 1c60: e9cd 1206 strd r1, r2, [sp, #24] + 1c64: f021 fc1c bl 234a0 midi.sendControlChange(ports, channel, 32, (presetIndex >> 7) & 0x7F); - 1c74: f3c5 13c6 ubfx r3, r5, #7, #7 - 1c78: 9805 ldr r0, [sp, #20] - 1c7a: 9300 str r3, [sp, #0] - 1c7c: 2320 movs r3, #32 - 1c7e: e9dd 1206 ldrd r1, r2, [sp, #24] - 1c82: e9cd 4801 strd r4, r8, [sp, #4] - 1c86: f021 fba9 bl 233dc + 1c68: f3c5 13c6 ubfx r3, r5, #7, #7 + 1c6c: 9805 ldr r0, [sp, #20] + 1c6e: 9300 str r3, [sp, #0] + 1c70: 2320 movs r3, #32 + 1c72: e9dd 1206 ldrd r1, r2, [sp, #24] + 1c76: e9cd 4801 strd r4, r8, [sp, #4] + 1c7a: f021 fc11 bl 234a0 midi.sendProgramChange(ports, channel, presetIndex & 0x7F); - 1c8a: f005 037f and.w r3, r5, #127 ; 0x7f - 1c8e: 9805 ldr r0, [sp, #20] - 1c90: 9400 str r4, [sp, #0] - 1c92: e9dd 1206 ldrd r1, r2, [sp, #24] - 1c96: f021 fa27 bl 230e8 - 1c9a: e78f b.n 1bbc - } - 1c9c: b008 add sp, #32 - 1c9e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 1ca2: bf00 nop - -00001ca4 : + 1c7e: f005 037f and.w r3, r5, #127 ; 0x7f + 1c82: 9805 ldr r0, [sp, #20] + 1c84: 9400 str r4, [sp, #0] + 1c86: e9dd 1206 ldrd r1, r2, [sp, #24] + 1c8a: f021 fa93 bl 231b4 + 1c8e: e78f b.n 1bb0 + } + 1c90: b008 add sp, #32 + 1c92: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 1c96: bf00 nop + +00001c98 : See LICENSE file in the project root for full license information. */ #include // Initialize all compiled objects BMC::BMC(): - 1ca4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1c98: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} #endif #if BMC_MAX_TIMED_EVENTS > 0 bmcStoreDevice <2, 1> timedEvents[BMC_MAX_TIMED_EVENTS]; #endif }; struct bmcStore { - 1ca8: 4606 mov r6, r0 - 1caa: 2400 movs r4, #0 - 1cac: 4681 mov r9, r0 - 1cae: b087 sub sp, #28 - 1cb0: f846 4b04 str.w r4, [r6], #4 - 1cb4: 4630 mov r0, r6 - 1cb6: f7fe fc0b bl 4d0 - 1cba: f641 0581 movw r5, #6273 ; 0x1881 - 1cbe: f241 52e8 movw r2, #5608 ; 0x15e8 - 1cc2: f241 50d8 movw r0, #5592 ; 0x15d8 - 1cc6: f241 51c2 movw r1, #5570 ; 0x15c2 - 1cca: 444d add r5, r9 - 1ccc: 444a add r2, r9 - 1cce: 4448 add r0, r9 - 1cd0: 4449 add r1, r9 + 1c9c: 4606 mov r6, r0 + 1c9e: 2400 movs r4, #0 + 1ca0: 4681 mov r9, r0 + 1ca2: b087 sub sp, #28 + 1ca4: f846 4b04 str.w r4, [r6], #4 + 1ca8: 4630 mov r0, r6 + 1caa: f7fe fc11 bl 4d0 + 1cae: f641 0581 movw r5, #6273 ; 0x1881 + 1cb2: f241 52e8 movw r2, #5608 ; 0x15e8 + 1cb6: f241 50d8 movw r0, #5592 ; 0x15d8 + 1cba: f241 51c2 movw r1, #5570 ; 0x15c2 + 1cbe: 444d add r5, r9 + 1cc0: 444a add r2, r9 + 1cc2: 4448 add r0, r9 + 1cc4: 4449 add r1, r9 struct bmcStoreDevice { - 1cd2: f1a2 0374 sub.w r3, r2, #116 ; 0x74 - 1cd6: f802 4c88 strb.w r4, [r2, #-136] - 1cda: f803 4c0d strb.w r4, [r3, #-13] + 1cc6: f1a2 0374 sub.w r3, r2, #116 ; 0x74 + 1cca: f802 4c88 strb.w r4, [r2, #-136] + 1cce: f803 4c0d strb.w r4, [r3, #-13] struct bmcStoreLayer { - 1cde: 330d adds r3, #13 - 1ce0: 428b cmp r3, r1 - 1ce2: d1fa bne.n 1cda - 1ce4: f1a2 032e sub.w r3, r2, #46 ; 0x2e + 1cd2: 330d adds r3, #13 + 1cd4: 428b cmp r3, r1 + 1cd6: d1fa bne.n 1cce + 1cd8: f1a2 032e sub.w r3, r2, #46 ; 0x2e struct bmcStoreDevice { - 1ce8: f803 4c05 strb.w r4, [r3, #-5] + 1cdc: f803 4c05 strb.w r4, [r3, #-5] struct bmcStoreLayer { - 1cec: 3305 adds r3, #5 - 1cee: 4283 cmp r3, r0 - 1cf0: d1fa bne.n 1ce8 - 1cf2: f1a2 0312 sub.w r3, r2, #18 + 1ce0: 3305 adds r3, #5 + 1ce2: 4283 cmp r3, r0 + 1ce4: d1fa bne.n 1cdc + 1ce6: f1a2 0312 sub.w r3, r2, #18 struct bmcStoreDevice { - 1cf6: f803 4c03 strb.w r4, [r3, #-3] + 1cea: f803 4c03 strb.w r4, [r3, #-3] struct bmcStoreLayer { - 1cfa: 3303 adds r3, #3 - 1cfc: 4293 cmp r3, r2 - 1cfe: d1fa bne.n 1cf6 + 1cee: 3303 adds r3, #3 + 1cf0: 4293 cmp r3, r2 + 1cf2: d1fa bne.n 1cea struct bmcStore { - 1d00: f103 0285 add.w r2, r3, #133 ; 0x85 - 1d04: 3085 adds r0, #133 ; 0x85 - 1d06: 3185 adds r1, #133 ; 0x85 - 1d08: 42aa cmp r2, r5 - 1d0a: d1e2 bne.n 1cd2 + 1cf4: f103 0285 add.w r2, r3, #133 ; 0x85 + 1cf8: 3085 adds r0, #133 ; 0x85 + 1cfa: 3185 adds r1, #133 ; 0x85 + 1cfc: 42aa cmp r2, r5 + 1cfe: d1e2 bne.n 1cc6 BMCSettings(bmcStoreGlobalSettings &t_settings):settings(t_settings){} - 1d0c: f509 5580 add.w r5, r9, #4096 ; 0x1000 + 1d00: f509 5580 add.w r5, r9, #4096 ; 0x1000 settings(store.global.settings), globals(store, settings), - 1d10: f509 53c0 add.w r3, r9, #6144 ; 0x1800 + 1d04: f509 53c0 add.w r3, r9, #6144 ; 0x1800 settings(store.global.settings), - 1d14: f241 7afc movw sl, #6140 ; 0x17fc - 1d18: f641 0c4a movw ip, #6218 ; 0x184a - 1d1c: f8c5 67fc str.w r6, [r5, #2044] ; 0x7fc + 1d08: f241 7afc movw sl, #6140 ; 0x17fc + 1d0c: f641 0c4a movw ip, #6218 ; 0x184a + 1d10: f8c5 67fc str.w r6, [r5, #2044] ; 0x7fc class BMCGlobals { public: bmcStore& store; BMCSettings& settings; BMCGlobals(bmcStore& t_store, BMCSettings& t_settings):store(t_store), settings(t_settings){ - 1d20: f505 6e01 add.w lr, r5, #2064 ; 0x810 - 1d24: 4eee ldr r6, [pc, #952] ; (20e0 ) - 1d26: 44ca add sl, r9 + 1d14: f505 6e01 add.w lr, r5, #2064 ; 0x810 + 1d18: 4eef ldr r6, [pc, #956] ; (20d8 ) + 1d1a: 44ca add sl, r9 globals(store, settings), - 1d28: 9304 str r3, [sp, #16] - 1d2a: f641 0756 movw r7, #6230 ; 0x1856 - 1d2e: f8c5 9800 str.w r9, [r5, #2048] ; 0x800 + 1d1c: 9304 str r3, [sp, #16] + 1d1e: f641 0756 movw r7, #6230 ; 0x1856 + 1d22: f8c5 9800 str.w r9, [r5, #2048] ; 0x800 memset(value, 0 , (((len >> 4) & 0x0F)+1)*sizeof(uint16_t)); - 1d32: f641 0846 movw r8, #6214 ; 0x1846 - 1d36: f8c5 480c str.w r4, [r5, #2060] ; 0x80c - 1d3a: 44cc add ip, r9 - 1d3c: f8c5 a804 str.w sl, [r5, #2052] ; 0x804 - 1d40: 444f add r7, r9 + 1d26: f641 0846 movw r8, #6214 ; 0x1846 + 1d2a: f8c5 480c str.w r4, [r5, #2060] ; 0x80c + 1d2e: 44cc add ip, r9 + 1d30: f8c5 a804 str.w sl, [r5, #2052] ; 0x804 + 1d34: 444f add r7, r9 BMCBitStates(){ - 1d42: f04f 0b00 mov.w fp, #0 - 1d46: ce0f ldmia r6!, {r0, r1, r2, r3} - 1d48: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} - 1d4c: e896 000f ldmia.w r6, {r0, r1, r2, r3} - 1d50: e88e 000f stmia.w lr, {r0, r1, r2, r3} + 1d36: f04f 0b00 mov.w fp, #0 + 1d3a: ce0f ldmia r6!, {r0, r1, r2, r3} + 1d3c: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} + 1d40: e896 000f ldmia.w r6, {r0, r1, r2, r3} + 1d44: e88e 000f stmia.w lr, {r0, r1, r2, r3} memset(value, 0 , (((len >> 4) & 0x0F)+1)*sizeof(uint16_t)); - 1d54: f641 033a movw r3, #6202 ; 0x183a - 1d58: f885 4830 strb.w r4, [r5, #2096] ; 0x830 - 1d5c: f8a5 4832 strh.w r4, [r5, #2098] ; 0x832 - 1d60: f885 4834 strb.w r4, [r5, #2100] ; 0x834 - 1d64: f8a5 4836 strh.w r4, [r5, #2102] ; 0x836 - 1d68: f885 4838 strb.w r4, [r5, #2104] ; 0x838 + 1d48: f641 033a movw r3, #6202 ; 0x183a + 1d4c: f885 4830 strb.w r4, [r5, #2096] ; 0x830 + 1d50: f8a5 4832 strh.w r4, [r5, #2098] ; 0x832 + 1d54: f885 4834 strb.w r4, [r5, #2100] ; 0x834 + 1d58: f8a5 4836 strh.w r4, [r5, #2102] ; 0x836 + 1d5c: f885 4838 strb.w r4, [r5, #2104] ; 0x838 BMCBitStates(){ - 1d6c: f885 483c strb.w r4, [r5, #2108] ; 0x83c + 1d60: f885 483c strb.w r4, [r5, #2108] ; 0x83c memset(value, 0 , (((len >> 4) & 0x0F)+1)*sizeof(uint16_t)); - 1d70: f829 4003 strh.w r4, [r9, r3] - 1d74: f641 033e movw r3, #6206 ; 0x183e + 1d64: f829 4003 strh.w r4, [r9, r3] + 1d68: f641 033e movw r3, #6206 ; 0x183e BMCBitStates(){ - 1d78: f885 4840 strb.w r4, [r5, #2112] ; 0x840 + 1d6c: f885 4840 strb.w r4, [r5, #2112] ; 0x840 memset(value, 0 , (((len >> 4) & 0x0F)+1)*sizeof(uint16_t)); - 1d7c: f829 4003 strh.w r4, [r9, r3] - 1d80: f641 0342 movw r3, #6210 ; 0x1842 + 1d70: f829 4003 strh.w r4, [r9, r3] + 1d74: f641 0342 movw r3, #6210 ; 0x1842 BMCBitStates(){ - 1d84: f885 4844 strb.w r4, [r5, #2116] ; 0x844 + 1d78: f885 4844 strb.w r4, [r5, #2116] ; 0x844 memset(value, 0 , (((len >> 4) & 0x0F)+1)*sizeof(uint16_t)); - 1d88: f829 4003 strh.w r4, [r9, r3] + 1d7c: f829 4003 strh.w r4, [r9, r3] BMCBitStates(){ - 1d8c: f885 4848 strb.w r4, [r5, #2120] ; 0x848 + 1d80: f885 4848 strb.w r4, [r5, #2120] ; 0x848 memset(value, 0 , (((len >> 4) & 0x0F)+1)*sizeof(uint16_t)); - 1d90: f829 4008 strh.w r4, [r9, r8] + 1d84: f829 4008 strh.w r4, [r9, r8] BMCBitStates(){ - 1d94: f88c b002 strb.w fp, [ip, #2] + 1d88: f88c b002 strb.w fp, [ip, #2] memset(value, 0 , (((len >> 4) & 0x0F)+1)*sizeof(uint16_t)); - 1d98: f82c bb04 strh.w fp, [ip], #4 - 1d9c: 45bc cmp ip, r7 - 1d9e: d1f9 bne.n 1d94 + 1d8c: f82c bb04 strh.w fp, [ip], #4 + 1d90: 45bc cmp ip, r7 + 1d92: d1f9 bne.n 1d88 layer(globals.layer), - 1da0: f641 0309 movw r3, #6153 ; 0x1809 - 1da4: f641 0256 movw r2, #6230 ; 0x1856 + 1d94: f641 0309 movw r3, #6153 ; 0x1809 + 1d98: f641 0256 movw r2, #6230 ; 0x1856 BMCBitStates(){ - 1da8: f885 b858 strb.w fp, [r5, #2136] ; 0x858 + 1d9c: f885 b858 strb.w fp, [r5, #2136] ; 0x858 BMCLFO(){ - 1dac: f04f 4180 mov.w r1, #1073741824 ; 0x40000000 - 1db0: 444b add r3, r9 + 1da0: f04f 4180 mov.w r1, #1073741824 ; 0x40000000 + 1da4: 444b add r3, r9 memset(value, 0 , (((len >> 4) & 0x0F)+1)*sizeof(uint16_t)); - 1db2: f829 b002 strh.w fp, [r9, r2] - 1db6: 48cb ldr r0, [pc, #812] ; (20e4 ) - 1db8: 2200 movs r2, #0 - 1dba: f8c5 386c str.w r3, [r5, #2156] ; 0x86c + 1da6: f829 b002 strh.w fp, [r9, r2] + 1daa: 48cc ldr r0, [pc, #816] ; (20dc ) + 1dac: 2200 movs r2, #0 + 1dae: f8c5 386c str.w r3, [r5, #2156] ; 0x86c void reset(){ flags.reset(); #ifdef BMC_DEBUG debugFlags.reset(); #endif offset = 0; - 1dbe: f44f 03f0 mov.w r3, #7864320 ; 0x780000 + 1db2: f44f 03f0 mov.w r3, #7864320 ; 0x780000 class BMCFlags { - 1dc2: f8c5 b85c str.w fp, [r5, #2140] ; 0x85c - 1dc6: f505 6e19 add.w lr, r5, #2448 ; 0x990 - 1dca: f8c5 3808 str.w r3, [r5, #2056] ; 0x808 + 1db6: f8c5 b85c str.w fp, [r5, #2140] ; 0x85c + 1dba: f605 1e94 addw lr, r5, #2452 ; 0x994 + 1dbe: f8c5 3808 str.w r3, [r5, #2056] ; 0x808 #if defined(BMC_HAS_DISPLAY) ,display(midi #if defined(BMC_USE_SYNC) ,sync #endif ) - 1dce: f641 0370 movw r3, #6256 ; 0x1870 - 1dd2: f8a5 b860 strh.w fp, [r5, #2144] ; 0x860 - 1dd6: f641 344f movw r4, #6991 ; 0x1b4f + 1dc2: f641 0370 movw r3, #6256 ; 0x1870 + 1dc6: f8a5 b860 strh.w fp, [r5, #2144] ; 0x860 + 1dca: f641 344f movw r4, #6991 ; 0x1b4f BMCGlobals(bmcStore& t_store, BMCSettings& t_settings):store(t_store), settings(t_settings){ - 1dda: f8c5 b864 str.w fp, [r5, #2148] ; 0x864 - 1dde: 444b add r3, r9 - 1de0: f8c5 b868 str.w fp, [r5, #2152] ; 0x868 + 1dce: f8c5 b864 str.w fp, [r5, #2148] ; 0x864 + 1dd2: 444b add r3, r9 + 1dd4: f8c5 b868 str.w fp, [r5, #2152] ; 0x868 layer = 0; bpm = 120; loopsPerSecond = 0; lastLoopsPerSecond = 0; - 1de4: f242 3c6f movw ip, #9071 ; 0x236f + 1dd8: f242 3c6f movw ip, #9071 ; 0x236f #include "utility/BMC-Structs.h" class BMCCallbacks { public: BMCCallbacks(){ pageChanged = 0; - 1de8: f8c5 b87c str.w fp, [r5, #2172] ; 0x87c - 1dec: 444c add r4, r9 + 1ddc: f8c5 b87c str.w fp, [r5, #2172] ; 0x87c + 1de0: 444c add r4, r9 editorConnection = 0; - 1dee: f8c5 b874 str.w fp, [r5, #2164] ; 0x874 - 1df2: 44cc add ip, r9 + 1de2: f8c5 b874 str.w fp, [r5, #2164] ; 0x874 + 1de6: 44cc add ip, r9 storeUpdated = 0; - 1df4: f8c5 b878 str.w fp, [r5, #2168] ; 0x878 + 1de8: f8c5 b878 str.w fp, [r5, #2168] ; 0x878 midi(callback, globals), - 1df8: f509 57ce add.w r7, r9, #6592 ; 0x19c0 + 1dec: f509 57ce add.w r7, r9, #6592 ; 0x19c0 oneSecondPassed = 0; - 1dfc: f8c5 b870 str.w fp, [r5, #2160] ; 0x870 + 1df0: f8c5 b870 str.w fp, [r5, #2160] ; 0x870 menuCommand = 0; - 1e00: f8c5 b880 str.w fp, [r5, #2176] ; 0x880 + 1df4: f8c5 b880 str.w fp, [r5, #2176] ; 0x880 typerCommand = 0; - 1e04: f8c5 b884 str.w fp, [r5, #2180] ; 0x884 + 1df8: f8c5 b884 str.w fp, [r5, #2180] ; 0x884 typerCustomCommand = 0; - 1e08: f8c5 b888 str.w fp, [r5, #2184] ; 0x888 + 1dfc: f8c5 b888 str.w fp, [r5, #2184] ; 0x888 #if BMC_MAX_TRIGGERS > 0 triggerCustom = 0; - 1e0c: f8c5 b88c str.w fp, [r5, #2188] ; 0x88c + 1e00: f8c5 b88c str.w fp, [r5, #2188] ; 0x88c #endif #if BMC_MAX_TIMED_EVENTS > 0 timedEventCustom = 0; - 1e10: f8c5 b890 str.w fp, [r5, #2192] ; 0x890 + 1e04: f8c5 b890 str.w fp, [r5, #2192] ; 0x890 #endif customActivity = 0; - 1e14: f8c5 b894 str.w fp, [r5, #2196] ; 0x894 + 1e08: f8c5 b894 str.w fp, [r5, #2196] ; 0x894 buttonDualPress = 0; - 1e18: f8c5 b898 str.w fp, [r5, #2200] ; 0x898 + 1e0c: f8c5 b898 str.w fp, [r5, #2200] ; 0x898 globalButtonDualPress = 0; - 1e1c: f8c5 b89c str.w fp, [r5, #2204] ; 0x89c + 1e10: f8c5 b89c str.w fp, [r5, #2204] ; 0x89c // userEventEncoders = 0; // userEventPots = 0; // userEventLeds = 0; // userEventRelays = 0; auxJackConnection = 0; - 1e20: f8c5 b8a0 str.w fp, [r5, #2208] ; 0x8a0 + 1e14: f8c5 b8a0 str.w fp, [r5, #2208] ; 0x8a0 midiTriggerReceived = 0; - 1e24: f8c5 b8a4 str.w fp, [r5, #2212] ; 0x8a4 + 1e18: f8c5 b8a4 str.w fp, [r5, #2212] ; 0x8a4 midiReceived = 0; - 1e28: f8c5 b8a8 str.w fp, [r5, #2216] ; 0x8a8 + 1e1c: f8c5 b8a8 str.w fp, [r5, #2216] ; 0x8a8 midiClockTickReceived = 0; - 1e2c: f8c5 b8ac str.w fp, [r5, #2220] ; 0x8ac + 1e20: f8c5 b8ac str.w fp, [r5, #2220] ; 0x8ac midiClockBeat = 0; - 1e30: f8c5 b8b0 str.w fp, [r5, #2224] ; 0x8b0 + 1e24: f8c5 b8b0 str.w fp, [r5, #2224] ; 0x8b0 midiClockBpmChange = 0; - 1e34: f8c5 b8b4 str.w fp, [r5, #2228] ; 0x8b4 + 1e28: f8c5 b8b4 str.w fp, [r5, #2228] ; 0x8b4 midiActivity = 0; - 1e38: f8c5 b8b8 str.w fp, [r5, #2232] ; 0x8b8 + 1e2c: f8c5 b8b8 str.w fp, [r5, #2232] ; 0x8b8 midiLocalUpdate = 0; - 1e3c: f8c5 b8bc str.w fp, [r5, #2236] ; 0x8bc + 1e30: f8c5 b8bc str.w fp, [r5, #2236] ; 0x8bc midiPreRoute = 0; - 1e40: f8c5 b8c0 str.w fp, [r5, #2240] ; 0x8c0 + 1e34: f8c5 b8c0 str.w fp, [r5, #2240] ; 0x8c0 valueStream = 0; - 1e44: f8c5 b8c4 str.w fp, [r5, #2244] ; 0x8c4 + 1e38: f8c5 b8c4 str.w fp, [r5, #2244] ; 0x8c4 firstLoop = 0; - 1e48: f8c5 b8e8 str.w fp, [r5, #2280] ; 0x8e8 + 1e3c: f8c5 b8e8 str.w fp, [r5, #2280] ; 0x8e8 midUpdate = 0; - 1e4c: f8c5 b8ec str.w fp, [r5, #2284] ; 0x8ec + 1e40: f8c5 b8ec str.w fp, [r5, #2284] ; 0x8ec messengerReceived = 0; - 1e50: f8c5 b8f0 str.w fp, [r5, #2288] ; 0x8f0 + 1e44: f8c5 b8f0 str.w fp, [r5, #2288] ; 0x8f0 presetChanged = 0; - 1e54: f8c5 b8c8 str.w fp, [r5, #2248] ; 0x8c8 + 1e48: f8c5 b8c8 str.w fp, [r5, #2248] ; 0x8c8 setListChanged = 0; - 1e58: f8c5 b8d0 str.w fp, [r5, #2256] ; 0x8d0 + 1e4c: f8c5 b8d0 str.w fp, [r5, #2256] ; 0x8d0 setListSongChanged = 0; - 1e5c: f8c5 b8d4 str.w fp, [r5, #2260] ; 0x8d4 + 1e50: f8c5 b8d4 str.w fp, [r5, #2260] ; 0x8d4 setListSongPartChanged = 0; - 1e60: f8c5 b8d8 str.w fp, [r5, #2264] ; 0x8d8 + 1e54: f8c5 b8d8 str.w fp, [r5, #2264] ; 0x8d8 presetBankChanged = 0; - 1e64: f8c5 b8cc str.w fp, [r5, #2252] ; 0x8cc + 1e58: f8c5 b8cc str.w fp, [r5, #2252] ; 0x8cc eepromErased = 0; - 1e68: f8c5 b8e4 str.w fp, [r5, #2276] ; 0x8e4 + 1e5c: f8c5 b8e4 str.w fp, [r5, #2276] ; 0x8e4 programBankChanged = 0; - 1e6c: f8c5 b8dc str.w fp, [r5, #2268] ; 0x8dc + 1e60: f8c5 b8dc str.w fp, [r5, #2268] ; 0x8dc programBankTrigger = 0; - 1e70: f8c5 b8e0 str.w fp, [r5, #2272] ; 0x8e0 + 1e64: f8c5 b8e0 str.w fp, [r5, #2272] ; 0x8e0 #ifdef BMC_USB_HOST_ENABLED hostConnection = 0; - 1e74: f8c5 b8f4 str.w fp, [r5, #2292] ; 0x8f4 + 1e68: f8c5 b8f4 str.w fp, [r5, #2292] ; 0x8f4 +#endif + +#ifdef BMC_MIDI_BLE_ENABLED + bleConnection = 0; + 1e6c: f8c5 b8f8 str.w fp, [r5, #2296] ; 0x8f8 #endif // leave this one on #ifdef BMC_USE_DAW_LC dawOnline = 0; - 1e78: f8c5 b8f8 str.w fp, [r5, #2296] ; 0x8f8 + 1e70: f8c5 b8fc str.w fp, [r5, #2300] ; 0x8fc dawRecievedLCD = 0; - 1e7c: f8c5 b8fc str.w fp, [r5, #2300] ; 0x8fc + 1e74: f8c5 b900 str.w fp, [r5, #2304] ; 0x900 dawRecievedTimeDisplay = 0; - 1e80: f8c5 b900 str.w fp, [r5, #2304] ; 0x900 + 1e78: f8c5 b904 str.w fp, [r5, #2308] ; 0x904 dawRecievedAssignmentDisplay = 0; - 1e84: f8c5 b904 str.w fp, [r5, #2308] ; 0x904 + 1e7c: f8c5 b908 str.w fp, [r5, #2312] ; 0x908 dawRecievedChannelMeter = 0; - 1e88: f8c5 b908 str.w fp, [r5, #2312] ; 0x908 + 1e80: f8c5 b90c str.w fp, [r5, #2316] ; 0x90c dawChannelMeterUpdate = 0; - 1e8c: f8c5 b90c str.w fp, [r5, #2316] ; 0x90c + 1e84: f8c5 b910 str.w fp, [r5, #2320] ; 0x910 dawChannelVPotUpdate = 0; - 1e90: f8c5 b910 str.w fp, [r5, #2320] ; 0x910 + 1e88: f8c5 b914 str.w fp, [r5, #2324] ; 0x914 dawRecievedChannelFaderPosition = 0; - 1e94: f8c5 b914 str.w fp, [r5, #2324] ; 0x914 + 1e8c: f8c5 b918 str.w fp, [r5, #2328] ; 0x918 dawRecievedMasterFaderPosition = 0; - 1e98: f8c5 b918 str.w fp, [r5, #2328] ; 0x918 + 1e90: f8c5 b91c str.w fp, [r5, #2332] ; 0x91c dawRecievedChannelSelect = 0; - 1e9c: f8c5 b91c str.w fp, [r5, #2332] ; 0x91c + 1e94: f8c5 b920 str.w fp, [r5, #2336] ; 0x920 dawRecievedChannelSolo = 0; - 1ea0: f8c5 b920 str.w fp, [r5, #2336] ; 0x920 + 1e98: f8c5 b924 str.w fp, [r5, #2340] ; 0x924 dawRecievedChannelMute = 0; - 1ea4: f8c5 b924 str.w fp, [r5, #2340] ; 0x924 + 1e9c: f8c5 b928 str.w fp, [r5, #2344] ; 0x928 dawRecievedChannelRecReady = 0; - 1ea8: f8c5 b928 str.w fp, [r5, #2344] ; 0x928 + 1ea0: f8c5 b92c str.w fp, [r5, #2348] ; 0x92c dawRecievedLedState = 0; - 1eac: f8c5 b92c str.w fp, [r5, #2348] ; 0x92c + 1ea4: f8c5 b930 str.w fp, [r5, #2352] ; 0x930 dawReceivedTimeCodeDigit = 0; - 1eb0: f8c5 b930 str.w fp, [r5, #2352] ; 0x930 + 1ea8: f8c5 b934 str.w fp, [r5, #2356] ; 0x934 #endif #ifdef BMC_USE_BEATBUDDY beatBuddyBeatLocation = 0; - 1eb4: f8c5 b934 str.w fp, [r5, #2356] ; 0x934 + 1eac: f8c5 b938 str.w fp, [r5, #2360] ; 0x938 #endif #if defined(BMC_USE_FAS) fasConnection = 0; - 1eb8: f8c5 b938 str.w fp, [r5, #2360] ; 0x938 + 1eb0: f8c5 b93c str.w fp, [r5, #2364] ; 0x93c fasPresetChange = 0; - 1ebc: f8c5 b93c str.w fp, [r5, #2364] ; 0x93c + 1eb4: f8c5 b940 str.w fp, [r5, #2368] ; 0x940 fasPresetName = 0; - 1ec0: f8c5 b940 str.w fp, [r5, #2368] ; 0x940 + 1eb8: f8c5 b944 str.w fp, [r5, #2372] ; 0x944 fasSceneChange = 0; - 1ec4: f8c5 b944 str.w fp, [r5, #2372] ; 0x944 + 1ebc: f8c5 b948 str.w fp, [r5, #2376] ; 0x948 fasBlocksChange = 0; - 1ec8: f8c5 b948 str.w fp, [r5, #2376] ; 0x948 + 1ec0: f8c5 b94c str.w fp, [r5, #2380] ; 0x94c fasTunerStateChange = 0; - 1ecc: f8c5 b94c str.w fp, [r5, #2380] ; 0x94c + 1ec4: f8c5 b950 str.w fp, [r5, #2384] ; 0x950 fasTunerReceived = 0; - 1ed0: f8c5 b950 str.w fp, [r5, #2384] ; 0x950 - fasLooperStateChange = 0; - 1ed4: f8c5 b954 str.w fp, [r5, #2388] ; 0x954 - 1ed8: 6800 ldr r0, [r0, #0] - 1eda: 4e83 ldr r6, [pc, #524] ; (20e8 ) - 1edc: 9005 str r0, [sp, #20] - 1ede: f04f 60a0 mov.w r0, #83886080 ; 0x5000000 + 1ec8: f8c5 b954 str.w fp, [r5, #2388] ; 0x954 + 1ecc: 6800 ldr r0, [r0, #0] + 1ece: 4e84 ldr r6, [pc, #528] ; (20e0 ) + 1ed0: 9005 str r0, [sp, #20] + 1ed2: f04f 60a0 mov.w r0, #83886080 ; 0x5000000 ) - 1ee2: 9303 str r3, [sp, #12] - 1ee4: f605 1368 addw r3, r5, #2408 ; 0x968 - 1ee8: f8c5 0968 str.w r0, [r5, #2408] ; 0x968 - 1eec: 487f ldr r0, [pc, #508] ; (20ec ) - 1eee: f8df 8214 ldr.w r8, [pc, #532] ; 2104 - 1ef2: f8c5 096c str.w r0, [r5, #2412] ; 0x96c - 1ef6: 2001 movs r0, #1 + 1ed6: 9303 str r3, [sp, #12] + 1ed8: f605 136c addw r3, r5, #2412 ; 0x96c + 1edc: f8c5 096c str.w r0, [r5, #2412] ; 0x96c + 1ee0: 4880 ldr r0, [pc, #512] ; (20e4 ) + 1ee2: f8df 8214 ldr.w r8, [pc, #532] ; 20f8 + 1ee6: f8c5 0970 str.w r0, [r5, #2416] ; 0x970 + 1eea: 2001 movs r0, #1 + fasLooperStateChange = 0; + 1eec: f8c5 b958 str.w fp, [r5, #2392] ; 0x958 + 1ef0: f885 0974 strb.w r0, [r5, #2420] ; 0x974 + 1ef4: 2078 movs r0, #120 ; 0x78 fasLooperReceived = 0; - 1ef8: f8c5 b958 str.w fp, [r5, #2392] ; 0x958 - 1efc: f885 0970 strb.w r0, [r5, #2416] ; 0x970 - 1f00: 2078 movs r0, #120 ; 0x78 + 1ef6: f8c5 b95c str.w fp, [r5, #2396] ; 0x95c fasCpuReceived = 0; - 1f02: f8c5 b95c str.w fp, [r5, #2396] ; 0x95c + 1efa: f8c5 b960 str.w fp, [r5, #2400] ; 0x960 fasBlockParameterReceived = 0; - 1f06: f8c5 b960 str.w fp, [r5, #2400] ; 0x960 - 1f0a: f885 b964 strb.w fp, [r5, #2404] ; 0x964 - 1f0e: 60de str r6, [r3, #12] + 1efe: f8c5 b964 str.w fp, [r5, #2404] ; 0x964 + 1f02: f885 b968 strb.w fp, [r5, #2408] ; 0x968 + 1f06: 60de str r6, [r3, #12] struct BMCMidiDataChannel { - 1f10: 2600 movs r6, #0 - 1f12: f8a5 0978 strh.w r0, [r5, #2424] ; 0x978 - 1f16: 6159 str r1, [r3, #20] - 1f18: f8c5 b980 str.w fp, [r5, #2432] ; 0x980 - 1f1c: 621a str r2, [r3, #32] - 1f1e: 625a str r2, [r3, #36] ; 0x24 - 1f20: e8b8 000f ldmia.w r8!, {r0, r1, r2, r3} - 1f24: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} - 1f28: f8d8 3000 ldr.w r3, [r8] + 1f08: 2600 movs r6, #0 + 1f0a: f8a5 097c strh.w r0, [r5, #2428] ; 0x97c + 1f0e: 6159 str r1, [r3, #20] + 1f10: f8c5 b984 str.w fp, [r5, #2436] ; 0x984 + 1f14: 621a str r2, [r3, #32] + 1f16: 625a str r2, [r3, #36] ; 0x24 + 1f18: e8b8 000f ldmia.w r8!, {r0, r1, r2, r3} + 1f1c: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} + 1f20: f8d8 3000 ldr.w r3, [r8] timeoutSend = millis(); - 1f2c: 9805 ldr r0, [sp, #20] + 1f24: 9805 ldr r0, [sp, #20] BMCLFO(){ - 1f2e: f8ce 3000 str.w r3, [lr] + 1f26: f8ce 3000 str.w r3, [lr] timeoutSend = millis(); - 1f32: f8c5 0984 str.w r0, [r5, #2436] ; 0x984 + 1f2a: f8c5 0988 str.w r0, [r5, #2440] ; 0x988 struct BMCMidiMessage { - 1f36: f885 b9c0 strb.w fp, [r5, #2496] ; 0x9c0 - 1f3a: f885 b9c1 strb.w fp, [r5, #2497] ; 0x9c1 - 1f3e: f885 b9c2 strb.w fp, [r5, #2498] ; 0x9c2 - 1f42: f885 b9c3 strb.w fp, [r5, #2499] ; 0x9c3 - 1f46: f885 b9c4 strb.w fp, [r5, #2500] ; 0x9c4 + 1f2e: f885 b9c0 strb.w fp, [r5, #2496] ; 0x9c0 + 1f32: f885 b9c1 strb.w fp, [r5, #2497] ; 0x9c1 + 1f36: f885 b9c2 strb.w fp, [r5, #2498] ; 0x9c2 + 1f3a: f885 b9c3 strb.w fp, [r5, #2499] ; 0x9c3 BMCCallbacks& callback; BMCGlobals& globals; // BMCMidi(BMCCallbacks& cb, BMCGlobals& t_globals, bmcStoreGlobal& t_global): BMCMidi(BMCCallbacks& cb, BMCGlobals& t_globals): callback(cb), - 1f4a: 9b03 ldr r3, [sp, #12] - 1f4c: f885 bacc strb.w fp, [r5, #2764] ; 0xacc - 1f50: f8c5 3ac4 str.w r3, [r5, #2756] ; 0xac4 + 1f3e: 9b03 ldr r3, [sp, #12] + 1f40: f885 b9c4 strb.w fp, [r5, #2500] ; 0x9c4 + 1f44: f8c5 3ac4 str.w r3, [r5, #2756] ; 0xac4 globals(t_globals) - 1f54: 9b04 ldr r3, [sp, #16] - 1f56: f8c5 3ac8 str.w r3, [r5, #2760] ; 0xac8 - 1f5a: f804 6c82 strb.w r6, [r4, #-130] - 1f5e: f804 6c81 strb.w r6, [r4, #-129] + 1f48: 9b04 ldr r3, [sp, #16] + 1f4a: f885 bacc strb.w fp, [r5, #2764] ; 0xacc + 1f4e: f8c5 3ac8 str.w r3, [r5, #2760] ; 0xac8 + 1f52: f804 6c82 strb.w r6, [r4, #-130] + 1f56: f804 6c81 strb.w r6, [r4, #-129] struct BMCMidiData { - 1f62: 3482 adds r4, #130 ; 0x82 - 1f64: 4564 cmp r4, ip - 1f66: d1f8 bne.n 1f5a -#ifdef BMC_HAS_SERIAL_MIDI - ,midiSerial(cb) + 1f5a: 3482 adds r4, #130 ; 0x82 + 1f5c: 4564 cmp r4, ip + 1f5e: d1f8 bne.n 1f52 + MIDIDevice_BigBuffer Port; + #else + MIDIDevice Port; + #endif + BMCMidiPortHost(BMCCallbacks& cb, BMCGlobals& t_globals): + Port(UsbHost), + 1f60: f242 4020 movw r0, #9248 ; 0x2420 #endif #ifdef BMC_USB_HOST_ENABLED ,midiHost(cb, t_globals) - 1f68: f509 5400 add.w r4, r9, #8192 ; 0x2000 +#endif +#ifdef BMC_MIDI_BLE_ENABLED + ,midiBle(cb, t_globals) + 1f64: f509 5400 add.w r4, r9, #8192 ; 0x2000 // *********************************** // *********************************** class BMCMidiPortSerial { public: BMCMidiPortSerial(BMCCallbacks& cb): callback(cb) - 1f6c: 9b03 ldr r3, [sp, #12] - MIDIDevice_BigBuffer Port; - #else - MIDIDevice Port; - #endif - BMCMidiPortHost(BMCCallbacks& cb, BMCGlobals& t_globals): - Port(UsbHost), - 1f6e: f242 5020 movw r0, #9504 ; 0x2520 - BMCTimerBase(){ - 1f72: f44f 787a mov.w r8, #1000 ; 0x3e8 - 1f76: f8c4 32f4 str.w r3, [r4, #756] ; 0x2f4 + 1f68: 9b03 ldr r3, [sp, #12] BMCSerialMIDI(S& _port) : Port(_port){} - 1f7a: 4b5d ldr r3, [pc, #372] ; (20f0 ) - 1f7c: 4448 add r0, r9 - 1f7e: f8a4 62ee strh.w r6, [r4, #750] ; 0x2ee - 1f82: f8c4 3400 str.w r3, [r4, #1024] ; 0x400 - 1f86: f8c4 3510 str.w r3, [r4, #1296] ; 0x510 - 1f8a: f64f 73ff movw r3, #65535 ; 0xffff - 1f8e: f8a4 62f0 strh.w r6, [r4, #752] ; 0x2f0 - 1f92: f8c4 3404 str.w r3, [r4, #1028] ; 0x404 - 1f96: f8c4 3514 str.w r3, [r4, #1300] ; 0x514 + 1f6a: f64f 78ff movw r8, #65535 ; 0xffff + 1f6e: 4448 add r0, r9 + 1f70: f8df b188 ldr.w fp, [pc, #392] ; 20fc + 1f74: f8c4 32f4 str.w r3, [r4, #756] ; 0x2f4 }; class MIDIDevice : public MIDIDeviceBase { public: MIDIDevice(USBHost &host) : MIDIDeviceBase(host, rx, tx1, tx2, MAX_PACKET_SIZE, queue, RX_QUEUE_SIZE) {}; - 1f9a: f500 639f add.w r3, r0, #1272 ; 0x4f8 - 1f9e: f8c4 62fc str.w r6, [r4, #764] ; 0x2fc + 1f78: f500 639f add.w r3, r0, #1272 ; 0x4f8 + 1f7c: f8a4 62ee strh.w r6, [r4, #750] ; 0x2ee + 1f80: f8a4 62f0 strh.w r6, [r4, #752] ; 0x2f0 txtimer(this), rx_buffer(rx), tx_buffer1(tx1), tx_buffer2(tx2), - 1fa2: f8c4 3550 str.w r3, [r4, #1360] ; 0x550 + 1f84: f8c4 3450 str.w r3, [r4, #1104] ; 0x450 MIDIDeviceBase(host, rx, tx1, tx2, MAX_PACKET_SIZE, queue, RX_QUEUE_SIZE) {}; - 1fa6: f500 63a7 add.w r3, r0, #1336 ; 0x538 - 1faa: f884 6300 strb.w r6, [r4, #768] ; 0x300 + 1f88: f500 63a7 add.w r3, r0, #1336 ; 0x538 + 1f8c: f8c4 62fc str.w r6, [r4, #764] ; 0x2fc txtimer(this), rx_buffer(rx), tx_buffer1(tx1), tx_buffer2(tx2), - 1fae: f8c4 3554 str.w r3, [r4, #1364] ; 0x554 + 1f90: f8c4 3454 str.w r3, [r4, #1108] ; 0x454 MIDIDeviceBase(host, rx, tx1, tx2, MAX_PACKET_SIZE, queue, RX_QUEUE_SIZE) {}; - 1fb2: f500 63af add.w r3, r0, #1400 ; 0x578 - 1fb6: f8c4 640c str.w r6, [r4, #1036] ; 0x40c + 1f94: f500 63af add.w r3, r0, #1400 ; 0x578 + 1f98: f884 6300 strb.w r6, [r4, #768] ; 0x300 txtimer(this), rx_buffer(rx), tx_buffer1(tx1), tx_buffer2(tx2), - 1fba: f8c4 3558 str.w r3, [r4, #1368] ; 0x558 + 1f9c: f8c4 3458 str.w r3, [r4, #1112] ; 0x458 MIDIDeviceBase(host, rx, tx1, tx2, MAX_PACKET_SIZE, queue, RX_QUEUE_SIZE) {}; - 1fbe: f500 63b7 add.w r3, r0, #1464 ; 0x5b8 - 1fc2: f884 6410 strb.w r6, [r4, #1040] ; 0x410 + 1fa0: f500 63b7 add.w r3, r0, #1464 ; 0x5b8 + USBDriver() : next(NULL), device(NULL) {} + 1fa4: f8c4 6424 str.w r6, [r4, #1060] ; 0x424 rx_queue(rqueue), max_packet_size(bufsize), rx_queue_size(qsize) { - 1fc6: f8c4 3560 str.w r3, [r4, #1376] ; 0x560 - 1fca: 4b4a ldr r3, [pc, #296] ; (20f4 ) + 1fa8: f8c4 3460 str.w r3, [r4, #1120] ; 0x460 + 1fac: 4b4e ldr r3, [pc, #312] ; (20e8 ) USBDriver() : next(NULL), device(NULL) {} - 1fcc: f8c4 6524 str.w r6, [r4, #1316] ; 0x524 - 1fd0: f8c4 32f8 str.w r3, [r4, #760] ; 0x2f8 - 1fd4: 4b48 ldr r3, [pc, #288] ; (20f8 ) - 1fd6: f8c4 6528 str.w r6, [r4, #1320] ; 0x528 - 1fda: f8c4 3408 str.w r3, [r4, #1032] ; 0x408 + 1fae: f8c4 6428 str.w r6, [r4, #1064] ; 0x428 + 1fb2: f8c4 32f8 str.w r3, [r4, #760] ; 0x2f8 rx_queue(rqueue), max_packet_size(bufsize), rx_queue_size(qsize) { - 1fde: 4b47 ldr r3, [pc, #284] ; (20fc ) + 1fb6: 4b4d ldr r3, [pc, #308] ; (20ec ) USBDriverTimer(USBDriver *d) : driver(d) { } - 1fe0: f8c4 0540 str.w r0, [r4, #1344] ; 0x540 + 1fb8: f8c4 0440 str.w r0, [r4, #1088] ; 0x440 rx_queue(rqueue), max_packet_size(bufsize), rx_queue_size(qsize) { - 1fe4: f8c4 3520 str.w r3, [r4, #1312] ; 0x520 - 1fe8: 2340 movs r3, #64 ; 0x40 - 1fea: f8a4 3566 strh.w r3, [r4, #1382] ; 0x566 - 1fee: 2350 movs r3, #80 ; 0x50 - 1ff0: f8a4 3568 strh.w r3, [r4, #1384] ; 0x568 + 1fbc: f8c4 3420 str.w r3, [r4, #1056] ; 0x420 + 1fc0: 2340 movs r3, #64 ; 0x40 + 1fc2: f8c4 8404 str.w r8, [r4, #1028] ; 0x404 + 1fc6: f8a4 3466 strh.w r3, [r4, #1126] ; 0x466 + 1fca: 2350 movs r3, #80 ; 0x50 + 1fcc: f8c4 b400 str.w fp, [r4, #1024] ; 0x400 + 1fd0: f8a4 3468 strh.w r3, [r4, #1128] ; 0x468 init(); - 1ff4: f026 fa5e bl 284b4 + 1fd4: f026 fae4 bl 285a0 callback(cb), - 1ff8: 9a03 ldr r2, [sp, #12] globals(t_globals){ - 1ffa: 9904 ldr r1, [sp, #16] - editor(store, midi, settings, messenger), - 1ffc: f642 409c movw r0, #11420 ; 0x2c9c + 1fd8: 9a04 ldr r2, [sp, #16] callback(cb), - 2000: f8c4 2c20 str.w r2, [r4, #3104] ; 0xc20 - ) - 2004: f642 4270 movw r2, #11376 ; 0x2c70 - globals(t_globals){ - 2008: f8c4 1c24 str.w r1, [r4, #3108] ; 0xc24 - editor(store, midi, settings, messenger), - 200c: 4653 mov r3, sl - MIDIDeviceBase(host, rx, tx1, tx2, MAX_PACKET_SIZE, queue, RX_QUEUE_SIZE) {}; - 200e: 493c ldr r1, [pc, #240] ; (2100 ) - ) - 2010: 444a add r2, r9 -struct BMCRoutingItem { - 2012: f884 6c40 strb.w r6, [r4, #3136] ; 0xc40 + 1fda: 9803 ldr r0, [sp, #12] editor(store, midi, settings, messenger), - 2016: 4448 add r0, r9 - 2018: f8c4 1520 str.w r1, [r4, #1312] ; 0x520 + 1fdc: 4653 mov r3, sl + globals(t_globals){ + 1fde: f8c4 2b24 str.w r2, [r4, #2852] ; 0xb24 void reset(){ ticks = 0; bpmAvgSize = 0; // memset(bpmAvg, 0, BMC_BPM_AVERAGE); memset(bpmAvg, 0, sizeof(bpmAvg[0]) * BMC_BPM_AVERAGE); - 201c: f243 1a9c movw sl, #12700 ; 0x319c + 1fe2: f509 5a47 add.w sl, r9, #12736 ; 0x31c0 +// *********************************** +class BMCMidiPortBle { +public: + BMCMidiPortBle(BMCCallbacks& cb, BMCGlobals& t_globals): + callback(cb), + globals(t_globals), + 1fe6: f8c4 2b44 str.w r2, [r4, #2884] ; 0xb44 + ) + 1fea: f642 4290 movw r2, #11408 ; 0x2c90 + MIDIDeviceBase(host, rx, tx1, tx2, MAX_PACKET_SIZE, queue, RX_QUEUE_SIZE) {}; + 1fee: 4940 ldr r1, [pc, #256] ; (20f0 ) + 1ff0: f8c4 8c54 str.w r8, [r4, #3156] ; 0xc54 + 1ff4: 444a add r2, r9 + callback(cb), + 1ff6: f8c4 0b20 str.w r0, [r4, #2848] ; 0xb20 + BMCTimerBase(){ + 1ffa: f44f 787a mov.w r8, #1000 ; 0x3e8 + callback(cb), + 1ffe: f8c4 0b40 str.w r0, [r4, #2880] ; 0xb40 + 2002: f8c4 6b4c str.w r6, [r4, #2892] ; 0xb4c + 2006: f884 6b50 strb.w r6, [r4, #2896] ; 0xb50 + Port(BMC_MIDI_SERIAL_IO_BLE) + 200a: f8c4 6c58 str.w r6, [r4, #3160] ; 0xc58 + 200e: f884 6c5c strb.w r6, [r4, #3164] ; 0xc5c +struct BMCRoutingItem { + 2012: f884 6c60 strb.w r6, [r4, #3168] ; 0xc60 + 2016: f884 6c61 strb.w r6, [r4, #3169] ; 0xc61 + 201a: f884 6c62 strb.w r6, [r4, #3170] ; 0xc62 + 201e: f884 6c63 strb.w r6, [r4, #3171] ; 0xc63 + 2022: f884 6c64 strb.w r6, [r4, #3172] ; 0xc64 + 2026: f884 6c65 strb.w r6, [r4, #3173] ; 0xc65 + 202a: f884 6c66 strb.w r6, [r4, #3174] ; 0xc66 + 202e: f884 6c67 strb.w r6, [r4, #3175] ; 0xc67 + 2032: f884 6c68 strb.w r6, [r4, #3176] ; 0xc68 + 2036: f884 6c69 strb.w r6, [r4, #3177] ; 0xc69 + 203a: f884 6c6a strb.w r6, [r4, #3178] ; 0xc6a + 203e: f884 6c6b strb.w r6, [r4, #3179] ; 0xc6b + 2042: f884 6c6c strb.w r6, [r4, #3180] ; 0xc6c + 2046: f884 6c6d strb.w r6, [r4, #3181] ; 0xc6d + 204a: f884 6c6e strb.w r6, [r4, #3182] ; 0xc6e + 204e: f884 6c6f strb.w r6, [r4, #3183] ; 0xc6f + 2052: f884 6c70 strb.w r6, [r4, #3184] ; 0xc70 + 2056: f884 6c71 strb.w r6, [r4, #3185] ; 0xc71 + 205a: f884 6c72 strb.w r6, [r4, #3186] ; 0xc72 + 205e: f884 6c73 strb.w r6, [r4, #3187] ; 0xc73 + 2062: f8c4 bc50 str.w fp, [r4, #3152] ; 0xc50 + 2066: f8c4 1420 str.w r1, [r4, #1056] ; 0x420 + 206a: 4922 ldr r1, [pc, #136] ; (20f4 ) + 206c: f884 6c74 strb.w r6, [r4, #3188] ; 0xc74 + 2070: f8c4 1b48 str.w r1, [r4, #2888] ; 0xb48 + editor(store, midi, settings, messenger), + 2074: 4649 mov r1, r9 + 2076: 9200 str r2, [sp, #0] + 2078: 463a mov r2, r7 + flags = 0; + 207a: f885 6acc strb.w r6, [r5, #2764] ; 0xacc // #else // output = (((vtValue>>8)&0x0F)*100) + (((vtValue>>4)&0x0F)*10) + ((vtValue>>0)&0x0F); // #endif } public: BMCTyper(BMCCallbacks& cb):callback(cb){ - 2020: 9903 ldr r1, [sp, #12] - 2022: f884 6c41 strb.w r6, [r4, #3137] ; 0xc41 - 2026: 44ca add sl, r9 - 2028: f884 6c42 strb.w r6, [r4, #3138] ; 0xc42 - 202c: f884 6c43 strb.w r6, [r4, #3139] ; 0xc43 - 2030: f884 6c44 strb.w r6, [r4, #3140] ; 0xc44 - 2034: f884 6c45 strb.w r6, [r4, #3141] ; 0xc45 - 2038: f884 6c46 strb.w r6, [r4, #3142] ; 0xc46 - 203c: f884 6c47 strb.w r6, [r4, #3143] ; 0xc47 - 2040: f884 6c48 strb.w r6, [r4, #3144] ; 0xc48 - 2044: f884 6c49 strb.w r6, [r4, #3145] ; 0xc49 - 2048: f884 6c4a strb.w r6, [r4, #3146] ; 0xc4a - 204c: f884 6c4b strb.w r6, [r4, #3147] ; 0xc4b - 2050: f884 6c4c strb.w r6, [r4, #3148] ; 0xc4c - 2054: f884 6c4d strb.w r6, [r4, #3149] ; 0xc4d - 2058: f884 6c4e strb.w r6, [r4, #3150] ; 0xc4e - 205c: f884 6c4f strb.w r6, [r4, #3151] ; 0xc4f - 2060: f884 6c50 strb.w r6, [r4, #3152] ; 0xc50 - 2064: f884 6c51 strb.w r6, [r4, #3153] ; 0xc51 - 2068: f884 6c52 strb.w r6, [r4, #3154] ; 0xc52 - 206c: f884 6c53 strb.w r6, [r4, #3155] ; 0xc53 - 2070: f884 6c54 strb.w r6, [r4, #3156] ; 0xc54 - flags = 0; - 2074: f885 6acc strb.w r6, [r5, #2764] ; 0xacc + 207e: f8c4 0c8c str.w r0, [r4, #3212] ; 0xc8c + 2082: f642 40bc movw r0, #11452 ; 0x2cbc class BMCFlags { - 2078: f8c4 6c60 str.w r6, [r4, #3168] ; 0xc60 - 207c: f8c4 6c64 str.w r6, [r4, #3172] ; 0xc64 - 2080: f8a4 6c68 strh.w r6, [r4, #3176] ; 0xc68 - 2084: f8c4 1c6c str.w r1, [r4, #3180] ; 0xc6c - 2088: 4649 mov r1, r9 + 2086: f8c4 6c80 str.w r6, [r4, #3200] ; 0xc80 + 208a: f8c4 6c84 str.w r6, [r4, #3204] ; 0xc84 + 208e: 4448 add r0, r9 + 2090: f8a4 6c88 strh.w r6, [r4, #3208] ; 0xc88 struct BMCMessenger { - 208a: f8a4 6c70 strh.w r6, [r4, #3184] ; 0xc70 - 208e: f8c4 6c74 str.w r6, [r4, #3188] ; 0xc74 - 2092: f884 6c78 strb.w r6, [r4, #3192] ; 0xc78 + 2094: f8a4 6c90 strh.w r6, [r4, #3216] ; 0xc90 + 2098: f8c4 6c94 str.w r6, [r4, #3220] ; 0xc94 + 209c: f884 6c98 strb.w r6, [r4, #3224] ; 0xc98 #define BMC_CLOCK_BPM_AVG 4 #define BMC_MICROS_SECOND 0x3938700 class BMCMidiClock { public: BMCMidiClock(BMCMidi& t_midi):midi(t_midi),bpm(t_midi.globals.bpm){ - 2096: f509 5440 add.w r4, r9, #12288 ; 0x3000 - 209a: 9200 str r2, [sp, #0] - 209c: 463a mov r2, r7 - 209e: f017 ff9d bl 19fdc - 20a2: f8d5 3ac8 ldr.w r3, [r5, #2760] ; 0xac8 - 20a6: f884 6184 strb.w r6, [r4, #388] ; 0x184 - 20aa: 330a adds r3, #10 - 20ac: f8a4 618c strh.w r6, [r4, #396] ; 0x18c - 20b0: f8c4 6190 str.w r6, [r4, #400] ; 0x190 - 20b4: f8c4 3188 str.w r3, [r4, #392] ; 0x188 - 20b8: f884 6194 strb.w r6, [r4, #404] ; 0x194 - 20bc: f8c4 7180 str.w r7, [r4, #384] ; 0x180 + 20a0: f509 5440 add.w r4, r9, #12288 ; 0x3000 + 20a4: f018 f80a bl 1a0bc + 20a8: f8d5 3ac8 ldr.w r3, [r5, #2760] ; 0xac8 + 20ac: f884 61a4 strb.w r6, [r4, #420] ; 0x1a4 + 20b0: 330a adds r3, #10 + 20b2: f8a4 61ac strh.w r6, [r4, #428] ; 0x1ac + 20b6: f8c4 61b0 str.w r6, [r4, #432] ; 0x1b0 + 20ba: f8c4 31a8 str.w r3, [r4, #424] ; 0x1a8 + 20be: f884 61b4 strb.w r6, [r4, #436] ; 0x1b4 + 20c2: f8c4 71a0 str.w r7, [r4, #416] ; 0x1a0 class elapsedMicros { private: unsigned long us; public: elapsedMicros(void) { us = micros(); } - 20c0: f028 fa58 bl 2a574 + 20c6: f028 fac9 bl 2a65c + ,sync(midi, midiClock, callback) + 20ca: f509 5249 add.w r2, r9, #12864 ; 0x3240 BMCBpmCalculator(){ - 20c4: f8a4 619c strh.w r6, [r4, #412] ; 0x19c - 20c8: f884 619e strb.w r6, [r4, #414] ; 0x19e - 20cc: f884 61a8 strb.w r6, [r4, #424] ; 0x1a8 - 20d0: f8c4 61b8 str.w r6, [r4, #440] ; 0x1b8 - 20d4: f884 61bc strb.w r6, [r4, #444] ; 0x1bc - 20d8: f8c4 61c0 str.w r6, [r4, #448] ; 0x1c0 - 20dc: e014 b.n 2108 - 20de: bf00 nop - 20e0: 20000774 .word 0x20000774 - 20e4: 2000bae8 .word 0x2000bae8 - 20e8: 41f00000 .word 0x41f00000 - 20ec: 7f000019 .word 0x7f000019 - 20f0: ffff0000 .word 0xffff0000 - 20f4: 2000b038 .word 0x2000b038 - 20f8: 2000b098 .word 0x2000b098 - 20fc: 200041cc .word 0x200041cc - 2100: 200040dc .word 0x200040dc - 2104: 20000794 .word 0x20000794 - 2108: f8c4 0198 str.w r0, [r4, #408] ; 0x198 - 210c: f8a4 81b4 strh.w r8, [r4, #436] ; 0x1b4 - 2110: e9c4 666b strd r6, r6, [r4, #428] ; 0x1ac + 20ce: f8a4 61bc strh.w r6, [r4, #444] ; 0x1bc + 20d2: f884 61be strb.w r6, [r4, #446] ; 0x1be + 20d6: e013 b.n 2100 + 20d8: 20000774 .word 0x20000774 + 20dc: 2000bb08 .word 0x2000bb08 + 20e0: 41f00000 .word 0x41f00000 + 20e4: 7f000019 .word 0x7f000019 + 20e8: 2000b058 .word 0x2000b058 + 20ec: 2000428c .word 0x2000428c + 20f0: 2000419c .word 0x2000419c + 20f4: 2000b0b8 .word 0x2000b0b8 + 20f8: 20000794 .word 0x20000794 + 20fc: ffff0000 .word 0xffff0000 + 2100: f884 61c8 strb.w r6, [r4, #456] ; 0x1c8 + 2104: f8c4 61d8 str.w r6, [r4, #472] ; 0x1d8 + 2108: f884 61dc strb.w r6, [r4, #476] ; 0x1dc + 210c: f8c4 61e0 str.w r6, [r4, #480] ; 0x1e0 + 2110: f8c4 01b8 str.w r0, [r4, #440] ; 0x1b8 + 2114: f8a4 81d4 strh.w r8, [r4, #468] ; 0x1d4 + 2118: 9205 str r2, [sp, #20] + 211a: e9c4 6673 strd r6, r6, [r4, #460] ; 0x1cc memset(bpmAvg, 0, sizeof(bpmAvg[0]) * BMC_BPM_AVERAGE); - 2114: f8ca 6004 str.w r6, [sl, #4] - 2118: f8ca 6008 str.w r6, [sl, #8] - 211c: f8c4 61c8 str.w r6, [r4, #456] ; 0x1c8 - 2120: f8c4 61d0 str.w r6, [r4, #464] ; 0x1d0 + 211e: f8ca 6000 str.w r6, [sl] + 2122: f8ca 6004 str.w r6, [sl, #4] + 2126: f8c4 61e8 str.w r6, [r4, #488] ; 0x1e8 + 212a: f8c4 61f0 str.w r6, [r4, #496] ; 0x1f0 flags = 0; - 2124: f884 6194 strb.w r6, [r4, #404] ; 0x194 - 2128: f8a4 81c4 strh.w r8, [r4, #452] ; 0x1c4 - 212c: f8a4 81cc strh.w r8, [r4, #460] ; 0x1cc + 212e: f884 61b4 strb.w r6, [r4, #436] ; 0x1b4 + 2132: f8a4 81e4 strh.w r8, [r4, #484] ; 0x1e4 + 2136: f8a4 81ec strh.w r8, [r4, #492] ; 0x1ec elapsedMicros(unsigned long val) { us = micros() - val; } elapsedMicros(const elapsedMicros &orig) { us = orig.us; } operator unsigned long () const { return micros() - us; } elapsedMicros & operator = (const elapsedMicros &rhs) { us = rhs.us; return *this; } elapsedMicros & operator = (unsigned long val) { us = micros() - val; return *this; } - 2130: f028 fa20 bl 2a574 + 213a: f028 fa8f bl 2a65c ,presets(midi) - 2134: f243 13ec movw r3, #12780 ; 0x31ec + 213e: f243 230c movw r3, #12812 ; 0x320c ticks = 0; - 2138: f884 61bc strb.w r6, [r4, #444] ; 0x1bc + 2142: f884 61dc strb.w r6, [r4, #476] ; 0x1dc ,sync(midi, midiClock, callback) - 213c: f243 2220 movw r2, #12832 ; 0x3220 + 2146: f243 12a0 movw r2, #12704 ; 0x31a0 bpmAvgSize = 0; - 2140: f884 61a8 strb.w r6, [r4, #424] ; 0x1a8 + 214a: f884 61c8 strb.w r6, [r4, #456] ; 0x1c8 ,presets(midi) - 2144: 444b add r3, r9 - 2146: f8c4 0198 str.w r0, [r4, #408] ; 0x198 + 214e: 444b add r3, r9 + 2150: f8c4 01b8 str.w r0, [r4, #440] ; 0x1b8 ,sync(midi, midiClock, callback) - 214a: eb09 0002 add.w r0, r9, r2 + 2154: 444a add r2, r9 memset(bpmAvg, 0, sizeof(bpmAvg[0]) * BMC_BPM_AVERAGE); - 214e: f8ca 6004 str.w r6, [sl, #4] - 2152: f509 5246 add.w r2, r9, #12672 ; 0x3180 - 2156: f8ca 6008 str.w r6, [sl, #8] + 2156: f8ca 6000 str.w r6, [sl] 215a: 4639 mov r1, r7 - 215c: f884 619e strb.w r6, [r4, #414] ; 0x19e + 215c: f8ca 6004 str.w r6, [sl, #4] + 2160: f884 61be strb.w r6, [r4, #446] ; 0x1be class BMCFlags { - 2160: f884 61f0 strb.w r6, [r4, #496] ; 0x1f0 + 2164: f884 6210 strb.w r6, [r4, #528] ; 0x210 presetIndex(midi.globals.presetIndex), - 2164: f8d5 aac8 ldr.w sl, [r5, #2760] ; 0xac8 + 2168: f8d5 aac8 ldr.w sl, [r5, #2760] ; 0xac8 presets(t_presets), - 2168: f8c4 3200 str.w r3, [r4, #512] ; 0x200 - 216c: f10a 030c add.w r3, sl, #12 + 216c: f8c4 3220 str.w r3, [r4, #544] ; 0x220 + 2170: f10a 030c add.w r3, sl, #12 prevTime = 0; - 2170: f8c4 61b8 str.w r6, [r4, #440] ; 0x1b8 + 2174: f8c4 61d8 str.w r6, [r4, #472] ; 0x1d8 BMCTimerBase(){ - 2174: f8c4 61dc str.w r6, [r4, #476] ; 0x1dc - 2178: f8c4 31f4 str.w r3, [r4, #500] ; 0x1f4 + 2178: f8c4 61fc str.w r6, [r4, #508] ; 0x1fc + 217c: f8c4 3214 str.w r3, [r4, #532] ; 0x214 bank(midi.globals.bank), - 217c: f10a 030e add.w r3, sl, #14 - 2180: f8c4 61e4 str.w r6, [r4, #484] ; 0x1e4 - 2184: f8c4 31f8 str.w r3, [r4, #504] ; 0x1f8 + 2180: f10a 030e add.w r3, sl, #14 + 2184: f8c4 6204 str.w r6, [r4, #516] ; 0x204 + 2188: f8c4 3218 str.w r3, [r4, #536] ; 0x218 preset(midi.globals.preset) - 2188: f10a 030f add.w r3, sl, #15 - 218c: f884 621c strb.w r6, [r4, #540] ; 0x21c - 2190: f8c4 31fc str.w r3, [r4, #508] ; 0x1fc + 218c: f10a 030f add.w r3, sl, #15 + 2190: f884 623c strb.w r6, [r4, #572] ; 0x23c + 2194: f8c4 321c str.w r3, [r4, #540] ; 0x21c setList(presets.midi.globals.setList), - 2194: f10a 0330 add.w r3, sl, #48 ; 0x30 + 2198: f10a 0330 add.w r3, sl, #48 ; 0x30 + 219c: 9805 ldr r0, [sp, #20] + 219e: f8c4 3228 str.w r3, [r4, #552] ; 0x228 + song(presets.midi.globals.song), + 21a2: f10a 0332 add.w r3, sl, #50 ; 0x32 #include "utility/BMC-Def.h" #include "midi/BMC-Midi.h" class BMCMidiActiveSense { public: BMCMidiActiveSense(BMCMidi& t_midi):midi(t_midi){ - 2198: f8c4 71d4 str.w r7, [r4, #468] ; 0x1d4 - 219c: f8c4 3208 str.w r3, [r4, #520] ; 0x208 - song(presets.midi.globals.song), - 21a0: f10a 0332 add.w r3, sl, #50 ; 0x32 - 21a4: f8a4 81d8 strh.w r8, [r4, #472] ; 0x1d8 - 21a8: f8c4 320c str.w r3, [r4, #524] ; 0x20c + 21a6: f8c4 71f4 str.w r7, [r4, #500] ; 0x1f4 + 21aa: f8c4 322c str.w r3, [r4, #556] ; 0x22c songPart(presets.midi.globals.songPart), - 21ac: f10a 0334 add.w r3, sl, #52 ; 0x34 - 21b0: f8a4 81e0 strh.w r8, [r4, #480] ; 0x1e0 - 21b4: f8c4 3210 str.w r3, [r4, #528] ; 0x210 + 21ae: f10a 0334 add.w r3, sl, #52 ; 0x34 + 21b2: f8a4 81f8 strh.w r8, [r4, #504] ; 0x1f8 + 21b6: f8c4 3230 str.w r3, [r4, #560] ; 0x230 songInLibrary(presets.midi.globals.songInLibrary), - 21b8: f10a 0336 add.w r3, sl, #54 ; 0x36 - midi(t_midi), - 21bc: f8c4 71ec str.w r7, [r4, #492] ; 0x1ec - 21c0: f8c4 3214 str.w r3, [r4, #532] ; 0x214 + 21ba: f10a 0336 add.w r3, sl, #54 ; 0x36 + 21be: f8a4 8200 strh.w r8, [r4, #512] ; 0x200 + 21c2: f8c4 3234 str.w r3, [r4, #564] ; 0x234 songFlags(presets.midi.globals.songFlags) - 21c4: f10a 0338 add.w r3, sl, #56 ; 0x38 + 21c6: f10a 0338 add.w r3, sl, #56 ; 0x38 + midi(t_midi), + 21ca: f8c4 720c str.w r7, [r4, #524] ; 0x20c + 21ce: f8c4 3238 str.w r3, [r4, #568] ; 0x238 midi(presets.midi), - 21c8: f8c4 7204 str.w r7, [r4, #516] ; 0x204 - songFlags(presets.midi.globals.songFlags) - 21cc: f8c4 3218 str.w r3, [r4, #536] ; 0x218 - 21d0: 9b03 ldr r3, [sp, #12] - 21d2: 9005 str r0, [sp, #20] - 21d4: f7ff fb74 bl 18c0 + 21d2: f8c4 7224 str.w r7, [r4, #548] ; 0x224 + 21d6: 9b03 ldr r3, [sp, #12] + 21d8: f7ff fb6c bl 18b4 public: // constructor, pass the midi and store.global data objects from BMC.h BMCTempoToTap(BMCMidi& t_midi): midi(t_midi), globals(midi.globals), global(globals.store.global) - 21d8: f8da 3000 ldr.w r3, [sl] + 21dc: f8da 3000 ldr.w r3, [sl] memset(value, 0 , (((len >> 4) & 0x0F)+1)*sizeof(uint16_t)); - 21dc: f243 71ca movw r1, #14282 ; 0x37ca - 21e0: f8c4 67c4 str.w r6, [r4, #1988] ; 0x7c4 - 21e4: f643 0210 movw r2, #14352 ; 0x3810 + 21e0: f243 71ea movw r1, #14314 ; 0x37ea + 21e4: f8c4 67e4 str.w r6, [r4, #2020] ; 0x7e4 21e8: 3304 adds r3, #4 - 21ea: f884 67c8 strb.w r6, [r4, #1992] ; 0x7c8 + 21ea: f884 67e8 strb.w r6, [r4, #2024] ; 0x7e8 BMCBitStates(){ - 21ee: f884 67cc strb.w r6, [r4, #1996] ; 0x7cc - 21f2: 444a add r2, r9 - 21f4: f8c4 37bc str.w r3, [r4, #1980] ; 0x7bc - 21f8: f243 73f0 movw r3, #14320 ; 0x37f0 + 21ee: f884 67ec strb.w r6, [r4, #2028] ; 0x7ec + 21f2: f643 0230 movw r2, #14384 ; 0x3830 + 21f6: f8c4 37dc str.w r3, [r4, #2012] ; 0x7dc + 21fa: f643 0310 movw r3, #14352 ; 0x3810 #include "utility/BMC-Def.h" class BMCCustomSysEx { public: BMCCustomSysEx(BMCMidi& t_midi):midi(t_midi){ - 21fc: f8c4 77b0 str.w r7, [r4, #1968] ; 0x7b0 + 21fe: f8c4 77d0 str.w r7, [r4, #2000] ; 0x7d0 + 2202: 444a add r2, r9 midi(t_midi), - 2200: f8c4 77b4 str.w r7, [r4, #1972] ; 0x7b4 - 2204: 444b add r3, r9 + 2204: f8c4 77d4 str.w r7, [r4, #2004] ; 0x7d4 + 2208: 444b add r3, r9 globals(midi.globals), - 2206: f8c4 a7b8 str.w sl, [r4, #1976] ; 0x7b8 - 220a: f8a4 87c0 strh.w r8, [r4, #1984] ; 0x7c0 + 220a: f8c4 a7d8 str.w sl, [r4, #2008] ; 0x7d8 + 220e: f8a4 87e0 strh.w r8, [r4, #2016] ; 0x7e0 memset(value, 0 , (((len >> 4) & 0x0F)+1)*sizeof(uint16_t)); - 220e: f829 6001 strh.w r6, [r9, r1] - 2212: f243 71de movw r1, #14302 ; 0x37de + 2212: f829 6001 strh.w r6, [r9, r1] + 2216: f243 71fe movw r1, #14334 ; 0x37fe global(globals.store.global) - 2216: f8a4 67ce strh.w r6, [r4, #1998] ; 0x7ce - 221a: f8c4 67d0 str.w r6, [r4, #2000] ; 0x7d0 - 221e: f884 67dc strb.w r6, [r4, #2012] ; 0x7dc + 221a: f8a4 67ee strh.w r6, [r4, #2030] ; 0x7ee + 221e: f8c4 67f0 str.w r6, [r4, #2032] ; 0x7f0 + 2222: f884 67fc strb.w r6, [r4, #2044] ; 0x7fc BMCBitStates(){ - 2222: f884 67e0 strb.w r6, [r4, #2016] ; 0x7e0 + 2226: f884 6800 strb.w r6, [r4, #2048] ; 0x800 #define BMC_TRIGGERS_FLAG_AVAILABLE 0 class BMCTriggers { public: BMCTriggers(BMCMidi& t_midi): midi(t_midi), - 2226: f8c4 77d4 str.w r7, [r4, #2004] ; 0x7d4 + 222a: f8c4 77f4 str.w r7, [r4, #2036] ; 0x7f4 incoming(midi.message) - 222a: f8c4 77d8 str.w r7, [r4, #2008] ; 0x7d8 + 222e: f8c4 77f8 str.w r7, [r4, #2040] ; 0x7f8 memset(value, 0 , (((len >> 4) & 0x0F)+1)*sizeof(uint16_t)); - 222e: f829 6001 strh.w r6, [r9, r1] - 2232: f884 67e2 strb.w r6, [r4, #2018] ; 0x7e2 - 2236: f8c4 67e8 str.w r6, [r4, #2024] ; 0x7e8 + 2232: f829 6001 strh.w r6, [r9, r1] + 2236: f884 6802 strb.w r6, [r4, #2050] ; 0x802 + 223a: f8c4 6808 str.w r6, [r4, #2056] ; 0x808 #define BMC_TIMED_EVENTS_TIMER_FLAG_TRIGGERED 1 class BMCTimedEvents { public: BMCTimedEvents(BMCMidi& t_midi):midi(t_midi){ - 223a: f8a4 67ec strh.w r6, [r4, #2028] ; 0x7ec - 223e: 2600 movs r6, #0 - 2240: f8c4 77e4 str.w r7, [r4, #2020] ; 0x7e4 - 2244: e9c3 8600 strd r8, r6, [r3] - 2248: 3308 adds r3, #8 - 224a: 4293 cmp r3, r2 - 224c: d1fa bne.n 2244 - 224e: 4aaf ldr r2, [pc, #700] ; (250c ) + 223e: f8a4 680c strh.w r6, [r4, #2060] ; 0x80c + 2242: 2600 movs r6, #0 + 2244: f8c4 7804 str.w r7, [r4, #2052] ; 0x804 + 2248: e9c3 8600 strd r8, r6, [r3] + 224c: 3308 adds r3, #8 + 224e: 4293 cmp r3, r2 + 2250: d1fa bne.n 2248 + 2252: 4ab0 ldr r2, [pc, #704] ; (2514 ) // this define determines how many elements that array should have #define BMC_TOTAL_DIM_COLORS (BMC_IS_EVEN(BMC_TOTAL_PIXELS)?(BMC_TOTAL_PIXELS/2):((BMC_TOTAL_PIXELS/2)+1)) class BMCPixels { public: BMCPixels(BMCGlobals& t_globals):globals(t_globals),pixels(BMC_TOTAL_PIXELS, - 2250: f643 0a3c movw sl, #14396 ; 0x383c + 2254: f643 0a5c movw sl, #14428 ; 0x385c ) - 2254: f8c4 6810 str.w r6, [r4, #2064] ; 0x810 - 2258: 6813 ldr r3, [r2, #0] - 225a: 44ca add sl, r9 - 225c: f884 6814 strb.w r6, [r4, #2068] ; 0x814 + 2258: f8c4 6830 str.w r6, [r4, #2096] ; 0x830 + 225c: 6813 ldr r3, [r2, #0] + 225e: 44ca add sl, r9 + 2260: f884 6834 strb.w r6, [r4, #2100] ; 0x834 elapsedMillis(void) { ms = millis(); } - 2260: f8c4 3818 str.w r3, [r4, #2072] ; 0x818 - 2264: f10a 0860 add.w r8, sl, #96 ; 0x60 + 2264: f8c4 3838 str.w r3, [r4, #2104] ; 0x838 2268: 6813 ldr r3, [r2, #0] struct BMCRunTime { - 226a: f8c4 6820 str.w r6, [r4, #2080] ; 0x820 + 226a: f8c4 6840 str.w r6, [r4, #2112] ; 0x840 struct BMCStopwatch { - 226e: f884 6824 strb.w r6, [r4, #2084] ; 0x824 - 2272: f8c4 6828 str.w r6, [r4, #2088] ; 0x828 - 2276: f8c4 682c str.w r6, [r4, #2092] ; 0x82c - 227a: f8a4 6830 strh.w r6, [r4, #2096] ; 0x830 - 227e: f884 6832 strb.w r6, [r4, #2098] ; 0x832 - 2282: f8c4 381c str.w r3, [r4, #2076] ; 0x81c + 226e: f884 6844 strb.w r6, [r4, #2116] ; 0x844 + 2272: f8c4 6848 str.w r6, [r4, #2120] ; 0x848 + 2276: f8c4 684c str.w r6, [r4, #2124] ; 0x84c + 227a: f8a4 6850 strh.w r6, [r4, #2128] ; 0x850 + 227e: f884 6852 strb.w r6, [r4, #2130] ; 0x852 + 2282: f8c4 383c str.w r3, [r4, #2108] ; 0x83c elapsedMicros(void) { us = micros(); } - 2286: f028 f975 bl 2a574 + 2286: f028 f9e9 bl 2a65c + 228a: 9b04 ldr r3, [sp, #16] + 228c: f643 02e4 movw r2, #14564 ; 0x38e4 + 2290: f643 1114 movw r1, #14612 ; 0x3914 + 2294: f8c4 385c str.w r3, [r4, #2140] ; 0x85c class WS2812Serial { public: constexpr WS2812Serial(uint16_t num, void *fb, void *db, uint8_t pin, uint8_t cfg) : numled(num), pin(pin), config(cfg), - 228a: 49a1 ldr r1, [pc, #644] ; (2510 ) - 228c: 9b04 ldr r3, [sp, #16] - 228e: f643 02f4 movw r2, #14580 ; 0x38f4 - 2292: f8c4 189c str.w r1, [r4, #2204] ; 0x89c + 2298: 4b9f ldr r3, [pc, #636] ; (2518 ) + 229a: 444a add r2, r9 + 229c: f8c4 0858 str.w r0, [r4, #2136] ; 0x858 + 22a0: 4449 add r1, r9 + 22a2: f8c4 38bc str.w r3, [r4, #2236] ; 0x8bc displayMemory, - 2296: f10a 0116 add.w r1, sl, #22 - BMCPixels(BMCGlobals& t_globals):globals(t_globals),pixels(BMC_TOTAL_PIXELS, - 229a: f8c4 383c str.w r3, [r4, #2108] ; 0x83c - 229e: f643 03c4 movw r3, #14532 ; 0x38c4 + 22a6: f10a 0316 add.w r3, sl, #22 frameBuffer((uint8_t *)fb), drawBuffer((uint8_t *)db) { - 22a2: f8c4 18a0 str.w r1, [r4, #2208] ; 0x8a0 + 22aa: f8c4 68c8 str.w r6, [r4, #2248] ; 0x8c8 + 22ae: f44f 707a mov.w r0, #1000 ; 0x3e8 + 22b2: f8c4 38c0 str.w r3, [r4, #2240] ; 0x8c0 drawingMemory, - 22a6: f509 5161 add.w r1, r9, #14400 ; 0x3840 - 22aa: f8c4 68a8 str.w r6, [r4, #2216] ; 0x8a8 - 22ae: 444b add r3, r9 - 22b0: f8c4 18a4 str.w r1, [r4, #2212] ; 0x8a4 - 22b4: 21ff movs r1, #255 ; 0xff - 22b6: f8c4 68ac str.w r6, [r4, #2220] ; 0x8ac - 22ba: 444a add r2, r9 - 22bc: f8c4 68b4 str.w r6, [r4, #2228] ; 0x8b4 - 22c0: 2600 movs r6, #0 - 22c2: f884 18b0 strb.w r1, [r4, #2224] ; 0x8b0 - 22c6: f44f 717a mov.w r1, #1000 ; 0x3e8 - 22ca: f8c4 0838 str.w r0, [r4, #2104] ; 0x838 - 22ce: 8019 strh r1, [r3, #0] + 22b6: f10a 0304 add.w r3, sl, #4 + 22ba: f8c4 68cc str.w r6, [r4, #2252] ; 0x8cc + 22be: f8c4 38c4 str.w r3, [r4, #2244] ; 0x8c4 + 22c2: 23ff movs r3, #255 ; 0xff + 22c4: f8c4 68d4 str.w r6, [r4, #2260] ; 0x8d4 + BMCPixels(BMCGlobals& t_globals):globals(t_globals),pixels(BMC_TOTAL_PIXELS, + 22c8: f10a 0660 add.w r6, sl, #96 ; 0x60 + 22cc: f884 38d0 strb.w r3, [r4, #2256] ; 0x8d0 + 22d0: 2300 movs r3, #0 + 22d2: 8010 strh r0, [r2, #0] BMC_PIXELS_PIN, BMC_PIXELS_RGB_MODE){ - 22d0: 3308 adds r3, #8 - 22d2: f843 6c04 str.w r6, [r3, #-4] - 22d6: 4293 cmp r3, r2 - 22d8: d1f9 bne.n 22ce - 22da: 23fa movs r3, #250 ; 0xfa + 22d4: 3208 adds r2, #8 + 22d6: f842 3c04 str.w r3, [r2, #-4] + 22da: 428a cmp r2, r1 + 22dc: d1f9 bne.n 22d2 + 22de: 22fa movs r2, #250 ; 0xfa + 22e0: f8a4 391a strh.w r3, [r4, #2330] ; 0x91a + 22e4: f884 391e strb.w r3, [r4, #2334] ; 0x91e // begin right away to avoid issues with leds being started with // full brightness, tho so far no luck there at least with the pixels i own... pixels.begin(); - 22dc: 4640 mov r0, r8 - 22de: f8a4 68fa strh.w r6, [r4, #2298] ; 0x8fa - 22e2: f04f 0b00 mov.w fp, #0 + 22e8: 4630 mov r0, r6 BMC_PIXELS_RGB_MODE){ - 22e6: f884 68fe strb.w r6, [r4, #2302] ; 0x8fe - 22ea: f8a4 38fc strh.w r3, [r4, #2300] ; 0x8fc + 22ea: f8a4 291c strh.w r2, [r4, #2332] ; 0x91c + 22ee: f643 1898 movw r8, #14744 ; 0x3998 pixels.begin(); - 22ee: f026 fd75 bl 28ddc + 22f2: f026 fde9 bl 28ec8 } void setPixelColor(uint16_t num, uint8_t red, uint8_t green, uint8_t blue, uint8_t white) { setPixel(num, red, green, blue, white); } void setBrightness(uint8_t n) { brightness = n; - 22f2: 2380 movs r3, #128 ; 0x80 + 22f6: 2280 movs r2, #128 ; 0x80 pixels.setBrightness(BMC_PIXEL_MAX_BRIGHTNESS); pixels.show(); - 22f4: 4640 mov r0, r8 - 22f6: f643 1878 movw r8, #14712 ; 0x3978 - 22fa: f884 38b0 strb.w r3, [r4, #2224] ; 0x8b0 - 22fe: f026 fe43 bl 28f88 + 22f8: 4630 mov r0, r6 + 22fa: f643 1620 movw r6, #14624 ; 0x3920 + 22fe: f884 28d0 strb.w r2, [r4, #2256] ; 0x8d0 + 2302: 44c8 add r8, r9 + 2304: f026 feb6 bl 29074 flags &= excluded; - 2302: f8b4 38fa ldrh.w r3, [r4, #2298] ; 0x8fa + 2308: f8b4 291a ldrh.w r2, [r4, #2330] ; 0x91a + value[i] = 0; + 230c: 2300 movs r3, #0 currentBrightness[n] = 0; } #endif #if BMC_MAX_RGB_PIXELS > 0 globals.rgbPixelStates[0].zeroOut(); // red - 2306: f8d4 283c ldr.w r2, [r4, #2108] ; 0x83c + 230e: f8d4 185c ldr.w r1, [r4, #2140] ; 0x85c + 2312: f002 0202 and.w r2, r2, #2 delay(50); - 230a: 2032 movs r0, #50 ; 0x32 - 230c: f003 0302 and.w r3, r3, #2 - 2310: 44c8 add r8, r9 - 2312: f8a4 38fa strh.w r3, [r4, #2298] ; 0x8fa + 2316: 2032 movs r0, #50 ; 0x32 + 2318: 444e add r6, r9 +class BMCFlags { + 231a: 469b mov fp, r3 + flags &= excluded; + 231c: f8a4 291a strh.w r2, [r4, #2330] ; 0x91a globals.rgbPixelStates[1].zeroOut(); // green globals.rgbPixelStates[2].zeroOut(); // blue // the default color to each LED for(uint8_t i = 0, n = getRgbPixelIndex(0); i < BMC_MAX_RGB_PIXELS; i++, n++){ pulseTimer[n].stop(); currentColor[n] = 0; - 2316: f643 03b8 movw r3, #14520 ; 0x38b8 - value[i] = 0; - 231a: f8a2 604a strh.w r6, [r2, #74] ; 0x4a - 231e: f8a2 604e strh.w r6, [r2, #78] ; 0x4e - 2322: f8a2 6052 strh.w r6, [r2, #82] ; 0x52 + 2320: f643 02d8 movw r2, #14552 ; 0x38d8 + 2324: f8a1 304a strh.w r3, [r1, #74] ; 0x4a + 2328: f8a1 304e strh.w r3, [r1, #78] ; 0x4e + 232c: f8a1 3052 strh.w r3, [r1, #82] ; 0x52 prevTime = 0; - 2326: f8c4 68c8 str.w r6, [r4, #2248] ; 0x8c8 - 232a: f8c4 68d0 str.w r6, [r4, #2256] ; 0x8d0 - 232e: f8c4 68d8 str.w r6, [r4, #2264] ; 0x8d8 - 2332: f8c4 68e0 str.w r6, [r4, #2272] ; 0x8e0 - 2336: f8c4 68e8 str.w r6, [r4, #2280] ; 0x8e8 - 233a: f8c4 68f0 str.w r6, [r4, #2288] ; 0x8f0 - 233e: f849 6003 str.w r6, [r9, r3] - 2342: 444b add r3, r9 - 2344: 809e strh r6, [r3, #4] + 2330: f8c4 38e8 str.w r3, [r4, #2280] ; 0x8e8 + 2334: f8c4 38f0 str.w r3, [r4, #2288] ; 0x8f0 + 2338: f8c4 38f8 str.w r3, [r4, #2296] ; 0x8f8 + 233c: f8c4 3900 str.w r3, [r4, #2304] ; 0x900 + 2340: f8c4 3908 str.w r3, [r4, #2312] ; 0x908 + 2344: f8c4 3910 str.w r3, [r4, #2320] ; 0x910 + 2348: f849 3002 str.w r3, [r9, r2] + 234c: 444a add r2, r9 + 234e: 8093 strh r3, [r2, #4] } memset(rgbPulseReset, 0, sizeof(rgbPulseReset[0])*BMC_MAX_RGB_PIXELS); - 2346: f8ca 60b8 str.w r6, [sl, #184] ; 0xb8 - 234a: f8aa 60bc strh.w r6, [sl, #188] ; 0xbc - delay(50); - 234e: f509 5664 add.w r6, r9, #14592 ; 0x3900 + 2350: f8ca 30b8 str.w r3, [sl, #184] ; 0xb8 + 2354: f8aa 30bc strh.w r3, [sl, #188] ; 0xbc BMCTimerBase(){ - 2352: f44f 7a7a mov.w sl, #1000 ; 0x3e8 - 2356: f028 f8b9 bl 2a4cc + 2358: f44f 7a7a mov.w sl, #1000 ; 0x3e8 + delay(50); + 235c: f028 f92a bl 2a5b4 #define BMC_FLAG_LED_MUX_VALUE 9 #define BMC_FLAG_LED_MUX_TESTING 10 class BMCLed { public: BMCLed(){ - 235a: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff + 2360: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff class BMCFlags { - 235e: f886 b001 strb.w fp, [r6, #1] - 2362: f886 b002 strb.w fp, [r6, #2] - 2366: 3618 adds r6, #24 - 2368: f806 3c18 strb.w r3, [r6, #-24] + 2364: f886 b001 strb.w fp, [r6, #1] + 2368: f886 b002 strb.w fp, [r6, #2] + 236c: 3618 adds r6, #24 + 236e: f806 3c18 strb.w r3, [r6, #-24] analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); } else { analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); } } else { digitalWrite(pin, t_value); - 236c: 2100 movs r1, #0 - 236e: f826 ac14 strh.w sl, [r6, #-20] - 2372: 20ff movs r0, #255 ; 0xff - 2374: f846 bc10 str.w fp, [r6, #-16] + 2372: 2100 movs r1, #0 + 2374: f826 ac14 strh.w sl, [r6, #-20] + 2378: 20ff movs r0, #255 ; 0xff + 237a: f846 bc10 str.w fp, [r6, #-16] BMCLed(){ - 2378: f806 bc0c strb.w fp, [r6, #-12] - 237c: f826 ac08 strh.w sl, [r6, #-8] - 2380: f846 bc04 str.w fp, [r6, #-4] + 237e: f806 bc0c strb.w fp, [r6, #-12] + 2382: f826 ac08 strh.w sl, [r6, #-8] + 2386: f846 bc04 str.w fp, [r6, #-4] digitalWrite(pin, t_value); - 2384: f028 f920 bl 2a5c8 - 2388: 4546 cmp r6, r8 - 238a: d1e6 bne.n 235a - 238c: f643 1388 movw r3, #14728 ; 0x3988 - 2390: f643 2060 movw r0, #14944 ; 0x3a60 + 238a: f028 f991 bl 2a6b0 + 238e: 4546 cmp r6, r8 + 2390: d1e6 bne.n 2360 + 2392: f643 13a8 movw r3, #14760 ; 0x39a8 + 2396: f509 566a add.w r6, r9, #14976 ; 0x3a80 #define BMC_BTN_REL_TYPE_CONTINUOUS 4 #define BMC_BTN_REL_TYPE_ALT 5 class BMCButton { public: BMCButton(){ - 2394: 26ff movs r6, #255 ; 0xff - 2396: 2200 movs r2, #0 - 2398: 444b add r3, r9 - 239a: 4448 add r0, r9 - 239c: f44f 717a mov.w r1, #1000 ; 0x3e8 - 23a0: f8a4 a978 strh.w sl, [r4, #2424] ; 0x978 + 239a: 20ff movs r0, #255 ; 0xff + 239c: 2200 movs r2, #0 + 239e: 444b add r3, r9 + 23a0: f44f 717a mov.w r1, #1000 ; 0x3e8 + 23a4: f8a4 a998 strh.w sl, [r4, #2456] ; 0x998 class BMCEndlessTimerBase { private: BMCTimerBase <_BMCTiming, intervalType_t> timer; intervalType_t interval = 1000; public: BMCEndlessTimerBase(){} - 23a4: f8a4 a980 strh.w sl, [r4, #2432] ; 0x980 + 23a8: f8a4 a9a0 strh.w sl, [r4, #2464] ; 0x9a0 BMCTimerBase(){ - 23a8: f8c4 b97c str.w fp, [r4, #2428] ; 0x97c - 23ac: f884 b984 strb.w fp, [r4, #2436] ; 0x984 - 23b0: 701e strb r6, [r3, #0] - 23b2: 3324 adds r3, #36 ; 0x24 - 23b4: f803 2c23 strb.w r2, [r3, #-35] - 23b8: f803 2c22 strb.w r2, [r3, #-34] - 23bc: f803 2c21 strb.w r2, [r3, #-33] - 23c0: f843 2c20 str.w r2, [r3, #-32] - 23c4: f803 2c1c strb.w r2, [r3, #-28] - 23c8: f803 2c1b strb.w r2, [r3, #-27] - 23cc: f823 2c1a strh.w r2, [r3, #-26] - 23d0: f823 1c18 strh.w r1, [r3, #-24] - 23d4: f843 2c14 str.w r2, [r3, #-20] - 23d8: f823 1c10 strh.w r1, [r3, #-16] - 23dc: f843 2c0c str.w r2, [r3, #-12] - 23e0: f823 1c08 strh.w r1, [r3, #-8] - 23e4: f843 2c04 str.w r2, [r3, #-4] - 23e8: 4283 cmp r3, r0 - 23ea: d1e1 bne.n 23b0 + 23ac: f8c4 b99c str.w fp, [r4, #2460] ; 0x99c + 23b0: f884 b9a4 strb.w fp, [r4, #2468] ; 0x9a4 + 23b4: 7018 strb r0, [r3, #0] + 23b6: 3324 adds r3, #36 ; 0x24 + 23b8: f803 2c23 strb.w r2, [r3, #-35] + 23bc: f803 2c22 strb.w r2, [r3, #-34] + 23c0: f803 2c21 strb.w r2, [r3, #-33] + 23c4: f843 2c20 str.w r2, [r3, #-32] + 23c8: f803 2c1c strb.w r2, [r3, #-28] + 23cc: f803 2c1b strb.w r2, [r3, #-27] + 23d0: f823 2c1a strh.w r2, [r3, #-26] + 23d4: f823 1c18 strh.w r1, [r3, #-24] + 23d8: f843 2c14 str.w r2, [r3, #-20] + 23dc: f823 1c10 strh.w r1, [r3, #-16] + 23e0: f843 2c0c str.w r2, [r3, #-12] + 23e4: f823 1c08 strh.w r1, [r3, #-8] + 23e8: f843 2c04 str.w r2, [r3, #-4] + 23ec: 429e cmp r6, r3 + 23ee: d1e1 bne.n 23b4 callback(cb), globals(t_globals){ - 23ec: 9b03 ldr r3, [sp, #12] - 23ee: f509 5c6b add.w ip, r9, #15040 ; 0x3ac0 - 23f2: f8c4 2a68 str.w r2, [r4, #2664] ; 0xa68 - 23f6: 26ff movs r6, #255 ; 0xff - 23f8: f8c4 3a70 str.w r3, [r4, #2672] ; 0xa70 - 23fc: 9b04 ldr r3, [sp, #16] - 23fe: f884 2a6c strb.w r2, [r4, #2668] ; 0xa6c - 2402: f06f 4279 mvn.w r2, #4177526784 ; 0xf9000000 - 2406: f8c4 3a74 str.w r3, [r4, #2676] ; 0xa74 - 240a: f643 2378 movw r3, #14968 ; 0x3a78 - 240e: f8a4 1a64 strh.w r1, [r4, #2660] ; 0xa64 - 2412: f44f 717a mov.w r1, #1000 ; 0x3e8 - 2416: f8c4 2a60 str.w r2, [r4, #2656] ; 0xa60 - 241a: 444b add r3, r9 - 241c: 2200 movs r2, #0 - 241e: 701e strb r6, [r3, #0] - 2420: 3324 adds r3, #36 ; 0x24 - 2422: f803 2c23 strb.w r2, [r3, #-35] - 2426: f04f 0000 mov.w r0, #0 - 242a: f803 2c22 strb.w r2, [r3, #-34] - 242e: f803 2c21 strb.w r2, [r3, #-33] - 2432: f843 2c20 str.w r2, [r3, #-32] - 2436: f803 2c1c strb.w r2, [r3, #-28] - 243a: f803 2c1b strb.w r2, [r3, #-27] - 243e: f823 2c1a strh.w r2, [r3, #-26] - 2442: f823 1c18 strh.w r1, [r3, #-24] - 2446: f843 2c14 str.w r2, [r3, #-20] - 244a: f823 1c10 strh.w r1, [r3, #-16] - 244e: f843 2c0c str.w r2, [r3, #-12] - 2452: f823 1c08 strh.w r1, [r3, #-8] - 2456: f843 2c04 str.w r2, [r3, #-4] - 245a: 4563 cmp r3, ip - 245c: d1df bne.n 241e - 245e: 9b03 ldr r3, [sp, #12] -#define BMC_FLAG_AUX_JACK_POT_TOE_SWITCH_STATE 4 -#define BMC_FLAG_AUX_JACK_POT_TOE_SWITCH_STATE_CHANGED 5 - -class BMCAuxJackPot { -public: - BMCAuxJackPot(){ - 2460: f884 0b00 strb.w r0, [r4, #2816] ; 0xb00 + 23f0: 9b03 ldr r3, [sp, #12] + 23f2: f643 20e0 movw r0, #15072 ; 0x3ae0 + 23f6: f8c4 2a88 str.w r2, [r4, #2696] ; 0xa88 + 23fa: f04f 0cff mov.w ip, #255 ; 0xff + 23fe: f8c4 3a90 str.w r3, [r4, #2704] ; 0xa90 + 2402: 4448 add r0, r9 + 2404: 9b04 ldr r3, [sp, #16] + 2406: f884 2a8c strb.w r2, [r4, #2700] ; 0xa8c + 240a: f06f 4279 mvn.w r2, #4177526784 ; 0xf9000000 + 240e: f8c4 3a94 str.w r3, [r4, #2708] ; 0xa94 + 2412: f643 2398 movw r3, #15000 ; 0x3a98 + 2416: f8a4 1a84 strh.w r1, [r4, #2692] ; 0xa84 + 241a: f44f 717a mov.w r1, #1000 ; 0x3e8 + 241e: f8c4 2a80 str.w r2, [r4, #2688] ; 0xa80 + 2422: 444b add r3, r9 + 2424: 2200 movs r2, #0 + 2426: f883 c000 strb.w ip, [r3] + 242a: 3324 adds r3, #36 ; 0x24 + 242c: f803 2c23 strb.w r2, [r3, #-35] + 2430: f04f 0600 mov.w r6, #0 + 2434: f803 2c22 strb.w r2, [r3, #-34] + 2438: f803 2c21 strb.w r2, [r3, #-33] + 243c: f843 2c20 str.w r2, [r3, #-32] + 2440: f803 2c1c strb.w r2, [r3, #-28] + 2444: f803 2c1b strb.w r2, [r3, #-27] + 2448: f823 2c1a strh.w r2, [r3, #-26] + 244c: f823 1c18 strh.w r1, [r3, #-24] + 2450: f843 2c14 str.w r2, [r3, #-20] + 2454: f823 1c10 strh.w r1, [r3, #-16] + 2458: f843 2c0c str.w r2, [r3, #-12] + 245c: f823 1c08 strh.w r1, [r3, #-8] + 2460: f843 2c04 str.w r2, [r3, #-4] + 2464: 4298 cmp r0, r3 + 2466: d1de bne.n 2426 + 2468: 9b03 ldr r3, [sp, #12] value = readPot(); // always leave the mux flag in whatever state it was flags.reset(1< + 24d0: f027 feb2 bl 2a238 long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max; - 24ca: f8b4 3af2 ldrh.w r3, [r4, #2802] ; 0xaf2 - 24ce: f8b4 2af4 ldrh.w r2, [r4, #2804] ; 0xaf4 + 24d4: f8b4 3b12 ldrh.w r3, [r4, #2834] ; 0xb12 + 24d8: f8b4 2b14 ldrh.w r2, [r4, #2836] ; 0xb14 long in_range = in_max - in_min; - 24d2: 1ad2 subs r2, r2, r3 + 24dc: 1ad2 subs r2, r2, r3 if (in_range == 0) return out_min + out_range / 2; - 24d4: 2a00 cmp r2, #0 - 24d6: d01d beq.n 2514 + 24de: 2a00 cmp r2, #0 + 24e0: d01c beq.n 251c long num = (x - in_min) * out_range; - 24d8: eba0 0003 sub.w r0, r0, r3 + 24e2: eba0 0003 sub.w r0, r0, r3 num += in_range / 2; - 24dc: 4611 mov r1, r2 - 24de: bfb8 it lt - 24e0: 1c51 addlt r1, r2, #1 + 24e6: 4611 mov r1, r2 + 24e8: bfb8 it lt + 24ea: 1c51 addlt r1, r2, #1 long num = (x - in_min) * out_range; - 24e2: 01c3 lsls r3, r0, #7 + 24ec: 01c3 lsls r3, r0, #7 num += in_range / 2; - 24e4: eb03 0361 add.w r3, r3, r1, asr #1 + 24ee: eb03 0361 add.w r3, r3, r1, asr #1 if (in_range * num < 0) return result - 1; - 24e8: fb03 f102 mul.w r1, r3, r2 + 24f2: fb03 f102 mul.w r1, r3, r2 long result = num / in_range + out_min; - 24ec: fb93 f3f2 sdiv r3, r3, r2 + 24f6: fb93 f3f2 sdiv r3, r3, r2 if (in_range * num < 0) return result - 1; - 24f0: 2900 cmp r1, #0 - 24f2: bfb8 it lt - 24f4: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff - 24f8: b2db uxtb r3, r3 + 24fa: 2900 cmp r1, #0 + 24fc: bfb8 it lt + 24fe: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff + 2502: b2db uxtb r3, r3 rawValue = readPin(); - 24fa: f884 3aef strb.w r3, [r4, #2799] ; 0xaef + 2504: f884 3b0f strb.w r3, [r4, #2831] ; 0xb0f if(rawValue != lastRawValue){ - 24fe: b963 cbnz r3, 251a + 2508: b95b cbnz r3, 2522 value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 2500: f894 0af0 ldrb.w r0, [r4, #2800] ; 0xaf0 - 2504: 3001 adds r0, #1 + 250a: f894 0b10 ldrb.w r0, [r4, #2832] ; 0xb10 + 250e: 3001 adds r0, #1 stableSteps++; - 2506: b2c1 uxtb r1, r0 - 2508: e00c b.n 2524 - 250a: bf00 nop - 250c: 2000bae8 .word 0x2000bae8 - 2510: 02080006 .word 0x02080006 + 2510: b2c1 uxtb r1, r0 + 2512: e00b b.n 252c + 2514: 2000bb08 .word 0x2000bb08 + 2518: 02080006 .word 0x02080006 rawValue = readPin(); - 2514: 2340 movs r3, #64 ; 0x40 - 2516: f884 3aef strb.w r3, [r4, #2799] ; 0xaef + 251c: 2340 movs r3, #64 ; 0x40 + 251e: f884 3b0f strb.w r3, [r4, #2831] ; 0xb0f stableSteps = 0; - 251a: 2101 movs r1, #1 - 251c: 2200 movs r2, #0 - 251e: 4608 mov r0, r1 - 2520: f884 2af0 strb.w r2, [r4, #2800] ; 0xaf0 + 2522: 2101 movs r1, #1 + 2524: 2200 movs r2, #0 + 2526: 4608 mov r0, r1 + 2528: f884 2b10 strb.w r2, [r4, #2832] ; 0xb10 value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 2524: f894 2aee ldrb.w r2, [r4, #2798] ; 0xaee - 2528: fbb2 f2f0 udiv r2, r2, r0 + 252c: f894 2b0e ldrb.w r2, [r4, #2830] ; 0xb0e + 2530: fbb2 f2f0 udiv r2, r2, r0 if(abs(rawValue - value) > 10) { - 252c: 1a98 subs r0, r3, r2 - 252e: b2d6 uxtb r6, r2 - 2530: 2800 cmp r0, #0 - 2532: bfb8 it lt - 2534: 4240 neglt r0, r0 - 2536: 280a cmp r0, #10 - 2538: f300 80d0 bgt.w 26dc + 2534: 1a98 subs r0, r3, r2 + 2536: b2d6 uxtb r6, r2 + 2538: 2800 cmp r0, #0 + 253a: bfb8 it lt + 253c: 4240 neglt r0, r0 + 253e: 280a cmp r0, #10 + 2540: f300 80d0 bgt.w 26e4 value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 253c: f884 2aee strb.w r2, [r4, #2798] ; 0xaee + 2544: f884 2b0e strb.w r2, [r4, #2830] ; 0xb0e flags &= excluded; - 2540: f894 3aec ldrb.w r3, [r4, #2796] ; 0xaec + 2548: f894 3b0c ldrb.w r3, [r4, #2828] ; 0xb0c stableSteps = 0; - 2544: 29ff cmp r1, #255 ; 0xff + 254c: 29ff cmp r1, #255 ; 0xff flags = 0; - 2546: f04f 0200 mov.w r2, #0 - 254a: f643 40c8 movw r0, #15560 ; 0x3cc8 + 254e: f04f 0200 mov.w r2, #0 + 2552: f643 40e8 movw r0, #15592 ; 0x3ce8 flags &= excluded; - 254e: f003 0312 and.w r3, r3, #18 - 2552: bf08 it eq - 2554: 2100 moveq r1, #0 + 2556: f003 0312 and.w r3, r3, #18 + 255a: bf08 it eq + 255c: 2100 moveq r1, #0 flags = 0; - 2556: f884 2ae0 strb.w r2, [r4, #2784] ; 0xae0 - 255a: 4448 add r0, r9 + 255e: f884 2b00 strb.w r2, [r4, #2816] ; 0xb00 + 2562: 4448 add r0, r9 flags &= excluded; - 255c: f884 3aec strb.w r3, [r4, #2796] ; 0xaec + 2564: f884 3b0c strb.w r3, [r4, #2828] ; 0xb0c class BMCFlags { - 2560: f44f 437f mov.w r3, #65280 ; 0xff00 - 2564: f884 1af0 strb.w r1, [r4, #2800] ; 0xaf0 - 2568: f8a4 3b04 strh.w r3, [r4, #2820] ; 0xb04 - 256c: f8a4 3b0c strh.w r3, [r4, #2828] ; 0xb0c + 2568: f44f 437f mov.w r3, #65280 ; 0xff00 + 256c: f884 1b10 strb.w r1, [r4, #2832] ; 0xb10 + 2570: f8a4 3b24 strh.w r3, [r4, #2852] ; 0xb24 + 2574: f8a4 3b2c strh.w r3, [r4, #2860] ; 0xb2c BMCDisplay(BMCMidi& t_midi #if defined(BMC_USE_SYNC) ,BMCSync& t_sync #endif ):midi(t_midi), globals(t_midi.globals), - 2570: f8d5 6ac8 ldr.w r6, [r5, #2760] ; 0xac8 + 2578: f8d5 6ac8 ldr.w r6, [r5, #2760] ; 0xac8 midi(t_midi), globals(t_midi.globals), store(t_midi.globals.store), settings(t_midi.globals.settings) #if defined(BMC_USE_SYNC) ,sync(t_sync) - 2574: 9905 ldr r1, [sp, #20] + 257c: 9905 ldr r1, [sp, #20] store(t_midi.globals.store), - 2576: 6833 ldr r3, [r6, #0] + 257e: 6833 ldr r3, [r6, #0] globals(t_midi.globals), - 2578: f8c4 6b3c str.w r6, [r4, #2876] ; 0xb3c + 2580: f8c4 6b5c str.w r6, [r4, #2908] ; 0xb5c store(t_midi.globals.store), - 257c: f8c4 3b40 str.w r3, [r4, #2880] ; 0xb40 + 2584: f8c4 3b60 str.w r3, [r4, #2912] ; 0xb60 settings(t_midi.globals.settings), - 2580: 6873 ldr r3, [r6, #4] - 2582: f8c4 1b58 str.w r1, [r4, #2904] ; 0xb58 - 2586: f8c4 3b44 str.w r3, [r4, #2884] ; 0xb44 + 2588: 6873 ldr r3, [r6, #4] + 258a: f8c4 1b78 str.w r1, [r4, #2936] ; 0xb78 + 258e: f8c4 3b64 str.w r3, [r4, #2916] ; 0xb64 store(t_midi.globals.store), - 258a: 6833 ldr r3, [r6, #0] + 2592: 6833 ldr r3, [r6, #0] globals(t_midi.globals), - 258c: f8c4 6b4c str.w r6, [r4, #2892] ; 0xb4c + 2594: f8c4 6b6c str.w r6, [r4, #2924] ; 0xb6c store(t_midi.globals.store), - 2590: f8c4 3b50 str.w r3, [r4, #2896] ; 0xb50 + 2598: f8c4 3b70 str.w r3, [r4, #2928] ; 0xb70 settings(t_midi.globals.settings) - 2594: 6873 ldr r3, [r6, #4] + 259c: 6873 ldr r3, [r6, #4] #if defined(BMC_USE_SYNC) ,t_sync #endif ) #if defined(BMC_USE_SYNC) ,sync(t_sync) - 2596: f8c4 1b5c str.w r1, [r4, #2908] ; 0xb5c + 259e: f8c4 1b7c str.w r1, [r4, #2940] ; 0xb7c BMCDisplayHandlerDaw(BMCMidi& t_midi, BMCSync& t_sync): midi(t_midi), globals(t_midi.globals), store(t_midi.globals.store), settings(t_midi.globals.settings), sync(t_sync) - 259a: f8c4 1b70 str.w r1, [r4, #2928] ; 0xb70 - 259e: 4952 ldr r1, [pc, #328] ; (26e8 ) - 25a0: f8c4 3b54 str.w r3, [r4, #2900] ; 0xb54 - 25a4: f643 3396 movw r3, #15254 ; 0x3b96 - 25a8: 6809 ldr r1, [r1, #0] + 25a2: f8c4 1b90 str.w r1, [r4, #2960] ; 0xb90 + 25a6: 4952 ldr r1, [pc, #328] ; (26f0 ) + 25a8: f8c4 3b74 str.w r3, [r4, #2932] ; 0xb74 + 25ac: f643 33b6 movw r3, #15286 ; 0x3bb6 + 25b0: 6809 ldr r1, [r1, #0] globals(t_midi.globals), - 25aa: f8c4 6b64 str.w r6, [r4, #2916] ; 0xb64 - 25ae: 444b add r3, r9 + 25b2: f8c4 6b84 str.w r6, [r4, #2948] ; 0xb84 + 25b6: 444b add r3, r9 BMCAuxJackButton(){ // initialize with the pin number as 255 // if the pin is 255 it means the begin method has not been called pin = 255; flags.reset(); debounceTime = millis(); - 25b0: f8c4 1b08 str.w r1, [r4, #2824] ; 0xb08 - 25b4: 494c ldr r1, [pc, #304] ; (26e8 ) + 25b8: f8c4 1b28 str.w r1, [r4, #2856] ; 0xb28 + 25bc: 494c ldr r1, [pc, #304] ; (26f0 ) ):midi(t_midi), - 25b6: f8c4 7b38 str.w r7, [r4, #2872] ; 0xb38 - 25ba: 6809 ldr r1, [r1, #0] + 25be: f8c4 7b58 str.w r7, [r4, #2904] ; 0xb58 + 25c2: 6809 ldr r1, [r1, #0] midi(t_midi), - 25bc: f8c4 7b48 str.w r7, [r4, #2888] ; 0xb48 - 25c0: f8c4 1b10 str.w r1, [r4, #2832] ; 0xb10 + 25c4: f8c4 7b68 str.w r7, [r4, #2920] ; 0xb68 + 25c8: f8c4 1b30 str.w r1, [r4, #2864] ; 0xb30 store(t_midi.globals.store), - 25c4: 6831 ldr r1, [r6, #0] + 25cc: 6831 ldr r1, [r6, #0] midi(t_midi), - 25c6: f8c4 7b60 str.w r7, [r4, #2912] ; 0xb60 + 25ce: f8c4 7b80 str.w r7, [r4, #2944] ; 0xb80 store(t_midi.globals.store), - 25ca: f8c4 1b68 str.w r1, [r4, #2920] ; 0xb68 + 25d2: f8c4 1b88 str.w r1, [r4, #2952] ; 0xb88 settings(t_midi.globals.settings), - 25ce: 6871 ldr r1, [r6, #4] + 25d6: 6871 ldr r1, [r6, #4] struct bmcDawChannelsInfo { - 25d0: 26ff movs r6, #255 ; 0xff - 25d2: f8c4 1b6c str.w r1, [r4, #2924] ; 0xb6c - 25d6: f04f 0100 mov.w r1, #0 - 25da: f803 6c22 strb.w r6, [r3, #-34] - 25de: f803 2c0a strb.w r2, [r3, #-10] + 25d8: 26ff movs r6, #255 ; 0xff + 25da: f8c4 1b8c str.w r1, [r4, #2956] ; 0xb8c + 25de: f04f 0100 mov.w r1, #0 + 25e2: f803 6c22 strb.w r6, [r3, #-34] + 25e6: f803 2c0a strb.w r2, [r3, #-10] sync(t_sync) - 25e2: 3322 adds r3, #34 ; 0x22 - 25e4: f803 2c2b strb.w r2, [r3, #-43] - 25e8: f823 2c2a strh.w r2, [r3, #-42] - 25ec: f803 1c28 strb.w r1, [r3, #-40] - 25f0: f823 2c26 strh.w r2, [r3, #-38] - 25f4: 4298 cmp r0, r3 - 25f6: d1ee bne.n 25d6 + 25ea: 3322 adds r3, #34 ; 0x22 + 25ec: f803 2c2b strb.w r2, [r3, #-43] + 25f0: f823 2c2a strh.w r2, [r3, #-42] + 25f4: f803 1c28 strb.w r1, [r3, #-40] + 25f8: f823 2c26 strh.w r2, [r3, #-38] + 25fc: 4298 cmp r0, r3 + 25fe: d1ee bne.n 25de BMCDisplayHandlerFas(BMCMidi& t_midi, BMCSync& t_sync): midi(t_midi), globals(t_midi.globals), store(t_midi.globals.store), settings(t_midi.globals.settings), sync(t_sync) - 25f8: 9b05 ldr r3, [sp, #20] + 2600: 9b05 ldr r3, [sp, #20] uint8_t settings = 0; int8_t selChar = -1; uint16_t meterPixelValue = 0xFFFF; uint16_t meterValue = 0xFFFF; BMC_SSD1306 display; BMC_OLED(uint8_t _w=128, uint8_t _h=BMC_OLED_HEIGHT):display(_w, _h){ - 25fa: f04f 0b80 mov.w fp, #128 ; 0x80 - 25fe: f884 6cf8 strb.w r6, [r4, #3320] ; 0xcf8 - 2602: f643 6698 movw r6, #16024 ; 0x3e98 - 2606: f8c4 3cb8 str.w r3, [r4, #3256] ; 0xcb8 - 260a: f04f 0820 mov.w r8, #32 + 2602: f04f 0b80 mov.w fp, #128 ; 0x80 + 2606: f884 6d18 strb.w r6, [r4, #3352] ; 0xd18 + 260a: f643 66b8 movw r6, #16056 ; 0x3eb8 + 260e: f8c4 3cd8 str.w r3, [r4, #3288] ; 0xcd8 + 2612: f04f 0820 mov.w r8, #32 globals(t_midi.globals), - 260e: f8d5 3ac8 ldr.w r3, [r5, #2760] ; 0xac8 - 2612: f643 5548 movw r5, #15688 ; 0x3d48 + 2616: f8d5 3ac8 ldr.w r3, [r5, #2760] ; 0xac8 + 261a: f643 5568 movw r5, #15720 ; 0x3d68 midi(t_midi), - 2616: f8c4 7ca8 str.w r7, [r4, #3240] ; 0xca8 - 261a: 444e add r6, r9 + 261e: f8c4 7cc8 str.w r7, [r4, #3272] ; 0xcc8 + 2622: 444e add r6, r9 store(t_midi.globals.store), - 261c: 6818 ldr r0, [r3, #0] - 261e: 444d add r5, r9 + 2624: 6818 ldr r0, [r3, #0] + 2626: 444d add r5, r9 globals(t_midi.globals), - 2620: f8c4 3cac str.w r3, [r4, #3244] ; 0xcac - 2624: 2701 movs r7, #1 + 2628: f8c4 3ccc str.w r3, [r4, #3276] ; 0xccc + 262c: 2701 movs r7, #1 settings(t_midi.globals.settings), - 2626: 685b ldr r3, [r3, #4] + 262e: 685b ldr r3, [r3, #4] sync(t_sync) - 2628: f884 1cf4 strb.w r1, [r4, #3316] ; 0xcf4 + 2630: f884 1d14 strb.w r1, [r4, #3348] ; 0xd14 settings(t_midi.globals.settings), - 262c: f8c4 3cb4 str.w r3, [r4, #3252] ; 0xcb4 + 2634: f8c4 3cd4 str.w r3, [r4, #3284] ; 0xcd4 sync(t_sync) - 2630: f06f 03ff mvn.w r3, #255 ; 0xff + 2638: f06f 03ff mvn.w r3, #255 ; 0xff store(t_midi.globals.store), - 2634: f8c4 0cb0 str.w r0, [r4, #3248] ; 0xcb0 + 263c: f8c4 0cd0 str.w r0, [r4, #3280] ; 0xcd0 sync(t_sync) - 2638: f604 40f9 addw r0, r4, #3321 ; 0xcf9 - 263c: f8c4 3cf0 str.w r3, [r4, #3312] ; 0xcf0 - 2640: f64f 73ff movw r3, #65535 ; 0xffff + 2640: f604 5019 addw r0, r4, #3353 ; 0xd19 + 2644: f8c4 3d10 str.w r3, [r4, #3344] ; 0xd10 + 2648: f64f 73ff movw r3, #65535 ; 0xffff struct BMCTunerData { - 2644: f8a4 2cc8 strh.w r2, [r4, #3272] ; 0xcc8 - 2648: f8a4 3cf6 strh.w r3, [r4, #3318] ; 0xcf6 - 264c: f44f 737a mov.w r3, #1000 ; 0x3e8 - 2650: f884 1cca strb.w r1, [r4, #3274] ; 0xcca - 2654: f8a4 3cd4 strh.w r3, [r4, #3284] ; 0xcd4 - 2658: f8a4 3ce8 strh.w r3, [r4, #3304] ; 0xce8 + 264c: f8a4 2ce8 strh.w r2, [r4, #3304] ; 0xce8 + 2650: f8a4 3d16 strh.w r3, [r4, #3350] ; 0xd16 + 2654: f44f 737a mov.w r3, #1000 ; 0x3e8 + 2658: f884 1cea strb.w r1, [r4, #3306] ; 0xcea + 265c: f8a4 3cf4 strh.w r3, [r4, #3316] ; 0xcf4 + 2660: f8a4 3d08 strh.w r3, [r4, #3336] ; 0xd08 struct bmcDisplayIndexSel { - 265c: 4b23 ldr r3, [pc, #140] ; (26ec ) + 2664: 4b23 ldr r3, [pc, #140] ; (26f4 ) struct BMCTunerData { - 265e: f884 1cde strb.w r1, [r4, #3294] ; 0xcde + 2666: f884 1cfe strb.w r1, [r4, #3326] ; 0xcfe struct bmcDisplayIndexSel { - 2662: f8c4 3cbc str.w r3, [r4, #3260] ; 0xcbc - 2666: f44f 037f mov.w r3, #16711680 ; 0xff0000 + 266a: f8c4 3cdc str.w r3, [r4, #3292] ; 0xcdc + 266e: f44f 037f mov.w r3, #16711680 ; 0xff0000 struct BMCTunerData { - 266a: f8c4 2ccc str.w r2, [r4, #3276] ; 0xccc + 2672: f8c4 2cec str.w r2, [r4, #3308] ; 0xcec struct bmcDisplayIndexSel { - 266e: f8c4 3cc0 str.w r3, [r4, #3264] ; 0xcc0 - 2672: f44f 437f mov.w r3, #65280 ; 0xff00 + 2676: f8c4 3ce0 str.w r3, [r4, #3296] ; 0xce0 + 267a: f44f 437f mov.w r3, #65280 ; 0xff00 struct BMCTunerData { - 2676: f8c4 2cd0 str.w r2, [r4, #3280] ; 0xcd0 - 267a: f8c4 2cd8 str.w r2, [r4, #3288] ; 0xcd8 - 267e: f8a4 2cdc strh.w r2, [r4, #3292] ; 0xcdc - 2682: f8c4 2ce0 str.w r2, [r4, #3296] ; 0xce0 - 2686: f8c4 2ce4 str.w r2, [r4, #3300] ; 0xce4 - 268a: f8c4 2cec str.w r2, [r4, #3308] ; 0xcec - 268e: 2242 movs r2, #66 ; 0x42 - 2690: 4917 ldr r1, [pc, #92] ; (26f0 ) + 267e: f8c4 2cf0 str.w r2, [r4, #3312] ; 0xcf0 + 2682: f8c4 2cf8 str.w r2, [r4, #3320] ; 0xcf8 + 2686: f8a4 2cfc strh.w r2, [r4, #3324] ; 0xcfc + 268a: f8c4 2d00 str.w r2, [r4, #3328] ; 0xd00 + 268e: f8c4 2d04 str.w r2, [r4, #3332] ; 0xd04 + 2692: f8c4 2d0c str.w r2, [r4, #3340] ; 0xd0c + 2696: 2242 movs r2, #66 ; 0x42 + 2698: 4917 ldr r1, [pc, #92] ; (26f8 ) struct bmcDisplayIndexSel { - 2692: f8c4 3cc4 str.w r3, [r4, #3268] ; 0xcc4 - 2696: f028 f837 bl 2a708 - 269a: f64f 73ff movw r3, #65535 ; 0xffff - 269e: 22ff movs r2, #255 ; 0xff - 26a0: f04f 0a00 mov.w sl, #0 - 26a4: f805 bc0c strb.w fp, [r5, #-12] - 26a8: f805 2c08 strb.w r2, [r5, #-8] - 26ac: 4628 mov r0, r5 - 26ae: f805 8c0b strb.w r8, [r5, #-11] + 269a: f8c4 3ce4 str.w r3, [r4, #3300] ; 0xce4 + 269e: f028 f8a7 bl 2a7f0 + 26a2: f64f 73ff movw r3, #65535 ; 0xffff + 26a6: 22ff movs r2, #255 ; 0xff + 26a8: f04f 0a00 mov.w sl, #0 + 26ac: f805 bc0c strb.w fp, [r5, #-12] + 26b0: f805 2c08 strb.w r2, [r5, #-8] + 26b4: 4628 mov r0, r5 + 26b6: f805 8c0b strb.w r8, [r5, #-11] #if defined(BMC_USE_DAW_LC) ,dawHandler(t_midi, t_sync) #endif #if defined(BMC_USE_FAS) ,fasHandler(t_midi, t_sync) - 26b2: 3538 adds r5, #56 ; 0x38 - 26b4: f805 7c42 strb.w r7, [r5, #-66] - 26b8: 2220 movs r2, #32 - 26ba: f805 ac41 strb.w sl, [r5, #-65] - 26be: 2180 movs r1, #128 ; 0x80 - 26c0: f825 3c3e strh.w r3, [r5, #-62] - 26c4: f825 3c3c strh.w r3, [r5, #-60] - 26c8: f016 f8f0 bl 188ac - 26cc: 42ae cmp r6, r5 - 26ce: d1e4 bne.n 269a + 26ba: 3538 adds r5, #56 ; 0x38 + 26bc: f805 7c42 strb.w r7, [r5, #-66] + 26c0: 2220 movs r2, #32 + 26c2: f805 ac41 strb.w sl, [r5, #-65] + 26c6: 2180 movs r1, #128 ; 0x80 + 26c8: f825 3c3e strh.w r3, [r5, #-62] + 26cc: f825 3c3c strh.w r3, [r5, #-60] + 26d0: f016 f95e bl 18990 + 26d4: 42ae cmp r6, r5 + 26d6: d1e4 bne.n 26a2 #if defined(BMC_USE_ON_BOARD_EDITOR) ,obe(editor, display) #endif { // nothing here } - 26d0: 4648 mov r0, r9 - 26d2: f8c4 ae8c str.w sl, [r4, #3724] ; 0xe8c - 26d6: b007 add sp, #28 - 26d8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 26d8: 4648 mov r0, r9 + 26da: f8c4 aeac str.w sl, [r4, #3756] ; 0xeac + 26de: b007 add sp, #28 + 26e0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} value = (value + rawValue)/2; - 26dc: 4433 add r3, r6 - 26de: 105b asrs r3, r3, #1 - 26e0: f884 3aee strb.w r3, [r4, #2798] ; 0xaee - 26e4: e72c b.n 2540 - 26e6: bf00 nop - 26e8: 2000bae8 .word 0x2000bae8 - 26ec: ff0000ff .word 0xff0000ff - 26f0: 200007a8 .word 0x200007a8 - -000026f4 : + 26e4: 4433 add r3, r6 + 26e6: 105b asrs r3, r3, #1 + 26e8: f884 3b0e strb.w r3, [r4, #2830] ; 0xb0e + 26ec: e72c b.n 2548 + 26ee: bf00 nop + 26f0: 2000bb08 .word 0x2000bb08 + 26f4: ff0000ff .word 0xff0000ff + 26f8: 200007a8 .word 0x200007a8 + +000026fc : flags.off(BMC_FLAGS_STATUS_LED); heartbeat = 0; } } void BMC::stopwatchCmd(uint8_t cmd, uint8_t h, uint8_t m, uint8_t s){ - 26f4: b510 push {r4, lr} - 26f6: 4694 mov ip, r2 - 26f8: 4604 mov r4, r0 - 26fa: 461a mov r2, r3 - 26fc: f89d 3008 ldrb.w r3, [sp, #8] + 26fc: b510 push {r4, lr} + 26fe: 4694 mov ip, r2 + 2700: 4604 mov r4, r0 + 2702: 461a mov r2, r3 + 2704: f89d 3008 ldrb.w r3, [sp, #8] switch(cmd){ - 2700: 2904 cmp r1, #4 - 2702: d80d bhi.n 2720 - 2704: e8df f001 tbb [pc, r1] - 2708: 2a270321 .word 0x2a270321 - 270c: 0d .byte 0x0d - 270d: 00 .byte 0x00 + 2708: 2904 cmp r1, #4 + 270a: d80d bhi.n 2728 + 270c: e8df f001 tbb [pc, r1] + 2710: 2a270321 .word 0x2a270321 + 2714: 0d .byte 0x0d + 2715: 00 .byte 0x00 case BMC_STOPWATCH_CMD_STOP: stopwatch.stop(); break; case BMC_STOPWATCH_CMD_START: if((h+m+s)>0){ - 270e: eb0c 0102 add.w r1, ip, r2 - 2712: 42d9 cmn r1, r3 - 2714: d12f bne.n 2776 - 2716: f504 5040 add.w r0, r4, #12288 ; 0x3000 + 2716: eb0c 0102 add.w r1, ip, r2 + 271a: 42d9 cmn r1, r3 + 271c: d12f bne.n 277e + 271e: f504 5040 add.w r0, r4, #12288 ; 0x3000 running = true; - 271a: 2301 movs r3, #1 - 271c: f880 3824 strb.w r3, [r0, #2084] ; 0x824 + 2722: 2301 movs r3, #1 + 2724: f880 3844 strb.w r3, [r0, #2116] ; 0x844 stopwatch.set(h, m, s); } stopwatch.toggleReset(); break; } } - 2720: bd10 pop {r4, pc} + 2728: bd10 pop {r4, pc} if((h+m+s)>0){ - 2722: eb0c 0102 add.w r1, ip, r2 - 2726: 42d9 cmn r1, r3 - 2728: d12c bne.n 2784 + 272a: eb0c 0102 add.w r1, ip, r2 + 272e: 42d9 cmn r1, r3 + 2730: d12c bne.n 278c return running; - 272a: f504 5040 add.w r0, r4, #12288 ; 0x3000 + 2732: f504 5040 add.w r0, r4, #12288 ; 0x3000 if(active()){ - 272e: f890 3824 ldrb.w r3, [r0, #2084] ; 0x824 - 2732: 2b00 cmp r3, #0 - 2734: d0f1 beq.n 271a + 2736: f890 3844 ldrb.w r3, [r0, #2116] ; 0x844 + 273a: 2b00 cmp r3, #0 + 273c: d0f1 beq.n 2722 running = false; - 2736: 2300 movs r3, #0 - 2738: f880 3824 strb.w r3, [r0, #2084] ; 0x824 + 273e: 2300 movs r3, #0 + 2740: f880 3844 strb.w r3, [r0, #2116] ; 0x844 current = 0; - 273c: f8c0 382c str.w r3, [r0, #2092] ; 0x82c + 2744: f8c0 384c str.w r3, [r0, #2124] ; 0x84c hours = 0; - 2740: f8a0 3830 strh.w r3, [r0, #2096] ; 0x830 + 2748: f8a0 3850 strh.w r3, [r0, #2128] ; 0x850 seconds = 0; - 2744: f880 3832 strb.w r3, [r0, #2098] ; 0x832 + 274c: f880 3852 strb.w r3, [r0, #2130] ; 0x852 } - 2748: bd10 pop {r4, pc} + 2750: bd10 pop {r4, pc} running = false; - 274a: f504 5040 add.w r0, r4, #12288 ; 0x3000 - 274e: 2300 movs r3, #0 - 2750: f880 3824 strb.w r3, [r0, #2084] ; 0x824 - 2754: bd10 pop {r4, pc} + 2752: f504 5040 add.w r0, r4, #12288 ; 0x3000 + 2756: 2300 movs r3, #0 + 2758: f880 3844 strb.w r3, [r0, #2116] ; 0x844 + 275c: bd10 pop {r4, pc} running = false; - 2756: f504 5040 add.w r0, r4, #12288 ; 0x3000 - 275a: e7ec b.n 2736 + 275e: f504 5040 add.w r0, r4, #12288 ; 0x3000 + 2762: e7ec b.n 273e if((h+m+s)>0){ - 275c: eb0c 0102 add.w r1, ip, r2 - 2760: 42d9 cmn r1, r3 - 2762: d116 bne.n 2792 + 2764: eb0c 0102 add.w r1, ip, r2 + 2768: 42d9 cmn r1, r3 + 276a: d116 bne.n 279a running = !running; - 2764: f504 5040 add.w r0, r4, #12288 ; 0x3000 - 2768: f890 3824 ldrb.w r3, [r0, #2084] ; 0x824 - 276c: f083 0301 eor.w r3, r3, #1 - 2770: f880 3824 strb.w r3, [r0, #2084] ; 0x824 + 276c: f504 5040 add.w r0, r4, #12288 ; 0x3000 + 2770: f890 3844 ldrb.w r3, [r0, #2116] ; 0x844 + 2774: f083 0301 eor.w r3, r3, #1 + 2778: f880 3844 strb.w r3, [r0, #2116] ; 0x844 } - 2774: bd10 pop {r4, pc} + 277c: bd10 pop {r4, pc} stopwatch.set(h, m, s); - 2776: f643 0024 movw r0, #14372 ; 0x3824 - 277a: 4661 mov r1, ip - 277c: 4420 add r0, r4 - 277e: f7fd fca7 bl d0 - 2782: e7c8 b.n 2716 + 277e: f643 0044 movw r0, #14404 ; 0x3844 + 2782: 4661 mov r1, ip + 2784: 4420 add r0, r4 + 2786: f7fd fca3 bl d0 + 278a: e7c8 b.n 271e stopwatch.set(h, m, s); - 2784: f643 0024 movw r0, #14372 ; 0x3824 - 2788: 4661 mov r1, ip - 278a: 4420 add r0, r4 - 278c: f7fd fca0 bl d0 - 2790: e7cb b.n 272a + 278c: f643 0044 movw r0, #14404 ; 0x3844 + 2790: 4661 mov r1, ip + 2792: 4420 add r0, r4 + 2794: f7fd fc9c bl d0 + 2798: e7cb b.n 2732 stopwatch.set(h, m, s); - 2792: f643 0024 movw r0, #14372 ; 0x3824 - 2796: 4661 mov r1, ip - 2798: 4420 add r0, r4 - 279a: f7fd fc99 bl d0 - 279e: e7e1 b.n 2764 + 279a: f643 0044 movw r0, #14404 ; 0x3844 + 279e: 4661 mov r1, ip + 27a0: 4420 add r0, r4 + 27a2: f7fd fc95 bl d0 + 27a6: e7e1 b.n 276c -000027a0 : +000027a8 : c ^= d.colors; return c; } #if BMC_MAX_OLED > 1 void selectMux(uint8_t n){ - 27a0: b538 push {r3, r4, r5, lr} - 27a2: 1e43 subs r3, r0, #1 - 27a4: 4601 mov r1, r0 + 27a8: b538 push {r3, r4, r5, lr} + 27aa: 1e43 subs r3, r0, #1 + 27ac: 4601 mov r1, r0 } #endif break; case BMC_DEVICE_ID_OLED: #if BMC_MAX_OLED > 0 switch(n){ - 27a6: 2b04 cmp r3, #4 - 27a8: d81d bhi.n 27e6 - 27aa: e8df f003 tbb [pc, r3] - 27ae: 1803 .short 0x1803 - 27b0: 041a .short 0x041a - 27b2: 16 .byte 0x16 - 27b3: 00 .byte 0x00 - 27b4: 2120 movs r1, #32 + 27ae: 2b04 cmp r3, #4 + 27b0: d81d bhi.n 27ee + 27b2: e8df f003 tbb [pc, r3] + 27b6: 1803 .short 0x1803 + 27b8: 041a .short 0x041a + 27ba: 16 .byte 0x16 + 27bb: 00 .byte 0x00 + 27bc: 2120 movs r1, #32 void end(); void setClock(uint32_t frequency); void setSDA(uint8_t pin); void setSCL(uint8_t pin); void beginTransmission(uint8_t address) { txBuffer[0] = (address << 1); - 27b6: 4c0d ldr r4, [pc, #52] ; (27ec ) + 27be: 4c0d ldr r4, [pc, #52] ; (27f4 ) transmitting = 1; - 27b8: 2501 movs r5, #1 + 27c0: 2501 movs r5, #1 txBuffer[0] = (address << 1); - 27ba: 23e0 movs r3, #224 ; 0xe0 + 27c2: 23e0 movs r3, #224 ; 0xe0 #endif uint8_t address = 0x70 + ((n>>3) & 0x07); uint8_t mask = 1 << (n & 0x07); Wire.beginTransmission(address); Wire.write(mask); - 27bc: 4620 mov r0, r4 + 27c4: 4620 mov r0, r4 transmitting = 1; - 27be: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 27c6: f884 5130 strb.w r5, [r4, #304] ; 0x130 txBuffer[0] = (address << 1); - 27c2: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 27ca: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 txBufferLength = 1; - 27c6: f884 512f strb.w r5, [r4, #303] ; 0x12f - 27ca: f022 fcf5 bl 251b8 + 27ce: f884 512f strb.w r5, [r4, #303] ; 0x12f + 27d2: f022 fd67 bl 252a4 void beginTransmission(int address) { beginTransmission((uint8_t)address); } uint8_t endTransmission(uint8_t sendStop); uint8_t endTransmission(void) { return endTransmission(1); - 27ce: 4629 mov r1, r5 - 27d0: 4620 mov r0, r4 + 27d6: 4629 mov r1, r5 + 27d8: 4620 mov r0, r4 Wire.endTransmission(); } - 27d2: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 27d6: f022 bdfd b.w 253d4 + 27da: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 27de: f022 be6f b.w 254c0 #endif #if BMC_MAX_OLED > 4 && defined(BMC_DEVICE_UI_OLED_5) case 4: return BMC_DEVICE_UI_OLED_5; #endif #if BMC_MAX_OLED > 5 && defined(BMC_DEVICE_UI_OLED_6) case 5: return BMC_DEVICE_UI_OLED_6; - 27da: 2102 movs r1, #2 - 27dc: e7eb b.n 27b6 + 27e2: 2102 movs r1, #2 + 27e4: e7eb b.n 27be case 2: return BMC_DEVICE_UI_OLED_3; - 27de: 2110 movs r1, #16 - 27e0: e7e9 b.n 27b6 + 27e6: 2110 movs r1, #16 + 27e8: e7e9 b.n 27be case 3: return BMC_DEVICE_UI_OLED_4; - 27e2: 2108 movs r1, #8 - 27e4: e7e7 b.n 27b6 - 27e6: 2101 movs r1, #1 - 27e8: e7e5 b.n 27b6 - 27ea: bf00 nop - 27ec: 2000b0f8 .word 0x2000b0f8 - -000027f0 : + 27ea: 2108 movs r1, #8 + 27ec: e7e7 b.n 27be + 27ee: 2101 movs r1, #1 + 27f0: e7e5 b.n 27be + 27f2: bf00 nop + 27f4: 2000b118 .word 0x2000b118 + +000027f8 : void initOled(){ - 27f0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 27f4: b08d sub sp, #52 ; 0x34 - 27f6: 4603 mov r3, r0 + 27f8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 27fc: b08d sub sp, #52 ; 0x34 + 27fe: 4603 mov r3, r0 Wire.begin(); - 27f8: 485d ldr r0, [pc, #372] ; (2970 ) - 27fa: 2500 movs r5, #0 + 2800: 485d ldr r0, [pc, #372] ; (2978 ) + 2802: 2500 movs r5, #0 void initOled(){ - 27fc: af04 add r7, sp, #16 - 27fe: 469b mov fp, r3 + 2804: af04 add r7, sp, #16 + 2806: 469b mov fp, r3 Wire.begin(); - 2800: f031 fb36 bl 33e70 <___ZN7TwoWire5beginEv_veneer> + 2808: f031 fbb2 bl 33f70 <___ZN7TwoWire5beginEv_veneer> for(uint8_t i = 0 ; i < BMC_MAX_OLED ; i++){ - 2804: e005 b.n 2812 - 2806: 3501 adds r5, #1 - 2808: f10b 0b38 add.w fp, fp, #56 ; 0x38 - 280c: 2d06 cmp r5, #6 - 280e: f000 80aa beq.w 2966 + 280c: e005 b.n 281a + 280e: 3501 adds r5, #1 + 2810: f10b 0b38 add.w fp, fp, #56 ; 0x38 + 2814: 2d06 cmp r5, #6 + 2816: f000 80aa beq.w 296e __oledMuxSelect(i); - 2812: f50b 7404 add.w r4, fp, #528 ; 0x210 - 2816: b2e8 uxtb r0, r5 - 2818: f7ff ffc2 bl 27a0 + 281a: f50b 7404 add.w r4, fp, #528 ; 0x210 + 281e: b2e8 uxtb r0, r5 + 2820: f7ff ffc2 bl 27a8 } bool begin(uint8_t n, uint8_t i2caddr, uint8_t rotation, uint8_t switchvcc=BMC_SSD1306_SWITCHCAPVCC){ // switchvcc = if(!display.begin(switchvcc, i2caddr)){ - 281c: 223c movs r2, #60 ; 0x3c - 281e: 2102 movs r1, #2 - 2820: 4620 mov r0, r4 - 2822: f016 f961 bl 18ae8 - 2826: 2800 cmp r0, #0 - 2828: d0ed beq.n 2806 + 2824: 223c movs r2, #60 ; 0x3c + 2826: 2102 movs r1, #2 + 2828: 4620 mov r0, r4 + 282a: f016 f9cf bl 18bcc + 282e: 2800 cmp r0, #0 + 2830: d0ed beq.n 280e @brief Set whether text that is too long for the screen width should automatically wrap around to the next line (else clip right). @param w true for wrapping, false for clipping */ /**********************************************************************/ void setTextWrap(bool w) { wrap = w; } - 282a: 2600 movs r6, #0 + 2832: 2600 movs r6, #0 void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - 282c: f04f 0801 mov.w r8, #1 + 2834: f04f 0801 mov.w r8, #1 return false; } display.setRotation(rotation); - 2830: 4620 mov r0, r4 + 2838: 4620 mov r0, r4 } - 2832: 46ea mov sl, sp - 2834: 4631 mov r1, r6 + 283a: 46ea mov sl, sp + 283c: 4631 mov r1, r6 sprintf(str, "%d", n); - 2836: 4445 add r5, r8 - 2838: f022 ffec bl 25814 + 283e: 4445 add r5, r8 + 2840: f023 f85e bl 25900 display.setTextWrap(false); #if BMC_OLED_HEIGHT == 32 display.dim(true); - 283c: 4641 mov r1, r8 - 283e: 4620 mov r0, r4 + 2844: 4641 mov r1, r8 + 2846: 4620 mov r0, r4 void setTextWrap(bool w) { wrap = w; } - 2840: f88b 622b strb.w r6, [fp, #555] ; 0x22b - 2844: f016 f876 bl 18934 + 2848: f88b 622b strb.w r6, [fp, #555] ; 0x22b + 284c: f016 f8e4 bl 18a18 #endif display.setTextSize(1); - 2848: 4641 mov r1, r8 - 284a: 4620 mov r0, r4 + 2850: 4641 mov r1, r8 + 2852: 4620 mov r0, r4 return getCenteredXY(buff,t_x,t_y,t_w,t_h,t_padding); - 284c: f04f 0902 mov.w r9, #2 - 2850: f023 ff58 bl 26704 + 2854: f04f 0902 mov.w r9, #2 + 2858: f023 ffca bl 267f0 display.setTextColor(BMC_OLED_WHITE); display.setFont(BMC_FONT_LG); - 2854: 4947 ldr r1, [pc, #284] ; (2974 ) - 2856: 4620 mov r0, r4 + 285c: 4947 ldr r1, [pc, #284] ; (297c ) + 285e: 4620 mov r0, r4 void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - 2858: f8ab 8226 strh.w r8, [fp, #550] ; 0x226 - 285c: f8ab 8224 strh.w r8, [fp, #548] ; 0x224 + 2860: f8ab 8226 strh.w r8, [fp, #550] ; 0x226 + 2864: f8ab 8224 strh.w r8, [fp, #548] ; 0x224 for(uint8_t i = 0 ; i < BMC_MAX_OLED ; i++){ - 2860: f10b 0b38 add.w fp, fp, #56 ; 0x38 - 2864: f023 ff54 bl 26710 + 2868: f10b 0b38 add.w fp, fp, #56 ; 0x38 + 286c: f023 ffc6 bl 267fc display.fillRect(0, 0, wBound, hBound, BMC_OLED_WHITE); - 2868: f89b 31cc ldrb.w r3, [fp, #460] ; 0x1cc - 286c: f8cd 8004 str.w r8, [sp, #4] - 2870: 4632 mov r2, r6 - 2872: f89b 01cd ldrb.w r0, [fp, #461] ; 0x1cd - 2876: 4631 mov r1, r6 - 2878: 9000 str r0, [sp, #0] - 287a: 4620 mov r0, r4 - 287c: f023 f886 bl 2598c + 2870: f89b 31cc ldrb.w r3, [fp, #460] ; 0x1cc + 2874: f8cd 8004 str.w r8, [sp, #4] + 2878: 4632 mov r2, r6 + 287a: f89b 01cd ldrb.w r0, [fp, #461] ; 0x1cd + 287e: 4631 mov r1, r6 + 2880: 9000 str r0, [sp, #0] + 2882: 4620 mov r0, r4 + 2884: f023 f8f8 bl 25a78 display.printCenteredXY(n, 2, 2, wBound-4, hBound-4, 1, BMC_OLED_WHITE, BMC_OLED_BLACK); - 2880: f89b 11cc ldrb.w r1, [fp, #460] ; 0x1cc - 2884: f89b 31cd ldrb.w r3, [fp, #461] ; 0x1cd + 2888: f89b 11cc ldrb.w r1, [fp, #460] ; 0x1cc + 288c: f89b 31cd ldrb.w r3, [fp, #461] ; 0x1cd sprintf(str, "%d", n); - 2888: 462a mov r2, r5 - 288a: 3904 subs r1, #4 - 288c: f107 0010 add.w r0, r7, #16 - 2890: 3b04 subs r3, #4 + 2890: 462a mov r2, r5 + 2892: 3904 subs r1, #4 + 2894: f107 0010 add.w r0, r7, #16 + 2898: 3b04 subs r3, #4 char str[16] = ""; - 2892: 613e str r6, [r7, #16] - 2894: b289 uxth r1, r1 - 2896: 617e str r6, [r7, #20] - 2898: b29b uxth r3, r3 - 289a: 6079 str r1, [r7, #4] + 289a: 613e str r6, [r7, #16] + 289c: b289 uxth r1, r1 + 289e: 617e str r6, [r7, #20] + 28a0: b29b uxth r3, r3 + 28a2: 6079 str r1, [r7, #4] sprintf(str, "%d", n); - 289c: 4936 ldr r1, [pc, #216] ; (2978 ) - 289e: 603b str r3, [r7, #0] + 28a4: 4936 ldr r1, [pc, #216] ; (2980 ) + 28a6: 603b str r3, [r7, #0] char str[16] = ""; - 28a0: e9c7 6606 strd r6, r6, [r7, #24] + 28a8: e9c7 6606 strd r6, r6, [r7, #24] sprintf(str, "%d", n); - 28a4: f02b fc72 bl 2e18c + 28ac: f02b fce2 bl 2e274 char buff[strlen(str)+1]; - 28a8: f107 0010 add.w r0, r7, #16 - 28ac: f02c f948 bl 2eb40 - 28b0: f100 0308 add.w r3, r0, #8 + 28b0: f107 0010 add.w r0, r7, #16 + 28b4: f02c f9c4 bl 2ec40 + 28b8: f100 0308 add.w r3, r0, #8 strcpy(buff, str); - 28b4: f107 0210 add.w r2, r7, #16 + 28bc: f107 0210 add.w r2, r7, #16 char buff[strlen(str)+1]; - 28b8: f023 0307 bic.w r3, r3, #7 + 28c0: f023 0307 bic.w r3, r3, #7 strcpy(buff, str); - 28bc: 4611 mov r1, r2 - 28be: eb00 0208 add.w r2, r0, r8 + 28c4: 4611 mov r1, r2 + 28c6: eb00 0208 add.w r2, r0, r8 char buff[strlen(str)+1]; - 28c2: ebad 0d03 sub.w sp, sp, r3 - 28c6: ab04 add r3, sp, #16 + 28ca: ebad 0d03 sub.w sp, sp, r3 + 28ce: ab04 add r3, sp, #16 strcpy(buff, str); - 28c8: 4618 mov r0, r3 - 28ca: f027 ff1d bl 2a708 + 28d0: 4618 mov r0, r3 + 28d2: f027 ff8d bl 2a7f0 return getCenteredXY(buff,t_x,t_y,t_w,t_h,t_padding); - 28ce: f8cd 800c str.w r8, [sp, #12] - 28d2: 683b ldr r3, [r7, #0] - 28d4: 4602 mov r2, r0 - 28d6: f107 0008 add.w r0, r7, #8 - 28da: 9302 str r3, [sp, #8] - 28dc: 464b mov r3, r9 - 28de: 6879 ldr r1, [r7, #4] - 28e0: e9cd 9100 strd r9, r1, [sp] - 28e4: 4621 mov r1, r4 - 28e6: f7fd fc3f bl 168 + 28d6: f8cd 800c str.w r8, [sp, #12] + 28da: 683b ldr r3, [r7, #0] + 28dc: 4602 mov r2, r0 + 28de: f107 0008 add.w r0, r7, #8 + 28e2: 9302 str r3, [sp, #8] + 28e4: 464b mov r3, r9 + 28e6: 6879 ldr r1, [r7, #4] + 28e8: e9cd 9100 strd r9, r1, [sp] + 28ec: 4621 mov r1, r4 + 28ee: f7fd fc3b bl 168 fillRect(t_x, t_y, t_w, t_h, t_background); - 28ea: f9b7 2000 ldrsh.w r2, [r7] - 28ee: 46d5 mov sp, sl - 28f0: f8db 11d8 ldr.w r1, [fp, #472] ; 0x1d8 - 28f4: f9b7 3004 ldrsh.w r3, [r7, #4] - 28f8: 4620 mov r0, r4 - 28fa: e9cd 2600 strd r2, r6, [sp] - 28fe: 464a mov r2, r9 - 2900: f8d1 a040 ldr.w sl, [r1, #64] ; 0x40 - 2904: 4649 mov r1, r9 - 2906: 47d0 blx sl + 28f2: f9b7 2000 ldrsh.w r2, [r7] + 28f6: 46d5 mov sp, sl + 28f8: f8db 11d8 ldr.w r1, [fp, #472] ; 0x1d8 + 28fc: f9b7 3004 ldrsh.w r3, [r7, #4] + 2900: 4620 mov r0, r4 + 2902: e9cd 2600 strd r2, r6, [sp] + 2906: 464a mov r2, r9 + 2908: f8d1 a040 ldr.w sl, [r1, #64] ; 0x40 + 290c: 4649 mov r1, r9 + 290e: 47d0 blx sl setCursor(t.x, t.y); - 2908: f9b7 200a ldrsh.w r2, [r7, #10] + 2910: f9b7 200a ldrsh.w r2, [r7, #10] cursor_x = x; - 290c: 893b ldrh r3, [r7, #8] + 2914: 893b ldrh r3, [r7, #8] return write((const uint8_t *)str, strlen(str)); } - 290e: f107 0010 add.w r0, r7, #16 + 2916: f107 0010 add.w r0, r7, #16 cursor_y = y; - 2912: f8ab 21ea strh.w r2, [fp, #490] ; 0x1ea + 291a: f8ab 21ea strh.w r2, [fp, #490] ; 0x1ea cursor_x = x; - 2916: f8ab 31e8 strh.w r3, [fp, #488] ; 0x1e8 + 291e: f8ab 31e8 strh.w r3, [fp, #488] ; 0x1e8 void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - 291a: f8ab 81ee strh.w r8, [fp, #494] ; 0x1ee - 291e: f8ab 81ec strh.w r8, [fp, #492] ; 0x1ec + 2922: f8ab 81ee strh.w r8, [fp, #494] ; 0x1ee + 2926: f8ab 81ec strh.w r8, [fp, #492] ; 0x1ec void setTextWrap(bool w) { wrap = w; } - 2922: f88b 61f3 strb.w r6, [fp, #499] ; 0x1f3 - 2926: f02c f90b bl 2eb40 - 292a: f8db 31d8 ldr.w r3, [fp, #472] ; 0x1d8 - 292e: 4602 mov r2, r0 - 2930: f107 0110 add.w r1, r7, #16 - 2934: 685b ldr r3, [r3, #4] - 2936: 4620 mov r0, r4 - 2938: 4798 blx r3 + 292a: f88b 61f3 strb.w r6, [fp, #499] ; 0x1f3 + 292e: f02c f987 bl 2ec40 + 2932: f8db 31d8 ldr.w r3, [fp, #472] ; 0x1d8 + 2936: 4602 mov r2, r0 + 2938: f107 0110 add.w r1, r7, #16 + 293c: 685b ldr r3, [r3, #4] + 293e: 4620 mov r0, r4 + 2940: 4798 blx r3 display.display(); - 293a: 4620 mov r0, r4 - 293c: f016 f836 bl 189ac + 2942: 4620 mov r0, r4 + 2944: f016 f8a4 bl 18a90 display.setFont(BMC_FONT_SM); - 2940: 490e ldr r1, [pc, #56] ; (297c ) - 2942: 4620 mov r0, r4 - 2944: f023 fee4 bl 26710 + 2948: 490e ldr r1, [pc, #56] ; (2984 ) + 294a: 4620 mov r0, r4 + 294c: f023 ff56 bl 267fc display.fillRect(0, 0, wBound, hBound, BMC_OLED_BLACK); - 2948: f89b 31cc ldrb.w r3, [fp, #460] ; 0x1cc - 294c: 9601 str r6, [sp, #4] - 294e: 4632 mov r2, r6 - 2950: f89b c1cd ldrb.w ip, [fp, #461] ; 0x1cd - 2954: 4631 mov r1, r6 - 2956: 4620 mov r0, r4 - 2958: f8cd c000 str.w ip, [sp] - 295c: f023 f816 bl 2598c - 2960: 2d06 cmp r5, #6 - 2962: f47f af56 bne.w 2812 - } - 2966: 3724 adds r7, #36 ; 0x24 - 2968: 46bd mov sp, r7 - 296a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 296e: bf00 nop - 2970: 2000b0f8 .word 0x2000b0f8 - 2974: 60001c7c .word 0x60001c7c - 2978: 200015dc .word 0x200015dc - 297c: 60001c9c .word 0x60001c9c - -00002980 : + 2950: f89b 31cc ldrb.w r3, [fp, #460] ; 0x1cc + 2954: 9601 str r6, [sp, #4] + 2956: 4632 mov r2, r6 + 2958: f89b c1cd ldrb.w ip, [fp, #461] ; 0x1cd + 295c: 4631 mov r1, r6 + 295e: 4620 mov r0, r4 + 2960: f8cd c000 str.w ip, [sp] + 2964: f023 f888 bl 25a78 + 2968: 2d06 cmp r5, #6 + 296a: f47f af56 bne.w 281a + } + 296e: 3724 adds r7, #36 ; 0x24 + 2970: 46bd mov sp, r7 + 2972: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2976: bf00 nop + 2978: 2000b118 .word 0x2000b118 + 297c: 60001c7c .word 0x60001c7c + 2980: 200015dc .word 0x200015dc + 2984: 60001c9c .word 0x60001c9c + +00002988 : void BMC::begin(){ - 2980: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 2988: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} uint32_t millis_begin = systick_millis_count; - 2984: 4dd3 ldr r5, [pc, #844] ; (2cd4 ) - 2986: 4606 mov r6, r0 - 2988: 4cd3 ldr r4, [pc, #844] ; (2cd8 ) + 298c: 4dd3 ldr r5, [pc, #844] ; (2cdc ) + 298e: 4606 mov r6, r0 + 2990: 4cd3 ldr r4, [pc, #844] ; (2ce0 ) if (elapsed > 750) break; - 298a: f240 29ee movw r9, #750 ; 0x2ee + 2992: f240 29ee movw r9, #750 ; 0x2ee uint8_t stopbits(void) { return 1; } uint8_t paritytype(void) { return 0; } uint8_t numbits(void) { return 8; } uint8_t dtr(void) { return 1; } uint8_t rts(void) { return 1; } operator bool() { yield(); return usb_configuration && usb_seremu_online; } - 298e: f8df 839c ldr.w r8, [pc, #924] ; 2d2c + 2996: f8df 839c ldr.w r8, [pc, #924] ; 2d34 uint32_t millis_begin = systick_millis_count; - 2992: 682f ldr r7, [r5, #0] + 299a: 682f ldr r7, [r5, #0] operator bool() { yield(); return usb_configuration && usb_seremu_online; } - 2994: f029 fe12 bl 2c5bc - 2998: 7823 ldrb r3, [r4, #0] - 299a: 2b00 cmp r3, #0 - 299c: f000 823d beq.w 2e1a - 29a0: f898 3000 ldrb.w r3, [r8] - 29a4: 2b00 cmp r3, #0 - 29a6: f000 8238 beq.w 2e1a + 299c: f029 fe82 bl 2c6a4 + 29a0: 7823 ldrb r3, [r4, #0] + 29a2: 2b00 cmp r3, #0 + 29a4: f000 823d beq.w 2e22 + 29a8: f898 3000 ldrb.w r3, [r8] + 29ac: 2b00 cmp r3, #0 + 29ae: f000 8238 beq.w 2e22 virtual size_t write(const uint8_t *buffer, size_t size) { return usb_seremu_write(buffer, size); } - 29aa: 210a movs r1, #10 - 29ac: 48cb ldr r0, [pc, #812] ; (2cdc ) - 29ae: f029 fdcb bl 2c548 + 29b2: 210a movs r1, #10 + 29b4: 48cb ldr r0, [pc, #812] ; (2ce4 ) + 29b6: f029 fe3b bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 29b2: 48cb ldr r0, [pc, #812] ; (2ce0 ) - 29b4: f027 fa5e bl 29e74 - 29b8: 2113 movs r1, #19 - 29ba: 48ca ldr r0, [pc, #808] ; (2ce4 ) + 29ba: 48cb ldr r0, [pc, #812] ; (2ce8 ) + 29bc: f027 fad0 bl 29f60 + 29c0: 2113 movs r1, #19 + 29c2: 48ca ldr r0, [pc, #808] ; (2cec ) display.begin(); - 29bc: f643 3738 movw r7, #15160 ; 0x3b38 - 29c0: f029 fdc2 bl 2c548 - 29c4: 48c6 ldr r0, [pc, #792] ; (2ce0 ) - 29c6: f027 fa55 bl 29e74 - 29ca: f643 3375 movw r3, #15221 ; 0x3b75 - 29ce: f643 41a7 movw r1, #15527 ; 0x3ca7 - 29d2: 4437 add r7, r6 + 29c4: f643 3758 movw r7, #15192 ; 0x3b58 + 29c8: f029 fe32 bl 2c630 + 29cc: 48c6 ldr r0, [pc, #792] ; (2ce8 ) + 29ce: f027 fac7 bl 29f60 + 29d2: f643 3395 movw r3, #15253 ; 0x3b95 + 29d6: f643 41c7 movw r1, #15559 ; 0x3cc7 + 29da: 4437 add r7, r6 } void update(){ } void reassign(){ for(uint8_t i = 0 ; i < 9 ; i++){ - 29d4: 4433 add r3, r6 + 29dc: 4433 add r3, r6 index = -1; - 29d6: 25ff movs r5, #255 ; 0xff - 29d8: 4431 add r1, r6 + 29de: 25ff movs r5, #255 ; 0xff + 29e0: 4431 add r1, r6 type = 0; - 29da: 2200 movs r2, #0 + 29e2: 2200 movs r2, #0 vuBits = 0; - 29dc: f04f 0400 mov.w r4, #0 + 29e4: f04f 0400 mov.w r4, #0 index = -1; - 29e0: f803 5c01 strb.w r5, [r3, #-1] + 29e8: f803 5c01 strb.w r5, [r3, #-1] type = 0; - 29e4: 77da strb r2, [r3, #31] - 29e6: 3322 adds r3, #34 ; 0x22 + 29ec: 77da strb r2, [r3, #31] + 29ee: 3322 adds r3, #34 ; 0x22 strcpy(name, ""); - 29e8: f803 2c22 strb.w r2, [r3, #-34] + 29f0: f803 2c22 strb.w r2, [r3, #-34] strcpy(value, ""); - 29ec: f803 2c18 strb.w r2, [r3, #-24] + 29f4: f803 2c18 strb.w r2, [r3, #-24] stateBits = 0; - 29f0: f803 2c0b strb.w r2, [r3, #-11] + 29f8: f803 2c0b strb.w r2, [r3, #-11] vuValue = 0; - 29f4: f803 2c0a strb.w r2, [r3, #-10] + 29fc: f803 2c0a strb.w r2, [r3, #-10] vuBits = 0; - 29f8: f823 2c09 strh.w r2, [r3, #-9] + 2a00: f823 2c09 strh.w r2, [r3, #-9] vPotLevel = 0; - 29fc: f803 4c07 strb.w r4, [r3, #-7] + 2a04: f803 4c07 strb.w r4, [r3, #-7] vPotBits = 0; - 2a00: f823 2c05 strh.w r2, [r3, #-5] - 2a04: 428b cmp r3, r1 - 2a06: d1e9 bne.n 29dc - 2a08: 211d movs r1, #29 - 2a0a: 48b7 ldr r0, [pc, #732] ; (2ce8 ) - 2a0c: f029 fd9c bl 2c548 - 2a10: 48b3 ldr r0, [pc, #716] ; (2ce0 ) - 2a12: f027 fa2f bl 29e74 + 2a08: f823 2c05 strh.w r2, [r3, #-5] + 2a0c: 428b cmp r3, r1 + 2a0e: d1e9 bne.n 29e4 + 2a10: 211d movs r1, #29 + 2a12: 48b7 ldr r0, [pc, #732] ; (2cf0 ) + 2a14: f029 fe0c bl 2c630 + 2a18: 48b3 ldr r0, [pc, #716] ; (2ce8 ) + 2a1a: f027 faa1 bl 29f60 index = -1; - 2a16: f506 5340 add.w r3, r6, #12288 ; 0x3000 + 2a1e: f506 5340 add.w r3, r6, #12288 ; 0x3000 statusLooperData = 0xFF; - 2a1a: f64f 72ff movw r2, #65535 ; 0xffff + 2a22: f64f 72ff movw r2, #65535 ; 0xffff initOled(); - 2a1e: 4638 mov r0, r7 - 2a20: f883 5cbc strb.w r5, [r3, #3260] ; 0xcbc - 2a24: f8a3 2cf2 strh.w r2, [r3, #3314] ; 0xcf2 + 2a26: 4638 mov r0, r7 + 2a28: f883 5cdc strb.w r5, [r3, #3292] ; 0xcdc + 2a2c: f8a3 2d12 strh.w r2, [r3, #3346] ; 0xd12 preset = 0xFFFF; - 2a28: f8a3 2cf6 strh.w r2, [r3, #3318] ; 0xcf6 + 2a30: f8a3 2d16 strh.w r2, [r3, #3350] ; 0xd16 scene = 0xFF; - 2a2c: f883 2cf8 strb.w r2, [r3, #3320] ; 0xcf8 + 2a34: f883 2d18 strb.w r2, [r3, #3352] ; 0xd18 type = 0; - 2a30: f883 4cbd strb.w r4, [r3, #3261] ; 0xcbd + 2a38: f883 4cdd strb.w r4, [r3, #3293] ; 0xcdd active = false; - 2a34: f883 4cbe strb.w r4, [r3, #3262] ; 0xcbe + 2a3c: f883 4cde strb.w r4, [r3, #3294] ; 0xcde index = -1; - 2a38: f883 5cbf strb.w r5, [r3, #3263] ; 0xcbf + 2a40: f883 5cdf strb.w r5, [r3, #3295] ; 0xcdf type = 0; - 2a3c: f883 4cc0 strb.w r4, [r3, #3264] ; 0xcc0 + 2a44: f883 4ce0 strb.w r4, [r3, #3296] ; 0xce0 active = false; - 2a40: f883 4cc1 strb.w r4, [r3, #3265] ; 0xcc1 + 2a48: f883 4ce1 strb.w r4, [r3, #3297] ; 0xce1 index = -1; - 2a44: f883 5cc2 strb.w r5, [r3, #3266] ; 0xcc2 + 2a4c: f883 5ce2 strb.w r5, [r3, #3298] ; 0xce2 type = 0; - 2a48: f883 4cc3 strb.w r4, [r3, #3267] ; 0xcc3 + 2a50: f883 4ce3 strb.w r4, [r3, #3299] ; 0xce3 active = false; - 2a4c: f883 4cc4 strb.w r4, [r3, #3268] ; 0xcc4 + 2a54: f883 4ce4 strb.w r4, [r3, #3300] ; 0xce4 index = -1; - 2a50: f883 5cc5 strb.w r5, [r3, #3269] ; 0xcc5 + 2a58: f883 5ce5 strb.w r5, [r3, #3301] ; 0xce5 type = 0; - 2a54: f883 4cc6 strb.w r4, [r3, #3270] ; 0xcc6 + 2a5c: f883 4ce6 strb.w r4, [r3, #3302] ; 0xce6 active = false; - 2a58: f883 4cc7 strb.w r4, [r3, #3271] ; 0xcc7 + 2a60: f883 4ce7 strb.w r4, [r3, #3303] ; 0xce7 looperData = 0xFF; - 2a5c: f883 5cf1 strb.w r5, [r3, #3313] ; 0xcf1 + 2a64: f883 5d11 strb.w r5, [r3, #3345] ; 0xd11 return bitRead(settings.flags, bit); - 2a60: f506 5580 add.w r5, r6, #4096 ; 0x1000 + 2a68: f506 5580 add.w r5, r6, #4096 ; 0x1000 connected = false; - 2a64: f883 4cf4 strb.w r4, [r3, #3316] ; 0xcf4 + 2a6c: f883 4d14 strb.w r4, [r3, #3348] ; 0xd14 strcpy(presetName, ""); - 2a68: f643 43a8 movw r3, #15528 ; 0x3ca8 - 2a6c: 4433 add r3, r6 - 2a6e: f883 4051 strb.w r4, [r3, #81] ; 0x51 + 2a70: f643 43c8 movw r3, #15560 ; 0x3cc8 + 2a74: 4433 add r3, r6 + 2a76: f883 4051 strb.w r4, [r3, #81] ; 0x51 strcpy(sceneName, ""); - 2a72: f883 4072 strb.w r4, [r3, #114] ; 0x72 + 2a7a: f883 4072 strb.w r4, [r3, #114] ; 0x72 Port.begin(31250); - 2a76: f506 5400 add.w r4, r6, #8192 ; 0x2000 - 2a7a: f7ff feb9 bl 27f0 + 2a7e: f506 5400 add.w r4, r6, #8192 ; 0x2000 + 2a82: f7ff feb9 bl 27f8 delay(10); - 2a7e: 200a movs r0, #10 - 2a80: f027 fd24 bl 2a4cc + 2a86: 200a movs r0, #10 + 2a88: f027 fd94 bl 2a5b4 setupDebug(); - 2a84: 4630 mov r0, r6 - 2a86: f001 f929 bl 3cdc - 2a8a: 2100 movs r1, #0 - 2a8c: 4897 ldr r0, [pc, #604] ; (2cec ) - 2a8e: f029 fd5b bl 2c548 - 2a92: 4893 ldr r0, [pc, #588] ; (2ce0 ) - 2a94: f027 f9ee bl 29e74 - 2a98: 210e movs r1, #14 - 2a9a: 4895 ldr r0, [pc, #596] ; (2cf0 ) - 2a9c: f029 fd54 bl 2c548 - 2aa0: 488f ldr r0, [pc, #572] ; (2ce0 ) - 2aa2: f027 f9e7 bl 29e74 - 2aa6: 211c movs r1, #28 - 2aa8: 4892 ldr r0, [pc, #584] ; (2cf4 ) - 2aaa: f029 fd4d bl 2c548 - 2aae: 488c ldr r0, [pc, #560] ; (2ce0 ) - 2ab0: f027 f9e0 bl 29e74 - 2ab4: 2200 movs r2, #0 - 2ab6: f8d4 02f8 ldr.w r0, [r4, #760] ; 0x2f8 - 2aba: f647 2112 movw r1, #31250 ; 0x7a12 - 2abe: f026 fe5d bl 2977c - 2ac2: 2113 movs r1, #19 - 2ac4: 488c ldr r0, [pc, #560] ; (2cf8 ) - 2ac6: f029 fd3f bl 2c548 - 2aca: 4885 ldr r0, [pc, #532] ; (2ce0 ) - 2acc: f027 f9d2 bl 29e74 - 2ad0: 2200 movs r2, #0 - 2ad2: f8d4 0408 ldr.w r0, [r4, #1032] ; 0x408 - 2ad6: f647 2112 movw r1, #31250 ; 0x7a12 - 2ada: f026 fe4f bl 2977c - 2ade: 2113 movs r1, #19 - 2ae0: 4886 ldr r0, [pc, #536] ; (2cfc ) - strcpy(lcd[0], ""); - 2ae2: 2400 movs r4, #0 - 2ae4: f029 fd30 bl 2c548 - 2ae8: 487d ldr r0, [pc, #500] ; (2ce0 ) - 2aea: f027 f9c3 bl 29e74 - 2aee: 211a movs r1, #26 - 2af0: 4883 ldr r0, [pc, #524] ; (2d00 ) - 2af2: f029 fd29 bl 2c548 - 2af6: 487a ldr r0, [pc, #488] ; (2ce0 ) - 2af8: f027 f9bc bl 29e74 + 2a8c: 4630 mov r0, r6 + 2a8e: f001 f925 bl 3cdc + 2a92: 2100 movs r1, #0 + 2a94: 4897 ldr r0, [pc, #604] ; (2cf4 ) + 2a96: f029 fdcb bl 2c630 + 2a9a: 4893 ldr r0, [pc, #588] ; (2ce8 ) + 2a9c: f027 fa60 bl 29f60 + 2aa0: 210e movs r1, #14 + 2aa2: 4895 ldr r0, [pc, #596] ; (2cf8 ) + 2aa4: f029 fdc4 bl 2c630 + 2aa8: 488f ldr r0, [pc, #572] ; (2ce8 ) + 2aaa: f027 fa59 bl 29f60 + 2aae: 211c movs r1, #28 + 2ab0: 4892 ldr r0, [pc, #584] ; (2cfc ) + 2ab2: f029 fdbd bl 2c630 + 2ab6: 488c ldr r0, [pc, #560] ; (2ce8 ) + 2ab8: f027 fa52 bl 29f60 + 2abc: 2200 movs r2, #0 + 2abe: f8d4 02f8 ldr.w r0, [r4, #760] ; 0x2f8 + 2ac2: f647 2112 movw r1, #31250 ; 0x7a12 + 2ac6: f026 fecf bl 29868 + 2aca: 2113 movs r1, #19 + 2acc: 488c ldr r0, [pc, #560] ; (2d00 ) + 2ace: f029 fdaf bl 2c630 + 2ad2: 4885 ldr r0, [pc, #532] ; (2ce8 ) + 2ad4: f027 fa44 bl 29f60 + 2ad8: 211a movs r1, #26 + 2ada: 488a ldr r0, [pc, #552] ; (2d04 ) + 2adc: f029 fda8 bl 2c630 + 2ae0: 4881 ldr r0, [pc, #516] ; (2ce8 ) + 2ae2: f027 fa3d bl 29f60 } void begin(){ BMC_PRINTLN(" BMCMidiPortHost::begin"); UsbHost.begin(); - 2afc: f024 f882 bl 26c04 + 2ae6: f024 f903 bl 26cf0 delay(200); - 2b00: 20c8 movs r0, #200 ; 0xc8 - 2b02: f027 fce3 bl 2a4cc - 2b06: 2100 movs r1, #0 - 2b08: 4878 ldr r0, [pc, #480] ; (2cec ) - 2b0a: f029 fd1d bl 2c548 - 2b0e: 4874 ldr r0, [pc, #464] ; (2ce0 ) - 2b10: f027 f9b0 bl 29e74 - 2b14: 2117 movs r1, #23 - 2b16: 487b ldr r0, [pc, #492] ; (2d04 ) - 2b18: f029 fd16 bl 2c548 - 2b1c: 4870 ldr r0, [pc, #448] ; (2ce0 ) - 2b1e: f027 f9a9 bl 29e74 - 2b22: 211d movs r1, #29 - 2b24: 4878 ldr r0, [pc, #480] ; (2d08 ) - 2b26: f029 fd0f bl 2c548 - 2b2a: 486d ldr r0, [pc, #436] ; (2ce0 ) - 2b2c: f027 f9a2 bl 29e74 + 2aea: 20c8 movs r0, #200 ; 0xc8 + 2aec: f027 fd62 bl 2a5b4 + 2af0: 2119 movs r1, #25 + 2af2: 4885 ldr r0, [pc, #532] ; (2d08 ) + 2af4: f029 fd9c bl 2c630 + 2af8: 487b ldr r0, [pc, #492] ; (2ce8 ) + 2afa: f027 fa31 bl 29f60 + 2afe: 2200 movs r2, #0 + 2b00: f8d4 0b48 ldr.w r0, [r4, #2888] ; 0xb48 + 2b04: f647 2112 movw r1, #31250 ; 0x7a12 + 2b08: f026 feae bl 29868 + 2b0c: 2100 movs r1, #0 + 2b0e: 4879 ldr r0, [pc, #484] ; (2cf4 ) + strcpy(lcd[0], ""); + 2b10: 2400 movs r4, #0 + 2b12: f029 fd8d bl 2c630 + 2b16: 4874 ldr r0, [pc, #464] ; (2ce8 ) + 2b18: f027 fa22 bl 29f60 + 2b1c: 2117 movs r1, #23 + 2b1e: 487b ldr r0, [pc, #492] ; (2d0c ) + 2b20: f029 fd86 bl 2c630 + 2b24: 4870 ldr r0, [pc, #448] ; (2ce8 ) + 2b26: f027 fa1b bl 29f60 + 2b2a: 211d movs r1, #29 + 2b2c: 4878 ldr r0, [pc, #480] ; (2d10 ) + 2b2e: f029 fd7f bl 2c630 + 2b32: 486d ldr r0, [pc, #436] ; (2ce8 ) + 2b34: f027 fa14 bl 29f60 editor.begin(); - 2b30: f642 409c movw r0, #11420 ; 0x2c9c - 2b34: 4430 add r0, r6 - 2b36: f017 fc23 bl 1a380 + 2b38: f642 40bc movw r0, #11452 ; 0x2cbc + 2b3c: 4430 add r0, r6 + 2b3e: f017 fc8f bl 1a460 setupHardware(); - 2b3a: 4630 mov r0, r6 - 2b3c: f010 fc1e bl 1337c - 2b40: f8d5 37fc ldr.w r3, [r5, #2044] ; 0x7fc - 2b44: 4869 ldr r0, [pc, #420] ; (2cec ) - 2b46: 681a ldr r2, [r3, #0] + 2b42: 4630 mov r0, r6 + 2b44: f010 fc7e bl 13444 + 2b48: f8d5 37fc ldr.w r3, [r5, #2044] ; 0x7fc + 2b4c: 4869 ldr r0, [pc, #420] ; (2cf4 ) + 2b4e: 681a ldr r2, [r3, #0] bitWrite(flags, bit, value); - 2b48: f895 3acc ldrb.w r3, [r5, #2764] ; 0xacc - 2b4c: 0651 lsls r1, r2, #25 - 2b4e: f04f 0100 mov.w r1, #0 - 2b52: bf4c ite mi - 2b54: f043 0302 orrmi.w r3, r3, #2 - 2b58: f003 03fd andpl.w r3, r3, #253 ; 0xfd - 2b5c: 0612 lsls r2, r2, #24 - 2b5e: bf4c ite mi - 2b60: f043 0304 orrmi.w r3, r3, #4 - 2b64: f003 03fb andpl.w r3, r3, #251 ; 0xfb - 2b68: f885 3acc strb.w r3, [r5, #2764] ; 0xacc - 2b6c: f029 fcec bl 2c548 - 2b70: 485b ldr r0, [pc, #364] ; (2ce0 ) - 2b72: f027 f97f bl 29e74 - 2b76: 212e movs r1, #46 ; 0x2e - 2b78: 4864 ldr r0, [pc, #400] ; (2d0c ) - 2b7a: f029 fce5 bl 2c548 - 2b7e: 4858 ldr r0, [pc, #352] ; (2ce0 ) - 2b80: f027 f978 bl 29e74 - 2b84: 212e movs r1, #46 ; 0x2e - 2b86: 4861 ldr r0, [pc, #388] ; (2d0c ) - 2b88: f029 fcde bl 2c548 - 2b8c: 4854 ldr r0, [pc, #336] ; (2ce0 ) - 2b8e: f027 f971 bl 29e74 - 2b92: 2101 movs r1, #1 - 2b94: 485e ldr r0, [pc, #376] ; (2d10 ) - 2b96: f029 fcd7 bl 2c548 - 2b9a: 211b movs r1, #27 - 2b9c: 485d ldr r0, [pc, #372] ; (2d14 ) - 2b9e: f029 fcd3 bl 2c548 - 2ba2: 484f ldr r0, [pc, #316] ; (2ce0 ) - 2ba4: f027 f966 bl 29e74 - 2ba8: 212e movs r1, #46 ; 0x2e - 2baa: 4858 ldr r0, [pc, #352] ; (2d0c ) - 2bac: f029 fccc bl 2c548 - 2bb0: 484b ldr r0, [pc, #300] ; (2ce0 ) - 2bb2: f027 f95f bl 29e74 - 2bb6: 212e movs r1, #46 ; 0x2e - 2bb8: 4854 ldr r0, [pc, #336] ; (2d0c ) - 2bba: f029 fcc5 bl 2c548 - 2bbe: 4848 ldr r0, [pc, #288] ; (2ce0 ) - 2bc0: f027 f958 bl 29e74 - 2bc4: 4621 mov r1, r4 - 2bc6: 4849 ldr r0, [pc, #292] ; (2cec ) - 2bc8: f029 fcbe bl 2c548 - 2bcc: 4844 ldr r0, [pc, #272] ; (2ce0 ) - 2bce: f027 f951 bl 29e74 + 2b50: f895 3acc ldrb.w r3, [r5, #2764] ; 0xacc + 2b54: 0651 lsls r1, r2, #25 + 2b56: f04f 0100 mov.w r1, #0 + 2b5a: bf4c ite mi + 2b5c: f043 0302 orrmi.w r3, r3, #2 + 2b60: f003 03fd andpl.w r3, r3, #253 ; 0xfd + 2b64: 0612 lsls r2, r2, #24 + 2b66: bf4c ite mi + 2b68: f043 0304 orrmi.w r3, r3, #4 + 2b6c: f003 03fb andpl.w r3, r3, #251 ; 0xfb + 2b70: f885 3acc strb.w r3, [r5, #2764] ; 0xacc + 2b74: f029 fd5c bl 2c630 + 2b78: 485b ldr r0, [pc, #364] ; (2ce8 ) + 2b7a: f027 f9f1 bl 29f60 + 2b7e: 212e movs r1, #46 ; 0x2e + 2b80: 4864 ldr r0, [pc, #400] ; (2d14 ) + 2b82: f029 fd55 bl 2c630 + 2b86: 4858 ldr r0, [pc, #352] ; (2ce8 ) + 2b88: f027 f9ea bl 29f60 + 2b8c: 212e movs r1, #46 ; 0x2e + 2b8e: 4861 ldr r0, [pc, #388] ; (2d14 ) + 2b90: f029 fd4e bl 2c630 + 2b94: 4854 ldr r0, [pc, #336] ; (2ce8 ) + 2b96: f027 f9e3 bl 29f60 + 2b9a: 2101 movs r1, #1 + 2b9c: 485e ldr r0, [pc, #376] ; (2d18 ) + 2b9e: f029 fd47 bl 2c630 + 2ba2: 211b movs r1, #27 + 2ba4: 485d ldr r0, [pc, #372] ; (2d1c ) + 2ba6: f029 fd43 bl 2c630 + 2baa: 484f ldr r0, [pc, #316] ; (2ce8 ) + 2bac: f027 f9d8 bl 29f60 + 2bb0: 212e movs r1, #46 ; 0x2e + 2bb2: 4858 ldr r0, [pc, #352] ; (2d14 ) + 2bb4: f029 fd3c bl 2c630 + 2bb8: 484b ldr r0, [pc, #300] ; (2ce8 ) + 2bba: f027 f9d1 bl 29f60 + 2bbe: 212e movs r1, #46 ; 0x2e + 2bc0: 4854 ldr r0, [pc, #336] ; (2d14 ) + 2bc2: f029 fd35 bl 2c630 + 2bc6: 4848 ldr r0, [pc, #288] ; (2ce8 ) + 2bc8: f027 f9ca bl 29f60 + 2bcc: 4621 mov r1, r4 + 2bce: 4849 ldr r0, [pc, #292] ; (2cf4 ) + 2bd0: f029 fd2e bl 2c630 + 2bd4: 4844 ldr r0, [pc, #272] ; (2ce8 ) + 2bd6: f027 f9c3 bl 29f60 delay(100); - 2bd2: 2064 movs r0, #100 ; 0x64 - 2bd4: f027 fc7a bl 2a4cc - 2bd8: 4621 mov r1, r4 - 2bda: 4844 ldr r0, [pc, #272] ; (2cec ) - 2bdc: f029 fcb4 bl 2c548 - 2be0: 483f ldr r0, [pc, #252] ; (2ce0 ) - 2be2: f027 f947 bl 29e74 - 2be6: 212e movs r1, #46 ; 0x2e - 2be8: 4848 ldr r0, [pc, #288] ; (2d0c ) - 2bea: f029 fcad bl 2c548 - 2bee: 483c ldr r0, [pc, #240] ; (2ce0 ) - 2bf0: f027 f940 bl 29e74 - 2bf4: 212e movs r1, #46 ; 0x2e - 2bf6: 4845 ldr r0, [pc, #276] ; (2d0c ) - 2bf8: f029 fca6 bl 2c548 - 2bfc: 4838 ldr r0, [pc, #224] ; (2ce0 ) - 2bfe: f027 f939 bl 29e74 - 2c02: 2101 movs r1, #1 - 2c04: 4842 ldr r0, [pc, #264] ; (2d10 ) - 2c06: f029 fc9f bl 2c548 - 2c0a: 210d movs r1, #13 - 2c0c: 4842 ldr r0, [pc, #264] ; (2d18 ) - 2c0e: f029 fc9b bl 2c548 - 2c12: 4833 ldr r0, [pc, #204] ; (2ce0 ) - 2c14: f027 f92e bl 29e74 - 2c18: 2101 movs r1, #1 - 2c1a: 483d ldr r0, [pc, #244] ; (2d10 ) - 2c1c: f029 fc94 bl 2c548 - 2c20: 2106 movs r1, #6 - 2c22: 483e ldr r0, [pc, #248] ; (2d1c ) - 2c24: f029 fc90 bl 2c548 - 2c28: 482d ldr r0, [pc, #180] ; (2ce0 ) - 2c2a: f027 f923 bl 29e74 - 2c2e: 2101 movs r1, #1 - 2c30: 4837 ldr r0, [pc, #220] ; (2d10 ) - 2c32: f029 fc89 bl 2c548 - 2c36: 2111 movs r1, #17 - 2c38: 4839 ldr r0, [pc, #228] ; (2d20 ) - 2c3a: f029 fc85 bl 2c548 - 2c3e: 4828 ldr r0, [pc, #160] ; (2ce0 ) - 2c40: f027 f918 bl 29e74 - 2c44: 2101 movs r1, #1 - 2c46: 4832 ldr r0, [pc, #200] ; (2d10 ) - 2c48: f029 fc7e bl 2c548 - 2c4c: 2108 movs r1, #8 - 2c4e: 4835 ldr r0, [pc, #212] ; (2d24 ) - 2c50: f029 fc7a bl 2c548 - 2c54: 4822 ldr r0, [pc, #136] ; (2ce0 ) - 2c56: f027 f90d bl 29e74 - 2c5a: 2101 movs r1, #1 - 2c5c: 482c ldr r0, [pc, #176] ; (2d10 ) - 2c5e: f029 fc73 bl 2c548 - 2c62: 210c movs r1, #12 - 2c64: 4830 ldr r0, [pc, #192] ; (2d28 ) - 2c66: f029 fc6f bl 2c548 - 2c6a: 481d ldr r0, [pc, #116] ; (2ce0 ) - 2c6c: f027 f902 bl 29e74 - 2c70: 212e movs r1, #46 ; 0x2e - 2c72: 4826 ldr r0, [pc, #152] ; (2d0c ) - 2c74: f029 fc68 bl 2c548 - 2c78: 4819 ldr r0, [pc, #100] ; (2ce0 ) - 2c7a: f027 f8fb bl 29e74 - 2c7e: 212e movs r1, #46 ; 0x2e - 2c80: 4822 ldr r0, [pc, #136] ; (2d0c ) - 2c82: f029 fc61 bl 2c548 - 2c86: 4816 ldr r0, [pc, #88] ; (2ce0 ) - 2c88: f027 f8f4 bl 29e74 - 2c8c: 4621 mov r1, r4 - 2c8e: 4817 ldr r0, [pc, #92] ; (2cec ) - 2c90: f029 fc5a bl 2c548 - 2c94: 4812 ldr r0, [pc, #72] ; (2ce0 ) - 2c96: f027 f8ed bl 29e74 - 2c9a: f243 2330 movw r3, #12848 ; 0x3230 - 2c9e: 4621 mov r1, r4 - 2ca0: 4812 ldr r0, [pc, #72] ; (2cec ) - 2ca2: 4433 add r3, r6 - 2ca4: f883 4058 strb.w r4, [r3, #88] ; 0x58 + 2bda: 2064 movs r0, #100 ; 0x64 + 2bdc: f027 fcea bl 2a5b4 + 2be0: 4621 mov r1, r4 + 2be2: 4844 ldr r0, [pc, #272] ; (2cf4 ) + 2be4: f029 fd24 bl 2c630 + 2be8: 483f ldr r0, [pc, #252] ; (2ce8 ) + 2bea: f027 f9b9 bl 29f60 + 2bee: 212e movs r1, #46 ; 0x2e + 2bf0: 4848 ldr r0, [pc, #288] ; (2d14 ) + 2bf2: f029 fd1d bl 2c630 + 2bf6: 483c ldr r0, [pc, #240] ; (2ce8 ) + 2bf8: f027 f9b2 bl 29f60 + 2bfc: 212e movs r1, #46 ; 0x2e + 2bfe: 4845 ldr r0, [pc, #276] ; (2d14 ) + 2c00: f029 fd16 bl 2c630 + 2c04: 4838 ldr r0, [pc, #224] ; (2ce8 ) + 2c06: f027 f9ab bl 29f60 + 2c0a: 2101 movs r1, #1 + 2c0c: 4842 ldr r0, [pc, #264] ; (2d18 ) + 2c0e: f029 fd0f bl 2c630 + 2c12: 210d movs r1, #13 + 2c14: 4842 ldr r0, [pc, #264] ; (2d20 ) + 2c16: f029 fd0b bl 2c630 + 2c1a: 4833 ldr r0, [pc, #204] ; (2ce8 ) + 2c1c: f027 f9a0 bl 29f60 + 2c20: 2101 movs r1, #1 + 2c22: 483d ldr r0, [pc, #244] ; (2d18 ) + 2c24: f029 fd04 bl 2c630 + 2c28: 2106 movs r1, #6 + 2c2a: 483e ldr r0, [pc, #248] ; (2d24 ) + 2c2c: f029 fd00 bl 2c630 + 2c30: 482d ldr r0, [pc, #180] ; (2ce8 ) + 2c32: f027 f995 bl 29f60 + 2c36: 2101 movs r1, #1 + 2c38: 4837 ldr r0, [pc, #220] ; (2d18 ) + 2c3a: f029 fcf9 bl 2c630 + 2c3e: 2111 movs r1, #17 + 2c40: 4839 ldr r0, [pc, #228] ; (2d28 ) + 2c42: f029 fcf5 bl 2c630 + 2c46: 4828 ldr r0, [pc, #160] ; (2ce8 ) + 2c48: f027 f98a bl 29f60 + 2c4c: 2101 movs r1, #1 + 2c4e: 4832 ldr r0, [pc, #200] ; (2d18 ) + 2c50: f029 fcee bl 2c630 + 2c54: 2108 movs r1, #8 + 2c56: 4835 ldr r0, [pc, #212] ; (2d2c ) + 2c58: f029 fcea bl 2c630 + 2c5c: 4822 ldr r0, [pc, #136] ; (2ce8 ) + 2c5e: f027 f97f bl 29f60 + 2c62: 2101 movs r1, #1 + 2c64: 482c ldr r0, [pc, #176] ; (2d18 ) + 2c66: f029 fce3 bl 2c630 + 2c6a: 210c movs r1, #12 + 2c6c: 4830 ldr r0, [pc, #192] ; (2d30 ) + 2c6e: f029 fcdf bl 2c630 + 2c72: 481d ldr r0, [pc, #116] ; (2ce8 ) + 2c74: f027 f974 bl 29f60 + 2c78: 212e movs r1, #46 ; 0x2e + 2c7a: 4826 ldr r0, [pc, #152] ; (2d14 ) + 2c7c: f029 fcd8 bl 2c630 + 2c80: 4819 ldr r0, [pc, #100] ; (2ce8 ) + 2c82: f027 f96d bl 29f60 + 2c86: 212e movs r1, #46 ; 0x2e + 2c88: 4822 ldr r0, [pc, #136] ; (2d14 ) + 2c8a: f029 fcd1 bl 2c630 + 2c8e: 4816 ldr r0, [pc, #88] ; (2ce8 ) + 2c90: f027 f966 bl 29f60 + 2c94: 4621 mov r1, r4 + 2c96: 4817 ldr r0, [pc, #92] ; (2cf4 ) + 2c98: f029 fcca bl 2c630 + 2c9c: 4812 ldr r0, [pc, #72] ; (2ce8 ) + 2c9e: f027 f95f bl 29f60 + 2ca2: f243 2350 movw r3, #12880 ; 0x3250 + 2ca6: 4621 mov r1, r4 + 2ca8: 4812 ldr r0, [pc, #72] ; (2cf4 ) + 2caa: 4433 add r3, r6 + 2cac: f883 4058 strb.w r4, [r3, #88] ; 0x58 strcpy(lcd[1], ""); - 2ca8: f883 4091 strb.w r4, [r3, #145] ; 0x91 - 2cac: f029 fc4c bl 2c548 - 2cb0: 480b ldr r0, [pc, #44] ; (2ce0 ) - 2cb2: f027 f8df bl 29e74 - 2cb6: 212e movs r1, #46 ; 0x2e - 2cb8: 4814 ldr r0, [pc, #80] ; (2d0c ) - 2cba: f029 fc45 bl 2c548 - 2cbe: 4808 ldr r0, [pc, #32] ; (2ce0 ) - 2cc0: f027 f8d8 bl 29e74 - 2cc4: 212e movs r1, #46 ; 0x2e - 2cc6: 4811 ldr r0, [pc, #68] ; (2d0c ) - 2cc8: f029 fc3e bl 2c548 - 2ccc: 4804 ldr r0, [pc, #16] ; (2ce0 ) - 2cce: f027 f8d1 bl 29e74 - 2cd2: e02d b.n 2d30 - 2cd4: 2000bae8 .word 0x2000bae8 - 2cd8: 2000bc8e .word 0x2000bc8e - 2cdc: 2000266c .word 0x2000266c - 2ce0: 20004ba8 .word 0x20004ba8 - 2ce4: 20002678 .word 0x20002678 - 2ce8: 2000268c .word 0x2000268c - 2cec: 20003c58 .word 0x20003c58 - 2cf0: 200026ac .word 0x200026ac - 2cf4: 200026bc .word 0x200026bc - 2cf8: 200026dc .word 0x200026dc - 2cfc: 200026f0 .word 0x200026f0 - 2d00: 20002704 .word 0x20002704 - 2d04: 20002720 .word 0x20002720 - 2d08: 20002738 .word 0x20002738 - 2d0c: 20002758 .word 0x20002758 - 2d10: 200023ec .word 0x200023ec - 2d14: 20002788 .word 0x20002788 - 2d18: 200027a4 .word 0x200027a4 - 2d1c: 200027b4 .word 0x200027b4 - 2d20: 200027bc .word 0x200027bc - 2d24: 200027d0 .word 0x200027d0 - 2d28: 200027dc .word 0x200027dc - 2d2c: 2000bc96 .word 0x2000bc96 - 2d30: 2101 movs r1, #1 - 2d32: 4841 ldr r0, [pc, #260] ; (2e38 ) - 2d34: f029 fc08 bl 2c548 - 2d38: 2139 movs r1, #57 ; 0x39 - 2d3a: 4840 ldr r0, [pc, #256] ; (2e3c ) - 2d3c: f029 fc04 bl 2c548 - 2d40: 483f ldr r0, [pc, #252] ; (2e40 ) - 2d42: f027 f897 bl 29e74 - 2d46: 2101 movs r1, #1 - 2d48: 483b ldr r0, [pc, #236] ; (2e38 ) - 2d4a: f029 fbfd bl 2c548 - 2d4e: 212b movs r1, #43 ; 0x2b - 2d50: 483c ldr r0, [pc, #240] ; (2e44 ) - 2d52: f029 fbf9 bl 2c548 - 2d56: 483a ldr r0, [pc, #232] ; (2e40 ) - 2d58: f027 f88c bl 29e74 - 2d5c: 2101 movs r1, #1 - 2d5e: 4836 ldr r0, [pc, #216] ; (2e38 ) - 2d60: f029 fbf2 bl 2c548 - 2d64: 2135 movs r1, #53 ; 0x35 - 2d66: 4838 ldr r0, [pc, #224] ; (2e48 ) - 2d68: f029 fbee bl 2c548 - 2d6c: 4834 ldr r0, [pc, #208] ; (2e40 ) - 2d6e: f027 f881 bl 29e74 - 2d72: 2101 movs r1, #1 - 2d74: 4830 ldr r0, [pc, #192] ; (2e38 ) - 2d76: f029 fbe7 bl 2c548 - 2d7a: 2122 movs r1, #34 ; 0x22 - 2d7c: 4833 ldr r0, [pc, #204] ; (2e4c ) - 2d7e: f029 fbe3 bl 2c548 - 2d82: 482f ldr r0, [pc, #188] ; (2e40 ) - 2d84: f027 f876 bl 29e74 - 2d88: 2101 movs r1, #1 - 2d8a: 482b ldr r0, [pc, #172] ; (2e38 ) - 2d8c: f029 fbdc bl 2c548 - 2d90: 2133 movs r1, #51 ; 0x33 - 2d92: 482f ldr r0, [pc, #188] ; (2e50 ) - 2d94: f029 fbd8 bl 2c548 - 2d98: 4829 ldr r0, [pc, #164] ; (2e40 ) - 2d9a: f027 f86b bl 29e74 - 2d9e: 2101 movs r1, #1 - 2da0: 4825 ldr r0, [pc, #148] ; (2e38 ) - 2da2: f029 fbd1 bl 2c548 - 2da6: 213a movs r1, #58 ; 0x3a - 2da8: 482a ldr r0, [pc, #168] ; (2e54 ) - 2daa: f029 fbcd bl 2c548 - 2dae: 4824 ldr r0, [pc, #144] ; (2e40 ) - 2db0: f027 f860 bl 29e74 - 2db4: 2101 movs r1, #1 - 2db6: 4820 ldr r0, [pc, #128] ; (2e38 ) - 2db8: f029 fbc6 bl 2c548 - 2dbc: 4621 mov r1, r4 - 2dbe: 4826 ldr r0, [pc, #152] ; (2e58 ) - 2dc0: f029 fbc2 bl 2c548 - 2dc4: 481e ldr r0, [pc, #120] ; (2e40 ) - 2dc6: f027 f855 bl 29e74 - 2dca: 2101 movs r1, #1 - 2dcc: 481a ldr r0, [pc, #104] ; (2e38 ) - 2dce: f029 fbbb bl 2c548 - 2dd2: 2142 movs r1, #66 ; 0x42 - 2dd4: 4821 ldr r0, [pc, #132] ; (2e5c ) - 2dd6: f029 fbb7 bl 2c548 - 2dda: 4819 ldr r0, [pc, #100] ; (2e40 ) - 2ddc: f027 f84a bl 29e74 - 2de0: 212e movs r1, #46 ; 0x2e - 2de2: 481f ldr r0, [pc, #124] ; (2e60 ) - 2de4: f029 fbb0 bl 2c548 - 2de8: 4815 ldr r0, [pc, #84] ; (2e40 ) - 2dea: f027 f843 bl 29e74 - 2dee: 212e movs r1, #46 ; 0x2e - 2df0: 481b ldr r0, [pc, #108] ; (2e60 ) - 2df2: f029 fba9 bl 2c548 - 2df6: 4812 ldr r0, [pc, #72] ; (2e40 ) - 2df8: f027 f83c bl 29e74 - 2dfc: 4621 mov r1, r4 - 2dfe: 4816 ldr r0, [pc, #88] ; (2e58 ) - 2e00: f029 fba2 bl 2c548 - 2e04: 480e ldr r0, [pc, #56] ; (2e40 ) - 2e06: f027 f835 bl 29e74 + 2cb0: f883 4091 strb.w r4, [r3, #145] ; 0x91 + 2cb4: f029 fcbc bl 2c630 + 2cb8: 480b ldr r0, [pc, #44] ; (2ce8 ) + 2cba: f027 f951 bl 29f60 + 2cbe: 212e movs r1, #46 ; 0x2e + 2cc0: 4814 ldr r0, [pc, #80] ; (2d14 ) + 2cc2: f029 fcb5 bl 2c630 + 2cc6: 4808 ldr r0, [pc, #32] ; (2ce8 ) + 2cc8: f027 f94a bl 29f60 + 2ccc: 212e movs r1, #46 ; 0x2e + 2cce: 4811 ldr r0, [pc, #68] ; (2d14 ) + 2cd0: f029 fcae bl 2c630 + 2cd4: 4804 ldr r0, [pc, #16] ; (2ce8 ) + 2cd6: f027 f943 bl 29f60 + 2cda: e02d b.n 2d38 + 2cdc: 2000bb08 .word 0x2000bb08 + 2ce0: 2000bcae .word 0x2000bcae + 2ce4: 2000266c .word 0x2000266c + 2ce8: 20004c68 .word 0x20004c68 + 2cec: 20002678 .word 0x20002678 + 2cf0: 2000268c .word 0x2000268c + 2cf4: 20003d18 .word 0x20003d18 + 2cf8: 200026ac .word 0x200026ac + 2cfc: 200026bc .word 0x200026bc + 2d00: 200026dc .word 0x200026dc + 2d04: 200026f0 .word 0x200026f0 + 2d08: 2000270c .word 0x2000270c + 2d0c: 20002728 .word 0x20002728 + 2d10: 20002740 .word 0x20002740 + 2d14: 20002760 .word 0x20002760 + 2d18: 200023ec .word 0x200023ec + 2d1c: 20002790 .word 0x20002790 + 2d20: 200027ac .word 0x200027ac + 2d24: 200027bc .word 0x200027bc + 2d28: 200027c4 .word 0x200027c4 + 2d2c: 200027d8 .word 0x200027d8 + 2d30: 200027e4 .word 0x200027e4 + 2d34: 2000bcb6 .word 0x2000bcb6 + 2d38: 2101 movs r1, #1 + 2d3a: 4841 ldr r0, [pc, #260] ; (2e40 ) + 2d3c: f029 fc78 bl 2c630 + 2d40: 2139 movs r1, #57 ; 0x39 + 2d42: 4840 ldr r0, [pc, #256] ; (2e44 ) + 2d44: f029 fc74 bl 2c630 + 2d48: 483f ldr r0, [pc, #252] ; (2e48 ) + 2d4a: f027 f909 bl 29f60 + 2d4e: 2101 movs r1, #1 + 2d50: 483b ldr r0, [pc, #236] ; (2e40 ) + 2d52: f029 fc6d bl 2c630 + 2d56: 212b movs r1, #43 ; 0x2b + 2d58: 483c ldr r0, [pc, #240] ; (2e4c ) + 2d5a: f029 fc69 bl 2c630 + 2d5e: 483a ldr r0, [pc, #232] ; (2e48 ) + 2d60: f027 f8fe bl 29f60 + 2d64: 2101 movs r1, #1 + 2d66: 4836 ldr r0, [pc, #216] ; (2e40 ) + 2d68: f029 fc62 bl 2c630 + 2d6c: 2135 movs r1, #53 ; 0x35 + 2d6e: 4838 ldr r0, [pc, #224] ; (2e50 ) + 2d70: f029 fc5e bl 2c630 + 2d74: 4834 ldr r0, [pc, #208] ; (2e48 ) + 2d76: f027 f8f3 bl 29f60 + 2d7a: 2101 movs r1, #1 + 2d7c: 4830 ldr r0, [pc, #192] ; (2e40 ) + 2d7e: f029 fc57 bl 2c630 + 2d82: 2122 movs r1, #34 ; 0x22 + 2d84: 4833 ldr r0, [pc, #204] ; (2e54 ) + 2d86: f029 fc53 bl 2c630 + 2d8a: 482f ldr r0, [pc, #188] ; (2e48 ) + 2d8c: f027 f8e8 bl 29f60 + 2d90: 2101 movs r1, #1 + 2d92: 482b ldr r0, [pc, #172] ; (2e40 ) + 2d94: f029 fc4c bl 2c630 + 2d98: 2133 movs r1, #51 ; 0x33 + 2d9a: 482f ldr r0, [pc, #188] ; (2e58 ) + 2d9c: f029 fc48 bl 2c630 + 2da0: 4829 ldr r0, [pc, #164] ; (2e48 ) + 2da2: f027 f8dd bl 29f60 + 2da6: 2101 movs r1, #1 + 2da8: 4825 ldr r0, [pc, #148] ; (2e40 ) + 2daa: f029 fc41 bl 2c630 + 2dae: 213a movs r1, #58 ; 0x3a + 2db0: 482a ldr r0, [pc, #168] ; (2e5c ) + 2db2: f029 fc3d bl 2c630 + 2db6: 4824 ldr r0, [pc, #144] ; (2e48 ) + 2db8: f027 f8d2 bl 29f60 + 2dbc: 2101 movs r1, #1 + 2dbe: 4820 ldr r0, [pc, #128] ; (2e40 ) + 2dc0: f029 fc36 bl 2c630 + 2dc4: 4621 mov r1, r4 + 2dc6: 4826 ldr r0, [pc, #152] ; (2e60 ) + 2dc8: f029 fc32 bl 2c630 + 2dcc: 481e ldr r0, [pc, #120] ; (2e48 ) + 2dce: f027 f8c7 bl 29f60 + 2dd2: 2101 movs r1, #1 + 2dd4: 481a ldr r0, [pc, #104] ; (2e40 ) + 2dd6: f029 fc2b bl 2c630 + 2dda: 2142 movs r1, #66 ; 0x42 + 2ddc: 4821 ldr r0, [pc, #132] ; (2e64 ) + 2dde: f029 fc27 bl 2c630 + 2de2: 4819 ldr r0, [pc, #100] ; (2e48 ) + 2de4: f027 f8bc bl 29f60 + 2de8: 212e movs r1, #46 ; 0x2e + 2dea: 481f ldr r0, [pc, #124] ; (2e68 ) + 2dec: f029 fc20 bl 2c630 + 2df0: 4815 ldr r0, [pc, #84] ; (2e48 ) + 2df2: f027 f8b5 bl 29f60 + 2df6: 212e movs r1, #46 ; 0x2e + 2df8: 481b ldr r0, [pc, #108] ; (2e68 ) + 2dfa: f029 fc19 bl 2c630 + 2dfe: 4812 ldr r0, [pc, #72] ; (2e48 ) + 2e00: f027 f8ae bl 29f60 + 2e04: 4621 mov r1, r4 + 2e06: 4816 ldr r0, [pc, #88] ; (2e60 ) + 2e08: f029 fc12 bl 2c630 + 2e0c: 480e ldr r0, [pc, #56] ; (2e48 ) + 2e0e: f027 f8a7 bl 29f60 bitSet(flags, bit); - 2e0a: f895 3964 ldrb.w r3, [r5, #2404] ; 0x964 - 2e0e: f043 0304 orr.w r3, r3, #4 - 2e12: f885 3964 strb.w r3, [r5, #2404] ; 0x964 + 2e12: f895 3968 ldrb.w r3, [r5, #2408] ; 0x968 + 2e16: f043 0304 orr.w r3, r3, #4 + 2e1a: f885 3968 strb.w r3, [r5, #2408] ; 0x968 } - 2e16: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 2e1e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} uint32_t elapsed = systick_millis_count - millis_begin; - 2e1a: 682b ldr r3, [r5, #0] + 2e22: 682b ldr r3, [r5, #0] if (usb_configuration) { - 2e1c: 7822 ldrb r2, [r4, #0] + 2e24: 7822 ldrb r2, [r4, #0] uint32_t elapsed = systick_millis_count - millis_begin; - 2e1e: 1bdb subs r3, r3, r7 + 2e26: 1bdb subs r3, r3, r7 if (usb_configuration) { - 2e20: b132 cbz r2, 2e30 + 2e28: b132 cbz r2, 2e38 if (elapsed > 2000) break; - 2e22: f5b3 6ffa cmp.w r3, #2000 ; 0x7d0 - 2e26: f63f adc0 bhi.w 29aa + 2e2a: f5b3 6ffa cmp.w r3, #2000 ; 0x7d0 + 2e2e: f63f adc0 bhi.w 29b2 yield(); - 2e2a: f029 fbc7 bl 2c5bc - 2e2e: e5b1 b.n 2994 + 2e32: f029 fc37 bl 2c6a4 + 2e36: e5b1 b.n 299c if (elapsed > 750) break; - 2e30: 454b cmp r3, r9 - 2e32: d9fa bls.n 2e2a - 2e34: e5b9 b.n 29aa - 2e36: bf00 nop - 2e38: 200023ec .word 0x200023ec - 2e3c: 200027ec .word 0x200027ec - 2e40: 20004ba8 .word 0x20004ba8 - 2e44: 20002828 .word 0x20002828 - 2e48: 20002854 .word 0x20002854 - 2e4c: 2000288c .word 0x2000288c - 2e50: 200028b0 .word 0x200028b0 - 2e54: 200028e4 .word 0x200028e4 - 2e58: 20003c58 .word 0x20003c58 - 2e5c: 20002920 .word 0x20002920 - 2e60: 20002758 .word 0x20002758 - -00002e64 : + 2e38: 454b cmp r3, r9 + 2e3a: d9fa bls.n 2e32 + 2e3c: e5b9 b.n 29b2 + 2e3e: bf00 nop + 2e40: 200023ec .word 0x200023ec + 2e44: 200027f4 .word 0x200027f4 + 2e48: 20004c68 .word 0x20004c68 + 2e4c: 20002830 .word 0x20002830 + 2e50: 2000285c .word 0x2000285c + 2e54: 20002894 .word 0x20002894 + 2e58: 200028b8 .word 0x200028b8 + 2e5c: 200028ec .word 0x200028ec + 2e60: 20003d18 .word 0x20003d18 + 2e64: 20002928 .word 0x20002928 + 2e68: 20002760 .word 0x20002760 + +00002e6c : void BMC::update(){ - 2e64: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2e6c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(bitRead(flags, bit)){ - 2e68: f500 5680 add.w r6, r0, #4096 ; 0x1000 - 2e6c: b08f sub sp, #60 ; 0x3c - 2e6e: 4607 mov r7, r0 - 2e70: f896 3964 ldrb.w r3, [r6, #2404] ; 0x964 - 2e74: 075a lsls r2, r3, #29 - 2e76: f100 81cc bmi.w 3212 + 2e70: f500 5680 add.w r6, r0, #4096 ; 0x1000 + 2e74: b08f sub sp, #60 ; 0x3c + 2e76: 4607 mov r7, r0 + 2e78: f896 3968 ldrb.w r3, [r6, #2408] ; 0x968 + 2e7c: 075a lsls r2, r3, #29 + 2e7e: f100 81c1 bmi.w 3204 setLists.set(0); - 2e7a: f500 5348 add.w r3, r0, #12800 ; 0x3200 - 2e7e: f500 5540 add.w r5, r0, #12288 ; 0x3000 - 2e82: f8df a62c ldr.w sl, [pc, #1580] ; 34b0 - 2e86: 9306 str r3, [sp, #24] - 2e88: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c - 2e8c: 0599 lsls r1, r3, #22 - 2e8e: d508 bpl.n 2ea2 + 2e82: f243 2320 movw r3, #12832 ; 0x3220 + 2e86: f500 5540 add.w r5, r0, #12288 ; 0x3000 + 2e8a: f8df a624 ldr.w sl, [pc, #1572] ; 34b0 + 2e8e: 18c3 adds r3, r0, r3 + 2e90: 9306 str r3, [sp, #24] + 2e92: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c + 2e96: 0599 lsls r1, r3, #22 + 2e98: d508 bpl.n 2eac bitClear(flags, bit); - 2e90: f423 7300 bic.w r3, r3, #512 ; 0x200 + 2e9a: f423 7300 bic.w r3, r3, #512 ; 0x200 reloadLayer(); - 2e94: 4638 mov r0, r7 - 2e96: f8c6 385c str.w r3, [r6, #2140] ; 0x85c - 2e9a: f012 f959 bl 15150 + 2e9e: 4638 mov r0, r7 + 2ea0: f8c6 385c str.w r3, [r6, #2140] ; 0x85c + 2ea4: f012 f9ba bl 1521c if(bitRead(flags, bit)){ - 2e9e: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c - 2ea2: 05da lsls r2, r3, #23 - 2ea4: d506 bpl.n 2eb4 + 2ea8: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c + 2eac: 05da lsls r2, r3, #23 + 2eae: d506 bpl.n 2ebe bitClear(flags, bit); - 2ea6: f423 7380 bic.w r3, r3, #256 ; 0x100 + 2eb0: f423 7380 bic.w r3, r3, #256 ; 0x100 assignStoreData(); - 2eaa: 4638 mov r0, r7 - 2eac: f8c6 385c str.w r3, [r6, #2140] ; 0x85c - 2eb0: f003 f940 bl 6134 + 2eb4: 4638 mov r0, r7 + 2eb6: f8c6 385c str.w r3, [r6, #2140] ; 0x85c + 2eba: f003 f97f bl 61bc editor.update(); - 2eb4: f642 499c movw r9, #11420 ; 0x2c9c + 2ebe: f642 49bc movw r9, #11452 ; 0x2cbc runTempoToTap(); - 2eb8: 4638 mov r0, r7 - 2eba: f015 f917 bl 180ec + 2ec2: 4638 mov r0, r7 + 2ec4: f015 f984 bl 181d0 readTimedEvent(); - 2ebe: 4638 mov r0, r7 + 2ec8: 4638 mov r0, r7 editor.update(); - 2ec0: 44b9 add r9, r7 + 2eca: 44b9 add r9, r7 readTimedEvent(); - 2ec2: f015 f985 bl 181d0 + 2ecc: f015 f9f2 bl 182b4 editor.update(); - 2ec6: 4648 mov r0, r9 - 2ec8: f017 fc46 bl 1a758 + 2ed0: 4648 mov r0, r9 + 2ed2: f017 fcb1 bl 1a838 readMidi(); - 2ecc: 4638 mov r0, r7 - 2ece: f014 fbc1 bl 17654 + 2ed6: 4638 mov r0, r7 + 2ed8: f014 fd02 bl 178e0 if(callback.midUpdate){ - 2ed2: f8d6 38ec ldr.w r3, [r6, #2284] ; 0x8ec - 2ed6: b103 cbz r3, 2eda + 2edc: f8d6 38ec ldr.w r3, [r6, #2284] ; 0x8ec + 2ee0: b103 cbz r3, 2ee4 callback.midUpdate(); - 2ed8: 4798 blx r3 + 2ee2: 4798 blx r3 return (prevTime>0); - 2eda: f8d5 3280 ldr.w r3, [r5, #640] ; 0x280 + 2ee4: f8d5 32a0 ldr.w r3, [r5, #672] ; 0x2a0 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 2ede: 2b00 cmp r3, #0 - 2ee0: f040 80ea bne.w 30b8 - 2ee4: f243 2320 movw r3, #12832 ; 0x3220 - 2ee8: 18fb adds r3, r7, r3 - 2eea: 9305 str r3, [sp, #20] - 2eec: f243 3811 movw r8, #13073 ; 0x3311 + 2ee8: b13b cbz r3, 2efa + 2eea: f8da 2000 ldr.w r2, [sl] + 2eee: 1ad3 subs r3, r2, r3 + 2ef0: f8b5 229c ldrh.w r2, [r5, #668] ; 0x29c + 2ef4: 4293 cmp r3, r2 + 2ef6: f080 82b2 bcs.w 345e + 2efa: f507 5349 add.w r3, r7, #12864 ; 0x3240 + 2efe: 9305 str r3, [sp, #20] + 2f00: f243 3831 movw r8, #13105 ; 0x3331 return meter; - 2ef0: f243 3b12 movw fp, #13074 ; 0x3312 - 2ef4: 2400 movs r4, #0 - 2ef6: 44b8 add r8, r7 - 2ef8: 44bb add fp, r7 - 2efa: e002 b.n 2f02 + 2f04: f243 3b32 movw fp, #13106 ; 0x3332 + 2f08: 2400 movs r4, #0 + 2f0a: 44b8 add r8, r7 + 2f0c: 44bb add fp, r7 + 2f0e: e002 b.n 2f16 for(uint8_t i=0;i<8;i++){ - 2efc: 3401 adds r4, #1 - 2efe: 2c08 cmp r4, #8 - 2f00: d016 beq.n 2f30 + 2f10: 3401 adds r4, #1 + 2f12: 2c08 cmp r4, #8 + 2f14: d016 beq.n 2f44 if(bitRead(flags, bit)){ - 2f02: f818 2034 ldrb.w r2, [r8, r4, lsl #3] - 2f06: b2e0 uxtb r0, r4 - 2f08: 0793 lsls r3, r2, #30 - 2f0a: d5f7 bpl.n 2efc + 2f16: f818 2034 ldrb.w r2, [r8, r4, lsl #3] + 2f1a: b2e0 uxtb r0, r4 + 2f1c: 0793 lsls r3, r2, #30 + 2f1e: d5f7 bpl.n 2f10 bitClear(flags, bit); - 2f0c: f022 0302 bic.w r3, r2, #2 + 2f20: f022 0302 bic.w r3, r2, #2 callback.dawChannelMeterUpdate(i, level, overload); - 2f10: f002 0201 and.w r2, r2, #1 - 2f14: f808 3034 strb.w r3, [r8, r4, lsl #3] + 2f24: f002 0201 and.w r2, r2, #1 + 2f28: f808 3034 strb.w r3, [r8, r4, lsl #3] if(callback.dawChannelMeterUpdate){ - 2f18: f8d5 3278 ldr.w r3, [r5, #632] ; 0x278 - 2f1c: f81b 1034 ldrb.w r1, [fp, r4, lsl #3] - 2f20: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 2f24: 2b00 cmp r3, #0 - 2f26: d0e9 beq.n 2efc + 2f2c: f8d5 3298 ldr.w r3, [r5, #664] ; 0x298 + 2f30: f81b 1034 ldrb.w r1, [fp, r4, lsl #3] + 2f34: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 + 2f38: 2b00 cmp r3, #0 + 2f3a: d0e9 beq.n 2f10 for(uint8_t i=0;i<8;i++){ - 2f28: 3401 adds r4, #1 + 2f3c: 3401 adds r4, #1 callback.dawChannelMeterUpdate(i, level, overload); - 2f2a: 4798 blx r3 + 2f3e: 4798 blx r3 for(uint8_t i=0;i<8;i++){ - 2f2c: 2c08 cmp r4, #8 - 2f2e: d1e8 bne.n 2f02 + 2f40: 2c08 cmp r4, #8 + 2f42: d1e8 bne.n 2f16 #if defined(BMC_USE_DAW_LC) daw.update(); #endif #if defined(BMC_USE_FAS) fas.update(); - 2f30: 9b05 ldr r3, [sp, #20] - 2f32: f503 709a add.w r0, r3, #308 ; 0x134 - 2f36: f7fe fb01 bl 153c + 2f44: 9b05 ldr r3, [sp, #20] + 2f46: f503 709a add.w r0, r3, #308 ; 0x134 + 2f4a: f7fe faf7 bl 153c // } void update(){ uint8_t cc = midi.getLocalControl(channel,BMC_HELIX_CC_SNAPSHOT); - 2f3a: f895 3789 ldrb.w r3, [r5, #1929] ; 0x789 + 2f4e: f895 37a9 ldrb.w r3, [r5, #1961] ; 0x7a9 if(channel!=0 && cc!=snapshot){ - 2f3e: b19b cbz r3, 2f68 + 2f52: b19b cbz r3, 2f7c uint8_t ch = ((t_channel-1) & 0x0F); - 2f40: 3b01 subs r3, #1 + 2f54: 3b01 subs r3, #1 return (ch + 2f56: f8d5 27a4 ldr.w r2, [r5, #1956] ; 0x7a4 + 2f5a: f003 030f and.w r3, r3, #15 + 2f5e: eb03 1383 add.w r3, r3, r3, lsl #6 + 2f62: eb02 0243 add.w r2, r2, r3, lsl #1 + 2f66: f892 3154 ldrb.w r3, [r2, #340] ; 0x154 + 2f6a: f895 27ab ldrb.w r2, [r5, #1963] ; 0x7ab + 2f6e: 429a cmp r2, r3 + 2f70: d004 beq.n 2f7c if(validateSnapshot(a) && validateSnapshot(b)){ setSnapshot((snapshot==a)?b:a); } } uint8_t getMaxSnapshots(){ switch(id){ - 2f5e: f895 2788 ldrb.w r2, [r5, #1928] ; 0x788 - 2f62: 2a02 cmp r2, #2 - 2f64: f240 82d1 bls.w 350a + 2f72: f895 27a8 ldrb.w r2, [r5, #1960] ; 0x7a8 + 2f76: 2a02 cmp r2, #2 + 2f78: f240 82c7 bls.w 350a #if defined(BMC_USE_HELIX) helix.update(); #endif #if defined(BMC_USE_BEATBUDDY) beatBuddy.update(); - 2f68: 9b05 ldr r3, [sp, #20] - 2f6a: f503 60ae add.w r0, r3, #1392 ; 0x570 - 2f6e: f7fe fbd1 bl 1714 + 2f7c: 9b05 ldr r3, [sp, #20] + 2f7e: f503 60ae add.w r0, r3, #1392 ; 0x570 + 2f82: f7fe fbc1 bl 1708 bool val = bitRead(flags, 1); - 2f72: f895 3373 ldrb.w r3, [r5, #883] ; 0x373 + 2f86: f895 3393 ldrb.w r3, [r5, #915] ; 0x393 if(val){ - 2f76: 079c lsls r4, r3, #30 - 2f78: d509 bpl.n 2f8e + 2f8a: 079c lsls r4, r3, #30 + 2f8c: d509 bpl.n 2fa2 bitWrite(flags, 1, 0); - 2f7a: f023 0302 bic.w r3, r3, #2 + 2f8e: f023 0302 bic.w r3, r3, #2 editor.utilitySendFasState(sync.fas.getConnectedDeviceId()); - 2f7e: 2201 movs r2, #1 - 2f80: f895 1370 ldrb.w r1, [r5, #880] ; 0x370 - 2f84: 4648 mov r0, r9 - 2f86: f885 3373 strb.w r3, [r5, #883] ; 0x373 - 2f8a: f01f fb8d bl 226a8 + 2f92: 2201 movs r2, #1 + 2f94: f895 1390 ldrb.w r1, [r5, #912] ; 0x390 + 2f98: 4648 mov r0, r9 + 2f9a: f885 3393 strb.w r3, [r5, #915] ; 0x393 + 2f9e: f01f fbf3 bl 22788 readHardware(); - 2f8e: 4638 mov r0, r7 - 2f90: f010 fbe4 bl 1375c + 2fa2: 4638 mov r0, r7 + 2fa4: f010 fc3e bl 13824 if(bitRead(flags, bit)){ - 2f94: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c - 2f98: 0558 lsls r0, r3, #21 - 2f9a: f100 8135 bmi.w 3208 - 2f9e: 0519 lsls r1, r3, #20 - 2fa0: f100 80e4 bmi.w 316c - 2fa4: f895 31f0 ldrb.w r3, [r5, #496] ; 0x1f0 - 2fa8: 07da lsls r2, r3, #31 - 2faa: d508 bpl.n 2fbe + 2fa8: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c + 2fac: 0558 lsls r0, r3, #21 + 2fae: f100 81cf bmi.w 3350 + 2fb2: 0519 lsls r1, r3, #20 + 2fb4: f100 80d4 bmi.w 3160 + 2fb8: f895 3210 ldrb.w r3, [r5, #528] ; 0x210 + 2fbc: 07da lsls r2, r3, #31 + 2fbe: d508 bpl.n 2fd2 bitClear(flags, bit); - 2fac: f023 0301 bic.w r3, r3, #1 + 2fc0: f023 0301 bic.w r3, r3, #1 runPresetChanged(); - 2fb0: 4638 mov r0, r7 - 2fb2: f885 31f0 strb.w r3, [r5, #496] ; 0x1f0 - 2fb6: f7fe fdd7 bl 1b68 + 2fc4: 4638 mov r0, r7 + 2fc6: f885 3210 strb.w r3, [r5, #528] ; 0x210 + 2fca: f7fe fdc7 bl 1b5c if(bitRead(flags, bit)){ - 2fba: f895 31f0 ldrb.w r3, [r5, #496] ; 0x1f0 - 2fbe: 079c lsls r4, r3, #30 - 2fc0: f100 8114 bmi.w 31ec - 2fc4: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c - 2fc8: 04d8 lsls r0, r3, #19 - 2fca: f100 810a bmi.w 31e2 - 2fce: 0499 lsls r1, r3, #18 - 2fd0: d47f bmi.n 30d2 - 2fd2: 045a lsls r2, r3, #17 - 2fd4: d509 bpl.n 2fea + 2fce: f895 3210 ldrb.w r3, [r5, #528] ; 0x210 + 2fd2: 079c lsls r4, r3, #30 + 2fd4: f100 80ff bmi.w 31d6 + 2fd8: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c + 2fdc: 04d8 lsls r0, r3, #19 + 2fde: f100 810c bmi.w 31fa + 2fe2: 0499 lsls r1, r3, #18 + 2fe4: d471 bmi.n 30ca + 2fe6: 045a lsls r2, r3, #17 + 2fe8: d509 bpl.n 2ffe bitClear(flags, bit); - 2fd6: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 2fea: f423 4380 bic.w r3, r3, #16384 ; 0x4000 setLists.setPart(setLists.getPart()); - 2fda: 9806 ldr r0, [sp, #24] - 2fdc: f8c6 385c str.w r3, [r6, #2140] ; 0x85c + 2fee: 9806 ldr r0, [sp, #24] + 2ff0: f8c6 385c str.w r3, [r6, #2140] ; 0x85c return songPart; - 2fe0: f8d5 3210 ldr.w r3, [r5, #528] ; 0x210 - 2fe4: 7819 ldrb r1, [r3, #0] - 2fe6: f7fd fb7b bl 6e0 + 2ff4: f8d5 3230 ldr.w r3, [r5, #560] ; 0x230 + 2ff8: 7819 ldrb r1, [r3, #0] + 2ffa: f7fd fb71 bl 6e0 if(bitRead(flags, bit)){ - 2fea: f895 321c ldrb.w r3, [r5, #540] ; 0x21c - 2fee: 07dc lsls r4, r3, #31 - 2ff0: d47d bmi.n 30ee - 2ff2: 0798 lsls r0, r3, #30 - 2ff4: f100 808d bmi.w 3112 - 2ff8: 075a lsls r2, r3, #29 - 2ffa: f100 80a0 bmi.w 313e + 2ffe: f895 323c ldrb.w r3, [r5, #572] ; 0x23c + 3002: 07dc lsls r4, r3, #31 + 3004: d46f bmi.n 30e6 + 3006: 0798 lsls r0, r3, #30 + 3008: d47d bmi.n 3106 + 300a: 075a lsls r2, r3, #29 + 300c: f100 8091 bmi.w 3132 if(layerChanged()){ - 2ffe: 4638 mov r0, r7 - 3000: f011 fec8 bl 14d94 - 3004: 2800 cmp r0, #0 - 3006: f040 80ad bne.w 3164 + 3010: 4638 mov r0, r7 + 3012: f011 ff25 bl 14e60 + 3016: 2800 cmp r0, #0 + 3018: f040 809e bne.w 3158 readDebug(); - 300a: 4638 mov r0, r7 - 300c: f000 ff1e bl 3e4c + 301c: 4638 mov r0, r7 + 301e: f000 ff15 bl 3e4c if(callback.midiActivity && globals.hasMidiActivity()){ - 3010: f8d6 28b8 ldr.w r2, [r6, #2232] ; 0x8b8 + 3022: f8d6 28b8 ldr.w r2, [r6, #2232] ; 0x8b8 return bitRead(flags, bit); - 3014: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c - 3018: b142 cbz r2, 302c + 3026: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c + 302a: b142 cbz r2, 303e return midiInActivity() || midiOutActivity(); - 301a: f013 0001 ands.w r0, r3, #1 - 301e: f3c3 0140 ubfx r1, r3, #1, #1 - 3022: f040 80bb bne.w 319c - 3026: 079c lsls r4, r3, #30 - 3028: f100 80b8 bmi.w 319c + 302c: f013 0001 ands.w r0, r3, #1 + 3030: f3c3 0140 ubfx r1, r3, #1, #1 + 3034: f040 80ac bne.w 3190 + 3038: 079c lsls r4, r3, #30 + 303a: f100 80a9 bmi.w 3190 if(callback.midiLocalUpdate && globals.midiLocalUpdate()){ - 302c: f8d6 28bc ldr.w r2, [r6, #2236] ; 0x8bc - 3030: b122 cbz r2, 303c - 3032: 069c lsls r4, r3, #26 - 3034: d502 bpl.n 303c + 303e: f8d6 28bc ldr.w r2, [r6, #2236] ; 0x8bc + 3042: b122 cbz r2, 304e + 3044: 069c lsls r4, r3, #26 + 3046: d502 bpl.n 304e callback.midiLocalUpdate(); - 3036: 4790 blx r2 + 3048: 4790 blx r2 bitClear(flags, bit); - 3038: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c - 303c: f023 0323 bic.w r3, r3, #35 ; 0x23 - 3040: f8c6 385c str.w r3, [r6, #2140] ; 0x85c + 304a: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c + 304e: f023 0323 bic.w r3, r3, #35 ; 0x23 + 3052: f8c6 385c str.w r3, [r6, #2140] ; 0x85c loopsPerSecond++; - 3044: f8d6 3864 ldr.w r3, [r6, #2148] ; 0x864 - 3048: 3301 adds r3, #1 - 304a: f8c6 3864 str.w r3, [r6, #2148] ; 0x864 + 3056: f8d6 3864 ldr.w r3, [r6, #2148] ; 0x864 + 305a: 3301 adds r3, #1 + 305c: f8c6 3864 str.w r3, [r6, #2148] ; 0x864 uint8_t lfoValue = lfo[i].getWave(micros()); - 304e: f027 fa91 bl 2a574 - 3052: 4601 mov r1, r0 - 3054: f641 1068 movw r0, #6504 ; 0x1968 - 3058: 4438 add r0, r7 - 305a: f7fd f945 bl 2e8 + 3060: f027 fafc bl 2a65c + 3064: 4601 mov r1, r0 + 3066: f641 106c movw r0, #6508 ; 0x196c + 306a: 4438 add r0, r7 + 306c: f7fd f93c bl 2e8 if(lfo[i].isEnabled()){ - 305e: f896 3968 ldrb.w r3, [r6, #2408] ; 0x968 + 3070: f896 396c ldrb.w r3, [r6, #2412] ; 0x96c uint8_t lfoValue = lfo[i].getWave(micros()); - 3062: b2c0 uxtb r0, r0 + 3074: b2c0 uxtb r0, r0 if(lfo[i].isEnabled()){ - 3064: 2b00 cmp r3, #0 - 3066: f040 809d bne.w 31a4 - 306a: f8da 2000 ldr.w r2, [sl] + 3076: 2b00 cmp r3, #0 + 3078: f040 808e bne.w 3198 + 307c: f8da 2000 ldr.w r2, [sl] if(oneMillisecondPassed()){ - 306e: f8d5 3818 ldr.w r3, [r5, #2072] ; 0x818 - 3072: 429a cmp r2, r3 - 3074: d003 beq.n 307e - 3076: f8da 3000 ldr.w r3, [sl] + 3080: f8d5 3838 ldr.w r3, [r5, #2104] ; 0x838 + 3084: 429a cmp r2, r3 + 3086: d003 beq.n 3090 + 3088: f8da 3000 ldr.w r3, [sl] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 307a: f8c5 3818 str.w r3, [r5, #2072] ; 0x818 - 307e: f8da 3000 ldr.w r3, [sl] + 308c: f8c5 3838 str.w r3, [r5, #2104] ; 0x838 + 3090: f8da 3000 ldr.w r3, [sl] operator unsigned long () const { return millis() - ms; } - 3082: f8d5 281c ldr.w r2, [r5, #2076] ; 0x81c - 3086: 1a9b subs r3, r3, r2 + 3094: f8d5 283c ldr.w r2, [r5, #2108] ; 0x83c + 3098: 1a9b subs r3, r3, r2 if(oneSecondPassed()){ - 3088: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 - 308c: f080 8166 bcs.w 335c + 309a: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 309e: f080 815c bcs.w 335a if(heartbeat>0 && (unsigned long)millis()-heartbeat >= 150){ - 3090: f8d5 2810 ldr.w r2, [r5, #2064] ; 0x810 - 3094: b16a cbz r2, 30b2 - 3096: f8da 3000 ldr.w r3, [sl] - 309a: 1a9b subs r3, r3, r2 - 309c: 2b95 cmp r3, #149 ; 0x95 - 309e: d908 bls.n 30b2 - 30a0: f896 3964 ldrb.w r3, [r6, #2404] ; 0x964 + 30a2: f8d5 2830 ldr.w r2, [r5, #2096] ; 0x830 + 30a6: b16a cbz r2, 30c4 + 30a8: f8da 3000 ldr.w r3, [sl] + 30ac: 1a9b subs r3, r3, r2 + 30ae: 2b95 cmp r3, #149 ; 0x95 + 30b0: d908 bls.n 30c4 + 30b2: f896 3968 ldrb.w r3, [r6, #2408] ; 0x968 heartbeat = 0; - 30a4: 2200 movs r2, #0 - 30a6: f023 0308 bic.w r3, r3, #8 - 30aa: f886 3964 strb.w r3, [r6, #2404] ; 0x964 - 30ae: f8c5 2810 str.w r2, [r5, #2064] ; 0x810 -} - 30b2: b00f add sp, #60 ; 0x3c - 30b4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 30b8: f8da 2000 ldr.w r2, [sl] - 30bc: 1ad3 subs r3, r2, r3 - 30be: f8b5 227c ldrh.w r2, [r5, #636] ; 0x27c - 30c2: 4293 cmp r3, r2 - daw.update(); - 30c4: f243 2320 movw r3, #12832 ; 0x3220 - 30c8: 443b add r3, r7 - 30ca: f080 81c9 bcs.w 3460 - 30ce: 9305 str r3, [sp, #20] - 30d0: e70c b.n 2eec + 30b6: 2200 movs r2, #0 + 30b8: f023 0308 bic.w r3, r3, #8 + 30bc: f886 3968 strb.w r3, [r6, #2408] ; 0x968 + 30c0: f8c5 2830 str.w r2, [r5, #2096] ; 0x830 +} + 30c4: b00f add sp, #60 ; 0x3c + 30c6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} bitClear(flags, bit); - 30d2: f423 5300 bic.w r3, r3, #8192 ; 0x2000 + 30ca: f423 5300 bic.w r3, r3, #8192 ; 0x2000 setLists.setSong(setLists.getSong()); - 30d6: 9806 ldr r0, [sp, #24] - 30d8: f8c6 385c str.w r3, [r6, #2140] ; 0x85c + 30ce: 9806 ldr r0, [sp, #24] + 30d0: f8c6 385c str.w r3, [r6, #2140] ; 0x85c return song; - 30dc: f8d5 320c ldr.w r3, [r5, #524] ; 0x20c - 30e0: 7819 ldrb r1, [r3, #0] - 30e2: f7fd fb6f bl 7c4 + 30d4: f8d5 322c ldr.w r3, [r5, #556] ; 0x22c + 30d8: 7819 ldrb r1, [r3, #0] + 30da: f7fd fb73 bl 7c4 if(bitRead(flags, bit)){ - 30e6: f895 321c ldrb.w r3, [r5, #540] ; 0x21c - 30ea: 07dc lsls r4, r3, #31 - 30ec: d581 bpl.n 2ff2 + 30de: f895 323c ldrb.w r3, [r5, #572] ; 0x23c + 30e2: 07dc lsls r4, r3, #31 + 30e4: d58f bpl.n 3006 bitClear(flags, bit); - 30ee: f003 03fe and.w r3, r3, #254 ; 0xfe - 30f2: f885 321c strb.w r3, [r5, #540] ; 0x21c + 30e6: f003 03fe and.w r3, r3, #254 ; 0xfe + 30ea: f885 323c strb.w r3, [r5, #572] ; 0x23c /* char setListName[30] = ""; setLists.getName(setLists.get(), setListName); streamToSketch(BMC_DEVICE_ID_SETLIST, setLists.get(), setListName); */ if(callback.setListChanged){ - 30f6: f8d6 28d0 ldr.w r2, [r6, #2256] ; 0x8d0 - 30fa: 2a00 cmp r2, #0 - 30fc: f43f af79 beq.w 2ff2 + 30ee: f8d6 28d0 ldr.w r2, [r6, #2256] ; 0x8d0 + 30f2: 2a00 cmp r2, #0 + 30f4: d087 beq.n 3006 return setList; - 3100: f8d5 3208 ldr.w r3, [r5, #520] ; 0x208 + 30f6: f8d5 3228 ldr.w r3, [r5, #552] ; 0x228 callback.setListChanged(setLists.get()); - 3104: 7818 ldrb r0, [r3, #0] - 3106: 4790 blx r2 + 30fa: 7818 ldrb r0, [r3, #0] + 30fc: 4790 blx r2 if(bitRead(flags, bit)){ - 3108: f895 321c ldrb.w r3, [r5, #540] ; 0x21c - 310c: 0798 lsls r0, r3, #30 - 310e: f57f af73 bpl.w 2ff8 + 30fe: f895 323c ldrb.w r3, [r5, #572] ; 0x23c + 3102: 0798 lsls r0, r3, #30 + 3104: d581 bpl.n 300a bitClear(flags, bit); - 3112: f023 0302 bic.w r3, r3, #2 - 3116: f885 321c strb.w r3, [r5, #540] ; 0x21c - 311a: f8d6 37fc ldr.w r3, [r6, #2044] ; 0x7fc - 311e: 681a ldr r2, [r3, #0] + 3106: f023 0302 bic.w r3, r3, #2 + 310a: f885 323c strb.w r3, [r5, #572] ; 0x23c + 310e: f8d6 37fc ldr.w r3, [r6, #2044] ; 0x7fc + 3112: 681a ldr r2, [r3, #0] #if defined(BMC_HAS_DISPLAY) && BMC_MAX_ILI9341_BLOCKS > 0 globals.setRenderDisplayList(BMC_DEVICE_ID_SETLIST_SONG); display.renderSongBanner(); #endif if(settings.getOutgoingListenerEnabled() > 0 && settings.getOutgoingProgramType() == 3){ - 3120: 04d1 lsls r1, r2, #19 - 3122: f100 8212 bmi.w 354a + 3114: 04d1 lsls r1, r2, #19 + 3116: f100 8218 bmi.w 354a /* char songName[30] = ""; setLists.getSongName(songName); streamToSketch(BMC_DEVICE_ID_SETLIST_SONG, setLists.getSong(), songName); */ if(callback.setListSongChanged){ - 3126: f8d6 38d4 ldr.w r3, [r6, #2260] ; 0x8d4 - 312a: b11b cbz r3, 3134 + 311a: f8d6 38d4 ldr.w r3, [r6, #2260] ; 0x8d4 + 311e: b11b cbz r3, 3128 return song; - 312c: f8d5 220c ldr.w r2, [r5, #524] ; 0x20c + 3120: f8d5 222c ldr.w r2, [r5, #556] ; 0x22c callback.setListSongChanged(setLists.getSong()); - 3130: 7810 ldrb r0, [r2, #0] - 3132: 4798 blx r3 + 3124: 7810 ldrb r0, [r2, #0] + 3126: 4798 blx r3 if(bitRead(flags, bit)){ - 3134: f895 321c ldrb.w r3, [r5, #540] ; 0x21c - 3138: 075a lsls r2, r3, #29 - 313a: f57f af60 bpl.w 2ffe + 3128: f895 323c ldrb.w r3, [r5, #572] ; 0x23c + 312c: 075a lsls r2, r3, #29 + 312e: f57f af6f bpl.w 3010 bitClear(flags, bit); - 313e: f023 0304 bic.w r3, r3, #4 - 3142: f885 321c strb.w r3, [r5, #540] ; 0x21c + 3132: f023 0304 bic.w r3, r3, #4 + 3136: f885 323c strb.w r3, [r5, #572] ; 0x23c void runSongPartChanged(){ #if BMC_MAX_SETLISTS > 0 #if defined(BMC_HAS_DISPLAY) && BMC_MAX_ILI9341_BLOCKS > 0 display.renderSongPartBanner(); #endif if(callback.setListSongPartChanged){ - 3146: f8d6 38d8 ldr.w r3, [r6, #2264] ; 0x8d8 - 314a: 2b00 cmp r3, #0 - 314c: f43f af57 beq.w 2ffe + 313a: f8d6 38d8 ldr.w r3, [r6, #2264] ; 0x8d8 + 313e: 2b00 cmp r3, #0 + 3140: f43f af66 beq.w 3010 return songPart; - 3150: f8d5 2210 ldr.w r2, [r5, #528] ; 0x210 + 3144: f8d5 2230 ldr.w r2, [r5, #560] ; 0x230 callback.setListSongPartChanged(setLists.getPart()); - 3154: 7810 ldrb r0, [r2, #0] - 3156: 4798 blx r3 + 3148: 7810 ldrb r0, [r2, #0] + 314a: 4798 blx r3 if(layerChanged()){ - 3158: 4638 mov r0, r7 - 315a: f011 fe1b bl 14d94 - 315e: 2800 cmp r0, #0 - 3160: f43f af53 beq.w 300a + 314c: 4638 mov r0, r7 + 314e: f011 fe87 bl 14e60 + 3152: 2800 cmp r0, #0 + 3154: f43f af62 beq.w 301c runLayerChanged(); - 3164: 4638 mov r0, r7 - 3166: f7fe fc79 bl 1a5c - 316a: e74e b.n 300a - 316c: f423 6300 bic.w r3, r3, #2048 ; 0x800 + 3158: 4638 mov r0, r7 + 315a: f7fe fc79 bl 1a50 + 315e: e75d b.n 301c + 3160: f423 6300 bic.w r3, r3, #2048 ; 0x800 virtual size_t write(const uint8_t *buffer, size_t size) { return usb_seremu_write(buffer, size); } - 3170: 2115 movs r1, #21 - 3172: 48c6 ldr r0, [pc, #792] ; (348c ) - 3174: f8c6 385c str.w r3, [r6, #2140] ; 0x85c - 3178: f029 f9e6 bl 2c548 - 317c: 48c4 ldr r0, [pc, #784] ; (3490 ) - 317e: f026 fe79 bl 29e74 + 3164: 2115 movs r1, #21 + 3166: 48c9 ldr r0, [pc, #804] ; (348c ) + 3168: f8c6 385c str.w r3, [r6, #2140] ; 0x85c + 316c: f029 fa60 bl 2c630 + 3170: 48c7 ldr r0, [pc, #796] ; (3490 ) + 3172: f026 fef5 bl 29f60 return preset; - 3182: f8d5 31fc ldr.w r3, [r5, #508] ; 0x1fc + 3176: f8d5 321c ldr.w r3, [r5, #540] ; 0x21c set(bank, t_preset, forced); - 3186: f243 10ec movw r0, #12780 ; 0x31ec - 318a: 781a ldrb r2, [r3, #0] - 318c: 4438 add r0, r7 - 318e: f8d5 31f8 ldr.w r3, [r5, #504] ; 0x1f8 - 3192: 7819 ldrb r1, [r3, #0] - 3194: 2301 movs r3, #1 - 3196: f7fd fa13 bl 5c0 - } - 319a: e703 b.n 2fa4 + 317a: f243 200c movw r0, #12812 ; 0x320c + 317e: 781a ldrb r2, [r3, #0] + 3180: 4438 add r0, r7 + 3182: f8d5 3218 ldr.w r3, [r5, #536] ; 0x218 + 3186: 7819 ldrb r1, [r3, #0] + 3188: 2301 movs r3, #1 + 318a: f7fd fa19 bl 5c0 + } + 318e: e713 b.n 2fb8 callback.midiActivity( - 319c: 4790 blx r2 + 3190: 4790 blx r2 return bitRead(flags, bit); - 319e: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c - 31a2: e743 b.n 302c + 3192: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c + 3196: e752 b.n 303e if(lfo[i].send()){ - 31a4: f896 3969 ldrb.w r3, [r6, #2409] ; 0x969 - 31a8: 2b00 cmp r3, #0 - 31aa: f43f af5e beq.w 306a + 3198: f896 396d ldrb.w r3, [r6, #2413] ; 0x96d + 319c: 2b00 cmp r3, #0 + 319e: f43f af6d beq.w 307c if(lastLfo[i] != lfoValue){ - 31ae: f896 39a4 ldrb.w r3, [r6, #2468] ; 0x9a4 - 31b2: 4283 cmp r3, r0 - 31b4: f43f af59 beq.w 306a + 31a2: f896 39a8 ldrb.w r3, [r6, #2472] ; 0x9a8 + 31a6: 4283 cmp r3, r0 + 31a8: f43f af68 beq.w 307c lastLfo[i] = lfoValue; - 31b8: f886 09a4 strb.w r0, [r6, #2468] ; 0x9a4 + 31ac: f886 09a8 strb.w r0, [r6, #2472] ; 0x9a8 midi.sendControlChange(ports, BMC_TO_MIDI_CHANNEL(channel), cc, lfoValue); - 31bc: 2300 movs r3, #0 - 31be: 9000 str r0, [sp, #0] - 31c0: 2001 movs r0, #1 - 31c2: f897 2f23 ldrb.w r2, [r7, #3875] ; 0xf23 - 31c6: f002 020f and.w r2, r2, #15 - 31ca: e9cd 3001 strd r3, r0, [sp, #4] - 31ce: 3201 adds r2, #1 - 31d0: f897 3f24 ldrb.w r3, [r7, #3876] ; 0xf24 - 31d4: f897 1f25 ldrb.w r1, [r7, #3877] ; 0xf25 - 31d8: f507 50ce add.w r0, r7, #6592 ; 0x19c0 - 31dc: f020 f8fe bl 233dc + 31b0: 2300 movs r3, #0 + 31b2: 9000 str r0, [sp, #0] + 31b4: 2001 movs r0, #1 + 31b6: f897 2f23 ldrb.w r2, [r7, #3875] ; 0xf23 + 31ba: f002 020f and.w r2, r2, #15 + 31be: e9cd 3001 strd r3, r0, [sp, #4] + 31c2: 3201 adds r2, #1 + 31c4: f897 3f24 ldrb.w r3, [r7, #3876] ; 0xf24 + 31c8: f897 1f25 ldrb.w r1, [r7, #3877] ; 0xf25 + 31cc: f507 50ce add.w r0, r7, #6592 ; 0x19c0 + 31d0: f020 f966 bl 234a0 for(uint8_t i=0;i + 31d4: e752 b.n 307c bitClear(flags, bit); - 31e2: f423 5380 bic.w r3, r3, #4096 ; 0x1000 - 31e6: f8c6 385c str.w r3, [r6, #2140] ; 0x85c - setLists.set(setLists.get()); - 31ea: e6fe b.n 2fea - 31ec: f023 0302 bic.w r3, r3, #2 - 31f0: f885 31f0 strb.w r3, [r5, #496] ; 0x1f0 + 31d6: f023 0302 bic.w r3, r3, #2 + 31da: f885 3210 strb.w r3, [r5, #528] ; 0x210 if(callback.presetBankChanged){ - 31f4: f8d6 38cc ldr.w r3, [r6, #2252] ; 0x8cc - 31f8: 2b00 cmp r3, #0 - 31fa: f43f aee3 beq.w 2fc4 + 31de: f8d6 38cc ldr.w r3, [r6, #2252] ; 0x8cc + 31e2: 2b00 cmp r3, #0 + 31e4: f43f aef8 beq.w 2fd8 return bank; - 31fe: f8d5 21f8 ldr.w r2, [r5, #504] ; 0x1f8 + 31e8: f8d5 2218 ldr.w r2, [r5, #536] ; 0x218 callback.presetBankChanged(presets.getBank()); - 3202: 7810 ldrb r0, [r2, #0] - 3204: 4798 blx r3 - 3206: e6dd b.n 2fc4 - 3208: f423 6380 bic.w r3, r3, #1024 ; 0x400 - 320c: f8c6 385c str.w r3, [r6, #2140] ; 0x85c - set(t_bank, preset, forced); - 3210: e7b7 b.n 3182 - 3212: f023 0304 bic.w r3, r3, #4 - 3216: 210c movs r1, #12 - 3218: f643 5448 movw r4, #15688 ; 0x3d48 - 321c: 489d ldr r0, [pc, #628] ; (3494 ) - 321e: f886 3964 strb.w r3, [r6, #2404] ; 0x964 - 3222: f04f 0800 mov.w r8, #0 - 3226: f029 f98f bl 2c548 - 322a: 4899 ldr r0, [pc, #612] ; (3490 ) - 322c: 443c add r4, r7 - 322e: f507 5540 add.w r5, r7, #12288 ; 0x3000 + 31ec: 7810 ldrb r0, [r2, #0] + 31ee: 4798 blx r3 + if(bitRead(flags, bit)){ + 31f0: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c + 31f4: 04d8 lsls r0, r3, #19 + 31f6: f57f aef4 bpl.w 2fe2 + bitClear(flags, bit); + 31fa: f423 5380 bic.w r3, r3, #4096 ; 0x1000 + 31fe: f8c6 385c str.w r3, [r6, #2140] ; 0x85c + setLists.set(setLists.get()); + 3202: e6fc b.n 2ffe + 3204: f023 0304 bic.w r3, r3, #4 + 3208: 210c movs r1, #12 + 320a: f643 5468 movw r4, #15720 ; 0x3d68 + 320e: 48a1 ldr r0, [pc, #644] ; (3494 ) + 3210: f886 3968 strb.w r3, [r6, #2408] ; 0x968 + 3214: f04f 0800 mov.w r8, #0 + 3218: f029 fa0a bl 2c630 + 321c: 489c ldr r0, [pc, #624] ; (3490 ) + 321e: 443c add r4, r7 + 3220: f507 5540 add.w r5, r7, #12288 ; 0x3000 uint8_t t_settings = store.layers[globals.layer].oled[i].settings[0]; - 3232: f241 5ad4 movw sl, #5588 ; 0x15d4 + 3224: f241 5ad4 movw sl, #5588 ; 0x15d4 void setSelChar(uint8_t t_selChar){ selChar = t_selChar; } void reassign(uint8_t t_settings){ display.setTextSize(1); selChar = -1; - 3236: f04f 09ff mov.w r9, #255 ; 0xff - 323a: f026 fe1b bl 29e74 + 3228: f04f 09ff mov.w r9, #255 ; 0xff + 322c: f026 fe98 bl 29f60 for(uint8_t i = 0 ; i < BMC_MAX_OLED ; i++){ - 323e: e004 b.n 324a - 3240: f1b8 0f06 cmp.w r8, #6 - 3244: f104 0438 add.w r4, r4, #56 ; 0x38 - 3248: d034 beq.n 32b4 + 3230: e004 b.n 323c + 3232: f1b8 0f06 cmp.w r8, #6 + 3236: f104 0438 add.w r4, r4, #56 ; 0x38 + 323a: d034 beq.n 32a6 __oledMuxSelect(i); - 324a: fa5f f088 uxtb.w r0, r8 - 324e: f7ff faa7 bl 27a0 + 323c: fa5f f088 uxtb.w r0, r8 + 3240: f7ff fab2 bl 27a8 uint8_t t_settings = store.layers[globals.layer].oled[i].settings[0]; - 3252: f8d5 3b3c ldr.w r3, [r5, #2876] ; 0xb3c - 3256: eb08 0c48 add.w ip, r8, r8, lsl #1 - 325a: f8d5 2b40 ldr.w r2, [r5, #2880] ; 0xb40 - 325e: 7a5b ldrb r3, [r3, #9] + 3244: f8d5 3b5c ldr.w r3, [r5, #2908] ; 0xb5c + 3248: eb08 0c48 add.w ip, r8, r8, lsl #1 + 324c: f8d5 2b60 ldr.w r2, [r5, #2912] ; 0xb60 + 3250: 7a5b ldrb r3, [r3, #9] display.setTextSize(1); - 3260: 2101 movs r1, #1 - 3262: 4620 mov r0, r4 - 3264: eb03 1e43 add.w lr, r3, r3, lsl #5 - 3268: 4488 add r8, r1 - 326a: eb03 038e add.w r3, r3, lr, lsl #2 - 326e: 4463 add r3, ip - 3270: 441a add r2, r3 - 3272: f812 b00a ldrb.w fp, [r2, sl] - 3276: f023 fa45 bl 26704 + 3252: 2101 movs r1, #1 + 3254: 4620 mov r0, r4 + 3256: eb03 1e43 add.w lr, r3, r3, lsl #5 + 325a: 4488 add r8, r1 + 325c: eb03 038e add.w r3, r3, lr, lsl #2 + 3260: 4463 add r3, ip + 3262: 441a add r2, r3 + 3264: f812 b00a ldrb.w fp, [r2, sl] + 3268: f023 fac2 bl 267f0 meterPixelValue = 0xFFFF; - 327a: f64f 73ff movw r3, #65535 ; 0xffff + 326c: f64f 73ff movw r3, #65535 ; 0xffff selChar = -1; - 327e: f804 9c08 strb.w r9, [r4, #-8] + 3270: f804 9c08 strb.w r9, [r4, #-8] meterValue = 0xFFFF; // crc = 1; settings = t_settings; if(bitRead(t_settings, 1)){ - 3282: f01b 0f02 tst.w fp, #2 + 3274: f01b 0f02 tst.w fp, #2 settings = t_settings; - 3286: f804 bc09 strb.w fp, [r4, #-9] + 3278: f804 bc09 strb.w fp, [r4, #-9] meterPixelValue = 0xFFFF; - 328a: f824 3c06 strh.w r3, [r4, #-6] + 327c: f824 3c06 strh.w r3, [r4, #-6] meterValue = 0xFFFF; - 328e: f824 3c04 strh.w r3, [r4, #-4] + 3280: f824 3c04 strh.w r3, [r4, #-4] if(bitRead(t_settings, 1)){ - 3292: d0d5 beq.n 3240 + 3284: d0d5 beq.n 3232 display.drawRect(0, 0, wBound, hBound, BMC_OLED_WHITE); - 3294: 2201 movs r2, #1 - 3296: f814 3c0c ldrb.w r3, [r4, #-12] - 329a: 4620 mov r0, r4 + 3286: 2201 movs r2, #1 + 3288: f814 3c0c ldrb.w r3, [r4, #-12] + 328c: 4620 mov r0, r4 for(uint8_t i = 0 ; i < BMC_MAX_OLED ; i++){ - 329c: 3438 adds r4, #56 ; 0x38 - 329e: 9201 str r2, [sp, #4] - 32a0: f814 2c43 ldrb.w r2, [r4, #-67] - 32a4: 9200 str r2, [sp, #0] - 32a6: 2200 movs r2, #0 - 32a8: 4611 mov r1, r2 - 32aa: f022 fbb9 bl 25a20 - 32ae: f1b8 0f06 cmp.w r8, #6 - 32b2: d1ca bne.n 324a + 328e: 3438 adds r4, #56 ; 0x38 + 3290: 9201 str r2, [sp, #4] + 3292: f814 2c43 ldrb.w r2, [r4, #-67] + 3296: 9200 str r2, [sp, #0] + 3298: 2200 movs r2, #0 + 329a: 4611 mov r1, r2 + 329c: f022 fc36 bl 25b0c + 32a0: f1b8 0f06 cmp.w r8, #6 + 32a4: d1ca bne.n 323c setLayer(0, true); - 32b4: 2300 movs r3, #0 - 32b6: 2201 movs r2, #1 - 32b8: 4638 mov r0, r7 - 32ba: 4619 mov r1, r3 - 32bc: f011 ff40 bl 15140 + 32a6: 2300 movs r3, #0 + 32a8: 2201 movs r2, #1 + 32aa: 4638 mov r0, r7 + 32ac: 4619 mov r1, r3 + 32ae: f011 ffad bl 1520c return settings.startup; - 32c0: f8d6 37fc ldr.w r3, [r6, #2044] ; 0x7fc + 32b2: f8d6 37fc ldr.w r3, [r6, #2044] ; 0x7fc if(settings.getStartupPreset() > 0){ - 32c4: 8e5b ldrh r3, [r3, #50] ; 0x32 - 32c6: 2b00 cmp r3, #0 - 32c8: f040 8176 bne.w 35b8 + 32b6: 8e5b ldrh r3, [r3, #50] ; 0x32 + 32b8: 2b00 cmp r3, #0 + 32ba: f040 819c bne.w 35f6 setLists.set(0); - 32cc: f507 5348 add.w r3, r7, #12800 ; 0x3200 + 32be: f243 2320 movw r3, #12832 ; 0x3220 if(setList != n){ - 32d0: f8d5 2208 ldr.w r2, [r5, #520] ; 0x208 - 32d4: 9306 str r3, [sp, #24] - 32d6: 7813 ldrb r3, [r2, #0] - 32d8: 2b00 cmp r3, #0 - 32da: f040 80ed bne.w 34b8 + 32c2: f8d5 2228 ldr.w r2, [r5, #552] ; 0x228 + 32c6: 18fb adds r3, r7, r3 + 32c8: 9306 str r3, [sp, #24] + 32ca: 7813 ldrb r3, [r2, #0] + 32cc: 2b00 cmp r3, #0 + 32ce: f040 80f3 bne.w 34b8 setLists.setPart(0); - 32de: 9806 ldr r0, [sp, #24] - 32e0: 2100 movs r1, #0 - 32e2: f7fd f9fd bl 6e0 + 32d2: 9806 ldr r0, [sp, #24] + 32d4: 2100 movs r1, #0 + 32d6: f7fd fa03 bl 6e0 return bitRead(settings.flags, bit); - 32e6: f8d6 37fc ldr.w r3, [r6, #2044] ; 0x7fc - 32ea: 681b ldr r3, [r3, #0] + 32da: f8d6 37fc ldr.w r3, [r6, #2044] ; 0x7fc + 32de: 681b ldr r3, [r3, #0] if(settings.getActiveSenseAtStartup()){ - 32ec: 0698 lsls r0, r3, #26 - 32ee: f100 8175 bmi.w 35dc - 32f2: f8df a1bc ldr.w sl, [pc, #444] ; 34b0 + 32e0: 0698 lsls r0, r3, #26 + 32e2: f100 8169 bmi.w 35b8 + 32e6: f8df a1c8 ldr.w sl, [pc, #456] ; 34b0 0x01, // Host Connection Query 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, // Serial Number 0x4F, 0x4E, 0x45, 0x69, // Challenge Code 0xF7 // EOX }; midi.sendSysEx(BMC_USB, reply, 18, true); - 32f6: 2300 movs r3, #0 + 32ea: 2300 movs r3, #0 uint8_t reply[18] = - 32f8: f8df c1b8 ldr.w ip, [pc, #440] ; 34b4 + 32ec: f8df c1c4 ldr.w ip, [pc, #452] ; 34b4 midi.sendSysEx(BMC_USB, reply, 18, true); - 32fc: f04f 0e01 mov.w lr, #1 + 32f0: f04f 0e01 mov.w lr, #1 uint8_t reply[18] = - 3300: ac09 add r4, sp, #36 ; 0x24 + 32f4: ac09 add r4, sp, #36 ; 0x24 midi.sendSysEx(BMC_USB, reply, 18, true); - 3302: 9301 str r3, [sp, #4] - 3304: f8cd e008 str.w lr, [sp, #8] - 3308: f8cd e000 str.w lr, [sp] + 32f6: 9301 str r3, [sp, #4] + 32f8: f8cd e008 str.w lr, [sp, #8] + 32fc: f8cd e000 str.w lr, [sp] uint8_t reply[18] = - 330c: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} - 3310: c40f stmia r4!, {r0, r1, r2, r3} - 3312: f8dc 3000 ldr.w r3, [ip] + 3300: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 3304: c40f stmia r4!, {r0, r1, r2, r3} + 3306: f8dc 3000 ldr.w r3, [ip] midi.sendSysEx(BMC_USB, reply, 18, true); - 3316: 4671 mov r1, lr - 3318: aa09 add r2, sp, #36 ; 0x24 - 331a: f8d5 0270 ldr.w r0, [r5, #624] ; 0x270 + 330a: 4671 mov r1, lr + 330c: aa09 add r2, sp, #36 ; 0x24 + 330e: f8d5 0290 ldr.w r0, [r5, #656] ; 0x290 uint8_t reply[18] = - 331e: 8023 strh r3, [r4, #0] + 3312: 8023 strh r3, [r4, #0] midi.sendSysEx(BMC_USB, reply, 18, true); - 3320: 2312 movs r3, #18 - 3322: f01f fed1 bl 230c8 + 3314: 2312 movs r3, #18 + 3316: f01f ff3d bl 23194 if(callback.firstLoop){ - 3326: f8d6 38e8 ldr.w r3, [r6, #2280] ; 0x8e8 - 332a: b103 cbz r3, 332e + 331a: f8d6 38e8 ldr.w r3, [r6, #2280] ; 0x8e8 + 331e: b103 cbz r3, 3322 callback.firstLoop(); - 332c: 4798 blx r3 - 332e: f8da 3000 ldr.w r3, [sl] - 3332: 2100 movs r1, #0 - 3334: 4858 ldr r0, [pc, #352] ; (3498 ) + 3320: 4798 blx r3 + 3322: f8da 3000 ldr.w r3, [sl] + 3326: 2100 movs r1, #0 + 3328: 485b ldr r0, [pc, #364] ; (3498 ) elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 3336: f8c5 381c str.w r3, [r5, #2076] ; 0x81c - 333a: f8da 3000 ldr.w r3, [sl] - 333e: f8c5 3818 str.w r3, [r5, #2072] ; 0x818 - 3342: f029 f901 bl 2c548 - 3346: 4852 ldr r0, [pc, #328] ; (3490 ) - 3348: f026 fd94 bl 29e74 - 334c: 2115 movs r1, #21 - 334e: 4853 ldr r0, [pc, #332] ; (349c ) - 3350: f029 f8fa bl 2c548 - 3354: 484e ldr r0, [pc, #312] ; (3490 ) - 3356: f026 fd8d bl 29e74 - 335a: e595 b.n 2e88 + 332a: f8c5 383c str.w r3, [r5, #2108] ; 0x83c + 332e: f8da 3000 ldr.w r3, [sl] + 3332: f8c5 3838 str.w r3, [r5, #2104] ; 0x838 + 3336: f029 f97b bl 2c630 + 333a: 4855 ldr r0, [pc, #340] ; (3490 ) + 333c: f026 fe10 bl 29f60 + 3340: 2115 movs r1, #21 + 3342: 4856 ldr r0, [pc, #344] ; (349c ) + 3344: f029 f974 bl 2c630 + 3348: 4851 ldr r0, [pc, #324] ; (3490 ) + 334a: f026 fe09 bl 29f60 + 334e: e5a0 b.n 2e92 + 3350: f423 6380 bic.w r3, r3, #1024 ; 0x400 + 3354: f8c6 385c str.w r3, [r6, #2140] ; 0x85c + set(t_bank, preset, forced); + 3358: e70d b.n 3176 if(running && !reached()){ - 335c: f895 3824 ldrb.w r3, [r5, #2084] ; 0x824 - 3360: b14b cbz r3, 3376 + 335a: f895 3844 ldrb.w r3, [r5, #2116] ; 0x844 + 335e: b14b cbz r3, 3374 return (timeout>0 && (current >= timeout)); - 3362: f8d5 2828 ldr.w r2, [r5, #2088] ; 0x828 - 3366: f8d5 382c ldr.w r3, [r5, #2092] ; 0x82c - 336a: 2a00 cmp r2, #0 - 336c: f000 80e1 beq.w 3532 - 3370: 429a cmp r2, r3 - 3372: f200 80de bhi.w 3532 + 3360: f8d5 2848 ldr.w r2, [r5, #2120] ; 0x848 + 3364: f8d5 384c ldr.w r3, [r5, #2124] ; 0x84c + 3368: 2a00 cmp r2, #0 + 336a: f000 80e2 beq.w 3532 + 336e: 429a cmp r2, r3 + 3370: f200 80df bhi.w 3532 seconds++; - 3376: f8d5 3820 ldr.w r3, [r5, #2080] ; 0x820 + 3374: f8d5 3840 ldr.w r3, [r5, #2112] ; 0x840 reset(); } return false; } bool active(){ return (potIndex!=0xFFFF); - 337a: f8b5 2ada ldrh.w r2, [r5, #2778] ; 0xada - 337e: 3301 adds r3, #1 - 3380: f8c5 3820 str.w r3, [r5, #2080] ; 0x820 + 3378: f8b5 2afa ldrh.w r2, [r5, #2810] ; 0xafa + 337c: 3301 adds r3, #1 + 337e: f8c5 3840 str.w r3, [r5, #2112] ; 0x840 bitSet(flags, bit); - 3384: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 - 3388: f443 6300 orr.w r3, r3, #2048 ; 0x800 - 338c: f8a6 3860 strh.w r3, [r6, #2144] ; 0x860 + 3382: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + 3386: f443 6300 orr.w r3, r3, #2048 ; 0x800 + 338a: f8a6 3860 strh.w r3, [r6, #2144] ; 0x860 if(potCalibration.active() && globals.editorConnected()){ - 3390: f64f 73ff movw r3, #65535 ; 0xffff - 3394: 429a cmp r2, r3 - 3396: d004 beq.n 33a2 + 338e: f64f 73ff movw r3, #65535 ; 0xffff + 3392: 429a cmp r2, r3 + 3394: d004 beq.n 33a0 return bitRead(flags, bit); - 3398: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c - 339c: 0759 lsls r1, r3, #29 - 339e: f100 80bb bmi.w 3518 + 3396: f8d6 385c ldr.w r3, [r6, #2140] ; 0x85c + 339a: 0759 lsls r1, r3, #29 + 339c: f100 80bc bmi.w 3518 if(callback.oneSecondPassed){ - 33a2: f8d6 3870 ldr.w r3, [r6, #2160] ; 0x870 - 33a6: b173 cbz r3, 33c6 + 33a0: f8d6 3870 ldr.w r3, [r6, #2160] ; 0x870 + 33a4: b173 cbz r3, 33c4 if(active()){ - 33a8: f895 0824 ldrb.w r0, [r5, #2084] ; 0x824 - 33ac: b150 cbz r0, 33c4 + 33a6: f895 0844 ldrb.w r0, [r5, #2116] ; 0x844 + 33aa: b150 cbz r0, 33c2 return (timeout>0 && (current >= timeout)); - 33ae: f8d5 0828 ldr.w r0, [r5, #2088] ; 0x828 - 33b2: 2800 cmp r0, #0 - 33b4: f000 8145 beq.w 3642 - 33b8: f8d5 282c ldr.w r2, [r5, #2092] ; 0x82c + 33ac: f8d5 0848 ldr.w r0, [r5, #2120] ; 0x848 + 33b0: 2800 cmp r0, #0 + 33b2: f000 8146 beq.w 3642 + 33b6: f8d5 284c ldr.w r2, [r5, #2124] ; 0x84c return reached() ? 2 : 1; - 33bc: 4290 cmp r0, r2 - 33be: bf8c ite hi - 33c0: 2001 movhi r0, #1 - 33c2: 2002 movls r0, #2 + 33ba: 4290 cmp r0, r2 + 33bc: bf8c ite hi + 33be: 2001 movhi r0, #1 + 33c0: 2002 movls r0, #2 callback.oneSecondPassed(stopwatch.getState()); - 33c4: 4798 blx r3 + 33c2: 4798 blx r3 lastLoopsPerSecond = loopsPerSecond; - 33c6: f8d6 2864 ldr.w r2, [r6, #2148] ; 0x864 + 33c4: f8d6 2864 ldr.w r2, [r6, #2148] ; 0x864 loopsPerSecond = 0; - 33ca: 2300 movs r3, #0 + 33c8: 2300 movs r3, #0 lastLoopsPerSecond = loopsPerSecond; - 33cc: f8c6 2868 str.w r2, [r6, #2152] ; 0x868 + 33ca: f8c6 2868 str.w r2, [r6, #2152] ; 0x868 loopsPerSecond = 0; - 33d0: f8c6 3864 str.w r3, [r6, #2148] ; 0x864 + 33ce: f8c6 3864 str.w r3, [r6, #2148] ; 0x864 if(BMC_IS_EVEN(runTime.seconds)){ - 33d4: f8d5 3820 ldr.w r3, [r5, #2080] ; 0x820 - 33d8: f013 0401 ands.w r4, r3, #1 - 33dc: d139 bne.n 3452 + 33d2: f8d5 3840 ldr.w r3, [r5, #2112] ; 0x840 + 33d6: f013 0401 ands.w r4, r3, #1 + 33da: d139 bne.n 3450 bitSet(flags, bit); - 33de: f896 3964 ldrb.w r3, [r6, #2404] ; 0x964 - 33e2: f8da 2000 ldr.w r2, [sl] - 33e6: f043 0308 orr.w r3, r3, #8 - 33ea: f886 3964 strb.w r3, [r6, #2404] ; 0x964 + 33dc: f896 3968 ldrb.w r3, [r6, #2408] ; 0x968 + 33e0: f8da 2000 ldr.w r2, [sl] + 33e4: f043 0308 orr.w r3, r3, #8 + 33e8: f886 3968 strb.w r3, [r6, #2408] ; 0x968 return bitRead(flags, bit); - 33ee: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + 33ec: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 heartbeat = millis(); - 33f2: f8c5 2810 str.w r2, [r5, #2064] ; 0x810 + 33f0: f8c5 2830 str.w r2, [r5, #2096] ; 0x830 if(globals.getMetricsDebug()){ - 33f6: 079b lsls r3, r3, #30 - 33f8: d52d bpl.n 3456 - 33fa: 2103 movs r1, #3 - 33fc: 4828 ldr r0, [pc, #160] ; (34a0 ) - 33fe: f029 f8a3 bl 2c548 - 3402: 2101 movs r1, #1 - 3404: 4827 ldr r0, [pc, #156] ; (34a4 ) - 3406: f029 f89f bl 2c548 + 33f4: 079b lsls r3, r3, #30 + 33f6: d52d bpl.n 3454 + 33f8: 2103 movs r1, #3 + 33fa: 4829 ldr r0, [pc, #164] ; (34a0 ) + 33fc: f029 f918 bl 2c630 + 3400: 2101 movs r1, #1 + 3402: 4828 ldr r0, [pc, #160] ; (34a4 ) + 3404: f029 f914 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 340a: 4623 mov r3, r4 - 340c: 220a movs r2, #10 - 340e: f8d6 1868 ldr.w r1, [r6, #2152] ; 0x868 - 3412: 481f ldr r0, [pc, #124] ; (3490 ) - 3414: f026 fd4a bl 29eac - 3418: 2101 movs r1, #1 - 341a: 4822 ldr r0, [pc, #136] ; (34a4 ) - 341c: f029 f894 bl 2c548 - 3420: 2112 movs r1, #18 - 3422: 4821 ldr r0, [pc, #132] ; (34a8 ) - 3424: f029 f890 bl 2c548 - 3428: 2101 movs r1, #1 - 342a: 481e ldr r0, [pc, #120] ; (34a4 ) - 342c: f029 f88c bl 2c548 - 3430: 4623 mov r3, r4 - 3432: 220a movs r2, #10 - 3434: 4621 mov r1, r4 - 3436: 4816 ldr r0, [pc, #88] ; (3490 ) - 3438: f026 fd38 bl 29eac - 343c: 2101 movs r1, #1 - 343e: 4819 ldr r0, [pc, #100] ; (34a4 ) - 3440: f029 f882 bl 2c548 - 3444: 2103 movs r1, #3 - 3446: 4819 ldr r0, [pc, #100] ; (34ac ) - 3448: f029 f87e bl 2c548 + 3408: 4623 mov r3, r4 + 340a: 220a movs r2, #10 + 340c: f8d6 1868 ldr.w r1, [r6, #2152] ; 0x868 + 3410: 481f ldr r0, [pc, #124] ; (3490 ) + 3412: f026 fdc1 bl 29f98 + 3416: 2101 movs r1, #1 + 3418: 4822 ldr r0, [pc, #136] ; (34a4 ) + 341a: f029 f909 bl 2c630 + 341e: 2112 movs r1, #18 + 3420: 4821 ldr r0, [pc, #132] ; (34a8 ) + 3422: f029 f905 bl 2c630 + 3426: 2101 movs r1, #1 + 3428: 481e ldr r0, [pc, #120] ; (34a4 ) + 342a: f029 f901 bl 2c630 + 342e: 4623 mov r3, r4 + 3430: 220a movs r2, #10 + 3432: 4621 mov r1, r4 + 3434: 4816 ldr r0, [pc, #88] ; (3490 ) + 3436: f026 fdaf bl 29f98 + 343a: 2101 movs r1, #1 + 343c: 4819 ldr r0, [pc, #100] ; (34a4 ) + 343e: f029 f8f7 bl 2c630 + 3442: 2103 movs r1, #3 + 3444: 4819 ldr r0, [pc, #100] ; (34ac ) + 3446: f029 f8f3 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 344c: 4810 ldr r0, [pc, #64] ; (3490 ) - 344e: f026 fd11 bl 29e74 + 344a: 4811 ldr r0, [pc, #68] ; (3490 ) + 344c: f026 fd88 bl 29f60 if(heartbeat>0 && (unsigned long)millis()-heartbeat >= 150){ - 3452: f8d5 2810 ldr.w r2, [r5, #2064] ; 0x810 - 3456: f8da 3000 ldr.w r3, [sl] - 345a: f8c5 381c str.w r3, [r5, #2076] ; 0x81c - 345e: e619 b.n 3094 + 3450: f8d5 2830 ldr.w r2, [r5, #2096] ; 0x830 + 3454: f8da 3000 ldr.w r3, [sl] + 3458: f8c5 383c str.w r3, [r5, #2108] ; 0x83c + 345c: e623 b.n 30a6 + daw.update(); + 345e: f507 5349 add.w r3, r7, #12864 ; 0x3240 prevTime = 0; - 3460: 2400 movs r4, #0 - 3462: 4618 mov r0, r3 - 3464: 9305 str r3, [sp, #20] + 3462: 2400 movs r4, #0 + 3464: 4618 mov r0, r3 + 3466: f8c5 42a0 str.w r4, [r5, #672] ; 0x2a0 + 346a: 9305 str r3, [sp, #20] sendButtonCommand(delayCmd, delayCh, true); - 3466: 2301 movs r3, #1 - 3468: f8c5 4280 str.w r4, [r5, #640] ; 0x280 - 346c: 3010 adds r0, #16 + 346c: 2301 movs r3, #1 346e: 9400 str r4, [sp, #0] - 3470: f895 2286 ldrb.w r2, [r5, #646] ; 0x286 - 3474: f895 1284 ldrb.w r1, [r5, #644] ; 0x284 - 3478: f7fd fa2c bl 8d4 + 3470: 3010 adds r0, #16 + 3472: f895 22a6 ldrb.w r2, [r5, #678] ; 0x2a6 + 3476: f895 12a4 ldrb.w r1, [r5, #676] ; 0x2a4 + 347a: f7fd fa2b bl 8d4 delayCmd = -1; - 347c: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff - 3480: f8c5 4280 str.w r4, [r5, #640] ; 0x280 - 3484: f8c5 3284 str.w r3, [r5, #644] ; 0x284 - 3488: e530 b.n 2eec - 348a: bf00 nop - 348c: 200029b8 .word 0x200029b8 - 3490: 20004ba8 .word 0x20004ba8 - 3494: 20002964 .word 0x20002964 - 3498: 20003c58 .word 0x20003c58 - 349c: 200029a0 .word 0x200029a0 - 34a0: 200029d0 .word 0x200029d0 + 347e: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff + 3482: f8c5 42a0 str.w r4, [r5, #672] ; 0x2a0 + 3486: f8c5 32a4 str.w r3, [r5, #676] ; 0x2a4 + 348a: e539 b.n 2f00 + 348c: 200029c0 .word 0x200029c0 + 3490: 20004c68 .word 0x20004c68 + 3494: 2000296c .word 0x2000296c + 3498: 20003d18 .word 0x20003d18 + 349c: 200029a8 .word 0x200029a8 + 34a0: 200029d8 .word 0x200029d8 34a4: 200023ec .word 0x200023ec - 34a8: 200029d4 .word 0x200029d4 - 34ac: 200029e8 .word 0x200029e8 - 34b0: 2000bae8 .word 0x2000bae8 + 34a8: 200029dc .word 0x200029dc + 34ac: 200029f0 .word 0x200029f0 + 34b0: 2000bb08 .word 0x2000bb08 34b4: 200007ec .word 0x200007ec setList = n; 34b8: 2400 movs r4, #0 34ba: 210d movs r1, #13 - 34bc: 4866 ldr r0, [pc, #408] ; (3658 ) + 34bc: 4866 ldr r0, [pc, #408] ; (3658 ) 34be: 7014 strb r4, [r2, #0] - 34c0: f029 f842 bl 2c548 + 34c0: f029 f8b6 bl 2c630 34c4: 2101 movs r1, #1 - 34c6: 4865 ldr r0, [pc, #404] ; (365c ) - 34c8: f029 f83e bl 2c548 + 34c6: 4865 ldr r0, [pc, #404] ; (365c ) + 34c8: f029 f8b2 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } 34cc: 4623 mov r3, r4 34ce: 220a movs r2, #10 34d0: 4621 mov r1, r4 - 34d2: 4863 ldr r0, [pc, #396] ; (3660 ) - 34d4: f026 fcea bl 29eac + 34d2: 4863 ldr r0, [pc, #396] ; (3660 ) + 34d4: f026 fd60 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 34d8: 4861 ldr r0, [pc, #388] ; (3660 ) - 34da: f026 fccb bl 29e74 + 34d8: 4861 ldr r0, [pc, #388] ; (3660 ) + 34da: f026 fd41 bl 29f60 bitSet(flags, bit); - 34de: f895 321c ldrb.w r3, [r5, #540] ; 0x21c + 34de: f895 323c ldrb.w r3, [r5, #572] ; 0x23c 34e2: f043 0301 orr.w r3, r3, #1 - 34e6: f885 321c strb.w r3, [r5, #540] ; 0x21c + 34e6: f885 323c strb.w r3, [r5, #572] ; 0x23c return presets.midi.globals.settings.getSetListTriggerFirstSong(); - 34ea: f8d5 3200 ldr.w r3, [r5, #512] ; 0x200 + 34ea: f8d5 3220 ldr.w r3, [r5, #544] ; 0x220 34ee: 681b ldr r3, [r3, #0] 34f0: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 return bitRead(settings.data[2], 4); @@ -8208,58 +8221,58 @@ void BMC::update(){ 34f8: 68db ldr r3, [r3, #12] if(autoTriggerFirstSong()){ 34fa: 06db lsls r3, r3, #27 - 34fc: f57f aeef bpl.w 32de + 34fc: f57f aee9 bpl.w 32d2 setSong(0); 3500: 4621 mov r1, r4 3502: 9806 ldr r0, [sp, #24] 3504: f7fd f95e bl 7c4 - 3508: e6e9 b.n 32de + 3508: e6e3 b.n 32d2 if(cc) + 350a: 4956 ldr r1, [pc, #344] ; (3664 ) 350c: 5c8a ldrb r2, [r1, r2] 350e: 429a cmp r2, r3 snapshot = cc; 3510: bf88 it hi - 3512: f885 378b strbhi.w r3, [r5, #1931] ; 0x78b - 3516: e527 b.n 2f68 + 3512: f885 37ab strbhi.w r3, [r5, #1963] ; 0x7ab + 3516: e531 b.n 2f7c editor.utilitySendAnalogInputCalibrationActivity( 3518: 2301 movs r3, #1 351a: 4648 mov r0, r9 351c: 9301 str r3, [sp, #4] - 351e: f8b5 3ade ldrh.w r3, [r5, #2782] ; 0xade + 351e: f8b5 3afe ldrh.w r3, [r5, #2814] ; 0xafe 3522: 9300 str r3, [sp, #0] - 3524: f8b5 3adc ldrh.w r3, [r5, #2780] ; 0xadc - 3528: f895 1ad8 ldrb.w r1, [r5, #2776] ; 0xad8 - 352c: f01f fae4 bl 22af8 - 3530: e737 b.n 33a2 + 3524: f8b5 3afc ldrh.w r3, [r5, #2812] ; 0xafc + 3528: f895 1af8 ldrb.w r1, [r5, #2808] ; 0xaf8 + 352c: f01f fb54 bl 22bd8 + 3530: e736 b.n 33a0 current++; 3532: 3301 adds r3, #1 - 3534: f8c5 382c str.w r3, [r5, #2092] ; 0x82c + 3534: f8c5 384c str.w r3, [r5, #2124] ; 0x84c seconds++; - 3538: f895 3832 ldrb.w r3, [r5, #2098] ; 0x832 + 3538: f895 3852 ldrb.w r3, [r5, #2130] ; 0x852 353c: 3301 adds r3, #1 353e: b2db uxtb r3, r3 if(seconds>=60){ 3540: 2b3b cmp r3, #59 ; 0x3b - 3542: d86a bhi.n 361a + 3542: d86a bhi.n 361a seconds++; - 3544: f885 3832 strb.w r3, [r5, #2098] ; 0x832 - 3548: e715 b.n 3376 + 3544: f885 3852 strb.w r3, [r5, #2130] ; 0x852 + 3548: e714 b.n 3374 return (settings.data[2]>>22) & 0x0F; 354a: 68da ldr r2, [r3, #12] if(settings.getOutgoingListenerEnabled() > 0 && settings.getOutgoingProgramType() == 3){ 354c: f3c2 5283 ubfx r2, r2, #22, #4 3550: 2a03 cmp r2, #3 - 3552: f47f ade8 bne.w 3126 + 3552: f47f ade2 bne.w 311a return (settings.data[3]>>0) & 0xFF; 3556: 6919 ldr r1, [r3, #16] midi.sendControlChange(ports, channel, 0, 0); 3558: 2400 movs r4, #0 return song; - 355a: f8d5 220c ldr.w r2, [r5, #524] ; 0x20c + 355a: f8d5 222c ldr.w r2, [r5, #556] ; 0x22c 355e: f04f 0b01 mov.w fp, #1 return setList; - 3562: f8d5 3208 ldr.w r3, [r5, #520] ; 0x208 + 3562: f8d5 3228 ldr.w r3, [r5, #552] ; 0x228 3566: f507 50ce add.w r0, r7, #6592 ; 0x19c0 uint16_t songIndex = (setLists.get() * BMC_MAX_SETLISTS_SONGS) + setLists.getSong(); 356a: f892 8000 ldrb.w r8, [r2] @@ -8279,7 +8292,7 @@ void BMC::update(){ 3582: 9005 str r0, [sp, #20] 3584: e9cd 4400 strd r4, r4, [sp] 3588: e9cd 1206 strd r1, r2, [sp, #24] - 358c: f01f ff26 bl 233dc + 358c: f01f ff88 bl 234a0 midi.sendControlChange(ports, channel, 32, (songIndex >> 7) & 0x7F); 3590: 9805 ldr r0, [sp, #20] 3592: ea4f 13d8 mov.w r3, r8, lsr #7 @@ -8287,116 +8300,116 @@ void BMC::update(){ 359a: 9300 str r3, [sp, #0] 359c: 2320 movs r3, #32 359e: e9cd 4b01 strd r4, fp, [sp, #4] - 35a2: f01f ff1b bl 233dc + 35a2: f01f ff7d bl 234a0 midi.sendProgramChange(ports, channel, songIndex & 0x7F); 35a6: f008 037f and.w r3, r8, #127 ; 0x7f 35aa: 9805 ldr r0, [sp, #20] 35ac: 9400 str r4, [sp, #0] 35ae: e9dd 1206 ldrd r1, r2, [sp, #24] - 35b2: f01f fd99 bl 230e8 - 35b6: e5b6 b.n 3126 - delay(1); - 35b8: 2001 movs r0, #1 - 35ba: f026 ff87 bl 2a4cc - return settings.startup; - 35be: f8d6 27fc ldr.w r2, [r6, #2044] ; 0x7fc - set(t_bank, t_preset, forced); - 35c2: f243 10ec movw r0, #12780 ; 0x31ec - 35c6: 2300 movs r3, #0 - presets.setByIndex(settings.getStartupPreset()-1); - 35c8: 8e51 ldrh r1, [r2, #50] ; 0x32 - 35ca: 4438 add r0, r7 - 35cc: 3901 subs r1, #1 - 35ce: f001 0207 and.w r2, r1, #7 - 35d2: f3c1 01c4 ubfx r1, r1, #3, #5 - 35d6: f7fc fff3 bl 5c0 - } - 35da: e677 b.n 32cc + 35b2: f01f fdff bl 231b4 + 35b6: e5b0 b.n 311a delay(1); - 35dc: 2001 movs r0, #1 - 35de: f026 ff75 bl 2a4cc + 35b8: 2001 movs r0, #1 + 35ba: f026 fffb bl 2a5b4 } else { stop(); } } void start(){ if(ports.get()!=BMC_NONE && !outTimer.active()){ - 35e2: f895 31e8 ldrb.w r3, [r5, #488] ; 0x1e8 - 35e6: 2b00 cmp r3, #0 - 35e8: f43f ae83 beq.w 32f2 - 35ec: f8d5 31dc ldr.w r3, [r5, #476] ; 0x1dc - 35f0: 2b00 cmp r3, #0 - 35f2: f47f ae7e bne.w 32f2 - 35f6: 2118 movs r1, #24 - 35f8: 481b ldr r0, [pc, #108] ; (3668 ) - 35fa: f028 ffa5 bl 2c548 + 35be: f895 3208 ldrb.w r3, [r5, #520] ; 0x208 + 35c2: 2b00 cmp r3, #0 + 35c4: f43f ae8f beq.w 32e6 + 35c8: f8d5 31fc ldr.w r3, [r5, #508] ; 0x1fc + 35cc: 2b00 cmp r3, #0 + 35ce: f47f ae8a bne.w 32e6 + 35d2: 2118 movs r1, #24 + 35d4: 4824 ldr r0, [pc, #144] ; (3668 ) + 35d6: f029 f82b bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 35fe: 4818 ldr r0, [pc, #96] ; (3660 ) - 3600: f026 fc38 bl 29e74 - 3604: f8df a064 ldr.w sl, [pc, #100] ; 366c + 35da: 4821 ldr r0, [pc, #132] ; (3660 ) + 35dc: f026 fcc0 bl 29f60 + 35e0: f8df a088 ldr.w sl, [pc, #136] ; 366c interval = value; - 3608: f44f 7396 mov.w r3, #300 ; 0x12c - 360c: f8a5 31d8 strh.w r3, [r5, #472] ; 0x1d8 - 3610: f8da 3000 ldr.w r3, [sl] + 35e4: f44f 7396 mov.w r3, #300 ; 0x12c + 35e8: f8a5 31f8 strh.w r3, [r5, #504] ; 0x1f8 + 35ec: f8da 3000 ldr.w r3, [sl] prevTime = (unsigned long) _BMCTiming::get(); - 3614: f8c5 31dc str.w r3, [r5, #476] ; 0x1dc + 35f0: f8c5 31fc str.w r3, [r5, #508] ; 0x1fc } - 3618: e66d b.n 32f6 + 35f4: e679 b.n 32ea + delay(1); + 35f6: 2001 movs r0, #1 + 35f8: f026 ffdc bl 2a5b4 + return settings.startup; + 35fc: f8d6 27fc ldr.w r2, [r6, #2044] ; 0x7fc + set(t_bank, t_preset, forced); + 3600: f243 200c movw r0, #12812 ; 0x320c + 3604: 2300 movs r3, #0 + presets.setByIndex(settings.getStartupPreset()-1); + 3606: 8e51 ldrh r1, [r2, #50] ; 0x32 + 3608: 4438 add r0, r7 + 360a: 3901 subs r1, #1 + 360c: f001 0207 and.w r2, r1, #7 + 3610: f3c1 01c4 ubfx r1, r1, #3, #5 + 3614: f7fc ffd4 bl 5c0 + } + 3618: e651 b.n 32be minutes++; - 361a: f895 3831 ldrb.w r3, [r5, #2097] ; 0x831 + 361a: f895 3851 ldrb.w r3, [r5, #2129] ; 0x851 seconds = 0; 361e: 2200 movs r2, #0 minutes++; 3620: 3301 adds r3, #1 seconds = 0; - 3622: f885 2832 strb.w r2, [r5, #2098] ; 0x832 + 3622: f885 2852 strb.w r2, [r5, #2130] ; 0x852 minutes++; 3626: b2db uxtb r3, r3 if(minutes>=60){ 3628: 2b3b cmp r3, #59 ; 0x3b - 362a: d90c bls.n 3646 + 362a: d90c bls.n 3646 hours++; - 362c: f895 3830 ldrb.w r3, [r5, #2096] ; 0x830 + 362c: f895 3850 ldrb.w r3, [r5, #2128] ; 0x850 minutes = 0; - 3630: f885 2831 strb.w r2, [r5, #2097] ; 0x831 + 3630: f885 2851 strb.w r2, [r5, #2129] ; 0x851 hours++; 3634: 3301 adds r3, #1 3636: b2db uxtb r3, r3 if(hours>=24){ 3638: 2b17 cmp r3, #23 - 363a: d807 bhi.n 364c + 363a: d807 bhi.n 364c hours++; - 363c: f885 3830 strb.w r3, [r5, #2096] ; 0x830 - 3640: e699 b.n 3376 + 363c: f885 3850 strb.w r3, [r5, #2128] ; 0x850 + 3640: e698 b.n 3374 return reached() ? 2 : 1; 3642: 2001 movs r0, #1 - 3644: e6be b.n 33c4 + 3644: e6bd b.n 33c2 minutes++; - 3646: f885 3831 strb.w r3, [r5, #2097] ; 0x831 - 364a: e694 b.n 3376 + 3646: f885 3851 strb.w r3, [r5, #2129] ; 0x851 + 364a: e693 b.n 3374 hours = 0; - 364c: f885 2830 strb.w r2, [r5, #2096] ; 0x830 + 364c: f885 2850 strb.w r2, [r5, #2128] ; 0x850 current = 0; - 3650: f8c5 282c str.w r2, [r5, #2092] ; 0x82c - 3654: e68f b.n 3376 + 3650: f8c5 284c str.w r2, [r5, #2124] ; 0x84c + 3654: e68e b.n 3374 3656: bf00 nop - 3658: 20002974 .word 0x20002974 + 3658: 2000297c .word 0x2000297c 365c: 200023ec .word 0x200023ec - 3660: 20004ba8 .word 0x20004ba8 + 3660: 20004c68 .word 0x20004c68 3664: 20000f18 .word 0x20000f18 - 3668: 20002984 .word 0x20002984 - 366c: 2000bae8 .word 0x2000bae8 + 3668: 2000298c .word 0x2000298c + 366c: 2000bb08 .word 0x2000bb08 00003670 : size_t println(int n) { return print(n) + println(); } 3670: b510 push {r4, lr} 3672: 4604 mov r4, r0 size_t print(int n) { return print((long)n); } - 3674: f026 fbf2 bl 29e5c + 3674: f026 fc68 bl 29f48 size_t println(int n) { return print(n) + println(); } 3678: 4620 mov r0, r4 367a: e8bd 4010 ldmia.w sp!, {r4, lr} - 367e: f026 bbf9 b.w 29e74 + 367e: f026 bc6f b.w 29f60 #define SENSE_CODE_KEYED(_asc_, _fmt_) #define SENSE_CODE(_asc_, _ascq_, _msg_) case _asc_<<8 | _ascq_: return _msg_; ASC_NUM_LIST @@ -8410,7 +8423,7 @@ void BMC::update(){ return write((const uint8_t *)str, strlen(str)); } 368a: 4608 mov r0, r1 368c: 460c mov r4, r1 - 368e: f02b fa57 bl 2eb40 + 368e: f02b fad7 bl 2ec40 3692: 682b ldr r3, [r5, #0] 3694: 4602 mov r2, r0 3696: 4621 mov r1, r4 @@ -8429,7 +8442,7 @@ void BMC::update(){ return write((const uint8_t *)str, strlen(str)); } 36aa: 4608 mov r0, r1 36ac: 460d mov r5, r1 - 36ae: f02b fa47 bl 2eb40 + 36ae: f02b fac7 bl 2ec40 36b2: 6823 ldr r3, [r4, #0] 36b4: 4602 mov r2, r0 36b6: 4629 mov r1, r5 @@ -8439,7 +8452,7 @@ void BMC::update(){ size_t println(const char s[]) { return print(s) + println(); } 36be: 4620 mov r0, r4 36c0: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 36c4: f026 bbd6 b.w 29e74 + 36c4: f026 bc4c b.w 29f60 000036c8 : "line '#define BMC_DEBUG' from your config" @@ -8452,45 +8465,45 @@ void BMC::printDebugHeader(char* str){ 36ca: 2100 movs r1, #0 36cc: 4604 mov r4, r0 36ce: 4815 ldr r0, [pc, #84] ; (3724 ) - 36d0: f028 ff3a bl 2c548 + 36d0: f028 ffae bl 2c630 36d4: 4814 ldr r0, [pc, #80] ; (3728 ) - 36d6: f026 fbcd bl 29e74 + 36d6: f026 fc43 bl 29f60 36da: 2114 movs r1, #20 36dc: 4813 ldr r0, [pc, #76] ; (372c ) - 36de: f028 ff33 bl 2c548 + 36de: f028 ffa7 bl 2c630 36e2: 2101 movs r1, #1 36e4: 4812 ldr r0, [pc, #72] ; (3730 ) - 36e6: f028 ff2f bl 2c548 + 36e6: f028 ffa3 bl 2c630 size_t write(const char *str) { if (str == nullptr) return 0; 36ea: b134 cbz r4, 36fa return write((const uint8_t *)str, strlen(str)); } 36ec: 4620 mov r0, r4 - 36ee: f02b fa27 bl 2eb40 + 36ee: f02b faa7 bl 2ec40 36f2: 4601 mov r1, r0 36f4: 4620 mov r0, r4 - 36f6: f028 ff27 bl 2c548 + 36f6: f028 ff9b bl 2c630 36fa: 2101 movs r1, #1 36fc: 480c ldr r0, [pc, #48] ; (3730 ) - 36fe: f028 ff23 bl 2c548 + 36fe: f028 ff97 bl 2c630 3702: 2114 movs r1, #20 3704: 480b ldr r0, [pc, #44] ; (3734 ) - 3706: f028 ff1f bl 2c548 + 3706: f028 ff93 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } 370a: 4807 ldr r0, [pc, #28] ; (3728 ) - 370c: f026 fbb2 bl 29e74 + 370c: f026 fc28 bl 29f60 3710: 2100 movs r1, #0 3712: 4804 ldr r0, [pc, #16] ; (3724 ) - 3714: f028 ff18 bl 2c548 + 3714: f028 ff8c bl 2c630 3718: 4803 ldr r0, [pc, #12] ; (3728 ) BMC_PRINTLN(""); BMC_PRINTLN(">>>>>>>>>>>>>>>>>>>>",str,"<<<<<<<<<<<<<<<<<<<<"); BMC_PRINTLN(""); } 371a: e8bd 4010 ldmia.w sp!, {r4, lr} - 371e: f026 bba9 b.w 29e74 + 371e: f026 bc1f b.w 29f60 3722: bf00 nop - 3724: 20003c58 .word 0x20003c58 - 3728: 20004ba8 .word 0x20004ba8 + 3724: 20003d18 .word 0x20003d18 + 3728: 20004c68 .word 0x20004c68 372c: 2000251c .word 0x2000251c 3730: 200023ec .word 0x200023ec 3734: 20002534 .word 0x20002534 @@ -8534,82 +8547,82 @@ void BMC::printDebugHeader(char* str){ 3756: d510 bpl.n 377a 3758: 2105 movs r1, #5 375a: 4826 ldr r0, [pc, #152] ; (37f4 ) - 375c: f028 fef4 bl 2c548 + 375c: f028 ff68 bl 2c630 3760: 2101 movs r1, #1 3762: 4825 ldr r0, [pc, #148] ; (37f8 ) - 3764: f028 fef0 bl 2c548 + 3764: f028 ff64 bl 2c630 3768: e007 b.n 377a 376a: 2109 movs r1, #9 376c: 4823 ldr r0, [pc, #140] ; (37fc ) - 376e: f028 feeb bl 2c548 + 376e: f028 ff5f bl 2c630 3772: 2101 movs r1, #1 3774: 4820 ldr r0, [pc, #128] ; (37f8 ) - 3776: f028 fee7 bl 2c548 + 3776: f028 ff5b bl 2c630 BMC_PRINT("BLE, "); } return ""; 377a: 4921 ldr r1, [pc, #132] ; (3800 ) 377c: 4620 mov r0, r4 - 377e: f026 fcb7 bl 2a0f0 + 377e: f026 fd2b bl 2a1d8 } 3782: 4620 mov r0, r4 3784: bd10 pop {r4, pc} 3786: 2105 movs r1, #5 3788: 481e ldr r0, [pc, #120] ; (3804 ) - 378a: f028 fedd bl 2c548 + 378a: f028 ff51 bl 2c630 378e: 2101 movs r1, #1 3790: 4819 ldr r0, [pc, #100] ; (37f8 ) - 3792: f028 fed9 bl 2c548 + 3792: f028 ff4d bl 2c630 return ""; 3796: 491a ldr r1, [pc, #104] ; (3800 ) 3798: 4620 mov r0, r4 - 379a: f026 fca9 bl 2a0f0 + 379a: f026 fd1d bl 2a1d8 } 379e: 4620 mov r0, r4 37a0: bd10 pop {r4, pc} 37a2: 2109 movs r1, #9 37a4: 4818 ldr r0, [pc, #96] ; (3808 ) - 37a6: f028 fecf bl 2c548 + 37a6: f028 ff43 bl 2c630 37aa: 2101 movs r1, #1 37ac: 4812 ldr r0, [pc, #72] ; (37f8 ) - 37ae: f028 fecb bl 2c548 + 37ae: f028 ff3f bl 2c630 37b2: e7e2 b.n 377a 37b4: 2109 movs r1, #9 37b6: 4815 ldr r0, [pc, #84] ; (380c ) - 37b8: f028 fec6 bl 2c548 + 37b8: f028 ff3a bl 2c630 37bc: 2101 movs r1, #1 37be: 480e ldr r0, [pc, #56] ; (37f8 ) - 37c0: f028 fec2 bl 2c548 + 37c0: f028 ff36 bl 2c630 return ""; 37c4: 490e ldr r1, [pc, #56] ; (3800 ) 37c6: 4620 mov r0, r4 - 37c8: f026 fc92 bl 2a0f0 + 37c8: f026 fd06 bl 2a1d8 } 37cc: 4620 mov r0, r4 37ce: bd10 pop {r4, pc} 37d0: 2109 movs r1, #9 37d2: 480f ldr r0, [pc, #60] ; (3810 ) - 37d4: f028 feb8 bl 2c548 + 37d4: f028 ff2c bl 2c630 37d8: 2101 movs r1, #1 37da: 4807 ldr r0, [pc, #28] ; (37f8 ) - 37dc: f028 feb4 bl 2c548 + 37dc: f028 ff28 bl 2c630 37e0: e7cb b.n 377a 37e2: 210a movs r1, #10 37e4: 480b ldr r0, [pc, #44] ; (3814 ) - 37e6: f028 feaf bl 2c548 + 37e6: f028 ff23 bl 2c630 37ea: 2101 movs r1, #1 37ec: 4802 ldr r0, [pc, #8] ; (37f8 ) - 37ee: f028 feab bl 2c548 + 37ee: f028 ff1f bl 2c630 37f2: e7c2 b.n 377a - 37f4: 200038f4 .word 0x200038f4 + 37f4: 200039b4 .word 0x200039b4 37f8: 200023ec .word 0x200023ec - 37fc: 200038b8 .word 0x200038b8 - 3800: 20003c58 .word 0x20003c58 - 3804: 200038b0 .word 0x200038b0 - 3808: 200038dc .word 0x200038dc - 380c: 200038c4 .word 0x200038c4 - 3810: 200038d0 .word 0x200038d0 - 3814: 200038e8 .word 0x200038e8 + 37fc: 20003978 .word 0x20003978 + 3800: 20003d18 .word 0x20003d18 + 3804: 20003970 .word 0x20003970 + 3808: 2000399c .word 0x2000399c + 380c: 20003984 .word 0x20003984 + 3810: 20003990 .word 0x20003990 + 3814: 200039a8 .word 0x200039a8 00003818 : static String getMidiStatusName(uint8_t status){ @@ -8662,101 +8675,101 @@ void BMC::printDebugHeader(char* str){ } return "Unknown"; 38a6: 4926 ldr r1, [pc, #152] ; (3940 ) - 38a8: f026 fc22 bl 2a0f0 + 38a8: f026 fc96 bl 2a1d8 } 38ac: 4620 mov r0, r4 38ae: bd10 pop {r4, pc} return "Note Off"; 38b0: 4924 ldr r1, [pc, #144] ; (3944 ) - 38b2: f026 fc1d bl 2a0f0 + 38b2: f026 fc91 bl 2a1d8 38b6: e7f9 b.n 38ac return "Note On"; 38b8: 4923 ldr r1, [pc, #140] ; (3948 ) - 38ba: f026 fc19 bl 2a0f0 + 38ba: f026 fc8d bl 2a1d8 38be: e7f5 b.n 38ac return "After Touch Poly"; 38c0: 4922 ldr r1, [pc, #136] ; (394c ) - 38c2: f026 fc15 bl 2a0f0 + 38c2: f026 fc89 bl 2a1d8 38c6: e7f1 b.n 38ac return "Control Change"; 38c8: 4921 ldr r1, [pc, #132] ; (3950 ) - 38ca: f026 fc11 bl 2a0f0 + 38ca: f026 fc85 bl 2a1d8 38ce: e7ed b.n 38ac return "Program Change"; 38d0: 4920 ldr r1, [pc, #128] ; (3954 ) - 38d2: f026 fc0d bl 2a0f0 + 38d2: f026 fc81 bl 2a1d8 38d6: e7e9 b.n 38ac return "After Touch"; 38d8: 491f ldr r1, [pc, #124] ; (3958 ) - 38da: f026 fc09 bl 2a0f0 + 38da: f026 fc7d bl 2a1d8 38de: e7e5 b.n 38ac return "Pitch Bend"; 38e0: 491e ldr r1, [pc, #120] ; (395c ) - 38e2: f026 fc05 bl 2a0f0 + 38e2: f026 fc79 bl 2a1d8 38e6: e7e1 b.n 38ac return "SysEx"; 38e8: 491d ldr r1, [pc, #116] ; (3960 ) - 38ea: f026 fc01 bl 2a0f0 + 38ea: f026 fc75 bl 2a1d8 38ee: e7dd b.n 38ac return "Time Code Quarter Frame"; 38f0: 491c ldr r1, [pc, #112] ; (3964 ) - 38f2: f026 fbfd bl 2a0f0 + 38f2: f026 fc71 bl 2a1d8 38f6: e7d9 b.n 38ac return "Song Position"; 38f8: 491b ldr r1, [pc, #108] ; (3968 ) - 38fa: f026 fbf9 bl 2a0f0 + 38fa: f026 fc6d bl 2a1d8 38fe: e7d5 b.n 38ac return "Song Select"; 3900: 491a ldr r1, [pc, #104] ; (396c ) - 3902: f026 fbf5 bl 2a0f0 + 3902: f026 fc69 bl 2a1d8 3906: e7d1 b.n 38ac return "Tune Request"; 3908: 4919 ldr r1, [pc, #100] ; (3970 ) - 390a: f026 fbf1 bl 2a0f0 + 390a: f026 fc65 bl 2a1d8 390e: e7cd b.n 38ac return "Clock"; 3910: 4918 ldr r1, [pc, #96] ; (3974 ) - 3912: f026 fbed bl 2a0f0 + 3912: f026 fc61 bl 2a1d8 3916: e7c9 b.n 38ac return "Start"; 3918: 4917 ldr r1, [pc, #92] ; (3978 ) - 391a: f026 fbe9 bl 2a0f0 + 391a: f026 fc5d bl 2a1d8 391e: e7c5 b.n 38ac return "Continue"; 3920: 4916 ldr r1, [pc, #88] ; (397c ) - 3922: f026 fbe5 bl 2a0f0 + 3922: f026 fc59 bl 2a1d8 3926: e7c1 b.n 38ac return "Stop"; 3928: 4915 ldr r1, [pc, #84] ; (3980 ) - 392a: f026 fbe1 bl 2a0f0 + 392a: f026 fc55 bl 2a1d8 392e: e7bd b.n 38ac return "Active Sense"; 3930: 4914 ldr r1, [pc, #80] ; (3984 ) - 3932: f026 fbdd bl 2a0f0 + 3932: f026 fc51 bl 2a1d8 3936: e7b9 b.n 38ac return "System Reset"; 3938: 4913 ldr r1, [pc, #76] ; (3988 ) - 393a: f026 fbd9 bl 2a0f0 + 393a: f026 fc4d bl 2a1d8 393e: e7b5 b.n 38ac - 3940: 200039ec .word 0x200039ec - 3944: 20003950 .word 0x20003950 - 3948: 20003948 .word 0x20003948 - 394c: 20003978 .word 0x20003978 - 3950: 20003928 .word 0x20003928 - 3954: 20003938 .word 0x20003938 - 3958: 2000398c .word 0x2000398c - 395c: 2000396c .word 0x2000396c - 3960: 20003920 .word 0x20003920 - 3964: 20003998 .word 0x20003998 - 3968: 200039b0 .word 0x200039b0 - 396c: 200039c0 .word 0x200039c0 - 3970: 200039cc .word 0x200039cc - 3974: 200038fc .word 0x200038fc - 3978: 20003904 .word 0x20003904 - 397c: 2000390c .word 0x2000390c - 3980: 20003918 .word 0x20003918 - 3984: 2000395c .word 0x2000395c - 3988: 200039dc .word 0x200039dc + 3940: 20003aac .word 0x20003aac + 3944: 20003a10 .word 0x20003a10 + 3948: 20003a08 .word 0x20003a08 + 394c: 20003a38 .word 0x20003a38 + 3950: 200039e8 .word 0x200039e8 + 3954: 200039f8 .word 0x200039f8 + 3958: 20003a4c .word 0x20003a4c + 395c: 20003a2c .word 0x20003a2c + 3960: 200039e0 .word 0x200039e0 + 3964: 20003a58 .word 0x20003a58 + 3968: 20003a70 .word 0x20003a70 + 396c: 20003a80 .word 0x20003a80 + 3970: 20003a8c .word 0x20003a8c + 3974: 200039bc .word 0x200039bc + 3978: 200039c4 .word 0x200039c4 + 397c: 200039cc .word 0x200039cc + 3980: 200039d8 .word 0x200039d8 + 3984: 20003a1c .word 0x20003a1c + 3988: 20003a9c .word 0x20003a9c 0000398c : #endif @@ -8770,24 +8783,24 @@ void BMC::printDebugHeader(char* str){ 3992: b087 sub sp, #28 3994: 4605 mov r5, r0 3996: 4854 ldr r0, [pc, #336] ; (3ae8 ) - 3998: f028 fdd6 bl 2c548 + 3998: f028 fe4a bl 2c630 399c: 4853 ldr r0, [pc, #332] ; (3aec ) - 399e: f026 fa69 bl 29e74 + 399e: f026 fadf bl 29f60 39a2: 211c movs r1, #28 39a4: 4852 ldr r0, [pc, #328] ; (3af0 ) - 39a6: f028 fdcf bl 2c548 + 39a6: f028 fe43 bl 2c630 39aa: 4850 ldr r0, [pc, #320] ; (3aec ) - 39ac: f026 fa62 bl 29e74 + 39ac: f026 fad8 bl 29f60 39b0: 211c movs r1, #28 39b2: 4850 ldr r0, [pc, #320] ; (3af4 ) - 39b4: f028 fdc8 bl 2c548 + 39b4: f028 fe3c bl 2c630 39b8: 484c ldr r0, [pc, #304] ; (3aec ) - 39ba: f026 fa5b bl 29e74 + 39ba: f026 fad1 bl 29f60 39be: 211c movs r1, #28 39c0: 484b ldr r0, [pc, #300] ; (3af0 ) - 39c2: f028 fdc1 bl 2c548 + 39c2: f028 fe35 bl 2c630 39c6: 4849 ldr r0, [pc, #292] ; (3aec ) - 39c8: f026 fa54 bl 29e74 + 39c8: f026 faca bl 29f60 Serial.println(""); Serial.println("----------------------------"); Serial.println(" DEVICES DATA "); @@ -8821,7 +8834,7 @@ void BMC::printDebugHeader(char* str){ 39f0: e9cd 3301 strd r3, r3, [sp, #4] 39f4: e9cd 3303 strd r3, r3, [sp, #12] strcpy(buff, devicesData[i].label); - 39f8: f02a fdec bl 2e5d4 + 39f8: f02a fe60 bl 2e6bc } else { sprintf(buff, "%u", t_value+(d.useOffset ? d.offset : 0)); } @@ -8845,18 +8858,18 @@ void BMC::printDebugHeader(char* str){ return write((const uint8_t *)str, strlen(str)); } 3a18: 4620 mov r0, r4 3a1a: 701a strb r2, [r3, #0] - 3a1c: f02b f890 bl 2eb40 + 3a1c: f02b f910 bl 2ec40 3a20: 4601 mov r1, r0 3a22: 4620 mov r0, r4 - 3a24: f028 fd90 bl 2c548 + 3a24: f028 fe04 bl 2c630 3a28: 2100 movs r1, #0 3a2a: 482f ldr r0, [pc, #188] ; (3ae8 ) for(uint8_t i = 0 ; i < totalDevices ; i++){ 3a2c: 3601 adds r6, #1 - 3a2e: f028 fd8b bl 2c548 + 3a2e: f028 fdff bl 2c630 size_t println(const char s[]) { return print(s) + println(); } 3a32: 4638 mov r0, r7 - 3a34: f026 fa1e bl 29e74 + 3a34: f026 fa94 bl 29f60 3a38: f895 3047 ldrb.w r3, [r5, #71] ; 0x47 3a3c: fa5f fb86 uxtb.w fp, r6 3a40: 455b cmp r3, fp @@ -8870,10 +8883,10 @@ void BMC::printDebugHeader(char* str){ size_t print(int n) { return print((long)n); } 3a56: f8ba 105e ldrh.w r1, [sl, #94] ; 0x5e 3a5a: 4638 mov r0, r7 - 3a5c: f026 f9fe bl 29e5c + 3a5c: f026 fa74 bl 29f48 3a60: 2101 movs r1, #1 3a62: 4640 mov r0, r8 - 3a64: f028 fd70 bl 2c548 + 3a64: f028 fde4 bl 2c630 if(devicesData[i].hardware){ 3a68: f89a 3061 ldrb.w r3, [sl, #97] ; 0x61 3a6c: b993 cbnz r3, 3a94 @@ -8892,14 +8905,14 @@ void BMC::printDebugHeader(char* str){ 3a82: 186c adds r4, r5, r1 return write((const uint8_t *)str, strlen(str)); } 3a84: 4620 mov r0, r4 - 3a86: f02b f85b bl 2eb40 + 3a86: f02b f8db bl 2ec40 3a8a: 4601 mov r1, r0 3a8c: 4620 mov r0, r4 - 3a8e: f028 fd5b bl 2c548 + 3a8e: f028 fdcf bl 2c630 3a92: e7c9 b.n 3a28 3a94: 2101 movs r1, #1 3a96: 4648 mov r0, r9 - 3a98: f028 fd56 bl 2c548 + 3a98: f028 fdca bl 2c630 if(devicesData[i].global && devicesData[i].hardware){ 3a9c: f89a 3060 ldrb.w r3, [sl, #96] ; 0x60 3aa0: 2b00 cmp r3, #0 @@ -8909,22 +8922,22 @@ void BMC::printDebugHeader(char* str){ 3aaa: d0e0 beq.n 3a6e 3aac: 2107 movs r1, #7 3aae: 4812 ldr r0, [pc, #72] ; (3af8 ) - 3ab0: f028 fd4a bl 2c548 + 3ab0: f028 fdbe bl 2c630 3ab4: e7db b.n 3a6e 3ab6: 211c movs r1, #28 3ab8: 480d ldr r0, [pc, #52] ; (3af0 ) - 3aba: f028 fd45 bl 2c548 + 3aba: f028 fdb9 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } 3abe: 480b ldr r0, [pc, #44] ; (3aec ) - 3ac0: f026 f9d8 bl 29e74 + 3ac0: f026 fa4e bl 29f60 3ac4: 210d movs r1, #13 3ac6: 480d ldr r0, [pc, #52] ; (3afc ) - 3ac8: f028 fd3e bl 2c548 + 3ac8: f028 fdb2 bl 2c630 3acc: 4807 ldr r0, [pc, #28] ; (3aec ) - 3ace: f026 f9d1 bl 29e74 + 3ace: f026 fa47 bl 29f60 3ad2: 211c movs r1, #28 3ad4: 4806 ldr r0, [pc, #24] ; (3af0 ) - 3ad6: f028 fd37 bl 2c548 + 3ad6: f028 fdab bl 2c630 3ada: 4804 ldr r0, [pc, #16] ; (3aec ) Serial.println(""); } @@ -8934,14 +8947,14 @@ void BMC::printDebugHeader(char* str){ } 3adc: b007 add sp, #28 3ade: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 3ae2: f026 b9c7 b.w 29e74 + 3ae2: f026 ba3d b.w 29f60 3ae6: bf00 nop - 3ae8: 20003c58 .word 0x20003c58 - 3aec: 20004ba8 .word 0x20004ba8 - 3af0: 20003c1c .word 0x20003c1c - 3af4: 20003c3c .word 0x20003c3c - 3af8: 20003c6c .word 0x20003c6c - 3afc: 20003c5c .word 0x20003c5c + 3ae8: 20003d18 .word 0x20003d18 + 3aec: 20004c68 .word 0x20004c68 + 3af0: 20003cdc .word 0x20003cdc + 3af4: 20003cfc .word 0x20003cfc + 3af8: 20003d2c .word 0x20003d2c + 3afc: 20003d1c .word 0x20003d1c 3b00: 200023ec .word 0x200023ec 3b04: 20001c94 .word 0x20001c94 @@ -8957,148 +8970,148 @@ void BMC::printBoardInfo(){ 3b0c: 210c movs r1, #12 3b0e: 4861 ldr r0, [pc, #388] ; (3c94 ) 3b10: 4c61 ldr r4, [pc, #388] ; (3c98 ) - 3b12: f028 fd19 bl 2c548 + 3b12: f028 fd8d bl 2c630 3b16: 2101 movs r1, #1 3b18: 4628 mov r0, r5 - 3b1a: f028 fd15 bl 2c548 + 3b1a: f028 fd89 bl 2c630 3b1e: 2109 movs r1, #9 3b20: 485e ldr r0, [pc, #376] ; (3c9c ) - 3b22: f028 fd11 bl 2c548 + 3b22: f028 fd85 bl 2c630 3b26: 4620 mov r0, r4 - 3b28: f026 f9a4 bl 29e74 + 3b28: f026 fa1a bl 29f60 3b2c: 2119 movs r1, #25 3b2e: 485c ldr r0, [pc, #368] ; (3ca0 ) - 3b30: f028 fd0a bl 2c548 + 3b30: f028 fd7e bl 2c630 3b34: 2101 movs r1, #1 3b36: 4628 mov r0, r5 3b38: 4e5a ldr r6, [pc, #360] ; (3ca4 ) - 3b3a: f028 fd05 bl 2c548 + 3b3a: f028 fd79 bl 2c630 size_t print(int n) { return print((long)n); } 3b3e: 219e movs r1, #158 ; 0x9e 3b40: 4620 mov r0, r4 - 3b42: f026 f98b bl 29e5c + 3b42: f026 fa01 bl 29f48 size_t println(int n) { return print(n) + println(); } 3b46: 4620 mov r0, r4 - 3b48: f026 f994 bl 29e74 + 3b48: f026 fa0a bl 29f60 3b4c: 2107 movs r1, #7 3b4e: 4856 ldr r0, [pc, #344] ; (3ca8 ) - 3b50: f028 fcfa bl 2c548 + 3b50: f028 fd6e bl 2c630 3b54: 2103 movs r1, #3 3b56: 4855 ldr r0, [pc, #340] ; (3cac ) - 3b58: f028 fcf6 bl 2c548 + 3b58: f028 fd6a bl 2c630 3b5c: 2103 movs r1, #3 3b5e: 4854 ldr r0, [pc, #336] ; (3cb0 ) - 3b60: f028 fcf2 bl 2c548 + 3b60: f028 fd66 bl 2c630 size_t print(double n, int digits = 2) { return printFloat(n, digits); } 3b64: 2102 movs r1, #2 3b66: 4620 mov r0, r4 3b68: ed9f 0b47 vldr d0, [pc, #284] ; 3c88 - 3b6c: f026 f9b4 bl 29ed8 + 3b6c: f026 fa28 bl 29fc0 3b70: 2105 movs r1, #5 3b72: 4850 ldr r0, [pc, #320] ; (3cb4 ) - 3b74: f028 fce8 bl 2c548 + 3b74: f028 fd5c bl 2c630 size_t print(int n) { return print((long)n); } 3b78: 494f ldr r1, [pc, #316] ; (3cb8 ) 3b7a: 4620 mov r0, r4 - 3b7c: f026 f96e bl 29e5c + 3b7c: f026 f9e4 bl 29f48 3b80: 2101 movs r1, #1 3b82: 484e ldr r0, [pc, #312] ; (3cbc ) - 3b84: f028 fce0 bl 2c548 + 3b84: f028 fd54 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } 3b88: 4620 mov r0, r4 - 3b8a: f026 f973 bl 29e74 + 3b8a: f026 f9e9 bl 29f60 3b8e: 2104 movs r1, #4 3b90: 484b ldr r0, [pc, #300] ; (3cc0 ) - 3b92: f028 fcd9 bl 2c548 + 3b92: f028 fd4d bl 2c630 3b96: 2101 movs r1, #1 3b98: 4628 mov r0, r5 - 3b9a: f028 fcd5 bl 2c548 + 3b9a: f028 fd49 bl 2c630 size_t print(int n) { return print((long)n); } 3b9e: f44f 217a mov.w r1, #1024000 ; 0xfa000 3ba2: 4620 mov r0, r4 - 3ba4: f026 f95a bl 29e5c + 3ba4: f026 f9d0 bl 29f48 3ba8: 2101 movs r1, #1 3baa: 4628 mov r0, r5 - 3bac: f028 fccc bl 2c548 + 3bac: f028 fd40 bl 2c630 3bb0: 2105 movs r1, #5 3bb2: 4630 mov r0, r6 - 3bb4: f028 fcc8 bl 2c548 + 3bb4: f028 fd3c bl 2c630 size_t println(const char s[]) { return print(s) + println(); } 3bb8: 4620 mov r0, r4 - 3bba: f026 f95b bl 29e74 + 3bba: f026 f9d1 bl 29f60 3bbe: 2107 movs r1, #7 3bc0: 4840 ldr r0, [pc, #256] ; (3cc4 ) - 3bc2: f028 fcc1 bl 2c548 + 3bc2: f028 fd35 bl 2c630 3bc6: 2101 movs r1, #1 3bc8: 4628 mov r0, r5 - 3bca: f028 fcbd bl 2c548 + 3bca: f028 fd31 bl 2c630 size_t print(int n) { return print((long)n); } 3bce: f44f 6187 mov.w r1, #1080 ; 0x438 3bd2: 4620 mov r0, r4 - 3bd4: f026 f942 bl 29e5c + 3bd4: f026 f9b8 bl 29f48 3bd8: 2101 movs r1, #1 3bda: 4628 mov r0, r5 - 3bdc: f028 fcb4 bl 2c548 + 3bdc: f028 fd28 bl 2c630 3be0: 2105 movs r1, #5 3be2: 4630 mov r0, r6 - 3be4: f028 fcb0 bl 2c548 + 3be4: f028 fd24 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } 3be8: 4620 mov r0, r4 - 3bea: f026 f943 bl 29e74 + 3bea: f026 f9b9 bl 29f60 3bee: 2106 movs r1, #6 3bf0: 4835 ldr r0, [pc, #212] ; (3cc8 ) - 3bf2: f028 fca9 bl 2c548 + 3bf2: f028 fd1d bl 2c630 3bf6: 2101 movs r1, #1 3bf8: 4628 mov r0, r5 - 3bfa: f028 fca5 bl 2c548 + 3bfa: f028 fd19 bl 2c630 size_t print(unsigned int n) { return printNumber(n, 10, 0); } 3bfe: 2300 movs r3, #0 3c00: 220a movs r2, #10 3c02: f241 71fc movw r1, #6140 ; 0x17fc 3c06: 4620 mov r0, r4 - 3c08: f026 f950 bl 29eac + 3c08: f026 f9c6 bl 29f98 3c0c: 2101 movs r1, #1 3c0e: 4628 mov r0, r5 - 3c10: f028 fc9a bl 2c548 + 3c10: f028 fd0e bl 2c630 3c14: 2105 movs r1, #5 3c16: 4630 mov r0, r6 3c18: 4e2c ldr r6, [pc, #176] ; (3ccc ) - 3c1a: f028 fc95 bl 2c548 + 3c1a: f028 fd09 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } 3c1e: 4620 mov r0, r4 - 3c20: f026 f928 bl 29e74 + 3c20: f026 f99e bl 29f60 3c24: 2109 movs r1, #9 3c26: 482a ldr r0, [pc, #168] ; (3cd0 ) - 3c28: f028 fc8e bl 2c548 + 3c28: f028 fd02 bl 2c630 3c2c: 2101 movs r1, #1 3c2e: 4628 mov r0, r5 - 3c30: f028 fc8a bl 2c548 + 3c30: f028 fcfe bl 2c630 3c34: 2103 movs r1, #3 3c36: 4630 mov r0, r6 - 3c38: f028 fc86 bl 2c548 + 3c38: f028 fcfa bl 2c630 3c3c: 4620 mov r0, r4 - 3c3e: f026 f919 bl 29e74 + 3c3e: f026 f98f bl 29f60 3c42: 2108 movs r1, #8 3c44: 4823 ldr r0, [pc, #140] ; (3cd4 ) - 3c46: f028 fc7f bl 2c548 + 3c46: f028 fcf3 bl 2c630 3c4a: 2101 movs r1, #1 3c4c: 4628 mov r0, r5 - 3c4e: f028 fc7b bl 2c548 + 3c4e: f028 fcef bl 2c630 3c52: 2103 movs r1, #3 3c54: 4630 mov r0, r6 - 3c56: f028 fc77 bl 2c548 + 3c56: f028 fceb bl 2c630 3c5a: 4620 mov r0, r4 - 3c5c: f026 f90a bl 29e74 + 3c5c: f026 f980 bl 29f60 3c60: 2116 movs r1, #22 3c62: 481d ldr r0, [pc, #116] ; (3cd8 ) - 3c64: f028 fc70 bl 2c548 + 3c64: f028 fce4 bl 2c630 3c68: 2101 movs r1, #1 3c6a: 4628 mov r0, r5 - 3c6c: f028 fc6c bl 2c548 + 3c6c: f028 fce0 bl 2c630 size_t print(int n) { return print((long)n); } 3c70: 4620 mov r0, r4 3c72: 2107 movs r1, #7 - 3c74: f026 f8f2 bl 29e5c + 3c74: f026 f968 bl 29f48 size_t println(int n) { return print(n) + println(); } 3c78: 4620 mov r0, r4 #if defined(BMC_USE_ON_BOARD_EDITOR) @@ -9108,14 +9121,14 @@ void BMC::printBoardInfo(){ } 3c7a: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 3c7e: f026 b8f9 b.w 29e74 + 3c7e: f026 b96f b.w 29f60 3c82: bf00 nop 3c84: f3af 8000 nop.w 3c88: 00000000 .word 0x00000000 3c8c: 4062c000 .word 0x4062c000 3c90: 200023ec .word 0x200023ec 3c94: 200023f0 .word 0x200023f0 - 3c98: 20004ba8 .word 0x20004ba8 + 3c98: 20004c68 .word 0x20004c68 3c9c: 20002400 .word 0x20002400 3ca0: 2000240c .word 0x2000240c 3ca4: 20002448 .word 0x20002448 @@ -9124,7 +9137,7 @@ void BMC::printBoardInfo(){ 3cb0: 20002434 .word 0x20002434 3cb4: 20002438 .word 0x20002438 3cb8: 08f0d180 .word 0x08f0d180 - 3cbc: 20002b14 .word 0x20002b14 + 3cbc: 20002b1c .word 0x20002b1c 3cc0: 20002440 .word 0x20002440 3cc4: 20002450 .word 0x20002450 3cc8: 20002458 .word 0x20002458 @@ -9144,7 +9157,7 @@ public: void setup(){ delay(1000); 3ce2: f44f 707a mov.w r0, #1000 ; 0x3e8 - 3ce6: f026 fbf1 bl 2a4cc + 3ce6: f026 fc65 bl 2a5b4 flags = 0; 3cea: 2600 movs r6, #0 3cec: f507 5340 add.w r3, r7, #12288 ; 0x3000 @@ -9152,113 +9165,113 @@ public: size_t println(const char s[]) { return print(s) + println(); } 3cf4: 4c49 ldr r4, [pc, #292] ; (3e1c ) 3cf6: 4631 mov r1, r6 - 3cf8: f883 6b14 strb.w r6, [r3, #2836] ; 0xb14 + 3cf8: f883 6b34 strb.w r6, [r3, #2868] ; 0xb34 3cfc: 4648 mov r0, r9 3cfe: f8df 8148 ldr.w r8, [pc, #328] ; 3e48 - 3d02: f028 fc21 bl 2c548 + 3d02: f028 fc95 bl 2c630 3d06: 4620 mov r0, r4 3d08: 4d45 ldr r5, [pc, #276] ; (3e20 ) - 3d0a: f026 f8b3 bl 29e74 + 3d0a: f026 f929 bl 29f60 3d0e: 212e movs r1, #46 ; 0x2e 3d10: 4640 mov r0, r8 - 3d12: f028 fc19 bl 2c548 + 3d12: f028 fc8d bl 2c630 3d16: 4620 mov r0, r4 - 3d18: f026 f8ac bl 29e74 + 3d18: f026 f922 bl 29f60 3d1c: 212e movs r1, #46 ; 0x2e 3d1e: 4640 mov r0, r8 - 3d20: f028 fc12 bl 2c548 + 3d20: f028 fc86 bl 2c630 3d24: 4620 mov r0, r4 - 3d26: f026 f8a5 bl 29e74 + 3d26: f026 f91b bl 29f60 3d2a: 2101 movs r1, #1 3d2c: 4628 mov r0, r5 - 3d2e: f028 fc0b bl 2c548 + 3d2e: f028 fc7f bl 2c630 3d32: 211c movs r1, #28 3d34: 483b ldr r0, [pc, #236] ; (3e24 ) - 3d36: f028 fc07 bl 2c548 + 3d36: f028 fc7b bl 2c630 3d3a: 4620 mov r0, r4 - 3d3c: f026 f89a bl 29e74 + 3d3c: f026 f910 bl 29f60 3d40: 2101 movs r1, #1 3d42: 4628 mov r0, r5 - 3d44: f028 fc00 bl 2c548 + 3d44: f028 fc74 bl 2c630 3d48: 212f movs r1, #47 ; 0x2f 3d4a: 4837 ldr r0, [pc, #220] ; (3e28 ) - 3d4c: f028 fbfc bl 2c548 + 3d4c: f028 fc70 bl 2c630 3d50: 4620 mov r0, r4 - 3d52: f026 f88f bl 29e74 + 3d52: f026 f905 bl 29f60 3d56: 2101 movs r1, #1 3d58: 4628 mov r0, r5 - 3d5a: f028 fbf5 bl 2c548 + 3d5a: f028 fc69 bl 2c630 3d5e: 2122 movs r1, #34 ; 0x22 3d60: 4832 ldr r0, [pc, #200] ; (3e2c ) - 3d62: f028 fbf1 bl 2c548 + 3d62: f028 fc65 bl 2c630 3d66: 4620 mov r0, r4 - 3d68: f026 f884 bl 29e74 + 3d68: f026 f8fa bl 29f60 3d6c: 2101 movs r1, #1 3d6e: 4628 mov r0, r5 - 3d70: f028 fbea bl 2c548 + 3d70: f028 fc5e bl 2c630 3d74: 2114 movs r1, #20 3d76: 482e ldr r0, [pc, #184] ; (3e30 ) - 3d78: f028 fbe6 bl 2c548 + 3d78: f028 fc5a bl 2c630 3d7c: 4620 mov r0, r4 - 3d7e: f026 f879 bl 29e74 + 3d7e: f026 f8ef bl 29f60 3d82: 2101 movs r1, #1 3d84: 4628 mov r0, r5 - 3d86: f028 fbdf bl 2c548 + 3d86: f028 fc53 bl 2c630 3d8a: 2127 movs r1, #39 ; 0x27 3d8c: 4829 ldr r0, [pc, #164] ; (3e34 ) - 3d8e: f028 fbdb bl 2c548 + 3d8e: f028 fc4f bl 2c630 3d92: 4620 mov r0, r4 - 3d94: f026 f86e bl 29e74 + 3d94: f026 f8e4 bl 29f60 3d98: 2101 movs r1, #1 3d9a: 4628 mov r0, r5 - 3d9c: f028 fbd4 bl 2c548 + 3d9c: f028 fc48 bl 2c630 3da0: 2124 movs r1, #36 ; 0x24 3da2: 4825 ldr r0, [pc, #148] ; (3e38 ) - 3da4: f028 fbd0 bl 2c548 + 3da4: f028 fc44 bl 2c630 3da8: 4620 mov r0, r4 - 3daa: f026 f863 bl 29e74 + 3daa: f026 f8d9 bl 29f60 3dae: 2101 movs r1, #1 3db0: 4628 mov r0, r5 - 3db2: f028 fbc9 bl 2c548 + 3db2: f028 fc3d bl 2c630 3db6: 2126 movs r1, #38 ; 0x26 3db8: 4820 ldr r0, [pc, #128] ; (3e3c ) - 3dba: f028 fbc5 bl 2c548 + 3dba: f028 fc39 bl 2c630 3dbe: 4620 mov r0, r4 - 3dc0: f026 f858 bl 29e74 + 3dc0: f026 f8ce bl 29f60 3dc4: 4628 mov r0, r5 3dc6: 2101 movs r1, #1 - 3dc8: f028 fbbe bl 2c548 + 3dc8: f028 fc32 bl 2c630 3dcc: 2129 movs r1, #41 ; 0x29 3dce: 481c ldr r0, [pc, #112] ; (3e40 ) - 3dd0: f028 fbba bl 2c548 + 3dd0: f028 fc2e bl 2c630 3dd4: 4620 mov r0, r4 - 3dd6: f026 f84d bl 29e74 + 3dd6: f026 f8c3 bl 29f60 3dda: 212e movs r1, #46 ; 0x2e 3ddc: 4640 mov r0, r8 - 3dde: f028 fbb3 bl 2c548 + 3dde: f028 fc27 bl 2c630 3de2: 4620 mov r0, r4 - 3de4: f026 f846 bl 29e74 + 3de4: f026 f8bc bl 29f60 3de8: 212e movs r1, #46 ; 0x2e 3dea: 4640 mov r0, r8 - 3dec: f028 fbac bl 2c548 + 3dec: f028 fc20 bl 2c630 3df0: 4620 mov r0, r4 - 3df2: f026 f83f bl 29e74 + 3df2: f026 f8b5 bl 29f60 3df6: 4631 mov r1, r6 3df8: 4648 mov r0, r9 - 3dfa: f028 fba5 bl 2c548 + 3dfa: f028 fc19 bl 2c630 3dfe: 4620 mov r0, r4 - 3e00: f026 f838 bl 29e74 + 3e00: f026 f8ae bl 29f60 printBoardInfo(); 3e04: 4638 mov r0, r7 3e06: f7ff fe7f bl 3b08 3e0a: 4631 mov r1, r6 3e0c: 4648 mov r0, r9 - 3e0e: f028 fb9b bl 2c548 + 3e0e: f028 fc0f bl 2c630 3e12: 4620 mov r0, r4 } 3e14: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 3e18: f026 b82c b.w 29e74 - 3e1c: 20004ba8 .word 0x20004ba8 + 3e18: f026 b8a2 b.w 29f60 + 3e1c: 20004c68 .word 0x20004c68 3e20: 200023ec .word 0x200023ec 3e24: 20001abc .word 0x20001abc 3e28: 20001adc .word 0x20001adc @@ -9268,8 +9281,8 @@ public: 3e38: 20001b70 .word 0x20001b70 3e3c: 20001b98 .word 0x20001b98 3e40: 20001bc0 .word 0x20001bc0 - 3e44: 20003c58 .word 0x20003c58 - 3e48: 20002758 .word 0x20002758 + 3e44: 20003d18 .word 0x20003d18 + 3e48: 20002760 .word 0x20002760 00003e4c : void BMC::readDebug(){ @@ -9287,7 +9300,7 @@ void BMC::readDebug(){ 3e56: 4606 mov r6, r0 3e58: f500 5540 add.w r5, r0, #12288 ; 0x3000 virtual int available() { return usb_seremu_available(); } - 3e5c: f028 fa58 bl 2c310 + 3e5c: f028 facc bl 2c3f8 while(Serial.available() > 0 && !readFlag(BMC_SERIAL_MONITOR_FLAG_READY)){ 3e60: 2800 cmp r0, #0 } @@ -9296,13 +9309,13 @@ private: char debugChars[BMC_SERIAL_MONITOR_MAX_CHARS]; bool readFlag(uint8_t t_offset){ return bitRead(flags, t_offset); - 3e62: f895 3b14 ldrb.w r3, [r5, #2836] ; 0xb14 + 3e62: f895 3b34 ldrb.w r3, [r5, #2868] ; 0xb34 while(Serial.available() > 0 && !readFlag(BMC_SERIAL_MONITOR_FLAG_READY)){ 3e66: dd18 ble.n 3e9a 3e68: f013 0801 ands.w r8, r3, #1 3e6c: d12a bne.n 3ec4 virtual int read() { return usb_seremu_getchar(); } - 3e6e: f028 f9f9 bl 2c264 + 3e6e: f028 fa6d bl 2c34c receivedChar = Serial.read(); 3e72: b2c3 uxtb r3, r0 if((uint8_t)receivedChar != 10) { @@ -9328,11 +9341,11 @@ private: i = BMC_SERIAL_MONITOR_MAX_CHARS-1; 3e8c: 7027 strbhi r7, [r4, #0] virtual int available() { return usb_seremu_available(); } - 3e8e: f028 fa3f bl 2c310 + 3e8e: f028 fab3 bl 2c3f8 while(Serial.available() > 0 && !readFlag(BMC_SERIAL_MONITOR_FLAG_READY)){ 3e92: 2800 cmp r0, #0 return bitRead(flags, t_offset); - 3e94: f895 3b14 ldrb.w r3, [r5, #2836] ; 0xb14 + 3e94: f895 3b34 ldrb.w r3, [r5, #2868] ; 0xb34 while(Serial.available() > 0 && !readFlag(BMC_SERIAL_MONITOR_FLAG_READY)){ 3e98: dce6 bgt.n 3e68 if(readFlag(BMC_SERIAL_MONITOR_FLAG_READY)){ @@ -9346,7 +9359,7 @@ private: } void writeFlag(uint8_t t_offset, bool t_value){ bitWrite(flags, t_offset, t_value); - 3ea6: f895 3b14 ldrb.w r3, [r5, #2836] ; 0xb14 + 3ea6: f895 3b34 ldrb.w r3, [r5, #2868] ; 0xb34 buff[i] = 0; 3eaa: 3230 adds r2, #48 ; 0x30 i = 0; @@ -9356,348 +9369,347 @@ private: buff[i] = 0; 3eb4: 446a add r2, sp bitWrite(flags, t_offset, t_value); - 3eb6: f885 3b14 strb.w r3, [r5, #2836] ; 0xb14 + 3eb6: f885 3b34 strb.w r3, [r5, #2868] ; 0xb34 buff[i] = 0; 3eba: f802 8c1c strb.w r8, [r2, #-28] bitWrite(flags, t_offset, t_value); 3ebe: e7cd b.n 3e5c - 3ec0: 2000bc7f .word 0x2000bc7f + 3ec0: 2000bc9f .word 0x2000bc9f 3ec4: f023 0301 bic.w r3, r3, #1 if(BMC_STR_MATCH(debugInput,"") || BMC_STR_MATCH(debugInput,"help")){ 3ec8: f89d 2014 ldrb.w r2, [sp, #20] - 3ecc: f885 3b14 strb.w r3, [r5, #2836] ; 0xb14 + 3ecc: f885 3b34 strb.w r3, [r5, #2868] ; 0xb34 3ed0: 2a00 cmp r2, #0 - 3ed2: f000 8204 beq.w 42de + 3ed2: f000 8216 beq.w 4302 3ed6: 4ab6 ldr r2, [pc, #728] ; (41b0 ) 3ed8: ac05 add r4, sp, #20 3eda: 9b05 ldr r3, [sp, #20] 3edc: 4293 cmp r3, r2 - 3ede: f000 82e4 beq.w 44aa + 3ede: f000 8304 beq.w 44ea } else if(BMC_STR_MATCH(debugInput,"fasConnection")){ 3ee2: 49b4 ldr r1, [pc, #720] ; (41b4 ) 3ee4: 9a05 ldr r2, [sp, #20] 3ee6: 428a cmp r2, r1 - 3ee8: f000 82e4 beq.w 44b4 + 3ee8: f000 834e beq.w 4588 } else if(BMC_STR_MATCH(debugInput,"fasDebug")){ 3eec: 49b2 ldr r1, [pc, #712] ; (41b8 ) 3eee: 9805 ldr r0, [sp, #20] 3ef0: 4288 cmp r0, r1 - 3ef2: f000 82b4 beq.w 445e + 3ef2: f000 82d4 beq.w 449e } else if(BMC_STR_MATCH(debugInput,"flush")){ 3ef6: 48b1 ldr r0, [pc, #708] ; (41bc ) 3ef8: 9905 ldr r1, [sp, #20] 3efa: 4281 cmp r1, r0 - 3efc: f000 83dc beq.w 46b8 + 3efc: f000 83fc beq.w 46f8 } else if(BMC_STR_MATCH(debugInput,"storageDebug")){ 3f00: 48af ldr r0, [pc, #700] ; (41c0 ) 3f02: 9f05 ldr r7, [sp, #20] 3f04: 4287 cmp r7, r0 - 3f06: f000 83ef beq.w 46e8 + 3f06: f000 840a beq.w 471e } else if(BMC_STR_MATCH(debugInput,"runTime")){ 3f0a: 4fae ldr r7, [pc, #696] ; (41c4 ) 3f0c: f8dd e014 ldr.w lr, [sp, #20] 3f10: 45be cmp lr, r7 - 3f12: f000 8367 beq.w 45e4 + 3f12: f000 8387 beq.w 4624 } else if(BMC_STR_MATCH(debugInput,"pots")){ 3f16: 4fac ldr r7, [pc, #688] ; (41c8 ) 3f18: 42bb cmp r3, r7 - 3f1a: f000 8413 beq.w 4744 + 3f1a: f000 842e beq.w 477a } else if(BMC_STR_MATCH(debugInput,"stopwatch")){ 3f1e: 4fab ldr r7, [pc, #684] ; (41cc ) 3f20: f8dd c014 ldr.w ip, [sp, #20] 3f24: 45bc cmp ip, r7 - 3f26: f000 8426 beq.w 4776 + 3f26: f000 8441 beq.w 47ac } else if(BMC_STR_MATCH(debugInput,"board")){ 3f2a: 4fa9 ldr r7, [pc, #676] ; (41d0 ) 3f2c: 42b9 cmp r1, r7 - 3f2e: f000 8473 beq.w 4818 + 3f2e: f000 848e beq.w 484e } else if(BMC_STR_MATCH(debugInput,"sync")){ 3f32: 49a8 ldr r1, [pc, #672] ; (41d4 ) 3f34: 428b cmp r3, r1 - 3f36: f000 84a7 beq.w 4888 + 3f36: f000 84c5 beq.w 48c4 } else if(BMC_STR_MATCH(debugInput,"buttons")){ 3f3a: 4ba7 ldr r3, [pc, #668] ; (41d8 ) 3f3c: 459e cmp lr, r3 - 3f3e: f000 8511 beq.w 4964 + 3f3e: f000 852f beq.w 49a0 } else if(BMC_STR_MATCH(debugInput,"metrics")){ 3f42: 4ba6 ldr r3, [pc, #664] ; (41dc ) 3f44: 459e cmp lr, r3 - 3f46: f000 8527 beq.w 4998 + 3f46: f000 8545 beq.w 49d4 } else if(BMC_STR_MATCH(debugInput,"nextLayer")){ 3f4a: 4ba5 ldr r3, [pc, #660] ; (41e0 ) 3f4c: 459c cmp ip, r3 - 3f4e: f000 856c beq.w 4a2a + 3f4e: f000 858a beq.w 4a66 } else if(BMC_STR_MATCH(debugInput,"prevLayer")){ 3f52: 4ba4 ldr r3, [pc, #656] ; (41e4 ) 3f54: 459c cmp ip, r3 - 3f56: f000 8554 beq.w 4a02 + 3f56: f000 8572 beq.w 4a3e } else if(BMC_STR_MATCH(debugInput,"midiClockInfo")){ 3f5a: 4ba3 ldr r3, [pc, #652] ; (41e8 ) 3f5c: 429a cmp r2, r3 - 3f5e: f001 8181 beq.w 5264 + 3f5e: f001 81c4 beq.w 52ea } else if(BMC_STR_MATCH(debugInput,"midiIn")){ 3f62: 49a2 ldr r1, [pc, #648] ; (41ec ) 3f64: 4620 mov r0, r4 - 3f66: f02a fb9f bl 2e6a8 + 3f66: f02a fc0f bl 2e788 3f6a: 2800 cmp r0, #0 - 3f6c: f001 8162 beq.w 5234 + 3f6c: f001 81a5 beq.w 52ba } else if(BMC_STR_MATCH(debugInput,"midiInClock")){ 3f70: 499f ldr r1, [pc, #636] ; (41f0 ) 3f72: 4620 mov r0, r4 - 3f74: f02a fb98 bl 2e6a8 + 3f74: f02a fc08 bl 2e788 3f78: 2800 cmp r0, #0 - 3f7a: f001 81aa beq.w 52d2 + 3f7a: f001 81ed beq.w 5358 } else if(BMC_STR_MATCH(debugInput,"midiOut")){ 3f7e: 499d ldr r1, [pc, #628] ; (41f4 ) 3f80: 4620 mov r0, r4 - 3f82: f02a fb91 bl 2e6a8 + 3f82: f02a fc01 bl 2e788 3f86: 2800 cmp r0, #0 - 3f88: f001 813c beq.w 5204 + 3f88: f001 817f beq.w 528a } else if(BMC_STR_MATCH(debugInput,"midiOutClock")){ 3f8c: 499a ldr r1, [pc, #616] ; (41f8 ) 3f8e: 4620 mov r0, r4 - 3f90: f02a fb8a bl 2e6a8 + 3f90: f02a fbfa bl 2e788 3f94: 2800 cmp r0, #0 - 3f96: f001 8113 beq.w 51c0 - } else if(BMC_STR_MATCH(debugInput,"version")){ + 3f96: f001 8156 beq.w 5246 + } else if(BMC_STR_MATCH(debugInput,"bleDebug")){ 3f9a: 4998 ldr r1, [pc, #608] ; (41fc ) 3f9c: 4620 mov r0, r4 - 3f9e: f02a fb83 bl 2e6a8 + 3f9e: f02a fbf3 bl 2e788 3fa2: 2800 cmp r0, #0 - 3fa4: f001 80de beq.w 5164 - } else if(BMC_STR_MATCH(debugInput,"eeprom")){ + 3fa4: f001 8132 beq.w 520c + } else if(BMC_STR_MATCH(debugInput,"disconnectBLE")){ 3fa8: 4995 ldr r1, [pc, #596] ; (4200 ) 3faa: 4620 mov r0, r4 - 3fac: f02a fb7c bl 2e6a8 - 3fb0: 4605 mov r5, r0 - 3fb2: 2800 cmp r0, #0 - 3fb4: f001 80a0 beq.w 50f8 + 3fac: f02a fbec bl 2e788 + 3fb0: 2800 cmp r0, #0 + 3fb2: f001 8123 beq.w 51fc + } else if(BMC_STR_MATCH(debugInput,"version")){ + 3fb6: 4993 ldr r1, [pc, #588] ; (4204 ) + 3fb8: 4620 mov r0, r4 + 3fba: f02a fbe5 bl 2e788 + 3fbe: 2800 cmp r0, #0 + 3fc0: f001 80ee beq.w 51a0 + } else if(BMC_STR_MATCH(debugInput,"eeprom")){ + 3fc4: 4990 ldr r1, [pc, #576] ; (4208 ) + 3fc6: 4620 mov r0, r4 + 3fc8: f02a fbde bl 2e788 + 3fcc: 4605 mov r5, r0 + 3fce: 2800 cmp r0, #0 + 3fd0: f001 80b0 beq.w 5134 } else if(BMC_STR_MATCH(debugInput,"build")){ - 3fb8: 4992 ldr r1, [pc, #584] ; (4204 ) - 3fba: 4620 mov r0, r4 - 3fbc: f02a fb74 bl 2e6a8 - 3fc0: 4605 mov r5, r0 - 3fc2: 2800 cmp r0, #0 - 3fc4: f001 8039 beq.w 503a + 3fd4: 498d ldr r1, [pc, #564] ; (420c ) + 3fd6: 4620 mov r0, r4 + 3fd8: f02a fbd6 bl 2e788 + 3fdc: 4605 mov r5, r0 + 3fde: 2800 cmp r0, #0 + 3fe0: f001 8049 beq.w 5076 } else if(BMC_STR_MATCH(debugInput,"pins")){ - 3fc8: 498f ldr r1, [pc, #572] ; (4208 ) - 3fca: 4620 mov r0, r4 - 3fcc: f02a fb6c bl 2e6a8 - 3fd0: 2800 cmp r0, #0 - 3fd2: f001 8015 beq.w 5000 + 3fe4: 498a ldr r1, [pc, #552] ; (4210 ) + 3fe6: 4620 mov r0, r4 + 3fe8: f02a fbce bl 2e788 + 3fec: 2800 cmp r0, #0 + 3fee: f001 8025 beq.w 503c } else if(BMC_STR_MATCH(debugInput,"store")){ - 3fd6: 498d ldr r1, [pc, #564] ; (420c ) - 3fd8: 4620 mov r0, r4 - 3fda: f02a fb65 bl 2e6a8 - 3fde: 4605 mov r5, r0 - 3fe0: 2800 cmp r0, #0 - 3fe2: f000 857f beq.w 4ae4 + 3ff2: 4988 ldr r1, [pc, #544] ; (4214 ) + 3ff4: 4620 mov r0, r4 + 3ff6: f02a fbc7 bl 2e788 + 3ffa: 4605 mov r5, r0 + 3ffc: 2800 cmp r0, #0 + 3ffe: f000 858f beq.w 4b20 } else if(BMC_STR_MATCH(debugInput,"objects")){ - 3fe6: 498a ldr r1, [pc, #552] ; (4210 ) - 3fe8: 4620 mov r0, r4 - 3fea: f02a fb5d bl 2e6a8 - 3fee: 2800 cmp r0, #0 - 3ff0: f040 852a bne.w 4a48 + 4002: 4985 ldr r1, [pc, #532] ; (4218 ) + 4004: 4620 mov r0, r4 + 4006: f02a fbbf bl 2e788 + 400a: 4605 mov r5, r0 + 400c: 2800 cmp r0, #0 + 400e: f040 8539 bne.w 4a84 printDebugHeader(debugInput); - 3ff4: 4620 mov r0, r4 - 3ff6: f7ff fb67 bl 36c8 - size_t print(const char s[]) { return write(s); } - 3ffa: 4986 ldr r1, [pc, #536] ; (4214 ) - 3ffc: 4886 ldr r0, [pc, #536] ; (4218 ) - 3ffe: f7ff fb41 bl 3684 - 4002: 4986 ldr r1, [pc, #536] ; (421c ) - 4004: 4884 ldr r0, [pc, #528] ; (4218 ) - 4006: f7ff fb3d bl 3684 - size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 400a: 2300 movs r3, #0 - 400c: 220a movs r2, #10 - 400e: f643 61a0 movw r1, #16032 ; 0x3ea0 - 4012: 4881 ldr r0, [pc, #516] ; (4218 ) - 4014: f025 ff4a bl 29eac + 4012: 4620 mov r0, r4 + 4014: f7ff fb58 bl 36c8 size_t print(const char s[]) { return write(s); } 4018: 4980 ldr r1, [pc, #512] ; (421c ) - 401a: 487f ldr r0, [pc, #508] ; (4218 ) + 401a: 4881 ldr r0, [pc, #516] ; (4220 ) 401c: f7ff fb32 bl 3684 + 4020: 4980 ldr r1, [pc, #512] ; (4224 ) + 4022: 487f ldr r0, [pc, #508] ; (4220 ) + 4024: f7ff fb2e bl 3684 + size_t print(unsigned int n) { return printNumber(n, 10, 0); } + 4028: 462b mov r3, r5 + 402a: 220a movs r2, #10 + 402c: f44f 517b mov.w r1, #16064 ; 0x3ec0 + 4030: 487b ldr r0, [pc, #492] ; (4220 ) + 4032: f025 ffb1 bl 29f98 + size_t print(const char s[]) { return write(s); } + 4036: 497b ldr r1, [pc, #492] ; (4224 ) + 4038: 4879 ldr r0, [pc, #484] ; (4220 ) + 403a: f7ff fb23 bl 3684 BMC_PRINTLN("sizeof BMC",sizeof(BMC),"bytes"); - 4020: 497f ldr r1, [pc, #508] ; (4220 ) - 4022: 487d ldr r0, [pc, #500] ; (4218 ) - 4024: f7ff fb3e bl 36a4 + 403e: 497a ldr r1, [pc, #488] ; (4228 ) + 4040: 4877 ldr r0, [pc, #476] ; (4220 ) + 4042: f7ff fb2f bl 36a4 BMC_PRINTLN(""); - 4028: 497e ldr r1, [pc, #504] ; (4224 ) - 402a: 487b ldr r0, [pc, #492] ; (4218 ) - 402c: f7ff fb3a bl 36a4 - 4030: 497d ldr r1, [pc, #500] ; (4228 ) - 4032: 4879 ldr r0, [pc, #484] ; (4218 ) - 4034: f7ff fb26 bl 3684 - 4038: 4978 ldr r1, [pc, #480] ; (421c ) - 403a: 4877 ldr r0, [pc, #476] ; (4218 ) - 403c: f7ff fb22 bl 3684 + 4046: 4979 ldr r1, [pc, #484] ; (422c ) + 4048: 4875 ldr r0, [pc, #468] ; (4220 ) + 404a: f7ff fb2b bl 36a4 + 404e: 4978 ldr r1, [pc, #480] ; (4230 ) + 4050: 4873 ldr r0, [pc, #460] ; (4220 ) + 4052: f7ff fb17 bl 3684 + 4056: 4973 ldr r1, [pc, #460] ; (4224 ) + 4058: 4871 ldr r0, [pc, #452] ; (4220 ) + 405a: f7ff fb13 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4040: 2300 movs r3, #0 - 4042: 220a movs r2, #10 - 4044: f44f 5195 mov.w r1, #4768 ; 0x12a0 - 4048: 4873 ldr r0, [pc, #460] ; (4218 ) - 404a: f025 ff2f bl 29eac + 405e: 462b mov r3, r5 + 4060: 220a movs r2, #10 + 4062: f44f 5196 mov.w r1, #4800 ; 0x12c0 + 4066: 486e ldr r0, [pc, #440] ; (4220 ) + 4068: f025 ff96 bl 29f98 size_t print(const char s[]) { return write(s); } - 404e: 4973 ldr r1, [pc, #460] ; (421c ) - 4050: 4871 ldr r0, [pc, #452] ; (4218 ) - 4052: f7ff fb17 bl 3684 + 406c: 496d ldr r1, [pc, #436] ; (4224 ) + 406e: 486c ldr r0, [pc, #432] ; (4220 ) + 4070: f7ff fb08 bl 3684 BMC_PRINTLN("sizeof BMCMidi",sizeof(BMCMidi),"bytes"); - 4056: 4972 ldr r1, [pc, #456] ; (4220 ) - 4058: 486f ldr r0, [pc, #444] ; (4218 ) - 405a: f7ff fb23 bl 36a4 - 405e: 4973 ldr r1, [pc, #460] ; (422c ) - 4060: 486d ldr r0, [pc, #436] ; (4218 ) - 4062: f7ff fb0f bl 3684 - 4066: 496d ldr r1, [pc, #436] ; (421c ) - 4068: 486b ldr r0, [pc, #428] ; (4218 ) - 406a: f7ff fb0b bl 3684 + 4074: 496c ldr r1, [pc, #432] ; (4228 ) + 4076: 486a ldr r0, [pc, #424] ; (4220 ) + 4078: f7ff fb14 bl 36a4 + 407c: 496d ldr r1, [pc, #436] ; (4234 ) + 407e: 4868 ldr r0, [pc, #416] ; (4220 ) + 4080: f7ff fb00 bl 3684 + 4084: 4967 ldr r1, [pc, #412] ; (4224 ) + 4086: 4866 ldr r0, [pc, #408] ; (4220 ) + 4088: f7ff fafc bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 406e: 2300 movs r3, #0 - 4070: 220a movs r2, #10 - 4072: f44f 6102 mov.w r1, #2080 ; 0x820 - 4076: 4868 ldr r0, [pc, #416] ; (4218 ) - 4078: f025 ff18 bl 29eac + 408c: 462b mov r3, r5 + 408e: 220a movs r2, #10 + 4090: f44f 6102 mov.w r1, #2080 ; 0x820 + 4094: 4862 ldr r0, [pc, #392] ; (4220 ) + 4096: f025 ff7f bl 29f98 size_t print(const char s[]) { return write(s); } - 407c: 4967 ldr r1, [pc, #412] ; (421c ) - 407e: 4866 ldr r0, [pc, #408] ; (4218 ) - 4080: f7ff fb00 bl 3684 + 409a: 4962 ldr r1, [pc, #392] ; (4224 ) + 409c: 4860 ldr r0, [pc, #384] ; (4220 ) + 409e: f7ff faf1 bl 3684 BMC_PRINTLN("sizeof BMCMidiData",sizeof(BMCMidiData),"bytes"); - 4084: 4966 ldr r1, [pc, #408] ; (4220 ) - 4086: 4864 ldr r0, [pc, #400] ; (4218 ) - 4088: f7ff fb0c bl 36a4 - 408c: 4968 ldr r1, [pc, #416] ; (4230 ) - 408e: 4862 ldr r0, [pc, #392] ; (4218 ) - 4090: f7ff faf8 bl 3684 - 4094: 4961 ldr r1, [pc, #388] ; (421c ) - 4096: 4860 ldr r0, [pc, #384] ; (4218 ) - 4098: f7ff faf4 bl 3684 + 40a2: 4961 ldr r1, [pc, #388] ; (4228 ) + 40a4: 485e ldr r0, [pc, #376] ; (4220 ) + 40a6: f7ff fafd bl 36a4 + 40aa: 4963 ldr r1, [pc, #396] ; (4238 ) + 40ac: 485c ldr r0, [pc, #368] ; (4220 ) + 40ae: f7ff fae9 bl 3684 + 40b2: 495c ldr r1, [pc, #368] ; (4224 ) + 40b4: 485a ldr r0, [pc, #360] ; (4220 ) + 40b6: f7ff fae5 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 409c: 2300 movs r3, #0 - 409e: 220a movs r2, #10 - 40a0: f240 41e4 movw r1, #1252 ; 0x4e4 - 40a4: 485c ldr r0, [pc, #368] ; (4218 ) - 40a6: f025 ff01 bl 29eac + 40ba: 462b mov r3, r5 + 40bc: 220a movs r2, #10 + 40be: f240 41e4 movw r1, #1252 ; 0x4e4 + 40c2: 4857 ldr r0, [pc, #348] ; (4220 ) + 40c4: f025 ff68 bl 29f98 size_t print(const char s[]) { return write(s); } - 40aa: 495c ldr r1, [pc, #368] ; (421c ) - 40ac: 485a ldr r0, [pc, #360] ; (4218 ) - 40ae: f7ff fae9 bl 3684 + 40c8: 4956 ldr r1, [pc, #344] ; (4224 ) + 40ca: 4855 ldr r0, [pc, #340] ; (4220 ) + 40cc: f7ff fada bl 3684 BMC_PRINTLN("sizeof BMCEditor",sizeof(BMCEditor),"bytes"); - 40b2: 495b ldr r1, [pc, #364] ; (4220 ) - 40b4: 4858 ldr r0, [pc, #352] ; (4218 ) - 40b6: f7ff faf5 bl 36a4 - 40ba: 495e ldr r1, [pc, #376] ; (4234 ) - 40bc: 4856 ldr r0, [pc, #344] ; (4218 ) - 40be: f7ff fae1 bl 3684 - 40c2: 4956 ldr r1, [pc, #344] ; (421c ) - 40c4: 4854 ldr r0, [pc, #336] ; (4218 ) - 40c6: f7ff fadd bl 3684 + 40d0: 4955 ldr r1, [pc, #340] ; (4228 ) + 40d2: 4853 ldr r0, [pc, #332] ; (4220 ) + 40d4: f7ff fae6 bl 36a4 + 40d8: 4958 ldr r1, [pc, #352] ; (423c ) + 40da: 4851 ldr r0, [pc, #324] ; (4220 ) + 40dc: f7ff fad2 bl 3684 + 40e0: 4950 ldr r1, [pc, #320] ; (4224 ) + 40e2: 484f ldr r0, [pc, #316] ; (4220 ) + 40e4: f7ff face bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 40ca: 2300 movs r3, #0 - 40cc: 220a movs r2, #10 - 40ce: 2154 movs r1, #84 ; 0x54 - 40d0: 4851 ldr r0, [pc, #324] ; (4218 ) - 40d2: f025 feeb bl 29eac + 40e8: 462b mov r3, r5 + 40ea: 220a movs r2, #10 + 40ec: 2154 movs r1, #84 ; 0x54 + 40ee: 484c ldr r0, [pc, #304] ; (4220 ) + 40f0: f025 ff52 bl 29f98 size_t print(const char s[]) { return write(s); } - 40d6: 4951 ldr r1, [pc, #324] ; (421c ) - 40d8: 484f ldr r0, [pc, #316] ; (4218 ) - 40da: f7ff fad3 bl 3684 + 40f4: 494b ldr r1, [pc, #300] ; (4224 ) + 40f6: 484a ldr r0, [pc, #296] ; (4220 ) + 40f8: f7ff fac4 bl 3684 BMC_PRINTLN("sizeof BMCMidiClock",sizeof(BMCMidiClock),"bytes"); - 40de: 4950 ldr r1, [pc, #320] ; (4220 ) - 40e0: 484d ldr r0, [pc, #308] ; (4218 ) - 40e2: f7ff fadf bl 36a4 - 40e6: 4954 ldr r1, [pc, #336] ; (4238 ) - 40e8: 484b ldr r0, [pc, #300] ; (4218 ) - 40ea: f7ff facb bl 3684 - 40ee: 494b ldr r1, [pc, #300] ; (421c ) - 40f0: 4849 ldr r0, [pc, #292] ; (4218 ) - 40f2: f7ff fac7 bl 3684 + 40fc: 494a ldr r1, [pc, #296] ; (4228 ) + 40fe: 4848 ldr r0, [pc, #288] ; (4220 ) + 4100: f7ff fad0 bl 36a4 + 4104: 494e ldr r1, [pc, #312] ; (4240 ) + 4106: 4846 ldr r0, [pc, #280] ; (4220 ) + 4108: f7ff fabc bl 3684 + 410c: 4945 ldr r1, [pc, #276] ; (4224 ) + 410e: 4844 ldr r0, [pc, #272] ; (4220 ) + 4110: f7ff fab8 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 40f6: 2300 movs r3, #0 - 40f8: 220a movs r2, #10 - 40fa: 2118 movs r1, #24 - 40fc: 4846 ldr r0, [pc, #280] ; (4218 ) - 40fe: f025 fed5 bl 29eac + 4114: 462b mov r3, r5 + 4116: 220a movs r2, #10 + 4118: 2118 movs r1, #24 + 411a: 4841 ldr r0, [pc, #260] ; (4220 ) + 411c: f025 ff3c bl 29f98 size_t print(const char s[]) { return write(s); } - 4102: 4946 ldr r1, [pc, #280] ; (421c ) - 4104: 4844 ldr r0, [pc, #272] ; (4218 ) - 4106: f7ff fabd bl 3684 + 4120: 4940 ldr r1, [pc, #256] ; (4224 ) + 4122: 483f ldr r0, [pc, #252] ; (4220 ) + 4124: f7ff faae bl 3684 BMC_PRINTLN("sizeof BMCMidiActiveSense",sizeof(BMCMidiActiveSense),"bytes"); - 410a: 4945 ldr r1, [pc, #276] ; (4220 ) - 410c: 4842 ldr r0, [pc, #264] ; (4218 ) - 410e: f7ff fac9 bl 36a4 - 4112: 494a ldr r1, [pc, #296] ; (423c ) - 4114: 4840 ldr r0, [pc, #256] ; (4218 ) - 4116: f7ff fab5 bl 3684 - 411a: 4940 ldr r1, [pc, #256] ; (421c ) - 411c: 483e ldr r0, [pc, #248] ; (4218 ) - 411e: f7ff fab1 bl 3684 + 4128: 493f ldr r1, [pc, #252] ; (4228 ) + 412a: 483d ldr r0, [pc, #244] ; (4220 ) + 412c: f7ff faba bl 36a4 + 4130: 4944 ldr r1, [pc, #272] ; (4244 ) + 4132: 483b ldr r0, [pc, #236] ; (4220 ) + 4134: f7ff faa6 bl 3684 + 4138: 493a ldr r1, [pc, #232] ; (4224 ) + 413a: 4839 ldr r0, [pc, #228] ; (4220 ) + 413c: f7ff faa2 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4122: 2300 movs r3, #0 - 4124: 220a movs r2, #10 - 4126: 2120 movs r1, #32 - 4128: 483b ldr r0, [pc, #236] ; (4218 ) - 412a: f025 febf bl 29eac + 4140: 462b mov r3, r5 + 4142: 220a movs r2, #10 + 4144: 2120 movs r1, #32 + 4146: 4836 ldr r0, [pc, #216] ; (4220 ) + 4148: f025 ff26 bl 29f98 size_t print(const char s[]) { return write(s); } - 412e: 493b ldr r1, [pc, #236] ; (421c ) - 4130: 4839 ldr r0, [pc, #228] ; (4218 ) - 4132: f7ff faa7 bl 3684 + 414c: 4935 ldr r1, [pc, #212] ; (4224 ) + 414e: 4834 ldr r0, [pc, #208] ; (4220 ) + 4150: f7ff fa98 bl 3684 BMC_PRINTLN("sizeof BMCBeatBuddy",sizeof(BMCBeatBuddy),"bytes"); - 4136: 493a ldr r1, [pc, #232] ; (4220 ) - 4138: 4837 ldr r0, [pc, #220] ; (4218 ) - 413a: f7ff fab3 bl 36a4 - 413e: 4940 ldr r1, [pc, #256] ; (4240 ) - 4140: 4835 ldr r0, [pc, #212] ; (4218 ) - 4142: f7ff fa9f bl 3684 - 4146: 4935 ldr r1, [pc, #212] ; (421c ) - 4148: 4833 ldr r0, [pc, #204] ; (4218 ) - 414a: f7ff fa9b bl 3684 + 4154: 4934 ldr r1, [pc, #208] ; (4228 ) + 4156: 4832 ldr r0, [pc, #200] ; (4220 ) + 4158: f7ff faa4 bl 36a4 + 415c: 493a ldr r1, [pc, #232] ; (4248 ) + 415e: 4830 ldr r0, [pc, #192] ; (4220 ) + 4160: f7ff fa90 bl 3684 + 4164: 492f ldr r1, [pc, #188] ; (4224 ) + 4166: 482e ldr r0, [pc, #184] ; (4220 ) + 4168: f7ff fa8c bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 414e: 2300 movs r3, #0 - 4150: 220a movs r2, #10 - 4152: 210c movs r1, #12 - 4154: 4830 ldr r0, [pc, #192] ; (4218 ) - 4156: f025 fea9 bl 29eac + 416c: 462b mov r3, r5 + 416e: 220a movs r2, #10 + 4170: 210c movs r1, #12 + 4172: 482b ldr r0, [pc, #172] ; (4220 ) + 4174: f025 ff10 bl 29f98 size_t print(const char s[]) { return write(s); } - 415a: 4930 ldr r1, [pc, #192] ; (421c ) - 415c: 482e ldr r0, [pc, #184] ; (4218 ) - 415e: f7ff fa91 bl 3684 + 4178: 492a ldr r1, [pc, #168] ; (4224 ) + 417a: 4829 ldr r0, [pc, #164] ; (4220 ) + 417c: f7ff fa82 bl 3684 BMC_PRINTLN("sizeof BMCHelix",sizeof(BMCHelix),"bytes"); - 4162: 492f ldr r1, [pc, #188] ; (4220 ) - 4164: 482c ldr r0, [pc, #176] ; (4218 ) - 4166: f7ff fa9d bl 36a4 - 416a: 4936 ldr r1, [pc, #216] ; (4244 ) - 416c: 482a ldr r0, [pc, #168] ; (4218 ) - 416e: f7ff fa89 bl 3684 - 4172: 492a ldr r1, [pc, #168] ; (421c ) - 4174: 4828 ldr r0, [pc, #160] ; (4218 ) - 4176: f7ff fa85 bl 3684 - size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 417a: 2300 movs r3, #0 - 417c: 220a movs r2, #10 - 417e: 2124 movs r1, #36 ; 0x24 - 4180: 4825 ldr r0, [pc, #148] ; (4218 ) - 4182: f025 fe93 bl 29eac - size_t print(const char s[]) { return write(s); } - 4186: 4925 ldr r1, [pc, #148] ; (421c ) - 4188: 4823 ldr r0, [pc, #140] ; (4218 ) - 418a: f7ff fa7b bl 3684 - 418e: 492e ldr r1, [pc, #184] ; (4248 ) - 4190: 4821 ldr r0, [pc, #132] ; (4218 ) - 4192: f7ff fa77 bl 3684 - 4196: 4921 ldr r1, [pc, #132] ; (421c ) - 4198: 481f ldr r0, [pc, #124] ; (4218 ) - 419a: f7ff fa73 bl 3684 + 4180: 4929 ldr r1, [pc, #164] ; (4228 ) + 4182: 4827 ldr r0, [pc, #156] ; (4220 ) + 4184: f7ff fa8e bl 36a4 + 4188: 4930 ldr r1, [pc, #192] ; (424c ) + 418a: 4825 ldr r0, [pc, #148] ; (4220 ) + 418c: f7ff fa7a bl 3684 + 4190: 4924 ldr r1, [pc, #144] ; (4224 ) + 4192: 4823 ldr r0, [pc, #140] ; (4220 ) + 4194: f7ff fa76 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 419e: 2300 movs r3, #0 - 41a0: 220a movs r2, #10 - 41a2: 21d8 movs r1, #216 ; 0xd8 - 41a4: 481c ldr r0, [pc, #112] ; (4218 ) - 41a6: f025 fe81 bl 29eac + 4198: 462b mov r3, r5 + 419a: 220a movs r2, #10 + 419c: 2124 movs r1, #36 ; 0x24 + 419e: 4820 ldr r0, [pc, #128] ; (4220 ) + 41a0: f025 fefa bl 29f98 size_t print(const char s[]) { return write(s); } - 41aa: 491c ldr r1, [pc, #112] ; (421c ) - 41ac: e04e b.n 424c - 41ae: bf00 nop + 41a4: 491f ldr r1, [pc, #124] ; (4224 ) + 41a6: 481e ldr r0, [pc, #120] ; (4220 ) + 41a8: f7ff fa6c bl 3684 + 41ac: 4928 ldr r1, [pc, #160] ; (4250 ) + 41ae: e051 b.n 4254 41b0: 706c6568 .word 0x706c6568 41b4: 43736166 .word 0x43736166 41b8: 44736166 .word 0x44736166 @@ -9713,95145 +9725,95357 @@ private: 41e0: 7478656e .word 0x7478656e 41e4: 76657270 .word 0x76657270 41e8: 6964696d .word 0x6964696d - 41ec: 200031bc .word 0x200031bc - 41f0: 200031c4 .word 0x200031c4 - 41f4: 200031d0 .word 0x200031d0 - 41f8: 200031d8 .word 0x200031d8 - 41fc: 200031e8 .word 0x200031e8 - 4200: 20003234 .word 0x20003234 - 4204: 20003250 .word 0x20003250 - 4208: 20003288 .word 0x20003288 - 420c: 200032bc .word 0x200032bc - 4210: 2000353c .word 0x2000353c - 4214: 20003544 .word 0x20003544 - 4218: 20004ba8 .word 0x20004ba8 - 421c: 200023ec .word 0x200023ec - 4220: 200032ec .word 0x200032ec - 4224: 20003c58 .word 0x20003c58 - 4228: 20003550 .word 0x20003550 - 422c: 20003560 .word 0x20003560 - 4230: 20003574 .word 0x20003574 - 4234: 20003588 .word 0x20003588 - 4238: 2000359c .word 0x2000359c - 423c: 200035b8 .word 0x200035b8 - 4240: 200035cc .word 0x200035cc - 4244: 200035dc .word 0x200035dc - 4248: 200035f0 .word 0x200035f0 - 424c: 48c0 ldr r0, [pc, #768] ; (4550 ) - 424e: f7ff fa19 bl 3684 - BMC_PRINTLN("sizeof BMCButton",sizeof(BMCButton),"bytes,",sizeof(buttons),"bytes total"); - 4252: 49c0 ldr r1, [pc, #768] ; (4554 ) - 4254: 48be ldr r0, [pc, #760] ; (4550 ) - 4256: f7ff fa25 bl 36a4 - 425a: 49bf ldr r1, [pc, #764] ; (4558 ) - 425c: 48bc ldr r0, [pc, #752] ; (4550 ) + 41ec: 20003254 .word 0x20003254 + 41f0: 2000325c .word 0x2000325c + 41f4: 20003268 .word 0x20003268 + 41f8: 20003270 .word 0x20003270 + 41fc: 20003280 .word 0x20003280 + 4200: 20003298 .word 0x20003298 + 4204: 200032a8 .word 0x200032a8 + 4208: 200032f4 .word 0x200032f4 + 420c: 20003310 .word 0x20003310 + 4210: 20003348 .word 0x20003348 + 4214: 2000337c .word 0x2000337c + 4218: 200035fc .word 0x200035fc + 421c: 20003604 .word 0x20003604 + 4220: 20004c68 .word 0x20004c68 + 4224: 200023ec .word 0x200023ec + 4228: 200033ac .word 0x200033ac + 422c: 20003d18 .word 0x20003d18 + 4230: 20003610 .word 0x20003610 + 4234: 20003620 .word 0x20003620 + 4238: 20003634 .word 0x20003634 + 423c: 20003648 .word 0x20003648 + 4240: 2000365c .word 0x2000365c + 4244: 20003678 .word 0x20003678 + 4248: 2000368c .word 0x2000368c + 424c: 2000369c .word 0x2000369c + 4250: 200036b0 .word 0x200036b0 + 4254: 48a7 ldr r0, [pc, #668] ; (44f4 ) + 4256: f7ff fa15 bl 3684 + 425a: 49a7 ldr r1, [pc, #668] ; (44f8 ) + 425c: 48a5 ldr r0, [pc, #660] ; (44f4 ) 425e: f7ff fa11 bl 3684 - 4262: 49be ldr r1, [pc, #760] ; (455c ) - 4264: 48ba ldr r0, [pc, #744] ; (4550 ) - 4266: f7ff fa0d bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 426a: 2300 movs r3, #0 - 426c: 220a movs r2, #10 - 426e: 21c4 movs r1, #196 ; 0xc4 - 4270: 48b7 ldr r0, [pc, #732] ; (4550 ) - 4272: f025 fe1b bl 29eac + 4262: 462b mov r3, r5 + 4264: 220a movs r2, #10 + 4266: 21d8 movs r1, #216 ; 0xd8 + 4268: 48a2 ldr r0, [pc, #648] ; (44f4 ) + 426a: f025 fe95 bl 29f98 size_t print(const char s[]) { return write(s); } - 4276: 49b9 ldr r1, [pc, #740] ; (455c ) - 4278: 48b5 ldr r0, [pc, #724] ; (4550 ) - 427a: f7ff fa03 bl 3684 - BMC_PRINTLN("sizeof BMCPixels",sizeof(BMCPixels),"bytes"); - 427e: 49b8 ldr r1, [pc, #736] ; (4560 ) - 4280: 48b3 ldr r0, [pc, #716] ; (4550 ) - 4282: f7ff fa0f bl 36a4 - 4286: 49b7 ldr r1, [pc, #732] ; (4564 ) - 4288: 48b1 ldr r0, [pc, #708] ; (4550 ) + 426e: 49a2 ldr r1, [pc, #648] ; (44f8 ) + 4270: 48a0 ldr r0, [pc, #640] ; (44f4 ) + 4272: f7ff fa07 bl 3684 + BMC_PRINTLN("sizeof BMCButton",sizeof(BMCButton),"bytes,",sizeof(buttons),"bytes total"); + 4276: 49a1 ldr r1, [pc, #644] ; (44fc ) + 4278: 489e ldr r0, [pc, #632] ; (44f4 ) + 427a: f7ff fa13 bl 36a4 + 427e: 49a0 ldr r1, [pc, #640] ; (4500 ) + 4280: 489c ldr r0, [pc, #624] ; (44f4 ) + 4282: f7ff f9ff bl 3684 + 4286: 499c ldr r1, [pc, #624] ; (44f8 ) + 4288: 489a ldr r0, [pc, #616] ; (44f4 ) 428a: f7ff f9fb bl 3684 - 428e: 49b3 ldr r1, [pc, #716] ; (455c ) - 4290: 48af ldr r0, [pc, #700] ; (4550 ) - 4292: f7ff f9f7 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4296: 2300 movs r3, #0 - 4298: 220a movs r2, #10 - 429a: 2118 movs r1, #24 - 429c: 48ac ldr r0, [pc, #688] ; (4550 ) - 429e: f025 fe05 bl 29eac + 428e: 462b mov r3, r5 + 4290: 220a movs r2, #10 + 4292: 21c4 movs r1, #196 ; 0xc4 + 4294: 4897 ldr r0, [pc, #604] ; (44f4 ) + 4296: f025 fe7f bl 29f98 size_t print(const char s[]) { return write(s); } - 42a2: 49ae ldr r1, [pc, #696] ; (455c ) - 42a4: 48aa ldr r0, [pc, #680] ; (4550 ) - 42a6: f7ff f9ed bl 3684 - 42aa: 49af ldr r1, [pc, #700] ; (4568 ) - 42ac: 48a8 ldr r0, [pc, #672] ; (4550 ) + 429a: 4997 ldr r1, [pc, #604] ; (44f8 ) + 429c: 4895 ldr r0, [pc, #596] ; (44f4 ) + 429e: f7ff f9f1 bl 3684 + BMC_PRINTLN("sizeof BMCPixels",sizeof(BMCPixels),"bytes"); + 42a2: 4998 ldr r1, [pc, #608] ; (4504 ) + 42a4: 4893 ldr r0, [pc, #588] ; (44f4 ) + 42a6: f7ff f9fd bl 36a4 + 42aa: 4997 ldr r1, [pc, #604] ; (4508 ) + 42ac: 4891 ldr r0, [pc, #580] ; (44f4 ) 42ae: f7ff f9e9 bl 3684 - 42b2: 49aa ldr r1, [pc, #680] ; (455c ) - 42b4: 48a6 ldr r0, [pc, #664] ; (4550 ) + 42b2: 4991 ldr r1, [pc, #580] ; (44f8 ) + 42b4: 488f ldr r0, [pc, #572] ; (44f4 ) 42b6: f7ff f9e5 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 42ba: 2300 movs r3, #0 + 42ba: 462b mov r3, r5 42bc: 220a movs r2, #10 - 42be: 2178 movs r1, #120 ; 0x78 - 42c0: 48a3 ldr r0, [pc, #652] ; (4550 ) - 42c2: f025 fdf3 bl 29eac + 42be: 2118 movs r1, #24 + 42c0: 488c ldr r0, [pc, #560] ; (44f4 ) + 42c2: f025 fe69 bl 29f98 size_t print(const char s[]) { return write(s); } - 42c6: 49a5 ldr r1, [pc, #660] ; (455c ) - 42c8: 48a1 ldr r0, [pc, #644] ; (4550 ) + 42c6: 498c ldr r1, [pc, #560] ; (44f8 ) + 42c8: 488a ldr r0, [pc, #552] ; (44f4 ) 42ca: f7ff f9db bl 3684 + 42ce: 498f ldr r1, [pc, #572] ; (450c ) + 42d0: 4888 ldr r0, [pc, #544] ; (44f4 ) + 42d2: f7ff f9d7 bl 3684 + 42d6: 4988 ldr r1, [pc, #544] ; (44f8 ) + 42d8: 4886 ldr r0, [pc, #536] ; (44f4 ) + 42da: f7ff f9d3 bl 3684 + size_t print(unsigned int n) { return printNumber(n, 10, 0); } + 42de: 462b mov r3, r5 + 42e0: 220a movs r2, #10 + 42e2: 2178 movs r1, #120 ; 0x78 + 42e4: 4883 ldr r0, [pc, #524] ; (44f4 ) + 42e6: f025 fe57 bl 29f98 + size_t print(const char s[]) { return write(s); } + 42ea: 4983 ldr r1, [pc, #524] ; (44f8 ) + 42ec: 4881 ldr r0, [pc, #516] ; (44f4 ) + 42ee: f7ff f9c9 bl 3684 BMC_PRINTLN("sizeof BMCLed (global)",sizeof(BMCLed),"bytes,",sizeof(globalLeds),"bytes total"); - 42ce: 49a1 ldr r1, [pc, #644] ; (4554 ) - 42d0: 489f ldr r0, [pc, #636] ; (4550 ) - 42d2: f7ff f9e7 bl 36a4 + 42f2: 4982 ldr r1, [pc, #520] ; (44fc ) + 42f4: 487f ldr r0, [pc, #508] ; (44f4 ) + 42f6: f7ff f9d5 bl 36a4 printDebugHeader(debugInput); - 42d6: 4620 mov r0, r4 - 42d8: f7ff f9f6 bl 36c8 - 42dc: e5df b.n 3e9e - 42de: ac05 add r4, sp, #20 + 42fa: 4620 mov r0, r4 + 42fc: f7ff f9e4 bl 36c8 + 4300: e5cd b.n 3e9e + 4302: ac05 add r4, sp, #20 strcpy(debugInput,"help"); - 42e0: 4ba2 ldr r3, [pc, #648] ; (456c ) - 42e2: e893 0003 ldmia.w r3, {r0, r1} - 42e6: 4603 mov r3, r0 + 4304: 4b82 ldr r3, [pc, #520] ; (4510 ) + 4306: e893 0003 ldmia.w r3, {r0, r1} + 430a: 4603 mov r3, r0 printDebugHeader(debugInput); - 42e8: 4620 mov r0, r4 + 430c: 4620 mov r0, r4 strcpy(debugInput,"help"); - 42ea: f88d 1018 strb.w r1, [sp, #24] - 42ee: 9305 str r3, [sp, #20] + 430e: f88d 1018 strb.w r1, [sp, #24] + 4312: 9305 str r3, [sp, #20] printDebugHeader(debugInput); - 42f0: f7ff f9ea bl 36c8 + 4314: f7ff f9d8 bl 36c8 virtual size_t write(const uint8_t *buffer, size_t size) { return usb_seremu_write(buffer, size); } - 42f4: 211e movs r1, #30 - 42f6: 489e ldr r0, [pc, #632] ; (4570 ) - 42f8: f028 f926 bl 2c548 + 4318: 211e movs r1, #30 + 431a: 487e ldr r0, [pc, #504] ; (4514 ) + 431c: f028 f988 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 42fc: 4894 ldr r0, [pc, #592] ; (4550 ) - 42fe: f025 fdb9 bl 29e74 - 4302: 2100 movs r1, #0 - 4304: 489b ldr r0, [pc, #620] ; (4574 ) - 4306: f028 f91f bl 2c548 - 430a: 4891 ldr r0, [pc, #580] ; (4550 ) - 430c: f025 fdb2 bl 29e74 - 4310: 214a movs r1, #74 ; 0x4a - 4312: 4899 ldr r0, [pc, #612] ; (4578 ) - 4314: f028 f918 bl 2c548 - 4318: 488d ldr r0, [pc, #564] ; (4550 ) - 431a: f025 fdab bl 29e74 - 431e: 212c movs r1, #44 ; 0x2c - 4320: 4896 ldr r0, [pc, #600] ; (457c ) - 4322: f028 f911 bl 2c548 - 4326: 488a ldr r0, [pc, #552] ; (4550 ) - 4328: f025 fda4 bl 29e74 - 432c: 211e movs r1, #30 - 432e: 4894 ldr r0, [pc, #592] ; (4580 ) - 4330: f028 f90a bl 2c548 - 4334: 4886 ldr r0, [pc, #536] ; (4550 ) - 4336: f025 fd9d bl 29e74 - 433a: 2118 movs r1, #24 - 433c: 4891 ldr r0, [pc, #580] ; (4584 ) - 433e: f028 f903 bl 2c548 - 4342: 4883 ldr r0, [pc, #524] ; (4550 ) - 4344: f025 fd96 bl 29e74 - 4348: 2121 movs r1, #33 ; 0x21 - 434a: 488f ldr r0, [pc, #572] ; (4588 ) - 434c: f028 f8fc bl 2c548 - 4350: 487f ldr r0, [pc, #508] ; (4550 ) - 4352: f025 fd8f bl 29e74 - 4356: 2138 movs r1, #56 ; 0x38 - 4358: 488c ldr r0, [pc, #560] ; (458c ) - 435a: f028 f8f5 bl 2c548 - 435e: 487c ldr r0, [pc, #496] ; (4550 ) - 4360: f025 fd88 bl 29e74 - 4364: 212b movs r1, #43 ; 0x2b - 4366: 488a ldr r0, [pc, #552] ; (4590 ) - 4368: f028 f8ee bl 2c548 - 436c: 4878 ldr r0, [pc, #480] ; (4550 ) - 436e: f025 fd81 bl 29e74 - 4372: 2137 movs r1, #55 ; 0x37 - 4374: 4887 ldr r0, [pc, #540] ; (4594 ) - 4376: f028 f8e7 bl 2c548 - 437a: 4875 ldr r0, [pc, #468] ; (4550 ) - 437c: f025 fd7a bl 29e74 - 4380: 213b movs r1, #59 ; 0x3b - 4382: 4885 ldr r0, [pc, #532] ; (4598 ) - 4384: f028 f8e0 bl 2c548 - 4388: 4871 ldr r0, [pc, #452] ; (4550 ) - 438a: f025 fd73 bl 29e74 - 438e: 2143 movs r1, #67 ; 0x43 - 4390: 4882 ldr r0, [pc, #520] ; (459c ) - 4392: f028 f8d9 bl 2c548 - 4396: 486e ldr r0, [pc, #440] ; (4550 ) - 4398: f025 fd6c bl 29e74 - 439c: 2160 movs r1, #96 ; 0x60 - 439e: 4880 ldr r0, [pc, #512] ; (45a0 ) - 43a0: f028 f8d2 bl 2c548 - 43a4: 486a ldr r0, [pc, #424] ; (4550 ) - 43a6: f025 fd65 bl 29e74 - 43aa: 216f movs r1, #111 ; 0x6f - 43ac: 487d ldr r0, [pc, #500] ; (45a4 ) - 43ae: f028 f8cb bl 2c548 - 43b2: 4867 ldr r0, [pc, #412] ; (4550 ) - 43b4: f025 fd5e bl 29e74 - 43b8: 211c movs r1, #28 - 43ba: 487b ldr r0, [pc, #492] ; (45a8 ) - 43bc: f028 f8c4 bl 2c548 - 43c0: 4863 ldr r0, [pc, #396] ; (4550 ) - 43c2: f025 fd57 bl 29e74 - 43c6: 2120 movs r1, #32 - 43c8: 4878 ldr r0, [pc, #480] ; (45ac ) - 43ca: f028 f8bd bl 2c548 - 43ce: 4860 ldr r0, [pc, #384] ; (4550 ) - 43d0: f025 fd50 bl 29e74 - 43d4: 212f movs r1, #47 ; 0x2f - 43d6: 4876 ldr r0, [pc, #472] ; (45b0 ) - 43d8: f028 f8b6 bl 2c548 - 43dc: 485c ldr r0, [pc, #368] ; (4550 ) - 43de: f025 fd49 bl 29e74 - 43e2: 2147 movs r1, #71 ; 0x47 - 43e4: 4873 ldr r0, [pc, #460] ; (45b4 ) - 43e6: f028 f8af bl 2c548 - 43ea: 4859 ldr r0, [pc, #356] ; (4550 ) - 43ec: f025 fd42 bl 29e74 - 43f0: 2148 movs r1, #72 ; 0x48 - 43f2: 4871 ldr r0, [pc, #452] ; (45b8 ) - 43f4: f028 f8a8 bl 2c548 - 43f8: 4855 ldr r0, [pc, #340] ; (4550 ) - 43fa: f025 fd3b bl 29e74 - 43fe: 215b movs r1, #91 ; 0x5b - 4400: 486e ldr r0, [pc, #440] ; (45bc ) - 4402: f028 f8a1 bl 2c548 - 4406: 4852 ldr r0, [pc, #328] ; (4550 ) - 4408: f025 fd34 bl 29e74 - 440c: 215d movs r1, #93 ; 0x5d - 440e: 486c ldr r0, [pc, #432] ; (45c0 ) - 4410: f028 f89a bl 2c548 - 4414: 484e ldr r0, [pc, #312] ; (4550 ) - 4416: f025 fd2d bl 29e74 - 441a: 212d movs r1, #45 ; 0x2d - 441c: 4869 ldr r0, [pc, #420] ; (45c4 ) - 441e: f028 f893 bl 2c548 - 4422: 484b ldr r0, [pc, #300] ; (4550 ) - 4424: f025 fd26 bl 29e74 - 4428: 2131 movs r1, #49 ; 0x31 - 442a: 4867 ldr r0, [pc, #412] ; (45c8 ) - 442c: f028 f88c bl 2c548 - 4430: 4847 ldr r0, [pc, #284] ; (4550 ) - 4432: f025 fd1f bl 29e74 - 4436: 2124 movs r1, #36 ; 0x24 - 4438: 4864 ldr r0, [pc, #400] ; (45cc ) - 443a: f028 f885 bl 2c548 - 443e: 4844 ldr r0, [pc, #272] ; (4550 ) - 4440: f025 fd18 bl 29e74 - 4444: 211b movs r1, #27 - 4446: 4862 ldr r0, [pc, #392] ; (45d0 ) - 4448: f028 f87e bl 2c548 - 444c: 4840 ldr r0, [pc, #256] ; (4550 ) - 444e: f025 fd11 bl 29e74 + 4320: 4874 ldr r0, [pc, #464] ; (44f4 ) + 4322: f025 fe1d bl 29f60 + 4326: 2100 movs r1, #0 + 4328: 487b ldr r0, [pc, #492] ; (4518 ) + 432a: f028 f981 bl 2c630 + 432e: 4871 ldr r0, [pc, #452] ; (44f4 ) + 4330: f025 fe16 bl 29f60 + 4334: 214a movs r1, #74 ; 0x4a + 4336: 4879 ldr r0, [pc, #484] ; (451c ) + 4338: f028 f97a bl 2c630 + 433c: 486d ldr r0, [pc, #436] ; (44f4 ) + 433e: f025 fe0f bl 29f60 + 4342: 212c movs r1, #44 ; 0x2c + 4344: 4876 ldr r0, [pc, #472] ; (4520 ) + 4346: f028 f973 bl 2c630 + 434a: 486a ldr r0, [pc, #424] ; (44f4 ) + 434c: f025 fe08 bl 29f60 + 4350: 211e movs r1, #30 + 4352: 4874 ldr r0, [pc, #464] ; (4524 ) + 4354: f028 f96c bl 2c630 + 4358: 4866 ldr r0, [pc, #408] ; (44f4 ) + 435a: f025 fe01 bl 29f60 + 435e: 2118 movs r1, #24 + 4360: 4871 ldr r0, [pc, #452] ; (4528 ) + 4362: f028 f965 bl 2c630 + 4366: 4863 ldr r0, [pc, #396] ; (44f4 ) + 4368: f025 fdfa bl 29f60 + 436c: 2121 movs r1, #33 ; 0x21 + 436e: 486f ldr r0, [pc, #444] ; (452c ) + 4370: f028 f95e bl 2c630 + 4374: 485f ldr r0, [pc, #380] ; (44f4 ) + 4376: f025 fdf3 bl 29f60 + 437a: 2138 movs r1, #56 ; 0x38 + 437c: 486c ldr r0, [pc, #432] ; (4530 ) + 437e: f028 f957 bl 2c630 + 4382: 485c ldr r0, [pc, #368] ; (44f4 ) + 4384: f025 fdec bl 29f60 + 4388: 212b movs r1, #43 ; 0x2b + 438a: 486a ldr r0, [pc, #424] ; (4534 ) + 438c: f028 f950 bl 2c630 + 4390: 4858 ldr r0, [pc, #352] ; (44f4 ) + 4392: f025 fde5 bl 29f60 + 4396: 2137 movs r1, #55 ; 0x37 + 4398: 4867 ldr r0, [pc, #412] ; (4538 ) + 439a: f028 f949 bl 2c630 + 439e: 4855 ldr r0, [pc, #340] ; (44f4 ) + 43a0: f025 fdde bl 29f60 + 43a4: 2154 movs r1, #84 ; 0x54 + 43a6: 4865 ldr r0, [pc, #404] ; (453c ) + 43a8: f028 f942 bl 2c630 + 43ac: 4851 ldr r0, [pc, #324] ; (44f4 ) + 43ae: f025 fdd7 bl 29f60 + 43b2: 2137 movs r1, #55 ; 0x37 + 43b4: 4862 ldr r0, [pc, #392] ; (4540 ) + 43b6: f028 f93b bl 2c630 + 43ba: 484e ldr r0, [pc, #312] ; (44f4 ) + 43bc: f025 fdd0 bl 29f60 + 43c0: 213b movs r1, #59 ; 0x3b + 43c2: 4860 ldr r0, [pc, #384] ; (4544 ) + 43c4: f028 f934 bl 2c630 + 43c8: 484a ldr r0, [pc, #296] ; (44f4 ) + 43ca: f025 fdc9 bl 29f60 + 43ce: 2143 movs r1, #67 ; 0x43 + 43d0: 485d ldr r0, [pc, #372] ; (4548 ) + 43d2: f028 f92d bl 2c630 + 43d6: 4847 ldr r0, [pc, #284] ; (44f4 ) + 43d8: f025 fdc2 bl 29f60 + 43dc: 2160 movs r1, #96 ; 0x60 + 43de: 485b ldr r0, [pc, #364] ; (454c ) + 43e0: f028 f926 bl 2c630 + 43e4: 4843 ldr r0, [pc, #268] ; (44f4 ) + 43e6: f025 fdbb bl 29f60 + 43ea: 216f movs r1, #111 ; 0x6f + 43ec: 4858 ldr r0, [pc, #352] ; (4550 ) + 43ee: f028 f91f bl 2c630 + 43f2: 4840 ldr r0, [pc, #256] ; (44f4 ) + 43f4: f025 fdb4 bl 29f60 + 43f8: 211c movs r1, #28 + 43fa: 4856 ldr r0, [pc, #344] ; (4554 ) + 43fc: f028 f918 bl 2c630 + 4400: 483c ldr r0, [pc, #240] ; (44f4 ) + 4402: f025 fdad bl 29f60 + 4406: 2120 movs r1, #32 + 4408: 4853 ldr r0, [pc, #332] ; (4558 ) + 440a: f028 f911 bl 2c630 + 440e: 4839 ldr r0, [pc, #228] ; (44f4 ) + 4410: f025 fda6 bl 29f60 + 4414: 212f movs r1, #47 ; 0x2f + 4416: 4851 ldr r0, [pc, #324] ; (455c ) + 4418: f028 f90a bl 2c630 + 441c: 4835 ldr r0, [pc, #212] ; (44f4 ) + 441e: f025 fd9f bl 29f60 + 4422: 2147 movs r1, #71 ; 0x47 + 4424: 484e ldr r0, [pc, #312] ; (4560 ) + 4426: f028 f903 bl 2c630 + 442a: 4832 ldr r0, [pc, #200] ; (44f4 ) + 442c: f025 fd98 bl 29f60 + 4430: 2148 movs r1, #72 ; 0x48 + 4432: 484c ldr r0, [pc, #304] ; (4564 ) + 4434: f028 f8fc bl 2c630 + 4438: 482e ldr r0, [pc, #184] ; (44f4 ) + 443a: f025 fd91 bl 29f60 + 443e: 215b movs r1, #91 ; 0x5b + 4440: 4849 ldr r0, [pc, #292] ; (4568 ) + 4442: f028 f8f5 bl 2c630 + 4446: 482b ldr r0, [pc, #172] ; (44f4 ) + 4448: f025 fd8a bl 29f60 + 444c: 215d movs r1, #93 ; 0x5d + 444e: 4847 ldr r0, [pc, #284] ; (456c ) + 4450: f028 f8ee bl 2c630 + 4454: 4827 ldr r0, [pc, #156] ; (44f4 ) + 4456: f025 fd83 bl 29f60 + 445a: 212d movs r1, #45 ; 0x2d + 445c: 4844 ldr r0, [pc, #272] ; (4570 ) + 445e: f028 f8e7 bl 2c630 + 4462: 4824 ldr r0, [pc, #144] ; (44f4 ) + 4464: f025 fd7c bl 29f60 + 4468: 2131 movs r1, #49 ; 0x31 + 446a: 4842 ldr r0, [pc, #264] ; (4574 ) + 446c: f028 f8e0 bl 2c630 + 4470: 4820 ldr r0, [pc, #128] ; (44f4 ) + 4472: f025 fd75 bl 29f60 + 4476: 2124 movs r1, #36 ; 0x24 + 4478: 483f ldr r0, [pc, #252] ; (4578 ) + 447a: f028 f8d9 bl 2c630 + 447e: 481d ldr r0, [pc, #116] ; (44f4 ) + 4480: f025 fd6e bl 29f60 + 4484: 211b movs r1, #27 + 4486: 483d ldr r0, [pc, #244] ; (457c ) + 4488: f028 f8d2 bl 2c630 + 448c: 4819 ldr r0, [pc, #100] ; (44f4 ) + 448e: f025 fd67 bl 29f60 printDebugHeader(debugInput); - 4452: 4620 mov r0, r4 - 4454: f7ff f938 bl 36c8 + 4492: 4620 mov r0, r4 + 4494: f7ff f918 bl 36c8 } - 4458: b00c add sp, #48 ; 0x30 - 445a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 4498: b00c add sp, #48 ; 0x30 + 449a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} } else if(BMC_STR_MATCH(debugInput,"fasDebug")){ - 445e: 495d ldr r1, [pc, #372] ; (45d4 ) - 4460: 9806 ldr r0, [sp, #24] - 4462: 4288 cmp r0, r1 - 4464: f47f ad47 bne.w 3ef6 - 4468: f89d 101c ldrb.w r1, [sp, #28] - 446c: 2900 cmp r1, #0 - 446e: f47f ad42 bne.w 3ef6 + 449e: 4938 ldr r1, [pc, #224] ; (4580 ) + 44a0: 9806 ldr r0, [sp, #24] + 44a2: 4288 cmp r0, r1 + 44a4: f47f ad27 bne.w 3ef6 + 44a8: f89d 101c ldrb.w r1, [sp, #28] + 44ac: 2900 cmp r1, #0 + 44ae: f47f ad22 bne.w 3ef6 printDebugHeader(debugInput); - 4472: 4620 mov r0, r4 + 44b2: 4620 mov r0, r4 flags ^= 1UL << bit; - 4474: f506 5680 add.w r6, r6, #4096 ; 0x1000 - 4478: f7ff f926 bl 36c8 - 447c: 210a movs r1, #10 - 447e: 4856 ldr r0, [pc, #344] ; (45d8 ) - 4480: f028 f862 bl 2c548 - 4484: 2101 movs r1, #1 - 4486: 4835 ldr r0, [pc, #212] ; (455c ) - 4488: f028 f85e bl 2c548 - 448c: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + 44b4: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 44b8: f7ff f906 bl 36c8 + 44bc: 210a movs r1, #10 + 44be: 4831 ldr r0, [pc, #196] ; (4584 ) + 44c0: f028 f8b6 bl 2c630 + 44c4: 2101 movs r1, #1 + 44c6: 480c ldr r0, [pc, #48] ; (44f8 ) + 44c8: f028 f8b2 bl 2c630 + 44cc: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 size_t print(int n) { return print((long)n); } - 4490: 482f ldr r0, [pc, #188] ; (4550 ) - 4492: f483 7380 eor.w r3, r3, #256 ; 0x100 - 4496: f3c3 2100 ubfx r1, r3, #8, #1 - 449a: f8a6 3860 strh.w r3, [r6, #2144] ; 0x860 - 449e: f025 fcdd bl 29e5c + 44d0: 4808 ldr r0, [pc, #32] ; (44f4 ) + 44d2: f483 7380 eor.w r3, r3, #256 ; 0x100 + 44d6: f3c3 2100 ubfx r1, r3, #8, #1 + 44da: f8a6 3860 strh.w r3, [r6, #2144] ; 0x860 + 44de: f025 fd33 bl 29f48 size_t println(int n) { return print(n) + println(); } - 44a2: 482b ldr r0, [pc, #172] ; (4550 ) - 44a4: f025 fce6 bl 29e74 - 44a8: e715 b.n 42d6 + 44e2: 4804 ldr r0, [pc, #16] ; (44f4 ) + 44e4: f025 fd3c bl 29f60 + 44e8: e707 b.n 42fa if(BMC_STR_MATCH(debugInput,"") || BMC_STR_MATCH(debugInput,"help")){ - 44aa: 7922 ldrb r2, [r4, #4] - 44ac: 2a00 cmp r2, #0 - 44ae: f43f af17 beq.w 42e0 - 44b2: e516 b.n 3ee2 + 44ea: 7922 ldrb r2, [r4, #4] + 44ec: 2a00 cmp r2, #0 + 44ee: f43f af09 beq.w 4304 + 44f2: e4f6 b.n 3ee2 + 44f4: 20004c68 .word 0x20004c68 + 44f8: 200023ec .word 0x200023ec + 44fc: 200036b8 .word 0x200036b8 + 4500: 200036c4 .word 0x200036c4 + 4504: 200033ac .word 0x200033ac + 4508: 200036d8 .word 0x200036d8 + 450c: 200036b0 .word 0x200036b0 + 4510: 20002a1c .word 0x20002a1c + 4514: 20002a24 .word 0x20002a24 + 4518: 20003d18 .word 0x20003d18 + 451c: 20002a44 .word 0x20002a44 + 4520: 20002a90 .word 0x20002a90 + 4524: 20002ac0 .word 0x20002ac0 + 4528: 20002ae0 .word 0x20002ae0 + 452c: 20002afc .word 0x20002afc + 4530: 20002b20 .word 0x20002b20 + 4534: 20002b5c .word 0x20002b5c + 4538: 20002b88 .word 0x20002b88 + 453c: 20002bc0 .word 0x20002bc0 + 4540: 20002c18 .word 0x20002c18 + 4544: 20002c50 .word 0x20002c50 + 4548: 20002c8c .word 0x20002c8c + 454c: 20002cd0 .word 0x20002cd0 + 4550: 20002d34 .word 0x20002d34 + 4554: 20002da4 .word 0x20002da4 + 4558: 20002dc4 .word 0x20002dc4 + 455c: 20002de8 .word 0x20002de8 + 4560: 20002e18 .word 0x20002e18 + 4564: 20002e60 .word 0x20002e60 + 4568: 20002eac .word 0x20002eac + 456c: 20002f08 .word 0x20002f08 + 4570: 20002f68 .word 0x20002f68 + 4574: 20002f98 .word 0x20002f98 + 4578: 20002fcc .word 0x20002fcc + 457c: 20002ff4 .word 0x20002ff4 + 4580: 67756265 .word 0x67756265 + 4584: 20003040 .word 0x20003040 } else if(BMC_STR_MATCH(debugInput,"fasConnection")){ - 44b4: 4949 ldr r1, [pc, #292] ; (45dc ) - 44b6: 9806 ldr r0, [sp, #24] - 44b8: 4288 cmp r0, r1 - 44ba: f47f ad17 bne.w 3eec - 44be: f101 611f add.w r1, r1, #166723584 ; 0x9f00000 - 44c2: 9807 ldr r0, [sp, #28] - 44c4: f501 2130 add.w r1, r1, #720896 ; 0xb0000 - 44c8: f201 51f4 addw r1, r1, #1524 ; 0x5f4 - 44cc: 4288 cmp r0, r1 - 44ce: f47f ad0d bne.w 3eec - 44d2: f8bd 1020 ldrh.w r1, [sp, #32] - 44d6: 296e cmp r1, #110 ; 0x6e - 44d8: f47f ad08 bne.w 3eec + 4588: 49bc ldr r1, [pc, #752] ; (487c ) + 458a: 9806 ldr r0, [sp, #24] + 458c: 4288 cmp r0, r1 + 458e: f47f acad bne.w 3eec + 4592: f101 611f add.w r1, r1, #166723584 ; 0x9f00000 + 4596: 9807 ldr r0, [sp, #28] + 4598: f501 2130 add.w r1, r1, #720896 ; 0xb0000 + 459c: f201 51f4 addw r1, r1, #1524 ; 0x5f4 + 45a0: 4288 cmp r0, r1 + 45a2: f47f aca3 bne.w 3eec + 45a6: f8bd 1020 ldrh.w r1, [sp, #32] + 45aa: 296e cmp r1, #110 ; 0x6e + 45ac: f47f ac9e bne.w 3eec printDebugHeader(debugInput); - 44dc: 4620 mov r0, r4 + 45b0: 4620 mov r0, r4 } else if(BMC_STR_MATCH(debugInput,"fasConnection")){ - 44de: 2700 movs r7, #0 + 45b2: 2700 movs r7, #0 printDebugHeader(debugInput); - 44e0: f7ff f8f2 bl 36c8 + 45b4: f7ff f888 bl 36c8 return bitRead(flags, 0); - 44e4: f895 3373 ldrb.w r3, [r5, #883] ; 0x373 + 45b8: f895 3393 ldrb.w r3, [r5, #915] ; 0x393 if(sync.fas.connected()){ - 44e8: 07da lsls r2, r3, #31 - 44ea: f57f aef4 bpl.w 42d6 - 44ee: 2113 movs r1, #19 - 44f0: 483b ldr r0, [pc, #236] ; (45e0 ) - 44f2: f028 f829 bl 2c548 + 45bc: 07da lsls r2, r3, #31 + 45be: f57f ae9c bpl.w 42fa + 45c2: 2113 movs r1, #19 + 45c4: 48ae ldr r0, [pc, #696] ; (4880 ) + 45c6: f028 f833 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 44f6: 4816 ldr r0, [pc, #88] ; (4550 ) - 44f8: f025 fcbc bl 29e74 + 45ca: 48ae ldr r0, [pc, #696] ; (4884 ) + 45cc: f025 fcc8 bl 29f60 max = 512; - 44fc: f44f 7300 mov.w r3, #512 ; 0x200 + 45d0: f44f 7300 mov.w r3, #512 ; 0x200 + strcpy(noteName, ""); + 45d4: f506 5653 add.w r6, r6, #13504 ; 0x34c0 id = 0; - 4500: f8a5 7370 strh.w r7, [r5, #880] ; 0x370 + 45d8: f8a5 7390 strh.w r7, [r5, #912] ; 0x390 max = 512; - 4504: f8a5 3374 strh.w r3, [r5, #884] ; 0x374 + 45dc: f8a5 3394 strh.w r3, [r5, #916] ; 0x394 bitWrite(flags, 1, 1); - 4508: 2302 movs r3, #2 + 45e0: 2302 movs r3, #2 data = 0; - 450a: f885 7377 strb.w r7, [r5, #887] ; 0x377 - 450e: f885 3373 strb.w r3, [r5, #883] ; 0x373 - strcpy(noteName, ""); - 4512: f243 43a0 movw r3, #13472 ; 0x34a0 + 45e2: f885 7397 strb.w r7, [r5, #919] ; 0x397 + 45e6: f885 3393 strb.w r3, [r5, #915] ; 0x393 position = 0; - 4516: f885 7378 strb.w r7, [r5, #888] ; 0x378 + 45ea: f885 7398 strb.w r7, [r5, #920] ; 0x398 stringNumber = 0; - 451a: f8a5 7498 strh.w r7, [r5, #1176] ; 0x498 + 45ee: f8a5 74b8 strh.w r7, [r5, #1208] ; 0x4b8 pitchRaw = 0; - 451e: f885 749a strb.w r7, [r5, #1178] ; 0x49a + 45f2: f885 74ba strb.w r7, [r5, #1210] ; 0x4ba prevTime = 0; - 4522: f8c5 7380 str.w r7, [r5, #896] ; 0x380 - 4526: f8c5 7388 str.w r7, [r5, #904] ; 0x388 + 45f6: f8c5 73a0 str.w r7, [r5, #928] ; 0x3a0 + 45fa: f8c5 73a8 str.w r7, [r5, #936] ; 0x3a8 pitch = 0; - 452a: f8c5 749c str.w r7, [r5, #1180] ; 0x49c + 45fe: f8c5 74bc str.w r7, [r5, #1212] ; 0x4bc strcpy(noteName, ""); - 452e: 559f strb r7, [r3, r6] + 4602: 7037 strb r7, [r6, #0] return false; } BMC_PRINTLN("--> FAS3 Disconnect"); device.disconnect(); tuner.reset(); if(midi.callback.fasConnection){ - 4530: f8d5 3354 ldr.w r3, [r5, #852] ; 0x354 + 4604: f8d5 3374 ldr.w r3, [r5, #884] ; 0x374 flags = 0; - 4534: f885 74a3 strb.w r7, [r5, #1187] ; 0x4a3 - 4538: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 453c: f8c5 74a8 str.w r7, [r5, #1192] ; 0x4a8 - 4540: f8d3 30c8 ldr.w r3, [r3, #200] ; 0xc8 - 4544: 2b00 cmp r3, #0 - 4546: f43f aec6 beq.w 42d6 + 4608: f885 74c3 strb.w r7, [r5, #1219] ; 0x4c3 + 460c: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 4610: f8c5 74c8 str.w r7, [r5, #1224] ; 0x4c8 + 4614: f8d3 30cc ldr.w r3, [r3, #204] ; 0xcc + 4618: 2b00 cmp r3, #0 + 461a: f43f ae6e beq.w 42fa midi.callback.fasConnection(false); - 454a: 4638 mov r0, r7 - 454c: 4798 blx r3 + 461e: 4638 mov r0, r7 + 4620: 4798 blx r3 printDebugHeader(debugInput); - 454e: e6c2 b.n 42d6 - 4550: 20004ba8 .word 0x20004ba8 - 4554: 200035f8 .word 0x200035f8 - 4558: 20003604 .word 0x20003604 - 455c: 200023ec .word 0x200023ec - 4560: 200032ec .word 0x200032ec - 4564: 20003618 .word 0x20003618 - 4568: 200035f0 .word 0x200035f0 - 456c: 20002a14 .word 0x20002a14 - 4570: 20002a1c .word 0x20002a1c - 4574: 20003c58 .word 0x20003c58 - 4578: 20002a3c .word 0x20002a3c - 457c: 20002a88 .word 0x20002a88 - 4580: 20002ab8 .word 0x20002ab8 - 4584: 20002ad8 .word 0x20002ad8 - 4588: 20002af4 .word 0x20002af4 - 458c: 20002b18 .word 0x20002b18 - 4590: 20002b54 .word 0x20002b54 - 4594: 20002b80 .word 0x20002b80 - 4598: 20002bb8 .word 0x20002bb8 - 459c: 20002bf4 .word 0x20002bf4 - 45a0: 20002c38 .word 0x20002c38 - 45a4: 20002c9c .word 0x20002c9c - 45a8: 20002d0c .word 0x20002d0c - 45ac: 20002d2c .word 0x20002d2c - 45b0: 20002d50 .word 0x20002d50 - 45b4: 20002d80 .word 0x20002d80 - 45b8: 20002dc8 .word 0x20002dc8 - 45bc: 20002e14 .word 0x20002e14 - 45c0: 20002e70 .word 0x20002e70 - 45c4: 20002ed0 .word 0x20002ed0 - 45c8: 20002f00 .word 0x20002f00 - 45cc: 20002f34 .word 0x20002f34 - 45d0: 20002f5c .word 0x20002f5c - 45d4: 67756265 .word 0x67756265 - 45d8: 20002fa8 .word 0x20002fa8 - 45dc: 656e6e6f .word 0x656e6e6f - 45e0: 20002f88 .word 0x20002f88 + 4622: e66a b.n 42fa } else if(BMC_STR_MATCH(debugInput,"runTime")){ - 45e4: 4f98 ldr r7, [pc, #608] ; (4848 ) - 45e6: 6860 ldr r0, [r4, #4] - 45e8: 42b8 cmp r0, r7 - 45ea: f47f ac94 bne.w 3f16 + 4624: 4f98 ldr r7, [pc, #608] ; (4888 ) + 4626: 6860 ldr r0, [r4, #4] + 4628: 42b8 cmp r0, r7 + 462a: f47f ac74 bne.w 3f16 printDebugHeader(debugInput); - 45ee: 4620 mov r0, r4 - 45f0: f7ff f86a bl 36c8 - 45f4: 2108 movs r1, #8 - 45f6: 4895 ldr r0, [pc, #596] ; (484c ) - 45f8: f027 ffa6 bl 2c548 - 45fc: 2101 movs r1, #1 - 45fe: 4894 ldr r0, [pc, #592] ; (4850 ) - 4600: f027 ffa2 bl 2c548 - 4604: 4993 ldr r1, [pc, #588] ; (4854 ) + 462e: 4620 mov r0, r4 + 4630: f7ff f84a bl 36c8 + 4634: 2108 movs r1, #8 + 4636: 4895 ldr r0, [pc, #596] ; (488c ) + 4638: f027 fffa bl 2c630 + 463c: 2101 movs r1, #1 + 463e: 4894 ldr r0, [pc, #592] ; (4890 ) + 4640: f027 fff6 bl 2c630 + 4644: 4993 ldr r1, [pc, #588] ; (4894 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 4606: 2300 movs r3, #0 - 4608: 220a movs r2, #10 - 460a: 6809 ldr r1, [r1, #0] - 460c: 4892 ldr r0, [pc, #584] ; (4858 ) - 460e: f025 fc4d bl 29eac + 4646: 2300 movs r3, #0 + 4648: 220a movs r2, #10 + 464a: 6809 ldr r1, [r1, #0] + 464c: 488d ldr r0, [pc, #564] ; (4884 ) + 464e: f025 fca3 bl 29f98 size_t println(unsigned long n) { return print(n) + println(); } - 4612: 4891 ldr r0, [pc, #580] ; (4858 ) - 4614: f025 fc2e bl 29e74 + 4652: 488c ldr r0, [pc, #560] ; (4884 ) + 4654: f025 fc84 bl 29f60 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 4618: 2300 movs r3, #0 - 461a: 220a movs r2, #10 - 461c: f8d5 1820 ldr.w r1, [r5, #2080] ; 0x820 - 4620: 488d ldr r0, [pc, #564] ; (4858 ) - 4622: f025 fc43 bl 29eac - 4626: 2101 movs r1, #1 - 4628: 4889 ldr r0, [pc, #548] ; (4850 ) - 462a: f027 ff8d bl 2c548 - 462e: 2107 movs r1, #7 - 4630: 488a ldr r0, [pc, #552] ; (485c ) - 4632: f027 ff89 bl 2c548 + 4658: 2300 movs r3, #0 + 465a: 220a movs r2, #10 + 465c: f8d5 1840 ldr.w r1, [r5, #2112] ; 0x840 + 4660: 4888 ldr r0, [pc, #544] ; (4884 ) + 4662: f025 fc99 bl 29f98 + 4666: 2101 movs r1, #1 + 4668: 4889 ldr r0, [pc, #548] ; (4890 ) + 466a: f027 ffe1 bl 2c630 + 466e: 2107 movs r1, #7 + 4670: 4889 ldr r0, [pc, #548] ; (4898 ) + 4672: f027 ffdd bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 4636: 4888 ldr r0, [pc, #544] ; (4858 ) - 4638: f025 fc1c bl 29e74 + 4676: 4883 ldr r0, [pc, #524] ; (4884 ) + 4678: f025 fc72 bl 29f60 return seconds / 60; - 463c: f8d5 2820 ldr.w r2, [r5, #2080] ; 0x820 - 4640: 4987 ldr r1, [pc, #540] ; (4860 ) + 467c: f8d5 2840 ldr.w r2, [r5, #2112] ; 0x840 + 4680: 4986 ldr r1, [pc, #536] ; (489c ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 4642: 2300 movs r3, #0 - 4644: 4884 ldr r0, [pc, #528] ; (4858 ) - 4646: fba1 1202 umull r1, r2, r1, r2 - 464a: 0951 lsrs r1, r2, #5 - 464c: 220a movs r2, #10 - 464e: f025 fc2d bl 29eac - 4652: 2101 movs r1, #1 - 4654: 487e ldr r0, [pc, #504] ; (4850 ) - 4656: f027 ff77 bl 2c548 - 465a: 2107 movs r1, #7 - 465c: 4881 ldr r0, [pc, #516] ; (4864 ) - 465e: f027 ff73 bl 2c548 + 4682: 2300 movs r3, #0 + 4684: 487f ldr r0, [pc, #508] ; (4884 ) + 4686: fba1 1202 umull r1, r2, r1, r2 + 468a: 0951 lsrs r1, r2, #5 + 468c: 220a movs r2, #10 + 468e: f025 fc83 bl 29f98 + 4692: 2101 movs r1, #1 + 4694: 487e ldr r0, [pc, #504] ; (4890 ) + 4696: f027 ffcb bl 2c630 + 469a: 2107 movs r1, #7 + 469c: 4880 ldr r0, [pc, #512] ; (48a0 ) + 469e: f027 ffc7 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 4662: 487d ldr r0, [pc, #500] ; (4858 ) - 4664: f025 fc06 bl 29e74 + 46a2: 4878 ldr r0, [pc, #480] ; (4884 ) + 46a4: f025 fc5c bl 29f60 return seconds / 3600; - 4668: f8d5 2820 ldr.w r2, [r5, #2080] ; 0x820 - 466c: 497e ldr r1, [pc, #504] ; (4868 ) + 46a8: f8d5 2840 ldr.w r2, [r5, #2112] ; 0x840 + 46ac: 497d ldr r1, [pc, #500] ; (48a4 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 466e: 2300 movs r3, #0 - 4670: 4879 ldr r0, [pc, #484] ; (4858 ) - 4672: fba1 1202 umull r1, r2, r1, r2 - 4676: 0ad1 lsrs r1, r2, #11 - 4678: 220a movs r2, #10 - 467a: f025 fc17 bl 29eac - 467e: 2101 movs r1, #1 - 4680: 4873 ldr r0, [pc, #460] ; (4850 ) - 4682: f027 ff61 bl 2c548 - 4686: 2105 movs r1, #5 - 4688: 4878 ldr r0, [pc, #480] ; (486c ) - 468a: f027 ff5d bl 2c548 + 46ae: 2300 movs r3, #0 + 46b0: 4874 ldr r0, [pc, #464] ; (4884 ) + 46b2: fba1 1202 umull r1, r2, r1, r2 + 46b6: 0ad1 lsrs r1, r2, #11 + 46b8: 220a movs r2, #10 + 46ba: f025 fc6d bl 29f98 + 46be: 2101 movs r1, #1 + 46c0: 4873 ldr r0, [pc, #460] ; (4890 ) + 46c2: f027 ffb5 bl 2c630 + 46c6: 2105 movs r1, #5 + 46c8: 4877 ldr r0, [pc, #476] ; (48a8 ) + 46ca: f027 ffb1 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 468e: 4872 ldr r0, [pc, #456] ; (4858 ) - 4690: f025 fbf0 bl 29e74 + 46ce: 486d ldr r0, [pc, #436] ; (4884 ) + 46d0: f025 fc46 bl 29f60 return seconds / 86400; - 4694: f8d5 1820 ldr.w r1, [r5, #2080] ; 0x820 - 4698: 4875 ldr r0, [pc, #468] ; (4870 ) + 46d4: f8d5 1840 ldr.w r1, [r5, #2112] ; 0x840 + 46d8: 4874 ldr r0, [pc, #464] ; (48ac ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 469a: 2300 movs r3, #0 - 469c: 220a movs r2, #10 - 469e: fba0 0101 umull r0, r1, r0, r1 - 46a2: 486d ldr r0, [pc, #436] ; (4858 ) - 46a4: 0c09 lsrs r1, r1, #16 - 46a6: f025 fc01 bl 29eac - 46aa: 2101 movs r1, #1 - 46ac: 4868 ldr r0, [pc, #416] ; (4850 ) - 46ae: f027 ff4b bl 2c548 - 46b2: 2104 movs r1, #4 - 46b4: 486f ldr r0, [pc, #444] ; (4874 ) - 46b6: e6c7 b.n 4448 + 46da: 2300 movs r3, #0 + 46dc: 220a movs r2, #10 + 46de: fba0 0101 umull r0, r1, r0, r1 + 46e2: 4868 ldr r0, [pc, #416] ; (4884 ) + 46e4: 0c09 lsrs r1, r1, #16 + 46e6: f025 fc57 bl 29f98 + 46ea: 2101 movs r1, #1 + 46ec: 4868 ldr r0, [pc, #416] ; (4890 ) + 46ee: f027 ff9f bl 2c630 + 46f2: 2104 movs r1, #4 + 46f4: 486e ldr r0, [pc, #440] ; (48b0 ) + 46f6: e6c7 b.n 4488 } else if(BMC_STR_MATCH(debugInput,"flush")){ - 46b8: 88a0 ldrh r0, [r4, #4] - 46ba: 2868 cmp r0, #104 ; 0x68 - 46bc: f47f ac20 bne.w 3f00 + 46f8: 88a0 ldrh r0, [r4, #4] + 46fa: 2868 cmp r0, #104 ; 0x68 + 46fc: f47f ac00 bne.w 3f00 Port.flush(); - 46c0: f506 5600 add.w r6, r6, #8192 ; 0x2000 + 4700: f506 5600 add.w r6, r6, #8192 ; 0x2000 printDebugHeader(debugInput); - 46c4: 4620 mov r0, r4 - 46c6: f7fe ffff bl 36c8 - 46ca: f8d6 02f8 ldr.w r0, [r6, #760] ; 0x2f8 - 46ce: 6803 ldr r3, [r0, #0] - 46d0: 68db ldr r3, [r3, #12] - 46d2: 4798 blx r3 - 46d4: f8d6 0408 ldr.w r0, [r6, #1032] ; 0x408 - 46d8: 6803 ldr r3, [r0, #0] - 46da: 68db ldr r3, [r3, #12] - 46dc: 4798 blx r3 + 4704: 4620 mov r0, r4 + 4706: f7fe ffdf bl 36c8 + 470a: f8d6 02f8 ldr.w r0, [r6, #760] ; 0x2f8 + 470e: 6803 ldr r3, [r0, #0] + 4710: 68db ldr r3, [r3, #12] + 4712: 4798 blx r3 printDebugHeader(debugInput); - 46de: 4620 mov r0, r4 - 46e0: f7fe fff2 bl 36c8 - 46e4: f7ff bbdb b.w 3e9e + 4714: 4620 mov r0, r4 + 4716: f7fe ffd7 bl 36c8 + 471a: f7ff bbc0 b.w 3e9e } else if(BMC_STR_MATCH(debugInput,"storageDebug")){ - 46e8: f100 4052 add.w r0, r0, #3523215360 ; 0xd2000000 - 46ec: 9f06 ldr r7, [sp, #24] - 46ee: f5a0 2020 sub.w r0, r0, #655360 ; 0xa0000 - 46f2: f6a0 5012 subw r0, r0, #3346 ; 0xd12 - 46f6: 4287 cmp r7, r0 - 46f8: f47f ac07 bne.w 3f0a - 46fc: f100 500c add.w r0, r0, #587202560 ; 0x23000000 - 4700: 9f07 ldr r7, [sp, #28] - 4702: f500 207f add.w r0, r0, #1044480 ; 0xff000 - 4706: f600 3004 addw r0, r0, #2820 ; 0xb04 - 470a: 4287 cmp r7, r0 - 470c: f47f abfd bne.w 3f0a - 4710: f89d 0020 ldrb.w r0, [sp, #32] - 4714: 2800 cmp r0, #0 - 4716: f47f abf8 bne.w 3f0a + 471e: f100 4052 add.w r0, r0, #3523215360 ; 0xd2000000 + 4722: 9f06 ldr r7, [sp, #24] + 4724: f5a0 2020 sub.w r0, r0, #655360 ; 0xa0000 + 4728: f6a0 5012 subw r0, r0, #3346 ; 0xd12 + 472c: 4287 cmp r7, r0 + 472e: f47f abec bne.w 3f0a + 4732: f100 500c add.w r0, r0, #587202560 ; 0x23000000 + 4736: 9f07 ldr r7, [sp, #28] + 4738: f500 207f add.w r0, r0, #1044480 ; 0xff000 + 473c: f600 3004 addw r0, r0, #2820 ; 0xb04 + 4740: 4287 cmp r7, r0 + 4742: f47f abe2 bne.w 3f0a + 4746: f89d 0020 ldrb.w r0, [sp, #32] + 474a: 2800 cmp r0, #0 + 474c: f47f abdd bne.w 3f0a printDebugHeader(debugInput); - 471a: 4620 mov r0, r4 + 4750: 4620 mov r0, r4 flags ^= 1UL << bit; - 471c: f506 5680 add.w r6, r6, #4096 ; 0x1000 - 4720: f7fe ffd2 bl 36c8 - 4724: 210e movs r1, #14 - 4726: 4854 ldr r0, [pc, #336] ; (4878 ) - 4728: f027 ff0e bl 2c548 - 472c: 2101 movs r1, #1 - 472e: 4848 ldr r0, [pc, #288] ; (4850 ) - 4730: f027 ff0a bl 2c548 - 4734: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + 4752: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 4756: f7fe ffb7 bl 36c8 + 475a: 210e movs r1, #14 + 475c: 4855 ldr r0, [pc, #340] ; (48b4 ) + 475e: f027 ff67 bl 2c630 + 4762: 2101 movs r1, #1 + 4764: 484a ldr r0, [pc, #296] ; (4890 ) + 4766: f027 ff63 bl 2c630 + 476a: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 size_t print(int n) { return print((long)n); } - 4738: 4847 ldr r0, [pc, #284] ; (4858 ) - 473a: f083 0301 eor.w r3, r3, #1 - 473e: f003 0101 and.w r1, r3, #1 - 4742: e6aa b.n 449a + 476e: 4845 ldr r0, [pc, #276] ; (4884 ) + 4770: f083 0301 eor.w r3, r3, #1 + 4774: f003 0101 and.w r1, r3, #1 + 4778: e6af b.n 44da } else if(BMC_STR_MATCH(debugInput,"pots")){ - 4744: 7927 ldrb r7, [r4, #4] - 4746: 2f00 cmp r7, #0 - 4748: f47f abe9 bne.w 3f1e + 477a: 7927 ldrb r7, [r4, #4] + 477c: 2f00 cmp r7, #0 + 477e: f47f abce bne.w 3f1e printDebugHeader(debugInput); - 474c: 4620 mov r0, r4 - 474e: f506 5680 add.w r6, r6, #4096 ; 0x1000 - 4752: f7fe ffb9 bl 36c8 - 4756: 210a movs r1, #10 - 4758: 4848 ldr r0, [pc, #288] ; (487c ) - 475a: f027 fef5 bl 2c548 - 475e: 2101 movs r1, #1 - 4760: 483b ldr r0, [pc, #236] ; (4850 ) - 4762: f027 fef1 bl 2c548 - 4766: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 - 476a: 483b ldr r0, [pc, #236] ; (4858 ) - 476c: f483 7300 eor.w r3, r3, #512 ; 0x200 - 4770: f3c3 2140 ubfx r1, r3, #9, #1 - 4774: e691 b.n 449a + 4782: 4620 mov r0, r4 + 4784: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 4788: f7fe ff9e bl 36c8 + 478c: 210a movs r1, #10 + 478e: 484a ldr r0, [pc, #296] ; (48b8 ) + 4790: f027 ff4e bl 2c630 + 4794: 2101 movs r1, #1 + 4796: 483e ldr r0, [pc, #248] ; (4890 ) + 4798: f027 ff4a bl 2c630 + 479c: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + 47a0: 4838 ldr r0, [pc, #224] ; (4884 ) + 47a2: f483 7300 eor.w r3, r3, #512 ; 0x200 + 47a6: f3c3 2140 ubfx r1, r3, #9, #1 + 47aa: e696 b.n 44da } else if(BMC_STR_MATCH(debugInput,"stopwatch")){ - 4776: f107 4773 add.w r7, r7, #4076863488 ; 0xf3000000 - 477a: 9806 ldr r0, [sp, #24] - 477c: f107 1704 add.w r7, r7, #262148 ; 0x40004 - 4780: f507 476d add.w r7, r7, #60672 ; 0xed00 - 4784: 42b8 cmp r0, r7 - 4786: f47f abd0 bne.w 3f2a - 478a: f8bd 701c ldrh.w r7, [sp, #28] - 478e: 2f68 cmp r7, #104 ; 0x68 - 4790: f47f abcb bne.w 3f2a + 47ac: f107 4773 add.w r7, r7, #4076863488 ; 0xf3000000 + 47b0: 9806 ldr r0, [sp, #24] + 47b2: f107 1704 add.w r7, r7, #262148 ; 0x40004 + 47b6: f507 476d add.w r7, r7, #60672 ; 0xed00 + 47ba: 42b8 cmp r0, r7 + 47bc: f47f abb5 bne.w 3f2a + 47c0: f8bd 701c ldrh.w r7, [sp, #28] + 47c4: 2f68 cmp r7, #104 ; 0x68 + 47c6: f47f abb0 bne.w 3f2a printDebugHeader(debugInput); - 4794: 4620 mov r0, r4 - 4796: f7fe ff97 bl 36c8 + 47ca: 4620 mov r0, r4 + 47cc: f7fe ff7c bl 36c8 if(active()){ - 479a: f895 3824 ldrb.w r3, [r5, #2084] ; 0x824 - 479e: 2b00 cmp r3, #0 - 47a0: d049 beq.n 4836 + 47d0: f895 3844 ldrb.w r3, [r5, #2116] ; 0x844 + 47d4: 2b00 cmp r3, #0 + 47d6: d049 beq.n 486c return (timeout>0 && (current >= timeout)); - 47a2: f8d5 3828 ldr.w r3, [r5, #2088] ; 0x828 - 47a6: 2b00 cmp r3, #0 - 47a8: f040 80d2 bne.w 4950 + 47d8: f8d5 3848 ldr.w r3, [r5, #2120] ; 0x848 + 47dc: 2b00 cmp r3, #0 + 47de: f040 80d5 bne.w 498c BMC_PRINTLN("Stopwatch Active"); - 47ac: 4934 ldr r1, [pc, #208] ; (4880 ) - 47ae: 482a ldr r0, [pc, #168] ; (4858 ) - 47b0: f7fe ff78 bl 36a4 + 47e2: 4936 ldr r1, [pc, #216] ; (48bc ) + 47e4: 4827 ldr r0, [pc, #156] ; (4884 ) + 47e6: f7fe ff5d bl 36a4 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 47b4: 2300 movs r3, #0 - 47b6: 220a movs r2, #10 - 47b8: f895 1830 ldrb.w r1, [r5, #2096] ; 0x830 - 47bc: 4826 ldr r0, [pc, #152] ; (4858 ) - 47be: f025 fb75 bl 29eac - 47c2: 2101 movs r1, #1 - 47c4: 4822 ldr r0, [pc, #136] ; (4850 ) - 47c6: f027 febf bl 2c548 - 47ca: 2105 movs r1, #5 - 47cc: 4827 ldr r0, [pc, #156] ; (486c ) - 47ce: f027 febb bl 2c548 + 47ea: 2300 movs r3, #0 + 47ec: 220a movs r2, #10 + 47ee: f895 1850 ldrb.w r1, [r5, #2128] ; 0x850 + 47f2: 4824 ldr r0, [pc, #144] ; (4884 ) + 47f4: f025 fbd0 bl 29f98 + 47f8: 2101 movs r1, #1 + 47fa: 4825 ldr r0, [pc, #148] ; (4890 ) + 47fc: f027 ff18 bl 2c630 + 4800: 2105 movs r1, #5 + 4802: 4829 ldr r0, [pc, #164] ; (48a8 ) + 4804: f027 ff14 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 47d2: 4821 ldr r0, [pc, #132] ; (4858 ) - 47d4: f025 fb4e bl 29e74 + 4808: 481e ldr r0, [pc, #120] ; (4884 ) + 480a: f025 fba9 bl 29f60 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 47d8: 2300 movs r3, #0 - 47da: 220a movs r2, #10 - 47dc: f895 1831 ldrb.w r1, [r5, #2097] ; 0x831 - 47e0: 481d ldr r0, [pc, #116] ; (4858 ) - 47e2: f025 fb63 bl 29eac - 47e6: 2101 movs r1, #1 - 47e8: 4819 ldr r0, [pc, #100] ; (4850 ) - 47ea: f027 fead bl 2c548 - 47ee: 2107 movs r1, #7 - 47f0: 481c ldr r0, [pc, #112] ; (4864 ) - 47f2: f027 fea9 bl 2c548 + 480e: 2300 movs r3, #0 + 4810: 220a movs r2, #10 + 4812: f895 1851 ldrb.w r1, [r5, #2129] ; 0x851 + 4816: 481b ldr r0, [pc, #108] ; (4884 ) + 4818: f025 fbbe bl 29f98 + 481c: 2101 movs r1, #1 + 481e: 481c ldr r0, [pc, #112] ; (4890 ) + 4820: f027 ff06 bl 2c630 + 4824: 2107 movs r1, #7 + 4826: 481e ldr r0, [pc, #120] ; (48a0 ) + 4828: f027 ff02 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 47f6: 4818 ldr r0, [pc, #96] ; (4858 ) - 47f8: f025 fb3c bl 29e74 + 482c: 4815 ldr r0, [pc, #84] ; (4884 ) + 482e: f025 fb97 bl 29f60 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 47fc: 2300 movs r3, #0 - 47fe: 220a movs r2, #10 - 4800: f895 1832 ldrb.w r1, [r5, #2098] ; 0x832 - 4804: 4814 ldr r0, [pc, #80] ; (4858 ) - 4806: f025 fb51 bl 29eac - 480a: 2101 movs r1, #1 - 480c: 4810 ldr r0, [pc, #64] ; (4850 ) - 480e: f027 fe9b bl 2c548 - 4812: 2107 movs r1, #7 - 4814: 4811 ldr r0, [pc, #68] ; (485c ) - 4816: e617 b.n 4448 + 4832: 2300 movs r3, #0 + 4834: 220a movs r2, #10 + 4836: f895 1852 ldrb.w r1, [r5, #2130] ; 0x852 + 483a: 4812 ldr r0, [pc, #72] ; (4884 ) + 483c: f025 fbac bl 29f98 + 4840: 2101 movs r1, #1 + 4842: 4813 ldr r0, [pc, #76] ; (4890 ) + 4844: f027 fef4 bl 2c630 + 4848: 2107 movs r1, #7 + 484a: 4813 ldr r0, [pc, #76] ; (4898 ) + 484c: e61c b.n 4488 } else if(BMC_STR_MATCH(debugInput,"board")){ - 4818: 88a1 ldrh r1, [r4, #4] - 481a: 2964 cmp r1, #100 ; 0x64 - 481c: f47f ab89 bne.w 3f32 + 484e: 88a1 ldrh r1, [r4, #4] + 4850: 2964 cmp r1, #100 ; 0x64 + 4852: f47f ab6e bne.w 3f32 printDebugHeader(debugInput); - 4820: 4620 mov r0, r4 - 4822: f7fe ff51 bl 36c8 + 4856: 4620 mov r0, r4 + 4858: f7fe ff36 bl 36c8 printBoardInfo(); - 4826: 4630 mov r0, r6 - 4828: f7ff f96e bl 3b08 + 485c: 4630 mov r0, r6 + 485e: f7ff f953 bl 3b08 printDebugHeader(debugInput); - 482c: 4620 mov r0, r4 - 482e: f7fe ff4b bl 36c8 - 4832: f7ff bb34 b.w 3e9e - 4836: 2112 movs r1, #18 - 4838: 4812 ldr r0, [pc, #72] ; (4884 ) - 483a: f027 fe85 bl 2c548 + 4862: 4620 mov r0, r4 + 4864: f7fe ff30 bl 36c8 + 4868: f7ff bb19 b.w 3e9e + 486c: 2112 movs r1, #18 + 486e: 4814 ldr r0, [pc, #80] ; (48c0 ) + 4870: f027 fede bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 483e: 4806 ldr r0, [pc, #24] ; (4858 ) - 4840: f025 fb18 bl 29e74 - 4844: e7b6 b.n 47b4 - 4846: bf00 nop - 4848: 00656d69 .word 0x00656d69 - 484c: 20002fe4 .word 0x20002fe4 - 4850: 200023ec .word 0x200023ec - 4854: 2000bae8 .word 0x2000bae8 - 4858: 20004ba8 .word 0x20004ba8 - 485c: 20002ff0 .word 0x20002ff0 - 4860: 88888889 .word 0x88888889 - 4864: 20002ff8 .word 0x20002ff8 - 4868: 91a2b3c5 .word 0x91a2b3c5 - 486c: 20003000 .word 0x20003000 - 4870: c22e4507 .word 0xc22e4507 - 4874: 20003008 .word 0x20003008 - 4878: 20002fcc .word 0x20002fcc - 487c: 20003018 .word 0x20003018 - 4880: 20003044 .word 0x20003044 - 4884: 20003030 .word 0x20003030 + 4874: 4803 ldr r0, [pc, #12] ; (4884 ) + 4876: f025 fb73 bl 29f60 + 487a: e7b6 b.n 47ea + 487c: 656e6e6f .word 0x656e6e6f + 4880: 20003020 .word 0x20003020 + 4884: 20004c68 .word 0x20004c68 + 4888: 00656d69 .word 0x00656d69 + 488c: 2000307c .word 0x2000307c + 4890: 200023ec .word 0x200023ec + 4894: 2000bb08 .word 0x2000bb08 + 4898: 20003088 .word 0x20003088 + 489c: 88888889 .word 0x88888889 + 48a0: 20003090 .word 0x20003090 + 48a4: 91a2b3c5 .word 0x91a2b3c5 + 48a8: 20003098 .word 0x20003098 + 48ac: c22e4507 .word 0xc22e4507 + 48b0: 200030a0 .word 0x200030a0 + 48b4: 20003064 .word 0x20003064 + 48b8: 200030b0 .word 0x200030b0 + 48bc: 200030dc .word 0x200030dc + 48c0: 200030c8 .word 0x200030c8 } else if(BMC_STR_MATCH(debugInput,"sync")){ - 4888: 7927 ldrb r7, [r4, #4] - 488a: 2f00 cmp r7, #0 - 488c: f47f ab55 bne.w 3f3a + 48c4: 7927 ldrb r7, [r4, #4] + 48c6: 2f00 cmp r7, #0 + 48c8: f47f ab37 bne.w 3f3a printDebugHeader(debugInput); - 4890: 4620 mov r0, r4 - 4892: f7fe ff19 bl 36c8 - 4896: 4639 mov r1, r7 - 4898: 487c ldr r0, [pc, #496] ; (4a8c ) - 489a: f027 fe55 bl 2c548 - 489e: 487c ldr r0, [pc, #496] ; (4a90 ) - 48a0: f025 fae8 bl 29e74 - 48a4: 212e movs r1, #46 ; 0x2e - 48a6: 487b ldr r0, [pc, #492] ; (4a94 ) - 48a8: f027 fe4e bl 2c548 - 48ac: 4878 ldr r0, [pc, #480] ; (4a90 ) - 48ae: f025 fae1 bl 29e74 - 48b2: 212e movs r1, #46 ; 0x2e - 48b4: 4877 ldr r0, [pc, #476] ; (4a94 ) - 48b6: f027 fe47 bl 2c548 - 48ba: 4875 ldr r0, [pc, #468] ; (4a90 ) - 48bc: f025 fada bl 29e74 - 48c0: 2101 movs r1, #1 - 48c2: 4875 ldr r0, [pc, #468] ; (4a98 ) - 48c4: f027 fe40 bl 2c548 - 48c8: 210d movs r1, #13 - 48ca: 4874 ldr r0, [pc, #464] ; (4a9c ) - 48cc: f027 fe3c bl 2c548 - 48d0: 486f ldr r0, [pc, #444] ; (4a90 ) - 48d2: f025 facf bl 29e74 - 48d6: 2101 movs r1, #1 - 48d8: 486f ldr r0, [pc, #444] ; (4a98 ) - 48da: f027 fe35 bl 2c548 - 48de: 2106 movs r1, #6 - 48e0: 486f ldr r0, [pc, #444] ; (4aa0 ) - 48e2: f027 fe31 bl 2c548 - 48e6: 486a ldr r0, [pc, #424] ; (4a90 ) - 48e8: f025 fac4 bl 29e74 - 48ec: 2101 movs r1, #1 - 48ee: 486a ldr r0, [pc, #424] ; (4a98 ) - 48f0: f027 fe2a bl 2c548 - 48f4: 2111 movs r1, #17 - 48f6: 486b ldr r0, [pc, #428] ; (4aa4 ) - 48f8: f027 fe26 bl 2c548 - 48fc: 4864 ldr r0, [pc, #400] ; (4a90 ) - 48fe: f025 fab9 bl 29e74 - 4902: 2101 movs r1, #1 - 4904: 4864 ldr r0, [pc, #400] ; (4a98 ) - 4906: f027 fe1f bl 2c548 - 490a: 2108 movs r1, #8 - 490c: 4866 ldr r0, [pc, #408] ; (4aa8 ) - 490e: f027 fe1b bl 2c548 - 4912: 485f ldr r0, [pc, #380] ; (4a90 ) - 4914: f025 faae bl 29e74 - 4918: 2101 movs r1, #1 - 491a: 485f ldr r0, [pc, #380] ; (4a98 ) - 491c: f027 fe14 bl 2c548 - 4920: 210c movs r1, #12 - 4922: 4862 ldr r0, [pc, #392] ; (4aac ) - 4924: f027 fe10 bl 2c548 - 4928: 4859 ldr r0, [pc, #356] ; (4a90 ) - 492a: f025 faa3 bl 29e74 - 492e: 212e movs r1, #46 ; 0x2e - 4930: 4858 ldr r0, [pc, #352] ; (4a94 ) - 4932: f027 fe09 bl 2c548 - 4936: 4856 ldr r0, [pc, #344] ; (4a90 ) - 4938: f025 fa9c bl 29e74 - 493c: 212e movs r1, #46 ; 0x2e - 493e: 4855 ldr r0, [pc, #340] ; (4a94 ) - 4940: f027 fe02 bl 2c548 - 4944: 4852 ldr r0, [pc, #328] ; (4a90 ) - 4946: f025 fa95 bl 29e74 - 494a: 4639 mov r1, r7 - 494c: 484f ldr r0, [pc, #316] ; (4a8c ) - 494e: e57b b.n 4448 - 4950: f8d5 282c ldr.w r2, [r5, #2092] ; 0x82c - 4954: 4293 cmp r3, r2 - 4956: f63f af29 bhi.w 47ac + 48cc: 4620 mov r0, r4 + 48ce: f7fe fefb bl 36c8 + 48d2: 4639 mov r1, r7 + 48d4: 487c ldr r0, [pc, #496] ; (4ac8 ) + 48d6: f027 feab bl 2c630 + 48da: 487c ldr r0, [pc, #496] ; (4acc ) + 48dc: f025 fb40 bl 29f60 + 48e0: 212e movs r1, #46 ; 0x2e + 48e2: 487b ldr r0, [pc, #492] ; (4ad0 ) + 48e4: f027 fea4 bl 2c630 + 48e8: 4878 ldr r0, [pc, #480] ; (4acc ) + 48ea: f025 fb39 bl 29f60 + 48ee: 212e movs r1, #46 ; 0x2e + 48f0: 4877 ldr r0, [pc, #476] ; (4ad0 ) + 48f2: f027 fe9d bl 2c630 + 48f6: 4875 ldr r0, [pc, #468] ; (4acc ) + 48f8: f025 fb32 bl 29f60 + 48fc: 2101 movs r1, #1 + 48fe: 4875 ldr r0, [pc, #468] ; (4ad4 ) + 4900: f027 fe96 bl 2c630 + 4904: 210d movs r1, #13 + 4906: 4874 ldr r0, [pc, #464] ; (4ad8 ) + 4908: f027 fe92 bl 2c630 + 490c: 486f ldr r0, [pc, #444] ; (4acc ) + 490e: f025 fb27 bl 29f60 + 4912: 2101 movs r1, #1 + 4914: 486f ldr r0, [pc, #444] ; (4ad4 ) + 4916: f027 fe8b bl 2c630 + 491a: 2106 movs r1, #6 + 491c: 486f ldr r0, [pc, #444] ; (4adc ) + 491e: f027 fe87 bl 2c630 + 4922: 486a ldr r0, [pc, #424] ; (4acc ) + 4924: f025 fb1c bl 29f60 + 4928: 2101 movs r1, #1 + 492a: 486a ldr r0, [pc, #424] ; (4ad4 ) + 492c: f027 fe80 bl 2c630 + 4930: 2111 movs r1, #17 + 4932: 486b ldr r0, [pc, #428] ; (4ae0 ) + 4934: f027 fe7c bl 2c630 + 4938: 4864 ldr r0, [pc, #400] ; (4acc ) + 493a: f025 fb11 bl 29f60 + 493e: 2101 movs r1, #1 + 4940: 4864 ldr r0, [pc, #400] ; (4ad4 ) + 4942: f027 fe75 bl 2c630 + 4946: 2108 movs r1, #8 + 4948: 4866 ldr r0, [pc, #408] ; (4ae4 ) + 494a: f027 fe71 bl 2c630 + 494e: 485f ldr r0, [pc, #380] ; (4acc ) + 4950: f025 fb06 bl 29f60 + 4954: 2101 movs r1, #1 + 4956: 485f ldr r0, [pc, #380] ; (4ad4 ) + 4958: f027 fe6a bl 2c630 + 495c: 210c movs r1, #12 + 495e: 4862 ldr r0, [pc, #392] ; (4ae8 ) + 4960: f027 fe66 bl 2c630 + 4964: 4859 ldr r0, [pc, #356] ; (4acc ) + 4966: f025 fafb bl 29f60 + 496a: 212e movs r1, #46 ; 0x2e + 496c: 4858 ldr r0, [pc, #352] ; (4ad0 ) + 496e: f027 fe5f bl 2c630 + 4972: 4856 ldr r0, [pc, #344] ; (4acc ) + 4974: f025 faf4 bl 29f60 + 4978: 212e movs r1, #46 ; 0x2e + 497a: 4855 ldr r0, [pc, #340] ; (4ad0 ) + 497c: f027 fe58 bl 2c630 + 4980: 4852 ldr r0, [pc, #328] ; (4acc ) + 4982: f025 faed bl 29f60 + 4986: 4639 mov r1, r7 + 4988: 484f ldr r0, [pc, #316] ; (4ac8 ) + 498a: e57d b.n 4488 + 498c: f8d5 284c ldr.w r2, [r5, #2124] ; 0x84c + 4990: 4293 cmp r3, r2 + 4992: f63f af26 bhi.w 47e2 BMC_PRINTLN("Stopwatch Complete"); - 495a: 4955 ldr r1, [pc, #340] ; (4ab0 ) - 495c: 484c ldr r0, [pc, #304] ; (4a90 ) - 495e: f7fe fea1 bl 36a4 - 4962: e727 b.n 47b4 + 4996: 4955 ldr r1, [pc, #340] ; (4aec ) + 4998: 484c ldr r0, [pc, #304] ; (4acc ) + 499a: f7fe fe83 bl 36a4 + 499e: e724 b.n 47ea } else if(BMC_STR_MATCH(debugInput,"buttons")){ - 4964: 4b53 ldr r3, [pc, #332] ; (4ab4 ) - 4966: 6861 ldr r1, [r4, #4] - 4968: 4299 cmp r1, r3 - 496a: f47f aaea bne.w 3f42 + 49a0: 4b53 ldr r3, [pc, #332] ; (4af0 ) + 49a2: 6861 ldr r1, [r4, #4] + 49a4: 4299 cmp r1, r3 + 49a6: f47f aacc bne.w 3f42 printDebugHeader(debugInput); - 496e: 4620 mov r0, r4 - 4970: f506 5680 add.w r6, r6, #4096 ; 0x1000 - 4974: f7fe fea8 bl 36c8 - 4978: 210d movs r1, #13 - 497a: 484f ldr r0, [pc, #316] ; (4ab8 ) - 497c: f027 fde4 bl 2c548 - 4980: 2101 movs r1, #1 - 4982: 4845 ldr r0, [pc, #276] ; (4a98 ) - 4984: f027 fde0 bl 2c548 - 4988: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + 49aa: 4620 mov r0, r4 + 49ac: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 49b0: f7fe fe8a bl 36c8 + 49b4: 210d movs r1, #13 + 49b6: 484f ldr r0, [pc, #316] ; (4af4 ) + 49b8: f027 fe3a bl 2c630 + 49bc: 2101 movs r1, #1 + 49be: 4845 ldr r0, [pc, #276] ; (4ad4 ) + 49c0: f027 fe36 bl 2c630 + 49c4: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 size_t print(int n) { return print((long)n); } - 498c: 4840 ldr r0, [pc, #256] ; (4a90 ) - 498e: f083 0380 eor.w r3, r3, #128 ; 0x80 - 4992: f3c3 11c0 ubfx r1, r3, #7, #1 - 4996: e580 b.n 449a + 49c8: 4840 ldr r0, [pc, #256] ; (4acc ) + 49ca: f083 0380 eor.w r3, r3, #128 ; 0x80 + 49ce: f3c3 11c0 ubfx r1, r3, #7, #1 + 49d2: e582 b.n 44da } else if(BMC_STR_MATCH(debugInput,"metrics")){ - 4998: 4b48 ldr r3, [pc, #288] ; (4abc ) - 499a: 6861 ldr r1, [r4, #4] - 499c: 4299 cmp r1, r3 - 499e: f47f aad4 bne.w 3f4a - 49a2: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 49d4: 4b48 ldr r3, [pc, #288] ; (4af8 ) + 49d6: 6861 ldr r1, [r4, #4] + 49d8: 4299 cmp r1, r3 + 49da: f47f aab6 bne.w 3f4a + 49de: f506 5680 add.w r6, r6, #4096 ; 0x1000 printDebugHeader(debugInput); - 49a6: 4620 mov r0, r4 - 49a8: f7fe fe8e bl 36c8 - 49ac: 2107 movs r1, #7 - 49ae: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 - 49b2: 4843 ldr r0, [pc, #268] ; (4ac0 ) - 49b4: f083 0302 eor.w r3, r3, #2 - 49b8: f8a6 3860 strh.w r3, [r6, #2144] ; 0x860 + 49e2: 4620 mov r0, r4 + 49e4: f7fe fe70 bl 36c8 + 49e8: 2107 movs r1, #7 + 49ea: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + 49ee: 4843 ldr r0, [pc, #268] ; (4afc ) + 49f0: f083 0302 eor.w r3, r3, #2 + 49f4: f8a6 3860 strh.w r3, [r6, #2144] ; 0x860 return bitRead(flags, bit); - 49bc: 105d asrs r5, r3, #1 - 49be: f027 fdc3 bl 2c548 - 49c2: 2101 movs r1, #1 - 49c4: 4834 ldr r0, [pc, #208] ; (4a98 ) - 49c6: 400d ands r5, r1 - 49c8: f027 fdbe bl 2c548 - 49cc: 4830 ldr r0, [pc, #192] ; (4a90 ) - 49ce: 4629 mov r1, r5 - 49d0: f025 fa44 bl 29e5c + 49f8: 105d asrs r5, r3, #1 + 49fa: f027 fe19 bl 2c630 + 49fe: 2101 movs r1, #1 + 4a00: 4834 ldr r0, [pc, #208] ; (4ad4 ) + 4a02: 400d ands r5, r1 + 4a04: f027 fe14 bl 2c630 + 4a08: 4830 ldr r0, [pc, #192] ; (4acc ) + 4a0a: 4629 mov r1, r5 + 4a0c: f025 fa9c bl 29f48 size_t println(int n) { return print(n) + println(); } - 49d4: 482e ldr r0, [pc, #184] ; (4a90 ) - 49d6: f025 fa4d bl 29e74 + 4a10: 482e ldr r0, [pc, #184] ; (4acc ) + 4a12: f025 faa5 bl 29f60 if(v){ - 49da: 2d00 cmp r5, #0 - 49dc: f43f ac7b beq.w 42d6 + 4a16: 2d00 cmp r5, #0 + 4a18: f43f ac6f beq.w 42fa BMC_PRINTLN("type \"metrics\" to stop seeing this..."); - 49e0: 4938 ldr r1, [pc, #224] ; (4ac4 ) - 49e2: 482b ldr r0, [pc, #172] ; (4a90 ) - 49e4: f7fe fe5e bl 36a4 + 4a1c: 4938 ldr r1, [pc, #224] ; (4b00 ) + 4a1e: 482b ldr r0, [pc, #172] ; (4acc ) + 4a20: f7fe fe40 bl 36a4 BMC_PRINTLN("metrics are shown every 2 seconds"); - 49e8: 4937 ldr r1, [pc, #220] ; (4ac8 ) - 49ea: 4829 ldr r0, [pc, #164] ; (4a90 ) - 49ec: f7fe fe5a bl 36a4 + 4a24: 4937 ldr r1, [pc, #220] ; (4b04 ) + 4a26: 4829 ldr r0, [pc, #164] ; (4acc ) + 4a28: f7fe fe3c bl 36a4 BMC_PRINTLN("Please keep in mind, loops per second is just to estimate how fast the loop() function is executing"); - 49f0: 4936 ldr r1, [pc, #216] ; (4acc ) - 49f2: 4827 ldr r0, [pc, #156] ; (4a90 ) - 49f4: f7fe fe56 bl 36a4 + 4a2c: 4936 ldr r1, [pc, #216] ; (4b08 ) + 4a2e: 4827 ldr r0, [pc, #156] ; (4acc ) + 4a30: f7fe fe38 bl 36a4 BMC_PRINTLN("Some features may increase or decrease this number"); - 49f8: 4935 ldr r1, [pc, #212] ; (4ad0 ) - 49fa: 4825 ldr r0, [pc, #148] ; (4a90 ) - 49fc: f7fe fe52 bl 36a4 - 4a00: e469 b.n 42d6 + 4a34: 4935 ldr r1, [pc, #212] ; (4b0c ) + 4a36: 4825 ldr r0, [pc, #148] ; (4acc ) + 4a38: f7fe fe34 bl 36a4 + 4a3c: e45d b.n 42fa } else if(BMC_STR_MATCH(debugInput,"prevLayer")){ - 4a02: f103 436f add.w r3, r3, #4009754624 ; 0xef000000 - 4a06: 9906 ldr r1, [sp, #24] - 4a08: f503 139f add.w r3, r3, #1302528 ; 0x13e000 - 4a0c: f603 63dc addw r3, r3, #3804 ; 0xedc - 4a10: 4299 cmp r1, r3 - 4a12: f47f aaa2 bne.w 3f5a - 4a16: f8bd 301c ldrh.w r3, [sp, #28] - 4a1a: 2b72 cmp r3, #114 ; 0x72 - 4a1c: f47f aa9d bne.w 3f5a + 4a3e: f103 436f add.w r3, r3, #4009754624 ; 0xef000000 + 4a42: 9906 ldr r1, [sp, #24] + 4a44: f503 139f add.w r3, r3, #1302528 ; 0x13e000 + 4a48: f603 63dc addw r3, r3, #3804 ; 0xedc + 4a4c: 4299 cmp r1, r3 + 4a4e: f47f aa84 bne.w 3f5a + 4a52: f8bd 301c ldrh.w r3, [sp, #28] + 4a56: 2b72 cmp r3, #114 ; 0x72 + 4a58: f47f aa7f bne.w 3f5a prevLayer(); - 4a20: 4630 mov r0, r6 - 4a22: f010 fbe9 bl 151f8 - 4a26: f7ff ba3a b.w 3e9e + 4a5c: 4630 mov r0, r6 + 4a5e: f010 fc31 bl 152c4 + 4a62: f7ff ba1c b.w 3e9e } else if(BMC_STR_MATCH(debugInput,"nextLayer")){ - 4a2a: 4b2a ldr r3, [pc, #168] ; (4ad4 ) - 4a2c: 9906 ldr r1, [sp, #24] - 4a2e: 4299 cmp r1, r3 - 4a30: f47f aa8f bne.w 3f52 - 4a34: f8bd 301c ldrh.w r3, [sp, #28] - 4a38: 2b72 cmp r3, #114 ; 0x72 - 4a3a: f47f aa8a bne.w 3f52 + 4a66: 4b2a ldr r3, [pc, #168] ; (4b10 ) + 4a68: 9906 ldr r1, [sp, #24] + 4a6a: 4299 cmp r1, r3 + 4a6c: f47f aa71 bne.w 3f52 + 4a70: f8bd 301c ldrh.w r3, [sp, #28] + 4a74: 2b72 cmp r3, #114 ; 0x72 + 4a76: f47f aa6c bne.w 3f52 nextLayer(); - 4a3e: 4630 mov r0, r6 - 4a40: f010 fbea bl 15218 - 4a44: f7ff ba2b b.w 3e9e + 4a7a: 4630 mov r0, r6 + 4a7c: f010 fc32 bl 152e4 + 4a80: f7ff ba0d b.w 3e9e BMC_PRINTLN(""); - 4a48: 4910 ldr r1, [pc, #64] ; (4a8c ) - 4a4a: 4811 ldr r0, [pc, #68] ; (4a90 ) - 4a4c: f7fe fe2a bl 36a4 + 4a84: 4910 ldr r1, [pc, #64] ; (4ac8 ) + 4a86: 4811 ldr r0, [pc, #68] ; (4acc ) + 4a88: f7fe fe0c bl 36a4 BMC_PRINTLN("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - 4a50: 480f ldr r0, [pc, #60] ; (4a90 ) - 4a52: 4921 ldr r1, [pc, #132] ; (4ad8 ) - 4a54: f7fe fe26 bl 36a4 + 4a8c: 480f ldr r0, [pc, #60] ; (4acc ) + 4a8e: 4921 ldr r1, [pc, #132] ; (4b14 ) + 4a90: f7fe fe08 bl 36a4 size_t print(const char s[]) { return write(s); } - 4a58: 4621 mov r1, r4 - 4a5a: 480d ldr r0, [pc, #52] ; (4a90 ) - 4a5c: f7fe fe12 bl 3684 - 4a60: 490d ldr r1, [pc, #52] ; (4a98 ) - 4a62: 480b ldr r0, [pc, #44] ; (4a90 ) - 4a64: f7fe fe0e bl 3684 + 4a94: 4621 mov r1, r4 + 4a96: 480d ldr r0, [pc, #52] ; (4acc ) + 4a98: f7fe fdf4 bl 3684 + 4a9c: 490d ldr r1, [pc, #52] ; (4ad4 ) + 4a9e: 480b ldr r0, [pc, #44] ; (4acc ) + 4aa0: f7fe fdf0 bl 3684 BMC_PRINTLN(debugInput,"is NOT a valid command"); - 4a68: 491c ldr r1, [pc, #112] ; (4adc ) - 4a6a: 4809 ldr r0, [pc, #36] ; (4a90 ) - 4a6c: f7fe fe1a bl 36a4 + 4aa4: 491c ldr r1, [pc, #112] ; (4b18 ) + 4aa6: 4809 ldr r0, [pc, #36] ; (4acc ) + 4aa8: f7fe fdfc bl 36a4 BMC_PRINTLN("Type \"help\" to view all available commands"); - 4a70: 491b ldr r1, [pc, #108] ; (4ae0 ) - 4a72: 4807 ldr r0, [pc, #28] ; (4a90 ) - 4a74: f7fe fe16 bl 36a4 + 4aac: 491b ldr r1, [pc, #108] ; (4b1c ) + 4aae: 4807 ldr r0, [pc, #28] ; (4acc ) + 4ab0: f7fe fdf8 bl 36a4 BMC_PRINTLN("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - 4a78: 4917 ldr r1, [pc, #92] ; (4ad8 ) - 4a7a: 4805 ldr r0, [pc, #20] ; (4a90 ) - 4a7c: f7fe fe12 bl 36a4 + 4ab4: 4917 ldr r1, [pc, #92] ; (4b14 ) + 4ab6: 4805 ldr r0, [pc, #20] ; (4acc ) + 4ab8: f7fe fdf4 bl 36a4 BMC_PRINTLN(""); - 4a80: 4902 ldr r1, [pc, #8] ; (4a8c ) - 4a82: 4803 ldr r0, [pc, #12] ; (4a90 ) - 4a84: f7fe fe0e bl 36a4 - 4a88: f7ff ba09 b.w 3e9e - 4a8c: 20003c58 .word 0x20003c58 - 4a90: 20004ba8 .word 0x20004ba8 - 4a94: 20002758 .word 0x20002758 - 4a98: 200023ec .word 0x200023ec - 4a9c: 200027a4 .word 0x200027a4 - 4aa0: 200027b4 .word 0x200027b4 - 4aa4: 200027bc .word 0x200027bc - 4aa8: 200027d0 .word 0x200027d0 - 4aac: 200027dc .word 0x200027dc - 4ab0: 20003058 .word 0x20003058 - 4ab4: 00736e6f .word 0x00736e6f - 4ab8: 2000307c .word 0x2000307c - 4abc: 00736369 .word 0x00736369 - 4ac0: 2000308c .word 0x2000308c - 4ac4: 20003094 .word 0x20003094 - 4ac8: 200030bc .word 0x200030bc - 4acc: 200030e0 .word 0x200030e0 - 4ad0: 20003144 .word 0x20003144 - 4ad4: 6579614c .word 0x6579614c - 4ad8: 20003630 .word 0x20003630 - 4adc: 2000365c .word 0x2000365c - 4ae0: 20003674 .word 0x20003674 + 4abc: 4902 ldr r1, [pc, #8] ; (4ac8 ) + 4abe: 4803 ldr r0, [pc, #12] ; (4acc ) + 4ac0: f7fe fdf0 bl 36a4 + 4ac4: f7ff b9eb b.w 3e9e + 4ac8: 20003d18 .word 0x20003d18 + 4acc: 20004c68 .word 0x20004c68 + 4ad0: 20002760 .word 0x20002760 + 4ad4: 200023ec .word 0x200023ec + 4ad8: 200027ac .word 0x200027ac + 4adc: 200027bc .word 0x200027bc + 4ae0: 200027c4 .word 0x200027c4 + 4ae4: 200027d8 .word 0x200027d8 + 4ae8: 200027e4 .word 0x200027e4 + 4aec: 200030f0 .word 0x200030f0 + 4af0: 00736e6f .word 0x00736e6f + 4af4: 20003114 .word 0x20003114 + 4af8: 00736369 .word 0x00736369 + 4afc: 20003124 .word 0x20003124 + 4b00: 2000312c .word 0x2000312c + 4b04: 20003154 .word 0x20003154 + 4b08: 20003178 .word 0x20003178 + 4b0c: 200031dc .word 0x200031dc + 4b10: 6579614c .word 0x6579614c + 4b14: 200036f0 .word 0x200036f0 + 4b18: 2000371c .word 0x2000371c + 4b1c: 20003734 .word 0x20003734 printDebugHeader(debugInput); - 4ae4: 4620 mov r0, r4 - 4ae6: f7fe fdef bl 36c8 - 4aea: 49b3 ldr r1, [pc, #716] ; (4db8 ) - 4aec: 48b3 ldr r0, [pc, #716] ; (4dbc ) - 4aee: f7fe fdc9 bl 3684 - 4af2: 49b3 ldr r1, [pc, #716] ; (4dc0 ) - 4af4: 48b1 ldr r0, [pc, #708] ; (4dbc ) - 4af6: f7fe fdc5 bl 3684 - size_t print(int n) { return print((long)n); } - 4afa: 8871 ldrh r1, [r6, #2] - 4afc: 48af ldr r0, [pc, #700] ; (4dbc ) - 4afe: f025 f9ad bl 29e5c - size_t print(const char s[]) { return write(s); } - 4b02: 49af ldr r1, [pc, #700] ; (4dc0 ) - 4b04: 48ad ldr r0, [pc, #692] ; (4dbc ) - 4b06: f7fe fdbd bl 3684 - 4b0a: 49ae ldr r1, [pc, #696] ; (4dc4 ) - 4b0c: 48ab ldr r0, [pc, #684] ; (4dbc ) - 4b0e: f7fe fdb9 bl 3684 - size_t print(int n, int base) { return (base == 10) ? print(n) : printNumber(n, base, 0); } - 4b12: 462b mov r3, r5 - 4b14: 2210 movs r2, #16 - 4b16: 8871 ldrh r1, [r6, #2] - 4b18: 48a8 ldr r0, [pc, #672] ; (4dbc ) - 4b1a: f025 f9c7 bl 29eac - BMC_PRINTLN(" (2 bytes)"); - 4b1e: 49aa ldr r1, [pc, #680] ; (4dc8 ) - 4b20: 48a6 ldr r0, [pc, #664] ; (4dbc ) - 4b22: f7fe fdbf bl 36a4 - size_t print(const char s[]) { return write(s); } - 4b26: 49a9 ldr r1, [pc, #676] ; (4dcc ) - 4b28: 48a4 ldr r0, [pc, #656] ; (4dbc ) + 4b20: 4620 mov r0, r4 + 4b22: f7fe fdd1 bl 36c8 + 4b26: 49b3 ldr r1, [pc, #716] ; (4df4 ) + 4b28: 48b3 ldr r0, [pc, #716] ; (4df8 ) 4b2a: f7fe fdab bl 3684 - 4b2e: 49a4 ldr r1, [pc, #656] ; (4dc0 ) - 4b30: 48a2 ldr r0, [pc, #648] ; (4dbc ) + 4b2e: 49b3 ldr r1, [pc, #716] ; (4dfc ) + 4b30: 48b1 ldr r0, [pc, #708] ; (4df8 ) 4b32: f7fe fda7 bl 3684 size_t print(int n) { return print((long)n); } - 4b36: 8831 ldrh r1, [r6, #0] - 4b38: 48a0 ldr r0, [pc, #640] ; (4dbc ) - 4b3a: f025 f98f bl 29e5c + 4b36: 8871 ldrh r1, [r6, #2] + 4b38: 48af ldr r0, [pc, #700] ; (4df8 ) + 4b3a: f025 fa05 bl 29f48 size_t print(const char s[]) { return write(s); } - 4b3e: 49a0 ldr r1, [pc, #640] ; (4dc0 ) - 4b40: 489e ldr r0, [pc, #632] ; (4dbc ) + 4b3e: 49af ldr r1, [pc, #700] ; (4dfc ) + 4b40: 48ad ldr r0, [pc, #692] ; (4df8 ) 4b42: f7fe fd9f bl 3684 - 4b46: 499f ldr r1, [pc, #636] ; (4dc4 ) - 4b48: 489c ldr r0, [pc, #624] ; (4dbc ) + 4b46: 49ae ldr r1, [pc, #696] ; (4e00 ) + 4b48: 48ab ldr r0, [pc, #684] ; (4df8 ) 4b4a: f7fe fd9b bl 3684 size_t print(int n, int base) { return (base == 10) ? print(n) : printNumber(n, base, 0); } 4b4e: 462b mov r3, r5 4b50: 2210 movs r2, #16 - 4b52: 8831 ldrh r1, [r6, #0] - 4b54: 4899 ldr r0, [pc, #612] ; (4dbc ) - 4b56: f025 f9a9 bl 29eac + 4b52: 8871 ldrh r1, [r6, #2] + 4b54: 48a8 ldr r0, [pc, #672] ; (4df8 ) + 4b56: f025 fa1f bl 29f98 BMC_PRINTLN(" (2 bytes)"); - 4b5a: 499b ldr r1, [pc, #620] ; (4dc8 ) - 4b5c: 4897 ldr r0, [pc, #604] ; (4dbc ) + 4b5a: 49aa ldr r1, [pc, #680] ; (4e04 ) + 4b5c: 48a6 ldr r0, [pc, #664] ; (4df8 ) 4b5e: f7fe fda1 bl 36a4 - BMC_PRINTLN(""); - 4b62: 499b ldr r1, [pc, #620] ; (4dd0 ) - 4b64: 4895 ldr r0, [pc, #596] ; (4dbc ) - 4b66: f7fe fd9d bl 36a4 size_t print(const char s[]) { return write(s); } - 4b6a: 499a ldr r1, [pc, #616] ; (4dd4 ) - 4b6c: 4893 ldr r0, [pc, #588] ; (4dbc ) + 4b62: 49a9 ldr r1, [pc, #676] ; (4e08 ) + 4b64: 48a4 ldr r0, [pc, #656] ; (4df8 ) + 4b66: f7fe fd8d bl 3684 + 4b6a: 49a4 ldr r1, [pc, #656] ; (4dfc ) + 4b6c: 48a2 ldr r0, [pc, #648] ; (4df8 ) 4b6e: f7fe fd89 bl 3684 - 4b72: 4993 ldr r1, [pc, #588] ; (4dc0 ) - 4b74: 4891 ldr r0, [pc, #580] ; (4dbc ) - 4b76: f7fe fd85 bl 3684 + size_t print(int n) { return print((long)n); } + 4b72: 8831 ldrh r1, [r6, #0] + 4b74: 48a0 ldr r0, [pc, #640] ; (4df8 ) + 4b76: f025 f9e7 bl 29f48 + size_t print(const char s[]) { return write(s); } + 4b7a: 49a0 ldr r1, [pc, #640] ; (4dfc ) + 4b7c: 489e ldr r0, [pc, #632] ; (4df8 ) + 4b7e: f7fe fd81 bl 3684 + 4b82: 499f ldr r1, [pc, #636] ; (4e00 ) + 4b84: 489c ldr r0, [pc, #624] ; (4df8 ) + 4b86: f7fe fd7d bl 3684 + size_t print(int n, int base) { return (base == 10) ? print(n) : printNumber(n, base, 0); } + 4b8a: 462b mov r3, r5 + 4b8c: 2210 movs r2, #16 + 4b8e: 8831 ldrh r1, [r6, #0] + 4b90: 4899 ldr r0, [pc, #612] ; (4df8 ) + 4b92: f025 fa01 bl 29f98 + BMC_PRINTLN(" (2 bytes)"); + 4b96: 499b ldr r1, [pc, #620] ; (4e04 ) + 4b98: 4897 ldr r0, [pc, #604] ; (4df8 ) + 4b9a: f7fe fd83 bl 36a4 + BMC_PRINTLN(""); + 4b9e: 499b ldr r1, [pc, #620] ; (4e0c ) + 4ba0: 4895 ldr r0, [pc, #596] ; (4df8 ) + 4ba2: f7fe fd7f bl 36a4 + size_t print(const char s[]) { return write(s); } + 4ba6: 499a ldr r1, [pc, #616] ; (4e10 ) + 4ba8: 4893 ldr r0, [pc, #588] ; (4df8 ) + 4baa: f7fe fd6b bl 3684 + 4bae: 4993 ldr r1, [pc, #588] ; (4dfc ) + 4bb0: 4891 ldr r0, [pc, #580] ; (4df8 ) + 4bb2: f7fe fd67 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4b7a: 462b mov r3, r5 - 4b7c: 220a movs r2, #10 - 4b7e: f241 71fc movw r1, #6140 ; 0x17fc - 4b82: 488e ldr r0, [pc, #568] ; (4dbc ) - 4b84: f025 f992 bl 29eac + 4bb6: 462b mov r3, r5 + 4bb8: 220a movs r2, #10 + 4bba: f241 71fc movw r1, #6140 ; 0x17fc + 4bbe: 488e ldr r0, [pc, #568] ; (4df8 ) + 4bc0: f025 f9ea bl 29f98 size_t print(const char s[]) { return write(s); } - 4b88: 498d ldr r1, [pc, #564] ; (4dc0 ) - 4b8a: 488c ldr r0, [pc, #560] ; (4dbc ) - 4b8c: f7fe fd7a bl 3684 + 4bc4: 498d ldr r1, [pc, #564] ; (4dfc ) + 4bc6: 488c ldr r0, [pc, #560] ; (4df8 ) + 4bc8: f7fe fd5c bl 3684 BMC_PRINTLN("store",sizeof(store),"bytes"); - 4b90: 4991 ldr r1, [pc, #580] ; (4dd8 ) - 4b92: 488a ldr r0, [pc, #552] ; (4dbc ) - 4b94: f7fe fd86 bl 36a4 - 4b98: 4990 ldr r1, [pc, #576] ; (4ddc ) - 4b9a: 4888 ldr r0, [pc, #544] ; (4dbc ) - 4b9c: f7fe fd72 bl 3684 - 4ba0: 4987 ldr r1, [pc, #540] ; (4dc0 ) - 4ba2: 4886 ldr r0, [pc, #536] ; (4dbc ) - 4ba4: f7fe fd6e bl 3684 + 4bcc: 4991 ldr r1, [pc, #580] ; (4e14 ) + 4bce: 488a ldr r0, [pc, #552] ; (4df8 ) + 4bd0: f7fe fd68 bl 36a4 + 4bd4: 4990 ldr r1, [pc, #576] ; (4e18 ) + 4bd6: 4888 ldr r0, [pc, #544] ; (4df8 ) + 4bd8: f7fe fd54 bl 3684 + 4bdc: 4987 ldr r1, [pc, #540] ; (4dfc ) + 4bde: 4886 ldr r0, [pc, #536] ; (4df8 ) + 4be0: f7fe fd50 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4ba8: 462b mov r3, r5 - 4baa: 220a movs r2, #10 - 4bac: f241 515c movw r1, #5468 ; 0x155c - 4bb0: 4882 ldr r0, [pc, #520] ; (4dbc ) - 4bb2: f025 f97b bl 29eac + 4be4: 462b mov r3, r5 + 4be6: 220a movs r2, #10 + 4be8: f241 515c movw r1, #5468 ; 0x155c + 4bec: 4882 ldr r0, [pc, #520] ; (4df8 ) + 4bee: f025 f9d3 bl 29f98 size_t print(const char s[]) { return write(s); } - 4bb6: 4982 ldr r1, [pc, #520] ; (4dc0 ) - 4bb8: 4880 ldr r0, [pc, #512] ; (4dbc ) - 4bba: f7fe fd63 bl 3684 + 4bf2: 4982 ldr r1, [pc, #520] ; (4dfc ) + 4bf4: 4880 ldr r0, [pc, #512] ; (4df8 ) + 4bf6: f7fe fd45 bl 3684 BMC_PRINTLN("store.global",sizeof(store.global),"bytes"); - 4bbe: 4986 ldr r1, [pc, #536] ; (4dd8 ) - 4bc0: 487e ldr r0, [pc, #504] ; (4dbc ) - 4bc2: f7fe fd6f bl 36a4 - 4bc6: 4986 ldr r1, [pc, #536] ; (4de0 ) - 4bc8: 487c ldr r0, [pc, #496] ; (4dbc ) - 4bca: f7fe fd5b bl 3684 - 4bce: 497c ldr r1, [pc, #496] ; (4dc0 ) - 4bd0: 487a ldr r0, [pc, #488] ; (4dbc ) - 4bd2: f7fe fd57 bl 3684 + 4bfa: 4986 ldr r1, [pc, #536] ; (4e14 ) + 4bfc: 487e ldr r0, [pc, #504] ; (4df8 ) + 4bfe: f7fe fd51 bl 36a4 + 4c02: 4986 ldr r1, [pc, #536] ; (4e1c ) + 4c04: 487c ldr r0, [pc, #496] ; (4df8 ) + 4c06: f7fe fd3d bl 3684 + 4c0a: 497c ldr r1, [pc, #496] ; (4dfc ) + 4c0c: 487a ldr r0, [pc, #488] ; (4df8 ) + 4c0e: f7fe fd39 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4bd6: 462b mov r3, r5 - 4bd8: 220a movs r2, #10 - 4bda: 2134 movs r1, #52 ; 0x34 - 4bdc: 4877 ldr r0, [pc, #476] ; (4dbc ) - 4bde: f025 f965 bl 29eac + 4c12: 462b mov r3, r5 + 4c14: 220a movs r2, #10 + 4c16: 2134 movs r1, #52 ; 0x34 + 4c18: 4877 ldr r0, [pc, #476] ; (4df8 ) + 4c1a: f025 f9bd bl 29f98 size_t print(const char s[]) { return write(s); } - 4be2: 4977 ldr r1, [pc, #476] ; (4dc0 ) - 4be4: 4875 ldr r0, [pc, #468] ; (4dbc ) - 4be6: f7fe fd4d bl 3684 + 4c1e: 4977 ldr r1, [pc, #476] ; (4dfc ) + 4c20: 4875 ldr r0, [pc, #468] ; (4df8 ) + 4c22: f7fe fd2f bl 3684 BMC_PRINTLN("store.global.settings",sizeof(store.global.settings),"bytes"); - 4bea: 497b ldr r1, [pc, #492] ; (4dd8 ) - 4bec: 4873 ldr r0, [pc, #460] ; (4dbc ) - 4bee: f7fe fd59 bl 36a4 - 4bf2: 497c ldr r1, [pc, #496] ; (4de4 ) - 4bf4: 4871 ldr r0, [pc, #452] ; (4dbc ) - 4bf6: f7fe fd45 bl 3684 - 4bfa: 4971 ldr r1, [pc, #452] ; (4dc0 ) - 4bfc: 486f ldr r0, [pc, #444] ; (4dbc ) - 4bfe: f7fe fd41 bl 3684 + 4c26: 497b ldr r1, [pc, #492] ; (4e14 ) + 4c28: 4873 ldr r0, [pc, #460] ; (4df8 ) + 4c2a: f7fe fd3b bl 36a4 + 4c2e: 497c ldr r1, [pc, #496] ; (4e20 ) + 4c30: 4871 ldr r0, [pc, #452] ; (4df8 ) + 4c32: f7fe fd27 bl 3684 + 4c36: 4971 ldr r1, [pc, #452] ; (4dfc ) + 4c38: 486f ldr r0, [pc, #444] ; (4df8 ) + 4c3a: f7fe fd23 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4c02: 462b mov r3, r5 - 4c04: 220a movs r2, #10 - 4c06: f44f 7120 mov.w r1, #640 ; 0x280 - 4c0a: 486c ldr r0, [pc, #432] ; (4dbc ) - 4c0c: f025 f94e bl 29eac + 4c3e: 462b mov r3, r5 + 4c40: 220a movs r2, #10 + 4c42: f44f 7120 mov.w r1, #640 ; 0x280 + 4c46: 486c ldr r0, [pc, #432] ; (4df8 ) + 4c48: f025 f9a6 bl 29f98 size_t print(const char s[]) { return write(s); } - 4c10: 496b ldr r1, [pc, #428] ; (4dc0 ) - 4c12: 486a ldr r0, [pc, #424] ; (4dbc ) - 4c14: f7fe fd36 bl 3684 + 4c4c: 496b ldr r1, [pc, #428] ; (4dfc ) + 4c4e: 486a ldr r0, [pc, #424] ; (4df8 ) + 4c50: f7fe fd18 bl 3684 BMC_PRINTLN("store.global.presets",sizeof(store.global.presets),"bytes"); - 4c18: 496f ldr r1, [pc, #444] ; (4dd8 ) - 4c1a: 4868 ldr r0, [pc, #416] ; (4dbc ) - 4c1c: f7fe fd42 bl 36a4 - 4c20: 4971 ldr r1, [pc, #452] ; (4de8 ) - 4c22: 4866 ldr r0, [pc, #408] ; (4dbc ) - 4c24: f7fe fd2e bl 3684 - 4c28: 4965 ldr r1, [pc, #404] ; (4dc0 ) - 4c2a: 4864 ldr r0, [pc, #400] ; (4dbc ) - 4c2c: f7fe fd2a bl 3684 + 4c54: 496f ldr r1, [pc, #444] ; (4e14 ) + 4c56: 4868 ldr r0, [pc, #416] ; (4df8 ) + 4c58: f7fe fd24 bl 36a4 + 4c5c: 4971 ldr r1, [pc, #452] ; (4e24 ) + 4c5e: 4866 ldr r0, [pc, #408] ; (4df8 ) + 4c60: f7fe fd10 bl 3684 + 4c64: 4965 ldr r1, [pc, #404] ; (4dfc ) + 4c66: 4864 ldr r0, [pc, #400] ; (4df8 ) + 4c68: f7fe fd0c bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4c30: 220a movs r2, #10 - 4c32: 462b mov r3, r5 - 4c34: 4861 ldr r0, [pc, #388] ; (4dbc ) - 4c36: 4611 mov r1, r2 - 4c38: f025 f938 bl 29eac + 4c6c: 220a movs r2, #10 + 4c6e: 462b mov r3, r5 + 4c70: 4861 ldr r0, [pc, #388] ; (4df8 ) + 4c72: 4611 mov r1, r2 + 4c74: f025 f990 bl 29f98 size_t print(const char s[]) { return write(s); } - 4c3c: 4960 ldr r1, [pc, #384] ; (4dc0 ) - 4c3e: 485f ldr r0, [pc, #380] ; (4dbc ) - 4c40: f7fe fd20 bl 3684 + 4c78: 4960 ldr r1, [pc, #384] ; (4dfc ) + 4c7a: 485f ldr r0, [pc, #380] ; (4df8 ) + 4c7c: f7fe fd02 bl 3684 BMC_PRINTLN("store.global.presets[0]",sizeof(store.global.presets[0]),"bytes"); - 4c44: 4964 ldr r1, [pc, #400] ; (4dd8 ) - 4c46: 485d ldr r0, [pc, #372] ; (4dbc ) - 4c48: f7fe fd2c bl 36a4 - 4c4c: 4967 ldr r1, [pc, #412] ; (4dec ) - 4c4e: 485b ldr r0, [pc, #364] ; (4dbc ) - 4c50: f7fe fd18 bl 3684 - 4c54: 495a ldr r1, [pc, #360] ; (4dc0 ) - 4c56: 4859 ldr r0, [pc, #356] ; (4dbc ) - 4c58: f7fe fd14 bl 3684 + 4c80: 4964 ldr r1, [pc, #400] ; (4e14 ) + 4c82: 485d ldr r0, [pc, #372] ; (4df8 ) + 4c84: f7fe fd0e bl 36a4 + 4c88: 4967 ldr r1, [pc, #412] ; (4e28 ) + 4c8a: 485b ldr r0, [pc, #364] ; (4df8 ) + 4c8c: f7fe fcfa bl 3684 + 4c90: 495a ldr r1, [pc, #360] ; (4dfc ) + 4c92: 4859 ldr r0, [pc, #356] ; (4df8 ) + 4c94: f7fe fcf6 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4c5c: 462b mov r3, r5 - 4c5e: 220a movs r2, #10 - 4c60: 2105 movs r1, #5 - 4c62: 4856 ldr r0, [pc, #344] ; (4dbc ) - 4c64: f025 f922 bl 29eac + 4c98: 462b mov r3, r5 + 4c9a: 220a movs r2, #10 + 4c9c: 2105 movs r1, #5 + 4c9e: 4856 ldr r0, [pc, #344] ; (4df8 ) + 4ca0: f025 f97a bl 29f98 size_t print(const char s[]) { return write(s); } - 4c68: 4955 ldr r1, [pc, #340] ; (4dc0 ) - 4c6a: 4854 ldr r0, [pc, #336] ; (4dbc ) - 4c6c: f7fe fd0a bl 3684 + 4ca4: 4955 ldr r1, [pc, #340] ; (4dfc ) + 4ca6: 4854 ldr r0, [pc, #336] ; (4df8 ) + 4ca8: f7fe fcec bl 3684 BMC_PRINTLN("store.global.sketchBytes",sizeof(store.global.sketchBytes),"bytes"); - 4c70: 4959 ldr r1, [pc, #356] ; (4dd8 ) - 4c72: 4852 ldr r0, [pc, #328] ; (4dbc ) - 4c74: f7fe fd16 bl 36a4 - 4c78: 495d ldr r1, [pc, #372] ; (4df0 ) - 4c7a: 4850 ldr r0, [pc, #320] ; (4dbc ) - 4c7c: f7fe fd02 bl 3684 - 4c80: 494f ldr r1, [pc, #316] ; (4dc0 ) - 4c82: 484e ldr r0, [pc, #312] ; (4dbc ) - 4c84: f7fe fcfe bl 3684 + 4cac: 4959 ldr r1, [pc, #356] ; (4e14 ) + 4cae: 4852 ldr r0, [pc, #328] ; (4df8 ) + 4cb0: f7fe fcf8 bl 36a4 + 4cb4: 495d ldr r1, [pc, #372] ; (4e2c ) + 4cb6: 4850 ldr r0, [pc, #320] ; (4df8 ) + 4cb8: f7fe fce4 bl 3684 + 4cbc: 494f ldr r1, [pc, #316] ; (4dfc ) + 4cbe: 484e ldr r0, [pc, #312] ; (4df8 ) + 4cc0: f7fe fce0 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4c88: 462b mov r3, r5 - 4c8a: 220a movs r2, #10 - 4c8c: 2148 movs r1, #72 ; 0x48 - 4c8e: 484b ldr r0, [pc, #300] ; (4dbc ) - 4c90: f025 f90c bl 29eac + 4cc4: 462b mov r3, r5 + 4cc6: 220a movs r2, #10 + 4cc8: 2148 movs r1, #72 ; 0x48 + 4cca: 484b ldr r0, [pc, #300] ; (4df8 ) + 4ccc: f025 f964 bl 29f98 size_t print(const char s[]) { return write(s); } - 4c94: 494a ldr r1, [pc, #296] ; (4dc0 ) - 4c96: 4849 ldr r0, [pc, #292] ; (4dbc ) - 4c98: f7fe fcf4 bl 3684 + 4cd0: 494a ldr r1, [pc, #296] ; (4dfc ) + 4cd2: 4849 ldr r0, [pc, #292] ; (4df8 ) + 4cd4: f7fe fcd6 bl 3684 BMC_PRINTLN("store.global.customSysEx",sizeof(store.global.customSysEx),"bytes"); - 4c9c: 494e ldr r1, [pc, #312] ; (4dd8 ) - 4c9e: 4847 ldr r0, [pc, #284] ; (4dbc ) - 4ca0: f7fe fd00 bl 36a4 - 4ca4: 4953 ldr r1, [pc, #332] ; (4df4 ) - 4ca6: 4845 ldr r0, [pc, #276] ; (4dbc ) - 4ca8: f7fe fcec bl 3684 - 4cac: 4944 ldr r1, [pc, #272] ; (4dc0 ) - 4cae: 4843 ldr r0, [pc, #268] ; (4dbc ) - 4cb0: f7fe fce8 bl 3684 + 4cd8: 494e ldr r1, [pc, #312] ; (4e14 ) + 4cda: 4847 ldr r0, [pc, #284] ; (4df8 ) + 4cdc: f7fe fce2 bl 36a4 + 4ce0: 4953 ldr r1, [pc, #332] ; (4e30 ) + 4ce2: 4845 ldr r0, [pc, #276] ; (4df8 ) + 4ce4: f7fe fcce bl 3684 + 4ce8: 4944 ldr r1, [pc, #272] ; (4dfc ) + 4cea: 4843 ldr r0, [pc, #268] ; (4df8 ) + 4cec: f7fe fcca bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4cb4: 462b mov r3, r5 - 4cb6: 220a movs r2, #10 - 4cb8: 2112 movs r1, #18 - 4cba: 4840 ldr r0, [pc, #256] ; (4dbc ) - 4cbc: f025 f8f6 bl 29eac + 4cf0: 462b mov r3, r5 + 4cf2: 220a movs r2, #10 + 4cf4: 2112 movs r1, #18 + 4cf6: 4840 ldr r0, [pc, #256] ; (4df8 ) + 4cf8: f025 f94e bl 29f98 size_t print(const char s[]) { return write(s); } - 4cc0: 493f ldr r1, [pc, #252] ; (4dc0 ) - 4cc2: 483e ldr r0, [pc, #248] ; (4dbc ) - 4cc4: f7fe fcde bl 3684 + 4cfc: 493f ldr r1, [pc, #252] ; (4dfc ) + 4cfe: 483e ldr r0, [pc, #248] ; (4df8 ) + 4d00: f7fe fcc0 bl 3684 BMC_PRINTLN("store.global.customSysEx[0]",sizeof(store.global.customSysEx[0]),"bytes"); - 4cc8: 4943 ldr r1, [pc, #268] ; (4dd8 ) - 4cca: 483c ldr r0, [pc, #240] ; (4dbc ) - 4ccc: f7fe fcea bl 36a4 - 4cd0: 4949 ldr r1, [pc, #292] ; (4df8 ) - 4cd2: 483a ldr r0, [pc, #232] ; (4dbc ) - 4cd4: f7fe fcd6 bl 3684 - 4cd8: 4939 ldr r1, [pc, #228] ; (4dc0 ) - 4cda: 4838 ldr r0, [pc, #224] ; (4dbc ) - 4cdc: f7fe fcd2 bl 3684 + 4d04: 4943 ldr r1, [pc, #268] ; (4e14 ) + 4d06: 483c ldr r0, [pc, #240] ; (4df8 ) + 4d08: f7fe fccc bl 36a4 + 4d0c: 4949 ldr r1, [pc, #292] ; (4e34 ) + 4d0e: 483a ldr r0, [pc, #232] ; (4df8 ) + 4d10: f7fe fcb8 bl 3684 + 4d14: 4939 ldr r1, [pc, #228] ; (4dfc ) + 4d16: 4838 ldr r0, [pc, #224] ; (4df8 ) + 4d18: f7fe fcb4 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4ce0: 462b mov r3, r5 - 4ce2: 220a movs r2, #10 - 4ce4: 2110 movs r1, #16 - 4ce6: 4835 ldr r0, [pc, #212] ; (4dbc ) - 4ce8: f025 f8e0 bl 29eac + 4d1c: 462b mov r3, r5 + 4d1e: 220a movs r2, #10 + 4d20: 2110 movs r1, #16 + 4d22: 4835 ldr r0, [pc, #212] ; (4df8 ) + 4d24: f025 f938 bl 29f98 size_t print(const char s[]) { return write(s); } - 4cec: 4934 ldr r1, [pc, #208] ; (4dc0 ) - 4cee: 4833 ldr r0, [pc, #204] ; (4dbc ) - 4cf0: f7fe fcc8 bl 3684 + 4d28: 4934 ldr r1, [pc, #208] ; (4dfc ) + 4d2a: 4833 ldr r0, [pc, #204] ; (4df8 ) + 4d2c: f7fe fcaa bl 3684 BMC_PRINTLN("store.global.triggers",sizeof(store.global.triggers),"bytes"); - 4cf4: 4938 ldr r1, [pc, #224] ; (4dd8 ) - 4cf6: 4831 ldr r0, [pc, #196] ; (4dbc ) - 4cf8: f7fe fcd4 bl 36a4 - 4cfc: 493f ldr r1, [pc, #252] ; (4dfc ) - 4cfe: 482f ldr r0, [pc, #188] ; (4dbc ) - 4d00: f7fe fcc0 bl 3684 - 4d04: 492e ldr r1, [pc, #184] ; (4dc0 ) - 4d06: 482d ldr r0, [pc, #180] ; (4dbc ) - 4d08: f7fe fcbc bl 3684 + 4d30: 4938 ldr r1, [pc, #224] ; (4e14 ) + 4d32: 4831 ldr r0, [pc, #196] ; (4df8 ) + 4d34: f7fe fcb6 bl 36a4 + 4d38: 493f ldr r1, [pc, #252] ; (4e38 ) + 4d3a: 482f ldr r0, [pc, #188] ; (4df8 ) + 4d3c: f7fe fca2 bl 3684 + 4d40: 492e ldr r1, [pc, #184] ; (4dfc ) + 4d42: 482d ldr r0, [pc, #180] ; (4df8 ) + 4d44: f7fe fc9e bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4d0c: 462b mov r3, r5 - 4d0e: 220a movs r2, #10 - 4d10: 2104 movs r1, #4 - 4d12: 482a ldr r0, [pc, #168] ; (4dbc ) - 4d14: f025 f8ca bl 29eac + 4d48: 462b mov r3, r5 + 4d4a: 220a movs r2, #10 + 4d4c: 2104 movs r1, #4 + 4d4e: 482a ldr r0, [pc, #168] ; (4df8 ) + 4d50: f025 f922 bl 29f98 size_t print(const char s[]) { return write(s); } - 4d18: 4929 ldr r1, [pc, #164] ; (4dc0 ) - 4d1a: 4828 ldr r0, [pc, #160] ; (4dbc ) - 4d1c: f7fe fcb2 bl 3684 + 4d54: 4929 ldr r1, [pc, #164] ; (4dfc ) + 4d56: 4828 ldr r0, [pc, #160] ; (4df8 ) + 4d58: f7fe fc94 bl 3684 BMC_PRINTLN("store.global.triggers[0]",sizeof(store.global.triggers[0]),"bytes"); - 4d20: 492d ldr r1, [pc, #180] ; (4dd8 ) - 4d22: 4826 ldr r0, [pc, #152] ; (4dbc ) - 4d24: f7fe fcbe bl 36a4 - 4d28: 4935 ldr r1, [pc, #212] ; (4e00 ) - 4d2a: 4824 ldr r0, [pc, #144] ; (4dbc ) - 4d2c: f7fe fcaa bl 3684 - 4d30: 4923 ldr r1, [pc, #140] ; (4dc0 ) - 4d32: 4822 ldr r0, [pc, #136] ; (4dbc ) - 4d34: f7fe fca6 bl 3684 + 4d5c: 492d ldr r1, [pc, #180] ; (4e14 ) + 4d5e: 4826 ldr r0, [pc, #152] ; (4df8 ) + 4d60: f7fe fca0 bl 36a4 + 4d64: 4935 ldr r1, [pc, #212] ; (4e3c ) + 4d66: 4824 ldr r0, [pc, #144] ; (4df8 ) + 4d68: f7fe fc8c bl 3684 + 4d6c: 4923 ldr r1, [pc, #140] ; (4dfc ) + 4d6e: 4822 ldr r0, [pc, #136] ; (4df8 ) + 4d70: f7fe fc88 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4d38: 462b mov r3, r5 - 4d3a: 220a movs r2, #10 - 4d3c: 2110 movs r1, #16 - 4d3e: 481f ldr r0, [pc, #124] ; (4dbc ) - 4d40: f025 f8b4 bl 29eac + 4d74: 462b mov r3, r5 + 4d76: 220a movs r2, #10 + 4d78: 2110 movs r1, #16 + 4d7a: 481f ldr r0, [pc, #124] ; (4df8 ) + 4d7c: f025 f90c bl 29f98 size_t print(const char s[]) { return write(s); } - 4d44: 491e ldr r1, [pc, #120] ; (4dc0 ) - 4d46: 481d ldr r0, [pc, #116] ; (4dbc ) - 4d48: f7fe fc9c bl 3684 + 4d80: 491e ldr r1, [pc, #120] ; (4dfc ) + 4d82: 481d ldr r0, [pc, #116] ; (4df8 ) + 4d84: f7fe fc7e bl 3684 BMC_PRINTLN("store.global.timedEvents",sizeof(store.global.timedEvents),"bytes"); - 4d4c: 4922 ldr r1, [pc, #136] ; (4dd8 ) - 4d4e: 481b ldr r0, [pc, #108] ; (4dbc ) - 4d50: f7fe fca8 bl 36a4 - 4d54: 492b ldr r1, [pc, #172] ; (4e04 ) - 4d56: 4819 ldr r0, [pc, #100] ; (4dbc ) - 4d58: f7fe fc94 bl 3684 - 4d5c: 4918 ldr r1, [pc, #96] ; (4dc0 ) - 4d5e: 4817 ldr r0, [pc, #92] ; (4dbc ) - 4d60: f7fe fc90 bl 3684 + 4d88: 4922 ldr r1, [pc, #136] ; (4e14 ) + 4d8a: 481b ldr r0, [pc, #108] ; (4df8 ) + 4d8c: f7fe fc8a bl 36a4 + 4d90: 492b ldr r1, [pc, #172] ; (4e40 ) + 4d92: 4819 ldr r0, [pc, #100] ; (4df8 ) + 4d94: f7fe fc76 bl 3684 + 4d98: 4918 ldr r1, [pc, #96] ; (4dfc ) + 4d9a: 4817 ldr r0, [pc, #92] ; (4df8 ) + 4d9c: f7fe fc72 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4d64: 462b mov r3, r5 - 4d66: 220a movs r2, #10 - 4d68: 2104 movs r1, #4 - 4d6a: 4814 ldr r0, [pc, #80] ; (4dbc ) - 4d6c: f025 f89e bl 29eac + 4da0: 462b mov r3, r5 + 4da2: 220a movs r2, #10 + 4da4: 2104 movs r1, #4 + 4da6: 4814 ldr r0, [pc, #80] ; (4df8 ) + 4da8: f025 f8f6 bl 29f98 size_t print(const char s[]) { return write(s); } - 4d70: 4913 ldr r1, [pc, #76] ; (4dc0 ) - 4d72: 4812 ldr r0, [pc, #72] ; (4dbc ) - 4d74: f7fe fc86 bl 3684 + 4dac: 4913 ldr r1, [pc, #76] ; (4dfc ) + 4dae: 4812 ldr r0, [pc, #72] ; (4df8 ) + 4db0: f7fe fc68 bl 3684 BMC_PRINTLN("store.global.timedEvents[0]",sizeof(store.global.timedEvents[0]),"bytes"); - 4d78: 4917 ldr r1, [pc, #92] ; (4dd8 ) - 4d7a: 4810 ldr r0, [pc, #64] ; (4dbc ) - 4d7c: f7fe fc92 bl 36a4 - 4d80: 4921 ldr r1, [pc, #132] ; (4e08 ) - 4d82: 480e ldr r0, [pc, #56] ; (4dbc ) - 4d84: f7fe fc7e bl 3684 - 4d88: 490d ldr r1, [pc, #52] ; (4dc0 ) - 4d8a: 480c ldr r0, [pc, #48] ; (4dbc ) - 4d8c: f7fe fc7a bl 3684 + 4db4: 4917 ldr r1, [pc, #92] ; (4e14 ) + 4db6: 4810 ldr r0, [pc, #64] ; (4df8 ) + 4db8: f7fe fc74 bl 36a4 + 4dbc: 4921 ldr r1, [pc, #132] ; (4e44 ) + 4dbe: 480e ldr r0, [pc, #56] ; (4df8 ) + 4dc0: f7fe fc60 bl 3684 + 4dc4: 490d ldr r1, [pc, #52] ; (4dfc ) + 4dc6: 480c ldr r0, [pc, #48] ; (4df8 ) + 4dc8: f7fe fc5c bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4d90: 462b mov r3, r5 - 4d92: 220a movs r2, #10 - 4d94: 2106 movs r1, #6 - 4d96: 4809 ldr r0, [pc, #36] ; (4dbc ) - 4d98: f025 f888 bl 29eac + 4dcc: 462b mov r3, r5 + 4dce: 220a movs r2, #10 + 4dd0: 2106 movs r1, #6 + 4dd2: 4809 ldr r0, [pc, #36] ; (4df8 ) + 4dd4: f025 f8e0 bl 29f98 size_t print(const char s[]) { return write(s); } - 4d9c: 4908 ldr r1, [pc, #32] ; (4dc0 ) - 4d9e: 4807 ldr r0, [pc, #28] ; (4dbc ) - 4da0: f7fe fc70 bl 3684 + 4dd8: 4908 ldr r1, [pc, #32] ; (4dfc ) + 4dda: 4807 ldr r0, [pc, #28] ; (4df8 ) + 4ddc: f7fe fc52 bl 3684 BMC_PRINTLN("store.global.tempoToTap",sizeof(store.global.tempoToTap),"bytes"); - 4da4: 490c ldr r1, [pc, #48] ; (4dd8 ) - 4da6: 4805 ldr r0, [pc, #20] ; (4dbc ) - 4da8: f7fe fc7c bl 36a4 - 4dac: 4917 ldr r1, [pc, #92] ; (4e0c ) - 4dae: 4803 ldr r0, [pc, #12] ; (4dbc ) - 4db0: f7fe fc68 bl 3684 - 4db4: e02c b.n 4e10 - 4db6: bf00 nop - 4db8: 200032c4 .word 0x200032c4 - 4dbc: 20004ba8 .word 0x20004ba8 - 4dc0: 200023ec .word 0x200023ec - 4dc4: 20003284 .word 0x20003284 - 4dc8: 200032d4 .word 0x200032d4 - 4dcc: 200032e0 .word 0x200032e0 - 4dd0: 20003c58 .word 0x20003c58 - 4dd4: 200032bc .word 0x200032bc - 4dd8: 200032ec .word 0x200032ec - 4ddc: 200032f4 .word 0x200032f4 - 4de0: 20003304 .word 0x20003304 - 4de4: 2000331c .word 0x2000331c - 4de8: 20003334 .word 0x20003334 - 4dec: 2000334c .word 0x2000334c - 4df0: 20003368 .word 0x20003368 + 4de0: 490c ldr r1, [pc, #48] ; (4e14 ) + 4de2: 4805 ldr r0, [pc, #20] ; (4df8 ) + 4de4: f7fe fc5e bl 36a4 + 4de8: 4917 ldr r1, [pc, #92] ; (4e48 ) + 4dea: 4803 ldr r0, [pc, #12] ; (4df8 ) + 4dec: f7fe fc4a bl 3684 + 4df0: e02c b.n 4e4c + 4df2: bf00 nop 4df4: 20003384 .word 0x20003384 - 4df8: 200033a0 .word 0x200033a0 - 4dfc: 200033b8 .word 0x200033b8 - 4e00: 200033d4 .word 0x200033d4 - 4e04: 200033f0 .word 0x200033f0 - 4e08: 2000340c .word 0x2000340c - 4e0c: 20003424 .word 0x20003424 - 4e10: 49a3 ldr r1, [pc, #652] ; (50a0 ) - 4e12: 48a4 ldr r0, [pc, #656] ; (50a4 ) - 4e14: f7fe fc36 bl 3684 + 4df8: 20004c68 .word 0x20004c68 + 4dfc: 200023ec .word 0x200023ec + 4e00: 20003344 .word 0x20003344 + 4e04: 20003394 .word 0x20003394 + 4e08: 200033a0 .word 0x200033a0 + 4e0c: 20003d18 .word 0x20003d18 + 4e10: 2000337c .word 0x2000337c + 4e14: 200033ac .word 0x200033ac + 4e18: 200033b4 .word 0x200033b4 + 4e1c: 200033c4 .word 0x200033c4 + 4e20: 200033dc .word 0x200033dc + 4e24: 200033f4 .word 0x200033f4 + 4e28: 2000340c .word 0x2000340c + 4e2c: 20003428 .word 0x20003428 + 4e30: 20003444 .word 0x20003444 + 4e34: 20003460 .word 0x20003460 + 4e38: 20003478 .word 0x20003478 + 4e3c: 20003494 .word 0x20003494 + 4e40: 200034b0 .word 0x200034b0 + 4e44: 200034cc .word 0x200034cc + 4e48: 200034e4 .word 0x200034e4 + 4e4c: 49a3 ldr r1, [pc, #652] ; (50dc ) + 4e4e: 48a4 ldr r0, [pc, #656] ; (50e0 ) + 4e50: f7fe fc18 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4e18: 462b mov r3, r5 - 4e1a: 220a movs r2, #10 - 4e1c: 2103 movs r1, #3 - 4e1e: 48a1 ldr r0, [pc, #644] ; (50a4 ) - 4e20: f025 f844 bl 29eac + 4e54: 462b mov r3, r5 + 4e56: 220a movs r2, #10 + 4e58: 2103 movs r1, #3 + 4e5a: 48a1 ldr r0, [pc, #644] ; (50e0 ) + 4e5c: f025 f89c bl 29f98 size_t print(const char s[]) { return write(s); } - 4e24: 499e ldr r1, [pc, #632] ; (50a0 ) - 4e26: 489f ldr r0, [pc, #636] ; (50a4 ) - 4e28: f7fe fc2c bl 3684 + 4e60: 499e ldr r1, [pc, #632] ; (50dc ) + 4e62: 489f ldr r0, [pc, #636] ; (50e0 ) + 4e64: f7fe fc0e bl 3684 BMC_PRINTLN("store.global.tempoToTap[0]",sizeof(store.global.tempoToTap[0]),"bytes"); - 4e2c: 499e ldr r1, [pc, #632] ; (50a8 ) - 4e2e: 489d ldr r0, [pc, #628] ; (50a4 ) - 4e30: f7fe fc38 bl 36a4 - 4e34: 499d ldr r1, [pc, #628] ; (50ac ) - 4e36: 489b ldr r0, [pc, #620] ; (50a4 ) - 4e38: f7fe fc24 bl 3684 - 4e3c: 4998 ldr r1, [pc, #608] ; (50a0 ) - 4e3e: 4899 ldr r0, [pc, #612] ; (50a4 ) - 4e40: f7fe fc20 bl 3684 + 4e68: 499e ldr r1, [pc, #632] ; (50e4 ) + 4e6a: 489d ldr r0, [pc, #628] ; (50e0 ) + 4e6c: f7fe fc1a bl 36a4 + 4e70: 499d ldr r1, [pc, #628] ; (50e8 ) + 4e72: 489b ldr r0, [pc, #620] ; (50e0 ) + 4e74: f7fe fc06 bl 3684 + 4e78: 4998 ldr r1, [pc, #608] ; (50dc ) + 4e7a: 4899 ldr r0, [pc, #612] ; (50e0 ) + 4e7c: f7fe fc02 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4e44: 462b mov r3, r5 - 4e46: 220a movs r2, #10 - 4e48: 211a movs r1, #26 - 4e4a: 4896 ldr r0, [pc, #600] ; (50a4 ) - 4e4c: f025 f82e bl 29eac + 4e80: 462b mov r3, r5 + 4e82: 220a movs r2, #10 + 4e84: 211a movs r1, #26 + 4e86: 4896 ldr r0, [pc, #600] ; (50e0 ) + 4e88: f025 f886 bl 29f98 size_t print(const char s[]) { return write(s); } - 4e50: 4993 ldr r1, [pc, #588] ; (50a0 ) - 4e52: 4894 ldr r0, [pc, #592] ; (50a4 ) - 4e54: f7fe fc16 bl 3684 + 4e8c: 4993 ldr r1, [pc, #588] ; (50dc ) + 4e8e: 4894 ldr r0, [pc, #592] ; (50e0 ) + 4e90: f7fe fbf8 bl 3684 BMC_PRINTLN("store.global.buttons",sizeof(store.global.buttons),"bytes"); - 4e58: 4993 ldr r1, [pc, #588] ; (50a8 ) - 4e5a: 4892 ldr r0, [pc, #584] ; (50a4 ) - 4e5c: f7fe fc22 bl 36a4 - 4e60: 4993 ldr r1, [pc, #588] ; (50b0 ) - 4e62: 4890 ldr r0, [pc, #576] ; (50a4 ) - 4e64: f7fe fc0e bl 3684 - 4e68: 498d ldr r1, [pc, #564] ; (50a0 ) - 4e6a: 488e ldr r0, [pc, #568] ; (50a4 ) - 4e6c: f7fe fc0a bl 3684 + 4e94: 4993 ldr r1, [pc, #588] ; (50e4 ) + 4e96: 4892 ldr r0, [pc, #584] ; (50e0 ) + 4e98: f7fe fc04 bl 36a4 + 4e9c: 4993 ldr r1, [pc, #588] ; (50ec ) + 4e9e: 4890 ldr r0, [pc, #576] ; (50e0 ) + 4ea0: f7fe fbf0 bl 3684 + 4ea4: 498d ldr r1, [pc, #564] ; (50dc ) + 4ea6: 488e ldr r0, [pc, #568] ; (50e0 ) + 4ea8: f7fe fbec bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4e70: 462b mov r3, r5 - 4e72: 220a movs r2, #10 - 4e74: 210d movs r1, #13 - 4e76: 488b ldr r0, [pc, #556] ; (50a4 ) - 4e78: f025 f818 bl 29eac + 4eac: 462b mov r3, r5 + 4eae: 220a movs r2, #10 + 4eb0: 210d movs r1, #13 + 4eb2: 488b ldr r0, [pc, #556] ; (50e0 ) + 4eb4: f025 f870 bl 29f98 size_t print(const char s[]) { return write(s); } - 4e7c: 4988 ldr r1, [pc, #544] ; (50a0 ) - 4e7e: 4889 ldr r0, [pc, #548] ; (50a4 ) - 4e80: f7fe fc00 bl 3684 + 4eb8: 4988 ldr r1, [pc, #544] ; (50dc ) + 4eba: 4889 ldr r0, [pc, #548] ; (50e0 ) + 4ebc: f7fe fbe2 bl 3684 BMC_PRINTLN("store.global.buttons[0]",sizeof(store.global.buttons[0]),"bytes"); - 4e84: 4988 ldr r1, [pc, #544] ; (50a8 ) - 4e86: 4887 ldr r0, [pc, #540] ; (50a4 ) - 4e88: f7fe fc0c bl 36a4 - 4e8c: 4989 ldr r1, [pc, #548] ; (50b4 ) - 4e8e: 4885 ldr r0, [pc, #532] ; (50a4 ) - 4e90: f7fe fbf8 bl 3684 - 4e94: 4982 ldr r1, [pc, #520] ; (50a0 ) - 4e96: 4883 ldr r0, [pc, #524] ; (50a4 ) - 4e98: f7fe fbf4 bl 3684 + 4ec0: 4988 ldr r1, [pc, #544] ; (50e4 ) + 4ec2: 4887 ldr r0, [pc, #540] ; (50e0 ) + 4ec4: f7fe fbee bl 36a4 + 4ec8: 4989 ldr r1, [pc, #548] ; (50f0 ) + 4eca: 4885 ldr r0, [pc, #532] ; (50e0 ) + 4ecc: f7fe fbda bl 3684 + 4ed0: 4982 ldr r1, [pc, #520] ; (50dc ) + 4ed2: 4883 ldr r0, [pc, #524] ; (50e0 ) + 4ed4: f7fe fbd6 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4e9c: 462b mov r3, r5 - 4e9e: 220a movs r2, #10 - 4ea0: 2101 movs r1, #1 - 4ea2: 4880 ldr r0, [pc, #512] ; (50a4 ) - 4ea4: f025 f802 bl 29eac + 4ed8: 462b mov r3, r5 + 4eda: 220a movs r2, #10 + 4edc: 2101 movs r1, #1 + 4ede: 4880 ldr r0, [pc, #512] ; (50e0 ) + 4ee0: f025 f85a bl 29f98 size_t print(const char s[]) { return write(s); } - 4ea8: 497d ldr r1, [pc, #500] ; (50a0 ) - 4eaa: 487e ldr r0, [pc, #504] ; (50a4 ) - 4eac: f7fe fbea bl 3684 + 4ee4: 497d ldr r1, [pc, #500] ; (50dc ) + 4ee6: 487e ldr r0, [pc, #504] ; (50e0 ) + 4ee8: f7fe fbcc bl 3684 BMC_PRINTLN("store.global.buttons[0].events[0]",sizeof(store.global.buttons[0].events[0]),"bytes"); - 4eb0: 497d ldr r1, [pc, #500] ; (50a8 ) - 4eb2: 487c ldr r0, [pc, #496] ; (50a4 ) - 4eb4: f7fe fbf6 bl 36a4 - 4eb8: 497f ldr r1, [pc, #508] ; (50b8 ) - 4eba: 487a ldr r0, [pc, #488] ; (50a4 ) - 4ebc: f7fe fbe2 bl 3684 - 4ec0: 4977 ldr r1, [pc, #476] ; (50a0 ) - 4ec2: 4878 ldr r0, [pc, #480] ; (50a4 ) - 4ec4: f7fe fbde bl 3684 + 4eec: 497d ldr r1, [pc, #500] ; (50e4 ) + 4eee: 487c ldr r0, [pc, #496] ; (50e0 ) + 4ef0: f7fe fbd8 bl 36a4 + 4ef4: 497f ldr r1, [pc, #508] ; (50f4 ) + 4ef6: 487a ldr r0, [pc, #488] ; (50e0 ) + 4ef8: f7fe fbc4 bl 3684 + 4efc: 4977 ldr r1, [pc, #476] ; (50dc ) + 4efe: 4878 ldr r0, [pc, #480] ; (50e0 ) + 4f00: f7fe fbc0 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4ec8: 462b mov r3, r5 - 4eca: 220a movs r2, #10 - 4ecc: 210f movs r1, #15 - 4ece: 4875 ldr r0, [pc, #468] ; (50a4 ) - 4ed0: f024 ffec bl 29eac + 4f04: 462b mov r3, r5 + 4f06: 220a movs r2, #10 + 4f08: 210f movs r1, #15 + 4f0a: 4875 ldr r0, [pc, #468] ; (50e0 ) + 4f0c: f025 f844 bl 29f98 size_t print(const char s[]) { return write(s); } - 4ed4: 4972 ldr r1, [pc, #456] ; (50a0 ) - 4ed6: 4873 ldr r0, [pc, #460] ; (50a4 ) - 4ed8: f7fe fbd4 bl 3684 + 4f10: 4972 ldr r1, [pc, #456] ; (50dc ) + 4f12: 4873 ldr r0, [pc, #460] ; (50e0 ) + 4f14: f7fe fbb6 bl 3684 BMC_PRINTLN("store.global.leds",sizeof(store.global.leds),"bytes"); - 4edc: 4972 ldr r1, [pc, #456] ; (50a8 ) - 4ede: 4871 ldr r0, [pc, #452] ; (50a4 ) - 4ee0: f7fe fbe0 bl 36a4 - 4ee4: 4975 ldr r1, [pc, #468] ; (50bc ) - 4ee6: 486f ldr r0, [pc, #444] ; (50a4 ) - 4ee8: f7fe fbcc bl 3684 - 4eec: 496c ldr r1, [pc, #432] ; (50a0 ) - 4eee: 486d ldr r0, [pc, #436] ; (50a4 ) - 4ef0: f7fe fbc8 bl 3684 + 4f18: 4972 ldr r1, [pc, #456] ; (50e4 ) + 4f1a: 4871 ldr r0, [pc, #452] ; (50e0 ) + 4f1c: f7fe fbc2 bl 36a4 + 4f20: 4975 ldr r1, [pc, #468] ; (50f8 ) + 4f22: 486f ldr r0, [pc, #444] ; (50e0 ) + 4f24: f7fe fbae bl 3684 + 4f28: 496c ldr r1, [pc, #432] ; (50dc ) + 4f2a: 486d ldr r0, [pc, #436] ; (50e0 ) + 4f2c: f7fe fbaa bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4ef4: 462b mov r3, r5 - 4ef6: 220a movs r2, #10 - 4ef8: 2103 movs r1, #3 - 4efa: 486a ldr r0, [pc, #424] ; (50a4 ) - 4efc: f024 ffd6 bl 29eac + 4f30: 462b mov r3, r5 + 4f32: 220a movs r2, #10 + 4f34: 2103 movs r1, #3 + 4f36: 486a ldr r0, [pc, #424] ; (50e0 ) + 4f38: f025 f82e bl 29f98 size_t print(const char s[]) { return write(s); } - 4f00: 4967 ldr r1, [pc, #412] ; (50a0 ) - 4f02: 4868 ldr r0, [pc, #416] ; (50a4 ) - 4f04: f7fe fbbe bl 3684 + 4f3c: 4967 ldr r1, [pc, #412] ; (50dc ) + 4f3e: 4868 ldr r0, [pc, #416] ; (50e0 ) + 4f40: f7fe fba0 bl 3684 BMC_PRINTLN("store.global.leds[0]",sizeof(store.global.leds[0]),"bytes"); - 4f08: 4967 ldr r1, [pc, #412] ; (50a8 ) - 4f0a: 4866 ldr r0, [pc, #408] ; (50a4 ) - 4f0c: f7fe fbca bl 36a4 + 4f44: 4967 ldr r1, [pc, #412] ; (50e4 ) + 4f46: 4866 ldr r0, [pc, #408] ; (50e0 ) + 4f48: f7fe fbac bl 36a4 BMC_PRINTLN(""); - 4f10: 496b ldr r1, [pc, #428] ; (50c0 ) - 4f12: 4864 ldr r0, [pc, #400] ; (50a4 ) - 4f14: f7fe fbc6 bl 36a4 - 4f18: 496a ldr r1, [pc, #424] ; (50c4 ) - 4f1a: 4862 ldr r0, [pc, #392] ; (50a4 ) - 4f1c: f7fe fbb2 bl 3684 - 4f20: 495f ldr r1, [pc, #380] ; (50a0 ) - 4f22: 4860 ldr r0, [pc, #384] ; (50a4 ) - 4f24: f7fe fbae bl 3684 + 4f4c: 496b ldr r1, [pc, #428] ; (50fc ) + 4f4e: 4864 ldr r0, [pc, #400] ; (50e0 ) + 4f50: f7fe fba8 bl 36a4 + 4f54: 496a ldr r1, [pc, #424] ; (5100 ) + 4f56: 4862 ldr r0, [pc, #392] ; (50e0 ) + 4f58: f7fe fb94 bl 3684 + 4f5c: 495f ldr r1, [pc, #380] ; (50dc ) + 4f5e: 4860 ldr r0, [pc, #384] ; (50e0 ) + 4f60: f7fe fb90 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4f28: 462b mov r3, r5 - 4f2a: 220a movs r2, #10 - 4f2c: f240 2199 movw r1, #665 ; 0x299 - 4f30: 485c ldr r0, [pc, #368] ; (50a4 ) - 4f32: f024 ffbb bl 29eac + 4f64: 462b mov r3, r5 + 4f66: 220a movs r2, #10 + 4f68: f240 2199 movw r1, #665 ; 0x299 + 4f6c: 485c ldr r0, [pc, #368] ; (50e0 ) + 4f6e: f025 f813 bl 29f98 size_t print(const char s[]) { return write(s); } - 4f36: 495a ldr r1, [pc, #360] ; (50a0 ) - 4f38: 485a ldr r0, [pc, #360] ; (50a4 ) - 4f3a: f7fe fba3 bl 3684 + 4f72: 495a ldr r1, [pc, #360] ; (50dc ) + 4f74: 485a ldr r0, [pc, #360] ; (50e0 ) + 4f76: f7fe fb85 bl 3684 BMC_PRINTLN("store.layers",sizeof(store.layers),"bytes"); - 4f3e: 495a ldr r1, [pc, #360] ; (50a8 ) - 4f40: 4858 ldr r0, [pc, #352] ; (50a4 ) - 4f42: f7fe fbaf bl 36a4 - 4f46: 4960 ldr r1, [pc, #384] ; (50c8 ) - 4f48: 4856 ldr r0, [pc, #344] ; (50a4 ) - 4f4a: f7fe fb9b bl 3684 - 4f4e: 4954 ldr r1, [pc, #336] ; (50a0 ) - 4f50: 4854 ldr r0, [pc, #336] ; (50a4 ) - 4f52: f7fe fb97 bl 3684 + 4f7a: 495a ldr r1, [pc, #360] ; (50e4 ) + 4f7c: 4858 ldr r0, [pc, #352] ; (50e0 ) + 4f7e: f7fe fb91 bl 36a4 + 4f82: 4960 ldr r1, [pc, #384] ; (5104 ) + 4f84: 4856 ldr r0, [pc, #344] ; (50e0 ) + 4f86: f7fe fb7d bl 3684 + 4f8a: 4954 ldr r1, [pc, #336] ; (50dc ) + 4f8c: 4854 ldr r0, [pc, #336] ; (50e0 ) + 4f8e: f7fe fb79 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4f56: 462b mov r3, r5 - 4f58: 220a movs r2, #10 - 4f5a: 2185 movs r1, #133 ; 0x85 - 4f5c: 4851 ldr r0, [pc, #324] ; (50a4 ) - 4f5e: f024 ffa5 bl 29eac + 4f92: 462b mov r3, r5 + 4f94: 220a movs r2, #10 + 4f96: 2185 movs r1, #133 ; 0x85 + 4f98: 4851 ldr r0, [pc, #324] ; (50e0 ) + 4f9a: f024 fffd bl 29f98 size_t print(const char s[]) { return write(s); } - 4f62: 494f ldr r1, [pc, #316] ; (50a0 ) - 4f64: 484f ldr r0, [pc, #316] ; (50a4 ) - 4f66: f7fe fb8d bl 3684 + 4f9e: 494f ldr r1, [pc, #316] ; (50dc ) + 4fa0: 484f ldr r0, [pc, #316] ; (50e0 ) + 4fa2: f7fe fb6f bl 3684 BMC_PRINTLN("store.layers[0]",sizeof(store.layers[0]),"bytes"); - 4f6a: 494f ldr r1, [pc, #316] ; (50a8 ) - 4f6c: 484d ldr r0, [pc, #308] ; (50a4 ) - 4f6e: f7fe fb99 bl 36a4 - 4f72: 4956 ldr r1, [pc, #344] ; (50cc ) - 4f74: 484b ldr r0, [pc, #300] ; (50a4 ) - 4f76: f7fe fb85 bl 3684 - 4f7a: 4949 ldr r1, [pc, #292] ; (50a0 ) - 4f7c: 4849 ldr r0, [pc, #292] ; (50a4 ) - 4f7e: f7fe fb81 bl 3684 + 4fa6: 494f ldr r1, [pc, #316] ; (50e4 ) + 4fa8: 484d ldr r0, [pc, #308] ; (50e0 ) + 4faa: f7fe fb7b bl 36a4 + 4fae: 4956 ldr r1, [pc, #344] ; (5108 ) + 4fb0: 484b ldr r0, [pc, #300] ; (50e0 ) + 4fb2: f7fe fb67 bl 3684 + 4fb6: 4949 ldr r1, [pc, #292] ; (50dc ) + 4fb8: 4849 ldr r0, [pc, #292] ; (50e0 ) + 4fba: f7fe fb63 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4f82: 462b mov r3, r5 - 4f84: 220a movs r2, #10 - 4f86: 214e movs r1, #78 ; 0x4e - 4f88: 4846 ldr r0, [pc, #280] ; (50a4 ) - 4f8a: f024 ff8f bl 29eac + 4fbe: 462b mov r3, r5 + 4fc0: 220a movs r2, #10 + 4fc2: 214e movs r1, #78 ; 0x4e + 4fc4: 4846 ldr r0, [pc, #280] ; (50e0 ) + 4fc6: f024 ffe7 bl 29f98 size_t print(const char s[]) { return write(s); } - 4f8e: 4944 ldr r1, [pc, #272] ; (50a0 ) - 4f90: 4844 ldr r0, [pc, #272] ; (50a4 ) - 4f92: f7fe fb77 bl 3684 + 4fca: 4944 ldr r1, [pc, #272] ; (50dc ) + 4fcc: 4844 ldr r0, [pc, #272] ; (50e0 ) + 4fce: f7fe fb59 bl 3684 BMC_PRINTLN("store.layers[0].buttons",sizeof(store.layers[0].buttons),"bytes"); - 4f96: 4944 ldr r1, [pc, #272] ; (50a8 ) - 4f98: 4842 ldr r0, [pc, #264] ; (50a4 ) - 4f9a: f7fe fb83 bl 36a4 - 4f9e: 494c ldr r1, [pc, #304] ; (50d0 ) - 4fa0: 4840 ldr r0, [pc, #256] ; (50a4 ) - 4fa2: f7fe fb6f bl 3684 - 4fa6: 493e ldr r1, [pc, #248] ; (50a0 ) - 4fa8: 483e ldr r0, [pc, #248] ; (50a4 ) - 4faa: f7fe fb6b bl 3684 + 4fd2: 4944 ldr r1, [pc, #272] ; (50e4 ) + 4fd4: 4842 ldr r0, [pc, #264] ; (50e0 ) + 4fd6: f7fe fb65 bl 36a4 + 4fda: 494c ldr r1, [pc, #304] ; (510c ) + 4fdc: 4840 ldr r0, [pc, #256] ; (50e0 ) + 4fde: f7fe fb51 bl 3684 + 4fe2: 493e ldr r1, [pc, #248] ; (50dc ) + 4fe4: 483e ldr r0, [pc, #248] ; (50e0 ) + 4fe6: f7fe fb4d bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4fae: 462b mov r3, r5 - 4fb0: 220a movs r2, #10 - 4fb2: 210d movs r1, #13 - 4fb4: 483b ldr r0, [pc, #236] ; (50a4 ) - 4fb6: f024 ff79 bl 29eac + 4fea: 462b mov r3, r5 + 4fec: 220a movs r2, #10 + 4fee: 210d movs r1, #13 + 4ff0: 483b ldr r0, [pc, #236] ; (50e0 ) + 4ff2: f024 ffd1 bl 29f98 size_t print(const char s[]) { return write(s); } - 4fba: 4939 ldr r1, [pc, #228] ; (50a0 ) - 4fbc: 4839 ldr r0, [pc, #228] ; (50a4 ) - 4fbe: f7fe fb61 bl 3684 + 4ff6: 4939 ldr r1, [pc, #228] ; (50dc ) + 4ff8: 4839 ldr r0, [pc, #228] ; (50e0 ) + 4ffa: f7fe fb43 bl 3684 BMC_PRINTLN("store.layers[0].buttons[0]",sizeof(store.layers[0].buttons[0]),"bytes"); - 4fc2: 4939 ldr r1, [pc, #228] ; (50a8 ) - 4fc4: 4837 ldr r0, [pc, #220] ; (50a4 ) - 4fc6: f7fe fb6d bl 36a4 - 4fca: 4942 ldr r1, [pc, #264] ; (50d4 ) - 4fcc: 4835 ldr r0, [pc, #212] ; (50a4 ) - 4fce: f7fe fb59 bl 3684 - 4fd2: 4933 ldr r1, [pc, #204] ; (50a0 ) - 4fd4: 4833 ldr r0, [pc, #204] ; (50a4 ) - 4fd6: f7fe fb55 bl 3684 + 4ffe: 4939 ldr r1, [pc, #228] ; (50e4 ) + 5000: 4837 ldr r0, [pc, #220] ; (50e0 ) + 5002: f7fe fb4f bl 36a4 + 5006: 4942 ldr r1, [pc, #264] ; (5110 ) + 5008: 4835 ldr r0, [pc, #212] ; (50e0 ) + 500a: f7fe fb3b bl 3684 + 500e: 4933 ldr r1, [pc, #204] ; (50dc ) + 5010: 4833 ldr r0, [pc, #204] ; (50e0 ) + 5012: f7fe fb37 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 4fda: 462b mov r3, r5 - 4fdc: 220a movs r2, #10 - 4fde: 2101 movs r1, #1 - 4fe0: 4830 ldr r0, [pc, #192] ; (50a4 ) - 4fe2: f024 ff63 bl 29eac + 5016: 462b mov r3, r5 + 5018: 220a movs r2, #10 + 501a: 2101 movs r1, #1 + 501c: 4830 ldr r0, [pc, #192] ; (50e0 ) + 501e: f024 ffbb bl 29f98 size_t print(const char s[]) { return write(s); } - 4fe6: 492e ldr r1, [pc, #184] ; (50a0 ) - 4fe8: 482e ldr r0, [pc, #184] ; (50a4 ) - 4fea: f7fe fb4b bl 3684 + 5022: 492e ldr r1, [pc, #184] ; (50dc ) + 5024: 482e ldr r0, [pc, #184] ; (50e0 ) + 5026: f7fe fb2d bl 3684 BMC_PRINTLN("store.layers[0].buttons[0].events[0]",sizeof(store.layers[0].buttons[0].events[0]),"bytes"); - 4fee: 492e ldr r1, [pc, #184] ; (50a8 ) - 4ff0: 482c ldr r0, [pc, #176] ; (50a4 ) - 4ff2: f7fe fb57 bl 36a4 + 502a: 492e ldr r1, [pc, #184] ; (50e4 ) + 502c: 482c ldr r0, [pc, #176] ; (50e0 ) + 502e: f7fe fb39 bl 36a4 printDebugHeader(debugInput); - 4ff6: 4620 mov r0, r4 - 4ff8: f7fe fb66 bl 36c8 - 4ffc: f7fe bf4f b.w 3e9e + 5032: 4620 mov r0, r4 + 5034: f7fe fb48 bl 36c8 + 5038: f7fe bf31 b.w 3e9e printDebugHeader(debugInput); - 5000: 4620 mov r0, r4 - 5002: f7fe fb61 bl 36c8 + 503c: 4620 mov r0, r4 + 503e: f7fe fb43 bl 36c8 BMC_PRINTLN("Buttons:"); - 5006: 4934 ldr r1, [pc, #208] ; (50d8 ) - 5008: 4826 ldr r0, [pc, #152] ; (50a4 ) - 500a: f7fe fb4b bl 36a4 + 5042: 4934 ldr r1, [pc, #208] ; (5114 ) + 5044: 4826 ldr r0, [pc, #152] ; (50e0 ) + 5046: f7fe fb2d bl 36a4 BMC_PRINTLN(""); - 500e: 492c ldr r1, [pc, #176] ; (50c0 ) - 5010: 4824 ldr r0, [pc, #144] ; (50a4 ) - 5012: f7fe fb47 bl 36a4 + 504a: 492c ldr r1, [pc, #176] ; (50fc ) + 504c: 4824 ldr r0, [pc, #144] ; (50e0 ) + 504e: f7fe fb29 bl 36a4 BMC_PRINTLN("Global Buttons:"); - 5016: 4931 ldr r1, [pc, #196] ; (50dc ) - 5018: 4822 ldr r0, [pc, #136] ; (50a4 ) - 501a: f7fe fb43 bl 36a4 + 5052: 4931 ldr r1, [pc, #196] ; (5118 ) + 5054: 4822 ldr r0, [pc, #136] ; (50e0 ) + 5056: f7fe fb25 bl 36a4 BMC_PRINTLN(""); - 501e: 4928 ldr r1, [pc, #160] ; (50c0 ) - 5020: 4820 ldr r0, [pc, #128] ; (50a4 ) - 5022: f7fe fb3f bl 36a4 + 505a: 4928 ldr r1, [pc, #160] ; (50fc ) + 505c: 4820 ldr r0, [pc, #128] ; (50e0 ) + 505e: f7fe fb21 bl 36a4 BMC_PRINTLN("Global Leds:"); - 5026: 492e ldr r1, [pc, #184] ; (50e0 ) - 5028: 481e ldr r0, [pc, #120] ; (50a4 ) - 502a: f7fe fb3b bl 36a4 + 5062: 492e ldr r1, [pc, #184] ; (511c ) + 5064: 481e ldr r0, [pc, #120] ; (50e0 ) + 5066: f7fe fb1d bl 36a4 BMC_PRINTLN(""); - 502e: 4924 ldr r1, [pc, #144] ; (50c0 ) - 5030: 481c ldr r0, [pc, #112] ; (50a4 ) - 5032: f7fe fb37 bl 36a4 + 506a: 4924 ldr r1, [pc, #144] ; (50fc ) + 506c: 481c ldr r0, [pc, #112] ; (50e0 ) + 506e: f7fe fb19 bl 36a4 printDebugHeader(debugInput); - 5036: f7ff b94e b.w 42d6 + 5072: f7ff b942 b.w 42fa printDebugHeader(debugInput); - 503a: 4620 mov r0, r4 - 503c: f7fe fb44 bl 36c8 - 5040: 4928 ldr r1, [pc, #160] ; (50e4 ) - 5042: 4818 ldr r0, [pc, #96] ; (50a4 ) - 5044: f7fe fb1e bl 3684 - 5048: 4915 ldr r1, [pc, #84] ; (50a0 ) - 504a: 4816 ldr r0, [pc, #88] ; (50a4 ) - 504c: f7fe fb1a bl 3684 + 5076: 4620 mov r0, r4 + 5078: f7fe fb26 bl 36c8 + 507c: 4928 ldr r1, [pc, #160] ; (5120 ) + 507e: 4818 ldr r0, [pc, #96] ; (50e0 ) + 5080: f7fe fb00 bl 3684 + 5084: 4915 ldr r1, [pc, #84] ; (50dc ) + 5086: 4816 ldr r0, [pc, #88] ; (50e0 ) + 5088: f7fe fafc bl 3684 BMC_PRINTLN("BMC_DEVICE_NAME:",BMC_DEVICE_NAME); - 5050: 4925 ldr r1, [pc, #148] ; (50e8 ) - 5052: 4814 ldr r0, [pc, #80] ; (50a4 ) - 5054: f7fe fb26 bl 36a4 - 5058: 4924 ldr r1, [pc, #144] ; (50ec ) - 505a: 4812 ldr r0, [pc, #72] ; (50a4 ) - 505c: f7fe fb12 bl 3684 - 5060: 490f ldr r1, [pc, #60] ; (50a0 ) - 5062: 4810 ldr r0, [pc, #64] ; (50a4 ) - 5064: f7fe fb0e bl 3684 + 508c: 4925 ldr r1, [pc, #148] ; (5124 ) + 508e: 4814 ldr r0, [pc, #80] ; (50e0 ) + 5090: f7fe fb08 bl 36a4 + 5094: 4924 ldr r1, [pc, #144] ; (5128 ) + 5096: 4812 ldr r0, [pc, #72] ; (50e0 ) + 5098: f7fe faf4 bl 3684 + 509c: 490f ldr r1, [pc, #60] ; (50dc ) + 509e: 4810 ldr r0, [pc, #64] ; (50e0 ) + 50a0: f7fe faf0 bl 3684 size_t print(int n) { return print((long)n); } - 5068: 4921 ldr r1, [pc, #132] ; (50f0 ) - 506a: 480e ldr r0, [pc, #56] ; (50a4 ) - 506c: f024 fef6 bl 29e5c + 50a4: 4921 ldr r1, [pc, #132] ; (512c ) + 50a6: 480e ldr r0, [pc, #56] ; (50e0 ) + 50a8: f024 ff4e bl 29f48 size_t print(const char s[]) { return write(s); } - 5070: 490b ldr r1, [pc, #44] ; (50a0 ) - 5072: 480c ldr r0, [pc, #48] ; (50a4 ) - 5074: f7fe fb06 bl 3684 - 5078: 491e ldr r1, [pc, #120] ; (50f4 ) - 507a: 480a ldr r0, [pc, #40] ; (50a4 ) - 507c: f7fe fb02 bl 3684 + 50ac: 490b ldr r1, [pc, #44] ; (50dc ) + 50ae: 480c ldr r0, [pc, #48] ; (50e0 ) + 50b0: f7fe fae8 bl 3684 + 50b4: 491e ldr r1, [pc, #120] ; (5130 ) + 50b6: 480a ldr r0, [pc, #40] ; (50e0 ) + 50b8: f7fe fae4 bl 3684 size_t print(int n, int base) { return (base == 10) ? print(n) : printNumber(n, base, 0); } - 5080: 462b mov r3, r5 - 5082: 2210 movs r2, #16 - 5084: 491a ldr r1, [pc, #104] ; (50f0 ) - 5086: 4807 ldr r0, [pc, #28] ; (50a4 ) - 5088: f024 ff10 bl 29eac + 50bc: 462b mov r3, r5 + 50be: 2210 movs r2, #16 + 50c0: 491a ldr r1, [pc, #104] ; (512c ) + 50c2: 4807 ldr r0, [pc, #28] ; (50e0 ) + 50c4: f024 ff68 bl 29f98 BMC_PRINTLN(""); - 508c: 490c ldr r1, [pc, #48] ; (50c0 ) - 508e: 4805 ldr r0, [pc, #20] ; (50a4 ) - 5090: f7fe fb08 bl 36a4 + 50c8: 490c ldr r1, [pc, #48] ; (50fc ) + 50ca: 4805 ldr r0, [pc, #20] ; (50e0 ) + 50cc: f7fe faea bl 36a4 editor.printDevicesInfo(); - 5094: f642 409c movw r0, #11420 ; 0x2c9c - 5098: 4430 add r0, r6 - 509a: f7fe fc77 bl 398c + 50d0: f642 40bc movw r0, #11452 ; 0x2cbc + 50d4: 4430 add r0, r6 + 50d6: f7fe fc59 bl 398c BMC_PRINTLN(""); - 509e: e7c6 b.n 502e - 50a0: 200023ec .word 0x200023ec - 50a4: 20004ba8 .word 0x20004ba8 - 50a8: 200032ec .word 0x200032ec - 50ac: 20003440 .word 0x20003440 - 50b0: 20003458 .word 0x20003458 - 50b4: 20003470 .word 0x20003470 - 50b8: 20003494 .word 0x20003494 - 50bc: 200034a8 .word 0x200034a8 - 50c0: 20003c58 .word 0x20003c58 - 50c4: 200034c0 .word 0x200034c0 - 50c8: 200034d0 .word 0x200034d0 - 50cc: 200034e0 .word 0x200034e0 - 50d0: 200034f8 .word 0x200034f8 - 50d4: 20003514 .word 0x20003514 - 50d8: 20003290 .word 0x20003290 - 50dc: 2000329c .word 0x2000329c - 50e0: 200032ac .word 0x200032ac - 50e4: 20003258 .word 0x20003258 - 50e8: 20002400 .word 0x20002400 - 50ec: 2000326c .word 0x2000326c - 50f0: 007d7d7d .word 0x007d7d7d - 50f4: 20003284 .word 0x20003284 + 50da: e7c6 b.n 506a + 50dc: 200023ec .word 0x200023ec + 50e0: 20004c68 .word 0x20004c68 + 50e4: 200033ac .word 0x200033ac + 50e8: 20003500 .word 0x20003500 + 50ec: 20003518 .word 0x20003518 + 50f0: 20003530 .word 0x20003530 + 50f4: 20003554 .word 0x20003554 + 50f8: 20003568 .word 0x20003568 + 50fc: 20003d18 .word 0x20003d18 + 5100: 20003580 .word 0x20003580 + 5104: 20003590 .word 0x20003590 + 5108: 200035a0 .word 0x200035a0 + 510c: 200035b8 .word 0x200035b8 + 5110: 200035d4 .word 0x200035d4 + 5114: 20003350 .word 0x20003350 + 5118: 2000335c .word 0x2000335c + 511c: 2000336c .word 0x2000336c + 5120: 20003318 .word 0x20003318 + 5124: 20002400 .word 0x20002400 + 5128: 2000332c .word 0x2000332c + 512c: 007d7d7d .word 0x007d7d7d + 5130: 20003344 .word 0x20003344 printDebugHeader(debugInput); - 50f8: 4620 mov r0, r4 + 5134: 4620 mov r0, r4 #else // 8K return 8000; #endif */ return _totalCapacity; - 50fa: f506 5600 add.w r6, r6, #8192 ; 0x2000 - 50fe: f7fe fae3 bl 36c8 + 5136: f506 5600 add.w r6, r6, #8192 ; 0x2000 + 513a: f7fe fac5 bl 36c8 size_t print(const char s[]) { return write(s); } - 5102: 4999 ldr r1, [pc, #612] ; (5368 ) - 5104: 4899 ldr r0, [pc, #612] ; (536c ) - 5106: f7fe fabd bl 3684 - 510a: 4999 ldr r1, [pc, #612] ; (5370 ) - 510c: 4897 ldr r0, [pc, #604] ; (536c ) - 510e: f7fe fab9 bl 3684 + 513e: 49ab ldr r1, [pc, #684] ; (53ec ) + 5140: 48ab ldr r0, [pc, #684] ; (53f0 ) + 5142: f7fe fa9f bl 3684 + 5146: 49ab ldr r1, [pc, #684] ; (53f4 ) + 5148: 48a9 ldr r0, [pc, #676] ; (53f0 ) + 514a: f7fe fa9b bl 3684 size_t print(int n) { return print((long)n); } - 5112: f8b6 1cb8 ldrh.w r1, [r6, #3256] ; 0xcb8 - 5116: 4895 ldr r0, [pc, #596] ; (536c ) - 5118: f024 fea0 bl 29e5c + 514e: f8b6 1cd8 ldrh.w r1, [r6, #3288] ; 0xcd8 + 5152: 48a7 ldr r0, [pc, #668] ; (53f0 ) + 5154: f024 fef8 bl 29f48 size_t print(const char s[]) { return write(s); } - 511c: 4994 ldr r1, [pc, #592] ; (5370 ) - 511e: 4893 ldr r0, [pc, #588] ; (536c ) - 5120: f7fe fab0 bl 3684 + 5158: 49a6 ldr r1, [pc, #664] ; (53f4 ) + 515a: 48a5 ldr r0, [pc, #660] ; (53f0 ) + 515c: f7fe fa92 bl 3684 BMC_PRINTLN("EEPROM size",editor.getEepromSize(),"bytes."); - 5124: 4993 ldr r1, [pc, #588] ; (5374 ) - 5126: 4891 ldr r0, [pc, #580] ; (536c ) - 5128: f7fe fabc bl 36a4 - 512c: 4992 ldr r1, [pc, #584] ; (5378 ) - 512e: 488f ldr r0, [pc, #572] ; (536c ) - 5130: f7fe faa8 bl 3684 - 5134: 498e ldr r1, [pc, #568] ; (5370 ) - 5136: 488d ldr r0, [pc, #564] ; (536c ) - 5138: f7fe faa4 bl 3684 + 5160: 49a5 ldr r1, [pc, #660] ; (53f8 ) + 5162: 48a3 ldr r0, [pc, #652] ; (53f0 ) + 5164: f7fe fa9e bl 36a4 + 5168: 49a4 ldr r1, [pc, #656] ; (53fc ) + 516a: 48a1 ldr r0, [pc, #644] ; (53f0 ) + 516c: f7fe fa8a bl 3684 + 5170: 49a0 ldr r1, [pc, #640] ; (53f4 ) + 5172: 489f ldr r0, [pc, #636] ; (53f0 ) + 5174: f7fe fa86 bl 3684 size_t print(unsigned int n) { return printNumber(n, 10, 0); } - 513c: 462b mov r3, r5 - 513e: 220a movs r2, #10 - 5140: f241 71fc movw r1, #6140 ; 0x17fc - 5144: 4889 ldr r0, [pc, #548] ; (536c ) - 5146: f024 feb1 bl 29eac + 5178: 462b mov r3, r5 + 517a: 220a movs r2, #10 + 517c: f241 71fc movw r1, #6140 ; 0x17fc + 5180: 489b ldr r0, [pc, #620] ; (53f0 ) + 5182: f024 ff09 bl 29f98 size_t print(const char s[]) { return write(s); } - 514a: 4989 ldr r1, [pc, #548] ; (5370 ) - 514c: 4887 ldr r0, [pc, #540] ; (536c ) - 514e: f7fe fa99 bl 3684 + 5186: 499b ldr r1, [pc, #620] ; (53f4 ) + 5188: 4899 ldr r0, [pc, #612] ; (53f0 ) + 518a: f7fe fa7b bl 3684 BMC_PRINTLN("Store:", sizeof(bmcStore),"Bytes"); - 5152: 498a ldr r1, [pc, #552] ; (537c ) - 5154: 4885 ldr r0, [pc, #532] ; (536c ) - 5156: f7fe faa5 bl 36a4 + 518e: 499c ldr r1, [pc, #624] ; (5400 ) + 5190: 4897 ldr r0, [pc, #604] ; (53f0 ) + 5192: f7fe fa87 bl 36a4 printDebugHeader(debugInput); - 515a: 4620 mov r0, r4 - 515c: f7fe fab4 bl 36c8 - 5160: f7fe be9d b.w 3e9e + 5196: 4620 mov r0, r4 + 5198: f7fe fa96 bl 36c8 + 519c: f7fe be7f b.w 3e9e printDebugHeader(debugInput); - 5164: 4620 mov r0, r4 - 5166: f7fe faaf bl 36c8 - 516a: 4985 ldr r1, [pc, #532] ; (5380 ) - 516c: 487f ldr r0, [pc, #508] ; (536c ) - 516e: f7fe fa89 bl 3684 - 5172: 497f ldr r1, [pc, #508] ; (5370 ) - 5174: 487d ldr r0, [pc, #500] ; (536c ) - 5176: f7fe fa85 bl 3684 + 51a0: 4620 mov r0, r4 + 51a2: f7fe fa91 bl 36c8 + 51a6: 4997 ldr r1, [pc, #604] ; (5404 ) + 51a8: 4891 ldr r0, [pc, #580] ; (53f0 ) + 51aa: f7fe fa6b bl 3684 + 51ae: 4991 ldr r1, [pc, #580] ; (53f4 ) + 51b0: 488f ldr r0, [pc, #572] ; (53f0 ) + 51b2: f7fe fa67 bl 3684 BMC_PRINTLN("BMC Library Version", BMC_VERSION_STR); - 517a: 4982 ldr r1, [pc, #520] ; (5384 ) - 517c: 487b ldr r0, [pc, #492] ; (536c ) - 517e: f7fe fa91 bl 36a4 - 5182: 4981 ldr r1, [pc, #516] ; (5388 ) - 5184: 4879 ldr r0, [pc, #484] ; (536c ) - 5186: f7fe fa7d bl 3684 + 51b6: 4994 ldr r1, [pc, #592] ; (5408 ) + 51b8: 488d ldr r0, [pc, #564] ; (53f0 ) + 51ba: f7fe fa73 bl 36a4 + 51be: 4993 ldr r1, [pc, #588] ; (540c ) + 51c0: 488b ldr r0, [pc, #556] ; (53f0 ) + 51c2: f7fe fa5f bl 3684 virtual size_t write(uint8_t c) { return usb_seremu_putchar(c); } - 518a: 2022 movs r0, #34 ; 0x22 - 518c: f027 f9c6 bl 2c51c + 51c6: 2022 movs r0, #34 ; 0x22 + 51c8: f027 fa1c bl 2c604 BMC_PRINTLNNS("BMC Library Version stored in EEPROM ",'"',BMC_GET_BYTE(1,store.version),".",BMC_GET_BYTE(0,store.version),'"'); - 5190: 8871 ldrh r1, [r6, #2] + 51cc: 8871 ldrh r1, [r6, #2] size_t print(int n) { return print((long)n); } - 5192: 4876 ldr r0, [pc, #472] ; (536c ) - 5194: 0a09 lsrs r1, r1, #8 - 5196: f024 fe61 bl 29e5c + 51ce: 4888 ldr r0, [pc, #544] ; (53f0 ) + 51d0: 0a09 lsrs r1, r1, #8 + 51d2: f024 feb9 bl 29f48 size_t print(const char s[]) { return write(s); } - 519a: 497c ldr r1, [pc, #496] ; (538c ) - 519c: 4873 ldr r0, [pc, #460] ; (536c ) - 519e: f7fe fa71 bl 3684 + 51d6: 498e ldr r1, [pc, #568] ; (5410 ) + 51d8: 4885 ldr r0, [pc, #532] ; (53f0 ) + 51da: f7fe fa53 bl 3684 size_t print(int n) { return print((long)n); } - 51a2: 78b1 ldrb r1, [r6, #2] - 51a4: 4871 ldr r0, [pc, #452] ; (536c ) - 51a6: f024 fe59 bl 29e5c - 51aa: 2022 movs r0, #34 ; 0x22 - 51ac: f027 f9b6 bl 2c51c + 51de: 78b1 ldrb r1, [r6, #2] + 51e0: 4883 ldr r0, [pc, #524] ; (53f0 ) + 51e2: f024 feb1 bl 29f48 + 51e6: 2022 movs r0, #34 ; 0x22 + 51e8: f027 fa0c bl 2c604 size_t println(char c) { return print(c) + println(); } - 51b0: 486e ldr r0, [pc, #440] ; (536c ) - 51b2: f024 fe5f bl 29e74 + 51ec: 4880 ldr r0, [pc, #512] ; (53f0 ) + 51ee: f024 feb7 bl 29f60 printDebugHeader(debugInput); - 51b6: 4620 mov r0, r4 - 51b8: f7fe fa86 bl 36c8 - 51bc: f7fe be6f b.w 3e9e + 51f2: 4620 mov r0, r4 + 51f4: f7fe fa68 bl 36c8 + 51f8: f7fe be51 b.w 3e9e printDebugHeader(debugInput); - 51c0: 4620 mov r0, r4 - return bitRead(flags, bit); - 51c2: f506 5680 add.w r6, r6, #4096 ; 0x1000 - 51c6: f7fe fa7f bl 36c8 + 51fc: 4620 mov r0, r4 + 51fe: f7fe fa63 bl 36c8 + printDebugHeader(debugInput); + 5202: 4620 mov r0, r4 + 5204: f7fe fa60 bl 36c8 + 5208: f7fe be49 b.w 3e9e + printDebugHeader(debugInput); + 520c: 4620 mov r0, r4 + flags ^= 1UL << bit; + 520e: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 5212: f7fe fa59 bl 36c8 size_t print(const char s[]) { return write(s); } - 51ca: 4971 ldr r1, [pc, #452] ; (5390 ) - 51cc: 4867 ldr r0, [pc, #412] ; (536c ) - 51ce: f7fe fa59 bl 3684 - 51d2: 4967 ldr r1, [pc, #412] ; (5370 ) - 51d4: 4865 ldr r0, [pc, #404] ; (536c ) - 51d6: f7fe fa55 bl 3684 - 51da: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + 5216: 497f ldr r1, [pc, #508] ; (5414 ) + 5218: 4875 ldr r0, [pc, #468] ; (53f0 ) + 521a: f7fe fa33 bl 3684 + 521e: 4975 ldr r1, [pc, #468] ; (53f4 ) + 5220: 4873 ldr r0, [pc, #460] ; (53f0 ) + 5222: f7fe fa2f bl 3684 + 5226: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + BMC_PRINTLN("BLE Debug", globals.toggleBleDebug()); + 522a: 4871 ldr r0, [pc, #452] ; (53f0 ) + 522c: f083 0304 eor.w r3, r3, #4 + 5230: f3c3 0180 ubfx r1, r3, #2, #1 + 5234: f8a6 3860 strh.w r3, [r6, #2144] ; 0x860 + 5238: f7fe fa1a bl 3670 + printDebugHeader(debugInput); + 523c: 4620 mov r0, r4 + 523e: f7fe fa43 bl 36c8 + 5242: f7fe be2c b.w 3e9e + printDebugHeader(debugInput); + 5246: 4620 mov r0, r4 + return bitRead(flags, bit); + 5248: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 524c: f7fe fa3c bl 36c8 + 5250: 4971 ldr r1, [pc, #452] ; (5418 ) + 5252: 4867 ldr r0, [pc, #412] ; (53f0 ) + 5254: f7fe fa16 bl 3684 + 5258: 4966 ldr r1, [pc, #408] ; (53f4 ) + 525a: 4865 ldr r0, [pc, #404] ; (53f0 ) + 525c: f7fe fa12 bl 3684 + 5260: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 if(!debugFlags.read(BMC_GLOBALS_DEBUG_FLAG_MIDI_OUT)){ - 51de: 069a lsls r2, r3, #26 - 51e0: f3c3 1140 ubfx r1, r3, #5, #1 - 51e4: f140 808d bpl.w 5302 + 5264: 069a lsls r2, r3, #26 + 5266: f3c3 1140 ubfx r1, r3, #5, #1 + 526a: f140 808d bpl.w 5388 flags ^= 1UL << bit; - 51e8: f083 0340 eor.w r3, r3, #64 ; 0x40 + 526e: f083 0340 eor.w r3, r3, #64 ; 0x40 return bitRead(flags, bit); - 51ec: f3c3 1180 ubfx r1, r3, #6, #1 + 5272: f3c3 1180 ubfx r1, r3, #6, #1 BMC_PRINTLN("midiOut", globals.toggleMidiOutDebug()); - 51f0: 485e ldr r0, [pc, #376] ; (536c ) + 5276: 485e ldr r0, [pc, #376] ; (53f0 ) bitClear(flags, bit); - 51f2: f8a6 3860 strh.w r3, [r6, #2144] ; 0x860 - 51f6: f7fe fa3b bl 3670 + 5278: f8a6 3860 strh.w r3, [r6, #2144] ; 0x860 + 527c: f7fe f9f8 bl 3670 printDebugHeader(debugInput); - 51fa: 4620 mov r0, r4 - 51fc: f7fe fa64 bl 36c8 - 5200: f7fe be4d b.w 3e9e + 5280: 4620 mov r0, r4 + 5282: f7fe fa21 bl 36c8 + 5286: f7fe be0a b.w 3e9e printDebugHeader(debugInput); - 5204: 4620 mov r0, r4 + 528a: 4620 mov r0, r4 flags ^= 1UL << bit; - 5206: f506 5680 add.w r6, r6, #4096 ; 0x1000 - 520a: f7fe fa5d bl 36c8 - 520e: 4961 ldr r1, [pc, #388] ; (5394 ) - 5210: 4856 ldr r0, [pc, #344] ; (536c ) - 5212: f7fe fa37 bl 3684 - 5216: 4956 ldr r1, [pc, #344] ; (5370 ) - 5218: 4854 ldr r0, [pc, #336] ; (536c ) - 521a: f7fe fa33 bl 3684 - 521e: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 - 5222: f083 0320 eor.w r3, r3, #32 + 528c: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 5290: f7fe fa1a bl 36c8 + 5294: 4961 ldr r1, [pc, #388] ; (541c ) + 5296: 4856 ldr r0, [pc, #344] ; (53f0 ) + 5298: f7fe f9f4 bl 3684 + 529c: 4955 ldr r1, [pc, #340] ; (53f4 ) + 529e: 4854 ldr r0, [pc, #336] ; (53f0 ) + 52a0: f7fe f9f0 bl 3684 + 52a4: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + 52a8: f083 0320 eor.w r3, r3, #32 if(!v){ - 5226: 0698 lsls r0, r3, #26 + 52ac: 0698 lsls r0, r3, #26 return bitRead(flags, bit); - 5228: f3c3 1140 ubfx r1, r3, #5, #1 + 52ae: f3c3 1140 ubfx r1, r3, #5, #1 bitClear(flags, bit); - 522c: bf58 it pl - 522e: f023 0340 bicpl.w r3, r3, #64 ; 0x40 - 5232: e7dd b.n 51f0 + 52b2: bf58 it pl + 52b4: f023 0340 bicpl.w r3, r3, #64 ; 0x40 + 52b8: e7dd b.n 5276 printDebugHeader(debugInput); - 5234: 4620 mov r0, r4 + 52ba: 4620 mov r0, r4 flags ^= 1UL << bit; - 5236: f506 5680 add.w r6, r6, #4096 ; 0x1000 - 523a: f7fe fa45 bl 36c8 - 523e: 4956 ldr r1, [pc, #344] ; (5398 ) - 5240: 484a ldr r0, [pc, #296] ; (536c ) - 5242: f7fe fa1f bl 3684 - 5246: 494a ldr r1, [pc, #296] ; (5370 ) - 5248: 4848 ldr r0, [pc, #288] ; (536c ) - 524a: f7fe fa1b bl 3684 - 524e: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 - 5252: f083 0308 eor.w r3, r3, #8 + 52bc: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 52c0: f7fe fa02 bl 36c8 + 52c4: 4956 ldr r1, [pc, #344] ; (5420 ) + 52c6: 484a ldr r0, [pc, #296] ; (53f0 ) + 52c8: f7fe f9dc bl 3684 + 52cc: 4949 ldr r1, [pc, #292] ; (53f4 ) + 52ce: 4848 ldr r0, [pc, #288] ; (53f0 ) + 52d0: f7fe f9d8 bl 3684 + 52d4: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + 52d8: f083 0308 eor.w r3, r3, #8 if(!v){ - 5256: 071f lsls r7, r3, #28 + 52dc: 071f lsls r7, r3, #28 return bitRead(flags, bit); - 5258: f3c3 01c0 ubfx r1, r3, #3, #1 + 52de: f3c3 01c0 ubfx r1, r3, #3, #1 bitClear(flags, bit); - 525c: bf58 it pl - 525e: f023 0310 bicpl.w r3, r3, #16 - 5262: e7c5 b.n 51f0 + 52e2: bf58 it pl + 52e4: f023 0310 bicpl.w r3, r3, #16 + 52e8: e7c5 b.n 5276 } else if(BMC_STR_MATCH(debugInput,"midiClockInfo")){ - 5264: f103 437a add.w r3, r3, #4194304000 ; 0xfa000000 - 5268: 9a06 ldr r2, [sp, #24] - 526a: f503 2330 add.w r3, r3, #720896 ; 0xb0000 - 526e: f203 23d6 addw r3, r3, #726 ; 0x2d6 - 5272: 429a cmp r2, r3 - 5274: f47e ae75 bne.w 3f62 - 5278: f103 733f add.w r3, r3, #50069504 ; 0x2fc0000 - 527c: 9a07 ldr r2, [sp, #28] - 527e: f503 3337 add.w r3, r3, #187392 ; 0x2dc00 - 5282: f503 7394 add.w r3, r3, #296 ; 0x128 - 5286: 429a cmp r2, r3 - 5288: f47e ae6b bne.w 3f62 - 528c: f8bd 3020 ldrh.w r3, [sp, #32] - 5290: 2b6f cmp r3, #111 ; 0x6f - 5292: f47e ae66 bne.w 3f62 + 52ea: f103 437a add.w r3, r3, #4194304000 ; 0xfa000000 + 52ee: 9a06 ldr r2, [sp, #24] + 52f0: f503 2330 add.w r3, r3, #720896 ; 0xb0000 + 52f4: f203 23d6 addw r3, r3, #726 ; 0x2d6 + 52f8: 429a cmp r2, r3 + 52fa: f47e ae32 bne.w 3f62 + 52fe: f103 733f add.w r3, r3, #50069504 ; 0x2fc0000 + 5302: 9a07 ldr r2, [sp, #28] + 5304: f503 3337 add.w r3, r3, #187392 ; 0x2dc00 + 5308: f503 7394 add.w r3, r3, #296 ; 0x128 + 530c: 429a cmp r2, r3 + 530e: f47e ae28 bne.w 3f62 + 5312: f8bd 3020 ldrh.w r3, [sp, #32] + 5316: 2b6f cmp r3, #111 ; 0x6f + 5318: f47e ae23 bne.w 3f62 printDebugHeader(debugInput); - 5296: 4620 mov r0, r4 - 5298: f7fe fa16 bl 36c8 + 531c: 4620 mov r0, r4 + 531e: f7fe f9d3 bl 36c8 return bitRead(flags, bit); - 529c: f895 3194 ldrb.w r3, [r5, #404] ; 0x194 + 5322: f895 31b4 ldrb.w r3, [r5, #436] ; 0x1b4 if(midiClock.isMaster()){ - 52a0: 07db lsls r3, r3, #31 - 52a2: d532 bpl.n 530a + 5326: 07db lsls r3, r3, #31 + 5328: d532 bpl.n 5390 BMC_PRINTLN("Master"); - 52a4: 493d ldr r1, [pc, #244] ; (539c ) - 52a6: 4831 ldr r0, [pc, #196] ; (536c ) - 52a8: f7fe f9fc bl 36a4 - 52ac: 493c ldr r1, [pc, #240] ; (53a0 ) - 52ae: 482f ldr r0, [pc, #188] ; (536c ) - 52b0: f7fe f9e8 bl 3684 - 52b4: 492e ldr r1, [pc, #184] ; (5370 ) - 52b6: 482d ldr r0, [pc, #180] ; (536c ) - 52b8: f7fe f9e4 bl 3684 + 532a: 493e ldr r1, [pc, #248] ; (5424 ) + 532c: 4830 ldr r0, [pc, #192] ; (53f0 ) + 532e: f7fe f9b9 bl 36a4 + 5332: 493d ldr r1, [pc, #244] ; (5428 ) + 5334: 482e ldr r0, [pc, #184] ; (53f0 ) + 5336: f7fe f9a5 bl 3684 + 533a: 492e ldr r1, [pc, #184] ; (53f4 ) + 533c: 482c ldr r0, [pc, #176] ; (53f0 ) + 533e: f7fe f9a1 bl 3684 // that way we don't have to recalcultate things a bunch of times in a row bpmSetTimer.start(100); } } uint16_t getBpm(){ return bpm; - 52bc: f8d5 3188 ldr.w r3, [r5, #392] ; 0x188 + 5342: f8d5 31a8 ldr.w r3, [r5, #424] ; 0x1a8 BMC_PRINTLN("BPM", midiClock.getBpm()); - 52c0: 482a ldr r0, [pc, #168] ; (536c ) - 52c2: 8819 ldrh r1, [r3, #0] - 52c4: f7fe f9d4 bl 3670 + 5346: 482a ldr r0, [pc, #168] ; (53f0 ) + 5348: 8819 ldrh r1, [r3, #0] + 534a: f7fe f991 bl 3670 printDebugHeader(debugInput); - 52c8: 4620 mov r0, r4 - 52ca: f7fe f9fd bl 36c8 - 52ce: f7fe bde6 b.w 3e9e + 534e: 4620 mov r0, r4 + 5350: f7fe f9ba bl 36c8 + 5354: f7fe bda3 b.w 3e9e printDebugHeader(debugInput); - 52d2: 4620 mov r0, r4 - 52d4: f506 5680 add.w r6, r6, #4096 ; 0x1000 - 52d8: f7fe f9f6 bl 36c8 - 52dc: 4931 ldr r1, [pc, #196] ; (53a4 ) - 52de: 4823 ldr r0, [pc, #140] ; (536c ) - 52e0: f7fe f9d0 bl 3684 - 52e4: 4922 ldr r1, [pc, #136] ; (5370 ) - 52e6: 4821 ldr r0, [pc, #132] ; (536c ) - 52e8: f7fe f9cc bl 3684 - 52ec: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 + 5358: 4620 mov r0, r4 + 535a: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 535e: f7fe f9b3 bl 36c8 + 5362: 4932 ldr r1, [pc, #200] ; (542c ) + 5364: 4822 ldr r0, [pc, #136] ; (53f0 ) + 5366: f7fe f98d bl 3684 + 536a: 4922 ldr r1, [pc, #136] ; (53f4 ) + 536c: 4820 ldr r0, [pc, #128] ; (53f0 ) + 536e: f7fe f989 bl 3684 + 5372: f8b6 3860 ldrh.w r3, [r6, #2144] ; 0x860 if(!debugFlags.read(BMC_GLOBALS_DEBUG_FLAG_MIDI_IN)){ - 52f0: 071d lsls r5, r3, #28 - 52f2: f3c3 01c0 ubfx r1, r3, #3, #1 - 52f6: d528 bpl.n 534a + 5376: 071d lsls r5, r3, #28 + 5378: f3c3 01c0 ubfx r1, r3, #3, #1 + 537c: d528 bpl.n 53d0 flags ^= 1UL << bit; - 52f8: f083 0310 eor.w r3, r3, #16 + 537e: f083 0310 eor.w r3, r3, #16 return bitRead(flags, bit); - 52fc: f3c3 1100 ubfx r1, r3, #4, #1 + 5382: f3c3 1100 ubfx r1, r3, #4, #1 return debugFlags.toggle(BMC_GLOBALS_DEBUG_FLAG_MIDI_IN_WITH_CLOCK); - 5300: e776 b.n 51f0 + 5386: e776 b.n 5276 bitClear(flags, bit); - 5302: f023 0340 bic.w r3, r3, #64 ; 0x40 - 5306: b29b uxth r3, r3 + 5388: f023 0340 bic.w r3, r3, #64 ; 0x40 + 538c: b29b uxth r3, r3 return false; - 5308: e772 b.n 51f0 - 530a: 4927 ldr r1, [pc, #156] ; (53a8 ) - 530c: 4817 ldr r0, [pc, #92] ; (536c ) - 530e: f7fe f9b9 bl 3684 - 5312: 4917 ldr r1, [pc, #92] ; (5370 ) - 5314: 4815 ldr r0, [pc, #84] ; (536c ) - 5316: f7fe f9b5 bl 3684 + 538e: e772 b.n 5276 + 5390: 4927 ldr r1, [pc, #156] ; (5430 ) + 5392: 4817 ldr r0, [pc, #92] ; (53f0 ) + 5394: f7fe f976 bl 3684 + 5398: 4916 ldr r1, [pc, #88] ; (53f4 ) + 539a: 4815 ldr r0, [pc, #84] ; (53f0 ) + 539c: f7fe f972 bl 3684 } void setClockListenerPort(uint8_t t_port){ bitWrite(slaveClockPort, (t_port & 0x07), 1); } uint8_t getClockListenerPort(){ return slaveClockPort; - 531a: f506 5300 add.w r3, r6, #8192 ; 0x2000 - 531e: f506 5680 add.w r6, r6, #4096 ; 0x1000 - 5322: f893 12ee ldrb.w r1, [r3, #750] ; 0x2ee + 53a0: f506 5300 add.w r3, r6, #8192 ; 0x2000 + 53a4: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 53a8: f893 12ee ldrb.w r1, [r3, #750] ; 0x2ee } bool matchSourceAndChannel(){ return (channel==0 || (channel == message.getChannel())); } uint8_t getPortPreset(uint8_t port){ if(port>127){ - 5326: f993 32ee ldrsb.w r3, [r3, #750] ; 0x2ee - 532a: 2b00 cmp r3, #0 - 532c: db11 blt.n 5352 + 53ac: f993 32ee ldrsb.w r3, [r3, #750] ; 0x2ee + 53b0: 2b00 cmp r3, #0 + 53b2: db11 blt.n 53d8 BMC_PRINTLN( - 532e: a801 add r0, sp, #4 - 5330: f7fe fa02 bl 3738 + 53b4: a801 add r0, sp, #4 + 53b6: f7fe f9bf bl 3738 size_t println(const String &s) { return print(s) + println(); } - 5334: a901 add r1, sp, #4 - 5336: 480d ldr r0, [pc, #52] ; (536c ) - 5338: f024 fd6a bl 29e10 - 533c: 480b ldr r0, [pc, #44] ; (536c ) - 533e: f024 fd99 bl 29e74 - 5342: a801 add r0, sp, #4 - 5344: f024 fe98 bl 2a078 - 5348: e7b0 b.n 52ac - 534a: f023 0310 bic.w r3, r3, #16 - 534e: b29b uxth r3, r3 + 53ba: a901 add r1, sp, #4 + 53bc: 480c ldr r0, [pc, #48] ; (53f0 ) + 53be: f024 fd9d bl 29efc + 53c2: 480b ldr r0, [pc, #44] ; (53f0 ) + 53c4: f024 fdcc bl 29f60 + 53c8: a801 add r0, sp, #4 + 53ca: f024 fec9 bl 2a160 + 53ce: e7b0 b.n 5332 + 53d0: f023 0310 bic.w r3, r3, #16 + 53d4: b29b uxth r3, r3 return false; - 5350: e74e b.n 51f0 + 53d6: e74e b.n 5276 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 5352: f8d6 3ac8 ldr.w r3, [r6, #2760] ; 0xac8 - 5356: f001 010f and.w r1, r1, #15 - 535a: 681b ldr r3, [r3, #0] - 535c: eb03 0341 add.w r3, r3, r1, lsl #1 - 5360: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 - 5364: e7e3 b.n 532e - 5366: bf00 nop - 5368: 2000323c .word 0x2000323c - 536c: 20004ba8 .word 0x20004ba8 - 5370: 200023ec .word 0x200023ec - 5374: 20003248 .word 0x20003248 - 5378: 20002458 .word 0x20002458 - 537c: 20002448 .word 0x20002448 - 5380: 200031f0 .word 0x200031f0 - 5384: 20003204 .word 0x20003204 - 5388: 2000320c .word 0x2000320c - 538c: 200030b8 .word 0x200030b8 - 5390: 200031d8 .word 0x200031d8 - 5394: 200031d0 .word 0x200031d0 - 5398: 200031bc .word 0x200031bc - 539c: 200031a0 .word 0x200031a0 - 53a0: 20001900 .word 0x20001900 - 53a4: 200031c4 .word 0x200031c4 - 53a8: 200031a8 .word 0x200031a8 - -000053ac : + 53d8: f8d6 3ac8 ldr.w r3, [r6, #2760] ; 0xac8 + 53dc: f001 010f and.w r1, r1, #15 + 53e0: 681b ldr r3, [r3, #0] + 53e2: eb03 0341 add.w r3, r3, r1, lsl #1 + 53e6: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 + 53ea: e7e3 b.n 53b4 + 53ec: 200032fc .word 0x200032fc + 53f0: 20004c68 .word 0x20004c68 + 53f4: 200023ec .word 0x200023ec + 53f8: 20003308 .word 0x20003308 + 53fc: 20002458 .word 0x20002458 + 5400: 20002448 .word 0x20002448 + 5404: 200032b0 .word 0x200032b0 + 5408: 200032c4 .word 0x200032c4 + 540c: 200032cc .word 0x200032cc + 5410: 20003150 .word 0x20003150 + 5414: 2000328c .word 0x2000328c + 5418: 20003270 .word 0x20003270 + 541c: 20003268 .word 0x20003268 + 5420: 20003254 .word 0x20003254 + 5424: 20003238 .word 0x20003238 + 5428: 20001900 .word 0x20001900 + 542c: 2000325c .word 0x2000325c + 5430: 20003240 .word 0x20003240 + +00005434 : void BMC::midiInDebug(BMCMidiMessage message){ - 53ac: b084 sub sp, #16 + 5434: b084 sub sp, #16 return bitRead(flags, bit); - 53ae: f500 5080 add.w r0, r0, #4096 ; 0x1000 - 53b2: b5f0 push {r4, r5, r6, r7, lr} - 53b4: b085 sub sp, #20 - 53b6: ac0b add r4, sp, #44 ; 0x2c - 53b8: e884 000e stmia.w r4, {r1, r2, r3} - 53bc: f8b0 3860 ldrh.w r3, [r0, #2144] ; 0x860 + 5436: f500 5080 add.w r0, r0, #4096 ; 0x1000 + 543a: b5f0 push {r4, r5, r6, r7, lr} + 543c: b085 sub sp, #20 + 543e: ac0b add r4, sp, #44 ; 0x2c + 5440: e884 000e stmia.w r4, {r1, r2, r3} + 5444: f8b0 3860 ldrh.w r3, [r0, #2144] ; 0x860 if(!globals.getMidiInDebug() || message.getStatus()==BMC_NONE){ - 53c0: 071e lsls r6, r3, #28 - 53c2: f140 808f bpl.w 54e4 + 5448: 071e lsls r6, r3, #28 + 544a: f140 808f bpl.w 556c return (t_and) ? (status & 0xF0) : status; - 53c6: f89d 502d ldrb.w r5, [sp, #45] ; 0x2d - 53ca: 2d00 cmp r5, #0 - 53cc: f000 808a beq.w 54e4 + 544e: f89d 502d ldrb.w r5, [sp, #45] ; 0x2d + 5452: 2d00 cmp r5, #0 + 5454: f000 808a beq.w 556c } bool isTuneRequest(){ return BMC_IS_TUNE_REQUEST(getStatus()); //0xF6 } bool isClock(){ return BMC_IS_CLOCK(getStatus()); //0xF8 - 53d0: 2def cmp r5, #239 ; 0xef - 53d2: f200 808c bhi.w 54ee + 5458: 2def cmp r5, #239 ; 0xef + 545a: f200 808c bhi.w 5576 millis(), BMCTools::getPortName(message.getSource()), "Incoming",BMCTools::getMidiStatusName(message.getStatus()) ); BMC_PRINT_ARRAY(true,message.sysex,message.size()); } else if(message.getStatus()>BMC_MIDI_SYSTEM_EXCLUSIVE){ - 53d6: 2df0 cmp r5, #240 ; 0xf0 - 53d8: f200 8267 bhi.w 58aa + 545e: 2df0 cmp r5, #240 ; 0xf0 + 5460: f200 8267 bhi.w 5932 millis(), BMCTools::getPortName(message.getSource()), "Incoming",BMCTools::getMidiStatusName(message.getStatus()), "data1:",message.getData1(), "data2:",message.getData2()); } else if(message.getStatus()==BMC_MIDI_PITCH_BEND){ - 53dc: 2de0 cmp r5, #224 ; 0xe0 - 53de: f000 82d9 beq.w 5994 - 53e2: 49b0 ldr r1, [pc, #704] ; (56a4 ) + 5464: 2de0 cmp r5, #224 ; 0xe0 + 5466: f000 82d9 beq.w 5a1c + 546a: 49b0 ldr r1, [pc, #704] ; (572c ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 53e4: 2300 movs r3, #0 - 53e6: 220a movs r2, #10 - 53e8: 48af ldr r0, [pc, #700] ; (56a8 ) - 53ea: 6809 ldr r1, [r1, #0] + 546c: 2300 movs r3, #0 + 546e: 220a movs r2, #10 + 5470: 48af ldr r0, [pc, #700] ; (5730 ) + 5472: 6809 ldr r1, [r1, #0] return "USB"; - 53ec: 466e mov r6, sp - 53ee: f024 fd5d bl 29eac + 5474: 466e mov r6, sp + 5476: f024 fd8f bl 29f98 virtual size_t write(const uint8_t *buffer, size_t size) { return usb_seremu_write(buffer, size); } - 53f2: 2101 movs r1, #1 - 53f4: 48ad ldr r0, [pc, #692] ; (56ac ) - 53f6: f027 f8a7 bl 2c548 + 547a: 2101 movs r1, #1 + 547c: 48ad ldr r0, [pc, #692] ; (5734 ) + 547e: f027 f8d7 bl 2c630 uint8_t getPort() { return ports; } - 53fa: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 5482: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c if(isMidiUsbPort(port)){ - 53fe: 07da lsls r2, r3, #31 - 5400: f100 838a bmi.w 5b18 + 5486: 07da lsls r2, r3, #31 + 5488: f100 838a bmi.w 5ba0 } else if(isMidiSerialAPort(port)){ - 5404: 079f lsls r7, r3, #30 - 5406: f100 83af bmi.w 5b68 + 548c: 079f lsls r7, r3, #30 + 548e: f100 83af bmi.w 5bf0 } else if(isMidiSerialBPort(port)){ - 540a: 075c lsls r4, r3, #29 - 540c: f100 83d9 bmi.w 5bc2 + 5492: 075c lsls r4, r3, #29 + 5494: f100 83d9 bmi.w 5c4a } else if(isMidiSerialCPort(port)){ - 5410: 0718 lsls r0, r3, #28 - 5412: f100 83f9 bmi.w 5c08 + 5498: 0718 lsls r0, r3, #28 + 549a: f100 83f9 bmi.w 5c90 } else if(isMidiSerialDPort(port)){ - 5416: 06d9 lsls r1, r3, #27 - 5418: f100 8414 bmi.w 5c44 + 549e: 06d9 lsls r1, r3, #27 + 54a0: f100 8414 bmi.w 5ccc } else if(isMidiHostPort(port)){ - 541c: 069a lsls r2, r3, #26 - 541e: f100 8426 bmi.w 5c6e + 54a4: 069a lsls r2, r3, #26 + 54a6: f100 8426 bmi.w 5cf6 } else if(isMidiBlePort(port)){ - 5422: 065b lsls r3, r3, #25 + 54aa: 065b lsls r3, r3, #25 return ""; - 5424: 4630 mov r0, r6 + 54ac: 4630 mov r0, r6 return "BLE"; - 5426: bf4c ite mi - 5428: 49a1 ldrmi r1, [pc, #644] ; (56b0 ) + 54ae: bf4c ite mi + 54b0: 49a1 ldrmi r1, [pc, #644] ; (5738 ) return ""; - 542a: 49a2 ldrpl r1, [pc, #648] ; (56b4 ) - 542c: f024 fe60 bl 2a0f0 + 54b2: 49a2 ldrpl r1, [pc, #648] ; (573c ) + 54b4: f024 fe90 bl 2a1d8 d1, d2, ">>>",p ); } else { BMC_PRINTLN( - 5430: 4631 mov r1, r6 - 5432: 489d ldr r0, [pc, #628] ; (56a8 ) - 5434: f024 fcec bl 29e10 - 5438: 4630 mov r0, r6 - 543a: f024 fe1d bl 2a078 - 543e: 2101 movs r1, #1 - 5440: 489a ldr r0, [pc, #616] ; (56ac ) - 5442: f027 f881 bl 2c548 - 5446: 2108 movs r1, #8 - 5448: 489b ldr r0, [pc, #620] ; (56b8 ) - 544a: f027 f87d bl 2c548 - 544e: 2101 movs r1, #1 - 5450: 4896 ldr r0, [pc, #600] ; (56ac ) - 5452: f027 f879 bl 2c548 - 5456: 4629 mov r1, r5 - 5458: 4630 mov r0, r6 - 545a: f7fe f9dd bl 3818 - 545e: 4631 mov r1, r6 - 5460: 4891 ldr r0, [pc, #580] ; (56a8 ) - 5462: f024 fcd5 bl 29e10 - 5466: 4630 mov r0, r6 - 5468: f024 fe06 bl 2a078 - 546c: 2101 movs r1, #1 - 546e: 488f ldr r0, [pc, #572] ; (56ac ) - 5470: f027 f86a bl 2c548 - 5474: 2108 movs r1, #8 - 5476: 4891 ldr r0, [pc, #580] ; (56bc ) - 5478: f027 f866 bl 2c548 - 547c: 2101 movs r1, #1 - 547e: 488b ldr r0, [pc, #556] ; (56ac ) - 5480: f027 f862 bl 2c548 + 54b8: 4631 mov r1, r6 + 54ba: 489d ldr r0, [pc, #628] ; (5730 ) + 54bc: f024 fd1e bl 29efc + 54c0: 4630 mov r0, r6 + 54c2: f024 fe4d bl 2a160 + 54c6: 2101 movs r1, #1 + 54c8: 489a ldr r0, [pc, #616] ; (5734 ) + 54ca: f027 f8b1 bl 2c630 + 54ce: 2108 movs r1, #8 + 54d0: 489b ldr r0, [pc, #620] ; (5740 ) + 54d2: f027 f8ad bl 2c630 + 54d6: 2101 movs r1, #1 + 54d8: 4896 ldr r0, [pc, #600] ; (5734 ) + 54da: f027 f8a9 bl 2c630 + 54de: 4629 mov r1, r5 + 54e0: 4630 mov r0, r6 + 54e2: f7fe f999 bl 3818 + 54e6: 4631 mov r1, r6 + 54e8: 4891 ldr r0, [pc, #580] ; (5730 ) + 54ea: f024 fd07 bl 29efc + 54ee: 4630 mov r0, r6 + 54f0: f024 fe36 bl 2a160 + 54f4: 2101 movs r1, #1 + 54f6: 488f ldr r0, [pc, #572] ; (5734 ) + 54f8: f027 f89a bl 2c630 + 54fc: 2108 movs r1, #8 + 54fe: 4891 ldr r0, [pc, #580] ; (5744 ) + 5500: f027 f896 bl 2c630 + 5504: 2101 movs r1, #1 + 5506: 488b ldr r0, [pc, #556] ; (5734 ) + 5508: f027 f892 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 5484: 2300 movs r3, #0 - 5486: 220a movs r2, #10 - 5488: f89d 102e ldrb.w r1, [sp, #46] ; 0x2e - 548c: 4886 ldr r0, [pc, #536] ; (56a8 ) - 548e: f024 fd0d bl 29eac - 5492: 2101 movs r1, #1 - 5494: 4885 ldr r0, [pc, #532] ; (56ac ) - 5496: f027 f857 bl 2c548 - 549a: 2106 movs r1, #6 - 549c: 4888 ldr r0, [pc, #544] ; (56c0 ) - 549e: f027 f853 bl 2c548 - 54a2: 2101 movs r1, #1 - 54a4: 4881 ldr r0, [pc, #516] ; (56ac ) - 54a6: f027 f84f bl 2c548 - 54aa: 2300 movs r3, #0 - 54ac: 220a movs r2, #10 - 54ae: f89d 102f ldrb.w r1, [sp, #47] ; 0x2f - 54b2: 487d ldr r0, [pc, #500] ; (56a8 ) - 54b4: f024 fcfa bl 29eac - 54b8: 2101 movs r1, #1 - 54ba: 487c ldr r0, [pc, #496] ; (56ac ) - 54bc: f027 f844 bl 2c548 - 54c0: 2106 movs r1, #6 - 54c2: 4880 ldr r0, [pc, #512] ; (56c4 ) - 54c4: f027 f840 bl 2c548 - 54c8: 2101 movs r1, #1 - 54ca: 4878 ldr r0, [pc, #480] ; (56ac ) - 54cc: f027 f83c bl 2c548 - 54d0: 2300 movs r3, #0 - 54d2: 220a movs r2, #10 - 54d4: f89d 1030 ldrb.w r1, [sp, #48] ; 0x30 - 54d8: 4873 ldr r0, [pc, #460] ; (56a8 ) - 54da: f024 fce7 bl 29eac + 550c: 2300 movs r3, #0 + 550e: 220a movs r2, #10 + 5510: f89d 102e ldrb.w r1, [sp, #46] ; 0x2e + 5514: 4886 ldr r0, [pc, #536] ; (5730 ) + 5516: f024 fd3f bl 29f98 + 551a: 2101 movs r1, #1 + 551c: 4885 ldr r0, [pc, #532] ; (5734 ) + 551e: f027 f887 bl 2c630 + 5522: 2106 movs r1, #6 + 5524: 4888 ldr r0, [pc, #544] ; (5748 ) + 5526: f027 f883 bl 2c630 + 552a: 2101 movs r1, #1 + 552c: 4881 ldr r0, [pc, #516] ; (5734 ) + 552e: f027 f87f bl 2c630 + 5532: 2300 movs r3, #0 + 5534: 220a movs r2, #10 + 5536: f89d 102f ldrb.w r1, [sp, #47] ; 0x2f + 553a: 487d ldr r0, [pc, #500] ; (5730 ) + 553c: f024 fd2c bl 29f98 + 5540: 2101 movs r1, #1 + 5542: 487c ldr r0, [pc, #496] ; (5734 ) + 5544: f027 f874 bl 2c630 + 5548: 2106 movs r1, #6 + 554a: 4880 ldr r0, [pc, #512] ; (574c ) + 554c: f027 f870 bl 2c630 + 5550: 2101 movs r1, #1 + 5552: 4878 ldr r0, [pc, #480] ; (5734 ) + 5554: f027 f86c bl 2c630 + 5558: 2300 movs r3, #0 + 555a: 220a movs r2, #10 + 555c: f89d 1030 ldrb.w r1, [sp, #48] ; 0x30 + 5560: 4873 ldr r0, [pc, #460] ; (5730 ) + 5562: f024 fd19 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 54de: 4872 ldr r0, [pc, #456] ; (56a8 ) - 54e0: f024 fcc8 bl 29e74 + 5566: 4872 ldr r0, [pc, #456] ; (5730 ) + 5568: f024 fcfa bl 29f60 "channel:",message.getChannel(), "data1:",message.getData1(), "data2:",message.getData2() ); } } - 54e4: b005 add sp, #20 - 54e6: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} - 54ea: b004 add sp, #16 - 54ec: 4770 bx lr + 556c: b005 add sp, #20 + 556e: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 5572: b004 add sp, #16 + 5574: 4770 bx lr if(message.isClock()){ - 54ee: 2df8 cmp r5, #248 ; 0xf8 - 54f0: d13b bne.n 556a + 5576: 2df8 cmp r5, #248 ; 0xf8 + 5578: d13b bne.n 55f2 if(globals.getMidiInClockDebug()){ - 54f2: 06dd lsls r5, r3, #27 - 54f4: d5f6 bpl.n 54e4 - 54f6: 496b ldr r1, [pc, #428] ; (56a4 ) + 557a: 06dd lsls r5, r3, #27 + 557c: d5f6 bpl.n 556c + 557e: 496b ldr r1, [pc, #428] ; (572c ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 54f8: 2300 movs r3, #0 - 54fa: 220a movs r2, #10 - 54fc: 486a ldr r0, [pc, #424] ; (56a8 ) - 54fe: 6809 ldr r1, [r1, #0] + 5580: 2300 movs r3, #0 + 5582: 220a movs r2, #10 + 5584: 486a ldr r0, [pc, #424] ; (5730 ) + 5586: 6809 ldr r1, [r1, #0] return "USB"; - 5500: 466e mov r6, sp - 5502: f024 fcd3 bl 29eac - 5506: 2101 movs r1, #1 - 5508: 4868 ldr r0, [pc, #416] ; (56ac ) - 550a: f027 f81d bl 2c548 - 550e: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 5588: 466e mov r6, sp + 558a: f024 fd05 bl 29f98 + 558e: 2101 movs r1, #1 + 5590: 4868 ldr r0, [pc, #416] ; (5734 ) + 5592: f027 f84d bl 2c630 + 5596: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c if(isMidiUsbPort(port)){ - 5512: 07dc lsls r4, r3, #31 - 5514: f100 820f bmi.w 5936 + 559a: 07dc lsls r4, r3, #31 + 559c: f100 820f bmi.w 59be } else if(isMidiSerialAPort(port)){ - 5518: 0798 lsls r0, r3, #30 - 551a: f100 82cb bmi.w 5ab4 + 55a0: 0798 lsls r0, r3, #30 + 55a2: f100 82cb bmi.w 5b3c } else if(isMidiSerialBPort(port)){ - 551e: 0759 lsls r1, r3, #29 - 5520: f100 82e1 bmi.w 5ae6 + 55a6: 0759 lsls r1, r3, #29 + 55a8: f100 82e1 bmi.w 5b6e } else if(isMidiSerialCPort(port)){ - 5524: 071a lsls r2, r3, #28 - 5526: f100 8306 bmi.w 5b36 + 55ac: 071a lsls r2, r3, #28 + 55ae: f100 8306 bmi.w 5bbe } else if(isMidiSerialDPort(port)){ - 552a: 06df lsls r7, r3, #27 - 552c: f100 8330 bmi.w 5b90 + 55b2: 06df lsls r7, r3, #27 + 55b4: f100 8330 bmi.w 5c18 } else if(isMidiHostPort(port)){ - 5530: 069d lsls r5, r3, #26 - 5532: f100 835a bmi.w 5bea + 55b8: 069d lsls r5, r3, #26 + 55ba: f100 835a bmi.w 5c72 } else if(isMidiBlePort(port)){ - 5536: 065c lsls r4, r3, #25 + 55be: 065c lsls r4, r3, #25 return ""; - 5538: 4630 mov r0, r6 + 55c0: 4630 mov r0, r6 return "BLE"; - 553a: bf4c ite mi - 553c: 495c ldrmi r1, [pc, #368] ; (56b0 ) + 55c2: bf4c ite mi + 55c4: 495c ldrmi r1, [pc, #368] ; (5738 ) return ""; - 553e: 495d ldrpl r1, [pc, #372] ; (56b4 ) - 5540: f024 fdd6 bl 2a0f0 + 55c6: 495d ldrpl r1, [pc, #372] ; (573c ) + 55c8: f024 fe06 bl 2a1d8 BMC_PRINTLN( - 5544: 4631 mov r1, r6 - 5546: 4858 ldr r0, [pc, #352] ; (56a8 ) - 5548: f024 fc62 bl 29e10 - 554c: 4630 mov r0, r6 - 554e: f024 fd93 bl 2a078 - 5552: 2101 movs r1, #1 - 5554: 4855 ldr r0, [pc, #340] ; (56ac ) - 5556: f026 fff7 bl 2c548 - 555a: 210e movs r1, #14 - 555c: 485a ldr r0, [pc, #360] ; (56c8 ) - 555e: f026 fff3 bl 2c548 + 55cc: 4631 mov r1, r6 + 55ce: 4858 ldr r0, [pc, #352] ; (5730 ) + 55d0: f024 fc94 bl 29efc + 55d4: 4630 mov r0, r6 + 55d6: f024 fdc3 bl 2a160 + 55da: 2101 movs r1, #1 + 55dc: 4855 ldr r0, [pc, #340] ; (5734 ) + 55de: f027 f827 bl 2c630 + 55e2: 210e movs r1, #14 + 55e4: 485a ldr r0, [pc, #360] ; (5750 ) + 55e6: f027 f823 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 5562: 4851 ldr r0, [pc, #324] ; (56a8 ) - 5564: f024 fc86 bl 29e74 - 5568: e7bc b.n 54e4 + 55ea: 4851 ldr r0, [pc, #324] ; (5730 ) + 55ec: f024 fcb8 bl 29f60 + 55f0: e7bc b.n 556c } else if(message.isStart()){ - 556a: f1a5 02f0 sub.w r2, r5, #240 ; 0xf0 - 556e: 2a0e cmp r2, #14 - 5570: f63f af31 bhi.w 53d6 - 5574: a101 add r1, pc, #4 ; (adr r1, 557c ) - 5576: f851 f022 ldr.w pc, [r1, r2, lsl #2] - 557a: bf00 nop - 557c: 000055b9 .word 0x000055b9 - 5580: 000053d7 .word 0x000053d7 - 5584: 000053d7 .word 0x000053d7 - 5588: 000053d7 .word 0x000053d7 - 558c: 000053d7 .word 0x000053d7 - 5590: 000053d7 .word 0x000053d7 - 5594: 000053d7 .word 0x000053d7 - 5598: 000053d7 .word 0x000053d7 - 559c: 000053d7 .word 0x000053d7 - 55a0: 000053d7 .word 0x000053d7 - 55a4: 0000574f .word 0x0000574f - 55a8: 000057c3 .word 0x000057c3 - 55ac: 00005837 .word 0x00005837 - 55b0: 000053d7 .word 0x000053d7 - 55b4: 000056d5 .word 0x000056d5 - 55b8: 493a ldr r1, [pc, #232] ; (56a4 ) + 55f2: f1a5 02f0 sub.w r2, r5, #240 ; 0xf0 + 55f6: 2a0e cmp r2, #14 + 55f8: f63f af31 bhi.w 545e + 55fc: a101 add r1, pc, #4 ; (adr r1, 5604 ) + 55fe: f851 f022 ldr.w pc, [r1, r2, lsl #2] + 5602: bf00 nop + 5604: 00005641 .word 0x00005641 + 5608: 0000545f .word 0x0000545f + 560c: 0000545f .word 0x0000545f + 5610: 0000545f .word 0x0000545f + 5614: 0000545f .word 0x0000545f + 5618: 0000545f .word 0x0000545f + 561c: 0000545f .word 0x0000545f + 5620: 0000545f .word 0x0000545f + 5624: 0000545f .word 0x0000545f + 5628: 0000545f .word 0x0000545f + 562c: 000057d7 .word 0x000057d7 + 5630: 0000584b .word 0x0000584b + 5634: 000058bf .word 0x000058bf + 5638: 0000545f .word 0x0000545f + 563c: 0000575d .word 0x0000575d + 5640: 493a ldr r1, [pc, #232] ; (572c ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 55ba: 2300 movs r3, #0 - 55bc: 220a movs r2, #10 - 55be: 483a ldr r0, [pc, #232] ; (56a8 ) - 55c0: 6809 ldr r1, [r1, #0] + 5642: 2300 movs r3, #0 + 5644: 220a movs r2, #10 + 5646: 483a ldr r0, [pc, #232] ; (5730 ) + 5648: 6809 ldr r1, [r1, #0] return "USB"; - 55c2: 466e mov r6, sp - 55c4: f024 fc72 bl 29eac - 55c8: 2101 movs r1, #1 - 55ca: 4838 ldr r0, [pc, #224] ; (56ac ) - 55cc: f026 ffbc bl 2c548 - 55d0: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 564a: 466e mov r6, sp + 564c: f024 fca4 bl 29f98 + 5650: 2101 movs r1, #1 + 5652: 4838 ldr r0, [pc, #224] ; (5734 ) + 5654: f026 ffec bl 2c630 + 5658: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c if(isMidiUsbPort(port)){ - 55d4: 07df lsls r7, r3, #31 - 55d6: f100 81bd bmi.w 5954 + 565c: 07df lsls r7, r3, #31 + 565e: f100 81bd bmi.w 59dc } else if(isMidiSerialAPort(port)){ - 55da: 079d lsls r5, r3, #30 - 55dc: f100 826f bmi.w 5abe + 5662: 079d lsls r5, r3, #30 + 5664: f100 826f bmi.w 5b46 } else if(isMidiSerialBPort(port)){ - 55e0: 0758 lsls r0, r3, #29 - 55e2: f100 8294 bmi.w 5b0e + 5668: 0758 lsls r0, r3, #29 + 566a: f100 8294 bmi.w 5b96 } else if(isMidiSerialCPort(port)){ - 55e6: 0719 lsls r1, r3, #28 - 55e8: f100 82af bmi.w 5b4a + 566e: 0719 lsls r1, r3, #28 + 5670: f100 82af bmi.w 5bd2 } else if(isMidiSerialDPort(port)){ - 55ec: 06da lsls r2, r3, #27 - 55ee: f100 82e3 bmi.w 5bb8 + 5674: 06da lsls r2, r3, #27 + 5676: f100 82e3 bmi.w 5c40 } else if(isMidiHostPort(port)){ - 55f2: 069f lsls r7, r3, #26 - 55f4: f100 8303 bmi.w 5bfe + 567a: 069f lsls r7, r3, #26 + 567c: f100 8303 bmi.w 5c86 } else if(isMidiBlePort(port)){ - 55f8: 065d lsls r5, r3, #25 + 5680: 065d lsls r5, r3, #25 return ""; - 55fa: 4630 mov r0, r6 + 5682: 4630 mov r0, r6 return "BLE"; - 55fc: bf4c ite mi - 55fe: 492c ldrmi r1, [pc, #176] ; (56b0 ) + 5684: bf4c ite mi + 5686: 492c ldrmi r1, [pc, #176] ; (5738 ) return ""; - 5600: 492c ldrpl r1, [pc, #176] ; (56b4 ) - 5602: f024 fd75 bl 2a0f0 + 5688: 492c ldrpl r1, [pc, #176] ; (573c ) + 568a: f024 fda5 bl 2a1d8 BMC_PRINTLN( - 5606: 4631 mov r1, r6 - 5608: 4827 ldr r0, [pc, #156] ; (56a8 ) - 560a: f024 fc01 bl 29e10 - 560e: 4630 mov r0, r6 - 5610: f024 fd32 bl 2a078 - 5614: 2101 movs r1, #1 - 5616: 4825 ldr r0, [pc, #148] ; (56ac ) - 5618: f026 ff96 bl 2c548 - 561c: 2108 movs r1, #8 - 561e: 4826 ldr r0, [pc, #152] ; (56b8 ) - 5620: f026 ff92 bl 2c548 - 5624: 2101 movs r1, #1 - 5626: 4821 ldr r0, [pc, #132] ; (56ac ) - 5628: f026 ff8e bl 2c548 - 562c: 4630 mov r0, r6 - 562e: 21f0 movs r1, #240 ; 0xf0 - 5630: f7fe f8f2 bl 3818 + 568e: 4631 mov r1, r6 + 5690: 4827 ldr r0, [pc, #156] ; (5730 ) + 5692: f024 fc33 bl 29efc + 5696: 4630 mov r0, r6 + 5698: f024 fd62 bl 2a160 + 569c: 2101 movs r1, #1 + 569e: 4825 ldr r0, [pc, #148] ; (5734 ) + 56a0: f026 ffc6 bl 2c630 + 56a4: 2108 movs r1, #8 + 56a6: 4826 ldr r0, [pc, #152] ; (5740 ) + 56a8: f026 ffc2 bl 2c630 + 56ac: 2101 movs r1, #1 + 56ae: 4821 ldr r0, [pc, #132] ; (5734 ) + 56b0: f026 ffbe bl 2c630 + 56b4: 4630 mov r0, r6 + 56b6: 21f0 movs r1, #240 ; 0xf0 + 56b8: f7fe f8ae bl 3818 size_t println(const String &s) { return print(s) + println(); } - 5634: 4631 mov r1, r6 - 5636: 481c ldr r0, [pc, #112] ; (56a8 ) - 5638: f024 fbea bl 29e10 - 563c: 481a ldr r0, [pc, #104] ; (56a8 ) - 563e: f024 fc19 bl 29e74 - 5642: 4630 mov r0, r6 - 5644: f024 fd18 bl 2a078 + 56bc: 4631 mov r1, r6 + 56be: 481c ldr r0, [pc, #112] ; (5730 ) + 56c0: f024 fc1c bl 29efc + 56c4: 481a ldr r0, [pc, #104] ; (5730 ) + 56c6: f024 fc4b bl 29f60 + 56ca: 4630 mov r0, r6 + 56cc: f024 fd48 bl 2a160 BMC_PRINT_ARRAY(true,message.sysex,message.size()); - 5648: f8bd 502f ldrh.w r5, [sp, #47] ; 0x2f - 564c: 2107 movs r1, #7 - 564e: 481f ldr r0, [pc, #124] ; (56cc ) - 5650: f026 ff7a bl 2c548 + 56d0: f8bd 502f ldrh.w r5, [sp, #47] ; 0x2f + 56d4: 2107 movs r1, #7 + 56d6: 481f ldr r0, [pc, #124] ; (5754 ) + 56d8: f026 ffaa bl 2c630 size_t print(int n, int base) { return (base == 10) ? print(n) : printNumber(n, base, 0); } - 5654: 4629 mov r1, r5 - 5656: 2300 movs r3, #0 - 5658: 2210 movs r2, #16 - 565a: 4813 ldr r0, [pc, #76] ; (56a8 ) - 565c: f024 fc26 bl 29eac - 5660: 2101 movs r1, #1 - 5662: 481b ldr r0, [pc, #108] ; (56d0 ) - 5664: f026 ff70 bl 2c548 + 56dc: 4629 mov r1, r5 + 56de: 2300 movs r3, #0 + 56e0: 2210 movs r2, #16 + 56e2: 4813 ldr r0, [pc, #76] ; (5730 ) + 56e4: f024 fc58 bl 29f98 + 56e8: 2101 movs r1, #1 + 56ea: 481b ldr r0, [pc, #108] ; (5758 ) + 56ec: f026 ffa0 bl 2c630 for(uint16_t i = 0 ; i < t_size ; i++){ - 5668: b1a5 cbz r5, 5694 - 566a: 3d01 subs r5, #1 - 566c: f10d 0331 add.w r3, sp, #49 ; 0x31 - 5670: 3404 adds r4, #4 - 5672: 4f0e ldr r7, [pc, #56] ; (56ac ) - 5674: fa13 f585 uxtah r5, r3, r5 + 56f0: b1a5 cbz r5, 571c + 56f2: 3d01 subs r5, #1 + 56f4: f10d 0331 add.w r3, sp, #49 ; 0x31 + 56f8: 3404 adds r4, #4 + 56fa: 4f0e ldr r7, [pc, #56] ; (5734 ) + 56fc: fa13 f585 uxtah r5, r3, r5 size_t print(unsigned char n, int base) { return printNumber(n, base, 0); } - 5678: 4e0b ldr r6, [pc, #44] ; (56a8 ) - 567a: 2101 movs r1, #1 - 567c: 4638 mov r0, r7 - 567e: f026 ff63 bl 2c548 - 5682: f814 1f01 ldrb.w r1, [r4, #1]! - 5686: 2300 movs r3, #0 - 5688: 2210 movs r2, #16 - 568a: 4630 mov r0, r6 - 568c: f024 fc0e bl 29eac - 5690: 42ac cmp r4, r5 - 5692: d1f2 bne.n 567a - 5694: 2100 movs r1, #0 - 5696: 4807 ldr r0, [pc, #28] ; (56b4 ) - 5698: f026 ff56 bl 2c548 + 5700: 4e0b ldr r6, [pc, #44] ; (5730 ) + 5702: 2101 movs r1, #1 + 5704: 4638 mov r0, r7 + 5706: f026 ff93 bl 2c630 + 570a: f814 1f01 ldrb.w r1, [r4, #1]! + 570e: 2300 movs r3, #0 + 5710: 2210 movs r2, #16 + 5712: 4630 mov r0, r6 + 5714: f024 fc40 bl 29f98 + 5718: 42ac cmp r4, r5 + 571a: d1f2 bne.n 5702 + 571c: 2100 movs r1, #0 + 571e: 4807 ldr r0, [pc, #28] ; (573c ) + 5720: f026 ff86 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 569c: 4802 ldr r0, [pc, #8] ; (56a8 ) - 569e: f024 fbe9 bl 29e74 - 56a2: e71f b.n 54e4 - 56a4: 2000bae8 .word 0x2000bae8 - 56a8: 20004ba8 .word 0x20004ba8 - 56ac: 200023ec .word 0x200023ec - 56b0: 20001c74 .word 0x20001c74 - 56b4: 20003c58 .word 0x20003c58 - 56b8: 20001cbc .word 0x20001cbc - 56bc: 20001ce0 .word 0x20001ce0 - 56c0: 20001cd0 .word 0x20001cd0 - 56c4: 20001cd8 .word 0x20001cd8 - 56c8: 20001c78 .word 0x20001c78 - 56cc: 20001cc8 .word 0x20001cc8 - 56d0: 20002b14 .word 0x20002b14 + 5724: 4802 ldr r0, [pc, #8] ; (5730 ) + 5726: f024 fc1b bl 29f60 + 572a: e71f b.n 556c + 572c: 2000bb08 .word 0x2000bb08 + 5730: 20004c68 .word 0x20004c68 + 5734: 200023ec .word 0x200023ec + 5738: 20001c74 .word 0x20001c74 + 573c: 20003d18 .word 0x20003d18 + 5740: 20001cbc .word 0x20001cbc + 5744: 20001ce0 .word 0x20001ce0 + 5748: 20001cd0 .word 0x20001cd0 + 574c: 20001cd8 .word 0x20001cd8 + 5750: 20001c78 .word 0x20001c78 + 5754: 20001cc8 .word 0x20001cc8 + 5758: 20002b1c .word 0x20002b1c if(globals.getMidiInClockDebug()){ - 56d4: 06db lsls r3, r3, #27 - 56d6: f57f af05 bpl.w 54e4 - 56da: 49a3 ldr r1, [pc, #652] ; (5968 ) + 575c: 06db lsls r3, r3, #27 + 575e: f57f af05 bpl.w 556c + 5762: 49a3 ldr r1, [pc, #652] ; (59f0 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 56dc: 2300 movs r3, #0 - 56de: 220a movs r2, #10 - 56e0: 48a2 ldr r0, [pc, #648] ; (596c ) - 56e2: 6809 ldr r1, [r1, #0] + 5764: 2300 movs r3, #0 + 5766: 220a movs r2, #10 + 5768: 48a2 ldr r0, [pc, #648] ; (59f4 ) + 576a: 6809 ldr r1, [r1, #0] return "USB"; - 56e4: 466e mov r6, sp - 56e6: f024 fbe1 bl 29eac - 56ea: 2101 movs r1, #1 - 56ec: 48a0 ldr r0, [pc, #640] ; (5970 ) - 56ee: f026 ff2b bl 2c548 - 56f2: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 576c: 466e mov r6, sp + 576e: f024 fc13 bl 29f98 + 5772: 2101 movs r1, #1 + 5774: 48a0 ldr r0, [pc, #640] ; (59f8 ) + 5776: f026 ff5b bl 2c630 + 577a: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c if(isMidiUsbPort(port)){ - 56f6: 07df lsls r7, r3, #31 - 56f8: f100 8218 bmi.w 5b2c + 577e: 07df lsls r7, r3, #31 + 5780: f100 8218 bmi.w 5bb4 } else if(isMidiSerialAPort(port)){ - 56fc: 079d lsls r5, r3, #30 - 56fe: f100 8242 bmi.w 5b86 + 5784: 079d lsls r5, r3, #30 + 5786: f100 8242 bmi.w 5c0e } else if(isMidiSerialBPort(port)){ - 5702: 075c lsls r4, r3, #29 - 5704: f100 826c bmi.w 5be0 + 578a: 075c lsls r4, r3, #29 + 578c: f100 826c bmi.w 5c68 } else if(isMidiSerialCPort(port)){ - 5708: 0718 lsls r0, r3, #28 - 570a: f100 8291 bmi.w 5c30 + 5790: 0718 lsls r0, r3, #28 + 5792: f100 8291 bmi.w 5cb8 } else if(isMidiSerialDPort(port)){ - 570e: 06d9 lsls r1, r3, #27 - 5710: f100 82a3 bmi.w 5c5a + 5796: 06d9 lsls r1, r3, #27 + 5798: f100 82a3 bmi.w 5ce2 } else if(isMidiHostPort(port)){ - 5714: 069a lsls r2, r3, #26 - 5716: f100 82b5 bmi.w 5c84 + 579c: 069a lsls r2, r3, #26 + 579e: f100 82b5 bmi.w 5d0c } else if(isMidiBlePort(port)){ - 571a: 065b lsls r3, r3, #25 + 57a2: 065b lsls r3, r3, #25 return ""; - 571c: 4630 mov r0, r6 + 57a4: 4630 mov r0, r6 return "BLE"; - 571e: bf4c ite mi - 5720: 4994 ldrmi r1, [pc, #592] ; (5974 ) + 57a6: bf4c ite mi + 57a8: 4994 ldrmi r1, [pc, #592] ; (59fc ) return ""; - 5722: 4995 ldrpl r1, [pc, #596] ; (5978 ) - 5724: f024 fce4 bl 2a0f0 + 57aa: 4995 ldrpl r1, [pc, #596] ; (5a00 ) + 57ac: f024 fd14 bl 2a1d8 BMC_PRINTLN( - 5728: 4631 mov r1, r6 - 572a: 4890 ldr r0, [pc, #576] ; (596c ) - 572c: f024 fb70 bl 29e10 - 5730: 4630 mov r0, r6 - 5732: f024 fca1 bl 2a078 - 5736: 2101 movs r1, #1 - 5738: 488d ldr r0, [pc, #564] ; (5970 ) - 573a: f026 ff05 bl 2c548 - 573e: 210c movs r1, #12 - 5740: 488e ldr r0, [pc, #568] ; (597c ) - 5742: f026 ff01 bl 2c548 + 57b0: 4631 mov r1, r6 + 57b2: 4890 ldr r0, [pc, #576] ; (59f4 ) + 57b4: f024 fba2 bl 29efc + 57b8: 4630 mov r0, r6 + 57ba: f024 fcd1 bl 2a160 + 57be: 2101 movs r1, #1 + 57c0: 488d ldr r0, [pc, #564] ; (59f8 ) + 57c2: f026 ff35 bl 2c630 + 57c6: 210c movs r1, #12 + 57c8: 488e ldr r0, [pc, #568] ; (5a04 ) + 57ca: f026 ff31 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 5746: 4889 ldr r0, [pc, #548] ; (596c ) - 5748: f024 fb94 bl 29e74 - 574c: e6ca b.n 54e4 - 574e: 4986 ldr r1, [pc, #536] ; (5968 ) + 57ce: 4889 ldr r0, [pc, #548] ; (59f4 ) + 57d0: f024 fbc6 bl 29f60 + 57d4: e6ca b.n 556c + 57d6: 4986 ldr r1, [pc, #536] ; (59f0 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 5750: 2300 movs r3, #0 - 5752: 220a movs r2, #10 - 5754: 4885 ldr r0, [pc, #532] ; (596c ) - 5756: 6809 ldr r1, [r1, #0] + 57d8: 2300 movs r3, #0 + 57da: 220a movs r2, #10 + 57dc: 4885 ldr r0, [pc, #532] ; (59f4 ) + 57de: 6809 ldr r1, [r1, #0] return "USB"; - 5758: 466e mov r6, sp - 575a: f024 fba7 bl 29eac - 575e: 2101 movs r1, #1 - 5760: 4883 ldr r0, [pc, #524] ; (5970 ) - 5762: f026 fef1 bl 2c548 - 5766: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 57e0: 466e mov r6, sp + 57e2: f024 fbd9 bl 29f98 + 57e6: 2101 movs r1, #1 + 57e8: 4883 ldr r0, [pc, #524] ; (59f8 ) + 57ea: f026 ff21 bl 2c630 + 57ee: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c if(isMidiUsbPort(port)){ - 576a: 07d8 lsls r0, r3, #31 - 576c: f100 80ed bmi.w 594a + 57f2: 07d8 lsls r0, r3, #31 + 57f4: f100 80ed bmi.w 59d2 } else if(isMidiSerialAPort(port)){ - 5770: 0799 lsls r1, r3, #30 - 5772: f100 81b3 bmi.w 5adc + 57f8: 0799 lsls r1, r3, #30 + 57fa: f100 81b3 bmi.w 5b64 } else if(isMidiSerialBPort(port)){ - 5776: 075a lsls r2, r3, #29 - 5778: f100 81c4 bmi.w 5b04 + 57fe: 075a lsls r2, r3, #29 + 5800: f100 81c4 bmi.w 5b8c } else if(isMidiSerialCPort(port)){ - 577c: 071f lsls r7, r3, #28 - 577e: f100 81ee bmi.w 5b5e + 5804: 071f lsls r7, r3, #28 + 5806: f100 81ee bmi.w 5be6 } else if(isMidiSerialDPort(port)){ - 5782: 06dd lsls r5, r3, #27 - 5784: f100 8209 bmi.w 5b9a + 580a: 06dd lsls r5, r3, #27 + 580c: f100 8209 bmi.w 5c22 } else if(isMidiHostPort(port)){ - 5788: 069c lsls r4, r3, #26 - 578a: f100 8242 bmi.w 5c12 + 5810: 069c lsls r4, r3, #26 + 5812: f100 8242 bmi.w 5c9a } else if(isMidiBlePort(port)){ - 578e: 0658 lsls r0, r3, #25 + 5816: 0658 lsls r0, r3, #25 return ""; - 5790: 4630 mov r0, r6 + 5818: 4630 mov r0, r6 return "BLE"; - 5792: bf4c ite mi - 5794: 4977 ldrmi r1, [pc, #476] ; (5974 ) + 581a: bf4c ite mi + 581c: 4977 ldrmi r1, [pc, #476] ; (59fc ) return ""; - 5796: 4978 ldrpl r1, [pc, #480] ; (5978 ) - 5798: f024 fcaa bl 2a0f0 + 581e: 4978 ldrpl r1, [pc, #480] ; (5a00 ) + 5820: f024 fcda bl 2a1d8 BMC_PRINTLN( - 579c: 4631 mov r1, r6 - 579e: 4873 ldr r0, [pc, #460] ; (596c ) - 57a0: f024 fb36 bl 29e10 - 57a4: 4630 mov r0, r6 - 57a6: f024 fc67 bl 2a078 - 57aa: 2101 movs r1, #1 - 57ac: 4870 ldr r0, [pc, #448] ; (5970 ) - 57ae: f026 fecb bl 2c548 - 57b2: 210d movs r1, #13 - 57b4: 4872 ldr r0, [pc, #456] ; (5980 ) - 57b6: f026 fec7 bl 2c548 + 5824: 4631 mov r1, r6 + 5826: 4873 ldr r0, [pc, #460] ; (59f4 ) + 5828: f024 fb68 bl 29efc + 582c: 4630 mov r0, r6 + 582e: f024 fc97 bl 2a160 + 5832: 2101 movs r1, #1 + 5834: 4870 ldr r0, [pc, #448] ; (59f8 ) + 5836: f026 fefb bl 2c630 + 583a: 210d movs r1, #13 + 583c: 4872 ldr r0, [pc, #456] ; (5a08 ) + 583e: f026 fef7 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 57ba: 486c ldr r0, [pc, #432] ; (596c ) - 57bc: f024 fb5a bl 29e74 - 57c0: e690 b.n 54e4 - 57c2: 4969 ldr r1, [pc, #420] ; (5968 ) + 5842: 486c ldr r0, [pc, #432] ; (59f4 ) + 5844: f024 fb8c bl 29f60 + 5848: e690 b.n 556c + 584a: 4969 ldr r1, [pc, #420] ; (59f0 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 57c4: 2300 movs r3, #0 - 57c6: 220a movs r2, #10 - 57c8: 4868 ldr r0, [pc, #416] ; (596c ) - 57ca: 6809 ldr r1, [r1, #0] + 584c: 2300 movs r3, #0 + 584e: 220a movs r2, #10 + 5850: 4868 ldr r0, [pc, #416] ; (59f4 ) + 5852: 6809 ldr r1, [r1, #0] return "USB"; - 57cc: 466e mov r6, sp - 57ce: f024 fb6d bl 29eac - 57d2: 2101 movs r1, #1 - 57d4: 4866 ldr r0, [pc, #408] ; (5970 ) - 57d6: f026 feb7 bl 2c548 - 57da: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 5854: 466e mov r6, sp + 5856: f024 fb9f bl 29f98 + 585a: 2101 movs r1, #1 + 585c: 4866 ldr r0, [pc, #408] ; (59f8 ) + 585e: f026 fee7 bl 2c630 + 5862: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c if(isMidiUsbPort(port)){ - 57de: 07d9 lsls r1, r3, #31 - 57e0: f100 80ae bmi.w 5940 + 5866: 07d9 lsls r1, r3, #31 + 5868: f100 80ae bmi.w 59c8 } else if(isMidiSerialAPort(port)){ - 57e4: 079a lsls r2, r3, #30 - 57e6: f100 8174 bmi.w 5ad2 + 586c: 079a lsls r2, r3, #30 + 586e: f100 8174 bmi.w 5b5a } else if(isMidiSerialBPort(port)){ - 57ea: 075f lsls r7, r3, #29 - 57ec: f100 8180 bmi.w 5af0 + 5872: 075f lsls r7, r3, #29 + 5874: f100 8180 bmi.w 5b78 } else if(isMidiSerialCPort(port)){ - 57f0: 071d lsls r5, r3, #28 - 57f2: f100 81a5 bmi.w 5b40 + 5878: 071d lsls r5, r3, #28 + 587a: f100 81a5 bmi.w 5bc8 } else if(isMidiSerialDPort(port)){ - 57f6: 06dc lsls r4, r3, #27 - 57f8: f100 81d4 bmi.w 5ba4 + 587e: 06dc lsls r4, r3, #27 + 5880: f100 81d4 bmi.w 5c2c } else if(isMidiHostPort(port)){ - 57fc: 0698 lsls r0, r3, #26 - 57fe: f100 820d bmi.w 5c1c + 5884: 0698 lsls r0, r3, #26 + 5886: f100 820d bmi.w 5ca4 } else if(isMidiBlePort(port)){ - 5802: 0659 lsls r1, r3, #25 + 588a: 0659 lsls r1, r3, #25 return ""; - 5804: 4630 mov r0, r6 + 588c: 4630 mov r0, r6 return "BLE"; - 5806: bf4c ite mi - 5808: 495a ldrmi r1, [pc, #360] ; (5974 ) + 588e: bf4c ite mi + 5890: 495a ldrmi r1, [pc, #360] ; (59fc ) return ""; - 580a: 495b ldrpl r1, [pc, #364] ; (5978 ) - 580c: f024 fc70 bl 2a0f0 + 5892: 495b ldrpl r1, [pc, #364] ; (5a00 ) + 5894: f024 fca0 bl 2a1d8 BMC_PRINTLN( - 5810: 4631 mov r1, r6 - 5812: 4856 ldr r0, [pc, #344] ; (596c ) - 5814: f024 fafc bl 29e10 - 5818: 4630 mov r0, r6 - 581a: f024 fc2d bl 2a078 - 581e: 2101 movs r1, #1 - 5820: 4853 ldr r0, [pc, #332] ; (5970 ) - 5822: f026 fe91 bl 2c548 - 5826: 2110 movs r1, #16 - 5828: 4856 ldr r0, [pc, #344] ; (5984 ) - 582a: f026 fe8d bl 2c548 + 5898: 4631 mov r1, r6 + 589a: 4856 ldr r0, [pc, #344] ; (59f4 ) + 589c: f024 fb2e bl 29efc + 58a0: 4630 mov r0, r6 + 58a2: f024 fc5d bl 2a160 + 58a6: 2101 movs r1, #1 + 58a8: 4853 ldr r0, [pc, #332] ; (59f8 ) + 58aa: f026 fec1 bl 2c630 + 58ae: 2110 movs r1, #16 + 58b0: 4856 ldr r0, [pc, #344] ; (5a0c ) + 58b2: f026 febd bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 582e: 484f ldr r0, [pc, #316] ; (596c ) - 5830: f024 fb20 bl 29e74 - 5834: e656 b.n 54e4 - 5836: 494c ldr r1, [pc, #304] ; (5968 ) + 58b6: 484f ldr r0, [pc, #316] ; (59f4 ) + 58b8: f024 fb52 bl 29f60 + 58bc: e656 b.n 556c + 58be: 494c ldr r1, [pc, #304] ; (59f0 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 5838: 2300 movs r3, #0 - 583a: 220a movs r2, #10 - 583c: 484b ldr r0, [pc, #300] ; (596c ) - 583e: 6809 ldr r1, [r1, #0] + 58c0: 2300 movs r3, #0 + 58c2: 220a movs r2, #10 + 58c4: 484b ldr r0, [pc, #300] ; (59f4 ) + 58c6: 6809 ldr r1, [r1, #0] return "USB"; - 5840: 466e mov r6, sp - 5842: f024 fb33 bl 29eac - 5846: 2101 movs r1, #1 - 5848: 4849 ldr r0, [pc, #292] ; (5970 ) - 584a: f026 fe7d bl 2c548 - 584e: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 58c8: 466e mov r6, sp + 58ca: f024 fb65 bl 29f98 + 58ce: 2101 movs r1, #1 + 58d0: 4849 ldr r0, [pc, #292] ; (59f8 ) + 58d2: f026 fead bl 2c630 + 58d6: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c if(isMidiUsbPort(port)){ - 5852: 07da lsls r2, r3, #31 - 5854: f100 8083 bmi.w 595e + 58da: 07da lsls r2, r3, #31 + 58dc: f100 8083 bmi.w 59e6 } else if(isMidiSerialAPort(port)){ - 5858: 079f lsls r7, r3, #30 - 585a: f100 8135 bmi.w 5ac8 + 58e0: 079f lsls r7, r3, #30 + 58e2: f100 8135 bmi.w 5b50 } else if(isMidiSerialBPort(port)){ - 585e: 075d lsls r5, r3, #29 - 5860: f100 814b bmi.w 5afa + 58e6: 075d lsls r5, r3, #29 + 58e8: f100 814b bmi.w 5b82 } else if(isMidiSerialCPort(port)){ - 5864: 071c lsls r4, r3, #28 - 5866: f100 8175 bmi.w 5b54 + 58ec: 071c lsls r4, r3, #28 + 58ee: f100 8175 bmi.w 5bdc } else if(isMidiSerialDPort(port)){ - 586a: 06d8 lsls r0, r3, #27 - 586c: f100 819f bmi.w 5bae + 58f2: 06d8 lsls r0, r3, #27 + 58f4: f100 819f bmi.w 5c36 } else if(isMidiHostPort(port)){ - 5870: 0699 lsls r1, r3, #26 - 5872: f100 81bf bmi.w 5bf4 + 58f8: 0699 lsls r1, r3, #26 + 58fa: f100 81bf bmi.w 5c7c } else if(isMidiBlePort(port)){ - 5876: 065a lsls r2, r3, #25 + 58fe: 065a lsls r2, r3, #25 return ""; - 5878: 4630 mov r0, r6 + 5900: 4630 mov r0, r6 return "BLE"; - 587a: bf4c ite mi - 587c: 493d ldrmi r1, [pc, #244] ; (5974 ) + 5902: bf4c ite mi + 5904: 493d ldrmi r1, [pc, #244] ; (59fc ) return ""; - 587e: 493e ldrpl r1, [pc, #248] ; (5978 ) - 5880: f024 fc36 bl 2a0f0 + 5906: 493e ldrpl r1, [pc, #248] ; (5a00 ) + 5908: f024 fc66 bl 2a1d8 BMC_PRINTLN( - 5884: 4631 mov r1, r6 - 5886: 4839 ldr r0, [pc, #228] ; (596c ) - 5888: f024 fac2 bl 29e10 - 588c: 4630 mov r0, r6 - 588e: f024 fbf3 bl 2a078 - 5892: 2101 movs r1, #1 - 5894: 4836 ldr r0, [pc, #216] ; (5970 ) - 5896: f026 fe57 bl 2c548 - 589a: 210c movs r1, #12 - 589c: 483a ldr r0, [pc, #232] ; (5988 ) - 589e: f026 fe53 bl 2c548 + 590c: 4631 mov r1, r6 + 590e: 4839 ldr r0, [pc, #228] ; (59f4 ) + 5910: f024 faf4 bl 29efc + 5914: 4630 mov r0, r6 + 5916: f024 fc23 bl 2a160 + 591a: 2101 movs r1, #1 + 591c: 4836 ldr r0, [pc, #216] ; (59f8 ) + 591e: f026 fe87 bl 2c630 + 5922: 210c movs r1, #12 + 5924: 483a ldr r0, [pc, #232] ; (5a10 ) + 5926: f026 fe83 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 58a2: 4832 ldr r0, [pc, #200] ; (596c ) - 58a4: f024 fae6 bl 29e74 - 58a8: e61c b.n 54e4 - 58aa: 492f ldr r1, [pc, #188] ; (5968 ) + 592a: 4832 ldr r0, [pc, #200] ; (59f4 ) + 592c: f024 fb18 bl 29f60 + 5930: e61c b.n 556c + 5932: 492f ldr r1, [pc, #188] ; (59f0 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 58ac: 2300 movs r3, #0 - 58ae: 220a movs r2, #10 - 58b0: 482e ldr r0, [pc, #184] ; (596c ) - 58b2: 6809 ldr r1, [r1, #0] + 5934: 2300 movs r3, #0 + 5936: 220a movs r2, #10 + 5938: 482e ldr r0, [pc, #184] ; (59f4 ) + 593a: 6809 ldr r1, [r1, #0] return "USB"; - 58b4: 466e mov r6, sp - 58b6: f024 faf9 bl 29eac - 58ba: 2101 movs r1, #1 - 58bc: 482c ldr r0, [pc, #176] ; (5970 ) - 58be: f026 fe43 bl 2c548 - 58c2: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 593c: 466e mov r6, sp + 593e: f024 fb2b bl 29f98 + 5942: 2101 movs r1, #1 + 5944: 482c ldr r0, [pc, #176] ; (59f8 ) + 5946: f026 fe73 bl 2c630 + 594a: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c if(isMidiUsbPort(port)){ - 58c6: 07dc lsls r4, r3, #31 - 58c8: f100 812b bmi.w 5b22 + 594e: 07dc lsls r4, r3, #31 + 5950: f100 812b bmi.w 5baa } else if(isMidiSerialAPort(port)){ - 58cc: 0798 lsls r0, r3, #30 - 58ce: f100 8155 bmi.w 5b7c + 5954: 0798 lsls r0, r3, #30 + 5956: f100 8155 bmi.w 5c04 } else if(isMidiSerialBPort(port)){ - 58d2: 0759 lsls r1, r3, #29 - 58d4: f100 817f bmi.w 5bd6 + 595a: 0759 lsls r1, r3, #29 + 595c: f100 817f bmi.w 5c5e } else if(isMidiSerialCPort(port)){ - 58d8: 071a lsls r2, r3, #28 - 58da: f100 81a4 bmi.w 5c26 + 5960: 071a lsls r2, r3, #28 + 5962: f100 81a4 bmi.w 5cae } else if(isMidiSerialDPort(port)){ - 58de: 06df lsls r7, r3, #27 - 58e0: f100 81c0 bmi.w 5c64 + 5966: 06df lsls r7, r3, #27 + 5968: f100 81c0 bmi.w 5cec } else if(isMidiHostPort(port)){ - 58e4: 069c lsls r4, r3, #26 - 58e6: f100 81c8 bmi.w 5c7a + 596c: 069c lsls r4, r3, #26 + 596e: f100 81c8 bmi.w 5d02 } else if(isMidiBlePort(port)){ - 58ea: 0658 lsls r0, r3, #25 + 5972: 0658 lsls r0, r3, #25 return ""; - 58ec: 4630 mov r0, r6 + 5974: 4630 mov r0, r6 return "BLE"; - 58ee: bf4c ite mi - 58f0: 4920 ldrmi r1, [pc, #128] ; (5974 ) + 5976: bf4c ite mi + 5978: 4920 ldrmi r1, [pc, #128] ; (59fc ) return ""; - 58f2: 4921 ldrpl r1, [pc, #132] ; (5978 ) - 58f4: f024 fbfc bl 2a0f0 + 597a: 4921 ldrpl r1, [pc, #132] ; (5a00 ) + 597c: f024 fc2c bl 2a1d8 BMC_PRINTLN( - 58f8: 4631 mov r1, r6 - 58fa: 481c ldr r0, [pc, #112] ; (596c ) - 58fc: f024 fa88 bl 29e10 - 5900: 4630 mov r0, r6 - 5902: f024 fbb9 bl 2a078 - 5906: 2101 movs r1, #1 - 5908: 4819 ldr r0, [pc, #100] ; (5970 ) - 590a: f026 fe1d bl 2c548 - 590e: 2108 movs r1, #8 - 5910: 481e ldr r0, [pc, #120] ; (598c ) - 5912: f026 fe19 bl 2c548 - 5916: 2101 movs r1, #1 - 5918: 4815 ldr r0, [pc, #84] ; (5970 ) - 591a: f026 fe15 bl 2c548 - 591e: 4629 mov r1, r5 - 5920: 4630 mov r0, r6 - 5922: f7fd ff79 bl 3818 - 5926: 4631 mov r1, r6 - 5928: 4810 ldr r0, [pc, #64] ; (596c ) - 592a: f024 fa71 bl 29e10 - 592e: 4630 mov r0, r6 - 5930: f024 fba2 bl 2a078 - 5934: e5ad b.n 5492 + 5980: 4631 mov r1, r6 + 5982: 481c ldr r0, [pc, #112] ; (59f4 ) + 5984: f024 faba bl 29efc + 5988: 4630 mov r0, r6 + 598a: f024 fbe9 bl 2a160 + 598e: 2101 movs r1, #1 + 5990: 4819 ldr r0, [pc, #100] ; (59f8 ) + 5992: f026 fe4d bl 2c630 + 5996: 2108 movs r1, #8 + 5998: 481e ldr r0, [pc, #120] ; (5a14 ) + 599a: f026 fe49 bl 2c630 + 599e: 2101 movs r1, #1 + 59a0: 4815 ldr r0, [pc, #84] ; (59f8 ) + 59a2: f026 fe45 bl 2c630 + 59a6: 4629 mov r1, r5 + 59a8: 4630 mov r0, r6 + 59aa: f7fd ff35 bl 3818 + 59ae: 4631 mov r1, r6 + 59b0: 4810 ldr r0, [pc, #64] ; (59f4 ) + 59b2: f024 faa3 bl 29efc + 59b6: 4630 mov r0, r6 + 59b8: f024 fbd2 bl 2a160 + 59bc: e5ad b.n 551a return "USB"; - 5936: 4916 ldr r1, [pc, #88] ; (5990 ) - 5938: 4630 mov r0, r6 - 593a: f024 fbd9 bl 2a0f0 - 593e: e601 b.n 5544 - 5940: 4913 ldr r1, [pc, #76] ; (5990 ) - 5942: 4630 mov r0, r6 - 5944: f024 fbd4 bl 2a0f0 - 5948: e762 b.n 5810 - 594a: 4911 ldr r1, [pc, #68] ; (5990 ) - 594c: 4630 mov r0, r6 - 594e: f024 fbcf bl 2a0f0 - 5952: e723 b.n 579c - 5954: 490e ldr r1, [pc, #56] ; (5990 ) - 5956: 4630 mov r0, r6 - 5958: f024 fbca bl 2a0f0 - 595c: e653 b.n 5606 - 595e: 490c ldr r1, [pc, #48] ; (5990 ) - 5960: 4630 mov r0, r6 - 5962: f024 fbc5 bl 2a0f0 - 5966: e78d b.n 5884 - 5968: 2000bae8 .word 0x2000bae8 - 596c: 20004ba8 .word 0x20004ba8 - 5970: 200023ec .word 0x200023ec - 5974: 20001c74 .word 0x20001c74 - 5978: 20003c58 .word 0x20003c58 - 597c: 2000395c .word 0x2000395c - 5980: 20001c88 .word 0x20001c88 - 5984: 20001c98 .word 0x20001c98 - 5988: 20001cac .word 0x20001cac - 598c: 20001cbc .word 0x20001cbc - 5990: 20001c44 .word 0x20001c44 + 59be: 4916 ldr r1, [pc, #88] ; (5a18 ) + 59c0: 4630 mov r0, r6 + 59c2: f024 fc09 bl 2a1d8 + 59c6: e601 b.n 55cc + 59c8: 4913 ldr r1, [pc, #76] ; (5a18 ) + 59ca: 4630 mov r0, r6 + 59cc: f024 fc04 bl 2a1d8 + 59d0: e762 b.n 5898 + 59d2: 4911 ldr r1, [pc, #68] ; (5a18 ) + 59d4: 4630 mov r0, r6 + 59d6: f024 fbff bl 2a1d8 + 59da: e723 b.n 5824 + 59dc: 490e ldr r1, [pc, #56] ; (5a18 ) + 59de: 4630 mov r0, r6 + 59e0: f024 fbfa bl 2a1d8 + 59e4: e653 b.n 568e + 59e6: 490c ldr r1, [pc, #48] ; (5a18 ) + 59e8: 4630 mov r0, r6 + 59ea: f024 fbf5 bl 2a1d8 + 59ee: e78d b.n 590c + 59f0: 2000bb08 .word 0x2000bb08 + 59f4: 20004c68 .word 0x20004c68 + 59f8: 200023ec .word 0x200023ec + 59fc: 20001c74 .word 0x20001c74 + 5a00: 20003d18 .word 0x20003d18 + 5a04: 20003a1c .word 0x20003a1c + 5a08: 20001c88 .word 0x20001c88 + 5a0c: 20001c98 .word 0x20001c98 + 5a10: 20001cac .word 0x20001cac + 5a14: 20001cbc .word 0x20001cbc + 5a18: 20001c44 .word 0x20001c44 uint8_t getData2() { return data2; } - 5994: f89d 5030 ldrb.w r5, [sp, #48] ; 0x30 + 5a1c: f89d 5030 ldrb.w r5, [sp, #48] ; 0x30 num += in_range / 2; - 5998: f641 71ff movw r1, #8191 ; 0x1fff + 5a20: f641 71ff movw r1, #8191 ; 0x1fff uint8_t getData1() { return data1; } - 599c: f89d 702f ldrb.w r7, [sp, #47] ; 0x2f - 59a0: 466e mov r6, sp + 5a24: f89d 702f ldrb.w r7, [sp, #47] ; 0x2f + 5a28: 466e mov r6, sp int p = map(((d1 & 0x7F) | ((d2 & 0x7F) << 7)), 0, 16383, -8192, 8191); - 59a2: 01ea lsls r2, r5, #7 + 5a2a: 01ea lsls r2, r5, #7 long result = num / in_range + out_min; - 59a4: 4bba ldr r3, [pc, #744] ; (5c90 ) - 59a6: f007 007f and.w r0, r7, #127 ; 0x7f - 59aa: f402 527e and.w r2, r2, #16256 ; 0x3f80 - 59ae: 4302 orrs r2, r0 - 59b0: 48b8 ldr r0, [pc, #736] ; (5c94 ) + 5a2c: 4bba ldr r3, [pc, #744] ; (5d18 ) + 5a2e: f007 007f and.w r0, r7, #127 ; 0x7f + 5a32: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 5a36: 4302 orrs r2, r0 + 5a38: 48b8 ldr r0, [pc, #736] ; (5d1c ) long num = (x - in_min) * out_range; - 59b2: ebc2 3282 rsb r2, r2, r2, lsl #14 + 5a3a: ebc2 3282 rsb r2, r2, r2, lsl #14 num += in_range / 2; - 59b6: 4411 add r1, r2 + 5a3e: 4411 add r1, r2 long result = num / in_range + out_min; - 59b8: fba3 2301 umull r2, r3, r3, r1 - 59bc: 4ab6 ldr r2, [pc, #728] ; (5c98 ) - 59be: 1ac9 subs r1, r1, r3 - 59c0: eb03 0451 add.w r4, r3, r1, lsr #1 - 59c4: 2300 movs r3, #0 - 59c6: 6811 ldr r1, [r2, #0] - 59c8: 220a movs r2, #10 - 59ca: f024 fa6f bl 29eac - 59ce: 2101 movs r1, #1 - 59d0: 48b2 ldr r0, [pc, #712] ; (5c9c ) - 59d2: 0b64 lsrs r4, r4, #13 - 59d4: f026 fdb8 bl 2c548 + 5a40: fba3 2301 umull r2, r3, r3, r1 + 5a44: 4ab6 ldr r2, [pc, #728] ; (5d20 ) + 5a46: 1ac9 subs r1, r1, r3 + 5a48: eb03 0451 add.w r4, r3, r1, lsr #1 + 5a4c: 2300 movs r3, #0 + 5a4e: 6811 ldr r1, [r2, #0] + 5a50: 220a movs r2, #10 + 5a52: f024 faa1 bl 29f98 + 5a56: 2101 movs r1, #1 + 5a58: 48b2 ldr r0, [pc, #712] ; (5d24 ) + 5a5a: 0b64 lsrs r4, r4, #13 + 5a5c: f026 fde8 bl 2c630 uint8_t getPort() { return ports; } - 59d8: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c - 59dc: f5a4 5400 sub.w r4, r4, #8192 ; 0x2000 + 5a60: f89d 302c ldrb.w r3, [sp, #44] ; 0x2c + 5a64: f5a4 5400 sub.w r4, r4, #8192 ; 0x2000 if(isMidiUsbPort(port)){ - 59e0: 07d9 lsls r1, r3, #31 - 59e2: f100 80c6 bmi.w 5b72 + 5a68: 07d9 lsls r1, r3, #31 + 5a6a: f100 80c6 bmi.w 5bfa } else if(isMidiSerialAPort(port)){ - 59e6: 079a lsls r2, r3, #30 - 59e8: f100 80f0 bmi.w 5bcc + 5a6e: 079a lsls r2, r3, #30 + 5a70: f100 80f0 bmi.w 5c54 } else if(isMidiSerialBPort(port)){ - 59ec: 0758 lsls r0, r3, #29 - 59ee: f100 8124 bmi.w 5c3a + 5a74: 0758 lsls r0, r3, #29 + 5a76: f100 8124 bmi.w 5cc2 } else if(isMidiSerialCPort(port)){ - 59f2: 0719 lsls r1, r3, #28 - 59f4: f100 812c bmi.w 5c50 + 5a7a: 0719 lsls r1, r3, #28 + 5a7c: f100 812c bmi.w 5cd8 } else if(isMidiSerialDPort(port)){ - 59f8: 06da lsls r2, r3, #27 - 59fa: f100 8167 bmi.w 5ccc + 5a80: 06da lsls r2, r3, #27 + 5a82: f100 8167 bmi.w 5d54 } else if(isMidiHostPort(port)){ - 59fe: 0698 lsls r0, r3, #26 - 5a00: f100 8169 bmi.w 5cd6 + 5a86: 0698 lsls r0, r3, #26 + 5a88: f100 8169 bmi.w 5d5e } else if(isMidiBlePort(port)){ - 5a04: 0659 lsls r1, r3, #25 + 5a8c: 0659 lsls r1, r3, #25 return ""; - 5a06: 4630 mov r0, r6 + 5a8e: 4630 mov r0, r6 return "BLE"; - 5a08: bf4c ite mi - 5a0a: 49a5 ldrmi r1, [pc, #660] ; (5ca0 ) + 5a90: bf4c ite mi + 5a92: 49a5 ldrmi r1, [pc, #660] ; (5d28 ) return ""; - 5a0c: 49a5 ldrpl r1, [pc, #660] ; (5ca4 ) - 5a0e: f024 fb6f bl 2a0f0 + 5a94: 49a5 ldrpl r1, [pc, #660] ; (5d2c ) + 5a96: f024 fb9f bl 2a1d8 BMC_PRINTLN( - 5a12: 4631 mov r1, r6 - 5a14: 489f ldr r0, [pc, #636] ; (5c94 ) - 5a16: f024 f9fb bl 29e10 - 5a1a: 4630 mov r0, r6 - 5a1c: f024 fb2c bl 2a078 - 5a20: 2101 movs r1, #1 - 5a22: 489e ldr r0, [pc, #632] ; (5c9c ) - 5a24: f026 fd90 bl 2c548 - 5a28: 2108 movs r1, #8 - 5a2a: 489f ldr r0, [pc, #636] ; (5ca8 ) - 5a2c: f026 fd8c bl 2c548 - 5a30: 2101 movs r1, #1 - 5a32: 489a ldr r0, [pc, #616] ; (5c9c ) - 5a34: f026 fd88 bl 2c548 + 5a9a: 4631 mov r1, r6 + 5a9c: 489f ldr r0, [pc, #636] ; (5d1c ) + 5a9e: f024 fa2d bl 29efc + 5aa2: 4630 mov r0, r6 + 5aa4: f024 fb5c bl 2a160 + 5aa8: 2101 movs r1, #1 + 5aaa: 489e ldr r0, [pc, #632] ; (5d24 ) + 5aac: f026 fdc0 bl 2c630 + 5ab0: 2108 movs r1, #8 + 5ab2: 489f ldr r0, [pc, #636] ; (5d30 ) + 5ab4: f026 fdbc bl 2c630 + 5ab8: 2101 movs r1, #1 + 5aba: 489a ldr r0, [pc, #616] ; (5d24 ) + 5abc: f026 fdb8 bl 2c630 return "Pitch Bend"; - 5a38: 499c ldr r1, [pc, #624] ; (5cac ) - 5a3a: 4630 mov r0, r6 - 5a3c: f024 fb58 bl 2a0f0 - 5a40: 4631 mov r1, r6 - 5a42: 4894 ldr r0, [pc, #592] ; (5c94 ) - 5a44: f024 f9e4 bl 29e10 - 5a48: 4630 mov r0, r6 - 5a4a: f024 fb15 bl 2a078 - 5a4e: 2101 movs r1, #1 - 5a50: 4892 ldr r0, [pc, #584] ; (5c9c ) - 5a52: f026 fd79 bl 2c548 + 5ac0: 499c ldr r1, [pc, #624] ; (5d34 ) + 5ac2: 4630 mov r0, r6 + 5ac4: f024 fb88 bl 2a1d8 + 5ac8: 4631 mov r1, r6 + 5aca: 4894 ldr r0, [pc, #592] ; (5d1c ) + 5acc: f024 fa16 bl 29efc + 5ad0: 4630 mov r0, r6 + 5ad2: f024 fb45 bl 2a160 + 5ad6: 2101 movs r1, #1 + 5ad8: 4892 ldr r0, [pc, #584] ; (5d24 ) + 5ada: f026 fda9 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 5a56: 2300 movs r3, #0 - 5a58: 220a movs r2, #10 - 5a5a: f89d 102e ldrb.w r1, [sp, #46] ; 0x2e - 5a5e: 488d ldr r0, [pc, #564] ; (5c94 ) - 5a60: f024 fa24 bl 29eac - 5a64: 2101 movs r1, #1 - 5a66: 488d ldr r0, [pc, #564] ; (5c9c ) - 5a68: f026 fd6e bl 2c548 - 5a6c: 2300 movs r3, #0 - 5a6e: 220a movs r2, #10 - 5a70: 4639 mov r1, r7 - 5a72: 4888 ldr r0, [pc, #544] ; (5c94 ) - 5a74: f024 fa1a bl 29eac - 5a78: 2101 movs r1, #1 - 5a7a: 4888 ldr r0, [pc, #544] ; (5c9c ) - 5a7c: f026 fd64 bl 2c548 - 5a80: 2300 movs r3, #0 - 5a82: 220a movs r2, #10 - 5a84: 4629 mov r1, r5 - 5a86: 4883 ldr r0, [pc, #524] ; (5c94 ) - 5a88: f024 fa10 bl 29eac - 5a8c: 2101 movs r1, #1 - 5a8e: 4883 ldr r0, [pc, #524] ; (5c9c ) - 5a90: f026 fd5a bl 2c548 - 5a94: 2103 movs r1, #3 - 5a96: 4886 ldr r0, [pc, #536] ; (5cb0 ) - 5a98: f026 fd56 bl 2c548 - 5a9c: 2101 movs r1, #1 - 5a9e: 487f ldr r0, [pc, #508] ; (5c9c ) - 5aa0: f026 fd52 bl 2c548 + 5ade: 2300 movs r3, #0 + 5ae0: 220a movs r2, #10 + 5ae2: f89d 102e ldrb.w r1, [sp, #46] ; 0x2e + 5ae6: 488d ldr r0, [pc, #564] ; (5d1c ) + 5ae8: f024 fa56 bl 29f98 + 5aec: 2101 movs r1, #1 + 5aee: 488d ldr r0, [pc, #564] ; (5d24 ) + 5af0: f026 fd9e bl 2c630 + 5af4: 2300 movs r3, #0 + 5af6: 220a movs r2, #10 + 5af8: 4639 mov r1, r7 + 5afa: 4888 ldr r0, [pc, #544] ; (5d1c ) + 5afc: f024 fa4c bl 29f98 + 5b00: 2101 movs r1, #1 + 5b02: 4888 ldr r0, [pc, #544] ; (5d24 ) + 5b04: f026 fd94 bl 2c630 + 5b08: 2300 movs r3, #0 + 5b0a: 220a movs r2, #10 + 5b0c: 4629 mov r1, r5 + 5b0e: 4883 ldr r0, [pc, #524] ; (5d1c ) + 5b10: f024 fa42 bl 29f98 + 5b14: 2101 movs r1, #1 + 5b16: 4883 ldr r0, [pc, #524] ; (5d24 ) + 5b18: f026 fd8a bl 2c630 + 5b1c: 2103 movs r1, #3 + 5b1e: 4886 ldr r0, [pc, #536] ; (5d38 ) + 5b20: f026 fd86 bl 2c630 + 5b24: 2101 movs r1, #1 + 5b26: 487f ldr r0, [pc, #508] ; (5d24 ) + 5b28: f026 fd82 bl 2c630 size_t print(int n) { return print((long)n); } - 5aa4: 4621 mov r1, r4 - 5aa6: 487b ldr r0, [pc, #492] ; (5c94 ) - 5aa8: f024 f9d8 bl 29e5c + 5b2c: 4621 mov r1, r4 + 5b2e: 487b ldr r0, [pc, #492] ; (5d1c ) + 5b30: f024 fa0a bl 29f48 size_t println(int n) { return print(n) + println(); } - 5aac: 4879 ldr r0, [pc, #484] ; (5c94 ) - 5aae: f024 f9e1 bl 29e74 - 5ab2: e517 b.n 54e4 + 5b34: 4879 ldr r0, [pc, #484] ; (5d1c ) + 5b36: f024 fa13 bl 29f60 + 5b3a: e517 b.n 556c return "SerialA"; - 5ab4: 497f ldr r1, [pc, #508] ; (5cb4 ) - 5ab6: 4630 mov r0, r6 - 5ab8: f024 fb1a bl 2a0f0 - 5abc: e542 b.n 5544 - 5abe: 497d ldr r1, [pc, #500] ; (5cb4 ) - 5ac0: 4630 mov r0, r6 - 5ac2: f024 fb15 bl 2a0f0 - 5ac6: e59e b.n 5606 - 5ac8: 497a ldr r1, [pc, #488] ; (5cb4 ) - 5aca: 4630 mov r0, r6 - 5acc: f024 fb10 bl 2a0f0 - 5ad0: e6d8 b.n 5884 - 5ad2: 4978 ldr r1, [pc, #480] ; (5cb4 ) - 5ad4: 4630 mov r0, r6 - 5ad6: f024 fb0b bl 2a0f0 - 5ada: e699 b.n 5810 - 5adc: 4975 ldr r1, [pc, #468] ; (5cb4 ) - 5ade: 4630 mov r0, r6 - 5ae0: f024 fb06 bl 2a0f0 - 5ae4: e65a b.n 579c + 5b3c: 497f ldr r1, [pc, #508] ; (5d3c ) + 5b3e: 4630 mov r0, r6 + 5b40: f024 fb4a bl 2a1d8 + 5b44: e542 b.n 55cc + 5b46: 497d ldr r1, [pc, #500] ; (5d3c ) + 5b48: 4630 mov r0, r6 + 5b4a: f024 fb45 bl 2a1d8 + 5b4e: e59e b.n 568e + 5b50: 497a ldr r1, [pc, #488] ; (5d3c ) + 5b52: 4630 mov r0, r6 + 5b54: f024 fb40 bl 2a1d8 + 5b58: e6d8 b.n 590c + 5b5a: 4978 ldr r1, [pc, #480] ; (5d3c ) + 5b5c: 4630 mov r0, r6 + 5b5e: f024 fb3b bl 2a1d8 + 5b62: e699 b.n 5898 + 5b64: 4975 ldr r1, [pc, #468] ; (5d3c ) + 5b66: 4630 mov r0, r6 + 5b68: f024 fb36 bl 2a1d8 + 5b6c: e65a b.n 5824 return "SerialB"; - 5ae6: 4974 ldr r1, [pc, #464] ; (5cb8 ) - 5ae8: 4630 mov r0, r6 - 5aea: f024 fb01 bl 2a0f0 - 5aee: e529 b.n 5544 - 5af0: 4971 ldr r1, [pc, #452] ; (5cb8 ) - 5af2: 4630 mov r0, r6 - 5af4: f024 fafc bl 2a0f0 - 5af8: e68a b.n 5810 - 5afa: 496f ldr r1, [pc, #444] ; (5cb8 ) - 5afc: 4630 mov r0, r6 - 5afe: f024 faf7 bl 2a0f0 - 5b02: e6bf b.n 5884 - 5b04: 496c ldr r1, [pc, #432] ; (5cb8 ) - 5b06: 4630 mov r0, r6 - 5b08: f024 faf2 bl 2a0f0 - 5b0c: e646 b.n 579c - 5b0e: 496a ldr r1, [pc, #424] ; (5cb8 ) - 5b10: 4630 mov r0, r6 - 5b12: f024 faed bl 2a0f0 - 5b16: e576 b.n 5606 + 5b6e: 4974 ldr r1, [pc, #464] ; (5d40 ) + 5b70: 4630 mov r0, r6 + 5b72: f024 fb31 bl 2a1d8 + 5b76: e529 b.n 55cc + 5b78: 4971 ldr r1, [pc, #452] ; (5d40 ) + 5b7a: 4630 mov r0, r6 + 5b7c: f024 fb2c bl 2a1d8 + 5b80: e68a b.n 5898 + 5b82: 496f ldr r1, [pc, #444] ; (5d40 ) + 5b84: 4630 mov r0, r6 + 5b86: f024 fb27 bl 2a1d8 + 5b8a: e6bf b.n 590c + 5b8c: 496c ldr r1, [pc, #432] ; (5d40 ) + 5b8e: 4630 mov r0, r6 + 5b90: f024 fb22 bl 2a1d8 + 5b94: e646 b.n 5824 + 5b96: 496a ldr r1, [pc, #424] ; (5d40 ) + 5b98: 4630 mov r0, r6 + 5b9a: f024 fb1d bl 2a1d8 + 5b9e: e576 b.n 568e return "USB"; - 5b18: 4968 ldr r1, [pc, #416] ; (5cbc ) - 5b1a: 4630 mov r0, r6 - 5b1c: f024 fae8 bl 2a0f0 - 5b20: e486 b.n 5430 - 5b22: 4966 ldr r1, [pc, #408] ; (5cbc ) - 5b24: 4630 mov r0, r6 - 5b26: f024 fae3 bl 2a0f0 - 5b2a: e6e5 b.n 58f8 - 5b2c: 4963 ldr r1, [pc, #396] ; (5cbc ) - 5b2e: 4630 mov r0, r6 - 5b30: f024 fade bl 2a0f0 - 5b34: e5f8 b.n 5728 + 5ba0: 4968 ldr r1, [pc, #416] ; (5d44 ) + 5ba2: 4630 mov r0, r6 + 5ba4: f024 fb18 bl 2a1d8 + 5ba8: e486 b.n 54b8 + 5baa: 4966 ldr r1, [pc, #408] ; (5d44 ) + 5bac: 4630 mov r0, r6 + 5bae: f024 fb13 bl 2a1d8 + 5bb2: e6e5 b.n 5980 + 5bb4: 4963 ldr r1, [pc, #396] ; (5d44 ) + 5bb6: 4630 mov r0, r6 + 5bb8: f024 fb0e bl 2a1d8 + 5bbc: e5f8 b.n 57b0 return "SerialC"; - 5b36: 4962 ldr r1, [pc, #392] ; (5cc0 ) - 5b38: 4630 mov r0, r6 - 5b3a: f024 fad9 bl 2a0f0 - 5b3e: e501 b.n 5544 - 5b40: 495f ldr r1, [pc, #380] ; (5cc0 ) - 5b42: 4630 mov r0, r6 - 5b44: f024 fad4 bl 2a0f0 - 5b48: e662 b.n 5810 - 5b4a: 495d ldr r1, [pc, #372] ; (5cc0 ) - 5b4c: 4630 mov r0, r6 - 5b4e: f024 facf bl 2a0f0 - 5b52: e558 b.n 5606 - 5b54: 495a ldr r1, [pc, #360] ; (5cc0 ) - 5b56: 4630 mov r0, r6 - 5b58: f024 faca bl 2a0f0 - 5b5c: e692 b.n 5884 - 5b5e: 4958 ldr r1, [pc, #352] ; (5cc0 ) - 5b60: 4630 mov r0, r6 - 5b62: f024 fac5 bl 2a0f0 - 5b66: e619 b.n 579c + 5bbe: 4962 ldr r1, [pc, #392] ; (5d48 ) + 5bc0: 4630 mov r0, r6 + 5bc2: f024 fb09 bl 2a1d8 + 5bc6: e501 b.n 55cc + 5bc8: 495f ldr r1, [pc, #380] ; (5d48 ) + 5bca: 4630 mov r0, r6 + 5bcc: f024 fb04 bl 2a1d8 + 5bd0: e662 b.n 5898 + 5bd2: 495d ldr r1, [pc, #372] ; (5d48 ) + 5bd4: 4630 mov r0, r6 + 5bd6: f024 faff bl 2a1d8 + 5bda: e558 b.n 568e + 5bdc: 495a ldr r1, [pc, #360] ; (5d48 ) + 5bde: 4630 mov r0, r6 + 5be0: f024 fafa bl 2a1d8 + 5be4: e692 b.n 590c + 5be6: 4958 ldr r1, [pc, #352] ; (5d48 ) + 5be8: 4630 mov r0, r6 + 5bea: f024 faf5 bl 2a1d8 + 5bee: e619 b.n 5824 return "SerialA"; - 5b68: 4952 ldr r1, [pc, #328] ; (5cb4 ) - 5b6a: 4630 mov r0, r6 - 5b6c: f024 fac0 bl 2a0f0 - 5b70: e45e b.n 5430 + 5bf0: 4952 ldr r1, [pc, #328] ; (5d3c ) + 5bf2: 4630 mov r0, r6 + 5bf4: f024 faf0 bl 2a1d8 + 5bf8: e45e b.n 54b8 return "USB"; - 5b72: 4952 ldr r1, [pc, #328] ; (5cbc ) - 5b74: 4630 mov r0, r6 - 5b76: f024 fabb bl 2a0f0 - 5b7a: e74a b.n 5a12 + 5bfa: 4952 ldr r1, [pc, #328] ; (5d44 ) + 5bfc: 4630 mov r0, r6 + 5bfe: f024 faeb bl 2a1d8 + 5c02: e74a b.n 5a9a return "SerialA"; - 5b7c: 494d ldr r1, [pc, #308] ; (5cb4 ) - 5b7e: 4630 mov r0, r6 - 5b80: f024 fab6 bl 2a0f0 - 5b84: e6b8 b.n 58f8 - 5b86: 494b ldr r1, [pc, #300] ; (5cb4 ) - 5b88: 4630 mov r0, r6 - 5b8a: f024 fab1 bl 2a0f0 - 5b8e: e5cb b.n 5728 + 5c04: 494d ldr r1, [pc, #308] ; (5d3c ) + 5c06: 4630 mov r0, r6 + 5c08: f024 fae6 bl 2a1d8 + 5c0c: e6b8 b.n 5980 + 5c0e: 494b ldr r1, [pc, #300] ; (5d3c ) + 5c10: 4630 mov r0, r6 + 5c12: f024 fae1 bl 2a1d8 + 5c16: e5cb b.n 57b0 return "SerialD"; - 5b90: 494c ldr r1, [pc, #304] ; (5cc4 ) - 5b92: 4630 mov r0, r6 - 5b94: f024 faac bl 2a0f0 - 5b98: e4d4 b.n 5544 - 5b9a: 494a ldr r1, [pc, #296] ; (5cc4 ) - 5b9c: 4630 mov r0, r6 - 5b9e: f024 faa7 bl 2a0f0 - 5ba2: e5fb b.n 579c - 5ba4: 4947 ldr r1, [pc, #284] ; (5cc4 ) - 5ba6: 4630 mov r0, r6 - 5ba8: f024 faa2 bl 2a0f0 - 5bac: e630 b.n 5810 - 5bae: 4945 ldr r1, [pc, #276] ; (5cc4 ) - 5bb0: 4630 mov r0, r6 - 5bb2: f024 fa9d bl 2a0f0 - 5bb6: e665 b.n 5884 - 5bb8: 4942 ldr r1, [pc, #264] ; (5cc4 ) - 5bba: 4630 mov r0, r6 - 5bbc: f024 fa98 bl 2a0f0 - 5bc0: e521 b.n 5606 + 5c18: 494c ldr r1, [pc, #304] ; (5d4c ) + 5c1a: 4630 mov r0, r6 + 5c1c: f024 fadc bl 2a1d8 + 5c20: e4d4 b.n 55cc + 5c22: 494a ldr r1, [pc, #296] ; (5d4c ) + 5c24: 4630 mov r0, r6 + 5c26: f024 fad7 bl 2a1d8 + 5c2a: e5fb b.n 5824 + 5c2c: 4947 ldr r1, [pc, #284] ; (5d4c ) + 5c2e: 4630 mov r0, r6 + 5c30: f024 fad2 bl 2a1d8 + 5c34: e630 b.n 5898 + 5c36: 4945 ldr r1, [pc, #276] ; (5d4c ) + 5c38: 4630 mov r0, r6 + 5c3a: f024 facd bl 2a1d8 + 5c3e: e665 b.n 590c + 5c40: 4942 ldr r1, [pc, #264] ; (5d4c ) + 5c42: 4630 mov r0, r6 + 5c44: f024 fac8 bl 2a1d8 + 5c48: e521 b.n 568e return "SerialB"; - 5bc2: 493d ldr r1, [pc, #244] ; (5cb8 ) - 5bc4: 4630 mov r0, r6 - 5bc6: f024 fa93 bl 2a0f0 - 5bca: e431 b.n 5430 + 5c4a: 493d ldr r1, [pc, #244] ; (5d40 ) + 5c4c: 4630 mov r0, r6 + 5c4e: f024 fac3 bl 2a1d8 + 5c52: e431 b.n 54b8 return "SerialA"; - 5bcc: 4939 ldr r1, [pc, #228] ; (5cb4 ) - 5bce: 4630 mov r0, r6 - 5bd0: f024 fa8e bl 2a0f0 - 5bd4: e71d b.n 5a12 + 5c54: 4939 ldr r1, [pc, #228] ; (5d3c ) + 5c56: 4630 mov r0, r6 + 5c58: f024 fabe bl 2a1d8 + 5c5c: e71d b.n 5a9a return "SerialB"; - 5bd6: 4938 ldr r1, [pc, #224] ; (5cb8 ) - 5bd8: 4630 mov r0, r6 - 5bda: f024 fa89 bl 2a0f0 - 5bde: e68b b.n 58f8 - 5be0: 4935 ldr r1, [pc, #212] ; (5cb8 ) - 5be2: 4630 mov r0, r6 - 5be4: f024 fa84 bl 2a0f0 - 5be8: e59e b.n 5728 + 5c5e: 4938 ldr r1, [pc, #224] ; (5d40 ) + 5c60: 4630 mov r0, r6 + 5c62: f024 fab9 bl 2a1d8 + 5c66: e68b b.n 5980 + 5c68: 4935 ldr r1, [pc, #212] ; (5d40 ) + 5c6a: 4630 mov r0, r6 + 5c6c: f024 fab4 bl 2a1d8 + 5c70: e59e b.n 57b0 return "USB Host"; - 5bea: 4937 ldr r1, [pc, #220] ; (5cc8 ) - 5bec: 4630 mov r0, r6 - 5bee: f024 fa7f bl 2a0f0 - 5bf2: e4a7 b.n 5544 - 5bf4: 4934 ldr r1, [pc, #208] ; (5cc8 ) - 5bf6: 4630 mov r0, r6 - 5bf8: f024 fa7a bl 2a0f0 - 5bfc: e642 b.n 5884 - 5bfe: 4932 ldr r1, [pc, #200] ; (5cc8 ) - 5c00: 4630 mov r0, r6 - 5c02: f024 fa75 bl 2a0f0 - 5c06: e4fe b.n 5606 + 5c72: 4937 ldr r1, [pc, #220] ; (5d50 ) + 5c74: 4630 mov r0, r6 + 5c76: f024 faaf bl 2a1d8 + 5c7a: e4a7 b.n 55cc + 5c7c: 4934 ldr r1, [pc, #208] ; (5d50 ) + 5c7e: 4630 mov r0, r6 + 5c80: f024 faaa bl 2a1d8 + 5c84: e642 b.n 590c + 5c86: 4932 ldr r1, [pc, #200] ; (5d50 ) + 5c88: 4630 mov r0, r6 + 5c8a: f024 faa5 bl 2a1d8 + 5c8e: e4fe b.n 568e return "SerialC"; - 5c08: 492d ldr r1, [pc, #180] ; (5cc0 ) - 5c0a: 4630 mov r0, r6 - 5c0c: f024 fa70 bl 2a0f0 - 5c10: e40e b.n 5430 + 5c90: 492d ldr r1, [pc, #180] ; (5d48 ) + 5c92: 4630 mov r0, r6 + 5c94: f024 faa0 bl 2a1d8 + 5c98: e40e b.n 54b8 return "USB Host"; - 5c12: 492d ldr r1, [pc, #180] ; (5cc8 ) - 5c14: 4630 mov r0, r6 - 5c16: f024 fa6b bl 2a0f0 - 5c1a: e5bf b.n 579c - 5c1c: 492a ldr r1, [pc, #168] ; (5cc8 ) - 5c1e: 4630 mov r0, r6 - 5c20: f024 fa66 bl 2a0f0 - 5c24: e5f4 b.n 5810 + 5c9a: 492d ldr r1, [pc, #180] ; (5d50 ) + 5c9c: 4630 mov r0, r6 + 5c9e: f024 fa9b bl 2a1d8 + 5ca2: e5bf b.n 5824 + 5ca4: 492a ldr r1, [pc, #168] ; (5d50 ) + 5ca6: 4630 mov r0, r6 + 5ca8: f024 fa96 bl 2a1d8 + 5cac: e5f4 b.n 5898 return "SerialC"; - 5c26: 4926 ldr r1, [pc, #152] ; (5cc0 ) - 5c28: 4630 mov r0, r6 - 5c2a: f024 fa61 bl 2a0f0 - 5c2e: e663 b.n 58f8 - 5c30: 4923 ldr r1, [pc, #140] ; (5cc0 ) - 5c32: 4630 mov r0, r6 - 5c34: f024 fa5c bl 2a0f0 - 5c38: e576 b.n 5728 + 5cae: 4926 ldr r1, [pc, #152] ; (5d48 ) + 5cb0: 4630 mov r0, r6 + 5cb2: f024 fa91 bl 2a1d8 + 5cb6: e663 b.n 5980 + 5cb8: 4923 ldr r1, [pc, #140] ; (5d48 ) + 5cba: 4630 mov r0, r6 + 5cbc: f024 fa8c bl 2a1d8 + 5cc0: e576 b.n 57b0 return "SerialB"; - 5c3a: 491f ldr r1, [pc, #124] ; (5cb8 ) - 5c3c: 4630 mov r0, r6 - 5c3e: f024 fa57 bl 2a0f0 - 5c42: e6e6 b.n 5a12 + 5cc2: 491f ldr r1, [pc, #124] ; (5d40 ) + 5cc4: 4630 mov r0, r6 + 5cc6: f024 fa87 bl 2a1d8 + 5cca: e6e6 b.n 5a9a return "SerialD"; - 5c44: 491f ldr r1, [pc, #124] ; (5cc4 ) - 5c46: 4630 mov r0, r6 - 5c48: f024 fa52 bl 2a0f0 - 5c4c: f7ff bbf0 b.w 5430 + 5ccc: 491f ldr r1, [pc, #124] ; (5d4c ) + 5cce: 4630 mov r0, r6 + 5cd0: f024 fa82 bl 2a1d8 + 5cd4: f7ff bbf0 b.w 54b8 return "SerialC"; - 5c50: 491b ldr r1, [pc, #108] ; (5cc0 ) - 5c52: 4630 mov r0, r6 - 5c54: f024 fa4c bl 2a0f0 - 5c58: e6db b.n 5a12 + 5cd8: 491b ldr r1, [pc, #108] ; (5d48 ) + 5cda: 4630 mov r0, r6 + 5cdc: f024 fa7c bl 2a1d8 + 5ce0: e6db b.n 5a9a return "SerialD"; - 5c5a: 491a ldr r1, [pc, #104] ; (5cc4 ) - 5c5c: 4630 mov r0, r6 - 5c5e: f024 fa47 bl 2a0f0 - 5c62: e561 b.n 5728 - 5c64: 4917 ldr r1, [pc, #92] ; (5cc4 ) - 5c66: 4630 mov r0, r6 - 5c68: f024 fa42 bl 2a0f0 - 5c6c: e644 b.n 58f8 + 5ce2: 491a ldr r1, [pc, #104] ; (5d4c ) + 5ce4: 4630 mov r0, r6 + 5ce6: f024 fa77 bl 2a1d8 + 5cea: e561 b.n 57b0 + 5cec: 4917 ldr r1, [pc, #92] ; (5d4c ) + 5cee: 4630 mov r0, r6 + 5cf0: f024 fa72 bl 2a1d8 + 5cf4: e644 b.n 5980 return "USB Host"; - 5c6e: 4916 ldr r1, [pc, #88] ; (5cc8 ) - 5c70: 4630 mov r0, r6 - 5c72: f024 fa3d bl 2a0f0 - 5c76: f7ff bbdb b.w 5430 - 5c7a: 4913 ldr r1, [pc, #76] ; (5cc8 ) - 5c7c: 4630 mov r0, r6 - 5c7e: f024 fa37 bl 2a0f0 - 5c82: e639 b.n 58f8 - 5c84: 4910 ldr r1, [pc, #64] ; (5cc8 ) - 5c86: 4630 mov r0, r6 - 5c88: f024 fa32 bl 2a0f0 - 5c8c: e54c b.n 5728 - 5c8e: bf00 nop - 5c90: 00040011 .word 0x00040011 - 5c94: 20004ba8 .word 0x20004ba8 - 5c98: 2000bae8 .word 0x2000bae8 - 5c9c: 200023ec .word 0x200023ec - 5ca0: 20001c74 .word 0x20001c74 - 5ca4: 20003c58 .word 0x20003c58 - 5ca8: 20001cbc .word 0x20001cbc - 5cac: 2000396c .word 0x2000396c - 5cb0: 200029d0 .word 0x200029d0 - 5cb4: 20001c48 .word 0x20001c48 - 5cb8: 20001c50 .word 0x20001c50 - 5cbc: 20001c44 .word 0x20001c44 - 5cc0: 20001c58 .word 0x20001c58 - 5cc4: 20001c60 .word 0x20001c60 - 5cc8: 20001c68 .word 0x20001c68 + 5cf6: 4916 ldr r1, [pc, #88] ; (5d50 ) + 5cf8: 4630 mov r0, r6 + 5cfa: f024 fa6d bl 2a1d8 + 5cfe: f7ff bbdb b.w 54b8 + 5d02: 4913 ldr r1, [pc, #76] ; (5d50 ) + 5d04: 4630 mov r0, r6 + 5d06: f024 fa67 bl 2a1d8 + 5d0a: e639 b.n 5980 + 5d0c: 4910 ldr r1, [pc, #64] ; (5d50 ) + 5d0e: 4630 mov r0, r6 + 5d10: f024 fa62 bl 2a1d8 + 5d14: e54c b.n 57b0 + 5d16: bf00 nop + 5d18: 00040011 .word 0x00040011 + 5d1c: 20004c68 .word 0x20004c68 + 5d20: 2000bb08 .word 0x2000bb08 + 5d24: 200023ec .word 0x200023ec + 5d28: 20001c74 .word 0x20001c74 + 5d2c: 20003d18 .word 0x20003d18 + 5d30: 20001cbc .word 0x20001cbc + 5d34: 20003a2c .word 0x20003a2c + 5d38: 200029d8 .word 0x200029d8 + 5d3c: 20001c48 .word 0x20001c48 + 5d40: 20001c50 .word 0x20001c50 + 5d44: 20001c44 .word 0x20001c44 + 5d48: 20001c58 .word 0x20001c58 + 5d4c: 20001c60 .word 0x20001c60 + 5d50: 20001c68 .word 0x20001c68 return "SerialD"; - 5ccc: 4904 ldr r1, [pc, #16] ; (5ce0 ) - 5cce: 4630 mov r0, r6 - 5cd0: f024 fa0e bl 2a0f0 - 5cd4: e69d b.n 5a12 + 5d54: 4904 ldr r1, [pc, #16] ; (5d68 ) + 5d56: 4630 mov r0, r6 + 5d58: f024 fa3e bl 2a1d8 + 5d5c: e69d b.n 5a9a return "USB Host"; - 5cd6: 4903 ldr r1, [pc, #12] ; (5ce4 ) - 5cd8: 4630 mov r0, r6 - 5cda: f024 fa09 bl 2a0f0 - 5cde: e698 b.n 5a12 - 5ce0: 20001c60 .word 0x20001c60 - 5ce4: 20001c68 .word 0x20001c68 - -00005ce8 : + 5d5e: 4903 ldr r1, [pc, #12] ; (5d6c ) + 5d60: 4630 mov r0, r6 + 5d62: f024 fa39 bl 2a1d8 + 5d66: e698 b.n 5a9a + 5d68: 20001c60 .word 0x20001c60 + 5d6c: 20001c68 .word 0x20001c68 + +00005d70 : void BMC::printButtonTrigger(uint8_t deviceId, uint8_t n, uint8_t t_trigger){ - 5ce8: b570 push {r4, r5, r6, lr} - 5cea: f500 5580 add.w r5, r0, #4096 ; 0x1000 - 5cee: 461c mov r4, r3 - 5cf0: f8b5 3860 ldrh.w r3, [r5, #2144] ; 0x860 + 5d70: b570 push {r4, r5, r6, lr} + 5d72: f500 5580 add.w r5, r0, #4096 ; 0x1000 + 5d76: 461c mov r4, r3 + 5d78: f8b5 3860 ldrh.w r3, [r5, #2144] ; 0x860 if(!globals.getButtonsDebug()){ - 5cf4: 061b lsls r3, r3, #24 - 5cf6: d522 bpl.n 5d3e + 5d7c: 061b lsls r3, r3, #24 + 5d7e: d522 bpl.n 5dc6 return; } BMC_PRINT((deviceId == BMC_DEVICE_ID_GLOBAL_BUTTON ? "Global Button" : "Button"), n + globals.offset); - 5cf8: 2905 cmp r1, #5 - 5cfa: 4b4c ldr r3, [pc, #304] ; (5e2c ) - 5cfc: 484c ldr r0, [pc, #304] ; (5e30 ) - 5cfe: 4616 mov r6, r2 - 5d00: bf16 itet ne - 5d02: 4618 movne r0, r3 - 5d04: 210d moveq r1, #13 - 5d06: 2106 movne r1, #6 - 5d08: f026 fc1e bl 2c548 - 5d0c: 2101 movs r1, #1 - 5d0e: 4849 ldr r0, [pc, #292] ; (5e34 ) - 5d10: f026 fc1a bl 2c548 - 5d14: f895 1808 ldrb.w r1, [r5, #2056] ; 0x808 + 5d80: 2905 cmp r1, #5 + 5d82: 4b4c ldr r3, [pc, #304] ; (5eb4 ) + 5d84: 484c ldr r0, [pc, #304] ; (5eb8 ) + 5d86: 4616 mov r6, r2 + 5d88: bf16 itet ne + 5d8a: 4618 movne r0, r3 + 5d8c: 210d moveq r1, #13 + 5d8e: 2106 movne r1, #6 + 5d90: f026 fc4e bl 2c630 + 5d94: 2101 movs r1, #1 + 5d96: 4849 ldr r0, [pc, #292] ; (5ebc ) + 5d98: f026 fc4a bl 2c630 + 5d9c: f895 1808 ldrb.w r1, [r5, #2056] ; 0x808 size_t print(int n) { return print((long)n); } - 5d18: 4847 ldr r0, [pc, #284] ; (5e38 ) - 5d1a: 4431 add r1, r6 - 5d1c: f024 f89e bl 29e5c - 5d20: 2101 movs r1, #1 - 5d22: 4844 ldr r0, [pc, #272] ; (5e34 ) - 5d24: f026 fc10 bl 2c548 + 5da0: 4847 ldr r0, [pc, #284] ; (5ec0 ) + 5da2: 4431 add r1, r6 + 5da4: f024 f8d0 bl 29f48 + 5da8: 2101 movs r1, #1 + 5daa: 4844 ldr r0, [pc, #272] ; (5ebc ) + 5dac: f026 fc40 bl 2c630 switch(t_trigger){ - 5d28: 1e63 subs r3, r4, #1 - 5d2a: 2b0b cmp r3, #11 - 5d2c: d874 bhi.n 5e18 - 5d2e: e8df f003 tbb [pc, r3] - 5d32: 1910 .short 0x1910 - 5d34: 3d342b22 .word 0x3d342b22 - 5d38: 61584f46 .word 0x61584f46 - 5d3c: 076a .short 0x076a + 5db0: 1e63 subs r3, r4, #1 + 5db2: 2b0b cmp r3, #11 + 5db4: d874 bhi.n 5ea0 + 5db6: e8df f003 tbb [pc, r3] + 5dba: 1910 .short 0x1910 + 5dbc: 3d342b22 .word 0x3d342b22 + 5dc0: 61584f46 .word 0x61584f46 + 5dc4: 076a .short 0x076a case BMC_BUTTON_PRESS_TYPE_STATE_CHANGE: BMC_PRINTLN("STATE CHANGE");break; default: BMC_PRINTLN(""); break; } } - 5d3e: bd70 pop {r4, r5, r6, pc} - 5d40: 210c movs r1, #12 - 5d42: 483e ldr r0, [pc, #248] ; (5e3c ) - 5d44: f026 fc00 bl 2c548 + 5dc6: bd70 pop {r4, r5, r6, pc} + 5dc8: 210c movs r1, #12 + 5dca: 483e ldr r0, [pc, #248] ; (5ec4 ) + 5dcc: f026 fc30 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 5d48: 483b ldr r0, [pc, #236] ; (5e38 ) - 5d4a: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5d4e: f024 b891 b.w 29e74 - 5d52: 2105 movs r1, #5 - 5d54: 483a ldr r0, [pc, #232] ; (5e40 ) - 5d56: f026 fbf7 bl 2c548 - 5d5a: 4837 ldr r0, [pc, #220] ; (5e38 ) - 5d5c: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5d60: f024 b888 b.w 29e74 - 5d64: 2110 movs r1, #16 - 5d66: 4837 ldr r0, [pc, #220] ; (5e44 ) - 5d68: f026 fbee bl 2c548 - 5d6c: 4832 ldr r0, [pc, #200] ; (5e38 ) - 5d6e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5d72: f024 b87f b.w 29e74 - 5d76: 2104 movs r1, #4 - 5d78: 4833 ldr r0, [pc, #204] ; (5e48 ) - 5d7a: f026 fbe5 bl 2c548 - 5d7e: 482e ldr r0, [pc, #184] ; (5e38 ) - 5d80: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5d84: f024 b876 b.w 29e74 - 5d88: 210c movs r1, #12 - 5d8a: 4830 ldr r0, [pc, #192] ; (5e4c ) - 5d8c: f026 fbdc bl 2c548 - 5d90: 4829 ldr r0, [pc, #164] ; (5e38 ) - 5d92: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5d96: f024 b86d b.w 29e74 - 5d9a: 210a movs r1, #10 - 5d9c: 482c ldr r0, [pc, #176] ; (5e50 ) - 5d9e: f026 fbd3 bl 2c548 - 5da2: 4825 ldr r0, [pc, #148] ; (5e38 ) - 5da4: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5da8: f024 b864 b.w 29e74 - 5dac: 2109 movs r1, #9 - 5dae: 4829 ldr r0, [pc, #164] ; (5e54 ) - 5db0: f026 fbca bl 2c548 - 5db4: 4820 ldr r0, [pc, #128] ; (5e38 ) - 5db6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5dba: f024 b85b b.w 29e74 - 5dbe: 211a movs r1, #26 - 5dc0: 4825 ldr r0, [pc, #148] ; (5e58 ) - 5dc2: f026 fbc1 bl 2c548 - 5dc6: 481c ldr r0, [pc, #112] ; (5e38 ) - 5dc8: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5dcc: f024 b852 b.w 29e74 - 5dd0: 2119 movs r1, #25 - 5dd2: 4822 ldr r0, [pc, #136] ; (5e5c ) - 5dd4: f026 fbb8 bl 2c548 - 5dd8: 4817 ldr r0, [pc, #92] ; (5e38 ) - 5dda: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5dde: f024 b849 b.w 29e74 - 5de2: 2121 movs r1, #33 ; 0x21 - 5de4: 481e ldr r0, [pc, #120] ; (5e60 ) - 5de6: f026 fbaf bl 2c548 - 5dea: 4813 ldr r0, [pc, #76] ; (5e38 ) - 5dec: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5df0: f024 b840 b.w 29e74 - 5df4: 211f movs r1, #31 - 5df6: 481b ldr r0, [pc, #108] ; (5e64 ) - 5df8: f026 fba6 bl 2c548 - 5dfc: 480e ldr r0, [pc, #56] ; (5e38 ) - 5dfe: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5e02: f024 b837 b.w 29e74 - 5e06: 211e movs r1, #30 - 5e08: 4817 ldr r0, [pc, #92] ; (5e68 ) - 5e0a: f026 fb9d bl 2c548 - 5e0e: 480a ldr r0, [pc, #40] ; (5e38 ) - 5e10: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5e14: f024 b82e b.w 29e74 - 5e18: 2100 movs r1, #0 - 5e1a: 4814 ldr r0, [pc, #80] ; (5e6c ) - 5e1c: f026 fb94 bl 2c548 - 5e20: 4805 ldr r0, [pc, #20] ; (5e38 ) - 5e22: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 5e26: f024 b825 b.w 29e74 - 5e2a: bf00 nop - 5e2c: 2000254c .word 0x2000254c - 5e30: 20002554 .word 0x20002554 - 5e34: 200023ec .word 0x200023ec - 5e38: 20004ba8 .word 0x20004ba8 - 5e3c: 20002644 .word 0x20002644 - 5e40: 200025a0 .word 0x200025a0 - 5e44: 20002564 .word 0x20002564 - 5e48: 20002578 .word 0x20002578 - 5e4c: 20002580 .word 0x20002580 - 5e50: 20002590 .word 0x20002590 - 5e54: 2000259c .word 0x2000259c - 5e58: 200025a8 .word 0x200025a8 - 5e5c: 200025c4 .word 0x200025c4 - 5e60: 200025e0 .word 0x200025e0 - 5e64: 20002604 .word 0x20002604 - 5e68: 20002624 .word 0x20002624 - 5e6c: 20003c58 .word 0x20003c58 - -00005e70 : + 5dd0: 483b ldr r0, [pc, #236] ; (5ec0 ) + 5dd2: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5dd6: f024 b8c3 b.w 29f60 + 5dda: 2105 movs r1, #5 + 5ddc: 483a ldr r0, [pc, #232] ; (5ec8 ) + 5dde: f026 fc27 bl 2c630 + 5de2: 4837 ldr r0, [pc, #220] ; (5ec0 ) + 5de4: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5de8: f024 b8ba b.w 29f60 + 5dec: 2110 movs r1, #16 + 5dee: 4837 ldr r0, [pc, #220] ; (5ecc ) + 5df0: f026 fc1e bl 2c630 + 5df4: 4832 ldr r0, [pc, #200] ; (5ec0 ) + 5df6: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5dfa: f024 b8b1 b.w 29f60 + 5dfe: 2104 movs r1, #4 + 5e00: 4833 ldr r0, [pc, #204] ; (5ed0 ) + 5e02: f026 fc15 bl 2c630 + 5e06: 482e ldr r0, [pc, #184] ; (5ec0 ) + 5e08: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5e0c: f024 b8a8 b.w 29f60 + 5e10: 210c movs r1, #12 + 5e12: 4830 ldr r0, [pc, #192] ; (5ed4 ) + 5e14: f026 fc0c bl 2c630 + 5e18: 4829 ldr r0, [pc, #164] ; (5ec0 ) + 5e1a: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5e1e: f024 b89f b.w 29f60 + 5e22: 210a movs r1, #10 + 5e24: 482c ldr r0, [pc, #176] ; (5ed8 ) + 5e26: f026 fc03 bl 2c630 + 5e2a: 4825 ldr r0, [pc, #148] ; (5ec0 ) + 5e2c: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5e30: f024 b896 b.w 29f60 + 5e34: 2109 movs r1, #9 + 5e36: 4829 ldr r0, [pc, #164] ; (5edc ) + 5e38: f026 fbfa bl 2c630 + 5e3c: 4820 ldr r0, [pc, #128] ; (5ec0 ) + 5e3e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5e42: f024 b88d b.w 29f60 + 5e46: 211a movs r1, #26 + 5e48: 4825 ldr r0, [pc, #148] ; (5ee0 ) + 5e4a: f026 fbf1 bl 2c630 + 5e4e: 481c ldr r0, [pc, #112] ; (5ec0 ) + 5e50: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5e54: f024 b884 b.w 29f60 + 5e58: 2119 movs r1, #25 + 5e5a: 4822 ldr r0, [pc, #136] ; (5ee4 ) + 5e5c: f026 fbe8 bl 2c630 + 5e60: 4817 ldr r0, [pc, #92] ; (5ec0 ) + 5e62: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5e66: f024 b87b b.w 29f60 + 5e6a: 2121 movs r1, #33 ; 0x21 + 5e6c: 481e ldr r0, [pc, #120] ; (5ee8 ) + 5e6e: f026 fbdf bl 2c630 + 5e72: 4813 ldr r0, [pc, #76] ; (5ec0 ) + 5e74: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5e78: f024 b872 b.w 29f60 + 5e7c: 211f movs r1, #31 + 5e7e: 481b ldr r0, [pc, #108] ; (5eec ) + 5e80: f026 fbd6 bl 2c630 + 5e84: 480e ldr r0, [pc, #56] ; (5ec0 ) + 5e86: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5e8a: f024 b869 b.w 29f60 + 5e8e: 211e movs r1, #30 + 5e90: 4817 ldr r0, [pc, #92] ; (5ef0 ) + 5e92: f026 fbcd bl 2c630 + 5e96: 480a ldr r0, [pc, #40] ; (5ec0 ) + 5e98: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5e9c: f024 b860 b.w 29f60 + 5ea0: 2100 movs r1, #0 + 5ea2: 4814 ldr r0, [pc, #80] ; (5ef4 ) + 5ea4: f026 fbc4 bl 2c630 + 5ea8: 4805 ldr r0, [pc, #20] ; (5ec0 ) + 5eaa: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 5eae: f024 b857 b.w 29f60 + 5eb2: bf00 nop + 5eb4: 2000254c .word 0x2000254c + 5eb8: 20002554 .word 0x20002554 + 5ebc: 200023ec .word 0x200023ec + 5ec0: 20004c68 .word 0x20004c68 + 5ec4: 20002644 .word 0x20002644 + 5ec8: 200025a0 .word 0x200025a0 + 5ecc: 20002564 .word 0x20002564 + 5ed0: 20002578 .word 0x20002578 + 5ed4: 20002580 .word 0x20002580 + 5ed8: 20002590 .word 0x20002590 + 5edc: 2000259c .word 0x2000259c + 5ee0: 200025a8 .word 0x200025a8 + 5ee4: 200025c4 .word 0x200025c4 + 5ee8: 200025e0 .word 0x200025e0 + 5eec: 20002604 .word 0x20002604 + 5ef0: 20002624 .word 0x20002624 + 5ef4: 20003d18 .word 0x20003d18 + +00005ef8 : void saveGlobalAndReloadData(){ - 5e70: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 5e74: 4605 mov r5, r0 - 5e76: b085 sub sp, #20 + 5ef8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 5efc: 4605 mov r5, r0 + 5efe: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 5e78: f014 fcb2 bl 1a7e0 - 5e7c: 4607 mov r7, r0 - 5e7e: 68eb ldr r3, [r5, #12] + 5f00: f014 fcde bl 1a8c0 + 5f04: 4607 mov r7, r0 + 5f06: 68eb ldr r3, [r5, #12] storage.set(address, store.global); - 5e80: 682e ldr r6, [r5, #0] - 5e82: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 5e86: f106 0a04 add.w sl, r6, #4 + 5f08: 682e ldr r6, [r5, #0] + 5f0a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 5f0e: f106 0a04 add.w sl, r6, #4 elapsedMillis extEepromTimer; #endif #if defined(BMC_DEBUG) unsigned long debugTimer = 0; void debugStartTiming(const char * str){ if(!globals.getStorageDebug()){ - 5e8a: 07d9 lsls r1, r3, #31 - 5e8c: 4654 mov r4, sl - 5e8e: d521 bpl.n 5ed4 - 5e90: 2100 movs r1, #0 - 5e92: 4865 ldr r0, [pc, #404] ; (6028 ) - 5e94: f026 fb58 bl 2c548 - 5e98: 4864 ldr r0, [pc, #400] ; (602c ) - 5e9a: f023 ffeb bl 29e74 - 5e9e: 2103 movs r1, #3 - 5ea0: 4863 ldr r0, [pc, #396] ; (6030 ) - 5ea2: f026 fb51 bl 2c548 - 5ea6: 2101 movs r1, #1 - 5ea8: 4862 ldr r0, [pc, #392] ; (6034 ) - 5eaa: f026 fb4d bl 2c548 - 5eae: 2108 movs r1, #8 - 5eb0: 4861 ldr r0, [pc, #388] ; (6038 ) - 5eb2: f026 fb49 bl 2c548 - 5eb6: 2101 movs r1, #1 - 5eb8: 485e ldr r0, [pc, #376] ; (6034 ) - 5eba: f026 fb45 bl 2c548 - 5ebe: 2108 movs r1, #8 - 5ec0: 485e ldr r0, [pc, #376] ; (603c ) - 5ec2: f026 fb41 bl 2c548 - 5ec6: 2101 movs r1, #1 - 5ec8: 485a ldr r0, [pc, #360] ; (6034 ) - 5eca: f026 fb3d bl 2c548 + 5f12: 07d9 lsls r1, r3, #31 + 5f14: 4654 mov r4, sl + 5f16: d521 bpl.n 5f5c + 5f18: 2100 movs r1, #0 + 5f1a: 4865 ldr r0, [pc, #404] ; (60b0 ) + 5f1c: f026 fb88 bl 2c630 + 5f20: 4864 ldr r0, [pc, #400] ; (60b4 ) + 5f22: f024 f81d bl 29f60 + 5f26: 2103 movs r1, #3 + 5f28: 4863 ldr r0, [pc, #396] ; (60b8 ) + 5f2a: f026 fb81 bl 2c630 + 5f2e: 2101 movs r1, #1 + 5f30: 4862 ldr r0, [pc, #392] ; (60bc ) + 5f32: f026 fb7d bl 2c630 + 5f36: 2108 movs r1, #8 + 5f38: 4861 ldr r0, [pc, #388] ; (60c0 ) + 5f3a: f026 fb79 bl 2c630 + 5f3e: 2101 movs r1, #1 + 5f40: 485e ldr r0, [pc, #376] ; (60bc ) + 5f42: f026 fb75 bl 2c630 + 5f46: 2108 movs r1, #8 + 5f48: 485e ldr r0, [pc, #376] ; (60c4 ) + 5f4a: f026 fb71 bl 2c630 + 5f4e: 2101 movs r1, #1 + 5f50: 485a ldr r0, [pc, #360] ; (60bc ) + 5f52: f026 fb6d bl 2c630 return; } BMC_PRINTLN(""); BMC_PRINT("***",str,"Store..."); debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 5ece: f024 fb51 bl 2a574 - 5ed2: 62a8 str r0, [r5, #40] ; 0x28 - 5ed4: f06f 0803 mvn.w r8, #3 - 5ed8: b2bf uxth r7, r7 + 5f56: f024 fb81 bl 2a65c + 5f5a: 62a8 str r0, [r5, #40] ; 0x28 + 5f5c: f06f 0803 mvn.w r8, #3 + 5f60: b2bf uxth r7, r7 unsigned long n = sizeof(value)+start; - 5eda: f241 595c movw r9, #5468 ; 0x155c - 5ede: 210e movs r1, #14 - 5ee0: eba8 0806 sub.w r8, r8, r6 - 5ee4: 4856 ldr r0, [pc, #344] ; (6040 ) - 5ee6: f026 fb2f bl 2c548 - 5eea: 4e56 ldr r6, [pc, #344] ; (6044 ) - 5eec: eb07 0309 add.w r3, r7, r9 - 5ef0: 44b8 add r8, r7 - 5ef2: 3701 adds r7, #1 + 5f62: f241 595c movw r9, #5468 ; 0x155c + 5f66: 210e movs r1, #14 + 5f68: eba8 0806 sub.w r8, r8, r6 + 5f6c: 4856 ldr r0, [pc, #344] ; (60c8 ) + 5f6e: f026 fb5f bl 2c630 + 5f72: 4e56 ldr r6, [pc, #344] ; (60cc ) + 5f74: eb07 0309 add.w r3, r7, r9 + 5f78: 44b8 add r8, r7 + 5f7a: 3701 adds r7, #1 unsigned long updatedBytes = 0; - 5ef4: f04f 0b00 mov.w fp, #0 - 5ef8: 42bb cmp r3, r7 - 5efa: bf38 it cc - 5efc: f04f 0901 movcc.w r9, #1 - 5f00: 6833 ldr r3, [r6, #0] + 5f7c: f04f 0b00 mov.w fp, #0 + 5f80: 42bb cmp r3, r7 + 5f82: bf38 it cc + 5f84: f04f 0901 movcc.w r9, #1 + 5f88: 6833 ldr r3, [r6, #0] STORAGE.put(address,file); - 5f02: f105 0710 add.w r7, r5, #16 - 5f06: 622b str r3, [r5, #32] - 5f08: e008 b.n 5f1c - 5f0a: 6833 ldr r3, [r6, #0] + 5f8a: f105 0710 add.w r7, r5, #16 + 5f8e: 622b str r3, [r5, #32] + 5f90: e008 b.n 5fa4 + 5f92: 6833 ldr r3, [r6, #0] operator unsigned long () const { return millis() - ms; } - 5f0c: 6a2a ldr r2, [r5, #32] - 5f0e: 1a9b subs r3, r3, r2 + 5f94: 6a2a ldr r2, [r5, #32] + 5f96: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 5f10: 2bf9 cmp r3, #249 ; 0xf9 - 5f12: d81f bhi.n 5f54 + 5f98: 2bf9 cmp r3, #249 ; 0xf9 + 5f9a: d81f bhi.n 5fdc for(i=start;i - 5f1c: eb04 0108 add.w r1, r4, r8 + 5f9c: eb0a 0309 add.w r3, sl, r9 + 5fa0: 429c cmp r4, r3 + 5fa2: d025 beq.n 5ff0 + 5fa4: eb04 0108 add.w r1, r4, r8 updatedBytes += update(i,*p++); - 5f20: f814 3b01 ldrb.w r3, [r4], #1 + 5fa8: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 5f24: 4638 mov r0, r7 - 5f26: 9101 str r1, [sp, #4] - 5f28: f88d 300f strb.w r3, [sp, #15] - 5f2c: f01f f90e bl 2514c - 5f30: f89d 300f ldrb.w r3, [sp, #15] - 5f34: 9901 ldr r1, [sp, #4] - 5f36: 4298 cmp r0, r3 - 5f38: d0e7 beq.n 5f0a + 5fac: 4638 mov r0, r7 + 5fae: 9101 str r1, [sp, #4] + 5fb0: f88d 300f strb.w r3, [sp, #15] + 5fb4: f01f f940 bl 25238 + 5fb8: f89d 300f ldrb.w r3, [sp, #15] + 5fbc: 9901 ldr r1, [sp, #4] + 5fbe: 4298 cmp r0, r3 + 5fc0: d0e7 beq.n 5f92 write(addr, &value, 1); - 5f3a: 2301 movs r3, #1 - 5f3c: f10d 020f add.w r2, sp, #15 - 5f40: 4638 mov r0, r7 + 5fc2: 2301 movs r3, #1 + 5fc4: f10d 020f add.w r2, sp, #15 + 5fc8: 4638 mov r0, r7 updatedBytes += update(i,*p++); - 5f42: f10b 0b01 add.w fp, fp, #1 + 5fca: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 5f46: f01e fff7 bl 24f38 - 5f4a: 6833 ldr r3, [r6, #0] - 5f4c: 6a2a ldr r2, [r5, #32] - 5f4e: 1a9b subs r3, r3, r2 + 5fce: f01f f829 bl 25024 + 5fd2: 6833 ldr r3, [r6, #0] + 5fd4: 6a2a ldr r2, [r5, #32] + 5fd6: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 5f50: 2bf9 cmp r3, #249 ; 0xf9 - 5f52: d9df bls.n 5f14 - 5f54: 2101 movs r1, #1 - 5f56: 483c ldr r0, [pc, #240] ; (6048 ) - 5f58: f026 faf6 bl 2c548 - 5f5c: 6833 ldr r3, [r6, #0] + 5fd8: 2bf9 cmp r3, #249 ; 0xf9 + 5fda: d9df bls.n 5f9c + 5fdc: 2101 movs r1, #1 + 5fde: 483c ldr r0, [pc, #240] ; (60d0 ) + 5fe0: f026 fb26 bl 2c630 + 5fe4: 6833 ldr r3, [r6, #0] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 5f5e: 622b str r3, [r5, #32] + 5fe6: 622b str r3, [r5, #32] for(i=start;i - 5f68: 2101 movs r1, #1 - 5f6a: 4837 ldr r0, [pc, #220] ; (6048 ) - 5f6c: f026 faec bl 2c548 - 5f70: 482e ldr r0, [pc, #184] ; (602c ) - 5f72: f023 ff7f bl 29e74 - 5f76: 2109 movs r1, #9 - 5f78: 4834 ldr r0, [pc, #208] ; (604c ) - 5f7a: f026 fae5 bl 2c548 - 5f7e: 2101 movs r1, #1 - 5f80: 482c ldr r0, [pc, #176] ; (6034 ) - 5f82: f026 fae1 bl 2c548 + 5fe8: eb0a 0309 add.w r3, sl, r9 + 5fec: 429c cmp r4, r3 + 5fee: d1d9 bne.n 5fa4 + 5ff0: 2101 movs r1, #1 + 5ff2: 4837 ldr r0, [pc, #220] ; (60d0 ) + 5ff4: f026 fb1c bl 2c630 + 5ff8: 482e ldr r0, [pc, #184] ; (60b4 ) + 5ffa: f023 ffb1 bl 29f60 + 5ffe: 2109 movs r1, #9 + 6000: 4834 ldr r0, [pc, #208] ; (60d4 ) + 6002: f026 fb15 bl 2c630 + 6006: 2101 movs r1, #1 + 6008: 482c ldr r0, [pc, #176] ; (60bc ) + 600a: f026 fb11 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 5f86: 2300 movs r3, #0 - 5f88: 220a movs r2, #10 - 5f8a: 4659 mov r1, fp - 5f8c: 4827 ldr r0, [pc, #156] ; (602c ) - 5f8e: f023 ff8d bl 29eac - 5f92: 2101 movs r1, #1 - 5f94: 4827 ldr r0, [pc, #156] ; (6034 ) - 5f96: f026 fad7 bl 2c548 - 5f9a: 2105 movs r1, #5 - 5f9c: 482c ldr r0, [pc, #176] ; (6050 ) - 5f9e: f026 fad3 bl 2c548 + 600e: 2300 movs r3, #0 + 6010: 220a movs r2, #10 + 6012: 4659 mov r1, fp + 6014: 4827 ldr r0, [pc, #156] ; (60b4 ) + 6016: f023 ffbf bl 29f98 + 601a: 2101 movs r1, #1 + 601c: 4827 ldr r0, [pc, #156] ; (60bc ) + 601e: f026 fb07 bl 2c630 + 6022: 2105 movs r1, #5 + 6024: 482c ldr r0, [pc, #176] ; (60d8 ) + 6026: f026 fb03 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 5fa2: 4822 ldr r0, [pc, #136] ; (602c ) - 5fa4: f023 ff66 bl 29e74 - 5fa8: 68eb ldr r3, [r5, #12] - 5faa: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 602a: 4822 ldr r0, [pc, #136] ; (60b4 ) + 602c: f023 ff98 bl 29f60 + 6030: 68eb ldr r3, [r5, #12] + 6032: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 } void debugStopTiming(){ if(!globals.getStorageDebug()){ - 5fae: 07da lsls r2, r3, #31 - 5fb0: d529 bpl.n 6006 - 5fb2: 2104 movs r1, #4 - 5fb4: 4827 ldr r0, [pc, #156] ; (6054 ) - 5fb6: f026 fac7 bl 2c548 - 5fba: 2101 movs r1, #1 - 5fbc: 481d ldr r0, [pc, #116] ; (6034 ) - 5fbe: f026 fac3 bl 2c548 + 6036: 07da lsls r2, r3, #31 + 6038: d529 bpl.n 608e + 603a: 2104 movs r1, #4 + 603c: 4827 ldr r0, [pc, #156] ; (60dc ) + 603e: f026 faf7 bl 2c630 + 6042: 2101 movs r1, #1 + 6044: 481d ldr r0, [pc, #116] ; (60bc ) + 6046: f026 faf3 bl 2c630 return; } BMC_PRINTLN("took",((BMC_STORAGE_DEBUG_TIME_T()-debugTimer)/1000.0),"milliseconds"); - 5fc2: f024 fad7 bl 2a574 - 5fc6: 6aab ldr r3, [r5, #40] ; 0x28 + 604a: f024 fb07 bl 2a65c + 604e: 6aab ldr r3, [r5, #40] ; 0x28 size_t print(double n, int digits = 2) { return printFloat(n, digits); } - 5fc8: 2102 movs r1, #2 - 5fca: 1ac3 subs r3, r0, r3 - 5fcc: 4817 ldr r0, [pc, #92] ; (602c ) - 5fce: ee07 3a10 vmov s14, r3 - 5fd2: ed9f 0b13 vldr d0, [pc, #76] ; 6020 - 5fd6: eeb8 7b47 vcvt.f64.u32 d7, s14 - 5fda: ee87 0b00 vdiv.f64 d0, d7, d0 - 5fde: f023 ff7b bl 29ed8 - 5fe2: 2101 movs r1, #1 - 5fe4: 4813 ldr r0, [pc, #76] ; (6034 ) - 5fe6: f026 faaf bl 2c548 - 5fea: 210c movs r1, #12 - 5fec: 481a ldr r0, [pc, #104] ; (6058 ) - 5fee: f026 faab bl 2c548 + 6050: 2102 movs r1, #2 + 6052: 1ac3 subs r3, r0, r3 + 6054: 4817 ldr r0, [pc, #92] ; (60b4 ) + 6056: ee07 3a10 vmov s14, r3 + 605a: ed9f 0b13 vldr d0, [pc, #76] ; 60a8 + 605e: eeb8 7b47 vcvt.f64.u32 d7, s14 + 6062: ee87 0b00 vdiv.f64 d0, d7, d0 + 6066: f023 ffab bl 29fc0 + 606a: 2101 movs r1, #1 + 606c: 4813 ldr r0, [pc, #76] ; (60bc ) + 606e: f026 fadf bl 2c630 + 6072: 210c movs r1, #12 + 6074: 481a ldr r0, [pc, #104] ; (60e0 ) + 6076: f026 fadb bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 5ff2: 480e ldr r0, [pc, #56] ; (602c ) - 5ff4: f023 ff3e bl 29e74 - 5ff8: 2100 movs r1, #0 - 5ffa: 480b ldr r0, [pc, #44] ; (6028 ) - 5ffc: f026 faa4 bl 2c548 - 6000: 480a ldr r0, [pc, #40] ; (602c ) - 6002: f023 ff37 bl 29e74 + 607a: 480e ldr r0, [pc, #56] ; (60b4 ) + 607c: f023 ff70 bl 29f60 + 6080: 2100 movs r1, #0 + 6082: 480b ldr r0, [pc, #44] ; (60b0 ) + 6084: f026 fad4 bl 2c630 + 6088: 480a ldr r0, [pc, #40] ; (60b4 ) + 608a: f023 ff69 bl 29f60 if(midi.globals.editorConnected()){ - 6006: 686b ldr r3, [r5, #4] - 6008: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 600c: 6ddb ldr r3, [r3, #92] ; 0x5c - 600e: 075b lsls r3, r3, #29 - 6010: d503 bpl.n 601a + 608e: 686b ldr r3, [r5, #4] + 6090: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 6094: 6ddb ldr r3, [r3, #92] ; 0x5c + 6096: 075b lsls r3, r3, #29 + 6098: d503 bpl.n 60a2 bitSet(flags, bit); - 6012: 6b2b ldr r3, [r5, #48] ; 0x30 - 6014: f043 0304 orr.w r3, r3, #4 - 6018: 632b str r3, [r5, #48] ; 0x30 - } - 601a: b005 add sp, #20 - 601c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 6020: 00000000 .word 0x00000000 - 6024: 408f4000 .word 0x408f4000 - 6028: 20003c58 .word 0x20003c58 - 602c: 20004ba8 .word 0x20004ba8 - 6030: 200036c8 .word 0x200036c8 - 6034: 200023ec .word 0x200023ec - 6038: 20003e04 .word 0x20003e04 - 603c: 20003e10 .word 0x20003e10 - 6040: 20003e1c .word 0x20003e1c - 6044: 2000bae8 .word 0x2000bae8 - 6048: 200030b8 .word 0x200030b8 - 604c: 20003e2c .word 0x20003e2c - 6050: 20002448 .word 0x20002448 - 6054: 20003e38 .word 0x20003e38 - 6058: 20003e40 .word 0x20003e40 - -0000605c : + 609a: 6b2b ldr r3, [r5, #48] ; 0x30 + 609c: f043 0304 orr.w r3, r3, #4 + 60a0: 632b str r3, [r5, #48] ; 0x30 + } + 60a2: b005 add sp, #20 + 60a4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 60a8: 00000000 .word 0x00000000 + 60ac: 408f4000 .word 0x408f4000 + 60b0: 20003d18 .word 0x20003d18 + 60b4: 20004c68 .word 0x20004c68 + 60b8: 20003788 .word 0x20003788 + 60bc: 200023ec .word 0x200023ec + 60c0: 20003ec4 .word 0x20003ec4 + 60c4: 20003ed0 .word 0x20003ed0 + 60c8: 20003edc .word 0x20003edc + 60cc: 2000bb08 .word 0x2000bb08 + 60d0: 20003150 .word 0x20003150 + 60d4: 20003eec .word 0x20003eec + 60d8: 20002448 .word 0x20002448 + 60dc: 20003ef8 .word 0x20003ef8 + 60e0: 20003f00 .word 0x20003f00 + +000060e4 : #endif #if defined(BMC_USE_FAS) #if defined(BMC_USE_FAS3) fas.setMidiChannel(midi.globals.settings.getFas3MidiChannel()+1); - 605c: 6802 ldr r2, [r0, #0] - 605e: f8d2 3108 ldr.w r3, [r2, #264] ; 0x108 + 60e4: 6802 ldr r2, [r0, #0] + 60e6: f8d2 3108 ldr.w r3, [r2, #264] ; 0x108 return (settings.data[2]>>13) & 0x0F; - 6062: 685b ldr r3, [r3, #4] - 6064: 681b ldr r3, [r3, #0] - 6066: 68db ldr r3, [r3, #12] - 6068: f3c3 3343 ubfx r3, r3, #13, #4 - 606c: 3301 adds r3, #1 + 60ea: 685b ldr r3, [r3, #4] + 60ec: 681b ldr r3, [r3, #0] + 60ee: 68db ldr r3, [r3, #12] + 60f0: f3c3 3343 ubfx r3, r3, #13, #4 + 60f4: 3301 adds r3, #1 channel = t_value; - 606e: f880 3152 strb.w r3, [r0, #338] ; 0x152 + 60f6: f880 3152 strb.w r3, [r0, #338] ; 0x152 #endif #endif #if defined(BMC_USE_HELIX) helix.setDeviceId(midi.globals.settings.getHelixId()); - 6072: f8d2 3108 ldr.w r3, [r2, #264] ; 0x108 + 60fa: f8d2 3108 ldr.w r3, [r2, #264] ; 0x108 return (settings.data[1]>>2) & 0x0F; - 6076: 685b ldr r3, [r3, #4] - 6078: 681b ldr r3, [r3, #0] - 607a: 689b ldr r3, [r3, #8] - 607c: f3c3 0183 ubfx r1, r3, #2, #4 + 60fe: 685b ldr r3, [r3, #4] + 6100: 681b ldr r3, [r3, #0] + 6102: 689b ldr r3, [r3, #8] + 6104: f3c3 0183 ubfx r1, r3, #2, #4 switch(value & 0x0F){ - 6080: 2902 cmp r1, #2 - 6082: d806 bhi.n 6092 + 6108: 2902 cmp r1, #2 + 610a: d806 bhi.n 611a id = value; - 6084: f880 1568 strb.w r1, [r0, #1384] ; 0x568 + 610c: f880 1568 strb.w r1, [r0, #1384] ; 0x568 helix.setChannel(midi.globals.settings.getHelixChannel()+1); - 6088: f8d2 3108 ldr.w r3, [r2, #264] ; 0x108 + 6110: f8d2 3108 ldr.w r3, [r2, #264] ; 0x108 return (settings.data[1]>>6) & 0x0F; - 608c: 685b ldr r3, [r3, #4] - 608e: 681b ldr r3, [r3, #0] - 6090: 689b ldr r3, [r3, #8] + 6114: 685b ldr r3, [r3, #4] + 6116: 681b ldr r3, [r3, #0] + 6118: 689b ldr r3, [r3, #8] port = bitWrite(x,value,1); - 6092: 2101 movs r1, #1 - 6094: f3c3 1383 ubfx r3, r3, #6, #4 - 6098: 440b add r3, r1 + 611a: 2101 movs r1, #1 + 611c: f3c3 1383 ubfx r3, r3, #6, #4 + 6120: 440b add r3, r1 channel = value; - 609a: f880 3569 strb.w r3, [r0, #1385] ; 0x569 + 6122: f880 3569 strb.w r3, [r0, #1385] ; 0x569 helix.setPortBit(midi.globals.settings.getHelixPort()); - 609e: f8d2 3108 ldr.w r3, [r2, #264] ; 0x108 + 6126: f8d2 3108 ldr.w r3, [r2, #264] ; 0x108 return (settings.data[1]>>10) & 0x0F; - 60a2: 685b ldr r3, [r3, #4] - 60a4: 681b ldr r3, [r3, #0] - 60a6: 689b ldr r3, [r3, #8] + 612a: 685b ldr r3, [r3, #4] + 612c: 681b ldr r3, [r3, #0] + 612e: 689b ldr r3, [r3, #8] port = bitWrite(x,value,1); - 60a8: f3c3 2383 ubfx r3, r3, #10, #4 - 60ac: fa01 f303 lsl.w r3, r1, r3 - 60b0: f880 356a strb.w r3, [r0, #1386] ; 0x56a + 6130: f3c3 2383 ubfx r3, r3, #10, #4 + 6134: fa01 f303 lsl.w r3, r1, r3 + 6138: f880 356a strb.w r3, [r0, #1386] ; 0x56a #endif #if defined(BMC_USE_BEATBUDDY) beatBuddy.enableSync(midi.globals.settings.getBeatBuddySync()); - 60b4: f8d2 3108 ldr.w r3, [r2, #264] ; 0x108 + 613c: f8d2 3108 ldr.w r3, [r2, #264] ; 0x108 return bitRead(settings.flags, bit); - 60b8: 685b ldr r3, [r3, #4] - 60ba: 681b ldr r3, [r3, #0] - 60bc: 681b ldr r3, [r3, #0] + 6140: 685b ldr r3, [r3, #4] + 6142: 681b ldr r3, [r3, #0] + 6144: 681b ldr r3, [r3, #0] bitWrite(flags, bit, value); - 60be: f013 0f10 tst.w r3, #16 - 60c2: f890 357d ldrb.w r3, [r0, #1405] ; 0x57d - 60c6: bf14 ite ne - 60c8: 430b orrne r3, r1 - 60ca: f003 03fe andeq.w r3, r3, #254 ; 0xfe - 60ce: f880 357d strb.w r3, [r0, #1405] ; 0x57d + 6146: f013 0f10 tst.w r3, #16 + 614a: f890 357d ldrb.w r3, [r0, #1405] ; 0x57d + 614e: bf14 ite ne + 6150: 430b orrne r3, r1 + 6152: f003 03fe andeq.w r3, r3, #254 ; 0xfe + 6156: f880 357d strb.w r3, [r0, #1405] ; 0x57d if(!isSyncEnabled()){ - 60d2: f013 0301 ands.w r3, r3, #1 - 60d6: d017 beq.n 6108 + 615a: f013 0301 ands.w r3, r3, #1 + 615e: d017 beq.n 6190 beatBuddy.setChannel(midi.globals.settings.getBeatBuddyChannel()+1); - 60d8: f8d2 1108 ldr.w r1, [r2, #264] ; 0x108 + 6160: f8d2 1108 ldr.w r1, [r2, #264] ; 0x108 void setPort(uint8_t value){ port = isSyncEnabled() ? value : BMC_NONE; } void setPortBit(uint8_t value){ uint8_t x = 0; port = isSyncEnabled() ? bitWrite(x,value,1) : BMC_NONE; - 60dc: 2301 movs r3, #1 + 6164: 2301 movs r3, #1 return (settings.data[1]>>16) & 0x0F; - 60de: 6849 ldr r1, [r1, #4] - 60e0: 6809 ldr r1, [r1, #0] - 60e2: 8949 ldrh r1, [r1, #10] - 60e4: f001 010f and.w r1, r1, #15 - 60e8: 4419 add r1, r3 + 6166: 6849 ldr r1, [r1, #4] + 6168: 6809 ldr r1, [r1, #0] + 616a: 8949 ldrh r1, [r1, #10] + 616c: f001 010f and.w r1, r1, #15 + 6170: 4419 add r1, r3 channel = isSyncEnabled() ? value : BMC_NONE; - 60ea: f880 1588 strb.w r1, [r0, #1416] ; 0x588 + 6172: f880 1588 strb.w r1, [r0, #1416] ; 0x588 beatBuddy.setPortBit(midi.globals.settings.getBeatBuddyPort()); - 60ee: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 6176: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 return (settings.data[1]>>20) & 0x0F; - 60f2: 6852 ldr r2, [r2, #4] - 60f4: 6812 ldr r2, [r2, #0] - 60f6: 6892 ldr r2, [r2, #8] + 617a: 6852 ldr r2, [r2, #4] + 617c: 6812 ldr r2, [r2, #0] + 617e: 6892 ldr r2, [r2, #8] port = isSyncEnabled() ? bitWrite(x,value,1) : BMC_NONE; - 60f8: f3c2 5203 ubfx r2, r2, #20, #4 - 60fc: fa03 f202 lsl.w r2, r3, r2 - 6100: b2d2 uxtb r2, r2 - 6102: f880 2589 strb.w r2, [r0, #1417] ; 0x589 + 6180: f3c2 5203 ubfx r2, r2, #20, #4 + 6184: fa03 f202 lsl.w r2, r3, r2 + 6188: b2d2 uxtb r2, r2 + 618a: f880 2589 strb.w r2, [r0, #1417] ; 0x589 #endif #if defined(BMC_USE_KEMPER) #endif } - 6106: 4770 bx lr - 6108: 461a mov r2, r3 + 618e: 4770 bx lr + 6190: 461a mov r2, r3 flags = 0; - 610a: f880 357d strb.w r3, [r0, #1405] ; 0x57d + 6192: f880 357d strb.w r3, [r0, #1405] ; 0x57d void reset(){ bool s = isSyncEnabled(); flags.reset(); flags.write(BMC_BEATBUDDY_FLAG_SYNC_ENABLED, s); beatLocation = 0; songPart = 0; - 610e: f8a0 358a strh.w r3, [r0, #1418] ; 0x58a - 6112: f8c0 3584 str.w r3, [r0, #1412] ; 0x584 + 6196: f8a0 358a strh.w r3, [r0, #1418] ; 0x58a + 619a: f8c0 3584 str.w r3, [r0, #1412] ; 0x584 numerator = 0; - 6116: f880 3578 strb.w r3, [r0, #1400] ; 0x578 + 619e: f880 3578 strb.w r3, [r0, #1400] ; 0x578 denominator = 0; - 611a: f880 3579 strb.w r3, [r0, #1401] ; 0x579 + 61a2: f880 3579 strb.w r3, [r0, #1401] ; 0x579 metClocks = 0; - 611e: f880 357a strb.w r3, [r0, #1402] ; 0x57a + 61a6: f880 357a strb.w r3, [r0, #1402] ; 0x57a notated32 = 0; - 6122: f880 357b strb.w r3, [r0, #1403] ; 0x57b + 61aa: f880 357b strb.w r3, [r0, #1403] ; 0x57b beat = 0; - 6126: f880 357c strb.w r3, [r0, #1404] ; 0x57c + 61ae: f880 357c strb.w r3, [r0, #1404] ; 0x57c channel = isSyncEnabled() ? value : BMC_NONE; - 612a: f880 3588 strb.w r3, [r0, #1416] ; 0x588 + 61b2: f880 3588 strb.w r3, [r0, #1416] ; 0x588 port = isSyncEnabled() ? bitWrite(x,value,1) : BMC_NONE; - 612e: f880 2589 strb.w r2, [r0, #1417] ; 0x589 - 6132: 4770 bx lr + 61b6: f880 2589 strb.w r2, [r0, #1417] ; 0x589 + 61ba: 4770 bx lr -00006134 : +000061bc : display.closeBanner(); } #endif } } void BMC::assignStoreData(){ - 6134: b510 push {r4, lr} - 6136: 2116 movs r1, #22 - 6138: 4604 mov r4, r0 - 613a: 480d ldr r0, [pc, #52] ; (6170 ) - 613c: f026 fa04 bl 2c548 - 6140: 480c ldr r0, [pc, #48] ; (6174 ) - 6142: f023 fe97 bl 29e74 + 61bc: b510 push {r4, lr} + 61be: 2116 movs r1, #22 + 61c0: 4604 mov r4, r0 + 61c2: 480d ldr r0, [pc, #52] ; (61f8 ) + 61c4: f026 fa34 bl 2c630 + 61c8: 480c ldr r0, [pc, #48] ; (61fc ) + 61ca: f023 fec9 bl 29f60 // The editor has updated data in EEPROM so we need to update all Hardware and Settings BMC_PRINTLN("editor.readyToReload()"); setLayer(editor.getLayer(), true); - 6146: f642 409c movw r0, #11420 ; 0x2c9c - 614a: 4420 add r0, r4 - 614c: f014 fb3c bl 1a7c8 - 6150: 4601 mov r1, r0 - 6152: 4620 mov r0, r4 + 61ce: f642 40bc movw r0, #11452 ; 0x2cbc + 61d2: 4420 add r0, r4 + 61d4: f014 fb68 bl 1a8a8 + 61d8: 4601 mov r1, r0 + 61da: 4620 mov r0, r4 if(callback.storeUpdated){ - 6154: f504 5480 add.w r4, r4, #4096 ; 0x1000 + 61dc: f504 5480 add.w r4, r4, #4096 ; 0x1000 setLayer(editor.getLayer(), true); - 6158: 2300 movs r3, #0 - 615a: 2201 movs r2, #1 - 615c: f00e fff0 bl 15140 + 61e0: 2300 movs r3, #0 + 61e2: 2201 movs r2, #1 + 61e4: f00f f812 bl 1520c if(callback.storeUpdated){ - 6160: f8d4 3878 ldr.w r3, [r4, #2168] ; 0x878 - 6164: b113 cbz r3, 616c + 61e8: f8d4 3878 ldr.w r3, [r4, #2168] ; 0x878 + 61ec: b113 cbz r3, 61f4 callback.storeUpdated(); } } - 6166: e8bd 4010 ldmia.w sp!, {r4, lr} + 61ee: e8bd 4010 ldmia.w sp!, {r4, lr} callback.storeUpdated(); - 616a: 4718 bx r3 + 61f2: 4718 bx r3 } - 616c: bd10 pop {r4, pc} - 616e: bf00 nop - 6170: 200024f4 .word 0x200024f4 - 6174: 20004ba8 .word 0x20004ba8 + 61f4: bd10 pop {r4, pc} + 61f6: bf00 nop + 61f8: 200024f4 .word 0x200024f4 + 61fc: 20004c68 .word 0x20004c68 -00006178 : +00006200 : void BMC::assignSettings(){ - 6178: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 6200: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} return bitRead(settings.flags, bit); - 617c: f500 5480 add.w r4, r0, #4096 ; 0x1000 - 6180: 4607 mov r7, r0 - 6182: f8d4 27fc ldr.w r2, [r4, #2044] ; 0x7fc + 6204: f500 5480 add.w r4, r0, #4096 ; 0x1000 + 6208: 4607 mov r7, r0 + 620a: f8d4 27fc ldr.w r2, [r4, #2044] ; 0x7fc return bitRead(flags, bit); - 6186: f507 5640 add.w r6, r7, #12288 ; 0x3000 - 618a: 6813 ldr r3, [r2, #0] - 618c: f3c3 2300 ubfx r3, r3, #8, #1 + 620e: f507 5540 add.w r5, r7, #12288 ; 0x3000 + 6212: 6813 ldr r3, [r2, #0] + 6214: f3c3 2300 ubfx r3, r3, #8, #1 // Set the global settings globals.offset = settings.getDisplayOffset()?0:1; - 6190: f083 0301 eor.w r3, r3, #1 - 6194: f884 3808 strb.w r3, [r4, #2056] ; 0x808 - 6198: 6811 ldr r1, [r2, #0] - 619a: f896 3194 ldrb.w r3, [r6, #404] ; 0x194 - 619e: f3c1 0040 ubfx r0, r1, #1, #1 + 6218: f083 0301 eor.w r3, r3, #1 + 621c: f884 3808 strb.w r3, [r4, #2056] ; 0x808 + 6220: 6811 ldr r1, [r2, #0] + 6222: f895 31b4 ldrb.w r3, [r5, #436] ; 0x1b4 + 6226: f3c1 0040 ubfx r0, r1, #1, #1 if(isMaster()!=value){ - 61a2: f003 0501 and.w r5, r3, #1 - 61a6: 42a8 cmp r0, r5 - 61a8: d01a beq.n 61e0 + 622a: f003 0601 and.w r6, r3, #1 + 622e: 42b0 cmp r0, r6 + 6230: d01a beq.n 6268 bitWrite(flags, bit, value); - 61aa: 2800 cmp r0, #0 - 61ac: f040 80e5 bne.w 637a - 61b0: f003 03fe and.w r3, r3, #254 ; 0xfe + 6232: 2800 cmp r0, #0 + 6234: f040 80d8 bne.w 63e8 + 6238: f003 03fe and.w r3, r3, #254 ; 0xfe ticks = 0; - 61b4: 2000 movs r0, #0 + 623c: 2000 movs r0, #0 bpm = 0; - 61b6: f8d6 5188 ldr.w r5, [r6, #392] ; 0x188 - 61ba: f886 3194 strb.w r3, [r6, #404] ; 0x194 + 623e: f8d5 61a8 ldr.w r6, [r5, #424] ; 0x1a8 + 6242: f885 31b4 strb.w r3, [r5, #436] ; 0x1b4 ticks = 0; - 61be: f886 0184 strb.w r0, [r6, #388] ; 0x184 + 6246: f885 01a4 strb.w r0, [r5, #420] ; 0x1a4 bpm = 0; - 61c2: 8028 strh r0, [r5, #0] + 624a: 8030 strh r0, [r6, #0] interval = 0; - 61c4: f8c6 0190 str.w r0, [r6, #400] ; 0x190 + 624c: f8c5 01b0 str.w r0, [r5, #432] ; 0x1b0 if(isMaster() && bpmCalc.isValidBpm(tempo)){ - 61c8: 07d8 lsls r0, r3, #31 - 61ca: d509 bpl.n 61e0 - 61cc: 4bbb ldr r3, [pc, #748] ; (64bc ) - 61ce: 681b ldr r3, [r3, #0] + 6250: 07d8 lsls r0, r3, #31 + 6252: d509 bpl.n 6268 + 6254: 4bb4 ldr r3, [pc, #720] ; (6528 ) + 6256: 681b ldr r3, [r3, #0] prevTime = (unsigned long) _BMCTiming::get(); - 61d0: f8c6 31c8 str.w r3, [r6, #456] ; 0x1c8 + 6258: f8c5 31e8 str.w r3, [r5, #488] ; 0x1e8 tmpBpm = tempo; - 61d4: 2378 movs r3, #120 ; 0x78 - 61d6: f8a6 318c strh.w r3, [r6, #396] ; 0x18c + 625c: 2378 movs r3, #120 ; 0x78 + 625e: f8a5 31ac strh.w r3, [r5, #428] ; 0x1ac interval = value; - 61da: 2364 movs r3, #100 ; 0x64 - 61dc: f8a6 31c4 strh.w r3, [r6, #452] ; 0x1c4 + 6262: 2364 movs r3, #100 ; 0x64 + 6264: f8a5 31e4 strh.w r3, [r5, #484] ; 0x1e4 return (settings.data[0]>>7) & 0x7F; - 61e0: 6853 ldr r3, [r2, #4] - 61e2: f011 0f08 tst.w r1, #8 + 6268: 6853 ldr r3, [r2, #4] + 626a: f011 0f08 tst.w r1, #8 ports = value; - 61e6: f507 5500 add.w r5, r7, #8192 ; 0x2000 - 61ea: f3c3 10c6 ubfx r0, r3, #7, #7 + 626e: f507 5600 add.w r6, r7, #8192 ; 0x2000 + 6272: f3c3 10c6 ubfx r0, r3, #7, #7 return (settings.data[0]>>2) & 0x1F; - 61ee: f3c3 0384 ubfx r3, r3, #2, #5 - 61f2: f886 01e8 strb.w r0, [r6, #488] ; 0x1e8 + 6276: f3c3 0384 ubfx r3, r3, #2, #5 + 627a: f885 0208 strb.w r0, [r5, #520] ; 0x208 bitWrite(slaveClockPort, (t_port & 0x07), 1); - 61f6: f04f 0001 mov.w r0, #1 - 61fa: f894 1acc ldrb.w r1, [r4, #2764] ; 0xacc - 61fe: bf14 ite ne - 6200: f041 0101 orrne.w r1, r1, #1 - 6204: f001 01fe andeq.w r1, r1, #254 ; 0xfe - 6208: f884 1acc strb.w r1, [r4, #2764] ; 0xacc + 627e: f04f 0001 mov.w r0, #1 + 6282: f894 1acc ldrb.w r1, [r4, #2764] ; 0xacc + 6286: bf14 ite ne + 6288: f041 0101 orrne.w r1, r1, #1 + 628c: f001 01fe andeq.w r1, r1, #254 ; 0xfe + 6290: f884 1acc strb.w r1, [r4, #2764] ; 0xacc channel = t_value; - 620c: f504 5180 add.w r1, r4, #4096 ; 0x1000 - 6210: f881 32ef strb.w r3, [r1, #751] ; 0x2ef + 6294: f504 5180 add.w r1, r4, #4096 ; 0x1000 + 6298: f881 32ef strb.w r3, [r1, #751] ; 0x2ef return (settings.data[0]>>7) & 0x7F; - 6214: 6853 ldr r3, [r2, #4] - 6216: f3c3 1cc6 ubfx ip, r3, #7, #7 + 629c: 6853 ldr r3, [r2, #4] + 629e: f3c3 1cc6 ubfx ip, r3, #7, #7 bitWrite(slaveClockPort, (t_port & 0x07), 1); - 621a: f3c3 5382 ubfx r3, r3, #22, #3 - 621e: f885 c2ed strb.w ip, [r5, #749] ; 0x2ed - 6222: fa00 f303 lsl.w r3, r0, r3 - 6226: f891 c2ee ldrb.w ip, [r1, #750] ; 0x2ee - 622a: ea43 030c orr.w r3, r3, ip - 622e: f881 32ee strb.w r3, [r1, #750] ; 0x2ee + 62a2: f3c3 5382 ubfx r3, r3, #22, #3 + 62a6: f886 c2ed strb.w ip, [r6, #749] ; 0x2ed + 62aa: fa00 f303 lsl.w r3, r0, r3 + 62ae: f891 c2ee ldrb.w ip, [r1, #750] ; 0x2ee + 62b2: ea43 030c orr.w r3, r3, ip + 62b6: f881 32ee strb.w r3, [r1, #750] ; 0x2ee return (settings.data[0]>>25) & 0x07; - 6232: 6853 ldr r3, [r2, #4] + 62ba: 6853 ldr r3, [r2, #4] if(value==0){ - 6234: f013 6f60 tst.w r3, #234881024 ; 0xe000000 - 6238: f3c3 6142 ubfx r1, r3, #25, #3 - 623c: f000 81e5 beq.w 660a + 62bc: f013 6f60 tst.w r3, #234881024 ; 0xe000000 + 62c0: f3c3 6142 ubfx r1, r3, #25, #3 + 62c4: f000 81d7 beq.w 6676 bitWrite(chaingingPort, value, 1); - 6240: 4088 lsls r0, r1 - 6242: f885 0ce1 strb.w r0, [r5, #3297] ; 0xce1 + 62c8: 4088 lsls r0, r1 + 62ca: f886 0d01 strb.w r0, [r6, #3329] ; 0xd01 return bitRead(settings.data[2], 6); - 6246: 68d3 ldr r3, [r2, #12] - 6248: 211c movs r1, #28 - 624a: 489d ldr r0, [pc, #628] ; (64c0 ) - 624c: ea4f 1893 mov.w r8, r3, lsr #6 - 6250: f026 f97a bl 2c548 - 6254: 2101 movs r1, #1 + 62ce: 68d3 ldr r3, [r2, #12] + 62d0: 211c movs r1, #28 + 62d2: 4896 ldr r0, [pc, #600] ; (652c ) + 62d4: ea4f 1893 mov.w r8, r3, lsr #6 + 62d8: f026 f9aa bl 2c630 + 62dc: 2101 movs r1, #1 BMC_PRINTLN("BMC_SETLIST_FLAG_PART_RECALL", value) - 6256: f008 0801 and.w r8, r8, #1 - 625a: 489a ldr r0, [pc, #616] ; (64c4 ) - 625c: f026 f974 bl 2c548 + 62de: f008 0801 and.w r8, r8, #1 + 62e2: 4893 ldr r0, [pc, #588] ; (6530 ) + 62e4: f026 f9a4 bl 2c630 size_t print(int n) { return print((long)n); } - 6260: 4899 ldr r0, [pc, #612] ; (64c8 ) - 6262: 4641 mov r1, r8 - 6264: f023 fdfa bl 29e5c + 62e8: 4892 ldr r0, [pc, #584] ; (6534 ) + 62ea: 4641 mov r1, r8 + 62ec: f023 fe2c bl 29f48 size_t println(int n) { return print(n) + println(); } - 6268: 4897 ldr r0, [pc, #604] ; (64c8 ) - 626a: f023 fe03 bl 29e74 - 626e: f896 321c ldrb.w r3, [r6, #540] ; 0x21c - 6272: f1b8 0f00 cmp.w r8, #0 - 6276: d07d beq.n 6374 - 6278: f043 0308 orr.w r3, r3, #8 - 627c: f886 321c strb.w r3, [r6, #540] ; 0x21c + 62f0: 4890 ldr r0, [pc, #576] ; (6534 ) + 62f2: f023 fe35 bl 29f60 + 62f6: f895 323c ldrb.w r3, [r5, #572] ; 0x23c + 62fa: f1b8 0f00 cmp.w r8, #0 + 62fe: d070 beq.n 63e2 + 6300: f043 0308 orr.w r3, r3, #8 + 6304: f885 323c strb.w r3, [r5, #572] ; 0x23c return (output==0) ? 0 : (output-1); } return output; } void setOffset(bool t_value){ vtValue = 0; - 6280: 2200 movs r2, #0 + 6308: 2300 movs r3, #0 return bitRead(settings.flags, bit); - 6282: f8d4 37fc ldr.w r3, [r4, #2044] ; 0x7fc + 630a: f8d4 27fc ldr.w r2, [r4, #2044] ; 0x7fc midi.setRouting(BMC_BLE, settings.getBleRouting()); #endif #if defined(BMC_USE_SYNC) sync.assignSettings(); - 6286: f243 2020 movw r0, #12832 ; 0x3220 - 628a: 6819 ldr r1, [r3, #0] - 628c: 4438 add r0, r7 - 628e: f8a5 2c62 strh.w r2, [r5, #3170] ; 0xc62 + 630e: f507 5049 add.w r0, r7, #12864 ; 0x3240 + 6312: 6811 ldr r1, [r2, #0] + 6314: f8a6 3c82 strh.w r3, [r6, #3202] ; 0xc82 + 6318: 05c9 lsls r1, r1, #23 vtCount = 0; - 6292: f885 2c61 strb.w r2, [r5, #3169] ; 0xc61 - 6296: 05c9 lsls r1, r1, #23 - 6298: f895 2c60 ldrb.w r2, [r5, #3168] ; 0xc60 - 629c: bf4c ite mi - 629e: f042 0201 orrmi.w r2, r2, #1 - 62a2: f002 02fe andpl.w r2, r2, #254 ; 0xfe - 62a6: f885 2c60 strb.w r2, [r5, #3168] ; 0xc60 + 631a: f886 3c81 strb.w r3, [r6, #3201] ; 0xc81 + 631e: f896 3c80 ldrb.w r3, [r6, #3200] ; 0xc80 + 6322: bf4c ite mi + 6324: f043 0301 orrmi.w r3, r3, #1 + 6328: f003 03fe andpl.w r3, r3, #254 ; 0xfe + 632c: f886 3c80 strb.w r3, [r6, #3200] ; 0xc80 return settings.routing[0]; - 62aa: 8c9a ldrh r2, [r3, #36] ; 0x24 + 6330: 8c93 ldrh r3, [r2, #36] ; 0x24 destinations = t_data & 0x7F; - 62ac: f002 017f and.w r1, r2, #127 ; 0x7f - 62b0: f885 1c40 strb.w r1, [r5, #3136] ; 0xc40 + 6332: f003 017f and.w r1, r3, #127 ; 0x7f + 6336: f886 1c60 strb.w r1, [r6, #3168] ; 0xc60 filters = (t_data>>7) & 0x0F; - 62b4: f3c2 11c3 ubfx r1, r2, #7, #4 + 633a: f3c3 11c3 ubfx r1, r3, #7, #4 channel = (t_data>>11) & 0x1F; - 62b8: 0ad2 lsrs r2, r2, #11 + 633e: 0adb lsrs r3, r3, #11 filters = (t_data>>7) & 0x0F; - 62ba: f885 1c41 strb.w r1, [r5, #3137] ; 0xc41 + 6340: f886 1c61 strb.w r1, [r6, #3169] ; 0xc61 channel = (t_data>>11) & 0x1F; - 62be: f885 2c42 strb.w r2, [r5, #3138] ; 0xc42 + 6344: f886 3c62 strb.w r3, [r6, #3170] ; 0xc62 return settings.routing[1]; - 62c2: 8cda ldrh r2, [r3, #38] ; 0x26 - destinations = t_data & 0x7F; - 62c4: f002 017f and.w r1, r2, #127 ; 0x7f - 62c8: f885 1c43 strb.w r1, [r5, #3139] ; 0xc43 - filters = (t_data>>7) & 0x0F; - 62cc: f3c2 11c3 ubfx r1, r2, #7, #4 - channel = (t_data>>11) & 0x1F; - 62d0: 0ad2 lsrs r2, r2, #11 - filters = (t_data>>7) & 0x0F; - 62d2: f885 1c44 strb.w r1, [r5, #3140] ; 0xc44 - channel = (t_data>>11) & 0x1F; - 62d6: f885 2c45 strb.w r2, [r5, #3141] ; 0xc45 - return settings.routing[2]; - 62da: 8d1a ldrh r2, [r3, #40] ; 0x28 + 6348: 8cd3 ldrh r3, [r2, #38] ; 0x26 destinations = t_data & 0x7F; - 62dc: f002 017f and.w r1, r2, #127 ; 0x7f - 62e0: f885 1c46 strb.w r1, [r5, #3142] ; 0xc46 + 634a: f003 017f and.w r1, r3, #127 ; 0x7f + 634e: f886 1c63 strb.w r1, [r6, #3171] ; 0xc63 filters = (t_data>>7) & 0x0F; - 62e4: f3c2 11c3 ubfx r1, r2, #7, #4 + 6352: f3c3 11c3 ubfx r1, r3, #7, #4 channel = (t_data>>11) & 0x1F; - 62e8: 0ad2 lsrs r2, r2, #11 + 6356: 0adb lsrs r3, r3, #11 filters = (t_data>>7) & 0x0F; - 62ea: f885 1c47 strb.w r1, [r5, #3143] ; 0xc47 + 6358: f886 1c64 strb.w r1, [r6, #3172] ; 0xc64 channel = (t_data>>11) & 0x1F; - 62ee: f885 2c48 strb.w r2, [r5, #3144] ; 0xc48 + 635c: f886 3c65 strb.w r3, [r6, #3173] ; 0xc65 return settings.routing[5]; - 62f2: 8ddb ldrh r3, [r3, #46] ; 0x2e + 6360: 8dd3 ldrh r3, [r2, #46] ; 0x2e destinations = t_data & 0x7F; - 62f4: f003 027f and.w r2, r3, #127 ; 0x7f - 62f8: f885 2c4f strb.w r2, [r5, #3151] ; 0xc4f + 6362: f003 027f and.w r2, r3, #127 ; 0x7f + 6366: f886 2c6f strb.w r2, [r6, #3183] ; 0xc6f filters = (t_data>>7) & 0x0F; - 62fc: f3c3 12c3 ubfx r2, r3, #7, #4 + 636a: f3c3 12c3 ubfx r2, r3, #7, #4 channel = (t_data>>11) & 0x1F; - 6300: 0adb lsrs r3, r3, #11 + 636e: 0adb lsrs r3, r3, #11 filters = (t_data>>7) & 0x0F; - 6302: f885 2c50 strb.w r2, [r5, #3152] ; 0xc50 + 6370: f886 2c70 strb.w r2, [r6, #3184] ; 0xc70 channel = (t_data>>11) & 0x1F; - 6306: f885 3c51 strb.w r3, [r5, #3153] ; 0xc51 - 630a: f7ff fea7 bl 605c + 6374: f886 3c71 strb.w r3, [r6, #3185] ; 0xc71 + 6378: f7ff feb4 bl 60e4 if(bitRead(flags, bit)){ - 630e: f8d5 1ccc ldr.w r1, [r5, #3276] ; 0xccc - 6312: 060a lsls r2, r1, #24 - 6314: f100 80de bmi.w 64d4 - 6318: 05cb lsls r3, r1, #23 - 631a: f3c1 2800 ubfx r8, r1, #8, #1 - 631e: f100 8122 bmi.w 6566 - 6322: 0588 lsls r0, r1, #22 - 6324: d47f bmi.n 6426 - 6326: 054b lsls r3, r1, #21 - 6328: d42a bmi.n 6380 + 637c: f8d6 1cec ldr.w r1, [r6, #3308] ; 0xcec + 6380: 060a lsls r2, r1, #24 + 6382: f100 80dd bmi.w 6540 + 6386: 05cb lsls r3, r1, #23 + 6388: f3c1 2800 ubfx r8, r1, #8, #1 + 638c: f100 8121 bmi.w 65d2 + 6390: 0588 lsls r0, r1, #22 + 6392: d47f bmi.n 6494 + 6394: 054b lsls r3, r1, #21 + 6396: d42a bmi.n 63ee value[i] = ~value[i]; - 632a: f8b4 183a ldrh.w r1, [r4, #2106] ; 0x83a - 632e: f8b4 283e ldrh.w r2, [r4, #2110] ; 0x83e - 6332: f8b4 384a ldrh.w r3, [r4, #2122] ; 0x84a - 6336: 43c9 mvns r1, r1 - 6338: 43d2 mvns r2, r2 - 633a: f8b4 0846 ldrh.w r0, [r4, #2118] ; 0x846 - 633e: 43db mvns r3, r3 - 6340: f8a4 183a strh.w r1, [r4, #2106] ; 0x83a - 6344: f8a4 283e strh.w r2, [r4, #2110] ; 0x83e - 6348: 43c0 mvns r0, r0 - 634a: f8b4 184e ldrh.w r1, [r4, #2126] ; 0x84e - 634e: f8b4 2852 ldrh.w r2, [r4, #2130] ; 0x852 - 6352: f8a4 384a strh.w r3, [r4, #2122] ; 0x84a - 6356: 43c9 mvns r1, r1 - 6358: f8b4 3856 ldrh.w r3, [r4, #2134] ; 0x856 - 635c: 43d2 mvns r2, r2 - 635e: f8a4 0846 strh.w r0, [r4, #2118] ; 0x846 - 6362: 43db mvns r3, r3 - 6364: f8a4 184e strh.w r1, [r4, #2126] ; 0x84e - 6368: f8a4 2852 strh.w r2, [r4, #2130] ; 0x852 - 636c: f8a4 3856 strh.w r3, [r4, #2134] ; 0x856 + 6398: f8b4 183a ldrh.w r1, [r4, #2106] ; 0x83a + 639c: f8b4 283e ldrh.w r2, [r4, #2110] ; 0x83e + 63a0: f8b4 384a ldrh.w r3, [r4, #2122] ; 0x84a + 63a4: 43c9 mvns r1, r1 + 63a6: 43d2 mvns r2, r2 + 63a8: f8b4 0846 ldrh.w r0, [r4, #2118] ; 0x846 + 63ac: 43db mvns r3, r3 + 63ae: f8a4 183a strh.w r1, [r4, #2106] ; 0x83a + 63b2: f8a4 283e strh.w r2, [r4, #2110] ; 0x83e + 63b6: 43c0 mvns r0, r0 + 63b8: f8b4 184e ldrh.w r1, [r4, #2126] ; 0x84e + 63bc: f8b4 2852 ldrh.w r2, [r4, #2130] ; 0x852 + 63c0: f8a4 384a strh.w r3, [r4, #2122] ; 0x84a + 63c4: 43c9 mvns r1, r1 + 63c6: f8b4 3856 ldrh.w r3, [r4, #2134] ; 0x856 + 63ca: 43d2 mvns r2, r2 + 63cc: f8a4 0846 strh.w r0, [r4, #2118] ; 0x846 + 63d0: 43db mvns r3, r3 + 63d2: f8a4 184e strh.w r1, [r4, #2126] ; 0x84e + 63d6: f8a4 2852 strh.w r2, [r4, #2130] ; 0x852 + 63da: f8a4 3856 strh.w r3, [r4, #2134] ; 0x856 #endif #if BMC_MAX_AUX_JACKS > 0 globals.auxJackStates.clear(); #endif } - 6370: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 63de: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} bitWrite(flags, bit, value); - 6374: f003 03f7 and.w r3, r3, #247 ; 0xf7 + 63e2: f003 03f7 and.w r3, r3, #247 ; 0xf7 } - 6378: e780 b.n 627c + 63e6: e78d b.n 6304 bitWrite(flags, bit, value); - 637a: f043 0301 orr.w r3, r3, #1 - 637e: e719 b.n 61b4 + 63e8: f043 0301 orr.w r3, r3, #1 + 63ec: e726 b.n 623c bitClear(flags, bit); - 6380: f421 6180 bic.w r1, r1, #1024 ; 0x400 - 6384: f243 70e9 movw r0, #14313 ; 0x37e9 + 63ee: f421 6180 bic.w r1, r1, #1024 ; 0x400 + 63f2: f643 0009 movw r0, #14345 ; 0x3809 prevTime = 0; - 6388: f243 7cf4 movw ip, #14324 ; 0x37f4 + 63f6: f643 0c14 movw ip, #14356 ; 0x3814 } void buildListeners(){ flags.off(BMC_TIMED_EVENTS_FLAG_AVAILABLE); totalReadyTimedEvents = 0; - 638c: 2200 movs r2, #0 - 638e: f8c5 1ccc str.w r1, [r5, #3276] ; 0xccc + 63fa: 2200 movs r2, #0 + 63fc: f8c6 1cec str.w r1, [r6, #3308] ; 0xcec void off(uint8_t bit){ - 6392: 4438 add r0, r7 + 6400: 4438 add r0, r7 bitClear(flags, bit); - 6394: f896 37e8 ldrb.w r3, [r6, #2024] ; 0x7e8 - 6398: 44bc add ip, r7 + 6402: f895 3808 ldrb.w r3, [r5, #2056] ; 0x808 + 6406: 44bc add ip, r7 for(uint8_t i=0;i& device = midi.globals.store.global.timedEvents[i]; - 639a: 2101 movs r1, #1 - 639c: f8d6 77e4 ldr.w r7, [r6, #2020] ; 0x7e4 - 63a0: f023 0301 bic.w r3, r3, #1 + 6408: 2101 movs r1, #1 + 640a: f8d5 7804 ldr.w r7, [r5, #2052] ; 0x804 + 640e: f023 0301 bic.w r3, r3, #1 if(device.events[0]>0){ flags.on(BMC_TIMED_EVENTS_FLAG_AVAILABLE); totalReadyTimedEvents = i+1; // set the mode, single or loop uint8_t mode = (device.settings[1]>>2) & 0x03; - 63a4: f241 5e52 movw lr, #5458 ; 0x1552 + 6412: f241 5e52 movw lr, #5458 ; 0x1552 totalReadyTimedEvents = 0; - 63a8: f886 27ed strb.w r2, [r6, #2029] ; 0x7ed - 63ac: f886 37e8 strb.w r3, [r6, #2024] ; 0x7e8 + 6416: f885 280d strb.w r2, [r5, #2061] ; 0x80d + 641a: f885 3808 strb.w r3, [r5, #2056] ; 0x808 bmcStoreDevice <2, 1>& device = midi.globals.store.global.timedEvents[i]; - 63b0: f8d7 5108 ldr.w r5, [r7, #264] ; 0x108 + 641e: f8d7 6108 ldr.w r6, [r7, #264] ; 0x108 if(device.events[0]>0){ - 63b4: f202 5352 addw r3, r2, #1362 ; 0x552 + 6422: f202 5352 addw r3, r2, #1362 ; 0x552 bmcStoreDevice <2, 1>& device = midi.globals.store.global.timedEvents[i]; - 63b8: 682d ldr r5, [r5, #0] + 6426: 6836 ldr r6, [r6, #0] if(device.events[0]>0){ - 63ba: eb05 0383 add.w r3, r5, r3, lsl #2 - 63be: 7adb ldrb r3, [r3, #11] - 63c0: b9d3 cbnz r3, 63f8 - 63c2: f84c 3032 str.w r3, [ip, r2, lsl #3] + 6428: eb06 0383 add.w r3, r6, r3, lsl #2 + 642c: 7adb ldrb r3, [r3, #11] + 642e: b9d3 cbnz r3, 6466 + 6430: f84c 3032 str.w r3, [ip, r2, lsl #3] for(uint8_t i=0;i - 63d2: 2121 movs r1, #33 ; 0x21 - 63d4: 483d ldr r0, [pc, #244] ; (64cc ) - 63d6: f026 f8b7 bl 2c548 - 63da: 2101 movs r1, #1 - 63dc: 4839 ldr r0, [pc, #228] ; (64c4 ) - 63de: f026 f8b3 bl 2c548 + 6434: 3201 adds r2, #1 + 6436: 3101 adds r1, #1 + 6438: 3001 adds r0, #1 + 643a: 2a04 cmp r2, #4 + 643c: b2c9 uxtb r1, r1 + 643e: d1ee bne.n 641e + 6440: 2121 movs r1, #33 ; 0x21 + 6442: 483d ldr r0, [pc, #244] ; (6538 ) + 6444: f026 f8f4 bl 2c630 + 6448: 2101 movs r1, #1 + 644a: 4839 ldr r0, [pc, #228] ; (6530 ) + 644c: f026 f8f0 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 63e2: 2300 movs r3, #0 - 63e4: 220a movs r2, #10 - 63e6: f896 17ed ldrb.w r1, [r6, #2029] ; 0x7ed - 63ea: 4837 ldr r0, [pc, #220] ; (64c8 ) - 63ec: f023 fd5e bl 29eac + 6450: 2300 movs r3, #0 + 6452: 220a movs r2, #10 + 6454: f895 180d ldrb.w r1, [r5, #2061] ; 0x80d + 6458: 4836 ldr r0, [pc, #216] ; (6534 ) + 645a: f023 fd9d bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 63f0: 4835 ldr r0, [pc, #212] ; (64c8 ) - 63f2: f023 fd3f bl 29e74 - 63f6: e798 b.n 632a + 645e: 4835 ldr r0, [pc, #212] ; (6534 ) + 6460: f023 fd7e bl 29f60 + 6464: e798 b.n 6398 bitSet(flags, bit); - 63f8: f896 37e8 ldrb.w r3, [r6, #2024] ; 0x7e8 + 6466: f895 3808 ldrb.w r3, [r5, #2056] ; 0x808 uint8_t mode = (device.settings[1]>>2) & 0x03; - 63fc: eb05 0582 add.w r5, r5, r2, lsl #2 + 646a: eb06 0682 add.w r6, r6, r2, lsl #2 totalReadyTimedEvents = i+1; - 6400: f886 17ed strb.w r1, [r6, #2029] ; 0x7ed - 6404: f043 0301 orr.w r3, r3, #1 - 6408: f886 37e8 strb.w r3, [r6, #2024] ; 0x7e8 + 646e: f885 180d strb.w r1, [r5, #2061] ; 0x80d + 6472: f043 0301 orr.w r3, r3, #1 + 6476: f885 3808 strb.w r3, [r5, #2056] ; 0x808 uint8_t mode = (device.settings[1]>>2) & 0x03; - 640c: f815 300e ldrb.w r3, [r5, lr] + 647a: f816 300e ldrb.w r3, [r6, lr] bitWrite(flags, bit, value); - 6410: f3c3 0381 ubfx r3, r3, #2, #2 - 6414: 2b01 cmp r3, #1 - 6416: 7803 ldrb r3, [r0, #0] - 6418: bf0c ite eq - 641a: f043 0301 orreq.w r3, r3, #1 - 641e: f023 0301 bicne.w r3, r3, #1 - 6422: 7003 strb r3, [r0, #0] - } - 6424: e7cf b.n 63c6 + 647e: f3c3 0381 ubfx r3, r3, #2, #2 + 6482: 2b01 cmp r3, #1 + 6484: 7803 ldrb r3, [r0, #0] + 6486: bf0c ite eq + 6488: f043 0301 orreq.w r3, r3, #1 + 648c: f023 0301 bicne.w r3, r3, #1 + 6490: 7003 strb r3, [r0, #0] + } + 6492: e7cf b.n 6434 bitClear(flags, bit); - 6426: f421 7100 bic.w r1, r1, #512 ; 0x200 + 6494: f421 7100 bic.w r1, r1, #512 ; 0x200 void buildListeners(){ flags.off(BMC_TRIGGERS_FLAG_AVAILABLE); totalReadableTriggers = 0; activeList.zeroOut(); for(uint8_t i = 0 ; i < BMC_MAX_TRIGGERS ; i++){ bmcStoreDevice <1, 2>& device = midi.globals.store.global.triggers[i]; - 642a: f8d6 e7d4 ldr.w lr, [r6, #2004] ; 0x7d4 + 6498: f8d5 e7f4 ldr.w lr, [r5, #2036] ; 0x7f4 if(active(device.events[0]) && device.events[1] != 0){ - 642e: f241 583d movw r8, #5437 ; 0x153d - 6432: f8c5 1ccc str.w r1, [r5, #3276] ; 0xccc + 649c: f241 583d movw r8, #5437 ; 0x153d + 64a0: f8c6 1cec str.w r1, [r6, #3308] ; 0xcec bmcStoreDevice <1, 2>& device = midi.globals.store.global.triggers[i]; - 6436: 2101 movs r1, #1 + 64a4: 2101 movs r1, #1 bitClear(flags, bit); - 6438: f896 37dc ldrb.w r3, [r6, #2012] ; 0x7dc + 64a6: f895 37fc ldrb.w r3, [r5, #2044] ; 0x7fc bitWrite(value[mask], bit, newValue); - 643c: 4689 mov r9, r1 - 643e: f023 0301 bic.w r3, r3, #1 - 6442: f886 37dc strb.w r3, [r6, #2012] ; 0x7dc + 64aa: 4689 mov r9, r1 + 64ac: f023 0301 bic.w r3, r3, #1 + 64b0: f885 37fc strb.w r3, [r5, #2044] ; 0x7fc totalReadableTriggers = 0; - 6446: 2300 movs r3, #0 - 6448: f886 37e2 strb.w r3, [r6, #2018] ; 0x7e2 + 64b4: 2300 movs r3, #0 + 64b6: f885 3802 strb.w r3, [r5, #2050] ; 0x802 value[i] = 0; - 644c: f8a6 37de strh.w r3, [r6, #2014] ; 0x7de + 64ba: f8a5 37fe strh.w r3, [r5, #2046] ; 0x7fe bmcStoreDevice <1, 2>& device = midi.globals.store.global.triggers[i]; - 6450: f8de 0108 ldr.w r0, [lr, #264] ; 0x108 + 64be: f8de 0108 ldr.w r0, [lr, #264] ; 0x108 if(active(device.events[0]) && device.events[1] != 0){ - 6454: f203 524c addw r2, r3, #1356 ; 0x54c + 64c2: f203 524c addw r2, r3, #1356 ; 0x54c for(uint8_t i = 0 ; i < BMC_MAX_TRIGGERS ; i++){ - 6458: f101 0c01 add.w ip, r1, #1 + 64c6: f101 0c01 add.w ip, r1, #1 bmcStoreDevice <1, 2>& device = midi.globals.store.global.triggers[i]; - 645c: 6800 ldr r0, [r0, #0] + 64ca: 6800 ldr r0, [r0, #0] if(active(device.events[0]) && device.events[1] != 0){ - 645e: eb00 0282 add.w r2, r0, r2, lsl #2 - 6462: eb00 0a83 add.w sl, r0, r3, lsl #2 - 6466: 7b12 ldrb r2, [r2, #12] + 64cc: eb00 0282 add.w r2, r0, r2, lsl #2 + 64d0: eb00 0a83 add.w sl, r0, r3, lsl #2 + 64d4: 7b12 ldrb r2, [r2, #12] return store.global.events[n-1]; - 6468: eb00 00c2 add.w r0, r0, r2, lsl #3 + 64d6: eb00 00c2 add.w r0, r0, r2, lsl #3 if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 646c: 3a01 subs r2, #1 - 646e: 2ac7 cmp r2, #199 ; 0xc7 - 6470: d809 bhi.n 6486 + 64da: 3a01 subs r2, #1 + 64dc: 2ac7 cmp r2, #199 ; 0xc7 + 64de: d809 bhi.n 64f4 BMCBitStates activeList; uint8_t totalReadableTriggers = 0; bool active(bmcEvent_t type){ bmcStoreEvent data = midi.globals.getDeviceEventType(type); switch(data.type){ - 6472: f890 2032 ldrb.w r2, [r0, #50] ; 0x32 - 6476: 3a01 subs r2, #1 - 6478: 2a03 cmp r2, #3 - 647a: d804 bhi.n 6486 + 64e0: f890 2032 ldrb.w r2, [r0, #50] ; 0x32 + 64e4: 3a01 subs r2, #1 + 64e6: 2a03 cmp r2, #3 + 64e8: d804 bhi.n 64f4 if(active(device.events[0]) && device.events[1] != 0){ - 647c: f81a 2008 ldrb.w r2, [sl, r8] - 6480: 2a00 cmp r2, #0 - 6482: f040 80c5 bne.w 6610 + 64ea: f81a 2008 ldrb.w r2, [sl, r8] + 64ee: 2a00 cmp r2, #0 + 64f0: f040 80c4 bne.w 667c for(uint8_t i = 0 ; i < BMC_MAX_TRIGGERS ; i++){ - 6486: 3301 adds r3, #1 - 6488: fa5f f18c uxtb.w r1, ip - 648c: 2b04 cmp r3, #4 - 648e: d1df bne.n 6450 - 6490: 211e movs r1, #30 - 6492: 480f ldr r0, [pc, #60] ; (64d0 ) - 6494: f026 f858 bl 2c548 - 6498: 2101 movs r1, #1 - 649a: 480a ldr r0, [pc, #40] ; (64c4 ) - 649c: f026 f854 bl 2c548 + 64f4: 3301 adds r3, #1 + 64f6: fa5f f18c uxtb.w r1, ip + 64fa: 2b04 cmp r3, #4 + 64fc: d1df bne.n 64be + 64fe: 211e movs r1, #30 + 6500: 480e ldr r0, [pc, #56] ; (653c ) + 6502: f026 f895 bl 2c630 + 6506: 2101 movs r1, #1 + 6508: 4809 ldr r0, [pc, #36] ; (6530 ) + 650a: f026 f891 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 64a0: f896 17e2 ldrb.w r1, [r6, #2018] ; 0x7e2 - 64a4: 2300 movs r3, #0 - 64a6: 220a movs r2, #10 - 64a8: 4807 ldr r0, [pc, #28] ; (64c8 ) - 64aa: f023 fcff bl 29eac + 650e: f895 1802 ldrb.w r1, [r5, #2050] ; 0x802 + 6512: 2300 movs r3, #0 + 6514: 220a movs r2, #10 + 6516: 4807 ldr r0, [pc, #28] ; (6534 ) + 6518: f023 fd3e bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 64ae: 4806 ldr r0, [pc, #24] ; (64c8 ) - 64b0: f023 fce0 bl 29e74 + 651c: 4805 ldr r0, [pc, #20] ; (6534 ) + 651e: f023 fd1f bl 29f60 if(bitRead(flags, bit)){ - 64b4: f8d5 1ccc ldr.w r1, [r5, #3276] ; 0xccc - 64b8: e735 b.n 6326 - 64ba: bf00 nop - 64bc: 2000bae8 .word 0x2000bae8 - 64c0: 2000238c .word 0x2000238c - 64c4: 200023ec .word 0x200023ec - 64c8: 20004ba8 .word 0x20004ba8 - 64cc: 200023cc .word 0x200023cc - 64d0: 200023ac .word 0x200023ac + 6522: f8d6 1cec ldr.w r1, [r6, #3308] ; 0xcec + 6526: e735 b.n 6394 + 6528: 2000bb08 .word 0x2000bb08 + 652c: 2000238c .word 0x2000238c + 6530: 200023ec .word 0x200023ec + 6534: 20004c68 .word 0x20004c68 + 6538: 200023cc .word 0x200023cc + 653c: 200023ac .word 0x200023ac bitClear(flags, bit); - 64d4: f021 0180 bic.w r1, r1, #128 ; 0x80 - 64d8: f8c5 1ccc str.w r1, [r5, #3276] ; 0xccc + 6540: f021 0180 bic.w r1, r1, #128 ; 0x80 + 6544: f8c6 1cec str.w r1, [r6, #3308] ; 0xcec uint8_t min = store.global.lfo[i].events[3]+0; - 64dc: f897 cf26 ldrb.w ip, [r7, #3878] ; 0xf26 + 6548: f897 cf26 ldrb.w ip, [r7, #3878] ; 0xf26 uint8_t max = store.global.lfo[i].events[4]+0; - 64e0: f897 0f27 ldrb.w r0, [r7, #3879] ; 0xf27 + 654c: f897 0f27 ldrb.w r0, [r7, #3879] ; 0xf27 uint8_t mode = bitRead(store.global.lfo[i].settings[0], 7); - 64e4: f897 3f20 ldrb.w r3, [r7, #3872] ; 0xf20 + 6550: f897 3f20 ldrb.w r3, [r7, #3872] ; 0xf20 if(min == max){ - 64e8: 4584 cmp ip, r0 + 6554: 4584 cmp ip, r0 uint8_t waveform = store.global.lfo[i].settings[1]; - 64ea: f897 8f21 ldrb.w r8, [r7, #3873] ; 0xf21 + 6556: f897 8f21 ldrb.w r8, [r7, #3873] ; 0xf21 uint8_t mode = bitRead(store.global.lfo[i].settings[0], 7); - 64ee: ea4f 1ed3 mov.w lr, r3, lsr #7 + 655a: ea4f 1ed3 mov.w lr, r3, lsr #7 uint8_t bpmRate = store.global.lfo[i].settings[2]; - 64f2: f897 2f22 ldrb.w r2, [r7, #3874] ; 0xf22 + 655e: f897 2f22 ldrb.w r2, [r7, #3874] ; 0xf22 uint8_t cycle = store.global.lfo[i].settings[0] & 0x7F; - 64f6: f003 037f and.w r3, r3, #127 ; 0x7f + 6562: f003 037f and.w r3, r3, #127 ; 0x7f if(min == max){ - 64fa: f000 809f beq.w 663c + 6566: f000 809f beq.w 66a8 } else if(max < min){ - 64fe: d902 bls.n 6506 - 6500: 46e1 mov r9, ip - 6502: 4684 mov ip, r0 - 6504: 4648 mov r0, r9 + 656a: d902 bls.n 6572 + 656c: 46e1 mov r9, ip + 656e: 4684 mov ip, r0 + 6570: 4648 mov r0, r9 sendCycle = (constrain(value, 0, 9)+1) * 10; - 6506: 2b09 cmp r3, #9 + 6572: 2b09 cmp r3, #9 mode = value > 1 ? 1 : value; - 6508: f884 e96a strb.w lr, [r4, #2410] ; 0x96a + 6574: f884 e96e strb.w lr, [r4, #2414] ; 0x96e return bpm; - 650c: f8d6 e188 ldr.w lr, [r6, #392] ; 0x188 + 6578: f8d5 e1a8 ldr.w lr, [r5, #424] ; 0x1a8 sendCycle = (constrain(value, 0, 9)+1) * 10; - 6510: bfa8 it ge - 6512: 2309 movge r3, #9 + 657c: bfa8 it ge + 657e: 2309 movge r3, #9 value = constrain(value, 0, 4); - 6514: 2a04 cmp r2, #4 + 6580: 2a04 cmp r2, #4 sendCycle = (constrain(value, 0, 9)+1) * 10; - 6516: f103 0301 add.w r3, r3, #1 + 6582: f103 0301 add.w r3, r3, #1 value = constrain(value, 0, 4); - 651a: bfa8 it ge - 651c: 2204 movge r2, #4 + 6586: bfa8 it ge + 6588: 2204 movge r2, #4 waveForm = constrain(value, 0, 4); - 651e: f1b8 0f04 cmp.w r8, #4 + 658a: f1b8 0f04 cmp.w r8, #4 sendCycle = (constrain(value, 0, 9)+1) * 10; - 6522: eb03 0383 add.w r3, r3, r3, lsl #2 + 658e: eb03 0383 add.w r3, r3, r3, lsl #2 bpmRate = bpmRates[value]; - 6526: f202 6264 addw r2, r2, #1636 ; 0x664 + 6592: f202 6264 addw r2, r2, #1636 ; 0x664 waveForm = constrain(value, 0, 4); - 652a: bfa8 it ge - 652c: f04f 0804 movge.w r8, #4 + 6596: bfa8 it ge + 6598: f04f 0804 movge.w r8, #4 if(t_max <= t_min){ - 6530: 4584 cmp ip, r0 + 659c: 4584 cmp ip, r0 sendCycle = (constrain(value, 0, 9)+1) * 10; - 6532: ea4f 0343 mov.w r3, r3, lsl #1 + 659e: ea4f 0343 mov.w r3, r3, lsl #1 bpmRate = bpmRates[value]; - 6536: eb07 0282 add.w r2, r7, r2, lsl #2 + 65a2: eb07 0282 add.w r2, r7, r2, lsl #2 sendCycle = (constrain(value, 0, 9)+1) * 10; - 653a: f8a4 396c strh.w r3, [r4, #2412] ; 0x96c + 65a6: f8a4 3970 strh.w r3, [r4, #2416] ; 0x970 bpmRate = bpmRates[value]; - 653e: f604 137c addw r3, r4, #2428 ; 0x97c - 6542: f8be e000 ldrh.w lr, [lr] + 65aa: f507 53cc add.w r3, r7, #6528 ; 0x1980 + 65ae: f8be e000 ldrh.w lr, [lr] waveForm = constrain(value, 0, 4); - 6546: f884 8970 strb.w r8, [r4, #2416] ; 0x970 + 65b2: f884 8974 strb.w r8, [r4, #2420] ; 0x974 bpm = (value < 0) ? 0 :value; - 654a: f8a4 e978 strh.w lr, [r4, #2424] ; 0x978 + 65b6: f8a4 e97c strh.w lr, [r4, #2428] ; 0x97c bpmRate = bpmRates[value]; - 654e: 6812 ldr r2, [r2, #0] - 6550: 601a str r2, [r3, #0] + 65ba: 6852 ldr r2, [r2, #4] + 65bc: 601a str r2, [r3, #0] if(t_max <= t_min){ - 6552: d355 bcc.n 6600 + 65be: d355 bcc.n 666c min = 0; - 6554: f44f 43fe mov.w r3, #32512 ; 0x7f00 + 65c0: f44f 43fe mov.w r3, #32512 ; 0x7f00 if(bitRead(flags, bit)){ - 6558: f3c1 2800 ubfx r8, r1, #8, #1 - 655c: f8a4 396e strh.w r3, [r4, #2414] ; 0x96e - 6560: 05cb lsls r3, r1, #23 - 6562: f57f aede bpl.w 6322 + 65c4: f3c1 2800 ubfx r8, r1, #8, #1 + 65c8: f8a4 3972 strh.w r3, [r4, #2418] ; 0x972 + 65cc: 05cb lsls r3, r1, #23 + 65ce: f57f aedf bpl.w 6390 } void buildListeners(){ activeList.zeroOut(); flags.reset(); for(uint8_t i = 0 ; i < BMC_MAX_TEMPO_TO_TAP ; i++){ bmcStoreDevice <1, 1>& device = global.tempoToTap[i]; - 6566: f8d6 27bc ldr.w r2, [r6, #1980] ; 0x7bc - 656a: 2001 movs r0, #1 - 656c: f241 5c48 movw ip, #5448 ; 0x1548 - 6570: 2300 movs r3, #0 + 65d2: f8d5 27dc ldr.w r2, [r5, #2012] ; 0x7dc + 65d6: 2001 movs r0, #1 + 65d8: f241 5c48 movw ip, #5448 ; 0x1548 + 65dc: 2300 movs r3, #0 bitClear(flags, bit); - 6572: f421 7180 bic.w r1, r1, #256 ; 0x100 + 65de: f421 7180 bic.w r1, r1, #256 ; 0x100 bitWrite(value[mask], bit, newValue); - 6576: 4681 mov r9, r0 - 6578: 4494 add ip, r2 - 657a: f8c5 1ccc str.w r1, [r5, #3276] ; 0xccc + 65e2: 4681 mov r9, r0 + 65e4: 4494 add ip, r2 + 65e6: f8c6 1cec str.w r1, [r6, #3308] ; 0xcec value[i] = 0; - 657e: f8a6 37ca strh.w r3, [r6, #1994] ; 0x7ca + 65ea: f8a5 37ea strh.w r3, [r5, #2026] ; 0x7ea flags = 0; - 6582: f886 37c8 strb.w r3, [r6, #1992] ; 0x7c8 + 65ee: f885 37e8 strb.w r3, [r5, #2024] ; 0x7e8 if(isValidEvent(device.events[0])){ - 6586: eb03 0243 add.w r2, r3, r3, lsl #1 + 65f2: eb03 0243 add.w r2, r3, r3, lsl #1 for(uint8_t i = 0 ; i < BMC_MAX_TEMPO_TO_TAP ; i++){ - 658a: f100 0e01 add.w lr, r0, #1 + 65f6: f100 0e01 add.w lr, r0, #1 if(isValidEvent(device.events[0])){ - 658e: f81c a002 ldrb.w sl, [ip, r2] + 65fa: f81c a002 ldrb.w sl, [ip, r2] if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 6592: f10a 3bff add.w fp, sl, #4294967295 ; 0xffffffff + 65fe: f10a 3bff add.w fp, sl, #4294967295 ; 0xffffffff } */ timer.start(BMCBpmCalculator::bpmToMillis(bpm)); } bool isValidEvent(bmcEvent_t event){ if(event == BMC_NONE){ - 6596: f1ba 0f00 cmp.w sl, #0 - 659a: d02a beq.n 65f2 + 6602: f1ba 0f00 cmp.w sl, #0 + 6606: d02a beq.n 665e return false; } // bmcStoreEvent data = globals.getDeviceEventType(event); bmcStoreEvent data = BMCTools::getDeviceEventType(midi.globals.store, event); - 659c: f8d6 27b4 ldr.w r2, [r6, #1972] ; 0x7b4 - 65a0: f1bb 0fc7 cmp.w fp, #199 ; 0xc7 - 65a4: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 65a8: 6812 ldr r2, [r2, #0] + 6608: f8d5 27d4 ldr.w r2, [r5, #2004] ; 0x7d4 + 660c: f1bb 0fc7 cmp.w fp, #199 ; 0xc7 + 6610: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 6614: 6812 ldr r2, [r2, #0] return store.global.events[n-1]; - 65aa: eb02 02ca add.w r2, r2, sl, lsl #3 + 6616: eb02 02ca add.w r2, r2, sl, lsl #3 if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 65ae: d820 bhi.n 65f2 + 661a: d820 bhi.n 665e if(data.ports == BMC_NONE){ - 65b0: f892 a033 ldrb.w sl, [r2, #51] ; 0x33 + 661c: f892 a033 ldrb.w sl, [r2, #51] ; 0x33 return store.global.events[n-1]; - 65b4: f892 2032 ldrb.w r2, [r2, #50] ; 0x32 - 65b8: f1ba 0f00 cmp.w sl, #0 - 65bc: d019 beq.n 65f2 + 6620: f892 2032 ldrb.w r2, [r2, #50] ; 0x32 + 6624: f1ba 0f00 cmp.w sl, #0 + 6628: d019 beq.n 665e return false; } switch(data.type){ - 65be: 3a01 subs r2, #1 - 65c0: 2a03 cmp r2, #3 - 65c2: d816 bhi.n 65f2 + 662a: 3a01 subs r2, #1 + 662c: 2a03 cmp r2, #3 + 662e: d816 bhi.n 665e if(bitRead(value[mask], bit) != newValue){ - 65c4: f8b6 a7ca ldrh.w sl, [r6, #1994] ; 0x7ca + 6630: f8b5 a7ea ldrh.w sl, [r5, #2026] ; 0x7ea bitWrite(value[mask], bit, newValue); - 65c8: fa09 f203 lsl.w r2, r9, r3 + 6634: fa09 f203 lsl.w r2, r9, r3 bitSet(flags, bit); - 65cc: f896 b7c8 ldrb.w fp, [r6, #1992] ; 0x7c8 - 65d0: ea4a 0202 orr.w r2, sl, r2 + 6638: f895 b7e8 ldrb.w fp, [r5, #2024] ; 0x7e8 + 663c: ea4a 0202 orr.w r2, sl, r2 if(bitRead(value[mask], bit) != newValue){ - 65d4: fa4a fa03 asr.w sl, sl, r3 - 65d8: f04b 0b01 orr.w fp, fp, #1 - 65dc: f01a 0f01 tst.w sl, #1 - 65e0: f886 b7c8 strb.w fp, [r6, #1992] ; 0x7c8 - 65e4: d103 bne.n 65ee + 6640: fa4a fa03 asr.w sl, sl, r3 + 6644: f04b 0b01 orr.w fp, fp, #1 + 6648: f01a 0f01 tst.w sl, #1 + 664c: f885 b7e8 strb.w fp, [r5, #2024] ; 0x7e8 + 6650: d103 bne.n 665a bitWrite(value[mask], bit, newValue); - 65e6: f8a6 27ca strh.w r2, [r6, #1994] ; 0x7ca + 6652: f8a5 27ea strh.w r2, [r5, #2026] ; 0x7ea updated = true; - 65ea: f886 97cc strb.w r9, [r6, #1996] ; 0x7cc + 6656: f885 97ec strb.w r9, [r5, #2028] ; 0x7ec totalActiveCount = (i + 1); - 65ee: f886 07cf strb.w r0, [r6, #1999] ; 0x7cf + 665a: f885 07ef strb.w r0, [r5, #2031] ; 0x7ef for(uint8_t i = 0 ; i < BMC_MAX_TEMPO_TO_TAP ; i++){ - 65f2: fa5f f08e uxtb.w r0, lr - 65f6: 2b00 cmp r3, #0 - 65f8: f47f ae93 bne.w 6322 - 65fc: 4643 mov r3, r8 - 65fe: e7c2 b.n 6586 + 665e: fa5f f08e uxtb.w r0, lr + 6662: 2b00 cmp r3, #0 + 6664: f47f ae94 bne.w 6390 + 6668: 4643 mov r3, r8 + 666a: e7c2 b.n 65f2 min = t_min; - 6600: f884 c96e strb.w ip, [r4, #2414] ; 0x96e + 666c: f884 c972 strb.w ip, [r4, #2418] ; 0x972 max = t_max; - 6604: f884 096f strb.w r0, [r4, #2415] ; 0x96f + 6670: f884 0973 strb.w r0, [r4, #2419] ; 0x973 for(uint8_t i=0;i + 6674: e687 b.n 6386 chaingingPort = 0; - 660a: f885 1ce1 strb.w r1, [r5, #3297] ; 0xce1 - 660e: e61a b.n 6246 - 6610: f896 27dc ldrb.w r2, [r6, #2012] ; 0x7dc + 6676: f886 1d01 strb.w r1, [r6, #3329] ; 0xd01 + 667a: e628 b.n 62ce + 667c: f895 27fc ldrb.w r2, [r5, #2044] ; 0x7fc if(bitRead(value[mask], bit) != newValue){ - 6614: f8b6 07de ldrh.w r0, [r6, #2014] ; 0x7de - 6618: f042 0201 orr.w r2, r2, #1 - 661c: f886 27dc strb.w r2, [r6, #2012] ; 0x7dc - 6620: fa40 f203 asr.w r2, r0, r3 - 6624: 07d2 lsls r2, r2, #31 - 6626: d406 bmi.n 6636 + 6680: f8b5 07fe ldrh.w r0, [r5, #2046] ; 0x7fe + 6684: f042 0201 orr.w r2, r2, #1 + 6688: f885 27fc strb.w r2, [r5, #2044] ; 0x7fc + 668c: fa40 f203 asr.w r2, r0, r3 + 6690: 07d2 lsls r2, r2, #31 + 6692: d406 bmi.n 66a2 bitWrite(value[mask], bit, newValue); - 6628: fa09 f203 lsl.w r2, r9, r3 + 6694: fa09 f203 lsl.w r2, r9, r3 updated = true; - 662c: f886 97e0 strb.w r9, [r6, #2016] ; 0x7e0 + 6698: f885 9800 strb.w r9, [r5, #2048] ; 0x800 bitWrite(value[mask], bit, newValue); - 6630: 4310 orrs r0, r2 - 6632: f8a6 07de strh.w r0, [r6, #2014] ; 0x7de + 669c: 4310 orrs r0, r2 + 669e: f8a5 07fe strh.w r0, [r5, #2046] ; 0x7fe totalReadableTriggers = (i+1); - 6636: f886 17e2 strb.w r1, [r6, #2018] ; 0x7e2 - 663a: e724 b.n 6486 + 66a2: f885 1802 strb.w r1, [r5, #2050] ; 0x802 + 66a6: e725 b.n 64f4 max = 127; - 663c: 207f movs r0, #127 ; 0x7f + 66a8: 207f movs r0, #127 ; 0x7f min = 0; - 663e: f04f 0c00 mov.w ip, #0 - 6642: e760 b.n 6506 + 66aa: f04f 0c00 mov.w ip, #0 + 66ae: e760 b.n 6572 -00006644 : +000066b0 : ctrlClickTrack(); break; #endif } } void BMC::ctrlHardware(){ - 6644: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 66b0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} } uint8_t getGroup(){ return group; } uint8_t getParameter(){ return parameter; - 6648: f500 5500 add.w r5, r0, #8192 ; 0x2000 - 664c: 4604 mov r4, r0 - 664e: ed2d 8b02 vpush {d8} + 66b4: f500 5500 add.w r5, r0, #8192 ; 0x2000 + 66b8: 4604 mov r4, r0 + 66ba: ed2d 8b02 vpush {d8} switch(editor.getCtrlParameter()){ - 6652: f895 3cd2 ldrb.w r3, [r5, #3282] ; 0xcd2 + 66be: f895 3cf2 ldrb.w r3, [r5, #3314] ; 0xcf2 void BMC::ctrlHardware(){ - 6656: b087 sub sp, #28 + 66c2: b087 sub sp, #28 switch(editor.getCtrlParameter()){ - 6658: 2b0f cmp r3, #15 - 665a: d817 bhi.n 668c - 665c: e8df f013 tbh [pc, r3, lsl #1] - 6660: 001b0020 .word 0x001b0020 - 6664: 003d002b .word 0x003d002b - 6668: 005c004a .word 0x005c004a - 666c: 013a00eb .word 0x013a00eb - 6670: 00160016 .word 0x00160016 - 6674: 00160016 .word 0x00160016 - 6678: 00160016 .word 0x00160016 - 667c: 0010012b .word 0x0010012b - 6680: f8d5 3ccc ldr.w r3, [r5, #3276] ; 0xccc - 6684: f443 2380 orr.w r3, r3, #262144 ; 0x40000 - 6688: f8c5 3ccc str.w r3, [r5, #3276] ; 0xccc + 66c4: 2b0f cmp r3, #15 + 66c6: d817 bhi.n 66f8 + 66c8: e8df f013 tbh [pc, r3, lsl #1] + 66cc: 001b0020 .word 0x001b0020 + 66d0: 003d002b .word 0x003d002b + 66d4: 005c004a .word 0x005c004a + 66d8: 013a00eb .word 0x013a00eb + 66dc: 00160016 .word 0x00160016 + 66e0: 00160016 .word 0x00160016 + 66e4: 00160016 .word 0x00160016 + 66e8: 0010012b .word 0x0010012b + 66ec: f8d5 3cec ldr.w r3, [r5, #3308] ; 0xcec + 66f0: f443 2380 orr.w r3, r3, #262144 ; 0x40000 + 66f4: f8c5 3cec str.w r3, [r5, #3308] ; 0xcec BMC_PRINTLN("Pot Calibration Cancelled"); editor.utilitySendAnalogInputCalibrationStatus(potCalibration.active(),true); break; #endif } } - 668c: b007 add sp, #28 - 668e: ecbd 8b02 vpop {d8} - 6692: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 66f8: b007 add sp, #28 + 66fa: ecbd 8b02 vpop {d8} + 66fe: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(editor.getCtrlWrite() && editor.getCtrlValue() + 6702: f895 3cf0 ldrb.w r3, [r5, #3312] ; 0xcf0 + 6706: 2b00 cmp r3, #0 + 6708: f040 8167 bne.w 69da editor.layerSendChangeMessage(false); - 66a0: f642 409c movw r0, #11420 ; 0x2c9c - 66a4: 2100 movs r1, #0 - 66a6: 4420 add r0, r4 + 670c: f642 40bc movw r0, #11452 ; 0x2cbc + 6710: 2100 movs r1, #0 + 6712: 4420 add r0, r4 } - 66a8: b007 add sp, #28 - 66aa: ecbd 8b02 vpop {d8} - 66ae: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 6714: b007 add sp, #28 + 6716: ecbd 8b02 vpop {d8} + 671a: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} editor.layerSendChangeMessage(false); - 66b2: f01b bf1b b.w 224ec + 671e: f01b bf55 b.w 225cc } uint32_t getValue(){ return value; - 66b6: f8d5 3cd3 ldr.w r3, [r5, #3283] ; 0xcd3 + 6722: f8d5 3cf3 ldr.w r3, [r5, #3315] ; 0xcf3 if(editor.getCtrlValue() < BMC_MAX_BUTTONS){ - 66ba: 2b05 cmp r3, #5 - 66bc: d8e6 bhi.n 668c + 6726: 2b05 cmp r3, #5 + 6728: d8e6 bhi.n 66f8 buttons[editor.getCtrlValue()].triggerToggle(); - 66be: eb03 03c3 add.w r3, r3, r3, lsl #3 - 66c2: f643 1288 movw r2, #14728 ; 0x3988 - 66c6: eb00 0383 add.w r3, r0, r3, lsl #2 - 66ca: 441a add r2, r3 + 672a: eb03 03c3 add.w r3, r3, r3, lsl #3 + 672e: f643 12a8 movw r2, #14760 ; 0x39a8 + 6732: eb00 0383 add.w r3, r0, r3, lsl #2 + 6736: 441a add r2, r3 return bitRead(flags, bit); - 66cc: 8953 ldrh r3, [r2, #10] + 6738: 8953 ldrh r3, [r2, #10] if(flags.read(BMC_BTN_FLAG_PRESS_TRIGGERED)){ flags.on(BMC_BTN_FLAG_RELEASED_TRIGGERED); } } void triggerToggle(){ if(!flags.read(BMC_BTN_FLAG_PRESS_TRIGGERED)){ - 66ce: 049d lsls r5, r3, #18 - 66d0: d41e bmi.n 6710 + 673a: 049d lsls r5, r3, #18 + 673c: d41e bmi.n 677c bitSet(flags, bit); - 66d2: f443 5300 orr.w r3, r3, #8192 ; 0x2000 - 66d6: 8153 strh r3, [r2, #10] + 673e: f443 5300 orr.w r3, r3, #8192 ; 0x2000 + 6742: 8153 strh r3, [r2, #10] } - 66d8: e7d8 b.n 668c - 66da: f8d5 3cd3 ldr.w r3, [r5, #3283] ; 0xcd3 + 6744: e7d8 b.n 66f8 + 6746: f8d5 3cf3 ldr.w r3, [r5, #3315] ; 0xcf3 if(editor.getCtrlValue() < BMC_MAX_BUTTONS){ - 66de: 2b05 cmp r3, #5 - 66e0: d8d4 bhi.n 668c + 674a: 2b05 cmp r3, #5 + 674c: d8d4 bhi.n 66f8 buttons[editor.getCtrlValue()].triggerPress(); - 66e2: eb03 03c3 add.w r3, r3, r3, lsl #3 - 66e6: f643 1288 movw r2, #14728 ; 0x3988 - 66ea: eb00 0383 add.w r3, r0, r3, lsl #2 - 66ee: 441a add r2, r3 - 66f0: 8953 ldrh r3, [r2, #10] - 66f2: e7ee b.n 66d2 - 66f4: f8d5 3cd3 ldr.w r3, [r5, #3283] ; 0xcd3 + 674e: eb03 03c3 add.w r3, r3, r3, lsl #3 + 6752: f643 12a8 movw r2, #14760 ; 0x39a8 + 6756: eb00 0383 add.w r3, r0, r3, lsl #2 + 675a: 441a add r2, r3 + 675c: 8953 ldrh r3, [r2, #10] + 675e: e7ee b.n 673e + 6760: f8d5 3cf3 ldr.w r3, [r5, #3315] ; 0xcf3 if(editor.getCtrlValue() < BMC_MAX_BUTTONS){ - 66f8: 2b05 cmp r3, #5 - 66fa: d8c7 bhi.n 668c + 6764: 2b05 cmp r3, #5 + 6766: d8c7 bhi.n 66f8 buttons[editor.getCtrlValue()].triggerRelease(); - 66fc: eb03 03c3 add.w r3, r3, r3, lsl #3 - 6700: f643 1288 movw r2, #14728 ; 0x3988 - 6704: eb00 0383 add.w r3, r0, r3, lsl #2 - 6708: 441a add r2, r3 + 6768: eb03 03c3 add.w r3, r3, r3, lsl #3 + 676c: f643 12a8 movw r2, #14760 ; 0x39a8 + 6770: eb00 0383 add.w r3, r0, r3, lsl #2 + 6774: 441a add r2, r3 return bitRead(flags, bit); - 670a: 8953 ldrh r3, [r2, #10] + 6776: 8953 ldrh r3, [r2, #10] if(flags.read(BMC_BTN_FLAG_PRESS_TRIGGERED)){ - 670c: 049c lsls r4, r3, #18 - 670e: d5bd bpl.n 668c + 6778: 049c lsls r4, r3, #18 + 677a: d5bd bpl.n 66f8 bitSet(flags, bit); - 6710: f443 4380 orr.w r3, r3, #16384 ; 0x4000 - 6714: 8153 strh r3, [r2, #10] + 677c: f443 4380 orr.w r3, r3, #16384 ; 0x4000 + 6780: 8153 strh r3, [r2, #10] } - 6716: e7b9 b.n 668c - 6718: f8d5 5cd3 ldr.w r5, [r5, #3283] ; 0xcd3 - 671c: 2108 movs r1, #8 - 671e: 48c5 ldr r0, [pc, #788] ; (6a34 ) + 6782: e7b9 b.n 66f8 + 6784: f8d5 5cf3 ldr.w r5, [r5, #3315] ; 0xcf3 + 6788: 2108 movs r1, #8 + 678a: 48c6 ldr r0, [pc, #792] ; (6aa4 ) uint8_t deviceId = (editor.getCtrlValue()>>16) & 0xFF; - 6720: f3c5 4707 ubfx r7, r5, #16, #8 - 6724: f025 ff10 bl 2c548 - 6728: 2101 movs r1, #1 - 672a: 48c3 ldr r0, [pc, #780] ; (6a38 ) - 672c: f025 ff0c bl 2c548 + 678c: f3c5 4707 ubfx r7, r5, #16, #8 + 6790: f025 ff4e bl 2c630 + 6794: 2101 movs r1, #1 + 6796: 48c4 ldr r0, [pc, #784] ; (6aa8 ) + 6798: f025 ff4a bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 6730: 2300 movs r3, #0 - 6732: 220a movs r2, #10 - 6734: 4639 mov r1, r7 - 6736: 48c1 ldr r0, [pc, #772] ; (6a3c ) + 679c: 2300 movs r3, #0 + 679e: 220a movs r2, #10 + 67a0: 4639 mov r1, r7 + 67a2: 48c2 ldr r0, [pc, #776] ; (6aac ) uint16_t deviceIndex = editor.getCtrlValue() & 0xFF; - 6738: b2ee uxtb r6, r5 - 673a: f023 fbb7 bl 29eac - 673e: 2101 movs r1, #1 - 6740: 48bd ldr r0, [pc, #756] ; (6a38 ) - 6742: b2ad uxth r5, r5 - 6744: f025 ff00 bl 2c548 - 6748: 210b movs r1, #11 - 674a: 48bd ldr r0, [pc, #756] ; (6a40 ) - 674c: f025 fefc bl 2c548 - 6750: 2101 movs r1, #1 - 6752: 48b9 ldr r0, [pc, #740] ; (6a38 ) - 6754: f025 fef8 bl 2c548 + 67a4: b2ee uxtb r6, r5 + 67a6: f023 fbf7 bl 29f98 + 67aa: 2101 movs r1, #1 + 67ac: 48be ldr r0, [pc, #760] ; (6aa8 ) + 67ae: b2ad uxth r5, r5 + 67b0: f025 ff3e bl 2c630 + 67b4: 210b movs r1, #11 + 67b6: 48be ldr r0, [pc, #760] ; (6ab0 ) + 67b8: f025 ff3a bl 2c630 + 67bc: 2101 movs r1, #1 + 67be: 48ba ldr r0, [pc, #744] ; (6aa8 ) + 67c0: f025 ff36 bl 2c630 size_t print(int n) { return print((long)n); } - 6758: 4631 mov r1, r6 - 675a: 48b8 ldr r0, [pc, #736] ; (6a3c ) - 675c: f023 fb7e bl 29e5c + 67c4: 4631 mov r1, r6 + 67c6: 48b9 ldr r0, [pc, #740] ; (6aac ) + 67c8: f023 fbbe bl 29f48 size_t println(int n) { return print(n) + println(); } - 6760: 48b6 ldr r0, [pc, #728] ; (6a3c ) - 6762: f023 fb87 bl 29e74 + 67cc: 48b7 ldr r0, [pc, #732] ; (6aac ) + 67ce: f023 fbc7 bl 29f60 if(deviceId == BMC_DEVICE_ID_LED){ - 6766: 2f06 cmp r7, #6 - 6768: d090 beq.n 668c + 67d2: 2f06 cmp r7, #6 + 67d4: d090 beq.n 66f8 } else if(deviceId == BMC_DEVICE_ID_GLOBAL_LED){ - 676a: 2f07 cmp r7, #7 - 676c: f000 811b beq.w 69a6 - 6770: 2f0e cmp r7, #14 - 6772: d18b bne.n 668c + 67d6: 2f07 cmp r7, #7 + 67d8: f000 811b beq.w 6a12 + 67dc: 2f0e cmp r7, #14 + 67de: d18b bne.n 66f8 if(deviceIndex < BMC_MAX_RGB_PIXELS){ - 6774: 2e05 cmp r6, #5 - 6776: d889 bhi.n 668c + 67e0: 2e05 cmp r6, #5 + 67e2: d889 bhi.n 66f8 num *= 4; - 6778: ea4f 0886 mov.w r8, r6, lsl #2 - 677c: f504 5a40 add.w sl, r4, #12288 ; 0x3000 + 67e4: ea4f 0886 mov.w r8, r6, lsl #2 + 67e8: f504 5a40 add.w sl, r4, #12288 ; 0x3000 num *= 3; - 6780: eb06 0946 add.w r9, r6, r6, lsl #1 + 67ec: eb06 0946 add.w r9, r6, r6, lsl #1 pixels.show(); - 6784: f643 0b9c movw fp, #14492 ; 0x389c + 67f0: f643 0bbc movw fp, #14524 ; 0x38bc drawBuffer[num+1] = (color >> 8) & 255; - 6788: f108 0301 add.w r3, r8, #1 - 678c: f44f 027f mov.w r2, #16711680 ; 0xff0000 - 6790: 44a3 add fp, r4 + 67f4: f108 0301 add.w r3, r8, #1 + 67f8: f44f 027f mov.w r2, #16711680 ; 0xff0000 + 67fc: 44a3 add fp, r4 drawBuffer[num+0] = color & 255; - 6792: 2700 movs r7, #0 + 67fe: 2700 movs r7, #0 drawBuffer[num+1] = (color >> 8) & 255; - 6794: 9303 str r3, [sp, #12] + 6800: 9303 str r3, [sp, #12] drawBuffer[num+2] = (color >> 16) & 255; - 6796: f108 0302 add.w r3, r8, #2 - 679a: 4caa ldr r4, [pc, #680] ; (6a44 ) - 679c: 9304 str r3, [sp, #16] + 6802: f108 0302 add.w r3, r8, #2 + 6806: 4cab ldr r4, [pc, #684] ; (6ab4 ) + 6808: 9304 str r3, [sp, #16] drawBuffer[num+3] = (color >> 24) & 255; - 679e: f108 0303 add.w r3, r8, #3 - 67a2: 9305 str r3, [sp, #20] + 680a: f108 0303 add.w r3, r8, #3 + 680e: 9305 str r3, [sp, #20] drawBuffer[num+1] = (color >> 8) & 255; - 67a4: f109 0301 add.w r3, r9, #1 - 67a8: 9301 str r3, [sp, #4] + 6810: f109 0301 add.w r3, r9, #1 + 6814: 9301 str r3, [sp, #4] drawBuffer[num+2] = (color >> 16) & 255; - 67aa: f109 0302 add.w r3, r9, #2 - 67ae: 9302 str r3, [sp, #8] + 6816: f109 0302 add.w r3, r9, #2 + 681a: 9302 str r3, [sp, #8] if (num >= numled) return; - 67b0: f8ba 389c ldrh.w r3, [sl, #2204] ; 0x89c - 67b4: 429e cmp r6, r3 - 67b6: d212 bcs.n 67de + 681c: f8ba 38bc ldrh.w r3, [sl, #2236] ; 0x8bc + 6820: 429e cmp r6, r3 + 6822: d212 bcs.n 684a if (config < 6) { - 67b8: f89a 389f ldrb.w r3, [sl, #2207] ; 0x89f - 67bc: 2b05 cmp r3, #5 + 6824: f89a 38bf ldrb.w r3, [sl, #2239] ; 0x8bf + 6828: 2b05 cmp r3, #5 drawBuffer[num+0] = color & 255; - 67be: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 + 682a: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 if (config < 6) { - 67c2: f200 8179 bhi.w 6ab8 + 682e: f200 817b bhi.w 6b28 drawBuffer[num+0] = color & 255; - 67c6: f803 2009 strb.w r2, [r3, r9] + 6832: f803 2009 strb.w r2, [r3, r9] drawBuffer[num+1] = (color >> 8) & 255; - 67ca: 0a11 lsrs r1, r2, #8 - 67cc: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 + 6836: 0a11 lsrs r1, r2, #8 + 6838: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 drawBuffer[num+2] = (color >> 16) & 255; - 67d0: 0c12 lsrs r2, r2, #16 + 683c: 0c12 lsrs r2, r2, #16 drawBuffer[num+1] = (color >> 8) & 255; - 67d2: 9801 ldr r0, [sp, #4] - 67d4: 5419 strb r1, [r3, r0] + 683e: 9801 ldr r0, [sp, #4] + 6840: 5419 strb r1, [r3, r0] drawBuffer[num+2] = (color >> 16) & 255; - 67d6: 9902 ldr r1, [sp, #8] - 67d8: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 - 67dc: 545a strb r2, [r3, r1] - 67de: 4658 mov r0, fp - 67e0: f022 fbd2 bl 28f88 + 6842: 9902 ldr r1, [sp, #8] + 6844: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 + 6848: 545a strb r2, [r3, r1] + 684a: 4658 mov r0, fp + 684c: f022 fc12 bl 29074 delay(BMC_MAX_LED_TEST_DELAY); - 67e4: 2019 movs r0, #25 - 67e6: f023 fe71 bl 2a4cc + 6850: 2019 movs r0, #25 + 6852: f023 feaf bl 2a5b4 if (num >= numled) return; - 67ea: f8ba 389c ldrh.w r3, [sl, #2204] ; 0x89c - 67ee: 429e cmp r6, r3 - 67f0: d210 bcs.n 6814 + 6856: f8ba 38bc ldrh.w r3, [sl, #2236] ; 0x8bc + 685a: 429e cmp r6, r3 + 685c: d210 bcs.n 6880 if (config < 6) { - 67f2: f89a 389f ldrb.w r3, [sl, #2207] ; 0x89f - 67f6: 2b05 cmp r3, #5 + 685e: f89a 38bf ldrb.w r3, [sl, #2239] ; 0x8bf + 6862: 2b05 cmp r3, #5 drawBuffer[num+0] = color & 255; - 67f8: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 + 6864: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 if (config < 6) { - 67fc: f200 814d bhi.w 6a9a + 6868: f200 814f bhi.w 6b0a drawBuffer[num+0] = color & 255; - 6800: f803 7009 strb.w r7, [r3, r9] + 686c: f803 7009 strb.w r7, [r3, r9] drawBuffer[num+1] = (color >> 8) & 255; - 6804: 9a01 ldr r2, [sp, #4] - 6806: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 - 680a: 549f strb r7, [r3, r2] + 6870: 9a01 ldr r2, [sp, #4] + 6872: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 + 6876: 549f strb r7, [r3, r2] drawBuffer[num+2] = (color >> 16) & 255; - 680c: 9a02 ldr r2, [sp, #8] - 680e: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 - 6812: 549f strb r7, [r3, r2] + 6878: 9a02 ldr r2, [sp, #8] + 687a: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 + 687e: 549f strb r7, [r3, r2] pixels.show(); - 6814: 4658 mov r0, fp - 6816: f022 fbb7 bl 28f88 + 6880: 4658 mov r0, fp + 6882: f022 fbf7 bl 29074 delay(BMC_MAX_LED_TEST_DELAY); - 681a: 2019 movs r0, #25 - 681c: f023 fe56 bl 2a4cc + 6886: 2019 movs r0, #25 + 6888: f023 fe94 bl 2a5b4 for(uint8_t i = 0, m=(t_init ? 2 : 4) ; i < m ; i++){ - 6820: 4b89 ldr r3, [pc, #548] ; (6a48 ) - 6822: 429c cmp r4, r3 - 6824: f000 815e beq.w 6ae4 + 688c: 4b8a ldr r3, [pc, #552] ; (6ab8 ) + 688e: 429c cmp r4, r3 + 6890: f000 8160 beq.w 6b54 if (num >= numled) return; - 6828: f8ba 389c ldrh.w r3, [sl, #2204] ; 0x89c - 682c: f854 2f04 ldr.w r2, [r4, #4]! - 6830: 429e cmp r6, r3 - 6832: d3c1 bcc.n 67b8 - 6834: e7d3 b.n 67de - 6836: f8d5 7cd3 ldr.w r7, [r5, #3283] ; 0xcd3 - 683a: 2121 movs r1, #33 ; 0x21 - 683c: 4883 ldr r0, [pc, #524] ; (6a4c ) - 683e: f504 5a40 add.w sl, r4, #12288 ; 0x3000 + 6894: f8ba 38bc ldrh.w r3, [sl, #2236] ; 0x8bc + 6898: f854 2f04 ldr.w r2, [r4, #4]! + 689c: 429e cmp r6, r3 + 689e: d3c1 bcc.n 6824 + 68a0: e7d3 b.n 684a + 68a2: f8d5 7cf3 ldr.w r7, [r5, #3315] ; 0xcf3 + 68a6: 2121 movs r1, #33 ; 0x21 + 68a8: 4884 ldr r0, [pc, #528] ; (6abc ) + 68aa: f504 5a40 add.w sl, r4, #12288 ; 0x3000 uint8_t deviceType = (e >> 16) & 0xFF; - 6842: 0c3e lsrs r6, r7, #16 + 68ae: 0c3e lsrs r6, r7, #16 BMC_PRINTLN("BMCCtrl::hardware::PotCalibration", deviceType, index); - 6844: f64f 79ff movw r9, #65535 ; 0xffff - 6848: f025 fe7e bl 2c548 - 684c: 2101 movs r1, #1 + 68b0: f64f 79ff movw r9, #65535 ; 0xffff + 68b4: f025 febc bl 2c630 + 68b8: 2101 movs r1, #1 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 684e: b2f6 uxtb r6, r6 - 6850: 4879 ldr r0, [pc, #484] ; (6a38 ) - 6852: f025 fe79 bl 2c548 - 6856: 2300 movs r3, #0 - 6858: 220a movs r2, #10 - 685a: 4631 mov r1, r6 - 685c: 4877 ldr r0, [pc, #476] ; (6a3c ) - 685e: f023 fb25 bl 29eac - 6862: 2101 movs r1, #1 - 6864: 4874 ldr r0, [pc, #464] ; (6a38 ) - 6866: f025 fe6f bl 2c548 + 68ba: b2f6 uxtb r6, r6 + 68bc: 487a ldr r0, [pc, #488] ; (6aa8 ) + 68be: f025 feb7 bl 2c630 + 68c2: 2300 movs r3, #0 + 68c4: 220a movs r2, #10 + 68c6: 4631 mov r1, r6 + 68c8: 4878 ldr r0, [pc, #480] ; (6aac ) + 68ca: f023 fb65 bl 29f98 + 68ce: 2101 movs r1, #1 + 68d0: 4875 ldr r0, [pc, #468] ; (6aa8 ) + 68d2: f025 fead bl 2c630 size_t print(int n) { return print((long)n); } - 686a: 4874 ldr r0, [pc, #464] ; (6a3c ) - 686c: b2b9 uxth r1, r7 - 686e: f023 faf5 bl 29e5c + 68d6: 4875 ldr r0, [pc, #468] ; (6aac ) + 68d8: b2b9 uxth r1, r7 + 68da: f023 fb35 bl 29f48 size_t println(int n) { return print(n) + println(); } - 6872: 4872 ldr r0, [pc, #456] ; (6a3c ) - 6874: f023 fafe bl 29e74 - 6878: f8ba 8ada ldrh.w r8, [sl, #2778] ; 0xada + 68de: 4873 ldr r0, [pc, #460] ; (6aac ) + 68e0: f023 fb3e bl 29f60 + 68e4: f8ba 8afa ldrh.w r8, [sl, #2810] ; 0xafa if(potCalibration.active()){ - 687c: 45c8 cmp r8, r9 - 687e: d04b beq.n 6918 + 68e8: 45c8 cmp r8, r9 + 68ea: d04b beq.n 6984 } uint16_t getIndex(){ return potIndex; } uint16_t getMin(){ return min; - 6880: f8ba 1adc ldrh.w r1, [sl, #2780] ; 0xadc + 68ec: f8ba 1afc ldrh.w r1, [sl, #2812] ; 0xafc } uint16_t getMax(){ return max; - 6884: f8ba 2ade ldrh.w r2, [sl, #2782] ; 0xade + 68f0: f8ba 2afe ldrh.w r2, [sl, #2814] ; 0xafe if(potCalibration.getMin() < potCalibration.getMax()){ - 6888: 428a cmp r2, r1 - 688a: f240 8087 bls.w 699c + 68f4: 428a cmp r2, r1 + 68f6: f240 8087 bls.w 6a08 if(index < BMC_TOTAL_POTS_AUX_JACKS){ - 688e: f1b8 0f00 cmp.w r8, #0 - 6892: d141 bne.n 6918 + 68fa: f1b8 0f00 cmp.w r8, #0 + 68fe: d141 bne.n 6984 store.global.potCalibration[index].events[0] = min; - 6894: f8d5 0c9c ldr.w r0, [r5, #3228] ; 0xc9c - 6898: f500 5080 add.w r0, r0, #4096 ; 0x1000 + 6900: f8d5 0cbc ldr.w r0, [r5, #3260] ; 0xcbc + 6904: f500 5080 add.w r0, r0, #4096 ; 0x1000 store.global.potCalibration[index].events[1] = max; - 689c: f8a0 24ea strh.w r2, [r0, #1258] ; 0x4ea + 6908: f8a0 24ea strh.w r2, [r0, #1258] ; 0x4ea store.global.potCalibration[index].events[0] = min; - 68a0: f8a0 14e8 strh.w r1, [r0, #1256] ; 0x4e8 + 690c: f8a0 14e8 strh.w r1, [r0, #1256] ; 0x4e8 editor.setPotCalibration( - 68a4: f642 409c movw r0, #11420 ; 0x2c9c - 68a8: 4420 add r0, r4 + 6910: f642 40bc movw r0, #11452 ; 0x2cbc + 6914: 4420 add r0, r4 saveGlobalAndReloadData(); - 68aa: 9001 str r0, [sp, #4] - 68ac: f7ff fae0 bl 5e70 + 6916: 9001 str r0, [sp, #4] + 6918: f7ff faee bl 5ef8 bool canceled = false; - 68b0: 4642 mov r2, r8 - 68b2: 9801 ldr r0, [sp, #4] - 68b4: e034 b.n 6920 + 691c: 4642 mov r2, r8 + 691e: 9801 ldr r0, [sp, #4] + 6920: e034 b.n 698c } return true; } uint8_t getConnectedDeviceId(){ return device.id; - 68b6: f500 5340 add.w r3, r0, #12288 ; 0x3000 + 6922: f500 5340 add.w r3, r0, #12288 ; 0x3000 editor.utilitySendFasState(sync.fas.getConnectedDeviceId()); - 68ba: f642 409c movw r0, #11420 ; 0x2c9c - 68be: 2201 movs r2, #1 - 68c0: f893 1370 ldrb.w r1, [r3, #880] ; 0x370 - 68c4: 4420 add r0, r4 -} - 68c6: b007 add sp, #28 - 68c8: ecbd 8b02 vpop {d8} - 68cc: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 6926: f642 40bc movw r0, #11452 ; 0x2cbc + 692a: 2201 movs r2, #1 + 692c: f893 1390 ldrb.w r1, [r3, #912] ; 0x390 + 6930: 4420 add r0, r4 +} + 6932: b007 add sp, #28 + 6934: ecbd 8b02 vpop {d8} + 6938: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} editor.utilitySendFasState(sync.fas.getConnectedDeviceId()); - 68d0: f01b beea b.w 226a8 + 693c: f01b bf24 b.w 22788 return (potIndex!=0xFFFF); - 68d4: f500 5a40 add.w sl, r0, #12288 ; 0x3000 + 6940: f500 5a40 add.w sl, r0, #12288 ; 0x3000 if(potCalibration.active()){ - 68d8: f64f 72ff movw r2, #65535 ; 0xffff - 68dc: f8ba 1ada ldrh.w r1, [sl, #2778] ; 0xada - 68e0: 4291 cmp r1, r2 - 68e2: d14f bne.n 6984 - 68e4: 2119 movs r1, #25 - 68e6: 485a ldr r0, [pc, #360] ; (6a50 ) - 68e8: f025 fe2e bl 2c548 + 6944: f64f 72ff movw r2, #65535 ; 0xffff + 6948: f8ba 1afa ldrh.w r1, [sl, #2810] ; 0xafa + 694c: 4291 cmp r1, r2 + 694e: d14f bne.n 69f0 + 6950: 2119 movs r1, #25 + 6952: 485b ldr r0, [pc, #364] ; (6ac0 ) + 6954: f025 fe6c bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 68ec: 4853 ldr r0, [pc, #332] ; (6a3c ) - 68ee: f023 fac1 bl 29e74 - 68f2: f64f 72ff movw r2, #65535 ; 0xffff - 68f6: f8ba 1ada ldrh.w r1, [sl, #2778] ; 0xada + 6958: 4854 ldr r0, [pc, #336] ; (6aac ) + 695a: f023 fb01 bl 29f60 + 695e: f64f 72ff movw r2, #65535 ; 0xffff + 6962: f8ba 1afa ldrh.w r1, [sl, #2810] ; 0xafa editor.utilitySendAnalogInputCalibrationStatus(potCalibration.active(),true); - 68fa: 2301 movs r3, #1 - 68fc: f642 409c movw r0, #11420 ; 0x2c9c - 6900: 1a89 subs r1, r1, r2 - 6902: 461a mov r2, r3 - 6904: 4420 add r0, r4 - 6906: bf18 it ne - 6908: 2101 movne r1, #1 -} - 690a: b007 add sp, #28 - 690c: ecbd 8b02 vpop {d8} - 6910: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 6966: 2301 movs r3, #1 + 6968: f642 40bc movw r0, #11452 ; 0x2cbc + 696c: 1a89 subs r1, r1, r2 + 696e: 461a mov r2, r3 + 6970: 4420 add r0, r4 + 6972: bf18 it ne + 6974: 2101 movne r1, #1 +} + 6976: b007 add sp, #28 + 6978: ecbd 8b02 vpop {d8} + 697c: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} editor.utilitySendAnalogInputCalibrationStatus(potCalibration.active(),true); - 6914: f01c b8aa b.w 22a6c + 6980: f01c b8e4 b.w 22b4c editor.layerSendChangeMessage(false); - 6918: f642 409c movw r0, #11420 ; 0x2c9c + 6984: f642 40bc movw r0, #11452 ; 0x2cbc bool canceled = false; - 691c: 2200 movs r2, #0 + 6988: 2200 movs r2, #0 editor.layerSendChangeMessage(false); - 691e: 4420 add r0, r4 + 698a: 4420 add r0, r4 analogInputCalibrationToggle(deviceType, index); - 6920: fa0f fc87 sxth.w ip, r7 + 698c: fa0f fc87 sxth.w ip, r7 #endif #if BMC_TOTAL_POTS_AUX_JACKS > 0 BMCPotCalibration potCalibration; bool analogInputCalibrationToggle(int16_t deviceType=-1, int16_t n=-1){ if(deviceType==-1 || n==-1){ - 6924: f1bc 3fff cmp.w ip, #4294967295 ; 0xffffffff - 6928: d010 beq.n 694c + 6990: f1bc 3fff cmp.w ip, #4294967295 ; 0xffffffff + 6994: d010 beq.n 69b8 return false; } uint16_t len = BMC_MAX_POTS; if(deviceType == BMC_DEVICE_ID_GLOBAL_POT){ len = BMC_MAX_GLOBAL_POTS; } else if(deviceType == BMC_DEVICE_ID_AUX_JACK){ - 692a: 2e1b cmp r6, #27 + 6996: 2e1b cmp r6, #27 uint8_t deviceType = (e >> 16) & 0xFF; - 692c: 4635 mov r5, r6 - 692e: f000 8091 beq.w 6a54 + 6998: 4635 mov r5, r6 + 699a: f000 8093 beq.w 6ac4 uint16_t len = BMC_MAX_POTS; - 6932: 2600 movs r6, #0 - 6934: f8ba 4ada ldrh.w r4, [sl, #2778] ; 0xada + 699e: 2600 movs r6, #0 + 69a0: f8ba 4afa ldrh.w r4, [sl, #2810] ; 0xafa potCalibration.cancel(); return false; } #endif } if(!potCalibration.active() && n < len){ - 6938: f64f 71ff movw r1, #65535 ; 0xffff - 693c: 428c cmp r4, r1 - 693e: d105 bne.n 694c - 6940: 45b4 cmp ip, r6 - 6942: f280 8092 bge.w 6a6a + 69a4: f64f 71ff movw r1, #65535 ; 0xffff + 69a8: 428c cmp r4, r1 + 69aa: d105 bne.n 69b8 + 69ac: 45b4 cmp ip, r6 + 69ae: f280 8094 bge.w 6ada return potCalibration.toggle(deviceType, n); - 6946: b2bc uxth r4, r7 - 6948: 2101 movs r1, #1 - 694a: e003 b.n 6954 - 694c: 2500 movs r5, #0 - 694e: f64f 74ff movw r4, #65535 ; 0xffff - 6952: 4629 mov r1, r5 + 69b2: b2bc uxth r4, r7 + 69b4: 2101 movs r1, #1 + 69b6: e003 b.n 69c0 + 69b8: 2500 movs r5, #0 + 69ba: f64f 74ff movw r4, #65535 ; 0xffff + 69be: 4629 mov r1, r5 uint16_t potIndex = 0xFFFF; uint16_t min = 1023; uint16_t max = 0; void reset(){ deviceType = 0; potIndex = 0xFFFF; - 6954: f8aa 4ada strh.w r4, [sl, #2778] ; 0xada + 69c0: f8aa 4afa strh.w r4, [sl, #2810] ; 0xafa min = 1023; - 6958: f240 34ff movw r4, #1023 ; 0x3ff + 69c4: f240 34ff movw r4, #1023 ; 0x3ff editor.utilitySendAnalogInputCalibrationStatus(potCalibration.active(), canceled); - 695c: 2301 movs r3, #1 + 69c8: 2301 movs r3, #1 deviceType = 0; - 695e: f88a 5ad8 strb.w r5, [sl, #2776] ; 0xad8 + 69ca: f88a 5af8 strb.w r5, [sl, #2808] ; 0xaf8 min = 1023; - 6962: f8aa 4adc strh.w r4, [sl, #2780] ; 0xadc + 69ce: f8aa 4afc strh.w r4, [sl, #2812] ; 0xafc max = 0; - 6966: 2400 movs r4, #0 - 6968: f8aa 4ade strh.w r4, [sl, #2782] ; 0xade - 696c: e7cd b.n 690a - 696e: f8d5 1cd3 ldr.w r1, [r5, #3283] ; 0xcd3 + 69d2: 2400 movs r4, #0 + 69d4: f8aa 4afe strh.w r4, [sl, #2814] ; 0xafe + 69d8: e7cd b.n 6976 + 69da: f8d5 1cf3 ldr.w r1, [r5, #3315] ; 0xcf3 if(editor.getCtrlWrite() && editor.getCtrlValue() + 69de: 2904 cmp r1, #4 + 69e0: f63f ae94 bhi.w 670c setLayer(editor.getCtrlValue() & 0xFF); - 6978: 2300 movs r3, #0 - 697a: b2c9 uxtb r1, r1 - 697c: 461a mov r2, r3 - 697e: f00e fbdf bl 15140 - 6982: e68d b.n 66a0 + 69e4: 2300 movs r3, #0 + 69e6: b2c9 uxtb r1, r1 + 69e8: 461a mov r2, r3 + 69ea: f00e fc0f bl 1520c + 69ee: e68d b.n 670c deviceType = 0; - 6984: 2100 movs r1, #0 + 69f0: 2100 movs r1, #0 min = 1023; - 6986: f240 30ff movw r0, #1023 ; 0x3ff + 69f2: f240 30ff movw r0, #1023 ; 0x3ff potIndex = 0xFFFF; - 698a: f8aa 2ada strh.w r2, [sl, #2778] ; 0xada + 69f6: f8aa 2afa strh.w r2, [sl, #2810] ; 0xafa deviceType = 0; - 698e: f88a 1ad8 strb.w r1, [sl, #2776] ; 0xad8 + 69fa: f88a 1af8 strb.w r1, [sl, #2808] ; 0xaf8 min = 1023; - 6992: f8aa 0adc strh.w r0, [sl, #2780] ; 0xadc + 69fe: f8aa 0afc strh.w r0, [sl, #2812] ; 0xafc max = 0; - 6996: f8aa 1ade strh.w r1, [sl, #2782] ; 0xade + 6a02: f8aa 1afe strh.w r1, [sl, #2814] ; 0xafe return false; - 699a: e7a3 b.n 68e4 + 6a06: e7a3 b.n 6950 editor.layerSendChangeMessage(false); - 699c: f642 409c movw r0, #11420 ; 0x2c9c + 6a08: f642 40bc movw r0, #11452 ; 0x2cbc canceled = true; - 69a0: 2201 movs r2, #1 + 6a0c: 2201 movs r2, #1 editor.layerSendChangeMessage(false); - 69a2: 4420 add r0, r4 - 69a4: e7bc b.n 6920 + 6a0e: 4420 add r0, r4 + 6a10: e7bc b.n 698c if(deviceIndex < BMC_MAX_GLOBAL_LEDS){ - 69a6: 2e04 cmp r6, #4 - 69a8: f63f ae70 bhi.w 668c + 6a12: 2e04 cmp r6, #4 + 6a14: f63f ae70 bhi.w 66f8 globalLeds[deviceIndex].test(); - 69ac: eb06 0546 add.w r5, r6, r6, lsl #1 + 6a18: eb06 0346 add.w r3, r6, r6, lsl #1 + 6a1c: f643 1620 movw r6, #14624 ; 0x3920 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 69b0: 2604 movs r6, #4 - 69b2: 00ed lsls r5, r5, #3 - 69b4: f505 5364 add.w r3, r5, #14592 ; 0x3900 + 6a20: 2504 movs r5, #4 + 6a22: eb04 02c3 add.w r2, r4, r3, lsl #3 + 6a26: 4416 add r6, r2 digitalWrite(pin, t_value); - 69b8: 4425 add r5, r4 - 69ba: 441c add r4, r3 + 6a28: 4614 mov r4, r2 return bitRead(flags, bit); - 69bc: 7863 ldrb r3, [r4, #1] - 69be: f003 0701 and.w r7, r3, #1 - 69c2: 2f00 cmp r7, #0 + 6a2a: 7873 ldrb r3, [r6, #1] + 6a2c: f003 0701 and.w r7, r3, #1 + 6a30: 2f00 cmp r7, #0 writeToPin(!state); - 69c4: f087 0801 eor.w r8, r7, #1 - 69c8: 46bb mov fp, r7 + 6a32: f087 0801 eor.w r8, r7, #1 + 6a36: 46bb mov fp, r7 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 69ca: ea4f 2707 mov.w r7, r7, lsl #8 - 69ce: bf15 itete ne - 69d0: f44f 7280 movne.w r2, #256 ; 0x100 - 69d4: 2201 moveq r2, #1 - 69d6: f04f 0901 movne.w r9, #1 - 69da: f44f 7980 moveq.w r9, #256 ; 0x100 + 6a38: ea4f 2707 mov.w r7, r7, lsl #8 + 6a3c: bf15 itete ne + 6a3e: f44f 7280 movne.w r2, #256 ; 0x100 + 6a42: 2201 moveq r2, #1 + 6a44: f04f 0901 movne.w r9, #1 + 6a48: f44f 7980 moveq.w r9, #256 ; 0x100 if(isPwmCapable()){ - 69de: 0698 lsls r0, r3, #26 + 6a4c: 0698 lsls r0, r3, #26 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 69e0: ea4f 2a08 mov.w sl, r8, lsl #8 - 69e4: ee08 2a10 vmov s16, r2 + 6a4e: ea4f 2a08 mov.w sl, r8, lsl #8 + 6a52: ee08 2a10 vmov s16, r2 if(isPwmCapable()){ - 69e8: d51d bpl.n 6a26 + 6a56: d51d bpl.n 6a94 if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 69ea: 0659 lsls r1, r3, #25 - 69ec: d547 bpl.n 6a7e + 6a58: 0659 lsls r1, r3, #25 + 6a5a: d548 bpl.n 6aee analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 69ee: 4649 mov r1, r9 - 69f0: 7820 ldrb r0, [r4, #0] - 69f2: f023 ffb1 bl 2a958 + 6a5c: 4649 mov r1, r9 + 6a5e: 7830 ldrb r0, [r6, #0] + 6a60: f023 ffee bl 2aa40 delay(BMC_MAX_LED_TEST_DELAY); - 69f6: 2019 movs r0, #25 - 69f8: f023 fd68 bl 2a4cc - 69fc: 7863 ldrb r3, [r4, #1] + 6a64: 2019 movs r0, #25 + 6a66: f023 fda5 bl 2a5b4 + 6a6a: 7873 ldrb r3, [r6, #1] if(isPwmCapable()){ - 69fe: 069a lsls r2, r3, #26 - 6a00: d544 bpl.n 6a8c + 6a6c: 069a lsls r2, r3, #26 + 6a6e: d545 bpl.n 6afc if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 6a02: 0658 lsls r0, r3, #25 - 6a04: d534 bpl.n 6a70 + 6a70: 0658 lsls r0, r3, #25 + 6a72: d535 bpl.n 6ae0 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 6a06: ee18 1a10 vmov r1, s16 - 6a0a: 7820 ldrb r0, [r4, #0] - 6a0c: f023 ffa4 bl 2a958 + 6a74: ee18 1a10 vmov r1, s16 + 6a78: 7830 ldrb r0, [r6, #0] + 6a7a: f023 ffe1 bl 2aa40 for(uint8_t i = 0, n=(t_init ? 2 : 4) ; i < n ; i++){ - 6a10: 3e01 subs r6, #1 + 6a7e: 3d01 subs r5, #1 delay(BMC_MAX_LED_TEST_DELAY); - 6a12: 2019 movs r0, #25 - 6a14: f023 fd5a bl 2a4cc + 6a80: 2019 movs r0, #25 + 6a82: f023 fd97 bl 2a5b4 for(uint8_t i = 0, n=(t_init ? 2 : 4) ; i < n ; i++){ - 6a18: f016 06ff ands.w r6, r6, #255 ; 0xff - 6a1c: f43f ae36 beq.w 668c - 6a20: 7863 ldrb r3, [r4, #1] + 6a86: f015 05ff ands.w r5, r5, #255 ; 0xff + 6a8a: f43f ae35 beq.w 66f8 + 6a8e: 7873 ldrb r3, [r6, #1] if(isPwmCapable()){ - 6a22: 0698 lsls r0, r3, #26 - 6a24: d4e1 bmi.n 69ea + 6a90: 0698 lsls r0, r3, #26 + 6a92: d4e1 bmi.n 6a58 digitalWrite(pin, t_value); - 6a26: f505 5364 add.w r3, r5, #14592 ; 0x3900 - 6a2a: 4641 mov r1, r8 - 6a2c: 7818 ldrb r0, [r3, #0] - 6a2e: f023 fdcb bl 2a5c8 - 6a32: e7e0 b.n 69f6 - 6a34: 20001cec .word 0x20001cec - 6a38: 200023ec .word 0x200023ec - 6a3c: 20004ba8 .word 0x20004ba8 - 6a40: 20001cf8 .word 0x20001cf8 - 6a44: 20000eb0 .word 0x20000eb0 - 6a48: 20000ebc .word 0x20000ebc - 6a4c: 20001d04 .word 0x20001d04 - 6a50: 20001d28 .word 0x20001d28 + 6a94: f643 1320 movw r3, #14624 ; 0x3920 + 6a98: 4641 mov r1, r8 + 6a9a: 5ce0 ldrb r0, [r4, r3] + 6a9c: f023 fe08 bl 2a6b0 + 6aa0: e7e0 b.n 6a64 + 6aa2: bf00 nop + 6aa4: 20001cec .word 0x20001cec + 6aa8: 200023ec .word 0x200023ec + 6aac: 20004c68 .word 0x20004c68 + 6ab0: 20001cf8 .word 0x20001cf8 + 6ab4: 20000eb0 .word 0x20000eb0 + 6ab8: 20000ebc .word 0x20000ebc + 6abc: 20001d04 .word 0x20001d04 + 6ac0: 20001d28 .word 0x20001d28 if(!auxJacks[n].isPotMode()){ - 6a54: 2134 movs r1, #52 ; 0x34 - 6a56: f643 26e0 movw r6, #15072 ; 0x3ae0 - 6a5a: fb1c 6101 smlabb r1, ip, r1, r6 - 6a5e: 5c61 ldrb r1, [r4, r1] - 6a60: f011 0101 ands.w r1, r1, #1 - 6a64: d03a beq.n 6adc + 6ac4: 2134 movs r1, #52 ; 0x34 + 6ac6: f44f 566c mov.w r6, #15104 ; 0x3b00 + 6aca: fb1c 6101 smlabb r1, ip, r1, r6 + 6ace: 5c61 ldrb r1, [r4, r1] + 6ad0: f011 0101 ands.w r1, r1, #1 + 6ad4: d03a beq.n 6b4c len = BMC_MAX_AUX_JACKS; - 6a66: 2601 movs r6, #1 - 6a68: e764 b.n 6934 - 6a6a: 2500 movs r5, #0 - 6a6c: 4629 mov r1, r5 - 6a6e: e771 b.n 6954 + 6ad6: 2601 movs r6, #1 + 6ad8: e762 b.n 69a0 + 6ada: 2500 movs r5, #0 + 6adc: 4629 mov r1, r5 + 6ade: e76f b.n 69c0 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 6a70: f505 5364 add.w r3, r5, #14592 ; 0x3900 - 6a74: 4639 mov r1, r7 - 6a76: 7818 ldrb r0, [r3, #0] - 6a78: f023 ff6e bl 2a958 - 6a7c: e7c8 b.n 6a10 - 6a7e: f505 5364 add.w r3, r5, #14592 ; 0x3900 - 6a82: 4651 mov r1, sl - 6a84: 7818 ldrb r0, [r3, #0] - 6a86: f023 ff67 bl 2a958 - 6a8a: e7b4 b.n 69f6 + 6ae0: f643 1320 movw r3, #14624 ; 0x3920 + 6ae4: 4639 mov r1, r7 + 6ae6: 5ce0 ldrb r0, [r4, r3] + 6ae8: f023 ffaa bl 2aa40 + 6aec: e7c7 b.n 6a7e + 6aee: f643 1320 movw r3, #14624 ; 0x3920 + 6af2: 4651 mov r1, sl + 6af4: 5ce0 ldrb r0, [r4, r3] + 6af6: f023 ffa3 bl 2aa40 + 6afa: e7b3 b.n 6a64 digitalWrite(pin, t_value); - 6a8c: f505 5364 add.w r3, r5, #14592 ; 0x3900 - 6a90: 4659 mov r1, fp - 6a92: 7818 ldrb r0, [r3, #0] - 6a94: f023 fd98 bl 2a5c8 - 6a98: e7ba b.n 6a10 + 6afc: f643 1320 movw r3, #14624 ; 0x3920 + 6b00: 4659 mov r1, fp + 6b02: 5ce0 ldrb r0, [r4, r3] + 6b04: f023 fdd4 bl 2a6b0 + 6b08: e7b9 b.n 6a7e drawBuffer[num+0] = color & 255; - 6a9a: f803 7008 strb.w r7, [r3, r8] + 6b0a: f803 7008 strb.w r7, [r3, r8] drawBuffer[num+1] = (color >> 8) & 255; - 6a9e: 9a03 ldr r2, [sp, #12] - 6aa0: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 - 6aa4: 549f strb r7, [r3, r2] + 6b0e: 9a03 ldr r2, [sp, #12] + 6b10: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 + 6b14: 549f strb r7, [r3, r2] drawBuffer[num+2] = (color >> 16) & 255; - 6aa6: 9a04 ldr r2, [sp, #16] - 6aa8: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 - 6aac: 549f strb r7, [r3, r2] + 6b16: 9a04 ldr r2, [sp, #16] + 6b18: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 + 6b1c: 549f strb r7, [r3, r2] drawBuffer[num+3] = (color >> 24) & 255; - 6aae: 9a05 ldr r2, [sp, #20] - 6ab0: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 - 6ab4: 549f strb r7, [r3, r2] - 6ab6: e6ad b.n 6814 + 6b1e: 9a05 ldr r2, [sp, #20] + 6b20: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 + 6b24: 549f strb r7, [r3, r2] + 6b26: e6ab b.n 6880 drawBuffer[num+0] = color & 255; - 6ab8: f803 2008 strb.w r2, [r3, r8] + 6b28: f803 2008 strb.w r2, [r3, r8] drawBuffer[num+1] = (color >> 8) & 255; - 6abc: 0a11 lsrs r1, r2, #8 - 6abe: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 - 6ac2: 9803 ldr r0, [sp, #12] - 6ac4: 5419 strb r1, [r3, r0] + 6b2c: 0a11 lsrs r1, r2, #8 + 6b2e: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 + 6b32: 9803 ldr r0, [sp, #12] + 6b34: 5419 strb r1, [r3, r0] drawBuffer[num+2] = (color >> 16) & 255; - 6ac6: 0c11 lsrs r1, r2, #16 - 6ac8: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 + 6b36: 0c11 lsrs r1, r2, #16 + 6b38: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 drawBuffer[num+3] = (color >> 24) & 255; - 6acc: 0e12 lsrs r2, r2, #24 + 6b3c: 0e12 lsrs r2, r2, #24 drawBuffer[num+2] = (color >> 16) & 255; - 6ace: 9804 ldr r0, [sp, #16] - 6ad0: 5419 strb r1, [r3, r0] + 6b3e: 9804 ldr r0, [sp, #16] + 6b40: 5419 strb r1, [r3, r0] drawBuffer[num+3] = (color >> 24) & 255; - 6ad2: 9905 ldr r1, [sp, #20] - 6ad4: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 - 6ad8: 545a strb r2, [r3, r1] - 6ada: e680 b.n 67de - 6adc: 460d mov r5, r1 - 6ade: f64f 74ff movw r4, #65535 ; 0xffff - 6ae2: e737 b.n 6954 + 6b42: 9905 ldr r1, [sp, #20] + 6b44: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 + 6b48: 545a strb r2, [r3, r1] + 6b4a: e67e b.n 684a + 6b4c: 460d mov r5, r1 + 6b4e: f64f 74ff movw r4, #65535 ; 0xffff + 6b52: e735 b.n 69c0 uint8_t prev = currentColor[n]; - 6ae4: eb0a 0206 add.w r2, sl, r6 + 6b54: eb0a 0206 add.w r2, sl, r6 if(bitRead(prev, 7)){ - 6ae8: f992 08b8 ldrsb.w r0, [r2, #2232] ; 0x8b8 + 6b58: f992 08d8 ldrsb.w r0, [r2, #2264] ; 0x8d8 uint8_t prev = currentColor[n]; - 6aec: f892 28b8 ldrb.w r2, [r2, #2232] ; 0x8b8 + 6b5c: f892 28d8 ldrb.w r2, [r2, #2264] ; 0x8d8 if(bitRead(prev, 7)){ - 6af0: 2800 cmp r0, #0 - 6af2: da29 bge.n 6b48 + 6b60: 2800 cmp r0, #0 + 6b62: da29 bge.n 6bb8 class BMCPixelColors { private: BMCPixelColors(){} public: static uint32_t getRgbColor(uint8_t t_color){ switch(t_color & 0x7F){ - 6af4: f002 027f and.w r2, r2, #127 ; 0x7f - 6af8: 3a01 subs r2, #1 - 6afa: b2d2 uxtb r2, r2 - 6afc: 2a09 cmp r2, #9 - 6afe: d837 bhi.n 6b70 - 6b00: 4b26 ldr r3, [pc, #152] ; (6b9c ) - 6b02: f853 2022 ldr.w r2, [r3, r2, lsl #2] + 6b64: f002 027f and.w r2, r2, #127 ; 0x7f + 6b68: 3a01 subs r2, #1 + 6b6a: b2d2 uxtb r2, r2 + 6b6c: 2a09 cmp r2, #9 + 6b6e: d837 bhi.n 6be0 + 6b70: 4b26 ldr r3, [pc, #152] ; (6c0c ) + 6b72: f853 2022 ldr.w r2, [r3, r2, lsl #2] if (num >= numled) return; - 6b06: f8ba 089c ldrh.w r0, [sl, #2204] ; 0x89c - 6b0a: 4286 cmp r6, r0 - 6b0c: d211 bcs.n 6b32 + 6b76: f8ba 08bc ldrh.w r0, [sl, #2236] ; 0x8bc + 6b7a: 4286 cmp r6, r0 + 6b7c: d211 bcs.n 6ba2 if (config < 6) { - 6b0e: f89a 089f ldrb.w r0, [sl, #2207] ; 0x89f - 6b12: 2805 cmp r0, #5 + 6b7e: f89a 08bf ldrb.w r0, [sl, #2239] ; 0x8bf + 6b82: 2805 cmp r0, #5 drawBuffer[num+0] = color & 255; - 6b14: f8da 08a4 ldr.w r0, [sl, #2212] ; 0x8a4 + 6b84: f8da 08c4 ldr.w r0, [sl, #2244] ; 0x8c4 if (config < 6) { - 6b18: d82c bhi.n 6b74 + 6b88: d82c bhi.n 6be4 drawBuffer[num+0] = color & 255; - 6b1a: f800 2009 strb.w r2, [r0, r9] + 6b8a: f800 2009 strb.w r2, [r0, r9] drawBuffer[num+1] = (color >> 8) & 255; - 6b1e: 0a14 lsrs r4, r2, #8 - 6b20: 9b01 ldr r3, [sp, #4] + 6b8e: 0a14 lsrs r4, r2, #8 + 6b90: 9b01 ldr r3, [sp, #4] drawBuffer[num+2] = (color >> 16) & 255; - 6b22: 0c12 lsrs r2, r2, #16 + 6b92: 0c12 lsrs r2, r2, #16 drawBuffer[num+1] = (color >> 8) & 255; - 6b24: f8da 08a4 ldr.w r0, [sl, #2212] ; 0x8a4 - 6b28: 54c4 strb r4, [r0, r3] + 6b94: f8da 08c4 ldr.w r0, [sl, #2244] ; 0x8c4 + 6b98: 54c4 strb r4, [r0, r3] drawBuffer[num+2] = (color >> 16) & 255; - 6b2a: 9902 ldr r1, [sp, #8] - 6b2c: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 - 6b30: 545a strb r2, [r3, r1] + 6b9a: 9902 ldr r1, [sp, #8] + 6b9c: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 + 6ba0: 545a strb r2, [r3, r1] pixels.show(); - 6b32: 4658 mov r0, fp - 6b34: f022 fa28 bl 28f88 + 6ba2: 4658 mov r0, fp + 6ba4: f022 fa66 bl 29074 delay(5); - 6b38: 2005 movs r0, #5 + 6ba8: 2005 movs r0, #5 } - 6b3a: b007 add sp, #28 - 6b3c: ecbd 8b02 vpop {d8} - 6b40: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 6b44: f023 bcc2 b.w 2a4cc - 6b48: f8ba 08fa ldrh.w r0, [sl, #2298] ; 0x8fa + 6baa: b007 add sp, #28 + 6bac: ecbd 8b02 vpop {d8} + 6bb0: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 6bb4: f023 bcfe b.w 2a5b4 + 6bb8: f8ba 091a ldrh.w r0, [sl, #2330] ; 0x91a if(flags.read(BMC_PIXELS_FLAG_USE_DIM)){ - 6b4c: 0781 lsls r1, r0, #30 - 6b4e: f3c0 0240 ubfx r2, r0, #1, #1 - 6b52: d5d8 bpl.n 6b06 + 6bbc: 0781 lsls r1, r0, #30 + 6bbe: f3c0 0240 ubfx r2, r0, #1, #1 + 6bc2: d5d8 bpl.n 6b76 uint8_t offset = (uint16_t) ((n>0) ? (n/2) : 0); - 6b54: b306 cbz r6, 6b98 - 6b56: 0872 lsrs r2, r6, #1 + 6bc4: b306 cbz r6, 6c08 + 6bc6: 0872 lsrs r2, r6, #1 return (dimColors[offset] & 0x0F); - 6b58: 4452 add r2, sl + 6bc8: 4452 add r2, sl if(BMC_IS_EVEN(n)){ - 6b5a: 07eb lsls r3, r5, #31 - 6b5c: 4810 ldr r0, [pc, #64] ; (6ba0 ) + 6bca: 07eb lsls r3, r5, #31 + 6bcc: 4810 ldr r0, [pc, #64] ; (6c10 ) return (dimColors[offset] & 0x0F); - 6b5e: f892 28be ldrb.w r2, [r2, #2238] ; 0x8be - 6b62: bf54 ite pl - 6b64: f002 020f andpl.w r2, r2, #15 + 6bce: f892 28de ldrb.w r2, [r2, #2270] ; 0x8de + 6bd2: bf54 ite pl + 6bd4: f002 020f andpl.w r2, r2, #15 return ((dimColors[offset] >> 4) & 0x0F); - 6b68: 0912 lsrmi r2, r2, #4 + 6bd8: 0912 lsrmi r2, r2, #4 } return BMC_COLOR_RGB_BLACK; } static uint32_t getDimmedColor(uint8_t t_index){ #if BMC_TOTAL_PIXELS > 0 switch(t_index){ - 6b6a: f850 2022 ldr.w r2, [r0, r2, lsl #2] - 6b6e: e7ca b.n 6b06 + 6bda: f850 2022 ldr.w r2, [r0, r2, lsl #2] + 6bde: e7ca b.n 6b76 if(bitRead(prev, 7)){ - 6b70: 2200 movs r2, #0 + 6be0: 2200 movs r2, #0 if (num >= numled) return; - 6b72: e7c8 b.n 6b06 + 6be2: e7c8 b.n 6b76 drawBuffer[num+0] = color & 255; - 6b74: f800 2026 strb.w r2, [r0, r6, lsl #2] + 6be4: f800 2026 strb.w r2, [r0, r6, lsl #2] drawBuffer[num+1] = (color >> 8) & 255; - 6b78: 0a14 lsrs r4, r2, #8 - 6b7a: f8da 08a4 ldr.w r0, [sl, #2212] ; 0x8a4 + 6be8: 0a14 lsrs r4, r2, #8 + 6bea: f8da 08c4 ldr.w r0, [sl, #2244] ; 0x8c4 drawBuffer[num+2] = (color >> 16) & 255; - 6b7e: 0c12 lsrs r2, r2, #16 + 6bee: 0c12 lsrs r2, r2, #16 drawBuffer[num+1] = (color >> 8) & 255; - 6b80: 9b03 ldr r3, [sp, #12] - 6b82: 54c4 strb r4, [r0, r3] + 6bf0: 9b03 ldr r3, [sp, #12] + 6bf2: 54c4 strb r4, [r0, r3] drawBuffer[num+2] = (color >> 16) & 255; - 6b84: 9b04 ldr r3, [sp, #16] - 6b86: f8da 08a4 ldr.w r0, [sl, #2212] ; 0x8a4 - 6b8a: 54c2 strb r2, [r0, r3] + 6bf4: 9b04 ldr r3, [sp, #16] + 6bf6: f8da 08c4 ldr.w r0, [sl, #2244] ; 0x8c4 + 6bfa: 54c2 strb r2, [r0, r3] drawBuffer[num+3] = (color >> 24) & 255; - 6b8c: 2200 movs r2, #0 - 6b8e: f8da 38a4 ldr.w r3, [sl, #2212] ; 0x8a4 - 6b92: 9905 ldr r1, [sp, #20] - 6b94: 545a strb r2, [r3, r1] - 6b96: e7cc b.n 6b32 + 6bfc: 2200 movs r2, #0 + 6bfe: f8da 38c4 ldr.w r3, [sl, #2244] ; 0x8c4 + 6c02: 9905 ldr r1, [sp, #20] + 6c04: 545a strb r2, [r3, r1] + 6c06: e7cc b.n 6ba2 uint8_t offset = (uint16_t) ((n>0) ? (n/2) : 0); - 6b98: 4632 mov r2, r6 - 6b9a: e7dd b.n 6b58 - 6b9c: 20000eb0 .word 0x20000eb0 - 6ba0: 20000ed8 .word 0x20000ed8 + 6c08: 4632 mov r2, r6 + 6c0a: e7dd b.n 6bc8 + 6c0c: 20000eb0 .word 0x20000eb0 + 6c10: 20000ed8 .word 0x20000ed8 -00006ba4 : +00006c14 : return parameter; - 6ba4: f500 5300 add.w r3, r0, #8192 ; 0x2000 + 6c14: f500 5300 add.w r3, r0, #8192 ; 0x2000 #if BMC_MAX_PRESETS > 0 void BMC::ctrlPreset(){ - 6ba8: b510 push {r4, lr} - 6baa: f893 2cd2 ldrb.w r2, [r3, #3282] ; 0xcd2 - 6bae: 4604 mov r4, r0 + 6c18: b510 push {r4, lr} + 6c1a: f893 2cf2 ldrb.w r2, [r3, #3314] ; 0xcf2 + 6c1e: 4604 mov r4, r0 switch(editor.getCtrlParameter()){ - 6bb0: b12a cbz r2, 6bbe - 6bb2: 2a01 cmp r2, #1 - 6bb4: d102 bne.n 6bbc + 6c20: b12a cbz r2, 6c2e + 6c22: 2a01 cmp r2, #1 + 6c24: d102 bne.n 6c2c case BMC_CTRL_PRESET_GET: editor.utilitySendPreset(presets.get(), false); break; case BMC_CTRL_PRESET_SET: if(editor.getCtrlWrite()){ - 6bb6: f893 2cd0 ldrb.w r2, [r3, #3280] ; 0xcd0 - 6bba: b96a cbnz r2, 6bd8 + 6c26: f893 2cf0 ldrb.w r2, [r3, #3312] ; 0xcf0 + 6c2a: b96a cbnz r2, 6c48 editor.utilitySendPreset(presets.getBank(), presets.get(), false); } } break; } } - 6bbc: bd10 pop {r4, pc} + 6c2c: bd10 pop {r4, pc} return preset; - 6bbe: f500 5140 add.w r1, r0, #12288 ; 0x3000 + 6c2e: f500 5140 add.w r1, r0, #12288 ; 0x3000 editor.utilitySendPreset(presets.get(), false); - 6bc2: f642 409c movw r0, #11420 ; 0x2c9c - 6bc6: 2301 movs r3, #1 - 6bc8: f8d1 11fc ldr.w r1, [r1, #508] ; 0x1fc - 6bcc: 4420 add r0, r4 - 6bce: 7809 ldrb r1, [r1, #0] + 6c32: f642 40bc movw r0, #11452 ; 0x2cbc + 6c36: 2301 movs r3, #1 + 6c38: f8d1 121c ldr.w r1, [r1, #540] ; 0x21c + 6c3c: 4420 add r0, r4 + 6c3e: 7809 ldrb r1, [r1, #0] } - 6bd0: e8bd 4010 ldmia.w sp!, {r4, lr} + 6c40: e8bd 4010 ldmia.w sp!, {r4, lr} editor.utilitySendPreset(presets.get(), false); - 6bd4: f01b bee8 b.w 229a8 + 6c44: f01b bf20 b.w 22a88 return value; - 6bd8: f8d3 1cd3 ldr.w r1, [r3, #3283] ; 0xcd3 + 6c48: f8d3 1cf3 ldr.w r1, [r3, #3315] ; 0xcf3 presets.set(bank, preset); - 6bdc: f243 10ec movw r0, #12780 ; 0x31ec - 6be0: 2300 movs r3, #0 - 6be2: b2ca uxtb r2, r1 - 6be4: 4420 add r0, r4 - 6be6: f3c1 2107 ubfx r1, r1, #8, #8 - 6bea: f7f9 fce9 bl 5c0 - 6bee: f504 5380 add.w r3, r4, #4096 ; 0x1000 - 6bf2: f8d3 285c ldr.w r2, [r3, #2140] ; 0x85c + 6c4c: f243 200c movw r0, #12812 ; 0x320c + 6c50: 2300 movs r3, #0 + 6c52: b2ca uxtb r2, r1 + 6c54: 4420 add r0, r4 + 6c56: f3c1 2107 ubfx r1, r1, #8, #8 + 6c5a: f7f9 fcb1 bl 5c0 + 6c5e: f504 5380 add.w r3, r4, #4096 ; 0x1000 + 6c62: f8d3 285c ldr.w r2, [r3, #2140] ; 0x85c if(!globals.editorConnected()){ - 6bf6: f3c2 0380 ubfx r3, r2, #2, #1 - 6bfa: 0752 lsls r2, r2, #29 - 6bfc: d4de bmi.n 6bbc - 6bfe: f504 5240 add.w r2, r4, #12288 ; 0x3000 + 6c66: f3c2 0380 ubfx r3, r2, #2, #1 + 6c6a: 0752 lsls r2, r2, #29 + 6c6c: d4de bmi.n 6c2c + 6c6e: f504 5240 add.w r2, r4, #12288 ; 0x3000 return bank; - 6c02: e9d2 107e ldrd r1, r0, [r2, #504] ; 0x1f8 + 6c72: e9d2 1086 ldrd r1, r0, [r2, #536] ; 0x218 editor.utilitySendPreset(presets.getBank(), presets.get(), false); - 6c06: 7802 ldrb r2, [r0, #0] - 6c08: f642 409c movw r0, #11420 ; 0x2c9c - 6c0c: 7809 ldrb r1, [r1, #0] - 6c0e: 4420 add r0, r4 + 6c76: 7802 ldrb r2, [r0, #0] + 6c78: f642 40bc movw r0, #11452 ; 0x2cbc + 6c7c: 7809 ldrb r1, [r1, #0] + 6c7e: 4420 add r0, r4 } - 6c10: e8bd 4010 ldmia.w sp!, {r4, lr} + 6c80: e8bd 4010 ldmia.w sp!, {r4, lr} editor.utilitySendPreset(presets.getBank(), presets.get(), false); - 6c14: f01b bec8 b.w 229a8 + 6c84: f01b bf00 b.w 22a88 -00006c18 : +00006c88 : void BMC::editorRead(){ - 6c18: b570 push {r4, r5, r6, lr} + 6c88: b570 push {r4, r5, r6, lr} if(editor.read()){ - 6c1a: f642 459c movw r5, #11420 ; 0x2c9c + 6c8a: f642 45bc movw r5, #11452 ; 0x2cbc void BMC::editorRead(){ - 6c1e: 4604 mov r4, r0 + 6c8e: 4604 mov r4, r0 if(editor.read()){ - 6c20: 4405 add r5, r0 - 6c22: 4628 mov r0, r5 - 6c24: f013 ff52 bl 1aacc - 6c28: 2800 cmp r0, #0 - 6c2a: d145 bne.n 6cb8 - 6c2c: f504 5600 add.w r6, r4, #8192 ; 0x2000 + 6c90: 4405 add r5, r0 + 6c92: 4628 mov r0, r5 + 6c94: f013 ff8a bl 1abac + 6c98: 2800 cmp r0, #0 + 6c9a: d145 bne.n 6d28 + 6c9c: f504 5600 add.w r6, r4, #8192 ; 0x2000 if(editor.connectionHasChanged()){ - 6c30: 4628 mov r0, r5 - 6c32: f013 fdb7 bl 1a7a4 - 6c36: b198 cbz r0, 6c60 - 6c38: f504 5380 add.w r3, r4, #4096 ; 0x1000 - 6c3c: f8d3 285c ldr.w r2, [r3, #2140] ; 0x85c + 6ca0: 4628 mov r0, r5 + 6ca2: f013 fdef bl 1a884 + 6ca6: b198 cbz r0, 6cd0 + 6ca8: f504 5380 add.w r3, r4, #4096 ; 0x1000 + 6cac: f8d3 285c ldr.w r2, [r3, #2140] ; 0x85c if(!globals.editorConnected()){ - 6c40: 0755 lsls r5, r2, #29 - 6c42: f3c2 0080 ubfx r0, r2, #2, #1 - 6c46: d407 bmi.n 6c58 + 6cb0: 0755 lsls r5, r2, #29 + 6cb2: f3c2 0080 ubfx r0, r2, #2, #1 + 6cb6: d407 bmi.n 6cc8 return (potIndex!=0xFFFF); - 6c48: f504 5240 add.w r2, r4, #12288 ; 0x3000 + 6cb8: f504 5240 add.w r2, r4, #12288 ; 0x3000 if(potCalibration.active()){ - 6c4c: f64f 71ff movw r1, #65535 ; 0xffff - 6c50: f8b2 5ada ldrh.w r5, [r2, #2778] ; 0xada - 6c54: 428d cmp r5, r1 - 6c56: d149 bne.n 6cec + 6cbc: f64f 71ff movw r1, #65535 ; 0xffff + 6cc0: f8b2 5afa ldrh.w r5, [r2, #2810] ; 0xafa + 6cc4: 428d cmp r5, r1 + 6cc6: d149 bne.n 6d5c if(callback.editorConnection){ - 6c58: f8d3 3874 ldr.w r3, [r3, #2164] ; 0x874 - 6c5c: b103 cbz r3, 6c60 + 6cc8: f8d3 3874 ldr.w r3, [r3, #2164] ; 0x874 + 6ccc: b103 cbz r3, 6cd0 callback.editorConnection(globals.editorConnected()); - 6c5e: 4798 blx r3 + 6cce: 4798 blx r3 if(bitRead(flags, bit)){ - 6c60: f8d6 3ccc ldr.w r3, [r6, #3276] ; 0xccc - 6c64: 0519 lsls r1, r3, #20 - 6c66: d407 bmi.n 6c78 - 6c68: 039a lsls r2, r3, #14 - 6c6a: d400 bmi.n 6c6e + 6cd0: f8d6 3cec ldr.w r3, [r6, #3308] ; 0xcec + 6cd4: 0519 lsls r1, r3, #20 + 6cd6: d407 bmi.n 6ce8 + 6cd8: 039a lsls r2, r3, #14 + 6cda: d400 bmi.n 6cde } - 6c6c: bd70 pop {r4, r5, r6, pc} + 6cdc: bd70 pop {r4, r5, r6, pc} bitClear(flags, bit); - 6c6e: f423 3300 bic.w r3, r3, #131072 ; 0x20000 - 6c72: f8c6 3ccc str.w r3, [r6, #3276] ; 0xccc - 6c76: bd70 pop {r4, r5, r6, pc} - 6c78: f423 6300 bic.w r3, r3, #2048 ; 0x800 - 6c7c: 2505 movs r5, #5 - 6c7e: f8c6 3ccc str.w r3, [r6, #3276] ; 0xccc + 6cde: f423 3300 bic.w r3, r3, #131072 ; 0x20000 + 6ce2: f8c6 3cec str.w r3, [r6, #3308] ; 0xcec + 6ce6: bd70 pop {r4, r5, r6, pc} + 6ce8: f423 6300 bic.w r3, r3, #2048 ; 0x800 + 6cec: 2505 movs r5, #5 + 6cee: f8c6 3cec str.w r3, [r6, #3308] ; 0xcec controlFirstLed(true); - 6c82: 2101 movs r1, #1 - 6c84: 4620 mov r0, r4 - 6c86: f00c fc2d bl 134e4 + 6cf2: 2101 movs r1, #1 + 6cf4: 4620 mov r0, r4 + 6cf6: f00c fc59 bl 135ac delay(100); - 6c8a: 2064 movs r0, #100 ; 0x64 - 6c8c: f023 fc1e bl 2a4cc + 6cfa: 2064 movs r0, #100 ; 0x64 + 6cfc: f023 fc5a bl 2a5b4 controlFirstLed(false); - 6c90: 2100 movs r1, #0 - 6c92: 4620 mov r0, r4 - 6c94: f00c fc26 bl 134e4 + 6d00: 2100 movs r1, #0 + 6d02: 4620 mov r0, r4 + 6d04: f00c fc52 bl 135ac delay(100); - 6c98: 2064 movs r0, #100 ; 0x64 - 6c9a: f023 fc17 bl 2a4cc + 6d08: 2064 movs r0, #100 ; 0x64 + 6d0a: f023 fc53 bl 2a5b4 for(uint8_t i=0;i<5;i++){ - 6c9e: 1e6b subs r3, r5, #1 - 6ca0: f013 05ff ands.w r5, r3, #255 ; 0xff - 6ca4: d1ed bne.n 6c82 + 6d0e: 1e6b subs r3, r5, #1 + 6d10: f013 05ff ands.w r5, r3, #255 ; 0xff + 6d14: d1ed bne.n 6cf2 if(callback.eepromErased){ - 6ca6: f504 5480 add.w r4, r4, #4096 ; 0x1000 - 6caa: f8d4 38e4 ldr.w r3, [r4, #2276] ; 0x8e4 - 6cae: b103 cbz r3, 6cb2 + 6d16: f504 5480 add.w r4, r4, #4096 ; 0x1000 + 6d1a: f8d4 38e4 ldr.w r3, [r4, #2276] ; 0x8e4 + 6d1e: b103 cbz r3, 6d22 callback.eepromErased(); - 6cb0: 4798 blx r3 + 6d20: 4798 blx r3 if(bitRead(flags, bit)){ - 6cb2: f8d6 3ccc ldr.w r3, [r6, #3276] ; 0xccc - 6cb6: e7d7 b.n 6c68 + 6d22: f8d6 3cec ldr.w r3, [r6, #3308] ; 0xcec + 6d26: e7d7 b.n 6cd8 if(editor.readyToReload()){ - 6cb8: 4628 mov r0, r5 - 6cba: f013 fd53 bl 1a764 - 6cbe: b978 cbnz r0, 6ce0 + 6d28: 4628 mov r0, r5 + 6d2a: f013 fd8b bl 1a844 + 6d2e: b978 cbnz r0, 6d50 } else if(editor.dataForBMCAvailable()){ - 6cc0: 4628 mov r0, r5 + 6d30: 4628 mov r0, r5 return group; - 6cc2: f504 5600 add.w r6, r4, #8192 ; 0x2000 - 6cc6: f013 fd59 bl 1a77c - 6cca: 2800 cmp r0, #0 - 6ccc: d0b0 beq.n 6c30 - 6cce: f896 3cd1 ldrb.w r3, [r6, #3281] ; 0xcd1 + 6d32: f504 5600 add.w r6, r4, #8192 ; 0x2000 + 6d36: f013 fd91 bl 1a85c + 6d3a: 2800 cmp r0, #0 + 6d3c: d0b0 beq.n 6ca0 + 6d3e: f896 3cf1 ldrb.w r3, [r6, #3313] ; 0xcf1 switch(editor.getCtrlGroup()){ - 6cd2: b1d3 cbz r3, 6d0a - 6cd4: 2b01 cmp r3, #1 - 6cd6: d1ab bne.n 6c30 + 6d42: b1d3 cbz r3, 6d7a + 6d44: 2b01 cmp r3, #1 + 6d46: d1ab bne.n 6ca0 ctrlPreset(); - 6cd8: 4620 mov r0, r4 - 6cda: f7ff ff63 bl 6ba4 + 6d48: 4620 mov r0, r4 + 6d4a: f7ff ff63 bl 6c14 break; - 6cde: e7a7 b.n 6c30 + 6d4e: e7a7 b.n 6ca0 assignStoreData(); - 6ce0: 4620 mov r0, r4 - 6ce2: f504 5600 add.w r6, r4, #8192 ; 0x2000 - 6ce6: f7ff fa25 bl 6134 - 6cea: e7a1 b.n 6c30 + 6d50: 4620 mov r0, r4 + 6d52: f504 5600 add.w r6, r4, #8192 ; 0x2000 + 6d56: f7ff fa31 bl 61bc + 6d5a: e7a1 b.n 6ca0 potIndex = 0xFFFF; - 6cec: f8a2 1ada strh.w r1, [r2, #2778] ; 0xada + 6d5c: f8a2 1afa strh.w r1, [r2, #2810] ; 0xafa min = 1023; - 6cf0: f240 31ff movw r1, #1023 ; 0x3ff + 6d60: f240 31ff movw r1, #1023 ; 0x3ff deviceType = 0; - 6cf4: f882 0ad8 strb.w r0, [r2, #2776] ; 0xad8 + 6d64: f882 0af8 strb.w r0, [r2, #2808] ; 0xaf8 if(callback.editorConnection){ - 6cf8: f8d3 3874 ldr.w r3, [r3, #2164] ; 0x874 + 6d68: f8d3 3874 ldr.w r3, [r3, #2164] ; 0x874 max = 0; - 6cfc: f8a2 0ade strh.w r0, [r2, #2782] ; 0xade + 6d6c: f8a2 0afe strh.w r0, [r2, #2814] ; 0xafe min = 1023; - 6d00: f8a2 1adc strh.w r1, [r2, #2780] ; 0xadc - 6d04: 2b00 cmp r3, #0 - 6d06: d1aa bne.n 6c5e - 6d08: e7aa b.n 6c60 + 6d70: f8a2 1afc strh.w r1, [r2, #2812] ; 0xafc + 6d74: 2b00 cmp r3, #0 + 6d76: d1aa bne.n 6cce + 6d78: e7aa b.n 6cd0 ctrlHardware(); - 6d0a: 4620 mov r0, r4 - 6d0c: f7ff fc9a bl 6644 + 6d7a: 4620 mov r0, r4 + 6d7c: f7ff fc98 bl 66b0 break; - 6d10: e78e b.n 6c30 - 6d12: bf00 nop + 6d80: e78e b.n 6ca0 + 6d82: bf00 nop -00006d14 : +00006d84 : return (timeout>0 && (current >= timeout)); - 6d14: 6843 ldr r3, [r0, #4] - 6d16: b12b cbz r3, 6d24 - 6d18: 6880 ldr r0, [r0, #8] + 6d84: 6843 ldr r3, [r0, #4] + 6d86: b12b cbz r3, 6d94 + 6d88: 6880 ldr r0, [r0, #8] return reached() ? 2 : 1; - 6d1a: 4283 cmp r3, r0 - 6d1c: bf8c ite hi - 6d1e: 2001 movhi r0, #1 - 6d20: 2002 movls r0, #2 - 6d22: 4770 bx lr - 6d24: 2001 movs r0, #1 + 6d8a: 4283 cmp r3, r0 + 6d8c: bf8c ite hi + 6d8e: 2001 movhi r0, #1 + 6d90: 2002 movls r0, #2 + 6d92: 4770 bx lr + 6d94: 2001 movs r0, #1 } - 6d26: 4770 bx lr + 6d96: 4770 bx lr -00006d28 : +00006d98 : uint8_t getBlockChannel(uint16_t n){ if(!connected()){ return 0; } bool value = false; for(int e = 0; e < BMC_FAS3_BLOCKS_COUNT; e++){ - 6d28: 2300 movs r3, #0 - 6d2a: f500 7cac add.w ip, r0, #344 ; 0x158 - 6d2e: e002 b.n 6d36 - 6d30: 3301 adds r3, #1 - 6d32: 2b5b cmp r3, #91 ; 0x5b - 6d34: d00b beq.n 6d4e + 6d98: 2300 movs r3, #0 + 6d9a: f500 7cac add.w ip, r0, #344 ; 0x158 + 6d9e: e002 b.n 6da6 + 6da0: 3301 adds r3, #1 + 6da2: 2b5b cmp r3, #91 ; 0x5b + 6da4: d00b beq.n 6dbe if(blocksInfo[e].id == n){ - 6d36: f81c 2033 ldrb.w r2, [ip, r3, lsl #3] - 6d3a: 428a cmp r2, r1 - 6d3c: d1f8 bne.n 6d30 + 6da6: f81c 2033 ldrb.w r2, [ip, r3, lsl #3] + 6daa: 428a cmp r2, r1 + 6dac: d1f8 bne.n 6da0 // ((flags >> 4) & 0x07); // number of channels supported for this effect (0-7). bool getBlockState(uint8_t t_id){ return bitRead(blockStates[t_id], 0)==0; } uint8_t getBlockChannel(uint8_t t_id){ return ((blockStates[t_id] >> 1) & 0x07); - 6d3e: 4418 add r0, r3 - 6d40: f890 00e5 ldrb.w r0, [r0, #229] ; 0xe5 + 6dae: 4418 add r0, r3 + 6db0: f890 00e5 ldrb.w r0, [r0, #229] ; 0xe5 value = preset.getBlockChannel(e); break; } } return value; - 6d44: f010 000e ands.w r0, r0, #14 - 6d48: bf18 it ne - 6d4a: 2001 movne r0, #1 + 6db4: f010 000e ands.w r0, r0, #14 + 6db8: bf18 it ne + 6dba: 2001 movne r0, #1 break; - 6d4c: 4770 bx lr - 6d4e: 2000 movs r0, #0 + 6dbc: 4770 bx lr + 6dbe: 2000 movs r0, #0 } - 6d50: 4770 bx lr - 6d52: bf00 nop + 6dc0: 4770 bx lr + 6dc2: bf00 nop -00006d54 : +00006dc4 : void setPresetNumber(uint16_t t_value){ - 6d54: b570 push {r4, r5, r6, lr} + 6dc4: b570 push {r4, r5, r6, lr} midi.sendControlChange(device.port, device.channel, cc, value); - 6d56: 2201 movs r2, #1 + 6dc6: 2201 movs r2, #1 void setPresetNumber(uint16_t t_value){ - 6d58: b084 sub sp, #16 + 6dc8: b084 sub sp, #16 midi.sendControlChange(device.port, device.channel, cc, value); - 6d5a: 2600 movs r6, #0 + 6dca: 2600 movs r6, #0 void setPresetNumber(uint16_t t_value){ - 6d5c: 4604 mov r4, r0 + 6dcc: 4604 mov r4, r0 midi.sendControlChange(device.port, device.channel, cc, value); - 6d5e: 9202 str r2, [sp, #8] - 6d60: f3c1 12c6 ubfx r2, r1, #7, #7 - 6d64: 4633 mov r3, r6 + 6dce: 9202 str r2, [sp, #8] + 6dd0: f3c1 12c6 ubfx r2, r1, #7, #7 + 6dd4: 4633 mov r3, r6 void setPresetNumber(uint16_t t_value){ - 6d66: 460d mov r5, r1 + 6dd6: 460d mov r5, r1 midi.sendControlChange(device.port, device.channel, cc, value); - 6d68: e9cd 2600 strd r2, r6, [sp] - 6d6c: 7f82 ldrb r2, [r0, #30] - 6d6e: 7f41 ldrb r1, [r0, #29] - 6d70: 6800 ldr r0, [r0, #0] - 6d72: f01c fb33 bl 233dc + 6dd8: e9cd 2600 strd r2, r6, [sp] + 6ddc: 7f82 ldrb r2, [r0, #30] + 6dde: 7f41 ldrb r1, [r0, #29] + 6de0: 6800 ldr r0, [r0, #0] + 6de2: f01c fb5d bl 234a0 return bitRead(flags, 0); - 6d76: 7fe3 ldrb r3, [r4, #31] + 6de6: 7fe3 ldrb r3, [r4, #31] if(connected()){ - 6d78: 07db lsls r3, r3, #31 - 6d7a: d40b bmi.n 6d94 - 6d7c: 4b0a ldr r3, [pc, #40] ; (6da8 ) + 6de8: 07db lsls r3, r3, #31 + 6dea: d40b bmi.n 6e04 + 6dec: 4b0a ldr r3, [pc, #40] ; (6e18 ) interval = value; - 6d7e: 2001 movs r0, #1 - 6d80: f241 3188 movw r1, #5000 ; 0x1388 - 6d84: 681a ldr r2, [r3, #0] - 6d86: 681b ldr r3, [r3, #0] - 6d88: 8620 strh r0, [r4, #48] ; 0x30 - 6d8a: 8521 strh r1, [r4, #40] ; 0x28 + 6dee: 2001 movs r0, #1 + 6df0: f241 3188 movw r1, #5000 ; 0x1388 + 6df4: 681a ldr r2, [r3, #0] + 6df6: 681b ldr r3, [r3, #0] + 6df8: 8620 strh r0, [r4, #48] ; 0x30 + 6dfa: 8521 strh r1, [r4, #40] ; 0x28 prevTime = (unsigned long) _BMCTiming::get(); - 6d8c: 6362 str r2, [r4, #52] ; 0x34 - 6d8e: 62e3 str r3, [r4, #44] ; 0x2c + 6dfc: 6362 str r2, [r4, #52] ; 0x34 + 6dfe: 62e3 str r3, [r4, #44] ; 0x2c } - 6d90: b004 add sp, #16 - 6d92: bd70 pop {r4, r5, r6, pc} + 6e00: b004 add sp, #16 + 6e02: bd70 pop {r4, r5, r6, pc} midi.sendProgramChange(device.port, device.channel, program); - 6d94: 7fa2 ldrb r2, [r4, #30] - 6d96: f005 037f and.w r3, r5, #127 ; 0x7f - 6d9a: 7f61 ldrb r1, [r4, #29] - 6d9c: 9600 str r6, [sp, #0] - 6d9e: 6820 ldr r0, [r4, #0] - 6da0: f01c f9a2 bl 230e8 - 6da4: e7ea b.n 6d7c - 6da6: bf00 nop - 6da8: 2000bae8 .word 0x2000bae8 - -00006dac (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]>: + 6e04: 7fa2 ldrb r2, [r4, #30] + 6e06: f005 037f and.w r3, r5, #127 ; 0x7f + 6e0a: 7f61 ldrb r1, [r4, #29] + 6e0c: 9600 str r6, [sp, #0] + 6e0e: 6820 ldr r0, [r4, #0] + 6e10: f01c f9d0 bl 231b4 + 6e14: e7ea b.n 6dec + 6e16: bf00 nop + 6e18: 2000bb08 .word 0x2000bb08 + +00006e1c (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]>: // ***************************************************************************** // ********************************** Helpers ********************************** // ***************************************************************************** template bool renderTriangle(T& display, BMCDataContainer d, BMCDiplayHandlerData t, bool t_reset=false){ - 6dac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 6db0: b089 sub sp, #36 ; 0x24 - 6db2: 468a mov sl, r1 - 6db4: f8bd 4048 ldrh.w r4, [sp, #72] ; 0x48 - 6db8: f8bd 504c ldrh.w r5, [sp, #76] ; 0x4c + 6e1c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 6e20: b089 sub sp, #36 ; 0x24 + 6e22: 468a mov sl, r1 + 6e24: f8bd 4048 ldrh.w r4, [sp, #72] ; 0x48 + 6e28: f8bd 504c ldrh.w r5, [sp, #76] ; 0x4c uint16_t iconSize = t.h-4; uint16_t centerX = t.w/2; - 6dbc: 0866 lsrs r6, r4, #1 + 6e2c: 0866 lsrs r6, r4, #1 bool renderTriangle(T& display, BMCDataContainer d, BMCDiplayHandlerData t, bool t_reset=false){ - 6dbe: f89d c058 ldrb.w ip, [sp, #88] ; 0x58 + 6e2e: f89d c058 ldrb.w ip, [sp, #88] ; 0x58 uint16_t centerY = t.h/2; if(t.h > t.w){ - 6dc2: 42ac cmp r4, r5 + 6e32: 42ac cmp r4, r5 bool renderTriangle(T& display, BMCDataContainer d, BMCDiplayHandlerData t, bool t_reset=false){ - 6dc4: f8bd 9050 ldrh.w r9, [sp, #80] ; 0x50 - 6dc8: f8bd b054 ldrh.w fp, [sp, #84] ; 0x54 + 6e34: f8bd 9050 ldrh.w r9, [sp, #80] ; 0x50 + 6e38: f8bd b054 ldrh.w fp, [sp, #84] ; 0x54 uint16_t centerY = t.h/2; - 6dcc: ea4f 0755 mov.w r7, r5, lsr #1 + 6e3c: ea4f 0755 mov.w r7, r5, lsr #1 uint16_t iconSize = t.h-4; - 6dd0: bf2c ite cs - 6dd2: 1f2c subcs r4, r5, #4 + 6e40: bf2c ite cs + 6e42: 1f2c subcs r4, r5, #4 iconSize = t.w-4; - 6dd4: 3c04 subcc r4, #4 + 6e44: 3c04 subcc r4, #4 } if(t.h >= 64){ - 6dd6: 2d3f cmp r5, #63 ; 0x3f + 6e46: 2d3f cmp r5, #63 ; 0x3f bool renderTriangle(T& display, BMCDataContainer d, BMCDiplayHandlerData t, bool t_reset=false){ - 6dd8: f89d 105c ldrb.w r1, [sp, #92] ; 0x5c + 6e48: f89d 105c ldrb.w r1, [sp, #92] ; 0x5c iconSize = t.w-4; - 6ddc: b2a4 uxth r4, r4 + 6e4c: b2a4 uxth r4, r4 iconSize -= 8; - 6dde: bf8c ite hi - 6de0: 3c08 subhi r4, #8 + 6e4e: bf8c ite hi + 6e50: 3c08 subhi r4, #8 } else { iconSize -= 4; - 6de2: 3c04 subls r4, #4 - 6de4: b2a4 uxth r4, r4 + 6e52: 3c04 subls r4, #4 + 6e54: b2a4 uxth r4, r4 } uint8_t halfIcon = iconSize/2; - 6de6: ea4f 0e54 mov.w lr, r4, lsr #1 - 6dea: fa5f fe8e uxtb.w lr, lr + 6e56: ea4f 0e54 mov.w lr, r4, lsr #1 + 6e5a: fa5f fe8e uxtb.w lr, lr uint8_t thickness = 2; if(!t.mirror){ - 6dee: f1bc 0f00 cmp.w ip, #0 - 6df2: d121 bne.n 6e38 (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x8c> + 6e5e: f1bc 0f00 cmp.w ip, #0 + 6e62: d121 bne.n 6ea8 (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x8c> // TRIANGLE uint16_t x0 = (centerX-halfIcon); uint16_t x1 = x0; uint16_t x2 = (centerX+halfIcon); uint16_t y0 = t.h - ((t.h-iconSize)/2); - 6df4: 1b2c subs r4, r5, r4 + 6e64: 1b2c subs r4, r5, r4 uint16_t x0 = (centerX-halfIcon); - 6df6: eba6 080e sub.w r8, r6, lr + 6e66: eba6 080e sub.w r8, r6, lr uint16_t x2 = (centerX+halfIcon); - 6dfa: 4476 add r6, lr + 6e6a: 4476 add r6, lr uint16_t y0 = t.h - ((t.h-iconSize)/2); - 6dfc: bf48 it mi - 6dfe: 3401 addmi r4, #1 + 6e6c: bf48 it mi + 6e6e: 3401 addmi r4, #1 uint16_t x0 = (centerX-halfIcon); - 6e00: fa1f f888 uxth.w r8, r8 + 6e70: fa1f f888 uxth.w r8, r8 uint16_t x2 = (centerX+halfIcon); - 6e04: 9605 str r6, [sp, #20] + 6e74: 9605 str r6, [sp, #20] uint16_t y1 = (t.h-iconSize)/2; uint16_t y2 = centerY; if(t_reset){ display.fillTriangle(t.x+x0, t.y+y0, t.x+x1, t.y+y1, t.x+x2, t.y+y2, t.color); - 6e06: b29e uxth r6, r3 + 6e76: b29e uxth r6, r3 uint16_t y0 = t.h - ((t.h-iconSize)/2); - 6e08: 1064 asrs r4, r4, #1 - 6e0a: 4264 negs r4, r4 - 6e0c: 4425 add r5, r4 + 6e78: 1064 asrs r4, r4, #1 + 6e7a: 4264 negs r4, r4 + 6e7c: 4425 add r5, r4 uint16_t y1 = (t.h-iconSize)/2; - 6e0e: 4264 negs r4, r4 + 6e7e: 4264 negs r4, r4 uint16_t y0 = t.h - ((t.h-iconSize)/2); - 6e10: b2ad uxth r5, r5 + 6e80: b2ad uxth r5, r5 uint16_t y1 = (t.h-iconSize)/2; - 6e12: b2a4 uxth r4, r4 + 6e82: b2a4 uxth r4, r4 uint16_t y0 = t.h - ((t.h-iconSize)/2); - 6e14: 9506 str r5, [sp, #24] + 6e84: 9506 str r5, [sp, #24] display.fillTriangle(t.x+x0, t.y+y0, t.x+x1, t.y+y1, t.x+x2, t.y+y2, t.color); - 6e16: b295 uxth r5, r2 + 6e86: b295 uxth r5, r2 if(t_reset){ - 6e18: 2900 cmp r1, #0 - 6e1a: d158 bne.n 6ece (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x122> + 6e88: 2900 cmp r1, #0 + 6e8a: d158 bne.n 6f3e (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x122> display.fillTriangle(t.x+x0, t.y+y0, t.x+x1, t.y+y1, t.x+x2, t.y+y2, t.color); - 6e1c: 4437 add r7, r6 - 6e1e: b23f sxth r7, r7 + 6e8c: 4437 add r7, r6 + 6e8e: b23f sxth r7, r7 } display.fillTriangle(t.x+x0+thickness, (t.y+y0)-(thickness*2), t.x+x1+thickness, (t.y+y1)+(thickness*2), (t.x+x2)-(thickness*2), t.y+y2, d.highlight?t.color:t.background); - 6e20: f1ba 0f00 cmp.w sl, #0 - 6e24: bf08 it eq - 6e26: 46d9 moveq r9, fp - 6e28: 9a05 ldr r2, [sp, #20] - 6e2a: f108 0302 add.w r3, r8, #2 - 6e2e: 3404 adds r4, #4 - 6e30: 3a04 subs r2, #4 - 6e32: e9cd 7914 strd r7, r9, [sp, #80] ; 0x50 - 6e36: e020 b.n 6e7a (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xce> + 6e90: f1ba 0f00 cmp.w sl, #0 + 6e94: bf08 it eq + 6e96: 46d9 moveq r9, fp + 6e98: 9a05 ldr r2, [sp, #20] + 6e9a: f108 0302 add.w r3, r8, #2 + 6e9e: 3404 adds r4, #4 + 6ea0: 3a04 subs r2, #4 + 6ea2: e9cd 7914 strd r7, r9, [sp, #80] ; 0x50 + 6ea6: e020 b.n 6eea (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xce> } else { uint16_t x0 = (centerX+halfIcon); uint16_t x1 = x0; uint16_t x2 = (centerX-halfIcon); uint16_t y0 = t.h - ((t.h-iconSize)/2); - 6e38: 1b2c subs r4, r5, r4 + 6ea8: 1b2c subs r4, r5, r4 uint16_t x2 = (centerX-halfIcon); - 6e3a: eba6 0c0e sub.w ip, r6, lr + 6eaa: eba6 0c0e sub.w ip, r6, lr uint16_t x0 = (centerX+halfIcon); - 6e3e: eb06 080e add.w r8, r6, lr + 6eae: eb06 080e add.w r8, r6, lr uint16_t y0 = t.h - ((t.h-iconSize)/2); - 6e42: bf48 it mi - 6e44: 3401 addmi r4, #1 + 6eb2: bf48 it mi + 6eb4: 3401 addmi r4, #1 uint16_t x2 = (centerX-halfIcon); - 6e46: fa1f f68c uxth.w r6, ip + 6eb6: fa1f f68c uxth.w r6, ip uint16_t y0 = t.h - ((t.h-iconSize)/2); - 6e4a: 1064 asrs r4, r4, #1 + 6eba: 1064 asrs r4, r4, #1 uint16_t x2 = (centerX-halfIcon); - 6e4c: 9605 str r6, [sp, #20] + 6ebc: 9605 str r6, [sp, #20] uint16_t y1 = (t.h-iconSize)/2; uint16_t y2 = centerY; if(t_reset){ display.fillTriangle(t.x+x0, t.y+y0, t.x+x1, t.y+y1, t.x+x2, t.y+y2, t.color); - 6e4e: b29e uxth r6, r3 + 6ebe: b29e uxth r6, r3 uint16_t y0 = t.h - ((t.h-iconSize)/2); - 6e50: 4264 negs r4, r4 - 6e52: 4425 add r5, r4 + 6ec0: 4264 negs r4, r4 + 6ec2: 4425 add r5, r4 uint16_t y1 = (t.h-iconSize)/2; - 6e54: 4264 negs r4, r4 + 6ec4: 4264 negs r4, r4 uint16_t y0 = t.h - ((t.h-iconSize)/2); - 6e56: b2ad uxth r5, r5 + 6ec6: b2ad uxth r5, r5 uint16_t y1 = (t.h-iconSize)/2; - 6e58: b2a4 uxth r4, r4 + 6ec8: b2a4 uxth r4, r4 uint16_t y0 = t.h - ((t.h-iconSize)/2); - 6e5a: 9506 str r5, [sp, #24] + 6eca: 9506 str r5, [sp, #24] display.fillTriangle(t.x+x0, t.y+y0, t.x+x1, t.y+y1, t.x+x2, t.y+y2, t.color); - 6e5c: b295 uxth r5, r2 + 6ecc: b295 uxth r5, r2 if(t_reset){ - 6e5e: b9f1 cbnz r1, 6e9e (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xf2> + 6ece: b9f1 cbnz r1, 6f0e (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xf2> display.fillTriangle(t.x+x0, t.y+y0, t.x+x1, t.y+y1, t.x+x2, t.y+y2, t.color); - 6e60: 4437 add r7, r6 - 6e62: b23f sxth r7, r7 + 6ed0: 4437 add r7, r6 + 6ed2: b23f sxth r7, r7 } display.fillTriangle((t.x+x0)-thickness, (t.y+y0)-(thickness*2), (t.x+x1)-thickness, (t.y+y1)+(thickness*2), (t.x+x2)+(thickness*2), t.y+y2, d.highlight?t.color:t.background); - 6e64: 9a05 ldr r2, [sp, #20] - 6e66: f1ba 0f00 cmp.w sl, #0 - 6e6a: bf08 it eq - 6e6c: 46d9 moveq r9, fp - 6e6e: f1a8 0302 sub.w r3, r8, #2 - 6e72: 3404 adds r4, #4 - 6e74: 3204 adds r2, #4 - 6e76: e9cd 7914 strd r7, r9, [sp, #80] ; 0x50 - 6e7a: 442b add r3, r5 - 6e7c: 4415 add r5, r2 - 6e7e: 9a06 ldr r2, [sp, #24] - 6e80: 4434 add r4, r6 - 6e82: b21b sxth r3, r3 - 6e84: 3a04 subs r2, #4 - 6e86: b224 sxth r4, r4 - 6e88: b22d sxth r5, r5 - 6e8a: 4619 mov r1, r3 - 6e8c: 4432 add r2, r6 - 6e8e: 9412 str r4, [sp, #72] ; 0x48 - 6e90: 9513 str r5, [sp, #76] ; 0x4c - 6e92: b212 sxth r2, r2 + 6ed4: 9a05 ldr r2, [sp, #20] + 6ed6: f1ba 0f00 cmp.w sl, #0 + 6eda: bf08 it eq + 6edc: 46d9 moveq r9, fp + 6ede: f1a8 0302 sub.w r3, r8, #2 + 6ee2: 3404 adds r4, #4 + 6ee4: 3204 adds r2, #4 + 6ee6: e9cd 7914 strd r7, r9, [sp, #80] ; 0x50 + 6eea: 442b add r3, r5 + 6eec: 4415 add r5, r2 + 6eee: 9a06 ldr r2, [sp, #24] + 6ef0: 4434 add r4, r6 + 6ef2: b21b sxth r3, r3 + 6ef4: 3a04 subs r2, #4 + 6ef6: b224 sxth r4, r4 + 6ef8: b22d sxth r5, r5 + 6efa: 4619 mov r1, r3 + 6efc: 4432 add r2, r6 + 6efe: 9412 str r4, [sp, #72] ; 0x48 + 6f00: 9513 str r5, [sp, #76] ; 0x4c + 6f02: b212 sxth r2, r2 } return true; } - 6e94: b009 add sp, #36 ; 0x24 - 6e96: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 6f04: b009 add sp, #36 ; 0x24 + 6f06: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} display.fillTriangle((t.x+x0)-thickness, (t.y+y0)-(thickness*2), (t.x+x1)-thickness, (t.y+y1)+(thickness*2), (t.x+x2)+(thickness*2), t.y+y2, d.highlight?t.color:t.background); - 6e9a: f01f b85d b.w 25f58 + 6f0a: f01f b89b b.w 26044 display.fillTriangle(t.x+x0, t.y+y0, t.x+x1, t.y+y1, t.x+x2, t.y+y2, t.color); - 6e9e: 9a05 ldr r2, [sp, #20] - 6ea0: 4437 add r7, r6 - 6ea2: eb08 0305 add.w r3, r8, r5 - 6ea6: f8cd 900c str.w r9, [sp, #12] - 6eaa: 442a add r2, r5 - 6eac: b23f sxth r7, r7 - 6eae: b21b sxth r3, r3 - 6eb0: 9007 str r0, [sp, #28] - 6eb2: b212 sxth r2, r2 - 6eb4: 9702 str r7, [sp, #8] - 6eb6: 4619 mov r1, r3 - 6eb8: 9201 str r2, [sp, #4] - 6eba: 19a2 adds r2, r4, r6 - 6ebc: b212 sxth r2, r2 - 6ebe: 9200 str r2, [sp, #0] - 6ec0: 9a06 ldr r2, [sp, #24] - 6ec2: 4432 add r2, r6 - 6ec4: b212 sxth r2, r2 - 6ec6: f01f f847 bl 25f58 - 6eca: 9807 ldr r0, [sp, #28] - 6ecc: e7ca b.n 6e64 (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xb8> + 6f0e: 9a05 ldr r2, [sp, #20] + 6f10: 4437 add r7, r6 + 6f12: eb08 0305 add.w r3, r8, r5 + 6f16: f8cd 900c str.w r9, [sp, #12] + 6f1a: 442a add r2, r5 + 6f1c: b23f sxth r7, r7 + 6f1e: b21b sxth r3, r3 + 6f20: 9007 str r0, [sp, #28] + 6f22: b212 sxth r2, r2 + 6f24: 9702 str r7, [sp, #8] + 6f26: 4619 mov r1, r3 + 6f28: 9201 str r2, [sp, #4] + 6f2a: 19a2 adds r2, r4, r6 + 6f2c: b212 sxth r2, r2 + 6f2e: 9200 str r2, [sp, #0] + 6f30: 9a06 ldr r2, [sp, #24] + 6f32: 4432 add r2, r6 + 6f34: b212 sxth r2, r2 + 6f36: f01f f885 bl 26044 + 6f3a: 9807 ldr r0, [sp, #28] + 6f3c: e7ca b.n 6ed4 (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xb8> display.fillTriangle(t.x+x0, t.y+y0, t.x+x1, t.y+y1, t.x+x2, t.y+y2, t.color); - 6ece: 9a05 ldr r2, [sp, #20] - 6ed0: 4437 add r7, r6 - 6ed2: eb08 0305 add.w r3, r8, r5 - 6ed6: f8cd 900c str.w r9, [sp, #12] - 6eda: 442a add r2, r5 - 6edc: b23f sxth r7, r7 - 6ede: b21b sxth r3, r3 - 6ee0: 9007 str r0, [sp, #28] - 6ee2: b212 sxth r2, r2 - 6ee4: 9702 str r7, [sp, #8] - 6ee6: 4619 mov r1, r3 - 6ee8: 9201 str r2, [sp, #4] - 6eea: 19a2 adds r2, r4, r6 - 6eec: b212 sxth r2, r2 - 6eee: 9200 str r2, [sp, #0] - 6ef0: 9a06 ldr r2, [sp, #24] - 6ef2: 4432 add r2, r6 - 6ef4: b212 sxth r2, r2 - 6ef6: f01f f82f bl 25f58 - 6efa: 9807 ldr r0, [sp, #28] - 6efc: e790 b.n 6e20 (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x74> - 6efe: bf00 nop - -00006f00 : + 6f3e: 9a05 ldr r2, [sp, #20] + 6f40: 4437 add r7, r6 + 6f42: eb08 0305 add.w r3, r8, r5 + 6f46: f8cd 900c str.w r9, [sp, #12] + 6f4a: 442a add r2, r5 + 6f4c: b23f sxth r7, r7 + 6f4e: b21b sxth r3, r3 + 6f50: 9007 str r0, [sp, #28] + 6f52: b212 sxth r2, r2 + 6f54: 9702 str r7, [sp, #8] + 6f56: 4619 mov r1, r3 + 6f58: 9201 str r2, [sp, #4] + 6f5a: 19a2 adds r2, r4, r6 + 6f5c: b212 sxth r2, r2 + 6f5e: 9200 str r2, [sp, #0] + 6f60: 9a06 ldr r2, [sp, #24] + 6f62: 4432 add r2, r6 + 6f64: b212 sxth r2, r2 + 6f66: f01f f86d bl 26044 + 6f6a: 9807 ldr r0, [sp, #28] + 6f6c: e790 b.n 6e90 (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x74> + 6f6e: bf00 nop + +00006f70 : size_t write(const char *str) { if (str == nullptr) return 0; - 6f00: b169 cbz r1, 6f1e - 6f02: b570 push {r4, r5, r6, lr} - 6f04: 4605 mov r5, r0 + 6f70: b169 cbz r1, 6f8e + 6f72: b570 push {r4, r5, r6, lr} + 6f74: 4605 mov r5, r0 return write((const uint8_t *)str, strlen(str)); } - 6f06: 4608 mov r0, r1 - 6f08: 460c mov r4, r1 - 6f0a: f027 fe19 bl 2eb40 - 6f0e: 682b ldr r3, [r5, #0] - 6f10: 4602 mov r2, r0 - 6f12: 4621 mov r1, r4 - 6f14: 4628 mov r0, r5 - 6f16: 685b ldr r3, [r3, #4] - 6f18: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 6f1c: 4718 bx r3 - 6f1e: 4770 bx lr - -00006f20 : - uint8_t generateCrc(BMCDataContainer d){ - 6f20: b084 sub sp, #16 - 6f22: b570 push {r4, r5, r6, lr} - 6f24: ac04 add r4, sp, #16 - 6f26: e884 000f stmia.w r4, {r0, r1, r2, r3} - return bitRead(settings, 2); - 6f2a: f89d 4013 ldrb.w r4, [sp, #19] - if(d.useSelected() && !d.useStringOnly()){ - 6f2e: 0763 lsls r3, r4, #29 - 6f30: d520 bpl.n 6f74 - uint8_t len = strlen(str); - 6f32: f10d 0052 add.w r0, sp, #82 ; 0x52 - 6f36: f027 fe03 bl 2eb40 - if(len==0){ - 6f3a: 2800 cmp r0, #0 - 6f3c: d056 beq.n 6fec - uint8_t crc = 0; - 6f3e: 2200 movs r2, #0 - c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - 6f40: f89d 6015 ldrb.w r6, [sp, #21] - uint8_t len = strlen(str); - 6f44: fa5f fe80 uxtb.w lr, r0 - 6f48: f10d 0551 add.w r5, sp, #81 ; 0x51 - for(uint8_t i = 0 ; i < len ; i++){ - 6f4c: 4613 mov r3, r2 - crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - 6f4e: eb06 0c03 add.w ip, r6, r3 - 6f52: f815 1f01 ldrb.w r1, [r5, #1]! - for(uint8_t i = 0 ; i < len ; i++){ - 6f56: 3301 adds r3, #1 - crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - 6f58: 4461 add r1, ip - for(uint8_t i = 0 ; i < len ; i++){ - 6f5a: b2db uxtb r3, r3 - crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - 6f5c: 404a eors r2, r1 - for(uint8_t i = 0 ; i < len ; i++){ - 6f5e: 459e cmp lr, r3 - crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - 6f60: b2d2 uxtb r2, r2 - for(uint8_t i = 0 ; i < len ; i++){ - 6f62: d8f4 bhi.n 6f4e - c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - 6f64: ea8e 0502 eor.w r5, lr, r2 - 6f68: f8bd 301c ldrh.w r3, [sp, #28] - 6f6c: fb00 5503 mla r5, r0, r3, r5 - 6f70: b2ed uxtb r5, r5 - 6f72: e01c b.n 6fae - uint8_t len = strlen(str); - 6f74: f10d 0029 add.w r0, sp, #41 ; 0x29 - 6f78: f027 fde2 bl 2eb40 - if(len==0){ - 6f7c: b3a0 cbz r0, 6fe8 - uint8_t crc = 0; - 6f7e: 2200 movs r2, #0 - c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - 6f80: f89d 6015 ldrb.w r6, [sp, #21] - uint8_t len = strlen(str); - 6f84: b2c5 uxtb r5, r0 - 6f86: f10d 0c28 add.w ip, sp, #40 ; 0x28 - for(uint8_t i = 0 ; i < len ; i++){ - 6f8a: 4613 mov r3, r2 - crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - 6f8c: eb06 0e03 add.w lr, r6, r3 - 6f90: f81c 1f01 ldrb.w r1, [ip, #1]! - for(uint8_t i = 0 ; i < len ; i++){ - 6f94: 3301 adds r3, #1 - crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - 6f96: 4471 add r1, lr - for(uint8_t i = 0 ; i < len ; i++){ - 6f98: b2db uxtb r3, r3 - crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - 6f9a: 404a eors r2, r1 - for(uint8_t i = 0 ; i < len ; i++){ - 6f9c: 429d cmp r5, r3 - crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - 6f9e: b2d2 uxtb r2, r2 - for(uint8_t i = 0 ; i < len ; i++){ - 6fa0: d8f4 bhi.n 6f8c - c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - 6fa2: 4055 eors r5, r2 - 6fa4: f8bd 301a ldrh.w r3, [sp, #26] - 6fa8: fb00 5503 mla r5, r0, r3, r5 - 6fac: b2ed uxtb r5, r5 - c += d.prependValue; - 6fae: f89d 1017 ldrb.w r1, [sp, #23] - 6fb2: f89d 3016 ldrb.w r3, [sp, #22] - 6fb6: f89d 2018 ldrb.w r2, [sp, #24] - 6fba: 440b add r3, r1 - 6fbc: f89d 1019 ldrb.w r1, [sp, #25] - 6fc0: 4413 add r3, r2 - 6fc2: f89d 2028 ldrb.w r2, [sp, #40] ; 0x28 - 6fc6: 440b add r3, r1 - c += (d.highlight*2); - 6fc8: f89d 1024 ldrb.w r1, [sp, #36] ; 0x24 - c += d.prependValue; - 6fcc: 4413 add r3, r2 - c ^= d.colors; - 6fce: f89d 2014 ldrb.w r2, [sp, #20] - c += d.prependValue; - 6fd2: eb03 0341 add.w r3, r3, r1, lsl #1 - c ^= d.colors; - 6fd6: 4054 eors r4, r2 - c += d.prependValue; - 6fd8: 441d add r5, r3 - 6fda: b2ed uxtb r5, r5 - } - 6fdc: ea85 0004 eor.w r0, r5, r4 - 6fe0: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 6fe4: b004 add sp, #16 - 6fe6: 4770 bx lr - 6fe8: 4605 mov r5, r0 - 6fea: e7db b.n 6fa4 - 6fec: 4605 mov r5, r0 - 6fee: e7bb b.n 6f68 - -00006ff0 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]>: + 6f76: 4608 mov r0, r1 + 6f78: 460c mov r4, r1 + 6f7a: f027 fe61 bl 2ec40 + 6f7e: 682b ldr r3, [r5, #0] + 6f80: 4602 mov r2, r0 + 6f82: 4621 mov r1, r4 + 6f84: 4628 mov r0, r5 + 6f86: 685b ldr r3, [r3, #4] + 6f88: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 6f8c: 4718 bx r3 + 6f8e: 4770 bx lr + +00006f90 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]>: // ***************************************************************************** // ********************************** Slider *********************************** // ***************************************************************************** template bool renderSlider(T& display, uint16_t& meterValue, uint16_t& meterPixelValue, BMCDataContainer d, BMCDiplayHandlerData t, bool t_reset = false){ - 6ff0: b082 sub sp, #8 - 6ff2: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 6ff6: b095 sub sp, #84 ; 0x54 - 6ff8: 4604 mov r4, r0 - 6ffa: f9bd 5120 ldrsh.w r5, [sp, #288] ; 0x120 - 6ffe: f8bd 6124 ldrh.w r6, [sp, #292] ; 0x124 - 7002: 931f str r3, [sp, #124] ; 0x7c + 6f90: b082 sub sp, #8 + 6f92: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 6f96: b095 sub sp, #84 ; 0x54 + 6f98: 4604 mov r4, r0 + 6f9a: f9bd 5120 ldrsh.w r5, [sp, #288] ; 0x120 + 6f9e: f8bd 6124 ldrh.w r6, [sp, #292] ; 0x124 + 6fa2: 931f str r3, [sp, #124] ; 0x7c // set crc after clear() uint8_t padding = 2; uint16_t x = t.x + padding; - 7004: b2ab uxth r3, r5 + 6fa4: b2ab uxth r3, r5 bool renderSlider(T& display, uint16_t& meterValue, uint16_t& meterPixelValue, BMCDataContainer d, BMCDiplayHandlerData t, bool t_reset = false){ - 7006: f8bd 7128 ldrh.w r7, [sp, #296] ; 0x128 + 6fa6: f8bd 7128 ldrh.w r7, [sp, #296] ; 0x128 uint16_t x = t.x + padding; - 700a: 9308 str r3, [sp, #32] + 6faa: 9308 str r3, [sp, #32] uint16_t frameH = t.h / 2; uint16_t frameW = t.w - (padding * 2); uint16_t frameYC = (t.h-frameH)/2; uint16_t y = t.y + frameYC; uint16_t fillH = frameH-(padding*4); uint16_t fillW = frameW-(padding*4); - 700c: f1a6 030c sub.w r3, r6, #12 + 6fac: f1a6 030c sub.w r3, r6, #12 uint16_t frameH = t.h / 2; - 7010: ea4f 0957 mov.w r9, r7, lsr #1 + 6fb0: ea4f 0957 mov.w r9, r7, lsr #1 uint8_t fontSize = 2; if(frameH >= 32){ - 7014: 2f3f cmp r7, #63 ; 0x3f + 6fb4: 2f3f cmp r7, #63 ; 0x3f uint16_t fillW = frameW-(padding*4); - 7016: b29b uxth r3, r3 - 7018: f89d b08e ldrb.w fp, [sp, #142] ; 0x8e - 701c: f89d 0091 ldrb.w r0, [sp, #145] ; 0x91 - 7020: 9306 str r3, [sp, #24] + 6fb6: b29b uxth r3, r3 + 6fb8: f89d b08e ldrb.w fp, [sp, #142] ; 0x8e + 6fbc: f89d 0091 ldrb.w r0, [sp, #145] ; 0x91 + 6fc0: 9306 str r3, [sp, #24] bool renderSlider(T& display, uint16_t& meterValue, uint16_t& meterPixelValue, BMCDataContainer d, BMCDiplayHandlerData t, bool t_reset = false){ - 7022: f8bd 312c ldrh.w r3, [sp, #300] ; 0x12c - 7026: 9609 str r6, [sp, #36] ; 0x24 - 7028: 9305 str r3, [sp, #20] - 702a: f8bd 3130 ldrh.w r3, [sp, #304] ; 0x130 - 702e: 9307 str r3, [sp, #28] + 6fc2: f8bd 312c ldrh.w r3, [sp, #300] ; 0x12c + 6fc6: 9609 str r6, [sp, #36] ; 0x24 + 6fc8: 9305 str r3, [sp, #20] + 6fca: f8bd 3130 ldrh.w r3, [sp, #304] ; 0x130 + 6fce: 9307 str r3, [sp, #28] uint16_t fillH = frameH-(padding*4); - 7030: f1a9 0308 sub.w r3, r9, #8 - 7034: b29b uxth r3, r3 - 7036: 930b str r3, [sp, #44] ; 0x2c - 7038: f8bd 3086 ldrh.w r3, [sp, #134] ; 0x86 + 6fd0: f1a9 0308 sub.w r3, r9, #8 + 6fd4: b29b uxth r3, r3 + 6fd6: 930b str r3, [sp, #44] ; 0x2c + 6fd8: f8bd 3086 ldrh.w r3, [sp, #134] ; 0x86 bool renderSlider(T& display, uint16_t& meterValue, uint16_t& meterPixelValue, BMCDataContainer d, BMCDiplayHandlerData t, bool t_reset = false){ - 703c: e9cd 1203 strd r1, r2, [sp, #12] - 7040: 9302 str r3, [sp, #8] + 6fdc: e9cd 1203 strd r1, r2, [sp, #12] + 6fe0: 9302 str r3, [sp, #8] if(frameH >= 32){ - 7042: d806 bhi.n 7052 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x62> + 6fe2: d806 bhi.n 6ff2 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x62> fontSize = 4; } else if(frameH >= 24){ - 7044: 2f2f cmp r7, #47 ; 0x2f - 7046: f240 80c7 bls.w 71d8 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1e8> - 704a: 2503 movs r5, #3 - 704c: 2618 movs r6, #24 + 6fe4: 2f2f cmp r7, #47 ; 0x2f + 6fe6: f240 80c7 bls.w 7178 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1e8> + 6fea: 2503 movs r5, #3 + 6fec: 2618 movs r6, #24 fontSize = 3; - 704e: 462b mov r3, r5 - 7050: e002 b.n 7058 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x68> - 7052: 2504 movs r5, #4 - 7054: 2620 movs r6, #32 + 6fee: 462b mov r3, r5 + 6ff0: e002 b.n 6ff8 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x68> + 6ff2: 2504 movs r5, #4 + 6ff4: 2620 movs r6, #32 fontSize = 4; - 7056: 462b mov r3, r5 + 6ff6: 462b mov r3, r5 } uint16_t txtY = (frameH-(fontSize*8)) / 2; - 7058: ebb9 0606 subs.w r6, r9, r6 + 6ff8: ebb9 0606 subs.w r6, r9, r6 uint16_t pixelValue = map(d.value, d.min, d.max, (d.useOffset ? d.offset : 0), fillW); - 705c: f8bd 108a ldrh.w r1, [sp, #138] ; 0x8a - 7060: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c + 6ffc: f8bd 108a ldrh.w r1, [sp, #138] ; 0x8a + 7000: f8bd 208c ldrh.w r2, [sp, #140] ; 0x8c uint16_t txtY = (frameH-(fontSize*8)) / 2; - 7064: bf48 it mi - 7066: 3601 addmi r6, #1 - 7068: 1076 asrs r6, r6, #1 + 7004: bf48 it mi + 7006: 3601 addmi r6, #1 + 7008: 1076 asrs r6, r6, #1 uint16_t pixelValue = map(d.value, d.min, d.max, (d.useOffset ? d.offset : 0), fillW); - 706a: b300 cbz r0, 70ae (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xbe> + 700a: b300 cbz r0, 704e (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xbe> long out_range = out_max - out_min; - 706c: 9806 ldr r0, [sp, #24] + 700c: 9806 ldr r0, [sp, #24] if (in_range == 0) return out_min + out_range / 2; - 706e: 1a52 subs r2, r2, r1 - 7070: 46da mov sl, fp + 700e: 1a52 subs r2, r2, r1 + 7010: 46da mov sl, fp long out_range = out_max - out_min; - 7072: eba0 080b sub.w r8, r0, fp + 7012: eba0 080b sub.w r8, r0, fp if (in_range == 0) return out_min + out_range / 2; - 7076: f000 80b3 beq.w 71e0 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1f0> + 7016: f000 80b3 beq.w 7180 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1f0> long num = (x - in_min) * out_range; - 707a: 9802 ldr r0, [sp, #8] + 701a: 9802 ldr r0, [sp, #8] if (out_range >= 0) { - 707c: f1b8 0f00 cmp.w r8, #0 + 701c: f1b8 0f00 cmp.w r8, #0 long num = (x - in_min) * out_range; - 7080: eba0 0101 sub.w r1, r0, r1 - 7084: fb08 f101 mul.w r1, r8, r1 + 7020: eba0 0101 sub.w r1, r0, r1 + 7024: fb08 f101 mul.w r1, r8, r1 if (out_range >= 0) { - 7088: f280 80f4 bge.w 7274 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x284> + 7028: f280 80f4 bge.w 7214 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x284> num -= in_range / 2; - 708c: 2a00 cmp r2, #0 - 708e: 4610 mov r0, r2 - 7090: bfb8 it lt - 7092: 1c50 addlt r0, r2, #1 - 7094: eba1 0160 sub.w r1, r1, r0, asr #1 + 702c: 2a00 cmp r2, #0 + 702e: 4610 mov r0, r2 + 7030: bfb8 it lt + 7032: 1c50 addlt r0, r2, #1 + 7034: eba1 0160 sub.w r1, r1, r0, asr #1 long result = num / in_range + out_min; - 7098: fb91 f8f2 sdiv r8, r1, r2 + 7038: fb91 f8f2 sdiv r8, r1, r2 if (in_range * num >= 0) return result + 1; - 709c: fb02 f101 mul.w r1, r2, r1 + 703c: fb02 f101 mul.w r1, r2, r1 long result = num / in_range + out_min; - 70a0: 44d8 add r8, fp + 7040: 44d8 add r8, fp if (in_range * num >= 0) return result + 1; - 70a2: 2900 cmp r1, #0 - 70a4: f280 80de bge.w 7264 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x274> + 7042: 2900 cmp r1, #0 + 7044: f280 80de bge.w 7204 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x274> display.setTextColor(t.background); display.setCursor(txtX, txtY); display.print(outStr); // display the new value but in the foreground color sprintf(outStr, "%u", d.value+(d.useOffset ? d.offset : 0)); - 70a8: 9a02 ldr r2, [sp, #8] - 70aa: 4493 add fp, r2 - 70ac: e01c b.n 70e8 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xf8> + 7048: 9a02 ldr r2, [sp, #8] + 704a: 4493 add fp, r2 + 704c: e01c b.n 7088 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xf8> if (in_range == 0) return out_min + out_range / 2; - 70ae: ebb2 0a01 subs.w sl, r2, r1 + 704e: ebb2 0a01 subs.w sl, r2, r1 long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max; - 70b2: f8dd b008 ldr.w fp, [sp, #8] - 70b6: f8dd 8018 ldr.w r8, [sp, #24] + 7052: f8dd b008 ldr.w fp, [sp, #8] + 7056: f8dd 8018 ldr.w r8, [sp, #24] if (in_range == 0) return out_min + out_range / 2; - 70ba: f000 8093 beq.w 71e4 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1f4> + 705a: f000 8093 beq.w 7184 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1f4> long num = (x - in_min) * out_range; - 70be: 9a02 ldr r2, [sp, #8] - 70c0: 1a51 subs r1, r2, r1 - 70c2: 4652 mov r2, sl - 70c4: 4682 mov sl, r0 - 70c6: 9806 ldr r0, [sp, #24] - 70c8: fb00 f101 mul.w r1, r0, r1 + 705e: 9a02 ldr r2, [sp, #8] + 7060: 1a51 subs r1, r2, r1 + 7062: 4652 mov r2, sl + 7064: 4682 mov sl, r0 + 7066: 9806 ldr r0, [sp, #24] + 7068: fb00 f101 mul.w r1, r0, r1 num += in_range / 2; - 70cc: 2a00 cmp r2, #0 - 70ce: 4610 mov r0, r2 - 70d0: bfb8 it lt - 70d2: 1c50 addlt r0, r2, #1 - 70d4: eb01 0160 add.w r1, r1, r0, asr #1 + 706c: 2a00 cmp r2, #0 + 706e: 4610 mov r0, r2 + 7070: bfb8 it lt + 7072: 1c50 addlt r0, r2, #1 + 7074: eb01 0160 add.w r1, r1, r0, asr #1 long result = num / in_range + out_min; - 70d8: fb91 f8f2 sdiv r8, r1, r2 + 7078: fb91 f8f2 sdiv r8, r1, r2 if (in_range * num < 0) return result - 1; - 70dc: fb02 f101 mul.w r1, r2, r1 + 707c: fb02 f101 mul.w r1, r2, r1 long result = num / in_range + out_min; - 70e0: 44d0 add r8, sl + 7080: 44d0 add r8, sl if (in_range * num < 0) return result - 1; - 70e2: 2900 cmp r1, #0 - 70e4: f2c0 80c3 blt.w 726e (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x27e> + 7082: 2900 cmp r1, #0 + 7084: f2c0 80c3 blt.w 720e (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x27e> display.setFont(); - 70e8: 2100 movs r1, #0 - 70ea: 4620 mov r0, r4 - 70ec: 930a str r3, [sp, #40] ; 0x28 - 70ee: f01f fb0f bl 26710 + 7088: 2100 movs r1, #0 + 708a: 4620 mov r0, r4 + 708c: 930a str r3, [sp, #40] ; 0x28 + 708e: f01f fbb5 bl 267fc display.setTextSize(fontSize); - 70f2: 9b0a ldr r3, [sp, #40] ; 0x28 - 70f4: 4620 mov r0, r4 + 7092: 9b0a ldr r3, [sp, #40] ; 0x28 + 7094: 4620 mov r0, r4 display.setCursor(txtX, txtY); - 70f6: b236 sxth r6, r6 + 7096: b236 sxth r6, r6 txtX = ((t.w - (((fontSize*6)*strlen(outStr))-fontSize))/2); display.setTextColor(t.color); display.setCursor(txtX, txtY); display.print(outStr); y = (t.h-frameH)-2; - 70f8: eba7 0709 sub.w r7, r7, r9 + 7098: eba7 0709 sub.w r7, r7, r9 display.setTextSize(fontSize); - 70fc: 4619 mov r1, r3 - 70fe: f01f fb01 bl 26704 - 7102: 2300 movs r3, #0 + 709c: 4619 mov r1, r3 + 709e: f01f fba7 bl 267f0 + 70a2: 2300 movs r3, #0 sprintf(outStr, "%u", meterValue+(d.useOffset ? d.offset : 0)); - 7104: 495c ldr r1, [pc, #368] ; (7278 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x288>) - 7106: a80c add r0, sp, #48 ; 0x30 - 7108: 76e3 strb r3, [r4, #27] + 70a4: 495c ldr r1, [pc, #368] ; (7218 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x288>) + 70a6: a80c add r0, sp, #48 ; 0x30 + 70a8: 76e3 strb r3, [r4, #27] y = (t.h-frameH)-2; - 710a: b2bf uxth r7, r7 + 70aa: b2bf uxth r7, r7 char outStr[32] = ""; - 710c: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 - 7110: e9cd 330e strd r3, r3, [sp, #56] ; 0x38 - 7114: e9cd 3310 strd r3, r3, [sp, #64] ; 0x40 - 7118: e9cd 3312 strd r3, r3, [sp, #72] ; 0x48 + 70ac: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 + 70b0: e9cd 330e strd r3, r3, [sp, #56] ; 0x38 + 70b4: e9cd 3310 strd r3, r3, [sp, #64] ; 0x40 + 70b8: e9cd 3312 strd r3, r3, [sp, #72] ; 0x48 sprintf(outStr, "%u", meterValue+(d.useOffset ? d.offset : 0)); - 711c: 9b03 ldr r3, [sp, #12] - 711e: 881a ldrh r2, [r3, #0] - 7120: 4452 add r2, sl - 7122: eb05 0a45 add.w sl, r5, r5, lsl #1 - 7126: f027 f831 bl 2e18c + 70bc: 9b03 ldr r3, [sp, #12] + 70be: 881a ldrh r2, [r3, #0] + 70c0: 4452 add r2, sl + 70c2: eb05 0a45 add.w sl, r5, r5, lsl #1 + 70c6: f027 f8d5 bl 2e274 txtX = ((t.w - (((fontSize*6)*strlen(outStr))-fontSize))/2); - 712a: a80c add r0, sp, #48 ; 0x30 - 712c: f027 fd08 bl 2eb40 + 70ca: a80c add r0, sp, #48 ; 0x30 + 70cc: f027 fdb8 bl 2ec40 void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - 7130: 9b07 ldr r3, [sp, #28] - 7132: ea4f 0a4a mov.w sl, sl, lsl #1 - 7136: 4602 mov r2, r0 - 7138: 82e3 strh r3, [r4, #22] - 713a: 82a3 strh r3, [r4, #20] - 713c: 9b09 ldr r3, [sp, #36] ; 0x24 + 70d0: 9b07 ldr r3, [sp, #28] + 70d2: ea4f 0a4a mov.w sl, sl, lsl #1 + 70d6: 4602 mov r2, r0 + 70d8: 82e3 strh r3, [r4, #22] + 70da: 82a3 strh r3, [r4, #20] + 70dc: 9b09 ldr r3, [sp, #36] ; 0x24 cursor_y = y; - 713e: 8266 strh r6, [r4, #18] - 7140: 441d add r5, r3 - 7142: 6823 ldr r3, [r4, #0] - 7144: fb0a 5110 mls r1, sl, r0, r5 - 7148: 685b ldr r3, [r3, #4] - 714a: 4620 mov r0, r4 - 714c: 0849 lsrs r1, r1, #1 + 70de: 8266 strh r6, [r4, #18] + 70e0: 441d add r5, r3 + 70e2: 6823 ldr r3, [r4, #0] + 70e4: fb0a 5110 mls r1, sl, r0, r5 + 70e8: 685b ldr r3, [r3, #4] + 70ea: 4620 mov r0, r4 + 70ec: 0849 lsrs r1, r1, #1 display.setCursor(txtX, txtY); - 714e: 8221 strh r1, [r4, #16] - 7150: a90c add r1, sp, #48 ; 0x30 - 7152: 4798 blx r3 + 70ee: 8221 strh r1, [r4, #16] + 70f0: a90c add r1, sp, #48 ; 0x30 + 70f2: 4798 blx r3 sprintf(outStr, "%u", d.value+(d.useOffset ? d.offset : 0)); - 7154: 465a mov r2, fp - 7156: 4948 ldr r1, [pc, #288] ; (7278 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x288>) - 7158: a80c add r0, sp, #48 ; 0x30 - 715a: f027 f817 bl 2e18c + 70f4: 465a mov r2, fp + 70f6: 4948 ldr r1, [pc, #288] ; (7218 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x288>) + 70f8: a80c add r0, sp, #48 ; 0x30 + 70fa: f027 f8bb bl 2e274 txtX = ((t.w - (((fontSize*6)*strlen(outStr))-fontSize))/2); - 715e: a80c add r0, sp, #48 ; 0x30 - 7160: f027 fcee bl 2eb40 + 70fe: a80c add r0, sp, #48 ; 0x30 + 7100: f027 fd9e bl 2ec40 void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - 7164: 9b05 ldr r3, [sp, #20] - 7166: fb0a 5510 mls r5, sl, r0, r5 - 716a: 4602 mov r2, r0 - 716c: 82e3 strh r3, [r4, #22] - 716e: a90c add r1, sp, #48 ; 0x30 - 7170: 086d lsrs r5, r5, #1 - 7172: 82a3 strh r3, [r4, #20] - 7174: 6823 ldr r3, [r4, #0] - 7176: 4620 mov r0, r4 + 7104: 9b05 ldr r3, [sp, #20] + 7106: fb0a 5510 mls r5, sl, r0, r5 + 710a: 4602 mov r2, r0 + 710c: 82e3 strh r3, [r4, #22] + 710e: a90c add r1, sp, #48 ; 0x30 + 7110: 086d lsrs r5, r5, #1 + 7112: 82a3 strh r3, [r4, #20] + 7114: 6823 ldr r3, [r4, #0] + 7116: 4620 mov r0, r4 cursor_y = y; - 7178: 8266 strh r6, [r4, #18] + 7118: 8266 strh r6, [r4, #18] uint16_t fillX = x+(padding*2); uint16_t fillY = y+(padding*2); - 717a: 1cbe adds r6, r7, #2 - 717c: 685b ldr r3, [r3, #4] + 711a: 1cbe adds r6, r7, #2 + 711c: 685b ldr r3, [r3, #4] uint16_t pixelValue = map(d.value, d.min, d.max, (d.useOffset ? d.offset : 0), fillW); - 717e: fa1f fa88 uxth.w sl, r8 + 711e: fa1f fa88 uxth.w sl, r8 display.setCursor(txtX, txtY); - 7182: 8225 strh r5, [r4, #16] + 7122: 8225 strh r5, [r4, #16] uint16_t fillY = y+(padding*2); - 7184: b2b6 uxth r6, r6 - 7186: 4798 blx r3 + 7124: b2b6 uxth r6, r6 + 7126: 4798 blx r3 uint16_t fillX = x+(padding*2); - 7188: 9b08 ldr r3, [sp, #32] + 7128: 9b08 ldr r3, [sp, #32] if(meterPixelValue == 0xFFFF){ - 718a: f64f 72ff movw r2, #65535 ; 0xffff + 712a: f64f 72ff movw r2, #65535 ; 0xffff uint16_t fillX = x+(padding*2); - 718e: 1d9d adds r5, r3, #6 + 712e: 1d9d adds r5, r3, #6 if(meterPixelValue == 0xFFFF){ - 7190: 9b04 ldr r3, [sp, #16] - 7192: 881b ldrh r3, [r3, #0] + 7130: 9b04 ldr r3, [sp, #16] + 7132: 881b ldrh r3, [r3, #0] uint16_t fillX = x+(padding*2); - 7194: b2ad uxth r5, r5 + 7134: b2ad uxth r5, r5 if(meterPixelValue == 0xFFFF){ - 7196: 4293 cmp r3, r2 - 7198: d02c beq.n 71f4 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x204> + 7136: 4293 cmp r3, r2 + 7138: d02c beq.n 7194 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x204> display.drawRect(x, y, frameW, frameH, t.color); display.fillRect(fillX, fillY, fillW, fillH, t.background); display.fillRect(fillX, fillY, pixelValue, fillH, t.color); } else if(pixelValue != meterPixelValue){ - 719a: 459a cmp sl, r3 - 719c: d00d beq.n 71ba (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1ca> + 713a: 459a cmp sl, r3 + 713c: d00d beq.n 715a (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1ca> if(pixelValue > meterPixelValue){ - 719e: d956 bls.n 724e (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x25e> + 713e: d956 bls.n 71ee (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x25e> display.fillRect(fillX, fillY, pixelValue, fillH, t.color); - 71a0: 9b05 ldr r3, [sp, #20] - 71a2: 9301 str r3, [sp, #4] - 71a4: f9bd 302c ldrsh.w r3, [sp, #44] ; 0x2c - 71a8: 9300 str r3, [sp, #0] - 71aa: fa0f f388 sxth.w r3, r8 + 7140: 9b05 ldr r3, [sp, #20] + 7142: 9301 str r3, [sp, #4] + 7144: f9bd 302c ldrsh.w r3, [sp, #44] ; 0x2c + 7148: 9300 str r3, [sp, #0] + 714a: fa0f f388 sxth.w r3, r8 } else { display.fillRect(fillX+pixelValue, fillY, fillW-pixelValue, fillH, t.background); - 71ae: 6820 ldr r0, [r4, #0] - 71b0: b229 sxth r1, r5 - 71b2: b232 sxth r2, r6 - 71b4: 6c05 ldr r5, [r0, #64] ; 0x40 - 71b6: 4620 mov r0, r4 - 71b8: 47a8 blx r5 + 714e: 6820 ldr r0, [r4, #0] + 7150: b229 sxth r1, r5 + 7152: b232 sxth r2, r6 + 7154: 6c05 ldr r5, [r0, #64] ; 0x40 + 7156: 4620 mov r0, r4 + 7158: 47a8 blx r5 } } meterPixelValue = pixelValue; - 71ba: 9b04 ldr r3, [sp, #16] + 715a: 9b04 ldr r3, [sp, #16] meterValue = d.value; display.setTextSize(1); - 71bc: 2101 movs r1, #1 - 71be: 4620 mov r0, r4 + 715c: 2101 movs r1, #1 + 715e: 4620 mov r0, r4 meterPixelValue = pixelValue; - 71c0: f8a3 a000 strh.w sl, [r3] + 7160: f8a3 a000 strh.w sl, [r3] meterValue = d.value; - 71c4: e9dd 2302 ldrd r2, r3, [sp, #8] - 71c8: 801a strh r2, [r3, #0] + 7164: e9dd 2302 ldrd r2, r3, [sp, #8] + 7168: 801a strh r2, [r3, #0] display.setTextSize(1); - 71ca: f01f fa9b bl 26704 + 716a: f01f fb41 bl 267f0 return true; } - 71ce: b015 add sp, #84 ; 0x54 - 71d0: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 71d4: b002 add sp, #8 - 71d6: 4770 bx lr - 71d8: 2502 movs r5, #2 - 71da: 2610 movs r6, #16 + 716e: b015 add sp, #84 ; 0x54 + 7170: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 7174: b002 add sp, #8 + 7176: 4770 bx lr + 7178: 2502 movs r5, #2 + 717a: 2610 movs r6, #16 uint8_t fontSize = 2; - 71dc: 462b mov r3, r5 - 71de: e73b b.n 7058 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x68> + 717c: 462b mov r3, r5 + 717e: e73b b.n 6ff8 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x68> sprintf(outStr, "%u", d.value+(d.useOffset ? d.offset : 0)); - 71e0: 9a02 ldr r2, [sp, #8] - 71e2: 4493 add fp, r2 + 7180: 9a02 ldr r2, [sp, #8] + 7182: 4493 add fp, r2 if (in_range == 0) return out_min + out_range / 2; - 71e4: f1b8 0f00 cmp.w r8, #0 - 71e8: bfb8 it lt - 71ea: f108 0801 addlt.w r8, r8, #1 - 71ee: eb0a 0868 add.w r8, sl, r8, asr #1 - 71f2: e779 b.n 70e8 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xf8> + 7184: f1b8 0f00 cmp.w r8, #0 + 7188: bfb8 it lt + 718a: f108 0801 addlt.w r8, r8, #1 + 718e: eb0a 0868 add.w r8, sl, r8, asr #1 + 7192: e779 b.n 7088 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xf8> display.drawRect(x, y, frameW, frameH, t.color); - 71f4: 9805 ldr r0, [sp, #20] + 7194: 9805 ldr r0, [sp, #20] y = (t.h-frameH)-2; - 71f6: 3f02 subs r7, #2 + 7196: 3f02 subs r7, #2 uint16_t frameW = t.w - (padding * 2); - 71f8: 9b09 ldr r3, [sp, #36] ; 0x24 + 7198: 9b09 ldr r3, [sp, #36] ; 0x24 display.fillRect(fillX, fillY, fillW, fillH, t.background); - 71fa: b22d sxth r5, r5 + 719a: b22d sxth r5, r5 uint16_t x = t.x + padding; - 71fc: 9908 ldr r1, [sp, #32] + 719c: 9908 ldr r1, [sp, #32] display.drawRect(x, y, frameW, frameH, t.color); - 71fe: b23a sxth r2, r7 - 7200: f8cd 9000 str.w r9, [sp] + 719e: b23a sxth r2, r7 + 71a0: f8cd 9000 str.w r9, [sp] uint16_t frameW = t.w - (padding * 2); - 7204: 3b04 subs r3, #4 + 71a4: 3b04 subs r3, #4 display.drawRect(x, y, frameW, frameH, t.color); - 7206: 9001 str r0, [sp, #4] + 71a6: 9001 str r0, [sp, #4] uint16_t x = t.x + padding; - 7208: 3102 adds r1, #2 + 71a8: 3102 adds r1, #2 display.drawRect(x, y, frameW, frameH, t.color); - 720a: 6820 ldr r0, [r4, #0] - 720c: b21b sxth r3, r3 - 720e: b209 sxth r1, r1 + 71aa: 6820 ldr r0, [r4, #0] + 71ac: b21b sxth r3, r3 + 71ae: b209 sxth r1, r1 display.fillRect(fillX, fillY, fillW, fillH, t.background); - 7210: f9bd 702c ldrsh.w r7, [sp, #44] ; 0x2c + 71b0: f9bd 702c ldrsh.w r7, [sp, #44] ; 0x2c display.drawRect(x, y, frameW, frameH, t.color); - 7214: f8d0 904c ldr.w r9, [r0, #76] ; 0x4c - 7218: 4620 mov r0, r4 - 721a: 47c8 blx r9 + 71b4: f8d0 904c ldr.w r9, [r0, #76] ; 0x4c + 71b8: 4620 mov r0, r4 + 71ba: 47c8 blx r9 display.fillRect(fillX, fillY, fillW, fillH, t.background); - 721c: 9b07 ldr r3, [sp, #28] - 721e: 9700 str r7, [sp, #0] - 7220: b236 sxth r6, r6 - 7222: 9301 str r3, [sp, #4] - 7224: 4629 mov r1, r5 - 7226: 6822 ldr r2, [r4, #0] - 7228: 4620 mov r0, r4 - 722a: f9bd 3018 ldrsh.w r3, [sp, #24] - 722e: f8d2 9040 ldr.w r9, [r2, #64] ; 0x40 - 7232: 4632 mov r2, r6 - 7234: 47c8 blx r9 + 71bc: 9b07 ldr r3, [sp, #28] + 71be: 9700 str r7, [sp, #0] + 71c0: b236 sxth r6, r6 + 71c2: 9301 str r3, [sp, #4] + 71c4: 4629 mov r1, r5 + 71c6: 6822 ldr r2, [r4, #0] + 71c8: 4620 mov r0, r4 + 71ca: f9bd 3018 ldrsh.w r3, [sp, #24] + 71ce: f8d2 9040 ldr.w r9, [r2, #64] ; 0x40 + 71d2: 4632 mov r2, r6 + 71d4: 47c8 blx r9 display.fillRect(fillX, fillY, pixelValue, fillH, t.color); - 7236: 9805 ldr r0, [sp, #20] - 7238: 4629 mov r1, r5 - 723a: fa0f f388 sxth.w r3, r8 - 723e: 4632 mov r2, r6 - 7240: e9cd 7000 strd r7, r0, [sp] - 7244: 6820 ldr r0, [r4, #0] - 7246: 6c05 ldr r5, [r0, #64] ; 0x40 - 7248: 4620 mov r0, r4 - 724a: 47a8 blx r5 - 724c: e7b5 b.n 71ba (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1ca> + 71d6: 9805 ldr r0, [sp, #20] + 71d8: 4629 mov r1, r5 + 71da: fa0f f388 sxth.w r3, r8 + 71de: 4632 mov r2, r6 + 71e0: e9cd 7000 strd r7, r0, [sp] + 71e4: 6820 ldr r0, [r4, #0] + 71e6: 6c05 ldr r5, [r0, #64] ; 0x40 + 71e8: 4620 mov r0, r4 + 71ea: 47a8 blx r5 + 71ec: e7b5 b.n 715a (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1ca> display.fillRect(fillX+pixelValue, fillY, fillW-pixelValue, fillH, t.background); - 724e: 9b07 ldr r3, [sp, #28] - 7250: 4455 add r5, sl - 7252: f9bd 202c ldrsh.w r2, [sp, #44] ; 0x2c - 7256: 9301 str r3, [sp, #4] - 7258: 9b06 ldr r3, [sp, #24] - 725a: 9200 str r2, [sp, #0] - 725c: eba3 030a sub.w r3, r3, sl - 7260: b21b sxth r3, r3 - 7262: e7a4 b.n 71ae (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1be> + 71ee: 9b07 ldr r3, [sp, #28] + 71f0: 4455 add r5, sl + 71f2: f9bd 202c ldrsh.w r2, [sp, #44] ; 0x2c + 71f6: 9301 str r3, [sp, #4] + 71f8: 9b06 ldr r3, [sp, #24] + 71fa: 9200 str r2, [sp, #0] + 71fc: eba3 030a sub.w r3, r3, sl + 7200: b21b sxth r3, r3 + 7202: e7a4 b.n 714e (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1be> sprintf(outStr, "%u", d.value+(d.useOffset ? d.offset : 0)); - 7264: 9a02 ldr r2, [sp, #8] + 7204: 9a02 ldr r2, [sp, #8] if (in_range * num >= 0) return result + 1; - 7266: f108 0801 add.w r8, r8, #1 - 726a: 4493 add fp, r2 - 726c: e73c b.n 70e8 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xf8> + 7206: f108 0801 add.w r8, r8, #1 + 720a: 4493 add fp, r2 + 720c: e73c b.n 7088 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xf8> if (in_range * num < 0) return result - 1; - 726e: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff - 7272: e739 b.n 70e8 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xf8> - 7274: 4483 add fp, r0 - 7276: e729 b.n 70cc (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xdc> - 7278: 20002030 .word 0x20002030 - 727c: 00000000 .word 0x00000000 - -00007280 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]>: + 720e: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff + 7212: e739 b.n 7088 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xf8> + 7214: 4483 add fp, r0 + 7216: e729 b.n 706c (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]+0xdc> + 7218: 20002030 .word 0x20002030 + 721c: 00000000 .word 0x00000000 + +00007220 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]>: bool renderTuner(T& display, BMCTunerData& t_tunerData, BMCDiplayHandlerData t, bool t_reset=false){ - 7280: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 7284: ed2d 8b04 vpush {d8-d9} - 7288: b093 sub sp, #76 ; 0x4c - 728a: 461e mov r6, r3 + 7220: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 7224: ed2d 8b04 vpush {d8-d9} + 7228: b093 sub sp, #76 ; 0x4c + 722a: 461e mov r6, r3 // ****************** // **** TUNER // ****************** void getTunerData(BMCTunerData& buff){ buff = tuner; - 728c: f500 7c1e add.w ip, r0, #632 ; 0x278 + 722c: f500 7c1e add.w ip, r0, #632 ; 0x278 if((currentTuner.pitchRaw != t_tunerData.pitchRaw) || t_reset){ - 7290: f892 9002 ldrb.w r9, [r2, #2] + 7230: f892 9002 ldrb.w r9, [r2, #2] bool renderTuner(T& display, BMCTunerData& t_tunerData, BMCDiplayHandlerData t, bool t_reset=false){ - 7294: f9bd 3080 ldrsh.w r3, [sp, #128] ; 0x80 - 7298: 4615 mov r5, r2 - 729a: 460c mov r4, r1 - 729c: f10d 0e34 add.w lr, sp, #52 ; 0x34 - 72a0: 9304 str r3, [sp, #16] - 72a2: f8bd 3088 ldrh.w r3, [sp, #136] ; 0x88 - 72a6: f8bd 7084 ldrh.w r7, [sp, #132] ; 0x84 - 72aa: 9305 str r3, [sp, #20] - 72ac: f8bd 308c ldrh.w r3, [sp, #140] ; 0x8c - 72b0: f89d 809c ldrb.w r8, [sp, #156] ; 0x9c - 72b4: 9308 str r3, [sp, #32] - 72b6: f8bd 3090 ldrh.w r3, [sp, #144] ; 0x90 - 72ba: 9309 str r3, [sp, #36] ; 0x24 - 72bc: f8bd 3094 ldrh.w r3, [sp, #148] ; 0x94 - 72c0: 9307 str r3, [sp, #28] - 72c2: f8bd 3098 ldrh.w r3, [sp, #152] ; 0x98 - 72c6: 9306 str r3, [sp, #24] - 72c8: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} - 72cc: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} + 7234: f9bd 3080 ldrsh.w r3, [sp, #128] ; 0x80 + 7238: 4615 mov r5, r2 + 723a: 460c mov r4, r1 + 723c: f10d 0e34 add.w lr, sp, #52 ; 0x34 + 7240: 9304 str r3, [sp, #16] + 7242: f8bd 3088 ldrh.w r3, [sp, #136] ; 0x88 + 7246: f8bd 7084 ldrh.w r7, [sp, #132] ; 0x84 + 724a: 9305 str r3, [sp, #20] + 724c: f8bd 308c ldrh.w r3, [sp, #140] ; 0x8c + 7250: f89d 809c ldrb.w r8, [sp, #156] ; 0x9c + 7254: 9308 str r3, [sp, #32] + 7256: f8bd 3090 ldrh.w r3, [sp, #144] ; 0x90 + 725a: 9309 str r3, [sp, #36] ; 0x24 + 725c: f8bd 3094 ldrh.w r3, [sp, #148] ; 0x94 + 7260: 9307 str r3, [sp, #28] + 7262: f8bd 3098 ldrh.w r3, [sp, #152] ; 0x98 + 7266: 9306 str r3, [sp, #24] + 7268: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 726c: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} if((currentTuner.pitchRaw != t_tunerData.pitchRaw) || t_reset){ - 72d0: f89d 2036 ldrb.w r2, [sp, #54] ; 0x36 - 72d4: f8dc 3000 ldr.w r3, [ip] - 72d8: 454a cmp r2, r9 - 72da: f8ce 3000 str.w r3, [lr] - 72de: d108 bne.n 72f2 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x72> - 72e0: f1b8 0f00 cmp.w r8, #0 - 72e4: d10e bne.n 7304 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x84> - } - 72e6: 4640 mov r0, r8 - 72e8: b013 add sp, #76 ; 0x4c - 72ea: ecbd 8b04 vpop {d8-d9} - 72ee: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 7270: f89d 2036 ldrb.w r2, [sp, #54] ; 0x36 + 7274: f8dc 3000 ldr.w r3, [ip] + 7278: 454a cmp r2, r9 + 727a: f8ce 3000 str.w r3, [lr] + 727e: d108 bne.n 7292 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x72> + 7280: f1b8 0f00 cmp.w r8, #0 + 7284: d10e bne.n 72a4 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x84> + } + 7286: 4640 mov r0, r8 + 7288: b013 add sp, #76 ; 0x4c + 728a: ecbd 8b04 vpop {d8-d9} + 728e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(currentTuner.note != t_tunerData.note || currentTuner.stringNumber != t_tunerData.stringNumber || t_reset){ - 72f2: f8bd 1034 ldrh.w r1, [sp, #52] ; 0x34 - 72f6: 882b ldrh r3, [r5, #0] - 72f8: 4299 cmp r1, r3 - 72fa: d103 bne.n 7304 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x84> - 72fc: f1b8 0f00 cmp.w r8, #0 - 7300: f000 8161 beq.w 75c6 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x346> + 7292: f8bd 1034 ldrh.w r1, [sp, #52] ; 0x34 + 7296: 882b ldrh r3, [r5, #0] + 7298: 4299 cmp r1, r3 + 729a: d103 bne.n 72a4 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x84> + 729c: f1b8 0f00 cmp.w r8, #0 + 72a0: f000 8161 beq.w 7566 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x346> display.setFont(); - 7304: 2100 movs r1, #0 - 7306: 4620 mov r0, r4 - 7308: f01f fa02 bl 26710 + 72a4: 2100 movs r1, #0 + 72a6: 4620 mov r0, r4 + 72a8: f01f faa8 bl 267fc uint8_t fontSize = (uint8_t) floor(floor(t.h/2.0)/8.0); - 730c: eddd 7a05 vldr s15, [sp, #20] + 72ac: eddd 7a05 vldr s15, [sp, #20] if((t.w == 128 && t.h == 64) || t.h == 40){ - 7310: 2f80 cmp r7, #128 ; 0x80 + 72b0: 2f80 cmp r7, #128 ; 0x80 uint8_t fontSize = (uint8_t) floor(floor(t.h/2.0)/8.0); - 7312: eeb8 9be7 vcvt.f64.s32 d9, s15 - 7316: eeb6 7b00 vmov.f64 d7, #96 ; 0x3f000000 0.5 - 731a: ee29 7b07 vmul.f64 d7, d9, d7 + 72b2: eeb8 9be7 vcvt.f64.s32 d9, s15 + 72b6: eeb6 7b00 vmov.f64 d7, #96 ; 0x3f000000 0.5 + 72ba: ee29 7b07 vmul.f64 d7, d9, d7 if((t.w == 128 && t.h == 64) || t.h == 40){ - 731e: f000 8181 beq.w 7624 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3a4> - 7322: 9b05 ldr r3, [sp, #20] - 7324: 2b28 cmp r3, #40 ; 0x28 - 7326: f000 8146 beq.w 75b6 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x336> + 72be: f000 8181 beq.w 75c4 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3a4> + 72c2: 9b05 ldr r3, [sp, #20] + 72c4: 2b28 cmp r3, #40 ; 0x28 + 72c6: f000 8146 beq.w 7556 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x336> uint8_t fontSize = (uint8_t) floor(floor(t.h/2.0)/8.0); - 732a: eeb4 5b00 vmov.f64 d5, #64 ; 0x3e000000 0.125 - 732e: febb 6b47 vrintm.f64 d6, d7 - 7332: ee26 6b05 vmul.f64 d6, d6, d5 - 7336: febb 6b46 vrintm.f64 d6, d6 - 733a: eefc 6bc6 vcvt.u32.f64 s13, d6 - 733e: edcd 6a0a vstr s13, [sp, #40] ; 0x28 - 7342: f89d 1028 ldrb.w r1, [sp, #40] ; 0x28 - 7346: 2903 cmp r1, #3 - 7348: bf28 it cs - 734a: 2103 movcs r1, #3 + 72ca: eeb4 5b00 vmov.f64 d5, #64 ; 0x3e000000 0.125 + 72ce: febb 6b47 vrintm.f64 d6, d7 + 72d2: ee26 6b05 vmul.f64 d6, d6, d5 + 72d6: febb 6b46 vrintm.f64 d6, d6 + 72da: eefc 6bc6 vcvt.u32.f64 s13, d6 + 72de: edcd 6a0a vstr s13, [sp, #40] ; 0x28 + 72e2: f89d 1028 ldrb.w r1, [sp, #40] ; 0x28 + 72e6: 2903 cmp r1, #3 + 72e8: bf28 it cs + 72ea: 2103 movcs r1, #3 uint16_t fX = (t.x+t.w) - (fontSize*6); - 734c: eba1 0381 sub.w r3, r1, r1, lsl #2 - 7350: fa1f f981 uxth.w r9, r1 - 7354: 005b lsls r3, r3, #1 - 7356: fa1f fb83 uxth.w fp, r3 + 72ec: eba1 0381 sub.w r3, r1, r1, lsl #2 + 72f0: fa1f f981 uxth.w r9, r1 + 72f4: 005b lsls r3, r3, #1 + 72f6: fa1f fb83 uxth.w fp, r3 uint16_t fY = t.y+(((t.h/2.0) - (fontSize*8))/2); - 735a: 00cb lsls r3, r1, #3 - 735c: ee06 3a10 vmov s12, r3 - 7360: eeb8 6bc6 vcvt.f64.s32 d6, s12 - 7364: ee37 7b46 vsub.f64 d7, d7, d6 - 7368: eddd 6a04 vldr s13, [sp, #16] - 736c: eeb6 5b00 vmov.f64 d5, #96 ; 0x3f000000 0.5 + 72fa: 00cb lsls r3, r1, #3 + 72fc: ee06 3a10 vmov s12, r3 + 7300: eeb8 6bc6 vcvt.f64.s32 d6, s12 + 7304: ee37 7b46 vsub.f64 d7, d7, d6 + 7308: eddd 6a04 vldr s13, [sp, #16] + 730c: eeb6 5b00 vmov.f64 d5, #96 ; 0x3f000000 0.5 display.setTextSize(fontSize); - 7370: 4620 mov r0, r4 + 7310: 4620 mov r0, r4 uint16_t fY = t.y+(((t.h/2.0) - (fontSize*8))/2); - 7372: eeb8 8be6 vcvt.f64.s32 d8, s13 + 7312: eeb8 8be6 vcvt.f64.s32 d8, s13 uint16_t fX = (t.x+t.w) - (fontSize*6); - 7376: fa1f f886 uxth.w r8, r6 + 7316: fa1f f886 uxth.w r8, r6 uint16_t fY = t.y+(((t.h/2.0) - (fontSize*8))/2); - 737a: eeb0 6b48 vmov.f64 d6, d8 - 737e: eea7 6b05 vfma.f64 d6, d7, d5 - 7382: eebc 6bc6 vcvt.u32.f64 s12, d6 - 7386: ee16 3a10 vmov r3, s12 - 738a: fa1f fa83 uxth.w sl, r3 + 731a: eeb0 6b48 vmov.f64 d6, d8 + 731e: eea7 6b05 vfma.f64 d6, d7, d5 + 7322: eebc 6bc6 vcvt.u32.f64 s12, d6 + 7326: ee16 3a10 vmov r3, s12 + 732a: fa1f fa83 uxth.w sl, r3 display.setTextSize(fontSize); - 738e: f01f f9b9 bl 26704 + 732e: f01f fa5f bl 267f0 void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - 7392: 9b07 ldr r3, [sp, #28] + 7332: 9b07 ldr r3, [sp, #28] if(currentTuner.note != t_tunerData.note){ - 7394: f89d 2035 ldrb.w r2, [sp, #53] ; 0x35 - 7398: 82e3 strh r3, [r4, #22] - 739a: 82a3 strh r3, [r4, #20] - 739c: 786b ldrb r3, [r5, #1] - 739e: 429a cmp r2, r3 - 73a0: d019 beq.n 73d6 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x156> + 7334: f89d 2035 ldrb.w r2, [sp, #53] ; 0x35 + 7338: 82e3 strh r3, [r4, #22] + 733a: 82a3 strh r3, [r4, #20] + 733c: 786b ldrb r3, [r5, #1] + 733e: 429a cmp r2, r3 + 7340: d019 beq.n 7376 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x156> display.fillRect(t.x, fY, ((fontSize*6)*2), (fontSize*8), t.background); - 73a2: 9b06 ldr r3, [sp, #24] - 73a4: 4631 mov r1, r6 + 7342: 9b06 ldr r3, [sp, #24] + 7344: 4631 mov r1, r6 display.setCursor(t.x, fY); - 73a6: fa0f f28a sxth.w r2, sl + 7346: fa0f f28a sxth.w r2, sl display.fillRect(t.x, fY, ((fontSize*6)*2), (fontSize*8), t.background); - 73aa: 9301 str r3, [sp, #4] - 73ac: eb09 0349 add.w r3, r9, r9, lsl #1 - 73b0: 6820 ldr r0, [r4, #0] + 734a: 9301 str r3, [sp, #4] + 734c: eb09 0349 add.w r3, r9, r9, lsl #1 + 7350: 6820 ldr r0, [r4, #0] cursor_x = x; - 73b2: 8226 strh r6, [r4, #16] - 73b4: ea4f 06c9 mov.w r6, r9, lsl #3 + 7352: 8226 strh r6, [r4, #16] + 7354: ea4f 06c9 mov.w r6, r9, lsl #3 cursor_y = y; - 73b8: 8262 strh r2, [r4, #18] - 73ba: 009b lsls r3, r3, #2 - 73bc: 9600 str r6, [sp, #0] - 73be: 6c06 ldr r6, [r0, #64] ; 0x40 - 73c0: 4620 mov r0, r4 - 73c2: 47b0 blx r6 - 73c4: a80f add r0, sp, #60 ; 0x3c - 73c6: f027 fbbb bl 2eb40 - 73ca: 6823 ldr r3, [r4, #0] - 73cc: 4602 mov r2, r0 - 73ce: a90f add r1, sp, #60 ; 0x3c - 73d0: 685b ldr r3, [r3, #4] - 73d2: 4620 mov r0, r4 - 73d4: 4798 blx r3 + 7358: 8262 strh r2, [r4, #18] + 735a: 009b lsls r3, r3, #2 + 735c: 9600 str r6, [sp, #0] + 735e: 6c06 ldr r6, [r0, #64] ; 0x40 + 7360: 4620 mov r0, r4 + 7362: 47b0 blx r6 + 7364: a80f add r0, sp, #60 ; 0x3c + 7366: f027 fc6b bl 2ec40 + 736a: 6823 ldr r3, [r4, #0] + 736c: 4602 mov r2, r0 + 736e: a90f add r1, sp, #60 ; 0x3c + 7370: 685b ldr r3, [r3, #4] + 7372: 4620 mov r0, r4 + 7374: 4798 blx r3 if(currentTuner.stringNumber != t_tunerData.stringNumber){ - 73d6: f89d 2034 ldrb.w r2, [sp, #52] ; 0x34 - 73da: 782b ldrb r3, [r5, #0] - 73dc: 429a cmp r2, r3 - 73de: d019 beq.n 7414 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x194> + 7376: f89d 2034 ldrb.w r2, [sp, #52] ; 0x34 + 737a: 782b ldrb r3, [r5, #0] + 737c: 429a cmp r2, r3 + 737e: d019 beq.n 73b4 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x194> display.fillRect(fX, fY, (fontSize*6), (fontSize*8), t.background); - 73e0: ea4f 03c9 mov.w r3, r9, lsl #3 + 7380: ea4f 03c9 mov.w r3, r9, lsl #3 uint16_t fX = (t.x+t.w) - (fontSize*6); - 73e4: eb08 0107 add.w r1, r8, r7 + 7384: eb08 0107 add.w r1, r8, r7 display.setCursor(fX, fY); - 73e8: fa0f f28a sxth.w r2, sl + 7388: fa0f f28a sxth.w r2, sl display.fillRect(fX, fY, (fontSize*6), (fontSize*8), t.background); - 73ec: 9300 str r3, [sp, #0] + 738c: 9300 str r3, [sp, #0] uint16_t fX = (t.x+t.w) - (fontSize*6); - 73ee: 4459 add r1, fp + 738e: 4459 add r1, fp display.fillRect(fX, fY, (fontSize*6), (fontSize*8), t.background); - 73f0: 9b06 ldr r3, [sp, #24] + 7390: 9b06 ldr r3, [sp, #24] display.setCursor(fX, fY); - 73f2: b209 sxth r1, r1 + 7392: b209 sxth r1, r1 display.fillRect(fX, fY, (fontSize*6), (fontSize*8), t.background); - 73f4: 9301 str r3, [sp, #4] - 73f6: f1cb 0300 rsb r3, fp, #0 - 73fa: 6820 ldr r0, [r4, #0] + 7394: 9301 str r3, [sp, #4] + 7396: f1cb 0300 rsb r3, fp, #0 + 739a: 6820 ldr r0, [r4, #0] cursor_x = x; - 73fc: 8221 strh r1, [r4, #16] - 73fe: b21b sxth r3, r3 - 7400: 6c06 ldr r6, [r0, #64] ; 0x40 - 7402: 4620 mov r0, r4 + 739c: 8221 strh r1, [r4, #16] + 739e: b21b sxth r3, r3 + 73a0: 6c06 ldr r6, [r0, #64] ; 0x40 + 73a2: 4620 mov r0, r4 cursor_y = y; - 7404: 8262 strh r2, [r4, #18] - 7406: 47b0 blx r6 + 73a4: 8262 strh r2, [r4, #18] + 73a6: 47b0 blx r6 display.print(currentTuner.stringNumber+1); - 7408: f89d 1034 ldrb.w r1, [sp, #52] ; 0x34 + 73a8: f89d 1034 ldrb.w r1, [sp, #52] ; 0x34 size_t print(int n) { return print((long)n); } - 740c: 4620 mov r0, r4 - 740e: 3101 adds r1, #1 - 7410: f022 fd24 bl 29e5c + 73ac: 4620 mov r0, r4 + 73ae: 3101 adds r1, #1 + 73b0: f022 fdca bl 29f48 display.setTextSize(1); - 7414: 2101 movs r1, #1 - 7416: 4620 mov r0, r4 - 7418: f01f f974 bl 26704 + 73b4: 2101 movs r1, #1 + 73b6: 4620 mov r0, r4 + 73b8: f01f fa1a bl 267f0 long out_range = out_max - out_min; - 741c: f1a7 0318 sub.w r3, r7, #24 + 73bc: f1a7 0318 sub.w r3, r7, #24 uint16_t pitch = map(t_tunerData.pitchRaw, 0, 127, 12, t.w-12); - 7420: f895 9002 ldrb.w r9, [r5, #2] + 73c0: f895 9002 ldrb.w r9, [r5, #2] if (out_range >= 0) { - 7424: 2b00 cmp r3, #0 + 73c4: 2b00 cmp r3, #0 uint16_t pitch2 = map(currentTuner.pitchRaw, 0, 127, 12, t.w-12); - 7426: f89d 2036 ldrb.w r2, [sp, #54] ; 0x36 + 73c6: f89d 2036 ldrb.w r2, [sp, #54] ; 0x36 long num = (x - in_min) * out_range; - 742a: fb03 f909 mul.w r9, r3, r9 + 73ca: fb03 f909 mul.w r9, r3, r9 if (out_range >= 0) { - 742e: f2c0 80db blt.w 75e8 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x368> + 73ce: f2c0 80db blt.w 7588 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x368> num += in_range / 2; - 7432: f109 093f add.w r9, r9, #63 ; 0x3f + 73d2: f109 093f add.w r9, r9, #63 ; 0x3f long result = num / in_range + out_min; - 7436: 4888 ldr r0, [pc, #544] ; (7658 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3d8>) - 7438: fb80 1009 smull r1, r0, r0, r9 + 73d6: 4888 ldr r0, [pc, #544] ; (75f8 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3d8>) + 73d8: fb80 1009 smull r1, r0, r0, r9 if (in_range * num < 0) return result - 1; - 743c: f1b9 0f00 cmp.w r9, #0 + 73dc: f1b9 0f00 cmp.w r9, #0 long result = num / in_range + out_min; - 7440: ea4f 71e9 mov.w r1, r9, asr #31 - 7444: 4448 add r0, r9 - 7446: ebc1 11a0 rsb r1, r1, r0, asr #6 + 73e0: ea4f 71e9 mov.w r1, r9, asr #31 + 73e4: 4448 add r0, r9 + 73e6: ebc1 11a0 rsb r1, r1, r0, asr #6 if (in_range * num < 0) return result - 1; - 744a: f2c0 80e9 blt.w 7620 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3a0> + 73ea: f2c0 80e9 blt.w 75c0 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3a0> long result = num / in_range + out_min; - 744e: 310c adds r1, #12 + 73ee: 310c adds r1, #12 uint16_t pitch = map(t_tunerData.pitchRaw, 0, 127, 12, t.w-12); - 7450: b289 uxth r1, r1 + 73f0: b289 uxth r1, r1 long num = (x - in_min) * out_range; - 7452: fb02 f303 mul.w r3, r2, r3 - 7456: 910b str r1, [sp, #44] ; 0x2c + 73f2: fb02 f303 mul.w r3, r2, r3 + 73f6: 910b str r1, [sp, #44] ; 0x2c num += in_range / 2; - 7458: 333f adds r3, #63 ; 0x3f + 73f8: 333f adds r3, #63 ; 0x3f long result = num / in_range + out_min; - 745a: 4980 ldr r1, [pc, #512] ; (765c (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3dc>) - 745c: fba1 0103 umull r0, r1, r1, r3 - 7460: 1a5b subs r3, r3, r1 - 7462: eb01 0153 add.w r1, r1, r3, lsr #1 - 7466: 0989 lsrs r1, r1, #6 - 7468: 310c adds r1, #12 + 73fa: 4980 ldr r1, [pc, #512] ; (75fc (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3dc>) + 73fc: fba1 0103 umull r0, r1, r1, r3 + 7400: 1a5b subs r3, r3, r1 + 7402: eb01 0153 add.w r1, r1, r3, lsr #1 + 7406: 0989 lsrs r1, r1, #6 + 7408: 310c adds r1, #12 uint16_t color = (currentTuner.pitchRaw <= 64) ? t.color : t.background; - 746a: 9e06 ldr r6, [sp, #24] + 740a: 9e06 ldr r6, [sp, #24] uint16_t centerX = (t.w / 2); - 746c: ea4f 0a57 mov.w sl, r7, lsr #1 + 740c: ea4f 0a57 mov.w sl, r7, lsr #1 uint16_t color = (currentTuner.pitchRaw <= 64) ? t.color : t.background; - 7470: 9b08 ldr r3, [sp, #32] + 7410: 9b08 ldr r3, [sp, #32] triangleHelper(display, t.x+(centerX-(triW+6)), t.y, triW, centerY-4, color, false); - 7472: f8bd 9010 ldrh.w r9, [sp, #16] + 7412: f8bd 9010 ldrh.w r9, [sp, #16] uint16_t color = (currentTuner.pitchRaw <= 64) ? t.color : t.background; - 7476: 2a40 cmp r2, #64 ; 0x40 - 7478: bf88 it hi - 747a: 4633 movhi r3, r6 + 7416: 2a40 cmp r2, #64 ; 0x40 + 7418: bf88 it hi + 741a: 4633 movhi r3, r6 uint16_t triW = t.w/5; - 747c: 4e78 ldr r6, [pc, #480] ; (7660 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3e0>) + 741c: 4e78 ldr r6, [pc, #480] ; (7600 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3e0>) uint16_t pitch2 = map(currentTuner.pitchRaw, 0, 127, 12, t.w-12); - 747e: b28a uxth r2, r1 + 741e: b28a uxth r2, r1 } template void triangleHelper(T& display, uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color, bool mirror=false){ if(!mirror){ display.fillTriangle(x, y+h, x, y, x+w, y+(h/2), color); - 7480: 9804 ldr r0, [sp, #16] - 7482: 9303 str r3, [sp, #12] + 7420: 9804 ldr r0, [sp, #16] + 7422: 9303 str r3, [sp, #12] uint16_t triW = t.w/5; - 7484: fba6 3607 umull r3, r6, r6, r7 + 7424: fba6 3607 umull r3, r6, r6, r7 triangleHelper(display, t.x+(centerX-(triW+6)), t.y, triW, centerY-4, color, false); - 7488: f1aa 0306 sub.w r3, sl, #6 + 7428: f1aa 0306 sub.w r3, sl, #6 uint16_t pitch2 = map(currentTuner.pitchRaw, 0, 127, 12, t.w-12); - 748c: 920a str r2, [sp, #40] ; 0x28 + 742c: 920a str r2, [sp, #40] ; 0x28 triangleHelper(display, t.x+(centerX+6), t.y, triW, centerY-8, color, true); - 748e: 44c2 add sl, r8 + 742e: 44c2 add sl, r8 uint16_t centerY = (t.h / 2); - 7490: 9a05 ldr r2, [sp, #20] + 7430: 9a05 ldr r2, [sp, #20] triangleHelper(display, t.x+(centerX-(triW+6)), t.y, triW, centerY-4, color, false); - 7492: eba3 0396 sub.w r3, r3, r6, lsr #2 + 7432: eba3 0396 sub.w r3, r3, r6, lsr #2 uint16_t triW = t.w/5; - 7496: 08b6 lsrs r6, r6, #2 + 7436: 08b6 lsrs r6, r6, #2 display.fillTriangle(x, y+h, x, y, x+w, y+(h/2), color); - 7498: 9000 str r0, [sp, #0] + 7438: 9000 str r0, [sp, #0] uint16_t centerY = (t.h / 2); - 749a: ea4f 0b52 mov.w fp, r2, lsr #1 + 743a: ea4f 0b52 mov.w fp, r2, lsr #1 triangleHelper(display, t.x+(centerX-(triW+6)), t.y, triW, centerY-4, color, false); - 749e: 4443 add r3, r8 + 743e: 4443 add r3, r8 display.fillTriangle(x, y+h, x, y, x+w, y+(h/2), color); - 74a0: 4620 mov r0, r4 + 7440: 4620 mov r0, r4 triangleHelper(display, t.x+(centerX+6), t.y, triW, centerY-8, color, true); - 74a2: fa1f fa8a uxth.w sl, sl + 7442: fa1f fa8a uxth.w sl, sl display.fillTriangle(x, y+h, x, y, x+w, y+(h/2), color); - 74a6: fa16 f183 uxtah r1, r6, r3 + 7446: fa16 f183 uxtah r1, r6, r3 triangleHelper(display, t.x+(centerX-(triW+6)), t.y, triW, centerY-4, color, false); - 74aa: f1ab 0204 sub.w r2, fp, #4 + 744a: f1ab 0204 sub.w r2, fp, #4 display.fillTriangle(x, y+h, x, y, x+w, y+(h/2), color); - 74ae: b21b sxth r3, r3 + 744e: b21b sxth r3, r3 triangleHelper(display, t.x+(centerX-(triW+6)), t.y, triW, centerY-4, color, false); - 74b0: b292 uxth r2, r2 + 7450: b292 uxth r2, r2 display.fillTriangle(x, y+h, x, y, x+w, y+(h/2), color); - 74b2: b209 sxth r1, r1 - 74b4: 9101 str r1, [sp, #4] - 74b6: eb09 0152 add.w r1, r9, r2, lsr #1 - 74ba: 444a add r2, r9 - 74bc: b209 sxth r1, r1 - 74be: b212 sxth r2, r2 - 74c0: 9102 str r1, [sp, #8] - 74c2: 4619 mov r1, r3 - 74c4: f01e fd48 bl 25f58 + 7452: b209 sxth r1, r1 + 7454: 9101 str r1, [sp, #4] + 7456: eb09 0152 add.w r1, r9, r2, lsr #1 + 745a: 444a add r2, r9 + 745c: b209 sxth r1, r1 + 745e: b212 sxth r2, r2 + 7460: 9102 str r1, [sp, #8] + 7462: 4619 mov r1, r3 + 7464: f01e fdee bl 26044 } else { display.fillTriangle(x+w, y+h, x+w, y, x, y+(h/2), color); - 74c8: 9904 ldr r1, [sp, #16] + 7468: 9904 ldr r1, [sp, #16] triangleHelper(display, t.x+(centerX+6), t.y, triW, centerY-8, color, true); - 74ca: f1ab 0208 sub.w r2, fp, #8 + 746a: f1ab 0208 sub.w r2, fp, #8 color = (currentTuner.pitchRaw >= 62) ? t.color : t.background; - 74ce: 9808 ldr r0, [sp, #32] + 746e: 9808 ldr r0, [sp, #32] display.fillTriangle(x+w, y+h, x+w, y, x, y+(h/2), color); - 74d0: 9100 str r1, [sp, #0] + 7470: 9100 str r1, [sp, #0] triangleHelper(display, t.x+(centerX+6), t.y, triW, centerY-8, color, true); - 74d2: f10a 0106 add.w r1, sl, #6 - 74d6: b292 uxth r2, r2 - 74d8: b289 uxth r1, r1 + 7472: f10a 0106 add.w r1, sl, #6 + 7476: b292 uxth r2, r2 + 7478: b289 uxth r1, r1 display.fillTriangle(x+w, y+h, x+w, y, x, y+(h/2), color); - 74da: 440e add r6, r1 - 74dc: b209 sxth r1, r1 - 74de: b233 sxth r3, r6 - 74e0: 9101 str r1, [sp, #4] + 747a: 440e add r6, r1 + 747c: b209 sxth r1, r1 + 747e: b233 sxth r3, r6 + 7480: 9101 str r1, [sp, #4] color = (currentTuner.pitchRaw >= 62) ? t.color : t.background; - 74e2: 9e06 ldr r6, [sp, #24] - 74e4: f89d 1036 ldrb.w r1, [sp, #54] ; 0x36 - 74e8: 293d cmp r1, #61 ; 0x3d - 74ea: bf98 it ls - 74ec: 4630 movls r0, r6 + 7482: 9e06 ldr r6, [sp, #24] + 7484: f89d 1036 ldrb.w r1, [sp, #54] ; 0x36 + 7488: 293d cmp r1, #61 ; 0x3d + 748a: bf98 it ls + 748c: 4630 movls r0, r6 display.fillTriangle(x+w, y+h, x+w, y, x, y+(h/2), color); - 74ee: eb09 0152 add.w r1, r9, r2, lsr #1 - 74f2: 444a add r2, r9 - 74f4: b209 sxth r1, r1 - 74f6: 9003 str r0, [sp, #12] - 74f8: b212 sxth r2, r2 - 74fa: 4620 mov r0, r4 - 74fc: 9102 str r1, [sp, #8] - 74fe: 4619 mov r1, r3 - 7500: f01e fd2a bl 25f58 + 748e: eb09 0152 add.w r1, r9, r2, lsr #1 + 7492: 444a add r2, r9 + 7494: b209 sxth r1, r1 + 7496: 9003 str r0, [sp, #12] + 7498: b212 sxth r2, r2 + 749a: 4620 mov r0, r4 + 749c: 9102 str r1, [sp, #8] + 749e: 4619 mov r1, r3 + 74a0: f01e fdd0 bl 26044 uint8_t circleY = t.y+(t.h*0.75); - 7504: eeb6 7b08 vmov.f64 d7, #104 ; 0x3f400000 0.750 + 74a4: eeb6 7b08 vmov.f64 d7, #104 ; 0x3f400000 0.750 uint8_t circleRadius = (uint8_t) centerY*0.3; - 7508: fa5f f08b uxtb.w r0, fp + 74a8: fa5f f08b uxtb.w r0, fp display.fillCircle(t.x+pitch, circleY, circleRadius, t.background); - 750c: 9b0b ldr r3, [sp, #44] ; 0x2c - 750e: 9600 str r6, [sp, #0] + 74ac: 9b0b ldr r3, [sp, #44] ; 0x2c + 74ae: 9600 str r6, [sp, #0] uint8_t circleY = t.y+(t.h*0.75); - 7510: eea9 8b07 vfma.f64 d8, d9, d7 + 74b0: eea9 8b07 vfma.f64 d8, d9, d7 uint8_t circleRadius = (uint8_t) centerY*0.3; - 7514: ee07 0a10 vmov s14, r0 + 74b4: ee07 0a10 vmov s14, r0 display.fillCircle(t.x+pitch, circleY, circleRadius, t.background); - 7518: 4443 add r3, r8 - 751a: 4620 mov r0, r4 - 751c: b219 sxth r1, r3 + 74b8: 4443 add r3, r8 + 74ba: 4620 mov r0, r4 + 74bc: b219 sxth r1, r3 uint8_t circleRadius = (uint8_t) centerY*0.3; - 751e: ed9f 6b4c vldr d6, [pc, #304] ; 7650 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3d0> + 74be: ed9f 6b4c vldr d6, [pc, #304] ; 75f0 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3d0> uint8_t circleY = t.y+(t.h*0.75); - 7522: eefc 7bc8 vcvt.u32.f64 s15, d8 - 7526: edcd 7a08 vstr s15, [sp, #32] + 74c2: eefc 7bc8 vcvt.u32.f64 s15, d8 + 74c6: edcd 7a08 vstr s15, [sp, #32] uint8_t circleRadius = (uint8_t) centerY*0.3; - 752a: eeb8 7bc7 vcvt.f64.s32 d7, s14 + 74ca: eeb8 7bc7 vcvt.f64.s32 d7, s14 display.fillCircle(t.x+pitch, circleY, circleRadius, t.background); - 752e: f89d 2020 ldrb.w r2, [sp, #32] + 74ce: f89d 2020 ldrb.w r2, [sp, #32] uint8_t circleRadius = (uint8_t) centerY*0.3; - 7532: ee27 7b06 vmul.f64 d7, d7, d6 + 74d2: ee27 7b06 vmul.f64 d7, d7, d6 display.fillCircle(t.x+pitch, circleY, circleRadius, t.background); - 7536: 9208 str r2, [sp, #32] + 74d6: 9208 str r2, [sp, #32] uint8_t circleRadius = (uint8_t) centerY*0.3; - 7538: eefc 7bc7 vcvt.u32.f64 s15, d7 - 753c: edcd 7a06 vstr s15, [sp, #24] - 7540: f89d 3018 ldrb.w r3, [sp, #24] + 74d8: eefc 7bc7 vcvt.u32.f64 s15, d7 + 74dc: edcd 7a06 vstr s15, [sp, #24] + 74e0: f89d 3018 ldrb.w r3, [sp, #24] display.fillCircle(t.x+pitch, circleY, circleRadius, t.background); - 7544: 2b06 cmp r3, #6 - 7546: bf38 it cc - 7548: 2306 movcc r3, #6 - 754a: 9306 str r3, [sp, #24] - 754c: f01e fc46 bl 25ddc + 74e4: 2b06 cmp r3, #6 + 74e6: bf38 it cc + 74e8: 2306 movcc r3, #6 + 74ea: 9306 str r3, [sp, #24] + 74ec: f01e fcec bl 25ec8 display.fillCircle(t.x+pitch2, circleY, circleRadius, t.color2); - 7550: 9b0a ldr r3, [sp, #40] ; 0x28 - 7552: 9809 ldr r0, [sp, #36] ; 0x24 - 7554: eb03 0108 add.w r1, r3, r8 - 7558: 9a08 ldr r2, [sp, #32] - 755a: 9b06 ldr r3, [sp, #24] - 755c: 9000 str r0, [sp, #0] - 755e: b209 sxth r1, r1 - 7560: 4620 mov r0, r4 - 7562: f01e fc3b bl 25ddc + 74f0: 9b0a ldr r3, [sp, #40] ; 0x28 + 74f2: 9809 ldr r0, [sp, #36] ; 0x24 + 74f4: eb03 0108 add.w r1, r3, r8 + 74f8: 9a08 ldr r2, [sp, #32] + 74fa: 9b06 ldr r3, [sp, #24] + 74fc: 9000 str r0, [sp, #0] + 74fe: b209 sxth r1, r1 + 7500: 4620 mov r0, r4 + 7502: f01e fce1 bl 25ec8 display.drawFastVLine(t.x+centerX, t.y, t.h, t.color3); - 7566: 9807 ldr r0, [sp, #28] - 7568: f9bd 3014 ldrsh.w r3, [sp, #20] - 756c: fa0f f18a sxth.w r1, sl - 7570: 9000 str r0, [sp, #0] - 7572: 6820 ldr r0, [r4, #0] - 7574: 9a04 ldr r2, [sp, #16] - 7576: 6b86 ldr r6, [r0, #56] ; 0x38 - 7578: 4620 mov r0, r4 - 757a: 47b0 blx r6 + 7506: 9807 ldr r0, [sp, #28] + 7508: f9bd 3014 ldrsh.w r3, [sp, #20] + 750c: fa0f f18a sxth.w r1, sl + 7510: 9000 str r0, [sp, #0] + 7512: 6820 ldr r0, [r4, #0] + 7514: 9a04 ldr r2, [sp, #16] + 7516: 6b86 ldr r6, [r0, #56] ; 0x38 + 7518: 4620 mov r0, r4 + 751a: 47b0 blx r6 display.drawRect(t.x+2, t.y+centerY, t.w-4, centerY, t.color3); - 757c: 9807 ldr r0, [sp, #28] - 757e: f8cd b000 str.w fp, [sp] - 7582: 1f3b subs r3, r7, #4 - 7584: 9001 str r0, [sp, #4] - 7586: eb0b 0209 add.w r2, fp, r9 - 758a: 6826 ldr r6, [r4, #0] - 758c: f108 0102 add.w r1, r8, #2 - 7590: 4620 mov r0, r4 - 7592: b21b sxth r3, r3 - 7594: 6cf4 ldr r4, [r6, #76] ; 0x4c - 7596: b212 sxth r2, r2 - 7598: b209 sxth r1, r1 + 751c: 9807 ldr r0, [sp, #28] + 751e: f8cd b000 str.w fp, [sp] + 7522: 1f3b subs r3, r7, #4 + 7524: 9001 str r0, [sp, #4] + 7526: eb0b 0209 add.w r2, fp, r9 + 752a: 6826 ldr r6, [r4, #0] + 752c: f108 0102 add.w r1, r8, #2 + 7530: 4620 mov r0, r4 + 7532: b21b sxth r3, r3 + 7534: 6cf4 ldr r4, [r6, #76] ; 0x4c + 7536: b212 sxth r2, r2 + 7538: b209 sxth r1, r1 return true; - 759a: f04f 0801 mov.w r8, #1 + 753a: f04f 0801 mov.w r8, #1 display.drawRect(t.x+2, t.y+centerY, t.w-4, centerY, t.color3); - 759e: 47a0 blx r4 + 753e: 47a0 blx r4 t_tunerData = currentTuner; - 75a0: ac0d add r4, sp, #52 ; 0x34 - 75a2: cc0f ldmia r4!, {r0, r1, r2, r3} - 75a4: c50f stmia r5!, {r0, r1, r2, r3} - 75a6: 6823 ldr r3, [r4, #0] + 7540: ac0d add r4, sp, #52 ; 0x34 + 7542: cc0f ldmia r4!, {r0, r1, r2, r3} + 7544: c50f stmia r5!, {r0, r1, r2, r3} + 7546: 6823 ldr r3, [r4, #0] } - 75a8: 4640 mov r0, r8 + 7548: 4640 mov r0, r8 t_tunerData = currentTuner; - 75aa: 602b str r3, [r5, #0] + 754a: 602b str r3, [r5, #0] } - 75ac: b013 add sp, #76 ; 0x4c - 75ae: ecbd 8b04 vpop {d8-d9} - 75b2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 754c: b013 add sp, #76 ; 0x4c + 754e: ecbd 8b04 vpop {d8-d9} + 7552: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if((t.w == 128 && t.h == 64) || t.h == 40){ - 75b6: f04f 0902 mov.w r9, #2 - 75ba: eeb3 6b00 vmov.f64 d6, #48 ; 0x41800000 16.0 - 75be: f64f 7bf4 movw fp, #65524 ; 0xfff4 + 7556: f04f 0902 mov.w r9, #2 + 755a: eeb3 6b00 vmov.f64 d6, #48 ; 0x41800000 16.0 + 755e: f64f 7bf4 movw fp, #65524 ; 0xfff4 fontSize = 2; - 75c2: 4649 mov r1, r9 - 75c4: e6ce b.n 7364 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0xe4> - 75c6: eddd 7a05 vldr s15, [sp, #20] + 7562: 4649 mov r1, r9 + 7564: e6ce b.n 7304 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0xe4> + 7566: eddd 7a05 vldr s15, [sp, #20] long out_range = out_max - out_min; - 75ca: f1a7 0318 sub.w r3, r7, #24 + 756a: f1a7 0318 sub.w r3, r7, #24 uint16_t fX = (t.x+t.w) - (fontSize*6); - 75ce: fa1f f886 uxth.w r8, r6 + 756e: fa1f f886 uxth.w r8, r6 long map(T _x, A _in_min, B _in_max, C _out_min, D _out_max, typename std::enable_if::value >::type* = 0) - 75d2: eeb8 9be7 vcvt.f64.s32 d9, s15 + 7572: eeb8 9be7 vcvt.f64.s32 d9, s15 if (out_range >= 0) { - 75d6: 2b00 cmp r3, #0 - 75d8: eddd 7a04 vldr s15, [sp, #16] + 7576: 2b00 cmp r3, #0 + 7578: eddd 7a04 vldr s15, [sp, #16] long num = (x - in_min) * out_range; - 75dc: fb03 f909 mul.w r9, r3, r9 - 75e0: eeb8 8be7 vcvt.f64.s32 d8, s15 + 757c: fb03 f909 mul.w r9, r3, r9 + 7580: eeb8 8be7 vcvt.f64.s32 d8, s15 if (out_range >= 0) { - 75e4: f6bf af25 bge.w 7432 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1b2> + 7584: f6bf af25 bge.w 73d2 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1b2> num -= in_range / 2; - 75e8: f1a9 093f sub.w r9, r9, #63 ; 0x3f + 7588: f1a9 093f sub.w r9, r9, #63 ; 0x3f long result = num / in_range + out_min; - 75ec: 481a ldr r0, [pc, #104] ; (7658 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3d8>) - 75ee: fb80 1009 smull r1, r0, r0, r9 + 758c: 481a ldr r0, [pc, #104] ; (75f8 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3d8>) + 758e: fb80 1009 smull r1, r0, r0, r9 if (in_range * num >= 0) return result + 1; - 75f2: f1b9 0f00 cmp.w r9, #0 + 7592: f1b9 0f00 cmp.w r9, #0 long result = num / in_range + out_min; - 75f6: ea4f 71e9 mov.w r1, r9, asr #31 - 75fa: 4448 add r0, r9 - 75fc: ebc1 11a0 rsb r1, r1, r0, asr #6 + 7596: ea4f 71e9 mov.w r1, r9, asr #31 + 759a: 4448 add r0, r9 + 759c: ebc1 11a0 rsb r1, r1, r0, asr #6 if (in_range * num >= 0) return result + 1; - 7600: da21 bge.n 7646 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3c6> + 75a0: da21 bge.n 75e6 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3c6> long result = num / in_range + out_min; - 7602: 310c adds r1, #12 + 75a2: 310c adds r1, #12 long num = (x - in_min) * out_range; - 7604: fb02 f303 mul.w r3, r2, r3 + 75a4: fb02 f303 mul.w r3, r2, r3 uint16_t pitch = map(t_tunerData.pitchRaw, 0, 127, 12, t.w-12); - 7608: b289 uxth r1, r1 + 75a8: b289 uxth r1, r1 long result = num / in_range + out_min; - 760a: 4813 ldr r0, [pc, #76] ; (7658 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3d8>) + 75aa: 4813 ldr r0, [pc, #76] ; (75f8 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x3d8>) num -= in_range / 2; - 760c: 3b3f subs r3, #63 ; 0x3f - 760e: 910b str r1, [sp, #44] ; 0x2c + 75ac: 3b3f subs r3, #63 ; 0x3f + 75ae: 910b str r1, [sp, #44] ; 0x2c long result = num / in_range + out_min; - 7610: fb80 1003 smull r1, r0, r0, r3 - 7614: 17d9 asrs r1, r3, #31 - 7616: 4418 add r0, r3 - 7618: ebc1 11a0 rsb r1, r1, r0, asr #6 - 761c: 310c adds r1, #12 - 761e: e724 b.n 746a (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1ea> + 75b0: fb80 1003 smull r1, r0, r0, r3 + 75b4: 17d9 asrs r1, r3, #31 + 75b6: 4418 add r0, r3 + 75b8: ebc1 11a0 rsb r1, r1, r0, asr #6 + 75bc: 310c adds r1, #12 + 75be: e724 b.n 740a (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1ea> if (in_range * num < 0) return result - 1; - 7620: 310b adds r1, #11 - 7622: e715 b.n 7450 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1d0> + 75c0: 310b adds r1, #11 + 75c2: e715 b.n 73f0 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x1d0> if((t.w == 128 && t.h == 64) || t.h == 40){ - 7624: 9b05 ldr r3, [sp, #20] - 7626: 2b40 cmp r3, #64 ; 0x40 - 7628: d0c5 beq.n 75b6 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x336> - 762a: 2b28 cmp r3, #40 ; 0x28 - 762c: d0c3 beq.n 75b6 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x336> + 75c4: 9b05 ldr r3, [sp, #20] + 75c6: 2b40 cmp r3, #64 ; 0x40 + 75c8: d0c5 beq.n 7556 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x336> + 75ca: 2b28 cmp r3, #40 ; 0x28 + 75cc: d0c3 beq.n 7556 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x336> } else if(t.w == 128 && t.h == 32){ - 762e: 9b05 ldr r3, [sp, #20] - 7630: 2b20 cmp r3, #32 - 7632: f47f ae7a bne.w 732a (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0xaa> - 7636: f04f 0901 mov.w r9, #1 - 763a: eeb2 6b00 vmov.f64 d6, #32 ; 0x41000000 8.0 - 763e: f64f 7bfa movw fp, #65530 ; 0xfffa + 75ce: 9b05 ldr r3, [sp, #20] + 75d0: 2b20 cmp r3, #32 + 75d2: f47f ae7a bne.w 72ca (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0xaa> + 75d6: f04f 0901 mov.w r9, #1 + 75da: eeb2 6b00 vmov.f64 d6, #32 ; 0x41000000 8.0 + 75de: f64f 7bfa movw fp, #65530 ; 0xfffa fontSize = 1; - 7642: 4649 mov r1, r9 - 7644: e68e b.n 7364 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0xe4> + 75e2: 4649 mov r1, r9 + 75e4: e68e b.n 7304 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0xe4> if (in_range * num >= 0) return result + 1; - 7646: 310d adds r1, #13 - 7648: e7dc b.n 7604 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x384> - 764a: bf00 nop - 764c: f3af 8000 nop.w - 7650: 33333333 .word 0x33333333 - 7654: 3fd33333 .word 0x3fd33333 - 7658: 81020409 .word 0x81020409 - 765c: 02040811 .word 0x02040811 - 7660: cccccccd .word 0xcccccccd - -00007664 : + 75e6: 310d adds r1, #13 + 75e8: e7dc b.n 75a4 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]+0x384> + 75ea: bf00 nop + 75ec: f3af 8000 nop.w + 75f0: 33333333 .word 0x33333333 + 75f4: 3fd33333 .word 0x3fd33333 + 75f8: 81020409 .word 0x81020409 + 75fc: 02040811 .word 0x02040811 + 7600: cccccccd .word 0xcccccccd + +00007604 : } #endif BMCLinkData buff; return buff; } static BMCSketchByteData getSketchByteData(uint8_t index){ - 7664: b5f0 push {r4, r5, r6, r7, lr} + 7604: b5f0 push {r4, r5, r6, r7, lr} char defaultName[BMC_NAME_LEN_SKETCH_BYTES] = ""; if(index>9){ - 7666: 2909 cmp r1, #9 + 7606: 2909 cmp r1, #9 static BMCSketchByteData getSketchByteData(uint8_t index){ - 7668: b08f sub sp, #60 ; 0x3c + 7608: b08f sub sp, #60 ; 0x3c char defaultName[BMC_NAME_LEN_SKETCH_BYTES] = ""; - 766a: f04f 0500 mov.w r5, #0 + 760a: f04f 0500 mov.w r5, #0 static BMCSketchByteData getSketchByteData(uint8_t index){ - 766e: 460e mov r6, r1 - 7670: 4604 mov r4, r0 + 760e: 460e mov r6, r1 + 7610: 4604 mov r4, r0 sprintf(defaultName,"Byte %02u",(uint8_t)index); - 7672: 460a mov r2, r1 + 7612: 460a mov r2, r1 char defaultName[BMC_NAME_LEN_SKETCH_BYTES] = ""; - 7674: 9505 str r5, [sp, #20] - 7676: f88d 5018 strb.w r5, [sp, #24] - 767a: e9cd 5501 strd r5, r5, [sp, #4] - 767e: e9cd 5503 strd r5, r5, [sp, #12] + 7614: 9505 str r5, [sp, #20] + 7616: f88d 5018 strb.w r5, [sp, #24] + 761a: e9cd 5501 strd r5, r5, [sp, #4] + 761e: e9cd 5503 strd r5, r5, [sp, #12] if(index>9){ - 7682: d91e bls.n 76c2 + 7622: d91e bls.n 7662 sprintf(defaultName,"Byte %02u",(uint8_t)index); - 7684: 4937 ldr r1, [pc, #220] ; (7764 ) - 7686: a801 add r0, sp, #4 - 7688: f026 fd80 bl 2e18c + 7624: 4937 ldr r1, [pc, #220] ; (7704 ) + 7626: a801 add r0, sp, #4 + 7628: f026 fe24 bl 2e274 BMCSketchByteData(){} - 768c: 4a36 ldr r2, [pc, #216] ; (7768 ) - 768e: 4623 mov r3, r4 + 762c: 4a36 ldr r2, [pc, #216] ; (7708 ) + 762e: 4623 mov r3, r4 } else { sprintf(defaultName,"Byte %01u",(uint8_t)index); } BMCSketchByteData buffer; strcpy(buffer.name,defaultName); - 7690: a901 add r1, sp, #4 - 7692: 7812 ldrb r2, [r2, #0] - 7694: 4620 mov r0, r4 - 7696: f803 2b01 strb.w r2, [r3], #1 - 769a: f8c4 5001 str.w r5, [r4, #1] - 769e: 605d str r5, [r3, #4] - 76a0: 609d str r5, [r3, #8] - 76a2: 60dd str r5, [r3, #12] - 76a4: 611d str r5, [r3, #16] - 76a6: f027 f969 bl 2e97c + 7630: a901 add r1, sp, #4 + 7632: 7812 ldrb r2, [r2, #0] + 7634: 4620 mov r0, r4 + 7636: f803 2b01 strb.w r2, [r3], #1 + 763a: f8c4 5001 str.w r5, [r4, #1] + 763e: 605d str r5, [r3, #4] + 7640: 609d str r5, [r3, #8] + 7642: 60dd str r5, [r3, #12] + 7644: 611d str r5, [r3, #16] + 7646: f027 fa09 bl 2ea5c buffer.initialValue = 0; buffer.min = 0; buffer.max = 255; - 76aa: 22ff movs r2, #255 ; 0xff + 764a: 22ff movs r2, #255 ; 0xff buffer.step = 1; - 76ac: 2301 movs r3, #1 + 764c: 2301 movs r3, #1 buffer.initialValue = 0; - 76ae: 7565 strb r5, [r4, #21] + 764e: 7565 strb r5, [r4, #21] buffer.min = 0; - 76b0: 75a5 strb r5, [r4, #22] + 7650: 75a5 strb r5, [r4, #22] buffer.max = 255; - 76b2: 75e2 strb r2, [r4, #23] + 7652: 75e2 strb r2, [r4, #23] buffer.step = 1; - 76b4: 7623 strb r3, [r4, #24] + 7654: 7623 strb r3, [r4, #24] buffer.formatType = BMC_NONE; - 76b6: 7665 strb r5, [r4, #25] + 7656: 7665 strb r5, [r4, #25] buffer.formatValue = BMC_NONE; - 76b8: 76a5 strb r5, [r4, #26] + 7658: 76a5 strb r5, [r4, #26] buffer.formatAppend = BMC_NONE; - 76ba: 76e5 strb r5, [r4, #27] + 765a: 76e5 strb r5, [r4, #27] #endif } #endif return buffer; } - 76bc: 4620 mov r0, r4 - 76be: b00f add sp, #60 ; 0x3c - 76c0: bdf0 pop {r4, r5, r6, r7, pc} + 765c: 4620 mov r0, r4 + 765e: b00f add sp, #60 ; 0x3c + 7660: bdf0 pop {r4, r5, r6, r7, pc} sprintf(defaultName,"Byte %01u",(uint8_t)index); - 76c2: 492a ldr r1, [pc, #168] ; (776c ) - 76c4: a801 add r0, sp, #4 - 76c6: f026 fd61 bl 2e18c - 76ca: 4b27 ldr r3, [pc, #156] ; (7768 ) + 7662: 492a ldr r1, [pc, #168] ; (770c ) + 7664: a801 add r0, sp, #4 + 7666: f026 fe05 bl 2e274 + 766a: 4b27 ldr r3, [pc, #156] ; (7708 ) strcpy(buffer.name,defaultName); - 76cc: a901 add r1, sp, #4 - 76ce: 4620 mov r0, r4 - 76d0: 781a ldrb r2, [r3, #0] - 76d2: 4623 mov r3, r4 - 76d4: f803 2b01 strb.w r2, [r3], #1 - 76d8: f8c4 5001 str.w r5, [r4, #1] - 76dc: 605d str r5, [r3, #4] - 76de: 609d str r5, [r3, #8] - 76e0: 60dd str r5, [r3, #12] - 76e2: 611d str r5, [r3, #16] - 76e4: f027 f94a bl 2e97c + 766c: a901 add r1, sp, #4 + 766e: 4620 mov r0, r4 + 7670: 781a ldrb r2, [r3, #0] + 7672: 4623 mov r3, r4 + 7674: f803 2b01 strb.w r2, [r3], #1 + 7678: f8c4 5001 str.w r5, [r4, #1] + 767c: 605d str r5, [r3, #4] + 767e: 609d str r5, [r3, #8] + 7680: 60dd str r5, [r3, #12] + 7682: 611d str r5, [r3, #16] + 7684: f027 f9ea bl 2ea5c buffer.max = 255; - 76e8: 22ff movs r2, #255 ; 0xff + 7688: 22ff movs r2, #255 ; 0xff buffer.step = 1; - 76ea: 2301 movs r3, #1 + 768a: 2301 movs r3, #1 buffer.initialValue = 0; - 76ec: 7565 strb r5, [r4, #21] + 768c: 7565 strb r5, [r4, #21] buffer.min = 0; - 76ee: 75a5 strb r5, [r4, #22] + 768e: 75a5 strb r5, [r4, #22] buffer.max = 255; - 76f0: 75e2 strb r2, [r4, #23] + 7690: 75e2 strb r2, [r4, #23] buffer.step = 1; - 76f2: 7623 strb r3, [r4, #24] + 7692: 7623 strb r3, [r4, #24] buffer.formatType = BMC_NONE; - 76f4: 7665 strb r5, [r4, #25] + 7694: 7665 strb r5, [r4, #25] buffer.formatValue = BMC_NONE; - 76f6: 76a5 strb r5, [r4, #26] + 7696: 76a5 strb r5, [r4, #26] buffer.formatAppend = BMC_NONE; - 76f8: 76e5 strb r5, [r4, #27] + 7698: 76e5 strb r5, [r4, #27] switch(index){ - 76fa: 2e03 cmp r6, #3 - 76fc: d8de bhi.n 76bc - 76fe: e8df f006 tbb [pc, r6] - 7702: 262b .short 0x262b - 7704: 0221 .short 0x0221 + 769a: 2e03 cmp r6, #3 + 769c: d8de bhi.n 765c + 769e: e8df f006 tbb [pc, r6] + 76a2: 262b .short 0x262b + 76a4: 0221 .short 0x0221 { - 7706: 4f1a ldr r7, [pc, #104] ; (7770 ) - 7708: ae07 add r6, sp, #28 + 76a6: 4f1a ldr r7, [pc, #104] ; (7710 ) + 76a8: ae07 add r6, sp, #28 strcpy(name, t_name); - 770a: f8df c068 ldr.w ip, [pc, #104] ; 7774 + 76aa: f8df c068 ldr.w ip, [pc, #104] ; 7714 case 3: buffer = BMC_SKETCH_BYTE_3_DATA; break; - 770e: 4635 mov r5, r6 + 76ae: 4635 mov r5, r6 { - 7710: cf0f ldmia r7!, {r0, r1, r2, r3} - 7712: c60f stmia r6!, {r0, r1, r2, r3} - 7714: e897 0007 ldmia.w r7, {r0, r1, r2} - 7718: e886 0007 stmia.w r6, {r0, r1, r2} + 76b0: cf0f ldmia r7!, {r0, r1, r2, r3} + 76b2: c60f stmia r6!, {r0, r1, r2, r3} + 76b4: e897 0007 ldmia.w r7, {r0, r1, r2} + 76b8: e886 0007 stmia.w r6, {r0, r1, r2} strcpy(name, t_name); - 771c: e89c 0003 ldmia.w ip, {r0, r1} - 7720: 0c0b lsrs r3, r1, #16 - 7722: 9007 str r0, [sp, #28] - 7724: f8ad 1020 strh.w r1, [sp, #32] - 7728: f88d 3022 strb.w r3, [sp, #34] ; 0x22 - 772c: cd0f ldmia r5!, {r0, r1, r2, r3} - 772e: 6020 str r0, [r4, #0] - 7730: 6061 str r1, [r4, #4] - 7732: 60a2 str r2, [r4, #8] - 7734: 60e3 str r3, [r4, #12] - 7736: cd07 ldmia r5!, {r0, r1, r2} - 7738: 6120 str r0, [r4, #16] -} - 773a: 4620 mov r0, r4 + 76bc: e89c 0003 ldmia.w ip, {r0, r1} + 76c0: 0c0b lsrs r3, r1, #16 + 76c2: 9007 str r0, [sp, #28] + 76c4: f8ad 1020 strh.w r1, [sp, #32] + 76c8: f88d 3022 strb.w r3, [sp, #34] ; 0x22 + 76cc: cd0f ldmia r5!, {r0, r1, r2, r3} + 76ce: 6020 str r0, [r4, #0] + 76d0: 6061 str r1, [r4, #4] + 76d2: 60a2 str r2, [r4, #8] + 76d4: 60e3 str r3, [r4, #12] + 76d6: cd07 ldmia r5!, {r0, r1, r2} + 76d8: 6120 str r0, [r4, #16] +} + 76da: 4620 mov r0, r4 case 3: buffer = BMC_SKETCH_BYTE_3_DATA; break; - 773c: 6161 str r1, [r4, #20] - 773e: 61a2 str r2, [r4, #24] + 76dc: 6161 str r1, [r4, #20] + 76de: 61a2 str r2, [r4, #24] } - 7740: b00f add sp, #60 ; 0x3c - 7742: bdf0 pop {r4, r5, r6, r7, pc} + 76e0: b00f add sp, #60 ; 0x3c + 76e2: bdf0 pop {r4, r5, r6, r7, pc} { - 7744: 4f0a ldr r7, [pc, #40] ; (7770 ) - 7746: ae07 add r6, sp, #28 + 76e4: 4f0a ldr r7, [pc, #40] ; (7710 ) + 76e6: ae07 add r6, sp, #28 strcpy(name, t_name); - 7748: f8df c02c ldr.w ip, [pc, #44] ; 7778 - 774c: e7df b.n 770e + 76e8: f8df c02c ldr.w ip, [pc, #44] ; 7718 + 76ec: e7df b.n 76ae { - 774e: 4f08 ldr r7, [pc, #32] ; (7770 ) - 7750: ae07 add r6, sp, #28 + 76ee: 4f08 ldr r7, [pc, #32] ; (7710 ) + 76f0: ae07 add r6, sp, #28 strcpy(name, t_name); - 7752: f8df c028 ldr.w ip, [pc, #40] ; 777c - 7756: e7da b.n 770e + 76f2: f8df c028 ldr.w ip, [pc, #40] ; 771c + 76f6: e7da b.n 76ae { - 7758: 4f05 ldr r7, [pc, #20] ; (7770 ) - 775a: ae07 add r6, sp, #28 + 76f8: 4f05 ldr r7, [pc, #20] ; (7710 ) + 76fa: ae07 add r6, sp, #28 strcpy(name, t_name); - 775c: f8df c020 ldr.w ip, [pc, #32] ; 7780 - 7760: e7d5 b.n 770e - 7762: bf00 nop - 7764: 200018a8 .word 0x200018a8 - 7768: 20000800 .word 0x20000800 - 776c: 200018b4 .word 0x200018b4 - 7770: 20000818 .word 0x20000818 - 7774: 200018d8 .word 0x200018d8 - 7778: 200018d0 .word 0x200018d0 - 777c: 200018c8 .word 0x200018c8 - 7780: 200018c0 .word 0x200018c0 - -00007784 : + 76fc: f8df c020 ldr.w ip, [pc, #32] ; 7720 + 7700: e7d5 b.n 76ae + 7702: bf00 nop + 7704: 200018a8 .word 0x200018a8 + 7708: 20000800 .word 0x20000800 + 770c: 200018b4 .word 0x200018b4 + 7710: 20000818 .word 0x20000818 + 7714: 200018d8 .word 0x200018d8 + 7718: 200018d0 .word 0x200018d0 + 771c: 200018c8 .word 0x200018c8 + 7720: 200018c0 .word 0x200018c0 + +00007724 : static void getSketchByteFormat(char* str, uint8_t n, uint8_t value){ - 7784: b530 push {r4, r5, lr} - 7786: b08d sub sp, #52 ; 0x34 - 7788: 4605 mov r5, r0 - 778a: 4614 mov r4, r2 + 7724: b530 push {r4, r5, lr} + 7726: b08d sub sp, #52 ; 0x34 + 7728: 4605 mov r5, r0 + 772a: 4614 mov r4, r2 BMCSketchByteData t = BMCBuildData::getSketchByteData(n); - 778c: a805 add r0, sp, #20 - 778e: f7ff ff69 bl 7664 + 772c: a805 add r0, sp, #20 + 772e: f7ff ff69 bl 7604 uint8_t fAppend = t.formatAppend; - 7792: f89d 302f ldrb.w r3, [sp, #47] ; 0x2f + 7732: f89d 302f ldrb.w r3, [sp, #47] ; 0x2f char txt[16] = ""; - 7796: 2100 movs r1, #0 + 7736: 2100 movs r1, #0 uint8_t fType = t.formatType; - 7798: f89d c02d ldrb.w ip, [sp, #45] ; 0x2d + 7738: f89d c02d ldrb.w ip, [sp, #45] ; 0x2d switch(fAppend){ - 779c: 3b01 subs r3, #1 + 773c: 3b01 subs r3, #1 uint8_t fValue = t.formatValue; - 779e: f89d 202e ldrb.w r2, [sp, #46] ; 0x2e + 773e: f89d 202e ldrb.w r2, [sp, #46] ; 0x2e char txt[16] = ""; - 77a2: e9cd 1101 strd r1, r1, [sp, #4] - 77a6: e9cd 1103 strd r1, r1, [sp, #12] + 7742: e9cd 1101 strd r1, r1, [sp, #4] + 7746: e9cd 1103 strd r1, r1, [sp, #12] switch(fAppend){ - 77aa: 2b0e cmp r3, #14 - 77ac: d80f bhi.n 77ce - 77ae: e8df f003 tbb [pc, r3] - 77b2: 5d5a .short 0x5d5a - 77b4: 7d756d65 .word 0x7d756d65 - 77b8: 08978581 .word 0x08978581 - 77bc: 534c918b .word 0x534c918b - 77c0: 08 .byte 0x08 - 77c1: 00 .byte 0x00 + 774a: 2b0e cmp r3, #14 + 774c: d80f bhi.n 776e + 774e: e8df f003 tbb [pc, r3] + 7752: 5d5a .short 0x5d5a + 7754: 7d756d65 .word 0x7d756d65 + 7758: 08978581 .word 0x08978581 + 775c: 534c918b .word 0x534c918b + 7760: 08 .byte 0x08 + 7761: 00 .byte 0x00 case 10: strcpy(txt, "hours"); break; - 77c2: 4b4c ldr r3, [pc, #304] ; (78f4 ) - 77c4: e893 0003 ldmia.w r3, {r0, r1} - 77c8: 9001 str r0, [sp, #4] - 77ca: f8ad 1008 strh.w r1, [sp, #8] + 7762: 4b4c ldr r3, [pc, #304] ; (7894 ) + 7764: e893 0003 ldmia.w r3, {r0, r1} + 7768: 9001 str r0, [sp, #4] + 776a: f8ad 1008 strh.w r1, [sp, #8] switch(fType){ - 77ce: f1bc 0f05 cmp.w ip, #5 - 77d2: f200 8088 bhi.w 78e6 - 77d6: e8df f00c tbb [pc, ip] - 77da: 160e .short 0x160e - 77dc: 032f261e .word 0x032f261e + 776e: f1bc 0f05 cmp.w ip, #5 + 7772: f200 8088 bhi.w 7886 + 7776: e8df f00c tbb [pc, ip] + 777a: 160e .short 0x160e + 777c: 032f261e .word 0x032f261e case 5: strcpy(str, (value == 0) ? "Off" : "On"); break; - 77e0: 4b45 ldr r3, [pc, #276] ; (78f8 ) - 77e2: 4628 mov r0, r5 - 77e4: 4945 ldr r1, [pc, #276] ; (78fc ) - 77e6: 2c00 cmp r4, #0 - 77e8: bf18 it ne - 77ea: 4619 movne r1, r3 - } - 77ec: b00d add sp, #52 ; 0x34 - 77ee: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 7780: 4b45 ldr r3, [pc, #276] ; (7898 ) + 7782: 4628 mov r0, r5 + 7784: 4945 ldr r1, [pc, #276] ; (789c ) + 7786: 2c00 cmp r4, #0 + 7788: bf18 it ne + 778a: 4619 movne r1, r3 + } + 778c: b00d add sp, #52 ; 0x34 + 778e: e8bd 4030 ldmia.w sp!, {r4, r5, lr} case 5: strcpy(str, (value == 0) ? "Off" : "On"); break; - 77f2: f027 b8c3 b.w 2e97c + 7792: f027 b963 b.w 2ea5c case 0: sprintf(str, "%u %s", value, txt); break; - 77f6: ab01 add r3, sp, #4 - 77f8: 4622 mov r2, r4 - 77fa: 4941 ldr r1, [pc, #260] ; (7900 ) - 77fc: 4628 mov r0, r5 - 77fe: f026 fcc5 bl 2e18c - } - 7802: b00d add sp, #52 ; 0x34 - 7804: bd30 pop {r4, r5, pc} + 7796: ab01 add r3, sp, #4 + 7798: 4622 mov r2, r4 + 779a: 4941 ldr r1, [pc, #260] ; (78a0 ) + 779c: 4628 mov r0, r5 + 779e: f026 fd69 bl 2e274 + } + 77a2: b00d add sp, #52 ; 0x34 + 77a4: bd30 pop {r4, r5, pc} case 1: sprintf(str, "%u %s", (value+fValue), txt); break; - 7806: ab01 add r3, sp, #4 - 7808: 4422 add r2, r4 - 780a: 493d ldr r1, [pc, #244] ; (7900 ) - 780c: 4628 mov r0, r5 - 780e: f026 fcbd bl 2e18c - } - 7812: b00d add sp, #52 ; 0x34 - 7814: bd30 pop {r4, r5, pc} + 77a6: ab01 add r3, sp, #4 + 77a8: 4422 add r2, r4 + 77aa: 493d ldr r1, [pc, #244] ; (78a0 ) + 77ac: 4628 mov r0, r5 + 77ae: f026 fd61 bl 2e274 + } + 77b2: b00d add sp, #52 ; 0x34 + 77b4: bd30 pop {r4, r5, pc} case 2: sprintf(str, "%u %s", (value-fValue), txt); break; - 7816: ab01 add r3, sp, #4 - 7818: 1aa2 subs r2, r4, r2 - 781a: 4939 ldr r1, [pc, #228] ; (7900 ) - 781c: 4628 mov r0, r5 - 781e: f026 fcb5 bl 2e18c - } - 7822: b00d add sp, #52 ; 0x34 - 7824: bd30 pop {r4, r5, pc} + 77b6: ab01 add r3, sp, #4 + 77b8: 1aa2 subs r2, r4, r2 + 77ba: 4939 ldr r1, [pc, #228] ; (78a0 ) + 77bc: 4628 mov r0, r5 + 77be: f026 fd59 bl 2e274 + } + 77c2: b00d add sp, #52 ; 0x34 + 77c4: bd30 pop {r4, r5, pc} case 3: sprintf(str, "%u %s", (value*fValue), txt); break; - 7826: ab01 add r3, sp, #4 - 7828: fb04 f202 mul.w r2, r4, r2 - 782c: 4934 ldr r1, [pc, #208] ; (7900 ) - 782e: 4628 mov r0, r5 - 7830: f026 fcac bl 2e18c - } - 7834: b00d add sp, #52 ; 0x34 - 7836: bd30 pop {r4, r5, pc} + 77c6: ab01 add r3, sp, #4 + 77c8: fb04 f202 mul.w r2, r4, r2 + 77cc: 4934 ldr r1, [pc, #208] ; (78a0 ) + 77ce: 4628 mov r0, r5 + 77d0: f026 fd50 bl 2e274 + } + 77d4: b00d add sp, #52 ; 0x34 + 77d6: bd30 pop {r4, r5, pc} case 4: sprintf(str, "%u %s", (value/fValue), txt); break; - 7838: fbb4 f2f2 udiv r2, r4, r2 - 783c: ab01 add r3, sp, #4 - 783e: 4930 ldr r1, [pc, #192] ; (7900 ) - 7840: 4628 mov r0, r5 - 7842: f026 fca3 bl 2e18c - } - 7846: b00d add sp, #52 ; 0x34 - 7848: bd30 pop {r4, r5, pc} + 77d8: fbb4 f2f2 udiv r2, r4, r2 + 77dc: ab01 add r3, sp, #4 + 77de: 4930 ldr r1, [pc, #192] ; (78a0 ) + 77e0: 4628 mov r0, r5 + 77e2: f026 fd47 bl 2e274 + } + 77e6: b00d add sp, #52 ; 0x34 + 77e8: bd30 pop {r4, r5, pc} case 13: strcpy(txt, "days"); break; - 784a: 4b2e ldr r3, [pc, #184] ; (7904 ) - 784c: e893 0003 ldmia.w r3, {r0, r1} - 7850: 9001 str r0, [sp, #4] - 7852: f88d 1008 strb.w r1, [sp, #8] - 7856: e7ba b.n 77ce + 77ea: 4b2e ldr r3, [pc, #184] ; (78a4 ) + 77ec: e893 0003 ldmia.w r3, {r0, r1} + 77f0: 9001 str r0, [sp, #4] + 77f2: f88d 1008 strb.w r1, [sp, #8] + 77f6: e7ba b.n 776e case 14: strcpy(txt, "weeks"); break; - 7858: 4b2b ldr r3, [pc, #172] ; (7908 ) - 785a: e893 0003 ldmia.w r3, {r0, r1} - 785e: 9001 str r0, [sp, #4] - 7860: f8ad 1008 strh.w r1, [sp, #8] - 7864: e7b3 b.n 77ce + 77f8: 4b2b ldr r3, [pc, #172] ; (78a8 ) + 77fa: e893 0003 ldmia.w r3, {r0, r1} + 77fe: 9001 str r0, [sp, #4] + 7800: f8ad 1008 strh.w r1, [sp, #8] + 7804: e7b3 b.n 776e case 1: strcpy(txt, "sec"); break; - 7866: 4b29 ldr r3, [pc, #164] ; (790c ) - 7868: 9301 str r3, [sp, #4] - 786a: e7b0 b.n 77ce + 7806: 4b29 ldr r3, [pc, #164] ; (78ac ) + 7808: 9301 str r3, [sp, #4] + 780a: e7b0 b.n 776e case 2: strcpy(txt, "ms"); break; - 786c: 4b28 ldr r3, [pc, #160] ; (7910 ) - 786e: 681b ldr r3, [r3, #0] - 7870: f8ad 3004 strh.w r3, [sp, #4] - 7874: 0c1b lsrs r3, r3, #16 - 7876: f88d 3006 strb.w r3, [sp, #6] - 787a: e7a8 b.n 77ce + 780c: 4b28 ldr r3, [pc, #160] ; (78b0 ) + 780e: 681b ldr r3, [r3, #0] + 7810: f8ad 3004 strh.w r3, [sp, #4] + 7814: 0c1b lsrs r3, r3, #16 + 7816: f88d 3006 strb.w r3, [sp, #6] + 781a: e7a8 b.n 776e case 3: strcpy(txt, "us"); break; - 787c: 4b25 ldr r3, [pc, #148] ; (7914 ) - 787e: 681b ldr r3, [r3, #0] - 7880: f8ad 3004 strh.w r3, [sp, #4] - 7884: 0c1b lsrs r3, r3, #16 - 7886: f88d 3006 strb.w r3, [sp, #6] - 788a: e7a0 b.n 77ce + 781c: 4b25 ldr r3, [pc, #148] ; (78b4 ) + 781e: 681b ldr r3, [r3, #0] + 7820: f8ad 3004 strh.w r3, [sp, #4] + 7824: 0c1b lsrs r3, r3, #16 + 7826: f88d 3006 strb.w r3, [sp, #6] + 782a: e7a0 b.n 776e case 4: strcpy(txt, "mm"); break; - 788c: 4b22 ldr r3, [pc, #136] ; (7918 ) - 788e: 681b ldr r3, [r3, #0] - 7890: f8ad 3004 strh.w r3, [sp, #4] - 7894: 0c1b lsrs r3, r3, #16 - 7896: f88d 3006 strb.w r3, [sp, #6] - 789a: e798 b.n 77ce + 782c: 4b22 ldr r3, [pc, #136] ; (78b8 ) + 782e: 681b ldr r3, [r3, #0] + 7830: f8ad 3004 strh.w r3, [sp, #4] + 7834: 0c1b lsrs r3, r3, #16 + 7836: f88d 3006 strb.w r3, [sp, #6] + 783a: e798 b.n 776e case 5: strcpy(txt, "cm"); break; - 789c: 4b1f ldr r3, [pc, #124] ; (791c ) - 789e: 681b ldr r3, [r3, #0] - 78a0: f8ad 3004 strh.w r3, [sp, #4] - 78a4: 0c1b lsrs r3, r3, #16 - 78a6: f88d 3006 strb.w r3, [sp, #6] - 78aa: e790 b.n 77ce + 783c: 4b1f ldr r3, [pc, #124] ; (78bc ) + 783e: 681b ldr r3, [r3, #0] + 7840: f8ad 3004 strh.w r3, [sp, #4] + 7844: 0c1b lsrs r3, r3, #16 + 7846: f88d 3006 strb.w r3, [sp, #6] + 784a: e790 b.n 776e case 6: strcpy(txt, "m"); break; - 78ac: 236d movs r3, #109 ; 0x6d - 78ae: f8ad 3004 strh.w r3, [sp, #4] - 78b2: e78c b.n 77ce + 784c: 236d movs r3, #109 ; 0x6d + 784e: f8ad 3004 strh.w r3, [sp, #4] + 7852: e78c b.n 776e case 7: strcpy(txt, "%"); break; - 78b4: 2325 movs r3, #37 ; 0x25 - 78b6: f8ad 3004 strh.w r3, [sp, #4] - 78ba: e788 b.n 77ce + 7854: 2325 movs r3, #37 ; 0x25 + 7856: f8ad 3004 strh.w r3, [sp, #4] + 785a: e788 b.n 776e case 8: strcpy(txt, "degrees"); break; - 78bc: 4918 ldr r1, [pc, #96] ; (7920 ) - 78be: ab01 add r3, sp, #4 - 78c0: c903 ldmia r1, {r0, r1} - 78c2: e883 0003 stmia.w r3, {r0, r1} - 78c6: e782 b.n 77ce + 785c: 4918 ldr r1, [pc, #96] ; (78c0 ) + 785e: ab01 add r3, sp, #4 + 7860: c903 ldmia r1, {r0, r1} + 7862: e883 0003 stmia.w r3, {r0, r1} + 7866: e782 b.n 776e case 11: strcpy(txt, "minutes"); break; - 78c8: 4916 ldr r1, [pc, #88] ; (7924 ) - 78ca: ab01 add r3, sp, #4 - 78cc: c903 ldmia r1, {r0, r1} - 78ce: e883 0003 stmia.w r3, {r0, r1} - 78d2: e77c b.n 77ce + 7868: 4916 ldr r1, [pc, #88] ; (78c4 ) + 786a: ab01 add r3, sp, #4 + 786c: c903 ldmia r1, {r0, r1} + 786e: e883 0003 stmia.w r3, {r0, r1} + 7872: e77c b.n 776e case 12: strcpy(txt, "seconds"); break; - 78d4: 4914 ldr r1, [pc, #80] ; (7928 ) - 78d6: ab01 add r3, sp, #4 - 78d8: c903 ldmia r1, {r0, r1} - 78da: e883 0003 stmia.w r3, {r0, r1} - 78de: e776 b.n 77ce + 7874: 4914 ldr r1, [pc, #80] ; (78c8 ) + 7876: ab01 add r3, sp, #4 + 7878: c903 ldmia r1, {r0, r1} + 787a: e883 0003 stmia.w r3, {r0, r1} + 787e: e776 b.n 776e case 9: strcpy(txt, "bpm"); break; - 78e0: 4b12 ldr r3, [pc, #72] ; (792c ) - 78e2: 9301 str r3, [sp, #4] - 78e4: e773 b.n 77ce + 7880: 4b12 ldr r3, [pc, #72] ; (78cc ) + 7882: 9301 str r3, [sp, #4] + 7884: e773 b.n 776e default: sprintf(str, "%u", value); break; - 78e6: 4622 mov r2, r4 - 78e8: 4911 ldr r1, [pc, #68] ; (7930 ) - 78ea: 4628 mov r0, r5 - 78ec: f026 fc4e bl 2e18c - } - 78f0: e787 b.n 7802 - 78f2: bf00 nop - 78f4: 20003000 .word 0x20003000 - 78f8: 200039f8 .word 0x200039f8 - 78fc: 200039f4 .word 0x200039f4 - 7900: 20003a1c .word 0x20003a1c - 7904: 20003008 .word 0x20003008 - 7908: 20003a14 .word 0x20003a14 - 790c: 00636573 .word 0x00636573 - 7910: 200039fc .word 0x200039fc - 7914: 20003a00 .word 0x20003a00 - 7918: 20003a04 .word 0x20003a04 - 791c: 20003a08 .word 0x20003a08 - 7920: 20003a0c .word 0x20003a0c - 7924: 20002ff8 .word 0x20002ff8 - 7928: 20002ff0 .word 0x20002ff0 - 792c: 006d7062 .word 0x006d7062 - 7930: 20002030 .word 0x20002030 - -00007934 : + 7886: 4622 mov r2, r4 + 7888: 4911 ldr r1, [pc, #68] ; (78d0 ) + 788a: 4628 mov r0, r5 + 788c: f026 fcf2 bl 2e274 + } + 7890: e787 b.n 77a2 + 7892: bf00 nop + 7894: 20003098 .word 0x20003098 + 7898: 20003ab8 .word 0x20003ab8 + 789c: 20003ab4 .word 0x20003ab4 + 78a0: 20003adc .word 0x20003adc + 78a4: 200030a0 .word 0x200030a0 + 78a8: 20003ad4 .word 0x20003ad4 + 78ac: 00636573 .word 0x00636573 + 78b0: 20003abc .word 0x20003abc + 78b4: 20003ac0 .word 0x20003ac0 + 78b8: 20003ac4 .word 0x20003ac4 + 78bc: 20003ac8 .word 0x20003ac8 + 78c0: 20003acc .word 0x20003acc + 78c4: 20003090 .word 0x20003090 + 78c8: 20003088 .word 0x20003088 + 78cc: 006d7062 .word 0x006d7062 + 78d0: 20002030 .word 0x20002030 + +000078d4 : strcpy(buff, ""); - 7934: 2300 movs r3, #0 + 78d4: 2300 movs r3, #0 if(n < 32){ - 7936: 281f cmp r0, #31 + 78d6: 281f cmp r0, #31 strcpy(buff, ""); - 7938: 700b strb r3, [r1, #0] + 78d8: 700b strb r3, [r1, #0] if(n < 32){ - 793a: d900 bls.n 793e - 793c: 4770 bx lr + 78da: d900 bls.n 78de + 78dc: 4770 bx lr static void getBankLetter(uint8_t n, char* buff){ - 793e: b530 push {r4, r5, lr} + 78de: b530 push {r4, r5, lr} sprintf(buff, "%c", alph[n]); - 7940: f100 0320 add.w r3, r0, #32 + 78e0: f100 0320 add.w r3, r0, #32 static void getBankLetter(uint8_t n, char* buff){ - 7944: b089 sub sp, #36 ; 0x24 + 78e4: b089 sub sp, #36 ; 0x24 const char alph[32] = BMC_ALPHABET; - 7946: 4d0a ldr r5, [pc, #40] ; (7970 ) - 7948: 468e mov lr, r1 + 78e6: 4d0a ldr r5, [pc, #40] ; (7910 ) + 78e8: 468e mov lr, r1 sprintf(buff, "%c", alph[n]); - 794a: eb0d 0c03 add.w ip, sp, r3 + 78ea: eb0d 0c03 add.w ip, sp, r3 const char alph[32] = BMC_ALPHABET; - 794e: 466c mov r4, sp - 7950: cd0f ldmia r5!, {r0, r1, r2, r3} - 7952: c40f stmia r4!, {r0, r1, r2, r3} - 7954: e895 000f ldmia.w r5, {r0, r1, r2, r3} - 7958: e884 000f stmia.w r4, {r0, r1, r2, r3} + 78ee: 466c mov r4, sp + 78f0: cd0f ldmia r5!, {r0, r1, r2, r3} + 78f2: c40f stmia r4!, {r0, r1, r2, r3} + 78f4: e895 000f ldmia.w r5, {r0, r1, r2, r3} + 78f8: e884 000f stmia.w r4, {r0, r1, r2, r3} sprintf(buff, "%c", alph[n]); - 795c: 4905 ldr r1, [pc, #20] ; (7974 ) - 795e: 4670 mov r0, lr - 7960: f81c 2c20 ldrb.w r2, [ip, #-32] + 78fc: 4905 ldr r1, [pc, #20] ; (7914 ) + 78fe: 4670 mov r0, lr + 7900: f81c 2c20 ldrb.w r2, [ip, #-32] } - 7964: b009 add sp, #36 ; 0x24 - 7966: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 7904: b009 add sp, #36 ; 0x24 + 7906: e8bd 4030 ldmia.w sp!, {r4, r5, lr} sprintf(buff, "%c", alph[n]); - 796a: f026 bc0f b.w 2e18c - 796e: bf00 nop - 7970: 2000388c .word 0x2000388c - 7974: 20003888 .word 0x20003888 + 790a: f026 bcb3 b.w 2e274 + 790e: bf00 nop + 7910: 2000394c .word 0x2000394c + 7914: 20003948 .word 0x20003948 -00007978 : +00007918 : void saveStore(){ - 7978: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 797c: 4605 mov r5, r0 - 797e: b085 sub sp, #20 + 7918: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 791c: 4605 mov r5, r0 + 791e: b085 sub sp, #20 uint16_t address = getStoreOffset(); - 7980: f012 ff26 bl 1a7d0 - 7984: 4680 mov r8, r0 + 7920: f012 ffc6 bl 1a8b0 + 7924: 4680 mov r8, r0 return bitRead(flags, bit); - 7986: 68eb ldr r3, [r5, #12] + 7926: 68eb ldr r3, [r5, #12] storage.set(address, store); - 7988: 682c ldr r4, [r5, #0] - 798a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 7928: 682c ldr r4, [r5, #0] + 792a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 798e: 07da lsls r2, r3, #31 - 7990: d521 bpl.n 79d6 - 7992: 2100 movs r1, #0 - 7994: 4860 ldr r0, [pc, #384] ; (7b18 ) - 7996: f024 fdd7 bl 2c548 + 792e: 07da lsls r2, r3, #31 + 7930: d521 bpl.n 7976 + 7932: 2100 movs r1, #0 + 7934: 4860 ldr r0, [pc, #384] ; (7ab8 ) + 7936: f024 fe7b bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 799a: 4860 ldr r0, [pc, #384] ; (7b1c ) - 799c: f022 fa6a bl 29e74 - 79a0: 2103 movs r1, #3 - 79a2: 485f ldr r0, [pc, #380] ; (7b20 ) - 79a4: f024 fdd0 bl 2c548 - 79a8: 2101 movs r1, #1 - 79aa: 485e ldr r0, [pc, #376] ; (7b24 ) - 79ac: f024 fdcc bl 2c548 - 79b0: 2108 movs r1, #8 - 79b2: 485d ldr r0, [pc, #372] ; (7b28 ) - 79b4: f024 fdc8 bl 2c548 - 79b8: 2101 movs r1, #1 - 79ba: 485a ldr r0, [pc, #360] ; (7b24 ) - 79bc: f024 fdc4 bl 2c548 - 79c0: 2108 movs r1, #8 - 79c2: 485a ldr r0, [pc, #360] ; (7b2c ) - 79c4: f024 fdc0 bl 2c548 - 79c8: 2101 movs r1, #1 - 79ca: 4856 ldr r0, [pc, #344] ; (7b24 ) - 79cc: f024 fdbc bl 2c548 + 793a: 4860 ldr r0, [pc, #384] ; (7abc ) + 793c: f022 fb10 bl 29f60 + 7940: 2103 movs r1, #3 + 7942: 485f ldr r0, [pc, #380] ; (7ac0 ) + 7944: f024 fe74 bl 2c630 + 7948: 2101 movs r1, #1 + 794a: 485e ldr r0, [pc, #376] ; (7ac4 ) + 794c: f024 fe70 bl 2c630 + 7950: 2108 movs r1, #8 + 7952: 485d ldr r0, [pc, #372] ; (7ac8 ) + 7954: f024 fe6c bl 2c630 + 7958: 2101 movs r1, #1 + 795a: 485a ldr r0, [pc, #360] ; (7ac4 ) + 795c: f024 fe68 bl 2c630 + 7960: 2108 movs r1, #8 + 7962: 485a ldr r0, [pc, #360] ; (7acc ) + 7964: f024 fe64 bl 2c630 + 7968: 2101 movs r1, #1 + 796a: 4856 ldr r0, [pc, #344] ; (7ac4 ) + 796c: f024 fe60 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 79d0: f022 fdd0 bl 2a574 - 79d4: 62a8 str r0, [r5, #40] ; 0x28 - 79d6: 4e56 ldr r6, [pc, #344] ; (7b30 ) - 79d8: 210e movs r1, #14 - 79da: 4856 ldr r0, [pc, #344] ; (7b34 ) - 79dc: fa1f f888 uxth.w r8, r8 - 79e0: f024 fdb2 bl 2c548 + 7970: f022 fe74 bl 2a65c + 7974: 62a8 str r0, [r5, #40] ; 0x28 + 7976: 4e56 ldr r6, [pc, #344] ; (7ad0 ) + 7978: 210e movs r1, #14 + 797a: 4856 ldr r0, [pc, #344] ; (7ad4 ) + 797c: fa1f f888 uxth.w r8, r8 + 7980: f024 fe56 bl 2c630 unsigned long n = sizeof(value)+start; - 79e4: f241 79fc movw r9, #6140 ; 0x17fc - 79e8: 6832 ldr r2, [r6, #0] - 79ea: f108 0301 add.w r3, r8, #1 + 7984: f241 79fc movw r9, #6140 ; 0x17fc + 7988: 6832 ldr r2, [r6, #0] + 798a: f108 0301 add.w r3, r8, #1 STORAGE.put(address,file); - 79ee: f105 0710 add.w r7, r5, #16 + 798e: f105 0710 add.w r7, r5, #16 unsigned long updatedBytes = 0; - 79f2: f04f 0a00 mov.w sl, #0 - 79f6: 622a str r2, [r5, #32] + 7992: f04f 0a00 mov.w sl, #0 + 7996: 622a str r2, [r5, #32] unsigned long n = sizeof(value)+start; - 79f8: eb08 0209 add.w r2, r8, r9 - 79fc: f8df b138 ldr.w fp, [pc, #312] ; 7b38 - 7a00: eba8 0804 sub.w r8, r8, r4 - 7a04: 429a cmp r2, r3 - 7a06: bf38 it cc - 7a08: f04f 0901 movcc.w r9, #1 - 7a0c: 44a1 add r9, r4 - 7a0e: e006 b.n 7a1e - 7a10: 6833 ldr r3, [r6, #0] + 7998: eb08 0209 add.w r2, r8, r9 + 799c: f8df b138 ldr.w fp, [pc, #312] ; 7ad8 + 79a0: eba8 0804 sub.w r8, r8, r4 + 79a4: 429a cmp r2, r3 + 79a6: bf38 it cc + 79a8: f04f 0901 movcc.w r9, #1 + 79ac: 44a1 add r9, r4 + 79ae: e006 b.n 79be + 79b0: 6833 ldr r3, [r6, #0] operator unsigned long () const { return millis() - ms; } - 7a12: 6a2a ldr r2, [r5, #32] - 7a14: 1a9b subs r3, r3, r2 + 79b2: 6a2a ldr r2, [r5, #32] + 79b4: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 7a16: 2bf9 cmp r3, #249 ; 0xf9 - 7a18: d81d bhi.n 7a56 + 79b6: 2bf9 cmp r3, #249 ; 0xf9 + 79b8: d81d bhi.n 79f6 for(i=start;i - 7a1e: eb04 0108 add.w r1, r4, r8 + 79ba: 454c cmp r4, r9 + 79bc: d023 beq.n 7a06 + 79be: eb04 0108 add.w r1, r4, r8 updatedBytes += update(i,*p++); - 7a22: f814 3b01 ldrb.w r3, [r4], #1 + 79c2: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 7a26: 4638 mov r0, r7 - 7a28: 9101 str r1, [sp, #4] - 7a2a: f88d 300f strb.w r3, [sp, #15] - 7a2e: f01d fb8d bl 2514c - 7a32: f89d 300f ldrb.w r3, [sp, #15] - 7a36: 9901 ldr r1, [sp, #4] - 7a38: 4298 cmp r0, r3 - 7a3a: d0e9 beq.n 7a10 + 79c6: 4638 mov r0, r7 + 79c8: 9101 str r1, [sp, #4] + 79ca: f88d 300f strb.w r3, [sp, #15] + 79ce: f01d fc33 bl 25238 + 79d2: f89d 300f ldrb.w r3, [sp, #15] + 79d6: 9901 ldr r1, [sp, #4] + 79d8: 4298 cmp r0, r3 + 79da: d0e9 beq.n 79b0 write(addr, &value, 1); - 7a3c: 2301 movs r3, #1 - 7a3e: f10d 020f add.w r2, sp, #15 - 7a42: 4638 mov r0, r7 + 79dc: 2301 movs r3, #1 + 79de: f10d 020f add.w r2, sp, #15 + 79e2: 4638 mov r0, r7 updatedBytes += update(i,*p++); - 7a44: f10a 0a01 add.w sl, sl, #1 + 79e4: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 7a48: f01d fa76 bl 24f38 - 7a4c: 6833 ldr r3, [r6, #0] - 7a4e: 6a2a ldr r2, [r5, #32] - 7a50: 1a9b subs r3, r3, r2 + 79e8: f01d fb1c bl 25024 + 79ec: 6833 ldr r3, [r6, #0] + 79ee: 6a2a ldr r2, [r5, #32] + 79f0: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 7a52: 2bf9 cmp r3, #249 ; 0xf9 - 7a54: d9e1 bls.n 7a1a - 7a56: 2101 movs r1, #1 - 7a58: 4658 mov r0, fp - 7a5a: f024 fd75 bl 2c548 - 7a5e: 6833 ldr r3, [r6, #0] + 79f2: 2bf9 cmp r3, #249 ; 0xf9 + 79f4: d9e1 bls.n 79ba + 79f6: 2101 movs r1, #1 + 79f8: 4658 mov r0, fp + 79fa: f024 fe19 bl 2c630 + 79fe: 6833 ldr r3, [r6, #0] for(i=start;i - 7a66: 2101 movs r1, #1 - 7a68: 4833 ldr r0, [pc, #204] ; (7b38 ) - 7a6a: f024 fd6d bl 2c548 - 7a6e: 482b ldr r0, [pc, #172] ; (7b1c ) - 7a70: f022 fa00 bl 29e74 - 7a74: 2109 movs r1, #9 - 7a76: 4831 ldr r0, [pc, #196] ; (7b3c ) - 7a78: f024 fd66 bl 2c548 - 7a7c: 2101 movs r1, #1 - 7a7e: 4829 ldr r0, [pc, #164] ; (7b24 ) - 7a80: f024 fd62 bl 2c548 + 7a02: 622b str r3, [r5, #32] + 7a04: d1db bne.n 79be + 7a06: 2101 movs r1, #1 + 7a08: 4833 ldr r0, [pc, #204] ; (7ad8 ) + 7a0a: f024 fe11 bl 2c630 + 7a0e: 482b ldr r0, [pc, #172] ; (7abc ) + 7a10: f022 faa6 bl 29f60 + 7a14: 2109 movs r1, #9 + 7a16: 4831 ldr r0, [pc, #196] ; (7adc ) + 7a18: f024 fe0a bl 2c630 + 7a1c: 2101 movs r1, #1 + 7a1e: 4829 ldr r0, [pc, #164] ; (7ac4 ) + 7a20: f024 fe06 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 7a84: 2300 movs r3, #0 - 7a86: 220a movs r2, #10 - 7a88: 4651 mov r1, sl - 7a8a: 4824 ldr r0, [pc, #144] ; (7b1c ) - 7a8c: f022 fa0e bl 29eac - 7a90: 2101 movs r1, #1 - 7a92: 4824 ldr r0, [pc, #144] ; (7b24 ) - 7a94: f024 fd58 bl 2c548 - 7a98: 2105 movs r1, #5 - 7a9a: 4829 ldr r0, [pc, #164] ; (7b40 ) - 7a9c: f024 fd54 bl 2c548 + 7a24: 2300 movs r3, #0 + 7a26: 220a movs r2, #10 + 7a28: 4651 mov r1, sl + 7a2a: 4824 ldr r0, [pc, #144] ; (7abc ) + 7a2c: f022 fab4 bl 29f98 + 7a30: 2101 movs r1, #1 + 7a32: 4824 ldr r0, [pc, #144] ; (7ac4 ) + 7a34: f024 fdfc bl 2c630 + 7a38: 2105 movs r1, #5 + 7a3a: 4829 ldr r0, [pc, #164] ; (7ae0 ) + 7a3c: f024 fdf8 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 7aa0: 481e ldr r0, [pc, #120] ; (7b1c ) - 7aa2: f022 f9e7 bl 29e74 - 7aa6: 68eb ldr r3, [r5, #12] - 7aa8: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 7a40: 481e ldr r0, [pc, #120] ; (7abc ) + 7a42: f022 fa8d bl 29f60 + 7a46: 68eb ldr r3, [r5, #12] + 7a48: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 7aac: 07db lsls r3, r3, #31 - 7aae: d402 bmi.n 7ab6 - } - 7ab0: b005 add sp, #20 - 7ab2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 7ab6: 2104 movs r1, #4 - 7ab8: 4822 ldr r0, [pc, #136] ; (7b44 ) - 7aba: f024 fd45 bl 2c548 - 7abe: 2101 movs r1, #1 - 7ac0: 4818 ldr r0, [pc, #96] ; (7b24 ) - 7ac2: f024 fd41 bl 2c548 + 7a4c: 07db lsls r3, r3, #31 + 7a4e: d402 bmi.n 7a56 + } + 7a50: b005 add sp, #20 + 7a52: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 7a56: 2104 movs r1, #4 + 7a58: 4822 ldr r0, [pc, #136] ; (7ae4 ) + 7a5a: f024 fde9 bl 2c630 + 7a5e: 2101 movs r1, #1 + 7a60: 4818 ldr r0, [pc, #96] ; (7ac4 ) + 7a62: f024 fde5 bl 2c630 BMC_PRINTLN("took",((BMC_STORAGE_DEBUG_TIME_T()-debugTimer)/1000.0),"milliseconds"); - 7ac6: f022 fd55 bl 2a574 - 7aca: 6aab ldr r3, [r5, #40] ; 0x28 + 7a66: f022 fdf9 bl 2a65c + 7a6a: 6aab ldr r3, [r5, #40] ; 0x28 size_t print(double n, int digits = 2) { return printFloat(n, digits); } - 7acc: 2102 movs r1, #2 - 7ace: 1ac3 subs r3, r0, r3 - 7ad0: 4812 ldr r0, [pc, #72] ; (7b1c ) - 7ad2: ee07 3a10 vmov s14, r3 - 7ad6: ed9f 0b0e vldr d0, [pc, #56] ; 7b10 - 7ada: eeb8 7b47 vcvt.f64.u32 d7, s14 - 7ade: ee87 0b00 vdiv.f64 d0, d7, d0 - 7ae2: f022 f9f9 bl 29ed8 - 7ae6: 2101 movs r1, #1 - 7ae8: 480e ldr r0, [pc, #56] ; (7b24 ) - 7aea: f024 fd2d bl 2c548 - 7aee: 210c movs r1, #12 - 7af0: 4815 ldr r0, [pc, #84] ; (7b48 ) - 7af2: f024 fd29 bl 2c548 + 7a6c: 2102 movs r1, #2 + 7a6e: 1ac3 subs r3, r0, r3 + 7a70: 4812 ldr r0, [pc, #72] ; (7abc ) + 7a72: ee07 3a10 vmov s14, r3 + 7a76: ed9f 0b0e vldr d0, [pc, #56] ; 7ab0 + 7a7a: eeb8 7b47 vcvt.f64.u32 d7, s14 + 7a7e: ee87 0b00 vdiv.f64 d0, d7, d0 + 7a82: f022 fa9d bl 29fc0 + 7a86: 2101 movs r1, #1 + 7a88: 480e ldr r0, [pc, #56] ; (7ac4 ) + 7a8a: f024 fdd1 bl 2c630 + 7a8e: 210c movs r1, #12 + 7a90: 4815 ldr r0, [pc, #84] ; (7ae8 ) + 7a92: f024 fdcd bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 7af6: 4809 ldr r0, [pc, #36] ; (7b1c ) - 7af8: f022 f9bc bl 29e74 - 7afc: 2100 movs r1, #0 - 7afe: 4806 ldr r0, [pc, #24] ; (7b18 ) - 7b00: f024 fd22 bl 2c548 - 7b04: 4805 ldr r0, [pc, #20] ; (7b1c ) - 7b06: b005 add sp, #20 - 7b08: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 7b0c: f022 b9b2 b.w 29e74 - 7b10: 00000000 .word 0x00000000 - 7b14: 408f4000 .word 0x408f4000 - 7b18: 20003c58 .word 0x20003c58 - 7b1c: 20004ba8 .word 0x20004ba8 - 7b20: 200036c8 .word 0x200036c8 - 7b24: 200023ec .word 0x200023ec - 7b28: 20003e04 .word 0x20003e04 - 7b2c: 20003e10 .word 0x20003e10 - 7b30: 2000bae8 .word 0x2000bae8 - 7b34: 20003e1c .word 0x20003e1c - 7b38: 200030b8 .word 0x200030b8 - 7b3c: 20003e2c .word 0x20003e2c - 7b40: 20002448 .word 0x20002448 - 7b44: 20003e38 .word 0x20003e38 - 7b48: 20003e40 .word 0x20003e40 - -00007b4c : + 7a96: 4809 ldr r0, [pc, #36] ; (7abc ) + 7a98: f022 fa62 bl 29f60 + 7a9c: 2100 movs r1, #0 + 7a9e: 4806 ldr r0, [pc, #24] ; (7ab8 ) + 7aa0: f024 fdc6 bl 2c630 + 7aa4: 4805 ldr r0, [pc, #20] ; (7abc ) + 7aa6: b005 add sp, #20 + 7aa8: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 7aac: f022 ba58 b.w 29f60 + 7ab0: 00000000 .word 0x00000000 + 7ab4: 408f4000 .word 0x408f4000 + 7ab8: 20003d18 .word 0x20003d18 + 7abc: 20004c68 .word 0x20004c68 + 7ac0: 20003788 .word 0x20003788 + 7ac4: 200023ec .word 0x200023ec + 7ac8: 20003ec4 .word 0x20003ec4 + 7acc: 20003ed0 .word 0x20003ed0 + 7ad0: 2000bb08 .word 0x2000bb08 + 7ad4: 20003edc .word 0x20003edc + 7ad8: 20003150 .word 0x20003150 + 7adc: 20003eec .word 0x20003eec + 7ae0: 20002448 .word 0x20002448 + 7ae4: 20003ef8 .word 0x20003ef8 + 7ae8: 20003f00 .word 0x20003f00 + +00007aec : void getDeviceNameText(uint8_t deviceType, uint16_t index, char* str){ - 7b4c: b410 push {r4} + 7aec: b410 push {r4} strcpy(str, "..."); - 7b4e: 4cb4 ldr r4, [pc, #720] ; (7e20 ) + 7aee: 4cb4 ldr r4, [pc, #720] ; (7dc0 ) void getDeviceNameText(uint8_t deviceType, uint16_t index, char* str){ - 7b50: 4684 mov ip, r0 + 7af0: 4684 mov ip, r0 switch(deviceType){ - 7b52: 3901 subs r1, #1 + 7af2: 3901 subs r1, #1 strcpy(str, "..."); - 7b54: 6820 ldr r0, [r4, #0] - 7b56: 6018 str r0, [r3, #0] + 7af4: 6820 ldr r0, [r4, #0] + 7af6: 6018 str r0, [r3, #0] switch(deviceType){ - 7b58: 2928 cmp r1, #40 ; 0x28 - 7b5a: d838 bhi.n 7bce - 7b5c: e8df f011 tbh [pc, r1, lsl #1] - 7b60: 013b014a .word 0x013b014a - 7b64: 01110127 .word 0x01110127 - 7b68: 003700f5 .word 0x003700f5 - 7b6c: 003700ea .word 0x003700ea - 7b70: 00370037 .word 0x00370037 - 7b74: 00370037 .word 0x00370037 - 7b78: 00d60037 .word 0x00d60037 - 7b7c: 00370037 .word 0x00370037 - 7b80: 00370037 .word 0x00370037 - 7b84: 00370037 .word 0x00370037 - 7b88: 00c20037 .word 0x00c20037 - 7b8c: 00370037 .word 0x00370037 - 7b90: 00370037 .word 0x00370037 - 7b94: 003700b4 .word 0x003700b4 - 7b98: 009c00a5 .word 0x009c00a5 - 7b9c: 00930037 .word 0x00930037 - 7ba0: 007a0088 .word 0x007a0088 - 7ba4: 00370029 .word 0x00370029 - 7ba8: 0061006c .word 0x0061006c - 7bac: 00540037 .word 0x00540037 - 7bb0: 003a .short 0x003a + 7af8: 2928 cmp r1, #40 ; 0x28 + 7afa: d838 bhi.n 7b6e + 7afc: e8df f011 tbh [pc, r1, lsl #1] + 7b00: 013b014a .word 0x013b014a + 7b04: 01110127 .word 0x01110127 + 7b08: 003700f5 .word 0x003700f5 + 7b0c: 003700ea .word 0x003700ea + 7b10: 00370037 .word 0x00370037 + 7b14: 00370037 .word 0x00370037 + 7b18: 00d60037 .word 0x00d60037 + 7b1c: 00370037 .word 0x00370037 + 7b20: 00370037 .word 0x00370037 + 7b24: 00370037 .word 0x00370037 + 7b28: 00c20037 .word 0x00c20037 + 7b2c: 00370037 .word 0x00370037 + 7b30: 00370037 .word 0x00370037 + 7b34: 003700b4 .word 0x003700b4 + 7b38: 009c00a5 .word 0x009c00a5 + 7b3c: 00930037 .word 0x00930037 + 7b40: 007a0088 .word 0x007a0088 + 7b44: 00370029 .word 0x00370029 + 7b48: 0061006c .word 0x0061006c + 7b4c: 00540037 .word 0x00540037 + 7b50: 003a .short 0x003a if(index < BMC_MAX_TEMPO_TO_TAP){ - 7bb2: 2a01 cmp r2, #1 - 7bb4: d80b bhi.n 7bce + 7b52: 2a01 cmp r2, #1 + 7b54: d80b bhi.n 7b6e getDeviceNameFromIndex(store.global.tempoToTap[index].name, str); - 7bb6: f8dc 1000 ldr.w r1, [ip] - 7bba: eb02 0242 add.w r2, r2, r2, lsl #1 - 7bbe: f241 504a movw r0, #5450 ; 0x154a - 7bc2: 440a add r2, r1 + 7b56: f8dc 1000 ldr.w r1, [ip] + 7b5a: eb02 0242 add.w r2, r2, r2, lsl #1 + 7b5e: f241 504a movw r0, #5450 ; 0x154a + 7b62: 440a add r2, r1 getDeviceNameFromIndex(store.global.songLibrary[index].name, str); - 7bc4: 5c12 ldrb r2, [r2, r0] + 7b64: 5c12 ldrb r2, [r2, r0] if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7bc6: 3a01 subs r2, #1 - 7bc8: b290 uxth r0, r2 - 7bca: 287e cmp r0, #126 ; 0x7e - 7bcc: d90f bls.n 7bee + 7b66: 3a01 subs r2, #1 + 7b68: b290 uxth r0, r2 + 7b6a: 287e cmp r0, #126 ; 0x7e + 7b6c: d90f bls.n 7b8e } - 7bce: f85d 4b04 ldr.w r4, [sp], #4 - 7bd2: 4770 bx lr + 7b6e: f85d 4b04 ldr.w r4, [sp], #4 + 7b72: 4770 bx lr if(index < 6){ - 7bd4: 2a05 cmp r2, #5 - 7bd6: d8fa bhi.n 7bce + 7b74: 2a05 cmp r2, #5 + 7b76: d8fa bhi.n 7b6e getDeviceNameFromIndex(store.global.shortcuts[index].name, str); - 7bd8: f8dc 1000 ldr.w r1, [ip] - 7bdc: ebc2 02c2 rsb r2, r2, r2, lsl #3 - 7be0: 440a add r2, r1 - 7be2: f892 2f18 ldrb.w r2, [r2, #3864] ; 0xf18 + 7b78: f8dc 1000 ldr.w r1, [ip] + 7b7c: ebc2 02c2 rsb r2, r2, r2, lsl #3 + 7b80: 440a add r2, r1 + 7b82: f892 2f18 ldrb.w r2, [r2, #3864] ; 0xf18 if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7be6: 3a01 subs r2, #1 - 7be8: b290 uxth r0, r2 - 7bea: 287e cmp r0, #126 ; 0x7e - 7bec: d8ef bhi.n 7bce - 7bee: eb02 1202 add.w r2, r2, r2, lsl #4 - 7bf2: f502 62cf add.w r2, r2, #1656 ; 0x678 - 7bf6: 5c88 ldrb r0, [r1, r2] - 7bf8: 4411 add r1, r2 - 7bfa: 2800 cmp r0, #0 - 7bfc: d0e7 beq.n 7bce + 7b86: 3a01 subs r2, #1 + 7b88: b290 uxth r0, r2 + 7b8a: 287e cmp r0, #126 ; 0x7e + 7b8c: d8ef bhi.n 7b6e + 7b8e: eb02 1202 add.w r2, r2, r2, lsl #4 + 7b92: f502 62cf add.w r2, r2, #1656 ; 0x678 + 7b96: 5c88 ldrb r0, [r1, r2] + 7b98: 4411 add r1, r2 + 7b9a: 2800 cmp r0, #0 + 7b9c: d0e7 beq.n 7b6e strcpy(str, store.global.names[value-1].name); - 7bfe: 4618 mov r0, r3 + 7b9e: 4618 mov r0, r3 } - 7c00: f85d 4b04 ldr.w r4, [sp], #4 + 7ba0: f85d 4b04 ldr.w r4, [sp], #4 strcpy(str, store.global.names[value-1].name); - 7c04: f026 beba b.w 2e97c + 7ba4: f026 bf5a b.w 2ea5c if(index < 16){ - 7c08: 2a0f cmp r2, #15 - 7c0a: d8e0 bhi.n 7bce + 7ba8: 2a0f cmp r2, #15 + 7baa: d8e0 bhi.n 7b6e getDeviceNameFromIndex(store.global.portPresets[index].name, str); - 7c0c: f8dc 1000 ldr.w r1, [ip] - 7c10: eb01 0242 add.w r2, r1, r2, lsl #1 - 7c14: f892 2ef8 ldrb.w r2, [r2, #3832] ; 0xef8 + 7bac: f8dc 1000 ldr.w r1, [ip] + 7bb0: eb01 0242 add.w r2, r1, r2, lsl #1 + 7bb4: f892 2ef8 ldrb.w r2, [r2, #3832] ; 0xef8 if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7c18: 3a01 subs r2, #1 - 7c1a: b290 uxth r0, r2 - 7c1c: 287e cmp r0, #126 ; 0x7e - 7c1e: d8d6 bhi.n 7bce - 7c20: e7e5 b.n 7bee + 7bb8: 3a01 subs r2, #1 + 7bba: b290 uxth r0, r2 + 7bbc: 287e cmp r0, #126 ; 0x7e + 7bbe: d8d6 bhi.n 7b6e + 7bc0: e7e5 b.n 7b8e if(index < BMC_MAX_LFO){ - 7c22: 2a00 cmp r2, #0 - 7c24: d1d3 bne.n 7bce + 7bc2: 2a00 cmp r2, #0 + 7bc4: d1d3 bne.n 7b6e getDeviceNameFromIndex(store.global.lfo[index].name, str); - 7c26: f8dc 1000 ldr.w r1, [ip] - 7c2a: f891 2f1f ldrb.w r2, [r1, #3871] ; 0xf1f + 7bc6: f8dc 1000 ldr.w r1, [ip] + 7bca: f891 2f1f ldrb.w r2, [r1, #3871] ; 0xf1f if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7c2e: 3a01 subs r2, #1 - 7c30: b290 uxth r0, r2 - 7c32: 287e cmp r0, #126 ; 0x7e - 7c34: d8cb bhi.n 7bce - 7c36: e7da b.n 7bee + 7bce: 3a01 subs r2, #1 + 7bd0: b290 uxth r0, r2 + 7bd2: 287e cmp r0, #126 ; 0x7e + 7bd4: d8cb bhi.n 7b6e + 7bd6: e7da b.n 7b8e if(index < BMC_MAX_TIMED_EVENTS){ - 7c38: 2a03 cmp r2, #3 - 7c3a: d8c8 bhi.n 7bce + 7bd8: 2a03 cmp r2, #3 + 7bda: d8c8 bhi.n 7b6e getDeviceNameFromIndex(store.global.timedEvents[index].name, str); - 7c3c: f8dc 1000 ldr.w r1, [ip] - 7c40: f202 5252 addw r2, r2, #1362 ; 0x552 - 7c44: eb01 0282 add.w r2, r1, r2, lsl #2 - 7c48: 7a12 ldrb r2, [r2, #8] + 7bdc: f8dc 1000 ldr.w r1, [ip] + 7be0: f202 5252 addw r2, r2, #1362 ; 0x552 + 7be4: eb01 0282 add.w r2, r1, r2, lsl #2 + 7be8: 7a12 ldrb r2, [r2, #8] if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7c4a: 3a01 subs r2, #1 - 7c4c: b290 uxth r0, r2 - 7c4e: 287e cmp r0, #126 ; 0x7e - 7c50: d8bd bhi.n 7bce - 7c52: e7cc b.n 7bee + 7bea: 3a01 subs r2, #1 + 7bec: b290 uxth r0, r2 + 7bee: 287e cmp r0, #126 ; 0x7e + 7bf0: d8bd bhi.n 7b6e + 7bf2: e7cc b.n 7b8e if(index < BMC_MAX_TRIGGERS){ - 7c54: 2a03 cmp r2, #3 - 7c56: d8ba bhi.n 7bce + 7bf4: 2a03 cmp r2, #3 + 7bf6: d8ba bhi.n 7b6e getDeviceNameFromIndex(store.global.triggers[index].name, str); - 7c58: f8dc 1000 ldr.w r1, [ip] - 7c5c: f202 524c addw r2, r2, #1356 ; 0x54c - 7c60: eb01 0282 add.w r2, r1, r2, lsl #2 - 7c64: 7a92 ldrb r2, [r2, #10] + 7bf8: f8dc 1000 ldr.w r1, [ip] + 7bfc: f202 524c addw r2, r2, #1356 ; 0x54c + 7c00: eb01 0282 add.w r2, r1, r2, lsl #2 + 7c04: 7a92 ldrb r2, [r2, #10] if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7c66: 3a01 subs r2, #1 - 7c68: b290 uxth r0, r2 - 7c6a: 287e cmp r0, #126 ; 0x7e - 7c6c: d8af bhi.n 7bce - 7c6e: e7be b.n 7bee + 7c06: 3a01 subs r2, #1 + 7c08: b290 uxth r0, r2 + 7c0a: 287e cmp r0, #126 ; 0x7e + 7c0c: d8af bhi.n 7b6e + 7c0e: e7be b.n 7b8e if(index < BMC_MAX_CUSTOM_SYSEX){ - 7c70: 2a03 cmp r2, #3 - 7c72: d8ac bhi.n 7bce + 7c10: 2a03 cmp r2, #3 + 7c12: d8ac bhi.n 7b6e getDeviceNameFromIndex(store.global.customSysEx[index].name, str); - 7c74: f8dc 1000 ldr.w r1, [ip] - 7c78: eb02 02c2 add.w r2, r2, r2, lsl #3 - 7c7c: f241 40f2 movw r0, #5362 ; 0x14f2 + 7c14: f8dc 1000 ldr.w r1, [ip] + 7c18: eb02 02c2 add.w r2, r2, r2, lsl #3 + 7c1c: f241 40f2 movw r0, #5362 ; 0x14f2 getDeviceNameFromIndex(store.global.songLibrary[index].name, str); - 7c80: eb01 0242 add.w r2, r1, r2, lsl #1 - 7c84: e79e b.n 7bc4 + 7c20: eb01 0242 add.w r2, r1, r2, lsl #1 + 7c24: e79e b.n 7b64 if(index < BMC_MAX_SETLISTS_SONGS_LIBRARY){ - 7c86: 2a3f cmp r2, #63 ; 0x3f - 7c88: d8a1 bhi.n 7bce + 7c26: 2a3f cmp r2, #63 ; 0x3f + 7c28: d8a1 bhi.n 7b6e getDeviceNameFromIndex(store.global.songLibrary[index].name, str); - 7c8a: f8dc 1000 ldr.w r1, [ip] - 7c8e: eb02 0282 add.w r2, r2, r2, lsl #2 - 7c92: f241 203d movw r0, #4669 ; 0x123d - 7c96: e7f3 b.n 7c80 + 7c2a: f8dc 1000 ldr.w r1, [ip] + 7c2e: eb02 0282 add.w r2, r2, r2, lsl #2 + 7c32: f241 203d movw r0, #4669 ; 0x123d + 7c36: e7f3 b.n 7c20 if(index < BMC_MAX_SETLISTS){ - 7c98: 2a07 cmp r2, #7 - 7c9a: d898 bhi.n 7bce + 7c38: 2a07 cmp r2, #7 + 7c3a: d898 bhi.n 7b6e getDeviceNameFromIndex(store.global.setLists[index].name, str); - 7c9c: f8dc 1000 ldr.w r1, [ip] - 7ca0: eb02 02c2 add.w r2, r2, r2, lsl #3 - 7ca4: f241 10ad movw r0, #4525 ; 0x11ad - 7ca8: e7ea b.n 7c80 + 7c3c: f8dc 1000 ldr.w r1, [ip] + 7c40: eb02 02c2 add.w r2, r2, r2, lsl #3 + 7c44: f241 10ad movw r0, #4525 ; 0x11ad + 7c48: e7ea b.n 7c20 if(index < BMC_MAX_PRESETS){ - 7caa: 2a3f cmp r2, #63 ; 0x3f - 7cac: d88f bhi.n 7bce + 7c4a: 2a3f cmp r2, #63 ; 0x3f + 7c4c: d88f bhi.n 7b6e getDeviceNameFromIndex(store.global.presets[index].name, str); - 7cae: f8dc 1000 ldr.w r1, [ip] - 7cb2: eb02 0282 add.w r2, r2, r2, lsl #2 - 7cb6: eb01 0242 add.w r2, r1, r2, lsl #1 - 7cba: f892 2f2d ldrb.w r2, [r2, #3885] ; 0xf2d + 7c4e: f8dc 1000 ldr.w r1, [ip] + 7c52: eb02 0282 add.w r2, r2, r2, lsl #2 + 7c56: eb01 0242 add.w r2, r1, r2, lsl #1 + 7c5a: f892 2f2d ldrb.w r2, [r2, #3885] ; 0xf2d if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7cbe: 3a01 subs r2, #1 - 7cc0: b290 uxth r0, r2 - 7cc2: 287e cmp r0, #126 ; 0x7e - 7cc4: d883 bhi.n 7bce - 7cc6: e792 b.n 7bee + 7c5e: 3a01 subs r2, #1 + 7c60: b290 uxth r0, r2 + 7c62: 287e cmp r0, #126 ; 0x7e + 7c64: d883 bhi.n 7b6e + 7c66: e792 b.n 7b8e if(index < BMC_MAX_AUX_JACKS){ - 7cc8: 2a00 cmp r2, #0 - 7cca: d180 bne.n 7bce + 7c68: 2a00 cmp r2, #0 + 7c6a: d180 bne.n 7b6e getDeviceNameFromIndex(store.global.auxJacks[index].name, str); - 7ccc: f8dc 1000 ldr.w r1, [ip] - 7cd0: f501 5280 add.w r2, r1, #4096 ; 0x1000 - 7cd4: f892 24ec ldrb.w r2, [r2, #1260] ; 0x4ec + 7c6c: f8dc 1000 ldr.w r1, [ip] + 7c70: f501 5280 add.w r2, r1, #4096 ; 0x1000 + 7c74: f892 24ec ldrb.w r2, [r2, #1260] ; 0x4ec if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7cd8: 3a01 subs r2, #1 - 7cda: b290 uxth r0, r2 - 7cdc: 287e cmp r0, #126 ; 0x7e - 7cde: f63f af76 bhi.w 7bce - 7ce2: e784 b.n 7bee + 7c78: 3a01 subs r2, #1 + 7c7a: b290 uxth r0, r2 + 7c7c: 287e cmp r0, #126 ; 0x7e + 7c7e: f63f af76 bhi.w 7b6e + 7c82: e784 b.n 7b8e if(index < BMC_MAX_OLED){ - 7ce4: 2a05 cmp r2, #5 - 7ce6: f63f af72 bhi.w 7bce + 7c84: 2a05 cmp r2, #5 + 7c86: f63f af72 bhi.w 7b6e getDeviceNameFromIndex(store.layers[midi.globals.layer].oled[index].name, str); - 7cea: f8dc 1004 ldr.w r1, [ip, #4] - 7cee: eb02 0242 add.w r2, r2, r2, lsl #1 - 7cf2: f8dc 0000 ldr.w r0, [ip] - 7cf6: f8d1 1108 ldr.w r1, [r1, #264] ; 0x108 - 7cfa: 7a49 ldrb r1, [r1, #9] - 7cfc: eb01 1441 add.w r4, r1, r1, lsl #5 - 7d00: eb01 0184 add.w r1, r1, r4, lsl #2 - 7d04: f241 54d3 movw r4, #5587 ; 0x15d3 - 7d08: 440a add r2, r1 - 7d0a: e029 b.n 7d60 + 7c8a: f8dc 1004 ldr.w r1, [ip, #4] + 7c8e: eb02 0242 add.w r2, r2, r2, lsl #1 + 7c92: f8dc 0000 ldr.w r0, [ip] + 7c96: f8d1 1108 ldr.w r1, [r1, #264] ; 0x108 + 7c9a: 7a49 ldrb r1, [r1, #9] + 7c9c: eb01 1441 add.w r4, r1, r1, lsl #5 + 7ca0: eb01 0184 add.w r1, r1, r4, lsl #2 + 7ca4: f241 54d3 movw r4, #5587 ; 0x15d3 + 7ca8: 440a add r2, r1 + 7caa: e029 b.n 7d00 if(index < BMC_MAX_RGB_PIXELS){ - 7d0c: 2a05 cmp r2, #5 - 7d0e: f63f af5e bhi.w 7bce + 7cac: 2a05 cmp r2, #5 + 7cae: f63f af5e bhi.w 7b6e getDeviceNameFromIndex(store.layers[midi.globals.layer].rgbPixels[index].name, str); - 7d12: f8dc 1004 ldr.w r1, [ip, #4] - 7d16: eb02 0282 add.w r2, r2, r2, lsl #2 - 7d1a: f8dc 0000 ldr.w r0, [ip] - 7d1e: f8d1 1108 ldr.w r1, [r1, #264] ; 0x108 - 7d22: 7a49 ldrb r1, [r1, #9] - 7d24: eb01 1441 add.w r4, r1, r1, lsl #5 - 7d28: eb01 0184 add.w r1, r1, r4, lsl #2 - 7d2c: f241 54b5 movw r4, #5557 ; 0x15b5 + 7cb2: f8dc 1004 ldr.w r1, [ip, #4] + 7cb6: eb02 0282 add.w r2, r2, r2, lsl #2 + 7cba: f8dc 0000 ldr.w r0, [ip] + 7cbe: f8d1 1108 ldr.w r1, [r1, #264] ; 0x108 + 7cc2: 7a49 ldrb r1, [r1, #9] + 7cc4: eb01 1441 add.w r4, r1, r1, lsl #5 + 7cc8: eb01 0184 add.w r1, r1, r4, lsl #2 + 7ccc: f241 54b5 movw r4, #5557 ; 0x15b5 getDeviceNameFromIndex(store.layers[midi.globals.layer].oled[index].name, str); - 7d30: 440a add r2, r1 - 7d32: e015 b.n 7d60 + 7cd0: 440a add r2, r1 + 7cd2: e015 b.n 7d00 if(index < BMC_MAX_GLOBAL_LEDS){ - 7d34: 2a04 cmp r2, #4 - 7d36: f63f af4a bhi.w 7bce + 7cd4: 2a04 cmp r2, #4 + 7cd6: f63f af4a bhi.w 7b6e getDeviceNameFromIndex(store.global.leds[index].name, str); - 7d3a: f8dc 1000 ldr.w r1, [ip] - 7d3e: eb02 0242 add.w r2, r2, r2, lsl #1 - 7d42: f241 40d7 movw r0, #5335 ; 0x14d7 - 7d46: 440a add r2, r1 - 7d48: e73c b.n 7bc4 + 7cda: f8dc 1000 ldr.w r1, [ip] + 7cde: eb02 0242 add.w r2, r2, r2, lsl #1 + 7ce2: f241 40d7 movw r0, #5335 ; 0x14d7 + 7ce6: 440a add r2, r1 + 7ce8: e73c b.n 7b64 if(index < BMC_MAX_GLOBAL_BUTTONS){ - 7d4a: 2a01 cmp r2, #1 - 7d4c: f63f af3f bhi.w 7bce + 7cea: 2a01 cmp r2, #1 + 7cec: f63f af3f bhi.w 7b6e getDeviceNameFromIndex(store.global.buttons[index].name, str); - 7d50: eb02 0142 add.w r1, r2, r2, lsl #1 - 7d54: f8dc 0000 ldr.w r0, [ip] - 7d58: f241 44bd movw r4, #5309 ; 0x14bd - 7d5c: eb02 0281 add.w r2, r2, r1, lsl #2 + 7cf0: eb02 0142 add.w r1, r2, r2, lsl #1 + 7cf4: f8dc 0000 ldr.w r0, [ip] + 7cf8: f241 44bd movw r4, #5309 ; 0x14bd + 7cfc: eb02 0281 add.w r2, r2, r1, lsl #2 getDeviceNameFromIndex(store.layers[midi.globals.layer].oled[index].name, str); - 7d60: 4402 add r2, r0 - 7d62: 5d12 ldrb r2, [r2, r4] + 7d00: 4402 add r2, r0 + 7d02: 5d12 ldrb r2, [r2, r4] if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7d64: 3a01 subs r2, #1 - 7d66: b291 uxth r1, r2 - 7d68: 297e cmp r1, #126 ; 0x7e - 7d6a: f63f af30 bhi.w 7bce - 7d6e: eb02 1202 add.w r2, r2, r2, lsl #4 - 7d72: f502 62cf add.w r2, r2, #1656 ; 0x678 - 7d76: 5c84 ldrb r4, [r0, r2] - 7d78: 1881 adds r1, r0, r2 - 7d7a: 2c00 cmp r4, #0 - 7d7c: f43f af27 beq.w 7bce - 7d80: e73d b.n 7bfe + 7d04: 3a01 subs r2, #1 + 7d06: b291 uxth r1, r2 + 7d08: 297e cmp r1, #126 ; 0x7e + 7d0a: f63f af30 bhi.w 7b6e + 7d0e: eb02 1202 add.w r2, r2, r2, lsl #4 + 7d12: f502 62cf add.w r2, r2, #1656 ; 0x678 + 7d16: 5c84 ldrb r4, [r0, r2] + 7d18: 1881 adds r1, r0, r2 + 7d1a: 2c00 cmp r4, #0 + 7d1c: f43f af27 beq.w 7b6e + 7d20: e73d b.n 7b9e if(index < BMC_MAX_BUTTONS){ - 7d82: 2a05 cmp r2, #5 - 7d84: f63f af23 bhi.w 7bce + 7d22: 2a05 cmp r2, #5 + 7d24: f63f af23 bhi.w 7b6e getDeviceNameFromIndex(store.layers[midi.globals.layer].buttons[index].name, str); - 7d88: f8dc 4004 ldr.w r4, [ip, #4] - 7d8c: eb02 0142 add.w r1, r2, r2, lsl #1 - 7d90: f8dc 0000 ldr.w r0, [ip] - 7d94: f8d4 4108 ldr.w r4, [r4, #264] ; 0x108 - 7d98: eb02 0281 add.w r2, r2, r1, lsl #2 - 7d9c: 7a61 ldrb r1, [r4, #9] - 7d9e: eb01 1441 add.w r4, r1, r1, lsl #5 - 7da2: eb01 0184 add.w r1, r1, r4, lsl #2 - 7da6: f241 5467 movw r4, #5479 ; 0x1567 + 7d28: f8dc 4004 ldr.w r4, [ip, #4] + 7d2c: eb02 0142 add.w r1, r2, r2, lsl #1 + 7d30: f8dc 0000 ldr.w r0, [ip] + 7d34: f8d4 4108 ldr.w r4, [r4, #264] ; 0x108 + 7d38: eb02 0281 add.w r2, r2, r1, lsl #2 + 7d3c: 7a61 ldrb r1, [r4, #9] + 7d3e: eb01 1441 add.w r4, r1, r1, lsl #5 + 7d42: eb01 0184 add.w r1, r1, r4, lsl #2 + 7d46: f241 5467 movw r4, #5479 ; 0x1567 getDeviceNameFromIndex(store.layers[midi.globals.layer].oled[index].name, str); - 7daa: 440a add r2, r1 - 7dac: e7d8 b.n 7d60 + 7d4a: 440a add r2, r1 + 7d4c: e7d8 b.n 7d00 if(index < BMC_MAX_NAMES_LIBRARY){ - 7dae: 2a7f cmp r2, #127 ; 0x7f - 7db0: f63f af0d bhi.w 7bce + 7d4e: 2a7f cmp r2, #127 ; 0x7f + 7d50: f63f af0d bhi.w 7b6e getDeviceNameFromIndex(index+1, str); - 7db4: 3201 adds r2, #1 - 7db6: b292 uxth r2, r2 + 7d54: 3201 adds r2, #1 + 7d56: b292 uxth r2, r2 if(value < BMC_MAX_NAMES_LIBRARY){ - 7db8: 2a80 cmp r2, #128 ; 0x80 - 7dba: f43f af08 beq.w 7bce + 7d58: 2a80 cmp r2, #128 ; 0x80 + 7d5a: f43f af08 beq.w 7b6e if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7dbe: eb02 1202 add.w r2, r2, r2, lsl #4 - 7dc2: f8dc 1000 ldr.w r1, [ip] - 7dc6: f202 6267 addw r2, r2, #1639 ; 0x667 - 7dca: 5c88 ldrb r0, [r1, r2] - 7dcc: 4411 add r1, r2 - 7dce: 2800 cmp r0, #0 - 7dd0: f43f aefd beq.w 7bce - 7dd4: e713 b.n 7bfe + 7d5e: eb02 1202 add.w r2, r2, r2, lsl #4 + 7d62: f8dc 1000 ldr.w r1, [ip] + 7d66: f202 6267 addw r2, r2, #1639 ; 0x667 + 7d6a: 5c88 ldrb r0, [r1, r2] + 7d6c: 4411 add r1, r2 + 7d6e: 2800 cmp r0, #0 + 7d70: f43f aefd beq.w 7b6e + 7d74: e713 b.n 7b9e if(index < BMC_MAX_EVENTS_LIBRARY){ - 7dd6: 2ac7 cmp r2, #199 ; 0xc7 - 7dd8: f63f aef9 bhi.w 7bce + 7d76: 2ac7 cmp r2, #199 ; 0xc7 + 7d78: f63f aef9 bhi.w 7b6e getDeviceNameFromIndex(store.global.events[index].name, str); - 7ddc: f8dc 1000 ldr.w r1, [ip] - 7de0: eb01 02c2 add.w r2, r1, r2, lsl #3 - 7de4: f892 2038 ldrb.w r2, [r2, #56] ; 0x38 + 7d7c: f8dc 1000 ldr.w r1, [ip] + 7d80: eb01 02c2 add.w r2, r1, r2, lsl #3 + 7d84: f892 2038 ldrb.w r2, [r2, #56] ; 0x38 if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7de8: 3a01 subs r2, #1 - 7dea: b290 uxth r0, r2 - 7dec: 287e cmp r0, #126 ; 0x7e - 7dee: f63f aeee bhi.w 7bce - 7df2: e6fc b.n 7bee + 7d88: 3a01 subs r2, #1 + 7d8a: b290 uxth r0, r2 + 7d8c: 287e cmp r0, #126 ; 0x7e + 7d8e: f63f aeee bhi.w 7b6e + 7d92: e6fc b.n 7b8e if(index < BMC_MAX_LAYERS){ - 7df4: 2a04 cmp r2, #4 - 7df6: f63f aeea bhi.w 7bce + 7d94: 2a04 cmp r2, #4 + 7d96: f63f aeea bhi.w 7b6e getDeviceNameFromIndex(store.layers[midi.globals.layer].events[0].name, str); - 7dfa: e9dc 1200 ldrd r1, r2, [ip] - 7dfe: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 7e02: 7a52 ldrb r2, [r2, #9] - 7e04: eb02 1042 add.w r0, r2, r2, lsl #5 - 7e08: eb02 0280 add.w r2, r2, r0, lsl #2 - 7e0c: 440a add r2, r1 - 7e0e: f502 52ab add.w r2, r2, #5472 ; 0x1560 - 7e12: 7812 ldrb r2, [r2, #0] + 7d9a: e9dc 1200 ldrd r1, r2, [ip] + 7d9e: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 7da2: 7a52 ldrb r2, [r2, #9] + 7da4: eb02 1042 add.w r0, r2, r2, lsl #5 + 7da8: eb02 0280 add.w r2, r2, r0, lsl #2 + 7dac: 440a add r2, r1 + 7dae: f502 52ab add.w r2, r2, #5472 ; 0x1560 + 7db2: 7812 ldrb r2, [r2, #0] if(value > 0 && strlen(store.global.names[value-1].name) > 0){ - 7e14: 3a01 subs r2, #1 - 7e16: b290 uxth r0, r2 - 7e18: 287e cmp r0, #126 ; 0x7e - 7e1a: f63f aed8 bhi.w 7bce - 7e1e: e6e6 b.n 7bee - 7e20: 20003c74 .word 0x20003c74 - -00007e24 : + 7db4: 3a01 subs r2, #1 + 7db6: b290 uxth r0, r2 + 7db8: 287e cmp r0, #126 ; 0x7e + 7dba: f63f aed8 bhi.w 7b6e + 7dbe: e6e6 b.n 7b8e + 7dc0: 20003d34 .word 0x20003d34 + +00007dc4 : if(midi.globals.settings.getAppendPresetNumberToPresetName()){ - 7e24: 6803 ldr r3, [r0, #0] - 7e26: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 7dc4: 6803 ldr r3, [r0, #0] + 7dc6: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 void getName(uint16_t t_preset, char * str){ - 7e2a: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 7e2e: 4615 mov r5, r2 + 7dca: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 7dce: 4615 mov r5, r2 return bitRead(settings.flags, bit); - 7e30: 685a ldr r2, [r3, #4] - 7e32: 4604 mov r4, r0 - 7e34: b08a sub sp, #40 ; 0x28 - 7e36: 6812 ldr r2, [r2, #0] - 7e38: 460e mov r6, r1 - 7e3a: 6812 ldr r2, [r2, #0] + 7dd0: 685a ldr r2, [r3, #4] + 7dd2: 4604 mov r4, r0 + 7dd4: b08a sub sp, #40 ; 0x28 + 7dd6: 6812 ldr r2, [r2, #0] + 7dd8: 460e mov r6, r1 + 7dda: 6812 ldr r2, [r2, #0] if(midi.globals.settings.getAppendPresetNumberToPresetName()){ - 7e3c: 0590 lsls r0, r2, #22 - 7e3e: d416 bmi.n 7e6e + 7ddc: 0590 lsls r0, r2, #22 + 7dde: d416 bmi.n 7e0e uint16_t p = toPresetIndex(bank, t_preset); - 7e40: 68e2 ldr r2, [r4, #12] + 7de0: 68e2 ldr r2, [r4, #12] if(p < BMC_MAX_PRESETS && midi.globals.store.global.presets[p].name > 0){ - 7e42: 6819 ldr r1, [r3, #0] + 7de2: 6819 ldr r1, [r3, #0] uint16_t p = (t_bank << BMC_PRESET_BANK_MASK) | (t_preset & (BMC_MAX_PRESETS_PER_BANK-1)); - 7e44: f006 0307 and.w r3, r6, #7 - 7e48: 7812 ldrb r2, [r2, #0] - 7e4a: ea43 03c2 orr.w r3, r3, r2, lsl #3 + 7de4: f006 0307 and.w r3, r6, #7 + 7de8: 7812 ldrb r2, [r2, #0] + 7dea: ea43 03c2 orr.w r3, r3, r2, lsl #3 if(p >= BMC_MAX_PRESETS){ - 7e4e: 2b40 cmp r3, #64 ; 0x40 - 7e50: bfa8 it ge - 7e52: 2300 movge r3, #0 + 7dee: 2b40 cmp r3, #64 ; 0x40 + 7df0: bfa8 it ge + 7df2: 2300 movge r3, #0 if(p < BMC_MAX_PRESETS && midi.globals.store.global.presets[p].name > 0){ - 7e54: eb03 0383 add.w r3, r3, r3, lsl #2 - 7e58: eb01 0343 add.w r3, r1, r3, lsl #1 - 7e5c: f893 3f2d ldrb.w r3, [r3, #3885] ; 0xf2d - 7e60: 2b00 cmp r3, #0 - 7e62: d137 bne.n 7ed4 + 7df4: eb03 0383 add.w r3, r3, r3, lsl #2 + 7df8: eb01 0343 add.w r3, r1, r3, lsl #1 + 7dfc: f893 3f2d ldrb.w r3, [r3, #3885] ; 0xf2d + 7e00: 2b00 cmp r3, #0 + 7e02: d137 bne.n 7e74 if(BMC_STR_MATCH(str, "")){ - 7e64: 782b ldrb r3, [r5, #0] - 7e66: b1b3 cbz r3, 7e96 + 7e04: 782b ldrb r3, [r5, #0] + 7e06: b1b3 cbz r3, 7e36 } - 7e68: b00a add sp, #40 ; 0x28 - 7e6a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 7e08: b00a add sp, #40 ; 0x28 + 7e0a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} char bankBuff[2] = ""; - 7e6e: 2200 movs r2, #0 - 7e70: f8ad 2004 strh.w r2, [sp, #4] + 7e0e: 2200 movs r2, #0 + 7e10: f8ad 2004 strh.w r2, [sp, #4] BMCTools::getBankLetter(bank, bankBuff); - 7e74: 68e2 ldr r2, [r4, #12] - 7e76: 7812 ldrb r2, [r2, #0] + 7e14: 68e2 ldr r2, [r4, #12] + 7e16: 7812 ldrb r2, [r2, #0] if(n < 32){ - 7e78: 2a1f cmp r2, #31 - 7e7a: d93d bls.n 7ef8 - 7e7c: f10d 0804 add.w r8, sp, #4 + 7e18: 2a1f cmp r2, #31 + 7e1a: d93d bls.n 7e98 + 7e1c: f10d 0804 add.w r8, sp, #4 sprintf(str, "%s%u ", bankBuff, t_preset+midi.globals.offset); - 7e80: 7a1b ldrb r3, [r3, #8] - 7e82: 4642 mov r2, r8 - 7e84: 4936 ldr r1, [pc, #216] ; (7f60 ) - 7e86: 4628 mov r0, r5 - 7e88: 4433 add r3, r6 - 7e8a: f026 f97f bl 2e18c + 7e20: 7a1b ldrb r3, [r3, #8] + 7e22: 4642 mov r2, r8 + 7e24: 4936 ldr r1, [pc, #216] ; (7f00 ) + 7e26: 4628 mov r0, r5 + 7e28: 4433 add r3, r6 + 7e2a: f026 fa23 bl 2e274 if(p < BMC_MAX_PRESETS && midi.globals.store.global.presets[p].name > 0){ - 7e8e: 6823 ldr r3, [r4, #0] - 7e90: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 7e94: e7d4 b.n 7e40 + 7e2e: 6823 ldr r3, [r4, #0] + 7e30: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 7e34: e7d4 b.n 7de0 if(midi.globals.settings.getDisplayBankWithPreset()){ - 7e96: 6822 ldr r2, [r4, #0] - 7e98: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 7e9c: 6851 ldr r1, [r2, #4] - 7e9e: 6809 ldr r1, [r1, #0] - 7ea0: 6809 ldr r1, [r1, #0] - 7ea2: 0549 lsls r1, r1, #21 - 7ea4: d51f bpl.n 7ee6 + 7e36: 6822 ldr r2, [r4, #0] + 7e38: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 7e3c: 6851 ldr r1, [r2, #4] + 7e3e: 6809 ldr r1, [r1, #0] + 7e40: 6809 ldr r1, [r1, #0] + 7e42: 0549 lsls r1, r1, #21 + 7e44: d51f bpl.n 7e86 char bankBuff[3] = ""; - 7ea6: 492f ldr r1, [pc, #188] ; (7f64 ) - 7ea8: f8ad 3005 strh.w r3, [sp, #5] - 7eac: f891 1034 ldrb.w r1, [r1, #52] ; 0x34 + 7e46: 492f ldr r1, [pc, #188] ; (7f04 ) + 7e48: f8ad 3005 strh.w r3, [sp, #5] + 7e4c: f891 1034 ldrb.w r1, [r1, #52] ; 0x34 BMCTools::getBankLetter(bank, bankBuff); - 7eb0: 68e3 ldr r3, [r4, #12] + 7e50: 68e3 ldr r3, [r4, #12] char bankBuff[3] = ""; - 7eb2: f88d 1004 strb.w r1, [sp, #4] + 7e52: f88d 1004 strb.w r1, [sp, #4] BMCTools::getBankLetter(bank, bankBuff); - 7eb6: 781b ldrb r3, [r3, #0] - 7eb8: 2b1f cmp r3, #31 - 7eba: d937 bls.n 7f2c - 7ebc: f10d 0804 add.w r8, sp, #4 + 7e56: 781b ldrb r3, [r3, #0] + 7e58: 2b1f cmp r3, #31 + 7e5a: d937 bls.n 7ecc + 7e5c: f10d 0804 add.w r8, sp, #4 sprintf(str, "%s%u", bankBuff, t_preset+midi.globals.offset); - 7ec0: 7a13 ldrb r3, [r2, #8] - 7ec2: 4642 mov r2, r8 - 7ec4: 4928 ldr r1, [pc, #160] ; (7f68 ) - 7ec6: 4628 mov r0, r5 - 7ec8: 4433 add r3, r6 - 7eca: f026 f95f bl 2e18c - } - 7ece: b00a add sp, #40 ; 0x28 - 7ed0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 7e60: 7a13 ldrb r3, [r2, #8] + 7e62: 4642 mov r2, r8 + 7e64: 4928 ldr r1, [pc, #160] ; (7f08 ) + 7e66: 4628 mov r0, r5 + 7e68: 4433 add r3, r6 + 7e6a: f026 fa03 bl 2e274 + } + 7e6e: b00a add sp, #40 ; 0x28 + 7e70: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} strcat(str, midi.globals.store.global.names[n-1].name); - 7ed4: eb03 1303 add.w r3, r3, r3, lsl #4 - 7ed8: 4628 mov r0, r5 - 7eda: f203 6367 addw r3, r3, #1639 ; 0x667 - 7ede: 4419 add r1, r3 - 7ee0: f026 fb26 bl 2e530 - 7ee4: e7be b.n 7e64 + 7e74: eb03 1303 add.w r3, r3, r3, lsl #4 + 7e78: 4628 mov r0, r5 + 7e7a: f203 6367 addw r3, r3, #1639 ; 0x667 + 7e7e: 4419 add r1, r3 + 7e80: f026 fbca bl 2e618 + 7e84: e7be b.n 7e04 sprintf(str, "%u", t_preset+midi.globals.offset); - 7ee6: 7a12 ldrb r2, [r2, #8] - 7ee8: 4628 mov r0, r5 - 7eea: 4920 ldr r1, [pc, #128] ; (7f6c ) - 7eec: 4432 add r2, r6 + 7e86: 7a12 ldrb r2, [r2, #8] + 7e88: 4628 mov r0, r5 + 7e8a: 4920 ldr r1, [pc, #128] ; (7f0c ) + 7e8c: 4432 add r2, r6 } - 7eee: b00a add sp, #40 ; 0x28 - 7ef0: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 7e8e: b00a add sp, #40 ; 0x28 + 7e90: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} sprintf(str, "%u", t_preset+midi.globals.offset); - 7ef4: f026 b94a b.w 2e18c + 7e94: f026 b9ee b.w 2e274 sprintf(buff, "%c", alph[n]); - 7ef8: f102 0328 add.w r3, r2, #40 ; 0x28 + 7e98: f102 0328 add.w r3, r2, #40 ; 0x28 const char alph[32] = BMC_ALPHABET; - 7efc: 4f1c ldr r7, [pc, #112] ; (7f70 ) - 7efe: f10d 0c08 add.w ip, sp, #8 + 7e9c: 4f1c ldr r7, [pc, #112] ; (7f10 ) + 7e9e: f10d 0c08 add.w ip, sp, #8 sprintf(buff, "%c", alph[n]); - 7f02: f10d 0804 add.w r8, sp, #4 - 7f06: eb0d 0e03 add.w lr, sp, r3 + 7ea2: f10d 0804 add.w r8, sp, #4 + 7ea6: eb0d 0e03 add.w lr, sp, r3 const char alph[32] = BMC_ALPHABET; - 7f0a: cf0f ldmia r7!, {r0, r1, r2, r3} - 7f0c: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - 7f10: e897 000f ldmia.w r7, {r0, r1, r2, r3} - 7f14: e88c 000f stmia.w ip, {r0, r1, r2, r3} + 7eaa: cf0f ldmia r7!, {r0, r1, r2, r3} + 7eac: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 7eb0: e897 000f ldmia.w r7, {r0, r1, r2, r3} + 7eb4: e88c 000f stmia.w ip, {r0, r1, r2, r3} sprintf(buff, "%c", alph[n]); - 7f18: 4916 ldr r1, [pc, #88] ; (7f74 ) - 7f1a: 4640 mov r0, r8 - 7f1c: f81e 2c20 ldrb.w r2, [lr, #-32] - 7f20: f026 f934 bl 2e18c + 7eb8: 4916 ldr r1, [pc, #88] ; (7f14 ) + 7eba: 4640 mov r0, r8 + 7ebc: f81e 2c20 ldrb.w r2, [lr, #-32] + 7ec0: f026 f9d8 bl 2e274 sprintf(str, "%s%u ", bankBuff, t_preset+midi.globals.offset); - 7f24: 6823 ldr r3, [r4, #0] - 7f26: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 7ec4: 6823 ldr r3, [r4, #0] + 7ec6: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 } - 7f2a: e7a9 b.n 7e80 + 7eca: e7a9 b.n 7e20 sprintf(buff, "%c", alph[n]); - 7f2c: 3328 adds r3, #40 ; 0x28 + 7ecc: 3328 adds r3, #40 ; 0x28 const char alph[32] = BMC_ALPHABET; - 7f2e: f8df c040 ldr.w ip, [pc, #64] ; 7f70 - 7f32: af02 add r7, sp, #8 + 7ece: f8df c040 ldr.w ip, [pc, #64] ; 7f10 + 7ed2: af02 add r7, sp, #8 sprintf(buff, "%c", alph[n]); - 7f34: f10d 0804 add.w r8, sp, #4 - 7f38: eb0d 0e03 add.w lr, sp, r3 + 7ed4: f10d 0804 add.w r8, sp, #4 + 7ed8: eb0d 0e03 add.w lr, sp, r3 const char alph[32] = BMC_ALPHABET; - 7f3c: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} - 7f40: c70f stmia r7!, {r0, r1, r2, r3} - 7f42: e89c 000f ldmia.w ip, {r0, r1, r2, r3} - 7f46: e887 000f stmia.w r7, {r0, r1, r2, r3} + 7edc: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 7ee0: c70f stmia r7!, {r0, r1, r2, r3} + 7ee2: e89c 000f ldmia.w ip, {r0, r1, r2, r3} + 7ee6: e887 000f stmia.w r7, {r0, r1, r2, r3} sprintf(buff, "%c", alph[n]); - 7f4a: 490a ldr r1, [pc, #40] ; (7f74 ) - 7f4c: 4640 mov r0, r8 - 7f4e: f81e 2c20 ldrb.w r2, [lr, #-32] - 7f52: f026 f91b bl 2e18c + 7eea: 490a ldr r1, [pc, #40] ; (7f14 ) + 7eec: 4640 mov r0, r8 + 7eee: f81e 2c20 ldrb.w r2, [lr, #-32] + 7ef2: f026 f9bf bl 2e274 sprintf(str, "%s%u", bankBuff, t_preset+midi.globals.offset); - 7f56: 6823 ldr r3, [r4, #0] - 7f58: f8d3 2108 ldr.w r2, [r3, #264] ; 0x108 - } - 7f5c: e7b0 b.n 7ec0 - 7f5e: bf00 nop - 7f60: 20001628 .word 0x20001628 - 7f64: 20000800 .word 0x20000800 - 7f68: 20001630 .word 0x20001630 - 7f6c: 20002030 .word 0x20002030 - 7f70: 2000388c .word 0x2000388c - 7f74: 20003888 .word 0x20003888 - -00007f78 : + 7ef6: 6823 ldr r3, [r4, #0] + 7ef8: f8d3 2108 ldr.w r2, [r3, #264] ; 0x108 + } + 7efc: e7b0 b.n 7e60 + 7efe: bf00 nop + 7f00: 20001628 .word 0x20001628 + 7f04: 20000800 .word 0x20000800 + 7f08: 20001630 .word 0x20001630 + 7f0c: 20002030 .word 0x20002030 + 7f10: 2000394c .word 0x2000394c + 7f14: 20003948 .word 0x20003948 + +00007f18 : if(n >= BMC_MAX_SETLISTS){ - 7f78: 2907 cmp r1, #7 - 7f7a: d82b bhi.n 7fd4 + 7f18: 2907 cmp r1, #7 + 7f1a: d82b bhi.n 7f74 void set(uint8_t n){ - 7f7c: b538 push {r3, r4, r5, lr} + 7f1c: b538 push {r3, r4, r5, lr} if(setList != n){ - 7f7e: 6883 ldr r3, [r0, #8] - 7f80: 460c mov r4, r1 - 7f82: 4605 mov r5, r0 - 7f84: 781a ldrb r2, [r3, #0] - 7f86: 428a cmp r2, r1 - 7f88: d100 bne.n 7f8c - } - 7f8a: bd38 pop {r3, r4, r5, pc} + 7f1e: 6883 ldr r3, [r0, #8] + 7f20: 460c mov r4, r1 + 7f22: 4605 mov r5, r0 + 7f24: 781a ldrb r2, [r3, #0] + 7f26: 428a cmp r2, r1 + 7f28: d100 bne.n 7f2c + } + 7f2a: bd38 pop {r3, r4, r5, pc} setList = n; - 7f8c: 701c strb r4, [r3, #0] - 7f8e: 210d movs r1, #13 - 7f90: 4811 ldr r0, [pc, #68] ; (7fd8 ) - 7f92: f024 fad9 bl 2c548 - 7f96: 2101 movs r1, #1 - 7f98: 4810 ldr r0, [pc, #64] ; (7fdc ) - 7f9a: f024 fad5 bl 2c548 + 7f2c: 701c strb r4, [r3, #0] + 7f2e: 210d movs r1, #13 + 7f30: 4811 ldr r0, [pc, #68] ; (7f78 ) + 7f32: f024 fb7d bl 2c630 + 7f36: 2101 movs r1, #1 + 7f38: 4810 ldr r0, [pc, #64] ; (7f7c ) + 7f3a: f024 fb79 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 7f9e: 2300 movs r3, #0 - 7fa0: 220a movs r2, #10 - 7fa2: 4621 mov r1, r4 - 7fa4: 480e ldr r0, [pc, #56] ; (7fe0 ) - 7fa6: f021 ff81 bl 29eac + 7f3e: 2300 movs r3, #0 + 7f40: 220a movs r2, #10 + 7f42: 4621 mov r1, r4 + 7f44: 480e ldr r0, [pc, #56] ; (7f80 ) + 7f46: f022 f827 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 7faa: 480d ldr r0, [pc, #52] ; (7fe0 ) - 7fac: f021 ff62 bl 29e74 + 7f4a: 480d ldr r0, [pc, #52] ; (7f80 ) + 7f4c: f022 f808 bl 29f60 bitSet(flags, bit); - 7fb0: 7f2b ldrb r3, [r5, #28] + 7f50: 7f2b ldrb r3, [r5, #28] return presets.midi.globals.settings.getSetListTriggerFirstSong(); - 7fb2: 682a ldr r2, [r5, #0] - 7fb4: f043 0301 orr.w r3, r3, #1 - 7fb8: 772b strb r3, [r5, #28] - 7fba: 6813 ldr r3, [r2, #0] - 7fbc: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 7f52: 682a ldr r2, [r5, #0] + 7f54: f043 0301 orr.w r3, r3, #1 + 7f58: 772b strb r3, [r5, #28] + 7f5a: 6813 ldr r3, [r2, #0] + 7f5c: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 return bitRead(settings.data[2], 4); - 7fc0: 685b ldr r3, [r3, #4] - 7fc2: 681b ldr r3, [r3, #0] - 7fc4: 68db ldr r3, [r3, #12] + 7f60: 685b ldr r3, [r3, #4] + 7f62: 681b ldr r3, [r3, #0] + 7f64: 68db ldr r3, [r3, #12] if(autoTriggerFirstSong()){ - 7fc6: 06db lsls r3, r3, #27 - 7fc8: d5df bpl.n 7f8a + 7f66: 06db lsls r3, r3, #27 + 7f68: d5df bpl.n 7f2a setSong(0); - 7fca: 2100 movs r1, #0 - 7fcc: 4628 mov r0, r5 - 7fce: f7f8 fbf9 bl 7c4 - } - 7fd2: bd38 pop {r3, r4, r5, pc} - 7fd4: 4770 bx lr - 7fd6: bf00 nop - 7fd8: 20002974 .word 0x20002974 - 7fdc: 200023ec .word 0x200023ec - 7fe0: 20004ba8 .word 0x20004ba8 - -00007fe4 : + 7f6a: 2100 movs r1, #0 + 7f6c: 4628 mov r0, r5 + 7f6e: f7f8 fc29 bl 7c4 + } + 7f72: bd38 pop {r3, r4, r5, pc} + 7f74: 4770 bx lr + 7f76: bf00 nop + 7f78: 2000297c .word 0x2000297c + 7f7c: 200023ec .word 0x200023ec + 7f80: 20004c68 .word 0x20004c68 + +00007f84 : void scrollSet(bool t_direction, bool t_wrap, uint8_t t_amount, uint8_t t_min, uint8_t t_max){ - 7fe4: b570 push {r4, r5, r6, lr} - 7fe6: f89d c010 ldrb.w ip, [sp, #16] - 7fea: 4605 mov r5, r0 - 7fec: f89d 4014 ldrb.w r4, [sp, #20] + 7f84: b570 push {r4, r5, r6, lr} + 7f86: f89d c010 ldrb.w ip, [sp, #16] + 7f8a: 4605 mov r5, r0 + 7f8c: f89d 4014 ldrb.w r4, [sp, #20] if(t_min > t_max){ - 7ff0: 45a4 cmp ip, r4 - 7ff2: d803 bhi.n 7ffc + 7f90: 45a4 cmp ip, r4 + 7f92: d803 bhi.n 7f9c } else if(t_min == t_max){ - 7ff4: d04e beq.n 8094 - 7ff6: 4620 mov r0, r4 - 7ff8: 4664 mov r4, ip - 7ffa: 4684 mov ip, r0 + 7f94: d04e beq.n 8034 + 7f96: 4620 mov r0, r4 + 7f98: 4664 mov r4, ip + 7f9a: 4684 mov ip, r0 if(t_max > BMC_MAX_SETLISTS-1){ - 7ffc: f1bc 0f07 cmp.w ip, #7 - 8000: bf28 it cs - 8002: f04f 0c07 movcs.w ip, #7 + 7f9c: f1bc 0f07 cmp.w ip, #7 + 7fa0: bf28 it cs + 7fa2: f04f 0c07 movcs.w ip, #7 t_min = 0; - 8006: 2c08 cmp r4, #8 - 8008: bf28 it cs - 800a: 2400 movcs r4, #0 + 7fa6: 2c08 cmp r4, #8 + 7fa8: bf28 it cs + 7faa: 2400 movcs r4, #0 set(scroller.scroll(t_amount, t_direction, t_wrap, setList, t_min, t_max)); - 800c: 68ae ldr r6, [r5, #8] - 800e: 7830 ldrb r0, [r6, #0] + 7fac: 68ae ldr r6, [r5, #8] + 7fae: 7830 ldrb r0, [r6, #0] setValue(t_value, t_min, t_max); return scroll(t_amount, bitRead(t_flags,0), bitRead(t_flags,1)); } T scroll(T t_amount, bool direction, bool t_endless, T t_value, T t_min, T t_max){ setValue(t_value, t_min, t_max); if(direction==BMC_SCROLL_UP){ - 8010: b149 cbz r1, 8026 + 7fb0: b149 cbz r1, 7fc6 T getPercentage(T t_value, T t_amount=1){ return ((((float)t_value) / 100) * (t_amount==0?1:t_amount)); } T upEndless(T amount){ long newValue = (value+amount); - 8012: 4403 add r3, r0 + 7fb2: 4403 add r3, r0 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - 8014: 2a00 cmp r2, #0 - 8016: d038 beq.n 808a + 7fb4: 2a00 cmp r2, #0 + 7fb6: d038 beq.n 802a return (newValue > max || newValue < min) ? min : newValue; - 8018: 4563 cmp r3, ip - 801a: dc0a bgt.n 8032 + 7fb8: 4563 cmp r3, ip + 7fba: dc0a bgt.n 7fd2 } T upLimited(T amount){ long newValue = (value+amount); if(newValue>max){ return max; } else if(newValue + 7fbc: 42a3 cmp r3, r4 + 7fbe: da07 bge.n 7fd0 if(setList != n){ - 8020: 42a0 cmp r0, r4 - 8022: d108 bne.n 8036 + 7fc0: 42a0 cmp r0, r4 + 7fc2: d108 bne.n 7fd6 } - 8024: bd70 pop {r4, r5, r6, pc} + 7fc4: bd70 pop {r4, r5, r6, pc} long newValue = (value-amount); - 8026: 1ac3 subs r3, r0, r3 + 7fc6: 1ac3 subs r3, r0, r3 value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - 8028: bb5a cbnz r2, 8082 + 7fc8: bb5a cbnz r2, 8022 } return newValue; } T downLimited(T amount){ long newValue = (value-amount); return (newValue < min) ? min : newValue; - 802a: 42a3 cmp r3, r4 - 802c: bfb8 it lt - 802e: 4623 movlt r3, r4 - 8030: b2dc uxtb r4, r3 + 7fca: 42a3 cmp r3, r4 + 7fcc: bfb8 it lt + 7fce: 4623 movlt r3, r4 + 7fd0: b2dc uxtb r4, r3 if(setList != n){ - 8032: 42a0 cmp r0, r4 - 8034: d0f6 beq.n 8024 - 8036: 2c07 cmp r4, #7 - 8038: d8f4 bhi.n 8024 - 803a: 210d movs r1, #13 - 803c: 4817 ldr r0, [pc, #92] ; (809c ) + 7fd2: 42a0 cmp r0, r4 + 7fd4: d0f6 beq.n 7fc4 + 7fd6: 2c07 cmp r4, #7 + 7fd8: d8f4 bhi.n 7fc4 + 7fda: 210d movs r1, #13 + 7fdc: 4817 ldr r0, [pc, #92] ; (803c ) setList = n; - 803e: 7034 strb r4, [r6, #0] - 8040: f024 fa82 bl 2c548 - 8044: 2101 movs r1, #1 - 8046: 4816 ldr r0, [pc, #88] ; (80a0 ) - 8048: f024 fa7e bl 2c548 + 7fde: 7034 strb r4, [r6, #0] + 7fe0: f024 fb26 bl 2c630 + 7fe4: 2101 movs r1, #1 + 7fe6: 4816 ldr r0, [pc, #88] ; (8040 ) + 7fe8: f024 fb22 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 804c: 2300 movs r3, #0 - 804e: 220a movs r2, #10 - 8050: 4621 mov r1, r4 - 8052: 4814 ldr r0, [pc, #80] ; (80a4 ) - 8054: f021 ff2a bl 29eac + 7fec: 2300 movs r3, #0 + 7fee: 220a movs r2, #10 + 7ff0: 4621 mov r1, r4 + 7ff2: 4814 ldr r0, [pc, #80] ; (8044 ) + 7ff4: f021 ffd0 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 8058: 4812 ldr r0, [pc, #72] ; (80a4 ) - 805a: f021 ff0b bl 29e74 - 805e: 7f2b ldrb r3, [r5, #28] + 7ff8: 4812 ldr r0, [pc, #72] ; (8044 ) + 7ffa: f021 ffb1 bl 29f60 + 7ffe: 7f2b ldrb r3, [r5, #28] return presets.midi.globals.settings.getSetListTriggerFirstSong(); - 8060: 682a ldr r2, [r5, #0] - 8062: f043 0301 orr.w r3, r3, #1 - 8066: 772b strb r3, [r5, #28] - 8068: 6813 ldr r3, [r2, #0] - 806a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 806e: 685b ldr r3, [r3, #4] - 8070: 681b ldr r3, [r3, #0] - 8072: 68db ldr r3, [r3, #12] + 8000: 682a ldr r2, [r5, #0] + 8002: f043 0301 orr.w r3, r3, #1 + 8006: 772b strb r3, [r5, #28] + 8008: 6813 ldr r3, [r2, #0] + 800a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 800e: 685b ldr r3, [r3, #4] + 8010: 681b ldr r3, [r3, #0] + 8012: 68db ldr r3, [r3, #12] if(autoTriggerFirstSong()){ - 8074: 06db lsls r3, r3, #27 - 8076: d5d5 bpl.n 8024 + 8014: 06db lsls r3, r3, #27 + 8016: d5d5 bpl.n 7fc4 setSong(0); - 8078: 2100 movs r1, #0 - 807a: 4628 mov r0, r5 - 807c: f7f8 fba2 bl 7c4 + 8018: 2100 movs r1, #0 + 801a: 4628 mov r0, r5 + 801c: f7f8 fbd2 bl 7c4 } - 8080: bd70 pop {r4, r5, r6, pc} + 8020: bd70 pop {r4, r5, r6, pc} return (newValue < min) ? max : newValue; - 8082: 42a3 cmp r3, r4 - 8084: dad4 bge.n 8030 - 8086: 4664 mov r4, ip - 8088: e7d3 b.n 8032 + 8022: 42a3 cmp r3, r4 + 8024: dad4 bge.n 7fd0 + 8026: 4664 mov r4, ip + 8028: e7d3 b.n 7fd2 if(newValue>max){ - 808a: 4563 cmp r3, ip - 808c: dcfb bgt.n 8086 + 802a: 4563 cmp r3, ip + 802c: dcfb bgt.n 8026 } else if(newValue - 8092: e7c5 b.n 8020 + 802e: 42a3 cmp r3, r4 + 8030: dace bge.n 7fd0 + 8032: e7c5 b.n 7fc0 t_max = BMC_MAX_SETLISTS-1; - 8094: f04f 0c07 mov.w ip, #7 + 8034: f04f 0c07 mov.w ip, #7 t_min = 0; - 8098: 2400 movs r4, #0 - 809a: e7b7 b.n 800c - 809c: 20002974 .word 0x20002974 - 80a0: 200023ec .word 0x200023ec - 80a4: 20004ba8 .word 0x20004ba8 + 8038: 2400 movs r4, #0 + 803a: e7b7 b.n 7fac + 803c: 2000297c .word 0x2000297c + 8040: 200023ec .word 0x200023ec + 8044: 20004c68 .word 0x20004c68 -000080a8 : +00008048 : void scrollSong(bool t_direction, bool t_wrap, uint8_t t_amount, uint8_t t_min, uint8_t t_max){ - 80a8: b510 push {r4, lr} - 80aa: f89d e008 ldrb.w lr, [sp, #8] - 80ae: f89d c00c ldrb.w ip, [sp, #12] + 8048: b510 push {r4, lr} + 804a: f89d e008 ldrb.w lr, [sp, #8] + 804e: f89d c00c ldrb.w ip, [sp, #12] if(t_min > t_max){ - 80b2: 45e6 cmp lr, ip - 80b4: d803 bhi.n 80be + 8052: 45e6 cmp lr, ip + 8054: d803 bhi.n 805e } else if(t_min == t_max){ - 80b6: d032 beq.n 811e - 80b8: 4664 mov r4, ip - 80ba: 46f4 mov ip, lr - 80bc: 46a6 mov lr, r4 + 8056: d032 beq.n 80be + 8058: 4664 mov r4, ip + 805a: 46f4 mov ip, lr + 805c: 46a6 mov lr, r4 if(t_max > BMC_MAX_SETLISTS_SONGS-1){ - 80be: f1be 0f0f cmp.w lr, #15 - 80c2: bf28 it cs - 80c4: f04f 0e0f movcs.w lr, #15 + 805e: f1be 0f0f cmp.w lr, #15 + 8062: bf28 it cs + 8064: f04f 0e0f movcs.w lr, #15 t_min = 0; - 80c8: f1bc 0f10 cmp.w ip, #16 - 80cc: bf28 it cs - 80ce: f04f 0c00 movcs.w ip, #0 + 8068: f1bc 0f10 cmp.w ip, #16 + 806c: bf28 it cs + 806e: f04f 0c00 movcs.w ip, #0 setSong(scroller.scroll(t_amount, t_direction, t_wrap, song, t_min, t_max)); - 80d2: 68c4 ldr r4, [r0, #12] - 80d4: 7824 ldrb r4, [r4, #0] + 8072: 68c4 ldr r4, [r0, #12] + 8074: 7824 ldrb r4, [r4, #0] if(direction==BMC_SCROLL_UP){ - 80d6: b159 cbz r1, 80f0 + 8076: b159 cbz r1, 8090 long newValue = (value+amount); - 80d8: 4423 add r3, r4 + 8078: 4423 add r3, r4 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - 80da: b1da cbz r2, 8114 + 807a: b1da cbz r2, 80b4 return (newValue > max || newValue < min) ? min : newValue; - 80dc: 4573 cmp r3, lr - 80de: dc0e bgt.n 80fe + 807c: 4573 cmp r3, lr + 807e: dc0e bgt.n 809e } else if(newValue + 8080: 4563 cmp r3, ip + 8082: db0c blt.n 809e return (newValue < min) ? max : newValue; - 80e4: fa5f fc83 uxtb.w ip, r3 - 80e8: 4661 mov r1, ip - 80ea: f7f8 fb6b bl 7c4 + 8084: fa5f fc83 uxtb.w ip, r3 + 8088: 4661 mov r1, ip + 808a: f7f8 fb9b bl 7c4 } - 80ee: bd10 pop {r4, pc} + 808e: bd10 pop {r4, pc} long newValue = (value-amount); - 80f0: 1ae3 subs r3, r4, r3 + 8090: 1ae3 subs r3, r4, r3 value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - 80f2: b942 cbnz r2, 8106 + 8092: b942 cbnz r2, 80a6 return (newValue < min) ? min : newValue; - 80f4: 459c cmp ip, r3 - 80f6: bfb8 it lt - 80f8: 469c movlt ip, r3 - 80fa: fa5f fc8c uxtb.w ip, ip + 8094: 459c cmp ip, r3 + 8096: bfb8 it lt + 8098: 469c movlt ip, r3 + 809a: fa5f fc8c uxtb.w ip, ip setSong(scroller.scroll(t_amount, t_direction, t_wrap, song, t_min, t_max)); - 80fe: 4661 mov r1, ip - 8100: f7f8 fb60 bl 7c4 + 809e: 4661 mov r1, ip + 80a0: f7f8 fb90 bl 7c4 } - 8104: bd10 pop {r4, pc} + 80a4: bd10 pop {r4, pc} return (newValue < min) ? max : newValue; - 8106: 4563 cmp r3, ip - 8108: daec bge.n 80e4 - 810a: 46f4 mov ip, lr + 80a6: 4563 cmp r3, ip + 80a8: daec bge.n 8084 + 80aa: 46f4 mov ip, lr setSong(scroller.scroll(t_amount, t_direction, t_wrap, song, t_min, t_max)); - 810c: 4661 mov r1, ip - 810e: f7f8 fb59 bl 7c4 + 80ac: 4661 mov r1, ip + 80ae: f7f8 fb89 bl 7c4 } - 8112: bd10 pop {r4, pc} + 80b2: bd10 pop {r4, pc} if(newValue>max){ - 8114: 4573 cmp r3, lr - 8116: dcf8 bgt.n 810a + 80b4: 4573 cmp r3, lr + 80b6: dcf8 bgt.n 80aa } else if(newValue - 811c: e7ef b.n 80fe + 80b8: 4563 cmp r3, ip + 80ba: dae3 bge.n 8084 + 80bc: e7ef b.n 809e t_max = BMC_MAX_SETLISTS_SONGS-1; - 811e: f04f 0e0f mov.w lr, #15 + 80be: f04f 0e0f mov.w lr, #15 t_min = 0; - 8122: f04f 0c00 mov.w ip, #0 - 8126: e7d4 b.n 80d2 + 80c2: f04f 0c00 mov.w ip, #0 + 80c6: e7d4 b.n 8072 -00008128 : +000080c8 : void scrollPart(bool t_direction, bool t_wrap, uint8_t t_amount, uint8_t t_min, uint8_t t_max){ - 8128: b510 push {r4, lr} - 812a: f89d e008 ldrb.w lr, [sp, #8] - 812e: f89d c00c ldrb.w ip, [sp, #12] + 80c8: b510 push {r4, lr} + 80ca: f89d e008 ldrb.w lr, [sp, #8] + 80ce: f89d c00c ldrb.w ip, [sp, #12] if(t_min > t_max){ - 8132: 45e6 cmp lr, ip - 8134: d803 bhi.n 813e + 80d2: 45e6 cmp lr, ip + 80d4: d803 bhi.n 80de } else if(t_min == t_max){ - 8136: d032 beq.n 819e - 8138: 4664 mov r4, ip - 813a: 46f4 mov ip, lr - 813c: 46a6 mov lr, r4 + 80d6: d032 beq.n 813e + 80d8: 4664 mov r4, ip + 80da: 46f4 mov ip, lr + 80dc: 46a6 mov lr, r4 if(t_max > BMC_MAX_SETLISTS_SONG_PARTS-1){ - 813e: f1be 0f07 cmp.w lr, #7 - 8142: bf28 it cs - 8144: f04f 0e07 movcs.w lr, #7 + 80de: f1be 0f07 cmp.w lr, #7 + 80e2: bf28 it cs + 80e4: f04f 0e07 movcs.w lr, #7 t_min = 0; - 8148: f1bc 0f08 cmp.w ip, #8 - 814c: bf28 it cs - 814e: f04f 0c00 movcs.w ip, #0 + 80e8: f1bc 0f08 cmp.w ip, #8 + 80ec: bf28 it cs + 80ee: f04f 0c00 movcs.w ip, #0 setPart(scroller.scroll(t_amount, t_direction, t_wrap, song, t_min, t_max)); - 8152: 68c4 ldr r4, [r0, #12] - 8154: 7824 ldrb r4, [r4, #0] + 80f2: 68c4 ldr r4, [r0, #12] + 80f4: 7824 ldrb r4, [r4, #0] if(direction==BMC_SCROLL_UP){ - 8156: b159 cbz r1, 8170 + 80f6: b159 cbz r1, 8110 long newValue = (value+amount); - 8158: 4423 add r3, r4 + 80f8: 4423 add r3, r4 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - 815a: b1da cbz r2, 8194 + 80fa: b1da cbz r2, 8134 return (newValue > max || newValue < min) ? min : newValue; - 815c: 4573 cmp r3, lr - 815e: dc0e bgt.n 817e + 80fc: 4573 cmp r3, lr + 80fe: dc0e bgt.n 811e } else if(newValue + 8100: 4563 cmp r3, ip + 8102: db0c blt.n 811e return (newValue < min) ? max : newValue; - 8164: fa5f fc83 uxtb.w ip, r3 - 8168: 4661 mov r1, ip - 816a: f7f8 fab9 bl 6e0 + 8104: fa5f fc83 uxtb.w ip, r3 + 8108: 4661 mov r1, ip + 810a: f7f8 fae9 bl 6e0 } - 816e: bd10 pop {r4, pc} + 810e: bd10 pop {r4, pc} long newValue = (value-amount); - 8170: 1ae3 subs r3, r4, r3 + 8110: 1ae3 subs r3, r4, r3 value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - 8172: b942 cbnz r2, 8186 + 8112: b942 cbnz r2, 8126 return (newValue < min) ? min : newValue; - 8174: 459c cmp ip, r3 - 8176: bfb8 it lt - 8178: 469c movlt ip, r3 - 817a: fa5f fc8c uxtb.w ip, ip + 8114: 459c cmp ip, r3 + 8116: bfb8 it lt + 8118: 469c movlt ip, r3 + 811a: fa5f fc8c uxtb.w ip, ip setPart(scroller.scroll(t_amount, t_direction, t_wrap, song, t_min, t_max)); - 817e: 4661 mov r1, ip - 8180: f7f8 faae bl 6e0 + 811e: 4661 mov r1, ip + 8120: f7f8 fade bl 6e0 } - 8184: bd10 pop {r4, pc} + 8124: bd10 pop {r4, pc} return (newValue < min) ? max : newValue; - 8186: 4563 cmp r3, ip - 8188: daec bge.n 8164 - 818a: 46f4 mov ip, lr + 8126: 4563 cmp r3, ip + 8128: daec bge.n 8104 + 812a: 46f4 mov ip, lr setPart(scroller.scroll(t_amount, t_direction, t_wrap, song, t_min, t_max)); - 818c: 4661 mov r1, ip - 818e: f7f8 faa7 bl 6e0 + 812c: 4661 mov r1, ip + 812e: f7f8 fad7 bl 6e0 } - 8192: bd10 pop {r4, pc} + 8132: bd10 pop {r4, pc} if(newValue>max){ - 8194: 4573 cmp r3, lr - 8196: dcf8 bgt.n 818a + 8134: 4573 cmp r3, lr + 8136: dcf8 bgt.n 812a } else if(newValue - 819c: e7ef b.n 817e + 8138: 4563 cmp r3, ip + 813a: dae3 bge.n 8104 + 813c: e7ef b.n 811e t_max = BMC_MAX_SETLISTS_SONG_PARTS-1; - 819e: f04f 0e07 mov.w lr, #7 + 813e: f04f 0e07 mov.w lr, #7 t_min = 0; - 81a2: f04f 0c00 mov.w ip, #0 - 81a6: e7d4 b.n 8152 + 8142: f04f 0c00 mov.w ip, #0 + 8146: e7d4 b.n 80f2 -000081a8 : +00008148 : if(t_set < BMC_MAX_SETLISTS && presets.midi.globals.store.global.setLists[t_set].name != 0){ - 81a8: 2907 cmp r1, #7 + 8148: 2907 cmp r1, #7 void getSetName(uint8_t t_set, char * str){ - 81aa: 460b mov r3, r1 - 81ac: 4694 mov ip, r2 - 81ae: b570 push {r4, r5, r6, lr} - 81b0: b08a sub sp, #40 ; 0x28 + 814a: 460b mov r3, r1 + 814c: 4694 mov ip, r2 + 814e: b570 push {r4, r5, r6, lr} + 8150: b08a sub sp, #40 ; 0x28 if(t_set < BMC_MAX_SETLISTS && presets.midi.globals.store.global.setLists[t_set].name != 0){ - 81b2: d80c bhi.n 81ce - 81b4: 6802 ldr r2, [r0, #0] - 81b6: eb01 01c1 add.w r1, r1, r1, lsl #3 - 81ba: f241 14ad movw r4, #4525 ; 0x11ad - 81be: 6812 ldr r2, [r2, #0] - 81c0: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 81c4: 6812 ldr r2, [r2, #0] - 81c6: eb02 0141 add.w r1, r2, r1, lsl #1 - 81ca: 5d09 ldrb r1, [r1, r4] - 81cc: b959 cbnz r1, 81e6 + 8152: d80c bhi.n 816e + 8154: 6802 ldr r2, [r0, #0] + 8156: eb01 01c1 add.w r1, r1, r1, lsl #3 + 815a: f241 14ad movw r4, #4525 ; 0x11ad + 815e: 6812 ldr r2, [r2, #0] + 8160: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 8164: 6812 ldr r2, [r2, #0] + 8166: eb02 0141 add.w r1, r2, r1, lsl #1 + 816a: 5d09 ldrb r1, [r1, r4] + 816c: b959 cbnz r1, 8186 sprintf(str, "Set # %02u", t_set+midi.globals.offset); - 81ce: 6842 ldr r2, [r0, #4] - 81d0: 4660 mov r0, ip - 81d2: 4920 ldr r1, [pc, #128] ; (8254 ) - 81d4: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 81d8: 7a12 ldrb r2, [r2, #8] - 81da: 441a add r2, r3 - } - 81dc: b00a add sp, #40 ; 0x28 - 81de: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 816e: 6842 ldr r2, [r0, #4] + 8170: 4660 mov r0, ip + 8172: 4920 ldr r1, [pc, #128] ; (81f4 ) + 8174: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 8178: 7a12 ldrb r2, [r2, #8] + 817a: 441a add r2, r3 + } + 817c: b00a add sp, #40 ; 0x28 + 817e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} sprintf(str, "Set # %02u", t_set+midi.globals.offset); - 81e2: f025 bfd3 b.w 2e18c + 8182: f026 b877 b.w 2e274 bmcStoreName t; - 81e6: 2300 movs r3, #0 + 8186: 2300 movs r3, #0 if(n > 0 && n <= BMC_MAX_NAMES_LIBRARY){ - 81e8: 3901 subs r1, #1 + 8188: 3901 subs r1, #1 bmcStoreName t; - 81ea: e9cd 3300 strd r3, r3, [sp] - 81ee: e9cd 3302 strd r3, r3, [sp, #8] - 81f2: f88d 3010 strb.w r3, [sp, #16] + 818a: e9cd 3300 strd r3, r3, [sp] + 818e: e9cd 3302 strd r3, r3, [sp, #8] + 8192: f88d 3010 strb.w r3, [sp, #16] if(n > 0 && n <= BMC_MAX_NAMES_LIBRARY){ - 81f6: b28b uxth r3, r1 - 81f8: 2b7f cmp r3, #127 ; 0x7f - 81fa: d820 bhi.n 823e + 8196: b28b uxth r3, r1 + 8198: 2b7f cmp r3, #127 ; 0x7f + 819a: d820 bhi.n 81de return store.global.names[n-1]; - 81fc: eb01 1101 add.w r1, r1, r1, lsl #4 - 8200: ac05 add r4, sp, #20 - 8202: 466e mov r6, sp - 8204: eb02 0e01 add.w lr, r2, r1 - 8208: 4625 mov r5, r4 - 820a: f8de 3684 ldr.w r3, [lr, #1668] ; 0x684 - 820e: f8de 0678 ldr.w r0, [lr, #1656] ; 0x678 - 8212: f8de 167c ldr.w r1, [lr, #1660] ; 0x67c - 8216: f8de 2680 ldr.w r2, [lr, #1664] ; 0x680 - 821a: c50f stmia r5!, {r0, r1, r2, r3} - 821c: f89e 3688 ldrb.w r3, [lr, #1672] ; 0x688 - 8220: 702b strb r3, [r5, #0] + 819c: eb01 1101 add.w r1, r1, r1, lsl #4 + 81a0: ac05 add r4, sp, #20 + 81a2: 466e mov r6, sp + 81a4: eb02 0e01 add.w lr, r2, r1 + 81a8: 4625 mov r5, r4 + 81aa: f8de 3684 ldr.w r3, [lr, #1668] ; 0x684 + 81ae: f8de 0678 ldr.w r0, [lr, #1656] ; 0x678 + 81b2: f8de 167c ldr.w r1, [lr, #1660] ; 0x67c + 81b6: f8de 2680 ldr.w r2, [lr, #1664] ; 0x680 + 81ba: c50f stmia r5!, {r0, r1, r2, r3} + 81bc: f89e 3688 ldrb.w r3, [lr, #1672] ; 0x688 + 81c0: 702b strb r3, [r5, #0] t = presets.midi.globals.getDeviceName(presets.midi.globals.store.global.setLists[t_set].name); - 8222: 46a6 mov lr, r4 - 8224: 4634 mov r4, r6 - 8226: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 822a: c40f stmia r4!, {r0, r1, r2, r3} - 822c: f8de 3000 ldr.w r3, [lr] + 81c2: 46a6 mov lr, r4 + 81c4: 4634 mov r4, r6 + 81c6: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 81ca: c40f stmia r4!, {r0, r1, r2, r3} + 81cc: f8de 3000 ldr.w r3, [lr] strcpy(str, t.name); - 8230: 4631 mov r1, r6 - 8232: 4660 mov r0, ip + 81d0: 4631 mov r1, r6 + 81d2: 4660 mov r0, ip t = presets.midi.globals.getDeviceName(presets.midi.globals.store.global.setLists[t_set].name); - 8234: 7023 strb r3, [r4, #0] + 81d4: 7023 strb r3, [r4, #0] strcpy(str, t.name); - 8236: f026 fba1 bl 2e97c + 81d6: f026 fc41 bl 2ea5c } - 823a: b00a add sp, #40 ; 0x28 - 823c: bd70 pop {r4, r5, r6, pc} + 81da: b00a add sp, #40 ; 0x28 + 81dc: bd70 pop {r4, r5, r6, pc} return t; - 823e: 466e mov r6, sp - 8240: ac05 add r4, sp, #20 - 8242: 4635 mov r5, r6 - 8244: 46a6 mov lr, r4 - 8246: cd0f ldmia r5!, {r0, r1, r2, r3} - 8248: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} - 824c: 682b ldr r3, [r5, #0] - 824e: f88e 3000 strb.w r3, [lr] - 8252: e7e6 b.n 8222 - 8254: 2000177c .word 0x2000177c - -00008258 : + 81de: 466e mov r6, sp + 81e0: ac05 add r4, sp, #20 + 81e2: 4635 mov r5, r6 + 81e4: 46a6 mov lr, r4 + 81e6: cd0f ldmia r5!, {r0, r1, r2, r3} + 81e8: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} + 81ec: 682b ldr r3, [r5, #0] + 81ee: f88e 3000 strb.w r3, [lr] + 81f2: e7e6 b.n 81c2 + 81f4: 2000177c .word 0x2000177c + +000081f8 : void getSongName(uint8_t t_song, char * str){ - 8258: 4694 mov ip, r2 + 81f8: 4694 mov ip, r2 if(presets.midi.globals.store.global.setLists[setList].settings[0] > t_song){ - 825a: 6802 ldr r2, [r0, #0] - 825c: 6883 ldr r3, [r0, #8] - 825e: 6812 ldr r2, [r2, #0] + 81fa: 6802 ldr r2, [r0, #0] + 81fc: 6883 ldr r3, [r0, #8] + 81fe: 6812 ldr r2, [r2, #0] void getSongName(uint8_t t_song, char * str){ - 8260: b530 push {r4, r5, lr} + 8200: b530 push {r4, r5, lr} if(presets.midi.globals.store.global.setLists[setList].settings[0] > t_song){ - 8262: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 8202: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 void getSongName(uint8_t t_song, char * str){ - 8266: 468e mov lr, r1 + 8206: 468e mov lr, r1 if(presets.midi.globals.store.global.setLists[setList].settings[0] > t_song){ - 8268: 781b ldrb r3, [r3, #0] - 826a: f241 11ae movw r1, #4526 ; 0x11ae - 826e: 6812 ldr r2, [r2, #0] + 8208: 781b ldrb r3, [r3, #0] + 820a: f241 11ae movw r1, #4526 ; 0x11ae + 820e: 6812 ldr r2, [r2, #0] void getSongName(uint8_t t_song, char * str){ - 8270: b08b sub sp, #44 ; 0x2c + 8210: b08b sub sp, #44 ; 0x2c if(presets.midi.globals.store.global.setLists[setList].settings[0] > t_song){ - 8272: eb03 03c3 add.w r3, r3, r3, lsl #3 - 8276: eb02 0343 add.w r3, r2, r3, lsl #1 - 827a: 5c59 ldrb r1, [r3, r1] - 827c: 4571 cmp r1, lr - 827e: d90d bls.n 829c + 8212: eb03 03c3 add.w r3, r3, r3, lsl #3 + 8216: eb02 0343 add.w r3, r2, r3, lsl #1 + 821a: 5c59 ldrb r1, [r3, r1] + 821c: 4571 cmp r1, lr + 821e: d90d bls.n 823c uint16_t s = presets.midi.globals.store.global.setLists[setList].events[t_song]-1; - 8280: f241 11af movw r1, #4527 ; 0x11af - 8284: 4473 add r3, lr - 8286: 5c5b ldrb r3, [r3, r1] + 8220: f241 11af movw r1, #4527 ; 0x11af + 8224: 4473 add r3, lr + 8226: 5c5b ldrb r3, [r3, r1] if(presets.midi.globals.store.global.songLibrary[s].name != 0){ - 8288: f241 213d movw r1, #4669 ; 0x123d + 8228: f241 213d movw r1, #4669 ; 0x123d uint16_t s = presets.midi.globals.store.global.setLists[setList].events[t_song]-1; - 828c: 3b01 subs r3, #1 + 822c: 3b01 subs r3, #1 if(presets.midi.globals.store.global.songLibrary[s].name != 0){ - 828e: b29b uxth r3, r3 - 8290: eb03 0383 add.w r3, r3, r3, lsl #2 - 8294: eb02 0343 add.w r3, r2, r3, lsl #1 - 8298: 5c5b ldrb r3, [r3, r1] - 829a: b95b cbnz r3, 82b4 + 822e: b29b uxth r3, r3 + 8230: eb03 0383 add.w r3, r3, r3, lsl #2 + 8234: eb02 0343 add.w r3, r2, r3, lsl #1 + 8238: 5c5b ldrb r3, [r3, r1] + 823a: b95b cbnz r3, 8254 sprintf(str, "Song # %02u", t_song+midi.globals.offset); - 829c: 6843 ldr r3, [r0, #4] - 829e: 4660 mov r0, ip - 82a0: 491b ldr r1, [pc, #108] ; (8310 ) - 82a2: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 82a6: 7a1a ldrb r2, [r3, #8] - 82a8: 4472 add r2, lr - } - 82aa: b00b add sp, #44 ; 0x2c - 82ac: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 823c: 6843 ldr r3, [r0, #4] + 823e: 4660 mov r0, ip + 8240: 491b ldr r1, [pc, #108] ; (82b0 ) + 8242: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 8246: 7a1a ldrb r2, [r3, #8] + 8248: 4472 add r2, lr + } + 824a: b00b add sp, #44 ; 0x2c + 824c: e8bd 4030 ldmia.w sp!, {r4, r5, lr} sprintf(str, "Song # %02u", t_song+midi.globals.offset); - 82b0: f025 bf6c b.w 2e18c + 8250: f026 b810 b.w 2e274 bmcStoreName t; - 82b4: 2100 movs r1, #0 + 8254: 2100 movs r1, #0 if(n > 0 && n <= BMC_MAX_NAMES_LIBRARY){ - 82b6: 3b01 subs r3, #1 + 8256: 3b01 subs r3, #1 bmcStoreName t; - 82b8: e9cd 1105 strd r1, r1, [sp, #20] - 82bc: e9cd 1107 strd r1, r1, [sp, #28] - 82c0: f88d 1024 strb.w r1, [sp, #36] ; 0x24 + 8258: e9cd 1105 strd r1, r1, [sp, #20] + 825c: e9cd 1107 strd r1, r1, [sp, #28] + 8260: f88d 1024 strb.w r1, [sp, #36] ; 0x24 if(n > 0 && n <= BMC_MAX_NAMES_LIBRARY){ - 82c4: b299 uxth r1, r3 - 82c6: 297f cmp r1, #127 ; 0x7f - 82c8: d817 bhi.n 82fa + 8264: b299 uxth r1, r3 + 8266: 297f cmp r1, #127 ; 0x7f + 8268: d817 bhi.n 829a return store.global.names[n-1]; - 82ca: eb03 1303 add.w r3, r3, r3, lsl #4 - 82ce: 466d mov r5, sp - 82d0: eb02 0e03 add.w lr, r2, r3 - 82d4: 462c mov r4, r5 - 82d6: f8de 3684 ldr.w r3, [lr, #1668] ; 0x684 - 82da: f8de 0678 ldr.w r0, [lr, #1656] ; 0x678 - 82de: f8de 167c ldr.w r1, [lr, #1660] ; 0x67c - 82e2: f8de 2680 ldr.w r2, [lr, #1664] ; 0x680 - 82e6: c40f stmia r4!, {r0, r1, r2, r3} - 82e8: f89e 3688 ldrb.w r3, [lr, #1672] ; 0x688 - 82ec: 7023 strb r3, [r4, #0] + 826a: eb03 1303 add.w r3, r3, r3, lsl #4 + 826e: 466d mov r5, sp + 8270: eb02 0e03 add.w lr, r2, r3 + 8274: 462c mov r4, r5 + 8276: f8de 3684 ldr.w r3, [lr, #1668] ; 0x684 + 827a: f8de 0678 ldr.w r0, [lr, #1656] ; 0x678 + 827e: f8de 167c ldr.w r1, [lr, #1660] ; 0x67c + 8282: f8de 2680 ldr.w r2, [lr, #1664] ; 0x680 + 8286: c40f stmia r4!, {r0, r1, r2, r3} + 8288: f89e 3688 ldrb.w r3, [lr, #1672] ; 0x688 + 828c: 7023 strb r3, [r4, #0] strcpy(str, t.name); - 82ee: 4629 mov r1, r5 - 82f0: 4660 mov r0, ip - 82f2: f026 fb43 bl 2e97c + 828e: 4629 mov r1, r5 + 8290: 4660 mov r0, ip + 8292: f026 fbe3 bl 2ea5c } - 82f6: b00b add sp, #44 ; 0x2c - 82f8: bd30 pop {r4, r5, pc} + 8296: b00b add sp, #44 ; 0x2c + 8298: bd30 pop {r4, r5, pc} return t; - 82fa: 466d mov r5, sp - 82fc: ac05 add r4, sp, #20 - 82fe: 46ae mov lr, r5 - 8300: cc0f ldmia r4!, {r0, r1, r2, r3} - 8302: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} - 8306: 6823 ldr r3, [r4, #0] - 8308: f88e 3000 strb.w r3, [lr] - 830c: e7ef b.n 82ee - 830e: bf00 nop - 8310: 20001794 .word 0x20001794 - -00008314 : + 829a: 466d mov r5, sp + 829c: ac05 add r4, sp, #20 + 829e: 46ae mov lr, r5 + 82a0: cc0f ldmia r4!, {r0, r1, r2, r3} + 82a2: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} + 82a6: 6823 ldr r3, [r4, #0] + 82a8: f88e 3000 strb.w r3, [lr] + 82ac: e7ef b.n 828e + 82ae: bf00 nop + 82b0: 20001794 .word 0x20001794 + +000082b4 : if(songInLibrary > BMC_MAX_SETLISTS_SONGS_LIBRARY){ - 8314: 6943 ldr r3, [r0, #20] + 82b4: 6943 ldr r3, [r0, #20] void getPartName(uint8_t t_part, char * str){ - 8316: 4684 mov ip, r0 + 82b6: 4684 mov ip, r0 if(songInLibrary > BMC_MAX_SETLISTS_SONGS_LIBRARY){ - 8318: 881b ldrh r3, [r3, #0] - 831a: 2b40 cmp r3, #64 ; 0x40 + 82b8: 881b ldrh r3, [r3, #0] + 82ba: 2b40 cmp r3, #64 ; 0x40 void getPartName(uint8_t t_part, char * str){ - 831c: b530 push {r4, r5, lr} - 831e: 4614 mov r4, r2 - 8320: b08b sub sp, #44 ; 0x2c - 8322: 468e mov lr, r1 - 8324: 6802 ldr r2, [r0, #0] + 82bc: b530 push {r4, r5, lr} + 82be: 4614 mov r4, r2 + 82c0: b08b sub sp, #44 ; 0x2c + 82c2: 468e mov lr, r1 + 82c4: 6802 ldr r2, [r0, #0] if(songInLibrary > BMC_MAX_SETLISTS_SONGS_LIBRARY){ - 8326: d81c bhi.n 8362 + 82c6: d81c bhi.n 8302 return presets.midi.globals.store.global.songLibrary[songInLibrary].settings[0] > 0; - 8328: 6812 ldr r2, [r2, #0] - 832a: eb03 0383 add.w r3, r3, r3, lsl #2 - 832e: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 8332: 6811 ldr r1, [r2, #0] - 8334: f241 223e movw r2, #4670 ; 0x123e - 8338: eb01 0343 add.w r3, r1, r3, lsl #1 - 833c: 5c9a ldrb r2, [r3, r2] + 82c8: 6812 ldr r2, [r2, #0] + 82ca: eb03 0383 add.w r3, r3, r3, lsl #2 + 82ce: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 82d2: 6811 ldr r1, [r2, #0] + 82d4: f241 223e movw r2, #4670 ; 0x123e + 82d8: eb01 0343 add.w r3, r1, r3, lsl #1 + 82dc: 5c9a ldrb r2, [r3, r2] if(songHasParts() && presets.midi.globals.store.global.songLibrary[songInLibrary].settings[0] > t_part){ - 833e: b182 cbz r2, 8362 - 8340: 4596 cmp lr, r2 - 8342: d20e bcs.n 8362 + 82de: b182 cbz r2, 8302 + 82e0: 4596 cmp lr, r2 + 82e2: d20e bcs.n 8302 uint16_t p = presets.midi.globals.store.global.songLibrary[songInLibrary].events[t_part]-1; - 8344: 4473 add r3, lr - 8346: f241 223f movw r2, #4671 ; 0x123f - 834a: 5c9b ldrb r3, [r3, r2] - 834c: 3b01 subs r3, #1 - 834e: b29b uxth r3, r3 + 82e4: 4473 add r3, lr + 82e6: f241 223f movw r2, #4671 ; 0x123f + 82ea: 5c9b ldrb r3, [r3, r2] + 82ec: 3b01 subs r3, #1 + 82ee: b29b uxth r3, r3 if(p < BMC_MAX_PRESETS && presets.midi.globals.store.global.presets[p].name != 0){ - 8350: 2b3f cmp r3, #63 ; 0x3f - 8352: d806 bhi.n 8362 - 8354: eb03 0383 add.w r3, r3, r3, lsl #2 - 8358: eb01 0343 add.w r3, r1, r3, lsl #1 - 835c: f893 3f2d ldrb.w r3, [r3, #3885] ; 0xf2d - 8360: b963 cbnz r3, 837c + 82f0: 2b3f cmp r3, #63 ; 0x3f + 82f2: d806 bhi.n 8302 + 82f4: eb03 0383 add.w r3, r3, r3, lsl #2 + 82f8: eb01 0343 add.w r3, r1, r3, lsl #1 + 82fc: f893 3f2d ldrb.w r3, [r3, #3885] ; 0xf2d + 8300: b963 cbnz r3, 831c sprintf(str, "Part # %02u", t_part+midi.globals.offset); - 8362: f8dc 3004 ldr.w r3, [ip, #4] - 8366: 4620 mov r0, r4 - 8368: 491d ldr r1, [pc, #116] ; (83e0 ) - 836a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 836e: 7a1a ldrb r2, [r3, #8] - 8370: 4472 add r2, lr - } - 8372: b00b add sp, #44 ; 0x2c - 8374: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 8302: f8dc 3004 ldr.w r3, [ip, #4] + 8306: 4620 mov r0, r4 + 8308: 491d ldr r1, [pc, #116] ; (8380 ) + 830a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 830e: 7a1a ldrb r2, [r3, #8] + 8310: 4472 add r2, lr + } + 8312: b00b add sp, #44 ; 0x2c + 8314: e8bd 4030 ldmia.w sp!, {r4, r5, lr} sprintf(str, "Part # %02u", t_part+midi.globals.offset); - 8378: f025 bf08 b.w 2e18c + 8318: f025 bfac b.w 2e274 bmcStoreName t; - 837c: 2200 movs r2, #0 + 831c: 2200 movs r2, #0 if(n > 0 && n <= BMC_MAX_NAMES_LIBRARY){ - 837e: 3b01 subs r3, #1 + 831e: 3b01 subs r3, #1 bmcStoreName t; - 8380: e9cd 2205 strd r2, r2, [sp, #20] - 8384: e9cd 2207 strd r2, r2, [sp, #28] - 8388: f88d 2024 strb.w r2, [sp, #36] ; 0x24 + 8320: e9cd 2205 strd r2, r2, [sp, #20] + 8324: e9cd 2207 strd r2, r2, [sp, #28] + 8328: f88d 2024 strb.w r2, [sp, #36] ; 0x24 if(n > 0 && n <= BMC_MAX_NAMES_LIBRARY){ - 838c: b29a uxth r2, r3 - 838e: 2a7f cmp r2, #127 ; 0x7f - 8390: d819 bhi.n 83c6 + 832c: b29a uxth r2, r3 + 832e: 2a7f cmp r2, #127 ; 0x7f + 8330: d819 bhi.n 8366 return store.global.names[n-1]; - 8392: eb03 1303 add.w r3, r3, r3, lsl #4 - 8396: 466d mov r5, sp - 8398: eb01 0c03 add.w ip, r1, r3 - 839c: 46ae mov lr, r5 - 839e: f8dc 3684 ldr.w r3, [ip, #1668] ; 0x684 - 83a2: f8dc 0678 ldr.w r0, [ip, #1656] ; 0x678 - 83a6: f8dc 167c ldr.w r1, [ip, #1660] ; 0x67c - 83aa: f8dc 2680 ldr.w r2, [ip, #1664] ; 0x680 - 83ae: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} - 83b2: f89c 3688 ldrb.w r3, [ip, #1672] ; 0x688 - 83b6: f88e 3000 strb.w r3, [lr] + 8332: eb03 1303 add.w r3, r3, r3, lsl #4 + 8336: 466d mov r5, sp + 8338: eb01 0c03 add.w ip, r1, r3 + 833c: 46ae mov lr, r5 + 833e: f8dc 3684 ldr.w r3, [ip, #1668] ; 0x684 + 8342: f8dc 0678 ldr.w r0, [ip, #1656] ; 0x678 + 8346: f8dc 167c ldr.w r1, [ip, #1660] ; 0x67c + 834a: f8dc 2680 ldr.w r2, [ip, #1664] ; 0x680 + 834e: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} + 8352: f89c 3688 ldrb.w r3, [ip, #1672] ; 0x688 + 8356: f88e 3000 strb.w r3, [lr] strcpy(str, t.name); - 83ba: 4629 mov r1, r5 - 83bc: 4620 mov r0, r4 - 83be: f026 fadd bl 2e97c + 835a: 4629 mov r1, r5 + 835c: 4620 mov r0, r4 + 835e: f026 fb7d bl 2ea5c } - 83c2: b00b add sp, #44 ; 0x2c - 83c4: bd30 pop {r4, r5, pc} + 8362: b00b add sp, #44 ; 0x2c + 8364: bd30 pop {r4, r5, pc} return t; - 83c6: 466d mov r5, sp - 83c8: f10d 0e14 add.w lr, sp, #20 - 83cc: 46ac mov ip, r5 - 83ce: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 83d2: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - 83d6: f8de 3000 ldr.w r3, [lr] - 83da: f88c 3000 strb.w r3, [ip] - 83de: e7ec b.n 83ba - 83e0: 20001788 .word 0x20001788 - -000083e4 : + 8366: 466d mov r5, sp + 8368: f10d 0e14 add.w lr, sp, #20 + 836c: 46ac mov ip, r5 + 836e: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 8372: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 8376: f8de 3000 ldr.w r3, [lr] + 837a: f88c 3000 strb.w r3, [ip] + 837e: e7ec b.n 835a + 8380: 20001788 .word 0x20001788 + +00008384 : switch(cmd){ - 83e4: 2964 cmp r1, #100 ; 0x64 - 83e6: d866 bhi.n 84b6 - 83e8: e8df f011 tbh [pc, r1, lsl #1] - 83ec: 0261026e .word 0x0261026e - 83f0: 02470254 .word 0x02470254 - 83f4: 02420065 .word 0x02420065 - 83f8: 0238023d .word 0x0238023d - 83fc: 03320233 .word 0x03320233 - 8400: 0065032d .word 0x0065032d - 8404: 00650065 .word 0x00650065 - 8408: 03370065 .word 0x03370065 - 840c: 0065027b .word 0x0065027b - 8410: 00650065 .word 0x00650065 - 8414: 00650065 .word 0x00650065 - 8418: 00650065 .word 0x00650065 - 841c: 00650065 .word 0x00650065 - 8420: 00650065 .word 0x00650065 - 8424: 00650065 .word 0x00650065 - 8428: 00650065 .word 0x00650065 - 842c: 00650065 .word 0x00650065 - 8430: 00650065 .word 0x00650065 - 8434: 00650065 .word 0x00650065 - 8438: 03410065 .word 0x03410065 - 843c: 033c02f6 .word 0x033c02f6 - 8440: 030a0152 .word 0x030a0152 - 8444: 03000305 .word 0x03000305 - 8448: 006502fb .word 0x006502fb - 844c: 03140065 .word 0x03140065 - 8450: 0319030f .word 0x0319030f - 8454: 0323020e .word 0x0323020e - 8458: 0328031e .word 0x0328031e - 845c: 012f02cb .word 0x012f02cb - 8460: 0125012a .word 0x0125012a - 8464: 00650120 .word 0x00650120 - 8468: 00650065 .word 0x00650065 - 846c: 02de0065 .word 0x02de0065 - 8470: 006502d9 .word 0x006502d9 - 8474: 02d40065 .word 0x02d40065 - 8478: 02e302d0 .word 0x02e302d0 - 847c: 0221022e .word 0x0221022e - 8480: 02ad0213 .word 0x02ad0213 - 8484: 028f029e .word 0x028f029e - 8488: 02e80280 .word 0x02e80280 - 848c: 014302bc .word 0x014302bc - 8490: 01ff0134 .word 0x01ff0134 - 8494: 01e101f0 .word 0x01e101f0 - 8498: 01ab01c6 .word 0x01ab01c6 - 849c: 01720190 .word 0x01720190 - 84a0: 01050157 .word 0x01050157 - 84a4: 00cc00ea .word 0x00cc00ea - 84a8: 009400b0 .word 0x009400b0 - 84ac: 006c0079 .word 0x006c0079 - 84b0: 00650065 .word 0x00650065 - 84b4: 0067 .short 0x0067 - 84b6: 2000 movs r0, #0 - 84b8: 4770 bx lr + 8384: 2964 cmp r1, #100 ; 0x64 + 8386: d866 bhi.n 8456 + 8388: e8df f011 tbh [pc, r1, lsl #1] + 838c: 0261026e .word 0x0261026e + 8390: 02470254 .word 0x02470254 + 8394: 02420065 .word 0x02420065 + 8398: 0238023d .word 0x0238023d + 839c: 03320233 .word 0x03320233 + 83a0: 0065032d .word 0x0065032d + 83a4: 00650065 .word 0x00650065 + 83a8: 03370065 .word 0x03370065 + 83ac: 0065027b .word 0x0065027b + 83b0: 00650065 .word 0x00650065 + 83b4: 00650065 .word 0x00650065 + 83b8: 00650065 .word 0x00650065 + 83bc: 00650065 .word 0x00650065 + 83c0: 00650065 .word 0x00650065 + 83c4: 00650065 .word 0x00650065 + 83c8: 00650065 .word 0x00650065 + 83cc: 00650065 .word 0x00650065 + 83d0: 00650065 .word 0x00650065 + 83d4: 00650065 .word 0x00650065 + 83d8: 03410065 .word 0x03410065 + 83dc: 033c02f6 .word 0x033c02f6 + 83e0: 030a0152 .word 0x030a0152 + 83e4: 03000305 .word 0x03000305 + 83e8: 006502fb .word 0x006502fb + 83ec: 03140065 .word 0x03140065 + 83f0: 0319030f .word 0x0319030f + 83f4: 0323020e .word 0x0323020e + 83f8: 0328031e .word 0x0328031e + 83fc: 012f02cb .word 0x012f02cb + 8400: 0125012a .word 0x0125012a + 8404: 00650120 .word 0x00650120 + 8408: 00650065 .word 0x00650065 + 840c: 02de0065 .word 0x02de0065 + 8410: 006502d9 .word 0x006502d9 + 8414: 02d40065 .word 0x02d40065 + 8418: 02e302d0 .word 0x02e302d0 + 841c: 0221022e .word 0x0221022e + 8420: 02ad0213 .word 0x02ad0213 + 8424: 028f029e .word 0x028f029e + 8428: 02e80280 .word 0x02e80280 + 842c: 014302bc .word 0x014302bc + 8430: 01ff0134 .word 0x01ff0134 + 8434: 01e101f0 .word 0x01e101f0 + 8438: 01ab01c6 .word 0x01ab01c6 + 843c: 01720190 .word 0x01720190 + 8440: 01050157 .word 0x01050157 + 8444: 00cc00ea .word 0x00cc00ea + 8448: 009400b0 .word 0x009400b0 + 844c: 006c0079 .word 0x006c0079 + 8450: 00650065 .word 0x00650065 + 8454: 0067 .short 0x0067 + 8456: 2000 movs r0, #0 + 8458: 4770 bx lr return bitRead(flags, 0); - 84ba: f890 00d0 ldrb.w r0, [r0, #208] ; 0xd0 - 84be: f000 0001 and.w r0, r0, #1 + 845a: f890 00d0 ldrb.w r0, [r0, #208] ; 0xd0 + 845e: f000 0001 and.w r0, r0, #1 case BMC_DAW_CMD_SYNCED: return controller.isOnline(); - 84c2: 4770 bx lr + 8462: 4770 bx lr } uint8_t getVPot(uint8_t n){ return chAllowed(n) ? channel[chCheck(n)].getVPot() : 0; } uint8_t getVPotCentered(uint8_t n){ return chAllowed(n) ? channel[chCheck(n)].getVPotCentered() : 0; - 84c4: 2a08 cmp r2, #8 - 84c6: f200 82f5 bhi.w 8ab4 + 8464: 2a08 cmp r2, #8 + 8466: f200 82f5 bhi.w 8a54 uint8_t chCheck(uint8_t n){ return (n>=8) ? selected : n; - 84ca: bf08 it eq - 84cc: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 846a: bf08 it eq + 846c: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 return bitRead(vPot, 6); - 84d0: eb00 00c2 add.w r0, r0, r2, lsl #3 - 84d4: f890 00e0 ldrb.w r0, [r0, #224] ; 0xe0 + 8470: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8474: f890 00e0 ldrb.w r0, [r0, #224] ; 0xe0 case BMC_DAW_CMD_VPOT_LED_CENTER: return controller.getVPotCentered(ch); - 84d8: f3c0 1080 ubfx r0, r0, #6, #1 - 84dc: 4770 bx lr + 8478: f3c0 1080 ubfx r0, r0, #6, #1 + 847c: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 84de: 2a08 cmp r2, #8 - 84e0: f200 82fc bhi.w 8adc + 847e: 2a08 cmp r2, #8 + 8480: f200 82fc bhi.w 8a7c return (n>=8) ? selected : n; - 84e4: bf08 it eq - 84e6: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 - 84ea: eb00 00c2 add.w r0, r0, r2, lsl #3 - 84ee: f890 30e0 ldrb.w r3, [r0, #224] ; 0xe0 + 8484: bf08 it eq + 8486: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 848a: eb00 00c2 add.w r0, r0, r2, lsl #3 + 848e: f890 30e0 ldrb.w r3, [r0, #224] ; 0xe0 return (vPot>>4)&0x03; - 84f2: f3c3 1201 ubfx r2, r3, #4, #2 + 8492: f3c3 1201 ubfx r2, r3, #4, #2 return (ledN == value) ? value : 0; - 84f6: f003 030f and.w r3, r3, #15 + 8496: f003 030f and.w r3, r3, #15 switch(getVPotMode()){ - 84fa: 2a02 cmp r2, #2 - 84fc: f000 8369 beq.w 8bd2 - 8500: 2a03 cmp r2, #3 - 8502: f000 835f beq.w 8bc4 - 8506: 2a01 cmp r2, #1 - 8508: f000 8357 beq.w 8bba + 849a: 2a02 cmp r2, #2 + 849c: f000 8369 beq.w 8b72 + 84a0: 2a03 cmp r2, #3 + 84a2: f000 835f beq.w 8b64 + 84a6: 2a01 cmp r2, #1 + 84a8: f000 8357 beq.w 8b5a return (ledN == value) ? value : 0; - 850c: 3b0b subs r3, #11 - 850e: 4258 negs r0, r3 - 8510: 4158 adcs r0, r3 - 8512: 4770 bx lr + 84ac: 3b0b subs r3, #11 + 84ae: 4258 negs r0, r3 + 84b0: 4158 adcs r0, r3 + 84b2: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 8514: 2a08 cmp r2, #8 - 8516: f200 82e3 bhi.w 8ae0 + 84b4: 2a08 cmp r2, #8 + 84b6: f200 82e3 bhi.w 8a80 return (n>=8) ? selected : n; - 851a: bf08 it eq - 851c: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 - 8520: eb00 00c2 add.w r0, r0, r2, lsl #3 - 8524: f890 30e0 ldrb.w r3, [r0, #224] ; 0xe0 + 84ba: bf08 it eq + 84bc: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 84c0: eb00 00c2 add.w r0, r0, r2, lsl #3 + 84c4: f890 30e0 ldrb.w r3, [r0, #224] ; 0xe0 return (vPot>>4)&0x03; - 8528: f3c3 1201 ubfx r2, r3, #4, #2 + 84c8: f3c3 1201 ubfx r2, r3, #4, #2 return (ledN == value) ? value : 0; - 852c: f003 030f and.w r3, r3, #15 + 84cc: f003 030f and.w r3, r3, #15 switch(getVPotMode()){ - 8530: 2a02 cmp r2, #2 - 8532: f000 8304 beq.w 8b3e - 8536: 2a03 cmp r2, #3 - 8538: f000 82e5 beq.w 8b06 - 853c: 2a01 cmp r2, #1 - 853e: f000 82dd beq.w 8afc + 84d0: 2a02 cmp r2, #2 + 84d2: f000 8304 beq.w 8ade + 84d6: 2a03 cmp r2, #3 + 84d8: f000 82e5 beq.w 8aa6 + 84dc: 2a01 cmp r2, #1 + 84de: f000 82dd beq.w 8a9c return (ledN == value) ? value : 0; - 8542: f1a3 020a sub.w r2, r3, #10 - 8546: 4250 negs r0, r2 - 8548: 4150 adcs r0, r2 - 854a: 4770 bx lr + 84e2: f1a3 020a sub.w r2, r3, #10 + 84e6: 4250 negs r0, r2 + 84e8: 4150 adcs r0, r2 + 84ea: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 854c: 2a08 cmp r2, #8 - 854e: f200 82c3 bhi.w 8ad8 + 84ec: 2a08 cmp r2, #8 + 84ee: f200 82c3 bhi.w 8a78 return (n>=8) ? selected : n; - 8552: bf08 it eq - 8554: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 - 8558: eb00 00c2 add.w r0, r0, r2, lsl #3 - 855c: f890 30e0 ldrb.w r3, [r0, #224] ; 0xe0 + 84f2: bf08 it eq + 84f4: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 84f8: eb00 00c2 add.w r0, r0, r2, lsl #3 + 84fc: f890 30e0 ldrb.w r3, [r0, #224] ; 0xe0 return (vPot>>4)&0x03; - 8560: f3c3 1201 ubfx r2, r3, #4, #2 + 8500: f3c3 1201 ubfx r2, r3, #4, #2 return (ledN == value) ? value : 0; - 8564: f003 030f and.w r3, r3, #15 + 8504: f003 030f and.w r3, r3, #15 switch(getVPotMode()){ - 8568: 2a02 cmp r2, #2 - 856a: f000 8321 beq.w 8bb0 - 856e: 2a03 cmp r2, #3 - 8570: f000 834c beq.w 8c0c - 8574: 2a01 cmp r2, #1 - 8576: f000 8344 beq.w 8c02 + 8508: 2a02 cmp r2, #2 + 850a: f000 8321 beq.w 8b50 + 850e: 2a03 cmp r2, #3 + 8510: f000 834c beq.w 8bac + 8514: 2a01 cmp r2, #1 + 8516: f000 8344 beq.w 8ba2 return (ledN == value) ? value : 0; - 857a: f1a3 0109 sub.w r1, r3, #9 - 857e: 4248 negs r0, r1 - 8580: 4148 adcs r0, r1 - 8582: 4770 bx lr + 851a: f1a3 0109 sub.w r1, r3, #9 + 851e: 4248 negs r0, r1 + 8520: 4148 adcs r0, r1 + 8522: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 8584: 2a08 cmp r2, #8 - 8586: f200 82a5 bhi.w 8ad4 + 8524: 2a08 cmp r2, #8 + 8526: f200 82a5 bhi.w 8a74 return (n>=8) ? selected : n; - 858a: bf08 it eq - 858c: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 - 8590: eb00 00c2 add.w r0, r0, r2, lsl #3 - 8594: f890 00e0 ldrb.w r0, [r0, #224] ; 0xe0 + 852a: bf08 it eq + 852c: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 8530: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8534: f890 00e0 ldrb.w r0, [r0, #224] ; 0xe0 return (vPot>>4)&0x03; - 8598: f3c0 1301 ubfx r3, r0, #4, #2 + 8538: f3c0 1301 ubfx r3, r0, #4, #2 switch(getVPotMode()){ - 859c: 2b02 cmp r3, #2 - 859e: f000 8375 beq.w 8c8c - 85a2: 2b03 cmp r3, #3 - 85a4: f000 8360 beq.w 8c68 - 85a8: 2b01 cmp r3, #1 - 85aa: f000 8355 beq.w 8c58 + 853c: 2b02 cmp r3, #2 + 853e: f000 8375 beq.w 8c2c + 8542: 2b03 cmp r3, #3 + 8544: f000 8360 beq.w 8c08 + 8548: 2b01 cmp r3, #1 + 854a: f000 8355 beq.w 8bf8 return (ledN == value) ? value : 0; - 85ae: f000 000f and.w r0, r0, #15 + 854e: f000 000f and.w r0, r0, #15 case BMC_DAW_CMD_VPOT_LED_8: return controller.getVPotValue(ch, 8)>0; - 85b2: f1a0 0c08 sub.w ip, r0, #8 - 85b6: f1dc 0000 rsbs r0, ip, #0 - 85ba: eb40 000c adc.w r0, r0, ip - 85be: 4770 bx lr + 8552: f1a0 0c08 sub.w ip, r0, #8 + 8556: f1dc 0000 rsbs r0, ip, #0 + 855a: eb40 000c adc.w r0, r0, ip + 855e: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 85c0: 2a08 cmp r2, #8 - 85c2: f200 828f bhi.w 8ae4 + 8560: 2a08 cmp r2, #8 + 8562: f200 828f bhi.w 8a84 return (n>=8) ? selected : n; - 85c6: bf08 it eq - 85c8: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 - 85cc: eb00 00c2 add.w r0, r0, r2, lsl #3 - 85d0: f890 30e0 ldrb.w r3, [r0, #224] ; 0xe0 + 8566: bf08 it eq + 8568: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 856c: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8570: f890 30e0 ldrb.w r3, [r0, #224] ; 0xe0 return (vPot>>4)&0x03; - 85d4: f3c3 1201 ubfx r2, r3, #4, #2 + 8574: f3c3 1201 ubfx r2, r3, #4, #2 return (ledN == value) ? value : 0; - 85d8: f003 030f and.w r3, r3, #15 + 8578: f003 030f and.w r3, r3, #15 switch(getVPotMode()){ - 85dc: 2a02 cmp r2, #2 - 85de: f000 82c1 beq.w 8b64 - 85e2: 2a03 cmp r2, #3 - 85e4: f000 82b5 beq.w 8b52 - 85e8: 2a01 cmp r2, #1 - 85ea: f000 82ad beq.w 8b48 + 857c: 2a02 cmp r2, #2 + 857e: f000 82c1 beq.w 8b04 + 8582: 2a03 cmp r2, #3 + 8584: f000 82b5 beq.w 8af2 + 8588: 2a01 cmp r2, #1 + 858a: f000 82ad beq.w 8ae8 return (ledN == value) ? value : 0; - 85ee: 3b07 subs r3, #7 - 85f0: 4258 negs r0, r3 - 85f2: 4158 adcs r0, r3 - 85f4: 4770 bx lr + 858e: 3b07 subs r3, #7 + 8590: 4258 negs r0, r3 + 8592: 4158 adcs r0, r3 + 8594: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 85f6: 2a08 cmp r2, #8 - 85f8: f200 8256 bhi.w 8aa8 + 8596: 2a08 cmp r2, #8 + 8598: f200 8256 bhi.w 8a48 return (n>=8) ? selected : n; - 85fc: bf08 it eq - 85fe: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 - 8602: eb00 00c2 add.w r0, r0, r2, lsl #3 - 8606: f890 00e0 ldrb.w r0, [r0, #224] ; 0xe0 + 859c: bf08 it eq + 859e: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 85a2: eb00 00c2 add.w r0, r0, r2, lsl #3 + 85a6: f890 00e0 ldrb.w r0, [r0, #224] ; 0xe0 return (vPot>>4)&0x03; - 860a: f3c0 1301 ubfx r3, r0, #4, #2 + 85aa: f3c0 1301 ubfx r3, r0, #4, #2 switch(getVPotMode()){ - 860e: 2b02 cmp r3, #2 - 8610: f000 82ad beq.w 8b6e - 8614: 2b03 cmp r3, #3 - 8616: f000 8341 beq.w 8c9c - 861a: 2b01 cmp r3, #1 - 861c: f000 8317 beq.w 8c4e + 85ae: 2b02 cmp r3, #2 + 85b0: f000 82ad beq.w 8b0e + 85b4: 2b03 cmp r3, #3 + 85b6: f000 8341 beq.w 8c3c + 85ba: 2b01 cmp r3, #1 + 85bc: f000 8317 beq.w 8bee return (ledN == value) ? value : 0; - 8620: f000 000f and.w r0, r0, #15 - 8624: 1f82 subs r2, r0, #6 - 8626: 4250 negs r0, r2 - 8628: 4150 adcs r0, r2 - 862a: 4770 bx lr + 85c0: f000 000f and.w r0, r0, #15 + 85c4: 1f82 subs r2, r0, #6 + 85c6: 4250 negs r0, r2 + 85c8: 4150 adcs r0, r2 + 85ca: 4770 bx lr bool getTransportRecord(){ return bitRead(states, 27); } - 862c: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8630: f3c0 60c0 ubfx r0, r0, #27, #1 + 85cc: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 85d0: f3c0 60c0 ubfx r0, r0, #27, #1 case BMC_DAW_CMD_TRANSPORT_REC: return controller.getTransportRecord(); - 8634: 4770 bx lr + 85d4: 4770 bx lr bool getTransportPlay(){ return bitRead(states, 26); } - 8636: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 863a: f3c0 6080 ubfx r0, r0, #26, #1 + 85d6: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 85da: f3c0 6080 ubfx r0, r0, #26, #1 case BMC_DAW_CMD_TRANSPORT_PLAY: return controller.getTransportPlay(); - 863e: 4770 bx lr + 85de: 4770 bx lr bool getTransportStop(){ return bitRead(states, 25); } - 8640: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8644: f3c0 6040 ubfx r0, r0, #25, #1 + 85e0: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 85e4: f3c0 6040 ubfx r0, r0, #25, #1 case BMC_DAW_CMD_TRANSPORT_STOP: return controller.getTransportStop(); - 8648: 4770 bx lr + 85e8: 4770 bx lr bool getTransportForward(){ return bitRead(states, 24); } - 864a: f890 00d7 ldrb.w r0, [r0, #215] ; 0xd7 - 864e: f000 0001 and.w r0, r0, #1 + 85ea: f890 00d7 ldrb.w r0, [r0, #215] ; 0xd7 + 85ee: f000 0001 and.w r0, r0, #1 case BMC_DAW_CMD_TRANSPORT_FORWARD: return controller.getTransportForward(); - 8652: 4770 bx lr + 85f2: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 8654: 2a08 cmp r2, #8 - 8656: f200 822f bhi.w 8ab8 + 85f4: 2a08 cmp r2, #8 + 85f6: f200 822f bhi.w 8a58 return (n>=8) ? selected : n; - 865a: bf08 it eq - 865c: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 85fa: bf08 it eq + 85fc: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 8660: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8600: eb00 00c2 add.w r0, r0, r2, lsl #3 case BMC_DAW_CMD_METER_LED_12: return controller.getMeter(ch, 12)>0; - 8664: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 8668: 2808 cmp r0, #8 - 866a: bf94 ite ls - 866c: 2000 movls r0, #0 - 866e: 2001 movhi r0, #1 - 8670: 4770 bx lr + 8604: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 8608: 2808 cmp r0, #8 + 860a: bf94 ite ls + 860c: 2000 movls r0, #0 + 860e: 2001 movhi r0, #1 + 8610: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 8672: 2a08 cmp r2, #8 - 8674: f200 8200 bhi.w 8a78 + 8612: 2a08 cmp r2, #8 + 8614: f200 8200 bhi.w 8a18 return (n>=8) ? selected : n; - 8678: bf08 it eq - 867a: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 8618: bf08 it eq + 861a: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 867e: eb00 00c2 add.w r0, r0, r2, lsl #3 - 8682: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 8686: 2807 cmp r0, #7 - 8688: bf94 ite ls - 868a: 2000 movls r0, #0 - 868c: 2001 movhi r0, #1 - 868e: 4770 bx lr + 861e: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8622: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 8626: 2807 cmp r0, #7 + 8628: bf94 ite ls + 862a: 2000 movls r0, #0 + 862c: 2001 movhi r0, #1 + 862e: 4770 bx lr bool getAutomationTouch(){ return bitRead(states, 11); } - 8690: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8694: f3c0 20c0 ubfx r0, r0, #11, #1 + 8630: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8634: f3c0 20c0 ubfx r0, r0, #11, #1 case BMC_DAW_CMD_AUTOMATION_TOUCH: return controller.getAutomationTouch(); - 8698: 4770 bx lr + 8638: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 869a: 2a08 cmp r2, #8 - 869c: f200 8216 bhi.w 8acc + 863a: 2a08 cmp r2, #8 + 863c: f200 8216 bhi.w 8a6c return (n>=8) ? selected : n; - 86a0: bf08 it eq - 86a2: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 - 86a6: eb00 00c2 add.w r0, r0, r2, lsl #3 - 86aa: f890 30e0 ldrb.w r3, [r0, #224] ; 0xe0 + 8640: bf08 it eq + 8642: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 8646: eb00 00c2 add.w r0, r0, r2, lsl #3 + 864a: f890 30e0 ldrb.w r3, [r0, #224] ; 0xe0 return (vPot>>4)&0x03; - 86ae: f3c3 1201 ubfx r2, r3, #4, #2 + 864e: f3c3 1201 ubfx r2, r3, #4, #2 switch(getVPotMode()){ - 86b2: 2a02 cmp r2, #2 - 86b4: f000 8262 beq.w 8b7c - 86b8: 2a03 cmp r2, #3 - 86ba: f000 826e beq.w 8b9a - 86be: 2a01 cmp r2, #1 - 86c0: f000 8263 beq.w 8b8a + 8652: 2a02 cmp r2, #2 + 8654: f000 8262 beq.w 8b1c + 8658: 2a03 cmp r2, #3 + 865a: f000 826e beq.w 8b3a + 865e: 2a01 cmp r2, #1 + 8660: f000 8263 beq.w 8b2a return (ledN == value) ? value : 0; - 86c4: f003 030f and.w r3, r3, #15 - 86c8: 1f59 subs r1, r3, #5 - 86ca: 4248 negs r0, r1 - 86cc: 4148 adcs r0, r1 - 86ce: 4770 bx lr + 8664: f003 030f and.w r3, r3, #15 + 8668: 1f59 subs r1, r3, #5 + 866a: 4248 negs r0, r1 + 866c: 4148 adcs r0, r1 + 866e: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 86d0: 2a08 cmp r2, #8 - 86d2: f200 81fd bhi.w 8ad0 + 8670: 2a08 cmp r2, #8 + 8672: f200 81fd bhi.w 8a70 return (n>=8) ? selected : n; - 86d6: bf08 it eq - 86d8: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 - 86dc: eb00 00c2 add.w r0, r0, r2, lsl #3 - 86e0: f890 20e0 ldrb.w r2, [r0, #224] ; 0xe0 + 8676: bf08 it eq + 8678: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 867c: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8680: f890 20e0 ldrb.w r2, [r0, #224] ; 0xe0 return (vPot>>4)&0x03; - 86e4: f3c2 1301 ubfx r3, r2, #4, #2 + 8684: f3c2 1301 ubfx r3, r2, #4, #2 switch(getVPotMode()){ - 86e8: 2b02 cmp r3, #2 - 86ea: f000 8297 beq.w 8c1c - 86ee: 2b03 cmp r3, #3 - 86f0: f000 827c beq.w 8bec - 86f4: 2b01 cmp r3, #1 - 86f6: f000 8271 beq.w 8bdc + 8688: 2b02 cmp r3, #2 + 868a: f000 8297 beq.w 8bbc + 868e: 2b03 cmp r3, #3 + 8690: f000 827c beq.w 8b8c + 8694: 2b01 cmp r3, #1 + 8696: f000 8271 beq.w 8b7c return (ledN == value) ? value : 0; - 86fa: f002 020f and.w r2, r2, #15 + 869a: f002 020f and.w r2, r2, #15 case BMC_DAW_CMD_VPOT_LED_4: return controller.getVPotValue(ch, 4)>0; - 86fe: f1a2 0c04 sub.w ip, r2, #4 - 8702: f1dc 0000 rsbs r0, ip, #0 - 8706: eb40 000c adc.w r0, r0, ip - 870a: 4770 bx lr + 869e: f1a2 0c04 sub.w ip, r2, #4 + 86a2: f1dc 0000 rsbs r0, ip, #0 + 86a6: eb40 000c adc.w r0, r0, ip + 86aa: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 870c: 2a08 cmp r2, #8 - 870e: f200 81bf bhi.w 8a90 + 86ac: 2a08 cmp r2, #8 + 86ae: f200 81bf bhi.w 8a30 return (n>=8) ? selected : n; - 8712: bf08 it eq - 8714: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 - 8718: eb00 00c2 add.w r0, r0, r2, lsl #3 - 871c: f890 00e0 ldrb.w r0, [r0, #224] ; 0xe0 + 86b2: bf08 it eq + 86b4: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 86b8: eb00 00c2 add.w r0, r0, r2, lsl #3 + 86bc: f890 00e0 ldrb.w r0, [r0, #224] ; 0xe0 return (vPot>>4)&0x03; - 8720: f3c0 1301 ubfx r3, r0, #4, #2 + 86c0: f3c0 1301 ubfx r3, r0, #4, #2 switch(getVPotMode()){ - 8724: 2b02 cmp r3, #2 - 8726: f000 82c6 beq.w 8cb6 - 872a: 2b03 cmp r3, #3 - 872c: f000 82ca beq.w 8cc4 - 8730: 2b01 cmp r3, #1 - 8732: f000 82a3 beq.w 8c7c + 86c4: 2b02 cmp r3, #2 + 86c6: f000 82c6 beq.w 8c56 + 86ca: 2b03 cmp r3, #3 + 86cc: f000 82ca beq.w 8c64 + 86d0: 2b01 cmp r3, #1 + 86d2: f000 82a3 beq.w 8c1c return (ledN == value) ? value : 0; - 8736: f000 000f and.w r0, r0, #15 - 873a: 1ec3 subs r3, r0, #3 - 873c: 4258 negs r0, r3 - 873e: 4158 adcs r0, r3 - 8740: 4770 bx lr + 86d6: f000 000f and.w r0, r0, #15 + 86da: 1ec3 subs r3, r0, #3 + 86dc: 4258 negs r0, r3 + 86de: 4158 adcs r0, r3 + 86e0: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 8742: 2a08 cmp r2, #8 - 8744: f200 81d0 bhi.w 8ae8 + 86e2: 2a08 cmp r2, #8 + 86e4: f200 81d0 bhi.w 8a88 return (n>=8) ? selected : n; - 8748: bf08 it eq - 874a: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 - 874e: eb00 00c2 add.w r0, r0, r2, lsl #3 - 8752: f890 20e0 ldrb.w r2, [r0, #224] ; 0xe0 + 86e8: bf08 it eq + 86ea: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 86ee: eb00 00c2 add.w r0, r0, r2, lsl #3 + 86f2: f890 20e0 ldrb.w r2, [r0, #224] ; 0xe0 return (vPot>>4)&0x03; - 8756: f3c2 1301 ubfx r3, r2, #4, #2 + 86f6: f3c2 1301 ubfx r3, r2, #4, #2 switch(getVPotMode()){ - 875a: 2b02 cmp r3, #2 - 875c: f000 81c6 beq.w 8aec - 8760: 2b03 cmp r3, #3 - 8762: f000 81e1 beq.w 8b28 - 8766: 2b01 cmp r3, #1 - 8768: f000 81d6 beq.w 8b18 + 86fa: 2b02 cmp r3, #2 + 86fc: f000 81c6 beq.w 8a8c + 8700: 2b03 cmp r3, #3 + 8702: f000 81e1 beq.w 8ac8 + 8706: 2b01 cmp r3, #1 + 8708: f000 81d6 beq.w 8ab8 return (ledN == value) ? value : 0; - 876c: f002 020f and.w r2, r2, #15 + 870c: f002 020f and.w r2, r2, #15 case BMC_DAW_CMD_VPOT_LED_2: return controller.getVPotValue(ch, 2)>0; - 8770: 3a02 subs r2, #2 - 8772: 4250 negs r0, r2 - 8774: 4150 adcs r0, r2 - 8776: 4770 bx lr + 8710: 3a02 subs r2, #2 + 8712: 4250 negs r0, r2 + 8714: 4150 adcs r0, r2 + 8716: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 8778: 2a08 cmp r2, #8 - 877a: f200 818b bhi.w 8a94 + 8718: 2a08 cmp r2, #8 + 871a: f200 818b bhi.w 8a34 return (n>=8) ? selected : n; - 877e: bf08 it eq - 8780: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 - 8784: eb00 00c2 add.w r0, r0, r2, lsl #3 - 8788: f890 00e0 ldrb.w r0, [r0, #224] ; 0xe0 + 871e: bf08 it eq + 8720: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 8724: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8728: f890 00e0 ldrb.w r0, [r0, #224] ; 0xe0 return (vPot>>4)&0x03; - 878c: f3c0 1301 ubfx r3, r0, #4, #2 + 872c: f3c0 1301 ubfx r3, r0, #4, #2 switch(getVPotMode()){ - 8790: 2b02 cmp r3, #2 - 8792: f000 82a1 beq.w 8cd8 - 8796: 2b03 cmp r3, #3 - 8798: f000 8251 beq.w 8c3e - 879c: 2b01 cmp r3, #1 - 879e: f000 8246 beq.w 8c2e + 8730: 2b02 cmp r3, #2 + 8732: f000 82a1 beq.w 8c78 + 8736: 2b03 cmp r3, #3 + 8738: f000 8251 beq.w 8bde + 873c: 2b01 cmp r3, #1 + 873e: f000 8246 beq.w 8bce return (ledN == value) ? value : 0; - 87a2: f000 000f and.w r0, r0, #15 - 87a6: 1e41 subs r1, r0, #1 - 87a8: 4248 negs r0, r1 - 87aa: 4148 adcs r0, r1 - 87ac: 4770 bx lr + 8742: f000 000f and.w r0, r0, #15 + 8746: 1e41 subs r1, r0, #1 + 8748: 4248 negs r0, r1 + 874a: 4148 adcs r0, r1 + 874c: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 87ae: 2a08 cmp r2, #8 - 87b0: f200 8172 bhi.w 8a98 + 874e: 2a08 cmp r2, #8 + 8750: f200 8172 bhi.w 8a38 return (n>=8) ? selected : n; - 87b4: bf08 it eq - 87b6: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 8754: bf08 it eq + 8756: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 87ba: eb00 00c2 add.w r0, r0, r2, lsl #3 + 875a: eb00 00c2 add.w r0, r0, r2, lsl #3 case BMC_DAW_CMD_METER_LED_12: return controller.getMeter(ch, 12)>0; - 87be: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 87c2: 280b cmp r0, #11 - 87c4: bf94 ite ls - 87c6: 2000 movls r0, #0 - 87c8: 2001 movhi r0, #1 - 87ca: 4770 bx lr + 875e: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 8762: 280b cmp r0, #11 + 8764: bf94 ite ls + 8766: 2000 movls r0, #0 + 8768: 2001 movhi r0, #1 + 876a: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 87cc: 2a08 cmp r2, #8 - 87ce: f200 8165 bhi.w 8a9c + 876c: 2a08 cmp r2, #8 + 876e: f200 8165 bhi.w 8a3c return (n>=8) ? selected : n; - 87d2: bf08 it eq - 87d4: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 8772: bf08 it eq + 8774: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 87d8: eb00 00c2 add.w r0, r0, r2, lsl #3 - 87dc: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 87e0: 280a cmp r0, #10 - 87e2: bf94 ite ls - 87e4: 2000 movls r0, #0 - 87e6: 2001 movhi r0, #1 - 87e8: 4770 bx lr + 8778: eb00 00c2 add.w r0, r0, r2, lsl #3 + 877c: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 8780: 280a cmp r0, #10 + 8782: bf94 ite ls + 8784: 2000 movls r0, #0 + 8786: 2001 movhi r0, #1 + 8788: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 87ea: 2a08 cmp r2, #8 - 87ec: f200 814e bhi.w 8a8c + 878a: 2a08 cmp r2, #8 + 878c: f200 814e bhi.w 8a2c return (n>=8) ? selected : n; - 87f0: bf08 it eq - 87f2: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 8790: bf08 it eq + 8792: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 87f6: eb00 00c2 add.w r0, r0, r2, lsl #3 - 87fa: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 87fe: 2809 cmp r0, #9 - 8800: bf94 ite ls - 8802: 2000 movls r0, #0 - 8804: 2001 movhi r0, #1 - 8806: 4770 bx lr + 8796: eb00 00c2 add.w r0, r0, r2, lsl #3 + 879a: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 879e: 2809 cmp r0, #9 + 87a0: bf94 ite ls + 87a2: 2000 movls r0, #0 + 87a4: 2001 movhi r0, #1 + 87a6: 4770 bx lr bool getTransportDrop(){ return bitRead(states, 19); } - 8808: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 880c: f3c0 40c0 ubfx r0, r0, #19, #1 + 87a8: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 87ac: f3c0 40c0 ubfx r0, r0, #19, #1 case BMC_DAW_CMD_TRANSPORT_DROP: return controller.getTransportDrop(); - 8810: 4770 bx lr + 87b0: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 8812: 2a08 cmp r2, #8 - 8814: f200 8152 bhi.w 8abc + 87b2: 2a08 cmp r2, #8 + 87b4: f200 8152 bhi.w 8a5c return (n>=8) ? selected : n; - 8818: bf08 it eq - 881a: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 87b8: bf08 it eq + 87ba: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 881e: eb00 00c2 add.w r0, r0, r2, lsl #3 + 87be: eb00 00c2 add.w r0, r0, r2, lsl #3 case BMC_DAW_CMD_METER_LED_12: return controller.getMeter(ch, 12)>0; - 8822: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 8826: 3800 subs r0, #0 - 8828: bf18 it ne - 882a: 2001 movne r0, #1 - 882c: 4770 bx lr + 87c2: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 87c6: 3800 subs r0, #0 + 87c8: bf18 it ne + 87ca: 2001 movne r0, #1 + 87cc: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getOverload() : false; - 882e: 2a08 cmp r2, #8 - 8830: f200 8138 bhi.w 8aa4 + 87ce: 2a08 cmp r2, #8 + 87d0: f200 8138 bhi.w 8a44 return (n>=8) ? selected : n; - 8834: bf08 it eq - 8836: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 87d4: bf08 it eq + 87d6: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 return bitRead(flags, bit); - 883a: eb00 00c2 add.w r0, r0, r2, lsl #3 - 883e: f890 00e1 ldrb.w r0, [r0, #225] ; 0xe1 - 8842: f000 0001 and.w r0, r0, #1 - 8846: 4770 bx lr + 87da: eb00 00c2 add.w r0, r0, r2, lsl #3 + 87de: f890 00e1 ldrb.w r0, [r0, #225] ; 0xe1 + 87e2: f000 0001 and.w r0, r0, #1 + 87e6: 4770 bx lr bool getRelay(){ return bitRead(states2, 1); } - 8848: f890 00d8 ldrb.w r0, [r0, #216] ; 0xd8 - 884c: f3c0 0040 ubfx r0, r0, #1, #1 + 87e8: f890 00d8 ldrb.w r0, [r0, #216] ; 0xd8 + 87ec: f3c0 0040 ubfx r0, r0, #1, #1 case BMC_DAW_CMD_RELAY: return controller.getRelay(); - 8850: 4770 bx lr + 87f0: 4770 bx lr bool getAssignPlugin(){ return bitRead(states, 3); } - 8852: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8856: f3c0 00c0 ubfx r0, r0, #3, #1 + 87f2: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 87f6: f3c0 00c0 ubfx r0, r0, #3, #1 case BMC_DAW_CMD_ASSIGN_PLUGIN: return controller.getAssignPlugin(); - 885a: 4770 bx lr + 87fa: 4770 bx lr bool getAssignPan(){ return bitRead(states, 2); } - 885c: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8860: f3c0 0080 ubfx r0, r0, #2, #1 + 87fc: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8800: f3c0 0080 ubfx r0, r0, #2, #1 case BMC_DAW_CMD_ASSIGN_PAN: return controller.getAssignPan(); - 8864: 4770 bx lr + 8804: 4770 bx lr bool getAssignSend(){ return bitRead(states, 1); } - 8866: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 886a: f3c0 0040 ubfx r0, r0, #1, #1 + 8806: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 880a: f3c0 0040 ubfx r0, r0, #1, #1 case BMC_DAW_CMD_ASSIGN_SEND: return controller.getAssignSend(); - 886e: 4770 bx lr + 880e: 4770 bx lr bool getAssignTrack(){ return bitRead(states, 0); } - 8870: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8874: f000 0001 and.w r0, r0, #1 + 8810: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8814: f000 0001 and.w r0, r0, #1 case BMC_DAW_CMD_ASSIGN_TRACK: return controller.getAssignTrack(); - 8878: 4770 bx lr + 8818: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getSelectState() : 0; - 887a: 2a08 cmp r2, #8 - 887c: f200 8120 bhi.w 8ac0 + 881a: 2a08 cmp r2, #8 + 881c: f200 8120 bhi.w 8a60 return (n>=8) ? selected : n; - 8880: bf08 it eq - 8882: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 8820: bf08 it eq + 8822: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 bool getSelectState(){ return bitRead(states, 3);} - 8886: eb00 00c2 add.w r0, r0, r2, lsl #3 - 888a: f890 00dc ldrb.w r0, [r0, #220] ; 0xdc - 888e: f3c0 00c0 ubfx r0, r0, #3, #1 - 8892: 4770 bx lr + 8826: eb00 00c2 add.w r0, r0, r2, lsl #3 + 882a: f890 00dc ldrb.w r0, [r0, #220] ; 0xdc + 882e: f3c0 00c0 ubfx r0, r0, #3, #1 + 8832: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getMuteState() : 0; - 8894: 2a08 cmp r2, #8 - 8896: f200 8115 bhi.w 8ac4 + 8834: 2a08 cmp r2, #8 + 8836: f200 8115 bhi.w 8a64 return (n>=8) ? selected : n; - 889a: bf08 it eq - 889c: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 883a: bf08 it eq + 883c: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 bool getMuteState(){ return bitRead(states, 2);} - 88a0: eb00 00c2 add.w r0, r0, r2, lsl #3 - 88a4: f890 00dc ldrb.w r0, [r0, #220] ; 0xdc - 88a8: f3c0 0080 ubfx r0, r0, #2, #1 - 88ac: 4770 bx lr + 8840: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8844: f890 00dc ldrb.w r0, [r0, #220] ; 0xdc + 8848: f3c0 0080 ubfx r0, r0, #2, #1 + 884c: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getSoloState() : 0; - 88ae: 2a08 cmp r2, #8 - 88b0: f200 810a bhi.w 8ac8 + 884e: 2a08 cmp r2, #8 + 8850: f200 810a bhi.w 8a68 return (n>=8) ? selected : n; - 88b4: bf08 it eq - 88b6: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 8854: bf08 it eq + 8856: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 bool getSoloState(){ return bitRead(states, 1);} - 88ba: eb00 00c2 add.w r0, r0, r2, lsl #3 - 88be: f890 00dc ldrb.w r0, [r0, #220] ; 0xdc - 88c2: f3c0 0040 ubfx r0, r0, #1, #1 - 88c6: 4770 bx lr + 885a: eb00 00c2 add.w r0, r0, r2, lsl #3 + 885e: f890 00dc ldrb.w r0, [r0, #220] ; 0xdc + 8862: f3c0 0040 ubfx r0, r0, #1, #1 + 8866: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].getRecState() : 0; - 88c8: 2a08 cmp r2, #8 - 88ca: f200 80db bhi.w 8a84 + 8868: 2a08 cmp r2, #8 + 886a: f200 80db bhi.w 8a24 return (n>=8) ? selected : n; - 88ce: bf08 it eq - 88d0: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 886e: bf08 it eq + 8870: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 bool getRecState(){ return bitRead(states, 0);} - 88d4: eb00 00c2 add.w r0, r0, r2, lsl #3 - 88d8: f890 00dc ldrb.w r0, [r0, #220] ; 0xdc - 88dc: f000 0001 and.w r0, r0, #1 - 88e0: 4770 bx lr + 8874: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8878: f890 00dc ldrb.w r0, [r0, #220] ; 0xdc + 887c: f000 0001 and.w r0, r0, #1 + 8880: 4770 bx lr bool getFaderViewGlobal(){ return bitRead(states, 7); } - 88e2: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 88e6: f3c0 10c0 ubfx r0, r0, #7, #1 + 8882: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8886: f3c0 10c0 ubfx r0, r0, #7, #1 case BMC_DAW_CMD_GLOBAL_VIEW: return controller.getFaderViewGlobal(); - 88ea: 4770 bx lr + 888a: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 88ec: 2a08 cmp r2, #8 - 88ee: f200 80d7 bhi.w 8aa0 + 888c: 2a08 cmp r2, #8 + 888e: f200 80d7 bhi.w 8a40 return (n>=8) ? selected : n; - 88f2: bf08 it eq - 88f4: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 8892: bf08 it eq + 8894: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 88f8: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8898: eb00 00c2 add.w r0, r0, r2, lsl #3 case BMC_DAW_CMD_METER_LED_12: return controller.getMeter(ch, 12)>0; - 88fc: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 8900: 2804 cmp r0, #4 - 8902: bf94 ite ls - 8904: 2000 movls r0, #0 - 8906: 2001 movhi r0, #1 - 8908: 4770 bx lr + 889c: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 88a0: 2804 cmp r0, #4 + 88a2: bf94 ite ls + 88a4: 2000 movls r0, #0 + 88a6: 2001 movhi r0, #1 + 88a8: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 890a: 2a08 cmp r2, #8 - 890c: f200 80ce bhi.w 8aac + 88aa: 2a08 cmp r2, #8 + 88ac: f200 80ce bhi.w 8a4c return (n>=8) ? selected : n; - 8910: bf08 it eq - 8912: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 88b0: bf08 it eq + 88b2: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 8916: eb00 00c2 add.w r0, r0, r2, lsl #3 - 891a: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 891e: 2803 cmp r0, #3 - 8920: bf94 ite ls - 8922: 2000 movls r0, #0 - 8924: 2001 movhi r0, #1 - 8926: 4770 bx lr + 88b6: eb00 00c2 add.w r0, r0, r2, lsl #3 + 88ba: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 88be: 2803 cmp r0, #3 + 88c0: bf94 ite ls + 88c2: 2000 movls r0, #0 + 88c4: 2001 movhi r0, #1 + 88c6: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 8928: 2a08 cmp r2, #8 - 892a: f200 80c1 bhi.w 8ab0 + 88c8: 2a08 cmp r2, #8 + 88ca: f200 80c1 bhi.w 8a50 return (n>=8) ? selected : n; - 892e: bf08 it eq - 8930: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 88ce: bf08 it eq + 88d0: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 8934: eb00 00c2 add.w r0, r0, r2, lsl #3 - 8938: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 893c: 2802 cmp r0, #2 - 893e: bf94 ite ls - 8940: 2000 movls r0, #0 - 8942: 2001 movhi r0, #1 - 8944: 4770 bx lr + 88d4: eb00 00c2 add.w r0, r0, r2, lsl #3 + 88d8: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 88dc: 2802 cmp r0, #2 + 88de: bf94 ite ls + 88e0: 2000 movls r0, #0 + 88e2: 2001 movhi r0, #1 + 88e4: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 8946: 2a08 cmp r2, #8 - 8948: f200 809e bhi.w 8a88 + 88e6: 2a08 cmp r2, #8 + 88e8: f200 809e bhi.w 8a28 return (n>=8) ? selected : n; - 894c: bf08 it eq - 894e: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 88ec: bf08 it eq + 88ee: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 8952: eb00 00c2 add.w r0, r0, r2, lsl #3 - 8956: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 895a: 2801 cmp r0, #1 - 895c: bf94 ite ls - 895e: 2000 movls r0, #0 - 8960: 2001 movhi r0, #1 - 8962: 4770 bx lr + 88f2: eb00 00c2 add.w r0, r0, r2, lsl #3 + 88f6: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 88fa: 2801 cmp r0, #1 + 88fc: bf94 ite ls + 88fe: 2000 movls r0, #0 + 8900: 2001 movhi r0, #1 + 8902: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 8964: 2a08 cmp r2, #8 - 8966: f200 808b bhi.w 8a80 + 8904: 2a08 cmp r2, #8 + 8906: f200 808b bhi.w 8a20 return (n>=8) ? selected : n; - 896a: bf08 it eq - 896c: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 890a: bf08 it eq + 890c: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 8970: eb00 00c2 add.w r0, r0, r2, lsl #3 - 8974: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 8978: 2806 cmp r0, #6 - 897a: bf94 ite ls - 897c: 2000 movls r0, #0 - 897e: 2001 movhi r0, #1 - 8980: 4770 bx lr + 8910: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8914: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 8918: 2806 cmp r0, #6 + 891a: bf94 ite ls + 891c: 2000 movls r0, #0 + 891e: 2001 movhi r0, #1 + 8920: 4770 bx lr bool getTransportRewind(){ return bitRead(states, 23); } - 8982: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8986: f3c0 50c0 ubfx r0, r0, #23, #1 + 8922: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8926: f3c0 50c0 ubfx r0, r0, #23, #1 case BMC_DAW_CMD_TRANSPORT_REWIND: return controller.getTransportRewind(); - 898a: 4770 bx lr + 892a: 4770 bx lr bool getBeats(){ return bitRead(states, 31); } - 898c: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8990: 0fc0 lsrs r0, r0, #31 + 892c: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8930: 0fc0 lsrs r0, r0, #31 case BMC_DAW_CMD_BEATS: return controller.getBeats(); - 8992: 4770 bx lr + 8932: 4770 bx lr bool getSMPTE(){ return bitRead(states, 30); } - 8994: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8998: f3c0 7080 ubfx r0, r0, #30, #1 + 8934: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8938: f3c0 7080 ubfx r0, r0, #30, #1 case BMC_DAW_CMD_SMPTE: return controller.getSMPTE(); - 899c: 4770 bx lr + 893c: 4770 bx lr bool getTransportScrub(){ return bitRead(states, 29); } - 899e: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 89a2: f3c0 7040 ubfx r0, r0, #29, #1 + 893e: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8942: f3c0 7040 ubfx r0, r0, #29, #1 case BMC_DAW_CMD_SCRUB: return controller.getTransportScrub(); - 89a6: 4770 bx lr + 8946: 4770 bx lr bool getTransportCursorZoom(){ return bitRead(states, 28); } - 89a8: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 89ac: f3c0 7000 ubfx r0, r0, #28, #1 + 8948: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 894c: f3c0 7000 ubfx r0, r0, #28, #1 case BMC_DAW_CMD_CURSOR_ZOOM: return controller.getTransportCursorZoom(); - 89b0: 4770 bx lr + 8950: 4770 bx lr bool getRudeSolo(){ return bitRead(states2, 0); } - 89b2: f890 00d8 ldrb.w r0, [r0, #216] ; 0xd8 - 89b6: f000 0001 and.w r0, r0, #1 + 8952: f890 00d8 ldrb.w r0, [r0, #216] ; 0xd8 + 8956: f000 0001 and.w r0, r0, #1 case BMC_DAW_CMD_RUDE_SOLO: return controller.getRudeSolo(); - 89ba: 4770 bx lr + 895a: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 89bc: 2a08 cmp r2, #8 - 89be: d85d bhi.n 8a7c + 895c: 2a08 cmp r2, #8 + 895e: d85d bhi.n 8a1c return (n>=8) ? selected : n; - 89c0: bf08 it eq - 89c2: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 + 8960: bf08 it eq + 8962: f890 20d1 ldrbeq.w r2, [r0, #209] ; 0xd1 if(max > 0 && (meter < max)){ - 89c6: eb00 00c2 add.w r0, r0, r2, lsl #3 + 8966: eb00 00c2 add.w r0, r0, r2, lsl #3 case BMC_DAW_CMD_METER_LED_12: return controller.getMeter(ch, 12)>0; - 89ca: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 - 89ce: 2805 cmp r0, #5 - 89d0: bf94 ite ls - 89d2: 2000 movls r0, #0 - 89d4: 2001 movhi r0, #1 - 89d6: 4770 bx lr + 896a: f890 00e2 ldrb.w r0, [r0, #226] ; 0xe2 + 896e: 2805 cmp r0, #5 + 8970: bf94 ite ls + 8972: 2000 movls r0, #0 + 8974: 2001 movhi r0, #1 + 8976: 4770 bx lr bool getAutomationWrite(){ return bitRead(states, 9); } - 89d8: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 89dc: f3c0 2040 ubfx r0, r0, #9, #1 + 8978: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 897c: f3c0 2040 ubfx r0, r0, #9, #1 case BMC_DAW_CMD_AUTOMATION_WRITE: return controller.getAutomationWrite(); - 89e0: 4770 bx lr + 8980: 4770 bx lr bool getUtilityUndo(){ return bitRead(states, 15); } - 89e2: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 89e6: f3c0 30c0 ubfx r0, r0, #15, #1 + 8982: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8986: f3c0 30c0 ubfx r0, r0, #15, #1 case BMC_DAW_CMD_UTILITY_UNDO: return controller.getUtilityUndo(); - 89ea: 4770 bx lr + 898a: 4770 bx lr bool getUtilitySave(){ return bitRead(states, 14); } - 89ec: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 89f0: f3c0 3080 ubfx r0, r0, #14, #1 + 898c: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8990: f3c0 3080 ubfx r0, r0, #14, #1 case BMC_DAW_CMD_UTILITY_SAVE: return controller.getUtilitySave(); - 89f4: 4770 bx lr + 8994: 4770 bx lr bool getAutomationGroup(){ return bitRead(states, 13); } - 89f6: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 89fa: f3c0 3040 ubfx r0, r0, #13, #1 + 8996: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 899a: f3c0 3040 ubfx r0, r0, #13, #1 case BMC_DAW_CMD_AUTOMATION_GROUP: return controller.getAutomationGroup(); - 89fe: 4770 bx lr + 899e: 4770 bx lr bool getAutomationLatch(){ return bitRead(states, 12); } - 8a00: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8a04: f3c0 3000 ubfx r0, r0, #12, #1 + 89a0: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 89a4: f3c0 3000 ubfx r0, r0, #12, #1 case BMC_DAW_CMD_AUTOMATION_LATCH: return controller.getAutomationLatch(); - 8a08: 4770 bx lr + 89a8: 4770 bx lr bool getTransportNudge(){ return bitRead(states, 17); } - 8a0a: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8a0e: f3c0 4040 ubfx r0, r0, #17, #1 + 89aa: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 89ae: f3c0 4040 ubfx r0, r0, #17, #1 case BMC_DAW_CMD_TRANSPORT_NUDGE: return controller.getTransportNudge(); - 8a12: 4770 bx lr + 89b2: 4770 bx lr bool getTransportMarker(){ return bitRead(states, 16); } - 8a14: f8b0 00d6 ldrh.w r0, [r0, #214] ; 0xd6 - 8a18: f000 0001 and.w r0, r0, #1 + 89b4: f8b0 00d6 ldrh.w r0, [r0, #214] ; 0xd6 + 89b8: f000 0001 and.w r0, r0, #1 case BMC_DAW_CMD_TRANSPORT_MARKER: return controller.getTransportMarker(); - 8a1c: 4770 bx lr + 89bc: 4770 bx lr bool getTransportCycle(){ return bitRead(states, 18); } - 8a1e: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8a22: f3c0 4080 ubfx r0, r0, #18, #1 + 89be: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 89c2: f3c0 4080 ubfx r0, r0, #18, #1 case BMC_DAW_CMD_TRANSPORT_CYCLE: return controller.getTransportCycle(); - 8a26: 4770 bx lr + 89c6: 4770 bx lr bool getTransportClick(){ return bitRead(states, 21); } - 8a28: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8a2c: f3c0 5040 ubfx r0, r0, #21, #1 + 89c8: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 89cc: f3c0 5040 ubfx r0, r0, #21, #1 case BMC_DAW_CMD_TRANSPORT_CLICK: return controller.getTransportClick(); - 8a30: 4770 bx lr + 89d0: 4770 bx lr bool getTransportReplace(){ return bitRead(states, 20); } - 8a32: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8a36: f3c0 5000 ubfx r0, r0, #20, #1 + 89d2: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 89d6: f3c0 5000 ubfx r0, r0, #20, #1 case BMC_DAW_CMD_TRANSPORT_REPLACE: return controller.getTransportReplace(); - 8a3a: 4770 bx lr + 89da: 4770 bx lr bool getTransportSolo(){ return bitRead(states, 22); } - 8a3c: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8a40: f3c0 5080 ubfx r0, r0, #22, #1 + 89dc: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 89e0: f3c0 5080 ubfx r0, r0, #22, #1 case BMC_DAW_CMD_TRANSPORT_SOLO: return controller.getTransportSolo(); - 8a44: 4770 bx lr + 89e4: 4770 bx lr bool getAssignInstr(){ return bitRead(states, 5); } - 8a46: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8a4a: f3c0 1040 ubfx r0, r0, #5, #1 + 89e6: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 89ea: f3c0 1040 ubfx r0, r0, #5, #1 case BMC_DAW_CMD_ASSIGN_INSTR: return controller.getAssignInstr(); - 8a4e: 4770 bx lr + 89ee: 4770 bx lr bool getAssignEQ(){ return bitRead(states, 4); } - 8a50: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8a54: f3c0 1000 ubfx r0, r0, #4, #1 + 89f0: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 89f4: f3c0 1000 ubfx r0, r0, #4, #1 case BMC_DAW_CMD_ASSIGN_EQ: return controller.getAssignEQ(); - 8a58: 4770 bx lr + 89f8: 4770 bx lr bool getFaderViewFlip(){ return bitRead(states, 6); } - 8a5a: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8a5e: f3c0 1080 ubfx r0, r0, #6, #1 + 89fa: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 89fe: f3c0 1080 ubfx r0, r0, #6, #1 case BMC_DAW_CMD_FLIP: return controller.getFaderViewFlip(); - 8a62: 4770 bx lr + 8a02: 4770 bx lr bool getAutomationTrim(){ return bitRead(states, 10); } - 8a64: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8a68: f3c0 2080 ubfx r0, r0, #10, #1 + 8a04: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8a08: f3c0 2080 ubfx r0, r0, #10, #1 case BMC_DAW_CMD_AUTOMATION_TRIM: return controller.getAutomationTrim(); - 8a6c: 4770 bx lr + 8a0c: 4770 bx lr bool getAutomationRead(){ return bitRead(states, 8); } - 8a6e: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 - 8a72: f3c0 2000 ubfx r0, r0, #8, #1 + 8a0e: f8d0 00d4 ldr.w r0, [r0, #212] ; 0xd4 + 8a12: f3c0 2000 ubfx r0, r0, #8, #1 case BMC_DAW_CMD_AUTOMATION_READ: return controller.getAutomationRead(); - 8a76: 4770 bx lr - 8a78: 2000 movs r0, #0 + 8a16: 4770 bx lr + 8a18: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_8: return controller.getMeter(ch, 8)>0; - 8a7a: 4770 bx lr - 8a7c: 2000 movs r0, #0 + 8a1a: 4770 bx lr + 8a1c: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_6: return controller.getMeter(ch, 6)>0; - 8a7e: 4770 bx lr - 8a80: 2000 movs r0, #0 + 8a1e: 4770 bx lr + 8a20: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_7: return controller.getMeter(ch, 7)>0; - 8a82: 4770 bx lr - 8a84: 2000 movs r0, #0 + 8a22: 4770 bx lr + 8a24: 2000 movs r0, #0 case BMC_DAW_CMD_REC: return controller.getRecState(ch); - 8a86: 4770 bx lr - 8a88: 2000 movs r0, #0 + 8a26: 4770 bx lr + 8a28: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_2: return controller.getMeter(ch, 2)>0; - 8a8a: 4770 bx lr - 8a8c: 2000 movs r0, #0 + 8a2a: 4770 bx lr + 8a2c: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_10: return controller.getMeter(ch, 10)>0; - 8a8e: 4770 bx lr - 8a90: 2000 movs r0, #0 - 8a92: 4770 bx lr - 8a94: 2000 movs r0, #0 - 8a96: 4770 bx lr - 8a98: 2000 movs r0, #0 + 8a2e: 4770 bx lr + 8a30: 2000 movs r0, #0 + 8a32: 4770 bx lr + 8a34: 2000 movs r0, #0 + 8a36: 4770 bx lr + 8a38: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_12: return controller.getMeter(ch, 12)>0; - 8a9a: 4770 bx lr - 8a9c: 2000 movs r0, #0 + 8a3a: 4770 bx lr + 8a3c: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_11: return controller.getMeter(ch, 11)>0; - 8a9e: 4770 bx lr - 8aa0: 2000 movs r0, #0 + 8a3e: 4770 bx lr + 8a40: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_5: return controller.getMeter(ch, 5)>0; - 8aa2: 4770 bx lr + 8a42: 4770 bx lr return chAllowed(n) ? channel[chCheck(n)].vu.getOverload() : false; - 8aa4: 2000 movs r0, #0 + 8a44: 2000 movs r0, #0 } - 8aa6: 4770 bx lr - 8aa8: 2000 movs r0, #0 - 8aaa: 4770 bx lr - 8aac: 2000 movs r0, #0 + 8a46: 4770 bx lr + 8a48: 2000 movs r0, #0 + 8a4a: 4770 bx lr + 8a4c: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_4: return controller.getMeter(ch, 4)>0; - 8aae: 4770 bx lr - 8ab0: 2000 movs r0, #0 + 8a4e: 4770 bx lr + 8a50: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_3: return controller.getMeter(ch, 3)>0; - 8ab2: 4770 bx lr - 8ab4: 2000 movs r0, #0 + 8a52: 4770 bx lr + 8a54: 2000 movs r0, #0 case BMC_DAW_CMD_VPOT_LED_CENTER: return controller.getVPotCentered(ch); - 8ab6: 4770 bx lr - 8ab8: 2000 movs r0, #0 + 8a56: 4770 bx lr + 8a58: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_9: return controller.getMeter(ch, 9)>0; - 8aba: 4770 bx lr - 8abc: 2000 movs r0, #0 + 8a5a: 4770 bx lr + 8a5c: 2000 movs r0, #0 case BMC_DAW_CMD_METER_LED_1: return controller.getMeter(ch, 1)>0; - 8abe: 4770 bx lr - 8ac0: 2000 movs r0, #0 + 8a5e: 4770 bx lr + 8a60: 2000 movs r0, #0 case BMC_DAW_CMD_SELECT: return controller.getSelectState(ch); - 8ac2: 4770 bx lr - 8ac4: 2000 movs r0, #0 + 8a62: 4770 bx lr + 8a64: 2000 movs r0, #0 case BMC_DAW_CMD_MUTE: return controller.getMuteState(ch); - 8ac6: 4770 bx lr - 8ac8: 2000 movs r0, #0 + 8a66: 4770 bx lr + 8a68: 2000 movs r0, #0 case BMC_DAW_CMD_SOLO: return controller.getSoloState(ch); - 8aca: 4770 bx lr - 8acc: 2000 movs r0, #0 - 8ace: 4770 bx lr - 8ad0: 2000 movs r0, #0 - 8ad2: 4770 bx lr - 8ad4: 2000 movs r0, #0 - 8ad6: 4770 bx lr - 8ad8: 2000 movs r0, #0 - 8ada: 4770 bx lr - 8adc: 2000 movs r0, #0 - 8ade: 4770 bx lr - 8ae0: 2000 movs r0, #0 - 8ae2: 4770 bx lr - 8ae4: 2000 movs r0, #0 - 8ae6: 4770 bx lr - 8ae8: 2000 movs r0, #0 - 8aea: 4770 bx lr + 8a6a: 4770 bx lr + 8a6c: 2000 movs r0, #0 + 8a6e: 4770 bx lr + 8a70: 2000 movs r0, #0 + 8a72: 4770 bx lr + 8a74: 2000 movs r0, #0 + 8a76: 4770 bx lr + 8a78: 2000 movs r0, #0 + 8a7a: 4770 bx lr + 8a7c: 2000 movs r0, #0 + 8a7e: 4770 bx lr + 8a80: 2000 movs r0, #0 + 8a82: 4770 bx lr + 8a84: 2000 movs r0, #0 + 8a86: 4770 bx lr + 8a88: 2000 movs r0, #0 + 8a8a: 4770 bx lr return (ledN > value) ? 0 : value; - 8aec: f012 000e ands.w r0, r2, #14 - 8af0: d0d9 beq.n 8aa6 + 8a8c: f012 000e ands.w r0, r2, #14 + 8a90: d0d9 beq.n 8a46 case BMC_DAW_CMD_VPOT_LED_11: return controller.getVPotValue(ch, 11)>0; - 8af2: f012 000f ands.w r0, r2, #15 - 8af6: bf18 it ne - 8af8: 2001 movne r0, #1 - 8afa: 4770 bx lr - 8afc: 2b09 cmp r3, #9 - 8afe: bf94 ite ls - 8b00: 2000 movls r0, #0 - 8b02: 2001 movhi r0, #1 - 8b04: 4770 bx lr + 8a92: f012 000f ands.w r0, r2, #15 + 8a96: bf18 it ne + 8a98: 2001 movne r0, #1 + 8a9a: 4770 bx lr + 8a9c: 2b09 cmp r3, #9 + 8a9e: bf94 ite ls + 8aa0: 2000 movls r0, #0 + 8aa2: 2001 movhi r0, #1 + 8aa4: 4770 bx lr + if((ledN==6 && value==1) || value>6){ + 8aa6: 2b06 cmp r3, #6 + 8aa8: f200 80fb bhi.w 8ca2 + 8aac: 3b05 subs r3, #5 + 8aae: 2b01 cmp r3, #1 + 8ab0: bf8c ite hi + 8ab2: 2000 movhi r0, #0 + 8ab4: 2001 movls r0, #1 + 8ab6: 4770 bx lr + uint8_t value = vPot & 0x0F; + 8ab8: f002 030f and.w r3, r2, #15 + 8abc: 3b01 subs r3, #1 + 8abe: 2b01 cmp r3, #1 + 8ac0: bf8c ite hi + 8ac2: 2000 movhi r0, #0 + 8ac4: 2001 movls r0, #1 + 8ac6: 4770 bx lr + uint8_t value = vPot & 0x0F; + 8ac8: f002 030f and.w r3, r2, #15 if((ledN==6 && value==1) || value>6){ - 8b06: 2b06 cmp r3, #6 - 8b08: f200 80fb bhi.w 8d02 - 8b0c: 3b05 subs r3, #5 - 8b0e: 2b01 cmp r3, #1 - 8b10: bf8c ite hi - 8b12: 2000 movhi r0, #0 - 8b14: 2001 movls r0, #1 - 8b16: 4770 bx lr + 8acc: 2b06 cmp r3, #6 + 8ace: f200 80ec bhi.w 8caa + 8ad2: 3b05 subs r3, #5 + 8ad4: 2b01 cmp r3, #1 + 8ad6: bf8c ite hi + 8ad8: 2000 movhi r0, #0 + 8ada: 2001 movls r0, #1 + 8adc: 4770 bx lr + 8ade: 2b09 cmp r3, #9 + 8ae0: bf94 ite ls + 8ae2: 2000 movls r0, #0 + 8ae4: 2001 movhi r0, #1 + 8ae6: 4770 bx lr + 8ae8: 2b06 cmp r3, #6 + 8aea: bf94 ite ls + 8aec: 2000 movls r0, #0 + 8aee: 2001 movhi r0, #1 + 8af0: 4770 bx lr + 8af2: 2b06 cmp r3, #6 + 8af4: f200 80db bhi.w 8cae + 8af8: 3b02 subs r3, #2 + 8afa: 2b04 cmp r3, #4 + 8afc: bf8c ite hi + 8afe: 2000 movhi r0, #0 + 8b00: 2001 movls r0, #1 + 8b02: 4770 bx lr + 8b04: 2b06 cmp r3, #6 + 8b06: bf94 ite ls + 8b08: 2000 movls r0, #0 + 8b0a: 2001 movhi r0, #1 + 8b0c: 4770 bx lr + 8b0e: f000 000f and.w r0, r0, #15 + 8b12: 2805 cmp r0, #5 + 8b14: bf94 ite ls + 8b16: 2000 movls r0, #0 + 8b18: 2001 movhi r0, #1 + 8b1a: 4770 bx lr + 8b1c: f003 030f and.w r3, r3, #15 + 8b20: 2b04 cmp r3, #4 + 8b22: bf94 ite ls + 8b24: 2000 movls r0, #0 + 8b26: 2001 movhi r0, #1 + 8b28: 4770 bx lr uint8_t value = vPot & 0x0F; - 8b18: f002 030f and.w r3, r2, #15 - 8b1c: 3b01 subs r3, #1 - 8b1e: 2b01 cmp r3, #1 - 8b20: bf8c ite hi - 8b22: 2000 movhi r0, #0 - 8b24: 2001 movls r0, #1 - 8b26: 4770 bx lr + 8b2a: f003 000f and.w r0, r3, #15 + 8b2e: 3801 subs r0, #1 + 8b30: 2804 cmp r0, #4 + 8b32: bf8c ite hi + 8b34: 2000 movhi r0, #0 + 8b36: 2001 movls r0, #1 + 8b38: 4770 bx lr uint8_t value = vPot & 0x0F; - 8b28: f002 030f and.w r3, r2, #15 + 8b3a: f003 030f and.w r3, r3, #15 if((ledN==6 && value==1) || value>6){ - 8b2c: 2b06 cmp r3, #6 - 8b2e: f200 80ec bhi.w 8d0a - 8b32: 3b05 subs r3, #5 - 8b34: 2b01 cmp r3, #1 - 8b36: bf8c ite hi - 8b38: 2000 movhi r0, #0 - 8b3a: 2001 movls r0, #1 - 8b3c: 4770 bx lr - 8b3e: 2b09 cmp r3, #9 - 8b40: bf94 ite ls - 8b42: 2000 movls r0, #0 - 8b44: 2001 movhi r0, #1 - 8b46: 4770 bx lr - 8b48: 2b06 cmp r3, #6 - 8b4a: bf94 ite ls - 8b4c: 2000 movls r0, #0 - 8b4e: 2001 movhi r0, #1 - 8b50: 4770 bx lr - 8b52: 2b06 cmp r3, #6 - 8b54: f200 80db bhi.w 8d0e - 8b58: 3b02 subs r3, #2 - 8b5a: 2b04 cmp r3, #4 - 8b5c: bf8c ite hi - 8b5e: 2000 movhi r0, #0 - 8b60: 2001 movls r0, #1 + 8b3e: 2b06 cmp r3, #6 + 8b40: f200 80b7 bhi.w 8cb2 + 8b44: 3b02 subs r3, #2 + 8b46: 2b04 cmp r3, #4 + 8b48: bf8c ite hi + 8b4a: 2000 movhi r0, #0 + 8b4c: 2001 movls r0, #1 + 8b4e: 4770 bx lr + 8b50: 2b08 cmp r3, #8 + 8b52: bf94 ite ls + 8b54: 2000 movls r0, #0 + 8b56: 2001 movhi r0, #1 + 8b58: 4770 bx lr + 8b5a: 2b0a cmp r3, #10 + 8b5c: bf94 ite ls + 8b5e: 2000 movls r0, #0 + 8b60: 2001 movhi r0, #1 8b62: 4770 bx lr 8b64: 2b06 cmp r3, #6 - 8b66: bf94 ite ls - 8b68: 2000 movls r0, #0 - 8b6a: 2001 movhi r0, #1 - 8b6c: 4770 bx lr - 8b6e: f000 000f and.w r0, r0, #15 - 8b72: 2805 cmp r0, #5 + 8b66: f200 80a6 bhi.w 8cb6 + if(value==i){ + 8b6a: bf0c ite eq + 8b6c: 2001 moveq r0, #1 + 8b6e: 2000 movne r0, #0 + 8b70: 4770 bx lr + 8b72: 2b0a cmp r3, #10 8b74: bf94 ite ls 8b76: 2000 movls r0, #0 8b78: 2001 movhi r0, #1 8b7a: 4770 bx lr - 8b7c: f003 030f and.w r3, r3, #15 - 8b80: 2b04 cmp r3, #4 - 8b82: bf94 ite ls - 8b84: 2000 movls r0, #0 - 8b86: 2001 movhi r0, #1 - 8b88: 4770 bx lr - uint8_t value = vPot & 0x0F; - 8b8a: f003 000f and.w r0, r3, #15 - 8b8e: 3801 subs r0, #1 - 8b90: 2804 cmp r0, #4 - 8b92: bf8c ite hi - 8b94: 2000 movhi r0, #0 - 8b96: 2001 movls r0, #1 - 8b98: 4770 bx lr - uint8_t value = vPot & 0x0F; - 8b9a: f003 030f and.w r3, r3, #15 - if((ledN==6 && value==1) || value>6){ - 8b9e: 2b06 cmp r3, #6 - 8ba0: f200 80b7 bhi.w 8d12 - 8ba4: 3b02 subs r3, #2 - 8ba6: 2b04 cmp r3, #4 - 8ba8: bf8c ite hi - 8baa: 2000 movhi r0, #0 - 8bac: 2001 movls r0, #1 - 8bae: 4770 bx lr - 8bb0: 2b08 cmp r3, #8 - 8bb2: bf94 ite ls - 8bb4: 2000 movls r0, #0 - 8bb6: 2001 movhi r0, #1 - 8bb8: 4770 bx lr - 8bba: 2b0a cmp r3, #10 - 8bbc: bf94 ite ls - 8bbe: 2000 movls r0, #0 - 8bc0: 2001 movhi r0, #1 - 8bc2: 4770 bx lr - 8bc4: 2b06 cmp r3, #6 - 8bc6: f200 80a6 bhi.w 8d16 - if(value==i){ - 8bca: bf0c ite eq - 8bcc: 2001 moveq r0, #1 - 8bce: 2000 movne r0, #0 - 8bd0: 4770 bx lr - 8bd2: 2b0a cmp r3, #10 - 8bd4: bf94 ite ls - 8bd6: 2000 movls r0, #0 - 8bd8: 2001 movhi r0, #1 - 8bda: 4770 bx lr uint8_t value = vPot & 0x0F; - 8bdc: f002 030f and.w r3, r2, #15 - 8be0: 3b01 subs r3, #1 - 8be2: 2b03 cmp r3, #3 - 8be4: bf8c ite hi - 8be6: 2000 movhi r0, #0 - 8be8: 2001 movls r0, #1 - 8bea: 4770 bx lr + 8b7c: f002 030f and.w r3, r2, #15 + 8b80: 3b01 subs r3, #1 + 8b82: 2b03 cmp r3, #3 + 8b84: bf8c ite hi + 8b86: 2000 movhi r0, #0 + 8b88: 2001 movls r0, #1 + 8b8a: 4770 bx lr uint8_t value = vPot & 0x0F; - 8bec: f002 030f and.w r3, r2, #15 + 8b8c: f002 030f and.w r3, r2, #15 if((ledN==6 && value==1) || value>6){ - 8bf0: 2b06 cmp r3, #6 - 8bf2: f200 8088 bhi.w 8d06 - 8bf6: 3b03 subs r3, #3 - 8bf8: 2b03 cmp r3, #3 - 8bfa: bf8c ite hi - 8bfc: 2000 movhi r0, #0 - 8bfe: 2001 movls r0, #1 - 8c00: 4770 bx lr - 8c02: 2b08 cmp r3, #8 - 8c04: bf94 ite ls - 8c06: 2000 movls r0, #0 - 8c08: 2001 movhi r0, #1 - 8c0a: 4770 bx lr - 8c0c: 2b06 cmp r3, #6 - 8c0e: d870 bhi.n 8cf2 - 8c10: 3b04 subs r3, #4 - 8c12: 2b02 cmp r3, #2 - 8c14: bf8c ite hi - 8c16: 2000 movhi r0, #0 - 8c18: 2001 movls r0, #1 - 8c1a: 4770 bx lr + 8b90: 2b06 cmp r3, #6 + 8b92: f200 8088 bhi.w 8ca6 + 8b96: 3b03 subs r3, #3 + 8b98: 2b03 cmp r3, #3 + 8b9a: bf8c ite hi + 8b9c: 2000 movhi r0, #0 + 8b9e: 2001 movls r0, #1 + 8ba0: 4770 bx lr + 8ba2: 2b08 cmp r3, #8 + 8ba4: bf94 ite ls + 8ba6: 2000 movls r0, #0 + 8ba8: 2001 movhi r0, #1 + 8baa: 4770 bx lr + 8bac: 2b06 cmp r3, #6 + 8bae: d870 bhi.n 8c92 + 8bb0: 3b04 subs r3, #4 + 8bb2: 2b02 cmp r3, #2 + 8bb4: bf8c ite hi + 8bb6: 2000 movhi r0, #0 + 8bb8: 2001 movls r0, #1 + 8bba: 4770 bx lr return (ledN > value) ? 0 : value; - 8c1c: f012 000c ands.w r0, r2, #12 - 8c20: f43f af41 beq.w 8aa6 - 8c24: f012 000f ands.w r0, r2, #15 - 8c28: bf18 it ne - 8c2a: 2001 movne r0, #1 - 8c2c: 4770 bx lr + 8bbc: f012 000c ands.w r0, r2, #12 + 8bc0: f43f af41 beq.w 8a46 + 8bc4: f012 000f ands.w r0, r2, #15 + 8bc8: bf18 it ne + 8bca: 2001 movne r0, #1 + 8bcc: 4770 bx lr return (ledN >= value)?value:0; - 8c2e: f010 0f0e tst.w r0, #14 - 8c32: d158 bne.n 8ce6 - 8c34: f010 000f ands.w r0, r0, #15 - 8c38: bf18 it ne - 8c3a: 2001 movne r0, #1 - 8c3c: 4770 bx lr + 8bce: f010 0f0e tst.w r0, #14 + 8bd2: d158 bne.n 8c86 + 8bd4: f010 000f ands.w r0, r0, #15 + 8bd8: bf18 it ne + 8bda: 2001 movne r0, #1 + 8bdc: 4770 bx lr uint8_t value = vPot & 0x0F; - 8c3e: f000 000f and.w r0, r0, #15 + 8bde: f000 000f and.w r0, r0, #15 if((ledN==6 && value==1) || value>6){ - 8c42: 2806 cmp r0, #6 - 8c44: d85b bhi.n 8cfe + 8be2: 2806 cmp r0, #6 + 8be4: d85b bhi.n 8c9e if(value==i){ - 8c46: bf0c ite eq - 8c48: 2001 moveq r0, #1 - 8c4a: 2000 movne r0, #0 - 8c4c: 4770 bx lr - 8c4e: f010 000f ands.w r0, r0, #15 - 8c52: bf18 it ne - 8c54: 2001 movne r0, #1 - 8c56: 4770 bx lr + 8be6: bf0c ite eq + 8be8: 2001 moveq r0, #1 + 8bea: 2000 movne r0, #0 + 8bec: 4770 bx lr + 8bee: f010 000f ands.w r0, r0, #15 + 8bf2: bf18 it ne + 8bf4: 2001 movne r0, #1 + 8bf6: 4770 bx lr return (ledN <= value)?value:0;// ledN > 6 - 8c58: f010 0308 ands.w r3, r0, #8 - 8c5c: d045 beq.n 8cea - 8c5e: f010 000f ands.w r0, r0, #15 - 8c62: bf18 it ne - 8c64: 2001 movne r0, #1 - 8c66: 4770 bx lr + 8bf8: f010 0308 ands.w r3, r0, #8 + 8bfc: d045 beq.n 8c8a + 8bfe: f010 000f ands.w r0, r0, #15 + 8c02: bf18 it ne + 8c04: 2001 movne r0, #1 + 8c06: 4770 bx lr uint8_t value = vPot & 0x0F; - 8c68: f000 000f and.w r0, r0, #15 + 8c08: f000 000f and.w r0, r0, #15 if((ledN==6 && value==1) || value>6){ - 8c6c: 2806 cmp r0, #6 - 8c6e: d844 bhi.n 8cfa - 8c70: 3803 subs r0, #3 - 8c72: 2803 cmp r0, #3 - 8c74: bf8c ite hi - 8c76: 2000 movhi r0, #0 - 8c78: 2001 movls r0, #1 - 8c7a: 4770 bx lr + 8c0c: 2806 cmp r0, #6 + 8c0e: d844 bhi.n 8c9a + 8c10: 3803 subs r0, #3 + 8c12: 2803 cmp r0, #3 + 8c14: bf8c ite hi + 8c16: 2000 movhi r0, #0 + 8c18: 2001 movls r0, #1 + 8c1a: 4770 bx lr return (ledN >= value)?value:0; - 8c7c: f010 0f0c tst.w r0, #12 - 8c80: d135 bne.n 8cee - 8c82: f010 000f ands.w r0, r0, #15 - 8c86: bf18 it ne - 8c88: 2001 movne r0, #1 - 8c8a: 4770 bx lr + 8c1c: f010 0f0c tst.w r0, #12 + 8c20: d135 bne.n 8c8e + 8c22: f010 000f ands.w r0, r0, #15 + 8c26: bf18 it ne + 8c28: 2001 movne r0, #1 + 8c2a: 4770 bx lr return (ledN > value) ? 0 : value; - 8c8c: f010 0308 ands.w r3, r0, #8 - 8c90: d027 beq.n 8ce2 - 8c92: f010 000f ands.w r0, r0, #15 - 8c96: bf18 it ne - 8c98: 2001 movne r0, #1 - 8c9a: 4770 bx lr + 8c2c: f010 0308 ands.w r3, r0, #8 + 8c30: d027 beq.n 8c82 + 8c32: f010 000f ands.w r0, r0, #15 + 8c36: bf18 it ne + 8c38: 2001 movne r0, #1 + 8c3a: 4770 bx lr uint8_t value = vPot & 0x0F; - 8c9c: f000 000f and.w r0, r0, #15 + 8c3c: f000 000f and.w r0, r0, #15 if((ledN==6 && value==1) || value>6){ - 8ca0: 2801 cmp r0, #1 - 8ca2: f43f af00 beq.w 8aa6 - 8ca6: 2806 cmp r0, #6 - 8ca8: d837 bhi.n 8d1a - 8caa: 3802 subs r0, #2 - 8cac: 2804 cmp r0, #4 - 8cae: bf8c ite hi - 8cb0: 2000 movhi r0, #0 - 8cb2: 2001 movls r0, #1 - 8cb4: 4770 bx lr - 8cb6: f000 000f and.w r0, r0, #15 - 8cba: 2802 cmp r0, #2 - 8cbc: bf94 ite ls - 8cbe: 2000 movls r0, #0 - 8cc0: 2001 movhi r0, #1 - 8cc2: 4770 bx lr + 8c40: 2801 cmp r0, #1 + 8c42: f43f af00 beq.w 8a46 + 8c46: 2806 cmp r0, #6 + 8c48: d837 bhi.n 8cba + 8c4a: 3802 subs r0, #2 + 8c4c: 2804 cmp r0, #4 + 8c4e: bf8c ite hi + 8c50: 2000 movhi r0, #0 + 8c52: 2001 movls r0, #1 + 8c54: 4770 bx lr + 8c56: f000 000f and.w r0, r0, #15 + 8c5a: 2802 cmp r0, #2 + 8c5c: bf94 ite ls + 8c5e: 2000 movls r0, #0 + 8c60: 2001 movhi r0, #1 + 8c62: 4770 bx lr uint8_t value = vPot & 0x0F; - 8cc4: f000 000f and.w r0, r0, #15 + 8c64: f000 000f and.w r0, r0, #15 if((ledN==6 && value==1) || value>6){ - 8cc8: 2806 cmp r0, #6 - 8cca: d814 bhi.n 8cf6 - 8ccc: 3804 subs r0, #4 - 8cce: 2802 cmp r0, #2 - 8cd0: bf8c ite hi - 8cd2: 2000 movhi r0, #0 - 8cd4: 2001 movls r0, #1 - 8cd6: 4770 bx lr - 8cd8: f010 000f ands.w r0, r0, #15 - 8cdc: bf18 it ne - 8cde: 2001 movne r0, #1 - 8ce0: 4770 bx lr - 8ce2: 4618 mov r0, r3 - 8ce4: 4770 bx lr - 8ce6: 2000 movs r0, #0 - 8ce8: 4770 bx lr - 8cea: 4618 mov r0, r3 - 8cec: 4770 bx lr - 8cee: 2000 movs r0, #0 - 8cf0: 4770 bx lr - 8cf2: 2001 movs r0, #1 + 8c68: 2806 cmp r0, #6 + 8c6a: d814 bhi.n 8c96 + 8c6c: 3804 subs r0, #4 + 8c6e: 2802 cmp r0, #2 + 8c70: bf8c ite hi + 8c72: 2000 movhi r0, #0 + 8c74: 2001 movls r0, #1 + 8c76: 4770 bx lr + 8c78: f010 000f ands.w r0, r0, #15 + 8c7c: bf18 it ne + 8c7e: 2001 movne r0, #1 + 8c80: 4770 bx lr + 8c82: 4618 mov r0, r3 + 8c84: 4770 bx lr + 8c86: 2000 movs r0, #0 + 8c88: 4770 bx lr + 8c8a: 4618 mov r0, r3 + 8c8c: 4770 bx lr + 8c8e: 2000 movs r0, #0 + 8c90: 4770 bx lr + 8c92: 2001 movs r0, #1 case BMC_DAW_CMD_VPOT_LED_9: return controller.getVPotValue(ch, 9)>0; - 8cf4: 4770 bx lr - 8cf6: 2001 movs r0, #1 + 8c94: 4770 bx lr + 8c96: 2001 movs r0, #1 case BMC_DAW_CMD_VPOT_LED_3: return controller.getVPotValue(ch, 3)>0; - 8cf8: 4770 bx lr - 8cfa: 2001 movs r0, #1 + 8c98: 4770 bx lr + 8c9a: 2001 movs r0, #1 case BMC_DAW_CMD_VPOT_LED_8: return controller.getVPotValue(ch, 8)>0; - 8cfc: 4770 bx lr - 8cfe: 2001 movs r0, #1 + 8c9c: 4770 bx lr + 8c9e: 2001 movs r0, #1 case BMC_DAW_CMD_VPOT_LED_1: return controller.getVPotValue(ch, 1)>0; - 8d00: 4770 bx lr - 8d02: 2001 movs r0, #1 + 8ca0: 4770 bx lr + 8ca2: 2001 movs r0, #1 case BMC_DAW_CMD_VPOT_LED_10: return controller.getVPotValue(ch, 10)>0; - 8d04: 4770 bx lr - 8d06: 2001 movs r0, #1 + 8ca4: 4770 bx lr + 8ca6: 2001 movs r0, #1 case BMC_DAW_CMD_VPOT_LED_4: return controller.getVPotValue(ch, 4)>0; - 8d08: 4770 bx lr - 8d0a: 2001 movs r0, #1 + 8ca8: 4770 bx lr + 8caa: 2001 movs r0, #1 case BMC_DAW_CMD_VPOT_LED_2: return controller.getVPotValue(ch, 2)>0; - 8d0c: 4770 bx lr - 8d0e: 2001 movs r0, #1 + 8cac: 4770 bx lr + 8cae: 2001 movs r0, #1 case BMC_DAW_CMD_VPOT_LED_7: return controller.getVPotValue(ch, 7)>0; - 8d10: 4770 bx lr - 8d12: 2001 movs r0, #1 + 8cb0: 4770 bx lr + 8cb2: 2001 movs r0, #1 case BMC_DAW_CMD_VPOT_LED_5: return controller.getVPotValue(ch, 5)>0; - 8d14: 4770 bx lr - 8d16: 2001 movs r0, #1 + 8cb4: 4770 bx lr + 8cb6: 2001 movs r0, #1 case BMC_DAW_CMD_VPOT_LED_11: return controller.getVPotValue(ch, 11)>0; - 8d18: 4770 bx lr - 8d1a: 2001 movs r0, #1 + 8cb8: 4770 bx lr + 8cba: 2001 movs r0, #1 case BMC_DAW_CMD_VPOT_LED_6: return controller.getVPotValue(ch, 6)>0; - 8d1c: 4770 bx lr - 8d1e: bf00 nop + 8cbc: 4770 bx lr + 8cbe: bf00 nop -00008d20 : +00008cc0 : bool getAssignTrack(){ return bitRead(states, 0); } - 8d20: f8d0 30d4 ldr.w r3, [r0, #212] ; 0xd4 + 8cc0: f8d0 30d4 ldr.w r3, [r0, #212] ; 0xd4 void sendEncoderScrollAssign(bool clockwise){ - 8d24: b530 push {r4, r5, lr} - 8d26: 4604 mov r4, r0 + 8cc4: b530 push {r4, r5, lr} + 8cc6: 4604 mov r4, r0 if(controller.getAssignTrack()){ - 8d28: 07d8 lsls r0, r3, #31 + 8cc8: 07d8 lsls r0, r3, #31 void sendEncoderScrollAssign(bool clockwise){ - 8d2a: b083 sub sp, #12 + 8cca: b083 sub sp, #12 if(controller.getAssignTrack()){ - 8d2c: d414 bmi.n 8d58 + 8ccc: d414 bmi.n 8cf8 } else if(controller.getAssignSend()){ - 8d2e: 079a lsls r2, r3, #30 - 8d30: d524 bpl.n 8d7c + 8cce: 079a lsls r2, r3, #30 + 8cd0: d524 bpl.n 8d1c if(clockwise){ - 8d32: 2900 cmp r1, #0 - 8d34: d142 bne.n 8dbc + 8cd2: 2900 cmp r1, #0 + 8cd4: d142 bne.n 8d5c sendButtonCommand(BMC_DAW_CMD_ASSIGN_TRACK, 0, false, true); + 8cd6: 2501 movs r5, #1 + 8cd8: 2300 movs r3, #0 + 8cda: 4620 mov r0, r4 + 8cdc: 2105 movs r1, #5 + 8cde: 461a mov r2, r3 + 8ce0: 9500 str r5, [sp, #0] + 8ce2: f7f7 fdf7 bl 8d4 + sendButtonCommand(BMC_DAW_CMD_ASSIGN_TRACK, 0, true, true); + 8ce6: 462b mov r3, r5 + 8ce8: 2200 movs r2, #0 + 8cea: 2105 movs r1, #5 + 8cec: 4620 mov r0, r4 + 8cee: 9500 str r5, [sp, #0] + 8cf0: f7f7 fdf0 bl 8d4 + } + 8cf4: b003 add sp, #12 + 8cf6: bd30 pop {r4, r5, pc} + if(clockwise){ + 8cf8: b9e9 cbnz r1, 8d36 + sendButtonCommand(BMC_DAW_CMD_ASSIGN_INSTR, 0, false, true); + 8cfa: 2501 movs r5, #1 + 8cfc: 2300 movs r3, #0 + 8cfe: 210a movs r1, #10 + 8d00: 4620 mov r0, r4 + 8d02: 461a mov r2, r3 + 8d04: 9500 str r5, [sp, #0] + 8d06: f7f7 fde5 bl 8d4 + sendButtonCommand(BMC_DAW_CMD_ASSIGN_INSTR, 0, true, true); + 8d0a: 462b mov r3, r5 + 8d0c: 2200 movs r2, #0 + 8d0e: 210a movs r1, #10 + 8d10: 4620 mov r0, r4 + 8d12: 9500 str r5, [sp, #0] + 8d14: f7f7 fdde bl 8d4 + } + 8d18: b003 add sp, #12 + 8d1a: bd30 pop {r4, r5, pc} + } else if(controller.getAssignPan()){ + 8d1c: 075d lsls r5, r3, #29 + 8d1e: d408 bmi.n 8d32 + } else if(controller.getAssignPlugin()){ + 8d20: 0718 lsls r0, r3, #28 + 8d22: d42c bmi.n 8d7e + } else if(controller.getAssignEQ()){ + 8d24: 06da lsls r2, r3, #27 + 8d26: d454 bmi.n 8dd2 + } else if(controller.getAssignInstr()){ + 8d28: 069b lsls r3, r3, #26 + 8d2a: d5f5 bpl.n 8d18 + if(clockwise){ + 8d2c: 2900 cmp r1, #0 + 8d2e: d1d2 bne.n 8cd6 + 8d30: e03e b.n 8db0 + 8d32: 2900 cmp r1, #0 + 8d34: d14f bne.n 8dd6 + sendButtonCommand(BMC_DAW_CMD_ASSIGN_SEND, 0, false, true); 8d36: 2501 movs r5, #1 8d38: 2300 movs r3, #0 8d3a: 4620 mov r0, r4 - 8d3c: 2105 movs r1, #5 + 8d3c: 2106 movs r1, #6 8d3e: 461a mov r2, r3 8d40: 9500 str r5, [sp, #0] 8d42: f7f7 fdc7 bl 8d4 - sendButtonCommand(BMC_DAW_CMD_ASSIGN_TRACK, 0, true, true); + sendButtonCommand(BMC_DAW_CMD_ASSIGN_SEND, 0, true, true); 8d46: 462b mov r3, r5 8d48: 2200 movs r2, #0 - 8d4a: 2105 movs r1, #5 + 8d4a: 2106 movs r1, #6 8d4c: 4620 mov r0, r4 8d4e: 9500 str r5, [sp, #0] 8d50: f7f7 fdc0 bl 8d4 } 8d54: b003 add sp, #12 8d56: bd30 pop {r4, r5, pc} - if(clockwise){ - 8d58: b9e9 cbnz r1, 8d96 - sendButtonCommand(BMC_DAW_CMD_ASSIGN_INSTR, 0, false, true); - 8d5a: 2501 movs r5, #1 - 8d5c: 2300 movs r3, #0 - 8d5e: 210a movs r1, #10 - 8d60: 4620 mov r0, r4 - 8d62: 461a mov r2, r3 - 8d64: 9500 str r5, [sp, #0] - 8d66: f7f7 fdb5 bl 8d4 - sendButtonCommand(BMC_DAW_CMD_ASSIGN_INSTR, 0, true, true); - 8d6a: 462b mov r3, r5 - 8d6c: 2200 movs r2, #0 - 8d6e: 210a movs r1, #10 - 8d70: 4620 mov r0, r4 - 8d72: 9500 str r5, [sp, #0] - 8d74: f7f7 fdae bl 8d4 - } - 8d78: b003 add sp, #12 - 8d7a: bd30 pop {r4, r5, pc} - } else if(controller.getAssignPan()){ - 8d7c: 075d lsls r5, r3, #29 - 8d7e: d408 bmi.n 8d92 - } else if(controller.getAssignPlugin()){ - 8d80: 0718 lsls r0, r3, #28 - 8d82: d42c bmi.n 8dde - } else if(controller.getAssignEQ()){ - 8d84: 06da lsls r2, r3, #27 - 8d86: d454 bmi.n 8e32 - } else if(controller.getAssignInstr()){ - 8d88: 069b lsls r3, r3, #26 - 8d8a: d5f5 bpl.n 8d78 - if(clockwise){ - 8d8c: 2900 cmp r1, #0 - 8d8e: d1d2 bne.n 8d36 - 8d90: e03e b.n 8e10 - 8d92: 2900 cmp r1, #0 - 8d94: d14f bne.n 8e36 - sendButtonCommand(BMC_DAW_CMD_ASSIGN_SEND, 0, false, true); - 8d96: 2501 movs r5, #1 - 8d98: 2300 movs r3, #0 - 8d9a: 4620 mov r0, r4 - 8d9c: 2106 movs r1, #6 - 8d9e: 461a mov r2, r3 - 8da0: 9500 str r5, [sp, #0] - 8da2: f7f7 fd97 bl 8d4 - sendButtonCommand(BMC_DAW_CMD_ASSIGN_SEND, 0, true, true); - 8da6: 462b mov r3, r5 - 8da8: 2200 movs r2, #0 - 8daa: 2106 movs r1, #6 - 8dac: 4620 mov r0, r4 - 8dae: 9500 str r5, [sp, #0] - 8db0: f7f7 fd90 bl 8d4 - } - 8db4: b003 add sp, #12 - 8db6: bd30 pop {r4, r5, pc} } else if(value == 3){ - 8db8: 2b04 cmp r3, #4 - 8dba: d117 bne.n 8dec + 8d58: 2b04 cmp r3, #4 + 8d5a: d117 bne.n 8d8c sendButtonCommand(BMC_DAW_CMD_ASSIGN_PAN, 0, false, true); - 8dbc: 2501 movs r5, #1 - 8dbe: 2300 movs r3, #0 - 8dc0: 4620 mov r0, r4 - 8dc2: 2107 movs r1, #7 - 8dc4: 461a mov r2, r3 - 8dc6: 9500 str r5, [sp, #0] - 8dc8: f7f7 fd84 bl 8d4 + 8d5c: 2501 movs r5, #1 + 8d5e: 2300 movs r3, #0 + 8d60: 4620 mov r0, r4 + 8d62: 2107 movs r1, #7 + 8d64: 461a mov r2, r3 + 8d66: 9500 str r5, [sp, #0] + 8d68: f7f7 fdb4 bl 8d4 sendButtonCommand(BMC_DAW_CMD_ASSIGN_PAN, 0, true, true); - 8dcc: 462b mov r3, r5 - 8dce: 2200 movs r2, #0 - 8dd0: 2107 movs r1, #7 - 8dd2: 4620 mov r0, r4 - 8dd4: 9500 str r5, [sp, #0] - 8dd6: f7f7 fd7d bl 8d4 - } - 8dda: b003 add sp, #12 - 8ddc: bd30 pop {r4, r5, pc} + 8d6c: 462b mov r3, r5 + 8d6e: 2200 movs r2, #0 + 8d70: 2107 movs r1, #7 + 8d72: 4620 mov r0, r4 + 8d74: 9500 str r5, [sp, #0] + 8d76: f7f7 fdad bl 8d4 + } + 8d7a: b003 add sp, #12 + 8d7c: bd30 pop {r4, r5, pc} value = 4; - 8dde: 2304 movs r3, #4 + 8d7e: 2304 movs r3, #4 if(clockwise){ - 8de0: 2900 cmp r1, #0 - 8de2: d0e9 beq.n 8db8 + 8d80: 2900 cmp r1, #0 + 8d82: d0e9 beq.n 8d58 } else if(value == 4){ - 8de4: 2b03 cmp r3, #3 + 8d84: 2b03 cmp r3, #3 value++; - 8de6: f103 0201 add.w r2, r3, #1 + 8d86: f103 0201 add.w r2, r3, #1 } else if(value == 4){ - 8dea: d10f bne.n 8e0c + 8d8a: d10f bne.n 8dac sendButtonCommand(BMC_DAW_CMD_ASSIGN_PLUGIN, 0, false, true); - 8dec: 2501 movs r5, #1 - 8dee: 2300 movs r3, #0 - 8df0: 4620 mov r0, r4 - 8df2: 2108 movs r1, #8 - 8df4: 461a mov r2, r3 - 8df6: 9500 str r5, [sp, #0] - 8df8: f7f7 fd6c bl 8d4 + 8d8c: 2501 movs r5, #1 + 8d8e: 2300 movs r3, #0 + 8d90: 4620 mov r0, r4 + 8d92: 2108 movs r1, #8 + 8d94: 461a mov r2, r3 + 8d96: 9500 str r5, [sp, #0] + 8d98: f7f7 fd9c bl 8d4 sendButtonCommand(BMC_DAW_CMD_ASSIGN_PLUGIN, 0, true, true); - 8dfc: 462b mov r3, r5 - 8dfe: 2200 movs r2, #0 - 8e00: 2108 movs r1, #8 - 8e02: 4620 mov r0, r4 - 8e04: 9500 str r5, [sp, #0] - 8e06: f7f7 fd65 bl 8d4 - 8e0a: e7b5 b.n 8d78 + 8d9c: 462b mov r3, r5 + 8d9e: 2200 movs r2, #0 + 8da0: 2108 movs r1, #8 + 8da2: 4620 mov r0, r4 + 8da4: 9500 str r5, [sp, #0] + 8da6: f7f7 fd95 bl 8d4 + 8daa: e7b5 b.n 8d18 } else if(value == 5){ - 8e0c: 2a05 cmp r2, #5 - 8e0e: d1a4 bne.n 8d5a + 8dac: 2a05 cmp r2, #5 + 8dae: d1a4 bne.n 8cfa sendButtonCommand(BMC_DAW_CMD_ASSIGN_EQ, 0, false, true); - 8e10: 2501 movs r5, #1 - 8e12: 2300 movs r3, #0 - 8e14: 4620 mov r0, r4 - 8e16: 2109 movs r1, #9 - 8e18: 461a mov r2, r3 - 8e1a: 9500 str r5, [sp, #0] - 8e1c: f7f7 fd5a bl 8d4 + 8db0: 2501 movs r5, #1 + 8db2: 2300 movs r3, #0 + 8db4: 4620 mov r0, r4 + 8db6: 2109 movs r1, #9 + 8db8: 461a mov r2, r3 + 8dba: 9500 str r5, [sp, #0] + 8dbc: f7f7 fd8a bl 8d4 sendButtonCommand(BMC_DAW_CMD_ASSIGN_EQ, 0, true, true); - 8e20: 462b mov r3, r5 - 8e22: 2200 movs r2, #0 - 8e24: 2109 movs r1, #9 - 8e26: 4620 mov r0, r4 - 8e28: 9500 str r5, [sp, #0] - 8e2a: f7f7 fd53 bl 8d4 - } - 8e2e: b003 add sp, #12 - 8e30: bd30 pop {r4, r5, pc} + 8dc0: 462b mov r3, r5 + 8dc2: 2200 movs r2, #0 + 8dc4: 2109 movs r1, #9 + 8dc6: 4620 mov r0, r4 + 8dc8: 9500 str r5, [sp, #0] + 8dca: f7f7 fd83 bl 8d4 + } + 8dce: b003 add sp, #12 + 8dd0: bd30 pop {r4, r5, pc} value = 5; - 8e32: 2305 movs r3, #5 - 8e34: e7d4 b.n 8de0 + 8dd2: 2305 movs r3, #5 + 8dd4: e7d4 b.n 8d80 value = 3; - 8e36: 2303 movs r3, #3 - 8e38: e7d4 b.n 8de4 - 8e3a: bf00 nop + 8dd6: 2303 movs r3, #3 + 8dd8: e7d4 b.n 8d84 + 8dda: bf00 nop -00008e3c : +00008ddc : void sendEncoderScrolling(uint8_t cmd, uint8_t ch, bool direction, uint8_t amount){ - 8e3c: b570 push {r4, r5, r6, lr} + 8ddc: b570 push {r4, r5, r6, lr} switch(cmd){ - 8e3e: 3904 subs r1, #4 + 8dde: 3904 subs r1, #4 void sendEncoderScrolling(uint8_t cmd, uint8_t ch, bool direction, uint8_t amount){ - 8e40: b084 sub sp, #16 - 8e42: 4605 mov r5, r0 - 8e44: 461c mov r4, r3 - 8e46: 4610 mov r0, r2 - 8e48: f89d c020 ldrb.w ip, [sp, #32] + 8de0: b084 sub sp, #16 + 8de2: 4605 mov r5, r0 + 8de4: 461c mov r4, r3 + 8de6: 4610 mov r0, r2 + 8de8: f89d c020 ldrb.w ip, [sp, #32] switch(cmd){ - 8e4c: 295f cmp r1, #95 ; 0x5f - 8e4e: d848 bhi.n 8ee2 - 8e50: e8df f001 tbb [pc, r1] - 8e54: 49494930 .word 0x49494930 - 8e58: 6d494949 .word 0x6d494949 - 8e5c: 4792926d .word 0x4792926d - 8e60: 47474747 .word 0x47474747 - 8e64: 47474747 .word 0x47474747 - 8e68: 47474747 .word 0x47474747 - 8e6c: 47474747 .word 0x47474747 - 8e70: 47474747 .word 0x47474747 - 8e74: 47474747 .word 0x47474747 - 8e78: 47474747 .word 0x47474747 - 8e7c: 47474747 .word 0x47474747 - 8e80: 47474747 .word 0x47474747 - 8e84: 47474747 .word 0x47474747 - 8e88: 47474747 .word 0x47474747 - 8e8c: 805a5a47 .word 0x805a5a47 - 8e90: a4de4780 .word 0xa4de4780 - 8e94: 474747c0 .word 0x474747c0 - 8e98: 47474747 .word 0x47474747 - 8e9c: 47474747 .word 0x47474747 - 8ea0: 47474747 .word 0x47474747 - 8ea4: 30304747 .word 0x30304747 - 8ea8: 30303030 .word 0x30303030 - 8eac: 30303030 .word 0x30303030 - 8eb0: 4e4e3030 .word 0x4e4e3030 + 8dec: 295f cmp r1, #95 ; 0x5f + 8dee: d848 bhi.n 8e82 + 8df0: e8df f001 tbb [pc, r1] + 8df4: 49494930 .word 0x49494930 + 8df8: 6d494949 .word 0x6d494949 + 8dfc: 4792926d .word 0x4792926d + 8e00: 47474747 .word 0x47474747 + 8e04: 47474747 .word 0x47474747 + 8e08: 47474747 .word 0x47474747 + 8e0c: 47474747 .word 0x47474747 + 8e10: 47474747 .word 0x47474747 + 8e14: 47474747 .word 0x47474747 + 8e18: 47474747 .word 0x47474747 + 8e1c: 47474747 .word 0x47474747 + 8e20: 47474747 .word 0x47474747 + 8e24: 47474747 .word 0x47474747 + 8e28: 47474747 .word 0x47474747 + 8e2c: 805a5a47 .word 0x805a5a47 + 8e30: a4de4780 .word 0xa4de4780 + 8e34: 474747c0 .word 0x474747c0 + 8e38: 47474747 .word 0x47474747 + 8e3c: 47474747 .word 0x47474747 + 8e40: 47474747 .word 0x47474747 + 8e44: 30304747 .word 0x30304747 + 8e48: 30303030 .word 0x30303030 + 8e4c: 30303030 .word 0x30303030 + 8e50: 4e4e3030 .word 0x4e4e3030 if(ch>=8){ - 8eb4: 2a07 cmp r2, #7 + 8e54: 2a07 cmp r2, #7 midi.sendControlChange(BMC_USB, 1, 0x10 | ch, value); - 8eb6: f04f 0100 mov.w r1, #0 - 8eba: f04f 0201 mov.w r2, #1 + 8e56: f04f 0100 mov.w r1, #0 + 8e5a: f04f 0201 mov.w r2, #1 return selected; - 8ebe: bf88 it hi - 8ec0: f895 00d1 ldrbhi.w r0, [r5, #209] ; 0xd1 + 8e5e: bf88 it hi + 8e60: f895 00d1 ldrbhi.w r0, [r5, #209] ; 0xd1 uint8_t value = (clockwise ? 1 : 65)+extraTicks; - 8ec4: 2c00 cmp r4, #0 + 8e64: 2c00 cmp r4, #0 midi.sendControlChange(BMC_USB, 1, 0x10 | ch, value); - 8ec6: f040 0310 orr.w r3, r0, #16 + 8e66: f040 0310 orr.w r3, r0, #16 uint8_t value = (clockwise ? 1 : 65)+extraTicks; - 8eca: bf14 ite ne - 8ecc: 4614 movne r4, r2 - 8ece: 2441 moveq r4, #65 ; 0x41 + 8e6a: bf14 ite ne + 8e6c: 4614 movne r4, r2 + 8e6e: 2441 moveq r4, #65 ; 0x41 midi.sendControlChange(BMC_USB, 1, 0x3C, value); - 8ed0: 9101 str r1, [sp, #4] - 8ed2: 4611 mov r1, r2 + 8e70: 9101 str r1, [sp, #4] + 8e72: 4611 mov r1, r2 uint8_t value = (clockwise ? 1 : 65)+extraTicks; - 8ed4: 4464 add r4, ip + 8e74: 4464 add r4, ip midi.sendControlChange(BMC_USB, 1, 0x3C, value); - 8ed6: 6c28 ldr r0, [r5, #64] ; 0x40 - 8ed8: 9202 str r2, [sp, #8] - 8eda: b2e4 uxtb r4, r4 - 8edc: 9400 str r4, [sp, #0] - 8ede: f01a fa7d bl 233dc - } - 8ee2: b004 add sp, #16 - 8ee4: bd70 pop {r4, r5, r6, pc} + 8e76: 6c28 ldr r0, [r5, #64] ; 0x40 + 8e78: 9202 str r2, [sp, #8] + 8e7a: b2e4 uxtb r4, r4 + 8e7c: 9400 str r4, [sp, #0] + 8e7e: f01a fb0f bl 234a0 + } + 8e82: b004 add sp, #16 + 8e84: bd70 pop {r4, r5, r6, pc} sendEncoderScrollAssign(direction); - 8ee6: 4621 mov r1, r4 - 8ee8: 4628 mov r0, r5 - 8eea: f7ff ff19 bl 8d20 + 8e86: 4621 mov r1, r4 + 8e88: 4628 mov r0, r5 + 8e8a: f7ff ff19 bl 8cc0 break; - 8eee: e7f8 b.n 8ee2 + 8e8e: e7f8 b.n 8e82 if(!direction){ - 8ef0: 2c00 cmp r4, #0 - 8ef2: f040 80e1 bne.w 90b8 + 8e90: 2c00 cmp r4, #0 + 8e92: f040 80e1 bne.w 9058 sendButtonCommand(BMC_DAW_CMD_PREV_MARKER, 0, false, true); - 8ef6: 2101 movs r1, #1 - 8ef8: 4623 mov r3, r4 - 8efa: 4622 mov r2, r4 - 8efc: 4628 mov r0, r5 - 8efe: 9100 str r1, [sp, #0] - 8f00: 2162 movs r1, #98 ; 0x62 - 8f02: f7f7 fce7 bl 8d4 - 8f06: e7ec b.n 8ee2 + 8e96: 2101 movs r1, #1 + 8e98: 4623 mov r3, r4 + 8e9a: 4622 mov r2, r4 + 8e9c: 4628 mov r0, r5 + 8e9e: 9100 str r1, [sp, #0] + 8ea0: 2162 movs r1, #98 ; 0x62 + 8ea2: f7f7 fd17 bl 8d4 + 8ea6: e7ec b.n 8e82 if(!direction){ - 8f08: 2c00 cmp r4, #0 - 8f0a: f040 80c5 bne.w 9098 + 8ea8: 2c00 cmp r4, #0 + 8eaa: f040 80c5 bne.w 9038 sendButtonCommand(BMC_DAW_CMD_CURSOR_UP, 0, false, true); - 8f0e: 2601 movs r6, #1 - 8f10: 4623 mov r3, r4 - 8f12: 4622 mov r2, r4 - 8f14: 4628 mov r0, r5 - 8f16: 213d movs r1, #61 ; 0x3d - 8f18: 9600 str r6, [sp, #0] - 8f1a: f7f7 fcdb bl 8d4 + 8eae: 2601 movs r6, #1 + 8eb0: 4623 mov r3, r4 + 8eb2: 4622 mov r2, r4 + 8eb4: 4628 mov r0, r5 + 8eb6: 213d movs r1, #61 ; 0x3d + 8eb8: 9600 str r6, [sp, #0] + 8eba: f7f7 fd0b bl 8d4 sendButtonCommand(BMC_DAW_CMD_CURSOR_UP, 0, true, true); - 8f1e: 4633 mov r3, r6 - 8f20: 4622 mov r2, r4 - 8f22: 213d movs r1, #61 ; 0x3d - 8f24: 4628 mov r0, r5 - 8f26: 9600 str r6, [sp, #0] - 8f28: f7f7 fcd4 bl 8d4 - 8f2c: e7d9 b.n 8ee2 + 8ebe: 4633 mov r3, r6 + 8ec0: 4622 mov r2, r4 + 8ec2: 213d movs r1, #61 ; 0x3d + 8ec4: 4628 mov r0, r5 + 8ec6: 9600 str r6, [sp, #0] + 8ec8: f7f7 fd04 bl 8d4 + 8ecc: e7d9 b.n 8e82 if(!direction){ - 8f2e: 2c00 cmp r4, #0 - 8f30: f040 80a2 bne.w 9078 + 8ece: 2c00 cmp r4, #0 + 8ed0: f040 80a2 bne.w 9018 sendButtonCommand(BMC_DAW_CMD_BANK_LEFT, 0, false, true); - 8f34: 2601 movs r6, #1 - 8f36: 4623 mov r3, r4 - 8f38: 4622 mov r2, r4 - 8f3a: 4628 mov r0, r5 - 8f3c: 210b movs r1, #11 - 8f3e: 9600 str r6, [sp, #0] - 8f40: f7f7 fcc8 bl 8d4 + 8ed4: 2601 movs r6, #1 + 8ed6: 4623 mov r3, r4 + 8ed8: 4622 mov r2, r4 + 8eda: 4628 mov r0, r5 + 8edc: 210b movs r1, #11 + 8ede: 9600 str r6, [sp, #0] + 8ee0: f7f7 fcf8 bl 8d4 sendButtonCommand(BMC_DAW_CMD_BANK_LEFT, 0, true, true); - 8f44: 4633 mov r3, r6 - 8f46: 4622 mov r2, r4 - 8f48: 210b movs r1, #11 - 8f4a: 4628 mov r0, r5 - 8f4c: 9600 str r6, [sp, #0] - 8f4e: f7f7 fcc1 bl 8d4 - 8f52: e7c6 b.n 8ee2 + 8ee4: 4633 mov r3, r6 + 8ee6: 4622 mov r2, r4 + 8ee8: 210b movs r1, #11 + 8eea: 4628 mov r0, r5 + 8eec: 9600 str r6, [sp, #0] + 8eee: f7f7 fcf1 bl 8d4 + 8ef2: e7c6 b.n 8e82 if(!direction){ - 8f54: 2c00 cmp r4, #0 - 8f56: d17f bne.n 9058 + 8ef4: 2c00 cmp r4, #0 + 8ef6: d17f bne.n 8ff8 sendButtonCommand(BMC_DAW_CMD_CURSOR_LEFT, 0, false, true); - 8f58: 2601 movs r6, #1 - 8f5a: 4623 mov r3, r4 - 8f5c: 4622 mov r2, r4 - 8f5e: 4628 mov r0, r5 - 8f60: 213f movs r1, #63 ; 0x3f - 8f62: 9600 str r6, [sp, #0] - 8f64: f7f7 fcb6 bl 8d4 + 8ef8: 2601 movs r6, #1 + 8efa: 4623 mov r3, r4 + 8efc: 4622 mov r2, r4 + 8efe: 4628 mov r0, r5 + 8f00: 213f movs r1, #63 ; 0x3f + 8f02: 9600 str r6, [sp, #0] + 8f04: f7f7 fce6 bl 8d4 sendButtonCommand(BMC_DAW_CMD_CURSOR_LEFT, 0, true, true); - 8f68: 4633 mov r3, r6 - 8f6a: 4622 mov r2, r4 - 8f6c: 213f movs r1, #63 ; 0x3f - 8f6e: 4628 mov r0, r5 - 8f70: 9600 str r6, [sp, #0] - 8f72: f7f7 fcaf bl 8d4 - 8f76: e7b4 b.n 8ee2 + 8f08: 4633 mov r3, r6 + 8f0a: 4622 mov r2, r4 + 8f0c: 213f movs r1, #63 ; 0x3f + 8f0e: 4628 mov r0, r5 + 8f10: 9600 str r6, [sp, #0] + 8f12: f7f7 fcdf bl 8d4 + 8f16: e7b4 b.n 8e82 if(!direction){ - 8f78: 2c00 cmp r4, #0 - 8f7a: d15d bne.n 9038 + 8f18: 2c00 cmp r4, #0 + 8f1a: d15d bne.n 8fd8 sendButtonCommand(BMC_DAW_CMD_CHANNEL_LEFT, 0, false, true); - 8f7c: 2601 movs r6, #1 - 8f7e: 4623 mov r3, r4 - 8f80: 4622 mov r2, r4 - 8f82: 4628 mov r0, r5 - 8f84: 210d movs r1, #13 - 8f86: 9600 str r6, [sp, #0] - 8f88: f7f7 fca4 bl 8d4 + 8f1c: 2601 movs r6, #1 + 8f1e: 4623 mov r3, r4 + 8f20: 4622 mov r2, r4 + 8f22: 4628 mov r0, r5 + 8f24: 210d movs r1, #13 + 8f26: 9600 str r6, [sp, #0] + 8f28: f7f7 fcd4 bl 8d4 sendButtonCommand(BMC_DAW_CMD_CHANNEL_LEFT, 0, true, true); - 8f8c: 4633 mov r3, r6 - 8f8e: 4622 mov r2, r4 - 8f90: 210d movs r1, #13 - 8f92: 4628 mov r0, r5 - 8f94: 9600 str r6, [sp, #0] - 8f96: f7f7 fc9d bl 8d4 - 8f9a: e7a2 b.n 8ee2 + 8f2c: 4633 mov r3, r6 + 8f2e: 4622 mov r2, r4 + 8f30: 210d movs r1, #13 + 8f32: 4628 mov r0, r5 + 8f34: 9600 str r6, [sp, #0] + 8f36: f7f7 fccd bl 8d4 + 8f3a: e7a2 b.n 8e82 ch = (ch >= 8) ? controller.getSelectedChannel() : ch; - 8f9c: 2a07 cmp r2, #7 - 8f9e: f240 8096 bls.w 90ce - 8fa2: f895 30d1 ldrb.w r3, [r5, #209] ; 0xd1 + 8f3c: 2a07 cmp r2, #7 + 8f3e: f240 8096 bls.w 906e + 8f42: f895 30d1 ldrb.w r3, [r5, #209] ; 0xd1 return chAllowed(n) ? channel[chCheck(n)].getVolume() : 0; - 8fa6: 2b08 cmp r3, #8 - 8fa8: f240 808f bls.w 90ca + 8f46: 2b08 cmp r3, #8 + 8f48: f240 808f bls.w 906a int value = 60*(extraTicks+1); - 8fac: f10c 0c01 add.w ip, ip, #1 + 8f4c: f10c 0c01 add.w ip, ip, #1 sendFaderPitch(ch+1, volume, clockwise, extraTicks); - 8fb0: 3301 adds r3, #1 + 8f50: 3301 adds r3, #1 int value = 60*(extraTicks+1); - 8fb2: ebcc 1c0c rsb ip, ip, ip, lsl #4 + 8f52: ebcc 1c0c rsb ip, ip, ip, lsl #4 sendFaderPitch(ch+1, volume, clockwise, extraTicks); - 8fb6: b2da uxtb r2, r3 + 8f56: b2da uxtb r2, r3 int value = 60*(extraTicks+1); - 8fb8: ea4f 038c mov.w r3, ip, lsl #2 + 8f58: ea4f 038c mov.w r3, ip, lsl #2 if(clockwise){ - 8fbc: 2c00 cmp r4, #0 - 8fbe: f040 809a bne.w 90f6 + 8f5c: 2c00 cmp r4, #0 + 8f5e: f040 809a bne.w 9096 sendFaderPitch(ch+1, volume, clockwise, extraTicks); - 8fc2: 4621 mov r1, r4 + 8f62: 4621 mov r1, r4 volume = (volume) - value; - 8fc4: 1acb subs r3, r1, r3 + 8f64: 1acb subs r3, r1, r3 volume = (volume < (-8192)) ? (-8192) : volume; - 8fc6: 4951 ldr r1, [pc, #324] ; (910c ) - 8fc8: 428b cmp r3, r1 - 8fca: bfb8 it lt - 8fcc: 460b movlt r3, r1 + 8f66: 4951 ldr r1, [pc, #324] ; (90ac ) + 8f68: 428b cmp r3, r1 + 8f6a: bfb8 it lt + 8f6c: 460b movlt r3, r1 midi.sendPitchBend(BMC_USB, ch, volume); - 8fce: 2400 movs r4, #0 - 8fd0: b21b sxth r3, r3 - 8fd2: e015 b.n 9000 + 8f6e: 2400 movs r4, #0 + 8f70: b21b sxth r3, r3 + 8f72: e015 b.n 8fa0 int value = 60*(extraTicks+1); - 8fd4: f10c 0c01 add.w ip, ip, #1 + 8f74: f10c 0c01 add.w ip, ip, #1 int volume = controller.getMasterVolume(); - 8fd8: f9b5 30da ldrsh.w r3, [r5, #218] ; 0xda + 8f78: f9b5 30da ldrsh.w r3, [r5, #218] ; 0xda int value = 60*(extraTicks+1); - 8fdc: ebcc 1c0c rsb ip, ip, ip, lsl #4 - 8fe0: ea4f 0c8c mov.w ip, ip, lsl #2 + 8f7c: ebcc 1c0c rsb ip, ip, ip, lsl #4 + 8f80: ea4f 0c8c mov.w ip, ip, lsl #2 if(clockwise){ - 8fe4: b9e4 cbnz r4, 9020 + 8f84: b9e4 cbnz r4, 8fc0 if(volume > (-8192)){ - 8fe6: f513 5f00 cmn.w r3, #8192 ; 0x2000 - 8fea: f77f af7a ble.w 8ee2 + 8f86: f513 5f00 cmn.w r3, #8192 ; 0x2000 + 8f8a: f77f af7a ble.w 8e82 volume = (volume) - value; - 8fee: eba3 030c sub.w r3, r3, ip + 8f8e: eba3 030c sub.w r3, r3, ip volume = (volume < (-8192)) ? (-8192) : volume; - 8ff2: 4a46 ldr r2, [pc, #280] ; (910c ) - 8ff4: 4293 cmp r3, r2 - 8ff6: bfb8 it lt - 8ff8: 4613 movlt r3, r2 + 8f92: 4a46 ldr r2, [pc, #280] ; (90ac ) + 8f94: 4293 cmp r3, r2 + 8f96: bfb8 it lt + 8f98: 4613 movlt r3, r2 midi.sendPitchBend(BMC_USB, ch, volume); - 8ffa: 2400 movs r4, #0 - 8ffc: b21b sxth r3, r3 - 8ffe: 2209 movs r2, #9 - 9000: 6c28 ldr r0, [r5, #64] ; 0x40 - 9002: 2101 movs r1, #1 - 9004: 9408 str r4, [sp, #32] - } - 9006: b004 add sp, #16 - 9008: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 8f9a: 2400 movs r4, #0 + 8f9c: b21b sxth r3, r3 + 8f9e: 2209 movs r2, #9 + 8fa0: 6c28 ldr r0, [r5, #64] ; 0x40 + 8fa2: 2101 movs r1, #1 + 8fa4: 9408 str r4, [sp, #32] + } + 8fa6: b004 add sp, #16 + 8fa8: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} midi.sendPitchBend(BMC_USB, ch, volume); - 900c: f01a be4a b.w 23ca4 + 8fac: f01a bee0 b.w 23d70 uint8_t value = (clockwise ? 1 : 65)+extraTicks; - 9010: 2c00 cmp r4, #0 + 8fb0: 2c00 cmp r4, #0 midi.sendControlChange(BMC_USB, 1, 0x3C, value); - 9012: f04f 0201 mov.w r2, #1 - 9016: f04f 0100 mov.w r1, #0 - 901a: f04f 033c mov.w r3, #60 ; 0x3c - 901e: e754 b.n 8eca + 8fb2: f04f 0201 mov.w r2, #1 + 8fb6: f04f 0100 mov.w r1, #0 + 8fba: f04f 033c mov.w r3, #60 ; 0x3c + 8fbe: e754 b.n 8e6a if(volume<6651){ - 9020: f641 12fa movw r2, #6650 ; 0x19fa - 9024: 4293 cmp r3, r2 - 9026: f73f af5c bgt.w 8ee2 + 8fc0: f641 12fa movw r2, #6650 ; 0x19fa + 8fc4: 4293 cmp r3, r2 + 8fc6: f73f af5c bgt.w 8e82 volume = (volume) + value; - 902a: 4463 add r3, ip + 8fca: 4463 add r3, ip volume = (volume>6651) ? 6651 : volume; - 902c: f641 12fb movw r2, #6651 ; 0x19fb - 9030: 4293 cmp r3, r2 - 9032: bfa8 it ge - 9034: 4613 movge r3, r2 - 9036: e7e0 b.n 8ffa + 8fcc: f641 12fb movw r2, #6651 ; 0x19fb + 8fd0: 4293 cmp r3, r2 + 8fd2: bfa8 it ge + 8fd4: 4613 movge r3, r2 + 8fd6: e7e0 b.n 8f9a sendButtonCommand(BMC_DAW_CMD_CHANNEL_RIGHT, 0, false, true); + 8fd8: 2401 movs r4, #1 + 8fda: 2300 movs r3, #0 + 8fdc: 4628 mov r0, r5 + 8fde: 210e movs r1, #14 + 8fe0: 461a mov r2, r3 + 8fe2: 9400 str r4, [sp, #0] + 8fe4: f7f7 fc76 bl 8d4 + sendButtonCommand(BMC_DAW_CMD_CHANNEL_RIGHT, 0, true, true); + 8fe8: 4623 mov r3, r4 + 8fea: 2200 movs r2, #0 + 8fec: 210e movs r1, #14 + 8fee: 4628 mov r0, r5 + 8ff0: 9400 str r4, [sp, #0] + 8ff2: f7f7 fc6f bl 8d4 + 8ff6: e744 b.n 8e82 + sendButtonCommand(BMC_DAW_CMD_CURSOR_RIGHT, 0, false, true); + 8ff8: 2401 movs r4, #1 + 8ffa: 2300 movs r3, #0 + 8ffc: 4628 mov r0, r5 + 8ffe: 2140 movs r1, #64 ; 0x40 + 9000: 461a mov r2, r3 + 9002: 9400 str r4, [sp, #0] + 9004: f7f7 fc66 bl 8d4 + sendButtonCommand(BMC_DAW_CMD_CURSOR_RIGHT, 0, true, true); + 9008: 4623 mov r3, r4 + 900a: 2200 movs r2, #0 + 900c: 2140 movs r1, #64 ; 0x40 + 900e: 4628 mov r0, r5 + 9010: 9400 str r4, [sp, #0] + 9012: f7f7 fc5f bl 8d4 + 9016: e734 b.n 8e82 + sendButtonCommand(BMC_DAW_CMD_BANK_RIGHT, 0, false, true); + 9018: 2401 movs r4, #1 + 901a: 2300 movs r3, #0 + 901c: 4628 mov r0, r5 + 901e: 210c movs r1, #12 + 9020: 461a mov r2, r3 + 9022: 9400 str r4, [sp, #0] + 9024: f7f7 fc56 bl 8d4 + sendButtonCommand(BMC_DAW_CMD_BANK_RIGHT, 0, true, true); + 9028: 4623 mov r3, r4 + 902a: 2200 movs r2, #0 + 902c: 210c movs r1, #12 + 902e: 4628 mov r0, r5 + 9030: 9400 str r4, [sp, #0] + 9032: f7f7 fc4f bl 8d4 + 9036: e724 b.n 8e82 + sendButtonCommand(BMC_DAW_CMD_CURSOR_DOWN, 0, false, true); 9038: 2401 movs r4, #1 903a: 2300 movs r3, #0 903c: 4628 mov r0, r5 - 903e: 210e movs r1, #14 + 903e: 213e movs r1, #62 ; 0x3e 9040: 461a mov r2, r3 9042: 9400 str r4, [sp, #0] 9044: f7f7 fc46 bl 8d4 - sendButtonCommand(BMC_DAW_CMD_CHANNEL_RIGHT, 0, true, true); + sendButtonCommand(BMC_DAW_CMD_CURSOR_DOWN, 0, true, true); 9048: 4623 mov r3, r4 904a: 2200 movs r2, #0 - 904c: 210e movs r1, #14 + 904c: 213e movs r1, #62 ; 0x3e 904e: 4628 mov r0, r5 9050: 9400 str r4, [sp, #0] 9052: f7f7 fc3f bl 8d4 - 9056: e744 b.n 8ee2 - sendButtonCommand(BMC_DAW_CMD_CURSOR_RIGHT, 0, false, true); + 9056: e714 b.n 8e82 + sendButtonCommand(BMC_DAW_CMD_NEXT_MARKER, 0, false, true); 9058: 2401 movs r4, #1 905a: 2300 movs r3, #0 - 905c: 4628 mov r0, r5 - 905e: 2140 movs r1, #64 ; 0x40 + 905c: 2163 movs r1, #99 ; 0x63 + 905e: 4628 mov r0, r5 9060: 461a mov r2, r3 9062: 9400 str r4, [sp, #0] 9064: f7f7 fc36 bl 8d4 - sendButtonCommand(BMC_DAW_CMD_CURSOR_RIGHT, 0, true, true); - 9068: 4623 mov r3, r4 - 906a: 2200 movs r2, #0 - 906c: 2140 movs r1, #64 ; 0x40 - 906e: 4628 mov r0, r5 - 9070: 9400 str r4, [sp, #0] - 9072: f7f7 fc2f bl 8d4 - 9076: e734 b.n 8ee2 - sendButtonCommand(BMC_DAW_CMD_BANK_RIGHT, 0, false, true); - 9078: 2401 movs r4, #1 - 907a: 2300 movs r3, #0 - 907c: 4628 mov r0, r5 - 907e: 210c movs r1, #12 - 9080: 461a mov r2, r3 - 9082: 9400 str r4, [sp, #0] - 9084: f7f7 fc26 bl 8d4 - sendButtonCommand(BMC_DAW_CMD_BANK_RIGHT, 0, true, true); - 9088: 4623 mov r3, r4 - 908a: 2200 movs r2, #0 - 908c: 210c movs r1, #12 - 908e: 4628 mov r0, r5 - 9090: 9400 str r4, [sp, #0] - 9092: f7f7 fc1f bl 8d4 - 9096: e724 b.n 8ee2 - sendButtonCommand(BMC_DAW_CMD_CURSOR_DOWN, 0, false, true); - 9098: 2401 movs r4, #1 - 909a: 2300 movs r3, #0 - 909c: 4628 mov r0, r5 - 909e: 213e movs r1, #62 ; 0x3e - 90a0: 461a mov r2, r3 - 90a2: 9400 str r4, [sp, #0] - 90a4: f7f7 fc16 bl 8d4 - sendButtonCommand(BMC_DAW_CMD_CURSOR_DOWN, 0, true, true); - 90a8: 4623 mov r3, r4 - 90aa: 2200 movs r2, #0 - 90ac: 213e movs r1, #62 ; 0x3e - 90ae: 4628 mov r0, r5 - 90b0: 9400 str r4, [sp, #0] - 90b2: f7f7 fc0f bl 8d4 - 90b6: e714 b.n 8ee2 - sendButtonCommand(BMC_DAW_CMD_NEXT_MARKER, 0, false, true); - 90b8: 2401 movs r4, #1 - 90ba: 2300 movs r3, #0 - 90bc: 2163 movs r1, #99 ; 0x63 - 90be: 4628 mov r0, r5 - 90c0: 461a mov r2, r3 - 90c2: 9400 str r4, [sp, #0] - 90c4: f7f7 fc06 bl 8d4 - } - 90c8: e70b b.n 8ee2 + } + 9068: e70b b.n 8e82 return (n>=8) ? selected : n; - 90ca: 4618 mov r0, r3 - 90cc: d000 beq.n 90d0 - 90ce: 4603 mov r3, r0 + 906a: 4618 mov r0, r3 + 906c: d000 beq.n 9070 + 906e: 4603 mov r3, r0 int value = 60*(extraTicks+1); - 90d0: f10c 0c01 add.w ip, ip, #1 + 9070: f10c 0c01 add.w ip, ip, #1 sendFaderPitch(ch+1, volume, clockwise, extraTicks); - 90d4: 3301 adds r3, #1 + 9074: 3301 adds r3, #1 return fader; - 90d6: eb05 00c0 add.w r0, r5, r0, lsl #3 + 9076: eb05 00c0 add.w r0, r5, r0, lsl #3 int value = 60*(extraTicks+1); - 90da: ebcc 1c0c rsb ip, ip, ip, lsl #4 + 907a: ebcc 1c0c rsb ip, ip, ip, lsl #4 sendFaderPitch(ch+1, volume, clockwise, extraTicks); - 90de: b2da uxtb r2, r3 - 90e0: f9b0 10de ldrsh.w r1, [r0, #222] ; 0xde + 907e: b2da uxtb r2, r3 + 9080: f9b0 10de ldrsh.w r1, [r0, #222] ; 0xde int value = 60*(extraTicks+1); - 90e4: ea4f 038c mov.w r3, ip, lsl #2 + 9084: ea4f 038c mov.w r3, ip, lsl #2 if(clockwise){ - 90e8: b15c cbz r4, 9102 + 9088: b15c cbz r4, 90a2 if(volume<6651){ - 90ea: f641 10fa movw r0, #6650 ; 0x19fa - 90ee: 4281 cmp r1, r0 - 90f0: f73f aef7 bgt.w 8ee2 + 908a: f641 10fa movw r0, #6650 ; 0x19fa + 908e: 4281 cmp r1, r0 + 9090: f73f aef7 bgt.w 8e82 volume = (volume) + value; - 90f4: 440b add r3, r1 + 9094: 440b add r3, r1 volume = (volume>6651) ? 6651 : volume; - 90f6: f641 11fb movw r1, #6651 ; 0x19fb - 90fa: 428b cmp r3, r1 - 90fc: bfa8 it ge - 90fe: 460b movge r3, r1 - 9100: e765 b.n 8fce + 9096: f641 11fb movw r1, #6651 ; 0x19fb + 909a: 428b cmp r3, r1 + 909c: bfa8 it ge + 909e: 460b movge r3, r1 + 90a0: e765 b.n 8f6e if(volume > (-8192)){ - 9102: f511 5f00 cmn.w r1, #8192 ; 0x2000 - 9106: f77f aeec ble.w 8ee2 - 910a: e75b b.n 8fc4 - 910c: ffffe000 .word 0xffffe000 + 90a2: f511 5f00 cmn.w r1, #8192 ; 0x2000 + 90a6: f77f aeec ble.w 8e82 + 90aa: e75b b.n 8f64 + 90ac: ffffe000 .word 0xffffe000 -00009110 : +000090b0 : void toggleBlockChannel(uint16_t n, uint8_t c1, uint8_t c2){ - 9110: b510 push {r4, lr} + 90b0: b510 push {r4, lr} for(int e = 0; e < BMC_FAS3_BLOCKS_COUNT; e++){ - 9112: f04f 0c00 mov.w ip, #0 + 90b2: f04f 0c00 mov.w ip, #0 void toggleBlockChannel(uint16_t n, uint8_t c1, uint8_t c2){ - 9116: b082 sub sp, #8 - 9118: f500 74ac add.w r4, r0, #344 ; 0x158 - 911c: e004 b.n 9128 + 90b6: b082 sub sp, #8 + 90b8: f500 74ac add.w r4, r0, #344 ; 0x158 + 90bc: e004 b.n 90c8 for(int e = 0; e < BMC_FAS3_BLOCKS_COUNT; e++){ - 911e: f10c 0c01 add.w ip, ip, #1 - 9122: f1bc 0f5b cmp.w ip, #91 ; 0x5b - 9126: d016 beq.n 9156 + 90be: f10c 0c01 add.w ip, ip, #1 + 90c2: f1bc 0f5b cmp.w ip, #91 ; 0x5b + 90c6: d016 beq.n 90f6 if(blocksInfo[e].id == n){ - 9128: f814 e03c ldrb.w lr, [r4, ip, lsl #3] - 912c: 458e cmp lr, r1 - 912e: d1f6 bne.n 911e + 90c8: f814 e03c ldrb.w lr, [r4, ip, lsl #3] + 90cc: 458e cmp lr, r1 + 90ce: d1f6 bne.n 90be return ((blockStates[t_id] >> 1) & 0x07); - 9130: 4484 add ip, r0 - 9132: f89c 40e5 ldrb.w r4, [ip, #229] ; 0xe5 + 90d0: 4484 add ip, r0 + 90d2: f89c 40e5 ldrb.w r4, [ip, #229] ; 0xe5 return value; - 9136: f014 040e ands.w r4, r4, #14 - 913a: bf18 it ne - 913c: 2401 movne r4, #1 + 90d6: f014 040e ands.w r4, r4, #14 + 90da: bf18 it ne + 90dc: 2401 movne r4, #1 if(getBlockChannel(n) != c1){ - 913e: 42a2 cmp r2, r4 + 90de: 42a2 cmp r2, r4 fetchSysEx(BMC_FAS3_FUNC_ID_CHANNEL, t_block, t_channel, BMC_FAS3_FETCH_TYPE_14_AND_7_BIT); - 9140: f04f 0402 mov.w r4, #2 - 9144: bf18 it ne - 9146: 4613 movne r3, r2 - 9148: 460a mov r2, r1 - 914a: 210b movs r1, #11 - 914c: 9400 str r4, [sp, #0] - 914e: f7f8 f93f bl 13d0 - } - 9152: b002 add sp, #8 - 9154: bd10 pop {r4, pc} - 9156: 2400 movs r4, #0 - 9158: e7f1 b.n 913e - 915a: bf00 nop - -0000915c : + 90e0: f04f 0402 mov.w r4, #2 + 90e4: bf18 it ne + 90e6: 4613 movne r3, r2 + 90e8: 460a mov r2, r1 + 90ea: 210b movs r1, #11 + 90ec: 9400 str r4, [sp, #0] + 90ee: f7f8 f96f bl 13d0 + } + 90f2: b002 add sp, #8 + 90f4: bd10 pop {r4, pc} + 90f6: 2400 movs r4, #0 + 90f8: e7f1 b.n 90de + 90fa: bf00 nop + +000090fc : bool isBlockEngaged(uint16_t n){ - 915c: b500 push {lr} + 90fc: b500 push {lr} return bitRead(flags, 0); - 915e: 7fc3 ldrb r3, [r0, #31] + 90fe: 7fc3 ldrb r3, [r0, #31] if(!connected()){ - 9160: f013 0e01 ands.w lr, r3, #1 - 9164: d010 beq.n 9188 + 9100: f013 0e01 ands.w lr, r3, #1 + 9104: d010 beq.n 9128 for(int e = 0; e < BMC_FAS3_BLOCKS_COUNT; e++){ - 9166: 2300 movs r3, #0 - 9168: f500 7cac add.w ip, r0, #344 ; 0x158 - 916c: e002 b.n 9174 - 916e: 3301 adds r3, #1 - 9170: 2b5b cmp r3, #91 ; 0x5b - 9172: d009 beq.n 9188 + 9106: 2300 movs r3, #0 + 9108: f500 7cac add.w ip, r0, #344 ; 0x158 + 910c: e002 b.n 9114 + 910e: 3301 adds r3, #1 + 9110: 2b5b cmp r3, #91 ; 0x5b + 9112: d009 beq.n 9128 if(blocksInfo[e].id == n){ - 9174: f81c 2033 ldrb.w r2, [ip, r3, lsl #3] - 9178: 428a cmp r2, r1 - 917a: d1f8 bne.n 916e + 9114: f81c 2033 ldrb.w r2, [ip, r3, lsl #3] + 9118: 428a cmp r2, r1 + 911a: d1f8 bne.n 910e return bitRead(blockStates[t_id], 0)==0; - 917c: 4418 add r0, r3 - 917e: f890 30e5 ldrb.w r3, [r0, #229] ; 0xe5 - 9182: 43db mvns r3, r3 - 9184: f003 0e01 and.w lr, r3, #1 + 911c: 4418 add r0, r3 + 911e: f890 30e5 ldrb.w r3, [r0, #229] ; 0xe5 + 9122: 43db mvns r3, r3 + 9124: f003 0e01 and.w lr, r3, #1 } - 9188: 4670 mov r0, lr - 918a: f85d fb04 ldr.w pc, [sp], #4 - 918e: bf00 nop + 9128: 4670 mov r0, lr + 912a: f85d fb04 ldr.w pc, [sp], #4 + 912e: bf00 nop -00009190 : +00009130 : return bitRead(flags, 0); - 9190: 7fc2 ldrb r2, [r0, #31] + 9130: 7fc2 ldrb r2, [r0, #31] tunerOff(); } } // Turn tuner on void tunerOn(){ if(connected()){ - 9192: 07d3 lsls r3, r2, #31 - 9194: d504 bpl.n 91a0 - 9196: f890 314f ldrb.w r3, [r0, #335] ; 0x14f + 9132: 07d3 lsls r3, r2, #31 + 9134: d504 bpl.n 9140 + 9136: f890 314f ldrb.w r3, [r0, #335] ; 0x14f if(!tuner.isOn()){ - 919a: f013 0301 ands.w r3, r3, #1 - 919e: d000 beq.n 91a2 - 91a0: 4770 bx lr + 913a: f013 0301 ands.w r3, r3, #1 + 913e: d000 beq.n 9142 + 9140: 4770 bx lr void tunerOn(){ - 91a2: b500 push {lr} - 91a4: b083 sub sp, #12 + 9142: b500 push {lr} + 9144: b083 sub sp, #12 fetchSysEx(BMC_FAS3_FUNC_ID_TUNER, 1, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 91a6: 2201 movs r2, #1 - 91a8: 2111 movs r1, #17 - 91aa: 9300 str r3, [sp, #0] - 91ac: f7f8 f910 bl 13d0 + 9146: 2201 movs r2, #1 + 9148: 2111 movs r1, #17 + 914a: 9300 str r3, [sp, #0] + 914c: f7f8 f940 bl 13d0 } } } - 91b0: b003 add sp, #12 - 91b2: f85d fb04 ldr.w pc, [sp], #4 - 91b6: bf00 nop + 9150: b003 add sp, #12 + 9152: f85d fb04 ldr.w pc, [sp], #4 + 9156: bf00 nop -000091b8 : - 91b8: 7fc2 ldrb r2, [r0, #31] +00009158 : + 9158: 7fc2 ldrb r2, [r0, #31] // Turn tuner off void tunerOff(){ if(connected()){ - 91ba: 07d2 lsls r2, r2, #31 - 91bc: d503 bpl.n 91c6 - 91be: f890 314f ldrb.w r3, [r0, #335] ; 0x14f + 915a: 07d2 lsls r2, r2, #31 + 915c: d503 bpl.n 9166 + 915e: f890 314f ldrb.w r3, [r0, #335] ; 0x14f if(tuner.isOn()){ - 91c2: 07db lsls r3, r3, #31 - 91c4: d400 bmi.n 91c8 - 91c6: 4770 bx lr + 9162: 07db lsls r3, r3, #31 + 9164: d400 bmi.n 9168 + 9166: 4770 bx lr fetchSysEx(BMC_FAS3_FUNC_ID_TUNER, 0, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 91c8: 2300 movs r3, #0 - 91ca: 2111 movs r1, #17 + 9168: 2300 movs r3, #0 + 916a: 2111 movs r1, #17 void tunerOff(){ - 91cc: b500 push {lr} - 91ce: b083 sub sp, #12 + 916c: b500 push {lr} + 916e: b083 sub sp, #12 fetchSysEx(BMC_FAS3_FUNC_ID_TUNER, 0, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 91d0: 461a mov r2, r3 - 91d2: 9300 str r3, [sp, #0] - 91d4: f7f8 f8fc bl 13d0 + 9170: 461a mov r2, r3 + 9172: 9300 str r3, [sp, #0] + 9174: f7f8 f92c bl 13d0 } } } - 91d8: b003 add sp, #12 - 91da: f85d fb04 ldr.w pc, [sp], #4 - 91de: bf00 nop + 9178: b003 add sp, #12 + 917a: f85d fb04 ldr.w pc, [sp], #4 + 917e: bf00 nop -000091e0 : - 91e0: 7fc3 ldrb r3, [r0, #31] +00009180 : + 9180: 7fc3 ldrb r3, [r0, #31] return true; } return false; } void looperControl(uint8_t cmd){ if(!connected()){ - 91e2: 07db lsls r3, r3, #31 - 91e4: d57f bpl.n 92e6 + 9182: 07db lsls r3, r3, #31 + 9184: d57f bpl.n 9286 void looperControl(uint8_t cmd){ - 91e6: b510 push {r4, lr} - 91e8: 4604 mov r4, r0 - 91ea: b082 sub sp, #8 + 9186: b510 push {r4, lr} + 9188: 4604 mov r4, r0 + 918a: b082 sub sp, #8 return; } switch(cmd){ - 91ec: 290b cmp r1, #11 - 91ee: d815 bhi.n 921c - 91f0: e8df f001 tbb [pc, r1] - 91f4: 16083669 .word 0x16083669 - 91f8: 2a272419 .word 0x2a272419 - 91fc: 594f482d .word 0x594f482d + 918c: 290b cmp r1, #11 + 918e: d815 bhi.n 91bc + 9190: e8df f001 tbb [pc, r1] + 9194: 16083669 .word 0x16083669 + 9198: 2a272419 .word 0x2a272419 + 919c: 594f482d .word 0x594f482d break; // stop if either playing/recording/dubbing, otherwise play case BMC_FAS_LOOPER_CONTROL_PLAY_STOP:{ if(device.looper.playing() && !device.looper.recording()){ looperControl(BMC_FAS_LOOPER_CONTROL_STOP); } else if(!device.looper.playing() && !device.looper.recording()){ - 9200: 07db lsls r3, r3, #31 - 9202: d40b bmi.n 921c + 91a0: 07db lsls r3, r3, #31 + 91a2: d40b bmi.n 91bc fetchSysEx(BMC_FAS3_FUNC_ID_LOOPER, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 9204: 2300 movs r3, #0 - 9206: 2201 movs r2, #1 - 9208: 9300 str r3, [sp, #0] - 920a: 210f movs r1, #15 - 920c: 4620 mov r0, r4 - 920e: f7f8 f8df bl 13d0 - 9212: 4b35 ldr r3, [pc, #212] ; (92e8 ) + 91a4: 2300 movs r3, #0 + 91a6: 2201 movs r2, #1 + 91a8: 9300 str r3, [sp, #0] + 91aa: 210f movs r1, #15 + 91ac: 4620 mov r0, r4 + 91ae: f7f8 f90f bl 13d0 + 91b2: 4b35 ldr r3, [pc, #212] ; (9288 ) interval = value; - 9214: 220a movs r2, #10 - 9216: 681b ldr r3, [r3, #0] - 9218: 82a2 strh r2, [r4, #20] + 91b4: 220a movs r2, #10 + 91b6: 681b ldr r3, [r3, #0] + 91b8: 82a2 strh r2, [r4, #20] prevTime = (unsigned long) _BMCTiming::get(); - 921a: 61a3 str r3, [r4, #24] + 91ba: 61a3 str r3, [r4, #24] } break; } } } - 921c: b002 add sp, #8 - 921e: bd10 pop {r4, pc} + 91bc: b002 add sp, #8 + 91be: bd10 pop {r4, pc} fetchSysEx(BMC_FAS3_FUNC_ID_LOOPER, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 9220: 2300 movs r3, #0 - 9222: 2203 movs r2, #3 - 9224: e7f0 b.n 9208 + 91c0: 2300 movs r3, #0 + 91c2: 2203 movs r2, #3 + 91c4: e7f0 b.n 91a8 bool playing(){ return bitRead(data, BMC_FAS_LOOPER_STATE_PLAYING); } - 9226: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 + 91c6: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 if(device.looper.playing() && !device.looper.recording()){ - 922a: 0799 lsls r1, r3, #30 - 922c: d5f6 bpl.n 921c - 922e: f013 0301 ands.w r3, r3, #1 - 9232: d1e7 bne.n 9204 + 91ca: 0799 lsls r1, r3, #30 + 91cc: d5f6 bpl.n 91bc + 91ce: f013 0301 ands.w r3, r3, #1 + 91d2: d1e7 bne.n 91a4 fetchSysEx(BMC_FAS3_FUNC_ID_LOOPER, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 9234: 461a mov r2, r3 - 9236: 210f movs r1, #15 - 9238: 9300 str r3, [sp, #0] - 923a: e016 b.n 926a - 923c: 2300 movs r3, #0 - 923e: 2204 movs r2, #4 - 9240: e7e2 b.n 9208 - 9242: 2300 movs r3, #0 - 9244: 2205 movs r2, #5 - 9246: e7df b.n 9208 - 9248: 2300 movs r3, #0 - 924a: 2202 movs r2, #2 - 924c: e7dc b.n 9208 - 924e: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 + 91d4: 461a mov r2, r3 + 91d6: 210f movs r1, #15 + 91d8: 9300 str r3, [sp, #0] + 91da: e016 b.n 920a + 91dc: 2300 movs r3, #0 + 91de: 2204 movs r2, #4 + 91e0: e7e2 b.n 91a8 + 91e2: 2300 movs r3, #0 + 91e4: 2205 movs r2, #5 + 91e6: e7df b.n 91a8 + 91e8: 2300 movs r3, #0 + 91ea: 2202 movs r2, #2 + 91ec: e7dc b.n 91a8 + 91ee: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 if(!device.looper.playing() && !device.looper.recording()){ - 9252: 079a lsls r2, r3, #30 - 9254: d43c bmi.n 92d0 - 9256: 07db lsls r3, r3, #31 - 9258: d4d4 bmi.n 9204 - 925a: 8923 ldrh r3, [r4, #8] + 91f2: 079a lsls r2, r3, #30 + 91f4: d43c bmi.n 9270 + 91f6: 07db lsls r3, r3, #31 + 91f8: d4d4 bmi.n 91a4 + 91fa: 8923 ldrh r3, [r4, #8] if(looperTrackRecorded()){ - 925c: 07d8 lsls r0, r3, #31 - 925e: d4d1 bmi.n 9204 + 91fc: 07d8 lsls r0, r3, #31 + 91fe: d4d1 bmi.n 91a4 fetchSysEx(BMC_FAS3_FUNC_ID_LOOPER, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 9260: 2300 movs r3, #0 - 9262: 210f movs r1, #15 - 9264: 4620 mov r0, r4 - 9266: 461a mov r2, r3 - 9268: 9300 str r3, [sp, #0] - 926a: f7f8 f8b1 bl 13d0 + 9200: 2300 movs r3, #0 + 9202: 210f movs r1, #15 + 9204: 4620 mov r0, r4 + 9206: 461a mov r2, r3 + 9208: 9300 str r3, [sp, #0] + 920a: f7f8 f8e1 bl 13d0 bitSet(flags, bit); - 926e: 8923 ldrh r3, [r4, #8] - 9270: 4a1d ldr r2, [pc, #116] ; (92e8 ) + 920e: 8923 ldrh r3, [r4, #8] + 9210: 4a1d ldr r2, [pc, #116] ; (9288 ) interval = value; - 9272: 210a movs r1, #10 - 9274: f043 0301 orr.w r3, r3, #1 - 9278: 6812 ldr r2, [r2, #0] - 927a: 82a1 strh r1, [r4, #20] - 927c: 8123 strh r3, [r4, #8] + 9212: 210a movs r1, #10 + 9214: f043 0301 orr.w r3, r3, #1 + 9218: 6812 ldr r2, [r2, #0] + 921a: 82a1 strh r1, [r4, #20] + 921c: 8123 strh r3, [r4, #8] prevTime = (unsigned long) _BMCTiming::get(); - 927e: 61a2 str r2, [r4, #24] + 921e: 61a2 str r2, [r4, #24] } - 9280: b002 add sp, #8 - 9282: bd10 pop {r4, pc} - 9284: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 + 9220: b002 add sp, #8 + 9222: bd10 pop {r4, pc} + 9224: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 if(!device.looper.playing() && !device.looper.recording()){ - 9288: 0799 lsls r1, r3, #30 - 928a: d421 bmi.n 92d0 - 928c: 07da lsls r2, r3, #31 - 928e: d4e7 bmi.n 9260 - 9290: e7e3 b.n 925a + 9228: 0799 lsls r1, r3, #30 + 922a: d421 bmi.n 9270 + 922c: 07da lsls r2, r3, #31 + 922e: d4e7 bmi.n 9200 + 9230: e7e3 b.n 91fa if((device.looper.getData() & 0x07) > 0){ - 9292: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 - 9296: 0758 lsls r0, r3, #29 - 9298: d120 bne.n 92dc + 9232: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 + 9236: 0758 lsls r0, r3, #29 + 9238: d120 bne.n 927c bitClear(flags, bit); - 929a: 8923 ldrh r3, [r4, #8] - 929c: f023 0301 bic.w r3, r3, #1 - 92a0: 8123 strh r3, [r4, #8] + 923a: 8923 ldrh r3, [r4, #8] + 923c: f023 0301 bic.w r3, r3, #1 + 9240: 8123 strh r3, [r4, #8] } - 92a2: b002 add sp, #8 - 92a4: bd10 pop {r4, pc} - 92a6: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 + 9242: b002 add sp, #8 + 9244: bd10 pop {r4, pc} + 9246: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 if(device.looper.playing() && !device.looper.recording()){ - 92aa: 0799 lsls r1, r3, #30 - 92ac: d5a8 bpl.n 9200 - 92ae: 07da lsls r2, r3, #31 - 92b0: d4b4 bmi.n 921c + 924a: 0799 lsls r1, r3, #30 + 924c: d5a8 bpl.n 91a0 + 924e: 07da lsls r2, r3, #31 + 9250: d4b4 bmi.n 91bc if(device.looper.recording() || device.looper.overdubbing()){ - 92b2: 0759 lsls r1, r3, #29 - 92b4: d50f bpl.n 92d6 + 9252: 0759 lsls r1, r3, #29 + 9254: d50f bpl.n 9276 looperControl(BMC_FAS_LOOPER_CONTROL_PLAY); - 92b6: 2102 movs r1, #2 - 92b8: 4620 mov r0, r4 - 92ba: f7ff ff91 bl 91e0 - 92be: 7fe3 ldrb r3, [r4, #31] + 9256: 2102 movs r1, #2 + 9258: 4620 mov r0, r4 + 925a: f7ff ff91 bl 9180 + 925e: 7fe3 ldrb r3, [r4, #31] if(!connected()){ - 92c0: 07db lsls r3, r3, #31 - 92c2: d49f bmi.n 9204 - 92c4: e7aa b.n 921c - 92c6: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 + 9260: 07db lsls r3, r3, #31 + 9262: d49f bmi.n 91a4 + 9264: e7aa b.n 91bc + 9266: f890 3023 ldrb.w r3, [r0, #35] ; 0x23 if(device.looper.recording() || device.looper.overdubbing()){ - 92ca: 07d8 lsls r0, r3, #31 - 92cc: d4f3 bmi.n 92b6 - 92ce: e7f0 b.n 92b2 + 926a: 07d8 lsls r0, r3, #31 + 926c: d4f3 bmi.n 9256 + 926e: e7f0 b.n 9252 } else if(device.looper.playing() && !device.looper.recording()){ - 92d0: 07db lsls r3, r3, #31 - 92d2: d497 bmi.n 9204 - 92d4: e7c4 b.n 9260 + 9270: 07db lsls r3, r3, #31 + 9272: d497 bmi.n 91a4 + 9274: e7c4 b.n 9200 } else if(!device.looper.recording() && device.looper.playing()){ - 92d6: 079a lsls r2, r3, #30 - 92d8: d494 bmi.n 9204 - 92da: e79f b.n 921c + 9276: 079a lsls r2, r3, #30 + 9278: d494 bmi.n 91a4 + 927a: e79f b.n 91bc looperControl(BMC_FAS_LOOPER_CONTROL_STOP); - 92dc: 2100 movs r1, #0 - 92de: 4620 mov r0, r4 - 92e0: f7ff ff7e bl 91e0 - 92e4: e7d9 b.n 929a - 92e6: 4770 bx lr - 92e8: 2000bae8 .word 0x2000bae8 - -000092ec : + 927c: 2100 movs r1, #0 + 927e: 4620 mov r0, r4 + 9280: f7ff ff7e bl 9180 + 9284: e7d9 b.n 923a + 9286: 4770 bx lr + 9288: 2000bb08 .word 0x2000bb08 + +0000928c : void command(uint8_t t_id, uint8_t t_valueA, uint8_t t_valueB){ - 92ec: b570 push {r4, r5, r6, lr} - 92ee: 4604 mov r4, r0 - 92f0: b084 sub sp, #16 - 92f2: 4616 mov r6, r2 - 92f4: 461d mov r5, r3 + 928c: b570 push {r4, r5, r6, lr} + 928e: 4604 mov r4, r0 + 9290: b084 sub sp, #16 + 9292: 4616 mov r6, r2 + 9294: 461d mov r5, r3 switch(t_id){ - 92f6: 2905 cmp r1, #5 - 92f8: d810 bhi.n 931c - 92fa: e8df f001 tbb [pc, r1] - 92fe: 3003 .short 0x3003 - 9300: 115d4a35 .word 0x115d4a35 + 9296: 2905 cmp r1, #5 + 9298: d810 bhi.n 92bc + 929a: e8df f001 tbb [pc, r1] + 929e: 3003 .short 0x3003 + 92a0: 115d4a35 .word 0x115d4a35 midi.sendControlChange(port, channel, BMC_HELIX_CC_TAP, 127); - 9304: 2101 movs r1, #1 - 9306: 2200 movs r2, #0 - 9308: 257f movs r5, #127 ; 0x7f - 930a: 2340 movs r3, #64 ; 0x40 + 92a4: 2101 movs r1, #1 + 92a6: 2200 movs r2, #0 + 92a8: 257f movs r5, #127 ; 0x7f + 92aa: 2340 movs r3, #64 ; 0x40 midi.sendControlChange(port, channel, BMC_HELIX_CC_TUNER, 127); - 930c: e9cd 2101 strd r2, r1, [sp, #4] - 9310: 7962 ldrb r2, [r4, #5] - 9312: 79a1 ldrb r1, [r4, #6] - 9314: 6820 ldr r0, [r4, #0] - 9316: 9500 str r5, [sp, #0] - 9318: f01a f860 bl 233dc - } - 931c: b004 add sp, #16 - 931e: bd70 pop {r4, r5, r6, pc} + 92ac: e9cd 2101 strd r2, r1, [sp, #4] + 92b0: 7962 ldrb r2, [r4, #5] + 92b2: 79a1 ldrb r1, [r4, #6] + 92b4: 6820 ldr r0, [r4, #0] + 92b6: 9500 str r5, [sp, #0] + 92b8: f01a f8f2 bl 234a0 + } + 92bc: b004 add sp, #16 + 92be: bd70 pop {r4, r5, r6, pc} switch(id){ - 9320: 7903 ldrb r3, [r0, #4] + 92c0: 7903 ldrb r3, [r0, #4] BMCScroller scroller(snapshot, 0, getMaxSnapshots()-1); - 9322: 79c2 ldrb r2, [r0, #7] + 92c2: 79c2 ldrb r2, [r0, #7] switch(id){ - 9324: 2b02 cmp r3, #2 - 9326: d8f9 bhi.n 931c - 9328: 4e5d ldr r6, [pc, #372] ; (94a0 ) - 932a: 5cf1 ldrb r1, [r6, r3] + 92c4: 2b02 cmp r3, #2 + 92c6: d8f9 bhi.n 92bc + 92c8: 4e5d ldr r6, [pc, #372] ; (9440 ) + 92ca: 5cf1 ldrb r1, [r6, r3] return (newValue < min) ? max : newValue; - 932c: 2a00 cmp r2, #0 - 932e: d06c beq.n 940a - 9330: 1e55 subs r5, r2, #1 + 92cc: 2a00 cmp r2, #0 + 92ce: d06c beq.n 93aa + 92d0: 1e55 subs r5, r2, #1 if(isDevice(BMC_HELIX_STOMP_ID)){ - 9332: 2b02 cmp r3, #2 - 9334: b2ed uxtb r5, r5 - 9336: d16c bne.n 9412 + 92d2: 2b02 cmp r3, #2 + 92d4: b2ed uxtb r5, r5 + 92d6: d16c bne.n 93b2 if(t_value==8 || t_value==9 || validateSnapshot(t_value)){ - 9338: 3a09 subs r2, #9 - 933a: 2a01 cmp r2, #1 - 933c: d94d bls.n 93da - 933e: 2d02 cmp r5, #2 - 9340: d8ec bhi.n 931c + 92d8: 3a09 subs r2, #9 + 92da: 2a01 cmp r2, #1 + 92dc: d94d bls.n 937a + 92de: 2d02 cmp r5, #2 + 92e0: d8ec bhi.n 92bc midi.sendControlChange(port, channel, BMC_HELIX_CC_SNAPSHOT, t_value); - 9342: 2101 movs r1, #1 - 9344: 2200 movs r2, #0 - 9346: 9500 str r5, [sp, #0] - 9348: 2345 movs r3, #69 ; 0x45 - 934a: e9cd 2101 strd r2, r1, [sp, #4] - 934e: 7962 ldrb r2, [r4, #5] - 9350: 79a1 ldrb r1, [r4, #6] - 9352: 6820 ldr r0, [r4, #0] - 9354: f01a f842 bl 233dc + 92e2: 2101 movs r1, #1 + 92e4: 2200 movs r2, #0 + 92e6: 9500 str r5, [sp, #0] + 92e8: 2345 movs r3, #69 ; 0x45 + 92ea: e9cd 2101 strd r2, r1, [sp, #4] + 92ee: 7962 ldrb r2, [r4, #5] + 92f0: 79a1 ldrb r1, [r4, #6] + 92f2: 6820 ldr r0, [r4, #0] + 92f4: f01a f8d4 bl 234a0 snapshot = t_value; - 9358: 71e5 strb r5, [r4, #7] + 92f8: 71e5 strb r5, [r4, #7] } - 935a: b004 add sp, #16 - 935c: bd70 pop {r4, r5, r6, pc} + 92fa: b004 add sp, #16 + 92fc: bd70 pop {r4, r5, r6, pc} midi.sendControlChange(port, channel, BMC_HELIX_CC_TUNER, 127); - 935e: 2101 movs r1, #1 - 9360: 2200 movs r2, #0 - 9362: 257f movs r5, #127 ; 0x7f - 9364: 2344 movs r3, #68 ; 0x44 - 9366: e7d1 b.n 930c + 92fe: 2101 movs r1, #1 + 9300: 2200 movs r2, #0 + 9302: 257f movs r5, #127 ; 0x7f + 9304: 2344 movs r3, #68 ; 0x44 + 9306: e7d1 b.n 92ac uint8_t port = 0; uint8_t snapshot = 0; uint8_t maxSnapshots = 3; bool isDevice(uint8_t t_value){ return id == t_value; - 9368: 7903 ldrb r3, [r0, #4] + 9308: 7903 ldrb r3, [r0, #4] if(isDevice(BMC_HELIX_STOMP_ID)){ - 936a: 2b02 cmp r3, #2 - 936c: d05b beq.n 9426 + 930a: 2b02 cmp r3, #2 + 930c: d05b beq.n 93c6 switch(id){ - 936e: d8d5 bhi.n 931c + 930e: d8d5 bhi.n 92bc if(validateSnapshot(t_value)){ - 9370: 4a4b ldr r2, [pc, #300] ; (94a0 ) - 9372: 5cd3 ldrb r3, [r2, r3] - 9374: 42b3 cmp r3, r6 - 9376: d9d1 bls.n 931c + 9310: 4a4b ldr r2, [pc, #300] ; (9440 ) + 9312: 5cd3 ldrb r3, [r2, r3] + 9314: 42b3 cmp r3, r6 + 9316: d9d1 bls.n 92bc midi.sendControlChange(port, channel, BMC_HELIX_CC_SNAPSHOT, t_value); - 9378: 2101 movs r1, #1 - 937a: 2200 movs r2, #0 - 937c: 9600 str r6, [sp, #0] - 937e: 2345 movs r3, #69 ; 0x45 - 9380: e9cd 2101 strd r2, r1, [sp, #4] - 9384: 7962 ldrb r2, [r4, #5] - 9386: 79a1 ldrb r1, [r4, #6] - 9388: 6820 ldr r0, [r4, #0] - 938a: f01a f827 bl 233dc + 9318: 2101 movs r1, #1 + 931a: 2200 movs r2, #0 + 931c: 9600 str r6, [sp, #0] + 931e: 2345 movs r3, #69 ; 0x45 + 9320: e9cd 2101 strd r2, r1, [sp, #4] + 9324: 7962 ldrb r2, [r4, #5] + 9326: 79a1 ldrb r1, [r4, #6] + 9328: 6820 ldr r0, [r4, #0] + 932a: f01a f8b9 bl 234a0 snapshot = t_value; - 938e: 71e6 strb r6, [r4, #7] - 9390: e7c4 b.n 931c + 932e: 71e6 strb r6, [r4, #7] + 9330: e7c4 b.n 92bc switch(id){ - 9392: 7903 ldrb r3, [r0, #4] - 9394: 2b02 cmp r3, #2 - 9396: d8c1 bhi.n 931c + 9332: 7903 ldrb r3, [r0, #4] + 9334: 2b02 cmp r3, #2 + 9336: d8c1 bhi.n 92bc if(validateSnapshot(a) && validateSnapshot(b)){ - 9398: 4a41 ldr r2, [pc, #260] ; (94a0 ) - 939a: 42ae cmp r6, r5 - 939c: 5cd1 ldrb r1, [r2, r3] - 939e: 4632 mov r2, r6 - 93a0: bf38 it cc - 93a2: 462a movcc r2, r5 - 93a4: b2d2 uxtb r2, r2 - 93a6: 4291 cmp r1, r2 - 93a8: d9b8 bls.n 931c + 9338: 4a41 ldr r2, [pc, #260] ; (9440 ) + 933a: 42ae cmp r6, r5 + 933c: 5cd1 ldrb r1, [r2, r3] + 933e: 4632 mov r2, r6 + 9340: bf38 it cc + 9342: 462a movcc r2, r5 + 9344: b2d2 uxtb r2, r2 + 9346: 4291 cmp r1, r2 + 9348: d9b8 bls.n 92bc setSnapshot((snapshot==a)?b:a); - 93aa: 79c2 ldrb r2, [r0, #7] - 93ac: 42b2 cmp r2, r6 - 93ae: bf18 it ne - 93b0: 4635 movne r5, r6 + 934a: 79c2 ldrb r2, [r0, #7] + 934c: 42b2 cmp r2, r6 + 934e: bf18 it ne + 9350: 4635 movne r5, r6 if(isDevice(BMC_HELIX_STOMP_ID)){ - 93b2: 2b02 cmp r3, #2 - 93b4: d0c3 beq.n 933e - 93b6: e7c4 b.n 9342 + 9352: 2b02 cmp r3, #2 + 9354: d0c3 beq.n 92de + 9356: e7c4 b.n 92e2 switch(id){ - 93b8: 7903 ldrb r3, [r0, #4] + 9358: 7903 ldrb r3, [r0, #4] BMCScroller scroller(snapshot, 0, getMaxSnapshots()-1); - 93ba: 79c1 ldrb r1, [r0, #7] + 935a: 79c1 ldrb r1, [r0, #7] switch(id){ - 93bc: 2b02 cmp r3, #2 - 93be: d8ad bhi.n 931c - 93c0: 4e37 ldr r6, [pc, #220] ; (94a0 ) + 935c: 2b02 cmp r3, #2 + 935e: d8ad bhi.n 92bc + 9360: 4e37 ldr r6, [pc, #220] ; (9440 ) long newValue = (value+amount); - 93c2: 1c4d adds r5, r1, #1 - 93c4: 5cf0 ldrb r0, [r6, r3] + 9362: 1c4d adds r5, r1, #1 + 9364: 5cf0 ldrb r0, [r6, r3] BMCScroller scroller(snapshot, 0, getMaxSnapshots()-1); - 93c6: 1e42 subs r2, r0, #1 + 9366: 1e42 subs r2, r0, #1 return (newValue > max || newValue < min) ? min : newValue; - 93c8: b2d2 uxtb r2, r2 - 93ca: 4295 cmp r5, r2 - 93cc: dc24 bgt.n 9418 + 9368: b2d2 uxtb r2, r2 + 936a: 4295 cmp r5, r2 + 936c: dc24 bgt.n 93b8 if(isDevice(BMC_HELIX_STOMP_ID)){ - 93ce: 2b02 cmp r3, #2 - 93d0: b2ed uxtb r5, r5 - 93d2: d125 bne.n 9420 + 936e: 2b02 cmp r3, #2 + 9370: b2ed uxtb r5, r5 + 9372: d125 bne.n 93c0 if(t_value==8 || t_value==9 || validateSnapshot(t_value)){ - 93d4: 3907 subs r1, #7 - 93d6: 2901 cmp r1, #1 - 93d8: d8b1 bhi.n 933e + 9374: 3907 subs r1, #7 + 9376: 2901 cmp r1, #1 + 9378: d8b1 bhi.n 92de midi.sendControlChange(port, channel, BMC_HELIX_CC_SNAPSHOT, t_value); - 93da: 2201 movs r2, #1 - 93dc: 2300 movs r3, #0 - 93de: 9500 str r5, [sp, #0] - 93e0: e9cd 3201 strd r3, r2, [sp, #4] - 93e4: 2345 movs r3, #69 ; 0x45 - 93e6: 7962 ldrb r2, [r4, #5] - 93e8: 79a1 ldrb r1, [r4, #6] - 93ea: 6820 ldr r0, [r4, #0] - 93ec: f019 fff6 bl 233dc + 937a: 2201 movs r2, #1 + 937c: 2300 movs r3, #0 + 937e: 9500 str r5, [sp, #0] + 9380: e9cd 3201 strd r3, r2, [sp, #4] + 9384: 2345 movs r3, #69 ; 0x45 + 9386: 7962 ldrb r2, [r4, #5] + 9388: 79a1 ldrb r1, [r4, #6] + 938a: 6820 ldr r0, [r4, #0] + 938c: f01a f888 bl 234a0 if(t_value==8){ - 93f0: 2d08 cmp r5, #8 - 93f2: d11f bne.n 9434 + 9390: 2d08 cmp r5, #8 + 9392: d11f bne.n 93d4 switch(id){ - 93f4: 7922 ldrb r2, [r4, #4] + 9394: 7922 ldrb r2, [r4, #4] if((snapshot+1)>=getMaxSnapshots()){ - 93f6: 79e3 ldrb r3, [r4, #7] + 9396: 79e3 ldrb r3, [r4, #7] switch(id){ - 93f8: 2a02 cmp r2, #2 - 93fa: d803 bhi.n 9404 + 9398: 2a02 cmp r2, #2 + 939a: d803 bhi.n 93a4 if((snapshot+1)>=getMaxSnapshots()){ - 93fc: 3301 adds r3, #1 - 93fe: 5cb2 ldrb r2, [r6, r2] - 9400: 4293 cmp r3, r2 - 9402: db8b blt.n 931c + 939c: 3301 adds r3, #1 + 939e: 5cb2 ldrb r2, [r6, r2] + 93a0: 4293 cmp r3, r2 + 93a2: db8b blt.n 92bc snapshot = 0; - 9404: 2300 movs r3, #0 - 9406: 71e3 strb r3, [r4, #7] - 9408: e788 b.n 931c + 93a4: 2300 movs r3, #0 + 93a6: 71e3 strb r3, [r4, #7] + 93a8: e788 b.n 92bc BMCScroller scroller(snapshot, 0, getMaxSnapshots()-1); - 940a: 1e4d subs r5, r1, #1 + 93aa: 1e4d subs r5, r1, #1 if(isDevice(BMC_HELIX_STOMP_ID)){ - 940c: 2b02 cmp r3, #2 + 93ac: 2b02 cmp r3, #2 BMCScroller scroller(snapshot, 0, getMaxSnapshots()-1); - 940e: b2ed uxtb r5, r5 + 93ae: b2ed uxtb r5, r5 if(isDevice(BMC_HELIX_STOMP_ID)){ - 9410: d095 beq.n 933e + 93b0: d095 beq.n 92de if(validateSnapshot(t_value)){ - 9412: 428d cmp r5, r1 - 9414: d395 bcc.n 9342 - 9416: e781 b.n 931c + 93b2: 428d cmp r5, r1 + 93b4: d395 bcc.n 92e2 + 93b6: e781 b.n 92bc if(isDevice(BMC_HELIX_STOMP_ID)){ - 9418: 2b02 cmp r3, #2 - 941a: f04f 0500 mov.w r5, #0 - 941e: d090 beq.n 9342 + 93b8: 2b02 cmp r3, #2 + 93ba: f04f 0500 mov.w r5, #0 + 93be: d090 beq.n 92e2 if(validateSnapshot(t_value)){ - 9420: 42a8 cmp r0, r5 - 9422: d88e bhi.n 9342 - 9424: e77a b.n 931c + 93c0: 42a8 cmp r0, r5 + 93c2: d88e bhi.n 92e2 + 93c4: e77a b.n 92bc if(t_value==8 || t_value==9 || validateSnapshot(t_value)){ - 9426: f1a2 0308 sub.w r3, r2, #8 - 942a: 2b01 cmp r3, #1 - 942c: d910 bls.n 9450 - 942e: 2a02 cmp r2, #2 - 9430: d9a2 bls.n 9378 - 9432: e773 b.n 931c + 93c6: f1a2 0308 sub.w r3, r2, #8 + 93ca: 2b01 cmp r3, #1 + 93cc: d910 bls.n 93f0 + 93ce: 2a02 cmp r2, #2 + 93d0: d9a2 bls.n 9318 + 93d2: e773 b.n 92bc } else if(t_value==9){ - 9434: 2d09 cmp r5, #9 - 9436: d18f bne.n 9358 + 93d4: 2d09 cmp r5, #9 + 93d6: d18f bne.n 92f8 if(snapshot==0){ - 9438: 79e3 ldrb r3, [r4, #7] - 943a: 2b00 cmp r3, #0 - 943c: f47f af6e bne.w 931c + 93d8: 79e3 ldrb r3, [r4, #7] + 93da: 2b00 cmp r3, #0 + 93dc: f47f af6e bne.w 92bc switch(id){ - 9440: 7923 ldrb r3, [r4, #4] - 9442: 2b02 cmp r3, #2 - 9444: d829 bhi.n 949a + 93e0: 7923 ldrb r3, [r4, #4] + 93e2: 2b02 cmp r3, #2 + 93e4: d829 bhi.n 943a snapshot = getMaxSnapshots()-1; - 9446: 5cf3 ldrb r3, [r6, r3] - 9448: 3b01 subs r3, #1 - 944a: b2db uxtb r3, r3 + 93e6: 5cf3 ldrb r3, [r6, r3] + 93e8: 3b01 subs r3, #1 + 93ea: b2db uxtb r3, r3 snapshot = 0; - 944c: 71e3 strb r3, [r4, #7] - 944e: e765 b.n 931c + 93ec: 71e3 strb r3, [r4, #7] + 93ee: e765 b.n 92bc midi.sendControlChange(port, channel, BMC_HELIX_CC_SNAPSHOT, t_value); - 9450: 2101 movs r1, #1 - 9452: 2200 movs r2, #0 - 9454: 9600 str r6, [sp, #0] - 9456: 2345 movs r3, #69 ; 0x45 - 9458: e9cd 2101 strd r2, r1, [sp, #4] - 945c: 7942 ldrb r2, [r0, #5] - 945e: 7981 ldrb r1, [r0, #6] - 9460: 6800 ldr r0, [r0, #0] - 9462: f019 ffbb bl 233dc + 93f0: 2101 movs r1, #1 + 93f2: 2200 movs r2, #0 + 93f4: 9600 str r6, [sp, #0] + 93f6: 2345 movs r3, #69 ; 0x45 + 93f8: e9cd 2101 strd r2, r1, [sp, #4] + 93fc: 7942 ldrb r2, [r0, #5] + 93fe: 7981 ldrb r1, [r0, #6] + 9400: 6800 ldr r0, [r0, #0] + 9402: f01a f84d bl 234a0 if(t_value==8){ - 9466: 2e08 cmp r6, #8 - 9468: d10a bne.n 9480 + 9406: 2e08 cmp r6, #8 + 9408: d10a bne.n 9420 switch(id){ - 946a: 7922 ldrb r2, [r4, #4] + 940a: 7922 ldrb r2, [r4, #4] if((snapshot+1)>=getMaxSnapshots()){ - 946c: 79e3 ldrb r3, [r4, #7] + 940c: 79e3 ldrb r3, [r4, #7] switch(id){ - 946e: 2a02 cmp r2, #2 - 9470: d8c8 bhi.n 9404 + 940e: 2a02 cmp r2, #2 + 9410: d8c8 bhi.n 93a4 if((snapshot+1)>=getMaxSnapshots()){ - 9472: 490b ldr r1, [pc, #44] ; (94a0 ) - 9474: 3301 adds r3, #1 - 9476: 5c8a ldrb r2, [r1, r2] - 9478: 4293 cmp r3, r2 - 947a: f6ff af4f blt.w 931c - 947e: e7c1 b.n 9404 + 9412: 490b ldr r1, [pc, #44] ; (9440 ) + 9414: 3301 adds r3, #1 + 9416: 5c8a ldrb r2, [r1, r2] + 9418: 4293 cmp r3, r2 + 941a: f6ff af4f blt.w 92bc + 941e: e7c1 b.n 93a4 if(snapshot==0){ - 9480: 79e3 ldrb r3, [r4, #7] - 9482: 2b00 cmp r3, #0 - 9484: f47f af4a bne.w 931c + 9420: 79e3 ldrb r3, [r4, #7] + 9422: 2b00 cmp r3, #0 + 9424: f47f af4a bne.w 92bc switch(id){ - 9488: 7923 ldrb r3, [r4, #4] - 948a: 2b02 cmp r3, #2 - 948c: d805 bhi.n 949a + 9428: 7923 ldrb r3, [r4, #4] + 942a: 2b02 cmp r3, #2 + 942c: d805 bhi.n 943a snapshot = getMaxSnapshots()-1; - 948e: 4a04 ldr r2, [pc, #16] ; (94a0 ) - 9490: 5cd3 ldrb r3, [r2, r3] - 9492: 3b01 subs r3, #1 - 9494: b2db uxtb r3, r3 + 942e: 4a04 ldr r2, [pc, #16] ; (9440 ) + 9430: 5cd3 ldrb r3, [r2, r3] + 9432: 3b01 subs r3, #1 + 9434: b2db uxtb r3, r3 snapshot = 0; - 9496: 71e3 strb r3, [r4, #7] - 9498: e740 b.n 931c + 9436: 71e3 strb r3, [r4, #7] + 9438: e740 b.n 92bc switch(id){ - 949a: 23ff movs r3, #255 ; 0xff + 943a: 23ff movs r3, #255 ; 0xff snapshot = 0; - 949c: 71e3 strb r3, [r4, #7] - 949e: e73d b.n 931c - 94a0: 20000fac .word 0x20000fac + 943c: 71e3 strb r3, [r4, #7] + 943e: e73d b.n 92bc + 9440: 20000fac .word 0x20000fac -000094a4 : +00009444 : void snapshotScroll(bool up){ - 94a4: b530 push {r4, r5, lr} + 9444: b530 push {r4, r5, lr} switch(id){ - 94a6: 7902 ldrb r2, [r0, #4] + 9446: 7902 ldrb r2, [r0, #4] void snapshotScroll(bool up){ - 94a8: b085 sub sp, #20 - 94aa: 4604 mov r4, r0 + 9448: b085 sub sp, #20 + 944a: 4604 mov r4, r0 BMCScroller scroller(snapshot, 0, getMaxSnapshots()-1); - 94ac: 79c3 ldrb r3, [r0, #7] + 944c: 79c3 ldrb r3, [r0, #7] switch(id){ - 94ae: 2a02 cmp r2, #2 - 94b0: d80e bhi.n 94d0 - 94b2: 482c ldr r0, [pc, #176] ; (9564 ) - 94b4: 5c80 ldrb r0, [r0, r2] + 944e: 2a02 cmp r2, #2 + 9450: d80e bhi.n 9470 + 9452: 482c ldr r0, [pc, #176] ; (9504 ) + 9454: 5c80 ldrb r0, [r0, r2] BMCScroller scroller(snapshot, 0, getMaxSnapshots()-1); - 94b6: 1e45 subs r5, r0, #1 - 94b8: b2ed uxtb r5, r5 + 9456: 1e45 subs r5, r0, #1 + 9458: b2ed uxtb r5, r5 if(direction==BMC_SCROLL_UP){ - 94ba: b169 cbz r1, 94d8 + 945a: b169 cbz r1, 9478 long newValue = (value+amount); - 94bc: 3301 adds r3, #1 + 945c: 3301 adds r3, #1 return (newValue > max || newValue < min) ? min : newValue; - 94be: 42ab cmp r3, r5 - 94c0: dc0e bgt.n 94e0 + 945e: 42ab cmp r3, r5 + 9460: dc0e bgt.n 9480 return (newValue < min) ? max : newValue; - 94c2: b2dd uxtb r5, r3 + 9462: b2dd uxtb r5, r3 if(isDevice(BMC_HELIX_STOMP_ID)){ - 94c4: 2a02 cmp r2, #2 - 94c6: d01d beq.n 9504 + 9464: 2a02 cmp r2, #2 + 9466: d01d beq.n 94a4 if(validateSnapshot(t_value)){ - 94c8: 42a8 cmp r0, r5 - 94ca: d80d bhi.n 94e8 + 9468: 42a8 cmp r0, r5 + 946a: d80d bhi.n 9488 } - 94cc: b005 add sp, #20 - 94ce: bd30 pop {r4, r5, pc} + 946c: b005 add sp, #20 + 946e: bd30 pop {r4, r5, pc} switch(id){ - 94d0: 25ff movs r5, #255 ; 0xff - 94d2: 2000 movs r0, #0 + 9470: 25ff movs r5, #255 ; 0xff + 9472: 2000 movs r0, #0 if(direction==BMC_SCROLL_UP){ - 94d4: 2900 cmp r1, #0 - 94d6: d1f1 bne.n 94bc + 9474: 2900 cmp r1, #0 + 9476: d1f1 bne.n 945c return (newValue < min) ? max : newValue; - 94d8: 2b00 cmp r3, #0 - 94da: d0f3 beq.n 94c4 - 94dc: 3b01 subs r3, #1 - 94de: e7f0 b.n 94c2 + 9478: 2b00 cmp r3, #0 + 947a: d0f3 beq.n 9464 + 947c: 3b01 subs r3, #1 + 947e: e7f0 b.n 9462 if(isDevice(BMC_HELIX_STOMP_ID)){ - 94e0: 2a02 cmp r2, #2 + 9480: 2a02 cmp r2, #2 return (newValue > max || newValue < min) ? min : newValue; - 94e2: f04f 0500 mov.w r5, #0 - 94e6: d1ef bne.n 94c8 + 9482: f04f 0500 mov.w r5, #0 + 9486: d1ef bne.n 9468 midi.sendControlChange(port, channel, BMC_HELIX_CC_SNAPSHOT, t_value); - 94e8: 2101 movs r1, #1 - 94ea: 2200 movs r2, #0 - 94ec: 9500 str r5, [sp, #0] - 94ee: 2345 movs r3, #69 ; 0x45 - 94f0: e9cd 2101 strd r2, r1, [sp, #4] - 94f4: 7962 ldrb r2, [r4, #5] - 94f6: 79a1 ldrb r1, [r4, #6] - 94f8: 6820 ldr r0, [r4, #0] - 94fa: f019 ff6f bl 233dc + 9488: 2101 movs r1, #1 + 948a: 2200 movs r2, #0 + 948c: 9500 str r5, [sp, #0] + 948e: 2345 movs r3, #69 ; 0x45 + 9490: e9cd 2101 strd r2, r1, [sp, #4] + 9494: 7962 ldrb r2, [r4, #5] + 9496: 79a1 ldrb r1, [r4, #6] + 9498: 6820 ldr r0, [r4, #0] + 949a: f01a f801 bl 234a0 snapshot = t_value; - 94fe: 71e5 strb r5, [r4, #7] + 949e: 71e5 strb r5, [r4, #7] } - 9500: b005 add sp, #20 - 9502: bd30 pop {r4, r5, pc} + 94a0: b005 add sp, #20 + 94a2: bd30 pop {r4, r5, pc} if(t_value==8 || t_value==9 || validateSnapshot(t_value)){ - 9504: f1a5 0308 sub.w r3, r5, #8 - 9508: 2b01 cmp r3, #1 - 950a: d903 bls.n 9514 - 950c: 2d02 cmp r5, #2 - 950e: d9eb bls.n 94e8 - } - 9510: b005 add sp, #20 - 9512: bd30 pop {r4, r5, pc} + 94a4: f1a5 0308 sub.w r3, r5, #8 + 94a8: 2b01 cmp r3, #1 + 94aa: d903 bls.n 94b4 + 94ac: 2d02 cmp r5, #2 + 94ae: d9eb bls.n 9488 + } + 94b0: b005 add sp, #20 + 94b2: bd30 pop {r4, r5, pc} midi.sendControlChange(port, channel, BMC_HELIX_CC_SNAPSHOT, t_value); - 9514: 2101 movs r1, #1 - 9516: 2200 movs r2, #0 - 9518: 9500 str r5, [sp, #0] - 951a: 2345 movs r3, #69 ; 0x45 - 951c: e9cd 2101 strd r2, r1, [sp, #4] - 9520: 7962 ldrb r2, [r4, #5] - 9522: 79a1 ldrb r1, [r4, #6] - 9524: 6820 ldr r0, [r4, #0] - 9526: f019 ff59 bl 233dc + 94b4: 2101 movs r1, #1 + 94b6: 2200 movs r2, #0 + 94b8: 9500 str r5, [sp, #0] + 94ba: 2345 movs r3, #69 ; 0x45 + 94bc: e9cd 2101 strd r2, r1, [sp, #4] + 94c0: 7962 ldrb r2, [r4, #5] + 94c2: 79a1 ldrb r1, [r4, #6] + 94c4: 6820 ldr r0, [r4, #0] + 94c6: f019 ffeb bl 234a0 if(t_value==8){ - 952a: 2d08 cmp r5, #8 - 952c: d10b bne.n 9546 + 94ca: 2d08 cmp r5, #8 + 94cc: d10b bne.n 94e6 switch(id){ - 952e: 7922 ldrb r2, [r4, #4] + 94ce: 7922 ldrb r2, [r4, #4] if((snapshot+1)>=getMaxSnapshots()){ - 9530: 79e3 ldrb r3, [r4, #7] + 94d0: 79e3 ldrb r3, [r4, #7] switch(id){ - 9532: 2a02 cmp r2, #2 - 9534: d804 bhi.n 9540 + 94d2: 2a02 cmp r2, #2 + 94d4: d804 bhi.n 94e0 if((snapshot+1)>=getMaxSnapshots()){ - 9536: 490b ldr r1, [pc, #44] ; (9564 ) - 9538: 3301 adds r3, #1 - 953a: 5c8a ldrb r2, [r1, r2] - 953c: 4293 cmp r3, r2 - 953e: dbc5 blt.n 94cc + 94d6: 490b ldr r1, [pc, #44] ; (9504 ) + 94d8: 3301 adds r3, #1 + 94da: 5c8a ldrb r2, [r1, r2] + 94dc: 4293 cmp r3, r2 + 94de: dbc5 blt.n 946c snapshot = 0; - 9540: 2300 movs r3, #0 - 9542: 71e3 strb r3, [r4, #7] - 9544: e7c2 b.n 94cc + 94e0: 2300 movs r3, #0 + 94e2: 71e3 strb r3, [r4, #7] + 94e4: e7c2 b.n 946c if(snapshot==0){ - 9546: 79e3 ldrb r3, [r4, #7] - 9548: 2b00 cmp r3, #0 - 954a: d1bf bne.n 94cc + 94e6: 79e3 ldrb r3, [r4, #7] + 94e8: 2b00 cmp r3, #0 + 94ea: d1bf bne.n 946c switch(id){ - 954c: 7923 ldrb r3, [r4, #4] - 954e: 2b02 cmp r3, #2 - 9550: d805 bhi.n 955e + 94ec: 7923 ldrb r3, [r4, #4] + 94ee: 2b02 cmp r3, #2 + 94f0: d805 bhi.n 94fe snapshot = getMaxSnapshots()-1; - 9552: 4a04 ldr r2, [pc, #16] ; (9564 ) - 9554: 5cd3 ldrb r3, [r2, r3] - 9556: 3b01 subs r3, #1 - 9558: b2db uxtb r3, r3 - 955a: 71e3 strb r3, [r4, #7] + 94f2: 4a04 ldr r2, [pc, #16] ; (9504 ) + 94f4: 5cd3 ldrb r3, [r2, r3] + 94f6: 3b01 subs r3, #1 + 94f8: b2db uxtb r3, r3 + 94fa: 71e3 strb r3, [r4, #7] } - 955c: e7b6 b.n 94cc + 94fc: e7b6 b.n 946c switch(id){ - 955e: 23ff movs r3, #255 ; 0xff + 94fe: 23ff movs r3, #255 ; 0xff snapshot = getMaxSnapshots()-1; - 9560: 71e3 strb r3, [r4, #7] - 9562: e7b3 b.n 94cc - 9564: 20000fac .word 0x20000fac + 9500: 71e3 strb r3, [r4, #7] + 9502: e7b3 b.n 946c + 9504: 20000fac .word 0x20000fac -00009568 : +00009508 : void setSnapshot(uint8_t t_value){ - 9568: b530 push {r4, r5, lr} + 9508: b530 push {r4, r5, lr} return id == t_value; - 956a: 7903 ldrb r3, [r0, #4] + 950a: 7903 ldrb r3, [r0, #4] void setSnapshot(uint8_t t_value){ - 956c: b085 sub sp, #20 - 956e: 4604 mov r4, r0 - 9570: 460d mov r5, r1 + 950c: b085 sub sp, #20 + 950e: 4604 mov r4, r0 + 9510: 460d mov r5, r1 if(isDevice(BMC_HELIX_STOMP_ID)){ - 9572: 2b02 cmp r3, #2 - 9574: d012 beq.n 959c + 9512: 2b02 cmp r3, #2 + 9514: d012 beq.n 953c switch(id){ - 9576: d80f bhi.n 9598 + 9516: d80f bhi.n 9538 if(validateSnapshot(t_value)){ - 9578: 4a20 ldr r2, [pc, #128] ; (95fc ) - 957a: 5cd3 ldrb r3, [r2, r3] - 957c: 428b cmp r3, r1 - 957e: d90b bls.n 9598 + 9518: 4a20 ldr r2, [pc, #128] ; (959c ) + 951a: 5cd3 ldrb r3, [r2, r3] + 951c: 428b cmp r3, r1 + 951e: d90b bls.n 9538 midi.sendControlChange(port, channel, BMC_HELIX_CC_SNAPSHOT, t_value); - 9580: 2101 movs r1, #1 - 9582: 2200 movs r2, #0 - 9584: 9500 str r5, [sp, #0] - 9586: 2345 movs r3, #69 ; 0x45 - 9588: e9cd 2101 strd r2, r1, [sp, #4] - 958c: 7962 ldrb r2, [r4, #5] - 958e: 79a1 ldrb r1, [r4, #6] - 9590: 6820 ldr r0, [r4, #0] - 9592: f019 ff23 bl 233dc + 9520: 2101 movs r1, #1 + 9522: 2200 movs r2, #0 + 9524: 9500 str r5, [sp, #0] + 9526: 2345 movs r3, #69 ; 0x45 + 9528: e9cd 2101 strd r2, r1, [sp, #4] + 952c: 7962 ldrb r2, [r4, #5] + 952e: 79a1 ldrb r1, [r4, #6] + 9530: 6820 ldr r0, [r4, #0] + 9532: f019 ffb5 bl 234a0 snapshot = t_value; - 9596: 71e5 strb r5, [r4, #7] + 9536: 71e5 strb r5, [r4, #7] } - 9598: b005 add sp, #20 - 959a: bd30 pop {r4, r5, pc} + 9538: b005 add sp, #20 + 953a: bd30 pop {r4, r5, pc} if(t_value==8 || t_value==9 || validateSnapshot(t_value)){ - 959c: f1a1 0308 sub.w r3, r1, #8 - 95a0: 2b01 cmp r3, #1 - 95a2: d903 bls.n 95ac - 95a4: 2902 cmp r1, #2 - 95a6: d9eb bls.n 9580 - } - 95a8: b005 add sp, #20 - 95aa: bd30 pop {r4, r5, pc} + 953c: f1a1 0308 sub.w r3, r1, #8 + 9540: 2b01 cmp r3, #1 + 9542: d903 bls.n 954c + 9544: 2902 cmp r1, #2 + 9546: d9eb bls.n 9520 + } + 9548: b005 add sp, #20 + 954a: bd30 pop {r4, r5, pc} midi.sendControlChange(port, channel, BMC_HELIX_CC_SNAPSHOT, t_value); - 95ac: 2101 movs r1, #1 - 95ae: 2200 movs r2, #0 - 95b0: 9500 str r5, [sp, #0] - 95b2: 2345 movs r3, #69 ; 0x45 - 95b4: e9cd 2101 strd r2, r1, [sp, #4] - 95b8: 7942 ldrb r2, [r0, #5] - 95ba: 7981 ldrb r1, [r0, #6] - 95bc: 6800 ldr r0, [r0, #0] - 95be: f019 ff0d bl 233dc + 954c: 2101 movs r1, #1 + 954e: 2200 movs r2, #0 + 9550: 9500 str r5, [sp, #0] + 9552: 2345 movs r3, #69 ; 0x45 + 9554: e9cd 2101 strd r2, r1, [sp, #4] + 9558: 7942 ldrb r2, [r0, #5] + 955a: 7981 ldrb r1, [r0, #6] + 955c: 6800 ldr r0, [r0, #0] + 955e: f019 ff9f bl 234a0 if(t_value==8){ - 95c2: 2d08 cmp r5, #8 - 95c4: d10b bne.n 95de + 9562: 2d08 cmp r5, #8 + 9564: d10b bne.n 957e switch(id){ - 95c6: 7922 ldrb r2, [r4, #4] + 9566: 7922 ldrb r2, [r4, #4] if((snapshot+1)>=getMaxSnapshots()){ - 95c8: 79e3 ldrb r3, [r4, #7] + 9568: 79e3 ldrb r3, [r4, #7] switch(id){ - 95ca: 2a02 cmp r2, #2 - 95cc: d804 bhi.n 95d8 + 956a: 2a02 cmp r2, #2 + 956c: d804 bhi.n 9578 if((snapshot+1)>=getMaxSnapshots()){ - 95ce: 490b ldr r1, [pc, #44] ; (95fc ) - 95d0: 3301 adds r3, #1 - 95d2: 5c8a ldrb r2, [r1, r2] - 95d4: 4293 cmp r3, r2 - 95d6: dbdf blt.n 9598 + 956e: 490b ldr r1, [pc, #44] ; (959c ) + 9570: 3301 adds r3, #1 + 9572: 5c8a ldrb r2, [r1, r2] + 9574: 4293 cmp r3, r2 + 9576: dbdf blt.n 9538 snapshot = 0; - 95d8: 2300 movs r3, #0 - 95da: 71e3 strb r3, [r4, #7] - 95dc: e7dc b.n 9598 + 9578: 2300 movs r3, #0 + 957a: 71e3 strb r3, [r4, #7] + 957c: e7dc b.n 9538 if(snapshot==0){ - 95de: 79e3 ldrb r3, [r4, #7] - 95e0: 2b00 cmp r3, #0 - 95e2: d1d9 bne.n 9598 + 957e: 79e3 ldrb r3, [r4, #7] + 9580: 2b00 cmp r3, #0 + 9582: d1d9 bne.n 9538 switch(id){ - 95e4: 7923 ldrb r3, [r4, #4] - 95e6: 2b02 cmp r3, #2 - 95e8: d805 bhi.n 95f6 + 9584: 7923 ldrb r3, [r4, #4] + 9586: 2b02 cmp r3, #2 + 9588: d805 bhi.n 9596 snapshot = getMaxSnapshots()-1; - 95ea: 4a04 ldr r2, [pc, #16] ; (95fc ) - 95ec: 5cd3 ldrb r3, [r2, r3] - 95ee: 3b01 subs r3, #1 - 95f0: b2db uxtb r3, r3 - 95f2: 71e3 strb r3, [r4, #7] + 958a: 4a04 ldr r2, [pc, #16] ; (959c ) + 958c: 5cd3 ldrb r3, [r2, r3] + 958e: 3b01 subs r3, #1 + 9590: b2db uxtb r3, r3 + 9592: 71e3 strb r3, [r4, #7] } - 95f4: e7d0 b.n 9598 + 9594: e7d0 b.n 9538 switch(id){ - 95f6: 23ff movs r3, #255 ; 0xff + 9596: 23ff movs r3, #255 ; 0xff snapshot = getMaxSnapshots()-1; - 95f8: 71e3 strb r3, [r4, #7] - 95fa: e7cd b.n 9598 - 95fc: 20000fac .word 0x20000fac + 9598: 71e3 strb r3, [r4, #7] + 959a: e7cd b.n 9538 + 959c: 20000fac .word 0x20000fac -00009600 : +000095a0 : switch(id){ - 9600: 7903 ldrb r3, [r0, #4] - 9602: 2b02 cmp r3, #2 - 9604: d821 bhi.n 964a + 95a0: 7903 ldrb r3, [r0, #4] + 95a2: 2b02 cmp r3, #2 + 95a4: d821 bhi.n 95ea void toggleSnapshot(uint8_t a, uint8_t b){ - 9606: b530 push {r4, r5, lr} - 9608: 4615 mov r5, r2 + 95a6: b530 push {r4, r5, lr} + 95a8: 4615 mov r5, r2 if(validateSnapshot(a) && validateSnapshot(b)){ - 960a: 4a10 ldr r2, [pc, #64] ; (964c ) - 960c: 4604 mov r4, r0 + 95aa: 4a10 ldr r2, [pc, #64] ; (95ec ) + 95ac: 4604 mov r4, r0 void toggleSnapshot(uint8_t a, uint8_t b){ - 960e: b085 sub sp, #20 + 95ae: b085 sub sp, #20 if(validateSnapshot(a) && validateSnapshot(b)){ - 9610: 42a9 cmp r1, r5 - 9612: 5cd0 ldrb r0, [r2, r3] - 9614: 460a mov r2, r1 - 9616: bf38 it cc - 9618: 462a movcc r2, r5 - 961a: 4290 cmp r0, r2 - 961c: d913 bls.n 9646 + 95b0: 42a9 cmp r1, r5 + 95b2: 5cd0 ldrb r0, [r2, r3] + 95b4: 460a mov r2, r1 + 95b6: bf38 it cc + 95b8: 462a movcc r2, r5 + 95ba: 4290 cmp r0, r2 + 95bc: d913 bls.n 95e6 setSnapshot((snapshot==a)?b:a); - 961e: 79e2 ldrb r2, [r4, #7] - 9620: 428a cmp r2, r1 - 9622: bf18 it ne - 9624: 460d movne r5, r1 + 95be: 79e2 ldrb r2, [r4, #7] + 95c0: 428a cmp r2, r1 + 95c2: bf18 it ne + 95c4: 460d movne r5, r1 if(isDevice(BMC_HELIX_STOMP_ID)){ - 9626: 2b02 cmp r3, #2 - 9628: d101 bne.n 962e + 95c6: 2b02 cmp r3, #2 + 95c8: d101 bne.n 95ce if(t_value==8 || t_value==9 || validateSnapshot(t_value)){ - 962a: 2d02 cmp r5, #2 - 962c: d80b bhi.n 9646 + 95ca: 2d02 cmp r5, #2 + 95cc: d80b bhi.n 95e6 midi.sendControlChange(port, channel, BMC_HELIX_CC_SNAPSHOT, t_value); - 962e: 2101 movs r1, #1 - 9630: 2200 movs r2, #0 - 9632: 9500 str r5, [sp, #0] - 9634: 2345 movs r3, #69 ; 0x45 - 9636: e9cd 2101 strd r2, r1, [sp, #4] - 963a: 7962 ldrb r2, [r4, #5] - 963c: 79a1 ldrb r1, [r4, #6] - 963e: 6820 ldr r0, [r4, #0] - 9640: f019 fecc bl 233dc + 95ce: 2101 movs r1, #1 + 95d0: 2200 movs r2, #0 + 95d2: 9500 str r5, [sp, #0] + 95d4: 2345 movs r3, #69 ; 0x45 + 95d6: e9cd 2101 strd r2, r1, [sp, #4] + 95da: 7962 ldrb r2, [r4, #5] + 95dc: 79a1 ldrb r1, [r4, #6] + 95de: 6820 ldr r0, [r4, #0] + 95e0: f019 ff5e bl 234a0 snapshot = t_value; - 9644: 71e5 strb r5, [r4, #7] + 95e4: 71e5 strb r5, [r4, #7] } - 9646: b005 add sp, #20 - 9648: bd30 pop {r4, r5, pc} - 964a: 4770 bx lr - 964c: 20000fac .word 0x20000fac + 95e6: b005 add sp, #20 + 95e8: bd30 pop {r4, r5, pc} + 95ea: 4770 bx lr + 95ec: 20000fac .word 0x20000fac -00009650 : +000095f0 : return bitRead(flags, bit); - 9650: 7b43 ldrb r3, [r0, #13] + 95f0: 7b43 ldrb r3, [r0, #13] if(!isSyncEnabled()){ - 9652: f013 0f01 tst.w r3, #1 - 9656: d031 beq.n 96bc + 95f2: f013 0f01 tst.w r3, #1 + 95f6: d031 beq.n 965c void sendCommand(uint8_t value, uint8_t data=127){ - 9658: b5f0 push {r4, r5, r6, r7, lr} - 965a: 4616 mov r6, r2 + 95f8: b5f0 push {r4, r5, r6, r7, lr} + 95fa: 4616 mov r6, r2 if(value>=BMC_BEATBUDDY_CMD_TRANS_END && value<=BMC_BEATBUDDY_CMD_TRANS_NEXT){ - 965c: f1a1 0264 sub.w r2, r1, #100 ; 0x64 - 9660: 4604 mov r4, r0 + 95fc: f1a1 0264 sub.w r2, r1, #100 ; 0x64 + 9600: 4604 mov r4, r0 void sendCommand(uint8_t value, uint8_t data=127){ - 9662: b085 sub sp, #20 + 9602: b085 sub sp, #20 if(value>=BMC_BEATBUDDY_CMD_TRANS_END && value<=BMC_BEATBUDDY_CMD_TRANS_NEXT){ - 9664: 0610 lsls r0, r2, #24 - 9666: 460d mov r5, r1 - 9668: b2d7 uxtb r7, r2 - 966a: d528 bpl.n 96be + 9604: 0610 lsls r0, r2, #24 + 9606: 460d mov r5, r1 + 9608: b2d7 uxtb r7, r2 + 960a: d528 bpl.n 965e switch(value){ - 966c: 2915 cmp r1, #21 - 966e: d823 bhi.n 96b8 - 9670: e8df f011 tbh [pc, r1, lsl #1] - 9674: 00850016 .word 0x00850016 - 9678: 0099008d .word 0x0099008d - 967c: 00b200a5 .word 0x00b200a5 - 9680: 012a0125 .word 0x012a0125 - 9684: 0135012f .word 0x0135012f - 9688: 0141013b .word 0x0141013b - 968c: 016e0156 .word 0x016e0156 - 9690: 00f3015f .word 0x00f3015f - 9694: 01190106 .word 0x01190106 - 9698: 00cc011d .word 0x00cc011d - 969c: 00b700e0 .word 0x00b700e0 + 960c: 2915 cmp r1, #21 + 960e: d823 bhi.n 9658 + 9610: e8df f011 tbh [pc, r1, lsl #1] + 9614: 00850016 .word 0x00850016 + 9618: 0099008d .word 0x0099008d + 961c: 00b200a5 .word 0x00b200a5 + 9620: 012a0125 .word 0x012a0125 + 9624: 0135012f .word 0x0135012f + 9628: 0141013b .word 0x0141013b + 962c: 016e0156 .word 0x016e0156 + 9630: 00f3015f .word 0x00f3015f + 9634: 01190106 .word 0x01190106 + 9638: 00cc011d .word 0x00cc011d + 963c: 00b700e0 .word 0x00b700e0 if(value>0){ - 96a0: b156 cbz r6, 96b8 + 9640: b156 cbz r6, 9658 midi.sendControlChange(port, channel, t_control, t_value); - 96a2: 2101 movs r1, #1 - 96a4: 2200 movs r2, #0 - 96a6: 2350 movs r3, #80 ; 0x50 - 96a8: 9600 str r6, [sp, #0] - 96aa: 9102 str r1, [sp, #8] - 96ac: 9201 str r2, [sp, #4] - 96ae: 7e22 ldrb r2, [r4, #24] - 96b0: 7e61 ldrb r1, [r4, #25] - 96b2: 6820 ldr r0, [r4, #0] - 96b4: f019 fe92 bl 233dc - } - 96b8: b005 add sp, #20 - 96ba: bdf0 pop {r4, r5, r6, r7, pc} - 96bc: 4770 bx lr - 96be: 2131 movs r1, #49 ; 0x31 - 96c0: 48b1 ldr r0, [pc, #708] ; (9988 ) - 96c2: f022 ff41 bl 2c548 - 96c6: 2101 movs r1, #1 - 96c8: 48b0 ldr r0, [pc, #704] ; (998c ) - 96ca: f022 ff3d bl 2c548 + 9642: 2101 movs r1, #1 + 9644: 2200 movs r2, #0 + 9646: 2350 movs r3, #80 ; 0x50 + 9648: 9600 str r6, [sp, #0] + 964a: 9102 str r1, [sp, #8] + 964c: 9201 str r2, [sp, #4] + 964e: 7e22 ldrb r2, [r4, #24] + 9650: 7e61 ldrb r1, [r4, #25] + 9652: 6820 ldr r0, [r4, #0] + 9654: f019 ff24 bl 234a0 + } + 9658: b005 add sp, #20 + 965a: bdf0 pop {r4, r5, r6, r7, pc} + 965c: 4770 bx lr + 965e: 2131 movs r1, #49 ; 0x31 + 9660: 48b1 ldr r0, [pc, #708] ; (9928 ) + 9662: f022 ffe5 bl 2c630 + 9666: 2101 movs r1, #1 + 9668: 48b0 ldr r0, [pc, #704] ; (992c ) + 966a: f022 ffe1 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 96ce: 2300 movs r3, #0 - 96d0: 220a movs r2, #10 - 96d2: 4629 mov r1, r5 - 96d4: 48ae ldr r0, [pc, #696] ; (9990 ) - 96d6: f020 fbe9 bl 29eac - 96da: 2101 movs r1, #1 - 96dc: 48ab ldr r0, [pc, #684] ; (998c ) - 96de: f022 ff33 bl 2c548 - 96e2: 2300 movs r3, #0 - 96e4: 220a movs r2, #10 - 96e6: 4631 mov r1, r6 - 96e8: 48a9 ldr r0, [pc, #676] ; (9990 ) - 96ea: f020 fbdf bl 29eac + 966e: 2300 movs r3, #0 + 9670: 220a movs r2, #10 + 9672: 4629 mov r1, r5 + 9674: 48ae ldr r0, [pc, #696] ; (9930 ) + 9676: f020 fc8f bl 29f98 + 967a: 2101 movs r1, #1 + 967c: 48ab ldr r0, [pc, #684] ; (992c ) + 967e: f022 ffd7 bl 2c630 + 9682: 2300 movs r3, #0 + 9684: 220a movs r2, #10 + 9686: 4631 mov r1, r6 + 9688: 48a9 ldr r0, [pc, #676] ; (9930 ) + 968a: f020 fc85 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 96ee: 48a8 ldr r0, [pc, #672] ; (9990 ) - 96f0: f020 fbc0 bl 29e74 - 96f4: 7b63 ldrb r3, [r4, #13] + 968e: 48a8 ldr r0, [pc, #672] ; (9930 ) + 9690: f020 fc66 bl 29f60 + 9694: 7b63 ldrb r3, [r4, #13] if(isSyncEnabled()){ - 96f6: 07da lsls r2, r3, #31 - 96f8: d435 bmi.n 9766 - 96fa: 212f movs r1, #47 ; 0x2f - 96fc: 48a5 ldr r0, [pc, #660] ; (9994 ) - 96fe: f022 ff23 bl 2c548 - 9702: 2101 movs r1, #1 - 9704: 48a1 ldr r0, [pc, #644] ; (998c ) - 9706: f022 ff1f bl 2c548 + 9696: 07da lsls r2, r3, #31 + 9698: d435 bmi.n 9706 + 969a: 212f movs r1, #47 ; 0x2f + 969c: 48a5 ldr r0, [pc, #660] ; (9934 ) + 969e: f022 ffc7 bl 2c630 + 96a2: 2101 movs r1, #1 + 96a4: 48a1 ldr r0, [pc, #644] ; (992c ) + 96a6: f022 ffc3 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 970a: 2300 movs r3, #0 - 970c: 220a movs r2, #10 - 970e: 4639 mov r1, r7 - 9710: 489f ldr r0, [pc, #636] ; (9990 ) - 9712: f020 fbcb bl 29eac - 9716: 2101 movs r1, #1 - 9718: 489c ldr r0, [pc, #624] ; (998c ) - 971a: f022 ff15 bl 2c548 - 971e: 2300 movs r3, #0 - 9720: 220a movs r2, #10 - 9722: 4631 mov r1, r6 - 9724: 489a ldr r0, [pc, #616] ; (9990 ) - 9726: f020 fbc1 bl 29eac + 96aa: 2300 movs r3, #0 + 96ac: 220a movs r2, #10 + 96ae: 4639 mov r1, r7 + 96b0: 489f ldr r0, [pc, #636] ; (9930 ) + 96b2: f020 fc71 bl 29f98 + 96b6: 2101 movs r1, #1 + 96b8: 489c ldr r0, [pc, #624] ; (992c ) + 96ba: f022 ffb9 bl 2c630 + 96be: 2300 movs r3, #0 + 96c0: 220a movs r2, #10 + 96c2: 4631 mov r1, r6 + 96c4: 489a ldr r0, [pc, #616] ; (9930 ) + 96c6: f020 fc67 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 972a: 4899 ldr r0, [pc, #612] ; (9990 ) - 972c: f020 fba2 bl 29e74 + 96ca: 4899 ldr r0, [pc, #612] ; (9930 ) + 96cc: f020 fc48 bl 29f60 if(value > 0 && data == 127){ - 9730: b17f cbz r7, 9752 - 9732: 2e7f cmp r6, #127 ; 0x7f - 9734: d10d bne.n 9752 - 9736: 7b63 ldrb r3, [r4, #13] + 96d0: b17f cbz r7, 96f2 + 96d2: 2e7f cmp r6, #127 ; 0x7f + 96d4: d10d bne.n 96f2 + 96d6: 7b63 ldrb r3, [r4, #13] if(isSyncEnabled()){ - 9738: 07db lsls r3, r3, #31 - 973a: d5bd bpl.n 96b8 + 96d8: 07db lsls r3, r3, #31 + 96da: d5bd bpl.n 9658 midi.sendControlChange(port, channel, t_control, t_value); - 973c: 2200 movs r2, #0 - 973e: 2101 movs r1, #1 - 9740: 2371 movs r3, #113 ; 0x71 - 9742: 9200 str r2, [sp, #0] - 9744: e9cd 2101 strd r2, r1, [sp, #4] - 9748: 7e22 ldrb r2, [r4, #24] - 974a: 7e61 ldrb r1, [r4, #25] - 974c: 6820 ldr r0, [r4, #0] - 974e: f019 fe45 bl 233dc - 9752: 7b63 ldrb r3, [r4, #13] + 96dc: 2200 movs r2, #0 + 96de: 2101 movs r1, #1 + 96e0: 2371 movs r3, #113 ; 0x71 + 96e2: 9200 str r2, [sp, #0] + 96e4: e9cd 2101 strd r2, r1, [sp, #4] + 96e8: 7e22 ldrb r2, [r4, #24] + 96ea: 7e61 ldrb r1, [r4, #25] + 96ec: 6820 ldr r0, [r4, #0] + 96ee: f019 fed7 bl 234a0 + 96f2: 7b63 ldrb r3, [r4, #13] if(isSyncEnabled() && songPart==0 && !flags.read(BMC_BEATBUDDY_FLAG_PLAYING)){ - 9754: 07de lsls r6, r3, #31 - 9756: d5af bpl.n 96b8 - 9758: 7ea2 ldrb r2, [r4, #26] - 975a: 2a00 cmp r2, #0 - 975c: d1ac bne.n 96b8 - 975e: 075d lsls r5, r3, #29 - 9760: d4aa bmi.n 96b8 + 96f4: 07de lsls r6, r3, #31 + 96f6: d5af bpl.n 9658 + 96f8: 7ea2 ldrb r2, [r4, #26] + 96fa: 2a00 cmp r2, #0 + 96fc: d1ac bne.n 9658 + 96fe: 075d lsls r5, r3, #29 + 9700: d4aa bmi.n 9658 songPart = value; - 9762: 76a7 strb r7, [r4, #26] - 9764: e7a8 b.n 96b8 + 9702: 76a7 strb r7, [r4, #26] + 9704: e7a8 b.n 9658 midi.sendControlChange(port, channel, t_control, t_value); - 9766: 2201 movs r2, #1 - 9768: 2300 movs r3, #0 - 976a: 9700 str r7, [sp, #0] - 976c: e9cd 3201 strd r3, r2, [sp, #4] - 9770: 2371 movs r3, #113 ; 0x71 - 9772: 7e22 ldrb r2, [r4, #24] - 9774: 7e61 ldrb r1, [r4, #25] - 9776: 6820 ldr r0, [r4, #0] - 9778: f019 fe30 bl 233dc - 977c: e7bd b.n 96fa + 9706: 2201 movs r2, #1 + 9708: 2300 movs r3, #0 + 970a: 9700 str r7, [sp, #0] + 970c: e9cd 3201 strd r3, r2, [sp, #4] + 9710: 2371 movs r3, #113 ; 0x71 + 9712: 7e22 ldrb r2, [r4, #24] + 9714: 7e61 ldrb r1, [r4, #25] + 9716: 6820 ldr r0, [r4, #0] + 9718: f019 fec2 bl 234a0 + 971c: e7bd b.n 969a if(value>0){ - 977e: 2e00 cmp r6, #0 - 9780: d09a beq.n 96b8 + 971e: 2e00 cmp r6, #0 + 9720: d09a beq.n 9658 midi.sendControlChange(port, channel, t_control, t_value); - 9782: 2101 movs r1, #1 - 9784: 2200 movs r2, #0 - 9786: 2351 movs r3, #81 ; 0x51 - 9788: 9600 str r6, [sp, #0] - 978a: 9102 str r1, [sp, #8] - 978c: e78e b.n 96ac - 978e: 2100 movs r1, #0 - 9790: 2001 movs r0, #1 - 9792: 236f movs r3, #111 ; 0x6f - 9794: 7e22 ldrb r2, [r4, #24] - 9796: 9100 str r1, [sp, #0] - 9798: e9cd 1001 strd r1, r0, [sp, #4] - 979c: 7e61 ldrb r1, [r4, #25] - 979e: 6820 ldr r0, [r4, #0] - 97a0: f019 fe1c bl 233dc - 97a4: e788 b.n 96b8 - 97a6: 2101 movs r1, #1 - 97a8: 2000 movs r0, #0 - 97aa: 236f movs r3, #111 ; 0x6f - 97ac: 7e22 ldrb r2, [r4, #24] - 97ae: 9100 str r1, [sp, #0] - 97b0: e9cd 0101 strd r0, r1, [sp, #4] - 97b4: 7e61 ldrb r1, [r4, #25] - 97b6: 6820 ldr r0, [r4, #0] - 97b8: f019 fe10 bl 233dc - 97bc: e77c b.n 96b8 - 97be: 2101 movs r1, #1 - 97c0: 2200 movs r2, #0 - 97c2: 257f movs r5, #127 ; 0x7f - 97c4: 236f movs r3, #111 ; 0x6f - 97c6: e9cd 2101 strd r2, r1, [sp, #4] - 97ca: 7e22 ldrb r2, [r4, #24] - 97cc: 7e61 ldrb r1, [r4, #25] - 97ce: 6820 ldr r0, [r4, #0] - 97d0: 9500 str r5, [sp, #0] - 97d2: f019 fe03 bl 233dc - 97d6: e76f b.n 96b8 - 97d8: 2101 movs r1, #1 - 97da: 2200 movs r2, #0 - 97dc: 257f movs r5, #127 ; 0x7f - 97de: 2370 movs r3, #112 ; 0x70 - 97e0: e7f1 b.n 97c6 + 9722: 2101 movs r1, #1 + 9724: 2200 movs r2, #0 + 9726: 2351 movs r3, #81 ; 0x51 + 9728: 9600 str r6, [sp, #0] + 972a: 9102 str r1, [sp, #8] + 972c: e78e b.n 964c + 972e: 2100 movs r1, #0 + 9730: 2001 movs r0, #1 + 9732: 236f movs r3, #111 ; 0x6f + 9734: 7e22 ldrb r2, [r4, #24] + 9736: 9100 str r1, [sp, #0] + 9738: e9cd 1001 strd r1, r0, [sp, #4] + 973c: 7e61 ldrb r1, [r4, #25] + 973e: 6820 ldr r0, [r4, #0] + 9740: f019 feae bl 234a0 + 9744: e788 b.n 9658 + 9746: 2101 movs r1, #1 + 9748: 2000 movs r0, #0 + 974a: 236f movs r3, #111 ; 0x6f + 974c: 7e22 ldrb r2, [r4, #24] + 974e: 9100 str r1, [sp, #0] + 9750: e9cd 0101 strd r0, r1, [sp, #4] + 9754: 7e61 ldrb r1, [r4, #25] + 9756: 6820 ldr r0, [r4, #0] + 9758: f019 fea2 bl 234a0 + 975c: e77c b.n 9658 + 975e: 2101 movs r1, #1 + 9760: 2200 movs r2, #0 + 9762: 257f movs r5, #127 ; 0x7f + 9764: 236f movs r3, #111 ; 0x6f + 9766: e9cd 2101 strd r2, r1, [sp, #4] + 976a: 7e22 ldrb r2, [r4, #24] + 976c: 7e61 ldrb r1, [r4, #25] + 976e: 6820 ldr r0, [r4, #0] + 9770: 9500 str r5, [sp, #0] + 9772: f019 fe95 bl 234a0 + 9776: e76f b.n 9658 + 9778: 2101 movs r1, #1 + 977a: 2200 movs r2, #0 + 977c: 257f movs r5, #127 ; 0x7f + 977e: 2370 movs r3, #112 ; 0x70 + 9780: e7f1 b.n 9766 flags ^= 1UL << bit; - 97e2: f083 0240 eor.w r2, r3, #64 ; 0x40 + 9782: f083 0240 eor.w r2, r3, #64 ; 0x40 if(bitRead(flags, bit)){ - 97e6: 0698 lsls r0, r3, #26 + 9786: 0698 lsls r0, r3, #26 bitClear(flags, bit); - 97e8: bf48 it mi - 97ea: f002 02df andmi.w r2, r2, #223 ; 0xdf + 9788: bf48 it mi + 978a: f002 02df andmi.w r2, r2, #223 ; 0xdf sendControl(BMC_BEATBUDDY_CC_DOUBLE_TIME, flags.read(BMC_BEATBUDDY_FLAG_DOUBLE_TIME)?127:0); - 97ee: f012 0f40 tst.w r2, #64 ; 0x40 - 97f2: 7362 strb r2, [r4, #13] - 97f4: bf14 ite ne - 97f6: 217f movne r1, #127 ; 0x7f - 97f8: 2100 moveq r1, #0 + 978e: f012 0f40 tst.w r2, #64 ; 0x40 + 9792: 7362 strb r2, [r4, #13] + 9794: bf14 ite ne + 9796: 217f movne r1, #127 ; 0x7f + 9798: 2100 moveq r1, #0 if(isSyncEnabled()){ - 97fa: 07d3 lsls r3, r2, #31 - 97fc: f57f af5c bpl.w 96b8 + 979a: 07d3 lsls r3, r2, #31 + 979c: f57f af5c bpl.w 9658 midi.sendControlChange(port, channel, t_control, t_value); - 9800: 2001 movs r0, #1 - 9802: 2200 movs r2, #0 - 9804: 2353 movs r3, #83 ; 0x53 - 9806: 9100 str r1, [sp, #0] - 9808: 9002 str r0, [sp, #8] - 980a: e74f b.n 96ac - 980c: 2101 movs r1, #1 - 980e: 2500 movs r5, #0 - 9810: 2377 movs r3, #119 ; 0x77 - 9812: 7e22 ldrb r2, [r4, #24] - 9814: 9100 str r1, [sp, #0] - 9816: e9cd 5101 strd r5, r1, [sp, #4] - 981a: 7e61 ldrb r1, [r4, #25] - 981c: 6820 ldr r0, [r4, #0] - 981e: f019 fddd bl 233dc + 97a0: 2001 movs r0, #1 + 97a2: 2200 movs r2, #0 + 97a4: 2353 movs r3, #83 ; 0x53 + 97a6: 9100 str r1, [sp, #0] + 97a8: 9002 str r0, [sp, #8] + 97aa: e74f b.n 964c + 97ac: 2101 movs r1, #1 + 97ae: 2500 movs r5, #0 + 97b0: 2377 movs r3, #119 ; 0x77 + 97b2: 7e22 ldrb r2, [r4, #24] + 97b4: 9100 str r1, [sp, #0] + 97b6: e9cd 5101 strd r5, r1, [sp, #4] + 97ba: 7e61 ldrb r1, [r4, #25] + 97bc: 6820 ldr r0, [r4, #0] + 97be: f019 fe6f bl 234a0 bitClear(flags, bit); - 9822: 7b63 ldrb r3, [r4, #13] + 97c2: 7b63 ldrb r3, [r4, #13] timeSignature.beat = 0; - 9824: 7325 strb r5, [r4, #12] - 9826: f023 0364 bic.w r3, r3, #100 ; 0x64 + 97c4: 7325 strb r5, [r4, #12] + 97c6: f023 0364 bic.w r3, r3, #100 ; 0x64 songPart = 0; - 982a: 8365 strh r5, [r4, #26] - 982c: f043 0310 orr.w r3, r3, #16 - 9830: 7363 strb r3, [r4, #13] + 97ca: 8365 strh r5, [r4, #26] + 97cc: f043 0310 orr.w r3, r3, #16 + 97d0: 7363 strb r3, [r4, #13] } - 9832: e741 b.n 96b8 + 97d2: e741 b.n 9658 flags ^= 1UL << bit; - 9834: f083 0220 eor.w r2, r3, #32 + 97d4: f083 0220 eor.w r2, r3, #32 if(bitRead(flags, bit)){ - 9838: 065e lsls r6, r3, #25 + 97d8: 065e lsls r6, r3, #25 bitClear(flags, bit); - 983a: bf48 it mi - 983c: f002 02bf andmi.w r2, r2, #191 ; 0xbf + 97da: bf48 it mi + 97dc: f002 02bf andmi.w r2, r2, #191 ; 0xbf sendControl(BMC_BEATBUDDY_CC_HALF_TIME, flags.read(BMC_BEATBUDDY_FLAG_HALF_TIME)?127:0); - 9840: f012 0f20 tst.w r2, #32 - 9844: 7362 strb r2, [r4, #13] - 9846: bf14 ite ne - 9848: 217f movne r1, #127 ; 0x7f - 984a: 2100 moveq r1, #0 + 97e0: f012 0f20 tst.w r2, #32 + 97e4: 7362 strb r2, [r4, #13] + 97e6: bf14 ite ne + 97e8: 217f movne r1, #127 ; 0x7f + 97ea: 2100 moveq r1, #0 if(isSyncEnabled()){ - 984c: 07d5 lsls r5, r2, #31 - 984e: f57f af33 bpl.w 96b8 + 97ec: 07d5 lsls r5, r2, #31 + 97ee: f57f af33 bpl.w 9658 midi.sendControlChange(port, channel, t_control, t_value); - 9852: 2001 movs r0, #1 - 9854: 2200 movs r2, #0 - 9856: 2352 movs r3, #82 ; 0x52 - 9858: e7d5 b.n 9806 - 985a: 2101 movs r1, #1 - 985c: 2200 movs r2, #0 - 985e: 207f movs r0, #127 ; 0x7f - 9860: 2352 movs r3, #82 ; 0x52 - 9862: e9cd 2101 strd r2, r1, [sp, #4] - 9866: 7e22 ldrb r2, [r4, #24] - 9868: 7e61 ldrb r1, [r4, #25] - 986a: 9000 str r0, [sp, #0] - 986c: 6820 ldr r0, [r4, #0] - 986e: f019 fdb5 bl 233dc + 97f2: 2001 movs r0, #1 + 97f4: 2200 movs r2, #0 + 97f6: 2352 movs r3, #82 ; 0x52 + 97f8: e7d5 b.n 97a6 + 97fa: 2101 movs r1, #1 + 97fc: 2200 movs r2, #0 + 97fe: 207f movs r0, #127 ; 0x7f + 9800: 2352 movs r3, #82 ; 0x52 + 9802: e9cd 2101 strd r2, r1, [sp, #4] + 9806: 7e22 ldrb r2, [r4, #24] + 9808: 7e61 ldrb r1, [r4, #25] + 980a: 9000 str r0, [sp, #0] + 980c: 6820 ldr r0, [r4, #0] + 980e: f019 fe47 bl 234a0 bitClear(flags, bit); - 9872: 7b63 ldrb r3, [r4, #13] - 9874: f023 0340 bic.w r3, r3, #64 ; 0x40 - 9878: f043 0320 orr.w r3, r3, #32 - 987c: 7363 strb r3, [r4, #13] + 9812: 7b63 ldrb r3, [r4, #13] + 9814: f023 0340 bic.w r3, r3, #64 ; 0x40 + 9818: f043 0320 orr.w r3, r3, #32 + 981c: 7363 strb r3, [r4, #13] } - 987e: e71b b.n 96b8 + 981e: e71b b.n 9658 midi.sendControlChange(port, channel, t_control, t_value); - 9880: 2101 movs r1, #1 - 9882: 2200 movs r2, #0 - 9884: 207f movs r0, #127 ; 0x7f - 9886: 2353 movs r3, #83 ; 0x53 - 9888: e9cd 2101 strd r2, r1, [sp, #4] - 988c: 7e22 ldrb r2, [r4, #24] - 988e: 7e61 ldrb r1, [r4, #25] - 9890: 9000 str r0, [sp, #0] - 9892: 6820 ldr r0, [r4, #0] - 9894: f019 fda2 bl 233dc - 9898: 7b63 ldrb r3, [r4, #13] - 989a: f023 0320 bic.w r3, r3, #32 - 989e: f043 0340 orr.w r3, r3, #64 ; 0x40 - 98a2: 7363 strb r3, [r4, #13] - } - 98a4: e708 b.n 96b8 + 9820: 2101 movs r1, #1 + 9822: 2200 movs r2, #0 + 9824: 207f movs r0, #127 ; 0x7f + 9826: 2353 movs r3, #83 ; 0x53 + 9828: e9cd 2101 strd r2, r1, [sp, #4] + 982c: 7e22 ldrb r2, [r4, #24] + 982e: 7e61 ldrb r1, [r4, #25] + 9830: 9000 str r0, [sp, #0] + 9832: 6820 ldr r0, [r4, #0] + 9834: f019 fe34 bl 234a0 + 9838: 7b63 ldrb r3, [r4, #13] + 983a: f023 0320 bic.w r3, r3, #32 + 983e: f043 0340 orr.w r3, r3, #64 ; 0x40 + 9842: 7363 strb r3, [r4, #13] + } + 9844: e708 b.n 9658 midi.sendControlChange(port, channel, t_control, t_value); - 98a6: 2101 movs r1, #1 - 98a8: 2000 movs r0, #0 - 98aa: 2376 movs r3, #118 ; 0x76 - 98ac: e77e b.n 97ac - 98ae: 2500 movs r5, #0 - 98b0: 2101 movs r1, #1 - 98b2: 7e22 ldrb r2, [r4, #24] - 98b4: 2377 movs r3, #119 ; 0x77 - 98b6: 9500 str r5, [sp, #0] - 98b8: e9cd 5101 strd r5, r1, [sp, #4] - 98bc: e7ad b.n 981a - 98be: 2101 movs r1, #1 - 98c0: 2200 movs r2, #0 - 98c2: 257f movs r5, #127 ; 0x7f - 98c4: 2373 movs r3, #115 ; 0x73 - 98c6: e77e b.n 97c6 - 98c8: 2101 movs r1, #1 - 98ca: 2200 movs r2, #0 - 98cc: 257f movs r5, #127 ; 0x7f - 98ce: 2375 movs r3, #117 ; 0x75 - 98d0: e779 b.n 97c6 - 98d2: 2101 movs r1, #1 - 98d4: 2200 movs r2, #0 - 98d6: 236c movs r3, #108 ; 0x6c - 98d8: 9600 str r6, [sp, #0] - 98da: 9102 str r1, [sp, #8] - 98dc: e6e6 b.n 96ac - 98de: 2101 movs r1, #1 - 98e0: 2200 movs r2, #0 - 98e2: 236d movs r3, #109 ; 0x6d - 98e4: 9600 str r6, [sp, #0] - 98e6: 9102 str r1, [sp, #8] - 98e8: e6e0 b.n 96ac - 98ea: 2101 movs r1, #1 - 98ec: 2200 movs r2, #0 - 98ee: 236e movs r3, #110 ; 0x6e - 98f0: 9600 str r6, [sp, #0] - 98f2: 9102 str r1, [sp, #8] - 98f4: e6da b.n 96ac - 98f6: 2101 movs r1, #1 - 98f8: 2200 movs r2, #0 - 98fa: 207f movs r0, #127 ; 0x7f - 98fc: 2372 movs r3, #114 ; 0x72 - 98fe: e9cd 2101 strd r2, r1, [sp, #4] - 9902: 7e22 ldrb r2, [r4, #24] - 9904: 7e61 ldrb r1, [r4, #25] - 9906: 9000 str r0, [sp, #0] - 9908: 6820 ldr r0, [r4, #0] - 990a: f019 fd67 bl 233dc + 9846: 2101 movs r1, #1 + 9848: 2000 movs r0, #0 + 984a: 2376 movs r3, #118 ; 0x76 + 984c: e77e b.n 974c + 984e: 2500 movs r5, #0 + 9850: 2101 movs r1, #1 + 9852: 7e22 ldrb r2, [r4, #24] + 9854: 2377 movs r3, #119 ; 0x77 + 9856: 9500 str r5, [sp, #0] + 9858: e9cd 5101 strd r5, r1, [sp, #4] + 985c: e7ad b.n 97ba + 985e: 2101 movs r1, #1 + 9860: 2200 movs r2, #0 + 9862: 257f movs r5, #127 ; 0x7f + 9864: 2373 movs r3, #115 ; 0x73 + 9866: e77e b.n 9766 + 9868: 2101 movs r1, #1 + 986a: 2200 movs r2, #0 + 986c: 257f movs r5, #127 ; 0x7f + 986e: 2375 movs r3, #117 ; 0x75 + 9870: e779 b.n 9766 + 9872: 2101 movs r1, #1 + 9874: 2200 movs r2, #0 + 9876: 236c movs r3, #108 ; 0x6c + 9878: 9600 str r6, [sp, #0] + 987a: 9102 str r1, [sp, #8] + 987c: e6e6 b.n 964c + 987e: 2101 movs r1, #1 + 9880: 2200 movs r2, #0 + 9882: 236d movs r3, #109 ; 0x6d + 9884: 9600 str r6, [sp, #0] + 9886: 9102 str r1, [sp, #8] + 9888: e6e0 b.n 964c + 988a: 2101 movs r1, #1 + 988c: 2200 movs r2, #0 + 988e: 236e movs r3, #110 ; 0x6e + 9890: 9600 str r6, [sp, #0] + 9892: 9102 str r1, [sp, #8] + 9894: e6da b.n 964c + 9896: 2101 movs r1, #1 + 9898: 2200 movs r2, #0 + 989a: 207f movs r0, #127 ; 0x7f + 989c: 2372 movs r3, #114 ; 0x72 + 989e: e9cd 2101 strd r2, r1, [sp, #4] + 98a2: 7e22 ldrb r2, [r4, #24] + 98a4: 7e61 ldrb r1, [r4, #25] + 98a6: 9000 str r0, [sp, #0] + 98a8: 6820 ldr r0, [r4, #0] + 98aa: f019 fdf9 bl 234a0 if(songPart==0){ - 990e: 7ea3 ldrb r3, [r4, #26] - 9910: 2b00 cmp r3, #0 - 9912: f47f aed1 bne.w 96b8 + 98ae: 7ea3 ldrb r3, [r4, #26] + 98b0: 2b00 cmp r3, #0 + 98b2: f47f aed1 bne.w 9658 songPart = isSyncEnabled() ? 1 : 0; - 9916: 7b63 ldrb r3, [r4, #13] - 9918: f003 0301 and.w r3, r3, #1 - 991c: 76a3 strb r3, [r4, #26] + 98b6: 7b63 ldrb r3, [r4, #13] + 98b8: f003 0301 and.w r3, r3, #1 + 98bc: 76a3 strb r3, [r4, #26] } - 991e: e6cb b.n 96b8 + 98be: e6cb b.n 9658 midi.sendRealTime(port, t_status); - 9920: 2300 movs r3, #0 - 9922: 22fc movs r2, #252 ; 0xfc - 9924: 7e61 ldrb r1, [r4, #25] - 9926: 6820 ldr r0, [r4, #0] + 98c0: 2300 movs r3, #0 + 98c2: 22fc movs r2, #252 ; 0xfc + 98c4: 7e61 ldrb r1, [r4, #25] + 98c6: 6820 ldr r0, [r4, #0] } - 9928: b005 add sp, #20 - 992a: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 98c8: b005 add sp, #20 + 98ca: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} midi.sendRealTime(port, t_status); - 992e: f019 bbc3 b.w 230b8 + 98ce: f019 bc59 b.w 23184 if(bitRead(flags, bit)){ - 9932: 0698 lsls r0, r3, #26 - 9934: d415 bmi.n 9962 - 9936: 065a lsls r2, r3, #25 - 9938: f57f aebe bpl.w 96b8 + 98d2: 0698 lsls r0, r3, #26 + 98d4: d415 bmi.n 9902 + 98d6: 065a lsls r2, r3, #25 + 98d8: f57f aebe bpl.w 9658 bitClear(flags, bit); - 993c: f003 03bf and.w r3, r3, #191 ; 0xbf + 98dc: f003 03bf and.w r3, r3, #191 ; 0xbf if(isSyncEnabled()){ - 9940: 07df lsls r7, r3, #31 - 9942: 7363 strb r3, [r4, #13] - 9944: f57f aeb8 bpl.w 96b8 + 98e0: 07df lsls r7, r3, #31 + 98e2: 7363 strb r3, [r4, #13] + 98e4: f57f aeb8 bpl.w 9658 midi.sendControlChange(port, channel, t_control, t_value); - 9948: 2100 movs r1, #0 - 994a: 2001 movs r0, #1 - 994c: 2353 movs r3, #83 ; 0x53 - 994e: e721 b.n 9794 + 98e8: 2100 movs r1, #0 + 98ea: 2001 movs r0, #1 + 98ec: 2353 movs r3, #83 ; 0x53 + 98ee: e721 b.n 9734 if(!isSyncEnabled() || value==0){ - 9950: 2e00 cmp r6, #0 - 9952: f43f aeb1 beq.w 96b8 + 98f0: 2e00 cmp r6, #0 + 98f2: f43f aeb1 beq.w 9658 midi.sendControlChange(port, channel, t_control, t_value); - 9956: 2101 movs r1, #1 - 9958: 2200 movs r2, #0 - 995a: 2374 movs r3, #116 ; 0x74 - 995c: 9600 str r6, [sp, #0] - 995e: 9102 str r1, [sp, #8] - 9960: e6a4 b.n 96ac - 9962: f003 03df and.w r3, r3, #223 ; 0xdf + 98f6: 2101 movs r1, #1 + 98f8: 2200 movs r2, #0 + 98fa: 2374 movs r3, #116 ; 0x74 + 98fc: 9600 str r6, [sp, #0] + 98fe: 9102 str r1, [sp, #8] + 9900: e6a4 b.n 964c + 9902: f003 03df and.w r3, r3, #223 ; 0xdf if(isSyncEnabled()){ - 9966: 07d9 lsls r1, r3, #31 - 9968: 7363 strb r3, [r4, #13] - 996a: d5e4 bpl.n 9936 + 9906: 07d9 lsls r1, r3, #31 + 9908: 7363 strb r3, [r4, #13] + 990a: d5e4 bpl.n 98d6 midi.sendControlChange(port, channel, t_control, t_value); - 996c: 2100 movs r1, #0 - 996e: 2001 movs r0, #1 - 9970: 7e22 ldrb r2, [r4, #24] - 9972: 2352 movs r3, #82 ; 0x52 - 9974: 9100 str r1, [sp, #0] - 9976: e9cd 1001 strd r1, r0, [sp, #4] - 997a: 7e61 ldrb r1, [r4, #25] - 997c: 6820 ldr r0, [r4, #0] - 997e: f019 fd2d bl 233dc + 990c: 2100 movs r1, #0 + 990e: 2001 movs r0, #1 + 9910: 7e22 ldrb r2, [r4, #24] + 9912: 2352 movs r3, #82 ; 0x52 + 9914: 9100 str r1, [sp, #0] + 9916: e9cd 1001 strd r1, r0, [sp, #4] + 991a: 7e61 ldrb r1, [r4, #25] + 991c: 6820 ldr r0, [r4, #0] + 991e: f019 fdbf bl 234a0 if(bitRead(flags, bit)){ - 9982: 7b63 ldrb r3, [r4, #13] - 9984: e7d7 b.n 9936 - 9986: bf00 nop - 9988: 200017c0 .word 0x200017c0 - 998c: 200023ec .word 0x200023ec - 9990: 20004ba8 .word 0x20004ba8 - 9994: 200017f4 .word 0x200017f4 - -00009998 : + 9922: 7b63 ldrb r3, [r4, #13] + 9924: e7d7 b.n 98d6 + 9926: bf00 nop + 9928: 200017c0 .word 0x200017c0 + 992c: 200023ec .word 0x200023ec + 9930: 20004c68 .word 0x20004c68 + 9934: 200017f4 .word 0x200017f4 + +00009938 : return bitRead(flags, bit); - 9998: 7b43 ldrb r3, [r0, #13] + 9938: 7b43 ldrb r3, [r0, #13] if(!isSyncEnabled() || (bpm < 40 || bpm > 300)){ - 999a: 07da lsls r2, r3, #31 - 999c: d57f bpl.n 9a9e - 999e: f1a1 0328 sub.w r3, r1, #40 ; 0x28 - 99a2: f5b3 7f82 cmp.w r3, #260 ; 0x104 + 993a: 07da lsls r2, r3, #31 + 993c: d57f bpl.n 9a3e + 993e: f1a1 0328 sub.w r3, r1, #40 ; 0x28 + 9942: f5b3 7f82 cmp.w r3, #260 ; 0x104 void tempo(uint16_t bpm=0){ - 99a6: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 99aa: 460d mov r5, r1 - 99ac: b087 sub sp, #28 + 9946: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 994a: 460d mov r5, r1 + 994c: b087 sub sp, #28 if(!isSyncEnabled() || (bpm < 40 || bpm > 300)){ - 99ae: d902 bls.n 99b6 + 994e: d902 bls.n 9956 } - 99b0: b007 add sp, #28 - 99b2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 9950: b007 add sp, #28 + 9952: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} uint8_t cc98 = midi.getLocalControl(channel,98); - 99b6: 7e02 ldrb r2, [r0, #24] - 99b8: 4604 mov r4, r0 - 99ba: 6800 ldr r0, [r0, #0] + 9956: 7e02 ldrb r2, [r0, #24] + 9958: 4604 mov r4, r0 + 995a: 6800 ldr r0, [r0, #0] midi.sendControlChange(port, channel, t_control, t_value); - 99bc: f04f 0a01 mov.w sl, #1 + 995c: f04f 0a01 mov.w sl, #1 uint8_t ch = ((t_channel-1) & 0x0F); - 99c0: 1e53 subs r3, r2, #1 - 99c2: f04f 0900 mov.w r9, #0 - 99c6: f04f 0b6a mov.w fp, #106 ; 0x6a + 9960: 1e53 subs r3, r2, #1 + 9962: f04f 0900 mov.w r9, #0 + 9966: f04f 0b6a mov.w fp, #106 ; 0x6a return (ch - 99f8: 7b63 ldrb r3, [r4, #13] + 996a: f003 030f and.w r3, r3, #15 + 996e: eb03 1383 add.w r3, r3, r3, lsl #6 + 9972: eb00 0343 add.w r3, r0, r3, lsl #1 + 9976: f893 8171 ldrb.w r8, [r3, #369] ; 0x171 + 997a: f893 7172 ldrb.w r7, [r3, #370] ; 0x172 + 997e: f893 6179 ldrb.w r6, [r3, #377] ; 0x179 + 9982: f893 317a ldrb.w r3, [r3, #378] ; 0x17a + 9986: f8cd b000 str.w fp, [sp] + 998a: 9305 str r3, [sp, #20] + 998c: 2363 movs r3, #99 ; 0x63 + 998e: e9cd 9a01 strd r9, sl, [sp, #4] + 9992: 7e61 ldrb r1, [r4, #25] + 9994: f019 fd84 bl 234a0 + 9998: 7b63 ldrb r3, [r4, #13] if(isSyncEnabled()){ - 99fa: 07db lsls r3, r3, #31 - 99fc: d450 bmi.n 9aa0 + 999a: 07db lsls r3, r3, #31 + 999c: d450 bmi.n 9a40 channel[ch].control[cc] = (t_value & 0x7F); - 99fe: 9b05 ldr r3, [sp, #20] - 9a00: f008 087f and.w r8, r8, #127 ; 0x7f + 999e: 9b05 ldr r3, [sp, #20] + 99a0: f008 087f and.w r8, r8, #127 ; 0x7f midi.setLocalControl(channel,98,cc98); - 9a04: 6821 ldr r1, [r4, #0] - 9a06: f007 077f and.w r7, r7, #127 ; 0x7f - 9a0a: f003 027f and.w r2, r3, #127 ; 0x7f + 99a4: 6821 ldr r1, [r4, #0] + 99a6: f007 077f and.w r7, r7, #127 ; 0x7f + 99aa: f003 027f and.w r2, r3, #127 ; 0x7f uint8_t ch = ((t_channel-1) & 0x0F); - 9a0e: 7e23 ldrb r3, [r4, #24] + 99ae: 7e23 ldrb r3, [r4, #24] channel[ch].control[cc] = (t_value & 0x7F); - 9a10: f006 067f and.w r6, r6, #127 ; 0x7f + 99b0: f006 067f and.w r6, r6, #127 ; 0x7f uint8_t ch = ((t_channel-1) & 0x0F); - 9a14: 3b01 subs r3, #1 + 99b4: 3b01 subs r3, #1 channel[ch].control[cc] = (t_value & 0x7F); - 9a16: f003 030f and.w r3, r3, #15 - 9a1a: eb03 1383 add.w r3, r3, r3, lsl #6 - 9a1e: eb01 0343 add.w r3, r1, r3, lsl #1 - 9a22: f883 8171 strb.w r8, [r3, #369] ; 0x171 + 99b6: f003 030f and.w r3, r3, #15 + 99ba: eb03 1383 add.w r3, r3, r3, lsl #6 + 99be: eb01 0343 add.w r3, r1, r3, lsl #1 + 99c2: f883 8171 strb.w r8, [r3, #369] ; 0x171 globals.setMidiLocalUpdate(true); - 9a26: f8d1 0108 ldr.w r0, [r1, #264] ; 0x108 + 99c6: f8d1 0108 ldr.w r0, [r1, #264] ; 0x108 midi.setLocalControl(channel,99,cc99); - 9a2a: 6821 ldr r1, [r4, #0] + 99ca: 6821 ldr r1, [r4, #0] bitWrite(flags, bit, value); - 9a2c: 6dc3 ldr r3, [r0, #92] ; 0x5c - 9a2e: f043 0320 orr.w r3, r3, #32 - 9a32: 65c3 str r3, [r0, #92] ; 0x5c + 99cc: 6dc3 ldr r3, [r0, #92] ; 0x5c + 99ce: f043 0320 orr.w r3, r3, #32 + 99d2: 65c3 str r3, [r0, #92] ; 0x5c uint8_t ch = ((t_channel-1) & 0x0F); - 9a34: 7e23 ldrb r3, [r4, #24] - 9a36: 3b01 subs r3, #1 + 99d4: 7e23 ldrb r3, [r4, #24] + 99d6: 3b01 subs r3, #1 channel[ch].control[cc] = (t_value & 0x7F); - 9a38: f003 030f and.w r3, r3, #15 - 9a3c: eb03 1383 add.w r3, r3, r3, lsl #6 - 9a40: eb01 0343 add.w r3, r1, r3, lsl #1 - 9a44: f883 7172 strb.w r7, [r3, #370] ; 0x172 - 9a48: f8d1 1108 ldr.w r1, [r1, #264] ; 0x108 - 9a4c: 6dcb ldr r3, [r1, #92] ; 0x5c - 9a4e: f043 0320 orr.w r3, r3, #32 - 9a52: 65cb str r3, [r1, #92] ; 0x5c + 99d8: f003 030f and.w r3, r3, #15 + 99dc: eb03 1383 add.w r3, r3, r3, lsl #6 + 99e0: eb01 0343 add.w r3, r1, r3, lsl #1 + 99e4: f883 7172 strb.w r7, [r3, #370] ; 0x172 + 99e8: f8d1 1108 ldr.w r1, [r1, #264] ; 0x108 + 99ec: 6dcb ldr r3, [r1, #92] ; 0x5c + 99ee: f043 0320 orr.w r3, r3, #32 + 99f2: 65cb str r3, [r1, #92] ; 0x5c uint8_t ch = ((t_channel-1) & 0x0F); - 9a54: 7e23 ldrb r3, [r4, #24] + 99f4: 7e23 ldrb r3, [r4, #24] midi.setLocalControl(channel,106,cc106); - 9a56: 6821 ldr r1, [r4, #0] - 9a58: 3b01 subs r3, #1 + 99f6: 6821 ldr r1, [r4, #0] + 99f8: 3b01 subs r3, #1 channel[ch].control[cc] = (t_value & 0x7F); - 9a5a: f003 030f and.w r3, r3, #15 - 9a5e: eb03 1383 add.w r3, r3, r3, lsl #6 - 9a62: eb01 0343 add.w r3, r1, r3, lsl #1 - 9a66: f883 6179 strb.w r6, [r3, #377] ; 0x179 - 9a6a: f8d1 0108 ldr.w r0, [r1, #264] ; 0x108 + 99fa: f003 030f and.w r3, r3, #15 + 99fe: eb03 1383 add.w r3, r3, r3, lsl #6 + 9a02: eb01 0343 add.w r3, r1, r3, lsl #1 + 9a06: f883 6179 strb.w r6, [r3, #377] ; 0x179 + 9a0a: f8d1 0108 ldr.w r0, [r1, #264] ; 0x108 midi.setLocalControl(channel,107,cc107); - 9a6e: 6821 ldr r1, [r4, #0] - 9a70: 6dc3 ldr r3, [r0, #92] ; 0x5c - 9a72: f043 0320 orr.w r3, r3, #32 - 9a76: 65c3 str r3, [r0, #92] ; 0x5c + 9a0e: 6821 ldr r1, [r4, #0] + 9a10: 6dc3 ldr r3, [r0, #92] ; 0x5c + 9a12: f043 0320 orr.w r3, r3, #32 + 9a16: 65c3 str r3, [r0, #92] ; 0x5c uint8_t ch = ((t_channel-1) & 0x0F); - 9a78: 7e23 ldrb r3, [r4, #24] - 9a7a: 3b01 subs r3, #1 + 9a18: 7e23 ldrb r3, [r4, #24] + 9a1a: 3b01 subs r3, #1 channel[ch].control[cc] = (t_value & 0x7F); - 9a7c: f003 030f and.w r3, r3, #15 - 9a80: eb03 1383 add.w r3, r3, r3, lsl #6 - 9a84: eb01 0343 add.w r3, r1, r3, lsl #1 - 9a88: f883 217a strb.w r2, [r3, #378] ; 0x17a - 9a8c: f8d1 2108 ldr.w r2, [r1, #264] ; 0x108 - 9a90: 6dd3 ldr r3, [r2, #92] ; 0x5c - 9a92: f043 0320 orr.w r3, r3, #32 - 9a96: 65d3 str r3, [r2, #92] ; 0x5c - } - 9a98: b007 add sp, #28 - 9a9a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 9a9e: 4770 bx lr + 9a1c: f003 030f and.w r3, r3, #15 + 9a20: eb03 1383 add.w r3, r3, r3, lsl #6 + 9a24: eb01 0343 add.w r3, r1, r3, lsl #1 + 9a28: f883 217a strb.w r2, [r3, #378] ; 0x17a + 9a2c: f8d1 2108 ldr.w r2, [r1, #264] ; 0x108 + 9a30: 6dd3 ldr r3, [r2, #92] ; 0x5c + 9a32: f043 0320 orr.w r3, r3, #32 + 9a36: 65d3 str r3, [r2, #92] ; 0x5c + } + 9a38: b007 add sp, #28 + 9a3a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 9a3e: 4770 bx lr midi.sendControlChange(port, channel, t_control, t_value); - 9aa0: 236b movs r3, #107 ; 0x6b - 9aa2: e9cd 9a01 strd r9, sl, [sp, #4] - 9aa6: 9300 str r3, [sp, #0] - 9aa8: 2362 movs r3, #98 ; 0x62 - 9aaa: 7e22 ldrb r2, [r4, #24] - 9aac: 6820 ldr r0, [r4, #0] - 9aae: 7e61 ldrb r1, [r4, #25] - 9ab0: f019 fc94 bl 233dc + 9a40: 236b movs r3, #107 ; 0x6b + 9a42: e9cd 9a01 strd r9, sl, [sp, #4] + 9a46: 9300 str r3, [sp, #0] + 9a48: 2362 movs r3, #98 ; 0x62 + 9a4a: 7e22 ldrb r2, [r4, #24] + 9a4c: 6820 ldr r0, [r4, #0] + 9a4e: 7e61 ldrb r1, [r4, #25] + 9a50: f019 fd26 bl 234a0 return bitRead(flags, bit); - 9ab4: 7b62 ldrb r2, [r4, #13] + 9a54: 7b62 ldrb r2, [r4, #13] sendControl(106, (bpm >> 7) & 0x7F); - 9ab6: f3c5 13c7 ubfx r3, r5, #7, #8 + 9a56: f3c5 13c7 ubfx r3, r5, #7, #8 if(isSyncEnabled()){ - 9aba: 07d0 lsls r0, r2, #31 - 9abc: d59f bpl.n 99fe + 9a5a: 07d0 lsls r0, r2, #31 + 9a5c: d59f bpl.n 999e midi.sendControlChange(port, channel, t_control, t_value); - 9abe: 9300 str r3, [sp, #0] - 9ac0: 465b mov r3, fp + 9a5e: 9300 str r3, [sp, #0] + 9a60: 465b mov r3, fp sendControl(107, bpm & 0x7F); - 9ac2: f005 057f and.w r5, r5, #127 ; 0x7f + 9a62: f005 057f and.w r5, r5, #127 ; 0x7f midi.sendControlChange(port, channel, t_control, t_value); - 9ac6: e9cd 9a01 strd r9, sl, [sp, #4] - 9aca: 7e61 ldrb r1, [r4, #25] - 9acc: 7e22 ldrb r2, [r4, #24] - 9ace: 6820 ldr r0, [r4, #0] - 9ad0: f019 fc84 bl 233dc - 9ad4: 7b63 ldrb r3, [r4, #13] + 9a66: e9cd 9a01 strd r9, sl, [sp, #4] + 9a6a: 7e61 ldrb r1, [r4, #25] + 9a6c: 7e22 ldrb r2, [r4, #24] + 9a6e: 6820 ldr r0, [r4, #0] + 9a70: f019 fd16 bl 234a0 + 9a74: 7b63 ldrb r3, [r4, #13] if(isSyncEnabled()){ - 9ad6: 07d9 lsls r1, r3, #31 - 9ad8: d591 bpl.n 99fe + 9a76: 07d9 lsls r1, r3, #31 + 9a78: d591 bpl.n 999e midi.sendControlChange(port, channel, t_control, t_value); - 9ada: 9500 str r5, [sp, #0] - 9adc: 236b movs r3, #107 ; 0x6b - 9ade: e9cd 9a01 strd r9, sl, [sp, #4] - 9ae2: 7e22 ldrb r2, [r4, #24] - 9ae4: 7e61 ldrb r1, [r4, #25] - 9ae6: 6820 ldr r0, [r4, #0] - 9ae8: f019 fc78 bl 233dc - 9aec: 7b63 ldrb r3, [r4, #13] + 9a7a: 9500 str r5, [sp, #0] + 9a7c: 236b movs r3, #107 ; 0x6b + 9a7e: e9cd 9a01 strd r9, sl, [sp, #4] + 9a82: 7e22 ldrb r2, [r4, #24] + 9a84: 7e61 ldrb r1, [r4, #25] + 9a86: 6820 ldr r0, [r4, #0] + 9a88: f019 fd0a bl 234a0 + 9a8c: 7b63 ldrb r3, [r4, #13] if(isSyncEnabled()){ - 9aee: 07da lsls r2, r3, #31 - 9af0: d585 bpl.n 99fe + 9a8e: 07da lsls r2, r3, #31 + 9a90: d585 bpl.n 999e midi.sendControlChange(port, channel, t_control, t_value); - 9af2: 257f movs r5, #127 ; 0x7f - 9af4: 2363 movs r3, #99 ; 0x63 - 9af6: e9cd 9a01 strd r9, sl, [sp, #4] - 9afa: 9500 str r5, [sp, #0] - 9afc: 7e22 ldrb r2, [r4, #24] - 9afe: 7e61 ldrb r1, [r4, #25] - 9b00: 6820 ldr r0, [r4, #0] - 9b02: f019 fc6b bl 233dc - 9b06: 7b63 ldrb r3, [r4, #13] + 9a92: 257f movs r5, #127 ; 0x7f + 9a94: 2363 movs r3, #99 ; 0x63 + 9a96: e9cd 9a01 strd r9, sl, [sp, #4] + 9a9a: 9500 str r5, [sp, #0] + 9a9c: 7e22 ldrb r2, [r4, #24] + 9a9e: 7e61 ldrb r1, [r4, #25] + 9aa0: 6820 ldr r0, [r4, #0] + 9aa2: f019 fcfd bl 234a0 + 9aa6: 7b63 ldrb r3, [r4, #13] if(isSyncEnabled()){ - 9b08: 07db lsls r3, r3, #31 - 9b0a: f57f af78 bpl.w 99fe + 9aa8: 07db lsls r3, r3, #31 + 9aaa: f57f af78 bpl.w 999e midi.sendControlChange(port, channel, t_control, t_value); - 9b0e: 9500 str r5, [sp, #0] - 9b10: 2362 movs r3, #98 ; 0x62 - 9b12: e9cd 9a01 strd r9, sl, [sp, #4] - 9b16: 7e22 ldrb r2, [r4, #24] - 9b18: 7e61 ldrb r1, [r4, #25] - 9b1a: 6820 ldr r0, [r4, #0] - 9b1c: f019 fc5e bl 233dc - 9b20: e76d b.n 99fe - 9b22: bf00 nop - -00009b24 : + 9aae: 9500 str r5, [sp, #0] + 9ab0: 2362 movs r3, #98 ; 0x62 + 9ab2: e9cd 9a01 strd r9, sl, [sp, #4] + 9ab6: 7e22 ldrb r2, [r4, #24] + 9ab8: 7e61 ldrb r1, [r4, #25] + 9aba: 6820 ldr r0, [r4, #0] + 9abc: f019 fcf0 bl 234a0 + 9ac0: e76d b.n 999e + 9ac2: bf00 nop + +00009ac4 : if(value==0){ - 9b24: b1a9 cbz r1, 9b52 + 9ac4: b1a9 cbz r1, 9af2 void tempoControl(uint8_t value, bool up){ - 9b26: b510 push {r4, lr} - 9b28: b084 sub sp, #16 - 9b2a: 7b43 ldrb r3, [r0, #13] + 9ac6: b510 push {r4, lr} + 9ac8: b084 sub sp, #16 + 9aca: 7b43 ldrb r3, [r0, #13] if(up){ - 9b2c: b91a cbnz r2, 9b36 + 9acc: b91a cbnz r2, 9ad6 if(isSyncEnabled()){ - 9b2e: 07db lsls r3, r3, #31 - 9b30: d410 bmi.n 9b54 + 9ace: 07db lsls r3, r3, #31 + 9ad0: d410 bmi.n 9af4 } - 9b32: b004 add sp, #16 - 9b34: bd10 pop {r4, pc} + 9ad2: b004 add sp, #16 + 9ad4: bd10 pop {r4, pc} if(isSyncEnabled()){ - 9b36: 07da lsls r2, r3, #31 - 9b38: d5fb bpl.n 9b32 + 9ad6: 07da lsls r2, r3, #31 + 9ad8: d5fb bpl.n 9ad2 midi.sendControlChange(port, channel, t_control, t_value); - 9b3a: 2401 movs r4, #1 - 9b3c: 2200 movs r2, #0 - 9b3e: 2350 movs r3, #80 ; 0x50 - 9b40: e88d 0016 stmia.w sp, {r1, r2, r4} - 9b44: 7e02 ldrb r2, [r0, #24] - 9b46: 7e41 ldrb r1, [r0, #25] - 9b48: 6800 ldr r0, [r0, #0] - 9b4a: f019 fc47 bl 233dc - } - 9b4e: b004 add sp, #16 - 9b50: bd10 pop {r4, pc} - 9b52: 4770 bx lr + 9ada: 2401 movs r4, #1 + 9adc: 2200 movs r2, #0 + 9ade: 2350 movs r3, #80 ; 0x50 + 9ae0: e88d 0016 stmia.w sp, {r1, r2, r4} + 9ae4: 7e02 ldrb r2, [r0, #24] + 9ae6: 7e41 ldrb r1, [r0, #25] + 9ae8: 6800 ldr r0, [r0, #0] + 9aea: f019 fcd9 bl 234a0 + } + 9aee: b004 add sp, #16 + 9af0: bd10 pop {r4, pc} + 9af2: 4770 bx lr midi.sendControlChange(port, channel, t_control, t_value); - 9b54: 2401 movs r4, #1 - 9b56: 2351 movs r3, #81 ; 0x51 - 9b58: e9cd 1200 strd r1, r2, [sp] - 9b5c: 7e02 ldrb r2, [r0, #24] - 9b5e: 7e41 ldrb r1, [r0, #25] - 9b60: 6800 ldr r0, [r0, #0] - 9b62: 9402 str r4, [sp, #8] - 9b64: f019 fc3a bl 233dc + 9af4: 2401 movs r4, #1 + 9af6: 2351 movs r3, #81 ; 0x51 + 9af8: e9cd 1200 strd r1, r2, [sp] + 9afc: 7e02 ldrb r2, [r0, #24] + 9afe: 7e41 ldrb r1, [r0, #25] + 9b00: 6800 ldr r0, [r0, #0] + 9b02: 9402 str r4, [sp, #8] + 9b04: f019 fccc bl 234a0 } - 9b68: b004 add sp, #16 - 9b6a: bd10 pop {r4, pc} + 9b08: b004 add sp, #16 + 9b0a: bd10 pop {r4, pc} -00009b6c : +00009b0c : } void send(uint8_t mode, uint8_t ports, uint8_t indexA, uint8_t indexB=255){ - 9b6c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 9b70: f001 0403 and.w r4, r1, #3 - 9b74: b089 sub sp, #36 ; 0x24 - 9b76: 4680 mov r8, r0 - 9b78: 4615 mov r5, r2 + 9b0c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 9b10: f001 0403 and.w r4, r1, #3 + 9b14: b089 sub sp, #36 ; 0x24 + 9b16: 4680 mov r8, r0 + 9b18: 4615 mov r5, r2 switch(mode & 0x03){ - 9b7a: 2c01 cmp r4, #1 + 9b1a: 2c01 cmp r4, #1 void send(uint8_t mode, uint8_t ports, uint8_t indexA, uint8_t indexB=255){ - 9b7c: af04 add r7, sp, #16 - 9b7e: 469c mov ip, r3 - 9b80: f897 6038 ldrb.w r6, [r7, #56] ; 0x38 + 9b1c: af04 add r7, sp, #16 + 9b1e: 469c mov ip, r3 + 9b20: f897 6038 ldrb.w r6, [r7, #56] ; 0x38 switch(mode & 0x03){ - 9b84: d006 beq.n 9b94 - 9b86: 2c02 cmp r4, #2 - 9b88: d050 beq.n 9c2c - 9b8a: b394 cbz r4, 9bf2 + 9b24: d006 beq.n 9b34 + 9b26: 2c02 cmp r4, #2 + 9b28: d050 beq.n 9bcc + 9b2a: b394 cbz r4, 9b92 break; case BMC_CUSTOM_SYSEX_SEND_MERGE: sendMerged(ports, indexA, indexB); break; } } - 9b8c: 3714 adds r7, #20 - 9b8e: 46bd mov sp, r7 - 9b90: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 9b2c: 3714 adds r7, #20 + 9b2e: 46bd mov sp, r7 + 9b30: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} void send(uint8_t port, uint8_t index){ if(index < BMC_MAX_CUSTOM_SYSEX){ - 9b94: 2b03 cmp r3, #3 - 9b96: d80d bhi.n 9bb4 - 9b98: 6800 ldr r0, [r0, #0] + 9b34: 2b03 cmp r3, #3 + 9b36: d80d bhi.n 9b54 + 9b38: 6800 ldr r0, [r0, #0] bmcStoreDevice <1, 16, uint8_t>& device = midi.globals.store.global.customSysEx[index]; if(device.settings[0] != 0){ - 9b9a: eb03 03c3 add.w r3, r3, r3, lsl #3 - 9b9e: f241 41f3 movw r1, #5363 ; 0x14f3 + 9b3a: eb03 03c3 add.w r3, r3, r3, lsl #3 + 9b3e: f241 41f3 movw r1, #5363 ; 0x14f3 bmcStoreDevice <1, 16, uint8_t>& device = midi.globals.store.global.customSysEx[index]; - 9ba2: f8d0 2108 ldr.w r2, [r0, #264] ; 0x108 - 9ba6: 6812 ldr r2, [r2, #0] + 9b42: f8d0 2108 ldr.w r2, [r0, #264] ; 0x108 + 9b46: 6812 ldr r2, [r2, #0] if(device.settings[0] != 0){ - 9ba8: eb02 0343 add.w r3, r2, r3, lsl #1 - 9bac: 5c5b ldrb r3, [r3, r1] - 9bae: 2b00 cmp r3, #0 - 9bb0: f040 80ab bne.w 9d0a + 9b48: eb02 0343 add.w r3, r2, r3, lsl #1 + 9b4c: 5c5b ldrb r3, [r3, r1] + 9b4e: 2b00 cmp r3, #0 + 9b50: f040 80ab bne.w 9caa if(index < BMC_MAX_CUSTOM_SYSEX){ - 9bb4: 2e03 cmp r6, #3 - 9bb6: d8e9 bhi.n 9b8c - 9bb8: f8d8 0000 ldr.w r0, [r8] + 9b54: 2e03 cmp r6, #3 + 9b56: d8e9 bhi.n 9b2c + 9b58: f8d8 0000 ldr.w r0, [r8] if(device.settings[0] != 0){ - 9bbc: eb06 03c6 add.w r3, r6, r6, lsl #3 - 9bc0: f241 41f3 movw r1, #5363 ; 0x14f3 + 9b5c: eb06 03c6 add.w r3, r6, r6, lsl #3 + 9b60: f241 41f3 movw r1, #5363 ; 0x14f3 bmcStoreDevice <1, 16, uint8_t>& device = midi.globals.store.global.customSysEx[index]; - 9bc4: f8d0 2108 ldr.w r2, [r0, #264] ; 0x108 - 9bc8: 6812 ldr r2, [r2, #0] + 9b64: f8d0 2108 ldr.w r2, [r0, #264] ; 0x108 + 9b68: 6812 ldr r2, [r2, #0] if(device.settings[0] != 0){ - 9bca: eb02 0343 add.w r3, r2, r3, lsl #1 - 9bce: 5c5b ldrb r3, [r3, r1] - 9bd0: 2b00 cmp r3, #0 - 9bd2: d0db beq.n 9b8c + 9b6a: eb02 0343 add.w r3, r2, r3, lsl #1 + 9b6e: 5c5b ldrb r3, [r3, r1] + 9b70: 2b00 cmp r3, #0 + 9b72: d0db beq.n 9b2c midi.sendSysEx(port, device.events, device.settings[0]); - 9bd4: 2412 movs r4, #18 - 9bd6: 4629 mov r1, r5 - 9bd8: 2501 movs r5, #1 - 9bda: fb04 2406 mla r4, r4, r6, r2 - 9bde: 2200 movs r2, #0 - 9be0: 9502 str r5, [sp, #8] - 9be2: e9cd 2200 strd r2, r2, [sp] - 9be6: f241 42f4 movw r2, #5364 ; 0x14f4 - 9bea: 4422 add r2, r4 - 9bec: f019 fa6c bl 230c8 - 9bf0: e7cc b.n 9b8c + 9b74: 2412 movs r4, #18 + 9b76: 4629 mov r1, r5 + 9b78: 2501 movs r5, #1 + 9b7a: fb04 2406 mla r4, r4, r6, r2 + 9b7e: 2200 movs r2, #0 + 9b80: 9502 str r5, [sp, #8] + 9b82: e9cd 2200 strd r2, r2, [sp] + 9b86: f241 42f4 movw r2, #5364 ; 0x14f4 + 9b8a: 4422 add r2, r4 + 9b8c: f019 fb02 bl 23194 + 9b90: e7cc b.n 9b2c if(index < BMC_MAX_CUSTOM_SYSEX){ - 9bf2: 2b03 cmp r3, #3 - 9bf4: d8ca bhi.n 9b8c - 9bf6: 6800 ldr r0, [r0, #0] + 9b92: 2b03 cmp r3, #3 + 9b94: d8ca bhi.n 9b2c + 9b96: 6800 ldr r0, [r0, #0] if(device.settings[0] != 0){ - 9bf8: eb03 03c3 add.w r3, r3, r3, lsl #3 - 9bfc: f241 42f3 movw r2, #5363 ; 0x14f3 + 9b98: eb03 03c3 add.w r3, r3, r3, lsl #3 + 9b9c: f241 42f3 movw r2, #5363 ; 0x14f3 bmcStoreDevice <1, 16, uint8_t>& device = midi.globals.store.global.customSysEx[index]; - 9c00: f8d0 1108 ldr.w r1, [r0, #264] ; 0x108 - 9c04: 680e ldr r6, [r1, #0] + 9ba0: f8d0 1108 ldr.w r1, [r0, #264] ; 0x108 + 9ba4: 680e ldr r6, [r1, #0] if(device.settings[0] != 0){ - 9c06: eb06 0343 add.w r3, r6, r3, lsl #1 - 9c0a: 5c9b ldrb r3, [r3, r2] - 9c0c: 2b00 cmp r3, #0 - 9c0e: d0bd beq.n 9b8c + 9ba6: eb06 0343 add.w r3, r6, r3, lsl #1 + 9baa: 5c9b ldrb r3, [r3, r2] + 9bac: 2b00 cmp r3, #0 + 9bae: d0bd beq.n 9b2c midi.sendSysEx(port, device.events, device.settings[0]); - 9c10: f241 42f4 movw r2, #5364 ; 0x14f4 - 9c14: 4629 mov r1, r5 - 9c16: e9cd 4400 strd r4, r4, [sp] - 9c1a: 2412 movs r4, #18 - 9c1c: fb04 660c mla r6, r4, ip, r6 - 9c20: 2401 movs r4, #1 - 9c22: 4432 add r2, r6 - 9c24: 9402 str r4, [sp, #8] - 9c26: f019 fa4f bl 230c8 - 9c2a: e7af b.n 9b8c + 9bb0: f241 42f4 movw r2, #5364 ; 0x14f4 + 9bb4: 4629 mov r1, r5 + 9bb6: e9cd 4400 strd r4, r4, [sp] + 9bba: 2412 movs r4, #18 + 9bbc: fb04 660c mla r6, r4, ip, r6 + 9bc0: 2401 movs r4, #1 + 9bc2: 4432 add r2, r6 + 9bc4: 9402 str r4, [sp, #8] + 9bc6: f019 fae5 bl 23194 + 9bca: e7af b.n 9b2c } } } void sendMerged(uint8_t port, uint8_t indexA, uint8_t indexB){ if(port != 0 && indexA < BMC_MAX_CUSTOM_SYSEX && indexB < BMC_MAX_CUSTOM_SYSEX){ - 9c2c: 4333 orrs r3, r6 - 9c2e: 2b03 cmp r3, #3 - 9c30: d8ac bhi.n 9b8c - 9c32: 2a00 cmp r2, #0 - 9c34: d0aa beq.n 9b8c + 9bcc: 4333 orrs r3, r6 + 9bce: 2b03 cmp r3, #3 + 9bd0: d8ac bhi.n 9b2c + 9bd2: 2a00 cmp r2, #0 + 9bd4: d0aa beq.n 9b2c bmcStoreDevice <1, 16, uint8_t>& deviceA = midi.globals.store.global.customSysEx[indexA]; - 9c36: f8d0 a000 ldr.w sl, [r0] + 9bd6: f8d0 a000 ldr.w sl, [r0] bmcStoreDevice <1, 16, uint8_t>& deviceB = midi.globals.store.global.customSysEx[indexB]; uint8_t length = deviceA.settings[0] + deviceB.settings[0]; - 9c3a: eb0c 0ccc add.w ip, ip, ip, lsl #3 - 9c3e: eb06 02c6 add.w r2, r6, r6, lsl #3 - 9c42: f241 49f3 movw r9, #5363 ; 0x14f3 + 9bda: eb0c 0ccc add.w ip, ip, ip, lsl #3 + 9bde: eb06 02c6 add.w r2, r6, r6, lsl #3 + 9be2: f241 49f3 movw r9, #5363 ; 0x14f3 bmcStoreDevice <1, 16, uint8_t>& deviceA = midi.globals.store.global.customSysEx[indexA]; - 9c46: f8da 3108 ldr.w r3, [sl, #264] ; 0x108 + 9be6: f8da 3108 ldr.w r3, [sl, #264] ; 0x108 } for(uint8_t i=deviceA.settings[0],e=0;e& deviceA = midi.globals.store.global.customSysEx[indexA]; - 9c4c: 681b ldr r3, [r3, #0] + 9bec: 681b ldr r3, [r3, #0] uint8_t length = deviceA.settings[0] + deviceB.settings[0]; - 9c4e: eb03 0242 add.w r2, r3, r2, lsl #1 - 9c52: eb03 044c add.w r4, r3, ip, lsl #1 - 9c56: f812 1009 ldrb.w r1, [r2, r9] - 9c5a: f814 2009 ldrb.w r2, [r4, r9] - 9c5e: 440a add r2, r1 - 9c60: 00f1 lsls r1, r6, #3 + 9bee: eb03 0242 add.w r2, r3, r2, lsl #1 + 9bf2: eb03 044c add.w r4, r3, ip, lsl #1 + 9bf6: f812 1009 ldrb.w r1, [r2, r9] + 9bfa: f814 2009 ldrb.w r2, [r4, r9] + 9bfe: 440a add r2, r1 + 9c00: 00f1 lsls r1, r6, #3 if(length==0){ - 9c62: f012 02ff ands.w r2, r2, #255 ; 0xff + 9c02: f012 02ff ands.w r2, r2, #255 ; 0xff uint8_t length = deviceA.settings[0] + deviceB.settings[0]; - 9c66: 60f9 str r1, [r7, #12] + 9c06: 60f9 str r1, [r7, #12] if(length==0){ - 9c68: d090 beq.n 9b8c + 9c08: d090 beq.n 9b2c uint8_t bytes[length]; - 9c6a: 1dd1 adds r1, r2, #7 - 9c6c: 607b str r3, [r7, #4] + 9c0a: 1dd1 adds r1, r2, #7 + 9c0c: 607b str r3, [r7, #4] memset(bytes, 0, sizeof(bytes[0])*length); - 9c6e: 60ba str r2, [r7, #8] + 9c0e: 60ba str r2, [r7, #8] uint8_t bytes[length]; - 9c70: f401 71fc and.w r1, r1, #504 ; 0x1f8 - 9c74: ebad 0d01 sub.w sp, sp, r1 + 9c10: f401 71fc and.w r1, r1, #504 ; 0x1f8 + 9c14: ebad 0d01 sub.w sp, sp, r1 memset(bytes, 0, sizeof(bytes[0])*length); - 9c78: 2100 movs r1, #0 + 9c18: 2100 movs r1, #0 uint8_t bytes[length]; - 9c7a: f10d 0810 add.w r8, sp, #16 + 9c1a: f10d 0810 add.w r8, sp, #16 memset(bytes, 0, sizeof(bytes[0])*length); - 9c7e: 4640 mov r0, r8 - 9c80: f024 fc04 bl 2e48c + 9c1e: 4640 mov r0, r8 + 9c20: f024 fca8 bl 2e574 for(uint8_t i=0;i - 9c8e: f04f 0c00 mov.w ip, #0 - 9c92: 44a1 add r9, r4 + 9c24: f814 0009 ldrb.w r0, [r4, r9] + 9c28: e9d7 3201 ldrd r3, r2, [r7, #4] + 9c2c: b1a0 cbz r0, 9c58 + 9c2e: f04f 0c00 mov.w ip, #0 + 9c32: 44a1 add r9, r4 bytes[i] = deviceA.events[i] & 0x7F; - 9c94: f241 4ef4 movw lr, #5364 ; 0x14f4 - 9c98: 4661 mov r1, ip - 9c9a: 1860 adds r0, r4, r1 + 9c34: f241 4ef4 movw lr, #5364 ; 0x14f4 + 9c38: 4661 mov r1, ip + 9c3a: 1860 adds r0, r4, r1 for(uint8_t i=0;i + 9c4c: fa5f f18c uxtb.w r1, ip + 9c50: f899 0000 ldrb.w r0, [r9] + 9c54: 4288 cmp r0, r1 + 9c56: d8f0 bhi.n 9c3a for(uint8_t i=deviceA.settings[0],e=0;e - 9cc8: 2100 movs r1, #0 - 9cca: 4426 add r6, r4 + 9c58: 68fc ldr r4, [r7, #12] + 9c5a: 4434 add r4, r6 + 9c5c: f241 46f3 movw r6, #5363 ; 0x14f3 + 9c60: eb03 0444 add.w r4, r3, r4, lsl #1 + 9c64: 5da3 ldrb r3, [r4, r6] + 9c66: b19b cbz r3, 9c90 + 9c68: 2100 movs r1, #0 + 9c6a: 4426 add r6, r4 bytes[i] = deviceB.events[e] & 0x7F; - 9ccc: f241 4cf4 movw ip, #5364 ; 0x14f4 - 9cd0: 460b mov r3, r1 - 9cd2: 4423 add r3, r4 - 9cd4: f813 e00c ldrb.w lr, [r3, ip] - 9cd8: 1843 adds r3, r0, r1 + 9c6c: f241 4cf4 movw ip, #5364 ; 0x14f4 + 9c70: 460b mov r3, r1 + 9c72: 4423 add r3, r4 + 9c74: f813 e00c ldrb.w lr, [r3, ip] + 9c78: 1843 adds r3, r0, r1 for(uint8_t i=deviceA.settings[0],e=0;e + 9c86: b2cb uxtb r3, r1 + 9c88: f896 e000 ldrb.w lr, [r6] + 9c8c: 459e cmp lr, r3 + 9c8e: d8f0 bhi.n 9c72 midi.sendSysEx(port, bytes, length); - 9cf0: 2001 movs r0, #1 - 9cf2: 2400 movs r4, #0 - 9cf4: 4613 mov r3, r2 - 9cf6: 4629 mov r1, r5 - 9cf8: 9002 str r0, [sp, #8] - 9cfa: 4642 mov r2, r8 - 9cfc: 4650 mov r0, sl - 9cfe: e9cd 4400 strd r4, r4, [sp] - 9d02: f019 f9e1 bl 230c8 - 9d06: 46dd mov sp, fp - } - 9d08: e740 b.n 9b8c + 9c90: 2001 movs r0, #1 + 9c92: 2400 movs r4, #0 + 9c94: 4613 mov r3, r2 + 9c96: 4629 mov r1, r5 + 9c98: 9002 str r0, [sp, #8] + 9c9a: 4642 mov r2, r8 + 9c9c: 4650 mov r0, sl + 9c9e: e9cd 4400 strd r4, r4, [sp] + 9ca2: f019 fa77 bl 23194 + 9ca6: 46dd mov sp, fp + } + 9ca8: e740 b.n 9b2c midi.sendSysEx(port, device.events, device.settings[0]); - 9d0a: 2112 movs r1, #18 - 9d0c: 9402 str r4, [sp, #8] - 9d0e: fb01 210c mla r1, r1, ip, r2 - 9d12: 2200 movs r2, #0 - 9d14: e9cd 2200 strd r2, r2, [sp] - 9d18: f241 42f4 movw r2, #5364 ; 0x14f4 - 9d1c: 440a add r2, r1 - 9d1e: 4629 mov r1, r5 - 9d20: f019 f9d2 bl 230c8 - 9d24: e746 b.n 9bb4 - 9d26: bf00 nop - -00009d28 : + 9caa: 2112 movs r1, #18 + 9cac: 9402 str r4, [sp, #8] + 9cae: fb01 210c mla r1, r1, ip, r2 + 9cb2: 2200 movs r2, #0 + 9cb4: e9cd 2200 strd r2, r2, [sp] + 9cb8: f241 42f4 movw r2, #5364 ; 0x14f4 + 9cbc: 440a add r2, r1 + 9cbe: 4629 mov r1, r5 + 9cc0: f019 fa68 bl 23194 + 9cc4: e746 b.n 9b54 + 9cc6: bf00 nop + +00009cc8 : } break; } return BMC_OFF_LED_EVENT; } void BMC::handleClockLeds(){ - 9d28: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 9d2c: f241 45d9 movw r5, #5337 ; 0x14d9 - 9d30: f643 1678 movw r6, #14712 ; 0x3978 - 9d34: b089 sub sp, #36 ; 0x24 + 9cc8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 9ccc: f241 45d9 movw r5, #5337 ; 0x14d9 + 9cd0: f643 1420 movw r4, #14624 ; 0x3920 + 9cd4: f643 1698 movw r6, #14744 ; 0x3998 + 9cd8: b089 sub sp, #36 ; 0x24 + 9cda: 4405 add r5, r0 + 9cdc: 4404 add r4, r0 + 9cde: 4406 add r6, r0 + 9ce0: f500 5a80 add.w sl, r0, #4096 ; 0x1000 interval = value; - 9d36: f04f 0896 mov.w r8, #150 ; 0x96 - 9d3a: 4fc3 ldr r7, [pc, #780] ; (a048 ) - 9d3c: 4405 add r5, r0 - 9d3e: f500 5464 add.w r4, r0, #14592 ; 0x3900 - 9d42: 4406 add r6, r0 - 9d44: f500 5a80 add.w sl, r0, #4096 ; 0x1000 - 9d48: 9000 str r0, [sp, #0] + 9ce4: f04f 0896 mov.w r8, #150 ; 0x96 + 9ce8: 4fc0 ldr r7, [pc, #768] ; (9fec ) + 9cea: 9000 str r0, [sp, #0] #endif #if BMC_MAX_GLOBAL_LEDS > 0 for(uint8_t index = 0; index < BMC_MAX_GLOBAL_LEDS; index++){ bmcStoreDevice <1, 1>& device = store.global.leds[index]; bmcStoreEvent cData = globals.getDeviceEventType(device.events[0]); - 9d4a: 782b ldrb r3, [r5, #0] + 9cec: 782b ldrb r3, [r5, #0] if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 9d4c: 1e5a subs r2, r3, #1 - 9d4e: 2ac7 cmp r2, #199 ; 0xc7 - 9d50: d80c bhi.n 9d6c + 9cee: 1e5a subs r2, r3, #1 + 9cf0: 2ac7 cmp r2, #199 ; 0xc7 + 9cf2: d80c bhi.n 9d0e return store.global.events[n-1]; - 9d52: f8da 2800 ldr.w r2, [sl, #2048] ; 0x800 - 9d56: eb02 02c3 add.w r2, r2, r3, lsl #3 + 9cf4: f8da 2800 ldr.w r2, [sl, #2048] ; 0x800 + 9cf8: eb02 02c3 add.w r2, r2, r3, lsl #3 return t_value == BMC_EVENT_TYPE_SYSTEM_CLOCK || - 9d5a: f892 3032 ldrb.w r3, [r2, #50] ; 0x32 + 9cfc: f892 3032 ldrb.w r3, [r2, #50] ; 0x32 // first bit is always the "blink" state if(BMCTools::isMidiClockLedEvent(cData.type)){ - 9d5e: 3b10 subs r3, #16 - 9d60: 2b01 cmp r3, #1 - 9d62: d803 bhi.n 9d6c - 9d64: 7863 ldrb r3, [r4, #1] + 9d00: 3b10 subs r3, #16 + 9d02: 2b01 cmp r3, #1 + 9d04: d803 bhi.n 9d0e + 9d06: 7863 ldrb r3, [r4, #1] if(!flags.read(BMC_FLAG_LED_BLINK_ENABLED)){ - 9d66: 0799 lsls r1, r3, #30 - 9d68: f140 811c bpl.w 9fa4 + 9d08: 0799 lsls r1, r3, #30 + 9d0a: f140 811c bpl.w 9f46 for(uint8_t index = 0; index < BMC_MAX_GLOBAL_LEDS; index++){ - 9d6c: 3418 adds r4, #24 - 9d6e: 3503 adds r5, #3 - 9d70: 42a6 cmp r6, r4 - 9d72: d1ea bne.n 9d4a - 9d74: 9b00 ldr r3, [sp, #0] - 9d76: f643 04b8 movw r4, #14520 ; 0x38b8 - 9d7a: 2700 movs r7, #0 - 9d7c: f643 02c4 movw r2, #14532 ; 0x38c4 - 9d80: 441c add r4, r3 - 9d82: f04f 0802 mov.w r8, #2 - 9d86: 4413 add r3, r2 - 9d88: 463e mov r6, r7 - 9d8a: 9307 str r3, [sp, #28] + 9d0e: 3418 adds r4, #24 + 9d10: 3503 adds r5, #3 + 9d12: 42a6 cmp r6, r4 + 9d14: d1ea bne.n 9cec + 9d16: 9b00 ldr r3, [sp, #0] + 9d18: f643 04d8 movw r4, #14552 ; 0x38d8 + 9d1c: 2700 movs r7, #0 + 9d1e: f643 02e4 movw r2, #14564 ; 0x38e4 + 9d22: 441c add r4, r3 + 9d24: f04f 0802 mov.w r8, #2 + 9d28: 4413 add r3, r2 + 9d2a: 463e mov r6, r7 + 9d2c: 9307 str r3, [sp, #28] #if BMC_MAX_RGB_PIXELS > 0 for(uint8_t index = 0; index < BMC_MAX_RGB_PIXELS; index++){ bmcStoreDevice <1, 3>& device = store.layers[layer].rgbPixels[index]; for(uint8_t e = 0; e < 3; e++){ - 9d8c: 00b3 lsls r3, r6, #2 - 9d8e: f241 52b6 movw r2, #5558 ; 0x15b6 - 9d92: f108 0001 add.w r0, r8, #1 - 9d96: 9304 str r3, [sp, #16] + 9d2e: 00b3 lsls r3, r6, #2 + 9d30: f241 52b6 movw r2, #5558 ; 0x15b6 + 9d34: f108 0001 add.w r0, r8, #1 + 9d38: 9304 str r3, [sp, #16] drawBuffer[num+1] = (color >> 8) & 255; - 9d98: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff + 9d3a: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff drawBuffer[num+3] = (color >> 24) & 255; - 9d9c: 9003 str r0, [sp, #12] - 9d9e: 1c78 adds r0, r7, #1 + 9d3e: 9003 str r0, [sp, #12] + 9d40: 1c78 adds r0, r7, #1 drawBuffer[num+1] = (color >> 8) & 255; - 9da0: 9302 str r3, [sp, #8] + 9d42: 9302 str r3, [sp, #8] bmcStoreDevice <1, 3>& device = store.layers[layer].rgbPixels[index]; - 9da2: f8da 386c ldr.w r3, [sl, #2156] ; 0x86c - 9da6: 9006 str r0, [sp, #24] - 9da8: 1cb8 adds r0, r7, #2 - 9daa: 7819 ldrb r1, [r3, #0] + 9d44: f8da 386c ldr.w r3, [sl, #2156] ; 0x86c + 9d48: 9006 str r0, [sp, #24] + 9d4a: 1cb8 adds r0, r7, #2 + 9d4c: 7819 ldrb r1, [r3, #0] bitWrite(value[mask], bit, newValue); - 9dac: 2301 movs r3, #1 - 9dae: 9005 str r0, [sp, #20] - 9db0: 40b3 lsls r3, r6 - 9db2: fa1f fb83 uxth.w fp, r3 - 9db6: 2385 movs r3, #133 ; 0x85 - 9db8: fb13 2301 smlabb r3, r3, r1, r2 - 9dbc: eb06 0286 add.w r2, r6, r6, lsl #2 - 9dc0: 9900 ldr r1, [sp, #0] - 9dc2: 4413 add r3, r2 - 9dc4: ea6f 020b mvn.w r2, fp + 9d4e: 2301 movs r3, #1 + 9d50: 9005 str r0, [sp, #20] + 9d52: 40b3 lsls r3, r6 + 9d54: fa1f fb83 uxth.w fp, r3 + 9d58: 2385 movs r3, #133 ; 0x85 + 9d5a: fb13 2301 smlabb r3, r3, r1, r2 + 9d5e: eb06 0286 add.w r2, r6, r6, lsl #2 + 9d62: 9900 ldr r1, [sp, #0] + 9d64: 4413 add r3, r2 + 9d66: ea6f 020b mvn.w r2, fp if (num >= numled) return; - 9dc8: f501 5c40 add.w ip, r1, #12288 ; 0x3000 - 9dcc: b292 uxth r2, r2 - 9dce: 440b add r3, r1 - 9dd0: 9201 str r2, [sp, #4] - 9dd2: 2200 movs r2, #0 + 9d6a: f501 5c40 add.w ip, r1, #12288 ; 0x3000 + 9d6e: b292 uxth r2, r2 + 9d70: 440b add r3, r1 + 9d72: 9201 str r2, [sp, #4] + 9d74: 2200 movs r2, #0 bmcStoreEvent cData = globals.getDeviceEventType(device.events[e]); - 9dd4: f813 0f01 ldrb.w r0, [r3, #1]! + 9d76: f813 0f01 ldrb.w r0, [r3, #1]! if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 9dd8: 1e41 subs r1, r0, #1 - 9dda: 29c7 cmp r1, #199 ; 0xc7 - 9ddc: d808 bhi.n 9df0 + 9d7a: 1e41 subs r1, r0, #1 + 9d7c: 29c7 cmp r1, #199 ; 0xc7 + 9d7e: d808 bhi.n 9d92 return store.global.events[n-1]; - 9dde: f8da 1800 ldr.w r1, [sl, #2048] ; 0x800 - 9de2: eb01 01c0 add.w r1, r1, r0, lsl #3 - 9de6: f891 1032 ldrb.w r1, [r1, #50] ; 0x32 + 9d80: f8da 1800 ldr.w r1, [sl, #2048] ; 0x800 + 9d84: eb01 01c0 add.w r1, r1, r0, lsl #3 + 9d88: f891 1032 ldrb.w r1, [r1, #50] ; 0x32 // first bit is always the "blink" state if(BMCTools::isMidiClockLedEvent(cData.type)){ - 9dea: 3910 subs r1, #16 - 9dec: 2901 cmp r1, #1 - 9dee: d90c bls.n 9e0a + 9d8c: 3910 subs r1, #16 + 9d8e: 2901 cmp r1, #1 + 9d90: d90c bls.n 9dac for(uint8_t e = 0; e < 3; e++){ - 9df0: 3201 adds r2, #1 - 9df2: 2a03 cmp r2, #3 - 9df4: d1ee bne.n 9dd4 + 9d92: 3201 adds r2, #1 + 9d94: 2a03 cmp r2, #3 + 9d96: d1ee bne.n 9d76 for(uint8_t index = 0; index < BMC_MAX_RGB_PIXELS; index++){ - 9df6: 3601 adds r6, #1 - 9df8: 3401 adds r4, #1 - 9dfa: 3703 adds r7, #3 - 9dfc: f108 0804 add.w r8, r8, #4 - 9e00: 2e06 cmp r6, #6 - 9e02: d1c3 bne.n 9d8c + 9d98: 3601 adds r6, #1 + 9d9a: 3401 adds r4, #1 + 9d9c: 3703 adds r7, #3 + 9d9e: f108 0804 add.w r8, r8, #4 + 9da2: 2e06 cmp r6, #6 + 9da4: d1c3 bne.n 9d2e } } } #endif } - 9e04: b009 add sp, #36 ; 0x24 - 9e06: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 9da6: b009 add sp, #36 ; 0x24 + 9da8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} bitWrite(rgbPulseReset[t_index], t_color, 1); - 9e0a: 2101 movs r1, #1 - 9e0c: f894 003c ldrb.w r0, [r4, #60] ; 0x3c - 9e10: 4091 lsls r1, r2 - 9e12: b2c9 uxtb r1, r1 - 9e14: 4308 orrs r0, r1 - 9e16: f884 003c strb.w r0, [r4, #60] ; 0x3c + 9dac: 2101 movs r1, #1 + 9dae: f894 003c ldrb.w r0, [r4, #60] ; 0x3c + 9db2: 4091 lsls r1, r2 + 9db4: b2c9 uxtb r1, r1 + 9db6: 4308 orrs r0, r1 + 9db8: f884 003c strb.w r0, [r4, #60] ; 0x3c t_color = bitWrite(currentColor[t_index],t_color,1); - 9e1a: 7820 ldrb r0, [r4, #0] - 9e1c: 4308 orrs r0, r1 + 9dbc: 7820 ldrb r0, [r4, #0] + 9dbe: 4308 orrs r0, r1 if(t_color==255){ - 9e1e: 28ff cmp r0, #255 ; 0xff + 9dc0: 28ff cmp r0, #255 ; 0xff t_color = bitWrite(currentColor[t_index],t_color,1); - 9e20: 7020 strb r0, [r4, #0] + 9dc2: 7020 strb r0, [r4, #0] if(t_color==255){ - 9e22: f000 8083 beq.w 9f2c + 9dc4: f000 8083 beq.w 9ece } else if(t_color==127){ - 9e26: 287f cmp r0, #127 ; 0x7f - 9e28: d076 beq.n 9f18 + 9dc8: 287f cmp r0, #127 ; 0x7f + 9dca: d076 beq.n 9eba if(!bitRead(cColor,7) || (cColor&0x7F)!=t_color){ - 9e2a: 0601 lsls r1, r0, #24 - 9e2c: d402 bmi.n 9e34 + 9dcc: 0601 lsls r1, r0, #24 + 9dce: d402 bmi.n 9dd6 if(_t_color==BMC_COLOR_RAINBOW_FADE){ - 9e2e: 280a cmp r0, #10 - 9e30: f000 8083 beq.w 9f3a + 9dd0: 280a cmp r0, #10 + 9dd2: f000 8083 beq.w 9edc switch(t_color & 0x7F){ - 9e34: f000 017f and.w r1, r0, #127 ; 0x7f - 9e38: 3901 subs r1, #1 - 9e3a: b2c9 uxtb r1, r1 - 9e3c: 2909 cmp r1, #9 - 9e3e: d876 bhi.n 9f2e - 9e40: 4d82 ldr r5, [pc, #520] ; (a04c ) - 9e42: f855 e021 ldr.w lr, [r5, r1, lsl #2] - 9e46: f8bc 189c ldrh.w r1, [ip, #2204] ; 0x89c - 9e4a: 42b1 cmp r1, r6 - 9e4c: d916 bls.n 9e7c + 9dd6: f000 017f and.w r1, r0, #127 ; 0x7f + 9dda: 3901 subs r1, #1 + 9ddc: b2c9 uxtb r1, r1 + 9dde: 2909 cmp r1, #9 + 9de0: d876 bhi.n 9ed0 + 9de2: 4d83 ldr r5, [pc, #524] ; (9ff0 ) + 9de4: f855 e021 ldr.w lr, [r5, r1, lsl #2] + 9de8: f8bc 18bc ldrh.w r1, [ip, #2236] ; 0x8bc + 9dec: 42b1 cmp r1, r6 + 9dee: d916 bls.n 9e1e if (config < 6) { - 9e4e: f89c 189f ldrb.w r1, [ip, #2207] ; 0x89f - 9e52: 2905 cmp r1, #5 + 9df0: f89c 18bf ldrb.w r1, [ip, #2239] ; 0x8bf + 9df4: 2905 cmp r1, #5 drawBuffer[num+0] = color & 255; - 9e54: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 + 9df6: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 if (config < 6) { - 9e58: f200 8088 bhi.w 9f6c + 9dfa: f200 8088 bhi.w 9f0e drawBuffer[num+0] = color & 255; - 9e5c: f801 e007 strb.w lr, [r1, r7] + 9dfe: f801 e007 strb.w lr, [r1, r7] drawBuffer[num+1] = (color >> 8) & 255; - 9e60: ea4f 291e mov.w r9, lr, lsr #8 - 9e64: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 + 9e02: ea4f 291e mov.w r9, lr, lsr #8 + 9e06: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 drawBuffer[num+2] = (color >> 16) & 255; - 9e68: ea4f 4e1e mov.w lr, lr, lsr #16 + 9e0a: ea4f 4e1e mov.w lr, lr, lsr #16 drawBuffer[num+1] = (color >> 8) & 255; - 9e6c: 9d06 ldr r5, [sp, #24] - 9e6e: f801 9005 strb.w r9, [r1, r5] + 9e0e: 9d06 ldr r5, [sp, #24] + 9e10: f801 9005 strb.w r9, [r1, r5] drawBuffer[num+2] = (color >> 16) & 255; - 9e72: 9d05 ldr r5, [sp, #20] - 9e74: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 - 9e78: f801 e005 strb.w lr, [r1, r5] + 9e14: 9d05 ldr r5, [sp, #20] + 9e16: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 + 9e1a: f801 e005 strb.w lr, [r1, r5] bitWrite(t_color, 7, 1); - 9e7c: f040 0e80 orr.w lr, r0, #128 ; 0x80 + 9e1e: f040 0e80 orr.w lr, r0, #128 ; 0x80 currentColor[t_index] = t_color; - 9e80: f000 000f and.w r0, r0, #15 - 9e84: f884 e000 strb.w lr, [r4] + 9e22: f000 000f and.w r0, r0, #15 + 9e26: f884 e000 strb.w lr, [r4] globals.rgbPixelStates[0].setBit(n, bitRead(color, 0)); - 9e88: f00e 0e01 and.w lr, lr, #1 - 9e8c: f8dc 183c ldr.w r1, [ip, #2108] ; 0x83c + 9e2a: f00e 0e01 and.w lr, lr, #1 + 9e2e: f8dc 185c ldr.w r1, [ip, #2140] ; 0x85c if(bitRead(value[mask], bit) != newValue){ - 9e90: f8b1 904a ldrh.w r9, [r1, #74] ; 0x4a - 9e94: fa49 f506 asr.w r5, r9, r6 - 9e98: f005 0501 and.w r5, r5, #1 - 9e9c: 4575 cmp r5, lr - 9e9e: d00a beq.n 9eb6 + 9e32: f8b1 904a ldrh.w r9, [r1, #74] ; 0x4a + 9e36: fa49 f506 asr.w r5, r9, r6 + 9e3a: f005 0501 and.w r5, r5, #1 + 9e3e: 4575 cmp r5, lr + 9e40: d00a beq.n 9e58 bitWrite(value[mask], bit, newValue); - 9ea0: f1be 0f00 cmp.w lr, #0 - 9ea4: d07a beq.n 9f9c - 9ea6: ea49 090b orr.w r9, r9, fp + 9e42: f1be 0f00 cmp.w lr, #0 + 9e46: d07a beq.n 9f3e + 9e48: ea49 090b orr.w r9, r9, fp updated = true; - 9eaa: f04f 0501 mov.w r5, #1 - 9eae: f8a1 904a strh.w r9, [r1, #74] ; 0x4a - 9eb2: f881 504c strb.w r5, [r1, #76] ; 0x4c + 9e4c: f04f 0501 mov.w r5, #1 + 9e50: f8a1 904a strh.w r9, [r1, #74] ; 0x4a + 9e54: f881 504c strb.w r5, [r1, #76] ; 0x4c if(bitRead(value[mask], bit) != newValue){ - 9eb6: f8b1 e04e ldrh.w lr, [r1, #78] ; 0x4e + 9e58: f8b1 e04e ldrh.w lr, [r1, #78] ; 0x4e globals.rgbPixelStates[1].setBit(n, bitRead(color, 1)); - 9eba: f3c0 0540 ubfx r5, r0, #1, #1 - 9ebe: fa4e f906 asr.w r9, lr, r6 - 9ec2: f009 0901 and.w r9, r9, #1 - 9ec6: 45a9 cmp r9, r5 - 9ec8: d00a beq.n 9ee0 + 9e5c: f3c0 0540 ubfx r5, r0, #1, #1 + 9e60: fa4e f906 asr.w r9, lr, r6 + 9e64: f009 0901 and.w r9, r9, #1 + 9e68: 45a9 cmp r9, r5 + 9e6a: d00a beq.n 9e82 bitWrite(value[mask], bit, newValue); - 9eca: 2d00 cmp r5, #0 - 9ecc: d14b bne.n 9f66 - 9ece: 9d01 ldr r5, [sp, #4] - 9ed0: ea0e 0e05 and.w lr, lr, r5 + 9e6c: 2d00 cmp r5, #0 + 9e6e: d14b bne.n 9f08 + 9e70: 9d01 ldr r5, [sp, #4] + 9e72: ea0e 0e05 and.w lr, lr, r5 updated = true; - 9ed4: f04f 0501 mov.w r5, #1 - 9ed8: f8a1 e04e strh.w lr, [r1, #78] ; 0x4e - 9edc: f881 5050 strb.w r5, [r1, #80] ; 0x50 + 9e76: f04f 0501 mov.w r5, #1 + 9e7a: f8a1 e04e strh.w lr, [r1, #78] ; 0x4e + 9e7e: f881 5050 strb.w r5, [r1, #80] ; 0x50 if(bitRead(value[mask], bit) != newValue){ - 9ee0: f8b1 e052 ldrh.w lr, [r1, #82] ; 0x52 + 9e82: f8b1 e052 ldrh.w lr, [r1, #82] ; 0x52 globals.rgbPixelStates[2].setBit(n, bitRead(color, 2)); - 9ee4: f3c0 0980 ubfx r9, r0, #2, #1 - 9ee8: fa4e f006 asr.w r0, lr, r6 - 9eec: f000 0001 and.w r0, r0, #1 - 9ef0: 4548 cmp r0, r9 - 9ef2: d00b beq.n 9f0c + 9e86: f3c0 0980 ubfx r9, r0, #2, #1 + 9e8a: fa4e f006 asr.w r0, lr, r6 + 9e8e: f000 0001 and.w r0, r0, #1 + 9e92: 4548 cmp r0, r9 + 9e94: d00b beq.n 9eae bitWrite(value[mask], bit, newValue); - 9ef4: f1b9 0f00 cmp.w r9, #0 - 9ef8: d11c bne.n 9f34 - 9efa: 9801 ldr r0, [sp, #4] - 9efc: ea0e 0e00 and.w lr, lr, r0 + 9e96: f1b9 0f00 cmp.w r9, #0 + 9e9a: d11c bne.n 9ed6 + 9e9c: 9801 ldr r0, [sp, #4] + 9e9e: ea0e 0e00 and.w lr, lr, r0 updated = true; - 9f00: f04f 0001 mov.w r0, #1 - 9f04: f8a1 e052 strh.w lr, [r1, #82] ; 0x52 - 9f08: f881 0054 strb.w r0, [r1, #84] ; 0x54 + 9ea2: f04f 0001 mov.w r0, #1 + 9ea6: f8a1 e052 strh.w lr, [r1, #82] ; 0x52 + 9eaa: f881 0054 strb.w r0, [r1, #84] ; 0x54 bitSet(flags, bit); - 9f0c: f8bc 18fa ldrh.w r1, [ip, #2298] ; 0x8fa - 9f10: f041 0101 orr.w r1, r1, #1 - 9f14: f8ac 18fa strh.w r1, [ip, #2298] ; 0x8fa - 9f18: 9807 ldr r0, [sp, #28] - 9f1a: f04f 0196 mov.w r1, #150 ; 0x96 - 9f1e: f820 1036 strh.w r1, [r0, r6, lsl #3] - 9f22: 4949 ldr r1, [pc, #292] ; (a048 ) - 9f24: 6809 ldr r1, [r1, #0] + 9eae: f8bc 191a ldrh.w r1, [ip, #2330] ; 0x91a + 9eb2: f041 0101 orr.w r1, r1, #1 + 9eb6: f8ac 191a strh.w r1, [ip, #2330] ; 0x91a + 9eba: 9807 ldr r0, [sp, #28] + 9ebc: f04f 0196 mov.w r1, #150 ; 0x96 + 9ec0: f820 1036 strh.w r1, [r0, r6, lsl #3] + 9ec4: 4949 ldr r1, [pc, #292] ; (9fec ) + 9ec6: 6809 ldr r1, [r1, #0] prevTime = (unsigned long) _BMCTiming::get(); - 9f26: f840 1018 str.w r1, [r0, r8, lsl #1] + 9ec8: f840 1018 str.w r1, [r0, r8, lsl #1] } - 9f2a: e761 b.n 9df0 + 9ecc: e761 b.n 9d92 t_color = cColor & 0x0F; - 9f2c: 200f movs r0, #15 - 9f2e: f04f 0e00 mov.w lr, #0 - 9f32: e788 b.n 9e46 + 9ece: 200f movs r0, #15 + 9ed0: f04f 0e00 mov.w lr, #0 + 9ed4: e788 b.n 9de8 bitWrite(value[mask], bit, newValue); - 9f34: ea4e 0e0b orr.w lr, lr, fp - 9f38: e7e2 b.n 9f00 + 9ed6: ea4e 0e0b orr.w lr, lr, fp + 9eda: e7e2 b.n 9ea2 if (num >= numled) return; - 9f3a: f8bc 189c ldrh.w r1, [ip, #2204] ; 0x89c - 9f3e: 42b1 cmp r1, r6 - 9f40: d842 bhi.n 9fc8 + 9edc: f8bc 18bc ldrh.w r1, [ip, #2236] ; 0x8bc + 9ee0: 42b1 cmp r1, r6 + 9ee2: d842 bhi.n 9f6a currentColor[t_index] = t_color; - 9f42: 218a movs r1, #138 ; 0x8a - 9f44: 7021 strb r1, [r4, #0] + 9ee4: 218a movs r1, #138 ; 0x8a + 9ee6: 7021 strb r1, [r4, #0] globals.rgbPixelStates[0].setBit(n, bitRead(color, 0)); - 9f46: f8dc 183c ldr.w r1, [ip, #2108] ; 0x83c + 9ee8: f8dc 185c ldr.w r1, [ip, #2140] ; 0x85c if(bitRead(value[mask], bit) != newValue){ - 9f4a: f8b1 904a ldrh.w r9, [r1, #74] ; 0x4a - 9f4e: fa49 fe06 asr.w lr, r9, r6 - 9f52: f01e 0f01 tst.w lr, #1 - 9f56: d121 bne.n 9f9c - 9f58: f8b1 e04e ldrh.w lr, [r1, #78] ; 0x4e - 9f5c: fa4e f906 asr.w r9, lr, r6 - 9f60: f019 0f01 tst.w r9, #1 - 9f64: d1bc bne.n 9ee0 + 9eec: f8b1 904a ldrh.w r9, [r1, #74] ; 0x4a + 9ef0: fa49 fe06 asr.w lr, r9, r6 + 9ef4: f01e 0f01 tst.w lr, #1 + 9ef8: d121 bne.n 9f3e + 9efa: f8b1 e04e ldrh.w lr, [r1, #78] ; 0x4e + 9efe: fa4e f906 asr.w r9, lr, r6 + 9f02: f019 0f01 tst.w r9, #1 + 9f06: d1bc bne.n 9e82 bitWrite(value[mask], bit, newValue); - 9f66: ea4e 0e0b orr.w lr, lr, fp - 9f6a: e7b3 b.n 9ed4 + 9f08: ea4e 0e0b orr.w lr, lr, fp + 9f0c: e7b3 b.n 9e76 drawBuffer[num+0] = color & 255; - 9f6c: 9d04 ldr r5, [sp, #16] + 9f0e: 9d04 ldr r5, [sp, #16] drawBuffer[num+1] = (color >> 8) & 255; - 9f6e: ea4f 291e mov.w r9, lr, lsr #8 + 9f10: ea4f 291e mov.w r9, lr, lsr #8 drawBuffer[num+0] = color & 255; - 9f72: f801 e005 strb.w lr, [r1, r5] + 9f14: f801 e005 strb.w lr, [r1, r5] drawBuffer[num+2] = (color >> 16) & 255; - 9f76: ea4f 4e1e mov.w lr, lr, lsr #16 + 9f18: ea4f 4e1e mov.w lr, lr, lsr #16 drawBuffer[num+1] = (color >> 8) & 255; - 9f7a: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 - 9f7e: 9d02 ldr r5, [sp, #8] - 9f80: f801 9005 strb.w r9, [r1, r5] + 9f1c: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 + 9f20: 9d02 ldr r5, [sp, #8] + 9f22: f801 9005 strb.w r9, [r1, r5] drawBuffer[num+2] = (color >> 16) & 255; - 9f84: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 + 9f26: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 drawBuffer[num+3] = (color >> 24) & 255; - 9f88: 9d03 ldr r5, [sp, #12] + 9f2a: 9d03 ldr r5, [sp, #12] drawBuffer[num+2] = (color >> 16) & 255; - 9f8a: f801 e008 strb.w lr, [r1, r8] + 9f2c: f801 e008 strb.w lr, [r1, r8] drawBuffer[num+3] = (color >> 24) & 255; - 9f8e: f04f 0e00 mov.w lr, #0 - 9f92: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 - 9f96: f801 e005 strb.w lr, [r1, r5] - 9f9a: e76f b.n 9e7c - 9f9c: 9d01 ldr r5, [sp, #4] - 9f9e: ea09 0905 and.w r9, r9, r5 - 9fa2: e782 b.n 9eaa + 9f30: f04f 0e00 mov.w lr, #0 + 9f34: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 + 9f38: f801 e005 strb.w lr, [r1, r5] + 9f3c: e76f b.n 9e1e + 9f3e: 9d01 ldr r5, [sp, #4] + 9f40: ea09 0905 and.w r9, r9, r5 + 9f44: e782 b.n 9e4c // t_value = true (LED on), false (LED off) // if BMC_REVERSE_LED_POLARITY is defined: // t_value = true (LED off), false (LED on) void write(bool t_value){ // if new value is different than the current state of the LED we set it if(t_value != flags.read(BMC_FLAG_LED_STATE)){ - 9fa4: 07da lsls r2, r3, #31 - 9fa6: d40a bmi.n 9fbe + 9f46: 07da lsls r2, r3, #31 + 9f48: d40a bmi.n 9f60 if(isPwmCapable()){ - 9fa8: 0698 lsls r0, r3, #26 - 9faa: d530 bpl.n a00e + 9f4a: 0698 lsls r0, r3, #26 + 9f4c: d530 bpl.n 9fb0 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 9fac: f44f 7180 mov.w r1, #256 ; 0x100 - 9fb0: 7820 ldrb r0, [r4, #0] + 9f4e: f44f 7180 mov.w r1, #256 ; 0x100 + 9f52: 7820 ldrb r0, [r4, #0] analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 9fb2: f020 fcd1 bl 2a958 - 9fb6: 7863 ldrb r3, [r4, #1] - 9fb8: f043 0309 orr.w r3, r3, #9 - 9fbc: 7063 strb r3, [r4, #1] - 9fbe: 683b ldr r3, [r7, #0] + 9f54: f020 fd74 bl 2aa40 + 9f58: 7863 ldrb r3, [r4, #1] + 9f5a: f043 0309 orr.w r3, r3, #9 + 9f5e: 7063 strb r3, [r4, #1] + 9f60: 683b ldr r3, [r7, #0] interval = value; - 9fc0: f8a4 8010 strh.w r8, [r4, #16] + 9f62: f8a4 8010 strh.w r8, [r4, #16] prevTime = (unsigned long) _BMCTiming::get(); - 9fc4: 6163 str r3, [r4, #20] + 9f66: 6163 str r3, [r4, #20] } - 9fc6: e6d1 b.n 9d6c + 9f68: e6d1 b.n 9d0e setPixelValue(t_index, (rainbowRGB[0] | (rainbowRGB[1]<<8) | (rainbowRGB[2]<<16))); - 9fc8: f89c e8fe ldrb.w lr, [ip, #2302] ; 0x8fe - 9fcc: f89c 18fd ldrb.w r1, [ip, #2301] ; 0x8fd - 9fd0: ea4f 4e0e mov.w lr, lr, lsl #16 - 9fd4: ea4e 2e01 orr.w lr, lr, r1, lsl #8 - 9fd8: f89c 18fc ldrb.w r1, [ip, #2300] ; 0x8fc - 9fdc: ea4e 0e01 orr.w lr, lr, r1 + 9f6a: f89c e91e ldrb.w lr, [ip, #2334] ; 0x91e + 9f6e: f89c 191d ldrb.w r1, [ip, #2333] ; 0x91d + 9f72: ea4f 4e0e mov.w lr, lr, lsl #16 + 9f76: ea4e 2e01 orr.w lr, lr, r1, lsl #8 + 9f7a: f89c 191c ldrb.w r1, [ip, #2332] ; 0x91c + 9f7e: ea4e 0e01 orr.w lr, lr, r1 if (config < 6) { - 9fe0: f89c 189f ldrb.w r1, [ip, #2207] ; 0x89f - 9fe4: 2905 cmp r1, #5 + 9f82: f89c 18bf ldrb.w r1, [ip, #2239] ; 0x8bf + 9f86: 2905 cmp r1, #5 drawBuffer[num+0] = color & 255; - 9fe6: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 + 9f88: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 if (config < 6) { - 9fea: d815 bhi.n a018 + 9f8c: d815 bhi.n 9fba drawBuffer[num+0] = color & 255; - 9fec: f801 e007 strb.w lr, [r1, r7] + 9f8e: f801 e007 strb.w lr, [r1, r7] drawBuffer[num+1] = (color >> 8) & 255; - 9ff0: ea4f 291e mov.w r9, lr, lsr #8 - 9ff4: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 + 9f92: ea4f 291e mov.w r9, lr, lsr #8 + 9f96: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 drawBuffer[num+2] = (color >> 16) & 255; - 9ff8: ea4f 4e1e mov.w lr, lr, lsr #16 + 9f9a: ea4f 4e1e mov.w lr, lr, lsr #16 drawBuffer[num+1] = (color >> 8) & 255; - 9ffc: 9d06 ldr r5, [sp, #24] - 9ffe: f801 9005 strb.w r9, [r1, r5] + 9f9e: 9d06 ldr r5, [sp, #24] + 9fa0: f801 9005 strb.w r9, [r1, r5] drawBuffer[num+2] = (color >> 16) & 255; - a002: 9d05 ldr r5, [sp, #20] - a004: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 - a008: f801 e005 strb.w lr, [r1, r5] - a00c: e799 b.n 9f42 + 9fa4: 9d05 ldr r5, [sp, #20] + 9fa6: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 + 9faa: f801 e005 strb.w lr, [r1, r5] + 9fae: e799 b.n 9ee4 digitalWrite(pin, t_value); - a00e: 2101 movs r1, #1 - a010: 7820 ldrb r0, [r4, #0] - a012: f020 fad9 bl 2a5c8 - a016: e7ce b.n 9fb6 + 9fb0: 2101 movs r1, #1 + 9fb2: 7820 ldrb r0, [r4, #0] + 9fb4: f020 fb7c bl 2a6b0 + 9fb8: e7ce b.n 9f58 drawBuffer[num+0] = color & 255; - a018: 9d04 ldr r5, [sp, #16] + 9fba: 9d04 ldr r5, [sp, #16] drawBuffer[num+1] = (color >> 8) & 255; - a01a: ea4f 291e mov.w r9, lr, lsr #8 + 9fbc: ea4f 291e mov.w r9, lr, lsr #8 drawBuffer[num+0] = color & 255; - a01e: f801 e005 strb.w lr, [r1, r5] + 9fc0: f801 e005 strb.w lr, [r1, r5] drawBuffer[num+2] = (color >> 16) & 255; - a022: ea4f 4e1e mov.w lr, lr, lsr #16 + 9fc4: ea4f 4e1e mov.w lr, lr, lsr #16 drawBuffer[num+1] = (color >> 8) & 255; - a026: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 - a02a: 9d02 ldr r5, [sp, #8] - a02c: f801 9005 strb.w r9, [r1, r5] + 9fc8: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 + 9fcc: 9d02 ldr r5, [sp, #8] + 9fce: f801 9005 strb.w r9, [r1, r5] drawBuffer[num+2] = (color >> 16) & 255; - a030: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 + 9fd2: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 drawBuffer[num+3] = (color >> 24) & 255; - a034: 9d03 ldr r5, [sp, #12] + 9fd6: 9d03 ldr r5, [sp, #12] drawBuffer[num+2] = (color >> 16) & 255; - a036: f801 e008 strb.w lr, [r1, r8] + 9fd8: f801 e008 strb.w lr, [r1, r8] drawBuffer[num+3] = (color >> 24) & 255; - a03a: f04f 0e00 mov.w lr, #0 - a03e: f8dc 18a4 ldr.w r1, [ip, #2212] ; 0x8a4 - a042: f801 e005 strb.w lr, [r1, r5] - a046: e77c b.n 9f42 - a048: 2000bae8 .word 0x2000bae8 - a04c: 20000f1c .word 0x20000f1c - -0000a050 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)>: + 9fdc: f04f 0e00 mov.w lr, #0 + 9fe0: f8dc 18c4 ldr.w r1, [ip, #2244] ; 0x8c4 + 9fe4: f801 e005 strb.w lr, [r1, r5] + 9fe8: e77c b.n 9ee4 + 9fea: bf00 nop + 9fec: 2000bb08 .word 0x2000bb08 + 9ff0: 20000f1c .word 0x20000f1c + +00009ff4 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)>: bool renderLooper(T& display, uint8_t& t_looperData, BMCDiplayHandlerData t, bool t_reset=false){ - a050: b082 sub sp, #8 - a052: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 9ff4: b082 sub sp, #8 + 9ff6: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sync.fas.enableLooperFetch(true); - a056: 6904 ldr r4, [r0, #16] + 9ffa: 6904 ldr r4, [r0, #16] bool renderLooper(T& display, uint8_t& t_looperData, BMCDiplayHandlerData t, bool t_reset=false){ - a058: b091 sub sp, #68 ; 0x44 - a05a: 4690 mov r8, r2 - a05c: 4608 mov r0, r1 + 9ffc: b091 sub sp, #68 ; 0x44 + 9ffe: 4690 mov r8, r2 + a000: 4608 mov r0, r1 return bitRead(flags, bit); - a05e: f8b4 213c ldrh.w r2, [r4, #316] ; 0x13c - a062: b21e sxth r6, r3 - a064: f8bd 1076 ldrh.w r1, [sp, #118] ; 0x76 - a068: 141d asrs r5, r3, #16 + a002: f8b4 213c ldrh.w r2, [r4, #316] ; 0x13c + a006: b21e sxth r6, r3 + a008: f8bd 1076 ldrh.w r1, [sp, #118] ; 0x76 + a00c: 141d asrs r5, r3, #16 if(!flags.read(BMC_FAS3_FLAG_FETCH_LOOPER) && t_value){ - a06a: f012 0f08 tst.w r2, #8 - a06e: 931b str r3, [sp, #108] ; 0x6c - a070: 9108 str r1, [sp, #32] - a072: f89d 7080 ldrb.w r7, [sp, #128] ; 0x80 - a076: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 - a07a: f8bd a072 ldrh.w sl, [sp, #114] ; 0x72 - a07e: f89d 107c ldrb.w r1, [sp, #124] ; 0x7c - a082: d109 bne.n a098 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x48> - a084: f8df c294 ldr.w ip, [pc, #660] ; a31c (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x2cc> - a088: f8dc c000 ldr.w ip, [ip] + a00e: f012 0f08 tst.w r2, #8 + a012: 931b str r3, [sp, #108] ; 0x6c + a014: 9108 str r1, [sp, #32] + a016: f89d 7080 ldrb.w r7, [sp, #128] ; 0x80 + a01a: f8bd 3070 ldrh.w r3, [sp, #112] ; 0x70 + a01e: f8bd a072 ldrh.w sl, [sp, #114] ; 0x72 + a022: f89d 107c ldrb.w r1, [sp, #124] ; 0x7c + a026: d109 bne.n a03c (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x48> + a028: f8df c294 ldr.w ip, [pc, #660] ; a2c0 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x2cc> + a02c: f8dc c000 ldr.w ip, [ip] prevTime = (unsigned long) _BMCTiming::get(); - a08c: f8c4 c14c str.w ip, [r4, #332] ; 0x14c + a030: f8c4 c14c str.w ip, [r4, #332] ; 0x14c interval = value; - a090: f44f 7c7a mov.w ip, #1000 ; 0x3e8 - a094: f8a4 c148 strh.w ip, [r4, #328] ; 0x148 + a034: f44f 7c7a mov.w ip, #1000 ; 0x3e8 + a038: f8a4 c148 strh.w ip, [r4, #328] ; 0x148 bitWrite(flags, bit, value); - a098: f042 0208 orr.w r2, r2, #8 - a09c: f8a4 213c strh.w r2, [r4, #316] ; 0x13c + a03c: f042 0208 orr.w r2, r2, #8 + a040: f8a4 213c strh.w r2, [r4, #316] ; 0x13c return data; - a0a0: f894 4157 ldrb.w r4, [r4, #343] ; 0x157 + a044: f894 4157 ldrb.w r4, [r4, #343] ; 0x157 if(currentLooper != t_looperData || t_reset){ - a0a4: f898 2000 ldrb.w r2, [r8] - a0a8: 42a2 cmp r2, r4 - a0aa: d108 bne.n a0be (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x6e> - a0ac: 2f00 cmp r7, #0 - a0ae: f040 80c9 bne.w a244 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x1f4> + a048: f898 2000 ldrb.w r2, [r8] + a04c: 42a2 cmp r2, r4 + a04e: d108 bne.n a062 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x6e> + a050: 2f00 cmp r7, #0 + a052: f040 80c9 bne.w a1e8 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x1f4> return false; - a0b2: 4638 mov r0, r7 + a056: 4638 mov r0, r7 } - a0b4: b011 add sp, #68 ; 0x44 - a0b6: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - a0ba: b002 add sp, #8 - a0bc: 4770 bx lr + a058: b011 add sp, #68 ; 0x44 + a05a: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + a05e: b002 add sp, #8 + a060: 4770 bx lr bool dub = bitRead(currentLooper, 2) != bitRead(t_looperData, 2); - a0be: ea4f 0992 mov.w r9, r2, lsr #2 + a062: ea4f 0992 mov.w r9, r2, lsr #2 bool rec = bitRead(currentLooper, 0) != bitRead(t_looperData, 0); - a0c2: ea82 0c04 eor.w ip, r2, r4 + a066: ea82 0c04 eor.w ip, r2, r4 bool play = bitRead(currentLooper, 1) != bitRead(t_looperData, 1); - a0c6: 0852 lsrs r2, r2, #1 + a06a: 0852 lsrs r2, r2, #1 BMCDiplayHandlerData tt = t; - a0c8: f8bd b074 ldrh.w fp, [sp, #116] ; 0x74 + a06c: f8bd b074 ldrh.w fp, [sp, #116] ; 0x74 bool dub = bitRead(currentLooper, 2) != bitRead(t_looperData, 2); - a0cc: ea89 0994 eor.w r9, r9, r4, lsr #2 + a070: ea89 0994 eor.w r9, r9, r4, lsr #2 bool play = bitRead(currentLooper, 1) != bitRead(t_looperData, 1); - a0d0: ea82 0254 eor.w r2, r2, r4, lsr #1 + a074: ea82 0254 eor.w r2, r2, r4, lsr #1 if((rec || dub) || t_reset){ - a0d4: ea49 0c0c orr.w ip, r9, ip + a078: ea49 0c0c orr.w ip, r9, ip bool play = bitRead(currentLooper, 1) != bitRead(t_looperData, 1); - a0d8: 9209 str r2, [sp, #36] ; 0x24 + a07c: 9209 str r2, [sp, #36] ; 0x24 bool recActive = bitRead(currentLooper, 0); - a0da: f004 0201 and.w r2, r4, #1 + a07e: f004 0201 and.w r2, r4, #1 if((rec || dub) || t_reset){ - a0de: f01c 0f01 tst.w ip, #1 + a082: f01c 0f01 tst.w ip, #1 bool recActive = bitRead(currentLooper, 0); - a0e2: 920b str r2, [sp, #44] ; 0x2c + a086: 920b str r2, [sp, #44] ; 0x2c bool playActive = bitRead(currentLooper, 1); - a0e4: f3c4 0240 ubfx r2, r4, #1, #1 - a0e8: 920a str r2, [sp, #40] ; 0x28 + a088: f3c4 0240 ubfx r2, r4, #1, #1 + a08c: 920a str r2, [sp, #40] ; 0x28 BMCDiplayHandlerData tt = t; - a0ea: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a - a0ee: 9207 str r2, [sp, #28] + a08e: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a + a092: 9207 str r2, [sp, #28] if((rec || dub) || t_reset){ - a0f0: d075 beq.n a1de (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x18e> + a094: d075 beq.n a182 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x18e> if(!t.mirror){ - a0f2: 2900 cmp r1, #0 - a0f4: d141 bne.n a17a (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x12a> + a096: 2900 cmp r1, #0 + a098: d141 bne.n a11e (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x12a> tt.w = t.w/2; - a0f6: 085a lsrs r2, r3, #1 + a09a: 085a lsrs r2, r3, #1 if(t.h > t.w){ - a0f8: ebba 0f53 cmp.w sl, r3, lsr #1 + a09c: ebba 0f53 cmp.w sl, r3, lsr #1 uint16_t centerX = t.w/2; - a0fc: ea4f 0c93 mov.w ip, r3, lsr #2 + a0a0: ea4f 0c93 mov.w ip, r3, lsr #2 tt.w = t.w/2; - a100: 920c str r2, [sp, #48] ; 0x30 + a0a4: 920c str r2, [sp, #48] ; 0x30 uint16_t centerY = t.h/2; - a102: ea4f 0e5a mov.w lr, sl, lsr #1 + a0a6: ea4f 0e5a mov.w lr, sl, lsr #1 if(t.h > t.w){ - a106: f200 80ae bhi.w a266 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x216> + a0aa: f200 80ae bhi.w a20a (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x216> uint16_t iconSize = t.h-4; - a10a: f1aa 0304 sub.w r3, sl, #4 - a10e: b29b uxth r3, r3 + a0ae: f1aa 0304 sub.w r3, sl, #4 + a0b2: b29b uxth r3, r3 if(t.h >= 64){ - a110: f1ba 0f3f cmp.w sl, #63 ; 0x3f - a114: d901 bls.n a11a (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0xca> + a0b4: f1ba 0f3f cmp.w sl, #63 ; 0x3f + a0b8: d901 bls.n a0be (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0xca> iconSize -= 8; - a116: 3b08 subs r3, #8 - a118: b29b uxth r3, r3 + a0ba: 3b08 subs r3, #8 + a0bc: b29b uxth r3, r3 uint8_t halfIcon = iconSize/2; - a11a: 085b lsrs r3, r3, #1 + a0be: 085b lsrs r3, r3, #1 if(t_reset){ - a11c: 2f00 cmp r7, #0 - a11e: f040 80c6 bne.w a2ae (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x25e> + a0c0: 2f00 cmp r7, #0 + a0c2: f040 80c6 bne.w a252 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x25e> display.fillCircle(t.x + centerX, t.y+centerY, halfIcon-thickness, d.highlight?t.color:t.background); - a122: 990b ldr r1, [sp, #44] ; 0x2c - a124: b2db uxtb r3, r3 - a126: 9a07 ldr r2, [sp, #28] - a128: 3b02 subs r3, #2 - a12a: 900b str r0, [sp, #44] ; 0x2c - a12c: 2900 cmp r1, #0 - a12e: bf08 it eq - a130: 4693 moveq fp, r2 + a0c6: 990b ldr r1, [sp, #44] ; 0x2c + a0c8: b2db uxtb r3, r3 + a0ca: 9a07 ldr r2, [sp, #28] + a0cc: 3b02 subs r3, #2 + a0ce: 900b str r0, [sp, #44] ; 0x2c + a0d0: 2900 cmp r1, #0 + a0d2: bf08 it eq + a0d4: 4693 moveq fp, r2 display.fillCircle(t.x + centerX, t.y+centerY, halfIcon, t.color); - a132: b2b1 uxth r1, r6 - a134: eb0e 0205 add.w r2, lr, r5 - a138: 910d str r1, [sp, #52] ; 0x34 - a13a: 4461 add r1, ip + a0d6: b2b1 uxth r1, r6 + a0d8: eb0e 0205 add.w r2, lr, r5 + a0dc: 910d str r1, [sp, #52] ; 0x34 + a0de: 4461 add r1, ip display.fillCircle(t.x + centerX, t.y+centerY, halfIcon-thickness, d.highlight?t.color:t.background); - a13c: b212 sxth r2, r2 - a13e: f8cd b000 str.w fp, [sp] - a142: b209 sxth r1, r1 - a144: f01b fe4a bl 25ddc + a0e0: b212 sxth r2, r2 + a0e2: f8cd b000 str.w fp, [sp] + a0e6: b209 sxth r1, r1 + a0e8: f01b feee bl 25ec8 if((play || dub) || t_reset){ - a148: 9b09 ldr r3, [sp, #36] ; 0x24 - a14a: 980b ldr r0, [sp, #44] ; 0x2c - a14c: ea49 0903 orr.w r9, r9, r3 - a150: f019 0f01 tst.w r9, #1 - a154: d03b beq.n a1ce (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x17e> + a0ec: 9b09 ldr r3, [sp, #36] ; 0x24 + a0ee: 980b ldr r0, [sp, #44] ; 0x2c + a0f0: ea49 0903 orr.w r9, r9, r3 + a0f4: f019 0f01 tst.w r9, #1 + a0f8: d03b beq.n a172 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x17e> renderTriangle(display, d, tt, t_reset); - a156: 9b07 ldr r3, [sp, #28] - a158: 990a ldr r1, [sp, #40] ; 0x28 - a15a: 9303 str r3, [sp, #12] - a15c: 9b08 ldr r3, [sp, #32] - a15e: 9705 str r7, [sp, #20] - a160: e9cd a301 strd sl, r3, [sp, #4] + a0fa: 9b07 ldr r3, [sp, #28] + a0fc: 990a ldr r1, [sp, #40] ; 0x28 + a0fe: 9303 str r3, [sp, #12] + a100: 9b08 ldr r3, [sp, #32] + a102: 9705 str r7, [sp, #20] + a104: e9cd a301 strd sl, r3, [sp, #4] tt.x = t.x + (t.w/2); - a164: e9dd 320c ldrd r3, r2, [sp, #48] ; 0x30 - a168: 441a add r2, r3 + a108: e9dd 320c ldrd r3, r2, [sp, #48] ; 0x30 + a10c: 441a add r2, r3 renderTriangle(display, d, tt, t_reset); - a16a: 9300 str r3, [sp, #0] - a16c: 462b mov r3, r5 - a16e: 2500 movs r5, #0 - a170: b212 sxth r2, r2 - a172: 9504 str r5, [sp, #16] - a174: f7fc fe1a bl 6dac (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]> - a178: e029 b.n a1ce (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x17e> + a10e: 9300 str r3, [sp, #0] + a110: 462b mov r3, r5 + a112: 2500 movs r5, #0 + a114: b212 sxth r2, r2 + a116: 9504 str r5, [sp, #16] + a118: f7fc fe80 bl 6e1c (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]> + a11c: e029 b.n a172 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x17e> tt.x = t.x+2; - a17a: 3602 adds r6, #2 - a17c: b2b3 uxth r3, r6 - a17e: 930c str r3, [sp, #48] ; 0x30 + a11e: 3602 adds r6, #2 + a120: b2b3 uxth r3, r6 + a122: 930c str r3, [sp, #48] ; 0x30 tt.w = (t.h/2)-4; - a180: ea4f 035a mov.w r3, sl, lsr #1 - a184: 1f1a subs r2, r3, #4 - a186: b291 uxth r1, r2 + a124: ea4f 035a mov.w r3, sl, lsr #1 + a128: 1f1a subs r2, r3, #4 + a12a: b291 uxth r1, r2 uint16_t centerX = t.w/2; - a188: f3c2 024e ubfx r2, r2, #1, #15 + a12c: f3c2 024e ubfx r2, r2, #1, #15 if(t.h >= 64){ - a18c: 293f cmp r1, #63 ; 0x3f + a130: 293f cmp r1, #63 ; 0x3f tt.w = (t.h/2)-4; - a18e: 910d str r1, [sp, #52] ; 0x34 + a132: 910d str r1, [sp, #52] ; 0x34 uint16_t iconSize = t.h-4; - a190: bf94 ite ls - a192: 3b08 subls r3, #8 + a134: bf94 ite ls + a136: 3b08 subls r3, #8 iconSize -= 8; - a194: 3b10 subhi r3, #16 - a196: b29b uxth r3, r3 + a138: 3b10 subhi r3, #16 + a13a: b29b uxth r3, r3 uint8_t halfIcon = iconSize/2; - a198: 085e lsrs r6, r3, #1 + a13c: 085e lsrs r6, r3, #1 if(t_reset){ - a19a: 2f00 cmp r7, #0 - a19c: d167 bne.n a26e (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x21e> + a13e: 2f00 cmp r7, #0 + a140: d167 bne.n a212 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x21e> display.fillCircle(t.x + centerX, t.y+centerY, halfIcon-thickness, d.highlight?t.color:t.background); - a19e: 9b0b ldr r3, [sp, #44] ; 0x2c - a1a0: 9907 ldr r1, [sp, #28] - a1a2: 900b str r0, [sp, #44] ; 0x2c - a1a4: 2b00 cmp r3, #0 - a1a6: bf08 it eq - a1a8: 468b moveq fp, r1 + a142: 9b0b ldr r3, [sp, #44] ; 0x2c + a144: 9907 ldr r1, [sp, #28] + a146: 900b str r0, [sp, #44] ; 0x2c + a148: 2b00 cmp r3, #0 + a14a: bf08 it eq + a14c: 468b moveq fp, r1 display.fillCircle(t.x + centerX, t.y+centerY, halfIcon, t.color); - a1aa: 990c ldr r1, [sp, #48] ; 0x30 + a14e: 990c ldr r1, [sp, #48] ; 0x30 display.fillCircle(t.x + centerX, t.y+centerY, halfIcon-thickness, d.highlight?t.color:t.background); - a1ac: b2f3 uxtb r3, r6 + a150: b2f3 uxtb r3, r6 display.fillCircle(t.x + centerX, t.y+centerY, halfIcon, t.color); - a1ae: 4411 add r1, r2 - a1b0: 442a add r2, r5 + a152: 4411 add r1, r2 + a154: 442a add r2, r5 display.fillCircle(t.x + centerX, t.y+centerY, halfIcon-thickness, d.highlight?t.color:t.background); - a1b2: 3b02 subs r3, #2 - a1b4: f8cd b000 str.w fp, [sp] - a1b8: b209 sxth r1, r1 - a1ba: b212 sxth r2, r2 - a1bc: f01b fe0e bl 25ddc + a156: 3b02 subs r3, #2 + a158: f8cd b000 str.w fp, [sp] + a15c: b209 sxth r1, r1 + a15e: b212 sxth r2, r2 + a160: f01b feb2 bl 25ec8 if((play || dub) || t_reset){ - a1c0: 9b09 ldr r3, [sp, #36] ; 0x24 - a1c2: 980b ldr r0, [sp, #44] ; 0x2c - a1c4: ea49 0903 orr.w r9, r9, r3 - a1c8: f019 0f01 tst.w r9, #1 - a1cc: d119 bne.n a202 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x1b2> + a164: 9b09 ldr r3, [sp, #36] ; 0x24 + a166: 980b ldr r0, [sp, #44] ; 0x2c + a168: ea49 0903 orr.w r9, r9, r3 + a16c: f019 0f01 tst.w r9, #1 + a170: d119 bne.n a1a6 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x1b2> return true; - a1ce: 2001 movs r0, #1 + a172: 2001 movs r0, #1 t_looperData = currentLooper; - a1d0: f888 4000 strb.w r4, [r8] + a174: f888 4000 strb.w r4, [r8] } - a1d4: b011 add sp, #68 ; 0x44 - a1d6: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - a1da: b002 add sp, #8 - a1dc: 4770 bx lr + a178: b011 add sp, #68 ; 0x44 + a17a: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + a17e: b002 add sp, #8 + a180: 4770 bx lr if((rec || dub) || t_reset){ - a1de: 2f00 cmp r7, #0 - a1e0: d187 bne.n a0f2 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0xa2> + a182: 2f00 cmp r7, #0 + a184: d187 bne.n a096 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0xa2> if((play || dub) || t_reset){ - a1e2: 9a09 ldr r2, [sp, #36] ; 0x24 - a1e4: ea42 0909 orr.w r9, r2, r9 - a1e8: f019 0f01 tst.w r9, #1 - a1ec: d0ef beq.n a1ce (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x17e> + a186: 9a09 ldr r2, [sp, #36] ; 0x24 + a188: ea42 0909 orr.w r9, r2, r9 + a18c: f019 0f01 tst.w r9, #1 + a190: d0ef beq.n a172 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x17e> if(!t.mirror){ - a1ee: 2900 cmp r1, #0 - a1f0: d07e beq.n a2f0 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x2a0> + a192: 2900 cmp r1, #0 + a194: d07e beq.n a294 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x2a0> tt.x = t.x+2; - a1f2: 3602 adds r6, #2 - a1f4: b2b3 uxth r3, r6 + a196: 3602 adds r6, #2 + a198: b2b3 uxth r3, r6 uint16_t centerY = t.h/2; - a1f6: ea4f 065a mov.w r6, sl, lsr #1 + a19a: ea4f 065a mov.w r6, sl, lsr #1 tt.x = t.x+2; - a1fa: 930c str r3, [sp, #48] ; 0x30 + a19e: 930c str r3, [sp, #48] ; 0x30 tt.w = (t.h/2)-4; - a1fc: 3e04 subs r6, #4 - a1fe: b2b3 uxth r3, r6 - a200: 930d str r3, [sp, #52] ; 0x34 + a1a0: 3e04 subs r6, #4 + a1a2: b2b3 uxth r3, r6 + a1a4: 930d str r3, [sp, #52] ; 0x34 tt.y = t.y+(t.h*0.5); - a202: ee07 aa90 vmov s15, sl - a206: eeb6 6b00 vmov.f64 d6, #96 ; 0x3f000000 0.5 + a1a6: ee07 aa90 vmov s15, sl + a1aa: eeb6 6b00 vmov.f64 d6, #96 ; 0x3f000000 0.5 renderTriangle(display, d, tt, t_reset); - a20a: 9b07 ldr r3, [sp, #28] + a1ae: 9b07 ldr r3, [sp, #28] tt.y = t.y+(t.h*0.5); - a20c: eeb8 5be7 vcvt.f64.s32 d5, s15 - a210: ee07 5a90 vmov s15, r5 + a1b0: eeb8 5be7 vcvt.f64.s32 d5, s15 + a1b4: ee07 5a90 vmov s15, r5 renderTriangle(display, d, tt, t_reset); - a214: 9303 str r3, [sp, #12] + a1b8: 9303 str r3, [sp, #12] tt.y = t.y+(t.h*0.5); - a216: eeb8 7be7 vcvt.f64.s32 d7, s15 + a1ba: eeb8 7be7 vcvt.f64.s32 d7, s15 renderTriangle(display, d, tt, t_reset); - a21a: 9b08 ldr r3, [sp, #32] - a21c: f9bd 2030 ldrsh.w r2, [sp, #48] ; 0x30 - a220: 9302 str r3, [sp, #8] + a1be: 9b08 ldr r3, [sp, #32] + a1c0: f9bd 2030 ldrsh.w r2, [sp, #48] ; 0x30 + a1c4: 9302 str r3, [sp, #8] tt.y = t.y+(t.h*0.5); - a222: eea5 7b06 vfma.f64 d7, d5, d6 + a1c6: eea5 7b06 vfma.f64 d7, d5, d6 renderTriangle(display, d, tt, t_reset); - a226: 9b0d ldr r3, [sp, #52] ; 0x34 - a228: 990a ldr r1, [sp, #40] ; 0x28 - a22a: 9705 str r7, [sp, #20] - a22c: e9cd 3300 strd r3, r3, [sp] - a230: 2300 movs r3, #0 - a232: 9304 str r3, [sp, #16] + a1ca: 9b0d ldr r3, [sp, #52] ; 0x34 + a1cc: 990a ldr r1, [sp, #40] ; 0x28 + a1ce: 9705 str r7, [sp, #20] + a1d0: e9cd 3300 strd r3, r3, [sp] + a1d4: 2300 movs r3, #0 + a1d6: 9304 str r3, [sp, #16] tt.y = t.y+(t.h*0.5); - a234: eebd 7bc7 vcvt.s32.f64 s14, d7 + a1d8: eebd 7bc7 vcvt.s32.f64 s14, d7 renderTriangle(display, d, tt, t_reset); - a238: ee17 3a10 vmov r3, s14 - a23c: b21b sxth r3, r3 - a23e: f7fc fdb5 bl 6dac (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]> - a242: e7c4 b.n a1ce (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x17e> + a1dc: ee17 3a10 vmov r3, s14 + a1e0: b21b sxth r3, r3 + a1e2: f7fc fe1b bl 6e1c (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]> + a1e6: e7c4 b.n a172 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x17e> bool recActive = bitRead(currentLooper, 0); - a244: f004 0201 and.w r2, r4, #1 + a1e8: f004 0201 and.w r2, r4, #1 BMCDiplayHandlerData tt = t; - a248: f8bd b074 ldrh.w fp, [sp, #116] ; 0x74 + a1ec: f8bd b074 ldrh.w fp, [sp, #116] ; 0x74 bool recActive = bitRead(currentLooper, 0); - a24c: 920b str r2, [sp, #44] ; 0x2c + a1f0: 920b str r2, [sp, #44] ; 0x2c bool playActive = bitRead(currentLooper, 1); - a24e: f3c4 0240 ubfx r2, r4, #1, #1 - a252: 920a str r2, [sp, #40] ; 0x28 + a1f2: f3c4 0240 ubfx r2, r4, #1, #1 + a1f6: 920a str r2, [sp, #40] ; 0x28 bool play = bitRead(currentLooper, 1) != bitRead(t_looperData, 1); - a254: 2200 movs r2, #0 + a1f8: 2200 movs r2, #0 bool dub = bitRead(currentLooper, 2) != bitRead(t_looperData, 2); - a256: 4691 mov r9, r2 + a1fa: 4691 mov r9, r2 bool play = bitRead(currentLooper, 1) != bitRead(t_looperData, 1); - a258: 9209 str r2, [sp, #36] ; 0x24 + a1fc: 9209 str r2, [sp, #36] ; 0x24 BMCDiplayHandlerData tt = t; - a25a: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a - a25e: 9207 str r2, [sp, #28] + a1fe: f8bd 207a ldrh.w r2, [sp, #122] ; 0x7a + a202: 9207 str r2, [sp, #28] if(!t.mirror){ - a260: 2900 cmp r1, #0 - a262: d18a bne.n a17a (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x12a> - a264: e747 b.n a0f6 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0xa6> + a204: 2900 cmp r1, #0 + a206: d18a bne.n a11e (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x12a> + a208: e747 b.n a09a (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0xa6> iconSize = t.w-4; - a266: 9b0c ldr r3, [sp, #48] ; 0x30 - a268: 3b04 subs r3, #4 - a26a: b29b uxth r3, r3 - a26c: e750 b.n a110 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0xc0> + a20a: 9b0c ldr r3, [sp, #48] ; 0x30 + a20c: 3b04 subs r3, #4 + a20e: b29b uxth r3, r3 + a210: e750 b.n a0b4 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0xc0> display.fillCircle(t.x + centerX, t.y+centerY, halfIcon, t.color); - a26e: 9b0c ldr r3, [sp, #48] ; 0x30 - a270: fa5f f986 uxtb.w r9, r6 - a274: f8cd b000 str.w fp, [sp] - a278: 1899 adds r1, r3, r2 - a27a: 442a add r2, r5 - a27c: 464b mov r3, r9 - a27e: 9009 str r0, [sp, #36] ; 0x24 - a280: b209 sxth r1, r1 - a282: b212 sxth r2, r2 - a284: e9cd 210e strd r2, r1, [sp, #56] ; 0x38 - a288: f01b fda8 bl 25ddc + a212: 9b0c ldr r3, [sp, #48] ; 0x30 + a214: fa5f f986 uxtb.w r9, r6 + a218: f8cd b000 str.w fp, [sp] + a21c: 1899 adds r1, r3, r2 + a21e: 442a add r2, r5 + a220: 464b mov r3, r9 + a222: 9009 str r0, [sp, #36] ; 0x24 + a224: b209 sxth r1, r1 + a226: b212 sxth r2, r2 + a228: e9cd 210e strd r2, r1, [sp, #56] ; 0x38 + a22c: f01b fe4c bl 25ec8 display.fillCircle(t.x + centerX, t.y+centerY, halfIcon-thickness, d.highlight?t.color:t.background); - a28c: f1a9 0302 sub.w r3, r9, #2 - a290: 9809 ldr r0, [sp, #36] ; 0x24 - a292: b21e sxth r6, r3 - a294: 9b0b ldr r3, [sp, #44] ; 0x2c - a296: e9dd 210e ldrd r2, r1, [sp, #56] ; 0x38 - a29a: 2b00 cmp r3, #0 - a29c: d135 bne.n a30a (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x2ba> - a29e: 4633 mov r3, r6 - a2a0: 9e07 ldr r6, [sp, #28] - a2a2: 9009 str r0, [sp, #36] ; 0x24 - a2a4: 9600 str r6, [sp, #0] - a2a6: f01b fd99 bl 25ddc - a2aa: 9809 ldr r0, [sp, #36] ; 0x24 - a2ac: e7a9 b.n a202 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x1b2> + a230: f1a9 0302 sub.w r3, r9, #2 + a234: 9809 ldr r0, [sp, #36] ; 0x24 + a236: b21e sxth r6, r3 + a238: 9b0b ldr r3, [sp, #44] ; 0x2c + a23a: e9dd 210e ldrd r2, r1, [sp, #56] ; 0x38 + a23e: 2b00 cmp r3, #0 + a240: d135 bne.n a2ae (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x2ba> + a242: 4633 mov r3, r6 + a244: 9e07 ldr r6, [sp, #28] + a246: 9009 str r0, [sp, #36] ; 0x24 + a248: 9600 str r6, [sp, #0] + a24a: f01b fe3d bl 25ec8 + a24e: 9809 ldr r0, [sp, #36] ; 0x24 + a250: e7a9 b.n a1a6 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x1b2> display.fillCircle(t.x + centerX, t.y+centerY, halfIcon, t.color); - a2ae: b2b1 uxth r1, r6 - a2b0: eb0e 0205 add.w r2, lr, r5 - a2b4: fa5f f983 uxtb.w r9, r3 - a2b8: f8cd b000 str.w fp, [sp] - a2bc: 910d str r1, [sp, #52] ; 0x34 - a2be: 4461 add r1, ip - a2c0: b212 sxth r2, r2 - a2c2: 464b mov r3, r9 - a2c4: b209 sxth r1, r1 - a2c6: 9009 str r0, [sp, #36] ; 0x24 - a2c8: e9cd 120e strd r1, r2, [sp, #56] ; 0x38 - a2cc: f01b fd86 bl 25ddc + a252: b2b1 uxth r1, r6 + a254: eb0e 0205 add.w r2, lr, r5 + a258: fa5f f983 uxtb.w r9, r3 + a25c: f8cd b000 str.w fp, [sp] + a260: 910d str r1, [sp, #52] ; 0x34 + a262: 4461 add r1, ip + a264: b212 sxth r2, r2 + a266: 464b mov r3, r9 + a268: b209 sxth r1, r1 + a26a: 9009 str r0, [sp, #36] ; 0x24 + a26c: e9cd 120e strd r1, r2, [sp, #56] ; 0x38 + a270: f01b fe2a bl 25ec8 display.fillCircle(t.x + centerX, t.y+centerY, halfIcon-thickness, d.highlight?t.color:t.background); - a2d0: f1a9 0302 sub.w r3, r9, #2 - a2d4: 9809 ldr r0, [sp, #36] ; 0x24 - a2d6: b21e sxth r6, r3 - a2d8: 9b0b ldr r3, [sp, #44] ; 0x2c - a2da: e9dd 120e ldrd r1, r2, [sp, #56] ; 0x38 - a2de: b963 cbnz r3, a2fa (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x2aa> - a2e0: 4633 mov r3, r6 - a2e2: 9e07 ldr r6, [sp, #28] - a2e4: 9009 str r0, [sp, #36] ; 0x24 - a2e6: 9600 str r6, [sp, #0] - a2e8: f01b fd78 bl 25ddc - a2ec: 9809 ldr r0, [sp, #36] ; 0x24 - a2ee: e732 b.n a156 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x106> + a274: f1a9 0302 sub.w r3, r9, #2 + a278: 9809 ldr r0, [sp, #36] ; 0x24 + a27a: b21e sxth r6, r3 + a27c: 9b0b ldr r3, [sp, #44] ; 0x2c + a27e: e9dd 120e ldrd r1, r2, [sp, #56] ; 0x38 + a282: b963 cbnz r3, a29e (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x2aa> + a284: 4633 mov r3, r6 + a286: 9e07 ldr r6, [sp, #28] + a288: 9009 str r0, [sp, #36] ; 0x24 + a28a: 9600 str r6, [sp, #0] + a28c: f01b fe1c bl 25ec8 + a290: 9809 ldr r0, [sp, #36] ; 0x24 + a292: e732 b.n a0fa (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x106> tt.w = t.w/2; - a2f0: 085b lsrs r3, r3, #1 - a2f2: 930c str r3, [sp, #48] ; 0x30 + a294: 085b lsrs r3, r3, #1 + a296: 930c str r3, [sp, #48] ; 0x30 display.fillCircle(t.x + centerX, t.y+centerY, halfIcon, t.color); - a2f4: b2b3 uxth r3, r6 - a2f6: 930d str r3, [sp, #52] ; 0x34 - a2f8: e72d b.n a156 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x106> + a298: b2b3 uxth r3, r6 + a29a: 930d str r3, [sp, #52] ; 0x34 + a29c: e72d b.n a0fa (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x106> display.fillCircle(t.x + centerX, t.y+centerY, halfIcon-thickness, d.highlight?t.color:t.background); - a2fa: 4633 mov r3, r6 - a2fc: f8cd b000 str.w fp, [sp] - a300: 9009 str r0, [sp, #36] ; 0x24 - a302: f01b fd6b bl 25ddc - a306: 9809 ldr r0, [sp, #36] ; 0x24 - a308: e725 b.n a156 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x106> - a30a: 4633 mov r3, r6 - a30c: f8cd b000 str.w fp, [sp] - a310: 9009 str r0, [sp, #36] ; 0x24 - a312: f01b fd63 bl 25ddc - a316: 9809 ldr r0, [sp, #36] ; 0x24 - a318: e773 b.n a202 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x1b2> - a31a: bf00 nop - a31c: 2000bae8 .word 0x2000bae8 - -0000a320 : + a29e: 4633 mov r3, r6 + a2a0: f8cd b000 str.w fp, [sp] + a2a4: 9009 str r0, [sp, #36] ; 0x24 + a2a6: f01b fe0f bl 25ec8 + a2aa: 9809 ldr r0, [sp, #36] ; 0x24 + a2ac: e725 b.n a0fa (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x106> + a2ae: 4633 mov r3, r6 + a2b0: f8cd b000 str.w fp, [sp] + a2b4: 9009 str r0, [sp, #36] ; 0x24 + a2b6: f01b fe07 bl 25ec8 + a2ba: 9809 ldr r0, [sp, #36] ; 0x24 + a2bc: e773 b.n a1a6 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)+0x1b2> + a2be: bf00 nop + a2c0: 2000bb08 .word 0x2000bb08 + +0000a2c4 : void selectMux(uint8_t n){ - a320: b538 push {r3, r4, r5, lr} - a322: 1e43 subs r3, r0, #1 - a324: 4601 mov r1, r0 + a2c4: b538 push {r3, r4, r5, lr} + a2c6: 1e43 subs r3, r0, #1 + a2c8: 4601 mov r1, r0 switch(n){ - a326: 2b04 cmp r3, #4 - a328: d81d bhi.n a366 - a32a: e8df f003 tbb [pc, r3] - a32e: 1803 .short 0x1803 - a330: 041a .short 0x041a - a332: 16 .byte 0x16 - a333: 00 .byte 0x00 - a334: 2120 movs r1, #32 + a2ca: 2b04 cmp r3, #4 + a2cc: d81d bhi.n a30a + a2ce: e8df f003 tbb [pc, r3] + a2d2: 1803 .short 0x1803 + a2d4: 041a .short 0x041a + a2d6: 16 .byte 0x16 + a2d7: 00 .byte 0x00 + a2d8: 2120 movs r1, #32 txBuffer[0] = (address << 1); - a336: 4c0d ldr r4, [pc, #52] ; (a36c ) + a2da: 4c0d ldr r4, [pc, #52] ; (a310 ) transmitting = 1; - a338: 2501 movs r5, #1 + a2dc: 2501 movs r5, #1 txBuffer[0] = (address << 1); - a33a: 23e0 movs r3, #224 ; 0xe0 + a2de: 23e0 movs r3, #224 ; 0xe0 Wire.write(mask); - a33c: 4620 mov r0, r4 + a2e0: 4620 mov r0, r4 transmitting = 1; - a33e: f884 5130 strb.w r5, [r4, #304] ; 0x130 + a2e2: f884 5130 strb.w r5, [r4, #304] ; 0x130 txBuffer[0] = (address << 1); - a342: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + a2e6: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 txBufferLength = 1; - a346: f884 512f strb.w r5, [r4, #303] ; 0x12f - a34a: f01a ff35 bl 251b8 + a2ea: f884 512f strb.w r5, [r4, #303] ; 0x12f + a2ee: f01a ffd9 bl 252a4 return endTransmission(1); - a34e: 4629 mov r1, r5 - a350: 4620 mov r0, r4 + a2f2: 4629 mov r1, r5 + a2f4: 4620 mov r0, r4 } - a352: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - a356: f01b b83d b.w 253d4 + a2f6: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + a2fa: f01b b8e1 b.w 254c0 case 5: return BMC_DEVICE_UI_OLED_6; - a35a: 2102 movs r1, #2 - a35c: e7eb b.n a336 + a2fe: 2102 movs r1, #2 + a300: e7eb b.n a2da case 2: return BMC_DEVICE_UI_OLED_3; - a35e: 2110 movs r1, #16 - a360: e7e9 b.n a336 + a302: 2110 movs r1, #16 + a304: e7e9 b.n a2da case 3: return BMC_DEVICE_UI_OLED_4; - a362: 2108 movs r1, #8 - a364: e7e7 b.n a336 - a366: 2101 movs r1, #1 - a368: e7e5 b.n a336 - a36a: bf00 nop - a36c: 2000b0f8 .word 0x2000b0f8 - -0000a370 : + a306: 2108 movs r1, #8 + a308: e7e7 b.n a2da + a30a: 2101 movs r1, #1 + a30c: e7e5 b.n a2da + a30e: bf00 nop + a310: 2000b118 .word 0x2000b118 + +0000a314 : void renderMidi(BMCDataContainer d){ - a370: b084 sub sp, #16 - a372: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - a376: ed2d 8b02 vpush {d8} - a37a: b0b3 sub sp, #204 ; 0xcc - a37c: 4604 mov r4, r0 - a37e: ad3f add r5, sp, #252 ; 0xfc - a380: a809 add r0, sp, #36 ; 0x24 - a382: e885 000e stmia.w r5, {r1, r2, r3} - a386: 4629 mov r1, r5 - a388: 22a1 movs r2, #161 ; 0xa1 - a38a: f8bd 60fc ldrh.w r6, [sp, #252] ; 0xfc - a38e: f89d 510f ldrb.w r5, [sp, #271] ; 0x10f + a314: b084 sub sp, #16 + a316: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + a31a: ed2d 8b02 vpush {d8} + a31e: b0b3 sub sp, #204 ; 0xcc + a320: 4604 mov r4, r0 + a322: ad3f add r5, sp, #252 ; 0xfc + a324: a809 add r0, sp, #36 ; 0x24 + a326: e885 000e stmia.w r5, {r1, r2, r3} + a32a: 4629 mov r1, r5 + a32c: 22a1 movs r2, #161 ; 0xa1 + a32e: f8bd 60fc ldrh.w r6, [sp, #252] ; 0xfc + a332: f89d 510f ldrb.w r5, [sp, #271] ; 0x10f d.crc = generateCrc(d); - a392: f020 f9b9 bl 2a708 + a336: f020 fa5b bl 2a7f0 return bitRead(settings, 2); - a396: f89d 7027 ldrb.w r7, [sp, #39] ; 0x27 + a33a: f89d 7027 ldrb.w r7, [sp, #39] ; 0x27 if(d.useSelected() && !d.useStringOnly()){ - a39a: 077b lsls r3, r7, #29 - a39c: d523 bpl.n a3e6 + a33e: 077b lsls r3, r7, #29 + a340: d523 bpl.n a38a uint8_t len = strlen(str); - a39e: f10d 0066 add.w r0, sp, #102 ; 0x66 - a3a2: f024 fbcd bl 2eb40 + a342: f10d 0066 add.w r0, sp, #102 ; 0x66 + a346: f024 fc7b bl 2ec40 if(len==0){ - a3a6: 2800 cmp r0, #0 - a3a8: f000 8141 beq.w a62e + a34a: 2800 cmp r0, #0 + a34c: f000 8141 beq.w a5d2 uint8_t crc = 0; - a3ac: 2300 movs r3, #0 + a350: 2300 movs r3, #0 c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - a3ae: f89d 8029 ldrb.w r8, [sp, #41] ; 0x29 + a352: f89d 8029 ldrb.w r8, [sp, #41] ; 0x29 uint8_t len = strlen(str); - a3b2: b2c1 uxtb r1, r0 - a3b4: f10d 0e65 add.w lr, sp, #101 ; 0x65 + a356: b2c1 uxtb r1, r0 + a358: f10d 0e65 add.w lr, sp, #101 ; 0x65 for(uint8_t i = 0 ; i < len ; i++){ - a3b8: 469c mov ip, r3 + a35c: 469c mov ip, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - a3ba: eb08 090c add.w r9, r8, ip - a3be: f81e 2f01 ldrb.w r2, [lr, #1]! + a35e: eb08 090c add.w r9, r8, ip + a362: f81e 2f01 ldrb.w r2, [lr, #1]! for(uint8_t i = 0 ; i < len ; i++){ - a3c2: f10c 0c01 add.w ip, ip, #1 + a366: f10c 0c01 add.w ip, ip, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - a3c6: 444a add r2, r9 + a36a: 444a add r2, r9 for(uint8_t i = 0 ; i < len ; i++){ - a3c8: fa5f fc8c uxtb.w ip, ip + a36c: fa5f fc8c uxtb.w ip, ip crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - a3cc: 4053 eors r3, r2 + a370: 4053 eors r3, r2 for(uint8_t i = 0 ; i < len ; i++){ - a3ce: 4561 cmp r1, ip + a372: 4561 cmp r1, ip crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - a3d0: b2db uxtb r3, r3 + a374: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < len ; i++){ - a3d2: d8f2 bhi.n a3ba + a376: d8f2 bhi.n a35e c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - a3d4: ea81 0c03 eor.w ip, r1, r3 - a3d8: f8bd 3030 ldrh.w r3, [sp, #48] ; 0x30 - a3dc: fb00 cc03 mla ip, r0, r3, ip - a3e0: fa5f fc8c uxtb.w ip, ip - a3e4: e01f b.n a426 + a378: ea81 0c03 eor.w ip, r1, r3 + a37c: f8bd 3030 ldrh.w r3, [sp, #48] ; 0x30 + a380: fb00 cc03 mla ip, r0, r3, ip + a384: fa5f fc8c uxtb.w ip, ip + a388: e01f b.n a3ca uint8_t len = strlen(str); - a3e6: f10d 003d add.w r0, sp, #61 ; 0x3d - a3ea: f024 fba9 bl 2eb40 + a38a: f10d 003d add.w r0, sp, #61 ; 0x3d + a38e: f024 fc57 bl 2ec40 if(len==0){ - a3ee: b388 cbz r0, a454 + a392: b388 cbz r0, a3f8 uint8_t crc = 0; - a3f0: 2300 movs r3, #0 + a394: 2300 movs r3, #0 c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - a3f2: f89d 8029 ldrb.w r8, [sp, #41] ; 0x29 + a396: f89d 8029 ldrb.w r8, [sp, #41] ; 0x29 uint8_t len = strlen(str); - a3f6: fa5f fc80 uxtb.w ip, r0 - a3fa: f10d 0e3c add.w lr, sp, #60 ; 0x3c + a39a: fa5f fc80 uxtb.w ip, r0 + a39e: f10d 0e3c add.w lr, sp, #60 ; 0x3c for(uint8_t i = 0 ; i < len ; i++){ - a3fe: 4619 mov r1, r3 + a3a2: 4619 mov r1, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - a400: eb08 0901 add.w r9, r8, r1 - a404: f81e 2f01 ldrb.w r2, [lr, #1]! + a3a4: eb08 0901 add.w r9, r8, r1 + a3a8: f81e 2f01 ldrb.w r2, [lr, #1]! for(uint8_t i = 0 ; i < len ; i++){ - a408: 3101 adds r1, #1 + a3ac: 3101 adds r1, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - a40a: 444a add r2, r9 + a3ae: 444a add r2, r9 for(uint8_t i = 0 ; i < len ; i++){ - a40c: b2c9 uxtb r1, r1 + a3b0: b2c9 uxtb r1, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - a40e: 4053 eors r3, r2 + a3b2: 4053 eors r3, r2 for(uint8_t i = 0 ; i < len ; i++){ - a410: 458c cmp ip, r1 + a3b4: 458c cmp ip, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - a412: b2db uxtb r3, r3 + a3b6: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < len ; i++){ - a414: d8f4 bhi.n a400 + a3b8: d8f4 bhi.n a3a4 c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - a416: ea8c 0c03 eor.w ip, ip, r3 - a41a: f8bd 302e ldrh.w r3, [sp, #46] ; 0x2e - a41e: fb00 cc03 mla ip, r0, r3, ip - a422: fa5f fc8c uxtb.w ip, ip + a3ba: ea8c 0c03 eor.w ip, ip, r3 + a3be: f8bd 302e ldrh.w r3, [sp, #46] ; 0x2e + a3c2: fb00 cc03 mla ip, r0, r3, ip + a3c6: fa5f fc8c uxtb.w ip, ip if(d.isOled()){ - a426: 2d16 cmp r5, #22 + a3ca: 2d16 cmp r5, #22 c += d.byteA+d.byteB+d.byteC+d.byteD; - a428: f89d e02a ldrb.w lr, [sp, #42] ; 0x2a - a42c: f89d 902b ldrb.w r9, [sp, #43] ; 0x2b - a430: f89d 002c ldrb.w r0, [sp, #44] ; 0x2c - a434: f89d 102d ldrb.w r1, [sp, #45] ; 0x2d + a3cc: f89d e02a ldrb.w lr, [sp, #42] ; 0x2a + a3d0: f89d 902b ldrb.w r9, [sp, #43] ; 0x2b + a3d4: f89d 002c ldrb.w r0, [sp, #44] ; 0x2c + a3d8: f89d 102d ldrb.w r1, [sp, #45] ; 0x2d c += (d.highlight*2); - a438: f89d 8038 ldrb.w r8, [sp, #56] ; 0x38 + a3dc: f89d 8038 ldrb.w r8, [sp, #56] ; 0x38 c += d.prependValue; - a43c: f89d 303c ldrb.w r3, [sp, #60] ; 0x3c + a3e0: f89d 303c ldrb.w r3, [sp, #60] ; 0x3c c ^= d.colors; - a440: f89d 2028 ldrb.w r2, [sp, #40] ; 0x28 + a3e4: f89d 2028 ldrb.w r2, [sp, #40] ; 0x28 if(d.isOled()){ - a444: d008 beq.n a458 -} - a446: b033 add sp, #204 ; 0xcc - a448: ecbd 8b02 vpop {d8} - a44c: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - a450: b004 add sp, #16 - a452: 4770 bx lr - a454: 4684 mov ip, r0 - a456: e7e0 b.n a41a + a3e8: d008 beq.n a3fc +} + a3ea: b033 add sp, #204 ; 0xcc + a3ec: ecbd 8b02 vpop {d8} + a3f0: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + a3f4: b004 add sp, #16 + a3f6: 4770 bx lr + a3f8: 4684 mov ip, r0 + a3fa: e7e0 b.n a3be c += d.prependValue; - a458: 44ce add lr, r9 + a3fc: 44ce add lr, r9 c ^= d.colors; - a45a: 407a eors r2, r7 + a3fe: 407a eors r2, r7 c += d.prependValue; - a45c: 4470 add r0, lr - a45e: 4401 add r1, r0 + a400: 4470 add r0, lr + a402: 4401 add r1, r0 __oledMuxSelect(d.index); - a460: b2f0 uxtb r0, r6 + a404: b2f0 uxtb r0, r6 c += d.prependValue; - a462: 440b add r3, r1 - a464: eb03 0348 add.w r3, r3, r8, lsl #1 - a468: 449c add ip, r3 - a46a: fa5f fc8c uxtb.w ip, ip + a406: 440b add r3, r1 + a408: eb03 0348 add.w r3, r3, r8, lsl #1 + a40c: 449c add ip, r3 + a40e: fa5f fc8c uxtb.w ip, ip c ^= d.colors; - a46e: ea8c 0b02 eor.w fp, ip, r2 + a412: ea8c 0b02 eor.w fp, ip, r2 __oledMuxSelect(d.index); - a472: f7ff ff55 bl a320 + a416: f7ff ff55 bl a2c4 } void setCrc(uint8_t t_crc){ crc = t_crc; } bool isCrc(uint8_t t_crc){ return crc == t_crc; - a476: 00f3 lsls r3, r6, #3 - a478: 9302 str r3, [sp, #8] - a47a: ebc6 03c6 rsb r3, r6, r6, lsl #3 - a47e: eb04 03c3 add.w r3, r4, r3, lsl #3 + a41a: 00f3 lsls r3, r6, #3 + a41c: 9302 str r3, [sp, #8] + a41e: ebc6 03c6 rsb r3, r6, r6, lsl #3 + a422: eb04 03c3 add.w r3, r4, r3, lsl #3 if(block.isCrc(d.crc)){ - a482: f893 3206 ldrb.w r3, [r3, #518] ; 0x206 - a486: 455b cmp r3, fp - a488: d0dd beq.n a446 + a426: f893 3206 ldrb.w r3, [r3, #518] ; 0x206 + a42a: 455b cmp r3, fp + a42c: d0dd beq.n a3ea char type[6] = ""; - a48a: 2300 movs r3, #0 - a48c: f89d 2102 ldrb.w r2, [sp, #258] ; 0x102 - a490: 9307 str r3, [sp, #28] - a492: f8ad 3020 strh.w r3, [sp, #32] - a496: 9203 str r2, [sp, #12] - a498: f89d 3101 ldrb.w r3, [sp, #257] ; 0x101 - a49c: f89d 2103 ldrb.w r2, [sp, #259] ; 0x103 + a42e: 2300 movs r3, #0 + a430: f89d 2102 ldrb.w r2, [sp, #258] ; 0x102 + a434: 9307 str r3, [sp, #28] + a436: f8ad 3020 strh.w r3, [sp, #32] + a43a: 9203 str r2, [sp, #12] + a43c: f89d 3101 ldrb.w r3, [sp, #257] ; 0x101 + a440: f89d 2103 ldrb.w r2, [sp, #259] ; 0x103 switch(d.type){ - a4a0: 2bb0 cmp r3, #176 ; 0xb0 - a4a2: 9204 str r2, [sp, #16] - a4a4: f89d 2104 ldrb.w r2, [sp, #260] ; 0x104 - a4a8: 9205 str r2, [sp, #20] - a4aa: f000 80dc beq.w a666 - a4ae: 2bc0 cmp r3, #192 ; 0xc0 - a4b0: f000 80e5 beq.w a67e - a4b4: 2b90 cmp r3, #144 ; 0x90 - a4b6: f000 80e0 beq.w a67a + a444: 2bb0 cmp r3, #176 ; 0xb0 + a446: 9204 str r2, [sp, #16] + a448: f89d 2104 ldrb.w r2, [sp, #260] ; 0x104 + a44c: 9205 str r2, [sp, #20] + a44e: f000 80dc beq.w a60a + a452: 2bc0 cmp r3, #192 ; 0xc0 + a454: f000 80e5 beq.w a622 + a458: 2b90 cmp r3, #144 ; 0x90 + a45a: f000 80e0 beq.w a61e totalLines = 2; - a4ba: 2302 movs r3, #2 - a4bc: 9302 str r3, [sp, #8] + a45e: 2302 movs r3, #2 + a460: 9302 str r3, [sp, #8] BMC_SSD1306& display = block.display; - a4be: 00f3 lsls r3, r6, #3 + a462: 00f3 lsls r3, r6, #3 display.fillRect(t.x, t.y, t.w, t.h, t.background); - a4c0: ed9f 8a73 vldr s16, [pc, #460] ; a690 - a4c4: f04f 0a20 mov.w sl, #32 + a464: ed9f 8a73 vldr s16, [pc, #460] ; a634 + a468: f04f 0a20 mov.w sl, #32 BMC_SSD1306& display = block.display; - a4c8: 1b9d subs r5, r3, r6 + a46c: 1b9d subs r5, r3, r6 display.fillRect(t.x, t.y, t.w, t.h, t.background); - a4ca: ee18 1a10 vmov r1, s16 - a4ce: 2380 movs r3, #128 ; 0x80 + a46e: ee18 1a10 vmov r1, s16 + a472: 2380 movs r3, #128 ; 0x80 BMC_SSD1306& display = block.display; - a4d0: 00ed lsls r5, r5, #3 + a474: 00ed lsls r5, r5, #3 display.fillRect(t.x, t.y, t.w, t.h, t.background); - a4d2: eb04 0805 add.w r8, r4, r5 + a476: eb04 0805 add.w r8, r4, r5 BMC_SSD1306& display = block.display; - a4d6: f505 7504 add.w r5, r5, #528 ; 0x210 + a47a: f505 7504 add.w r5, r5, #528 ; 0x210 display.fillRect(t.x, t.y, t.w, t.h, t.background); - a4da: f8d8 2210 ldr.w r2, [r8, #528] ; 0x210 + a47e: f8d8 2210 ldr.w r2, [r8, #528] ; 0x210 BMC_SSD1306& display = block.display; - a4de: 4425 add r5, r4 + a482: 4425 add r5, r4 display.fillRect(t.x, t.y, t.w, t.h, t.background); - a4e0: f8cd a000 str.w sl, [sp] - a4e4: 4628 mov r0, r5 - a4e6: ed8d 8a01 vstr s16, [sp, #4] - a4ea: f8d2 9040 ldr.w r9, [r2, #64] ; 0x40 - a4ee: ee18 2a10 vmov r2, s16 - a4f2: 47c8 blx r9 + a484: f8cd a000 str.w sl, [sp] + a488: 4628 mov r0, r5 + a48a: ed8d 8a01 vstr s16, [sp, #4] + a48e: f8d2 9040 ldr.w r9, [r2, #64] ; 0x40 + a492: ee18 2a10 vmov r2, s16 + a496: 47c8 blx r9 display.fillRect(t.x, t.y, t.w, lineHeight, t.color); - a4f4: f04f 0901 mov.w r9, #1 - a4f8: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 - a4fc: 2210 movs r2, #16 - a4fe: f8cd 9004 str.w r9, [sp, #4] - a502: ee18 1a10 vmov r1, s16 - a506: 9200 str r2, [sp, #0] - a508: 4628 mov r0, r5 - a50a: 6c1b ldr r3, [r3, #64] ; 0x40 - a50c: ee18 2a10 vmov r2, s16 - a510: 461f mov r7, r3 - a512: 2380 movs r3, #128 ; 0x80 - a514: 47b8 blx r7 + a498: f04f 0901 mov.w r9, #1 + a49c: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 + a4a0: 2210 movs r2, #16 + a4a2: f8cd 9004 str.w r9, [sp, #4] + a4a6: ee18 1a10 vmov r1, s16 + a4aa: 9200 str r2, [sp, #0] + a4ac: 4628 mov r0, r5 + a4ae: 6c1b ldr r3, [r3, #64] ; 0x40 + a4b0: ee18 2a10 vmov r2, s16 + a4b4: 461f mov r7, r3 + a4b6: 2380 movs r3, #128 ; 0x80 + a4b8: 47b8 blx r7 display.drawRect(t.x, t.y, t.w, t.h, t.color); - a516: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 - a51a: ee18 2a10 vmov r2, s16 - a51e: ee18 1a10 vmov r1, s16 - a522: 4628 mov r0, r5 - a524: e9cd a900 strd sl, r9, [sp] - a528: f8d3 a04c ldr.w sl, [r3, #76] ; 0x4c - a52c: 2380 movs r3, #128 ; 0x80 - a52e: 47d0 blx sl + a4ba: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 + a4be: ee18 2a10 vmov r2, s16 + a4c2: ee18 1a10 vmov r1, s16 + a4c6: 4628 mov r0, r5 + a4c8: e9cd a900 strd sl, r9, [sp] + a4cc: f8d3 a04c ldr.w sl, [r3, #76] ; 0x4c + a4d0: 2380 movs r3, #128 ; 0x80 + a4d2: 47d0 blx sl display.setFont(); - a530: ee18 1a10 vmov r1, s16 - a534: 4628 mov r0, r5 - a536: f01c f8eb bl 26710 + a4d4: ee18 1a10 vmov r1, s16 + a4d8: 4628 mov r0, r5 + a4da: f01c f98f bl 267fc display.setTextSize(fontSize); - a53a: 4649 mov r1, r9 - a53c: 4628 mov r0, r5 - a53e: f01c f8e1 bl 26704 + a4de: 4649 mov r1, r9 + a4e0: 4628 mov r0, r5 + a4e2: f01c f985 bl 267f0 return BMC_TO_MIDI_CHANNEL(byteA); - a542: 9b03 ldr r3, [sp, #12] + a4e6: 9b03 ldr r3, [sp, #12] sprintf(buff, "Ch %02u", d.getChannel()); - a544: 4953 ldr r1, [pc, #332] ; (a694 ) - a546: a809 add r0, sp, #36 ; 0x24 - a548: f003 020f and.w r2, r3, #15 + a4e8: 4953 ldr r1, [pc, #332] ; (a638 ) + a4ea: a809 add r0, sp, #36 ; 0x24 + a4ec: f003 020f and.w r2, r3, #15 void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - a54c: ed85 8a05 vstr s16, [r5, #20] + a4f0: ed85 8a05 vstr s16, [r5, #20] char buff[16] = ""; - a550: ed8d 8a09 vstr s16, [sp, #36] ; 0x24 + a4f4: ed8d 8a09 vstr s16, [sp, #36] ; 0x24 sprintf(buff, "Ch %02u", d.getChannel()); - a554: 444a add r2, r9 + a4f8: 444a add r2, r9 char buff[16] = ""; - a556: ed8d 8a0a vstr s16, [sp, #40] ; 0x28 - a55a: ed8d 8a0b vstr s16, [sp, #44] ; 0x2c - a55e: ed8d 8a0c vstr s16, [sp, #48] ; 0x30 + a4fa: ed8d 8a0a vstr s16, [sp, #40] ; 0x28 + a4fe: ed8d 8a0b vstr s16, [sp, #44] ; 0x2c + a502: ed8d 8a0c vstr s16, [sp, #48] ; 0x30 sprintf(buff, "Ch %02u", d.getChannel()); - a562: f023 fe13 bl 2e18c + a506: f023 feb5 bl 2e274 int cX = (t.w-(fontWidth*strlen(buff)))/2; - a566: a809 add r0, sp, #36 ; 0x24 - a568: f024 faea bl 2eb40 + a50a: a809 add r0, sp, #36 ; 0x24 + a50c: f024 fb98 bl 2ec40 return write((const uint8_t *)str, strlen(str)); } - a56c: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 - a570: eb00 0140 add.w r1, r0, r0, lsl #1 - a574: 4602 mov r2, r0 - a576: 685b ldr r3, [r3, #4] - a578: 4628 mov r0, r5 - a57a: fa01 f109 lsl.w r1, r1, r9 - a57e: f1c1 0180 rsb r1, r1, #128 ; 0x80 - a582: fa21 f109 lsr.w r1, r1, r9 + a510: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 + a514: eb00 0140 add.w r1, r0, r0, lsl #1 + a518: 4602 mov r2, r0 + a51a: 685b ldr r3, [r3, #4] + a51c: 4628 mov r0, r5 + a51e: fa01 f109 lsl.w r1, r1, r9 + a522: f1c1 0180 rsb r1, r1, #128 ; 0x80 + a526: fa21 f109 lsr.w r1, r1, r9 display.setCursor(t.x+((cX < 0) ? 0 : cX), t.y + ((lineHeight-fontHeight)/2)); - a586: 8229 strh r1, [r5, #16] + a52a: 8229 strh r1, [r5, #16] cursor_y = y; - a588: 2104 movs r1, #4 - a58a: 8269 strh r1, [r5, #18] - a58c: a909 add r1, sp, #36 ; 0x24 - a58e: 4798 blx r3 + a52c: 2104 movs r1, #4 + a52e: 8269 strh r1, [r5, #18] + a530: a909 add r1, sp, #36 ; 0x24 + a532: 4798 blx r3 void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - a590: f04f 1301 mov.w r3, #65537 ; 0x10001 - a594: 616b str r3, [r5, #20] + a534: f04f 1301 mov.w r3, #65537 ; 0x10001 + a538: 616b str r3, [r5, #20] if(totalLines > maxLines){ - a596: 9b02 ldr r3, [sp, #8] - a598: 2b03 cmp r3, #3 - a59a: d14a bne.n a632 + a53a: 9b02 ldr r3, [sp, #8] + a53c: 2b03 cmp r3, #3 + a53e: d14a bne.n a5d6 display.setTextSize(fontSize); - a59c: 4649 mov r1, r9 - a59e: 4628 mov r0, r5 - a5a0: f01c f8b0 bl 26704 + a540: 4649 mov r1, r9 + a542: 4628 mov r0, r5 + a544: f01c f954 bl 267f0 sprintf(buff, "%s %03u", type, d.byteB); - a5a4: 9b04 ldr r3, [sp, #16] - a5a6: aa07 add r2, sp, #28 - a5a8: 493b ldr r1, [pc, #236] ; (a698 ) - a5aa: a809 add r0, sp, #36 ; 0x24 + a548: 9b04 ldr r3, [sp, #16] + a54a: aa07 add r2, sp, #28 + a54c: 493b ldr r1, [pc, #236] ; (a63c ) + a54e: a809 add r0, sp, #36 ; 0x24 cursor_y = y; - a5ac: 2714 movs r7, #20 - a5ae: f023 fded bl 2e18c + a550: 2714 movs r7, #20 + a552: f023 fe8f bl 2e274 cX = ((t.w/2)-(fontWidth*strlen(buff)))/2; - a5b2: a809 add r0, sp, #36 ; 0x24 - a5b4: f024 fac4 bl 2eb40 - a5b8: a909 add r1, sp, #36 ; 0x24 - a5ba: eb00 0340 add.w r3, r0, r0, lsl #1 - a5be: 4602 mov r2, r0 - a5c0: 826f strh r7, [r5, #18] - a5c2: 4628 mov r0, r5 - a5c4: fa03 f309 lsl.w r3, r3, r9 - a5c8: f1c3 0340 rsb r3, r3, #64 ; 0x40 - a5cc: fa23 f309 lsr.w r3, r3, r9 + a556: a809 add r0, sp, #36 ; 0x24 + a558: f024 fb72 bl 2ec40 + a55c: a909 add r1, sp, #36 ; 0x24 + a55e: eb00 0340 add.w r3, r0, r0, lsl #1 + a562: 4602 mov r2, r0 + a564: 826f strh r7, [r5, #18] + a566: 4628 mov r0, r5 + a568: fa03 f309 lsl.w r3, r3, r9 + a56c: f1c3 0340 rsb r3, r3, #64 ; 0x40 + a570: fa23 f309 lsr.w r3, r3, r9 display.setCursor(t.x+((cX < 0) ? 0 : cX), t.y + lineHeight + ((lineHeight-fontHeight)/2)); - a5d0: 822b strh r3, [r5, #16] - a5d2: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 - a5d6: 685b ldr r3, [r3, #4] - a5d8: 4798 blx r3 + a574: 822b strh r3, [r5, #16] + a576: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 + a57a: 685b ldr r3, [r3, #4] + a57c: 4798 blx r3 sprintf(buff, "V %03u", d.byteC); - a5da: 9a05 ldr r2, [sp, #20] - a5dc: 492f ldr r1, [pc, #188] ; (a69c ) - a5de: a809 add r0, sp, #36 ; 0x24 - a5e0: f023 fdd4 bl 2e18c + a57e: 9a05 ldr r2, [sp, #20] + a580: 492f ldr r1, [pc, #188] ; (a640 ) + a582: a809 add r0, sp, #36 ; 0x24 + a584: f023 fe76 bl 2e274 cX = t.w + (((t.w/2)-(fontWidth*strlen(buff)))/2); - a5e4: a809 add r0, sp, #36 ; 0x24 - a5e6: f024 faab bl 2eb40 - a5ea: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 - a5ee: 4602 mov r2, r0 - a5f0: 826f strh r7, [r5, #18] - a5f2: 685f ldr r7, [r3, #4] - a5f4: a909 add r1, sp, #36 ; 0x24 - a5f6: eb02 0342 add.w r3, r2, r2, lsl #1 - a5fa: 4628 mov r0, r5 - a5fc: fa03 f309 lsl.w r3, r3, r9 - a600: f1c3 0340 rsb r3, r3, #64 ; 0x40 - a604: fa23 f309 lsr.w r3, r3, r9 - a608: 3380 adds r3, #128 ; 0x80 + a588: a809 add r0, sp, #36 ; 0x24 + a58a: f024 fb59 bl 2ec40 + a58e: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 + a592: 4602 mov r2, r0 + a594: 826f strh r7, [r5, #18] + a596: 685f ldr r7, [r3, #4] + a598: a909 add r1, sp, #36 ; 0x24 + a59a: eb02 0342 add.w r3, r2, r2, lsl #1 + a59e: 4628 mov r0, r5 + a5a0: fa03 f309 lsl.w r3, r3, r9 + a5a4: f1c3 0340 rsb r3, r3, #64 ; 0x40 + a5a8: fa23 f309 lsr.w r3, r3, r9 + a5ac: 3380 adds r3, #128 ; 0x80 display.setCursor(t.x+((cX < 0) ? 0 : cX), t.y + lineHeight + ((lineHeight-fontHeight)/2)); - a60a: ea23 73e3 bic.w r3, r3, r3, asr #31 - a60e: 822b strh r3, [r5, #16] - a610: 47b8 blx r7 + a5ae: ea23 73e3 bic.w r3, r3, r3, asr #31 + a5b2: 822b strh r3, [r5, #16] + a5b4: 47b8 blx r7 display.setTextSize(1); - a612: 2101 movs r1, #1 - a614: 4628 mov r0, r5 - a616: f01c f875 bl 26704 + a5b6: 2101 movs r1, #1 + a5b8: 4628 mov r0, r5 + a5ba: f01c f919 bl 267f0 display.display(); - a61a: 4628 mov r0, r5 - a61c: f00e f9c6 bl 189ac + a5be: 4628 mov r0, r5 + a5c0: f00e fa66 bl 18a90 crc = t_crc; - a620: 00f3 lsls r3, r6, #3 - a622: 1b9b subs r3, r3, r6 - a624: eb04 04c3 add.w r4, r4, r3, lsl #3 - a628: f884 b206 strb.w fp, [r4, #518] ; 0x206 -} - a62c: e70b b.n a446 - a62e: 4684 mov ip, r0 - a630: e6d2 b.n a3d8 + a5c4: 00f3 lsls r3, r6, #3 + a5c6: 1b9b subs r3, r3, r6 + a5c8: eb04 04c3 add.w r4, r4, r3, lsl #3 + a5cc: f884 b206 strb.w fp, [r4, #518] ; 0x206 +} + a5d0: e70b b.n a3ea + a5d2: 4684 mov ip, r0 + a5d4: e6d2 b.n a37c sprintf(buff, "%s %03u", type, d.byteB); - a632: 9b04 ldr r3, [sp, #16] - a634: aa07 add r2, sp, #28 - a636: 4918 ldr r1, [pc, #96] ; (a698 ) - a638: a809 add r0, sp, #36 ; 0x24 - a63a: f023 fda7 bl 2e18c + a5d6: 9b04 ldr r3, [sp, #16] + a5d8: aa07 add r2, sp, #28 + a5da: 4918 ldr r1, [pc, #96] ; (a63c ) + a5dc: a809 add r0, sp, #36 ; 0x24 + a5de: f023 fe49 bl 2e274 cX = (t.w-(fontWidth*strlen(buff)))/2; - a63e: a809 add r0, sp, #36 ; 0x24 - a640: f024 fa7e bl 2eb40 - a644: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 - a648: 4602 mov r2, r0 - a64a: a909 add r1, sp, #36 ; 0x24 - a64c: 685f ldr r7, [r3, #4] - a64e: 2314 movs r3, #20 - a650: 826b strh r3, [r5, #18] - a652: eb00 0340 add.w r3, r0, r0, lsl #1 - a656: 4628 mov r0, r5 - a658: 005b lsls r3, r3, #1 - a65a: f1c3 0380 rsb r3, r3, #128 ; 0x80 - a65e: 085b lsrs r3, r3, #1 + a5e2: a809 add r0, sp, #36 ; 0x24 + a5e4: f024 fb2c bl 2ec40 + a5e8: f8d8 3210 ldr.w r3, [r8, #528] ; 0x210 + a5ec: 4602 mov r2, r0 + a5ee: a909 add r1, sp, #36 ; 0x24 + a5f0: 685f ldr r7, [r3, #4] + a5f2: 2314 movs r3, #20 + a5f4: 826b strh r3, [r5, #18] + a5f6: eb00 0340 add.w r3, r0, r0, lsl #1 + a5fa: 4628 mov r0, r5 + a5fc: 005b lsls r3, r3, #1 + a5fe: f1c3 0380 rsb r3, r3, #128 ; 0x80 + a602: 085b lsrs r3, r3, #1 display.setCursor(t.x+((cX < 0) ? 0 : cX), t.y + lineY); - a660: 822b strh r3, [r5, #16] - a662: 47b8 blx r7 - a664: e7d5 b.n a612 + a604: 822b strh r3, [r5, #16] + a606: 47b8 blx r7 + a608: e7d5 b.n a5b6 strcpy(type, "CC"); - a666: 4b0e ldr r3, [pc, #56] ; (a6a0 ) + a60a: 4b0e ldr r3, [pc, #56] ; (a644 ) strcpy(type, "NN"); - a668: 681b ldr r3, [r3, #0] - a66a: f8ad 301c strh.w r3, [sp, #28] - a66e: 0c1b lsrs r3, r3, #16 - a670: f88d 301e strb.w r3, [sp, #30] + a60c: 681b ldr r3, [r3, #0] + a60e: f8ad 301c strh.w r3, [sp, #28] + a612: 0c1b lsrs r3, r3, #16 + a614: f88d 301e strb.w r3, [sp, #30] totalLines = 3; - a674: 2303 movs r3, #3 - a676: 9302 str r3, [sp, #8] + a618: 2303 movs r3, #3 + a61a: 9302 str r3, [sp, #8] break; - a678: e721 b.n a4be + a61c: e721 b.n a462 strcpy(type, "NN"); - a67a: 4b0a ldr r3, [pc, #40] ; (a6a4 ) - a67c: e7f4 b.n a668 + a61e: 4b0a ldr r3, [pc, #40] ; (a648 ) + a620: e7f4 b.n a60c strcpy(type, "PC"); - a67e: 4b0a ldr r3, [pc, #40] ; (a6a8 ) - a680: 681b ldr r3, [r3, #0] - a682: f8ad 301c strh.w r3, [sp, #28] - a686: 0c1b lsrs r3, r3, #16 - a688: f88d 301e strb.w r3, [sp, #30] - a68c: e715 b.n a4ba - a68e: bf00 nop - a690: 00000000 .word 0x00000000 - a694: 2000155c .word 0x2000155c - a698: 20001564 .word 0x20001564 - a69c: 2000156c .word 0x2000156c - a6a0: 20001554 .word 0x20001554 - a6a4: 20001558 .word 0x20001558 - a6a8: 20001550 .word 0x20001550 - -0000a6ac : + a622: 4b0a ldr r3, [pc, #40] ; (a64c ) + a624: 681b ldr r3, [r3, #0] + a626: f8ad 301c strh.w r3, [sp, #28] + a62a: 0c1b lsrs r3, r3, #16 + a62c: f88d 301e strb.w r3, [sp, #30] + a630: e715 b.n a45e + a632: bf00 nop + a634: 00000000 .word 0x00000000 + a638: 2000155c .word 0x2000155c + a63c: 20001564 .word 0x20001564 + a640: 2000156c .word 0x2000156c + a644: 20001554 .word 0x20001554 + a648: 20001558 .word 0x20001558 + a64c: 20001550 .word 0x20001550 + +0000a650 : display.drawFastHLine(0, hBound-1, wBound, BMC_OLED_WHITE); } display.display(); } private: void renderLine(const char * str, uint8_t lineNumber, uint8_t totalLines, uint8_t start, uint8_t end, bool highlight=false){ - a6ac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - a6b0: b08b sub sp, #44 ; 0x2c - a6b2: 4604 mov r4, r0 - a6b4: 468b mov fp, r1 - a6b6: 4691 mov r9, r2 - a6b8: af04 add r7, sp, #16 - a6ba: 469a mov sl, r3 - a6bc: f897 5040 ldrb.w r5, [r7, #64] ; 0x40 - a6c0: f897 6044 ldrb.w r6, [r7, #68] ; 0x44 + a650: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + a654: b08b sub sp, #44 ; 0x2c + a656: 4604 mov r4, r0 + a658: 468b mov fp, r1 + a65a: 4691 mov r9, r2 + a65c: af04 add r7, sp, #16 + a65e: 469a mov sl, r3 + a660: f897 5040 ldrb.w r5, [r7, #64] ; 0x40 + a664: f897 6044 ldrb.w r6, [r7, #68] ; 0x44 uint8_t len = end - start; - a6c4: 1b76 subs r6, r6, r5 + a668: 1b76 subs r6, r6, r5 // trim line for(uint8_t i = start, n=(end - start), e = 0 ; e < n ; i++, e++){ - a6c6: f016 06ff ands.w r6, r6, #255 ; 0xff - a6ca: d104 bne.n a6d6 - a6cc: e078 b.n a7c0 - a6ce: f013 06ff ands.w r6, r3, #255 ; 0xff + a66a: f016 06ff ands.w r6, r6, #255 ; 0xff + a66e: d104 bne.n a67a + a670: e078 b.n a764 + a672: f013 06ff ands.w r6, r3, #255 ; 0xff if(str[i] == ' '){ start++; - a6d2: b2cd uxtb r5, r1 + a676: b2cd uxtb r5, r1 for(uint8_t i = start, n=(end - start), e = 0 ; e < n ; i++, e++){ - a6d4: d074 beq.n a7c0 + a678: d074 beq.n a764 if(str[i] == ' '){ - a6d6: f81b 2005 ldrb.w r2, [fp, r5] + a67a: f81b 2005 ldrb.w r2, [fp, r5] start++; - a6da: 1c69 adds r1, r5, #1 + a67e: 1c69 adds r1, r5, #1 len--; - a6dc: 1e73 subs r3, r6, #1 + a680: 1e73 subs r3, r6, #1 if(str[i] == ' '){ - a6de: 2a20 cmp r2, #32 - a6e0: d0f5 beq.n a6ce + a682: 2a20 cmp r2, #32 + a684: d0f5 beq.n a672 } else { break; } } len = constrain(len, 0, 10); - a6e2: 2e0a cmp r6, #10 + a686: 2e0a cmp r6, #10 char buff[strlen(str)+1] = ""; - a6e4: 4658 mov r0, fp + a688: 4658 mov r0, fp len = constrain(len, 0, 10); - a6e6: bfa8 it ge - a6e8: 260a movge r6, #10 + a68a: bfa8 it ge + a68c: 260a movge r6, #10 char buff[strlen(str)+1] = ""; - a6ea: f024 fa29 bl 2eb40 - a6ee: f100 0308 add.w r3, r0, #8 - a6f2: 4602 mov r2, r0 - a6f4: 2100 movs r1, #0 - a6f6: f023 0307 bic.w r3, r3, #7 - a6fa: ebad 0d03 sub.w sp, sp, r3 - a6fe: f10d 0810 add.w r8, sp, #16 - a702: f10d 0011 add.w r0, sp, #17 - a706: f88d 1010 strb.w r1, [sp, #16] - a70a: b11a cbz r2, a714 - a70c: 2100 movs r1, #0 - a70e: f023 febd bl 2e48c + a68e: f024 fad7 bl 2ec40 + a692: f100 0308 add.w r3, r0, #8 + a696: 4602 mov r2, r0 + a698: 2100 movs r1, #0 + a69a: f023 0307 bic.w r3, r3, #7 + a69e: ebad 0d03 sub.w sp, sp, r3 + a6a2: f10d 0810 add.w r8, sp, #16 + a6a6: f10d 0011 add.w r0, sp, #17 + a6aa: f88d 1010 strb.w r1, [sp, #16] + a6ae: b11a cbz r2, a6b8 + a6b0: 2100 movs r1, #0 + a6b2: f023 ff5f bl 2e574 for(uint8_t i = start, e = 0 ; e < len ; i++, e++){ - a712: b15e cbz r6, a72c - a714: 442e add r6, r5 - a716: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff - a71a: b2f6 uxtb r6, r6 - a71c: 1c69 adds r1, r5, #1 + a6b6: b15e cbz r6, a6d0 + a6b8: 442e add r6, r5 + a6ba: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff + a6be: b2f6 uxtb r6, r6 + a6c0: 1c69 adds r1, r5, #1 buff[e] = str[i]; - a71e: f81b 2005 ldrb.w r2, [fp, r5] + a6c2: f81b 2005 ldrb.w r2, [fp, r5] for(uint8_t i = start, e = 0 ; e < len ; i++, e++){ - a722: b2cd uxtb r5, r1 + a6c6: b2cd uxtb r5, r1 buff[e] = str[i]; - a724: f803 2f01 strb.w r2, [r3, #1]! + a6c8: f803 2f01 strb.w r2, [r3, #1]! for(uint8_t i = start, e = 0 ; e < len ; i++, e++){ - a728: 42ae cmp r6, r5 - a72a: d1f7 bne.n a71c + a6cc: 42ae cmp r6, r5 + a6ce: d1f7 bne.n a6c0 break; } } uint16_t yPos = 0; uint16_t hPos = hBound; if(totalLines == 2){ - a72c: f1ba 0f02 cmp.w sl, #2 + a6d0: f1ba 0f02 cmp.w sl, #2 uint16_t hPos = hBound; - a730: 7863 ldrb r3, [r4, #1] + a6d4: 7863 ldrb r3, [r4, #1] if(totalLines == 2){ - a732: d059 beq.n a7e8 + a6d6: d059 beq.n a78c uint16_t hPos = hBound; - a734: b29a uxth r2, r3 + a6d8: b29a uxth r2, r3 fillRect(t_x, t_y, t_w, t_h, t_background); - a736: f04f 0a00 mov.w sl, #0 - a73a: b21b sxth r3, r3 - a73c: 60fa str r2, [r7, #12] + a6da: f04f 0a00 mov.w sl, #0 + a6de: b21b sxth r3, r3 + a6e0: 60fa str r2, [r7, #12] uint16_t yPos = 0; - a73e: e9c7 3a01 strd r3, sl, [r7, #4] + a6e2: e9c7 3a01 strd r3, sl, [r7, #4] char buff[strlen(str)+1]; - a742: 4640 mov r0, r8 + a6e6: 4640 mov r0, r8 } - a744: 46eb mov fp, sp + a6e8: 46eb mov fp, sp char buff[strlen(str)+1]; - a746: f024 f9fb bl 2eb40 - a74a: f100 0308 add.w r3, r0, #8 + a6ea: f024 faa9 bl 2ec40 + a6ee: f100 0308 add.w r3, r0, #8 hPos = hBound/2; if(lineNumber == 1){ yPos = hBound/2; } } display.printCenteredXY(buff, 0, yPos, wBound, hPos, 0, BMC_OLED_WHITE, BMC_OLED_BLACK); - a74e: 4625 mov r5, r4 + a6f2: 4625 mov r5, r4 strcpy(buff, str); - a750: 1c42 adds r2, r0, #1 + a6f4: 1c42 adds r2, r0, #1 char buff[strlen(str)+1]; - a752: f023 0307 bic.w r3, r3, #7 + a6f6: f023 0307 bic.w r3, r3, #7 strcpy(buff, str); - a756: 4641 mov r1, r8 - a758: f815 9b0c ldrb.w r9, [r5], #12 + a6fa: 4641 mov r1, r8 + a6fc: f815 9b0c ldrb.w r9, [r5], #12 return getCenteredXY(buff,t_x,t_y,t_w,t_h,t_padding); - a75c: 2600 movs r6, #0 + a700: 2600 movs r6, #0 char buff[strlen(str)+1]; - a75e: ebad 0d03 sub.w sp, sp, r3 - a762: ab04 add r3, sp, #16 + a702: ebad 0d03 sub.w sp, sp, r3 + a706: ab04 add r3, sp, #16 strcpy(buff, str); - a764: 4618 mov r0, r3 - a766: f01f ffcf bl 2a708 + a708: 4618 mov r0, r3 + a70a: f020 f871 bl 2a7f0 return getCenteredXY(buff,t_x,t_y,t_w,t_h,t_padding); - a76a: 68fa ldr r2, [r7, #12] - a76c: 4633 mov r3, r6 - a76e: 4629 mov r1, r5 - a770: 9202 str r2, [sp, #8] - a772: 68ba ldr r2, [r7, #8] - a774: 9603 str r6, [sp, #12] - a776: 9200 str r2, [sp, #0] - a778: 4602 mov r2, r0 - a77a: f8cd 9004 str.w r9, [sp, #4] - a77e: f107 0010 add.w r0, r7, #16 - a782: f7f5 fcf1 bl 168 - a786: 46dd mov sp, fp + a70e: 68fa ldr r2, [r7, #12] + a710: 4633 mov r3, r6 + a712: 4629 mov r1, r5 + a714: 9202 str r2, [sp, #8] + a716: 68ba ldr r2, [r7, #8] + a718: 9603 str r6, [sp, #12] + a71a: 9200 str r2, [sp, #0] + a71c: 4602 mov r2, r0 + a71e: f8cd 9004 str.w r9, [sp, #4] + a722: f107 0010 add.w r0, r7, #16 + a726: f7f5 fd1f bl 168 + a72a: 46dd mov sp, fp fillRect(t_x, t_y, t_w, t_h, t_background); - a788: 687b ldr r3, [r7, #4] - a78a: 4631 mov r1, r6 - a78c: 4652 mov r2, sl - a78e: 4628 mov r0, r5 - a790: 9300 str r3, [sp, #0] - a792: 464b mov r3, r9 - a794: 9601 str r6, [sp, #4] - a796: f01b f8f9 bl 2598c + a72c: 687b ldr r3, [r7, #4] + a72e: 4631 mov r1, r6 + a730: 4652 mov r2, sl + a732: 4628 mov r0, r5 + a734: 9300 str r3, [sp, #0] + a736: 464b mov r3, r9 + a738: 9601 str r6, [sp, #4] + a73a: f01b f99d bl 25a78 cursor_x = x; - a79a: 693a ldr r2, [r7, #16] + a73e: 693a ldr r2, [r7, #16] void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - a79c: f04f 1301 mov.w r3, #65537 ; 0x10001 - a7a0: 4640 mov r0, r8 + a740: f04f 1301 mov.w r3, #65537 ; 0x10001 + a744: 4640 mov r0, r8 void setTextWrap(bool w) { wrap = w; } - a7a2: f884 6027 strb.w r6, [r4, #39] ; 0x27 + a746: f884 6027 strb.w r6, [r4, #39] ; 0x27 void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - a7a6: e9c4 2307 strd r2, r3, [r4, #28] - a7aa: f024 f9c9 bl 2eb40 - a7ae: 4641 mov r1, r8 - a7b0: 4602 mov r2, r0 - a7b2: 4628 mov r0, r5 - a7b4: f01f fb04 bl 29dc0 - } - a7b8: 371c adds r7, #28 - a7ba: 46bd mov sp, r7 - a7bc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + a74a: e9c4 2307 strd r2, r3, [r4, #28] + a74e: f024 fa77 bl 2ec40 + a752: 4641 mov r1, r8 + a754: 4602 mov r2, r0 + a756: 4628 mov r0, r5 + a758: f01f fba8 bl 29eac + } + a75c: 371c adds r7, #28 + a75e: 46bd mov sp, r7 + a760: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} char buff[strlen(str)+1] = ""; - a7c0: 4658 mov r0, fp - a7c2: 2600 movs r6, #0 - a7c4: f024 f9bc bl 2eb40 - a7c8: f100 0308 add.w r3, r0, #8 - a7cc: 4602 mov r2, r0 - a7ce: f023 0307 bic.w r3, r3, #7 - a7d2: ebad 0d03 sub.w sp, sp, r3 - a7d6: f10d 0810 add.w r8, sp, #16 - a7da: f10d 0011 add.w r0, sp, #17 - a7de: f88d 6010 strb.w r6, [sp, #16] - a7e2: 2a00 cmp r2, #0 - a7e4: d192 bne.n a70c - a7e6: e7a1 b.n a72c + a764: 4658 mov r0, fp + a766: 2600 movs r6, #0 + a768: f024 fa6a bl 2ec40 + a76c: f100 0308 add.w r3, r0, #8 + a770: 4602 mov r2, r0 + a772: f023 0307 bic.w r3, r3, #7 + a776: ebad 0d03 sub.w sp, sp, r3 + a77a: f10d 0810 add.w r8, sp, #16 + a77e: f10d 0011 add.w r0, sp, #17 + a782: f88d 6010 strb.w r6, [sp, #16] + a786: 2a00 cmp r2, #0 + a788: d192 bne.n a6b0 + a78a: e7a1 b.n a6d0 hPos = hBound/2; - a7e8: 085a lsrs r2, r3, #1 + a78c: 085a lsrs r2, r3, #1 if(lineNumber == 1){ - a7ea: f1b9 0f01 cmp.w r9, #1 + a78e: f1b9 0f01 cmp.w r9, #1 hPos = hBound/2; - a7ee: 60fa str r2, [r7, #12] + a792: 60fa str r2, [r7, #12] if(lineNumber == 1){ - a7f0: d005 beq.n a7fe - a7f2: f04f 0a00 mov.w sl, #0 - a7f6: b213 sxth r3, r2 + a794: d005 beq.n a7a2 + a796: f04f 0a00 mov.w sl, #0 + a79a: b213 sxth r3, r2 uint16_t yPos = 0; - a7f8: e9c7 3a01 strd r3, sl, [r7, #4] - a7fc: e7a1 b.n a742 - a7fe: fa0f fa82 sxth.w sl, r2 + a79c: e9c7 3a01 strd r3, sl, [r7, #4] + a7a0: e7a1 b.n a6e6 + a7a2: fa0f fa82 sxth.w sl, r2 yPos = hBound/2; - a802: 68fb ldr r3, [r7, #12] - a804: e9c7 a301 strd sl, r3, [r7, #4] - a808: e79b b.n a742 - a80a: bf00 nop + a7a6: 68fb ldr r3, [r7, #12] + a7a8: e9c7 a301 strd sl, r3, [r7, #4] + a7ac: e79b b.n a6e6 + a7ae: bf00 nop -0000a80c : +0000a7b0 : void print(BMCDataContainer d, char * str){ - a80c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - a810: ed2d 8b02 vpush {d8} - a814: b085 sub sp, #20 - a816: 461e mov r6, r3 + a7b0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + a7b4: ed2d 8b02 vpush {d8} + a7b8: b085 sub sp, #20 + a7ba: 461e mov r6, r3 if(d.crc == crc){ - a818: 7883 ldrb r3, [r0, #2] + a7bc: 7883 ldrb r3, [r0, #2] void print(BMCDataContainer d, char * str){ - a81a: af02 add r7, sp, #8 + a7be: af02 add r7, sp, #8 if(d.crc == crc){ - a81c: 428b cmp r3, r1 + a7c0: 428b cmp r3, r1 void print(BMCDataContainer d, char * str){ - a81e: f8d7 9038 ldr.w r9, [r7, #56] ; 0x38 + a7c2: f8d7 9038 ldr.w r9, [r7, #56] ; 0x38 if(d.crc == crc){ - a822: d060 beq.n a8e6 + a7c6: d060 beq.n a88a display.clearDisplay(); - a824: f100 0a0c add.w sl, r0, #12 + a7c8: f100 0a0c add.w sl, r0, #12 crc = d.crc; - a828: 7081 strb r1, [r0, #2] + a7cc: 7081 strb r1, [r0, #2] display.clearDisplay(); - a82a: 4604 mov r4, r0 - a82c: 4690 mov r8, r2 - a82e: 4650 mov r0, sl - a830: f00e f850 bl 188d4 + a7ce: 4604 mov r4, r0 + a7d0: 4690 mov r8, r2 + a7d2: 4650 mov r0, sl + a7d4: f00e f8f0 bl 189b8 uint8_t len = strlen(str); - a834: 4648 mov r0, r9 - a836: f024 f983 bl 2eb40 + a7d8: 4648 mov r0, r9 + a7da: f024 fa31 bl 2ec40 if(len == 0){ - a83a: f010 0eff ands.w lr, r0, #255 ; 0xff - a83e: d04f beq.n a8e0 + a7de: f010 0eff ands.w lr, r0, #255 ; 0xff + a7e2: d04f beq.n a884 len = (len > 20) ? 20 : len; - a840: f1be 0f14 cmp.w lr, #20 + a7e4: f1be 0f14 cmp.w lr, #20 if(hBound==32){ - a844: 7863 ldrb r3, [r4, #1] + a7e8: 7863 ldrb r3, [r4, #1] len = (len > 20) ? 20 : len; - a846: 46f3 mov fp, lr - a848: bf28 it cs - a84a: f04f 0b14 movcs.w fp, #20 + a7ea: 46f3 mov fp, lr + a7ec: bf28 it cs + a7ee: f04f 0b14 movcs.w fp, #20 if(hBound==32){ - a84e: 2b20 cmp r3, #32 - a850: d04f beq.n a8f2 - a852: f109 3cff add.w ip, r9, #4294967295 ; 0xffffffff - a856: f10b 30ff add.w r0, fp, #4294967295 ; 0xffffffff + a7f2: 2b20 cmp r3, #32 + a7f4: d04f beq.n a896 + a7f6: f109 3cff add.w ip, r9, #4294967295 ; 0xffffffff + a7fa: f10b 30ff add.w r0, fp, #4294967295 ; 0xffffffff int8_t spaceIndex = -1; - a85a: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + a7fe: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff uint8_t totalSpaces = 0; - a85e: 2500 movs r5, #0 - a860: fa59 f080 uxtab r0, r9, r0 + a802: 2500 movs r5, #0 + a804: fa59 f080 uxtab r0, r9, r0 if(hBound==32){ - a864: 4663 mov r3, ip - a866: e001 b.n a86c + a808: 4663 mov r3, ip + a80a: e001 b.n a810 for(uint8_t i = 0 ; i < len ; i++){ - a868: 4283 cmp r3, r0 - a86a: d00c beq.n a886 + a80c: 4283 cmp r3, r0 + a80e: d00c beq.n a82a if(str[i]==' '){ - a86c: f813 1f01 ldrb.w r1, [r3, #1]! - a870: 2920 cmp r1, #32 - a872: d1f9 bne.n a868 + a810: f813 1f01 ldrb.w r1, [r3, #1]! + a814: 2920 cmp r1, #32 + a816: d1f9 bne.n a80c spaceIndex = i; - a874: 1e59 subs r1, r3, #1 + a818: 1e59 subs r1, r3, #1 if(totalSpaces == 1){ - a876: b935 cbnz r5, a886 - a878: eba1 010c sub.w r1, r1, ip + a81a: b935 cbnz r5, a82a + a81c: eba1 010c sub.w r1, r1, ip for(uint8_t i = 0 ; i < len ; i++){ - a87c: 4283 cmp r3, r0 + a820: 4283 cmp r3, r0 totalSpaces = 1; - a87e: f04f 0501 mov.w r5, #1 - a882: b24a sxtb r2, r1 + a822: f04f 0501 mov.w r5, #1 + a826: b24a sxtb r2, r1 for(uint8_t i = 0 ; i < len ; i++){ - a884: d1f2 bne.n a86c + a828: d1f2 bne.n a810 if(spaceIndex >= 0 && len > 7){ - a886: 2a00 cmp r2, #0 - a888: db4d blt.n a926 - a88a: f1be 0f07 cmp.w lr, #7 - a88e: d94a bls.n a926 + a82a: 2a00 cmp r2, #0 + a82c: db4d blt.n a8ca + a82e: f1be 0f07 cmp.w lr, #7 + a832: d94a bls.n a8ca renderLine(str, 0, 2, 0, spaceIndex, d.highlight); - a890: b2d5 uxtb r5, r2 - a892: 2200 movs r2, #0 - a894: 4649 mov r1, r9 - a896: 4620 mov r0, r4 - a898: 2302 movs r3, #2 - a89a: 9200 str r2, [sp, #0] - a89c: 9501 str r5, [sp, #4] - a89e: f7ff ff05 bl a6ac + a834: b2d5 uxtb r5, r2 + a836: 2200 movs r2, #0 + a838: 4649 mov r1, r9 + a83a: 4620 mov r0, r4 + a83c: 2302 movs r3, #2 + a83e: 9200 str r2, [sp, #0] + a840: 9501 str r5, [sp, #4] + a842: f7ff ff05 bl a650 renderLine(str, 1, 2, (spaceIndex+1), len, d.highlight); - a8a2: 1c6a adds r2, r5, #1 - a8a4: 4649 mov r1, r9 - a8a6: 2302 movs r3, #2 - a8a8: b2d2 uxtb r2, r2 - a8aa: 4620 mov r0, r4 - a8ac: f8cd b004 str.w fp, [sp, #4] - a8b0: 9200 str r2, [sp, #0] - a8b2: 2201 movs r2, #1 - a8b4: f7ff fefa bl a6ac + a846: 1c6a adds r2, r5, #1 + a848: 4649 mov r1, r9 + a84a: 2302 movs r3, #2 + a84c: b2d2 uxtb r2, r2 + a84e: 4620 mov r0, r4 + a850: f8cd b004 str.w fp, [sp, #4] + a854: 9200 str r2, [sp, #0] + a856: 2201 movs r2, #1 + a858: f7ff fefa bl a650 if(bitRead(d.settings, 1)){ - a8b8: f018 0f02 tst.w r8, #2 - a8bc: d128 bne.n a910 + a85c: f018 0f02 tst.w r8, #2 + a860: d128 bne.n a8b4 if(d.highlight){ - a8be: b17e cbz r6, a8e0 + a862: b17e cbz r6, a884 display.drawFastHLine(0, hBound, wBound, BMC_OLED_WHITE); - a8c0: 2501 movs r5, #1 - a8c2: 7823 ldrb r3, [r4, #0] - a8c4: 7862 ldrb r2, [r4, #1] - a8c6: 2100 movs r1, #0 - a8c8: 4650 mov r0, sl - a8ca: 9500 str r5, [sp, #0] - a8cc: f00d ff78 bl 187c0 + a864: 2501 movs r5, #1 + a866: 7823 ldrb r3, [r4, #0] + a868: 7862 ldrb r2, [r4, #1] + a86a: 2100 movs r1, #0 + a86c: 4650 mov r0, sl + a86e: 9500 str r5, [sp, #0] + a870: f00e f818 bl 188a4 display.drawFastHLine(0, hBound-1, wBound, BMC_OLED_WHITE); - a8d0: 7862 ldrb r2, [r4, #1] - a8d2: 7823 ldrb r3, [r4, #0] - a8d4: 2100 movs r1, #0 - a8d6: 4650 mov r0, sl - a8d8: 3a01 subs r2, #1 - a8da: 9500 str r5, [sp, #0] - a8dc: f00d ff70 bl 187c0 + a874: 7862 ldrb r2, [r4, #1] + a876: 7823 ldrb r3, [r4, #0] + a878: 2100 movs r1, #0 + a87a: 4650 mov r0, sl + a87c: 3a01 subs r2, #1 + a87e: 9500 str r5, [sp, #0] + a880: f00e f810 bl 188a4 display.display(); - a8e0: 4650 mov r0, sl - a8e2: f00e f863 bl 189ac + a884: 4650 mov r0, sl + a886: f00e f903 bl 18a90 } - a8e6: 370c adds r7, #12 - a8e8: 46bd mov sp, r7 - a8ea: ecbd 8b02 vpop {d8} - a8ee: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + a88a: 370c adds r7, #12 + a88c: 46bd mov sp, r7 + a88e: ecbd 8b02 vpop {d8} + a892: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(len>10){ - a8f2: f1be 0f0a cmp.w lr, #10 - a8f6: d83e bhi.n a976 + a896: f1be 0f0a cmp.w lr, #10 + a89a: d83e bhi.n a91a renderLine(str, 0, 1, 0, len, d.highlight); - a8f8: 2200 movs r2, #0 - a8fa: 4649 mov r1, r9 - a8fc: 2301 movs r3, #1 - a8fe: 4620 mov r0, r4 - a900: f8cd b004 str.w fp, [sp, #4] - a904: 9200 str r2, [sp, #0] - a906: f7ff fed1 bl a6ac + a89c: 2200 movs r2, #0 + a89e: 4649 mov r1, r9 + a8a0: 2301 movs r3, #1 + a8a2: 4620 mov r0, r4 + a8a4: f8cd b004 str.w fp, [sp, #4] + a8a8: 9200 str r2, [sp, #0] + a8aa: f7ff fed1 bl a650 if(bitRead(d.settings, 1)){ - a90a: f018 0f02 tst.w r8, #2 - a90e: d0d6 beq.n a8be + a8ae: f018 0f02 tst.w r8, #2 + a8b2: d0d6 beq.n a862 display.drawRect(0, 0, wBound, hBound, BMC_OLED_WHITE); - a910: 2101 movs r1, #1 - a912: 7823 ldrb r3, [r4, #0] - a914: 2200 movs r2, #0 - a916: 4650 mov r0, sl - a918: 9101 str r1, [sp, #4] - a91a: 7861 ldrb r1, [r4, #1] - a91c: 9100 str r1, [sp, #0] - a91e: 4611 mov r1, r2 - a920: f01b f87e bl 25a20 - a924: e7cb b.n a8be + a8b4: 2101 movs r1, #1 + a8b6: 7823 ldrb r3, [r4, #0] + a8b8: 2200 movs r2, #0 + a8ba: 4650 mov r0, sl + a8bc: 9101 str r1, [sp, #4] + a8be: 7861 ldrb r1, [r4, #1] + a8c0: 9100 str r1, [sp, #0] + a8c2: 4611 mov r1, r2 + a8c4: f01b f922 bl 25b0c + a8c8: e7cb b.n a862 if(len <= 10 && spaceIndex < 0){ - a926: f1be 0f0a cmp.w lr, #10 - a92a: d801 bhi.n a930 - a92c: 2a00 cmp r2, #0 - a92e: dbe3 blt.n a8f8 + a8ca: f1be 0f0a cmp.w lr, #10 + a8ce: d801 bhi.n a8d4 + a8d0: 2a00 cmp r2, #0 + a8d2: dbe3 blt.n a89c } else if(len > 7 && len <= 10 && spaceIndex >= 0){ - a930: f1ab 0308 sub.w r3, fp, #8 - a934: 2b02 cmp r3, #2 - a936: d801 bhi.n a93c - a938: 1c53 adds r3, r2, #1 - a93a: d1a9 bne.n a890 + a8d4: f1ab 0308 sub.w r3, fp, #8 + a8d8: 2b02 cmp r3, #2 + a8da: d801 bhi.n a8e0 + a8dc: 1c53 adds r3, r2, #1 + a8de: d1a9 bne.n a834 } else if(len > 10 && len <= 12){ - a93c: f1ab 030b sub.w r3, fp, #11 + a8e0: f1ab 030b sub.w r3, fp, #11 } else if(len > 12){ - a940: 2b01 cmp r3, #1 - a942: d9d9 bls.n a8f8 - a944: f1be 0f0c cmp.w lr, #12 - a948: d9d6 bls.n a8f8 + a8e4: 2b01 cmp r3, #1 + a8e6: d9d9 bls.n a89c + a8e8: f1be 0f0c cmp.w lr, #12 + a8ec: d9d6 bls.n a89c lines = spaceIndex > 0 ? 2 : 3; - a94a: 2a00 cmp r2, #0 - a94c: dca0 bgt.n a890 + a8ee: 2a00 cmp r2, #0 + a8f0: dca0 bgt.n a834 renderLine(str, 0, 2, 0, len/2, d.highlight); - a94e: ea4f 055b mov.w r5, fp, lsr #1 - a952: 2200 movs r2, #0 - a954: 4649 mov r1, r9 - a956: 4620 mov r0, r4 - a958: 9200 str r2, [sp, #0] - a95a: 2302 movs r3, #2 - a95c: 9501 str r5, [sp, #4] - a95e: f7ff fea5 bl a6ac + a8f2: ea4f 055b mov.w r5, fp, lsr #1 + a8f6: 2200 movs r2, #0 + a8f8: 4649 mov r1, r9 + a8fa: 4620 mov r0, r4 + a8fc: 9200 str r2, [sp, #0] + a8fe: 2302 movs r3, #2 + a900: 9501 str r5, [sp, #4] + a902: f7ff fea5 bl a650 renderLine(str, 1, 2, len/2, len, d.highlight); - a962: 4649 mov r1, r9 - a964: 2302 movs r3, #2 - a966: 2201 movs r2, #1 - a968: 4620 mov r0, r4 - a96a: f8cd b004 str.w fp, [sp, #4] - a96e: 9500 str r5, [sp, #0] - a970: f7ff fe9c bl a6ac - a974: e7c9 b.n a90a - } - a976: 466a mov r2, sp + a906: 4649 mov r1, r9 + a908: 2302 movs r3, #2 + a90a: 2201 movs r2, #1 + a90c: 4620 mov r0, r4 + a90e: f8cd b004 str.w fp, [sp, #4] + a912: 9500 str r5, [sp, #0] + a914: f7ff fe9c bl a650 + a918: e7c9 b.n a8ae + } + a91a: 466a mov r2, sp if(len == 0){ - a978: b283 uxth r3, r0 + a91c: b283 uxth r3, r0 } - a97a: ee08 2a10 vmov s16, r2 + a91e: ee08 2a10 vmov s16, r2 if(len == 0){ - a97e: 2b00 cmp r3, #0 - a980: d0ba beq.n a8f8 + a922: 2b00 cmp r3, #0 + a924: d0ba beq.n a89c char buff[len+1] = ""; - a982: 461d mov r5, r3 - a984: 3308 adds r3, #8 - a986: 2100 movs r1, #0 - a988: 08db lsrs r3, r3, #3 - a98a: eba2 03c3 sub.w r3, r2, r3, lsl #3 - a98e: 469d mov sp, r3 - a990: ab02 add r3, sp, #8 - a992: f10d 0009 add.w r0, sp, #9 - a996: f88d 1008 strb.w r1, [sp, #8] - a99a: b1bd cbz r5, a9cc - a99c: 462a mov r2, r5 - a99e: 607b str r3, [r7, #4] - a9a0: f023 fd74 bl 2e48c - a9a4: 2100 movs r1, #0 - a9a6: 687b ldr r3, [r7, #4] - a9a8: 4608 mov r0, r1 - a9aa: 460a mov r2, r1 + a926: 461d mov r5, r3 + a928: 3308 adds r3, #8 + a92a: 2100 movs r1, #0 + a92c: 08db lsrs r3, r3, #3 + a92e: eba2 03c3 sub.w r3, r2, r3, lsl #3 + a932: 469d mov sp, r3 + a934: ab02 add r3, sp, #8 + a936: f10d 0009 add.w r0, sp, #9 + a93a: f88d 1008 strb.w r1, [sp, #8] + a93e: b1bd cbz r5, a970 + a940: 462a mov r2, r5 + a942: 607b str r3, [r7, #4] + a944: f023 fe16 bl 2e574 + a948: 2100 movs r1, #0 + a94a: 687b ldr r3, [r7, #4] + a94c: 4608 mov r0, r1 + a94e: 460a mov r2, r1 if(str[i] == 32){ - a9ac: f819 1002 ldrb.w r1, [r9, r2] + a950: f819 1002 ldrb.w r1, [r9, r2] for(uint8_t i = 0, e = 0;i + a962: d003 beq.n a96c } else if(str[i] == 0){ - a9c0: b121 cbz r1, a9cc + a964: b121 cbz r1, a970 buff[e++] = str[i]; - a9c2: 5419 strb r1, [r3, r0] - a9c4: fa5f f08e uxtb.w r0, lr + a966: 5419 strb r1, [r3, r0] + a968: fa5f f08e uxtb.w r0, lr for(uint8_t i = 0, e = 0;i + a96c: 4295 cmp r5, r2 + a96e: dcef bgt.n a950 strcpy(str, buff); - a9cc: 4619 mov r1, r3 - a9ce: 4648 mov r0, r9 - a9d0: f023 ffd4 bl 2e97c - a9d4: ee18 3a10 vmov r3, s16 - a9d8: 469d mov sp, r3 + a970: 4619 mov r1, r3 + a972: 4648 mov r0, r9 + a974: f024 f872 bl 2ea5c + a978: ee18 3a10 vmov r3, s16 + a97c: 469d mov sp, r3 } else if(lines==2){ - a9da: e78d b.n a8f8 + a97e: e78d b.n a89c -0000a9dc : +0000a980 : void renderBlock(BMCDataContainer d){ - a9dc: b084 sub sp, #16 - a9de: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - a9e2: f5ad 7d19 sub.w sp, sp, #612 ; 0x264 - a9e6: aca3 add r4, sp, #652 ; 0x28c - a9e8: 902f str r0, [sp, #188] ; 0xbc - a9ea: e884 000e stmia.w r4, {r1, r2, r3} + a980: b084 sub sp, #16 + a982: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + a986: f5ad 7d19 sub.w sp, sp, #612 ; 0x264 + a98a: aca3 add r4, sp, #652 ; 0x28c + a98c: 902f str r0, [sp, #188] ; 0xbc + a98e: e884 000e stmia.w r4, {r1, r2, r3} return bitRead(settings, 4) && additionalCheck; - a9ee: f89d 528f ldrb.w r5, [sp, #655] ; 0x28f - a9f2: 06ee lsls r6, r5, #27 - a9f4: d504 bpl.n aa00 + a992: f89d 528f ldrb.w r5, [sp, #655] ; 0x28f + a996: 06ee lsls r6, r5, #27 + a998: d504 bpl.n a9a4 if(d.useMeter() && d.allowMeter){ - a9f6: f89d 32a3 ldrb.w r3, [sp, #675] ; 0x2a3 - a9fa: 2b00 cmp r3, #0 - a9fc: f040 80eb bne.w abd6 + a99a: f89d 32a3 ldrb.w r3, [sp, #675] ; 0x2a3 + a99e: 2b00 cmp r3, #0 + a9a0: f040 80eb bne.w ab7a if(d.useSelected()){ - aa00: 0768 lsls r0, r5, #29 + a9a4: 0768 lsls r0, r5, #29 return bitRead(settings, 2); - aa02: f3c5 0780 ubfx r7, r5, #2, #1 - aa06: d536 bpl.n aa76 + a9a6: f3c5 0780 ubfx r7, r5, #2, #1 + a9aa: d536 bpl.n aa1a d.highlight = false; - aa08: 2100 movs r1, #0 - aa0a: f50d 79de add.w r9, sp, #444 ; 0x1bc + a9ac: 2100 movs r1, #0 + a9ae: f50d 79de add.w r9, sp, #444 ; 0x1bc char outStr[40] = ""; - aa0e: 2224 movs r2, #36 ; 0x24 - aa10: a833 add r0, sp, #204 ; 0xcc - aa12: 9132 str r1, [sp, #200] ; 0xc8 - aa14: ae32 add r6, sp, #200 ; 0xc8 + a9b2: 2224 movs r2, #36 ; 0x24 + a9b4: a833 add r0, sp, #204 ; 0xcc + a9b6: 9132 str r1, [sp, #200] ; 0xc8 + a9b8: ae32 add r6, sp, #200 ; 0xc8 d.highlight = false; - aa16: f88d 12a0 strb.w r1, [sp, #672] ; 0x2a0 + a9ba: f88d 12a0 strb.w r1, [sp, #672] ; 0x2a0 char outStr[40] = ""; - aa1a: f023 fd37 bl 2e48c + a9be: f023 fdd9 bl 2e574 d.crc = generateCrc(d); - aa1e: 22a1 movs r2, #161 ; 0xa1 - aa20: 4621 mov r1, r4 - aa22: 4648 mov r0, r9 - aa24: f3c5 08c0 ubfx r8, r5, #3, #1 - aa28: f01f fe6e bl 2a708 + a9c2: 22a1 movs r2, #161 ; 0xa1 + a9c4: 4621 mov r1, r4 + a9c6: 4648 mov r0, r9 + a9c8: f3c5 08c0 ubfx r8, r5, #3, #1 + a9cc: f01f ff10 bl 2a7f0 uint8_t len = strlen(str); - aa2c: f50d 70ff add.w r0, sp, #510 ; 0x1fe - aa30: f024 f886 bl 2eb40 - aa34: 972e str r7, [sp, #184] ; 0xb8 + a9d0: f50d 70ff add.w r0, sp, #510 ; 0x1fe + a9d4: f024 f934 bl 2ec40 + a9d8: 972e str r7, [sp, #184] ; 0xb8 if(len==0){ - aa36: 2800 cmp r0, #0 - aa38: f000 818b beq.w ad52 + a9da: 2800 cmp r0, #0 + a9dc: f000 818b beq.w acf6 uint8_t crc = 0; - aa3c: 2200 movs r2, #0 + a9e0: 2200 movs r2, #0 c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - aa3e: f89d b1c1 ldrb.w fp, [sp, #449] ; 0x1c1 + a9e2: f89d b1c1 ldrb.w fp, [sp, #449] ; 0x1c1 uint8_t len = strlen(str); - aa42: b2c3 uxtb r3, r0 - aa44: f20d 1efd addw lr, sp, #509 ; 0x1fd + a9e6: b2c3 uxtb r3, r0 + a9e8: f20d 1efd addw lr, sp, #509 ; 0x1fd for(uint8_t i = 0 ; i < len ; i++){ - aa48: 4694 mov ip, r2 + a9ec: 4694 mov ip, r2 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - aa4a: eb0b 0a0c add.w sl, fp, ip - aa4e: f81e 1f01 ldrb.w r1, [lr, #1]! + a9ee: eb0b 0a0c add.w sl, fp, ip + a9f2: f81e 1f01 ldrb.w r1, [lr, #1]! for(uint8_t i = 0 ; i < len ; i++){ - aa52: f10c 0c01 add.w ip, ip, #1 + a9f6: f10c 0c01 add.w ip, ip, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - aa56: 4451 add r1, sl + a9fa: 4451 add r1, sl for(uint8_t i = 0 ; i < len ; i++){ - aa58: fa5f fc8c uxtb.w ip, ip + a9fc: fa5f fc8c uxtb.w ip, ip crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - aa5c: 404a eors r2, r1 + aa00: 404a eors r2, r1 for(uint8_t i = 0 ; i < len ; i++){ - aa5e: 4563 cmp r3, ip + aa02: 4563 cmp r3, ip crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - aa60: b2d2 uxtb r2, r2 + aa04: b2d2 uxtb r2, r2 for(uint8_t i = 0 ; i < len ; i++){ - aa62: d8f2 bhi.n aa4a + aa06: d8f2 bhi.n a9ee c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - aa64: ea83 0c02 eor.w ip, r3, r2 - aa68: f8bd 31c8 ldrh.w r3, [sp, #456] ; 0x1c8 - aa6c: fb00 cc03 mla ip, r0, r3, ip - aa70: fa5f fc8c uxtb.w ip, ip - aa74: e032 b.n aadc + aa08: ea83 0c02 eor.w ip, r3, r2 + aa0c: f8bd 31c8 ldrh.w r3, [sp, #456] ; 0x1c8 + aa10: fb00 cc03 mla ip, r0, r3, ip + aa14: fa5f fc8c uxtb.w ip, ip + aa18: e032 b.n aa80 char outStr[40] = ""; - aa76: f50d 79de add.w r9, sp, #444 ; 0x1bc - aa7a: 2224 movs r2, #36 ; 0x24 - aa7c: 4639 mov r1, r7 - aa7e: a833 add r0, sp, #204 ; 0xcc - aa80: 9732 str r7, [sp, #200] ; 0xc8 - aa82: ae32 add r6, sp, #200 ; 0xc8 - aa84: f023 fd02 bl 2e48c + aa1a: f50d 79de add.w r9, sp, #444 ; 0x1bc + aa1e: 2224 movs r2, #36 ; 0x24 + aa20: 4639 mov r1, r7 + aa22: a833 add r0, sp, #204 ; 0xcc + aa24: 9732 str r7, [sp, #200] ; 0xc8 + aa26: ae32 add r6, sp, #200 ; 0xc8 + aa28: f023 fda4 bl 2e574 d.crc = generateCrc(d); - aa88: 22a1 movs r2, #161 ; 0xa1 - aa8a: 4621 mov r1, r4 - aa8c: 4648 mov r0, r9 - aa8e: f01f fe3b bl 2a708 + aa2c: 22a1 movs r2, #161 ; 0xa1 + aa2e: 4621 mov r1, r4 + aa30: 4648 mov r0, r9 + aa32: f01f fedd bl 2a7f0 uint8_t len = strlen(str); - aa92: f20d 10d5 addw r0, sp, #469 ; 0x1d5 - aa96: f024 f853 bl 2eb40 - aa9a: f3c5 08c0 ubfx r8, r5, #3, #1 - aa9e: 972e str r7, [sp, #184] ; 0xb8 + aa36: f20d 10d5 addw r0, sp, #469 ; 0x1d5 + aa3a: f024 f901 bl 2ec40 + aa3e: f3c5 08c0 ubfx r8, r5, #3, #1 + aa42: 972e str r7, [sp, #184] ; 0xb8 if(len==0){ - aaa0: 2800 cmp r0, #0 - aaa2: f000 813b beq.w ad1c + aa44: 2800 cmp r0, #0 + aa46: f000 813b beq.w acc0 uint8_t crc = 0; - aaa6: 2300 movs r3, #0 + aa4a: 2300 movs r3, #0 c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - aaa8: f89d b1c1 ldrb.w fp, [sp, #449] ; 0x1c1 + aa4c: f89d b1c1 ldrb.w fp, [sp, #449] ; 0x1c1 uint8_t len = strlen(str); - aaac: fa5f fc80 uxtb.w ip, r0 - aab0: f50d 7eea add.w lr, sp, #468 ; 0x1d4 + aa50: fa5f fc80 uxtb.w ip, r0 + aa54: f50d 7eea add.w lr, sp, #468 ; 0x1d4 for(uint8_t i = 0 ; i < len ; i++){ - aab4: 4619 mov r1, r3 + aa58: 4619 mov r1, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - aab6: eb0b 0a01 add.w sl, fp, r1 - aaba: f81e 2f01 ldrb.w r2, [lr, #1]! + aa5a: eb0b 0a01 add.w sl, fp, r1 + aa5e: f81e 2f01 ldrb.w r2, [lr, #1]! for(uint8_t i = 0 ; i < len ; i++){ - aabe: 3101 adds r1, #1 + aa62: 3101 adds r1, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - aac0: 4452 add r2, sl + aa64: 4452 add r2, sl for(uint8_t i = 0 ; i < len ; i++){ - aac2: b2c9 uxtb r1, r1 + aa66: b2c9 uxtb r1, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - aac4: 4053 eors r3, r2 + aa68: 4053 eors r3, r2 for(uint8_t i = 0 ; i < len ; i++){ - aac6: 458c cmp ip, r1 + aa6a: 458c cmp ip, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - aac8: b2db uxtb r3, r3 + aa6c: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < len ; i++){ - aaca: d8f4 bhi.n aab6 + aa6e: d8f4 bhi.n aa5a c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - aacc: ea8c 0c03 eor.w ip, ip, r3 - aad0: f8bd 31c6 ldrh.w r3, [sp, #454] ; 0x1c6 - aad4: fb00 cc03 mla ip, r0, r3, ip - aad8: fa5f fc8c uxtb.w ip, ip + aa70: ea8c 0c03 eor.w ip, ip, r3 + aa74: f8bd 31c6 ldrh.w r3, [sp, #454] ; 0x1c6 + aa78: fb00 cc03 mla ip, r0, r3, ip + aa7c: fa5f fc8c uxtb.w ip, ip c += d.prependValue; - aadc: f89d 21c3 ldrb.w r2, [sp, #451] ; 0x1c3 - aae0: 4621 mov r1, r4 - aae2: f89d 31c2 ldrb.w r3, [sp, #450] ; 0x1c2 - aae6: 4648 mov r0, r9 - aae8: 4413 add r3, r2 - aaea: f89d 21c4 ldrb.w r2, [sp, #452] ; 0x1c4 - aaee: 4413 add r3, r2 - aaf0: f89d 21c5 ldrb.w r2, [sp, #453] ; 0x1c5 - aaf4: 4413 add r3, r2 - aaf6: f89d 21d4 ldrb.w r2, [sp, #468] ; 0x1d4 - aafa: 4413 add r3, r2 + aa80: f89d 21c3 ldrb.w r2, [sp, #451] ; 0x1c3 + aa84: 4621 mov r1, r4 + aa86: f89d 31c2 ldrb.w r3, [sp, #450] ; 0x1c2 + aa8a: 4648 mov r0, r9 + aa8c: 4413 add r3, r2 + aa8e: f89d 21c4 ldrb.w r2, [sp, #452] ; 0x1c4 + aa92: 4413 add r3, r2 + aa94: f89d 21c5 ldrb.w r2, [sp, #453] ; 0x1c5 + aa98: 4413 add r3, r2 + aa9a: f89d 21d4 ldrb.w r2, [sp, #468] ; 0x1d4 + aa9e: 4413 add r3, r2 c += (d.highlight*2); - aafc: f89d 21d0 ldrb.w r2, [sp, #464] ; 0x1d0 + aaa0: f89d 21d0 ldrb.w r2, [sp, #464] ; 0x1d0 c += d.prependValue; - ab00: eb03 0342 add.w r3, r3, r2, lsl #1 - ab04: 22a1 movs r2, #161 ; 0xa1 - ab06: eb0c 0403 add.w r4, ip, r3 + aaa4: eb03 0342 add.w r3, r3, r2, lsl #1 + aaa8: 22a1 movs r2, #161 ; 0xa1 + aaaa: eb0c 0403 add.w r4, ip, r3 c ^= d.colors; - ab0a: f89d 31c0 ldrb.w r3, [sp, #448] ; 0x1c0 + aaae: f89d 31c0 ldrb.w r3, [sp, #448] ; 0x1c0 c += d.prependValue; - ab0e: b2e4 uxtb r4, r4 + aab2: b2e4 uxtb r4, r4 c ^= d.colors; - ab10: 406b eors r3, r5 - ab12: 405c eors r4, r3 + aab4: 406b eors r3, r5 + aab6: 405c eors r4, r3 d.crc = generateCrc(d); - ab14: f88d 428e strb.w r4, [sp, #654] ; 0x28e + aab8: f88d 428e strb.w r4, [sp, #654] ; 0x28e handleData(d, outStr); - ab18: f01f fdf6 bl 2a708 + aabc: f01f fe98 bl 2a7f0 return !bitRead(settings, 2) && bitRead(settings, 3); - ab1c: 9b2e ldr r3, [sp, #184] ; 0xb8 - ab1e: b9bb cbnz r3, ab50 - ab20: f1b8 0f00 cmp.w r8, #0 - ab24: d014 beq.n ab50 + aac0: 9b2e ldr r3, [sp, #184] ; 0xb8 + aac2: b9bb cbnz r3, aaf4 + aac4: f1b8 0f00 cmp.w r8, #0 + aac8: d014 beq.n aaf4 strcpy(t_str, d.str); - ab26: f20d 11d5 addw r1, sp, #469 ; 0x1d5 - ab2a: 4630 mov r0, r6 - ab2c: f023 ff26 bl 2e97c + aaca: f20d 11d5 addw r1, sp, #469 ; 0x1d5 + aace: 4630 mov r0, r6 + aad0: f023 ffc4 bl 2ea5c strcpy(d.str, outStr); - ab30: 4631 mov r1, r6 - ab32: f20d 20a5 addw r0, sp, #677 ; 0x2a5 - ab36: f023 ff21 bl 2e97c + aad4: 4631 mov r1, r6 + aad6: f20d 20a5 addw r0, sp, #677 ; 0x2a5 + aada: f023 ffbf bl 2ea5c if(d.isOled()){ - ab3a: f89d 329f ldrb.w r3, [sp, #671] ; 0x29f - ab3e: 2b16 cmp r3, #22 - ab40: f000 80ee beq.w ad20 -} - ab44: f50d 7d19 add.w sp, sp, #612 ; 0x264 - ab48: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - ab4c: b004 add sp, #16 - ab4e: 4770 bx lr + aade: f89d 329f ldrb.w r3, [sp, #671] ; 0x29f + aae2: 2b16 cmp r3, #22 + aae4: f000 80ee beq.w acc4 +} + aae8: f50d 7d19 add.w sp, sp, #612 ; 0x264 + aaec: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + aaf0: b004 add sp, #16 + aaf2: 4770 bx lr char str[40] = ""; - ab50: 2100 movs r1, #0 - ab52: 2224 movs r2, #36 ; 0x24 - ab54: a83d add r0, sp, #244 ; 0xf4 - ab56: 913c str r1, [sp, #240] ; 0xf0 - ab58: f023 fc98 bl 2e48c + aaf4: 2100 movs r1, #0 + aaf6: 2224 movs r2, #36 ; 0x24 + aaf8: a83d add r0, sp, #244 ; 0xf4 + aafa: 913c str r1, [sp, #240] ; 0xf0 + aafc: f023 fd3a bl 2e574 if(!d.useOffset){ - ab5c: f89d 31d1 ldrb.w r3, [sp, #465] ; 0x1d1 - ab60: b38b cbz r3, abc6 + ab00: f89d 31d1 ldrb.w r3, [sp, #465] ; 0x1d1 + ab04: b38b cbz r3, ab6a value = d.valueSelected + d.offset; - ab62: f89d 31ce ldrb.w r3, [sp, #462] ; 0x1ce + ab06: f89d 31ce ldrb.w r3, [sp, #462] ; 0x1ce if(d.useSelected()){ - ab66: b327 cbz r7, abb2 + ab0a: b327 cbz r7, ab56 value = d.valueSelected + d.offset; - ab68: f8bd 21c8 ldrh.w r2, [sp, #456] ; 0x1c8 + ab0c: f8bd 21c8 ldrh.w r2, [sp, #456] ; 0x1c8 strcpy(str, d.strSelected); - ab6c: f50d 71ff add.w r1, sp, #510 ; 0x1fe - ab70: a83c add r0, sp, #240 ; 0xf0 + ab10: f50d 71ff add.w r1, sp, #510 ; 0x1fe + ab14: a83c add r0, sp, #240 ; 0xf0 value = d.valueSelected + d.offset; - ab72: 4413 add r3, r2 - ab74: b29f uxth r7, r3 + ab16: 4413 add r3, r2 + ab18: b29f uxth r7, r3 strcpy(str, d.strSelected); - ab76: f023 ff01 bl 2e97c + ab1a: f023 ff9f bl 2ea5c if(d.useName()){ - ab7a: f1b8 0f00 cmp.w r8, #0 - ab7e: d00f beq.n aba0 + ab1e: f1b8 0f00 cmp.w r8, #0 + ab22: d00f beq.n ab44 int len = 40-(d.digits+3); - ab80: f89d 8258 ldrb.w r8, [sp, #600] ; 0x258 + ab24: f89d 8258 ldrb.w r8, [sp, #600] ; 0x258 if(d.prependValue && len > 0){ - ab84: f89d 31d4 ldrb.w r3, [sp, #468] ; 0x1d4 + ab28: f89d 31d4 ldrb.w r3, [sp, #468] ; 0x1d4 int len = 40-(d.digits+3); - ab88: f1c8 0925 rsb r9, r8, #37 ; 0x25 + ab2c: f1c8 0925 rsb r9, r8, #37 ; 0x25 if(d.prependValue && len > 0){ - ab8c: b11b cbz r3, ab96 - ab8e: f1b9 0f00 cmp.w r9, #0 - ab92: f300 80a1 bgt.w acd8 + ab30: b11b cbz r3, ab3a + ab32: f1b9 0f00 cmp.w r9, #0 + ab36: f300 80a1 bgt.w ac7c strcpy(t_str, str); - ab96: a93c add r1, sp, #240 ; 0xf0 - ab98: 4630 mov r0, r6 - ab9a: f023 feef bl 2e97c - ab9e: e7c7 b.n ab30 + ab3a: a93c add r1, sp, #240 ; 0xf0 + ab3c: 4630 mov r0, r6 + ab3e: f023 ff8d bl 2ea5c + ab42: e7c7 b.n aad4 if(strlen(d.format)>0){ - aba0: f89d 3248 ldrb.w r3, [sp, #584] ; 0x248 + ab44: f89d 3248 ldrb.w r3, [sp, #584] ; 0x248 sprintf(t_str, d.format, value); - aba4: 463a mov r2, r7 + ab48: 463a mov r2, r7 if(strlen(d.format)>0){ - aba6: b18b cbz r3, abcc + ab4a: b18b cbz r3, ab70 sprintf(t_str, d.format, value); - aba8: a992 add r1, sp, #584 ; 0x248 - abaa: 4630 mov r0, r6 - abac: f023 faee bl 2e18c - abb0: e7be b.n ab30 + ab4c: a992 add r1, sp, #584 ; 0x248 + ab4e: 4630 mov r0, r6 + ab50: f023 fb90 bl 2e274 + ab54: e7be b.n aad4 value = d.value + d.offset; - abb2: f8bd 21c6 ldrh.w r2, [sp, #454] ; 0x1c6 + ab56: f8bd 21c6 ldrh.w r2, [sp, #454] ; 0x1c6 strcpy(str, d.str); - abb6: f20d 11d5 addw r1, sp, #469 ; 0x1d5 - abba: a83c add r0, sp, #240 ; 0xf0 + ab5a: f20d 11d5 addw r1, sp, #469 ; 0x1d5 + ab5e: a83c add r0, sp, #240 ; 0xf0 value = d.value + d.offset; - abbc: 4413 add r3, r2 - abbe: b29f uxth r7, r3 + ab60: 4413 add r3, r2 + ab62: b29f uxth r7, r3 strcpy(str, d.str); - abc0: f023 fedc bl 2e97c - abc4: e7d9 b.n ab7a + ab64: f023 ff7a bl 2ea5c + ab68: e7d9 b.n ab1e d.offset = 0; - abc6: f88d 31ce strb.w r3, [sp, #462] ; 0x1ce - abca: e7cc b.n ab66 + ab6a: f88d 31ce strb.w r3, [sp, #462] ; 0x1ce + ab6e: e7cc b.n ab0a sprintf(t_str, "%u", value); - abcc: 4968 ldr r1, [pc, #416] ; (ad70 ) - abce: 4630 mov r0, r6 - abd0: f023 fadc bl 2e18c - abd4: e7ac b.n ab30 + ab70: 4968 ldr r1, [pc, #416] ; (ad14 ) + ab72: 4630 mov r0, r6 + ab74: f023 fb7e bl 2e274 + ab78: e7ac b.n aad4 d.value = d.valueSelected; - abd6: f8bd 5298 ldrh.w r5, [sp, #664] ; 0x298 - abda: 4621 mov r1, r4 - abdc: 22a1 movs r2, #161 ; 0xa1 - abde: a846 add r0, sp, #280 ; 0x118 - abe0: f8ad 5296 strh.w r5, [sp, #662] ; 0x296 + ab7a: f8bd 5298 ldrh.w r5, [sp, #664] ; 0x298 + ab7e: 4621 mov r1, r4 + ab80: 22a1 movs r2, #161 ; 0xa1 + ab82: a846 add r0, sp, #280 ; 0x118 + ab84: f8ad 5296 strh.w r5, [sp, #662] ; 0x296 renderSlider(d); - abe4: f01f fd90 bl 2a708 - abe8: f8bd 329c ldrh.w r3, [sp, #668] ; 0x29c + ab88: f01f fe32 bl 2a7f0 + ab8c: f8bd 329c ldrh.w r3, [sp, #668] ; 0x29c char crcStr[32] = ""; - abec: 2700 movs r7, #0 + ab90: 2700 movs r7, #0 sprintf(crcStr, "sli%u/%u/%u", d.value, d.min, d.max); - abee: 462a mov r2, r5 - abf0: 4960 ldr r1, [pc, #384] ; (ad74 ) - abf2: 9300 str r3, [sp, #0] - abf4: a83c add r0, sp, #240 ; 0xf0 - abf6: f8bd 329a ldrh.w r3, [sp, #666] ; 0x29a - abfa: f8bd 528c ldrh.w r5, [sp, #652] ; 0x28c - abfe: f89d 4291 ldrb.w r4, [sp, #657] ; 0x291 - ac02: f89d 629f ldrb.w r6, [sp, #671] ; 0x29f + ab92: 462a mov r2, r5 + ab94: 4960 ldr r1, [pc, #384] ; (ad18 ) + ab96: 9300 str r3, [sp, #0] + ab98: a83c add r0, sp, #240 ; 0xf0 + ab9a: f8bd 329a ldrh.w r3, [sp, #666] ; 0x29a + ab9e: f8bd 528c ldrh.w r5, [sp, #652] ; 0x28c + aba2: f89d 4291 ldrb.w r4, [sp, #657] ; 0x291 + aba6: f89d 629f ldrb.w r6, [sp, #671] ; 0x29f char crcStr[32] = ""; - ac06: e9cd 773c strd r7, r7, [sp, #240] ; 0xf0 - ac0a: e9cd 773e strd r7, r7, [sp, #248] ; 0xf8 - ac0e: e9cd 7740 strd r7, r7, [sp, #256] ; 0x100 - ac12: e9cd 7742 strd r7, r7, [sp, #264] ; 0x108 + abaa: e9cd 773c strd r7, r7, [sp, #240] ; 0xf0 + abae: e9cd 773e strd r7, r7, [sp, #248] ; 0xf8 + abb2: e9cd 7740 strd r7, r7, [sp, #256] ; 0x100 + abb6: e9cd 7742 strd r7, r7, [sp, #264] ; 0x108 sprintf(crcStr, "sli%u/%u/%u", d.value, d.min, d.max); - ac16: f023 fab9 bl 2e18c + abba: f023 fb5b bl 2e274 uint8_t len = strlen(str); - ac1a: a83c add r0, sp, #240 ; 0xf0 - ac1c: f023 ff90 bl 2eb40 + abbe: a83c add r0, sp, #240 ; 0xf0 + abc0: f024 f83e bl 2ec40 if(len==0){ - ac20: 2800 cmp r0, #0 - ac22: f000 8098 beq.w ad56 + abc4: 2800 cmp r0, #0 + abc6: f000 8098 beq.w acfa uint8_t crc = 0; - ac26: 463b mov r3, r7 + abca: 463b mov r3, r7 uint8_t len = strlen(str); - ac28: b2c7 uxtb r7, r0 - ac2a: a83c add r0, sp, #240 ; 0xf0 + abcc: b2c7 uxtb r7, r0 + abce: a83c add r0, sp, #240 ; 0xf0 for(uint8_t i = 0 ; i < len ; i++){ - ac2c: 4619 mov r1, r3 + abd0: 4619 mov r1, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - ac2e: eb04 0c01 add.w ip, r4, r1 - ac32: f810 2b01 ldrb.w r2, [r0], #1 + abd2: eb04 0c01 add.w ip, r4, r1 + abd6: f810 2b01 ldrb.w r2, [r0], #1 for(uint8_t i = 0 ; i < len ; i++){ - ac36: 3101 adds r1, #1 + abda: 3101 adds r1, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - ac38: 4462 add r2, ip + abdc: 4462 add r2, ip for(uint8_t i = 0 ; i < len ; i++){ - ac3a: b2c9 uxtb r1, r1 + abde: b2c9 uxtb r1, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - ac3c: 4053 eors r3, r2 + abe0: 4053 eors r3, r2 for(uint8_t i = 0 ; i < len ; i++){ - ac3e: 428f cmp r7, r1 + abe2: 428f cmp r7, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - ac40: b2db uxtb r3, r3 + abe4: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < len ; i++){ - ac42: d8f4 bhi.n ac2e + abe6: d8f4 bhi.n abd2 crc ^= len; - ac44: 405f eors r7, r3 + abe8: 405f eors r7, r3 if(d.isOled()){ - ac46: 2e16 cmp r6, #22 - ac48: f47f af7c bne.w ab44 + abea: 2e16 cmp r6, #22 + abec: f47f af7c bne.w aae8 __oledMuxSelect(d.index); - ac4c: b2e8 uxtb r0, r5 - ac4e: f7ff fb67 bl a320 + abf0: b2e8 uxtb r0, r5 + abf2: f7ff fb67 bl a2c4 mainHandler.renderSliderOled(oled[d.index], d); - ac52: 22a1 movs r2, #161 ; 0xa1 - ac54: a946 add r1, sp, #280 ; 0x118 - ac56: a86f add r0, sp, #444 ; 0x1bc + abf6: 22a1 movs r2, #161 ; 0xa1 + abf8: a946 add r1, sp, #280 ; 0x118 + abfa: a86f add r0, sp, #444 ; 0x1bc return crc == t_crc; - ac58: ebc5 05c5 rsb r5, r5, r5, lsl #3 - ac5c: f88d 612b strb.w r6, [sp, #299] ; 0x12b - ac60: f88d 711a strb.w r7, [sp, #282] ; 0x11a - ac64: f01f fd50 bl 2a708 - ac68: 9a2f ldr r2, [sp, #188] ; 0xbc - ac6a: eb02 06c5 add.w r6, r2, r5, lsl #3 - ac6e: 00ed lsls r5, r5, #3 + abfc: ebc5 05c5 rsb r5, r5, r5, lsl #3 + ac00: f88d 612b strb.w r6, [sp, #299] ; 0x12b + ac04: f88d 711a strb.w r7, [sp, #282] ; 0x11a + ac08: f01f fdf2 bl 2a7f0 + ac0c: 9a2f ldr r2, [sp, #188] ; 0xbc + ac0e: eb02 06c5 add.w r6, r2, r5, lsl #3 + ac12: 00ed lsls r5, r5, #3 if(block.isCrc(d.crc)){ - ac70: f896 3206 ldrb.w r3, [r6, #518] ; 0x206 - ac74: 42bb cmp r3, r7 - ac76: f43f af65 beq.w ab44 + ac14: f896 3206 ldrb.w r3, [r6, #518] ; 0x206 + ac18: 42bb cmp r3, r7 + ac1a: f43f af65 beq.w aae8 uint16_t meterValue = block.getMeterValue(); - ac7a: f8b6 320c ldrh.w r3, [r6, #524] ; 0x20c + ac1e: f8b6 320c ldrh.w r3, [r6, #524] ; 0x20c BMC_SSD1306& display = block.display; - ac7e: f505 7504 add.w r5, r5, #528 ; 0x210 + ac22: f505 7504 add.w r5, r5, #528 ; 0x210 crc = t_crc; - ac82: f886 7206 strb.w r7, [r6, #518] ; 0x206 + ac26: f886 7206 strb.w r7, [r6, #518] ; 0x206 renderSlider(display, meterValue, meterPixelValue, d, t, t_reset); - ac86: 2101 movs r1, #1 + ac2a: 2101 movs r1, #1 uint16_t meterValue = block.getMeterValue(); - ac88: f8ad 30c6 strh.w r3, [sp, #198] ; 0xc6 + ac2c: f8ad 30c6 strh.w r3, [sp, #198] ; 0xc6 BMC_SSD1306& display = block.display; - ac8c: 442a add r2, r5 + ac30: 442a add r2, r5 uint16_t meterPixelValue = block.getMeterPixelValue(); - ac8e: f8b6 320a ldrh.w r3, [r6, #522] ; 0x20a + ac32: f8b6 320a ldrh.w r3, [r6, #522] ; 0x20a renderSlider(display, meterValue, meterPixelValue, d, t, t_reset); - ac92: 4668 mov r0, sp + ac36: 4668 mov r0, sp BMC_SSD1306& display = block.display; - ac94: 4615 mov r5, r2 + ac38: 4615 mov r5, r2 renderSlider(display, meterValue, meterPixelValue, d, t, t_reset); - ac96: 229d movs r2, #157 ; 0x9d + ac3a: 229d movs r2, #157 ; 0x9d uint16_t meterPixelValue = block.getMeterPixelValue(); - ac98: f8ad 30c8 strh.w r3, [sp, #200] ; 0xc8 + ac3c: f8ad 30c8 strh.w r3, [sp, #200] ; 0xc8 renderSlider(display, meterValue, meterPixelValue, d, t, t_reset); - ac9c: 2300 movs r3, #0 - ac9e: 932c str r3, [sp, #176] ; 0xb0 - aca0: 9328 str r3, [sp, #160] ; 0xa0 - aca2: 2320 movs r3, #32 - aca4: e9cd 312a strd r3, r1, [sp, #168] ; 0xa8 - aca8: 2380 movs r3, #128 ; 0x80 - acaa: a970 add r1, sp, #448 ; 0x1c0 - acac: 9329 str r3, [sp, #164] ; 0xa4 - acae: f01f fd2b bl 2a708 - acb2: 9b6f ldr r3, [sp, #444] ; 0x1bc - acb4: aa32 add r2, sp, #200 ; 0xc8 - acb6: f10d 01c6 add.w r1, sp, #198 ; 0xc6 - acba: 4628 mov r0, r5 - acbc: f7fc f998 bl 6ff0 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]> + ac40: 2300 movs r3, #0 + ac42: 932c str r3, [sp, #176] ; 0xb0 + ac44: 9328 str r3, [sp, #160] ; 0xa0 + ac46: 2320 movs r3, #32 + ac48: e9cd 312a strd r3, r1, [sp, #168] ; 0xa8 + ac4c: 2380 movs r3, #128 ; 0x80 + ac4e: a970 add r1, sp, #448 ; 0x1c0 + ac50: 9329 str r3, [sp, #164] ; 0xa4 + ac52: f01f fdcd bl 2a7f0 + ac56: 9b6f ldr r3, [sp, #444] ; 0x1bc + ac58: aa32 add r2, sp, #200 ; 0xc8 + ac5a: f10d 01c6 add.w r1, sp, #198 ; 0xc6 + ac5e: 4628 mov r0, r5 + ac60: f7fc f996 bl 6f90 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]> display.display(); - acc0: 4628 mov r0, r5 - acc2: f00d fe73 bl 189ac + ac64: 4628 mov r0, r5 + ac66: f00d ff13 bl 18a90 meterValue = t_value; - acc6: f8bd 20c6 ldrh.w r2, [sp, #198] ; 0xc6 + ac6a: f8bd 20c6 ldrh.w r2, [sp, #198] ; 0xc6 meterPixelValue = t_value; - acca: f8bd 30c8 ldrh.w r3, [sp, #200] ; 0xc8 + ac6e: f8bd 30c8 ldrh.w r3, [sp, #200] ; 0xc8 meterValue = t_value; - acce: f8a6 220c strh.w r2, [r6, #524] ; 0x20c + ac72: f8a6 220c strh.w r2, [r6, #524] ; 0x20c meterPixelValue = t_value; - acd2: f8a6 320a strh.w r3, [r6, #522] ; 0x20a + ac76: f8a6 320a strh.w r3, [r6, #522] ; 0x20a return true; - acd6: e735 b.n ab44 + ac7a: e735 b.n aae8 char buff[40] = ""; - acd8: f50d 7a8c add.w sl, sp, #280 ; 0x118 - acdc: f04f 0b00 mov.w fp, #0 - ace0: 2224 movs r2, #36 ; 0x24 - ace2: a847 add r0, sp, #284 ; 0x11c - ace4: 4659 mov r1, fp - ace6: f8ca b000 str.w fp, [sl] - acea: f023 fbcf bl 2e48c + ac7c: f50d 7a8c add.w sl, sp, #280 ; 0x118 + ac80: f04f 0b00 mov.w fp, #0 + ac84: 2224 movs r2, #36 ; 0x24 + ac86: a847 add r0, sp, #284 ; 0x11c + ac88: 4659 mov r1, fp + ac8a: f8ca b000 str.w fp, [sl] + ac8e: f023 fc71 bl 2e574 strcpy(buff, str); - acee: a93c add r1, sp, #240 ; 0xf0 - acf0: 4650 mov r0, sl - acf2: f023 fe43 bl 2e97c + ac92: a93c add r1, sp, #240 ; 0xf0 + ac94: 4650 mov r0, sl + ac96: f023 fee1 bl 2ea5c if(d.digits == 4){ - acf6: f1b8 0f04 cmp.w r8, #4 + ac9a: f1b8 0f04 cmp.w r8, #4 sprintf(t_str, "%04u: %s", value, buff); - acfa: 4653 mov r3, sl - acfc: 463a mov r2, r7 + ac9e: 4653 mov r3, sl + aca0: 463a mov r2, r7 buff[(uint8_t)len] = 0; - acfe: f80a b009 strb.w fp, [sl, r9] + aca2: f80a b009 strb.w fp, [sl, r9] if(d.digits == 4){ - ad02: d02a beq.n ad5a + aca6: d02a beq.n acfe } else if(d.digits == 3){ - ad04: f1b8 0f03 cmp.w r8, #3 - ad08: d02c beq.n ad64 + aca8: f1b8 0f03 cmp.w r8, #3 + acac: d02c beq.n ad08 } else if(d.digits == 2){ - ad0a: f1b8 0f02 cmp.w r8, #2 + acae: f1b8 0f02 cmp.w r8, #2 sprintf(t_str, "%01u: %s", value, buff); - ad0e: 4630 mov r0, r6 + acb2: 4630 mov r0, r6 sprintf(t_str, "%02u: %s", value, buff); - ad10: bf0c ite eq - ad12: 4919 ldreq r1, [pc, #100] ; (ad78 ) + acb4: bf0c ite eq + acb6: 4919 ldreq r1, [pc, #100] ; (ad1c ) sprintf(t_str, "%01u: %s", value, buff); - ad14: 4919 ldrne r1, [pc, #100] ; (ad7c ) - ad16: f023 fa39 bl 2e18c + acb8: 4919 ldrne r1, [pc, #100] ; (ad20 ) + acba: f023 fadb bl 2e274 } else { - ad1a: e709 b.n ab30 - ad1c: 4684 mov ip, r0 - ad1e: e6d7 b.n aad0 + acbe: e709 b.n aad4 + acc0: 4684 mov ip, r0 + acc2: e6d7 b.n aa74 __oledMuxSelect(d.index); - ad20: f8bd 728c ldrh.w r7, [sp, #652] ; 0x28c - ad24: b2f8 uxtb r0, r7 - ad26: f7ff fafb bl a320 + acc4: f8bd 728c ldrh.w r7, [sp, #652] ; 0x28c + acc8: b2f8 uxtb r0, r7 + acca: f7ff fafb bl a2c4 oled[d.index].print(d, outStr); - ad2a: 9b2f ldr r3, [sp, #188] ; 0xbc - ad2c: ebc7 07c7 rsb r7, r7, r7, lsl #3 - ad30: 462a mov r2, r5 - ad32: 4621 mov r1, r4 - ad34: 9600 str r6, [sp, #0] - ad36: eb03 00c7 add.w r0, r3, r7, lsl #3 - ad3a: f89d 32a0 ldrb.w r3, [sp, #672] ; 0x2a0 - ad3e: f500 7001 add.w r0, r0, #516 ; 0x204 - ad42: f7ff fd63 bl a80c -} - ad46: f50d 7d19 add.w sp, sp, #612 ; 0x264 - ad4a: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - ad4e: b004 add sp, #16 - ad50: 4770 bx lr - ad52: 4684 mov ip, r0 - ad54: e688 b.n aa68 + acce: 9b2f ldr r3, [sp, #188] ; 0xbc + acd0: ebc7 07c7 rsb r7, r7, r7, lsl #3 + acd4: 462a mov r2, r5 + acd6: 4621 mov r1, r4 + acd8: 9600 str r6, [sp, #0] + acda: eb03 00c7 add.w r0, r3, r7, lsl #3 + acde: f89d 32a0 ldrb.w r3, [sp, #672] ; 0x2a0 + ace2: f500 7001 add.w r0, r0, #516 ; 0x204 + ace6: f7ff fd63 bl a7b0 +} + acea: f50d 7d19 add.w sp, sp, #612 ; 0x264 + acee: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + acf2: b004 add sp, #16 + acf4: 4770 bx lr + acf6: 4684 mov ip, r0 + acf8: e688 b.n aa0c return 0; - ad56: 4607 mov r7, r0 - ad58: e775 b.n ac46 + acfa: 4607 mov r7, r0 + acfc: e775 b.n abea sprintf(t_str, "%04u: %s", value, buff); - ad5a: 4909 ldr r1, [pc, #36] ; (ad80 ) - ad5c: 4630 mov r0, r6 - ad5e: f023 fa15 bl 2e18c - ad62: e6e5 b.n ab30 + acfe: 4909 ldr r1, [pc, #36] ; (ad24 ) + ad00: 4630 mov r0, r6 + ad02: f023 fab7 bl 2e274 + ad06: e6e5 b.n aad4 sprintf(t_str, "%03u: %s", value, buff); - ad64: 4907 ldr r1, [pc, #28] ; (ad84 ) - ad66: 4630 mov r0, r6 - ad68: f023 fa10 bl 2e18c - ad6c: e6e0 b.n ab30 - ad6e: bf00 nop - ad70: 20002030 .word 0x20002030 - ad74: 20001574 .word 0x20001574 - ad78: 20001598 .word 0x20001598 - ad7c: 200015a4 .word 0x200015a4 - ad80: 20001580 .word 0x20001580 - ad84: 2000158c .word 0x2000158c - -0000ad88 : + ad08: 4907 ldr r1, [pc, #28] ; (ad28 ) + ad0a: 4630 mov r0, r6 + ad0c: f023 fab2 bl 2e274 + ad10: e6e0 b.n aad4 + ad12: bf00 nop + ad14: 20002030 .word 0x20002030 + ad18: 20001574 .word 0x20001574 + ad1c: 20001598 .word 0x20001598 + ad20: 200015a4 .word 0x200015a4 + ad24: 20001580 .word 0x20001580 + ad28: 2000158c .word 0x2000158c + +0000ad2c : + void renderFasFxBlock(BMCDataContainer d){ + ad2c: b084 sub sp, #16 + ad2e: b5f0 push {r4, r5, r6, r7, lr} + ad30: b0ad sub sp, #180 ; 0xb4 + ad32: 4604 mov r4, r0 + ad34: ad33 add r5, sp, #204 ; 0xcc + ad36: a803 add r0, sp, #12 + ad38: e885 000e stmia.w r5, {r1, r2, r3} + ad3c: 4629 mov r1, r5 + ad3e: 22a1 movs r2, #161 ; 0xa1 + ad40: f01f fd56 bl 2a7f0 + return bitRead(settings, 2); + ad44: f89d 500f ldrb.w r5, [sp, #15] + if(d.useSelected() && !d.useStringOnly()){ + ad48: 076b lsls r3, r5, #29 + ad4a: d520 bpl.n ad8e + uint8_t len = strlen(str); + ad4c: f10d 004e add.w r0, sp, #78 ; 0x4e + ad50: f023 ff76 bl 2ec40 + if(len==0){ + ad54: 2800 cmp r0, #0 + ad56: d078 beq.n ae4a + uint8_t crc = 0; + ad58: 2200 movs r2, #0 + c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); + ad5a: f89d 7011 ldrb.w r7, [sp, #17] + uint8_t len = strlen(str); + ad5e: fa5f fe80 uxtb.w lr, r0 + ad62: f10d 064d add.w r6, sp, #77 ; 0x4d + for(uint8_t i = 0 ; i < len ; i++){ + ad66: 4613 mov r3, r2 + crc ^= (uint8_t) ((uint8_t)str[i]+i+type); + ad68: eb07 0c03 add.w ip, r7, r3 + ad6c: f816 1f01 ldrb.w r1, [r6, #1]! + for(uint8_t i = 0 ; i < len ; i++){ + ad70: 3301 adds r3, #1 + crc ^= (uint8_t) ((uint8_t)str[i]+i+type); + ad72: 4461 add r1, ip + for(uint8_t i = 0 ; i < len ; i++){ + ad74: b2db uxtb r3, r3 + crc ^= (uint8_t) ((uint8_t)str[i]+i+type); + ad76: 404a eors r2, r1 + for(uint8_t i = 0 ; i < len ; i++){ + ad78: 459e cmp lr, r3 + crc ^= (uint8_t) ((uint8_t)str[i]+i+type); + ad7a: b2d2 uxtb r2, r2 + for(uint8_t i = 0 ; i < len ; i++){ + ad7c: d8f4 bhi.n ad68 + c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); + ad7e: ea8e 0e02 eor.w lr, lr, r2 + ad82: f8bd 3018 ldrh.w r3, [sp, #24] + ad86: fb00 e003 mla r0, r0, r3, lr + ad8a: b2c0 uxtb r0, r0 + ad8c: e01d b.n adca + uint8_t len = strlen(str); + ad8e: f10d 0025 add.w r0, sp, #37 ; 0x25 + ad92: f023 ff55 bl 2ec40 + if(len==0){ + ad96: 2800 cmp r0, #0 + ad98: d039 beq.n ae0e + uint8_t crc = 0; + ad9a: 2200 movs r2, #0 + c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); + ad9c: f89d 7011 ldrb.w r7, [sp, #17] + uint8_t len = strlen(str); + ada0: b2c6 uxtb r6, r0 + ada2: f10d 0c24 add.w ip, sp, #36 ; 0x24 + for(uint8_t i = 0 ; i < len ; i++){ + ada6: 4613 mov r3, r2 + crc ^= (uint8_t) ((uint8_t)str[i]+i+type); + ada8: eb07 0e03 add.w lr, r7, r3 + adac: f81c 1f01 ldrb.w r1, [ip, #1]! + for(uint8_t i = 0 ; i < len ; i++){ + adb0: 3301 adds r3, #1 + crc ^= (uint8_t) ((uint8_t)str[i]+i+type); + adb2: 4471 add r1, lr + for(uint8_t i = 0 ; i < len ; i++){ + adb4: b2db uxtb r3, r3 + crc ^= (uint8_t) ((uint8_t)str[i]+i+type); + adb6: 404a eors r2, r1 + for(uint8_t i = 0 ; i < len ; i++){ + adb8: 429e cmp r6, r3 + crc ^= (uint8_t) ((uint8_t)str[i]+i+type); + adba: b2d2 uxtb r2, r2 + for(uint8_t i = 0 ; i < len ; i++){ + adbc: d8f4 bhi.n ada8 + c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); + adbe: 4056 eors r6, r2 + adc0: f8bd 3016 ldrh.w r3, [sp, #22] + adc4: fb00 6003 mla r0, r0, r3, r6 + adc8: b2c0 uxtb r0, r0 + c += d.prependValue; + adca: f89d 2013 ldrb.w r2, [sp, #19] + adce: f89d 3012 ldrb.w r3, [sp, #18] + add2: 4413 add r3, r2 + add4: f89d 2014 ldrb.w r2, [sp, #20] + add8: 4413 add r3, r2 + adda: f89d 2015 ldrb.w r2, [sp, #21] + adde: 4413 add r3, r2 + ade0: f89d 2024 ldrb.w r2, [sp, #36] ; 0x24 + ade4: 4413 add r3, r2 + c += (d.highlight*2); + ade6: f89d 2020 ldrb.w r2, [sp, #32] + c += d.prependValue; + adea: eb03 0342 add.w r3, r3, r2, lsl #1 + c ^= d.colors; + adee: f89d 2010 ldrb.w r2, [sp, #16] + c += d.prependValue; + adf2: 4418 add r0, r3 + c ^= d.colors; + adf4: 4055 eors r5, r2 + if(d.isOled()){ + adf6: f89d 30df ldrb.w r3, [sp, #223] ; 0xdf + c ^= d.colors; + adfa: 4068 eors r0, r5 + if(d.isOled()){ + adfc: 2b16 cmp r3, #22 + d.crc = generateCrc(d); + adfe: f88d 00ce strb.w r0, [sp, #206] ; 0xce + if(d.isOled()){ + ae02: d006 beq.n ae12 + } + ae04: b02d add sp, #180 ; 0xb4 + ae06: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + ae0a: b004 add sp, #16 + ae0c: 4770 bx lr + ae0e: 4606 mov r6, r0 + ae10: e7d6 b.n adc0 + __oledMuxSelect(d.index); + ae12: f89d 00cc ldrb.w r0, [sp, #204] ; 0xcc + ae16: f7ff fa55 bl a2c4 + oled[d.index].print(d, d.str); + ae1a: f8bd 20cc ldrh.w r2, [sp, #204] ; 0xcc + ae1e: f10d 00e5 add.w r0, sp, #229 ; 0xe5 + ae22: f89d 30e0 ldrb.w r3, [sp, #224] ; 0xe0 + ae26: ebc2 01c2 rsb r1, r2, r2, lsl #3 + ae2a: f89d 20cf ldrb.w r2, [sp, #207] ; 0xcf + ae2e: 9000 str r0, [sp, #0] + ae30: eb04 00c1 add.w r0, r4, r1, lsl #3 + ae34: f89d 10ce ldrb.w r1, [sp, #206] ; 0xce + ae38: f500 7001 add.w r0, r0, #516 ; 0x204 + ae3c: f7ff fcb8 bl a7b0 + } + ae40: b02d add sp, #180 ; 0xb4 + ae42: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + ae46: b004 add sp, #16 + ae48: 4770 bx lr + ae4a: 4686 mov lr, r0 + ae4c: e799 b.n ad82 + ae4e: bf00 nop + +0000ae50 : void renderFasTuner(BMCDataContainer d){ - ad88: b084 sub sp, #16 - ad8a: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - ad8e: b0db sub sp, #364 ; 0x16c + ae50: b084 sub sp, #16 + ae52: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + ae56: b0db sub sp, #364 ; 0x16c strcpy(d.str, "Tuner"); - ad90: 4e89 ldr r6, [pc, #548] ; (afb8 ) + ae58: 4e89 ldr r6, [pc, #548] ; (b080 ) void renderFasTuner(BMCDataContainer d){ - ad92: 4605 mov r5, r0 - ad94: ac65 add r4, sp, #404 ; 0x194 + ae5a: 4605 mov r5, r0 + ae5c: ac65 add r4, sp, #404 ; 0x194 strcpy(d.str, "Tuner"); - ad96: 6830 ldr r0, [r6, #0] + ae5e: 6830 ldr r0, [r6, #0] void renderFasTuner(BMCDataContainer d){ - ad98: e884 000e stmia.w r4, {r1, r2, r3} + ae60: e884 000e stmia.w r4, {r1, r2, r3} strcpy(d.str, "Tuner"); - ad9c: 88b3 ldrh r3, [r6, #4] - ad9e: 22a1 movs r2, #161 ; 0xa1 - ada0: f8cd 01ad str.w r0, [sp, #429] ; 0x1ad - ada4: 4621 mov r1, r4 - ada6: a831 add r0, sp, #196 ; 0xc4 - ada8: f8ad 31b1 strh.w r3, [sp, #433] ; 0x1b1 + ae64: 88b3 ldrh r3, [r6, #4] + ae66: 22a1 movs r2, #161 ; 0xa1 + ae68: f8cd 01ad str.w r0, [sp, #429] ; 0x1ad + ae6c: 4621 mov r1, r4 + ae6e: a831 add r0, sp, #196 ; 0xc4 + ae70: f8ad 31b1 strh.w r3, [sp, #433] ; 0x1b1 d.crc = generateCrc(d); - adac: f01f fcac bl 2a708 - return bitRead(settings, 2); - adb0: f89d 70c7 ldrb.w r7, [sp, #199] ; 0xc7 + ae74: f01f fcbc bl 2a7f0 + ae78: f89d 70c7 ldrb.w r7, [sp, #199] ; 0xc7 if(d.useSelected() && !d.useStringOnly()){ - adb4: 0778 lsls r0, r7, #29 - adb6: d521 bpl.n adfc + ae7c: 0778 lsls r0, r7, #29 + ae7e: d521 bpl.n aec4 uint8_t len = strlen(str); - adb8: f50d 7083 add.w r0, sp, #262 ; 0x106 - adbc: f023 fec0 bl 2eb40 + ae80: f50d 7083 add.w r0, sp, #262 ; 0x106 + ae84: f023 fedc bl 2ec40 if(len==0){ - adc0: 2800 cmp r0, #0 - adc2: f000 808c beq.w aede + ae88: 2800 cmp r0, #0 + ae8a: f000 808c beq.w afa6 uint8_t crc = 0; - adc6: 2100 movs r1, #0 + ae8e: 2100 movs r1, #0 c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - adc8: f89d 80c9 ldrb.w r8, [sp, #201] ; 0xc9 + ae90: f89d 80c9 ldrb.w r8, [sp, #201] ; 0xc9 uint8_t len = strlen(str); - adcc: b2c3 uxtb r3, r0 - adce: f20d 1e05 addw lr, sp, #261 ; 0x105 + ae94: b2c3 uxtb r3, r0 + ae96: f20d 1e05 addw lr, sp, #261 ; 0x105 for(uint8_t i = 0 ; i < len ; i++){ - add2: 460a mov r2, r1 + ae9a: 460a mov r2, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - add4: eb08 0902 add.w r9, r8, r2 - add8: f81e cf01 ldrb.w ip, [lr, #1]! + ae9c: eb08 0902 add.w r9, r8, r2 + aea0: f81e cf01 ldrb.w ip, [lr, #1]! for(uint8_t i = 0 ; i < len ; i++){ - addc: 3201 adds r2, #1 + aea4: 3201 adds r2, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - adde: 44cc add ip, r9 + aea6: 44cc add ip, r9 for(uint8_t i = 0 ; i < len ; i++){ - ade0: b2d2 uxtb r2, r2 + aea8: b2d2 uxtb r2, r2 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - ade2: ea81 010c eor.w r1, r1, ip + aeaa: ea81 010c eor.w r1, r1, ip for(uint8_t i = 0 ; i < len ; i++){ - ade6: 4293 cmp r3, r2 + aeae: 4293 cmp r3, r2 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - ade8: b2c9 uxtb r1, r1 + aeb0: b2c9 uxtb r1, r1 for(uint8_t i = 0 ; i < len ; i++){ - adea: d8f3 bhi.n add4 + aeb2: d8f3 bhi.n ae9c c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - adec: ea83 0201 eor.w r2, r3, r1 - adf0: f8bd 30d0 ldrh.w r3, [sp, #208] ; 0xd0 - adf4: fb00 2203 mla r2, r0, r3, r2 - adf8: b2d2 uxtb r2, r2 - adfa: e01e b.n ae3a + aeb4: ea83 0201 eor.w r2, r3, r1 + aeb8: f8bd 30d0 ldrh.w r3, [sp, #208] ; 0xd0 + aebc: fb00 2203 mla r2, r0, r3, r2 + aec0: b2d2 uxtb r2, r2 + aec2: e01e b.n af02 uint8_t len = strlen(str); - adfc: f10d 00dd add.w r0, sp, #221 ; 0xdd - ae00: f023 fe9e bl 2eb40 + aec4: f10d 00dd add.w r0, sp, #221 ; 0xdd + aec8: f023 feba bl 2ec40 if(len==0){ - ae04: 2800 cmp r0, #0 - ae06: d03e beq.n ae86 + aecc: 2800 cmp r0, #0 + aece: d03e beq.n af4e uint8_t crc = 0; - ae08: 2100 movs r1, #0 + aed0: 2100 movs r1, #0 c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - ae0a: f89d 80c9 ldrb.w r8, [sp, #201] ; 0xc9 + aed2: f89d 80c9 ldrb.w r8, [sp, #201] ; 0xc9 uint8_t len = strlen(str); - ae0e: b2c2 uxtb r2, r0 - ae10: f10d 0edc add.w lr, sp, #220 ; 0xdc + aed6: b2c2 uxtb r2, r0 + aed8: f10d 0edc add.w lr, sp, #220 ; 0xdc for(uint8_t i = 0 ; i < len ; i++){ - ae14: 460b mov r3, r1 + aedc: 460b mov r3, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - ae16: eb08 0903 add.w r9, r8, r3 - ae1a: f81e cf01 ldrb.w ip, [lr, #1]! + aede: eb08 0903 add.w r9, r8, r3 + aee2: f81e cf01 ldrb.w ip, [lr, #1]! for(uint8_t i = 0 ; i < len ; i++){ - ae1e: 3301 adds r3, #1 + aee6: 3301 adds r3, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - ae20: 44cc add ip, r9 + aee8: 44cc add ip, r9 for(uint8_t i = 0 ; i < len ; i++){ - ae22: b2db uxtb r3, r3 + aeea: b2db uxtb r3, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - ae24: ea81 010c eor.w r1, r1, ip + aeec: ea81 010c eor.w r1, r1, ip for(uint8_t i = 0 ; i < len ; i++){ - ae28: 429a cmp r2, r3 + aef0: 429a cmp r2, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - ae2a: b2c9 uxtb r1, r1 + aef2: b2c9 uxtb r1, r1 for(uint8_t i = 0 ; i < len ; i++){ - ae2c: d8f3 bhi.n ae16 + aef4: d8f3 bhi.n aede c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - ae2e: 404a eors r2, r1 - ae30: f8bd 30ce ldrh.w r3, [sp, #206] ; 0xce - ae34: fb00 2203 mla r2, r0, r3, r2 - ae38: b2d2 uxtb r2, r2 + aef6: 404a eors r2, r1 + aef8: f8bd 30ce ldrh.w r3, [sp, #206] ; 0xce + aefc: fb00 2203 mla r2, r0, r3, r2 + af00: b2d2 uxtb r2, r2 c += d.prependValue; - ae3a: f89d 30cb ldrb.w r3, [sp, #203] ; 0xcb - ae3e: f89d 10ca ldrb.w r1, [sp, #202] ; 0xca + af02: f89d 30cb ldrb.w r3, [sp, #203] ; 0xcb + af06: f89d 10ca ldrb.w r1, [sp, #202] ; 0xca if(d.isOled()){ - ae42: f89d 81a7 ldrb.w r8, [sp, #423] ; 0x1a7 + af0a: f89d 81a7 ldrb.w r8, [sp, #423] ; 0x1a7 c += d.prependValue; - ae46: 4419 add r1, r3 - ae48: f89d 30cc ldrb.w r3, [sp, #204] ; 0xcc + af0e: 4419 add r1, r3 + af10: f89d 30cc ldrb.w r3, [sp, #204] ; 0xcc if(d.isOled()){ - ae4c: f1b8 0f16 cmp.w r8, #22 + af14: f1b8 0f16 cmp.w r8, #22 c += d.prependValue; - ae50: 4419 add r1, r3 - ae52: f89d 30cd ldrb.w r3, [sp, #205] ; 0xcd - ae56: 4419 add r1, r3 - ae58: f89d 30dc ldrb.w r3, [sp, #220] ; 0xdc - ae5c: 4419 add r1, r3 + af18: 4419 add r1, r3 + af1a: f89d 30cd ldrb.w r3, [sp, #205] ; 0xcd + af1e: 4419 add r1, r3 + af20: f89d 30dc ldrb.w r3, [sp, #220] ; 0xdc + af24: 4419 add r1, r3 c += (d.highlight*2); - ae5e: f89d 30d8 ldrb.w r3, [sp, #216] ; 0xd8 + af26: f89d 30d8 ldrb.w r3, [sp, #216] ; 0xd8 c += d.prependValue; - ae62: eb01 0143 add.w r1, r1, r3, lsl #1 + af2a: eb01 0143 add.w r1, r1, r3, lsl #1 c ^= d.colors; - ae66: f89d 30c8 ldrb.w r3, [sp, #200] ; 0xc8 + af2e: f89d 30c8 ldrb.w r3, [sp, #200] ; 0xc8 c += d.prependValue; - ae6a: 440a add r2, r1 + af32: 440a add r2, r1 c ^= d.colors; - ae6c: ea87 0703 eor.w r7, r7, r3 + af34: ea87 0703 eor.w r7, r7, r3 c += d.prependValue; - ae70: b2d2 uxtb r2, r2 + af38: b2d2 uxtb r2, r2 c ^= d.colors; - ae72: ea87 0702 eor.w r7, r7, r2 + af3a: ea87 0702 eor.w r7, r7, r2 d.crc = generateCrc(d); - ae76: f88d 7196 strb.w r7, [sp, #406] ; 0x196 + af3e: f88d 7196 strb.w r7, [sp, #406] ; 0x196 if(d.isOled()){ - ae7a: d006 beq.n ae8a - } - ae7c: b05b add sp, #364 ; 0x16c - ae7e: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - ae82: b004 add sp, #16 - ae84: 4770 bx lr - ae86: 4602 mov r2, r0 - ae88: e7d2 b.n ae30 + af42: d006 beq.n af52 + } + af44: b05b add sp, #364 ; 0x16c + af46: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + af4a: b004 add sp, #16 + af4c: 4770 bx lr + af4e: 4602 mov r2, r0 + af50: e7d2 b.n aef8 __oledMuxSelect(d.index); - ae8a: f8bd 9194 ldrh.w r9, [sp, #404] ; 0x194 - ae8e: fa5f f089 uxtb.w r0, r9 - ae92: f7ff fa45 bl a320 + af52: f8bd 9194 ldrh.w r9, [sp, #404] ; 0x194 + af56: fa5f f089 uxtb.w r0, r9 + af5a: f7ff f9b3 bl a2c4 fasHandler.renderTunerOled(oled[d.index], d); - ae96: 4621 mov r1, r4 - ae98: ebc9 04c9 rsb r4, r9, r9, lsl #3 - ae9c: 22a1 movs r2, #161 ; 0xa1 - ae9e: a808 add r0, sp, #32 - aea0: ea4f 0ac9 mov.w sl, r9, lsl #3 - aea4: f01f fc30 bl 2a708 + af5e: 4621 mov r1, r4 + af60: ebc9 04c9 rsb r4, r9, r9, lsl #3 + af64: 22a1 movs r2, #161 ; 0xa1 + af66: a808 add r0, sp, #32 + af68: ea4f 0ac9 mov.w sl, r9, lsl #3 + af6c: f01f fc40 bl 2a7f0 if(tunerBlock.index < 0){ - aea8: f995 3184 ldrsb.w r3, [r5, #388] ; 0x184 - aeac: 00e4 lsls r4, r4, #3 - aeae: 2b00 cmp r3, #0 - aeb0: f504 7b01 add.w fp, r4, #516 ; 0x204 - aeb4: 44ab add fp, r5 - aeb6: db14 blt.n aee2 + af70: f995 3184 ldrsb.w r3, [r5, #388] ; 0x184 + af74: 00e4 lsls r4, r4, #3 + af76: 2b00 cmp r3, #0 + af78: f504 7b01 add.w fp, r4, #516 ; 0x204 + af7c: 44ab add fp, r5 + af7e: db14 blt.n afaa } else if(!tunerBlock.isOled() || (tunerBlock.index != d.index)){ - aeb8: f895 2185 ldrb.w r2, [r5, #389] ; 0x185 - aebc: 2a16 cmp r2, #22 - aebe: d11e bne.n aefe - aec0: 4599 cmp r9, r3 - aec2: d11c bne.n aefe + af80: f895 2185 ldrb.w r2, [r5, #389] ; 0x185 + af84: 2a16 cmp r2, #22 + af86: d11e bne.n afc6 + af88: 4599 cmp r9, r3 + af8a: d11c bne.n afc6 if(tunerBlock.active != sync.fas.tuner.isOn()){ - aec4: f8d5 0180 ldr.w r0, [r5, #384] ; 0x180 - aec8: f895 2186 ldrb.w r2, [r5, #390] ; 0x186 + af8c: f8d5 0180 ldr.w r0, [r5, #384] ; 0x180 + af90: f895 2186 ldrb.w r2, [r5, #390] ; 0x186 return bitRead(flags, bit); - aecc: f890 3283 ldrb.w r3, [r0, #643] ; 0x283 - aed0: f003 0301 and.w r3, r3, #1 - aed4: 4293 cmp r3, r2 - aed6: d12d bne.n af34 + af94: f890 3283 ldrb.w r3, [r0, #643] ; 0x283 + af98: f003 0301 and.w r3, r3, #1 + af9c: 4293 cmp r3, r2 + af9e: d12d bne.n affc if(!tunerBlock.active){ - aed8: b18b cbz r3, aefe + afa0: b18b cbz r3, afc6 bool t_reset = false; - aeda: 2300 movs r3, #0 - aedc: e048 b.n af70 - aede: 4602 mov r2, r0 - aee0: e786 b.n adf0 + afa2: 2300 movs r3, #0 + afa4: e048 b.n b038 + afa6: 4602 mov r2, r0 + afa8: e786 b.n aeb8 active = false; - aee2: 2300 movs r3, #0 + afaa: 2300 movs r3, #0 tunerBlock.type = BMC_DEVICE_ID_OLED; - aee4: f885 8185 strb.w r8, [r5, #389] ; 0x185 + afac: f885 8185 strb.w r8, [r5, #389] ; 0x185 tunerBlock.index = d.index; - aee8: f885 9184 strb.w r9, [r5, #388] ; 0x184 - aeec: f885 3186 strb.w r3, [r5, #390] ; 0x186 - aef0: f8d5 3180 ldr.w r3, [r5, #384] ; 0x180 - aef4: f893 3283 ldrb.w r3, [r3, #643] ; 0x283 + afb0: f885 9184 strb.w r9, [r5, #388] ; 0x184 + afb4: f885 3186 strb.w r3, [r5, #390] ; 0x186 + afb8: f8d5 3180 ldr.w r3, [r5, #384] ; 0x180 + afbc: f893 3283 ldrb.w r3, [r3, #643] ; 0x283 if(tunerBlock.active != sync.fas.tuner.isOn()){ - aef8: f013 0301 ands.w r3, r3, #1 - aefc: d11a bne.n af34 + afc0: f013 0301 ands.w r3, r3, #1 + afc4: d11a bne.n affc block.print(d, "Tuner"); - aefe: a908 add r1, sp, #32 - af00: a831 add r0, sp, #196 ; 0xc4 - af02: 22a1 movs r2, #161 ; 0xa1 + afc6: a908 add r1, sp, #32 + afc8: a831 add r0, sp, #196 ; 0xc4 + afca: 22a1 movs r2, #161 ; 0xa1 strcpy(d.str, str); - af04: f10d 04dd add.w r4, sp, #221 ; 0xdd - af08: f01f fbfe bl 2a708 - af0c: 6830 ldr r0, [r6, #0] - af0e: 88b2 ldrh r2, [r6, #4] + afcc: f10d 04dd add.w r4, sp, #221 ; 0xdd + afd0: f01f fc0e bl 2a7f0 + afd4: 6830 ldr r0, [r6, #0] + afd6: 88b2 ldrh r2, [r6, #4] print(d, d.str); - af10: 4639 mov r1, r7 + afd8: 4639 mov r1, r7 strcpy(d.str, str); - af12: f8cd 00dd str.w r0, [sp, #221] ; 0xdd + afda: f8cd 00dd str.w r0, [sp, #221] ; 0xdd print(d, d.str); - af16: 4658 mov r0, fp + afde: 4658 mov r0, fp strcpy(d.str, str); - af18: f8ad 20e1 strh.w r2, [sp, #225] ; 0xe1 + afe0: f8ad 20e1 strh.w r2, [sp, #225] ; 0xe1 print(d, d.str); - af1c: f89d 30d8 ldrb.w r3, [sp, #216] ; 0xd8 - af20: f89d 20c7 ldrb.w r2, [sp, #199] ; 0xc7 - af24: 9400 str r4, [sp, #0] - af26: f7ff fc71 bl a80c - } - af2a: b05b add sp, #364 ; 0x16c - af2c: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - af30: b004 add sp, #16 - af32: 4770 bx lr + afe4: f89d 30d8 ldrb.w r3, [sp, #216] ; 0xd8 + afe8: f89d 20c7 ldrb.w r2, [sp, #199] ; 0xc7 + afec: 9400 str r4, [sp, #0] + afee: f7ff fbdf bl a7b0 + } + aff2: b05b add sp, #364 ; 0x16c + aff4: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + aff8: b004 add sp, #16 + affa: 4770 bx lr pitch = 0; - af34: 2200 movs r2, #0 + affc: 2200 movs r2, #0 tunerBlock.active = sync.fas.tuner.isOn(); - af36: f885 3186 strb.w r3, [r5, #390] ; 0x186 + affe: f885 3186 strb.w r3, [r5, #390] ; 0x186 display.fillRect(t.x, t.y, t.w, t.h, t.background); - af3a: 2320 movs r3, #32 - af3c: f10b 000c add.w r0, fp, #12 - af40: f8c5 21a8 str.w r2, [r5, #424] ; 0x1a8 - af44: 4611 mov r1, r2 + b002: 2320 movs r3, #32 + b004: f10b 000c add.w r0, fp, #12 + b008: f8c5 21a8 str.w r2, [r5, #424] ; 0x1a8 + b00c: 4611 mov r1, r2 stringNumber = 0; - af46: f8a5 21a4 strh.w r2, [r5, #420] ; 0x1a4 + b00e: f8a5 21a4 strh.w r2, [r5, #420] ; 0x1a4 pitchRaw = 0; - af4a: f885 21a6 strb.w r2, [r5, #422] ; 0x1a6 + b012: f885 21a6 strb.w r2, [r5, #422] ; 0x1a6 strcpy(noteName, ""); - af4e: f885 21ac strb.w r2, [r5, #428] ; 0x1ac + b016: f885 21ac strb.w r2, [r5, #428] ; 0x1ac prevTime = 0; - af52: f8c5 21b4 str.w r2, [r5, #436] ; 0x1b4 + b01a: f8c5 21b4 str.w r2, [r5, #436] ; 0x1b4 flags = 0; - af56: f885 21af strb.w r2, [r5, #431] ; 0x1af - af5a: 9300 str r3, [sp, #0] - af5c: 2380 movs r3, #128 ; 0x80 - af5e: 9201 str r2, [sp, #4] - af60: f01a fd14 bl 2598c + b01e: f885 21af strb.w r2, [r5, #431] ; 0x1af + b022: 9300 str r3, [sp, #0] + b024: 2380 movs r3, #128 ; 0x80 + b026: 9201 str r2, [sp, #4] + b028: f01a fd26 bl 25a78 if(!tunerBlock.active){ - af64: f895 3186 ldrb.w r3, [r5, #390] ; 0x186 - af68: 2b00 cmp r3, #0 - af6a: d0c8 beq.n aefe - af6c: f8d5 0180 ldr.w r0, [r5, #384] ; 0x180 + b02c: f895 3186 ldrb.w r3, [r5, #390] ; 0x186 + b030: 2b00 cmp r3, #0 + b032: d0c8 beq.n afc6 + b034: f8d5 0180 ldr.w r0, [r5, #384] ; 0x180 if(renderTuner(display, tunerData, t, t_reset)){ - af70: 2201 movs r2, #1 + b038: 2201 movs r2, #1 BMC_SSD1306& display = block.display; - af72: f504 7404 add.w r4, r4, #528 ; 0x210 + b03a: f504 7404 add.w r4, r4, #528 ; 0x210 if(renderTuner(display, tunerData, t, t_reset)){ - af76: 2120 movs r1, #32 - af78: 9307 str r3, [sp, #28] + b03e: 2120 movs r1, #32 + b040: 9307 str r3, [sp, #28] BMC_SSD1306& display = block.display; - af7a: 442c add r4, r5 + b042: 442c add r4, r5 if(renderTuner(display, tunerData, t, t_reset)){ - af7c: 2300 movs r3, #0 - af7e: 9203 str r2, [sp, #12] - af80: 9306 str r3, [sp, #24] - af82: 9300 str r3, [sp, #0] - af84: e9cd 2204 strd r2, r2, [sp, #16] - af88: 2280 movs r2, #128 ; 0x80 - af8a: e9cd 2101 strd r2, r1, [sp, #4] - af8e: f505 72d2 add.w r2, r5, #420 ; 0x1a4 - af92: 4621 mov r1, r4 - af94: f7fc f974 bl 7280 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]> - af98: 2800 cmp r0, #0 - af9a: f43f af6f beq.w ae7c + b044: 2300 movs r3, #0 + b046: 9203 str r2, [sp, #12] + b048: 9306 str r3, [sp, #24] + b04a: 9300 str r3, [sp, #0] + b04c: e9cd 2204 strd r2, r2, [sp, #16] + b050: 2280 movs r2, #128 ; 0x80 + b052: e9cd 2101 strd r2, r1, [sp, #4] + b056: f505 72d2 add.w r2, r5, #420 ; 0x1a4 + b05a: 4621 mov r1, r4 + b05c: f7fc f8e0 bl 7220 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]> + b060: 2800 cmp r0, #0 + b062: f43f af6f beq.w af44 crc = t_crc; - af9e: ebaa 0a09 sub.w sl, sl, r9 - afa2: 4b06 ldr r3, [pc, #24] ; (afbc ) + b066: ebaa 0a09 sub.w sl, sl, r9 + b06a: 4b06 ldr r3, [pc, #24] ; (b084 ) display.display(); - afa4: 4620 mov r0, r4 - afa6: 681b ldr r3, [r3, #0] - afa8: eb05 05ca add.w r5, r5, sl, lsl #3 + b06c: 4620 mov r0, r4 + b06e: 681b ldr r3, [r3, #0] + b070: eb05 05ca add.w r5, r5, sl, lsl #3 block.setCrc(millis()&0xFF); - afac: f885 3206 strb.w r3, [r5, #518] ; 0x206 + b074: f885 3206 strb.w r3, [r5, #518] ; 0x206 display.display(); - afb0: f00d fcfc bl 189ac - afb4: e762 b.n ae7c - afb6: bf00 nop - afb8: 200015b0 .word 0x200015b0 - afbc: 2000bae8 .word 0x2000bae8 + b078: f00d fd0a bl 18a90 + b07c: e762 b.n af44 + b07e: bf00 nop + b080: 200015b0 .word 0x200015b0 + b084: 2000bb08 .word 0x2000bb08 -0000afc0 : +0000b088 : void renderFasLooper(BMCDataContainer d){ - afc0: b084 sub sp, #16 - afc2: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - afc6: b0e1 sub sp, #388 ; 0x184 - afc8: 4605 mov r5, r0 - afca: af6b add r7, sp, #428 ; 0x1ac - afcc: a837 add r0, sp, #220 ; 0xdc - afce: f89d a1bf ldrb.w sl, [sp, #447] ; 0x1bf - afd2: e887 000e stmia.w r7, {r1, r2, r3} - afd6: 22a1 movs r2, #161 ; 0xa1 - afd8: 4639 mov r1, r7 - afda: f8bd 61ac ldrh.w r6, [sp, #428] ; 0x1ac + b088: b084 sub sp, #16 + b08a: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + b08e: b0e1 sub sp, #388 ; 0x184 + b090: 4605 mov r5, r0 + b092: af6b add r7, sp, #428 ; 0x1ac + b094: a837 add r0, sp, #220 ; 0xdc + b096: f89d a1bf ldrb.w sl, [sp, #447] ; 0x1bf + b09a: e887 000e stmia.w r7, {r1, r2, r3} + b09e: 22a1 movs r2, #161 ; 0xa1 + b0a0: 4639 mov r1, r7 + b0a2: f8bd 61ac ldrh.w r6, [sp, #428] ; 0x1ac d.crc = generateCrc(d); - afde: f01f fb93 bl 2a708 + b0a6: f01f fba3 bl 2a7f0 return bitRead(settings, 2); - afe2: f89d 40df ldrb.w r4, [sp, #223] ; 0xdf + b0aa: f89d 40df ldrb.w r4, [sp, #223] ; 0xdf if(d.useSelected() && !d.useStringOnly()){ - afe6: 0763 lsls r3, r4, #29 - afe8: d523 bpl.n b032 + b0ae: 0763 lsls r3, r4, #29 + b0b0: d523 bpl.n b0fa uint8_t len = strlen(str); - afea: f50d 708f add.w r0, sp, #286 ; 0x11e - afee: f023 fda7 bl 2eb40 + b0b2: f50d 708f add.w r0, sp, #286 ; 0x11e + b0b6: f023 fdc3 bl 2ec40 if(len==0){ - aff2: 2800 cmp r0, #0 - aff4: f000 80b8 beq.w b168 + b0ba: 2800 cmp r0, #0 + b0bc: f000 80b8 beq.w b230 uint8_t crc = 0; - aff8: 2300 movs r3, #0 + b0c0: 2300 movs r3, #0 c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - affa: f89d 80e1 ldrb.w r8, [sp, #225] ; 0xe1 + b0c2: f89d 80e1 ldrb.w r8, [sp, #225] ; 0xe1 uint8_t len = strlen(str); - affe: b2c1 uxtb r1, r0 - b000: f20d 1e1d addw lr, sp, #285 ; 0x11d + b0c6: b2c1 uxtb r1, r0 + b0c8: f20d 1e1d addw lr, sp, #285 ; 0x11d for(uint8_t i = 0 ; i < len ; i++){ - b004: 469c mov ip, r3 + b0cc: 469c mov ip, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b006: eb08 090c add.w r9, r8, ip - b00a: f81e 2f01 ldrb.w r2, [lr, #1]! + b0ce: eb08 090c add.w r9, r8, ip + b0d2: f81e 2f01 ldrb.w r2, [lr, #1]! for(uint8_t i = 0 ; i < len ; i++){ - b00e: f10c 0c01 add.w ip, ip, #1 + b0d6: f10c 0c01 add.w ip, ip, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b012: 444a add r2, r9 + b0da: 444a add r2, r9 for(uint8_t i = 0 ; i < len ; i++){ - b014: fa5f fc8c uxtb.w ip, ip + b0dc: fa5f fc8c uxtb.w ip, ip crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b018: 4053 eors r3, r2 + b0e0: 4053 eors r3, r2 for(uint8_t i = 0 ; i < len ; i++){ - b01a: 4561 cmp r1, ip + b0e2: 4561 cmp r1, ip crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b01c: b2db uxtb r3, r3 + b0e4: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < len ; i++){ - b01e: d8f2 bhi.n b006 + b0e6: d8f2 bhi.n b0ce c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - b020: ea81 0c03 eor.w ip, r1, r3 - b024: f8bd 30e8 ldrh.w r3, [sp, #232] ; 0xe8 - b028: fb00 cc03 mla ip, r0, r3, ip - b02c: fa5f fc8c uxtb.w ip, ip - b030: e01f b.n b072 + b0e8: ea81 0c03 eor.w ip, r1, r3 + b0ec: f8bd 30e8 ldrh.w r3, [sp, #232] ; 0xe8 + b0f0: fb00 cc03 mla ip, r0, r3, ip + b0f4: fa5f fc8c uxtb.w ip, ip + b0f8: e01f b.n b13a uint8_t len = strlen(str); - b032: f10d 00f5 add.w r0, sp, #245 ; 0xf5 - b036: f023 fd83 bl 2eb40 + b0fa: f10d 00f5 add.w r0, sp, #245 ; 0xf5 + b0fe: f023 fd9f bl 2ec40 if(len==0){ - b03a: b380 cbz r0, b09e + b102: b380 cbz r0, b166 uint8_t crc = 0; - b03c: 2300 movs r3, #0 + b104: 2300 movs r3, #0 c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - b03e: f89d 80e1 ldrb.w r8, [sp, #225] ; 0xe1 + b106: f89d 80e1 ldrb.w r8, [sp, #225] ; 0xe1 uint8_t len = strlen(str); - b042: fa5f fc80 uxtb.w ip, r0 - b046: f10d 0ef4 add.w lr, sp, #244 ; 0xf4 + b10a: fa5f fc80 uxtb.w ip, r0 + b10e: f10d 0ef4 add.w lr, sp, #244 ; 0xf4 for(uint8_t i = 0 ; i < len ; i++){ - b04a: 4619 mov r1, r3 + b112: 4619 mov r1, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b04c: eb08 0901 add.w r9, r8, r1 - b050: f81e 2f01 ldrb.w r2, [lr, #1]! + b114: eb08 0901 add.w r9, r8, r1 + b118: f81e 2f01 ldrb.w r2, [lr, #1]! for(uint8_t i = 0 ; i < len ; i++){ - b054: 3101 adds r1, #1 + b11c: 3101 adds r1, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b056: 444a add r2, r9 + b11e: 444a add r2, r9 for(uint8_t i = 0 ; i < len ; i++){ - b058: b2c9 uxtb r1, r1 + b120: b2c9 uxtb r1, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b05a: 4053 eors r3, r2 + b122: 4053 eors r3, r2 for(uint8_t i = 0 ; i < len ; i++){ - b05c: 458c cmp ip, r1 + b124: 458c cmp ip, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b05e: b2db uxtb r3, r3 + b126: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < len ; i++){ - b060: d8f4 bhi.n b04c + b128: d8f4 bhi.n b114 c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - b062: ea8c 0c03 eor.w ip, ip, r3 - b066: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6 - b06a: fb00 cc03 mla ip, r0, r3, ip - b06e: fa5f fc8c uxtb.w ip, ip + b12a: ea8c 0c03 eor.w ip, ip, r3 + b12e: f8bd 30e6 ldrh.w r3, [sp, #230] ; 0xe6 + b132: fb00 cc03 mla ip, r0, r3, ip + b136: fa5f fc8c uxtb.w ip, ip if(d.isOled()){ - b072: f1ba 0f16 cmp.w sl, #22 + b13a: f1ba 0f16 cmp.w sl, #22 c += d.byteA+d.byteB+d.byteC+d.byteD; - b076: f89d 80e2 ldrb.w r8, [sp, #226] ; 0xe2 - b07a: f89d 90e3 ldrb.w r9, [sp, #227] ; 0xe3 - b07e: f89d 00e4 ldrb.w r0, [sp, #228] ; 0xe4 - b082: f89d 10e5 ldrb.w r1, [sp, #229] ; 0xe5 + b13e: f89d 80e2 ldrb.w r8, [sp, #226] ; 0xe2 + b142: f89d 90e3 ldrb.w r9, [sp, #227] ; 0xe3 + b146: f89d 00e4 ldrb.w r0, [sp, #228] ; 0xe4 + b14a: f89d 10e5 ldrb.w r1, [sp, #229] ; 0xe5 c += (d.highlight*2); - b086: f89d e0f0 ldrb.w lr, [sp, #240] ; 0xf0 + b14e: f89d e0f0 ldrb.w lr, [sp, #240] ; 0xf0 c += d.prependValue; - b08a: f89d 30f4 ldrb.w r3, [sp, #244] ; 0xf4 + b152: f89d 30f4 ldrb.w r3, [sp, #244] ; 0xf4 c ^= d.colors; - b08e: f89d 20e0 ldrb.w r2, [sp, #224] ; 0xe0 + b156: f89d 20e0 ldrb.w r2, [sp, #224] ; 0xe0 if(d.isOled()){ - b092: d006 beq.n b0a2 - } - b094: b061 add sp, #388 ; 0x184 - b096: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - b09a: b004 add sp, #16 - b09c: 4770 bx lr - b09e: 4684 mov ip, r0 - b0a0: e7e1 b.n b066 + b15a: d006 beq.n b16a + } + b15c: b061 add sp, #388 ; 0x184 + b15e: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + b162: b004 add sp, #16 + b164: 4770 bx lr + b166: 4684 mov ip, r0 + b168: e7e1 b.n b12e c += d.prependValue; - b0a2: 44c8 add r8, r9 + b16a: 44c8 add r8, r9 c ^= d.colors; - b0a4: 4062 eors r2, r4 - b0a6: ea4f 09c6 mov.w r9, r6, lsl #3 + b16c: 4062 eors r2, r4 + b16e: ea4f 09c6 mov.w r9, r6, lsl #3 c += d.prependValue; - b0aa: 4440 add r0, r8 - b0ac: 4401 add r1, r0 + b172: 4440 add r0, r8 + b174: 4401 add r1, r0 __oledMuxSelect(d.index); - b0ae: b2f0 uxtb r0, r6 + b176: b2f0 uxtb r0, r6 c += d.prependValue; - b0b0: 440b add r3, r1 - b0b2: eb03 034e add.w r3, r3, lr, lsl #1 - b0b6: 449c add ip, r3 - b0b8: fa5f f48c uxtb.w r4, ip + b178: 440b add r3, r1 + b17a: eb03 034e add.w r3, r3, lr, lsl #1 + b17e: 449c add ip, r3 + b180: fa5f f48c uxtb.w r4, ip c ^= d.colors; - b0bc: 4054 eors r4, r2 + b184: 4054 eors r4, r2 __oledMuxSelect(d.index); - b0be: f7ff f92f bl a320 + b186: f7ff f89d bl a2c4 fasHandler.renderLooperOled(oled[d.index], d); - b0c2: 4639 mov r1, r7 - b0c4: ebc6 07c6 rsb r7, r6, r6, lsl #3 - b0c8: 22a1 movs r2, #161 ; 0xa1 - b0ca: a80e add r0, sp, #56 ; 0x38 - b0cc: 00ff lsls r7, r7, #3 - b0ce: f88d 41ae strb.w r4, [sp, #430] ; 0x1ae - b0d2: f01f fb19 bl 2a708 + b18a: 4639 mov r1, r7 + b18c: ebc6 07c6 rsb r7, r6, r6, lsl #3 + b190: 22a1 movs r2, #161 ; 0xa1 + b192: a80e add r0, sp, #56 ; 0x38 + b194: 00ff lsls r7, r7, #3 + b196: f88d 41ae strb.w r4, [sp, #430] ; 0x1ae + b19a: f01f fb29 bl 2a7f0 if(looperBlock.index < 0){ - b0d6: f995 3187 ldrsb.w r3, [r5, #391] ; 0x187 - b0da: f507 7801 add.w r8, r7, #516 ; 0x204 - b0de: 2b00 cmp r3, #0 - b0e0: 44a8 add r8, r5 - b0e2: db43 blt.n b16c + b19e: f995 3187 ldrsb.w r3, [r5, #391] ; 0x187 + b1a2: f507 7801 add.w r8, r7, #516 ; 0x204 + b1a6: 2b00 cmp r3, #0 + b1a8: 44a8 add r8, r5 + b1aa: db43 blt.n b234 } else if(!looperBlock.isOled() || looperBlock.index != d.index){ - b0e4: f895 2188 ldrb.w r2, [r5, #392] ; 0x188 - b0e8: 2a16 cmp r2, #22 - b0ea: f040 808a bne.w b202 - b0ee: 429e cmp r6, r3 - b0f0: f040 8087 bne.w b202 - b0f4: f8d5 3180 ldr.w r3, [r5, #384] ; 0x180 + b1ac: f895 2188 ldrb.w r2, [r5, #392] ; 0x188 + b1b0: 2a16 cmp r2, #22 + b1b2: f040 808a bne.w b2ca + b1b6: 429e cmp r6, r3 + b1b8: f040 8087 bne.w b2ca + b1bc: f8d5 3180 ldr.w r3, [r5, #384] ; 0x180 BMCDiplayHandlerData t = BMC_DEFAULT_DISPLAY_DATA_OLED; - b0f8: f10d 0a24 add.w sl, sp, #36 ; 0x24 - b0fc: f8df b160 ldr.w fp, [pc, #352] ; b260 - b100: f893 c153 ldrb.w ip, [r3, #339] ; 0x153 - b104: 46d6 mov lr, sl + b1c0: f10d 0a24 add.w sl, sp, #36 ; 0x24 + b1c4: f8df b160 ldr.w fp, [pc, #352] ; b328 + b1c8: f893 c153 ldrb.w ip, [r3, #339] ; 0x153 + b1cc: 46d6 mov lr, sl if(looperBlock.active != sync.fas.connected()){ - b106: f895 3189 ldrb.w r3, [r5, #393] ; 0x189 - b10a: f00c 0c01 and.w ip, ip, #1 - b10e: 9307 str r3, [sp, #28] + b1ce: f895 3189 ldrb.w r3, [r5, #393] ; 0x189 + b1d2: f00c 0c01 and.w ip, ip, #1 + b1d6: 9307 str r3, [sp, #28] BMCDiplayHandlerData t = BMC_DEFAULT_DISPLAY_DATA_OLED; - b110: e8bb 000f ldmia.w fp!, {r0, r1, r2, r3} - b114: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} - b118: f8db 3000 ldr.w r3, [fp] - b11c: f8ae 3000 strh.w r3, [lr] + b1d8: e8bb 000f ldmia.w fp!, {r0, r1, r2, r3} + b1dc: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} + b1e0: f8db 3000 ldr.w r3, [fp] + b1e4: f8ae 3000 strh.w r3, [lr] if(looperBlock.active != sync.fas.connected()){ - b120: 9b07 ldr r3, [sp, #28] - b122: 459c cmp ip, r3 - b124: d13d bne.n b1a2 + b1e8: 9b07 ldr r3, [sp, #28] + b1ea: 459c cmp ip, r3 + b1ec: d13d bne.n b26a if(!looperBlock.active){ - b126: f1bc 0f00 cmp.w ip, #0 - b12a: d076 beq.n b21a + b1ee: f1bc 0f00 cmp.w ip, #0 + b1f2: d076 beq.n b2e2 bool t_reset = false; - b12c: 2300 movs r3, #0 + b1f4: 2300 movs r3, #0 if(renderLooper(display, looperData, t, t_reset)){ - b12e: 9304 str r3, [sp, #16] + b1f6: 9304 str r3, [sp, #16] BMC_SSD1306& display = block.display; - b130: f507 7704 add.w r7, r7, #528 ; 0x210 + b1f8: f507 7704 add.w r7, r7, #528 ; 0x210 if(renderLooper(display, looperData, t, t_reset)){ - b134: ab0a add r3, sp, #40 ; 0x28 - b136: 466c mov r4, sp + b1fc: ab0a add r3, sp, #40 ; 0x28 + b1fe: 466c mov r4, sp BMC_SSD1306& display = block.display; - b138: 442f add r7, r5 + b200: 442f add r7, r5 if(renderLooper(display, looperData, t, t_reset)){ - b13a: cb0f ldmia r3, {r0, r1, r2, r3} - b13c: c407 stmia r4!, {r0, r1, r2} - b13e: f205 12b9 addw r2, r5, #441 ; 0x1b9 - b142: 8023 strh r3, [r4, #0] - b144: 4639 mov r1, r7 - b146: f8da 3000 ldr.w r3, [sl] - b14a: f505 70b8 add.w r0, r5, #368 ; 0x170 - b14e: f7fe ff7f bl a050 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)> - b152: 2800 cmp r0, #0 - b154: d17d bne.n b252 - b156: eba9 0906 sub.w r9, r9, r6 - b15a: f89d 303a ldrb.w r3, [sp, #58] ; 0x3a - b15e: eb05 05c9 add.w r5, r5, r9, lsl #3 - b162: f885 3206 strb.w r3, [r5, #518] ; 0x206 - } - b166: e795 b.n b094 - b168: 4684 mov ip, r0 - b16a: e75b b.n b024 + b202: cb0f ldmia r3, {r0, r1, r2, r3} + b204: c407 stmia r4!, {r0, r1, r2} + b206: f205 12b9 addw r2, r5, #441 ; 0x1b9 + b20a: 8023 strh r3, [r4, #0] + b20c: 4639 mov r1, r7 + b20e: f8da 3000 ldr.w r3, [sl] + b212: f505 70b8 add.w r0, r5, #368 ; 0x170 + b216: f7fe feed bl 9ff4 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)> + b21a: 2800 cmp r0, #0 + b21c: d17d bne.n b31a + b21e: eba9 0906 sub.w r9, r9, r6 + b222: f89d 303a ldrb.w r3, [sp, #58] ; 0x3a + b226: eb05 05c9 add.w r5, r5, r9, lsl #3 + b22a: f885 3206 strb.w r3, [r5, #518] ; 0x206 + } + b22e: e795 b.n b15c + b230: 4684 mov ip, r0 + b232: e75b b.n b0ec looperData = 0xFF; - b16c: 23ff movs r3, #255 ; 0xff + b234: 23ff movs r3, #255 ; 0xff looperBlock.type = BMC_DEVICE_ID_OLED; - b16e: f8a5 a188 strh.w sl, [r5, #392] ; 0x188 + b236: f8a5 a188 strh.w sl, [r5, #392] ; 0x188 BMCDiplayHandlerData t = BMC_DEFAULT_DISPLAY_DATA_OLED; - b172: f8df b0ec ldr.w fp, [pc, #236] ; b260 - b176: f10d 0a24 add.w sl, sp, #36 ; 0x24 + b23a: f8df b0ec ldr.w fp, [pc, #236] ; b328 + b23e: f10d 0a24 add.w sl, sp, #36 ; 0x24 looperData = 0xFF; - b17a: f885 31b9 strb.w r3, [r5, #441] ; 0x1b9 - b17e: f8d5 3180 ldr.w r3, [r5, #384] ; 0x180 + b242: f885 31b9 strb.w r3, [r5, #441] ; 0x1b9 + b246: f8d5 3180 ldr.w r3, [r5, #384] ; 0x180 BMCDiplayHandlerData t = BMC_DEFAULT_DISPLAY_DATA_OLED; - b182: 46d6 mov lr, sl + b24a: 46d6 mov lr, sl looperBlock.index = d.index; - b184: f885 6187 strb.w r6, [r5, #391] ; 0x187 - b188: f893 c153 ldrb.w ip, [r3, #339] ; 0x153 + b24c: f885 6187 strb.w r6, [r5, #391] ; 0x187 + b250: f893 c153 ldrb.w ip, [r3, #339] ; 0x153 BMCDiplayHandlerData t = BMC_DEFAULT_DISPLAY_DATA_OLED; - b18c: e8bb 000f ldmia.w fp!, {r0, r1, r2, r3} + b254: e8bb 000f ldmia.w fp!, {r0, r1, r2, r3} if(looperBlock.active != sync.fas.connected()){ - b190: f01c 0c01 ands.w ip, ip, #1 + b258: f01c 0c01 ands.w ip, ip, #1 BMCDiplayHandlerData t = BMC_DEFAULT_DISPLAY_DATA_OLED; - b194: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} - b198: f8db 3000 ldr.w r3, [fp] - b19c: f8ae 3000 strh.w r3, [lr] + b25c: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} + b260: f8db 3000 ldr.w r3, [fp] + b264: f8ae 3000 strh.w r3, [lr] if(looperBlock.active != sync.fas.connected()){ - b1a0: d03b beq.n b21a + b268: d03b beq.n b2e2 display.fillRect(t.x, t.y, t.w, t.h, t.background); - b1a2: 2200 movs r2, #0 + b26a: 2200 movs r2, #0 looperData = 0xFF; - b1a4: 23ff movs r3, #255 ; 0xff + b26c: 23ff movs r3, #255 ; 0xff looperBlock.active = sync.fas.connected(); - b1a6: f885 c189 strb.w ip, [r5, #393] ; 0x189 + b26e: f885 c189 strb.w ip, [r5, #393] ; 0x189 display.fillRect(t.x, t.y, t.w, t.h, t.background); - b1aa: f108 000c add.w r0, r8, #12 - b1ae: 9201 str r2, [sp, #4] - b1b0: 4611 mov r1, r2 + b272: f108 000c add.w r0, r8, #12 + b276: 9201 str r2, [sp, #4] + b278: 4611 mov r1, r2 looperData = 0xFF; - b1b2: f885 31b9 strb.w r3, [r5, #441] ; 0x1b9 + b27a: f885 31b9 strb.w r3, [r5, #441] ; 0x1b9 display.fillRect(t.x, t.y, t.w, t.h, t.background); - b1b6: 2320 movs r3, #32 - b1b8: 9300 str r3, [sp, #0] - b1ba: 2380 movs r3, #128 ; 0x80 - b1bc: f01a fbe6 bl 2598c + b27e: 2320 movs r3, #32 + b280: 9300 str r3, [sp, #0] + b282: 2380 movs r3, #128 ; 0x80 + b284: f01a fbf8 bl 25a78 if(!looperBlock.active){ - b1c0: f895 3189 ldrb.w r3, [r5, #393] ; 0x189 - b1c4: 2b00 cmp r3, #0 - b1c6: d1b2 bne.n b12e + b288: f895 3189 ldrb.w r3, [r5, #393] ; 0x189 + b28c: 2b00 cmp r3, #0 + b28e: d1b2 bne.n b1f6 strcpy(d.str, str); - b1c8: 4c24 ldr r4, [pc, #144] ; (b25c ) - b1ca: a90e add r1, sp, #56 ; 0x38 - b1cc: 22a1 movs r2, #161 ; 0xa1 - b1ce: a837 add r0, sp, #220 ; 0xdc - b1d0: f01f fa9a bl 2a708 - b1d4: f10d 03f5 add.w r3, sp, #245 ; 0xf5 - b1d8: cc07 ldmia r4!, {r0, r1, r2} - b1da: 8824 ldrh r4, [r4, #0] + b290: 4c24 ldr r4, [pc, #144] ; (b324 ) + b292: a90e add r1, sp, #56 ; 0x38 + b294: 22a1 movs r2, #161 ; 0xa1 + b296: a837 add r0, sp, #220 ; 0xdc + b298: f01f faaa bl 2a7f0 + b29c: f10d 03f5 add.w r3, sp, #245 ; 0xf5 + b2a0: cc07 ldmia r4!, {r0, r1, r2} + b2a2: 8824 ldrh r4, [r4, #0] print(d, d.str); - b1dc: 9300 str r3, [sp, #0] + b2a4: 9300 str r3, [sp, #0] strcpy(d.str, str); - b1de: f8cd 00f5 str.w r0, [sp, #245] ; 0xf5 + b2a6: f8cd 00f5 str.w r0, [sp, #245] ; 0xf5 print(d, d.str); - b1e2: 4640 mov r0, r8 + b2aa: 4640 mov r0, r8 strcpy(d.str, str); - b1e4: f8cd 10f9 str.w r1, [sp, #249] ; 0xf9 - b1e8: f8cd 20fd str.w r2, [sp, #253] ; 0xfd + b2ac: f8cd 10f9 str.w r1, [sp, #249] ; 0xf9 + b2b0: f8cd 20fd str.w r2, [sp, #253] ; 0xfd print(d, d.str); - b1ec: f89d 30f0 ldrb.w r3, [sp, #240] ; 0xf0 - b1f0: f89d 10de ldrb.w r1, [sp, #222] ; 0xde - b1f4: f89d 20df ldrb.w r2, [sp, #223] ; 0xdf + b2b4: f89d 30f0 ldrb.w r3, [sp, #240] ; 0xf0 + b2b8: f89d 10de ldrb.w r1, [sp, #222] ; 0xde + b2bc: f89d 20df ldrb.w r2, [sp, #223] ; 0xdf strcpy(d.str, str); - b1f8: f8ad 4101 strh.w r4, [sp, #257] ; 0x101 + b2c0: f8ad 4101 strh.w r4, [sp, #257] ; 0x101 print(d, d.str); - b1fc: f7ff fb06 bl a80c + b2c4: f7ff fa74 bl a7b0 return false; - b200: e748 b.n b094 + b2c8: e748 b.n b15c block.print(d, d.str); - b202: f10d 0551 add.w r5, sp, #81 ; 0x51 - b206: f89d 304c ldrb.w r3, [sp, #76] ; 0x4c - b20a: f89d 203b ldrb.w r2, [sp, #59] ; 0x3b - b20e: 4621 mov r1, r4 - b210: 4640 mov r0, r8 - b212: 9500 str r5, [sp, #0] - b214: f7ff fafa bl a80c + b2ca: f10d 0551 add.w r5, sp, #81 ; 0x51 + b2ce: f89d 304c ldrb.w r3, [sp, #76] ; 0x4c + b2d2: f89d 203b ldrb.w r2, [sp, #59] ; 0x3b + b2d6: 4621 mov r1, r4 + b2d8: 4640 mov r0, r8 + b2da: 9500 str r5, [sp, #0] + b2dc: f7ff fa68 bl a7b0 return false; - b218: e73c b.n b094 + b2e0: e73c b.n b15c strcpy(d.str, str); - b21a: 4d10 ldr r5, [pc, #64] ; (b25c ) - b21c: a90e add r1, sp, #56 ; 0x38 - b21e: 22a1 movs r2, #161 ; 0xa1 - b220: a837 add r0, sp, #220 ; 0xdc - b222: f01f fa71 bl 2a708 - b226: f10d 03f5 add.w r3, sp, #245 ; 0xf5 - b22a: cd07 ldmia r5!, {r0, r1, r2} - b22c: 882d ldrh r5, [r5, #0] + b2e2: 4d10 ldr r5, [pc, #64] ; (b324 ) + b2e4: a90e add r1, sp, #56 ; 0x38 + b2e6: 22a1 movs r2, #161 ; 0xa1 + b2e8: a837 add r0, sp, #220 ; 0xdc + b2ea: f01f fa81 bl 2a7f0 + b2ee: f10d 03f5 add.w r3, sp, #245 ; 0xf5 + b2f2: cd07 ldmia r5!, {r0, r1, r2} + b2f4: 882d ldrh r5, [r5, #0] print(d, d.str); - b22e: 9300 str r3, [sp, #0] + b2f6: 9300 str r3, [sp, #0] strcpy(d.str, str); - b230: f8cd 00f5 str.w r0, [sp, #245] ; 0xf5 + b2f8: f8cd 00f5 str.w r0, [sp, #245] ; 0xf5 print(d, d.str); - b234: 4640 mov r0, r8 + b2fc: 4640 mov r0, r8 strcpy(d.str, str); - b236: f8cd 10f9 str.w r1, [sp, #249] ; 0xf9 + b2fe: f8cd 10f9 str.w r1, [sp, #249] ; 0xf9 print(d, d.str); - b23a: 4621 mov r1, r4 + b302: 4621 mov r1, r4 strcpy(d.str, str); - b23c: f8cd 20fd str.w r2, [sp, #253] ; 0xfd + b304: f8cd 20fd str.w r2, [sp, #253] ; 0xfd print(d, d.str); - b240: f89d 30f0 ldrb.w r3, [sp, #240] ; 0xf0 - b244: f89d 20df ldrb.w r2, [sp, #223] ; 0xdf + b308: f89d 30f0 ldrb.w r3, [sp, #240] ; 0xf0 + b30c: f89d 20df ldrb.w r2, [sp, #223] ; 0xdf strcpy(d.str, str); - b248: f8ad 5101 strh.w r5, [sp, #257] ; 0x101 + b310: f8ad 5101 strh.w r5, [sp, #257] ; 0x101 print(d, d.str); - b24c: f7ff fade bl a80c + b314: f7ff fa4c bl a7b0 return false; - b250: e720 b.n b094 + b318: e720 b.n b15c display.display(); - b252: 4638 mov r0, r7 - b254: f00d fbaa bl 189ac - b258: e77d b.n b156 - b25a: bf00 nop - b25c: 200015b8 .word 0x200015b8 - b260: 20000838 .word 0x20000838 - -0000b264 : + b31a: 4638 mov r0, r7 + b31c: f00d fbb8 bl 18a90 + b320: e77d b.n b21e + b322: bf00 nop + b324: 200015b8 .word 0x200015b8 + b328: 20000838 .word 0x20000838 + +0000b32c : void renderFasLooperIcon(BMCDataContainer d){ - b264: b084 sub sp, #16 - b266: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - b26a: b0da sub sp, #360 ; 0x168 - b26c: 4605 mov r5, r0 - b26e: ac63 add r4, sp, #396 ; 0x18c - b270: a831 add r0, sp, #196 ; 0xc4 - b272: f89d 619f ldrb.w r6, [sp, #415] ; 0x19f - b276: e884 000e stmia.w r4, {r1, r2, r3} - b27a: 22a1 movs r2, #161 ; 0xa1 - b27c: 4621 mov r1, r4 - b27e: f8bd 718c ldrh.w r7, [sp, #396] ; 0x18c + b32c: b084 sub sp, #16 + b32e: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + b332: b0da sub sp, #360 ; 0x168 + b334: 4605 mov r5, r0 + b336: ac63 add r4, sp, #396 ; 0x18c + b338: a831 add r0, sp, #196 ; 0xc4 + b33a: f89d 619f ldrb.w r6, [sp, #415] ; 0x19f + b33e: e884 000e stmia.w r4, {r1, r2, r3} + b342: 22a1 movs r2, #161 ; 0xa1 + b344: 4621 mov r1, r4 + b346: f8bd 718c ldrh.w r7, [sp, #396] ; 0x18c d.crc = generateCrc(d); - b282: f01f fa41 bl 2a708 - b286: f89d 80c7 ldrb.w r8, [sp, #199] ; 0xc7 + b34a: f01f fa51 bl 2a7f0 + b34e: f89d 80c7 ldrb.w r8, [sp, #199] ; 0xc7 if(d.useSelected() && !d.useStringOnly()){ - b28a: f018 0f04 tst.w r8, #4 - b28e: d023 beq.n b2d8 + b352: f018 0f04 tst.w r8, #4 + b356: d023 beq.n b3a0 uint8_t len = strlen(str); - b290: f50d 7083 add.w r0, sp, #262 ; 0x106 - b294: f023 fc54 bl 2eb40 + b358: f50d 7083 add.w r0, sp, #262 ; 0x106 + b35c: f023 fc70 bl 2ec40 if(len==0){ - b298: 2800 cmp r0, #0 - b29a: f000 80a5 beq.w b3e8 + b360: 2800 cmp r0, #0 + b362: f000 80a5 beq.w b4b0 uint8_t crc = 0; - b29e: f04f 0c00 mov.w ip, #0 + b366: f04f 0c00 mov.w ip, #0 c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - b2a2: f89d 90c9 ldrb.w r9, [sp, #201] ; 0xc9 + b36a: f89d 90c9 ldrb.w r9, [sp, #201] ; 0xc9 uint8_t len = strlen(str); - b2a6: b2c3 uxtb r3, r0 - b2a8: f20d 1e05 addw lr, sp, #261 ; 0x105 + b36e: b2c3 uxtb r3, r0 + b370: f20d 1e05 addw lr, sp, #261 ; 0x105 for(uint8_t i = 0 ; i < len ; i++){ - b2ac: 4661 mov r1, ip + b374: 4661 mov r1, ip crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b2ae: eb09 0a01 add.w sl, r9, r1 - b2b2: f81e 2f01 ldrb.w r2, [lr, #1]! + b376: eb09 0a01 add.w sl, r9, r1 + b37a: f81e 2f01 ldrb.w r2, [lr, #1]! for(uint8_t i = 0 ; i < len ; i++){ - b2b6: 3101 adds r1, #1 + b37e: 3101 adds r1, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b2b8: 4452 add r2, sl + b380: 4452 add r2, sl for(uint8_t i = 0 ; i < len ; i++){ - b2ba: b2c9 uxtb r1, r1 + b382: b2c9 uxtb r1, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b2bc: ea8c 0202 eor.w r2, ip, r2 + b384: ea8c 0202 eor.w r2, ip, r2 for(uint8_t i = 0 ; i < len ; i++){ - b2c0: 428b cmp r3, r1 + b388: 428b cmp r3, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b2c2: fa5f fc82 uxtb.w ip, r2 + b38a: fa5f fc82 uxtb.w ip, r2 for(uint8_t i = 0 ; i < len ; i++){ - b2c6: d8f2 bhi.n b2ae + b38e: d8f2 bhi.n b376 c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - b2c8: ea83 010c eor.w r1, r3, ip - b2cc: f8bd 30d0 ldrh.w r3, [sp, #208] ; 0xd0 - b2d0: fb00 1103 mla r1, r0, r3, r1 - b2d4: b2c9 uxtb r1, r1 - b2d6: e020 b.n b31a + b390: ea83 010c eor.w r1, r3, ip + b394: f8bd 30d0 ldrh.w r3, [sp, #208] ; 0xd0 + b398: fb00 1103 mla r1, r0, r3, r1 + b39c: b2c9 uxtb r1, r1 + b39e: e020 b.n b3e2 uint8_t len = strlen(str); - b2d8: f10d 00dd add.w r0, sp, #221 ; 0xdd - b2dc: f023 fc30 bl 2eb40 + b3a0: f10d 00dd add.w r0, sp, #221 ; 0xdd + b3a4: f023 fc4c bl 2ec40 if(len==0){ - b2e0: b380 cbz r0, b344 + b3a8: b380 cbz r0, b40c uint8_t crc = 0; - b2e2: f04f 0c00 mov.w ip, #0 + b3aa: f04f 0c00 mov.w ip, #0 c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - b2e6: f89d 90c9 ldrb.w r9, [sp, #201] ; 0xc9 + b3ae: f89d 90c9 ldrb.w r9, [sp, #201] ; 0xc9 uint8_t len = strlen(str); - b2ea: b2c1 uxtb r1, r0 - b2ec: f10d 0edc add.w lr, sp, #220 ; 0xdc + b3b2: b2c1 uxtb r1, r0 + b3b4: f10d 0edc add.w lr, sp, #220 ; 0xdc for(uint8_t i = 0 ; i < len ; i++){ - b2f0: 4663 mov r3, ip + b3b8: 4663 mov r3, ip crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b2f2: eb09 0a03 add.w sl, r9, r3 - b2f6: f81e 2f01 ldrb.w r2, [lr, #1]! + b3ba: eb09 0a03 add.w sl, r9, r3 + b3be: f81e 2f01 ldrb.w r2, [lr, #1]! for(uint8_t i = 0 ; i < len ; i++){ - b2fa: 3301 adds r3, #1 + b3c2: 3301 adds r3, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b2fc: 4452 add r2, sl + b3c4: 4452 add r2, sl for(uint8_t i = 0 ; i < len ; i++){ - b2fe: b2db uxtb r3, r3 + b3c6: b2db uxtb r3, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b300: ea8c 0202 eor.w r2, ip, r2 + b3c8: ea8c 0202 eor.w r2, ip, r2 for(uint8_t i = 0 ; i < len ; i++){ - b304: 4299 cmp r1, r3 + b3cc: 4299 cmp r1, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b306: fa5f fc82 uxtb.w ip, r2 + b3ce: fa5f fc82 uxtb.w ip, r2 for(uint8_t i = 0 ; i < len ; i++){ - b30a: d8f2 bhi.n b2f2 + b3d2: d8f2 bhi.n b3ba c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - b30c: ea81 010c eor.w r1, r1, ip - b310: f8bd 30ce ldrh.w r3, [sp, #206] ; 0xce - b314: fb00 1103 mla r1, r0, r3, r1 - b318: b2c9 uxtb r1, r1 + b3d4: ea81 010c eor.w r1, r1, ip + b3d8: f8bd 30ce ldrh.w r3, [sp, #206] ; 0xce + b3dc: fb00 1103 mla r1, r0, r3, r1 + b3e0: b2c9 uxtb r1, r1 if(d.isOled()){ - b31a: 2e16 cmp r6, #22 + b3e2: 2e16 cmp r6, #22 c += d.byteA+d.byteB+d.byteC+d.byteD; - b31c: f89d c0ca ldrb.w ip, [sp, #202] ; 0xca - b320: f89d a0cb ldrb.w sl, [sp, #203] ; 0xcb - b324: f89d 00cc ldrb.w r0, [sp, #204] ; 0xcc - b328: f89d 20cd ldrb.w r2, [sp, #205] ; 0xcd + b3e4: f89d c0ca ldrb.w ip, [sp, #202] ; 0xca + b3e8: f89d a0cb ldrb.w sl, [sp, #203] ; 0xcb + b3ec: f89d 00cc ldrb.w r0, [sp, #204] ; 0xcc + b3f0: f89d 20cd ldrb.w r2, [sp, #205] ; 0xcd c += (d.highlight*2); - b32c: f89d 90d8 ldrb.w r9, [sp, #216] ; 0xd8 + b3f4: f89d 90d8 ldrb.w r9, [sp, #216] ; 0xd8 c += d.prependValue; - b330: f89d 30dc ldrb.w r3, [sp, #220] ; 0xdc + b3f8: f89d 30dc ldrb.w r3, [sp, #220] ; 0xdc c ^= d.colors; - b334: f89d e0c8 ldrb.w lr, [sp, #200] ; 0xc8 + b3fc: f89d e0c8 ldrb.w lr, [sp, #200] ; 0xc8 if(d.isOled()){ - b338: d006 beq.n b348 - } - b33a: b05a add sp, #360 ; 0x168 - b33c: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - b340: b004 add sp, #16 - b342: 4770 bx lr - b344: 4601 mov r1, r0 - b346: e7e3 b.n b310 + b400: d006 beq.n b410 + } + b402: b05a add sp, #360 ; 0x168 + b404: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + b408: b004 add sp, #16 + b40a: 4770 bx lr + b40c: 4601 mov r1, r0 + b40e: e7e3 b.n b3d8 c += d.prependValue; - b348: 44d4 add ip, sl + b410: 44d4 add ip, sl c ^= d.colors; - b34a: ea88 0e0e eor.w lr, r8, lr + b412: ea88 0e0e eor.w lr, r8, lr c += d.prependValue; - b34e: 4460 add r0, ip - b350: 4402 add r2, r0 + b416: 4460 add r0, ip + b418: 4402 add r2, r0 __oledMuxSelect(d.index); - b352: b2f8 uxtb r0, r7 + b41a: b2f8 uxtb r0, r7 c += d.prependValue; - b354: 4413 add r3, r2 - b356: eb03 0349 add.w r3, r3, r9, lsl #1 - b35a: ea4f 09c7 mov.w r9, r7, lsl #3 - b35e: 4419 add r1, r3 - b360: fa5f f881 uxtb.w r8, r1 + b41c: 4413 add r3, r2 + b41e: eb03 0349 add.w r3, r3, r9, lsl #1 + b422: ea4f 09c7 mov.w r9, r7, lsl #3 + b426: 4419 add r1, r3 + b428: fa5f f881 uxtb.w r8, r1 c ^= d.colors; - b364: ea88 080e eor.w r8, r8, lr + b42c: ea88 080e eor.w r8, r8, lr __oledMuxSelect(d.index); - b368: f7fe ffda bl a320 + b430: f7fe ff48 bl a2c4 fasHandler.renderLooperIconOled(oled[d.index], d); - b36c: 4621 mov r1, r4 - b36e: ebc7 04c7 rsb r4, r7, r7, lsl #3 - b372: 22a1 movs r2, #161 ; 0xa1 - b374: a808 add r0, sp, #32 - b376: 00e4 lsls r4, r4, #3 - b378: f88d 619f strb.w r6, [sp, #415] ; 0x19f - b37c: f88d 818e strb.w r8, [sp, #398] ; 0x18e - b380: f01f f9c2 bl 2a708 + b434: 4621 mov r1, r4 + b436: ebc7 04c7 rsb r4, r7, r7, lsl #3 + b43a: 22a1 movs r2, #161 ; 0xa1 + b43c: a808 add r0, sp, #32 + b43e: 00e4 lsls r4, r4, #3 + b440: f88d 619f strb.w r6, [sp, #415] ; 0x19f + b444: f88d 818e strb.w r8, [sp, #398] ; 0x18e + b448: f01f f9d2 bl 2a7f0 return crc == t_crc; - b384: 192b adds r3, r5, r4 - b386: f504 7601 add.w r6, r4, #516 ; 0x204 + b44c: 192b adds r3, r5, r4 + b44e: f504 7601 add.w r6, r4, #516 ; 0x204 if(block.isCrc(d.crc)){ - b38a: f893 2206 ldrb.w r2, [r3, #518] ; 0x206 - b38e: 442e add r6, r5 - b390: 4542 cmp r2, r8 - b392: d0d2 beq.n b33a + b452: f893 2206 ldrb.w r2, [r3, #518] ; 0x206 + b456: 442e add r6, r5 + b458: 4542 cmp r2, r8 + b45a: d0d2 beq.n b402 crc = t_crc; - b394: f883 8206 strb.w r8, [r3, #518] ; 0x206 + b45c: f883 8206 strb.w r8, [r3, #518] ; 0x206 BMC_SSD1306& display = block.display; - b398: f504 7404 add.w r4, r4, #528 ; 0x210 - b39c: f89d 3192 ldrb.w r3, [sp, #402] ; 0x192 - b3a0: 1928 adds r0, r5, r4 - b3a2: f89d 41a0 ldrb.w r4, [sp, #416] ; 0x1a0 + b460: f504 7404 add.w r4, r4, #528 ; 0x210 + b464: f89d 3192 ldrb.w r3, [sp, #402] ; 0x192 + b468: 1928 adds r0, r5, r4 + b46a: f89d 41a0 ldrb.w r4, [sp, #416] ; 0x1a0 switch(d.byteA){ - b3a6: 3b0b subs r3, #11 - b3a8: 2b0c cmp r3, #12 - b3aa: d8c6 bhi.n b33a - b3ac: a201 add r2, pc, #4 ; (adr r2, b3b4 ) - b3ae: f852 f023 ldr.w pc, [r2, r3, lsl #2] - b3b2: bf00 nop - b3b4: 0000b41f .word 0x0000b41f - b3b8: 0000b3ed .word 0x0000b3ed - b3bc: 0000b3ed .word 0x0000b3ed - b3c0: 0000b545 .word 0x0000b545 - b3c4: 0000b517 .word 0x0000b517 - b3c8: 0000b4e3 .word 0x0000b4e3 - b3cc: 0000b33b .word 0x0000b33b - b3d0: 0000b33b .word 0x0000b33b - b3d4: 0000b33b .word 0x0000b33b - b3d8: 0000b33b .word 0x0000b33b - b3dc: 0000b4a9 .word 0x0000b4a9 - b3e0: 0000b475 .word 0x0000b475 - b3e4: 0000b445 .word 0x0000b445 - b3e8: 4601 mov r1, r0 - b3ea: e76f b.n b2cc + b46e: 3b0b subs r3, #11 + b470: 2b0c cmp r3, #12 + b472: d8c6 bhi.n b402 + b474: a201 add r2, pc, #4 ; (adr r2, b47c ) + b476: f852 f023 ldr.w pc, [r2, r3, lsl #2] + b47a: bf00 nop + b47c: 0000b4e7 .word 0x0000b4e7 + b480: 0000b4b5 .word 0x0000b4b5 + b484: 0000b4b5 .word 0x0000b4b5 + b488: 0000b60d .word 0x0000b60d + b48c: 0000b5df .word 0x0000b5df + b490: 0000b5ab .word 0x0000b5ab + b494: 0000b403 .word 0x0000b403 + b498: 0000b403 .word 0x0000b403 + b49c: 0000b403 .word 0x0000b403 + b4a0: 0000b403 .word 0x0000b403 + b4a4: 0000b571 .word 0x0000b571 + b4a8: 0000b53d .word 0x0000b53d + b4ac: 0000b50d .word 0x0000b50d + b4b0: 4601 mov r1, r0 + b4b2: e76f b.n b394 display.clearDisplay(); - b3ec: 9007 str r0, [sp, #28] - b3ee: f00d fa71 bl 188d4 + b4b4: 9007 str r0, [sp, #28] + b4b6: f00d fa7f bl 189b8 display.fillCircle(t.x + centerX, t.y+centerY, halfIcon, t.color); - b3f2: 2101 movs r1, #1 - b3f4: 230e movs r3, #14 - b3f6: 2210 movs r2, #16 - b3f8: 9807 ldr r0, [sp, #28] - b3fa: 9100 str r1, [sp, #0] - b3fc: 2140 movs r1, #64 ; 0x40 - b3fe: f01a fced bl 25ddc + b4ba: 2101 movs r1, #1 + b4bc: 230e movs r3, #14 + b4be: 2210 movs r2, #16 + b4c0: 9807 ldr r0, [sp, #28] + b4c2: 9100 str r1, [sp, #0] + b4c4: 2140 movs r1, #64 ; 0x40 + b4c6: f01a fcff bl 25ec8 display.fillCircle(t.x + centerX, t.y+centerY, halfIcon-thickness, d.highlight?t.color:t.background); - b402: 230c movs r3, #12 - b404: 2210 movs r2, #16 - b406: 2140 movs r1, #64 ; 0x40 - b408: 9807 ldr r0, [sp, #28] - b40a: 9400 str r4, [sp, #0] - b40c: f01a fce6 bl 25ddc + b4ca: 230c movs r3, #12 + b4cc: 2210 movs r2, #16 + b4ce: 2140 movs r1, #64 ; 0x40 + b4d0: 9807 ldr r0, [sp, #28] + b4d2: 9400 str r4, [sp, #0] + b4d4: f01a fcf8 bl 25ec8 display.display(); - b410: 9807 ldr r0, [sp, #28] + b4d8: 9807 ldr r0, [sp, #28] } - b412: b05a add sp, #360 ; 0x168 - b414: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - b418: b004 add sp, #16 - b41a: f00d bac7 b.w 189ac + b4da: b05a add sp, #360 ; 0x168 + b4dc: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + b4e0: b004 add sp, #16 + b4e2: f00d bad5 b.w 18a90 display.clearDisplay(); - b41e: 9007 str r0, [sp, #28] + b4e6: 9007 str r0, [sp, #28] renderTriangle(display, d, t, t_reset); - b420: 2520 movs r5, #32 + b4e8: 2520 movs r5, #32 display.clearDisplay(); - b422: f00d fa57 bl 188d4 + b4ea: f00d fa65 bl 189b8 renderTriangle(display, d, t, t_reset); - b426: 2300 movs r3, #0 - b428: 2201 movs r2, #1 - b42a: 4621 mov r1, r4 - b42c: 2480 movs r4, #128 ; 0x80 - b42e: 9807 ldr r0, [sp, #28] - b430: 9501 str r5, [sp, #4] - b432: 9400 str r4, [sp, #0] - b434: e9cd 3204 strd r3, r2, [sp, #16] - b438: e9cd 2302 strd r2, r3, [sp, #8] - b43c: 461a mov r2, r3 - b43e: f7fb fcb5 bl 6dac (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]> + b4ee: 2300 movs r3, #0 + b4f0: 2201 movs r2, #1 + b4f2: 4621 mov r1, r4 + b4f4: 2480 movs r4, #128 ; 0x80 + b4f6: 9807 ldr r0, [sp, #28] + b4f8: 9501 str r5, [sp, #4] + b4fa: 9400 str r4, [sp, #0] + b4fc: e9cd 3204 strd r3, r2, [sp, #16] + b500: e9cd 2302 strd r2, r3, [sp, #8] + b504: 461a mov r2, r3 + b506: f7fb fc89 bl 6e1c (BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]> display.display(); - b442: e7e5 b.n b410 + b50a: e7e5 b.n b4d8 display.fillRoundRect(t.x+(centerX-halfIcon), t.y+((t.h-iconSize)/2), iconSize, iconSize, 4, t.color); - b444: 2504 movs r5, #4 + b50c: 2504 movs r5, #4 display.clearDisplay(); - b446: 9007 str r0, [sp, #28] - b448: f00d fa44 bl 188d4 + b50e: 9007 str r0, [sp, #28] + b510: f00d fa52 bl 189b8 display.fillRoundRect(t.x+(centerX-halfIcon), t.y+((t.h-iconSize)/2), iconSize, iconSize, 4, t.color); - b44c: 231c movs r3, #28 - b44e: 2201 movs r2, #1 - b450: 9807 ldr r0, [sp, #28] - b452: 2132 movs r1, #50 ; 0x32 - b454: 9202 str r2, [sp, #8] - b456: 2202 movs r2, #2 - b458: e9cd 3500 strd r3, r5, [sp] - b45c: f01a fd06 bl 25e6c + b514: 231c movs r3, #28 + b516: 2201 movs r2, #1 + b518: 9807 ldr r0, [sp, #28] + b51a: 2132 movs r1, #50 ; 0x32 + b51c: 9202 str r2, [sp, #8] + b51e: 2202 movs r2, #2 + b520: e9cd 3500 strd r3, r5, [sp] + b524: f01a fd18 bl 25f58 display.fillRoundRect(t.x+(centerX-halfIcon)+thickness, t.y+((t.h-iconSize)/2)+thickness, iconSize-(thickness*2), iconSize-(thickness*2), 4, d.highlight?t.color:t.background); - b460: 2318 movs r3, #24 - b462: 462a mov r2, r5 - b464: 2134 movs r1, #52 ; 0x34 - b466: 9807 ldr r0, [sp, #28] - b468: 9300 str r3, [sp, #0] - b46a: e9cd 5401 strd r5, r4, [sp, #4] - b46e: f01a fcfd bl 25e6c + b528: 2318 movs r3, #24 + b52a: 462a mov r2, r5 + b52c: 2134 movs r1, #52 ; 0x34 + b52e: 9807 ldr r0, [sp, #28] + b530: 9300 str r3, [sp, #0] + b532: e9cd 5401 strd r5, r4, [sp, #4] + b536: f01a fd0f bl 25f58 display.display(); - b472: e7cd b.n b410 + b53a: e7cd b.n b4d8 block.print(d, "CLEAR"); - b474: 2316 movs r3, #22 - b476: a908 add r1, sp, #32 + b53c: 2316 movs r3, #22 + b53e: a908 add r1, sp, #32 strcpy(d.str, str); - b478: 4d41 ldr r5, [pc, #260] ; (b580 ) - b47a: a831 add r0, sp, #196 ; 0xc4 - b47c: 22a1 movs r2, #161 ; 0xa1 - b47e: f88d 3026 strb.w r3, [sp, #38] ; 0x26 - b482: f01f f941 bl 2a708 - b486: f10d 03dd add.w r3, sp, #221 ; 0xdd - b48a: 6828 ldr r0, [r5, #0] + b540: 4d41 ldr r5, [pc, #260] ; (b648 ) + b542: a831 add r0, sp, #196 ; 0xc4 + b544: 22a1 movs r2, #161 ; 0xa1 + b546: f88d 3026 strb.w r3, [sp, #38] ; 0x26 + b54a: f01f f951 bl 2a7f0 + b54e: f10d 03dd add.w r3, sp, #221 ; 0xdd + b552: 6828 ldr r0, [r5, #0] print(d, d.str); - b48c: 4641 mov r1, r8 - b48e: 9300 str r3, [sp, #0] - b490: 4623 mov r3, r4 + b554: 4641 mov r1, r8 + b556: 9300 str r3, [sp, #0] + b558: 4623 mov r3, r4 strcpy(d.str, str); - b492: 88ac ldrh r4, [r5, #4] - b494: f8cd 00dd str.w r0, [sp, #221] ; 0xdd + b55a: 88ac ldrh r4, [r5, #4] + b55c: f8cd 00dd str.w r0, [sp, #221] ; 0xdd print(d, d.str); - b498: 4630 mov r0, r6 - b49a: f89d 20c7 ldrb.w r2, [sp, #199] ; 0xc7 + b560: 4630 mov r0, r6 + b562: f89d 20c7 ldrb.w r2, [sp, #199] ; 0xc7 strcpy(d.str, str); - b49e: f8ad 40e1 strh.w r4, [sp, #225] ; 0xe1 + b566: f8ad 40e1 strh.w r4, [sp, #225] ; 0xe1 print(d, d.str); - b4a2: f7ff f9b3 bl a80c - b4a6: e748 b.n b33a + b56a: f7ff f921 bl a7b0 + b56e: e748 b.n b402 display.fillRect(t.x+(centerX-halfIcon), t.y+((t.h-iconSize)/2), iconSize, iconSize, t.color); - b4a8: eba9 0907 sub.w r9, r9, r7 + b570: eba9 0907 sub.w r9, r9, r7 display.clearDisplay(); - b4ac: 9007 str r0, [sp, #28] - b4ae: f00d fa11 bl 188d4 + b574: 9007 str r0, [sp, #28] + b576: f00d fa1f bl 189b8 display.fillRect(t.x+(centerX-halfIcon), t.y+((t.h-iconSize)/2), iconSize, iconSize, t.color); - b4b2: 2301 movs r3, #1 - b4b4: eb05 05c9 add.w r5, r5, r9, lsl #3 - b4b8: 9807 ldr r0, [sp, #28] - b4ba: 2132 movs r1, #50 ; 0x32 - b4bc: f8d5 2210 ldr.w r2, [r5, #528] ; 0x210 - b4c0: 9301 str r3, [sp, #4] - b4c2: 231c movs r3, #28 - b4c4: 9300 str r3, [sp, #0] - b4c6: 6c16 ldr r6, [r2, #64] ; 0x40 - b4c8: 2202 movs r2, #2 - b4ca: 47b0 blx r6 + b57a: 2301 movs r3, #1 + b57c: eb05 05c9 add.w r5, r5, r9, lsl #3 + b580: 9807 ldr r0, [sp, #28] + b582: 2132 movs r1, #50 ; 0x32 + b584: f8d5 2210 ldr.w r2, [r5, #528] ; 0x210 + b588: 9301 str r3, [sp, #4] + b58a: 231c movs r3, #28 + b58c: 9300 str r3, [sp, #0] + b58e: 6c16 ldr r6, [r2, #64] ; 0x40 + b590: 2202 movs r2, #2 + b592: 47b0 blx r6 display.fillRect(t.x+(centerX-halfIcon)+thickness, t.y+((t.h-iconSize)/2)+thickness, iconSize-(thickness*2), iconSize-(thickness*2), d.highlight?t.color:t.background); - b4cc: f8d5 2210 ldr.w r2, [r5, #528] ; 0x210 - b4d0: 2318 movs r3, #24 - b4d2: 2134 movs r1, #52 ; 0x34 - b4d4: 9807 ldr r0, [sp, #28] - b4d6: e9cd 3400 strd r3, r4, [sp] - b4da: 6c14 ldr r4, [r2, #64] ; 0x40 - b4dc: 2204 movs r2, #4 - b4de: 47a0 blx r4 - b4e0: e796 b.n b410 + b594: f8d5 2210 ldr.w r2, [r5, #528] ; 0x210 + b598: 2318 movs r3, #24 + b59a: 2134 movs r1, #52 ; 0x34 + b59c: 9807 ldr r0, [sp, #28] + b59e: e9cd 3400 strd r3, r4, [sp] + b5a2: 6c14 ldr r4, [r2, #64] ; 0x40 + b5a4: 2204 movs r2, #4 + b5a6: 47a0 blx r4 + b5a8: e796 b.n b4d8 block.print(d, "UNDO"); - b4e2: 2310 movs r3, #16 + b5aa: 2310 movs r3, #16 strcpy(d.str, str); - b4e4: 4d27 ldr r5, [pc, #156] ; (b584 ) - b4e6: a908 add r1, sp, #32 - b4e8: a831 add r0, sp, #196 ; 0xc4 - b4ea: 22a1 movs r2, #161 ; 0xa1 - b4ec: f88d 3026 strb.w r3, [sp, #38] ; 0x26 - b4f0: f01f f90a bl 2a708 - b4f4: f10d 02dd add.w r2, sp, #221 ; 0xdd - b4f8: 6828 ldr r0, [r5, #0] + b5ac: 4d27 ldr r5, [pc, #156] ; (b64c ) + b5ae: a908 add r1, sp, #32 + b5b0: a831 add r0, sp, #196 ; 0xc4 + b5b2: 22a1 movs r2, #161 ; 0xa1 + b5b4: f88d 3026 strb.w r3, [sp, #38] ; 0x26 + b5b8: f01f f91a bl 2a7f0 + b5bc: f10d 02dd add.w r2, sp, #221 ; 0xdd + b5c0: 6828 ldr r0, [r5, #0] print(d, d.str); - b4fa: 4623 mov r3, r4 + b5c2: 4623 mov r3, r4 strcpy(d.str, str); - b4fc: 792c ldrb r4, [r5, #4] + b5c4: 792c ldrb r4, [r5, #4] print(d, d.str); - b4fe: 4641 mov r1, r8 - b500: 9200 str r2, [sp, #0] + b5c6: 4641 mov r1, r8 + b5c8: 9200 str r2, [sp, #0] strcpy(d.str, str); - b502: f8cd 00dd str.w r0, [sp, #221] ; 0xdd + b5ca: f8cd 00dd str.w r0, [sp, #221] ; 0xdd print(d, d.str); - b506: 4630 mov r0, r6 - b508: f89d 20c7 ldrb.w r2, [sp, #199] ; 0xc7 + b5ce: 4630 mov r0, r6 + b5d0: f89d 20c7 ldrb.w r2, [sp, #199] ; 0xc7 strcpy(d.str, str); - b50c: f88d 40e1 strb.w r4, [sp, #225] ; 0xe1 + b5d4: f88d 40e1 strb.w r4, [sp, #225] ; 0xe1 print(d, d.str); - b510: f7ff f97c bl a80c + b5d8: f7ff f8ea bl a7b0 break; - b514: e711 b.n b33a + b5dc: e711 b.n b402 block.print(d, "1/2"); - b516: 230f movs r3, #15 - b518: a908 add r1, sp, #32 - b51a: a831 add r0, sp, #196 ; 0xc4 - b51c: 22a1 movs r2, #161 ; 0xa1 - b51e: f88d 3026 strb.w r3, [sp, #38] ; 0x26 - b522: f01f f8f1 bl 2a708 + b5de: 230f movs r3, #15 + b5e0: a908 add r1, sp, #32 + b5e2: a831 add r0, sp, #196 ; 0xc4 + b5e4: 22a1 movs r2, #161 ; 0xa1 + b5e6: f88d 3026 strb.w r3, [sp, #38] ; 0x26 + b5ea: f01f f901 bl 2a7f0 strcpy(d.str, str); - b526: 4918 ldr r1, [pc, #96] ; (b588 ) - b528: f10d 02dd add.w r2, sp, #221 ; 0xdd + b5ee: 4918 ldr r1, [pc, #96] ; (b650 ) + b5f0: f10d 02dd add.w r2, sp, #221 ; 0xdd print(d, d.str); - b52c: 4623 mov r3, r4 + b5f4: 4623 mov r3, r4 strcpy(d.str, str); - b52e: 6808 ldr r0, [r1, #0] + b5f6: 6808 ldr r0, [r1, #0] print(d, d.str); - b530: 4641 mov r1, r8 - b532: 9200 str r2, [sp, #0] + b5f8: 4641 mov r1, r8 + b5fa: 9200 str r2, [sp, #0] strcpy(d.str, str); - b534: f8cd 00dd str.w r0, [sp, #221] ; 0xdd + b5fc: f8cd 00dd str.w r0, [sp, #221] ; 0xdd print(d, d.str); - b538: 4630 mov r0, r6 - b53a: f89d 20c7 ldrb.w r2, [sp, #199] ; 0xc7 - b53e: f7ff f965 bl a80c + b600: 4630 mov r0, r6 + b602: f89d 20c7 ldrb.w r2, [sp, #199] ; 0xc7 + b606: f7ff f8d3 bl a7b0 break; - b542: e6fa b.n b33a + b60a: e6fa b.n b402 display.fillTriangle(t.x+x0, t.y+y0, t.x+x1, t.y+y1, t.x+x2, t.y+y2, t.color); - b544: 2510 movs r5, #16 + b60c: 2510 movs r5, #16 display.clearDisplay(); - b546: 9007 str r0, [sp, #28] - b548: f00d f9c4 bl 188d4 + b60e: 9007 str r0, [sp, #28] + b610: f00d f9d2 bl 189b8 display.fillTriangle(t.x+x0, t.y+y0, t.x+x1, t.y+y1, t.x+x2, t.y+y2, t.color); - b54c: 2201 movs r2, #1 - b54e: 2334 movs r3, #52 ; 0x34 - b550: 9807 ldr r0, [sp, #28] - b552: e9cd 5202 strd r5, r2, [sp, #8] - b556: 9301 str r3, [sp, #4] - b558: 2204 movs r2, #4 - b55a: 234c movs r3, #76 ; 0x4c - b55c: 9200 str r2, [sp, #0] - b55e: 221c movs r2, #28 - b560: 4619 mov r1, r3 - b562: f01a fcf9 bl 25f58 + b614: 2201 movs r2, #1 + b616: 2334 movs r3, #52 ; 0x34 + b618: 9807 ldr r0, [sp, #28] + b61a: e9cd 5202 strd r5, r2, [sp, #8] + b61e: 9301 str r3, [sp, #4] + b620: 2204 movs r2, #4 + b622: 234c movs r3, #76 ; 0x4c + b624: 9200 str r2, [sp, #0] + b626: 221c movs r2, #28 + b628: 4619 mov r1, r3 + b62a: f01a fd0b bl 26044 display.fillTriangle((t.x+x0)-thickness, (t.y+y0)-(thickness*2), (t.x+x1)-thickness, (t.y+y1)+(thickness*2), (t.x+x2)+(thickness*2), t.y+y2, d.highlight?t.color:t.background); - b566: 234a movs r3, #74 ; 0x4a - b568: 2238 movs r2, #56 ; 0x38 - b56a: 9403 str r4, [sp, #12] - b56c: 2408 movs r4, #8 - b56e: 4619 mov r1, r3 - b570: 9807 ldr r0, [sp, #28] - b572: 9400 str r4, [sp, #0] - b574: e9cd 2501 strd r2, r5, [sp, #4] - b578: 2218 movs r2, #24 - b57a: f01a fced bl 25f58 + b62e: 234a movs r3, #74 ; 0x4a + b630: 2238 movs r2, #56 ; 0x38 + b632: 9403 str r4, [sp, #12] + b634: 2408 movs r4, #8 + b636: 4619 mov r1, r3 + b638: 9807 ldr r0, [sp, #28] + b63a: 9400 str r4, [sp, #0] + b63c: e9cd 2501 strd r2, r5, [sp, #4] + b640: 2218 movs r2, #24 + b642: f01a fcff bl 26044 display.display(); - b57e: e747 b.n b410 - b580: 200015d4 .word 0x200015d4 - b584: 200015cc .word 0x200015cc - b588: 200015c8 .word 0x200015c8 + b646: e747 b.n b4d8 + b648: 200015d4 .word 0x200015d4 + b64c: 200015cc .word 0x200015cc + b650: 200015c8 .word 0x200015c8 -0000b58c : +0000b654 : void renderFasStatus(BMCDataContainer d){ - b58c: b084 sub sp, #16 - b58e: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - b592: b0b6 sub sp, #216 ; 0xd8 - b594: 4604 mov r4, r0 - b596: ad3f add r5, sp, #252 ; 0xfc - b598: e885 000e stmia.w r5, {r1, r2, r3} - b59c: 6a43 ldr r3, [r0, #36] ; 0x24 - b59e: f893 3153 ldrb.w r3, [r3, #339] ; 0x153 + b654: b084 sub sp, #16 + b656: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + b65a: b0b6 sub sp, #216 ; 0xd8 + b65c: 4604 mov r4, r0 + b65e: ad3f add r5, sp, #252 ; 0xfc + b660: e885 000e stmia.w r5, {r1, r2, r3} + b664: 6a43 ldr r3, [r0, #36] ; 0x24 + b666: f893 3153 ldrb.w r3, [r3, #339] ; 0x153 if(sync.fas.connected()){ - b5a2: 07da lsls r2, r3, #31 - b5a4: d576 bpl.n b694 + b66a: 07da lsls r2, r3, #31 + b66c: d576 bpl.n b75c strcpy(d.str, "Connected"); - b5a6: 4bb2 ldr r3, [pc, #712] ; (b870 ) - b5a8: cb03 ldmia r3!, {r0, r1} - b5aa: 881b ldrh r3, [r3, #0] - b5ac: f8cd 0115 str.w r0, [sp, #277] ; 0x115 - b5b0: f8cd 1119 str.w r1, [sp, #281] ; 0x119 - b5b4: f8ad 311d strh.w r3, [sp, #285] ; 0x11d + b66e: 4bb2 ldr r3, [pc, #712] ; (b938 ) + b670: cb03 ldmia r3!, {r0, r1} + b672: 881b ldrh r3, [r3, #0] + b674: f8cd 0115 str.w r0, [sp, #277] ; 0x115 + b678: f8cd 1119 str.w r1, [sp, #281] ; 0x119 + b67c: f8ad 311d strh.w r3, [sp, #285] ; 0x11d d.crc = generateCrc(d); - b5b8: 22a1 movs r2, #161 ; 0xa1 - b5ba: 4629 mov r1, r5 - b5bc: a80d add r0, sp, #52 ; 0x34 - b5be: f01f f8a3 bl 2a708 - b5c2: f89d 6037 ldrb.w r6, [sp, #55] ; 0x37 + b680: 22a1 movs r2, #161 ; 0xa1 + b682: 4629 mov r1, r5 + b684: a80d add r0, sp, #52 ; 0x34 + b686: f01f f8b3 bl 2a7f0 + b68a: f89d 6037 ldrb.w r6, [sp, #55] ; 0x37 if(d.useSelected() && !d.useStringOnly()){ - b5c6: 0773 lsls r3, r6, #29 - b5c8: d521 bpl.n b60e + b68e: 0773 lsls r3, r6, #29 + b690: d521 bpl.n b6d6 uint8_t len = strlen(str); - b5ca: f10d 0076 add.w r0, sp, #118 ; 0x76 - b5ce: f023 fab7 bl 2eb40 + b692: f10d 0076 add.w r0, sp, #118 ; 0x76 + b696: f023 fad3 bl 2ec40 if(len==0){ - b5d2: 2800 cmp r0, #0 - b5d4: f000 809a beq.w b70c + b69a: 2800 cmp r0, #0 + b69c: f000 809a beq.w b7d4 uint8_t crc = 0; - b5d8: 2200 movs r2, #0 + b6a0: 2200 movs r2, #0 c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - b5da: f89d 8039 ldrb.w r8, [sp, #57] ; 0x39 + b6a2: f89d 8039 ldrb.w r8, [sp, #57] ; 0x39 uint8_t len = strlen(str); - b5de: fa5f fe80 uxtb.w lr, r0 - b5e2: f10d 0775 add.w r7, sp, #117 ; 0x75 + b6a6: fa5f fe80 uxtb.w lr, r0 + b6aa: f10d 0775 add.w r7, sp, #117 ; 0x75 for(uint8_t i = 0 ; i < len ; i++){ - b5e6: 4613 mov r3, r2 + b6ae: 4613 mov r3, r2 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b5e8: eb08 0c03 add.w ip, r8, r3 - b5ec: f817 1f01 ldrb.w r1, [r7, #1]! + b6b0: eb08 0c03 add.w ip, r8, r3 + b6b4: f817 1f01 ldrb.w r1, [r7, #1]! for(uint8_t i = 0 ; i < len ; i++){ - b5f0: 3301 adds r3, #1 + b6b8: 3301 adds r3, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b5f2: 4461 add r1, ip + b6ba: 4461 add r1, ip for(uint8_t i = 0 ; i < len ; i++){ - b5f4: b2db uxtb r3, r3 + b6bc: b2db uxtb r3, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b5f6: 404a eors r2, r1 + b6be: 404a eors r2, r1 for(uint8_t i = 0 ; i < len ; i++){ - b5f8: 459e cmp lr, r3 + b6c0: 459e cmp lr, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b5fa: b2d2 uxtb r2, r2 + b6c2: b2d2 uxtb r2, r2 for(uint8_t i = 0 ; i < len ; i++){ - b5fc: d8f4 bhi.n b5e8 + b6c4: d8f4 bhi.n b6b0 c += checkLast(d.type, d.strSelected) + (strlen(d.strSelected) * d.valueSelected); - b5fe: ea8e 0e02 eor.w lr, lr, r2 - b602: f8bd 3040 ldrh.w r3, [sp, #64] ; 0x40 - b606: fb00 e003 mla r0, r0, r3, lr - b60a: b2c0 uxtb r0, r0 - b60c: e01d b.n b64a + b6c6: ea8e 0e02 eor.w lr, lr, r2 + b6ca: f8bd 3040 ldrh.w r3, [sp, #64] ; 0x40 + b6ce: fb00 e003 mla r0, r0, r3, lr + b6d2: b2c0 uxtb r0, r0 + b6d4: e01d b.n b712 uint8_t len = strlen(str); - b60e: f10d 004d add.w r0, sp, #77 ; 0x4d - b612: f023 fa95 bl 2eb40 + b6d6: f10d 004d add.w r0, sp, #77 ; 0x4d + b6da: f023 fab1 bl 2ec40 if(len==0){ - b616: 2800 cmp r0, #0 - b618: d048 beq.n b6ac + b6de: 2800 cmp r0, #0 + b6e0: d048 beq.n b774 uint8_t crc = 0; - b61a: 2200 movs r2, #0 + b6e2: 2200 movs r2, #0 c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - b61c: f89d 8039 ldrb.w r8, [sp, #57] ; 0x39 + b6e4: f89d 8039 ldrb.w r8, [sp, #57] ; 0x39 uint8_t len = strlen(str); - b620: b2c7 uxtb r7, r0 - b622: f10d 0c4c add.w ip, sp, #76 ; 0x4c + b6e8: b2c7 uxtb r7, r0 + b6ea: f10d 0c4c add.w ip, sp, #76 ; 0x4c for(uint8_t i = 0 ; i < len ; i++){ - b626: 4613 mov r3, r2 + b6ee: 4613 mov r3, r2 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b628: eb08 0e03 add.w lr, r8, r3 - b62c: f81c 1f01 ldrb.w r1, [ip, #1]! + b6f0: eb08 0e03 add.w lr, r8, r3 + b6f4: f81c 1f01 ldrb.w r1, [ip, #1]! for(uint8_t i = 0 ; i < len ; i++){ - b630: 3301 adds r3, #1 + b6f8: 3301 adds r3, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b632: 4471 add r1, lr + b6fa: 4471 add r1, lr for(uint8_t i = 0 ; i < len ; i++){ - b634: b2db uxtb r3, r3 + b6fc: b2db uxtb r3, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b636: 404a eors r2, r1 + b6fe: 404a eors r2, r1 for(uint8_t i = 0 ; i < len ; i++){ - b638: 429f cmp r7, r3 + b700: 429f cmp r7, r3 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - b63a: b2d2 uxtb r2, r2 + b702: b2d2 uxtb r2, r2 for(uint8_t i = 0 ; i < len ; i++){ - b63c: d8f4 bhi.n b628 + b704: d8f4 bhi.n b6f0 c += checkLast(d.type, d.str) + (strlen(d.str) * d.value); - b63e: 4057 eors r7, r2 - b640: f8bd 303e ldrh.w r3, [sp, #62] ; 0x3e - b644: fb00 7003 mla r0, r0, r3, r7 - b648: b2c0 uxtb r0, r0 + b706: 4057 eors r7, r2 + b708: f8bd 303e ldrh.w r3, [sp, #62] ; 0x3e + b70c: fb00 7003 mla r0, r0, r3, r7 + b710: b2c0 uxtb r0, r0 c += d.prependValue; - b64a: f89d 203b ldrb.w r2, [sp, #59] ; 0x3b - b64e: f89d 303a ldrb.w r3, [sp, #58] ; 0x3a + b712: f89d 203b ldrb.w r2, [sp, #59] ; 0x3b + b716: f89d 303a ldrb.w r3, [sp, #58] ; 0x3a if(d.isOled()){ - b652: f89d 710f ldrb.w r7, [sp, #271] ; 0x10f + b71a: f89d 710f ldrb.w r7, [sp, #271] ; 0x10f c += d.prependValue; - b656: 4413 add r3, r2 - b658: f89d 203c ldrb.w r2, [sp, #60] ; 0x3c + b71e: 4413 add r3, r2 + b720: f89d 203c ldrb.w r2, [sp, #60] ; 0x3c if(d.isOled()){ - b65c: 2f16 cmp r7, #22 + b724: 2f16 cmp r7, #22 c += d.prependValue; - b65e: 4413 add r3, r2 - b660: f89d 203d ldrb.w r2, [sp, #61] ; 0x3d - b664: 4413 add r3, r2 - b666: f89d 204c ldrb.w r2, [sp, #76] ; 0x4c - b66a: 4413 add r3, r2 + b726: 4413 add r3, r2 + b728: f89d 203d ldrb.w r2, [sp, #61] ; 0x3d + b72c: 4413 add r3, r2 + b72e: f89d 204c ldrb.w r2, [sp, #76] ; 0x4c + b732: 4413 add r3, r2 c += (d.highlight*2); - b66c: f89d 2048 ldrb.w r2, [sp, #72] ; 0x48 + b734: f89d 2048 ldrb.w r2, [sp, #72] ; 0x48 c += d.prependValue; - b670: eb03 0342 add.w r3, r3, r2, lsl #1 - b674: 4418 add r0, r3 + b738: eb03 0342 add.w r3, r3, r2, lsl #1 + b73c: 4418 add r0, r3 c ^= d.colors; - b676: f89d 3038 ldrb.w r3, [sp, #56] ; 0x38 + b73e: f89d 3038 ldrb.w r3, [sp, #56] ; 0x38 c += d.prependValue; - b67a: b2c0 uxtb r0, r0 + b742: b2c0 uxtb r0, r0 c ^= d.colors; - b67c: ea86 0603 eor.w r6, r6, r3 - b680: ea86 0600 eor.w r6, r6, r0 + b744: ea86 0603 eor.w r6, r6, r3 + b748: ea86 0600 eor.w r6, r6, r0 d.crc = generateCrc(d); - b684: f88d 60fe strb.w r6, [sp, #254] ; 0xfe + b74c: f88d 60fe strb.w r6, [sp, #254] ; 0xfe if(d.isOled()){ - b688: d012 beq.n b6b0 + b750: d012 beq.n b778 } - b68a: b036 add sp, #216 ; 0xd8 - b68c: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - b690: b004 add sp, #16 - b692: 4770 bx lr + b752: b036 add sp, #216 ; 0xd8 + b754: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + b758: b004 add sp, #16 + b75a: 4770 bx lr strcpy(d.str, "Not Connected"); - b694: 4b77 ldr r3, [pc, #476] ; (b874 ) - b696: cb07 ldmia r3!, {r0, r1, r2} - b698: 881b ldrh r3, [r3, #0] - b69a: f8cd 0115 str.w r0, [sp, #277] ; 0x115 - b69e: f8cd 1119 str.w r1, [sp, #281] ; 0x119 - b6a2: f8cd 211d str.w r2, [sp, #285] ; 0x11d - b6a6: f8ad 3121 strh.w r3, [sp, #289] ; 0x121 - b6aa: e785 b.n b5b8 - b6ac: 4607 mov r7, r0 - b6ae: e7c7 b.n b640 + b75c: 4b77 ldr r3, [pc, #476] ; (b93c ) + b75e: cb07 ldmia r3!, {r0, r1, r2} + b760: 881b ldrh r3, [r3, #0] + b762: f8cd 0115 str.w r0, [sp, #277] ; 0x115 + b766: f8cd 1119 str.w r1, [sp, #281] ; 0x119 + b76a: f8cd 211d str.w r2, [sp, #285] ; 0x11d + b76e: f8ad 3121 strh.w r3, [sp, #289] ; 0x121 + b772: e785 b.n b680 + b774: 4607 mov r7, r0 + b776: e7c7 b.n b708 __oledMuxSelect(d.index); - b6b0: f8bd 80fc ldrh.w r8, [sp, #252] ; 0xfc - b6b4: fa5f f088 uxtb.w r0, r8 - b6b8: f7fe fe32 bl a320 + b778: f8bd 80fc ldrh.w r8, [sp, #252] ; 0xfc + b77c: fa5f f088 uxtb.w r0, r8 + b780: f7fe fda0 bl a2c4 fasHandler.renderStatusOled(oled[d.index], d); - b6bc: 4629 mov r1, r5 - b6be: ebc8 05c8 rsb r5, r8, r8, lsl #3 - b6c2: a80d add r0, sp, #52 ; 0x34 - b6c4: 22a1 movs r2, #161 ; 0xa1 - b6c6: ea4f 0ac8 mov.w sl, r8, lsl #3 - b6ca: f01f f81d bl 2a708 + b784: 4629 mov r1, r5 + b786: ebc8 05c8 rsb r5, r8, r8, lsl #3 + b78a: a80d add r0, sp, #52 ; 0x34 + b78c: 22a1 movs r2, #161 ; 0xa1 + b78e: ea4f 0ac8 mov.w sl, r8, lsl #3 + b792: f01f f82d bl 2a7f0 if(statusBlock.index < 0){ - b6ce: f994 318a ldrsb.w r3, [r4, #394] ; 0x18a - b6d2: 00ed lsls r5, r5, #3 - b6d4: 2b00 cmp r3, #0 - b6d6: f505 7901 add.w r9, r5, #516 ; 0x204 - b6da: 44a1 add r9, r4 - b6dc: db18 blt.n b710 + b796: f994 318a ldrsb.w r3, [r4, #394] ; 0x18a + b79a: 00ed lsls r5, r5, #3 + b79c: 2b00 cmp r3, #0 + b79e: f505 7901 add.w r9, r5, #516 ; 0x204 + b7a2: 44a1 add r9, r4 + b7a4: db18 blt.n b7d8 } else if(!statusBlock.isOled() || statusBlock.index != d.index){ - b6de: f894 218b ldrb.w r2, [r4, #395] ; 0x18b - b6e2: 2a16 cmp r2, #22 - b6e4: d102 bne.n b6ec - b6e6: 4598 cmp r8, r3 - b6e8: f000 8092 beq.w b810 + b7a6: f894 218b ldrb.w r2, [r4, #395] ; 0x18b + b7aa: 2a16 cmp r2, #22 + b7ac: d102 bne.n b7b4 + b7ae: 4598 cmp r8, r3 + b7b0: f000 8092 beq.w b8d8 block.print(d, d.str); - b6ec: f10d 044d add.w r4, sp, #77 ; 0x4d - b6f0: f89d 3048 ldrb.w r3, [sp, #72] ; 0x48 - b6f4: f89d 2037 ldrb.w r2, [sp, #55] ; 0x37 - b6f8: 4631 mov r1, r6 - b6fa: 4648 mov r0, r9 - b6fc: 9400 str r4, [sp, #0] - b6fe: f7ff f885 bl a80c - } - b702: b036 add sp, #216 ; 0xd8 - b704: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - b708: b004 add sp, #16 - b70a: 4770 bx lr - b70c: 4686 mov lr, r0 - b70e: e778 b.n b602 + b7b4: f10d 044d add.w r4, sp, #77 ; 0x4d + b7b8: f89d 3048 ldrb.w r3, [sp, #72] ; 0x48 + b7bc: f89d 2037 ldrb.w r2, [sp, #55] ; 0x37 + b7c0: 4631 mov r1, r6 + b7c2: 4648 mov r0, r9 + b7c4: 9400 str r4, [sp, #0] + b7c6: f7fe fff3 bl a7b0 + } + b7ca: b036 add sp, #216 ; 0xd8 + b7cc: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + b7d0: b004 add sp, #16 + b7d2: 4770 bx lr + b7d4: 4686 mov lr, r0 + b7d6: e778 b.n b6ca active = false; - b710: 2200 movs r2, #0 + b7d8: 2200 movs r2, #0 statusBlock.type = BMC_DEVICE_ID_OLED; - b712: f884 718b strb.w r7, [r4, #395] ; 0x18b + b7da: f884 718b strb.w r7, [r4, #395] ; 0x18b t_reset = true; - b716: 2701 movs r7, #1 + b7de: 2701 movs r7, #1 statusBlock.index = d.index; - b718: f884 818a strb.w r8, [r4, #394] ; 0x18a - b71c: f884 218c strb.w r2, [r4, #396] ; 0x18c + b7e0: f884 818a strb.w r8, [r4, #394] ; 0x18a + b7e4: f884 218c strb.w r2, [r4, #396] ; 0x18c if(statusBlock.active != sync.fas.connected()){ - b720: f8d4 1180 ldr.w r1, [r4, #384] ; 0x180 - b724: f891 3153 ldrb.w r3, [r1, #339] ; 0x153 - b728: f003 0301 and.w r3, r3, #1 - b72c: 4293 cmp r3, r2 - b72e: d077 beq.n b820 + b7e8: f8d4 1180 ldr.w r1, [r4, #384] ; 0x180 + b7ec: f891 3153 ldrb.w r3, [r1, #339] ; 0x153 + b7f0: f003 0301 and.w r3, r3, #1 + b7f4: 4293 cmp r3, r2 + b7f6: d077 beq.n b8e8 statusBlock.active = sync.fas.connected(); - b730: f884 318c strb.w r3, [r4, #396] ; 0x18c + b7f8: f884 318c strb.w r3, [r4, #396] ; 0x18c if(!statusBlock.active){ - b734: 2b00 cmp r3, #0 - b736: d0d9 beq.n b6ec + b7fc: 2b00 cmp r3, #0 + b7fe: d0d9 beq.n b7b4 return bitRead(flags, bit); - b738: f891 e283 ldrb.w lr, [r1, #643] ; 0x283 + b800: f891 e283 ldrb.w lr, [r1, #643] ; 0x283 if(statusTunerBlock.active != sync.fas.tuner.isOn()){ - b73c: f894 318f ldrb.w r3, [r4, #399] ; 0x18f - b740: f00e 0e01 and.w lr, lr, #1 - b744: 4573 cmp r3, lr - b746: d001 beq.n b74c + b804: f894 318f ldrb.w r3, [r4, #399] ; 0x18f + b808: f00e 0e01 and.w lr, lr, #1 + b80c: 4573 cmp r3, lr + b80e: d001 beq.n b814 statusTunerBlock.active = sync.fas.tuner.isOn(); - b748: f884 e18f strb.w lr, [r4, #399] ; 0x18f + b810: f884 e18f strb.w lr, [r4, #399] ; 0x18f display.fillScreen(BMC_OLED_BLACK); - b74c: f109 000c add.w r0, r9, #12 - b750: 2100 movs r1, #0 - b752: f01a f84d bl 257f0 - b756: 2701 movs r7, #1 + b814: f109 000c add.w r0, r9, #12 + b818: 2100 movs r1, #0 + b81a: f01a f85f bl 258dc + b81e: 2701 movs r7, #1 if(statusTunerBlock.active){ - b758: f894 e18f ldrb.w lr, [r4, #399] ; 0x18f + b820: f894 e18f ldrb.w lr, [r4, #399] ; 0x18f BMCDiplayHandlerData t = BMC_DEFAULT_DISPLAY_DATA_OLED; - b75c: f8df c118 ldr.w ip, [pc, #280] ; b878 - b760: ae08 add r6, sp, #32 + b824: f8df c118 ldr.w ip, [pc, #280] ; b940 + b828: ae08 add r6, sp, #32 BMC_SSD1306& display = block.display; - b762: f505 7504 add.w r5, r5, #528 ; 0x210 + b82a: f505 7504 add.w r5, r5, #528 ; 0x210 BMCDiplayHandlerData t = BMC_DEFAULT_DISPLAY_DATA_OLED; - b766: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} - b76a: c60f stmia r6!, {r0, r1, r2, r3} - b76c: f8dc 3000 ldr.w r3, [ip] + b82e: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + b832: c60f stmia r6!, {r0, r1, r2, r3} + b834: f8dc 3000 ldr.w r3, [ip] BMC_SSD1306& display = block.display; - b770: 4425 add r5, r4 + b838: 4425 add r5, r4 BMCDiplayHandlerData t = BMC_DEFAULT_DISPLAY_DATA_OLED; - b772: 8033 strh r3, [r6, #0] + b83a: 8033 strh r3, [r6, #0] if(statusTunerBlock.active){ - b774: f1be 0f00 cmp.w lr, #0 - b778: d160 bne.n b83c + b83c: f1be 0f00 cmp.w lr, #0 + b840: d160 bne.n b904 if(renderLooper(display, statusLooperData, t, t_reset)){ - b77a: ab09 add r3, sp, #36 ; 0x24 - b77c: 9704 str r7, [sp, #16] - b77e: 466e mov r6, sp - b780: cb0f ldmia r3, {r0, r1, r2, r3} - b782: c607 stmia r6!, {r0, r1, r2} - b784: 8033 strh r3, [r6, #0] - b786: f504 72dd add.w r2, r4, #442 ; 0x1ba - b78a: 9b08 ldr r3, [sp, #32] - b78c: 4629 mov r1, r5 - b78e: f504 70b8 add.w r0, r4, #368 ; 0x170 - b792: f7fe fc5d bl a050 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)> - b796: f8d4 3180 ldr.w r3, [r4, #384] ; 0x180 + b842: ab09 add r3, sp, #36 ; 0x24 + b844: 9704 str r7, [sp, #16] + b846: 466e mov r6, sp + b848: cb0f ldmia r3, {r0, r1, r2, r3} + b84a: c607 stmia r6!, {r0, r1, r2} + b84c: 8033 strh r3, [r6, #0] + b84e: f504 72dd add.w r2, r4, #442 ; 0x1ba + b852: 9b08 ldr r3, [sp, #32] + b854: 4629 mov r1, r5 + b856: f504 70b8 add.w r0, r4, #368 ; 0x170 + b85a: f7fe fbcb bl 9ff4 (BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool)> + b85e: f8d4 3180 ldr.w r3, [r4, #384] ; 0x180 if(currentBeat != bitRead(t_beats, 7) || t_reset){ - b79a: f894 61b8 ldrb.w r6, [r4, #440] ; 0x1b8 - b79e: f8b3 913c ldrh.w r9, [r3, #316] ; 0x13c - b7a2: f3c9 0980 ubfx r9, r9, #2, #1 - b7a6: ebb9 1fd6 cmp.w r9, r6, lsr #7 - b7aa: d100 bne.n b7ae - b7ac: b3a7 cbz r7, b818 + b862: f894 61b8 ldrb.w r6, [r4, #440] ; 0x1b8 + b866: f8b3 913c ldrh.w r9, [r3, #316] ; 0x13c + b86a: f3c9 0980 ubfx r9, r9, #2, #1 + b86e: ebb9 1fd6 cmp.w r9, r6, lsr #7 + b872: d100 bne.n b876 + b874: b3a7 cbz r7, b8e0 if(pos > 0){ - b7ae: f016 060f ands.w r6, r6, #15 - b7b2: d05a beq.n b86a + b876: f016 060f ands.w r6, r6, #15 + b87a: d05a beq.n b932 x2 = barWidth*(pos-1); - b7b4: 1e71 subs r1, r6, #1 - b7b6: 0149 lsls r1, r1, #5 - b7b8: b289 uxth r1, r1 + b87c: 1e71 subs r1, r6, #1 + b87e: 0149 lsls r1, r1, #5 + b880: b289 uxth r1, r1 if(currentBeat){ - b7ba: f1b9 0f00 cmp.w r9, #0 - b7be: d01f beq.n b800 + b882: f1b9 0f00 cmp.w r9, #0 + b886: d01f beq.n b8c8 display.drawFastHLine(t.x + x2, y, barWidth, t.background); - b7c0: ebaa 0708 sub.w r7, sl, r8 - b7c4: f04f 0c00 mov.w ip, #0 - b7c8: b209 sxth r1, r1 - b7ca: 2320 movs r3, #32 - b7cc: eb04 07c7 add.w r7, r4, r7, lsl #3 - b7d0: 221f movs r2, #31 - b7d2: f8d7 0210 ldr.w r0, [r7, #528] ; 0x210 - b7d6: f8cd c000 str.w ip, [sp] - b7da: f8d0 803c ldr.w r8, [r0, #60] ; 0x3c - b7de: 4628 mov r0, r5 - b7e0: 47c0 blx r8 + b888: ebaa 0708 sub.w r7, sl, r8 + b88c: f04f 0c00 mov.w ip, #0 + b890: b209 sxth r1, r1 + b892: 2320 movs r3, #32 + b894: eb04 07c7 add.w r7, r4, r7, lsl #3 + b898: 221f movs r2, #31 + b89a: f8d7 0210 ldr.w r0, [r7, #528] ; 0x210 + b89e: f8cd c000 str.w ip, [sp] + b8a2: f8d0 803c ldr.w r8, [r0, #60] ; 0x3c + b8a6: 4628 mov r0, r5 + b8a8: 47c0 blx r8 display.drawFastHLine(t.x + x, y, barWidth, t.color); - b7e2: f8d7 3210 ldr.w r3, [r7, #528] ; 0x210 - b7e6: 0171 lsls r1, r6, #5 + b8aa: f8d7 3210 ldr.w r3, [r7, #528] ; 0x210 + b8ae: 0171 lsls r1, r6, #5 pos++; - b7e8: 3601 adds r6, #1 + b8b0: 3601 adds r6, #1 display.drawFastHLine(t.x + x, y, barWidth, t.color); - b7ea: 2201 movs r2, #1 - b7ec: 4628 mov r0, r5 + b8b2: 2201 movs r2, #1 + b8b4: 4628 mov r0, r5 pos++; - b7ee: b2f6 uxtb r6, r6 + b8b6: b2f6 uxtb r6, r6 display.drawFastHLine(t.x + x, y, barWidth, t.color); - b7f0: 9200 str r2, [sp, #0] - b7f2: 221f movs r2, #31 - b7f4: 6bdf ldr r7, [r3, #60] ; 0x3c - b7f6: 2320 movs r3, #32 - b7f8: 47b8 blx r7 + b8b8: 9200 str r2, [sp, #0] + b8ba: 221f movs r2, #31 + b8bc: 6bdf ldr r7, [r3, #60] ; 0x3c + b8be: 2320 movs r3, #32 + b8c0: 47b8 blx r7 pos = 0; - b7fa: 2e04 cmp r6, #4 - b7fc: bf28 it cs - b7fe: 2600 movcs r6, #0 + b8c2: 2e04 cmp r6, #4 + b8c4: bf28 it cs + b8c6: 2600 movcs r6, #0 t_beats = pos | (currentBeat << 7); - b800: ea46 16c9 orr.w r6, r6, r9, lsl #7 - b804: f884 61b8 strb.w r6, [r4, #440] ; 0x1b8 + b8c8: ea46 16c9 orr.w r6, r6, r9, lsl #7 + b8cc: f884 61b8 strb.w r6, [r4, #440] ; 0x1b8 display.display(); - b808: 4628 mov r0, r5 - b80a: f00d f8cf bl 189ac - b80e: e73c b.n b68a + b8d0: 4628 mov r0, r5 + b8d2: f00d f8dd bl 18a90 + b8d6: e73c b.n b752 if(statusBlock.active != sync.fas.connected()){ - b810: f894 218c ldrb.w r2, [r4, #396] ; 0x18c + b8d8: f894 218c ldrb.w r2, [r4, #396] ; 0x18c bool t_reset = false; - b814: 2700 movs r7, #0 - b816: e783 b.n b720 + b8dc: 2700 movs r7, #0 + b8de: e783 b.n b7e8 if(show){ - b818: 2800 cmp r0, #0 - b81a: f43f af36 beq.w b68a - b81e: e7f3 b.n b808 + b8e0: 2800 cmp r0, #0 + b8e2: f43f af36 beq.w b752 + b8e6: e7f3 b.n b8d0 if(!statusBlock.active){ - b820: 2a00 cmp r2, #0 - b822: f43f af63 beq.w b6ec - b826: f891 e283 ldrb.w lr, [r1, #643] ; 0x283 + b8e8: 2a00 cmp r2, #0 + b8ea: f43f af63 beq.w b7b4 + b8ee: f891 e283 ldrb.w lr, [r1, #643] ; 0x283 if(statusTunerBlock.active != sync.fas.tuner.isOn()){ - b82a: f894 318f ldrb.w r3, [r4, #399] ; 0x18f - b82e: f00e 0e01 and.w lr, lr, #1 - b832: 4573 cmp r3, lr - b834: d188 bne.n b748 + b8f2: f894 318f ldrb.w r3, [r4, #399] ; 0x18f + b8f6: f00e 0e01 and.w lr, lr, #1 + b8fa: 4573 cmp r3, lr + b8fc: d188 bne.n b810 if(t_reset){ - b836: 2f00 cmp r7, #0 - b838: d090 beq.n b75c - b83a: e787 b.n b74c + b8fe: 2f00 cmp r7, #0 + b900: d090 beq.n b824 + b902: e787 b.n b814 if(renderTuner(display, statusTunerData, t, t_reset)){ - b83c: 2201 movs r2, #1 - b83e: 2300 movs r3, #0 - b840: 2120 movs r1, #32 - b842: 9203 str r2, [sp, #12] - b844: 9300 str r3, [sp, #0] - b846: e9cd 2204 strd r2, r2, [sp, #16] - b84a: 2280 movs r2, #128 ; 0x80 - b84c: e9cd 3706 strd r3, r7, [sp, #24] - b850: e9cd 2101 strd r2, r1, [sp, #4] - b854: f504 72c8 add.w r2, r4, #400 ; 0x190 - b858: 4629 mov r1, r5 - b85a: f8d4 0180 ldr.w r0, [r4, #384] ; 0x180 - b85e: f7fb fd0f bl 7280 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]> - b862: 2800 cmp r0, #0 - b864: f43f af11 beq.w b68a - b868: e7ce b.n b808 + b904: 2201 movs r2, #1 + b906: 2300 movs r3, #0 + b908: 2120 movs r1, #32 + b90a: 9203 str r2, [sp, #12] + b90c: 9300 str r3, [sp, #0] + b90e: e9cd 2204 strd r2, r2, [sp, #16] + b912: 2280 movs r2, #128 ; 0x80 + b914: e9cd 3706 strd r3, r7, [sp, #24] + b918: e9cd 2101 strd r2, r1, [sp, #4] + b91c: f504 72c8 add.w r2, r4, #400 ; 0x190 + b920: 4629 mov r1, r5 + b922: f8d4 0180 ldr.w r0, [r4, #384] ; 0x180 + b926: f7fb fc7b bl 7220 (BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0]> + b92a: 2800 cmp r0, #0 + b92c: f43f af11 beq.w b752 + b930: e7ce b.n b8d0 uint16_t x2 = (t.w*0.75); - b86a: 2160 movs r1, #96 ; 0x60 - b86c: e7a5 b.n b7ba - b86e: bf00 nop - b870: 200015bc .word 0x200015bc - b874: 200015b8 .word 0x200015b8 - b878: 20000838 .word 0x20000838 - -0000b87c : + b932: 2160 movs r1, #96 ; 0x60 + b934: e7a5 b.n b882 + b936: bf00 nop + b938: 200015bc .word 0x200015bc + b93c: 200015b8 .word 0x200015b8 + b940: 20000838 .word 0x20000838 + +0000b944 : uint8_t value, uint8_t dat){ - b87c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - b880: ed2d 8b04 vpush {d8-d9} - b884: f5ad 7d3f sub.w sp, sp, #764 ; 0x2fc - b888: 469b mov fp, r3 - b88a: 460e mov r6, r1 + b944: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + b948: ed2d 8b04 vpush {d8-d9} + b94c: f5ad 7d3f sub.w sp, sp, #764 ; 0x2fc + b950: 469b mov fp, r3 + b952: 460e mov r6, r1 data.offset = globals.offset; - b88c: f500 5a80 add.w sl, r0, #4096 ; 0x1000 + b954: f500 5a80 add.w sl, r0, #4096 ; 0x1000 uint8_t value, uint8_t dat){ - b890: af2e add r7, sp, #184 ; 0xb8 - b892: 4605 mov r5, r0 - b894: 4691 mov r9, r2 - b896: f897 327c ldrb.w r3, [r7, #636] ; 0x27c + b958: af2e add r7, sp, #184 ; 0xb8 + b95a: 4605 mov r5, r0 + b95c: 4691 mov r9, r2 + b95e: f897 327c ldrb.w r3, [r7, #636] ; 0x27c BMCDataContainer data; - b89a: f107 0454 add.w r4, r7, #84 ; 0x54 + b962: f107 0454 add.w r4, r7, #84 ; 0x54 uint8_t value, uint8_t dat){ - b89e: f8b7 8278 ldrh.w r8, [r7, #632] ; 0x278 + b966: f8b7 8278 ldrh.w r8, [r7, #632] ; 0x278 BMCDataContainer data; - b8a2: 22a1 movs r2, #161 ; 0xa1 + b96a: 22a1 movs r2, #161 ; 0xa1 uint8_t value, uint8_t dat){ - b8a4: 62fb str r3, [r7, #44] ; 0x2c + b96c: 62fb str r3, [r7, #44] ; 0x2c BMCDataContainer data; - b8a6: 4620 mov r0, r4 + b96e: 4620 mov r0, r4 uint8_t value, uint8_t dat){ - b8a8: f897 3280 ldrb.w r3, [r7, #640] ; 0x280 + b970: f897 3280 ldrb.w r3, [r7, #640] ; 0x280 BMCDataContainer data; - b8ac: 49b3 ldr r1, [pc, #716] ; (bb7c ) + b974: 49b3 ldr r1, [pc, #716] ; (bc44 ) uint8_t value, uint8_t dat){ - b8ae: 627b str r3, [r7, #36] ; 0x24 + b976: 627b str r3, [r7, #36] ; 0x24 BMCDataContainer data; - b8b0: f01e ff2a bl 2a708 + b978: f01e ff3a bl 2a7f0 if(eventIndex == 0 && group == BMC_DEVICE_GROUP_DISPLAY){ - b8b4: f1b8 0f00 cmp.w r8, #0 - b8b8: bf08 it eq - b8ba: 2e08 cmpeq r6, #8 + b97c: f1b8 0f00 cmp.w r8, #0 + b980: bf08 it eq + b982: 2e08 cmpeq r6, #8 data.offset = globals.offset; - b8bc: f89a 2808 ldrb.w r2, [sl, #2056] ; 0x808 + b984: f89a 2808 ldrb.w r2, [sl, #2056] ; 0x808 data.index = deviceIndex; - b8c0: f8a4 b000 strh.w fp, [r4] + b988: f8a4 b000 strh.w fp, [r4] if(eventIndex == 0 && group == BMC_DEVICE_GROUP_DISPLAY){ - b8c4: bf0c ite eq - b8c6: 2301 moveq r3, #1 - b8c8: 2300 movne r3, #0 + b98c: bf0c ite eq + b98e: 2301 moveq r3, #1 + b990: 2300 movne r3, #0 data.offset = globals.offset; - b8ca: 74a2 strb r2, [r4, #18] + b992: 74a2 strb r2, [r4, #18] if(eventIndex == 0 && group == BMC_DEVICE_GROUP_DISPLAY){ - b8cc: 62bb str r3, [r7, #40] ; 0x28 - b8ce: d14d bne.n b96c + b994: 62bb str r3, [r7, #40] ; 0x28 + b996: d14d bne.n ba34 return bitRead(settings.flags, bit); - b8d0: f8da 37fc ldr.w r3, [sl, #2044] ; 0x7fc + b998: f8da 37fc ldr.w r3, [sl, #2044] ; 0x7fc displayType = t_value; - b8d4: f884 9013 strb.w r9, [r4, #19] - b8d8: 681b ldr r3, [r3, #0] + b99c: f884 9013 strb.w r9, [r4, #19] + b9a0: 681b ldr r3, [r3, #0] if(settings.getDisplayNames()){ - b8da: 051b lsls r3, r3, #20 - b8dc: d54a bpl.n b974 + b9a2: 051b lsls r3, r3, #20 + b9a4: d551 bpl.n ba4a if(data.isOled() && store.layers[layer].oled[deviceIndex].name == 0){ - b8de: f1b9 0f16 cmp.w r9, #22 - b8e2: d111 bne.n b908 - b8e4: f8da 286c ldr.w r2, [sl, #2156] ; 0x86c - b8e8: eb0b 034b add.w r3, fp, fp, lsl #1 - b8ec: f241 51d3 movw r1, #5587 ; 0x15d3 - b8f0: 7812 ldrb r2, [r2, #0] - b8f2: eb02 1042 add.w r0, r2, r2, lsl #5 - b8f6: eb02 0280 add.w r2, r2, r0, lsl #2 - b8fa: 4413 add r3, r2 - b8fc: 442b add r3, r5 - b8fe: f813 8001 ldrb.w r8, [r3, r1] - b902: f1b8 0f00 cmp.w r8, #0 - b906: d037 beq.n b978 + b9a6: f1b9 0f16 cmp.w r9, #22 + b9aa: d111 bne.n b9d0 + b9ac: f8da 286c ldr.w r2, [sl, #2156] ; 0x86c + b9b0: eb0b 034b add.w r3, fp, fp, lsl #1 + b9b4: f241 51d3 movw r1, #5587 ; 0x15d3 + b9b8: 7812 ldrb r2, [r2, #0] + b9ba: eb02 1042 add.w r0, r2, r2, lsl #5 + b9be: eb02 0280 add.w r2, r2, r0, lsl #2 + b9c2: 4413 add r3, r2 + b9c4: 442b add r3, r5 + b9c6: f813 8001 ldrb.w r8, [r3, r1] + b9ca: f1b8 0f00 cmp.w r8, #0 + b9ce: d03e beq.n ba4e bmcStoreName t; - b908: 2300 movs r3, #0 + b9d0: 2300 movs r3, #0 editor.getDeviceNameText(deviceId, deviceIndex, t.name); - b90a: f642 409c movw r0, #11420 ; 0x2c9c - b90e: 465a mov r2, fp - b910: 4649 mov r1, r9 + b9d2: f642 40bc movw r0, #11452 ; 0x2cbc + b9d6: 465a mov r2, fp + b9d8: 4649 mov r1, r9 return false; - b912: 4698 mov r8, r3 + b9da: 4698 mov r8, r3 editor.getDeviceNameText(deviceId, deviceIndex, t.name); - b914: 4428 add r0, r5 + b9dc: 4428 add r0, r5 bmcStoreName t; - b916: f887 31ac strb.w r3, [r7, #428] ; 0x1ac + b9de: f887 31ac strb.w r3, [r7, #428] ; 0x1ac display.renderBlock(data); - b91a: f643 3638 movw r6, #15160 ; 0x3b38 + b9e2: f643 3658 movw r6, #15192 ; 0x3b58 bmcStoreName t; - b91e: e9c7 3367 strd r3, r3, [r7, #412] ; 0x19c - b922: e9c7 3369 strd r3, r3, [r7, #420] ; 0x1a4 + b9e6: e9c7 3367 strd r3, r3, [r7, #412] ; 0x19c + b9ea: e9c7 3369 strd r3, r3, [r7, #420] ; 0x1a4 editor.getDeviceNameText(deviceId, deviceIndex, t.name); - b926: f507 73ce add.w r3, r7, #412 ; 0x19c + b9ee: f507 73ce add.w r3, r7, #412 ; 0x19c display.renderBlock(data); - b92a: 442e add r6, r5 + b9f2: 442e add r6, r5 editor.getDeviceNameText(deviceId, deviceIndex, t.name); - b92c: f7fc f90e bl 7b4c + b9f4: f7fc f87a bl 7aec data.type = 255; - b930: 23ff movs r3, #255 ; 0xff + b9f8: 23ff movs r3, #255 ; 0xff strcpy(data.str, t.name); - b932: f507 71ce add.w r1, r7, #412 ; 0x19c - b936: f107 006d add.w r0, r7, #109 ; 0x6d + b9fa: f507 71ce add.w r1, r7, #412 ; 0x19c + b9fe: f107 006d add.w r0, r7, #109 ; 0x6d data.type = 255; - b93a: 7163 strb r3, [r4, #5] + ba02: 7163 strb r3, [r4, #5] strcpy(data.str, t.name); - b93c: f023 f81e bl 2e97c + ba04: f023 f82a bl 2ea5c data.crc = 255; - b940: f640 03ff movw r3, #2303 ; 0x8ff + ba08: f640 03ff movw r3, #2303 ; 0x8ff display.renderBlock(data); - b944: f107 0160 add.w r1, r7, #96 ; 0x60 - b948: 2295 movs r2, #149 ; 0x95 - b94a: 4668 mov r0, sp + ba0c: f107 0160 add.w r1, r7, #96 ; 0x60 + ba10: 2295 movs r2, #149 ; 0x95 + ba12: 4668 mov r0, sp data.crc = 255; - b94c: 8063 strh r3, [r4, #2] + ba14: 8063 strh r3, [r4, #2] display.renderBlock(data); - b94e: f01e fedb bl 2a708 - b952: 4630 mov r0, r6 - b954: e894 000e ldmia.w r4, {r1, r2, r3} - b958: f7ff f840 bl a9dc -} - b95c: 4640 mov r0, r8 - b95e: f507 7711 add.w r7, r7, #580 ; 0x244 - b962: 46bd mov sp, r7 - b964: ecbd 8b04 vpop {d8-d9} - b968: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + ba16: f01e feeb bl 2a7f0 + ba1a: 4630 mov r0, r6 + ba1c: e894 000e ldmia.w r4, {r1, r2, r3} + ba20: f7fe ffae bl a980 +} + ba24: 4640 mov r0, r8 + ba26: f507 7711 add.w r7, r7, #580 ; 0x244 + ba2a: 46bd mov sp, r7 + ba2c: ecbd 8b04 vpop {d8-d9} + ba30: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(eventIndex == 0 || eventIndex > BMC_MAX_EVENTS_LIBRARY){ - b96c: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff - b970: 2bc7 cmp r3, #199 ; 0xc7 - b972: d909 bls.n b988 + ba34: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff + ba38: 2bc7 cmp r3, #199 ; 0xc7 + ba3a: d806 bhi.n ba4a + if(e.type == BMC_NONE){ + ba3c: eb05 00c8 add.w r0, r5, r8, lsl #3 + ba40: f890 3032 ldrb.w r3, [r0, #50] ; 0x32 + ba44: 6178 str r0, [r7, #20] + ba46: 623b str r3, [r7, #32] + ba48: b94b cbnz r3, ba5e return (stopwatch.getState() == 1) ? 100 : 0; - b974: f04f 0800 mov.w r8, #0 + ba4a: f04f 0800 mov.w r8, #0 } - b978: 4640 mov r0, r8 - b97a: f507 7711 add.w r7, r7, #580 ; 0x244 - b97e: 46bd mov sp, r7 - b980: ecbd 8b04 vpop {d8-d9} - b984: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - if(e.type == BMC_NONE){ - b988: eb05 00c8 add.w r0, r5, r8, lsl #3 - b98c: f890 3032 ldrb.w r3, [r0, #50] ; 0x32 - b990: 6178 str r0, [r7, #20] - b992: 623b str r3, [r7, #32] - b994: 2b00 cmp r3, #0 - b996: d0ed beq.n b974 + ba4e: 4640 mov r0, r8 + ba50: f507 7711 add.w r7, r7, #580 ; 0x244 + ba54: 46bd mov sp, r7 + ba56: ecbd 8b04 vpop {d8-d9} + ba5a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} uint32_t event = e.event; - b998: 6b41 ldr r1, [r0, #52] ; 0x34 + ba5e: 6b41 ldr r1, [r0, #52] ; 0x34 if(forceEnable){ - b99a: 2e03 cmp r6, #3 + ba60: 2e03 cmp r6, #3 data.type = e.type; - b99c: 7163 strb r3, [r4, #5] + ba62: 7163 strb r3, [r4, #5] data.byteB = BMC_GET_BYTE(1, event); - b99e: f3c1 2307 ubfx r3, r1, #8, #8 + ba64: f3c1 2307 ubfx r3, r1, #8, #8 data.setScroll(e.settings, value, group==BMC_DEVICE_GROUP_ENCODER); - b9a2: f890 8031 ldrb.w r8, [r0, #49] ; 0x31 - b9a6: f8b0 c034 ldrh.w ip, [r0, #52] ; 0x34 + ba68: f890 8031 ldrb.w r8, [r0, #49] ; 0x31 + ba6c: f8b0 c034 ldrh.w ip, [r0, #52] ; 0x34 data.byteA = BMC_GET_BYTE(0, event); - b9aa: b2c8 uxtb r0, r1 + ba70: b2c8 uxtb r0, r1 data.byteB = BMC_GET_BYTE(1, event); - b9ac: 61bb str r3, [r7, #24] + ba72: 61bb str r3, [r7, #24] data.byteC = BMC_GET_BYTE(2, event); - b9ae: f3c1 4307 ubfx r3, r1, #16, #8 + ba74: f3c1 4307 ubfx r3, r1, #16, #8 direction = bitRead(settings, 1); - b9b2: f3c8 0e40 ubfx lr, r8, #1, #1 + ba78: f3c8 0e40 ubfx lr, r8, #1, #1 data.byteA = BMC_GET_BYTE(0, event); - b9b6: 61f8 str r0, [r7, #28] + ba7c: 61f8 str r0, [r7, #28] data.byteC = BMC_GET_BYTE(2, event); - b9b8: 613b str r3, [r7, #16] + ba7e: 613b str r3, [r7, #16] wrap = bitRead(settings, 2); - b9ba: f3c8 0080 ubfx r0, r8, #2, #1 - b9be: 7223 strb r3, [r4, #8] + ba80: f3c8 0080 ubfx r0, r8, #2, #1 + ba84: 7223 strb r3, [r4, #8] data.byteD = BMC_GET_BYTE(3, event); - b9c0: ea4f 6311 mov.w r3, r1, lsr #24 + ba86: ea4f 6311 mov.w r3, r1, lsr #24 data.byteA = BMC_GET_BYTE(0, event); - b9c4: f8a4 c006 strh.w ip, [r4, #6] + ba8a: f8a4 c006 strh.w ip, [r4, #6] enabled = bitRead(settings, 0); - b9c8: f008 0c01 and.w ip, r8, #1 + ba8e: f008 0c01 and.w ip, r8, #1 data.byteD = BMC_GET_BYTE(3, event); - b9cc: 607b str r3, [r7, #4] - b9ce: 7263 strb r3, [r4, #9] + ba92: 607b str r3, [r7, #4] + ba94: 7263 strb r3, [r4, #9] data.byteB = BMC_GET_BYTE(1, event); - b9d0: ea4f 2311 mov.w r3, r1, lsr #8 + ba96: ea4f 2311 mov.w r3, r1, lsr #8 direction = bitRead(settings, 1); - b9d4: f884 e09e strb.w lr, [r4, #158] ; 0x9e + ba9a: f884 e09e strb.w lr, [r4, #158] ; 0x9e data.byteD = BMC_GET_BYTE(3, event); - b9d8: ea4f 6e11 mov.w lr, r1, lsr #24 + ba9e: ea4f 6e11 mov.w lr, r1, lsr #24 data.byteB = BMC_GET_BYTE(1, event); - b9dc: 60bb str r3, [r7, #8] - b9de: 69bb ldr r3, [r7, #24] + baa2: 60bb str r3, [r7, #8] + baa4: 69bb ldr r3, [r7, #24] data.byteA = BMC_GET_BYTE(0, event); - b9e0: f8d7 801c ldr.w r8, [r7, #28] + baa6: f8d7 801c ldr.w r8, [r7, #28] data.byteB = BMC_GET_BYTE(1, event); - b9e4: 60fb str r3, [r7, #12] + baaa: 60fb str r3, [r7, #12] data.byteC = BMC_GET_BYTE(2, event); - b9e6: ea4f 4311 mov.w r3, r1, lsr #16 + baac: ea4f 4311 mov.w r3, r1, lsr #16 enabled = bitRead(settings, 0); - b9ea: f884 c09d strb.w ip, [r4, #157] ; 0x9d + bab0: f884 c09d strb.w ip, [r4, #157] ; 0x9d wrap = bitRead(settings, 2); - b9ee: f884 009f strb.w r0, [r4, #159] ; 0x9f - b9f2: 603b str r3, [r7, #0] + bab4: f884 009f strb.w r0, [r4, #159] ; 0x9f + bab8: 603b str r3, [r7, #0] if(forceEnable){ - b9f4: d15d bne.n bab2 + baba: d15d bne.n bb78 wrap = true; - b9f6: f1bc 0f00 cmp.w ip, #0 + babc: f1bc 0f00 cmp.w ip, #0 direction = bitRead(ticks, 7); - b9fa: 6afb ldr r3, [r7, #44] ; 0x2c + bac0: 6afb ldr r3, [r7, #44] ; 0x2c wrap = true; - b9fc: bf08 it eq - b9fe: 2001 moveq r0, #1 + bac2: bf08 it eq + bac4: 2001 moveq r0, #1 amount = ticks & 0x7F; - ba00: f003 0c7f and.w ip, r3, #127 ; 0x7f - ba04: f884 009f strb.w r0, [r4, #159] ; 0x9f + bac6: f003 0c7f and.w ip, r3, #127 ; 0x7f + baca: f884 009f strb.w r0, [r4, #159] ; 0x9f enabled = true; - ba08: 2001 movs r0, #1 + bace: 2001 movs r0, #1 amount = ticks & 0x7F; - ba0a: f884 c0a0 strb.w ip, [r4, #160] ; 0xa0 + bad0: f884 c0a0 strb.w ip, [r4, #160] ; 0xa0 enabled = true; - ba0e: f884 009d strb.w r0, [r4, #157] ; 0x9d + bad4: f884 009d strb.w r0, [r4, #157] ; 0x9d direction = bitRead(ticks, 7); - ba12: 09d8 lsrs r0, r3, #7 - ba14: f884 009e strb.w r0, [r4, #158] ; 0x9e + bad8: 09d8 lsrs r0, r3, #7 + bada: f884 009e strb.w r0, [r4, #158] ; 0x9e if(amount == 0){ - ba18: f1bc 0f00 cmp.w ip, #0 - ba1c: d04d beq.n baba + bade: f1bc 0f00 cmp.w ip, #0 + bae2: d04d beq.n bb80 switch(data.type){ - ba1e: 6a3b ldr r3, [r7, #32] - ba20: 3b01 subs r3, #1 - ba22: 2b43 cmp r3, #67 ; 0x43 - ba24: d873 bhi.n bb0e - ba26: e8df f013 tbh [pc, r3, lsl #1] - ba2a: 06e7 .short 0x06e7 - ba2c: 05af0691 .word 0x05af0691 - ba30: 06600582 .word 0x06600582 - ba34: 04450635 .word 0x04450635 - ba38: 039f0425 .word 0x039f0425 - ba3c: 037c036a .word 0x037c036a - ba40: 04eb0347 .word 0x04eb0347 - ba44: 050f04c2 .word 0x050f04c2 - ba48: 05600318 .word 0x05600318 - ba4c: 07fd0548 .word 0x07fd0548 - ba50: 00720523 .word 0x00720523 - ba54: 00720821 .word 0x00720821 - ba58: 04080736 .word 0x04080736 - ba5c: 078703ce .word 0x078703ce - ba60: 04970751 .word 0x04970751 - ba64: 07c6046e .word 0x07c6046e - ba68: 007205e9 .word 0x007205e9 - ba6c: 06200072 .word 0x06200072 - ba70: 027f02ab .word 0x027f02ab - ba74: 024d0267 .word 0x024d0267 - ba78: 020a0072 .word 0x020a0072 - ba7c: 01cf02e1 .word 0x01cf02e1 - ba80: 0072014a .word 0x0072014a - ba84: 00d9010e .word 0x00d9010e - ba88: 00720072 .word 0x00720072 - ba8c: 00720072 .word 0x00720072 - ba90: 00720072 .word 0x00720072 - ba94: 00720072 .word 0x00720072 - ba98: 00720072 .word 0x00720072 - ba9c: 00720072 .word 0x00720072 - baa0: 00720072 .word 0x00720072 - baa4: 00720072 .word 0x00720072 - baa8: 00720072 .word 0x00720072 - baac: 009b00ad .word 0x009b00ad - bab0: 0075 .short 0x0075 + bae4: 6a3b ldr r3, [r7, #32] + bae6: 3b01 subs r3, #1 + bae8: 2b43 cmp r3, #67 ; 0x43 + baea: d873 bhi.n bbd4 + baec: e8df f013 tbh [pc, r3, lsl #1] + baf0: 068006d6 .word 0x068006d6 + baf4: 05af0725 .word 0x05af0725 + baf8: 05060531 .word 0x05060531 + bafc: 04d8064a .word 0x04d8064a + bb00: 03b403eb .word 0x03b403eb + bb04: 039003c7 .word 0x039003c7 + bb08: 0562058b .word 0x0562058b + bb0c: 03610752 .word 0x03610752 + bb10: 078b07a3 .word 0x078b07a3 + bb14: 076607fd .word 0x076607fd + bb18: 08210072 .word 0x08210072 + bb1c: 048c07ef .word 0x048c07ef + bb20: 02f1047e .word 0x02f1047e + bb24: 028102b3 .word 0x028102b3 + bb28: 07c50256 .word 0x07c50256 + bb2c: 061305dc .word 0x061305dc + bb30: 00720072 .word 0x00720072 + bb34: 04470230 .word 0x04470230 + bb38: 0217041a .word 0x0217041a + bb3c: 007201fd .word 0x007201fd + bb40: 032a04a7 .word 0x032a04a7 + bb44: 014b01c2 .word 0x014b01c2 + bb48: 00e30072 .word 0x00e30072 + bb4c: 007200ae .word 0x007200ae + bb50: 00720072 .word 0x00720072 + bb54: 00720072 .word 0x00720072 + bb58: 00720072 .word 0x00720072 + bb5c: 00720072 .word 0x00720072 + bb60: 00720072 .word 0x00720072 + bb64: 00720072 .word 0x00720072 + bb68: 00720072 .word 0x00720072 + bb6c: 00720072 .word 0x00720072 + bb70: 011f0072 .word 0x011f0072 + bb74: 0075009b .word 0x0075009b if(ticks > 0 || forceEnable){ - bab2: 6afb ldr r3, [r7, #44] ; 0x2c - bab4: 2b00 cmp r3, #0 - bab6: f044 8729 bne.w 1090c + bb78: 6afb ldr r3, [r7, #44] ; 0x2c + bb7a: 2b00 cmp r3, #0 + bb7c: f044 829c bne.w 100b8 amount = 1; - baba: 2001 movs r0, #1 - babc: f04f 0c00 mov.w ip, #0 - bac0: f884 00a0 strb.w r0, [r4, #160] ; 0xa0 + bb80: 2001 movs r0, #1 + bb82: f04f 0c00 mov.w ip, #0 + bb86: f884 00a0 strb.w r0, [r4, #160] ; 0xa0 if(group == BMC_DEVICE_GROUP_DISPLAY){ - bac4: 2e08 cmp r6, #8 - bac6: d1aa bne.n ba1e + bb8a: 2e08 cmp r6, #8 + bb8c: d1aa bne.n bae4 if(data.isOled()){ - bac8: f1b9 0f16 cmp.w r9, #22 + bb8e: f1b9 0f16 cmp.w r9, #22 displayType = t_value; - bacc: f884 9013 strb.w r9, [r4, #19] - bad0: d1a5 bne.n ba1e + bb92: f884 9013 strb.w r9, [r4, #19] + bb96: d1a5 bne.n bae4 data.settings = store.layers[layer].oled[deviceIndex].settings[0]+0; - bad2: f8da 086c ldr.w r0, [sl, #2156] ; 0x86c - bad6: 7800 ldrb r0, [r0, #0] - bad8: eb00 1340 add.w r3, r0, r0, lsl #5 - badc: eb00 0083 add.w r0, r0, r3, lsl #2 - bae0: eb0b 034b add.w r3, fp, fp, lsl #1 - bae4: 4418 add r0, r3 - bae6: f241 53d4 movw r3, #5588 ; 0x15d4 - baea: 4428 add r0, r5 - baec: 5cc0 ldrb r0, [r0, r3] - baee: 70e0 strb r0, [r4, #3] - baf0: e795 b.n ba1e + bb98: f8da 086c ldr.w r0, [sl, #2156] ; 0x86c + bb9c: 7800 ldrb r0, [r0, #0] + bb9e: eb00 1340 add.w r3, r0, r0, lsl #5 + bba2: eb00 0083 add.w r0, r0, r3, lsl #2 + bba6: eb0b 034b add.w r3, fp, fp, lsl #1 + bbaa: 4418 add r0, r3 + bbac: f241 53d4 movw r3, #5588 ; 0x15d4 + bbb0: 4428 add r0, r5 + bbb2: 5cc0 ldrb r0, [r0, r3] + bbb4: 70e0 strb r0, [r4, #3] + bbb6: e795 b.n bae4 chars[activeChar] = (chars[activeChar]>=9) ? 0 : (chars[activeChar]+1); buildOutput(); break; } if(value==15 && callback.typerCustomCommand){ - baf2: 69fb ldr r3, [r7, #28] - baf4: 2b0f cmp r3, #15 - baf6: f045 831d bne.w 11134 - bafa: f8d4 2c6c ldr.w r2, [r4, #3180] ; 0xc6c - bafe: 6993 ldr r3, [r2, #24] - bb00: 2b00 cmp r3, #0 - bb02: f045 8491 bne.w 11428 + bbb8: 69fb ldr r3, [r7, #28] + bbba: 2b0f cmp r3, #15 + bbbc: f044 81da bne.w ff74 + bbc0: f8d4 2c8c ldr.w r2, [r4, #3212] ; 0xc8c + bbc4: 6993 ldr r3, [r2, #24] + bbc6: 2b00 cmp r3, #0 + bbc8: f045 8463 bne.w 11492 callback.typerCustomCommand(getOutput(), getRawOutput()); } else if(callback.typerCommand){ - bb06: 6953 ldr r3, [r2, #20] - bb08: 2b00 cmp r3, #0 - bb0a: f045 8317 bne.w 1113c + bbcc: 6953 ldr r3, [r2, #20] + bbce: 2b00 cmp r3, #0 + bbd0: f044 81d4 bne.w ff7c return BMC_OFF_LED_EVENT; - bb0e: f04f 0800 mov.w r8, #0 - bb12: e731 b.n b978 + bbd4: f04f 0800 mov.w r8, #0 + bbd8: e739 b.n ba4e if(group == BMC_DEVICE_GROUP_DISPLAY){ - bb14: 2e08 cmp r6, #8 - bb16: f47f af2d bne.w b974 + bbda: 2e08 cmp r6, #8 + bbdc: f47f af35 bne.w ba4a bitWrite(settings, 2, 0); - bb1a: 78e3 ldrb r3, [r4, #3] + bbe0: 78e3 ldrb r3, [r4, #3] strcpy(data.label, "NAME"); - bb1c: 4a18 ldr r2, [pc, #96] ; (bb80 ) - bb1e: f023 0304 bic.w r3, r3, #4 - bb22: 6810 ldr r0, [r2, #0] + bbe2: 4a19 ldr r2, [pc, #100] ; (bc48 ) + bbe4: f023 0304 bic.w r3, r3, #4 + bbe8: 6810 ldr r0, [r2, #0] bitWrite(settings, 3, 1); - bb24: f043 0308 orr.w r3, r3, #8 - bb28: 7912 ldrb r2, [r2, #4] - bb2a: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - bb2e: 70e3 strb r3, [r4, #3] + bbea: f043 0308 orr.w r3, r3, #8 + bbee: 7912 ldrb r2, [r2, #4] + bbf0: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + bbf4: 70e3 strb r3, [r4, #3] if((event & 0xFFFF) < BMC_MAX_NAMES_LIBRARY){ - bb30: f64f 7380 movw r3, #65408 ; 0xff80 + bbf6: f64f 7380 movw r3, #65408 ; 0xff80 strcpy(data.label, "NAME"); - bb34: f887 20c3 strb.w r2, [r7, #195] ; 0xc3 + bbfa: f887 20c3 strb.w r2, [r7, #195] ; 0xc3 if((event & 0xFFFF) < BMC_MAX_NAMES_LIBRARY){ - bb38: 4219 tst r1, r3 - bb3a: f003 84e8 beq.w f50e + bbfe: 4219 tst r1, r3 + bc00: f003 860c beq.w f81c display.renderBlock(data); - bb3e: f643 3638 movw r6, #15160 ; 0x3b38 - bb42: f107 0160 add.w r1, r7, #96 ; 0x60 - bb46: 2295 movs r2, #149 ; 0x95 - bb48: 4668 mov r0, sp - bb4a: 442e add r6, r5 - bb4c: f01e fddc bl 2a708 + bc04: f643 3658 movw r6, #15192 ; 0x3b58 + bc08: f107 0160 add.w r1, r7, #96 ; 0x60 + bc0c: 2295 movs r2, #149 ; 0x95 + bc0e: 4668 mov r0, sp + bc10: 442e add r6, r5 + bc12: f01e fded bl 2a7f0 return BMC_OFF_LED_EVENT; - bb50: f04f 0800 mov.w r8, #0 + bc16: f04f 0800 mov.w r8, #0 display.renderBlock(data); - bb54: 4630 mov r0, r6 - bb56: e894 000e ldmia.w r4, {r1, r2, r3} - bb5a: f7fe ff3f bl a9dc - bb5e: e70b b.n b978 + bc1a: 4630 mov r0, r6 + bc1c: e894 000e ldmia.w r4, {r1, r2, r3} + bc20: f7fe feae bl a980 + bc24: e713 b.n ba4e if(callback.customActivity){ - bb60: f8da 4894 ldr.w r4, [sl, #2196] ; 0x894 - bb64: 2c00 cmp r4, #0 - bb66: f43f af05 beq.w b974 + bc26: f8da 4894 ldr.w r4, [sl, #2196] ; 0x894 + bc2a: 2c00 cmp r4, #0 + bc2c: f43f af0d beq.w ba4a if(group == BMC_DEVICE_GROUP_BUTTON){ - bb6a: 3e01 subs r6, #1 - bb6c: 2e03 cmp r6, #3 - bb6e: d8ce bhi.n bb0e - bb70: e8df f016 tbh [pc, r6, lsl #1] - bb74: 0864086e .word 0x0864086e - bb78: 084e0858 .word 0x084e0858 - bb7c: 2000084c .word 0x2000084c - bb80: 200020cc .word 0x200020cc - if(data.byteA >= BMC_MAX_AUX_JACKS){ - bb84: 69fb ldr r3, [r7, #28] - bb86: 2b00 cmp r3, #0 - bb88: f47f aef4 bne.w b974 - if(group == BMC_DEVICE_GROUP_LED){ - bb8c: 2e02 cmp r6, #2 - bb8e: f002 8310 beq.w e1b2 - } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ - bb92: 2e05 cmp r6, #5 - bb94: f002 8780 beq.w ea98 - } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - bb98: 2e08 cmp r6, #8 - bb9a: f47f aeeb bne.w b974 - bitWrite(settings, 2, 0); - bb9e: 78e1 ldrb r1, [r4, #3] - strcpy(data.label, "AUX JACK"); - bba0: 4bbf ldr r3, [pc, #764] ; (bea0 ) - bba2: f021 0104 bic.w r1, r1, #4 - bitWrite(settings, 3, 1); - bba6: f041 0108 orr.w r1, r1, #8 - bbaa: 70e1 strb r1, [r4, #3] - bbac: f505 5140 add.w r1, r5, #12288 ; 0x3000 - bbb0: f891 6ae0 ldrb.w r6, [r1, #2784] ; 0xae0 - bbb4: cb03 ldmia r3!, {r0, r1} - bbb6: 781b ldrb r3, [r3, #0] - bbb8: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - if(auxJacks[data.value].isPotMode()){ - bbbc: 07f0 lsls r0, r6, #31 - strcpy(data.label, "AUX JACK"); - bbbe: f887 30c7 strb.w r3, [r7, #199] ; 0xc7 - bbc2: f3c6 0340 ubfx r3, r6, #1, #1 - bbc6: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 - sprintf(data.str, "Ctrl %u", data.value+data.offset); - bbca: f107 006d add.w r0, r7, #109 ; 0x6d - sprintf(data.str, "Exp %u", data.value+data.offset); - bbce: bf4c ite mi - bbd0: 49b4 ldrmi r1, [pc, #720] ; (bea4 ) - sprintf(data.str, "Ctrl %u", data.value+data.offset); - bbd2: 49b5 ldrpl r1, [pc, #724] ; (bea8 ) - bbd4: 7523 strb r3, [r4, #20] - bbd6: f022 fad9 bl 2e18c - bbda: e7b0 b.n bb3e + bc30: 3e01 subs r6, #1 + bc32: 2e03 cmp r6, #3 + bc34: d8ce bhi.n bbd4 + bc36: e8df f016 tbh [pc, r6, lsl #1] + bc3a: 0870 .short 0x0870 + bc3c: 085a0866 .word 0x085a0866 + bc40: 0850 .short 0x0850 + bc42: bf00 nop + bc44: 2000084c .word 0x2000084c + bc48: 200020cc .word 0x200020cc if(group == BMC_DEVICE_GROUP_DISPLAY){ - bbdc: 2e08 cmp r6, #8 - bbde: f47f aec9 bne.w b974 + bc4c: 2e08 cmp r6, #8 + bc4e: f47f aefc bne.w ba4a bitWrite(settings, 2, 0); - bbe2: 78e3 ldrb r3, [r4, #3] + bc52: 78e3 ldrb r3, [r4, #3] strcpy(data.label, "NAME"); - bbe4: 4eb1 ldr r6, [pc, #708] ; (beac ) - bbe6: f023 0304 bic.w r3, r3, #4 + bc54: 4ec8 ldr r6, [pc, #800] ; (bf78 ) + bc56: f023 0304 bic.w r3, r3, #4 editor.getDeviceNameText(data.byteA, BMC_GET_BYTE_2(1, event), t.name); - bbea: 893a ldrh r2, [r7, #8] + bc5a: 893a ldrh r2, [r7, #8] strcpy(data.label, "NAME"); - bbec: 6830 ldr r0, [r6, #0] + bc5c: 6830 ldr r0, [r6, #0] bitWrite(settings, 3, 1); - bbee: f043 0308 orr.w r3, r3, #8 + bc5e: f043 0308 orr.w r3, r3, #8 editor.getDeviceNameText(data.byteA, BMC_GET_BYTE_2(1, event), t.name); - bbf2: 69f9 ldr r1, [r7, #28] + bc62: 69f9 ldr r1, [r7, #28] strcpy(data.label, "NAME"); - bbf4: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + bc64: f8c7 00bf str.w r0, [r7, #191] ; 0xbf editor.getDeviceNameText(data.byteA, BMC_GET_BYTE_2(1, event), t.name); - bbf8: f642 409c movw r0, #11420 ; 0x2c9c - bbfc: 70e3 strb r3, [r4, #3] + bc68: f642 40bc movw r0, #11452 ; 0x2cbc + bc6c: 70e3 strb r3, [r4, #3] strcpy(data.label, "NAME"); - bbfe: 7933 ldrb r3, [r6, #4] + bc6e: 7933 ldrb r3, [r6, #4] editor.getDeviceNameText(data.byteA, BMC_GET_BYTE_2(1, event), t.name); - bc00: 4428 add r0, r5 + bc70: 4428 add r0, r5 display.renderBlock(data); - bc02: f643 3638 movw r6, #15160 ; 0x3b38 + bc72: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.label, "NAME"); - bc06: f887 30c3 strb.w r3, [r7, #195] ; 0xc3 + bc76: f887 30c3 strb.w r3, [r7, #195] ; 0xc3 bmcStoreName t; - bc0a: 2300 movs r3, #0 - bc0c: e9c7 3367 strd r3, r3, [r7, #412] ; 0x19c - bc10: e9c7 3369 strd r3, r3, [r7, #420] ; 0x1a4 - bc14: f887 31ac strb.w r3, [r7, #428] ; 0x1ac + bc7a: 2300 movs r3, #0 + bc7c: e9c7 3367 strd r3, r3, [r7, #412] ; 0x19c + bc80: e9c7 3369 strd r3, r3, [r7, #420] ; 0x1a4 + bc84: f887 31ac strb.w r3, [r7, #428] ; 0x1ac return BMC_OFF_LED_EVENT; - bc18: 4698 mov r8, r3 + bc88: 4698 mov r8, r3 editor.getDeviceNameText(data.byteA, BMC_GET_BYTE_2(1, event), t.name); - bc1a: f507 73ce add.w r3, r7, #412 ; 0x19c - bc1e: f7fb ff95 bl 7b4c + bc8a: f507 73ce add.w r3, r7, #412 ; 0x19c + bc8e: f7fb ff2d bl 7aec strcpy(data.str, t.name); - bc22: f507 71ce add.w r1, r7, #412 ; 0x19c - bc26: f107 006d add.w r0, r7, #109 ; 0x6d - bc2a: f022 fea7 bl 2e97c + bc92: f507 71ce add.w r1, r7, #412 ; 0x19c + bc96: f107 006d add.w r0, r7, #109 ; 0x6d + bc9a: f022 fedf bl 2ea5c display.renderBlock(data); - bc2e: f107 0160 add.w r1, r7, #96 ; 0x60 - bc32: 2295 movs r2, #149 ; 0x95 - bc34: 4668 mov r0, sp - bc36: f01e fd67 bl 2a708 - bc3a: 1970 adds r0, r6, r5 - bc3c: e894 000e ldmia.w r4, {r1, r2, r3} - bc40: f7fe fecc bl a9dc - bc44: e698 b.n b978 + bc9e: f107 0160 add.w r1, r7, #96 ; 0x60 + bca2: 2295 movs r2, #149 ; 0x95 + bca4: 4668 mov r0, sp + bca6: f01e fda3 bl 2a7f0 + bcaa: 1970 adds r0, r6, r5 + bcac: e894 000e ldmia.w r4, {r1, r2, r3} + bcb0: f7fe fe66 bl a980 + bcb4: e6cb b.n ba4e if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - bc46: f006 03fd and.w r3, r6, #253 ; 0xfd - bc4a: 2b01 cmp r3, #1 - bc4c: f041 84a4 bne.w d598 + bcb6: f006 03fd and.w r3, r6, #253 ; 0xfd + bcba: 2b01 cmp r3, #1 + bcbc: f041 84d2 bne.w d664 if(data.scrollEnabled()){ - bc50: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - bc54: 2b00 cmp r3, #0 - bc56: f002 81de beq.w e016 + bcc0: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + bcc4: 2b00 cmp r3, #0 + bcc6: f002 817a beq.w dfbe if(data.byteC > 0){ - bc5a: 693b ldr r3, [r7, #16] - bc5c: 2b00 cmp r3, #0 - bc5e: f003 82b8 beq.w f1d2 + bcca: 693b ldr r3, [r7, #16] + bccc: 2b00 cmp r3, #0 + bcce: f003 83b2 beq.w f436 if(max < min || min == max){ - bc62: 69ba ldr r2, [r7, #24] + bcd2: 69ba ldr r2, [r7, #24] return scroll.direction; - bc64: f894 009e ldrb.w r0, [r4, #158] ; 0x9e - bc68: 429a cmp r2, r3 - bc6a: f4bf ae83 bcs.w b974 + bcd4: f894 009e ldrb.w r0, [r4, #158] ; 0x9e + bcd8: 429a cmp r2, r3 + bcda: f4bf aeb6 bcs.w ba4a switch(id){ - bc6e: f505 5940 add.w r9, r5, #12288 ; 0x3000 - bc72: f899 3788 ldrb.w r3, [r9, #1928] ; 0x788 - bc76: 2b02 cmp r3, #2 - bc78: f203 8468 bhi.w f54c - bc7c: 4a8c ldr r2, [pc, #560] ; (beb0 ) - bc7e: 5cd3 ldrb r3, [r2, r3] + bcde: f505 5940 add.w r9, r5, #12288 ; 0x3000 + bce2: f899 37a8 ldrb.w r3, [r9, #1960] ; 0x7a8 + bce6: 2b02 cmp r3, #2 + bce8: f203 85a4 bhi.w f834 + bcec: 4aa3 ldr r2, [pc, #652] ; (bf7c ) + bcee: 5cd3 ldrb r3, [r2, r3] uint8_t _max = getMaxSnapshots()-1; - bc80: 1e59 subs r1, r3, #1 + bcf0: 1e59 subs r1, r3, #1 min = constrain(min, 0, _max); - bc82: 69ba ldr r2, [r7, #24] + bcf2: 69ba ldr r2, [r7, #24] max = constrain(max, 0, _max); - bc84: 693c ldr r4, [r7, #16] + bcf4: 693c ldr r4, [r7, #16] uint8_t _max = getMaxSnapshots()-1; - bc86: b2c9 uxtb r1, r1 + bcf6: b2c9 uxtb r1, r1 BMCScroller scroller(snapshot, min, max); - bc88: f899 378b ldrb.w r3, [r9, #1931] ; 0x78b + bcf8: f899 37ab ldrb.w r3, [r9, #1963] ; 0x7ab min = constrain(min, 0, _max); - bc8c: 428a cmp r2, r1 - bc8e: bf28 it cs - bc90: 460a movcs r2, r1 + bcfc: 428a cmp r2, r1 + bcfe: bf28 it cs + bd00: 460a movcs r2, r1 max = constrain(max, 0, _max); - bc92: 428c cmp r4, r1 - bc94: bf28 it cs - bc96: 460c movcs r4, r1 - bc98: 4621 mov r1, r4 + bd02: 428c cmp r4, r1 + bd04: bf28 it cs + bd06: 460c movcs r4, r1 + bd08: 4621 mov r1, r4 if(direction==BMC_SCROLL_UP){ - bc9a: 2800 cmp r0, #0 - bc9c: f003 83c1 beq.w f422 + bd0a: 2800 cmp r0, #0 + bd0c: f003 865b beq.w f9c6 long newValue = (value+amount); - bca0: 3301 adds r3, #1 + bd10: 3301 adds r3, #1 return (newValue > max || newValue < min) ? min : newValue; - bca2: 42a3 cmp r3, r4 - bca4: dc02 bgt.n bcac - bca6: 4293 cmp r3, r2 - bca8: bfa8 it ge - bcaa: b2da uxtbge r2, r3 + bd12: 42a3 cmp r3, r4 + bd14: dc02 bgt.n bd1c + bd16: 4293 cmp r3, r2 + bd18: bfa8 it ge + bd1a: b2da uxtbge r2, r3 value = (endless) ? upEndless(t_amount) : upLimited(t_amount); - bcac: 4611 mov r1, r2 + bd1c: 4611 mov r1, r2 setSnapshot(scroller.scroll(1, direction, true)); - bcae: f243 7084 movw r0, #14212 ; 0x3784 + bd1e: f243 70a4 movw r0, #14244 ; 0x37a4 return BMC_OFF_LED_EVENT; - bcb2: f04f 0800 mov.w r8, #0 - bcb6: 4428 add r0, r5 - bcb8: f7fd fc56 bl 9568 - bcbc: e65c b.n b978 + bd22: f04f 0800 mov.w r8, #0 + bd26: 4428 add r0, r5 + bd28: f7fd fbee bl 9508 + bd2c: e68f b.n ba4e + if(data.byteA >= BMC_MAX_AUX_JACKS){ + bd2e: 69fb ldr r3, [r7, #28] + bd30: 2b00 cmp r3, #0 + bd32: f47f ae8a bne.w ba4a + if(group == BMC_DEVICE_GROUP_LED){ + bd36: 2e02 cmp r6, #2 + bd38: f002 8359 beq.w e3ee + } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ + bd3c: 2e05 cmp r6, #5 + bd3e: f002 8675 beq.w ea2c + } else if(group == BMC_DEVICE_GROUP_DISPLAY){ + bd42: 2e08 cmp r6, #8 + bd44: f47f ae81 bne.w ba4a + bitWrite(settings, 2, 0); + bd48: 78e1 ldrb r1, [r4, #3] + strcpy(data.label, "AUX JACK"); + bd4a: 4b8d ldr r3, [pc, #564] ; (bf80 ) + bd4c: f021 0104 bic.w r1, r1, #4 + bitWrite(settings, 3, 1); + bd50: f041 0108 orr.w r1, r1, #8 + bd54: 70e1 strb r1, [r4, #3] + bd56: f505 5140 add.w r1, r5, #12288 ; 0x3000 + bd5a: f891 6b00 ldrb.w r6, [r1, #2816] ; 0xb00 + bd5e: cb03 ldmia r3!, {r0, r1} + bd60: 781b ldrb r3, [r3, #0] + bd62: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + if(auxJacks[data.value].isPotMode()){ + bd66: 07f0 lsls r0, r6, #31 + strcpy(data.label, "AUX JACK"); + bd68: f887 30c7 strb.w r3, [r7, #199] ; 0xc7 + bd6c: f3c6 0340 ubfx r3, r6, #1, #1 + bd70: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 + sprintf(data.str, "Ctrl %u", data.value+data.offset); + bd74: f107 006d add.w r0, r7, #109 ; 0x6d + sprintf(data.str, "Exp %u", data.value+data.offset); + bd78: bf4c ite mi + bd7a: 4982 ldrmi r1, [pc, #520] ; (bf84 ) + sprintf(data.str, "Ctrl %u", data.value+data.offset); + bd7c: 4982 ldrpl r1, [pc, #520] ; (bf88 ) + bd7e: 7523 strb r3, [r4, #20] + bd80: f022 fa78 bl 2e274 + bd84: e73e b.n bc04 if(group == BMC_DEVICE_GROUP_BUTTON){ - bcbe: 2e01 cmp r6, #1 - bcc0: f001 86bc beq.w da3c + bd86: 2e01 cmp r6, #1 + bd88: f001 86b2 beq.w daf0 } else if(group == BMC_DEVICE_GROUP_LED){ - bcc4: 2e02 cmp r6, #2 - bcc6: f002 8280 beq.w e1ca + bd8c: 2e02 cmp r6, #2 + bd8e: f002 8208 beq.w e1a2 } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - bcca: 2e05 cmp r6, #5 - bccc: f002 8625 beq.w e91a + bd92: 2e05 cmp r6, #5 + bd94: f002 8659 beq.w ea4a } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - bcd0: 2e08 cmp r6, #8 - bcd2: f47f ae4f bne.w b974 + bd98: 2e08 cmp r6, #8 + bd9a: f47f ae56 bne.w ba4a strcpy(data.label, "BLOCK"); - bcd6: 4b77 ldr r3, [pc, #476] ; (beb4 ) + bd9e: 4b7b ldr r3, [pc, #492] ; (bf8c ) data.highlight = sync.fas.isBlockEngaged(data.byteB); - bcd8: f243 3854 movw r8, #13140 ; 0x3354 - bcdc: f8d7 9018 ldr.w r9, [r7, #24] + bda0: f243 3874 movw r8, #13172 ; 0x3374 + bda4: f8d7 9018 ldr.w r9, [r7, #24] for(int e = 0; e < BMC_FAS3_BLOCKS_COUNT; e++){ - bce0: 2600 movs r6, #0 + bda8: 2600 movs r6, #0 strcpy(data.label, "BLOCK"); - bce2: 6818 ldr r0, [r3, #0] + bdaa: 6818 ldr r0, [r3, #0] data.highlight = sync.fas.isBlockEngaged(data.byteB); - bce4: 44a8 add r8, r5 + bdac: 44a8 add r8, r5 strcpy(data.label, "BLOCK"); - bce6: 889b ldrh r3, [r3, #4] + bdae: 889b ldrh r3, [r3, #4] data.highlight = sync.fas.isBlockEngaged(data.byteB); - bce8: 4649 mov r1, r9 + bdb0: 4649 mov r1, r9 strcpy(data.label, "BLOCK"); - bcea: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + bdb2: f8c7 00bf str.w r0, [r7, #191] ; 0xbf data.highlight = sync.fas.isBlockEngaged(data.byteB); - bcee: 4640 mov r0, r8 + bdb6: 4640 mov r0, r8 strcpy(data.label, "BLOCK"); - bcf0: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 + bdb8: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 data.highlight = sync.fas.isBlockEngaged(data.byteB); - bcf4: f7fd fa32 bl 915c + bdbc: f7fd f99e bl 90fc bitWrite(settings, 2, 0); - bcf8: 78e3 ldrb r3, [r4, #3] - bcfa: f243 41ac movw r1, #13484 ; 0x34ac - bcfe: 464a mov r2, r9 - bd00: 7520 strb r0, [r4, #20] - bd02: f023 0304 bic.w r3, r3, #4 - bd06: 4429 add r1, r5 + bdc0: 78e3 ldrb r3, [r4, #3] + bdc2: f243 41cc movw r1, #13516 ; 0x34cc + bdc6: 464a mov r2, r9 + bdc8: 7520 strb r0, [r4, #20] + bdca: f023 0304 bic.w r3, r3, #4 + bdce: 4429 add r1, r5 bitWrite(settings, 3, 1); - bd08: f043 0308 orr.w r3, r3, #8 - bd0c: 70e3 strb r3, [r4, #3] - bd0e: e003 b.n bd18 - bd10: 3601 adds r6, #1 - bd12: 2e5b cmp r6, #91 ; 0x5b - bd14: f004 8039 beq.w fd8a + bdd0: f043 0308 orr.w r3, r3, #8 + bdd4: 70e3 strb r3, [r4, #3] + bdd6: e002 b.n bdde + bdd8: 3601 adds r6, #1 + bdda: 2e5b cmp r6, #91 ; 0x5b + bddc: d039 beq.n be52 if(blocksInfo[e].id == n){ - bd18: f811 3036 ldrb.w r3, [r1, r6, lsl #3] - bd1c: 429a cmp r2, r3 - bd1e: d1f7 bne.n bd10 + bdde: f811 3036 ldrb.w r3, [r1, r6, lsl #3] + bde2: 429a cmp r2, r3 + bde4: d1f8 bne.n bdd8 char str[8] = ""; - bd20: 2300 movs r3, #0 + bde6: 2300 movs r3, #0 return ((blockStates[t_id] >> 1) & 0x07); - bd22: f505 5940 add.w r9, r5, #12288 ; 0x3000 - const char alph[32] = BMC_ALPHABET; - bd26: f507 72ce add.w r2, r7, #412 ; 0x19c + bde8: f505 5940 add.w r9, r5, #12288 ; 0x3000 sprintf(buff, "%c", alph[n]); - bd2a: f107 0130 add.w r1, r7, #48 ; 0x30 + bdec: f107 0230 add.w r2, r7, #48 ; 0x30 const char alph[32] = BMC_ALPHABET; - bd2e: f8df e190 ldr.w lr, [pc, #400] ; bec0 - bd32: f107 0af8 add.w sl, r7, #248 ; 0xf8 - bd36: 4694 mov ip, r2 - bd38: ee09 2a10 vmov s18, r2 - bd3c: e9c7 333e strd r3, r3, [r7, #248] ; 0xf8 - bd40: eb09 0306 add.w r3, r9, r6 - sprintf(buff, "%s %u%s", blocksInfo[e].name, blocksInfo[e].index+1, str); - bd44: 362b adds r6, #43 ; 0x2b - bd46: f893 b439 ldrb.w fp, [r3, #1081] ; 0x439 - bd4a: eb09 09c6 add.w r9, r9, r6, lsl #3 - bd4e: f3cb 0b42 ubfx fp, fp, #1, #3 + bdf0: f8df e1a4 ldr.w lr, [pc, #420] ; bf98 + bdf4: f507 7cce add.w ip, r7, #412 ; 0x19c + bdf8: f107 0af8 add.w sl, r7, #248 ; 0xf8 + bdfc: e9c7 333e strd r3, r3, [r7, #248] ; 0xf8 + be00: eb09 0306 add.w r3, r9, r6 + be04: f893 b459 ldrb.w fp, [r3, #1113] ; 0x459 + be08: f3cb 0b42 ubfx fp, fp, #1, #3 sprintf(buff, "%c", alph[n]); - bd52: f50b 7304 add.w r3, fp, #528 ; 0x210 - bd56: eb03 0b01 add.w fp, r3, r1 + be0c: f50b 7304 add.w r3, fp, #528 ; 0x210 + be10: eb03 0b02 add.w fp, r3, r2 const char alph[32] = BMC_ALPHABET; - bd5a: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - bd5e: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - bd62: e89e 000f ldmia.w lr, {r0, r1, r2, r3} - bd66: e88c 000f stmia.w ip, {r0, r1, r2, r3} + be14: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + be18: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + be1c: e89e 000f ldmia.w lr, {r0, r1, r2, r3} + be20: e88c 000f stmia.w ip, {r0, r1, r2, r3} sprintf(buff, "%c", alph[n]); - bd6a: 4953 ldr r1, [pc, #332] ; (beb8 ) - bd6c: 4650 mov r0, sl - bd6e: f81b 2ca4 ldrb.w r2, [fp, #-164] - bd72: f022 fa0b bl 2e18c - bd76: f899 335a ldrb.w r3, [r9, #858] ; 0x35a - bd7a: eb08 02c6 add.w r2, r8, r6, lsl #3 - bd7e: 494f ldr r1, [pc, #316] ; (bebc ) - bd80: 3301 adds r3, #1 - bd82: f107 006d add.w r0, r7, #109 ; 0x6d - bd86: 3201 adds r2, #1 - bd88: f8cd a000 str.w sl, [sp] - bd8c: f022 f9fe bl 2e18c + be24: 495a ldr r1, [pc, #360] ; (bf90 ) + be26: 4650 mov r0, sl + be28: f81b 2ca4 ldrb.w r2, [fp, #-164] + be2c: f022 fa22 bl 2e274 + sprintf(buff, "%s %u%s", blocksInfo[e].name, blocksInfo[e].index+1, str); + be30: f106 032b add.w r3, r6, #43 ; 0x2b + be34: 4957 ldr r1, [pc, #348] ; (bf94 ) + be36: f107 006d add.w r0, r7, #109 ; 0x6d + be3a: eb09 09c3 add.w r9, r9, r3, lsl #3 + be3e: eb08 02c3 add.w r2, r8, r3, lsl #3 + be42: f899 337a ldrb.w r3, [r9, #890] ; 0x37a + be46: 3201 adds r2, #1 + be48: f8cd a000 str.w sl, [sp] + be4c: 3301 adds r3, #1 + be4e: f022 fa11 bl 2e274 display.renderFasFxBlock(data); - bd90: 4621 mov r1, r4 - bd92: 22a1 movs r2, #161 ; 0xa1 - bd94: ee19 4a10 vmov r4, s18 - bd98: ee19 0a10 vmov r0, s18 - bd9c: f01e fcb4 bl 2a708 - d.crc = generateCrc(d); - bda0: 2291 movs r2, #145 ; 0x91 - bda2: f507 71d6 add.w r1, r7, #428 ; 0x1ac - bda6: 4668 mov r0, sp - bda8: f01e fcae bl 2a708 - bdac: e894 000f ldmia.w r4, {r0, r1, r2, r3} - bdb0: f7fb f8b6 bl 6f20 - if(d.isOled()){ - bdb4: f897 31af ldrb.w r3, [r7, #431] ; 0x1af - d.crc = generateCrc(d); - bdb8: f887 019e strb.w r0, [r7, #414] ; 0x19e - if(d.isOled()){ - bdbc: 2b16 cmp r3, #22 - bdbe: f004 813c beq.w 1003a + be52: f643 3658 movw r6, #15192 ; 0x3b58 + be56: f107 0160 add.w r1, r7, #96 ; 0x60 + be5a: 2295 movs r2, #149 ; 0x95 + be5c: 4668 mov r0, sp + be5e: 442e add r6, r5 + be60: f01e fcc6 bl 2a7f0 return BMC_OFF_LED_EVENT; - bdc2: f04f 0800 mov.w r8, #0 - bdc6: e5d7 b.n b978 + be64: f04f 0800 mov.w r8, #0 + display.renderFasFxBlock(data); + be68: 4630 mov r0, r6 + be6a: e894 000e ldmia.w r4, {r1, r2, r3} + be6e: f7fe ff5d bl ad2c + be72: e5ec b.n ba4e return bitRead(flags, 0); - bdc8: f505 5940 add.w r9, r5, #12288 ; 0x3000 - bdcc: f899 2373 ldrb.w r2, [r9, #883] ; 0x373 + be74: f505 5940 add.w r9, r5, #12288 ; 0x3000 + be78: f899 2393 ldrb.w r2, [r9, #915] ; 0x393 if(!connected()){ - bdd0: f012 0201 ands.w r2, r2, #1 - bdd4: f001 87d2 beq.w dd7c + be7c: f012 0201 ands.w r2, r2, #1 + be80: f001 8632 beq.w dae8 data.max = sync.fas.getMaxPresets()-1; - bdd8: f8b9 3374 ldrh.w r3, [r9, #884] ; 0x374 - bddc: 3b01 subs r3, #1 - bdde: b29b uxth r3, r3 - bde0: 8223 strh r3, [r4, #16] + be84: f8b9 3394 ldrh.w r3, [r9, #916] ; 0x394 + be88: 3b01 subs r3, #1 + be8a: b29b uxth r3, r3 + be8c: 8223 strh r3, [r4, #16] uint16_t p2 = BMC_GET_BYTE_2(2, event) & 0x7FF; - bde2: 0c0b lsrs r3, r1, #16 + be8e: 0c0b lsrs r3, r1, #16 uint16_t p1 = BMC_GET_BYTE_2(0, event) & 0x3FF; - bde4: f3c1 0109 ubfx r1, r1, #0, #10 + be90: f3c1 0109 ubfx r1, r1, #0, #10 uint16_t p2 = BMC_GET_BYTE_2(2, event) & 0x7FF; - bde8: f3c3 030a ubfx r3, r3, #0, #11 + be94: f3c3 030a ubfx r3, r3, #0, #11 if(p2 > 0){ - bdec: 2b00 cmp r3, #0 - bdee: f000 8739 beq.w cc64 + be98: 2b00 cmp r3, #0 + be9a: f000 8748 beq.w cd2e if((p2 - 1) > p1){ - bdf2: 3b01 subs r3, #1 - bdf4: 428b cmp r3, r1 - bdf6: f342 80a5 ble.w df44 + be9e: 3b01 subs r3, #1 + bea0: 428b cmp r3, r1 + bea2: f342 8078 ble.w df96 data.min = p1; - bdfa: 81e1 strh r1, [r4, #14] + bea6: 81e1 strh r1, [r4, #14] data.max = p2 - 1; - bdfc: 8223 strh r3, [r4, #16] + bea8: 8223 strh r3, [r4, #16] if(!data.scrollEnabled()){ - bdfe: f894 009d ldrb.w r0, [r4, #157] ; 0x9d - be02: 2800 cmp r0, #0 - be04: f042 804e bne.w dea4 + beaa: f894 009d ldrb.w r0, [r4, #157] ; 0x9d + beae: 2800 cmp r0, #0 + beb0: f042 801a bne.w dee8 if(!connected()){ - be08: 2a00 cmp r2, #0 - be0a: f003 8159 beq.w f0c0 + beb4: 2a00 cmp r2, #0 + beb6: f003 8287 beq.w f3c8 return preset.id; - be0e: f8b9 038c ldrh.w r0, [r9, #908] ; 0x38c + beba: f8b9 03ac ldrh.w r0, [r9, #940] ; 0x3ac outVal = sync.fas.getPresetNumber() != p1 ? p1: (p2 - 1); - be12: 4281 cmp r1, r0 - be14: f003 8151 beq.w f0ba - be18: 460b mov r3, r1 + bebe: 4281 cmp r1, r0 + bec0: f003 827f beq.w f3c2 + bec4: 460b mov r3, r1 if(group==BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - be1a: f006 00fd and.w r0, r6, #253 ; 0xfd - be1e: 2801 cmp r0, #1 - be20: f000 872b beq.w cc7a + bec6: f006 00fd and.w r0, r6, #253 ; 0xfd + beca: 2801 cmp r0, #1 + becc: f000 873a beq.w cd44 } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - be24: 2e08 cmp r6, #8 - be26: f002 8683 beq.w eb30 + bed0: 2e08 cmp r6, #8 + bed2: f002 86ab beq.w ec2c if(!connected()){ - be2a: b10a cbz r2, be30 + bed6: b10a cbz r2, bedc return preset.id; - be2c: f8b9 238c ldrh.w r2, [r9, #908] ; 0x38c + bed8: f8b9 23ac ldrh.w r2, [r9, #940] ; 0x3ac return sync.fas.getPresetNumber() == p1; - be30: eba1 0802 sub.w r8, r1, r2 - be34: fab8 f888 clz r8, r8 - be38: ea4f 1858 mov.w r8, r8, lsr #5 - be3c: e59c b.n b978 - switch(data.byteA){ - be3e: 69fb ldr r3, [r7, #28] - be40: 2b10 cmp r3, #16 - be42: f201 827f bhi.w d344 - be46: 2b0a cmp r3, #10 - be48: f201 8281 bhi.w d34e - if(group == BMC_DEVICE_GROUP_LED){ - be4c: 2e02 cmp r6, #2 - be4e: f001 84aa beq.w d7a6 - } else if(group == BMC_DEVICE_GROUP_ENCODER){ - be52: 2e03 cmp r6, #3 - be54: f002 8163 beq.w e11e - } else if(group == BMC_DEVICE_GROUP_BUTTON){ - be58: 2e01 cmp r6, #1 - be5a: f002 85a0 beq.w e99e - } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - be5e: 2e08 cmp r6, #8 - be60: f47f ad88 bne.w b974 - switch(data.byteA){ - be64: 69fa ldr r2, [r7, #28] - be66: 2a17 cmp r2, #23 - be68: f63f ae51 bhi.w bb0e - be6c: e8df f012 tbh [pc, r2, lsl #1] - be70: 26962a5f .word 0x26962a5f - be74: 26962696 .word 0x26962696 - be78: 26312661 .word 0x26312661 - be7c: 27f22602 .word 0x27f22602 - be80: 279327c2 .word 0x279327c2 - be84: 27372761 .word 0x27372761 - be88: 26d12710 .word 0x26d12710 - be8c: 20bb26a8 .word 0x20bb26a8 - be90: 20632098 .word 0x20632098 - be94: 20242047 .word 0x20242047 - be98: 1fd72001 .word 0x1fd72001 - be9c: 28211fad .word 0x28211fad - bea0: 200020b0 .word 0x200020b0 - bea4: 200020bc .word 0x200020bc - bea8: 200020c4 .word 0x200020c4 - beac: 200020cc .word 0x200020cc - beb0: 20000fac .word 0x20000fac - beb4: 200022c4 .word 0x200022c4 - beb8: 20003888 .word 0x20003888 - bebc: 200022cc .word 0x200022cc - bec0: 2000388c .word 0x2000388c + bedc: eba1 0802 sub.w r8, r1, r2 + bee0: fab8 f888 clz r8, r8 + bee4: ea4f 1858 mov.w r8, r8, lsr #5 + bee8: e5b1 b.n ba4e if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - bec4: f006 03fd and.w r3, r6, #253 ; 0xfd - bec8: 2b01 cmp r3, #1 - beca: f041 82af bne.w d42c + beea: f006 03fd and.w r3, r6, #253 ; 0xfd + beee: 2b01 cmp r3, #1 + bef0: f041 82c0 bne.w d474 if(data.scrollEnabled()){ - bece: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - bed2: 2b00 cmp r3, #0 - bed4: f001 879a beq.w de0c + bef4: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + bef8: 2b00 cmp r3, #0 + befa: f001 87eb beq.w ded4 return scroll.amount; - bed8: f894 10a0 ldrb.w r1, [r4, #160] ; 0xa0 + befe: f894 10a0 ldrb.w r1, [r4, #160] ; 0xa0 return BMC_OFF_LED_EVENT; - bedc: f04f 0800 mov.w r8, #0 + bf02: f04f 0800 mov.w r8, #0 sync.beatBuddy.tempoControl(data.scrollAmount(), data.scrollDirection()); - bee0: f243 7090 movw r0, #14224 ; 0x3790 - bee4: f894 209e ldrb.w r2, [r4, #158] ; 0x9e - bee8: ebb1 0108 subs.w r1, r1, r8 - beec: 4428 add r0, r5 - beee: bf18 it ne - bef0: 2101 movne r1, #1 - bef2: f7fd fe17 bl 9b24 - bef6: e53f b.n b978 + bf06: f243 70b0 movw r0, #14256 ; 0x37b0 + bf0a: f894 209e ldrb.w r2, [r4, #158] ; 0x9e + bf0e: ebb1 0108 subs.w r1, r1, r8 + bf12: 4428 add r0, r5 + bf14: bf18 it ne + bf16: 2101 movne r1, #1 + bf18: f7fd fdd4 bl 9ac4 + bf1c: e597 b.n ba4e if(group == BMC_DEVICE_GROUP_BUTTON){ - bef8: 2e01 cmp r6, #1 - befa: f001 86c6 beq.w dc8a + bf1e: 2e01 cmp r6, #1 + bf20: f001 873b beq.w dd9a } else if(group == BMC_DEVICE_GROUP_ENCODER){ - befe: 3e02 subs r6, #2 - bf00: 2e06 cmp r6, #6 - bf02: f63f ae04 bhi.w bb0e - bf06: a301 add r3, pc, #4 ; (adr r3, bf0c ) - bf08: f853 f026 ldr.w pc, [r3, r6, lsl #2] - bf0c: 0000cf5d .word 0x0000cf5d - bf10: 0000cf29 .word 0x0000cf29 - bf14: 0000ced9 .word 0x0000ced9 - bf18: 0000bb0f .word 0x0000bb0f - bf1c: 0000bb0f .word 0x0000bb0f - bf20: 0000bb0f .word 0x0000bb0f - bf24: 0000ce39 .word 0x0000ce39 - if(group == BMC_DEVICE_GROUP_DISPLAY){ - bf28: 2e08 cmp r6, #8 - bf2a: f47f ad23 bne.w b974 - if(data.byteA==0){ - bf2e: 69fb ldr r3, [r7, #28] - bf30: 2b02 cmp r3, #2 - bf32: f002 8718 beq.w ed66 - bf36: 2b03 cmp r3, #3 - bf38: f47f ade9 bne.w bb0e - bitWrite(settings, 2, 0); - bf3c: 78e3 ldrb r3, [r4, #3] - strcpy(str, twoDigitDisplay); - bf3e: f243 21fa movw r1, #13050 ; 0x32fa - strcpy(data.label, "DAW"); - bf42: 4ac5 ldr r2, [pc, #788] ; (c258 ) - display.renderBlock(data); - bf44: f643 3638 movw r6, #15160 ; 0x3b38 - bf48: f023 0304 bic.w r3, r3, #4 - bf4c: 4429 add r1, r5 - strcpy(data.label, "DAW"); - bf4e: 6810 ldr r0, [r2, #0] - display.renderBlock(data); - bf50: 442e add r6, r5 - bitWrite(settings, 3, 1); - bf52: f043 0308 orr.w r3, r3, #8 + bf24: 3e02 subs r6, #2 + bf26: 2e06 cmp r6, #6 + bf28: f63f ae54 bhi.w bbd4 + bf2c: a301 add r3, pc, #4 ; (adr r3, bf34 ) + bf2e: f853 f026 ldr.w pc, [r3, r6, lsl #2] + bf32: bf00 nop + bf34: 0000d029 .word 0x0000d029 + bf38: 0000cf3d .word 0x0000cf3d + bf3c: 0000ceed .word 0x0000ceed + bf40: 0000bbd5 .word 0x0000bbd5 + bf44: 0000bbd5 .word 0x0000bbd5 + bf48: 0000bbd5 .word 0x0000bbd5 + bf4c: 0000cf89 .word 0x0000cf89 + if(group==BMC_DEVICE_GROUP_BUTTON){ + bf50: 2e01 cmp r6, #1 + bf52: f47f ad7a bne.w ba4a + customSysEx.send((data.byteA & 0x03), e.ports, data.byteB, data.byteC); + bf56: 697b ldr r3, [r7, #20] + bf58: f243 70d0 movw r0, #14288 ; 0x37d0 + bf5c: 693c ldr r4, [r7, #16] return BMC_OFF_LED_EVENT; - bf56: f04f 0800 mov.w r8, #0 - strcpy(data.label, "DAW"); - bf5a: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - bf5e: f107 006d add.w r0, r7, #109 ; 0x6d - bf62: 70e3 strb r3, [r4, #3] - bf64: f022 fd0a bl 2e97c - display.renderBlock(data); - bf68: f107 0160 add.w r1, r7, #96 ; 0x60 - bf6c: 2295 movs r2, #149 ; 0x95 - bf6e: 4668 mov r0, sp - bf70: f01e fbca bl 2a708 - bf74: 4630 mov r0, r6 - bf76: e894 000e ldmia.w r4, {r1, r2, r3} - bf7a: f7fe fd2f bl a9dc - bf7e: e4fb b.n b978 - if(group == BMC_DEVICE_GROUP_BUTTON){ - bf80: 2e01 cmp r6, #1 - bf82: f002 81de beq.w e342 - } else if(group == BMC_DEVICE_GROUP_LED){ - bf86: 2e02 cmp r6, #2 - bf88: f001 8707 beq.w dd9a - } else if(group == BMC_DEVICE_GROUP_ENCODER){ - bf8c: 2e03 cmp r6, #3 - bf8e: f002 86f2 beq.w ed76 - } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - bf92: 2e05 cmp r6, #5 - bf94: f47f acee bne.w b974 - if(data.byteA == BMC_DAW_CMD_VPOT_SELECT || (data.byteA >= BMC_DAW_CMD_VPOT_LED_1 && data.byteA <= BMC_DAW_CMD_VPOT_LED_CENTER)){ - bf98: 69fa ldr r2, [r7, #28] - bf9a: f1a2 0356 sub.w r3, r2, #86 ; 0x56 - bf9e: 2b0b cmp r3, #11 - bfa0: f243 81a3 bls.w f2ea - bfa4: 1f11 subs r1, r2, #4 - bfa6: 424b negs r3, r1 - bfa8: 414b adcs r3, r1 - bfaa: 2b00 cmp r3, #0 - bfac: f043 819d bne.w f2ea - } else if(data.byteA >= BMC_DAW_CMD_METER_LED_PEAK && data.byteA <= BMC_DAW_CMD_METER_LED_12){ - bfb0: 69fa ldr r2, [r7, #28] - bfb2: 3a49 subs r2, #73 ; 0x49 - bfb4: 2a0c cmp r2, #12 - bfb6: f203 85c3 bhi.w fb40 - return chAllowed(n) ? channel[chCheck(n)].vu.getMeterValue() : 0; - bfba: 69ba ldr r2, [r7, #24] - bfbc: 2a08 cmp r2, #8 - bfbe: d80a bhi.n bfd6 - return (n>=8) ? selected : n; - bfc0: f505 5940 add.w r9, r5, #12288 ; 0x3000 - bfc4: bf04 itt eq - bfc6: f899 3301 ldrbeq.w r3, [r9, #769] ; 0x301 - bfca: 60fb streq r3, [r7, #12] - return meter; - bfcc: 68fb ldr r3, [r7, #12] - bfce: eb09 03c3 add.w r3, r9, r3, lsl #3 - bfd2: f893 3312 ldrb.w r3, [r3, #786] ; 0x312 - num += in_range / 2; - bfd6: f04f 0864 mov.w r8, #100 ; 0x64 - bfda: 2106 movs r1, #6 - long result = num / in_range + out_min; - bfdc: 220c movs r2, #12 - num += in_range / 2; - bfde: fb18 1803 smlabb r8, r8, r3, r1 - long result = num / in_range + out_min; - bfe2: fbb8 f8f2 udiv r8, r8, r2 - return map(controller.getMeterValue(ch), 0, 12, 0, 100); - bfe6: fa5f f888 uxtb.w r8, r8 - return sync.daw.getMeterValuePercentage(data.byteB); - bfea: e4c5 b.n b978 - uint8_t p1 = BMC_GET_BYTE(0, event) & 0x07; - bfec: 69fb ldr r3, [r7, #28] - bfee: f003 0807 and.w r8, r3, #7 - data.max = 7; + bf5e: f04f 0800 mov.w r8, #0 + customSysEx.send((data.byteA & 0x03), e.ports, data.byteB, data.byteC); + bf62: f893 2033 ldrb.w r2, [r3, #51] ; 0x33 + bf66: 4428 add r0, r5 + bf68: e9d7 3106 ldrd r3, r1, [r7, #24] + bf6c: 9400 str r4, [sp, #0] + bf6e: f001 0103 and.w r1, r1, #3 + bf72: f7fd fdcb bl 9b0c + bf76: e56a b.n ba4e + bf78: 200020cc .word 0x200020cc + bf7c: 20000fac .word 0x20000fac + bf80: 200020b0 .word 0x200020b0 + bf84: 200020bc .word 0x200020bc + bf88: 200020c4 .word 0x200020c4 + bf8c: 200022c4 .word 0x200022c4 + bf90: 20003948 .word 0x20003948 + bf94: 200022cc .word 0x200022cc + bf98: 2000394c .word 0x2000394c + data.max = BMC_MAX_PRESET_BANKS-1; + bf9c: 2307 movs r3, #7 + bf9e: 8223 strh r3, [r4, #16] + if(data.byteB > 0){ + bfa0: 69bb ldr r3, [r7, #24] + bfa2: b193 cbz r3, bfca + if((data.byteB-1) > data.byteA){ + bfa4: 3b01 subs r3, #1 + bfa6: 69fa ldr r2, [r7, #28] + bfa8: 4293 cmp r3, r2 + bfaa: f342 8079 ble.w e0a0 + data.max = data.byteB-1; + bfae: 8223 strh r3, [r4, #16] + data.min = data.byteA; + bfb0: 81e2 strh r2, [r4, #14] + if(!data.scrollEnabled()){ + bfb2: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + bfb6: b943 cbnz r3, bfca + return bank; + bfb8: f505 5340 add.w r3, r5, #12288 ; 0x3000 + outVal = presets.getBank() != data.byteA ? data.byteA : (data.byteB-1); + bfbc: 69fa ldr r2, [r7, #28] + bfbe: f8d3 3218 ldr.w r3, [r3, #536] ; 0x218 + bfc2: 781b ldrb r3, [r3, #0] + bfc4: 4293 cmp r3, r2 + bfc6: f003 80ea beq.w f19e + bfca: 69f9 ldr r1, [r7, #28] + bfcc: f89a 3968 ldrb.w r3, [sl, #2408] ; 0x968 + if(flags.read(BMC_FLAGS_BLOCK_PRESETS)){ + bfd0: 06db lsls r3, r3, #27 + bfd2: f53f ad3a bmi.w ba4a + if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ + bfd6: 3e01 subs r6, #1 + bfd8: 2e07 cmp r6, #7 + bfda: f200 8605 bhi.w cbe8 + bfde: e8df f016 tbh [pc, r6, lsl #1] + bfe2: 05ca .short 0x05ca + bfe4: 05ca0603 .word 0x05ca0603 + bfe8: 07740603 .word 0x07740603 + bfec: 06030603 .word 0x06030603 + bff0: 0736 .short 0x0736 + data.max = BMC_MAX_PRESETS_PER_BANK-1; bff2: 2307 movs r3, #7 bff4: 8223 strh r3, [r4, #16] - if(p2 > 0){ + if(data.byteB > 0){ bff6: 69bb ldr r3, [r7, #24] - bff8: f013 0207 ands.w r2, r3, #7 - bffc: f001 8377 beq.w d6ee + bff8: b193 cbz r3, c020 + if((data.byteB-1) > data.byteA){ + bffa: 3b01 subs r3, #1 + bffc: 69fa ldr r2, [r7, #28] + bffe: 4293 cmp r3, r2 + c000: f342 8085 ble.w e10e + data.max = data.byteB-1; + c004: 8223 strh r3, [r4, #16] + data.min = data.byteA; + c006: 81e2 strh r2, [r4, #14] + if(!data.scrollEnabled()){ + c008: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + c00c: b943 cbnz r3, c020 + return preset; + c00e: f505 5340 add.w r3, r5, #12288 ; 0x3000 + outVal = presets.get() != data.byteA ? data.byteA : (data.byteB-1); + c012: 69fa ldr r2, [r7, #28] + c014: f8d3 321c ldr.w r3, [r3, #540] ; 0x21c + c018: 781b ldrb r3, [r3, #0] + c01a: 4293 cmp r3, r2 + c01c: f003 821b beq.w f456 + c020: 69fa ldr r2, [r7, #28] + if(data.byteC == 1){ + c022: 693b ldr r3, [r7, #16] + c024: 2b01 cmp r3, #1 + c026: d103 bne.n c030 + data.min = 0; + c028: 2300 movs r3, #0 + c02a: 81e3 strh r3, [r4, #14] + data.max = BMC_MAX_PRESETS-1; + c02c: 233f movs r3, #63 ; 0x3f + c02e: 8223 strh r3, [r4, #16] + c030: f89a 3968 ldrb.w r3, [sl, #2408] ; 0x968 + if(flags.read(BMC_FLAGS_BLOCK_PRESETS)){ + c034: 06d9 lsls r1, r3, #27 + c036: f53f ad08 bmi.w ba4a + if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ + c03a: 3e01 subs r6, #1 + c03c: 2e07 cmp r6, #7 + c03e: f200 863d bhi.w ccbc + c042: e8df f016 tbh [pc, r6, lsl #1] + c046: 05e9 .short 0x05e9 + c048: 05e9063b .word 0x05e9063b + c04c: 06e7063b .word 0x06e7063b + c050: 063b063b .word 0x063b063b + c054: 068c .short 0x068c + uint8_t outVal = data.setMinMax(layer, 0, BMC_MAX_LAYERS-1, data.byteA, data.byteB); + c056: f8da c86c ldr.w ip, [sl, #2156] ; 0x86c + max = t_max; + c05a: f04f 0e04 mov.w lr, #4 + c05e: 69ba ldr r2, [r7, #24] + c060: f89c 0000 ldrb.w r0, [ip] + c064: 8bbb ldrh r3, [r7, #28] + c066: fa1f f882 uxth.w r8, r2 + c06a: f8a4 e010 strh.w lr, [r4, #16] + if(t_max2 > 0){ + c06e: 2a00 cmp r2, #0 + c070: f001 81eb beq.w d44a + max = t_max2-1; + c074: f108 32ff add.w r2, r8, #4294967295 ; 0xffffffff + min = t_min2; + c078: 81e3 strh r3, [r4, #14] + max = t_max2-1; + c07a: b292 uxth r2, r2 + if(min > max){ + c07c: 4293 cmp r3, r2 + max = t_max2-1; + c07e: 8222 strh r2, [r4, #16] + if(min > max){ + c080: f242 8015 bls.w e0ae + min = t_max2-1; + c084: 81e2 strh r2, [r4, #14] + max = t_min2; + c086: 8223 strh r3, [r4, #16] + if(!scroll.enabled){ + c088: f894 209d ldrb.w r2, [r4, #157] ; 0x9d + c08c: 2a00 cmp r2, #0 + c08e: f041 81dc bne.w d44a + outVal = t_currentValue != min ? min : max; + c092: 89e2 ldrh r2, [r4, #14] + c094: 4290 cmp r0, r2 + c096: d100 bne.n c09a + c098: 8a22 ldrh r2, [r4, #16] + if(noScroll){ + c09a: f894 8016 ldrb.w r8, [r4, #22] + c09e: f1b8 0f00 cmp.w r8, #0 + c0a2: f001 833e beq.w d722 + outVal = scroll.direction ? max : min; + c0a6: f894 209e ldrb.w r2, [r4, #158] ; 0x9e + c0aa: 2a00 cmp r2, #0 + c0ac: f002 8036 beq.w e11c + c0b0: 8a22 ldrh r2, [r4, #16] + scroll.enabled = false; + c0b2: 2000 movs r0, #0 + c0b4: f884 009d strb.w r0, [r4, #157] ; 0x9d + if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ + c0b8: f006 00fd and.w r0, r6, #253 ; 0xfd + c0bc: 2801 cmp r0, #1 + c0be: f041 8207 bne.w d4d0 + setLayer(outVal); + c0c2: 2300 movs r3, #0 + uint8_t outVal = data.setMinMax(layer, 0, BMC_MAX_LAYERS-1, data.byteA, data.byteB); + c0c4: b2d1 uxtb r1, r2 + setLayer(outVal); + c0c6: 4628 mov r0, r5 + c0c8: 461a mov r2, r3 + return BMC_OFF_LED_EVENT; + c0ca: 4698 mov r8, r3 + setLayer(outVal); + c0cc: f009 f89e bl 1520c + c0d0: e4bd b.n ba4e + if(data.byteA >= BMC_MAX_SKETCH_BYTES){ + c0d2: 69fb ldr r3, [r7, #28] + c0d4: 2b03 cmp r3, #3 + c0d6: f63f acb8 bhi.w ba4a + if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ + c0da: f006 03fd and.w r3, r6, #253 ; 0xfd + c0de: 2b01 cmp r3, #1 + c0e0: f002 8110 beq.w e304 + } else if(group==BMC_DEVICE_GROUP_DISPLAY){ + c0e4: 2e08 cmp r6, #8 + c0e6: f47f acb0 bne.w ba4a + BMCSketchByteData sbData = BMCBuildData::getSketchByteData(data.byteA); + c0ea: 69f9 ldr r1, [r7, #28] + c0ec: f507 70ce add.w r0, r7, #412 ; 0x19c + c0f0: f7fb fa88 bl 7604 + BMCTools::getSketchByteFormat(data.str, data.byteA, getSketchByte(data.byteA)); + c0f4: 79a1 ldrb r1, [r4, #6] + c0f6: 4628 mov r0, r5 + display.renderBlock(data); + c0f8: f643 3658 movw r6, #15192 ; 0x3b58 + BMCTools::getSketchByteFormat(data.str, data.byteA, getSketchByte(data.byteA)); + c0fc: 62f9 str r1, [r7, #44] ; 0x2c + c0fe: f00b fef5 bl 17eec + c102: 6af9 ldr r1, [r7, #44] ; 0x2c + c104: 4602 mov r2, r0 + c106: f107 006d add.w r0, r7, #109 ; 0x6d + display.renderBlock(data); + c10a: 442e add r6, r5 + BMCTools::getSketchByteFormat(data.str, data.byteA, getSketchByte(data.byteA)); + c10c: f7fb fb0a bl 7724 + strcpy(data.label, sbData.name); + c110: f507 71ce add.w r1, r7, #412 ; 0x19c + c114: f107 00bf add.w r0, r7, #191 ; 0xbf + return BMC_OFF_LED_EVENT; + c118: f04f 0800 mov.w r8, #0 + strcpy(data.label, sbData.name); + c11c: f022 fc9e bl 2ea5c + bitWrite(settings, 2, 0); + c120: 78e3 ldrb r3, [r4, #3] + display.renderBlock(data); + c122: f107 0160 add.w r1, r7, #96 ; 0x60 + c126: 2295 movs r2, #149 ; 0x95 + c128: f023 0304 bic.w r3, r3, #4 + c12c: 4668 mov r0, sp + bitWrite(settings, 3, 1); + c12e: f043 0308 orr.w r3, r3, #8 + c132: 70e3 strb r3, [r4, #3] + c134: f01e fb5c bl 2a7f0 + c138: 4630 mov r0, r6 + c13a: e894 000e ldmia.w r4, {r1, r2, r3} + c13e: f7fe fc1f bl a980 + c142: e484 b.n ba4e + uint8_t p1 = BMC_GET_BYTE(0, event) & 0x07; + c144: 69fb ldr r3, [r7, #28] + c146: f003 0807 and.w r8, r3, #7 + data.max = 7; + c14a: 2307 movs r3, #7 + c14c: 8223 strh r3, [r4, #16] + if(p2 > 0){ + c14e: 69bb ldr r3, [r7, #24] + c150: f013 0207 ands.w r2, r3, #7 + c154: f001 8278 beq.w d648 if((p2 - 1) > p1){ - c000: 1e53 subs r3, r2, #1 - c002: 4543 cmp r3, r8 - c004: f341 8719 ble.w de3a + c158: 1e53 subs r3, r2, #1 + c15a: 4543 cmp r3, r8 + c15c: f341 8728 ble.w dfb0 data.min = p1; - c008: f8a4 800e strh.w r8, [r4, #14] + c160: f8a4 800e strh.w r8, [r4, #14] data.max = p2 - 1; - c00c: 8223 strh r3, [r4, #16] + c164: 8223 strh r3, [r4, #16] if(!data.scrollEnabled()){ - c00e: f894 209d ldrb.w r2, [r4, #157] ; 0x9d - c012: 2a00 cmp r2, #0 - c014: f041 8718 bne.w de48 - c018: f505 5940 add.w r9, r5, #12288 ; 0x3000 - c01c: f899 2373 ldrb.w r2, [r9, #883] ; 0x373 + c166: f894 209d ldrb.w r2, [r4, #157] ; 0x9d + c16a: 2a00 cmp r2, #0 + c16c: f041 8754 bne.w e018 + c170: f505 5940 add.w r9, r5, #12288 ; 0x3000 + c174: f899 2393 ldrb.w r2, [r9, #915] ; 0x393 if(!connected()){ - c020: f012 0201 ands.w r2, r2, #1 + c178: f012 0201 ands.w r2, r2, #1 return preset.scene; - c024: bf18 it ne - c026: f899 238e ldrbne.w r2, [r9, #910] ; 0x38e + c17c: bf18 it ne + c17e: f899 23ae ldrbne.w r2, [r9, #942] ; 0x3ae outVal = sync.fas.getSceneNumber() != p1 ? p1: (p2 - 1); - c02a: 4590 cmp r8, r2 - c02c: f003 8042 beq.w f0b4 - c030: 4642 mov r2, r8 + c182: 4590 cmp r8, r2 + c184: f003 8097 beq.w f2b6 + c188: 4642 mov r2, r8 if(group==BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - c032: f006 03fd and.w r3, r6, #253 ; 0xfd - c036: 2b01 cmp r3, #1 - c038: f041 8228 bne.w d48c - c03c: f899 3373 ldrb.w r3, [r9, #883] ; 0x373 + c18a: f006 03fd and.w r3, r6, #253 ; 0xfd + c18e: 2b01 cmp r3, #1 + c190: f041 82b5 bne.w d6fe + c194: f899 3393 ldrb.w r3, [r9, #915] ; 0x393 if(!connected()){ - c040: 07db lsls r3, r3, #31 - c042: f57f ac97 bpl.w b974 + c198: 07db lsls r3, r3, #31 + c19a: f57f ac56 bpl.w ba4a fetchSysEx(BMC_FAS3_FUNC_ID_SCENE, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - c046: 2300 movs r3, #0 - c048: f243 3054 movw r0, #13140 ; 0x3354 - c04c: 210c movs r1, #12 - c04e: 4428 add r0, r5 - c050: 9300 str r3, [sp, #0] + c19e: 2300 movs r3, #0 + c1a0: f243 3074 movw r0, #13172 ; 0x3374 + c1a4: 210c movs r1, #12 + c1a6: 4428 add r0, r5 + c1a8: 9300 str r3, [sp, #0] return BMC_OFF_LED_EVENT; - c052: 4698 mov r8, r3 - c054: f7f5 f9bc bl 13d0 - c058: e48e b.n b978 + c1aa: 4698 mov r8, r3 + c1ac: f7f5 f910 bl 13d0 + c1b0: e44d b.n ba4e if(group==BMC_DEVICE_GROUP_BUTTON){ - c05a: 2e01 cmp r6, #1 - c05c: f001 8388 beq.w d770 + c1b2: 2e01 cmp r6, #1 + c1b4: f001 861f beq.w ddf6 } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - c060: 2e05 cmp r6, #5 - c062: f002 8125 beq.w e2b0 + c1b8: 2e05 cmp r6, #5 + c1ba: f002 80f0 beq.w e39e } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c066: 2e08 cmp r6, #8 - c068: f042 8138 bne.w e2dc + c1be: 2e08 cmp r6, #8 + c1c0: f042 8103 bne.w e3ca bitWrite(settings, 2, 0); - c06c: 78e3 ldrb r3, [r4, #3] - c06e: f505 5240 add.w r2, r5, #12288 ; 0x3000 + c1c4: 78e3 ldrb r3, [r4, #3] + c1c6: f505 5240 add.w r2, r5, #12288 ; 0x3000 sprintf(data.str, "%03u", data.value); - c072: 497a ldr r1, [pc, #488] ; (c25c ) - c074: f107 006d add.w r0, r7, #109 ; 0x6d - c078: f8d2 2188 ldr.w r2, [r2, #392] ; 0x188 - c07c: f023 0304 bic.w r3, r3, #4 + c1ca: 49c5 ldr r1, [pc, #788] ; (c4e0 ) + c1cc: f107 006d add.w r0, r7, #109 ; 0x6d + c1d0: f8d2 21a8 ldr.w r2, [r2, #424] ; 0x1a8 + c1d4: f023 0304 bic.w r3, r3, #4 display.renderBlock(data); - c080: f643 3638 movw r6, #15160 ; 0x3b38 + c1d8: f643 3658 movw r6, #15192 ; 0x3b58 return BMC_OFF_LED_EVENT; - c084: f04f 0800 mov.w r8, #0 - c088: 8812 ldrh r2, [r2, #0] + c1dc: f04f 0800 mov.w r8, #0 + c1e0: 8812 ldrh r2, [r2, #0] bitWrite(settings, 3, 1); - c08a: f043 0308 orr.w r3, r3, #8 + c1e2: f043 0308 orr.w r3, r3, #8 display.renderBlock(data); - c08e: 442e add r6, r5 + c1e6: 442e add r6, r5 data.value = midiClock.getBpm(); - c090: 8162 strh r2, [r4, #10] - c092: 70e3 strb r3, [r4, #3] + c1e8: 8162 strh r2, [r4, #10] + c1ea: 70e3 strb r3, [r4, #3] sprintf(data.str, "%03u", data.value); - c094: f022 f87a bl 2e18c + c1ec: f022 f842 bl 2e274 strcpy(data.label, "BPM"); - c098: 4b71 ldr r3, [pc, #452] ; (c260 ) + c1f0: 4bbc ldr r3, [pc, #752] ; (c4e4 ) display.renderBlock(data); - c09a: f107 0160 add.w r1, r7, #96 ; 0x60 - c09e: 2295 movs r2, #149 ; 0x95 + c1f2: f107 0160 add.w r1, r7, #96 ; 0x60 + c1f6: 2295 movs r2, #149 ; 0x95 strcpy(data.label, "BPM"); - c0a0: 6818 ldr r0, [r3, #0] - c0a2: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + c1f8: 6818 ldr r0, [r3, #0] + c1fa: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - c0a6: 4668 mov r0, sp - c0a8: f01e fb2e bl 2a708 - c0ac: 4630 mov r0, r6 - c0ae: e894 000e ldmia.w r4, {r1, r2, r3} - c0b2: f7fe fc93 bl a9dc - c0b6: e45f b.n b978 + c1fe: 4668 mov r0, sp + c200: f01e faf6 bl 2a7f0 + c204: 4630 mov r0, r6 + c206: e894 000e ldmia.w r4, {r1, r2, r3} + c20a: f7fe fbb9 bl a980 + c20e: e41e b.n ba4e if(group==BMC_DEVICE_GROUP_BUTTON){ - c0b8: 2e01 cmp r6, #1 - c0ba: f002 8209 beq.w e4d0 + c210: 2e01 cmp r6, #1 + c212: f002 8255 beq.w e6c0 } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c0be: 2e08 cmp r6, #8 - c0c0: f47f ac58 bne.w b974 + c216: 2e08 cmp r6, #8 + c218: f47f ac17 bne.w ba4a bitWrite(settings, 2, 0); - c0c4: 78e3 ldrb r3, [r4, #3] + c21c: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - c0c6: f643 3838 movw r8, #15160 ; 0x3b38 + c21e: f643 3858 movw r8, #15192 ; 0x3b58 strcpy(data.str, "MSB PGM"); - c0ca: 4e66 ldr r6, [pc, #408] ; (c264 ) + c222: 4eb1 ldr r6, [pc, #708] ; (c4e8 ) display.renderBlock(data); - c0cc: 2295 movs r2, #149 ; 0x95 - c0ce: f023 0304 bic.w r3, r3, #4 + c224: 2295 movs r2, #149 ; 0x95 + c226: f023 0304 bic.w r3, r3, #4 strcpy(data.str, "MSB PGM"); - c0d2: ce03 ldmia r6!, {r0, r1} + c22a: ce03 ldmia r6!, {r0, r1} bitWrite(settings, 3, 1); - c0d4: f043 0308 orr.w r3, r3, #8 - c0d8: f8c7 006d str.w r0, [r7, #109] ; 0x6d + c22c: f043 0308 orr.w r3, r3, #8 + c230: f8c7 006d str.w r0, [r7, #109] ; 0x6d display.renderBlock(data); - c0dc: 4668 mov r0, sp + c234: 4668 mov r0, sp strcpy(data.str, "MSB PGM"); - c0de: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + c236: f8c7 1071 str.w r1, [r7, #113] ; 0x71 display.renderBlock(data); - c0e2: f107 0160 add.w r1, r7, #96 ; 0x60 - c0e6: 70e3 strb r3, [r4, #3] - c0e8: f01e fb0e bl 2a708 - c0ec: eb08 0005 add.w r0, r8, r5 + c23a: f107 0160 add.w r1, r7, #96 ; 0x60 + c23e: 70e3 strb r3, [r4, #3] + c240: f01e fad6 bl 2a7f0 + c244: eb08 0005 add.w r0, r8, r5 return BMC_OFF_LED_EVENT; - c0f0: f04f 0800 mov.w r8, #0 + c248: f04f 0800 mov.w r8, #0 display.renderBlock(data); - c0f4: e894 000e ldmia.w r4, {r1, r2, r3} - c0f8: f7fe fc70 bl a9dc - c0fc: e43c b.n b978 + c24c: e894 000e ldmia.w r4, {r1, r2, r3} + c250: f7fe fb96 bl a980 + c254: f7ff bbfb b.w ba4e if(group==BMC_DEVICE_GROUP_BUTTON){ - c0fe: 2e01 cmp r6, #1 - c100: f001 85b3 beq.w dc6a + c258: 2e01 cmp r6, #1 + c25a: f001 85e7 beq.w de2c } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - c104: 2e05 cmp r6, #5 - c106: f001 87ed beq.w e0e4 + c25e: 2e05 cmp r6, #5 + c260: f002 8043 beq.w e2ea } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c10a: 2e08 cmp r6, #8 - c10c: f003 8111 beq.w f332 + c264: 2e08 cmp r6, #8 + c266: f003 805e beq.w f326 if(data.byteA==0){ - c110: 69fb ldr r3, [r7, #28] - c112: f89a 8acc ldrb.w r8, [sl, #2764] ; 0xacc - c116: 2b00 cmp r3, #0 - c118: f042 830c bne.w e734 + c26a: 69fb ldr r3, [r7, #28] + c26c: f89a 8acc ldrb.w r8, [sl, #2764] ; 0xacc + c270: 2b00 cmp r3, #0 + c272: f042 82cf bne.w e814 return midi.getRealTimeBlockInput(); - c11c: f3c8 0840 ubfx r8, r8, #1, #1 - c120: e42a b.n b978 + c276: f3c8 0840 ubfx r8, r8, #1, #1 + c27a: f7ff bbe8 b.w ba4e if(group==BMC_DEVICE_GROUP_BUTTON){ - c122: 2e01 cmp r6, #1 - c124: f002 81f6 beq.w e514 + c27e: 2e01 cmp r6, #1 + c280: f002 8240 beq.w e704 } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c128: 2e08 cmp r6, #8 - c12a: f47f ac23 bne.w b974 + c284: 2e08 cmp r6, #8 + c286: f47f abe0 bne.w ba4a bitWrite(settings, 2, 0); - c12e: 78e3 ldrb r3, [r4, #3] + c28a: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - c130: f643 3838 movw r8, #15160 ; 0x3b38 + c28c: f643 3858 movw r8, #15192 ; 0x3b58 strcpy(data.str, "LSB PGM"); - c134: 4e4c ldr r6, [pc, #304] ; (c268 ) + c290: 4e96 ldr r6, [pc, #600] ; (c4ec ) display.renderBlock(data); - c136: 2295 movs r2, #149 ; 0x95 - c138: f023 0304 bic.w r3, r3, #4 + c292: 2295 movs r2, #149 ; 0x95 + c294: f023 0304 bic.w r3, r3, #4 strcpy(data.str, "LSB PGM"); - c13c: ce03 ldmia r6!, {r0, r1} + c298: ce03 ldmia r6!, {r0, r1} bitWrite(settings, 3, 1); - c13e: f043 0308 orr.w r3, r3, #8 - c142: f8c7 006d str.w r0, [r7, #109] ; 0x6d + c29a: f043 0308 orr.w r3, r3, #8 + c29e: f8c7 006d str.w r0, [r7, #109] ; 0x6d display.renderBlock(data); - c146: 4668 mov r0, sp + c2a2: 4668 mov r0, sp strcpy(data.str, "LSB PGM"); - c148: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + c2a4: f8c7 1071 str.w r1, [r7, #113] ; 0x71 display.renderBlock(data); - c14c: f107 0160 add.w r1, r7, #96 ; 0x60 - c150: 70e3 strb r3, [r4, #3] - c152: f01e fad9 bl 2a708 - c156: eb08 0005 add.w r0, r8, r5 + c2a8: f107 0160 add.w r1, r7, #96 ; 0x60 + c2ac: 70e3 strb r3, [r4, #3] + c2ae: f01e fa9f bl 2a7f0 + c2b2: eb08 0005 add.w r0, r8, r5 return BMC_OFF_LED_EVENT; - c15a: f04f 0800 mov.w r8, #0 + c2b6: f04f 0800 mov.w r8, #0 display.renderBlock(data); - c15e: e894 000e ldmia.w r4, {r1, r2, r3} - c162: f7fe fc3b bl a9dc - c166: e407 b.n b978 + c2ba: e894 000e ldmia.w r4, {r1, r2, r3} + c2be: f7fe fb5f bl a980 + c2c2: f7ff bbc4 b.w ba4e if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - c168: f006 03fd and.w r3, r6, #253 ; 0xfd - c16c: 2b01 cmp r3, #1 - c16e: f001 84dd beq.w db2c + c2c6: f006 03fd and.w r3, r6, #253 ; 0xfd + c2ca: 2b01 cmp r3, #1 + c2cc: f001 8485 beq.w dbda } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - c172: 2e05 cmp r6, #5 - c174: f001 87c3 beq.w e0fe + c2d0: 2e05 cmp r6, #5 + c2d2: f002 8054 beq.w e37e } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c178: 2e08 cmp r6, #8 - c17a: f47f abfb bne.w b974 + c2d6: 2e08 cmp r6, #8 + c2d8: f47f abb7 bne.w ba4a strcpy(data.str, "TRIGGER"); - c17e: 4a3b ldr r2, [pc, #236] ; (c26c ) + c2dc: 4a84 ldr r2, [pc, #528] ; (c4f0 ) display.renderBlock(data); - c180: f643 3838 movw r8, #15160 ; 0x3b38 + c2de: f643 3858 movw r8, #15192 ; 0x3b58 bitWrite(settings, 2, 0); - c184: 78e3 ldrb r3, [r4, #3] + c2e2: 78e3 ldrb r3, [r4, #3] strcpy(data.label, "PGM BNK"); - c186: 4e3a ldr r6, [pc, #232] ; (c270 ) + c2e4: 4e83 ldr r6, [pc, #524] ; (c4f4 ) display.renderBlock(data); - c188: 44a8 add r8, r5 - c18a: f023 0304 bic.w r3, r3, #4 + c2e6: 44a8 add r8, r5 + c2e8: f023 0304 bic.w r3, r3, #4 strcpy(data.str, "TRIGGER"); - c18e: ca03 ldmia r2!, {r0, r1} + c2ec: ca03 ldmia r2!, {r0, r1} bitWrite(settings, 3, 1); - c190: f043 0308 orr.w r3, r3, #8 + c2ee: f043 0308 orr.w r3, r3, #8 display.renderBlock(data); - c194: 2295 movs r2, #149 ; 0x95 + c2f2: 2295 movs r2, #149 ; 0x95 strcpy(data.str, "TRIGGER"); - c196: f8c7 006d str.w r0, [r7, #109] ; 0x6d - c19a: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - c19e: 70e3 strb r3, [r4, #3] + c2f4: f8c7 006d str.w r0, [r7, #109] ; 0x6d + c2f8: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + c2fc: 70e3 strb r3, [r4, #3] strcpy(data.label, "PGM BNK"); - c1a0: ce03 ldmia r6!, {r0, r1} - c1a2: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + c2fe: ce03 ldmia r6!, {r0, r1} + c300: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - c1a6: 4668 mov r0, sp + c304: 4668 mov r0, sp strcpy(data.label, "PGM BNK"); - c1a8: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 + c306: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 display.renderBlock(data); - c1ac: f107 0160 add.w r1, r7, #96 ; 0x60 - c1b0: f01e faaa bl 2a708 - c1b4: 4640 mov r0, r8 + c30a: f107 0160 add.w r1, r7, #96 ; 0x60 + c30e: f01e fa6f bl 2a7f0 + c312: 4640 mov r0, r8 return BMC_OFF_LED_EVENT; - c1b6: f04f 0800 mov.w r8, #0 - display.renderBlock(data); - c1ba: e894 000e ldmia.w r4, {r1, r2, r3} - c1be: f7fe fc0d bl a9dc - c1c2: f7ff bbd9 b.w b978 - if(data.byteA >= BMC_MAX_SKETCH_BYTES){ - c1c6: 69fb ldr r3, [r7, #28] - c1c8: 2b03 cmp r3, #3 - c1ca: f63f abd3 bhi.w b974 - if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - c1ce: f006 03fd and.w r3, r6, #253 ; 0xfd - c1d2: 2b01 cmp r3, #1 - c1d4: f002 8086 beq.w e2e4 - } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c1d8: 2e08 cmp r6, #8 - c1da: f47f abcb bne.w b974 - BMCSketchByteData sbData = BMCBuildData::getSketchByteData(data.byteA); - c1de: 69f9 ldr r1, [r7, #28] - c1e0: f507 70ce add.w r0, r7, #412 ; 0x19c - c1e4: f7fb fa3e bl 7664 - BMCTools::getSketchByteFormat(data.str, data.byteA, getSketchByte(data.byteA)); - c1e8: 79a1 ldrb r1, [r4, #6] - c1ea: 4628 mov r0, r5 - display.renderBlock(data); - c1ec: f643 3638 movw r6, #15160 ; 0x3b38 - BMCTools::getSketchByteFormat(data.str, data.byteA, getSketchByte(data.byteA)); - c1f0: 62f9 str r1, [r7, #44] ; 0x2c - c1f2: f00b fe09 bl 17e08 - c1f6: 6af9 ldr r1, [r7, #44] ; 0x2c - c1f8: 4602 mov r2, r0 - c1fa: f107 006d add.w r0, r7, #109 ; 0x6d + c314: f04f 0800 mov.w r8, #0 display.renderBlock(data); - c1fe: 442e add r6, r5 - BMCTools::getSketchByteFormat(data.str, data.byteA, getSketchByte(data.byteA)); - c200: f7fb fac0 bl 7784 - strcpy(data.label, sbData.name); - c204: f507 71ce add.w r1, r7, #412 ; 0x19c - c208: f107 00bf add.w r0, r7, #191 ; 0xbf - return BMC_OFF_LED_EVENT; - c20c: f04f 0800 mov.w r8, #0 - strcpy(data.label, sbData.name); - c210: f022 fbb4 bl 2e97c + c318: e894 000e ldmia.w r4, {r1, r2, r3} + c31c: f7fe fb30 bl a980 + c320: f7ff bb95 b.w ba4e + if(group == BMC_DEVICE_GROUP_DISPLAY){ + c324: 2e08 cmp r6, #8 + c326: f47f ab90 bne.w ba4a + if(data.byteA==0){ + c32a: 69fb ldr r3, [r7, #28] + c32c: 2b02 cmp r3, #2 + c32e: f002 85b3 beq.w ee98 + c332: 2b03 cmp r3, #3 + c334: f47f ac4e bne.w bbd4 bitWrite(settings, 2, 0); - c214: 78e3 ldrb r3, [r4, #3] - display.renderBlock(data); - c216: f107 0160 add.w r1, r7, #96 ; 0x60 - c21a: 2295 movs r2, #149 ; 0x95 - c21c: f023 0304 bic.w r3, r3, #4 - c220: 4668 mov r0, sp + c338: 78e3 ldrb r3, [r4, #3] + strcpy(str, twoDigitDisplay); + c33a: f243 311a movw r1, #13082 ; 0x331a + strcpy(data.label, "DAW"); + c33e: 4a6e ldr r2, [pc, #440] ; (c4f8 ) + display.renderBlock(data); + c340: f643 3658 movw r6, #15192 ; 0x3b58 + c344: f023 0304 bic.w r3, r3, #4 + c348: 4429 add r1, r5 + strcpy(data.label, "DAW"); + c34a: 6810 ldr r0, [r2, #0] + display.renderBlock(data); + c34c: 442e add r6, r5 bitWrite(settings, 3, 1); - c222: f043 0308 orr.w r3, r3, #8 - c226: 70e3 strb r3, [r4, #3] - c228: f01e fa6e bl 2a708 - c22c: 4630 mov r0, r6 - c22e: e894 000e ldmia.w r4, {r1, r2, r3} - c232: f7fe fbd3 bl a9dc - c236: f7ff bb9f b.w b978 + c34e: f043 0308 orr.w r3, r3, #8 + return BMC_OFF_LED_EVENT; + c352: f04f 0800 mov.w r8, #0 + strcpy(data.label, "DAW"); + c356: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + c35a: f107 006d add.w r0, r7, #109 ; 0x6d + c35e: 70e3 strb r3, [r4, #3] + c360: f022 fb7c bl 2ea5c + display.renderBlock(data); + c364: f107 0160 add.w r1, r7, #96 ; 0x60 + c368: 2295 movs r2, #149 ; 0x95 + c36a: 4668 mov r0, sp + c36c: f01e fa40 bl 2a7f0 + c370: 4630 mov r0, r6 + c372: e894 000e ldmia.w r4, {r1, r2, r3} + c376: f7fe fb03 bl a980 + c37a: f7ff bb68 b.w ba4e + if(group == BMC_DEVICE_GROUP_BUTTON){ + c37e: 2e01 cmp r6, #1 + c380: f002 806a beq.w e458 + } else if(group == BMC_DEVICE_GROUP_LED){ + c384: 2e02 cmp r6, #2 + c386: f001 8574 beq.w de72 + } else if(group == BMC_DEVICE_GROUP_ENCODER){ + c38a: 2e03 cmp r6, #3 + c38c: f002 84f1 beq.w ed72 + } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ + c390: 2e05 cmp r6, #5 + c392: f47f ab5a bne.w ba4a + if(data.byteA == BMC_DAW_CMD_VPOT_SELECT || (data.byteA >= BMC_DAW_CMD_VPOT_LED_1 && data.byteA <= BMC_DAW_CMD_VPOT_LED_CENTER)){ + c396: 69fa ldr r2, [r7, #28] + c398: f1a2 0356 sub.w r3, r2, #86 ; 0x56 + c39c: 2b0b cmp r3, #11 + c39e: f243 8026 bls.w f3ee + c3a2: 1f11 subs r1, r2, #4 + c3a4: 424b negs r3, r1 + c3a6: 414b adcs r3, r1 + c3a8: 2b00 cmp r3, #0 + c3aa: f043 8020 bne.w f3ee + } else if(data.byteA >= BMC_DAW_CMD_METER_LED_PEAK && data.byteA <= BMC_DAW_CMD_METER_LED_12){ + c3ae: 69fa ldr r2, [r7, #28] + c3b0: 3a49 subs r2, #73 ; 0x49 + c3b2: 2a0c cmp r2, #12 + c3b4: f203 837a bhi.w faac + return chAllowed(n) ? channel[chCheck(n)].vu.getMeterValue() : 0; + c3b8: 69ba ldr r2, [r7, #24] + c3ba: 2a08 cmp r2, #8 + c3bc: d80a bhi.n c3d4 + return (n>=8) ? selected : n; + c3be: f505 5940 add.w r9, r5, #12288 ; 0x3000 + c3c2: bf04 itt eq + c3c4: f899 3321 ldrbeq.w r3, [r9, #801] ; 0x321 + c3c8: 60fb streq r3, [r7, #12] + return meter; + c3ca: 68fb ldr r3, [r7, #12] + c3cc: eb09 03c3 add.w r3, r9, r3, lsl #3 + c3d0: f893 3332 ldrb.w r3, [r3, #818] ; 0x332 + num += in_range / 2; + c3d4: f04f 0864 mov.w r8, #100 ; 0x64 + c3d8: 2106 movs r1, #6 + long result = num / in_range + out_min; + c3da: 220c movs r2, #12 + num += in_range / 2; + c3dc: fb18 1803 smlabb r8, r8, r3, r1 + long result = num / in_range + out_min; + c3e0: fbb8 f8f2 udiv r8, r8, r2 + return map(controller.getMeterValue(ch), 0, 12, 0, 100); + c3e4: fa5f f888 uxtb.w r8, r8 + return sync.daw.getMeterValuePercentage(data.byteB); + c3e8: f7ff bb31 b.w ba4e if(data.byteA >= BMC_MAX_LFO){ - c23a: 69fb ldr r3, [r7, #28] - c23c: 2b00 cmp r3, #0 - c23e: f47f ab99 bne.w b974 + c3ec: 69fb ldr r3, [r7, #28] + c3ee: 2b00 cmp r3, #0 + c3f0: f47f ab2b bne.w ba4a if(group == BMC_DEVICE_GROUP_BUTTON){ - c242: 2e01 cmp r6, #1 - c244: f002 801b beq.w e27e + c3f4: 2e01 cmp r6, #1 + c3f6: f001 86bb beq.w e170 } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - c248: 2e08 cmp r6, #8 - c24a: f002 87eb beq.w f224 + c3fa: 2e08 cmp r6, #8 + c3fc: f002 8718 beq.w f230 return lfo[data.byteA].isEnabled(); - c24e: f89a 8968 ldrb.w r8, [sl, #2408] ; 0x968 - c252: f7ff bb91 b.w b978 - c256: bf00 nop - c258: 200020d4 .word 0x200020d4 - c25c: 20002658 .word 0x20002658 - c260: 20001900 .word 0x20001900 - c264: 20001f20 .word 0x20001f20 - c268: 20001f34 .word 0x20001f34 - c26c: 20001f0c .word 0x20001f0c - c270: 20001f04 .word 0x20001f04 + c400: f89a 896c ldrb.w r8, [sl, #2412] ; 0x96c + c404: f7ff bb23 b.w ba4e + if(group == BMC_DEVICE_GROUP_BUTTON){ + c408: 2e01 cmp r6, #1 + c40a: f002 8130 beq.w e66e + } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ + c40e: 2e05 cmp r6, #5 + c410: f001 851c beq.w de4c + } else if(group == BMC_DEVICE_GROUP_DISPLAY){ + c414: 2e08 cmp r6, #8 + c416: f002 85ef beq.w eff8 + return running; + c41a: f505 5340 add.w r3, r5, #12288 ; 0x3000 + if(active()){ + c41e: f893 0844 ldrb.w r0, [r3, #2116] ; 0x844 + c422: b120 cbz r0, c42e + c424: f643 0044 movw r0, #14404 ; 0x3844 + c428: 4428 add r0, r5 + c42a: f7fa fcab bl 6d84 + return (stopwatch.getState() == 1); + c42e: f1a0 0801 sub.w r8, r0, #1 + c432: fab8 f888 clz r8, r8 + c436: ea4f 1858 mov.w r8, r8, lsr #5 + c43a: f7ff bb08 b.w ba4e + switch(data.byteA){ + c43e: 69fb ldr r3, [r7, #28] + c440: 2b10 cmp r3, #16 + c442: f200 87e9 bhi.w d418 + c446: 2b0a cmp r3, #10 + c448: f200 87eb bhi.w d422 + if(group == BMC_DEVICE_GROUP_LED){ + c44c: 2e02 cmp r6, #2 + c44e: f001 8242 beq.w d8d6 + } else if(group == BMC_DEVICE_GROUP_ENCODER){ + c452: 2e03 cmp r6, #3 + c454: f001 86ff beq.w e256 + } else if(group == BMC_DEVICE_GROUP_BUTTON){ + c458: 2e01 cmp r6, #1 + c45a: f002 829b beq.w e994 + } else if(group == BMC_DEVICE_GROUP_DISPLAY){ + c45e: 2e08 cmp r6, #8 + c460: f47f aaf3 bne.w ba4a + switch(data.byteA){ + c464: 69fa ldr r2, [r7, #28] + c466: 2a17 cmp r2, #23 + c468: f63f abb4 bhi.w bbd4 + c46c: e8df f012 tbh [pc, r2, lsl #1] + c470: 21f0220c .word 0x21f0220c + c474: 21f021f0 .word 0x21f021f0 + c478: 269e21bd .word 0x269e21bd + c47c: 26292658 .word 0x26292658 + c480: 25ca25f9 .word 0x25ca25f9 + c484: 256e2598 .word 0x256e2598 + c488: 23412547 .word 0x23412547 + c48c: 22ee2318 .word 0x22ee2318 + c490: 229622cb .word 0x229622cb + c494: 2243227a .word 0x2243227a + c498: 250f2220 .word 0x250f2220 + c49c: 23fc24e5 .word 0x23fc24e5 data.max = 127; - c274: 237f movs r3, #127 ; 0x7f + c4a0: 237f movs r3, #127 ; 0x7f if(data.byteC > 0){ - c276: 693a ldr r2, [r7, #16] + c4a2: 693a ldr r2, [r7, #16] data.max = 127; - c278: 8223 strh r3, [r4, #16] + c4a4: 8223 strh r3, [r4, #16] if(data.byteC > 0){ - c27a: 2a00 cmp r2, #0 - c27c: f001 807e beq.w d37c + c4a6: 2a00 cmp r2, #0 + c4a8: f001 8104 beq.w d6b4 data.min = data.byteB; - c280: 69b8 ldr r0, [r7, #24] + c4ac: 69b8 ldr r0, [r7, #24] if(!data.scrollEnabled()){ - c282: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + c4ae: f894 309d ldrb.w r3, [r4, #157] ; 0x9d data.min = data.byteB; - c286: 81e0 strh r0, [r4, #14] + c4b2: 81e0 strh r0, [r4, #14] data.max = data.byteC; - c288: 8222 strh r2, [r4, #16] + c4b4: 8222 strh r2, [r4, #16] if(!data.scrollEnabled()){ - c28a: 2b00 cmp r3, #0 - c28c: f041 86a2 bne.w dfd4 + c4b6: 2b00 cmp r3, #0 + c4b8: f041 8595 bne.w dfe6 outVal = (programBank != data.byteB) ? data.byteB : data.byteC; - c290: f505 5940 add.w r9, r5, #12288 ; 0x3000 + c4bc: f505 5940 add.w r9, r5, #12288 ; 0x3000 if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - c294: f006 03fd and.w r3, r6, #253 ; 0xfd + c4c0: f006 03fd and.w r3, r6, #253 ; 0xfd outVal = (programBank != data.byteB) ? data.byteB : data.byteC; - c298: f899 1814 ldrb.w r1, [r9, #2068] ; 0x814 - c29c: 4281 cmp r1, r0 - c29e: bf18 it ne - c2a0: 4602 movne r2, r0 + c4c4: f899 1834 ldrb.w r1, [r9, #2100] ; 0x834 + c4c8: 4281 cmp r1, r0 + c4ca: bf18 it ne + c4cc: 4602 movne r2, r0 if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - c2a2: 2b01 cmp r3, #1 - c2a4: f041 8078 bne.w d398 + c4ce: 2b01 cmp r3, #1 + c4d0: f041 805d bne.w d58e return BMC_OFF_LED_EVENT; - c2a8: f04f 0800 mov.w r8, #0 + c4d4: f04f 0800 mov.w r8, #0 programBank = outVal; - c2ac: f889 2814 strb.w r2, [r9, #2068] ; 0x814 - c2b0: f7ff bb62 b.w b978 + c4d8: f889 2834 strb.w r2, [r9, #2100] ; 0x834 + c4dc: f7ff bab7 b.w ba4e + c4e0: 20002658 .word 0x20002658 + c4e4: 20001900 .word 0x20001900 + c4e8: 20001f20 .word 0x20001f20 + c4ec: 20001f34 .word 0x20001f34 + c4f0: 20001f0c .word 0x20001f0c + c4f4: 20001f04 .word 0x20001f04 + c4f8: 200020d4 .word 0x200020d4 if(group==BMC_DEVICE_GROUP_BUTTON){ - c2b4: 2e01 cmp r6, #1 - c2b6: f002 81c9 beq.w e64c + c4fc: 2e01 cmp r6, #1 + c4fe: f002 8123 beq.w e748 } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - c2ba: 2e05 cmp r6, #5 - c2bc: f001 858a beq.w ddd4 + c502: 2e05 cmp r6, #5 + c504: f001 84bf beq.w de86 } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c2c0: 2e08 cmp r6, #8 - c2c2: f47f ab57 bne.w b974 + c508: 2e08 cmp r6, #8 + c50a: f47f aa9e bne.w ba4a bitWrite(settings, 2, 0); - c2c6: 78e3 ldrb r3, [r4, #3] + c50e: 78e1 ldrb r1, [r4, #3] display.renderBlock(data); - c2c8: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "A.T."); - c2cc: 49c5 ldr r1, [pc, #788] ; (c5e4 ) + c510: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "A.T. POLY"); + c514: 4bb0 ldr r3, [pc, #704] ; (c7d8 ) data.useOffset = false; - c2ce: f04f 0800 mov.w r8, #0 - c2d2: f023 0304 bic.w r3, r3, #4 + c516: f04f 0800 mov.w r8, #0 + c51a: f021 0104 bic.w r1, r1, #4 display.renderBlock(data); - c2d6: 2295 movs r2, #149 ; 0x95 - strcpy(data.str, "A.T."); - c2d8: 6808 ldr r0, [r1, #0] - bitWrite(settings, 3, 1); - c2da: f043 0308 orr.w r3, r3, #8 + c51e: 2295 movs r2, #149 ; 0x95 data.useOffset = false; - c2de: f884 8015 strb.w r8, [r4, #21] - strcpy(data.str, "A.T."); - c2e2: f8c7 006d str.w r0, [r7, #109] ; 0x6d + c520: f884 8015 strb.w r8, [r4, #21] + bitWrite(settings, 3, 1); + c524: f041 0108 orr.w r1, r1, #8 + c528: 70e1 strb r1, [r4, #3] + strcpy(data.str, "A.T. POLY"); + c52a: cb03 ldmia r3!, {r0, r1} + c52c: 881b ldrh r3, [r3, #0] + c52e: f8c7 006d str.w r0, [r7, #109] ; 0x6d display.renderBlock(data); - c2e6: 4668 mov r0, sp - c2e8: 70e3 strb r3, [r4, #3] - strcpy(data.str, "A.T."); - c2ea: 790b ldrb r3, [r1, #4] + c532: 4668 mov r0, sp + strcpy(data.str, "A.T. POLY"); + c534: f8c7 1071 str.w r1, [r7, #113] ; 0x71 display.renderBlock(data); - c2ec: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "A.T."); - c2f0: f887 3071 strb.w r3, [r7, #113] ; 0x71 + c538: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "A.T. POLY"); + c53c: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 display.renderBlock(data); - c2f4: f01e fa08 bl 2a708 - c2f8: 1970 adds r0, r6, r5 - c2fa: e894 000e ldmia.w r4, {r1, r2, r3} - c2fe: f7fe fb6d bl a9dc - c302: f7ff bb39 b.w b978 - data.max = BMC_MAX_SETLISTS-1; - c306: 2307 movs r3, #7 - c308: 8223 strh r3, [r4, #16] - if(data.byteB > 0){ - c30a: 69bb ldr r3, [r7, #24] - c30c: 2b00 cmp r3, #0 - c30e: f001 8122 beq.w d556 - if((data.byteB-1) > data.byteA){ - c312: 3b01 subs r3, #1 - c314: 69fa ldr r2, [r7, #28] - c316: 4293 cmp r3, r2 - c318: f341 862b ble.w df72 - data.max = data.byteB-1; - c31c: 8223 strh r3, [r4, #16] - data.min = data.byteA; - c31e: 81e2 strh r2, [r4, #14] - if(!data.scrollEnabled()){ - c320: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - c324: 2b00 cmp r3, #0 - c326: f041 862b bne.w df80 - return setList; - c32a: f505 5340 add.w r3, r5, #12288 ; 0x3000 - outVal = setLists.get() != data.byteA ? data.byteA : (data.byteB-1); - c32e: 69fa ldr r2, [r7, #28] - c330: f8d3 3208 ldr.w r3, [r3, #520] ; 0x208 - c334: 781b ldrb r3, [r3, #0] - c336: 4293 cmp r3, r2 - c338: f002 8756 beq.w f1e8 - c33c: 69f9 ldr r1, [r7, #28] - if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - c33e: f006 03fd and.w r3, r6, #253 ; 0xfd - c342: 2b01 cmp r3, #1 - c344: f041 8113 bne.w d56e - setLists.set(outVal); - c348: f505 5048 add.w r0, r5, #12800 ; 0x3200 - return BMC_OFF_LED_EVENT; - c34c: f04f 0800 mov.w r8, #0 - setLists.set(outVal); - c350: f7fb fe12 bl 7f78 - c354: f7ff bb10 b.w b978 - data.max = BMC_MAX_PRESET_BANKS-1; - c358: 2307 movs r3, #7 - c35a: 8223 strh r3, [r4, #16] - if(data.byteB > 0){ - c35c: 69bb ldr r3, [r7, #24] - c35e: b193 cbz r3, c386 - if((data.byteB-1) > data.byteA){ - c360: 3b01 subs r3, #1 - c362: 69fa ldr r2, [r7, #28] - c364: 4293 cmp r3, r2 - c366: f341 855b ble.w de20 - data.max = data.byteB-1; - c36a: 8223 strh r3, [r4, #16] - data.min = data.byteA; - c36c: 81e2 strh r2, [r4, #14] - if(!data.scrollEnabled()){ - c36e: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - c372: b943 cbnz r3, c386 - return bank; - c374: f505 5340 add.w r3, r5, #12288 ; 0x3000 - outVal = presets.getBank() != data.byteA ? data.byteA : (data.byteB-1); - c378: 69fa ldr r2, [r7, #28] - c37a: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 - c37e: 781b ldrb r3, [r3, #0] - c380: 4293 cmp r3, r2 - c382: f002 86a0 beq.w f0c6 - c386: 69f9 ldr r1, [r7, #28] - c388: f89a 3964 ldrb.w r3, [sl, #2404] ; 0x964 - if(flags.read(BMC_FLAGS_BLOCK_PRESETS)){ - c38c: 06db lsls r3, r3, #27 - c38e: f53f aaf1 bmi.w b974 - if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - c392: 3e01 subs r6, #1 - c394: 2e07 cmp r6, #7 - c396: f200 842c bhi.w cbf2 - c39a: e8df f016 tbh [pc, r6, lsl #1] - c39e: 03ea .short 0x03ea - c3a0: 03ea042a .word 0x03ea042a - c3a4: 053c042a .word 0x053c042a - c3a8: 042a042a .word 0x042a042a - c3ac: 04fe .short 0x04fe + c540: f01e f956 bl 2a7f0 + c544: 1970 adds r0, r6, r5 + c546: e894 000e ldmia.w r4, {r1, r2, r3} + c54a: f7fe fa19 bl a980 + c54e: f7ff ba7e b.w ba4e + if(group==BMC_DEVICE_GROUP_POT){ + c552: 2e04 cmp r6, #4 + c554: f001 834f beq.w dbf6 + } else if(group==BMC_DEVICE_GROUP_DISPLAY){ + c558: 2e08 cmp r6, #8 + c55a: f47f aa76 bne.w ba4a + strcpy(data.label, "PITCH"); + c55e: 4a9f ldr r2, [pc, #636] ; (c7dc ) + data.useOffset = false; + c560: 2600 movs r6, #0 + return bitRead(settings, 4) && additionalCheck; + c562: 78e3 ldrb r3, [r4, #3] + strcpy(data.label, "PITCH"); + c564: 6810 ldr r0, [r2, #0] + c566: 8892 ldrh r2, [r2, #4] + c568: f3c3 1800 ubfx r8, r3, #4, #1 + data.useOffset = false; + c56c: 7566 strb r6, [r4, #21] + strcpy(data.label, "PITCH"); + c56e: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + c572: 06da lsls r2, r3, #27 + c574: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + c578: f103 8008 bmi.w f58c + bitWrite(settings, 2, 0); + c57c: f023 0304 bic.w r3, r3, #4 + display.renderBlock(data); + c580: f643 3658 movw r6, #15192 ; 0x3b58 + c584: f107 0160 add.w r1, r7, #96 ; 0x60 + c588: 2295 movs r2, #149 ; 0x95 + bitWrite(settings, 3, 1); + c58a: f043 0308 orr.w r3, r3, #8 + c58e: 4668 mov r0, sp + c590: 70e3 strb r3, [r4, #3] + strcpy(data.str, data.label); + c592: f8d7 30bf ldr.w r3, [r7, #191] ; 0xbf + c596: f8c7 306d str.w r3, [r7, #109] ; 0x6d + c59a: f8b7 30c3 ldrh.w r3, [r7, #195] ; 0xc3 + c59e: f8a7 3071 strh.w r3, [r7, #113] ; 0x71 + display.renderBlock(data); + c5a2: f01e f925 bl 2a7f0 + c5a6: 1970 adds r0, r6, r5 + c5a8: e894 000e ldmia.w r4, {r1, r2, r3} + c5ac: f7fe f9e8 bl a980 + c5b0: f7ff ba4d b.w ba4e if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - c3ae: f006 08fd and.w r8, r6, #253 ; 0xfd - c3b2: f1b8 0f01 cmp.w r8, #1 - c3b6: f001 8496 beq.w dce6 + c5b4: f006 08fd and.w r8, r6, #253 ; 0xfd + c5b8: f1b8 0f01 cmp.w r8, #1 + c5bc: f001 8140 beq.w d840 } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c3ba: 2e08 cmp r6, #8 - c3bc: f47f aada bne.w b974 + c5c0: 2e08 cmp r6, #8 + c5c2: f47f aa42 bne.w ba4a bitWrite(settings, 2, 0); - c3c0: 78e2 ldrb r2, [r4, #3] + c5c6: 78e2 ldrb r2, [r4, #3] display.renderBlock(data); - c3c2: f643 3638 movw r6, #15160 ; 0x3b38 + c5c8: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.str, "MSB LSB PGM"); - c3c6: 4b88 ldr r3, [pc, #544] ; (c5e8 ) + c5cc: 4b84 ldr r3, [pc, #528] ; (c7e0 ) return BMC_OFF_LED_EVENT; - c3c8: f04f 0800 mov.w r8, #0 - c3cc: f022 0204 bic.w r2, r2, #4 + c5ce: f04f 0800 mov.w r8, #0 + c5d2: f022 0204 bic.w r2, r2, #4 display.renderBlock(data); - c3d0: 442e add r6, r5 + c5d6: 442e add r6, r5 bitWrite(settings, 3, 1); - c3d2: f042 0208 orr.w r2, r2, #8 - c3d6: 70e2 strb r2, [r4, #3] + c5d8: f042 0208 orr.w r2, r2, #8 + c5dc: 70e2 strb r2, [r4, #3] strcpy(data.str, "MSB LSB PGM"); - c3d8: cb07 ldmia r3!, {r0, r1, r2} - c3da: f8c7 006d str.w r0, [r7, #109] ; 0x6d + c5de: cb07 ldmia r3!, {r0, r1, r2} + c5e0: f8c7 006d str.w r0, [r7, #109] ; 0x6d display.renderBlock(data); - c3de: 4668 mov r0, sp + c5e4: 4668 mov r0, sp strcpy(data.str, "MSB LSB PGM"); - c3e0: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + c5e6: f8c7 1071 str.w r1, [r7, #113] ; 0x71 display.renderBlock(data); - c3e4: f107 0160 add.w r1, r7, #96 ; 0x60 + c5ea: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.str, "MSB LSB PGM"); - c3e8: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + c5ee: f8c7 2075 str.w r2, [r7, #117] ; 0x75 display.renderBlock(data); - c3ec: 2295 movs r2, #149 ; 0x95 - c3ee: f01e f98b bl 2a708 - c3f2: 4630 mov r0, r6 - c3f4: e894 000e ldmia.w r4, {r1, r2, r3} - c3f8: f7fe faf0 bl a9dc - c3fc: f7ff babc b.w b978 + c5f2: 2295 movs r2, #149 ; 0x95 + c5f4: f01e f8fc bl 2a7f0 + c5f8: 4630 mov r0, r6 + c5fa: e894 000e ldmia.w r4, {r1, r2, r3} + c5fe: f7fe f9bf bl a980 + c602: f7ff ba24 b.w ba4e if(group==BMC_DEVICE_GROUP_BUTTON){ - c400: 2e01 cmp r6, #1 - c402: f002 80b5 beq.w e570 + c606: 2e01 cmp r6, #1 + c608: f001 87d2 beq.w e5b0 } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c406: 2e08 cmp r6, #8 - c408: f47f aab4 bne.w b974 + c60c: 2e08 cmp r6, #8 + c60e: f47f aa1c bne.w ba4a bitWrite(settings, 2, 0); - c40c: 78e3 ldrb r3, [r4, #3] + c612: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - c40e: f643 3838 movw r8, #15160 ; 0x3b38 + c614: f643 3858 movw r8, #15192 ; 0x3b58 strcpy(data.str, "MSB LSB"); - c412: 4e76 ldr r6, [pc, #472] ; (c5ec ) + c618: 4e72 ldr r6, [pc, #456] ; (c7e4 ) display.renderBlock(data); - c414: 2295 movs r2, #149 ; 0x95 - c416: f023 0304 bic.w r3, r3, #4 + c61a: 2295 movs r2, #149 ; 0x95 + c61c: f023 0304 bic.w r3, r3, #4 strcpy(data.str, "MSB LSB"); - c41a: ce03 ldmia r6!, {r0, r1} + c620: ce03 ldmia r6!, {r0, r1} bitWrite(settings, 3, 1); - c41c: f043 0308 orr.w r3, r3, #8 - c420: f8c7 006d str.w r0, [r7, #109] ; 0x6d + c622: f043 0308 orr.w r3, r3, #8 + c626: f8c7 006d str.w r0, [r7, #109] ; 0x6d display.renderBlock(data); - c424: 4668 mov r0, sp + c62a: 4668 mov r0, sp strcpy(data.str, "MSB LSB"); - c426: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - display.renderBlock(data); - c42a: f107 0160 add.w r1, r7, #96 ; 0x60 - c42e: 70e3 strb r3, [r4, #3] - c430: f01e f96a bl 2a708 - c434: eb08 0005 add.w r0, r8, r5 - return BMC_OFF_LED_EVENT; - c438: f04f 0800 mov.w r8, #0 - display.renderBlock(data); - c43c: e894 000e ldmia.w r4, {r1, r2, r3} - c440: f7fe facc bl a9dc - c444: f7ff ba98 b.w b978 - if(group==BMC_DEVICE_GROUP_BUTTON){ - c448: 2e01 cmp r6, #1 - c44a: f002 80b7 beq.w e5bc - } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - c44e: 2e05 cmp r6, #5 - c450: f001 8498 beq.w dd84 - } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c454: 2e08 cmp r6, #8 - c456: f002 8452 beq.w ecfe - return (prevTime>0); - c45a: f505 5540 add.w r5, r5, #12288 ; 0x3000 - c45e: f8d5 31dc ldr.w r3, [r5, #476] ; 0x1dc - return midiActiveSense.active(); - c462: f1b3 0800 subs.w r8, r3, #0 - c466: bf18 it ne - c468: f04f 0801 movne.w r8, #1 - c46c: f7ff ba84 b.w b978 - if(group == BMC_DEVICE_GROUP_BUTTON){ - c470: 2e01 cmp r6, #1 - c472: f002 80dc beq.w e62e - } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c476: 2e08 cmp r6, #8 - c478: f47f aa7c bne.w b974 - bitWrite(settings, 2, 0); - c47c: 78e2 ldrb r2, [r4, #3] - display.renderBlock(data); - c47e: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "SAVE EEPROM"); - c482: 4b5b ldr r3, [pc, #364] ; (c5f0 ) - return BMC_OFF_LED_EVENT; - c484: f04f 0800 mov.w r8, #0 - c488: f022 0204 bic.w r2, r2, #4 - bitWrite(settings, 3, 1); - c48c: f042 0208 orr.w r2, r2, #8 - c490: 70e2 strb r2, [r4, #3] - strcpy(data.str, "SAVE EEPROM"); - c492: cb07 ldmia r3!, {r0, r1, r2} - c494: f8c7 006d str.w r0, [r7, #109] ; 0x6d - display.renderBlock(data); - c498: 4668 mov r0, sp - strcpy(data.str, "SAVE EEPROM"); - c49a: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - display.renderBlock(data); - c49e: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "SAVE EEPROM"); - c4a2: f8c7 2075 str.w r2, [r7, #117] ; 0x75 - display.renderBlock(data); - c4a6: 2295 movs r2, #149 ; 0x95 - c4a8: f01e f92e bl 2a708 - c4ac: 1970 adds r0, r6, r5 - c4ae: e894 000e ldmia.w r4, {r1, r2, r3} - c4b2: f7fe fa93 bl a9dc - c4b6: f7ff ba5f b.w b978 - if(group == BMC_DEVICE_GROUP_LED){ - c4ba: 2e02 cmp r6, #2 - c4bc: f001 8344 beq.w db48 - } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - c4c0: 2e08 cmp r6, #8 - c4c2: f47f aa57 bne.w b974 - switch(data.byteA){ - c4c6: 69fa ldr r2, [r7, #28] - c4c8: 2a0b cmp r2, #11 - c4ca: f63f ab20 bhi.w bb0e - c4ce: e8df f012 tbh [pc, r2, lsl #1] - c4d2: 06f6 .short 0x06f6 - c4d4: 06c506f6 .word 0x06c506f6 - c4d8: 06690694 .word 0x06690694 - c4dc: 06030636 .word 0x06030636 - c4e0: 058e05be .word 0x058e05be - c4e4: 05620562 .word 0x05620562 - c4e8: 0562 .short 0x0562 - if(group==BMC_DEVICE_GROUP_BUTTON){ - c4ea: 2e01 cmp r6, #1 - c4ec: f001 877b beq.w e3e6 - } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c4f0: 2e08 cmp r6, #8 - c4f2: f041 8130 bne.w d756 - bitWrite(settings, 2, 0); - c4f6: 78e3 ldrb r3, [r4, #3] - display.renderBlock(data); - c4f8: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "TAP"); - c4fc: 4a3d ldr r2, [pc, #244] ; (c5f4 ) + c62c: f8c7 1071 str.w r1, [r7, #113] ; 0x71 display.renderBlock(data); - c4fe: f107 0160 add.w r1, r7, #96 ; 0x60 - c502: f023 0304 bic.w r3, r3, #4 - c506: 442e add r6, r5 - strcpy(data.str, "TAP"); - c508: 6810 ldr r0, [r2, #0] - display.renderBlock(data); - c50a: 2295 movs r2, #149 ; 0x95 - bitWrite(settings, 3, 1); - c50c: f043 0308 orr.w r3, r3, #8 + c630: f107 0160 add.w r1, r7, #96 ; 0x60 + c634: 70e3 strb r3, [r4, #3] + c636: f01e f8db bl 2a7f0 + c63a: eb08 0005 add.w r0, r8, r5 return BMC_OFF_LED_EVENT; - c510: f04f 0800 mov.w r8, #0 - strcpy(data.str, "TAP"); - c514: f8c7 006d str.w r0, [r7, #109] ; 0x6d + c63e: f04f 0800 mov.w r8, #0 display.renderBlock(data); - c518: 4668 mov r0, sp - c51a: 70e3 strb r3, [r4, #3] - c51c: f01e f8f4 bl 2a708 - c520: 4630 mov r0, r6 - c522: e894 000e ldmia.w r4, {r1, r2, r3} - c526: f7fe fa59 bl a9dc - c52a: f7ff ba25 b.w b978 + c642: e894 000e ldmia.w r4, {r1, r2, r3} + c646: f7fe f99b bl a980 + c64a: f7ff ba00 b.w ba4e data.useOffset = false; - c52e: f04f 0800 mov.w r8, #0 + c64e: f04f 0800 mov.w r8, #0 if(group==BMC_DEVICE_GROUP_BUTTON){ - c532: 2e01 cmp r6, #1 + c652: 2e01 cmp r6, #1 data.useOffset = false; - c534: f884 8015 strb.w r8, [r4, #21] + c654: f884 8015 strb.w r8, [r4, #21] if(group==BMC_DEVICE_GROUP_BUTTON){ - c538: f001 870f beq.w e35a + c658: f001 878d beq.w e576 } else if(group==BMC_DEVICE_GROUP_POT){ - c53c: 2e04 cmp r6, #4 - c53e: f002 8115 beq.w e76c + c65c: 2e04 cmp r6, #4 + c65e: f002 8124 beq.w e8aa } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - c542: 2e05 cmp r6, #5 - c544: f001 85c0 beq.w e0c8 + c662: 2e05 cmp r6, #5 + c664: f001 867d beq.w e362 } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c548: 2e08 cmp r6, #8 - c54a: f47f aa13 bne.w b974 + c668: 2e08 cmp r6, #8 + c66a: f47f a9ee bne.w ba4a return BMC_TO_MIDI_CHANNEL(byteA); - c54e: 69fb ldr r3, [r7, #28] + c66e: 69fb ldr r3, [r7, #28] sprintf(data.str, "CH%u N%u V%u", data.getChannel(), data.byteB, data.byteC); - c550: f107 006d add.w r0, r7, #109 ; 0x6d - c554: 6939 ldr r1, [r7, #16] + c670: f107 006d add.w r0, r7, #109 ; 0x6d + c674: 6939 ldr r1, [r7, #16] display.renderMidi(data); - c556: f643 3638 movw r6, #15160 ; 0x3b38 - c55a: f003 020f and.w r2, r3, #15 + c676: f643 3658 movw r6, #15192 ; 0x3b58 + c67a: f003 020f and.w r2, r3, #15 sprintf(data.str, "CH%u N%u V%u", data.getChannel(), data.byteB, data.byteC); - c55e: 69bb ldr r3, [r7, #24] - c560: 9100 str r1, [sp, #0] - c562: 3201 adds r2, #1 - c564: 4924 ldr r1, [pc, #144] ; (c5f8 ) - c566: f021 fe11 bl 2e18c + c67e: 69bb ldr r3, [r7, #24] + c680: 9100 str r1, [sp, #0] + c682: 3201 adds r2, #1 + c684: 4958 ldr r1, [pc, #352] ; (c7e8 ) + c686: f021 fdf5 bl 2e274 data.type = BMC_MIDI_NOTE_OFF; - c56a: 2380 movs r3, #128 ; 0x80 + c68a: 2380 movs r3, #128 ; 0x80 display.renderMidi(data); - c56c: f107 0160 add.w r1, r7, #96 ; 0x60 - c570: 2295 movs r2, #149 ; 0x95 - c572: 4668 mov r0, sp + c68c: f107 0160 add.w r1, r7, #96 ; 0x60 + c690: 2295 movs r2, #149 ; 0x95 + c692: 4668 mov r0, sp data.type = BMC_MIDI_NOTE_OFF; - c574: 7163 strb r3, [r4, #5] - display.renderMidi(data); - c576: f01e f8c7 bl 2a708 - c57a: 1970 adds r0, r6, r5 - c57c: e894 000e ldmia.w r4, {r1, r2, r3} - c580: f7fd fef6 bl a370 - c584: f7ff b9f8 b.w b978 - data.useOffset = false; - c588: f04f 0800 mov.w r8, #0 - if(group==BMC_DEVICE_GROUP_BUTTON){ - c58c: 2e01 cmp r6, #1 - data.useOffset = false; - c58e: f884 8015 strb.w r8, [r4, #21] - if(group==BMC_DEVICE_GROUP_BUTTON){ - c592: f002 802f beq.w e5f4 - } else if(group==BMC_DEVICE_GROUP_POT){ - c596: 2e04 cmp r6, #4 - c598: f002 8104 beq.w e7a4 - } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - c59c: 2e05 cmp r6, #5 - c59e: f001 8585 beq.w e0ac - } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c5a2: 2e08 cmp r6, #8 - c5a4: f47f a9e6 bne.w b974 - c5a8: 69fb ldr r3, [r7, #28] - sprintf(data.str, "CH%u N%u V%u", data.getChannel(), data.byteB, data.byteC); - c5aa: f107 006d add.w r0, r7, #109 ; 0x6d - c5ae: 6939 ldr r1, [r7, #16] - display.renderMidi(data); - c5b0: f643 3638 movw r6, #15160 ; 0x3b38 - c5b4: f003 020f and.w r2, r3, #15 - sprintf(data.str, "CH%u N%u V%u", data.getChannel(), data.byteB, data.byteC); - c5b8: 69bb ldr r3, [r7, #24] - c5ba: 9100 str r1, [sp, #0] - c5bc: 3201 adds r2, #1 - c5be: 490e ldr r1, [pc, #56] ; (c5f8 ) - c5c0: f021 fde4 bl 2e18c - data.type = BMC_MIDI_NOTE_ON; - c5c4: 2390 movs r3, #144 ; 0x90 + c694: 7163 strb r3, [r4, #5] display.renderMidi(data); - c5c6: f107 0160 add.w r1, r7, #96 ; 0x60 - c5ca: 2295 movs r2, #149 ; 0x95 - c5cc: 4668 mov r0, sp - data.type = BMC_MIDI_NOTE_ON; - c5ce: 7163 strb r3, [r4, #5] - display.renderMidi(data); - c5d0: f01e f89a bl 2a708 - c5d4: 1970 adds r0, r6, r5 - c5d6: e894 000e ldmia.w r4, {r1, r2, r3} - c5da: f7fd fec9 bl a370 - c5de: f7ff b9cb b.w b978 - c5e2: bf00 nop - c5e4: 20001efc .word 0x20001efc - c5e8: 20001f30 .word 0x20001f30 - c5ec: 20001f28 .word 0x20001f28 - c5f0: 20001fd0 .word 0x20001fd0 - c5f4: 20001f64 .word 0x20001f64 - c5f8: 20001ed8 .word 0x20001ed8 + c696: f01e f8ab bl 2a7f0 + c69a: 1970 adds r0, r6, r5 + c69c: e894 000e ldmia.w r4, {r1, r2, r3} + c6a0: f7fd fe38 bl a314 + c6a4: f7ff b9d3 b.w ba4e + data.max = BMC_MAX_SETLISTS_SONGS-1; + c6a8: 230f movs r3, #15 + c6aa: 8223 strh r3, [r4, #16] + if(data.byteB > 0){ + c6ac: 69bb ldr r3, [r7, #24] + c6ae: 2b00 cmp r3, #0 + c6b0: f000 879e beq.w d5f0 + if((data.byteB-1) > data.byteA){ + c6b4: 3b01 subs r3, #1 + c6b6: 69fa ldr r2, [r7, #28] + c6b8: 4293 cmp r3, r2 + c6ba: f341 8472 ble.w dfa2 + data.max = data.byteB-1; + c6be: 8223 strh r3, [r4, #16] + data.min = data.byteA; + c6c0: 81e2 strh r2, [r4, #14] + if(!data.scrollEnabled()){ + c6c2: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + c6c6: 2b00 cmp r3, #0 + c6c8: f041 852b bne.w e122 + return song; + c6cc: f505 5340 add.w r3, r5, #12288 ; 0x3000 + outVal = setLists.getSong() != data.byteA ? data.byteA : (data.byteB-1); + c6d0: 69fa ldr r2, [r7, #28] + c6d2: f8d3 322c ldr.w r3, [r3, #556] ; 0x22c + c6d6: 781b ldrb r3, [r3, #0] + c6d8: 429a cmp r2, r3 + c6da: f002 861f beq.w f31c + c6de: 69f9 ldr r1, [r7, #28] + if(group == BMC_DEVICE_GROUP_BUTTON){ + c6e0: 2e01 cmp r6, #1 + c6e2: f000 878e beq.w d602 + } else if(group == BMC_DEVICE_GROUP_ENCODER){ + c6e6: 2e03 cmp r6, #3 + c6e8: f002 81f1 beq.w eace + } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ + c6ec: 2e05 cmp r6, #5 + c6ee: f002 80cb beq.w e888 + } else if(group == BMC_DEVICE_GROUP_DISPLAY){ + c6f2: 2e08 cmp r6, #8 + c6f4: f002 824d beq.w eb92 + c6f8: f505 5540 add.w r5, r5, #12288 ; 0x3000 + c6fc: f8d5 322c ldr.w r3, [r5, #556] ; 0x22c + return (data.byteA == setLists.getSong()); + c700: f893 8000 ldrb.w r8, [r3] + c704: 69fb ldr r3, [r7, #28] + c706: eba8 0903 sub.w r9, r8, r3 + c70a: f1d9 0800 rsbs r8, r9, #0 + c70e: eb48 0809 adc.w r8, r8, r9 + c712: f7ff b99c b.w ba4e data.max = BMC_MAX_SETLISTS_SONG_PARTS-1; - c5fc: 2307 movs r3, #7 - c5fe: 8223 strh r3, [r4, #16] + c716: 2307 movs r3, #7 + c718: 8223 strh r3, [r4, #16] if(data.byteB > 0){ - c600: 69bb ldr r3, [r7, #24] - c602: 2b00 cmp r3, #0 - c604: f000 8754 beq.w d4b0 + c71a: 69bb ldr r3, [r7, #24] + c71c: 2b00 cmp r3, #0 + c71e: f000 8697 beq.w d450 if((data.byteB-1) > data.byteA){ - c608: 3b01 subs r3, #1 - c60a: 69fa ldr r2, [r7, #28] - c60c: 4293 cmp r3, r2 - c60e: f341 8546 ble.w e09e + c722: 3b01 subs r3, #1 + c724: 69fa ldr r2, [r7, #28] + c726: 4293 cmp r3, r2 + c728: f341 84c9 ble.w e0be data.max = data.byteB-1; - c612: 8223 strh r3, [r4, #16] + c72c: 8223 strh r3, [r4, #16] data.min = data.byteA; - c614: 81e2 strh r2, [r4, #14] + c72e: 81e2 strh r2, [r4, #14] if(!data.scrollEnabled()){ - c616: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - c61a: 2b00 cmp r3, #0 - c61c: f041 8527 bne.w e06e + c730: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + c734: 2b00 cmp r3, #0 + c736: f041 84d1 bne.w e0dc return songPart; - c620: f505 5340 add.w r3, r5, #12288 ; 0x3000 + c73a: f505 5340 add.w r3, r5, #12288 ; 0x3000 outVal = setLists.getPart() != data.byteA ? data.byteA : (data.byteB-1); - c624: 69fa ldr r2, [r7, #28] - c626: f8d3 3210 ldr.w r3, [r3, #528] ; 0x210 - c62a: 781b ldrb r3, [r3, #0] - c62c: 4293 cmp r3, r2 - c62e: f002 85e0 beq.w f1f2 - c632: 69f9 ldr r1, [r7, #28] + c73e: 69fa ldr r2, [r7, #28] + c740: f8d3 3230 ldr.w r3, [r3, #560] ; 0x230 + c744: 781b ldrb r3, [r3, #0] + c746: 4293 cmp r3, r2 + c748: f002 8680 beq.w f44c + c74c: 69f9 ldr r1, [r7, #28] if(group == BMC_DEVICE_GROUP_BUTTON){ - c634: 2e01 cmp r6, #1 - c636: f000 8744 beq.w d4c2 + c74e: 2e01 cmp r6, #1 + c750: f000 8687 beq.w d462 } else if(group == BMC_DEVICE_GROUP_ENCODER){ - c63a: 2e03 cmp r6, #3 - c63c: f002 820b beq.w ea56 + c754: 2e03 cmp r6, #3 + c756: f002 8107 beq.w e968 } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ - c640: 2e05 cmp r6, #5 - c642: f002 8066 beq.w e712 + c75a: 2e05 cmp r6, #5 + c75c: f002 8049 beq.w e7f2 } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - c646: 2e08 cmp r6, #8 - c648: f002 830d beq.w ec66 - c64c: f505 5540 add.w r5, r5, #12288 ; 0x3000 - c650: f8d5 3210 ldr.w r3, [r5, #528] ; 0x210 + c760: 2e08 cmp r6, #8 + c762: f002 83fc beq.w ef5e + c766: f505 5540 add.w r5, r5, #12288 ; 0x3000 + c76a: f8d5 3230 ldr.w r3, [r5, #560] ; 0x230 return (data.byteA == setLists.getPart()); - c654: f893 8000 ldrb.w r8, [r3] - c658: 69fb ldr r3, [r7, #28] - c65a: eba8 0c03 sub.w ip, r8, r3 - c65e: f1dc 0800 rsbs r8, ip, #0 - c662: eb48 080c adc.w r8, r8, ip - c666: f7ff b987 b.w b978 - if(group==BMC_DEVICE_GROUP_BUTTON){ - c66a: 2e01 cmp r6, #1 - c66c: f47f a982 bne.w b974 - customSysEx.send((data.byteA & 0x03), e.ports, data.byteB, data.byteC); - c670: 697b ldr r3, [r7, #20] - c672: f243 70b0 movw r0, #14256 ; 0x37b0 - c676: 693c ldr r4, [r7, #16] - return BMC_OFF_LED_EVENT; - c678: f04f 0800 mov.w r8, #0 - customSysEx.send((data.byteA & 0x03), e.ports, data.byteB, data.byteC); - c67c: f893 2033 ldrb.w r2, [r3, #51] ; 0x33 - c680: 4428 add r0, r5 - c682: e9d7 3106 ldrd r3, r1, [r7, #24] - c686: 9400 str r4, [sp, #0] - c688: f001 0103 and.w r1, r1, #3 - c68c: f7fd fa6e bl 9b6c - c690: f7ff b972 b.w b978 + c76e: f893 8000 ldrb.w r8, [r3] + c772: 69fb ldr r3, [r7, #28] + c774: eba8 0c03 sub.w ip, r8, r3 + c778: f1dc 0800 rsbs r8, ip, #0 + c77c: eb48 080c adc.w r8, r8, ip + c780: f7ff b965 b.w ba4e if(group==BMC_DEVICE_GROUP_BUTTON){ - c694: 2e01 cmp r6, #1 - c696: f001 87f6 beq.w e686 + c784: 2e01 cmp r6, #1 + c786: f001 8755 beq.w e634 } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - c69a: 2e05 cmp r6, #5 - c69c: f001 83a8 beq.w ddf0 + c78a: 2e05 cmp r6, #5 + c78c: f001 8394 beq.w deb8 } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c6a0: 2e08 cmp r6, #8 - c6a2: f47f a967 bne.w b974 + c790: 2e08 cmp r6, #8 + c792: f47f a95a bne.w ba4a bitWrite(settings, 2, 0); - c6a6: 78e1 ldrb r1, [r4, #3] + c796: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - c6a8: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "A.T. POLY"); - c6ac: 4ba0 ldr r3, [pc, #640] ; (c930 ) + c798: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "A.T."); + c79c: 4913 ldr r1, [pc, #76] ; (c7ec ) data.useOffset = false; - c6ae: f04f 0800 mov.w r8, #0 - c6b2: f021 0104 bic.w r1, r1, #4 + c79e: f04f 0800 mov.w r8, #0 + c7a2: f023 0304 bic.w r3, r3, #4 display.renderBlock(data); - c6b6: 2295 movs r2, #149 ; 0x95 - data.useOffset = false; - c6b8: f884 8015 strb.w r8, [r4, #21] + c7a6: 2295 movs r2, #149 ; 0x95 + strcpy(data.str, "A.T."); + c7a8: 6808 ldr r0, [r1, #0] bitWrite(settings, 3, 1); - c6bc: f041 0108 orr.w r1, r1, #8 - c6c0: 70e1 strb r1, [r4, #3] - strcpy(data.str, "A.T. POLY"); - c6c2: cb03 ldmia r3!, {r0, r1} - c6c4: 881b ldrh r3, [r3, #0] - c6c6: f8c7 006d str.w r0, [r7, #109] ; 0x6d + c7aa: f043 0308 orr.w r3, r3, #8 + data.useOffset = false; + c7ae: f884 8015 strb.w r8, [r4, #21] + strcpy(data.str, "A.T."); + c7b2: f8c7 006d str.w r0, [r7, #109] ; 0x6d display.renderBlock(data); - c6ca: 4668 mov r0, sp - strcpy(data.str, "A.T. POLY"); - c6cc: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + c7b6: 4668 mov r0, sp + c7b8: 70e3 strb r3, [r4, #3] + strcpy(data.str, "A.T."); + c7ba: 790b ldrb r3, [r1, #4] display.renderBlock(data); - c6d0: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "A.T. POLY"); - c6d4: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 + c7bc: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "A.T."); + c7c0: f887 3071 strb.w r3, [r7, #113] ; 0x71 display.renderBlock(data); - c6d8: f01e f816 bl 2a708 - c6dc: 1970 adds r0, r6, r5 - c6de: e894 000e ldmia.w r4, {r1, r2, r3} - c6e2: f7fe f97b bl a9dc - c6e6: f7ff b947 b.w b978 - if(group==BMC_DEVICE_GROUP_POT){ - c6ea: 2e04 cmp r6, #4 - c6ec: f001 8176 beq.w d9dc - } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - c6f0: 2e08 cmp r6, #8 - c6f2: f47f a93f bne.w b974 - strcpy(data.label, "PITCH"); - c6f6: 4a8f ldr r2, [pc, #572] ; (c934 ) - data.useOffset = false; - c6f8: 2600 movs r6, #0 - return bitRead(settings, 4) && additionalCheck; - c6fa: 78e3 ldrb r3, [r4, #3] - strcpy(data.label, "PITCH"); - c6fc: 6810 ldr r0, [r2, #0] - c6fe: 8892 ldrh r2, [r2, #4] - c700: f3c3 1800 ubfx r8, r3, #4, #1 - data.useOffset = false; - c704: 7566 strb r6, [r4, #21] - strcpy(data.label, "PITCH"); - c706: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - c70a: 06da lsls r2, r3, #27 - c70c: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - c710: f102 8753 bmi.w f5ba - bitWrite(settings, 2, 0); - c714: f023 0304 bic.w r3, r3, #4 - display.renderBlock(data); - c718: f643 3638 movw r6, #15160 ; 0x3b38 - c71c: f107 0160 add.w r1, r7, #96 ; 0x60 - c720: 2295 movs r2, #149 ; 0x95 - bitWrite(settings, 3, 1); - c722: f043 0308 orr.w r3, r3, #8 - c726: 4668 mov r0, sp - c728: 70e3 strb r3, [r4, #3] - strcpy(data.str, data.label); - c72a: f8d7 30bf ldr.w r3, [r7, #191] ; 0xbf - c72e: f8c7 306d str.w r3, [r7, #109] ; 0x6d - c732: f8b7 30c3 ldrh.w r3, [r7, #195] ; 0xc3 - c736: f8a7 3071 strh.w r3, [r7, #113] ; 0x71 - display.renderBlock(data); - c73a: f01d ffe5 bl 2a708 - c73e: 1970 adds r0, r6, r5 - c740: e894 000e ldmia.w r4, {r1, r2, r3} - c744: f7fe f94a bl a9dc - c748: f7ff b916 b.w b978 + c7c4: f01e f814 bl 2a7f0 + c7c8: 1970 adds r0, r6, r5 + c7ca: e894 000e ldmia.w r4, {r1, r2, r3} + c7ce: f7fe f8d7 bl a980 + c7d2: f7ff b93c b.w ba4e + c7d6: bf00 nop + c7d8: 20001ef0 .word 0x20001ef0 + c7dc: 20001ee8 .word 0x20001ee8 + c7e0: 20001f30 .word 0x20001f30 + c7e4: 20001f28 .word 0x20001f28 + c7e8: 20001ed8 .word 0x20001ed8 + c7ec: 20001efc .word 0x20001efc return BMC_TO_MIDI_CHANNEL(byteA); - c74c: 69fb ldr r3, [r7, #28] + c7f0: 69fb ldr r3, [r7, #28] data.useOffset = false; - c74e: 2100 movs r1, #0 - c750: f003 020f and.w r2, r3, #15 + c7f2: 2100 movs r1, #0 + c7f4: f003 020f and.w r2, r3, #15 return (ch 0){ - c772: f1be 0f00 cmp.w lr, #0 - c776: d010 beq.n c79a + c816: f1be 0f00 cmp.w lr, #0 + c81a: d010 beq.n c83e max = t_max2-1; - c778: f10e 33ff add.w r3, lr, #4294967295 ; 0xffffffff + c81c: f10e 33ff add.w r3, lr, #4294967295 ; 0xffffffff min = t_min2; - c77c: 81e0 strh r0, [r4, #14] + c820: 81e0 strh r0, [r4, #14] max = t_max2-1; - c77e: b29b uxth r3, r3 + c822: b29b uxth r3, r3 if(min > max){ - c780: 4298 cmp r0, r3 + c824: 4298 cmp r0, r3 max = t_max2-1; - c782: 8223 strh r3, [r4, #16] + c826: 8223 strh r3, [r4, #16] if(min > max){ - c784: f241 83ee bls.w df64 + c828: f241 83d6 bls.w dfd8 min = t_max2-1; - c788: 81e3 strh r3, [r4, #14] + c82c: 81e3 strh r3, [r4, #14] max = t_min2; - c78a: 8220 strh r0, [r4, #16] + c82e: 8220 strh r0, [r4, #16] if(!scroll.enabled){ - c78c: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - c790: b91b cbnz r3, c79a + c830: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + c834: b91b cbnz r3, c83e outVal = t_currentValue != min ? min : max; - c792: 89e0 ldrh r0, [r4, #14] - c794: 4581 cmp r9, r0 - c796: bf08 it eq - c798: 8a20 ldrheq r0, [r4, #16] + c836: 89e0 ldrh r0, [r4, #14] + c838: 4581 cmp r9, r0 + c83a: bf08 it eq + c83c: 8a20 ldrheq r0, [r4, #16] if(noScroll){ - c79a: f894 8016 ldrb.w r8, [r4, #22] - c79e: f1b8 0f00 cmp.w r8, #0 - c7a2: f000 86aa beq.w d4fa + c83e: f894 8016 ldrb.w r8, [r4, #22] + c842: f1b8 0f00 cmp.w r8, #0 + c846: f000 87c8 beq.w d7da outVal = scroll.direction ? max : min; - c7a6: f894 309e ldrb.w r3, [r4, #158] ; 0x9e - c7aa: 2b00 cmp r3, #0 - c7ac: f001 83d0 beq.w df50 - c7b0: 8a20 ldrh r0, [r4, #16] + c84a: f894 309e ldrb.w r3, [r4, #158] ; 0x9e + c84e: 2b00 cmp r3, #0 + c850: f001 8480 beq.w e154 + c854: 8a20 ldrh r0, [r4, #16] scroll.enabled = false; - c7b2: 2300 movs r3, #0 - c7b4: f884 309d strb.w r3, [r4, #157] ; 0x9d + c856: 2300 movs r3, #0 + c858: f884 309d strb.w r3, [r4, #157] ; 0x9d if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - c7b8: f006 03fd and.w r3, r6, #253 ; 0xfd - c7bc: 2b01 cmp r3, #1 - c7be: f040 8688 bne.w d4d2 + c85c: f006 03fd and.w r3, r6, #253 ; 0xfd + c860: 2b01 cmp r3, #1 + c862: f040 8736 bne.w d6d2 midi.sendControlChange(e.ports, data.getChannel(), data.byteB, outVal); - c7c2: 697b ldr r3, [r7, #20] + c866: 697b ldr r3, [r7, #20] uint8_t outVal = data.setMinMax(currentCC, 0, 127, data.byteC, data.byteD); - c7c4: b2c6 uxtb r6, r0 + c868: b2c6 uxtb r6, r0 midi.sendControlChange(e.ports, data.getChannel(), data.byteB, outVal); - c7c6: 2000 movs r0, #0 - c7c8: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + c86a: 2000 movs r0, #0 + c86c: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 return BMC_OFF_LED_EVENT; - c7cc: 4680 mov r8, r0 + c870: 4680 mov r8, r0 midi.sendControlChange(e.ports, data.getChannel(), data.byteB, outVal); - c7ce: 69bb ldr r3, [r7, #24] - c7d0: 9001 str r0, [sp, #4] - c7d2: 2001 movs r0, #1 - c7d4: 9600 str r6, [sp, #0] - c7d6: 9002 str r0, [sp, #8] - c7d8: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - c7dc: f016 fdfe bl 233dc + c872: 69bb ldr r3, [r7, #24] + c874: 9001 str r0, [sp, #4] + c876: 2001 movs r0, #1 + c878: 9600 str r6, [sp, #0] + c87a: 9002 str r0, [sp, #8] + c87c: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + c880: f016 fe0e bl 234a0 return BMC_TO_MIDI_CHANNEL(byteA); - c7e0: 79a2 ldrb r2, [r4, #6] + c884: 79a2 ldrb r2, [r4, #6] streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, outVal); - c7e2: 79e3 ldrb r3, [r4, #7] - c7e4: 21b0 movs r1, #176 ; 0xb0 - c7e6: f002 020f and.w r2, r2, #15 - c7ea: 4628 mov r0, r5 - c7ec: 9600 str r6, [sp, #0] - c7ee: 3201 adds r2, #1 - c7f0: f00b fba2 bl 17f38 - c7f4: f7ff b8c0 b.w b978 - c7f8: 69fb ldr r3, [r7, #28] + c886: 79e3 ldrb r3, [r4, #7] + c888: 21b0 movs r1, #176 ; 0xb0 + c88a: f002 020f and.w r2, r2, #15 + c88e: 4628 mov r0, r5 + c890: 9600 str r6, [sp, #0] + c892: 3201 adds r2, #1 + c894: f00b fbc2 bl 1801c + c898: f7ff b8d9 b.w ba4e + c89c: 69fb ldr r3, [r7, #28] uint8_t outVal = data.setMinMax(currentPC, 0, 127, data.byteB, data.byteC); - c7fa: 6939 ldr r1, [r7, #16] - c7fc: f003 020f and.w r2, r3, #15 + c89e: 6939 ldr r1, [r7, #16] + c8a0: f003 020f and.w r2, r3, #15 max = t_max; - c800: 237f movs r3, #127 ; 0x7f - c802: fa1f fc81 uxth.w ip, r1 - c806: 8223 strh r3, [r4, #16] + c8a4: 237f movs r3, #127 ; 0x7f + c8a6: fa1f fc81 uxth.w ip, r1 + c8aa: 8223 strh r3, [r4, #16] return (ch 0){ - c818: b181 cbz r1, c83c + c8bc: b181 cbz r1, c8e0 max = t_max2-1; - c81a: f10c 31ff add.w r1, ip, #4294967295 ; 0xffffffff + c8be: f10c 31ff add.w r1, ip, #4294967295 ; 0xffffffff min = t_min2; - c81e: 81e3 strh r3, [r4, #14] + c8c2: 81e3 strh r3, [r4, #14] max = t_max2-1; - c820: b289 uxth r1, r1 + c8c4: b289 uxth r1, r1 if(min > max){ - c822: 428b cmp r3, r1 + c8c6: 428b cmp r3, r1 max = t_max2-1; - c824: 8221 strh r1, [r4, #16] + c8c8: 8221 strh r1, [r4, #16] if(min > max){ - c826: f241 83ee bls.w e006 + c8ca: f241 8446 bls.w e15a min = t_max2-1; - c82a: 81e1 strh r1, [r4, #14] + c8ce: 81e1 strh r1, [r4, #14] max = t_min2; - c82c: 8223 strh r3, [r4, #16] + c8d0: 8223 strh r3, [r4, #16] if(!scroll.enabled){ - c82e: f894 109d ldrb.w r1, [r4, #157] ; 0x9d - c832: b919 cbnz r1, c83c + c8d2: f894 109d ldrb.w r1, [r4, #157] ; 0x9d + c8d6: b919 cbnz r1, c8e0 outVal = t_currentValue != min ? min : max; - c834: 89e3 ldrh r3, [r4, #14] - c836: 4298 cmp r0, r3 - c838: bf08 it eq - c83a: 8a23 ldrheq r3, [r4, #16] + c8d8: 89e3 ldrh r3, [r4, #14] + c8da: 4298 cmp r0, r3 + c8dc: bf08 it eq + c8de: 8a23 ldrheq r3, [r4, #16] if(noScroll){ - c83c: f894 8016 ldrb.w r8, [r4, #22] - c840: f1b8 0f00 cmp.w r8, #0 - c844: f000 86b8 beq.w d5b8 + c8e0: f894 8016 ldrb.w r8, [r4, #22] + c8e4: f1b8 0f00 cmp.w r8, #0 + c8e8: f000 874b beq.w d782 outVal = scroll.direction ? max : min; - c848: f894 309e ldrb.w r3, [r4, #158] ; 0x9e - c84c: 2b00 cmp r3, #0 - c84e: f001 82ee beq.w de2e - c852: 8a23 ldrh r3, [r4, #16] + c8ec: f894 309e ldrb.w r3, [r4, #158] ; 0x9e + c8f0: 2b00 cmp r3, #0 + c8f2: f001 843a beq.w e16a + c8f6: 8a23 ldrh r3, [r4, #16] scroll.enabled = false; - c854: 2100 movs r1, #0 - c856: f884 109d strb.w r1, [r4, #157] ; 0x9d + c8f8: 2100 movs r1, #0 + c8fa: f884 109d strb.w r1, [r4, #157] ; 0x9d if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - c85a: f006 01fd and.w r1, r6, #253 ; 0xfd - c85e: 2901 cmp r1, #1 - c860: f040 8754 bne.w d70c + c8fe: f006 01fd and.w r1, r6, #253 ; 0xfd + c902: 2901 cmp r1, #1 + c904: f040 8729 bne.w d75a midi.sendProgramChange(e.ports, data.getChannel(), outVal); - c864: 6979 ldr r1, [r7, #20] + c908: 6979 ldr r1, [r7, #20] uint8_t outVal = data.setMinMax(currentPC, 0, 127, data.byteB, data.byteC); - c866: b2db uxtb r3, r3 + c90a: b2db uxtb r3, r3 midi.sendProgramChange(e.ports, data.getChannel(), outVal); - c868: 2000 movs r0, #0 - c86a: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 + c90c: 2000 movs r0, #0 + c90e: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 return BMC_OFF_LED_EVENT; - c86e: 4680 mov r8, r0 + c912: 4680 mov r8, r0 midi.sendProgramChange(e.ports, data.getChannel(), outVal); - c870: 9000 str r0, [sp, #0] - c872: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - c876: 62fb str r3, [r7, #44] ; 0x2c - c878: f016 fc36 bl 230e8 + c914: 9000 str r0, [sp, #0] + c916: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + c91a: 62fb str r3, [r7, #44] ; 0x2c + c91c: f016 fc4a bl 231b4 return BMC_TO_MIDI_CHANNEL(byteA); - c87c: 79a2 ldrb r2, [r4, #6] + c920: 79a2 ldrb r2, [r4, #6] streamMidi(BMC_MIDI_PROGRAM_CHANGE, data.getChannel(), outVal); - c87e: 24ff movs r4, #255 ; 0xff - c880: 6afb ldr r3, [r7, #44] ; 0x2c - c882: f002 020f and.w r2, r2, #15 - c886: 21c0 movs r1, #192 ; 0xc0 - c888: 4628 mov r0, r5 - c88a: 9400 str r4, [sp, #0] - c88c: 3201 adds r2, #1 - c88e: f00b fb53 bl 17f38 - c892: f7ff b871 b.w b978 - if(group == BMC_DEVICE_GROUP_BUTTON){ - c896: 2e01 cmp r6, #1 - c898: f001 865e beq.w e558 + c922: 24ff movs r4, #255 ; 0xff + c924: 6afb ldr r3, [r7, #44] ; 0x2c + c926: f002 020f and.w r2, r2, #15 + c92a: 21c0 movs r1, #192 ; 0xc0 + c92c: 4628 mov r0, r5 + c92e: 9400 str r4, [sp, #0] + c930: 3201 adds r2, #1 + c932: f00b fb73 bl 1801c + c936: f7ff b88a b.w ba4e + data.useOffset = false; + c93a: f04f 0800 mov.w r8, #0 + if(group==BMC_DEVICE_GROUP_BUTTON){ + c93e: 2e01 cmp r6, #1 + data.useOffset = false; + c940: f884 8015 strb.w r8, [r4, #21] + if(group==BMC_DEVICE_GROUP_BUTTON){ + c944: f001 869f beq.w e686 + } else if(group==BMC_DEVICE_GROUP_POT){ + c948: 2e04 cmp r6, #4 + c94a: f001 8725 beq.w e798 + } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ + c94e: 2e05 cmp r6, #5 + c950: f001 853f beq.w e3d2 + } else if(group==BMC_DEVICE_GROUP_DISPLAY){ + c954: 2e08 cmp r6, #8 + c956: f47f a878 bne.w ba4a + c95a: 69fb ldr r3, [r7, #28] + sprintf(data.str, "CH%u N%u V%u", data.getChannel(), data.byteB, data.byteC); + c95c: f107 006d add.w r0, r7, #109 ; 0x6d + c960: 6939 ldr r1, [r7, #16] + display.renderMidi(data); + c962: f643 3658 movw r6, #15192 ; 0x3b58 + c966: f003 020f and.w r2, r3, #15 + sprintf(data.str, "CH%u N%u V%u", data.getChannel(), data.byteB, data.byteC); + c96a: 69bb ldr r3, [r7, #24] + c96c: 9100 str r1, [sp, #0] + c96e: 3201 adds r2, #1 + c970: 49a5 ldr r1, [pc, #660] ; (cc08 ) + c972: f021 fc7f bl 2e274 + data.type = BMC_MIDI_NOTE_ON; + c976: 2390 movs r3, #144 ; 0x90 + display.renderMidi(data); + c978: f107 0160 add.w r1, r7, #96 ; 0x60 + c97c: 2295 movs r2, #149 ; 0x95 + c97e: 4668 mov r0, sp + data.type = BMC_MIDI_NOTE_ON; + c980: 7163 strb r3, [r4, #5] + display.renderMidi(data); + c982: f01d ff35 bl 2a7f0 + c986: 1970 adds r0, r6, r5 + c988: e894 000e ldmia.w r4, {r1, r2, r3} + c98c: f7fd fcc2 bl a314 + c990: f7ff b85d b.w ba4e + if(group==BMC_DEVICE_GROUP_BUTTON){ + c994: 2e01 cmp r6, #1 + c996: f001 8631 beq.w e5fc } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - c89c: 2e05 cmp r6, #5 - c89e: f001 8286 beq.w ddae + c99a: 2e05 cmp r6, #5 + c99c: f001 8281 beq.w dea2 + } else if(group==BMC_DEVICE_GROUP_DISPLAY){ + c9a0: 2e08 cmp r6, #8 + c9a2: f002 81f9 beq.w ed98 + return (prevTime>0); + c9a6: f505 5540 add.w r5, r5, #12288 ; 0x3000 + c9aa: f8d5 31fc ldr.w r3, [r5, #508] ; 0x1fc + return midiActiveSense.active(); + c9ae: f1b3 0800 subs.w r8, r3, #0 + c9b2: bf18 it ne + c9b4: f04f 0801 movne.w r8, #1 + c9b8: f7ff b849 b.w ba4e + if(group == BMC_DEVICE_GROUP_BUTTON){ + c9bc: 2e01 cmp r6, #1 + c9be: f001 85cb beq.w e558 + } else if(group==BMC_DEVICE_GROUP_DISPLAY){ + c9c2: 2e08 cmp r6, #8 + c9c4: f47f a841 bne.w ba4a + bitWrite(settings, 2, 0); + c9c8: 78e2 ldrb r2, [r4, #3] + display.renderBlock(data); + c9ca: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "SAVE EEPROM"); + c9ce: 4b8f ldr r3, [pc, #572] ; (cc0c ) + return BMC_OFF_LED_EVENT; + c9d0: f04f 0800 mov.w r8, #0 + c9d4: f022 0204 bic.w r2, r2, #4 + bitWrite(settings, 3, 1); + c9d8: f042 0208 orr.w r2, r2, #8 + c9dc: 70e2 strb r2, [r4, #3] + strcpy(data.str, "SAVE EEPROM"); + c9de: cb07 ldmia r3!, {r0, r1, r2} + c9e0: f8c7 006d str.w r0, [r7, #109] ; 0x6d + display.renderBlock(data); + c9e4: 4668 mov r0, sp + strcpy(data.str, "SAVE EEPROM"); + c9e6: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + display.renderBlock(data); + c9ea: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "SAVE EEPROM"); + c9ee: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + display.renderBlock(data); + c9f2: 2295 movs r2, #149 ; 0x95 + c9f4: f01d fefc bl 2a7f0 + c9f8: 1970 adds r0, r6, r5 + c9fa: e894 000e ldmia.w r4, {r1, r2, r3} + c9fe: f7fd ffbf bl a980 + ca02: f7ff b824 b.w ba4e + if(group == BMC_DEVICE_GROUP_LED){ + ca06: 2e02 cmp r6, #2 + ca08: f001 8125 beq.w dc56 } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - c8a2: 2e08 cmp r6, #8 - c8a4: f002 82fe beq.w eea4 - return running; - c8a8: f505 5340 add.w r3, r5, #12288 ; 0x3000 - if(active()){ - c8ac: f893 0824 ldrb.w r0, [r3, #2084] ; 0x824 - c8b0: b120 cbz r0, c8bc - c8b2: f643 0024 movw r0, #14372 ; 0x3824 - c8b6: 4428 add r0, r5 - c8b8: f7fa fa2c bl 6d14 - return (stopwatch.getState() == 1); - c8bc: f1a0 0801 sub.w r8, r0, #1 - c8c0: fab8 f888 clz r8, r8 - c8c4: ea4f 1858 mov.w r8, r8, lsr #5 - c8c8: f7ff b856 b.w b978 - data.max = BMC_MAX_PRESETS_PER_BANK-1; - c8cc: 2307 movs r3, #7 - c8ce: 8223 strh r3, [r4, #16] + ca0c: 2e08 cmp r6, #8 + ca0e: f47f a81c bne.w ba4a + switch(data.byteA){ + ca12: 69fa ldr r2, [r7, #28] + ca14: 2a0b cmp r2, #11 + ca16: f63f a8dd bhi.w bbd4 + ca1a: e8df f012 tbh [pc, r2, lsl #1] + ca1e: 04ba .short 0x04ba + ca20: 048904ba .word 0x048904ba + ca24: 04150440 .word 0x04150440 + ca28: 03af03e2 .word 0x03af03e2 + ca2c: 034e037e .word 0x034e037e + ca30: 03220322 .word 0x03220322 + ca34: 0322 .short 0x0322 + if(group==BMC_DEVICE_GROUP_BUTTON){ + ca36: 2e01 cmp r6, #1 + ca38: f001 851a beq.w e470 + } else if(group==BMC_DEVICE_GROUP_DISPLAY){ + ca3c: 2e08 cmp r6, #8 + ca3e: f040 86fb bne.w d838 + bitWrite(settings, 2, 0); + ca42: 78e3 ldrb r3, [r4, #3] + display.renderBlock(data); + ca44: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "TAP"); + ca48: 4a71 ldr r2, [pc, #452] ; (cc10 ) + display.renderBlock(data); + ca4a: f107 0160 add.w r1, r7, #96 ; 0x60 + ca4e: f023 0304 bic.w r3, r3, #4 + ca52: 442e add r6, r5 + strcpy(data.str, "TAP"); + ca54: 6810 ldr r0, [r2, #0] + display.renderBlock(data); + ca56: 2295 movs r2, #149 ; 0x95 + bitWrite(settings, 3, 1); + ca58: f043 0308 orr.w r3, r3, #8 + return BMC_OFF_LED_EVENT; + ca5c: f04f 0800 mov.w r8, #0 + strcpy(data.str, "TAP"); + ca60: f8c7 006d str.w r0, [r7, #109] ; 0x6d + display.renderBlock(data); + ca64: 4668 mov r0, sp + ca66: 70e3 strb r3, [r4, #3] + ca68: f01d fec2 bl 2a7f0 + ca6c: 4630 mov r0, r6 + ca6e: e894 000e ldmia.w r4, {r1, r2, r3} + ca72: f7fd ff85 bl a980 + ca76: f7fe bfea b.w ba4e + data.max = BMC_MAX_SETLISTS-1; + ca7a: 2307 movs r3, #7 + ca7c: 8223 strh r3, [r4, #16] if(data.byteB > 0){ - c8d0: 69bb ldr r3, [r7, #24] - c8d2: b193 cbz r3, c8fa + ca7e: 69bb ldr r3, [r7, #24] + ca80: 2b00 cmp r3, #0 + ca82: f000 8578 beq.w d576 if((data.byteB-1) > data.byteA){ - c8d4: 3b01 subs r3, #1 - c8d6: 69fa ldr r2, [r7, #28] - c8d8: 4293 cmp r3, r2 - c8da: f341 833c ble.w df56 + ca86: 3b01 subs r3, #1 + ca88: 69fa ldr r2, [r7, #28] + ca8a: 4293 cmp r3, r2 + ca8c: f341 827c ble.w df88 data.max = data.byteB-1; - c8de: 8223 strh r3, [r4, #16] + ca90: 8223 strh r3, [r4, #16] data.min = data.byteA; - c8e0: 81e2 strh r2, [r4, #14] + ca92: 81e2 strh r2, [r4, #14] if(!data.scrollEnabled()){ - c8e2: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - c8e6: b943 cbnz r3, c8fa - return preset; - c8e8: f505 5340 add.w r3, r5, #12288 ; 0x3000 - outVal = presets.get() != data.byteA ? data.byteA : (data.byteB-1); - c8ec: 69fa ldr r2, [r7, #28] - c8ee: f8d3 31fc ldr.w r3, [r3, #508] ; 0x1fc - c8f2: 781b ldrb r3, [r3, #0] - c8f4: 4293 cmp r3, r2 - c8f6: f002 8467 beq.w f1c8 - c8fa: 69fa ldr r2, [r7, #28] - if(data.byteC == 1){ - c8fc: 693b ldr r3, [r7, #16] - c8fe: 2b01 cmp r3, #1 - c900: d103 bne.n c90a - data.min = 0; - c902: 2300 movs r3, #0 - c904: 81e3 strh r3, [r4, #14] - data.max = BMC_MAX_PRESETS-1; - c906: 233f movs r3, #63 ; 0x3f - c908: 8223 strh r3, [r4, #16] - c90a: f89a 3964 ldrb.w r3, [sl, #2404] ; 0x964 - if(flags.read(BMC_FLAGS_BLOCK_PRESETS)){ - c90e: 06d9 lsls r1, r3, #27 - c910: f53f a830 bmi.w b974 - if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - c914: 3e01 subs r6, #1 - c916: 2e07 cmp r6, #7 - c918: f200 811c bhi.w cb54 - c91c: e8df f016 tbh [pc, r6, lsl #1] - c920: 011a00c8 .word 0x011a00c8 - c924: 011a00c8 .word 0x011a00c8 - c928: 011a0220 .word 0x011a0220 - c92c: 01ba011a .word 0x01ba011a - c930: 20001ef0 .word 0x20001ef0 - c934: 20001ee8 .word 0x20001ee8 - uint8_t outVal = data.setMinMax(layer, 0, BMC_MAX_LAYERS-1, data.byteA, data.byteB); - c938: f8da c86c ldr.w ip, [sl, #2156] ; 0x86c - max = t_max; - c93c: f04f 0e04 mov.w lr, #4 - c940: 69ba ldr r2, [r7, #24] - c942: f89c 0000 ldrb.w r0, [ip] - c946: 8bbb ldrh r3, [r7, #28] - c948: fa1f f882 uxth.w r8, r2 - c94c: f8a4 e010 strh.w lr, [r4, #16] - if(t_max2 > 0){ - c950: 2a00 cmp r2, #0 - c952: f000 8510 beq.w d376 - max = t_max2-1; - c956: f108 32ff add.w r2, r8, #4294967295 ; 0xffffffff - min = t_min2; - c95a: 81e3 strh r3, [r4, #14] - max = t_max2-1; - c95c: b292 uxth r2, r2 - if(min > max){ - c95e: 4293 cmp r3, r2 - max = t_max2-1; - c960: 8222 strh r2, [r4, #16] - if(min > max){ - c962: f241 832f bls.w dfc4 - min = t_max2-1; - c966: 81e2 strh r2, [r4, #14] - max = t_min2; - c968: 8223 strh r3, [r4, #16] - if(!scroll.enabled){ - c96a: f894 209d ldrb.w r2, [r4, #157] ; 0x9d - c96e: 2a00 cmp r2, #0 - c970: f040 8501 bne.w d376 - outVal = t_currentValue != min ? min : max; - c974: 89e2 ldrh r2, [r4, #14] - c976: 4290 cmp r0, r2 - c978: d100 bne.n c97c - c97a: 8a22 ldrh r2, [r4, #16] - if(noScroll){ - c97c: f894 8016 ldrb.w r8, [r4, #22] - c980: f1b8 0f00 cmp.w r8, #0 - c984: f000 8698 beq.w d6b8 - outVal = scroll.direction ? max : min; - c988: f894 209e ldrb.w r2, [r4, #158] ; 0x9e - c98c: 2a00 cmp r2, #0 - c98e: f001 8251 beq.w de34 - c992: 8a22 ldrh r2, [r4, #16] - scroll.enabled = false; - c994: 2000 movs r0, #0 - c996: f884 009d strb.w r0, [r4, #157] ; 0x9d + ca94: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + ca98: 2b00 cmp r3, #0 + ca9a: f040 85bb bne.w d614 + return setList; + ca9e: f505 5340 add.w r3, r5, #12288 ; 0x3000 + outVal = setLists.get() != data.byteA ? data.byteA : (data.byteB-1); + caa2: 69fa ldr r2, [r7, #28] + caa4: f8d3 3228 ldr.w r3, [r3, #552] ; 0x228 + caa8: 781b ldrb r3, [r3, #0] + caaa: 4293 cmp r3, r2 + caac: f002 837c beq.w f1a8 + cab0: 69f9 ldr r1, [r7, #28] if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - c99a: f006 00fd and.w r0, r6, #253 ; 0xfd - c99e: 2801 cmp r0, #1 - c9a0: f040 8637 bne.w d612 - setLayer(outVal); - c9a4: 2300 movs r3, #0 - uint8_t outVal = data.setMinMax(layer, 0, BMC_MAX_LAYERS-1, data.byteA, data.byteB); - c9a6: b2d1 uxtb r1, r2 - setLayer(outVal); - c9a8: 4628 mov r0, r5 - c9aa: 461a mov r2, r3 + cab2: f006 03fd and.w r3, r6, #253 ; 0xfd + cab6: 2b01 cmp r3, #1 + cab8: f040 85b1 bne.w d61e + setLists.set(outVal); + cabc: f243 2020 movw r0, #12832 ; 0x3220 return BMC_OFF_LED_EVENT; - c9ac: 4698 mov r8, r3 - setLayer(outVal); - c9ae: f008 fbc7 bl 15140 - c9b2: f7fe bfe1 b.w b978 - data.max = BMC_MAX_SETLISTS_SONGS-1; - c9b6: 230f movs r3, #15 - c9b8: 8223 strh r3, [r4, #16] - if(data.byteB > 0){ - c9ba: 69bb ldr r3, [r7, #24] - c9bc: 2b00 cmp r3, #0 - c9be: f000 86b9 beq.w d734 - if((data.byteB-1) > data.byteA){ - c9c2: 3b01 subs r3, #1 - c9c4: 69fa ldr r2, [r7, #28] - c9c6: 4293 cmp r3, r2 - c9c8: f341 834a ble.w e060 - data.max = data.byteB-1; - c9cc: 8223 strh r3, [r4, #16] - data.min = data.byteA; - c9ce: 81e2 strh r2, [r4, #14] - if(!data.scrollEnabled()){ - c9d0: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - c9d4: 2b00 cmp r3, #0 - c9d6: f041 832b bne.w e030 - return song; - c9da: f505 5340 add.w r3, r5, #12288 ; 0x3000 - outVal = setLists.getSong() != data.byteA ? data.byteA : (data.byteB-1); - c9de: 69fa ldr r2, [r7, #28] - c9e0: f8d3 320c ldr.w r3, [r3, #524] ; 0x20c - c9e4: 781b ldrb r3, [r3, #0] - c9e6: 429a cmp r2, r3 - c9e8: f002 8345 beq.w f076 - c9ec: 69f9 ldr r1, [r7, #28] - if(group == BMC_DEVICE_GROUP_BUTTON){ - c9ee: 2e01 cmp r6, #1 - c9f0: f000 86a9 beq.w d746 - } else if(group == BMC_DEVICE_GROUP_ENCODER){ - c9f4: 2e03 cmp r6, #3 - c9f6: f001 877b beq.w e8f0 - } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ - c9fa: 2e05 cmp r6, #5 - c9fc: f001 8661 beq.w e6c2 - } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - ca00: 2e08 cmp r6, #8 - ca02: f002 80e4 beq.w ebce - ca06: f505 5540 add.w r5, r5, #12288 ; 0x3000 - ca0a: f8d5 320c ldr.w r3, [r5, #524] ; 0x20c - return (data.byteA == setLists.getSong()); - ca0e: f893 8000 ldrb.w r8, [r3] - ca12: 69fb ldr r3, [r7, #28] - ca14: eba8 0903 sub.w r9, r8, r3 - ca18: f1d9 0800 rsbs r8, r9, #0 - ca1c: eb48 0809 adc.w r8, r8, r9 - ca20: f7fe bfaa b.w b978 + cac0: f04f 0800 mov.w r8, #0 + setLists.set(outVal); + cac4: 4428 add r0, r5 + cac6: f7fb fa27 bl 7f18 + caca: f7fe bfc0 b.w ba4e + if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ + cace: f006 03fd and.w r3, r6, #253 ; 0xfd + cad2: 2b01 cmp r3, #1 + cad4: f43e afb9 beq.w ba4a + if(group == BMC_DEVICE_GROUP_DISPLAY){ + cad8: 2e08 cmp r6, #8 + cada: f002 8188 beq.w edee + cade: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + return globals.bleConnected(); + cae2: f3c3 1800 ubfx r8, r3, #4, #1 + cae6: f7fe bfb2 b.w ba4e if(group == BMC_DEVICE_GROUP_LED){ - ca24: 2e02 cmp r6, #2 - ca26: f000 87c7 beq.w d9b8 + caea: 2e02 cmp r6, #2 + caec: f001 8143 beq.w dd76 } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - ca2a: 2e08 cmp r6, #8 - ca2c: f47e afa2 bne.w b974 + caf0: 2e08 cmp r6, #8 + caf2: f47e afaa bne.w ba4a bitWrite(settings, 2, 0); - ca30: 78e3 ldrb r3, [r4, #3] + caf6: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - ca32: f643 3838 movw r8, #15160 ; 0x3b38 + caf8: f643 3858 movw r8, #15192 ; 0x3b58 strcpy(data.str, "MIDI IO"); - ca36: 4ec5 ldr r6, [pc, #788] ; (cd4c ) + cafc: 4e45 ldr r6, [pc, #276] ; (cc14 ) display.renderBlock(data); - ca38: 2295 movs r2, #149 ; 0x95 - ca3a: f023 0304 bic.w r3, r3, #4 + cafe: 2295 movs r2, #149 ; 0x95 + cb00: f023 0304 bic.w r3, r3, #4 strcpy(data.str, "MIDI IO"); - ca3e: ce03 ldmia r6!, {r0, r1} + cb04: ce03 ldmia r6!, {r0, r1} bitWrite(settings, 3, 1); - ca40: f043 0308 orr.w r3, r3, #8 - ca44: f8c7 006d str.w r0, [r7, #109] ; 0x6d + cb06: f043 0308 orr.w r3, r3, #8 + cb0a: f8c7 006d str.w r0, [r7, #109] ; 0x6d display.renderBlock(data); - ca48: 4668 mov r0, sp + cb0e: 4668 mov r0, sp strcpy(data.str, "MIDI IO"); - ca4a: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + cb10: f8c7 1071 str.w r1, [r7, #113] ; 0x71 display.renderBlock(data); - ca4e: f107 0160 add.w r1, r7, #96 ; 0x60 - ca52: 70e3 strb r3, [r4, #3] - ca54: f01d fe58 bl 2a708 - ca58: eb08 0005 add.w r0, r8, r5 + cb14: f107 0160 add.w r1, r7, #96 ; 0x60 + cb18: 70e3 strb r3, [r4, #3] + cb1a: f01d fe69 bl 2a7f0 + cb1e: eb08 0005 add.w r0, r8, r5 return BMC_OFF_LED_EVENT; - ca5c: f04f 0800 mov.w r8, #0 + cb22: f04f 0800 mov.w r8, #0 display.renderBlock(data); - ca60: e894 000e ldmia.w r4, {r1, r2, r3} - ca64: f7fd ffba bl a9dc - ca68: f7fe bf86 b.w b978 + cb26: e894 000e ldmia.w r4, {r1, r2, r3} + cb2a: f7fd ff29 bl a980 + cb2e: f7fe bf8e b.w ba4e if(group == BMC_DEVICE_GROUP_BUTTON){ - ca6c: 2e01 cmp r6, #1 - ca6e: f001 8491 beq.w e394 + cb32: 2e01 cmp r6, #1 + cb34: f001 8467 beq.w e406 } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - ca72: 2e08 cmp r6, #8 - ca74: f47e af7e bne.w b974 + cb38: 2e08 cmp r6, #8 + cb3a: f47e af86 bne.w ba4a return bitRead(settings, 3); - ca78: 78e3 ldrb r3, [r4, #3] + cb3e: 78e3 ldrb r3, [r4, #3] if(data.useName()){ // Name - ca7a: 071b lsls r3, r3, #28 - ca7c: f142 8417 bpl.w f2ae + cb40: 071b lsls r3, r3, #28 + cb42: f142 83bb bpl.w f2bc if(cmd < 10){ - ca80: 69fb ldr r3, [r7, #28] - ca82: 2b09 cmp r3, #9 - ca84: f242 853b bls.w f4fe + cb46: 69fb ldr r3, [r7, #28] + cb48: 2b09 cmp r3, #9 + cb4a: f242 8569 bls.w f620 switch(cmd){ - ca88: 69fb ldr r3, [r7, #28] - ca8a: 3b0a subs r3, #10 - ca8c: 2b0c cmp r3, #12 - ca8e: f200 843b bhi.w d308 - ca92: e8df f013 tbh [pc, r3, lsl #1] - ca96: 22b7 .short 0x22b7 - ca98: 22ab22b1 .word 0x22ab22b1 - ca9c: 1f5f22a5 .word 0x1f5f22a5 - caa0: 1f541f5d .word 0x1f541f5d - caa4: 1fc21f48 .word 0x1fc21f48 - caa8: 04300430 .word 0x04300430 - caac: 1e391e41 .word 0x1e391e41 + cb4e: 69fb ldr r3, [r7, #28] + cb50: 3b0a subs r3, #10 + cb52: 2b0c cmp r3, #12 + cb54: f200 8442 bhi.w d3dc + cb58: e8df f013 tbh [pc, r3, lsl #1] + cb5c: 20632069 .word 0x20632069 + cb60: 2057205d .word 0x2057205d + cb64: 236d236f .word 0x236d236f + cb68: 23582364 .word 0x23582364 + cb6c: 0437199c .word 0x0437199c + cb70: 207e0437 .word 0x207e0437 + cb74: 2076 .short 0x2076 if(data.scrollEnabled()){ - cab0: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - cab4: 2b00 cmp r3, #0 - cab6: f002 84ba beq.w f42e - if(data.byteC == 1){ - caba: 693b ldr r3, [r7, #16] - cabc: 2b01 cmp r3, #1 - cabe: f002 8759 beq.w f974 - presets.scrollPreset(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); - cac2: f894 800e ldrb.w r8, [r4, #14] - cac6: 212d movs r1, #45 ; 0x2d - cac8: f894 a010 ldrb.w sl, [r4, #16] - cacc: f243 16ec movw r6, #12780 ; 0x31ec - cad0: 489f ldr r0, [pc, #636] ; (cd50 ) + cb76: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + cb7a: 2b00 cmp r3, #0 + cb7c: f002 8302 beq.w f184 + presets.scrollBank(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + cb80: 7ba2 ldrb r2, [r4, #14] + cb82: f243 200c movw r0, #12812 ; 0x320c + cb86: 7c26 ldrb r6, [r4, #16] return scroll.direction; - cad2: f894 b09e ldrb.w fp, [r4, #158] ; 0x9e - cad6: 442e add r6, r5 - return scroll.wrap; - cad8: f894 409f ldrb.w r4, [r4, #159] ; 0x9f - cadc: f01f fd34 bl 2c548 - size_t println(const char s[]) { return print(s) + println(); } - cae0: 489c ldr r0, [pc, #624] ; (cd54 ) - cae2: f01d f9c7 bl 29e74 + cb88: f894 c09e ldrb.w ip, [r4, #158] ; 0x9e + cb8c: 4428 add r0, r5 if(t_min > t_max){ - cae6: 45d0 cmp r8, sl - cae8: d804 bhi.n caf4 + cb8e: 42b2 cmp r2, r6 + return scroll.wrap; + cb90: f894 409f ldrb.w r4, [r4, #159] ; 0x9f + cb94: d804 bhi.n cba0 } else if(t_min == t_max){ - caea: f003 8050 beq.w fb8e - caee: 4653 mov r3, sl - caf0: 46c2 mov sl, r8 - caf2: 4698 mov r8, r3 - if(t_max > BMC_MAX_PRESETS_PER_BANK-1){ - caf4: 4642 mov r2, r8 - uint8_t value = scroller.scroll(amount, t_direction, t_wrap, preset, t_min, t_max); - caf6: f505 5940 add.w r9, r5, #12288 ; 0x3000 - cafa: 2a07 cmp r2, #7 - cafc: f8d9 31fc ldr.w r3, [r9, #508] ; 0x1fc - cb00: bf28 it cs - cb02: 2207 movcs r2, #7 + cb96: f003 8105 beq.w fda4 + cb9a: 4633 mov r3, r6 + cb9c: 4616 mov r6, r2 + cb9e: 461a mov r2, r3 + if(t_max > BMC_MAX_PRESET_BANKS-1){ + cba0: 2a07 cmp r2, #7 + cba2: 4611 mov r1, r2 + uint8_t value = scroller.scroll(amount, t_direction, t_wrap, bank, t_min, t_max); + cba4: f505 5940 add.w r9, r5, #12288 ; 0x3000 + cba8: bf28 it cs + cbaa: 2107 movcs r1, #7 t_min = 0; - cb04: f1ba 0f08 cmp.w sl, #8 - uint8_t value = scroller.scroll(amount, t_direction, t_wrap, preset, t_min, t_max); - cb08: 781b ldrb r3, [r3, #0] - cb0a: b2d2 uxtb r2, r2 + cbac: 2e08 cmp r6, #8 + uint8_t value = scroller.scroll(amount, t_direction, t_wrap, bank, t_min, t_max); + cbae: f8d9 3218 ldr.w r3, [r9, #536] ; 0x218 + cbb2: b2c9 uxtb r1, r1 t_min = 0; - cb0c: bf28 it cs - cb0e: f04f 0a00 movcs.w sl, #0 + cbb4: bf28 it cs + cbb6: 2600 movcs r6, #0 + uint8_t value = scroller.scroll(amount, t_direction, t_wrap, bank, t_min, t_max); + cbb8: 781b ldrb r3, [r3, #0] if((min < lowest) || (min >= max)){ - cb12: 4552 cmp r2, sl - cb14: f203 8043 bhi.w fb9e + cbba: 42b1 cmp r1, r6 + cbbc: f203 80f9 bhi.w fdb2 if((max > highest) || (max <= min)){ - cb18: f1b8 0f00 cmp.w r8, #0 - cb1c: f043 8150 bne.w fdc0 + cbc0: 2a00 cmp r2, #0 + cbc2: f043 860e bne.w 107e2 max = highest; - cb20: 2207 movs r2, #7 + cbc6: 2107 movs r1, #7 if(direction==BMC_SCROLL_UP){ - cb22: f1bb 0f00 cmp.w fp, #0 - cb26: f002 8780 beq.w fa2a + cbc8: f1bc 0f00 cmp.w ip, #0 + cbcc: f003 802e beq.w fc2c long newValue = (value+amount); - cb2a: 3301 adds r3, #1 + cbd0: 3301 adds r3, #1 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - cb2c: 2c00 cmp r4, #0 - cb2e: f002 8776 beq.w fa1e + cbd2: 2c00 cmp r4, #0 + cbd4: f003 8024 beq.w fc20 return (newValue > max || newValue < min) ? min : newValue; - cb32: 4293 cmp r3, r2 - cb34: dc03 bgt.n cb3e + cbd8: 428b cmp r3, r1 + cbda: dc02 bgt.n cbe2 } else if(newValue + cbdc: 4293 cmp r3, r2 + cbde: db00 blt.n cbe2 return newValue; - cb3a: fa5f f883 uxtb.w r8, r3 + cbe0: b2da uxtb r2, r3 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - cb3e: 4642 mov r2, r8 - set(bank, value); - cb40: f8d9 11f8 ldr.w r1, [r9, #504] ; 0x1f8 - cb44: 2300 movs r3, #0 - cb46: 4630 mov r0, r6 - cb48: 7809 ldrb r1, [r1, #0] - return BMC_OFF_LED_EVENT; - cb4a: 4698 mov r8, r3 - cb4c: f7f3 fd38 bl 5c0 - return value; - cb50: f7fe bf12 b.w b978 - return preset; - cb54: f505 5540 add.w r5, r5, #12288 ; 0x3000 - cb58: f8d5 31fc ldr.w r3, [r5, #508] ; 0x1fc - return data.byteA == presets.get(); - cb5c: f893 8000 ldrb.w r8, [r3] - cb60: 69fb ldr r3, [r7, #28] - cb62: eba8 0203 sub.w r2, r8, r3 - cb66: f1d2 0800 rsbs r8, r2, #0 - cb6a: eb48 0802 adc.w r8, r8, r2 - cb6e: f7fe bf03 b.w b978 + cbe2: 4611 mov r1, r2 + cbe4: f003 b827 b.w fc36 + return bank; + cbe8: f505 5540 add.w r5, r5, #12288 ; 0x3000 + cbec: f8d5 3218 ldr.w r3, [r5, #536] ; 0x218 + return data.byteA == presets.getBank(); + cbf0: f893 8000 ldrb.w r8, [r3] + cbf4: 69fb ldr r3, [r7, #28] + cbf6: eba8 0c03 sub.w ip, r8, r3 + cbfa: f1dc 0800 rsbs r8, ip, #0 + cbfe: eb48 080c adc.w r8, r8, ip + cc02: f7fe bf24 b.w ba4e + cc06: bf00 nop + cc08: 20001ed8 .word 0x20001ed8 + cc0c: 20001fd0 .word 0x20001fd0 + cc10: 20001f64 .word 0x20001f64 + cc14: 20001fc8 .word 0x20001fc8 if(data.scrollEnabled()){ - cb72: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - cb76: 2b00 cmp r3, #0 - cb78: f002 8319 beq.w f1ae - presets.scrollBank(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); - cb7c: 7ba2 ldrb r2, [r4, #14] - cb7e: f243 10ec movw r0, #12780 ; 0x31ec - cb82: 7c26 ldrb r6, [r4, #16] + cc18: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + cc1c: 2b00 cmp r3, #0 + cc1e: f002 8473 beq.w f508 + if(data.byteC == 1){ + cc22: 693b ldr r3, [r7, #16] + cc24: 2b01 cmp r3, #1 + cc26: f003 80de beq.w fde6 + presets.scrollPreset(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + cc2a: f894 800e ldrb.w r8, [r4, #14] + cc2e: 212d movs r1, #45 ; 0x2d + cc30: f894 a010 ldrb.w sl, [r4, #16] + cc34: f243 260c movw r6, #12812 ; 0x320c + cc38: 48cd ldr r0, [pc, #820] ; (cf70 ) return scroll.direction; - cb84: f894 c09e ldrb.w ip, [r4, #158] ; 0x9e - cb88: 4428 add r0, r5 - if(t_min > t_max){ - cb8a: 42b2 cmp r2, r6 + cc3a: f894 b09e ldrb.w fp, [r4, #158] ; 0x9e + cc3e: 442e add r6, r5 return scroll.wrap; - cb8c: f894 409f ldrb.w r4, [r4, #159] ; 0x9f - cb90: d804 bhi.n cb9c + cc40: f894 409f ldrb.w r4, [r4, #159] ; 0x9f + cc44: f01f fcf4 bl 2c630 + size_t println(const char s[]) { return print(s) + println(); } + cc48: 48ca ldr r0, [pc, #808] ; (cf74 ) + cc4a: f01d f989 bl 29f60 + if(t_min > t_max){ + cc4e: 45d0 cmp r8, sl + cc50: d804 bhi.n cc5c } else if(t_min == t_max){ - cb92: f002 86cc beq.w f92e - cb96: 4633 mov r3, r6 - cb98: 4616 mov r6, r2 - cb9a: 461a mov r2, r3 - if(t_max > BMC_MAX_PRESET_BANKS-1){ - cb9c: 2a07 cmp r2, #7 - cb9e: 4611 mov r1, r2 - uint8_t value = scroller.scroll(amount, t_direction, t_wrap, bank, t_min, t_max); - cba0: f505 5940 add.w r9, r5, #12288 ; 0x3000 - cba4: bf28 it cs - cba6: 2107 movcs r1, #7 + cc52: f003 801b beq.w fc8c + cc56: 4653 mov r3, sl + cc58: 46c2 mov sl, r8 + cc5a: 4698 mov r8, r3 + if(t_max > BMC_MAX_PRESETS_PER_BANK-1){ + cc5c: 4642 mov r2, r8 + uint8_t value = scroller.scroll(amount, t_direction, t_wrap, preset, t_min, t_max); + cc5e: f505 5940 add.w r9, r5, #12288 ; 0x3000 + cc62: 2a07 cmp r2, #7 + cc64: f8d9 321c ldr.w r3, [r9, #540] ; 0x21c + cc68: bf28 it cs + cc6a: 2207 movcs r2, #7 t_min = 0; - cba8: 2e08 cmp r6, #8 - uint8_t value = scroller.scroll(amount, t_direction, t_wrap, bank, t_min, t_max); - cbaa: f8d9 31f8 ldr.w r3, [r9, #504] ; 0x1f8 - cbae: b2c9 uxtb r1, r1 + cc6c: f1ba 0f08 cmp.w sl, #8 + uint8_t value = scroller.scroll(amount, t_direction, t_wrap, preset, t_min, t_max); + cc70: 781b ldrb r3, [r3, #0] + cc72: b2d2 uxtb r2, r2 t_min = 0; - cbb0: bf28 it cs - cbb2: 2600 movcs r6, #0 - uint8_t value = scroller.scroll(amount, t_direction, t_wrap, bank, t_min, t_max); - cbb4: 781b ldrb r3, [r3, #0] + cc74: bf28 it cs + cc76: f04f 0a00 movcs.w sl, #0 if((min < lowest) || (min >= max)){ - cbb6: 42b1 cmp r1, r6 - cbb8: f202 86c0 bhi.w f93c + cc7a: 4552 cmp r2, sl + cc7c: f203 800e bhi.w fc9c if((max > highest) || (max <= min)){ - cbbc: 2a00 cmp r2, #0 - cbbe: f043 8728 bne.w 10a12 + cc80: f1b8 0f00 cmp.w r8, #0 + cc84: f044 80c5 bne.w 10e12 max = highest; - cbc2: 2107 movs r1, #7 + cc88: 2207 movs r2, #7 if(direction==BMC_SCROLL_UP){ - cbc4: f1bc 0f00 cmp.w ip, #0 - cbc8: f003 8090 beq.w fcec + cc8a: f1bb 0f00 cmp.w fp, #0 + cc8e: f002 87f0 beq.w fc72 long newValue = (value+amount); - cbcc: 3301 adds r3, #1 + cc92: 3301 adds r3, #1 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - cbce: 2c00 cmp r4, #0 - cbd0: f003 8086 beq.w fce0 + cc94: 2c00 cmp r4, #0 + cc96: f002 87e6 beq.w fc66 return (newValue > max || newValue < min) ? min : newValue; - cbd4: 428b cmp r3, r1 - cbd6: dc02 bgt.n cbde + cc9a: 4293 cmp r3, r2 + cc9c: dc03 bgt.n cca6 } else if(newValue + cc9e: 4543 cmp r3, r8 + cca0: db01 blt.n cca6 return newValue; - cbdc: b2da uxtb r2, r3 + cca2: fa5f f883 uxtb.w r8, r3 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - cbde: 4611 mov r1, r2 - set(value, preset); - cbe0: f8d9 21fc ldr.w r2, [r9, #508] ; 0x1fc - cbe4: 2300 movs r3, #0 - cbe6: 7812 ldrb r2, [r2, #0] + cca6: 4642 mov r2, r8 + set(bank, value); + cca8: f8d9 1218 ldr.w r1, [r9, #536] ; 0x218 + ccac: 2300 movs r3, #0 + ccae: 4630 mov r0, r6 + ccb0: 7809 ldrb r1, [r1, #0] return BMC_OFF_LED_EVENT; - cbe8: 4698 mov r8, r3 - cbea: f7f3 fce9 bl 5c0 + ccb2: 4698 mov r8, r3 + ccb4: f7f3 fc84 bl 5c0 return value; - cbee: f7fe bec3 b.w b978 - return bank; - cbf2: f505 5540 add.w r5, r5, #12288 ; 0x3000 - cbf6: f8d5 31f8 ldr.w r3, [r5, #504] ; 0x1f8 - return data.byteA == presets.getBank(); - cbfa: f893 8000 ldrb.w r8, [r3] - cbfe: 69fb ldr r3, [r7, #28] - cc00: eba8 0c03 sub.w ip, r8, r3 - cc04: f1dc 0800 rsbs r8, ip, #0 - cc08: eb48 080c adc.w r8, r8, ip - cc0c: f7fe beb4 b.w b978 + ccb8: f7fe bec9 b.w ba4e + return preset; + ccbc: f505 5540 add.w r5, r5, #12288 ; 0x3000 + ccc0: f8d5 321c ldr.w r3, [r5, #540] ; 0x21c + return data.byteA == presets.get(); + ccc4: f893 8000 ldrb.w r8, [r3] + ccc8: 69fb ldr r3, [r7, #28] + ccca: eba8 0203 sub.w r2, r8, r3 + ccce: f1d2 0800 rsbs r8, r2, #0 + ccd2: eb48 0802 adc.w r8, r8, r2 + ccd6: f7fe beba b.w ba4e callback.customActivity(deviceId, deviceIndex, data.byteA, value, 0); - cc10: 2500 movs r5, #0 - cc12: 6afb ldr r3, [r7, #44] ; 0x2c - cc14: 69fa ldr r2, [r7, #28] - cc16: 4659 mov r1, fp - cc18: 4648 mov r0, r9 - cc1a: 9500 str r5, [sp, #0] + ccda: 2500 movs r5, #0 + ccdc: 6afb ldr r3, [r7, #44] ; 0x2c + ccde: 69fa ldr r2, [r7, #28] + cce0: 4659 mov r1, fp + cce2: 4648 mov r0, r9 + cce4: 9500 str r5, [sp, #0] return BMC_OFF_LED_EVENT; - cc1c: 46a8 mov r8, r5 + cce6: 46a8 mov r8, r5 callback.customActivity(deviceId, deviceIndex, data.byteA, value, 0); - cc1e: 47a0 blx r4 - cc20: f7fe beaa b.w b978 + cce8: 47a0 blx r4 + ccea: f7fe beb0 b.w ba4e callback.customActivity(deviceId, deviceIndex, data.byteA, bitRead(value, 7), value & 0x7F); - cc24: 6afb ldr r3, [r7, #44] ; 0x2c - cc26: 4659 mov r1, fp - cc28: 69fa ldr r2, [r7, #28] - cc2a: 4648 mov r0, r9 - cc2c: 09db lsrs r3, r3, #7 - cc2e: f8cd c000 str.w ip, [sp] + ccee: 6afb ldr r3, [r7, #44] ; 0x2c + ccf0: 4659 mov r1, fp + ccf2: 69fa ldr r2, [r7, #28] + ccf4: 4648 mov r0, r9 + ccf6: 09db lsrs r3, r3, #7 + ccf8: f8cd c000 str.w ip, [sp] return BMC_OFF_LED_EVENT; - cc32: f04f 0800 mov.w r8, #0 + ccfc: f04f 0800 mov.w r8, #0 callback.customActivity(deviceId, deviceIndex, data.byteA, bitRead(value, 7), value & 0x7F); - cc36: 47a0 blx r4 - cc38: f7fe be9e b.w b978 + cd00: 47a0 blx r4 + cd02: f7fe bea4 b.w ba4e return callback.customActivity(deviceId, deviceIndex, data.byteA, dat, 0); - cc3c: 2500 movs r5, #0 - cc3e: 6a7b ldr r3, [r7, #36] ; 0x24 - cc40: 69fa ldr r2, [r7, #28] - cc42: 4659 mov r1, fp - cc44: 4648 mov r0, r9 - cc46: 9500 str r5, [sp, #0] - cc48: 47a0 blx r4 - cc4a: 4680 mov r8, r0 - cc4c: f7fe be94 b.w b978 + cd06: 2500 movs r5, #0 + cd08: 6a7b ldr r3, [r7, #36] ; 0x24 + cd0a: 69fa ldr r2, [r7, #28] + cd0c: 4659 mov r1, fp + cd0e: 4648 mov r0, r9 + cd10: 9500 str r5, [sp, #0] + cd12: 47a0 blx r4 + cd14: 4680 mov r8, r0 + cd16: f7fe be9a b.w ba4e callback.customActivity(deviceId, deviceIndex, data.byteA, dat, 0); - cc50: 2500 movs r5, #0 - cc52: 6a7b ldr r3, [r7, #36] ; 0x24 - cc54: 69fa ldr r2, [r7, #28] - cc56: 4659 mov r1, fp - cc58: 4648 mov r0, r9 - cc5a: 9500 str r5, [sp, #0] + cd1a: 2500 movs r5, #0 + cd1c: 6a7b ldr r3, [r7, #36] ; 0x24 + cd1e: 69fa ldr r2, [r7, #28] + cd20: 4659 mov r1, fp + cd22: 4648 mov r0, r9 + cd24: 9500 str r5, [sp, #0] return BMC_OFF_LED_EVENT; - cc5c: 46a8 mov r8, r5 + cd26: 46a8 mov r8, r5 callback.customActivity(deviceId, deviceIndex, data.byteA, dat, 0); - cc5e: 47a0 blx r4 - cc60: f7fe be8a b.w b978 + cd28: 47a0 blx r4 + cd2a: f7fe be90 b.w ba4e if(group==BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - cc64: f006 03fd and.w r3, r6, #253 ; 0xfd - cc68: 2b01 cmp r3, #1 - cc6a: f47f a8db bne.w be24 + cd2e: f006 03fd and.w r3, r6, #253 ; 0xfd + cd32: 2b01 cmp r3, #1 + cd34: f47f a8cc bne.w bed0 if(data.scrollEnabled()){ - cc6e: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - cc72: 2b00 cmp r3, #0 - cc74: f041 811b bne.w deae + cd38: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + cd3c: 2b00 cmp r3, #0 + cd3e: f041 80d8 bne.w def2 uint16_t p1 = BMC_GET_BYTE_2(0, event) & 0x3FF; - cc78: 460b mov r3, r1 + cd42: 460b mov r3, r1 if(!connected()){ - cc7a: 2a00 cmp r2, #0 - cc7c: f43e ae7a beq.w b974 - cc80: f243 3054 movw r0, #13140 ; 0x3354 - cc84: 4619 mov r1, r3 + cd44: 2a00 cmp r2, #0 + cd46: f43e ae80 beq.w ba4a + cd4a: f243 3074 movw r0, #13172 ; 0x3374 + cd4e: 4619 mov r1, r3 return BMC_OFF_LED_EVENT; - cc86: f04f 0800 mov.w r8, #0 - cc8a: 4428 add r0, r5 - cc8c: f7fa f862 bl 6d54 - cc90: f7fe be72 b.w b978 + cd50: f04f 0800 mov.w r8, #0 + cd54: 4428 add r0, r5 + cd56: f7fa f835 bl 6dc4 + cd5a: f7fe be78 b.w ba4e if(data.byteA < BMC_MAX_PRESETS_PER_BANK){ - cc94: 69fb ldr r3, [r7, #28] - cc96: 2b07 cmp r3, #7 - cc98: f63e ae6c bhi.w b974 + cd5e: 69fb ldr r3, [r7, #28] + cd60: 2b07 cmp r3, #7 + cd62: f63e ae72 bhi.w ba4a strcpy(data.label, "PRESET"); - cc9c: 4a2e ldr r2, [pc, #184] ; (cd58 ) - return preset; - cc9e: f505 5940 add.w r9, r5, #12288 ; 0x3000 + cd66: 4a84 ldr r2, [pc, #528] ; (cf78 ) + cd68: f505 5940 add.w r9, r5, #12288 ; 0x3000 data.value = data.byteA; - cca2: 8bbb ldrh r3, [r7, #28] + cd6c: 8bbb ldrh r3, [r7, #28] data.allowMeter = true; - cca4: 2601 movs r6, #1 + cd6e: 2601 movs r6, #1 strcpy(data.label, "PRESET"); - cca6: 6810 ldr r0, [r2, #0] - cca8: 8891 ldrh r1, [r2, #4] - ccaa: 7992 ldrb r2, [r2, #6] + cd70: 6810 ldr r0, [r2, #0] + cd72: 8891 ldrh r1, [r2, #4] + cd74: 7992 ldrb r2, [r2, #6] data.value = data.byteA; - ccac: 8163 strh r3, [r4, #10] + cd76: 8163 strh r3, [r4, #10] strcpy(data.label, "PRESET"); - ccae: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 - ccb2: f8d9 21fc ldr.w r2, [r9, #508] ; 0x1fc - ccb6: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - ccba: f8a7 10c3 strh.w r1, [r7, #195] ; 0xc3 + cd78: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 + cd7c: f8d9 221c ldr.w r2, [r9, #540] ; 0x21c + cd80: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + cd84: f8a7 10c3 strh.w r1, [r7, #195] ; 0xc3 data.valueSelected = presets.get(); - ccbe: 7811 ldrb r1, [r2, #0] + cd88: 7811 ldrb r1, [r2, #0] return bitRead(settings, 4) && additionalCheck; - ccc0: 78e0 ldrb r0, [r4, #3] + cd8a: 78e0 ldrb r0, [r4, #3] data.highlight = (data.valueSelected == data.byteA); - ccc2: eba3 0c01 sub.w ip, r3, r1 + cd8c: eba3 0c01 sub.w ip, r3, r1 data.allowMeter = true; - ccc6: 75e6 strb r6, [r4, #23] + cd90: 75e6 strb r6, [r4, #23] data.valueSelected = presets.get(); - ccc8: 81a1 strh r1, [r4, #12] + cd92: 81a1 strh r1, [r4, #12] data.highlight = (data.valueSelected == data.byteA); - ccca: f1dc 0300 rsbs r3, ip, #0 - ccce: eb43 030c adc.w r3, r3, ip - ccd2: 7523 strb r3, [r4, #20] - ccd4: 06c3 lsls r3, r0, #27 - ccd6: d50a bpl.n ccee + cd94: f1dc 0300 rsbs r3, ip, #0 + cd98: eb43 030c adc.w r3, r3, ip + cd9c: 7523 strb r3, [r4, #20] + cd9e: 06c3 lsls r3, r0, #27 + cda0: d50a bpl.n cdb8 if(data.byteC == 1){ - ccd8: 693b ldr r3, [r7, #16] - ccda: 42b3 cmp r3, r6 - ccdc: f004 8382 beq.w 113e4 + cda2: 693b ldr r3, [r7, #16] + cda4: 42b3 cmp r3, r6 + cda6: f004 8267 beq.w 11278 data.value = presets.get(); - cce0: 7813 ldrb r3, [r2, #0] + cdaa: 7813 ldrb r3, [r2, #0] return bank; - cce2: f8d9 21f8 ldr.w r2, [r9, #504] ; 0x1f8 - cce6: 8163 strh r3, [r4, #10] + cdac: f8d9 2218 ldr.w r2, [r9, #536] ; 0x218 + cdb0: 8163 strh r3, [r4, #10] data.valueSelected = data.value; - cce8: 81a3 strh r3, [r4, #12] - ccea: 7813 ldrb r3, [r2, #0] + cdb2: 81a3 strh r3, [r4, #12] + cdb4: 7813 ldrb r3, [r2, #0] data.byteD = presets.getBank(); - ccec: 7263 strb r3, [r4, #9] + cdb6: 7263 strb r3, [r4, #9] presets.getName(data.value, data.str); - ccee: f243 16ec movw r6, #12780 ; 0x31ec - ccf2: f107 026d add.w r2, r7, #109 ; 0x6d - ccf6: 8961 ldrh r1, [r4, #10] + cdb8: f243 260c movw r6, #12812 ; 0x320c + cdbc: f107 026d add.w r2, r7, #109 ; 0x6d + cdc0: 8961 ldrh r1, [r4, #10] return BMC_OFF_LED_EVENT; - ccf8: f04f 0800 mov.w r8, #0 + cdc2: f04f 0800 mov.w r8, #0 presets.getName(data.value, data.str); - ccfc: 442e add r6, r5 - ccfe: 4630 mov r0, r6 - cd00: f7fb f890 bl 7e24 + cdc6: 442e add r6, r5 + cdc8: 4630 mov r0, r6 + cdca: f7fa fffb bl 7dc4 presets.getName(data.valueSelected, data.strSelected); - cd04: f107 0296 add.w r2, r7, #150 ; 0x96 - cd08: 89a1 ldrh r1, [r4, #12] - cd0a: 4630 mov r0, r6 - cd0c: f7fb f88a bl 7e24 + cdce: f107 0296 add.w r2, r7, #150 ; 0x96 + cdd2: 89a1 ldrh r1, [r4, #12] + cdd4: 4630 mov r0, r6 + cdd6: f7fa fff5 bl 7dc4 strcpy(data.format, "P %01u"); - cd10: 4a12 ldr r2, [pc, #72] ; (cd5c ) + cdda: 4a68 ldr r2, [pc, #416] ; (cf7c ) display.renderBlock(data); - cd12: f643 3638 movw r6, #15160 ; 0x3b38 + cddc: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.format, "P %01u"); - cd16: e892 0003 ldmia.w r2, {r0, r1} + cde0: e892 0003 ldmia.w r2, {r0, r1} data.digits = 1; - cd1a: 2201 movs r2, #1 + cde4: 2201 movs r2, #1 display.renderBlock(data); - cd1c: 442e add r6, r5 + cde6: 442e add r6, r5 strcpy(data.format, "P %01u"); - cd1e: f8c7 00e0 str.w r0, [r7, #224] ; 0xe0 - cd22: 0c08 lsrs r0, r1, #16 + cde8: f8c7 00e0 str.w r0, [r7, #224] ; 0xe0 + cdec: 0c08 lsrs r0, r1, #16 data.digits = 1; - cd24: f884 209c strb.w r2, [r4, #156] ; 0x9c + cdee: f884 209c strb.w r2, [r4, #156] ; 0x9c display.renderBlock(data); - cd28: 2295 movs r2, #149 ; 0x95 + cdf2: 2295 movs r2, #149 ; 0x95 strcpy(data.format, "P %01u"); - cd2a: f8a7 10e4 strh.w r1, [r7, #228] ; 0xe4 + cdf4: f8a7 10e4 strh.w r1, [r7, #228] ; 0xe4 display.renderBlock(data); - cd2e: f107 0160 add.w r1, r7, #96 ; 0x60 + cdf8: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.format, "P %01u"); - cd32: f887 00e6 strb.w r0, [r7, #230] ; 0xe6 + cdfc: f887 00e6 strb.w r0, [r7, #230] ; 0xe6 display.renderBlock(data); - cd36: 4668 mov r0, sp - cd38: f01d fce6 bl 2a708 - cd3c: 4630 mov r0, r6 - cd3e: e894 000e ldmia.w r4, {r1, r2, r3} - cd42: f7fd fe4b bl a9dc - cd46: f7fe be17 b.w b978 - cd4a: bf00 nop - cd4c: 20001fc8 .word 0x20001fc8 - cd50: 2000203c .word 0x2000203c - cd54: 20004ba8 .word 0x20004ba8 - cd58: 20002000 .word 0x20002000 - cd5c: 2000206c .word 0x2000206c + ce00: 4668 mov r0, sp + ce02: f01d fcf5 bl 2a7f0 + ce06: 4630 mov r0, r6 + ce08: e894 000e ldmia.w r4, {r1, r2, r3} + ce0c: f7fd fdb8 bl a980 + ce10: f7fe be1d b.w ba4e long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max; - cd60: 89e1 ldrh r1, [r4, #14] - cd62: 8a23 ldrh r3, [r4, #16] + ce14: 89e1 ldrh r1, [r4, #14] + ce16: 8a23 ldrh r3, [r4, #16] if (in_range == 0) return out_min + out_range / 2; - cd64: 1a5b subs r3, r3, r1 - cd66: f002 84c1 beq.w f6ec + ce18: 1a5b subs r3, r3, r1 + ce1a: f002 8566 beq.w f8ea return preset; - cd6a: f505 5540 add.w r5, r5, #12288 ; 0x3000 + ce1e: f505 5540 add.w r5, r5, #12288 ; 0x3000 num += in_range / 2; - cd6e: eb03 78d3 add.w r8, r3, r3, lsr #31 + ce22: eb03 78d3 add.w r8, r3, r3, lsr #31 long num = (x - in_min) * out_range; - cd72: 2064 movs r0, #100 ; 0x64 - cd74: f8d5 21fc ldr.w r2, [r5, #508] ; 0x1fc + ce26: 2064 movs r0, #100 ; 0x64 + ce28: f8d5 221c ldr.w r2, [r5, #540] ; 0x21c num += in_range / 2; - cd78: ea4f 0868 mov.w r8, r8, asr #1 + ce2c: ea4f 0868 mov.w r8, r8, asr #1 long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max; - cd7c: 7812 ldrb r2, [r2, #0] + ce30: 7812 ldrb r2, [r2, #0] long num = (x - in_min) * out_range; - cd7e: 1a52 subs r2, r2, r1 + ce32: 1a52 subs r2, r2, r1 num += in_range / 2; - cd80: fb00 8802 mla r8, r0, r2, r8 + ce34: fb00 8802 mla r8, r0, r2, r8 if (in_range * num < 0) return result - 1; - cd84: fb08 f203 mul.w r2, r8, r3 - cd88: 2a00 cmp r2, #0 + ce38: fb08 f203 mul.w r2, r8, r3 + ce3c: 2a00 cmp r2, #0 long result = num / in_range + out_min; - cd8a: fb98 f8f3 sdiv r8, r8, r3 + ce3e: fb98 f8f3 sdiv r8, r8, r3 if (in_range * num < 0) return result - 1; - cd8e: f2c2 85bc blt.w f90a + ce42: f2c2 85fd blt.w fa40 return map(presets.get(), data.min, data.max, 0, 100); - cd92: fa5f f888 uxtb.w r8, r8 - cd96: f7fe bdef b.w b978 + ce46: fa5f f888 uxtb.w r8, r8 + ce4a: f7fe be00 b.w ba4e strcpy(data.label, "BANK"); - cd9a: 4bc5 ldr r3, [pc, #788] ; (d0b0 ) + ce4e: 4b4c ldr r3, [pc, #304] ; (cf80 ) return bank; - cd9c: f505 5240 add.w r2, r5, #12288 ; 0x3000 + ce50: f505 5240 add.w r2, r5, #12288 ; 0x3000 data.allowMeter = true; - cda0: f04f 0801 mov.w r8, #1 + ce54: f04f 0801 mov.w r8, #1 BMCTools::getBankLetter(t_bank, str); - cda4: f107 016d add.w r1, r7, #109 ; 0x6d + ce58: f107 016d add.w r1, r7, #109 ; 0x6d strcpy(data.label, "BANK"); - cda8: 6818 ldr r0, [r3, #0] + ce5c: 6818 ldr r0, [r3, #0] display.renderBlock(data); - cdaa: f643 3638 movw r6, #15160 ; 0x3b38 + ce5e: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.label, "BANK"); - cdae: 791b ldrb r3, [r3, #4] - cdb0: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + ce62: 791b ldrb r3, [r3, #4] + ce64: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - cdb4: 442e add r6, r5 + ce68: 442e add r6, r5 data.value = data.byteA; - cdb6: 69f8 ldr r0, [r7, #28] + ce6a: 69f8 ldr r0, [r7, #28] strcpy(data.label, "BANK"); - cdb8: f887 30c3 strb.w r3, [r7, #195] ; 0xc3 + ce6c: f887 30c3 strb.w r3, [r7, #195] ; 0xc3 return bank; - cdbc: f8d2 21f8 ldr.w r2, [r2, #504] ; 0x1f8 + ce70: f8d2 2218 ldr.w r2, [r2, #536] ; 0x218 data.value = data.byteA; - cdc0: b283 uxth r3, r0 - cdc2: 8163 strh r3, [r4, #10] + ce74: b283 uxth r3, r0 + ce76: 8163 strh r3, [r4, #10] data.valueSelected = presets.getBank(); - cdc4: 7812 ldrb r2, [r2, #0] + ce78: 7812 ldrb r2, [r2, #0] data.allowMeter = true; - cdc6: f884 8017 strb.w r8, [r4, #23] + ce7a: f884 8017 strb.w r8, [r4, #23] data.highlight = (data.valueSelected == data.byteA); - cdca: eba3 0e02 sub.w lr, r3, r2 + ce7e: eba3 0e02 sub.w lr, r3, r2 data.valueSelected = presets.getBank(); - cdce: 81a2 strh r2, [r4, #12] + ce82: 81a2 strh r2, [r4, #12] data.highlight = (data.valueSelected == data.byteA); - cdd0: f1de 0300 rsbs r3, lr, #0 - cdd4: eb43 030e adc.w r3, r3, lr - cdd8: 7523 strb r3, [r4, #20] + ce84: f1de 0300 rsbs r3, lr, #0 + ce88: eb43 030e adc.w r3, r3, lr + ce8c: 7523 strb r3, [r4, #20] BMCTools::getBankLetter(t_bank, str); - cdda: f7fa fdab bl 7934 - cdde: f107 0196 add.w r1, r7, #150 ; 0x96 - cde2: 7b20 ldrb r0, [r4, #12] - cde4: f7fa fda6 bl 7934 + ce8e: f7fa fd21 bl 78d4 + ce92: f107 0196 add.w r1, r7, #150 ; 0x96 + ce96: 7b20 ldrb r0, [r4, #12] + ce98: f7fa fd1c bl 78d4 strcpy(data.format, "Bk %01u"); - cde8: 49b2 ldr r1, [pc, #712] ; (d0b4 ) - cdea: f107 03e0 add.w r3, r7, #224 ; 0xe0 + ce9c: 4939 ldr r1, [pc, #228] ; (cf84 ) + ce9e: f107 03e0 add.w r3, r7, #224 ; 0xe0 display.renderBlock(data); - cdee: 2295 movs r2, #149 ; 0x95 + cea2: 2295 movs r2, #149 ; 0x95 data.digits = 1; - cdf0: f884 809c strb.w r8, [r4, #156] ; 0x9c + cea4: f884 809c strb.w r8, [r4, #156] ; 0x9c return BMC_OFF_LED_EVENT; - cdf4: f04f 0800 mov.w r8, #0 + cea8: f04f 0800 mov.w r8, #0 strcpy(data.format, "Bk %01u"); - cdf8: c903 ldmia r1, {r0, r1} - cdfa: e883 0003 stmia.w r3, {r0, r1} + ceac: c903 ldmia r1, {r0, r1} + ceae: e883 0003 stmia.w r3, {r0, r1} display.renderBlock(data); - cdfe: f107 0160 add.w r1, r7, #96 ; 0x60 - ce02: 4668 mov r0, sp - ce04: f01d fc80 bl 2a708 - ce08: 4630 mov r0, r6 - ce0a: e894 000e ldmia.w r4, {r1, r2, r3} - ce0e: f7fd fde5 bl a9dc - ce12: f7fe bdb1 b.w b978 + ceb2: f107 0160 add.w r1, r7, #96 ; 0x60 + ceb6: 4668 mov r0, sp + ceb8: f01d fc9a bl 2a7f0 + cebc: 4630 mov r0, r6 + cebe: e894 000e ldmia.w r4, {r1, r2, r3} + cec2: f7fd fd5d bl a980 + cec6: f7fe bdc2 b.w ba4e return bank; - ce16: f505 5540 add.w r5, r5, #12288 ; 0x3000 + ceca: f505 5540 add.w r5, r5, #12288 ; 0x3000 num += in_range / 2; - ce1a: f04f 0864 mov.w r8, #100 ; 0x64 - ce1e: 2203 movs r2, #3 + cece: f04f 0864 mov.w r8, #100 ; 0x64 + ced2: 2203 movs r2, #3 long result = num / in_range + out_min; - ce20: 2307 movs r3, #7 - ce22: f8d5 11f8 ldr.w r1, [r5, #504] ; 0x1f8 + ced4: 2307 movs r3, #7 + ced6: f8d5 1218 ldr.w r1, [r5, #536] ; 0x218 num += in_range / 2; - ce26: 7809 ldrb r1, [r1, #0] - ce28: fb18 2801 smlabb r8, r8, r1, r2 + ceda: 7809 ldrb r1, [r1, #0] + cedc: fb18 2801 smlabb r8, r8, r1, r2 long result = num / in_range + out_min; - ce2c: fbb8 f8f3 udiv r8, r8, r3 + cee0: fbb8 f8f3 udiv r8, r8, r3 return map(presets.getBank(), 0, BMC_MAX_PRESET_BANKS-1, 0, 100); - ce30: fa5f f888 uxtb.w r8, r8 - ce34: f7fe bda0 b.w b978 + cee4: fa5f f888 uxtb.w r8, r8 + cee8: f7fe bdb1 b.w ba4e + switch(data.byteA){ + ceec: 69fb ldr r3, [r7, #28] + ceee: 2b08 cmp r3, #8 + cef0: f002 85bb beq.w fa6a + cef4: f201 8601 bhi.w eafa + cef8: 2b01 cmp r3, #1 + cefa: f63e ae6b bhi.w bbd4 + num += in_range / 2; + cefe: 6afa ldr r2, [r7, #44] ; 0x2c + cf00: 233f movs r3, #63 ; 0x3f + long result = num / in_range + out_min; + cf02: 217f movs r1, #127 ; 0x7f + if(tExpression==255){ + cf04: f505 5940 add.w r9, r5, #12288 ; 0x3000 + num += in_range / 2; + cf08: eb03 1302 add.w r3, r3, r2, lsl #4 + cf0c: f899 27cc ldrb.w r2, [r9, #1996] ; 0x7cc + long result = num / in_range + out_min; + cf10: fbb3 f3f1 udiv r3, r3, r1 + cf14: 2aff cmp r2, #255 ; 0xff + value = map(value, 0, 127, 0, 16); + cf16: b2dc uxtb r4, r3 + if(tExpression==255){ + cf18: f004 81a8 beq.w 1126c + if(value!=tExpression){ + cf1c: 4294 cmp r4, r2 + cf1e: f43e ad94 beq.w ba4a + cf22: f899 37bd ldrb.w r3, [r9, #1981] ; 0x7bd + if(up){ + cf26: f244 818e bls.w 11246 + if(isSyncEnabled()){ + cf2a: 07da lsls r2, r3, #31 + cf2c: f104 81a9 bmi.w 11282 + return BMC_OFF_LED_EVENT; + cf30: f04f 0800 mov.w r8, #0 + tExpression = value; + cf34: f889 47cc strb.w r4, [r9, #1996] ; 0x7cc + cf38: f7fe bd89 b.w ba4e + if(data.byteA>=BMC_BEATBUDDY_CMD_TRANS_PART_1 && data.byteA<=BMC_BEATBUDDY_CMD_TRANS_PART_125){ + cf3c: 69fb ldr r3, [r7, #28] + cf3e: 3b65 subs r3, #101 ; 0x65 + cf40: 2b7c cmp r3, #124 ; 0x7c + cf42: f242 82f8 bls.w f536 + switch(data.byteA){ + cf46: 69fb ldr r3, [r7, #28] + cf48: 2b01 cmp r3, #1 + cf4a: f202 81d5 bhi.w f2f8 + return scroll.amount; + cf4e: f894 10a0 ldrb.w r1, [r4, #160] ; 0xa0 + return BMC_OFF_LED_EVENT; + cf52: f04f 0800 mov.w r8, #0 + sync.beatBuddy.tempoControl(data.scrollAmount(), data.scrollDirection()); + cf56: f243 70b0 movw r0, #14256 ; 0x37b0 + cf5a: f894 209e ldrb.w r2, [r4, #158] ; 0x9e + cf5e: ebb1 0108 subs.w r1, r1, r8 + cf62: 4428 add r0, r5 + cf64: bf18 it ne + cf66: 2101 movne r1, #1 + cf68: f7fc fdac bl 9ac4 + break; + cf6c: f7fe bd6f b.w ba4e + cf70: 2000203c .word 0x2000203c + cf74: 20004c68 .word 0x20004c68 + cf78: 20002000 .word 0x20002000 + cf7c: 2000206c .word 0x2000206c + cf80: 20002074 .word 0x20002074 + cf84: 2000207c .word 0x2000207c if(data.byteA>=BMC_BEATBUDDY_CMD_TRANS_PART_1 && data.byteA<=BMC_BEATBUDDY_CMD_TRANS_PART_125){ - ce38: 69fb ldr r3, [r7, #28] - ce3a: f1a3 0265 sub.w r2, r3, #101 ; 0x65 - ce3e: b2d6 uxtb r6, r2 - ce40: 2e7c cmp r6, #124 ; 0x7c - ce42: f202 8457 bhi.w f6f4 - ce46: f505 5140 add.w r1, r5, #12288 ; 0x3000 + cf88: 69fb ldr r3, [r7, #28] + cf8a: f1a3 0265 sub.w r2, r3, #101 ; 0x65 + cf8e: b2d6 uxtb r6, r2 + cf90: 2e7c cmp r6, #124 ; 0x7c + cf92: f202 8367 bhi.w f664 + cf96: f505 5140 add.w r1, r5, #12288 ; 0x3000 data.value = data.byteA-BMC_BEATBUDDY_CMD_TRANS_PART_1; - ce4a: b292 uxth r2, r2 - ce4c: f891 379d ldrb.w r3, [r1, #1949] ; 0x79d - ce50: 8162 strh r2, [r4, #10] + cf9a: b292 uxth r2, r2 + cf9c: f891 37bd ldrb.w r3, [r1, #1981] ; 0x7bd + cfa0: 8162 strh r2, [r4, #10] return isSyncEnabled() ? songPart : 0; - ce52: 07d8 lsls r0, r3, #31 - ce54: d508 bpl.n ce68 - ce56: f891 17aa ldrb.w r1, [r1, #1962] ; 0x7aa - ce5a: f3c3 0080 ubfx r0, r3, #2, #1 + cfa2: 07d8 lsls r0, r3, #31 + cfa4: d508 bpl.n cfb8 + cfa6: f891 17ca ldrb.w r1, [r1, #1994] ; 0x7ca + cfaa: f3c3 0080 ubfx r0, r3, #2, #1 return isSyncEnabled() && flags.read(BMC_BEATBUDDY_FLAG_PLAYING); - ce5e: 075b lsls r3, r3, #29 + cfae: 075b lsls r3, r3, #29 data.valueSelected = sync.beatBuddy.getSongPart(); - ce60: 81a1 strh r1, [r4, #12] - ce62: d501 bpl.n ce68 + cfb0: 81a1 strh r1, [r4, #12] + cfb2: d501 bpl.n cfb8 return isPlaying() && (value == songPart); - ce64: 428e cmp r6, r1 - ce66: d000 beq.n ce6a - ce68: 2000 movs r0, #0 + cfb4: 428e cmp r6, r1 + cfb6: d000 beq.n cfba + cfb8: 2000 movs r0, #0 strcpy(data.format, "PT %03u"); - ce6a: 4993 ldr r1, [pc, #588] ; (d0b8 ) - ce6c: f107 03e0 add.w r3, r7, #224 ; 0xe0 + cfba: 49d1 ldr r1, [pc, #836] ; (d300 ) + cfbc: f107 03e0 add.w r3, r7, #224 ; 0xe0 data.highlight = sync.beatBuddy.isSongPart(data.value); - ce70: 7520 strb r0, [r4, #20] + cfc0: 7520 strb r0, [r4, #20] data.allowMeter = true; - ce72: 2601 movs r6, #1 + cfc2: 2601 movs r6, #1 strcpy(data.format, "PT %03u"); - ce74: c903 ldmia r1, {r0, r1} + cfc4: c903 ldmia r1, {r0, r1} data.allowMeter = true; - ce76: 75e6 strb r6, [r4, #23] + cfc6: 75e6 strb r6, [r4, #23] strcpy(data.format, "PT %03u"); - ce78: e883 0003 stmia.w r3, {r0, r1} + cfc8: e883 0003 stmia.w r3, {r0, r1} data.digits = 3; - ce7c: 2303 movs r3, #3 + cfcc: 2303 movs r3, #3 sprintf(data.str, "Part %03u", data.value); - ce7e: 498f ldr r1, [pc, #572] ; (d0bc ) - ce80: f107 006d add.w r0, r7, #109 ; 0x6d + cfce: 49cd ldr r1, [pc, #820] ; (d304 ) + cfd0: f107 006d add.w r0, r7, #109 ; 0x6d data.digits = 3; - ce84: f884 309c strb.w r3, [r4, #156] ; 0x9c + cfd4: f884 309c strb.w r3, [r4, #156] ; 0x9c sprintf(data.str, "Part %03u", data.value); - ce88: f021 f980 bl 2e18c + cfd8: f021 f94c bl 2e274 sprintf(data.strSelected, "Part %03u", data.valueSelected); - ce8c: 89a2 ldrh r2, [r4, #12] - ce8e: f107 0096 add.w r0, r7, #150 ; 0x96 - ce92: 498a ldr r1, [pc, #552] ; (d0bc ) - ce94: f021 f97a bl 2e18c + cfdc: 89a2 ldrh r2, [r4, #12] + cfde: f107 0096 add.w r0, r7, #150 ; 0x96 + cfe2: 49c8 ldr r1, [pc, #800] ; (d304 ) + cfe4: f021 f946 bl 2e274 bitWrite(settings, 2, 0); - ce98: 78e3 ldrb r3, [r4, #3] - ce9a: f023 0304 bic.w r3, r3, #4 + cfe8: 78e3 ldrb r3, [r4, #3] + cfea: f023 0304 bic.w r3, r3, #4 bitWrite(settings, 3, 1); - ce9e: f043 0308 orr.w r3, r3, #8 - cea2: 70e3 strb r3, [r4, #3] + cfee: f043 0308 orr.w r3, r3, #8 + cff2: 70e3 strb r3, [r4, #3] strcpy(data.label, "BEATBUDDY"); - cea4: 4b86 ldr r3, [pc, #536] ; (d0c0 ) + cff4: 4bc4 ldr r3, [pc, #784] ; (d308 ) display.renderBlock(data); - cea6: f643 3638 movw r6, #15160 ; 0x3b38 - ceaa: 2295 movs r2, #149 ; 0x95 + cff6: f643 3658 movw r6, #15192 ; 0x3b58 + cffa: 2295 movs r2, #149 ; 0x95 return BMC_OFF_LED_EVENT; - ceac: f04f 0800 mov.w r8, #0 + cffc: f04f 0800 mov.w r8, #0 strcpy(data.label, "BEATBUDDY"); - ceb0: cb03 ldmia r3!, {r0, r1} - ceb2: 881b ldrh r3, [r3, #0] - ceb4: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d000: cb03 ldmia r3!, {r0, r1} + d002: 881b ldrh r3, [r3, #0] + d004: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - ceb8: 4668 mov r0, sp + d008: 4668 mov r0, sp strcpy(data.label, "BEATBUDDY"); - ceba: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 + d00a: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 display.renderBlock(data); - cebe: f107 0160 add.w r1, r7, #96 ; 0x60 + d00e: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.label, "BEATBUDDY"); - cec2: f8a7 30c7 strh.w r3, [r7, #199] ; 0xc7 + d012: f8a7 30c7 strh.w r3, [r7, #199] ; 0xc7 display.renderBlock(data); - cec6: f01d fc1f bl 2a708 - ceca: 1970 adds r0, r6, r5 - cecc: e894 000e ldmia.w r4, {r1, r2, r3} - ced0: f7fd fd84 bl a9dc - ced4: f7fe bd50 b.w b978 - switch(data.byteA){ - ced8: 69fb ldr r3, [r7, #28] - ceda: 2b08 cmp r3, #8 - cedc: f002 856a beq.w f9b4 - cee0: f201 84d5 bhi.w e88e - cee4: 2b01 cmp r3, #1 - cee6: f63e ae12 bhi.w bb0e - num += in_range / 2; - ceea: 6afa ldr r2, [r7, #44] ; 0x2c - ceec: 233f movs r3, #63 ; 0x3f - long result = num / in_range + out_min; - ceee: 217f movs r1, #127 ; 0x7f - if(tExpression==255){ - cef0: f505 5940 add.w r9, r5, #12288 ; 0x3000 - num += in_range / 2; - cef4: eb03 1302 add.w r3, r3, r2, lsl #4 - cef8: f899 27ac ldrb.w r2, [r9, #1964] ; 0x7ac - long result = num / in_range + out_min; - cefc: fbb3 f3f1 udiv r3, r3, r1 - cf00: 2aff cmp r2, #255 ; 0xff - value = map(value, 0, 127, 0, 16); - cf02: b2dc uxtb r4, r3 - if(tExpression==255){ - cf04: f004 80bf beq.w 11086 - if(value!=tExpression){ - cf08: 4294 cmp r4, r2 - cf0a: f43e ad33 beq.w b974 - cf0e: f899 379d ldrb.w r3, [r9, #1949] ; 0x79d - if(up){ - cf12: f244 80a5 bls.w 11060 - if(isSyncEnabled()){ - cf16: 07da lsls r2, r3, #31 - cf18: f103 859c bmi.w 10a54 - return BMC_OFF_LED_EVENT; - cf1c: f04f 0800 mov.w r8, #0 - tExpression = value; - cf20: f889 47ac strb.w r4, [r9, #1964] ; 0x7ac - cf24: f7fe bd28 b.w b978 - if(data.byteA>=BMC_BEATBUDDY_CMD_TRANS_PART_1 && data.byteA<=BMC_BEATBUDDY_CMD_TRANS_PART_125){ - cf28: 69fb ldr r3, [r7, #28] - cf2a: 3b65 subs r3, #101 ; 0x65 - cf2c: 2b7c cmp r3, #124 ; 0x7c - cf2e: f242 82b7 bls.w f4a0 - switch(data.byteA){ - cf32: 69fb ldr r3, [r7, #28] - cf34: 2b01 cmp r3, #1 - cf36: f202 81a8 bhi.w f28a - return scroll.amount; - cf3a: f894 10a0 ldrb.w r1, [r4, #160] ; 0xa0 - return BMC_OFF_LED_EVENT; - cf3e: f04f 0800 mov.w r8, #0 - sync.beatBuddy.tempoControl(data.scrollAmount(), data.scrollDirection()); - cf42: f243 7090 movw r0, #14224 ; 0x3790 - cf46: f894 209e ldrb.w r2, [r4, #158] ; 0x9e - cf4a: ebb1 0108 subs.w r1, r1, r8 - cf4e: 4428 add r0, r5 - cf50: bf18 it ne - cf52: 2101 movne r1, #1 - cf54: f7fc fde6 bl 9b24 - break; - cf58: f7fe bd0e b.w b978 + d016: f01d fbeb bl 2a7f0 + d01a: 1970 adds r0, r6, r5 + d01c: e894 000e ldmia.w r4, {r1, r2, r3} + d020: f7fd fcae bl a980 + d024: f7fe bd13 b.w ba4e if(data.byteA>=BMC_BEATBUDDY_CMD_TRANS_PART_1 && data.byteA<=BMC_BEATBUDDY_CMD_TRANS_PART_125){ - cf5c: 69fb ldr r3, [r7, #28] - cf5e: 3b65 subs r3, #101 ; 0x65 - cf60: b2db uxtb r3, r3 - cf62: 2b7c cmp r3, #124 ; 0x7c - cf64: f202 8387 bhi.w f676 - cf68: f505 5540 add.w r5, r5, #12288 ; 0x3000 - cf6c: f895 279d ldrb.w r2, [r5, #1949] ; 0x79d + d028: 69fb ldr r3, [r7, #28] + d02a: 3b65 subs r3, #101 ; 0x65 + d02c: b2db uxtb r3, r3 + d02e: 2b7c cmp r3, #124 ; 0x7c + d030: f202 8230 bhi.w f494 + d034: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d038: f895 27bd ldrb.w r2, [r5, #1981] ; 0x7bd return isSyncEnabled() && flags.read(BMC_BEATBUDDY_FLAG_PLAYING); - cf70: f012 0801 ands.w r8, r2, #1 - cf74: f43e ad00 beq.w b978 - cf78: 0754 lsls r4, r2, #29 - cf7a: f3c2 0880 ubfx r8, r2, #2, #1 - cf7e: f57e acfb bpl.w b978 + d03c: f012 0801 ands.w r8, r2, #1 + d040: f43e ad05 beq.w ba4e + d044: 0754 lsls r4, r2, #29 + d046: f3c2 0880 ubfx r8, r2, #2, #1 + d04a: f57e ad00 bpl.w ba4e return isPlaying() && (value == songPart); - cf82: f895 87aa ldrb.w r8, [r5, #1962] ; 0x7aa - cf86: eba8 0003 sub.w r0, r8, r3 - cf8a: f1d0 0800 rsbs r8, r0, #0 - cf8e: eb48 0800 adc.w r8, r8, r0 + d04e: f895 87ca ldrb.w r8, [r5, #1994] ; 0x7ca + d052: eba8 0003 sub.w r0, r8, r3 + d056: f1d0 0800 rsbs r8, r0, #0 + d05a: eb48 0800 adc.w r8, r8, r0 return sync.beatBuddy.isSongPart(data.byteA-BMC_BEATBUDDY_CMD_TRANS_PART_1); - cf92: f7fe bcf1 b.w b978 + d05e: f7fe bcf6 b.w ba4e sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); - cf96: f505 5240 add.w r2, r5, #12288 ; 0x3000 - cf9a: 494a ldr r1, [pc, #296] ; (d0c4 ) - cf9c: f107 006d add.w r0, r7, #109 ; 0x6d + d062: f505 5240 add.w r2, r5, #12288 ; 0x3000 + d066: 49a9 ldr r1, [pc, #676] ; (d30c ) + d068: f107 006d add.w r0, r7, #109 ; 0x6d display.renderBlock(data); - cfa0: f643 3638 movw r6, #15160 ; 0x3b38 + d06c: f643 3658 movw r6, #15192 ; 0x3b58 sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); - cfa4: f892 3831 ldrb.w r3, [r2, #2097] ; 0x831 + d070: f892 3851 ldrb.w r3, [r2, #2129] ; 0x851 return 1; - cfa8: f04f 0801 mov.w r8, #1 + d074: f04f 0801 mov.w r8, #1 sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); - cfac: f892 2830 ldrb.w r2, [r2, #2096] ; 0x830 + d078: f892 2850 ldrb.w r2, [r2, #2128] ; 0x850 display.renderBlock(data); - cfb0: 442e add r6, r5 + d07c: 442e add r6, r5 sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); - cfb2: f021 f8eb bl 2e18c + d07e: f021 f8f9 bl 2e274 strcpy(data.label, "STOPWATCH"); - cfb6: 4a44 ldr r2, [pc, #272] ; (d0c8 ) + d082: 4aa3 ldr r2, [pc, #652] ; (d310 ) bitWrite(settings, 2, 0); - cfb8: 78e3 ldrb r3, [r4, #3] - cfba: ca03 ldmia r2!, {r0, r1} - cfbc: f023 0304 bic.w r3, r3, #4 - cfc0: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - cfc4: 8810 ldrh r0, [r2, #0] + d084: 78e3 ldrb r3, [r4, #3] + d086: ca03 ldmia r2!, {r0, r1} + d088: f023 0304 bic.w r3, r3, #4 + d08c: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d090: 8810 ldrh r0, [r2, #0] bitWrite(settings, 3, 1); - cfc6: f043 0308 orr.w r3, r3, #8 - cfca: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 + d092: f043 0308 orr.w r3, r3, #8 + d096: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 display.renderBlock(data); - cfce: 2295 movs r2, #149 ; 0x95 - cfd0: f107 0160 add.w r1, r7, #96 ; 0x60 + d09a: 2295 movs r2, #149 ; 0x95 + d09c: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.label, "STOPWATCH"); - cfd4: f8a7 00c7 strh.w r0, [r7, #199] ; 0xc7 + d0a0: f8a7 00c7 strh.w r0, [r7, #199] ; 0xc7 display.renderBlock(data); - cfd8: 4668 mov r0, sp - cfda: 70e3 strb r3, [r4, #3] - cfdc: f01d fb94 bl 2a708 - cfe0: 4630 mov r0, r6 - cfe2: e894 000e ldmia.w r4, {r1, r2, r3} - cfe6: f7fd fcf9 bl a9dc + d0a4: 4668 mov r0, sp + d0a6: 70e3 strb r3, [r4, #3] + d0a8: f01d fba2 bl 2a7f0 + d0ac: 4630 mov r0, r6 + d0ae: e894 000e ldmia.w r4, {r1, r2, r3} + d0b2: f7fd fc65 bl a980 return 1; - cfea: f7fe bcc5 b.w b978 + d0b6: f7fe bcca b.w ba4e bitWrite(settings, 2, 0); - cfee: 78e1 ldrb r1, [r4, #3] + d0ba: 78e1 ldrb r1, [r4, #3] display.renderBlock(data); - cff0: f643 3638 movw r6, #15160 ; 0x3b38 + d0bc: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.str, "R.T. OUT"); - cff4: 4b35 ldr r3, [pc, #212] ; (d0cc ) + d0c0: 4b94 ldr r3, [pc, #592] ; (d314 ) return 1; - cff6: f04f 0801 mov.w r8, #1 - cffa: f021 0104 bic.w r1, r1, #4 - cffe: f89a 2acc ldrb.w r2, [sl, #2764] ; 0xacc + d0c2: f04f 0801 mov.w r8, #1 + d0c6: f021 0104 bic.w r1, r1, #4 + d0ca: f89a 2acc ldrb.w r2, [sl, #2764] ; 0xacc display.renderBlock(data); - d002: 442e add r6, r5 + d0ce: 442e add r6, r5 bitWrite(settings, 3, 1); - d004: f041 0108 orr.w r1, r1, #8 - d008: f3c2 0280 ubfx r2, r2, #2, #1 - d00c: 70e1 strb r1, [r4, #3] - d00e: 7522 strb r2, [r4, #20] - d010: 2295 movs r2, #149 ; 0x95 + d0d0: f041 0108 orr.w r1, r1, #8 + d0d4: f3c2 0280 ubfx r2, r2, #2, #1 + d0d8: 70e1 strb r1, [r4, #3] + d0da: 7522 strb r2, [r4, #20] + d0dc: 2295 movs r2, #149 ; 0x95 strcpy(data.str, "R.T. OUT"); - d012: cb03 ldmia r3!, {r0, r1} - d014: f8c7 006d str.w r0, [r7, #109] ; 0x6d - d018: 7818 ldrb r0, [r3, #0] + d0de: cb03 ldmia r3!, {r0, r1} + d0e0: f8c7 006d str.w r0, [r7, #109] ; 0x6d + d0e4: 7818 ldrb r0, [r3, #0] strcpy(data.label, "STATUS"); - d01a: 4b2d ldr r3, [pc, #180] ; (d0d0 ) + d0e6: 4b8c ldr r3, [pc, #560] ; (d318 ) strcpy(data.str, "R.T. OUT"); - d01c: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - d020: f887 0075 strb.w r0, [r7, #117] ; 0x75 + d0e8: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + d0ec: f887 0075 strb.w r0, [r7, #117] ; 0x75 strcpy(data.label, "STATUS"); - d024: 8899 ldrh r1, [r3, #4] - d026: 6818 ldr r0, [r3, #0] - d028: 799b ldrb r3, [r3, #6] - d02a: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d0f0: 8899 ldrh r1, [r3, #4] + d0f2: 6818 ldr r0, [r3, #0] + d0f4: 799b ldrb r3, [r3, #6] + d0f6: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - d02e: 4668 mov r0, sp + d0fa: 4668 mov r0, sp strcpy(data.label, "STATUS"); - d030: f8a7 10c3 strh.w r1, [r7, #195] ; 0xc3 + d0fc: f8a7 10c3 strh.w r1, [r7, #195] ; 0xc3 display.renderBlock(data); - d034: f107 0160 add.w r1, r7, #96 ; 0x60 + d100: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.label, "STATUS"); - d038: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 + d104: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 display.renderBlock(data); - d03c: f01d fb64 bl 2a708 - d040: 4630 mov r0, r6 - d042: e894 000e ldmia.w r4, {r1, r2, r3} - d046: f7fd fcc9 bl a9dc + d108: f01d fb72 bl 2a7f0 + d10c: 4630 mov r0, r6 + d10e: e894 000e ldmia.w r4, {r1, r2, r3} + d112: f7fd fc35 bl a980 return 1; - d04a: f7fe bc95 b.w b978 - d04e: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc + d116: f7fe bc9a b.w ba4e + d11a: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc display.renderBlock(data); - d052: f643 3938 movw r9, #15160 ; 0x3b38 + d11e: f643 3958 movw r9, #15192 ; 0x3b58 strcpy(data.str, "R.T. IN"); - d056: 4e1f ldr r6, [pc, #124] ; (d0d4 ) + d122: 4e7e ldr r6, [pc, #504] ; (d31c ) display.renderBlock(data); - d058: 2295 movs r2, #149 ; 0x95 - d05a: f3c3 0340 ubfx r3, r3, #1, #1 + d124: 2295 movs r2, #149 ; 0x95 + d126: f3c3 0340 ubfx r3, r3, #1, #1 strcpy(data.label, "STATUS"); - d05e: f8df c070 ldr.w ip, [pc, #112] ; d0d0 + d12a: f8df c1ec ldr.w ip, [pc, #492] ; d318 return 1; - d062: f04f 0801 mov.w r8, #1 - d066: 7523 strb r3, [r4, #20] + d12e: f04f 0801 mov.w r8, #1 + d132: 7523 strb r3, [r4, #20] bitWrite(settings, 2, 0); - d068: 78e3 ldrb r3, [r4, #3] - d06a: f023 0304 bic.w r3, r3, #4 + d134: 78e3 ldrb r3, [r4, #3] + d136: f023 0304 bic.w r3, r3, #4 bitWrite(settings, 3, 1); - d06e: f043 0308 orr.w r3, r3, #8 + d13a: f043 0308 orr.w r3, r3, #8 strcpy(data.str, "R.T. IN"); - d072: ce03 ldmia r6!, {r0, r1} - d074: 70e3 strb r3, [r4, #3] + d13e: ce03 ldmia r6!, {r0, r1} + d140: 70e3 strb r3, [r4, #3] strcpy(data.label, "STATUS"); - d076: f8bc 3004 ldrh.w r3, [ip, #4] + d142: f8bc 3004 ldrh.w r3, [ip, #4] strcpy(data.str, "R.T. IN"); - d07a: f8c7 006d str.w r0, [r7, #109] ; 0x6d + d146: f8c7 006d str.w r0, [r7, #109] ; 0x6d strcpy(data.label, "STATUS"); - d07e: f8dc 0000 ldr.w r0, [ip] - d082: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 - d086: f89c 3006 ldrb.w r3, [ip, #6] + d14a: f8dc 0000 ldr.w r0, [ip] + d14e: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 + d152: f89c 3006 ldrb.w r3, [ip, #6] strcpy(data.str, "R.T. IN"); - d08a: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + d156: f8c7 1071 str.w r1, [r7, #113] ; 0x71 display.renderBlock(data); - d08e: f107 0160 add.w r1, r7, #96 ; 0x60 + d15a: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.label, "STATUS"); - d092: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d15e: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - d096: 4668 mov r0, sp + d162: 4668 mov r0, sp strcpy(data.label, "STATUS"); - d098: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 + d164: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 display.renderBlock(data); - d09c: f01d fb34 bl 2a708 - d0a0: eb09 0005 add.w r0, r9, r5 - d0a4: e894 000e ldmia.w r4, {r1, r2, r3} - d0a8: f7fd fc98 bl a9dc + d168: f01d fb42 bl 2a7f0 + d16c: eb09 0005 add.w r0, r9, r5 + d170: e894 000e ldmia.w r4, {r1, r2, r3} + d174: f7fd fc04 bl a980 return 1; - d0ac: f7fe bc64 b.w b978 - d0b0: 20002074 .word 0x20002074 - d0b4: 2000207c .word 0x2000207c - d0b8: 200020e8 .word 0x200020e8 - d0bc: 200020f0 .word 0x200020f0 - d0c0: 20002204 .word 0x20002204 - d0c4: 20001fb0 .word 0x20001fb0 - d0c8: 20001fbc .word 0x20001fbc - d0cc: 20001fa4 .word 0x20001fa4 - d0d0: 20001f74 .word 0x20001f74 - d0d4: 20001f9c .word 0x20001f9c + d178: f7fe bc69 b.w ba4e strcpy(data.str, "A.S. READ"); - d0d8: 4bc8 ldr r3, [pc, #800] ; (d3fc ) + d17c: 4b68 ldr r3, [pc, #416] ; (d320 ) display.renderBlock(data); - d0da: f643 3638 movw r6, #15160 ; 0x3b38 + d17e: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.label, "STATUS"); - d0de: 4ac8 ldr r2, [pc, #800] ; (d400 ) + d182: 4a65 ldr r2, [pc, #404] ; (d318 ) return 1; - d0e0: f04f 0801 mov.w r8, #1 + d184: f04f 0801 mov.w r8, #1 display.renderBlock(data); - d0e4: 442e add r6, r5 + d188: 442e add r6, r5 strcpy(data.str, "A.S. READ"); - d0e6: cb03 ldmia r3!, {r0, r1} - d0e8: 881b ldrh r3, [r3, #0] - d0ea: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - d0ee: f505 5140 add.w r1, r5, #12288 ; 0x3000 - d0f2: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 + d18a: cb03 ldmia r3!, {r0, r1} + d18c: 881b ldrh r3, [r3, #0] + d18e: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + d192: f505 5140 add.w r1, r5, #12288 ; 0x3000 + d196: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 strcpy(data.label, "STATUS"); - d0f6: 8893 ldrh r3, [r2, #4] - d0f8: f8d1 11e4 ldr.w r1, [r1, #484] ; 0x1e4 - d0fc: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 - d100: 7993 ldrb r3, [r2, #6] - d102: 3900 subs r1, #0 + d19a: 8893 ldrh r3, [r2, #4] + d19c: f8d1 1204 ldr.w r1, [r1, #516] ; 0x204 + d1a0: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 + d1a4: 7993 ldrb r3, [r2, #6] + d1a6: 3900 subs r1, #0 strcpy(data.str, "A.S. READ"); - d104: f8c7 006d str.w r0, [r7, #109] ; 0x6d + d1a8: f8c7 006d str.w r0, [r7, #109] ; 0x6d strcpy(data.label, "STATUS"); - d108: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 - d10c: bf18 it ne - d10e: 2101 movne r1, #1 + d1ac: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 + d1b0: bf18 it ne + d1b2: 2101 movne r1, #1 bitWrite(settings, 2, 0); - d110: 78e3 ldrb r3, [r4, #3] - d112: 6810 ldr r0, [r2, #0] + d1b4: 78e3 ldrb r3, [r4, #3] + d1b6: 6810 ldr r0, [r2, #0] display.renderBlock(data); - d114: 2295 movs r2, #149 ; 0x95 - d116: f023 0304 bic.w r3, r3, #4 - d11a: 7521 strb r1, [r4, #20] + d1b8: 2295 movs r2, #149 ; 0x95 + d1ba: f023 0304 bic.w r3, r3, #4 + d1be: 7521 strb r1, [r4, #20] strcpy(data.label, "STATUS"); - d11c: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d1c0: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - d120: f107 0160 add.w r1, r7, #96 ; 0x60 + d1c4: f107 0160 add.w r1, r7, #96 ; 0x60 bitWrite(settings, 3, 1); - d124: f043 0308 orr.w r3, r3, #8 - d128: 4668 mov r0, sp - d12a: 70e3 strb r3, [r4, #3] - d12c: f01d faec bl 2a708 - d130: 4630 mov r0, r6 - d132: e894 000e ldmia.w r4, {r1, r2, r3} - d136: f7fd fc51 bl a9dc + d1c8: f043 0308 orr.w r3, r3, #8 + d1cc: 4668 mov r0, sp + d1ce: 70e3 strb r3, [r4, #3] + d1d0: f01d fb0e bl 2a7f0 + d1d4: 4630 mov r0, r6 + d1d6: e894 000e ldmia.w r4, {r1, r2, r3} + d1da: f7fd fbd1 bl a980 return 1; - d13a: f7fe bc1d b.w b978 + d1de: f7fe bc36 b.w ba4e strcpy(data.str, "A.S. SEND"); - d13e: 4bb1 ldr r3, [pc, #708] ; (d404 ) + d1e2: 4b50 ldr r3, [pc, #320] ; (d324 ) display.renderBlock(data); - d140: f643 3638 movw r6, #15160 ; 0x3b38 + d1e4: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.label, "STATUS"); - d144: 4aae ldr r2, [pc, #696] ; (d400 ) + d1e8: 4a4b ldr r2, [pc, #300] ; (d318 ) return 1; - d146: f04f 0801 mov.w r8, #1 + d1ea: f04f 0801 mov.w r8, #1 display.renderBlock(data); - d14a: 442e add r6, r5 + d1ee: 442e add r6, r5 strcpy(data.str, "A.S. SEND"); - d14c: cb03 ldmia r3!, {r0, r1} - d14e: 881b ldrh r3, [r3, #0] - d150: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - d154: f505 5140 add.w r1, r5, #12288 ; 0x3000 - d158: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 + d1f0: cb03 ldmia r3!, {r0, r1} + d1f2: 881b ldrh r3, [r3, #0] + d1f4: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + d1f8: f505 5140 add.w r1, r5, #12288 ; 0x3000 + d1fc: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 strcpy(data.label, "STATUS"); - d15c: 8893 ldrh r3, [r2, #4] - d15e: f8d1 11dc ldr.w r1, [r1, #476] ; 0x1dc - d162: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 - d166: 7993 ldrb r3, [r2, #6] - d168: 3900 subs r1, #0 + d200: 8893 ldrh r3, [r2, #4] + d202: f8d1 11fc ldr.w r1, [r1, #508] ; 0x1fc + d206: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 + d20a: 7993 ldrb r3, [r2, #6] + d20c: 3900 subs r1, #0 strcpy(data.str, "A.S. SEND"); - d16a: f8c7 006d str.w r0, [r7, #109] ; 0x6d + d20e: f8c7 006d str.w r0, [r7, #109] ; 0x6d strcpy(data.label, "STATUS"); - d16e: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 - d172: bf18 it ne - d174: 2101 movne r1, #1 + d212: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 + d216: bf18 it ne + d218: 2101 movne r1, #1 bitWrite(settings, 2, 0); - d176: 78e3 ldrb r3, [r4, #3] - d178: 6810 ldr r0, [r2, #0] + d21a: 78e3 ldrb r3, [r4, #3] + d21c: 6810 ldr r0, [r2, #0] display.renderBlock(data); - d17a: 2295 movs r2, #149 ; 0x95 - d17c: f023 0304 bic.w r3, r3, #4 - d180: 7521 strb r1, [r4, #20] + d21e: 2295 movs r2, #149 ; 0x95 + d220: f023 0304 bic.w r3, r3, #4 + d224: 7521 strb r1, [r4, #20] strcpy(data.label, "STATUS"); - d182: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d226: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - d186: f107 0160 add.w r1, r7, #96 ; 0x60 + d22a: f107 0160 add.w r1, r7, #96 ; 0x60 bitWrite(settings, 3, 1); - d18a: f043 0308 orr.w r3, r3, #8 - d18e: 4668 mov r0, sp - d190: 70e3 strb r3, [r4, #3] - d192: f01d fab9 bl 2a708 - d196: 4630 mov r0, r6 - d198: e894 000e ldmia.w r4, {r1, r2, r3} - d19c: f7fd fc1e bl a9dc + d22e: f043 0308 orr.w r3, r3, #8 + d232: 4668 mov r0, sp + d234: 70e3 strb r3, [r4, #3] + d236: f01d fadb bl 2a7f0 + d23a: 4630 mov r0, r6 + d23c: e894 000e ldmia.w r4, {r1, r2, r3} + d240: f7fd fb9e bl a980 return 1; - d1a0: f7fe bbea b.w b978 - d1a4: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + d244: f7fe bc03 b.w ba4e + d248: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c display.renderBlock(data); - d1a8: f643 3638 movw r6, #15160 ; 0x3b38 + d24c: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.label, "STATUS"); - d1ac: 4a94 ldr r2, [pc, #592] ; (d400 ) + d250: 4a31 ldr r2, [pc, #196] ; (d318 ) return 1; - d1ae: f04f 0801 mov.w r8, #1 - d1b2: f3c3 1300 ubfx r3, r3, #4, #1 + d252: f04f 0801 mov.w r8, #1 + d256: f3c3 1300 ubfx r3, r3, #4, #1 strcpy(data.str, "BLE"); - d1b6: 4994 ldr r1, [pc, #592] ; (d408 ) + d25a: 4933 ldr r1, [pc, #204] ; (d328 ) display.renderBlock(data); - d1b8: 442e add r6, r5 - d1ba: 7523 strb r3, [r4, #20] + d25c: 442e add r6, r5 + d25e: 7523 strb r3, [r4, #20] bitWrite(settings, 2, 0); - d1bc: 78e3 ldrb r3, [r4, #3] + d260: 78e3 ldrb r3, [r4, #3] strcpy(data.str, "BLE"); - d1be: 6808 ldr r0, [r1, #0] + d262: 6808 ldr r0, [r1, #0] strcpy(data.label, "STATUS"); - d1c0: 8891 ldrh r1, [r2, #4] - d1c2: f023 0304 bic.w r3, r3, #4 + d264: 8891 ldrh r1, [r2, #4] + d266: f023 0304 bic.w r3, r3, #4 strcpy(data.str, "BLE"); - d1c6: f8c7 006d str.w r0, [r7, #109] ; 0x6d + d26a: f8c7 006d str.w r0, [r7, #109] ; 0x6d strcpy(data.label, "STATUS"); - d1ca: f8a7 10c3 strh.w r1, [r7, #195] ; 0xc3 + d26e: f8a7 10c3 strh.w r1, [r7, #195] ; 0xc3 bitWrite(settings, 3, 1); - d1ce: f043 0308 orr.w r3, r3, #8 - d1d2: 6810 ldr r0, [r2, #0] - d1d4: 7991 ldrb r1, [r2, #6] + d272: f043 0308 orr.w r3, r3, #8 + d276: 6810 ldr r0, [r2, #0] + d278: 7991 ldrb r1, [r2, #6] display.renderBlock(data); - d1d6: 2295 movs r2, #149 ; 0x95 + d27a: 2295 movs r2, #149 ; 0x95 strcpy(data.label, "STATUS"); - d1d8: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d27c: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - d1dc: 4668 mov r0, sp + d280: 4668 mov r0, sp strcpy(data.label, "STATUS"); - d1de: f887 10c5 strb.w r1, [r7, #197] ; 0xc5 + d282: f887 10c5 strb.w r1, [r7, #197] ; 0xc5 display.renderBlock(data); - d1e2: f107 0160 add.w r1, r7, #96 ; 0x60 - d1e6: 70e3 strb r3, [r4, #3] - d1e8: f01d fa8e bl 2a708 - d1ec: 4630 mov r0, r6 - d1ee: e894 000e ldmia.w r4, {r1, r2, r3} - d1f2: f7fd fbf3 bl a9dc + d286: f107 0160 add.w r1, r7, #96 ; 0x60 + d28a: 70e3 strb r3, [r4, #3] + d28c: f01d fab0 bl 2a7f0 + d290: 4630 mov r0, r6 + d292: e894 000e ldmia.w r4, {r1, r2, r3} + d296: f7fd fb73 bl a980 return 1; - d1f6: f7fe bbbf b.w b978 - d1fa: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + d29a: f7fe bbd8 b.w ba4e + d29e: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c display.renderBlock(data); - d1fe: f643 3638 movw r6, #15160 ; 0x3b38 + d2a2: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.str, "HOST"); - d202: 4982 ldr r1, [pc, #520] ; (d40c ) + d2a6: 4921 ldr r1, [pc, #132] ; (d32c ) display.renderBlock(data); - d204: 2295 movs r2, #149 ; 0x95 - d206: f3c3 03c0 ubfx r3, r3, #3, #1 + d2a8: 2295 movs r2, #149 ; 0x95 + d2aa: f3c3 03c0 ubfx r3, r3, #3, #1 strcpy(data.label, "STATUS"); - d20a: f8df c1f4 ldr.w ip, [pc, #500] ; d400 + d2ae: f8df c068 ldr.w ip, [pc, #104] ; d318 strcpy(data.str, "HOST"); - d20e: 6808 ldr r0, [r1, #0] + d2b2: 6808 ldr r0, [r1, #0] return 1; - d210: f04f 0801 mov.w r8, #1 - d214: 7523 strb r3, [r4, #20] + d2b4: f04f 0801 mov.w r8, #1 + d2b8: 7523 strb r3, [r4, #20] bitWrite(settings, 2, 0); - d216: 78e3 ldrb r3, [r4, #3] + d2ba: 78e3 ldrb r3, [r4, #3] strcpy(data.str, "HOST"); - d218: f8c7 006d str.w r0, [r7, #109] ; 0x6d - d21c: f023 0304 bic.w r3, r3, #4 + d2bc: f8c7 006d str.w r0, [r7, #109] ; 0x6d + d2c0: f023 0304 bic.w r3, r3, #4 strcpy(data.label, "STATUS"); - d220: f8dc 0000 ldr.w r0, [ip] + d2c4: f8dc 0000 ldr.w r0, [ip] bitWrite(settings, 3, 1); - d224: f043 0308 orr.w r3, r3, #8 - d228: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d2c8: f043 0308 orr.w r3, r3, #8 + d2cc: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - d22c: 4668 mov r0, sp - d22e: 70e3 strb r3, [r4, #3] + d2d0: 4668 mov r0, sp + d2d2: 70e3 strb r3, [r4, #3] strcpy(data.str, "HOST"); - d230: 790b ldrb r3, [r1, #4] + d2d4: 790b ldrb r3, [r1, #4] display.renderBlock(data); - d232: f107 0160 add.w r1, r7, #96 ; 0x60 + d2d6: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.str, "HOST"); - d236: f887 3071 strb.w r3, [r7, #113] ; 0x71 + d2da: f887 3071 strb.w r3, [r7, #113] ; 0x71 strcpy(data.label, "STATUS"); - d23a: f8bc 3004 ldrh.w r3, [ip, #4] - d23e: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 - d242: f89c 3006 ldrb.w r3, [ip, #6] - d246: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 + d2de: f8bc 3004 ldrh.w r3, [ip, #4] + d2e2: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 + d2e6: f89c 3006 ldrb.w r3, [ip, #6] + d2ea: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 display.renderBlock(data); - d24a: f01d fa5d bl 2a708 - d24e: 1970 adds r0, r6, r5 - d250: e894 000e ldmia.w r4, {r1, r2, r3} - d254: f7fd fbc2 bl a9dc + d2ee: f01d fa7f bl 2a7f0 + d2f2: 1970 adds r0, r6, r5 + d2f4: e894 000e ldmia.w r4, {r1, r2, r3} + d2f8: f7fd fb42 bl a980 return 1; - d258: f7fe bb8e b.w b978 - d25c: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + d2fc: f7fe bba7 b.w ba4e + d300: 200020e8 .word 0x200020e8 + d304: 200020f0 .word 0x200020f0 + d308: 20002204 .word 0x20002204 + d30c: 20001fb0 .word 0x20001fb0 + d310: 20001fbc .word 0x20001fbc + d314: 20001fa4 .word 0x20001fa4 + d318: 20001f74 .word 0x20001f74 + d31c: 20001f9c .word 0x20001f9c + d320: 20001f90 .word 0x20001f90 + d324: 20001f84 .word 0x20001f84 + d328: 20001c74 .word 0x20001c74 + d32c: 20001f7c .word 0x20001f7c + d330: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c display.renderBlock(data); - d260: f643 3638 movw r6, #15160 ; 0x3b38 + d334: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.str, "EDITOR"); - d264: 4a6a ldr r2, [pc, #424] ; (d410 ) + d338: 4ad2 ldr r2, [pc, #840] ; (d684 ) return 1; - d266: f04f 0801 mov.w r8, #1 - d26a: f3c3 0380 ubfx r3, r3, #2, #1 + d33a: f04f 0801 mov.w r8, #1 + d33e: f3c3 0380 ubfx r3, r3, #2, #1 display.renderBlock(data); - d26e: 442e add r6, r5 + d342: 442e add r6, r5 strcpy(data.str, "EDITOR"); - d270: 6810 ldr r0, [r2, #0] - d272: 7523 strb r3, [r4, #20] + d344: 6810 ldr r0, [r2, #0] + d346: 7523 strb r3, [r4, #20] bitWrite(settings, 2, 0); - d274: 78e3 ldrb r3, [r4, #3] - d276: 8891 ldrh r1, [r2, #4] - d278: f023 0304 bic.w r3, r3, #4 - d27c: 7992 ldrb r2, [r2, #6] - d27e: f8c7 006d str.w r0, [r7, #109] ; 0x6d + d348: 78e3 ldrb r3, [r4, #3] + d34a: 8891 ldrh r1, [r2, #4] + d34c: f023 0304 bic.w r3, r3, #4 + d350: 7992 ldrb r2, [r2, #6] + d352: f8c7 006d str.w r0, [r7, #109] ; 0x6d bitWrite(settings, 3, 1); - d282: f043 0308 orr.w r3, r3, #8 - d286: f887 2073 strb.w r2, [r7, #115] ; 0x73 - d28a: f8a7 1071 strh.w r1, [r7, #113] ; 0x71 + d356: f043 0308 orr.w r3, r3, #8 + d35a: f887 2073 strb.w r2, [r7, #115] ; 0x73 + d35e: f8a7 1071 strh.w r1, [r7, #113] ; 0x71 display.renderBlock(data); - d28e: f107 0160 add.w r1, r7, #96 ; 0x60 - d292: 70e3 strb r3, [r4, #3] + d362: f107 0160 add.w r1, r7, #96 ; 0x60 + d366: 70e3 strb r3, [r4, #3] strcpy(data.label, "STATUS"); - d294: 4b5a ldr r3, [pc, #360] ; (d400 ) - d296: 6818 ldr r0, [r3, #0] - d298: 889a ldrh r2, [r3, #4] - d29a: 799b ldrb r3, [r3, #6] - d29c: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + d368: 4bc7 ldr r3, [pc, #796] ; (d688 ) + d36a: 6818 ldr r0, [r3, #0] + d36c: 889a ldrh r2, [r3, #4] + d36e: 799b ldrb r3, [r3, #6] + d370: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 display.renderBlock(data); - d2a0: 2295 movs r2, #149 ; 0x95 + d374: 2295 movs r2, #149 ; 0x95 strcpy(data.label, "STATUS"); - d2a2: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d376: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - d2a6: 4668 mov r0, sp + d37a: 4668 mov r0, sp strcpy(data.label, "STATUS"); - d2a8: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 + d37c: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 display.renderBlock(data); - d2ac: f01d fa2c bl 2a708 - d2b0: 4630 mov r0, r6 - d2b2: e894 000e ldmia.w r4, {r1, r2, r3} - d2b6: f7fd fb91 bl a9dc + d380: f01d fa36 bl 2a7f0 + d384: 4630 mov r0, r6 + d386: e894 000e ldmia.w r4, {r1, r2, r3} + d38a: f7fd faf9 bl a980 return 1; - d2ba: f7fe bb5d b.w b978 + d38e: f7fe bb5e b.w ba4e bitWrite(settings, 2, 0); - d2be: 78e3 ldrb r3, [r4, #3] + d392: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - d2c0: f643 3638 movw r6, #15160 ; 0x3b38 + d394: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.str, "BMC"); - d2c4: 4a53 ldr r2, [pc, #332] ; (d414 ) + d398: 4abc ldr r2, [pc, #752] ; (d68c ) display.renderBlock(data); - d2c6: f107 0160 add.w r1, r7, #96 ; 0x60 - d2ca: f023 0304 bic.w r3, r3, #4 - d2ce: 442e add r6, r5 + d39a: f107 0160 add.w r1, r7, #96 ; 0x60 + d39e: f023 0304 bic.w r3, r3, #4 + d3a2: 442e add r6, r5 strcpy(data.str, "BMC"); - d2d0: 6810 ldr r0, [r2, #0] + d3a4: 6810 ldr r0, [r2, #0] display.renderBlock(data); - d2d2: 2295 movs r2, #149 ; 0x95 + d3a6: 2295 movs r2, #149 ; 0x95 bitWrite(settings, 3, 1); - d2d4: f043 0308 orr.w r3, r3, #8 + d3a8: f043 0308 orr.w r3, r3, #8 return 1; - d2d8: f04f 0801 mov.w r8, #1 + d3ac: f04f 0801 mov.w r8, #1 strcpy(data.str, "BMC"); - d2dc: f8c7 006d str.w r0, [r7, #109] ; 0x6d + d3b0: f8c7 006d str.w r0, [r7, #109] ; 0x6d display.renderBlock(data); - d2e0: 4668 mov r0, sp - d2e2: 70e3 strb r3, [r4, #3] - d2e4: f01d fa10 bl 2a708 - d2e8: 4630 mov r0, r6 - d2ea: e894 000e ldmia.w r4, {r1, r2, r3} - d2ee: f7fd fb75 bl a9dc + d3b4: 4668 mov r0, sp + d3b6: 70e3 strb r3, [r4, #3] + d3b8: f01d fa1a bl 2a7f0 + d3bc: 4630 mov r0, r6 + d3be: e894 000e ldmia.w r4, {r1, r2, r3} + d3c2: f7fd fadd bl a980 return 1; - d2f2: f7fe bb41 b.w b978 + d3c6: f7fe bb42 b.w ba4e case 20: strcpy(data.str, "FAS SCENE"); break; - d2f6: 4b48 ldr r3, [pc, #288] ; (d418 ) - d2f8: cb03 ldmia r3!, {r0, r1} - d2fa: 881b ldrh r3, [r3, #0] - d2fc: f8c7 006d str.w r0, [r7, #109] ; 0x6d - d300: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - d304: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 + d3ca: 4bb1 ldr r3, [pc, #708] ; (d690 ) + d3cc: cb03 ldmia r3!, {r0, r1} + d3ce: 881b ldrh r3, [r3, #0] + d3d0: f8c7 006d str.w r0, [r7, #109] ; 0x6d + d3d4: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + d3d8: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 bitWrite(settings, 2, 0); - d308: 78e3 ldrb r3, [r4, #3] + d3dc: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - d30a: f643 3638 movw r6, #15160 ; 0x3b38 + d3de: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.label, "TYPER"); - d30e: 4943 ldr r1, [pc, #268] ; (d41c ) + d3e2: 49ac ldr r1, [pc, #688] ; (d694 ) display.renderBlock(data); - d310: 2295 movs r2, #149 ; 0x95 - d312: f023 0304 bic.w r3, r3, #4 + d3e4: 2295 movs r2, #149 ; 0x95 + d3e6: f023 0304 bic.w r3, r3, #4 return BMC_OFF_LED_EVENT; - d316: f04f 0800 mov.w r8, #0 + d3ea: f04f 0800 mov.w r8, #0 strcpy(data.label, "TYPER"); - d31a: 6808 ldr r0, [r1, #0] + d3ee: 6808 ldr r0, [r1, #0] bitWrite(settings, 3, 1); - d31c: f043 0308 orr.w r3, r3, #8 - d320: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d3f0: f043 0308 orr.w r3, r3, #8 + d3f4: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - d324: 4668 mov r0, sp - d326: 70e3 strb r3, [r4, #3] + d3f8: 4668 mov r0, sp + d3fa: 70e3 strb r3, [r4, #3] strcpy(data.label, "TYPER"); - d328: 888b ldrh r3, [r1, #4] + d3fc: 888b ldrh r3, [r1, #4] display.renderBlock(data); - d32a: f107 0160 add.w r1, r7, #96 ; 0x60 + d3fe: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.label, "TYPER"); - d32e: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 + d402: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 display.renderBlock(data); - d332: f01d f9e9 bl 2a708 - d336: 1970 adds r0, r6, r5 - d338: e894 000e ldmia.w r4, {r1, r2, r3} - d33c: f7fd fb4e bl a9dc - d340: f7fe bb1a b.w b978 - d344: 69fb ldr r3, [r7, #28] - d346: 3b13 subs r3, #19 - d348: 2b04 cmp r3, #4 - d34a: f63e ad7f bhi.w be4c - d34e: f505 5940 add.w r9, r5, #12288 ; 0x3000 - d352: f8b9 335c ldrh.w r3, [r9, #860] ; 0x35c + d406: f01d f9f3 bl 2a7f0 + d40a: 1970 adds r0, r6, r5 + d40c: e894 000e ldmia.w r4, {r1, r2, r3} + d410: f7fd fab6 bl a980 + d414: f7fe bb1b b.w ba4e + d418: 69fb ldr r3, [r7, #28] + d41a: 3b13 subs r3, #19 + d41c: 2b04 cmp r3, #4 + d41e: f63f a815 bhi.w c44c + d422: f505 5940 add.w r9, r5, #12288 ; 0x3000 + d426: f8b9 337c ldrh.w r3, [r9, #892] ; 0x37c if(!flags.read(BMC_FAS3_FLAG_FETCH_LOOPER) && t_value){ - d356: 071a lsls r2, r3, #28 - d358: d407 bmi.n d36a - d35a: 4a31 ldr r2, [pc, #196] ; (d420 ) - d35c: 6812 ldr r2, [r2, #0] + d42a: 071a lsls r2, r3, #28 + d42c: d407 bmi.n d43e + d42e: 4a9a ldr r2, [pc, #616] ; (d698 ) + d430: 6812 ldr r2, [r2, #0] prevTime = (unsigned long) _BMCTiming::get(); - d35e: f8c9 236c str.w r2, [r9, #876] ; 0x36c + d432: f8c9 238c str.w r2, [r9, #908] ; 0x38c interval = value; - d362: f44f 727a mov.w r2, #1000 ; 0x3e8 - d366: f8a9 2368 strh.w r2, [r9, #872] ; 0x368 + d436: f44f 727a mov.w r2, #1000 ; 0x3e8 + d43a: f8a9 2388 strh.w r2, [r9, #904] ; 0x388 bitWrite(flags, bit, value); - d36a: f043 0308 orr.w r3, r3, #8 - d36e: f8a9 335c strh.w r3, [r9, #860] ; 0x35c - d372: f7fe bd6b b.w be4c + d43e: f043 0308 orr.w r3, r3, #8 + d442: f8a9 337c strh.w r3, [r9, #892] ; 0x37c + d446: f7ff b801 b.w c44c uint8_t outVal = data.setMinMax(layer, 0, BMC_MAX_LAYERS-1, data.byteA, data.byteB); - d376: 461a mov r2, r3 - d378: f7ff bb00 b.w c97c - if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - d37c: f006 03fd and.w r3, r6, #253 ; 0xfd - d380: 2b01 cmp r3, #1 - d382: d109 bne.n d398 - if(data.scrollEnabled()){ - d384: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - d388: 2b00 cmp r3, #0 - d38a: f040 8628 bne.w dfde - data.byteB = BMC_GET_BYTE(1, event); - d38e: 69ba ldr r2, [r7, #24] - d390: f505 5940 add.w r9, r5, #12288 ; 0x3000 - d394: f7fe bf88 b.w c2a8 - } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ - d398: 2e05 cmp r6, #5 - d39a: f001 822f beq.w e7fc - } else if(group==BMC_DEVICE_GROUP_DISPLAY){ - d39e: 2e08 cmp r6, #8 - d3a0: f47e aae8 bne.w b974 - return bitRead(settings, 2); - d3a4: 78e3 ldrb r3, [r4, #3] - data.value = (data.useSelected()) ? programBank : data.byteB; - d3a6: 0758 lsls r0, r3, #29 - d3a8: f142 8077 bpl.w f49a - d3ac: f505 5240 add.w r2, r5, #12288 ; 0x3000 - d3b0: f892 2814 ldrb.w r2, [r2, #2068] ; 0x814 - bitWrite(settings, 2, 0); - d3b4: f023 0304 bic.w r3, r3, #4 - sprintf(data.str, "%03u", data.value); - d3b8: 491a ldr r1, [pc, #104] ; (d424 ) - d3ba: f107 006d add.w r0, r7, #109 ; 0x6d - data.value = (data.useSelected()) ? programBank : data.byteB; - d3be: 8162 strh r2, [r4, #10] - bitWrite(settings, 3, 1); - d3c0: f043 0308 orr.w r3, r3, #8 - display.renderBlock(data); - d3c4: f643 3638 movw r6, #15160 ; 0x3b38 + d44a: 461a mov r2, r3 + d44c: f7fe be25 b.w c09a + if(group == BMC_DEVICE_GROUP_BUTTON){ + d450: 2e01 cmp r6, #1 + d452: f47f a97f bne.w c754 + if(data.scrollEnabled()){ + d456: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + d45a: 2b00 cmp r3, #0 + d45c: f040 8641 bne.w e0e2 + data.byteA = BMC_GET_BYTE(0, event); + d460: 69f9 ldr r1, [r7, #28] + setLists.setPart(outVal); + d462: f243 2020 movw r0, #12832 ; 0x3220 return BMC_OFF_LED_EVENT; - d3c8: f04f 0800 mov.w r8, #0 - d3cc: 70e3 strb r3, [r4, #3] - sprintf(data.str, "%03u", data.value); - d3ce: f020 fedd bl 2e18c - strcpy(data.label, "PGM BNK"); - d3d2: 4b15 ldr r3, [pc, #84] ; (d428 ) - display.renderBlock(data); - d3d4: 442e add r6, r5 - d3d6: 2295 movs r2, #149 ; 0x95 - strcpy(data.label, "PGM BNK"); - d3d8: cb03 ldmia r3!, {r0, r1} - d3da: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - display.renderBlock(data); - d3de: 4668 mov r0, sp - strcpy(data.label, "PGM BNK"); - d3e0: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 - display.renderBlock(data); - d3e4: f107 0160 add.w r1, r7, #96 ; 0x60 - d3e8: f01d f98e bl 2a708 - d3ec: 4630 mov r0, r6 - d3ee: e894 000e ldmia.w r4, {r1, r2, r3} - d3f2: f7fd faf3 bl a9dc - d3f6: f7fe babf b.w b978 - d3fa: bf00 nop - d3fc: 20001f90 .word 0x20001f90 - d400: 20001f74 .word 0x20001f74 - d404: 20001f84 .word 0x20001f84 - d408: 20001c74 .word 0x20001c74 - d40c: 20001f7c .word 0x20001f7c - d410: 20001f6c .word 0x20001f6c - d414: 20001f68 .word 0x20001f68 - d418: 20002008 .word 0x20002008 - d41c: 20002024 .word 0x20002024 - d420: 2000bae8 .word 0x2000bae8 - d424: 20002658 .word 0x20002658 - d428: 20001f04 .word 0x20001f04 + d466: f04f 0800 mov.w r8, #0 + setLists.setPart(outVal); + d46a: 4428 add r0, r5 + d46c: f7f3 f938 bl 6e0 + d470: f7fe baed b.w ba4e } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - d42c: 2e08 cmp r6, #8 - d42e: f47e aaa1 bne.w b974 + d474: 2e08 cmp r6, #8 + d476: f47e aae8 bne.w ba4a bitWrite(settings, 2, 0); - d432: 78e3 ldrb r3, [r4, #3] + d47a: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - d434: f643 3638 movw r6, #15160 ; 0x3b38 + d47c: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.str, "BB BPM"); - d438: 4ac9 ldr r2, [pc, #804] ; (d760 ) + d480: 4a86 ldr r2, [pc, #536] ; (d69c ) return BMC_OFF_LED_EVENT; - d43a: f04f 0800 mov.w r8, #0 - d43e: f023 0304 bic.w r3, r3, #4 + d482: f04f 0800 mov.w r8, #0 + d486: f023 0304 bic.w r3, r3, #4 display.renderBlock(data); - d442: 442e add r6, r5 + d48a: 442e add r6, r5 strcpy(data.str, "BB BPM"); - d444: 6810 ldr r0, [r2, #0] + d48c: 6810 ldr r0, [r2, #0] bitWrite(settings, 3, 1); - d446: f043 0308 orr.w r3, r3, #8 - d44a: 8891 ldrh r1, [r2, #4] - d44c: f8c7 006d str.w r0, [r7, #109] ; 0x6d - d450: 70e3 strb r3, [r4, #3] + d48e: f043 0308 orr.w r3, r3, #8 + d492: 8891 ldrh r1, [r2, #4] + d494: f8c7 006d str.w r0, [r7, #109] ; 0x6d + d498: 70e3 strb r3, [r4, #3] strcpy(data.label, "BEATBUDDY"); - d452: 4bc4 ldr r3, [pc, #784] ; (d764 ) + d49a: 4b81 ldr r3, [pc, #516] ; (d6a0 ) strcpy(data.str, "BB BPM"); - d454: f8a7 1071 strh.w r1, [r7, #113] ; 0x71 - d458: 7992 ldrb r2, [r2, #6] + d49c: f8a7 1071 strh.w r1, [r7, #113] ; 0x71 + d4a0: 7992 ldrb r2, [r2, #6] strcpy(data.label, "BEATBUDDY"); - d45a: cb03 ldmia r3!, {r0, r1} + d4a2: cb03 ldmia r3!, {r0, r1} strcpy(data.str, "BB BPM"); - d45c: f887 2073 strb.w r2, [r7, #115] ; 0x73 + d4a4: f887 2073 strb.w r2, [r7, #115] ; 0x73 display.renderBlock(data); - d460: 2295 movs r2, #149 ; 0x95 + d4a8: 2295 movs r2, #149 ; 0x95 strcpy(data.label, "BEATBUDDY"); - d462: 881b ldrh r3, [r3, #0] - d464: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d4aa: 881b ldrh r3, [r3, #0] + d4ac: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - d468: 4668 mov r0, sp + d4b0: 4668 mov r0, sp strcpy(data.label, "BEATBUDDY"); - d46a: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 + d4b2: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 display.renderBlock(data); - d46e: f107 0160 add.w r1, r7, #96 ; 0x60 + d4b6: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.label, "BEATBUDDY"); - d472: f8a7 30c7 strh.w r3, [r7, #199] ; 0xc7 + d4ba: f8a7 30c7 strh.w r3, [r7, #199] ; 0xc7 display.renderBlock(data); - d476: f01d f947 bl 2a708 - d47a: 4630 mov r0, r6 - d47c: e894 000e ldmia.w r4, {r1, r2, r3} - d480: f7fd faac bl a9dc - d484: f7fe ba78 b.w b978 - d488: f505 5940 add.w r9, r5, #12288 ; 0x3000 - } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - d48c: 2e08 cmp r6, #8 - d48e: f001 8591 beq.w efb4 - d492: f899 3373 ldrb.w r3, [r9, #883] ; 0x373 - if(!connected()){ - d496: f013 0301 ands.w r3, r3, #1 - return preset.scene; - d49a: bf18 it ne - d49c: f899 338e ldrbne.w r3, [r9, #910] ; 0x38e - return sync.fas.getSceneNumber() == p1; - d4a0: eba8 0803 sub.w r8, r8, r3 - d4a4: fab8 f888 clz r8, r8 - d4a8: ea4f 1858 mov.w r8, r8, lsr #5 - d4ac: f7fe ba64 b.w b978 - if(group == BMC_DEVICE_GROUP_BUTTON){ - d4b0: 2e01 cmp r6, #1 - d4b2: f47f a8c2 bne.w c63a - if(data.scrollEnabled()){ - d4b6: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - d4ba: 2b00 cmp r3, #0 - d4bc: f040 85da bne.w e074 - data.byteA = BMC_GET_BYTE(0, event); - d4c0: 69f9 ldr r1, [r7, #28] - setLists.setPart(outVal); - d4c2: f505 5048 add.w r0, r5, #12800 ; 0x3200 - return BMC_OFF_LED_EVENT; - d4c6: f04f 0800 mov.w r8, #0 - setLists.setPart(outVal); - d4ca: f7f3 f909 bl 6e0 - d4ce: f7fe ba53 b.w b978 - } else if(group==BMC_DEVICE_GROUP_POT){ - d4d2: 2e04 cmp r6, #4 - d4d4: f001 82ef beq.w eab6 - } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ - d4d8: 2e05 cmp r6, #5 - d4da: f001 81fd beq.w e8d8 - } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - d4de: 2e08 cmp r6, #8 - d4e0: f001 863b beq.w f15a - return currentCC == (data.byteC & 0x7F); - d4e4: 693b ldr r3, [r7, #16] - d4e6: f003 087f and.w r8, r3, #127 ; 0x7f - d4ea: eba8 0109 sub.w r1, r8, r9 - d4ee: f1d1 0800 rsbs r8, r1, #0 - d4f2: eb48 0801 adc.w r8, r8, r1 - d4f6: f7fe ba3f b.w b978 - if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - d4fa: f006 03fd and.w r3, r6, #253 ; 0xfd - d4fe: 2b01 cmp r3, #1 - d500: d1e7 bne.n d4d2 - if(data.scrollEnabled()){ - d502: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - d506: 2b00 cmp r3, #0 - d508: f43f a95b beq.w c7c2 - outVal = midi.scrollCC(e.ports, data.getChannel(), data.byteB, data.scrollAmount(), data.scrollDirection(), data.scrollWrap(), data.min, data.max); - d50c: 697b ldr r3, [r7, #20] - d50e: 7c20 ldrb r0, [r4, #16] - d510: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - d514: 69bb ldr r3, [r7, #24] - d516: 9004 str r0, [sp, #16] - d518: 7ba0 ldrb r0, [r4, #14] - d51a: 9003 str r0, [sp, #12] - d51c: f894 009f ldrb.w r0, [r4, #159] ; 0x9f - d520: 9002 str r0, [sp, #8] - d522: f894 009e ldrb.w r0, [r4, #158] ; 0x9e - d526: 9001 str r0, [sp, #4] - return scroll.amount; - d528: f894 00a0 ldrb.w r0, [r4, #160] ; 0xa0 - d52c: 3800 subs r0, #0 - d52e: bf18 it ne - d530: 2001 movne r0, #1 - d532: 9000 str r0, [sp, #0] - d534: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - d538: f017 fc72 bl 24e20 - return BMC_TO_MIDI_CHANNEL(byteA); - d53c: 79a2 ldrb r2, [r4, #6] - d53e: 4606 mov r6, r0 - streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, outVal); - d540: 79e3 ldrb r3, [r4, #7] - d542: f002 020f and.w r2, r2, #15 - d546: 21b0 movs r1, #176 ; 0xb0 - d548: 4628 mov r0, r5 - d54a: 9600 str r6, [sp, #0] - d54c: 3201 adds r2, #1 - d54e: f00a fcf3 bl 17f38 - d552: f7fe ba11 b.w b978 - if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - d556: f006 03fd and.w r3, r6, #253 ; 0xfd - d55a: 2b01 cmp r3, #1 - d55c: d107 bne.n d56e - if(data.scrollEnabled()){ - d55e: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - d562: 2b00 cmp r3, #0 - d564: f040 8511 bne.w df8a - data.byteA = BMC_GET_BYTE(0, event); - d568: 69f9 ldr r1, [r7, #28] - d56a: f7fe beed b.w c348 - } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ - d56e: 2e05 cmp r6, #5 - d570: f001 8154 beq.w e81c - } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - d574: 2e08 cmp r6, #8 - d576: f001 84d6 beq.w ef26 - return setList; - d57a: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d57e: f8d5 3208 ldr.w r3, [r5, #520] ; 0x208 - return (data.byteA == setLists.get()); - d582: f893 8000 ldrb.w r8, [r3] - d586: 69fb ldr r3, [r7, #28] - d588: eba8 0b03 sub.w fp, r8, r3 - d58c: f1db 0800 rsbs r8, fp, #0 - d590: eb48 080b adc.w r8, r8, fp - d594: f7fe b9f0 b.w b978 - } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - d598: 2e08 cmp r6, #8 - d59a: f001 840e beq.w edba - return snapshot==t_value; - d59e: f505 5540 add.w r5, r5, #12288 ; 0x3000 - return sync.helix.isSnapshot(data.byteB); - d5a2: 69bb ldr r3, [r7, #24] - d5a4: f895 878b ldrb.w r8, [r5, #1931] ; 0x78b - d5a8: eba8 0803 sub.w r8, r8, r3 - d5ac: fab8 f888 clz r8, r8 - d5b0: ea4f 1858 mov.w r8, r8, lsr #5 - d5b4: f7fe b9e0 b.w b978 - if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - d5b8: f006 01fd and.w r1, r6, #253 ; 0xfd - d5bc: 2901 cmp r1, #1 - d5be: f040 80a5 bne.w d70c - if(data.scrollEnabled()){ - d5c2: f894 109d ldrb.w r1, [r4, #157] ; 0x9d - d5c6: 2900 cmp r1, #0 - d5c8: f43f a94c beq.w c864 - outVal = midi.scrollPC(e.ports, data.getChannel(), data.scrollAmount(), data.scrollDirection(), data.scrollWrap(), data.min, data.max); - d5cc: 6979 ldr r1, [r7, #20] - d5ce: 7c20 ldrb r0, [r4, #16] - return scroll.amount; - d5d0: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 - d5d4: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 - d5d8: 9003 str r0, [sp, #12] - d5da: 3b00 subs r3, #0 - d5dc: 7ba0 ldrb r0, [r4, #14] - d5de: bf18 it ne - d5e0: 2301 movne r3, #1 - d5e2: 9002 str r0, [sp, #8] - d5e4: f894 009f ldrb.w r0, [r4, #159] ; 0x9f - d5e8: 9001 str r0, [sp, #4] - d5ea: f894 009e ldrb.w r0, [r4, #158] ; 0x9e - d5ee: 9000 str r0, [sp, #0] - d5f0: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - d5f4: f017 fc28 bl 24e48 - return BMC_TO_MIDI_CHANNEL(byteA); - d5f8: 79a2 ldrb r2, [r4, #6] - streamMidi(BMC_MIDI_PROGRAM_CHANGE, data.getChannel(), outVal); - d5fa: 24ff movs r4, #255 ; 0xff - outVal = midi.scrollPC(e.ports, data.getChannel(), data.scrollAmount(), data.scrollDirection(), data.scrollWrap(), data.min, data.max); - d5fc: 4603 mov r3, r0 - d5fe: f002 020f and.w r2, r2, #15 - streamMidi(BMC_MIDI_PROGRAM_CHANGE, data.getChannel(), outVal); - d602: 21c0 movs r1, #192 ; 0xc0 - d604: 4628 mov r0, r5 - d606: 9400 str r4, [sp, #0] - d608: 3201 adds r2, #1 - d60a: f00a fc95 bl 17f38 - d60e: f7fe b9b3 b.w b978 + d4be: f01d f997 bl 2a7f0 + d4c2: 4630 mov r0, r6 + d4c4: e894 000e ldmia.w r4, {r1, r2, r3} + d4c8: f7fd fa5a bl a980 + d4cc: f7fe babf b.w ba4e } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ - d612: 2e05 cmp r6, #5 - d614: f001 8072 beq.w e6fc + d4d0: 2e05 cmp r6, #5 + d4d2: f001 8222 beq.w e91a } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - d618: 2e08 cmp r6, #8 - d61a: f041 8063 bne.w e6e4 + d4d6: 2e08 cmp r6, #8 + d4d8: f041 8213 bne.w e902 if(data.byteA < BMC_MAX_LAYERS && data.byteB <= BMC_MAX_LAYERS){ - d61e: 69ba ldr r2, [r7, #24] - d620: 2a05 cmp r2, #5 - d622: f63e a9a7 bhi.w b974 - d626: 69fa ldr r2, [r7, #28] - d628: 2a04 cmp r2, #4 - d62a: f63e a9a3 bhi.w b974 + d4dc: 69ba ldr r2, [r7, #24] + d4de: 2a05 cmp r2, #5 + d4e0: f63e aab3 bhi.w ba4a + d4e4: 69fa ldr r2, [r7, #28] + d4e6: 2a04 cmp r2, #4 + d4e8: f63e aaaf bhi.w ba4a getLayerName(data.value, data.str); - d62e: 4611 mov r1, r2 + d4ec: 4611 mov r1, r2 strcpy(data.label, "LAYER"); - d630: 4a4d ldr r2, [pc, #308] ; (d768 ) + d4ee: 4a6d ldr r2, [pc, #436] ; (d6a4 ) data.value = data.byteA; - d632: 8163 strh r3, [r4, #10] + d4f0: 8163 strh r3, [r4, #10] data.allowMeter = true; - d634: 2601 movs r6, #1 + d4f2: 2601 movs r6, #1 strcpy(data.label, "LAYER"); - d636: 6810 ldr r0, [r2, #0] + d4f4: 6810 ldr r0, [r2, #0] return BMC_OFF_LED_EVENT; - d638: f04f 0800 mov.w r8, #0 + d4f6: f04f 0800 mov.w r8, #0 strcpy(data.label, "LAYER"); - d63c: 8892 ldrh r2, [r2, #4] - d63e: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - d642: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + d4fa: 8892 ldrh r2, [r2, #4] + d4fc: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + d500: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 data.valueSelected = layer; - d646: f89c 0000 ldrb.w r0, [ip] - d64a: f8da e7fc ldr.w lr, [sl, #2044] ; 0x7fc + d504: f89c 0000 ldrb.w r0, [ip] + d508: f8da e7fc ldr.w lr, [sl, #2044] ; 0x7fc data.highlight = (data.valueSelected == data.byteA); - d64e: eba3 0c00 sub.w ip, r3, r0 - d652: f8de 2000 ldr.w r2, [lr] - d656: f1dc 0300 rsbs r3, ip, #0 + d50c: eba3 0c00 sub.w ip, r3, r0 + d510: f8de 2000 ldr.w r2, [lr] + d514: f1dc 0300 rsbs r3, ip, #0 data.valueSelected = layer; - d65a: 81a0 strh r0, [r4, #12] - d65c: f3c2 2240 ubfx r2, r2, #9, #1 + d518: 81a0 strh r0, [r4, #12] + d51a: f3c2 2240 ubfx r2, r2, #9, #1 getLayerName(data.value, data.str); - d660: 4628 mov r0, r5 + d51e: 4628 mov r0, r5 data.highlight = (data.valueSelected == data.byteA); - d662: eb43 030c adc.w r3, r3, ip + d520: eb43 030c adc.w r3, r3, ip data.allowMeter = true; - d666: 75e6 strb r6, [r4, #23] - d668: 7622 strb r2, [r4, #24] + d524: 75e6 strb r6, [r4, #23] + d526: 7622 strb r2, [r4, #24] getLayerName(data.value, data.str); - d66a: f107 026d add.w r2, r7, #109 ; 0x6d + d528: f107 026d add.w r2, r7, #109 ; 0x6d data.highlight = (data.valueSelected == data.byteA); - d66e: 7523 strb r3, [r4, #20] + d52c: 7523 strb r3, [r4, #20] getLayerName(data.value, data.str); - d670: f007 fb9e bl 14db0 + d52e: f007 fca5 bl 14e7c getLayerName(data.valueSelected, data.strSelected); - d674: f107 0296 add.w r2, r7, #150 ; 0x96 - d678: 7b21 ldrb r1, [r4, #12] - d67a: 4628 mov r0, r5 - d67c: f007 fb98 bl 14db0 + d532: f107 0296 add.w r2, r7, #150 ; 0x96 + d536: 7b21 ldrb r1, [r4, #12] + d538: 4628 mov r0, r5 + d53a: f007 fc9f bl 14e7c strcpy(data.format, "L %01u"); - d680: 4a3a ldr r2, [pc, #232] ; (d76c ) + d53e: 4a5a ldr r2, [pc, #360] ; (d6a8 ) data.digits = 1; - d682: f884 609c strb.w r6, [r4, #156] ; 0x9c + d540: f884 609c strb.w r6, [r4, #156] ; 0x9c display.renderBlock(data); - d686: f643 3638 movw r6, #15160 ; 0x3b38 + d544: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.format, "L %01u"); - d68a: e892 0003 ldmia.w r2, {r0, r1} + d548: e892 0003 ldmia.w r2, {r0, r1} display.renderBlock(data); - d68e: 442e add r6, r5 - d690: 2295 movs r2, #149 ; 0x95 + d54c: 442e add r6, r5 + d54e: 2295 movs r2, #149 ; 0x95 strcpy(data.format, "L %01u"); - d692: f8c7 00e0 str.w r0, [r7, #224] ; 0xe0 - d696: 0c08 lsrs r0, r1, #16 - d698: f8a7 10e4 strh.w r1, [r7, #228] ; 0xe4 + d550: f8c7 00e0 str.w r0, [r7, #224] ; 0xe0 + d554: 0c08 lsrs r0, r1, #16 + d556: f8a7 10e4 strh.w r1, [r7, #228] ; 0xe4 display.renderBlock(data); - d69c: f107 0160 add.w r1, r7, #96 ; 0x60 + d55a: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.format, "L %01u"); - d6a0: f887 00e6 strb.w r0, [r7, #230] ; 0xe6 + d55e: f887 00e6 strb.w r0, [r7, #230] ; 0xe6 display.renderBlock(data); - d6a4: 4668 mov r0, sp - d6a6: f01d f82f bl 2a708 - d6aa: 4630 mov r0, r6 - d6ac: e894 000e ldmia.w r4, {r1, r2, r3} - d6b0: f7fd f994 bl a9dc - d6b4: f7fe b960 b.w b978 + d562: 4668 mov r0, sp + d564: f01d f944 bl 2a7f0 + d568: 4630 mov r0, r6 + d56a: e894 000e ldmia.w r4, {r1, r2, r3} + d56e: f7fd fa07 bl a980 + d572: f7fe ba6c b.w ba4e if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - d6b8: f006 00fd and.w r0, r6, #253 ; 0xfd - d6bc: 2801 cmp r0, #1 - d6be: d1a8 bne.n d612 - if(data.scrollEnabled()){ - d6c0: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - d6c4: 2b00 cmp r3, #0 - d6c6: f43f a96d beq.w c9a4 - scrollLayer(data.scrollDirection(), data.scrollWrap(), data.min, data.max, data.scrollAmount()); - d6ca: 4628 mov r0, r5 - return scroll.amount; - d6cc: f894 50a0 ldrb.w r5, [r4, #160] ; 0xa0 - d6d0: 7ba3 ldrb r3, [r4, #14] - d6d2: 3d00 subs r5, #0 - d6d4: f894 209f ldrb.w r2, [r4, #159] ; 0x9f - d6d8: f894 109e ldrb.w r1, [r4, #158] ; 0x9e - d6dc: bf18 it ne - d6de: 2501 movne r5, #1 - d6e0: 9501 str r5, [sp, #4] - d6e2: 7c24 ldrb r4, [r4, #16] - d6e4: 9400 str r4, [sp, #0] - d6e6: f007 fd3d bl 15164 - d6ea: f7fe b945 b.w b978 - if(group==BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - d6ee: f006 03fd and.w r3, r6, #253 ; 0xfd - d6f2: 2b01 cmp r3, #1 - d6f4: f47f aec8 bne.w d488 - if(data.scrollEnabled()){ - d6f8: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - d6fc: 2b00 cmp r3, #0 - d6fe: f041 834d bne.w ed9c - uint8_t p1 = BMC_GET_BYTE(0, event) & 0x07; - d702: 4642 mov r2, r8 - d704: f505 5940 add.w r9, r5, #12288 ; 0x3000 - d708: f7fe bc98 b.w c03c - } else if(group==BMC_DEVICE_GROUP_POT){ - d70c: 2e04 cmp r6, #4 - d70e: f001 81ed beq.w eaec - } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ - d712: 2e05 cmp r6, #5 - d714: f001 81b4 beq.w ea80 - } else if(group == BMC_DEVICE_GROUP_DISPLAY){ - d718: 2e08 cmp r6, #8 - d71a: f001 84d9 beq.w f0d0 - return currentPC == (data.byteB & 0x7F); - d71e: 69bb ldr r3, [r7, #24] - d720: f003 087f and.w r8, r3, #127 ; 0x7f - d724: eba8 0400 sub.w r4, r8, r0 - d728: f1d4 0800 rsbs r8, r4, #0 - d72c: eb48 0804 adc.w r8, r8, r4 - d730: f7fe b922 b.w b978 - if(group == BMC_DEVICE_GROUP_BUTTON){ - d734: 2e01 cmp r6, #1 - d736: f47f a95d bne.w c9f4 + d576: f006 03fd and.w r3, r6, #253 ; 0xfd + d57a: 2b01 cmp r3, #1 + d57c: d14f bne.n d61e if(data.scrollEnabled()){ - d73a: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - d73e: 2b00 cmp r3, #0 - d740: f040 8479 bne.w e036 + d57e: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + d582: 2b00 cmp r3, #0 + d584: f040 8576 bne.w e074 data.byteA = BMC_GET_BYTE(0, event); - d744: 69f9 ldr r1, [r7, #28] - setLists.setSong(outVal); - d746: f505 5048 add.w r0, r5, #12800 ; 0x3200 - return BMC_OFF_LED_EVENT; - d74a: f04f 0800 mov.w r8, #0 - setLists.setSong(outVal); - d74e: f7f3 f839 bl 7c4 - d752: f7fe b911 b.w b978 - return BMC_IGNORE_LED_EVENT; - d756: f04f 08ff mov.w r8, #255 ; 0xff - d75a: f7fe b90d b.w b978 - d75e: bf00 nop - d760: 20002210 .word 0x20002210 - d764: 20002204 .word 0x20002204 - d768: 20001ff4 .word 0x20001ff4 - d76c: 20002034 .word 0x20002034 - return bitRead(flags, bit); - d770: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d774: f895 3194 ldrb.w r3, [r5, #404] ; 0x194 - if(isMaster() && bpmCalc.isValidBpm(tempo)){ - d778: 07db lsls r3, r3, #31 - d77a: f57e a8fb bpl.w b974 - midiClock.setBpm(BMC_GET_BYTE_2(0, event)); - d77e: b289 uxth r1, r1 - d780: f1a1 031e sub.w r3, r1, #30 - d784: f5b3 7f87 cmp.w r3, #270 ; 0x10e - d788: f63e a8f4 bhi.w b974 - d78c: 4bd4 ldr r3, [pc, #848] ; (dae0 ) - d78e: 2264 movs r2, #100 ; 0x64 + d588: 69f9 ldr r1, [r7, #28] + d58a: f7ff ba97 b.w cabc + } else if(group == BMC_DEVICE_GROUP_MAGIC_ENCODER){ + d58e: 2e05 cmp r6, #5 + d590: f001 81ce beq.w e930 + } else if(group==BMC_DEVICE_GROUP_DISPLAY){ + d594: 2e08 cmp r6, #8 + d596: f47e aa58 bne.w ba4a + return bitRead(settings, 2); + d59a: 78e3 ldrb r3, [r4, #3] + data.value = (data.useSelected()) ? programBank : data.byteB; + d59c: 0758 lsls r0, r3, #29 + d59e: f142 81a1 bpl.w f8e4 + d5a2: f505 5240 add.w r2, r5, #12288 ; 0x3000 + d5a6: f892 2834 ldrb.w r2, [r2, #2100] ; 0x834 + bitWrite(settings, 2, 0); + d5aa: f023 0304 bic.w r3, r3, #4 + sprintf(data.str, "%03u", data.value); + d5ae: 493f ldr r1, [pc, #252] ; (d6ac ) + d5b0: f107 006d add.w r0, r7, #109 ; 0x6d + data.value = (data.useSelected()) ? programBank : data.byteB; + d5b4: 8162 strh r2, [r4, #10] + bitWrite(settings, 3, 1); + d5b6: f043 0308 orr.w r3, r3, #8 + display.renderBlock(data); + d5ba: f643 3658 movw r6, #15192 ; 0x3b58 return BMC_OFF_LED_EVENT; - d790: f04f 0800 mov.w r8, #0 - tmpBpm = tempo; - d794: f8a5 118c strh.w r1, [r5, #396] ; 0x18c - d798: 681b ldr r3, [r3, #0] - d79a: f8a5 21c4 strh.w r2, [r5, #452] ; 0x1c4 - prevTime = (unsigned long) _BMCTiming::get(); - d79e: f8c5 31c8 str.w r3, [r5, #456] ; 0x1c8 - } - d7a2: f7fe b8e9 b.w b978 + d5be: f04f 0800 mov.w r8, #0 + d5c2: 70e3 strb r3, [r4, #3] + sprintf(data.str, "%03u", data.value); + d5c4: f020 fe56 bl 2e274 + strcpy(data.label, "PGM BNK"); + d5c8: 4b39 ldr r3, [pc, #228] ; (d6b0 ) + display.renderBlock(data); + d5ca: 442e add r6, r5 + d5cc: 2295 movs r2, #149 ; 0x95 + strcpy(data.label, "PGM BNK"); + d5ce: cb03 ldmia r3!, {r0, r1} + d5d0: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + display.renderBlock(data); + d5d4: 4668 mov r0, sp + strcpy(data.label, "PGM BNK"); + d5d6: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 + display.renderBlock(data); + d5da: f107 0160 add.w r1, r7, #96 ; 0x60 + d5de: f01d f907 bl 2a7f0 + d5e2: 4630 mov r0, r6 + d5e4: e894 000e ldmia.w r4, {r1, r2, r3} + d5e8: f7fd f9ca bl a980 + d5ec: f7fe ba2f b.w ba4e + if(group == BMC_DEVICE_GROUP_BUTTON){ + d5f0: 2e01 cmp r6, #1 + d5f2: f47f a878 bne.w c6e6 + if(data.scrollEnabled()){ + d5f6: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + d5fa: 2b00 cmp r3, #0 + d5fc: f040 8594 bne.w e128 + data.byteA = BMC_GET_BYTE(0, event); + d600: 69f9 ldr r1, [r7, #28] + setLists.setSong(outVal); + d602: f243 2020 movw r0, #12832 ; 0x3220 + return BMC_OFF_LED_EVENT; + d606: f04f 0800 mov.w r8, #0 + setLists.setSong(outVal); + d60a: 4428 add r0, r5 + d60c: f7f3 f8da bl 7c4 + d610: f7fe ba1d b.w ba4e + if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ + d614: f006 03fd and.w r3, r6, #253 ; 0xfd + d618: 2b01 cmp r3, #1 + d61a: f000 852b beq.w e074 + } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ + d61e: 2e05 cmp r6, #5 + d620: f001 80d6 beq.w e7d0 + } else if(group == BMC_DEVICE_GROUP_DISPLAY){ + d624: 2e08 cmp r6, #8 + d626: f001 8451 beq.w eecc + d62a: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d62e: f8d5 3228 ldr.w r3, [r5, #552] ; 0x228 + return (data.byteA == setLists.get()); + d632: f893 8000 ldrb.w r8, [r3] + d636: 69fb ldr r3, [r7, #28] + d638: eba8 0b03 sub.w fp, r8, r3 + d63c: f1db 0800 rsbs r8, fp, #0 + d640: eb48 080b adc.w r8, r8, fp + d644: f7fe ba03 b.w ba4e + if(group==BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ + d648: f006 03fd and.w r3, r6, #253 ; 0xfd + d64c: 2b01 cmp r3, #1 + d64e: d154 bne.n d6fa + if(data.scrollEnabled()){ + d650: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + d654: 2b00 cmp r3, #0 + d656: f041 83f5 bne.w ee44 + uint8_t p1 = BMC_GET_BYTE(0, event) & 0x07; + d65a: 4642 mov r2, r8 + d65c: f505 5940 add.w r9, r5, #12288 ; 0x3000 + d660: f7fe bd98 b.w c194 + } else if(group == BMC_DEVICE_GROUP_DISPLAY){ + d664: 2e08 cmp r6, #8 + d666: f001 84f3 beq.w f050 + return snapshot==t_value; + d66a: f505 5540 add.w r5, r5, #12288 ; 0x3000 + return sync.helix.isSnapshot(data.byteB); + d66e: 69bb ldr r3, [r7, #24] + d670: f895 87ab ldrb.w r8, [r5, #1963] ; 0x7ab + d674: eba8 0803 sub.w r8, r8, r3 + d678: fab8 f888 clz r8, r8 + d67c: ea4f 1858 mov.w r8, r8, lsr #5 + d680: f7fe b9e5 b.w ba4e + d684: 20001f6c .word 0x20001f6c + d688: 20001f74 .word 0x20001f74 + d68c: 20001f68 .word 0x20001f68 + d690: 20002008 .word 0x20002008 + d694: 20002024 .word 0x20002024 + d698: 2000bb08 .word 0x2000bb08 + d69c: 20002210 .word 0x20002210 + d6a0: 20002204 .word 0x20002204 + d6a4: 20001ff4 .word 0x20001ff4 + d6a8: 20002034 .word 0x20002034 + d6ac: 20002658 .word 0x20002658 + d6b0: 20001f04 .word 0x20001f04 + if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ + d6b4: f006 03fd and.w r3, r6, #253 ; 0xfd + d6b8: 2b01 cmp r3, #1 + d6ba: f47f af68 bne.w d58e + if(data.scrollEnabled()){ + d6be: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + d6c2: 2b00 cmp r3, #0 + d6c4: f040 8494 bne.w dff0 + data.byteB = BMC_GET_BYTE(1, event); + d6c8: 69ba ldr r2, [r7, #24] + d6ca: f505 5940 add.w r9, r5, #12288 ; 0x3000 + d6ce: f7fe bf01 b.w c4d4 + } else if(group==BMC_DEVICE_GROUP_POT){ + d6d2: 2e04 cmp r6, #4 + d6d4: f001 83c5 beq.w ee62 + } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ + d6d8: 2e05 cmp r6, #5 + d6da: f001 8139 beq.w e950 + } else if(group == BMC_DEVICE_GROUP_DISPLAY){ + d6de: 2e08 cmp r6, #8 + d6e0: f001 8645 beq.w f36e + return currentCC == (data.byteC & 0x7F); + d6e4: 693b ldr r3, [r7, #16] + d6e6: f003 087f and.w r8, r3, #127 ; 0x7f + d6ea: eba8 0109 sub.w r1, r8, r9 + d6ee: f1d1 0800 rsbs r8, r1, #0 + d6f2: eb48 0801 adc.w r8, r8, r1 + d6f6: f7fe b9aa b.w ba4e + d6fa: f505 5940 add.w r9, r5, #12288 ; 0x3000 + } else if(group == BMC_DEVICE_GROUP_DISPLAY){ + d6fe: 2e08 cmp r6, #8 + d700: f001 82e0 beq.w ecc4 + d704: f899 3393 ldrb.w r3, [r9, #915] ; 0x393 + if(!connected()){ + d708: f013 0301 ands.w r3, r3, #1 + return preset.scene; + d70c: bf18 it ne + d70e: f899 33ae ldrbne.w r3, [r9, #942] ; 0x3ae + return sync.fas.getSceneNumber() == p1; + d712: eba8 0803 sub.w r8, r8, r3 + d716: fab8 f888 clz r8, r8 + d71a: ea4f 1858 mov.w r8, r8, lsr #5 + d71e: f7fe b996 b.w ba4e + if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ + d722: f006 00fd and.w r0, r6, #253 ; 0xfd + d726: 2801 cmp r0, #1 + d728: f47f aed2 bne.w d4d0 + if(data.scrollEnabled()){ + d72c: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + d730: 2b00 cmp r3, #0 + d732: f43e acc6 beq.w c0c2 + scrollLayer(data.scrollDirection(), data.scrollWrap(), data.min, data.max, data.scrollAmount()); + d736: 4628 mov r0, r5 + return scroll.amount; + d738: f894 50a0 ldrb.w r5, [r4, #160] ; 0xa0 + d73c: 7ba3 ldrb r3, [r4, #14] + d73e: 3d00 subs r5, #0 + d740: f894 209f ldrb.w r2, [r4, #159] ; 0x9f + d744: f894 109e ldrb.w r1, [r4, #158] ; 0x9e + d748: bf18 it ne + d74a: 2501 movne r5, #1 + d74c: 9501 str r5, [sp, #4] + d74e: 7c24 ldrb r4, [r4, #16] + d750: 9400 str r4, [sp, #0] + d752: f007 fd6d bl 15230 + d756: f7fe b97a b.w ba4e + } else if(group==BMC_DEVICE_GROUP_POT){ + d75a: 2e04 cmp r6, #4 + d75c: f001 84e6 beq.w f12c + } else if(group==BMC_DEVICE_GROUP_MAGIC_ENCODER){ + d760: 2e05 cmp r6, #5 + d762: f001 81fe beq.w eb62 + } else if(group == BMC_DEVICE_GROUP_DISPLAY){ + d766: 2e08 cmp r6, #8 + d768: f001 8523 beq.w f1b2 + return currentPC == (data.byteB & 0x7F); + d76c: 69bb ldr r3, [r7, #24] + d76e: f003 087f and.w r8, r3, #127 ; 0x7f + d772: eba8 0400 sub.w r4, r8, r0 + d776: f1d4 0800 rsbs r8, r4, #0 + d77a: eb48 0804 adc.w r8, r8, r4 + d77e: f7fe b966 b.w ba4e + if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ + d782: f006 01fd and.w r1, r6, #253 ; 0xfd + d786: 2901 cmp r1, #1 + d788: d1e7 bne.n d75a + if(data.scrollEnabled()){ + d78a: f894 109d ldrb.w r1, [r4, #157] ; 0x9d + d78e: 2900 cmp r1, #0 + d790: f43f a8ba beq.w c908 + outVal = midi.scrollPC(e.ports, data.getChannel(), data.scrollAmount(), data.scrollDirection(), data.scrollWrap(), data.min, data.max); + d794: 6979 ldr r1, [r7, #20] + d796: 7c20 ldrb r0, [r4, #16] + d798: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 + d79c: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 + d7a0: 9003 str r0, [sp, #12] + d7a2: 3b00 subs r3, #0 + d7a4: 7ba0 ldrb r0, [r4, #14] + d7a6: bf18 it ne + d7a8: 2301 movne r3, #1 + d7aa: 9002 str r0, [sp, #8] + d7ac: f894 009f ldrb.w r0, [r4, #159] ; 0x9f + d7b0: 9001 str r0, [sp, #4] + d7b2: f894 009e ldrb.w r0, [r4, #158] ; 0x9e + d7b6: 9000 str r0, [sp, #0] + d7b8: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + d7bc: f017 fbba bl 24f34 + return BMC_TO_MIDI_CHANNEL(byteA); + d7c0: 79a2 ldrb r2, [r4, #6] + streamMidi(BMC_MIDI_PROGRAM_CHANGE, data.getChannel(), outVal); + d7c2: 24ff movs r4, #255 ; 0xff + outVal = midi.scrollPC(e.ports, data.getChannel(), data.scrollAmount(), data.scrollDirection(), data.scrollWrap(), data.min, data.max); + d7c4: 4603 mov r3, r0 + d7c6: f002 020f and.w r2, r2, #15 + streamMidi(BMC_MIDI_PROGRAM_CHANGE, data.getChannel(), outVal); + d7ca: 21c0 movs r1, #192 ; 0xc0 + d7cc: 4628 mov r0, r5 + d7ce: 9400 str r4, [sp, #0] + d7d0: 3201 adds r2, #1 + d7d2: f00a fc23 bl 1801c + d7d6: f7fe b93a b.w ba4e + if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ + d7da: f006 03fd and.w r3, r6, #253 ; 0xfd + d7de: 2b01 cmp r3, #1 + d7e0: f47f af77 bne.w d6d2 + if(data.scrollEnabled()){ + d7e4: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + d7e8: 2b00 cmp r3, #0 + d7ea: f43f a83c beq.w c866 + outVal = midi.scrollCC(e.ports, data.getChannel(), data.byteB, data.scrollAmount(), data.scrollDirection(), data.scrollWrap(), data.min, data.max); + d7ee: 697b ldr r3, [r7, #20] + d7f0: 7c20 ldrb r0, [r4, #16] + d7f2: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + d7f6: 69bb ldr r3, [r7, #24] + d7f8: 9004 str r0, [sp, #16] + d7fa: 7ba0 ldrb r0, [r4, #14] + d7fc: 9003 str r0, [sp, #12] + d7fe: f894 009f ldrb.w r0, [r4, #159] ; 0x9f + d802: 9002 str r0, [sp, #8] + d804: f894 009e ldrb.w r0, [r4, #158] ; 0x9e + d808: 9001 str r0, [sp, #4] + return scroll.amount; + d80a: f894 00a0 ldrb.w r0, [r4, #160] ; 0xa0 + d80e: 3800 subs r0, #0 + d810: bf18 it ne + d812: 2001 movne r0, #1 + d814: 9000 str r0, [sp, #0] + d816: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + d81a: f017 fb77 bl 24f0c + return BMC_TO_MIDI_CHANNEL(byteA); + d81e: 79a2 ldrb r2, [r4, #6] + d820: 4606 mov r6, r0 + streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, outVal); + d822: 79e3 ldrb r3, [r4, #7] + d824: f002 020f and.w r2, r2, #15 + d828: 21b0 movs r1, #176 ; 0xb0 + d82a: 4628 mov r0, r5 + d82c: 9600 str r6, [sp, #0] + d82e: 3201 adds r2, #1 + d830: f00a fbf4 bl 1801c + d834: f7fe b90b b.w ba4e + return BMC_IGNORE_LED_EVENT; + d838: f04f 08ff mov.w r8, #255 ; 0xff + d83c: f7fe b907 b.w ba4e + d840: 69fb ldr r3, [r7, #28] + midi.sendControlChange(e.ports, channel, 0, data.byteB & 0x7F); + d842: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + d846: 2600 movs r6, #0 + d848: 697d ldr r5, [r7, #20] + d84a: f003 020f and.w r2, r3, #15 + d84e: 69bb ldr r3, [r7, #24] + d850: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 + d854: 3201 adds r2, #1 + d856: f003 037f and.w r3, r3, #127 ; 0x7f + d85a: f8cd 8008 str.w r8, [sp, #8] + d85e: 9300 str r3, [sp, #0] + d860: 4633 mov r3, r6 + d862: 9601 str r6, [sp, #4] + d864: e9c7 200a strd r2, r0, [r7, #40] ; 0x28 + d868: f015 fe1a bl 234a0 + midi.sendControlChange(e.ports, channel, 32, data.byteC & 0x7F); + d86c: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 + d870: 6aba ldr r2, [r7, #40] ; 0x28 + d872: e9cd 6801 strd r6, r8, [sp, #4] + d876: 7a23 ldrb r3, [r4, #8] + d878: f003 037f and.w r3, r3, #127 ; 0x7f + d87c: 9300 str r3, [sp, #0] + d87e: 2320 movs r3, #32 + d880: 6af8 ldr r0, [r7, #44] ; 0x2c + d882: f015 fe0d bl 234a0 + if(data.scrollEnabled()){ + d886: f894 509d ldrb.w r5, [r4, #157] ; 0x9d + d88a: 6af8 ldr r0, [r7, #44] ; 0x2c + d88c: 2d00 cmp r5, #0 + d88e: f001 8028 beq.w e8e2 + max = t_max2-1; + d892: 227e movs r2, #126 ; 0x7e + if(noScroll){ + d894: 7da3 ldrb r3, [r4, #22] + min = t_min; + d896: 81e6 strh r6, [r4, #14] + max = t_max2-1; + d898: 8222 strh r2, [r4, #16] + if(noScroll){ + d89a: b10b cbz r3, d8a0 + scroll.enabled = false; + d89c: f884 609d strb.w r6, [r4, #157] ; 0x9d + midi.scrollPC(e.ports, data.getChannel(), data.scrollAmount(), data.scrollDirection(), data.scrollWrap(), data.min, data.max); + d8a0: 697a ldr r2, [r7, #20] + d8a2: 2500 movs r5, #0 + return scroll.amount; + d8a4: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 + d8a8: 267e movs r6, #126 ; 0x7e + d8aa: f892 1033 ldrb.w r1, [r2, #51] ; 0x33 + return BMC_OFF_LED_EVENT; + d8ae: 46a8 mov r8, r5 + return BMC_TO_MIDI_CHANNEL(byteA); + d8b0: 79a2 ldrb r2, [r4, #6] + midi.scrollPC(e.ports, data.getChannel(), data.scrollAmount(), data.scrollDirection(), data.scrollWrap(), data.min, data.max); + d8b2: 1b5b subs r3, r3, r5 + d8b4: e9cd 5602 strd r5, r6, [sp, #8] + d8b8: f894 509f ldrb.w r5, [r4, #159] ; 0x9f + d8bc: f002 020f and.w r2, r2, #15 + d8c0: bf18 it ne + d8c2: 2301 movne r3, #1 + d8c4: 9501 str r5, [sp, #4] + d8c6: 3201 adds r2, #1 + d8c8: f894 409e ldrb.w r4, [r4, #158] ; 0x9e + d8cc: 9400 str r4, [sp, #0] + d8ce: f017 fb31 bl 24f34 + d8d2: f7fe b8bc b.w ba4e switch(data.byteA){ - d7a6: 69fa ldr r2, [r7, #28] - d7a8: 2a16 cmp r2, #22 - d7aa: f63e a9b0 bhi.w bb0e - d7ae: a301 add r3, pc, #4 ; (adr r3, d7b4 ) - d7b0: f853 f022 ldr.w pc, [r3, r2, lsl #2] - d7b4: 0000d821 .word 0x0000d821 - d7b8: 0000d811 .word 0x0000d811 - d7bc: 0000d9a5 .word 0x0000d9a5 - d7c0: 0000d811 .word 0x0000d811 - d7c4: 0000d983 .word 0x0000d983 - d7c8: 0000d96b .word 0x0000d96b - d7cc: 0000d953 .word 0x0000d953 - d7d0: 0000d811 .word 0x0000d811 - d7d4: 0000d93b .word 0x0000d93b - d7d8: 0000d923 .word 0x0000d923 - d7dc: 0000d90b .word 0x0000d90b - d7e0: 0000d8fb .word 0x0000d8fb - d7e4: 0000d8eb .word 0x0000d8eb - d7e8: 0000d8db .word 0x0000d8db - d7ec: 0000d8cb .word 0x0000d8cb - d7f0: 0000d8bb .word 0x0000d8bb - d7f4: 0000bb0f .word 0x0000bb0f - d7f8: 0000d899 .word 0x0000d899 - d7fc: 0000d889 .word 0x0000d889 - d800: 0000d86f .word 0x0000d86f - d804: 0000d855 .word 0x0000d855 - d808: 0000d841 .word 0x0000d841 - d80c: 0000d831 .word 0x0000d831 - d810: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d814: f895 84a3 ldrb.w r8, [r5, #1187] ; 0x4a3 - d818: f008 0801 and.w r8, r8, #1 + d8d6: 69fa ldr r2, [r7, #28] + d8d8: 2a16 cmp r2, #22 + d8da: f63e a97b bhi.w bbd4 + d8de: a301 add r3, pc, #4 ; (adr r3, d8e4 ) + d8e0: f853 f022 ldr.w pc, [r3, r2, lsl #2] + d8e4: 0000d951 .word 0x0000d951 + d8e8: 0000d941 .word 0x0000d941 + d8ec: 0000dad5 .word 0x0000dad5 + d8f0: 0000d941 .word 0x0000d941 + d8f4: 0000dab3 .word 0x0000dab3 + d8f8: 0000da9b .word 0x0000da9b + d8fc: 0000da83 .word 0x0000da83 + d900: 0000d941 .word 0x0000d941 + d904: 0000da6b .word 0x0000da6b + d908: 0000da53 .word 0x0000da53 + d90c: 0000da3b .word 0x0000da3b + d910: 0000da2b .word 0x0000da2b + d914: 0000da1b .word 0x0000da1b + d918: 0000da0b .word 0x0000da0b + d91c: 0000d9fb .word 0x0000d9fb + d920: 0000d9eb .word 0x0000d9eb + d924: 0000bbd5 .word 0x0000bbd5 + d928: 0000d9c9 .word 0x0000d9c9 + d92c: 0000d9b9 .word 0x0000d9b9 + d930: 0000d99f .word 0x0000d99f + d934: 0000d985 .word 0x0000d985 + d938: 0000d971 .word 0x0000d971 + d93c: 0000d961 .word 0x0000d961 + return bitRead(flags, bit); + d940: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d944: f895 84c3 ldrb.w r8, [r5, #1219] ; 0x4c3 + d948: f008 0801 and.w r8, r8, #1 case BMC_FAS_CMD_TUNER_ON: return sync.fas.tuner.isOn(); - d81c: f7fe b8ac b.w b978 - d820: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d824: f895 8373 ldrb.w r8, [r5, #883] ; 0x373 - d828: f008 0801 and.w r8, r8, #1 + d94c: f7fe b87f b.w ba4e + d950: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d954: f895 8393 ldrb.w r8, [r5, #915] ; 0x393 + d958: f008 0801 and.w r8, r8, #1 case BMC_FAS_CMD_CONNECTION: return sync.fas.connected(); - d82c: f7fe b8a4 b.w b978 - d830: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d834: f8b5 835c ldrh.w r8, [r5, #860] ; 0x35c + d95c: f7fe b877 b.w ba4e + d960: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d964: f8b5 837c ldrh.w r8, [r5, #892] ; 0x37c case BMC_FAS_CMD_LOOPER_CLEAR: return sync.fas.looperTrackRecorded(); - d838: f008 0801 and.w r8, r8, #1 - d83c: f7fe b89c b.w b978 + d968: f008 0801 and.w r8, r8, #1 + d96c: f7fe b86f b.w ba4e return data; - d840: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d970: f505 5540 add.w r5, r5, #12288 ; 0x3000 } bool looperStoppedWithTrack(){ return looperStopped() && looperTrackRecorded(); } bool looperStopped(){ return (device.looper.getStates()&0x07)==0; - d844: f895 8377 ldrb.w r8, [r5, #887] ; 0x377 + d974: f895 8397 ldrb.w r8, [r5, #919] ; 0x397 case BMC_FAS_CMD_LOOPER_STOP: return sync.fas.looperStopped(); - d848: fab8 f888 clz r8, r8 - d84c: ea4f 1858 mov.w r8, r8, lsr #5 - d850: f7fe b892 b.w b978 + d978: fab8 f888 clz r8, r8 + d97c: ea4f 1858 mov.w r8, r8, lsr #5 + d980: f7fe b865 b.w ba4e return bitRead(data, bit); - d854: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d858: f895 8377 ldrb.w r8, [r5, #887] ; 0x377 - d85c: f018 0f02 tst.w r8, #2 - d860: bf18 it ne - d862: f04f 0801 movne.w r8, #1 - d866: f008 0801 and.w r8, r8, #1 + d984: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d988: f895 8397 ldrb.w r8, [r5, #919] ; 0x397 + d98c: f018 0f02 tst.w r8, #2 + d990: bf18 it ne + d992: f04f 0801 movne.w r8, #1 + d996: f008 0801 and.w r8, r8, #1 case BMC_FAS_CMD_LOOPER_RPD: return sync.fas.looperPlaying() || sync.fas.looperRecording(); - d86a: f7fe b885 b.w b978 - d86e: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d872: f895 8377 ldrb.w r8, [r5, #887] ; 0x377 - d876: f018 0f02 tst.w r8, #2 - d87a: bf18 it ne - d87c: f04f 0801 movne.w r8, #1 - d880: f008 0801 and.w r8, r8, #1 + d99a: f7fe b858 b.w ba4e + d99e: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d9a2: f895 8397 ldrb.w r8, [r5, #919] ; 0x397 + d9a6: f018 0f02 tst.w r8, #2 + d9aa: bf18 it ne + d9ac: f04f 0801 movne.w r8, #1 + d9b0: f008 0801 and.w r8, r8, #1 case BMC_FAS_CMD_LOOPER_RDP: return sync.fas.looperPlaying() || sync.fas.looperRecording(); - d884: f7fe b878 b.w b978 - d888: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d88c: f8b5 835c ldrh.w r8, [r5, #860] ; 0x35c + d9b4: f7fe b84b b.w ba4e + d9b8: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d9bc: f8b5 837c ldrh.w r8, [r5, #892] ; 0x37c case BMC_FAS_CMD_TAP: return sync.fas.tempoBeat(); // only works on FAS3 - d890: f3c8 0880 ubfx r8, r8, #2, #1 - d894: f7fe b870 b.w b978 - d898: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d89c: f895 34a3 ldrb.w r3, [r5, #1187] ; 0x4a3 + d9c0: f3c8 0880 ubfx r8, r8, #2, #1 + d9c4: f7fe b843 b.w ba4e + d9c8: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d9cc: f895 34c3 ldrb.w r3, [r5, #1219] ; 0x4c3 return isOn() && (isFlat() || isSharp()); - d8a0: f013 0801 ands.w r8, r3, #1 - d8a4: f43e a868 beq.w b978 + d9d0: f013 0801 ands.w r8, r3, #1 + d9d4: f43e a83b beq.w ba4e return isOn() && flags.read(2); - d8a8: 0758 lsls r0, r3, #29 - d8aa: f3c3 0880 ubfx r8, r3, #2, #1 - d8ae: f53e a863 bmi.w b978 - d8b2: f3c3 08c0 ubfx r8, r3, #3, #1 + d9d8: 0758 lsls r0, r3, #29 + d9da: f3c3 0880 ubfx r8, r3, #2, #1 + d9de: f53e a836 bmi.w ba4e + d9e2: f3c3 08c0 ubfx r8, r3, #3, #1 case BMC_FAS_CMD_TUNER_OUT_OF_TUNE: return sync.fas.tuner.outOfTune(); - d8b6: f7fe b85f b.w b978 + d9e6: f7fe b832 b.w ba4e return bitRead(data, bit); - d8ba: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d8be: f895 8377 ldrb.w r8, [r5, #887] ; 0x377 + d9ea: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d9ee: f895 8397 ldrb.w r8, [r5, #919] ; 0x397 case BMC_FAS_CMD_LOOPER_HALF: return sync.fas.looperHalf(); - d8c2: f3c8 1840 ubfx r8, r8, #5, #1 - d8c6: f7fe b857 b.w b978 - d8ca: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d8ce: f895 8377 ldrb.w r8, [r5, #887] ; 0x377 + d9f2: f3c8 1840 ubfx r8, r8, #5, #1 + d9f6: f7fe b82a b.w ba4e + d9fa: f505 5540 add.w r5, r5, #12288 ; 0x3000 + d9fe: f895 8397 ldrb.w r8, [r5, #919] ; 0x397 case BMC_FAS_CMD_LOOPER_REV: return sync.fas.looperReversed(); - d8d2: f3c8 1800 ubfx r8, r8, #4, #1 - d8d6: f7fe b84f b.w b978 - d8da: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d8de: f895 8377 ldrb.w r8, [r5, #887] ; 0x377 + da02: f3c8 1800 ubfx r8, r8, #4, #1 + da06: f7fe b822 b.w ba4e + da0a: f505 5540 add.w r5, r5, #12288 ; 0x3000 + da0e: f895 8397 ldrb.w r8, [r5, #919] ; 0x397 case BMC_FAS_CMD_LOOPER_DUB: return sync.fas.looperDubbing(); - d8e2: f3c8 0880 ubfx r8, r8, #2, #1 - d8e6: f7fe b847 b.w b978 - d8ea: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d8ee: f895 8377 ldrb.w r8, [r5, #887] ; 0x377 - d8f2: f008 0801 and.w r8, r8, #1 + da12: f3c8 0880 ubfx r8, r8, #2, #1 + da16: f7fe b81a b.w ba4e + da1a: f505 5540 add.w r5, r5, #12288 ; 0x3000 + da1e: f895 8397 ldrb.w r8, [r5, #919] ; 0x397 + da22: f008 0801 and.w r8, r8, #1 case BMC_FAS_CMD_LOOPER_REC: return sync.fas.looperRecording(); - d8f6: f7fe b83f b.w b978 - d8fa: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d8fe: f895 8377 ldrb.w r8, [r5, #887] ; 0x377 + da26: f7fe b812 b.w ba4e + da2a: f505 5540 add.w r5, r5, #12288 ; 0x3000 + da2e: f895 8397 ldrb.w r8, [r5, #919] ; 0x397 case BMC_FAS_CMD_LOOPER_PLAY: return sync.fas.looperPlaying(); - d902: f3c8 0840 ubfx r8, r8, #1, #1 - d906: f7fe b837 b.w b978 - d90a: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d90e: f895 34a3 ldrb.w r3, [r5, #1187] ; 0x4a3 + da32: f3c8 0840 ubfx r8, r8, #1, #1 + da36: f7fe b80a b.w ba4e + da3a: f505 5540 add.w r5, r5, #12288 ; 0x3000 + da3e: f895 34c3 ldrb.w r3, [r5, #1219] ; 0x4c3 return isOn() && flags.read(5); - d912: f013 0801 ands.w r8, r3, #1 - d916: f43e a82f beq.w b978 - d91a: f3c3 1840 ubfx r8, r3, #5, #1 + da42: f013 0801 ands.w r8, r3, #1 + da46: f43e a802 beq.w ba4e + da4a: f3c3 1840 ubfx r8, r3, #5, #1 case BMC_FAS_CMD_TUNER_SHARPEST: return sync.fas.tuner.isSharpest(); - d91e: f7fe b82b b.w b978 - d922: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d926: f895 34a3 ldrb.w r3, [r5, #1187] ; 0x4a3 + da4e: f7fd bffe b.w ba4e + da52: f505 5540 add.w r5, r5, #12288 ; 0x3000 + da56: f895 34c3 ldrb.w r3, [r5, #1219] ; 0x4c3 return isOn() && flags.read(4); - d92a: f013 0801 ands.w r8, r3, #1 - d92e: f43e a823 beq.w b978 - d932: f3c3 1800 ubfx r8, r3, #4, #1 + da5a: f013 0801 ands.w r8, r3, #1 + da5e: f43d aff6 beq.w ba4e + da62: f3c3 1800 ubfx r8, r3, #4, #1 case BMC_FAS_CMD_TUNER_SHARPER: return sync.fas.tuner.isSharper(); - d936: f7fe b81f b.w b978 - d93a: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d93e: f895 34a3 ldrb.w r3, [r5, #1187] ; 0x4a3 + da66: f7fd bff2 b.w ba4e + da6a: f505 5540 add.w r5, r5, #12288 ; 0x3000 + da6e: f895 34c3 ldrb.w r3, [r5, #1219] ; 0x4c3 return isOn() && flags.read(3); - d942: f013 0801 ands.w r8, r3, #1 - d946: f43e a817 beq.w b978 - d94a: f3c3 08c0 ubfx r8, r3, #3, #1 + da72: f013 0801 ands.w r8, r3, #1 + da76: f43d afea beq.w ba4e + da7a: f3c3 08c0 ubfx r8, r3, #3, #1 case BMC_FAS_CMD_TUNER_SHARP: return sync.fas.tuner.isSharp(); - d94e: f7fe b813 b.w b978 - d952: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d956: f895 34a3 ldrb.w r3, [r5, #1187] ; 0x4a3 + da7e: f7fd bfe6 b.w ba4e + da82: f505 5540 add.w r5, r5, #12288 ; 0x3000 + da86: f895 34c3 ldrb.w r3, [r5, #1219] ; 0x4c3 return isOn() && flags.read(1); - d95a: f013 0801 ands.w r8, r3, #1 - d95e: f43e a80b beq.w b978 - d962: f3c3 0840 ubfx r8, r3, #1, #1 + da8a: f013 0801 ands.w r8, r3, #1 + da8e: f43d afde beq.w ba4e + da92: f3c3 0840 ubfx r8, r3, #1, #1 case BMC_FAS_CMD_TUNER_FLATTER: return sync.fas.tuner.isFlatter(); - d966: f7fe b807 b.w b978 - d96a: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d96e: f895 34a3 ldrb.w r3, [r5, #1187] ; 0x4a3 + da96: f7fd bfda b.w ba4e + da9a: f505 5540 add.w r5, r5, #12288 ; 0x3000 + da9e: f895 34c3 ldrb.w r3, [r5, #1219] ; 0x4c3 return isOn() && flags.read(2); - d972: f013 0801 ands.w r8, r3, #1 - d976: f43d afff beq.w b978 - d97a: f3c3 0880 ubfx r8, r3, #2, #1 + daa2: f013 0801 ands.w r8, r3, #1 + daa6: f43d afd2 beq.w ba4e + daaa: f3c3 0880 ubfx r8, r3, #2, #1 case BMC_FAS_CMD_TUNER_FLAT: return sync.fas.tuner.isFlat(); - d97e: f7fd bffb b.w b978 - d982: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d986: f895 34a3 ldrb.w r3, [r5, #1187] ; 0x4a3 + daae: f7fd bfce b.w ba4e + dab2: f505 5540 add.w r5, r5, #12288 ; 0x3000 + dab6: f895 34c3 ldrb.w r3, [r5, #1219] ; 0x4c3 return isOn() && (!isFlat() && !isSharp()); - d98a: f013 0801 ands.w r8, r3, #1 - d98e: f43d aff3 beq.w b978 + daba: f013 0801 ands.w r8, r3, #1 + dabe: f43d afc6 beq.w ba4e return isOn() && flags.read(2); - d992: 075c lsls r4, r3, #29 - d994: f102 86c8 bmi.w 10728 - d998: f3c3 03c0 ubfx r3, r3, #3, #1 + dac2: 075c lsls r4, r3, #29 + dac4: f103 8217 bmi.w 10ef6 + dac8: f3c3 03c0 ubfx r3, r3, #3, #1 return isOn() && flags.read(3); - d99c: f083 0801 eor.w r8, r3, #1 - d9a0: f7fd bfea b.w b978 - d9a4: f505 5540 add.w r5, r5, #12288 ; 0x3000 - d9a8: f895 84a3 ldrb.w r8, [r5, #1187] ; 0x4a3 - d9ac: f008 0801 and.w r8, r8, #1 + dacc: f083 0801 eor.w r8, r3, #1 + dad0: f7fd bfbd b.w ba4e + dad4: f505 5540 add.w r5, r5, #12288 ; 0x3000 + dad8: f895 84c3 ldrb.w r8, [r5, #1219] ; 0x4c3 + dadc: f008 0801 and.w r8, r8, #1 case BMC_FAS_CMD_TUNER_OFF: return !sync.fas.tuner.isOn(); - d9b0: f088 0801 eor.w r8, r8, #1 - d9b4: f7fd bfe0 b.w b978 - if(n<2){ - d9b8: 69fb ldr r3, [r7, #28] - d9ba: 2b01 cmp r3, #1 - d9bc: f241 803c bls.w ea38 - d9c0: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c - return midiInActivity() || midiOutActivity(); - d9c4: 07d8 lsls r0, r3, #31 - d9c6: f101 8299 bmi.w eefc - return globals.hasMidiActivity(data.byteA) ? BMC_PULSE_LED_EVENT : BMC_IGNORE_LED_EVENT; - d9ca: f013 0f02 tst.w r3, #2 - d9ce: bf0c ite eq - d9d0: f04f 08ff moveq.w r8, #255 ; 0xff - d9d4: f04f 0802 movne.w r8, #2 - d9d8: f7fd bfce b.w b978 - return BMC_TO_MIDI_CHANNEL(byteA); - d9dc: 69fb ldr r3, [r7, #28] - if(data.byteB==0){ - d9de: 69b9 ldr r1, [r7, #24] - d9e0: f003 030f and.w r3, r3, #15 - d9e4: 1c5a adds r2, r3, #1 - d9e6: 2900 cmp r1, #0 - d9e8: f040 8729 bne.w e83e - return (ch - } else if(value>68){ - da04: 6af9 ldr r1, [r7, #44] ; 0x2c - da06: 2944 cmp r1, #68 ; 0x44 - da08: f202 810c bhi.w fc24 - } else if(pitch!=0){ - da0c: 2b00 cmp r3, #0 - da0e: f43d afb1 beq.w b974 - midi.sendPitchBend(e.ports, channel, 0); - da12: 697b ldr r3, [r7, #20] - da14: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - da18: 69bd ldr r5, [r7, #24] - da1a: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - da1e: 462b mov r3, r5 - da20: 9500 str r5, [sp, #0] - da22: f016 f93f bl 23ca4 - channel[ch].pitch = (t_value & 0x7F); - da26: f884 5ace strb.w r5, [r4, #2766] ; 0xace - globals.setMidiLocalUpdate(true); - da2a: f8da 2ac8 ldr.w r2, [sl, #2760] ; 0xac8 - return BMC_OFF_LED_EVENT; - da2e: 46a8 mov r8, r5 - bitWrite(flags, bit, value); - da30: 6dd3 ldr r3, [r2, #92] ; 0x5c - da32: f043 0320 orr.w r3, r3, #32 - da36: 65d3 str r3, [r2, #92] ; 0x5c - } - da38: f7fd bf9e b.w b978 - da3c: f505 5940 add.w r9, r5, #12288 ; 0x3000 - da40: f899 3373 ldrb.w r3, [r9, #883] ; 0x373 + dae0: f088 0801 eor.w r8, r8, #1 + dae4: f7fd bfb3 b.w ba4e + dae8: f64f 73ff movw r3, #65535 ; 0xffff + daec: f7fe b9ce b.w be8c + daf0: f505 5940 add.w r9, r5, #12288 ; 0x3000 + daf4: f899 3393 ldrb.w r3, [r9, #915] ; 0x393 if(!sync.fas.connected()){ - da44: 07de lsls r6, r3, #31 - da46: f57d af95 bpl.w b974 + daf8: 07d8 lsls r0, r3, #31 + dafa: f57d afa6 bpl.w ba4a switch(data.byteA){ - da4a: 69fa ldr r2, [r7, #28] - da4c: 2a08 cmp r2, #8 - da4e: f203 84e7 bhi.w 11420 - da52: e8df f002 tbb [pc, r2] - da56: 3847 .short 0x3847 - da58: 05050515 .word 0x05050515 - da5c: 6005 .short 0x6005 - da5e: 54 .byte 0x54 - da5f: 00 .byte 0x00 + dafe: 69fa ldr r2, [r7, #28] + db00: 2a08 cmp r2, #8 + db02: f203 84c2 bhi.w 1148a + db06: e8df f002 tbb [pc, r2] + db0a: 3844 .short 0x3844 + db0c: 05050515 .word 0x05050515 + db10: 5d05 .short 0x5d05 + db12: 51 .byte 0x51 + db13: 00 .byte 0x00 sync.fas.setBlockChannel(data.byteB, data.byteA-3); - da60: 69fb ldr r3, [r7, #28] + db14: 69fb ldr r3, [r7, #28] fetchSysEx(BMC_FAS3_FUNC_ID_CHANNEL, t_block, t_channel, BMC_FAS3_FETCH_TYPE_14_AND_7_BIT); - da62: 2402 movs r4, #2 - da64: f243 3054 movw r0, #13140 ; 0x3354 - da68: 69ba ldr r2, [r7, #24] - da6a: 3b03 subs r3, #3 - da6c: 210b movs r1, #11 - da6e: 4428 add r0, r5 - da70: 9400 str r4, [sp, #0] - da72: b2db uxtb r3, r3 + db16: 2402 movs r4, #2 + db18: f243 3074 movw r0, #13172 ; 0x3374 + db1c: 69ba ldr r2, [r7, #24] + db1e: 3b03 subs r3, #3 + db20: 210b movs r1, #11 + db22: 4428 add r0, r5 + db24: 9400 str r4, [sp, #0] + db26: b2db uxtb r3, r3 return 1; - da74: f04f 0801 mov.w r8, #1 - da78: f7f3 fcaa bl 13d0 + db28: f04f 0801 mov.w r8, #1 + db2c: f7f3 fc50 bl 13d0 return; - da7c: f7fd bf7c b.w b978 + db30: f7fd bf8d b.w ba4e sync.fas.toggleBlockState(data.byteB); // toggle bypass block - da80: f243 3054 movw r0, #13140 ; 0x3354 - da84: f243 41ac movw r1, #13484 ; 0x34ac - da88: 8b3a ldrh r2, [r7, #24] + db34: f243 3074 movw r0, #13172 ; 0x3374 + db38: f243 41cc movw r1, #13516 ; 0x34cc + db3c: 8b3a ldrh r2, [r7, #24] for(int e = 0; e < BMC_FAS3_BLOCKS_COUNT; e++){ - da8a: 2300 movs r3, #0 - da8c: 4428 add r0, r5 - da8e: 4429 add r1, r5 - da90: e003 b.n da9a - da92: 3301 adds r3, #1 - da94: 2b5b cmp r3, #91 ; 0x5b - da96: f002 872d beq.w 108f4 + db3e: 2300 movs r3, #0 + db40: 4428 add r0, r5 + db42: 4429 add r1, r5 + db44: e003 b.n db4e + db46: 3301 adds r3, #1 + db48: 2b5b cmp r3, #91 ; 0x5b + db4a: f003 8159 beq.w 10e00 if(blocksInfo[e].id == n){ - da9a: f811 4033 ldrb.w r4, [r1, r3, lsl #3] - da9e: 69bd ldr r5, [r7, #24] - daa0: 42ac cmp r4, r5 - daa2: d1f6 bne.n da92 + db4e: f811 4033 ldrb.w r4, [r1, r3, lsl #3] + db52: 69bd ldr r5, [r7, #24] + db54: 42ac cmp r4, r5 + db56: d1f6 bne.n db46 return bitRead(blockStates[t_id], 0)==0; - daa4: 444b add r3, r9 - daa6: f893 3439 ldrb.w r3, [r3, #1081] ; 0x439 - daaa: 43db mvns r3, r3 + db58: 444b add r3, r9 + db5a: f893 3459 ldrb.w r3, [r3, #1113] ; 0x459 + db5e: 43db mvns r3, r3 if(isBlockEngaged(n)){ - daac: f013 0301 ands.w r3, r3, #1 - dab0: f042 8720 bne.w 108f4 + db60: f013 0301 ands.w r3, r3, #1 + db64: f043 814c bne.w 10e00 fetchSysEx(BMC_FAS3_FUNC_ID_BYPASS, t_block, 0, BMC_FAS3_FETCH_TYPE_14_AND_7_BIT); - dab4: 2402 movs r4, #2 - dab6: 210a movs r1, #10 + db68: 2402 movs r4, #2 + db6a: 210a movs r1, #10 return 1; - dab8: f04f 0801 mov.w r8, #1 - dabc: 9400 str r4, [sp, #0] - dabe: f7f3 fc87 bl 13d0 + db6c: f04f 0801 mov.w r8, #1 + db70: 9400 str r4, [sp, #0] + db72: f7f3 fc2d bl 13d0 } - dac2: f7fd bf59 b.w b978 + db76: f7fd bf6a b.w ba4e fetchSysEx(BMC_FAS3_FUNC_ID_BYPASS, t_block, 0, BMC_FAS3_FETCH_TYPE_14_AND_7_BIT); - dac6: 2102 movs r1, #2 - dac8: f243 3054 movw r0, #13140 ; 0x3354 - dacc: 69ba ldr r2, [r7, #24] - dace: 2300 movs r3, #0 - dad0: 9100 str r1, [sp, #0] - dad2: 4428 add r0, r5 - dad4: 210a movs r1, #10 - dad6: f7f3 fc7b bl 13d0 - dada: f7fd bf4d b.w b978 - dade: bf00 nop - dae0: 2000bae8 .word 0x2000bae8 + db7a: 2102 movs r1, #2 + db7c: f243 3074 movw r0, #13172 ; 0x3374 + db80: 69ba ldr r2, [r7, #24] + db82: 2300 movs r3, #0 + db84: 9100 str r1, [sp, #0] + db86: 4428 add r0, r5 + db88: 210a movs r1, #10 + db8a: f7f3 fc21 bl 13d0 + db8e: f7fd bf5e b.w ba4e fetchSysEx(BMC_FAS3_FUNC_ID_BYPASS, t_block, 1, BMC_FAS3_FETCH_TYPE_14_AND_7_BIT); - dae4: 2402 movs r4, #2 - dae6: f243 3054 movw r0, #13140 ; 0x3354 - daea: 2301 movs r3, #1 - daec: 69ba ldr r2, [r7, #24] - daee: 210a movs r1, #10 - daf0: 4428 add r0, r5 - daf2: 9400 str r4, [sp, #0] - daf4: 4698 mov r8, r3 - daf6: f7f3 fc6b bl 13d0 - dafa: f7fd bf3d b.w b978 + db92: 2402 movs r4, #2 + db94: f243 3074 movw r0, #13172 ; 0x3374 + db98: 2301 movs r3, #1 + db9a: 69ba ldr r2, [r7, #24] + db9c: 210a movs r1, #10 + db9e: 4428 add r0, r5 + dba0: 9400 str r4, [sp, #0] + dba2: 4698 mov r8, r3 + dba4: f7f3 fc14 bl 13d0 + dba8: f7fd bf51 b.w ba4e if(!connected()){ - dafe: f243 3054 movw r0, #13140 ; 0x3354 - db02: 2303 movs r3, #3 - db04: 2202 movs r2, #2 - db06: 69b9 ldr r1, [r7, #24] - db08: 4428 add r0, r5 - db0a: f04f 0801 mov.w r8, #1 - db0e: f7fb faff bl 9110 - db12: f7fd bf31 b.w b978 - db16: f243 3054 movw r0, #13140 ; 0x3354 - db1a: 2301 movs r3, #1 - db1c: 2200 movs r2, #0 - db1e: 69b9 ldr r1, [r7, #24] - db20: 4428 add r0, r5 - db22: 4698 mov r8, r3 - db24: f7fb faf4 bl 9110 - db28: f7fd bf26 b.w b978 + dbac: f243 3074 movw r0, #13172 ; 0x3374 + dbb0: 2303 movs r3, #3 + dbb2: 2202 movs r2, #2 + dbb4: 69b9 ldr r1, [r7, #24] + dbb6: 4428 add r0, r5 + dbb8: f04f 0801 mov.w r8, #1 + dbbc: f7fb fa78 bl 90b0 + dbc0: f7fd bf45 b.w ba4e + dbc4: f243 3074 movw r0, #13172 ; 0x3374 + dbc8: 2301 movs r3, #1 + dbca: 2200 movs r2, #0 + dbcc: 69b9 ldr r1, [r7, #24] + dbce: 4428 add r0, r5 + dbd0: 4698 mov r8, r3 + dbd2: f7fb fa6d bl 90b0 + dbd6: f7fd bf3a b.w ba4e return BMC_TO_MIDI_CHANNEL(byteA); - db2c: 69fb ldr r3, [r7, #28] + dbda: 69fb ldr r3, [r7, #28] midiProgramBankTrigger(data.getChannel(), e.ports); - db2e: 4628 mov r0, r5 + dbdc: 4628 mov r0, r5 return BMC_OFF_LED_EVENT; - db30: f04f 0800 mov.w r8, #0 - db34: f003 010f and.w r1, r3, #15 + dbde: f04f 0800 mov.w r8, #0 + dbe2: f003 010f and.w r1, r3, #15 midiProgramBankTrigger(data.getChannel(), e.ports); - db38: 697b ldr r3, [r7, #20] - db3a: 3101 adds r1, #1 - db3c: f893 2033 ldrb.w r2, [r3, #51] ; 0x33 - db40: f009 fb72 bl 17228 - db44: f7fd bf18 b.w b978 + dbe6: 697b ldr r3, [r7, #20] + dbe8: 3101 adds r1, #1 + dbea: f893 2033 ldrb.w r2, [r3, #51] ; 0x33 + dbee: f009 fb77 bl 172e0 + dbf2: f7fd bf2c b.w ba4e + dbf6: 69fb ldr r3, [r7, #28] + if(data.byteB==0){ + dbf8: 69b9 ldr r1, [r7, #24] + dbfa: f003 030f and.w r3, r3, #15 + dbfe: 1c5a adds r2, r3, #1 + dc00: 2900 cmp r1, #0 + dc02: f040 8619 bne.w e838 + return (ch + } else if(value>68){ + dc1e: 6af9 ldr r1, [r7, #44] ; 0x2c + dc20: 2944 cmp r1, #68 ; 0x44 + dc22: f201 86f5 bhi.w fa10 + } else if(pitch!=0){ + dc26: 2b00 cmp r3, #0 + dc28: f43d af0f beq.w ba4a + midi.sendPitchBend(e.ports, channel, 0); + dc2c: 697b ldr r3, [r7, #20] + dc2e: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + dc32: 69bd ldr r5, [r7, #24] + dc34: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + dc38: 462b mov r3, r5 + dc3a: 9500 str r5, [sp, #0] + dc3c: f016 f898 bl 23d70 + channel[ch].pitch = (t_value & 0x7F); + dc40: f884 5ace strb.w r5, [r4, #2766] ; 0xace + globals.setMidiLocalUpdate(true); + dc44: f8da 2ac8 ldr.w r2, [sl, #2760] ; 0xac8 + return BMC_OFF_LED_EVENT; + dc48: 46a8 mov r8, r5 + bitWrite(flags, bit, value); + dc4a: 6dd3 ldr r3, [r2, #92] ; 0x5c + dc4c: f043 0320 orr.w r3, r3, #32 + dc50: 65d3 str r3, [r2, #92] ; 0x5c + } + dc52: f7fd befc b.w ba4e switch(data.byteA){ - db48: 69fa ldr r2, [r7, #28] - db4a: 2a0b cmp r2, #11 - db4c: f63d afdf bhi.w bb0e - db50: a301 add r3, pc, #4 ; (adr r3, db58 ) - db52: f853 f022 ldr.w pc, [r3, r2, lsl #2] - db56: bf00 nop - db58: 0000dc5f .word 0x0000dc5f - db5c: 0000b979 .word 0x0000b979 - db60: 0000dc53 .word 0x0000dc53 - db64: 0000dc47 .word 0x0000dc47 - db68: 0000dc3b .word 0x0000dc3b - db6c: 0000dc25 .word 0x0000dc25 - db70: 0000dc0f .word 0x0000dc0f - db74: 0000dbff .word 0x0000dbff - db78: 0000dbef .word 0x0000dbef - db7c: 0000dbcd .word 0x0000dbcd - db80: 0000dbab .word 0x0000dbab - db84: 0000db89 .word 0x0000db89 + dc56: 69fa ldr r2, [r7, #28] + dc58: 2a0b cmp r2, #11 + dc5a: f63d afbb bhi.w bbd4 + dc5e: a301 add r3, pc, #4 ; (adr r3, dc64 ) + dc60: f853 f022 ldr.w pc, [r3, r2, lsl #2] + dc64: 0000dd6b .word 0x0000dd6b + dc68: 0000ba4f .word 0x0000ba4f + dc6c: 0000dd5f .word 0x0000dd5f + dc70: 0000dd53 .word 0x0000dd53 + dc74: 0000dd47 .word 0x0000dd47 + dc78: 0000dd31 .word 0x0000dd31 + dc7c: 0000dd1b .word 0x0000dd1b + dc80: 0000dd0b .word 0x0000dd0b + dc84: 0000dcfb .word 0x0000dcfb + dc88: 0000dcd9 .word 0x0000dcd9 + dc8c: 0000dcb7 .word 0x0000dcb7 + dc90: 0000dc95 .word 0x0000dc95 return running; - db88: f505 5340 add.w r3, r5, #12288 ; 0x3000 + dc94: f505 5340 add.w r3, r5, #12288 ; 0x3000 if(active()){ - db8c: f893 0824 ldrb.w r0, [r3, #2084] ; 0x824 - db90: b120 cbz r0, db9c - db92: f643 0024 movw r0, #14372 ; 0x3824 - db96: 4428 add r0, r5 - db98: f7f9 f8bc bl 6d14 + dc98: f893 0844 ldrb.w r0, [r3, #2116] ; 0x844 + dc9c: b120 cbz r0, dca8 + dc9e: f643 0044 movw r0, #14404 ; 0x3844 + dca2: 4428 add r0, r5 + dca4: f7f9 f86e bl 6d84 return (stopwatch.getState() == 2); - db9c: 1e84 subs r4, r0, #2 - db9e: f1d4 0800 rsbs r8, r4, #0 - dba2: eb48 0804 adc.w r8, r8, r4 - dba6: f7fd bee7 b.w b978 + dca8: 1e84 subs r4, r0, #2 + dcaa: f1d4 0800 rsbs r8, r4, #0 + dcae: eb48 0804 adc.w r8, r8, r4 + dcb2: f7fd becc b.w ba4e return running; - dbaa: f505 5340 add.w r3, r5, #12288 ; 0x3000 + dcb6: f505 5340 add.w r3, r5, #12288 ; 0x3000 if(active()){ - dbae: f893 0824 ldrb.w r0, [r3, #2084] ; 0x824 - dbb2: b120 cbz r0, dbbe - dbb4: f643 0024 movw r0, #14372 ; 0x3824 - dbb8: 4428 add r0, r5 - dbba: f7f9 f8ab bl 6d14 + dcba: f893 0844 ldrb.w r0, [r3, #2116] ; 0x844 + dcbe: b120 cbz r0, dcca + dcc0: f643 0044 movw r0, #14404 ; 0x3844 + dcc4: 4428 add r0, r5 + dcc6: f7f9 f85d bl 6d84 return (stopwatch.getState() == 1); - dbbe: 1e45 subs r5, r0, #1 - dbc0: f1d5 0800 rsbs r8, r5, #0 - dbc4: eb48 0805 adc.w r8, r8, r5 - dbc8: f7fd bed6 b.w b978 + dcca: 1e45 subs r5, r0, #1 + dccc: f1d5 0800 rsbs r8, r5, #0 + dcd0: eb48 0805 adc.w r8, r8, r5 + dcd4: f7fd bebb b.w ba4e return running; - dbcc: f505 5340 add.w r3, r5, #12288 ; 0x3000 + dcd8: f505 5340 add.w r3, r5, #12288 ; 0x3000 if(active()){ - dbd0: f893 0824 ldrb.w r0, [r3, #2084] ; 0x824 - dbd4: b120 cbz r0, dbe0 - dbd6: f643 0024 movw r0, #14372 ; 0x3824 - dbda: 4428 add r0, r5 - dbdc: f7f9 f89a bl 6d14 + dcdc: f893 0844 ldrb.w r0, [r3, #2116] ; 0x844 + dce0: b120 cbz r0, dcec + dce2: f643 0044 movw r0, #14404 ; 0x3844 + dce6: 4428 add r0, r5 + dce8: f7f9 f84c bl 6d84 return (stopwatch.getState() > 0); - dbe0: f1b0 0800 subs.w r8, r0, #0 - dbe4: bf18 it ne - dbe6: f04f 0801 movne.w r8, #1 - dbea: f7fd bec5 b.w b978 + dcec: f1b0 0800 subs.w r8, r0, #0 + dcf0: bf18 it ne + dcf2: f04f 0801 movne.w r8, #1 + dcf6: f7fd beaa b.w ba4e return bitRead(flags, bit); - dbee: f89a 8acc ldrb.w r8, [sl, #2764] ; 0xacc - dbf2: f3c8 0880 ubfx r8, r8, #2, #1 + dcfa: f89a 8acc ldrb.w r8, [sl, #2764] ; 0xacc + dcfe: f3c8 0880 ubfx r8, r8, #2, #1 return !midi.getRealTimeBlockOutput(); - dbf6: f088 0801 eor.w r8, r8, #1 - dbfa: f7fd bebd b.w b978 - dbfe: f89a 8acc ldrb.w r8, [sl, #2764] ; 0xacc - dc02: f3c8 0840 ubfx r8, r8, #1, #1 + dd02: f088 0801 eor.w r8, r8, #1 + dd06: f7fd bea2 b.w ba4e + dd0a: f89a 8acc ldrb.w r8, [sl, #2764] ; 0xacc + dd0e: f3c8 0840 ubfx r8, r8, #1, #1 return !midi.getRealTimeBlockInput(); - dc06: f088 0801 eor.w r8, r8, #1 - dc0a: f7fd beb5 b.w b978 + dd12: f088 0801 eor.w r8, r8, #1 + dd16: f7fd be9a b.w ba4e return (prevTime>0); - dc0e: f505 5540 add.w r5, r5, #12288 ; 0x3000 - dc12: f8d5 31e4 ldr.w r3, [r5, #484] ; 0x1e4 + dd1a: f505 5540 add.w r5, r5, #12288 ; 0x3000 + dd1e: f8d5 3204 ldr.w r3, [r5, #516] ; 0x204 return midiActiveSense.reading(); - dc16: f1b3 0800 subs.w r8, r3, #0 - dc1a: bf18 it ne - dc1c: f04f 0801 movne.w r8, #1 - dc20: f7fd beaa b.w b978 - dc24: f505 5540 add.w r5, r5, #12288 ; 0x3000 - dc28: f8d5 31dc ldr.w r3, [r5, #476] ; 0x1dc + dd22: f1b3 0800 subs.w r8, r3, #0 + dd26: bf18 it ne + dd28: f04f 0801 movne.w r8, #1 + dd2c: f7fd be8f b.w ba4e + dd30: f505 5540 add.w r5, r5, #12288 ; 0x3000 + dd34: f8d5 31fc ldr.w r3, [r5, #508] ; 0x1fc return midiActiveSense.active(); - dc2c: f1b3 0800 subs.w r8, r3, #0 - dc30: bf18 it ne - dc32: f04f 0801 movne.w r8, #1 - dc36: f7fd be9f b.w b978 - dc3a: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + dd38: f1b3 0800 subs.w r8, r3, #0 + dd3c: bf18 it ne + dd3e: f04f 0801 movne.w r8, #1 + dd42: f7fd be84 b.w ba4e + dd46: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c return globals.bleConnected(); - dc3e: f3c3 1800 ubfx r8, r3, #4, #1 - dc42: f7fd be99 b.w b978 - dc46: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + dd4a: f3c3 1800 ubfx r8, r3, #4, #1 + dd4e: f7fd be7e b.w ba4e + dd52: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c return globals.hostConnected(); - dc4a: f3c3 08c0 ubfx r8, r3, #3, #1 - dc4e: f7fd be93 b.w b978 - dc52: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + dd56: f3c3 08c0 ubfx r8, r3, #3, #1 + dd5a: f7fd be78 b.w ba4e + dd5e: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c return globals.editorConnected(); - dc56: f3c3 0880 ubfx r8, r3, #2, #1 - dc5a: f7fd be8d b.w b978 - dc5e: f89a 8964 ldrb.w r8, [sl, #2404] ; 0x964 + dd62: f3c3 0880 ubfx r8, r3, #2, #1 + dd66: f7fd be72 b.w ba4e + dd6a: f89a 8968 ldrb.w r8, [sl, #2408] ; 0x968 return flags.read(BMC_FLAGS_STATUS_LED); - dc62: f3c8 08c0 ubfx r8, r8, #3, #1 - dc66: f7fd be87 b.w b978 - if(data.byteA==0){ - dc6a: 69fb ldr r3, [r7, #28] - dc6c: 2b00 cmp r3, #0 - dc6e: f040 856f bne.w e750 - if(data.byteB >= 2){ - dc72: 69bb ldr r3, [r7, #24] - dc74: 2b01 cmp r3, #1 - dc76: f241 838a bls.w f38e - flags ^= 1UL << bit; - dc7a: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc - dc7e: f083 0302 eor.w r3, r3, #2 - dc82: f88a 3acc strb.w r3, [sl, #2764] ; 0xacc - return flags.toggle(BMC_FLAG_MIDI_REAL_TIME_BLOCK_INPUT); - dc86: f7fd be77 b.w b978 + dd6e: f3c8 08c0 ubfx r8, r8, #3, #1 + dd72: f7fd be6c b.w ba4e + if(n<2){ + dd76: 69fb ldr r3, [r7, #28] + dd78: 2b01 cmp r3, #1 + dd7a: f240 86e3 bls.w eb44 + dd7e: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + return midiInActivity() || midiOutActivity(); + dd82: 07d8 lsls r0, r3, #31 + dd84: f100 86f9 bmi.w eb7a + return globals.hasMidiActivity(data.byteA) ? BMC_PULSE_LED_EVENT : BMC_IGNORE_LED_EVENT; + dd88: f013 0f02 tst.w r3, #2 + dd8c: bf0c ite eq + dd8e: f04f 08ff moveq.w r8, #255 ; 0xff + dd92: f04f 0802 movne.w r8, #2 + dd96: f7fd be5a b.w ba4e if(data.scrollEnabled()){ - dc8a: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - dc8e: b123 cbz r3, dc9a + dd9a: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + dd9e: b123 cbz r3, ddaa if(data.byteA>=BMC_BEATBUDDY_CMD_TRANS_PART_1 && data.byteA<=BMC_BEATBUDDY_CMD_TRANS_PART_125){ - dc90: 69fb ldr r3, [r7, #28] - dc92: 3b65 subs r3, #101 ; 0x65 - dc94: 2b7c cmp r3, #124 ; 0x7c - dc96: f241 8240 bls.w f11a + dda0: 69fb ldr r3, [r7, #28] + dda2: 3b65 subs r3, #101 ; 0x65 + dda4: 2b7c cmp r3, #124 ; 0x7c + dda6: f241 8266 bls.w f276 size_t print(const char s[]) { return write(s); } - dc9a: 49c6 ldr r1, [pc, #792] ; (dfb4 ) + ddaa: 49c8 ldr r1, [pc, #800] ; (e0cc ) return BMC_OFF_LED_EVENT; - dc9c: f04f 0800 mov.w r8, #0 - dca0: 48c5 ldr r0, [pc, #788] ; (dfb8 ) - dca2: f7f9 f92d bl 6f00 - dca6: 49c5 ldr r1, [pc, #788] ; (dfbc ) - dca8: 48c3 ldr r0, [pc, #780] ; (dfb8 ) - dcaa: f7f9 f929 bl 6f00 + ddac: f04f 0800 mov.w r8, #0 + ddb0: 48c7 ldr r0, [pc, #796] ; (e0d0 ) + ddb2: f7f9 f8dd bl 6f70 + ddb6: 49c7 ldr r1, [pc, #796] ; (e0d4 ) + ddb8: 48c5 ldr r0, [pc, #788] ; (e0d0 ) + ddba: f7f9 f8d9 bl 6f70 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - dcae: 2300 movs r3, #0 - dcb0: 220a movs r2, #10 - dcb2: 79a1 ldrb r1, [r4, #6] - dcb4: 48c0 ldr r0, [pc, #768] ; (dfb8 ) - dcb6: f01c f8f9 bl 29eac + ddbe: 2300 movs r3, #0 + ddc0: 220a movs r2, #10 + ddc2: 79a1 ldrb r1, [r4, #6] + ddc4: 48c2 ldr r0, [pc, #776] ; (e0d0 ) + ddc6: f01c f8e7 bl 29f98 size_t print(const char s[]) { return write(s); } - dcba: 49c0 ldr r1, [pc, #768] ; (dfbc ) - dcbc: 48be ldr r0, [pc, #760] ; (dfb8 ) - dcbe: f7f9 f91f bl 6f00 + ddca: 49c2 ldr r1, [pc, #776] ; (e0d4 ) + ddcc: 48c0 ldr r0, [pc, #768] ; (e0d0 ) + ddce: f7f9 f8cf bl 6f70 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - dcc2: 79e1 ldrb r1, [r4, #7] - dcc4: 2300 movs r3, #0 - dcc6: 220a movs r2, #10 - dcc8: 48bb ldr r0, [pc, #748] ; (dfb8 ) - dcca: f01c f8ef bl 29eac + ddd2: 79e1 ldrb r1, [r4, #7] + ddd4: 2300 movs r3, #0 + ddd6: 220a movs r2, #10 + ddd8: 48bd ldr r0, [pc, #756] ; (e0d0 ) + ddda: f01c f8dd bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - dcce: 48ba ldr r0, [pc, #744] ; (dfb8 ) - dcd0: f01c f8d0 bl 29e74 + ddde: 48bc ldr r0, [pc, #752] ; (e0d0 ) + dde0: f01c f8be bl 29f60 sync.beatBuddy.sendCommand(data.byteA, data.byteB); - dcd4: f243 7090 movw r0, #14224 ; 0x3790 - dcd8: 79e2 ldrb r2, [r4, #7] - dcda: 79a1 ldrb r1, [r4, #6] - dcdc: 4428 add r0, r5 - dcde: f7fb fcb7 bl 9650 - dce2: f7fd be49 b.w b978 - return BMC_TO_MIDI_CHANNEL(byteA); - dce6: 69fb ldr r3, [r7, #28] - midi.sendControlChange(e.ports, channel, 0, data.byteB & 0x7F); - dce8: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - dcec: 2600 movs r6, #0 - dcee: 697d ldr r5, [r7, #20] - dcf0: f003 020f and.w r2, r3, #15 - dcf4: 69bb ldr r3, [r7, #24] - dcf6: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 - dcfa: 3201 adds r2, #1 - dcfc: f003 037f and.w r3, r3, #127 ; 0x7f - dd00: f8cd 8008 str.w r8, [sp, #8] - dd04: 9300 str r3, [sp, #0] - dd06: 4633 mov r3, r6 - dd08: 9601 str r6, [sp, #4] - dd0a: e9c7 200a strd r2, r0, [r7, #40] ; 0x28 - dd0e: f015 fb65 bl 233dc - midi.sendControlChange(e.ports, channel, 32, data.byteC & 0x7F); - dd12: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 - dd16: 6aba ldr r2, [r7, #40] ; 0x28 - dd18: e9cd 6801 strd r6, r8, [sp, #4] - dd1c: 7a23 ldrb r3, [r4, #8] - dd1e: f003 037f and.w r3, r3, #127 ; 0x7f - dd22: 9300 str r3, [sp, #0] - dd24: 2320 movs r3, #32 - dd26: 6af8 ldr r0, [r7, #44] ; 0x2c - dd28: f015 fb58 bl 233dc - if(data.scrollEnabled()){ - dd2c: f894 509d ldrb.w r5, [r4, #157] ; 0x9d - dd30: 6af8 ldr r0, [r7, #44] ; 0x2c - dd32: 2d00 cmp r5, #0 - dd34: f000 8552 beq.w e7dc - max = t_max2-1; - dd38: 227e movs r2, #126 ; 0x7e - if(noScroll){ - dd3a: 7da3 ldrb r3, [r4, #22] - min = t_min; - dd3c: 81e6 strh r6, [r4, #14] - max = t_max2-1; - dd3e: 8222 strh r2, [r4, #16] - if(noScroll){ - dd40: b10b cbz r3, dd46 - scroll.enabled = false; - dd42: f884 609d strb.w r6, [r4, #157] ; 0x9d - midi.scrollPC(e.ports, data.getChannel(), data.scrollAmount(), data.scrollDirection(), data.scrollWrap(), data.min, data.max); - dd46: 697a ldr r2, [r7, #20] - dd48: 2500 movs r5, #0 - return scroll.amount; - dd4a: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 - dd4e: 267e movs r6, #126 ; 0x7e - dd50: f892 1033 ldrb.w r1, [r2, #51] ; 0x33 + dde4: f243 70b0 movw r0, #14256 ; 0x37b0 + dde8: 79e2 ldrb r2, [r4, #7] + ddea: 79a1 ldrb r1, [r4, #6] + ddec: 4428 add r0, r5 + ddee: f7fb fbff bl 95f0 + ddf2: f7fd be2c b.w ba4e + ddf6: f505 5540 add.w r5, r5, #12288 ; 0x3000 + ddfa: f895 31b4 ldrb.w r3, [r5, #436] ; 0x1b4 + if(isMaster() && bpmCalc.isValidBpm(tempo)){ + ddfe: 07db lsls r3, r3, #31 + de00: f57d ae23 bpl.w ba4a + midiClock.setBpm(BMC_GET_BYTE_2(0, event)); + de04: b289 uxth r1, r1 + de06: f1a1 031e sub.w r3, r1, #30 + de0a: f5b3 7f87 cmp.w r3, #270 ; 0x10e + de0e: f63d ae1c bhi.w ba4a + de12: 4bb1 ldr r3, [pc, #708] ; (e0d8 ) + interval = value; + de14: 2264 movs r2, #100 ; 0x64 return BMC_OFF_LED_EVENT; - dd54: 46a8 mov r8, r5 - return BMC_TO_MIDI_CHANNEL(byteA); - dd56: 79a2 ldrb r2, [r4, #6] - midi.scrollPC(e.ports, data.getChannel(), data.scrollAmount(), data.scrollDirection(), data.scrollWrap(), data.min, data.max); - dd58: 1b5b subs r3, r3, r5 - dd5a: e9cd 5602 strd r5, r6, [sp, #8] - dd5e: f894 509f ldrb.w r5, [r4, #159] ; 0x9f - dd62: f002 020f and.w r2, r2, #15 - dd66: bf18 it ne - dd68: 2301 movne r3, #1 - dd6a: 9501 str r5, [sp, #4] - dd6c: 3201 adds r2, #1 - dd6e: f894 409e ldrb.w r4, [r4, #158] ; 0x9e - dd72: 9400 str r4, [sp, #0] - dd74: f017 f868 bl 24e48 - dd78: f7fd bdfe b.w b978 - dd7c: f64f 73ff movw r3, #65535 ; 0xffff - dd80: f7fe b82e b.w bde0 - dd84: f505 5540 add.w r5, r5, #12288 ; 0x3000 - return midiActiveSense.active() ? 100 : 0; - dd88: f8d5 31dc ldr.w r3, [r5, #476] ; 0x1dc - dd8c: 2b00 cmp r3, #0 - dd8e: f43d adf1 beq.w b974 - return midi.getRealTimeBlockInput() ? 100 : 0; - dd92: f04f 0864 mov.w r8, #100 ; 0x64 - dd96: f7fd bdef b.w b978 - return sync.daw.getLedState(data.byteA, data.byteB); - dd9a: f243 2030 movw r0, #12848 ; 0x3230 - dd9e: e9d7 2106 ldrd r2, r1, [r7, #24] - dda2: 4428 add r0, r5 - dda4: f7fa fb1e bl 83e4 - dda8: 4680 mov r8, r0 - ddaa: f7fd bde5 b.w b978 + de16: f04f 0800 mov.w r8, #0 + tmpBpm = tempo; + de1a: f8a5 11ac strh.w r1, [r5, #428] ; 0x1ac + de1e: 681b ldr r3, [r3, #0] + de20: f8a5 21e4 strh.w r2, [r5, #484] ; 0x1e4 + prevTime = (unsigned long) _BMCTiming::get(); + de24: f8c5 31e8 str.w r3, [r5, #488] ; 0x1e8 + } + de28: f7fd be11 b.w ba4e + if(data.byteA==0){ + de2c: 69fb ldr r3, [r7, #28] + de2e: 2b00 cmp r3, #0 + de30: f040 84f4 bne.w e81c + if(data.byteB >= 2){ + de34: 69bb ldr r3, [r7, #24] + de36: 2b01 cmp r3, #1 + de38: f241 85a4 bls.w f984 + flags ^= 1UL << bit; + de3c: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc + de40: f083 0302 eor.w r3, r3, #2 + de44: f88a 3acc strb.w r3, [sl, #2764] ; 0xacc + return flags.toggle(BMC_FLAG_MIDI_REAL_TIME_BLOCK_INPUT); + de48: f7fd be01 b.w ba4e return running; - ddae: f505 5340 add.w r3, r5, #12288 ; 0x3000 + de4c: f505 5340 add.w r3, r5, #12288 ; 0x3000 if(active()){ - ddb2: f893 3824 ldrb.w r3, [r3, #2084] ; 0x824 - ddb6: 2b00 cmp r3, #0 - ddb8: f43d addc beq.w b974 - ddbc: f643 0024 movw r0, #14372 ; 0x3824 - ddc0: 4428 add r0, r5 - ddc2: f7f8 ffa7 bl 6d14 + de50: f893 3844 ldrb.w r3, [r3, #2116] ; 0x844 + de54: 2b00 cmp r3, #0 + de56: f43d adf8 beq.w ba4a + de5a: f643 0044 movw r0, #14404 ; 0x3844 + de5e: 4428 add r0, r5 + de60: f7f8 ff90 bl 6d84 return (stopwatch.getState() == 1) ? 100 : 0; - ddc6: 2801 cmp r0, #1 - ddc8: f47d add4 bne.w b974 - ddcc: f04f 0864 mov.w r8, #100 ; 0x64 - ddd0: f7fd bdd2 b.w b978 + de64: 2801 cmp r0, #1 + de66: f47d adf0 bne.w ba4a + de6a: f04f 0864 mov.w r8, #100 ; 0x64 + de6e: f7fd bdee b.w ba4e + return sync.daw.getLedState(data.byteA, data.byteB); + de72: f243 2050 movw r0, #12880 ; 0x3250 + de76: e9d7 2106 ldrd r2, r1, [r7, #24] + de7a: 4428 add r0, r5 + de7c: f7fa fa82 bl 8384 + de80: 4680 mov r8, r0 + de82: f7fd bde4 b.w ba4e long num = (x - in_min) * out_range; - ddd4: f04f 0864 mov.w r8, #100 ; 0x64 - ddd8: 693a ldr r2, [r7, #16] + de86: f04f 0864 mov.w r8, #100 ; 0x64 + de8a: 693a ldr r2, [r7, #16] long result = num / in_range + out_min; - ddda: 237f movs r3, #127 ; 0x7f + de8c: 237f movs r3, #127 ; 0x7f long num = (x - in_min) * out_range; - dddc: fb08 f802 mul.w r8, r8, r2 + de8e: fb08 f802 mul.w r8, r8, r2 num += in_range / 2; - dde0: f108 083f add.w r8, r8, #63 ; 0x3f + de92: f108 083f add.w r8, r8, #63 ; 0x3f long result = num / in_range + out_min; - dde4: fbb8 f8f3 udiv r8, r8, r3 + de96: fbb8 f8f3 udiv r8, r8, r3 return map(data.byteC, 0, 127, 0, 100); - dde8: fa5f f888 uxtb.w r8, r8 - ddec: f7fd bdc4 b.w b978 + de9a: fa5f f888 uxtb.w r8, r8 + de9e: f7fd bdd6 b.w ba4e + return (prevTime>0); + dea2: f505 5540 add.w r5, r5, #12288 ; 0x3000 + return midiActiveSense.active() ? 100 : 0; + dea6: f8d5 31fc ldr.w r3, [r5, #508] ; 0x1fc + deaa: 2b00 cmp r3, #0 + deac: f43d adcd beq.w ba4a + return midi.getRealTimeBlockInput() ? 100 : 0; + deb0: f04f 0864 mov.w r8, #100 ; 0x64 + deb4: f7fd bdcb b.w ba4e long num = (x - in_min) * out_range; - ddf0: f04f 0864 mov.w r8, #100 ; 0x64 - ddf4: 693a ldr r2, [r7, #16] + deb8: f04f 0864 mov.w r8, #100 ; 0x64 + debc: 693a ldr r2, [r7, #16] long result = num / in_range + out_min; - ddf6: 237f movs r3, #127 ; 0x7f + debe: 237f movs r3, #127 ; 0x7f long num = (x - in_min) * out_range; - ddf8: fb08 f802 mul.w r8, r8, r2 + dec0: fb08 f802 mul.w r8, r8, r2 num += in_range / 2; - ddfc: f108 083f add.w r8, r8, #63 ; 0x3f + dec4: f108 083f add.w r8, r8, #63 ; 0x3f long result = num / in_range + out_min; - de00: fbb8 f8f3 udiv r8, r8, r3 + dec8: fbb8 f8f3 udiv r8, r8, r3 return map(data.byteC, 0, 127, 0, 100); - de04: fa5f f888 uxtb.w r8, r8 - de08: f7fd bdb6 b.w b978 + decc: fa5f f888 uxtb.w r8, r8 + ded0: f7fd bdbd b.w ba4e sync.beatBuddy.tempo(event & 0x1FF); - de0c: f243 7090 movw r0, #14224 ; 0x3790 - de10: f3c1 0108 ubfx r1, r1, #0, #9 + ded4: f243 70b0 movw r0, #14256 ; 0x37b0 + ded8: f3c1 0108 ubfx r1, r1, #0, #9 return BMC_OFF_LED_EVENT; - de14: 4698 mov r8, r3 + dedc: 4698 mov r8, r3 sync.beatBuddy.tempo(event & 0x1FF); - de16: 4428 add r0, r5 - de18: f7fb fdbe bl 9998 - de1c: f7fd bdac b.w b978 - } else if((data.byteB-1) != data.byteA){ - de20: f43e aaa5 beq.w c36e - data.min = data.byteB-1; - de24: 81e3 strh r3, [r4, #14] - data.max = data.byteA; - de26: 69fb ldr r3, [r7, #28] - de28: 8223 strh r3, [r4, #16] - data.min = data.byteB-1; - de2a: f7fe baa0 b.w c36e - outVal = scroll.direction ? max : min; - de2e: 89e3 ldrh r3, [r4, #14] - de30: f7fe bd10 b.w c854 - de34: 89e2 ldrh r2, [r4, #14] - de36: f7fe bdad b.w c994 - } else if((p2 - 1) != p1){ - de3a: f43e a8e8 beq.w c00e - data.max = p1; - de3e: f8a4 8010 strh.w r8, [r4, #16] - data.min = p2 - 1; - de42: 81e3 strh r3, [r4, #14] - de44: f7fe b8e3 b.w c00e - if(group==BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - de48: f006 03fd and.w r3, r6, #253 ; 0xfd - de4c: 2b01 cmp r3, #1 - de4e: f47f ab1b bne.w d488 - return bitRead(flags, 0); - de52: f505 5340 add.w r3, r5, #12288 ; 0x3000 - return scroll.direction; - de56: f894 009e ldrb.w r0, [r4, #158] ; 0x9e - return scroll.wrap; - de5a: f894 109f ldrb.w r1, [r4, #159] ; 0x9f - de5e: f893 2373 ldrb.w r2, [r3, #883] ; 0x373 - if(!connected()){ - de62: 07d2 lsls r2, r2, #31 - de64: f57d ad86 bpl.w b974 - sync.fas.sceneScroll(data.scrollDirection(), data.scrollWrap(), data.min, data.max); - de68: 7c22 ldrb r2, [r4, #16] - setSceneNumber(scroller.scroll(1, t_up, t_wrap, preset.scene, t_min, t_max), t_revert); - de6a: f893 338e ldrb.w r3, [r3, #910] ; 0x38e - min = lowest; - de6e: 2a07 cmp r2, #7 - de70: bf28 it cs - de72: 2200 movcs r2, #0 - if(direction==BMC_SCROLL_UP){ - de74: 2800 cmp r0, #0 - de76: f001 8280 beq.w f37a - long newValue = (value+amount); - de7a: 3301 adds r3, #1 - value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - de7c: 2900 cmp r1, #0 - de7e: f001 864a beq.w fb16 - return (newValue > max || newValue < min) ? min : newValue; - de82: 2b07 cmp r3, #7 - de84: dc02 bgt.n de8c - } else if(newValue - return (newValue < min) ? min : newValue; - de8a: b2da uxtb r2, r3 - fetchSysEx(BMC_FAS3_FUNC_ID_SCENE, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - de8c: 2300 movs r3, #0 - de8e: f243 3054 movw r0, #13140 ; 0x3354 - de92: b292 uxth r2, r2 - de94: 210c movs r1, #12 - de96: 4428 add r0, r5 - de98: 9300 str r3, [sp, #0] - return BMC_OFF_LED_EVENT; - de9a: 4698 mov r8, r3 - de9c: f7f3 fa98 bl 13d0 - dea0: f7fd bd6a b.w b978 + dede: 4428 add r0, r5 + dee0: f7fb fd2a bl 9938 + dee4: f7fd bdb3 b.w ba4e if(group==BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - dea4: f006 03fd and.w r3, r6, #253 ; 0xfd - dea8: 2b01 cmp r3, #1 - deaa: f47d afbb bne.w be24 + dee8: f006 03fd and.w r3, r6, #253 ; 0xfd + deec: 2b01 cmp r3, #1 + deee: f47d afef bne.w bed0 return scroll.direction; - deae: f894 509e ldrb.w r5, [r4, #158] ; 0x9e + def2: f894 509e ldrb.w r5, [r4, #158] ; 0x9e return scroll.wrap; - deb2: f894 009f ldrb.w r0, [r4, #159] ; 0x9f + def6: f894 009f ldrb.w r0, [r4, #159] ; 0x9f sync.fas.presetScroll(data.scrollDirection(), data.scrollWrap(), data.min, data.max); - deb6: 89e3 ldrh r3, [r4, #14] - deb8: 8a24 ldrh r4, [r4, #16] + defa: 89e3 ldrh r3, [r4, #14] + defc: 8a24 ldrh r4, [r4, #16] if(!connected()){ - deba: 2a00 cmp r2, #0 - debc: f43d ad5a beq.w b974 + defe: 2a00 cmp r2, #0 + df00: f43d ada3 beq.w ba4a if((min < lowest) || (min >= max)){ - dec0: 42a3 cmp r3, r4 + df04: 42a3 cmp r3, r4 return device.max; - dec2: f8b9 1374 ldrh.w r1, [r9, #884] ; 0x374 + df06: f8b9 1394 ldrh.w r1, [r9, #916] ; 0x394 uint16_t newValue = scroller.scroll(1, t_up, t_wrap, preset.id, t_min, t_max); - dec6: f8b9 238c ldrh.w r2, [r9, #908] ; 0x38c - deca: f081 82dd bcs.w f488 + df0a: f8b9 23ac ldrh.w r2, [r9, #940] ; 0x3ac + df0e: f081 8551 bcs.w f9b4 if((max > highest) || (max <= min)){ - dece: 428c cmp r4, r1 - ded0: d902 bls.n ded8 - ded2: 461c mov r4, r3 + df12: 428c cmp r4, r1 + df14: d902 bls.n df1c + df16: 461c mov r4, r3 min = lowest; - ded4: 4623 mov r3, r4 + df18: 4623 mov r3, r4 return device.max; - ded6: 460c mov r4, r1 + df1a: 460c mov r4, r1 if(direction==BMC_SCROLL_UP){ - ded8: 2d00 cmp r5, #0 - deda: f001 82cb beq.w f474 + df1c: 2d00 cmp r5, #0 + df1e: f001 853f beq.w f9a0 long newValue = (value+amount); - dede: 1c51 adds r1, r2, #1 + df22: 1c51 adds r1, r2, #1 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - dee0: 2800 cmp r0, #0 - dee2: f001 852e beq.w f942 + df24: 2800 cmp r0, #0 + df26: f001 874b beq.w fdc0 return (newValue > max || newValue < min) ? min : newValue; - dee6: 42a1 cmp r1, r4 - dee8: dc02 bgt.n def0 + df2a: 42a1 cmp r1, r4 + df2c: dc02 bgt.n df34 } else if(newValue + df2e: 4299 cmp r1, r3 + df30: db00 blt.n df34 return newValue; - deee: b28b uxth r3, r1 + df32: b28b uxth r3, r1 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - def0: 461c mov r4, r3 + df34: 461c mov r4, r3 if(preset.id != newValue){ - def2: 4294 cmp r4, r2 - def4: d022 beq.n df3c + df36: 42a2 cmp r2, r4 + df38: d022 beq.n df80 midi.sendControlChange(device.port, device.channel, cc, value); - def6: 2301 movs r3, #1 - def8: f899 2372 ldrb.w r2, [r9, #882] ; 0x372 - defc: f899 1371 ldrb.w r1, [r9, #881] ; 0x371 - df00: 2500 movs r5, #0 - df02: 9302 str r3, [sp, #8] - df04: f3c4 13c6 ubfx r3, r4, #7, #7 - df08: e9cd 3500 strd r3, r5, [sp] - df0c: 462b mov r3, r5 - df0e: f8d9 0354 ldr.w r0, [r9, #852] ; 0x354 - df12: f015 fa63 bl 233dc - df16: f899 3373 ldrb.w r3, [r9, #883] ; 0x373 + df3a: 2301 movs r3, #1 + df3c: f899 2392 ldrb.w r2, [r9, #914] ; 0x392 + df40: f899 1391 ldrb.w r1, [r9, #913] ; 0x391 + df44: 2500 movs r5, #0 + df46: 9302 str r3, [sp, #8] + df48: f3c4 13c6 ubfx r3, r4, #7, #7 + df4c: e9cd 3500 strd r3, r5, [sp] + df50: 462b mov r3, r5 + df52: f8d9 0374 ldr.w r0, [r9, #884] ; 0x374 + df56: f015 faa3 bl 234a0 + return bitRead(flags, 0); + df5a: f899 3393 ldrb.w r3, [r9, #915] ; 0x393 if(connected()){ - df1a: 07da lsls r2, r3, #31 - df1c: f101 86fe bmi.w fd1c - df20: 4b27 ldr r3, [pc, #156] ; (dfc0 ) + df5e: 07da lsls r2, r3, #31 + df60: f101 8734 bmi.w fdcc + df64: 4b5c ldr r3, [pc, #368] ; (e0d8 ) interval = value; - df22: 2001 movs r0, #1 - df24: f241 3188 movw r1, #5000 ; 0x1388 - df28: 681a ldr r2, [r3, #0] - df2a: 681b ldr r3, [r3, #0] - df2c: f8a9 0384 strh.w r0, [r9, #900] ; 0x384 - df30: f8a9 137c strh.w r1, [r9, #892] ; 0x37c + df66: 2001 movs r0, #1 + df68: f241 3188 movw r1, #5000 ; 0x1388 + df6c: 681a ldr r2, [r3, #0] + df6e: 681b ldr r3, [r3, #0] + df70: f8a9 03a4 strh.w r0, [r9, #932] ; 0x3a4 + df74: f8a9 139c strh.w r1, [r9, #924] ; 0x39c prevTime = (unsigned long) _BMCTiming::get(); - df34: f8c9 2388 str.w r2, [r9, #904] ; 0x388 - df38: f8c9 3380 str.w r3, [r9, #896] ; 0x380 + df78: f8c9 23a8 str.w r2, [r9, #936] ; 0x3a8 + df7c: f8c9 33a0 str.w r3, [r9, #928] ; 0x3a0 return BMC_OFF_LED_EVENT; - df3c: f04f 0800 mov.w r8, #0 - df40: f7fd bd1a b.w b978 - } else if((p2 - 1) != p1){ - df44: f43d af5b beq.w bdfe - data.max = p1; - df48: 8221 strh r1, [r4, #16] - data.min = p2 - 1; - df4a: 81e3 strh r3, [r4, #14] - df4c: f7fd bf57 b.w bdfe - outVal = scroll.direction ? max : min; - df50: 89e0 ldrh r0, [r4, #14] - df52: f7fe bc2e b.w c7b2 + df80: f04f 0800 mov.w r8, #0 + df84: f7fd bd63 b.w ba4e } else if((data.byteB-1) != data.byteA){ - df56: f43e acc4 beq.w c8e2 + df88: f43e ad84 beq.w ca94 data.min = data.byteB-1; - df5a: 81e3 strh r3, [r4, #14] + df8c: 81e3 strh r3, [r4, #14] data.max = data.byteA; - df5c: 69fb ldr r3, [r7, #28] - df5e: 8223 strh r3, [r4, #16] + df8e: 69fb ldr r3, [r7, #28] + df90: 8223 strh r3, [r4, #16] data.min = data.byteB-1; - df60: f7fe bcbf b.w c8e2 - } else if(min == max){ - df64: f47e ac12 bne.w c78c - max = t_max-1; - df68: 237e movs r3, #126 ; 0x7e - min = t_min; - df6a: 81e1 strh r1, [r4, #14] - max = t_max-1; - df6c: 8223 strh r3, [r4, #16] - df6e: f7fe bc0d b.w c78c + df92: f7fe bd7f b.w ca94 + } else if((p2 - 1) != p1){ + df96: f43d af88 beq.w beaa + data.max = p1; + df9a: 8221 strh r1, [r4, #16] + data.min = p2 - 1; + df9c: 81e3 strh r3, [r4, #14] + df9e: f7fd bf84 b.w beaa } else if((data.byteB-1) != data.byteA){ - df72: f43e a9d5 beq.w c320 + dfa2: f43e ab8e beq.w c6c2 data.min = data.byteB-1; - df76: 81e3 strh r3, [r4, #14] + dfa6: 81e3 strh r3, [r4, #14] data.max = data.byteA; - df78: 69fb ldr r3, [r7, #28] - df7a: 8223 strh r3, [r4, #16] + dfa8: 69fb ldr r3, [r7, #28] + dfaa: 8223 strh r3, [r4, #16] data.min = data.byteB-1; - df7c: f7fe b9d0 b.w c320 - if(group == BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ - df80: f006 03fd and.w r3, r6, #253 ; 0xfd - df84: 2b01 cmp r3, #1 - df86: f47f aaf2 bne.w d56e - setLists.scrollSet(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); - df8a: 7c20 ldrb r0, [r4, #16] + dfac: f7fe bb89 b.w c6c2 + } else if((p2 - 1) != p1){ + dfb0: f43e a8d9 beq.w c166 + data.max = p1; + dfb4: f8a4 8010 strh.w r8, [r4, #16] + data.min = p2 - 1; + dfb8: 81e3 strh r3, [r4, #14] + dfba: f7fe b8d4 b.w c166 + if(data.byteC > 0){ + dfbe: 693a ldr r2, [r7, #16] + toggleSnapshot(t_valueA, t_valueB); + dfc0: f243 70a4 movw r0, #14244 ; 0x37a4 + dfc4: 2a00 cmp r2, #0 + dfc6: f000 85db beq.w eb80 + dfca: 69b9 ldr r1, [r7, #24] + dfcc: 4428 add r0, r5 return BMC_OFF_LED_EVENT; - df8c: f04f 0800 mov.w r8, #0 - return scroll.amount; - df90: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 - setLists.scrollSet(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); - df94: f894 209f ldrb.w r2, [r4, #159] ; 0x9f - df98: f894 109e ldrb.w r1, [r4, #158] ; 0x9e - df9c: 3b00 subs r3, #0 - df9e: 9001 str r0, [sp, #4] - dfa0: f505 5048 add.w r0, r5, #12800 ; 0x3200 - dfa4: 7ba4 ldrb r4, [r4, #14] - dfa6: bf18 it ne - dfa8: 2301 movne r3, #1 - dfaa: 9400 str r4, [sp, #0] - dfac: f7fa f81a bl 7fe4 - dfb0: f7fd bce2 b.w b978 - dfb4: 200020d8 .word 0x200020d8 - dfb8: 20004ba8 .word 0x20004ba8 - dfbc: 200023ec .word 0x200023ec - dfc0: 2000bae8 .word 0x2000bae8 + dfce: 4698 mov r8, r3 + dfd0: f7fb fae6 bl 95a0 + break; + dfd4: f7fd bd3b b.w ba4e } else if(min == max){ - dfc4: f47e acd1 bne.w c96a + dfd8: f47e ac2a bne.w c830 + max = t_max-1; + dfdc: 237e movs r3, #126 ; 0x7e min = t_min; - dfc8: 2200 movs r2, #0 - dfca: 81e2 strh r2, [r4, #14] + dfde: 81e1 strh r1, [r4, #14] max = t_max-1; - dfcc: 2203 movs r2, #3 - dfce: 8222 strh r2, [r4, #16] - dfd0: f7fe bccb b.w c96a + dfe0: 8223 strh r3, [r4, #16] + dfe2: f7fe bc25 b.w c830 if(group==BMC_DEVICE_GROUP_BUTTON || group==BMC_DEVICE_GROUP_ENCODER){ - dfd4: f006 03fd and.w r3, r6, #253 ; 0xfd - dfd8: 2b01 cmp r3, #1 - dfda: f47f a9dd bne.w d398 + dfe6: f006 03fd and.w r3, r6, #253 ; 0xfd + dfea: 2b01 cmp r3, #1 + dfec: f47f aacf bne.w d58e midiProgramBankScroll(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.byteB, data.byteC); - dfde: 6938 ldr r0, [r7, #16] + dff0: 6938 ldr r0, [r7, #16] return BMC_OFF_LED_EVENT; - dfe0: f04f 0800 mov.w r8, #0 + dff2: f04f 0800 mov.w r8, #0 return scroll.amount; - dfe4: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 + dff6: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 midiProgramBankScroll(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.byteB, data.byteC); - dfe8: f894 209f ldrb.w r2, [r4, #159] ; 0x9f - dfec: f894 109e ldrb.w r1, [r4, #158] ; 0x9e - dff0: 3b00 subs r3, #0 - dff2: 9001 str r0, [sp, #4] - dff4: 4628 mov r0, r5 - dff6: 69bc ldr r4, [r7, #24] - dff8: bf18 it ne - dffa: 2301 movne r3, #1 - dffc: 9400 str r4, [sp, #0] - dffe: f009 f8ad bl 1715c - e002: f7fd bcb9 b.w b978 - } else if(min == max){ - e006: f47e ac12 bne.w c82e - min = t_min; - e00a: 2100 movs r1, #0 - e00c: 81e1 strh r1, [r4, #14] - max = t_max-1; - e00e: 217e movs r1, #126 ; 0x7e - e010: 8221 strh r1, [r4, #16] - e012: f7fe bc0c b.w c82e - if(data.byteC > 0){ - e016: 693a ldr r2, [r7, #16] - toggleSnapshot(t_valueA, t_valueB); - e018: f243 7084 movw r0, #14212 ; 0x3784 - e01c: 2a00 cmp r2, #0 - e01e: f000 857e beq.w eb1e - e022: 69b9 ldr r1, [r7, #24] - e024: 4428 add r0, r5 - return BMC_OFF_LED_EVENT; - e026: 4698 mov r8, r3 - e028: f7fb faea bl 9600 - break; - e02c: f7fd bca4 b.w b978 - if(group == BMC_DEVICE_GROUP_BUTTON){ - e030: 2e01 cmp r6, #1 - e032: f47e acdf bne.w c9f4 - setLists.scrollSong(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); - e036: 7c20 ldrb r0, [r4, #16] + dffa: f894 209f ldrb.w r2, [r4, #159] ; 0x9f + dffe: f894 109e ldrb.w r1, [r4, #158] ; 0x9e + e002: 3b00 subs r3, #0 + e004: 9001 str r0, [sp, #4] + e006: 4628 mov r0, r5 + e008: 69bc ldr r4, [r7, #24] + e00a: bf18 it ne + e00c: 2301 movne r3, #1 + e00e: 9400 str r4, [sp, #0] + e010: f009 f900 bl 17214 + e014: f7fd bd1b b.w ba4e + if(group==BMC_DEVICE_GROUP_BUTTON || group == BMC_DEVICE_GROUP_ENCODER){ + e018: f006 03fd and.w r3, r6, #253 ; 0xfd + e01c: 2b01 cmp r3, #1 + e01e: f47f ab6c bne.w d6fa + e022: f505 5340 add.w r3, r5, #12288 ; 0x3000 + return scroll.direction; + e026: f894 009e ldrb.w r0, [r4, #158] ; 0x9e + return scroll.wrap; + e02a: f894 109f ldrb.w r1, [r4, #159] ; 0x9f + e02e: f893 2393 ldrb.w r2, [r3, #915] ; 0x393 + if(!connected()){ + e032: 07d2 lsls r2, r2, #31 + e034: f57d ad09 bpl.w ba4a + sync.fas.sceneScroll(data.scrollDirection(), data.scrollWrap(), data.min, data.max); + e038: 7c22 ldrb r2, [r4, #16] + setSceneNumber(scroller.scroll(1, t_up, t_wrap, preset.scene, t_min, t_max), t_revert); + e03a: f893 33ae ldrb.w r3, [r3, #942] ; 0x3ae + min = lowest; + e03e: 2a07 cmp r2, #7 + e040: bf28 it cs + e042: 2200 movcs r2, #0 + if(direction==BMC_SCROLL_UP){ + e044: 2800 cmp r0, #0 + e046: f001 826c beq.w f522 + long newValue = (value+amount); + e04a: 3301 adds r3, #1 + value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); + e04c: 2900 cmp r1, #0 + e04e: f001 8508 beq.w fa62 + return (newValue > max || newValue < min) ? min : newValue; + e052: 2b07 cmp r3, #7 + e054: dc02 bgt.n e05c + } else if(newValue + return (newValue < min) ? min : newValue; + e05a: b2da uxtb r2, r3 + fetchSysEx(BMC_FAS3_FUNC_ID_SCENE, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); + e05c: 2300 movs r3, #0 + e05e: f243 3074 movw r0, #13172 ; 0x3374 + e062: b292 uxth r2, r2 + e064: 210c movs r1, #12 + e066: 4428 add r0, r5 + e068: 9300 str r3, [sp, #0] return BMC_OFF_LED_EVENT; - e038: f04f 0800 mov.w r8, #0 - return scroll.amount; - e03c: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 - setLists.scrollSong(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); - e040: f894 209f ldrb.w r2, [r4, #159] ; 0x9f - e044: f894 109e ldrb.w r1, [r4, #158] ; 0x9e - e048: 3b00 subs r3, #0 - e04a: 9001 str r0, [sp, #4] - e04c: f505 5048 add.w r0, r5, #12800 ; 0x3200 - e050: 7ba4 ldrb r4, [r4, #14] - e052: bf18 it ne - e054: 2301 movne r3, #1 - e056: 9400 str r4, [sp, #0] - e058: f7fa f826 bl 80a8 - e05c: f7fd bc8c b.w b978 - } else if((data.byteB-1) != data.byteA){ - e060: f43e acb6 beq.w c9d0 - data.min = data.byteB-1; - e064: 81e3 strh r3, [r4, #14] - data.max = data.byteA; - e066: 69fb ldr r3, [r7, #28] - e068: 8223 strh r3, [r4, #16] - data.min = data.byteB-1; - e06a: f7fe bcb1 b.w c9d0 - if(group == BMC_DEVICE_GROUP_BUTTON){ - e06e: 2e01 cmp r6, #1 - e070: f47e aae3 bne.w c63a - setLists.scrollPart(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + e06a: 4698 mov r8, r3 + e06c: f7f3 f9b0 bl 13d0 + e070: f7fd bced b.w ba4e + setLists.scrollSet(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); e074: 7c20 ldrb r0, [r4, #16] return BMC_OFF_LED_EVENT; e076: f04f 0800 mov.w r8, #0 + return scroll.amount; e07a: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 - setLists.scrollPart(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + setLists.scrollSet(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); e07e: f894 209f ldrb.w r2, [r4, #159] ; 0x9f e082: f894 109e ldrb.w r1, [r4, #158] ; 0x9e e086: 3b00 subs r3, #0 e088: 9001 str r0, [sp, #4] - e08a: f505 5048 add.w r0, r5, #12800 ; 0x3200 + e08a: f243 2020 movw r0, #12832 ; 0x3220 e08e: 7ba4 ldrb r4, [r4, #14] e090: bf18 it ne e092: 2301 movne r3, #1 - e094: 9400 str r4, [sp, #0] - e096: f7fa f847 bl 8128 - e09a: f7fd bc6d b.w b978 + e094: 4428 add r0, r5 + e096: 9400 str r4, [sp, #0] + e098: f7f9 ff74 bl 7f84 + e09c: f7fd bcd7 b.w ba4e } else if((data.byteB-1) != data.byteA){ - e09e: f43e aaba beq.w c616 + e0a0: f43d af87 beq.w bfb2 data.min = data.byteB-1; - e0a2: 81e3 strh r3, [r4, #14] + e0a4: 81e3 strh r3, [r4, #14] data.max = data.byteA; - e0a4: 69fb ldr r3, [r7, #28] - e0a6: 8223 strh r3, [r4, #16] + e0a6: 69fb ldr r3, [r7, #28] + e0a8: 8223 strh r3, [r4, #16] data.min = data.byteB-1; - e0a8: f7fe bab5 b.w c616 - long num = (x - in_min) * out_range; - e0ac: f04f 0864 mov.w r8, #100 ; 0x64 - e0b0: 693a ldr r2, [r7, #16] - long result = num / in_range + out_min; - e0b2: 237f movs r3, #127 ; 0x7f - long num = (x - in_min) * out_range; - e0b4: fb08 f802 mul.w r8, r8, r2 - num += in_range / 2; - e0b8: f108 083f add.w r8, r8, #63 ; 0x3f - long result = num / in_range + out_min; - e0bc: fbb8 f8f3 udiv r8, r8, r3 - return map(data.byteC, 0, 127, 0, 100); - e0c0: fa5f f888 uxtb.w r8, r8 - e0c4: f7fd bc58 b.w b978 - long num = (x - in_min) * out_range; - e0c8: f04f 0864 mov.w r8, #100 ; 0x64 - e0cc: 693a ldr r2, [r7, #16] - long result = num / in_range + out_min; - e0ce: 237f movs r3, #127 ; 0x7f - long num = (x - in_min) * out_range; - e0d0: fb08 f802 mul.w r8, r8, r2 - num += in_range / 2; - e0d4: f108 083f add.w r8, r8, #63 ; 0x3f - long result = num / in_range + out_min; - e0d8: fbb8 f8f3 udiv r8, r8, r3 - return map(data.byteC, 0, 127, 0, 100); - e0dc: fa5f f888 uxtb.w r8, r8 - e0e0: f7fd bc4a b.w b978 - if(data.byteA==0){ - e0e4: 69fb ldr r3, [r7, #28] - e0e6: 2b00 cmp r3, #0 - e0e8: f040 8634 bne.w ed54 - return bitRead(flags, bit); - e0ec: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc - return midi.getRealTimeBlockInput() ? 100 : 0; - e0f0: 0799 lsls r1, r3, #30 - e0f2: f57d ac3f bpl.w b974 - e0f6: f04f 0864 mov.w r8, #100 ; 0x64 - e0fa: f7fd bc3d b.w b978 - return map(programBank, 0, 127, 0, 100); - e0fe: f505 5540 add.w r5, r5, #12288 ; 0x3000 - num += in_range / 2; - e102: f04f 0864 mov.w r8, #100 ; 0x64 - e106: 223f movs r2, #63 ; 0x3f - long result = num / in_range + out_min; - e108: 237f movs r3, #127 ; 0x7f - num += in_range / 2; - e10a: f895 1814 ldrb.w r1, [r5, #2068] ; 0x814 - e10e: fb18 2801 smlabb r8, r8, r1, r2 - long result = num / in_range + out_min; - e112: fbb8 f8f3 udiv r8, r8, r3 - e116: fa5f f888 uxtb.w r8, r8 - e11a: f7fd bc2d b.w b978 - switch(data.byteA){ - e11e: 69fb ldr r3, [r7, #28] - e120: 3b01 subs r3, #1 - e122: 2b10 cmp r3, #16 - e124: f63d acf3 bhi.w bb0e - e128: a201 add r2, pc, #4 ; (adr r2, e130 ) - e12a: f852 f023 ldr.w pc, [r2, r3, lsl #2] - e12e: bf00 nop - e130: 0000e1a1 .word 0x0000e1a1 - e134: 0000e18f .word 0x0000e18f - e138: 0000e175 .word 0x0000e175 - e13c: 0000e175 .word 0x0000e175 - e140: 0000e175 .word 0x0000e175 - e144: 0000e175 .word 0x0000e175 - e148: 0000e175 .word 0x0000e175 - e14c: 0000e175 .word 0x0000e175 - e150: 0000e175 .word 0x0000e175 - e154: 0000e175 .word 0x0000e175 - e158: 0000bb0f .word 0x0000bb0f - e15c: 0000bb0f .word 0x0000bb0f - e160: 0000bb0f .word 0x0000bb0f - e164: 0000bb0f .word 0x0000bb0f - e168: 0000bb0f .word 0x0000bb0f - e16c: 0000bb0f .word 0x0000bb0f - e170: 0000e175 .word 0x0000e175 - if(bitRead(value, 7)){ - e174: 6afb ldr r3, [r7, #44] ; 0x2c - sync.fas.tunerOn(); - e176: f243 3054 movw r0, #13140 ; 0x3354 - return BMC_OFF_LED_EVENT; - e17a: f04f 0800 mov.w r8, #0 - if(bitRead(value, 7)){ - e17e: 0619 lsls r1, r3, #24 - sync.fas.tunerOn(); - e180: 4428 add r0, r5 - if(bitRead(value, 7)){ - e182: f101 85a9 bmi.w fcd8 - sync.fas.tunerOff(); - e186: f7fb f817 bl 91b8 - e18a: f7fd bbf5 b.w b978 - sync.fas.tunerOff(); - e18e: f243 3054 movw r0, #13140 ; 0x3354 + e0aa: f7fd bf82 b.w bfb2 + } else if(min == max){ + e0ae: f47d afeb bne.w c088 + min = t_min; + e0b2: 2200 movs r2, #0 + e0b4: 81e2 strh r2, [r4, #14] + max = t_max-1; + e0b6: 2203 movs r2, #3 + e0b8: 8222 strh r2, [r4, #16] + e0ba: f7fd bfe5 b.w c088 + } else if((data.byteB-1) != data.byteA){ + e0be: f43e ab37 beq.w c730 + data.min = data.byteB-1; + e0c2: 81e3 strh r3, [r4, #14] + data.max = data.byteA; + e0c4: 69fb ldr r3, [r7, #28] + e0c6: 8223 strh r3, [r4, #16] + data.min = data.byteB-1; + e0c8: f7fe bb32 b.w c730 + e0cc: 200020d8 .word 0x200020d8 + e0d0: 20004c68 .word 0x20004c68 + e0d4: 200023ec .word 0x200023ec + e0d8: 2000bb08 .word 0x2000bb08 + if(group == BMC_DEVICE_GROUP_BUTTON){ + e0dc: 2e01 cmp r6, #1 + e0de: f47e ab39 bne.w c754 + setLists.scrollPart(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + e0e2: 7c20 ldrb r0, [r4, #16] return BMC_OFF_LED_EVENT; - e192: f04f 0800 mov.w r8, #0 - sync.fas.tunerOff(); - e196: 4428 add r0, r5 - e198: f7fb f80e bl 91b8 - break; - e19c: f7fd bbec b.w b978 - sync.fas.tunerOn(); - e1a0: f243 3054 movw r0, #13140 ; 0x3354 + e0e4: f04f 0800 mov.w r8, #0 + return scroll.amount; + e0e8: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 + setLists.scrollPart(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + e0ec: f894 209f ldrb.w r2, [r4, #159] ; 0x9f + e0f0: f894 109e ldrb.w r1, [r4, #158] ; 0x9e + e0f4: 3b00 subs r3, #0 + e0f6: 9001 str r0, [sp, #4] + e0f8: f243 2020 movw r0, #12832 ; 0x3220 + e0fc: 7ba4 ldrb r4, [r4, #14] + e0fe: bf18 it ne + e100: 2301 movne r3, #1 + e102: 4428 add r0, r5 + e104: 9400 str r4, [sp, #0] + e106: f7f9 ffdf bl 80c8 + e10a: f7fd bca0 b.w ba4e + } else if((data.byteB-1) != data.byteA){ + e10e: f43d af7b beq.w c008 + data.min = data.byteB-1; + e112: 81e3 strh r3, [r4, #14] + data.max = data.byteA; + e114: 69fb ldr r3, [r7, #28] + e116: 8223 strh r3, [r4, #16] + data.min = data.byteB-1; + e118: f7fd bf76 b.w c008 + outVal = scroll.direction ? max : min; + e11c: 89e2 ldrh r2, [r4, #14] + e11e: f7fd bfc8 b.w c0b2 + if(group == BMC_DEVICE_GROUP_BUTTON){ + e122: 2e01 cmp r6, #1 + e124: f47e aadf bne.w c6e6 + setLists.scrollSong(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + e128: 7c20 ldrb r0, [r4, #16] return BMC_OFF_LED_EVENT; - e1a4: f04f 0800 mov.w r8, #0 - sync.fas.tunerOn(); - e1a8: 4428 add r0, r5 - e1aa: f7fa fff1 bl 9190 - break; - e1ae: f7fd bbe3 b.w b978 - if(data.byteB == 0){ - e1b2: 69bb ldr r3, [r7, #24] - e1b4: 2b00 cmp r3, #0 - e1b6: f040 86a4 bne.w ef02 - e1ba: f505 5540 add.w r5, r5, #12288 ; 0x3000 - e1be: f895 8ae0 ldrb.w r8, [r5, #2784] ; 0xae0 - return auxJacks[data.byteA].isConnected(); - e1c2: f3c8 0840 ubfx r8, r8, #1, #1 - e1c6: f7fd bbd7 b.w b978 + e12a: f04f 0800 mov.w r8, #0 + return scroll.amount; + e12e: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 + setLists.scrollSong(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + e132: f894 209f ldrb.w r2, [r4, #159] ; 0x9f + e136: f894 109e ldrb.w r1, [r4, #158] ; 0x9e + e13a: 3b00 subs r3, #0 + e13c: 9001 str r0, [sp, #4] + e13e: f243 2020 movw r0, #12832 ; 0x3220 + e142: 7ba4 ldrb r4, [r4, #14] + e144: bf18 it ne + e146: 2301 movne r3, #1 + e148: 4428 add r0, r5 + e14a: 9400 str r4, [sp, #0] + e14c: f7f9 ff7c bl 8048 + e150: f7fd bc7d b.w ba4e + outVal = scroll.direction ? max : min; + e154: 89e0 ldrh r0, [r4, #14] + e156: f7fe bb7e b.w c856 + } else if(min == max){ + e15a: f47e abba bne.w c8d2 + min = t_min; + e15e: 2100 movs r1, #0 + e160: 81e1 strh r1, [r4, #14] + max = t_max-1; + e162: 217e movs r1, #126 ; 0x7e + e164: 8221 strh r1, [r4, #16] + e166: f7fe bbb4 b.w c8d2 + outVal = scroll.direction ? max : min; + e16a: 89e3 ldrh r3, [r4, #14] + e16c: f7fe bbc4 b.w c8f8 + if(data.byteB==0){ + e170: 69bb ldr r3, [r7, #24] + e172: 2b00 cmp r3, #0 + e174: f001 812b beq.w f3ce + } else if(data.byteB==1){ + e178: 69bb ldr r3, [r7, #24] + e17a: 2b01 cmp r3, #1 + e17c: f001 8510 beq.w fba0 + } else if(data.byteB==2){ + e180: 69bb ldr r3, [r7, #24] + e182: 2b02 cmp r3, #2 + e184: f47d ac61 bne.w ba4a + enabled = false; + e188: 69fb ldr r3, [r7, #28] + e18a: f88a 396c strb.w r3, [sl, #2412] ; 0x96c + timeout = micros(); + e18e: f01c fa65 bl 2a65c + freeFormPhaseOffset = 0; + e192: f60a 138c addw r3, sl, #2444 ; 0x98c + e196: 2200 movs r2, #0 + timeout = micros(); + e198: f8ca 0984 str.w r0, [sl, #2436] ; 0x984 + freeFormPhaseOffset = 0; + e19c: 601a str r2, [r3, #0] + } + e19e: f7fd bc56 b.w ba4e switch(data.byteA){ - e1ca: 69fa ldr r2, [r7, #28] - e1cc: 2a07 cmp r2, #7 - e1ce: f63d ac9e bhi.w bb0e - e1d2: e8df f002 tbb [pc, r2] - e1d6: 1d26 .short 0x1d26 - e1d8: 0404041d .word 0x0404041d - e1dc: 4404 .short 0x4404 - e1de: f505 5340 add.w r3, r5, #12288 ; 0x3000 + e1a2: 69fa ldr r2, [r7, #28] + e1a4: 2a07 cmp r2, #7 + e1a6: f63d ad15 bhi.w bbd4 + e1aa: e8df f002 tbb [pc, r2] + e1ae: 1d26 .short 0x1d26 + e1b0: 0404041d .word 0x0404041d + e1b4: 4404 .short 0x4404 + e1b6: f505 5340 add.w r3, r5, #12288 ; 0x3000 return (data.byteA-3) == sync.fas.getBlockChannel(data.byteB); - e1e2: 69fa ldr r2, [r7, #28] - e1e4: f893 3373 ldrb.w r3, [r3, #883] ; 0x373 - e1e8: f1a2 0803 sub.w r8, r2, #3 + e1ba: 69fa ldr r2, [r7, #28] + e1bc: f893 3393 ldrb.w r3, [r3, #915] ; 0x393 + e1c0: f1a2 0803 sub.w r8, r2, #3 if(!connected()){ - e1ec: f013 0301 ands.w r3, r3, #1 - e1f0: f001 85c8 beq.w fd84 - e1f4: f243 3054 movw r0, #13140 ; 0x3354 - e1f8: 69b9 ldr r1, [r7, #24] - e1fa: 4428 add r0, r5 - e1fc: f7f8 fd94 bl 6d28 - e200: eba0 0008 sub.w r0, r0, r8 - e204: f1d0 0800 rsbs r8, r0, #0 - e208: eb48 0800 adc.w r8, r8, r0 - e20c: f7fd bbb4 b.w b978 + e1c4: f013 0301 ands.w r3, r3, #1 + e1c8: f002 851c beq.w 10c04 + e1cc: f243 3074 movw r0, #13172 ; 0x3374 + e1d0: 69b9 ldr r1, [r7, #24] + e1d2: 4428 add r0, r5 + e1d4: f7f8 fde0 bl 6d98 + e1d8: eba0 0208 sub.w r2, r0, r8 + e1dc: f1d2 0800 rsbs r8, r2, #0 + e1e0: eb48 0802 adc.w r8, r8, r2 + e1e4: f7fd bc33 b.w ba4e return sync.fas.isBlockEngaged(data.byteB); // block bypass state - e210: f243 3054 movw r0, #13140 ; 0x3354 - e214: 69b9 ldr r1, [r7, #24] - e216: 4428 add r0, r5 - e218: f7fa ffa0 bl 915c - e21c: 4680 mov r8, r0 - e21e: f7fd bbab b.w b978 - e222: f505 5940 add.w r9, r5, #12288 ; 0x3000 - e226: f899 3373 ldrb.w r3, [r9, #883] ; 0x373 + e1e8: f243 3074 movw r0, #13172 ; 0x3374 + e1ec: 69b9 ldr r1, [r7, #24] + e1ee: 4428 add r0, r5 + e1f0: f7fa ff84 bl 90fc + e1f4: 4680 mov r8, r0 + e1f6: f7fd bc2a b.w ba4e + e1fa: f505 5940 add.w r9, r5, #12288 ; 0x3000 + e1fe: f899 3393 ldrb.w r3, [r9, #915] ; 0x393 if(!connected()){ - e22a: 07dc lsls r4, r3, #31 - e22c: f141 85a6 bpl.w fd7c - e230: f243 41ac movw r1, #13484 ; 0x34ac + e202: 07d9 lsls r1, r3, #31 + e204: f142 84eb bpl.w 10bde + e208: f243 41cc movw r1, #13516 ; 0x34cc for(int e = 0; e < BMC_FAS3_BLOCKS_COUNT; e++){ - e234: 2300 movs r3, #0 - e236: 4429 add r1, r5 - e238: e002 b.n e240 - e23a: 3301 adds r3, #1 - e23c: 2b5b cmp r3, #91 ; 0x5b - e23e: d00a beq.n e256 + e20c: 2300 movs r3, #0 + e20e: 4429 add r1, r5 + e210: e002 b.n e218 + e212: 3301 adds r3, #1 + e214: 2b5b cmp r3, #91 ; 0x5b + e216: d00a beq.n e22e if(blocksInfo[e].id == n){ - e240: f811 2033 ldrb.w r2, [r1, r3, lsl #3] - e244: 69b8 ldr r0, [r7, #24] - e246: 4290 cmp r0, r2 - e248: d1f7 bne.n e23a + e218: f811 2033 ldrb.w r2, [r1, r3, lsl #3] + e21c: 69b8 ldr r0, [r7, #24] + e21e: 4290 cmp r0, r2 + e220: d1f7 bne.n e212 return bitRead(blockStates[t_id], 0)==0; - e24a: 444b add r3, r9 - e24c: f893 3439 ldrb.w r3, [r3, #1081] ; 0x439 + e222: 444b add r3, r9 + e224: f893 3459 ldrb.w r3, [r3, #1113] ; 0x459 state = !preset.getBlockState(e); - e250: f003 0301 and.w r3, r3, #1 - e254: 62bb str r3, [r7, #40] ; 0x28 + e228: f003 0301 and.w r3, r3, #1 + e22c: 62bb str r3, [r7, #40] ; 0x28 return sync.fas.isBlockBypassed(data.byteB); // block bypass state - e256: f8d7 8028 ldr.w r8, [r7, #40] ; 0x28 - e25a: f7fd bb8d b.w b978 + e22e: f8d7 8028 ldr.w r8, [r7, #40] ; 0x28 + e232: f7fd bc0c b.w ba4e return bitRead(flags, 0); - e25e: f505 5340 add.w r3, r5, #12288 ; 0x3000 - e262: f893 3373 ldrb.w r3, [r3, #883] ; 0x373 + e236: f505 5340 add.w r3, r5, #12288 ; 0x3000 + e23a: f893 3393 ldrb.w r3, [r3, #915] ; 0x393 if(!connected()){ - e266: 07d9 lsls r1, r3, #31 - e268: f57d ab84 bpl.w b974 - e26c: f243 3054 movw r0, #13140 ; 0x3354 - e270: 69b9 ldr r1, [r7, #24] - e272: 4428 add r0, r5 - e274: f7f8 fd58 bl 6d28 - e278: 4680 mov r8, r0 - e27a: f7fd bb7d b.w b978 - if(data.byteB==0){ - e27e: 69bb ldr r3, [r7, #24] - e280: 2b00 cmp r3, #0 - e282: f000 87f2 beq.w f26a - } else if(data.byteB==1){ - e286: 69bb ldr r3, [r7, #24] - e288: 2b01 cmp r3, #1 - e28a: f001 8342 beq.w f912 - } else if(data.byteB==2){ - e28e: 69bb ldr r3, [r7, #24] - e290: 2b02 cmp r3, #2 - e292: f47d ab6f bne.w b974 - enabled = false; - e296: 69fb ldr r3, [r7, #28] - e298: f88a 3968 strb.w r3, [sl, #2408] ; 0x968 - timeout = micros(); - e29c: f01c f96a bl 2a574 - freeFormPhaseOffset = 0; - e2a0: f60a 1388 addw r3, sl, #2440 ; 0x988 - e2a4: 2200 movs r2, #0 - timeout = micros(); - e2a6: f8ca 0980 str.w r0, [sl, #2432] ; 0x980 - freeFormPhaseOffset = 0; - e2aa: 601a str r2, [r3, #0] - } - e2ac: f7fd bb64 b.w b978 + e23e: 07db lsls r3, r3, #31 + e240: f57d ac03 bpl.w ba4a + e244: f243 3074 movw r0, #13172 ; 0x3374 + e248: 69b9 ldr r1, [r7, #24] + e24a: 4428 add r0, r5 + e24c: f7f8 fda4 bl 6d98 + e250: 4680 mov r8, r0 + e252: f7fd bbfc b.w ba4e + switch(data.byteA){ + e256: 69fb ldr r3, [r7, #28] + e258: 3b01 subs r3, #1 + e25a: 2b10 cmp r3, #16 + e25c: f63d acba bhi.w bbd4 + e260: a201 add r2, pc, #4 ; (adr r2, e268 ) + e262: f852 f023 ldr.w pc, [r2, r3, lsl #2] + e266: bf00 nop + e268: 0000e2d9 .word 0x0000e2d9 + e26c: 0000e2c7 .word 0x0000e2c7 + e270: 0000e2ad .word 0x0000e2ad + e274: 0000e2ad .word 0x0000e2ad + e278: 0000e2ad .word 0x0000e2ad + e27c: 0000e2ad .word 0x0000e2ad + e280: 0000e2ad .word 0x0000e2ad + e284: 0000e2ad .word 0x0000e2ad + e288: 0000e2ad .word 0x0000e2ad + e28c: 0000e2ad .word 0x0000e2ad + e290: 0000bbd5 .word 0x0000bbd5 + e294: 0000bbd5 .word 0x0000bbd5 + e298: 0000bbd5 .word 0x0000bbd5 + e29c: 0000bbd5 .word 0x0000bbd5 + e2a0: 0000bbd5 .word 0x0000bbd5 + e2a4: 0000bbd5 .word 0x0000bbd5 + e2a8: 0000e2ad .word 0x0000e2ad + if(bitRead(value, 7)){ + e2ac: 6afb ldr r3, [r7, #44] ; 0x2c + sync.fas.tunerOn(); + e2ae: f243 3074 movw r0, #13172 ; 0x3374 + return BMC_OFF_LED_EVENT; + e2b2: f04f 0800 mov.w r8, #0 + if(bitRead(value, 7)){ + e2b6: 0619 lsls r1, r3, #24 + sync.fas.tunerOn(); + e2b8: 4428 add r0, r5 + if(bitRead(value, 7)){ + e2ba: f101 839f bmi.w f9fc + sync.fas.tunerOff(); + e2be: f7fa ff4b bl 9158 + e2c2: f7fd bbc4 b.w ba4e + sync.fas.tunerOff(); + e2c6: f243 3074 movw r0, #13172 ; 0x3374 + return BMC_OFF_LED_EVENT; + e2ca: f04f 0800 mov.w r8, #0 + sync.fas.tunerOff(); + e2ce: 4428 add r0, r5 + e2d0: f7fa ff42 bl 9158 + break; + e2d4: f7fd bbbb b.w ba4e + sync.fas.tunerOn(); + e2d8: f243 3074 movw r0, #13172 ; 0x3374 + return BMC_OFF_LED_EVENT; + e2dc: f04f 0800 mov.w r8, #0 + sync.fas.tunerOn(); + e2e0: 4428 add r0, r5 + e2e2: f7fa ff25 bl 9130 + break; + e2e6: f7fd bbb2 b.w ba4e + if(data.byteA==0){ + e2ea: 69fb ldr r3, [r7, #28] + e2ec: 2b00 cmp r3, #0 + e2ee: f040 8537 bne.w ed60 + return bitRead(flags, bit); + e2f2: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc + return midi.getRealTimeBlockInput() ? 100 : 0; + e2f6: 0799 lsls r1, r3, #30 + e2f8: f57d aba7 bpl.w ba4a + e2fc: f04f 0864 mov.w r8, #100 ; 0x64 + e300: f7fd bba5 b.w ba4e + BMCSketchByteData sbData = BMCBuildData::getSketchByteData(data.byteA); + e304: f507 73ce add.w r3, r7, #412 ; 0x19c + e308: 69f9 ldr r1, [r7, #28] + e30a: 4618 mov r0, r3 + e30c: ee09 3a10 vmov s18, r3 + e310: f7f9 f978 bl 7604 + uint8_t tmp = getSketchByte(data.byteA); + e314: 79a1 ldrb r1, [r4, #6] + e316: 4628 mov r0, r5 + e318: f009 fde8 bl 17eec + if(data.scrollEnabled()){ + e31c: f894 309d ldrb.w r3, [r4, #157] ; 0x9d + e320: 2b00 cmp r3, #0 + e322: f041 809d bne.w f460 + tmp = constrain(data.byteB, sbData.min, sbData.max); + e326: 79e3 ldrb r3, [r4, #7] + e328: f897 61b2 ldrb.w r6, [r7, #434] ; 0x1b2 + e32c: 42b3 cmp r3, r6 + e32e: d304 bcc.n e33a + e330: f897 61b3 ldrb.w r6, [r7, #435] ; 0x1b3 + e334: 429e cmp r6, r3 + e336: bf28 it cs + e338: 461e movcs r6, r3 + streamToSketch(BMC_DEVICE_ID_SKETCH_BYTE, tmp, sbData.name); + e33a: ee19 3a10 vmov r3, s18 + e33e: 4632 mov r2, r6 + e340: 2127 movs r1, #39 ; 0x27 + e342: 4628 mov r0, r5 + e344: f009 fdec bl 17f20 + setSketchByte(data.byteA, tmp); + e348: 4632 mov r2, r6 + e34a: 79a1 ldrb r1, [r4, #6] + e34c: 4628 mov r0, r5 + e34e: f009 fdb3 bl 17eb8 + if(callback.storeUpdated){ + e352: f8da 3878 ldr.w r3, [sl, #2168] ; 0x878 + e356: b103 cbz r3, e35a + callback.storeUpdated(); + e358: 4798 blx r3 + return BMC_OFF_LED_EVENT; + e35a: f04f 0800 mov.w r8, #0 + e35e: f7fd bb76 b.w ba4e + long num = (x - in_min) * out_range; + e362: f04f 0864 mov.w r8, #100 ; 0x64 + e366: 693a ldr r2, [r7, #16] + long result = num / in_range + out_min; + e368: 237f movs r3, #127 ; 0x7f + long num = (x - in_min) * out_range; + e36a: fb08 f802 mul.w r8, r8, r2 + num += in_range / 2; + e36e: f108 083f add.w r8, r8, #63 ; 0x3f + long result = num / in_range + out_min; + e372: fbb8 f8f3 udiv r8, r8, r3 + return map(data.byteC, 0, 127, 0, 100); + e376: fa5f f888 uxtb.w r8, r8 + e37a: f7fd bb68 b.w ba4e + return map(programBank, 0, 127, 0, 100); + e37e: f505 5540 add.w r5, r5, #12288 ; 0x3000 + num += in_range / 2; + e382: f04f 0864 mov.w r8, #100 ; 0x64 + e386: 223f movs r2, #63 ; 0x3f + long result = num / in_range + out_min; + e388: 237f movs r3, #127 ; 0x7f + num += in_range / 2; + e38a: f895 1834 ldrb.w r1, [r5, #2100] ; 0x834 + e38e: fb18 2801 smlabb r8, r8, r1, r2 + long result = num / in_range + out_min; + e392: fbb8 f8f3 udiv r8, r8, r3 + e396: fa5f f888 uxtb.w r8, r8 + e39a: f7fd bb58 b.w ba4e return bpm; - e2b0: f505 5540 add.w r5, r5, #12288 ; 0x3000 + e39e: f505 5540 add.w r5, r5, #12288 ; 0x3000 long num = (x - in_min) * out_range; - e2b4: 2264 movs r2, #100 ; 0x64 + e3a2: 2264 movs r2, #100 ; 0x64 long result = num / in_range + out_min; - e2b6: f44f 7887 mov.w r8, #270 ; 0x10e - e2ba: f8d5 3188 ldr.w r3, [r5, #392] ; 0x188 + e3a4: f44f 7887 mov.w r8, #270 ; 0x10e + e3a8: f8d5 31a8 ldr.w r3, [r5, #424] ; 0x1a8 long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max; - e2be: 881b ldrh r3, [r3, #0] + e3ac: 881b ldrh r3, [r3, #0] long num = (x - in_min) * out_range; - e2c0: 3b1e subs r3, #30 - e2c2: fb02 f303 mul.w r3, r2, r3 + e3ae: 3b1e subs r3, #30 + e3b0: fb02 f303 mul.w r3, r2, r3 num += in_range / 2; - e2c6: 3387 adds r3, #135 ; 0x87 + e3b4: 3387 adds r3, #135 ; 0x87 long result = num / in_range + out_min; - e2c8: fb93 f8f8 sdiv r8, r3, r8 + e3b6: fb93 f8f8 sdiv r8, r3, r8 if (in_range * num < 0) return result - 1; - e2cc: 2b00 cmp r3, #0 - e2ce: bfb8 it lt - e2d0: f108 38ff addlt.w r8, r8, #4294967295 ; 0xffffffff + e3ba: 2b00 cmp r3, #0 + e3bc: bfb8 it lt + e3be: f108 38ff addlt.w r8, r8, #4294967295 ; 0xffffffff return map(midiClock.getBpm(), 30, 300, 0, 100); - e2d4: fa5f f888 uxtb.w r8, r8 - e2d8: f7fd bb4e b.w b978 + e3c2: fa5f f888 uxtb.w r8, r8 + e3c6: f7fd bb42 b.w ba4e return BMC_IGNORE_LED_EVENT; - e2dc: f04f 08ff mov.w r8, #255 ; 0xff - e2e0: f7fd bb4a b.w b978 - BMCSketchByteData sbData = BMCBuildData::getSketchByteData(data.byteA); - e2e4: f507 73ce add.w r3, r7, #412 ; 0x19c - e2e8: 69f9 ldr r1, [r7, #28] - e2ea: 4618 mov r0, r3 - e2ec: ee09 3a10 vmov s18, r3 - e2f0: f7f9 f9b8 bl 7664 - uint8_t tmp = getSketchByte(data.byteA); - e2f4: 79a1 ldrb r1, [r4, #6] - e2f6: 4628 mov r0, r5 - e2f8: f009 fd86 bl 17e08 - if(data.scrollEnabled()){ - e2fc: f894 309d ldrb.w r3, [r4, #157] ; 0x9d - e300: 2b00 cmp r3, #0 - e302: f040 86bd bne.w f080 - tmp = constrain(data.byteB, sbData.min, sbData.max); - e306: 79e3 ldrb r3, [r4, #7] - e308: f897 61b2 ldrb.w r6, [r7, #434] ; 0x1b2 - e30c: 42b3 cmp r3, r6 - e30e: d304 bcc.n e31a - e310: f897 61b3 ldrb.w r6, [r7, #435] ; 0x1b3 - e314: 429e cmp r6, r3 - e316: bf28 it cs - e318: 461e movcs r6, r3 - streamToSketch(BMC_DEVICE_ID_SKETCH_BYTE, tmp, sbData.name); - e31a: ee19 3a10 vmov r3, s18 - e31e: 4632 mov r2, r6 - e320: 2127 movs r1, #39 ; 0x27 - e322: 4628 mov r0, r5 - e324: f009 fd8a bl 17e3c - setSketchByte(data.byteA, tmp); - e328: 4632 mov r2, r6 - e32a: 79a1 ldrb r1, [r4, #6] - e32c: 4628 mov r0, r5 - e32e: f009 fd51 bl 17dd4 - if(callback.storeUpdated){ - e332: f8da 3878 ldr.w r3, [sl, #2168] ; 0x878 - e336: b103 cbz r3, e33a - callback.storeUpdated(); - e338: 4798 blx r3 - return BMC_OFF_LED_EVENT; - e33a: f04f 0800 mov.w r8, #0 - e33e: f7fd bb1b b.w b978 - sync.daw.sendButtonCommand(data.byteA, data.byteB, false); - e342: 2300 movs r3, #0 - e344: f243 2030 movw r0, #12848 ; 0x3230 - e348: e9d7 2106 ldrd r2, r1, [r7, #24] - e34c: 4428 add r0, r5 - e34e: 9300 str r3, [sp, #0] - return BMC_OFF_LED_EVENT; - e350: 4698 mov r8, r3 - sync.daw.sendButtonCommand(data.byteA, data.byteB, false); - e352: f7f2 fabf bl 8d4 - e356: f7fd bb0f b.w b978 - midi.sendNoteOff(e.ports, data.getChannel(), data.byteB, data.byteC); - e35a: 697b ldr r3, [r7, #20] - e35c: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - e360: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - e364: 693b ldr r3, [r7, #16] - e366: 9300 str r3, [sp, #0] - return BMC_TO_MIDI_CHANNEL(byteA); - e368: 69fb ldr r3, [r7, #28] - e36a: f003 020f and.w r2, r3, #15 - e36e: 69bb ldr r3, [r7, #24] - e370: f8cd 8004 str.w r8, [sp, #4] - e374: 3201 adds r2, #1 - e376: f015 fb41 bl 239fc - e37a: 79a2 ldrb r2, [r4, #6] - streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, data.byteC); - e37c: 7a21 ldrb r1, [r4, #8] - e37e: 4628 mov r0, r5 - e380: f002 020f and.w r2, r2, #15 - e384: 79e3 ldrb r3, [r4, #7] - e386: 9100 str r1, [sp, #0] - e388: 21b0 movs r1, #176 ; 0xb0 - e38a: 3201 adds r2, #1 - e38c: f009 fdd4 bl 17f38 - e390: f7fd baf2 b.w b978 + e3ca: f04f 08ff mov.w r8, #255 ; 0xff + e3ce: f7fd bb3e b.w ba4e + long num = (x - in_min) * out_range; + e3d2: f04f 0864 mov.w r8, #100 ; 0x64 + e3d6: 693a ldr r2, [r7, #16] + long result = num / in_range + out_min; + e3d8: 237f movs r3, #127 ; 0x7f + long num = (x - in_min) * out_range; + e3da: fb08 f802 mul.w r8, r8, r2 + num += in_range / 2; + e3de: f108 083f add.w r8, r8, #63 ; 0x3f + long result = num / in_range + out_min; + e3e2: fbb8 f8f3 udiv r8, r8, r3 + return map(data.byteC, 0, 127, 0, 100); + e3e6: fa5f f888 uxtb.w r8, r8 + e3ea: f7fd bb30 b.w ba4e + if(data.byteB == 0){ + e3ee: 69bb ldr r3, [r7, #24] + e3f0: 2b00 cmp r3, #0 + e3f2: f040 8689 bne.w f108 + e3f6: f505 5540 add.w r5, r5, #12288 ; 0x3000 + e3fa: f895 8b00 ldrb.w r8, [r5, #2816] ; 0xb00 + return auxJacks[data.byteA].isConnected(); + e3fe: f3c8 0840 ubfx r8, r8, #1, #1 + e402: f7fd bb24 b.w ba4e if(value >= 10){ - e394: 69fb ldr r3, [r7, #28] + e406: 69fb ldr r3, [r7, #28] if(activeChar>2){ - e396: f505 5400 add.w r4, r5, #8192 ; 0x2000 + e408: f505 5400 add.w r4, r5, #8192 ; 0x2000 if(value >= 10){ - e39a: 2b09 cmp r3, #9 - e39c: f201 8157 bhi.w f64e + e40c: 2b09 cmp r3, #9 + e40e: f201 810f bhi.w f630 callback.typerCommand(getOutput(), getRawOutput()); } // trigger display callback return value; } chars[activeChar++] = value; - e3a0: f894 3c69 ldrb.w r3, [r4, #3177] ; 0xc69 + e412: f894 3c89 ldrb.w r3, [r4, #3209] ; 0xc89 return BMC_OFF_LED_EVENT; - e3a4: f04f 0800 mov.w r8, #0 - e3a8: 69f9 ldr r1, [r7, #28] - e3aa: 18e2 adds r2, r4, r3 - e3ac: 3301 adds r3, #1 - e3ae: f882 1c66 strb.w r1, [r2, #3174] ; 0xc66 - e3b2: b2db uxtb r3, r3 + e416: f04f 0800 mov.w r8, #0 + e41a: 69f9 ldr r1, [r7, #28] + e41c: 18e2 adds r2, r4, r3 + e41e: 3301 adds r3, #1 + e420: f882 1c86 strb.w r1, [r2, #3206] ; 0xc86 + e424: b2db uxtb r3, r3 output = (chars[0]*100)+(chars[1]*10)+chars[2]; - e3b4: f894 1c66 ldrb.w r1, [r4, #3174] ; 0xc66 - e3b8: f894 2c67 ldrb.w r2, [r4, #3175] ; 0xc67 + e426: f894 1c86 ldrb.w r1, [r4, #3206] ; 0xc86 + e42a: f894 2c87 ldrb.w r2, [r4, #3207] ; 0xc87 if(activeChar>2){ activeChar = 0; - e3bc: 2b03 cmp r3, #3 + e42e: 2b03 cmp r3, #3 output = (chars[0]*100)+(chars[1]*10)+chars[2]; - e3be: eb01 0181 add.w r1, r1, r1, lsl #2 - e3c2: f894 0c68 ldrb.w r0, [r4, #3176] ; 0xc68 - e3c6: eb02 0282 add.w r2, r2, r2, lsl #2 + e430: eb01 0181 add.w r1, r1, r1, lsl #2 + e434: f894 0c88 ldrb.w r0, [r4, #3208] ; 0xc88 + e438: eb02 0282 add.w r2, r2, r2, lsl #2 activeChar = 0; - e3ca: bf28 it cs - e3cc: 4643 movcs r3, r8 + e43c: bf28 it cs + e43e: 4643 movcs r3, r8 output = (chars[0]*100)+(chars[1]*10)+chars[2]; - e3ce: eb01 0181 add.w r1, r1, r1, lsl #2 - e3d2: 0052 lsls r2, r2, #1 - e3d4: f884 3c69 strb.w r3, [r4, #3177] ; 0xc69 - e3d8: eb02 0281 add.w r2, r2, r1, lsl #2 - e3dc: 1883 adds r3, r0, r2 - e3de: f8a4 3c64 strh.w r3, [r4, #3172] ; 0xc64 + e440: eb01 0181 add.w r1, r1, r1, lsl #2 + e444: 0052 lsls r2, r2, #1 + e446: f884 3c89 strb.w r3, [r4, #3209] ; 0xc89 + e44a: eb02 0281 add.w r2, r2, r1, lsl #2 + e44e: 1883 adds r3, r0, r2 + e450: f8a4 3c84 strh.w r3, [r4, #3204] ; 0xc84 if(cmd > 10){// cmd 10 is Clear - e3e2: f7fd bac9 b.w b978 - e3e6: f505 5940 add.w r9, r5, #12288 ; 0x3000 - e3ea: f899 3194 ldrb.w r3, [r9, #404] ; 0x194 + e454: f7fd bafb b.w ba4e + sync.daw.sendButtonCommand(data.byteA, data.byteB, false); + e458: 2300 movs r3, #0 + e45a: f243 2050 movw r0, #12880 ; 0x3250 + e45e: e9d7 2106 ldrd r2, r1, [r7, #24] + e462: 4428 add r0, r5 + e464: 9300 str r3, [sp, #0] + return BMC_OFF_LED_EVENT; + e466: 4698 mov r8, r3 + sync.daw.sendButtonCommand(data.byteA, data.byteB, false); + e468: f7f2 fa34 bl 8d4 + e46c: f7fd baef b.w ba4e + e470: f505 5940 add.w r9, r5, #12288 ; 0x3000 + e474: f899 31b4 ldrb.w r3, [r9, #436] ; 0x1b4 } bool tempoChanged(){ return flags.toggleIfTrue(BMC_MIDI_CLOCK_FLAG_BPM_CHANGED); } bool tap(){ if(isMaster() && bpmCalc.tap()){ - e3ee: 07de lsls r6, r3, #31 - e3f0: f57d aac0 bpl.w b974 - e3f4: 48d1 ldr r0, [pc, #836] ; (e73c ) + e478: 07de lsls r6, r3, #31 + e47a: f57d aae6 bpl.w ba4a + e47e: 48c1 ldr r0, [pc, #772] ; (e784 ) interval = value; - e3f6: f44f 61fa mov.w r1, #2000 ; 0x7d0 + e480: f44f 61fa mov.w r1, #2000 ; 0x7d0 if(prevBeat==0){ - e3fa: f8d9 31ac ldr.w r3, [r9, #428] ; 0x1ac - e3fe: 6802 ldr r2, [r0, #0] - e400: f8a9 11b4 strh.w r1, [r9, #436] ; 0x1b4 + e484: f8d9 31cc ldr.w r3, [r9, #460] ; 0x1cc + e488: 6802 ldr r2, [r0, #0] + e48a: f8a9 11d4 strh.w r1, [r9, #468] ; 0x1d4 prevTime = (unsigned long) _BMCTiming::get(); - e404: f8c9 21b8 str.w r2, [r9, #440] ; 0x1b8 - e408: b91b cbnz r3, e412 + e48e: f8c9 21d8 str.w r2, [r9, #472] ; 0x1d8 + e492: b91b cbnz r3, e49c prevBeat = mms; - e40a: f8d9 31b0 ldr.w r3, [r9, #432] ; 0x1b0 - e40e: f8c9 31ac str.w r3, [r9, #428] ; 0x1ac + e494: f8d9 31d0 ldr.w r3, [r9, #464] ; 0x1d0 + e498: f8c9 31cc str.w r3, [r9, #460] ; 0x1cc bpmAvg[bpmAvgSize] = round(((float) BMC_MICROS_ON_SECOND / (mms - prevBeat))); - e412: eddf 6acb vldr s13, [pc, #812] ; e740 - e416: f899 21a8 ldrb.w r2, [r9, #424] ; 0x1a8 - e41a: e9d9 316b ldrd r3, r1, [r9, #428] ; 0x1ac - e41e: 1acb subs r3, r1, r3 - e420: ee07 3a90 vmov s15, r3 + e49c: eddf 6aba vldr s13, [pc, #744] ; e788 + e4a0: f899 21c8 ldrb.w r2, [r9, #456] ; 0x1c8 + e4a4: e9d9 3173 ldrd r3, r1, [r9, #460] ; 0x1cc + e4a8: 1acb subs r3, r1, r3 + e4aa: ee07 3a90 vmov s15, r3 bpmAvgSize++; - e424: 1c53 adds r3, r2, #1 + e4ae: 1c53 adds r3, r2, #1 bpmAvg[bpmAvgSize] = round(((float) BMC_MICROS_ON_SECOND / (mms - prevBeat))); - e426: eb09 0282 add.w r2, r9, r2, lsl #2 - e42a: eef8 7a67 vcvt.f32.u32 s15, s15 + e4b0: eb09 0282 add.w r2, r9, r2, lsl #2 + e4b4: eef8 7a67 vcvt.f32.u32 s15, s15 bpmAvgSize++; - e42e: b2db uxtb r3, r3 + e4b8: b2db uxtb r3, r3 if(bpmAvgSize>=BMC_BPM_AVERAGE){ - e430: 2b01 cmp r3, #1 + e4ba: 2b01 cmp r3, #1 bpmAvg[bpmAvgSize] = round(((float) BMC_MICROS_ON_SECOND / (mms - prevBeat))); - e432: ee86 7aa7 vdiv.f32 s14, s13, s15 - e436: eeb7 7ac7 vcvt.f64.f32 d7, s14 - e43a: feb8 7b47 vrinta.f64 d7, d7 - e43e: eefd 7bc7 vcvt.s32.f64 s15, d7 - e442: eef8 7ae7 vcvt.f32.s32 s15, s15 - e446: edc2 7a68 vstr s15, [r2, #416] ; 0x1a0 + e4bc: ee86 7aa7 vdiv.f32 s14, s13, s15 + e4c0: eeb7 7ac7 vcvt.f64.f32 d7, s14 + e4c4: feb8 7b47 vrinta.f64 d7, d7 + e4c8: eefd 7bc7 vcvt.s32.f64 s15, d7 + e4cc: eef8 7ae7 vcvt.f32.s32 s15, s15 + e4d0: edc2 7a70 vstr s15, [r2, #448] ; 0x1c0 bpmAvgSize++; - e44a: f889 31a8 strb.w r3, [r9, #424] ; 0x1a8 + e4d4: f889 31c8 strb.w r3, [r9, #456] ; 0x1c8 prevBeat = mms; - e44e: f8c9 11ac str.w r1, [r9, #428] ; 0x1ac + e4d8: f8c9 11cc str.w r1, [r9, #460] ; 0x1cc if(bpmAvgSize>=BMC_BPM_AVERAGE){ - e452: f67d aa8f bls.w b974 + e4dc: f67d aab5 bls.w ba4a avgBpm += (float) bpmAvg[i]; - e456: ed99 7a68 vldr s14, [r9, #416] ; 0x1a0 + e4e0: ed99 7a70 vldr s14, [r9, #448] ; 0x1c0 uint16_t newBpm = (uint16_t) round((avgBpm/BMC_BPM_AVERAGE)); - e45a: eef6 7a00 vmov.f32 s15, #96 ; 0x3f000000 0.5 + e4e4: eef6 7a00 vmov.f32 s15, #96 ; 0x3f000000 0.5 avgBpm += (float) bpmAvg[i]; - e45e: ed9f 6ab9 vldr s12, [pc, #740] ; e744 - memset(bpmAvg, 0, sizeof(bpmAvg[0]) * BMC_BPM_AVERAGE); - e462: f243 139c movw r3, #12700 ; 0x319c - avgBpm += (float) bpmAvg[i]; - e466: edd9 6a69 vldr s13, [r9, #420] ; 0x1a4 + e4e8: ed9f 6aa8 vldr s12, [pc, #672] ; e78c ticks = 0; - e46a: 2200 movs r2, #0 + e4ec: 2200 movs r2, #0 avgBpm += (float) bpmAvg[i]; - e46c: ee37 7a06 vadd.f32 s14, s14, s12 + e4ee: edd9 6a71 vldr s13, [r9, #452] ; 0x1c4 memset(bpmAvg, 0, sizeof(bpmAvg[0]) * BMC_BPM_AVERAGE); - e470: 442b add r3, r5 + e4f2: f505 5547 add.w r5, r5, #12736 ; 0x31c0 + avgBpm += (float) bpmAvg[i]; + e4f6: ee37 7a06 vadd.f32 s14, s14, s12 ticks = 0; - e472: f889 21bc strb.w r2, [r9, #444] ; 0x1bc + e4fa: f889 21dc strb.w r2, [r9, #476] ; 0x1dc bpmAvgSize = 0; - e476: f889 21a8 strb.w r2, [r9, #424] ; 0x1a8 + e4fe: f889 21c8 strb.w r2, [r9, #456] ; 0x1c8 + memset(bpmAvg, 0, sizeof(bpmAvg[0]) * BMC_BPM_AVERAGE); + e502: 602a str r2, [r5, #0] avgBpm += (float) bpmAvg[i]; - e47a: ee37 7a26 vadd.f32 s14, s14, s13 + e504: ee37 7a26 vadd.f32 s14, s14, s13 memset(bpmAvg, 0, sizeof(bpmAvg[0]) * BMC_BPM_AVERAGE); - e47e: 605a str r2, [r3, #4] - e480: 609a str r2, [r3, #8] + e508: 606a str r2, [r5, #4] if(bpm!=newBpm && isValidBpm(newBpm)){ - e482: f8b9 119c ldrh.w r1, [r9, #412] ; 0x19c - uint16_t newBpm = (uint16_t) round((avgBpm/BMC_BPM_AVERAGE)); - e486: ee27 7a27 vmul.f32 s14, s14, s15 + e50a: f8b9 11bc ldrh.w r1, [r9, #444] ; 0x1bc prevTime = 0; - e48a: f8c9 21b8 str.w r2, [r9, #440] ; 0x1b8 + e50e: f8c9 21d8 str.w r2, [r9, #472] ; 0x1d8 + uint16_t newBpm = (uint16_t) round((avgBpm/BMC_BPM_AVERAGE)); + e512: ee27 7a27 vmul.f32 s14, s14, s15 flags = 0; - e48e: f889 219e strb.w r2, [r9, #414] ; 0x19e - e492: eeb7 7ac7 vcvt.f64.f32 d7, s14 - e496: feb8 7b47 vrinta.f64 d7, d7 - e49a: eebd 7bc7 vcvt.s32.f64 s14, d7 - e49e: ee17 3a10 vmov r3, s14 - e4a2: b29b uxth r3, r3 + e516: f889 21be strb.w r2, [r9, #446] ; 0x1be + e51a: eeb7 7ac7 vcvt.f64.f32 d7, s14 + e51e: feb8 7b47 vrinta.f64 d7, d7 + e522: eebd 7bc7 vcvt.s32.f64 s14, d7 + e526: ee17 3a10 vmov r3, s14 + e52a: b29b uxth r3, r3 if(bpm!=newBpm && isValidBpm(newBpm)){ - e4a4: 4299 cmp r1, r3 - e4a6: f43d aa65 beq.w b974 - e4aa: f1a3 011e sub.w r1, r3, #30 - e4ae: f5b1 7f87 cmp.w r1, #270 ; 0x10e - e4b2: f63d aa5f bhi.w b974 + e52c: 4299 cmp r1, r3 + e52e: f43d aa8c beq.w ba4a + e532: f1a3 011e sub.w r1, r3, #30 + e536: f5b1 7f87 cmp.w r1, #270 ; 0x10e + e53a: f63d aa86 bhi.w ba4a interval = value; - e4b6: 2464 movs r4, #100 ; 0x64 - e4b8: 6801 ldr r1, [r0, #0] + e53e: 2464 movs r4, #100 ; 0x64 + e540: 6801 ldr r1, [r0, #0] return BMC_OFF_LED_EVENT; - e4ba: 4690 mov r8, r2 + e542: 4690 mov r8, r2 bpm = tempo; - e4bc: f8a9 319c strh.w r3, [r9, #412] ; 0x19c + e544: f8a9 31bc strh.w r3, [r9, #444] ; 0x1bc tmpBpm = tempo; - e4c0: f8a9 318c strh.w r3, [r9, #396] ; 0x18c - e4c4: f8a9 41c4 strh.w r4, [r9, #452] ; 0x1c4 + e548: f8a9 31ac strh.w r3, [r9, #428] ; 0x1ac + e54c: f8a9 41e4 strh.w r4, [r9, #484] ; 0x1e4 prevTime = (unsigned long) _BMCTiming::get(); - e4c8: f8c9 11c8 str.w r1, [r9, #456] ; 0x1c8 + e550: f8c9 11e8 str.w r1, [r9, #488] ; 0x1e8 } - e4cc: f7fd ba54 b.w b978 - e4d0: 69fb ldr r3, [r7, #28] - midi.sendControlChange(e.ports, channel, 32, data.byteB & 0x7F); - e4d2: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - e4d6: 697d ldr r5, [r7, #20] - e4d8: f003 020f and.w r2, r3, #15 - e4dc: 69bb ldr r3, [r7, #24] - e4de: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 - e4e2: 3201 adds r2, #1 - e4e4: 9602 str r6, [sp, #8] - e4e6: f003 037f and.w r3, r3, #127 ; 0x7f - e4ea: 2600 movs r6, #0 - e4ec: 9300 str r3, [sp, #0] - e4ee: 2320 movs r3, #32 - e4f0: 9601 str r6, [sp, #4] - return BMC_OFF_LED_EVENT; - e4f2: 46b0 mov r8, r6 - midi.sendControlChange(e.ports, channel, 32, data.byteB & 0x7F); - e4f4: e9c7 200a strd r2, r0, [r7, #40] ; 0x28 - e4f8: f014 ff70 bl 233dc - midi.sendProgramChange(e.ports, channel, data.byteC & 0x7F); - e4fc: 7a23 ldrb r3, [r4, #8] - e4fe: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 - e502: 6aba ldr r2, [r7, #40] ; 0x28 - e504: f003 037f and.w r3, r3, #127 ; 0x7f - e508: 6af8 ldr r0, [r7, #44] ; 0x2c - e50a: 9600 str r6, [sp, #0] - e50c: f014 fdec bl 230e8 - e510: f7fd ba32 b.w b978 - e514: 69fb ldr r3, [r7, #28] - midi.sendControlChange(e.ports, channel, 0, data.byteB & 0x7F); - e516: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - e51a: 697d ldr r5, [r7, #20] - e51c: f003 020f and.w r2, r3, #15 - e520: 69bb ldr r3, [r7, #24] - e522: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 - e526: 3201 adds r2, #1 - e528: 9602 str r6, [sp, #8] - e52a: f003 037f and.w r3, r3, #127 ; 0x7f - e52e: 2600 movs r6, #0 - e530: 9300 str r3, [sp, #0] - e532: 4633 mov r3, r6 - e534: 9601 str r6, [sp, #4] - return BMC_OFF_LED_EVENT; - e536: 46b0 mov r8, r6 - midi.sendControlChange(e.ports, channel, 0, data.byteB & 0x7F); - e538: e9c7 200a strd r2, r0, [r7, #40] ; 0x28 - e53c: f014 ff4e bl 233dc - midi.sendProgramChange(e.ports, channel, data.byteC & 0x7F); - e540: 7a23 ldrb r3, [r4, #8] - e542: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 - e546: 6aba ldr r2, [r7, #40] ; 0x28 - e548: f003 037f and.w r3, r3, #127 ; 0x7f - e54c: 6af8 ldr r0, [r7, #44] ; 0x2c - e54e: 9600 str r6, [sp, #0] - e550: f014 fdca bl 230e8 - e554: f7fd ba10 b.w b978 - stopwatchCmd(data.byteA, data.byteB, data.byteC, data.byteD); - e558: 687c ldr r4, [r7, #4] - e55a: 4628 mov r0, r5 - e55c: 693b ldr r3, [r7, #16] + e554: f7fd ba7b b.w ba4e + saveStore(); + e558: f642 40bc movw r0, #11452 ; 0x2cbc + e55c: 4428 add r0, r5 + e55e: f7f9 f9db bl 7918 + if(callback.storeUpdated){ + e562: f8da 3878 ldr.w r3, [sl, #2168] ; 0x878 + e566: 2b00 cmp r3, #0 + e568: f43d aa6f beq.w ba4a return BMC_OFF_LED_EVENT; - e55e: f04f 0800 mov.w r8, #0 - stopwatchCmd(data.byteA, data.byteB, data.byteC, data.byteD); - e562: e9d7 2106 ldrd r2, r1, [r7, #24] - e566: 9400 str r4, [sp, #0] - e568: f7f4 f8c4 bl 26f4 - e56c: f7fd ba04 b.w b978 - e570: 69fb ldr r3, [r7, #28] + e56c: f04f 0800 mov.w r8, #0 + callback.storeUpdated(); + e570: 4798 blx r3 + e572: f7fd ba6c b.w ba4e + midi.sendNoteOff(e.ports, data.getChannel(), data.byteB, data.byteC); + e576: 697b ldr r3, [r7, #20] + e578: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + e57c: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + e580: 693b ldr r3, [r7, #16] + e582: 9300 str r3, [sp, #0] + return BMC_TO_MIDI_CHANNEL(byteA); + e584: 69fb ldr r3, [r7, #28] + e586: f003 020f and.w r2, r3, #15 + e58a: 69bb ldr r3, [r7, #24] + e58c: f8cd 8004 str.w r8, [sp, #4] + e590: 3201 adds r2, #1 + e592: f015 fa97 bl 23ac4 + e596: 79a2 ldrb r2, [r4, #6] + streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, data.byteC); + e598: 7a21 ldrb r1, [r4, #8] + e59a: 4628 mov r0, r5 + e59c: f002 020f and.w r2, r2, #15 + e5a0: 79e3 ldrb r3, [r4, #7] + e5a2: 9100 str r1, [sp, #0] + e5a4: 21b0 movs r1, #176 ; 0xb0 + e5a6: 3201 adds r2, #1 + e5a8: f009 fd38 bl 1801c + e5ac: f7fd ba4f b.w ba4e + e5b0: 69fb ldr r3, [r7, #28] midi.sendControlChange(e.ports, channel, 0, data.byteB & 0x7F); - e572: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - e576: 6979 ldr r1, [r7, #20] - e578: 2500 movs r5, #0 - e57a: f003 020f and.w r2, r3, #15 - e57e: 69bb ldr r3, [r7, #24] - e580: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 + e5b2: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + e5b6: 6979 ldr r1, [r7, #20] + e5b8: 2500 movs r5, #0 + e5ba: f003 020f and.w r2, r3, #15 + e5be: 69bb ldr r3, [r7, #24] + e5c0: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 return BMC_OFF_LED_EVENT; - e584: 46a8 mov r8, r5 - e586: 3201 adds r2, #1 + e5c4: 46a8 mov r8, r5 + e5c6: 3201 adds r2, #1 midi.sendControlChange(e.ports, channel, 0, data.byteB & 0x7F); - e588: f003 037f and.w r3, r3, #127 ; 0x7f - e58c: 9602 str r6, [sp, #8] - e58e: 9300 str r3, [sp, #0] - e590: 462b mov r3, r5 - e592: 9501 str r5, [sp, #4] - e594: e9c7 200a strd r2, r0, [r7, #40] ; 0x28 - e598: f014 ff20 bl 233dc + e5c8: f003 037f and.w r3, r3, #127 ; 0x7f + e5cc: 9602 str r6, [sp, #8] + e5ce: 9300 str r3, [sp, #0] + e5d0: 462b mov r3, r5 + e5d2: 9501 str r5, [sp, #4] + e5d4: e9c7 200a strd r2, r0, [r7, #40] ; 0x28 + e5d8: f014 ff62 bl 234a0 midi.sendControlChange(e.ports, channel, 32, data.byteC & 0x7F); - e59c: 6979 ldr r1, [r7, #20] - e59e: 2320 movs r3, #32 - e5a0: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 - e5a4: e9cd 5601 strd r5, r6, [sp, #4] - e5a8: 7a24 ldrb r4, [r4, #8] - e5aa: 6aba ldr r2, [r7, #40] ; 0x28 - e5ac: f004 047f and.w r4, r4, #127 ; 0x7f - e5b0: 6af8 ldr r0, [r7, #44] ; 0x2c - e5b2: 9400 str r4, [sp, #0] - e5b4: f014 ff12 bl 233dc - e5b8: f7fd b9de b.w b978 + e5dc: 6979 ldr r1, [r7, #20] + e5de: 2320 movs r3, #32 + e5e0: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 + e5e4: e9cd 5601 strd r5, r6, [sp, #4] + e5e8: 7a24 ldrb r4, [r4, #8] + e5ea: 6aba ldr r2, [r7, #40] ; 0x28 + e5ec: f004 047f and.w r4, r4, #127 ; 0x7f + e5f0: 6af8 ldr r0, [r7, #44] ; 0x2c + e5f2: 9400 str r4, [sp, #0] + e5f4: f014 ff54 bl 234a0 + e5f8: f7fd ba29 b.w ba4e switch(t_command & 0x03){ - e5bc: 69fb ldr r3, [r7, #28] - e5be: f003 0803 and.w r8, r3, #3 - e5c2: f1b8 0f01 cmp.w r8, #1 - e5c6: f000 870e beq.w f3e6 - e5ca: f1b8 0f02 cmp.w r8, #2 - e5ce: f000 86ec beq.w f3aa - e5d2: f1b8 0f00 cmp.w r8, #0 - e5d6: f47d aa9a bne.w bb0e - e5da: 2117 movs r1, #23 - e5dc: 485a ldr r0, [pc, #360] ; (e748 ) + e5fc: 69fb ldr r3, [r7, #28] + e5fe: f003 0803 and.w r8, r3, #3 + e602: f1b8 0f01 cmp.w r8, #1 + e606: f001 819f beq.w f948 + e60a: f1b8 0f02 cmp.w r8, #2 + e60e: f001 8170 beq.w f8f2 + e612: f1b8 0f00 cmp.w r8, #0 + e616: f47d aadd bne.w bbd4 + e61a: 2117 movs r1, #23 + e61c: 485c ldr r0, [pc, #368] ; (e790 ) prevTime = 0; - e5de: f505 5540 add.w r5, r5, #12288 ; 0x3000 - e5e2: f01d ffb1 bl 2c548 + e61e: f505 5540 add.w r5, r5, #12288 ; 0x3000 + e622: f01e f805 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - e5e6: 4859 ldr r0, [pc, #356] ; (e74c ) - e5e8: f01b fc44 bl 29e74 - e5ec: f8c5 81dc str.w r8, [r5, #476] ; 0x1dc + e626: 485b ldr r0, [pc, #364] ; (e794 ) + e628: f01b fc9a bl 29f60 + e62c: f8c5 81fc str.w r8, [r5, #508] ; 0x1fc } } void stop(){ BMC_PRINTLN("BMCMidiActiveSense Stop"); outTimer.stop(); } - e5f0: f7fd b9c2 b.w b978 - midi.sendNoteOn(e.ports, data.getChannel(), data.byteB, data.byteC); - e5f4: 697b ldr r3, [r7, #20] - e5f6: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - e5fa: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - e5fe: 693b ldr r3, [r7, #16] - e600: 9300 str r3, [sp, #0] - e602: 69fb ldr r3, [r7, #28] - e604: f003 020f and.w r2, r3, #15 - e608: 69bb ldr r3, [r7, #24] - e60a: f8cd 8004 str.w r8, [sp, #4] - e60e: 3201 adds r2, #1 - e610: f015 f8a0 bl 23754 - e614: 79a2 ldrb r2, [r4, #6] - streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, data.byteC); - e616: 7a21 ldrb r1, [r4, #8] - e618: 4628 mov r0, r5 - e61a: f002 020f and.w r2, r2, #15 - e61e: 79e3 ldrb r3, [r4, #7] - e620: 9100 str r1, [sp, #0] - e622: 21b0 movs r1, #176 ; 0xb0 - e624: 3201 adds r2, #1 - e626: f009 fc87 bl 17f38 - e62a: f7fd b9a5 b.w b978 - saveStore(); - e62e: f642 409c movw r0, #11420 ; 0x2c9c - e632: 4428 add r0, r5 - e634: f7f9 f9a0 bl 7978 - if(callback.storeUpdated){ - e638: f8da 3878 ldr.w r3, [sl, #2168] ; 0x878 - e63c: 2b00 cmp r3, #0 - e63e: f43d a999 beq.w b974 - return BMC_OFF_LED_EVENT; - e642: f04f 0800 mov.w r8, #0 - callback.storeUpdated(); - e646: 4798 blx r3 - e648: f7fd b996 b.w b978 + e630: f7fd ba0d b.w ba4e midi.sendAfterTouch(e.ports, data.getChannel(), data.byteB, data.byteC); - e64c: 697b ldr r3, [r7, #20] + e634: 697b ldr r3, [r7, #20] return false; - e64e: f04f 0800 mov.w r8, #0 + e636: f04f 0800 mov.w r8, #0 midi.sendAfterTouch(e.ports, data.getChannel(), data.byteB, data.byteC); - e652: 6938 ldr r0, [r7, #16] - e654: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - e658: 69fb ldr r3, [r7, #28] - e65a: f003 020f and.w r2, r3, #15 - e65e: 69bb ldr r3, [r7, #24] - e660: 9000 str r0, [sp, #0] - e662: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - e666: 3201 adds r2, #1 - e668: f015 fcc2 bl 23ff0 - e66c: 79a2 ldrb r2, [r4, #6] + e63a: 6938 ldr r0, [r7, #16] + e63c: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + e640: 69fb ldr r3, [r7, #28] + e642: f003 020f and.w r2, r3, #15 + e646: 69bb ldr r3, [r7, #24] + e648: 9000 str r0, [sp, #0] + e64a: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + e64e: 3201 adds r2, #1 + e650: f015 fd32 bl 240b8 + e654: 79a2 ldrb r2, [r4, #6] streamMidi(BMC_MIDI_AFTER_TOUCH, data.getChannel(), data.byteB, data.byteC); - e66e: 79e3 ldrb r3, [r4, #7] - e670: 21d0 movs r1, #208 ; 0xd0 - e672: 7a24 ldrb r4, [r4, #8] - e674: f002 020f and.w r2, r2, #15 - e678: 4628 mov r0, r5 - e67a: 3201 adds r2, #1 + e656: 79e3 ldrb r3, [r4, #7] + e658: 21d0 movs r1, #208 ; 0xd0 + e65a: 7a24 ldrb r4, [r4, #8] + e65c: f002 020f and.w r2, r2, #15 + e660: 4628 mov r0, r5 + e662: 3201 adds r2, #1 + e664: 9400 str r4, [sp, #0] + e666: f009 fcd9 bl 1801c + e66a: f7fd b9f0 b.w ba4e + stopwatchCmd(data.byteA, data.byteB, data.byteC, data.byteD); + e66e: 687c ldr r4, [r7, #4] + e670: 4628 mov r0, r5 + e672: 693b ldr r3, [r7, #16] + return BMC_OFF_LED_EVENT; + e674: f04f 0800 mov.w r8, #0 + stopwatchCmd(data.byteA, data.byteB, data.byteC, data.byteD); + e678: e9d7 2106 ldrd r2, r1, [r7, #24] e67c: 9400 str r4, [sp, #0] - e67e: f009 fc5b bl 17f38 - e682: f7fd b979 b.w b978 - midi.sendAfterTouchPoly(e.ports, data.getChannel(), data.byteB, data.byteC); + e67e: f7f4 f83d bl 26fc + e682: f7fd b9e4 b.w ba4e + midi.sendNoteOn(e.ports, data.getChannel(), data.byteB, data.byteC); e686: 697b ldr r3, [r7, #20] - e688: 2000 movs r0, #0 - e68a: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - return false; - e68e: 4680 mov r8, r0 - midi.sendAfterTouchPoly(e.ports, data.getChannel(), data.byteB, data.byteC); + e688: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + e68c: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 e690: 693b ldr r3, [r7, #16] e692: 9300 str r3, [sp, #0] e694: 69fb ldr r3, [r7, #28] e696: f003 020f and.w r2, r3, #15 e69a: 69bb ldr r3, [r7, #24] - e69c: 9001 str r0, [sp, #4] - e69e: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - e6a2: 3201 adds r2, #1 - e6a4: f015 fdc8 bl 24238 - e6a8: 79a2 ldrb r2, [r4, #6] + e69c: f8cd 8004 str.w r8, [sp, #4] + e6a0: 3201 adds r2, #1 + e6a2: f015 f8b9 bl 23818 + e6a6: 79a2 ldrb r2, [r4, #6] + streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, data.byteC); + e6a8: 7a21 ldrb r1, [r4, #8] + e6aa: 4628 mov r0, r5 + e6ac: f002 020f and.w r2, r2, #15 + e6b0: 79e3 ldrb r3, [r4, #7] + e6b2: 9100 str r1, [sp, #0] + e6b4: 21b0 movs r1, #176 ; 0xb0 + e6b6: 3201 adds r2, #1 + e6b8: f009 fcb0 bl 1801c + e6bc: f7fd b9c7 b.w ba4e + e6c0: 69fb ldr r3, [r7, #28] + midi.sendControlChange(e.ports, channel, 32, data.byteB & 0x7F); + e6c2: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + e6c6: 697d ldr r5, [r7, #20] + e6c8: f003 020f and.w r2, r3, #15 + e6cc: 69bb ldr r3, [r7, #24] + e6ce: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 + e6d2: 3201 adds r2, #1 + e6d4: 9602 str r6, [sp, #8] + e6d6: f003 037f and.w r3, r3, #127 ; 0x7f + e6da: 2600 movs r6, #0 + e6dc: 9300 str r3, [sp, #0] + e6de: 2320 movs r3, #32 + e6e0: 9601 str r6, [sp, #4] + return BMC_OFF_LED_EVENT; + e6e2: 46b0 mov r8, r6 + midi.sendControlChange(e.ports, channel, 32, data.byteB & 0x7F); + e6e4: e9c7 200a strd r2, r0, [r7, #40] ; 0x28 + e6e8: f014 feda bl 234a0 + midi.sendProgramChange(e.ports, channel, data.byteC & 0x7F); + e6ec: 7a23 ldrb r3, [r4, #8] + e6ee: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 + e6f2: 6aba ldr r2, [r7, #40] ; 0x28 + e6f4: f003 037f and.w r3, r3, #127 ; 0x7f + e6f8: 6af8 ldr r0, [r7, #44] ; 0x2c + e6fa: 9600 str r6, [sp, #0] + e6fc: f014 fd5a bl 231b4 + e700: f7fd b9a5 b.w ba4e + e704: 69fb ldr r3, [r7, #28] + midi.sendControlChange(e.ports, channel, 0, data.byteB & 0x7F); + e706: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + e70a: 697d ldr r5, [r7, #20] + e70c: f003 020f and.w r2, r3, #15 + e710: 69bb ldr r3, [r7, #24] + e712: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 + e716: 3201 adds r2, #1 + e718: 9602 str r6, [sp, #8] + e71a: f003 037f and.w r3, r3, #127 ; 0x7f + e71e: 2600 movs r6, #0 + e720: 9300 str r3, [sp, #0] + e722: 4633 mov r3, r6 + e724: 9601 str r6, [sp, #4] + return BMC_OFF_LED_EVENT; + e726: 46b0 mov r8, r6 + midi.sendControlChange(e.ports, channel, 0, data.byteB & 0x7F); + e728: e9c7 200a strd r2, r0, [r7, #40] ; 0x28 + e72c: f014 feb8 bl 234a0 + midi.sendProgramChange(e.ports, channel, data.byteC & 0x7F); + e730: 7a23 ldrb r3, [r4, #8] + e732: f895 1033 ldrb.w r1, [r5, #51] ; 0x33 + e736: 6aba ldr r2, [r7, #40] ; 0x28 + e738: f003 037f and.w r3, r3, #127 ; 0x7f + e73c: 6af8 ldr r0, [r7, #44] ; 0x2c + e73e: 9600 str r6, [sp, #0] + e740: f014 fd38 bl 231b4 + e744: f7fd b983 b.w ba4e + midi.sendAfterTouchPoly(e.ports, data.getChannel(), data.byteB, data.byteC); + e748: 697b ldr r3, [r7, #20] + e74a: 2000 movs r0, #0 + e74c: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + return false; + e750: 4680 mov r8, r0 + midi.sendAfterTouchPoly(e.ports, data.getChannel(), data.byteB, data.byteC); + e752: 693b ldr r3, [r7, #16] + e754: 9300 str r3, [sp, #0] + e756: 69fb ldr r3, [r7, #28] + e758: f003 020f and.w r2, r3, #15 + e75c: 69bb ldr r3, [r7, #24] + e75e: 9001 str r0, [sp, #4] + e760: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + e764: 3201 adds r2, #1 + e766: f015 fdcf bl 24308 + e76a: 79a2 ldrb r2, [r4, #6] streamMidi(BMC_MIDI_AFTER_TOUCH_POLY, data.getChannel(), data.byteB, data.byteC); - e6aa: 7a21 ldrb r1, [r4, #8] - e6ac: 4628 mov r0, r5 - e6ae: f002 020f and.w r2, r2, #15 - e6b2: 79e3 ldrb r3, [r4, #7] - e6b4: 9100 str r1, [sp, #0] - e6b6: 21a0 movs r1, #160 ; 0xa0 - e6b8: 3201 adds r2, #1 - e6ba: f009 fc3d bl 17f38 - e6be: f7fd b95b b.w b978 - return song; - e6c2: f505 5540 add.w r5, r5, #12288 ; 0x3000 + e76c: 7a21 ldrb r1, [r4, #8] + e76e: 4628 mov r0, r5 + e770: f002 020f and.w r2, r2, #15 + e774: 79e3 ldrb r3, [r4, #7] + e776: 9100 str r1, [sp, #0] + e778: 21a0 movs r1, #160 ; 0xa0 + e77a: 3201 adds r2, #1 + e77c: f009 fc4e bl 1801c + e780: f7fd b965 b.w ba4e + e784: 2000bb08 .word 0x2000bb08 + e788: 4c64e1c0 .word 0x4c64e1c0 + e78c: 00000000 .word 0x00000000 + e790: 20001f3c .word 0x20001f3c + e794: 20004c68 .word 0x20004c68 + midi.sendNoteOn(e.ports, data.getChannel(), data.byteB, value); + e798: 697b ldr r3, [r7, #20] + e79a: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + e79e: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + e7a2: 69fb ldr r3, [r7, #28] + e7a4: f003 020f and.w r2, r3, #15 + e7a8: 69bb ldr r3, [r7, #24] + e7aa: f8cd 8004 str.w r8, [sp, #4] + e7ae: 6afe ldr r6, [r7, #44] ; 0x2c + e7b0: 3201 adds r2, #1 + e7b2: 9600 str r6, [sp, #0] + e7b4: f015 f830 bl 23818 + e7b8: 79a2 ldrb r2, [r4, #6] + streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, value); + e7ba: 79e3 ldrb r3, [r4, #7] + e7bc: 21b0 movs r1, #176 ; 0xb0 + e7be: f002 020f and.w r2, r2, #15 + e7c2: 4628 mov r0, r5 + e7c4: 9600 str r6, [sp, #0] + e7c6: 3201 adds r2, #1 + e7c8: f009 fc28 bl 1801c + e7cc: f7fd b93f b.w ba4e + e7d0: f505 5540 add.w r5, r5, #12288 ; 0x3000 num += in_range / 2; - e6c6: f04f 0864 mov.w r8, #100 ; 0x64 - e6ca: 2207 movs r2, #7 + e7d4: f04f 0864 mov.w r8, #100 ; 0x64 + e7d8: 2203 movs r2, #3 long result = num / in_range + out_min; - e6cc: 230f movs r3, #15 - e6ce: f8d5 120c ldr.w r1, [r5, #524] ; 0x20c + e7da: 2307 movs r3, #7 + e7dc: f8d5 1228 ldr.w r1, [r5, #552] ; 0x228 num += in_range / 2; - e6d2: 7809 ldrb r1, [r1, #0] - e6d4: fb18 2801 smlabb r8, r8, r1, r2 + e7e0: 7809 ldrb r1, [r1, #0] + e7e2: fb18 2801 smlabb r8, r8, r1, r2 long result = num / in_range + out_min; - e6d8: fbb8 f8f3 udiv r8, r8, r3 - return map(setLists.getSong(), 0, BMC_MAX_SETLISTS_SONGS-1, 0, 100); - e6dc: fa5f f888 uxtb.w r8, r8 - e6e0: f7fd b94a b.w b978 - return (event & 0x3FFF) == layer; - e6e4: f89c 8000 ldrb.w r8, [ip] - e6e8: f3c1 010d ubfx r1, r1, #0, #14 - e6ec: eba1 0008 sub.w r0, r1, r8 - e6f0: f1d0 0800 rsbs r8, r0, #0 - e6f4: eb48 0800 adc.w r8, r8, r0 - e6f8: f7fd b93e b.w b978 - num += in_range / 2; - e6fc: f89c 2000 ldrb.w r2, [ip] - e700: f04f 0864 mov.w r8, #100 ; 0x64 - e704: 2302 movs r3, #2 - e706: fb18 3802 smlabb r8, r8, r2, r3 - return map(layer, 0, BMC_MAX_LAYERS-1, 0, 100); - e70a: f3c8 0887 ubfx r8, r8, #2, #8 - e70e: f7fd b933 b.w b978 + e7e6: fbb8 f8f3 udiv r8, r8, r3 + return map(setLists.get(), 0, BMC_MAX_SETLISTS-1, 0, 100); + e7ea: fa5f f888 uxtb.w r8, r8 + e7ee: f7fd b92e b.w ba4e return songPart; - e712: f505 5540 add.w r5, r5, #12288 ; 0x3000 - e716: f04f 0864 mov.w r8, #100 ; 0x64 - e71a: 2203 movs r2, #3 + e7f2: f505 5540 add.w r5, r5, #12288 ; 0x3000 + num += in_range / 2; + e7f6: f04f 0864 mov.w r8, #100 ; 0x64 + e7fa: 2203 movs r2, #3 long result = num / in_range + out_min; - e71c: 2307 movs r3, #7 - e71e: f8d5 1210 ldr.w r1, [r5, #528] ; 0x210 + e7fc: 2307 movs r3, #7 + e7fe: f8d5 1230 ldr.w r1, [r5, #560] ; 0x230 num += in_range / 2; - e722: 7809 ldrb r1, [r1, #0] - e724: fb18 2801 smlabb r8, r8, r1, r2 + e802: 7809 ldrb r1, [r1, #0] + e804: fb18 2801 smlabb r8, r8, r1, r2 long result = num / in_range + out_min; - e728: fbb8 f8f3 udiv r8, r8, r3 + e808: fbb8 f8f3 udiv r8, r8, r3 return map(setLists.getPart(), 0, BMC_MAX_SETLISTS_SONG_PARTS-1, 0, 100); - e72c: fa5f f888 uxtb.w r8, r8 - e730: f7fd b922 b.w b978 + e80c: fa5f f888 uxtb.w r8, r8 + e810: f7fd b91d b.w ba4e return midi.getRealTimeBlockOutput(); - e734: f3c8 0880 ubfx r8, r8, #2, #1 - e738: f7fd b91e b.w b978 - e73c: 2000bae8 .word 0x2000bae8 - e740: 4c64e1c0 .word 0x4c64e1c0 - e744: 00000000 .word 0x00000000 - e748: 20001f3c .word 0x20001f3c - e74c: 20004ba8 .word 0x20004ba8 + e814: f3c8 0880 ubfx r8, r8, #2, #1 + e818: f7fd b919 b.w ba4e if(data.byteB>=2){ - e750: 69bb ldr r3, [r7, #24] - e752: 2b01 cmp r3, #1 - e754: f240 86c4 bls.w f4e0 + e81c: 69bb ldr r3, [r7, #24] + e81e: 2b01 cmp r3, #1 + e820: f241 8051 bls.w f8c6 flags ^= 1UL << bit; - e758: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc + e824: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc return BMC_OFF_LED_EVENT; - e75c: f04f 0800 mov.w r8, #0 - e760: f083 0304 eor.w r3, r3, #4 - e764: f88a 3acc strb.w r3, [sl, #2764] ; 0xacc + e828: f04f 0800 mov.w r8, #0 + e82c: f083 0304 eor.w r3, r3, #4 + e830: f88a 3acc strb.w r3, [sl, #2764] ; 0xacc return flags.toggle(BMC_FLAG_MIDI_REAL_TIME_BLOCK_OUTPUT); - e768: f7fd b906 b.w b978 - midi.sendNoteOff(e.ports, data.getChannel(), data.byteB, value); - e76c: 697b ldr r3, [r7, #20] - e76e: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - e772: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - e776: 69fb ldr r3, [r7, #28] - e778: f003 020f and.w r2, r3, #15 - e77c: 69bb ldr r3, [r7, #24] - e77e: f8cd 8004 str.w r8, [sp, #4] - e782: 6afe ldr r6, [r7, #44] ; 0x2c - e784: 3201 adds r2, #1 - e786: 9600 str r6, [sp, #0] - e788: f015 f938 bl 239fc - e78c: 79a2 ldrb r2, [r4, #6] - streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, value); - e78e: 79e3 ldrb r3, [r4, #7] - e790: 21b0 movs r1, #176 ; 0xb0 - e792: f002 020f and.w r2, r2, #15 - e796: 4628 mov r0, r5 - e798: 9600 str r6, [sp, #0] - e79a: 3201 adds r2, #1 - e79c: f009 fbcc bl 17f38 - e7a0: f7fd b8ea b.w b978 - midi.sendNoteOn(e.ports, data.getChannel(), data.byteB, value); - e7a4: 697b ldr r3, [r7, #20] - e7a6: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - e7aa: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - e7ae: 69fb ldr r3, [r7, #28] - e7b0: f003 020f and.w r2, r3, #15 - e7b4: 69bb ldr r3, [r7, #24] - e7b6: f8cd 8004 str.w r8, [sp, #4] - e7ba: 6afe ldr r6, [r7, #44] ; 0x2c - e7bc: 3201 adds r2, #1 - e7be: 9600 str r6, [sp, #0] - e7c0: f014 ffc8 bl 23754 - e7c4: 79a2 ldrb r2, [r4, #6] - streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, value); - e7c6: 79e3 ldrb r3, [r4, #7] - e7c8: 21b0 movs r1, #176 ; 0xb0 - e7ca: f002 020f and.w r2, r2, #15 - e7ce: 4628 mov r0, r5 - e7d0: 9600 str r6, [sp, #0] - e7d2: 3201 adds r2, #1 - e7d4: f009 fbb0 bl 17f38 - e7d8: f7fd b8ce b.w b978 - e7dc: 79a2 ldrb r2, [r4, #6] - return BMC_OFF_LED_EVENT; - e7de: 46a8 mov r8, r5 - midi.sendProgramChange(e.ports, data.getChannel(), data.byteD & 0x7F); - e7e0: 7a63 ldrb r3, [r4, #9] - e7e2: 6979 ldr r1, [r7, #20] - e7e4: f002 020f and.w r2, r2, #15 - e7e8: f003 037f and.w r3, r3, #127 ; 0x7f - e7ec: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 - e7f0: 3201 adds r2, #1 - e7f2: 9500 str r5, [sp, #0] - e7f4: f014 fc78 bl 230e8 - e7f8: f7fd b8be b.w b978 - return map(programBank, 0, 127, 0, 100); - e7fc: f505 5540 add.w r5, r5, #12288 ; 0x3000 - num += in_range / 2; - e800: f04f 0864 mov.w r8, #100 ; 0x64 - e804: 223f movs r2, #63 ; 0x3f - long result = num / in_range + out_min; - e806: 237f movs r3, #127 ; 0x7f - num += in_range / 2; - e808: f895 1814 ldrb.w r1, [r5, #2068] ; 0x814 - e80c: fb18 2801 smlabb r8, r8, r1, r2 - long result = num / in_range + out_min; - e810: fbb8 f8f3 udiv r8, r8, r3 - e814: fa5f f888 uxtb.w r8, r8 - e818: f7fd b8ae b.w b978 - return setList; - e81c: f505 5540 add.w r5, r5, #12288 ; 0x3000 - num += in_range / 2; - e820: f04f 0864 mov.w r8, #100 ; 0x64 - e824: 2203 movs r2, #3 - long result = num / in_range + out_min; - e826: 2307 movs r3, #7 - e828: f8d5 1208 ldr.w r1, [r5, #520] ; 0x208 - num += in_range / 2; - e82c: 7809 ldrb r1, [r1, #0] - e82e: fb18 2801 smlabb r8, r8, r1, r2 - long result = num / in_range + out_min; - e832: fbb8 f8f3 udiv r8, r8, r3 - return map(setLists.get(), 0, BMC_MAX_SETLISTS-1, 0, 100); - e836: fa5f f888 uxtb.w r8, r8 - e83a: f7fd b89d b.w b978 + e834: f7fd b90b b.w ba4e } else if(data.byteB==1){ - e83e: 69b9 ldr r1, [r7, #24] - e840: 2901 cmp r1, #1 + e838: 69b9 ldr r1, [r7, #24] + e83a: 2901 cmp r1, #1 if(value>9){ - e842: 6af9 ldr r1, [r7, #44] ; 0x2c + e83c: 6af9 ldr r1, [r7, #44] ; 0x2c } else if(data.byteB==1){ - e844: f000 8696 beq.w f574 + e83e: f000 87fc beq.w f83a if(value>9){ - e848: 2909 cmp r1, #9 - e84a: f201 8047 bhi.w f8dc + e842: 2909 cmp r1, #9 + e844: f201 81ba bhi.w fbbc return (ch + e854: f994 3ace ldrsb.w r3, [r4, #2766] ; 0xace + e858: 2b00 cmp r3, #0 + e85a: f43d a8f6 beq.w ba4a midi.sendPitchBend(e.ports, channel, 0); - e864: 2600 movs r6, #0 - e866: 697b ldr r3, [r7, #20] - e868: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - e86c: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - e870: 4633 mov r3, r6 - e872: 9600 str r6, [sp, #0] + e85e: 2600 movs r6, #0 + e860: 697b ldr r3, [r7, #20] + e862: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + e866: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + e86a: 4633 mov r3, r6 + e86c: 9600 str r6, [sp, #0] return BMC_OFF_LED_EVENT; - e874: 46b0 mov r8, r6 + e86e: 46b0 mov r8, r6 midi.sendPitchBend(e.ports, channel, 0); - e876: f015 fa15 bl 23ca4 + e870: f015 fa7e bl 23d70 channel[ch].pitch = (t_value & 0x7F); - e87a: f884 6ace strb.w r6, [r4, #2766] ; 0xace + e874: f884 6ace strb.w r6, [r4, #2766] ; 0xace globals.setMidiLocalUpdate(true); - e87e: f8da 2ac8 ldr.w r2, [sl, #2760] ; 0xac8 + e878: f8da 2ac8 ldr.w r2, [sl, #2760] ; 0xac8 bitWrite(flags, bit, value); - e882: 6dd3 ldr r3, [r2, #92] ; 0x5c - e884: f043 0320 orr.w r3, r3, #32 - e888: 65d3 str r3, [r2, #92] ; 0x5c - } - e88a: f7fd b875 b.w b978 - e88e: 69fb ldr r3, [r7, #28] - e890: 2b09 cmp r3, #9 - e892: f47d a93c bne.w bb0e - return bitRead(flags, bit); - e896: f505 5540 add.w r5, r5, #12288 ; 0x3000 - e89a: f895 379d ldrb.w r3, [r5, #1949] ; 0x79d - if(isSyncEnabled()){ - e89e: 07dc lsls r4, r3, #31 - e8a0: f57d a868 bpl.w b974 + e87c: 6dd3 ldr r3, [r2, #92] ; 0x5c + e87e: f043 0320 orr.w r3, r3, #32 + e882: 65d3 str r3, [r2, #92] ; 0x5c + } + e884: f7fd b8e3 b.w ba4e + return song; + e888: f505 5540 add.w r5, r5, #12288 ; 0x3000 num += in_range / 2; - e8a4: 6afc ldr r4, [r7, #44] ; 0x2c - e8a6: 233f movs r3, #63 ; 0x3f - e8a8: 2164 movs r1, #100 ; 0x64 + e88c: f04f 0864 mov.w r8, #100 ; 0x64 + e890: 2207 movs r2, #7 long result = num / in_range + out_min; - e8aa: 207f movs r0, #127 ; 0x7f - midi.sendControlChange(port, channel, t_control, t_value); - e8ac: f895 27a8 ldrb.w r2, [r5, #1960] ; 0x7a8 + e892: 230f movs r3, #15 + e894: f8d5 122c ldr.w r1, [r5, #556] ; 0x22c num += in_range / 2; - e8b0: fb11 3104 smlabb r1, r1, r4, r3 - e8b4: 2401 movs r4, #1 - e8b6: 236d movs r3, #109 ; 0x6d + e898: 7809 ldrb r1, [r1, #0] + e89a: fb18 2801 smlabb r8, r8, r1, r2 long result = num / in_range + out_min; - e8b8: fbb1 f1f0 udiv r1, r1, r0 - e8bc: b2c8 uxtb r0, r1 - e8be: f895 17a9 ldrb.w r1, [r5, #1961] ; 0x7a9 - e8c2: 9402 str r4, [sp, #8] - e8c4: 2400 movs r4, #0 - e8c6: 9000 str r0, [sp, #0] - e8c8: 9401 str r4, [sp, #4] + e89e: fbb8 f8f3 udiv r8, r8, r3 + return map(setLists.getSong(), 0, BMC_MAX_SETLISTS_SONGS-1, 0, 100); + e8a2: fa5f f888 uxtb.w r8, r8 + e8a6: f7fd b8d2 b.w ba4e + midi.sendNoteOff(e.ports, data.getChannel(), data.byteB, value); + e8aa: 697b ldr r3, [r7, #20] + e8ac: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + e8b0: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + return BMC_TO_MIDI_CHANNEL(byteA); + e8b4: 69fb ldr r3, [r7, #28] + e8b6: f003 020f and.w r2, r3, #15 + e8ba: 69bb ldr r3, [r7, #24] + e8bc: f8cd 8004 str.w r8, [sp, #4] + e8c0: 6afe ldr r6, [r7, #44] ; 0x2c + e8c2: 3201 adds r2, #1 + e8c4: 9600 str r6, [sp, #0] + e8c6: f015 f8fd bl 23ac4 + e8ca: 79a2 ldrb r2, [r4, #6] + streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, value); + e8cc: 79e3 ldrb r3, [r4, #7] + e8ce: 21b0 movs r1, #176 ; 0xb0 + e8d0: f002 020f and.w r2, r2, #15 + e8d4: 4628 mov r0, r5 + e8d6: 9600 str r6, [sp, #0] + e8d8: 3201 adds r2, #1 + e8da: f009 fb9f bl 1801c + e8de: f7fd b8b6 b.w ba4e + e8e2: 79a2 ldrb r2, [r4, #6] return BMC_OFF_LED_EVENT; - e8ca: 46a0 mov r8, r4 - e8cc: f8d5 0790 ldr.w r0, [r5, #1936] ; 0x790 - e8d0: f014 fd84 bl 233dc - e8d4: f7fd b850 b.w b978 + e8e4: 46a8 mov r8, r5 + midi.sendProgramChange(e.ports, data.getChannel(), data.byteD & 0x7F); + e8e6: 7a63 ldrb r3, [r4, #9] + e8e8: 6979 ldr r1, [r7, #20] + e8ea: f002 020f and.w r2, r2, #15 + e8ee: f003 037f and.w r3, r3, #127 ; 0x7f + e8f2: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 + e8f6: 3201 adds r2, #1 + e8f8: 9500 str r5, [sp, #0] + e8fa: f014 fc5b bl 231b4 + e8fe: f7fd b8a6 b.w ba4e + return (event & 0x3FFF) == layer; + e902: f89c 8000 ldrb.w r8, [ip] + e906: f3c1 010d ubfx r1, r1, #0, #14 + e90a: eba1 0008 sub.w r0, r1, r8 + e90e: f1d0 0800 rsbs r8, r0, #0 + e912: eb48 0800 adc.w r8, r8, r0 + e916: f7fd b89a b.w ba4e + num += in_range / 2; + e91a: f89c 2000 ldrb.w r2, [ip] + e91e: f04f 0864 mov.w r8, #100 ; 0x64 + e922: 2302 movs r3, #2 + e924: fb18 3802 smlabb r8, r8, r2, r3 + return map(layer, 0, BMC_MAX_LAYERS-1, 0, 100); + e928: f3c8 0887 ubfx r8, r8, #2, #8 + e92c: f7fd b88f b.w ba4e + return map(programBank, 0, 127, 0, 100); + e930: f505 5540 add.w r5, r5, #12288 ; 0x3000 + e934: f04f 0864 mov.w r8, #100 ; 0x64 + e938: 223f movs r2, #63 ; 0x3f + long result = num / in_range + out_min; + e93a: 237f movs r3, #127 ; 0x7f num += in_range / 2; - e8d8: f04f 0864 mov.w r8, #100 ; 0x64 - e8dc: 223f movs r2, #63 ; 0x3f + e93c: f895 1834 ldrb.w r1, [r5, #2100] ; 0x834 + e940: fb18 2801 smlabb r8, r8, r1, r2 long result = num / in_range + out_min; - e8de: 237f movs r3, #127 ; 0x7f + e944: fbb8 f8f3 udiv r8, r8, r3 + e948: fa5f f888 uxtb.w r8, r8 + e94c: f7fd b87f b.w ba4e num += in_range / 2; - e8e0: fb18 2809 smlabb r8, r8, r9, r2 + e950: f04f 0864 mov.w r8, #100 ; 0x64 + e954: 223f movs r2, #63 ; 0x3f long result = num / in_range + out_min; - e8e4: fbb8 f8f3 udiv r8, r8, r3 + e956: 237f movs r3, #127 ; 0x7f + num += in_range / 2; + e958: fb18 2809 smlabb r8, r8, r9, r2 + long result = num / in_range + out_min; + e95c: fbb8 f8f3 udiv r8, r8, r3 return map(currentCC, 0, 127, 0, 100); - e8e8: fa5f f888 uxtb.w r8, r8 - e8ec: f7fd b844 b.w b978 - setLists.scrollSong(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); - e8f0: 7c20 ldrb r0, [r4, #16] + e960: fa5f f888 uxtb.w r8, r8 + e964: f7fd b873 b.w ba4e + setLists.scrollPart(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + e968: 7c20 ldrb r0, [r4, #16] return BMC_OFF_LED_EVENT; - e8f2: f04f 0800 mov.w r8, #0 + e96a: f04f 0800 mov.w r8, #0 return scroll.amount; - e8f6: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 - setLists.scrollSong(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); - e8fa: f894 209f ldrb.w r2, [r4, #159] ; 0x9f - e8fe: f894 109e ldrb.w r1, [r4, #158] ; 0x9e - e902: 3b00 subs r3, #0 - e904: 9001 str r0, [sp, #4] - e906: f505 5048 add.w r0, r5, #12800 ; 0x3200 - e90a: 7ba4 ldrb r4, [r4, #14] - e90c: bf18 it ne - e90e: 2301 movne r3, #1 - e910: 9400 str r4, [sp, #0] - e912: f7f9 fbc9 bl 80a8 - e916: f7fd b82f b.w b978 + e96e: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 + setLists.scrollPart(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + e972: f894 209f ldrb.w r2, [r4, #159] ; 0x9f + e976: f894 109e ldrb.w r1, [r4, #158] ; 0x9e + e97a: 3b00 subs r3, #0 + e97c: 9001 str r0, [sp, #4] + e97e: f243 2020 movw r0, #12832 ; 0x3220 + e982: 7ba4 ldrb r4, [r4, #14] + e984: bf18 it ne + e986: 2301 movne r3, #1 + e988: 4428 add r0, r5 + e98a: 9400 str r4, [sp, #0] + e98c: f7f9 fb9c bl 80c8 + e990: f7fd b85d b.w ba4e + switch(data.byteA){ + e994: 69fb ldr r3, [r7, #28] + e996: 3b01 subs r3, #1 + e998: 2b15 cmp r3, #21 + e99a: f63d a91b bhi.w bbd4 + e99e: a201 add r2, pc, #4 ; (adr r2, e9a4 ) + e9a0: f852 f023 ldr.w pc, [r2, r3, lsl #2] + e9a4: 0000e2d9 .word 0x0000e2d9 + e9a8: 0000e2c7 .word 0x0000e2c7 + e9ac: 0000e9fd .word 0x0000e9fd + e9b0: 0000e9fd .word 0x0000e9fd + e9b4: 0000e9fd .word 0x0000e9fd + e9b8: 0000e9fd .word 0x0000e9fd + e9bc: 0000e9fd .word 0x0000e9fd + e9c0: 0000e9fd .word 0x0000e9fd + e9c4: 0000e9fd .word 0x0000e9fd + e9c8: 0000e9fd .word 0x0000e9fd + e9cc: 00010ded .word 0x00010ded + e9d0: 00010dd9 .word 0x00010dd9 + e9d4: 00010dc5 .word 0x00010dc5 + e9d8: 00010db1 .word 0x00010db1 + e9dc: 00010d9d .word 0x00010d9d + e9e0: 00010d89 .word 0x00010d89 + e9e4: 0000e9fd .word 0x0000e9fd + e9e8: 00010d63 .word 0x00010d63 + e9ec: 00010d4f .word 0x00010d4f + e9f0: 00010d3b .word 0x00010d3b + e9f4: 00010d29 .word 0x00010d29 + e9f8: 00010ee3 .word 0x00010ee3 + e9fc: f505 5340 add.w r3, r5, #12288 ; 0x3000 + ea00: f893 2393 ldrb.w r2, [r3, #915] ; 0x393 + if(!connected()){ + ea04: 07d2 lsls r2, r2, #31 + ea06: f57d a820 bpl.w ba4a + return bitRead(flags, bit); + ea0a: f893 34c3 ldrb.w r3, [r3, #1219] ; 0x4c3 + sync.fas.toggleTuner(); + ea0e: f243 3074 movw r0, #13172 ; 0x3374 + if(!tuner.isOn()){ + ea12: f013 0301 ands.w r3, r3, #1 + ea16: 4428 add r0, r5 + ea18: f041 829c bne.w ff54 + fetchSysEx(BMC_FAS3_FUNC_ID_TUNER, 1, 0, BMC_FAS3_FETCH_TYPE_7_BIT); + ea1c: 2201 movs r2, #1 + ea1e: 2111 movs r1, #17 + ea20: 9300 str r3, [sp, #0] + return BMC_OFF_LED_EVENT; + ea22: 4698 mov r8, r3 + ea24: f7f2 fcd4 bl 13d0 + } + ea28: f7fd b811 b.w ba4e + if(data.byteB == 0){ + ea2c: 69bb ldr r3, [r7, #24] + ea2e: 2b00 cmp r3, #0 + ea30: f040 8395 bne.w f15e + ea34: f505 5540 add.w r5, r5, #12288 ; 0x3000 + ea38: f895 3b00 ldrb.w r3, [r5, #2816] ; 0xb00 + return auxJacks[data.byteA].isConnected() ? 100 : 0; + ea3c: 079e lsls r6, r3, #30 + ea3e: f57d a804 bpl.w ba4a + return midi.getRealTimeBlockInput() ? 100 : 0; + ea42: f04f 0864 mov.w r8, #100 ; 0x64 + ea46: f7fd b802 b.w ba4e switch(data.byteA){ - e91a: 69fb ldr r3, [r7, #28] - e91c: 2b02 cmp r3, #2 - e91e: d821 bhi.n e964 - e920: 2b00 cmp r3, #0 - e922: f041 81a2 bne.w fc6a - e926: f505 5940 add.w r9, r5, #12288 ; 0x3000 - e92a: f899 3373 ldrb.w r3, [r9, #883] ; 0x373 + ea4a: 69fb ldr r3, [r7, #28] + ea4c: 2b02 cmp r3, #2 + ea4e: d821 bhi.n ea94 + ea50: 2b00 cmp r3, #0 + ea52: f041 8042 bne.w fada + ea56: f505 5940 add.w r9, r5, #12288 ; 0x3000 + ea5a: f899 3393 ldrb.w r3, [r9, #915] ; 0x393 if(!connected()){ - e92e: 07da lsls r2, r3, #31 - e930: f141 8216 bpl.w fd60 - e934: f243 41ac movw r1, #13484 ; 0x34ac + ea5e: 07de lsls r6, r3, #31 + ea60: f141 8722 bpl.w 108a8 + ea64: f243 41cc movw r1, #13516 ; 0x34cc for(int e = 0; e < BMC_FAS3_BLOCKS_COUNT; e++){ - e938: 69fb ldr r3, [r7, #28] - e93a: 4429 add r1, r5 - e93c: e003 b.n e946 - e93e: 3301 adds r3, #1 - e940: 2b5b cmp r3, #91 ; 0x5b - e942: f43d a817 beq.w b974 + ea68: 69fb ldr r3, [r7, #28] + ea6a: 4429 add r1, r5 + ea6c: e003 b.n ea76 + ea6e: 3301 adds r3, #1 + ea70: 2b5b cmp r3, #91 ; 0x5b + ea72: f43c afea beq.w ba4a if(blocksInfo[e].id == n){ - e946: f811 2033 ldrb.w r2, [r1, r3, lsl #3] - e94a: 69b8 ldr r0, [r7, #24] - e94c: 4290 cmp r0, r2 - e94e: d1f6 bne.n e93e + ea76: f811 2033 ldrb.w r2, [r1, r3, lsl #3] + ea7a: 69b8 ldr r0, [r7, #24] + ea7c: 4290 cmp r0, r2 + ea7e: d1f6 bne.n ea6e return bitRead(blockStates[t_id], 0)==0; - e950: 444b add r3, r9 - e952: f893 3439 ldrb.w r3, [r3, #1081] ; 0x439 + ea80: 444b add r3, r9 + ea82: f893 3459 ldrb.w r3, [r3, #1113] ; 0x459 return sync.fas.isBlockBypassed(data.byteB) ? 100 : 0; - e956: 07db lsls r3, r3, #31 - e958: f57d a80c bpl.w b974 + ea86: 07dc lsls r4, r3, #31 + ea88: f57c afdf bpl.w ba4a return midi.getRealTimeBlockInput() ? 100 : 0; - e95c: f04f 0864 mov.w r8, #100 ; 0x64 - e960: f7fd b80a b.w b978 - e964: 69fb ldr r3, [r7, #28] - e966: 3b03 subs r3, #3 - e968: 2b05 cmp r3, #5 - e96a: f63d a8d0 bhi.w bb0e + ea8c: f04f 0864 mov.w r8, #100 ; 0x64 + ea90: f7fc bfdd b.w ba4e + ea94: 69fb ldr r3, [r7, #28] + ea96: 3b03 subs r3, #3 + ea98: 2b05 cmp r3, #5 + ea9a: f63d a89b bhi.w bbd4 return bitRead(flags, 0); - e96e: f505 5340 add.w r3, r5, #12288 ; 0x3000 - e972: f893 3373 ldrb.w r3, [r3, #883] ; 0x373 + ea9e: f505 5340 add.w r3, r5, #12288 ; 0x3000 + eaa2: f893 3393 ldrb.w r3, [r3, #915] ; 0x393 if(!connected()){ - e976: f013 0801 ands.w r8, r3, #1 - e97a: d006 beq.n e98a - e97c: f243 3054 movw r0, #13140 ; 0x3354 - e980: 69b9 ldr r1, [r7, #24] - e982: 4428 add r0, r5 - e984: f7f8 f9d0 bl 6d28 - e988: 4680 mov r8, r0 + eaa6: f013 0801 ands.w r8, r3, #1 + eaaa: d006 beq.n eaba + eaac: f243 3074 movw r0, #13172 ; 0x3374 + eab0: 69b9 ldr r1, [r7, #24] + eab2: 4428 add r0, r5 + eab4: f7f8 f970 bl 6d98 + eab8: 4680 mov r8, r0 return (sync.fas.getBlockChannel(data.byteB)+1) * 25; - e98a: f108 0801 add.w r8, r8, #1 - e98e: eb08 0888 add.w r8, r8, r8, lsl #2 - e992: eb08 0888 add.w r8, r8, r8, lsl #2 - e996: fa5f f888 uxtb.w r8, r8 - e99a: f7fc bfed b.w b978 - switch(data.byteA){ - e99e: 69fb ldr r3, [r7, #28] - e9a0: 3b01 subs r3, #1 - e9a2: 2b15 cmp r3, #21 - e9a4: f63d a8b3 bhi.w bb0e - e9a8: a201 add r2, pc, #4 ; (adr r2, e9b0 ) - e9aa: f852 f023 ldr.w pc, [r2, r3, lsl #2] - e9ae: bf00 nop - e9b0: 0000e1a1 .word 0x0000e1a1 - e9b4: 0000e18f .word 0x0000e18f - e9b8: 0000ea09 .word 0x0000ea09 - e9bc: 0000ea09 .word 0x0000ea09 - e9c0: 0000ea09 .word 0x0000ea09 - e9c4: 0000ea09 .word 0x0000ea09 - e9c8: 0000ea09 .word 0x0000ea09 - e9cc: 0000ea09 .word 0x0000ea09 - e9d0: 0000ea09 .word 0x0000ea09 - e9d4: 0000ea09 .word 0x0000ea09 - e9d8: 000109ff .word 0x000109ff - e9dc: 000109eb .word 0x000109eb - e9e0: 000109d7 .word 0x000109d7 - e9e4: 000109c3 .word 0x000109c3 - e9e8: 000109af .word 0x000109af - e9ec: 0001099b .word 0x0001099b - e9f0: 0000ea09 .word 0x0000ea09 - e9f4: 00010975 .word 0x00010975 - e9f8: 00010961 .word 0x00010961 - e9fc: 0001140d .word 0x0001140d - ea00: 000113fb .word 0x000113fb - ea04: 0000fd69 .word 0x0000fd69 - ea08: f505 5340 add.w r3, r5, #12288 ; 0x3000 - ea0c: f893 2373 ldrb.w r2, [r3, #883] ; 0x373 - if(!connected()){ - ea10: 07d2 lsls r2, r2, #31 - ea12: f57c afaf bpl.w b974 - ea16: f893 34a3 ldrb.w r3, [r3, #1187] ; 0x4a3 - sync.fas.toggleTuner(); - ea1a: f243 3054 movw r0, #13140 ; 0x3354 - if(!tuner.isOn()){ - ea1e: f013 0301 ands.w r3, r3, #1 - ea22: 4428 add r0, r5 - ea24: f042 8368 bne.w 110f8 - fetchSysEx(BMC_FAS3_FUNC_ID_TUNER, 1, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - ea28: 2201 movs r2, #1 - ea2a: 2111 movs r1, #17 - ea2c: 9300 str r3, [sp, #0] + eaba: f108 0801 add.w r8, r8, #1 + eabe: eb08 0888 add.w r8, r8, r8, lsl #2 + eac2: eb08 0888 add.w r8, r8, r8, lsl #2 + eac6: fa5f f888 uxtb.w r8, r8 + eaca: f7fc bfc0 b.w ba4e + setLists.scrollSong(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + eace: 7c20 ldrb r0, [r4, #16] return BMC_OFF_LED_EVENT; - ea2e: 4698 mov r8, r3 - ea30: f7f2 fcce bl 13d0 - } - ea34: f7fc bfa0 b.w b978 + ead0: f04f 0800 mov.w r8, #0 + ead4: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 + setLists.scrollSong(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); + ead8: f894 209f ldrb.w r2, [r4, #159] ; 0x9f + eadc: f894 109e ldrb.w r1, [r4, #158] ; 0x9e + eae0: 3b00 subs r3, #0 + eae2: 9001 str r0, [sp, #4] + eae4: f243 2020 movw r0, #12832 ; 0x3220 + eae8: 7ba4 ldrb r4, [r4, #14] + eaea: bf18 it ne + eaec: 2301 movne r3, #1 + eaee: 4428 add r0, r5 + eaf0: 9400 str r4, [sp, #0] + eaf2: f7f9 faa9 bl 8048 + eaf6: f7fc bfaa b.w ba4e + eafa: 69fb ldr r3, [r7, #28] + eafc: 2b09 cmp r3, #9 + eafe: f47d a869 bne.w bbd4 + eb02: f505 5540 add.w r5, r5, #12288 ; 0x3000 + eb06: f895 37bd ldrb.w r3, [r5, #1981] ; 0x7bd + if(isSyncEnabled()){ + eb0a: 07dc lsls r4, r3, #31 + eb0c: f57c af9d bpl.w ba4a + num += in_range / 2; + eb10: 6afc ldr r4, [r7, #44] ; 0x2c + eb12: 233f movs r3, #63 ; 0x3f + eb14: 2164 movs r1, #100 ; 0x64 + long result = num / in_range + out_min; + eb16: 207f movs r0, #127 ; 0x7f + midi.sendControlChange(port, channel, t_control, t_value); + eb18: f895 27c8 ldrb.w r2, [r5, #1992] ; 0x7c8 + num += in_range / 2; + eb1c: fb11 3104 smlabb r1, r1, r4, r3 + eb20: 2401 movs r4, #1 + eb22: 236d movs r3, #109 ; 0x6d + long result = num / in_range + out_min; + eb24: fbb1 f1f0 udiv r1, r1, r0 + eb28: b2c8 uxtb r0, r1 + eb2a: f895 17c9 ldrb.w r1, [r5, #1993] ; 0x7c9 + eb2e: 9402 str r4, [sp, #8] + eb30: 2400 movs r4, #0 + eb32: 9000 str r0, [sp, #0] + eb34: 9401 str r4, [sp, #4] + return BMC_OFF_LED_EVENT; + eb36: 46a0 mov r8, r4 + eb38: f8d5 07b0 ldr.w r0, [r5, #1968] ; 0x7b0 + eb3c: f014 fcb0 bl 234a0 + eb40: f7fc bf85 b.w ba4e return n==0 ? midiInActivity() : midiOutActivity(); - ea38: 2b00 cmp r3, #0 - ea3a: f040 8574 bne.w f526 - ea3e: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c - ea42: f003 0301 and.w r3, r3, #1 + eb44: 2b00 cmp r3, #0 + eb46: f040 8587 bne.w f658 + eb4a: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + eb4e: f003 0301 and.w r3, r3, #1 return globals.hasMidiActivity(data.byteA) ? BMC_PULSE_LED_EVENT : BMC_IGNORE_LED_EVENT; - ea46: 2b00 cmp r3, #0 - ea48: bf0c ite eq - ea4a: f04f 08ff moveq.w r8, #255 ; 0xff - ea4e: f04f 0802 movne.w r8, #2 - ea52: f7fc bf91 b.w b978 - setLists.scrollPart(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); - ea56: 7c20 ldrb r0, [r4, #16] - return BMC_OFF_LED_EVENT; - ea58: f04f 0800 mov.w r8, #0 - ea5c: f894 30a0 ldrb.w r3, [r4, #160] ; 0xa0 - setLists.scrollPart(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), data.min, data.max); - ea60: f894 209f ldrb.w r2, [r4, #159] ; 0x9f - ea64: f894 109e ldrb.w r1, [r4, #158] ; 0x9e - ea68: 3b00 subs r3, #0 - ea6a: 9001 str r0, [sp, #4] - ea6c: f505 5048 add.w r0, r5, #12800 ; 0x3200 - ea70: 7ba4 ldrb r4, [r4, #14] - ea72: bf18 it ne - ea74: 2301 movne r3, #1 - ea76: 9400 str r4, [sp, #0] - ea78: f7f9 fb56 bl 8128 - ea7c: f7fc bf7c b.w b978 + eb52: 2b00 cmp r3, #0 + eb54: bf0c ite eq + eb56: f04f 08ff moveq.w r8, #255 ; 0xff + eb5a: f04f 0802 movne.w r8, #2 + eb5e: f7fc bf76 b.w ba4e num += in_range / 2; - ea80: f04f 0864 mov.w r8, #100 ; 0x64 - ea84: 223f movs r2, #63 ; 0x3f + eb62: f04f 0864 mov.w r8, #100 ; 0x64 + eb66: 223f movs r2, #63 ; 0x3f long result = num / in_range + out_min; - ea86: 237f movs r3, #127 ; 0x7f + eb68: 237f movs r3, #127 ; 0x7f num += in_range / 2; - ea88: fb18 2800 smlabb r8, r8, r0, r2 + eb6a: fb18 2800 smlabb r8, r8, r0, r2 long result = num / in_range + out_min; - ea8c: fbb8 f8f3 udiv r8, r8, r3 + eb6e: fbb8 f8f3 udiv r8, r8, r3 return map(currentPC, 0, 127, 0, 100); - ea90: fa5f f888 uxtb.w r8, r8 - ea94: f7fc bf70 b.w b978 - if(data.byteB == 0){ - ea98: 69bb ldr r3, [r7, #24] - ea9a: 2b00 cmp r3, #0 - ea9c: f040 82d8 bne.w f050 - eaa0: f505 5540 add.w r5, r5, #12288 ; 0x3000 - eaa4: f895 3ae0 ldrb.w r3, [r5, #2784] ; 0xae0 - return auxJacks[data.byteA].isConnected() ? 100 : 0; - eaa8: 079e lsls r6, r3, #30 - eaaa: f57c af63 bpl.w b974 - return midi.getRealTimeBlockInput() ? 100 : 0; - eaae: f04f 0864 mov.w r8, #100 ; 0x64 - eab2: f7fc bf61 b.w b978 - midi.sendControlChange(e.ports, data.getChannel(), data.byteB, value); - eab6: 697b ldr r3, [r7, #20] - eab8: 2000 movs r0, #0 - eaba: 6afe ldr r6, [r7, #44] ; 0x2c - eabc: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - return BMC_OFF_LED_EVENT; - eac0: 4680 mov r8, r0 - midi.sendControlChange(e.ports, data.getChannel(), data.byteB, value); - eac2: 69bb ldr r3, [r7, #24] - eac4: 9001 str r0, [sp, #4] - eac6: 2001 movs r0, #1 - eac8: 9600 str r6, [sp, #0] - eaca: 9002 str r0, [sp, #8] - eacc: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - ead0: f014 fc84 bl 233dc - return BMC_TO_MIDI_CHANNEL(byteA); - ead4: 79a2 ldrb r2, [r4, #6] - streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, value); - ead6: 79e3 ldrb r3, [r4, #7] - ead8: 21b0 movs r1, #176 ; 0xb0 - eada: f002 020f and.w r2, r2, #15 - eade: 4628 mov r0, r5 - eae0: 9600 str r6, [sp, #0] - eae2: 3201 adds r2, #1 - eae4: f009 fa28 bl 17f38 - eae8: f7fc bf46 b.w b978 - midi.sendProgramChange(e.ports, data.getChannel(), value); - eaec: 697b ldr r3, [r7, #20] - eaee: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - eaf2: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - eaf6: 2300 movs r3, #0 - eaf8: 9300 str r3, [sp, #0] - return BMC_OFF_LED_EVENT; - eafa: 4698 mov r8, r3 - midi.sendProgramChange(e.ports, data.getChannel(), value); - eafc: 6afe ldr r6, [r7, #44] ; 0x2c - eafe: 4633 mov r3, r6 - eb00: f014 faf2 bl 230e8 - eb04: 79a2 ldrb r2, [r4, #6] - streamMidi(BMC_MIDI_PROGRAM_CHANGE, data.getChannel(), value); - eb06: 24ff movs r4, #255 ; 0xff - eb08: 4633 mov r3, r6 - eb0a: f002 020f and.w r2, r2, #15 - eb0e: 21c0 movs r1, #192 ; 0xc0 - eb10: 4628 mov r0, r5 - eb12: 9400 str r4, [sp, #0] - eb14: 3201 adds r2, #1 - eb16: f009 fa0f bl 17f38 - eb1a: f7fc bf2d b.w b978 + eb72: fa5f f888 uxtb.w r8, r8 + eb76: f7fc bf6a b.w ba4e + return globals.hasMidiActivity(data.byteA) ? BMC_PULSE_LED_EVENT : BMC_IGNORE_LED_EVENT; + eb7a: 46b0 mov r8, r6 + eb7c: f7fc bf67 b.w ba4e sync.helix.command(data.byteA, data.byteB, data.byteC); - eb1e: 693b ldr r3, [r7, #16] - eb20: 4428 add r0, r5 - eb22: e9d7 2106 ldrd r2, r1, [r7, #24] + eb80: 693b ldr r3, [r7, #16] + eb82: 4428 add r0, r5 + eb84: e9d7 2106 ldrd r2, r1, [r7, #24] return BMC_OFF_LED_EVENT; - eb26: 4698 mov r8, r3 + eb88: 4698 mov r8, r3 sync.helix.command(data.byteA, data.byteB, data.byteC); - eb28: f7fa fbe0 bl 92ec - eb2c: f7fc bf24 b.w b978 + eb8a: f7fa fb7f bl 928c + eb8e: f7fc bf5e b.w ba4e + if(data.byteA < BMC_MAX_SETLISTS_SONGS){ + eb92: 69fb ldr r3, [r7, #28] + eb94: 2b0f cmp r3, #15 + eb96: f63c af58 bhi.w ba4a + eb9a: f505 5140 add.w r1, r5, #12288 ; 0x3000 + strcpy(data.label, "SONG"); + eb9e: 4bc2 ldr r3, [pc, #776] ; (eea8 ) + eba0: f8da 27fc ldr.w r2, [sl, #2044] ; 0x7fc + return BMC_OFF_LED_EVENT; + eba4: f04f 0800 mov.w r8, #0 + eba8: f8d1 622c ldr.w r6, [r1, #556] ; 0x22c + strcpy(data.label, "SONG"); + ebac: 6818 ldr r0, [r3, #0] + data.value = data.byteA; + ebae: 69f9 ldr r1, [r7, #28] + strcpy(data.label, "SONG"); + ebb0: 791b ldrb r3, [r3, #4] + ebb2: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + ebb6: f887 30c3 strb.w r3, [r7, #195] ; 0xc3 + data.value = data.byteA; + ebba: b28b uxth r3, r1 + ebbc: 6812 ldr r2, [r2, #0] + ebbe: 8163 strh r3, [r4, #10] + ebc0: 7830 ldrb r0, [r6, #0] + ebc2: f3c2 2240 ubfx r2, r2, #9, #1 + setLists.getSongName(data.value, data.str); + ebc6: f243 2620 movw r6, #12832 ; 0x3220 + data.highlight = (data.valueSelected == data.byteA); + ebca: eba3 0a00 sub.w sl, r3, r0 + ebce: 7622 strb r2, [r4, #24] + setLists.getSongName(data.value, data.str); + ebd0: 442e add r6, r5 + data.allowMeter = true; + ebd2: 2201 movs r2, #1 + data.highlight = (data.valueSelected == data.byteA); + ebd4: f1da 0300 rsbs r3, sl, #0 + data.valueSelected = setLists.getSong(); + ebd8: 81a0 strh r0, [r4, #12] + data.allowMeter = true; + ebda: 75e2 strb r2, [r4, #23] + setLists.getSongName(data.value, data.str); + ebdc: 4630 mov r0, r6 + data.highlight = (data.valueSelected == data.byteA); + ebde: eb43 030a adc.w r3, r3, sl + setLists.getSongName(data.value, data.str); + ebe2: f107 026d add.w r2, r7, #109 ; 0x6d + data.highlight = (data.valueSelected == data.byteA); + ebe6: 7523 strb r3, [r4, #20] + setLists.getSongName(data.value, data.str); + ebe8: f7f9 fb06 bl 81f8 + setLists.getSongName(data.valueSelected, data.strSelected); + ebec: f107 0296 add.w r2, r7, #150 ; 0x96 + ebf0: 7b21 ldrb r1, [r4, #12] + ebf2: 4630 mov r0, r6 + display.renderBlock(data); + ebf4: f643 3658 movw r6, #15192 ; 0x3b58 + setLists.getSongName(data.valueSelected, data.strSelected); + ebf8: f7f9 fafe bl 81f8 + strcpy(data.format, "Sg %02u"); + ebfc: 4aab ldr r2, [pc, #684] ; (eeac ) + ebfe: f107 03e0 add.w r3, r7, #224 ; 0xe0 + display.renderBlock(data); + ec02: 442e add r6, r5 + strcpy(data.format, "Sg %02u"); + ec04: e892 0003 ldmia.w r2, {r0, r1} + data.digits = 2; + ec08: 2202 movs r2, #2 + strcpy(data.format, "Sg %02u"); + ec0a: e883 0003 stmia.w r3, {r0, r1} + data.digits = 2; + ec0e: f884 209c strb.w r2, [r4, #156] ; 0x9c + display.renderBlock(data); + ec12: f107 0160 add.w r1, r7, #96 ; 0x60 + ec16: 2295 movs r2, #149 ; 0x95 + ec18: 4668 mov r0, sp + ec1a: f01b fde9 bl 2a7f0 + ec1e: 4630 mov r0, r6 + ec20: e894 000e ldmia.w r4, {r1, r2, r3} + ec24: f7fb feac bl a980 + ec28: f7fc bf11 b.w ba4e strcpy(data.label, "PRESET"); - eb30: 4bd0 ldr r3, [pc, #832] ; (ee74 ) + ec2c: 4ba0 ldr r3, [pc, #640] ; (eeb0 ) data.value = p1; - eb32: 8161 strh r1, [r4, #10] + ec2e: 8161 strh r1, [r4, #10] strcpy(data.label, "PRESET"); - eb34: 6818 ldr r0, [r3, #0] - eb36: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - eb3a: 8898 ldrh r0, [r3, #4] - eb3c: 799b ldrb r3, [r3, #6] - eb3e: f8a7 00c3 strh.w r0, [r7, #195] ; 0xc3 - eb42: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 + ec30: 6818 ldr r0, [r3, #0] + ec32: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + ec36: 8898 ldrh r0, [r3, #4] + ec38: 799b ldrb r3, [r3, #6] + ec3a: f8a7 00c3 strh.w r0, [r7, #195] ; 0xc3 + ec3e: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 if(!connected()){ - eb46: 2a00 cmp r2, #0 - eb48: f001 8084 beq.w fc54 + ec42: 2a00 cmp r2, #0 + ec44: f000 87d1 beq.w fbea return preset.id; - eb4c: f8b9 338c ldrh.w r3, [r9, #908] ; 0x38c + ec48: f8b9 33ac ldrh.w r3, [r9, #940] ; 0x3ac data.highlight = data.valueSelected == p1; - eb50: eba1 0c03 sub.w ip, r1, r3 + ec4c: 1ace subs r6, r1, r3 data.valueSelected = sync.fas.getPresetNumber(); - eb54: 81a3 strh r3, [r4, #12] - eb56: f8da 27fc ldr.w r2, [sl, #2044] ; 0x7fc + ec4e: 81a3 strh r3, [r4, #12] + ec50: f8da 27fc ldr.w r2, [sl, #2044] ; 0x7fc sprintf(data.str, "P %04u", data.value); - eb5a: f107 006d add.w r0, r7, #109 ; 0x6d + ec54: f107 006d add.w r0, r7, #109 ; 0x6d data.highlight = data.valueSelected == p1; - eb5e: f1dc 0300 rsbs r3, ip, #0 - eb62: eb43 030c adc.w r3, r3, ip - eb66: 7523 strb r3, [r4, #20] - eb68: 6813 ldr r3, [r2, #0] + ec58: 4273 negs r3, r6 + ec5a: 4173 adcs r3, r6 + ec5c: 7523 strb r3, [r4, #20] + ec5e: 6813 ldr r3, [r2, #0] sprintf(data.str, "P %04u", data.value); - eb6a: 460a mov r2, r1 - eb6c: 49c2 ldr r1, [pc, #776] ; (ee78 ) - eb6e: f3c3 2340 ubfx r3, r3, #9, #1 - eb72: 7623 strb r3, [r4, #24] - eb74: f01f fb0a bl 2e18c - eb78: f899 3373 ldrb.w r3, [r9, #883] ; 0x373 + ec60: 460a mov r2, r1 + ec62: 4994 ldr r1, [pc, #592] ; (eeb4 ) + ec64: f3c3 2340 ubfx r3, r3, #9, #1 + ec68: 7623 strb r3, [r4, #24] + ec6a: f01f fb03 bl 2e274 + ec6e: f899 3393 ldrb.w r3, [r9, #915] ; 0x393 if(connected()){ - eb7c: 07db lsls r3, r3, #31 - eb7e: f140 84d8 bpl.w f532 + ec72: 07db lsls r3, r3, #31 + ec74: f140 8604 bpl.w f880 strcpy(buff, preset.name); - eb82: f243 3190 movw r1, #13200 ; 0x3390 - eb86: f107 0096 add.w r0, r7, #150 ; 0x96 - eb8a: 4429 add r1, r5 - eb8c: f01f fef6 bl 2e97c + ec78: f243 31b0 movw r1, #13232 ; 0x33b0 + ec7c: f107 0096 add.w r0, r7, #150 ; 0x96 + ec80: 4429 add r1, r5 + ec82: f01f feeb bl 2ea5c strcpy(data.format, "P %04u"); - eb90: 4ab9 ldr r2, [pc, #740] ; (ee78 ) + ec86: 4a8b ldr r2, [pc, #556] ; (eeb4 ) data.digits = 4; - eb92: 2104 movs r1, #4 + ec88: 2104 movs r1, #4 display.renderBlock(data); - eb94: f643 3638 movw r6, #15160 ; 0x3b38 + ec8a: f643 3658 movw r6, #15192 ; 0x3b58 return BMC_OFF_LED_EVENT; - eb98: f04f 0800 mov.w r8, #0 + ec8e: f04f 0800 mov.w r8, #0 data.digits = 4; - eb9c: f884 109c strb.w r1, [r4, #156] ; 0x9c + ec92: f884 109c strb.w r1, [r4, #156] ; 0x9c display.renderBlock(data); - eba0: 442e add r6, r5 + ec96: 442e add r6, r5 strcpy(data.format, "P %04u"); - eba2: e892 0003 ldmia.w r2, {r0, r1} + ec98: e892 0003 ldmia.w r2, {r0, r1} display.renderBlock(data); - eba6: 2295 movs r2, #149 ; 0x95 + ec9c: 2295 movs r2, #149 ; 0x95 strcpy(data.format, "P %04u"); - eba8: f8c7 00e0 str.w r0, [r7, #224] ; 0xe0 - ebac: 0c08 lsrs r0, r1, #16 - ebae: f8a7 10e4 strh.w r1, [r7, #228] ; 0xe4 + ec9e: f8c7 00e0 str.w r0, [r7, #224] ; 0xe0 + eca2: 0c08 lsrs r0, r1, #16 + eca4: f8a7 10e4 strh.w r1, [r7, #228] ; 0xe4 display.renderBlock(data); - ebb2: f107 0160 add.w r1, r7, #96 ; 0x60 + eca8: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.format, "P %04u"); - ebb6: f887 00e6 strb.w r0, [r7, #230] ; 0xe6 + ecac: f887 00e6 strb.w r0, [r7, #230] ; 0xe6 display.renderBlock(data); - ebba: 4668 mov r0, sp - ebbc: f01b fda4 bl 2a708 - ebc0: 4630 mov r0, r6 - ebc2: e894 000e ldmia.w r4, {r1, r2, r3} - ebc6: f7fb ff09 bl a9dc - ebca: f7fc bed5 b.w b978 - if(data.byteA < BMC_MAX_SETLISTS_SONGS){ - ebce: 69fb ldr r3, [r7, #28] - ebd0: 2b0f cmp r3, #15 - ebd2: f63c aecf bhi.w b974 - return song; - ebd6: f505 5140 add.w r1, r5, #12288 ; 0x3000 - strcpy(data.label, "SONG"); - ebda: 4ba8 ldr r3, [pc, #672] ; (ee7c ) - ebdc: f8da 27fc ldr.w r2, [sl, #2044] ; 0x7fc + ecb0: 4668 mov r0, sp + ecb2: f01b fd9d bl 2a7f0 + ecb6: 4630 mov r0, r6 + ecb8: e894 000e ldmia.w r4, {r1, r2, r3} + ecbc: f7fb fe60 bl a980 + ecc0: f7fc bec5 b.w ba4e + strcpy(data.label, "SCENE"); + ecc4: 4b7c ldr r3, [pc, #496] ; (eeb8 ) + data.value = (data.byteA & 0x07); + ecc6: fa1f f288 uxth.w r2, r8 + strcpy(data.label, "SCENE"); + ecca: 6818 ldr r0, [r3, #0] + eccc: 889b ldrh r3, [r3, #4] + data.value = (data.byteA & 0x07); + ecce: 8162 strh r2, [r4, #10] + strcpy(data.label, "SCENE"); + ecd0: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 + ecd4: f899 3393 ldrb.w r3, [r9, #915] ; 0x393 + ecd8: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + if(!connected()){ + ecdc: 07de lsls r6, r3, #31 + ecde: f140 8722 bpl.w fb26 + ece2: f8da 37fc ldr.w r3, [sl, #2044] ; 0x7fc + strcpy(str, sceneName[t_scene]); + ece6: 2611 movs r6, #17 + ece8: f243 3aac movw sl, #13228 ; 0x33ac + ecec: f04f 0b25 mov.w fp, #37 ; 0x25 + ecf0: 681b ldr r3, [r3, #0] + ecf2: fb16 b808 smlabb r8, r6, r8, fp + ecf6: 44aa add sl, r5 + ecf8: f3c3 2340 ubfx r3, r3, #9, #1 + ecfc: eb0a 0108 add.w r1, sl, r8 + ed00: 7623 strb r3, [r4, #24] + data.valueSelected = sync.fas.getSceneNumber(); + ed02: f899 33ae ldrb.w r3, [r9, #942] ; 0x3ae + data.highlight = data.valueSelected == data.value; + ed06: 1ad0 subs r0, r2, r3 + return preset.scene; + ed08: 4698 mov r8, r3 + data.valueSelected = sync.fas.getSceneNumber(); + ed0a: 81a3 strh r3, [r4, #12] + data.highlight = data.valueSelected == data.value; + ed0c: 4242 negs r2, r0 + ed0e: 4142 adcs r2, r0 + ed10: f107 006d add.w r0, r7, #109 ; 0x6d + ed14: 7522 strb r2, [r4, #20] + ed16: f01f fea1 bl 2ea5c + if(scene < 8){ + ed1a: f1b8 0f07 cmp.w r8, #7 + ed1e: f240 86f9 bls.w fb14 + strcpy(data.format, "S %01u"); + ed22: 4a66 ldr r2, [pc, #408] ; (eebc ) + data.digits = 1; + ed24: 2101 movs r1, #1 + display.renderBlock(data); + ed26: f643 3658 movw r6, #15192 ; 0x3b58 return BMC_OFF_LED_EVENT; - ebe0: f04f 0800 mov.w r8, #0 - strcpy(data.label, "SONG"); - ebe4: 6818 ldr r0, [r3, #0] - ebe6: f8d1 620c ldr.w r6, [r1, #524] ; 0x20c - ebea: 791b ldrb r3, [r3, #4] - data.value = data.byteA; - ebec: 69f9 ldr r1, [r7, #28] - strcpy(data.label, "SONG"); - ebee: f887 30c3 strb.w r3, [r7, #195] ; 0xc3 + ed2a: f04f 0800 mov.w r8, #0 + data.digits = 1; + ed2e: f884 109c strb.w r1, [r4, #156] ; 0x9c + display.renderBlock(data); + ed32: 442e add r6, r5 + strcpy(data.format, "S %01u"); + ed34: e892 0003 ldmia.w r2, {r0, r1} + display.renderBlock(data); + ed38: 2295 movs r2, #149 ; 0x95 + strcpy(data.format, "S %01u"); + ed3a: f8c7 00e0 str.w r0, [r7, #224] ; 0xe0 + ed3e: 0c08 lsrs r0, r1, #16 + ed40: f8a7 10e4 strh.w r1, [r7, #228] ; 0xe4 + display.renderBlock(data); + ed44: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.format, "S %01u"); + ed48: f887 00e6 strb.w r0, [r7, #230] ; 0xe6 + display.renderBlock(data); + ed4c: 4668 mov r0, sp + ed4e: f01b fd4f bl 2a7f0 + ed52: 4630 mov r0, r6 + ed54: e894 000e ldmia.w r4, {r1, r2, r3} + ed58: f7fb fe12 bl a980 + ed5c: f7fc be77 b.w ba4e + ed60: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc + return midi.getRealTimeBlockOutput() ? 100 : 0; + ed64: 075a lsls r2, r3, #29 + ed66: f57c ae70 bpl.w ba4a + return midi.getRealTimeBlockInput() ? 100 : 0; + ed6a: f04f 0864 mov.w r8, #100 ; 0x64 + ed6e: f7fc be6e b.w ba4e + ed72: f894 10a0 ldrb.w r1, [r4, #160] ; 0xa0 + sync.daw.sendEncoderScrolling(data.byteA, data.byteB, data.scrollDirection(), data.scrollAmount()); + ed76: f243 2050 movw r0, #12880 ; 0x3250 + ed7a: f894 309e ldrb.w r3, [r4, #158] ; 0x9e + return BMC_OFF_LED_EVENT; + ed7e: f04f 0800 mov.w r8, #0 + sync.daw.sendEncoderScrolling(data.byteA, data.byteB, data.scrollDirection(), data.scrollAmount()); + ed82: 1e0c subs r4, r1, #0 + ed84: 69ba ldr r2, [r7, #24] + ed86: 69f9 ldr r1, [r7, #28] + ed88: 4428 add r0, r5 + ed8a: bf18 it ne + ed8c: 2401 movne r4, #1 + ed8e: 9400 str r4, [sp, #0] + ed90: f7fa f824 bl 8ddc + ed94: f7fc be5b b.w ba4e + bitWrite(settings, 2, 0); + ed98: 78e2 ldrb r2, [r4, #3] + display.renderBlock(data); + ed9a: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "ACTIVE SENSE"); + ed9e: 4b48 ldr r3, [pc, #288] ; (eec0 ) + return BMC_OFF_LED_EVENT; + eda0: f04f 0800 mov.w r8, #0 + eda4: f022 0204 bic.w r2, r2, #4 + display.renderBlock(data); + eda8: 442e add r6, r5 + bitWrite(settings, 3, 1); + edaa: f042 0208 orr.w r2, r2, #8 + edae: 70e2 strb r2, [r4, #3] + return (prevTime>0); + edb0: f505 5240 add.w r2, r5, #12288 ; 0x3000 + edb4: f8d2 21fc ldr.w r2, [r2, #508] ; 0x1fc + edb8: 3a00 subs r2, #0 + edba: bf18 it ne + edbc: 2201 movne r2, #1 + edbe: 7522 strb r2, [r4, #20] + strcpy(data.str, "ACTIVE SENSE"); + edc0: cb07 ldmia r3!, {r0, r1, r2} + edc2: 781b ldrb r3, [r3, #0] + edc4: f8c7 006d str.w r0, [r7, #109] ; 0x6d + display.renderBlock(data); + edc8: 4668 mov r0, sp + strcpy(data.str, "ACTIVE SENSE"); + edca: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + display.renderBlock(data); + edce: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "ACTIVE SENSE"); + edd2: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + display.renderBlock(data); + edd6: 2295 movs r2, #149 ; 0x95 + strcpy(data.str, "ACTIVE SENSE"); + edd8: f887 3079 strb.w r3, [r7, #121] ; 0x79 + display.renderBlock(data); + eddc: f01b fd08 bl 2a7f0 + ede0: 4630 mov r0, r6 + ede2: e894 000e ldmia.w r4, {r1, r2, r3} + ede6: f7fb fdcb bl a980 + edea: f7fc be30 b.w ba4e + edee: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + display.renderBlock(data); + edf2: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.label, "STATUS"); + edf6: 4a33 ldr r2, [pc, #204] ; (eec4 ) + return BMC_OFF_LED_EVENT; + edf8: f04f 0800 mov.w r8, #0 + edfc: f3c3 1300 ubfx r3, r3, #4, #1 + strcpy(data.str, "BLE"); + ee00: 4931 ldr r1, [pc, #196] ; (eec8 ) + display.renderBlock(data); + ee02: 442e add r6, r5 + ee04: 7523 strb r3, [r4, #20] + bitWrite(settings, 2, 0); + ee06: 78e3 ldrb r3, [r4, #3] + strcpy(data.str, "BLE"); + ee08: 6808 ldr r0, [r1, #0] + strcpy(data.label, "STATUS"); + ee0a: 8891 ldrh r1, [r2, #4] + ee0c: f023 0304 bic.w r3, r3, #4 + strcpy(data.str, "BLE"); + ee10: f8c7 006d str.w r0, [r7, #109] ; 0x6d + strcpy(data.label, "STATUS"); + ee14: f8a7 10c3 strh.w r1, [r7, #195] ; 0xc3 + bitWrite(settings, 3, 1); + ee18: f043 0308 orr.w r3, r3, #8 + ee1c: 6810 ldr r0, [r2, #0] + ee1e: 7991 ldrb r1, [r2, #6] + display.renderBlock(data); + ee20: 2295 movs r2, #149 ; 0x95 + strcpy(data.label, "STATUS"); + ee22: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + display.renderBlock(data); + ee26: 4668 mov r0, sp + strcpy(data.label, "STATUS"); + ee28: f887 10c5 strb.w r1, [r7, #197] ; 0xc5 + display.renderBlock(data); + ee2c: f107 0160 add.w r1, r7, #96 ; 0x60 + ee30: 70e3 strb r3, [r4, #3] + ee32: f01b fcdd bl 2a7f0 + ee36: 4630 mov r0, r6 + ee38: e894 000e ldmia.w r4, {r1, r2, r3} + ee3c: f7fb fda0 bl a980 + ee40: f7fc be05 b.w ba4e + return bitRead(flags, 0); + ee44: f505 5340 add.w r3, r5, #12288 ; 0x3000 + return scroll.direction; + ee48: f894 009e ldrb.w r0, [r4, #158] ; 0x9e + return scroll.wrap; + ee4c: f894 109f ldrb.w r1, [r4, #159] ; 0x9f + ee50: f893 4393 ldrb.w r4, [r3, #915] ; 0x393 + if(!connected()){ + ee54: 07e4 lsls r4, r4, #31 + ee56: f57c adf8 bpl.w ba4a + setSceneNumber(scroller.scroll(1, t_up, t_wrap, preset.scene, t_min, t_max), t_revert); + ee5a: f893 33ae ldrb.w r3, [r3, #942] ; 0x3ae + void setValue(T t_value, T t_min, T t_max){ + ee5e: f7ff b8f1 b.w e044 + midi.sendControlChange(e.ports, data.getChannel(), data.byteB, value); + ee62: 697b ldr r3, [r7, #20] + ee64: 2000 movs r0, #0 + ee66: 6afe ldr r6, [r7, #44] ; 0x2c + ee68: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + return BMC_OFF_LED_EVENT; + ee6c: 4680 mov r8, r0 + midi.sendControlChange(e.ports, data.getChannel(), data.byteB, value); + ee6e: 69bb ldr r3, [r7, #24] + ee70: 9001 str r0, [sp, #4] + ee72: 2001 movs r0, #1 + ee74: 9600 str r6, [sp, #0] + ee76: 9002 str r0, [sp, #8] + ee78: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + ee7c: f014 fb10 bl 234a0 + return BMC_TO_MIDI_CHANNEL(byteA); + ee80: 79a2 ldrb r2, [r4, #6] + streamMidi(BMC_MIDI_CONTROL_CHANGE, data.getChannel(), data.byteB, value); + ee82: 79e3 ldrb r3, [r4, #7] + ee84: 21b0 movs r1, #176 ; 0xb0 + ee86: f002 020f and.w r2, r2, #15 + ee8a: 4628 mov r0, r5 + ee8c: 9600 str r6, [sp, #0] + ee8e: 3201 adds r2, #1 + ee90: f009 f8c4 bl 1801c + ee94: f7fc bddb b.w ba4e + if(d.isOled()){ + ee98: 7ce6 ldrb r6, [r4, #19] + ee9a: 2e16 cmp r6, #22 + ee9c: f000 8710 beq.w fcc0 + return BMC_OFF_LED_EVENT; + eea0: f04f 0800 mov.w r8, #0 + eea4: f7fc bdd3 b.w ba4e + eea8: 20002090 .word 0x20002090 + eeac: 20002098 .word 0x20002098 + eeb0: 20002000 .word 0x20002000 + eeb4: 200022bc .word 0x200022bc + eeb8: 2000200c .word 0x2000200c + eebc: 200022b4 .word 0x200022b4 + eec0: 20001f54 .word 0x20001f54 + eec4: 20001f74 .word 0x20001f74 + eec8: 20001c74 .word 0x20001c74 + if(data.byteA < BMC_MAX_SETLISTS){ + eecc: 69fb ldr r3, [r7, #28] + eece: 2b07 cmp r3, #7 + eed0: f63c adbb bhi.w ba4a + return setList; + eed4: f505 5140 add.w r1, r5, #12288 ; 0x3000 + strcpy(data.label, "SET"); + eed8: 48c8 ldr r0, [pc, #800] ; (f1fc ) data.value = data.byteA; - ebf2: b28b uxth r3, r1 - strcpy(data.label, "SONG"); - ebf4: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - ebf8: 6812 ldr r2, [r2, #0] - setLists.getSongName(data.value, data.str); - ebfa: f505 5048 add.w r0, r5, #12800 ; 0x3200 + eeda: 461e mov r6, r3 + eedc: b29b uxth r3, r3 + strcpy(data.label, "SET"); + eede: 6800 ldr r0, [r0, #0] + data.allowMeter = true; + eee0: f04f 0801 mov.w r8, #1 + eee4: f8d1 1228 ldr.w r1, [r1, #552] ; 0x228 + display.renderBlock(data); + eee8: f643 3958 movw r9, #15192 ; 0x3b58 + strcpy(data.label, "SET"); + eeec: f8c7 00bf str.w r0, [r7, #191] ; 0xbf data.value = data.byteA; - ebfe: 8163 strh r3, [r4, #10] - ec00: 7836 ldrb r6, [r6, #0] - ec02: f3c2 2240 ubfx r2, r2, #9, #1 - setLists.getSongName(data.value, data.str); - ec06: 62f8 str r0, [r7, #44] ; 0x2c + eef0: 8163 strh r3, [r4, #10] + data.valueSelected = setLists.get(); + eef2: 7808 ldrb r0, [r1, #0] + setLists.getSetName(data.value, data.str); + eef4: 4631 mov r1, r6 + eef6: f8da 27fc ldr.w r2, [sl, #2044] ; 0x7fc data.highlight = (data.valueSelected == data.byteA); - ec08: eba3 0a06 sub.w sl, r3, r6 - ec0c: 7622 strb r2, [r4, #24] + eefa: 1a1e subs r6, r3, r0 + eefc: 6812 ldr r2, [r2, #0] + eefe: 4273 negs r3, r6 + data.valueSelected = setLists.get(); + ef00: 81a0 strh r0, [r4, #12] + ef02: f3c2 2240 ubfx r2, r2, #9, #1 data.allowMeter = true; - ec0e: 2201 movs r2, #1 - data.valueSelected = setLists.getSong(); - ec10: 81a6 strh r6, [r4, #12] + ef06: f884 8017 strb.w r8, [r4, #23] data.highlight = (data.valueSelected == data.byteA); - ec12: f1da 0300 rsbs r3, sl, #0 - display.renderBlock(data); - ec16: f643 3638 movw r6, #15160 ; 0x3b38 - data.allowMeter = true; - ec1a: 75e2 strb r2, [r4, #23] - setLists.getSongName(data.value, data.str); - ec1c: f107 026d add.w r2, r7, #109 ; 0x6d + ef0a: 4173 adcs r3, r6 + setLists.getSetName(data.value, data.str); + ef0c: f243 2620 movw r6, #12832 ; 0x3220 + ef10: 7622 strb r2, [r4, #24] + ef12: f107 026d add.w r2, r7, #109 ; 0x6d + ef16: 442e add r6, r5 data.highlight = (data.valueSelected == data.byteA); - ec20: eb43 030a adc.w r3, r3, sl + ef18: 7523 strb r3, [r4, #20] + setLists.getSetName(data.value, data.str); + ef1a: 4630 mov r0, r6 + ef1c: f7f9 f914 bl 8148 + setLists.getSetName(data.valueSelected, data.strSelected); + ef20: f107 0296 add.w r2, r7, #150 ; 0x96 + ef24: 7b21 ldrb r1, [r4, #12] + ef26: 4630 mov r0, r6 + ef28: f7f9 f90e bl 8148 + strcpy(data.format, "St %01u"); + ef2c: 4ab4 ldr r2, [pc, #720] ; (f200 ) + ef2e: f107 03e0 add.w r3, r7, #224 ; 0xe0 + data.digits = 1; + ef32: f884 809c strb.w r8, [r4, #156] ; 0x9c + return BMC_OFF_LED_EVENT; + ef36: f04f 0800 mov.w r8, #0 + strcpy(data.format, "St %01u"); + ef3a: e892 0003 ldmia.w r2, {r0, r1} display.renderBlock(data); - ec24: 442e add r6, r5 - data.highlight = (data.valueSelected == data.byteA); - ec26: 7523 strb r3, [r4, #20] - setLists.getSongName(data.value, data.str); - ec28: f7f9 fb16 bl 8258 - setLists.getSongName(data.valueSelected, data.strSelected); - ec2c: f107 0296 add.w r2, r7, #150 ; 0x96 - ec30: 7b21 ldrb r1, [r4, #12] - ec32: 6af8 ldr r0, [r7, #44] ; 0x2c - ec34: f7f9 fb10 bl 8258 - strcpy(data.format, "Sg %02u"); - ec38: 4a91 ldr r2, [pc, #580] ; (ee80 ) - ec3a: f107 03e0 add.w r3, r7, #224 ; 0xe0 - ec3e: e892 0003 ldmia.w r2, {r0, r1} - data.digits = 2; - ec42: 2202 movs r2, #2 - strcpy(data.format, "Sg %02u"); - ec44: e883 0003 stmia.w r3, {r0, r1} - data.digits = 2; - ec48: f884 209c strb.w r2, [r4, #156] ; 0x9c + ef3e: 2295 movs r2, #149 ; 0x95 + strcpy(data.format, "St %01u"); + ef40: e883 0003 stmia.w r3, {r0, r1} display.renderBlock(data); - ec4c: f107 0160 add.w r1, r7, #96 ; 0x60 - ec50: 2295 movs r2, #149 ; 0x95 - ec52: 4668 mov r0, sp - ec54: f01b fd58 bl 2a708 - ec58: 4630 mov r0, r6 - ec5a: e894 000e ldmia.w r4, {r1, r2, r3} - ec5e: f7fb febd bl a9dc - ec62: f7fc be89 b.w b978 + ef44: f107 0160 add.w r1, r7, #96 ; 0x60 + ef48: 4668 mov r0, sp + ef4a: f01b fc51 bl 2a7f0 + ef4e: eb09 0005 add.w r0, r9, r5 + ef52: e894 000e ldmia.w r4, {r1, r2, r3} + ef56: f7fb fd13 bl a980 + ef5a: f7fc bd78 b.w ba4e if(data.byteA < BMC_MAX_SETLISTS_SONG_PARTS){ - ec66: 69fb ldr r3, [r7, #28] - ec68: 2b07 cmp r3, #7 - ec6a: f63c ae83 bhi.w b974 + ef5e: 69fb ldr r3, [r7, #28] + ef60: 2b07 cmp r3, #7 + ef62: f63c ad72 bhi.w ba4a return songPart; - ec6e: f505 5140 add.w r1, r5, #12288 ; 0x3000 + ef66: f505 5140 add.w r1, r5, #12288 ; 0x3000 strcpy(data.label, "PART"); - ec72: 4b84 ldr r3, [pc, #528] ; (ee84 ) - ec74: f8da 27fc ldr.w r2, [sl, #2044] ; 0x7fc + ef6a: 4ba6 ldr r3, [pc, #664] ; (f204 ) + ef6c: f8da 27fc ldr.w r2, [sl, #2044] ; 0x7fc data.allowMeter = true; - ec78: f04f 0801 mov.w r8, #1 + ef70: f04f 0801 mov.w r8, #1 + ef74: f8d1 6230 ldr.w r6, [r1, #560] ; 0x230 strcpy(data.label, "PART"); - ec7c: 6818 ldr r0, [r3, #0] - ec7e: f8d1 6210 ldr.w r6, [r1, #528] ; 0x210 - ec82: 791b ldrb r3, [r3, #4] + ef78: 6818 ldr r0, [r3, #0] data.value = data.byteA; - ec84: 69f9 ldr r1, [r7, #28] + ef7a: 69f9 ldr r1, [r7, #28] strcpy(data.label, "PART"); - ec86: f887 30c3 strb.w r3, [r7, #195] ; 0xc3 - data.value = data.byteA; - ec8a: b28b uxth r3, r1 - strcpy(data.label, "PART"); - ec8c: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - ec90: 6812 ldr r2, [r2, #0] - setLists.getPartName(data.value, data.str); - ec92: f505 5048 add.w r0, r5, #12800 ; 0x3200 + ef7c: 791b ldrb r3, [r3, #4] + ef7e: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + ef82: f887 30c3 strb.w r3, [r7, #195] ; 0xc3 data.value = data.byteA; - ec96: 8163 strh r3, [r4, #10] + ef86: b28b uxth r3, r1 + ef88: 6812 ldr r2, [r2, #0] + ef8a: 8163 strh r3, [r4, #10] data.valueSelected = setLists.getPart(); - ec98: 7836 ldrb r6, [r6, #0] - ec9a: f3c2 2240 ubfx r2, r2, #9, #1 + ef8c: 7830 ldrb r0, [r6, #0] + setLists.getPartName(data.value, data.str); + ef8e: f243 2620 movw r6, #12832 ; 0x3220 + ef92: f3c2 2240 ubfx r2, r2, #9, #1 data.allowMeter = true; - ec9e: f884 8017 strb.w r8, [r4, #23] + ef96: f884 8017 strb.w r8, [r4, #23] data.highlight = (data.valueSelected == data.byteA); - eca2: eba3 0e06 sub.w lr, r3, r6 - eca6: 7622 strb r2, [r4, #24] + ef9a: eba3 0e00 sub.w lr, r3, r0 setLists.getPartName(data.value, data.str); - eca8: f107 026d add.w r2, r7, #109 ; 0x6d - data.valueSelected = setLists.getPart(); - ecac: 81a6 strh r6, [r4, #12] + ef9e: 442e add r6, r5 + efa0: 7622 strb r2, [r4, #24] + efa2: f107 026d add.w r2, r7, #109 ; 0x6d data.highlight = (data.valueSelected == data.byteA); - ecae: f1de 0300 rsbs r3, lr, #0 + efa6: f1de 0300 rsbs r3, lr, #0 + data.valueSelected = setLists.getPart(); + efaa: 81a0 strh r0, [r4, #12] setLists.getPartName(data.value, data.str); - ecb2: 62f8 str r0, [r7, #44] ; 0x2c - display.renderBlock(data); - ecb4: f643 3638 movw r6, #15160 ; 0x3b38 + efac: 4630 mov r0, r6 data.highlight = (data.valueSelected == data.byteA); - ecb8: eb43 030e adc.w r3, r3, lr - display.renderBlock(data); - ecbc: 442e add r6, r5 - data.highlight = (data.valueSelected == data.byteA); - ecbe: 7523 strb r3, [r4, #20] + efae: eb43 030e adc.w r3, r3, lr + efb2: 7523 strb r3, [r4, #20] setLists.getPartName(data.value, data.str); - ecc0: f7f9 fb28 bl 8314 + efb4: f7f9 f97e bl 82b4 setLists.getPartName(data.valueSelected, data.strSelected); - ecc4: f107 0296 add.w r2, r7, #150 ; 0x96 - ecc8: 7b21 ldrb r1, [r4, #12] - ecca: 6af8 ldr r0, [r7, #44] ; 0x2c - eccc: f7f9 fb22 bl 8314 + efb8: f107 0296 add.w r2, r7, #150 ; 0x96 + efbc: 7b21 ldrb r1, [r4, #12] + efbe: 4630 mov r0, r6 + display.renderBlock(data); + efc0: f643 3658 movw r6, #15192 ; 0x3b58 + setLists.getPartName(data.valueSelected, data.strSelected); + efc4: f7f9 f976 bl 82b4 strcpy(data.format, "Pt %01u"); - ecd0: 496d ldr r1, [pc, #436] ; (ee88 ) - ecd2: f107 03e0 add.w r3, r7, #224 ; 0xe0 + efc8: 498f ldr r1, [pc, #572] ; (f208 ) + efca: f107 03e0 add.w r3, r7, #224 ; 0xe0 display.renderBlock(data); - ecd6: 2295 movs r2, #149 ; 0x95 + efce: 442e add r6, r5 + efd0: 2295 movs r2, #149 ; 0x95 data.digits = 1; - ecd8: f884 809c strb.w r8, [r4, #156] ; 0x9c + efd2: f884 809c strb.w r8, [r4, #156] ; 0x9c return BMC_OFF_LED_EVENT; - ecdc: f04f 0800 mov.w r8, #0 + efd6: f04f 0800 mov.w r8, #0 strcpy(data.format, "Pt %01u"); - ece0: c903 ldmia r1, {r0, r1} - ece2: e883 0003 stmia.w r3, {r0, r1} + efda: c903 ldmia r1, {r0, r1} + efdc: e883 0003 stmia.w r3, {r0, r1} display.renderBlock(data); - ece6: f107 0160 add.w r1, r7, #96 ; 0x60 - ecea: 4668 mov r0, sp - ecec: f01b fd0c bl 2a708 - ecf0: 4630 mov r0, r6 - ecf2: e894 000e ldmia.w r4, {r1, r2, r3} - ecf6: f7fb fe71 bl a9dc - ecfa: f7fc be3d b.w b978 - bitWrite(settings, 2, 0); - ecfe: 78e2 ldrb r2, [r4, #3] + efe0: f107 0160 add.w r1, r7, #96 ; 0x60 + efe4: 4668 mov r0, sp + efe6: f01b fc03 bl 2a7f0 + efea: 4630 mov r0, r6 + efec: e894 000e ldmia.w r4, {r1, r2, r3} + eff0: f7fb fcc6 bl a980 + eff4: f7fc bd2b b.w ba4e + sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); + eff8: f505 5240 add.w r2, r5, #12288 ; 0x3000 + effc: 4983 ldr r1, [pc, #524] ; (f20c ) + effe: f107 006d add.w r0, r7, #109 ; 0x6d display.renderBlock(data); - ed00: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "ACTIVE SENSE"); - ed04: 4b61 ldr r3, [pc, #388] ; (ee8c ) + f002: f643 3658 movw r6, #15192 ; 0x3b58 + sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); + f006: f892 3851 ldrb.w r3, [r2, #2129] ; 0x851 return BMC_OFF_LED_EVENT; - ed06: f04f 0800 mov.w r8, #0 - ed0a: f022 0204 bic.w r2, r2, #4 + f00a: f04f 0800 mov.w r8, #0 + sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); + f00e: f892 2850 ldrb.w r2, [r2, #2128] ; 0x850 display.renderBlock(data); - ed0e: 442e add r6, r5 + f012: 442e add r6, r5 + sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); + f014: f01f f92e bl 2e274 + strcpy(data.label, "STOPWATCH"); + f018: 4a7d ldr r2, [pc, #500] ; (f210 ) + bitWrite(settings, 2, 0); + f01a: 78e3 ldrb r3, [r4, #3] + f01c: ca03 ldmia r2!, {r0, r1} + f01e: f023 0304 bic.w r3, r3, #4 + f022: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + f026: 8810 ldrh r0, [r2, #0] bitWrite(settings, 3, 1); - ed10: f042 0208 orr.w r2, r2, #8 - ed14: 70e2 strb r2, [r4, #3] - return (prevTime>0); - ed16: f505 5240 add.w r2, r5, #12288 ; 0x3000 - ed1a: f8d2 21dc ldr.w r2, [r2, #476] ; 0x1dc - ed1e: 3a00 subs r2, #0 - ed20: bf18 it ne - ed22: 2201 movne r2, #1 - ed24: 7522 strb r2, [r4, #20] - strcpy(data.str, "ACTIVE SENSE"); - ed26: cb07 ldmia r3!, {r0, r1, r2} - ed28: 781b ldrb r3, [r3, #0] - ed2a: f8c7 006d str.w r0, [r7, #109] ; 0x6d - display.renderBlock(data); - ed2e: 4668 mov r0, sp - strcpy(data.str, "ACTIVE SENSE"); - ed30: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - display.renderBlock(data); - ed34: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "ACTIVE SENSE"); - ed38: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + f028: f043 0308 orr.w r3, r3, #8 + f02c: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 display.renderBlock(data); - ed3c: 2295 movs r2, #149 ; 0x95 - strcpy(data.str, "ACTIVE SENSE"); - ed3e: f887 3079 strb.w r3, [r7, #121] ; 0x79 + f030: 2295 movs r2, #149 ; 0x95 + f032: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.label, "STOPWATCH"); + f036: f8a7 00c7 strh.w r0, [r7, #199] ; 0xc7 display.renderBlock(data); - ed42: f01b fce1 bl 2a708 - ed46: 4630 mov r0, r6 - ed48: e894 000e ldmia.w r4, {r1, r2, r3} - ed4c: f7fb fe46 bl a9dc - ed50: f7fc be12 b.w b978 - ed54: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc - return midi.getRealTimeBlockOutput() ? 100 : 0; - ed58: 075a lsls r2, r3, #29 - ed5a: f57c ae0b bpl.w b974 - return midi.getRealTimeBlockInput() ? 100 : 0; - ed5e: f04f 0864 mov.w r8, #100 ; 0x64 - ed62: f7fc be09 b.w b978 - if(d.isOled()){ - ed66: 7ce6 ldrb r6, [r4, #19] - ed68: 2e16 cmp r6, #22 - ed6a: f000 8667 beq.w fa3c - return BMC_OFF_LED_EVENT; - ed6e: f04f 0800 mov.w r8, #0 - ed72: f7fc be01 b.w b978 - return scroll.amount; - ed76: f894 10a0 ldrb.w r1, [r4, #160] ; 0xa0 - sync.daw.sendEncoderScrolling(data.byteA, data.byteB, data.scrollDirection(), data.scrollAmount()); - ed7a: f243 2030 movw r0, #12848 ; 0x3230 - ed7e: f894 309e ldrb.w r3, [r4, #158] ; 0x9e - return BMC_OFF_LED_EVENT; - ed82: f04f 0800 mov.w r8, #0 - sync.daw.sendEncoderScrolling(data.byteA, data.byteB, data.scrollDirection(), data.scrollAmount()); - ed86: 1e0c subs r4, r1, #0 - ed88: 69ba ldr r2, [r7, #24] - ed8a: 69f9 ldr r1, [r7, #28] - ed8c: 4428 add r0, r5 - ed8e: bf18 it ne - ed90: 2401 movne r4, #1 - ed92: 9400 str r4, [sp, #0] - ed94: f7fa f852 bl 8e3c - ed98: f7fc bdee b.w b978 - ed9c: f505 5340 add.w r3, r5, #12288 ; 0x3000 - return scroll.direction; - eda0: f894 009e ldrb.w r0, [r4, #158] ; 0x9e - return scroll.wrap; - eda4: f894 109f ldrb.w r1, [r4, #159] ; 0x9f - eda8: f893 4373 ldrb.w r4, [r3, #883] ; 0x373 - if(!connected()){ - edac: 07e4 lsls r4, r4, #31 - edae: f57c ade1 bpl.w b974 - setSceneNumber(scroller.scroll(1, t_up, t_wrap, preset.scene, t_min, t_max), t_revert); - edb2: f893 338e ldrb.w r3, [r3, #910] ; 0x38e - void setValue(T t_value, T t_min, T t_max){ - edb6: f7ff b85d b.w de74 + f03a: 4668 mov r0, sp + f03c: 70e3 strb r3, [r4, #3] + f03e: f01b fbd7 bl 2a7f0 + f042: 4630 mov r0, r6 + f044: e894 000e ldmia.w r4, {r1, r2, r3} + f048: f7fb fc9a bl a980 + f04c: f7fc bcff b.w ba4e strcpy(data.label, "HELIX"); - edba: 4b35 ldr r3, [pc, #212] ; (ee90 ) - edbc: 69f9 ldr r1, [r7, #28] - edbe: 6818 ldr r0, [r3, #0] - edc0: 889b ldrh r3, [r3, #4] - edc2: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - edc6: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 + f050: 4b70 ldr r3, [pc, #448] ; (f214 ) + f052: 69f9 ldr r1, [r7, #28] + f054: 6818 ldr r0, [r3, #0] + f056: 889b ldrh r3, [r3, #4] + f058: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + f05c: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 switch(data.byteA){ - edca: 2903 cmp r1, #3 - edcc: d814 bhi.n edf8 - edce: e8df f001 tbb [pc, r1] - edd2: 3b45 .short 0x3b45 - edd4: 022b .short 0x022b + f060: 2903 cmp r1, #3 + f062: d814 bhi.n f08e + f064: e8df f001 tbb [pc, r1] + f068: 02402b35 .word 0x02402b35 return snapshot==t_value; - edd6: f505 5140 add.w r1, r5, #12288 ; 0x3000 + f06c: f505 5140 add.w r1, r5, #12288 ; 0x3000 sprintf(data.str, "SN %u %u", data.byteB+data.offset, data.byteC+data.offset); - edda: 69be ldr r6, [r7, #24] - eddc: 693b ldr r3, [r7, #16] - edde: f891 078b ldrb.w r0, [r1, #1931] ; 0x78b - ede2: 4413 add r3, r2 - ede4: 4432 add r2, r6 - ede6: 1b86 subs r6, r0, r6 - ede8: 492a ldr r1, [pc, #168] ; (ee94 ) - edea: 4270 negs r0, r6 - edec: 4170 adcs r0, r6 - edee: 7520 strb r0, [r4, #20] - edf0: f107 006d add.w r0, r7, #109 ; 0x6d - edf4: f01f f9ca bl 2e18c + f070: 69be ldr r6, [r7, #24] + f072: 693b ldr r3, [r7, #16] + f074: f891 07ab ldrb.w r0, [r1, #1963] ; 0x7ab + f078: 4413 add r3, r2 + f07a: 4432 add r2, r6 + f07c: 1b81 subs r1, r0, r6 + f07e: 4248 negs r0, r1 + f080: 4148 adcs r0, r1 + f082: 4965 ldr r1, [pc, #404] ; (f218 ) + f084: 7520 strb r0, [r4, #20] + f086: f107 006d add.w r0, r7, #109 ; 0x6d + f08a: f01f f8f3 bl 2e274 bitWrite(settings, 2, 0); - edf8: 78e3 ldrb r3, [r4, #3] + f08e: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - edfa: f643 3638 movw r6, #15160 ; 0x3b38 - edfe: f107 0160 add.w r1, r7, #96 ; 0x60 - ee02: 2295 movs r2, #149 ; 0x95 - ee04: f023 0304 bic.w r3, r3, #4 - ee08: 442e add r6, r5 - ee0a: 4668 mov r0, sp + f090: f643 3658 movw r6, #15192 ; 0x3b58 + f094: f107 0160 add.w r1, r7, #96 ; 0x60 + f098: 2295 movs r2, #149 ; 0x95 + f09a: f023 0304 bic.w r3, r3, #4 + f09e: 442e add r6, r5 + f0a0: 4668 mov r0, sp return BMC_OFF_LED_EVENT; - ee0c: f04f 0800 mov.w r8, #0 + f0a2: f04f 0800 mov.w r8, #0 bitWrite(settings, 3, 1); - ee10: f043 0308 orr.w r3, r3, #8 - ee14: 70e3 strb r3, [r4, #3] + f0a6: f043 0308 orr.w r3, r3, #8 + f0aa: 70e3 strb r3, [r4, #3] display.renderBlock(data); - ee16: f01b fc77 bl 2a708 - ee1a: 4630 mov r0, r6 - ee1c: e894 000e ldmia.w r4, {r1, r2, r3} - ee20: f7fb fddc bl a9dc - ee24: f7fc bda8 b.w b978 - return bitRead(settings, 2); - ee28: 78e3 ldrb r3, [r4, #3] - if(data.useSelected()){ - ee2a: f013 0f04 tst.w r3, #4 - return snapshot; - ee2e: f505 5340 add.w r3, r5, #12288 ; 0x3000 - ee32: f002 816a beq.w 1110a - sprintf(data.str, "SN %u", sync.helix.getSnapshot()+data.offset); - ee36: f893 378b ldrb.w r3, [r3, #1931] ; 0x78b - ee3a: f107 006d add.w r0, r7, #109 ; 0x6d - ee3e: 4916 ldr r1, [pc, #88] ; (ee98 ) - ee40: 441a add r2, r3 - ee42: f01f f9a3 bl 2e18c - ee46: e7d7 b.n edf8 + f0ac: f01b fba0 bl 2a7f0 + f0b0: 4630 mov r0, r6 + f0b2: e894 000e ldmia.w r4, {r1, r2, r3} + f0b6: f7fb fc63 bl a980 + f0ba: f7fc bcc8 b.w ba4e strcpy(data.str, "HX TUNNER"); - ee48: 4b14 ldr r3, [pc, #80] ; (ee9c ) - ee4a: cb03 ldmia r3!, {r0, r1} - ee4c: 881b ldrh r3, [r3, #0] - ee4e: f8c7 006d str.w r0, [r7, #109] ; 0x6d - ee52: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - ee56: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 + f0be: 4b57 ldr r3, [pc, #348] ; (f21c ) + f0c0: cb03 ldmia r3!, {r0, r1} + f0c2: 881b ldrh r3, [r3, #0] + f0c4: f8c7 006d str.w r0, [r7, #109] ; 0x6d + f0c8: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + f0cc: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 break; - ee5a: e7cd b.n edf8 + f0d0: e7dd b.n f08e strcpy(data.str, "HX TAP"); - ee5c: 4b10 ldr r3, [pc, #64] ; (eea0 ) - ee5e: 6818 ldr r0, [r3, #0] - ee60: 889a ldrh r2, [r3, #4] - ee62: 799b ldrb r3, [r3, #6] - ee64: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 - ee68: f8c7 006d str.w r0, [r7, #109] ; 0x6d - ee6c: f887 3073 strb.w r3, [r7, #115] ; 0x73 + f0d2: 4b53 ldr r3, [pc, #332] ; (f220 ) + f0d4: 6818 ldr r0, [r3, #0] + f0d6: 889a ldrh r2, [r3, #4] + f0d8: 799b ldrb r3, [r3, #6] + f0da: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 + f0de: f8c7 006d str.w r0, [r7, #109] ; 0x6d + f0e2: f887 3073 strb.w r3, [r7, #115] ; 0x73 break; - ee70: e7c2 b.n edf8 - ee72: bf00 nop - ee74: 20002000 .word 0x20002000 - ee78: 200022bc .word 0x200022bc - ee7c: 20002090 .word 0x20002090 - ee80: 20002098 .word 0x20002098 - ee84: 200020a0 .word 0x200020a0 - ee88: 200020a8 .word 0x200020a8 - ee8c: 20001f54 .word 0x20001f54 - ee90: 200022d4 .word 0x200022d4 - ee94: 200022f8 .word 0x200022f8 - ee98: 200022f0 .word 0x200022f0 - ee9c: 200022e4 .word 0x200022e4 - eea0: 200022dc .word 0x200022dc - sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); - eea4: f505 5240 add.w r2, r5, #12288 ; 0x3000 - eea8: 49d4 ldr r1, [pc, #848] ; (f1fc ) - eeaa: f107 006d add.w r0, r7, #109 ; 0x6d - display.renderBlock(data); - eeae: f643 3638 movw r6, #15160 ; 0x3b38 - sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); - eeb2: f892 3831 ldrb.w r3, [r2, #2097] ; 0x831 - return BMC_OFF_LED_EVENT; - eeb6: f04f 0800 mov.w r8, #0 - sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); - eeba: f892 2830 ldrb.w r2, [r2, #2096] ; 0x830 - display.renderBlock(data); - eebe: 442e add r6, r5 - sprintf(data.str, "%02u:%02u", stopwatch.hours, stopwatch.minutes); - eec0: f01f f964 bl 2e18c - strcpy(data.label, "STOPWATCH"); - eec4: 4ace ldr r2, [pc, #824] ; (f200 ) - bitWrite(settings, 2, 0); - eec6: 78e3 ldrb r3, [r4, #3] - eec8: ca03 ldmia r2!, {r0, r1} - eeca: f023 0304 bic.w r3, r3, #4 - eece: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - eed2: 8810 ldrh r0, [r2, #0] - bitWrite(settings, 3, 1); - eed4: f043 0308 orr.w r3, r3, #8 - eed8: f8c7 10c3 str.w r1, [r7, #195] ; 0xc3 - display.renderBlock(data); - eedc: 2295 movs r2, #149 ; 0x95 - eede: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.label, "STOPWATCH"); - eee2: f8a7 00c7 strh.w r0, [r7, #199] ; 0xc7 - display.renderBlock(data); - eee6: 4668 mov r0, sp - eee8: 70e3 strb r3, [r4, #3] - eeea: f01b fc0d bl 2a708 - eeee: 4630 mov r0, r6 - eef0: e894 000e ldmia.w r4, {r1, r2, r3} - eef4: f7fb fd72 bl a9dc - eef8: f7fc bd3e b.w b978 - return globals.hasMidiActivity(data.byteA) ? BMC_PULSE_LED_EVENT : BMC_IGNORE_LED_EVENT; - eefc: 46b0 mov r8, r6 - eefe: f7fc bd3b b.w b978 + f0e6: e7d2 b.n f08e + return bitRead(settings, 2); + f0e8: 78e3 ldrb r3, [r4, #3] + if(data.useSelected()){ + f0ea: f013 0f04 tst.w r3, #4 + return snapshot; + f0ee: f505 5340 add.w r3, r5, #12288 ; 0x3000 + f0f2: f001 8578 beq.w 10be6 + sprintf(data.str, "SN %u", sync.helix.getSnapshot()+data.offset); + f0f6: f893 37ab ldrb.w r3, [r3, #1963] ; 0x7ab + f0fa: f107 006d add.w r0, r7, #109 ; 0x6d + f0fe: 4949 ldr r1, [pc, #292] ; (f224 ) + f100: 441a add r2, r3 + f102: f01f f8b7 bl 2e274 + f106: e7c2 b.n f08e } else if(data.byteB == 1){ - ef02: 69bb ldr r3, [r7, #24] - ef04: 2b01 cmp r3, #1 - ef06: f000 8522 beq.w f94e + f108: 69bb ldr r3, [r7, #24] + f10a: 2b01 cmp r3, #1 + f10c: f000 8534 beq.w fb78 } else if(data.byteB == 2){ - ef0a: 69bb ldr r3, [r7, #24] - ef0c: 2b02 cmp r3, #2 - ef0e: f47c ad31 bne.w b974 - ef12: f505 5540 add.w r5, r5, #12288 ; 0x3000 - ef16: f895 8ae0 ldrb.w r8, [r5, #2784] ; 0xae0 - ef1a: f008 0801 and.w r8, r8, #1 + f110: 69bb ldr r3, [r7, #24] + f112: 2b02 cmp r3, #2 + f114: f47c ac99 bne.w ba4a + f118: f505 5540 add.w r5, r5, #12288 ; 0x3000 + f11c: f895 8b00 ldrb.w r8, [r5, #2816] ; 0xb00 + f120: f008 0801 and.w r8, r8, #1 return !auxJacks[data.byteA].isPotMode(); - ef1e: f088 0801 eor.w r8, r8, #1 - ef22: f7fc bd29 b.w b978 - if(data.byteA < BMC_MAX_SETLISTS){ - ef26: 69fb ldr r3, [r7, #28] - ef28: 2b07 cmp r3, #7 - ef2a: f63c ad23 bhi.w b974 - return setList; - ef2e: f505 5140 add.w r1, r5, #12288 ; 0x3000 - strcpy(data.label, "SET"); - ef32: 48b4 ldr r0, [pc, #720] ; (f204 ) - data.value = data.byteA; - ef34: 461e mov r6, r3 - ef36: b29b uxth r3, r3 - strcpy(data.label, "SET"); - ef38: 6800 ldr r0, [r0, #0] - data.allowMeter = true; - ef3a: f04f 0801 mov.w r8, #1 - ef3e: f8d1 1208 ldr.w r1, [r1, #520] ; 0x208 - strcpy(data.label, "SET"); - ef42: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - data.value = data.byteA; - ef46: 8163 strh r3, [r4, #10] - data.valueSelected = setLists.get(); - ef48: 7808 ldrb r0, [r1, #0] - setLists.getSetName(data.value, data.str); - ef4a: 4631 mov r1, r6 - ef4c: f8da 27fc ldr.w r2, [sl, #2044] ; 0x7fc - data.highlight = (data.valueSelected == data.byteA); - ef50: 1a1e subs r6, r3, r0 - ef52: 6812 ldr r2, [r2, #0] - ef54: 4273 negs r3, r6 - data.valueSelected = setLists.get(); - ef56: 81a0 strh r0, [r4, #12] - ef58: f3c2 2240 ubfx r2, r2, #9, #1 - setLists.getSetName(data.value, data.str); - ef5c: f505 5048 add.w r0, r5, #12800 ; 0x3200 - data.highlight = (data.valueSelected == data.byteA); - ef60: 4173 adcs r3, r6 - data.allowMeter = true; - ef62: f884 8017 strb.w r8, [r4, #23] - ef66: 7622 strb r2, [r4, #24] - setLists.getSetName(data.value, data.str); - ef68: f107 026d add.w r2, r7, #109 ; 0x6d - data.highlight = (data.valueSelected == data.byteA); - ef6c: 7523 strb r3, [r4, #20] - display.renderBlock(data); - ef6e: f643 3638 movw r6, #15160 ; 0x3b38 - setLists.getSetName(data.value, data.str); - ef72: 62f8 str r0, [r7, #44] ; 0x2c - ef74: f7f9 f918 bl 81a8 - setLists.getSetName(data.valueSelected, data.strSelected); - ef78: f107 0296 add.w r2, r7, #150 ; 0x96 - ef7c: 7b21 ldrb r1, [r4, #12] - ef7e: 6af8 ldr r0, [r7, #44] ; 0x2c - display.renderBlock(data); - ef80: 442e add r6, r5 - setLists.getSetName(data.valueSelected, data.strSelected); - ef82: f7f9 f911 bl 81a8 - strcpy(data.format, "St %01u"); - ef86: 49a0 ldr r1, [pc, #640] ; (f208 ) - ef88: f107 03e0 add.w r3, r7, #224 ; 0xe0 - display.renderBlock(data); - ef8c: 2295 movs r2, #149 ; 0x95 - data.digits = 1; - ef8e: f884 809c strb.w r8, [r4, #156] ; 0x9c - return BMC_OFF_LED_EVENT; - ef92: f04f 0800 mov.w r8, #0 - strcpy(data.format, "St %01u"); - ef96: c903 ldmia r1, {r0, r1} - ef98: e883 0003 stmia.w r3, {r0, r1} - display.renderBlock(data); - ef9c: f107 0160 add.w r1, r7, #96 ; 0x60 - efa0: 4668 mov r0, sp - efa2: f01b fbb1 bl 2a708 - efa6: 4630 mov r0, r6 - efa8: e894 000e ldmia.w r4, {r1, r2, r3} - efac: f7fb fd16 bl a9dc - efb0: f7fc bce2 b.w b978 - strcpy(data.label, "SCENE"); - efb4: 4b95 ldr r3, [pc, #596] ; (f20c ) - data.value = (data.byteA & 0x07); - efb6: fa1f f288 uxth.w r2, r8 - strcpy(data.label, "SCENE"); - efba: 6818 ldr r0, [r3, #0] - efbc: 889b ldrh r3, [r3, #4] - data.value = (data.byteA & 0x07); - efbe: 8162 strh r2, [r4, #10] - strcpy(data.label, "SCENE"); - efc0: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 - efc4: f899 3373 ldrb.w r3, [r9, #883] ; 0x373 - efc8: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - if(!connected()){ - efcc: 07de lsls r6, r3, #31 - efce: f140 8662 bpl.w fc96 - efd2: f8da 37fc ldr.w r3, [sl, #2044] ; 0x7fc - strcpy(str, sceneName[t_scene]); - efd6: 2611 movs r6, #17 - efd8: f243 3a8c movw sl, #13196 ; 0x338c - efdc: f04f 0b25 mov.w fp, #37 ; 0x25 - efe0: 681b ldr r3, [r3, #0] - efe2: fb16 b808 smlabb r8, r6, r8, fp - efe6: 44aa add sl, r5 - efe8: f3c3 2340 ubfx r3, r3, #9, #1 - efec: eb0a 0108 add.w r1, sl, r8 - eff0: 7623 strb r3, [r4, #24] - data.valueSelected = sync.fas.getSceneNumber(); - eff2: f899 338e ldrb.w r3, [r9, #910] ; 0x38e - data.highlight = data.valueSelected == data.value; - eff6: 1ad0 subs r0, r2, r3 - return preset.scene; - eff8: 4698 mov r8, r3 - data.valueSelected = sync.fas.getSceneNumber(); - effa: 81a3 strh r3, [r4, #12] - data.highlight = data.valueSelected == data.value; - effc: 4242 negs r2, r0 - effe: 4142 adcs r2, r0 - f000: f107 006d add.w r0, r7, #109 ; 0x6d - f004: 7522 strb r2, [r4, #20] - f006: f01f fcb9 bl 2e97c - if(scene < 8){ - f00a: f1b8 0f07 cmp.w r8, #7 - f00e: f240 8639 bls.w fc84 - strcpy(data.format, "S %01u"); - f012: 4a7f ldr r2, [pc, #508] ; (f210 ) - data.digits = 1; - f014: 2101 movs r1, #1 - display.renderBlock(data); - f016: f643 3638 movw r6, #15160 ; 0x3b38 + f124: f088 0801 eor.w r8, r8, #1 + f128: f7fc bc91 b.w ba4e + midi.sendProgramChange(e.ports, data.getChannel(), value); + f12c: 697b ldr r3, [r7, #20] + f12e: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + f132: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + f136: 2300 movs r3, #0 + f138: 9300 str r3, [sp, #0] return BMC_OFF_LED_EVENT; - f01a: f04f 0800 mov.w r8, #0 - data.digits = 1; - f01e: f884 109c strb.w r1, [r4, #156] ; 0x9c - display.renderBlock(data); - f022: 442e add r6, r5 - strcpy(data.format, "S %01u"); - f024: e892 0003 ldmia.w r2, {r0, r1} - display.renderBlock(data); - f028: 2295 movs r2, #149 ; 0x95 - strcpy(data.format, "S %01u"); - f02a: f8c7 00e0 str.w r0, [r7, #224] ; 0xe0 - f02e: 0c08 lsrs r0, r1, #16 - f030: f8a7 10e4 strh.w r1, [r7, #228] ; 0xe4 - display.renderBlock(data); - f034: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.format, "S %01u"); - f038: f887 00e6 strb.w r0, [r7, #230] ; 0xe6 - display.renderBlock(data); - f03c: 4668 mov r0, sp - f03e: f01b fb63 bl 2a708 - f042: 4630 mov r0, r6 - f044: e894 000e ldmia.w r4, {r1, r2, r3} - f048: f7fb fcc8 bl a9dc - f04c: f7fc bc94 b.w b978 + f13a: 4698 mov r8, r3 + midi.sendProgramChange(e.ports, data.getChannel(), value); + f13c: 6afe ldr r6, [r7, #44] ; 0x2c + f13e: 4633 mov r3, r6 + f140: f014 f838 bl 231b4 + return BMC_TO_MIDI_CHANNEL(byteA); + f144: 79a2 ldrb r2, [r4, #6] + streamMidi(BMC_MIDI_PROGRAM_CHANGE, data.getChannel(), value); + f146: 24ff movs r4, #255 ; 0xff + f148: 4633 mov r3, r6 + f14a: f002 020f and.w r2, r2, #15 + f14e: 21c0 movs r1, #192 ; 0xc0 + f150: 4628 mov r0, r5 + f152: 9400 str r4, [sp, #0] + f154: 3201 adds r2, #1 + f156: f008 ff61 bl 1801c + f15a: f7fc bc78 b.w ba4e } else if(data.byteB == 1){ - f050: 69bb ldr r3, [r7, #24] - f052: 2b01 cmp r3, #1 - f054: f000 85db beq.w fc0e + f15e: 69bb ldr r3, [r7, #24] + f160: 2b01 cmp r3, #1 + f162: f000 8575 beq.w fc50 } else if(data.byteB == 2){ - f058: 69bb ldr r3, [r7, #24] - f05a: 2b02 cmp r3, #2 - f05c: f47c ac8a bne.w b974 - f060: f505 5540 add.w r5, r5, #12288 ; 0x3000 - f064: f895 3ae0 ldrb.w r3, [r5, #2784] ; 0xae0 + f166: 69bb ldr r3, [r7, #24] + f168: 2b02 cmp r3, #2 + f16a: f47c ac6e bne.w ba4a + f16e: f505 5540 add.w r5, r5, #12288 ; 0x3000 + f172: f895 3b00 ldrb.w r3, [r5, #2816] ; 0xb00 return !auxJacks[data.byteA].isPotMode() ? 100 : 0; - f068: 07dc lsls r4, r3, #31 - f06a: f53c ac83 bmi.w b974 + f176: 07dc lsls r4, r3, #31 + f178: f53c ac67 bmi.w ba4a return midi.getRealTimeBlockInput() ? 100 : 0; - f06e: f04f 0864 mov.w r8, #100 ; 0x64 - f072: f7fc bc81 b.w b978 - outVal = setLists.getSong() != data.byteA ? data.byteA : (data.byteB-1); - f076: 69bb ldr r3, [r7, #24] - f078: 1e59 subs r1, r3, #1 - f07a: b2c9 uxtb r1, r1 - f07c: f7fd bcb7 b.w c9ee - if(direction==BMC_SCROLL_UP){ - f080: f894 c09e ldrb.w ip, [r4, #158] ; 0x9e - BMCScroller scroller(sbData.min, sbData.max); - f084: f897 11b2 ldrb.w r1, [r7, #434] ; 0x1b2 - f088: f897 61b3 ldrb.w r6, [r7, #435] ; 0x1b3 - tmp = scroller.scroll(sbData.step, data.scrollDirection(), data.scrollWrap(), tmp, sbData.min, sbData.max); - f08c: f897 31b4 ldrb.w r3, [r7, #436] ; 0x1b4 - return scroll.wrap; - f090: f894 209f ldrb.w r2, [r4, #159] ; 0x9f - f094: f1bc 0f00 cmp.w ip, #0 - f098: f000 85a3 beq.w fbe2 - long newValue = (value+amount); - f09c: 4418 add r0, r3 - value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - f09e: 2a00 cmp r2, #0 - f0a0: f000 8598 beq.w fbd4 - return (newValue > max || newValue < min) ? min : newValue; - f0a4: 42b0 cmp r0, r6 - f0a6: dc02 bgt.n f0ae - } else if(newValue - return newValue; - f0ac: b2c1 uxtb r1, r0 - value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - f0ae: 460e mov r6, r1 - f0b0: f7ff b933 b.w e31a - outVal = sync.fas.getSceneNumber() != p1 ? p1: (p2 - 1); - f0b4: b2da uxtb r2, r3 - f0b6: f7fc bfbc b.w c032 - outVal = sync.fas.getPresetNumber() != p1 ? p1: (p2 - 1); - f0ba: b29b uxth r3, r3 - f0bc: f7fc bead b.w be1a - return 0; - f0c0: 4610 mov r0, r2 - f0c2: f7fc bea6 b.w be12 + f17c: f04f 0864 mov.w r8, #100 ; 0x64 + f180: f7fc bc65 b.w ba4e + set(t_bank, preset, forced); + f184: f505 5240 add.w r2, r5, #12288 ; 0x3000 + f188: f243 200c movw r0, #12812 ; 0x320c + return BMC_OFF_LED_EVENT; + f18c: 4698 mov r8, r3 + f18e: f8d2 221c ldr.w r2, [r2, #540] ; 0x21c + f192: 4428 add r0, r5 + f194: 7812 ldrb r2, [r2, #0] + f196: f7f1 fa13 bl 5c0 + } + f19a: f7fc bc58 b.w ba4e outVal = presets.getBank() != data.byteA ? data.byteA : (data.byteB-1); - f0c6: 69bb ldr r3, [r7, #24] - f0c8: 1e59 subs r1, r3, #1 - f0ca: b2c9 uxtb r1, r1 - f0cc: f7fd b95c b.w c388 + f19e: 69bb ldr r3, [r7, #24] + f1a0: 1e59 subs r1, r3, #1 + f1a2: b2c9 uxtb r1, r1 + f1a4: f7fc bf12 b.w bfcc + outVal = setLists.get() != data.byteA ? data.byteA : (data.byteB-1); + f1a8: 69bb ldr r3, [r7, #24] + f1aa: 1e59 subs r1, r3, #1 + f1ac: b2c9 uxtb r1, r1 + f1ae: f7fd bc80 b.w cab2 strcpy(data.label, "PC"); - f0d0: 4b50 ldr r3, [pc, #320] ; (f214 ) + f1b2: 4b1d ldr r3, [pc, #116] ; (f228 ) return BMC_OFF_LED_EVENT; - f0d2: f04f 0800 mov.w r8, #0 + f1b4: f04f 0800 mov.w r8, #0 return bitRead(settings, 2); - f0d6: 78e1 ldrb r1, [r4, #3] + f1b8: 78e1 ldrb r1, [r4, #3] strcpy(data.label, "PC"); - f0d8: 881e ldrh r6, [r3, #0] - f0da: 789b ldrb r3, [r3, #2] - f0dc: f8a7 60bf strh.w r6, [r7, #191] ; 0xbf + f1ba: 881e ldrh r6, [r3, #0] + f1bc: 789b ldrb r3, [r3, #2] + f1be: f8a7 60bf strh.w r6, [r7, #191] ; 0xbf if(data.useSelected()){ - f0e0: 074e lsls r6, r1, #29 + f1c2: 074e lsls r6, r1, #29 display.renderMidi(data); - f0e2: f643 3638 movw r6, #15160 ; 0x3b38 + f1c4: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.label, "PC"); - f0e6: f887 30c1 strb.w r3, [r7, #193] ; 0xc1 + f1c8: f887 30c1 strb.w r3, [r7, #193] ; 0xc1 data.byteB = currentPC; - f0ea: bf48 it mi - f0ec: 71e0 strbmi r0, [r4, #7] + f1cc: bf48 it mi + f1ce: 71e0 strbmi r0, [r4, #7] sprintf(data.str, "CH%u PC%u", data.getChannel(), data.byteB); - f0ee: f107 006d add.w r0, r7, #109 ; 0x6d - f0f2: 79e3 ldrb r3, [r4, #7] + f1d0: f107 006d add.w r0, r7, #109 ; 0x6d + f1d4: 79e3 ldrb r3, [r4, #7] display.renderMidi(data); - f0f4: 442e add r6, r5 + f1d6: 442e add r6, r5 sprintf(data.str, "CH%u PC%u", data.getChannel(), data.byteB); - f0f6: 4948 ldr r1, [pc, #288] ; (f218 ) - f0f8: f01f f848 bl 2e18c + f1d8: 4914 ldr r1, [pc, #80] ; (f22c ) + f1da: f01f f84b bl 2e274 data.type = BMC_MIDI_PROGRAM_CHANGE; - f0fc: 23c0 movs r3, #192 ; 0xc0 + f1de: 23c0 movs r3, #192 ; 0xc0 display.renderMidi(data); - f0fe: f107 0160 add.w r1, r7, #96 ; 0x60 - f102: 2295 movs r2, #149 ; 0x95 - f104: 4668 mov r0, sp + f1e0: f107 0160 add.w r1, r7, #96 ; 0x60 + f1e4: 2295 movs r2, #149 ; 0x95 + f1e6: 4668 mov r0, sp data.type = BMC_MIDI_PROGRAM_CHANGE; - f106: 7163 strb r3, [r4, #5] + f1e8: 7163 strb r3, [r4, #5] display.renderMidi(data); - f108: f01b fafe bl 2a708 - f10c: 4630 mov r0, r6 - f10e: e894 000e ldmia.w r4, {r1, r2, r3} - f112: f7fb f92d bl a370 - f116: f7fc bc2f b.w b978 - f11a: f505 5240 add.w r2, r5, #12288 ; 0x3000 - f11e: f892 379d ldrb.w r3, [r2, #1949] ; 0x79d + f1ea: f01b fb01 bl 2a7f0 + f1ee: 4630 mov r0, r6 + f1f0: e894 000e ldmia.w r4, {r1, r2, r3} + f1f4: f7fb f88e bl a314 + f1f8: f7fc bc29 b.w ba4e + f1fc: 20002084 .word 0x20002084 + f200: 20002088 .word 0x20002088 + f204: 200020a0 .word 0x200020a0 + f208: 200020a8 .word 0x200020a8 + f20c: 20001fb0 .word 0x20001fb0 + f210: 20001fbc .word 0x20001fbc + f214: 200022d4 .word 0x200022d4 + f218: 200022f8 .word 0x200022f8 + f21c: 200022e4 .word 0x200022e4 + f220: 200022dc .word 0x200022dc + f224: 200022f0 .word 0x200022f0 + f228: 20001550 .word 0x20001550 + f22c: 20001eb4 .word 0x20001eb4 + sprintf(data.str, "LFO %u", data.byteA+data.offset); + f230: 49d1 ldr r1, [pc, #836] ; (f578 ) + f232: f107 006d add.w r0, r7, #109 ; 0x6d + f236: f01f f81d bl 2e274 + data.highlight = lfo[data.byteA].isEnabled(); + f23a: 79a2 ldrb r2, [r4, #6] + return enabled; + f23c: 213c movs r1, #60 ; 0x3c + bitWrite(settings, 2, 0); + f23e: 78e3 ldrb r3, [r4, #3] + display.renderBlock(data); + f240: f643 3658 movw r6, #15192 ; 0x3b58 + f244: fb01 5202 mla r2, r1, r2, r5 + f248: f641 116c movw r1, #6508 ; 0x196c + f24c: f023 0304 bic.w r3, r3, #4 + f250: 442e add r6, r5 + data.highlight = lfo[data.byteA].isEnabled(); + f252: 5c50 ldrb r0, [r2, r1] + display.renderBlock(data); + f254: f107 0160 add.w r1, r7, #96 ; 0x60 + bitWrite(settings, 3, 1); + f258: f043 0308 orr.w r3, r3, #8 + f25c: 2295 movs r2, #149 ; 0x95 + data.highlight = lfo[data.byteA].isEnabled(); + f25e: 7520 strb r0, [r4, #20] + display.renderBlock(data); + f260: 4668 mov r0, sp + f262: 70e3 strb r3, [r4, #3] + f264: f01b fac4 bl 2a7f0 + f268: 4630 mov r0, r6 + f26a: e894 000e ldmia.w r4, {r1, r2, r3} + f26e: f7fb fb87 bl a980 + f272: f7fc bbec b.w ba4e + f276: f505 5240 add.w r2, r5, #12288 ; 0x3000 + f27a: f892 37bd ldrb.w r3, [r2, #1981] ; 0x7bd return isSyncEnabled() ? songPart : 0; - f122: f013 0301 ands.w r3, r3, #1 - f126: f000 8503 beq.w fb30 + f27e: f013 0301 ands.w r3, r3, #1 + f282: f000 8440 beq.w fb06 if(data.scrollDirection()){ - f12a: f894 109e ldrb.w r1, [r4, #158] ; 0x9e - f12e: f892 37aa ldrb.w r3, [r2, #1962] ; 0x7aa - f132: 2900 cmp r1, #0 - f134: f000 84f7 beq.w fb26 + f286: f894 109e ldrb.w r1, [r4, #158] ; 0x9e + f28a: f892 37ca ldrb.w r3, [r2, #1994] ; 0x7ca + f28e: 2900 cmp r1, #0 + f290: f000 8434 beq.w fafc if(s >= 124){ - f138: 2b7b cmp r3, #123 ; 0x7b + f294: 2b7b cmp r3, #123 ; 0x7b s = 0; - f13a: bf88 it hi - f13c: 2300 movhi r3, #0 + f296: bf88 it hi + f298: 2300 movhi r3, #0 if(s >= 124){ - f13e: f240 83ca bls.w f8d6 + f29a: f240 842b bls.w faf4 sync.beatBuddy.sendCommand(BMC_BEATBUDDY_CMD_TRANS_PART_1+s, data.byteB); - f142: 3365 adds r3, #101 ; 0x65 - f144: f243 7090 movw r0, #14224 ; 0x3790 - f148: 69ba ldr r2, [r7, #24] + f29e: 3365 adds r3, #101 ; 0x65 + f2a0: f243 70b0 movw r0, #14256 ; 0x37b0 + f2a4: 69ba ldr r2, [r7, #24] return 0; - f14a: f04f 0800 mov.w r8, #0 + f2a6: f04f 0800 mov.w r8, #0 sync.beatBuddy.sendCommand(BMC_BEATBUDDY_CMD_TRANS_PART_1+s, data.byteB); - f14e: b2d9 uxtb r1, r3 - f150: 4428 add r0, r5 - f152: f7fa fa7d bl 9650 + f2aa: b2d9 uxtb r1, r3 + f2ac: 4428 add r0, r5 + f2ae: f7fa f99f bl 95f0 return 0; - f156: f7fc bc0f b.w b978 + f2b2: f7fc bbcc b.w ba4e + outVal = sync.fas.getSceneNumber() != p1 ? p1: (p2 - 1); + f2b6: b2da uxtb r2, r3 + f2b8: f7fc bf67 b.w c18a + return output; + f2bc: f505 5600 add.w r6, r5, #8192 ; 0x2000 + sprintf(data.str, "%03u", valueTyper.getOutput()); + f2c0: 49ae ldr r1, [pc, #696] ; (f57c ) + f2c2: f107 006d add.w r0, r7, #109 ; 0x6d + f2c6: f8b6 2c84 ldrh.w r2, [r6, #3204] ; 0xc84 + f2ca: f01e ffd3 bl 2e274 + if(isOled){ + f2ce: 7ce3 ldrb r3, [r4, #19] + f2d0: 2b16 cmp r3, #22 + f2d2: f47e a883 bne.w d3dc + if(selChar != oled[n].getSelChar()){ + f2d6: fa5f f18b uxtb.w r1, fp + return selChar; + f2da: f505 5340 add.w r3, r5, #12288 ; 0x3000 + f2de: 2038 movs r0, #56 ; 0x38 + return activeChar; + f2e0: f896 2c89 ldrb.w r2, [r6, #3209] ; 0xc89 + f2e4: fb00 3301 mla r3, r0, r1, r3 + f2e8: f993 1d60 ldrsb.w r1, [r3, #3424] ; 0xd60 + f2ec: 428a cmp r2, r1 + selChar = t_selChar; + f2ee: bf18 it ne + f2f0: f883 2d60 strbne.w r2, [r3, #3424] ; 0xd60 + } + f2f4: f7fe b872 b.w d3dc + f2f8: 3b12 subs r3, #18 + f2fa: 2b01 cmp r3, #1 + f2fc: f63c ac6a bhi.w bbd4 + sync.beatBuddy.sendCommand((data.scrollDirection())?BMC_BEATBUDDY_CMD_SONG_SCROLL_UP:BMC_BEATBUDDY_CMD_SONG_SCROLL_DOWN); + f300: f894 109e ldrb.w r1, [r4, #158] ; 0x9e + f304: f243 70b0 movw r0, #14256 ; 0x37b0 + f308: 227f movs r2, #127 ; 0x7f + return BMC_OFF_LED_EVENT; + f30a: f04f 0800 mov.w r8, #0 + sync.beatBuddy.sendCommand((data.scrollDirection())?BMC_BEATBUDDY_CMD_SONG_SCROLL_UP:BMC_BEATBUDDY_CMD_SONG_SCROLL_DOWN); + f30e: 3112 adds r1, #18 + f310: 4428 add r0, r5 + f312: b2c9 uxtb r1, r1 + f314: f7fa f96c bl 95f0 + break; + f318: f7fc bb99 b.w ba4e + outVal = setLists.getSong() != data.byteA ? data.byteA : (data.byteB-1); + f31c: 69bb ldr r3, [r7, #24] + f31e: 1e59 subs r1, r3, #1 + f320: b2c9 uxtb r1, r1 + f322: f7fd b9dd b.w c6e0 + bitWrite(settings, 2, 0); + f326: 78e2 ldrb r2, [r4, #3] + display.renderBlock(data); + f328: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "R.T. BLOCK"); + f32c: 4b94 ldr r3, [pc, #592] ; (f580 ) + return BMC_OFF_LED_EVENT; + f32e: f04f 0800 mov.w r8, #0 + f332: f022 0204 bic.w r2, r2, #4 + display.renderBlock(data); + f336: 442e add r6, r5 + strcpy(data.str, "R.T. BLOCK"); + f338: cb03 ldmia r3!, {r0, r1} + bitWrite(settings, 3, 1); + f33a: f042 0208 orr.w r2, r2, #8 + f33e: f8c7 006d str.w r0, [r7, #109] ; 0x6d + display.renderBlock(data); + f342: 4668 mov r0, sp + f344: 70e2 strb r2, [r4, #3] + strcpy(data.str, "R.T. BLOCK"); + f346: 881a ldrh r2, [r3, #0] + f348: 789b ldrb r3, [r3, #2] + f34a: f8a7 2075 strh.w r2, [r7, #117] ; 0x75 + display.renderBlock(data); + f34e: 2295 movs r2, #149 ; 0x95 + strcpy(data.str, "R.T. BLOCK"); + f350: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + display.renderBlock(data); + f354: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "R.T. BLOCK"); + f358: f887 3077 strb.w r3, [r7, #119] ; 0x77 + display.renderBlock(data); + f35c: f01b fa48 bl 2a7f0 + f360: 4630 mov r0, r6 + f362: e894 000e ldmia.w r4, {r1, r2, r3} + f366: f7fb fb0b bl a980 + f36a: f7fc bb70 b.w ba4e sprintf(data.label, "CC#%u", data.byteB); - f15a: 69ba ldr r2, [r7, #24] - f15c: f107 00bf add.w r0, r7, #191 ; 0xbf - f160: 492e ldr r1, [pc, #184] ; (f21c ) + f36e: 69ba ldr r2, [r7, #24] + f370: f107 00bf add.w r0, r7, #191 ; 0xbf + f374: 4983 ldr r1, [pc, #524] ; (f584 ) display.renderMidi(data); - f162: f643 3638 movw r6, #15160 ; 0x3b38 + f376: f643 3658 movw r6, #15192 ; 0x3b58 sprintf(data.label, "CC#%u", data.byteB); - f166: f01f f811 bl 2e18c - f16a: 78e3 ldrb r3, [r4, #3] + f37a: f01e ff7b bl 2e274 + return bitRead(settings, 2); + f37e: 78e3 ldrb r3, [r4, #3] return BMC_TO_MIDI_CHANNEL(byteA); - f16c: 79a2 ldrb r2, [r4, #6] + f380: 79a2 ldrb r2, [r4, #6] return BMC_OFF_LED_EVENT; - f16e: f04f 0800 mov.w r8, #0 + f382: f04f 0800 mov.w r8, #0 if(data.useSelected()){ - f172: 0758 lsls r0, r3, #29 + f386: 0758 lsls r0, r3, #29 sprintf(data.str, "CH%u CC%u V%u", data.getChannel(), data.byteB, data.byteC); - f174: 492a ldr r1, [pc, #168] ; (f220 ) - f176: f002 020f and.w r2, r2, #15 - f17a: 79e3 ldrb r3, [r4, #7] + f388: 497f ldr r1, [pc, #508] ; (f588 ) + f38a: f002 020f and.w r2, r2, #15 + f38e: 79e3 ldrb r3, [r4, #7] data.byteC = currentCC; - f17c: bf48 it mi - f17e: f884 9008 strbmi.w r9, [r4, #8] + f390: bf48 it mi + f392: f884 9008 strbmi.w r9, [r4, #8] sprintf(data.str, "CH%u CC%u V%u", data.getChannel(), data.byteB, data.byteC); - f182: 7a20 ldrb r0, [r4, #8] - f184: 3201 adds r2, #1 - f186: 9000 str r0, [sp, #0] - f188: f107 006d add.w r0, r7, #109 ; 0x6d - f18c: f01e fffe bl 2e18c + f396: 7a20 ldrb r0, [r4, #8] + f398: 3201 adds r2, #1 + f39a: 9000 str r0, [sp, #0] + f39c: f107 006d add.w r0, r7, #109 ; 0x6d + f3a0: f01e ff68 bl 2e274 data.type = BMC_MIDI_CONTROL_CHANGE; - f190: 23b0 movs r3, #176 ; 0xb0 + f3a4: 23b0 movs r3, #176 ; 0xb0 display.renderMidi(data); - f192: f107 0160 add.w r1, r7, #96 ; 0x60 - f196: 2295 movs r2, #149 ; 0x95 - f198: 4668 mov r0, sp + f3a6: f107 0160 add.w r1, r7, #96 ; 0x60 + f3aa: 2295 movs r2, #149 ; 0x95 + f3ac: 4668 mov r0, sp data.type = BMC_MIDI_CONTROL_CHANGE; - f19a: 7163 strb r3, [r4, #5] + f3ae: 7163 strb r3, [r4, #5] display.renderMidi(data); - f19c: f01b fab4 bl 2a708 - f1a0: 1970 adds r0, r6, r5 - f1a2: e894 000e ldmia.w r4, {r1, r2, r3} - f1a6: f7fb f8e3 bl a370 - f1aa: f7fc bbe5 b.w b978 - set(t_bank, preset, forced); - f1ae: f505 5240 add.w r2, r5, #12288 ; 0x3000 - f1b2: f243 10ec movw r0, #12780 ; 0x31ec - return BMC_OFF_LED_EVENT; - f1b6: 4698 mov r8, r3 - f1b8: f8d2 21fc ldr.w r2, [r2, #508] ; 0x1fc - f1bc: 4428 add r0, r5 - f1be: 7812 ldrb r2, [r2, #0] - f1c0: f7f1 f9fe bl 5c0 - } - f1c4: f7fc bbd8 b.w b978 - outVal = presets.get() != data.byteA ? data.byteA : (data.byteB-1); - f1c8: 69bb ldr r3, [r7, #24] - f1ca: 1e5a subs r2, r3, #1 - f1cc: b2d2 uxtb r2, r2 - f1ce: f7fd bb95 b.w c8fc - sync.helix.snapshotScroll(data.scrollDirection()); - f1d2: f243 7084 movw r0, #14212 ; 0x3784 - f1d6: f894 109e ldrb.w r1, [r4, #158] ; 0x9e - return BMC_OFF_LED_EVENT; - f1da: f8d7 8010 ldr.w r8, [r7, #16] - sync.helix.snapshotScroll(data.scrollDirection()); - f1de: 4428 add r0, r5 - f1e0: f7fa f960 bl 94a4 - f1e4: f7fc bbc8 b.w b978 - outVal = setLists.get() != data.byteA ? data.byteA : (data.byteB-1); - f1e8: 69bb ldr r3, [r7, #24] - f1ea: 1e59 subs r1, r3, #1 - f1ec: b2c9 uxtb r1, r1 - f1ee: f7fd b8a6 b.w c33e - outVal = setLists.getPart() != data.byteA ? data.byteA : (data.byteB-1); - f1f2: 69bb ldr r3, [r7, #24] - f1f4: 1e59 subs r1, r3, #1 - f1f6: b2c9 uxtb r1, r1 - f1f8: f7fd ba1c b.w c634 - f1fc: 20001fb0 .word 0x20001fb0 - f200: 20001fbc .word 0x20001fbc - f204: 20002084 .word 0x20002084 - f208: 20002088 .word 0x20002088 - f20c: 2000200c .word 0x2000200c - f210: 200022b4 .word 0x200022b4 - f214: 20001550 .word 0x20001550 - f218: 20001eb4 .word 0x20001eb4 - f21c: 20001ec0 .word 0x20001ec0 - f220: 20001ec8 .word 0x20001ec8 - sprintf(data.str, "LFO %u", data.byteA+data.offset); - f224: 49cb ldr r1, [pc, #812] ; (f554 ) - f226: f107 006d add.w r0, r7, #109 ; 0x6d - f22a: f01e ffaf bl 2e18c - data.highlight = lfo[data.byteA].isEnabled(); - f22e: 79a2 ldrb r2, [r4, #6] - return enabled; - f230: 213c movs r1, #60 ; 0x3c - bitWrite(settings, 2, 0); - f232: 78e3 ldrb r3, [r4, #3] - display.renderBlock(data); - f234: f643 3638 movw r6, #15160 ; 0x3b38 - f238: fb01 5202 mla r2, r1, r2, r5 - f23c: f641 1168 movw r1, #6504 ; 0x1968 - f240: f023 0304 bic.w r3, r3, #4 - f244: 442e add r6, r5 - data.highlight = lfo[data.byteA].isEnabled(); - f246: 5c50 ldrb r0, [r2, r1] - display.renderBlock(data); - f248: f107 0160 add.w r1, r7, #96 ; 0x60 - bitWrite(settings, 3, 1); - f24c: f043 0308 orr.w r3, r3, #8 - f250: 2295 movs r2, #149 ; 0x95 - data.highlight = lfo[data.byteA].isEnabled(); - f252: 7520 strb r0, [r4, #20] - display.renderBlock(data); - f254: 4668 mov r0, sp - f256: 70e3 strb r3, [r4, #3] - f258: f01b fa56 bl 2a708 - f25c: 4630 mov r0, r6 - f25e: e894 000e ldmia.w r4, {r1, r2, r3} - f262: f7fb fbbb bl a9dc - f266: f7fc bb87 b.w b978 + f3b0: f01b fa1e bl 2a7f0 + f3b4: 1970 adds r0, r6, r5 + f3b6: e894 000e ldmia.w r4, {r1, r2, r3} + f3ba: f7fa ffab bl a314 + f3be: f7fc bb46 b.w ba4e + outVal = sync.fas.getPresetNumber() != p1 ? p1: (p2 - 1); + f3c2: b29b uxth r3, r3 + f3c4: f7fc bd7f b.w bec6 + return 0; + f3c8: 4610 mov r0, r2 + f3ca: f7fc bd78 b.w bebe enabled = !enabled; - f26a: f89a 3968 ldrb.w r3, [sl, #2408] ; 0x968 - f26e: f083 0301 eor.w r3, r3, #1 - f272: f88a 3968 strb.w r3, [sl, #2408] ; 0x968 + f3ce: f89a 396c ldrb.w r3, [sl, #2412] ; 0x96c + f3d2: f083 0301 eor.w r3, r3, #1 + f3d6: f88a 396c strb.w r3, [sl, #2412] ; 0x96c timeout = micros(); - f276: f01b f97d bl 2a574 + f3da: f01b f93f bl 2a65c freeFormPhaseOffset = 0; - f27a: f60a 1388 addw r3, sl, #2440 ; 0x988 - f27e: 2200 movs r2, #0 + f3de: f60a 138c addw r3, sl, #2444 ; 0x98c + f3e2: 2200 movs r2, #0 timeout = micros(); - f280: f8ca 0980 str.w r0, [sl, #2432] ; 0x980 + f3e4: f8ca 0984 str.w r0, [sl, #2436] ; 0x984 freeFormPhaseOffset = 0; - f284: 601a str r2, [r3, #0] + f3e8: 601a str r2, [r3, #0] } - f286: f7fc bb77 b.w b978 - f28a: 3b12 subs r3, #18 - f28c: 2b01 cmp r3, #1 - f28e: f63c ac3e bhi.w bb0e - sync.beatBuddy.sendCommand((data.scrollDirection())?BMC_BEATBUDDY_CMD_SONG_SCROLL_UP:BMC_BEATBUDDY_CMD_SONG_SCROLL_DOWN); - f292: f894 109e ldrb.w r1, [r4, #158] ; 0x9e - f296: f243 7090 movw r0, #14224 ; 0x3790 - f29a: 227f movs r2, #127 ; 0x7f - return BMC_OFF_LED_EVENT; - f29c: f04f 0800 mov.w r8, #0 - sync.beatBuddy.sendCommand((data.scrollDirection())?BMC_BEATBUDDY_CMD_SONG_SCROLL_UP:BMC_BEATBUDDY_CMD_SONG_SCROLL_DOWN); - f2a0: 3112 adds r1, #18 - f2a2: 4428 add r0, r5 - f2a4: b2c9 uxtb r1, r1 - f2a6: f7fa f9d3 bl 9650 - break; - f2aa: f7fc bb65 b.w b978 - return output; - f2ae: f505 5600 add.w r6, r5, #8192 ; 0x2000 - sprintf(data.str, "%03u", valueTyper.getOutput()); - f2b2: 49a9 ldr r1, [pc, #676] ; (f558 ) - f2b4: f107 006d add.w r0, r7, #109 ; 0x6d - f2b8: f8b6 2c64 ldrh.w r2, [r6, #3172] ; 0xc64 - f2bc: f01e ff66 bl 2e18c - if(isOled){ - f2c0: 7ce3 ldrb r3, [r4, #19] - f2c2: 2b16 cmp r3, #22 - f2c4: f47e a820 bne.w d308 - if(selChar != oled[n].getSelChar()){ - f2c8: fa5f f18b uxtb.w r1, fp - return selChar; - f2cc: f505 5340 add.w r3, r5, #12288 ; 0x3000 - f2d0: 2038 movs r0, #56 ; 0x38 - return activeChar; - f2d2: f896 2c69 ldrb.w r2, [r6, #3177] ; 0xc69 - f2d6: fb00 3301 mla r3, r0, r1, r3 - f2da: f993 1d40 ldrsb.w r1, [r3, #3392] ; 0xd40 - f2de: 428a cmp r2, r1 - selChar = t_selChar; - f2e0: bf18 it ne - f2e2: f883 2d40 strbne.w r2, [r3, #3392] ; 0xd40 - } - f2e6: f7fe b80f b.w d308 + f3ea: f7fc bb30 b.w ba4e return chAllowed(n) ? channel[chCheck(n)].getVPot() : 0; - f2ea: 69bb ldr r3, [r7, #24] - f2ec: 2b08 cmp r3, #8 - f2ee: f200 8382 bhi.w f9f6 + f3ee: 69bb ldr r3, [r7, #24] + f3f0: 2b08 cmp r3, #8 + f3f2: f200 83e1 bhi.w fbb8 return (n>=8) ? selected : n; - f2f2: f505 5940 add.w r9, r5, #12288 ; 0x3000 - f2f6: bf04 itt eq - f2f8: f899 3301 ldrbeq.w r3, [r9, #769] ; 0x301 - f2fc: 60fb streq r3, [r7, #12] + f3f6: f505 5940 add.w r9, r5, #12288 ; 0x3000 + f3fa: bf04 itt eq + f3fc: f899 3321 ldrbeq.w r3, [r9, #801] ; 0x321 + f400: 60fb streq r3, [r7, #12] return vPot; - f2fe: 68fb ldr r3, [r7, #12] - f300: eb09 03c3 add.w r3, r9, r3, lsl #3 + f402: 68fb ldr r3, [r7, #12] + f404: eb09 03c3 add.w r3, r9, r3, lsl #3 uint8_t value = controller.getVPot(ch) & 0x0F; - f304: f893 3310 ldrb.w r3, [r3, #784] ; 0x310 + f408: f893 3330 ldrb.w r3, [r3, #816] ; 0x330 value = constrain(value, 1, 11); - f308: f013 030f ands.w r3, r3, #15 - f30c: f000 8373 beq.w f9f6 - f310: 2b0b cmp r3, #11 - f312: bfa8 it ge - f314: 230b movge r3, #11 + f40c: f013 030f ands.w r3, r3, #15 + f410: f000 83d2 beq.w fbb8 + f414: 2b0b cmp r3, #11 + f416: bfa8 it ge + f418: 230b movge r3, #11 long num = (x - in_min) * out_range; - f316: f103 38ff add.w r8, r3, #4294967295 ; 0xffffffff - f31a: 2264 movs r2, #100 ; 0x64 + f41a: f103 38ff add.w r8, r3, #4294967295 ; 0xffffffff + f41e: 2264 movs r2, #100 ; 0x64 long result = num / in_range + out_min; - f31c: 230a movs r3, #10 + f420: 230a movs r3, #10 long num = (x - in_min) * out_range; - f31e: fb02 f808 mul.w r8, r2, r8 + f422: fb02 f808 mul.w r8, r2, r8 num += in_range / 2; - f322: f108 0805 add.w r8, r8, #5 + f426: f108 0805 add.w r8, r8, #5 long result = num / in_range + out_min; - f326: fbb8 f8f3 udiv r8, r8, r3 + f42a: fbb8 f8f3 udiv r8, r8, r3 return map(value, 1, 11, 0, 100); - f32a: fa5f f888 uxtb.w r8, r8 + f42e: fa5f f888 uxtb.w r8, r8 return sync.daw.getVPotValuePercentage(data.byteB); - f32e: f7fc bb23 b.w b978 - bitWrite(settings, 2, 0); - f332: 78e2 ldrb r2, [r4, #3] - display.renderBlock(data); - f334: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "R.T. BLOCK"); - f338: 4b88 ldr r3, [pc, #544] ; (f55c ) + f432: f7fc bb0c b.w ba4e + sync.helix.snapshotScroll(data.scrollDirection()); + f436: f243 70a4 movw r0, #14244 ; 0x37a4 + f43a: f894 109e ldrb.w r1, [r4, #158] ; 0x9e return BMC_OFF_LED_EVENT; - f33a: f04f 0800 mov.w r8, #0 - f33e: f022 0204 bic.w r2, r2, #4 - display.renderBlock(data); - f342: 442e add r6, r5 - strcpy(data.str, "R.T. BLOCK"); - f344: cb03 ldmia r3!, {r0, r1} - bitWrite(settings, 3, 1); - f346: f042 0208 orr.w r2, r2, #8 - f34a: f8c7 006d str.w r0, [r7, #109] ; 0x6d - display.renderBlock(data); - f34e: 4668 mov r0, sp - f350: 70e2 strb r2, [r4, #3] - strcpy(data.str, "R.T. BLOCK"); - f352: 881a ldrh r2, [r3, #0] - f354: 789b ldrb r3, [r3, #2] - f356: f8a7 2075 strh.w r2, [r7, #117] ; 0x75 - display.renderBlock(data); - f35a: 2295 movs r2, #149 ; 0x95 - strcpy(data.str, "R.T. BLOCK"); - f35c: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - display.renderBlock(data); - f360: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "R.T. BLOCK"); - f364: f887 3077 strb.w r3, [r7, #119] ; 0x77 - display.renderBlock(data); - f368: f01b f9ce bl 2a708 - f36c: 4630 mov r0, r6 - f36e: e894 000e ldmia.w r4, {r1, r2, r3} - f372: f7fb fb33 bl a9dc - f376: f7fc baff b.w b978 - long newValue = (value-amount); - f37a: 3b01 subs r3, #1 - value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - f37c: 2900 cmp r1, #0 - f37e: f000 833c beq.w f9fa - return (newValue < min) ? max : newValue; - f382: 4293 cmp r3, r2 - f384: f6be ad81 bge.w de8a - f388: 2207 movs r2, #7 - f38a: f7fe bd7f b.w de8c - bitWrite(flags, bit, value); - f38e: 68bb ldr r3, [r7, #8] - f390: f013 0f01 tst.w r3, #1 - f394: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc - f398: bf14 ite ne - f39a: f043 0302 orrne.w r3, r3, #2 - f39e: f023 0302 biceq.w r3, r3, #2 - f3a2: f88a 3acc strb.w r3, [sl, #2764] ; 0xacc - } - f3a6: f7fc bae7 b.w b978 - f3aa: f505 5540 add.w r5, r5, #12288 ; 0x3000 - if(!outTimer.active()){ - f3ae: f8d5 41dc ldr.w r4, [r5, #476] ; 0x1dc - f3b2: 2c00 cmp r4, #0 - f3b4: f040 8326 bne.w fa04 - if(ports.get()!=BMC_NONE && !outTimer.active()){ - f3b8: f895 31e8 ldrb.w r3, [r5, #488] ; 0x1e8 - f3bc: 2b00 cmp r3, #0 - f3be: f43c aad9 beq.w b974 - f3c2: 2118 movs r1, #24 - f3c4: 4866 ldr r0, [pc, #408] ; (f560 ) - f3c6: f01d f8bf bl 2c548 - f3ca: 4866 ldr r0, [pc, #408] ; (f564 ) - f3cc: f01a fd52 bl 29e74 - f3d0: 4b65 ldr r3, [pc, #404] ; (f568 ) - interval = value; - f3d2: f44f 7296 mov.w r2, #300 ; 0x12c + f43e: f8d7 8010 ldr.w r8, [r7, #16] + sync.helix.snapshotScroll(data.scrollDirection()); + f442: 4428 add r0, r5 + f444: f7f9 fffe bl 9444 + f448: f7fc bb01 b.w ba4e + outVal = setLists.getPart() != data.byteA ? data.byteA : (data.byteB-1); + f44c: 69bb ldr r3, [r7, #24] + f44e: 1e59 subs r1, r3, #1 + f450: b2c9 uxtb r1, r1 + f452: f7fd b97c b.w c74e + outVal = presets.get() != data.byteA ? data.byteA : (data.byteB-1); + f456: 69bb ldr r3, [r7, #24] + f458: 1e5a subs r2, r3, #1 + f45a: b2d2 uxtb r2, r2 + f45c: f7fc bde1 b.w c022 + if(direction==BMC_SCROLL_UP){ + f460: f894 c09e ldrb.w ip, [r4, #158] ; 0x9e + BMCScroller scroller(sbData.min, sbData.max); + f464: f897 11b2 ldrb.w r1, [r7, #434] ; 0x1b2 + f468: f897 61b3 ldrb.w r6, [r7, #435] ; 0x1b3 + tmp = scroller.scroll(sbData.step, data.scrollDirection(), data.scrollWrap(), tmp, sbData.min, sbData.max); + f46c: f897 31b4 ldrb.w r3, [r7, #436] ; 0x1b4 + return scroll.wrap; + f470: f894 209f ldrb.w r2, [r4, #159] ; 0x9f + f474: f1bc 0f00 cmp.w ip, #0 + f478: f000 84f3 beq.w fe62 + long newValue = (value+amount); + f47c: 4418 add r0, r3 + value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); + f47e: 2a00 cmp r2, #0 + f480: f000 84e8 beq.w fe54 + return (newValue > max || newValue < min) ? min : newValue; + f484: 42b0 cmp r0, r6 + f486: dc02 bgt.n f48e + } else if(newValue + return newValue; + f48c: b2c1 uxtb r1, r0 + value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); + f48e: 460e mov r6, r1 + f490: f7fe bf53 b.w e33a + switch(data.byteA){ + f494: 69fb ldr r3, [r7, #28] + f496: 3b0b subs r3, #11 + f498: 2b0a cmp r3, #10 + f49a: f63c ab9b bhi.w bbd4 + f49e: a201 add r2, pc, #4 ; (adr r2, f4a4 ) + f4a0: f852 f023 ldr.w pc, [r2, r3, lsl #2] + f4a4: 0000f4f1 .word 0x0000f4f1 + f4a8: 0000f4f1 .word 0x0000f4f1 + f4ac: 0000bbd5 .word 0x0000bbd5 + f4b0: 00010e1d .word 0x00010e1d + f4b4: 0000f4e1 .word 0x0000f4e1 + f4b8: 0000f4d1 .word 0x0000f4d1 + f4bc: 0000bbd5 .word 0x0000bbd5 + f4c0: 0000bbd5 .word 0x0000bbd5 + f4c4: 0000bbd5 .word 0x0000bbd5 + f4c8: 0000f4e1 .word 0x0000f4e1 + f4cc: 0000f4d1 .word 0x0000f4d1 + f4d0: f505 5540 add.w r5, r5, #12288 ; 0x3000 + f4d4: f895 87bd ldrb.w r8, [r5, #1981] ; 0x7bd + return sync.beatBuddy.isDoubleTime(); + f4d8: f3c8 1880 ubfx r8, r8, #6, #1 + f4dc: f7fc bab7 b.w ba4e + f4e0: f505 5540 add.w r5, r5, #12288 ; 0x3000 + f4e4: f895 87bd ldrb.w r8, [r5, #1981] ; 0x7bd + return sync.beatBuddy.isHalfTime(); + f4e8: f3c8 1840 ubfx r8, r8, #5, #1 + f4ec: f7fc baaf b.w ba4e + f4f0: f505 5540 add.w r5, r5, #12288 ; 0x3000 + f4f4: f895 37bd ldrb.w r3, [r5, #1981] ; 0x7bd + return isSyncEnabled() && flags.read(BMC_BEATBUDDY_FLAG_PLAYING); + f4f8: f013 0801 ands.w r8, r3, #1 + f4fc: f43c aaa7 beq.w ba4e + f500: f3c3 0880 ubfx r8, r3, #2, #1 + return sync.beatBuddy.isPlaying(); + f504: f7fc baa3 b.w ba4e + set(bank, t_preset, forced); + f508: f505 5140 add.w r1, r5, #12288 ; 0x3000 + f50c: f243 200c movw r0, #12812 ; 0x320c return BMC_OFF_LED_EVENT; - f3d6: 46a0 mov r8, r4 - f3d8: 681b ldr r3, [r3, #0] - f3da: f8a5 21d8 strh.w r2, [r5, #472] ; 0x1d8 - prevTime = (unsigned long) _BMCTiming::get(); - f3de: f8c5 31dc str.w r3, [r5, #476] ; 0x1dc - } - f3e2: f7fc bac9 b.w b978 - return ports; - f3e6: f505 5540 add.w r5, r5, #12288 ; 0x3000 - f3ea: f895 31e8 ldrb.w r3, [r5, #488] ; 0x1e8 - f3ee: 2b00 cmp r3, #0 - f3f0: f43c aac0 beq.w b974 - f3f4: f8d5 41dc ldr.w r4, [r5, #476] ; 0x1dc - f3f8: 2c00 cmp r4, #0 - f3fa: f47c aabb bne.w b974 - size_t print(const char s[]) { return write(s); } - f3fe: 4958 ldr r1, [pc, #352] ; (f560 ) - f400: 46a0 mov r8, r4 - f402: 4858 ldr r0, [pc, #352] ; (f564 ) - f404: f7f7 fd7c bl 6f00 - size_t println(const char s[]) { return print(s) + println(); } - f408: 4856 ldr r0, [pc, #344] ; (f564 ) - f40a: f01a fd33 bl 29e74 - f40e: 4b56 ldr r3, [pc, #344] ; (f568 ) - interval = value; - f410: f44f 7296 mov.w r2, #300 ; 0x12c - f414: 681b ldr r3, [r3, #0] - f416: f8a5 21d8 strh.w r2, [r5, #472] ; 0x1d8 - prevTime = (unsigned long) _BMCTiming::get(); - f41a: f8c5 31dc str.w r3, [r5, #476] ; 0x1dc + f510: 4698 mov r8, r3 + f512: f8d1 1218 ldr.w r1, [r1, #536] ; 0x218 + f516: 4428 add r0, r5 + f518: 7809 ldrb r1, [r1, #0] + f51a: f7f1 f851 bl 5c0 } - f41e: f7fc baab b.w b978 + f51e: f7fc ba96 b.w ba4e long newValue = (value-amount); - f422: 3b01 subs r3, #1 - return (newValue < min) ? max : newValue; - f424: 4293 cmp r3, r2 - f426: bfa8 it ge - f428: b2d9 uxtbge r1, r3 - f42a: f7fc bc40 b.w bcae - set(bank, t_preset, forced); - f42e: f505 5140 add.w r1, r5, #12288 ; 0x3000 - f432: f243 10ec movw r0, #12780 ; 0x31ec - f436: 4698 mov r8, r3 - f438: f8d1 11f8 ldr.w r1, [r1, #504] ; 0x1f8 - f43c: 4428 add r0, r5 - f43e: 7809 ldrb r1, [r1, #0] - f440: f7f1 f8be bl 5c0 - } - f444: f7fc ba98 b.w b978 - midi.sendPitchBend(e.ports, channel, newPitch); - f448: 697b ldr r3, [r7, #20] - long num = (x - in_min) * out_range; - f44a: ebc1 3b41 rsb fp, r1, r1, lsl #13 - long result = num / in_range + out_min; - f44e: 243a movs r4, #58 ; 0x3a - f450: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - f454: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - num += in_range / 2; - f458: f10b 031d add.w r3, fp, #29 - f45c: 69bd ldr r5, [r7, #24] - long result = num / in_range + out_min; - f45e: fbb3 f3f4 udiv r3, r3, r4 - f462: f5a3 5300 sub.w r3, r3, #8192 ; 0x2000 - f466: 9500 str r5, [sp, #0] - return BMC_OFF_LED_EVENT; - f468: 46a8 mov r8, r5 - midi.sendPitchBend(e.ports, channel, newPitch); - f46a: b21b sxth r3, r3 - f46c: f014 fc1a bl 23ca4 - f470: f7fc ba82 b.w b978 + f522: 3b01 subs r3, #1 value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - f474: 2800 cmp r0, #0 - f476: f000 8465 beq.w fd44 - long newValue = (value-amount); - f47a: 1e51 subs r1, r2, #1 + f524: 2900 cmp r1, #0 + f526: f000 8438 beq.w fd9a return (newValue < min) ? max : newValue; - f47c: 4299 cmp r1, r3 - f47e: f6fe ad38 blt.w def2 - f482: b28c uxth r4, r1 - f484: f7fe bd35 b.w def2 - if((max > highest) || (max <= min)){ - f488: 428c cmp r4, r1 - f48a: f200 836f bhi.w fb6c - f48e: 2c00 cmp r4, #0 - f490: f43e ad20 beq.w ded4 - min = lowest; - f494: 2300 movs r3, #0 - f496: f7fe bd1f b.w ded8 - data.value = (data.useSelected()) ? programBank : data.byteB; - f49a: 8b3a ldrh r2, [r7, #24] - f49c: f7fd bf8a b.w d3b4 - return bitRead(flags, bit); - f4a0: f505 5240 add.w r2, r5, #12288 ; 0x3000 - f4a4: f892 379d ldrb.w r3, [r2, #1949] ; 0x79d - f4a8: f013 0301 ands.w r3, r3, #1 - f4ac: f000 83d5 beq.w fc5a + f52a: 4293 cmp r3, r2 + f52c: f6be ad95 bge.w e05a + f530: 2207 movs r2, #7 + f532: f7fe bd93 b.w e05c + f536: f505 5240 add.w r2, r5, #12288 ; 0x3000 + f53a: f892 37bd ldrb.w r3, [r2, #1981] ; 0x7bd + return isSyncEnabled() ? songPart : 0; + f53e: f013 0301 ands.w r3, r3, #1 + f542: f000 8311 beq.w fb68 if(data.scrollDirection()){ - f4b0: f894 109e ldrb.w r1, [r4, #158] ; 0x9e - f4b4: f892 37aa ldrb.w r3, [r2, #1962] ; 0x7aa - f4b8: 2900 cmp r1, #0 - f4ba: f001 878c beq.w 113d6 + f546: f894 109e ldrb.w r1, [r4, #158] ; 0x9e + f54a: f892 37ca ldrb.w r3, [r2, #1994] ; 0x7ca + f54e: 2900 cmp r1, #0 + f550: f001 8329 beq.w 10ba6 if(s >= 124){ - f4be: 2b7b cmp r3, #123 ; 0x7b + f554: 2b7b cmp r3, #123 ; 0x7b s = 0; - f4c0: bf88 it hi - f4c2: 2300 movhi r3, #0 + f556: bf88 it hi + f558: 2300 movhi r3, #0 if(s >= 124){ - f4c4: f240 83ce bls.w fc64 + f55a: f240 830a bls.w fb72 sync.beatBuddy.sendCommand(BMC_BEATBUDDY_CMD_TRANS_PART_1+s, data.byteB); - f4c8: 3365 adds r3, #101 ; 0x65 - f4ca: f243 7090 movw r0, #14224 ; 0x3790 - f4ce: 69ba ldr r2, [r7, #24] + f55e: 3365 adds r3, #101 ; 0x65 + f560: f243 70b0 movw r0, #14256 ; 0x37b0 + f564: 69ba ldr r2, [r7, #24] return 0; - f4d0: f04f 0800 mov.w r8, #0 + f566: f04f 0800 mov.w r8, #0 sync.beatBuddy.sendCommand(BMC_BEATBUDDY_CMD_TRANS_PART_1+s, data.byteB); - f4d4: b2d9 uxtb r1, r3 - f4d6: 4428 add r0, r5 - f4d8: f7fa f8ba bl 9650 + f56a: b2d9 uxtb r1, r3 + f56c: 4428 add r0, r5 + f56e: f7fa f83f bl 95f0 return 0; - f4dc: f7fc ba4c b.w b978 - bitWrite(flags, bit, value); - f4e0: 68bb ldr r3, [r7, #8] - f4e2: f013 0801 ands.w r8, r3, #1 - f4e6: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc - f4ea: f000 8238 beq.w f95e - f4ee: f043 0304 orr.w r3, r3, #4 - return BMC_OFF_LED_EVENT; - f4f2: f04f 0800 mov.w r8, #0 - f4f6: f88a 3acc strb.w r3, [sl, #2764] ; 0xacc - f4fa: f7fc ba3d b.w b978 - sprintf(data.str, "%u", cmd); - f4fe: 461a mov r2, r3 - f500: 491a ldr r1, [pc, #104] ; (f56c ) - f502: f107 006d add.w r0, r7, #109 ; 0x6d - f506: f01e fe41 bl 2e18c - f50a: f7fd befd b.w d308 - strcpy(data.str, store.global.names[(event & 0xFFFF)].name); - f50e: b289 uxth r1, r1 - f510: f107 006d add.w r0, r7, #109 ; 0x6d - f514: eb01 1101 add.w r1, r1, r1, lsl #4 - f518: f501 61cf add.w r1, r1, #1656 ; 0x678 - f51c: 4429 add r1, r5 - f51e: f01f fa2d bl 2e97c - f522: f7fc bb0c b.w bb3e - return bitRead(flags, bit); - f526: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c - f52a: f3c3 0340 ubfx r3, r3, #1, #1 - f52e: f7ff ba8a b.w ea46 - strcpy(buff, "Not Connected"); - f532: 4b0f ldr r3, [pc, #60] ; (f570 ) - f534: cb07 ldmia r3!, {r0, r1, r2} - f536: 881b ldrh r3, [r3, #0] - f538: f8c7 0096 str.w r0, [r7, #150] ; 0x96 - f53c: f8c7 109a str.w r1, [r7, #154] ; 0x9a - f540: f8c7 209e str.w r2, [r7, #158] ; 0x9e - f544: f8a7 30a2 strh.w r3, [r7, #162] ; 0xa2 - } - f548: f7ff bb22 b.w eb90 - switch(id){ - f54c: 2300 movs r3, #0 - f54e: f7fc bb97 b.w bc80 - f552: bf00 nop - f554: 2000202c .word 0x2000202c - f558: 20002658 .word 0x20002658 - f55c: 20001f14 .word 0x20001f14 - f560: 20002984 .word 0x20002984 - f564: 20004ba8 .word 0x20004ba8 - f568: 2000bae8 .word 0x2000bae8 - f56c: 20002030 .word 0x20002030 - f570: 200015b8 .word 0x200015b8 - if(value>9){ - f574: 2909 cmp r1, #9 - f576: f200 8315 bhi.w fba4 - return (ch - midi.sendPitchBend(e.ports, channel, 0); - f590: 2600 movs r6, #0 - f592: 697b ldr r3, [r7, #20] - f594: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - f598: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - f59c: 4633 mov r3, r6 - f59e: 9600 str r6, [sp, #0] - return BMC_OFF_LED_EVENT; - f5a0: 46b0 mov r8, r6 - midi.sendPitchBend(e.ports, channel, 0); - f5a2: f014 fb7f bl 23ca4 - channel[ch].pitch = (t_value & 0x7F); - f5a6: f884 6ace strb.w r6, [r4, #2766] ; 0xace - globals.setMidiLocalUpdate(true); - f5aa: f8da 2ac8 ldr.w r2, [sl, #2760] ; 0xac8 - bitWrite(flags, bit, value); - f5ae: 6dd3 ldr r3, [r2, #92] ; 0x5c - f5b0: f043 0320 orr.w r3, r3, #32 - f5b4: 65d3 str r3, [r2, #92] ; 0x5c - } - f5b6: f7fc b9df b.w b978 + f572: f7fc ba6c b.w ba4e + f576: bf00 nop + f578: 2000202c .word 0x2000202c + f57c: 20002658 .word 0x20002658 + f580: 20001f14 .word 0x20001f14 + f584: 20001ec0 .word 0x20001ec0 + f588: 20001ec8 .word 0x20001ec8 return (ch - f5f0: 7ce4 ldrb r4, [r4, #19] + f5be: f01b f917 bl 2a7f0 + f5c2: 7ce4 ldrb r4, [r4, #19] sprintf(crcStr, "sli%u/%u/%u", d.value, d.min, d.max); - f5f2: 4653 mov r3, sl + f5c4: 4653 mov r3, sl char crcStr[32] = ""; - f5f4: 653e str r6, [r7, #80] ; 0x50 + f5c6: 653e str r6, [r7, #80] ; 0x50 sprintf(crcStr, "sli%u/%u/%u", d.value, d.min, d.max); - f5f6: 464a mov r2, r9 + f5c8: 464a mov r2, r9 char crcStr[32] = ""; - f5f8: 637e str r6, [r7, #52] ; 0x34 + f5ca: 637e str r6, [r7, #52] ; 0x34 sprintf(crcStr, "sli%u/%u/%u", d.value, d.min, d.max); - f5fa: f107 0034 add.w r0, r7, #52 ; 0x34 - f5fe: 49db ldr r1, [pc, #876] ; (f96c ) + f5cc: f107 0034 add.w r0, r7, #52 ; 0x34 + f5d0: 49d7 ldr r1, [pc, #860] ; (f930 ) char crcStr[32] = ""; - f600: e9c7 660e strd r6, r6, [r7, #56] ; 0x38 - f604: e9c7 6610 strd r6, r6, [r7, #64] ; 0x40 - f608: e9c7 6612 strd r6, r6, [r7, #72] ; 0x48 + f5d2: e9c7 660e strd r6, r6, [r7, #56] ; 0x38 + f5d6: e9c7 6610 strd r6, r6, [r7, #64] ; 0x40 + f5da: e9c7 6612 strd r6, r6, [r7, #72] ; 0x48 sprintf(crcStr, "sli%u/%u/%u", d.value, d.min, d.max); - f60c: 9600 str r6, [sp, #0] - f60e: f01e fdbd bl 2e18c + f5de: 9600 str r6, [sp, #0] + f5e0: f01e fe48 bl 2e274 uint8_t len = strlen(str); - f612: f107 0034 add.w r0, r7, #52 ; 0x34 - f616: f01f fa93 bl 2eb40 + f5e4: f107 0034 add.w r0, r7, #52 ; 0x34 + f5e8: f01f fb2a bl 2ec40 if(len==0){ - f61a: 2800 cmp r0, #0 - f61c: f000 8185 beq.w f92a + f5ec: 2800 cmp r0, #0 + f5ee: f000 8365 beq.w fcbc uint8_t len = strlen(str); - f620: b2c0 uxtb r0, r0 - f622: f107 0234 add.w r2, r7, #52 ; 0x34 + f5f2: b2c0 uxtb r0, r0 + f5f4: f107 0234 add.w r2, r7, #52 ; 0x34 for(uint8_t i = 0 ; i < len ; i++){ - f626: 4631 mov r1, r6 + f5f8: 4631 mov r1, r6 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - f628: f101 0c05 add.w ip, r1, #5 - f62c: f812 3b01 ldrb.w r3, [r2], #1 + f5fa: f101 0c05 add.w ip, r1, #5 + f5fe: f812 3b01 ldrb.w r3, [r2], #1 for(uint8_t i = 0 ; i < len ; i++){ - f630: 3101 adds r1, #1 + f602: 3101 adds r1, #1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - f632: 4463 add r3, ip + f604: 4463 add r3, ip for(uint8_t i = 0 ; i < len ; i++){ - f634: b2c9 uxtb r1, r1 + f606: b2c9 uxtb r1, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - f636: 405e eors r6, r3 + f608: 405e eors r6, r3 for(uint8_t i = 0 ; i < len ; i++){ - f638: 4288 cmp r0, r1 + f60a: 4288 cmp r0, r1 crc ^= (uint8_t) ((uint8_t)str[i]+i+type); - f63a: b2f6 uxtb r6, r6 + f60c: b2f6 uxtb r6, r6 for(uint8_t i = 0 ; i < len ; i++){ - f63c: d8f4 bhi.n f628 + f60e: d8f4 bhi.n f5fa crc ^= len; - f63e: 4046 eors r6, r0 + f610: 4046 eors r6, r0 if(d.isOled()){ - f640: 2c16 cmp r4, #22 - f642: f001 8460 beq.w 10f06 + f612: 2c16 cmp r4, #22 + f614: f000 844c beq.w feb0 return BMC_OFF_LED_EVENT; - f646: f04f 0800 mov.w r8, #0 - f64a: f7fc b995 b.w b978 + f618: f04f 0800 mov.w r8, #0 + f61c: f7fc ba17 b.w ba4e + sprintf(data.str, "%u", cmd); + f620: 461a mov r2, r3 + f622: 49c4 ldr r1, [pc, #784] ; (f934 ) + f624: f107 006d add.w r0, r7, #109 ; 0x6d + f628: f01e fe24 bl 2e274 + f62c: f7fd bed6 b.w d3dc if(activeChar>2){ - f64e: f894 3c69 ldrb.w r3, [r4, #3177] ; 0xc69 - f652: 2b02 cmp r3, #2 - f654: f240 82cf bls.w fbf6 + f630: f894 3c89 ldrb.w r3, [r4, #3209] ; 0xc89 + f634: 2b02 cmp r3, #2 + f636: f240 82a7 bls.w fb88 activeChar = 0; - f658: 2300 movs r3, #0 - f65a: f884 3c69 strb.w r3, [r4, #3177] ; 0xc69 + f63a: 2300 movs r3, #0 + f63c: f884 3c89 strb.w r3, [r4, #3209] ; 0xc89 switch(value){ - f65e: 69fb ldr r3, [r7, #28] - f660: 3b0a subs r3, #10 - f662: 2b04 cmp r3, #4 - f664: f63c aa45 bhi.w baf2 - f668: e8df f013 tbh [pc, r3, lsl #1] - f66c: 0d610e56 .word 0x0d610e56 - f670: 0e9f0ea8 .word 0x0e9f0ea8 - f674: 0e80 .short 0x0e80 - switch(data.byteA){ - f676: 69fb ldr r3, [r7, #28] - f678: 3b0b subs r3, #11 - f67a: 2b0a cmp r3, #10 - f67c: f63c aa47 bhi.w bb0e - f680: a201 add r2, pc, #4 ; (adr r2, f688 ) - f682: f852 f023 ldr.w pc, [r2, r3, lsl #2] + f640: 69fb ldr r3, [r7, #28] + f642: 3b0a subs r3, #10 + f644: 2b04 cmp r3, #4 + f646: f63c aab7 bhi.w bbb8 + f64a: e8df f013 tbh [pc, r3, lsl #1] + f64e: 0a9c .short 0x0a9c + f650: 0abb0a99 .word 0x0abb0a99 + f654: 0a790ab2 .word 0x0a790ab2 + f658: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + f65c: f3c3 0340 ubfx r3, r3, #1, #1 + f660: f7ff ba77 b.w eb52 + bitWrite(settings, 2, 0); + f664: 78e3 ldrb r3, [r4, #3] + f666: f023 0304 bic.w r3, r3, #4 + bitWrite(settings, 3, 1); + f66a: f043 0308 orr.w r3, r3, #8 + f66e: 70e3 strb r3, [r4, #3] + switch(data.byteA){ + f670: 69fb ldr r3, [r7, #28] + f672: 2b64 cmp r3, #100 ; 0x64 + f674: f200 81ad bhi.w f9d2 + f678: 461a mov r2, r3 + f67a: 2a64 cmp r2, #100 ; 0x64 + f67c: f63d acba bhi.w cff4 + f680: a301 add r3, pc, #4 ; (adr r3, f688 ) + f682: f853 f022 ldr.w pc, [r3, r2, lsl #2] f686: bf00 nop - f688: 0000f6d5 .word 0x0000f6d5 - f68c: 0000f6d5 .word 0x0000f6d5 - f690: 0000bb0f .word 0x0000bb0f - f694: 00010a37 .word 0x00010a37 - f698: 0000f6c5 .word 0x0000f6c5 - f69c: 0000f6b5 .word 0x0000f6b5 - f6a0: 0000bb0f .word 0x0000bb0f - f6a4: 0000bb0f .word 0x0000bb0f - f6a8: 0000bb0f .word 0x0000bb0f - f6ac: 0000f6c5 .word 0x0000f6c5 - f6b0: 0000f6b5 .word 0x0000f6b5 - return bitRead(flags, bit); - f6b4: f505 5540 add.w r5, r5, #12288 ; 0x3000 - f6b8: f895 879d ldrb.w r8, [r5, #1949] ; 0x79d - return sync.beatBuddy.isDoubleTime(); - f6bc: f3c8 1880 ubfx r8, r8, #6, #1 - f6c0: f7fc b95a b.w b978 - f6c4: f505 5540 add.w r5, r5, #12288 ; 0x3000 - f6c8: f895 879d ldrb.w r8, [r5, #1949] ; 0x79d - return sync.beatBuddy.isHalfTime(); - f6cc: f3c8 1840 ubfx r8, r8, #5, #1 - f6d0: f7fc b952 b.w b978 - f6d4: f505 5540 add.w r5, r5, #12288 ; 0x3000 - f6d8: f895 379d ldrb.w r3, [r5, #1949] ; 0x79d - return isSyncEnabled() && flags.read(BMC_BEATBUDDY_FLAG_PLAYING); - f6dc: f013 0801 ands.w r8, r3, #1 - f6e0: f43c a94a beq.w b978 - f6e4: f3c3 0880 ubfx r8, r3, #2, #1 - return sync.beatBuddy.isPlaying(); - f6e8: f7fc b946 b.w b978 + f688: 00010879 .word 0x00010879 + f68c: 00011393 .word 0x00011393 + f690: 00011381 .word 0x00011381 + f694: 000113c3 .word 0x000113c3 + f698: 000113bf .word 0x000113bf + f69c: 000113bb .word 0x000113bb + f6a0: 000113a3 .word 0x000113a3 + f6a4: 0001147f .word 0x0001147f + f6a8: 0001146f .word 0x0001146f + f6ac: 0001146b .word 0x0001146b + f6b0: 00011465 .word 0x00011465 + f6b4: 0001143f .word 0x0001143f + f6b8: 00011415 .word 0x00011415 + f6bc: 00011401 .word 0x00011401 + f6c0: 000113d3 .word 0x000113d3 + f6c4: 00011369 .word 0x00011369 + f6c8: 00011347 .word 0x00011347 + f6cc: 0001132d .word 0x0001132d + f6d0: 0001130f .word 0x0001130f + f6d4: 000112ef .word 0x000112ef + f6d8: 000112df .word 0x000112df + f6dc: 000112b9 .word 0x000112b9 + f6e0: 0000cff5 .word 0x0000cff5 + f6e4: 0000cff5 .word 0x0000cff5 + f6e8: 0000cff5 .word 0x0000cff5 + f6ec: 0000cff5 .word 0x0000cff5 + f6f0: 0000cff5 .word 0x0000cff5 + f6f4: 0000cff5 .word 0x0000cff5 + f6f8: 0000cff5 .word 0x0000cff5 + f6fc: 0000cff5 .word 0x0000cff5 + f700: 0000cff5 .word 0x0000cff5 + f704: 0000cff5 .word 0x0000cff5 + f708: 0000cff5 .word 0x0000cff5 + f70c: 0000cff5 .word 0x0000cff5 + f710: 0000cff5 .word 0x0000cff5 + f714: 0000cff5 .word 0x0000cff5 + f718: 0000cff5 .word 0x0000cff5 + f71c: 0000cff5 .word 0x0000cff5 + f720: 0000cff5 .word 0x0000cff5 + f724: 0000cff5 .word 0x0000cff5 + f728: 0000cff5 .word 0x0000cff5 + f72c: 0000cff5 .word 0x0000cff5 + f730: 0000cff5 .word 0x0000cff5 + f734: 0000cff5 .word 0x0000cff5 + f738: 0000cff5 .word 0x0000cff5 + f73c: 0000cff5 .word 0x0000cff5 + f740: 0000cff5 .word 0x0000cff5 + f744: 0000cff5 .word 0x0000cff5 + f748: 0000cff5 .word 0x0000cff5 + f74c: 0000cff5 .word 0x0000cff5 + f750: 0000cff5 .word 0x0000cff5 + f754: 0000cff5 .word 0x0000cff5 + f758: 0000cff5 .word 0x0000cff5 + f75c: 0000cff5 .word 0x0000cff5 + f760: 0000cff5 .word 0x0000cff5 + f764: 0000cff5 .word 0x0000cff5 + f768: 0000cff5 .word 0x0000cff5 + f76c: 0000cff5 .word 0x0000cff5 + f770: 0000cff5 .word 0x0000cff5 + f774: 0000cff5 .word 0x0000cff5 + f778: 0000cff5 .word 0x0000cff5 + f77c: 0000cff5 .word 0x0000cff5 + f780: 0000cff5 .word 0x0000cff5 + f784: 0000cff5 .word 0x0000cff5 + f788: 0000cff5 .word 0x0000cff5 + f78c: 0000cff5 .word 0x0000cff5 + f790: 0000cff5 .word 0x0000cff5 + f794: 0000cff5 .word 0x0000cff5 + f798: 0000cff5 .word 0x0000cff5 + f79c: 0000cff5 .word 0x0000cff5 + f7a0: 0000cff5 .word 0x0000cff5 + f7a4: 0000cff5 .word 0x0000cff5 + f7a8: 0000cff5 .word 0x0000cff5 + f7ac: 0000cff5 .word 0x0000cff5 + f7b0: 0000cff5 .word 0x0000cff5 + f7b4: 0000cff5 .word 0x0000cff5 + f7b8: 0000cff5 .word 0x0000cff5 + f7bc: 0000cff5 .word 0x0000cff5 + f7c0: 0000cff5 .word 0x0000cff5 + f7c4: 0000cff5 .word 0x0000cff5 + f7c8: 0000cff5 .word 0x0000cff5 + f7cc: 0000cff5 .word 0x0000cff5 + f7d0: 0000cff5 .word 0x0000cff5 + f7d4: 0000cff5 .word 0x0000cff5 + f7d8: 0000cff5 .word 0x0000cff5 + f7dc: 0000cff5 .word 0x0000cff5 + f7e0: 0000cff5 .word 0x0000cff5 + f7e4: 0000cff5 .word 0x0000cff5 + f7e8: 0000cff5 .word 0x0000cff5 + f7ec: 0000cff5 .word 0x0000cff5 + f7f0: 0000cff5 .word 0x0000cff5 + f7f4: 0000cff5 .word 0x0000cff5 + f7f8: 0000cff5 .word 0x0000cff5 + f7fc: 0000cff5 .word 0x0000cff5 + f800: 0000cff5 .word 0x0000cff5 + f804: 0000cff5 .word 0x0000cff5 + f808: 0000cff5 .word 0x0000cff5 + f80c: 0000cff5 .word 0x0000cff5 + f810: 0000cff5 .word 0x0000cff5 + f814: 0000cff5 .word 0x0000cff5 + f818: 000112a3 .word 0x000112a3 + strcpy(data.str, store.global.names[(event & 0xFFFF)].name); + f81c: b289 uxth r1, r1 + f81e: f107 006d add.w r0, r7, #109 ; 0x6d + f822: eb01 1101 add.w r1, r1, r1, lsl #4 + f826: f501 61cf add.w r1, r1, #1656 ; 0x678 + f82a: 4429 add r1, r5 + f82c: f01f f916 bl 2ea5c + f830: f7fc b9e8 b.w bc04 + switch(id){ + f834: 2300 movs r3, #0 + f836: f7fc ba5b b.w bcf0 + if(value>9){ + f83a: 2909 cmp r1, #9 + f83c: f200 81d8 bhi.w fbf0 + return (ch + midi.sendPitchBend(e.ports, channel, 0); + f856: 2600 movs r6, #0 + f858: 697b ldr r3, [r7, #20] + f85a: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + f85e: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + f862: 4633 mov r3, r6 + f864: 9600 str r6, [sp, #0] + return BMC_OFF_LED_EVENT; + f866: 46b0 mov r8, r6 + midi.sendPitchBend(e.ports, channel, 0); + f868: f014 fa82 bl 23d70 + channel[ch].pitch = (t_value & 0x7F); + f86c: f884 6ace strb.w r6, [r4, #2766] ; 0xace + globals.setMidiLocalUpdate(true); + f870: f8da 2ac8 ldr.w r2, [sl, #2760] ; 0xac8 + bitWrite(flags, bit, value); + f874: 6dd3 ldr r3, [r2, #92] ; 0x5c + f876: f043 0320 orr.w r3, r3, #32 + f87a: 65d3 str r3, [r2, #92] ; 0x5c + } + f87c: f7fc b8e7 b.w ba4e + strcpy(buff, "Not Connected"); + f880: 4b2d ldr r3, [pc, #180] ; (f938 ) + f882: cb07 ldmia r3!, {r0, r1, r2} + f884: 881b ldrh r3, [r3, #0] + f886: f8c7 0096 str.w r0, [r7, #150] ; 0x96 + f88a: f8c7 109a str.w r1, [r7, #154] ; 0x9a + f88e: f8c7 209e str.w r2, [r7, #158] ; 0x9e + f892: f8a7 30a2 strh.w r3, [r7, #162] ; 0xa2 + } + f896: f7ff b9f6 b.w ec86 + midi.sendPitchBend(e.ports, channel, newPitch); + f89a: 697b ldr r3, [r7, #20] + long num = (x - in_min) * out_range; + f89c: ebc1 3b41 rsb fp, r1, r1, lsl #13 + long result = num / in_range + out_min; + f8a0: 243a movs r4, #58 ; 0x3a + f8a2: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + f8a6: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + num += in_range / 2; + f8aa: f10b 031d add.w r3, fp, #29 + f8ae: 69bd ldr r5, [r7, #24] + long result = num / in_range + out_min; + f8b0: fbb3 f3f4 udiv r3, r3, r4 + f8b4: f5a3 5300 sub.w r3, r3, #8192 ; 0x2000 + f8b8: 9500 str r5, [sp, #0] + return BMC_OFF_LED_EVENT; + f8ba: 46a8 mov r8, r5 + midi.sendPitchBend(e.ports, channel, newPitch); + f8bc: b21b sxth r3, r3 + f8be: f014 fa57 bl 23d70 + f8c2: f7fc b8c4 b.w ba4e + f8c6: 68bb ldr r3, [r7, #8] + f8c8: f013 0801 ands.w r8, r3, #1 + f8cc: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc + f8d0: f000 8098 beq.w fa04 + f8d4: f043 0304 orr.w r3, r3, #4 + return BMC_OFF_LED_EVENT; + f8d8: f04f 0800 mov.w r8, #0 + f8dc: f88a 3acc strb.w r3, [sl, #2764] ; 0xacc + f8e0: f7fc b8b5 b.w ba4e + data.value = (data.useSelected()) ? programBank : data.byteB; + f8e4: 8b3a ldrh r2, [r7, #24] + f8e6: f7fd be60 b.w d5aa if (in_range == 0) return out_min + out_range / 2; - f6ec: f04f 0832 mov.w r8, #50 ; 0x32 - f6f0: f7fd bb4f b.w cd92 - bitWrite(settings, 2, 0); - f6f4: 78e3 ldrb r3, [r4, #3] - f6f6: f023 0304 bic.w r3, r3, #4 - bitWrite(settings, 3, 1); - f6fa: f043 0308 orr.w r3, r3, #8 - f6fe: 70e3 strb r3, [r4, #3] - switch(data.byteA){ - f700: 69fb ldr r3, [r7, #28] - f702: 2b64 cmp r3, #100 ; 0x64 - f704: f200 80d2 bhi.w f8ac - f708: 461a mov r2, r3 - f70a: 2a64 cmp r2, #100 ; 0x64 - f70c: f63d abca bhi.w cea4 - f710: a301 add r3, pc, #4 ; (adr r3, f718 ) - f712: f853 f022 ldr.w pc, [r3, r2, lsl #2] - f716: bf00 nop - f718: 00010875 .word 0x00010875 - f71c: 00010865 .word 0x00010865 - f720: 00010853 .word 0x00010853 - f724: 00010843 .word 0x00010843 - f728: 00010829 .word 0x00010829 - f72c: 00010825 .word 0x00010825 - f730: 00010821 .word 0x00010821 - f734: 00010815 .word 0x00010815 - f738: 00010805 .word 0x00010805 - f73c: 000107ed .word 0x000107ed - f740: 000107e7 .word 0x000107e7 - f744: 000107c1 .word 0x000107c1 - f748: 00010797 .word 0x00010797 - f74c: 00010783 .word 0x00010783 - f750: 00010755 .word 0x00010755 - f754: 00010731 .word 0x00010731 - f758: 000110d7 .word 0x000110d7 - f75c: 000110d1 .word 0x000110d1 - f760: 000110b3 .word 0x000110b3 - f764: 00011093 .word 0x00011093 - f768: 00010fd1 .word 0x00010fd1 - f76c: 00010fab .word 0x00010fab - f770: 0000cea5 .word 0x0000cea5 - f774: 0000cea5 .word 0x0000cea5 - f778: 0000cea5 .word 0x0000cea5 - f77c: 0000cea5 .word 0x0000cea5 - f780: 0000cea5 .word 0x0000cea5 - f784: 0000cea5 .word 0x0000cea5 - f788: 0000cea5 .word 0x0000cea5 - f78c: 0000cea5 .word 0x0000cea5 - f790: 0000cea5 .word 0x0000cea5 - f794: 0000cea5 .word 0x0000cea5 - f798: 0000cea5 .word 0x0000cea5 - f79c: 0000cea5 .word 0x0000cea5 - f7a0: 0000cea5 .word 0x0000cea5 - f7a4: 0000cea5 .word 0x0000cea5 - f7a8: 0000cea5 .word 0x0000cea5 - f7ac: 0000cea5 .word 0x0000cea5 - f7b0: 0000cea5 .word 0x0000cea5 - f7b4: 0000cea5 .word 0x0000cea5 - f7b8: 0000cea5 .word 0x0000cea5 - f7bc: 0000cea5 .word 0x0000cea5 - f7c0: 0000cea5 .word 0x0000cea5 - f7c4: 0000cea5 .word 0x0000cea5 - f7c8: 0000cea5 .word 0x0000cea5 - f7cc: 0000cea5 .word 0x0000cea5 - f7d0: 0000cea5 .word 0x0000cea5 - f7d4: 0000cea5 .word 0x0000cea5 - f7d8: 0000cea5 .word 0x0000cea5 - f7dc: 0000cea5 .word 0x0000cea5 - f7e0: 0000cea5 .word 0x0000cea5 - f7e4: 0000cea5 .word 0x0000cea5 - f7e8: 0000cea5 .word 0x0000cea5 - f7ec: 0000cea5 .word 0x0000cea5 - f7f0: 0000cea5 .word 0x0000cea5 - f7f4: 0000cea5 .word 0x0000cea5 - f7f8: 0000cea5 .word 0x0000cea5 - f7fc: 0000cea5 .word 0x0000cea5 - f800: 0000cea5 .word 0x0000cea5 - f804: 0000cea5 .word 0x0000cea5 - f808: 0000cea5 .word 0x0000cea5 - f80c: 0000cea5 .word 0x0000cea5 - f810: 0000cea5 .word 0x0000cea5 - f814: 0000cea5 .word 0x0000cea5 - f818: 0000cea5 .word 0x0000cea5 - f81c: 0000cea5 .word 0x0000cea5 - f820: 0000cea5 .word 0x0000cea5 - f824: 0000cea5 .word 0x0000cea5 - f828: 0000cea5 .word 0x0000cea5 - f82c: 0000cea5 .word 0x0000cea5 - f830: 0000cea5 .word 0x0000cea5 - f834: 0000cea5 .word 0x0000cea5 - f838: 0000cea5 .word 0x0000cea5 - f83c: 0000cea5 .word 0x0000cea5 - f840: 0000cea5 .word 0x0000cea5 - f844: 0000cea5 .word 0x0000cea5 - f848: 0000cea5 .word 0x0000cea5 - f84c: 0000cea5 .word 0x0000cea5 - f850: 0000cea5 .word 0x0000cea5 - f854: 0000cea5 .word 0x0000cea5 - f858: 0000cea5 .word 0x0000cea5 - f85c: 0000cea5 .word 0x0000cea5 - f860: 0000cea5 .word 0x0000cea5 - f864: 0000cea5 .word 0x0000cea5 - f868: 0000cea5 .word 0x0000cea5 - f86c: 0000cea5 .word 0x0000cea5 - f870: 0000cea5 .word 0x0000cea5 - f874: 0000cea5 .word 0x0000cea5 - f878: 0000cea5 .word 0x0000cea5 - f87c: 0000cea5 .word 0x0000cea5 - f880: 0000cea5 .word 0x0000cea5 - f884: 0000cea5 .word 0x0000cea5 - f888: 0000cea5 .word 0x0000cea5 - f88c: 0000cea5 .word 0x0000cea5 - f890: 0000cea5 .word 0x0000cea5 - f894: 0000cea5 .word 0x0000cea5 - f898: 0000cea5 .word 0x0000cea5 - f89c: 0000cea5 .word 0x0000cea5 - f8a0: 0000cea5 .word 0x0000cea5 - f8a4: 0000cea5 .word 0x0000cea5 - f8a8: 00011055 .word 0x00011055 - f8ac: 69fb ldr r3, [r7, #28] - f8ae: 2be2 cmp r3, #226 ; 0xe2 - f8b0: f001 83d3 beq.w 1105a - f8b4: 2be3 cmp r3, #227 ; 0xe3 - f8b6: f47d aaf5 bne.w cea4 + f8ea: f04f 0832 mov.w r8, #50 ; 0x32 + f8ee: f7fd baaa b.w ce46 + f8f2: f505 5540 add.w r5, r5, #12288 ; 0x3000 + if(!outTimer.active()){ + f8f6: f8d5 41fc ldr.w r4, [r5, #508] ; 0x1fc + f8fa: 2c00 cmp r4, #0 + f8fc: f040 80a4 bne.w fa48 + if(ports.get()!=BMC_NONE && !outTimer.active()){ + f900: f895 3208 ldrb.w r3, [r5, #520] ; 0x208 + f904: 2b00 cmp r3, #0 + f906: f43c a8a0 beq.w ba4a + f90a: 2118 movs r1, #24 + f90c: 480b ldr r0, [pc, #44] ; (f93c ) + f90e: f01c fe8f bl 2c630 + f912: 480b ldr r0, [pc, #44] ; (f940 ) + f914: f01a fb24 bl 29f60 + f918: 4b0a ldr r3, [pc, #40] ; (f944 ) + interval = value; + f91a: f44f 7296 mov.w r2, #300 ; 0x12c + return BMC_OFF_LED_EVENT; + f91e: 46a0 mov r8, r4 + f920: 681b ldr r3, [r3, #0] + f922: f8a5 21f8 strh.w r2, [r5, #504] ; 0x1f8 + prevTime = (unsigned long) _BMCTiming::get(); + f926: f8c5 31fc str.w r3, [r5, #508] ; 0x1fc + } + f92a: f7fc b890 b.w ba4e + f92e: bf00 nop + f930: 20001574 .word 0x20001574 + f934: 20002030 .word 0x20002030 + f938: 200015b8 .word 0x200015b8 + f93c: 2000298c .word 0x2000298c + f940: 20004c68 .word 0x20004c68 + f944: 2000bb08 .word 0x2000bb08 + return ports; + f948: f505 5540 add.w r5, r5, #12288 ; 0x3000 + f94c: f895 3208 ldrb.w r3, [r5, #520] ; 0x208 + f950: 2b00 cmp r3, #0 + f952: f43c a87a beq.w ba4a + f956: f8d5 41fc ldr.w r4, [r5, #508] ; 0x1fc + f95a: 2c00 cmp r4, #0 + f95c: f47c a875 bne.w ba4a + size_t print(const char s[]) { return write(s); } + f960: 49d0 ldr r1, [pc, #832] ; (fca4 ) + f962: 46a0 mov r8, r4 + f964: 48d0 ldr r0, [pc, #832] ; (fca8 ) + f966: f7f7 fb03 bl 6f70 + size_t println(const char s[]) { return print(s) + println(); } + f96a: 48cf ldr r0, [pc, #828] ; (fca8 ) + f96c: f01a faf8 bl 29f60 + f970: 4bce ldr r3, [pc, #824] ; (fcac ) + interval = value; + f972: f44f 7296 mov.w r2, #300 ; 0x12c + f976: 681b ldr r3, [r3, #0] + f978: f8a5 21f8 strh.w r2, [r5, #504] ; 0x1f8 + prevTime = (unsigned long) _BMCTiming::get(); + f97c: f8c5 31fc str.w r3, [r5, #508] ; 0x1fc + } + f980: f7fc b865 b.w ba4e + f984: 68bb ldr r3, [r7, #8] + f986: f013 0f01 tst.w r3, #1 + f98a: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc + f98e: bf14 ite ne + f990: f043 0302 orrne.w r3, r3, #2 + f994: f023 0302 biceq.w r3, r3, #2 + f998: f88a 3acc strb.w r3, [sl, #2764] ; 0xacc + } + f99c: f7fc b857 b.w ba4e + value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); + f9a0: 2800 cmp r0, #0 + f9a2: f000 823d beq.w fe20 + long newValue = (value-amount); + f9a6: 1e51 subs r1, r2, #1 + return (newValue < min) ? max : newValue; + f9a8: 4299 cmp r1, r3 + f9aa: f6fe aac4 blt.w df36 + f9ae: b28c uxth r4, r1 + f9b0: f7fe bac1 b.w df36 + if((max > highest) || (max <= min)){ + f9b4: 428c cmp r4, r1 + f9b6: f200 8166 bhi.w fc86 + f9ba: 2c00 cmp r4, #0 + f9bc: f43e aaac beq.w df18 + min = lowest; + f9c0: 2300 movs r3, #0 + f9c2: f7fe baab b.w df1c + long newValue = (value-amount); + f9c6: 3b01 subs r3, #1 + return (newValue < min) ? max : newValue; + f9c8: 4293 cmp r3, r2 + f9ca: bfa8 it ge + f9cc: b2d9 uxtbge r1, r3 + f9ce: f7fc b9a6 b.w bd1e + f9d2: 69fb ldr r3, [r7, #28] + f9d4: 2be2 cmp r3, #226 ; 0xe2 + f9d6: f001 84d0 beq.w 1137a + f9da: 2be3 cmp r3, #227 ; 0xe3 + f9dc: f47d ab0a bne.w cff4 strcpy(data.str, "Trans Next"); - f8ba: 4b2d ldr r3, [pc, #180] ; (f970 ) - f8bc: cb03 ldmia r3!, {r0, r1} - f8be: 881a ldrh r2, [r3, #0] - f8c0: 789b ldrb r3, [r3, #2] - f8c2: f8c7 006d str.w r0, [r7, #109] ; 0x6d - f8c6: f8a7 2075 strh.w r2, [r7, #117] ; 0x75 - f8ca: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - f8ce: f887 3077 strb.w r3, [r7, #119] ; 0x77 + f9e0: 4bb3 ldr r3, [pc, #716] ; (fcb0 ) + f9e2: cb03 ldmia r3!, {r0, r1} + f9e4: 881a ldrh r2, [r3, #0] + f9e6: 789b ldrb r3, [r3, #2] + f9e8: f8c7 006d str.w r0, [r7, #109] ; 0x6d + f9ec: f8a7 2075 strh.w r2, [r7, #117] ; 0x75 + f9f0: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + f9f4: f887 3077 strb.w r3, [r7, #119] ; 0x77 break; - f8d2: f7fd bae7 b.w cea4 - s++; - f8d6: 3301 adds r3, #1 - f8d8: b2db uxtb r3, r3 - f8da: e432 b.n f142 + f9f8: f7fd bafc b.w cff4 + sync.fas.tunerOn(); + f9fc: f7f9 fb98 bl 9130 + fa00: f7fc b825 b.w ba4e + bitWrite(flags, bit, value); + fa04: f023 0304 bic.w r3, r3, #4 + fa08: f88a 3acc strb.w r3, [sl, #2764] ; 0xacc + } + fa0c: f7fc b81f b.w ba4e long num = (x - in_min) * out_range; - f8dc: f1a1 0b0a sub.w fp, r1, #10 - midi.sendPitchBend(e.ports, channel, newPitch); - f8e0: 697b ldr r3, [r7, #20] + fa10: f1a1 0345 sub.w r3, r1, #69 ; 0x45 + fa14: f641 70fe movw r0, #8190 ; 0x1ffe long result = num / in_range + out_min; - f8e2: 2675 movs r6, #117 ; 0x75 - f8e4: 2400 movs r4, #0 + fa18: 243a movs r4, #58 ; 0x3a + midi.sendPitchBend(e.ports, channel, newPitch); + fa1a: 6979 ldr r1, [r7, #20] long num = (x - in_min) * out_range; - f8e6: ebab 3b4b sub.w fp, fp, fp, lsl #13 - f8ea: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 - f8ee: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - f8f2: 9400 str r4, [sp, #0] - num -= in_range / 2; - f8f4: f1ab 033a sub.w r3, fp, #58 ; 0x3a + fa1c: fb00 f303 mul.w r3, r0, r3 + fa20: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + fa24: 69bd ldr r5, [r7, #24] + num += in_range / 2; + fa26: 331d adds r3, #29 + fa28: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 + fa2c: 9500 str r5, [sp, #0] return BMC_OFF_LED_EVENT; - f8f8: 46a0 mov r8, r4 + fa2e: 46a8 mov r8, r5 long result = num / in_range + out_min; - f8fa: fb93 f3f6 sdiv r3, r3, r6 - f8fe: 3b01 subs r3, #1 + fa30: fbb3 f3f4 udiv r3, r3, r4 + fa34: 3301 adds r3, #1 midi.sendPitchBend(e.ports, channel, newPitch); - f900: b21b sxth r3, r3 - f902: f014 f9cf bl 23ca4 - f906: f7fc b837 b.w b978 + fa36: b21b sxth r3, r3 + fa38: f014 f99a bl 23d70 + fa3c: f7fc b807 b.w ba4e if (in_range * num < 0) return result - 1; - f90a: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff - f90e: f7fd ba40 b.w cd92 + fa40: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff + fa44: f7fd b9ff b.w ce46 + fa48: 2117 movs r1, #23 + fa4a: 489a ldr r0, [pc, #616] ; (fcb4 ) + fa4c: f01c fdf0 bl 2c630 + fa50: 4895 ldr r0, [pc, #596] ; (fca8 ) + fa52: f01a fa85 bl 29f60 + prevTime = 0; + fa56: 2300 movs r3, #0 + return BMC_OFF_LED_EVENT; + fa58: 4698 mov r8, r3 + fa5a: f8c5 31fc str.w r3, [r5, #508] ; 0x1fc + } + fa5e: f7fb bff6 b.w ba4e + if(newValue>max){ + fa62: 2b07 cmp r3, #7 + fa64: f77e aaf7 ble.w e056 + fa68: e562 b.n f530 + return bitRead(flags, bit); + fa6a: f505 5540 add.w r5, r5, #12288 ; 0x3000 + fa6e: f895 37bd ldrb.w r3, [r5, #1981] ; 0x7bd + if(isSyncEnabled()){ + fa72: 07de lsls r6, r3, #31 + fa74: f57b afe9 bpl.w ba4a + num += in_range / 2; + fa78: 6afc ldr r4, [r7, #44] ; 0x2c + fa7a: 233f movs r3, #63 ; 0x3f + fa7c: 2164 movs r1, #100 ; 0x64 + long result = num / in_range + out_min; + fa7e: 207f movs r0, #127 ; 0x7f + midi.sendControlChange(port, channel, t_control, t_value); + fa80: f895 27c8 ldrb.w r2, [r5, #1992] ; 0x7c8 + num += in_range / 2; + fa84: fb11 3104 smlabb r1, r1, r4, r3 + fa88: 2401 movs r4, #1 + fa8a: 236c movs r3, #108 ; 0x6c + long result = num / in_range + out_min; + fa8c: fbb1 f1f0 udiv r1, r1, r0 + fa90: b2c8 uxtb r0, r1 + fa92: f895 17c9 ldrb.w r1, [r5, #1993] ; 0x7c9 + fa96: 9402 str r4, [sp, #8] + fa98: 2400 movs r4, #0 + fa9a: 9000 str r0, [sp, #0] + fa9c: 9401 str r4, [sp, #4] + fa9e: 46a0 mov r8, r4 + faa0: f8d5 07b0 ldr.w r0, [r5, #1968] ; 0x7b0 + faa4: f013 fcfc bl 234a0 + faa8: f7fb bfd1 b.w ba4e + } else if(data.byteA >= BMC_DAW_CMD_FADER_TOUCH){ + faac: 69fb ldr r3, [r7, #28] + faae: 2b42 cmp r3, #66 ; 0x42 + fab0: f240 81c2 bls.w fe38 + ch = (ch >= 8) ? controller.getSelectedChannel() : ch; + fab4: 69bb ldr r3, [r7, #24] + return selected; + fab6: f505 5940 add.w r9, r5, #12288 ; 0x3000 + faba: 2b07 cmp r3, #7 + fabc: f241 811e bls.w 10cfc + fac0: f899 3321 ldrb.w r3, [r9, #801] ; 0x321 + return chAllowed(n) ? channel[chCheck(n)].getVolume() : 0; + fac4: 2b08 cmp r3, #8 + return selected; + fac6: 60fb str r3, [r7, #12] + fac8: bf88 it hi + faca: f04f 0837 movhi.w r8, #55 ; 0x37 + return chAllowed(n) ? channel[chCheck(n)].getVolume() : 0; + face: f241 8115 bls.w 10cfc + return map(controller.getVolume(ch), -8192, 6651, 0, 100); + fad2: fa5f f888 uxtb.w r8, r8 + return sync.daw.getFaderValuePercentage(data.byteB); + fad6: f7fb bfba b.w ba4e + return sync.fas.isBlockEngaged(data.byteB) ? 100 : 0; + fada: f243 3074 movw r0, #13172 ; 0x3374 + fade: 69b9 ldr r1, [r7, #24] + fae0: 4428 add r0, r5 + fae2: f7f9 fb0b bl 90fc + fae6: 2800 cmp r0, #0 + fae8: f43b afaf beq.w ba4a + return midi.getRealTimeBlockInput() ? 100 : 0; + faec: f04f 0864 mov.w r8, #100 ; 0x64 + faf0: f7fb bfad b.w ba4e + s++; + faf4: 3301 adds r3, #1 + faf6: b2db uxtb r3, r3 + faf8: f7ff bbd1 b.w f29e + if(s == 0){ + fafc: b13b cbz r3, fb0e + s--; + fafe: 3b01 subs r3, #1 + fb00: b2db uxtb r3, r3 + fb02: f7ff bbcc b.w f29e + if(data.scrollDirection()){ + fb06: f894 209e ldrb.w r2, [r4, #158] ; 0x9e + fb0a: 2a00 cmp r2, #0 + fb0c: d1f2 bne.n faf4 + s = 124; + fb0e: 237c movs r3, #124 ; 0x7c + fb10: f7ff bbc5 b.w f29e + strcpy(str, sceneName[scene]); + fb14: fb16 b108 smlabb r1, r6, r8, fp + fb18: f107 0096 add.w r0, r7, #150 ; 0x96 + fb1c: 4451 add r1, sl + fb1e: f01e ff9d bl 2ea5c + fb22: f7ff b8fe b.w ed22 + fb26: f8da 17fc ldr.w r1, [sl, #2044] ; 0x7fc + data.highlight = data.valueSelected == data.value; + fb2a: fab2 f282 clz r2, r2 + strcpy(buff, "Not Connected"); + fb2e: 4b62 ldr r3, [pc, #392] ; (fcb8 ) + fb30: 6809 ldr r1, [r1, #0] + fb32: 0952 lsrs r2, r2, #5 + fb34: f3c1 2140 ubfx r1, r1, #9, #1 + fb38: 7522 strb r2, [r4, #20] + fb3a: 7621 strb r1, [r4, #24] + fb3c: cb07 ldmia r3!, {r0, r1, r2} + fb3e: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + fb42: f833 190c ldrh.w r1, [r3], #-12 + fb46: f8c7 006d str.w r0, [r7, #109] ; 0x6d + fb4a: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + fb4e: f8a7 1079 strh.w r1, [r7, #121] ; 0x79 + fb52: f8a7 10a2 strh.w r1, [r7, #162] ; 0xa2 + fb56: cb07 ldmia r3!, {r0, r1, r2} + fb58: f8c7 0096 str.w r0, [r7, #150] ; 0x96 + fb5c: f8c7 109a str.w r1, [r7, #154] ; 0x9a + fb60: f8c7 209e str.w r2, [r7, #158] ; 0x9e + } + fb64: f7ff b8dd b.w ed22 + if(data.scrollDirection()){ + fb68: f894 209e ldrb.w r2, [r4, #158] ; 0x9e + fb6c: 2a00 cmp r2, #0 + fb6e: f001 8017 beq.w 10ba0 + s++; + fb72: 3301 adds r3, #1 + fb74: b2db uxtb r3, r3 + fb76: e4f2 b.n f55e + fb78: f505 5540 add.w r5, r5, #12288 ; 0x3000 + fb7c: f895 8b00 ldrb.w r8, [r5, #2816] ; 0xb00 + fb80: f008 0801 and.w r8, r8, #1 + return auxJacks[data.byteA].isPotMode(); + fb84: f7fb bf63 b.w ba4e + fb88: 69fa ldr r2, [r7, #28] + fb8a: 3a0a subs r2, #10 + fb8c: 2a04 cmp r2, #4 + fb8e: f63c a813 bhi.w bbb8 + fb92: e8df f012 tbh [pc, r2, lsl #1] + fb96: 07f8 .short 0x07f8 + fb98: 081701e8 .word 0x081701e8 + fb9c: 07d5080e .word 0x07d5080e enabled = true; - f912: f88a 3968 strb.w r3, [sl, #2408] ; 0x968 + fba0: f88a 396c strb.w r3, [sl, #2412] ; 0x96c timeout = micros(); - f916: f01a fe2d bl 2a574 + fba4: f01a fd5a bl 2a65c freeFormPhaseOffset = 0; - f91a: f60a 1388 addw r3, sl, #2440 ; 0x988 - f91e: 2200 movs r2, #0 + fba8: f60a 138c addw r3, sl, #2444 ; 0x98c + fbac: 2200 movs r2, #0 timeout = micros(); - f920: f8ca 0980 str.w r0, [sl, #2432] ; 0x980 + fbae: f8ca 0984 str.w r0, [sl, #2436] ; 0x984 freeFormPhaseOffset = 0; - f924: 601a str r2, [r3, #0] + fbb2: 601a str r2, [r3, #0] } - f926: f7fc b827 b.w b978 - return 0; - f92a: 4606 mov r6, r0 - f92c: e688 b.n f640 - uint8_t value = scroller.scroll(amount, t_direction, t_wrap, bank, t_min, t_max); - f92e: f505 5940 add.w r9, r5, #12288 ; 0x3000 - t_max = BMC_MAX_PRESET_BANKS-1; - f932: 2107 movs r1, #7 - t_min = 0; - f934: 2600 movs r6, #0 - uint8_t value = scroller.scroll(amount, t_direction, t_wrap, bank, t_min, t_max); - f936: f8d9 31f8 ldr.w r3, [r9, #504] ; 0x1f8 - f93a: 781b ldrb r3, [r3, #0] - t_min = 0; - f93c: 4632 mov r2, r6 - f93e: f7fd b941 b.w cbc4 - if(newValue>max){ - f942: 42a1 cmp r1, r4 - f944: f77e aad1 ble.w deea - return max; - f948: 4623 mov r3, r4 - f94a: f7fe bad1 b.w def0 - f94e: f505 5540 add.w r5, r5, #12288 ; 0x3000 - f952: f895 8ae0 ldrb.w r8, [r5, #2784] ; 0xae0 - f956: f008 0801 and.w r8, r8, #1 - return auxJacks[data.byteA].isPotMode(); - f95a: f7fc b80d b.w b978 - bitWrite(flags, bit, value); - f95e: f023 0304 bic.w r3, r3, #4 - f962: f88a 3acc strb.w r3, [sl, #2764] ; 0xacc - } - f966: f7fc b807 b.w b978 - f96a: bf00 nop - f96c: 20001574 .word 0x20001574 - f970: 200021f8 .word 0x200021f8 - uint16_t value = scroller.scroll(amount, t_direction, t_wrap, presetIndex, t_min, t_max); - f974: f505 5340 add.w r3, r5, #12288 ; 0x3000 - presets.scrollPresetList(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), 0, 0); - f978: f243 10ec movw r0, #12780 ; 0x31ec - if(direction==BMC_SCROLL_UP){ - f97c: f894 109e ldrb.w r1, [r4, #158] ; 0x9e - f980: f8d3 31f4 ldr.w r3, [r3, #500] ; 0x1f4 - f984: 4428 add r0, r5 - return scroll.wrap; - f986: f894 209f ldrb.w r2, [r4, #159] ; 0x9f - f98a: 881b ldrh r3, [r3, #0] - f98c: 2900 cmp r1, #0 - f98e: f000 81bc beq.w fd0a - value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - f992: 2a00 cmp r2, #0 - f994: f000 8776 beq.w 10884 - return (newValue > max || newValue < min) ? min : newValue; - f998: 2b3e cmp r3, #62 ; 0x3e - f99a: f240 81de bls.w fd5a - f99e: 2100 movs r1, #0 - set(t_bank, t_preset, forced); - f9a0: 2300 movs r3, #0 - f9a2: f001 0207 and.w r2, r1, #7 - f9a6: f3c1 01c4 ubfx r1, r1, #3, #5 + fbb4: f7fb bf4b b.w ba4e + value = constrain(value, 1, 11); + fbb8: 2301 movs r3, #1 + fbba: e42e b.n f41a + long num = (x - in_min) * out_range; + fbbc: f1a1 0b0a sub.w fp, r1, #10 + midi.sendPitchBend(e.ports, channel, newPitch); + fbc0: 697b ldr r3, [r7, #20] + long result = num / in_range + out_min; + fbc2: 2675 movs r6, #117 ; 0x75 + fbc4: 2400 movs r4, #0 + long num = (x - in_min) * out_range; + fbc6: ebab 3b4b sub.w fp, fp, fp, lsl #13 + fbca: f893 1033 ldrb.w r1, [r3, #51] ; 0x33 + fbce: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + fbd2: 9400 str r4, [sp, #0] + num -= in_range / 2; + fbd4: f1ab 033a sub.w r3, fp, #58 ; 0x3a return BMC_OFF_LED_EVENT; - f9aa: 4698 mov r8, r3 - f9ac: f7f0 fe08 bl 5c0 - return value; - f9b0: f7fb bfe2 b.w b978 - return bitRead(flags, bit); - f9b4: f505 5540 add.w r5, r5, #12288 ; 0x3000 - f9b8: f895 379d ldrb.w r3, [r5, #1949] ; 0x79d - if(isSyncEnabled()){ - f9bc: 07de lsls r6, r3, #31 - f9be: f57b afd9 bpl.w b974 - num += in_range / 2; - f9c2: 6afc ldr r4, [r7, #44] ; 0x2c - f9c4: 233f movs r3, #63 ; 0x3f - f9c6: 2164 movs r1, #100 ; 0x64 + fbd8: 46a0 mov r8, r4 long result = num / in_range + out_min; - f9c8: 207f movs r0, #127 ; 0x7f - midi.sendControlChange(port, channel, t_control, t_value); - f9ca: f895 27a8 ldrb.w r2, [r5, #1960] ; 0x7a8 + fbda: fb93 f3f6 sdiv r3, r3, r6 + fbde: 3b01 subs r3, #1 + midi.sendPitchBend(e.ports, channel, newPitch); + fbe0: b21b sxth r3, r3 + fbe2: f014 f8c5 bl 23d70 + fbe6: f7fb bf32 b.w ba4e + return 0; + fbea: 4613 mov r3, r2 + fbec: f7ff b82e b.w ec4c + long num = (x - in_min) * out_range; + fbf0: f1a1 030a sub.w r3, r1, #10 + fbf4: f641 70fe movw r0, #8190 ; 0x1ffe + long result = num / in_range + out_min; + fbf8: 2475 movs r4, #117 ; 0x75 + midi.sendPitchBend(e.ports, channel, newPitch); + fbfa: 6979 ldr r1, [r7, #20] + long num = (x - in_min) * out_range; + fbfc: fb00 f303 mul.w r3, r0, r3 + fc00: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + fc04: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 num += in_range / 2; - f9ce: fb11 3104 smlabb r1, r1, r4, r3 - f9d2: 2401 movs r4, #1 - f9d4: 236c movs r3, #108 ; 0x6c + fc08: 333a adds r3, #58 ; 0x3a long result = num / in_range + out_min; - f9d6: fbb1 f1f0 udiv r1, r1, r0 - f9da: b2c8 uxtb r0, r1 - f9dc: f895 17a9 ldrb.w r1, [r5, #1961] ; 0x7a9 - f9e0: 9402 str r4, [sp, #8] - f9e2: 2400 movs r4, #0 - f9e4: 9000 str r0, [sp, #0] - f9e6: 9401 str r4, [sp, #4] - f9e8: 46a0 mov r8, r4 - f9ea: f8d5 0790 ldr.w r0, [r5, #1936] ; 0x790 - f9ee: f013 fcf5 bl 233dc - f9f2: f7fb bfc1 b.w b978 - value = constrain(value, 1, 11); - f9f6: 2301 movs r3, #1 - f9f8: e48d b.n f316 + fc0a: fbb3 f3f4 udiv r3, r3, r4 + fc0e: 2400 movs r4, #0 + fc10: 3301 adds r3, #1 + fc12: 9400 str r4, [sp, #0] + fc14: b21b sxth r3, r3 + return BMC_OFF_LED_EVENT; + fc16: 46a0 mov r8, r4 + midi.sendPitchBend(e.ports, channel, newPitch); + fc18: f014 f8aa bl 23d70 + fc1c: f7fb bf17 b.w ba4e + fc20: 428b cmp r3, r1 + fc22: f77c afdb ble.w cbdc + return max; + fc26: 460a mov r2, r1 + value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); + fc28: 4611 mov r1, r2 + fc2a: e004 b.n fc36 + long newValue = (value-amount); + fc2c: 3b01 subs r3, #1 + value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); + fc2e: b15c cbz r4, fc48 + return (newValue < min) ? max : newValue; + fc30: 4293 cmp r3, r2 + fc32: db00 blt.n fc36 return (newValue < min) ? min : newValue; - f9fa: 4293 cmp r3, r2 - f9fc: bfb8 it lt - f9fe: 4613 movlt r3, r2 - fa00: f7fe ba43 b.w de8a - fa04: 2117 movs r1, #23 - fa06: 48cc ldr r0, [pc, #816] ; (fd38 ) - fa08: f01c fd9e bl 2c548 - fa0c: 48cb ldr r0, [pc, #812] ; (fd3c ) - fa0e: f01a fa31 bl 29e74 - prevTime = 0; - fa12: 2300 movs r3, #0 - fa14: 4698 mov r8, r3 - fa16: f8c5 31dc str.w r3, [r5, #476] ; 0x1dc - } - fa1a: f7fb bfad b.w b978 + fc34: b2d9 uxtb r1, r3 + set(value, preset); + fc36: f8d9 221c ldr.w r2, [r9, #540] ; 0x21c + fc3a: 2300 movs r3, #0 + fc3c: 7812 ldrb r2, [r2, #0] + return BMC_OFF_LED_EVENT; + fc3e: 4698 mov r8, r3 + fc40: f7f0 fcbe bl 5c0 + return value; + fc44: f7fb bf03 b.w ba4e + fc48: 4293 cmp r3, r2 + fc4a: bfb8 it lt + fc4c: 4613 movlt r3, r2 + fc4e: e7f1 b.n fc34 + fc50: f505 5540 add.w r5, r5, #12288 ; 0x3000 + fc54: f895 3b00 ldrb.w r3, [r5, #2816] ; 0xb00 + return auxJacks[data.byteA].isPotMode() ? 100 : 0; + fc58: 07dd lsls r5, r3, #31 + fc5a: f57b aef6 bpl.w ba4a + return midi.getRealTimeBlockInput() ? 100 : 0; + fc5e: f04f 0864 mov.w r8, #100 ; 0x64 + fc62: f7fb bef4 b.w ba4e if(newValue>max){ - fa1e: 4293 cmp r3, r2 - fa20: f77d a889 ble.w cb36 + fc66: 4293 cmp r3, r2 + fc68: f77d a819 ble.w cc9e return max; - fa24: 4690 mov r8, r2 - fa26: f7fd b88a b.w cb3e + fc6c: 4690 mov r8, r2 + fc6e: f7fd b81a b.w cca6 long newValue = (value-amount); - fa2a: 3b01 subs r3, #1 + fc72: 3b01 subs r3, #1 value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - fa2c: 2c00 cmp r4, #0 - fa2e: d076 beq.n fb1e + fc74: 2c00 cmp r4, #0 + fc76: f000 809f beq.w fdb8 return (newValue < min) ? max : newValue; - fa30: 4543 cmp r3, r8 - fa32: f6fd a885 blt.w cb40 + fc7a: 4543 cmp r3, r8 + fc7c: f6fd a814 blt.w cca8 return (newValue < min) ? min : newValue; - fa36: b2da uxtb r2, r3 - fa38: f7fd b882 b.w cb40 + fc80: b2da uxtb r2, r3 + fc82: f7fd b811 b.w cca8 + min = lowest; + fc86: 2400 movs r4, #0 + fc88: f7fe b946 b.w df18 + uint8_t value = scroller.scroll(amount, t_direction, t_wrap, preset, t_min, t_max); + fc8c: f505 5940 add.w r9, r5, #12288 ; 0x3000 + t_max = BMC_MAX_PRESETS_PER_BANK-1; + fc90: 2207 movs r2, #7 + t_min = 0; + fc92: f04f 0a00 mov.w sl, #0 + uint8_t value = scroller.scroll(amount, t_direction, t_wrap, preset, t_min, t_max); + fc96: f8d9 321c ldr.w r3, [r9, #540] ; 0x21c + fc9a: 781b ldrb r3, [r3, #0] + t_min = 0; + fc9c: 46d0 mov r8, sl + fc9e: f7fc bff4 b.w cc8a + fca2: bf00 nop + fca4: 2000298c .word 0x2000298c + fca8: 20004c68 .word 0x20004c68 + fcac: 2000bb08 .word 0x2000bb08 + fcb0: 200021f8 .word 0x200021f8 + fcb4: 20001f3c .word 0x20001f3c + fcb8: 200015b8 .word 0x200015b8 + return 0; + fcbc: 4606 mov r6, r0 + fcbe: e4a8 b.n f612 __oledMuxSelect(d.index); - fa3c: fa5f f88b uxtb.w r8, fp - fa40: 4640 mov r0, r8 - fa42: f7fa fc6d bl a320 + fcc0: fa5f f88b uxtb.w r8, fp + fcc4: 4640 mov r0, r8 + fcc6: f7fa fafd bl a2c4 // ***************************************************************************** // ********************************* For OLED ********************************** // ***************************************************************************** #if BMC_MAX_OLED > 0 bool renderChannelBlockOled(BMC_OLED& oled, BMCDataContainer d, uint8_t index){ if(d.byteB > 8){ - fa46: 69ba ldr r2, [r7, #24] - fa48: 2a08 cmp r2, #8 - fa4a: f63f a990 bhi.w ed6e + fcca: 69ba ldr r2, [r7, #24] + fccc: 2a08 cmp r2, #8 + fcce: f63f a8e7 bhi.w eea0 return false; } BMC_SSD1306& display = oled.display; bool reset = false; uint8_t n = d.byteB; if(chInfo[n].index < 0){ - fa4e: 2322 movs r3, #34 ; 0x22 - fa50: f505 5940 add.w r9, r5, #12288 ; 0x3000 - fa54: fb02 f303 mul.w r3, r2, r3 - fa58: eb09 0203 add.w r2, r9, r3 - fa5c: f992 1b74 ldrsb.w r1, [r2, #2932] ; 0xb74 - fa60: 2900 cmp r1, #0 - fa62: f2c0 8385 blt.w 10170 + fcd2: 2322 movs r3, #34 ; 0x22 + fcd4: f505 5940 add.w r9, r5, #12288 ; 0x3000 + fcd8: fb02 f303 mul.w r3, r2, r3 + fcdc: eb09 0203 add.w r2, r9, r3 + fce0: f992 1b94 ldrsb.w r1, [r2, #2964] ; 0xb94 + fce4: 2900 cmp r1, #0 + fce6: f2c0 82a7 blt.w 10238 bool reset = false; - fa66: 2300 movs r3, #0 - fa68: 61fb str r3, [r7, #28] + fcea: 2300 movs r3, #0 + fcec: 61fb str r3, [r7, #28] chInfo[n].reset(); chInfo[n].index = index; chInfo[n].type = BMC_DEVICE_ID_OLED; } if(chInfo[n].index != index || !chInfo[n].isOled()){ - fa6a: 2322 movs r3, #34 ; 0x22 - fa6c: 69b9 ldr r1, [r7, #24] - fa6e: fb03 9301 mla r3, r3, r1, r9 - fa72: f993 2b74 ldrsb.w r2, [r3, #2932] ; 0xb74 - fa76: 4542 cmp r2, r8 - fa78: f47f a979 bne.w ed6e - fa7c: f893 3b94 ldrb.w r3, [r3, #2964] ; 0xb94 - fa80: 2b16 cmp r3, #22 - fa82: f47f a974 bne.w ed6e + fcee: 2322 movs r3, #34 ; 0x22 + fcf0: 69b9 ldr r1, [r7, #24] + fcf2: fb03 9301 mla r3, r3, r1, r9 + fcf6: f993 2b94 ldrsb.w r2, [r3, #2964] ; 0xb94 + fcfa: 4542 cmp r2, r8 + fcfc: f47f a8d0 bne.w eea0 + fd00: f893 3bb4 ldrb.w r3, [r3, #2996] ; 0xbb4 + fd04: 2b16 cmp r3, #22 + fd06: f47f a8cb bne.w eea0 return false; } bool show = false; uint8_t channel = n>=8 ? sync.daw.controller.getSelectedChannel() : n; - fa86: 2908 cmp r1, #8 - fa88: f8d9 2b70 ldr.w r2, [r9, #2928] ; 0xb70 - fa8c: f000 82ee beq.w 1006c + fd0a: 2908 cmp r1, #8 + fd0c: f8d9 2b90 ldr.w r2, [r9, #2960] ; 0xb90 + fd10: f000 822e beq.w 10170 return vPot; - fa90: 68fb ldr r3, [r7, #12] - fa92: eb02 03c3 add.w r3, r2, r3, lsl #3 - fa96: f893 10f0 ldrb.w r1, [r3, #240] ; 0xf0 + fd14: 68fb ldr r3, [r7, #12] + fd16: eb02 03c3 add.w r3, r2, r3, lsl #3 + fd1a: f893 10f0 ldrb.w r1, [r3, #240] ; 0xf0 return meter; - fa9a: f893 30f2 ldrb.w r3, [r3, #242] ; 0xf2 + fd1e: f893 30f2 ldrb.w r3, [r3, #242] ; 0xf2 return vPot; - fa9e: 6239 str r1, [r7, #32] + fd22: 6239 str r1, [r7, #32] return meter; - faa0: 627b str r3, [r7, #36] ; 0x24 + fd24: 627b str r3, [r7, #36] ; 0x24 for(uint8_t i = 0, e = (n * 7) ; i < 7 ; i++, e++){ - faa2: 68fb ldr r3, [r7, #12] + fd26: 68fb ldr r3, [r7, #12] bmcStoreName t; - faa4: 2100 movs r1, #0 - faa6: f107 08f8 add.w r8, r7, #248 ; 0xf8 + fd28: 2100 movs r1, #0 + fd2a: f107 08f8 add.w r8, r7, #248 ; 0xf8 for(uint8_t i = 0, e = (n * 7) ; i < 7 ; i++, e++){ - faaa: ebc3 03c3 rsb r3, r3, r3, lsl #3 + fd2e: ebc3 03c3 rsb r3, r3, r3, lsl #3 bmcStoreName t; - faae: f8c8 1000 str.w r1, [r8] - fab2: f8c7 1104 str.w r1, [r7, #260] ; 0x104 + fd32: f8c8 1000 str.w r1, [r8] + fd36: f8c7 1104 str.w r1, [r7, #260] ; 0x104 for(uint8_t i = 0, e = (n * 7) ; i < 7 ; i++, e++){ - fab6: b2db uxtb r3, r3 + fd3a: b2db uxtb r3, r3 bmcStoreName t; - fab8: f887 1108 strb.w r1, [r7, #264] ; 0x108 + fd3c: f887 1108 strb.w r1, [r7, #264] ; 0x108 for(uint8_t i = 0, e = (n * 7) ; i < 7 ; i++, e++){ - fabc: 1dd8 adds r0, r3, #7 + fd40: 1dd8 adds r0, r3, #7 bmcStoreName t; - fabe: e9c7 113f strd r1, r1, [r7, #252] ; 0xfc - fac2: b2c0 uxtb r0, r0 - fac4: 4641 mov r1, r8 + fd42: e9c7 113f strd r1, r1, [r7, #252] ; 0xfc + fd46: b2c0 uxtb r0, r0 + fd48: 4641 mov r1, r8 t.name[i] = (char) lcd[0][e]; - fac6: 18d4 adds r4, r2, r3 + fd4a: 18d4 adds r4, r2, r3 for(uint8_t i = 0, e = (n * 7) ; i < 7 ; i++, e++){ - fac8: 3301 adds r3, #1 - faca: b2db uxtb r3, r3 + fd4c: 3301 adds r3, #1 + fd4e: b2db uxtb r3, r3 t.name[i] = (char) lcd[0][e]; - facc: f894 4068 ldrb.w r4, [r4, #104] ; 0x68 + fd50: f894 4068 ldrb.w r4, [r4, #104] ; 0x68 for(uint8_t i = 0, e = (n * 7) ; i < 7 ; i++, e++){ - fad0: 4283 cmp r3, r0 + fd54: 4283 cmp r3, r0 t.name[i] = (char) lcd[0][e]; - fad2: f801 4b01 strb.w r4, [r1], #1 + fd56: f801 4b01 strb.w r4, [r1], #1 for(uint8_t i = 0, e = (n * 7) ; i < 7 ; i++, e++){ - fad6: d1f6 bne.n fac6 + fd5a: d1f6 bne.n fd4a bmcStoreName t; - fad8: 2300 movs r3, #0 - fada: e9c7 3367 strd r3, r3, [r7, #412] ; 0x19c - fade: e9c7 3369 strd r3, r3, [r7, #420] ; 0x1a4 - fae2: f887 31ac strb.w r3, [r7, #428] ; 0x1ac + fd5c: 2300 movs r3, #0 + fd5e: e9c7 3367 strd r3, r3, [r7, #412] ; 0x19c + fd62: e9c7 3369 strd r3, r3, [r7, #420] ; 0x1a4 + fd66: f887 31ac strb.w r3, [r7, #428] ; 0x1ac } else if(n==8){ - fae6: 68fb ldr r3, [r7, #12] - fae8: 2b08 cmp r3, #8 - faea: d101 bne.n faf0 + fd6a: 68fb ldr r3, [r7, #12] + fd6c: 2b08 cmp r3, #8 + fd6e: d101 bne.n fd74 return selected; - faec: f892 30e1 ldrb.w r3, [r2, #225] ; 0xe1 + fd70: f892 30e1 ldrb.w r3, [r2, #225] ; 0xe1 for(uint8_t i = 0, e = (n * 7) ; i < 7 ; i++, e++){ - faf0: ebc3 03c3 rsb r3, r3, r3, lsl #3 - faf4: f507 70ce add.w r0, r7, #412 ; 0x19c - faf8: b2db uxtb r3, r3 - fafa: ee09 0a10 vmov s18, r0 - fafe: 1dd9 adds r1, r3, #7 - fb00: b2c9 uxtb r1, r1 + fd74: ebc3 03c3 rsb r3, r3, r3, lsl #3 + fd78: f507 70ce add.w r0, r7, #412 ; 0x19c + fd7c: b2db uxtb r3, r3 + fd7e: ee09 0a10 vmov s18, r0 + fd82: 1dd9 adds r1, r3, #7 + fd84: b2c9 uxtb r1, r1 t.name[i] = (char) lcd[1][e]; - fb02: 18d4 adds r4, r2, r3 + fd86: 18d4 adds r4, r2, r3 for(uint8_t i = 0, e = (n * 7) ; i < 7 ; i++, e++){ - fb04: 3301 adds r3, #1 - fb06: b2db uxtb r3, r3 + fd88: 3301 adds r3, #1 + fd8a: b2db uxtb r3, r3 t.name[i] = (char) lcd[1][e]; - fb08: f894 40a1 ldrb.w r4, [r4, #161] ; 0xa1 + fd8c: f894 40a1 ldrb.w r4, [r4, #161] ; 0xa1 for(uint8_t i = 0, e = (n * 7) ; i < 7 ; i++, e++){ - fb0c: 428b cmp r3, r1 + fd90: 428b cmp r3, r1 t.name[i] = (char) lcd[1][e]; - fb0e: f800 4b01 strb.w r4, [r0], #1 + fd92: f800 4b01 strb.w r4, [r0], #1 for(uint8_t i = 0, e = (n * 7) ; i < 7 ; i++, e++){ - fb12: d1f6 bne.n fb02 - fb14: e2c6 b.n 100a4 - if(newValue>max){ - fb16: 2b07 cmp r3, #7 - fb18: f77e a9b5 ble.w de86 - fb1c: e434 b.n f388 + fd96: d1f6 bne.n fd86 + fd98: e207 b.n 101aa return (newValue < min) ? min : newValue; - fb1e: 4543 cmp r3, r8 - fb20: bfb8 it lt - fb22: 4643 movlt r3, r8 - fb24: e787 b.n fa36 - if(s == 0){ - fb26: b143 cbz r3, fb3a - s--; - fb28: 3b01 subs r3, #1 - fb2a: b2db uxtb r3, r3 - fb2c: f7ff bb09 b.w f142 - if(data.scrollDirection()){ - fb30: f894 209e ldrb.w r2, [r4, #158] ; 0x9e - fb34: 2a00 cmp r2, #0 - fb36: f47f aece bne.w f8d6 - s = 124; - fb3a: 237c movs r3, #124 ; 0x7c - fb3c: f7ff bb01 b.w f142 - } else if(data.byteA >= BMC_DAW_CMD_FADER_TOUCH){ - fb40: 69fb ldr r3, [r7, #28] - fb42: 2b42 cmp r3, #66 ; 0x42 - fb44: d915 bls.n fb72 - ch = (ch >= 8) ? controller.getSelectedChannel() : ch; - fb46: 69bb ldr r3, [r7, #24] - fb48: f505 5940 add.w r9, r5, #12288 ; 0x3000 - fb4c: 2b07 cmp r3, #7 - fb4e: f240 8122 bls.w fd96 - fb52: f899 3301 ldrb.w r3, [r9, #769] ; 0x301 - return chAllowed(n) ? channel[chCheck(n)].getVolume() : 0; - fb56: 2b08 cmp r3, #8 - return selected; - fb58: 60fb str r3, [r7, #12] - fb5a: bf88 it hi - fb5c: f04f 0837 movhi.w r8, #55 ; 0x37 - return chAllowed(n) ? channel[chCheck(n)].getVolume() : 0; - fb60: f240 8119 bls.w fd96 - return map(controller.getVolume(ch), -8192, 6651, 0, 100); - fb64: fa5f f888 uxtb.w r8, r8 - return sync.daw.getFaderValuePercentage(data.byteB); - fb68: f7fb bf06 b.w b978 - min = lowest; - fb6c: 2400 movs r4, #0 - fb6e: f7fe b9b1 b.w ded4 - return sync.daw.getLedState(data.byteA, data.byteB)>0 ? 100 : 0; - fb72: f243 2030 movw r0, #12848 ; 0x3230 - fb76: e9d7 2106 ldrd r2, r1, [r7, #24] - fb7a: 4428 add r0, r5 - fb7c: f7f8 fc32 bl 83e4 - fb80: 2800 cmp r0, #0 - fb82: f43b aef7 beq.w b974 - return midi.getRealTimeBlockInput() ? 100 : 0; - fb86: f04f 0864 mov.w r8, #100 ; 0x64 - fb8a: f7fb bef5 b.w b978 - uint8_t value = scroller.scroll(amount, t_direction, t_wrap, preset, t_min, t_max); - fb8e: f505 5940 add.w r9, r5, #12288 ; 0x3000 - t_max = BMC_MAX_PRESETS_PER_BANK-1; - fb92: 2207 movs r2, #7 + fd9a: 4293 cmp r3, r2 + fd9c: bfb8 it lt + fd9e: 4613 movlt r3, r2 + fda0: f7fe b95b b.w e05a + uint8_t value = scroller.scroll(amount, t_direction, t_wrap, bank, t_min, t_max); + fda4: f505 5940 add.w r9, r5, #12288 ; 0x3000 + t_max = BMC_MAX_PRESET_BANKS-1; + fda8: 2107 movs r1, #7 t_min = 0; - fb94: f04f 0a00 mov.w sl, #0 - uint8_t value = scroller.scroll(amount, t_direction, t_wrap, preset, t_min, t_max); - fb98: f8d9 31fc ldr.w r3, [r9, #508] ; 0x1fc - fb9c: 781b ldrb r3, [r3, #0] + fdaa: 2600 movs r6, #0 + uint8_t value = scroller.scroll(amount, t_direction, t_wrap, bank, t_min, t_max); + fdac: f8d9 3218 ldr.w r3, [r9, #536] ; 0x218 + fdb0: 781b ldrb r3, [r3, #0] t_min = 0; - fb9e: 46d0 mov r8, sl - fba0: f7fc bfbf b.w cb22 - long num = (x - in_min) * out_range; - fba4: f1a1 030a sub.w r3, r1, #10 - fba8: f641 70fe movw r0, #8190 ; 0x1ffe - long result = num / in_range + out_min; - fbac: 2475 movs r4, #117 ; 0x75 - midi.sendPitchBend(e.ports, channel, newPitch); - fbae: 6979 ldr r1, [r7, #20] - long num = (x - in_min) * out_range; - fbb0: fb00 f303 mul.w r3, r0, r3 - fbb4: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - fbb8: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 - num += in_range / 2; - fbbc: 333a adds r3, #58 ; 0x3a - long result = num / in_range + out_min; - fbbe: fbb3 f3f4 udiv r3, r3, r4 - fbc2: 2400 movs r4, #0 - fbc4: 3301 adds r3, #1 - fbc6: 9400 str r4, [sp, #0] - fbc8: b21b sxth r3, r3 - return BMC_OFF_LED_EVENT; - fbca: 46a0 mov r8, r4 - midi.sendPitchBend(e.ports, channel, newPitch); - fbcc: f014 f86a bl 23ca4 - fbd0: f7fb bed2 b.w b978 + fdb2: 4632 mov r2, r6 + fdb4: f7fc bf08 b.w cbc8 + fdb8: 4543 cmp r3, r8 + fdba: bfb8 it lt + fdbc: 4643 movlt r3, r8 + fdbe: e75f b.n fc80 if(newValue>max){ - fbd4: 42b0 cmp r0, r6 - fbd6: f77f aa67 ble.w f0a8 + fdc0: 42a1 cmp r1, r4 + fdc2: f77e a8b4 ble.w df2e return max; - fbda: 4631 mov r1, r6 + fdc6: 4623 mov r3, r4 + fdc8: f7fe b8b4 b.w df34 + midi.sendProgramChange(device.port, device.channel, program); + fdcc: f899 2392 ldrb.w r2, [r9, #914] ; 0x392 + fdd0: f004 037f and.w r3, r4, #127 ; 0x7f + fdd4: f899 1391 ldrb.w r1, [r9, #913] ; 0x391 + fdd8: 9500 str r5, [sp, #0] + fdda: f8d9 0374 ldr.w r0, [r9, #884] ; 0x374 + fdde: f013 f9e9 bl 231b4 + fde2: f7fe b8bf b.w df64 + uint16_t value = scroller.scroll(amount, t_direction, t_wrap, presetIndex, t_min, t_max); + fde6: f505 5340 add.w r3, r5, #12288 ; 0x3000 + presets.scrollPresetList(data.scrollDirection(), data.scrollWrap(), data.scrollAmount(), 0, 0); + fdea: f243 200c movw r0, #12812 ; 0x320c + if(direction==BMC_SCROLL_UP){ + fdee: f894 109e ldrb.w r1, [r4, #158] ; 0x9e + fdf2: f8d3 3214 ldr.w r3, [r3, #532] ; 0x214 + fdf6: 4428 add r0, r5 + return scroll.wrap; + fdf8: f894 209f ldrb.w r2, [r4, #159] ; 0x9f + fdfc: 881b ldrh r3, [r3, #0] + fdfe: b1b1 cbz r1, fe2e value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - fbdc: 460e mov r6, r1 - fbde: f7fe bb9c b.w e31a - value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - fbe2: 2a00 cmp r2, #0 - fbe4: f000 808a beq.w fcfc + fe00: 2a00 cmp r2, #0 + fe02: d03d beq.n fe80 + return (newValue > max || newValue < min) ? min : newValue; + fe04: 2b3e cmp r3, #62 ; 0x3e + fe06: f240 871b bls.w 10c40 + fe0a: 2100 movs r1, #0 + set(t_bank, t_preset, forced); + fe0c: 2300 movs r3, #0 + fe0e: f001 0207 and.w r2, r1, #7 + fe12: f3c1 01c4 ubfx r1, r1, #3, #5 + return BMC_OFF_LED_EVENT; + fe16: 4698 mov r8, r3 + fe18: f7f0 fbd2 bl 5c0 + return value; + fe1c: f7fb be17 b.w ba4e long newValue = (value-amount); - fbe8: 1ac0 subs r0, r0, r3 + fe20: 1e54 subs r4, r2, #1 + return (newValue < min) ? min : newValue; + fe22: 429c cmp r4, r3 + fe24: bfb8 it lt + fe26: 461c movlt r4, r3 + fe28: b2a4 uxth r4, r4 + fe2a: f7fe b884 b.w df36 + value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); + fe2e: b362 cbz r2, fe8a return (newValue < min) ? max : newValue; - fbea: 4288 cmp r0, r1 - fbec: f6fe ab95 blt.w e31a - fbf0: b2c6 uxtb r6, r0 - fbf2: f7fe bb92 b.w e31a - fbf6: 69fa ldr r2, [r7, #28] - fbf8: 3a0a subs r2, #10 - fbfa: 2a04 cmp r2, #4 - fbfc: f63b af79 bhi.w baf2 - fc00: e8df f012 tbh [pc, r2, lsl #1] - fc04: 0bf50b8a .word 0x0bf50b8a - fc08: 0bd30bdc .word 0x0bd30bdc - fc0c: 0bb4 .short 0x0bb4 - fc0e: f505 5540 add.w r5, r5, #12288 ; 0x3000 - fc12: f895 3ae0 ldrb.w r3, [r5, #2784] ; 0xae0 - return auxJacks[data.byteA].isPotMode() ? 100 : 0; - fc16: 07dd lsls r5, r3, #31 - fc18: f57b aeac bpl.w b974 - return midi.getRealTimeBlockInput() ? 100 : 0; - fc1c: f04f 0864 mov.w r8, #100 ; 0x64 - fc20: f7fb beaa b.w b978 - long num = (x - in_min) * out_range; - fc24: f1a1 0345 sub.w r3, r1, #69 ; 0x45 - fc28: f641 70fe movw r0, #8190 ; 0x1ffe - long result = num / in_range + out_min; - fc2c: 243a movs r4, #58 ; 0x3a - midi.sendPitchBend(e.ports, channel, newPitch); - fc2e: 6979 ldr r1, [r7, #20] - long num = (x - in_min) * out_range; - fc30: fb00 f303 mul.w r3, r0, r3 - fc34: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - fc38: 69bd ldr r5, [r7, #24] - num += in_range / 2; - fc3a: 331d adds r3, #29 - fc3c: f891 1033 ldrb.w r1, [r1, #51] ; 0x33 - fc40: 9500 str r5, [sp, #0] - return BMC_OFF_LED_EVENT; - fc42: 46a8 mov r8, r5 - long result = num / in_range + out_min; - fc44: fbb3 f3f4 udiv r3, r3, r4 - fc48: 3301 adds r3, #1 - midi.sendPitchBend(e.ports, channel, newPitch); - fc4a: b21b sxth r3, r3 - fc4c: f014 f82a bl 23ca4 - fc50: f7fb be92 b.w b978 - return 0; - fc54: 4613 mov r3, r2 - fc56: f7fe bf7b b.w eb50 - if(data.scrollDirection()){ - fc5a: f894 209e ldrb.w r2, [r4, #158] ; 0x9e - fc5e: 2a00 cmp r2, #0 - fc60: f000 8651 beq.w 10906 - s++; - fc64: 3301 adds r3, #1 - fc66: b2db uxtb r3, r3 - fc68: e42e b.n f4c8 - return sync.fas.isBlockEngaged(data.byteB) ? 100 : 0; - fc6a: f243 3054 movw r0, #13140 ; 0x3354 - fc6e: 69b9 ldr r1, [r7, #24] - fc70: 4428 add r0, r5 - fc72: f7f9 fa73 bl 915c - fc76: 2800 cmp r0, #0 - fc78: f43b ae7c beq.w b974 + fe30: b34b cbz r3, fe86 + fe32: 3b01 subs r3, #1 + fe34: b299 uxth r1, r3 + fe36: e7e9 b.n fe0c + return sync.daw.getLedState(data.byteA, data.byteB)>0 ? 100 : 0; + fe38: f243 2050 movw r0, #12880 ; 0x3250 + fe3c: e9d7 2106 ldrd r2, r1, [r7, #24] + fe40: 4428 add r0, r5 + fe42: f7f8 fa9f bl 8384 + fe46: 2800 cmp r0, #0 + fe48: f43b adff beq.w ba4a return midi.getRealTimeBlockInput() ? 100 : 0; - fc7c: f04f 0864 mov.w r8, #100 ; 0x64 - fc80: f7fb be7a b.w b978 - strcpy(str, sceneName[scene]); - fc84: fb16 b108 smlabb r1, r6, r8, fp - fc88: f107 0096 add.w r0, r7, #150 ; 0x96 - fc8c: 4451 add r1, sl - fc8e: f01e fe75 bl 2e97c - fc92: f7ff b9be b.w f012 - fc96: f8da 17fc ldr.w r1, [sl, #2044] ; 0x7fc - data.highlight = data.valueSelected == data.value; - fc9a: fab2 f282 clz r2, r2 - strcpy(buff, "Not Connected"); - fc9e: 4b28 ldr r3, [pc, #160] ; (fd40 ) - fca0: 6809 ldr r1, [r1, #0] - fca2: 0952 lsrs r2, r2, #5 - fca4: f3c1 2140 ubfx r1, r1, #9, #1 - fca8: 7522 strb r2, [r4, #20] - fcaa: 7621 strb r1, [r4, #24] - fcac: cb07 ldmia r3!, {r0, r1, r2} - fcae: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - fcb2: f833 190c ldrh.w r1, [r3], #-12 - fcb6: f8c7 006d str.w r0, [r7, #109] ; 0x6d - fcba: f8c7 2075 str.w r2, [r7, #117] ; 0x75 - fcbe: f8a7 1079 strh.w r1, [r7, #121] ; 0x79 - fcc2: f8a7 10a2 strh.w r1, [r7, #162] ; 0xa2 - fcc6: cb07 ldmia r3!, {r0, r1, r2} - fcc8: f8c7 0096 str.w r0, [r7, #150] ; 0x96 - fccc: f8c7 109a str.w r1, [r7, #154] ; 0x9a - fcd0: f8c7 209e str.w r2, [r7, #158] ; 0x9e - } - fcd4: f7ff b99d b.w f012 - sync.fas.tunerOn(); - fcd8: f7f9 fa5a bl 9190 - fcdc: f7fb be4c b.w b978 + fe4c: f04f 0864 mov.w r8, #100 ; 0x64 + fe50: f7fb bdfd b.w ba4e if(newValue>max){ - fce0: 428b cmp r3, r1 - fce2: f77c af79 ble.w cbd8 + fe54: 42b0 cmp r0, r6 + fe56: f77f ab17 ble.w f488 return max; - fce6: 460a mov r2, r1 - fce8: f7fc bf79 b.w cbde - long newValue = (value-amount); - fcec: 3b01 subs r3, #1 + fe5a: 4631 mov r1, r6 + value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); + fe5c: 460e mov r6, r1 + fe5e: f7fe ba6c b.w e33a value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - fcee: b384 cbz r4, fd52 + fe62: b132 cbz r2, fe72 + long newValue = (value-amount); + fe64: 1ac0 subs r0, r0, r3 return (newValue < min) ? max : newValue; - fcf0: 4293 cmp r3, r2 - fcf2: f6fc af75 blt.w cbe0 - return (newValue < min) ? min : newValue; - fcf6: b2d9 uxtb r1, r3 - fcf8: f7fc bf72 b.w cbe0 + fe66: 4288 cmp r0, r1 + fe68: f6fe aa67 blt.w e33a + fe6c: b2c6 uxtb r6, r0 + fe6e: f7fe ba64 b.w e33a long newValue = (value-amount); - fcfc: 1ac3 subs r3, r0, r3 + fe72: 1ac3 subs r3, r0, r3 return (newValue < min) ? min : newValue; - fcfe: 428b cmp r3, r1 - fd00: bfb8 it lt - fd02: 460b movlt r3, r1 - fd04: b2de uxtb r6, r3 - fd06: f7fe bb08 b.w e31a - value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - fd0a: 2a00 cmp r2, #0 - fd0c: f000 85c0 beq.w 10890 + fe74: 428b cmp r3, r1 + fe76: bfb8 it lt + fe78: 460b movlt r3, r1 + fe7a: b2de uxtb r6, r3 + fe7c: f7fe ba5d b.w e33a + if(newValue>max){ + fe80: 2b3e cmp r3, #62 ; 0x3e + fe82: f240 86dd bls.w 10c40 return (newValue < min) ? max : newValue; - fd10: 2b00 cmp r3, #0 - fd12: f000 85ba beq.w 1088a - fd16: 3b01 subs r3, #1 - fd18: b299 uxth r1, r3 - fd1a: e641 b.n f9a0 - midi.sendProgramChange(device.port, device.channel, program); - fd1c: f899 2372 ldrb.w r2, [r9, #882] ; 0x372 - fd20: f004 037f and.w r3, r4, #127 ; 0x7f - fd24: f899 1371 ldrb.w r1, [r9, #881] ; 0x371 - fd28: 9500 str r5, [sp, #0] - fd2a: f8d9 0354 ldr.w r0, [r9, #852] ; 0x354 - fd2e: f013 f9db bl 230e8 - fd32: f7fe b8f5 b.w df20 - fd36: bf00 nop - fd38: 20001f3c .word 0x20001f3c - fd3c: 20004ba8 .word 0x20004ba8 - fd40: 200015b8 .word 0x200015b8 + fe86: 213f movs r1, #63 ; 0x3f + fe88: e7c0 b.n fe0c long newValue = (value-amount); - fd44: 1e54 subs r4, r2, #1 + fe8a: 3b01 subs r3, #1 return (newValue < min) ? min : newValue; - fd46: 429c cmp r4, r3 - fd48: bfb8 it lt - fd4a: 461c movlt r4, r3 - fd4c: b2a4 uxth r4, r4 - fd4e: f7fe b8d0 b.w def2 - fd52: 4293 cmp r3, r2 - fd54: bfb8 it lt - fd56: 4613 movlt r3, r2 - fd58: e7cd b.n fcf6 - return newValue; - fd5a: 3301 adds r3, #1 - fd5c: b299 uxth r1, r3 - fd5e: e61f b.n f9a0 - return sync.fas.isBlockBypassed(data.byteB) ? 100 : 0; - fd60: f04f 0864 mov.w r8, #100 ; 0x64 - fd64: f7fb be08 b.w b978 - case BMC_FAS_CMD_LOOPER_CLEAR: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_CLEAR); break; - fd68: f243 3054 movw r0, #13140 ; 0x3354 - fd6c: 210a movs r1, #10 - return BMC_OFF_LED_EVENT; - fd6e: f04f 0800 mov.w r8, #0 - case BMC_FAS_CMD_LOOPER_CLEAR: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_CLEAR); break; - fd72: 4428 add r0, r5 - fd74: f7f9 fa34 bl 91e0 - fd78: f7fb bdfe b.w b978 - return true; - fd7c: 2301 movs r3, #1 - fd7e: 62bb str r3, [r7, #40] ; 0x28 - fd80: f7fe ba69 b.w e256 - return 0; - fd84: 4618 mov r0, r3 - fd86: f7fe ba3b b.w e200 - fd8a: f507 73ce add.w r3, r7, #412 ; 0x19c - fd8e: ee09 3a10 vmov s18, r3 - fd92: f7fb bffd b.w bd90 - return fader; - fd96: 68fb ldr r3, [r7, #12] - long num = (x - in_min) * out_range; - fd98: 2164 movs r1, #100 ; 0x64 - long result = num / in_range + out_min; - fd9a: f643 18fb movw r8, #14843 ; 0x39fb - fd9e: eb09 02c3 add.w r2, r9, r3, lsl #3 - num += in_range / 2; - fda2: f641 43fd movw r3, #7421 ; 0x1cfd - long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max; - fda6: f9b2 230e ldrsh.w r2, [r2, #782] ; 0x30e - long num = (x - in_min) * out_range; - fdaa: f502 5200 add.w r2, r2, #8192 ; 0x2000 - num += in_range / 2; - fdae: fb01 3302 mla r3, r1, r2, r3 - long result = num / in_range + out_min; - fdb2: fb93 f8f8 sdiv r8, r3, r8 - if (in_range * num < 0) return result - 1; - fdb6: 2b00 cmp r3, #0 - fdb8: bfb8 it lt - fdba: f108 38ff addlt.w r8, r8, #4294967295 ; 0xffffffff - fdbe: e6d1 b.n fb64 - min = lowest; - fdc0: f04f 0a00 mov.w sl, #0 - fdc4: 46d0 mov r8, sl - fdc6: f7fc beac b.w cb22 - strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); - fdca: 4ad5 ldr r2, [pc, #852] ; (10120 ) - fdcc: f505 5140 add.w r1, r5, #12288 ; 0x3000 - fdd0: 4bd4 ldr r3, [pc, #848] ; (10124 ) - display.renderFasLooperIcon(data); - fdd2: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); - fdd6: 6810 ldr r0, [r2, #0] - return BMC_OFF_LED_EVENT; - fdd8: f04f 0800 mov.w r8, #0 - strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); - fddc: 8892 ldrh r2, [r2, #4] - display.renderFasLooperIcon(data); - fdde: 442e add r6, r5 - strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); - fde0: f8c7 006d str.w r0, [r7, #109] ; 0x6d - fde4: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 - fde8: 889a ldrh r2, [r3, #4] - fdea: 6818 ldr r0, [r3, #0] - fdec: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - fdf0: 799a ldrb r2, [r3, #6] - fdf2: f891 335c ldrb.w r3, [r1, #860] ; 0x35c - display.renderFasLooperIcon(data); - fdf6: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); - fdfa: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - display.renderFasLooperIcon(data); - fdfe: 4668 mov r0, sp - fe00: f003 0301 and.w r3, r3, #1 - strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); - fe04: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 - display.renderFasLooperIcon(data); - fe08: 2295 movs r2, #149 ; 0x95 - fe0a: 7523 strb r3, [r4, #20] - fe0c: f01a fc7c bl 2a708 - fe10: 4630 mov r0, r6 - fe12: e894 000e ldmia.w r4, {r1, r2, r3} - fe16: f7fb fa25 bl b264 - break; - fe1a: f7fb bdad b.w b978 - strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); - fe1e: 4ac2 ldr r2, [pc, #776] ; (10128 ) - fe20: f505 5140 add.w r1, r5, #12288 ; 0x3000 - fe24: 4bbf ldr r3, [pc, #764] ; (10124 ) - display.renderFasLooperIcon(data); - fe26: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); - fe2a: 6810 ldr r0, [r2, #0] - return BMC_OFF_LED_EVENT; - fe2c: f04f 0800 mov.w r8, #0 - strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); - fe30: 7912 ldrb r2, [r2, #4] - display.renderFasLooperIcon(data); - fe32: 442e add r6, r5 - strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); - fe34: f8c7 006d str.w r0, [r7, #109] ; 0x6d - fe38: f887 2071 strb.w r2, [r7, #113] ; 0x71 - fe3c: 889a ldrh r2, [r3, #4] - fe3e: 6818 ldr r0, [r3, #0] - fe40: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - fe44: 799a ldrb r2, [r3, #6] - fe46: f891 335c ldrb.w r3, [r1, #860] ; 0x35c - display.renderFasLooperIcon(data); - fe4a: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); - fe4e: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - display.renderFasLooperIcon(data); - fe52: 4668 mov r0, sp - fe54: f003 0301 and.w r3, r3, #1 - strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); - fe58: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 - display.renderFasLooperIcon(data); - fe5c: 2295 movs r2, #149 ; 0x95 - fe5e: 7523 strb r3, [r4, #20] - fe60: f01a fc52 bl 2a708 - fe64: 4630 mov r0, r6 - fe66: e894 000e ldmia.w r4, {r1, r2, r3} - fe6a: f7fb f9fb bl b264 - break; - fe6e: f7fb bd83 b.w b978 - strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); - fe72: 4aae ldr r2, [pc, #696] ; (1012c ) - display.renderFasLooper(data); - fe74: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); - fe78: 4baa ldr r3, [pc, #680] ; (10124 ) - display.renderFasLooper(data); - fe7a: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); - fe7e: 6810 ldr r0, [r2, #0] - display.renderFasLooper(data); - fe80: 442e add r6, r5 - strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); - fe82: 8892 ldrh r2, [r2, #4] + fe8c: ea23 73e3 bic.w r3, r3, r3, asr #31 + fe90: b299 uxth r1, r3 + fe92: e7bb b.n fe0c + case 18: strcpy(data.str, "FAS PRESET"); break; + fe94: 4bb5 ldr r3, [pc, #724] ; (1016c ) + fe96: cb03 ldmia r3!, {r0, r1} + fe98: 881a ldrh r2, [r3, #0] + fe9a: 789b ldrb r3, [r3, #2] + fe9c: f8c7 006d str.w r0, [r7, #109] ; 0x6d + fea0: f8a7 2075 strh.w r2, [r7, #117] ; 0x75 + fea4: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + fea8: f887 3077 strb.w r3, [r7, #119] ; 0x77 + feac: f7fd ba96 b.w d3dc + __oledMuxSelect(d.index); + feb0: fa5f f08b uxtb.w r0, fp + feb4: f04f 0900 mov.w r9, #0 + feb8: f7fa fa04 bl a2c4 + mainHandler.renderSliderOled(oled[d.index], d); + febc: 2305 movs r3, #5 + febe: 22a1 movs r2, #161 ; 0xa1 + fec0: f888 4013 strb.w r4, [r8, #19] + fec4: f888 3005 strb.w r3, [r8, #5] + fec8: 4641 mov r1, r8 + feca: f507 70ce add.w r0, r7, #412 ; 0x19c + fece: f8a8 b000 strh.w fp, [r8] + fed2: f888 6002 strb.w r6, [r8, #2] + return crc == t_crc; + fed6: f505 5440 add.w r4, r5, #12288 ; 0x3000 + feda: f8a8 9010 strh.w r9, [r8, #16] + fede: f01a fc87 bl 2a7f0 + fee2: 2338 movs r3, #56 ; 0x38 + fee4: fb03 f30b mul.w r3, r3, fp + fee8: 441c add r4, r3 + if(block.isCrc(d.crc)){ + feea: f894 2d5e ldrb.w r2, [r4, #3422] ; 0xd5e + feee: 42b2 cmp r2, r6 + fef0: f43f ab92 beq.w f618 + BMC_SSD1306& display = block.display; + fef4: 442b add r3, r5 + fef6: f643 5568 movw r5, #15720 ; 0x3d68 + uint16_t meterValue = block.getMeterValue(); + fefa: f8b4 2d64 ldrh.w r2, [r4, #3428] ; 0xd64 + renderSlider(display, meterValue, meterPixelValue, d, t, t_reset); + fefe: f507 71d0 add.w r1, r7, #416 ; 0x1a0 + BMC_SSD1306& display = block.display; + ff02: 441d add r5, r3 + uint16_t meterPixelValue = block.getMeterPixelValue(); + ff04: f8b4 3d62 ldrh.w r3, [r4, #3426] ; 0xd62 + uint16_t meterValue = block.getMeterValue(); + ff08: 863a strh r2, [r7, #48] ; 0x30 + renderSlider(display, meterValue, meterPixelValue, d, t, t_reset); + ff0a: 4668 mov r0, sp + uint16_t meterPixelValue = block.getMeterPixelValue(); + ff0c: 867b strh r3, [r7, #50] ; 0x32 + renderSlider(display, meterValue, meterPixelValue, d, t, t_reset); + ff0e: 2301 movs r3, #1 + crc = t_crc; + ff10: f884 6d5e strb.w r6, [r4, #3422] ; 0xd5e + ff14: 2620 movs r6, #32 + ff16: 932b str r3, [sp, #172] ; 0xac + ff18: 2380 movs r3, #128 ; 0x80 + ff1a: 229d movs r2, #157 ; 0x9d + ff1c: f8cd 90b0 str.w r9, [sp, #176] ; 0xb0 + ff20: f8cd 90a0 str.w r9, [sp, #160] ; 0xa0 + ff24: e9cd 3629 strd r3, r6, [sp, #164] ; 0xa4 + ff28: f01a fc62 bl 2a7f0 + ff2c: f8d7 319c ldr.w r3, [r7, #412] ; 0x19c + ff30: f107 0232 add.w r2, r7, #50 ; 0x32 + ff34: f107 0130 add.w r1, r7, #48 ; 0x30 + ff38: 4628 mov r0, r5 + ff3a: f7f7 f829 bl 6f90 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]> + display.display(); + ff3e: 4628 mov r0, r5 + ff40: f008 fda6 bl 18a90 + meterValue = t_value; + ff44: 8e3a ldrh r2, [r7, #48] ; 0x30 + meterPixelValue = t_value; + ff46: 8e7b ldrh r3, [r7, #50] ; 0x32 + meterValue = t_value; + ff48: f8a4 2d64 strh.w r2, [r4, #3428] ; 0xd64 + meterPixelValue = t_value; + ff4c: f8a4 3d62 strh.w r3, [r4, #3426] ; 0xd62 + return true; + ff50: f7ff bb62 b.w f618 + fetchSysEx(BMC_FAS3_FUNC_ID_TUNER, 0, 0, BMC_FAS3_FETCH_TYPE_7_BIT); + ff54: 2300 movs r3, #0 + ff56: 2111 movs r1, #17 + ff58: 461a mov r2, r3 + ff5a: 9300 str r3, [sp, #0] return BMC_OFF_LED_EVENT; - fe84: f04f 0800 mov.w r8, #0 - strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); - fe88: f8c7 006d str.w r0, [r7, #109] ; 0x6d - fe8c: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 - fe90: 6818 ldr r0, [r3, #0] - fe92: 889a ldrh r2, [r3, #4] - fe94: 799b ldrb r3, [r3, #6] - fe96: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - display.renderFasLooper(data); - fe9a: 2295 movs r2, #149 ; 0x95 - strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); - fe9c: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - display.renderFasLooper(data); - fea0: 4668 mov r0, sp - strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); - fea2: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 - display.renderFasLooper(data); - fea6: f01a fc2f bl 2a708 - feaa: 4630 mov r0, r6 - feac: e894 000e ldmia.w r4, {r1, r2, r3} - feb0: f7fb f886 bl afc0 - break; - feb4: f7fb bd60 b.w b978 - strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); - feb8: 4a9d ldr r2, [pc, #628] ; (10130 ) - display.renderFasLooper(data); - feba: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); - febe: 4b99 ldr r3, [pc, #612] ; (10124 ) - display.renderFasLooper(data); - fec0: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); - fec4: 6810 ldr r0, [r2, #0] - display.renderFasLooper(data); - fec6: 442e add r6, r5 - strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); - fec8: 8892 ldrh r2, [r2, #4] + ff5c: 4698 mov r8, r3 + ff5e: f7f1 fa37 bl 13d0 + } + ff62: f7fb bd74 b.w ba4e + activeChar = (activeChar==0) ? 2 : (activeChar-1); + ff66: 2b00 cmp r3, #0 + ff68: f000 860a beq.w 10b80 + ff6c: 3b01 subs r3, #1 + ff6e: b2db uxtb r3, r3 + activeChar = (activeChar>=2) ? 0 : (activeChar+1); + ff70: f884 3c89 strb.w r3, [r4, #3209] ; 0xc89 + } else if(callback.typerCommand){ + ff74: f8d4 3c8c ldr.w r3, [r4, #3212] ; 0xc8c + ff78: 695b ldr r3, [r3, #20] + ff7a: b13b cbz r3, ff8c + ff7c: f894 2c80 ldrb.w r2, [r4, #3200] ; 0xc80 + return output; + ff80: f8b4 0c84 ldrh.w r0, [r4, #3204] ; 0xc84 + if(!flags.read(BMC_TYPER_FLAG_DISPLAY_ZERO_OFFSET)){ + ff84: 07d2 lsls r2, r2, #31 + ff86: d50f bpl.n ffa8 + return (output==0) ? 0 : (output-1); + ff88: 4601 mov r1, r0 + callback.typerCommand(getOutput(), getRawOutput()); + ff8a: 4798 blx r3 + if(cmd > 10){// cmd 10 is Clear + ff8c: 69fb ldr r3, [r7, #28] + ff8e: 2b0a cmp r3, #10 + ff90: f43b ad5b beq.w ba4a + switch(cmd){ + ff94: 3b10 subs r3, #16 + ff96: 2b06 cmp r3, #6 + ff98: f63b ae1c bhi.w bbd4 + ff9c: e8df f003 tbb [pc, r3] + ffa0: 72c599ac .word 0x72c599ac + ffa4: 3859 .short 0x3859 + ffa6: 09 .byte 0x09 + ffa7: 00 .byte 0x00 + return (output==0) ? 0 : (output-1); + ffa8: 2800 cmp r0, #0 + ffaa: d0ed beq.n ff88 + ffac: 1e41 subs r1, r0, #1 + ffae: b289 uxth r1, r1 + ffb0: e7eb b.n ff8a + if(cc <= 127){ + ffb2: f994 3c84 ldrsb.w r3, [r4, #3204] ; 0xc84 + return output; + ffb6: f8b4 6c84 ldrh.w r6, [r4, #3204] ; 0xc84 + ffba: 2b00 cmp r3, #0 + ffbc: f6fb ad45 blt.w ba4a + return (settings.data[2]>>6) & 0x0F; + ffc0: f8da 37fc ldr.w r3, [sl, #2044] ; 0x7fc + uint8_t cc = valueTyper.getOutput(); + ffc4: b2f6 uxtb r6, r6 + uint8_t val = midi.toggleCC(e.ports, channel, cc); + ffc6: f505 5ace add.w sl, r5, #6592 ; 0x19c0 + midi.sendControlChange(e.ports, channel, cc, val); + ffca: f04f 0800 mov.w r8, #0 + ffce: 68da ldr r2, [r3, #12] + uint8_t val = midi.toggleCC(e.ports, channel, cc); + ffd0: 4633 mov r3, r6 + ffd2: 4650 mov r0, sl + ffd4: f3c2 1283 ubfx r2, r2, #6, #4 + channel = BMC_TO_MIDI_CHANNEL(channel); + ffd8: 1c54 adds r4, r2, #1 + uint8_t val = midi.toggleCC(e.ports, channel, cc); + ffda: 697a ldr r2, [r7, #20] + ffdc: f892 1033 ldrb.w r1, [r2, #51] ; 0x33 + ffe0: 4622 mov r2, r4 + ffe2: f014 ff77 bl 24ed4 + midi.sendControlChange(e.ports, channel, cc, val); + ffe6: 697a ldr r2, [r7, #20] + uint8_t val = midi.toggleCC(e.ports, channel, cc); + ffe8: 4681 mov r9, r0 + midi.sendControlChange(e.ports, channel, cc, val); + ffea: 2301 movs r3, #1 + ffec: f892 1033 ldrb.w r1, [r2, #51] ; 0x33 + fff0: 4650 mov r0, sl + fff2: 4622 mov r2, r4 + fff4: 9302 str r3, [sp, #8] + fff6: 4633 mov r3, r6 + fff8: e9cd 9800 strd r9, r8, [sp] + fffc: f013 fa50 bl 234a0 + streamMidiControl(channel, cc, val); + 10000: 464b mov r3, r9 + 10002: 4632 mov r2, r6 + 10004: 4621 mov r1, r4 + 10006: 4628 mov r0, r5 + 10008: f008 f88a bl 18120 + 1000c: f7fb bd1f b.w ba4e + if(pc <= 127){ + 10010: f994 3c84 ldrsb.w r3, [r4, #3204] ; 0xc84 + 10014: f8b4 6c84 ldrh.w r6, [r4, #3204] ; 0xc84 + 10018: 2b00 cmp r3, #0 + 1001a: f6fb ad16 blt.w ba4a + 1001e: f8da 37fc ldr.w r3, [sl, #2044] ; 0x7fc + uint8_t pc = valueTyper.getOutput(); + 10022: b2f6 uxtb r6, r6 + midi.sendProgramChange(e.ports, channel, pc); + 10024: 697a ldr r2, [r7, #20] + 10026: 2000 movs r0, #0 + 10028: f892 1033 ldrb.w r1, [r2, #51] ; 0x33 return BMC_OFF_LED_EVENT; - feca: f04f 0800 mov.w r8, #0 - strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); - fece: f8c7 006d str.w r0, [r7, #109] ; 0x6d - fed2: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 - fed6: 6818 ldr r0, [r3, #0] - fed8: 889a ldrh r2, [r3, #4] - feda: 799b ldrb r3, [r3, #6] - fedc: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - display.renderFasLooper(data); - fee0: 2295 movs r2, #149 ; 0x95 - strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); - fee2: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - display.renderFasLooper(data); - fee6: 4668 mov r0, sp - strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); - fee8: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 - display.renderFasLooper(data); - feec: f01a fc0c bl 2a708 - fef0: 4630 mov r0, r6 - fef2: e894 000e ldmia.w r4, {r1, r2, r3} - fef6: f7fb f863 bl afc0 - break; - fefa: f7fb bd3d b.w b978 - bitWrite(settings, 2, 0); - fefe: 78e3 ldrb r3, [r4, #3] - display.renderBlock(data); - ff00: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "TAP"); - ff04: 4a8b ldr r2, [pc, #556] ; (10134 ) - display.renderBlock(data); - ff06: f107 0160 add.w r1, r7, #96 ; 0x60 - ff0a: f023 0304 bic.w r3, r3, #4 - ff0e: 442e add r6, r5 - strcpy(data.str, "TAP"); - ff10: 6810 ldr r0, [r2, #0] - display.renderBlock(data); - ff12: 2295 movs r2, #149 ; 0x95 - bitWrite(settings, 3, 1); - ff14: f043 0308 orr.w r3, r3, #8 + 1002c: 4680 mov r8, r0 + 1002e: 68da ldr r2, [r3, #12] + midi.sendProgramChange(e.ports, channel, pc); + 10030: 4633 mov r3, r6 + 10032: 9000 str r0, [sp, #0] + 10034: f505 50ce add.w r0, r5, #6592 ; 0x19c0 + 10038: f3c2 1283 ubfx r2, r2, #6, #4 + channel = BMC_TO_MIDI_CHANNEL(channel); + 1003c: 1c54 adds r4, r2, #1 + midi.sendProgramChange(e.ports, channel, pc); + 1003e: 4622 mov r2, r4 + 10040: f013 f8b8 bl 231b4 + streamMidiProgram(channel, pc); + 10044: 4632 mov r2, r6 + 10046: 4621 mov r1, r4 + 10048: 4628 mov r0, r5 + 1004a: f008 f83d bl 180c8 + 1004e: f7fb bcfe b.w ba4e + 10052: f894 3c80 ldrb.w r3, [r4, #3200] ; 0xc80 + 10056: f8b4 2c84 ldrh.w r2, [r4, #3204] ; 0xc84 + if(!flags.read(BMC_TYPER_FLAG_DISPLAY_ZERO_OFFSET)){ + 1005a: 07d8 lsls r0, r3, #31 + 1005c: d57b bpl.n 10156 + return bitRead(flags, 0); + 1005e: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 10062: f893 3393 ldrb.w r3, [r3, #915] ; 0x393 + if(!connected()){ + 10066: 07d9 lsls r1, r3, #31 + 10068: f57b acef bpl.w ba4a + fetchSysEx(BMC_FAS3_FUNC_ID_SCENE, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); + 1006c: 2300 movs r3, #0 + 1006e: f243 3074 movw r0, #13172 ; 0x3374 + 10072: b2d2 uxtb r2, r2 + 10074: 210c movs r1, #12 + 10076: 4428 add r0, r5 + 10078: 9300 str r3, [sp, #0] return BMC_OFF_LED_EVENT; - ff18: f04f 0800 mov.w r8, #0 - strcpy(data.str, "TAP"); - ff1c: f8c7 006d str.w r0, [r7, #109] ; 0x6d - display.renderBlock(data); - ff20: 4668 mov r0, sp - ff22: 70e3 strb r3, [r4, #3] - ff24: f01a fbf0 bl 2a708 - ff28: 4630 mov r0, r6 - ff2a: e894 000e ldmia.w r4, {r1, r2, r3} - ff2e: f7fa fd55 bl a9dc - break; - ff32: f7fb bd21 b.w b978 - strcpy(data.str, "Out of Tune"); strcpy(data.label, "TUNER"); - ff36: 4b80 ldr r3, [pc, #512] ; (10138 ) - ff38: 4e80 ldr r6, [pc, #512] ; (1013c ) - ff3a: cb07 ldmia r3!, {r0, r1, r2} - ff3c: f505 5340 add.w r3, r5, #12288 ; 0x3000 - ff40: f8c7 006d str.w r0, [r7, #109] ; 0x6d - ff44: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - ff48: f893 34a3 ldrb.w r3, [r3, #1187] ; 0x4a3 - ff4c: 6830 ldr r0, [r6, #0] - ff4e: f8c7 2075 str.w r2, [r7, #117] ; 0x75 - return isOn() && (isFlat() || isSharp()); - ff52: f013 0101 ands.w r1, r3, #1 - ff56: 88b2 ldrh r2, [r6, #4] - ff58: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - ff5c: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - ff60: d005 beq.n ff6e - return isOn() && flags.read(2); - ff62: 0758 lsls r0, r3, #29 - ff64: f3c3 0180 ubfx r1, r3, #2, #1 - ff68: bf58 it pl - ff6a: f3c3 01c0 ubfxpl r1, r3, #3, #1 - bitWrite(settings, 2, 0); - ff6e: 78e3 ldrb r3, [r4, #3] - display.renderBlock(data); - ff70: f643 3638 movw r6, #15160 ; 0x3b38 - data.highlight = sync.fas.tuner.outOfTune(); - ff74: 7521 strb r1, [r4, #20] - display.renderBlock(data); - ff76: 2295 movs r2, #149 ; 0x95 - ff78: f023 0304 bic.w r3, r3, #4 - ff7c: 442e add r6, r5 - ff7e: f107 0160 add.w r1, r7, #96 ; 0x60 - ff82: 4668 mov r0, sp - bitWrite(settings, 3, 1); - ff84: f043 0308 orr.w r3, r3, #8 + 1007a: 4698 mov r8, r3 + 1007c: f7f1 f9a8 bl 13d0 + 10080: f7fb bce5 b.w ba4e + 10084: f894 3c80 ldrb.w r3, [r4, #3200] ; 0xc80 + 10088: f8b4 2c84 ldrh.w r2, [r4, #3204] ; 0xc84 + 1008c: 07de lsls r6, r3, #31 + 1008e: f140 83a2 bpl.w 107d6 + 10092: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 10096: f893 3393 ldrb.w r3, [r3, #915] ; 0x393 + if(!connected()){ + 1009a: 07dc lsls r4, r3, #31 + 1009c: f57b acd5 bpl.w ba4a + fetchSysEx(BMC_FAS3_FUNC_ID_SCENE, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); + 100a0: 2300 movs r3, #0 + 100a2: f243 3074 movw r0, #13172 ; 0x3374 + 100a6: b2d2 uxtb r2, r2 + 100a8: 210c movs r1, #12 + 100aa: 4428 add r0, r5 + 100ac: 9300 str r3, [sp, #0] + 100ae: 4698 mov r8, r3 + 100b0: f7f1 f98e bl 13d0 + 100b4: f7fb bccb b.w ba4e + direction = bitRead(ticks, 7); + 100b8: 09d8 lsrs r0, r3, #7 + amount = ticks & 0x7F; + 100ba: f003 0c7f and.w ip, r3, #127 ; 0x7f + direction = bitRead(ticks, 7); + 100be: f884 009e strb.w r0, [r4, #158] ; 0x9e + amount = ticks & 0x7F; + 100c2: f884 c0a0 strb.w ip, [r4, #160] ; 0xa0 + if(amount == 0){ + 100c6: f1bc 0f00 cmp.w ip, #0 + 100ca: f47b ad5e bne.w bb8a + 100ce: f7fb bd57 b.w bb80 + 100d2: f894 3c80 ldrb.w r3, [r4, #3200] ; 0xc80 + presets.setByIndex(valueTyper.getRawOutput()); + 100d6: f243 200c movw r0, #12812 ; 0x320c + 100da: f8b4 1c84 ldrh.w r1, [r4, #3204] ; 0xc84 + 100de: 07dc lsls r4, r3, #31 + 100e0: 4428 add r0, r5 + 100e2: d518 bpl.n 10116 + set(t_bank, t_preset, forced); + 100e4: 2300 movs r3, #0 + 100e6: f001 0207 and.w r2, r1, #7 + 100ea: f3c1 01c4 ubfx r1, r1, #3, #5 return BMC_OFF_LED_EVENT; - ff88: f04f 0800 mov.w r8, #0 - ff8c: 70e3 strb r3, [r4, #3] - display.renderBlock(data); - ff8e: f01a fbbb bl 2a708 - ff92: 4630 mov r0, r6 - ff94: e894 000e ldmia.w r4, {r1, r2, r3} - ff98: f7fa fd20 bl a9dc - break; - ff9c: f7fb bcec b.w b978 - strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); - ffa0: 4a67 ldr r2, [pc, #412] ; (10140 ) - display.renderFasLooperIcon(data); - ffa2: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); - ffa6: 4b5f ldr r3, [pc, #380] ; (10124 ) - display.renderFasLooperIcon(data); - ffa8: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); - ffac: 6810 ldr r0, [r2, #0] - display.renderFasLooperIcon(data); - ffae: 442e add r6, r5 - strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); - ffb0: 7912 ldrb r2, [r2, #4] + 100ee: 4698 mov r8, r3 + 100f0: f7f0 fa66 bl 5c0 + } + 100f4: f7fb bcab b.w ba4e + 100f8: f894 3c80 ldrb.w r3, [r4, #3200] ; 0xc80 + 100fc: f8b4 1c84 ldrh.w r1, [r4, #3204] ; 0xc84 + 10100: 07de lsls r6, r3, #31 + 10102: d50d bpl.n 10120 + setLayer(valueTyper.getRawOutput()); + 10104: 2300 movs r3, #0 + 10106: b2c9 uxtb r1, r1 + 10108: 4628 mov r0, r5 + 1010a: 461a mov r2, r3 return BMC_OFF_LED_EVENT; - ffb2: f04f 0800 mov.w r8, #0 - strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); - ffb6: f8c7 006d str.w r0, [r7, #109] ; 0x6d - ffba: f887 2071 strb.w r2, [r7, #113] ; 0x71 - ffbe: 6818 ldr r0, [r3, #0] - ffc0: 889a ldrh r2, [r3, #4] - ffc2: 799b ldrb r3, [r3, #6] - ffc4: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - display.renderFasLooperIcon(data); - ffc8: 2295 movs r2, #149 ; 0x95 - strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); - ffca: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - display.renderFasLooperIcon(data); - ffce: 4668 mov r0, sp - strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); - ffd0: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 - display.renderFasLooperIcon(data); - ffd4: f01a fb98 bl 2a708 - ffd8: 4630 mov r0, r6 - ffda: e894 000e ldmia.w r4, {r1, r2, r3} - ffde: f7fb f941 bl b264 - break; - ffe2: f7fb bcc9 b.w b978 - strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); - ffe6: 4a57 ldr r2, [pc, #348] ; (10144 ) - return bitRead(data, bit); - ffe8: f505 5140 add.w r1, r5, #12288 ; 0x3000 - ffec: 4b4d ldr r3, [pc, #308] ; (10124 ) - display.renderFasLooperIcon(data); - ffee: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); - fff2: 6810 ldr r0, [r2, #0] + 1010c: 4698 mov r8, r3 + setLayer(valueTyper.getRawOutput()); + 1010e: f005 f87d bl 1520c + break; + 10112: f7fb bc9c b.w ba4e + return (output==0) ? 0 : (output-1); + 10116: 2900 cmp r1, #0 + 10118: d0e4 beq.n 100e4 + 1011a: 3901 subs r1, #1 + 1011c: b289 uxth r1, r1 + 1011e: e7e1 b.n 100e4 + 10120: 2900 cmp r1, #0 + 10122: d0ef beq.n 10104 + 10124: 3901 subs r1, #1 + 10126: b289 uxth r1, r1 + 10128: e7ec b.n 10104 + 1012a: f894 3c80 ldrb.w r3, [r4, #3200] ; 0xc80 + 1012e: f8b4 1c84 ldrh.w r1, [r4, #3204] ; 0xc84 + if(!flags.read(BMC_TYPER_FLAG_DISPLAY_ZERO_OFFSET)){ + 10132: 07da lsls r2, r3, #31 + 10134: d514 bpl.n 10160 + 10136: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 1013a: f893 3393 ldrb.w r3, [r3, #915] ; 0x393 + if(!connected()){ + 1013e: 07db lsls r3, r3, #31 + 10140: f57b ac83 bpl.w ba4a + 10144: f243 3074 movw r0, #13172 ; 0x3374 return BMC_OFF_LED_EVENT; - fff4: f04f 0800 mov.w r8, #0 - strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); - fff8: 7912 ldrb r2, [r2, #4] - display.renderFasLooperIcon(data); - fffa: 442e add r6, r5 - strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); - fffc: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10000: f887 2071 strb.w r2, [r7, #113] ; 0x71 - 10004: 889a ldrh r2, [r3, #4] - 10006: 6818 ldr r0, [r3, #0] - 10008: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - 1000c: 799a ldrb r2, [r3, #6] - 1000e: f891 3377 ldrb.w r3, [r1, #887] ; 0x377 - display.renderFasLooperIcon(data); - 10012: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); - 10016: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - display.renderFasLooperIcon(data); - 1001a: 4668 mov r0, sp - 1001c: f3c3 1340 ubfx r3, r3, #5, #1 - strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); - 10020: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 - display.renderFasLooperIcon(data); - 10024: 2295 movs r2, #149 ; 0x95 - 10026: 7523 strb r3, [r4, #20] - 10028: f01a fb6e bl 2a708 - 1002c: 4630 mov r0, r6 - 1002e: e894 000e ldmia.w r4, {r1, r2, r3} - 10032: f7fb f917 bl b264 - break; - 10036: f7fb bc9f b.w b978 - __oledMuxSelect(d.index); - 1003a: f897 019c ldrb.w r0, [r7, #412] ; 0x19c - 1003e: f7fa f96f bl a320 - oled[d.index].print(d, d.str); - 10042: f8b7 419c ldrh.w r4, [r7, #412] ; 0x19c - 10046: 2038 movs r0, #56 ; 0x38 - 10048: f897 31b0 ldrb.w r3, [r7, #432] ; 0x1b0 - 1004c: f897 219f ldrb.w r2, [r7, #415] ; 0x19f - 10050: fb00 5404 mla r4, r0, r4, r5 - 10054: f207 15b5 addw r5, r7, #437 ; 0x1b5 - 10058: f643 503c movw r0, #15676 ; 0x3d3c - 1005c: f897 119e ldrb.w r1, [r7, #414] ; 0x19e - 10060: 9500 str r5, [sp, #0] - 10062: 4420 add r0, r4 - 10064: f7fa fbd2 bl a80c - 10068: f7fb beab b.w bdc2 + 10148: f04f 0800 mov.w r8, #0 + 1014c: 4428 add r0, r5 + 1014e: f7f6 fe39 bl 6dc4 + 10152: f7fb bc7c b.w ba4e + return (output==0) ? 0 : (output-1); + 10156: 2a00 cmp r2, #0 + 10158: d081 beq.n 1005e + 1015a: 3a01 subs r2, #1 + 1015c: b292 uxth r2, r2 + 1015e: e77e b.n 1005e + 10160: 2900 cmp r1, #0 + 10162: d0e8 beq.n 10136 + 10164: 3901 subs r1, #1 + 10166: b289 uxth r1, r1 + 10168: e7e5 b.n 10136 + 1016a: bf00 nop + 1016c: 20001ffc .word 0x20001ffc return selected; - 1006c: f892 30e1 ldrb.w r3, [r2, #225] ; 0xe1 + 10170: f892 30e1 ldrb.w r3, [r2, #225] ; 0xe1 return chAllowed(n) ? channel[chCheck(n)].getVPot() : 0; - 10070: 2b08 cmp r3, #8 + 10174: 2b08 cmp r3, #8 return selected; - 10072: 60fb str r3, [r7, #12] + 10176: 60fb str r3, [r7, #12] return chAllowed(n) ? channel[chCheck(n)].getVPot() : 0; - 10074: d973 bls.n 1015e + 10178: f240 8323 bls.w 107c2 bmcStoreName t; - 10076: f507 72ce add.w r2, r7, #412 ; 0x19c - 1007a: 2300 movs r3, #0 - 1007c: f107 08f8 add.w r8, r7, #248 ; 0xf8 - 10080: ee09 2a10 vmov s18, r2 - 10084: f8c8 3000 str.w r3, [r8] + 1017c: f507 72ce add.w r2, r7, #412 ; 0x19c + 10180: 2300 movs r3, #0 + 10182: f107 08f8 add.w r8, r7, #248 ; 0xf8 + 10186: ee09 2a10 vmov s18, r2 + 1018a: f8c8 3000 str.w r3, [r8] bmcStoreName t; - 10088: f887 31ac strb.w r3, [r7, #428] ; 0x1ac + 1018e: f887 31ac strb.w r3, [r7, #428] ; 0x1ac bmcStoreName t; - 1008c: f8c7 3104 str.w r3, [r7, #260] ; 0x104 - 10090: f887 3108 strb.w r3, [r7, #264] ; 0x108 + 10192: f8c7 3104 str.w r3, [r7, #260] ; 0x104 + 10196: f887 3108 strb.w r3, [r7, #264] ; 0x108 return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 10094: 627b str r3, [r7, #36] ; 0x24 + 1019a: 627b str r3, [r7, #36] ; 0x24 return chAllowed(n) ? channel[chCheck(n)].getVPot() : 0; - 10096: 623b str r3, [r7, #32] + 1019c: 623b str r3, [r7, #32] bmcStoreName t; - 10098: e9c7 3367 strd r3, r3, [r7, #412] ; 0x19c - 1009c: e9c7 3369 strd r3, r3, [r7, #420] ; 0x1a4 + 1019e: e9c7 3367 strd r3, r3, [r7, #412] ; 0x19c + 101a2: e9c7 3369 strd r3, r3, [r7, #420] ; 0x1a4 bmcStoreName t; - 100a0: e9c7 333f strd r3, r3, [r7, #252] ; 0xfc + 101a6: e9c7 333f strd r3, r3, [r7, #252] ; 0xfc uint16_t len = strlen(str); - 100a4: 4640 mov r0, r8 + 101aa: 4640 mov r0, r8 } - 100a6: 46ea mov sl, sp + 101ac: 46ea mov sl, sp uint16_t len = strlen(str); - 100a8: f01e fd4a bl 2eb40 + 101ae: f01e fd47 bl 2ec40 if(len == 0 || str[0] != 32){ - 100ac: 4606 mov r6, r0 - 100ae: b338 cbz r0, 10100 - 100b0: f898 3000 ldrb.w r3, [r8] - 100b4: 2b20 cmp r3, #32 - 100b6: d123 bne.n 10100 + 101b2: 4606 mov r6, r0 + 101b4: b338 cbz r0, 10206 + 101b6: f898 3000 ldrb.w r3, [r8] + 101ba: 2b20 cmp r3, #32 + 101bc: d123 bne.n 10206 char buff[len+1] = ""; - 100b8: f100 0308 add.w r3, r0, #8 - 100bc: 2400 movs r4, #0 - 100be: 4602 mov r2, r0 - 100c0: f023 0307 bic.w r3, r3, #7 - 100c4: 4621 mov r1, r4 - 100c6: ebad 0d03 sub.w sp, sp, r3 - 100ca: f10d 00b9 add.w r0, sp, #185 ; 0xb9 - 100ce: f88d 40b8 strb.w r4, [sp, #184] ; 0xb8 - 100d2: f01e f9db bl 2e48c - 100d6: a82e add r0, sp, #184 ; 0xb8 + 101be: f100 0308 add.w r3, r0, #8 + 101c2: 2400 movs r4, #0 + 101c4: 4602 mov r2, r0 + 101c6: f023 0307 bic.w r3, r3, #7 + 101ca: 4621 mov r1, r4 + 101cc: ebad 0d03 sub.w sp, sp, r3 + 101d0: f10d 00b9 add.w r0, sp, #185 ; 0xb9 + 101d4: f88d 40b8 strb.w r4, [sp, #184] ; 0xb8 + 101d8: f01e f9cc bl 2e574 + 101dc: a82e add r0, sp, #184 ; 0xb8 if(str[i] == 32){ - 100d8: f818 3004 ldrb.w r3, [r8, r4] - 100dc: 2b20 cmp r3, #32 - 100de: f000 80c4 beq.w 1026a + 101de: f818 3004 ldrb.w r3, [r8, r4] + 101e2: 2b20 cmp r3, #32 + 101e4: f000 82e7 beq.w 107b6 } else if(str[i] == 0){ - 100e2: b14b cbz r3, 100f8 - 100e4: 2300 movs r3, #0 + 101e8: b14b cbz r3, 101fe + 101ea: 2300 movs r3, #0 for(uint8_t i = 0, e = 0;i + 101fc: dcf6 bgt.n 101ec strcpy(str, buff); - 100f8: 4601 mov r1, r0 - 100fa: 4640 mov r0, r8 - 100fc: f01e fc3e bl 2e97c + 101fe: 4601 mov r1, r0 + 10200: 4640 mov r0, r8 + 10202: f01e fc2b bl 2ea5c uint16_t len = strlen(str); - 10100: 4640 mov r0, r8 - 10102: 46d5 mov sp, sl - 10104: f01e fd1c bl 2eb40 + 10206: 4640 mov r0, r8 + 10208: 46d5 mov sp, sl + 1020a: f01e fd19 bl 2ec40 if(len == 0 || str[len-1] != 32){ - 10108: 2800 cmp r0, #0 - 1010a: d055 beq.n 101b8 - 1010c: f107 03f7 add.w r3, r7, #247 ; 0xf7 - 10110: 5c1b ldrb r3, [r3, r0] - 10112: 2b20 cmp r3, #32 - 10114: d148 bne.n 101a8 + 1020e: b3b0 cbz r0, 1027e + 10210: f107 03f7 add.w r3, r7, #247 ; 0xf7 + 10214: 5c1b ldrb r3, [r3, r0] + 10216: 2b20 cmp r3, #32 + 10218: d129 bne.n 1026e for(int i = len; i --> 0;){ - 10116: eb08 0300 add.w r3, r8, r0 + 1021a: eb08 0300 add.w r3, r8, r0 str[i] = 0; - 1011a: 2100 movs r1, #0 - 1011c: e017 b.n 1014e - 1011e: bf00 nop - 10120: 200015d4 .word 0x200015d4 - 10124: 20002274 .word 0x20002274 - 10128: 200022ac .word 0x200022ac - 1012c: 200022a4 .word 0x200022a4 - 10130: 2000229c .word 0x2000229c - 10134: 20001f64 .word 0x20001f64 - 10138: 20002228 .word 0x20002228 - 1013c: 20002220 .word 0x20002220 - 10140: 200015cc .word 0x200015cc - 10144: 2000228c .word 0x2000228c + 1021e: 2100 movs r1, #0 + 10220: e002 b.n 10228 } if(str[i] > 32){ - 10148: d82e bhi.n 101a8 + 10222: d824 bhi.n 1026e for(int i = len; i --> 0;){ - 1014a: 3801 subs r0, #1 - 1014c: d02c beq.n 101a8 + 10224: 3801 subs r0, #1 + 10226: d022 beq.n 1026e if(str[i] != 0){ - 1014e: f813 2d01 ldrb.w r2, [r3, #-1]! - 10152: 2a00 cmp r2, #0 - 10154: d0f9 beq.n 1014a + 10228: f813 2d01 ldrb.w r2, [r3, #-1]! + 1022c: 2a00 cmp r2, #0 + 1022e: d0f9 beq.n 10224 if(str[i] == 32){ - 10156: 2a20 cmp r2, #32 - 10158: d1f6 bne.n 10148 + 10230: 2a20 cmp r2, #32 + 10232: d1f6 bne.n 10222 str[i] = 0; - 1015a: 7019 strb r1, [r3, #0] + 10234: 7019 strb r1, [r3, #0] } if(str[i] > 32){ - 1015c: e7f5 b.n 1014a - return (n>=8) ? selected : n; - 1015e: f47f ac97 bne.w fa90 - return vPot; - 10162: f892 3130 ldrb.w r3, [r2, #304] ; 0x130 - 10166: 623b str r3, [r7, #32] - return meter; - 10168: f892 3132 ldrb.w r3, [r2, #306] ; 0x132 - 1016c: 627b str r3, [r7, #36] ; 0x24 - n = controller.getSelectedChannel(); - 1016e: e498 b.n faa2 + 10236: e7f5 b.n 10224 strcpy(name, ""); - 10170: f643 3460 movw r4, #15200 ; 0x3b60 - 10174: 2100 movs r1, #0 + 10238: 2100 movs r1, #0 stateBits = 0; - 10176: 18e8 adds r0, r5, r3 + 1023a: 18e8 adds r0, r5, r3 + 1023c: f505 546e add.w r4, r5, #15232 ; 0x3b80 strcpy(name, ""); - 10178: f103 0c15 add.w ip, r3, #21 - 1017c: 442c add r4, r5 + 10240: f103 0c15 add.w ip, r3, #21 strcpy(value, ""); - 1017e: 331f adds r3, #31 + 10244: 331f adds r3, #31 stateBits = 0; - 10180: f500 5040 add.w r0, r0, #12288 ; 0x3000 + 10246: f500 5040 add.w r0, r0, #12288 ; 0x3000 strcpy(name, ""); - 10184: f804 100c strb.w r1, [r4, ip] + 1024a: f804 100c strb.w r1, [r4, ip] strcpy(value, ""); - 10188: 54e1 strb r1, [r4, r3] + 1024e: 54e1 strb r1, [r4, r3] reset = true; - 1018a: 2301 movs r3, #1 + 10250: 2301 movs r3, #1 stateBits = 0; - 1018c: f8a0 1b8c strh.w r1, [r0, #2956] ; 0xb8c - 10190: 61fb str r3, [r7, #28] + 10252: f8a0 1bac strh.w r1, [r0, #2988] ; 0xbac + 10256: 61fb str r3, [r7, #28] chInfo[n].type = BMC_DEVICE_ID_OLED; - 10192: f882 6b94 strb.w r6, [r2, #2964] ; 0xb94 + 10258: f882 6bb4 strb.w r6, [r2, #2996] ; 0xbb4 vuBits = 0; - 10196: f8a2 1b8e strh.w r1, [r2, #2958] ; 0xb8e + 1025c: f8a2 1bae strh.w r1, [r2, #2990] ; 0xbae vPotLevel = 0; - 1019a: f882 1b90 strb.w r1, [r2, #2960] ; 0xb90 + 10260: f882 1bb0 strb.w r1, [r2, #2992] ; 0xbb0 vPotBits = 0; - 1019e: f8a2 1b92 strh.w r1, [r2, #2962] ; 0xb92 + 10264: f8a2 1bb2 strh.w r1, [r2, #2994] ; 0xbb2 chInfo[n].index = index; - 101a2: f882 bb74 strb.w fp, [r2, #2932] ; 0xb74 + 10268: f882 bb94 strb.w fp, [r2, #2964] ; 0xb94 chInfo[n].type = BMC_DEVICE_ID_OLED; - 101a6: e460 b.n fa6a + 1026c: e53f b.n fcee bool small = (BMC_OLED_HEIGHT==32); // uint16_t y = BMC_OLED_HEIGHT==32 ? 0 : 16; bmcStoreName t = sync.daw.getLcdTrackName(channel); bmcStoreName t2 = sync.daw.getLcdTrackValue(channel); BMCTools::strTrim(t.name); if(strlen(t.name)>6){ - 101a8: 4640 mov r0, r8 - 101aa: f01e fcc9 bl 2eb40 - 101ae: 2806 cmp r0, #6 - 101b0: d902 bls.n 101b8 + 1026e: 4640 mov r0, r8 + 10270: f01e fce6 bl 2ec40 + 10274: 2806 cmp r0, #6 + 10276: d902 bls.n 1027e t.name[6] = 0; - 101b2: 2300 movs r3, #0 - 101b4: f888 3006 strb.w r3, [r8, #6] + 10278: 2300 movs r3, #0 + 1027a: f888 3006 strb.w r3, [r8, #6] uint16_t len = strlen(str); - 101b8: ee19 0a10 vmov r0, s18 + 1027e: ee19 0a10 vmov r0, s18 } - 101bc: 46ea mov sl, sp + 10282: 46ea mov sl, sp uint16_t len = strlen(str); - 101be: f01e fcbf bl 2eb40 + 10284: f01e fcdc bl 2ec40 if(len == 0 || str[0] != 32){ - 101c2: 4606 mov r6, r0 - 101c4: b390 cbz r0, 1022c - 101c6: f897 319c ldrb.w r3, [r7, #412] ; 0x19c - 101ca: 2b20 cmp r3, #32 - 101cc: d12e bne.n 1022c + 10288: 4606 mov r6, r0 + 1028a: b390 cbz r0, 102f2 + 1028c: f897 319c ldrb.w r3, [r7, #412] ; 0x19c + 10290: 2b20 cmp r3, #32 + 10292: d12e bne.n 102f2 char buff[len+1] = ""; - 101ce: f100 0308 add.w r3, r0, #8 - 101d2: 2400 movs r4, #0 - 101d4: 4602 mov r2, r0 - 101d6: f023 0307 bic.w r3, r3, #7 - 101da: 4621 mov r1, r4 - 101dc: ebad 0d03 sub.w sp, sp, r3 - 101e0: f10d 00b9 add.w r0, sp, #185 ; 0xb9 - 101e4: f88d 40b8 strb.w r4, [sp, #184] ; 0xb8 - 101e8: f01e f950 bl 2e48c - 101ec: a82e add r0, sp, #184 ; 0xb8 + 10294: f100 0308 add.w r3, r0, #8 + 10298: 2400 movs r4, #0 + 1029a: 4602 mov r2, r0 + 1029c: f023 0307 bic.w r3, r3, #7 + 102a0: 4621 mov r1, r4 + 102a2: ebad 0d03 sub.w sp, sp, r3 + 102a6: f10d 00b9 add.w r0, sp, #185 ; 0xb9 + 102aa: f88d 40b8 strb.w r4, [sp, #184] ; 0xb8 + 102ae: f01e f961 bl 2e574 + 102b2: a82e add r0, sp, #184 ; 0xb8 if(str[i] == 32){ - 101ee: f504 7304 add.w r3, r4, #528 ; 0x210 - 101f2: f107 0230 add.w r2, r7, #48 ; 0x30 - 101f6: 189a adds r2, r3, r2 - 101f8: f812 3ca4 ldrb.w r3, [r2, #-164] - 101fc: 2b20 cmp r3, #32 - 101fe: f000 827d beq.w 106fc + 102b4: f504 7304 add.w r3, r4, #528 ; 0x210 + 102b8: f107 0230 add.w r2, r7, #48 ; 0x30 + 102bc: 189a adds r2, r3, r2 + 102be: f812 3ca4 ldrb.w r3, [r2, #-164] + 102c2: 2b20 cmp r3, #32 + 102c4: f000 8271 beq.w 107aa } else if(str[i] == 0){ - 10202: b173 cbz r3, 10222 - 10204: 2300 movs r3, #0 + 102c8: b173 cbz r3, 102e8 + 102ca: 2300 movs r3, #0 for(uint8_t i = 0, e = 0;i + 102da: f107 0130 add.w r1, r7, #48 ; 0x30 + 102de: f504 7204 add.w r2, r4, #528 ; 0x210 + 102e2: 42a6 cmp r6, r4 + 102e4: 440a add r2, r1 + 102e6: dcf1 bgt.n 102cc strcpy(str, buff); - 10222: 4601 mov r1, r0 - 10224: ee19 0a10 vmov r0, s18 - 10228: f01e fba8 bl 2e97c + 102e8: 4601 mov r1, r0 + 102ea: ee19 0a10 vmov r0, s18 + 102ee: f01e fbb5 bl 2ea5c uint16_t len = strlen(str); - 1022c: ee19 0a10 vmov r0, s18 - 10230: 46d5 mov sp, sl - 10232: f01e fc85 bl 2eb40 + 102f2: ee19 0a10 vmov r0, s18 + 102f6: 46d5 mov sp, sl + 102f8: f01e fca2 bl 2ec40 if(len == 0 || str[len-1] != 32){ - 10236: b338 cbz r0, 10288 - 10238: f500 7304 add.w r3, r0, #528 ; 0x210 - 1023c: f107 0230 add.w r2, r7, #48 ; 0x30 - 10240: 4413 add r3, r2 - 10242: f813 3ca5 ldrb.w r3, [r3, #-165] - 10246: 2b20 cmp r3, #32 - 10248: d115 bne.n 10276 + 102fc: b308 cbz r0, 10342 + 102fe: f500 7304 add.w r3, r0, #528 ; 0x210 + 10302: f107 0230 add.w r2, r7, #48 ; 0x30 + 10306: 4413 add r3, r2 + 10308: f813 3ca5 ldrb.w r3, [r3, #-165] + 1030c: 2b20 cmp r3, #32 + 1030e: d10f bne.n 10330 for(int i = len; i --> 0;){ - 1024a: ee19 3a10 vmov r3, s18 + 10310: ee19 3a10 vmov r3, s18 str[i] = 0; - 1024e: 2100 movs r1, #0 - 10250: 4403 add r3, r0 - 10252: e002 b.n 1025a + 10314: 2100 movs r1, #0 + 10316: 4403 add r3, r0 + 10318: e002 b.n 10320 } if(str[i] > 32){ - 10254: d80f bhi.n 10276 + 1031a: d809 bhi.n 10330 for(int i = len; i --> 0;){ - 10256: 3801 subs r0, #1 - 10258: d00d beq.n 10276 + 1031c: 3801 subs r0, #1 + 1031e: d007 beq.n 10330 if(str[i] != 0){ - 1025a: f813 2d01 ldrb.w r2, [r3, #-1]! - 1025e: 2a00 cmp r2, #0 - 10260: d0f9 beq.n 10256 + 10320: f813 2d01 ldrb.w r2, [r3, #-1]! + 10324: 2a00 cmp r2, #0 + 10326: d0f9 beq.n 1031c if(str[i] == 32){ - 10262: 2a20 cmp r2, #32 - 10264: d1f6 bne.n 10254 + 10328: 2a20 cmp r2, #32 + 1032a: d1f6 bne.n 1031a str[i] = 0; - 10266: 7019 strb r1, [r3, #0] + 1032c: 7019 strb r1, [r3, #0] } if(str[i] > 32){ - 10268: e7f5 b.n 10256 - for(uint8_t i = 0, e = 0;i - 10274: e740 b.n 100f8 + 1032e: e7f5 b.n 1031c } BMCTools::strTrim(t2.name); if(strlen(t2.name)>6){ - 10276: ee19 0a10 vmov r0, s18 - 1027a: f01e fc61 bl 2eb40 - 1027e: 2806 cmp r0, #6 - 10280: d902 bls.n 10288 + 10330: ee19 0a10 vmov r0, s18 + 10334: f01e fc84 bl 2ec40 + 10338: 2806 cmp r0, #6 + 1033a: d902 bls.n 10342 t2.name[6] = 0; - 10282: 2300 movs r3, #0 - 10284: f887 31a2 strb.w r3, [r7, #418] ; 0x1a2 - 10288: 2338 movs r3, #56 ; 0x38 - 1028a: f643 3638 movw r6, #15160 ; 0x3b38 - 1028e: fb03 fa0b mul.w sl, r3, fp - 10292: 442e add r6, r5 + 1033c: 2300 movs r3, #0 + 1033e: f887 31a2 strb.w r3, [r7, #418] ; 0x1a2 + 10342: 2338 movs r3, #56 ; 0x38 + 10344: f643 3658 movw r6, #15192 ; 0x3b58 + 10348: fb03 fa0b mul.w sl, r3, fp + 1034c: 442e add r6, r5 dawHandler.renderChannelBlockOled(oled[d.index], d, d.index); - 10294: f50a 7301 add.w r3, sl, #516 ; 0x204 - 10298: 18f3 adds r3, r6, r3 - 1029a: 62fb str r3, [r7, #44] ; 0x2c + 1034e: f50a 7301 add.w r3, sl, #516 ; 0x204 + 10352: 18f3 adds r3, r6, r3 + 10354: 62fb str r3, [r7, #44] ; 0x2c } // #if BMC_MAX_OLED > 1 // selectMux(index); // #endif if(reset){ - 1029c: 69fb ldr r3, [r7, #28] - 1029e: 2b00 cmp r3, #0 - 102a0: f040 818c bne.w 105bc - 102a4: 69ba ldr r2, [r7, #24] - 102a6: 2322 movs r3, #34 ; 0x22 + 10356: 69fb ldr r3, [r7, #28] + 10358: 2b00 cmp r3, #0 + 1035a: f040 8186 bne.w 1066a + 1035e: 69b9 ldr r1, [r7, #24] + 10360: 2322 movs r3, #34 ; 0x22 + 10362: f505 526e add.w r2, r5, #15232 ; 0x3b80 BMC_SSD1306& display = oled.display; - 102a8: f50a 7a04 add.w sl, sl, #528 ; 0x210 + 10366: f50a 7a04 add.w sl, sl, #528 ; 0x210 + 1036a: fb03 f301 mul.w r3, r3, r1 display.fillRect(0, 0, 128, BMC_OLED_HEIGHT, BMC_OLED_BLACK); display.fillRect(25, (small ? 24 : 56), 101, 8, BMC_OLED_WHITE); display.fillRect(71, (small ? 26 : 58), 9, 4, BMC_OLED_WHITE); } // track name if(!BMC_STR_MATCH(t.name, chInfo[n].name)){ - 102ac: 4640 mov r0, r8 - 102ae: fb03 f302 mul.w r3, r3, r2 - 102b2: f643 3260 movw r2, #15200 ; 0x3b60 + 1036e: 4640 mov r0, r8 BMC_SSD1306& display = oled.display; - 102b6: 44b2 add sl, r6 + 10370: 44b2 add sl, r6 if(!BMC_STR_MATCH(t.name, chInfo[n].name)){ - 102b8: 18aa adds r2, r5, r2 - 102ba: f103 0415 add.w r4, r3, #21 - 102be: 617b str r3, [r7, #20] - 102c0: 4414 add r4, r2 - 102c2: 61fa str r2, [r7, #28] - 102c4: 4621 mov r1, r4 - 102c6: f01e f9ef bl 2e6a8 - 102ca: 2800 cmp r0, #0 - 102cc: f040 813b bne.w 10546 + 10372: 61fa str r2, [r7, #28] + 10374: f103 0415 add.w r4, r3, #21 + 10378: 617b str r3, [r7, #20] + 1037a: 4414 add r4, r2 + 1037c: 4621 mov r1, r4 + 1037e: f01e fa03 bl 2e788 + 10382: 2800 cmp r0, #0 + 10384: f040 8136 bne.w 105f4 uint8_t fontSize = small ? 2 : 3; oled.printCenteredXY(t.name, 23, 1, 105, (fontSize * 8), 0); show = true; } // channel value if(!BMC_STR_MATCH(t2.name, chInfo[n].value)){ - 102d0: 697b ldr r3, [r7, #20] - 102d2: ee19 0a10 vmov r0, s18 - 102d6: 69fc ldr r4, [r7, #28] - 102d8: 331f adds r3, #31 - 102da: 441c add r4, r3 - 102dc: 4621 mov r1, r4 - 102de: f01e f9e3 bl 2e6a8 - 102e2: 2800 cmp r0, #0 - 102e4: f040 80a3 bne.w 1042e + 10388: 697b ldr r3, [r7, #20] + 1038a: ee19 0a10 vmov r0, s18 + 1038e: 69fd ldr r5, [r7, #28] + 10390: 331f adds r3, #31 + 10392: 441d add r5, r3 + 10394: 4629 mov r1, r5 + 10396: f01e f9f7 bl 2e788 + 1039a: 2800 cmp r0, #0 + 1039c: f040 80a3 bne.w 104e6 oled.printCenteredXY(t2.name, 35, 31, 82, 16, 0); show = true; } } // Meter if(vuValue != chInfo[n].vuValue){ - 102e8: 69bb ldr r3, [r7, #24] - 102ea: 2522 movs r5, #34 ; 0x22 - 102ec: 6a7a ldr r2, [r7, #36] ; 0x24 - 102ee: fb05 9503 mla r5, r5, r3, r9 - 102f2: f895 3b8d ldrb.w r3, [r5, #2957] ; 0xb8d - 102f6: 4293 cmp r3, r2 - 102f8: d046 beq.n 10388 + 103a0: 69bb ldr r3, [r7, #24] + 103a2: 2522 movs r5, #34 ; 0x22 + 103a4: 6a7a ldr r2, [r7, #36] ; 0x24 + 103a6: fb05 9503 mla r5, r5, r3, r9 + 103aa: f895 3bad ldrb.w r3, [r5, #2989] ; 0xbad + 103ae: 4293 cmp r3, r2 + 103b0: d046 beq.n 10440 chInfo[n].vuValue = vuValue; - 102fa: 240c movs r4, #12 - 102fc: 261e movs r6, #30 - 102fe: f8d7 800c ldr.w r8, [r7, #12] - 10302: f8d7 b02c ldr.w fp, [r7, #44] ; 0x2c - 10306: f885 2b8d strb.w r2, [r5, #2957] ; 0xb8d + 103b2: 240c movs r4, #12 + 103b4: 261e movs r6, #30 + 103b6: f8d7 800c ldr.w r8, [r7, #12] + 103ba: f8d7 b02c ldr.w fp, [r7, #44] ; 0x2c + 103be: f885 2bad strb.w r2, [r5, #2989] ; 0xbad for(int8_t e = 13 ; e --> 1 ;){ - 1030a: e029 b.n 10360 + 103c2: e029 b.n 10418 return (n>=8) ? selected : n; - 1030c: bf0c ite eq - 1030e: f893 20e1 ldrbeq.w r2, [r3, #225] ; 0xe1 - 10312: 4642 movne r2, r8 + 103c4: bf0c ite eq + 103c6: f893 20e1 ldrbeq.w r2, [r3, #225] ; 0xe1 + 103ca: 4642 movne r2, r8 if(max > 0 && (meter < max)){ - 10314: eb03 03c2 add.w r3, r3, r2, lsl #3 - 10318: f893 20f2 ldrb.w r2, [r3, #242] ; 0xf2 - 1031c: f1c4 030d rsb r3, r4, #13 - 10320: b2db uxtb r3, r3 - 10322: 429a cmp r2, r3 - 10324: d321 bcc.n 1036a + 103cc: eb03 03c2 add.w r3, r3, r2, lsl #3 + 103d0: f893 20f2 ldrb.w r2, [r3, #242] ; 0xf2 + 103d4: f1c4 030d rsb r3, r4, #13 + 103d8: b2db uxtb r3, r3 + 103da: 429a cmp r2, r3 + 103dc: d321 bcc.n 10422 int8_t ee = abs(e-12) + 1; bool v = sync.daw.controller.getMeter(channel, ee)>0; if(bitRead(chInfo[n].vuBits, e) != v){ - 10326: f8b5 3b8e ldrh.w r3, [r5, #2958] ; 0xb8e - 1032a: fa43 f204 asr.w r2, r3, r4 - 1032e: 07d2 lsls r2, r2, #31 - 10330: d412 bmi.n 10358 + 103de: f8b5 3bae ldrh.w r3, [r5, #2990] ; 0xbae + 103e2: fa43 f204 asr.w r2, r3, r4 + 103e6: 07d2 lsls r2, r2, #31 + 103e8: d412 bmi.n 10410 bitWrite(chInfo[n].vuBits, e, v); - 10332: 2101 movs r1, #1 + 103ea: 2101 movs r1, #1 if(!small){ display.fillRect(2, (e*5), 12, 4, v ? BMC_OLED_WHITE : BMC_OLED_BLACK); } else { display.fillRect(2, (e*2)+6, 12, 2, v ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 10334: f10b 000c add.w r0, fp, #12 - 10338: b232 sxth r2, r6 + 103ec: f10b 000c add.w r0, fp, #12 + 103f0: b232 sxth r2, r6 bitWrite(chInfo[n].vuBits, e, v); - 1033a: fa01 fc04 lsl.w ip, r1, r4 - 1033e: ea43 030c orr.w r3, r3, ip - 10342: b29b uxth r3, r3 + 103f2: fa01 fc04 lsl.w ip, r1, r4 + 103f6: ea43 030c orr.w r3, r3, ip + 103fa: b29b uxth r3, r3 display.fillRect(2, (e*2)+6, 12, 2, v ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 10344: f8a5 3b8e strh.w r3, [r5, #2958] ; 0xb8e + 103fc: f8a5 3bae strh.w r3, [r5, #2990] ; 0xbae } show = true; - 10348: 2301 movs r3, #1 + 10400: 2301 movs r3, #1 display.fillRect(2, (e*2)+6, 12, 2, v ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 1034a: 9101 str r1, [sp, #4] - 1034c: 2102 movs r1, #2 - 1034e: 9100 str r1, [sp, #0] + 10402: 9101 str r1, [sp, #4] + 10404: 2102 movs r1, #2 + 10406: 9100 str r1, [sp, #0] show = true; - 10350: 62bb str r3, [r7, #40] ; 0x28 + 10408: 62bb str r3, [r7, #40] ; 0x28 display.fillRect(2, (e*2)+6, 12, 2, v ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 10352: 230c movs r3, #12 - 10354: f015 fb1a bl 2598c + 1040a: 230c movs r3, #12 + 1040c: f015 fb34 bl 25a78 for(int8_t e = 13 ; e --> 1 ;){ - 10358: 3e02 subs r6, #2 - 1035a: 3c01 subs r4, #1 - 1035c: b2b6 uxth r6, r6 - 1035e: d013 beq.n 10388 + 10410: 3e02 subs r6, #2 + 10412: 3c01 subs r4, #1 + 10414: b2b6 uxth r6, r6 + 10416: d013 beq.n 10440 return chAllowed(n) ? channel[chCheck(n)].vu.getMeter(max) : 0; - 10360: f1b8 0f08 cmp.w r8, #8 + 10418: f1b8 0f08 cmp.w r8, #8 bool v = sync.daw.controller.getMeter(channel, ee)>0; - 10364: f8d9 3b70 ldr.w r3, [r9, #2928] ; 0xb70 - 10368: d9d0 bls.n 1030c + 1041c: f8d9 3b90 ldr.w r3, [r9, #2960] ; 0xb90 + 10420: d9d0 bls.n 103c4 if(bitRead(chInfo[n].vuBits, e) != v){ - 1036a: f8b5 3b8e ldrh.w r3, [r5, #2958] ; 0xb8e - 1036e: fa43 f204 asr.w r2, r3, r4 - 10372: 07d1 lsls r1, r2, #31 - 10374: d5f0 bpl.n 10358 + 10422: f8b5 3bae ldrh.w r3, [r5, #2990] ; 0xbae + 10426: fa43 f204 asr.w r2, r3, r4 + 1042a: 07d2 lsls r2, r2, #31 + 1042c: d5f0 bpl.n 10410 bitWrite(chInfo[n].vuBits, e, v); - 10376: 2201 movs r2, #1 + 1042e: 2201 movs r2, #1 display.fillRect(2, (e*2)+6, 12, 2, v ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 10378: f10b 000c add.w r0, fp, #12 - 1037c: 2100 movs r1, #0 + 10430: f10b 000c add.w r0, fp, #12 + 10434: 2100 movs r1, #0 bitWrite(chInfo[n].vuBits, e, v); - 1037e: 40a2 lsls r2, r4 - 10380: ea23 0302 bic.w r3, r3, r2 + 10436: 40a2 lsls r2, r4 + 10438: ea23 0302 bic.w r3, r3, r2 display.fillRect(2, (e*2)+6, 12, 2, v ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 10384: b232 sxth r2, r6 - 10386: e7dd b.n 10344 + 1043c: b232 sxth r2, r6 + 1043e: e7dd b.n 103fc } } } // vPot if(vPotValue != chInfo[n].vPotLevel){ - 10388: 69bb ldr r3, [r7, #24] - 1038a: 2422 movs r4, #34 ; 0x22 - 1038c: 6a3a ldr r2, [r7, #32] - 1038e: fb04 9403 mla r4, r4, r3, r9 - 10392: f894 3b90 ldrb.w r3, [r4, #2960] ; 0xb90 - 10396: 4293 cmp r3, r2 - 10398: d040 beq.n 1041c + 10440: 69bb ldr r3, [r7, #24] + 10442: 2422 movs r4, #34 ; 0x22 + 10444: 6a3a ldr r2, [r7, #32] + 10446: fb04 9403 mla r4, r4, r3, r9 + 1044a: f894 3bb0 ldrb.w r3, [r4, #2992] ; 0xbb0 + 1044e: 4293 cmp r3, r2 + 10450: d040 beq.n 104d4 chInfo[n].vPotLevel = vPotValue; - 1039a: 2501 movs r5, #1 - 1039c: 261a movs r6, #26 - 1039e: f8d7 800c ldr.w r8, [r7, #12] - 103a2: f8d7 b02c ldr.w fp, [r7, #44] ; 0x2c - 103a6: f884 2b90 strb.w r2, [r4, #2960] ; 0xb90 + 10452: 2501 movs r5, #1 + 10454: 261a movs r6, #26 + 10456: f8d7 800c ldr.w r8, [r7, #12] + 1045a: f8d7 b02c ldr.w fp, [r7, #44] ; 0x2c + 1045e: f884 2bb0 strb.w r2, [r4, #2992] ; 0xbb0 for(uint8_t e = 0 ; e < 11 ; e++){ - 103aa: e02f b.n 1040c + 10462: e02f b.n 104c4 return (n>=8) ? selected : n; - 103ac: f893 20e1 ldrb.w r2, [r3, #225] ; 0xe1 - 103b0: eb03 03c2 add.w r3, r3, r2, lsl #3 - 103b4: f893 30f0 ldrb.w r3, [r3, #240] ; 0xf0 + 10464: f893 20e1 ldrb.w r2, [r3, #225] ; 0xe1 + 10468: eb03 03c2 add.w r3, r3, r2, lsl #3 + 1046c: f893 30f0 ldrb.w r3, [r3, #240] ; 0xf0 return (vPot>>4)&0x03; - 103b8: f3c3 1201 ubfx r2, r3, #4, #2 + 10470: f3c3 1201 ubfx r2, r3, #4, #2 switch(getVPotMode()){ - 103bc: 2a02 cmp r2, #2 - 103be: d053 beq.n 10468 - 103c0: 2a03 cmp r2, #3 - 103c2: d055 beq.n 10470 - 103c4: 2a01 cmp r2, #1 - 103c6: d038 beq.n 1043a + 10474: 2a02 cmp r2, #2 + 10476: d053 beq.n 10520 + 10478: 2a03 cmp r2, #3 + 1047a: d055 beq.n 10528 + 1047c: 2a01 cmp r2, #1 + 1047e: d038 beq.n 104f2 uint8_t value = vPot & 0x0F; - 103c8: f003 030f and.w r3, r3, #15 + 10480: f003 030f and.w r3, r3, #15 return (ledN == value) ? value : 0; - 103cc: b2ea uxtb r2, r5 - 103ce: 4293 cmp r3, r2 - 103d0: d03c beq.n 1044c + 10484: b2ea uxtb r2, r5 + 10486: 4293 cmp r3, r2 + 10488: d03c beq.n 10504 bool l = sync.daw.controller.getVPotValue(channel, e+1)>0; if(bitRead(chInfo[n].vPotBits, e) != l){ - 103d2: f8b4 1b92 ldrh.w r1, [r4, #2962] ; 0xb92 - 103d6: 1e68 subs r0, r5, #1 - 103d8: fa41 f300 asr.w r3, r1, r0 - 103dc: 07da lsls r2, r3, #31 - 103de: d510 bpl.n 10402 + 1048a: f8b4 1bb2 ldrh.w r1, [r4, #2994] ; 0xbb2 + 1048e: 1e68 subs r0, r5, #1 + 10490: fa41 f300 asr.w r3, r1, r0 + 10494: 07da lsls r2, r3, #31 + 10496: d510 bpl.n 104ba bitWrite(chInfo[n].vPotBits, e, l); - 103e0: 2301 movs r3, #1 + 10498: 2301 movs r3, #1 display.fillRect(26+(e*9), (small ? 26 : 58), 9, 4, l ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 103e2: 2200 movs r2, #0 + 1049a: 2200 movs r2, #0 bitWrite(chInfo[n].vPotBits, e, l); - 103e4: 4083 lsls r3, r0 + 1049c: 4083 lsls r3, r0 display.fillRect(26+(e*9), (small ? 26 : 58), 9, 4, l ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 103e6: f10b 000c add.w r0, fp, #12 + 1049e: f10b 000c add.w r0, fp, #12 bitWrite(chInfo[n].vPotBits, e, l); - 103ea: ea21 0303 bic.w r3, r1, r3 + 104a2: ea21 0303 bic.w r3, r1, r3 display.fillRect(26+(e*9), (small ? 26 : 58), 9, 4, l ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 103ee: b231 sxth r1, r6 - 103f0: f8a4 3b92 strh.w r3, [r4, #2962] ; 0xb92 - 103f4: 2304 movs r3, #4 - 103f6: 9201 str r2, [sp, #4] - 103f8: 221a movs r2, #26 - 103fa: 9300 str r3, [sp, #0] - 103fc: 2309 movs r3, #9 - 103fe: f015 fac5 bl 2598c + 104a6: b231 sxth r1, r6 + 104a8: f8a4 3bb2 strh.w r3, [r4, #2994] ; 0xbb2 + 104ac: 2304 movs r3, #4 + 104ae: 9201 str r2, [sp, #4] + 104b0: 221a movs r2, #26 + 104b2: 9300 str r3, [sp, #0] + 104b4: 2309 movs r3, #9 + 104b6: f015 fadf bl 25a78 for(uint8_t e = 0 ; e < 11 ; e++){ - 10402: 2d0b cmp r5, #11 - 10404: d00e beq.n 10424 - 10406: 3609 adds r6, #9 - 10408: 3501 adds r5, #1 - 1040a: b2b6 uxth r6, r6 + 104ba: 2d0b cmp r5, #11 + 104bc: d00e beq.n 104dc + 104be: 3609 adds r6, #9 + 104c0: 3501 adds r5, #1 + 104c2: b2b6 uxth r6, r6 return chAllowed(n) ? channel[chCheck(n)].getVPotValue(ledN) : 0; - 1040c: f1b8 0f08 cmp.w r8, #8 + 104c4: f1b8 0f08 cmp.w r8, #8 bool l = sync.daw.controller.getVPotValue(channel, e+1)>0; - 10410: f8d9 3b70 ldr.w r3, [r9, #2928] ; 0xb70 - 10414: d8dd bhi.n 103d2 + 104c8: f8d9 3b90 ldr.w r3, [r9, #2960] ; 0xb90 + 104cc: d8dd bhi.n 1048a return (n>=8) ? selected : n; - 10416: d0c9 beq.n 103ac - 10418: 4642 mov r2, r8 - 1041a: e7c9 b.n 103b0 + 104ce: d0c9 beq.n 10464 + 104d0: 4642 mov r2, r8 + 104d2: e7c9 b.n 10468 } } show = true; } if(show){ - 1041c: 6abb ldr r3, [r7, #40] ; 0x28 - 1041e: 2b00 cmp r3, #0 - 10420: f43e aca5 beq.w ed6e + 104d4: 6abb ldr r3, [r7, #40] ; 0x28 + 104d6: 2b00 cmp r3, #0 + 104d8: f43e ace2 beq.w eea0 display.display(); - 10424: 4650 mov r0, sl - 10426: f008 fac1 bl 189ac - 1042a: f7fe bca0 b.w ed6e + 104dc: 4650 mov r0, sl + 104de: f008 fad7 bl 18a90 + 104e2: f7fe bcdd b.w eea0 strcpy(chInfo[n].value, t2.name); - 1042e: ee19 1a10 vmov r1, s18 - 10432: 4620 mov r0, r4 - 10434: f01e faa2 bl 2e97c + 104e6: ee19 1a10 vmov r1, s18 + 104ea: 4628 mov r0, r5 + 104ec: f01e fab6 bl 2ea5c if(!small){ - 10438: e756 b.n 102e8 + 104f0: e756 b.n 103a0 if(ledN==6){ - 1043a: 2d06 cmp r5, #6 + 104f2: 2d06 cmp r5, #6 uint8_t value = vPot & 0x0F; - 1043c: f003 030f and.w r3, r3, #15 + 104f4: f003 030f and.w r3, r3, #15 if(ledN==6){ - 10440: b2ea uxtb r2, r5 - 10442: d059 beq.n 104f8 + 104f8: b2ea uxtb r2, r5 + 104fa: d054 beq.n 105a6 } else if(ledN<6){ - 10444: 2a05 cmp r2, #5 - 10446: d94c bls.n 104e2 + 104fc: 2a05 cmp r2, #5 + 104fe: d947 bls.n 10590 return (ledN > value) ? 0 : value; - 10448: 429a cmp r2, r3 - 1044a: d8c2 bhi.n 103d2 + 10500: 429a cmp r2, r3 + 10502: d8c2 bhi.n 1048a if(bitRead(chInfo[n].vPotBits, e) != l){ - 1044c: f8b4 1b92 ldrh.w r1, [r4, #2962] ; 0xb92 - 10450: 1e68 subs r0, r5, #1 + 10504: f8b4 1bb2 ldrh.w r1, [r4, #2994] ; 0xbb2 + 10508: 1e68 subs r0, r5, #1 bool l = sync.daw.controller.getVPotValue(channel, e+1)>0; - 10452: 3b00 subs r3, #0 + 1050a: 3b00 subs r3, #0 if(bitRead(chInfo[n].vPotBits, e) != l){ - 10454: fa41 f200 asr.w r2, r1, r0 + 1050c: fa41 f200 asr.w r2, r1, r0 bool l = sync.daw.controller.getVPotValue(channel, e+1)>0; - 10458: bf18 it ne - 1045a: 2301 movne r3, #1 + 10510: bf18 it ne + 10512: 2301 movne r3, #1 if(bitRead(chInfo[n].vPotBits, e) != l){ - 1045c: f002 0201 and.w r2, r2, #1 - 10460: 429a cmp r2, r3 - 10462: d0ce beq.n 10402 + 10514: f002 0201 and.w r2, r2, #1 + 10518: 429a cmp r2, r3 + 1051a: d0ce beq.n 104ba bitWrite(chInfo[n].vPotBits, e, l); - 10464: b9ab cbnz r3, 10492 - 10466: e7bb b.n 103e0 + 1051c: b9ab cbnz r3, 1054a + 1051e: e7bb b.n 10498 uint8_t value = vPot & 0x0F; - 10468: f003 030f and.w r3, r3, #15 + 10520: f003 030f and.w r3, r3, #15 return (ledN > value) ? 0 : value; - 1046c: b2ea uxtb r2, r5 - 1046e: e7eb b.n 10448 + 10524: b2ea uxtb r2, r5 + 10526: e7eb b.n 10500 uint8_t value = vPot & 0x0F; - 10470: f003 030f and.w r3, r3, #15 + 10528: f003 030f and.w r3, r3, #15 if((ledN==6 && value==1) || value>6){ - 10474: b2e9 uxtb r1, r5 - 10476: f103 3cff add.w ip, r3, #4294967295 ; 0xffffffff - 1047a: f1dc 0000 rsbs r0, ip, #0 - 1047e: eb40 000c adc.w r0, r0, ip - 10482: 2906 cmp r1, #6 - 10484: d10e bne.n 104a4 - 10486: b168 cbz r0, 104a4 + 1052c: b2e9 uxtb r1, r5 + 1052e: f103 3cff add.w ip, r3, #4294967295 ; 0xffffffff + 10532: f1dc 0000 rsbs r0, ip, #0 + 10536: eb40 000c adc.w r0, r0, ip + 1053a: 2906 cmp r1, #6 + 1053c: d10e bne.n 1055c + 1053e: b168 cbz r0, 1055c if(bitRead(chInfo[n].vPotBits, e) != l){ - 10488: f8b4 1b92 ldrh.w r1, [r4, #2962] ; 0xb92 - 1048c: 068b lsls r3, r1, #26 - 1048e: d4ba bmi.n 10406 - 10490: 2005 movs r0, #5 + 10540: f8b4 1bb2 ldrh.w r1, [r4, #2994] ; 0xbb2 + 10544: 068b lsls r3, r1, #26 + 10546: d4ba bmi.n 104be + 10548: 2005 movs r0, #5 bitWrite(chInfo[n].vPotBits, e, l); - 10492: 2201 movs r2, #1 - 10494: fa02 f300 lsl.w r3, r2, r0 + 1054a: 2201 movs r2, #1 + 1054c: fa02 f300 lsl.w r3, r2, r0 display.fillRect(26+(e*9), (small ? 26 : 58), 9, 4, l ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 10498: f10b 000c add.w r0, fp, #12 + 10550: f10b 000c add.w r0, fp, #12 bitWrite(chInfo[n].vPotBits, e, l); - 1049c: 430b orrs r3, r1 + 10554: 430b orrs r3, r1 display.fillRect(26+(e*9), (small ? 26 : 58), 9, 4, l ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 1049e: b231 sxth r1, r6 + 10556: b231 sxth r1, r6 bitWrite(chInfo[n].vPotBits, e, l); - 104a0: b29b uxth r3, r3 + 10558: b29b uxth r3, r3 display.fillRect(26+(e*9), (small ? 26 : 58), 9, 4, l ? BMC_OLED_WHITE : BMC_OLED_BLACK); - 104a2: e7a5 b.n 103f0 - 104a4: 2b06 cmp r3, #6 - 104a6: d8d1 bhi.n 1044c + 1055a: e7a5 b.n 104a8 + 1055c: 2b06 cmp r3, #6 + 1055e: d8d1 bhi.n 10504 if(value==1 && ledN!=6){ - 104a8: 2906 cmp r1, #6 - 104aa: d001 beq.n 104b0 - 104ac: 2800 cmp r0, #0 - 104ae: d190 bne.n 103d2 + 10560: 2906 cmp r1, #6 + 10562: d001 beq.n 10568 + 10564: 2800 cmp r0, #0 + 10566: d190 bne.n 1048a if(value==i){ - 104b0: 2b02 cmp r3, #2 - 104b2: d039 beq.n 10528 - 104b4: 2b03 cmp r3, #3 - 104b6: d044 beq.n 10542 - 104b8: 2b04 cmp r3, #4 - 104ba: d040 beq.n 1053e - 104bc: 2b05 cmp r3, #5 - 104be: d034 beq.n 1052a - 104c0: 2b06 cmp r3, #6 - 104c2: d029 beq.n 10518 + 10568: 2b02 cmp r3, #2 + 1056a: d034 beq.n 105d6 + 1056c: 2b03 cmp r3, #3 + 1056e: d03f beq.n 105f0 + 10570: 2b04 cmp r3, #4 + 10572: d03b beq.n 105ec + 10574: 2b05 cmp r3, #5 + 10576: d02f beq.n 105d8 + 10578: 2b06 cmp r3, #6 + 1057a: d024 beq.n 105c6 return ledN==value ? value : 0; - 104c4: 428b cmp r3, r1 - 104c6: d184 bne.n 103d2 - if(bitRead(chInfo[n].vPotBits, e) != l){ - 104c8: f8b4 1b92 ldrh.w r1, [r4, #2962] ; 0xb92 - 104cc: 1e68 subs r0, r5, #1 - bool l = sync.daw.controller.getVPotValue(channel, e+1)>0; - 104ce: 3b00 subs r3, #0 - if(bitRead(chInfo[n].vPotBits, e) != l){ - 104d0: fa41 f200 asr.w r2, r1, r0 - bool l = sync.daw.controller.getVPotValue(channel, e+1)>0; - 104d4: bf18 it ne - 104d6: 2301 movne r3, #1 + 1057c: 4299 cmp r1, r3 + 1057e: d184 bne.n 1048a if(bitRead(chInfo[n].vPotBits, e) != l){ - 104d8: f002 0201 and.w r2, r2, #1 - 104dc: 429a cmp r2, r3 - 104de: d1d8 bne.n 10492 - 104e0: e78f b.n 10402 + 10580: f8b4 1bb2 ldrh.w r1, [r4, #2994] ; 0xbb2 + 10584: 1e68 subs r0, r5, #1 + 10586: fa41 f300 asr.w r3, r1, r0 + 1058a: 07da lsls r2, r3, #31 + 1058c: d5dd bpl.n 1054a + 1058e: e796 b.n 104be return (ledN >= value)?value:0; - 104e2: 429a cmp r2, r3 - 104e4: d208 bcs.n 104f8 - 104e6: f8b4 1b92 ldrh.w r1, [r4, #2962] ; 0xb92 - 104ea: 1e68 subs r0, r5, #1 - 104ec: fa41 f300 asr.w r3, r1, r0 - 104f0: 07db lsls r3, r3, #31 - 104f2: f53f af75 bmi.w 103e0 - 104f6: e786 b.n 10406 - 104f8: f8b4 1b92 ldrh.w r1, [r4, #2962] ; 0xb92 - 104fc: 1e68 subs r0, r5, #1 + 10590: 429a cmp r2, r3 + 10592: d208 bcs.n 105a6 + 10594: f8b4 1bb2 ldrh.w r1, [r4, #2994] ; 0xbb2 + 10598: 1e68 subs r0, r5, #1 + 1059a: fa41 f300 asr.w r3, r1, r0 + 1059e: 07db lsls r3, r3, #31 + 105a0: f53f af7a bmi.w 10498 + 105a4: e78b b.n 104be + 105a6: f8b4 1bb2 ldrh.w r1, [r4, #2994] ; 0xbb2 + 105aa: 1e68 subs r0, r5, #1 bool l = sync.daw.controller.getVPotValue(channel, e+1)>0; - 104fe: 3b00 subs r3, #0 + 105ac: 3b00 subs r3, #0 if(bitRead(chInfo[n].vPotBits, e) != l){ - 10500: fa41 f200 asr.w r2, r1, r0 + 105ae: fa41 f200 asr.w r2, r1, r0 bool l = sync.daw.controller.getVPotValue(channel, e+1)>0; - 10504: bf18 it ne - 10506: 2301 movne r3, #1 + 105b2: bf18 it ne + 105b4: 2301 movne r3, #1 if(bitRead(chInfo[n].vPotBits, e) != l){ - 10508: f002 0201 and.w r2, r2, #1 - 1050c: 429a cmp r2, r3 - 1050e: f43f af7a beq.w 10406 + 105b6: f002 0201 and.w r2, r2, #1 + 105ba: 429a cmp r2, r3 + 105bc: f43f af7f beq.w 104be bitWrite(chInfo[n].vPotBits, e, l); - 10512: 2b00 cmp r3, #0 - 10514: d1bd bne.n 10492 - 10516: e763 b.n 103e0 + 105c0: 2b00 cmp r3, #0 + 105c2: d1c2 bne.n 1054a + 105c4: e768 b.n 10498 if(bitRead(chInfo[n].vPotBits, e) != l){ - 10518: f8b4 1b92 ldrh.w r1, [r4, #2962] ; 0xb92 - 1051c: 1e68 subs r0, r5, #1 - 1051e: fa41 f300 asr.w r3, r1, r0 - 10522: 07da lsls r2, r3, #31 - 10524: d5b5 bpl.n 10492 - 10526: e76c b.n 10402 + 105c6: f8b4 1bb2 ldrh.w r1, [r4, #2994] ; 0xbb2 + 105ca: 1e68 subs r0, r5, #1 + 105cc: fa41 f300 asr.w r3, r1, r0 + 105d0: 07db lsls r3, r3, #31 + 105d2: d5ba bpl.n 1054a + 105d4: e771 b.n 104ba for(uint8_t i=2,e=0;i<7;i++,e++){ - 10528: 2200 movs r2, #0 + 105d6: 2200 movs r2, #0 if(ledN>=(5-e) && ledN<=(7+e)){ - 1052a: f1c2 0105 rsb r1, r2, #5 - 1052e: 42a9 cmp r1, r5 - 10530: f73f af4f bgt.w 103d2 - 10534: 3207 adds r2, #7 - 10536: 42aa cmp r2, r5 - 10538: f6ff af4b blt.w 103d2 - 1053c: e786 b.n 1044c + 105d8: f1c2 0105 rsb r1, r2, #5 + 105dc: 42a9 cmp r1, r5 + 105de: f73f af54 bgt.w 1048a + 105e2: 3207 adds r2, #7 + 105e4: 42aa cmp r2, r5 + 105e6: f6ff af50 blt.w 1048a + 105ea: e78b b.n 10504 for(uint8_t i=2,e=0;i<7;i++,e++){ - 1053e: 2202 movs r2, #2 - 10540: e7f3 b.n 1052a - 10542: 2201 movs r2, #1 - 10544: e7f1 b.n 1052a + 105ec: 2202 movs r2, #2 + 105ee: e7f3 b.n 105d8 + 105f0: 2201 movs r2, #1 + 105f2: e7f1 b.n 105d8 strcpy(chInfo[n].name, t.name); - 10546: 4620 mov r0, r4 - 10548: 4641 mov r1, r8 - 1054a: f01e fa17 bl 2e97c + 105f4: 4620 mov r0, r4 + 105f6: 4641 mov r1, r8 + 105f8: f01e fa30 bl 2ea5c if(hBound < 64){ - 1054e: 2338 movs r3, #56 ; 0x38 - 10550: 2500 movs r5, #0 - 10552: f107 0434 add.w r4, r7, #52 ; 0x34 - 10556: fb03 930b mla r3, r3, fp, r9 - 1055a: 62bb str r3, [r7, #40] ; 0x28 + 105fc: 2338 movs r3, #56 ; 0x38 + 105fe: 2500 movs r5, #0 + 10600: f107 0434 add.w r4, r7, #52 ; 0x34 + 10604: fb03 930b mla r3, r3, fp, r9 + 10608: 62bb str r3, [r7, #40] ; 0x28 if(i == 0){ - 1055c: 2d00 cmp r5, #0 - 1055e: f000 80c2 beq.w 106e6 + 1060a: 2d00 cmp r5, #0 + 1060c: f000 80c2 beq.w 10794 } else if(i == 1){ - 10562: 2d01 cmp r5, #1 - 10564: d077 beq.n 10656 + 10610: 2d01 cmp r5, #1 + 10612: d077 beq.n 10704 } else if(i == 2){ - 10566: 2d02 cmp r5, #2 - 10568: d056 beq.n 10618 + 10614: 2d02 cmp r5, #2 + 10616: d056 beq.n 106c6 display.setFont(BMC_FONT_SM); - 1056a: 49cc ldr r1, [pc, #816] ; (1089c ) - 1056c: 4650 mov r0, sl - 1056e: f016 f8cf bl 26710 + 10618: 49c8 ldr r1, [pc, #800] ; (1093c ) + 1061a: 4650 mov r0, sl + 1061c: f016 f8ee bl 267fc BMCTextPixelSize t; - 10572: 2300 movs r3, #0 + 10620: 2300 movs r3, #0 getTextBounds(str, t_x, t_y, &t.x, &t.y, &t.w, &t.h); - 10574: f107 023a add.w r2, r7, #58 ; 0x3a - 10578: 4641 mov r1, r8 - 1057a: 4650 mov r0, sl + 10622: f107 023a add.w r2, r7, #58 ; 0x3a + 10626: 4641 mov r1, r8 + 10628: 4650 mov r0, sl BMCTextPixelSize t; - 1057c: e9c4 3300 strd r3, r3, [r4] + 1062a: e9c4 3300 strd r3, r3, [r4] getTextBounds(str, t_x, t_y, &t.x, &t.y, &t.w, &t.h); - 10580: 9203 str r2, [sp, #12] - 10582: f107 0238 add.w r2, r7, #56 ; 0x38 - 10586: 9202 str r2, [sp, #8] - 10588: f107 0236 add.w r2, r7, #54 ; 0x36 - 1058c: e9cd 4200 strd r4, r2, [sp] - 10590: 461a mov r2, r3 - 10592: f016 f9a9 bl 268e8 + 1062e: 9203 str r2, [sp, #12] + 10630: f107 0238 add.w r2, r7, #56 ; 0x38 + 10634: 9202 str r2, [sp, #8] + 10636: f107 0236 add.w r2, r7, #54 ; 0x36 + 1063a: e9cd 4200 strd r4, r2, [sp] + 1063e: 461a mov r2, r3 + 10640: f016 f9c8 bl 269d4 t = display.strPixelSize(str, 0, 0); - 10596: 88a6 ldrh r6, [r4, #4] - 10598: f9b4 b000 ldrsh.w fp, [r4] + 10644: 88a6 ldrh r6, [r4, #4] + 10646: f9b4 b000 ldrsh.w fp, [r4] if((t.w) <= (t_w-t_padding) && ((t.h+(t_padding*2))+((t.y) + (t.h))) <= (t_h-t_padding)){ - 1059c: 2e69 cmp r6, #105 ; 0x69 + 1064a: 2e69 cmp r6, #105 ; 0x69 t = display.strPixelSize(str, 0, 0); - 1059e: f9b4 2002 ldrsh.w r2, [r4, #2] - 105a2: 88e3 ldrh r3, [r4, #6] + 1064c: f9b4 2002 ldrsh.w r2, [r4, #2] + 10650: 88e3 ldrh r3, [r4, #6] if((t.w) <= (t_w-t_padding) && ((t.h+(t_padding*2))+((t.y) + (t.h))) <= (t_h-t_padding)){ - 105a4: d806 bhi.n 105b4 - 105a6: eb02 0143 add.w r1, r2, r3, lsl #1 - 105aa: 18d0 adds r0, r2, r3 - 105ac: 2910 cmp r1, #16 - 105ae: ee09 0a90 vmov s19, r0 - 105b2: dd58 ble.n 10666 + 10652: d806 bhi.n 10662 + 10654: eb02 0143 add.w r1, r2, r3, lsl #1 + 10658: 18d0 adds r0, r2, r3 + 1065a: 2910 cmp r1, #16 + 1065c: ee09 0a90 vmov s19, r0 + 10660: dd58 ble.n 10714 for(int i = 0 ; i < 4 ; i++){ - 105b4: 2d03 cmp r5, #3 - 105b6: d053 beq.n 10660 - 105b8: 3501 adds r5, #1 - 105ba: e7cf b.n 1055c + 10662: 2d03 cmp r5, #3 + 10664: d053 beq.n 1070e + 10666: 3501 adds r5, #1 + 10668: e7cf b.n 1060a chInfo[n].vPotBits = 0xFFFF; - 105bc: 69ba ldr r2, [r7, #24] - 105be: 2322 movs r3, #34 ; 0x22 - 105c0: f64f 71ff movw r1, #65535 ; 0xffff + 1066a: 69ba ldr r2, [r7, #24] + 1066c: 2322 movs r3, #34 ; 0x22 + 1066e: f64f 71ff movw r1, #65535 ; 0xffff display.fillRect(25, (small ? 24 : 56), 101, 8, BMC_OLED_WHITE); - 105c4: 2401 movs r4, #1 + 10672: 2401 movs r4, #1 chInfo[n].vPotBits = 0xFFFF; - 105c6: fb03 9302 mla r3, r3, r2, r9 + 10674: fb03 9302 mla r3, r3, r2, r9 display.fillRect(0, 0, 128, BMC_OLED_HEIGHT, BMC_OLED_BLACK); - 105ca: 6afa ldr r2, [r7, #44] ; 0x2c + 10678: 6afa ldr r2, [r7, #44] ; 0x2c chInfo[n].vPotBits = 0xFFFF; - 105cc: f8a3 1b92 strh.w r1, [r3, #2962] ; 0xb92 + 1067a: f8a3 1bb2 strh.w r1, [r3, #2994] ; 0xbb2 display.fillRect(0, 0, 128, BMC_OLED_HEIGHT, BMC_OLED_BLACK); - 105d0: f102 000c add.w r0, r2, #12 + 1067e: f102 000c add.w r0, r2, #12 chInfo[n].vuBits = 0xFFFF; - 105d4: f8a3 1b8e strh.w r1, [r3, #2958] ; 0xb8e + 10682: f8a3 1bae strh.w r1, [r3, #2990] ; 0xbae display.fillRect(0, 0, 128, BMC_OLED_HEIGHT, BMC_OLED_BLACK); - 105d8: 2200 movs r2, #0 - 105da: 2320 movs r3, #32 - 105dc: 9201 str r2, [sp, #4] - 105de: 4611 mov r1, r2 - 105e0: 9300 str r3, [sp, #0] - 105e2: 2380 movs r3, #128 ; 0x80 - 105e4: 6278 str r0, [r7, #36] ; 0x24 - 105e6: f015 f9d1 bl 2598c + 10686: 2200 movs r2, #0 + 10688: 2320 movs r3, #32 + 1068a: 9201 str r2, [sp, #4] + 1068c: 4611 mov r1, r2 + 1068e: 9300 str r3, [sp, #0] + 10690: 2380 movs r3, #128 ; 0x80 + 10692: 6278 str r0, [r7, #36] ; 0x24 + 10694: f015 f9f0 bl 25a78 display.fillRect(25, (small ? 24 : 56), 101, 8, BMC_OLED_WHITE); - 105ea: 2308 movs r3, #8 - 105ec: 2218 movs r2, #24 - 105ee: 2119 movs r1, #25 - 105f0: e9cd 3400 strd r3, r4, [sp] - 105f4: 2365 movs r3, #101 ; 0x65 - 105f6: 6a78 ldr r0, [r7, #36] ; 0x24 - 105f8: f015 f9c8 bl 2598c + 10698: 2308 movs r3, #8 + 1069a: 2218 movs r2, #24 + 1069c: 2119 movs r1, #25 + 1069e: e9cd 3400 strd r3, r4, [sp] + 106a2: 2365 movs r3, #101 ; 0x65 + 106a4: 6a78 ldr r0, [r7, #36] ; 0x24 + 106a6: f015 f9e7 bl 25a78 vuValue = 255; - 105fc: 23ff movs r3, #255 ; 0xff + 106aa: 23ff movs r3, #255 ; 0xff display.fillRect(71, (small ? 26 : 58), 9, 4, BMC_OLED_WHITE); - 105fe: 9401 str r4, [sp, #4] - 10600: 2147 movs r1, #71 ; 0x47 - 10602: 6a78 ldr r0, [r7, #36] ; 0x24 + 106ac: 9401 str r4, [sp, #4] + 106ae: 2147 movs r1, #71 ; 0x47 + 106b0: 6a78 ldr r0, [r7, #36] ; 0x24 vuValue = 255; - 10604: 461a mov r2, r3 - 10606: 627b str r3, [r7, #36] ; 0x24 + 106b2: 461a mov r2, r3 + 106b4: 627b str r3, [r7, #36] ; 0x24 display.fillRect(71, (small ? 26 : 58), 9, 4, BMC_OLED_WHITE); - 10608: 2304 movs r3, #4 - 1060a: 9300 str r3, [sp, #0] - 1060c: 2309 movs r3, #9 + 106b6: 2304 movs r3, #4 + 106b8: 9300 str r3, [sp, #0] + 106ba: 2309 movs r3, #9 vPotValue = 255; - 1060e: 623a str r2, [r7, #32] + 106bc: 623a str r2, [r7, #32] display.fillRect(71, (small ? 26 : 58), 9, 4, BMC_OLED_WHITE); - 10610: 221a movs r2, #26 - 10612: f015 f9bb bl 2598c - 10616: e645 b.n 102a4 + 106be: 221a movs r2, #26 + 106c0: f015 f9da bl 25a78 + 106c4: e64b b.n 1035e display.setFont(BMC_FONT_MD); - 10618: 49a1 ldr r1, [pc, #644] ; (108a0 ) - 1061a: 4650 mov r0, sl - 1061c: f016 f878 bl 26710 + 106c6: 499e ldr r1, [pc, #632] ; (10940 ) + 106c8: 4650 mov r0, sl + 106ca: f016 f897 bl 267fc BMCTextPixelSize t; - 10620: 2300 movs r3, #0 + 106ce: 2300 movs r3, #0 getTextBounds(str, t_x, t_y, &t.x, &t.y, &t.w, &t.h); - 10622: f107 023a add.w r2, r7, #58 ; 0x3a - 10626: 4641 mov r1, r8 - 10628: 4650 mov r0, sl + 106d0: f107 023a add.w r2, r7, #58 ; 0x3a + 106d4: 4641 mov r1, r8 + 106d6: 4650 mov r0, sl BMCTextPixelSize t; - 1062a: e9c4 3300 strd r3, r3, [r4] + 106d8: e9c4 3300 strd r3, r3, [r4] getTextBounds(str, t_x, t_y, &t.x, &t.y, &t.w, &t.h); - 1062e: 9203 str r2, [sp, #12] - 10630: f107 0238 add.w r2, r7, #56 ; 0x38 - 10634: 9202 str r2, [sp, #8] - 10636: f107 0236 add.w r2, r7, #54 ; 0x36 - 1063a: e9cd 4200 strd r4, r2, [sp] - 1063e: 461a mov r2, r3 - 10640: f016 f952 bl 268e8 + 106dc: 9203 str r2, [sp, #12] + 106de: f107 0238 add.w r2, r7, #56 ; 0x38 + 106e2: 9202 str r2, [sp, #8] + 106e4: f107 0236 add.w r2, r7, #54 ; 0x36 + 106e8: e9cd 4200 strd r4, r2, [sp] + 106ec: 461a mov r2, r3 + 106ee: f016 f971 bl 269d4 t = display.strPixelSize(str, 0, 0); - 10644: 88a6 ldrh r6, [r4, #4] - 10646: f9b4 b000 ldrsh.w fp, [r4] + 106f2: 88a6 ldrh r6, [r4, #4] + 106f4: f9b4 b000 ldrsh.w fp, [r4] if((t.w) <= (t_w-t_padding) && ((t.h+(t_padding*2))+((t.y) + (t.h))) <= (t_h-t_padding)){ - 1064a: 2e69 cmp r6, #105 ; 0x69 + 106f8: 2e69 cmp r6, #105 ; 0x69 t = display.strPixelSize(str, 0, 0); - 1064c: f9b4 2002 ldrsh.w r2, [r4, #2] - 10650: 88e3 ldrh r3, [r4, #6] + 106fa: f9b4 2002 ldrsh.w r2, [r4, #2] + 106fe: 88e3 ldrh r3, [r4, #6] if((t.w) <= (t_w-t_padding) && ((t.h+(t_padding*2))+((t.y) + (t.h))) <= (t_h-t_padding)){ - 10652: d8b1 bhi.n 105b8 - 10654: e7a7 b.n 105a6 + 10700: d9a8 bls.n 10654 + 10702: e7b0 b.n 10666 display.setFont(BMC_FONT_LG); - 10656: 4993 ldr r1, [pc, #588] ; (108a4 ) - 10658: 4650 mov r0, sl - 1065a: f016 f859 bl 26710 - 1065e: e7df b.n 10620 - 10660: 441a add r2, r3 - 10662: ee09 2a90 vmov s19, r2 + 10704: 498f ldr r1, [pc, #572] ; (10944 ) + 10706: 4650 mov r0, sl + 10708: f016 f878 bl 267fc + 1070c: e7df b.n 106ce + 1070e: 441a add r2, r3 + 10710: ee09 2a90 vmov s19, r2 t.y = (t_y + ((t_h) - ((t_h-t.h)/2.0))) - (((t.y) + (t.h))); - 10666: f1c3 0310 rsb r3, r3, #16 - 1066a: eeb6 6b00 vmov.f64 d6, #96 ; 0x3f000000 0.5 - 1066e: eeb3 8b00 vmov.f64 d8, #48 ; 0x41800000 16.0 + 10714: f1c3 0310 rsb r3, r3, #16 + 10718: eeb6 6b00 vmov.f64 d6, #96 ; 0x3f000000 0.5 + 1071c: eeb3 8b00 vmov.f64 d8, #48 ; 0x41800000 16.0 display.fillRect(t_x, t_y, t_w, t_h, !t_color); - 10672: 2400 movs r4, #0 + 10720: 2400 movs r4, #0 t.y = (t_y + ((t_h) - ((t_h-t.h)/2.0))) - (((t.y) + (t.h))); - 10674: ee07 3a90 vmov s15, r3 + 10722: ee07 3a90 vmov s15, r3 display.fillRect(t_x, t_y, t_w, t_h, !t_color); - 10678: 2310 movs r3, #16 - 1067a: 2117 movs r1, #23 - 1067c: 2201 movs r2, #1 + 10726: 2310 movs r3, #16 + 10728: 2117 movs r1, #23 + 1072a: 2201 movs r2, #1 t.y = (t_y + ((t_h) - ((t_h-t.h)/2.0))) - (((t.y) + (t.h))); - 1067e: eeb8 7be7 vcvt.f64.s32 d7, s15 + 1072c: eeb8 7be7 vcvt.f64.s32 d7, s15 display.fillRect(t_x, t_y, t_w, t_h, !t_color); - 10682: 4650 mov r0, sl - 10684: e9cd 3400 strd r3, r4, [sp] + 10730: 4650 mov r0, sl + 10732: e9cd 3400 strd r3, r4, [sp] t.y = (t_y + ((t_h) - ((t_h-t.h)/2.0))) - (((t.y) + (t.h))); - 10688: eea7 8b46 vfms.f64 d8, d7, d6 + 10736: eea7 8b46 vfms.f64 d8, d7, d6 display.fillRect(t_x, t_y, t_w, t_h, !t_color); - 1068c: 2369 movs r3, #105 ; 0x69 - 1068e: f015 f97d bl 2598c + 1073a: 2369 movs r3, #105 ; 0x69 + 1073c: f015 f99c bl 25a78 t.x = t_x + (((t_w-t.x)-(t.w))/2); - 10692: f1cb 0369 rsb r3, fp, #105 ; 0x69 + 10740: f1cb 0369 rsb r3, fp, #105 ; 0x69 void setTextWrap(bool w) { wrap = w; } - 10696: 6afa ldr r2, [r7, #44] ; 0x2c + 10744: 6afa ldr r2, [r7, #44] ; 0x2c return write((const uint8_t *)str, strlen(str)); } - 10698: 4640 mov r0, r8 - 1069a: 1b9b subs r3, r3, r6 + 10746: 4640 mov r0, r8 + 10748: 1b9b subs r3, r3, r6 t.y = (t_y + ((t_h) - ((t_h-t.h)/2.0))) - (((t.y) + (t.h))); - 1069c: eeb7 7b00 vmov.f64 d7, #112 ; 0x3f800000 1.0 - 106a0: f882 4027 strb.w r4, [r2, #39] ; 0x27 - 106a4: eeb8 6be9 vcvt.f64.s32 d6, s19 + 1074a: eeb7 7b00 vmov.f64 d7, #112 ; 0x3f800000 1.0 + 1074e: f882 4027 strb.w r4, [r2, #39] ; 0x27 + 10752: eeb8 6be9 vcvt.f64.s32 d6, s19 t.x = t_x + (((t_w-t.x)-(t.w))/2); - 106a8: eb03 73d3 add.w r3, r3, r3, lsr #31 - 106ac: 105b asrs r3, r3, #1 - 106ae: 3317 adds r3, #23 + 10756: eb03 73d3 add.w r3, r3, r3, lsr #31 + 1075a: 105b asrs r3, r3, #1 + 1075c: 3317 adds r3, #23 t.y = (t_y + ((t_h) - ((t_h-t.h)/2.0))) - (((t.y) + (t.h))); - 106b0: ee38 7b07 vadd.f64 d7, d8, d7 + 1075e: ee38 7b07 vadd.f64 d7, d8, d7 cursor_x = x; - 106b4: 8393 strh r3, [r2, #28] + 10762: 8393 strh r3, [r2, #28] void setTextColor(uint16_t c) { textcolor = textbgcolor = c; } - 106b6: f04f 1301 mov.w r3, #65537 ; 0x10001 - 106ba: ee37 7b46 vsub.f64 d7, d7, d6 - 106be: 6213 str r3, [r2, #32] - 106c0: eebd 7bc7 vcvt.s32.f64 s14, d7 + 10764: f04f 1301 mov.w r3, #65537 ; 0x10001 + 10768: ee37 7b46 vsub.f64 d7, d7, d6 + 1076c: 6213 str r3, [r2, #32] + 1076e: eebd 7bc7 vcvt.s32.f64 s14, d7 cursor_y = y; - 106c4: ee17 3a10 vmov r3, s14 - 106c8: b21b sxth r3, r3 - 106ca: 2b10 cmp r3, #16 - 106cc: bfa8 it ge - 106ce: 2310 movge r3, #16 - 106d0: 83d3 strh r3, [r2, #30] - 106d2: f01e fa35 bl 2eb40 - 106d6: 4641 mov r1, r8 - 106d8: 4602 mov r2, r0 - 106da: 4650 mov r0, sl - 106dc: f019 fb70 bl 29dc0 + 10772: ee17 3a10 vmov r3, s14 + 10776: b21b sxth r3, r3 + 10778: 2b10 cmp r3, #16 + 1077a: bfa8 it ge + 1077c: 2310 movge r3, #16 + 1077e: 83d3 strh r3, [r2, #30] + 10780: f01e fa5e bl 2ec40 + 10784: 4641 mov r1, r8 + 10786: 4602 mov r2, r0 + 10788: 4650 mov r0, sl + 1078a: f019 fb8f bl 29eac show = true; - 106e0: 2301 movs r3, #1 - 106e2: 62bb str r3, [r7, #40] ; 0x28 - 106e4: e5f4 b.n 102d0 + 1078e: 2301 movs r3, #1 + 10790: 62bb str r3, [r7, #40] ; 0x28 + 10792: e5f9 b.n 10388 if(hBound < 64){ - 106e6: 6abb ldr r3, [r7, #40] ; 0x28 - 106e8: f893 3d3d ldrb.w r3, [r3, #3389] ; 0xd3d - 106ec: 2b3f cmp r3, #63 ; 0x3f - 106ee: f67f af63 bls.w 105b8 + 10794: 6abb ldr r3, [r7, #40] ; 0x28 + 10796: f893 3d5d ldrb.w r3, [r3, #3421] ; 0xd5d + 1079a: 2b3f cmp r3, #63 ; 0x3f + 1079c: f67f af63 bls.w 10666 display.setFont(BMC_FONT_XL); - 106f2: 496d ldr r1, [pc, #436] ; (108a8 ) - 106f4: 4650 mov r0, sl - 106f6: f016 f80b bl 26710 - 106fa: e791 b.n 10620 - 106fc: 3401 adds r4, #1 - 106fe: b2e4 uxtb r4, r4 - 10700: 42b4 cmp r4, r6 - 10702: f6ff ad74 blt.w 101ee - 10706: e58c b.n 10222 - case 22: strcpy(data.str, "CONTROL"); break; - 10708: 4b68 ldr r3, [pc, #416] ; (108ac ) - 1070a: cb03 ldmia r3!, {r0, r1} - 1070c: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10710: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 10714: f7fc bdf8 b.w d308 - case 21: strcpy(data.str, "PROGRAM"); break; - 10718: 4b65 ldr r3, [pc, #404] ; (108b0 ) - 1071a: cb03 ldmia r3!, {r0, r1} - 1071c: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10720: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 10724: f7fc bdf0 b.w d308 - return isOn() && (!isFlat() && !isSharp()); - 10728: f04f 0800 mov.w r8, #0 - case BMC_FAS_CMD_TUNER_IN_TUNE: return sync.fas.tuner.inTune(); - 1072c: f7fb b924 b.w b978 - 10730: f505 5240 add.w r2, r5, #12288 ; 0x3000 - strcpy(data.str, "Half Time"); - 10734: 4b5f ldr r3, [pc, #380] ; (108b4 ) - 10736: f892 279d ldrb.w r2, [r2, #1949] ; 0x79d - 1073a: f3c2 1240 ubfx r2, r2, #5, #1 - 1073e: 7522 strb r2, [r4, #20] - 10740: cb03 ldmia r3!, {r0, r1} - 10742: 881b ldrh r3, [r3, #0] - 10744: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10748: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 1074c: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 - break; - 10750: f7fc bba8 b.w cea4 - 10754: f505 5240 add.w r2, r5, #12288 ; 0x3000 - strcpy(data.str, "Normal Time"); - 10758: 4b57 ldr r3, [pc, #348] ; (108b8 ) - 1075a: f892 679d ldrb.w r6, [r2, #1949] ; 0x79d - 1075e: cb07 ldmia r3!, {r0, r1, r2} - 10760: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - data.highlight = !sync.beatBuddy.isHalfTime() && !sync.beatBuddy.isDoubleTime(); - 10764: 06b1 lsls r1, r6, #26 - strcpy(data.str, "Normal Time"); - 10766: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 1076a: f8c7 2075 str.w r2, [r7, #117] ; 0x75 - data.highlight = !sync.beatBuddy.isHalfTime() && !sync.beatBuddy.isDoubleTime(); - 1076e: d404 bmi.n 1077a - 10770: f3c6 1680 ubfx r6, r6, #6, #1 - 10774: f086 0301 eor.w r3, r6, #1 - 10778: 62bb str r3, [r7, #40] ; 0x28 - 1077a: 6abb ldr r3, [r7, #40] ; 0x28 - 1077c: 7523 strb r3, [r4, #20] - break; - 1077e: f7fc bb91 b.w cea4 - strcpy(data.str, "Drumset Sel"); - 10782: 4b4e ldr r3, [pc, #312] ; (108bc ) - 10784: cb07 ldmia r3!, {r0, r1, r2} - 10786: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 1078a: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 1078e: f8c7 2075 str.w r2, [r7, #117] ; 0x75 - break; - 10792: f7fc bb87 b.w cea4 - strcpy(data.str, "Stop"); - 10796: 4a4a ldr r2, [pc, #296] ; (108c0 ) - 10798: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 1079c: 6810 ldr r0, [r2, #0] - 1079e: 7911 ldrb r1, [r2, #4] - 107a0: f893 279d ldrb.w r2, [r3, #1949] ; 0x79d - 107a4: f8c7 006d str.w r0, [r7, #109] ; 0x6d - return isSyncEnabled() && flags.read(BMC_BEATBUDDY_FLAG_PLAYING); - 107a8: f012 0301 ands.w r3, r2, #1 - 107ac: f887 1071 strb.w r1, [r7, #113] ; 0x71 - 107b0: bf18 it ne - 107b2: f3c2 0380 ubfxne r3, r2, #2, #1 - data.highlight = !sync.beatBuddy.isPlaying(); - 107b6: f083 0301 eor.w r3, r3, #1 - 107ba: 7523 strb r3, [r4, #20] - break; - 107bc: f7fc bb72 b.w cea4 - strcpy(data.str, "Start"); - 107c0: 4a40 ldr r2, [pc, #256] ; (108c4 ) - 107c2: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 107c6: 6810 ldr r0, [r2, #0] - 107c8: f893 379d ldrb.w r3, [r3, #1949] ; 0x79d - 107cc: 8892 ldrh r2, [r2, #4] - 107ce: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 107d2: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 - 107d6: f013 0201 ands.w r2, r3, #1 - 107da: bf18 it ne - 107dc: f3c3 0280 ubfxne r2, r3, #2, #1 - data.highlight = sync.beatBuddy.isPlaying(); - 107e0: 7522 strb r2, [r4, #20] - break; - 107e2: f7fc bb5f b.w cea4 - strcpy(data.str, "Accent Hit"); - 107e6: 4b38 ldr r3, [pc, #224] ; (108c8 ) - 107e8: f7ff b868 b.w f8bc - strcpy(data.str, "HP Vol"); - 107ec: 4b37 ldr r3, [pc, #220] ; (108cc ) - 107ee: 6818 ldr r0, [r3, #0] - 107f0: 889a ldrh r2, [r3, #4] - 107f2: 799b ldrb r3, [r3, #6] - 107f4: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 - 107f8: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 107fc: f887 3073 strb.w r3, [r7, #115] ; 0x73 - break; - 10800: f7fc bb50 b.w cea4 - strcpy(data.str, "Mix Vol"); - 10804: 4b32 ldr r3, [pc, #200] ; (108d0 ) - 10806: cb03 ldmia r3!, {r0, r1} - 10808: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 1080c: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - break; - 10810: f7fc bb48 b.w cea4 - strcpy(data.str, "Tap"); - 10814: 4b2f ldr r3, [pc, #188] ; (108d4 ) - 10816: 6818 ldr r0, [r3, #0] - 10818: f8c7 006d str.w r0, [r7, #109] ; 0x6d - break; - 1081c: f7fc bb42 b.w cea4 - strcpy(data.str, "Outtro"); - 10820: 4b2d ldr r3, [pc, #180] ; (108d8 ) - 10822: e7e4 b.n 107ee - strcpy(data.str, "Drum Fill"); - 10824: 4b2d ldr r3, [pc, #180] ; (108dc ) - 10826: e78b b.n 10740 - strcpy(data.str, "Pause Toggle"); - 10828: 4b2d ldr r3, [pc, #180] ; (108e0 ) - strcpy(data.str, "Folder Enter"); - 1082a: cb07 ldmia r3!, {r0, r1, r2} - 1082c: 781b ldrb r3, [r3, #0] - 1082e: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10832: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 10836: f8c7 2075 str.w r2, [r7, #117] ; 0x75 - 1083a: f887 3079 strb.w r3, [r7, #121] ; 0x79 - break; - 1083e: f7fc bb31 b.w cea4 - strcpy(data.str, "Unpause"); - 10842: 4b28 ldr r3, [pc, #160] ; (108e4 ) - 10844: cb03 ldmia r3!, {r0, r1} - 10846: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 1084a: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - break; - 1084e: f7fc bb29 b.w cea4 - strcpy(data.str, "Pause"); - 10852: 4b25 ldr r3, [pc, #148] ; (108e8 ) - 10854: 6818 ldr r0, [r3, #0] - 10856: 889b ldrh r3, [r3, #4] - 10858: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 1085c: f8a7 3071 strh.w r3, [r7, #113] ; 0x71 - break; - 10860: f7fc bb20 b.w cea4 - strcpy(data.str, "BPM Dec"); - 10864: 4b21 ldr r3, [pc, #132] ; (108ec ) - 10866: cb03 ldmia r3!, {r0, r1} - 10868: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 1086c: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - break; - 10870: f7fc bb18 b.w cea4 - strcpy(data.str, "BPM Inc"); - 10874: 4b1e ldr r3, [pc, #120] ; (108f0 ) - 10876: cb03 ldmia r3!, {r0, r1} - 10878: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 1087c: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - break; - 10880: f7fc bb10 b.w cea4 - if(newValue>max){ - 10884: 2b3e cmp r3, #62 ; 0x3e - 10886: f67f aa68 bls.w fd5a - return (newValue < min) ? max : newValue; - 1088a: 213f movs r1, #63 ; 0x3f - 1088c: f7ff b888 b.w f9a0 - long newValue = (value-amount); - 10890: 3b01 subs r3, #1 - return (newValue < min) ? min : newValue; - 10892: ea23 73e3 bic.w r3, r3, r3, asr #31 - 10896: b299 uxth r1, r3 - 10898: f7ff b882 b.w f9a0 - 1089c: 6000ff04 .word 0x6000ff04 - 108a0: 6000fef4 .word 0x6000fef4 - 108a4: 6000fee4 .word 0x6000fee4 - 108a8: 6000fed4 .word 0x6000fed4 - 108ac: 2000201c .word 0x2000201c - 108b0: 20002014 .word 0x20002014 - 108b4: 20002174 .word 0x20002174 - 108b8: 20002168 .word 0x20002168 - 108bc: 2000215c .word 0x2000215c - 108c0: 20003918 .word 0x20003918 - 108c4: 20003904 .word 0x20003904 - 108c8: 20002150 .word 0x20002150 - 108cc: 20002148 .word 0x20002148 - 108d0: 20002140 .word 0x20002140 - 108d4: 20003420 .word 0x20003420 - 108d8: 20002138 .word 0x20002138 - 108dc: 2000212c .word 0x2000212c - 108e0: 2000211c .word 0x2000211c - 108e4: 20002114 .word 0x20002114 - 108e8: 2000210c .word 0x2000210c - 108ec: 200020fc .word 0x200020fc - 108f0: 20002104 .word 0x20002104 - fetchSysEx(BMC_FAS3_FUNC_ID_BYPASS, t_block, 1, BMC_FAS3_FETCH_TYPE_14_AND_7_BIT); - 108f4: 2402 movs r4, #2 - 108f6: 2301 movs r3, #1 - 108f8: 210a movs r1, #10 - 108fa: 9400 str r4, [sp, #0] - return 1; - 108fc: 4698 mov r8, r3 - 108fe: f7f0 fd67 bl 13d0 - } - 10902: f7fb b839 b.w b978 - s = 124; - 10906: 237c movs r3, #124 ; 0x7c - 10908: f7fe bdde b.w f4c8 - direction = bitRead(ticks, 7); - 1090c: 09d8 lsrs r0, r3, #7 - amount = ticks & 0x7F; - 1090e: f003 0c7f and.w ip, r3, #127 ; 0x7f - direction = bitRead(ticks, 7); - 10912: f884 009e strb.w r0, [r4, #158] ; 0x9e - amount = ticks & 0x7F; - 10916: f884 c0a0 strb.w ip, [r4, #160] ; 0xa0 - if(amount == 0){ - 1091a: f1bc 0f00 cmp.w ip, #0 - 1091e: f47b a8d1 bne.w bac4 - 10922: f7fb b8ca b.w baba - case 17: strcpy(data.str, "PRESET"); break; - 10926: 4bce ldr r3, [pc, #824] ; (10c60 ) - 10928: 6818 ldr r0, [r3, #0] - 1092a: 889a ldrh r2, [r3, #4] - 1092c: 799b ldrb r3, [r3, #6] - 1092e: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 - 10932: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10936: f887 3073 strb.w r3, [r7, #115] ; 0x73 - 1093a: f7fc bce5 b.w d308 - case 16: strcpy(data.str, "LAYER"); break; - 1093e: 4bc9 ldr r3, [pc, #804] ; (10c64 ) - 10940: 6818 ldr r0, [r3, #0] - 10942: 889b ldrh r3, [r3, #4] - 10944: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10948: f8a7 3071 strh.w r3, [r7, #113] ; 0x71 - 1094c: f7fc bcdc b.w d308 - case 15: strcpy(data.str, "CUSTOM"); break; - 10950: 4bc5 ldr r3, [pc, #788] ; (10c68 ) - 10952: e7e9 b.n 10928 - case 14: strcpy(data.str, "INC"); break; - 10954: 4bc5 ldr r3, [pc, #788] ; (10c6c ) - 10956: 6818 ldr r0, [r3, #0] - 10958: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 1095c: f7fc bcd4 b.w d308 - case BMC_FAS_CMD_LOOPER_RDP: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REC_DUB_PLAY); break; - 10960: f243 3054 movw r0, #13140 ; 0x3354 - 10964: 2109 movs r1, #9 - return BMC_OFF_LED_EVENT; - 10966: f04f 0800 mov.w r8, #0 - case BMC_FAS_CMD_LOOPER_RDP: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REC_DUB_PLAY); break; - 1096a: 4428 add r0, r5 - 1096c: f7f8 fc38 bl 91e0 - 10970: f7fb b802 b.w b978 - return bitRead(flags, 0); - 10974: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 10978: f893 3373 ldrb.w r3, [r3, #883] ; 0x373 - if(!connected()){ - 1097c: 07db lsls r3, r3, #31 - 1097e: f57a aff9 bpl.w b974 - fetchSysEx(funcId, 0, 0, 0); - 10982: 2300 movs r3, #0 - 10984: f243 3054 movw r0, #13140 ; 0x3354 - 10988: 2110 movs r1, #16 - 1098a: 461a mov r2, r3 - 1098c: 4428 add r0, r5 - 1098e: 9300 str r3, [sp, #0] - return BMC_OFF_LED_EVENT; - 10990: 4698 mov r8, r3 - 10992: f7f0 fd1d bl 13d0 - 10996: f7fa bfef b.w b978 - case BMC_FAS_CMD_LOOPER_UNDO: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_UNDO); break; - 1099a: f243 3054 movw r0, #13140 ; 0x3354 - 1099e: 2107 movs r1, #7 - return BMC_OFF_LED_EVENT; - 109a0: f04f 0800 mov.w r8, #0 - case BMC_FAS_CMD_LOOPER_UNDO: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_UNDO); break; - 109a4: 4428 add r0, r5 - 109a6: f7f8 fc1b bl 91e0 - 109aa: f7fa bfe5 b.w b978 - case BMC_FAS_CMD_LOOPER_HALF: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_HALF); break; - 109ae: f243 3054 movw r0, #13140 ; 0x3354 - 109b2: 2106 movs r1, #6 - return BMC_OFF_LED_EVENT; - 109b4: f04f 0800 mov.w r8, #0 - case BMC_FAS_CMD_LOOPER_HALF: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_HALF); break; - 109b8: 4428 add r0, r5 - 109ba: f7f8 fc11 bl 91e0 - 109be: f7fa bfdb b.w b978 - case BMC_FAS_CMD_LOOPER_REV: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REVERSE); break; - 109c2: f243 3054 movw r0, #13140 ; 0x3354 - 109c6: 2105 movs r1, #5 - return BMC_OFF_LED_EVENT; - 109c8: f04f 0800 mov.w r8, #0 - case BMC_FAS_CMD_LOOPER_REV: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REVERSE); break; - 109cc: 4428 add r0, r5 - 109ce: f7f8 fc07 bl 91e0 - 109d2: f7fa bfd1 b.w b978 - case BMC_FAS_CMD_LOOPER_DUB: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_OVERDUB); break; - 109d6: f243 3054 movw r0, #13140 ; 0x3354 - 109da: 2104 movs r1, #4 - return BMC_OFF_LED_EVENT; - 109dc: f04f 0800 mov.w r8, #0 - case BMC_FAS_CMD_LOOPER_DUB: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_OVERDUB); break; - 109e0: 4428 add r0, r5 - 109e2: f7f8 fbfd bl 91e0 - 109e6: f7fa bfc7 b.w b978 - case BMC_FAS_CMD_LOOPER_REC: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_RECORD); break; - 109ea: f243 3054 movw r0, #13140 ; 0x3354 - 109ee: 2101 movs r1, #1 - return BMC_OFF_LED_EVENT; - 109f0: f04f 0800 mov.w r8, #0 - case BMC_FAS_CMD_LOOPER_REC: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_RECORD); break; - 109f4: 4428 add r0, r5 - 109f6: f7f8 fbf3 bl 91e0 - 109fa: f7fa bfbd b.w b978 - case BMC_FAS_CMD_LOOPER_PLAY: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_PLAY); break; - 109fe: f243 3054 movw r0, #13140 ; 0x3354 - 10a02: 2102 movs r1, #2 - return BMC_OFF_LED_EVENT; - 10a04: f04f 0800 mov.w r8, #0 - case BMC_FAS_CMD_LOOPER_PLAY: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_PLAY); break; - 10a08: 4428 add r0, r5 - 10a0a: f7f8 fbe9 bl 91e0 - 10a0e: f7fa bfb3 b.w b978 + 107a0: 4969 ldr r1, [pc, #420] ; (10948 ) + 107a2: 4650 mov r0, sl + 107a4: f016 f82a bl 267fc + 107a8: e791 b.n 106ce + for(uint8_t i = 0, e = 0;i + 107b4: e598 b.n 102e8 + 107b6: 3401 adds r4, #1 + 107b8: b2e4 uxtb r4, r4 + 107ba: 42a6 cmp r6, r4 + 107bc: f73f ad0f bgt.w 101de + 107c0: e51d b.n 101fe + return (n>=8) ? selected : n; + 107c2: f47f aaa7 bne.w fd14 + return vPot; + 107c6: f892 3130 ldrb.w r3, [r2, #304] ; 0x130 + 107ca: 623b str r3, [r7, #32] + return meter; + 107cc: f892 3132 ldrb.w r3, [r2, #306] ; 0x132 + 107d0: 627b str r3, [r7, #36] ; 0x24 + n = controller.getSelectedChannel(); + 107d2: f7ff baa8 b.w fd26 + 107d6: 2a00 cmp r2, #0 + 107d8: f43f ac5b beq.w 10092 + 107dc: 3a01 subs r2, #1 + 107de: b292 uxth r2, r2 + 107e0: e457 b.n 10092 min = lowest; - 10a12: 2600 movs r6, #0 + 107e2: 2600 movs r6, #0 t_min = 0; - 10a14: 4632 mov r2, r6 - 10a16: f7fc b8d5 b.w cbc4 - case 18: strcpy(data.str, "FAS PRESET"); break; - 10a1a: 4b95 ldr r3, [pc, #596] ; (10c70 ) - 10a1c: cb03 ldmia r3!, {r0, r1} - 10a1e: 881a ldrh r2, [r3, #0] - 10a20: 789b ldrb r3, [r3, #2] - 10a22: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10a26: f8a7 2075 strh.w r2, [r7, #117] ; 0x75 - 10a2a: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 10a2e: f887 3077 strb.w r3, [r7, #119] ; 0x77 - 10a32: f7fc bc69 b.w d308 - 10a36: f505 5540 add.w r5, r5, #12288 ; 0x3000 - 10a3a: f895 379d ldrb.w r3, [r5, #1949] ; 0x79d - return !sync.beatBuddy.isHalfTime() && !sync.beatBuddy.isDoubleTime(); - 10a3e: 0699 lsls r1, r3, #26 - 10a40: d404 bmi.n 10a4c - 10a42: f3c3 1380 ubfx r3, r3, #6, #1 - 10a46: f083 0301 eor.w r3, r3, #1 - 10a4a: 62bb str r3, [r7, #40] ; 0x28 - 10a4c: f8d7 8028 ldr.w r8, [r7, #40] ; 0x28 - 10a50: f7fa bf92 b.w b978 - midi.sendControlChange(port, channel, t_control, t_value); - 10a54: 2301 movs r3, #1 - 10a56: 2000 movs r0, #0 - 10a58: f899 27a8 ldrb.w r2, [r9, #1960] ; 0x7a8 - 10a5c: f899 17a9 ldrb.w r1, [r9, #1961] ; 0x7a9 - 10a60: 9300 str r3, [sp, #0] - 10a62: e9cd 0301 strd r0, r3, [sp, #4] - 10a66: 2350 movs r3, #80 ; 0x50 - 10a68: f8d9 0790 ldr.w r0, [r9, #1936] ; 0x790 - 10a6c: f012 fcb6 bl 233dc - 10a70: f7fc ba54 b.w cf1c - strcpy(data.str, "Flatter"); strcpy(data.label, "TUNER"); - 10a74: 4b7f ldr r3, [pc, #508] ; (10c74 ) - display.renderBlock(data); - 10a76: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "Flatter"); strcpy(data.label, "TUNER"); - 10a7a: 4a7f ldr r2, [pc, #508] ; (10c78 ) - return BMC_OFF_LED_EVENT; - 10a7c: f04f 0800 mov.w r8, #0 - display.renderBlock(data); - 10a80: 442e add r6, r5 - strcpy(data.str, "Flatter"); strcpy(data.label, "TUNER"); - 10a82: cb03 ldmia r3!, {r0, r1} - 10a84: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 10a88: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 10a8c: f893 34a3 ldrb.w r3, [r3, #1187] ; 0x4a3 - 10a90: f8c7 006d str.w r0, [r7, #109] ; 0x6d - return isOn() && flags.read(1); - 10a94: f013 0101 ands.w r1, r3, #1 - 10a98: 6810 ldr r0, [r2, #0] - 10a9a: 8892 ldrh r2, [r2, #4] - 10a9c: bf18 it ne - 10a9e: f3c3 0140 ubfxne r1, r3, #1, #1 + 107e4: 4632 mov r2, r6 + 107e6: f7fc b9ef b.w cbc8 + strcpy(data.str, "In Tune"); strcpy(data.label, "TUNER"); + 107ea: 4b58 ldr r3, [pc, #352] ; (1094c ) + 107ec: 4a58 ldr r2, [pc, #352] ; (10950 ) + 107ee: cb03 ldmia r3!, {r0, r1} + 107f0: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 107f4: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 107f8: f893 34c3 ldrb.w r3, [r3, #1219] ; 0x4c3 + 107fc: 6810 ldr r0, [r2, #0] + 107fe: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + return isOn() && (!isFlat() && !isSharp()); + 10802: f013 0101 ands.w r1, r3, #1 + 10806: 8892 ldrh r2, [r2, #4] + 10808: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 1080c: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 10810: d005 beq.n 1081e + return isOn() && flags.read(2); + 10812: 075e lsls r6, r3, #29 + 10814: d42e bmi.n 10874 + 10816: f3c3 03c0 ubfx r3, r3, #3, #1 + return isOn() && flags.read(3); + 1081a: f083 0101 eor.w r1, r3, #1 bitWrite(settings, 2, 0); - 10aa2: 78e3 ldrb r3, [r4, #3] - 10aa4: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 1081e: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - 10aa8: 4668 mov r0, sp - 10aaa: f023 0304 bic.w r3, r3, #4 - strcpy(data.str, "Flatter"); strcpy(data.label, "TUNER"); - 10aae: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - data.highlight = sync.fas.tuner.isFlatter(); - 10ab2: 7521 strb r1, [r4, #20] + 10820: f643 3658 movw r6, #15192 ; 0x3b58 + data.highlight = sync.fas.tuner.inTune(); + 10824: 7521 strb r1, [r4, #20] display.renderBlock(data); - 10ab4: 2295 movs r2, #149 ; 0x95 + 10826: 2295 movs r2, #149 ; 0x95 + 10828: f023 0304 bic.w r3, r3, #4 + 1082c: 442e add r6, r5 + 1082e: f107 0160 add.w r1, r7, #96 ; 0x60 + 10832: 4668 mov r0, sp bitWrite(settings, 3, 1); - 10ab6: f043 0308 orr.w r3, r3, #8 - 10aba: f107 0160 add.w r1, r7, #96 ; 0x60 - 10abe: 70e3 strb r3, [r4, #3] - 10ac0: f019 fe22 bl 2a708 - 10ac4: 4630 mov r0, r6 - 10ac6: e894 000e ldmia.w r4, {r1, r2, r3} - 10aca: f7f9 ff87 bl a9dc - break; - 10ace: f7fa bf53 b.w b978 - strcpy(data.str, "Flat"); strcpy(data.label, "TUNER"); - 10ad2: 4b6a ldr r3, [pc, #424] ; (10c7c ) + 10834: f043 0308 orr.w r3, r3, #8 + return BMC_OFF_LED_EVENT; + 10838: f04f 0800 mov.w r8, #0 + 1083c: 70e3 strb r3, [r4, #3] display.renderBlock(data); - 10ad4: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "Flat"); strcpy(data.label, "TUNER"); - 10ad8: 4a67 ldr r2, [pc, #412] ; (10c78 ) + 1083e: f019 ffd7 bl 2a7f0 + 10842: 4630 mov r0, r6 + 10844: e894 000e ldmia.w r4, {r1, r2, r3} + 10848: f7fa f89a bl a980 + break; + 1084c: f7fb b8ff b.w ba4e + display.renderFasTuner(data); + 10850: f643 3658 movw r6, #15192 ; 0x3b58 + 10854: f107 0160 add.w r1, r7, #96 ; 0x60 + 10858: 2295 movs r2, #149 ; 0x95 + 1085a: 4668 mov r0, sp + 1085c: 442e add r6, r5 + 1085e: f019 ffc7 bl 2a7f0 return BMC_OFF_LED_EVENT; - 10ada: f04f 0800 mov.w r8, #0 - strcpy(data.str, "Flat"); strcpy(data.label, "TUNER"); - 10ade: 6818 ldr r0, [r3, #0] + 10862: f04f 0800 mov.w r8, #0 + display.renderFasTuner(data); + 10866: 4630 mov r0, r6 + 10868: e894 000e ldmia.w r4, {r1, r2, r3} + 1086c: f7fa faf0 bl ae50 + break; + 10870: f7fb b8ed b.w ba4e + return isOn() && (!isFlat() && !isSharp()); + 10874: 2100 movs r1, #0 + 10876: e7d2 b.n 1081e + strcpy(data.str, "BPM Inc"); + 10878: 4b36 ldr r3, [pc, #216] ; (10954 ) + 1087a: cb03 ldmia r3!, {r0, r1} + 1087c: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10880: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + break; + 10884: f7fc bbb6 b.w cff4 + display.renderFasStatus(data); + 10888: f643 3658 movw r6, #15192 ; 0x3b58 + 1088c: f107 0160 add.w r1, r7, #96 ; 0x60 + 10890: 2295 movs r2, #149 ; 0x95 + 10892: 4668 mov r0, sp + 10894: 442e add r6, r5 + 10896: f019 ffab bl 2a7f0 + 1089a: e894 000e ldmia.w r4, {r1, r2, r3} + 1089e: 4630 mov r0, r6 + 108a0: f7fa fed8 bl b654 + break; + 108a4: f7fb b8d3 b.w ba4e + return sync.fas.isBlockBypassed(data.byteB) ? 100 : 0; + 108a8: f04f 0864 mov.w r8, #100 ; 0x64 + 108ac: f7fb b8cf b.w ba4e + strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); + 108b0: 4a29 ldr r2, [pc, #164] ; (10958 ) + display.renderFasLooper(data); + 108b2: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); + 108b6: 4b29 ldr r3, [pc, #164] ; (1095c ) + display.renderFasLooper(data); + 108b8: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); + 108bc: 6810 ldr r0, [r2, #0] + display.renderFasLooper(data); + 108be: 442e add r6, r5 + strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); + 108c0: 8892 ldrh r2, [r2, #4] + return BMC_OFF_LED_EVENT; + 108c2: f04f 0800 mov.w r8, #0 + strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); + 108c6: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 108ca: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 + 108ce: 6818 ldr r0, [r3, #0] + 108d0: 889a ldrh r2, [r3, #4] + 108d2: 799b ldrb r3, [r3, #6] + 108d4: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + display.renderFasLooper(data); + 108d8: 2295 movs r2, #149 ; 0x95 + strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); + 108da: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + display.renderFasLooper(data); + 108de: 4668 mov r0, sp + strcpy(data.str, "R/P/D"); strcpy(data.label, "LOOPER"); + 108e0: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 + display.renderFasLooper(data); + 108e4: f019 ff84 bl 2a7f0 + 108e8: 4630 mov r0, r6 + 108ea: e894 000e ldmia.w r4, {r1, r2, r3} + 108ee: f7fa fbcb bl b088 + break; + 108f2: f7fb b8ac b.w ba4e + strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); + 108f6: 4a1a ldr r2, [pc, #104] ; (10960 ) + display.renderFasLooper(data); + 108f8: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); + 108fc: 4b17 ldr r3, [pc, #92] ; (1095c ) + display.renderFasLooper(data); + 108fe: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); + 10902: 6810 ldr r0, [r2, #0] + display.renderFasLooper(data); + 10904: 442e add r6, r5 + strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); + 10906: 8892 ldrh r2, [r2, #4] + return BMC_OFF_LED_EVENT; + 10908: f04f 0800 mov.w r8, #0 + strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); + 1090c: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10910: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 + 10914: 6818 ldr r0, [r3, #0] + 10916: 889a ldrh r2, [r3, #4] + 10918: 799b ldrb r3, [r3, #6] + 1091a: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + display.renderFasLooper(data); + 1091e: 2295 movs r2, #149 ; 0x95 + strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); + 10920: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + display.renderFasLooper(data); + 10924: 4668 mov r0, sp + strcpy(data.str, "R/D/P"); strcpy(data.label, "LOOPER"); + 10926: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 + display.renderFasLooper(data); + 1092a: f019 ff61 bl 2a7f0 + 1092e: 4630 mov r0, r6 + 10930: e894 000e ldmia.w r4, {r1, r2, r3} + 10934: f7fa fba8 bl b088 + break; + 10938: f7fb b889 b.w ba4e + 1093c: 6000ff04 .word 0x6000ff04 + 10940: 6000fef4 .word 0x6000fef4 + 10944: 6000fee4 .word 0x6000fee4 + 10948: 6000fed4 .word 0x6000fed4 + 1094c: 20002218 .word 0x20002218 + 10950: 20002220 .word 0x20002220 + 10954: 20002104 .word 0x20002104 + 10958: 200022a4 .word 0x200022a4 + 1095c: 20002274 .word 0x20002274 + 10960: 2000229c .word 0x2000229c + bitWrite(settings, 2, 0); + 10964: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - 10ae0: 442e add r6, r5 - strcpy(data.str, "Flat"); strcpy(data.label, "TUNER"); - 10ae2: 791b ldrb r3, [r3, #4] - 10ae4: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10ae8: f887 3071 strb.w r3, [r7, #113] ; 0x71 - 10aec: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 10af0: 6810 ldr r0, [r2, #0] - 10af2: f893 34a3 ldrb.w r3, [r3, #1187] ; 0x4a3 - 10af6: 8892 ldrh r2, [r2, #4] - return isOn() && flags.read(2); - 10af8: f013 0101 ands.w r1, r3, #1 - 10afc: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - 10b00: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 10966: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "TAP"); + 1096a: 4ad4 ldr r2, [pc, #848] ; (10cbc ) display.renderBlock(data); - 10b04: 4668 mov r0, sp - 10b06: bf18 it ne - 10b08: f3c3 0180 ubfxne r1, r3, #2, #1 - bitWrite(settings, 2, 0); - 10b0c: 78e3 ldrb r3, [r4, #3] - 10b0e: 2295 movs r2, #149 ; 0x95 - 10b10: f023 0304 bic.w r3, r3, #4 - data.highlight = sync.fas.tuner.isFlat(); - 10b14: 7521 strb r1, [r4, #20] + 1096c: f107 0160 add.w r1, r7, #96 ; 0x60 + 10970: f023 0304 bic.w r3, r3, #4 + 10974: 442e add r6, r5 + strcpy(data.str, "TAP"); + 10976: 6810 ldr r0, [r2, #0] display.renderBlock(data); - 10b16: f107 0160 add.w r1, r7, #96 ; 0x60 + 10978: 2295 movs r2, #149 ; 0x95 bitWrite(settings, 3, 1); - 10b1a: f043 0308 orr.w r3, r3, #8 - 10b1e: 70e3 strb r3, [r4, #3] - 10b20: f019 fdf2 bl 2a708 - 10b24: 4630 mov r0, r6 - 10b26: e894 000e ldmia.w r4, {r1, r2, r3} - 10b2a: f7f9 ff57 bl a9dc + 1097a: f043 0308 orr.w r3, r3, #8 + return BMC_OFF_LED_EVENT; + 1097e: f04f 0800 mov.w r8, #0 + strcpy(data.str, "TAP"); + 10982: f8c7 006d str.w r0, [r7, #109] ; 0x6d + display.renderBlock(data); + 10986: 4668 mov r0, sp + 10988: 70e3 strb r3, [r4, #3] + 1098a: f019 ff31 bl 2a7f0 + 1098e: 4630 mov r0, r6 + 10990: e894 000e ldmia.w r4, {r1, r2, r3} + 10994: f7f9 fff4 bl a980 break; - 10b2e: f7fa bf23 b.w b978 - strcpy(data.str, "In Tune"); strcpy(data.label, "TUNER"); - 10b32: 4b53 ldr r3, [pc, #332] ; (10c80 ) - 10b34: 4a50 ldr r2, [pc, #320] ; (10c78 ) - 10b36: cb03 ldmia r3!, {r0, r1} - 10b38: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 10b3c: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10b40: f893 34a3 ldrb.w r3, [r3, #1187] ; 0x4a3 - 10b44: 6810 ldr r0, [r2, #0] - 10b46: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - return isOn() && (!isFlat() && !isSharp()); - 10b4a: f013 0101 ands.w r1, r3, #1 - 10b4e: 8892 ldrh r2, [r2, #4] - 10b50: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - 10b54: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - 10b58: d005 beq.n 10b66 + 10998: f7fb b859 b.w ba4e + strcpy(data.str, "Out of Tune"); strcpy(data.label, "TUNER"); + 1099c: 4bc8 ldr r3, [pc, #800] ; (10cc0 ) + 1099e: 4ec9 ldr r6, [pc, #804] ; (10cc4 ) + 109a0: cb07 ldmia r3!, {r0, r1, r2} + 109a2: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 109a6: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 109aa: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 109ae: f893 34c3 ldrb.w r3, [r3, #1219] ; 0x4c3 + 109b2: 6830 ldr r0, [r6, #0] + 109b4: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + return isOn() && (isFlat() || isSharp()); + 109b8: f013 0101 ands.w r1, r3, #1 + 109bc: 88b2 ldrh r2, [r6, #4] + 109be: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 109c2: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 109c6: d005 beq.n 109d4 return isOn() && flags.read(2); - 10b5a: 075e lsls r6, r3, #29 - 10b5c: d41c bmi.n 10b98 - 10b5e: f3c3 03c0 ubfx r3, r3, #3, #1 - return isOn() && flags.read(3); - 10b62: f083 0101 eor.w r1, r3, #1 + 109c8: 0758 lsls r0, r3, #29 + 109ca: f3c3 0180 ubfx r1, r3, #2, #1 + 109ce: bf58 it pl + 109d0: f3c3 01c0 ubfxpl r1, r3, #3, #1 bitWrite(settings, 2, 0); - 10b66: 78e3 ldrb r3, [r4, #3] + 109d4: 78e3 ldrb r3, [r4, #3] display.renderBlock(data); - 10b68: f643 3638 movw r6, #15160 ; 0x3b38 - data.highlight = sync.fas.tuner.inTune(); - 10b6c: 7521 strb r1, [r4, #20] + 109d6: f643 3658 movw r6, #15192 ; 0x3b58 + data.highlight = sync.fas.tuner.outOfTune(); + 109da: 7521 strb r1, [r4, #20] display.renderBlock(data); - 10b6e: 2295 movs r2, #149 ; 0x95 - 10b70: f023 0304 bic.w r3, r3, #4 - 10b74: 442e add r6, r5 - 10b76: f107 0160 add.w r1, r7, #96 ; 0x60 - 10b7a: 4668 mov r0, sp + 109dc: 2295 movs r2, #149 ; 0x95 + 109de: f023 0304 bic.w r3, r3, #4 + 109e2: 442e add r6, r5 + 109e4: f107 0160 add.w r1, r7, #96 ; 0x60 + 109e8: 4668 mov r0, sp bitWrite(settings, 3, 1); - 10b7c: f043 0308 orr.w r3, r3, #8 + 109ea: f043 0308 orr.w r3, r3, #8 return BMC_OFF_LED_EVENT; - 10b80: f04f 0800 mov.w r8, #0 - 10b84: 70e3 strb r3, [r4, #3] + 109ee: f04f 0800 mov.w r8, #0 + 109f2: 70e3 strb r3, [r4, #3] display.renderBlock(data); - 10b86: f019 fdbf bl 2a708 - 10b8a: 4630 mov r0, r6 - 10b8c: e894 000e ldmia.w r4, {r1, r2, r3} - 10b90: f7f9 ff24 bl a9dc + 109f4: f019 fefc bl 2a7f0 + 109f8: 4630 mov r0, r6 + 109fa: e894 000e ldmia.w r4, {r1, r2, r3} + 109fe: f7f9 ffbf bl a980 break; - 10b94: f7fa bef0 b.w b978 - return isOn() && (!isFlat() && !isSharp()); - 10b98: 2100 movs r1, #0 - 10b9a: e7e4 b.n 10b66 - display.renderFasTuner(data); - 10b9c: f643 3638 movw r6, #15160 ; 0x3b38 - 10ba0: f107 0160 add.w r1, r7, #96 ; 0x60 - 10ba4: 2295 movs r2, #149 ; 0x95 - 10ba6: 4668 mov r0, sp - 10ba8: 442e add r6, r5 - 10baa: f019 fdad bl 2a708 + 10a02: f7fb b824 b.w ba4e + strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); + 10a06: 4ab0 ldr r2, [pc, #704] ; (10cc8 ) + display.renderFasLooperIcon(data); + 10a08: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); + 10a0c: 4baf ldr r3, [pc, #700] ; (10ccc ) + display.renderFasLooperIcon(data); + 10a0e: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); + 10a12: 6810 ldr r0, [r2, #0] + display.renderFasLooperIcon(data); + 10a14: 442e add r6, r5 + strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); + 10a16: 7912 ldrb r2, [r2, #4] return BMC_OFF_LED_EVENT; - 10bae: f04f 0800 mov.w r8, #0 - display.renderFasTuner(data); - 10bb2: 4630 mov r0, r6 - 10bb4: e894 000e ldmia.w r4, {r1, r2, r3} - 10bb8: f7fa f8e6 bl ad88 + 10a18: f04f 0800 mov.w r8, #0 + strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); + 10a1c: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10a20: f887 2071 strb.w r2, [r7, #113] ; 0x71 + 10a24: 6818 ldr r0, [r3, #0] + 10a26: 889a ldrh r2, [r3, #4] + 10a28: 799b ldrb r3, [r3, #6] + 10a2a: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + display.renderFasLooperIcon(data); + 10a2e: 2295 movs r2, #149 ; 0x95 + strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); + 10a30: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + display.renderFasLooperIcon(data); + 10a34: 4668 mov r0, sp + strcpy(data.str, "UNDO"); strcpy(data.label, "LOOPER"); + 10a36: f887 30c5 strb.w r3, [r7, #197] ; 0xc5 + display.renderFasLooperIcon(data); + 10a3a: f019 fed9 bl 2a7f0 + 10a3e: 4630 mov r0, r6 + 10a40: e894 000e ldmia.w r4, {r1, r2, r3} + 10a44: f7fa fc72 bl b32c + break; + 10a48: f7fb b801 b.w ba4e + strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); + 10a4c: 4aa0 ldr r2, [pc, #640] ; (10cd0 ) + return bitRead(data, bit); + 10a4e: f505 5140 add.w r1, r5, #12288 ; 0x3000 + 10a52: 4b9e ldr r3, [pc, #632] ; (10ccc ) + display.renderFasLooperIcon(data); + 10a54: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); + 10a58: 6810 ldr r0, [r2, #0] + return BMC_OFF_LED_EVENT; + 10a5a: f04f 0800 mov.w r8, #0 + strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); + 10a5e: 7912 ldrb r2, [r2, #4] + display.renderFasLooperIcon(data); + 10a60: 442e add r6, r5 + strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); + 10a62: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10a66: f887 2071 strb.w r2, [r7, #113] ; 0x71 + 10a6a: 889a ldrh r2, [r3, #4] + 10a6c: 6818 ldr r0, [r3, #0] + 10a6e: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 10a72: 799a ldrb r2, [r3, #6] + 10a74: f891 3397 ldrb.w r3, [r1, #919] ; 0x397 + display.renderFasLooperIcon(data); + 10a78: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); + 10a7c: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + display.renderFasLooperIcon(data); + 10a80: 4668 mov r0, sp + 10a82: f3c3 1340 ubfx r3, r3, #5, #1 + strcpy(data.str, "HALF"); strcpy(data.label, "LOOPER"); + 10a86: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 + display.renderFasLooperIcon(data); + 10a8a: 2295 movs r2, #149 ; 0x95 + 10a8c: 7523 strb r3, [r4, #20] + 10a8e: f019 feaf bl 2a7f0 + 10a92: 4630 mov r0, r6 + 10a94: e894 000e ldmia.w r4, {r1, r2, r3} + 10a98: f7fa fc48 bl b32c break; - 10bbc: f7fa bedc b.w b978 + 10a9c: f7fa bfd7 b.w ba4e strcpy(data.str, "REVERSE"); strcpy(data.label, "LOOPER"); - 10bc0: 4a30 ldr r2, [pc, #192] ; (10c84 ) + 10aa0: 4a8a ldr r2, [pc, #552] ; (10ccc ) display.renderFasLooperIcon(data); - 10bc2: f643 3638 movw r6, #15160 ; 0x3b38 + 10aa2: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.str, "REVERSE"); strcpy(data.label, "LOOPER"); - 10bc6: 4b30 ldr r3, [pc, #192] ; (10c88 ) + 10aa6: 4b8b ldr r3, [pc, #556] ; (10cd4 ) return BMC_OFF_LED_EVENT; - 10bc8: f04f 0800 mov.w r8, #0 + 10aa8: f04f 0800 mov.w r8, #0 display.renderFasLooperIcon(data); - 10bcc: 442e add r6, r5 + 10aac: 442e add r6, r5 strcpy(data.str, "REVERSE"); strcpy(data.label, "LOOPER"); - 10bce: cb03 ldmia r3!, {r0, r1} - 10bd0: 8893 ldrh r3, [r2, #4] - 10bd2: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10bd6: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 - return bitRead(data, bit); - 10bda: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 10bde: 6810 ldr r0, [r2, #0] - 10be0: f893 3377 ldrb.w r3, [r3, #887] ; 0x377 - 10be4: 7992 ldrb r2, [r2, #6] - 10be6: f3c3 1300 ubfx r3, r3, #4, #1 - 10bea: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 10bee: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 10aae: cb03 ldmia r3!, {r0, r1} + 10ab0: 8893 ldrh r3, [r2, #4] + 10ab2: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10ab6: f8a7 30c3 strh.w r3, [r7, #195] ; 0xc3 + 10aba: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 10abe: 6810 ldr r0, [r2, #0] + 10ac0: f893 3397 ldrb.w r3, [r3, #919] ; 0x397 + 10ac4: 7992 ldrb r2, [r2, #6] + 10ac6: f3c3 1300 ubfx r3, r3, #4, #1 + 10aca: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 10ace: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderFasLooperIcon(data); - 10bf2: f107 0160 add.w r1, r7, #96 ; 0x60 + 10ad2: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.str, "REVERSE"); strcpy(data.label, "LOOPER"); - 10bf6: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 + 10ad6: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 display.renderFasLooperIcon(data); - 10bfa: 4668 mov r0, sp - 10bfc: 2295 movs r2, #149 ; 0x95 - 10bfe: 7523 strb r3, [r4, #20] - 10c00: f019 fd82 bl 2a708 - 10c04: 4630 mov r0, r6 - 10c06: e894 000e ldmia.w r4, {r1, r2, r3} - 10c0a: f7fa fb2b bl b264 + 10ada: 4668 mov r0, sp + 10adc: 2295 movs r2, #149 ; 0x95 + 10ade: 7523 strb r3, [r4, #20] + 10ae0: f019 fe86 bl 2a7f0 + 10ae4: 4630 mov r0, r6 + 10ae6: e894 000e ldmia.w r4, {r1, r2, r3} + 10aea: f7fa fc1f bl b32c break; - 10c0e: f7fa beb3 b.w b978 + 10aee: f7fa bfae b.w ba4e strcpy(data.str, "DUB"); strcpy(data.label, "LOOPER"); - 10c12: 4b1c ldr r3, [pc, #112] ; (10c84 ) - 10c14: f505 5140 add.w r1, r5, #12288 ; 0x3000 - 10c18: 4a1c ldr r2, [pc, #112] ; (10c8c ) + 10af2: 4b76 ldr r3, [pc, #472] ; (10ccc ) + 10af4: f505 5140 add.w r1, r5, #12288 ; 0x3000 + 10af8: 4a77 ldr r2, [pc, #476] ; (10cd8 ) display.renderFasLooperIcon(data); - 10c1a: f643 3638 movw r6, #15160 ; 0x3b38 + 10afa: f643 3658 movw r6, #15192 ; 0x3b58 return BMC_OFF_LED_EVENT; - 10c1e: f04f 0800 mov.w r8, #0 + 10afe: f04f 0800 mov.w r8, #0 strcpy(data.str, "DUB"); strcpy(data.label, "LOOPER"); - 10c22: 6810 ldr r0, [r2, #0] + 10b02: 6810 ldr r0, [r2, #0] display.renderFasLooperIcon(data); - 10c24: 442e add r6, r5 + 10b04: 442e add r6, r5 strcpy(data.str, "DUB"); strcpy(data.label, "LOOPER"); - 10c26: 889a ldrh r2, [r3, #4] - 10c28: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10c2c: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - 10c30: 6818 ldr r0, [r3, #0] - 10c32: 799a ldrb r2, [r3, #6] - 10c34: f891 3377 ldrb.w r3, [r1, #887] ; 0x377 + 10b06: 889a ldrh r2, [r3, #4] + 10b08: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10b0c: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 10b10: 6818 ldr r0, [r3, #0] + 10b12: 799a ldrb r2, [r3, #6] + 10b14: f891 3397 ldrb.w r3, [r1, #919] ; 0x397 display.renderFasLooperIcon(data); - 10c38: f107 0160 add.w r1, r7, #96 ; 0x60 + 10b18: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.str, "DUB"); strcpy(data.label, "LOOPER"); - 10c3c: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 10b1c: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderFasLooperIcon(data); - 10c40: 4668 mov r0, sp - 10c42: f3c3 0380 ubfx r3, r3, #2, #1 + 10b20: 4668 mov r0, sp + 10b22: f3c3 0380 ubfx r3, r3, #2, #1 strcpy(data.str, "DUB"); strcpy(data.label, "LOOPER"); - 10c46: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 + 10b26: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 + display.renderFasLooperIcon(data); + 10b2a: 2295 movs r2, #149 ; 0x95 + 10b2c: 7523 strb r3, [r4, #20] + 10b2e: f019 fe5f bl 2a7f0 + 10b32: 4630 mov r0, r6 + 10b34: e894 000e ldmia.w r4, {r1, r2, r3} + 10b38: f7fa fbf8 bl b32c + break; + 10b3c: f7fa bf87 b.w ba4e + chars[activeChar] = (chars[activeChar]>=9) ? 0 : (chars[activeChar]+1); + 10b40: f894 2c89 ldrb.w r2, [r4, #3209] ; 0xc89 + 10b44: 18a3 adds r3, r4, r2 + 10b46: f893 3c86 ldrb.w r3, [r3, #3206] ; 0xc86 + 10b4a: 2b08 cmp r3, #8 + 10b4c: d826 bhi.n 10b9c + 10b4e: 3301 adds r3, #1 + 10b50: b2db uxtb r3, r3 + 10b52: 4422 add r2, r4 + 10b54: f882 3c86 strb.w r3, [r2, #3206] ; 0xc86 + output = (chars[0]*100)+(chars[1]*10)+chars[2]; + 10b58: f894 3c86 ldrb.w r3, [r4, #3206] ; 0xc86 + 10b5c: eb03 0383 add.w r3, r3, r3, lsl #2 + 10b60: eb03 0283 add.w r2, r3, r3, lsl #2 + 10b64: f894 3c87 ldrb.w r3, [r4, #3207] ; 0xc87 + 10b68: eb03 0383 add.w r3, r3, r3, lsl #2 + 10b6c: 005b lsls r3, r3, #1 + 10b6e: eb03 0382 add.w r3, r3, r2, lsl #2 + 10b72: f894 2c88 ldrb.w r2, [r4, #3208] ; 0xc88 + 10b76: 4413 add r3, r2 + 10b78: f8a4 3c84 strh.w r3, [r4, #3204] ; 0xc84 + } + 10b7c: f7ff b9fa b.w ff74 + activeChar = (activeChar==0) ? 2 : (activeChar-1); + 10b80: 2302 movs r3, #2 + 10b82: f7ff b9f5 b.w ff70 + output = 0; + 10b86: 2300 movs r3, #0 + memset(chars, 0, 3); + 10b88: f505 5232 add.w r2, r5, #11392 ; 0x2c80 + output = 0; + 10b8c: f8a4 3c84 strh.w r3, [r4, #3204] ; 0xc84 + activeChar = 0; + 10b90: f884 3c89 strb.w r3, [r4, #3209] ; 0xc89 + memset(chars, 0, 3); + 10b94: 80d3 strh r3, [r2, #6] + 10b96: 7213 strb r3, [r2, #8] + break; + 10b98: f7ff b9ec b.w ff74 + chars[activeChar] = (chars[activeChar]>=9) ? 0 : (chars[activeChar]+1); + 10b9c: 2300 movs r3, #0 + 10b9e: e7d8 b.n 10b52 + s = 124; + 10ba0: 237c movs r3, #124 ; 0x7c + 10ba2: f7fe bcdc b.w f55e + if(s == 0){ + 10ba6: 2b00 cmp r3, #0 + 10ba8: d0fa beq.n 10ba0 + s--; + 10baa: 3b01 subs r3, #1 + 10bac: b2db uxtb r3, r3 + 10bae: f7fe bcd6 b.w f55e + chars[activeChar] = (chars[activeChar]==0) ? 9 : (chars[activeChar]-1); + 10bb2: f894 2c89 ldrb.w r2, [r4, #3209] ; 0xc89 + 10bb6: 18a3 adds r3, r4, r2 + 10bb8: f893 3c86 ldrb.w r3, [r3, #3206] ; 0xc86 + 10bbc: b14b cbz r3, 10bd2 + 10bbe: 3b01 subs r3, #1 + 10bc0: b2db uxtb r3, r3 + 10bc2: e7c6 b.n 10b52 + activeChar = (activeChar>=2) ? 0 : (activeChar+1); + 10bc4: f894 3c89 ldrb.w r3, [r4, #3209] ; 0xc89 + 10bc8: 2b01 cmp r3, #1 + 10bca: d904 bls.n 10bd6 + 10bcc: 2300 movs r3, #0 + 10bce: f7ff b9cf b.w ff70 + chars[activeChar] = (chars[activeChar]==0) ? 9 : (chars[activeChar]-1); + 10bd2: 2309 movs r3, #9 + 10bd4: e7bd b.n 10b52 + activeChar = (activeChar>=2) ? 0 : (activeChar+1); + 10bd6: 3301 adds r3, #1 + 10bd8: b2db uxtb r3, r3 + 10bda: f7ff b9c9 b.w ff70 + return true; + 10bde: 2301 movs r3, #1 + 10be0: 62bb str r3, [r7, #40] ; 0x28 + 10be2: f7fd bb24 b.w e22e + sprintf(data.str, "SN %u", data.byteB+data.offset); + 10be6: 69b8 ldr r0, [r7, #24] + return snapshot==t_value; + 10be8: f893 37ab ldrb.w r3, [r3, #1963] ; 0x7ab + 10bec: 4402 add r2, r0 + 10bee: 493b ldr r1, [pc, #236] ; (10cdc ) + 10bf0: 1a18 subs r0, r3, r0 + 10bf2: 4243 negs r3, r0 + 10bf4: 4143 adcs r3, r0 + 10bf6: f107 006d add.w r0, r7, #109 ; 0x6d + 10bfa: 7523 strb r3, [r4, #20] + 10bfc: f01d fb3a bl 2e274 + 10c00: f7fe ba45 b.w f08e + return 0; + 10c04: 4618 mov r0, r3 + 10c06: f7fd bae7 b.w e1d8 + case 13: strcpy(data.str, "DEC"); break; + 10c0a: 4b35 ldr r3, [pc, #212] ; (10ce0 ) + 10c0c: 6818 ldr r0, [r3, #0] + 10c0e: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10c12: f7fc bbe3 b.w d3dc + case 12: strcpy(data.str, ">"); break; + 10c16: 4b33 ldr r3, [pc, #204] ; (10ce4 ) + 10c18: 881b ldrh r3, [r3, #0] + 10c1a: f8a7 306d strh.w r3, [r7, #109] ; 0x6d + 10c1e: f7fc bbdd b.w d3dc + case 11: strcpy(data.str, "<"); break; + 10c22: 4b31 ldr r3, [pc, #196] ; (10ce8 ) + 10c24: 881b ldrh r3, [r3, #0] + 10c26: f8a7 306d strh.w r3, [r7, #109] ; 0x6d + 10c2a: f7fc bbd7 b.w d3dc + case 10: strcpy(data.str, "CLEAR"); break; + 10c2e: 4b2f ldr r3, [pc, #188] ; (10cec ) + 10c30: 6818 ldr r0, [r3, #0] + 10c32: 889b ldrh r3, [r3, #4] + 10c34: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10c38: f8a7 3071 strh.w r3, [r7, #113] ; 0x71 + 10c3c: f7fc bbce b.w d3dc + return newValue; + 10c40: 3301 adds r3, #1 + 10c42: b299 uxth r1, r3 + 10c44: f7ff b8e2 b.w fe0c + case 22: strcpy(data.str, "CONTROL"); break; + 10c48: 4b29 ldr r3, [pc, #164] ; (10cf0 ) + 10c4a: cb03 ldmia r3!, {r0, r1} + 10c4c: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10c50: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 10c54: f7fc bbc2 b.w d3dc + case 21: strcpy(data.str, "PROGRAM"); break; + 10c58: 4b26 ldr r3, [pc, #152] ; (10cf4 ) + 10c5a: cb03 ldmia r3!, {r0, r1} + 10c5c: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10c60: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 10c64: f7fc bbba b.w d3dc + strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); + 10c68: 4a23 ldr r2, [pc, #140] ; (10cf8 ) + 10c6a: f505 5140 add.w r1, r5, #12288 ; 0x3000 + 10c6e: 4b17 ldr r3, [pc, #92] ; (10ccc ) + display.renderFasLooperIcon(data); + 10c70: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); + 10c74: 6810 ldr r0, [r2, #0] + return BMC_OFF_LED_EVENT; + 10c76: f04f 0800 mov.w r8, #0 + strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); + 10c7a: 7912 ldrb r2, [r2, #4] + display.renderFasLooperIcon(data); + 10c7c: 442e add r6, r5 + strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); + 10c7e: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10c82: f887 2071 strb.w r2, [r7, #113] ; 0x71 + 10c86: 889a ldrh r2, [r3, #4] + 10c88: 6818 ldr r0, [r3, #0] + 10c8a: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 10c8e: 799a ldrb r2, [r3, #6] + 10c90: f891 3397 ldrb.w r3, [r1, #919] ; 0x397 + display.renderFasLooperIcon(data); + 10c94: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); + 10c98: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + display.renderFasLooperIcon(data); + 10c9c: 4668 mov r0, sp + 10c9e: f3c3 1340 ubfx r3, r3, #5, #1 + strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); + 10ca2: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 + display.renderFasLooperIcon(data); + 10ca6: 2295 movs r2, #149 ; 0x95 + 10ca8: 7523 strb r3, [r4, #20] + 10caa: f019 fda1 bl 2a7f0 + 10cae: 4630 mov r0, r6 + 10cb0: e894 000e ldmia.w r4, {r1, r2, r3} + 10cb4: f7fa fb3a bl b32c + break; + 10cb8: f7fa bec9 b.w ba4e + 10cbc: 20001f64 .word 0x20001f64 + 10cc0: 20002228 .word 0x20002228 + 10cc4: 20002220 .word 0x20002220 + 10cc8: 200015cc .word 0x200015cc + 10ccc: 20002274 .word 0x20002274 + 10cd0: 2000228c .word 0x2000228c + 10cd4: 20002284 .word 0x20002284 + 10cd8: 20002280 .word 0x20002280 + 10cdc: 200022f0 .word 0x200022f0 + 10ce0: 20001fe4 .word 0x20001fe4 + 10ce4: 20001fe0 .word 0x20001fe0 + 10ce8: 20001fdc .word 0x20001fdc + 10cec: 200015d4 .word 0x200015d4 + 10cf0: 2000201c .word 0x2000201c + 10cf4: 20002014 .word 0x20002014 + 10cf8: 20002294 .word 0x20002294 + return fader; + 10cfc: 68fb ldr r3, [r7, #12] + long num = (x - in_min) * out_range; + 10cfe: 2164 movs r1, #100 ; 0x64 + long result = num / in_range + out_min; + 10d00: f643 18fb movw r8, #14843 ; 0x39fb + 10d04: eb09 02c3 add.w r2, r9, r3, lsl #3 + num += in_range / 2; + 10d08: f641 43fd movw r3, #7421 ; 0x1cfd + long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max; + 10d0c: f9b2 232e ldrsh.w r2, [r2, #814] ; 0x32e + long num = (x - in_min) * out_range; + 10d10: f502 5200 add.w r2, r2, #8192 ; 0x2000 + num += in_range / 2; + 10d14: fb01 3302 mla r3, r1, r2, r3 + long result = num / in_range + out_min; + 10d18: fb93 f8f8 sdiv r8, r3, r8 + if (in_range * num < 0) return result - 1; + 10d1c: 2b00 cmp r3, #0 + 10d1e: bfb8 it lt + 10d20: f108 38ff addlt.w r8, r8, #4294967295 ; 0xffffffff + 10d24: f7fe bed5 b.w fad2 + case BMC_FAS_CMD_LOOPER_STOP: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_STOP); break; + 10d28: f243 3074 movw r0, #13172 ; 0x3374 + 10d2c: 2100 movs r1, #0 + 10d2e: 4428 add r0, r5 + return BMC_OFF_LED_EVENT; + 10d30: 4688 mov r8, r1 + case BMC_FAS_CMD_LOOPER_STOP: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_STOP); break; + 10d32: f7f8 fa25 bl 9180 + 10d36: f7fa be8a b.w ba4e + case BMC_FAS_CMD_LOOPER_RPD: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REC_PLAY_DUB); break; + 10d3a: f243 3074 movw r0, #13172 ; 0x3374 + 10d3e: 2108 movs r1, #8 + return BMC_OFF_LED_EVENT; + 10d40: f04f 0800 mov.w r8, #0 + case BMC_FAS_CMD_LOOPER_RPD: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REC_PLAY_DUB); break; + 10d44: 4428 add r0, r5 + 10d46: f7f8 fa1b bl 9180 + 10d4a: f7fa be80 b.w ba4e + case BMC_FAS_CMD_LOOPER_RDP: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REC_DUB_PLAY); break; + 10d4e: f243 3074 movw r0, #13172 ; 0x3374 + 10d52: 2109 movs r1, #9 + return BMC_OFF_LED_EVENT; + 10d54: f04f 0800 mov.w r8, #0 + case BMC_FAS_CMD_LOOPER_RDP: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REC_DUB_PLAY); break; + 10d58: 4428 add r0, r5 + 10d5a: f7f8 fa11 bl 9180 + 10d5e: f7fa be76 b.w ba4e + 10d62: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 10d66: f893 3393 ldrb.w r3, [r3, #915] ; 0x393 + if(!connected()){ + 10d6a: 07db lsls r3, r3, #31 + 10d6c: f57a ae6d bpl.w ba4a + fetchSysEx(funcId, 0, 0, 0); + 10d70: 2300 movs r3, #0 + 10d72: f243 3074 movw r0, #13172 ; 0x3374 + 10d76: 2110 movs r1, #16 + 10d78: 461a mov r2, r3 + 10d7a: 4428 add r0, r5 + 10d7c: 9300 str r3, [sp, #0] + return BMC_OFF_LED_EVENT; + 10d7e: 4698 mov r8, r3 + 10d80: f7f0 fb26 bl 13d0 + 10d84: f7fa be63 b.w ba4e + case BMC_FAS_CMD_LOOPER_UNDO: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_UNDO); break; + 10d88: f243 3074 movw r0, #13172 ; 0x3374 + 10d8c: 2107 movs r1, #7 + return BMC_OFF_LED_EVENT; + 10d8e: f04f 0800 mov.w r8, #0 + case BMC_FAS_CMD_LOOPER_UNDO: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_UNDO); break; + 10d92: 4428 add r0, r5 + 10d94: f7f8 f9f4 bl 9180 + 10d98: f7fa be59 b.w ba4e + case BMC_FAS_CMD_LOOPER_HALF: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_HALF); break; + 10d9c: f243 3074 movw r0, #13172 ; 0x3374 + 10da0: 2106 movs r1, #6 + return BMC_OFF_LED_EVENT; + 10da2: f04f 0800 mov.w r8, #0 + case BMC_FAS_CMD_LOOPER_HALF: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_HALF); break; + 10da6: 4428 add r0, r5 + 10da8: f7f8 f9ea bl 9180 + 10dac: f7fa be4f b.w ba4e + case BMC_FAS_CMD_LOOPER_REV: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REVERSE); break; + 10db0: f243 3074 movw r0, #13172 ; 0x3374 + 10db4: 2105 movs r1, #5 + return BMC_OFF_LED_EVENT; + 10db6: f04f 0800 mov.w r8, #0 + case BMC_FAS_CMD_LOOPER_REV: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REVERSE); break; + 10dba: 4428 add r0, r5 + 10dbc: f7f8 f9e0 bl 9180 + 10dc0: f7fa be45 b.w ba4e + case BMC_FAS_CMD_LOOPER_DUB: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_OVERDUB); break; + 10dc4: f243 3074 movw r0, #13172 ; 0x3374 + 10dc8: 2104 movs r1, #4 + return BMC_OFF_LED_EVENT; + 10dca: f04f 0800 mov.w r8, #0 + case BMC_FAS_CMD_LOOPER_DUB: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_OVERDUB); break; + 10dce: 4428 add r0, r5 + 10dd0: f7f8 f9d6 bl 9180 + 10dd4: f7fa be3b b.w ba4e + case BMC_FAS_CMD_LOOPER_REC: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_RECORD); break; + 10dd8: f243 3074 movw r0, #13172 ; 0x3374 + 10ddc: 2101 movs r1, #1 + return BMC_OFF_LED_EVENT; + 10dde: f04f 0800 mov.w r8, #0 + case BMC_FAS_CMD_LOOPER_REC: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_RECORD); break; + 10de2: 4428 add r0, r5 + 10de4: f7f8 f9cc bl 9180 + 10de8: f7fa be31 b.w ba4e + case BMC_FAS_CMD_LOOPER_PLAY: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_PLAY); break; + 10dec: f243 3074 movw r0, #13172 ; 0x3374 + 10df0: 2102 movs r1, #2 + return BMC_OFF_LED_EVENT; + 10df2: f04f 0800 mov.w r8, #0 + case BMC_FAS_CMD_LOOPER_PLAY: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_PLAY); break; + 10df6: 4428 add r0, r5 + 10df8: f7f8 f9c2 bl 9180 + 10dfc: f7fa be27 b.w ba4e + fetchSysEx(BMC_FAS3_FUNC_ID_BYPASS, t_block, 1, BMC_FAS3_FETCH_TYPE_14_AND_7_BIT); + 10e00: 2402 movs r4, #2 + 10e02: 2301 movs r3, #1 + 10e04: 210a movs r1, #10 + 10e06: 9400 str r4, [sp, #0] + return 1; + 10e08: 4698 mov r8, r3 + 10e0a: f7f0 fae1 bl 13d0 + } + 10e0e: f7fa be1e b.w ba4e + min = lowest; + 10e12: f04f 0a00 mov.w sl, #0 + t_min = 0; + 10e16: 46d0 mov r8, sl + 10e18: f7fb bf37 b.w cc8a + 10e1c: f505 5540 add.w r5, r5, #12288 ; 0x3000 + 10e20: f895 37bd ldrb.w r3, [r5, #1981] ; 0x7bd + return !sync.beatBuddy.isHalfTime() && !sync.beatBuddy.isDoubleTime(); + 10e24: 0699 lsls r1, r3, #26 + 10e26: d404 bmi.n 10e32 + 10e28: f3c3 1380 ubfx r3, r3, #6, #1 + 10e2c: f083 0301 eor.w r3, r3, #1 + 10e30: 62bb str r3, [r7, #40] ; 0x28 + 10e32: f8d7 8028 ldr.w r8, [r7, #40] ; 0x28 + 10e36: f7fa be0a b.w ba4e + strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); + 10e3a: 4ad1 ldr r2, [pc, #836] ; (11180 ) + 10e3c: f505 5140 add.w r1, r5, #12288 ; 0x3000 + 10e40: 4bd0 ldr r3, [pc, #832] ; (11184 ) + display.renderFasLooperIcon(data); + 10e42: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); + 10e46: 6810 ldr r0, [r2, #0] + return BMC_OFF_LED_EVENT; + 10e48: f04f 0800 mov.w r8, #0 + strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); + 10e4c: 8892 ldrh r2, [r2, #4] + display.renderFasLooperIcon(data); + 10e4e: 442e add r6, r5 + strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); + 10e50: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10e54: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 + 10e58: 889a ldrh r2, [r3, #4] + 10e5a: 6818 ldr r0, [r3, #0] + 10e5c: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 10e60: 799a ldrb r2, [r3, #6] + 10e62: f891 337c ldrb.w r3, [r1, #892] ; 0x37c + display.renderFasLooperIcon(data); + 10e66: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); + 10e6a: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + display.renderFasLooperIcon(data); + 10e6e: 4668 mov r0, sp + 10e70: f003 0301 and.w r3, r3, #1 + strcpy(data.str, "CLEAR"); strcpy(data.label, "LOOPER"); + 10e74: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 + display.renderFasLooperIcon(data); + 10e78: 2295 movs r2, #149 ; 0x95 + 10e7a: 7523 strb r3, [r4, #20] + 10e7c: f019 fcb8 bl 2a7f0 + 10e80: 4630 mov r0, r6 + 10e82: e894 000e ldmia.w r4, {r1, r2, r3} + 10e86: f7fa fa51 bl b32c + break; + 10e8a: f7fa bde0 b.w ba4e + strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); + 10e8e: 4abe ldr r2, [pc, #760] ; (11188 ) + 10e90: f505 5140 add.w r1, r5, #12288 ; 0x3000 + 10e94: 4bbb ldr r3, [pc, #748] ; (11184 ) + display.renderFasLooperIcon(data); + 10e96: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); + 10e9a: 6810 ldr r0, [r2, #0] + return BMC_OFF_LED_EVENT; + 10e9c: f04f 0800 mov.w r8, #0 + strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); + 10ea0: 7912 ldrb r2, [r2, #4] + display.renderFasLooperIcon(data); + 10ea2: 442e add r6, r5 + strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); + 10ea4: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10ea8: f887 2071 strb.w r2, [r7, #113] ; 0x71 + 10eac: 889a ldrh r2, [r3, #4] + 10eae: 6818 ldr r0, [r3, #0] + 10eb0: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 10eb4: 799a ldrb r2, [r3, #6] + 10eb6: f891 337c ldrb.w r3, [r1, #892] ; 0x37c + display.renderFasLooperIcon(data); + 10eba: f107 0160 add.w r1, r7, #96 ; 0x60 + strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); + 10ebe: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderFasLooperIcon(data); - 10c4a: 2295 movs r2, #149 ; 0x95 - 10c4c: 7523 strb r3, [r4, #20] - 10c4e: f019 fd5b bl 2a708 - 10c52: 4630 mov r0, r6 - 10c54: e894 000e ldmia.w r4, {r1, r2, r3} - 10c58: f7fa fb04 bl b264 + 10ec2: 4668 mov r0, sp + 10ec4: f003 0301 and.w r3, r3, #1 + strcpy(data.str, "STOP"); strcpy(data.label, "LOOPER"); + 10ec8: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 + display.renderFasLooperIcon(data); + 10ecc: 2295 movs r2, #149 ; 0x95 + 10ece: 7523 strb r3, [r4, #20] + 10ed0: f019 fc8e bl 2a7f0 + 10ed4: 4630 mov r0, r6 + 10ed6: e894 000e ldmia.w r4, {r1, r2, r3} + 10eda: f7fa fa27 bl b32c break; - 10c5c: f7fa be8c b.w b978 - 10c60: 20002000 .word 0x20002000 - 10c64: 20001ff4 .word 0x20001ff4 - 10c68: 20001fec .word 0x20001fec - 10c6c: 20001fe8 .word 0x20001fe8 - 10c70: 20001ffc .word 0x20001ffc - 10c74: 2000223c .word 0x2000223c - 10c78: 20002220 .word 0x20002220 - 10c7c: 20002234 .word 0x20002234 - 10c80: 20002218 .word 0x20002218 - 10c84: 20002274 .word 0x20002274 - 10c88: 20002284 .word 0x20002284 - 10c8c: 20002280 .word 0x20002280 + 10ede: f7fa bdb6 b.w ba4e + case BMC_FAS_CMD_LOOPER_CLEAR: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_CLEAR); break; + 10ee2: f243 3074 movw r0, #13172 ; 0x3374 + 10ee6: 210a movs r1, #10 + return BMC_OFF_LED_EVENT; + 10ee8: f04f 0800 mov.w r8, #0 + case BMC_FAS_CMD_LOOPER_CLEAR: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_CLEAR); break; + 10eec: 4428 add r0, r5 + 10eee: f7f8 f947 bl 9180 + 10ef2: f7fa bdac b.w ba4e + return isOn() && (!isFlat() && !isSharp()); + 10ef6: f04f 0800 mov.w r8, #0 + case BMC_FAS_CMD_TUNER_IN_TUNE: return sync.fas.tuner.inTune(); + 10efa: f7fa bda8 b.w ba4e strcpy(data.str, "REC"); strcpy(data.label, "LOOPER"); - 10c90: 4be1 ldr r3, [pc, #900] ; (11018 ) - 10c92: f505 5140 add.w r1, r5, #12288 ; 0x3000 - 10c96: 4ae1 ldr r2, [pc, #900] ; (1101c ) + 10efe: 4ba1 ldr r3, [pc, #644] ; (11184 ) + return bitRead(data, bit); + 10f00: f505 5140 add.w r1, r5, #12288 ; 0x3000 + 10f04: 4aa1 ldr r2, [pc, #644] ; (1118c ) display.renderFasLooperIcon(data); - 10c98: f643 3638 movw r6, #15160 ; 0x3b38 + 10f06: f643 3658 movw r6, #15192 ; 0x3b58 return BMC_OFF_LED_EVENT; - 10c9c: f04f 0800 mov.w r8, #0 + 10f0a: f04f 0800 mov.w r8, #0 strcpy(data.str, "REC"); strcpy(data.label, "LOOPER"); - 10ca0: 6810 ldr r0, [r2, #0] + 10f0e: 6810 ldr r0, [r2, #0] display.renderFasLooperIcon(data); - 10ca2: 442e add r6, r5 + 10f10: 442e add r6, r5 strcpy(data.str, "REC"); strcpy(data.label, "LOOPER"); - 10ca4: 889a ldrh r2, [r3, #4] - 10ca6: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10caa: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - 10cae: 6818 ldr r0, [r3, #0] - 10cb0: 799a ldrb r2, [r3, #6] - 10cb2: f891 3377 ldrb.w r3, [r1, #887] ; 0x377 + 10f12: 889a ldrh r2, [r3, #4] + 10f14: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10f18: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 10f1c: 6818 ldr r0, [r3, #0] + 10f1e: 799a ldrb r2, [r3, #6] + 10f20: f891 3397 ldrb.w r3, [r1, #919] ; 0x397 display.renderFasLooperIcon(data); - 10cb6: f107 0160 add.w r1, r7, #96 ; 0x60 + 10f24: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.str, "REC"); strcpy(data.label, "LOOPER"); - 10cba: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 10f28: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderFasLooperIcon(data); - 10cbe: 4668 mov r0, sp - 10cc0: f003 0301 and.w r3, r3, #1 + 10f2c: 4668 mov r0, sp + 10f2e: f003 0301 and.w r3, r3, #1 strcpy(data.str, "REC"); strcpy(data.label, "LOOPER"); - 10cc4: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 + 10f32: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 display.renderFasLooperIcon(data); - 10cc8: 2295 movs r2, #149 ; 0x95 - 10cca: 7523 strb r3, [r4, #20] - 10ccc: f019 fd1c bl 2a708 - 10cd0: 4630 mov r0, r6 - 10cd2: e894 000e ldmia.w r4, {r1, r2, r3} - 10cd6: f7fa fac5 bl b264 + 10f36: 2295 movs r2, #149 ; 0x95 + 10f38: 7523 strb r3, [r4, #20] + 10f3a: f019 fc59 bl 2a7f0 + 10f3e: 4630 mov r0, r6 + 10f40: e894 000e ldmia.w r4, {r1, r2, r3} + 10f44: f7fa f9f2 bl b32c break; - 10cda: f7fa be4d b.w b978 + 10f48: f7fa bd81 b.w ba4e strcpy(data.str, "PLAY"); strcpy(data.label, "LOOPER"); - 10cde: 4ad0 ldr r2, [pc, #832] ; (11020 ) - 10ce0: f505 5140 add.w r1, r5, #12288 ; 0x3000 - 10ce4: 4bcc ldr r3, [pc, #816] ; (11018 ) + 10f4c: 4a90 ldr r2, [pc, #576] ; (11190 ) + 10f4e: f505 5140 add.w r1, r5, #12288 ; 0x3000 + 10f52: 4b8c ldr r3, [pc, #560] ; (11184 ) display.renderFasLooperIcon(data); - 10ce6: f643 3638 movw r6, #15160 ; 0x3b38 + 10f54: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.str, "PLAY"); strcpy(data.label, "LOOPER"); - 10cea: 6810 ldr r0, [r2, #0] + 10f58: 6810 ldr r0, [r2, #0] return BMC_OFF_LED_EVENT; - 10cec: f04f 0800 mov.w r8, #0 + 10f5a: f04f 0800 mov.w r8, #0 strcpy(data.str, "PLAY"); strcpy(data.label, "LOOPER"); - 10cf0: 7912 ldrb r2, [r2, #4] + 10f5e: 7912 ldrb r2, [r2, #4] display.renderFasLooperIcon(data); - 10cf2: 442e add r6, r5 + 10f60: 442e add r6, r5 strcpy(data.str, "PLAY"); strcpy(data.label, "LOOPER"); - 10cf4: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10cf8: f887 2071 strb.w r2, [r7, #113] ; 0x71 - 10cfc: 889a ldrh r2, [r3, #4] - 10cfe: 6818 ldr r0, [r3, #0] - 10d00: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - 10d04: 799a ldrb r2, [r3, #6] - 10d06: f891 3377 ldrb.w r3, [r1, #887] ; 0x377 + 10f62: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10f66: f887 2071 strb.w r2, [r7, #113] ; 0x71 + 10f6a: 889a ldrh r2, [r3, #4] + 10f6c: 6818 ldr r0, [r3, #0] + 10f6e: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 10f72: 799a ldrb r2, [r3, #6] + 10f74: f891 3397 ldrb.w r3, [r1, #919] ; 0x397 display.renderFasLooperIcon(data); - 10d0a: f107 0160 add.w r1, r7, #96 ; 0x60 + 10f78: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.str, "PLAY"); strcpy(data.label, "LOOPER"); - 10d0e: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 10f7c: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderFasLooperIcon(data); - 10d12: 4668 mov r0, sp - 10d14: f3c3 0340 ubfx r3, r3, #1, #1 + 10f80: 4668 mov r0, sp + 10f82: f3c3 0340 ubfx r3, r3, #1, #1 strcpy(data.str, "PLAY"); strcpy(data.label, "LOOPER"); - 10d18: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 + 10f86: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 display.renderFasLooperIcon(data); - 10d1c: 2295 movs r2, #149 ; 0x95 - 10d1e: 7523 strb r3, [r4, #20] - 10d20: f019 fcf2 bl 2a708 - 10d24: 4630 mov r0, r6 - 10d26: e894 000e ldmia.w r4, {r1, r2, r3} - 10d2a: f7fa fa9b bl b264 + 10f8a: 2295 movs r2, #149 ; 0x95 + 10f8c: 7523 strb r3, [r4, #20] + 10f8e: f019 fc2f bl 2a7f0 + 10f92: 4630 mov r0, r6 + 10f94: e894 000e ldmia.w r4, {r1, r2, r3} + 10f98: f7fa f9c8 bl b32c break; - 10d2e: f7fa be23 b.w b978 + 10f9c: f7fa bd57 b.w ba4e strcpy(data.str, "Sharpest"); strcpy(data.label, "TUNER"); - 10d32: 4bbc ldr r3, [pc, #752] ; (11024 ) + 10fa0: 4b7c ldr r3, [pc, #496] ; (11194 ) display.renderBlock(data); - 10d34: f643 3638 movw r6, #15160 ; 0x3b38 + 10fa2: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.str, "Sharpest"); strcpy(data.label, "TUNER"); - 10d38: 4abb ldr r2, [pc, #748] ; (11028 ) + 10fa6: 4a7c ldr r2, [pc, #496] ; (11198 ) return BMC_OFF_LED_EVENT; - 10d3a: f04f 0800 mov.w r8, #0 + 10fa8: f04f 0800 mov.w r8, #0 display.renderBlock(data); - 10d3e: 442e add r6, r5 + 10fac: 442e add r6, r5 strcpy(data.str, "Sharpest"); strcpy(data.label, "TUNER"); - 10d40: cb03 ldmia r3!, {r0, r1} - 10d42: 781b ldrb r3, [r3, #0] - 10d44: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 10d48: f887 3075 strb.w r3, [r7, #117] ; 0x75 - 10d4c: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 10d50: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10d54: f893 34a3 ldrb.w r3, [r3, #1187] ; 0x4a3 - 10d58: 6810 ldr r0, [r2, #0] + 10fae: cb03 ldmia r3!, {r0, r1} + 10fb0: 781b ldrb r3, [r3, #0] + 10fb2: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 10fb6: f887 3075 strb.w r3, [r7, #117] ; 0x75 + 10fba: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 10fbe: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 10fc2: f893 34c3 ldrb.w r3, [r3, #1219] ; 0x4c3 + 10fc6: 6810 ldr r0, [r2, #0] return isOn() && flags.read(5); - 10d5a: f013 0101 ands.w r1, r3, #1 - 10d5e: 8892 ldrh r2, [r2, #4] - 10d60: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 10fc8: f013 0101 ands.w r1, r3, #1 + 10fcc: 8892 ldrh r2, [r2, #4] + 10fce: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - 10d64: 4668 mov r0, sp - 10d66: bf18 it ne - 10d68: f3c3 1140 ubfxne r1, r3, #5, #1 + 10fd2: 4668 mov r0, sp + 10fd4: bf18 it ne + 10fd6: f3c3 1140 ubfxne r1, r3, #5, #1 bitWrite(settings, 2, 0); - 10d6c: 78e3 ldrb r3, [r4, #3] + 10fda: 78e3 ldrb r3, [r4, #3] strcpy(data.str, "Sharpest"); strcpy(data.label, "TUNER"); - 10d6e: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 10fdc: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 display.renderBlock(data); - 10d72: 2295 movs r2, #149 ; 0x95 - 10d74: f023 0304 bic.w r3, r3, #4 + 10fe0: 2295 movs r2, #149 ; 0x95 + 10fe2: f023 0304 bic.w r3, r3, #4 data.highlight = sync.fas.tuner.isSharpest(); - 10d78: 7521 strb r1, [r4, #20] + 10fe6: 7521 strb r1, [r4, #20] display.renderBlock(data); - 10d7a: f107 0160 add.w r1, r7, #96 ; 0x60 + 10fe8: f107 0160 add.w r1, r7, #96 ; 0x60 bitWrite(settings, 3, 1); - 10d7e: f043 0308 orr.w r3, r3, #8 - 10d82: 70e3 strb r3, [r4, #3] - 10d84: f019 fcc0 bl 2a708 - 10d88: 4630 mov r0, r6 - 10d8a: e894 000e ldmia.w r4, {r1, r2, r3} - 10d8e: f7f9 fe25 bl a9dc + 10fec: f043 0308 orr.w r3, r3, #8 + 10ff0: 70e3 strb r3, [r4, #3] + 10ff2: f019 fbfd bl 2a7f0 + 10ff6: 4630 mov r0, r6 + 10ff8: e894 000e ldmia.w r4, {r1, r2, r3} + 10ffc: f7f9 fcc0 bl a980 break; - 10d92: f7fa bdf1 b.w b978 + 11000: f7fa bd25 b.w ba4e strcpy(data.str, "Sharper"); strcpy(data.label, "TUNER"); - 10d96: 4ba5 ldr r3, [pc, #660] ; (1102c ) + 11004: 4b65 ldr r3, [pc, #404] ; (1119c ) display.renderBlock(data); - 10d98: f643 3638 movw r6, #15160 ; 0x3b38 + 11006: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.str, "Sharper"); strcpy(data.label, "TUNER"); - 10d9c: 4aa2 ldr r2, [pc, #648] ; (11028 ) + 1100a: 4a63 ldr r2, [pc, #396] ; (11198 ) return BMC_OFF_LED_EVENT; - 10d9e: f04f 0800 mov.w r8, #0 + 1100c: f04f 0800 mov.w r8, #0 display.renderBlock(data); - 10da2: 442e add r6, r5 + 11010: 442e add r6, r5 strcpy(data.str, "Sharper"); strcpy(data.label, "TUNER"); - 10da4: cb03 ldmia r3!, {r0, r1} - 10da6: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 10daa: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 10dae: f893 34a3 ldrb.w r3, [r3, #1187] ; 0x4a3 - 10db2: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 11012: cb03 ldmia r3!, {r0, r1} + 11014: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 11018: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 1101c: f893 34c3 ldrb.w r3, [r3, #1219] ; 0x4c3 + 11020: f8c7 006d str.w r0, [r7, #109] ; 0x6d return isOn() && flags.read(4); - 10db6: f013 0101 ands.w r1, r3, #1 - 10dba: 6810 ldr r0, [r2, #0] - 10dbc: 8892 ldrh r2, [r2, #4] - 10dbe: bf18 it ne - 10dc0: f3c3 1100 ubfxne r1, r3, #4, #1 + 11024: f013 0101 ands.w r1, r3, #1 + 11028: 6810 ldr r0, [r2, #0] + 1102a: 8892 ldrh r2, [r2, #4] + 1102c: bf18 it ne + 1102e: f3c3 1100 ubfxne r1, r3, #4, #1 bitWrite(settings, 2, 0); - 10dc4: 78e3 ldrb r3, [r4, #3] - 10dc6: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 11032: 78e3 ldrb r3, [r4, #3] + 11034: f8c7 00bf str.w r0, [r7, #191] ; 0xbf display.renderBlock(data); - 10dca: 4668 mov r0, sp - 10dcc: f023 0304 bic.w r3, r3, #4 + 11038: 4668 mov r0, sp + 1103a: f023 0304 bic.w r3, r3, #4 strcpy(data.str, "Sharper"); strcpy(data.label, "TUNER"); - 10dd0: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 1103e: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 data.highlight = sync.fas.tuner.isSharper(); - 10dd4: 7521 strb r1, [r4, #20] + 11042: 7521 strb r1, [r4, #20] display.renderBlock(data); - 10dd6: 2295 movs r2, #149 ; 0x95 + 11044: 2295 movs r2, #149 ; 0x95 bitWrite(settings, 3, 1); - 10dd8: f043 0308 orr.w r3, r3, #8 - 10ddc: f107 0160 add.w r1, r7, #96 ; 0x60 - 10de0: 70e3 strb r3, [r4, #3] - 10de2: f019 fc91 bl 2a708 - 10de6: 4630 mov r0, r6 - 10de8: e894 000e ldmia.w r4, {r1, r2, r3} - 10dec: f7f9 fdf6 bl a9dc + 11046: f043 0308 orr.w r3, r3, #8 + 1104a: f107 0160 add.w r1, r7, #96 ; 0x60 + 1104e: 70e3 strb r3, [r4, #3] + 11050: f019 fbce bl 2a7f0 + 11054: 4630 mov r0, r6 + 11056: e894 000e ldmia.w r4, {r1, r2, r3} + 1105a: f7f9 fc91 bl a980 break; - 10df0: f7fa bdc2 b.w b978 + 1105e: f7fa bcf6 b.w ba4e strcpy(data.str, "Sharp"); strcpy(data.label, "TUNER"); - 10df4: 4b8e ldr r3, [pc, #568] ; (11030 ) + 11062: 4b4f ldr r3, [pc, #316] ; (111a0 ) display.renderBlock(data); - 10df6: f643 3638 movw r6, #15160 ; 0x3b38 + 11064: f643 3658 movw r6, #15192 ; 0x3b58 strcpy(data.str, "Sharp"); strcpy(data.label, "TUNER"); - 10dfa: 4a8b ldr r2, [pc, #556] ; (11028 ) + 11068: 4a4b ldr r2, [pc, #300] ; (11198 ) return BMC_OFF_LED_EVENT; - 10dfc: f04f 0800 mov.w r8, #0 + 1106a: f04f 0800 mov.w r8, #0 strcpy(data.str, "Sharp"); strcpy(data.label, "TUNER"); - 10e00: 6818 ldr r0, [r3, #0] + 1106e: 6818 ldr r0, [r3, #0] display.renderBlock(data); - 10e02: 442e add r6, r5 + 11070: 442e add r6, r5 strcpy(data.str, "Sharp"); strcpy(data.label, "TUNER"); - 10e04: 889b ldrh r3, [r3, #4] - 10e06: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10e0a: f8a7 3071 strh.w r3, [r7, #113] ; 0x71 - 10e0e: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 10e12: 6810 ldr r0, [r2, #0] - 10e14: f893 34a3 ldrb.w r3, [r3, #1187] ; 0x4a3 - 10e18: 8892 ldrh r2, [r2, #4] + 11072: 889b ldrh r3, [r3, #4] + 11074: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 11078: f8a7 3071 strh.w r3, [r7, #113] ; 0x71 + 1107c: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 11080: 6810 ldr r0, [r2, #0] + 11082: f893 34c3 ldrb.w r3, [r3, #1219] ; 0x4c3 + 11086: 8892 ldrh r2, [r2, #4] return isOn() && flags.read(3); - 10e1a: f013 0101 ands.w r1, r3, #1 - 10e1e: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - 10e22: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + 11088: f013 0101 ands.w r1, r3, #1 + 1108c: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 11090: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 display.renderBlock(data); - 10e26: 4668 mov r0, sp - 10e28: bf18 it ne - 10e2a: f3c3 01c0 ubfxne r1, r3, #3, #1 + 11094: 4668 mov r0, sp + 11096: bf18 it ne + 11098: f3c3 01c0 ubfxne r1, r3, #3, #1 bitWrite(settings, 2, 0); - 10e2e: 78e3 ldrb r3, [r4, #3] - 10e30: 2295 movs r2, #149 ; 0x95 - 10e32: f023 0304 bic.w r3, r3, #4 + 1109c: 78e3 ldrb r3, [r4, #3] + 1109e: 2295 movs r2, #149 ; 0x95 + 110a0: f023 0304 bic.w r3, r3, #4 data.highlight = sync.fas.tuner.isSharp(); - 10e36: 7521 strb r1, [r4, #20] + 110a4: 7521 strb r1, [r4, #20] display.renderBlock(data); - 10e38: f107 0160 add.w r1, r7, #96 ; 0x60 + 110a6: f107 0160 add.w r1, r7, #96 ; 0x60 bitWrite(settings, 3, 1); - 10e3c: f043 0308 orr.w r3, r3, #8 - 10e40: 70e3 strb r3, [r4, #3] - 10e42: f019 fc61 bl 2a708 - 10e46: 4630 mov r0, r6 - 10e48: e894 000e ldmia.w r4, {r1, r2, r3} - 10e4c: f7f9 fdc6 bl a9dc + 110aa: f043 0308 orr.w r3, r3, #8 + 110ae: 70e3 strb r3, [r4, #3] + 110b0: f019 fb9e bl 2a7f0 + 110b4: 4630 mov r0, r6 + 110b6: e894 000e ldmia.w r4, {r1, r2, r3} + 110ba: f7f9 fc61 bl a980 break; - 10e50: f7fa bd92 b.w b978 + 110be: f7fa bcc6 b.w ba4e bitWrite(settings, 2, 0); - 10e54: 78e3 ldrb r3, [r4, #3] - 10e56: f505 5240 add.w r2, r5, #12288 ; 0x3000 + 110c2: 78e3 ldrb r3, [r4, #3] + 110c4: f505 5240 add.w r2, r5, #12288 ; 0x3000 strcpy(data.str, "Flattest"); strcpy(data.label, "TUNER"); - 10e5a: 4e76 ldr r6, [pc, #472] ; (11034 ) + 110c8: 4e36 ldr r6, [pc, #216] ; (111a4 ) display.renderBlock(data); - 10e5c: f643 3938 movw r9, #15160 ; 0x3b38 - 10e60: f023 0304 bic.w r3, r3, #4 - 10e64: f892 24a3 ldrb.w r2, [r2, #1187] ; 0x4a3 - 10e68: 44a9 add r9, r5 + 110ca: f643 3958 movw r9, #15192 ; 0x3b58 + 110ce: f023 0304 bic.w r3, r3, #4 + 110d2: f892 24c3 ldrb.w r2, [r2, #1219] ; 0x4c3 + 110d6: 44a9 add r9, r5 return BMC_OFF_LED_EVENT; - 10e6a: f04f 0800 mov.w r8, #0 + 110d8: f04f 0800 mov.w r8, #0 bitWrite(settings, 3, 1); - 10e6e: f043 0308 orr.w r3, r3, #8 - 10e72: 70e3 strb r3, [r4, #3] - 10e74: f002 0301 and.w r3, r2, #1 + 110dc: f043 0308 orr.w r3, r3, #8 + 110e0: 70e3 strb r3, [r4, #3] + 110e2: f002 0301 and.w r3, r2, #1 display.renderBlock(data); - 10e78: 2295 movs r2, #149 ; 0x95 - 10e7a: 7523 strb r3, [r4, #20] + 110e6: 2295 movs r2, #149 ; 0x95 + 110e8: 7523 strb r3, [r4, #20] + strcpy(data.str, "Flattest"); strcpy(data.label, "TUNER"); + 110ea: 4b2b ldr r3, [pc, #172] ; (11198 ) + 110ec: 8899 ldrh r1, [r3, #4] + 110ee: f8a7 10c3 strh.w r1, [r7, #195] ; 0xc3 + 110f2: ce03 ldmia r6!, {r0, r1} + 110f4: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 110f8: 6818 ldr r0, [r3, #0] + 110fa: 7833 ldrb r3, [r6, #0] + 110fc: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + display.renderBlock(data); + 11100: f107 0160 add.w r1, r7, #96 ; 0x60 strcpy(data.str, "Flattest"); strcpy(data.label, "TUNER"); - 10e7c: 4b6a ldr r3, [pc, #424] ; (11028 ) - 10e7e: 8899 ldrh r1, [r3, #4] - 10e80: f8a7 10c3 strh.w r1, [r7, #195] ; 0xc3 - 10e84: ce03 ldmia r6!, {r0, r1} - 10e86: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10e8a: 6818 ldr r0, [r3, #0] - 10e8c: 7833 ldrb r3, [r6, #0] - 10e8e: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 11104: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + display.renderBlock(data); + 11108: 4668 mov r0, sp + strcpy(data.str, "Flattest"); strcpy(data.label, "TUNER"); + 1110a: f887 3075 strb.w r3, [r7, #117] ; 0x75 + display.renderBlock(data); + 1110e: f019 fb6f bl 2a7f0 + 11112: 4648 mov r0, r9 + 11114: e894 000e ldmia.w r4, {r1, r2, r3} + 11118: f7f9 fc32 bl a980 + break; + 1111c: f7fa bc97 b.w ba4e + strcpy(data.str, "Flatter"); strcpy(data.label, "TUNER"); + 11120: 4b21 ldr r3, [pc, #132] ; (111a8 ) + display.renderBlock(data); + 11122: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "Flatter"); strcpy(data.label, "TUNER"); + 11126: 4a1c ldr r2, [pc, #112] ; (11198 ) + return BMC_OFF_LED_EVENT; + 11128: f04f 0800 mov.w r8, #0 + display.renderBlock(data); + 1112c: 442e add r6, r5 + strcpy(data.str, "Flatter"); strcpy(data.label, "TUNER"); + 1112e: cb03 ldmia r3!, {r0, r1} + 11130: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 11134: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 11138: f893 34c3 ldrb.w r3, [r3, #1219] ; 0x4c3 + 1113c: f8c7 006d str.w r0, [r7, #109] ; 0x6d + return isOn() && flags.read(1); + 11140: f013 0101 ands.w r1, r3, #1 + 11144: 6810 ldr r0, [r2, #0] + 11146: 8892 ldrh r2, [r2, #4] + 11148: bf18 it ne + 1114a: f3c3 0140 ubfxne r1, r3, #1, #1 + bitWrite(settings, 2, 0); + 1114e: 78e3 ldrb r3, [r4, #3] + 11150: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + display.renderBlock(data); + 11154: 4668 mov r0, sp + 11156: f023 0304 bic.w r3, r3, #4 + strcpy(data.str, "Flatter"); strcpy(data.label, "TUNER"); + 1115a: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 + data.highlight = sync.fas.tuner.isFlatter(); + 1115e: 7521 strb r1, [r4, #20] + display.renderBlock(data); + 11160: 2295 movs r2, #149 ; 0x95 + bitWrite(settings, 3, 1); + 11162: f043 0308 orr.w r3, r3, #8 + 11166: f107 0160 add.w r1, r7, #96 ; 0x60 + 1116a: 70e3 strb r3, [r4, #3] + 1116c: f019 fb40 bl 2a7f0 + 11170: 4630 mov r0, r6 + 11172: e894 000e ldmia.w r4, {r1, r2, r3} + 11176: f7f9 fc03 bl a980 + break; + 1117a: f7fa bc68 b.w ba4e + 1117e: bf00 nop + 11180: 200015d4 .word 0x200015d4 + 11184: 20002274 .word 0x20002274 + 11188: 200022ac .word 0x200022ac + 1118c: 2000227c .word 0x2000227c + 11190: 2000226c .word 0x2000226c + 11194: 20002260 .word 0x20002260 + 11198: 20002220 .word 0x20002220 + 1119c: 20002258 .word 0x20002258 + 111a0: 20002250 .word 0x20002250 + 111a4: 20002244 .word 0x20002244 + 111a8: 2000223c .word 0x2000223c + strcpy(data.str, "Flat"); strcpy(data.label, "TUNER"); + 111ac: 4bc1 ldr r3, [pc, #772] ; (114b4 ) + display.renderBlock(data); + 111ae: f643 3658 movw r6, #15192 ; 0x3b58 + strcpy(data.str, "Flat"); strcpy(data.label, "TUNER"); + 111b2: 4ac1 ldr r2, [pc, #772] ; (114b8 ) + return BMC_OFF_LED_EVENT; + 111b4: f04f 0800 mov.w r8, #0 + strcpy(data.str, "Flat"); strcpy(data.label, "TUNER"); + 111b8: 6818 ldr r0, [r3, #0] display.renderBlock(data); - 10e92: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "Flattest"); strcpy(data.label, "TUNER"); - 10e96: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 111ba: 442e add r6, r5 + strcpy(data.str, "Flat"); strcpy(data.label, "TUNER"); + 111bc: 791b ldrb r3, [r3, #4] + 111be: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 111c2: f887 3071 strb.w r3, [r7, #113] ; 0x71 + 111c6: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 111ca: 6810 ldr r0, [r2, #0] + 111cc: f893 34c3 ldrb.w r3, [r3, #1219] ; 0x4c3 + 111d0: 8892 ldrh r2, [r2, #4] + return isOn() && flags.read(2); + 111d2: f013 0101 ands.w r1, r3, #1 + 111d6: f8c7 00bf str.w r0, [r7, #191] ; 0xbf + 111da: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 display.renderBlock(data); - 10e9a: 4668 mov r0, sp - strcpy(data.str, "Flattest"); strcpy(data.label, "TUNER"); - 10e9c: f887 3075 strb.w r3, [r7, #117] ; 0x75 + 111de: 4668 mov r0, sp + 111e0: bf18 it ne + 111e2: f3c3 0180 ubfxne r1, r3, #2, #1 + bitWrite(settings, 2, 0); + 111e6: 78e3 ldrb r3, [r4, #3] + 111e8: 2295 movs r2, #149 ; 0x95 + 111ea: f023 0304 bic.w r3, r3, #4 + data.highlight = sync.fas.tuner.isFlat(); + 111ee: 7521 strb r1, [r4, #20] display.renderBlock(data); - 10ea0: f019 fc32 bl 2a708 - 10ea4: 4648 mov r0, r9 - 10ea6: e894 000e ldmia.w r4, {r1, r2, r3} - 10eaa: f7f9 fd97 bl a9dc - break; - 10eae: f7fa bd63 b.w b978 - strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); - 10eb2: 4a61 ldr r2, [pc, #388] ; (11038 ) - return bitRead(data, bit); - 10eb4: f505 5140 add.w r1, r5, #12288 ; 0x3000 - 10eb8: 4b57 ldr r3, [pc, #348] ; (11018 ) - display.renderFasLooperIcon(data); - 10eba: f643 3638 movw r6, #15160 ; 0x3b38 - strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); - 10ebe: 6810 ldr r0, [r2, #0] - return BMC_OFF_LED_EVENT; - 10ec0: f04f 0800 mov.w r8, #0 - strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); - 10ec4: 7912 ldrb r2, [r2, #4] - display.renderFasLooperIcon(data); - 10ec6: 442e add r6, r5 - strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); - 10ec8: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10ecc: f887 2071 strb.w r2, [r7, #113] ; 0x71 - 10ed0: 889a ldrh r2, [r3, #4] - 10ed2: 6818 ldr r0, [r3, #0] - 10ed4: f8a7 20c3 strh.w r2, [r7, #195] ; 0xc3 - 10ed8: 799a ldrb r2, [r3, #6] - 10eda: f891 3377 ldrb.w r3, [r1, #887] ; 0x377 - display.renderFasLooperIcon(data); - 10ede: f107 0160 add.w r1, r7, #96 ; 0x60 - strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); - 10ee2: f8c7 00bf str.w r0, [r7, #191] ; 0xbf - display.renderFasLooperIcon(data); - 10ee6: 4668 mov r0, sp - 10ee8: f3c3 1340 ubfx r3, r3, #5, #1 - strcpy(data.str, "ONCE"); strcpy(data.label, "LOOPER"); - 10eec: f887 20c5 strb.w r2, [r7, #197] ; 0xc5 - display.renderFasLooperIcon(data); - 10ef0: 2295 movs r2, #149 ; 0x95 - 10ef2: 7523 strb r3, [r4, #20] - 10ef4: f019 fc08 bl 2a708 - 10ef8: 4630 mov r0, r6 - 10efa: e894 000e ldmia.w r4, {r1, r2, r3} - 10efe: f7fa f9b1 bl b264 + 111f0: f107 0160 add.w r1, r7, #96 ; 0x60 + bitWrite(settings, 3, 1); + 111f4: f043 0308 orr.w r3, r3, #8 + 111f8: 70e3 strb r3, [r4, #3] + 111fa: f019 faf9 bl 2a7f0 + 111fe: 4630 mov r0, r6 + 11200: e894 000e ldmia.w r4, {r1, r2, r3} + 11204: f7f9 fbbc bl a980 break; - 10f02: f7fa bd39 b.w b978 - __oledMuxSelect(d.index); - 10f06: fa5f f08b uxtb.w r0, fp - 10f0a: f04f 0900 mov.w r9, #0 - 10f0e: f7f9 fa07 bl a320 - mainHandler.renderSliderOled(oled[d.index], d); - 10f12: 2305 movs r3, #5 - 10f14: 22a1 movs r2, #161 ; 0xa1 - 10f16: f888 4013 strb.w r4, [r8, #19] - 10f1a: f888 3005 strb.w r3, [r8, #5] - 10f1e: 4641 mov r1, r8 - 10f20: f507 70ce add.w r0, r7, #412 ; 0x19c - 10f24: f8a8 b000 strh.w fp, [r8] - 10f28: f888 6002 strb.w r6, [r8, #2] - return crc == t_crc; - 10f2c: f505 5440 add.w r4, r5, #12288 ; 0x3000 - 10f30: f8a8 9010 strh.w r9, [r8, #16] - 10f34: f019 fbe8 bl 2a708 - 10f38: 2338 movs r3, #56 ; 0x38 - 10f3a: fb03 f30b mul.w r3, r3, fp - 10f3e: 441c add r4, r3 - if(block.isCrc(d.crc)){ - 10f40: f894 2d3e ldrb.w r2, [r4, #3390] ; 0xd3e - 10f44: 42b2 cmp r2, r6 - 10f46: f43e ab7e beq.w f646 - BMC_SSD1306& display = block.display; - 10f4a: 442b add r3, r5 - 10f4c: f643 5548 movw r5, #15688 ; 0x3d48 - uint16_t meterValue = block.getMeterValue(); - 10f50: f8b4 2d44 ldrh.w r2, [r4, #3396] ; 0xd44 - renderSlider(display, meterValue, meterPixelValue, d, t, t_reset); - 10f54: f507 71d0 add.w r1, r7, #416 ; 0x1a0 - BMC_SSD1306& display = block.display; - 10f58: 441d add r5, r3 - uint16_t meterPixelValue = block.getMeterPixelValue(); - 10f5a: f8b4 3d42 ldrh.w r3, [r4, #3394] ; 0xd42 - uint16_t meterValue = block.getMeterValue(); - 10f5e: 863a strh r2, [r7, #48] ; 0x30 - renderSlider(display, meterValue, meterPixelValue, d, t, t_reset); - 10f60: 4668 mov r0, sp - uint16_t meterPixelValue = block.getMeterPixelValue(); - 10f62: 867b strh r3, [r7, #50] ; 0x32 - renderSlider(display, meterValue, meterPixelValue, d, t, t_reset); - 10f64: 2301 movs r3, #1 - crc = t_crc; - 10f66: f884 6d3e strb.w r6, [r4, #3390] ; 0xd3e - 10f6a: 2620 movs r6, #32 - 10f6c: 932b str r3, [sp, #172] ; 0xac - 10f6e: 2380 movs r3, #128 ; 0x80 - 10f70: 229d movs r2, #157 ; 0x9d - 10f72: f8cd 90b0 str.w r9, [sp, #176] ; 0xb0 - 10f76: f8cd 90a0 str.w r9, [sp, #160] ; 0xa0 - 10f7a: e9cd 3629 strd r3, r6, [sp, #164] ; 0xa4 - 10f7e: f019 fbc3 bl 2a708 - 10f82: f8d7 319c ldr.w r3, [r7, #412] ; 0x19c - 10f86: f107 0232 add.w r2, r7, #50 ; 0x32 - 10f8a: f107 0130 add.w r1, r7, #48 ; 0x30 - 10f8e: 4628 mov r0, r5 - 10f90: f7f6 f82e bl 6ff0 (BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0]> - display.display(); - 10f94: 4628 mov r0, r5 - 10f96: f007 fd09 bl 189ac - meterValue = t_value; - 10f9a: 8e3a ldrh r2, [r7, #48] ; 0x30 - meterPixelValue = t_value; - 10f9c: 8e7b ldrh r3, [r7, #50] ; 0x32 - meterValue = t_value; - 10f9e: f8a4 2d44 strh.w r2, [r4, #3396] ; 0xd44 - meterPixelValue = t_value; - 10fa2: f8a4 3d42 strh.w r3, [r4, #3394] ; 0xd42 - return true; - 10fa6: f7fe bb4e b.w f646 - 10faa: f505 5340 add.w r3, r5, #12288 ; 0x3000 - strcpy(data.str, "Dble Time Tggle"); - 10fae: 4e23 ldr r6, [pc, #140] ; (1103c ) - 10fb0: f893 379d ldrb.w r3, [r3, #1949] ; 0x79d - 10fb4: f3c3 1380 ubfx r3, r3, #6, #1 - 10fb8: 7523 strb r3, [r4, #20] - 10fba: ce0f ldmia r6!, {r0, r1, r2, r3} - 10fbc: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10fc0: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 10fc4: f8c7 2075 str.w r2, [r7, #117] ; 0x75 - 10fc8: f8c7 3079 str.w r3, [r7, #121] ; 0x79 - break; - 10fcc: f7fb bf6a b.w cea4 - 10fd0: f505 5340 add.w r3, r5, #12288 ; 0x3000 - strcpy(data.str, "Half Time Tggle"); - 10fd4: 4e1a ldr r6, [pc, #104] ; (11040 ) - 10fd6: f893 379d ldrb.w r3, [r3, #1949] ; 0x79d - 10fda: f3c3 1340 ubfx r3, r3, #5, #1 - 10fde: e7eb b.n 10fb8 - case 13: strcpy(data.str, "DEC"); break; - 10fe0: 4b18 ldr r3, [pc, #96] ; (11044 ) - 10fe2: 6818 ldr r0, [r3, #0] - 10fe4: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 10fe8: f7fc b98e b.w d308 - case 12: strcpy(data.str, ">"); break; - 10fec: 4b16 ldr r3, [pc, #88] ; (11048 ) - 10fee: 881b ldrh r3, [r3, #0] - 10ff0: f8a7 306d strh.w r3, [r7, #109] ; 0x6d - 10ff4: f7fc b988 b.w d308 - case 11: strcpy(data.str, "<"); break; - 10ff8: 4b14 ldr r3, [pc, #80] ; (1104c ) - 10ffa: 881b ldrh r3, [r3, #0] - 10ffc: f8a7 306d strh.w r3, [r7, #109] ; 0x6d - 11000: f7fc b982 b.w d308 - case 10: strcpy(data.str, "CLEAR"); break; - 11004: 4b12 ldr r3, [pc, #72] ; (11050 ) - 11006: 6818 ldr r0, [r3, #0] - 11008: 889b ldrh r3, [r3, #4] - 1100a: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 1100e: f8a7 3071 strh.w r3, [r7, #113] ; 0x71 - 11012: f7fc b979 b.w d308 - 11016: bf00 nop - 11018: 20002274 .word 0x20002274 - 1101c: 2000227c .word 0x2000227c - 11020: 2000226c .word 0x2000226c - 11024: 20002260 .word 0x20002260 - 11028: 20002220 .word 0x20002220 - 1102c: 20002258 .word 0x20002258 - 11030: 20002250 .word 0x20002250 - 11034: 20002244 .word 0x20002244 - 11038: 20002294 .word 0x20002294 - 1103c: 2000219c .word 0x2000219c - 11040: 20002180 .word 0x20002180 - 11044: 20001fe4 .word 0x20001fe4 - 11048: 20001fe0 .word 0x20001fe0 - 1104c: 20001fdc .word 0x20001fdc - 11050: 200015d4 .word 0x200015d4 - strcpy(data.str, "Trans End"); - 11054: 4bbe ldr r3, [pc, #760] ; (11350 ) - 11056: f7ff bb73 b.w 10740 - strcpy(data.str, "Trans Prev"); - 1105a: 4bbe ldr r3, [pc, #760] ; (11354 ) - 1105c: f7fe bc2e b.w f8bc + 11208: f7fa bc21 b.w ba4e + case 17: strcpy(data.str, "PRESET"); break; + 1120c: 4bab ldr r3, [pc, #684] ; (114bc ) + 1120e: 6818 ldr r0, [r3, #0] + 11210: 889a ldrh r2, [r3, #4] + 11212: 799b ldrb r3, [r3, #6] + 11214: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 + 11218: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 1121c: f887 3073 strb.w r3, [r7, #115] ; 0x73 + 11220: f7fc b8dc b.w d3dc + case 16: strcpy(data.str, "LAYER"); break; + 11224: 4ba6 ldr r3, [pc, #664] ; (114c0 ) + 11226: 6818 ldr r0, [r3, #0] + 11228: 889b ldrh r3, [r3, #4] + 1122a: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 1122e: f8a7 3071 strh.w r3, [r7, #113] ; 0x71 + 11232: f7fc b8d3 b.w d3dc + case 15: strcpy(data.str, "CUSTOM"); break; + 11236: 4ba3 ldr r3, [pc, #652] ; (114c4 ) + 11238: e7e9 b.n 1120e + case 14: strcpy(data.str, "INC"); break; + 1123a: 4ba3 ldr r3, [pc, #652] ; (114c8 ) + 1123c: 6818 ldr r0, [r3, #0] + 1123e: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 11242: f7fc b8cb b.w d3dc if(isSyncEnabled()){ - 11060: 07db lsls r3, r3, #31 - 11062: f57b af5b bpl.w cf1c + 11246: 07db lsls r3, r3, #31 + 11248: f57b ae72 bpl.w cf30 midi.sendControlChange(port, channel, t_control, t_value); - 11066: 2301 movs r3, #1 - 11068: 2000 movs r0, #0 - 1106a: f899 27a8 ldrb.w r2, [r9, #1960] ; 0x7a8 - 1106e: f899 17a9 ldrb.w r1, [r9, #1961] ; 0x7a9 - 11072: 9300 str r3, [sp, #0] - 11074: e9cd 0301 strd r0, r3, [sp, #4] - 11078: 2351 movs r3, #81 ; 0x51 - 1107a: f8d9 0790 ldr.w r0, [r9, #1936] ; 0x790 - 1107e: f012 f9ad bl 233dc - 11082: f7fb bf4b b.w cf1c + 1124c: 2301 movs r3, #1 + 1124e: 2000 movs r0, #0 + 11250: f899 27c8 ldrb.w r2, [r9, #1992] ; 0x7c8 + 11254: f899 17c9 ldrb.w r1, [r9, #1993] ; 0x7c9 + 11258: 9300 str r3, [sp, #0] + 1125a: e9cd 0301 strd r0, r3, [sp, #4] + 1125e: 2351 movs r3, #81 ; 0x51 + 11260: f8d9 07b0 ldr.w r0, [r9, #1968] ; 0x7b0 + 11264: f012 f91c bl 234a0 + 11268: f7fb be62 b.w cf30 return BMC_OFF_LED_EVENT; - 11086: f04f 0800 mov.w r8, #0 + 1126c: f04f 0800 mov.w r8, #0 tExpression = value; - 1108a: f889 47ac strb.w r4, [r9, #1964] ; 0x7ac + 11270: f889 47cc strb.w r4, [r9, #1996] ; 0x7cc if(value!=tExpression){ - 1108e: f7fa bc73 b.w b978 + 11274: f7fa bbeb b.w ba4e + return presetIndex; + 11278: f8d9 3214 ldr.w r3, [r9, #532] ; 0x214 + 1127c: 881b ldrh r3, [r3, #0] + 1127e: f7fb bd95 b.w cdac + midi.sendControlChange(port, channel, t_control, t_value); + 11282: 2301 movs r3, #1 + 11284: 2000 movs r0, #0 + 11286: f899 27c8 ldrb.w r2, [r9, #1992] ; 0x7c8 + 1128a: f899 17c9 ldrb.w r1, [r9, #1993] ; 0x7c9 + 1128e: 9300 str r3, [sp, #0] + 11290: e9cd 0301 strd r0, r3, [sp, #4] + 11294: 2350 movs r3, #80 ; 0x50 + 11296: f8d9 07b0 ldr.w r0, [r9, #1968] ; 0x7b0 + 1129a: f012 f901 bl 234a0 + 1129e: f7fb be47 b.w cf30 + strcpy(data.str, "Trans End"); + 112a2: 4b8a ldr r3, [pc, #552] ; (114cc ) + strcpy(data.str, "Half Time"); + 112a4: cb03 ldmia r3!, {r0, r1} + 112a6: 881b ldrh r3, [r3, #0] + 112a8: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 112ac: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 112b0: f8a7 3075 strh.w r3, [r7, #117] ; 0x75 + break; + 112b4: f7fb be9e b.w cff4 + 112b8: f505 5340 add.w r3, r5, #12288 ; 0x3000 + strcpy(data.str, "Dble Time Tggle"); + 112bc: 4e84 ldr r6, [pc, #528] ; (114d0 ) + 112be: f893 37bd ldrb.w r3, [r3, #1981] ; 0x7bd + 112c2: f3c3 1380 ubfx r3, r3, #6, #1 + 112c6: 7523 strb r3, [r4, #20] + 112c8: ce0f ldmia r6!, {r0, r1, r2, r3} + 112ca: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 112ce: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 112d2: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + 112d6: f8c7 3079 str.w r3, [r7, #121] ; 0x79 + break; + 112da: f7fb be8b b.w cff4 + 112de: f505 5340 add.w r3, r5, #12288 ; 0x3000 + strcpy(data.str, "Half Time Tggle"); + 112e2: 4e7c ldr r6, [pc, #496] ; (114d4 ) + 112e4: f893 37bd ldrb.w r3, [r3, #1981] ; 0x7bd + 112e8: f3c3 1340 ubfx r3, r3, #5, #1 + 112ec: e7eb b.n 112c6 strcpy(data.str, "Song Scroll Up"); - 11092: 4bb1 ldr r3, [pc, #708] ; (11358 ) - 11094: cb07 ldmia r3!, {r0, r1, r2} - 11096: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 1109a: 8819 ldrh r1, [r3, #0] - 1109c: 789b ldrb r3, [r3, #2] - 1109e: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 110a2: f8a7 1079 strh.w r1, [r7, #121] ; 0x79 - 110a6: f8c7 2075 str.w r2, [r7, #117] ; 0x75 - 110aa: f887 307b strb.w r3, [r7, #123] ; 0x7b + 112ee: 4b7a ldr r3, [pc, #488] ; (114d8 ) + 112f0: cb07 ldmia r3!, {r0, r1, r2} + 112f2: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 112f6: 8819 ldrh r1, [r3, #0] + 112f8: 789b ldrb r3, [r3, #2] + 112fa: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 112fe: f8a7 1079 strh.w r1, [r7, #121] ; 0x79 + 11302: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + 11306: f887 307b strb.w r3, [r7, #123] ; 0x7b break; - 110ae: f7fb bef9 b.w cea4 + 1130a: f7fb be73 b.w cff4 strcpy(data.str, "Song Scroll Down"); - 110b2: 4eaa ldr r6, [pc, #680] ; (1135c ) - 110b4: ce0f ldmia r6!, {r0, r1, r2, r3} - 110b6: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 110ba: 7831 ldrb r1, [r6, #0] - 110bc: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 110c0: f8c7 2075 str.w r2, [r7, #117] ; 0x75 - 110c4: f8c7 3079 str.w r3, [r7, #121] ; 0x79 - 110c8: f887 107d strb.w r1, [r7, #125] ; 0x7d + 1130e: 4e73 ldr r6, [pc, #460] ; (114dc ) + 11310: ce0f ldmia r6!, {r0, r1, r2, r3} + 11312: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 11316: 7831 ldrb r1, [r6, #0] + 11318: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 1131c: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + 11320: f8c7 3079 str.w r3, [r7, #121] ; 0x79 + 11324: f887 107d strb.w r1, [r7, #125] ; 0x7d break; - 110cc: f7fb beea b.w cea4 + 11328: f7fb be64 b.w cff4 strcpy(data.str, "Folder Enter"); - 110d0: 4ba3 ldr r3, [pc, #652] ; (11360 ) - 110d2: f7ff bbaa b.w 1082a - 110d6: f505 5240 add.w r2, r5, #12288 ; 0x3000 + 1132c: 4b6c ldr r3, [pc, #432] ; (114e0 ) + 1132e: cb07 ldmia r3!, {r0, r1, r2} + 11330: 781b ldrb r3, [r3, #0] + 11332: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 11336: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 1133a: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + 1133e: f887 3079 strb.w r3, [r7, #121] ; 0x79 + break; + 11342: f7fb be57 b.w cff4 + 11346: f505 5240 add.w r2, r5, #12288 ; 0x3000 strcpy(data.str, "Double Time"); - 110da: 4ba2 ldr r3, [pc, #648] ; (11364 ) - 110dc: f892 279d ldrb.w r2, [r2, #1949] ; 0x79d - 110e0: f3c2 1280 ubfx r2, r2, #6, #1 - 110e4: 7522 strb r2, [r4, #20] - 110e6: cb07 ldmia r3!, {r0, r1, r2} - 110e8: f8c7 006d str.w r0, [r7, #109] ; 0x6d - 110ec: f8c7 1071 str.w r1, [r7, #113] ; 0x71 - 110f0: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + 1134a: 4b66 ldr r3, [pc, #408] ; (114e4 ) + 1134c: f892 27bd ldrb.w r2, [r2, #1981] ; 0x7bd + 11350: f3c2 1280 ubfx r2, r2, #6, #1 + 11354: 7522 strb r2, [r4, #20] + 11356: cb07 ldmia r3!, {r0, r1, r2} + 11358: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 1135c: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 11360: f8c7 2075 str.w r2, [r7, #117] ; 0x75 break; - 110f4: f7fb bed6 b.w cea4 - fetchSysEx(BMC_FAS3_FUNC_ID_TUNER, 0, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 110f8: 2300 movs r3, #0 - 110fa: 2111 movs r1, #17 - 110fc: 461a mov r2, r3 - 110fe: 9300 str r3, [sp, #0] - return BMC_OFF_LED_EVENT; - 11100: 4698 mov r8, r3 - 11102: f7f0 f965 bl 13d0 - } - 11106: f7fa bc37 b.w b978 - sprintf(data.str, "SN %u", data.byteB+data.offset); - 1110a: 69b8 ldr r0, [r7, #24] - return snapshot==t_value; - 1110c: f893 378b ldrb.w r3, [r3, #1931] ; 0x78b - 11110: 4402 add r2, r0 - 11112: 4995 ldr r1, [pc, #596] ; (11368 ) - 11114: eba3 0c00 sub.w ip, r3, r0 - 11118: f107 006d add.w r0, r7, #109 ; 0x6d - 1111c: f1dc 0300 rsbs r3, ip, #0 - 11120: eb43 030c adc.w r3, r3, ip - 11124: 7523 strb r3, [r4, #20] - 11126: f01d f831 bl 2e18c - 1112a: f7fd be65 b.w edf8 - activeChar = (activeChar==0) ? 2 : (activeChar-1); - 1112e: 2302 movs r3, #2 - activeChar = (activeChar>=2) ? 0 : (activeChar+1); - 11130: f884 3c69 strb.w r3, [r4, #3177] ; 0xc69 - } else if(callback.typerCommand){ - 11134: f8d4 3c6c ldr.w r3, [r4, #3180] ; 0xc6c - 11138: 695b ldr r3, [r3, #20] - 1113a: b13b cbz r3, 1114c - 1113c: f894 2c60 ldrb.w r2, [r4, #3168] ; 0xc60 - return output; - 11140: f8b4 0c64 ldrh.w r0, [r4, #3172] ; 0xc64 - if(!flags.read(BMC_TYPER_FLAG_DISPLAY_ZERO_OFFSET)){ - 11144: 07d2 lsls r2, r2, #31 - 11146: d50f bpl.n 11168 - return (output==0) ? 0 : (output-1); - 11148: 4601 mov r1, r0 - callback.typerCommand(getOutput(), getRawOutput()); - 1114a: 4798 blx r3 - if(cmd > 10){// cmd 10 is Clear - 1114c: 69fb ldr r3, [r7, #28] - 1114e: 2b0a cmp r3, #10 - 11150: f43a ac10 beq.w b974 - switch(cmd){ - 11154: 3b10 subs r3, #16 - 11156: 2b06 cmp r3, #6 - 11158: f63a acd9 bhi.w bb0e - 1115c: e8df f003 tbb [pc, r3] - 11160: 728bb0c3 .word 0x728bb0c3 - 11164: 3859 .short 0x3859 - 11166: 09 .byte 0x09 - 11167: 00 .byte 0x00 - return (output==0) ? 0 : (output-1); - 11168: 2800 cmp r0, #0 - 1116a: d0ed beq.n 11148 - 1116c: 1e41 subs r1, r0, #1 - 1116e: b289 uxth r1, r1 - 11170: e7eb b.n 1114a - if(cc <= 127){ - 11172: f994 3c64 ldrsb.w r3, [r4, #3172] ; 0xc64 - return output; - 11176: f8b4 6c64 ldrh.w r6, [r4, #3172] ; 0xc64 - 1117a: 2b00 cmp r3, #0 - 1117c: f6fa abfa blt.w b974 - return (settings.data[2]>>6) & 0x0F; - 11180: f8da 37fc ldr.w r3, [sl, #2044] ; 0x7fc - uint8_t cc = valueTyper.getOutput(); - 11184: b2f6 uxtb r6, r6 - uint8_t val = midi.toggleCC(e.ports, channel, cc); - 11186: f505 5ace add.w sl, r5, #6592 ; 0x19c0 - midi.sendControlChange(e.ports, channel, cc, val); - 1118a: f04f 0800 mov.w r8, #0 - 1118e: 68da ldr r2, [r3, #12] - uint8_t val = midi.toggleCC(e.ports, channel, cc); - 11190: 4633 mov r3, r6 - 11192: 4650 mov r0, sl - 11194: f3c2 1283 ubfx r2, r2, #6, #4 - channel = BMC_TO_MIDI_CHANNEL(channel); - 11198: 1c54 adds r4, r2, #1 - uint8_t val = midi.toggleCC(e.ports, channel, cc); - 1119a: 697a ldr r2, [r7, #20] - 1119c: f892 1033 ldrb.w r1, [r2, #51] ; 0x33 - 111a0: 4622 mov r2, r4 - 111a2: f013 fe21 bl 24de8 - midi.sendControlChange(e.ports, channel, cc, val); - 111a6: 697a ldr r2, [r7, #20] - uint8_t val = midi.toggleCC(e.ports, channel, cc); - 111a8: 4681 mov r9, r0 - midi.sendControlChange(e.ports, channel, cc, val); - 111aa: 2301 movs r3, #1 - 111ac: f892 1033 ldrb.w r1, [r2, #51] ; 0x33 - 111b0: 4650 mov r0, sl - 111b2: 4622 mov r2, r4 - 111b4: 9302 str r3, [sp, #8] - 111b6: 4633 mov r3, r6 - 111b8: e9cd 9800 strd r9, r8, [sp] - 111bc: f012 f90e bl 233dc - streamMidiControl(channel, cc, val); - 111c0: 464b mov r3, r9 - 111c2: 4632 mov r2, r6 - 111c4: 4621 mov r1, r4 - 111c6: 4628 mov r0, r5 - 111c8: f006 ff38 bl 1803c - 111cc: f7fa bbd4 b.w b978 - if(pc <= 127){ - 111d0: f994 3c64 ldrsb.w r3, [r4, #3172] ; 0xc64 - 111d4: f8b4 6c64 ldrh.w r6, [r4, #3172] ; 0xc64 - 111d8: 2b00 cmp r3, #0 - 111da: f6fa abcb blt.w b974 - 111de: f8da 37fc ldr.w r3, [sl, #2044] ; 0x7fc - uint8_t pc = valueTyper.getOutput(); - 111e2: b2f6 uxtb r6, r6 - midi.sendProgramChange(e.ports, channel, pc); - 111e4: 697a ldr r2, [r7, #20] - 111e6: 2000 movs r0, #0 - 111e8: f892 1033 ldrb.w r1, [r2, #51] ; 0x33 - return BMC_OFF_LED_EVENT; - 111ec: 4680 mov r8, r0 - 111ee: 68da ldr r2, [r3, #12] - midi.sendProgramChange(e.ports, channel, pc); - 111f0: 4633 mov r3, r6 - 111f2: 9000 str r0, [sp, #0] - 111f4: f505 50ce add.w r0, r5, #6592 ; 0x19c0 - 111f8: f3c2 1283 ubfx r2, r2, #6, #4 - channel = BMC_TO_MIDI_CHANNEL(channel); - 111fc: 1c54 adds r4, r2, #1 - midi.sendProgramChange(e.ports, channel, pc); - 111fe: 4622 mov r2, r4 - 11200: f011 ff72 bl 230e8 - streamMidiProgram(channel, pc); - 11204: 4632 mov r2, r6 - 11206: 4621 mov r1, r4 - 11208: 4628 mov r0, r5 - 1120a: f006 feeb bl 17fe4 - 1120e: f7fa bbb3 b.w b978 - 11212: f894 3c60 ldrb.w r3, [r4, #3168] ; 0xc60 - 11216: f8b4 2c64 ldrh.w r2, [r4, #3172] ; 0xc64 - if(!flags.read(BMC_TYPER_FLAG_DISPLAY_ZERO_OFFSET)){ - 1121a: 07d8 lsls r0, r3, #31 - 1121c: d541 bpl.n 112a2 - 1121e: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 11222: f893 3373 ldrb.w r3, [r3, #883] ; 0x373 - if(!connected()){ - 11226: 07d9 lsls r1, r3, #31 - 11228: f57a aba4 bpl.w b974 - fetchSysEx(BMC_FAS3_FUNC_ID_SCENE, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 1122c: 2300 movs r3, #0 - 1122e: f243 3054 movw r0, #13140 ; 0x3354 - 11232: b2d2 uxtb r2, r2 - 11234: 210c movs r1, #12 - 11236: 4428 add r0, r5 - 11238: 9300 str r3, [sp, #0] - return BMC_OFF_LED_EVENT; - 1123a: 4698 mov r8, r3 - 1123c: f7f0 f8c8 bl 13d0 - 11240: f7fa bb9a b.w b978 - 11244: f894 3c60 ldrb.w r3, [r4, #3168] ; 0xc60 - 11248: f8b4 2c64 ldrh.w r2, [r4, #3172] ; 0xc64 - 1124c: 07de lsls r6, r3, #31 - 1124e: d52d bpl.n 112ac - 11250: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 11254: f893 3373 ldrb.w r3, [r3, #883] ; 0x373 - if(!connected()){ - 11258: 07dc lsls r4, r3, #31 - 1125a: f57a ab8b bpl.w b974 - fetchSysEx(BMC_FAS3_FUNC_ID_SCENE, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 1125e: 2300 movs r3, #0 - 11260: f243 3054 movw r0, #13140 ; 0x3354 - 11264: b2d2 uxtb r2, r2 - 11266: 210c movs r1, #12 - 11268: 4428 add r0, r5 - 1126a: 9300 str r3, [sp, #0] - 1126c: 4698 mov r8, r3 - 1126e: f7f0 f8af bl 13d0 - 11272: f7fa bb81 b.w b978 - 11276: f894 3c60 ldrb.w r3, [r4, #3168] ; 0xc60 - 1127a: f8b4 1c64 ldrh.w r1, [r4, #3172] ; 0xc64 - 1127e: 07da lsls r2, r3, #31 - 11280: d519 bpl.n 112b6 - 11282: f505 5340 add.w r3, r5, #12288 ; 0x3000 - 11286: f893 3373 ldrb.w r3, [r3, #883] ; 0x373 - if(!connected()){ - 1128a: 07db lsls r3, r3, #31 - 1128c: f57a ab72 bpl.w b974 - 11290: f243 3054 movw r0, #13140 ; 0x3354 - 11294: f04f 0800 mov.w r8, #0 - 11298: 4428 add r0, r5 - 1129a: f7f5 fd5b bl 6d54 - 1129e: f7fa bb6b b.w b978 - return (output==0) ? 0 : (output-1); - 112a2: 2a00 cmp r2, #0 - 112a4: d0bb beq.n 1121e - 112a6: 3a01 subs r2, #1 - 112a8: b292 uxth r2, r2 - 112aa: e7b8 b.n 1121e - 112ac: 2a00 cmp r2, #0 - 112ae: d0cf beq.n 11250 - 112b0: 3a01 subs r2, #1 - 112b2: b292 uxth r2, r2 - 112b4: e7cc b.n 11250 - 112b6: 2900 cmp r1, #0 - 112b8: d0e3 beq.n 11282 - 112ba: 3901 subs r1, #1 - 112bc: b289 uxth r1, r1 - 112be: e7e0 b.n 11282 - 112c0: f894 3c60 ldrb.w r3, [r4, #3168] ; 0xc60 - presets.setByIndex(valueTyper.getRawOutput()); - 112c4: f243 10ec movw r0, #12780 ; 0x31ec - 112c8: f8b4 1c64 ldrh.w r1, [r4, #3172] ; 0xc64 - if(!flags.read(BMC_TYPER_FLAG_DISPLAY_ZERO_OFFSET)){ - 112cc: 07dc lsls r4, r3, #31 - 112ce: 4428 add r0, r5 - 112d0: d518 bpl.n 11304 - set(t_bank, t_preset, forced); - 112d2: 2300 movs r3, #0 - 112d4: f001 0207 and.w r2, r1, #7 - 112d8: f3c1 01c4 ubfx r1, r1, #3, #5 - return BMC_OFF_LED_EVENT; - 112dc: 4698 mov r8, r3 - 112de: f7ef f96f bl 5c0 - } - 112e2: f7fa bb49 b.w b978 - 112e6: f894 3c60 ldrb.w r3, [r4, #3168] ; 0xc60 - 112ea: f8b4 1c64 ldrh.w r1, [r4, #3172] ; 0xc64 - 112ee: 07de lsls r6, r3, #31 - 112f0: d50d bpl.n 1130e - setLayer(valueTyper.getRawOutput()); - 112f2: 2300 movs r3, #0 - 112f4: b2c9 uxtb r1, r1 - 112f6: 4628 mov r0, r5 - 112f8: 461a mov r2, r3 - return BMC_OFF_LED_EVENT; - 112fa: 4698 mov r8, r3 - setLayer(valueTyper.getRawOutput()); - 112fc: f003 ff20 bl 15140 + 11364: f7fb be46 b.w cff4 + 11368: f505 5240 add.w r2, r5, #12288 ; 0x3000 + strcpy(data.str, "Half Time"); + 1136c: 4b5e ldr r3, [pc, #376] ; (114e8 ) + 1136e: f892 27bd ldrb.w r2, [r2, #1981] ; 0x7bd + 11372: f3c2 1240 ubfx r2, r2, #5, #1 + 11376: 7522 strb r2, [r4, #20] + 11378: e794 b.n 112a4 + strcpy(data.str, "Trans Prev"); + 1137a: 4b5c ldr r3, [pc, #368] ; (114ec ) + 1137c: f7fe bb31 b.w f9e2 + strcpy(data.str, "Pause"); + 11380: 4b5b ldr r3, [pc, #364] ; (114f0 ) + 11382: 6818 ldr r0, [r3, #0] + 11384: 889b ldrh r3, [r3, #4] + 11386: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 1138a: f8a7 3071 strh.w r3, [r7, #113] ; 0x71 break; - 11300: f7fa bb3a b.w b978 - return (output==0) ? 0 : (output-1); - 11304: 2900 cmp r1, #0 - 11306: d0e4 beq.n 112d2 - 11308: 3901 subs r1, #1 - 1130a: b289 uxth r1, r1 - 1130c: e7e1 b.n 112d2 - 1130e: 2900 cmp r1, #0 - 11310: d0ef beq.n 112f2 - 11312: 3901 subs r1, #1 - 11314: b289 uxth r1, r1 - 11316: e7ec b.n 112f2 - memset(chars, 0, 3); - 11318: f642 4360 movw r3, #11360 ; 0x2c60 - output = 0; - 1131c: 2200 movs r2, #0 - memset(chars, 0, 3); - 1131e: 442b add r3, r5 - output = 0; - 11320: f8a4 2c64 strh.w r2, [r4, #3172] ; 0xc64 - activeChar = 0; - 11324: f884 2c69 strb.w r2, [r4, #3177] ; 0xc69 - memset(chars, 0, 3); - 11328: 80da strh r2, [r3, #6] - 1132a: 721a strb r2, [r3, #8] - break; - 1132c: e702 b.n 11134 - display.renderFasStatus(data); - 1132e: f643 3638 movw r6, #15160 ; 0x3b38 - 11332: f107 0160 add.w r1, r7, #96 ; 0x60 - 11336: 2295 movs r2, #149 ; 0x95 - 11338: 4668 mov r0, sp - 1133a: 442e add r6, r5 - 1133c: f019 f9e4 bl 2a708 - 11340: e894 000e ldmia.w r4, {r1, r2, r3} - 11344: 4630 mov r0, r6 - 11346: f7fa f921 bl b58c - break; - 1134a: f7fa bb15 b.w b978 - 1134e: bf00 nop - 11350: 200021e0 .word 0x200021e0 - 11354: 200021ec .word 0x200021ec - 11358: 200021d0 .word 0x200021d0 - 1135c: 200021bc .word 0x200021bc - 11360: 200021ac .word 0x200021ac - 11364: 20002190 .word 0x20002190 - 11368: 200022f0 .word 0x200022f0 - chars[activeChar] = (chars[activeChar]>=9) ? 0 : (chars[activeChar]+1); - 1136c: f894 2c69 ldrb.w r2, [r4, #3177] ; 0xc69 - 11370: 18a3 adds r3, r4, r2 - 11372: f893 3c66 ldrb.w r3, [r3, #3174] ; 0xc66 - 11376: 2b08 cmp r3, #8 - 11378: d826 bhi.n 113c8 - 1137a: 3301 adds r3, #1 - 1137c: b2db uxtb r3, r3 - 1137e: 4422 add r2, r4 - 11380: f882 3c66 strb.w r3, [r2, #3174] ; 0xc66 - output = (chars[0]*100)+(chars[1]*10)+chars[2]; - 11384: f894 3c66 ldrb.w r3, [r4, #3174] ; 0xc66 - 11388: eb03 0383 add.w r3, r3, r3, lsl #2 - 1138c: eb03 0283 add.w r2, r3, r3, lsl #2 - 11390: f894 3c67 ldrb.w r3, [r4, #3175] ; 0xc67 - 11394: eb03 0383 add.w r3, r3, r3, lsl #2 - 11398: 005b lsls r3, r3, #1 - 1139a: eb03 0382 add.w r3, r3, r2, lsl #2 - 1139e: f894 2c68 ldrb.w r2, [r4, #3176] ; 0xc68 - 113a2: 4413 add r3, r2 - 113a4: f8a4 3c64 strh.w r3, [r4, #3172] ; 0xc64 - } - 113a8: e6c4 b.n 11134 - chars[activeChar] = (chars[activeChar]==0) ? 9 : (chars[activeChar]-1); - 113aa: f894 2c69 ldrb.w r2, [r4, #3177] ; 0xc69 - 113ae: 18a3 adds r3, r4, r2 - 113b0: f893 3c66 ldrb.w r3, [r3, #3174] ; 0xc66 - 113b4: b153 cbz r3, 113cc - 113b6: 3b01 subs r3, #1 - 113b8: b2db uxtb r3, r3 - 113ba: e7e0 b.n 1137e - activeChar = (activeChar>=2) ? 0 : (activeChar+1); - 113bc: f894 3c69 ldrb.w r3, [r4, #3177] ; 0xc69 - 113c0: 2b01 cmp r3, #1 - 113c2: d905 bls.n 113d0 - 113c4: 2300 movs r3, #0 - 113c6: e6b3 b.n 11130 - chars[activeChar] = (chars[activeChar]>=9) ? 0 : (chars[activeChar]+1); - 113c8: 2300 movs r3, #0 - 113ca: e7d8 b.n 1137e - chars[activeChar] = (chars[activeChar]==0) ? 9 : (chars[activeChar]-1); - 113cc: 2309 movs r3, #9 - 113ce: e7d6 b.n 1137e - activeChar = (activeChar>=2) ? 0 : (activeChar+1); - 113d0: 3301 adds r3, #1 - 113d2: b2db uxtb r3, r3 - 113d4: e6ac b.n 11130 - if(s == 0){ - 113d6: 2b00 cmp r3, #0 - 113d8: f43f aa95 beq.w 10906 - s--; - 113dc: 3b01 subs r3, #1 - 113de: b2db uxtb r3, r3 - 113e0: f7fe b872 b.w f4c8 - return presetIndex; - 113e4: f8d9 31f4 ldr.w r3, [r9, #500] ; 0x1f4 - 113e8: 881b ldrh r3, [r3, #0] - 113ea: f7fb bc7a b.w cce2 - activeChar = (activeChar==0) ? 2 : (activeChar-1); - 113ee: 2b00 cmp r3, #0 - 113f0: f43f ae9d beq.w 1112e - 113f4: 3b01 subs r3, #1 - 113f6: b2db uxtb r3, r3 - 113f8: e69a b.n 11130 - case BMC_FAS_CMD_LOOPER_STOP: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_STOP); break; - 113fa: f243 3054 movw r0, #13140 ; 0x3354 - 113fe: 2100 movs r1, #0 - 11400: 4428 add r0, r5 - return BMC_OFF_LED_EVENT; - 11402: 4688 mov r8, r1 - case BMC_FAS_CMD_LOOPER_STOP: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_STOP); break; - 11404: f7f7 feec bl 91e0 - 11408: f7fa bab6 b.w b978 - case BMC_FAS_CMD_LOOPER_RPD: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REC_PLAY_DUB); break; - 1140c: f243 3054 movw r0, #13140 ; 0x3354 - 11410: 2108 movs r1, #8 - return BMC_OFF_LED_EVENT; - 11412: f04f 0800 mov.w r8, #0 - case BMC_FAS_CMD_LOOPER_RPD: sync.fas.looperControl(BMC_FAS_LOOPER_CONTROL_REC_PLAY_DUB); break; - 11416: 4428 add r0, r5 - 11418: f7f7 fee2 bl 91e0 - 1141c: f7fa baac b.w b978 - 11420: f04f 0801 mov.w r8, #1 - 11424: f7fa baa8 b.w b978 - 11428: f894 2c60 ldrb.w r2, [r4, #3168] ; 0xc60 + 1138e: f7fb be31 b.w cff4 + strcpy(data.str, "BPM Dec"); + 11392: 4b58 ldr r3, [pc, #352] ; (114f4 ) + 11394: cb03 ldmia r3!, {r0, r1} + 11396: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 1139a: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + break; + 1139e: f7fb be29 b.w cff4 + strcpy(data.str, "Outtro"); + 113a2: 4b55 ldr r3, [pc, #340] ; (114f8 ) + strcpy(data.str, "HP Vol"); + 113a4: 6818 ldr r0, [r3, #0] + 113a6: 889a ldrh r2, [r3, #4] + 113a8: 799b ldrb r3, [r3, #6] + 113aa: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 + 113ae: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 113b2: f887 3073 strb.w r3, [r7, #115] ; 0x73 + break; + 113b6: f7fb be1d b.w cff4 + strcpy(data.str, "Drum Fill"); + 113ba: 4b50 ldr r3, [pc, #320] ; (114fc ) + 113bc: e772 b.n 112a4 + strcpy(data.str, "Pause Toggle"); + 113be: 4b50 ldr r3, [pc, #320] ; (11500 ) + 113c0: e7b5 b.n 1132e + strcpy(data.str, "Unpause"); + 113c2: 4b50 ldr r3, [pc, #320] ; (11504 ) + 113c4: cb03 ldmia r3!, {r0, r1} + 113c6: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 113ca: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + break; + 113ce: f7fb be11 b.w cff4 + 113d2: f505 5240 add.w r2, r5, #12288 ; 0x3000 + strcpy(data.str, "Normal Time"); + 113d6: 4b4c ldr r3, [pc, #304] ; (11508 ) + 113d8: f892 67bd ldrb.w r6, [r2, #1981] ; 0x7bd + 113dc: cb07 ldmia r3!, {r0, r1, r2} + 113de: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + data.highlight = !sync.beatBuddy.isHalfTime() && !sync.beatBuddy.isDoubleTime(); + 113e2: 06b1 lsls r1, r6, #26 + strcpy(data.str, "Normal Time"); + 113e4: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 113e8: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + data.highlight = !sync.beatBuddy.isHalfTime() && !sync.beatBuddy.isDoubleTime(); + 113ec: d404 bmi.n 113f8 + 113ee: f3c6 1680 ubfx r6, r6, #6, #1 + 113f2: f086 0301 eor.w r3, r6, #1 + 113f6: 62bb str r3, [r7, #40] ; 0x28 + 113f8: 6abb ldr r3, [r7, #40] ; 0x28 + 113fa: 7523 strb r3, [r4, #20] + break; + 113fc: f7fb bdfa b.w cff4 + strcpy(data.str, "Drumset Sel"); + 11400: 4b42 ldr r3, [pc, #264] ; (1150c ) + 11402: cb07 ldmia r3!, {r0, r1, r2} + 11404: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 11408: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + 1140c: f8c7 2075 str.w r2, [r7, #117] ; 0x75 + break; + 11410: f7fb bdf0 b.w cff4 + strcpy(data.str, "Stop"); + 11414: 4a3e ldr r2, [pc, #248] ; (11510 ) + 11416: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 1141a: 6810 ldr r0, [r2, #0] + 1141c: 7911 ldrb r1, [r2, #4] + 1141e: f893 27bd ldrb.w r2, [r3, #1981] ; 0x7bd + 11422: f8c7 006d str.w r0, [r7, #109] ; 0x6d + return isSyncEnabled() && flags.read(BMC_BEATBUDDY_FLAG_PLAYING); + 11426: f012 0301 ands.w r3, r2, #1 + 1142a: f887 1071 strb.w r1, [r7, #113] ; 0x71 + 1142e: bf18 it ne + 11430: f3c2 0380 ubfxne r3, r2, #2, #1 + data.highlight = !sync.beatBuddy.isPlaying(); + 11434: f083 0301 eor.w r3, r3, #1 + 11438: 7523 strb r3, [r4, #20] + break; + 1143a: f7fb bddb b.w cff4 + strcpy(data.str, "Start"); + 1143e: 4a35 ldr r2, [pc, #212] ; (11514 ) + 11440: f505 5340 add.w r3, r5, #12288 ; 0x3000 + 11444: 6810 ldr r0, [r2, #0] + 11446: f893 37bd ldrb.w r3, [r3, #1981] ; 0x7bd + 1144a: 8892 ldrh r2, [r2, #4] + 1144c: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 11450: f8a7 2071 strh.w r2, [r7, #113] ; 0x71 + 11454: f013 0201 ands.w r2, r3, #1 + 11458: bf18 it ne + 1145a: f3c3 0280 ubfxne r2, r3, #2, #1 + data.highlight = sync.beatBuddy.isPlaying(); + 1145e: 7522 strb r2, [r4, #20] + break; + 11460: f7fb bdc8 b.w cff4 + strcpy(data.str, "Accent Hit"); + 11464: 4b2c ldr r3, [pc, #176] ; (11518 ) + 11466: f7fe babc b.w f9e2 + strcpy(data.str, "HP Vol"); + 1146a: 4b2c ldr r3, [pc, #176] ; (1151c ) + 1146c: e79a b.n 113a4 + strcpy(data.str, "Mix Vol"); + 1146e: 4b2c ldr r3, [pc, #176] ; (11520 ) + 11470: cb03 ldmia r3!, {r0, r1} + 11472: f8c7 006d str.w r0, [r7, #109] ; 0x6d + 11476: f8c7 1071 str.w r1, [r7, #113] ; 0x71 + break; + 1147a: f7fb bdbb b.w cff4 + strcpy(data.str, "Tap"); + 1147e: 4b29 ldr r3, [pc, #164] ; (11524 ) + 11480: 6818 ldr r0, [r3, #0] + 11482: f8c7 006d str.w r0, [r7, #109] ; 0x6d + break; + 11486: f7fb bdb5 b.w cff4 + 1148a: f04f 0801 mov.w r8, #1 + 1148e: f7fa bade b.w ba4e + 11492: f894 2c80 ldrb.w r2, [r4, #3200] ; 0xc80 return output; - 1142c: f8b4 0c64 ldrh.w r0, [r4, #3172] ; 0xc64 + 11496: f8b4 0c84 ldrh.w r0, [r4, #3204] ; 0xc84 if(!flags.read(BMC_TYPER_FLAG_DISPLAY_ZERO_OFFSET)){ - 11430: 07d1 lsls r1, r2, #31 - 11432: d505 bpl.n 11440 + 1149a: 07d1 lsls r1, r2, #31 + 1149c: d505 bpl.n 114aa return (output==0) ? 0 : (output-1); - 11434: 4601 mov r1, r0 + 1149e: 4601 mov r1, r0 return BMC_OFF_LED_EVENT; - 11436: f04f 0800 mov.w r8, #0 + 114a0: f04f 0800 mov.w r8, #0 callback.typerCustomCommand(getOutput(), getRawOutput()); - 1143a: 4798 blx r3 + 114a4: 4798 blx r3 switch(cmd){ - 1143c: f7fa ba9c b.w b978 + 114a6: f7fa bad2 b.w ba4e return (output==0) ? 0 : (output-1); - 11440: 2800 cmp r0, #0 - 11442: d0f7 beq.n 11434 - 11444: 1e41 subs r1, r0, #1 - 11446: b289 uxth r1, r1 - 11448: e7f5 b.n 11436 - 1144a: bf00 nop - -0001144c : + 114aa: 2800 cmp r0, #0 + 114ac: d0f7 beq.n 1149e + 114ae: 1e41 subs r1, r0, #1 + 114b0: b289 uxth r1, r1 + 114b2: e7f5 b.n 114a0 + 114b4: 20002234 .word 0x20002234 + 114b8: 20002220 .word 0x20002220 + 114bc: 20002000 .word 0x20002000 + 114c0: 20001ff4 .word 0x20001ff4 + 114c4: 20001fec .word 0x20001fec + 114c8: 20001fe8 .word 0x20001fe8 + 114cc: 200021e0 .word 0x200021e0 + 114d0: 2000219c .word 0x2000219c + 114d4: 20002180 .word 0x20002180 + 114d8: 200021d0 .word 0x200021d0 + 114dc: 200021bc .word 0x200021bc + 114e0: 200021ac .word 0x200021ac + 114e4: 20002190 .word 0x20002190 + 114e8: 20002174 .word 0x20002174 + 114ec: 200021ec .word 0x200021ec + 114f0: 2000210c .word 0x2000210c + 114f4: 200020fc .word 0x200020fc + 114f8: 20002138 .word 0x20002138 + 114fc: 2000212c .word 0x2000212c + 11500: 2000211c .word 0x2000211c + 11504: 20002114 .word 0x20002114 + 11508: 20002168 .word 0x20002168 + 1150c: 2000215c .word 0x2000215c + 11510: 200039d8 .word 0x200039d8 + 11514: 200039c4 .word 0x200039c4 + 11518: 20002150 .word 0x20002150 + 1151c: 20002148 .word 0x20002148 + 11520: 20002140 .word 0x20002140 + 11524: 200034e0 .word 0x200034e0 + +00011528 : void begin(uint8_t t_pin){ - 1144c: b570 push {r4, r5, r6, lr} - 1144e: 4604 mov r4, r0 + 11528: b570 push {r4, r5, r6, lr} + 1152a: 4604 mov r4, r0 if(pin!=255){ - 11450: 7840 ldrb r0, [r0, #1] - 11452: 28ff cmp r0, #255 ; 0xff - 11454: f040 810a bne.w 1166c + 1152c: 7840 ldrb r0, [r0, #1] + 1152e: 28ff cmp r0, #255 ; 0xff + 11530: f040 810a bne.w 11748 if(t_pin==255){ - 11458: 29ff cmp r1, #255 ; 0xff - 1145a: 460d mov r5, r1 - 1145c: f000 8107 beq.w 1166e + 11534: 29ff cmp r1, #255 ; 0xff + 11536: 460d mov r5, r1 + 11538: f000 8107 beq.w 1174a uint8_t lastRawValue = rawValue; - 11460: 78e6 ldrb r6, [r4, #3] + 1153c: 78e6 ldrb r6, [r4, #3] return map(analogRead(pin), calMin, calMax, 0, 128); - 11462: f018 fe75 bl 2a150 + 1153e: f018 fe7b bl 2a238 long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max; - 11466: 88e3 ldrh r3, [r4, #6] - 11468: 8922 ldrh r2, [r4, #8] + 11542: 88e3 ldrh r3, [r4, #6] + 11544: 8922 ldrh r2, [r4, #8] long in_range = in_max - in_min; - 1146a: 1ad2 subs r2, r2, r3 + 11546: 1ad2 subs r2, r2, r3 if (in_range == 0) return out_min + out_range / 2; - 1146c: 2a00 cmp r2, #0 - 1146e: f000 81e3 beq.w 11838 + 11548: 2a00 cmp r2, #0 + 1154a: f000 81e3 beq.w 11914 long num = (x - in_min) * out_range; - 11472: eba0 0303 sub.w r3, r0, r3 + 1154e: eba0 0303 sub.w r3, r0, r3 num += in_range / 2; - 11476: 4611 mov r1, r2 - 11478: bfb8 it lt - 1147a: 1c51 addlt r1, r2, #1 + 11552: 4611 mov r1, r2 + 11554: bfb8 it lt + 11556: 1c51 addlt r1, r2, #1 long num = (x - in_min) * out_range; - 1147c: 01db lsls r3, r3, #7 + 11558: 01db lsls r3, r3, #7 num += in_range / 2; - 1147e: eb03 0361 add.w r3, r3, r1, asr #1 + 1155a: eb03 0361 add.w r3, r3, r1, asr #1 if (in_range * num < 0) return result - 1; - 11482: fb03 f102 mul.w r1, r3, r2 + 1155e: fb03 f102 mul.w r1, r3, r2 long result = num / in_range + out_min; - 11486: fb93 f3f2 sdiv r3, r3, r2 + 11562: fb93 f3f2 sdiv r3, r3, r2 if (in_range * num < 0) return result - 1; - 1148a: 2900 cmp r1, #0 - 1148c: bfb8 it lt - 1148e: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff - 11492: b2db uxtb r3, r3 - 11494: 4619 mov r1, r3 + 11566: 2900 cmp r1, #0 + 11568: bfb8 it lt + 1156a: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff + 1156e: b2db uxtb r3, r3 + 11570: 4619 mov r1, r3 if(rawValue != lastRawValue){ - 11496: 42b3 cmp r3, r6 + 11572: 42b3 cmp r3, r6 rawValue = readPin(); - 11498: 70e3 strb r3, [r4, #3] + 11574: 70e3 strb r3, [r4, #3] if(rawValue != lastRawValue){ - 1149a: f000 81c7 beq.w 1182c + 11576: f000 81c7 beq.w 11908 stableSteps = 0; - 1149e: 2201 movs r2, #1 - 114a0: 2000 movs r0, #0 - 114a2: 4616 mov r6, r2 - 114a4: 7120 strb r0, [r4, #4] + 1157a: 2201 movs r2, #1 + 1157c: 2000 movs r0, #0 + 1157e: 4616 mov r6, r2 + 11580: 7120 strb r0, [r4, #4] value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 114a6: 78a3 ldrb r3, [r4, #2] + 11582: 78a3 ldrb r3, [r4, #2] pin = t_pin; - 114a8: 7065 strb r5, [r4, #1] + 11584: 7065 strb r5, [r4, #1] value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 114aa: 4403 add r3, r0 - 114ac: fbb3 f3f6 udiv r3, r3, r6 + 11586: 4403 add r3, r0 + 11588: fbb3 f3f6 udiv r3, r3, r6 if(abs(rawValue - value) > 10) { - 114b0: b2de uxtb r6, r3 - 114b2: 1b88 subs r0, r1, r6 - 114b4: 2800 cmp r0, #0 - 114b6: bfb8 it lt - 114b8: 4240 neglt r0, r0 - 114ba: 280a cmp r0, #10 + 1158c: b2de uxtb r6, r3 + 1158e: 1b88 subs r0, r1, r6 + 11590: 2800 cmp r0, #0 + 11592: bfb8 it lt + 11594: 4240 neglt r0, r0 + 11596: 280a cmp r0, #10 value = (value + rawValue)/2; - 114bc: bfc8 it gt - 114be: 198b addgt r3, r1, r6 + 11598: bfc8 it gt + 1159a: 198b addgt r3, r1, r6 flags &= excluded; - 114c0: 7821 ldrb r1, [r4, #0] - 114c2: bfc8 it gt - 114c4: 105b asrgt r3, r3, #1 + 1159c: 7821 ldrb r1, [r4, #0] + 1159e: bfc8 it gt + 115a0: 105b asrgt r3, r3, #1 stableSteps = 0; - 114c6: 2aff cmp r2, #255 ; 0xff - 114c8: f001 0112 and.w r1, r1, #18 + 115a2: 2aff cmp r2, #255 ; 0xff + 115a4: f001 0112 and.w r1, r1, #18 value = (value + rawValue)/2; - 114cc: 70a3 strb r3, [r4, #2] + 115a8: 70a3 strb r3, [r4, #2] case 67: return true; } #endif #if BMC_TEENSY_MODEL == 40 switch(index){ - 114ce: f1a5 030e sub.w r3, r5, #14 + 115aa: f1a5 030e sub.w r3, r5, #14 stableSteps = 0; - 114d2: bf08 it eq - 114d4: 2200 moveq r2, #0 - 114d6: 7021 strb r1, [r4, #0] - 114d8: 2b0d cmp r3, #13 - 114da: 7122 strb r2, [r4, #4] - 114dc: f240 81a0 bls.w 11820 - 114e0: 2100 movs r1, #0 - 114e2: 48c6 ldr r0, [pc, #792] ; (117fc ) - 114e4: f01b f830 bl 2c548 + 115ae: bf08 it eq + 115b0: 2200 moveq r2, #0 + 115b2: 7021 strb r1, [r4, #0] + 115b4: 2b0d cmp r3, #13 + 115b6: 7122 strb r2, [r4, #4] + 115b8: f240 81a0 bls.w 118fc + 115bc: 2100 movs r1, #0 + 115be: 48c6 ldr r0, [pc, #792] ; (118d8 ) + 115c0: f01b f836 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 114e8: 48c5 ldr r0, [pc, #788] ; (11800 ) - 114ea: f018 fcc3 bl 29e74 - 114ee: 212e movs r1, #46 ; 0x2e - 114f0: 48c4 ldr r0, [pc, #784] ; (11804 ) - 114f2: f01b f829 bl 2c548 - 114f6: 48c2 ldr r0, [pc, #776] ; (11800 ) - 114f8: f018 fcbc bl 29e74 - 114fc: 212e movs r1, #46 ; 0x2e - 114fe: 48c1 ldr r0, [pc, #772] ; (11804 ) - 11500: f01b f822 bl 2c548 - 11504: 48be ldr r0, [pc, #760] ; (11800 ) - 11506: f018 fcb5 bl 29e74 - 1150a: 212e movs r1, #46 ; 0x2e - 1150c: 48bd ldr r0, [pc, #756] ; (11804 ) - 1150e: f01b f81b bl 2c548 - 11512: 48bb ldr r0, [pc, #748] ; (11800 ) - 11514: f018 fcae bl 29e74 - 11518: 212e movs r1, #46 ; 0x2e - 1151a: 48ba ldr r0, [pc, #744] ; (11804 ) - 1151c: f01b f814 bl 2c548 - 11520: 48b7 ldr r0, [pc, #732] ; (11800 ) - 11522: f018 fca7 bl 29e74 - 11526: 2101 movs r1, #1 - 11528: 48b7 ldr r0, [pc, #732] ; (11808 ) - 1152a: f01b f80d bl 2c548 - 1152e: 2104 movs r1, #4 - 11530: 48b6 ldr r0, [pc, #728] ; (1180c ) - 11532: f01b f809 bl 2c548 - 11536: 48b2 ldr r0, [pc, #712] ; (11800 ) - 11538: f018 fc9c bl 29e74 - 1153c: 2101 movs r1, #1 - 1153e: 48b2 ldr r0, [pc, #712] ; (11808 ) - 11540: f01b f802 bl 2c548 + 115c4: 48c5 ldr r0, [pc, #788] ; (118dc ) + 115c6: f018 fccb bl 29f60 + 115ca: 212e movs r1, #46 ; 0x2e + 115cc: 48c4 ldr r0, [pc, #784] ; (118e0 ) + 115ce: f01b f82f bl 2c630 + 115d2: 48c2 ldr r0, [pc, #776] ; (118dc ) + 115d4: f018 fcc4 bl 29f60 + 115d8: 212e movs r1, #46 ; 0x2e + 115da: 48c1 ldr r0, [pc, #772] ; (118e0 ) + 115dc: f01b f828 bl 2c630 + 115e0: 48be ldr r0, [pc, #760] ; (118dc ) + 115e2: f018 fcbd bl 29f60 + 115e6: 212e movs r1, #46 ; 0x2e + 115e8: 48bd ldr r0, [pc, #756] ; (118e0 ) + 115ea: f01b f821 bl 2c630 + 115ee: 48bb ldr r0, [pc, #748] ; (118dc ) + 115f0: f018 fcb6 bl 29f60 + 115f4: 212e movs r1, #46 ; 0x2e + 115f6: 48ba ldr r0, [pc, #744] ; (118e0 ) + 115f8: f01b f81a bl 2c630 + 115fc: 48b7 ldr r0, [pc, #732] ; (118dc ) + 115fe: f018 fcaf bl 29f60 + 11602: 2101 movs r1, #1 + 11604: 48b7 ldr r0, [pc, #732] ; (118e4 ) + 11606: f01b f813 bl 2c630 + 1160a: 2104 movs r1, #4 + 1160c: 48b6 ldr r0, [pc, #728] ; (118e8 ) + 1160e: f01b f80f bl 2c630 + 11612: 48b2 ldr r0, [pc, #712] ; (118dc ) + 11614: f018 fca4 bl 29f60 + 11618: 2101 movs r1, #1 + 1161a: 48b2 ldr r0, [pc, #712] ; (118e4 ) + 1161c: f01b f808 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 11544: 2300 movs r3, #0 - 11546: 220a movs r2, #10 - 11548: 4629 mov r1, r5 - 1154a: 48ad ldr r0, [pc, #692] ; (11800 ) - 1154c: f018 fcae bl 29eac + 11620: 2300 movs r3, #0 + 11622: 220a movs r2, #10 + 11624: 4629 mov r1, r5 + 11626: 48ad ldr r0, [pc, #692] ; (118dc ) + 11628: f018 fcb6 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 11550: 48ab ldr r0, [pc, #684] ; (11800 ) - 11552: f018 fc8f bl 29e74 - 11556: 2101 movs r1, #1 - 11558: 48ab ldr r0, [pc, #684] ; (11808 ) - 1155a: f01a fff5 bl 2c548 - 1155e: 2145 movs r1, #69 ; 0x45 - 11560: 48ab ldr r0, [pc, #684] ; (11810 ) - 11562: f01a fff1 bl 2c548 + 1162c: 48ab ldr r0, [pc, #684] ; (118dc ) + 1162e: f018 fc97 bl 29f60 + 11632: 2101 movs r1, #1 + 11634: 48ab ldr r0, [pc, #684] ; (118e4 ) + 11636: f01a fffb bl 2c630 + 1163a: 2145 movs r1, #69 ; 0x45 + 1163c: 48ab ldr r0, [pc, #684] ; (118ec ) + 1163e: f01a fff7 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 11566: 48a6 ldr r0, [pc, #664] ; (11800 ) - 11568: f018 fc84 bl 29e74 - 1156c: 212e movs r1, #46 ; 0x2e - 1156e: 48a5 ldr r0, [pc, #660] ; (11804 ) - 11570: f01a ffea bl 2c548 - 11574: 48a2 ldr r0, [pc, #648] ; (11800 ) - 11576: f018 fc7d bl 29e74 - 1157a: 212e movs r1, #46 ; 0x2e - 1157c: 48a1 ldr r0, [pc, #644] ; (11804 ) - 1157e: f01a ffe3 bl 2c548 - 11582: 489f ldr r0, [pc, #636] ; (11800 ) - 11584: f018 fc76 bl 29e74 - 11588: 212e movs r1, #46 ; 0x2e - 1158a: 489e ldr r0, [pc, #632] ; (11804 ) - 1158c: f01a ffdc bl 2c548 - 11590: 489b ldr r0, [pc, #620] ; (11800 ) - 11592: f018 fc6f bl 29e74 - 11596: 212e movs r1, #46 ; 0x2e - 11598: 489a ldr r0, [pc, #616] ; (11804 ) - 1159a: f01a ffd5 bl 2c548 - 1159e: 4898 ldr r0, [pc, #608] ; (11800 ) - 115a0: f018 fc68 bl 29e74 - 115a4: 2100 movs r1, #0 - 115a6: 4895 ldr r0, [pc, #596] ; (117fc ) - 115a8: f01a ffce bl 2c548 - 115ac: 4894 ldr r0, [pc, #592] ; (11800 ) - 115ae: f018 fc61 bl 29e74 - 115b2: 2100 movs r1, #0 - 115b4: 4891 ldr r0, [pc, #580] ; (117fc ) - 115b6: f01a ffc7 bl 2c548 - 115ba: 4891 ldr r0, [pc, #580] ; (11800 ) - 115bc: f018 fc5a bl 29e74 - 115c0: 212e movs r1, #46 ; 0x2e - 115c2: 4890 ldr r0, [pc, #576] ; (11804 ) - 115c4: f01a ffc0 bl 2c548 - 115c8: 488d ldr r0, [pc, #564] ; (11800 ) - 115ca: f018 fc53 bl 29e74 - 115ce: 212e movs r1, #46 ; 0x2e - 115d0: 488c ldr r0, [pc, #560] ; (11804 ) - 115d2: f01a ffb9 bl 2c548 - 115d6: 488a ldr r0, [pc, #552] ; (11800 ) - 115d8: f018 fc4c bl 29e74 - 115dc: 212e movs r1, #46 ; 0x2e - 115de: 4889 ldr r0, [pc, #548] ; (11804 ) - 115e0: f01a ffb2 bl 2c548 - 115e4: 4886 ldr r0, [pc, #536] ; (11800 ) - 115e6: f018 fc45 bl 29e74 - 115ea: 212e movs r1, #46 ; 0x2e - 115ec: 4885 ldr r0, [pc, #532] ; (11804 ) - 115ee: f01a ffab bl 2c548 - 115f2: 4883 ldr r0, [pc, #524] ; (11800 ) - 115f4: f018 fc3e bl 29e74 - 115f8: 2101 movs r1, #1 - 115fa: 4883 ldr r0, [pc, #524] ; (11808 ) - 115fc: f01a ffa4 bl 2c548 - 11600: 2118 movs r1, #24 - 11602: 4884 ldr r0, [pc, #528] ; (11814 ) - 11604: f01a ffa0 bl 2c548 - 11608: 487d ldr r0, [pc, #500] ; (11800 ) - 1160a: f018 fc33 bl 29e74 - 1160e: 2101 movs r1, #1 - 11610: 487d ldr r0, [pc, #500] ; (11808 ) - 11612: f01a ff99 bl 2c548 - 11616: 213f movs r1, #63 ; 0x3f - 11618: 487f ldr r0, [pc, #508] ; (11818 ) - 1161a: f01a ff95 bl 2c548 - 1161e: 4878 ldr r0, [pc, #480] ; (11800 ) - 11620: f018 fc28 bl 29e74 - 11624: 212e movs r1, #46 ; 0x2e - 11626: 4877 ldr r0, [pc, #476] ; (11804 ) - 11628: f01a ff8e bl 2c548 - 1162c: 4874 ldr r0, [pc, #464] ; (11800 ) - 1162e: f018 fc21 bl 29e74 - 11632: 212e movs r1, #46 ; 0x2e - 11634: 4873 ldr r0, [pc, #460] ; (11804 ) - 11636: f01a ff87 bl 2c548 - 1163a: 4871 ldr r0, [pc, #452] ; (11800 ) - 1163c: f018 fc1a bl 29e74 - 11640: 212e movs r1, #46 ; 0x2e - 11642: 4870 ldr r0, [pc, #448] ; (11804 ) - 11644: f01a ff80 bl 2c548 - 11648: 486d ldr r0, [pc, #436] ; (11800 ) - 1164a: f018 fc13 bl 29e74 - 1164e: 212e movs r1, #46 ; 0x2e - 11650: 486c ldr r0, [pc, #432] ; (11804 ) - 11652: f01a ff79 bl 2c548 - 11656: 486a ldr r0, [pc, #424] ; (11800 ) - 11658: f018 fc0c bl 29e74 - 1165c: 2100 movs r1, #0 - 1165e: 4867 ldr r0, [pc, #412] ; (117fc ) - 11660: f01a ff72 bl 2c548 - 11664: 4866 ldr r0, [pc, #408] ; (11800 ) - 11666: f018 fc05 bl 29e74 - 1166a: e7fe b.n 1166a - } - 1166c: bd70 pop {r4, r5, r6, pc} - 1166e: 2100 movs r1, #0 - 11670: 4862 ldr r0, [pc, #392] ; (117fc ) - 11672: f01a ff69 bl 2c548 - 11676: 4862 ldr r0, [pc, #392] ; (11800 ) - 11678: f018 fbfc bl 29e74 - 1167c: 212e movs r1, #46 ; 0x2e - 1167e: 4861 ldr r0, [pc, #388] ; (11804 ) - 11680: f01a ff62 bl 2c548 - 11684: 485e ldr r0, [pc, #376] ; (11800 ) - 11686: f018 fbf5 bl 29e74 - 1168a: 212e movs r1, #46 ; 0x2e - 1168c: 485d ldr r0, [pc, #372] ; (11804 ) - 1168e: f01a ff5b bl 2c548 - 11692: 485b ldr r0, [pc, #364] ; (11800 ) - 11694: f018 fbee bl 29e74 - 11698: 212e movs r1, #46 ; 0x2e - 1169a: 485a ldr r0, [pc, #360] ; (11804 ) - 1169c: f01a ff54 bl 2c548 - 116a0: 4857 ldr r0, [pc, #348] ; (11800 ) - 116a2: f018 fbe7 bl 29e74 - 116a6: 212e movs r1, #46 ; 0x2e - 116a8: 4856 ldr r0, [pc, #344] ; (11804 ) - 116aa: f01a ff4d bl 2c548 - 116ae: 4854 ldr r0, [pc, #336] ; (11800 ) - 116b0: f018 fbe0 bl 29e74 - 116b4: 2101 movs r1, #1 - 116b6: 4854 ldr r0, [pc, #336] ; (11808 ) - 116b8: f01a ff46 bl 2c548 - 116bc: 2104 movs r1, #4 - 116be: 4853 ldr r0, [pc, #332] ; (1180c ) - 116c0: f01a ff42 bl 2c548 - 116c4: 484e ldr r0, [pc, #312] ; (11800 ) - 116c6: f018 fbd5 bl 29e74 - 116ca: 2101 movs r1, #1 - 116cc: 484e ldr r0, [pc, #312] ; (11808 ) - 116ce: f01a ff3b bl 2c548 + 11642: 48a6 ldr r0, [pc, #664] ; (118dc ) + 11644: f018 fc8c bl 29f60 + 11648: 212e movs r1, #46 ; 0x2e + 1164a: 48a5 ldr r0, [pc, #660] ; (118e0 ) + 1164c: f01a fff0 bl 2c630 + 11650: 48a2 ldr r0, [pc, #648] ; (118dc ) + 11652: f018 fc85 bl 29f60 + 11656: 212e movs r1, #46 ; 0x2e + 11658: 48a1 ldr r0, [pc, #644] ; (118e0 ) + 1165a: f01a ffe9 bl 2c630 + 1165e: 489f ldr r0, [pc, #636] ; (118dc ) + 11660: f018 fc7e bl 29f60 + 11664: 212e movs r1, #46 ; 0x2e + 11666: 489e ldr r0, [pc, #632] ; (118e0 ) + 11668: f01a ffe2 bl 2c630 + 1166c: 489b ldr r0, [pc, #620] ; (118dc ) + 1166e: f018 fc77 bl 29f60 + 11672: 212e movs r1, #46 ; 0x2e + 11674: 489a ldr r0, [pc, #616] ; (118e0 ) + 11676: f01a ffdb bl 2c630 + 1167a: 4898 ldr r0, [pc, #608] ; (118dc ) + 1167c: f018 fc70 bl 29f60 + 11680: 2100 movs r1, #0 + 11682: 4895 ldr r0, [pc, #596] ; (118d8 ) + 11684: f01a ffd4 bl 2c630 + 11688: 4894 ldr r0, [pc, #592] ; (118dc ) + 1168a: f018 fc69 bl 29f60 + 1168e: 2100 movs r1, #0 + 11690: 4891 ldr r0, [pc, #580] ; (118d8 ) + 11692: f01a ffcd bl 2c630 + 11696: 4891 ldr r0, [pc, #580] ; (118dc ) + 11698: f018 fc62 bl 29f60 + 1169c: 212e movs r1, #46 ; 0x2e + 1169e: 4890 ldr r0, [pc, #576] ; (118e0 ) + 116a0: f01a ffc6 bl 2c630 + 116a4: 488d ldr r0, [pc, #564] ; (118dc ) + 116a6: f018 fc5b bl 29f60 + 116aa: 212e movs r1, #46 ; 0x2e + 116ac: 488c ldr r0, [pc, #560] ; (118e0 ) + 116ae: f01a ffbf bl 2c630 + 116b2: 488a ldr r0, [pc, #552] ; (118dc ) + 116b4: f018 fc54 bl 29f60 + 116b8: 212e movs r1, #46 ; 0x2e + 116ba: 4889 ldr r0, [pc, #548] ; (118e0 ) + 116bc: f01a ffb8 bl 2c630 + 116c0: 4886 ldr r0, [pc, #536] ; (118dc ) + 116c2: f018 fc4d bl 29f60 + 116c6: 212e movs r1, #46 ; 0x2e + 116c8: 4885 ldr r0, [pc, #532] ; (118e0 ) + 116ca: f01a ffb1 bl 2c630 + 116ce: 4883 ldr r0, [pc, #524] ; (118dc ) + 116d0: f018 fc46 bl 29f60 + 116d4: 2101 movs r1, #1 + 116d6: 4883 ldr r0, [pc, #524] ; (118e4 ) + 116d8: f01a ffaa bl 2c630 + 116dc: 2118 movs r1, #24 + 116de: 4884 ldr r0, [pc, #528] ; (118f0 ) + 116e0: f01a ffa6 bl 2c630 + 116e4: 487d ldr r0, [pc, #500] ; (118dc ) + 116e6: f018 fc3b bl 29f60 + 116ea: 2101 movs r1, #1 + 116ec: 487d ldr r0, [pc, #500] ; (118e4 ) + 116ee: f01a ff9f bl 2c630 + 116f2: 213f movs r1, #63 ; 0x3f + 116f4: 487f ldr r0, [pc, #508] ; (118f4 ) + 116f6: f01a ff9b bl 2c630 + 116fa: 4878 ldr r0, [pc, #480] ; (118dc ) + 116fc: f018 fc30 bl 29f60 + 11700: 212e movs r1, #46 ; 0x2e + 11702: 4877 ldr r0, [pc, #476] ; (118e0 ) + 11704: f01a ff94 bl 2c630 + 11708: 4874 ldr r0, [pc, #464] ; (118dc ) + 1170a: f018 fc29 bl 29f60 + 1170e: 212e movs r1, #46 ; 0x2e + 11710: 4873 ldr r0, [pc, #460] ; (118e0 ) + 11712: f01a ff8d bl 2c630 + 11716: 4871 ldr r0, [pc, #452] ; (118dc ) + 11718: f018 fc22 bl 29f60 + 1171c: 212e movs r1, #46 ; 0x2e + 1171e: 4870 ldr r0, [pc, #448] ; (118e0 ) + 11720: f01a ff86 bl 2c630 + 11724: 486d ldr r0, [pc, #436] ; (118dc ) + 11726: f018 fc1b bl 29f60 + 1172a: 212e movs r1, #46 ; 0x2e + 1172c: 486c ldr r0, [pc, #432] ; (118e0 ) + 1172e: f01a ff7f bl 2c630 + 11732: 486a ldr r0, [pc, #424] ; (118dc ) + 11734: f018 fc14 bl 29f60 + 11738: 2100 movs r1, #0 + 1173a: 4867 ldr r0, [pc, #412] ; (118d8 ) + 1173c: f01a ff78 bl 2c630 + 11740: 4866 ldr r0, [pc, #408] ; (118dc ) + 11742: f018 fc0d bl 29f60 + 11746: e7fe b.n 11746 + } + 11748: bd70 pop {r4, r5, r6, pc} + 1174a: 2100 movs r1, #0 + 1174c: 4862 ldr r0, [pc, #392] ; (118d8 ) + 1174e: f01a ff6f bl 2c630 + 11752: 4862 ldr r0, [pc, #392] ; (118dc ) + 11754: f018 fc04 bl 29f60 + 11758: 212e movs r1, #46 ; 0x2e + 1175a: 4861 ldr r0, [pc, #388] ; (118e0 ) + 1175c: f01a ff68 bl 2c630 + 11760: 485e ldr r0, [pc, #376] ; (118dc ) + 11762: f018 fbfd bl 29f60 + 11766: 212e movs r1, #46 ; 0x2e + 11768: 485d ldr r0, [pc, #372] ; (118e0 ) + 1176a: f01a ff61 bl 2c630 + 1176e: 485b ldr r0, [pc, #364] ; (118dc ) + 11770: f018 fbf6 bl 29f60 + 11774: 212e movs r1, #46 ; 0x2e + 11776: 485a ldr r0, [pc, #360] ; (118e0 ) + 11778: f01a ff5a bl 2c630 + 1177c: 4857 ldr r0, [pc, #348] ; (118dc ) + 1177e: f018 fbef bl 29f60 + 11782: 212e movs r1, #46 ; 0x2e + 11784: 4856 ldr r0, [pc, #344] ; (118e0 ) + 11786: f01a ff53 bl 2c630 + 1178a: 4854 ldr r0, [pc, #336] ; (118dc ) + 1178c: f018 fbe8 bl 29f60 + 11790: 2101 movs r1, #1 + 11792: 4854 ldr r0, [pc, #336] ; (118e4 ) + 11794: f01a ff4c bl 2c630 + 11798: 2104 movs r1, #4 + 1179a: 4853 ldr r0, [pc, #332] ; (118e8 ) + 1179c: f01a ff48 bl 2c630 + 117a0: 484e ldr r0, [pc, #312] ; (118dc ) + 117a2: f018 fbdd bl 29f60 + 117a6: 2101 movs r1, #1 + 117a8: 484e ldr r0, [pc, #312] ; (118e4 ) + 117aa: f01a ff41 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 116d2: 2300 movs r3, #0 - 116d4: 220a movs r2, #10 - 116d6: 4629 mov r1, r5 - 116d8: 4849 ldr r0, [pc, #292] ; (11800 ) - 116da: f018 fbe7 bl 29eac + 117ae: 2300 movs r3, #0 + 117b0: 220a movs r2, #10 + 117b2: 4629 mov r1, r5 + 117b4: 4849 ldr r0, [pc, #292] ; (118dc ) + 117b6: f018 fbef bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 116de: 4848 ldr r0, [pc, #288] ; (11800 ) - 116e0: f018 fbc8 bl 29e74 - 116e4: 2101 movs r1, #1 - 116e6: 4848 ldr r0, [pc, #288] ; (11808 ) - 116e8: f01a ff2e bl 2c548 - 116ec: 2147 movs r1, #71 ; 0x47 - 116ee: 484b ldr r0, [pc, #300] ; (1181c ) - 116f0: f01a ff2a bl 2c548 + 117ba: 4848 ldr r0, [pc, #288] ; (118dc ) + 117bc: f018 fbd0 bl 29f60 + 117c0: 2101 movs r1, #1 + 117c2: 4848 ldr r0, [pc, #288] ; (118e4 ) + 117c4: f01a ff34 bl 2c630 + 117c8: 2147 movs r1, #71 ; 0x47 + 117ca: 484b ldr r0, [pc, #300] ; (118f8 ) + 117cc: f01a ff30 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 116f4: 4842 ldr r0, [pc, #264] ; (11800 ) - 116f6: f018 fbbd bl 29e74 - 116fa: 212e movs r1, #46 ; 0x2e - 116fc: 4841 ldr r0, [pc, #260] ; (11804 ) - 116fe: f01a ff23 bl 2c548 - 11702: 483f ldr r0, [pc, #252] ; (11800 ) - 11704: f018 fbb6 bl 29e74 - 11708: 212e movs r1, #46 ; 0x2e - 1170a: 483e ldr r0, [pc, #248] ; (11804 ) - 1170c: f01a ff1c bl 2c548 - 11710: 483b ldr r0, [pc, #236] ; (11800 ) - 11712: f018 fbaf bl 29e74 - 11716: 212e movs r1, #46 ; 0x2e - 11718: 483a ldr r0, [pc, #232] ; (11804 ) - 1171a: f01a ff15 bl 2c548 - 1171e: 4838 ldr r0, [pc, #224] ; (11800 ) - 11720: f018 fba8 bl 29e74 - 11724: 212e movs r1, #46 ; 0x2e - 11726: 4837 ldr r0, [pc, #220] ; (11804 ) - 11728: f01a ff0e bl 2c548 - 1172c: 4834 ldr r0, [pc, #208] ; (11800 ) - 1172e: f018 fba1 bl 29e74 - 11732: 2100 movs r1, #0 - 11734: 4831 ldr r0, [pc, #196] ; (117fc ) - 11736: f01a ff07 bl 2c548 - 1173a: 4831 ldr r0, [pc, #196] ; (11800 ) - 1173c: f018 fb9a bl 29e74 - 11740: 2100 movs r1, #0 - 11742: 482e ldr r0, [pc, #184] ; (117fc ) - 11744: f01a ff00 bl 2c548 - 11748: 482d ldr r0, [pc, #180] ; (11800 ) - 1174a: f018 fb93 bl 29e74 - 1174e: 212e movs r1, #46 ; 0x2e - 11750: 482c ldr r0, [pc, #176] ; (11804 ) - 11752: f01a fef9 bl 2c548 - 11756: 482a ldr r0, [pc, #168] ; (11800 ) - 11758: f018 fb8c bl 29e74 - 1175c: 212e movs r1, #46 ; 0x2e - 1175e: 4829 ldr r0, [pc, #164] ; (11804 ) - 11760: f01a fef2 bl 2c548 - 11764: 4826 ldr r0, [pc, #152] ; (11800 ) - 11766: f018 fb85 bl 29e74 - 1176a: 212e movs r1, #46 ; 0x2e - 1176c: 4825 ldr r0, [pc, #148] ; (11804 ) - 1176e: f01a feeb bl 2c548 - 11772: 4823 ldr r0, [pc, #140] ; (11800 ) - 11774: f018 fb7e bl 29e74 - 11778: 212e movs r1, #46 ; 0x2e - 1177a: 4822 ldr r0, [pc, #136] ; (11804 ) - 1177c: f01a fee4 bl 2c548 - 11780: 481f ldr r0, [pc, #124] ; (11800 ) - 11782: f018 fb77 bl 29e74 - 11786: 2101 movs r1, #1 - 11788: 481f ldr r0, [pc, #124] ; (11808 ) - 1178a: f01a fedd bl 2c548 - 1178e: 2118 movs r1, #24 - 11790: 4820 ldr r0, [pc, #128] ; (11814 ) - 11792: f01a fed9 bl 2c548 - 11796: 481a ldr r0, [pc, #104] ; (11800 ) - 11798: f018 fb6c bl 29e74 - 1179c: 2101 movs r1, #1 - 1179e: 481a ldr r0, [pc, #104] ; (11808 ) - 117a0: f01a fed2 bl 2c548 - 117a4: 213f movs r1, #63 ; 0x3f - 117a6: 481c ldr r0, [pc, #112] ; (11818 ) - 117a8: f01a fece bl 2c548 - 117ac: 4814 ldr r0, [pc, #80] ; (11800 ) - 117ae: f018 fb61 bl 29e74 - 117b2: 212e movs r1, #46 ; 0x2e - 117b4: 4813 ldr r0, [pc, #76] ; (11804 ) - 117b6: f01a fec7 bl 2c548 - 117ba: 4811 ldr r0, [pc, #68] ; (11800 ) - 117bc: f018 fb5a bl 29e74 - 117c0: 212e movs r1, #46 ; 0x2e - 117c2: 4810 ldr r0, [pc, #64] ; (11804 ) - 117c4: f01a fec0 bl 2c548 - 117c8: 480d ldr r0, [pc, #52] ; (11800 ) - 117ca: f018 fb53 bl 29e74 - 117ce: 212e movs r1, #46 ; 0x2e - 117d0: 480c ldr r0, [pc, #48] ; (11804 ) - 117d2: f01a feb9 bl 2c548 - 117d6: 480a ldr r0, [pc, #40] ; (11800 ) - 117d8: f018 fb4c bl 29e74 - 117dc: 212e movs r1, #46 ; 0x2e - 117de: 4809 ldr r0, [pc, #36] ; (11804 ) - 117e0: f01a feb2 bl 2c548 - 117e4: 4806 ldr r0, [pc, #24] ; (11800 ) - 117e6: f018 fb45 bl 29e74 - 117ea: 2100 movs r1, #0 - 117ec: 4803 ldr r0, [pc, #12] ; (117fc ) - 117ee: f01a feab bl 2c548 - 117f2: 4803 ldr r0, [pc, #12] ; (11800 ) - 117f4: f018 fb3e bl 29e74 - 117f8: e7fe b.n 117f8 - 117fa: bf00 nop - 117fc: 20003c58 .word 0x20003c58 - 11800: 20004ba8 .word 0x20004ba8 - 11804: 20001950 .word 0x20001950 - 11808: 200023ec .word 0x200023ec - 1180c: 20001980 .word 0x20001980 - 11810: 20001a2c .word 0x20001a2c - 11814: 200019d0 .word 0x200019d0 - 11818: 200019ec .word 0x200019ec - 1181c: 20001988 .word 0x20001988 + 117d0: 4842 ldr r0, [pc, #264] ; (118dc ) + 117d2: f018 fbc5 bl 29f60 + 117d6: 212e movs r1, #46 ; 0x2e + 117d8: 4841 ldr r0, [pc, #260] ; (118e0 ) + 117da: f01a ff29 bl 2c630 + 117de: 483f ldr r0, [pc, #252] ; (118dc ) + 117e0: f018 fbbe bl 29f60 + 117e4: 212e movs r1, #46 ; 0x2e + 117e6: 483e ldr r0, [pc, #248] ; (118e0 ) + 117e8: f01a ff22 bl 2c630 + 117ec: 483b ldr r0, [pc, #236] ; (118dc ) + 117ee: f018 fbb7 bl 29f60 + 117f2: 212e movs r1, #46 ; 0x2e + 117f4: 483a ldr r0, [pc, #232] ; (118e0 ) + 117f6: f01a ff1b bl 2c630 + 117fa: 4838 ldr r0, [pc, #224] ; (118dc ) + 117fc: f018 fbb0 bl 29f60 + 11800: 212e movs r1, #46 ; 0x2e + 11802: 4837 ldr r0, [pc, #220] ; (118e0 ) + 11804: f01a ff14 bl 2c630 + 11808: 4834 ldr r0, [pc, #208] ; (118dc ) + 1180a: f018 fba9 bl 29f60 + 1180e: 2100 movs r1, #0 + 11810: 4831 ldr r0, [pc, #196] ; (118d8 ) + 11812: f01a ff0d bl 2c630 + 11816: 4831 ldr r0, [pc, #196] ; (118dc ) + 11818: f018 fba2 bl 29f60 + 1181c: 2100 movs r1, #0 + 1181e: 482e ldr r0, [pc, #184] ; (118d8 ) + 11820: f01a ff06 bl 2c630 + 11824: 482d ldr r0, [pc, #180] ; (118dc ) + 11826: f018 fb9b bl 29f60 + 1182a: 212e movs r1, #46 ; 0x2e + 1182c: 482c ldr r0, [pc, #176] ; (118e0 ) + 1182e: f01a feff bl 2c630 + 11832: 482a ldr r0, [pc, #168] ; (118dc ) + 11834: f018 fb94 bl 29f60 + 11838: 212e movs r1, #46 ; 0x2e + 1183a: 4829 ldr r0, [pc, #164] ; (118e0 ) + 1183c: f01a fef8 bl 2c630 + 11840: 4826 ldr r0, [pc, #152] ; (118dc ) + 11842: f018 fb8d bl 29f60 + 11846: 212e movs r1, #46 ; 0x2e + 11848: 4825 ldr r0, [pc, #148] ; (118e0 ) + 1184a: f01a fef1 bl 2c630 + 1184e: 4823 ldr r0, [pc, #140] ; (118dc ) + 11850: f018 fb86 bl 29f60 + 11854: 212e movs r1, #46 ; 0x2e + 11856: 4822 ldr r0, [pc, #136] ; (118e0 ) + 11858: f01a feea bl 2c630 + 1185c: 481f ldr r0, [pc, #124] ; (118dc ) + 1185e: f018 fb7f bl 29f60 + 11862: 2101 movs r1, #1 + 11864: 481f ldr r0, [pc, #124] ; (118e4 ) + 11866: f01a fee3 bl 2c630 + 1186a: 2118 movs r1, #24 + 1186c: 4820 ldr r0, [pc, #128] ; (118f0 ) + 1186e: f01a fedf bl 2c630 + 11872: 481a ldr r0, [pc, #104] ; (118dc ) + 11874: f018 fb74 bl 29f60 + 11878: 2101 movs r1, #1 + 1187a: 481a ldr r0, [pc, #104] ; (118e4 ) + 1187c: f01a fed8 bl 2c630 + 11880: 213f movs r1, #63 ; 0x3f + 11882: 481c ldr r0, [pc, #112] ; (118f4 ) + 11884: f01a fed4 bl 2c630 + 11888: 4814 ldr r0, [pc, #80] ; (118dc ) + 1188a: f018 fb69 bl 29f60 + 1188e: 212e movs r1, #46 ; 0x2e + 11890: 4813 ldr r0, [pc, #76] ; (118e0 ) + 11892: f01a fecd bl 2c630 + 11896: 4811 ldr r0, [pc, #68] ; (118dc ) + 11898: f018 fb62 bl 29f60 + 1189c: 212e movs r1, #46 ; 0x2e + 1189e: 4810 ldr r0, [pc, #64] ; (118e0 ) + 118a0: f01a fec6 bl 2c630 + 118a4: 480d ldr r0, [pc, #52] ; (118dc ) + 118a6: f018 fb5b bl 29f60 + 118aa: 212e movs r1, #46 ; 0x2e + 118ac: 480c ldr r0, [pc, #48] ; (118e0 ) + 118ae: f01a febf bl 2c630 + 118b2: 480a ldr r0, [pc, #40] ; (118dc ) + 118b4: f018 fb54 bl 29f60 + 118b8: 212e movs r1, #46 ; 0x2e + 118ba: 4809 ldr r0, [pc, #36] ; (118e0 ) + 118bc: f01a feb8 bl 2c630 + 118c0: 4806 ldr r0, [pc, #24] ; (118dc ) + 118c2: f018 fb4d bl 29f60 + 118c6: 2100 movs r1, #0 + 118c8: 4803 ldr r0, [pc, #12] ; (118d8 ) + 118ca: f01a feb1 bl 2c630 + 118ce: 4803 ldr r0, [pc, #12] ; (118dc ) + 118d0: f018 fb46 bl 29f60 + 118d4: e7fe b.n 118d4 + 118d6: bf00 nop + 118d8: 20003d18 .word 0x20003d18 + 118dc: 20004c68 .word 0x20004c68 + 118e0: 20001950 .word 0x20001950 + 118e4: 200023ec .word 0x200023ec + 118e8: 20001980 .word 0x20001980 + 118ec: 20001a2c .word 0x20001a2c + 118f0: 200019d0 .word 0x200019d0 + 118f4: 200019ec .word 0x200019ec + 118f8: 20001988 .word 0x20001988 pinMode(pin, INPUT_PULLUP); - 11820: 4628 mov r0, r5 - 11822: 2102 movs r1, #2 + 118fc: 4628 mov r0, r5 + 118fe: 2102 movs r1, #2 } - 11824: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 11900: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} pinMode(pin, INPUT_PULLUP); - 11828: f018 bf0a b.w 2a640 + 11904: f018 bf10 b.w 2a728 value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 1182c: 7926 ldrb r6, [r4, #4] - 1182e: fb06 f001 mul.w r0, r6, r1 - 11832: 3601 adds r6, #1 + 11908: 7926 ldrb r6, [r4, #4] + 1190a: fb06 f001 mul.w r0, r6, r1 + 1190e: 3601 adds r6, #1 stableSteps++; - 11834: b2f2 uxtb r2, r6 - 11836: e636 b.n 114a6 - 11838: 2140 movs r1, #64 ; 0x40 - 1183a: 460b mov r3, r1 - 1183c: e62b b.n 11496 - 1183e: bf00 nop + 11910: b2f2 uxtb r2, r6 + 11912: e636 b.n 11582 + 11914: 2140 movs r1, #64 ; 0x40 + 11916: 460b mov r3, r1 + 11918: e62b b.n 11572 + 1191a: bf00 nop -00011840 : +0001191c : } // begin, if the pin value is 255 only, and t_pin is not 255 // this method will only work the first time it's called void begin(uint8_t t_pin){ - 11840: b538 push {r3, r4, r5, lr} + 1191c: b538 push {r3, r4, r5, lr} if(pin!=255){ - 11842: 7843 ldrb r3, [r0, #1] - 11844: 2bff cmp r3, #255 ; 0xff - 11846: f040 80d6 bne.w 119f6 + 1191e: 7843 ldrb r3, [r0, #1] + 11920: 2bff cmp r3, #255 ; 0xff + 11922: f040 80d6 bne.w 11ad2 return; } if(t_pin==255){ - 1184a: 29ff cmp r1, #255 ; 0xff - 1184c: 460c mov r4, r1 - 1184e: f000 80e5 beq.w 11a1c + 11926: 29ff cmp r1, #255 ; 0xff + 11928: 460c mov r4, r1 + 1192a: f000 80e5 beq.w 11af8 switch(index){ - 11852: 2927 cmp r1, #39 ; 0x27 - 11854: 4605 mov r5, r0 + 1192e: 2927 cmp r1, #39 ; 0x27 + 11930: 4605 mov r5, r0 "PIN:", t_pin, "is invalid, make sure you check that the pin was defined in your config" ); BMC_HALT(); } pin = t_pin; - 11856: 7041 strb r1, [r0, #1] - 11858: f240 80c6 bls.w 119e8 - 1185c: 2100 movs r1, #0 - 1185e: 4866 ldr r0, [pc, #408] ; (119f8 ) - 11860: f01a fe72 bl 2c548 - 11864: 4865 ldr r0, [pc, #404] ; (119fc ) - 11866: f018 fb05 bl 29e74 - 1186a: 212e movs r1, #46 ; 0x2e - 1186c: 4864 ldr r0, [pc, #400] ; (11a00 ) - 1186e: f01a fe6b bl 2c548 - 11872: 4862 ldr r0, [pc, #392] ; (119fc ) - 11874: f018 fafe bl 29e74 - 11878: 212e movs r1, #46 ; 0x2e - 1187a: 4861 ldr r0, [pc, #388] ; (11a00 ) - 1187c: f01a fe64 bl 2c548 - 11880: 485e ldr r0, [pc, #376] ; (119fc ) - 11882: f018 faf7 bl 29e74 - 11886: 212e movs r1, #46 ; 0x2e - 11888: 485d ldr r0, [pc, #372] ; (11a00 ) - 1188a: f01a fe5d bl 2c548 - 1188e: 485b ldr r0, [pc, #364] ; (119fc ) - 11890: f018 faf0 bl 29e74 - 11894: 212e movs r1, #46 ; 0x2e - 11896: 485a ldr r0, [pc, #360] ; (11a00 ) - 11898: f01a fe56 bl 2c548 - 1189c: 4857 ldr r0, [pc, #348] ; (119fc ) - 1189e: f018 fae9 bl 29e74 - 118a2: 2101 movs r1, #1 - 118a4: 4857 ldr r0, [pc, #348] ; (11a04 ) - 118a6: f01a fe4f bl 2c548 - 118aa: 2104 movs r1, #4 - 118ac: 4856 ldr r0, [pc, #344] ; (11a08 ) - 118ae: f01a fe4b bl 2c548 - 118b2: 4852 ldr r0, [pc, #328] ; (119fc ) - 118b4: f018 fade bl 29e74 - 118b8: 2101 movs r1, #1 - 118ba: 4852 ldr r0, [pc, #328] ; (11a04 ) - 118bc: f01a fe44 bl 2c548 + 11932: 7041 strb r1, [r0, #1] + 11934: f240 80c6 bls.w 11ac4 + 11938: 2100 movs r1, #0 + 1193a: 4866 ldr r0, [pc, #408] ; (11ad4 ) + 1193c: f01a fe78 bl 2c630 + 11940: 4865 ldr r0, [pc, #404] ; (11ad8 ) + 11942: f018 fb0d bl 29f60 + 11946: 212e movs r1, #46 ; 0x2e + 11948: 4864 ldr r0, [pc, #400] ; (11adc ) + 1194a: f01a fe71 bl 2c630 + 1194e: 4862 ldr r0, [pc, #392] ; (11ad8 ) + 11950: f018 fb06 bl 29f60 + 11954: 212e movs r1, #46 ; 0x2e + 11956: 4861 ldr r0, [pc, #388] ; (11adc ) + 11958: f01a fe6a bl 2c630 + 1195c: 485e ldr r0, [pc, #376] ; (11ad8 ) + 1195e: f018 faff bl 29f60 + 11962: 212e movs r1, #46 ; 0x2e + 11964: 485d ldr r0, [pc, #372] ; (11adc ) + 11966: f01a fe63 bl 2c630 + 1196a: 485b ldr r0, [pc, #364] ; (11ad8 ) + 1196c: f018 faf8 bl 29f60 + 11970: 212e movs r1, #46 ; 0x2e + 11972: 485a ldr r0, [pc, #360] ; (11adc ) + 11974: f01a fe5c bl 2c630 + 11978: 4857 ldr r0, [pc, #348] ; (11ad8 ) + 1197a: f018 faf1 bl 29f60 + 1197e: 2101 movs r1, #1 + 11980: 4857 ldr r0, [pc, #348] ; (11ae0 ) + 11982: f01a fe55 bl 2c630 + 11986: 2104 movs r1, #4 + 11988: 4856 ldr r0, [pc, #344] ; (11ae4 ) + 1198a: f01a fe51 bl 2c630 + 1198e: 4852 ldr r0, [pc, #328] ; (11ad8 ) + 11990: f018 fae6 bl 29f60 + 11994: 2101 movs r1, #1 + 11996: 4852 ldr r0, [pc, #328] ; (11ae0 ) + 11998: f01a fe4a bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 118c0: 2300 movs r3, #0 - 118c2: 220a movs r2, #10 - 118c4: 4621 mov r1, r4 - 118c6: 484d ldr r0, [pc, #308] ; (119fc ) - 118c8: f018 faf0 bl 29eac + 1199c: 2300 movs r3, #0 + 1199e: 220a movs r2, #10 + 119a0: 4621 mov r1, r4 + 119a2: 484d ldr r0, [pc, #308] ; (11ad8 ) + 119a4: f018 faf8 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 118cc: 484b ldr r0, [pc, #300] ; (119fc ) - 118ce: f018 fad1 bl 29e74 - 118d2: 2101 movs r1, #1 - 118d4: 484b ldr r0, [pc, #300] ; (11a04 ) - 118d6: f01a fe37 bl 2c548 - 118da: 2146 movs r1, #70 ; 0x46 - 118dc: 484b ldr r0, [pc, #300] ; (11a0c ) - 118de: f01a fe33 bl 2c548 + 119a8: 484b ldr r0, [pc, #300] ; (11ad8 ) + 119aa: f018 fad9 bl 29f60 + 119ae: 2101 movs r1, #1 + 119b0: 484b ldr r0, [pc, #300] ; (11ae0 ) + 119b2: f01a fe3d bl 2c630 + 119b6: 2146 movs r1, #70 ; 0x46 + 119b8: 484b ldr r0, [pc, #300] ; (11ae8 ) + 119ba: f01a fe39 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 118e2: 4846 ldr r0, [pc, #280] ; (119fc ) - 118e4: f018 fac6 bl 29e74 - 118e8: 212e movs r1, #46 ; 0x2e - 118ea: 4845 ldr r0, [pc, #276] ; (11a00 ) - 118ec: f01a fe2c bl 2c548 - 118f0: 4842 ldr r0, [pc, #264] ; (119fc ) - 118f2: f018 fabf bl 29e74 - 118f6: 212e movs r1, #46 ; 0x2e - 118f8: 4841 ldr r0, [pc, #260] ; (11a00 ) - 118fa: f01a fe25 bl 2c548 - 118fe: 483f ldr r0, [pc, #252] ; (119fc ) - 11900: f018 fab8 bl 29e74 - 11904: 212e movs r1, #46 ; 0x2e - 11906: 483e ldr r0, [pc, #248] ; (11a00 ) - 11908: f01a fe1e bl 2c548 - 1190c: 483b ldr r0, [pc, #236] ; (119fc ) - 1190e: f018 fab1 bl 29e74 - 11912: 212e movs r1, #46 ; 0x2e - 11914: 483a ldr r0, [pc, #232] ; (11a00 ) - 11916: f01a fe17 bl 2c548 - 1191a: 4838 ldr r0, [pc, #224] ; (119fc ) - 1191c: f018 faaa bl 29e74 - 11920: 2100 movs r1, #0 - 11922: 4835 ldr r0, [pc, #212] ; (119f8 ) - 11924: f01a fe10 bl 2c548 - 11928: 4834 ldr r0, [pc, #208] ; (119fc ) - 1192a: f018 faa3 bl 29e74 - 1192e: 2100 movs r1, #0 - 11930: 4831 ldr r0, [pc, #196] ; (119f8 ) - 11932: f01a fe09 bl 2c548 - 11936: 4831 ldr r0, [pc, #196] ; (119fc ) - 11938: f018 fa9c bl 29e74 - 1193c: 212e movs r1, #46 ; 0x2e - 1193e: 4830 ldr r0, [pc, #192] ; (11a00 ) - 11940: f01a fe02 bl 2c548 - 11944: 482d ldr r0, [pc, #180] ; (119fc ) - 11946: f018 fa95 bl 29e74 - 1194a: 212e movs r1, #46 ; 0x2e - 1194c: 482c ldr r0, [pc, #176] ; (11a00 ) - 1194e: f01a fdfb bl 2c548 - 11952: 482a ldr r0, [pc, #168] ; (119fc ) - 11954: f018 fa8e bl 29e74 - 11958: 212e movs r1, #46 ; 0x2e - 1195a: 4829 ldr r0, [pc, #164] ; (11a00 ) - 1195c: f01a fdf4 bl 2c548 - 11960: 4826 ldr r0, [pc, #152] ; (119fc ) - 11962: f018 fa87 bl 29e74 - 11966: 212e movs r1, #46 ; 0x2e - 11968: 4825 ldr r0, [pc, #148] ; (11a00 ) - 1196a: f01a fded bl 2c548 - 1196e: 4823 ldr r0, [pc, #140] ; (119fc ) - 11970: f018 fa80 bl 29e74 - 11974: 2101 movs r1, #1 - 11976: 4823 ldr r0, [pc, #140] ; (11a04 ) - 11978: f01a fde6 bl 2c548 - 1197c: 2118 movs r1, #24 - 1197e: 4824 ldr r0, [pc, #144] ; (11a10 ) - 11980: f01a fde2 bl 2c548 - 11984: 481d ldr r0, [pc, #116] ; (119fc ) - 11986: f018 fa75 bl 29e74 - 1198a: 2101 movs r1, #1 - 1198c: 481d ldr r0, [pc, #116] ; (11a04 ) - 1198e: f01a fddb bl 2c548 - 11992: 213f movs r1, #63 ; 0x3f - 11994: 481f ldr r0, [pc, #124] ; (11a14 ) - 11996: f01a fdd7 bl 2c548 - 1199a: 4818 ldr r0, [pc, #96] ; (119fc ) - 1199c: f018 fa6a bl 29e74 - 119a0: 212e movs r1, #46 ; 0x2e - 119a2: 4817 ldr r0, [pc, #92] ; (11a00 ) - 119a4: f01a fdd0 bl 2c548 - 119a8: 4814 ldr r0, [pc, #80] ; (119fc ) - 119aa: f018 fa63 bl 29e74 - 119ae: 212e movs r1, #46 ; 0x2e - 119b0: 4813 ldr r0, [pc, #76] ; (11a00 ) - 119b2: f01a fdc9 bl 2c548 - 119b6: 4811 ldr r0, [pc, #68] ; (119fc ) - 119b8: f018 fa5c bl 29e74 - 119bc: 212e movs r1, #46 ; 0x2e - 119be: 4810 ldr r0, [pc, #64] ; (11a00 ) - 119c0: f01a fdc2 bl 2c548 - 119c4: 480d ldr r0, [pc, #52] ; (119fc ) - 119c6: f018 fa55 bl 29e74 - 119ca: 212e movs r1, #46 ; 0x2e - 119cc: 480c ldr r0, [pc, #48] ; (11a00 ) - 119ce: f01a fdbb bl 2c548 - 119d2: 480a ldr r0, [pc, #40] ; (119fc ) - 119d4: f018 fa4e bl 29e74 - 119d8: 2100 movs r1, #0 - 119da: 4807 ldr r0, [pc, #28] ; (119f8 ) - 119dc: f01a fdb4 bl 2c548 - 119e0: 4806 ldr r0, [pc, #24] ; (119fc ) - 119e2: f018 fa47 bl 29e74 - 119e6: e7fe b.n 119e6 + 119be: 4846 ldr r0, [pc, #280] ; (11ad8 ) + 119c0: f018 face bl 29f60 + 119c4: 212e movs r1, #46 ; 0x2e + 119c6: 4845 ldr r0, [pc, #276] ; (11adc ) + 119c8: f01a fe32 bl 2c630 + 119cc: 4842 ldr r0, [pc, #264] ; (11ad8 ) + 119ce: f018 fac7 bl 29f60 + 119d2: 212e movs r1, #46 ; 0x2e + 119d4: 4841 ldr r0, [pc, #260] ; (11adc ) + 119d6: f01a fe2b bl 2c630 + 119da: 483f ldr r0, [pc, #252] ; (11ad8 ) + 119dc: f018 fac0 bl 29f60 + 119e0: 212e movs r1, #46 ; 0x2e + 119e2: 483e ldr r0, [pc, #248] ; (11adc ) + 119e4: f01a fe24 bl 2c630 + 119e8: 483b ldr r0, [pc, #236] ; (11ad8 ) + 119ea: f018 fab9 bl 29f60 + 119ee: 212e movs r1, #46 ; 0x2e + 119f0: 483a ldr r0, [pc, #232] ; (11adc ) + 119f2: f01a fe1d bl 2c630 + 119f6: 4838 ldr r0, [pc, #224] ; (11ad8 ) + 119f8: f018 fab2 bl 29f60 + 119fc: 2100 movs r1, #0 + 119fe: 4835 ldr r0, [pc, #212] ; (11ad4 ) + 11a00: f01a fe16 bl 2c630 + 11a04: 4834 ldr r0, [pc, #208] ; (11ad8 ) + 11a06: f018 faab bl 29f60 + 11a0a: 2100 movs r1, #0 + 11a0c: 4831 ldr r0, [pc, #196] ; (11ad4 ) + 11a0e: f01a fe0f bl 2c630 + 11a12: 4831 ldr r0, [pc, #196] ; (11ad8 ) + 11a14: f018 faa4 bl 29f60 + 11a18: 212e movs r1, #46 ; 0x2e + 11a1a: 4830 ldr r0, [pc, #192] ; (11adc ) + 11a1c: f01a fe08 bl 2c630 + 11a20: 482d ldr r0, [pc, #180] ; (11ad8 ) + 11a22: f018 fa9d bl 29f60 + 11a26: 212e movs r1, #46 ; 0x2e + 11a28: 482c ldr r0, [pc, #176] ; (11adc ) + 11a2a: f01a fe01 bl 2c630 + 11a2e: 482a ldr r0, [pc, #168] ; (11ad8 ) + 11a30: f018 fa96 bl 29f60 + 11a34: 212e movs r1, #46 ; 0x2e + 11a36: 4829 ldr r0, [pc, #164] ; (11adc ) + 11a38: f01a fdfa bl 2c630 + 11a3c: 4826 ldr r0, [pc, #152] ; (11ad8 ) + 11a3e: f018 fa8f bl 29f60 + 11a42: 212e movs r1, #46 ; 0x2e + 11a44: 4825 ldr r0, [pc, #148] ; (11adc ) + 11a46: f01a fdf3 bl 2c630 + 11a4a: 4823 ldr r0, [pc, #140] ; (11ad8 ) + 11a4c: f018 fa88 bl 29f60 + 11a50: 2101 movs r1, #1 + 11a52: 4823 ldr r0, [pc, #140] ; (11ae0 ) + 11a54: f01a fdec bl 2c630 + 11a58: 2118 movs r1, #24 + 11a5a: 4824 ldr r0, [pc, #144] ; (11aec ) + 11a5c: f01a fde8 bl 2c630 + 11a60: 481d ldr r0, [pc, #116] ; (11ad8 ) + 11a62: f018 fa7d bl 29f60 + 11a66: 2101 movs r1, #1 + 11a68: 481d ldr r0, [pc, #116] ; (11ae0 ) + 11a6a: f01a fde1 bl 2c630 + 11a6e: 213f movs r1, #63 ; 0x3f + 11a70: 481f ldr r0, [pc, #124] ; (11af0 ) + 11a72: f01a fddd bl 2c630 + 11a76: 4818 ldr r0, [pc, #96] ; (11ad8 ) + 11a78: f018 fa72 bl 29f60 + 11a7c: 212e movs r1, #46 ; 0x2e + 11a7e: 4817 ldr r0, [pc, #92] ; (11adc ) + 11a80: f01a fdd6 bl 2c630 + 11a84: 4814 ldr r0, [pc, #80] ; (11ad8 ) + 11a86: f018 fa6b bl 29f60 + 11a8a: 212e movs r1, #46 ; 0x2e + 11a8c: 4813 ldr r0, [pc, #76] ; (11adc ) + 11a8e: f01a fdcf bl 2c630 + 11a92: 4811 ldr r0, [pc, #68] ; (11ad8 ) + 11a94: f018 fa64 bl 29f60 + 11a98: 212e movs r1, #46 ; 0x2e + 11a9a: 4810 ldr r0, [pc, #64] ; (11adc ) + 11a9c: f01a fdc8 bl 2c630 + 11aa0: 480d ldr r0, [pc, #52] ; (11ad8 ) + 11aa2: f018 fa5d bl 29f60 + 11aa6: 212e movs r1, #46 ; 0x2e + 11aa8: 480c ldr r0, [pc, #48] ; (11adc ) + 11aaa: f01a fdc1 bl 2c630 + 11aae: 480a ldr r0, [pc, #40] ; (11ad8 ) + 11ab0: f018 fa56 bl 29f60 + 11ab4: 2100 movs r1, #0 + 11ab6: 4807 ldr r0, [pc, #28] ; (11ad4 ) + 11ab8: f01a fdba bl 2c630 + 11abc: 4806 ldr r0, [pc, #24] ; (11ad8 ) + 11abe: f018 fa4f bl 29f60 + 11ac2: e7fe b.n 11ac2 "PIN:", t_pin, "Can NOT be used with Pots as it is NOT Digital Capable or is a MUX pin" ); BMC_HALT(); } pinMode(pin, BMC_BUTTON_PIN_MODE); - 119e8: 2102 movs r1, #2 - 119ea: 4620 mov r0, r4 - 119ec: f018 fe28 bl 2a640 - 119f0: 4b09 ldr r3, [pc, #36] ; (11a18 ) - 119f2: 681b ldr r3, [r3, #0] + 11ac4: 2102 movs r1, #2 + 11ac6: 4620 mov r0, r4 + 11ac8: f018 fe2e bl 2a728 + 11acc: 4b09 ldr r3, [pc, #36] ; (11af4 ) + 11ace: 681b ldr r3, [r3, #0] debounceTime = millis(); - 119f4: 606b str r3, [r5, #4] - } - 119f6: bd38 pop {r3, r4, r5, pc} - 119f8: 20003c58 .word 0x20003c58 - 119fc: 20004ba8 .word 0x20004ba8 - 11a00: 20001950 .word 0x20001950 - 11a04: 200023ec .word 0x200023ec - 11a08: 20001980 .word 0x20001980 - 11a0c: 20001a74 .word 0x20001a74 - 11a10: 200019d0 .word 0x200019d0 - 11a14: 200019ec .word 0x200019ec - 11a18: 2000bae8 .word 0x2000bae8 - 11a1c: 2100 movs r1, #0 - 11a1e: 4862 ldr r0, [pc, #392] ; (11ba8 ) - 11a20: f01a fd92 bl 2c548 - 11a24: 4861 ldr r0, [pc, #388] ; (11bac ) - 11a26: f018 fa25 bl 29e74 - 11a2a: 212e movs r1, #46 ; 0x2e - 11a2c: 4860 ldr r0, [pc, #384] ; (11bb0 ) - 11a2e: f01a fd8b bl 2c548 - 11a32: 485e ldr r0, [pc, #376] ; (11bac ) - 11a34: f018 fa1e bl 29e74 - 11a38: 212e movs r1, #46 ; 0x2e - 11a3a: 485d ldr r0, [pc, #372] ; (11bb0 ) - 11a3c: f01a fd84 bl 2c548 - 11a40: 485a ldr r0, [pc, #360] ; (11bac ) - 11a42: f018 fa17 bl 29e74 - 11a46: 212e movs r1, #46 ; 0x2e - 11a48: 4859 ldr r0, [pc, #356] ; (11bb0 ) - 11a4a: f01a fd7d bl 2c548 - 11a4e: 4857 ldr r0, [pc, #348] ; (11bac ) - 11a50: f018 fa10 bl 29e74 - 11a54: 212e movs r1, #46 ; 0x2e - 11a56: 4856 ldr r0, [pc, #344] ; (11bb0 ) - 11a58: f01a fd76 bl 2c548 - 11a5c: 4853 ldr r0, [pc, #332] ; (11bac ) - 11a5e: f018 fa09 bl 29e74 - 11a62: 2101 movs r1, #1 - 11a64: 4853 ldr r0, [pc, #332] ; (11bb4 ) - 11a66: f01a fd6f bl 2c548 - 11a6a: 2104 movs r1, #4 - 11a6c: 4852 ldr r0, [pc, #328] ; (11bb8 ) - 11a6e: f01a fd6b bl 2c548 - 11a72: 484e ldr r0, [pc, #312] ; (11bac ) - 11a74: f018 f9fe bl 29e74 - 11a78: 2101 movs r1, #1 - 11a7a: 484e ldr r0, [pc, #312] ; (11bb4 ) - 11a7c: f01a fd64 bl 2c548 + 11ad0: 606b str r3, [r5, #4] + } + 11ad2: bd38 pop {r3, r4, r5, pc} + 11ad4: 20003d18 .word 0x20003d18 + 11ad8: 20004c68 .word 0x20004c68 + 11adc: 20001950 .word 0x20001950 + 11ae0: 200023ec .word 0x200023ec + 11ae4: 20001980 .word 0x20001980 + 11ae8: 20001a74 .word 0x20001a74 + 11aec: 200019d0 .word 0x200019d0 + 11af0: 200019ec .word 0x200019ec + 11af4: 2000bb08 .word 0x2000bb08 + 11af8: 2100 movs r1, #0 + 11afa: 4862 ldr r0, [pc, #392] ; (11c84 ) + 11afc: f01a fd98 bl 2c630 + 11b00: 4861 ldr r0, [pc, #388] ; (11c88 ) + 11b02: f018 fa2d bl 29f60 + 11b06: 212e movs r1, #46 ; 0x2e + 11b08: 4860 ldr r0, [pc, #384] ; (11c8c ) + 11b0a: f01a fd91 bl 2c630 + 11b0e: 485e ldr r0, [pc, #376] ; (11c88 ) + 11b10: f018 fa26 bl 29f60 + 11b14: 212e movs r1, #46 ; 0x2e + 11b16: 485d ldr r0, [pc, #372] ; (11c8c ) + 11b18: f01a fd8a bl 2c630 + 11b1c: 485a ldr r0, [pc, #360] ; (11c88 ) + 11b1e: f018 fa1f bl 29f60 + 11b22: 212e movs r1, #46 ; 0x2e + 11b24: 4859 ldr r0, [pc, #356] ; (11c8c ) + 11b26: f01a fd83 bl 2c630 + 11b2a: 4857 ldr r0, [pc, #348] ; (11c88 ) + 11b2c: f018 fa18 bl 29f60 + 11b30: 212e movs r1, #46 ; 0x2e + 11b32: 4856 ldr r0, [pc, #344] ; (11c8c ) + 11b34: f01a fd7c bl 2c630 + 11b38: 4853 ldr r0, [pc, #332] ; (11c88 ) + 11b3a: f018 fa11 bl 29f60 + 11b3e: 2101 movs r1, #1 + 11b40: 4853 ldr r0, [pc, #332] ; (11c90 ) + 11b42: f01a fd75 bl 2c630 + 11b46: 2104 movs r1, #4 + 11b48: 4852 ldr r0, [pc, #328] ; (11c94 ) + 11b4a: f01a fd71 bl 2c630 + 11b4e: 484e ldr r0, [pc, #312] ; (11c88 ) + 11b50: f018 fa06 bl 29f60 + 11b54: 2101 movs r1, #1 + 11b56: 484e ldr r0, [pc, #312] ; (11c90 ) + 11b58: f01a fd6a bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 11a80: 2300 movs r3, #0 - 11a82: 220a movs r2, #10 - 11a84: 4621 mov r1, r4 - 11a86: 4849 ldr r0, [pc, #292] ; (11bac ) - 11a88: f018 fa10 bl 29eac + 11b5c: 2300 movs r3, #0 + 11b5e: 220a movs r2, #10 + 11b60: 4621 mov r1, r4 + 11b62: 4849 ldr r0, [pc, #292] ; (11c88 ) + 11b64: f018 fa18 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 11a8c: 4847 ldr r0, [pc, #284] ; (11bac ) - 11a8e: f018 f9f1 bl 29e74 - 11a92: 2101 movs r1, #1 - 11a94: 4847 ldr r0, [pc, #284] ; (11bb4 ) - 11a96: f01a fd57 bl 2c548 - 11a9a: 2147 movs r1, #71 ; 0x47 - 11a9c: 4847 ldr r0, [pc, #284] ; (11bbc ) - 11a9e: f01a fd53 bl 2c548 + 11b68: 4847 ldr r0, [pc, #284] ; (11c88 ) + 11b6a: f018 f9f9 bl 29f60 + 11b6e: 2101 movs r1, #1 + 11b70: 4847 ldr r0, [pc, #284] ; (11c90 ) + 11b72: f01a fd5d bl 2c630 + 11b76: 2147 movs r1, #71 ; 0x47 + 11b78: 4847 ldr r0, [pc, #284] ; (11c98 ) + 11b7a: f01a fd59 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 11aa2: 4842 ldr r0, [pc, #264] ; (11bac ) - 11aa4: f018 f9e6 bl 29e74 - 11aa8: 212e movs r1, #46 ; 0x2e - 11aaa: 4841 ldr r0, [pc, #260] ; (11bb0 ) - 11aac: f01a fd4c bl 2c548 - 11ab0: 483e ldr r0, [pc, #248] ; (11bac ) - 11ab2: f018 f9df bl 29e74 - 11ab6: 212e movs r1, #46 ; 0x2e - 11ab8: 483d ldr r0, [pc, #244] ; (11bb0 ) - 11aba: f01a fd45 bl 2c548 - 11abe: 483b ldr r0, [pc, #236] ; (11bac ) - 11ac0: f018 f9d8 bl 29e74 - 11ac4: 212e movs r1, #46 ; 0x2e - 11ac6: 483a ldr r0, [pc, #232] ; (11bb0 ) - 11ac8: f01a fd3e bl 2c548 - 11acc: 4837 ldr r0, [pc, #220] ; (11bac ) - 11ace: f018 f9d1 bl 29e74 - 11ad2: 212e movs r1, #46 ; 0x2e - 11ad4: 4836 ldr r0, [pc, #216] ; (11bb0 ) - 11ad6: f01a fd37 bl 2c548 - 11ada: 4834 ldr r0, [pc, #208] ; (11bac ) - 11adc: f018 f9ca bl 29e74 - 11ae0: 2100 movs r1, #0 - 11ae2: 4831 ldr r0, [pc, #196] ; (11ba8 ) - 11ae4: f01a fd30 bl 2c548 - 11ae8: 4830 ldr r0, [pc, #192] ; (11bac ) - 11aea: f018 f9c3 bl 29e74 - 11aee: 2100 movs r1, #0 - 11af0: 482d ldr r0, [pc, #180] ; (11ba8 ) - 11af2: f01a fd29 bl 2c548 - 11af6: 482d ldr r0, [pc, #180] ; (11bac ) - 11af8: f018 f9bc bl 29e74 - 11afc: 212e movs r1, #46 ; 0x2e - 11afe: 482c ldr r0, [pc, #176] ; (11bb0 ) - 11b00: f01a fd22 bl 2c548 - 11b04: 4829 ldr r0, [pc, #164] ; (11bac ) - 11b06: f018 f9b5 bl 29e74 - 11b0a: 212e movs r1, #46 ; 0x2e - 11b0c: 4828 ldr r0, [pc, #160] ; (11bb0 ) - 11b0e: f01a fd1b bl 2c548 - 11b12: 4826 ldr r0, [pc, #152] ; (11bac ) - 11b14: f018 f9ae bl 29e74 - 11b18: 212e movs r1, #46 ; 0x2e - 11b1a: 4825 ldr r0, [pc, #148] ; (11bb0 ) - 11b1c: f01a fd14 bl 2c548 - 11b20: 4822 ldr r0, [pc, #136] ; (11bac ) - 11b22: f018 f9a7 bl 29e74 - 11b26: 212e movs r1, #46 ; 0x2e - 11b28: 4821 ldr r0, [pc, #132] ; (11bb0 ) - 11b2a: f01a fd0d bl 2c548 - 11b2e: 481f ldr r0, [pc, #124] ; (11bac ) - 11b30: f018 f9a0 bl 29e74 - 11b34: 2101 movs r1, #1 - 11b36: 481f ldr r0, [pc, #124] ; (11bb4 ) - 11b38: f01a fd06 bl 2c548 - 11b3c: 2118 movs r1, #24 - 11b3e: 4820 ldr r0, [pc, #128] ; (11bc0 ) - 11b40: f01a fd02 bl 2c548 - 11b44: 4819 ldr r0, [pc, #100] ; (11bac ) - 11b46: f018 f995 bl 29e74 - 11b4a: 2101 movs r1, #1 - 11b4c: 4819 ldr r0, [pc, #100] ; (11bb4 ) - 11b4e: f01a fcfb bl 2c548 - 11b52: 213f movs r1, #63 ; 0x3f - 11b54: 481b ldr r0, [pc, #108] ; (11bc4 ) - 11b56: f01a fcf7 bl 2c548 - 11b5a: 4814 ldr r0, [pc, #80] ; (11bac ) - 11b5c: f018 f98a bl 29e74 - 11b60: 212e movs r1, #46 ; 0x2e - 11b62: 4813 ldr r0, [pc, #76] ; (11bb0 ) - 11b64: f01a fcf0 bl 2c548 - 11b68: 4810 ldr r0, [pc, #64] ; (11bac ) - 11b6a: f018 f983 bl 29e74 - 11b6e: 212e movs r1, #46 ; 0x2e - 11b70: 480f ldr r0, [pc, #60] ; (11bb0 ) - 11b72: f01a fce9 bl 2c548 - 11b76: 480d ldr r0, [pc, #52] ; (11bac ) - 11b78: f018 f97c bl 29e74 - 11b7c: 212e movs r1, #46 ; 0x2e - 11b7e: 480c ldr r0, [pc, #48] ; (11bb0 ) - 11b80: f01a fce2 bl 2c548 - 11b84: 4809 ldr r0, [pc, #36] ; (11bac ) - 11b86: f018 f975 bl 29e74 - 11b8a: 212e movs r1, #46 ; 0x2e - 11b8c: 4808 ldr r0, [pc, #32] ; (11bb0 ) - 11b8e: f01a fcdb bl 2c548 - 11b92: 4806 ldr r0, [pc, #24] ; (11bac ) - 11b94: f018 f96e bl 29e74 - 11b98: 2100 movs r1, #0 - 11b9a: 4803 ldr r0, [pc, #12] ; (11ba8 ) - 11b9c: f01a fcd4 bl 2c548 - 11ba0: 4802 ldr r0, [pc, #8] ; (11bac ) - 11ba2: f018 f967 bl 29e74 - 11ba6: e7fe b.n 11ba6 - 11ba8: 20003c58 .word 0x20003c58 - 11bac: 20004ba8 .word 0x20004ba8 - 11bb0: 20001950 .word 0x20001950 - 11bb4: 200023ec .word 0x200023ec - 11bb8: 20001980 .word 0x20001980 - 11bbc: 20001988 .word 0x20001988 - 11bc0: 200019d0 .word 0x200019d0 - 11bc4: 200019ec .word 0x200019ec - -00011bc8 : + 11b7e: 4842 ldr r0, [pc, #264] ; (11c88 ) + 11b80: f018 f9ee bl 29f60 + 11b84: 212e movs r1, #46 ; 0x2e + 11b86: 4841 ldr r0, [pc, #260] ; (11c8c ) + 11b88: f01a fd52 bl 2c630 + 11b8c: 483e ldr r0, [pc, #248] ; (11c88 ) + 11b8e: f018 f9e7 bl 29f60 + 11b92: 212e movs r1, #46 ; 0x2e + 11b94: 483d ldr r0, [pc, #244] ; (11c8c ) + 11b96: f01a fd4b bl 2c630 + 11b9a: 483b ldr r0, [pc, #236] ; (11c88 ) + 11b9c: f018 f9e0 bl 29f60 + 11ba0: 212e movs r1, #46 ; 0x2e + 11ba2: 483a ldr r0, [pc, #232] ; (11c8c ) + 11ba4: f01a fd44 bl 2c630 + 11ba8: 4837 ldr r0, [pc, #220] ; (11c88 ) + 11baa: f018 f9d9 bl 29f60 + 11bae: 212e movs r1, #46 ; 0x2e + 11bb0: 4836 ldr r0, [pc, #216] ; (11c8c ) + 11bb2: f01a fd3d bl 2c630 + 11bb6: 4834 ldr r0, [pc, #208] ; (11c88 ) + 11bb8: f018 f9d2 bl 29f60 + 11bbc: 2100 movs r1, #0 + 11bbe: 4831 ldr r0, [pc, #196] ; (11c84 ) + 11bc0: f01a fd36 bl 2c630 + 11bc4: 4830 ldr r0, [pc, #192] ; (11c88 ) + 11bc6: f018 f9cb bl 29f60 + 11bca: 2100 movs r1, #0 + 11bcc: 482d ldr r0, [pc, #180] ; (11c84 ) + 11bce: f01a fd2f bl 2c630 + 11bd2: 482d ldr r0, [pc, #180] ; (11c88 ) + 11bd4: f018 f9c4 bl 29f60 + 11bd8: 212e movs r1, #46 ; 0x2e + 11bda: 482c ldr r0, [pc, #176] ; (11c8c ) + 11bdc: f01a fd28 bl 2c630 + 11be0: 4829 ldr r0, [pc, #164] ; (11c88 ) + 11be2: f018 f9bd bl 29f60 + 11be6: 212e movs r1, #46 ; 0x2e + 11be8: 4828 ldr r0, [pc, #160] ; (11c8c ) + 11bea: f01a fd21 bl 2c630 + 11bee: 4826 ldr r0, [pc, #152] ; (11c88 ) + 11bf0: f018 f9b6 bl 29f60 + 11bf4: 212e movs r1, #46 ; 0x2e + 11bf6: 4825 ldr r0, [pc, #148] ; (11c8c ) + 11bf8: f01a fd1a bl 2c630 + 11bfc: 4822 ldr r0, [pc, #136] ; (11c88 ) + 11bfe: f018 f9af bl 29f60 + 11c02: 212e movs r1, #46 ; 0x2e + 11c04: 4821 ldr r0, [pc, #132] ; (11c8c ) + 11c06: f01a fd13 bl 2c630 + 11c0a: 481f ldr r0, [pc, #124] ; (11c88 ) + 11c0c: f018 f9a8 bl 29f60 + 11c10: 2101 movs r1, #1 + 11c12: 481f ldr r0, [pc, #124] ; (11c90 ) + 11c14: f01a fd0c bl 2c630 + 11c18: 2118 movs r1, #24 + 11c1a: 4820 ldr r0, [pc, #128] ; (11c9c ) + 11c1c: f01a fd08 bl 2c630 + 11c20: 4819 ldr r0, [pc, #100] ; (11c88 ) + 11c22: f018 f99d bl 29f60 + 11c26: 2101 movs r1, #1 + 11c28: 4819 ldr r0, [pc, #100] ; (11c90 ) + 11c2a: f01a fd01 bl 2c630 + 11c2e: 213f movs r1, #63 ; 0x3f + 11c30: 481b ldr r0, [pc, #108] ; (11ca0 ) + 11c32: f01a fcfd bl 2c630 + 11c36: 4814 ldr r0, [pc, #80] ; (11c88 ) + 11c38: f018 f992 bl 29f60 + 11c3c: 212e movs r1, #46 ; 0x2e + 11c3e: 4813 ldr r0, [pc, #76] ; (11c8c ) + 11c40: f01a fcf6 bl 2c630 + 11c44: 4810 ldr r0, [pc, #64] ; (11c88 ) + 11c46: f018 f98b bl 29f60 + 11c4a: 212e movs r1, #46 ; 0x2e + 11c4c: 480f ldr r0, [pc, #60] ; (11c8c ) + 11c4e: f01a fcef bl 2c630 + 11c52: 480d ldr r0, [pc, #52] ; (11c88 ) + 11c54: f018 f984 bl 29f60 + 11c58: 212e movs r1, #46 ; 0x2e + 11c5a: 480c ldr r0, [pc, #48] ; (11c8c ) + 11c5c: f01a fce8 bl 2c630 + 11c60: 4809 ldr r0, [pc, #36] ; (11c88 ) + 11c62: f018 f97d bl 29f60 + 11c66: 212e movs r1, #46 ; 0x2e + 11c68: 4808 ldr r0, [pc, #32] ; (11c8c ) + 11c6a: f01a fce1 bl 2c630 + 11c6e: 4806 ldr r0, [pc, #24] ; (11c88 ) + 11c70: f018 f976 bl 29f60 + 11c74: 2100 movs r1, #0 + 11c76: 4803 ldr r0, [pc, #12] ; (11c84 ) + 11c78: f01a fcda bl 2c630 + 11c7c: 4802 ldr r0, [pc, #8] ; (11c88 ) + 11c7e: f018 f96f bl 29f60 + 11c82: e7fe b.n 11c82 + 11c84: 20003d18 .word 0x20003d18 + 11c88: 20004c68 .word 0x20004c68 + 11c8c: 20001950 .word 0x20001950 + 11c90: 200023ec .word 0x200023ec + 11c94: 20001980 .word 0x20001980 + 11c98: 20001988 .word 0x20001988 + 11c9c: 200019d0 .word 0x200019d0 + 11ca0: 200019ec .word 0x200019ec + +00011ca4 : BMCUIData ui = BMCBuildData::getUIData(BMC_DEVICE_ID_AUX_JACK, i); auxJacks[i].begin(ui.pins[0], ui.pins[1], ui.pins[2]); } assignAuxJacks(); } void BMC::assignAuxJacks(){ - 11bc8: b570 push {r4, r5, r6, lr} + 11ca4: b570 push {r4, r5, r6, lr} return bitRead(flags, bit); - 11bca: f500 5440 add.w r4, r0, #12288 ; 0x3000 - 11bce: 4605 mov r5, r0 - 11bd0: f894 3ae0 ldrb.w r3, [r4, #2784] ; 0xae0 + 11ca6: f500 5440 add.w r4, r0, #12288 ; 0x3000 + 11caa: 4605 mov r5, r0 + 11cac: f894 3b00 ldrb.w r3, [r4, #2816] ; 0xb00 BMCTimer timer; BMCAuxJackPot pot; BMCAuxJackButton button[2]; void assignIO(){ if(flags.read(BMC_AUX_JACK_FLAG_POT_MODE)){ - 11bd4: 07da lsls r2, r3, #31 - 11bd6: f140 80d1 bpl.w 11d7c + 11cb0: 07da lsls r2, r3, #31 + 11cb2: f140 80d1 bpl.w 11e58 // set as pots pinMode(potPin,INPUT); - 11bda: f894 0ae1 ldrb.w r0, [r4, #2785] ; 0xae1 - 11bde: 2100 movs r1, #0 - 11be0: f018 fd2e bl 2a640 + 11cb6: f894 0b01 ldrb.w r0, [r4, #2817] ; 0xb01 + 11cba: 2100 movs r1, #0 + 11cbc: f018 fd34 bl 2a728 // set button pin as output & HIGH to pass 3v to pot pinMode(btnPin, OUTPUT); - 11be4: f894 0ae2 ldrb.w r0, [r4, #2786] ; 0xae2 - 11be8: 2101 movs r1, #1 - 11bea: f018 fd29 bl 2a640 + 11cc0: f894 0b02 ldrb.w r0, [r4, #2818] ; 0xb02 + 11cc4: 2101 movs r1, #1 + 11cc6: f018 fd2f bl 2a728 digitalWrite(btnPin, HIGH); - 11bee: f894 0ae2 ldrb.w r0, [r4, #2786] ; 0xae2 - 11bf2: 2101 movs r1, #1 - 11bf4: f018 fce8 bl 2a5c8 + 11cca: f894 0b02 ldrb.w r0, [r4, #2818] ; 0xb02 + 11cce: 2101 movs r1, #1 + 11cd0: f018 fcee bl 2a6b0 pinMode(btnEnPin,BMC_BUTTON_PIN_MODE); - 11bf8: 2102 movs r1, #2 - 11bfa: f894 0ae3 ldrb.w r0, [r4, #2787] ; 0xae3 - 11bfe: f018 fd1f bl 2a640 + 11cd4: 2102 movs r1, #2 + 11cd6: f894 0b03 ldrb.w r0, [r4, #2819] ; 0xb03 + 11cda: f018 fd25 bl 2a728 return map(analogRead(pin), calMin, calMax, 0, 128); - 11c02: f894 0aed ldrb.w r0, [r4, #2797] ; 0xaed + 11cde: f894 0b0d ldrb.w r0, [r4, #2829] ; 0xb0d uint8_t lastRawValue = rawValue; - 11c06: f894 6aef ldrb.w r6, [r4, #2799] ; 0xaef + 11ce2: f894 6b0f ldrb.w r6, [r4, #2831] ; 0xb0f return map(analogRead(pin), calMin, calMax, 0, 128); - 11c0a: f018 faa1 bl 2a150 + 11ce6: f018 faa7 bl 2a238 long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max; - 11c0e: f8b4 1af2 ldrh.w r1, [r4, #2802] ; 0xaf2 - 11c12: f8b4 2af4 ldrh.w r2, [r4, #2804] ; 0xaf4 + 11cea: f8b4 1b12 ldrh.w r1, [r4, #2834] ; 0xb12 + 11cee: f8b4 2b14 ldrh.w r2, [r4, #2836] ; 0xb14 long in_range = in_max - in_min; - 11c16: 1a52 subs r2, r2, r1 + 11cf2: 1a52 subs r2, r2, r1 if (in_range == 0) return out_min + out_range / 2; - 11c18: 2a00 cmp r2, #0 - 11c1a: f000 80bf beq.w 11d9c + 11cf4: 2a00 cmp r2, #0 + 11cf6: f000 80bf beq.w 11e78 long num = (x - in_min) * out_range; - 11c1e: eba0 0301 sub.w r3, r0, r1 + 11cfa: eba0 0301 sub.w r3, r0, r1 num += in_range / 2; - 11c22: 4611 mov r1, r2 - 11c24: bfb8 it lt - 11c26: 1c51 addlt r1, r2, #1 + 11cfe: 4611 mov r1, r2 + 11d00: bfb8 it lt + 11d02: 1c51 addlt r1, r2, #1 long num = (x - in_min) * out_range; - 11c28: 01db lsls r3, r3, #7 + 11d04: 01db lsls r3, r3, #7 num += in_range / 2; - 11c2a: eb03 0361 add.w r3, r3, r1, asr #1 + 11d06: eb03 0361 add.w r3, r3, r1, asr #1 if (in_range * num < 0) return result - 1; - 11c2e: fb03 f102 mul.w r1, r3, r2 + 11d0a: fb03 f102 mul.w r1, r3, r2 long result = num / in_range + out_min; - 11c32: fb93 f3f2 sdiv r3, r3, r2 + 11d0e: fb93 f3f2 sdiv r3, r3, r2 if (in_range * num < 0) return result - 1; - 11c36: 2900 cmp r1, #0 - 11c38: bfb8 it lt - 11c3a: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff - 11c3e: b2db uxtb r3, r3 + 11d12: 2900 cmp r1, #0 + 11d14: bfb8 it lt + 11d16: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff + 11d1a: b2db uxtb r3, r3 if(rawValue != lastRawValue){ - 11c40: 42b3 cmp r3, r6 - 11c42: 4619 mov r1, r3 + 11d1c: 42b3 cmp r3, r6 + 11d1e: 4619 mov r1, r3 rawValue = readPin(); - 11c44: f884 3aef strb.w r3, [r4, #2799] ; 0xaef + 11d20: f884 3b0f strb.w r3, [r4, #2831] ; 0xb0f if(rawValue != lastRawValue){ - 11c48: f000 80af beq.w 11daa + 11d24: f000 80af beq.w 11e86 stableSteps = 0; - 11c4c: 2201 movs r2, #1 - 11c4e: 2000 movs r0, #0 - 11c50: 4616 mov r6, r2 - 11c52: f884 0af0 strb.w r0, [r4, #2800] ; 0xaf0 + 11d28: 2201 movs r2, #1 + 11d2a: 2000 movs r0, #0 + 11d2c: 4616 mov r6, r2 + 11d2e: f884 0b10 strb.w r0, [r4, #2832] ; 0xb10 value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 11c56: f894 3aee ldrb.w r3, [r4, #2798] ; 0xaee - 11c5a: 4403 add r3, r0 - 11c5c: fbb3 f3f6 udiv r3, r3, r6 + 11d32: f894 3b0e ldrb.w r3, [r4, #2830] ; 0xb0e + 11d36: 4403 add r3, r0 + 11d38: fbb3 f3f6 udiv r3, r3, r6 if(abs(rawValue - value) > 10) { - 11c60: b2de uxtb r6, r3 - 11c62: 1b88 subs r0, r1, r6 - 11c64: 2800 cmp r0, #0 - 11c66: bfb8 it lt - 11c68: 4240 neglt r0, r0 - 11c6a: 280a cmp r0, #10 - 11c6c: f300 8081 bgt.w 11d72 + 11d3c: b2de uxtb r6, r3 + 11d3e: 1b88 subs r0, r1, r6 + 11d40: 2800 cmp r0, #0 + 11d42: bfb8 it lt + 11d44: 4240 neglt r0, r0 + 11d46: 280a cmp r0, #10 + 11d48: f300 8081 bgt.w 11e4e value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 11c70: f884 3aee strb.w r3, [r4, #2798] ; 0xaee + 11d4c: f884 3b0e strb.w r3, [r4, #2830] ; 0xb0e flags &= excluded; - 11c74: f894 3aec ldrb.w r3, [r4, #2796] ; 0xaec + 11d50: f894 3b0c ldrb.w r3, [r4, #2828] ; 0xb0c flags = 0; - 11c78: 2000 movs r0, #0 + 11d54: 2000 movs r0, #0 stableSteps = 0; - 11c7a: 2aff cmp r2, #255 ; 0xff - 11c7c: 494e ldr r1, [pc, #312] ; (11db8 ) + 11d56: 2aff cmp r2, #255 ; 0xff + 11d58: 494e ldr r1, [pc, #312] ; (11e94 ) flags &= excluded; - 11c7e: f003 0312 and.w r3, r3, #18 + 11d5a: f003 0312 and.w r3, r3, #18 for(uint8_t i = 0; i < BMC_MAX_AUX_JACKS; i++){ bmcStoreDevice <2, 3>& device = store.global.auxJacks[i]; //bmcStoreEvent data = globals.getDeviceEventType(device.events[0]); auxJacks[i].reassign(); auxJacks[i].setMode(device.settings[0]); - 11c82: f505 5580 add.w r5, r5, #4096 ; 0x1000 - 11c86: bf08 it eq - 11c88: 4602 moveq r2, r0 + 11d5e: f505 5580 add.w r5, r5, #4096 ; 0x1000 + 11d62: bf08 it eq + 11d64: 4602 moveq r2, r0 flags = 0; - 11c8a: f884 0b04 strb.w r0, [r4, #2820] ; 0xb04 + 11d66: f884 0b24 strb.w r0, [r4, #2852] ; 0xb24 bitSet(flags, bit); - 11c8e: f043 0301 orr.w r3, r3, #1 + 11d6a: f043 0301 orr.w r3, r3, #1 flags = 0; - 11c92: f884 0b0c strb.w r0, [r4, #2828] ; 0xb0c - 11c96: f884 2af0 strb.w r2, [r4, #2800] ; 0xaf0 + 11d6e: f884 0b2c strb.w r0, [r4, #2860] ; 0xb2c + 11d72: f884 2b10 strb.w r2, [r4, #2832] ; 0xb10 bitSet(flags, bit); - 11c9a: f884 3aec strb.w r3, [r4, #2796] ; 0xaec - 11c9e: 680a ldr r2, [r1, #0] - 11ca0: 680b ldr r3, [r1, #0] + 11d76: f884 3b0c strb.w r3, [r4, #2828] ; 0xb0c + 11d7a: 680a ldr r2, [r1, #0] + 11d7c: 680b ldr r3, [r1, #0] // reassign the POT behaviour, used when switching layers or the editor // has updated EEPROM void reassign(){ flags.reset(); debounceTime = millis(); - 11ca2: f8c4 2b08 str.w r2, [r4, #2824] ; 0xb08 - 11ca6: f8c4 3b10 str.w r3, [r4, #2832] ; 0xb10 + 11d7e: f8c4 2b28 str.w r2, [r4, #2856] ; 0xb28 + 11d82: f8c4 3b30 str.w r3, [r4, #2864] ; 0xb30 bitWrite(flags, bit, value); - 11caa: f895 34ed ldrb.w r3, [r5, #1261] ; 0x4ed - 11cae: 2b00 cmp r3, #0 - 11cb0: d05a beq.n 11d68 - 11cb2: f894 3ae0 ldrb.w r3, [r4, #2784] ; 0xae0 - 11cb6: f043 0301 orr.w r3, r3, #1 - 11cba: f884 3ae0 strb.w r3, [r4, #2784] ; 0xae0 + 11d86: f895 34ed ldrb.w r3, [r5, #1261] ; 0x4ed + 11d8a: 2b00 cmp r3, #0 + 11d8c: d05a beq.n 11e44 + 11d8e: f894 3b00 ldrb.w r3, [r4, #2816] ; 0xb00 + 11d92: f043 0301 orr.w r3, r3, #1 + 11d96: f884 3b00 strb.w r3, [r4, #2816] ; 0xb00 if(flags.read(BMC_AUX_JACK_FLAG_POT_MODE)){ - 11cbe: 07db lsls r3, r3, #31 - 11cc0: d542 bpl.n 11d48 + 11d9a: 07db lsls r3, r3, #31 + 11d9c: d542 bpl.n 11e24 pinMode(potPin,INPUT); - 11cc2: f894 0ae1 ldrb.w r0, [r4, #2785] ; 0xae1 - 11cc6: 2100 movs r1, #0 - 11cc8: f018 fcba bl 2a640 + 11d9e: f894 0b01 ldrb.w r0, [r4, #2817] ; 0xb01 + 11da2: 2100 movs r1, #0 + 11da4: f018 fcc0 bl 2a728 pinMode(btnPin, OUTPUT); - 11ccc: f894 0ae2 ldrb.w r0, [r4, #2786] ; 0xae2 - 11cd0: 2101 movs r1, #1 - 11cd2: f018 fcb5 bl 2a640 + 11da8: f894 0b02 ldrb.w r0, [r4, #2818] ; 0xb02 + 11dac: 2101 movs r1, #1 + 11dae: f018 fcbb bl 2a728 digitalWrite(btnPin, HIGH); - 11cd6: f894 0ae2 ldrb.w r0, [r4, #2786] ; 0xae2 - 11cda: 2101 movs r1, #1 - 11cdc: f018 fc74 bl 2a5c8 + 11db2: f894 0b02 ldrb.w r0, [r4, #2818] ; 0xb02 + 11db6: 2101 movs r1, #1 + 11db8: f018 fc7a bl 2a6b0 pinMode(btnEnPin,BMC_BUTTON_PIN_MODE); - 11ce0: 2102 movs r1, #2 - 11ce2: f894 0ae3 ldrb.w r0, [r4, #2787] ; 0xae3 - 11ce6: f018 fcab bl 2a640 + 11dbc: 2102 movs r1, #2 + 11dbe: f894 0b03 ldrb.w r0, [r4, #2819] ; 0xb03 + 11dc2: f018 fcb1 bl 2a728 pot.assignToeSwitch(a>0 && b>0, settings); - 11cea: f895 34f0 ldrb.w r3, [r5, #1264] ; 0x4f0 + 11dc6: f895 34f0 ldrb.w r3, [r5, #1264] ; 0x4f0 auxJacks[i].assignToeSwitch(device.events[1], device.events[2], device.settings[1]); - 11cee: f895 24ee ldrb.w r2, [r5, #1262] ; 0x4ee + 11dca: f895 24ee ldrb.w r2, [r5, #1262] ; 0x4ee if(allow){ - 11cf2: b30b cbz r3, 11d38 - 11cf4: f895 34f1 ldrb.w r3, [r5, #1265] ; 0x4f1 - 11cf8: b1f3 cbz r3, 11d38 + 11dce: b30b cbz r3, 11e14 + 11dd0: f895 34f1 ldrb.w r3, [r5, #1265] ; 0x4f1 + 11dd4: b1f3 cbz r3, 11e14 bitSet(flags, bit); - 11cfa: f894 3aec ldrb.w r3, [r4, #2796] ; 0xaec + 11dd6: f894 3b0c ldrb.w r3, [r4, #2828] ; 0xb0c toeSwitchSettings = t_settings; - 11cfe: f884 2b00 strb.w r2, [r4, #2816] ; 0xb00 - 11d02: f043 0308 orr.w r3, r3, #8 + 11dda: f884 2b20 strb.w r2, [r4, #2848] ; 0xb20 + 11dde: f043 0308 orr.w r3, r3, #8 t_min = (t_min >= limit) ? 0 : t_min; - 11d06: f240 31fe movw r1, #1022 ; 0x3fe - 11d0a: f884 3aec strb.w r3, [r4, #2796] ; 0xaec + 11de2: f240 31fe movw r1, #1022 ; 0x3fe + 11de6: f884 3b0c strb.w r3, [r4, #2828] ; 0xb0c uint16_t e = BMC_MAX_POTS+BMC_MAX_GLOBAL_POTS+i; auxJacks[i].setCalibration( - 11d0e: f8b5 34e8 ldrh.w r3, [r5, #1256] ; 0x4e8 - 11d12: f8b5 24ea ldrh.w r2, [r5, #1258] ; 0x4ea - 11d16: 428b cmp r3, r1 - 11d18: bf88 it hi - 11d1a: 2300 movhi r3, #0 + 11dea: f8b5 34e8 ldrh.w r3, [r5, #1256] ; 0x4e8 + 11dee: f8b5 24ea ldrh.w r2, [r5, #1258] ; 0x4ea + 11df2: 428b cmp r3, r1 + 11df4: bf88 it hi + 11df6: 2300 movhi r3, #0 t_max = (t_max > limit) ? 1023 : t_max; - 11d1c: f240 31ff movw r1, #1023 ; 0x3ff - 11d20: 428a cmp r2, r1 - 11d22: bf28 it cs - 11d24: 460a movcs r2, r1 + 11df8: f240 31ff movw r1, #1023 ; 0x3ff + 11dfc: 428a cmp r2, r1 + 11dfe: bf28 it cs + 11e00: 460a movcs r2, r1 if(t_min>=t_max){ - 11d26: 429a cmp r2, r3 - 11d28: d801 bhi.n 11d2e + 11e02: 429a cmp r2, r3 + 11e04: d801 bhi.n 11e0a t_max = limit; - 11d2a: 460a mov r2, r1 + 11e06: 460a mov r2, r1 t_min = 0; - 11d2c: 2300 movs r3, #0 + 11e08: 2300 movs r3, #0 calMin = t_min; - 11d2e: f8a4 3af2 strh.w r3, [r4, #2802] ; 0xaf2 + 11e0a: f8a4 3b12 strh.w r3, [r4, #2834] ; 0xb12 calMax = t_max; - 11d32: f8a4 2af4 strh.w r2, [r4, #2804] ; 0xaf4 + 11e0e: f8a4 2b14 strh.w r2, [r4, #2836] ; 0xb14 store.global.potCalibration[e].events[0], store.global.potCalibration[e].events[1] ); } } - 11d36: bd70 pop {r4, r5, r6, pc} + 11e12: bd70 pop {r4, r5, r6, pc} bitClear(flags, bit); - 11d38: f894 3aec ldrb.w r3, [r4, #2796] ; 0xaec + 11e14: f894 3b0c ldrb.w r3, [r4, #2828] ; 0xb0c toeSwitchSettings = 0; - 11d3c: 2200 movs r2, #0 - 11d3e: f003 03f7 and.w r3, r3, #247 ; 0xf7 - 11d42: f884 2b00 strb.w r2, [r4, #2816] ; 0xb00 + 11e18: 2200 movs r2, #0 + 11e1a: f003 03f7 and.w r3, r3, #247 ; 0xf7 + 11e1e: f884 2b20 strb.w r2, [r4, #2848] ; 0xb20 } - 11d46: e7de b.n 11d06 + 11e22: e7de b.n 11de2 } else { // set as buttons pinMode(potPin,BMC_BUTTON_PIN_MODE); - 11d48: f894 0ae1 ldrb.w r0, [r4, #2785] ; 0xae1 - 11d4c: 2102 movs r1, #2 - 11d4e: f018 fc77 bl 2a640 + 11e24: f894 0b01 ldrb.w r0, [r4, #2817] ; 0xb01 + 11e28: 2102 movs r1, #2 + 11e2a: f018 fc7d bl 2a728 pinMode(btnPin,BMC_BUTTON_PIN_MODE); - 11d52: f894 0ae2 ldrb.w r0, [r4, #2786] ; 0xae2 - 11d56: 2102 movs r1, #2 - 11d58: f018 fc72 bl 2a640 + 11e2e: f894 0b02 ldrb.w r0, [r4, #2818] ; 0xb02 + 11e32: 2102 movs r1, #2 + 11e34: f018 fc78 bl 2a728 pinMode(btnEnPin,BMC_BUTTON_PIN_MODE); - 11d5c: 2102 movs r1, #2 - 11d5e: f894 0ae3 ldrb.w r0, [r4, #2787] ; 0xae3 - 11d62: f018 fc6d bl 2a640 - 11d66: e7c0 b.n 11cea + 11e38: 2102 movs r1, #2 + 11e3a: f894 0b03 ldrb.w r0, [r4, #2819] ; 0xb03 + 11e3e: f018 fc73 bl 2a728 + 11e42: e7c0 b.n 11dc6 bitWrite(flags, bit, value); - 11d68: f894 3ae0 ldrb.w r3, [r4, #2784] ; 0xae0 - 11d6c: f003 03fe and.w r3, r3, #254 ; 0xfe + 11e44: f894 3b00 ldrb.w r3, [r4, #2816] ; 0xb00 + 11e48: f003 03fe and.w r3, r3, #254 ; 0xfe } - 11d70: e7a3 b.n 11cba + 11e4c: e7a3 b.n 11d96 value = (value + rawValue)/2; - 11d72: 4431 add r1, r6 - 11d74: 1049 asrs r1, r1, #1 - 11d76: f884 1aee strb.w r1, [r4, #2798] ; 0xaee - 11d7a: e77b b.n 11c74 + 11e4e: 4431 add r1, r6 + 11e50: 1049 asrs r1, r1, #1 + 11e52: f884 1b0e strb.w r1, [r4, #2830] ; 0xb0e + 11e56: e77b b.n 11d50 pinMode(potPin,BMC_BUTTON_PIN_MODE); - 11d7c: f894 0ae1 ldrb.w r0, [r4, #2785] ; 0xae1 - 11d80: 2102 movs r1, #2 - 11d82: f018 fc5d bl 2a640 + 11e58: f894 0b01 ldrb.w r0, [r4, #2817] ; 0xb01 + 11e5c: 2102 movs r1, #2 + 11e5e: f018 fc63 bl 2a728 pinMode(btnPin,BMC_BUTTON_PIN_MODE); - 11d86: f894 0ae2 ldrb.w r0, [r4, #2786] ; 0xae2 - 11d8a: 2102 movs r1, #2 - 11d8c: f018 fc58 bl 2a640 + 11e62: f894 0b02 ldrb.w r0, [r4, #2818] ; 0xb02 + 11e66: 2102 movs r1, #2 + 11e68: f018 fc5e bl 2a728 pinMode(btnEnPin,BMC_BUTTON_PIN_MODE); - 11d90: 2102 movs r1, #2 - 11d92: f894 0ae3 ldrb.w r0, [r4, #2787] ; 0xae3 - 11d96: f018 fc53 bl 2a640 - 11d9a: e732 b.n 11c02 - 11d9c: 2140 movs r1, #64 ; 0x40 - 11d9e: 460b mov r3, r1 + 11e6c: 2102 movs r1, #2 + 11e6e: f894 0b03 ldrb.w r0, [r4, #2819] ; 0xb03 + 11e72: f018 fc59 bl 2a728 + 11e76: e732 b.n 11cde + 11e78: 2140 movs r1, #64 ; 0x40 + 11e7a: 460b mov r3, r1 if(rawValue != lastRawValue){ - 11da0: 42b3 cmp r3, r6 + 11e7c: 42b3 cmp r3, r6 rawValue = readPin(); - 11da2: f884 3aef strb.w r3, [r4, #2799] ; 0xaef + 11e7e: f884 3b0f strb.w r3, [r4, #2831] ; 0xb0f if(rawValue != lastRawValue){ - 11da6: f47f af51 bne.w 11c4c + 11e82: f47f af51 bne.w 11d28 value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 11daa: f894 6af0 ldrb.w r6, [r4, #2800] ; 0xaf0 - 11dae: fb06 f001 mul.w r0, r6, r1 - 11db2: 3601 adds r6, #1 + 11e86: f894 6b10 ldrb.w r6, [r4, #2832] ; 0xb10 + 11e8a: fb06 f001 mul.w r0, r6, r1 + 11e8e: 3601 adds r6, #1 stableSteps++; - 11db4: b2f2 uxtb r2, r6 - 11db6: e74e b.n 11c56 - 11db8: 2000bae8 .word 0x2000bae8 + 11e90: b2f2 uxtb r2, r6 + 11e92: e74e b.n 11d32 + 11e94: 2000bb08 .word 0x2000bb08 -00011dbc : +00011e98 : void BMC::setupAuxJacks(){ - 11dbc: b570 push {r4, r5, r6, lr} - button[0].begin(potPin); - 11dbe: f643 25e0 movw r5, #15072 ; 0x3ae0 - potPin = t_potPin; - 11dc2: f500 5640 add.w r6, r0, #12288 ; 0x3000 + 11e98: b570 push {r4, r5, r6, lr} btnPin = t_btnPin; - 11dc6: f241 5316 movw r3, #5398 ; 0x1516 + 11e9a: f241 5316 movw r3, #5398 ; 0x1516 potPin = t_potPin; - 11dca: 2117 movs r1, #23 + 11e9e: f500 5540 add.w r5, r0, #12288 ; 0x3000 button[0].begin(potPin); - 11dcc: 4405 add r5, r0 - 11dce: 4604 mov r4, r0 + 11ea2: f500 566c add.w r6, r0, #15104 ; 0x3b00 + potPin = t_potPin; + 11ea6: 2117 movs r1, #23 btnPin = t_btnPin; - 11dd0: f8a6 3ae2 strh.w r3, [r6, #2786] ; 0xae2 - button[0].begin(potPin); - 11dd4: f105 0024 add.w r0, r5, #36 ; 0x24 + 11ea8: f8a5 3b02 strh.w r3, [r5, #2818] ; 0xb02 + 11eac: 4604 mov r4, r0 potPin = t_potPin; - 11dd8: f886 1ae1 strb.w r1, [r6, #2785] ; 0xae1 + 11eae: f885 1b01 strb.w r1, [r5, #2817] ; 0xb01 button[0].begin(potPin); - 11ddc: f7ff fd30 bl 11840 + 11eb2: f106 0024 add.w r0, r6, #36 ; 0x24 + 11eb6: f7ff fd31 bl 1191c button[1].begin(btnPin); - 11de0: f896 1ae2 ldrb.w r1, [r6, #2786] ; 0xae2 - 11de4: f105 002c add.w r0, r5, #44 ; 0x2c - 11de8: f7ff fd2a bl 11840 + 11eba: f895 1b02 ldrb.w r1, [r5, #2818] ; 0xb02 + 11ebe: f106 002c add.w r0, r6, #44 ; 0x2c + 11ec2: f7ff fd2b bl 1191c pot.begin(potPin); - 11dec: f105 000c add.w r0, r5, #12 - 11df0: f896 1ae1 ldrb.w r1, [r6, #2785] ; 0xae1 - 11df4: f7ff fb2a bl 1144c + 11ec6: f106 000c add.w r0, r6, #12 + 11eca: f895 1b01 ldrb.w r1, [r5, #2817] ; 0xb01 + 11ece: f7ff fb2b bl 11528 assignAuxJacks(); - 11df8: 4620 mov r0, r4 + 11ed2: 4620 mov r0, r4 } - 11dfa: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 11ed4: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} assignAuxJacks(); - 11dfe: f7ff bee3 b.w 11bc8 - 11e02: bf00 nop + 11ed8: f7ff bee4 b.w 11ca4 -00011e04 : +00011edc : // READ void BMC::readAuxJacks(){ - 11e04: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 11edc: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} return (potIndex!=0xFFFF); - 11e08: f500 5440 add.w r4, r0, #12288 ; 0x3000 + 11ee0: f500 5440 add.w r4, r0, #12288 ; 0x3000 if(potCalibration.active()){ - 11e0c: f64f 75ff movw r5, #65535 ; 0xffff + 11ee4: f64f 75ff movw r5, #65535 ; 0xffff void BMC::readAuxJacks(){ - 11e10: b085 sub sp, #20 - 11e12: 4606 mov r6, r0 - 11e14: f8b4 3ada ldrh.w r3, [r4, #2778] ; 0xada + 11ee8: b085 sub sp, #20 + 11eea: 4606 mov r6, r0 + 11eec: f8b4 3afa ldrh.w r3, [r4, #2810] ; 0xafa if(potCalibration.active()){ - 11e18: 42ab cmp r3, r5 - 11e1a: d004 beq.n 11e26 + 11ef0: 42ab cmp r3, r5 + 11ef2: d004 beq.n 11efe if(potCalibration.getDeviceType()==BMC_DEVICE_ID_AUX_JACK){ - 11e1c: f894 2ad8 ldrb.w r2, [r4, #2776] ; 0xad8 - 11e20: 2a1b cmp r2, #27 - 11e22: f000 81a7 beq.w 12174 + 11ef4: f894 2af8 ldrb.w r2, [r4, #2808] ; 0xaf8 + 11ef8: 2a1b cmp r2, #27 + 11efa: f000 81a7 beq.w 1224c return (prevTime>0); - 11e26: f8d4 2ae8 ldr.w r2, [r4, #2792] ; 0xae8 + 11efe: f8d4 2b08 ldr.w r2, [r4, #2824] ; 0xb08 if(timer.active()){ - 11e2a: 2a00 cmp r2, #0 - 11e2c: f000 80e8 beq.w 12000 - 11e30: f8df 833c ldr.w r8, [pc, #828] ; 12170 + 11f02: 2a00 cmp r2, #0 + 11f04: f000 80e8 beq.w 120d8 + 11f08: f8df 833c ldr.w r8, [pc, #828] ; 12248 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 11e34: f8b4 1ae4 ldrh.w r1, [r4, #2788] ; 0xae4 - 11e38: f8d8 3000 ldr.w r3, [r8] - 11e3c: 1a9b subs r3, r3, r2 - 11e3e: 428b cmp r3, r1 + 11f0c: f8b4 1b04 ldrh.w r1, [r4, #2820] ; 0xb04 + 11f10: f8d8 3000 ldr.w r3, [r8] + 11f14: 1a9b subs r3, r3, r2 + 11f16: 428b cmp r3, r1 flags ^= 1UL << bit; - 11e40: f894 3ae0 ldrb.w r3, [r4, #2784] ; 0xae0 - 11e44: d320 bcc.n 11e88 + 11f18: f894 3b00 ldrb.w r3, [r4, #2816] ; 0xb00 + 11f1c: d320 bcc.n 11f60 prevTime = 0; - 11e46: 2200 movs r2, #0 - 11e48: f083 0302 eor.w r3, r3, #2 - 11e4c: 2121 movs r1, #33 ; 0x21 - 11e4e: 48c2 ldr r0, [pc, #776] ; (12158 ) - 11e50: f8c4 2ae8 str.w r2, [r4, #2792] ; 0xae8 - 11e54: f884 3ae0 strb.w r3, [r4, #2784] ; 0xae0 - 11e58: f01a fb76 bl 2c548 - 11e5c: 2101 movs r1, #1 - 11e5e: 48bf ldr r0, [pc, #764] ; (1215c ) - 11e60: f01a fb72 bl 2c548 + 11f1e: 2200 movs r2, #0 + 11f20: f083 0302 eor.w r3, r3, #2 + 11f24: 2121 movs r1, #33 ; 0x21 + 11f26: 48c2 ldr r0, [pc, #776] ; (12230 ) + 11f28: f8c4 2b08 str.w r2, [r4, #2824] ; 0xb08 + 11f2c: f884 3b00 strb.w r3, [r4, #2816] ; 0xb00 + 11f30: f01a fb7e bl 2c630 + 11f34: 2101 movs r1, #1 + 11f36: 48bf ldr r0, [pc, #764] ; (12234 ) + 11f38: f01a fb7a bl 2c630 return bitRead(flags, bit); - 11e64: f894 3ae0 ldrb.w r3, [r4, #2784] ; 0xae0 + 11f3c: f894 3b00 ldrb.w r3, [r4, #2816] ; 0xb00 BMC_PRINTLN(">>> BMCAuxJack::update() Aux Jack",isConnected()?"Connected":"Disconnected"); - 11e68: 4abd ldr r2, [pc, #756] ; (12160 ) - 11e6a: f3c3 0340 ubfx r3, r3, #1, #1 - 11e6e: 48bd ldr r0, [pc, #756] ; (12164 ) - 11e70: 2b00 cmp r3, #0 - 11e72: bf12 itee ne - 11e74: 2109 movne r1, #9 - 11e76: 210c moveq r1, #12 - 11e78: 4610 moveq r0, r2 - 11e7a: f01a fb65 bl 2c548 - 11e7e: 48ba ldr r0, [pc, #744] ; (12168 ) - 11e80: f017 fff8 bl 29e74 - 11e84: f894 3ae0 ldrb.w r3, [r4, #2784] ; 0xae0 - 11e88: f3c3 0740 ubfx r7, r3, #1, #1 - 11e8c: 4639 mov r1, r7 + 11f40: 4abd ldr r2, [pc, #756] ; (12238 ) + 11f42: f3c3 0340 ubfx r3, r3, #1, #1 + 11f46: 48bd ldr r0, [pc, #756] ; (1223c ) + 11f48: 2b00 cmp r3, #0 + 11f4a: bf12 itee ne + 11f4c: 2109 movne r1, #9 + 11f4e: 210c moveq r1, #12 + 11f50: 4610 moveq r0, r2 + 11f52: f01a fb6d bl 2c630 + 11f56: 48ba ldr r0, [pc, #744] ; (12240 ) + 11f58: f018 f802 bl 29f60 + 11f5c: f894 3b00 ldrb.w r3, [r4, #2816] ; 0xb00 + 11f60: f3c3 0740 ubfx r7, r3, #1, #1 + 11f64: 4639 mov r1, r7 if(bitRead(value[mask], bit) != newValue){ - 11e8e: f506 5580 add.w r5, r6, #4096 ; 0x1000 - 11e92: f8b5 2856 ldrh.w r2, [r5, #2134] ; 0x856 - 11e96: f002 0001 and.w r0, r2, #1 - 11e9a: 42b8 cmp r0, r7 - 11e9c: d07a beq.n 11f94 + 11f66: f506 5580 add.w r5, r6, #4096 ; 0x1000 + 11f6a: f8b5 2856 ldrh.w r2, [r5, #2134] ; 0x856 + 11f6e: f002 0001 and.w r0, r2, #1 + 11f72: 42b8 cmp r0, r7 + 11f74: d07a beq.n 1206c bitWrite(value[mask], bit, newValue); - 11e9e: 2900 cmp r1, #0 - 11ea0: f000 80a6 beq.w 11ff0 - 11ea4: f042 0201 orr.w r2, r2, #1 + 11f76: 2900 cmp r1, #0 + 11f78: f000 80a6 beq.w 120c8 + 11f7c: f042 0201 orr.w r2, r2, #1 updated = true; - 11ea8: 2101 movs r1, #1 + 11f80: 2101 movs r1, #1 if(isPotMode()){ - 11eaa: f013 0701 ands.w r7, r3, #1 - 11eae: f8a5 2856 strh.w r2, [r5, #2134] ; 0x856 - 11eb2: f885 1858 strb.w r1, [r5, #2136] ; 0x858 - 11eb6: d072 beq.n 11f9e - 11eb8: f894 3aec ldrb.w r3, [r4, #2796] ; 0xaec + 11f82: f013 0701 ands.w r7, r3, #1 + 11f86: f8a5 2856 strh.w r2, [r5, #2134] ; 0x856 + 11f8a: f885 1858 strb.w r1, [r5, #2136] ; 0x858 + 11f8e: d072 beq.n 12076 + 11f90: f894 3b0c ldrb.w r3, [r4, #2828] ; 0xb0c if(!toeSwitchAvailable()){ - 11ebc: 071f lsls r7, r3, #28 - 11ebe: d502 bpl.n 11ec6 + 11f94: 071f lsls r7, r3, #28 + 11f96: d502 bpl.n 11f9e if(bitRead(flags, bit)){ - 11ec0: 0698 lsls r0, r3, #26 - 11ec2: f100 8131 bmi.w 12128 + 11f98: 0698 lsls r0, r3, #26 + 11f9a: f100 8131 bmi.w 12200 return map(analogRead(pin), calMin, calMax, 0, 128); - 11ec6: f894 0aed ldrb.w r0, [r4, #2797] ; 0xaed + 11f9e: f894 0b0d ldrb.w r0, [r4, #2829] ; 0xb0d uint8_t lastValue = value; - 11eca: f894 7aee ldrb.w r7, [r4, #2798] ; 0xaee + 11fa2: f894 7b0e ldrb.w r7, [r4, #2830] ; 0xb0e uint8_t lastRawValue = rawValue; - 11ece: f894 8aef ldrb.w r8, [r4, #2799] ; 0xaef + 11fa6: f894 8b0f ldrb.w r8, [r4, #2831] ; 0xb0f return map(analogRead(pin), calMin, calMax, 0, 128); - 11ed2: f018 f93d bl 2a150 + 11faa: f018 f945 bl 2a238 long x = _x, in_min = _in_min, in_max = _in_max, out_min = _out_min, out_max = _out_max; - 11ed6: f8b4 3af2 ldrh.w r3, [r4, #2802] ; 0xaf2 - 11eda: f8b4 2af4 ldrh.w r2, [r4, #2804] ; 0xaf4 + 11fae: f8b4 3b12 ldrh.w r3, [r4, #2834] ; 0xb12 + 11fb2: f8b4 2b14 ldrh.w r2, [r4, #2836] ; 0xb14 long in_range = in_max - in_min; - 11ede: 1ad2 subs r2, r2, r3 + 11fb6: 1ad2 subs r2, r2, r3 if (in_range == 0) return out_min + out_range / 2; - 11ee0: 2a00 cmp r2, #0 - 11ee2: f000 8111 beq.w 12108 + 11fb8: 2a00 cmp r2, #0 + 11fba: f000 8111 beq.w 121e0 long num = (x - in_min) * out_range; - 11ee6: eba0 0003 sub.w r0, r0, r3 + 11fbe: eba0 0003 sub.w r0, r0, r3 num += in_range / 2; - 11eea: 4611 mov r1, r2 - 11eec: bfb8 it lt - 11eee: 1c51 addlt r1, r2, #1 + 11fc2: 4611 mov r1, r2 + 11fc4: bfb8 it lt + 11fc6: 1c51 addlt r1, r2, #1 long num = (x - in_min) * out_range; - 11ef0: 01c3 lsls r3, r0, #7 + 11fc8: 01c3 lsls r3, r0, #7 num += in_range / 2; - 11ef2: eb03 0361 add.w r3, r3, r1, asr #1 + 11fca: eb03 0361 add.w r3, r3, r1, asr #1 if (in_range * num < 0) return result - 1; - 11ef6: fb03 f102 mul.w r1, r3, r2 + 11fce: fb03 f102 mul.w r1, r3, r2 long result = num / in_range + out_min; - 11efa: fb93 f3f2 sdiv r3, r3, r2 + 11fd2: fb93 f3f2 sdiv r3, r3, r2 if (in_range * num < 0) return result - 1; - 11efe: 2900 cmp r1, #0 - 11f00: bfb8 it lt - 11f02: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff - 11f06: b2db uxtb r3, r3 + 11fd6: 2900 cmp r1, #0 + 11fd8: bfb8 it lt + 11fda: f103 33ff addlt.w r3, r3, #4294967295 ; 0xffffffff + 11fde: b2db uxtb r3, r3 if(rawValue != lastRawValue){ - 11f08: 4543 cmp r3, r8 - 11f0a: 4618 mov r0, r3 + 11fe0: 4543 cmp r3, r8 + 11fe2: 4618 mov r0, r3 rawValue = readPin(); - 11f0c: f884 3aef strb.w r3, [r4, #2799] ; 0xaef + 11fe4: f884 3b0f strb.w r3, [r4, #2831] ; 0xb0f if(rawValue != lastRawValue){ - 11f10: f000 8101 beq.w 12116 + 11fe8: f000 8101 beq.w 121ee stableSteps = 0; - 11f14: 2201 movs r2, #1 - 11f16: 2100 movs r1, #0 - 11f18: 4694 mov ip, r2 - 11f1a: f884 1af0 strb.w r1, [r4, #2800] ; 0xaf0 + 11fec: 2201 movs r2, #1 + 11fee: 2100 movs r1, #0 + 11ff0: 4694 mov ip, r2 + 11ff2: f884 1b10 strb.w r1, [r4, #2832] ; 0xb10 value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 11f1e: f894 3aee ldrb.w r3, [r4, #2798] ; 0xaee - 11f22: 440b add r3, r1 - 11f24: fbb3 f3fc udiv r3, r3, ip + 11ff6: f894 3b0e ldrb.w r3, [r4, #2830] ; 0xb0e + 11ffa: 440b add r3, r1 + 11ffc: fbb3 f3fc udiv r3, r3, ip if(abs(rawValue - value) > 10) { - 11f28: b2db uxtb r3, r3 - 11f2a: 1ac1 subs r1, r0, r3 - 11f2c: 2900 cmp r1, #0 - 11f2e: bfb8 it lt - 11f30: 4249 neglt r1, r1 - 11f32: 290a cmp r1, #10 - 11f34: f300 80a4 bgt.w 12080 + 12000: b2db uxtb r3, r3 + 12002: 1ac1 subs r1, r0, r3 + 12004: 2900 cmp r1, #0 + 12006: bfb8 it lt + 12008: 4249 neglt r1, r1 + 1200a: 290a cmp r1, #10 + 1200c: f300 80a4 bgt.w 12158 value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 11f38: 469c mov ip, r3 - 11f3a: f884 3aee strb.w r3, [r4, #2798] ; 0xaee + 12010: 469c mov ip, r3 + 12012: f884 3b0e strb.w r3, [r4, #2830] ; 0xb0e stableSteps = 0; - 11f3e: 2aff cmp r2, #255 ; 0xff - 11f40: f894 3aec ldrb.w r3, [r4, #2796] ; 0xaec - 11f44: bf08 it eq - 11f46: 2200 moveq r2, #0 - 11f48: 07d9 lsls r1, r3, #31 - 11f4a: f884 2af0 strb.w r2, [r4, #2800] ; 0xaf0 - 11f4e: f100 80b6 bmi.w 120be + 12016: 2aff cmp r2, #255 ; 0xff + 12018: f894 3b0c ldrb.w r3, [r4, #2828] ; 0xb0c + 1201c: bf08 it eq + 1201e: 2200 moveq r2, #0 + 12020: 07d9 lsls r1, r3, #31 + 12022: f884 2b10 strb.w r2, [r4, #2832] ; 0xb10 + 12026: f100 80b6 bmi.w 12196 if(toeSwitchAvailable()){ - 11f52: 071a lsls r2, r3, #28 - 11f54: f140 8082 bpl.w 1205c + 1202a: 071a lsls r2, r3, #28 + 1202c: f140 8082 bpl.w 12134 return (toeSwitchSettings>>6) & 0x03; - 11f58: f894 2b00 ldrb.w r2, [r4, #2816] ; 0xb00 + 12030: f894 2b20 ldrb.w r2, [r4, #2848] ; 0xb20 switch(toeSwitchGetMode()){ - 11f5c: 0991 lsrs r1, r2, #6 - 11f5e: f000 812a beq.w 121b6 - 11f62: 2901 cmp r1, #1 - 11f64: d06c beq.n 12040 + 12034: 0991 lsrs r1, r2, #6 + 12036: f000 812a beq.w 1228e + 1203a: 2901 cmp r1, #1 + 1203c: d06c beq.n 12118 if(pot.update()){ - 11f66: 4567 cmp r7, ip - 11f68: d17a bne.n 12060 + 1203e: 4567 cmp r7, ip + 12040: d17a bne.n 12138 if(updated){ - 11f6a: f895 3858 ldrb.w r3, [r5, #2136] ; 0x858 - 11f6e: 2b00 cmp r3, #0 - 11f70: d142 bne.n 11ff8 + 12042: f895 3858 ldrb.w r3, [r5, #2136] ; 0x858 + 12046: 2b00 cmp r3, #0 + 12048: d142 bne.n 120d0 return bitRead(flags, bit); - 11f72: f506 5300 add.w r3, r6, #8192 ; 0x2000 - 11f76: f8d3 3ccc ldr.w r3, [r3, #3276] ; 0xccc + 1204a: f506 5300 add.w r3, r6, #8192 ; 0x2000 + 1204e: f8d3 3cec ldr.w r3, [r3, #3308] ; 0xcec index, device.events[cmd-1] ); } } if(globals.auxJackStates.hasChanged() || editor.isTriggerStates()){ - 11f7a: 035b lsls r3, r3, #13 - 11f7c: f140 8118 bpl.w 121b0 + 12052: 035b lsls r3, r3, #13 + 12054: f140 8118 bpl.w 12288 editor.utilitySendStateBits(BMC_DEVICE_ID_AUX_JACK); - 11f80: f642 409c movw r0, #11420 ; 0x2c9c - 11f84: 2201 movs r2, #1 - 11f86: 211b movs r1, #27 - 11f88: 4430 add r0, r6 + 12058: f642 40bc movw r0, #11452 ; 0x2cbc + 1205c: 2201 movs r2, #1 + 1205e: 211b movs r1, #27 + 12060: 4430 add r0, r6 } } - 11f8a: b005 add sp, #20 - 11f8c: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} + 12062: b005 add sp, #20 + 12064: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} editor.utilitySendStateBits(BMC_DEVICE_ID_AUX_JACK); - 11f90: f010 bbd0 b.w 22734 + 12068: f010 bbd4 b.w 22814 if(!isConnected()){ - 11f94: 2900 cmp r1, #0 - 11f96: d0e8 beq.n 11f6a + 1206c: 2900 cmp r1, #0 + 1206e: d0e8 beq.n 12042 if(isPotMode()){ - 11f98: f013 0701 ands.w r7, r3, #1 - 11f9c: d18c bne.n 11eb8 - 11f9e: f8df 81d0 ldr.w r8, [pc, #464] ; 12170 + 12070: f013 0701 ands.w r7, r3, #1 + 12074: d18c bne.n 11f90 + 12076: f8df 81d0 ldr.w r8, [pc, #464] ; 12248 } bool update(){ if((millis() - debounceTime) >= BMC_BUTTON_DEBOUNCE_TIME){ - 11fa2: f8d4 2b08 ldr.w r2, [r4, #2824] ; 0xb08 - 11fa6: f8d8 3000 ldr.w r3, [r8] - 11faa: 1a9b subs r3, r3, r2 - 11fac: 2b31 cmp r3, #49 ; 0x31 - 11fae: d86d bhi.n 1208c - 11fb0: f8d8 3000 ldr.w r3, [r8] - 11fb4: f8d4 2b10 ldr.w r2, [r4, #2832] ; 0xb10 - 11fb8: 1a9b subs r3, r3, r2 - 11fba: 2b31 cmp r3, #49 ; 0x31 - 11fbc: d9d5 bls.n 11f6a - 11fbe: f894 7b0c ldrb.w r7, [r4, #2828] ; 0xb0c - 11fc2: f8d8 3000 ldr.w r3, [r8] - 11fc6: f3c7 0740 ubfx r7, r7, #1, #1 + 1207a: f8d4 2b28 ldr.w r2, [r4, #2856] ; 0xb28 + 1207e: f8d8 3000 ldr.w r3, [r8] + 12082: 1a9b subs r3, r3, r2 + 12084: 2b31 cmp r3, #49 ; 0x31 + 12086: d86d bhi.n 12164 + 12088: f8d8 3000 ldr.w r3, [r8] + 1208c: f8d4 2b30 ldr.w r2, [r4, #2864] ; 0xb30 + 12090: 1a9b subs r3, r3, r2 + 12092: 2b31 cmp r3, #49 ; 0x31 + 12094: d9d5 bls.n 12042 + 12096: f894 7b2c ldrb.w r7, [r4, #2860] ; 0xb2c + 1209a: f8d8 3000 ldr.w r3, [r8] + 1209e: f3c7 0740 ubfx r7, r7, #1, #1 debounceTime = millis(); if(flags.read(BMC_FLAG_AUX_JACK_BUTTON_STATE) != digitalRead(pin)){ - 11fca: f894 0b0d ldrb.w r0, [r4, #2829] ; 0xb0d + 120a2: f894 0b2d ldrb.w r0, [r4, #2861] ; 0xb2d debounceTime = millis(); - 11fce: f8c4 3b10 str.w r3, [r4, #2832] ; 0xb10 + 120a6: f8c4 3b30 str.w r3, [r4, #2864] ; 0xb30 if(flags.read(BMC_FLAG_AUX_JACK_BUTTON_STATE) != digitalRead(pin)){ - 11fd2: f018 fb23 bl 2a61c - 11fd6: 4287 cmp r7, r0 - 11fd8: d0c7 beq.n 11f6a + 120aa: f018 fb2b bl 2a704 + 120ae: 4287 cmp r7, r0 + 120b0: d0c7 beq.n 12042 flags ^= 1UL << bit; - 11fda: f894 3b0c ldrb.w r3, [r4, #2828] ; 0xb0c - 11fde: f083 0302 eor.w r3, r3, #2 + 120b2: f894 3b2c ldrb.w r3, [r4, #2860] ; 0xb2c + 120b6: f083 0302 eor.w r3, r3, #2 if(button[i].update()){ - 11fe2: 0799 lsls r1, r3, #30 - 11fe4: f884 3b0c strb.w r3, [r4, #2828] ; 0xb0c - 11fe8: d5bf bpl.n 11f6a + 120ba: 0799 lsls r1, r3, #30 + 120bc: f884 3b2c strb.w r3, [r4, #2860] ; 0xb2c + 120c0: d5bf bpl.n 12042 for(uint8_t i=0;i<2;i++){ - 11fea: 2701 movs r7, #1 + 120c2: 2701 movs r7, #1 return i+2; - 11fec: 3702 adds r7, #2 - 11fee: e0a4 b.n 1213a + 120c4: 3702 adds r7, #2 + 120c6: e0a4 b.n 12212 bitWrite(value[mask], bit, newValue); - 11ff0: f022 0201 bic.w r2, r2, #1 - 11ff4: f8a5 2856 strh.w r2, [r5, #2134] ; 0x856 + 120c8: f022 0201 bic.w r2, r2, #1 + 120cc: f8a5 2856 strh.w r2, [r5, #2134] ; 0x856 updated = false; - 11ff8: 2300 movs r3, #0 - 11ffa: f885 3858 strb.w r3, [r5, #2136] ; 0x858 - 11ffe: e7bf b.n 11f80 + 120d0: 2300 movs r3, #0 + 120d2: f885 3858 strb.w r3, [r5, #2136] ; 0x858 + 120d6: e7bf b.n 12058 bool enable = digitalRead(btnEnPin)==BMC_AUX_JACK_BUTTON_OPEN; - 12000: f894 0ae3 ldrb.w r0, [r4, #2787] ; 0xae3 - 12004: f018 fb0a bl 2a61c + 120d8: f894 0b03 ldrb.w r0, [r4, #2819] ; 0xb03 + 120dc: f018 fb12 bl 2a704 if(isConnected() != enable){ - 12008: f1a0 0201 sub.w r2, r0, #1 + 120e0: f1a0 0201 sub.w r2, r0, #1 return bitRead(flags, bit); - 1200c: f894 3ae0 ldrb.w r3, [r4, #2784] ; 0xae0 - 12010: fab2 f282 clz r2, r2 - 12014: f3c3 0140 ubfx r1, r3, #1, #1 - 12018: 0952 lsrs r2, r2, #5 - 1201a: 460f mov r7, r1 - 1201c: 428a cmp r2, r1 - 1201e: f43f af36 beq.w 11e8e + 120e4: f894 3b00 ldrb.w r3, [r4, #2816] ; 0xb00 + 120e8: fab2 f282 clz r2, r2 + 120ec: f3c3 0140 ubfx r1, r3, #1, #1 + 120f0: 0952 lsrs r2, r2, #5 + 120f2: 460f mov r7, r1 + 120f4: 428a cmp r2, r1 + 120f6: f43f af36 beq.w 11f66 timer.start(enable ? 1000 : 500); - 12022: 2801 cmp r0, #1 - 12024: f8df 8148 ldr.w r8, [pc, #328] ; 12170 - 12028: bf0c ite eq - 1202a: f44f 707a moveq.w r0, #1000 ; 0x3e8 - 1202e: f44f 70fa movne.w r0, #500 ; 0x1f4 - 12032: f8d8 2000 ldr.w r2, [r8] + 120fa: 2801 cmp r0, #1 + 120fc: f8df 8148 ldr.w r8, [pc, #328] ; 12248 + 12100: bf0c ite eq + 12102: f44f 707a moveq.w r0, #1000 ; 0x3e8 + 12106: f44f 70fa movne.w r0, #500 ; 0x1f4 + 1210a: f8d8 2000 ldr.w r2, [r8] interval = value; - 12036: f8a4 0ae4 strh.w r0, [r4, #2788] ; 0xae4 + 1210e: f8a4 0b04 strh.w r0, [r4, #2820] ; 0xb04 prevTime = (unsigned long) _BMCTiming::get(); - 1203a: f8c4 2ae8 str.w r2, [r4, #2792] ; 0xae8 + 12112: f8c4 2b08 str.w r2, [r4, #2824] ; 0xb08 } - 1203e: e726 b.n 11e8e + 12116: e726 b.n 11f66 return ((toeSwitchSettings & 0x07)+1)*5; - 12040: f002 0107 and.w r1, r2, #7 - 12044: 3101 adds r1, #1 - 12046: eb01 0181 add.w r1, r1, r1, lsl #2 + 12118: f002 0107 and.w r1, r2, #7 + 1211c: 3101 adds r1, #1 + 1211e: eb01 0181 add.w r1, r1, r1, lsl #2 uint8_t trigger = (127-toeSwitchGetOffValue()); - 1204a: f1c1 017f rsb r1, r1, #127 ; 0x7f - 1204e: b2c9 uxtb r1, r1 + 12122: f1c1 017f rsb r1, r1, #127 ; 0x7f + 12126: b2c9 uxtb r1, r1 if(value >= trigger){ - 12050: 4561 cmp r1, ip - 12052: f240 80c5 bls.w 121e0 + 12128: 4561 cmp r1, ip + 1212a: f240 80c5 bls.w 122b8 prevTime = 0; - 12056: 2300 movs r3, #0 - 12058: f8c4 3afc str.w r3, [r4, #2812] ; 0xafc + 1212e: 2300 movs r3, #0 + 12130: f8c4 3b1c str.w r3, [r4, #2844] ; 0xb1c if(pot.update()){ - 1205c: 4567 cmp r7, ip - 1205e: d084 beq.n 11f6a - 12060: f8b5 3860 ldrh.w r3, [r5, #2144] ; 0x860 + 12134: 4567 cmp r7, ip + 12136: d084 beq.n 12042 + 12138: f8b5 3860 ldrh.w r3, [r5, #2144] ; 0x860 if(globals.getPotsDebug()){ - 12064: 059a lsls r2, r3, #22 - 12066: d432 bmi.n 120ce + 1213c: 059a lsls r2, r3, #22 + 1213e: d432 bmi.n 121a6 processEvent(BMC_DEVICE_GROUP_POT, - 12068: f895 44ef ldrb.w r4, [r5, #1263] ; 0x4ef - 1206c: 2300 movs r3, #0 - 1206e: 220a movs r2, #10 - 12070: 2104 movs r1, #4 - 12072: 4630 mov r0, r6 - 12074: 9400 str r4, [sp, #0] - 12076: e9cd c301 strd ip, r3, [sp, #4] - 1207a: f7f9 fbff bl b87c + 12140: f895 44ef ldrb.w r4, [r5, #1263] ; 0x4ef + 12144: 2300 movs r3, #0 + 12146: 220a movs r2, #10 + 12148: 2104 movs r1, #4 + 1214a: 4630 mov r0, r6 + 1214c: 9400 str r4, [sp, #0] + 1214e: e9cd c301 strd ip, r3, [sp, #4] + 12152: f7f9 fbf7 bl b944 for(uint8_t index = 0; index < BMC_MAX_AUX_JACKS; index++){ - 1207e: e774 b.n 11f6a + 12156: e774 b.n 12042 value = (value + rawValue)/2; - 12080: 4403 add r3, r0 - 12082: f3c3 0c47 ubfx ip, r3, #1, #8 - 12086: f884 caee strb.w ip, [r4, #2798] ; 0xaee - 1208a: e758 b.n 11f3e - 1208c: f894 9b04 ldrb.w r9, [r4, #2820] ; 0xb04 - 12090: f8d8 3000 ldr.w r3, [r8] - 12094: f3c9 0940 ubfx r9, r9, #1, #1 - 12098: f894 0b05 ldrb.w r0, [r4, #2821] ; 0xb05 + 12158: 4403 add r3, r0 + 1215a: f3c3 0c47 ubfx ip, r3, #1, #8 + 1215e: f884 cb0e strb.w ip, [r4, #2830] ; 0xb0e + 12162: e758 b.n 12016 + 12164: f894 9b24 ldrb.w r9, [r4, #2852] ; 0xb24 + 12168: f8d8 3000 ldr.w r3, [r8] + 1216c: f3c9 0940 ubfx r9, r9, #1, #1 + 12170: f894 0b25 ldrb.w r0, [r4, #2853] ; 0xb25 debounceTime = millis(); - 1209c: f8c4 3b08 str.w r3, [r4, #2824] ; 0xb08 + 12174: f8c4 3b28 str.w r3, [r4, #2856] ; 0xb28 if(flags.read(BMC_FLAG_AUX_JACK_BUTTON_STATE) != digitalRead(pin)){ - 120a0: f018 fabc bl 2a61c - 120a4: 4548 cmp r0, r9 - 120a6: d083 beq.n 11fb0 + 12178: f018 fac4 bl 2a704 + 1217c: 4548 cmp r0, r9 + 1217e: d083 beq.n 12088 flags ^= 1UL << bit; - 120a8: f894 3b04 ldrb.w r3, [r4, #2820] ; 0xb04 - 120ac: f083 0302 eor.w r3, r3, #2 + 12180: f894 3b24 ldrb.w r3, [r4, #2852] ; 0xb24 + 12184: f083 0302 eor.w r3, r3, #2 if(button[i].update()){ - 120b0: 0798 lsls r0, r3, #30 - 120b2: f884 3b04 strb.w r3, [r4, #2820] ; 0xb04 - 120b6: f57f af7b bpl.w 11fb0 + 12188: 0798 lsls r0, r3, #30 + 1218a: f884 3b24 strb.w r3, [r4, #2852] ; 0xb24 + 1218e: f57f af7b bpl.w 12088 return i+2; - 120ba: 3702 adds r7, #2 - 120bc: e03d b.n 1213a + 12192: 3702 adds r7, #2 + 12194: e03d b.n 12212 bitClear(flags, bit); - 120be: f023 0301 bic.w r3, r3, #1 - 120c2: f884 3aec strb.w r3, [r4, #2796] ; 0xaec + 12196: f023 0301 bic.w r3, r3, #1 + 1219a: f884 3b0c strb.w r3, [r4, #2828] ; 0xb0c return bitRead(flags, bit); - 120c6: f8b5 3860 ldrh.w r3, [r5, #2144] ; 0x860 + 1219e: f8b5 3860 ldrh.w r3, [r5, #2144] ; 0x860 if(globals.getPotsDebug()){ - 120ca: 059a lsls r2, r3, #22 - 120cc: d5cc bpl.n 12068 - 120ce: 210c movs r1, #12 - 120d0: 4826 ldr r0, [pc, #152] ; (1216c ) - 120d2: f01a fa39 bl 2c548 - 120d6: 2101 movs r1, #1 - 120d8: 4820 ldr r0, [pc, #128] ; (1215c ) - 120da: f01a fa35 bl 2c548 + 121a2: 059a lsls r2, r3, #22 + 121a4: d5cc bpl.n 12140 + 121a6: 210c movs r1, #12 + 121a8: 4826 ldr r0, [pc, #152] ; (12244 ) + 121aa: f01a fa41 bl 2c630 + 121ae: 2101 movs r1, #1 + 121b0: 4820 ldr r0, [pc, #128] ; (12234 ) + 121b2: f01a fa3d bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 120de: 2300 movs r3, #0 - 120e0: 220a movs r2, #10 - 120e2: 4821 ldr r0, [pc, #132] ; (12168 ) - 120e4: 4619 mov r1, r3 - 120e6: f017 fee1 bl 29eac - 120ea: 2101 movs r1, #1 - 120ec: 481b ldr r0, [pc, #108] ; (1215c ) - 120ee: f01a fa2b bl 2c548 + 121b6: 2300 movs r3, #0 + 121b8: 220a movs r2, #10 + 121ba: 4821 ldr r0, [pc, #132] ; (12240 ) + 121bc: 4619 mov r1, r3 + 121be: f017 feeb bl 29f98 + 121c2: 2101 movs r1, #1 + 121c4: 481b ldr r0, [pc, #108] ; (12234 ) + 121c6: f01a fa33 bl 2c630 size_t print(int n) { return print((long)n); } - 120f2: f894 1aee ldrb.w r1, [r4, #2798] ; 0xaee - 120f6: 481c ldr r0, [pc, #112] ; (12168 ) - 120f8: f017 feb0 bl 29e5c + 121ca: f894 1b0e ldrb.w r1, [r4, #2830] ; 0xb0e + 121ce: 481c ldr r0, [pc, #112] ; (12240 ) + 121d0: f017 feba bl 29f48 size_t println(int n) { return print(n) + println(); } - 120fc: 481a ldr r0, [pc, #104] ; (12168 ) - 120fe: f017 feb9 bl 29e74 + 121d4: 481a ldr r0, [pc, #104] ; (12240 ) + 121d6: f017 fec3 bl 29f60 return value; - 12102: f894 caee ldrb.w ip, [r4, #2798] ; 0xaee - 12106: e7af b.n 12068 - 12108: 2040 movs r0, #64 ; 0x40 - 1210a: 4603 mov r3, r0 + 121da: f894 cb0e ldrb.w ip, [r4, #2830] ; 0xb0e + 121de: e7af b.n 12140 + 121e0: 2040 movs r0, #64 ; 0x40 + 121e2: 4603 mov r3, r0 if(rawValue != lastRawValue){ - 1210c: 4543 cmp r3, r8 + 121e4: 4543 cmp r3, r8 rawValue = readPin(); - 1210e: f884 3aef strb.w r3, [r4, #2799] ; 0xaef + 121e6: f884 3b0f strb.w r3, [r4, #2831] ; 0xb0f if(rawValue != lastRawValue){ - 12112: f47f aeff bne.w 11f14 + 121ea: f47f aeff bne.w 11fec value = floor((value + (rawValue*stableSteps)) / (stableSteps+1)); - 12116: f894 1af0 ldrb.w r1, [r4, #2800] ; 0xaf0 - 1211a: f101 0c01 add.w ip, r1, #1 - 1211e: fb00 f101 mul.w r1, r0, r1 + 121ee: f894 1b10 ldrb.w r1, [r4, #2832] ; 0xb10 + 121f2: f101 0c01 add.w ip, r1, #1 + 121f6: fb00 f101 mul.w r1, r0, r1 stableSteps++; - 12122: fa5f f28c uxtb.w r2, ip - 12126: e6fa b.n 11f1e + 121fa: fa5f f28c uxtb.w r2, ip + 121fe: e6fa b.n 11ff6 bitClear(flags, bit); - 12128: f003 03df and.w r3, r3, #223 ; 0xdf + 12200: f003 03df and.w r3, r3, #223 ; 0xdf return bitRead(flags, bit); - 1212c: f3c3 1700 ubfx r7, r3, #4, #1 + 12204: f3c3 1700 ubfx r7, r3, #4, #1 bitClear(flags, bit); - 12130: f884 3aec strb.w r3, [r4, #2796] ; 0xaec + 12208: f884 3b0c strb.w r3, [r4, #2828] ; 0xb0c return pot.toeSwitchGetEvent()+1; - 12134: f1c7 0703 rsb r7, r7, #3 - 12138: b2ff uxtb r7, r7 + 1220c: f1c7 0703 rsb r7, r7, #3 + 12210: b2ff uxtb r7, r7 processEvent(BMC_DEVICE_GROUP_BUTTON, - 1213a: 2300 movs r3, #0 + 12212: 2300 movs r3, #0 device.events[cmd-1] - 1213c: 4437 add r7, r6 - 1213e: f241 41ee movw r1, #5358 ; 0x14ee + 12214: 4437 add r7, r6 + 12216: f241 41ee movw r1, #5358 ; 0x14ee processEvent(BMC_DEVICE_GROUP_BUTTON, - 12142: 2204 movs r2, #4 - 12144: 4630 mov r0, r6 - 12146: e9cd 3301 strd r3, r3, [sp, #4] - 1214a: 5c7c ldrb r4, [r7, r1] - 1214c: 2101 movs r1, #1 - 1214e: 9400 str r4, [sp, #0] - 12150: f7f9 fb94 bl b87c + 1221a: 2204 movs r2, #4 + 1221c: 4630 mov r0, r6 + 1221e: e9cd 3301 strd r3, r3, [sp, #4] + 12222: 5c7c ldrb r4, [r7, r1] + 12224: 2101 movs r1, #1 + 12226: 9400 str r4, [sp, #0] + 12228: f7f9 fb8c bl b944 for(uint8_t index = 0; index < BMC_MAX_AUX_JACKS; index++){ - 12154: e709 b.n 11f6a - 12156: bf00 nop - 12158: 20002314 .word 0x20002314 - 1215c: 200023ec .word 0x200023ec - 12160: 20002304 .word 0x20002304 - 12164: 200015bc .word 0x200015bc - 12168: 20004ba8 .word 0x20004ba8 - 1216c: 20002338 .word 0x20002338 - 12170: 2000bae8 .word 0x2000bae8 + 1222c: e709 b.n 12042 + 1222e: bf00 nop + 12230: 20002314 .word 0x20002314 + 12234: 200023ec .word 0x200023ec + 12238: 20002304 .word 0x20002304 + 1223c: 200015bc .word 0x200015bc + 12240: 20004c68 .word 0x20004c68 + 12244: 20002338 .word 0x20002338 + 12248: 2000bb08 .word 0x2000bb08 if(auxJacks[n].isPotMode()){ - 12174: f643 22e0 movw r2, #15072 ; 0x3ae0 - 12178: 2134 movs r1, #52 ; 0x34 - 1217a: fb01 2303 mla r3, r1, r3, r2 - 1217e: 18c2 adds r2, r0, r3 + 1224c: 2234 movs r2, #52 ; 0x34 + 1224e: fb02 f303 mul.w r3, r2, r3 + 12252: f503 536c add.w r3, r3, #15104 ; 0x3b00 + 12256: 18c2 adds r2, r0, r3 return bitRead(flags, bit); - 12180: 5cc3 ldrb r3, [r0, r3] - 12182: 07db lsls r3, r3, #31 - 12184: f57f ae4f bpl.w 11e26 + 12258: 5cc3 ldrb r3, [r0, r3] + 1225a: 07db lsls r3, r3, #31 + 1225c: f57f ae4f bpl.w 11efe return analogRead(potPin); - 12188: 7850 ldrb r0, [r2, #1] - 1218a: f017 ffe1 bl 2a150 + 12260: 7850 ldrb r0, [r2, #1] + 12262: f017 ffe9 bl 2a238 if(active()){ - 1218e: f8b4 3ada ldrh.w r3, [r4, #2778] ; 0xada - 12192: 42ab cmp r3, r5 - 12194: d00c beq.n 121b0 - 12196: b283 uxth r3, r0 + 12266: f8b4 3afa ldrh.w r3, [r4, #2810] ; 0xafa + 1226a: 42ab cmp r3, r5 + 1226c: d00c beq.n 12288 + 1226e: b283 uxth r3, r0 if(value < min){ - 12198: f8b4 2adc ldrh.w r2, [r4, #2780] ; 0xadc - 1219c: 429a cmp r2, r3 + 12270: f8b4 2afc ldrh.w r2, [r4, #2812] ; 0xafc + 12274: 429a cmp r2, r3 if(value > max){ - 1219e: f8b4 2ade ldrh.w r2, [r4, #2782] ; 0xade + 12276: f8b4 2afe ldrh.w r2, [r4, #2814] ; 0xafe min = value; - 121a2: bf88 it hi - 121a4: f8a4 3adc strhhi.w r3, [r4, #2780] ; 0xadc + 1227a: bf88 it hi + 1227c: f8a4 3afc strhhi.w r3, [r4, #2812] ; 0xafc if(value > max){ - 121a8: 429a cmp r2, r3 - 121aa: d201 bcs.n 121b0 + 12280: 429a cmp r2, r3 + 12282: d201 bcs.n 12288 max = value; - 121ac: f8a4 3ade strh.w r3, [r4, #2782] ; 0xade + 12284: f8a4 3afe strh.w r3, [r4, #2814] ; 0xafe } - 121b0: b005 add sp, #20 - 121b2: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 12288: b005 add sp, #20 + 1228a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return ((toeSwitchSettings & 0x07)+1)*5; - 121b6: f002 0107 and.w r1, r2, #7 + 1228e: f002 0107 and.w r1, r2, #7 if(!toeSwitchGetState()){ - 121ba: f013 0f10 tst.w r3, #16 - 121be: f3c3 1000 ubfx r0, r3, #4, #1 + 12292: f013 0f10 tst.w r3, #16 + 12296: f3c3 1000 ubfx r0, r3, #4, #1 return ((toeSwitchSettings & 0x07)+1)*5; - 121c2: f101 0101 add.w r1, r1, #1 - 121c6: eb01 0181 add.w r1, r1, r1, lsl #2 + 1229a: f101 0101 add.w r1, r1, #1 + 1229e: eb01 0181 add.w r1, r1, r1, lsl #2 if(!toeSwitchGetState()){ - 121ca: d12f bne.n 1222c + 122a2: d12f bne.n 12304 if(value >= offValue){ - 121cc: 4561 cmp r1, ip - 121ce: f63f af45 bhi.w 1205c + 122a4: 4561 cmp r1, ip + 122a6: f63f af45 bhi.w 12134 bitSet(flags, bit); - 121d2: f043 0330 orr.w r3, r3, #48 ; 0x30 - 121d6: f8c4 0afc str.w r0, [r4, #2812] ; 0xafc - 121da: f884 3aec strb.w r3, [r4, #2796] ; 0xaec + 122aa: f043 0330 orr.w r3, r3, #48 ; 0x30 + 122ae: f8c4 0b1c str.w r0, [r4, #2844] ; 0xb1c + 122b2: f884 3b0c strb.w r3, [r4, #2828] ; 0xb0c } - 121de: e73d b.n 1205c + 122b6: e73d b.n 12134 if(lastValue < trigger){ - 121e0: 428f cmp r7, r1 - 121e2: d248 bcs.n 12276 + 122b8: 428f cmp r7, r1 + 122ba: d248 bcs.n 1234e uint8_t value = ((toeSwitchSettings>>3) & 0x07); - 121e4: f3c2 02c2 ubfx r2, r2, #3, #3 + 122bc: f3c2 02c2 ubfx r2, r2, #3, #3 return ((value+1)*100)+200; - 121e8: 3201 adds r2, #1 - 121ea: eb02 0282 add.w r2, r2, r2, lsl #2 - 121ee: eb02 0282 add.w r2, r2, r2, lsl #2 - 121f2: 0092 lsls r2, r2, #2 - 121f4: 32c8 adds r2, #200 ; 0xc8 + 122c0: 3201 adds r2, #1 + 122c2: eb02 0282 add.w r2, r2, r2, lsl #2 + 122c6: eb02 0282 add.w r2, r2, r2, lsl #2 + 122ca: 0092 lsls r2, r2, #2 + 122cc: 32c8 adds r2, #200 ; 0xc8 interval = value; - 121f6: f8a4 2af8 strh.w r2, [r4, #2808] ; 0xaf8 - 121fa: 4a25 ldr r2, [pc, #148] ; (12290 ) - 121fc: 6811 ldr r1, [r2, #0] + 122ce: f8a4 2b18 strh.w r2, [r4, #2840] ; 0xb18 + 122d2: 4a25 ldr r2, [pc, #148] ; (12368 ) + 122d4: 6811 ldr r1, [r2, #0] prevTime = (unsigned long) _BMCTiming::get(); - 121fe: f8c4 1afc str.w r1, [r4, #2812] ; 0xafc + 122d6: f8c4 1b1c str.w r1, [r4, #2844] ; 0xb1c if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 12202: 2900 cmp r1, #0 - 12204: f43f af2a beq.w 1205c - 12208: 4a21 ldr r2, [pc, #132] ; (12290 ) - 1220a: 6812 ldr r2, [r2, #0] - 1220c: 1a52 subs r2, r2, r1 - 1220e: f8b4 1af8 ldrh.w r1, [r4, #2808] ; 0xaf8 - 12212: 428a cmp r2, r1 - 12214: f4ff af22 bcc.w 1205c + 122da: 2900 cmp r1, #0 + 122dc: f43f af2a beq.w 12134 + 122e0: 4a21 ldr r2, [pc, #132] ; (12368 ) + 122e2: 6812 ldr r2, [r2, #0] + 122e4: 1a52 subs r2, r2, r1 + 122e6: f8b4 1b18 ldrh.w r1, [r4, #2840] ; 0xb18 + 122ea: 428a cmp r2, r1 + 122ec: f4ff af22 bcc.w 12134 flags ^= 1UL << bit; - 12218: f083 0310 eor.w r3, r3, #16 + 122f0: f083 0310 eor.w r3, r3, #16 bitSet(flags, bit); - 1221c: f043 0320 orr.w r3, r3, #32 - 12220: f884 3aec strb.w r3, [r4, #2796] ; 0xaec + 122f4: f043 0320 orr.w r3, r3, #32 + 122f8: f884 3b0c strb.w r3, [r4, #2828] ; 0xb0c prevTime = 0; - 12224: 2300 movs r3, #0 - 12226: f8c4 3afc str.w r3, [r4, #2812] ; 0xafc + 122fc: 2300 movs r3, #0 + 122fe: f8c4 3b1c str.w r3, [r4, #2844] ; 0xb1c } - 1222a: e717 b.n 1205c + 12302: e717 b.n 12134 if(value<=offValue && value!=lastValue){ - 1222c: 4561 cmp r1, ip - 1222e: f4ff af12 bcc.w 12056 - 12232: 4567 cmp r7, ip - 12234: d022 beq.n 1227c + 12304: 4561 cmp r1, ip + 12306: f4ff af12 bcc.w 1212e + 1230a: 4567 cmp r7, ip + 1230c: d022 beq.n 12354 uint8_t value = ((toeSwitchSettings>>3) & 0x07); - 12236: 08d2 lsrs r2, r2, #3 - 12238: f8df 8054 ldr.w r8, [pc, #84] ; 12290 + 1230e: 08d2 lsrs r2, r2, #3 + 12310: f8df 8054 ldr.w r8, [pc, #84] ; 12368 return ((value+1)*100)+200; - 1223c: 3201 adds r2, #1 - 1223e: f8d8 0000 ldr.w r0, [r8] - 12242: eb02 0282 add.w r2, r2, r2, lsl #2 + 12314: 3201 adds r2, #1 + 12316: f8d8 0000 ldr.w r0, [r8] + 1231a: eb02 0282 add.w r2, r2, r2, lsl #2 prevTime = (unsigned long) _BMCTiming::get(); - 12246: f8c4 0afc str.w r0, [r4, #2812] ; 0xafc - 1224a: eb02 0282 add.w r2, r2, r2, lsl #2 - 1224e: 0092 lsls r2, r2, #2 - 12250: 32c8 adds r2, #200 ; 0xc8 + 1231e: f8c4 0b1c str.w r0, [r4, #2844] ; 0xb1c + 12322: eb02 0282 add.w r2, r2, r2, lsl #2 + 12326: 0092 lsls r2, r2, #2 + 12328: 32c8 adds r2, #200 ; 0xc8 interval = value; - 12252: f8a4 2af8 strh.w r2, [r4, #2808] ; 0xaf8 + 1232a: f8a4 2b18 strh.w r2, [r4, #2840] ; 0xb18 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 12256: 2800 cmp r0, #0 - 12258: f43f af02 beq.w 12060 - 1225c: f8d8 1000 ldr.w r1, [r8] - 12260: 1a09 subs r1, r1, r0 - 12262: 4291 cmp r1, r2 - 12264: f4ff aefa bcc.w 1205c + 1232e: 2800 cmp r0, #0 + 12330: f43f af02 beq.w 12138 + 12334: f8d8 1000 ldr.w r1, [r8] + 12338: 1a09 subs r1, r1, r0 + 1233a: 4291 cmp r1, r2 + 1233c: f4ff aefa bcc.w 12134 bitClear(flags, bit); - 12268: f023 0310 bic.w r3, r3, #16 + 12340: f023 0310 bic.w r3, r3, #16 bitSet(flags, bit); - 1226c: f043 0320 orr.w r3, r3, #32 - 12270: f884 3aec strb.w r3, [r4, #2796] ; 0xaec - 12274: e6ef b.n 12056 + 12344: f043 0320 orr.w r3, r3, #32 + 12348: f884 3b0c strb.w r3, [r4, #2828] ; 0xb0c + 1234c: e6ef b.n 1212e return (prevTime>0); - 12276: f8d4 1afc ldr.w r1, [r4, #2812] ; 0xafc - 1227a: e7c2 b.n 12202 - 1227c: f8d4 0afc ldr.w r0, [r4, #2812] ; 0xafc + 1234e: f8d4 1b1c ldr.w r1, [r4, #2844] ; 0xb1c + 12352: e7c2 b.n 122da + 12354: f8d4 0b1c ldr.w r0, [r4, #2844] ; 0xb1c if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 12280: 2800 cmp r0, #0 - 12282: f43f ae72 beq.w 11f6a - 12286: f8b4 2af8 ldrh.w r2, [r4, #2808] ; 0xaf8 - 1228a: f8df 8004 ldr.w r8, [pc, #4] ; 12290 - 1228e: e7e5 b.n 1225c - 12290: 2000bae8 .word 0x2000bae8 - -00012294 : + 12358: 2800 cmp r0, #0 + 1235a: f43f ae72 beq.w 12042 + 1235e: f8b4 2b18 ldrh.w r2, [r4, #2840] ; 0xb18 + 12362: f8df 8004 ldr.w r8, [pc, #4] ; 12368 + 12366: e7e5 b.n 12334 + 12368: 2000bb08 .word 0x2000bb08 + +0001236c : if(pin!=255){ - 12294: 7803 ldrb r3, [r0, #0] - 12296: 2bff cmp r3, #255 ; 0xff - 12298: d000 beq.n 1229c - 1229a: 4770 bx lr + 1236c: 7803 ldrb r3, [r0, #0] + 1236e: 2bff cmp r3, #255 ; 0xff + 12370: d000 beq.n 12374 + 12372: 4770 bx lr if(t_pin==255){ - 1229c: 29ff cmp r1, #255 ; 0xff + 12374: 29ff cmp r1, #255 ; 0xff void begin(uint8_t t_pin){ - 1229e: b570 push {r4, r5, r6, lr} - 122a0: 460d mov r5, r1 + 12376: b570 push {r4, r5, r6, lr} + 12378: 460d mov r5, r1 if(t_pin==255){ - 122a2: f000 80d3 beq.w 1244c + 1237a: f000 80d3 beq.w 12524 flags = 0; - 122a6: 2600 movs r6, #0 + 1237e: 2600 movs r6, #0 if(pin>=64){ - 122a8: 293f cmp r1, #63 ; 0x3f - 122aa: 4604 mov r4, r0 + 12380: 293f cmp r1, #63 ; 0x3f + 12382: 4604 mov r4, r0 pin = t_pin; - 122ac: 7001 strb r1, [r0, #0] - 122ae: 7206 strb r6, [r0, #8] - 122b0: 7246 strb r6, [r0, #9] + 12384: 7001 strb r1, [r0, #0] + 12386: 7206 strb r6, [r0, #8] + 12388: 7246 strb r6, [r0, #9] if(pin>=64){ - 122b2: f240 81b8 bls.w 12626 + 1238a: f240 81b8 bls.w 126fe #endif return false; } // MUX INPUT static bool isMuxInputPin(uint8_t n){ if(isMuxInPin(n)){return true;} - 122b6: f1a1 0540 sub.w r5, r1, #64 ; 0x40 - 122ba: 2d07 cmp r5, #7 - 122bc: f240 81a0 bls.w 12600 - 122c0: 4631 mov r1, r6 - 122c2: 48c5 ldr r0, [pc, #788] ; (125d8 ) - 122c4: f01a f940 bl 2c548 + 1238e: f1a1 0540 sub.w r5, r1, #64 ; 0x40 + 12392: 2d07 cmp r5, #7 + 12394: f240 81a0 bls.w 126d8 + 12398: 4631 mov r1, r6 + 1239a: 48c5 ldr r0, [pc, #788] ; (126b0 ) + 1239c: f01a f948 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 122c8: 48c4 ldr r0, [pc, #784] ; (125dc ) - 122ca: f017 fdd3 bl 29e74 - 122ce: 212e movs r1, #46 ; 0x2e - 122d0: 48c3 ldr r0, [pc, #780] ; (125e0 ) - 122d2: f01a f939 bl 2c548 - 122d6: 48c1 ldr r0, [pc, #772] ; (125dc ) - 122d8: f017 fdcc bl 29e74 - 122dc: 212e movs r1, #46 ; 0x2e - 122de: 48c0 ldr r0, [pc, #768] ; (125e0 ) - 122e0: f01a f932 bl 2c548 - 122e4: 48bd ldr r0, [pc, #756] ; (125dc ) - 122e6: f017 fdc5 bl 29e74 - 122ea: 212e movs r1, #46 ; 0x2e - 122ec: 48bc ldr r0, [pc, #752] ; (125e0 ) - 122ee: f01a f92b bl 2c548 - 122f2: 48ba ldr r0, [pc, #744] ; (125dc ) - 122f4: f017 fdbe bl 29e74 - 122f8: 212e movs r1, #46 ; 0x2e - 122fa: 48b9 ldr r0, [pc, #740] ; (125e0 ) - 122fc: f01a f924 bl 2c548 - 12300: 48b6 ldr r0, [pc, #728] ; (125dc ) - 12302: f017 fdb7 bl 29e74 - 12306: 2101 movs r1, #1 - 12308: 48b6 ldr r0, [pc, #728] ; (125e4 ) - 1230a: f01a f91d bl 2c548 - 1230e: 2108 movs r1, #8 - 12310: 48b5 ldr r0, [pc, #724] ; (125e8 ) - 12312: f01a f919 bl 2c548 - 12316: 48b1 ldr r0, [pc, #708] ; (125dc ) - 12318: f017 fdac bl 29e74 - 1231c: 2101 movs r1, #1 - 1231e: 48b1 ldr r0, [pc, #708] ; (125e4 ) - 12320: f01a f912 bl 2c548 + 123a0: 48c4 ldr r0, [pc, #784] ; (126b4 ) + 123a2: f017 fddd bl 29f60 + 123a6: 212e movs r1, #46 ; 0x2e + 123a8: 48c3 ldr r0, [pc, #780] ; (126b8 ) + 123aa: f01a f941 bl 2c630 + 123ae: 48c1 ldr r0, [pc, #772] ; (126b4 ) + 123b0: f017 fdd6 bl 29f60 + 123b4: 212e movs r1, #46 ; 0x2e + 123b6: 48c0 ldr r0, [pc, #768] ; (126b8 ) + 123b8: f01a f93a bl 2c630 + 123bc: 48bd ldr r0, [pc, #756] ; (126b4 ) + 123be: f017 fdcf bl 29f60 + 123c2: 212e movs r1, #46 ; 0x2e + 123c4: 48bc ldr r0, [pc, #752] ; (126b8 ) + 123c6: f01a f933 bl 2c630 + 123ca: 48ba ldr r0, [pc, #744] ; (126b4 ) + 123cc: f017 fdc8 bl 29f60 + 123d0: 212e movs r1, #46 ; 0x2e + 123d2: 48b9 ldr r0, [pc, #740] ; (126b8 ) + 123d4: f01a f92c bl 2c630 + 123d8: 48b6 ldr r0, [pc, #728] ; (126b4 ) + 123da: f017 fdc1 bl 29f60 + 123de: 2101 movs r1, #1 + 123e0: 48b6 ldr r0, [pc, #728] ; (126bc ) + 123e2: f01a f925 bl 2c630 + 123e6: 2108 movs r1, #8 + 123e8: 48b5 ldr r0, [pc, #724] ; (126c0 ) + 123ea: f01a f921 bl 2c630 + 123ee: 48b1 ldr r0, [pc, #708] ; (126b4 ) + 123f0: f017 fdb6 bl 29f60 + 123f4: 2101 movs r1, #1 + 123f6: 48b1 ldr r0, [pc, #708] ; (126bc ) + 123f8: f01a f91a bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 12324: 4633 mov r3, r6 - 12326: 220a movs r2, #10 - 12328: 7821 ldrb r1, [r4, #0] - 1232a: 48ac ldr r0, [pc, #688] ; (125dc ) - 1232c: f017 fdbe bl 29eac + 123fc: 4633 mov r3, r6 + 123fe: 220a movs r2, #10 + 12400: 7821 ldrb r1, [r4, #0] + 12402: 48ac ldr r0, [pc, #688] ; (126b4 ) + 12404: f017 fdc8 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 12330: 48aa ldr r0, [pc, #680] ; (125dc ) - 12332: f017 fd9f bl 29e74 - 12336: 2101 movs r1, #1 - 12338: 48aa ldr r0, [pc, #680] ; (125e4 ) - 1233a: f01a f905 bl 2c548 - 1233e: 213c movs r1, #60 ; 0x3c - 12340: 48aa ldr r0, [pc, #680] ; (125ec ) - 12342: f01a f901 bl 2c548 + 12408: 48aa ldr r0, [pc, #680] ; (126b4 ) + 1240a: f017 fda9 bl 29f60 + 1240e: 2101 movs r1, #1 + 12410: 48aa ldr r0, [pc, #680] ; (126bc ) + 12412: f01a f90d bl 2c630 + 12416: 213c movs r1, #60 ; 0x3c + 12418: 48aa ldr r0, [pc, #680] ; (126c4 ) + 1241a: f01a f909 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 12346: 48a5 ldr r0, [pc, #660] ; (125dc ) - 12348: f017 fd94 bl 29e74 - 1234c: 212e movs r1, #46 ; 0x2e - 1234e: 48a4 ldr r0, [pc, #656] ; (125e0 ) - 12350: f01a f8fa bl 2c548 - 12354: 48a1 ldr r0, [pc, #644] ; (125dc ) - 12356: f017 fd8d bl 29e74 - 1235a: 212e movs r1, #46 ; 0x2e - 1235c: 48a0 ldr r0, [pc, #640] ; (125e0 ) - 1235e: f01a f8f3 bl 2c548 - 12362: 489e ldr r0, [pc, #632] ; (125dc ) - 12364: f017 fd86 bl 29e74 - 12368: 212e movs r1, #46 ; 0x2e - 1236a: 489d ldr r0, [pc, #628] ; (125e0 ) - 1236c: f01a f8ec bl 2c548 - 12370: 489a ldr r0, [pc, #616] ; (125dc ) - 12372: f017 fd7f bl 29e74 - 12376: 212e movs r1, #46 ; 0x2e - 12378: 4899 ldr r0, [pc, #612] ; (125e0 ) - 1237a: f01a f8e5 bl 2c548 - 1237e: 4897 ldr r0, [pc, #604] ; (125dc ) - 12380: f017 fd78 bl 29e74 - 12384: 4631 mov r1, r6 - 12386: 4894 ldr r0, [pc, #592] ; (125d8 ) - 12388: f01a f8de bl 2c548 - 1238c: 4893 ldr r0, [pc, #588] ; (125dc ) - 1238e: f017 fd71 bl 29e74 - 12392: 4631 mov r1, r6 - 12394: 4890 ldr r0, [pc, #576] ; (125d8 ) - 12396: f01a f8d7 bl 2c548 - 1239a: 4890 ldr r0, [pc, #576] ; (125dc ) - 1239c: f017 fd6a bl 29e74 - 123a0: 212e movs r1, #46 ; 0x2e - 123a2: 488f ldr r0, [pc, #572] ; (125e0 ) - 123a4: f01a f8d0 bl 2c548 - 123a8: 488c ldr r0, [pc, #560] ; (125dc ) - 123aa: f017 fd63 bl 29e74 - 123ae: 212e movs r1, #46 ; 0x2e - 123b0: 488b ldr r0, [pc, #556] ; (125e0 ) - 123b2: f01a f8c9 bl 2c548 - 123b6: 4889 ldr r0, [pc, #548] ; (125dc ) - 123b8: f017 fd5c bl 29e74 - 123bc: 212e movs r1, #46 ; 0x2e - 123be: 4888 ldr r0, [pc, #544] ; (125e0 ) - 123c0: f01a f8c2 bl 2c548 - 123c4: 4885 ldr r0, [pc, #532] ; (125dc ) - 123c6: f017 fd55 bl 29e74 - 123ca: 212e movs r1, #46 ; 0x2e - 123cc: 4884 ldr r0, [pc, #528] ; (125e0 ) - 123ce: f01a f8bb bl 2c548 - 123d2: 4882 ldr r0, [pc, #520] ; (125dc ) - 123d4: f017 fd4e bl 29e74 - 123d8: 2101 movs r1, #1 - 123da: 4882 ldr r0, [pc, #520] ; (125e4 ) - 123dc: f01a f8b4 bl 2c548 - 123e0: 2118 movs r1, #24 - 123e2: 4883 ldr r0, [pc, #524] ; (125f0 ) - 123e4: f01a f8b0 bl 2c548 - 123e8: 487c ldr r0, [pc, #496] ; (125dc ) - 123ea: f017 fd43 bl 29e74 - 123ee: 2101 movs r1, #1 - 123f0: 487c ldr r0, [pc, #496] ; (125e4 ) - 123f2: f01a f8a9 bl 2c548 - 123f6: 213f movs r1, #63 ; 0x3f - 123f8: 487e ldr r0, [pc, #504] ; (125f4 ) - 123fa: f01a f8a5 bl 2c548 - 123fe: 4877 ldr r0, [pc, #476] ; (125dc ) - 12400: f017 fd38 bl 29e74 - 12404: 212e movs r1, #46 ; 0x2e - 12406: 4876 ldr r0, [pc, #472] ; (125e0 ) - 12408: f01a f89e bl 2c548 - 1240c: 4873 ldr r0, [pc, #460] ; (125dc ) - 1240e: f017 fd31 bl 29e74 - 12412: 212e movs r1, #46 ; 0x2e - 12414: 4872 ldr r0, [pc, #456] ; (125e0 ) - 12416: f01a f897 bl 2c548 - 1241a: 4870 ldr r0, [pc, #448] ; (125dc ) - 1241c: f017 fd2a bl 29e74 - 12420: 212e movs r1, #46 ; 0x2e - 12422: 486f ldr r0, [pc, #444] ; (125e0 ) - 12424: f01a f890 bl 2c548 - 12428: 486c ldr r0, [pc, #432] ; (125dc ) - 1242a: f017 fd23 bl 29e74 - 1242e: 212e movs r1, #46 ; 0x2e - 12430: 486b ldr r0, [pc, #428] ; (125e0 ) - 12432: f01a f889 bl 2c548 - 12436: 4869 ldr r0, [pc, #420] ; (125dc ) - 12438: f017 fd1c bl 29e74 - 1243c: 4631 mov r1, r6 - 1243e: 4866 ldr r0, [pc, #408] ; (125d8 ) - 12440: f01a f882 bl 2c548 - 12444: 4865 ldr r0, [pc, #404] ; (125dc ) - 12446: f017 fd15 bl 29e74 - 1244a: e7fe b.n 1244a - 1244c: 2100 movs r1, #0 - 1244e: 4862 ldr r0, [pc, #392] ; (125d8 ) - 12450: f01a f87a bl 2c548 - 12454: 4861 ldr r0, [pc, #388] ; (125dc ) - 12456: f017 fd0d bl 29e74 - 1245a: 212e movs r1, #46 ; 0x2e - 1245c: 4860 ldr r0, [pc, #384] ; (125e0 ) - 1245e: f01a f873 bl 2c548 - 12462: 485e ldr r0, [pc, #376] ; (125dc ) - 12464: f017 fd06 bl 29e74 - 12468: 212e movs r1, #46 ; 0x2e - 1246a: 485d ldr r0, [pc, #372] ; (125e0 ) - 1246c: f01a f86c bl 2c548 - 12470: 485a ldr r0, [pc, #360] ; (125dc ) - 12472: f017 fcff bl 29e74 - 12476: 212e movs r1, #46 ; 0x2e - 12478: 4859 ldr r0, [pc, #356] ; (125e0 ) - 1247a: f01a f865 bl 2c548 - 1247e: 4857 ldr r0, [pc, #348] ; (125dc ) - 12480: f017 fcf8 bl 29e74 - 12484: 212e movs r1, #46 ; 0x2e - 12486: 4856 ldr r0, [pc, #344] ; (125e0 ) - 12488: f01a f85e bl 2c548 - 1248c: 4853 ldr r0, [pc, #332] ; (125dc ) - 1248e: f017 fcf1 bl 29e74 - 12492: 2101 movs r1, #1 - 12494: 4853 ldr r0, [pc, #332] ; (125e4 ) - 12496: f01a f857 bl 2c548 - 1249a: 2104 movs r1, #4 - 1249c: 4856 ldr r0, [pc, #344] ; (125f8 ) - 1249e: f01a f853 bl 2c548 - 124a2: 484e ldr r0, [pc, #312] ; (125dc ) - 124a4: f017 fce6 bl 29e74 - 124a8: 2101 movs r1, #1 - 124aa: 484e ldr r0, [pc, #312] ; (125e4 ) - 124ac: f01a f84c bl 2c548 + 1241e: 48a5 ldr r0, [pc, #660] ; (126b4 ) + 12420: f017 fd9e bl 29f60 + 12424: 212e movs r1, #46 ; 0x2e + 12426: 48a4 ldr r0, [pc, #656] ; (126b8 ) + 12428: f01a f902 bl 2c630 + 1242c: 48a1 ldr r0, [pc, #644] ; (126b4 ) + 1242e: f017 fd97 bl 29f60 + 12432: 212e movs r1, #46 ; 0x2e + 12434: 48a0 ldr r0, [pc, #640] ; (126b8 ) + 12436: f01a f8fb bl 2c630 + 1243a: 489e ldr r0, [pc, #632] ; (126b4 ) + 1243c: f017 fd90 bl 29f60 + 12440: 212e movs r1, #46 ; 0x2e + 12442: 489d ldr r0, [pc, #628] ; (126b8 ) + 12444: f01a f8f4 bl 2c630 + 12448: 489a ldr r0, [pc, #616] ; (126b4 ) + 1244a: f017 fd89 bl 29f60 + 1244e: 212e movs r1, #46 ; 0x2e + 12450: 4899 ldr r0, [pc, #612] ; (126b8 ) + 12452: f01a f8ed bl 2c630 + 12456: 4897 ldr r0, [pc, #604] ; (126b4 ) + 12458: f017 fd82 bl 29f60 + 1245c: 4631 mov r1, r6 + 1245e: 4894 ldr r0, [pc, #592] ; (126b0 ) + 12460: f01a f8e6 bl 2c630 + 12464: 4893 ldr r0, [pc, #588] ; (126b4 ) + 12466: f017 fd7b bl 29f60 + 1246a: 4631 mov r1, r6 + 1246c: 4890 ldr r0, [pc, #576] ; (126b0 ) + 1246e: f01a f8df bl 2c630 + 12472: 4890 ldr r0, [pc, #576] ; (126b4 ) + 12474: f017 fd74 bl 29f60 + 12478: 212e movs r1, #46 ; 0x2e + 1247a: 488f ldr r0, [pc, #572] ; (126b8 ) + 1247c: f01a f8d8 bl 2c630 + 12480: 488c ldr r0, [pc, #560] ; (126b4 ) + 12482: f017 fd6d bl 29f60 + 12486: 212e movs r1, #46 ; 0x2e + 12488: 488b ldr r0, [pc, #556] ; (126b8 ) + 1248a: f01a f8d1 bl 2c630 + 1248e: 4889 ldr r0, [pc, #548] ; (126b4 ) + 12490: f017 fd66 bl 29f60 + 12494: 212e movs r1, #46 ; 0x2e + 12496: 4888 ldr r0, [pc, #544] ; (126b8 ) + 12498: f01a f8ca bl 2c630 + 1249c: 4885 ldr r0, [pc, #532] ; (126b4 ) + 1249e: f017 fd5f bl 29f60 + 124a2: 212e movs r1, #46 ; 0x2e + 124a4: 4884 ldr r0, [pc, #528] ; (126b8 ) + 124a6: f01a f8c3 bl 2c630 + 124aa: 4882 ldr r0, [pc, #520] ; (126b4 ) + 124ac: f017 fd58 bl 29f60 + 124b0: 2101 movs r1, #1 + 124b2: 4882 ldr r0, [pc, #520] ; (126bc ) + 124b4: f01a f8bc bl 2c630 + 124b8: 2118 movs r1, #24 + 124ba: 4883 ldr r0, [pc, #524] ; (126c8 ) + 124bc: f01a f8b8 bl 2c630 + 124c0: 487c ldr r0, [pc, #496] ; (126b4 ) + 124c2: f017 fd4d bl 29f60 + 124c6: 2101 movs r1, #1 + 124c8: 487c ldr r0, [pc, #496] ; (126bc ) + 124ca: f01a f8b1 bl 2c630 + 124ce: 213f movs r1, #63 ; 0x3f + 124d0: 487e ldr r0, [pc, #504] ; (126cc ) + 124d2: f01a f8ad bl 2c630 + 124d6: 4877 ldr r0, [pc, #476] ; (126b4 ) + 124d8: f017 fd42 bl 29f60 + 124dc: 212e movs r1, #46 ; 0x2e + 124de: 4876 ldr r0, [pc, #472] ; (126b8 ) + 124e0: f01a f8a6 bl 2c630 + 124e4: 4873 ldr r0, [pc, #460] ; (126b4 ) + 124e6: f017 fd3b bl 29f60 + 124ea: 212e movs r1, #46 ; 0x2e + 124ec: 4872 ldr r0, [pc, #456] ; (126b8 ) + 124ee: f01a f89f bl 2c630 + 124f2: 4870 ldr r0, [pc, #448] ; (126b4 ) + 124f4: f017 fd34 bl 29f60 + 124f8: 212e movs r1, #46 ; 0x2e + 124fa: 486f ldr r0, [pc, #444] ; (126b8 ) + 124fc: f01a f898 bl 2c630 + 12500: 486c ldr r0, [pc, #432] ; (126b4 ) + 12502: f017 fd2d bl 29f60 + 12506: 212e movs r1, #46 ; 0x2e + 12508: 486b ldr r0, [pc, #428] ; (126b8 ) + 1250a: f01a f891 bl 2c630 + 1250e: 4869 ldr r0, [pc, #420] ; (126b4 ) + 12510: f017 fd26 bl 29f60 + 12514: 4631 mov r1, r6 + 12516: 4866 ldr r0, [pc, #408] ; (126b0 ) + 12518: f01a f88a bl 2c630 + 1251c: 4865 ldr r0, [pc, #404] ; (126b4 ) + 1251e: f017 fd1f bl 29f60 + 12522: e7fe b.n 12522 + 12524: 2100 movs r1, #0 + 12526: 4862 ldr r0, [pc, #392] ; (126b0 ) + 12528: f01a f882 bl 2c630 + 1252c: 4861 ldr r0, [pc, #388] ; (126b4 ) + 1252e: f017 fd17 bl 29f60 + 12532: 212e movs r1, #46 ; 0x2e + 12534: 4860 ldr r0, [pc, #384] ; (126b8 ) + 12536: f01a f87b bl 2c630 + 1253a: 485e ldr r0, [pc, #376] ; (126b4 ) + 1253c: f017 fd10 bl 29f60 + 12540: 212e movs r1, #46 ; 0x2e + 12542: 485d ldr r0, [pc, #372] ; (126b8 ) + 12544: f01a f874 bl 2c630 + 12548: 485a ldr r0, [pc, #360] ; (126b4 ) + 1254a: f017 fd09 bl 29f60 + 1254e: 212e movs r1, #46 ; 0x2e + 12550: 4859 ldr r0, [pc, #356] ; (126b8 ) + 12552: f01a f86d bl 2c630 + 12556: 4857 ldr r0, [pc, #348] ; (126b4 ) + 12558: f017 fd02 bl 29f60 + 1255c: 212e movs r1, #46 ; 0x2e + 1255e: 4856 ldr r0, [pc, #344] ; (126b8 ) + 12560: f01a f866 bl 2c630 + 12564: 4853 ldr r0, [pc, #332] ; (126b4 ) + 12566: f017 fcfb bl 29f60 + 1256a: 2101 movs r1, #1 + 1256c: 4853 ldr r0, [pc, #332] ; (126bc ) + 1256e: f01a f85f bl 2c630 + 12572: 2104 movs r1, #4 + 12574: 4856 ldr r0, [pc, #344] ; (126d0 ) + 12576: f01a f85b bl 2c630 + 1257a: 484e ldr r0, [pc, #312] ; (126b4 ) + 1257c: f017 fcf0 bl 29f60 + 12580: 2101 movs r1, #1 + 12582: 484e ldr r0, [pc, #312] ; (126bc ) + 12584: f01a f854 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 124b0: 2300 movs r3, #0 - 124b2: 220a movs r2, #10 - 124b4: 4629 mov r1, r5 - 124b6: 4849 ldr r0, [pc, #292] ; (125dc ) - 124b8: f017 fcf8 bl 29eac + 12588: 2300 movs r3, #0 + 1258a: 220a movs r2, #10 + 1258c: 4629 mov r1, r5 + 1258e: 4849 ldr r0, [pc, #292] ; (126b4 ) + 12590: f017 fd02 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 124bc: 4847 ldr r0, [pc, #284] ; (125dc ) - 124be: f017 fcd9 bl 29e74 - 124c2: 2101 movs r1, #1 - 124c4: 4847 ldr r0, [pc, #284] ; (125e4 ) - 124c6: f01a f83f bl 2c548 - 124ca: 2147 movs r1, #71 ; 0x47 - 124cc: 484b ldr r0, [pc, #300] ; (125fc ) - 124ce: f01a f83b bl 2c548 + 12594: 4847 ldr r0, [pc, #284] ; (126b4 ) + 12596: f017 fce3 bl 29f60 + 1259a: 2101 movs r1, #1 + 1259c: 4847 ldr r0, [pc, #284] ; (126bc ) + 1259e: f01a f847 bl 2c630 + 125a2: 2147 movs r1, #71 ; 0x47 + 125a4: 484b ldr r0, [pc, #300] ; (126d4 ) + 125a6: f01a f843 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 124d2: 4842 ldr r0, [pc, #264] ; (125dc ) - 124d4: f017 fcce bl 29e74 - 124d8: 212e movs r1, #46 ; 0x2e - 124da: 4841 ldr r0, [pc, #260] ; (125e0 ) - 124dc: f01a f834 bl 2c548 - 124e0: 483e ldr r0, [pc, #248] ; (125dc ) - 124e2: f017 fcc7 bl 29e74 - 124e6: 212e movs r1, #46 ; 0x2e - 124e8: 483d ldr r0, [pc, #244] ; (125e0 ) - 124ea: f01a f82d bl 2c548 - 124ee: 483b ldr r0, [pc, #236] ; (125dc ) - 124f0: f017 fcc0 bl 29e74 - 124f4: 212e movs r1, #46 ; 0x2e - 124f6: 483a ldr r0, [pc, #232] ; (125e0 ) - 124f8: f01a f826 bl 2c548 - 124fc: 4837 ldr r0, [pc, #220] ; (125dc ) - 124fe: f017 fcb9 bl 29e74 - 12502: 212e movs r1, #46 ; 0x2e - 12504: 4836 ldr r0, [pc, #216] ; (125e0 ) - 12506: f01a f81f bl 2c548 - 1250a: 4834 ldr r0, [pc, #208] ; (125dc ) - 1250c: f017 fcb2 bl 29e74 - 12510: 2100 movs r1, #0 - 12512: 4831 ldr r0, [pc, #196] ; (125d8 ) - 12514: f01a f818 bl 2c548 - 12518: 4830 ldr r0, [pc, #192] ; (125dc ) - 1251a: f017 fcab bl 29e74 - 1251e: 2100 movs r1, #0 - 12520: 482d ldr r0, [pc, #180] ; (125d8 ) - 12522: f01a f811 bl 2c548 - 12526: 482d ldr r0, [pc, #180] ; (125dc ) - 12528: f017 fca4 bl 29e74 - 1252c: 212e movs r1, #46 ; 0x2e - 1252e: 482c ldr r0, [pc, #176] ; (125e0 ) - 12530: f01a f80a bl 2c548 - 12534: 4829 ldr r0, [pc, #164] ; (125dc ) - 12536: f017 fc9d bl 29e74 - 1253a: 212e movs r1, #46 ; 0x2e - 1253c: 4828 ldr r0, [pc, #160] ; (125e0 ) - 1253e: f01a f803 bl 2c548 - 12542: 4826 ldr r0, [pc, #152] ; (125dc ) - 12544: f017 fc96 bl 29e74 - 12548: 212e movs r1, #46 ; 0x2e - 1254a: 4825 ldr r0, [pc, #148] ; (125e0 ) - 1254c: f019 fffc bl 2c548 - 12550: 4822 ldr r0, [pc, #136] ; (125dc ) - 12552: f017 fc8f bl 29e74 - 12556: 212e movs r1, #46 ; 0x2e - 12558: 4821 ldr r0, [pc, #132] ; (125e0 ) - 1255a: f019 fff5 bl 2c548 - 1255e: 481f ldr r0, [pc, #124] ; (125dc ) - 12560: f017 fc88 bl 29e74 - 12564: 2101 movs r1, #1 - 12566: 481f ldr r0, [pc, #124] ; (125e4 ) - 12568: f019 ffee bl 2c548 - 1256c: 2118 movs r1, #24 - 1256e: 4820 ldr r0, [pc, #128] ; (125f0 ) - 12570: f019 ffea bl 2c548 - 12574: 4819 ldr r0, [pc, #100] ; (125dc ) - 12576: f017 fc7d bl 29e74 - 1257a: 2101 movs r1, #1 - 1257c: 4819 ldr r0, [pc, #100] ; (125e4 ) - 1257e: f019 ffe3 bl 2c548 - 12582: 213f movs r1, #63 ; 0x3f - 12584: 481b ldr r0, [pc, #108] ; (125f4 ) - 12586: f019 ffdf bl 2c548 - 1258a: 4814 ldr r0, [pc, #80] ; (125dc ) - 1258c: f017 fc72 bl 29e74 - 12590: 212e movs r1, #46 ; 0x2e - 12592: 4813 ldr r0, [pc, #76] ; (125e0 ) - 12594: f019 ffd8 bl 2c548 - 12598: 4810 ldr r0, [pc, #64] ; (125dc ) - 1259a: f017 fc6b bl 29e74 - 1259e: 212e movs r1, #46 ; 0x2e - 125a0: 480f ldr r0, [pc, #60] ; (125e0 ) - 125a2: f019 ffd1 bl 2c548 - 125a6: 480d ldr r0, [pc, #52] ; (125dc ) - 125a8: f017 fc64 bl 29e74 - 125ac: 212e movs r1, #46 ; 0x2e - 125ae: 480c ldr r0, [pc, #48] ; (125e0 ) - 125b0: f019 ffca bl 2c548 - 125b4: 4809 ldr r0, [pc, #36] ; (125dc ) - 125b6: f017 fc5d bl 29e74 - 125ba: 212e movs r1, #46 ; 0x2e - 125bc: 4808 ldr r0, [pc, #32] ; (125e0 ) - 125be: f019 ffc3 bl 2c548 - 125c2: 4806 ldr r0, [pc, #24] ; (125dc ) - 125c4: f017 fc56 bl 29e74 - 125c8: 2100 movs r1, #0 - 125ca: 4803 ldr r0, [pc, #12] ; (125d8 ) - 125cc: f019 ffbc bl 2c548 - 125d0: 4802 ldr r0, [pc, #8] ; (125dc ) - 125d2: f017 fc4f bl 29e74 - 125d6: e7fe b.n 125d6 - 125d8: 20003c58 .word 0x20003c58 - 125dc: 20004ba8 .word 0x20004ba8 - 125e0: 20001950 .word 0x20001950 - 125e4: 200023ec .word 0x200023ec - 125e8: 20003b14 .word 0x20003b14 - 125ec: 20003b20 .word 0x20003b20 - 125f0: 200019d0 .word 0x200019d0 - 125f4: 200019ec .word 0x200019ec - 125f8: 20001980 .word 0x20001980 - 125fc: 20001988 .word 0x20001988 + 125aa: 4842 ldr r0, [pc, #264] ; (126b4 ) + 125ac: f017 fcd8 bl 29f60 + 125b0: 212e movs r1, #46 ; 0x2e + 125b2: 4841 ldr r0, [pc, #260] ; (126b8 ) + 125b4: f01a f83c bl 2c630 + 125b8: 483e ldr r0, [pc, #248] ; (126b4 ) + 125ba: f017 fcd1 bl 29f60 + 125be: 212e movs r1, #46 ; 0x2e + 125c0: 483d ldr r0, [pc, #244] ; (126b8 ) + 125c2: f01a f835 bl 2c630 + 125c6: 483b ldr r0, [pc, #236] ; (126b4 ) + 125c8: f017 fcca bl 29f60 + 125cc: 212e movs r1, #46 ; 0x2e + 125ce: 483a ldr r0, [pc, #232] ; (126b8 ) + 125d0: f01a f82e bl 2c630 + 125d4: 4837 ldr r0, [pc, #220] ; (126b4 ) + 125d6: f017 fcc3 bl 29f60 + 125da: 212e movs r1, #46 ; 0x2e + 125dc: 4836 ldr r0, [pc, #216] ; (126b8 ) + 125de: f01a f827 bl 2c630 + 125e2: 4834 ldr r0, [pc, #208] ; (126b4 ) + 125e4: f017 fcbc bl 29f60 + 125e8: 2100 movs r1, #0 + 125ea: 4831 ldr r0, [pc, #196] ; (126b0 ) + 125ec: f01a f820 bl 2c630 + 125f0: 4830 ldr r0, [pc, #192] ; (126b4 ) + 125f2: f017 fcb5 bl 29f60 + 125f6: 2100 movs r1, #0 + 125f8: 482d ldr r0, [pc, #180] ; (126b0 ) + 125fa: f01a f819 bl 2c630 + 125fe: 482d ldr r0, [pc, #180] ; (126b4 ) + 12600: f017 fcae bl 29f60 + 12604: 212e movs r1, #46 ; 0x2e + 12606: 482c ldr r0, [pc, #176] ; (126b8 ) + 12608: f01a f812 bl 2c630 + 1260c: 4829 ldr r0, [pc, #164] ; (126b4 ) + 1260e: f017 fca7 bl 29f60 + 12612: 212e movs r1, #46 ; 0x2e + 12614: 4828 ldr r0, [pc, #160] ; (126b8 ) + 12616: f01a f80b bl 2c630 + 1261a: 4826 ldr r0, [pc, #152] ; (126b4 ) + 1261c: f017 fca0 bl 29f60 + 12620: 212e movs r1, #46 ; 0x2e + 12622: 4825 ldr r0, [pc, #148] ; (126b8 ) + 12624: f01a f804 bl 2c630 + 12628: 4822 ldr r0, [pc, #136] ; (126b4 ) + 1262a: f017 fc99 bl 29f60 + 1262e: 212e movs r1, #46 ; 0x2e + 12630: 4821 ldr r0, [pc, #132] ; (126b8 ) + 12632: f019 fffd bl 2c630 + 12636: 481f ldr r0, [pc, #124] ; (126b4 ) + 12638: f017 fc92 bl 29f60 + 1263c: 2101 movs r1, #1 + 1263e: 481f ldr r0, [pc, #124] ; (126bc ) + 12640: f019 fff6 bl 2c630 + 12644: 2118 movs r1, #24 + 12646: 4820 ldr r0, [pc, #128] ; (126c8 ) + 12648: f019 fff2 bl 2c630 + 1264c: 4819 ldr r0, [pc, #100] ; (126b4 ) + 1264e: f017 fc87 bl 29f60 + 12652: 2101 movs r1, #1 + 12654: 4819 ldr r0, [pc, #100] ; (126bc ) + 12656: f019 ffeb bl 2c630 + 1265a: 213f movs r1, #63 ; 0x3f + 1265c: 481b ldr r0, [pc, #108] ; (126cc ) + 1265e: f019 ffe7 bl 2c630 + 12662: 4814 ldr r0, [pc, #80] ; (126b4 ) + 12664: f017 fc7c bl 29f60 + 12668: 212e movs r1, #46 ; 0x2e + 1266a: 4813 ldr r0, [pc, #76] ; (126b8 ) + 1266c: f019 ffe0 bl 2c630 + 12670: 4810 ldr r0, [pc, #64] ; (126b4 ) + 12672: f017 fc75 bl 29f60 + 12676: 212e movs r1, #46 ; 0x2e + 12678: 480f ldr r0, [pc, #60] ; (126b8 ) + 1267a: f019 ffd9 bl 2c630 + 1267e: 480d ldr r0, [pc, #52] ; (126b4 ) + 12680: f017 fc6e bl 29f60 + 12684: 212e movs r1, #46 ; 0x2e + 12686: 480c ldr r0, [pc, #48] ; (126b8 ) + 12688: f019 ffd2 bl 2c630 + 1268c: 4809 ldr r0, [pc, #36] ; (126b4 ) + 1268e: f017 fc67 bl 29f60 + 12692: 212e movs r1, #46 ; 0x2e + 12694: 4808 ldr r0, [pc, #32] ; (126b8 ) + 12696: f019 ffcb bl 2c630 + 1269a: 4806 ldr r0, [pc, #24] ; (126b4 ) + 1269c: f017 fc60 bl 29f60 + 126a0: 2100 movs r1, #0 + 126a2: 4803 ldr r0, [pc, #12] ; (126b0 ) + 126a4: f019 ffc4 bl 2c630 + 126a8: 4802 ldr r0, [pc, #8] ; (126b4 ) + 126aa: f017 fc59 bl 29f60 + 126ae: e7fe b.n 126ae + 126b0: 20003d18 .word 0x20003d18 + 126b4: 20004c68 .word 0x20004c68 + 126b8: 20001950 .word 0x20001950 + 126bc: 200023ec .word 0x200023ec + 126c0: 20003bd4 .word 0x20003bd4 + 126c4: 20003be0 .word 0x20003be0 + 126c8: 200019d0 .word 0x200019d0 + 126cc: 200019ec .word 0x200019ec + 126d0: 20001980 .word 0x20001980 + 126d4: 20001988 .word 0x20001988 bitWrite(flags, bit, value); - 12600: 2001 movs r0, #1 - 12602: 7220 strb r0, [r4, #8] + 126d8: 2001 movs r0, #1 + 126da: 7220 strb r0, [r4, #8] BMCFlags flags; BMCTimer holdTimer; BMCTimer doublePressTimer; BMCTimer continuousTimer; void setInitialState(){ delay(1); - 12604: f017 ff62 bl 2a4cc - 12608: 7a62 ldrb r2, [r4, #9] + 126dc: f017 ff6a bl 2a5b4 + 126e0: 7a62 ldrb r2, [r4, #9] return bitRead(flags, bit); - 1260a: 8963 ldrh r3, [r4, #10] + 126e2: 8963 ldrh r3, [r4, #10] bitWrite(flags, bit, value); - 1260c: f042 0201 orr.w r2, r2, #1 + 126e4: f042 0201 orr.w r2, r2, #1 if(flags.read(BMC_BTN_FLAG_PRESS_TRIGGERED)){ - 12610: 0498 lsls r0, r3, #18 - 12612: 7262 strb r2, [r4, #9] - 12614: f140 80d6 bpl.w 127c4 + 126e8: 0498 lsls r0, r3, #18 + 126ea: 7262 strb r2, [r4, #9] + 126ec: f140 80d6 bpl.w 1289c if(bitRead(flags, bit)){ - 12618: 0459 lsls r1, r3, #17 - 1261a: f100 80e2 bmi.w 127e2 + 126f0: 0459 lsls r1, r3, #17 + 126f2: f100 80e2 bmi.w 128ba bitWrite(flags, bit, value); - 1261e: f043 0302 orr.w r3, r3, #2 - 12622: 8163 strh r3, [r4, #10] + 126f6: f043 0302 orr.w r3, r3, #2 + 126fa: 8163 strh r3, [r4, #10] } - 12624: bd70 pop {r4, r5, r6, pc} + 126fc: bd70 pop {r4, r5, r6, pc} switch(index){ - 12626: 2927 cmp r1, #39 ; 0x27 - 12628: f240 80c6 bls.w 127b8 - 1262c: 4631 mov r1, r6 - 1262e: 486f ldr r0, [pc, #444] ; (127ec ) - 12630: f019 ff8a bl 2c548 - 12634: 486e ldr r0, [pc, #440] ; (127f0 ) - 12636: f017 fc1d bl 29e74 - 1263a: 212e movs r1, #46 ; 0x2e - 1263c: 486d ldr r0, [pc, #436] ; (127f4 ) - 1263e: f019 ff83 bl 2c548 - 12642: 486b ldr r0, [pc, #428] ; (127f0 ) - 12644: f017 fc16 bl 29e74 - 12648: 212e movs r1, #46 ; 0x2e - 1264a: 486a ldr r0, [pc, #424] ; (127f4 ) - 1264c: f019 ff7c bl 2c548 - 12650: 4867 ldr r0, [pc, #412] ; (127f0 ) - 12652: f017 fc0f bl 29e74 - 12656: 212e movs r1, #46 ; 0x2e - 12658: 4866 ldr r0, [pc, #408] ; (127f4 ) - 1265a: f019 ff75 bl 2c548 - 1265e: 4864 ldr r0, [pc, #400] ; (127f0 ) - 12660: f017 fc08 bl 29e74 - 12664: 212e movs r1, #46 ; 0x2e - 12666: 4863 ldr r0, [pc, #396] ; (127f4 ) - 12668: f019 ff6e bl 2c548 - 1266c: 4860 ldr r0, [pc, #384] ; (127f0 ) - 1266e: f017 fc01 bl 29e74 - 12672: 2101 movs r1, #1 - 12674: 4860 ldr r0, [pc, #384] ; (127f8 ) - 12676: f019 ff67 bl 2c548 - 1267a: 2104 movs r1, #4 - 1267c: 485f ldr r0, [pc, #380] ; (127fc ) - 1267e: f019 ff63 bl 2c548 - 12682: 485b ldr r0, [pc, #364] ; (127f0 ) - 12684: f017 fbf6 bl 29e74 - 12688: 2101 movs r1, #1 - 1268a: 485b ldr r0, [pc, #364] ; (127f8 ) - 1268c: f019 ff5c bl 2c548 + 126fe: 2927 cmp r1, #39 ; 0x27 + 12700: f240 80c6 bls.w 12890 + 12704: 4631 mov r1, r6 + 12706: 486f ldr r0, [pc, #444] ; (128c4 ) + 12708: f019 ff92 bl 2c630 + 1270c: 486e ldr r0, [pc, #440] ; (128c8 ) + 1270e: f017 fc27 bl 29f60 + 12712: 212e movs r1, #46 ; 0x2e + 12714: 486d ldr r0, [pc, #436] ; (128cc ) + 12716: f019 ff8b bl 2c630 + 1271a: 486b ldr r0, [pc, #428] ; (128c8 ) + 1271c: f017 fc20 bl 29f60 + 12720: 212e movs r1, #46 ; 0x2e + 12722: 486a ldr r0, [pc, #424] ; (128cc ) + 12724: f019 ff84 bl 2c630 + 12728: 4867 ldr r0, [pc, #412] ; (128c8 ) + 1272a: f017 fc19 bl 29f60 + 1272e: 212e movs r1, #46 ; 0x2e + 12730: 4866 ldr r0, [pc, #408] ; (128cc ) + 12732: f019 ff7d bl 2c630 + 12736: 4864 ldr r0, [pc, #400] ; (128c8 ) + 12738: f017 fc12 bl 29f60 + 1273c: 212e movs r1, #46 ; 0x2e + 1273e: 4863 ldr r0, [pc, #396] ; (128cc ) + 12740: f019 ff76 bl 2c630 + 12744: 4860 ldr r0, [pc, #384] ; (128c8 ) + 12746: f017 fc0b bl 29f60 + 1274a: 2101 movs r1, #1 + 1274c: 4860 ldr r0, [pc, #384] ; (128d0 ) + 1274e: f019 ff6f bl 2c630 + 12752: 2104 movs r1, #4 + 12754: 485f ldr r0, [pc, #380] ; (128d4 ) + 12756: f019 ff6b bl 2c630 + 1275a: 485b ldr r0, [pc, #364] ; (128c8 ) + 1275c: f017 fc00 bl 29f60 + 12760: 2101 movs r1, #1 + 12762: 485b ldr r0, [pc, #364] ; (128d0 ) + 12764: f019 ff64 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 12690: 4633 mov r3, r6 - 12692: 220a movs r2, #10 - 12694: 7821 ldrb r1, [r4, #0] - 12696: 4856 ldr r0, [pc, #344] ; (127f0 ) - 12698: f017 fc08 bl 29eac + 12768: 4633 mov r3, r6 + 1276a: 220a movs r2, #10 + 1276c: 7821 ldrb r1, [r4, #0] + 1276e: 4856 ldr r0, [pc, #344] ; (128c8 ) + 12770: f017 fc12 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 1269c: 4854 ldr r0, [pc, #336] ; (127f0 ) - 1269e: f017 fbe9 bl 29e74 - 126a2: 2101 movs r1, #1 - 126a4: 4854 ldr r0, [pc, #336] ; (127f8 ) - 126a6: f019 ff4f bl 2c548 - 126aa: 2139 movs r1, #57 ; 0x39 - 126ac: 4854 ldr r0, [pc, #336] ; (12800 ) - 126ae: f019 ff4b bl 2c548 + 12774: 4854 ldr r0, [pc, #336] ; (128c8 ) + 12776: f017 fbf3 bl 29f60 + 1277a: 2101 movs r1, #1 + 1277c: 4854 ldr r0, [pc, #336] ; (128d0 ) + 1277e: f019 ff57 bl 2c630 + 12782: 2139 movs r1, #57 ; 0x39 + 12784: 4854 ldr r0, [pc, #336] ; (128d8 ) + 12786: f019 ff53 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 126b2: 484f ldr r0, [pc, #316] ; (127f0 ) - 126b4: f017 fbde bl 29e74 - 126b8: 212e movs r1, #46 ; 0x2e - 126ba: 484e ldr r0, [pc, #312] ; (127f4 ) - 126bc: f019 ff44 bl 2c548 - 126c0: 484b ldr r0, [pc, #300] ; (127f0 ) - 126c2: f017 fbd7 bl 29e74 - 126c6: 212e movs r1, #46 ; 0x2e - 126c8: 484a ldr r0, [pc, #296] ; (127f4 ) - 126ca: f019 ff3d bl 2c548 - 126ce: 4848 ldr r0, [pc, #288] ; (127f0 ) - 126d0: f017 fbd0 bl 29e74 - 126d4: 212e movs r1, #46 ; 0x2e - 126d6: 4847 ldr r0, [pc, #284] ; (127f4 ) - 126d8: f019 ff36 bl 2c548 - 126dc: 4844 ldr r0, [pc, #272] ; (127f0 ) - 126de: f017 fbc9 bl 29e74 - 126e2: 212e movs r1, #46 ; 0x2e - 126e4: 4843 ldr r0, [pc, #268] ; (127f4 ) - 126e6: f019 ff2f bl 2c548 - 126ea: 4841 ldr r0, [pc, #260] ; (127f0 ) - 126ec: f017 fbc2 bl 29e74 - 126f0: 4631 mov r1, r6 - 126f2: 483e ldr r0, [pc, #248] ; (127ec ) - 126f4: f019 ff28 bl 2c548 - 126f8: 483d ldr r0, [pc, #244] ; (127f0 ) - 126fa: f017 fbbb bl 29e74 - 126fe: 4631 mov r1, r6 - 12700: 483a ldr r0, [pc, #232] ; (127ec ) - 12702: f019 ff21 bl 2c548 - 12706: 483a ldr r0, [pc, #232] ; (127f0 ) - 12708: f017 fbb4 bl 29e74 - 1270c: 212e movs r1, #46 ; 0x2e - 1270e: 4839 ldr r0, [pc, #228] ; (127f4 ) - 12710: f019 ff1a bl 2c548 - 12714: 4836 ldr r0, [pc, #216] ; (127f0 ) - 12716: f017 fbad bl 29e74 - 1271a: 212e movs r1, #46 ; 0x2e - 1271c: 4835 ldr r0, [pc, #212] ; (127f4 ) - 1271e: f019 ff13 bl 2c548 - 12722: 4833 ldr r0, [pc, #204] ; (127f0 ) - 12724: f017 fba6 bl 29e74 - 12728: 212e movs r1, #46 ; 0x2e - 1272a: 4832 ldr r0, [pc, #200] ; (127f4 ) - 1272c: f019 ff0c bl 2c548 - 12730: 482f ldr r0, [pc, #188] ; (127f0 ) - 12732: f017 fb9f bl 29e74 - 12736: 212e movs r1, #46 ; 0x2e - 12738: 482e ldr r0, [pc, #184] ; (127f4 ) - 1273a: f019 ff05 bl 2c548 - 1273e: 482c ldr r0, [pc, #176] ; (127f0 ) - 12740: f017 fb98 bl 29e74 - 12744: 2101 movs r1, #1 - 12746: 482c ldr r0, [pc, #176] ; (127f8 ) - 12748: f019 fefe bl 2c548 - 1274c: 2118 movs r1, #24 - 1274e: 482d ldr r0, [pc, #180] ; (12804 ) - 12750: f019 fefa bl 2c548 - 12754: 4826 ldr r0, [pc, #152] ; (127f0 ) - 12756: f017 fb8d bl 29e74 - 1275a: 2101 movs r1, #1 - 1275c: 4826 ldr r0, [pc, #152] ; (127f8 ) - 1275e: f019 fef3 bl 2c548 - 12762: 213f movs r1, #63 ; 0x3f - 12764: 4828 ldr r0, [pc, #160] ; (12808 ) - 12766: f019 feef bl 2c548 - 1276a: 4821 ldr r0, [pc, #132] ; (127f0 ) - 1276c: f017 fb82 bl 29e74 - 12770: 212e movs r1, #46 ; 0x2e - 12772: 4820 ldr r0, [pc, #128] ; (127f4 ) - 12774: f019 fee8 bl 2c548 - 12778: 481d ldr r0, [pc, #116] ; (127f0 ) - 1277a: f017 fb7b bl 29e74 - 1277e: 212e movs r1, #46 ; 0x2e - 12780: 481c ldr r0, [pc, #112] ; (127f4 ) - 12782: f019 fee1 bl 2c548 - 12786: 481a ldr r0, [pc, #104] ; (127f0 ) - 12788: f017 fb74 bl 29e74 - 1278c: 212e movs r1, #46 ; 0x2e - 1278e: 4819 ldr r0, [pc, #100] ; (127f4 ) - 12790: f019 feda bl 2c548 - 12794: 4816 ldr r0, [pc, #88] ; (127f0 ) - 12796: f017 fb6d bl 29e74 - 1279a: 212e movs r1, #46 ; 0x2e - 1279c: 4815 ldr r0, [pc, #84] ; (127f4 ) - 1279e: f019 fed3 bl 2c548 - 127a2: 4813 ldr r0, [pc, #76] ; (127f0 ) - 127a4: f017 fb66 bl 29e74 - 127a8: 4631 mov r1, r6 - 127aa: 4810 ldr r0, [pc, #64] ; (127ec ) - 127ac: f019 fecc bl 2c548 - 127b0: 480f ldr r0, [pc, #60] ; (127f0 ) - 127b2: f017 fb5f bl 29e74 - 127b6: e7fe b.n 127b6 + 1278a: 484f ldr r0, [pc, #316] ; (128c8 ) + 1278c: f017 fbe8 bl 29f60 + 12790: 212e movs r1, #46 ; 0x2e + 12792: 484e ldr r0, [pc, #312] ; (128cc ) + 12794: f019 ff4c bl 2c630 + 12798: 484b ldr r0, [pc, #300] ; (128c8 ) + 1279a: f017 fbe1 bl 29f60 + 1279e: 212e movs r1, #46 ; 0x2e + 127a0: 484a ldr r0, [pc, #296] ; (128cc ) + 127a2: f019 ff45 bl 2c630 + 127a6: 4848 ldr r0, [pc, #288] ; (128c8 ) + 127a8: f017 fbda bl 29f60 + 127ac: 212e movs r1, #46 ; 0x2e + 127ae: 4847 ldr r0, [pc, #284] ; (128cc ) + 127b0: f019 ff3e bl 2c630 + 127b4: 4844 ldr r0, [pc, #272] ; (128c8 ) + 127b6: f017 fbd3 bl 29f60 + 127ba: 212e movs r1, #46 ; 0x2e + 127bc: 4843 ldr r0, [pc, #268] ; (128cc ) + 127be: f019 ff37 bl 2c630 + 127c2: 4841 ldr r0, [pc, #260] ; (128c8 ) + 127c4: f017 fbcc bl 29f60 + 127c8: 4631 mov r1, r6 + 127ca: 483e ldr r0, [pc, #248] ; (128c4 ) + 127cc: f019 ff30 bl 2c630 + 127d0: 483d ldr r0, [pc, #244] ; (128c8 ) + 127d2: f017 fbc5 bl 29f60 + 127d6: 4631 mov r1, r6 + 127d8: 483a ldr r0, [pc, #232] ; (128c4 ) + 127da: f019 ff29 bl 2c630 + 127de: 483a ldr r0, [pc, #232] ; (128c8 ) + 127e0: f017 fbbe bl 29f60 + 127e4: 212e movs r1, #46 ; 0x2e + 127e6: 4839 ldr r0, [pc, #228] ; (128cc ) + 127e8: f019 ff22 bl 2c630 + 127ec: 4836 ldr r0, [pc, #216] ; (128c8 ) + 127ee: f017 fbb7 bl 29f60 + 127f2: 212e movs r1, #46 ; 0x2e + 127f4: 4835 ldr r0, [pc, #212] ; (128cc ) + 127f6: f019 ff1b bl 2c630 + 127fa: 4833 ldr r0, [pc, #204] ; (128c8 ) + 127fc: f017 fbb0 bl 29f60 + 12800: 212e movs r1, #46 ; 0x2e + 12802: 4832 ldr r0, [pc, #200] ; (128cc ) + 12804: f019 ff14 bl 2c630 + 12808: 482f ldr r0, [pc, #188] ; (128c8 ) + 1280a: f017 fba9 bl 29f60 + 1280e: 212e movs r1, #46 ; 0x2e + 12810: 482e ldr r0, [pc, #184] ; (128cc ) + 12812: f019 ff0d bl 2c630 + 12816: 482c ldr r0, [pc, #176] ; (128c8 ) + 12818: f017 fba2 bl 29f60 + 1281c: 2101 movs r1, #1 + 1281e: 482c ldr r0, [pc, #176] ; (128d0 ) + 12820: f019 ff06 bl 2c630 + 12824: 2118 movs r1, #24 + 12826: 482d ldr r0, [pc, #180] ; (128dc ) + 12828: f019 ff02 bl 2c630 + 1282c: 4826 ldr r0, [pc, #152] ; (128c8 ) + 1282e: f017 fb97 bl 29f60 + 12832: 2101 movs r1, #1 + 12834: 4826 ldr r0, [pc, #152] ; (128d0 ) + 12836: f019 fefb bl 2c630 + 1283a: 213f movs r1, #63 ; 0x3f + 1283c: 4828 ldr r0, [pc, #160] ; (128e0 ) + 1283e: f019 fef7 bl 2c630 + 12842: 4821 ldr r0, [pc, #132] ; (128c8 ) + 12844: f017 fb8c bl 29f60 + 12848: 212e movs r1, #46 ; 0x2e + 1284a: 4820 ldr r0, [pc, #128] ; (128cc ) + 1284c: f019 fef0 bl 2c630 + 12850: 481d ldr r0, [pc, #116] ; (128c8 ) + 12852: f017 fb85 bl 29f60 + 12856: 212e movs r1, #46 ; 0x2e + 12858: 481c ldr r0, [pc, #112] ; (128cc ) + 1285a: f019 fee9 bl 2c630 + 1285e: 481a ldr r0, [pc, #104] ; (128c8 ) + 12860: f017 fb7e bl 29f60 + 12864: 212e movs r1, #46 ; 0x2e + 12866: 4819 ldr r0, [pc, #100] ; (128cc ) + 12868: f019 fee2 bl 2c630 + 1286c: 4816 ldr r0, [pc, #88] ; (128c8 ) + 1286e: f017 fb77 bl 29f60 + 12872: 212e movs r1, #46 ; 0x2e + 12874: 4815 ldr r0, [pc, #84] ; (128cc ) + 12876: f019 fedb bl 2c630 + 1287a: 4813 ldr r0, [pc, #76] ; (128c8 ) + 1287c: f017 fb70 bl 29f60 + 12880: 4631 mov r1, r6 + 12882: 4810 ldr r0, [pc, #64] ; (128c4 ) + 12884: f019 fed4 bl 2c630 + 12888: 480f ldr r0, [pc, #60] ; (128c8 ) + 1288a: f017 fb69 bl 29f60 + 1288e: e7fe b.n 1288e pinMode(pin, BMC_BUTTON_PIN_MODE); - 127b8: 4628 mov r0, r5 - 127ba: 2102 movs r1, #2 - 127bc: f017 ff40 bl 2a640 + 12890: 4628 mov r0, r5 + 12892: 2102 movs r1, #2 + 12894: f017 ff48 bl 2a728 delay(1); - 127c0: 2001 movs r0, #1 - 127c2: e71f b.n 12604 + 12898: 2001 movs r0, #1 + 1289a: e71f b.n 126dc return bitRead(flags, bit); - 127c4: 7a22 ldrb r2, [r4, #8] + 1289c: 7a22 ldrb r2, [r4, #8] if(assignedFlags.read(BMC_BTN_FLAG_MUX_IN)){ - 127c6: 07d2 lsls r2, r2, #31 - 127c8: d503 bpl.n 127d2 + 1289e: 07d2 lsls r2, r2, #31 + 128a0: d503 bpl.n 128aa bitWrite(flags, bit, value); - 127ca: f023 0302 bic.w r3, r3, #2 - 127ce: 8163 strh r3, [r4, #10] + 128a2: f023 0302 bic.w r3, r3, #2 + 128a6: 8163 strh r3, [r4, #10] } - 127d0: bd70 pop {r4, r5, r6, pc} + 128a8: bd70 pop {r4, r5, r6, pc} return digitalRead(pin); - 127d2: 7820 ldrb r0, [r4, #0] - 127d4: f017 ff22 bl 2a61c - 127d8: 8963 ldrh r3, [r4, #10] - 127da: 2800 cmp r0, #0 - 127dc: f43f af1f beq.w 1261e - 127e0: e7f3 b.n 127ca + 128aa: 7820 ldrb r0, [r4, #0] + 128ac: f017 ff2a bl 2a704 + 128b0: 8963 ldrh r3, [r4, #10] + 128b2: 2800 cmp r0, #0 + 128b4: f43f af1f beq.w 126f6 + 128b8: e7f3 b.n 128a2 bitClear(flags, bit); - 127e2: f423 43c0 bic.w r3, r3, #24576 ; 0x6000 - 127e6: b29b uxth r3, r3 + 128ba: f423 43c0 bic.w r3, r3, #24576 ; 0x6000 + 128be: b29b uxth r3, r3 void write(uint8_t bit, bool value){ - 127e8: e7ef b.n 127ca - 127ea: bf00 nop - 127ec: 20003c58 .word 0x20003c58 - 127f0: 20004ba8 .word 0x20004ba8 - 127f4: 20001950 .word 0x20001950 - 127f8: 200023ec .word 0x200023ec - 127fc: 20001980 .word 0x20001980 - 12800: 20003b60 .word 0x20003b60 - 12804: 200019d0 .word 0x200019d0 - 12808: 200019ec .word 0x200019ec - -0001280c : + 128c0: e7ef b.n 128a2 + 128c2: bf00 nop + 128c4: 20003d18 .word 0x20003d18 + 128c8: 20004c68 .word 0x20004c68 + 128cc: 20001950 .word 0x20001950 + 128d0: 200023ec .word 0x200023ec + 128d4: 20001980 .word 0x20001980 + 128d8: 20003c20 .word 0x20003c20 + 128dc: 200019d0 .word 0x200019d0 + 128e0: 200019ec .word 0x200019ec + +000128e4 : bool update(){ - 1280c: b570 push {r4, r5, r6, lr} - 1280e: 4d41 ldr r5, [pc, #260] ; (12914 ) - 12810: 4604 mov r4, r0 + 128e4: b570 push {r4, r5, r6, lr} + 128e6: 4d41 ldr r5, [pc, #260] ; (129ec ) + 128e8: 4604 mov r4, r0 if((millis() - debounceTime) >= BMC_BUTTON_DEBOUNCE_TIME){ - 12812: 6842 ldr r2, [r0, #4] - 12814: 682b ldr r3, [r5, #0] - 12816: 1a9b subs r3, r3, r2 - 12818: 2b31 cmp r3, #49 ; 0x31 - 1281a: d824 bhi.n 12866 - 1281c: 7a03 ldrb r3, [r0, #8] + 128ea: 6842 ldr r2, [r0, #4] + 128ec: 682b ldr r3, [r5, #0] + 128ee: 1a9b subs r3, r3, r2 + 128f0: 2b31 cmp r3, #49 ; 0x31 + 128f2: d824 bhi.n 1293e + 128f4: 7a03 ldrb r3, [r0, #8] if(assignedFlags.read(BMC_BTN_FLAG_DOUBLE_PRESS_ENABLED)){ - 1281e: 079a lsls r2, r3, #30 + 128f6: 079a lsls r2, r3, #30 return bitRead(flags, bit); - 12820: f3c3 0040 ubfx r0, r3, #1, #1 - 12824: d501 bpl.n 1282a + 128f8: f3c3 0040 ubfx r0, r3, #1, #1 + 128fc: d501 bpl.n 12902 return (prevTime>0); - 12826: 69a2 ldr r2, [r4, #24] + 128fe: 69a2 ldr r2, [r4, #24] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 12828: b97a cbnz r2, 1284a + 12900: b97a cbnz r2, 12922 return (prevTime>0); - 1282a: 6922 ldr r2, [r4, #16] + 12902: 6922 ldr r2, [r4, #16] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 1282c: b122 cbz r2, 12838 - 1282e: 6829 ldr r1, [r5, #0] - 12830: 1a8a subs r2, r1, r2 - 12832: 89a1 ldrh r1, [r4, #12] - 12834: 428a cmp r2, r1 - 12836: d248 bcs.n 128ca + 12904: b122 cbz r2, 12910 + 12906: 6829 ldr r1, [r5, #0] + 12908: 1a8a subs r2, r1, r2 + 1290a: 89a1 ldrh r1, [r4, #12] + 1290c: 428a cmp r2, r1 + 1290e: d248 bcs.n 129a2 return (prevTime>0); - 12838: 6a23 ldr r3, [r4, #32] + 12910: 6a23 ldr r3, [r4, #32] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 1283a: b123 cbz r3, 12846 - 1283c: 682a ldr r2, [r5, #0] - 1283e: 8ba1 ldrh r1, [r4, #28] - 12840: 1ad3 subs r3, r2, r3 - 12842: 428b cmp r3, r1 - 12844: d22e bcs.n 128a4 - } - 12846: 2001 movs r0, #1 - 12848: bd70 pop {r4, r5, r6, pc} - 1284a: 6829 ldr r1, [r5, #0] - 1284c: 1a8a subs r2, r1, r2 - 1284e: 8aa1 ldrh r1, [r4, #20] - 12850: 428a cmp r2, r1 - 12852: d3ea bcc.n 1282a + 12912: b123 cbz r3, 1291e + 12914: 682a ldr r2, [r5, #0] + 12916: 8ba1 ldrh r1, [r4, #28] + 12918: 1ad3 subs r3, r2, r3 + 1291a: 428b cmp r3, r1 + 1291c: d22e bcs.n 1297c + } + 1291e: 2001 movs r0, #1 + 12920: bd70 pop {r4, r5, r6, pc} + 12922: 6829 ldr r1, [r5, #0] + 12924: 1a8a subs r2, r1, r2 + 12926: 8aa1 ldrh r1, [r4, #20] + 12928: 428a cmp r2, r1 + 1292a: d3ea bcc.n 12902 prevTime = 0; - 12854: 2200 movs r2, #0 - 12856: 61a2 str r2, [r4, #24] + 1292c: 2200 movs r2, #0 + 1292e: 61a2 str r2, [r4, #24] bitClear(flags, bit); - 12858: 8962 ldrh r2, [r4, #10] - 1285a: f422 7220 bic.w r2, r2, #640 ; 0x280 - 1285e: f442 7280 orr.w r2, r2, #256 ; 0x100 - 12862: 8162 strh r2, [r4, #10] + 12930: 8962 ldrh r2, [r4, #10] + 12932: f422 7220 bic.w r2, r2, #640 ; 0x280 + 12936: f442 7280 orr.w r2, r2, #256 ; 0x100 + 1293a: 8162 strh r2, [r4, #10] } - 12864: e7e1 b.n 1282a + 1293c: e7e1 b.n 12902 return bitRead(flags, bit); - 12866: 8943 ldrh r3, [r0, #10] - 12868: 682a ldr r2, [r5, #0] + 1293e: 8943 ldrh r3, [r0, #10] + 12940: 682a ldr r2, [r5, #0] if(flags.read(BMC_BTN_FLAG_PRESS_TRIGGERED)){ - 1286a: 0499 lsls r1, r3, #18 - 1286c: f3c3 0640 ubfx r6, r3, #1, #1 + 12942: 0499 lsls r1, r3, #18 + 12944: f3c3 0640 ubfx r6, r3, #1, #1 debounceTime = millis(); - 12870: 6042 str r2, [r0, #4] - 12872: f3c3 3040 ubfx r0, r3, #13, #1 + 12948: 6042 str r2, [r0, #4] + 1294a: f3c3 3040 ubfx r0, r3, #13, #1 if(flags.read(BMC_BTN_FLAG_PRESS_TRIGGERED)){ - 12876: d53c bpl.n 128f2 + 1294e: d53c bpl.n 129ca if(bitRead(flags, bit)){ - 12878: 045a lsls r2, r3, #17 - 1287a: d435 bmi.n 128e8 + 12950: 045a lsls r2, r3, #17 + 12952: d435 bmi.n 129c0 return false; - 1287c: 7a23 ldrb r3, [r4, #8] + 12954: 7a23 ldrb r3, [r4, #8] if(flags.read(BMC_BTN_FLAG_STATE) != readState()){ - 1287e: 4286 cmp r6, r0 - 12880: d0cd beq.n 1281e + 12956: 4286 cmp r6, r0 + 12958: d0cd beq.n 128f6 flags ^= 1UL << bit; - 12882: 8961 ldrh r1, [r4, #10] - 12884: f081 0202 eor.w r2, r1, #2 + 1295a: 8961 ldrh r1, [r4, #10] + 1295c: f081 0202 eor.w r2, r1, #2 if(flags.read(BMC_BTN_FLAG_STATE)){ - 12888: 0789 lsls r1, r1, #30 - 1288a: d405 bmi.n 12898 + 12960: 0789 lsls r1, r1, #30 + 12962: d405 bmi.n 12970 bitClear(flags, bit); - 1288c: f022 0210 bic.w r2, r2, #16 - 12890: f042 0209 orr.w r2, r2, #9 - 12894: 8162 strh r2, [r4, #10] + 12964: f022 0210 bic.w r2, r2, #16 + 12968: f042 0209 orr.w r2, r2, #9 + 1296c: 8162 strh r2, [r4, #10] } - 12896: e7c2 b.n 1281e + 1296e: e7c2 b.n 128f6 bitSet(flags, bit); - 12898: f022 0208 bic.w r2, r2, #8 - 1289c: f042 0211 orr.w r2, r2, #17 - 128a0: 8162 strh r2, [r4, #10] + 12970: f022 0208 bic.w r2, r2, #8 + 12974: f042 0211 orr.w r2, r2, #17 + 12978: 8162 strh r2, [r4, #10] } - 128a2: e7bc b.n 1281e + 1297a: e7bc b.n 128f6 bitSet(flags, bit); - 128a4: 8963 ldrh r3, [r4, #10] + 1297c: 8963 ldrh r3, [r4, #10] interval = value; - 128a6: 21fa movs r1, #250 ; 0xfa + 1297e: 21fa movs r1, #250 ; 0xfa if(bitRead(flags, bit)){ - 128a8: 7a22 ldrb r2, [r4, #8] + 12980: 7a22 ldrb r2, [r4, #8] bitSet(flags, bit); - 128aa: f043 0341 orr.w r3, r3, #65 ; 0x41 - 128ae: 6828 ldr r0, [r5, #0] - 128b0: 83a1 strh r1, [r4, #28] - 128b2: 8163 strh r3, [r4, #10] + 12982: f043 0341 orr.w r3, r3, #65 ; 0x41 + 12986: 6828 ldr r0, [r5, #0] + 12988: 83a1 strh r1, [r4, #28] + 1298a: 8163 strh r3, [r4, #10] if(bitRead(flags, bit)){ - 128b4: 0793 lsls r3, r2, #30 + 1298c: 0793 lsls r3, r2, #30 prevTime = (unsigned long) _BMCTiming::get(); - 128b6: 6220 str r0, [r4, #32] - 128b8: d5c5 bpl.n 12846 + 1298e: 6220 str r0, [r4, #32] + 12990: d5c5 bpl.n 1291e bitClear(flags, bit); - 128ba: f022 0202 bic.w r2, r2, #2 + 12992: f022 0202 bic.w r2, r2, #2 prevTime = 0; - 128be: 2300 movs r3, #0 + 12996: 2300 movs r3, #0 bitSet(flags, bit); - 128c0: f042 0220 orr.w r2, r2, #32 - 128c4: 61a3 str r3, [r4, #24] - 128c6: 7222 strb r2, [r4, #8] + 12998: f042 0220 orr.w r2, r2, #32 + 1299c: 61a3 str r3, [r4, #24] + 1299e: 7222 strb r2, [r4, #8] } - 128c8: e7bd b.n 12846 - 128ca: 8962 ldrh r2, [r4, #10] + 129a0: e7bd b.n 1291e + 129a2: 8962 ldrh r2, [r4, #10] prevTime = 0; - 128cc: 2100 movs r1, #0 - 128ce: f042 0220 orr.w r2, r2, #32 - 128d2: 6121 str r1, [r4, #16] - 128d4: 8162 strh r2, [r4, #10] + 129a4: 2100 movs r1, #0 + 129a6: f042 0220 orr.w r2, r2, #32 + 129aa: 6121 str r1, [r4, #16] + 129ac: 8162 strh r2, [r4, #10] if(bitRead(flags, bit)){ - 128d6: 2800 cmp r0, #0 - 128d8: d0ae beq.n 12838 + 129ae: 2800 cmp r0, #0 + 129b0: d0ae beq.n 12910 bitClear(flags, bit); - 128da: f023 0302 bic.w r3, r3, #2 - 128de: 61a1 str r1, [r4, #24] + 129b2: f023 0302 bic.w r3, r3, #2 + 129b6: 61a1 str r1, [r4, #24] bitSet(flags, bit); - 128e0: f043 0320 orr.w r3, r3, #32 - 128e4: 7223 strb r3, [r4, #8] + 129b8: f043 0320 orr.w r3, r3, #32 + 129bc: 7223 strb r3, [r4, #8] } - 128e6: e7a7 b.n 12838 + 129be: e7a7 b.n 12910 bitClear(flags, bit); - 128e8: f423 43c0 bic.w r3, r3, #24576 ; 0x6000 + 129c0: f423 43c0 bic.w r3, r3, #24576 ; 0x6000 return false; - 128ec: 2000 movs r0, #0 - 128ee: 8163 strh r3, [r4, #10] - 128f0: e7c4 b.n 1287c + 129c4: 2000 movs r0, #0 + 129c6: 8163 strh r3, [r4, #10] + 129c8: e7c4 b.n 12954 return bitRead(flags, bit); - 128f2: 7a23 ldrb r3, [r4, #8] + 129ca: 7a23 ldrb r3, [r4, #8] if(assignedFlags.read(BMC_BTN_FLAG_MUX_IN)){ - 128f4: 07d8 lsls r0, r3, #31 - 128f6: d505 bpl.n 12904 - 128f8: 7a60 ldrb r0, [r4, #9] - 128fa: f000 0001 and.w r0, r0, #1 + 129cc: 07d8 lsls r0, r3, #31 + 129ce: d505 bpl.n 129dc + 129d0: 7a60 ldrb r0, [r4, #9] + 129d2: f000 0001 and.w r0, r0, #1 return (_digitalRead()==BMC_BUTTON_CLOSED); - 128fe: f080 0001 eor.w r0, r0, #1 - 12902: e7bc b.n 1287e + 129d6: f080 0001 eor.w r0, r0, #1 + 129da: e7bc b.n 12956 return digitalRead(pin); - 12904: 7820 ldrb r0, [r4, #0] - 12906: f017 fe89 bl 2a61c - 1290a: 3800 subs r0, #0 - 1290c: 7a23 ldrb r3, [r4, #8] - 1290e: bf18 it ne - 12910: 2001 movne r0, #1 - 12912: e7f4 b.n 128fe - 12914: 2000bae8 .word 0x2000bae8 - -00012918 : + 129dc: 7820 ldrb r0, [r4, #0] + 129de: f017 fe91 bl 2a704 + 129e2: 3800 subs r0, #0 + 129e4: 7a23 ldrb r3, [r4, #8] + 129e6: bf18 it ne + 129e8: 2001 movne r0, #1 + 129ea: e7f4 b.n 129d6 + 129ec: 2000bb08 .word 0x2000bb08 + +000129f0 : uint8_t read(){ - 12918: b510 push {r4, lr} - 1291a: 4604 mov r4, r0 + 129f0: b510 push {r4, lr} + 129f2: 4604 mov r4, r0 if(update()){ - 1291c: f7ff ff76 bl 1280c - 12920: 2800 cmp r0, #0 - 12922: d038 beq.n 12996 - 12924: 8963 ldrh r3, [r4, #10] + 129f4: f7ff ff76 bl 128e4 + 129f8: 2800 cmp r0, #0 + 129fa: d038 beq.n 12a6e + 129fc: 8963 ldrh r3, [r4, #10] if(flags.read(BMC_BTN_FLAG_DOUBLE_PRESS_TIMEOUT)){ - 12926: 05da lsls r2, r3, #23 - 12928: 4619 mov r1, r3 - 1292a: d545 bpl.n 129b8 + 129fe: 05da lsls r2, r3, #23 + 12a00: 4619 mov r1, r3 + 12a02: d545 bpl.n 12a90 if(!flags.read(BMC_BTN_FLAG_DOUBLE_PRESS_TIMEOUT_RELEASE)){ - 1292c: 0598 lsls r0, r3, #22 - 1292e: ea4f 2263 mov.w r2, r3, asr #9 - 12932: d56c bpl.n 12a0e + 12a04: 0598 lsls r0, r3, #22 + 12a06: ea4f 2263 mov.w r2, r3, asr #9 + 12a0a: d56c bpl.n 12ae6 if(flags.read(BMC_BTN_FLAG_REASSIGNED)){ - 12934: f013 0f04 tst.w r3, #4 - 12938: f3c3 0080 ubfx r0, r3, #2, #1 - 1293c: f040 8145 bne.w 12bca + 12a0c: f013 0f04 tst.w r3, #4 + 12a10: f3c3 0080 ubfx r0, r3, #2, #1 + 12a14: f040 8145 bne.w 12ca2 if(activityDetected() && flags.read(BMC_BTN_FLAG_PRESSED)){ - 12940: 07da lsls r2, r3, #31 - 12942: f140 80e5 bpl.w 12b10 - 12946: 071a lsls r2, r3, #28 - 12948: d442 bmi.n 129d0 + 12a18: 07da lsls r2, r3, #31 + 12a1a: f140 80e5 bpl.w 12be8 + 12a1e: 071a lsls r2, r3, #28 + 12a20: d442 bmi.n 12aa8 if(activityDetected() && flags.read(BMC_BTN_FLAG_HOLD_COMPLETE)){ - 1294a: 068b lsls r3, r1, #26 - 1294c: d57b bpl.n 12a46 + 12a22: 068b lsls r3, r1, #26 + 12a24: d57b bpl.n 12b1e bitClear(flags, bit); - 1294e: f021 0120 bic.w r1, r1, #32 + 12a26: f021 0120 bic.w r1, r1, #32 prevTime = 0; - 12952: 2000 movs r0, #0 + 12a2a: 2000 movs r0, #0 return bitRead(flags, bit); - 12954: 7a62 ldrb r2, [r4, #9] + 12a2c: 7a62 ldrb r2, [r4, #9] bitSet(flags, bit); - 12956: f441 5380 orr.w r3, r1, #4096 ; 0x1000 - 1295a: 6120 str r0, [r4, #16] + 12a2e: f441 5380 orr.w r3, r1, #4096 ; 0x1000 + 12a32: 6120 str r0, [r4, #16] if(buttonFlags.read(BMC_BTN_FLAG_IGNORE_RELEASE_AFTER_HOLD)){ - 1295c: 06d0 lsls r0, r2, #27 + 12a34: 06d0 lsls r0, r2, #27 bitClear(flags, bit); - 1295e: b289 uxth r1, r1 + 12a36: b289 uxth r1, r1 bitSet(flags, bit); - 12960: 8163 strh r3, [r4, #10] - 12962: d502 bpl.n 1296a - 12964: f441 51c0 orr.w r1, r1, #6144 ; 0x1800 - 12968: 8161 strh r1, [r4, #10] + 12a38: 8163 strh r3, [r4, #10] + 12a3a: d502 bpl.n 12a42 + 12a3c: f441 51c0 orr.w r1, r1, #6144 ; 0x1800 + 12a40: 8161 strh r1, [r4, #10] return bitRead(flags, bit); - 1296a: 7a23 ldrb r3, [r4, #8] + 12a42: 7a23 ldrb r3, [r4, #8] if(assignedFlags.read(BMC_BTN_FLAG_DOUBLE_PRESS_ENABLED)){ - 1296c: 0799 lsls r1, r3, #30 - 1296e: d501 bpl.n 12974 - 12970: 2300 movs r3, #0 - 12972: 61a3 str r3, [r4, #24] + 12a44: 0799 lsls r1, r3, #30 + 12a46: d501 bpl.n 12a4c + 12a48: 2300 movs r3, #0 + 12a4a: 61a3 str r3, [r4, #24] continuousTimer.start(threshold*500); - 12974: 7863 ldrb r3, [r4, #1] - 12976: 4997 ldr r1, [pc, #604] ; (12bd4 ) - 12978: ebc3 1043 rsb r0, r3, r3, lsl #5 - 1297c: 6809 ldr r1, [r1, #0] - 1297e: eb03 0380 add.w r3, r3, r0, lsl #2 + 12a4c: 7863 ldrb r3, [r4, #1] + 12a4e: 4997 ldr r1, [pc, #604] ; (12cac ) + 12a50: ebc3 1043 rsb r0, r3, r3, lsl #5 + 12a54: 6809 ldr r1, [r1, #0] + 12a56: eb03 0380 add.w r3, r3, r0, lsl #2 prevTime = (unsigned long) _BMCTiming::get(); - 12982: 6221 str r1, [r4, #32] - 12984: 009b lsls r3, r3, #2 + 12a5a: 6221 str r1, [r4, #32] + 12a5c: 009b lsls r3, r3, #2 interval = value; - 12986: 83a3 strh r3, [r4, #28] + 12a5e: 83a3 strh r3, [r4, #28] if(holdComplete()){ - 12988: 0693 lsls r3, r2, #26 - 1298a: f100 810e bmi.w 12baa + 12a60: 0693 lsls r3, r2, #26 + 12a62: f100 810e bmi.w 12c82 releaseType = BMC_BTN_REL_TYPE_HOLD; - 1298e: 2302 movs r3, #2 + 12a66: 2302 movs r3, #2 return BMC_BUTTON_PRESS_TYPE_HOLD; - 12990: 2003 movs r0, #3 + 12a68: 2003 movs r0, #3 releaseType = BMC_BTN_REL_TYPE_HOLD; - 12992: 70a3 strb r3, [r4, #2] + 12a6a: 70a3 strb r3, [r4, #2] } - 12994: bd10 pop {r4, pc} + 12a6c: bd10 pop {r4, pc} if(releaseType != 0 && !isClosed()){ - 12996: 78a3 ldrb r3, [r4, #2] - 12998: b123 cbz r3, 129a4 - 1299a: 8963 ldrh r3, [r4, #10] - 1299c: 0799 lsls r1, r3, #30 - 1299e: f3c3 0240 ubfx r2, r3, #1, #1 - 129a2: d541 bpl.n 12a28 + 12a6e: 78a3 ldrb r3, [r4, #2] + 12a70: b123 cbz r3, 12a7c + 12a72: 8963 ldrh r3, [r4, #10] + 12a74: 0799 lsls r1, r3, #30 + 12a76: f3c3 0240 ubfx r2, r3, #1, #1 + 12a7a: d541 bpl.n 12b00 if(bitRead(flags, bit)){ - 129a4: 7a63 ldrb r3, [r4, #9] - 129a6: 079a lsls r2, r3, #30 - 129a8: f3c3 0040 ubfx r0, r3, #1, #1 - 129ac: d5f2 bpl.n 12994 + 12a7c: 7a63 ldrb r3, [r4, #9] + 12a7e: 079a lsls r2, r3, #30 + 12a80: f3c3 0040 ubfx r0, r3, #1, #1 + 12a84: d5f2 bpl.n 12a6c bitClear(flags, bit); - 129ae: f023 0302 bic.w r3, r3, #2 + 12a86: f023 0302 bic.w r3, r3, #2 return BMC_BUTTON_PRESS_TYPE_STATE_CHANGE; - 129b2: 200c movs r0, #12 - 129b4: 7263 strb r3, [r4, #9] + 12a8a: 200c movs r0, #12 + 12a8c: 7263 strb r3, [r4, #9] } - 129b6: bd10 pop {r4, pc} + 12a8e: bd10 pop {r4, pc} if(flags.read(BMC_BTN_FLAG_REASSIGNED)){ - 129b8: f013 0f04 tst.w r3, #4 + 12a90: f013 0f04 tst.w r3, #4 return bitRead(flags, bit); - 129bc: ea4f 02a3 mov.w r2, r3, asr #2 - 129c0: f3c3 0080 ubfx r0, r3, #2, #1 - 129c4: d13d bne.n 12a42 + 12a94: ea4f 02a3 mov.w r2, r3, asr #2 + 12a98: f3c3 0080 ubfx r0, r3, #2, #1 + 12a9c: d13d bne.n 12b1a if(activityDetected() && flags.read(BMC_BTN_FLAG_PRESSED)){ - 129c6: 07da lsls r2, r3, #31 - 129c8: f140 80a2 bpl.w 12b10 - 129cc: 071a lsls r2, r3, #28 - 129ce: d5bc bpl.n 1294a + 12a9e: 07da lsls r2, r3, #31 + 12aa0: f140 80a2 bpl.w 12be8 + 12aa4: 071a lsls r2, r3, #28 + 12aa6: d5bc bpl.n 12a22 holdTimer.start(threshold*250); - 129d0: 7862 ldrb r2, [r4, #1] + 12aa8: 7862 ldrb r2, [r4, #1] bitClear(flags, bit); - 129d2: f023 0108 bic.w r1, r3, #8 - 129d6: 8161 strh r1, [r4, #10] - 129d8: ebc2 1142 rsb r1, r2, r2, lsl #5 - 129dc: eb02 0281 add.w r2, r2, r1, lsl #2 - 129e0: 497c ldr r1, [pc, #496] ; (12bd4 ) - 129e2: 0052 lsls r2, r2, #1 - 129e4: 6809 ldr r1, [r1, #0] - 129e6: 81a2 strh r2, [r4, #12] + 12aaa: f023 0108 bic.w r1, r3, #8 + 12aae: 8161 strh r1, [r4, #10] + 12ab0: ebc2 1142 rsb r1, r2, r2, lsl #5 + 12ab4: eb02 0281 add.w r2, r2, r1, lsl #2 + 12ab8: 497c ldr r1, [pc, #496] ; (12cac ) + 12aba: 0052 lsls r2, r2, #1 + 12abc: 6809 ldr r1, [r1, #0] + 12abe: 81a2 strh r2, [r4, #12] return bitRead(flags, bit); - 129e8: 7a22 ldrb r2, [r4, #8] + 12ac0: 7a22 ldrb r2, [r4, #8] prevTime = (unsigned long) _BMCTiming::get(); - 129ea: 6121 str r1, [r4, #16] + 12ac2: 6121 str r1, [r4, #16] if(assignedFlags.read(BMC_BTN_FLAG_DOUBLE_PRESS_ENABLED) && doublePressTimer.active()){ - 129ec: 0791 lsls r1, r2, #30 - 129ee: d47b bmi.n 12ae8 + 12ac4: 0791 lsls r1, r2, #30 + 12ac6: d47b bmi.n 12bc0 bitSet(flags, bit); - 129f0: 7a63 ldrb r3, [r4, #9] + 12ac8: 7a63 ldrb r3, [r4, #9] if(assignedFlags.read(BMC_BTN_FLAG_ALTERNATE_PRESS_ENABLED)){ - 129f2: 0710 lsls r0, r2, #28 - 129f4: f043 0302 orr.w r3, r3, #2 - 129f8: 7263 strb r3, [r4, #9] - 129fa: d504 bpl.n 12a06 + 12aca: 0710 lsls r0, r2, #28 + 12acc: f043 0302 orr.w r3, r3, #2 + 12ad0: 7263 strb r3, [r4, #9] + 12ad2: d504 bpl.n 12ade if(bitRead(flags, bit)){ - 129fc: 06d1 lsls r1, r2, #27 - 129fe: d419 bmi.n 12a34 + 12ad4: 06d1 lsls r1, r2, #27 + 12ad6: d419 bmi.n 12b0c bitSet(flags, bit); - 12a00: f042 0210 orr.w r2, r2, #16 - 12a04: 7222 strb r2, [r4, #8] + 12ad8: f042 0210 orr.w r2, r2, #16 + 12adc: 7222 strb r2, [r4, #8] releaseType = BMC_BTN_REL_TYPE_PRESS; - 12a06: 2301 movs r3, #1 + 12ade: 2301 movs r3, #1 return BMC_BUTTON_PRESS_TYPE_PRESS; - 12a08: 4618 mov r0, r3 + 12ae0: 4618 mov r0, r3 releaseType = BMC_BTN_REL_TYPE_PRESS; - 12a0a: 70a3 strb r3, [r4, #2] + 12ae2: 70a3 strb r3, [r4, #2] } - 12a0c: bd10 pop {r4, pc} - 12a0e: f443 7300 orr.w r3, r3, #512 ; 0x200 + 12ae4: bd10 pop {r4, pc} + 12ae6: f443 7300 orr.w r3, r3, #512 ; 0x200 if(flags.read(BMC_BTN_FLAG_REASSIGNED)){ - 12a12: 075a lsls r2, r3, #29 - 12a14: 8163 strh r3, [r4, #10] - 12a16: d405 bmi.n 12a24 + 12aea: 075a lsls r2, r3, #29 + 12aec: 8163 strh r3, [r4, #10] + 12aee: d405 bmi.n 12afc if(activityDetected() && flags.read(BMC_BTN_FLAG_PRESSED)){ - 12a18: 07d8 lsls r0, r3, #31 - 12a1a: d503 bpl.n 12a24 - 12a1c: 0719 lsls r1, r3, #28 + 12af0: 07d8 lsls r0, r3, #31 + 12af2: d503 bpl.n 12afc + 12af4: 0719 lsls r1, r3, #28 return bitRead(flags, bit); - 12a1e: f3c3 00c0 ubfx r0, r3, #3, #1 - 12a22: d4d5 bmi.n 129d0 - 12a24: 7a22 ldrb r2, [r4, #8] - 12a26: e7e3 b.n 129f0 + 12af6: f3c3 00c0 ubfx r0, r3, #3, #1 + 12afa: d4d5 bmi.n 12aa8 + 12afc: 7a22 ldrb r2, [r4, #8] + 12afe: e7e3 b.n 12ac8 bitSet(flags, bit); - 12a28: 7a63 ldrb r3, [r4, #9] + 12b00: 7a63 ldrb r3, [r4, #9] return BMC_BUTTON_PRESS_TYPE_RELEASE; - 12a2a: 2002 movs r0, #2 + 12b02: 2002 movs r0, #2 releaseType = 0; - 12a2c: 70a2 strb r2, [r4, #2] - 12a2e: 4303 orrs r3, r0 - 12a30: 7263 strb r3, [r4, #9] + 12b04: 70a2 strb r2, [r4, #2] + 12b06: 4303 orrs r3, r0 + 12b08: 7263 strb r3, [r4, #9] } - 12a32: bd10 pop {r4, pc} + 12b0a: bd10 pop {r4, pc} bitClear(flags, bit); - 12a34: f022 0210 bic.w r2, r2, #16 + 12b0c: f022 0210 bic.w r2, r2, #16 releaseType = BMC_BTN_REL_TYPE_ALT; - 12a38: 2305 movs r3, #5 + 12b10: 2305 movs r3, #5 return BMC_BUTTON_PRESS_TYPE_ALT_PRESS; - 12a3a: 2006 movs r0, #6 - 12a3c: 7222 strb r2, [r4, #8] + 12b12: 2006 movs r0, #6 + 12b14: 7222 strb r2, [r4, #8] releaseType = BMC_BTN_REL_TYPE_ALT; - 12a3e: 70a3 strb r3, [r4, #2] + 12b16: 70a3 strb r3, [r4, #2] } - 12a40: bd10 pop {r4, pc} + 12b18: bd10 pop {r4, pc} if(activityDetected() && flags.read(BMC_BTN_FLAG_RELEASED)){ - 12a42: 07d8 lsls r0, r3, #31 - 12a44: d52e bpl.n 12aa4 - 12a46: 06cb lsls r3, r1, #27 - 12a48: d562 bpl.n 12b10 + 12b1a: 07d8 lsls r0, r3, #31 + 12b1c: d52e bpl.n 12b7c + 12b1e: 06cb lsls r3, r1, #27 + 12b20: d562 bpl.n 12be8 if(flags.read(BMC_BTN_FLAG_REASSIGNED)){ - 12a4a: 0748 lsls r0, r1, #29 - 12a4c: f3c1 0280 ubfx r2, r1, #2, #1 - 12a50: d47a bmi.n 12b48 + 12b22: 0748 lsls r0, r1, #29 + 12b24: f3c1 0280 ubfx r2, r1, #2, #1 + 12b28: d47a bmi.n 12c20 if(bitRead(flags, bit)){ - 12a52: 050b lsls r3, r1, #20 - 12a54: f3c1 20c0 ubfx r0, r1, #11, #1 - 12a58: f100 808c bmi.w 12b74 + 12b2a: 050b lsls r3, r1, #20 + 12b2c: f3c1 20c0 ubfx r0, r1, #11, #1 + 12b30: f100 808c bmi.w 12c4c return bitRead(flags, bit); - 12a5c: 7a23 ldrb r3, [r4, #8] + 12b34: 7a23 ldrb r3, [r4, #8] if(assignedFlags.read(BMC_BTN_FLAG_DOUBLE_PRESS_ENABLED)){ - 12a5e: f013 0f02 tst.w r3, #2 - 12a62: f3c3 0240 ubfx r2, r3, #1, #1 - 12a66: d078 beq.n 12b5a + 12b36: f013 0f02 tst.w r3, #2 + 12b3a: f3c3 0240 ubfx r2, r3, #1, #1 + 12b3e: d078 beq.n 12c32 if(flags.read(BMC_BTN_FLAG_DOUBLE_PRESS_COMPLETE)){ - 12a68: 054b lsls r3, r1, #21 - 12a6a: f3c1 2280 ubfx r2, r1, #10, #1 - 12a6e: f140 8090 bpl.w 12b92 + 12b40: 054b lsls r3, r1, #21 + 12b42: f3c1 2280 ubfx r2, r1, #10, #1 + 12b46: f140 8090 bpl.w 12c6a flags &= excluded; - 12a72: 4b59 ldr r3, [pc, #356] ; (12bd8 ) + 12b4a: 4b59 ldr r3, [pc, #356] ; (12cb0 ) prevTime = 0; - 12a74: 6120 str r0, [r4, #16] - 12a76: 400b ands r3, r1 + 12b4c: 6120 str r0, [r4, #16] + 12b4e: 400b ands r3, r1 continuousCount = 0; - 12a78: 70e0 strb r0, [r4, #3] - 12a7a: 61a0 str r0, [r4, #24] - 12a7c: 8163 strh r3, [r4, #10] - 12a7e: 2200 movs r2, #0 - 12a80: 6222 str r2, [r4, #32] + 12b50: 70e0 strb r0, [r4, #3] + 12b52: 61a0 str r0, [r4, #24] + 12b54: 8163 strh r3, [r4, #10] + 12b56: 2200 movs r2, #0 + 12b58: 6222 str r2, [r4, #32] if(flags.read(BMC_BTN_FLAG_DOUBLE_PRESS_TIMEOUT)){ - 12a82: 05d8 lsls r0, r3, #23 - 12a84: d50d bpl.n 12aa2 - 12a86: 125a asrs r2, r3, #9 + 12b5a: 05d8 lsls r0, r3, #23 + 12b5c: d50d bpl.n 12b7a + 12b5e: 125a asrs r2, r3, #9 if(flags.read(BMC_BTN_FLAG_DOUBLE_PRESS_TIMEOUT_RELEASE)){ - 12a88: 07d1 lsls r1, r2, #31 - 12a8a: d50a bpl.n 12aa2 - 12a8c: 2200 movs r2, #0 - 12a8e: 4852 ldr r0, [pc, #328] ; (12bd8 ) + 12b60: 07d1 lsls r1, r2, #31 + 12b62: d50a bpl.n 12b7a + 12b64: 2200 movs r2, #0 + 12b66: 4852 ldr r0, [pc, #328] ; (12cb0 ) return bitRead(flags, bit); - 12a90: 7a61 ldrb r1, [r4, #9] + 12b68: 7a61 ldrb r1, [r4, #9] flags &= excluded; - 12a92: 4003 ands r3, r0 - 12a94: 6122 str r2, [r4, #16] - 12a96: 6222 str r2, [r4, #32] + 12b6a: 4003 ands r3, r0 + 12b6c: 6122 str r2, [r4, #16] + 12b6e: 6222 str r2, [r4, #32] continuousCount = 0; - 12a98: 70e2 strb r2, [r4, #3] - 12a9a: 61a2 str r2, [r4, #24] + 12b70: 70e2 strb r2, [r4, #3] + 12b72: 61a2 str r2, [r4, #24] if(buttonFlags.read(BMC_BTN_FLAG_IGNORE_RELEASE_ON_DOUBLE_PRESS)){ - 12a9c: 064a lsls r2, r1, #25 - 12a9e: 8163 strh r3, [r4, #10] - 12aa0: d547 bpl.n 12b32 - 12aa2: 109a asrs r2, r3, #2 + 12b74: 064a lsls r2, r1, #25 + 12b76: 8163 strh r3, [r4, #10] + 12b78: d547 bpl.n 12c0a + 12b7a: 109a asrs r2, r3, #2 if(flags.read(BMC_BTN_FLAG_REASSIGNED)){ - 12aa4: f012 0201 ands.w r2, r2, #1 - 12aa8: f47f af75 bne.w 12996 + 12b7c: f012 0201 ands.w r2, r2, #1 + 12b80: f47f af75 bne.w 12a6e if(activityDetected() && flags.read(BMC_BTN_FLAG_DOUBLE_PRESSED)){ - 12aac: 07d8 lsls r0, r3, #31 - 12aae: f57f af72 bpl.w 12996 - 12ab2: 0619 lsls r1, r3, #24 - 12ab4: d465 bmi.n 12b82 + 12b84: 07d8 lsls r0, r3, #31 + 12b86: f57f af72 bpl.w 12a6e + 12b8a: 0619 lsls r1, r3, #24 + 12b8c: d465 bmi.n 12c5a if(activityDetected() && flags.read(BMC_BTN_FLAG_CONTINUOUS)){ - 12ab6: 0658 lsls r0, r3, #25 - 12ab8: f57f af6d bpl.w 12996 + 12b8e: 0658 lsls r0, r3, #25 + 12b90: f57f af6d bpl.w 12a6e continuousTimer.start(250-continuousCount); - 12abc: 78e2 ldrb r2, [r4, #3] + 12b94: 78e2 ldrb r2, [r4, #3] bitClear(flags, bit); - 12abe: f023 0c40 bic.w ip, r3, #64 ; 0x40 - 12ac2: 4844 ldr r0, [pc, #272] ; (12bd4 ) + 12b96: f023 0c40 bic.w ip, r3, #64 ; 0x40 + 12b9a: 4844 ldr r0, [pc, #272] ; (12cac ) releaseType = BMC_BTN_REL_TYPE_CONTINUOUS; - 12ac4: 2104 movs r1, #4 + 12b9c: 2104 movs r1, #4 continuousCount += 10; - 12ac6: f102 030a add.w r3, r2, #10 + 12b9e: f102 030a add.w r3, r2, #10 continuousTimer.start(250-continuousCount); - 12aca: f1c2 02fa rsb r2, r2, #250 ; 0xfa - 12ace: 6800 ldr r0, [r0, #0] - 12ad0: b2db uxtb r3, r3 - 12ad2: f8a4 c00a strh.w ip, [r4, #10] + 12ba2: f1c2 02fa rsb r2, r2, #250 ; 0xfa + 12ba6: 6800 ldr r0, [r0, #0] + 12ba8: b2db uxtb r3, r3 + 12baa: f8a4 c00a strh.w ip, [r4, #10] prevTime = (unsigned long) _BMCTiming::get(); - 12ad6: 6220 str r0, [r4, #32] + 12bae: 6220 str r0, [r4, #32] return BMC_BUTTON_PRESS_TYPE_CONTINUOUS; - 12ad8: 2005 movs r0, #5 - 12ada: 2b64 cmp r3, #100 ; 0x64 + 12bb0: 2005 movs r0, #5 + 12bb2: 2b64 cmp r3, #100 ; 0x64 releaseType = BMC_BTN_REL_TYPE_CONTINUOUS; - 12adc: 70a1 strb r1, [r4, #2] + 12bb4: 70a1 strb r1, [r4, #2] interval = value; - 12ade: 83a2 strh r2, [r4, #28] + 12bb6: 83a2 strh r2, [r4, #28] return BMC_BUTTON_PRESS_TYPE_CONTINUOUS; - 12ae0: bf28 it cs - 12ae2: 2364 movcs r3, #100 ; 0x64 - 12ae4: 70e3 strb r3, [r4, #3] + 12bb8: bf28 it cs + 12bba: 2364 movcs r3, #100 ; 0x64 + 12bbc: 70e3 strb r3, [r4, #3] } - 12ae6: bd10 pop {r4, pc} + 12bbe: bd10 pop {r4, pc} if(assignedFlags.read(BMC_BTN_FLAG_DOUBLE_PRESS_ENABLED) && doublePressTimer.active()){ - 12ae8: 69a1 ldr r1, [r4, #24] - 12aea: b139 cbz r1, 12afc + 12bc0: 69a1 ldr r1, [r4, #24] + 12bc2: b139 cbz r1, 12bd4 prevTime = 0; - 12aec: 2100 movs r1, #0 - 12aee: f423 7384 bic.w r3, r3, #264 ; 0x108 - 12af2: 61a1 str r1, [r4, #24] - 12af4: f240 4181 movw r1, #1153 ; 0x481 - 12af8: 4319 orrs r1, r3 - 12afa: 8161 strh r1, [r4, #10] + 12bc4: 2100 movs r1, #0 + 12bc6: f423 7384 bic.w r3, r3, #264 ; 0x108 + 12bca: 61a1 str r1, [r4, #24] + 12bcc: f240 4181 movw r1, #1153 ; 0x481 + 12bd0: 4319 orrs r1, r3 + 12bd2: 8161 strh r1, [r4, #10] if(pressed() || dblPressT){ - 12afc: 2800 cmp r0, #0 - 12afe: f47f af77 bne.w 129f0 + 12bd4: 2800 cmp r0, #0 + 12bd6: f47f af77 bne.w 12ac8 return bitRead(flags, bit); - 12b02: 8961 ldrh r1, [r4, #10] + 12bda: 8961 ldrh r1, [r4, #10] if(flags.read(BMC_BTN_FLAG_REASSIGNED)){ - 12b04: 0748 lsls r0, r1, #29 - 12b06: 460b mov r3, r1 - 12b08: d451 bmi.n 12bae + 12bdc: 0748 lsls r0, r1, #29 + 12bde: 460b mov r3, r1 + 12be0: d451 bmi.n 12c86 if(activityDetected() && flags.read(BMC_BTN_FLAG_HOLD_COMPLETE)){ - 12b0a: 07ca lsls r2, r1, #31 - 12b0c: f53f af1d bmi.w 1294a - 12b10: 460b mov r3, r1 - 12b12: e7b6 b.n 12a82 + 12be2: 07ca lsls r2, r1, #31 + 12be4: f53f af1d bmi.w 12a22 + 12be8: 460b mov r3, r1 + 12bea: e7b6 b.n 12b5a flags &= excluded; - 12b14: 4830 ldr r0, [pc, #192] ; (12bd8 ) - 12b16: 2200 movs r2, #0 - 12b18: 4008 ands r0, r1 + 12bec: 4830 ldr r0, [pc, #192] ; (12cb0 ) + 12bee: 2200 movs r2, #0 + 12bf0: 4008 ands r0, r1 if(bitRead(flags, bit)){ - 12b1a: 0699 lsls r1, r3, #26 - 12b1c: 6122 str r2, [r4, #16] - 12b1e: 6222 str r2, [r4, #32] + 12bf2: 0699 lsls r1, r3, #26 + 12bf4: 6122 str r2, [r4, #16] + 12bf6: 6222 str r2, [r4, #32] continuousCount = 0; - 12b20: 70e2 strb r2, [r4, #3] + 12bf8: 70e2 strb r2, [r4, #3] flags &= excluded; - 12b22: 8160 strh r0, [r4, #10] + 12bfa: 8160 strh r0, [r4, #10] if(bitRead(flags, bit)){ - 12b24: d505 bpl.n 12b32 + 12bfc: d505 bpl.n 12c0a bitClear(flags, bit); - 12b26: f023 0320 bic.w r3, r3, #32 - 12b2a: 61a2 str r2, [r4, #24] + 12bfe: f023 0320 bic.w r3, r3, #32 + 12c02: 61a2 str r2, [r4, #24] bitSet(flags, bit); - 12b2c: f043 0302 orr.w r3, r3, #2 - 12b30: 7223 strb r3, [r4, #8] + 12c04: f043 0302 orr.w r3, r3, #2 + 12c08: 7223 strb r3, [r4, #8] switch(releaseType){ - 12b32: 78a0 ldrb r0, [r4, #2] - 12b34: 1e43 subs r3, r0, #1 - 12b36: 2b04 cmp r3, #4 - 12b38: d802 bhi.n 12b40 - 12b3a: 3006 adds r0, #6 - 12b3c: b2c0 uxtb r0, r0 - } - 12b3e: bd10 pop {r4, pc} + 12c0a: 78a0 ldrb r0, [r4, #2] + 12c0c: 1e43 subs r3, r0, #1 + 12c0e: 2b04 cmp r3, #4 + 12c10: d802 bhi.n 12c18 + 12c12: 3006 adds r0, #6 + 12c14: b2c0 uxtb r0, r0 + } + 12c16: bd10 pop {r4, pc} releaseType = 0; - 12b40: 2300 movs r3, #0 + 12c18: 2300 movs r3, #0 return BMC_BUTTON_PRESS_TYPE_RELEASE; - 12b42: 2002 movs r0, #2 + 12c1a: 2002 movs r0, #2 releaseType = 0; - 12b44: 70a3 strb r3, [r4, #2] + 12c1c: 70a3 strb r3, [r4, #2] } - 12b46: bd10 pop {r4, pc} + 12c1e: bd10 pop {r4, pc} flags &= excluded; - 12b48: 4b23 ldr r3, [pc, #140] ; (12bd8 ) - 12b4a: 2200 movs r2, #0 - 12b4c: 400b ands r3, r1 - 12b4e: 6122 str r2, [r4, #16] - 12b50: 6222 str r2, [r4, #32] - 12b52: 61a2 str r2, [r4, #24] - 12b54: 8163 strh r3, [r4, #10] + 12c20: 4b23 ldr r3, [pc, #140] ; (12cb0 ) + 12c22: 2200 movs r2, #0 + 12c24: 400b ands r3, r1 + 12c26: 6122 str r2, [r4, #16] + 12c28: 6222 str r2, [r4, #32] + 12c2a: 61a2 str r2, [r4, #24] + 12c2c: 8163 strh r3, [r4, #10] releaseType = 0; - 12b56: 8062 strh r2, [r4, #2] + 12c2e: 8062 strh r2, [r4, #2] return false; - 12b58: e793 b.n 12a82 + 12c30: e793 b.n 12b5a return bitRead(flags, bit); - 12b5a: 7a60 ldrb r0, [r4, #9] + 12c32: 7a60 ldrb r0, [r4, #9] return (buttonFlags.read(BMC_BTN_FLAG_IGNORE_RELEASE_AFTER_HOLD) && flags.read(BMC_BTN_FLAG_IN_HOLD_POSITION)); - 12b5c: 06c0 lsls r0, r0, #27 - 12b5e: d5d9 bpl.n 12b14 - 12b60: 04c8 lsls r0, r1, #19 - 12b62: d5d7 bpl.n 12b14 + 12c34: 06c0 lsls r0, r0, #27 + 12c36: d5d9 bpl.n 12bec + 12c38: 04c8 lsls r0, r1, #19 + 12c3a: d5d7 bpl.n 12bec flags &= excluded; - 12b64: 4b1c ldr r3, [pc, #112] ; (12bd8 ) - 12b66: 6122 str r2, [r4, #16] - 12b68: 400b ands r3, r1 - 12b6a: 6222 str r2, [r4, #32] - 12b6c: 61a2 str r2, [r4, #24] + 12c3c: 4b1c ldr r3, [pc, #112] ; (12cb0 ) + 12c3e: 6122 str r2, [r4, #16] + 12c40: 400b ands r3, r1 + 12c42: 6222 str r2, [r4, #32] + 12c44: 61a2 str r2, [r4, #24] releaseType = 0; - 12b6e: 8062 strh r2, [r4, #2] - 12b70: 8163 strh r3, [r4, #10] + 12c46: 8062 strh r2, [r4, #2] + 12c48: 8163 strh r3, [r4, #10] return false; - 12b72: e786 b.n 12a82 - 12b74: 4b18 ldr r3, [pc, #96] ; (12bd8 ) - 12b76: 6122 str r2, [r4, #16] - 12b78: 400b ands r3, r1 - 12b7a: 6222 str r2, [r4, #32] + 12c4a: e786 b.n 12b5a + 12c4c: 4b18 ldr r3, [pc, #96] ; (12cb0 ) + 12c4e: 6122 str r2, [r4, #16] + 12c50: 400b ands r3, r1 + 12c52: 6222 str r2, [r4, #32] releaseType = 0; - 12b7c: 8062 strh r2, [r4, #2] - 12b7e: 8163 strh r3, [r4, #10] + 12c54: 8062 strh r2, [r4, #2] + 12c56: 8163 strh r3, [r4, #10] return false; - 12b80: e77f b.n 12a82 + 12c58: e77f b.n 12b5a bitClear(flags, bit); - 12b82: f023 0380 bic.w r3, r3, #128 ; 0x80 + 12c5a: f023 0380 bic.w r3, r3, #128 ; 0x80 releaseType = BMC_BTN_REL_TYPE_DOUBLE_PRESS; - 12b86: 2103 movs r1, #3 + 12c5e: 2103 movs r1, #3 return BMC_BUTTON_PRESS_TYPE_DOUBLE_PRESS; - 12b88: 2004 movs r0, #4 - 12b8a: 61a2 str r2, [r4, #24] - 12b8c: 8163 strh r3, [r4, #10] + 12c60: 2004 movs r0, #4 + 12c62: 61a2 str r2, [r4, #24] + 12c64: 8163 strh r3, [r4, #10] releaseType = BMC_BTN_REL_TYPE_DOUBLE_PRESS; - 12b8e: 70a1 strb r1, [r4, #2] + 12c66: 70a1 strb r1, [r4, #2] } - 12b90: bd10 pop {r4, pc} - 12b92: f021 0311 bic.w r3, r1, #17 + 12c68: bd10 pop {r4, pc} + 12c6a: f021 0311 bic.w r3, r1, #17 if(doublePressTimer.active()){ - 12b96: 69a0 ldr r0, [r4, #24] - 12b98: 6122 str r2, [r4, #16] - 12b9a: b29b uxth r3, r3 - 12b9c: 8163 strh r3, [r4, #10] - 12b9e: b150 cbz r0, 12bb6 + 12c6e: 69a0 ldr r0, [r4, #24] + 12c70: 6122 str r2, [r4, #16] + 12c72: b29b uxth r3, r3 + 12c74: 8163 strh r3, [r4, #10] + 12c76: b150 cbz r0, 12c8e bitSet(flags, bit); - 12ba0: f043 0381 orr.w r3, r3, #129 ; 0x81 - 12ba4: 61a2 str r2, [r4, #24] - 12ba6: 8163 strh r3, [r4, #10] - 12ba8: e769 b.n 12a7e + 12c78: f043 0381 orr.w r3, r3, #129 ; 0x81 + 12c7c: 61a2 str r2, [r4, #24] + 12c7e: 8163 strh r3, [r4, #10] + 12c80: e769 b.n 12b56 return bitRead(flags, bit); - 12baa: 8961 ldrh r1, [r4, #10] - 12bac: 460b mov r3, r1 + 12c82: 8961 ldrh r1, [r4, #10] + 12c84: 460b mov r3, r1 if(activityDetected() && flags.read(BMC_BTN_FLAG_RELEASED)){ - 12bae: 07ca lsls r2, r1, #31 - 12bb0: f57f af67 bpl.w 12a82 - 12bb4: e747 b.n 12a46 - 12bb6: 4b07 ldr r3, [pc, #28] ; (12bd4 ) + 12c86: 07ca lsls r2, r1, #31 + 12c88: f57f af67 bpl.w 12b5a + 12c8c: e747 b.n 12b1e + 12c8e: 4b07 ldr r3, [pc, #28] ; (12cac ) bitClear(flags, bit); - 12bb8: f021 0191 bic.w r1, r1, #145 ; 0x91 + 12c90: f021 0191 bic.w r1, r1, #145 ; 0x91 interval = value; - 12bbc: 20fa movs r0, #250 ; 0xfa - 12bbe: 681a ldr r2, [r3, #0] - 12bc0: b28b uxth r3, r1 - 12bc2: 82a0 strh r0, [r4, #20] + 12c94: 20fa movs r0, #250 ; 0xfa + 12c96: 681a ldr r2, [r3, #0] + 12c98: b28b uxth r3, r1 + 12c9a: 82a0 strh r0, [r4, #20] prevTime = (unsigned long) _BMCTiming::get(); - 12bc4: 61a2 str r2, [r4, #24] - 12bc6: 8163 strh r3, [r4, #10] - 12bc8: e759 b.n 12a7e - 12bca: 07d8 lsls r0, r3, #31 - 12bcc: f53f af3b bmi.w 12a46 - 12bd0: e75a b.n 12a88 - 12bd2: bf00 nop - 12bd4: 2000bae8 .word 0x2000bae8 - 12bd8: ffff8002 .word 0xffff8002 - -00012bdc : + 12c9c: 61a2 str r2, [r4, #24] + 12c9e: 8163 strh r3, [r4, #10] + 12ca0: e759 b.n 12b56 + 12ca2: 07d8 lsls r0, r3, #31 + 12ca4: f53f af3b bmi.w 12b1e + 12ca8: e75a b.n 12b60 + 12caa: bf00 nop + 12cac: 2000bb08 .word 0x2000bb08 + 12cb0: ffff8002 .word 0xffff8002 + +00012cb4 : bool read(uint8_t n, uint8_t trigger, bool state){ - 12bdc: b570 push {r4, r5, r6, lr} + 12cb4: b570 push {r4, r5, r6, lr} return bitRead(flags, bit); - 12bde: f890 c00c ldrb.w ip, [r0, #12] + 12cb6: f890 c00c ldrb.w ip, [r0, #12] if(callback.buttonDualPress){ - 12be2: 6905 ldr r5, [r0, #16] + 12cba: 6905 ldr r5, [r0, #16] if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 12be4: f01c 0401 ands.w r4, ip, #1 - 12be8: d11a bne.n 12c20 + 12cbc: f01c 0401 ands.w r4, ip, #1 + 12cc0: d11a bne.n 12cf8 if(callback.buttonDualPress){ - 12bea: 6aad ldr r5, [r5, #40] ; 0x28 - 12bec: b1b5 cbz r5, 12c1c + 12cc2: 6aad ldr r5, [r5, #40] ; 0x28 + 12cc4: b1b5 cbz r5, 12cf4 if(flags.read(BMC_BUTTONS_DUAL_WAITING_FOR_RELEASE)){ - 12bee: f01c 0f02 tst.w ip, #2 - 12bf2: f3cc 0540 ubfx r5, ip, #1, #1 - 12bf6: d019 beq.n 12c2c + 12cc6: f01c 0f02 tst.w ip, #2 + 12cca: f3cc 0540 ubfx r5, ip, #1, #1 + 12cce: d019 beq.n 12d04 if(n==releaseA || n==releaseB){ - 12bf8: f990 4001 ldrsb.w r4, [r0, #1] - 12bfc: 42a1 cmp r1, r4 - 12bfe: d040 beq.n 12c82 - 12c00: f990 4002 ldrsb.w r4, [r0, #2] - 12c04: 42a1 cmp r1, r4 - 12c06: d10e bne.n 12c26 + 12cd0: f990 4001 ldrsb.w r4, [r0, #1] + 12cd4: 42a1 cmp r1, r4 + 12cd6: d040 beq.n 12d5a + 12cd8: f990 4002 ldrsb.w r4, [r0, #2] + 12cdc: 42a1 cmp r1, r4 + 12cde: d10e bne.n 12cfe if(state || trigger!=BMC_BUTTON_PRESS_TYPE_RELEASE){ - 12c08: 2a02 cmp r2, #2 - 12c0a: d106 bne.n 12c1a - 12c0c: b92b cbnz r3, 12c1a + 12ce0: 2a02 cmp r2, #2 + 12ce2: d106 bne.n 12cf2 + 12ce4: b92b cbnz r3, 12cf2 releaseB = -1; - 12c0e: 23ff movs r3, #255 ; 0xff - 12c10: 7083 strb r3, [r0, #2] + 12ce6: 23ff movs r3, #255 ; 0xff + 12ce8: 7083 strb r3, [r0, #2] if(releaseA==-1 && releaseB==-1){ - 12c12: 6802 ldr r2, [r0, #0] - 12c14: 4b3a ldr r3, [pc, #232] ; (12d00 ) - 12c16: 4393 bics r3, r2 - 12c18: d04b beq.n 12cb2 + 12cea: 6802 ldr r2, [r0, #0] + 12cec: 4b3a ldr r3, [pc, #232] ; (12dd8 ) + 12cee: 4393 bics r3, r2 + 12cf0: d04b beq.n 12d8a return true; - 12c1a: 2401 movs r4, #1 + 12cf2: 2401 movs r4, #1 } - 12c1c: 4620 mov r0, r4 - 12c1e: bd70 pop {r4, r5, r6, pc} + 12cf4: 4620 mov r0, r4 + 12cf6: bd70 pop {r4, r5, r6, pc} if(callback.globalButtonDualPress){ - 12c20: 6aed ldr r5, [r5, #44] ; 0x2c - 12c22: 2d00 cmp r5, #0 - 12c24: d1e3 bne.n 12bee + 12cf8: 6aed ldr r5, [r5, #44] ; 0x2c + 12cfa: 2d00 cmp r5, #0 + 12cfc: d1e3 bne.n 12cc6 return false; - 12c26: 2400 movs r4, #0 + 12cfe: 2400 movs r4, #0 } - 12c28: 4620 mov r0, r4 - 12c2a: bd70 pop {r4, r5, r6, pc} + 12d00: 4620 mov r0, r4 + 12d02: bd70 pop {r4, r5, r6, pc} if(state && globals.getButtonStateBit(flags.read(BMC_BUTTONS_DUAL_GLOBAL),n) != state){ - 12c2c: 2b00 cmp r3, #0 - 12c2e: d0fa beq.n 12c26 - 12c30: 6942 ldr r2, [r0, #20] - 12c32: b28d uxth r5, r1 + 12d04: 2b00 cmp r3, #0 + 12d06: d0fa beq.n 12cfe + 12d08: 6942 ldr r2, [r0, #20] + 12d0a: b28d uxth r5, r1 if(isGlobal){ - 12c34: 2c00 cmp r4, #0 - 12c36: d032 beq.n 12c9e + 12d0c: 2c00 cmp r4, #0 + 12d0e: d032 beq.n 12d76 return bitRead(value[mask], bit); - 12c38: 092c lsrs r4, r5, #4 - 12c3a: eb02 0244 add.w r2, r2, r4, lsl #1 - 12c3e: 8fd4 ldrh r4, [r2, #62] ; 0x3e - 12c40: f001 020f and.w r2, r1, #15 - 12c44: 4114 asrs r4, r2 - 12c46: f004 0401 and.w r4, r4, #1 - 12c4a: 2c00 cmp r4, #0 - 12c4c: d1eb bne.n 12c26 + 12d10: 092c lsrs r4, r5, #4 + 12d12: eb02 0244 add.w r2, r2, r4, lsl #1 + 12d16: 8fd4 ldrh r4, [r2, #62] ; 0x3e + 12d18: f001 020f and.w r2, r1, #15 + 12d1c: 4114 asrs r4, r2 + 12d1e: f004 0401 and.w r4, r4, #1 + 12d22: 2c00 cmp r4, #0 + 12d24: d1eb bne.n 12cfe if(last>=0 && last!=n){ - 12c4e: f990 2000 ldrsb.w r2, [r0] - 12c52: 2a00 cmp r2, #0 - 12c54: db1c blt.n 12c90 - 12c56: 428a cmp r2, r1 - 12c58: d01a beq.n 12c90 + 12d26: f990 2000 ldrsb.w r2, [r0] + 12d2a: 2a00 cmp r2, #0 + 12d2c: db1c blt.n 12d68 + 12d2e: 428a cmp r2, r1 + 12d30: d01a beq.n 12d68 bitSet(flags, bit); - 12c5a: f04c 0c02 orr.w ip, ip, #2 + 12d32: f04c 0c02 orr.w ip, ip, #2 releaseA = n; - 12c5e: 7041 strb r1, [r0, #1] + 12d36: 7041 strb r1, [r0, #1] prevTime = 0; - 12c60: 6084 str r4, [r0, #8] + 12d38: 6084 str r4, [r0, #8] releaseB = last; - 12c62: 7082 strb r2, [r0, #2] - 12c64: f880 c00c strb.w ip, [r0, #12] + 12d3a: 7082 strb r2, [r0, #2] + 12d3c: f880 c00c strb.w ip, [r0, #12] if(last > n){ - 12c68: dd2d ble.n 12cc6 + 12d40: dd2d ble.n 12d9e } } return false; } void triggerCallback(uint8_t btn1, uint8_t btn2){ if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 12c6a: f01c 0401 ands.w r4, ip, #1 - 12c6e: d136 bne.n 12cde + 12d42: f01c 0401 ands.w r4, ip, #1 + 12d46: d136 bne.n 12db6 if(callback.buttonDualPress){ - 12c70: 6901 ldr r1, [r0, #16] - 12c72: 6a8e ldr r6, [r1, #40] ; 0x28 - 12c74: 2e00 cmp r6, #0 - 12c76: d0d0 beq.n 12c1a + 12d48: 6901 ldr r1, [r0, #16] + 12d4a: 6a8e ldr r6, [r1, #40] ; 0x28 + 12d4c: 2e00 cmp r6, #0 + 12d4e: d0d0 beq.n 12cf2 callback.buttonDualPress(btn1, btn2); - 12c78: b291 uxth r1, r2 - 12c7a: 4628 mov r0, r5 + 12d50: b291 uxth r1, r2 + 12d52: 4628 mov r0, r5 return true; - 12c7c: 461c mov r4, r3 + 12d54: 461c mov r4, r3 callback.buttonDualPress(btn1, btn2); - 12c7e: 47b0 blx r6 - 12c80: e7cc b.n 12c1c + 12d56: 47b0 blx r6 + 12d58: e7cc b.n 12cf4 if(state || trigger!=BMC_BUTTON_PRESS_TYPE_RELEASE){ - 12c82: 2a02 cmp r2, #2 - 12c84: d1c9 bne.n 12c1a - 12c86: 2b00 cmp r3, #0 - 12c88: d1c7 bne.n 12c1a + 12d5a: 2a02 cmp r2, #2 + 12d5c: d1c9 bne.n 12cf2 + 12d5e: 2b00 cmp r3, #0 + 12d60: d1c7 bne.n 12cf2 releaseA = -1; - 12c8a: 23ff movs r3, #255 ; 0xff - 12c8c: 7043 strb r3, [r0, #1] - 12c8e: e7c0 b.n 12c12 - 12c90: 4b1c ldr r3, [pc, #112] ; (12d04 ) + 12d62: 23ff movs r3, #255 ; 0xff + 12d64: 7043 strb r3, [r0, #1] + 12d66: e7c0 b.n 12cea + 12d68: 4b1c ldr r3, [pc, #112] ; (12ddc ) interval = value; - 12c92: 224b movs r2, #75 ; 0x4b + 12d6a: 224b movs r2, #75 ; 0x4b last = n; - 12c94: 7001 strb r1, [r0, #0] - 12c96: 681b ldr r3, [r3, #0] - 12c98: 8082 strh r2, [r0, #4] + 12d6c: 7001 strb r1, [r0, #0] + 12d6e: 681b ldr r3, [r3, #0] + 12d70: 8082 strh r2, [r0, #4] prevTime = (unsigned long) _BMCTiming::get(); - 12c9a: 6083 str r3, [r0, #8] - } - 12c9c: e7be b.n 12c1c - 12c9e: 092c lsrs r4, r5, #4 - 12ca0: eb02 0244 add.w r2, r2, r4, lsl #1 - 12ca4: 8f54 ldrh r4, [r2, #58] ; 0x3a - 12ca6: f001 020f and.w r2, r1, #15 - 12caa: 4114 asrs r4, r2 - 12cac: f004 0401 and.w r4, r4, #1 + 12d72: 6083 str r3, [r0, #8] + } + 12d74: e7be b.n 12cf4 + 12d76: 092c lsrs r4, r5, #4 + 12d78: eb02 0244 add.w r2, r2, r4, lsl #1 + 12d7c: 8f54 ldrh r4, [r2, #58] ; 0x3a + 12d7e: f001 020f and.w r2, r1, #15 + 12d82: 4114 asrs r4, r2 + 12d84: f004 0401 and.w r4, r4, #1 return buttonStates.getBit(n); - 12cb0: e7cb b.n 12c4a + 12d88: e7cb b.n 12d22 last = -1; - 12cb2: f64f 73ff movw r3, #65535 ; 0xffff + 12d8a: f64f 73ff movw r3, #65535 ; 0xffff bitClear(flags, bit); - 12cb6: f02c 0c02 bic.w ip, ip, #2 + 12d8e: f02c 0c02 bic.w ip, ip, #2 return true; - 12cba: 462c mov r4, r5 + 12d92: 462c mov r4, r5 last = -1; - 12cbc: 8003 strh r3, [r0, #0] + 12d94: 8003 strh r3, [r0, #0] releaseB = -1; - 12cbe: 7083 strb r3, [r0, #2] - 12cc0: f880 c00c strb.w ip, [r0, #12] + 12d96: 7083 strb r3, [r0, #2] + 12d98: f880 c00c strb.w ip, [r0, #12] } - 12cc4: e7aa b.n 12c1c + 12d9c: e7aa b.n 12cf4 if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 12cc6: f01c 0401 ands.w r4, ip, #1 - 12cca: d110 bne.n 12cee + 12d9e: f01c 0401 ands.w r4, ip, #1 + 12da2: d110 bne.n 12dc6 if(callback.buttonDualPress){ - 12ccc: 6901 ldr r1, [r0, #16] - 12cce: 6a8e ldr r6, [r1, #40] ; 0x28 - 12cd0: 2e00 cmp r6, #0 - 12cd2: d0a2 beq.n 12c1a + 12da4: 6901 ldr r1, [r0, #16] + 12da6: 6a8e ldr r6, [r1, #40] ; 0x28 + 12da8: 2e00 cmp r6, #0 + 12daa: d0a2 beq.n 12cf2 callback.buttonDualPress(btn1, btn2); - 12cd4: 4629 mov r1, r5 - 12cd6: b290 uxth r0, r2 + 12dac: 4629 mov r1, r5 + 12dae: b290 uxth r0, r2 return true; - 12cd8: 461c mov r4, r3 + 12db0: 461c mov r4, r3 callback.buttonDualPress(btn1, btn2); - 12cda: 47b0 blx r6 - 12cdc: e79e b.n 12c1c + 12db2: 47b0 blx r6 + 12db4: e79e b.n 12cf4 } } else { if(callback.globalButtonDualPress){ - 12cde: 6903 ldr r3, [r0, #16] - 12ce0: 6adb ldr r3, [r3, #44] ; 0x2c - 12ce2: 2b00 cmp r3, #0 - 12ce4: d099 beq.n 12c1a + 12db6: 6903 ldr r3, [r0, #16] + 12db8: 6adb ldr r3, [r3, #44] ; 0x2c + 12dba: 2b00 cmp r3, #0 + 12dbc: d099 beq.n 12cf2 callback.globalButtonDualPress(btn1, btn2); - 12ce6: b291 uxth r1, r2 - 12ce8: 4628 mov r0, r5 - 12cea: 4798 blx r3 - 12cec: e796 b.n 12c1c + 12dbe: b291 uxth r1, r2 + 12dc0: 4628 mov r0, r5 + 12dc2: 4798 blx r3 + 12dc4: e796 b.n 12cf4 if(callback.globalButtonDualPress){ - 12cee: 6903 ldr r3, [r0, #16] - 12cf0: 6adb ldr r3, [r3, #44] ; 0x2c - 12cf2: 2b00 cmp r3, #0 - 12cf4: d091 beq.n 12c1a + 12dc6: 6903 ldr r3, [r0, #16] + 12dc8: 6adb ldr r3, [r3, #44] ; 0x2c + 12dca: 2b00 cmp r3, #0 + 12dcc: d091 beq.n 12cf2 callback.globalButtonDualPress(btn1, btn2); - 12cf6: 4629 mov r1, r5 - 12cf8: b290 uxth r0, r2 - 12cfa: 4798 blx r3 - 12cfc: e78e b.n 12c1c - 12cfe: bf00 nop - 12d00: 00ffff00 .word 0x00ffff00 - 12d04: 2000bae8 .word 0x2000bae8 - -00012d08 : + 12dce: 4629 mov r1, r5 + 12dd0: b290 uxth r0, r2 + 12dd2: 4798 blx r3 + 12dd4: e78e b.n 12cf4 + 12dd6: bf00 nop + 12dd8: 00ffff00 .word 0x00ffff00 + 12ddc: 2000bb08 .word 0x2000bb08 + +00012de0 : */ #include #if defined(BMC_HAS_BUTTONS) // setup buttons by assigning button pins, we only do this once at startup void BMC::setupButtons(){ - 12d08: b570 push {r4, r5, r6, lr} - 12d0a: f643 1588 movw r5, #14728 ; 0x3988 - 12d0e: 2401 movs r4, #1 - 12d10: 4606 mov r6, r0 - 12d12: 4405 add r5, r0 + 12de0: b570 push {r4, r5, r6, lr} + 12de2: f643 15a8 movw r5, #14760 ; 0x39a8 + 12de6: 2401 movs r4, #1 + 12de8: 4606 mov r6, r0 + 12dea: 4405 add r5, r0 switch(n){ - 12d14: 1e63 subs r3, r4, #1 - 12d16: b29b uxth r3, r3 - 12d18: 3b01 subs r3, #1 - 12d1a: 2b04 cmp r3, #4 - 12d1c: d823 bhi.n 12d66 - 12d1e: e8df f003 tbb [pc, r3] - 12d22: 0b1e .short 0x0b1e - 12d24: 2003 .short 0x2003 - 12d26: 0d .byte 0x0d - 12d27: 00 .byte 0x00 - 12d28: 2143 movs r1, #67 ; 0x43 + 12dec: 1e63 subs r3, r4, #1 + 12dee: b29b uxth r3, r3 + 12df0: 3b01 subs r3, #1 + 12df2: 2b04 cmp r3, #4 + 12df4: d823 bhi.n 12e3e + 12df6: e8df f003 tbb [pc, r3] + 12dfa: 0b1e .short 0x0b1e + 12dfc: 2003 .short 0x2003 + 12dfe: 0d .byte 0x0d + 12dff: 00 .byte 0x00 + 12e00: 2143 movs r1, #67 ; 0x43 #if BMC_MAX_BUTTONS > 0 for(uint16_t i = 0; i < BMC_MAX_BUTTONS; i++){ BMCUIData ui = BMCBuildData::getUIData(BMC_DEVICE_ID_BUTTON, i); buttons[i].begin(ui.pins[0]); - 12d2a: 4628 mov r0, r5 - 12d2c: f7ff fab2 bl 12294 + 12e02: 4628 mov r0, r5 + 12e04: f7ff fab2 bl 1236c for(uint16_t i = 0; i < BMC_MAX_BUTTONS; i++){ - 12d30: 3401 adds r4, #1 - 12d32: 3524 adds r5, #36 ; 0x24 - 12d34: b2a4 uxth r4, r4 - 12d36: e7ed b.n 12d14 - 12d38: 2142 movs r1, #66 ; 0x42 - 12d3a: e7f6 b.n 12d2a + 12e08: 3401 adds r4, #1 + 12e0a: 3524 adds r5, #36 ; 0x24 + 12e0c: b2a4 uxth r4, r4 + 12e0e: e7ed b.n 12dec + 12e10: 2142 movs r1, #66 ; 0x42 + 12e12: e7f6 b.n 12e02 buttons[i].begin(ui.pins[0]); - 12d3c: 2145 movs r1, #69 ; 0x45 - 12d3e: 4628 mov r0, r5 - 12d40: f7ff faa8 bl 12294 + 12e14: 2145 movs r1, #69 ; 0x45 + 12e16: 4628 mov r0, r5 + 12e18: f7ff faa8 bl 1236c #endif #if BMC_MAX_GLOBAL_BUTTONS > 0 for(uint16_t i = 0; i < BMC_MAX_GLOBAL_BUTTONS; i++){ BMCUIData ui = BMCBuildData::getUIData(BMC_DEVICE_ID_GLOBAL_BUTTON, i); globalButtons[i].begin(ui.pins[0]); - 12d44: f643 2078 movw r0, #14968 ; 0x3a78 - 12d48: 211e movs r1, #30 - 12d4a: 4430 add r0, r6 - 12d4c: f7ff faa2 bl 12294 - 12d50: f643 209c movw r0, #15004 ; 0x3a9c - 12d54: 211f movs r1, #31 - 12d56: 4430 add r0, r6 - 12d58: f7ff fa9c bl 12294 + 12e1c: f643 2098 movw r0, #15000 ; 0x3a98 + 12e20: 211e movs r1, #30 + 12e22: 4430 add r0, r6 + 12e24: f7ff faa2 bl 1236c + 12e28: f643 20bc movw r0, #15036 ; 0x3abc + 12e2c: 211f movs r1, #31 + 12e2e: 4430 add r0, r6 + 12e30: f7ff fa9c bl 1236c } #endif } - 12d5c: bd70 pop {r4, r5, r6, pc} - 12d5e: 2141 movs r1, #65 ; 0x41 - 12d60: e7e3 b.n 12d2a + 12e34: bd70 pop {r4, r5, r6, pc} + 12e36: 2141 movs r1, #65 ; 0x41 + 12e38: e7e3 b.n 12e02 case 4: return BMC_DEVICE_UI_BUTTON_5; - 12d62: 2144 movs r1, #68 ; 0x44 - 12d64: e7e1 b.n 12d2a + 12e3a: 2144 movs r1, #68 ; 0x44 + 12e3c: e7e1 b.n 12e02 buttons[i].begin(ui.pins[0]); - 12d66: 2140 movs r1, #64 ; 0x40 - 12d68: 4628 mov r0, r5 - 12d6a: f7ff fa93 bl 12294 + 12e3e: 2140 movs r1, #64 ; 0x40 + 12e40: 4628 mov r0, r5 + 12e42: f7ff fa93 bl 1236c for(uint16_t i = 0; i < BMC_MAX_BUTTONS; i++){ - 12d6e: 2c06 cmp r4, #6 - 12d70: d1de bne.n 12d30 - 12d72: e7e7 b.n 12d44 + 12e46: 2c06 cmp r4, #6 + 12e48: d1de bne.n 12e08 + 12e4a: e7e7 b.n 12e1c -00012d74 &)>: +00012e4c &)>: assignButton(globalButtons[i], store.global.buttons[i]); } #endif } void BMC::assignButton(BMCButton& button, bmcStoreDevice & data){ - 12d74: b5f0 push {r4, r5, r6, r7, lr} + 12e4c: b5f0 push {r4, r5, r6, r7, lr} return bitRead(flags, bit); - 12d76: f500 5680 add.w r6, r0, #4096 ; 0x1000 - 12d7a: b083 sub sp, #12 - 12d7c: 4614 mov r4, r2 - 12d7e: 1d95 adds r5, r2, #6 - 12d80: f896 7964 ldrb.w r7, [r6, #2404] ; 0x964 - 12d84: 4694 mov ip, r2 - 12d86: f3c7 0780 ubfx r7, r7, #2, #1 + 12e4e: f500 5680 add.w r6, r0, #4096 ; 0x1000 + 12e52: b083 sub sp, #12 + 12e54: 4614 mov r4, r2 + 12e56: 1d95 adds r5, r2, #6 + 12e58: f896 7968 ldrb.w r7, [r6, #2408] ; 0x968 + 12e5c: 4694 mov ip, r2 + 12e5e: f3c7 0780 ubfx r7, r7, #2, #1 // first check fi the button has an event with a State Change Trigger bool hasStateChangeTrigger = flags.read(BMC_FLAGS_FIRST_LOOP); for(uint8_t e = 0; e < BMC_MAX_BUTTON_EVENTS; e++){ if((data.settings[e] & 0x0F) == BMC_BUTTON_PRESS_TYPE_STATE_CHANGE){ - 12d8a: f81c 3f01 ldrb.w r3, [ip, #1]! - 12d8e: f003 030f and.w r3, r3, #15 - 12d92: 2b0c cmp r3, #12 - 12d94: d05c beq.n 12e50 &)+0xdc> + 12e62: f81c 3f01 ldrb.w r3, [ip, #1]! + 12e66: f003 030f and.w r3, r3, #15 + 12e6a: 2b0c cmp r3, #12 + 12e6c: d05c beq.n 12f28 &)+0xdc> for(uint8_t e = 0; e < BMC_MAX_BUTTON_EVENTS; e++){ - 12d96: 4565 cmp r5, ip - 12d98: d1f7 bne.n 12d8a &)+0x16> + 12e6e: 4565 cmp r5, ip + 12e70: d1f7 bne.n 12e62 &)+0x16> flags &= excluded; - 12d9a: 894b ldrh r3, [r1, #10] + 12e72: 894b ldrh r3, [r1, #10] prevTime = 0; - 12d9c: 2000 movs r0, #0 - 12d9e: f891 c008 ldrb.w ip, [r1, #8] - 12da2: f423 43ff bic.w r3, r3, #32640 ; 0x7f80 - 12da6: f891 e009 ldrb.w lr, [r1, #9] - 12daa: f00c 0c01 and.w ip, ip, #1 - 12dae: 6108 str r0, [r1, #16] - 12db0: f023 037d bic.w r3, r3, #125 ; 0x7d - 12db4: f00e 0e01 and.w lr, lr, #1 - 12db8: f881 c008 strb.w ip, [r1, #8] - 12dbc: b29b uxth r3, r3 - 12dbe: f881 e009 strb.w lr, [r1, #9] - 12dc2: 6208 str r0, [r1, #32] - 12dc4: 814b strh r3, [r1, #10] + 12e74: 2000 movs r0, #0 + 12e76: f891 c008 ldrb.w ip, [r1, #8] + 12e7a: f423 43ff bic.w r3, r3, #32640 ; 0x7f80 + 12e7e: f891 e009 ldrb.w lr, [r1, #9] + 12e82: f00c 0c01 and.w ip, ip, #1 + 12e86: 6108 str r0, [r1, #16] + 12e88: f023 037d bic.w r3, r3, #125 ; 0x7d + 12e8c: f00e 0e01 and.w lr, lr, #1 + 12e90: f881 c008 strb.w ip, [r1, #8] + 12e94: b29b uxth r3, r3 + 12e96: f881 e009 strb.w lr, [r1, #9] + 12e9a: 6208 str r0, [r1, #32] + 12e9c: 814b strh r3, [r1, #10] continuousCount = 0; - 12dc6: 70c8 strb r0, [r1, #3] - 12dc8: 6188 str r0, [r1, #24] + 12e9e: 70c8 strb r0, [r1, #3] + 12ea0: 6188 str r0, [r1, #24] if(!hasStateChangeTrigger){ - 12dca: 2f00 cmp r7, #0 - 12dcc: d036 beq.n 12e3c &)+0xc8> + 12ea2: 2f00 cmp r7, #0 + 12ea4: d036 beq.n 12f14 &)+0xc8> return settings.data[2] & 0x0F; - 12dce: f8d6 37fc ldr.w r3, [r6, #2044] ; 0x7fc - 12dd2: 2600 movs r6, #0 - 12dd4: 68db ldr r3, [r3, #12] - 12dd6: f003 030f and.w r3, r3, #15 + 12ea6: f8d6 37fc ldr.w r3, [r6, #2044] ; 0x7fc + 12eaa: 2600 movs r6, #0 + 12eac: 68db ldr r3, [r3, #12] + 12eae: f003 030f and.w r3, r3, #15 t_value += 2; - 12dda: 3302 adds r3, #2 + 12eb2: 3302 adds r3, #2 threshold = constrain(t_value, 2, 17); - 12ddc: 704b strb r3, [r1, #1] + 12eb4: 704b strb r3, [r1, #1] } } button.reassign(hasStateChangeTrigger); button.setThreshold(settings.getButtonHoldThreshold()); // read button only any of it's events have a Trigger set for(uint8_t e = 0; e < BMC_MAX_BUTTON_EVENTS; e++){ - 12dde: e001 b.n 12de4 &)+0x70> - 12de0: 42a5 cmp r5, r4 - 12de2: d021 beq.n 12e28 &)+0xb4> + 12eb6: e001 b.n 12ebc &)+0x70> + 12eb8: 42a5 cmp r5, r4 + 12eba: d021 beq.n 12f00 &)+0xb4> if((data.settings[e] & 0x0F) != BMC_NONE){ - 12de4: f814 3f01 ldrb.w r3, [r4, #1]! - 12de8: f013 030f ands.w r3, r3, #15 - 12dec: d0f8 beq.n 12de0 &)+0x6c> + 12ebc: f814 3f01 ldrb.w r3, [r4, #1]! + 12ec0: f013 030f ands.w r3, r3, #15 + 12ec4: d0f8 beq.n 12eb8 &)+0x6c> switch((value & 0x0F)){ - 12dee: 2b04 cmp r3, #4 - 12df0: d01c beq.n 12e2c &)+0xb8> - 12df2: 2b06 cmp r3, #6 - 12df4: d103 bne.n 12dfe &)+0x8a> + 12ec6: 2b04 cmp r3, #4 + 12ec8: d01c beq.n 12f04 &)+0xb8> + 12eca: 2b06 cmp r3, #6 + 12ecc: d103 bne.n 12ed6 &)+0x8a> bitSet(flags, bit); - 12df6: 7a0b ldrb r3, [r1, #8] - 12df8: f043 0308 orr.w r3, r3, #8 - 12dfc: 720b strb r3, [r1, #8] + 12ece: 7a0b ldrb r3, [r1, #8] + 12ed0: f043 0308 orr.w r3, r3, #8 + 12ed4: 720b strb r3, [r1, #8] button.setMode(data.settings[e]); button.setFlags(data.settings[0]); - 12dfe: 7853 ldrb r3, [r2, #1] + 12ed6: 7853 ldrb r3, [r2, #1] if(bitRead(data,BMC_BTN_FLAG_IGNORE_RELEASE_AFTER_HOLD)){ - 12e00: 06df lsls r7, r3, #27 - 12e02: d503 bpl.n 12e0c &)+0x98> - 12e04: 7a48 ldrb r0, [r1, #9] - 12e06: f040 0010 orr.w r0, r0, #16 - 12e0a: 7248 strb r0, [r1, #9] + 12ed8: 06df lsls r7, r3, #27 + 12eda: d503 bpl.n 12ee4 &)+0x98> + 12edc: 7a48 ldrb r0, [r1, #9] + 12ede: f040 0010 orr.w r0, r0, #16 + 12ee2: 7248 strb r0, [r1, #9] if(bitRead(data,BMC_BTN_FLAG_IGNORE_HOLD_ON_CONTINUOUS)){ - 12e0c: 0698 lsls r0, r3, #26 - 12e0e: d503 bpl.n 12e18 &)+0xa4> - 12e10: 7a48 ldrb r0, [r1, #9] - 12e12: f040 0020 orr.w r0, r0, #32 - 12e16: 7248 strb r0, [r1, #9] + 12ee4: 0698 lsls r0, r3, #26 + 12ee6: d503 bpl.n 12ef0 &)+0xa4> + 12ee8: 7a48 ldrb r0, [r1, #9] + 12eea: f040 0020 orr.w r0, r0, #32 + 12eee: 7248 strb r0, [r1, #9] if(bitRead(data,BMC_BTN_FLAG_IGNORE_RELEASE_ON_DOUBLE_PRESS)){ - 12e18: 065b lsls r3, r3, #25 - 12e1a: d5e1 bpl.n 12de0 &)+0x6c> - 12e1c: 7a4b ldrb r3, [r1, #9] + 12ef0: 065b lsls r3, r3, #25 + 12ef2: d5e1 bpl.n 12eb8 &)+0x6c> + 12ef4: 7a4b ldrb r3, [r1, #9] for(uint8_t e = 0; e < BMC_MAX_BUTTON_EVENTS; e++){ - 12e1e: 42a5 cmp r5, r4 - 12e20: f043 0340 orr.w r3, r3, #64 ; 0x40 - 12e24: 724b strb r3, [r1, #9] - 12e26: d1dd bne.n 12de4 &)+0x70> + 12ef6: 42a5 cmp r5, r4 + 12ef8: f043 0340 orr.w r3, r3, #64 ; 0x40 + 12efc: 724b strb r3, [r1, #9] + 12efe: d1dd bne.n 12ebc &)+0x70> } } } - 12e28: b003 add sp, #12 - 12e2a: bdf0 pop {r4, r5, r6, r7, pc} + 12f00: b003 add sp, #12 + 12f02: bdf0 pop {r4, r5, r6, r7, pc} bitClear(flags, bit); - 12e2c: 7a0b ldrb r3, [r1, #8] - 12e2e: 618e str r6, [r1, #24] - 12e30: f023 0320 bic.w r3, r3, #32 - 12e34: f043 0302 orr.w r3, r3, #2 - 12e38: 720b strb r3, [r1, #8] + 12f04: 7a0b ldrb r3, [r1, #8] + 12f06: 618e str r6, [r1, #24] + 12f08: f023 0320 bic.w r3, r3, #32 + 12f0c: f043 0302 orr.w r3, r3, #2 + 12f10: 720b strb r3, [r1, #8] } - 12e3a: e7e0 b.n 12dfe &)+0x8a> + 12f12: e7e0 b.n 12ed6 &)+0x8a> if(assignedFlags.read(BMC_BTN_FLAG_MUX_IN)){ - 12e3c: f1bc 0f00 cmp.w ip, #0 - 12e40: d018 beq.n 12e74 &)+0x100> + 12f14: f1bc 0f00 cmp.w ip, #0 + 12f18: d018 beq.n 12f4c &)+0x100> if(readState()){ - 12e42: f1be 0f00 cmp.w lr, #0 - 12e46: d1c2 bne.n 12dce &)+0x5a> + 12f1a: f1be 0f00 cmp.w lr, #0 + 12f1e: d1c2 bne.n 12ea6 &)+0x5a> bitSet(flags, bit); - 12e48: f043 0304 orr.w r3, r3, #4 - 12e4c: 814b strh r3, [r1, #10] + 12f20: f043 0304 orr.w r3, r3, #4 + 12f24: 814b strh r3, [r1, #10] } - 12e4e: e7be b.n 12dce &)+0x5a> + 12f26: e7be b.n 12ea6 &)+0x5a> flags &= excluded; - 12e50: 894b ldrh r3, [r1, #10] - 12e52: f423 43ff bic.w r3, r3, #32640 ; 0x7f80 - 12e56: f023 037d bic.w r3, r3, #125 ; 0x7d - 12e5a: 814b strh r3, [r1, #10] - 12e5c: 890b ldrh r3, [r1, #8] - 12e5e: f423 437e bic.w r3, r3, #65024 ; 0xfe00 - 12e62: f023 03fe bic.w r3, r3, #254 ; 0xfe - 12e66: 810b strh r3, [r1, #8] - 12e68: 2300 movs r3, #0 - 12e6a: 610b str r3, [r1, #16] - 12e6c: 620b str r3, [r1, #32] + 12f28: 894b ldrh r3, [r1, #10] + 12f2a: f423 43ff bic.w r3, r3, #32640 ; 0x7f80 + 12f2e: f023 037d bic.w r3, r3, #125 ; 0x7d + 12f32: 814b strh r3, [r1, #10] + 12f34: 890b ldrh r3, [r1, #8] + 12f36: f423 437e bic.w r3, r3, #65024 ; 0xfe00 + 12f3a: f023 03fe bic.w r3, r3, #254 ; 0xfe + 12f3e: 810b strh r3, [r1, #8] + 12f40: 2300 movs r3, #0 + 12f42: 610b str r3, [r1, #16] + 12f44: 620b str r3, [r1, #32] continuousCount = 0; - 12e6e: 70cb strb r3, [r1, #3] - 12e70: 618b str r3, [r1, #24] + 12f46: 70cb strb r3, [r1, #3] + 12f48: 618b str r3, [r1, #24] if(!hasStateChangeTrigger){ - 12e72: e7ac b.n 12dce &)+0x5a> + 12f4a: e7ac b.n 12ea6 &)+0x5a> return digitalRead(pin); - 12e74: 7808 ldrb r0, [r1, #0] - 12e76: 9201 str r2, [sp, #4] - 12e78: 9100 str r1, [sp, #0] - 12e7a: f017 fbcf bl 2a61c + 12f4c: 7808 ldrb r0, [r1, #0] + 12f4e: 9201 str r2, [sp, #4] + 12f50: 9100 str r1, [sp, #0] + 12f52: f017 fbd7 bl 2a704 if(readState()){ - 12e7e: e9dd 1200 ldrd r1, r2, [sp] - 12e82: 2800 cmp r0, #0 - 12e84: d1a3 bne.n 12dce &)+0x5a> + 12f56: e9dd 1200 ldrd r1, r2, [sp] + 12f5a: 2800 cmp r0, #0 + 12f5c: d1a3 bne.n 12ea6 &)+0x5a> bitSet(flags, bit); - 12e86: 894b ldrh r3, [r1, #10] - 12e88: e7de b.n 12e48 &)+0xd4> - 12e8a: bf00 nop + 12f5e: 894b ldrh r3, [r1, #10] + 12f60: e7de b.n 12f20 &)+0xd4> + 12f62: bf00 nop -00012e8c : +00012f64 : +void BMC::assignButtons(){ + 12f64: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 12f68: f643 14a8 movw r4, #14760 ; 0x39a8 + 12f6c: 2500 movs r5, #0 + assignButton(buttons[i], store.layers[layer].buttons[i]); + 12f6e: f04f 0885 mov.w r8, #133 ; 0x85 void BMC::assignButtons(){ - 12e8c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 12e90: f643 1488 movw r4, #14728 ; 0x3988 - 12e94: f643 2660 movw r6, #14944 ; 0x3a60 - 12e98: 2500 movs r5, #0 - 12e9a: 4682 mov sl, r0 - 12e9c: 4404 add r4, r0 - 12e9e: 4406 add r6, r0 - 12ea0: f500 5980 add.w r9, r0, #4096 ; 0x1000 + 12f72: 4682 mov sl, r0 assignButton(buttons[i], store.layers[layer].buttons[i]); - 12ea4: f04f 0885 mov.w r8, #133 ; 0x85 - 12ea8: f241 5767 movw r7, #5479 ; 0x1567 - 12eac: f8d9 386c ldr.w r3, [r9, #2156] ; 0x86c - 12eb0: 4621 mov r1, r4 + 12f74: f241 5767 movw r7, #5479 ; 0x1567 + 12f78: 4404 add r4, r0 + 12f7a: f500 566a add.w r6, r0, #14976 ; 0x3a80 + 12f7e: f500 5980 add.w r9, r0, #4096 ; 0x1000 + 12f82: f8d9 386c ldr.w r3, [r9, #2156] ; 0x86c + 12f86: 4621 mov r1, r4 for(uint16_t i = 0; i < BMC_MAX_BUTTONS; i++){ - 12eb2: 3424 adds r4, #36 ; 0x24 + 12f88: 3424 adds r4, #36 ; 0x24 assignButton(buttons[i], store.layers[layer].buttons[i]); - 12eb4: 4650 mov r0, sl - 12eb6: 781a ldrb r2, [r3, #0] - 12eb8: fb18 7202 smlabb r2, r8, r2, r7 - 12ebc: 442a add r2, r5 - 12ebe: 350d adds r5, #13 - 12ec0: 4452 add r2, sl - 12ec2: f7ff ff57 bl 12d74 &)> + 12f8a: 4650 mov r0, sl + 12f8c: 781a ldrb r2, [r3, #0] + 12f8e: fb18 7202 smlabb r2, r8, r2, r7 + 12f92: 442a add r2, r5 + 12f94: 350d adds r5, #13 + 12f96: 4452 add r2, sl + 12f98: f7ff ff58 bl 12e4c &)> for(uint16_t i = 0; i < BMC_MAX_BUTTONS; i++){ - 12ec6: 42a6 cmp r6, r4 - 12ec8: d1f0 bne.n 12eac + 12f9c: 42a6 cmp r6, r4 + 12f9e: d1f0 bne.n 12f82 assignButton(globalButtons[i], store.global.buttons[i]); - 12eca: f241 42bd movw r2, #5309 ; 0x14bd - 12ece: f643 2178 movw r1, #14968 ; 0x3a78 - 12ed2: 4650 mov r0, sl - 12ed4: 4452 add r2, sl - 12ed6: 4451 add r1, sl - 12ed8: f7ff ff4c bl 12d74 &)> - 12edc: f241 42ca movw r2, #5322 ; 0x14ca - 12ee0: f643 219c movw r1, #15004 ; 0x3a9c - 12ee4: 4650 mov r0, sl - 12ee6: 4452 add r2, sl - 12ee8: 4451 add r1, sl -} - 12eea: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 12fa0: f241 42bd movw r2, #5309 ; 0x14bd + 12fa4: f643 2198 movw r1, #15000 ; 0x3a98 + 12fa8: 4650 mov r0, sl + 12faa: 4452 add r2, sl + 12fac: 4451 add r1, sl + 12fae: f7ff ff4d bl 12e4c &)> + 12fb2: f241 42ca movw r2, #5322 ; 0x14ca + 12fb6: f643 21bc movw r1, #15036 ; 0x3abc + 12fba: 4650 mov r0, sl + 12fbc: 4452 add r2, sl + 12fbe: 4451 add r1, sl +} + 12fc0: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} assignButton(globalButtons[i], store.global.buttons[i]); - 12eee: f7ff bf41 b.w 12d74 &)> - 12ef2: bf00 nop + 12fc4: f7ff bf42 b.w 12e4c &)> -00012ef4 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)>: +00012fc8 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)>: #endif #endif } template void BMC::handleButton(bmcStoreDevice& device, uint8_t deviceType, uint16_t index, uint8_t t_trigger){ - 12ef4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 12ef8: b084 sub sp, #16 - 12efa: 4607 mov r7, r0 - 12efc: 4692 mov sl, r2 - 12efe: 4698 mov r8, r3 - 12f00: f89d 5030 ldrb.w r5, [sp, #48] ; 0x30 - 12f04: 1d8c adds r4, r1, #6 - 12f06: f101 060c add.w r6, r1, #12 + 12fc8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 12fcc: b084 sub sp, #16 + 12fce: 4607 mov r7, r0 + 12fd0: 4692 mov sl, r2 + 12fd2: 4698 mov r8, r3 + 12fd4: f89d 5030 ldrb.w r5, [sp, #48] ; 0x30 + 12fd8: 1d8c adds r4, r1, #6 + 12fda: f101 060c add.w r6, r1, #12 return store.global.events[n-1]; - 12f0a: f500 5980 add.w r9, r0, #4096 ; 0x1000 + 12fde: f500 5980 add.w r9, r0, #4096 ; 0x1000 if(obe.checkDeviceAssignment(deviceType, index, t_trigger)){ return; } #endif for(uint8_t e = 0; e < BMC_MAX_BUTTON_EVENTS; e++){ bmcStoreEvent data = globals.getDeviceEventType(device.events[e]); - 12f0e: f814 1f01 ldrb.w r1, [r4, #1]! + 12fe2: f814 1f01 ldrb.w r1, [r4, #1]! if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 12f12: f101 3cff add.w ip, r1, #4294967295 ; 0xffffffff - 12f16: fa1f fe81 uxth.w lr, r1 - 12f1a: f1bc 0fc7 cmp.w ip, #199 ; 0xc7 - 12f1e: d81a bhi.n 12f56 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)+0x62> + 12fe6: f101 3cff add.w ip, r1, #4294967295 ; 0xffffffff + 12fea: fa1f fe81 uxth.w lr, r1 + 12fee: f1bc 0fc7 cmp.w ip, #199 ; 0xc7 + 12ff2: d81a bhi.n 1302a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)+0x62> uint8_t type = data.type; uint8_t trigger = (device.settings[e] & 0x0F) == t_trigger ? t_trigger : BMC_NONE; - 12f20: f814 cc06 ldrb.w ip, [r4, #-6] + 12ff4: f814 cc06 ldrb.w ip, [r4, #-6] if(type == BMC_NONE || trigger == BMC_NONE){ - 12f24: fab5 f085 clz r0, r5 + 12ff8: fab5 f085 clz r0, r5 return store.global.events[n-1]; - 12f28: f8d9 2800 ldr.w r2, [r9, #2048] ; 0x800 + 12ffc: f8d9 2800 ldr.w r2, [r9, #2048] ; 0x800 continue; } processEvent(BMC_DEVICE_GROUP_BUTTON, - 12f2c: 4643 mov r3, r8 + 13000: 4643 mov r3, r8 if(type == BMC_NONE || trigger == BMC_NONE){ - 12f2e: 0940 lsrs r0, r0, #5 - 12f30: eb02 02c1 add.w r2, r2, r1, lsl #3 + 13002: 0940 lsrs r0, r0, #5 + 13004: eb02 02c1 add.w r2, r2, r1, lsl #3 uint8_t trigger = (device.settings[e] & 0x0F) == t_trigger ? t_trigger : BMC_NONE; - 12f34: f00c 010f and.w r1, ip, #15 - 12f38: 42a9 cmp r1, r5 - 12f3a: f892 2032 ldrb.w r2, [r2, #50] ; 0x32 - 12f3e: d10a bne.n 12f56 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)+0x62> + 13008: f00c 010f and.w r1, ip, #15 + 1300c: 42a9 cmp r1, r5 + 1300e: f892 2032 ldrb.w r2, [r2, #50] ; 0x32 + 13012: d10a bne.n 1302a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)+0x62> if(type == BMC_NONE || trigger == BMC_NONE){ - 12f40: b14a cbz r2, 12f56 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)+0x62> - 12f42: b145 cbz r5, 12f56 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)+0x62> + 13014: b14a cbz r2, 1302a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)+0x62> + 13016: b145 cbz r5, 1302a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)+0x62> processEvent(BMC_DEVICE_GROUP_BUTTON, - 12f44: 4652 mov r2, sl - 12f46: 2101 movs r1, #1 - 12f48: f8cd e000 str.w lr, [sp] - 12f4c: e9cd 0501 strd r0, r5, [sp, #4] - 12f50: 4638 mov r0, r7 - 12f52: f7f8 fc93 bl b87c + 13018: 4652 mov r2, sl + 1301a: 2101 movs r1, #1 + 1301c: f8cd e000 str.w lr, [sp] + 13020: e9cd 0501 strd r0, r5, [sp, #4] + 13024: 4638 mov r0, r7 + 13026: f7f8 fc8d bl b944 for(uint8_t e = 0; e < BMC_MAX_BUTTON_EVENTS; e++){ - 12f56: 42b4 cmp r4, r6 - 12f58: d1d9 bne.n 12f0e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)+0x1a> + 1302a: 42b4 cmp r4, r6 + 1302c: d1d9 bne.n 12fe2 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)+0x1a> } else if(callback.buttonActivity){ callback.buttonActivity(index, e, trigger); } */ } } - 12f5a: b004 add sp, #16 - 12f5c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 1302e: b004 add sp, #16 + 13030: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} -00012f60 : +00013034 : void BMC::readButtons(){ - 12f60: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 12f64: f643 1588 movw r5, #14728 ; 0x3988 - 12f68: f04f 0a00 mov.w sl, #0 - 12f6c: 4683 mov fp, r0 - 12f6e: f500 5980 add.w r9, r0, #4096 ; 0x1000 - 12f72: 4656 mov r6, sl - 12f74: 4405 add r5, r0 - 12f76: f500 5440 add.w r4, r0, #12288 ; 0x3000 - 12f7a: ed2d 8b02 vpush {d8} - 12f7e: b085 sub sp, #20 + 13034: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 13038: f643 15a8 movw r5, #14760 ; 0x39a8 + 1303c: f04f 0a00 mov.w sl, #0 + 13040: b085 sub sp, #20 + 13042: 4683 mov fp, r0 + 13044: 4656 mov r6, sl + 13046: 4405 add r5, r0 + 13048: f500 5980 add.w r9, r0, #4096 ; 0x1000 + 1304c: f500 5440 add.w r4, r0, #12288 ; 0x3000 bmcStoreDevice & device = store.layers[layer].buttons[i]; - 12f80: f8d9 286c ldr.w r2, [r9, #2156] ; 0x86c - 12f84: fa1f f886 uxth.w r8, r6 + 13050: f8d9 286c ldr.w r2, [r9, #2156] ; 0x86c + 13054: fa1f f886 uxth.w r8, r6 return bitRead(flags, bit); - 12f88: 7a2b ldrb r3, [r5, #8] - 12f8a: 7812 ldrb r2, [r2, #0] + 13058: 7a2b ldrb r3, [r5, #8] + 1305a: 7812 ldrb r2, [r2, #0] return isMux() ? pin-64 : 0; - 12f8c: f013 0301 ands.w r3, r3, #1 - 12f90: 9203 str r2, [sp, #12] - 12f92: f000 80fa beq.w 1318a - 12f96: 782b ldrb r3, [r5, #0] - 12f98: 3b40 subs r3, #64 ; 0x40 - 12f9a: b2db uxtb r3, r3 + 1305c: f013 0301 ands.w r3, r3, #1 + 13060: 9203 str r2, [sp, #12] + 13062: f000 80f7 beq.w 13254 + 13066: 782b ldrb r3, [r5, #0] + 13068: 3b40 subs r3, #64 ; 0x40 + 1306a: b2db uxtb r3, r3 return muxGpio.readPin(n); } #endif #if BMC_MAX_MUX_IN > 0 if(!BMCBuildData::isMuxInAnalogPinIndex(n) && n < BMC_MAX_MUX_IN){ - 12f9c: 2b07 cmp r3, #7 - 12f9e: f240 80f4 bls.w 1318a + 1306c: 2b07 cmp r3, #7 + 1306e: f240 80f1 bls.w 13254 bitWrite(flags, bit, value); - 12fa2: 7a6b ldrb r3, [r5, #9] - 12fa4: f023 0301 bic.w r3, r3, #1 - 12fa8: 726b strb r3, [r5, #9] + 13072: 7a6b ldrb r3, [r5, #9] + 13074: f023 0301 bic.w r3, r3, #1 + 13078: 726b strb r3, [r5, #9] uint8_t buttonTrigger = buttons[i].read(); - 12faa: 4628 mov r0, r5 - 12fac: f7ff fcb4 bl 12918 + 1307a: 4628 mov r0, r5 + 1307c: f7ff fcb8 bl 129f0 return bitRead(flags, bit); - 12fb0: f894 3a6c ldrb.w r3, [r4, #2668] ; 0xa6c - 12fb4: 896a ldrh r2, [r5, #10] - 12fb6: 4607 mov r7, r0 + 13080: f894 3a8c ldrb.w r3, [r4, #2700] ; 0xa8c + 13084: 896a ldrh r2, [r5, #10] + 13086: 4607 mov r7, r0 if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 12fb8: f013 0001 ands.w r0, r3, #1 + 13088: f013 0001 ands.w r0, r3, #1 if(callback.buttonDualPress){ - 12fbc: f8d4 1a70 ldr.w r1, [r4, #2672] ; 0xa70 - 12fc0: ea4f 0c62 mov.w ip, r2, asr #1 - 12fc4: f3c2 0240 ubfx r2, r2, #1, #1 + 1308c: f8d4 1a90 ldr.w r1, [r4, #2704] ; 0xa90 + 13090: ea4f 0c62 mov.w ip, r2, asr #1 + 13094: f3c2 0240 ubfx r2, r2, #1, #1 if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 12fc8: f040 80eb bne.w 131a2 + 13098: f040 80e8 bne.w 1326c if(callback.buttonDualPress){ - 12fcc: 6a89 ldr r1, [r1, #40] ; 0x28 - 12fce: b161 cbz r1, 12fea + 1309c: 6a89 ldr r1, [r1, #40] ; 0x28 + 1309e: b161 cbz r1, 130ba if(flags.read(BMC_BUTTONS_DUAL_WAITING_FOR_RELEASE)){ - 12fd0: 0799 lsls r1, r3, #30 - 12fd2: f140 80ed bpl.w 131b0 + 130a0: 0799 lsls r1, r3, #30 + 130a2: f140 80ea bpl.w 1327a if(n==releaseA || n==releaseB){ - 12fd6: f994 1a61 ldrsb.w r1, [r4, #2657] ; 0xa61 - 12fda: 428e cmp r6, r1 - 12fdc: f000 811e beq.w 1321c - 12fe0: f994 1a62 ldrsb.w r1, [r4, #2658] ; 0xa62 - 12fe4: 428e cmp r6, r1 - 12fe6: f000 8165 beq.w 132b4 + 130a6: f994 1a81 ldrsb.w r1, [r4, #2689] ; 0xa81 + 130aa: 428e cmp r6, r1 + 130ac: f000 811b beq.w 132e6 + 130b0: f994 1a82 ldrsb.w r1, [r4, #2690] ; 0xa82 + 130b4: 428e cmp r6, r1 + 130b6: f000 8162 beq.w 1337e if(buttonTrigger != BMC_NONE && !dual){ - 12fea: b1c7 cbz r7, 1301e + 130ba: b1c7 cbz r7, 130ee bmcStoreDevice & device = store.layers[layer].buttons[i]; - 12fec: 9903 ldr r1, [sp, #12] - 12fee: 2285 movs r2, #133 ; 0x85 + 130bc: 9903 ldr r1, [sp, #12] + 130be: 2285 movs r2, #133 ; 0x85 handleButton(device, BMC_DEVICE_ID_BUTTON, i, buttonTrigger); - 12ff0: 4643 mov r3, r8 - 12ff2: 4658 mov r0, fp + 130c0: 4643 mov r3, r8 + 130c2: 4658 mov r0, fp bmcStoreDevice & device = store.layers[layer].buttons[i]; - 12ff4: fb02 a201 mla r2, r2, r1, sl - 12ff8: f241 5167 movw r1, #5479 ; 0x1567 + 130c4: fb02 a201 mla r2, r2, r1, sl + 130c8: f241 5167 movw r1, #5479 ; 0x1567 handleButton(device, BMC_DEVICE_ID_BUTTON, i, buttonTrigger); - 12ffc: 9700 str r7, [sp, #0] + 130cc: 9700 str r7, [sp, #0] bmcStoreDevice & device = store.layers[layer].buttons[i]; - 12ffe: 4411 add r1, r2 + 130ce: 4411 add r1, r2 handleButton(device, BMC_DEVICE_ID_BUTTON, i, buttonTrigger); - 13000: 2204 movs r2, #4 - 13002: 4459 add r1, fp - 13004: f7ff ff76 bl 12ef4 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)> + 130d0: 2204 movs r2, #4 + 130d2: 4459 add r1, fp + 130d4: f7ff ff78 bl 12fc8 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)> printButtonTrigger(BMC_DEVICE_ID_BUTTON, i, buttonTrigger); - 13008: 463b mov r3, r7 - 1300a: b2f2 uxtb r2, r6 - 1300c: 2104 movs r1, #4 - 1300e: 4658 mov r0, fp - 13010: f7f2 fe6a bl 5ce8 - 13014: 896a ldrh r2, [r5, #10] - 13016: ea4f 0c62 mov.w ip, r2, asr #1 - 1301a: f3c2 0240 ubfx r2, r2, #1, #1 + 130d8: 463b mov r3, r7 + 130da: b2f2 uxtb r2, r6 + 130dc: 2104 movs r1, #4 + 130de: 4658 mov r0, fp + 130e0: f7f2 fe46 bl 5d70 + 130e4: 896a ldrh r2, [r5, #10] + 130e6: ea4f 0c62 mov.w ip, r2, asr #1 + 130ea: f3c2 0240 ubfx r2, r2, #1, #1 if(bitRead(value[mask], bit) != newValue){ - 1301e: f8b9 183a ldrh.w r1, [r9, #2106] ; 0x83a - 13022: fa41 f306 asr.w r3, r1, r6 - 13026: ea83 030c eor.w r3, r3, ip - 1302a: 07db lsls r3, r3, #31 - 1302c: d50b bpl.n 13046 + 130ee: f8b9 183a ldrh.w r1, [r9, #2106] ; 0x83a + 130f2: fa41 f306 asr.w r3, r1, r6 + 130f6: ea83 030c eor.w r3, r3, ip + 130fa: 07db lsls r3, r3, #31 + 130fc: d50b bpl.n 13116 bitWrite(value[mask], bit, newValue); - 1302e: 2a00 cmp r2, #0 - 13030: f000 8116 beq.w 13260 - 13034: 2301 movs r3, #1 - 13036: 40b3 lsls r3, r6 - 13038: 430b orrs r3, r1 - 1303a: b29b uxth r3, r3 + 130fe: 2a00 cmp r2, #0 + 13100: f000 8113 beq.w 1332a + 13104: 2301 movs r3, #1 + 13106: 40b3 lsls r3, r6 + 13108: 430b orrs r3, r1 + 1310a: b29b uxth r3, r3 updated = true; - 1303c: 2201 movs r2, #1 - 1303e: f8a9 383a strh.w r3, [r9, #2106] ; 0x83a - 13042: f889 283c strb.w r2, [r9, #2108] ; 0x83c + 1310c: 2201 movs r2, #1 + 1310e: f8a9 383a strh.w r3, [r9, #2106] ; 0x83a + 13112: f889 283c strb.w r2, [r9, #2108] ; 0x83c for(uint16_t i = 0; i < BMC_MAX_BUTTONS; i++){ - 13046: 3601 adds r6, #1 - 13048: 3524 adds r5, #36 ; 0x24 - 1304a: f10a 0a0d add.w sl, sl, #13 - 1304e: 2e06 cmp r6, #6 - 13050: d196 bne.n 12f80 + 13116: 3601 adds r6, #1 + 13118: 3524 adds r5, #36 ; 0x24 + 1311a: f10a 0a0d add.w sl, sl, #13 + 1311e: 2e06 cmp r6, #6 + 13120: d196 bne.n 13050 if(updated){ - 13052: f899 383c ldrb.w r3, [r9, #2108] ; 0x83c - 13056: b14b cbz r3, 1306c + 13122: f899 383c ldrb.w r3, [r9, #2108] ; 0x83c + 13126: b14b cbz r3, 1313c updated = false; - 13058: 2300 movs r3, #0 + 13128: 2300 movs r3, #0 editor.utilitySendStateBits(BMC_DEVICE_ID_BUTTON); - 1305a: f642 409c movw r0, #11420 ; 0x2c9c - 1305e: 2201 movs r2, #1 - 13060: 2104 movs r1, #4 - 13062: 4458 add r0, fp - 13064: f889 383c strb.w r3, [r9, #2108] ; 0x83c - 13068: f00f fb64 bl 22734 - 1306c: f894 3a6c ldrb.w r3, [r4, #2668] ; 0xa6c + 1312a: f642 40bc movw r0, #11452 ; 0x2cbc + 1312e: 2201 movs r2, #1 + 13130: 2104 movs r1, #4 + 13132: 4458 add r0, fp + 13134: f889 383c strb.w r3, [r9, #2108] ; 0x83c + 13138: f00f fb6c bl 22814 + 1313c: f894 3a8c ldrb.w r3, [r4, #2700] ; 0xa8c if(callback.buttonDualPress){ - 13070: f8d4 2a70 ldr.w r2, [r4, #2672] ; 0xa70 + 13140: f8d4 2a90 ldr.w r2, [r4, #2704] ; 0xa90 if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 13074: 07df lsls r7, r3, #31 - 13076: f100 8109 bmi.w 1328c + 13144: 07df lsls r7, r3, #31 + 13146: f100 8106 bmi.w 13356 if(callback.buttonDualPress){ - 1307a: 6a92 ldr r2, [r2, #40] ; 0x28 - 1307c: b122 cbz r2, 13088 + 1314a: 6a92 ldr r2, [r2, #40] ; 0x28 + 1314c: b122 cbz r2, 13158 return (prevTime>0); - 1307e: f8d4 2a68 ldr.w r2, [r4, #2664] ; 0xa68 + 1314e: f8d4 2a88 ldr.w r2, [r4, #2696] ; 0xa88 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 13082: 2a00 cmp r2, #0 - 13084: f040 8125 bne.w 132d2 - 13088: f643 2578 movw r5, #14968 ; 0x3a78 - 1308c: f241 48bd movw r8, #5309 ; 0x14bd + 13152: 2a00 cmp r2, #0 + 13154: f040 8122 bne.w 1339c bool dual = dualPressGlobal.read(i, buttonTrigger, globalButtons[i].isClosed()); - 13090: f50b 536b add.w r3, fp, #15040 ; 0x3ac0 - 13094: 2700 movs r7, #0 - 13096: 445d add r5, fp - 13098: 44d8 add r8, fp - 1309a: ee08 3a10 vmov s16, r3 - 1309e: 7a2b ldrb r3, [r5, #8] - 130a0: fa5f fa87 uxtb.w sl, r7 - 130a4: f013 0301 ands.w r3, r3, #1 - 130a8: f000 80df beq.w 1326a - 130ac: 782b ldrb r3, [r5, #0] - 130ae: 3b40 subs r3, #64 ; 0x40 - 130b0: b2db uxtb r3, r3 - 130b2: 2b07 cmp r3, #7 - 130b4: f240 80d9 bls.w 1326a + 13158: f643 23e0 movw r3, #15072 ; 0x3ae0 + 1315c: f643 2598 movw r5, #15000 ; 0x3a98 + 13160: f241 48bd movw r8, #5309 ; 0x14bd + 13164: 2700 movs r7, #0 + 13166: 445b add r3, fp + 13168: 445d add r5, fp + 1316a: 44d8 add r8, fp + 1316c: 9303 str r3, [sp, #12] + 1316e: 7a2b ldrb r3, [r5, #8] + 13170: fa5f fa87 uxtb.w sl, r7 + 13174: f013 0301 ands.w r3, r3, #1 + 13178: f000 80dc beq.w 13334 + 1317c: 782b ldrb r3, [r5, #0] + 1317e: 3b40 subs r3, #64 ; 0x40 + 13180: b2db uxtb r3, r3 + 13182: 2b07 cmp r3, #7 + 13184: f240 80d6 bls.w 13334 bitWrite(flags, bit, value); - 130b8: 7a6b ldrb r3, [r5, #9] - 130ba: f023 0301 bic.w r3, r3, #1 - 130be: 726b strb r3, [r5, #9] + 13188: 7a6b ldrb r3, [r5, #9] + 1318a: f023 0301 bic.w r3, r3, #1 + 1318e: 726b strb r3, [r5, #9] uint8_t buttonTrigger = globalButtons[i].read(); - 130c0: 4628 mov r0, r5 - 130c2: f7ff fc29 bl 12918 + 13190: 4628 mov r0, r5 + 13192: f7ff fc2d bl 129f0 return bitRead(flags, bit); - 130c6: 896b ldrh r3, [r5, #10] - 130c8: 4606 mov r6, r0 + 13196: 896b ldrh r3, [r5, #10] + 13198: 4606 mov r6, r0 bool dual = dualPressGlobal.read(i, buttonTrigger, globalButtons[i].isClosed()); - 130ca: 4602 mov r2, r0 - 130cc: f3c3 0340 ubfx r3, r3, #1, #1 - 130d0: 4651 mov r1, sl - 130d2: ee18 0a10 vmov r0, s16 - 130d6: f7ff fd81 bl 12bdc + 1319a: 4602 mov r2, r0 + 1319c: f3c3 0340 ubfx r3, r3, #1, #1 + 131a0: 4651 mov r1, sl + 131a2: 9803 ldr r0, [sp, #12] + 131a4: f7ff fd86 bl 12cb4 if(buttonTrigger != BMC_NONE && !dual){ - 130da: b186 cbz r6, 130fe - 130dc: f080 0001 eor.w r0, r0, #1 - 130e0: b2c0 uxtb r0, r0 - 130e2: b160 cbz r0, 130fe + 131a8: b186 cbz r6, 131cc + 131aa: f080 0001 eor.w r0, r0, #1 + 131ae: b2c0 uxtb r0, r0 + 131b0: b160 cbz r0, 131cc handleButton(device, BMC_DEVICE_ID_GLOBAL_BUTTON, i, buttonTrigger); - 130e4: 4641 mov r1, r8 - 130e6: 4658 mov r0, fp - 130e8: 463b mov r3, r7 - 130ea: 2205 movs r2, #5 - 130ec: 9600 str r6, [sp, #0] - 130ee: f7ff ff01 bl 12ef4 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)> + 131b2: 4641 mov r1, r8 + 131b4: 4658 mov r0, fp + 131b6: 463b mov r3, r7 + 131b8: 2205 movs r2, #5 + 131ba: 9600 str r6, [sp, #0] + 131bc: f7ff ff04 bl 12fc8 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char)> printButtonTrigger(BMC_DEVICE_ID_GLOBAL_BUTTON, i, buttonTrigger); - 130f2: 4633 mov r3, r6 - 130f4: 4652 mov r2, sl - 130f6: 2105 movs r1, #5 - 130f8: 4658 mov r0, fp - 130fa: f7f2 fdf5 bl 5ce8 + 131c0: 4633 mov r3, r6 + 131c2: 4652 mov r2, sl + 131c4: 2105 movs r1, #5 + 131c6: 4658 mov r0, fp + 131c8: f7f2 fdd2 bl 5d70 if(bitRead(value[mask], bit) != newValue){ - 130fe: f8b9 283e ldrh.w r2, [r9, #2110] ; 0x83e - 13102: 896b ldrh r3, [r5, #10] - 13104: fa42 f107 asr.w r1, r2, r7 - 13108: ea81 0153 eor.w r1, r1, r3, lsr #1 - 1310c: 105b asrs r3, r3, #1 - 1310e: 07c8 lsls r0, r1, #31 - 13110: d50f bpl.n 13132 + 131cc: f8b9 283e ldrh.w r2, [r9, #2110] ; 0x83e + 131d0: 896b ldrh r3, [r5, #10] + 131d2: fa42 f107 asr.w r1, r2, r7 + 131d6: ea81 0153 eor.w r1, r1, r3, lsr #1 + 131da: 105b asrs r3, r3, #1 + 131dc: 07c8 lsls r0, r1, #31 + 131de: d50f bpl.n 13200 bitWrite(value[mask], bit, newValue); - 13112: f013 0f01 tst.w r3, #1 - 13116: f04f 0301 mov.w r3, #1 - 1311a: fa03 f307 lsl.w r3, r3, r7 - 1311e: f000 80b2 beq.w 13286 - 13122: 431a orrs r2, r3 - 13124: b292 uxth r2, r2 + 131e0: f013 0f01 tst.w r3, #1 + 131e4: f04f 0301 mov.w r3, #1 + 131e8: fa03 f307 lsl.w r3, r3, r7 + 131ec: f000 80b0 beq.w 13350 + 131f0: 431a orrs r2, r3 + 131f2: b292 uxth r2, r2 updated = true; - 13126: f04f 0301 mov.w r3, #1 - 1312a: f8a9 283e strh.w r2, [r9, #2110] ; 0x83e - 1312e: f889 3840 strb.w r3, [r9, #2112] ; 0x840 + 131f4: f04f 0301 mov.w r3, #1 + 131f8: f8a9 283e strh.w r2, [r9, #2110] ; 0x83e + 131fc: f889 3840 strb.w r3, [r9, #2112] ; 0x840 for(uint8_t i = 0; i < BMC_MAX_GLOBAL_BUTTONS; i++){ - 13132: 3524 adds r5, #36 ; 0x24 - 13134: f108 080d add.w r8, r8, #13 - 13138: 2f00 cmp r7, #0 - 1313a: f000 80a2 beq.w 13282 + 13200: 3524 adds r5, #36 ; 0x24 + 13202: f108 080d add.w r8, r8, #13 + 13206: 2f00 cmp r7, #0 + 13208: f000 80a0 beq.w 1334c if(updated){ - 1313e: f899 3840 ldrb.w r3, [r9, #2112] ; 0x840 - 13142: b14b cbz r3, 13158 + 1320c: f899 3840 ldrb.w r3, [r9, #2112] ; 0x840 + 13210: b14b cbz r3, 13226 updated = false; - 13144: 2300 movs r3, #0 + 13212: 2300 movs r3, #0 editor.utilitySendStateBits(BMC_DEVICE_ID_GLOBAL_BUTTON); - 13146: f642 409c movw r0, #11420 ; 0x2c9c - 1314a: 463a mov r2, r7 - 1314c: 2105 movs r1, #5 - 1314e: 4458 add r0, fp - 13150: f889 3840 strb.w r3, [r9, #2112] ; 0x840 - 13154: f00f faee bl 22734 - 13158: f894 3acc ldrb.w r3, [r4, #2764] ; 0xacc - 1315c: f8d4 2ad0 ldr.w r2, [r4, #2768] ; 0xad0 + 13214: f642 40bc movw r0, #11452 ; 0x2cbc + 13218: 463a mov r2, r7 + 1321a: 2105 movs r1, #5 + 1321c: 4458 add r0, fp + 1321e: f889 3840 strb.w r3, [r9, #2112] ; 0x840 + 13222: f00f faf7 bl 22814 + 13226: f894 3aec ldrb.w r3, [r4, #2796] ; 0xaec + 1322a: f8d4 2af0 ldr.w r2, [r4, #2800] ; 0xaf0 if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 13160: 07d9 lsls r1, r3, #31 - 13162: f100 809d bmi.w 132a0 + 1322e: 07d9 lsls r1, r3, #31 + 13230: f100 809b bmi.w 1336a if(callback.buttonDualPress){ - 13166: 6a92 ldr r2, [r2, #40] ; 0x28 - 13168: b152 cbz r2, 13180 + 13234: 6a92 ldr r2, [r2, #40] ; 0x28 + 13236: b152 cbz r2, 1324e return (prevTime>0); - 1316a: f8d4 2ac8 ldr.w r2, [r4, #2760] ; 0xac8 + 13238: f8d4 2ae8 ldr.w r2, [r4, #2792] ; 0xae8 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 1316e: b13a cbz r2, 13180 - 13170: 4980 ldr r1, [pc, #512] ; (13374 ) - 13172: f8b4 0ac4 ldrh.w r0, [r4, #2756] ; 0xac4 - 13176: 6809 ldr r1, [r1, #0] - 13178: 1a8a subs r2, r1, r2 - 1317a: 4282 cmp r2, r0 - 1317c: f080 80c9 bcs.w 13312 -} - 13180: b005 add sp, #20 - 13182: ecbd 8b02 vpop {d8} - 13186: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1323c: b13a cbz r2, 1324e + 1323e: 497f ldr r1, [pc, #508] ; (1343c ) + 13240: f8b4 0ae4 ldrh.w r0, [r4, #2788] ; 0xae4 + 13244: 6809 ldr r1, [r1, #0] + 13246: 1a8a subs r2, r1, r2 + 13248: 4282 cmp r2, r0 + 1324a: f080 80c7 bcs.w 133dc +} + 1324e: b005 add sp, #20 + 13250: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} } bool readPin(uint16_t t_pin){ if(t_pin >= BMC_MAX_MUX_IN){ return false; } return bitRead(states[t_pin>>3], t_pin & 0x07); - 1318a: f894 2834 ldrb.w r2, [r4, #2100] ; 0x834 - 1318e: fa42 f303 asr.w r3, r2, r3 + 13254: f894 2854 ldrb.w r2, [r4, #2132] ; 0x854 + 13258: fa42 f303 asr.w r3, r2, r3 bitWrite(flags, bit, value); - 13192: 07d8 lsls r0, r3, #31 - 13194: f57f af05 bpl.w 12fa2 - 13198: 7a6b ldrb r3, [r5, #9] - 1319a: f043 0301 orr.w r3, r3, #1 - 1319e: 726b strb r3, [r5, #9] - 131a0: e703 b.n 12faa + 1325c: 07d8 lsls r0, r3, #31 + 1325e: f57f af08 bpl.w 13072 + 13262: 7a6b ldrb r3, [r5, #9] + 13264: f043 0301 orr.w r3, r3, #1 + 13268: 726b strb r3, [r5, #9] + 1326a: e706 b.n 1307a if(callback.globalButtonDualPress){ - 131a2: 6ac9 ldr r1, [r1, #44] ; 0x2c - 131a4: 2900 cmp r1, #0 - 131a6: f43f af20 beq.w 12fea + 1326c: 6ac9 ldr r1, [r1, #44] ; 0x2c + 1326e: 2900 cmp r1, #0 + 13270: f43f af23 beq.w 130ba if(flags.read(BMC_BUTTONS_DUAL_WAITING_FOR_RELEASE)){ - 131aa: 0799 lsls r1, r3, #30 - 131ac: f53f af13 bmi.w 12fd6 + 13274: 0799 lsls r1, r3, #30 + 13276: f53f af16 bmi.w 130a6 if(state && globals.getButtonStateBit(flags.read(BMC_BUTTONS_DUAL_GLOBAL),n) != state){ - 131b0: 2a00 cmp r2, #0 - 131b2: f43f af1a beq.w 12fea - 131b6: f8d4 1a74 ldr.w r1, [r4, #2676] ; 0xa74 + 1327a: 2a00 cmp r2, #0 + 1327c: f43f af1d beq.w 130ba + 13280: f8d4 1a94 ldr.w r1, [r4, #2708] ; 0xa94 if(isGlobal){ - 131ba: 2800 cmp r0, #0 - 131bc: f000 8084 beq.w 132c8 + 13284: 2800 cmp r0, #0 + 13286: f000 8084 beq.w 13392 return bitRead(value[mask], bit); - 131c0: 8fc9 ldrh r1, [r1, #62] ; 0x3e - 131c2: 4131 asrs r1, r6 - 131c4: f001 0101 and.w r1, r1, #1 - 131c8: 2900 cmp r1, #0 - 131ca: f47f af0e bne.w 12fea + 1328a: 8fc9 ldrh r1, [r1, #62] ; 0x3e + 1328c: 4131 asrs r1, r6 + 1328e: f001 0101 and.w r1, r1, #1 + 13292: 2900 cmp r1, #0 + 13294: f47f af11 bne.w 130ba if(last>=0 && last!=n){ - 131ce: f994 0a60 ldrsb.w r0, [r4, #2656] ; 0xa60 - 131d2: 2800 cmp r0, #0 - 131d4: f2c0 8093 blt.w 132fe - 131d8: 4286 cmp r6, r0 - 131da: f000 8090 beq.w 132fe + 13298: f994 0a80 ldrsb.w r0, [r4, #2688] ; 0xa80 + 1329c: 2800 cmp r0, #0 + 1329e: f2c0 8093 blt.w 133c8 + 132a2: 4286 cmp r6, r0 + 132a4: f000 8090 beq.w 133c8 bitSet(flags, bit); - 131de: f043 0302 orr.w r3, r3, #2 + 132a8: f043 0302 orr.w r3, r3, #2 prevTime = 0; - 131e2: f8c4 1a68 str.w r1, [r4, #2664] ; 0xa68 + 132ac: f8c4 1a88 str.w r1, [r4, #2696] ; 0xa88 releaseA = n; - 131e6: f884 6a61 strb.w r6, [r4, #2657] ; 0xa61 + 132b0: f884 6a81 strb.w r6, [r4, #2689] ; 0xa81 releaseB = last; - 131ea: f884 0a62 strb.w r0, [r4, #2658] ; 0xa62 - 131ee: f884 3a6c strb.w r3, [r4, #2668] ; 0xa6c + 132b4: f884 0a82 strb.w r0, [r4, #2690] ; 0xa82 + 132b8: f884 3a8c strb.w r3, [r4, #2700] ; 0xa8c if(last > n){ - 131f2: f280 809c bge.w 1332e + 132bc: f280 809c bge.w 133f8 if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 131f6: f013 0f01 tst.w r3, #1 + 132c0: f013 0f01 tst.w r3, #1 if(callback.buttonDualPress){ - 131fa: f8d4 3a70 ldr.w r3, [r4, #2672] ; 0xa70 + 132c4: f8d4 3a90 ldr.w r3, [r4, #2704] ; 0xa90 if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 131fe: f000 80b3 beq.w 13368 + 132c8: f000 80b3 beq.w 13432 if(callback.globalButtonDualPress){ - 13202: 6adb ldr r3, [r3, #44] ; 0x2c - 13204: 2b00 cmp r3, #0 - 13206: f000 8099 beq.w 1333c + 132cc: 6adb ldr r3, [r3, #44] ; 0x2c + 132ce: 2b00 cmp r3, #0 + 132d0: f000 8099 beq.w 13406 callback.globalButtonDualPress(btn1, btn2); - 1320a: b281 uxth r1, r0 - 1320c: 4640 mov r0, r8 - 1320e: 4798 blx r3 + 132d4: b281 uxth r1, r0 + 132d6: 4640 mov r0, r8 + 132d8: 4798 blx r3 return bitRead(flags, bit); - 13210: 896a ldrh r2, [r5, #10] - 13212: ea4f 0c62 mov.w ip, r2, asr #1 - 13216: f3c2 0240 ubfx r2, r2, #1, #1 - 1321a: e700 b.n 1301e + 132da: 896a ldrh r2, [r5, #10] + 132dc: ea4f 0c62 mov.w ip, r2, asr #1 + 132e0: f3c2 0240 ubfx r2, r2, #1, #1 + 132e4: e703 b.n 130ee if(state || trigger!=BMC_BUTTON_PRESS_TYPE_RELEASE){ - 1321c: 2f02 cmp r7, #2 - 1321e: f47f aefe bne.w 1301e - 13222: 2a00 cmp r2, #0 - 13224: f47f aefb bne.w 1301e + 132e6: 2f02 cmp r7, #2 + 132e8: f47f af01 bne.w 130ee + 132ec: 2a00 cmp r2, #0 + 132ee: f47f aefe bne.w 130ee releaseA = -1; - 13228: 22ff movs r2, #255 ; 0xff - 1322a: f884 2a61 strb.w r2, [r4, #2657] ; 0xa61 + 132f2: 22ff movs r2, #255 ; 0xff + 132f4: f884 2a81 strb.w r2, [r4, #2689] ; 0xa81 if(releaseA==-1 && releaseB==-1){ - 1322e: f8d4 2a60 ldr.w r2, [r4, #2656] ; 0xa60 - 13232: 4951 ldr r1, [pc, #324] ; (13378 ) - 13234: ea31 0202 bics.w r2, r1, r2 - 13238: d109 bne.n 1324e + 132f8: f8d4 2a80 ldr.w r2, [r4, #2688] ; 0xa80 + 132fc: 4950 ldr r1, [pc, #320] ; (13440 ) + 132fe: ea31 0202 bics.w r2, r1, r2 + 13302: d109 bne.n 13318 bitClear(flags, bit); - 1323a: f023 0302 bic.w r3, r3, #2 - 1323e: f884 3a6c strb.w r3, [r4, #2668] ; 0xa6c + 13304: f023 0302 bic.w r3, r3, #2 + 13308: f884 3a8c strb.w r3, [r4, #2700] ; 0xa8c last = -1; - 13242: f64f 73ff movw r3, #65535 ; 0xffff - 13246: f8a4 3a60 strh.w r3, [r4, #2656] ; 0xa60 + 1330c: f64f 73ff movw r3, #65535 ; 0xffff + 13310: f8a4 3a80 strh.w r3, [r4, #2688] ; 0xa80 releaseB = -1; - 1324a: f884 3a62 strb.w r3, [r4, #2658] ; 0xa62 + 13314: f884 3a82 strb.w r3, [r4, #2690] ; 0xa82 if(bitRead(value[mask], bit) != newValue){ - 1324e: f8b9 183a ldrh.w r1, [r9, #2106] ; 0x83a - 13252: fa41 f306 asr.w r3, r1, r6 - 13256: ea83 030c eor.w r3, r3, ip - 1325a: 07db lsls r3, r3, #31 - 1325c: f57f aef3 bpl.w 13046 + 13318: f8b9 183a ldrh.w r1, [r9, #2106] ; 0x83a + 1331c: fa41 f306 asr.w r3, r1, r6 + 13320: ea83 030c eor.w r3, r3, ip + 13324: 07db lsls r3, r3, #31 + 13326: f57f aef6 bpl.w 13116 bitWrite(value[mask], bit, newValue); - 13260: 2301 movs r3, #1 - 13262: 40b3 lsls r3, r6 - 13264: ea21 0303 bic.w r3, r1, r3 - 13268: e6e8 b.n 1303c - 1326a: f894 2834 ldrb.w r2, [r4, #2100] ; 0x834 - 1326e: fa42 f303 asr.w r3, r2, r3 + 1332a: 2301 movs r3, #1 + 1332c: 40b3 lsls r3, r6 + 1332e: ea21 0303 bic.w r3, r1, r3 + 13332: e6eb b.n 1310c + 13334: f894 2854 ldrb.w r2, [r4, #2132] ; 0x854 + 13338: fa42 f303 asr.w r3, r2, r3 bitWrite(flags, bit, value); - 13272: 07de lsls r6, r3, #31 - 13274: f57f af20 bpl.w 130b8 - 13278: 7a6b ldrb r3, [r5, #9] - 1327a: f043 0301 orr.w r3, r3, #1 - 1327e: 726b strb r3, [r5, #9] - 13280: e71e b.n 130c0 - 13282: 2701 movs r7, #1 - 13284: e70b b.n 1309e - 13286: ea22 0203 bic.w r2, r2, r3 - 1328a: e74c b.n 13126 + 1333c: 07de lsls r6, r3, #31 + 1333e: f57f af23 bpl.w 13188 + 13342: 7a6b ldrb r3, [r5, #9] + 13344: f043 0301 orr.w r3, r3, #1 + 13348: 726b strb r3, [r5, #9] + 1334a: e721 b.n 13190 + 1334c: 2701 movs r7, #1 + 1334e: e70e b.n 1316e + 13350: ea22 0203 bic.w r2, r2, r3 + 13354: e74e b.n 131f4 if(callback.globalButtonDualPress){ - 1328c: 6ad2 ldr r2, [r2, #44] ; 0x2c - 1328e: 2a00 cmp r2, #0 - 13290: f43f aefa beq.w 13088 + 13356: 6ad2 ldr r2, [r2, #44] ; 0x2c + 13358: 2a00 cmp r2, #0 + 1335a: f43f aefd beq.w 13158 return (prevTime>0); - 13294: f8d4 2a68 ldr.w r2, [r4, #2664] ; 0xa68 + 1335e: f8d4 2a88 ldr.w r2, [r4, #2696] ; 0xa88 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 13298: 2a00 cmp r2, #0 - 1329a: f43f aef5 beq.w 13088 - 1329e: e018 b.n 132d2 - 132a0: 6ad2 ldr r2, [r2, #44] ; 0x2c - 132a2: 2a00 cmp r2, #0 - 132a4: f43f af6c beq.w 13180 + 13362: 2a00 cmp r2, #0 + 13364: f43f aef8 beq.w 13158 + 13368: e018 b.n 1339c + 1336a: 6ad2 ldr r2, [r2, #44] ; 0x2c + 1336c: 2a00 cmp r2, #0 + 1336e: f43f af6e beq.w 1324e return (prevTime>0); - 132a8: f8d4 2ac8 ldr.w r2, [r4, #2760] ; 0xac8 + 13372: f8d4 2ae8 ldr.w r2, [r4, #2792] ; 0xae8 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 132ac: 2a00 cmp r2, #0 - 132ae: f43f af67 beq.w 13180 - 132b2: e75d b.n 13170 + 13376: 2a00 cmp r2, #0 + 13378: f43f af69 beq.w 1324e + 1337c: e75f b.n 1323e if(state || trigger!=BMC_BUTTON_PRESS_TYPE_RELEASE){ - 132b4: 2f02 cmp r7, #2 - 132b6: f47f aeb2 bne.w 1301e - 132ba: 2a00 cmp r2, #0 - 132bc: f47f aeaf bne.w 1301e + 1337e: 2f02 cmp r7, #2 + 13380: f47f aeb5 bne.w 130ee + 13384: 2a00 cmp r2, #0 + 13386: f47f aeb2 bne.w 130ee releaseB = -1; - 132c0: 22ff movs r2, #255 ; 0xff - 132c2: f884 2a62 strb.w r2, [r4, #2658] ; 0xa62 - 132c6: e7b2 b.n 1322e + 1338a: 22ff movs r2, #255 ; 0xff + 1338c: f884 2a82 strb.w r2, [r4, #2690] ; 0xa82 + 13390: e7b2 b.n 132f8 return bitRead(value[mask], bit); - 132c8: 8f49 ldrh r1, [r1, #58] ; 0x3a - 132ca: 4131 asrs r1, r6 - 132cc: f001 0101 and.w r1, r1, #1 + 13392: 8f49 ldrh r1, [r1, #58] ; 0x3a + 13394: 4131 asrs r1, r6 + 13396: f001 0101 and.w r1, r1, #1 return buttonStates.getBit(n); - 132d0: e77a b.n 131c8 - 132d2: 4928 ldr r1, [pc, #160] ; (13374 ) - 132d4: 6809 ldr r1, [r1, #0] - 132d6: 1a8a subs r2, r1, r2 - 132d8: f8b4 1a64 ldrh.w r1, [r4, #2660] ; 0xa64 - 132dc: 428a cmp r2, r1 - 132de: f4ff aed3 bcc.w 13088 + 1339a: e77a b.n 13292 + 1339c: 4927 ldr r1, [pc, #156] ; (1343c ) + 1339e: 6809 ldr r1, [r1, #0] + 133a0: 1a8a subs r2, r1, r2 + 133a2: f8b4 1a84 ldrh.w r1, [r4, #2692] ; 0xa84 + 133a6: 428a cmp r2, r1 + 133a8: f4ff aed6 bcc.w 13158 prevTime = 0; - 132e2: 2200 movs r2, #0 + 133ac: 2200 movs r2, #0 bitClear(flags, bit); - 132e4: f023 0302 bic.w r3, r3, #2 - 132e8: f8c4 2a68 str.w r2, [r4, #2664] ; 0xa68 + 133ae: f023 0302 bic.w r3, r3, #2 + 133b2: f8c4 2a88 str.w r2, [r4, #2696] ; 0xa88 last = -1; - 132ec: f64f 72ff movw r2, #65535 ; 0xffff - 132f0: f884 3a6c strb.w r3, [r4, #2668] ; 0xa6c - 132f4: f8a4 2a60 strh.w r2, [r4, #2656] ; 0xa60 + 133b6: f64f 72ff movw r2, #65535 ; 0xffff + 133ba: f884 3a8c strb.w r3, [r4, #2700] ; 0xa8c + 133be: f8a4 2a80 strh.w r2, [r4, #2688] ; 0xa80 releaseB = -1; - 132f8: f884 2a62 strb.w r2, [r4, #2658] ; 0xa62 + 133c2: f884 2a82 strb.w r2, [r4, #2690] ; 0xa82 } - 132fc: e6c4 b.n 13088 + 133c6: e6c7 b.n 13158 interval = value; - 132fe: 234b movs r3, #75 ; 0x4b + 133c8: 234b movs r3, #75 ; 0x4b last = n; - 13300: f884 6a60 strb.w r6, [r4, #2656] ; 0xa60 - 13304: f8a4 3a64 strh.w r3, [r4, #2660] ; 0xa64 - 13308: 4b1a ldr r3, [pc, #104] ; (13374 ) - 1330a: 681b ldr r3, [r3, #0] + 133ca: f884 6a80 strb.w r6, [r4, #2688] ; 0xa80 + 133ce: f8a4 3a84 strh.w r3, [r4, #2692] ; 0xa84 + 133d2: 4b1a ldr r3, [pc, #104] ; (1343c ) + 133d4: 681b ldr r3, [r3, #0] prevTime = (unsigned long) _BMCTiming::get(); - 1330c: f8c4 3a68 str.w r3, [r4, #2664] ; 0xa68 + 133d6: f8c4 3a88 str.w r3, [r4, #2696] ; 0xa88 } - 13310: e66b b.n 12fea + 133da: e66e b.n 130ba last = -1; - 13312: f64f 72ff movw r2, #65535 ; 0xffff + 133dc: f64f 72ff movw r2, #65535 ; 0xffff prevTime = 0; - 13316: 2100 movs r1, #0 - 13318: f023 0302 bic.w r3, r3, #2 - 1331c: f8c4 1ac8 str.w r1, [r4, #2760] ; 0xac8 - 13320: f8a4 2ac0 strh.w r2, [r4, #2752] ; 0xac0 + 133e0: 2100 movs r1, #0 + 133e2: f023 0302 bic.w r3, r3, #2 + 133e6: f8c4 1ae8 str.w r1, [r4, #2792] ; 0xae8 + 133ea: f8a4 2ae0 strh.w r2, [r4, #2784] ; 0xae0 releaseB = -1; - 13324: f884 2ac2 strb.w r2, [r4, #2754] ; 0xac2 - 13328: f884 3acc strb.w r3, [r4, #2764] ; 0xacc - 1332c: e728 b.n 13180 + 133ee: f884 2ae2 strb.w r2, [r4, #2786] ; 0xae2 + 133f2: f884 3aec strb.w r3, [r4, #2796] ; 0xaec + 133f6: e72a b.n 1324e if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 1332e: f013 0f01 tst.w r3, #1 + 133f8: f013 0f01 tst.w r3, #1 if(callback.buttonDualPress){ - 13332: f8d4 3a70 ldr.w r3, [r4, #2672] ; 0xa70 + 133fc: f8d4 3a90 ldr.w r3, [r4, #2704] ; 0xa90 if(!flags.read(BMC_BUTTONS_DUAL_GLOBAL)){ - 13336: d10b bne.n 13350 + 13400: d10b bne.n 1341a if(callback.buttonDualPress){ - 13338: 6a9b ldr r3, [r3, #40] ; 0x28 - 1333a: b963 cbnz r3, 13356 + 13402: 6a9b ldr r3, [r3, #40] ; 0x28 + 13404: b963 cbnz r3, 13420 if(bitRead(value[mask], bit) != newValue){ - 1333c: f8b9 183a ldrh.w r1, [r9, #2106] ; 0x83a - 13340: fa41 f306 asr.w r3, r1, r6 - 13344: ea83 030c eor.w r3, r3, ip - 13348: 07da lsls r2, r3, #31 - 1334a: f53f ae73 bmi.w 13034 - 1334e: e67a b.n 13046 + 13406: f8b9 183a ldrh.w r1, [r9, #2106] ; 0x83a + 1340a: fa41 f306 asr.w r3, r1, r6 + 1340e: ea83 030c eor.w r3, r3, ip + 13412: 07da lsls r2, r3, #31 + 13414: f53f ae76 bmi.w 13104 + 13418: e67d b.n 13116 if(callback.globalButtonDualPress){ - 13350: 6adb ldr r3, [r3, #44] ; 0x2c - 13352: 2b00 cmp r3, #0 - 13354: d0f2 beq.n 1333c + 1341a: 6adb ldr r3, [r3, #44] ; 0x2c + 1341c: 2b00 cmp r3, #0 + 1341e: d0f2 beq.n 13406 callback.globalButtonDualPress(btn1, btn2); - 13356: 4641 mov r1, r8 - 13358: b280 uxth r0, r0 - 1335a: 4798 blx r3 + 13420: 4641 mov r1, r8 + 13422: b280 uxth r0, r0 + 13424: 4798 blx r3 return bitRead(flags, bit); - 1335c: 896a ldrh r2, [r5, #10] - 1335e: ea4f 0c62 mov.w ip, r2, asr #1 - 13362: f3c2 0240 ubfx r2, r2, #1, #1 - 13366: e65a b.n 1301e + 13426: 896a ldrh r2, [r5, #10] + 13428: ea4f 0c62 mov.w ip, r2, asr #1 + 1342c: f3c2 0240 ubfx r2, r2, #1, #1 + 13430: e65d b.n 130ee if(callback.buttonDualPress){ - 13368: 6a9b ldr r3, [r3, #40] ; 0x28 - 1336a: 2b00 cmp r3, #0 - 1336c: f47f af4d bne.w 1320a - 13370: e7e4 b.n 1333c - 13372: bf00 nop - 13374: 2000bae8 .word 0x2000bae8 - 13378: 00ffff00 .word 0x00ffff00 - -0001337c : + 13432: 6a9b ldr r3, [r3, #40] ; 0x28 + 13434: 2b00 cmp r3, #0 + 13436: f47f af4d bne.w 132d4 + 1343a: e7e4 b.n 13406 + 1343c: 2000bb08 .word 0x2000bb08 + 13440: 00ffff00 .word 0x00ffff00 + +00013444 : */ #include /* Setup the hardware items */ void BMC::setupHardware(){ - 1337c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 13380: 2100 movs r1, #0 - 13382: 4606 mov r6, r0 - 13384: 484e ldr r0, [pc, #312] ; (134c0 ) + 13444: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 13448: 2100 movs r1, #0 + 1344a: 4606 mov r6, r0 + 1344c: 484e ldr r0, [pc, #312] ; (13588 ) CORE_PIN6_PORTSET = CORE_PIN6_BITMASK; - 13386: f44f 6580 mov.w r5, #1024 ; 0x400 - 1338a: f019 f8dd bl 2c548 - 1338e: 484d ldr r0, [pc, #308] ; (134c4 ) - 13390: f016 fd70 bl 29e74 - 13394: 2100 movs r1, #0 - 13396: 484a ldr r0, [pc, #296] ; (134c0 ) - 13398: f019 f8d6 bl 2c548 - 1339c: 4849 ldr r0, [pc, #292] ; (134c4 ) - 1339e: f016 fd69 bl 29e74 - 133a2: 2111 movs r1, #17 - 133a4: 4848 ldr r0, [pc, #288] ; (134c8 ) - 133a6: f019 f8cf bl 2c548 - 133aa: 4846 ldr r0, [pc, #280] ; (134c4 ) - 133ac: f016 fd62 bl 29e74 - 133b0: 2118 movs r1, #24 - 133b2: 4846 ldr r0, [pc, #280] ; (134cc ) - 133b4: f019 f8c8 bl 2c548 - 133b8: 4842 ldr r0, [pc, #264] ; (134c4 ) - 133ba: f016 fd5b bl 29e74 + 1344e: f44f 6580 mov.w r5, #1024 ; 0x400 + 13452: f019 f8ed bl 2c630 + 13456: 484d ldr r0, [pc, #308] ; (1358c ) + 13458: f016 fd82 bl 29f60 + 1345c: 2100 movs r1, #0 + 1345e: 484a ldr r0, [pc, #296] ; (13588 ) + 13460: f019 f8e6 bl 2c630 + 13464: 4849 ldr r0, [pc, #292] ; (1358c ) + 13466: f016 fd7b bl 29f60 + 1346a: 2111 movs r1, #17 + 1346c: 4848 ldr r0, [pc, #288] ; (13590 ) + 1346e: f019 f8df bl 2c630 + 13472: 4846 ldr r0, [pc, #280] ; (1358c ) + 13474: f016 fd74 bl 29f60 + 13478: 2118 movs r1, #24 + 1347a: 4846 ldr r0, [pc, #280] ; (13594 ) + 1347c: f019 f8d8 bl 2c630 + 13480: 4842 ldr r0, [pc, #264] ; (1358c ) + 13482: f016 fd6d bl 29f60 pinMode(BMC_MUX_IN_74HC165_CLOCK, OUTPUT); - 133be: 2101 movs r1, #1 - 133c0: 2007 movs r0, #7 + 13486: 2101 movs r1, #1 + 13488: 2007 movs r0, #7 CORE_PIN7_PORTCLEAR = CORE_PIN7_BITMASK; - 133c2: 4c43 ldr r4, [pc, #268] ; (134d0 ) - 133c4: f017 f93c bl 2a640 + 1348a: 4c43 ldr r4, [pc, #268] ; (13598 ) + 1348c: f017 f94c bl 2a728 pinMode(BMC_MUX_IN_74HC165_LOAD, OUTPUT); - 133c8: 2101 movs r1, #1 - 133ca: 2006 movs r0, #6 - 133cc: f017 f938 bl 2a640 + 13490: 2101 movs r1, #1 + 13492: 2006 movs r0, #6 + 13494: f017 f948 bl 2a728 pinMode(BMC_MUX_IN_74HC165_DATA, INPUT); - 133d0: 2100 movs r1, #0 - 133d2: 2005 movs r0, #5 - 133d4: f017 f934 bl 2a640 - 133d8: f44f 3300 mov.w r3, #131072 ; 0x20000 + 13498: 2100 movs r1, #0 + 1349a: 2005 movs r0, #5 + 1349c: f017 f944 bl 2a728 + 134a0: f44f 3300 mov.w r3, #131072 ; 0x20000 for(uint8_t i=0;i + 134aa: f8c4 5084 str.w r5, [r4, #132] ; 0x84 + 134ae: f017 f881 bl 2a5b4 // Wait for a number of microseconds. During this time, interrupts remain // active, but the rest of your program becomes effectively stalled. For shorter // delay, use delayNanoseconds(). static inline void delayMicroseconds(uint32_t usec) { uint32_t begin = ARM_DWT_CYCCNT; - 133ea: 493a ldr r1, [pc, #232] ; (134d4 ) + 134b2: 493a ldr r1, [pc, #232] ; (1359c ) uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 133ec: f8df e0ec ldr.w lr, [pc, #236] ; 134dc + 134b4: f8df e0ec ldr.w lr, [pc, #236] ; 135a4 CORE_PIN6_PORTCLEAR = CORE_PIN6_BITMASK; - 133f0: f8c4 5088 str.w r5, [r4, #136] ; 0x88 + 134b8: f8c4 5088 str.w r5, [r4, #136] ; 0x88 uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 133f4: 4b38 ldr r3, [pc, #224] ; (134d8 ) + 134bc: 4b38 ldr r3, [pc, #224] ; (135a0 ) uint32_t begin = ARM_DWT_CYCCNT; - 133f6: 6848 ldr r0, [r1, #4] + 134be: 6848 ldr r0, [r1, #4] uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 133f8: f8de 2000 ldr.w r2, [lr] - 133fc: fba3 3202 umull r3, r2, r3, r2 - 13400: 0c92 lsrs r2, r2, #18 - 13402: eb02 0282 add.w r2, r2, r2, lsl #2 + 134c0: f8de 2000 ldr.w r2, [lr] + 134c4: fba3 3202 umull r3, r2, r3, r2 + 134c8: 0c92 lsrs r2, r2, #18 + 134ca: eb02 0282 add.w r2, r2, r2, lsl #2 // TODO: check if cycles is large, do a wait with yield calls until it's smaller while (ARM_DWT_CYCCNT - begin < cycles) ; // wait - 13406: 684b ldr r3, [r1, #4] - 13408: 1a1b subs r3, r3, r0 - 1340a: 429a cmp r2, r3 - 1340c: d8fb bhi.n 13406 + 134ce: 684b ldr r3, [r1, #4] + 134d0: 1a1b subs r3, r3, r0 + 134d2: 429a cmp r2, r3 + 134d4: d8fb bhi.n 134ce CORE_PIN6_PORTSET = CORE_PIN6_BITMASK; - 1340e: 4830 ldr r0, [pc, #192] ; (134d0 ) - 13410: f44f 6380 mov.w r3, #1024 ; 0x400 + 134d6: 4830 ldr r0, [pc, #192] ; (13598 ) + 134d8: f44f 6380 mov.w r3, #1024 ; 0x400 for(int i = 7; i >= 0; i--){ - 13414: f04f 0c07 mov.w ip, #7 - 13418: f506 5540 add.w r5, r6, #12288 ; 0x3000 + 134dc: f04f 0c07 mov.w ip, #7 + 134e0: f506 5540 add.w r5, r6, #12288 ; 0x3000 return (CORE_PIN5_PINREG & CORE_PIN5_BITMASK) ? 1 : 0; - 1341c: f8df a0c0 ldr.w sl, [pc, #192] ; 134e0 + 134e4: f8df a0c0 ldr.w sl, [pc, #192] ; 135a8 bitWrite(states[mux], i, bit); - 13420: f04f 0901 mov.w r9, #1 + 134e8: f04f 0901 mov.w r9, #1 CORE_PIN7_PORTSET = CORE_PIN7_BITMASK; - 13424: f44f 3700 mov.w r7, #131072 ; 0x20000 + 134ec: f44f 3700 mov.w r7, #131072 ; 0x20000 uint32_t begin = ARM_DWT_CYCCNT; - 13428: 492a ldr r1, [pc, #168] ; (134d4 ) + 134f0: 492a ldr r1, [pc, #168] ; (1359c ) uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 1342a: f8df 80ac ldr.w r8, [pc, #172] ; 134d8 + 134f2: f8df 80ac ldr.w r8, [pc, #172] ; 135a0 CORE_PIN6_PORTSET = CORE_PIN6_BITMASK; - 1342e: f8c0 3084 str.w r3, [r0, #132] ; 0x84 + 134f6: f8c0 3084 str.w r3, [r0, #132] ; 0x84 return (CORE_PIN5_PINREG & CORE_PIN5_BITMASK) ? 1 : 0; - 13432: f8da 3008 ldr.w r3, [sl, #8] - 13436: fa09 f20c lsl.w r2, r9, ip - 1343a: f413 7f80 tst.w r3, #256 ; 0x100 - 1343e: f895 3834 ldrb.w r3, [r5, #2100] ; 0x834 - 13442: d139 bne.n 134b8 - 13444: ea23 0302 bic.w r3, r3, r2 - 13448: f885 3834 strb.w r3, [r5, #2100] ; 0x834 + 134fa: f8da 3008 ldr.w r3, [sl, #8] + 134fe: fa09 f20c lsl.w r2, r9, ip + 13502: f413 7f80 tst.w r3, #256 ; 0x100 + 13506: f895 3854 ldrb.w r3, [r5, #2132] ; 0x854 + 1350a: d139 bne.n 13580 + 1350c: ea23 0302 bic.w r3, r3, r2 + 13510: f885 3854 strb.w r3, [r5, #2132] ; 0x854 CORE_PIN7_PORTSET = CORE_PIN7_BITMASK; - 1344c: f8c0 7084 str.w r7, [r0, #132] ; 0x84 + 13514: f8c0 7084 str.w r7, [r0, #132] ; 0x84 uint32_t begin = ARM_DWT_CYCCNT; - 13450: 684c ldr r4, [r1, #4] + 13518: 684c ldr r4, [r1, #4] uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 13452: f8de 2000 ldr.w r2, [lr] - 13456: fba8 3202 umull r3, r2, r8, r2 - 1345a: 0c92 lsrs r2, r2, #18 - 1345c: eb02 0282 add.w r2, r2, r2, lsl #2 + 1351a: f8de 2000 ldr.w r2, [lr] + 1351e: fba8 3202 umull r3, r2, r8, r2 + 13522: 0c92 lsrs r2, r2, #18 + 13524: eb02 0282 add.w r2, r2, r2, lsl #2 while (ARM_DWT_CYCCNT - begin < cycles) ; // wait - 13460: 684b ldr r3, [r1, #4] - 13462: 1b1b subs r3, r3, r4 - 13464: 429a cmp r2, r3 - 13466: d8fb bhi.n 13460 + 13528: 684b ldr r3, [r1, #4] + 1352a: 1b1b subs r3, r3, r4 + 1352c: 429a cmp r2, r3 + 1352e: d8fb bhi.n 13528 for(int i = 7; i >= 0; i--){ - 13468: f10c 3cff add.w ip, ip, #4294967295 ; 0xffffffff + 13530: f10c 3cff add.w ip, ip, #4294967295 ; 0xffffffff CORE_PIN7_PORTCLEAR = CORE_PIN7_BITMASK; - 1346c: f8c0 7088 str.w r7, [r0, #136] ; 0x88 - 13470: f1bc 3fff cmp.w ip, #4294967295 ; 0xffffffff - 13474: d1dd bne.n 13432 + 13534: f8c0 7088 str.w r7, [r0, #136] ; 0x88 + 13538: f1bc 3fff cmp.w ip, #4294967295 ; 0xffffffff + 1353c: d1dd bne.n 134fa elapsedMicros & operator = (unsigned long val) { us = micros() - val; return *this; } - 13476: f017 f87d bl 2a574 - 1347a: 4603 mov r3, r0 - 1347c: 2100 movs r1, #0 - 1347e: 4810 ldr r0, [pc, #64] ; (134c0 ) - 13480: f8c5 3838 str.w r3, [r5, #2104] ; 0x838 - 13484: f019 f860 bl 2c548 - 13488: 480e ldr r0, [pc, #56] ; (134c4 ) - 1348a: f016 fcf3 bl 29e74 + 1353e: f017 f88d bl 2a65c + 13542: 4603 mov r3, r0 + 13544: 2100 movs r1, #0 + 13546: 4810 ldr r0, [pc, #64] ; (13588 ) + 13548: f8c5 3858 str.w r3, [r5, #2136] ; 0x858 + 1354c: f019 f870 bl 2c630 + 13550: 480e ldr r0, [pc, #56] ; (1358c ) + 13552: f016 fd05 bl 29f60 mux.begin(); #endif #if BMC_TOTAL_PIXELS > 0 // BMC.hardware.pixels setupPixels(); - 1348e: 4630 mov r0, r6 - 13490: f001 fa68 bl 14964 + 13556: 4630 mov r0, r6 + 13558: f001 fa6a bl 14a30 #endif #if BMC_TOTAL_LEDS > 0 // BMC.hardware.leds setupLeds(); - 13494: 4630 mov r0, r6 - 13496: f000 fd09 bl 13eac + 1355c: 4630 mov r0, r6 + 1355e: f000 fd09 bl 13f74 #endif #if BMC_MAX_BUTTONS > 0 || BMC_MAX_GLOBAL_BUTTONS > 0 // BMC.hardware.buttons setupButtons(); - 1349a: 4630 mov r0, r6 - 1349c: f7ff fc34 bl 12d08 + 13562: 4630 mov r0, r6 + 13564: f7ff fc3c bl 12de0 setupRelays(); #endif #if BMC_MAX_AUX_JACKS > 0 // BMC.hardware.auxJacks setupAuxJacks(); - 134a0: 4630 mov r0, r6 - 134a2: f7fe fc8b bl 11dbc - 134a6: 2100 movs r1, #0 - 134a8: 4805 ldr r0, [pc, #20] ; (134c0 ) - 134aa: f019 f84d bl 2c548 - 134ae: 4805 ldr r0, [pc, #20] ; (134c4 ) + 13568: 4630 mov r0, r6 + 1356a: f7fe fc95 bl 11e98 + 1356e: 2100 movs r1, #0 + 13570: 4805 ldr r0, [pc, #20] ; (13588 ) + 13572: f019 f85d bl 2c630 + 13576: 4805 ldr r0, [pc, #20] ; (1358c ) #endif BMC_PRINTLN(""); } - 134b0: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 134b4: f016 bcde b.w 29e74 + 13578: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 1357c: f016 bcf0 b.w 29f60 bitWrite(states[mux], i, bit); - 134b8: 4313 orrs r3, r2 - 134ba: b2db uxtb r3, r3 - 134bc: e7c4 b.n 13448 - 134be: bf00 nop - 134c0: 20003c58 .word 0x20003c58 - 134c4: 20004ba8 .word 0x20004ba8 - 134c8: 2000235c .word 0x2000235c - 134cc: 20002370 .word 0x20002370 - 134d0: 42004000 .word 0x42004000 - 134d4: e0001000 .word 0xe0001000 - 134d8: 431bde83 .word 0x431bde83 - 134dc: 20004ba4 .word 0x20004ba4 - 134e0: 4200c000 .word 0x4200c000 - -000134e4 : + 13580: 4313 orrs r3, r2 + 13582: b2db uxtb r3, r3 + 13584: e7c4 b.n 13510 + 13586: bf00 nop + 13588: 20003d18 .word 0x20003d18 + 1358c: 20004c68 .word 0x20004c68 + 13590: 2000235c .word 0x2000235c + 13594: 20002370 .word 0x20002370 + 13598: 42004000 .word 0x42004000 + 1359c: e0001000 .word 0xe0001000 + 135a0: 431bde83 .word 0x431bde83 + 135a4: 20004c64 .word 0x20004c64 + 135a8: 4200c000 .word 0x4200c000 + +000135ac : readAuxJacks(); #endif } // just used when EEPROM is erased, blinks first of each led type void BMC::controlFirstLed(bool t_value){ - 134e4: b570 push {r4, r5, r6, lr} - 134e6: f500 5440 add.w r4, r0, #12288 ; 0x3000 - 134ea: 460d mov r5, r1 - 134ec: f894 3901 ldrb.w r3, [r4, #2305] ; 0x901 + 135ac: b570 push {r4, r5, r6, lr} + 135ae: f500 5440 add.w r4, r0, #12288 ; 0x3000 + 135b2: 460d mov r5, r1 + 135b4: f894 3921 ldrb.w r3, [r4, #2337] ; 0x921 if(isPwmCapable()){ - 134f0: 069e lsls r6, r3, #26 - 134f2: f140 80cc bpl.w 1368e + 135b8: 069e lsls r6, r3, #26 + 135ba: f140 80cc bpl.w 13756 if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 134f6: 0658 lsls r0, r3, #25 - 134f8: d46d bmi.n 135d6 + 135be: 0658 lsls r0, r3, #25 + 135c0: d46d bmi.n 1369e analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 134fa: 0209 lsls r1, r1, #8 - 134fc: f894 0900 ldrb.w r0, [r4, #2304] ; 0x900 - 13500: f017 fa2a bl 2a958 + 135c2: 0209 lsls r1, r1, #8 + 135c4: f894 0920 ldrb.w r0, [r4, #2336] ; 0x920 + 135c8: f017 fa3a bl 2aa40 uint8_t cColor = currentColor[n] & 0x07; - 13504: f894 28b8 ldrb.w r2, [r4, #2232] ; 0x8b8 + 135cc: f894 28d8 ldrb.w r2, [r4, #2264] ; 0x8d8 bitWrite(cColor, color, t_state); - 13508: 2d00 cmp r5, #0 - 1350a: d071 beq.n 135f0 + 135d0: 2d00 cmp r5, #0 + 135d2: d071 beq.n 136b8 uint8_t cColor = currentColor[n] & 0x07; - 1350c: f002 0307 and.w r3, r2, #7 + 135d4: f002 0307 and.w r3, r2, #7 bitWrite(cColor, color, t_state); - 13510: f043 0301 orr.w r3, r3, #1 + 135d8: f043 0301 orr.w r3, r3, #1 if(!bitRead(cColor,7) || (cColor&0x7F)!=t_color){ - 13514: 0611 lsls r1, r2, #24 - 13516: f100 80bf bmi.w 13698 + 135dc: 0611 lsls r1, r2, #24 + 135de: f100 80bf bmi.w 13760 if (num >= numled) return; - 1351a: f8b4 289c ldrh.w r2, [r4, #2204] ; 0x89c - 1351e: b1aa cbz r2, 1354c - 13520: 1e5a subs r2, r3, #1 + 135e2: f8b4 28bc ldrh.w r2, [r4, #2236] ; 0x8bc + 135e6: b1aa cbz r2, 13614 + 135e8: 1e5a subs r2, r3, #1 if (config < 6) { - 13522: f894 189f ldrb.w r1, [r4, #2207] ; 0x89f - 13526: 4871 ldr r0, [pc, #452] ; (136ec ) - 13528: b2d2 uxtb r2, r2 - 1352a: 2905 cmp r1, #5 + 135ea: f894 18bf ldrb.w r1, [r4, #2239] ; 0x8bf + 135ee: 4871 ldr r0, [pc, #452] ; (137b4 ) + 135f0: b2d2 uxtb r2, r2 + 135f2: 2905 cmp r1, #5 drawBuffer[num+0] = color & 255; - 1352c: f8d4 18a4 ldr.w r1, [r4, #2212] ; 0x8a4 - 13530: f850 2022 ldr.w r2, [r0, r2, lsl #2] - 13534: 700a strb r2, [r1, #0] + 135f4: f8d4 18c4 ldr.w r1, [r4, #2244] ; 0x8c4 + 135f8: f850 2022 ldr.w r2, [r0, r2, lsl #2] + 135fc: 700a strb r2, [r1, #0] drawBuffer[num+1] = (color >> 8) & 255; - 13536: ea4f 2012 mov.w r0, r2, lsr #8 - 1353a: f8d4 18a4 ldr.w r1, [r4, #2212] ; 0x8a4 + 135fe: ea4f 2012 mov.w r0, r2, lsr #8 + 13602: f8d4 18c4 ldr.w r1, [r4, #2244] ; 0x8c4 if (config < 6) { - 1353e: f200 80ba bhi.w 136b6 + 13606: f200 80ba bhi.w 1377e drawBuffer[num+2] = (color >> 16) & 255; - 13542: 0c12 lsrs r2, r2, #16 + 1360a: 0c12 lsrs r2, r2, #16 drawBuffer[num+1] = (color >> 8) & 255; - 13544: 7048 strb r0, [r1, #1] + 1360c: 7048 strb r0, [r1, #1] drawBuffer[num+2] = (color >> 16) & 255; - 13546: f8d4 18a4 ldr.w r1, [r4, #2212] ; 0x8a4 - 1354a: 708a strb r2, [r1, #2] + 1360e: f8d4 18c4 ldr.w r1, [r4, #2244] ; 0x8c4 + 13612: 708a strb r2, [r1, #2] bitWrite(t_color, 7, 1); - 1354c: f043 0280 orr.w r2, r3, #128 ; 0x80 + 13614: f043 0280 orr.w r2, r3, #128 ; 0x80 globals.rgbPixelStates[0].setBit(n, bitRead(color, 0)); - 13550: f8d4 183c ldr.w r1, [r4, #2108] ; 0x83c + 13618: f8d4 185c ldr.w r1, [r4, #2140] ; 0x85c currentColor[t_index] = t_color; - 13554: f884 28b8 strb.w r2, [r4, #2232] ; 0x8b8 + 1361c: f884 28d8 strb.w r2, [r4, #2264] ; 0x8d8 globals.rgbPixelStates[0].setBit(n, bitRead(color, 0)); - 13558: f002 0601 and.w r6, r2, #1 - 1355c: f8b1 004a ldrh.w r0, [r1, #74] ; 0x4a - 13560: f000 0501 and.w r5, r0, #1 - 13564: 42ae cmp r6, r5 - 13566: d00a beq.n 1357e + 13620: f002 0601 and.w r6, r2, #1 + 13624: f8b1 004a ldrh.w r0, [r1, #74] ; 0x4a + 13628: f000 0501 and.w r5, r0, #1 + 1362c: 42ae cmp r6, r5 + 1362e: d00a beq.n 13646 bitWrite(value[mask], bit, newValue); - 13568: 2e00 cmp r6, #0 - 1356a: f040 80a1 bne.w 136b0 - 1356e: f020 0001 bic.w r0, r0, #1 - 13572: b280 uxth r0, r0 + 13630: 2e00 cmp r6, #0 + 13632: f040 80a1 bne.w 13778 + 13636: f020 0001 bic.w r0, r0, #1 + 1363a: b280 uxth r0, r0 updated = true; - 13574: 2201 movs r2, #1 - 13576: f8a1 004a strh.w r0, [r1, #74] ; 0x4a - 1357a: f881 204c strb.w r2, [r1, #76] ; 0x4c + 1363c: 2201 movs r2, #1 + 1363e: f8a1 004a strh.w r0, [r1, #74] ; 0x4a + 13642: f881 204c strb.w r2, [r1, #76] ; 0x4c if(bitRead(value[mask], bit) != newValue){ - 1357e: f8b1 204e ldrh.w r2, [r1, #78] ; 0x4e - 13582: f3c3 0040 ubfx r0, r3, #1, #1 - 13586: f002 0501 and.w r5, r2, #1 - 1358a: 42a8 cmp r0, r5 - 1358c: d00a beq.n 135a4 + 13646: f8b1 204e ldrh.w r2, [r1, #78] ; 0x4e + 1364a: f3c3 0040 ubfx r0, r3, #1, #1 + 1364e: f002 0501 and.w r5, r2, #1 + 13652: 42a8 cmp r0, r5 + 13654: d00a beq.n 1366c bitWrite(value[mask], bit, newValue); - 1358e: 2800 cmp r0, #0 - 13590: f040 808b bne.w 136aa - 13594: f022 0201 bic.w r2, r2, #1 - 13598: b292 uxth r2, r2 + 13656: 2800 cmp r0, #0 + 13658: f040 808b bne.w 13772 + 1365c: f022 0201 bic.w r2, r2, #1 + 13660: b292 uxth r2, r2 updated = true; - 1359a: 2001 movs r0, #1 - 1359c: f8a1 204e strh.w r2, [r1, #78] ; 0x4e - 135a0: f881 0050 strb.w r0, [r1, #80] ; 0x50 + 13662: 2001 movs r0, #1 + 13664: f8a1 204e strh.w r2, [r1, #78] ; 0x4e + 13668: f881 0050 strb.w r0, [r1, #80] ; 0x50 if(bitRead(value[mask], bit) != newValue){ - 135a4: f8b1 2052 ldrh.w r2, [r1, #82] ; 0x52 + 1366c: f8b1 2052 ldrh.w r2, [r1, #82] ; 0x52 globals.rgbPixelStates[2].setBit(n, bitRead(color, 2)); - 135a8: 089d lsrs r5, r3, #2 - 135aa: f002 0001 and.w r0, r2, #1 - 135ae: ebb0 0f93 cmp.w r0, r3, lsr #2 - 135b2: d009 beq.n 135c8 + 13670: 089d lsrs r5, r3, #2 + 13672: f002 0001 and.w r0, r2, #1 + 13676: ebb0 0f93 cmp.w r0, r3, lsr #2 + 1367a: d009 beq.n 13690 bitWrite(value[mask], bit, newValue); - 135b4: 2d00 cmp r5, #0 - 135b6: d175 bne.n 136a4 - 135b8: f022 0201 bic.w r2, r2, #1 - 135bc: b292 uxth r2, r2 + 1367c: 2d00 cmp r5, #0 + 1367e: d175 bne.n 1376c + 13680: f022 0201 bic.w r2, r2, #1 + 13684: b292 uxth r2, r2 updated = true; - 135be: 2301 movs r3, #1 - 135c0: f8a1 2052 strh.w r2, [r1, #82] ; 0x52 - 135c4: f881 3054 strb.w r3, [r1, #84] ; 0x54 + 13686: 2301 movs r3, #1 + 13688: f8a1 2052 strh.w r2, [r1, #82] ; 0x52 + 1368c: f881 3054 strb.w r3, [r1, #84] ; 0x54 bitSet(flags, bit); - 135c8: f8b4 38fa ldrh.w r3, [r4, #2298] ; 0x8fa - 135cc: f043 0301 orr.w r3, r3, #1 - 135d0: f8a4 38fa strh.w r3, [r4, #2298] ; 0x8fa + 13690: f8b4 391a ldrh.w r3, [r4, #2330] ; 0x91a + 13694: f043 0301 orr.w r3, r3, #1 + 13698: f8a4 391a strh.w r3, [r4, #2330] ; 0x91a #endif #if BMC_MAX_GLOBAL_RGB_PIXELS > 0 pixels.setStateGlobalRgb(0, 0, t_value); #endif } - 135d4: bd70 pop {r4, r5, r6, pc} + 1369c: bd70 pop {r4, r5, r6, pc} analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 135d6: 2900 cmp r1, #0 - 135d8: f894 0900 ldrb.w r0, [r4, #2304] ; 0x900 - 135dc: bf14 ite ne - 135de: f44f 7180 movne.w r1, #256 ; 0x100 - 135e2: 2101 moveq r1, #1 - 135e4: f017 f9b8 bl 2a958 + 1369e: 2900 cmp r1, #0 + 136a0: f894 0920 ldrb.w r0, [r4, #2336] ; 0x920 + 136a4: bf14 ite ne + 136a6: f44f 7180 movne.w r1, #256 ; 0x100 + 136aa: 2101 moveq r1, #1 + 136ac: f017 f9c8 bl 2aa40 uint8_t cColor = currentColor[n] & 0x07; - 135e8: f894 28b8 ldrb.w r2, [r4, #2232] ; 0x8b8 + 136b0: f894 28d8 ldrb.w r2, [r4, #2264] ; 0x8d8 bitWrite(cColor, color, t_state); - 135ec: 2d00 cmp r5, #0 - 135ee: d18d bne.n 1350c + 136b4: 2d00 cmp r5, #0 + 136b6: d18d bne.n 135d4 if(t_color == 0){ - 135f0: f012 0306 ands.w r3, r2, #6 - 135f4: d18e bne.n 13514 + 136b8: f012 0306 ands.w r3, r2, #6 + 136bc: d18e bne.n 135dc if(bitRead(cColor, 7)){ - 135f6: 0612 lsls r2, r2, #24 - 135f8: d5ec bpl.n 135d4 + 136be: 0612 lsls r2, r2, #24 + 136c0: d5ec bpl.n 1369c return bitRead(flags, bit); - 135fa: f8b4 28fa ldrh.w r2, [r4, #2298] ; 0x8fa + 136c2: f8b4 291a ldrh.w r2, [r4, #2330] ; 0x91a if(flags.read(BMC_PIXELS_FLAG_USE_DIM)){ - 135fe: 0793 lsls r3, r2, #30 - 13600: d506 bpl.n 13610 + 136c6: 0793 lsls r3, r2, #30 + 136c8: d506 bpl.n 136d8 return (dimColors[offset] & 0x0F); - 13602: f894 38be ldrb.w r3, [r4, #2238] ; 0x8be - 13606: 493a ldr r1, [pc, #232] ; (136f0 ) - 13608: f003 030f and.w r3, r3, #15 - 1360c: f851 5023 ldr.w r5, [r1, r3, lsl #2] + 136ca: f894 38de ldrb.w r3, [r4, #2270] ; 0x8de + 136ce: 493a ldr r1, [pc, #232] ; (137b8 ) + 136d0: f003 030f and.w r3, r3, #15 + 136d4: f851 5023 ldr.w r5, [r1, r3, lsl #2] if (num >= numled) return; - 13610: f8b4 389c ldrh.w r3, [r4, #2204] ; 0x89c - 13614: b183 cbz r3, 13638 + 136d8: f8b4 38bc ldrh.w r3, [r4, #2236] ; 0x8bc + 136dc: b183 cbz r3, 13700 if (config < 6) { - 13616: f894 389f ldrb.w r3, [r4, #2207] ; 0x89f - 1361a: 2b05 cmp r3, #5 + 136de: f894 38bf ldrb.w r3, [r4, #2239] ; 0x8bf + 136e2: 2b05 cmp r3, #5 drawBuffer[num+0] = color & 255; - 1361c: f8d4 38a4 ldr.w r3, [r4, #2212] ; 0x8a4 + 136e4: f8d4 38c4 ldr.w r3, [r4, #2244] ; 0x8c4 if (config < 6) { - 13620: d853 bhi.n 136ca + 136e8: d853 bhi.n 13792 drawBuffer[num+0] = color & 255; - 13622: 701d strb r5, [r3, #0] + 136ea: 701d strb r5, [r3, #0] drawBuffer[num+1] = (color >> 8) & 255; - 13624: 0a29 lsrs r1, r5, #8 - 13626: f8d4 38a4 ldr.w r3, [r4, #2212] ; 0x8a4 + 136ec: 0a29 lsrs r1, r5, #8 + 136ee: f8d4 38c4 ldr.w r3, [r4, #2244] ; 0x8c4 drawBuffer[num+2] = (color >> 16) & 255; - 1362a: 0c2a lsrs r2, r5, #16 + 136f2: 0c2a lsrs r2, r5, #16 drawBuffer[num+1] = (color >> 8) & 255; - 1362c: 7059 strb r1, [r3, #1] + 136f4: 7059 strb r1, [r3, #1] drawBuffer[num+2] = (color >> 16) & 255; - 1362e: f8d4 38a4 ldr.w r3, [r4, #2212] ; 0x8a4 - 13632: 709a strb r2, [r3, #2] + 136f6: f8d4 38c4 ldr.w r3, [r4, #2244] ; 0x8c4 + 136fa: 709a strb r2, [r3, #2] bitSet(flags, bit); - 13634: f8b4 28fa ldrh.w r2, [r4, #2298] ; 0x8fa + 136fc: f8b4 291a ldrh.w r2, [r4, #2330] ; 0x91a currentColor[t_index] = 0; - 13638: 2100 movs r1, #0 + 13700: 2100 movs r1, #0 globals.rgbPixelStates[0].setBit(n, bitRead(color, 0)); - 1363a: f8d4 383c ldr.w r3, [r4, #2108] ; 0x83c + 13702: f8d4 385c ldr.w r3, [r4, #2140] ; 0x85c currentColor[t_index] = 0; - 1363e: f884 18b8 strb.w r1, [r4, #2232] ; 0x8b8 + 13706: f884 18d8 strb.w r1, [r4, #2264] ; 0x8d8 if(bitRead(value[mask], bit) != newValue){ - 13642: f8b3 104a ldrh.w r1, [r3, #74] ; 0x4a - 13646: 07ce lsls r6, r1, #31 - 13648: d506 bpl.n 13658 + 1370a: f8b3 104a ldrh.w r1, [r3, #74] ; 0x4a + 1370e: 07ce lsls r6, r1, #31 + 13710: d506 bpl.n 13720 bitWrite(value[mask], bit, newValue); - 1364a: f021 0101 bic.w r1, r1, #1 + 13712: f021 0101 bic.w r1, r1, #1 updated = true; - 1364e: 2001 movs r0, #1 + 13716: 2001 movs r0, #1 bitWrite(value[mask], bit, newValue); - 13650: f8a3 104a strh.w r1, [r3, #74] ; 0x4a + 13718: f8a3 104a strh.w r1, [r3, #74] ; 0x4a updated = true; - 13654: f883 004c strb.w r0, [r3, #76] ; 0x4c + 1371c: f883 004c strb.w r0, [r3, #76] ; 0x4c if(bitRead(value[mask], bit) != newValue){ - 13658: f8b3 104e ldrh.w r1, [r3, #78] ; 0x4e - 1365c: 07cd lsls r5, r1, #31 - 1365e: d506 bpl.n 1366e + 13720: f8b3 104e ldrh.w r1, [r3, #78] ; 0x4e + 13724: 07cd lsls r5, r1, #31 + 13726: d506 bpl.n 13736 bitWrite(value[mask], bit, newValue); - 13660: f021 0101 bic.w r1, r1, #1 + 13728: f021 0101 bic.w r1, r1, #1 updated = true; - 13664: 2001 movs r0, #1 + 1372c: 2001 movs r0, #1 bitWrite(value[mask], bit, newValue); - 13666: f8a3 104e strh.w r1, [r3, #78] ; 0x4e + 1372e: f8a3 104e strh.w r1, [r3, #78] ; 0x4e updated = true; - 1366a: f883 0050 strb.w r0, [r3, #80] ; 0x50 + 13732: f883 0050 strb.w r0, [r3, #80] ; 0x50 if(bitRead(value[mask], bit) != newValue){ - 1366e: f8b3 1052 ldrh.w r1, [r3, #82] ; 0x52 - 13672: 07c8 lsls r0, r1, #31 - 13674: d506 bpl.n 13684 + 13736: f8b3 1052 ldrh.w r1, [r3, #82] ; 0x52 + 1373a: 07c8 lsls r0, r1, #31 + 1373c: d506 bpl.n 1374c bitWrite(value[mask], bit, newValue); - 13676: f021 0101 bic.w r1, r1, #1 + 1373e: f021 0101 bic.w r1, r1, #1 updated = true; - 1367a: 2001 movs r0, #1 + 13742: 2001 movs r0, #1 bitWrite(value[mask], bit, newValue); - 1367c: f8a3 1052 strh.w r1, [r3, #82] ; 0x52 + 13744: f8a3 1052 strh.w r1, [r3, #82] ; 0x52 updated = true; - 13680: f883 0054 strb.w r0, [r3, #84] ; 0x54 - 13684: f042 0201 orr.w r2, r2, #1 - 13688: f8a4 28fa strh.w r2, [r4, #2298] ; 0x8fa - 1368c: bd70 pop {r4, r5, r6, pc} + 13748: f883 0054 strb.w r0, [r3, #84] ; 0x54 + 1374c: f042 0201 orr.w r2, r2, #1 + 13750: f8a4 291a strh.w r2, [r4, #2330] ; 0x91a + 13754: bd70 pop {r4, r5, r6, pc} digitalWrite(pin, t_value); - 1368e: f894 0900 ldrb.w r0, [r4, #2304] ; 0x900 - 13692: f016 ff99 bl 2a5c8 - 13696: e735 b.n 13504 + 13756: f894 0920 ldrb.w r0, [r4, #2336] ; 0x920 + 1375a: f016 ffa9 bl 2a6b0 + 1375e: e735 b.n 135cc if(!bitRead(cColor,7) || (cColor&0x7F)!=t_color){ - 13698: f002 027f and.w r2, r2, #127 ; 0x7f - 1369c: 429a cmp r2, r3 - 1369e: f47f af3c bne.w 1351a - 136a2: bd70 pop {r4, r5, r6, pc} + 13760: f002 027f and.w r2, r2, #127 ; 0x7f + 13764: 429a cmp r2, r3 + 13766: f47f af3c bne.w 135e2 + 1376a: bd70 pop {r4, r5, r6, pc} bitWrite(value[mask], bit, newValue); - 136a4: f042 0201 orr.w r2, r2, #1 - 136a8: e789 b.n 135be - 136aa: f042 0201 orr.w r2, r2, #1 - 136ae: e774 b.n 1359a - 136b0: f040 0001 orr.w r0, r0, #1 - 136b4: e75e b.n 13574 + 1376c: f042 0201 orr.w r2, r2, #1 + 13770: e789 b.n 13686 + 13772: f042 0201 orr.w r2, r2, #1 + 13776: e774 b.n 13662 + 13778: f040 0001 orr.w r0, r0, #1 + 1377c: e75e b.n 1363c drawBuffer[num+1] = (color >> 8) & 255; - 136b6: 7048 strb r0, [r1, #1] + 1377e: 7048 strb r0, [r1, #1] drawBuffer[num+2] = (color >> 16) & 255; - 136b8: 0c10 lsrs r0, r2, #16 - 136ba: f8d4 18a4 ldr.w r1, [r4, #2212] ; 0x8a4 + 13780: 0c10 lsrs r0, r2, #16 + 13782: f8d4 18c4 ldr.w r1, [r4, #2244] ; 0x8c4 drawBuffer[num+3] = (color >> 24) & 255; - 136be: 0e12 lsrs r2, r2, #24 + 13786: 0e12 lsrs r2, r2, #24 drawBuffer[num+2] = (color >> 16) & 255; - 136c0: 7088 strb r0, [r1, #2] + 13788: 7088 strb r0, [r1, #2] drawBuffer[num+3] = (color >> 24) & 255; - 136c2: f8d4 18a4 ldr.w r1, [r4, #2212] ; 0x8a4 - 136c6: 70ca strb r2, [r1, #3] - 136c8: e740 b.n 1354c + 1378a: f8d4 18c4 ldr.w r1, [r4, #2244] ; 0x8c4 + 1378e: 70ca strb r2, [r1, #3] + 13790: e740 b.n 13614 drawBuffer[num+0] = color & 255; - 136ca: 701d strb r5, [r3, #0] + 13792: 701d strb r5, [r3, #0] drawBuffer[num+1] = (color >> 8) & 255; - 136cc: 0a2a lsrs r2, r5, #8 - 136ce: f8d4 38a4 ldr.w r3, [r4, #2212] ; 0x8a4 + 13794: 0a2a lsrs r2, r5, #8 + 13796: f8d4 38c4 ldr.w r3, [r4, #2244] ; 0x8c4 drawBuffer[num+2] = (color >> 16) & 255; - 136d2: 0c29 lsrs r1, r5, #16 + 1379a: 0c29 lsrs r1, r5, #16 drawBuffer[num+1] = (color >> 8) & 255; - 136d4: 705a strb r2, [r3, #1] + 1379c: 705a strb r2, [r3, #1] drawBuffer[num+3] = (color >> 24) & 255; - 136d6: 2200 movs r2, #0 + 1379e: 2200 movs r2, #0 drawBuffer[num+2] = (color >> 16) & 255; - 136d8: f8d4 38a4 ldr.w r3, [r4, #2212] ; 0x8a4 - 136dc: 7099 strb r1, [r3, #2] + 137a0: f8d4 38c4 ldr.w r3, [r4, #2244] ; 0x8c4 + 137a4: 7099 strb r1, [r3, #2] drawBuffer[num+3] = (color >> 24) & 255; - 136de: f8d4 38a4 ldr.w r3, [r4, #2212] ; 0x8a4 - 136e2: 70da strb r2, [r3, #3] - 136e4: f8b4 28fa ldrh.w r2, [r4, #2298] ; 0x8fa - 136e8: e7a6 b.n 13638 - 136ea: bf00 nop - 136ec: 20000fb0 .word 0x20000fb0 - 136f0: 20000e70 .word 0x20000e70 - -000136f4 : + 137a6: f8d4 38c4 ldr.w r3, [r4, #2244] ; 0x8c4 + 137aa: 70da strb r2, [r3, #3] + 137ac: f8b4 291a ldrh.w r2, [r4, #2330] ; 0x91a + 137b0: e7a6 b.n 13700 + 137b2: bf00 nop + 137b4: 20000fb0 .word 0x20000fb0 + 137b8: 20000e70 .word 0x20000e70 + +000137bc : void BMC::assignHardware() { - 136f4: b570 push {r4, r5, r6, lr} - 136f6: 4604 mov r4, r0 + 137bc: b570 push {r4, r5, r6, lr} + 137be: 4604 mov r4, r0 assignButtons(); - 136f8: f7ff fbc8 bl 12e8c + 137c0: f7ff fbd0 bl 12f64 assignPixels(); - 136fc: 4620 mov r0, r4 - 136fe: f001 f939 bl 14974 + 137c4: 4620 mov r0, r4 + 137c6: f001 f93b bl 14a40 assignLeds(); - 13702: 4620 mov r0, r4 - 13704: f000 fc0c bl 13f20 + 137ca: 4620 mov r0, r4 + 137cc: f000 fc0c bl 13fe8 assignAuxJacks(); - 13708: 4620 mov r0, r4 - 1370a: f7fe fa5d bl 11bc8 + 137d0: 4620 mov r0, r4 + 137d2: f7fe fa67 bl 11ca4 if(bitRead(flags, bit)){ - 1370e: f504 5200 add.w r2, r4, #8192 ; 0x2000 - 13712: f8d2 3ccc ldr.w r3, [r2, #3276] ; 0xccc - 13716: 0519 lsls r1, r3, #20 - 13718: d400 bmi.n 1371c + 137d6: f504 5200 add.w r2, r4, #8192 ; 0x2000 + 137da: f8d2 3cec ldr.w r3, [r2, #3308] ; 0xcec + 137de: 0519 lsls r1, r3, #20 + 137e0: d400 bmi.n 137e4 } - 1371a: bd70 pop {r4, r5, r6, pc} + 137e2: bd70 pop {r4, r5, r6, pc} bitClear(flags, bit); - 1371c: f423 6300 bic.w r3, r3, #2048 ; 0x800 - 13720: 2505 movs r5, #5 - 13722: f8c2 3ccc str.w r3, [r2, #3276] ; 0xccc + 137e4: f423 6300 bic.w r3, r3, #2048 ; 0x800 + 137e8: 2505 movs r5, #5 + 137ea: f8c2 3cec str.w r3, [r2, #3308] ; 0xcec controlFirstLed(true); - 13726: 2101 movs r1, #1 - 13728: 4620 mov r0, r4 - 1372a: f7ff fedb bl 134e4 + 137ee: 2101 movs r1, #1 + 137f0: 4620 mov r0, r4 + 137f2: f7ff fedb bl 135ac delay(100); - 1372e: 2064 movs r0, #100 ; 0x64 - 13730: f016 fecc bl 2a4cc + 137f6: 2064 movs r0, #100 ; 0x64 + 137f8: f016 fedc bl 2a5b4 controlFirstLed(false); - 13734: 2100 movs r1, #0 - 13736: 4620 mov r0, r4 - 13738: f7ff fed4 bl 134e4 + 137fc: 2100 movs r1, #0 + 137fe: 4620 mov r0, r4 + 13800: f7ff fed4 bl 135ac delay(100); - 1373c: 2064 movs r0, #100 ; 0x64 - 1373e: f016 fec5 bl 2a4cc + 13804: 2064 movs r0, #100 ; 0x64 + 13806: f016 fed5 bl 2a5b4 for(uint8_t i=0;i<5;i++){ - 13742: 1e6b subs r3, r5, #1 - 13744: f013 05ff ands.w r5, r3, #255 ; 0xff - 13748: d1ed bne.n 13726 + 1380a: 1e6b subs r3, r5, #1 + 1380c: f013 05ff ands.w r5, r3, #255 ; 0xff + 13810: d1ed bne.n 137ee if(callback.eepromErased){ - 1374a: f504 5480 add.w r4, r4, #4096 ; 0x1000 - 1374e: f8d4 38e4 ldr.w r3, [r4, #2276] ; 0x8e4 - 13752: 2b00 cmp r3, #0 - 13754: d0e1 beq.n 1371a + 13812: f504 5480 add.w r4, r4, #4096 ; 0x1000 + 13816: f8d4 38e4 ldr.w r3, [r4, #2276] ; 0x8e4 + 1381a: 2b00 cmp r3, #0 + 1381c: d0e1 beq.n 137e2 } - 13756: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 1381e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} callback.eepromErased(); - 1375a: 4718 bx r3 + 13822: 4718 bx r3 -0001375c : +00013824 : void BMC::readHardware(){ - 1375c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 13760: 4605 mov r5, r0 - 13762: b085 sub sp, #20 + 13824: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 13828: 4605 mov r5, r0 + 1382a: b085 sub sp, #20 operator unsigned long () const { return micros() - us; } - 13764: f016 ff06 bl 2a574 - 13768: f505 5640 add.w r6, r5, #12288 ; 0x3000 - 1376c: f8d6 3838 ldr.w r3, [r6, #2104] ; 0x838 - 13770: 1ac0 subs r0, r0, r3 + 1382c: f016 ff16 bl 2a65c + 13830: f505 5640 add.w r6, r5, #12288 ; 0x3000 + 13834: f8d6 3858 ldr.w r3, [r6, #2136] ; 0x858 + 13838: 1ac0 subs r0, r0, r3 BMC_PRINTLN(""); } void update(){ #if BMC_MUX_IN_CHIPSET != BMC_MUX_IN_CHIPSET_OTHER if(timer >= BMC_MUX_IN_DELAY_MICROS){ - 13772: f5b0 7ffa cmp.w r0, #500 ; 0x1f4 - 13776: d26f bcs.n 13858 + 1383a: f5b0 7ffa cmp.w r0, #500 ; 0x1f4 + 1383e: d26f bcs.n 13920 return systick_millis_count; - 13778: f8df a1dc ldr.w sl, [pc, #476] ; 13958 + 13840: f8df a1dc ldr.w sl, [pc, #476] ; 13a20 if(oneMillisecondPassed()){ - 1377c: f8d6 3818 ldr.w r3, [r6, #2072] ; 0x818 - 13780: f8da 2000 ldr.w r2, [sl] - 13784: 429a cmp r2, r3 - 13786: d031 beq.n 137ec - 13788: f643 5648 movw r6, #15688 ; 0x3d48 - 1378c: 2400 movs r4, #0 - 1378e: f8da b000 ldr.w fp, [sl] + 13844: f8d6 3838 ldr.w r3, [r6, #2104] ; 0x838 + 13848: f8da 2000 ldr.w r2, [sl] + 1384c: 429a cmp r2, r3 + 1384e: d031 beq.n 138b4 + 13850: f643 5668 movw r6, #15720 ; 0x3d68 + 13854: 2400 movs r4, #0 + 13856: f8da b000 ldr.w fp, [sl] for(uint8_t index = 0 ; index < BMC_MAX_OLED ; index++){ - 13792: f505 5880 add.w r8, r5, #4096 ; 0x1000 - 13796: 442e add r6, r5 + 1385a: f505 5880 add.w r8, r5, #4096 ; 0x1000 + 1385e: 442e add r6, r5 uint16_t eIndex = store.layers[layer].oled[index].events[0]; - 13798: f241 59d5 movw r9, #5589 ; 0x15d5 + 13860: f241 59d5 movw r9, #5589 ; 0x15d5 processEvent(BMC_DEVICE_GROUP_DISPLAY, BMC_DEVICE_ID_OLED, index, eIndex); - 1379c: 4627 mov r7, r4 + 13864: 4627 mov r7, r4 uint16_t eIndex = store.layers[layer].oled[index].events[0]; - 1379e: f8d8 286c ldr.w r2, [r8, #2156] ; 0x86c - 137a2: eb04 0344 add.w r3, r4, r4, lsl #1 - 137a6: b2e1 uxtb r1, r4 - 137a8: 7812 ldrb r2, [r2, #0] - 137aa: eb02 1042 add.w r0, r2, r2, lsl #5 - 137ae: eb02 0280 add.w r2, r2, r0, lsl #2 - 137b2: 4413 add r3, r2 - 137b4: 442b add r3, r5 - 137b6: f813 2009 ldrb.w r2, [r3, r9] + 13866: f8d8 286c ldr.w r2, [r8, #2156] ; 0x86c + 1386a: eb04 0344 add.w r3, r4, r4, lsl #1 + 1386e: b2e1 uxtb r1, r4 + 13870: 7812 ldrb r2, [r2, #0] + 13872: eb02 1042 add.w r0, r2, r2, lsl #5 + 13876: eb02 0280 add.w r2, r2, r0, lsl #2 + 1387a: 4413 add r3, r2 + 1387c: 442b add r3, r5 + 1387e: f813 2009 ldrb.w r2, [r3, r9] if(eIndex == 0 && !settings.getDisplayNames()){ - 137ba: b922 cbnz r2, 137c6 + 13882: b922 cbnz r2, 1388e return bitRead(settings.flags, bit); - 137bc: f8d8 37fc ldr.w r3, [r8, #2044] ; 0x7fc - 137c0: 681b ldr r3, [r3, #0] - 137c2: 051b lsls r3, r3, #20 - 137c4: d521 bpl.n 1380a + 13884: f8d8 37fc ldr.w r3, [r8, #2044] ; 0x7fc + 13888: 681b ldr r3, [r3, #0] + 1388a: 051b lsls r3, r3, #20 + 1388c: d521 bpl.n 138d2 processEvent(BMC_DEVICE_GROUP_DISPLAY, BMC_DEVICE_ID_OLED, index, eIndex); - 137c6: 9200 str r2, [sp, #0] - 137c8: b2a3 uxth r3, r4 - 137ca: 2216 movs r2, #22 - 137cc: 2108 movs r1, #8 - 137ce: 4628 mov r0, r5 - 137d0: e9cd 7701 strd r7, r7, [sp, #4] - 137d4: f7f8 f852 bl b87c + 1388e: 9200 str r2, [sp, #0] + 13890: b2a3 uxth r3, r4 + 13892: 2216 movs r2, #22 + 13894: 2108 movs r1, #8 + 13896: 4628 mov r0, r5 + 13898: e9cd 7701 strd r7, r7, [sp, #4] + 1389c: f7f8 f852 bl b944 for(uint8_t index = 0 ; index < BMC_MAX_OLED ; index++){ - 137d8: 3401 adds r4, #1 - 137da: 3638 adds r6, #56 ; 0x38 - 137dc: 2c06 cmp r4, #6 - 137de: d1de bne.n 1379e - 137e0: f8da 4000 ldr.w r4, [sl] + 138a0: 3401 adds r4, #1 + 138a2: 3638 adds r6, #56 ; 0x38 + 138a4: 2c06 cmp r4, #6 + 138a6: d1de bne.n 13866 + 138a8: f8da 4000 ldr.w r4, [sl] unsigned long y = millis()-t; - 137e4: eba4 040b sub.w r4, r4, fp + 138ac: eba4 040b sub.w r4, r4, fp if(y>1){ - 137e8: 2c01 cmp r4, #1 - 137ea: d81b bhi.n 13824 + 138b0: 2c01 cmp r4, #1 + 138b2: d81b bhi.n 138ec readButtons(); - 137ec: 4628 mov r0, r5 - 137ee: f7ff fbb7 bl 12f60 + 138b4: 4628 mov r0, r5 + 138b6: f7ff fbbd bl 13034 readLeds(); - 137f2: 4628 mov r0, r5 - 137f4: f000 fdc0 bl 14378 + 138ba: 4628 mov r0, r5 + 138bc: f000 fdc2 bl 14444 readPixels(); - 137f8: 4628 mov r0, r5 - 137fa: f001 f9d5 bl 14ba8 + 138c0: 4628 mov r0, r5 + 138c2: f001 f9d7 bl 14c74 readAuxJacks(); - 137fe: 4628 mov r0, r5 + 138c6: 4628 mov r0, r5 } - 13800: b005 add sp, #20 - 13802: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 138c8: b005 add sp, #20 + 138ca: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} readAuxJacks(); - 13806: f7fe bafd b.w 11e04 + 138ce: f7fe bb05 b.w 11edc if(!oled[index].isCrc(0)){ - 1380a: f816 3c0a ldrb.w r3, [r6, #-10] - 1380e: 2b00 cmp r3, #0 - 13810: d0e2 beq.n 137d8 + 138d2: f816 3c0a ldrb.w r3, [r6, #-10] + 138d6: 2b00 cmp r3, #0 + 138d8: d0e2 beq.n 138a0 switch(n){ - 13812: 1e4b subs r3, r1, #1 - 13814: 2b04 cmp r3, #4 - 13816: f200 808f bhi.w 13938 - 1381a: e8df f003 tbb [pc, r3] - 1381e: 8b6d .short 0x8b6d - 13820: 6e89 .short 0x6e89 - 13822: 87 .byte 0x87 - 13823: 00 .byte 0x00 - 13824: 2113 movs r1, #19 - 13826: 4845 ldr r0, [pc, #276] ; (1393c ) - 13828: f018 fe8e bl 2c548 - 1382c: 2101 movs r1, #1 - 1382e: 4844 ldr r0, [pc, #272] ; (13940 ) - 13830: f018 fe8a bl 2c548 + 138da: 1e4b subs r3, r1, #1 + 138dc: 2b04 cmp r3, #4 + 138de: f200 808f bhi.w 13a00 + 138e2: e8df f003 tbb [pc, r3] + 138e6: 8b6d .short 0x8b6d + 138e8: 6e89 .short 0x6e89 + 138ea: 87 .byte 0x87 + 138eb: 00 .byte 0x00 + 138ec: 2113 movs r1, #19 + 138ee: 4845 ldr r0, [pc, #276] ; (13a04 ) + 138f0: f018 fe9e bl 2c630 + 138f4: 2101 movs r1, #1 + 138f6: 4844 ldr r0, [pc, #272] ; (13a08 ) + 138f8: f018 fe9a bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 13834: 2300 movs r3, #0 - 13836: 220a movs r2, #10 - 13838: 4621 mov r1, r4 - 1383a: 4842 ldr r0, [pc, #264] ; (13944 ) - 1383c: f016 fb36 bl 29eac - 13840: 2101 movs r1, #1 - 13842: 483f ldr r0, [pc, #252] ; (13940 ) - 13844: f018 fe80 bl 2c548 - 13848: 2102 movs r1, #2 - 1384a: 483f ldr r0, [pc, #252] ; (13948 ) - 1384c: f018 fe7c bl 2c548 + 138fc: 2300 movs r3, #0 + 138fe: 220a movs r2, #10 + 13900: 4621 mov r1, r4 + 13902: 4842 ldr r0, [pc, #264] ; (13a0c ) + 13904: f016 fb48 bl 29f98 + 13908: 2101 movs r1, #1 + 1390a: 483f ldr r0, [pc, #252] ; (13a08 ) + 1390c: f018 fe90 bl 2c630 + 13910: 2102 movs r1, #2 + 13912: 483f ldr r0, [pc, #252] ; (13a10 ) + 13914: f018 fe8c bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 13850: 483c ldr r0, [pc, #240] ; (13944 ) - 13852: f016 fb0f bl 29e74 - 13856: e7c9 b.n 137ec + 13918: 483c ldr r0, [pc, #240] ; (13a0c ) + 1391a: f016 fb21 bl 29f60 + 1391e: e7c9 b.n 138b4 CORE_PIN6_PORTCLEAR = CORE_PIN6_BITMASK; - 13858: 4b3c ldr r3, [pc, #240] ; (1394c ) - 1385a: f44f 6280 mov.w r2, #1024 ; 0x400 + 13920: 4b3c ldr r3, [pc, #240] ; (13a14 ) + 13922: f44f 6280 mov.w r2, #1024 ; 0x400 uint32_t begin = ARM_DWT_CYCCNT; - 1385e: 493c ldr r1, [pc, #240] ; (13950 ) + 13926: 493c ldr r1, [pc, #240] ; (13a18 ) CORE_PIN6_PORTCLEAR = CORE_PIN6_BITMASK; - 13860: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 13928: f8c3 2088 str.w r2, [r3, #136] ; 0x88 uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 13864: f103 738d add.w r3, r3, #18481152 ; 0x11a0000 - 13868: f8df e0f0 ldr.w lr, [pc, #240] ; 1395c - 1386c: f503 33cf add.w r3, r3, #105984 ; 0x19e00 + 1392c: f103 738d add.w r3, r3, #18481152 ; 0x11a0000 + 13930: f8df e0f0 ldr.w lr, [pc, #240] ; 13a24 + 13934: f503 33cf add.w r3, r3, #105984 ; 0x19e00 uint32_t begin = ARM_DWT_CYCCNT; - 13870: 6848 ldr r0, [r1, #4] + 13938: 6848 ldr r0, [r1, #4] uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 13872: f8de 2000 ldr.w r2, [lr] - 13876: 3383 adds r3, #131 ; 0x83 - 13878: fba3 3202 umull r3, r2, r3, r2 - 1387c: 0c92 lsrs r2, r2, #18 - 1387e: eb02 0282 add.w r2, r2, r2, lsl #2 + 1393a: f8de 2000 ldr.w r2, [lr] + 1393e: 3383 adds r3, #131 ; 0x83 + 13940: fba3 3202 umull r3, r2, r3, r2 + 13944: 0c92 lsrs r2, r2, #18 + 13946: eb02 0282 add.w r2, r2, r2, lsl #2 while (ARM_DWT_CYCCNT - begin < cycles) ; // wait - 13882: 684b ldr r3, [r1, #4] - 13884: 1a1b subs r3, r3, r0 - 13886: 429a cmp r2, r3 - 13888: d8fb bhi.n 13882 + 1394a: 684b ldr r3, [r1, #4] + 1394c: 1a1b subs r3, r3, r0 + 1394e: 429a cmp r2, r3 + 13950: d8fb bhi.n 1394a CORE_PIN6_PORTSET = CORE_PIN6_BITMASK; - 1388a: 4f30 ldr r7, [pc, #192] ; (1394c ) - 1388c: f44f 6380 mov.w r3, #1024 ; 0x400 + 13952: 4f30 ldr r7, [pc, #192] ; (13a14 ) + 13954: f44f 6380 mov.w r3, #1024 ; 0x400 for(int i = 7; i >= 0; i--){ - 13890: 2407 movs r4, #7 + 13958: 2407 movs r4, #7 return (CORE_PIN5_PINREG & CORE_PIN5_BITMASK) ? 1 : 0; - 13892: f8df a0cc ldr.w sl, [pc, #204] ; 13960 + 1395a: f8df a0cc ldr.w sl, [pc, #204] ; 13a28 bitWrite(states[mux], i, bit); - 13896: f04f 0901 mov.w r9, #1 + 1395e: f04f 0901 mov.w r9, #1 CORE_PIN7_PORTSET = CORE_PIN7_BITMASK; - 1389a: f44f 3c00 mov.w ip, #131072 ; 0x20000 + 13962: f44f 3c00 mov.w ip, #131072 ; 0x20000 uint32_t begin = ARM_DWT_CYCCNT; - 1389e: 492c ldr r1, [pc, #176] ; (13950 ) + 13966: 492c ldr r1, [pc, #176] ; (13a18 ) uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 138a0: f8df 80c0 ldr.w r8, [pc, #192] ; 13964 + 13968: f8df 80c0 ldr.w r8, [pc, #192] ; 13a2c CORE_PIN6_PORTSET = CORE_PIN6_BITMASK; - 138a4: f8c7 3084 str.w r3, [r7, #132] ; 0x84 + 1396c: f8c7 3084 str.w r3, [r7, #132] ; 0x84 return (CORE_PIN5_PINREG & CORE_PIN5_BITMASK) ? 1 : 0; - 138a8: f8da 3008 ldr.w r3, [sl, #8] - 138ac: fa09 f204 lsl.w r2, r9, r4 - 138b0: f413 7f80 tst.w r3, #256 ; 0x100 - 138b4: f896 3834 ldrb.w r3, [r6, #2100] ; 0x834 - 138b8: d11b bne.n 138f2 - 138ba: ea23 0302 bic.w r3, r3, r2 - 138be: f886 3834 strb.w r3, [r6, #2100] ; 0x834 + 13970: f8da 3008 ldr.w r3, [sl, #8] + 13974: fa09 f204 lsl.w r2, r9, r4 + 13978: f413 7f80 tst.w r3, #256 ; 0x100 + 1397c: f896 3854 ldrb.w r3, [r6, #2132] ; 0x854 + 13980: d11b bne.n 139ba + 13982: ea23 0302 bic.w r3, r3, r2 + 13986: f886 3854 strb.w r3, [r6, #2132] ; 0x854 CORE_PIN7_PORTSET = CORE_PIN7_BITMASK; - 138c2: f8c7 c084 str.w ip, [r7, #132] ; 0x84 + 1398a: f8c7 c084 str.w ip, [r7, #132] ; 0x84 uint32_t begin = ARM_DWT_CYCCNT; - 138c6: 6848 ldr r0, [r1, #4] + 1398e: 6848 ldr r0, [r1, #4] uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 138c8: f8de 2000 ldr.w r2, [lr] - 138cc: fba8 3202 umull r3, r2, r8, r2 - 138d0: 0c92 lsrs r2, r2, #18 - 138d2: eb02 0282 add.w r2, r2, r2, lsl #2 + 13990: f8de 2000 ldr.w r2, [lr] + 13994: fba8 3202 umull r3, r2, r8, r2 + 13998: 0c92 lsrs r2, r2, #18 + 1399a: eb02 0282 add.w r2, r2, r2, lsl #2 while (ARM_DWT_CYCCNT - begin < cycles) ; // wait - 138d6: 684b ldr r3, [r1, #4] - 138d8: 1a1b subs r3, r3, r0 - 138da: 429a cmp r2, r3 - 138dc: d8fb bhi.n 138d6 + 1399e: 684b ldr r3, [r1, #4] + 139a0: 1a1b subs r3, r3, r0 + 139a2: 429a cmp r2, r3 + 139a4: d8fb bhi.n 1399e for(int i = 7; i >= 0; i--){ - 138de: 3c01 subs r4, #1 + 139a6: 3c01 subs r4, #1 CORE_PIN7_PORTCLEAR = CORE_PIN7_BITMASK; - 138e0: f8c7 c088 str.w ip, [r7, #136] ; 0x88 - 138e4: 1c62 adds r2, r4, #1 - 138e6: d1df bne.n 138a8 + 139a8: f8c7 c088 str.w ip, [r7, #136] ; 0x88 + 139ac: 1c62 adds r2, r4, #1 + 139ae: d1df bne.n 13970 elapsedMicros & operator = (unsigned long val) { us = micros() - val; return *this; } - 138e8: f016 fe44 bl 2a574 - 138ec: f8c6 0838 str.w r0, [r6, #2104] ; 0x838 - 138f0: e742 b.n 13778 + 139b0: f016 fe54 bl 2a65c + 139b4: f8c6 0858 str.w r0, [r6, #2136] ; 0x858 + 139b8: e742 b.n 13840 bitWrite(states[mux], i, bit); - 138f2: 4313 orrs r3, r2 - 138f4: b2db uxtb r3, r3 - 138f6: e7e2 b.n 138be - 138f8: 2120 movs r1, #32 + 139ba: 4313 orrs r3, r2 + 139bc: b2db uxtb r3, r3 + 139be: e7e2 b.n 13986 + 139c0: 2120 movs r1, #32 txBuffer[0] = (address << 1); - 138fa: 22e0 movs r2, #224 ; 0xe0 + 139c2: 22e0 movs r2, #224 ; 0xe0 transmitting = 1; - 138fc: 4815 ldr r0, [pc, #84] ; (13954 ) - 138fe: 2301 movs r3, #1 + 139c4: 4815 ldr r0, [pc, #84] ; (13a1c ) + 139c6: 2301 movs r3, #1 txBuffer[0] = (address << 1); - 13900: f880 20a5 strb.w r2, [r0, #165] ; 0xa5 + 139c8: f880 20a5 strb.w r2, [r0, #165] ; 0xa5 transmitting = 1; - 13904: f880 3130 strb.w r3, [r0, #304] ; 0x130 + 139cc: f880 3130 strb.w r3, [r0, #304] ; 0x130 txBufferLength = 1; - 13908: f880 312f strb.w r3, [r0, #303] ; 0x12f + 139d0: f880 312f strb.w r3, [r0, #303] ; 0x12f Wire.write(mask); - 1390c: f011 fc54 bl 251b8 + 139d4: f011 fc66 bl 252a4 return endTransmission(1); - 13910: 2301 movs r3, #1 - 13912: 4810 ldr r0, [pc, #64] ; (13954 ) - 13914: 4619 mov r1, r3 - 13916: f011 fd5d bl 253d4 + 139d8: 2301 movs r3, #1 + 139da: 4810 ldr r0, [pc, #64] ; (13a1c ) + 139dc: 4619 mov r1, r3 + 139de: f011 fd6f bl 254c0 display.clearDisplay(); - 1391a: 4630 mov r0, r6 + 139e2: 4630 mov r0, r6 crc = 0; - 1391c: f806 7c0a strb.w r7, [r6, #-10] + 139e4: f806 7c0a strb.w r7, [r6, #-10] display.clearDisplay(); - 13920: f004 ffd8 bl 188d4 + 139e8: f004 ffe6 bl 189b8 display.display(); - 13924: 4630 mov r0, r6 - 13926: f005 f841 bl 189ac + 139ec: 4630 mov r0, r6 + 139ee: f005 f84f bl 18a90 } - 1392a: e755 b.n 137d8 + 139f2: e755 b.n 138a0 case 5: return BMC_DEVICE_UI_OLED_6; - 1392c: 2102 movs r1, #2 - 1392e: e7e4 b.n 138fa + 139f4: 2102 movs r1, #2 + 139f6: e7e4 b.n 139c2 case 3: return BMC_DEVICE_UI_OLED_4; - 13930: 2108 movs r1, #8 - 13932: e7e2 b.n 138fa + 139f8: 2108 movs r1, #8 + 139fa: e7e2 b.n 139c2 case 2: return BMC_DEVICE_UI_OLED_3; - 13934: 2110 movs r1, #16 - 13936: e7e0 b.n 138fa - 13938: 2101 movs r1, #1 - 1393a: e7de b.n 138fa - 1393c: 20002348 .word 0x20002348 - 13940: 200023ec .word 0x200023ec - 13944: 20004ba8 .word 0x20004ba8 - 13948: 200039fc .word 0x200039fc - 1394c: 42004000 .word 0x42004000 - 13950: e0001000 .word 0xe0001000 - 13954: 2000b0f8 .word 0x2000b0f8 - 13958: 2000bae8 .word 0x2000bae8 - 1395c: 20004ba4 .word 0x20004ba4 - 13960: 4200c000 .word 0x4200c000 - 13964: 431bde83 .word 0x431bde83 - -00013968 : + 139fc: 2110 movs r1, #16 + 139fe: e7e0 b.n 139c2 + 13a00: 2101 movs r1, #1 + 13a02: e7de b.n 139c2 + 13a04: 20002348 .word 0x20002348 + 13a08: 200023ec .word 0x200023ec + 13a0c: 20004c68 .word 0x20004c68 + 13a10: 20003abc .word 0x20003abc + 13a14: 42004000 .word 0x42004000 + 13a18: e0001000 .word 0xe0001000 + 13a1c: 2000b118 .word 0x2000b118 + 13a20: 2000bb08 .word 0x2000bb08 + 13a24: 20004c64 .word 0x20004c64 + 13a28: 4200c000 .word 0x4200c000 + 13a2c: 431bde83 .word 0x431bde83 + +00013a30 : void begin(uint8_t t_pin){ - 13968: b538 push {r3, r4, r5, lr} + 13a30: b538 push {r3, r4, r5, lr} if(pin!=255){ - 1396a: 7803 ldrb r3, [r0, #0] - 1396c: 2bff cmp r3, #255 ; 0xff - 1396e: d13d bne.n 139ec + 13a32: 7803 ldrb r3, [r0, #0] + 13a34: 2bff cmp r3, #255 ; 0xff + 13a36: d13d bne.n 13ab4 if(t_pin==255){ - 13970: 29ff cmp r1, #255 ; 0xff - 13972: 460d mov r5, r1 - 13974: f000 8114 beq.w 13ba0 + 13a38: 29ff cmp r1, #255 ; 0xff + 13a3a: 460d mov r5, r1 + 13a3c: f000 8114 beq.w 13c68 switch(index){ - 13978: 2927 cmp r1, #39 ; 0x27 - 1397a: d838 bhi.n 139ee - 1397c: 4604 mov r4, r0 + 13a40: 2927 cmp r1, #39 ; 0x27 + 13a42: d838 bhi.n 13ab6 + 13a44: 4604 mov r4, r0 pinMode(pin, OUTPUT); - 1397e: 2101 movs r1, #1 - 13980: 4628 mov r0, r5 + 13a46: 2101 movs r1, #1 + 13a48: 4628 mov r0, r5 pin = t_pin; - 13982: 7025 strb r5, [r4, #0] + 13a4a: 7025 strb r5, [r4, #0] pinMode(pin, OUTPUT); - 13984: f016 fe5c bl 2a640 + 13a4c: f016 fe6c bl 2a728 flags.write(BMC_FLAG_LED_IS_PWM, BMCBuildData::isPwmPin(pin)); - 13988: 7820 ldrb r0, [r4, #0] + 13a50: 7820 ldrb r0, [r4, #0] switch(index){ - 1398a: 280f cmp r0, #15 - 1398c: d90b bls.n 139a6 - 1398e: f1a0 0312 sub.w r3, r0, #18 - 13992: b2db uxtb r3, r3 - 13994: 2b15 cmp r3, #21 - 13996: f200 81ef bhi.w 13d78 - 1399a: 4a78 ldr r2, [pc, #480] ; (13b7c ) - 1399c: fa22 f303 lsr.w r3, r2, r3 - 139a0: 07d9 lsls r1, r3, #31 - 139a2: f140 81e9 bpl.w 13d78 + 13a52: 280f cmp r0, #15 + 13a54: d90b bls.n 13a6e + 13a56: f1a0 0312 sub.w r3, r0, #18 + 13a5a: b2db uxtb r3, r3 + 13a5c: 2b15 cmp r3, #21 + 13a5e: f200 81ef bhi.w 13e40 + 13a62: 4a78 ldr r2, [pc, #480] ; (13c44 ) + 13a64: fa22 f303 lsr.w r3, r2, r3 + 13a68: 07d9 lsls r1, r3, #31 + 13a6a: f140 81e9 bpl.w 13e40 bitWrite(flags, bit, value); - 139a6: 7863 ldrb r3, [r4, #1] - 139a8: f043 0320 orr.w r3, r3, #32 + 13a6e: 7863 ldrb r3, [r4, #1] + 13a70: f043 0320 orr.w r3, r3, #32 if(flags.read(BMC_FLAG_LED_IS_PWM)){ - 139ac: 069a lsls r2, r3, #26 - 139ae: 7063 strb r3, [r4, #1] - 139b0: f100 81bc bmi.w 13d2c + 13a74: 069a lsls r2, r3, #26 + 13a76: 7063 strb r3, [r4, #1] + 13a78: f100 81bc bmi.w 13df4 return bitRead(flags, bit); - 139b4: f3c3 1180 ubfx r1, r3, #6, #1 - 139b8: f3c3 0280 ubfx r2, r3, #2, #1 + 13a7c: f3c3 1180 ubfx r1, r3, #6, #1 + 13a80: f3c3 0280 ubfx r2, r3, #2, #1 bitWrite(flags, bit, value); - 139bc: 2300 movs r3, #0 - 139be: b109 cbz r1, 139c4 - 139c0: f043 0340 orr.w r3, r3, #64 ; 0x40 - 139c4: b10a cbz r2, 139ca - 139c6: f043 0304 orr.w r3, r3, #4 + 13a84: 2300 movs r3, #0 + 13a86: b109 cbz r1, 13a8c + 13a88: f043 0340 orr.w r3, r3, #64 ; 0x40 + 13a8c: b10a cbz r2, 13a92 + 13a8e: f043 0304 orr.w r3, r3, #4 blinkerSpeed = 0; - 139ca: 2200 movs r2, #0 + 13a92: 2200 movs r2, #0 if(isPwmCapable()){ - 139cc: f3c3 1140 ubfx r1, r3, #5, #1 - 139d0: 7063 strb r3, [r4, #1] + 13a94: f3c3 1140 ubfx r1, r3, #5, #1 + 13a98: 7063 strb r3, [r4, #1] blinkerSpeed = 0; - 139d2: 70a2 strb r2, [r4, #2] + 13a9a: 70a2 strb r2, [r4, #2] quickBlinkerCount = 0; - 139d4: 7322 strb r2, [r4, #12] + 13a9c: 7322 strb r2, [r4, #12] if(isPwmCapable()){ - 139d6: 069a lsls r2, r3, #26 - 139d8: f140 81d6 bpl.w 13d88 + 13a9e: 069a lsls r2, r3, #26 + 13aa0: f140 81d6 bpl.w 13e50 if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 139dc: 1199 asrs r1, r3, #6 - 139de: f000 81cf beq.w 13d80 + 13aa4: 1199 asrs r1, r3, #6 + 13aa6: f000 81cf beq.w 13e48 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 139e2: 2101 movs r1, #1 + 13aaa: 2101 movs r1, #1 } - 139e4: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 13aac: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 139e8: f016 bfb6 b.w 2a958 - } - 139ec: bd38 pop {r3, r4, r5, pc} - 139ee: 2100 movs r1, #0 - 139f0: 4863 ldr r0, [pc, #396] ; (13b80 ) - 139f2: f018 fda9 bl 2c548 - 139f6: 4863 ldr r0, [pc, #396] ; (13b84 ) - 139f8: f016 fa3c bl 29e74 - 139fc: 212e movs r1, #46 ; 0x2e - 139fe: 4862 ldr r0, [pc, #392] ; (13b88 ) - 13a00: f018 fda2 bl 2c548 - 13a04: 485f ldr r0, [pc, #380] ; (13b84 ) - 13a06: f016 fa35 bl 29e74 - 13a0a: 212e movs r1, #46 ; 0x2e - 13a0c: 485e ldr r0, [pc, #376] ; (13b88 ) - 13a0e: f018 fd9b bl 2c548 - 13a12: 485c ldr r0, [pc, #368] ; (13b84 ) - 13a14: f016 fa2e bl 29e74 - 13a18: 212e movs r1, #46 ; 0x2e - 13a1a: 485b ldr r0, [pc, #364] ; (13b88 ) - 13a1c: f018 fd94 bl 2c548 - 13a20: 4858 ldr r0, [pc, #352] ; (13b84 ) - 13a22: f016 fa27 bl 29e74 - 13a26: 212e movs r1, #46 ; 0x2e - 13a28: 4857 ldr r0, [pc, #348] ; (13b88 ) - 13a2a: f018 fd8d bl 2c548 - 13a2e: 4855 ldr r0, [pc, #340] ; (13b84 ) - 13a30: f016 fa20 bl 29e74 - 13a34: 2101 movs r1, #1 - 13a36: 4855 ldr r0, [pc, #340] ; (13b8c ) - 13a38: f018 fd86 bl 2c548 - 13a3c: 2104 movs r1, #4 - 13a3e: 4854 ldr r0, [pc, #336] ; (13b90 ) - 13a40: f018 fd82 bl 2c548 - 13a44: 484f ldr r0, [pc, #316] ; (13b84 ) - 13a46: f016 fa15 bl 29e74 - 13a4a: 2101 movs r1, #1 - 13a4c: 484f ldr r0, [pc, #316] ; (13b8c ) - 13a4e: f018 fd7b bl 2c548 + 13ab0: f016 bfc6 b.w 2aa40 + } + 13ab4: bd38 pop {r3, r4, r5, pc} + 13ab6: 2100 movs r1, #0 + 13ab8: 4863 ldr r0, [pc, #396] ; (13c48 ) + 13aba: f018 fdb9 bl 2c630 + 13abe: 4863 ldr r0, [pc, #396] ; (13c4c ) + 13ac0: f016 fa4e bl 29f60 + 13ac4: 212e movs r1, #46 ; 0x2e + 13ac6: 4862 ldr r0, [pc, #392] ; (13c50 ) + 13ac8: f018 fdb2 bl 2c630 + 13acc: 485f ldr r0, [pc, #380] ; (13c4c ) + 13ace: f016 fa47 bl 29f60 + 13ad2: 212e movs r1, #46 ; 0x2e + 13ad4: 485e ldr r0, [pc, #376] ; (13c50 ) + 13ad6: f018 fdab bl 2c630 + 13ada: 485c ldr r0, [pc, #368] ; (13c4c ) + 13adc: f016 fa40 bl 29f60 + 13ae0: 212e movs r1, #46 ; 0x2e + 13ae2: 485b ldr r0, [pc, #364] ; (13c50 ) + 13ae4: f018 fda4 bl 2c630 + 13ae8: 4858 ldr r0, [pc, #352] ; (13c4c ) + 13aea: f016 fa39 bl 29f60 + 13aee: 212e movs r1, #46 ; 0x2e + 13af0: 4857 ldr r0, [pc, #348] ; (13c50 ) + 13af2: f018 fd9d bl 2c630 + 13af6: 4855 ldr r0, [pc, #340] ; (13c4c ) + 13af8: f016 fa32 bl 29f60 + 13afc: 2101 movs r1, #1 + 13afe: 4855 ldr r0, [pc, #340] ; (13c54 ) + 13b00: f018 fd96 bl 2c630 + 13b04: 2104 movs r1, #4 + 13b06: 4854 ldr r0, [pc, #336] ; (13c58 ) + 13b08: f018 fd92 bl 2c630 + 13b0c: 484f ldr r0, [pc, #316] ; (13c4c ) + 13b0e: f016 fa27 bl 29f60 + 13b12: 2101 movs r1, #1 + 13b14: 484f ldr r0, [pc, #316] ; (13c54 ) + 13b16: f018 fd8b bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 13a52: 2300 movs r3, #0 - 13a54: 220a movs r2, #10 - 13a56: 4629 mov r1, r5 - 13a58: 484a ldr r0, [pc, #296] ; (13b84 ) - 13a5a: f016 fa27 bl 29eac + 13b1a: 2300 movs r3, #0 + 13b1c: 220a movs r2, #10 + 13b1e: 4629 mov r1, r5 + 13b20: 484a ldr r0, [pc, #296] ; (13c4c ) + 13b22: f016 fa39 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 13a5e: 4849 ldr r0, [pc, #292] ; (13b84 ) - 13a60: f016 fa08 bl 29e74 - 13a64: 2101 movs r1, #1 - 13a66: 4849 ldr r0, [pc, #292] ; (13b8c ) - 13a68: f018 fd6e bl 2c548 - 13a6c: 213d movs r1, #61 ; 0x3d - 13a6e: 4849 ldr r0, [pc, #292] ; (13b94 ) - 13a70: f018 fd6a bl 2c548 + 13b26: 4849 ldr r0, [pc, #292] ; (13c4c ) + 13b28: f016 fa1a bl 29f60 + 13b2c: 2101 movs r1, #1 + 13b2e: 4849 ldr r0, [pc, #292] ; (13c54 ) + 13b30: f018 fd7e bl 2c630 + 13b34: 213d movs r1, #61 ; 0x3d + 13b36: 4849 ldr r0, [pc, #292] ; (13c5c ) + 13b38: f018 fd7a bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 13a74: 4843 ldr r0, [pc, #268] ; (13b84 ) - 13a76: f016 f9fd bl 29e74 - 13a7a: 212e movs r1, #46 ; 0x2e - 13a7c: 4842 ldr r0, [pc, #264] ; (13b88 ) - 13a7e: f018 fd63 bl 2c548 - 13a82: 4840 ldr r0, [pc, #256] ; (13b84 ) - 13a84: f016 f9f6 bl 29e74 - 13a88: 212e movs r1, #46 ; 0x2e - 13a8a: 483f ldr r0, [pc, #252] ; (13b88 ) - 13a8c: f018 fd5c bl 2c548 - 13a90: 483c ldr r0, [pc, #240] ; (13b84 ) - 13a92: f016 f9ef bl 29e74 - 13a96: 212e movs r1, #46 ; 0x2e - 13a98: 483b ldr r0, [pc, #236] ; (13b88 ) - 13a9a: f018 fd55 bl 2c548 - 13a9e: 4839 ldr r0, [pc, #228] ; (13b84 ) - 13aa0: f016 f9e8 bl 29e74 - 13aa4: 212e movs r1, #46 ; 0x2e - 13aa6: 4838 ldr r0, [pc, #224] ; (13b88 ) - 13aa8: f018 fd4e bl 2c548 - 13aac: 4835 ldr r0, [pc, #212] ; (13b84 ) - 13aae: f016 f9e1 bl 29e74 - 13ab2: 2100 movs r1, #0 - 13ab4: 4832 ldr r0, [pc, #200] ; (13b80 ) - 13ab6: f018 fd47 bl 2c548 - 13aba: 4832 ldr r0, [pc, #200] ; (13b84 ) - 13abc: f016 f9da bl 29e74 - 13ac0: 2100 movs r1, #0 - 13ac2: 482f ldr r0, [pc, #188] ; (13b80 ) - 13ac4: f018 fd40 bl 2c548 - 13ac8: 482e ldr r0, [pc, #184] ; (13b84 ) - 13aca: f016 f9d3 bl 29e74 - 13ace: 212e movs r1, #46 ; 0x2e - 13ad0: 482d ldr r0, [pc, #180] ; (13b88 ) - 13ad2: f018 fd39 bl 2c548 - 13ad6: 482b ldr r0, [pc, #172] ; (13b84 ) - 13ad8: f016 f9cc bl 29e74 - 13adc: 212e movs r1, #46 ; 0x2e - 13ade: 482a ldr r0, [pc, #168] ; (13b88 ) - 13ae0: f018 fd32 bl 2c548 - 13ae4: 4827 ldr r0, [pc, #156] ; (13b84 ) - 13ae6: f016 f9c5 bl 29e74 - 13aea: 212e movs r1, #46 ; 0x2e - 13aec: 4826 ldr r0, [pc, #152] ; (13b88 ) - 13aee: f018 fd2b bl 2c548 - 13af2: 4824 ldr r0, [pc, #144] ; (13b84 ) - 13af4: f016 f9be bl 29e74 - 13af8: 212e movs r1, #46 ; 0x2e - 13afa: 4823 ldr r0, [pc, #140] ; (13b88 ) - 13afc: f018 fd24 bl 2c548 - 13b00: 4820 ldr r0, [pc, #128] ; (13b84 ) - 13b02: f016 f9b7 bl 29e74 - 13b06: 2101 movs r1, #1 - 13b08: 4820 ldr r0, [pc, #128] ; (13b8c ) - 13b0a: f018 fd1d bl 2c548 - 13b0e: 2118 movs r1, #24 - 13b10: 4821 ldr r0, [pc, #132] ; (13b98 ) - 13b12: f018 fd19 bl 2c548 - 13b16: 481b ldr r0, [pc, #108] ; (13b84 ) - 13b18: f016 f9ac bl 29e74 - 13b1c: 2101 movs r1, #1 - 13b1e: 481b ldr r0, [pc, #108] ; (13b8c ) - 13b20: f018 fd12 bl 2c548 - 13b24: 213f movs r1, #63 ; 0x3f - 13b26: 481d ldr r0, [pc, #116] ; (13b9c ) - 13b28: f018 fd0e bl 2c548 - 13b2c: 4815 ldr r0, [pc, #84] ; (13b84 ) - 13b2e: f016 f9a1 bl 29e74 - 13b32: 212e movs r1, #46 ; 0x2e - 13b34: 4814 ldr r0, [pc, #80] ; (13b88 ) - 13b36: f018 fd07 bl 2c548 - 13b3a: 4812 ldr r0, [pc, #72] ; (13b84 ) - 13b3c: f016 f99a bl 29e74 - 13b40: 212e movs r1, #46 ; 0x2e - 13b42: 4811 ldr r0, [pc, #68] ; (13b88 ) - 13b44: f018 fd00 bl 2c548 - 13b48: 480e ldr r0, [pc, #56] ; (13b84 ) - 13b4a: f016 f993 bl 29e74 - 13b4e: 212e movs r1, #46 ; 0x2e - 13b50: 480d ldr r0, [pc, #52] ; (13b88 ) - 13b52: f018 fcf9 bl 2c548 - 13b56: 480b ldr r0, [pc, #44] ; (13b84 ) - 13b58: f016 f98c bl 29e74 - 13b5c: 212e movs r1, #46 ; 0x2e - 13b5e: 480a ldr r0, [pc, #40] ; (13b88 ) - 13b60: f018 fcf2 bl 2c548 - 13b64: 4807 ldr r0, [pc, #28] ; (13b84 ) - 13b66: f016 f985 bl 29e74 - 13b6a: 2100 movs r1, #0 - 13b6c: 4804 ldr r0, [pc, #16] ; (13b80 ) - 13b6e: f018 fceb bl 2c548 - 13b72: 4804 ldr r0, [pc, #16] ; (13b84 ) - 13b74: f016 f97e bl 29e74 - 13b78: e7fe b.n 13b78 - 13b7a: bf00 nop - 13b7c: 003f8cf3 .word 0x003f8cf3 - 13b80: 20003c58 .word 0x20003c58 - 13b84: 20004ba8 .word 0x20004ba8 - 13b88: 20001950 .word 0x20001950 - 13b8c: 200023ec .word 0x200023ec - 13b90: 20001980 .word 0x20001980 - 13b94: 200036f0 .word 0x200036f0 - 13b98: 200019d0 .word 0x200019d0 - 13b9c: 200019ec .word 0x200019ec - 13ba0: 2100 movs r1, #0 - 13ba2: 487b ldr r0, [pc, #492] ; (13d90 ) - 13ba4: f018 fcd0 bl 2c548 - 13ba8: 487a ldr r0, [pc, #488] ; (13d94 ) - 13baa: f016 f963 bl 29e74 - 13bae: 212e movs r1, #46 ; 0x2e - 13bb0: 4879 ldr r0, [pc, #484] ; (13d98 ) - 13bb2: f018 fcc9 bl 2c548 - 13bb6: 4877 ldr r0, [pc, #476] ; (13d94 ) - 13bb8: f016 f95c bl 29e74 - 13bbc: 212e movs r1, #46 ; 0x2e - 13bbe: 4876 ldr r0, [pc, #472] ; (13d98 ) - 13bc0: f018 fcc2 bl 2c548 - 13bc4: 4873 ldr r0, [pc, #460] ; (13d94 ) - 13bc6: f016 f955 bl 29e74 - 13bca: 212e movs r1, #46 ; 0x2e - 13bcc: 4872 ldr r0, [pc, #456] ; (13d98 ) - 13bce: f018 fcbb bl 2c548 - 13bd2: 4870 ldr r0, [pc, #448] ; (13d94 ) - 13bd4: f016 f94e bl 29e74 - 13bd8: 212e movs r1, #46 ; 0x2e - 13bda: 486f ldr r0, [pc, #444] ; (13d98 ) - 13bdc: f018 fcb4 bl 2c548 - 13be0: 486c ldr r0, [pc, #432] ; (13d94 ) - 13be2: f016 f947 bl 29e74 - 13be6: 2101 movs r1, #1 - 13be8: 486c ldr r0, [pc, #432] ; (13d9c ) - 13bea: f018 fcad bl 2c548 - 13bee: 2104 movs r1, #4 - 13bf0: 486b ldr r0, [pc, #428] ; (13da0 ) - 13bf2: f018 fca9 bl 2c548 - 13bf6: 4867 ldr r0, [pc, #412] ; (13d94 ) - 13bf8: f016 f93c bl 29e74 - 13bfc: 2101 movs r1, #1 - 13bfe: 4867 ldr r0, [pc, #412] ; (13d9c ) - 13c00: f018 fca2 bl 2c548 + 13b3c: 4843 ldr r0, [pc, #268] ; (13c4c ) + 13b3e: f016 fa0f bl 29f60 + 13b42: 212e movs r1, #46 ; 0x2e + 13b44: 4842 ldr r0, [pc, #264] ; (13c50 ) + 13b46: f018 fd73 bl 2c630 + 13b4a: 4840 ldr r0, [pc, #256] ; (13c4c ) + 13b4c: f016 fa08 bl 29f60 + 13b50: 212e movs r1, #46 ; 0x2e + 13b52: 483f ldr r0, [pc, #252] ; (13c50 ) + 13b54: f018 fd6c bl 2c630 + 13b58: 483c ldr r0, [pc, #240] ; (13c4c ) + 13b5a: f016 fa01 bl 29f60 + 13b5e: 212e movs r1, #46 ; 0x2e + 13b60: 483b ldr r0, [pc, #236] ; (13c50 ) + 13b62: f018 fd65 bl 2c630 + 13b66: 4839 ldr r0, [pc, #228] ; (13c4c ) + 13b68: f016 f9fa bl 29f60 + 13b6c: 212e movs r1, #46 ; 0x2e + 13b6e: 4838 ldr r0, [pc, #224] ; (13c50 ) + 13b70: f018 fd5e bl 2c630 + 13b74: 4835 ldr r0, [pc, #212] ; (13c4c ) + 13b76: f016 f9f3 bl 29f60 + 13b7a: 2100 movs r1, #0 + 13b7c: 4832 ldr r0, [pc, #200] ; (13c48 ) + 13b7e: f018 fd57 bl 2c630 + 13b82: 4832 ldr r0, [pc, #200] ; (13c4c ) + 13b84: f016 f9ec bl 29f60 + 13b88: 2100 movs r1, #0 + 13b8a: 482f ldr r0, [pc, #188] ; (13c48 ) + 13b8c: f018 fd50 bl 2c630 + 13b90: 482e ldr r0, [pc, #184] ; (13c4c ) + 13b92: f016 f9e5 bl 29f60 + 13b96: 212e movs r1, #46 ; 0x2e + 13b98: 482d ldr r0, [pc, #180] ; (13c50 ) + 13b9a: f018 fd49 bl 2c630 + 13b9e: 482b ldr r0, [pc, #172] ; (13c4c ) + 13ba0: f016 f9de bl 29f60 + 13ba4: 212e movs r1, #46 ; 0x2e + 13ba6: 482a ldr r0, [pc, #168] ; (13c50 ) + 13ba8: f018 fd42 bl 2c630 + 13bac: 4827 ldr r0, [pc, #156] ; (13c4c ) + 13bae: f016 f9d7 bl 29f60 + 13bb2: 212e movs r1, #46 ; 0x2e + 13bb4: 4826 ldr r0, [pc, #152] ; (13c50 ) + 13bb6: f018 fd3b bl 2c630 + 13bba: 4824 ldr r0, [pc, #144] ; (13c4c ) + 13bbc: f016 f9d0 bl 29f60 + 13bc0: 212e movs r1, #46 ; 0x2e + 13bc2: 4823 ldr r0, [pc, #140] ; (13c50 ) + 13bc4: f018 fd34 bl 2c630 + 13bc8: 4820 ldr r0, [pc, #128] ; (13c4c ) + 13bca: f016 f9c9 bl 29f60 + 13bce: 2101 movs r1, #1 + 13bd0: 4820 ldr r0, [pc, #128] ; (13c54 ) + 13bd2: f018 fd2d bl 2c630 + 13bd6: 2118 movs r1, #24 + 13bd8: 4821 ldr r0, [pc, #132] ; (13c60 ) + 13bda: f018 fd29 bl 2c630 + 13bde: 481b ldr r0, [pc, #108] ; (13c4c ) + 13be0: f016 f9be bl 29f60 + 13be4: 2101 movs r1, #1 + 13be6: 481b ldr r0, [pc, #108] ; (13c54 ) + 13be8: f018 fd22 bl 2c630 + 13bec: 213f movs r1, #63 ; 0x3f + 13bee: 481d ldr r0, [pc, #116] ; (13c64 ) + 13bf0: f018 fd1e bl 2c630 + 13bf4: 4815 ldr r0, [pc, #84] ; (13c4c ) + 13bf6: f016 f9b3 bl 29f60 + 13bfa: 212e movs r1, #46 ; 0x2e + 13bfc: 4814 ldr r0, [pc, #80] ; (13c50 ) + 13bfe: f018 fd17 bl 2c630 + 13c02: 4812 ldr r0, [pc, #72] ; (13c4c ) + 13c04: f016 f9ac bl 29f60 + 13c08: 212e movs r1, #46 ; 0x2e + 13c0a: 4811 ldr r0, [pc, #68] ; (13c50 ) + 13c0c: f018 fd10 bl 2c630 + 13c10: 480e ldr r0, [pc, #56] ; (13c4c ) + 13c12: f016 f9a5 bl 29f60 + 13c16: 212e movs r1, #46 ; 0x2e + 13c18: 480d ldr r0, [pc, #52] ; (13c50 ) + 13c1a: f018 fd09 bl 2c630 + 13c1e: 480b ldr r0, [pc, #44] ; (13c4c ) + 13c20: f016 f99e bl 29f60 + 13c24: 212e movs r1, #46 ; 0x2e + 13c26: 480a ldr r0, [pc, #40] ; (13c50 ) + 13c28: f018 fd02 bl 2c630 + 13c2c: 4807 ldr r0, [pc, #28] ; (13c4c ) + 13c2e: f016 f997 bl 29f60 + 13c32: 2100 movs r1, #0 + 13c34: 4804 ldr r0, [pc, #16] ; (13c48 ) + 13c36: f018 fcfb bl 2c630 + 13c3a: 4804 ldr r0, [pc, #16] ; (13c4c ) + 13c3c: f016 f990 bl 29f60 + 13c40: e7fe b.n 13c40 + 13c42: bf00 nop + 13c44: 003f8cf3 .word 0x003f8cf3 + 13c48: 20003d18 .word 0x20003d18 + 13c4c: 20004c68 .word 0x20004c68 + 13c50: 20001950 .word 0x20001950 + 13c54: 200023ec .word 0x200023ec + 13c58: 20001980 .word 0x20001980 + 13c5c: 200037b0 .word 0x200037b0 + 13c60: 200019d0 .word 0x200019d0 + 13c64: 200019ec .word 0x200019ec + 13c68: 2100 movs r1, #0 + 13c6a: 487b ldr r0, [pc, #492] ; (13e58 ) + 13c6c: f018 fce0 bl 2c630 + 13c70: 487a ldr r0, [pc, #488] ; (13e5c ) + 13c72: f016 f975 bl 29f60 + 13c76: 212e movs r1, #46 ; 0x2e + 13c78: 4879 ldr r0, [pc, #484] ; (13e60 ) + 13c7a: f018 fcd9 bl 2c630 + 13c7e: 4877 ldr r0, [pc, #476] ; (13e5c ) + 13c80: f016 f96e bl 29f60 + 13c84: 212e movs r1, #46 ; 0x2e + 13c86: 4876 ldr r0, [pc, #472] ; (13e60 ) + 13c88: f018 fcd2 bl 2c630 + 13c8c: 4873 ldr r0, [pc, #460] ; (13e5c ) + 13c8e: f016 f967 bl 29f60 + 13c92: 212e movs r1, #46 ; 0x2e + 13c94: 4872 ldr r0, [pc, #456] ; (13e60 ) + 13c96: f018 fccb bl 2c630 + 13c9a: 4870 ldr r0, [pc, #448] ; (13e5c ) + 13c9c: f016 f960 bl 29f60 + 13ca0: 212e movs r1, #46 ; 0x2e + 13ca2: 486f ldr r0, [pc, #444] ; (13e60 ) + 13ca4: f018 fcc4 bl 2c630 + 13ca8: 486c ldr r0, [pc, #432] ; (13e5c ) + 13caa: f016 f959 bl 29f60 + 13cae: 2101 movs r1, #1 + 13cb0: 486c ldr r0, [pc, #432] ; (13e64 ) + 13cb2: f018 fcbd bl 2c630 + 13cb6: 2104 movs r1, #4 + 13cb8: 486b ldr r0, [pc, #428] ; (13e68 ) + 13cba: f018 fcb9 bl 2c630 + 13cbe: 4867 ldr r0, [pc, #412] ; (13e5c ) + 13cc0: f016 f94e bl 29f60 + 13cc4: 2101 movs r1, #1 + 13cc6: 4867 ldr r0, [pc, #412] ; (13e64 ) + 13cc8: f018 fcb2 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 13c04: 2300 movs r3, #0 - 13c06: 220a movs r2, #10 - 13c08: 4629 mov r1, r5 - 13c0a: 4862 ldr r0, [pc, #392] ; (13d94 ) - 13c0c: f016 f94e bl 29eac + 13ccc: 2300 movs r3, #0 + 13cce: 220a movs r2, #10 + 13cd0: 4629 mov r1, r5 + 13cd2: 4862 ldr r0, [pc, #392] ; (13e5c ) + 13cd4: f016 f960 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 13c10: 4860 ldr r0, [pc, #384] ; (13d94 ) - 13c12: f016 f92f bl 29e74 - 13c16: 2101 movs r1, #1 - 13c18: 4860 ldr r0, [pc, #384] ; (13d9c ) - 13c1a: f018 fc95 bl 2c548 - 13c1e: 2147 movs r1, #71 ; 0x47 - 13c20: 4860 ldr r0, [pc, #384] ; (13da4 ) - 13c22: f018 fc91 bl 2c548 + 13cd8: 4860 ldr r0, [pc, #384] ; (13e5c ) + 13cda: f016 f941 bl 29f60 + 13cde: 2101 movs r1, #1 + 13ce0: 4860 ldr r0, [pc, #384] ; (13e64 ) + 13ce2: f018 fca5 bl 2c630 + 13ce6: 2147 movs r1, #71 ; 0x47 + 13ce8: 4860 ldr r0, [pc, #384] ; (13e6c ) + 13cea: f018 fca1 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 13c26: 485b ldr r0, [pc, #364] ; (13d94 ) - 13c28: f016 f924 bl 29e74 - 13c2c: 212e movs r1, #46 ; 0x2e - 13c2e: 485a ldr r0, [pc, #360] ; (13d98 ) - 13c30: f018 fc8a bl 2c548 - 13c34: 4857 ldr r0, [pc, #348] ; (13d94 ) - 13c36: f016 f91d bl 29e74 - 13c3a: 212e movs r1, #46 ; 0x2e - 13c3c: 4856 ldr r0, [pc, #344] ; (13d98 ) - 13c3e: f018 fc83 bl 2c548 - 13c42: 4854 ldr r0, [pc, #336] ; (13d94 ) - 13c44: f016 f916 bl 29e74 - 13c48: 212e movs r1, #46 ; 0x2e - 13c4a: 4853 ldr r0, [pc, #332] ; (13d98 ) - 13c4c: f018 fc7c bl 2c548 - 13c50: 4850 ldr r0, [pc, #320] ; (13d94 ) - 13c52: f016 f90f bl 29e74 - 13c56: 212e movs r1, #46 ; 0x2e - 13c58: 484f ldr r0, [pc, #316] ; (13d98 ) - 13c5a: f018 fc75 bl 2c548 - 13c5e: 484d ldr r0, [pc, #308] ; (13d94 ) - 13c60: f016 f908 bl 29e74 - 13c64: 2100 movs r1, #0 - 13c66: 484a ldr r0, [pc, #296] ; (13d90 ) - 13c68: f018 fc6e bl 2c548 - 13c6c: 4849 ldr r0, [pc, #292] ; (13d94 ) - 13c6e: f016 f901 bl 29e74 - 13c72: 2100 movs r1, #0 - 13c74: 4846 ldr r0, [pc, #280] ; (13d90 ) - 13c76: f018 fc67 bl 2c548 - 13c7a: 4846 ldr r0, [pc, #280] ; (13d94 ) - 13c7c: f016 f8fa bl 29e74 - 13c80: 212e movs r1, #46 ; 0x2e - 13c82: 4845 ldr r0, [pc, #276] ; (13d98 ) - 13c84: f018 fc60 bl 2c548 - 13c88: 4842 ldr r0, [pc, #264] ; (13d94 ) - 13c8a: f016 f8f3 bl 29e74 - 13c8e: 212e movs r1, #46 ; 0x2e - 13c90: 4841 ldr r0, [pc, #260] ; (13d98 ) - 13c92: f018 fc59 bl 2c548 - 13c96: 483f ldr r0, [pc, #252] ; (13d94 ) - 13c98: f016 f8ec bl 29e74 - 13c9c: 212e movs r1, #46 ; 0x2e - 13c9e: 483e ldr r0, [pc, #248] ; (13d98 ) - 13ca0: f018 fc52 bl 2c548 - 13ca4: 483b ldr r0, [pc, #236] ; (13d94 ) - 13ca6: f016 f8e5 bl 29e74 - 13caa: 212e movs r1, #46 ; 0x2e - 13cac: 483a ldr r0, [pc, #232] ; (13d98 ) - 13cae: f018 fc4b bl 2c548 - 13cb2: 4838 ldr r0, [pc, #224] ; (13d94 ) - 13cb4: f016 f8de bl 29e74 - 13cb8: 2101 movs r1, #1 - 13cba: 4838 ldr r0, [pc, #224] ; (13d9c ) - 13cbc: f018 fc44 bl 2c548 - 13cc0: 2118 movs r1, #24 - 13cc2: 4839 ldr r0, [pc, #228] ; (13da8 ) - 13cc4: f018 fc40 bl 2c548 - 13cc8: 4832 ldr r0, [pc, #200] ; (13d94 ) - 13cca: f016 f8d3 bl 29e74 - 13cce: 2101 movs r1, #1 - 13cd0: 4832 ldr r0, [pc, #200] ; (13d9c ) - 13cd2: f018 fc39 bl 2c548 - 13cd6: 213f movs r1, #63 ; 0x3f - 13cd8: 4834 ldr r0, [pc, #208] ; (13dac ) - 13cda: f018 fc35 bl 2c548 - 13cde: 482d ldr r0, [pc, #180] ; (13d94 ) - 13ce0: f016 f8c8 bl 29e74 - 13ce4: 212e movs r1, #46 ; 0x2e - 13ce6: 482c ldr r0, [pc, #176] ; (13d98 ) - 13ce8: f018 fc2e bl 2c548 - 13cec: 4829 ldr r0, [pc, #164] ; (13d94 ) - 13cee: f016 f8c1 bl 29e74 - 13cf2: 212e movs r1, #46 ; 0x2e - 13cf4: 4828 ldr r0, [pc, #160] ; (13d98 ) - 13cf6: f018 fc27 bl 2c548 - 13cfa: 4826 ldr r0, [pc, #152] ; (13d94 ) - 13cfc: f016 f8ba bl 29e74 - 13d00: 212e movs r1, #46 ; 0x2e - 13d02: 4825 ldr r0, [pc, #148] ; (13d98 ) - 13d04: f018 fc20 bl 2c548 - 13d08: 4822 ldr r0, [pc, #136] ; (13d94 ) - 13d0a: f016 f8b3 bl 29e74 - 13d0e: 212e movs r1, #46 ; 0x2e - 13d10: 4821 ldr r0, [pc, #132] ; (13d98 ) - 13d12: f018 fc19 bl 2c548 - 13d16: 481f ldr r0, [pc, #124] ; (13d94 ) - 13d18: f016 f8ac bl 29e74 - 13d1c: 2100 movs r1, #0 - 13d1e: 481c ldr r0, [pc, #112] ; (13d90 ) - 13d20: f018 fc12 bl 2c548 - 13d24: 481b ldr r0, [pc, #108] ; (13d94 ) - 13d26: f016 f8a5 bl 29e74 - 13d2a: e7fe b.n 13d2a - 13d2c: 210a movs r1, #10 - 13d2e: 4820 ldr r0, [pc, #128] ; (13db0 ) - 13d30: f018 fc0a bl 2c548 - 13d34: 2101 movs r1, #1 - 13d36: 4819 ldr r0, [pc, #100] ; (13d9c ) - 13d38: f018 fc06 bl 2c548 + 13cee: 485b ldr r0, [pc, #364] ; (13e5c ) + 13cf0: f016 f936 bl 29f60 + 13cf4: 212e movs r1, #46 ; 0x2e + 13cf6: 485a ldr r0, [pc, #360] ; (13e60 ) + 13cf8: f018 fc9a bl 2c630 + 13cfc: 4857 ldr r0, [pc, #348] ; (13e5c ) + 13cfe: f016 f92f bl 29f60 + 13d02: 212e movs r1, #46 ; 0x2e + 13d04: 4856 ldr r0, [pc, #344] ; (13e60 ) + 13d06: f018 fc93 bl 2c630 + 13d0a: 4854 ldr r0, [pc, #336] ; (13e5c ) + 13d0c: f016 f928 bl 29f60 + 13d10: 212e movs r1, #46 ; 0x2e + 13d12: 4853 ldr r0, [pc, #332] ; (13e60 ) + 13d14: f018 fc8c bl 2c630 + 13d18: 4850 ldr r0, [pc, #320] ; (13e5c ) + 13d1a: f016 f921 bl 29f60 + 13d1e: 212e movs r1, #46 ; 0x2e + 13d20: 484f ldr r0, [pc, #316] ; (13e60 ) + 13d22: f018 fc85 bl 2c630 + 13d26: 484d ldr r0, [pc, #308] ; (13e5c ) + 13d28: f016 f91a bl 29f60 + 13d2c: 2100 movs r1, #0 + 13d2e: 484a ldr r0, [pc, #296] ; (13e58 ) + 13d30: f018 fc7e bl 2c630 + 13d34: 4849 ldr r0, [pc, #292] ; (13e5c ) + 13d36: f016 f913 bl 29f60 + 13d3a: 2100 movs r1, #0 + 13d3c: 4846 ldr r0, [pc, #280] ; (13e58 ) + 13d3e: f018 fc77 bl 2c630 + 13d42: 4846 ldr r0, [pc, #280] ; (13e5c ) + 13d44: f016 f90c bl 29f60 + 13d48: 212e movs r1, #46 ; 0x2e + 13d4a: 4845 ldr r0, [pc, #276] ; (13e60 ) + 13d4c: f018 fc70 bl 2c630 + 13d50: 4842 ldr r0, [pc, #264] ; (13e5c ) + 13d52: f016 f905 bl 29f60 + 13d56: 212e movs r1, #46 ; 0x2e + 13d58: 4841 ldr r0, [pc, #260] ; (13e60 ) + 13d5a: f018 fc69 bl 2c630 + 13d5e: 483f ldr r0, [pc, #252] ; (13e5c ) + 13d60: f016 f8fe bl 29f60 + 13d64: 212e movs r1, #46 ; 0x2e + 13d66: 483e ldr r0, [pc, #248] ; (13e60 ) + 13d68: f018 fc62 bl 2c630 + 13d6c: 483b ldr r0, [pc, #236] ; (13e5c ) + 13d6e: f016 f8f7 bl 29f60 + 13d72: 212e movs r1, #46 ; 0x2e + 13d74: 483a ldr r0, [pc, #232] ; (13e60 ) + 13d76: f018 fc5b bl 2c630 + 13d7a: 4838 ldr r0, [pc, #224] ; (13e5c ) + 13d7c: f016 f8f0 bl 29f60 + 13d80: 2101 movs r1, #1 + 13d82: 4838 ldr r0, [pc, #224] ; (13e64 ) + 13d84: f018 fc54 bl 2c630 + 13d88: 2118 movs r1, #24 + 13d8a: 4839 ldr r0, [pc, #228] ; (13e70 ) + 13d8c: f018 fc50 bl 2c630 + 13d90: 4832 ldr r0, [pc, #200] ; (13e5c ) + 13d92: f016 f8e5 bl 29f60 + 13d96: 2101 movs r1, #1 + 13d98: 4832 ldr r0, [pc, #200] ; (13e64 ) + 13d9a: f018 fc49 bl 2c630 + 13d9e: 213f movs r1, #63 ; 0x3f + 13da0: 4834 ldr r0, [pc, #208] ; (13e74 ) + 13da2: f018 fc45 bl 2c630 + 13da6: 482d ldr r0, [pc, #180] ; (13e5c ) + 13da8: f016 f8da bl 29f60 + 13dac: 212e movs r1, #46 ; 0x2e + 13dae: 482c ldr r0, [pc, #176] ; (13e60 ) + 13db0: f018 fc3e bl 2c630 + 13db4: 4829 ldr r0, [pc, #164] ; (13e5c ) + 13db6: f016 f8d3 bl 29f60 + 13dba: 212e movs r1, #46 ; 0x2e + 13dbc: 4828 ldr r0, [pc, #160] ; (13e60 ) + 13dbe: f018 fc37 bl 2c630 + 13dc2: 4826 ldr r0, [pc, #152] ; (13e5c ) + 13dc4: f016 f8cc bl 29f60 + 13dc8: 212e movs r1, #46 ; 0x2e + 13dca: 4825 ldr r0, [pc, #148] ; (13e60 ) + 13dcc: f018 fc30 bl 2c630 + 13dd0: 4822 ldr r0, [pc, #136] ; (13e5c ) + 13dd2: f016 f8c5 bl 29f60 + 13dd6: 212e movs r1, #46 ; 0x2e + 13dd8: 4821 ldr r0, [pc, #132] ; (13e60 ) + 13dda: f018 fc29 bl 2c630 + 13dde: 481f ldr r0, [pc, #124] ; (13e5c ) + 13de0: f016 f8be bl 29f60 + 13de4: 2100 movs r1, #0 + 13de6: 481c ldr r0, [pc, #112] ; (13e58 ) + 13de8: f018 fc22 bl 2c630 + 13dec: 481b ldr r0, [pc, #108] ; (13e5c ) + 13dee: f016 f8b7 bl 29f60 + 13df2: e7fe b.n 13df2 + 13df4: 210a movs r1, #10 + 13df6: 4820 ldr r0, [pc, #128] ; (13e78 ) + 13df8: f018 fc1a bl 2c630 + 13dfc: 2101 movs r1, #1 + 13dfe: 4819 ldr r0, [pc, #100] ; (13e64 ) + 13e00: f018 fc16 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 13d3c: 2300 movs r3, #0 - 13d3e: 220a movs r2, #10 - 13d40: 7821 ldrb r1, [r4, #0] - 13d42: 4814 ldr r0, [pc, #80] ; (13d94 ) - 13d44: f016 f8b2 bl 29eac - 13d48: 2101 movs r1, #1 - 13d4a: 4814 ldr r0, [pc, #80] ; (13d9c ) - 13d4c: f018 fbfc bl 2c548 - 13d50: 210e movs r1, #14 - 13d52: 4818 ldr r0, [pc, #96] ; (13db4 ) - 13d54: f018 fbf8 bl 2c548 + 13e04: 2300 movs r3, #0 + 13e06: 220a movs r2, #10 + 13e08: 7821 ldrb r1, [r4, #0] + 13e0a: 4814 ldr r0, [pc, #80] ; (13e5c ) + 13e0c: f016 f8c4 bl 29f98 + 13e10: 2101 movs r1, #1 + 13e12: 4814 ldr r0, [pc, #80] ; (13e64 ) + 13e14: f018 fc0c bl 2c630 + 13e18: 210e movs r1, #14 + 13e1a: 4818 ldr r0, [pc, #96] ; (13e7c ) + 13e1c: f018 fc08 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 13d58: 480e ldr r0, [pc, #56] ; (13d94 ) - 13d5a: f016 f88b bl 29e74 + 13e20: 480e ldr r0, [pc, #56] ; (13e5c ) + 13e22: f016 f89d bl 29f60 return bitRead(flags, bit); - 13d5e: 7863 ldrb r3, [r4, #1] + 13e26: 7863 ldrb r3, [r4, #1] flags = 0; - 13d60: 2000 movs r0, #0 + 13e28: 2000 movs r0, #0 bitWrite(flags, bit, value); - 13d62: 069d lsls r5, r3, #26 + 13e2a: 069d lsls r5, r3, #26 return bitRead(flags, bit); - 13d64: f3c3 1180 ubfx r1, r3, #6, #1 + 13e2c: f3c3 1180 ubfx r1, r3, #6, #1 flags = 0; - 13d68: 7060 strb r0, [r4, #1] + 13e30: 7060 strb r0, [r4, #1] return bitRead(flags, bit); - 13d6a: f3c3 0280 ubfx r2, r3, #2, #1 + 13e32: f3c3 0280 ubfx r2, r3, #2, #1 void write(uint8_t bit, bool value){ - 13d6e: 7820 ldrb r0, [r4, #0] + 13e36: 7820 ldrb r0, [r4, #0] bitWrite(flags, bit, value); - 13d70: f57f ae24 bpl.w 139bc - 13d74: 2320 movs r3, #32 - 13d76: e622 b.n 139be - 13d78: 7863 ldrb r3, [r4, #1] - 13d7a: f003 03df and.w r3, r3, #223 ; 0xdf - } - 13d7e: e615 b.n 139ac - 13d80: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 13e38: f57f ae24 bpl.w 13a84 + 13e3c: 2320 movs r3, #32 + 13e3e: e622 b.n 13a86 + 13e40: 7863 ldrb r3, [r4, #1] + 13e42: f003 03df and.w r3, r3, #223 ; 0xdf + } + 13e46: e615 b.n 13a74 + 13e48: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 13d84: f016 bde8 b.w 2a958 + 13e4c: f016 bdf8 b.w 2aa40 } - 13d88: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 13e50: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} digitalWrite(pin, t_value); - 13d8c: f016 bc1c b.w 2a5c8 - 13d90: 20003c58 .word 0x20003c58 - 13d94: 20004ba8 .word 0x20004ba8 - 13d98: 20001950 .word 0x20001950 - 13d9c: 200023ec .word 0x200023ec - 13da0: 20001980 .word 0x20001980 - 13da4: 20001988 .word 0x20001988 - 13da8: 200019d0 .word 0x200019d0 - 13dac: 200019ec .word 0x200019ec - 13db0: 20003730 .word 0x20003730 - 13db4: 2000373c .word 0x2000373c - -00013db8 : + 13e54: f016 bc2c b.w 2a6b0 + 13e58: 20003d18 .word 0x20003d18 + 13e5c: 20004c68 .word 0x20004c68 + 13e60: 20001950 .word 0x20001950 + 13e64: 200023ec .word 0x200023ec + 13e68: 20001980 .word 0x20001980 + 13e6c: 20001988 .word 0x20001988 + 13e70: 200019d0 .word 0x200019d0 + 13e74: 200019ec .word 0x200019ec + 13e78: 200037f0 .word 0x200037f0 + 13e7c: 200037fc .word 0x200037fc + +00013e80 : */ #include #if BMC_TOTAL_LEDS > 0 // SETUP void BMC::handleSetupLeds(BMCLed& t_led, uint16_t t_pin){ - 13db8: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 13dbc: 460c mov r4, r1 - 13dbe: 4605 mov r5, r0 + 13e80: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 13e84: 460c mov r4, r1 + 13e86: 4605 mov r5, r0 t_led.begin(t_pin); - 13dc0: b2d1 uxtb r1, r2 - 13dc2: 4620 mov r0, r4 + 13e88: b2d1 uxtb r1, r2 + 13e8a: 4620 mov r0, r4 return (settings.data[0]>>18) & 0x01; - 13dc4: f505 5580 add.w r5, r5, #4096 ; 0x1000 - 13dc8: f7ff fdce bl 13968 + 13e8c: f505 5580 add.w r5, r5, #4096 ; 0x1000 + 13e90: f7ff fdce bl 13a30 return bitRead(flags, bit); - 13dcc: 7863 ldrb r3, [r4, #1] - 13dce: f8d5 27fc ldr.w r2, [r5, #2044] ; 0x7fc + 13e94: 7863 ldrb r3, [r4, #1] + 13e96: f8d5 27fc ldr.w r2, [r5, #2044] ; 0x7fc if(!isPwmCapable() || (BMC_LED_PWM_DIM_VALUE >= BMC_LED_PWM_MAX_VALUE)){ - 13dd2: 0699 lsls r1, r3, #26 - 13dd4: 6852 ldr r2, [r2, #4] - 13dd6: d55a bpl.n 13e8e + 13e9a: 0699 lsls r1, r3, #26 + 13e9c: 6852 ldr r2, [r2, #4] + 13e9e: d55a bpl.n 13f56 bitWrite(flags, bit, value); - 13dd8: 0357 lsls r7, r2, #13 - 13dda: bf4c ite mi - 13ddc: f043 0340 orrmi.w r3, r3, #64 ; 0x40 - 13de0: f003 03bf andpl.w r3, r3, #191 ; 0xbf + 13ea0: 0357 lsls r7, r2, #13 + 13ea2: bf4c ite mi + 13ea4: f043 0340 orrmi.w r3, r3, #64 ; 0x40 + 13ea8: f003 03bf andpl.w r3, r3, #191 ; 0xbf if(!flags.read(BMC_FLAG_LED_STATE)){ - 13de4: f013 0101 ands.w r1, r3, #1 + 13eac: f013 0101 ands.w r1, r3, #1 return bitRead(flags, bit); - 13de8: f003 0701 and.w r7, r3, #1 - 13dec: 7063 strb r3, [r4, #1] - 13dee: d041 beq.n 13e74 + 13eb0: f003 0701 and.w r7, r3, #1 + 13eb4: 7063 strb r3, [r4, #1] + 13eb6: d041 beq.n 13f3c for(uint8_t i = 0, n=(t_init ? 2 : 4) ; i < n ; i++){ - 13df0: 2900 cmp r1, #0 + 13eb8: 2900 cmp r1, #0 writeToPin(!state); - 13df2: f081 0801 eor.w r8, r1, #1 + 13eba: f081 0801 eor.w r8, r1, #1 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 13df6: ea4f 2601 mov.w r6, r1, lsl #8 - 13dfa: f04f 0502 mov.w r5, #2 + 13ebe: ea4f 2601 mov.w r6, r1, lsl #8 + 13ec2: f04f 0502 mov.w r5, #2 bool read(uint8_t bit){ - 13dfe: bf15 itete ne - 13e00: f04f 0a01 movne.w sl, #1 - 13e04: f44f 7a80 moveq.w sl, #256 ; 0x100 - 13e08: f44f 7980 movne.w r9, #256 ; 0x100 - 13e0c: f04f 0901 moveq.w r9, #1 + 13ec6: bf15 itete ne + 13ec8: f04f 0a01 movne.w sl, #1 + 13ecc: f44f 7a80 moveq.w sl, #256 ; 0x100 + 13ed0: f44f 7980 movne.w r9, #256 ; 0x100 + 13ed4: f04f 0901 moveq.w r9, #1 if(isPwmCapable()){ - 13e10: 0698 lsls r0, r3, #26 + 13ed8: 0698 lsls r0, r3, #26 digitalWrite(pin, t_value); - 13e12: b2ff uxtb r7, r7 + 13eda: b2ff uxtb r7, r7 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 13e14: ea4f 2b08 mov.w fp, r8, lsl #8 + 13edc: ea4f 2b08 mov.w fp, r8, lsl #8 if(isPwmCapable()){ - 13e18: d51c bpl.n 13e54 + 13ee0: d51c bpl.n 13f1c if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 13e1a: 0659 lsls r1, r3, #25 + 13ee2: 0659 lsls r1, r3, #25 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 13e1c: 7820 ldrb r0, [r4, #0] + 13ee4: 7820 ldrb r0, [r4, #0] analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 13e1e: bf4c ite mi - 13e20: 4651 movmi r1, sl + 13ee6: bf4c ite mi + 13ee8: 4651 movmi r1, sl analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 13e22: 4659 movpl r1, fp - 13e24: f016 fd98 bl 2a958 + 13eea: 4659 movpl r1, fp + 13eec: f016 fda8 bl 2aa40 delay(BMC_MAX_LED_TEST_DELAY); - 13e28: 2019 movs r0, #25 - 13e2a: f016 fb4f bl 2a4cc + 13ef0: 2019 movs r0, #25 + 13ef2: f016 fb5f bl 2a5b4 return bitRead(flags, bit); - 13e2e: 7863 ldrb r3, [r4, #1] + 13ef6: 7863 ldrb r3, [r4, #1] if(isPwmCapable()){ - 13e30: 069a lsls r2, r3, #26 - 13e32: d514 bpl.n 13e5e + 13ef8: 069a lsls r2, r3, #26 + 13efa: d514 bpl.n 13f26 if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 13e34: 065b lsls r3, r3, #25 + 13efc: 065b lsls r3, r3, #25 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 13e36: 7820 ldrb r0, [r4, #0] + 13efe: 7820 ldrb r0, [r4, #0] analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 13e38: bf4c ite mi - 13e3a: 4649 movmi r1, r9 + 13f00: bf4c ite mi + 13f02: 4649 movmi r1, r9 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 13e3c: 4631 movpl r1, r6 - 13e3e: f016 fd8b bl 2a958 + 13f04: 4631 movpl r1, r6 + 13f06: f016 fd9b bl 2aa40 delay(BMC_MAX_LED_TEST_DELAY); - 13e42: 2019 movs r0, #25 - 13e44: f016 fb42 bl 2a4cc + 13f0a: 2019 movs r0, #25 + 13f0c: f016 fb52 bl 2a5b4 for(uint8_t i = 0, n=(t_init ? 2 : 4) ; i < n ; i++){ - 13e48: 2d01 cmp r5, #1 - 13e4a: d011 beq.n 13e70 - 13e4c: 7863 ldrb r3, [r4, #1] - 13e4e: 2501 movs r5, #1 + 13f10: 2d01 cmp r5, #1 + 13f12: d011 beq.n 13f38 + 13f14: 7863 ldrb r3, [r4, #1] + 13f16: 2501 movs r5, #1 if(isPwmCapable()){ - 13e50: 0698 lsls r0, r3, #26 - 13e52: d4e2 bmi.n 13e1a + 13f18: 0698 lsls r0, r3, #26 + 13f1a: d4e2 bmi.n 13ee2 digitalWrite(pin, t_value); - 13e54: 4641 mov r1, r8 - 13e56: 7820 ldrb r0, [r4, #0] - 13e58: f016 fbb6 bl 2a5c8 - 13e5c: e7e4 b.n 13e28 - 13e5e: 4639 mov r1, r7 - 13e60: 7820 ldrb r0, [r4, #0] - 13e62: f016 fbb1 bl 2a5c8 + 13f1c: 4641 mov r1, r8 + 13f1e: 7820 ldrb r0, [r4, #0] + 13f20: f016 fbc6 bl 2a6b0 + 13f24: e7e4 b.n 13ef0 + 13f26: 4639 mov r1, r7 + 13f28: 7820 ldrb r0, [r4, #0] + 13f2a: f016 fbc1 bl 2a6b0 delay(BMC_MAX_LED_TEST_DELAY); - 13e66: 2019 movs r0, #25 - 13e68: f016 fb30 bl 2a4cc + 13f2e: 2019 movs r0, #25 + 13f30: f016 fb40 bl 2a5b4 for(uint8_t i = 0, n=(t_init ? 2 : 4) ; i < n ; i++){ - 13e6c: 2d01 cmp r5, #1 - 13e6e: d1ed bne.n 13e4c + 13f34: 2d01 cmp r5, #1 + 13f36: d1ed bne.n 13f14 #if defined(BMC_MUX_OUTPUTS_AVAILABLE) if(t_led.muxTesting()){ mux.testDigital(t_led.getMuxPin()); } #endif } - 13e70: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 13f38: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} if(isPwmCapable()){ - 13e74: 069e lsls r6, r3, #26 - 13e76: d511 bpl.n 13e9c + 13f3c: 069e lsls r6, r3, #26 + 13f3e: d511 bpl.n 13f64 if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 13e78: 065d lsls r5, r3, #25 + 13f40: 065d lsls r5, r3, #25 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 13e7a: 7820 ldrb r0, [r4, #0] + 13f42: 7820 ldrb r0, [r4, #0] analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 13e7c: bf48 it mi - 13e7e: 2101 movmi r1, #1 + 13f44: bf48 it mi + 13f46: 2101 movmi r1, #1 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 13e80: f016 fd6a bl 2a958 - 13e84: 7863 ldrb r3, [r4, #1] - 13e86: f003 0701 and.w r7, r3, #1 - 13e8a: 4639 mov r1, r7 - 13e8c: e7b0 b.n 13df0 + 13f48: f016 fd7a bl 2aa40 + 13f4c: 7863 ldrb r3, [r4, #1] + 13f4e: f003 0701 and.w r7, r3, #1 + 13f52: 4639 mov r1, r7 + 13f54: e7b0 b.n 13eb8 bitClear(flags, bit); - 13e8e: f003 03bf and.w r3, r3, #191 ; 0xbf + 13f56: f003 03bf and.w r3, r3, #191 ; 0xbf return bitRead(flags, bit); - 13e92: f003 0701 and.w r7, r3, #1 + 13f5a: f003 0701 and.w r7, r3, #1 bitClear(flags, bit); - 13e96: 7063 strb r3, [r4, #1] + 13f5e: 7063 strb r3, [r4, #1] return bitRead(flags, bit); - 13e98: 4639 mov r1, r7 + 13f60: 4639 mov r1, r7 return; - 13e9a: e7a9 b.n 13df0 + 13f62: e7a9 b.n 13eb8 digitalWrite(pin, t_value); - 13e9c: 7820 ldrb r0, [r4, #0] - 13e9e: f016 fb93 bl 2a5c8 - 13ea2: 7863 ldrb r3, [r4, #1] - 13ea4: f003 0701 and.w r7, r3, #1 - 13ea8: 4639 mov r1, r7 - 13eaa: e7a1 b.n 13df0 - -00013eac : + 13f64: 7820 ldrb r0, [r4, #0] + 13f66: f016 fba3 bl 2a6b0 + 13f6a: 7863 ldrb r3, [r4, #1] + 13f6c: f003 0701 and.w r7, r3, #1 + 13f70: 4639 mov r1, r7 + 13f72: e7a1 b.n 13eb8 + +00013f74 : +void BMC::setupLeds(){ + 13f74: b570 push {r4, r5, r6, lr} return systick_millis_count; - 13eac: 4b1b ldr r3, [pc, #108] ; (13f1c ) + 13f76: 4b1b ldr r3, [pc, #108] ; (13fe4 ) + 13f78: f643 1520 movw r5, #14624 ; 0x3920 operator bool(){ return complete(); } void start(intervalType_t value){ interval = value; - 13eae: 2264 movs r2, #100 ; 0x64 -void BMC::setupLeds(){ - 13eb0: b570 push {r4, r5, r6, lr} - 13eb2: 6819 ldr r1, [r3, #0] + 13f7c: 2264 movs r2, #100 ; 0x64 + 13f7e: 4606 mov r6, r0 + 13f80: 6819 ldr r1, [r3, #0] prevTime = (unsigned long) _BMCTiming::get(); - 13eb4: 2401 movs r4, #1 + 13f82: 2401 movs r4, #1 interval = value; - 13eb6: f500 5340 add.w r3, r0, #12288 ; 0x3000 - 13eba: 4606 mov r6, r0 - void start(intervalType_t value){ - 13ebc: f500 5564 add.w r5, r0, #14592 ; 0x3900 + 13f84: f500 5340 add.w r3, r0, #12288 ; 0x3000 + 13f88: 4405 add r5, r0 prevTime = (unsigned long) _BMCTiming::get(); - 13ec0: f8c3 197c str.w r1, [r3, #2428] ; 0x97c + 13f8a: f8c3 199c str.w r1, [r3, #2460] ; 0x99c interval = value; - 13ec4: f8a3 2980 strh.w r2, [r3, #2432] ; 0x980 + 13f8e: f8a3 29a0 strh.w r2, [r3, #2464] ; 0x9a0 interval = value; - 13ec8: f8a3 2978 strh.w r2, [r3, #2424] ; 0x978 + 13f92: f8a3 2998 strh.w r2, [r3, #2456] ; 0x998 switch(n){ - 13ecc: 1e63 subs r3, r4, #1 - 13ece: b29b uxth r3, r3 - 13ed0: 3b01 subs r3, #1 - 13ed2: 2b03 cmp r3, #3 - 13ed4: d819 bhi.n 13f0a - 13ed6: e8df f003 tbb [pc, r3] - 13eda: 0b0d .short 0x0b0d - 13edc: 0f02 .short 0x0f02 - 13ede: 221b movs r2, #27 + 13f96: 1e63 subs r3, r4, #1 + 13f98: b29b uxth r3, r3 + 13f9a: 3b01 subs r3, #1 + 13f9c: 2b03 cmp r3, #3 + 13f9e: d818 bhi.n 13fd2 + 13fa0: e8df f003 tbb [pc, r3] + 13fa4: 0f020b0d .word 0x0f020b0d + 13fa8: 221b movs r2, #27 #endif #if BMC_MAX_GLOBAL_LEDS > 0 for(uint16_t i = 0; i < BMC_MAX_GLOBAL_LEDS; i++){ BMCUIData ui = BMCBuildData::getUIData(BMC_DEVICE_ID_GLOBAL_LED, i); handleSetupLeds(globalLeds[i], ui.pins[0]); - 13ee0: 4629 mov r1, r5 - 13ee2: 4630 mov r0, r6 - 13ee4: f7ff ff68 bl 13db8 + 13faa: 4629 mov r1, r5 + 13fac: 4630 mov r0, r6 + 13fae: f7ff ff67 bl 13e80 for(uint16_t i = 0; i < BMC_MAX_GLOBAL_LEDS; i++){ - 13ee8: 3401 adds r4, #1 - 13eea: 3518 adds r5, #24 - 13eec: b2a4 uxth r4, r4 - 13eee: e7ed b.n 13ecc - 13ef0: 221a movs r2, #26 - 13ef2: e7f5 b.n 13ee0 - 13ef4: 2219 movs r2, #25 - 13ef6: e7f3 b.n 13ee0 + 13fb2: 3401 adds r4, #1 + 13fb4: 3518 adds r5, #24 + 13fb6: b2a4 uxth r4, r4 + 13fb8: e7ed b.n 13f96 + 13fba: 221a movs r2, #26 + 13fbc: e7f5 b.n 13faa + 13fbe: 2219 movs r2, #25 + 13fc0: e7f3 b.n 13faa handleSetupLeds(globalLeds[i], ui.pins[0]); - 13ef8: f643 1160 movw r1, #14688 ; 0x3960 - 13efc: 4630 mov r0, r6 - 13efe: 221c movs r2, #28 - 13f00: 4431 add r1, r6 + 13fc2: f506 5166 add.w r1, r6, #14720 ; 0x3980 + 13fc6: 4630 mov r0, r6 + 13fc8: 221c movs r2, #28 for(uint16_t e = (i*3), u=0; u < 3; e++, u++){ handleSetupLeds(globalTriLeds[e], ui.pins[u]); } } #endif } - 13f02: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 13fca: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} handleSetupLeds(globalLeds[i], ui.pins[0]); - 13f06: f7ff bf57 b.w 13db8 - 13f0a: 2218 movs r2, #24 - 13f0c: 4629 mov r1, r5 - 13f0e: 4630 mov r0, r6 - 13f10: f7ff ff52 bl 13db8 + 13fce: f7ff bf57 b.w 13e80 + 13fd2: 2218 movs r2, #24 + 13fd4: 4629 mov r1, r5 + 13fd6: 4630 mov r0, r6 + 13fd8: f7ff ff52 bl 13e80 for(uint16_t i = 0; i < BMC_MAX_GLOBAL_LEDS; i++){ - 13f14: 2c05 cmp r4, #5 - 13f16: d1e7 bne.n 13ee8 + 13fdc: 2c05 cmp r4, #5 + 13fde: d1e8 bne.n 13fb2 } - 13f18: bd70 pop {r4, r5, r6, pc} - 13f1a: bf00 nop - 13f1c: 2000bae8 .word 0x2000bae8 + 13fe0: bd70 pop {r4, r5, r6, pc} + 13fe2: bf00 nop + 13fe4: 2000bb08 .word 0x2000bb08 -00013f20 : +00013fe8 : } #if BMC_LAYER_LED_DIM == true t_led.setPwmOffValue(settings.getPwmDimWhenOff()); #endif } void BMC::assignLeds(){ - 13f20: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 13fe8: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} value[i] = ~value[i]; - 13f24: f500 5a80 add.w sl, r0, #4096 ; 0x1000 - 13f28: f241 45d8 movw r5, #5336 ; 0x14d8 - 13f2c: f643 1778 movw r7, #14712 ; 0x3978 + 13fec: f500 5a80 add.w sl, r0, #4096 ; 0x1000 + 13ff0: f241 45d8 movw r5, #5336 ; 0x14d8 + 13ff4: f643 1420 movw r4, #14624 ; 0x3920 + 13ff8: f643 1798 movw r7, #14744 ; 0x3998 + 13ffc: f8ba 3846 ldrh.w r3, [sl, #2118] ; 0x846 flags = 0; - 13f30: f04f 0900 mov.w r9, #0 - 13f34: f8ba 3846 ldrh.w r3, [sl, #2118] ; 0x846 + 14000: f04f 0900 mov.w r9, #0 + 14004: 4405 add r5, r0 + 14006: 4404 add r4, r0 + 14008: 43db mvns r3, r3 + 1400a: 4407 add r7, r0 bitWrite(flags, bit, value); - 13f38: f04f 0820 mov.w r8, #32 - 13f3c: 4405 add r5, r0 - 13f3e: 4407 add r7, r0 - 13f40: 43db mvns r3, r3 - 13f42: f500 5464 add.w r4, r0, #14592 ; 0x3900 - 13f46: f8aa 3846 strh.w r3, [sl, #2118] ; 0x846 + 1400c: f04f 0820 mov.w r8, #32 + 14010: f8aa 3846 strh.w r3, [sl, #2118] ; 0x846 bmcStoreEvent data = globals.getDeviceEventType(t_device.events[eIndex]); - 13f4a: 786b ldrb r3, [r5, #1] + 14014: 786b ldrb r3, [r5, #1] if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 13f4c: 1e5a subs r2, r3, #1 - 13f4e: 2ac7 cmp r2, #199 ; 0xc7 - 13f50: d862 bhi.n 14018 + 14016: 1e5a subs r2, r3, #1 + 14018: 2ac7 cmp r2, #199 ; 0xc7 + 1401a: d862 bhi.n 140e2 return store.global.events[n-1]; - 13f52: f8da 2800 ldr.w r2, [sl, #2048] ; 0x800 - 13f56: eb02 02c3 add.w r2, r2, r3, lsl #3 - 13f5a: f892 b032 ldrb.w fp, [r2, #50] ; 0x32 - 13f5e: f1ab 0b10 sub.w fp, fp, #16 + 1401c: f8da 2800 ldr.w r2, [sl, #2048] ; 0x800 + 14020: eb02 02c3 add.w r2, r2, r3, lsl #3 + 14024: f892 b032 ldrb.w fp, [r2, #50] ; 0x32 + 14028: f1ab 0b10 sub.w fp, fp, #16 return bitRead(flags, bit); - 13f62: 7863 ldrb r3, [r4, #1] + 1402c: 7863 ldrb r3, [r4, #1] t_led.reassign(t_device.settings[eIndex]); - 13f64: 782e ldrb r6, [r5, #0] + 1402e: 782e ldrb r6, [r5, #0] bitWrite(flags, bit, value); - 13f66: 0698 lsls r0, r3, #26 + 14030: 0698 lsls r0, r3, #26 return bitRead(flags, bit); - 13f68: f3c3 1180 ubfx r1, r3, #6, #1 + 14032: f3c3 1180 ubfx r1, r3, #6, #1 flags = 0; - 13f6c: f884 9001 strb.w r9, [r4, #1] + 14036: f884 9001 strb.w r9, [r4, #1] return bitRead(flags, bit); - 13f70: f3c3 0280 ubfx r2, r3, #2, #1 + 1403a: f3c3 0280 ubfx r2, r3, #2, #1 bitWrite(flags, bit, value); - 13f74: bf48 it mi - 13f76: f884 8001 strbmi.w r8, [r4, #1] - 13f7a: 7863 ldrb r3, [r4, #1] - 13f7c: 2900 cmp r1, #0 - 13f7e: d047 beq.n 14010 - 13f80: f043 0340 orr.w r3, r3, #64 ; 0x40 - 13f84: 7063 strb r3, [r4, #1] - 13f86: 7863 ldrb r3, [r4, #1] - 13f88: 2a00 cmp r2, #0 - 13f8a: d03d beq.n 14008 - 13f8c: f043 0304 orr.w r3, r3, #4 - 13f90: 7063 strb r3, [r4, #1] + 1403e: bf48 it mi + 14040: f884 8001 strbmi.w r8, [r4, #1] + 14044: 7863 ldrb r3, [r4, #1] + 14046: 2900 cmp r1, #0 + 14048: d047 beq.n 140da + 1404a: f043 0340 orr.w r3, r3, #64 ; 0x40 + 1404e: 7063 strb r3, [r4, #1] + 14050: 7863 ldrb r3, [r4, #1] + 14052: 2a00 cmp r2, #0 + 14054: d03d beq.n 140d2 + 14056: f043 0304 orr.w r3, r3, #4 + 1405a: 7063 strb r3, [r4, #1] return bitRead(flags, bit); - 13f92: 7863 ldrb r3, [r4, #1] + 1405c: 7863 ldrb r3, [r4, #1] blinkerSpeed = 0; - 13f94: f884 9002 strb.w r9, [r4, #2] + 1405e: f884 9002 strb.w r9, [r4, #2] if(isPwmCapable()){ - 13f98: 069a lsls r2, r3, #26 - 13f9a: f3c3 1140 ubfx r1, r3, #5, #1 + 14062: 069a lsls r2, r3, #26 + 14064: f3c3 1140 ubfx r1, r3, #5, #1 quickBlinkerCount = 0; - 13f9e: f884 900c strb.w r9, [r4, #12] + 14068: f884 900c strb.w r9, [r4, #12] if(isPwmCapable()){ - 13fa2: d540 bpl.n 14026 + 1406c: d540 bpl.n 140f0 if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 13fa4: f3c3 1180 ubfx r1, r3, #6, #1 - 13fa8: 065b lsls r3, r3, #25 + 1406e: f3c3 1180 ubfx r1, r3, #6, #1 + 14072: 065b lsls r3, r3, #25 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 13faa: 7820 ldrb r0, [r4, #0] + 14074: 7820 ldrb r0, [r4, #0] analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 13fac: bf48 it mi - 13fae: 2101 movmi r1, #1 + 14076: bf48 it mi + 14078: 2101 movmi r1, #1 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 13fb0: f016 fcd2 bl 2a958 + 1407a: f016 fce1 bl 2aa40 bitWrite(flags, bit, value); - 13fb4: 7863 ldrb r3, [r4, #1] - 13fb6: b31e cbz r6, 14000 + 1407e: 7863 ldrb r3, [r4, #1] + 14080: b31e cbz r6, 140ca t_speed = constrain(t_speed, 0, 5); - 13fb8: 2e05 cmp r6, #5 - 13fba: f043 0302 orr.w r3, r3, #2 - 13fbe: bfa8 it ge - 13fc0: 2605 movge r6, #5 - 13fc2: 7063 strb r3, [r4, #1] + 14082: 2e05 cmp r6, #5 + 14084: f043 0302 orr.w r3, r3, #2 + 14088: bfa8 it ge + 1408a: 2605 movge r6, #5 + 1408c: 7063 strb r3, [r4, #1] blinkerSpeed = t_speed-1; - 13fc4: 3e01 subs r6, #1 - 13fc6: 70a6 strb r6, [r4, #2] + 1408e: 3e01 subs r6, #1 + 14090: 70a6 strb r6, [r4, #2] return true; } return false; } static bool isLedBlinkAllowed(uint8_t t_type){ switch(t_type){ - 13fc8: f1bb 0f03 cmp.w fp, #3 - 13fcc: d803 bhi.n 13fd6 - 13fce: 7863 ldrb r3, [r4, #1] - 13fd0: f023 0302 bic.w r3, r3, #2 - 13fd4: 7063 strb r3, [r4, #1] + 14092: f1bb 0f03 cmp.w fp, #3 + 14096: d803 bhi.n 140a0 + 14098: 7863 ldrb r3, [r4, #1] + 1409a: f023 0302 bic.w r3, r3, #2 + 1409e: 7063 strb r3, [r4, #1] return bitRead(flags, bit); - 13fd6: 7863 ldrb r3, [r4, #1] - 13fd8: f8da 27fc ldr.w r2, [sl, #2044] ; 0x7fc + 140a0: 7863 ldrb r3, [r4, #1] + 140a2: f8da 27fc ldr.w r2, [sl, #2044] ; 0x7fc if(!isPwmCapable() || (BMC_LED_PWM_DIM_VALUE >= BMC_LED_PWM_MAX_VALUE)){ - 13fdc: 069e lsls r6, r3, #26 - 13fde: 6852 ldr r2, [r2, #4] - 13fe0: d51d bpl.n 1401e + 140a6: 069e lsls r6, r3, #26 + 140a8: 6852 ldr r2, [r2, #4] + 140aa: d51d bpl.n 140e8 bitWrite(flags, bit, value); - 13fe2: 0350 lsls r0, r2, #13 - 13fe4: bf4c ite mi - 13fe6: f043 0340 orrmi.w r3, r3, #64 ; 0x40 - 13fea: f003 03bf andpl.w r3, r3, #191 ; 0xbf + 140ac: 0350 lsls r0, r2, #13 + 140ae: bf4c ite mi + 140b0: f043 0340 orrmi.w r3, r3, #64 ; 0x40 + 140b4: f003 03bf andpl.w r3, r3, #191 ; 0xbf if(!flags.read(BMC_FLAG_LED_STATE)){ - 13fee: 07d9 lsls r1, r3, #31 - 13ff0: 7063 strb r3, [r4, #1] - 13ff2: d51c bpl.n 1402e + 140b8: 07d9 lsls r1, r3, #31 + 140ba: 7063 strb r3, [r4, #1] + 140bc: d51c bpl.n 140f8 } #endif #if BMC_MAX_GLOBAL_LEDS > 0 globals.globalLedStates.clear(); for(uint16_t index = 0; index < BMC_MAX_GLOBAL_LEDS; index++){ - 13ff4: 3418 adds r4, #24 - 13ff6: 3503 adds r5, #3 - 13ff8: 42a7 cmp r7, r4 - 13ffa: d1a6 bne.n 13f4a + 140be: 3418 adds r4, #24 + 140c0: 3503 adds r5, #3 + 140c2: 42a7 cmp r7, r4 + 140c4: d1a6 bne.n 14014 globals.globalTriLedStates[u].clear(); handleAssignLeds<3,3>(globalTriLeds[e], store.global.triLeds[index], u); } } #endif } - 13ffc: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 14000: f023 0302 bic.w r3, r3, #2 - 14004: 7063 strb r3, [r4, #1] + 140c6: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 140ca: f023 0302 bic.w r3, r3, #2 + 140ce: 7063 strb r3, [r4, #1] if(t_speed > 0){ - 14006: e7df b.n 13fc8 - 14008: f023 0304 bic.w r3, r3, #4 - 1400c: 7063 strb r3, [r4, #1] + 140d0: e7df b.n 14092 + 140d2: f023 0304 bic.w r3, r3, #4 + 140d6: 7063 strb r3, [r4, #1] } - 1400e: e7c0 b.n 13f92 + 140d8: e7c0 b.n 1405c bitWrite(flags, bit, value); - 14010: f023 0340 bic.w r3, r3, #64 ; 0x40 - 14014: 7063 strb r3, [r4, #1] + 140da: f023 0340 bic.w r3, r3, #64 ; 0x40 + 140de: 7063 strb r3, [r4, #1] } - 14016: e7b6 b.n 13f86 - 14018: f06f 0b0f mvn.w fp, #15 - 1401c: e7a1 b.n 13f62 + 140e0: e7b6 b.n 14050 + 140e2: f06f 0b0f mvn.w fp, #15 + 140e6: e7a1 b.n 1402c bitClear(flags, bit); - 1401e: f023 0340 bic.w r3, r3, #64 ; 0x40 - 14022: 7063 strb r3, [r4, #1] + 140e8: f023 0340 bic.w r3, r3, #64 ; 0x40 + 140ec: 7063 strb r3, [r4, #1] return; - 14024: e7e6 b.n 13ff4 + 140ee: e7e6 b.n 140be digitalWrite(pin, t_value); - 14026: 7820 ldrb r0, [r4, #0] - 14028: f016 face bl 2a5c8 - 1402c: e7c2 b.n 13fb4 + 140f0: 7820 ldrb r0, [r4, #0] + 140f2: f016 fadd bl 2a6b0 + 140f6: e7c2 b.n 1407e if(isPwmCapable()){ - 1402e: 069a lsls r2, r3, #26 - 14030: f3c3 1140 ubfx r1, r3, #5, #1 - 14034: d508 bpl.n 14048 + 140f8: 069a lsls r2, r3, #26 + 140fa: f3c3 1140 ubfx r1, r3, #5, #1 + 140fe: d508 bpl.n 14112 if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 14036: f3c3 1180 ubfx r1, r3, #6, #1 - 1403a: 065b lsls r3, r3, #25 + 14100: f3c3 1180 ubfx r1, r3, #6, #1 + 14104: 065b lsls r3, r3, #25 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 1403c: 7820 ldrb r0, [r4, #0] + 14106: 7820 ldrb r0, [r4, #0] analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 1403e: bf48 it mi - 14040: 2101 movmi r1, #1 + 14108: bf48 it mi + 1410a: 2101 movmi r1, #1 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 14042: f016 fc89 bl 2a958 - 14046: e7d5 b.n 13ff4 + 1410c: f016 fc98 bl 2aa40 + 14110: e7d5 b.n 140be digitalWrite(pin, t_value); - 14048: 7820 ldrb r0, [r4, #0] - 1404a: f016 fabd bl 2a5c8 - 1404e: e7d1 b.n 13ff4 + 14112: 7820 ldrb r0, [r4, #0] + 14114: f016 facc bl 2a6b0 + 14118: e7d1 b.n 140be + 1411a: bf00 nop -00014050 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)>: +0001411c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)>: } #endif } template void BMC::handleLed(BMCLed& t_led, BMCBitStates& t_bitStates, uint8_t t_index, uint8_t t_state){ - 14050: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 14054: f89d e018 ldrb.w lr, [sp, #24] - 14058: 4606 mov r6, r0 - 1405a: 460c mov r4, r1 - 1405c: 4617 mov r7, r2 + 1411c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 14120: f89d e018 ldrb.w lr, [sp, #24] + 14124: 4606 mov r6, r0 + 14126: 460c mov r4, r1 + 14128: 4617 mov r7, r2 if(t_state<=1){ - 1405e: f1be 0f01 cmp.w lr, #1 + 1412a: f1be 0f01 cmp.w lr, #1 void BMC::handleLed(BMCLed& t_led, BMCBitStates& t_bitStates, uint8_t t_index, uint8_t t_state){ - 14062: 461d mov r5, r3 + 1412e: 461d mov r5, r3 return bitRead(flags, bit); - 14064: f891 c001 ldrb.w ip, [r1, #1] + 14130: f891 c001 ldrb.w ip, [r1, #1] if(t_state<=1){ - 14068: d935 bls.n 140d6 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x86> + 14134: d935 bls.n 141a2 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x86> t_led.setState(t_state); } else if(t_state==2){ - 1406a: f1be 0f02 cmp.w lr, #2 - 1406e: d056 beq.n 1411e (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xce> + 14136: f1be 0f02 cmp.w lr, #2 + 1413a: d056 beq.n 141ea (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xce> t_led.pulse(); } else if(t_state==3){ - 14070: f1be 0f03 cmp.w lr, #3 - 14074: f000 80ed beq.w 14252 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x202> + 1413c: f1be 0f03 cmp.w lr, #3 + 14140: f000 80ed beq.w 1431e (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x202> t_led.setBlinkMode(true); t_led.setState(true); } else if(t_state!=255){ - 14078: f1be 0fff cmp.w lr, #255 ; 0xff - 1407c: f040 80a8 bne.w 141d0 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x180> + 14144: f1be 0fff cmp.w lr, #255 ; 0xff + 14148: f040 80a8 bne.w 1429c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x180> t_led.setBlinkMode(bitRead(t_state, 2)); t_led.setState(bitRead(t_state, 3)); } t_bitStates.setBit(t_index, t_led.update(blinkState)); - 14080: f506 5640 add.w r6, r6, #12288 ; 0x3000 + 1414c: f506 5640 add.w r6, r6, #12288 ; 0x3000 if(flags.read(BMC_FLAG_LED_TEMP_BLINK)){ - 14084: f01c 0f10 tst.w ip, #16 - 14088: f896 3984 ldrb.w r3, [r6, #2436] ; 0x984 - 1408c: b2ae uxth r6, r5 - 1408e: d152 bne.n 14136 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xe6> + 14150: f01c 0f10 tst.w ip, #16 + 14154: f896 39a4 ldrb.w r3, [r6, #2468] ; 0x9a4 + 14158: b2ae uxth r6, r5 + 1415a: d152 bne.n 14202 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xe6> if(flags.read(BMC_FLAG_LED_BLINK_ENABLED)){ - 14090: f01c 0f02 tst.w ip, #2 - 14094: f3cc 0240 ubfx r2, ip, #1, #1 - 14098: f040 8085 bne.w 141a6 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x156> + 1415c: f01c 0f02 tst.w ip, #2 + 14160: f3cc 0240 ubfx r2, ip, #1, #1 + 14164: f040 8085 bne.w 14272 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x156> return (prevTime>0); - 1409c: 6963 ldr r3, [r4, #20] + 14168: 6963 ldr r3, [r4, #20] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 1409e: 2b00 cmp r3, #0 - 140a0: f040 80af bne.w 14202 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x1b2> - 140a4: f00c 0201 and.w r2, ip, #1 + 1416a: 2b00 cmp r3, #0 + 1416c: f040 80af bne.w 142ce (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x1b2> + 14170: f00c 0201 and.w r2, ip, #1 if(bitRead(value[mask], bit) != newValue){ - 140a8: 0936 lsrs r6, r6, #4 - 140aa: f005 050f and.w r5, r5, #15 - 140ae: f837 3016 ldrh.w r3, [r7, r6, lsl #1] - 140b2: fa43 f105 asr.w r1, r3, r5 - 140b6: f001 0101 and.w r1, r1, #1 - 140ba: 4291 cmp r1, r2 - 140bc: d009 beq.n 140d2 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x82> + 14174: 0936 lsrs r6, r6, #4 + 14176: f005 050f and.w r5, r5, #15 + 1417a: f837 3016 ldrh.w r3, [r7, r6, lsl #1] + 1417e: fa43 f105 asr.w r1, r3, r5 + 14182: f001 0101 and.w r1, r1, #1 + 14186: 4291 cmp r1, r2 + 14188: d009 beq.n 1419e (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x82> bitWrite(value[mask], bit, newValue); - 140be: 2a00 cmp r2, #0 - 140c0: d06c beq.n 1419c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x14c> - 140c2: 2201 movs r2, #1 - 140c4: 40aa lsls r2, r5 - 140c6: 4313 orrs r3, r2 - 140c8: b29b uxth r3, r3 + 1418a: 2a00 cmp r2, #0 + 1418c: d06c beq.n 14268 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x14c> + 1418e: 2201 movs r2, #1 + 14190: 40aa lsls r2, r5 + 14192: 4313 orrs r3, r2 + 14194: b29b uxth r3, r3 updated = true; - 140ca: 2201 movs r2, #1 - 140cc: f827 3016 strh.w r3, [r7, r6, lsl #1] - 140d0: 70ba strb r2, [r7, #2] + 14196: 2201 movs r2, #1 + 14198: f827 3016 strh.w r3, [r7, r6, lsl #1] + 1419c: 70ba strb r2, [r7, #2] mux.testDigital(muxPin); } } #endif } - 140d2: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 1419e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} t_led.setState(t_state); - 140d6: f00e 0801 and.w r8, lr, #1 + 141a2: f00e 0801 and.w r8, lr, #1 if(t_value != flags.read(BMC_FLAG_LED_STATE)){ - 140da: f00c 0301 and.w r3, ip, #1 - 140de: 4598 cmp r8, r3 - 140e0: d0ce beq.n 14080 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> + 141a6: f00c 0301 and.w r3, ip, #1 + 141aa: 4598 cmp r8, r3 + 141ac: d0ce beq.n 1414c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> if(isPwmCapable()){ - 140e2: f01c 0f20 tst.w ip, #32 - 140e6: f000 80af beq.w 14248 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x1f8> + 141ae: f01c 0f20 tst.w ip, #32 + 141b2: f000 80af beq.w 14314 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x1f8> if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 140ea: f01c 0f40 tst.w ip, #64 ; 0x40 - 140ee: f000 80ca beq.w 14286 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x236> + 141b6: f01c 0f40 tst.w ip, #64 ; 0x40 + 141ba: f000 80ca beq.w 14352 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x236> analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 140f2: f1b8 0f00 cmp.w r8, #0 - 140f6: 7820 ldrb r0, [r4, #0] - 140f8: bf14 ite ne - 140fa: f44f 7180 movne.w r1, #256 ; 0x100 - 140fe: 2101 moveq r1, #1 - 14100: f016 fc2a bl 2a958 + 141be: f1b8 0f00 cmp.w r8, #0 + 141c2: 7820 ldrb r0, [r4, #0] + 141c4: bf14 ite ne + 141c6: f44f 7180 movne.w r1, #256 ; 0x100 + 141ca: 2101 moveq r1, #1 + 141cc: f016 fc38 bl 2aa40 bitWrite(flags, bit, value); - 14104: f894 c001 ldrb.w ip, [r4, #1] - 14108: f1b8 0f00 cmp.w r8, #0 - 1410c: f000 80b8 beq.w 14280 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x230> - 14110: f04c 0c01 orr.w ip, ip, #1 + 141d0: f894 c001 ldrb.w ip, [r4, #1] + 141d4: f1b8 0f00 cmp.w r8, #0 + 141d8: f000 80b8 beq.w 1434c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x230> + 141dc: f04c 0c01 orr.w ip, ip, #1 bitSet(flags, bit); - 14114: f04c 0c08 orr.w ip, ip, #8 - 14118: f884 c001 strb.w ip, [r4, #1] + 141e0: f04c 0c08 orr.w ip, ip, #8 + 141e4: f884 c001 strb.w ip, [r4, #1] // set the LED STATE flag value to the same as the LED value flags.write(BMC_FLAG_LED_STATE, t_value); // we set the STATE CHANGED flag on flags.on(BMC_FLAG_LED_STATE_CHANGED); } } - 1411c: e7b0 b.n 14080 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> + 141e8: e7b0 b.n 1414c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> if(!flags.read(BMC_FLAG_LED_BLINK_ENABLED)){ - 1411e: f01c 0f02 tst.w ip, #2 - 14122: f000 80ba beq.w 1429a (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x24a> + 141ea: f01c 0f02 tst.w ip, #2 + 141ee: f000 80ba beq.w 14366 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x24a> t_bitStates.setBit(t_index, t_led.update(blinkState)); - 14126: f500 5640 add.w r6, r0, #12288 ; 0x3000 + 141f2: f500 5640 add.w r6, r0, #12288 ; 0x3000 if(flags.read(BMC_FLAG_LED_TEMP_BLINK)){ - 1412a: f01c 0f10 tst.w ip, #16 - 1412e: f896 3984 ldrb.w r3, [r6, #2436] ; 0x984 - 14132: b2ae uxth r6, r5 - 14134: d037 beq.n 141a6 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x156> + 141f6: f01c 0f10 tst.w ip, #16 + 141fa: f896 39a4 ldrb.w r3, [r6, #2468] ; 0x9a4 + 141fe: b2ae uxth r6, r5 + 14200: d037 beq.n 14272 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x156> return (prevTime>0); - 14136: 68a3 ldr r3, [r4, #8] + 14202: 68a3 ldr r3, [r4, #8] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 14138: b363 cbz r3, 14194 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> - 1413a: f8df 8238 ldr.w r8, [pc, #568] ; 14374 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x324> - 1413e: 88a1 ldrh r1, [r4, #4] - 14140: f8d8 2000 ldr.w r2, [r8] - 14144: 1ad3 subs r3, r2, r3 - 14146: 428b cmp r3, r1 - 14148: d324 bcc.n 14194 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> + 14204: b363 cbz r3, 14260 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> + 14206: f8df 8238 ldr.w r8, [pc, #568] ; 14440 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x324> + 1420a: 88a1 ldrh r1, [r4, #4] + 1420c: f8d8 2000 ldr.w r2, [r8] + 14210: 1ad3 subs r3, r2, r3 + 14212: 428b cmp r3, r1 + 14214: d324 bcc.n 14260 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> prevTime = 0; - 1414a: 2300 movs r3, #0 + 14216: 2300 movs r3, #0 return bitRead(flags, bit); - 1414c: f00c 0101 and.w r1, ip, #1 - 14150: 60a3 str r3, [r4, #8] + 14218: f00c 0101 and.w r1, ip, #1 + 1421c: 60a3 str r3, [r4, #8] if(BMC_IS_EVEN(quickBlinkerCount)){ - 14152: 7b23 ldrb r3, [r4, #12] - 14154: 07d8 lsls r0, r3, #31 + 1421e: 7b23 ldrb r3, [r4, #12] + 14220: 07d8 lsls r0, r3, #31 writeToPin(!flags.read(BMC_FLAG_LED_STATE)); - 14156: bf48 it mi - 14158: f081 0101 eormi.w r1, r1, #1 + 14222: bf48 it mi + 14224: f081 0101 eormi.w r1, r1, #1 if(isPwmCapable()){ - 1415c: f01c 0f20 tst.w ip, #32 - 14160: f000 8097 beq.w 14292 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x242> + 14228: f01c 0f20 tst.w ip, #32 + 1422c: f000 8097 beq.w 1435e (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x242> if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 14164: f01c 0f40 tst.w ip, #64 ; 0x40 - 14168: f000 80ca beq.w 14300 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2b0> + 14230: f01c 0f40 tst.w ip, #64 ; 0x40 + 14234: f000 80ca beq.w 143cc (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2b0> analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 1416c: 2900 cmp r1, #0 - 1416e: 7820 ldrb r0, [r4, #0] - 14170: bf14 ite ne - 14172: f44f 7180 movne.w r1, #256 ; 0x100 - 14176: 2101 moveq r1, #1 - 14178: f016 fbee bl 2a958 - 1417c: f8d8 3000 ldr.w r3, [r8] + 14238: 2900 cmp r1, #0 + 1423a: 7820 ldrb r0, [r4, #0] + 1423c: bf14 ite ne + 1423e: f44f 7180 movne.w r1, #256 ; 0x100 + 14242: 2101 moveq r1, #1 + 14244: f016 fbfc bl 2aa40 + 14248: f8d8 3000 ldr.w r3, [r8] interval = value; - 14180: 2264 movs r2, #100 ; 0x64 + 1424c: 2264 movs r2, #100 ; 0x64 prevTime = (unsigned long) _BMCTiming::get(); - 14182: 60a3 str r3, [r4, #8] + 1424e: 60a3 str r3, [r4, #8] quickBlinkerCount++; - 14184: 7b23 ldrb r3, [r4, #12] + 14250: 7b23 ldrb r3, [r4, #12] interval = value; - 14186: 80a2 strh r2, [r4, #4] - 14188: 3301 adds r3, #1 - 1418a: b2db uxtb r3, r3 + 14252: 80a2 strh r2, [r4, #4] + 14254: 3301 adds r3, #1 + 14256: b2db uxtb r3, r3 if(quickBlinkerCount>=BMC_LEDS_MAX_TEMP_BLINKER){ - 1418c: 2b06 cmp r3, #6 - 1418e: f200 80bc bhi.w 1430a (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2ba> + 14258: 2b06 cmp r3, #6 + 1425a: f200 80bc bhi.w 143d6 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2ba> quickBlinkerCount++; - 14192: 7323 strb r3, [r4, #12] - 14194: 7862 ldrb r2, [r4, #1] - 14196: f002 0201 and.w r2, r2, #1 - 1419a: e785 b.n 140a8 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x58> + 1425e: 7323 strb r3, [r4, #12] + 14260: 7862 ldrb r2, [r4, #1] + 14262: f002 0201 and.w r2, r2, #1 + 14266: e785 b.n 14174 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x58> bitWrite(value[mask], bit, newValue); - 1419c: 2201 movs r2, #1 - 1419e: 40aa lsls r2, r5 - 141a0: ea23 0302 bic.w r3, r3, r2 - 141a4: e791 b.n 140ca (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x7a> + 14268: 2201 movs r2, #1 + 1426a: 40aa lsls r2, r5 + 1426c: ea23 0302 bic.w r3, r3, r2 + 14270: e791 b.n 14196 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x7a> if(t_blinkerState){ - 141a6: f01c 0f01 tst.w ip, #1 - 141aa: d0f3 beq.n 14194 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> - 141ac: 2b00 cmp r3, #0 - 141ae: d0f1 beq.n 14194 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> + 14272: f01c 0f01 tst.w ip, #1 + 14276: d0f3 beq.n 14260 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> + 14278: 2b00 cmp r3, #0 + 1427a: d0f1 beq.n 14260 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> uint8_t bSteps = blinkerSpeed & 0x0F; - 141b0: 78a2 ldrb r2, [r4, #2] - 141b2: f002 080f and.w r8, r2, #15 + 1427c: 78a2 ldrb r2, [r4, #2] + 1427e: f002 080f and.w r8, r2, #15 uint8_t bCount = (blinkerSpeed >> 4) & 0x0F; - 141b6: 0913 lsrs r3, r2, #4 + 14282: 0913 lsrs r3, r2, #4 if(bCount >= bSteps){ - 141b8: ebb8 1f12 cmp.w r8, r2, lsr #4 - 141bc: f240 8084 bls.w 142c8 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x278> + 14284: ebb8 1f12 cmp.w r8, r2, lsr #4 + 14288: f240 8084 bls.w 14394 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x278> blinkerSpeed = bSteps | (bCount<<4); - 141c0: 3301 adds r3, #1 - 141c2: ea48 1303 orr.w r3, r8, r3, lsl #4 - 141c6: fa5f f883 uxtb.w r8, r3 - 141ca: f884 8002 strb.w r8, [r4, #2] - 141ce: e7e1 b.n 14194 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> + 1428c: 3301 adds r3, #1 + 1428e: ea48 1303 orr.w r3, r8, r3, lsl #4 + 14292: fa5f f883 uxtb.w r8, r3 + 14296: f884 8002 strb.w r8, [r4, #2] + 1429a: e7e1 b.n 14260 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> bitWrite(flags, bit, value); - 141d0: f01e 0f04 tst.w lr, #4 + 1429c: f01e 0f04 tst.w lr, #4 t_led.setState(bitRead(t_state, 3)); - 141d4: f3ce 08c0 ubfx r8, lr, #3, #1 - 141d8: bf14 ite ne - 141da: f04c 0c02 orrne.w ip, ip, #2 - 141de: f00c 0cfd andeq.w ip, ip, #253 ; 0xfd + 142a0: f3ce 08c0 ubfx r8, lr, #3, #1 + 142a4: bf14 ite ne + 142a6: f04c 0c02 orrne.w ip, ip, #2 + 142aa: f00c 0cfd andeq.w ip, ip, #253 ; 0xfd if(t_value != flags.read(BMC_FLAG_LED_STATE)){ - 141e2: f00c 0301 and.w r3, ip, #1 - 141e6: f881 c001 strb.w ip, [r1, #1] - 141ea: 4598 cmp r8, r3 - 141ec: f43f af48 beq.w 14080 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> + 142ae: f00c 0301 and.w r3, ip, #1 + 142b2: f881 c001 strb.w ip, [r1, #1] + 142b6: 4598 cmp r8, r3 + 142b8: f43f af48 beq.w 1414c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> if(isPwmCapable()){ - 141f0: f01c 0f20 tst.w ip, #32 - 141f4: f47f af79 bne.w 140ea (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x9a> + 142bc: f01c 0f20 tst.w ip, #32 + 142c0: f47f af79 bne.w 141b6 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x9a> digitalWrite(pin, t_value); - 141f8: 4641 mov r1, r8 - 141fa: 7820 ldrb r0, [r4, #0] - 141fc: f016 f9e4 bl 2a5c8 - 14200: e780 b.n 14104 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xb4> - 14202: 495c ldr r1, [pc, #368] ; (14374 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x324>) - 14204: 6809 ldr r1, [r1, #0] + 142c4: 4641 mov r1, r8 + 142c6: 7820 ldrb r0, [r4, #0] + 142c8: f016 f9f2 bl 2a6b0 + 142cc: e780 b.n 141d0 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xb4> + 142ce: 495c ldr r1, [pc, #368] ; (14440 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x324>) + 142d0: 6809 ldr r1, [r1, #0] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 14206: 1acb subs r3, r1, r3 - 14208: 8a21 ldrh r1, [r4, #16] - 1420a: 428b cmp r3, r1 - 1420c: f4ff af4a bcc.w 140a4 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x54> + 142d2: 1acb subs r3, r1, r3 + 142d4: 8a21 ldrh r1, [r4, #16] + 142d6: 428b cmp r3, r1 + 142d8: f4ff af4a bcc.w 14170 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x54> prevTime = 0; - 14210: 6162 str r2, [r4, #20] + 142dc: 6162 str r2, [r4, #20] if(t_value != flags.read(BMC_FLAG_LED_STATE)){ - 14212: f01c 0201 ands.w r2, ip, #1 - 14216: f43f af47 beq.w 140a8 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x58> + 142de: f01c 0201 ands.w r2, ip, #1 + 142e2: f43f af47 beq.w 14174 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x58> if(isPwmCapable()){ - 1421a: f01c 0f20 tst.w ip, #32 - 1421e: f3cc 1140 ubfx r1, ip, #5, #1 - 14222: f000 8093 beq.w 1434c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2fc> + 142e6: f01c 0f20 tst.w ip, #32 + 142ea: f3cc 1140 ubfx r1, ip, #5, #1 + 142ee: f000 8093 beq.w 14418 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2fc> if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 14226: f01c 0f40 tst.w ip, #64 ; 0x40 - 1422a: f3cc 1180 ubfx r1, ip, #6, #1 + 142f2: f01c 0f40 tst.w ip, #64 ; 0x40 + 142f6: f3cc 1180 ubfx r1, ip, #6, #1 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 1422e: 7820 ldrb r0, [r4, #0] + 142fa: 7820 ldrb r0, [r4, #0] analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 14230: bf18 it ne - 14232: 2101 movne r1, #1 + 142fc: bf18 it ne + 142fe: 2101 movne r1, #1 analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 14234: f016 fb90 bl 2a958 - 14238: 7863 ldrb r3, [r4, #1] + 14300: f016 fb9e bl 2aa40 + 14304: 7863 ldrb r3, [r4, #1] return bitRead(flags, bit); - 1423a: 2200 movs r2, #0 + 14306: 2200 movs r2, #0 bitWrite(flags, bit, value); - 1423c: f023 0301 bic.w r3, r3, #1 + 14308: f023 0301 bic.w r3, r3, #1 bitSet(flags, bit); - 14240: f043 0308 orr.w r3, r3, #8 - 14244: 7063 strb r3, [r4, #1] + 1430c: f043 0308 orr.w r3, r3, #8 + 14310: 7063 strb r3, [r4, #1] return getState(); - 14246: e72f b.n 140a8 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x58> + 14312: e72f b.n 14174 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x58> digitalWrite(pin, t_value); - 14248: 4671 mov r1, lr - 1424a: 7820 ldrb r0, [r4, #0] - 1424c: f016 f9bc bl 2a5c8 - 14250: e758 b.n 14104 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xb4> + 14314: 4671 mov r1, lr + 14316: 7820 ldrb r0, [r4, #0] + 14318: f016 f9ca bl 2a6b0 + 1431c: e758 b.n 141d0 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xb4> bitWrite(flags, bit, value); - 14252: f04c 0c02 orr.w ip, ip, #2 + 1431e: f04c 0c02 orr.w ip, ip, #2 if(t_value != flags.read(BMC_FLAG_LED_STATE)){ - 14256: f01c 0f01 tst.w ip, #1 - 1425a: f881 c001 strb.w ip, [r1, #1] - 1425e: f47f af0f bne.w 14080 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> + 14322: f01c 0f01 tst.w ip, #1 + 14326: f881 c001 strb.w ip, [r1, #1] + 1432a: f47f af0f bne.w 1414c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> if(isPwmCapable()){ - 14262: f01c 0f20 tst.w ip, #32 - 14266: d046 beq.n 142f6 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2a6> + 1432e: f01c 0f20 tst.w ip, #32 + 14332: d046 beq.n 143c2 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2a6> analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 14268: f44f 7180 mov.w r1, #256 ; 0x100 - 1426c: 7820 ldrb r0, [r4, #0] + 14334: f44f 7180 mov.w r1, #256 ; 0x100 + 14338: 7820 ldrb r0, [r4, #0] analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 1426e: f016 fb73 bl 2a958 + 1433a: f016 fb81 bl 2aa40 bitSet(flags, bit); - 14272: f894 c001 ldrb.w ip, [r4, #1] - 14276: f04c 0c09 orr.w ip, ip, #9 - 1427a: f884 c001 strb.w ip, [r4, #1] + 1433e: f894 c001 ldrb.w ip, [r4, #1] + 14342: f04c 0c09 orr.w ip, ip, #9 + 14346: f884 c001 strb.w ip, [r4, #1] } - 1427e: e6ff b.n 14080 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> + 1434a: e6ff b.n 1414c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> bitWrite(flags, bit, value); - 14280: f00c 0cfe and.w ip, ip, #254 ; 0xfe + 1434c: f00c 0cfe and.w ip, ip, #254 ; 0xfe } - 14284: e746 b.n 14114 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xc4> - 14286: ea4f 2108 mov.w r1, r8, lsl #8 - 1428a: 7820 ldrb r0, [r4, #0] - 1428c: f016 fb64 bl 2a958 - 14290: e738 b.n 14104 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xb4> + 14350: e746 b.n 141e0 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xc4> + 14352: ea4f 2108 mov.w r1, r8, lsl #8 + 14356: 7820 ldrb r0, [r4, #0] + 14358: f016 fb72 bl 2aa40 + 1435c: e738 b.n 141d0 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0xb4> digitalWrite(pin, t_value); - 14292: 7820 ldrb r0, [r4, #0] - 14294: f016 f998 bl 2a5c8 - 14298: e770 b.n 1417c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x12c> + 1435e: 7820 ldrb r0, [r4, #0] + 14360: f016 f9a6 bl 2a6b0 + 14364: e770 b.n 14248 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x12c> if(t_value != flags.read(BMC_FLAG_LED_STATE)){ - 1429a: f01c 0f01 tst.w ip, #1 - 1429e: d10d bne.n 142bc (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x26c> + 14366: f01c 0f01 tst.w ip, #1 + 1436a: d10d bne.n 14388 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x26c> if(isPwmCapable()){ - 142a0: f01c 0f20 tst.w ip, #32 - 142a4: d056 beq.n 14354 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x304> + 1436c: f01c 0f20 tst.w ip, #32 + 14370: d056 beq.n 14420 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x304> analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 142a6: f44f 7180 mov.w r1, #256 ; 0x100 - 142aa: 7820 ldrb r0, [r4, #0] + 14372: f44f 7180 mov.w r1, #256 ; 0x100 + 14376: 7820 ldrb r0, [r4, #0] analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 142ac: f016 fb54 bl 2a958 + 14378: f016 fb62 bl 2aa40 bitSet(flags, bit); - 142b0: f894 c001 ldrb.w ip, [r4, #1] - 142b4: f04c 0c09 orr.w ip, ip, #9 - 142b8: f884 c001 strb.w ip, [r4, #1] - 142bc: 4b2d ldr r3, [pc, #180] ; (14374 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x324>) - 142be: 681b ldr r3, [r3, #0] + 1437c: f894 c001 ldrb.w ip, [r4, #1] + 14380: f04c 0c09 orr.w ip, ip, #9 + 14384: f884 c001 strb.w ip, [r4, #1] + 14388: 4b2d ldr r3, [pc, #180] ; (14440 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x324>) + 1438a: 681b ldr r3, [r3, #0] prevTime = (unsigned long) _BMCTiming::get(); - 142c0: 6163 str r3, [r4, #20] + 1438c: 6163 str r3, [r4, #20] interval = value; - 142c2: 2396 movs r3, #150 ; 0x96 - 142c4: 8223 strh r3, [r4, #16] + 1438e: 2396 movs r3, #150 ; 0x96 + 14390: 8223 strh r3, [r4, #16] } - 142c6: e6db b.n 14080 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> + 14392: e6db b.n 1414c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30> flags ^= 1UL << bit; - 142c8: f08c 0c04 eor.w ip, ip, #4 + 14394: f08c 0c04 eor.w ip, ip, #4 if(isPwmCapable()){ - 142cc: f01c 0f20 tst.w ip, #32 + 14398: f01c 0f20 tst.w ip, #32 return bitRead(flags, bit); - 142d0: ea4f 03ac mov.w r3, ip, asr #2 - 142d4: f3cc 0180 ubfx r1, ip, #2, #1 + 1439c: ea4f 03ac mov.w r3, ip, asr #2 + 143a0: f3cc 0180 ubfx r1, ip, #2, #1 flags ^= 1UL << bit; - 142d8: f884 c001 strb.w ip, [r4, #1] - 142dc: d032 beq.n 14344 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2f4> + 143a4: f884 c001 strb.w ip, [r4, #1] + 143a8: d032 beq.n 14410 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2f4> if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 142de: f01c 0f40 tst.w ip, #64 ; 0x40 - 142e2: d028 beq.n 14336 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2e6> + 143aa: f01c 0f40 tst.w ip, #64 ; 0x40 + 143ae: d028 beq.n 14402 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x2e6> analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 142e4: 2900 cmp r1, #0 - 142e6: 7820 ldrb r0, [r4, #0] - 142e8: bf14 ite ne - 142ea: f44f 7180 movne.w r1, #256 ; 0x100 - 142ee: 2101 moveq r1, #1 - 142f0: f016 fb32 bl 2a958 - } - 142f4: e769 b.n 141ca (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x17a> + 143b0: 2900 cmp r1, #0 + 143b2: 7820 ldrb r0, [r4, #0] + 143b4: bf14 ite ne + 143b6: f44f 7180 movne.w r1, #256 ; 0x100 + 143ba: 2101 moveq r1, #1 + 143bc: f016 fb40 bl 2aa40 + } + 143c0: e769 b.n 14296 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x17a> digitalWrite(pin, t_value); - 142f6: 2101 movs r1, #1 - 142f8: 7820 ldrb r0, [r4, #0] - 142fa: f016 f965 bl 2a5c8 - 142fe: e7b8 b.n 14272 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x222> + 143c2: 2101 movs r1, #1 + 143c4: 7820 ldrb r0, [r4, #0] + 143c6: f016 f973 bl 2a6b0 + 143ca: e7b8 b.n 1433e (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x222> analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 14300: 0209 lsls r1, r1, #8 - 14302: 7820 ldrb r0, [r4, #0] - 14304: f016 fb28 bl 2a958 - 14308: e738 b.n 1417c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x12c> + 143cc: 0209 lsls r1, r1, #8 + 143ce: 7820 ldrb r0, [r4, #0] + 143d0: f016 fb36 bl 2aa40 + 143d4: e738 b.n 14248 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x12c> quickBlinkerCount = 0; - 1430a: 2300 movs r3, #0 + 143d6: 2300 movs r3, #0 bitClear(flags, bit); - 1430c: 7861 ldrb r1, [r4, #1] - 1430e: 7323 strb r3, [r4, #12] + 143d8: 7861 ldrb r1, [r4, #1] + 143da: 7323 strb r3, [r4, #12] prevTime = 0; - 14310: 60a3 str r3, [r4, #8] - 14312: f001 03ef and.w r3, r1, #239 ; 0xef + 143dc: 60a3 str r3, [r4, #8] + 143de: f001 03ef and.w r3, r1, #239 ; 0xef if(isPwmCapable()){ - 14316: 069a lsls r2, r3, #26 - 14318: 7063 strb r3, [r4, #1] - 1431a: d525 bpl.n 14368 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x318> + 143e2: 069a lsls r2, r3, #26 + 143e4: 7063 strb r3, [r4, #1] + 143e6: d525 bpl.n 14434 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x318> return bitRead(flags, bit); - 1431c: f003 0101 and.w r1, r3, #1 + 143e8: f003 0101 and.w r1, r3, #1 if(flags.read(BMC_FLAG_LED_USE_OFF_VALUE)){ - 14320: 065b lsls r3, r3, #25 - 14322: d51c bpl.n 1435e (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30e> + 143ec: 065b lsls r3, r3, #25 + 143ee: d51c bpl.n 1442a (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x30e> analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : BMC_LED_PWM_DIM_VALUE)); - 14324: 2900 cmp r1, #0 - 14326: 7820 ldrb r0, [r4, #0] - 14328: bf14 ite ne - 1432a: f44f 7180 movne.w r1, #256 ; 0x100 - 1432e: 2101 moveq r1, #1 - 14330: f016 fb12 bl 2a958 - 14334: e72e b.n 14194 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> + 143f0: 2900 cmp r1, #0 + 143f2: 7820 ldrb r0, [r4, #0] + 143f4: bf14 ite ne + 143f6: f44f 7180 movne.w r1, #256 ; 0x100 + 143fa: 2101 moveq r1, #1 + 143fc: f016 fb20 bl 2aa40 + 14400: e72e b.n 14260 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 14336: 021b lsls r3, r3, #8 - 14338: 7820 ldrb r0, [r4, #0] - 1433a: f403 7180 and.w r1, r3, #256 ; 0x100 - 1433e: f016 fb0b bl 2a958 - 14342: e742 b.n 141ca (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x17a> + 14402: 021b lsls r3, r3, #8 + 14404: 7820 ldrb r0, [r4, #0] + 14406: f403 7180 and.w r1, r3, #256 ; 0x100 + 1440a: f016 fb19 bl 2aa40 + 1440e: e742 b.n 14296 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x17a> digitalWrite(pin, t_value); - 14344: 7820 ldrb r0, [r4, #0] - 14346: f016 f93f bl 2a5c8 - 1434a: e73e b.n 141ca (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x17a> - 1434c: 7820 ldrb r0, [r4, #0] - 1434e: f016 f93b bl 2a5c8 - 14352: e771 b.n 14238 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x1e8> - 14354: 2101 movs r1, #1 - 14356: 7820 ldrb r0, [r4, #0] - 14358: f016 f936 bl 2a5c8 - 1435c: e7a8 b.n 142b0 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x260> + 14410: 7820 ldrb r0, [r4, #0] + 14412: f016 f94d bl 2a6b0 + 14416: e73e b.n 14296 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x17a> + 14418: 7820 ldrb r0, [r4, #0] + 1441a: f016 f949 bl 2a6b0 + 1441e: e771 b.n 14304 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x1e8> + 14420: 2101 movs r1, #1 + 14422: 7820 ldrb r0, [r4, #0] + 14424: f016 f944 bl 2a6b0 + 14428: e7a8 b.n 1437c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x260> analogWrite(pin, (t_value ? BMC_LED_PWM_MAX_VALUE : 0)); - 1435e: 0209 lsls r1, r1, #8 - 14360: 7820 ldrb r0, [r4, #0] - 14362: f016 faf9 bl 2a958 - 14366: e715 b.n 14194 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> + 1442a: 0209 lsls r1, r1, #8 + 1442c: 7820 ldrb r0, [r4, #0] + 1442e: f016 fb07 bl 2aa40 + 14432: e715 b.n 14260 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> digitalWrite(pin, t_value); - 14368: f001 0101 and.w r1, r1, #1 - 1436c: 7820 ldrb r0, [r4, #0] - 1436e: f016 f92b bl 2a5c8 - 14372: e70f b.n 14194 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> - 14374: 2000bae8 .word 0x2000bae8 + 14434: f001 0101 and.w r1, r1, #1 + 14438: 7820 ldrb r0, [r4, #0] + 1443a: f016 f939 bl 2a6b0 + 1443e: e70f b.n 14260 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)+0x144> + 14440: 2000bb08 .word 0x2000bb08 -00014378 : +00014444 : return (prevTime>0); - 14378: f500 5240 add.w r2, r0, #12288 ; 0x3000 - 1437c: f8d2 397c ldr.w r3, [r2, #2428] ; 0x97c + 14444: f500 5240 add.w r2, r0, #12288 ; 0x3000 + 14448: f8d2 399c ldr.w r3, [r2, #2460] ; 0x99c void BMC::readLeds(){ - 14380: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 14384: 4605 mov r5, r0 - 14386: b085 sub sp, #20 + 1444c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 14450: 4605 mov r5, r0 + 14452: b085 sub sp, #20 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 14388: b13b cbz r3, 1439a - 1438a: 482a ldr r0, [pc, #168] ; (14434 ) - 1438c: 6801 ldr r1, [r0, #0] - 1438e: 1acb subs r3, r1, r3 - 14390: f8b2 1978 ldrh.w r1, [r2, #2424] ; 0x978 - 14394: 428b cmp r3, r1 - 14396: d243 bcs.n 14420 + 14454: b13b cbz r3, 14466 + 14456: 482a ldr r0, [pc, #168] ; (14500 ) + 14458: 6801 ldr r1, [r0, #0] + 1445a: 1acb subs r3, r1, r3 + 1445c: f8b2 1998 ldrh.w r1, [r2, #2456] ; 0x998 + 14460: 428b cmp r3, r1 + 14462: d244 bcs.n 144ee bool complete(){ if(timer.complete()){ timer.start(interval); return true; } return false; - 14398: 2300 movs r3, #0 + 14464: 2300 movs r3, #0 handleLed(globalLeds[i], globals.globalLedStates, i, state); - 1439a: f641 0946 movw r9, #6214 ; 0x1846 - 1439e: 2400 movs r4, #0 - 143a0: f241 48d9 movw r8, #5337 ; 0x14d9 - 143a4: f505 5664 add.w r6, r5, #14592 ; 0x3900 - 143a8: 44a9 add r9, r5 + 14466: f641 0946 movw r9, #6214 ; 0x1846 + 1446a: f643 1620 movw r6, #14624 ; 0x3920 + 1446e: 2400 movs r4, #0 + 14470: f241 48d9 movw r8, #5337 ; 0x14d9 + 14474: 44a9 add r9, r5 + 14476: 442e add r6, r5 + 14478: 44a8 add r8, r5 uint8_t state = processEvent(BMC_DEVICE_GROUP_LED, - 143aa: 4627 mov r7, r4 - 143ac: 44a8 add r8, r5 + 1447a: 4627 mov r7, r4 blinkState = ledBlinkerTimer.complete(); - 143ae: f882 3984 strb.w r3, [r2, #2436] ; 0x984 + 1447c: f882 39a4 strb.w r3, [r2, #2468] ; 0x9a4 device.events[0] - 143b2: eb04 0244 add.w r2, r4, r4, lsl #1 + 14480: eb04 0244 add.w r2, r4, r4, lsl #1 uint8_t state = processEvent(BMC_DEVICE_GROUP_LED, - 143b6: 2102 movs r1, #2 - 143b8: b2a3 uxth r3, r4 - 143ba: 4628 mov r0, r5 - 143bc: e9cd 7701 strd r7, r7, [sp, #4] - 143c0: f818 c002 ldrb.w ip, [r8, r2] - 143c4: 2207 movs r2, #7 - 143c6: f8cd c000 str.w ip, [sp] - 143ca: f7f7 fa57 bl b87c - 143ce: 4684 mov ip, r0 + 14484: 2102 movs r1, #2 + 14486: b2a3 uxth r3, r4 + 14488: 4628 mov r0, r5 + 1448a: e9cd 7701 strd r7, r7, [sp, #4] + 1448e: f818 c002 ldrb.w ip, [r8, r2] + 14492: 2207 movs r2, #7 + 14494: f8cd c000 str.w ip, [sp] + 14498: f7f7 fa54 bl b944 + 1449c: 4684 mov ip, r0 handleLed(globalLeds[i], globals.globalLedStates, i, state); - 143d0: b2e3 uxtb r3, r4 + 1449e: b2e3 uxtb r3, r4 for(uint16_t i = 0; i < BMC_MAX_GLOBAL_LEDS; i++){ - 143d2: 3401 adds r4, #1 + 144a0: 3401 adds r4, #1 handleLed(globalLeds[i], globals.globalLedStates, i, state); - 143d4: 4631 mov r1, r6 - 143d6: 464a mov r2, r9 - 143d8: 4628 mov r0, r5 - 143da: f8cd c000 str.w ip, [sp] - 143de: f7ff fe37 bl 14050 (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)> + 144a2: 4631 mov r1, r6 + 144a4: 464a mov r2, r9 + 144a6: 4628 mov r0, r5 + 144a8: f8cd c000 str.w ip, [sp] + 144ac: f7ff fe36 bl 1411c (BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char)> for(uint16_t i = 0; i < BMC_MAX_GLOBAL_LEDS; i++){ - 143e2: 2c05 cmp r4, #5 - 143e4: f106 0618 add.w r6, r6, #24 - 143e8: d1e3 bne.n 143b2 + 144b0: 2c05 cmp r4, #5 + 144b2: f106 0618 add.w r6, r6, #24 + 144b6: d1e3 bne.n 14480 if(updated){ - 143ea: f505 5380 add.w r3, r5, #4096 ; 0x1000 - 143ee: f893 2848 ldrb.w r2, [r3, #2120] ; 0x848 - 143f2: b992 cbnz r2, 1441a - 143f4: f505 5300 add.w r3, r5, #8192 ; 0x2000 - 143f8: f8d3 3ccc ldr.w r3, [r3, #3276] ; 0xccc + 144b8: f505 5380 add.w r3, r5, #4096 ; 0x1000 + 144bc: f893 2848 ldrb.w r2, [r3, #2120] ; 0x848 + 144c0: b992 cbnz r2, 144e8 + 144c2: f505 5300 add.w r3, r5, #8192 ; 0x2000 + 144c6: f8d3 3cec ldr.w r3, [r3, #3308] ; 0xcec if(globals.globalLedStates.hasChanged() || editor.isTriggerStates()){ - 143fc: 035b lsls r3, r3, #13 - 143fe: d509 bpl.n 14414 + 144ca: 035b lsls r3, r3, #13 + 144cc: d509 bpl.n 144e2 editor.utilitySendStateBits(BMC_DEVICE_ID_GLOBAL_LED); - 14400: f642 409c movw r0, #11420 ; 0x2c9c - 14404: 2201 movs r2, #1 - 14406: 2107 movs r1, #7 - 14408: 4428 add r0, r5 + 144ce: f642 40bc movw r0, #11452 ; 0x2cbc + 144d2: 2201 movs r2, #1 + 144d4: 2107 movs r1, #7 + 144d6: 4428 add r0, r5 } - 1440a: b005 add sp, #20 - 1440c: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} + 144d8: b005 add sp, #20 + 144da: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} editor.utilitySendStateBits(BMC_DEVICE_ID_GLOBAL_LED); - 14410: f00e b990 b.w 22734 + 144de: f00e b999 b.w 22814 } - 14414: b005 add sp, #20 - 14416: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 144e2: b005 add sp, #20 + 144e4: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} updated = false; - 1441a: f883 7848 strb.w r7, [r3, #2120] ; 0x848 - 1441e: e7ef b.n 14400 + 144e8: f883 7848 strb.w r7, [r3, #2120] ; 0x848 + 144ec: e7ef b.n 144ce interval = value; - 14420: f8b2 4980 ldrh.w r4, [r2, #2432] ; 0x980 + 144ee: f8b2 49a0 ldrh.w r4, [r2, #2464] ; 0x9a0 prevTime = (unsigned long) _BMCTiming::get(); - 14424: 2301 movs r3, #1 - 14426: 6801 ldr r1, [r0, #0] + 144f2: 2301 movs r3, #1 + 144f4: 6801 ldr r1, [r0, #0] interval = value; - 14428: f8a2 4978 strh.w r4, [r2, #2424] ; 0x978 + 144f6: f8a2 4998 strh.w r4, [r2, #2456] ; 0x998 prevTime = (unsigned long) _BMCTiming::get(); - 1442c: f8c2 197c str.w r1, [r2, #2428] ; 0x97c - 14430: e7b3 b.n 1439a - 14432: bf00 nop - 14434: 2000bae8 .word 0x2000bae8 + 144fa: f8c2 199c str.w r1, [r2, #2460] ; 0x99c + 144fe: e7b2 b.n 14466 + 14500: 2000bb08 .word 0x2000bb08 -00014438 : +00014504 : } else if(n >= getPixelIndex(n)){ BMCUIData ui = BMCBuildData::getUIData(BMC_DEVICE_ID_PIXEL, n); return ui.style; } return BMC_COLOR_RED; } - 14438: 2000 movs r0, #0 - 1443a: 4770 bx lr + 14504: 2000 movs r0, #0 + 14506: 4770 bx lr -0001443c : +00014508 : void begin(){ - 1443c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 14440: 2112 movs r1, #18 - 14442: b089 sub sp, #36 ; 0x24 - 14444: 4683 mov fp, r0 - 14446: 4897 ldr r0, [pc, #604] ; (146a4 ) - 14448: f018 f87e bl 2c548 - 1444c: 4896 ldr r0, [pc, #600] ; (146a8 ) - 1444e: f015 fd11 bl 29e74 - 14452: 211d movs r1, #29 - 14454: 4895 ldr r0, [pc, #596] ; (146ac ) + 14508: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1450c: 2112 movs r1, #18 + 1450e: b089 sub sp, #36 ; 0x24 + 14510: 4683 mov fp, r0 + 14512: 4897 ldr r0, [pc, #604] ; (14770 ) + 14514: f018 f88c bl 2c630 + 14518: 4896 ldr r0, [pc, #600] ; (14774 ) + 1451a: f015 fd21 bl 29f60 + 1451e: 211d movs r1, #29 + 14520: 4895 ldr r0, [pc, #596] ; (14778 ) pixels.show(); - 14456: f04f 0900 mov.w r9, #0 - 1445a: f018 f875 bl 2c548 - 1445e: 2101 movs r1, #1 - 14460: 4893 ldr r0, [pc, #588] ; (146b0 ) - 14462: f10b 0a60 add.w sl, fp, #96 ; 0x60 - 14466: f018 f86f bl 2c548 + 14522: f04f 0900 mov.w r9, #0 + 14526: f018 f883 bl 2c630 + 1452a: 2101 movs r1, #1 + 1452c: 4893 ldr r0, [pc, #588] ; (1477c ) + 1452e: f10b 0a60 add.w sl, fp, #96 ; 0x60 + 14532: f018 f87d bl 2c630 size_t print(int n) { return print((long)n); } - 1446a: 2180 movs r1, #128 ; 0x80 - 1446c: 488e ldr r0, [pc, #568] ; (146a8 ) + 14536: 2180 movs r1, #128 ; 0x80 + 14538: 488e ldr r0, [pc, #568] ; (14774 ) drawBuffer[num+0] = color & 255; - 1446e: 46c8 mov r8, r9 - 14470: f015 fcf4 bl 29e5c + 1453a: 46c8 mov r8, r9 + 1453c: f015 fd04 bl 29f48 size_t println(int n) { return print(n) + println(); } - 14474: 488c ldr r0, [pc, #560] ; (146a8 ) - 14476: f015 fcfd bl 29e74 - 1447a: 211d movs r1, #29 - 1447c: 488d ldr r0, [pc, #564] ; (146b4 ) - 1447e: f018 f863 bl 2c548 - 14482: 2101 movs r1, #1 - 14484: 488a ldr r0, [pc, #552] ; (146b0 ) - 14486: f018 f85f bl 2c548 + 14540: 488c ldr r0, [pc, #560] ; (14774 ) + 14542: f015 fd0d bl 29f60 + 14546: 211d movs r1, #29 + 14548: 488d ldr r0, [pc, #564] ; (14780 ) + 1454a: f018 f871 bl 2c630 + 1454e: 2101 movs r1, #1 + 14550: 488a ldr r0, [pc, #552] ; (1477c ) + 14552: f018 f86d bl 2c630 size_t print(int n) { return print((long)n); } - 1448a: 210a movs r1, #10 - 1448c: 4886 ldr r0, [pc, #536] ; (146a8 ) - 1448e: f015 fce5 bl 29e5c - 14492: f10b 037b add.w r3, fp, #123 ; 0x7b + 14556: 210a movs r1, #10 + 14558: 4886 ldr r0, [pc, #536] ; (14774 ) + 1455a: f015 fcf5 bl 29f48 + 1455e: f10b 037b add.w r3, fp, #123 ; 0x7b size_t println(int n) { return print(n) + println(); } - 14496: 4884 ldr r0, [pc, #528] ; (146a8 ) - 14498: 9306 str r3, [sp, #24] - 1449a: f015 fceb bl 29e74 + 14562: 4884 ldr r0, [pc, #528] ; (14774 ) + 14564: 9306 str r3, [sp, #24] + 14566: f015 fcfb bl 29f60 for(uint8_t i=0,n=getRgbPixelIndex(0); i + 14572: 4638 mov r0, r7 + 14574: 9307 str r3, [sp, #28] + 14576: f7ff ffc5 bl 14504 uint16_t offset = (uint16_t) ((n>0) ? (n/2) : 0); - 144ae: f1b9 0f00 cmp.w r9, #0 - 144b2: f040 80b9 bne.w 14628 + 1457a: f1b9 0f00 cmp.w r9, #0 + 1457e: f040 80b9 bne.w 146f4 uint8_t tmp = dimColors[offset]; - 144b6: f89b 1082 ldrb.w r1, [fp, #130] ; 0x82 + 14582: f89b 1082 ldrb.w r1, [fp, #130] ; 0x82 if(BMC_IS_EVEN(n)){ - 144ba: 465c mov r4, fp + 14586: 465c mov r4, fp tmp &= 0xF0; - 144bc: f001 01f0 and.w r1, r1, #240 ; 0xf0 + 14588: f001 01f0 and.w r1, r1, #240 ; 0xf0 tmp |= (color&0x0F); - 144c0: f000 000f and.w r0, r0, #15 - 144c4: 4301 orrs r1, r0 + 1458c: f000 000f and.w r0, r0, #15 + 14590: 4301 orrs r1, r0 dimColors[offset] = tmp; - 144c6: ea4f 0589 mov.w r5, r9, lsl #2 - 144ca: f884 1082 strb.w r1, [r4, #130] ; 0x82 + 14592: ea4f 0589 mov.w r5, r9, lsl #2 + 14596: f884 1082 strb.w r1, [r4, #130] ; 0x82 for(uint8_t i = 0, m=(t_init ? 2 : 4) ; i < m ; i++){ - 144ce: eb09 0649 add.w r6, r9, r9, lsl #1 - 144d2: 4c79 ldr r4, [pc, #484] ; (146b8 ) + 1459a: eb09 0649 add.w r6, r9, r9, lsl #1 + 1459e: 4c79 ldr r4, [pc, #484] ; (14784 ) drawBuffer[num+1] = (color >> 8) & 255; - 144d4: 1c6b adds r3, r5, #1 + 145a0: 1c6b adds r3, r5, #1 drawBuffer[num+2] = (color >> 16) & 255; - 144d6: f44f 017f mov.w r1, #16711680 ; 0xff0000 + 145a2: f44f 017f mov.w r1, #16711680 ; 0xff0000 drawBuffer[num+1] = (color >> 8) & 255; - 144da: 9303 str r3, [sp, #12] + 145a6: 9303 str r3, [sp, #12] drawBuffer[num+2] = (color >> 16) & 255; - 144dc: 1cab adds r3, r5, #2 - 144de: 9304 str r3, [sp, #16] + 145a8: 1cab adds r3, r5, #2 + 145aa: 9304 str r3, [sp, #16] drawBuffer[num+3] = (color >> 24) & 255; - 144e0: 1ceb adds r3, r5, #3 - 144e2: 9305 str r3, [sp, #20] + 145ac: 1ceb adds r3, r5, #3 + 145ae: 9305 str r3, [sp, #20] drawBuffer[num+1] = (color >> 8) & 255; - 144e4: 1c73 adds r3, r6, #1 - 144e6: 9301 str r3, [sp, #4] + 145b0: 1c73 adds r3, r6, #1 + 145b2: 9301 str r3, [sp, #4] drawBuffer[num+2] = (color >> 16) & 255; - 144e8: 1cb3 adds r3, r6, #2 - 144ea: 9302 str r3, [sp, #8] + 145b4: 1cb3 adds r3, r6, #2 + 145b6: 9302 str r3, [sp, #8] if (num >= numled) return; - 144ec: f8bb 3060 ldrh.w r3, [fp, #96] ; 0x60 - 144f0: 4599 cmp r9, r3 - 144f2: d211 bcs.n 14518 + 145b8: f8bb 3060 ldrh.w r3, [fp, #96] ; 0x60 + 145bc: 4599 cmp r9, r3 + 145be: d211 bcs.n 145e4 if (config < 6) { - 144f4: f89b 3063 ldrb.w r3, [fp, #99] ; 0x63 + 145c0: f89b 3063 ldrb.w r3, [fp, #99] ; 0x63 drawBuffer[num+1] = (color >> 8) & 255; - 144f8: 0a0a lsrs r2, r1, #8 + 145c4: 0a0a lsrs r2, r1, #8 if (config < 6) { - 144fa: 2b05 cmp r3, #5 + 145c6: 2b05 cmp r3, #5 drawBuffer[num+1] = (color >> 8) & 255; - 144fc: 4610 mov r0, r2 + 145c8: 4610 mov r0, r2 drawBuffer[num+0] = color & 255; - 144fe: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 145ca: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 if (config < 6) { - 14502: d847 bhi.n 14594 + 145ce: d847 bhi.n 14660 drawBuffer[num+0] = color & 255; - 14504: 5599 strb r1, [r3, r6] + 145d0: 5599 strb r1, [r3, r6] drawBuffer[num+2] = (color >> 16) & 255; - 14506: 0c09 lsrs r1, r1, #16 + 145d2: 0c09 lsrs r1, r1, #16 drawBuffer[num+1] = (color >> 8) & 255; - 14508: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 - 1450c: 9a01 ldr r2, [sp, #4] - 1450e: 5498 strb r0, [r3, r2] + 145d4: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 145d8: 9a01 ldr r2, [sp, #4] + 145da: 5498 strb r0, [r3, r2] drawBuffer[num+2] = (color >> 16) & 255; - 14510: 9a02 ldr r2, [sp, #8] - 14512: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 - 14516: 5499 strb r1, [r3, r2] + 145dc: 9a02 ldr r2, [sp, #8] + 145de: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 145e2: 5499 strb r1, [r3, r2] pixels.show(); - 14518: 4650 mov r0, sl - 1451a: f014 fd35 bl 28f88 + 145e4: 4650 mov r0, sl + 145e6: f014 fd45 bl 29074 delay(BMC_MAX_LED_TEST_DELAY); - 1451e: 2019 movs r0, #25 - 14520: f015 ffd4 bl 2a4cc + 145ea: 2019 movs r0, #25 + 145ec: f015 ffe2 bl 2a5b4 if (num >= numled) return; - 14524: f8bb 3060 ldrh.w r3, [fp, #96] ; 0x60 - 14528: 4599 cmp r9, r3 - 1452a: d211 bcs.n 14550 + 145f0: f8bb 3060 ldrh.w r3, [fp, #96] ; 0x60 + 145f4: 4599 cmp r9, r3 + 145f6: d211 bcs.n 1461c if (config < 6) { - 1452c: f89b 3063 ldrb.w r3, [fp, #99] ; 0x63 - 14530: 2b05 cmp r3, #5 + 145f8: f89b 3063 ldrb.w r3, [fp, #99] ; 0x63 + 145fc: 2b05 cmp r3, #5 drawBuffer[num+0] = color & 255; - 14532: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 145fe: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 if (config < 6) { - 14536: d81b bhi.n 14570 + 14602: d81b bhi.n 1463c drawBuffer[num+0] = color & 255; - 14538: f803 8006 strb.w r8, [r3, r6] + 14604: f803 8006 strb.w r8, [r3, r6] drawBuffer[num+1] = (color >> 8) & 255; - 1453c: 9a01 ldr r2, [sp, #4] - 1453e: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 - 14542: f803 8002 strb.w r8, [r3, r2] + 14608: 9a01 ldr r2, [sp, #4] + 1460a: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 1460e: f803 8002 strb.w r8, [r3, r2] drawBuffer[num+2] = (color >> 16) & 255; - 14546: 9a02 ldr r2, [sp, #8] - 14548: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 - 1454c: f803 8002 strb.w r8, [r3, r2] + 14612: 9a02 ldr r2, [sp, #8] + 14614: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 14618: f803 8002 strb.w r8, [r3, r2] pixels.show(); - 14550: 4650 mov r0, sl - 14552: f014 fd19 bl 28f88 + 1461c: 4650 mov r0, sl + 1461e: f014 fd29 bl 29074 delay(BMC_MAX_LED_TEST_DELAY); - 14556: 2019 movs r0, #25 - 14558: f015 ffb8 bl 2a4cc + 14622: 2019 movs r0, #25 + 14624: f015 ffc6 bl 2a5b4 for(uint8_t i = 0, m=(t_init ? 2 : 4) ; i < m ; i++){ - 1455c: 4b57 ldr r3, [pc, #348] ; (146bc ) - 1455e: 429c cmp r4, r3 - 14560: d028 beq.n 145b4 + 14628: 4b57 ldr r3, [pc, #348] ; (14788 ) + 1462a: 429c cmp r4, r3 + 1462c: d028 beq.n 14680 if (num >= numled) return; - 14562: f8bb 3060 ldrh.w r3, [fp, #96] ; 0x60 - 14566: f854 1f04 ldr.w r1, [r4, #4]! - 1456a: 4599 cmp r9, r3 - 1456c: d3c2 bcc.n 144f4 - 1456e: e7d3 b.n 14518 + 1462e: f8bb 3060 ldrh.w r3, [fp, #96] ; 0x60 + 14632: f854 1f04 ldr.w r1, [r4, #4]! + 14636: 4599 cmp r9, r3 + 14638: d3c2 bcc.n 145c0 + 1463a: e7d3 b.n 145e4 drawBuffer[num+0] = color & 255; - 14570: f803 8005 strb.w r8, [r3, r5] + 1463c: f803 8005 strb.w r8, [r3, r5] drawBuffer[num+1] = (color >> 8) & 255; - 14574: 9a03 ldr r2, [sp, #12] - 14576: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 - 1457a: f803 8002 strb.w r8, [r3, r2] + 14640: 9a03 ldr r2, [sp, #12] + 14642: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 14646: f803 8002 strb.w r8, [r3, r2] drawBuffer[num+2] = (color >> 16) & 255; - 1457e: 9a04 ldr r2, [sp, #16] - 14580: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 - 14584: f803 8002 strb.w r8, [r3, r2] + 1464a: 9a04 ldr r2, [sp, #16] + 1464c: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 14650: f803 8002 strb.w r8, [r3, r2] drawBuffer[num+3] = (color >> 24) & 255; - 14588: 9a05 ldr r2, [sp, #20] - 1458a: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 - 1458e: f803 8002 strb.w r8, [r3, r2] - 14592: e7dd b.n 14550 + 14654: 9a05 ldr r2, [sp, #20] + 14656: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 1465a: f803 8002 strb.w r8, [r3, r2] + 1465e: e7dd b.n 1461c drawBuffer[num+0] = color & 255; - 14594: 5559 strb r1, [r3, r5] + 14660: 5559 strb r1, [r3, r5] drawBuffer[num+1] = (color >> 8) & 255; - 14596: 9803 ldr r0, [sp, #12] - 14598: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 - 1459c: 541a strb r2, [r3, r0] + 14662: 9803 ldr r0, [sp, #12] + 14664: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 14668: 541a strb r2, [r3, r0] drawBuffer[num+2] = (color >> 16) & 255; - 1459e: 0c0a lsrs r2, r1, #16 - 145a0: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 1466a: 0c0a lsrs r2, r1, #16 + 1466c: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 drawBuffer[num+3] = (color >> 24) & 255; - 145a4: 0e09 lsrs r1, r1, #24 + 14670: 0e09 lsrs r1, r1, #24 drawBuffer[num+2] = (color >> 16) & 255; - 145a6: 9804 ldr r0, [sp, #16] - 145a8: 541a strb r2, [r3, r0] + 14672: 9804 ldr r0, [sp, #16] + 14674: 541a strb r2, [r3, r0] drawBuffer[num+3] = (color >> 24) & 255; - 145aa: 9a05 ldr r2, [sp, #20] - 145ac: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 - 145b0: 5499 strb r1, [r3, r2] - 145b2: e7b1 b.n 14518 + 14676: 9a05 ldr r2, [sp, #20] + 14678: f8db 3068 ldr.w r3, [fp, #104] ; 0x68 + 1467c: 5499 strb r1, [r3, r2] + 1467e: e7b1 b.n 145e4 uint8_t prev = currentColor[n]; - 145b4: 9b06 ldr r3, [sp, #24] - 145b6: f813 1f01 ldrb.w r1, [r3, #1]! + 14680: 9b06 ldr r3, [sp, #24] + 14682: f813 1f01 ldrb.w r1, [r3, #1]! if(bitRead(prev, 7)){ - 145ba: 060c lsls r4, r1, #24 + 14686: 060c lsls r4, r1, #24 uint8_t prev = currentColor[n]; - 145bc: 9306 str r3, [sp, #24] + 14688: 9306 str r3, [sp, #24] if(bitRead(prev, 7)){ - 145be: d541 bpl.n 14644 - 145c0: f001 017f and.w r1, r1, #127 ; 0x7f - 145c4: 3901 subs r1, #1 - 145c6: b2c9 uxtb r1, r1 - 145c8: 2909 cmp r1, #9 - 145ca: d850 bhi.n 1466e - 145cc: 4b3a ldr r3, [pc, #232] ; (146b8 ) - 145ce: f853 1021 ldr.w r1, [r3, r1, lsl #2] + 1468a: d541 bpl.n 14710 + 1468c: f001 017f and.w r1, r1, #127 ; 0x7f + 14690: 3901 subs r1, #1 + 14692: b2c9 uxtb r1, r1 + 14694: 2909 cmp r1, #9 + 14696: d850 bhi.n 1473a + 14698: 4b3a ldr r3, [pc, #232] ; (14784 ) + 1469a: f853 1021 ldr.w r1, [r3, r1, lsl #2] if (num >= numled) return; - 145d2: f8bb 0060 ldrh.w r0, [fp, #96] ; 0x60 - 145d6: 4581 cmp r9, r0 - 145d8: d210 bcs.n 145fc + 1469e: f8bb 0060 ldrh.w r0, [fp, #96] ; 0x60 + 146a2: 4581 cmp r9, r0 + 146a4: d210 bcs.n 146c8 if (config < 6) { - 145da: f89b 0063 ldrb.w r0, [fp, #99] ; 0x63 - 145de: 2805 cmp r0, #5 + 146a6: f89b 0063 ldrb.w r0, [fp, #99] ; 0x63 + 146aa: 2805 cmp r0, #5 drawBuffer[num+0] = color & 255; - 145e0: f8db 0068 ldr.w r0, [fp, #104] ; 0x68 + 146ac: f8db 0068 ldr.w r0, [fp, #104] ; 0x68 if (config < 6) { - 145e4: d845 bhi.n 14672 + 146b0: d845 bhi.n 1473e drawBuffer[num+0] = color & 255; - 145e6: 5581 strb r1, [r0, r6] + 146b2: 5581 strb r1, [r0, r6] drawBuffer[num+1] = (color >> 8) & 255; - 145e8: 0a0c lsrs r4, r1, #8 - 145ea: f8db 0068 ldr.w r0, [fp, #104] ; 0x68 + 146b4: 0a0c lsrs r4, r1, #8 + 146b6: f8db 0068 ldr.w r0, [fp, #104] ; 0x68 drawBuffer[num+2] = (color >> 16) & 255; - 145ee: 0c09 lsrs r1, r1, #16 + 146ba: 0c09 lsrs r1, r1, #16 drawBuffer[num+1] = (color >> 8) & 255; - 145f0: 9b01 ldr r3, [sp, #4] - 145f2: 54c4 strb r4, [r0, r3] + 146bc: 9b01 ldr r3, [sp, #4] + 146be: 54c4 strb r4, [r0, r3] drawBuffer[num+2] = (color >> 16) & 255; - 145f4: 9b02 ldr r3, [sp, #8] - 145f6: f8db 0068 ldr.w r0, [fp, #104] ; 0x68 - 145fa: 54c1 strb r1, [r0, r3] + 146c0: 9b02 ldr r3, [sp, #8] + 146c2: f8db 0068 ldr.w r0, [fp, #104] ; 0x68 + 146c6: 54c1 strb r1, [r0, r3] pixels.show(); - 145fc: 4650 mov r0, sl + 146c8: 4650 mov r0, sl for(uint8_t i=0,n=getRgbPixelIndex(0); i + 146ce: f014 fcd1 bl 29074 delay(5); - 14606: 2005 movs r0, #5 - 14608: f015 ff60 bl 2a4cc + 146d2: 2005 movs r0, #5 + 146d4: f015 ff6e bl 2a5b4 for(uint8_t i=0,n=getRgbPixelIndex(0); i - 14614: 2100 movs r1, #0 - 14616: 482a ldr r0, [pc, #168] ; (146c0 ) - 14618: f017 ff96 bl 2c548 + 146d8: f1b9 0f06 cmp.w r9, #6 + 146dc: f47f af45 bne.w 1456a + 146e0: 2100 movs r1, #0 + 146e2: 482a ldr r0, [pc, #168] ; (1478c ) + 146e4: f017 ffa4 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1461c: 4822 ldr r0, [pc, #136] ; (146a8 ) + 146e8: 4822 ldr r0, [pc, #136] ; (14774 ) } - 1461e: b009 add sp, #36 ; 0x24 - 14620: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 14624: f015 bc26 b.w 29e74 + 146ea: b009 add sp, #36 ; 0x24 + 146ec: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 146f0: f015 bc36 b.w 29f60 if(BMC_IS_EVEN(n)){ - 14628: 9b07 ldr r3, [sp, #28] + 146f4: 9b07 ldr r3, [sp, #28] uint8_t tmp = dimColors[offset]; - 1462a: eb0b 0457 add.w r4, fp, r7, lsr #1 + 146f6: eb0b 0457 add.w r4, fp, r7, lsr #1 if(BMC_IS_EVEN(n)){ - 1462e: 07db lsls r3, r3, #31 + 146fa: 07db lsls r3, r3, #31 uint8_t tmp = dimColors[offset]; - 14630: f894 1082 ldrb.w r1, [r4, #130] ; 0x82 + 146fc: f894 1082 ldrb.w r1, [r4, #130] ; 0x82 if(BMC_IS_EVEN(n)){ - 14634: f57f af42 bpl.w 144bc + 14700: f57f af42 bpl.w 14588 tmp &= 0x0F; - 14638: f001 010f and.w r1, r1, #15 + 14704: f001 010f and.w r1, r1, #15 tmp |= (color<<4); - 1463c: ea41 1000 orr.w r0, r1, r0, lsl #4 - 14640: b2c1 uxtb r1, r0 - 14642: e740 b.n 144c6 - 14644: f8bb 00be ldrh.w r0, [fp, #190] ; 0xbe + 14708: ea41 1000 orr.w r0, r1, r0, lsl #4 + 1470c: b2c1 uxtb r1, r0 + 1470e: e740 b.n 14592 + 14710: f8bb 00be ldrh.w r0, [fp, #190] ; 0xbe if(flags.read(BMC_PIXELS_FLAG_USE_DIM)){ - 14648: f3c0 0140 ubfx r1, r0, #1, #1 - 1464c: 0780 lsls r0, r0, #30 - 1464e: d5c0 bpl.n 145d2 + 14714: f3c0 0140 ubfx r1, r0, #1, #1 + 14718: 0780 lsls r0, r0, #30 + 1471a: d5c0 bpl.n 1469e uint8_t offset = (uint16_t) ((n>0) ? (n/2) : 0); - 14650: f1b9 0f00 cmp.w r9, #0 - 14654: d01e beq.n 14694 + 1471c: f1b9 0f00 cmp.w r9, #0 + 14720: d01e beq.n 14760 if(BMC_IS_EVEN(n)){ - 14656: 9b07 ldr r3, [sp, #28] + 14722: 9b07 ldr r3, [sp, #28] uint8_t offset = (uint16_t) ((n>0) ? (n/2) : 0); - 14658: 087f lsrs r7, r7, #1 + 14724: 087f lsrs r7, r7, #1 if(BMC_IS_EVEN(n)){ - 1465a: 07da lsls r2, r3, #31 - 1465c: d51b bpl.n 14696 + 14726: 07da lsls r2, r3, #31 + 14728: d51b bpl.n 14762 return ((dimColors[offset] >> 4) & 0x0F); - 1465e: 445f add r7, fp - 14660: f897 1082 ldrb.w r1, [r7, #130] ; 0x82 - 14664: 0909 lsrs r1, r1, #4 + 1472a: 445f add r7, fp + 1472c: f897 1082 ldrb.w r1, [r7, #130] ; 0x82 + 14730: 0909 lsrs r1, r1, #4 switch(t_index){ - 14666: 4b17 ldr r3, [pc, #92] ; (146c4 ) - 14668: f853 1021 ldr.w r1, [r3, r1, lsl #2] - 1466c: e7b1 b.n 145d2 + 14732: 4b17 ldr r3, [pc, #92] ; (14790 ) + 14734: f853 1021 ldr.w r1, [r3, r1, lsl #2] + 14738: e7b1 b.n 1469e if(bitRead(prev, 7)){ - 1466e: 2100 movs r1, #0 + 1473a: 2100 movs r1, #0 if (num >= numled) return; - 14670: e7af b.n 145d2 + 1473c: e7af b.n 1469e drawBuffer[num+0] = color & 255; - 14672: 5541 strb r1, [r0, r5] + 1473e: 5541 strb r1, [r0, r5] drawBuffer[num+1] = (color >> 8) & 255; - 14674: 0a0c lsrs r4, r1, #8 - 14676: f8db 0068 ldr.w r0, [fp, #104] ; 0x68 + 14740: 0a0c lsrs r4, r1, #8 + 14742: f8db 0068 ldr.w r0, [fp, #104] ; 0x68 drawBuffer[num+2] = (color >> 16) & 255; - 1467a: 0c09 lsrs r1, r1, #16 + 14746: 0c09 lsrs r1, r1, #16 drawBuffer[num+1] = (color >> 8) & 255; - 1467c: 9b03 ldr r3, [sp, #12] - 1467e: 54c4 strb r4, [r0, r3] + 14748: 9b03 ldr r3, [sp, #12] + 1474a: 54c4 strb r4, [r0, r3] drawBuffer[num+2] = (color >> 16) & 255; - 14680: 9b04 ldr r3, [sp, #16] - 14682: f8db 0068 ldr.w r0, [fp, #104] ; 0x68 - 14686: 54c1 strb r1, [r0, r3] + 1474c: 9b04 ldr r3, [sp, #16] + 1474e: f8db 0068 ldr.w r0, [fp, #104] ; 0x68 + 14752: 54c1 strb r1, [r0, r3] drawBuffer[num+3] = (color >> 24) & 255; - 14688: 9b05 ldr r3, [sp, #20] - 1468a: f8db 1068 ldr.w r1, [fp, #104] ; 0x68 - 1468e: f801 8003 strb.w r8, [r1, r3] - 14692: e7b3 b.n 145fc - 14694: 464f mov r7, r9 + 14754: 9b05 ldr r3, [sp, #20] + 14756: f8db 1068 ldr.w r1, [fp, #104] ; 0x68 + 1475a: f801 8003 strb.w r8, [r1, r3] + 1475e: e7b3 b.n 146c8 + 14760: 464f mov r7, r9 return (dimColors[offset] & 0x0F); - 14696: 445f add r7, fp - 14698: f897 1082 ldrb.w r1, [r7, #130] ; 0x82 - 1469c: f001 010f and.w r1, r1, #15 - 146a0: e7e1 b.n 14666 - 146a2: bf00 nop - 146a4: 20004080 .word 0x20004080 - 146a8: 20004ba8 .word 0x20004ba8 - 146ac: 20004094 .word 0x20004094 - 146b0: 200023ec .word 0x200023ec - 146b4: 200040b4 .word 0x200040b4 - 146b8: 20000f44 .word 0x20000f44 - 146bc: 20000f48 .word 0x20000f48 - 146c0: 20003c58 .word 0x20003c58 - 146c4: 20000f6c .word 0x20000f6c - -000146c8 : + 14762: 445f add r7, fp + 14764: f897 1082 ldrb.w r1, [r7, #130] ; 0x82 + 14768: f001 010f and.w r1, r1, #15 + 1476c: e7e1 b.n 14732 + 1476e: bf00 nop + 14770: 20004140 .word 0x20004140 + 14774: 20004c68 .word 0x20004c68 + 14778: 20004154 .word 0x20004154 + 1477c: 200023ec .word 0x200023ec + 14780: 20004174 .word 0x20004174 + 14784: 20000f44 .word 0x20000f44 + 14788: 20000f48 .word 0x20000f48 + 1478c: 20003d18 .word 0x20003d18 + 14790: 20000f6c .word 0x20000f6c + +00014794 : if(t_index >= BMC_TOTAL_PIXELS){ - 146c8: 2905 cmp r1, #5 - 146ca: f200 808c bhi.w 147e6 + 14794: 2905 cmp r1, #5 + 14796: f200 808c bhi.w 148b2 if(t_color==255){ - 146ce: 2aff cmp r2, #255 ; 0xff - 146d0: 4603 mov r3, r0 + 1479a: 2aff cmp r2, #255 ; 0xff + 1479c: 4603 mov r3, r0 void write(uint16_t t_index, uint8_t t_color=255){ - 146d2: b570 push {r4, r5, r6, lr} + 1479e: b570 push {r4, r5, r6, lr} return (n + 147a8: d008 beq.n 147bc } else if(t_color==127){ - 146de: 2a7f cmp r2, #127 ; 0x7f - 146e0: f000 80e6 beq.w 148b0 - 146e4: 4610 mov r0, r2 + 147aa: 2a7f cmp r2, #127 ; 0x7f + 147ac: f000 80e6 beq.w 1497c + 147b0: 4610 mov r0, r2 if(t_color == 0){ - 146e6: b938 cbnz r0, 146f8 + 147b2: b938 cbnz r0, 147c4 if(bitRead(cColor, 7)){ - 146e8: 0624 lsls r4, r4, #24 - 146ea: f100 8084 bmi.w 147f6 + 147b4: 0624 lsls r4, r4, #24 + 147b6: f100 8084 bmi.w 148c2 } - 146ee: bd70 pop {r4, r5, r6, pc} + 147ba: bd70 pop {r4, r5, r6, pc} t_color = cColor & 0x0F; - 146f0: f004 000f and.w r0, r4, #15 + 147bc: f004 000f and.w r0, r4, #15 if(t_color == 0){ - 146f4: 2800 cmp r0, #0 - 146f6: d0f7 beq.n 146e8 + 147c0: 2800 cmp r0, #0 + 147c2: d0f7 beq.n 147b4 if(!bitRead(cColor,7) || (cColor&0x7F)!=t_color){ - 146f8: 0626 lsls r6, r4, #24 - 146fa: d475 bmi.n 147e8 + 147c4: 0626 lsls r6, r4, #24 + 147c6: d475 bmi.n 148b4 if(_t_color==BMC_COLOR_RAINBOW_FADE){ - 146fc: 2a0a cmp r2, #10 - 146fe: f000 80db beq.w 148b8 + 147c8: 2a0a cmp r2, #10 + 147ca: f000 80db beq.w 14984 switch(t_color & 0x7F){ - 14702: f000 027f and.w r2, r0, #127 ; 0x7f - 14706: 3a01 subs r2, #1 - 14708: b2d2 uxtb r2, r2 - 1470a: 2a09 cmp r2, #9 - 1470c: d871 bhi.n 147f2 - 1470e: 4c93 ldr r4, [pc, #588] ; (1495c ) - 14710: f854 2022 ldr.w r2, [r4, r2, lsl #2] + 147ce: f000 027f and.w r2, r0, #127 ; 0x7f + 147d2: 3a01 subs r2, #1 + 147d4: b2d2 uxtb r2, r2 + 147d6: 2a09 cmp r2, #9 + 147d8: d871 bhi.n 148be + 147da: 4c93 ldr r4, [pc, #588] ; (14a28 ) + 147dc: f854 2022 ldr.w r2, [r4, r2, lsl #2] if (num >= numled) return; - 14714: f8b3 4060 ldrh.w r4, [r3, #96] ; 0x60 - 14718: 42a1 cmp r1, r4 - 1471a: d212 bcs.n 14742 + 147e0: f8b3 4060 ldrh.w r4, [r3, #96] ; 0x60 + 147e4: 42a1 cmp r1, r4 + 147e6: d212 bcs.n 1480e if (config < 6) { - 1471c: f893 4063 ldrb.w r4, [r3, #99] ; 0x63 - 14720: 2c05 cmp r4, #5 - 14722: f200 80dd bhi.w 148e0 + 147e8: f893 4063 ldrb.w r4, [r3, #99] ; 0x63 + 147ec: 2c05 cmp r4, #5 + 147ee: f200 80dd bhi.w 149ac drawBuffer[num+0] = color & 255; - 14726: 6e9e ldr r6, [r3, #104] ; 0x68 + 147f2: 6e9e ldr r6, [r3, #104] ; 0x68 num *= 3; - 14728: eb01 0441 add.w r4, r1, r1, lsl #1 + 147f4: eb01 0441 add.w r4, r1, r1, lsl #1 drawBuffer[num+1] = (color >> 8) & 255; - 1472c: ea4f 2c12 mov.w ip, r2, lsr #8 + 147f8: ea4f 2c12 mov.w ip, r2, lsr #8 drawBuffer[num+0] = color & 255; - 14730: 5532 strb r2, [r6, r4] + 147fc: 5532 strb r2, [r6, r4] drawBuffer[num+2] = (color >> 16) & 255; - 14732: 0c12 lsrs r2, r2, #16 + 147fe: 0c12 lsrs r2, r2, #16 drawBuffer[num+1] = (color >> 8) & 255; - 14734: 6e9e ldr r6, [r3, #104] ; 0x68 - 14736: 4426 add r6, r4 - 14738: f886 c001 strb.w ip, [r6, #1] + 14800: 6e9e ldr r6, [r3, #104] ; 0x68 + 14802: 4426 add r6, r4 + 14804: f886 c001 strb.w ip, [r6, #1] drawBuffer[num+2] = (color >> 16) & 255; - 1473c: 6e9e ldr r6, [r3, #104] ; 0x68 - 1473e: 4426 add r6, r4 - 14740: 70b2 strb r2, [r6, #2] + 14808: 6e9e ldr r6, [r3, #104] ; 0x68 + 1480a: 4426 add r6, r4 + 1480c: 70b2 strb r2, [r6, #2] bitWrite(t_color, 7, 1); - 14742: f060 027f orn r2, r0, #127 ; 0x7f - 14746: f000 000f and.w r0, r0, #15 - 1474a: b2d2 uxtb r2, r2 + 1480e: f060 027f orn r2, r0, #127 ; 0x7f + 14812: f000 000f and.w r0, r0, #15 + 14816: b2d2 uxtb r2, r2 currentColor[t_index] = t_color; - 1474c: f885 207c strb.w r2, [r5, #124] ; 0x7c + 14818: f885 207c strb.w r2, [r5, #124] ; 0x7c globals.rgbPixelStates[0].setBit(n, bitRead(color, 0)); - 14750: f002 0201 and.w r2, r2, #1 - 14754: 681c ldr r4, [r3, #0] + 1481c: f002 0201 and.w r2, r2, #1 + 14820: 681c ldr r4, [r3, #0] if(bitRead(value[mask], bit) != newValue){ - 14756: f8b4 504a ldrh.w r5, [r4, #74] ; 0x4a - 1475a: fa45 fc01 asr.w ip, r5, r1 - 1475e: f00c 0c01 and.w ip, ip, #1 - 14762: 4594 cmp ip, r2 - 14764: d00b beq.n 1477e + 14822: f8b4 504a ldrh.w r5, [r4, #74] ; 0x4a + 14826: fa45 fc01 asr.w ip, r5, r1 + 1482a: f00c 0c01 and.w ip, ip, #1 + 1482e: 4594 cmp ip, r2 + 14830: d00b beq.n 1484a bitWrite(value[mask], bit, newValue); - 14766: 2a00 cmp r2, #0 - 14768: f000 80cd beq.w 14906 - 1476c: 2201 movs r2, #1 - 1476e: 408a lsls r2, r1 - 14770: 4315 orrs r5, r2 - 14772: b2ad uxth r5, r5 + 14832: 2a00 cmp r2, #0 + 14834: f000 80cd beq.w 149d2 + 14838: 2201 movs r2, #1 + 1483a: 408a lsls r2, r1 + 1483c: 4315 orrs r5, r2 + 1483e: b2ad uxth r5, r5 updated = true; - 14774: 2201 movs r2, #1 - 14776: f8a4 504a strh.w r5, [r4, #74] ; 0x4a - 1477a: f884 204c strb.w r2, [r4, #76] ; 0x4c + 14840: 2201 movs r2, #1 + 14842: f8a4 504a strh.w r5, [r4, #74] ; 0x4a + 14846: f884 204c strb.w r2, [r4, #76] ; 0x4c if(bitRead(value[mask], bit) != newValue){ - 1477e: f8b4 204e ldrh.w r2, [r4, #78] ; 0x4e + 1484a: f8b4 204e ldrh.w r2, [r4, #78] ; 0x4e globals.rgbPixelStates[1].setBit(n, bitRead(color, 1)); - 14782: f3c0 0640 ubfx r6, r0, #1, #1 - 14786: fa42 f501 asr.w r5, r2, r1 - 1478a: f005 0501 and.w r5, r5, #1 - 1478e: 42b5 cmp r5, r6 - 14790: d00b beq.n 147aa + 1484e: f3c0 0640 ubfx r6, r0, #1, #1 + 14852: fa42 f501 asr.w r5, r2, r1 + 14856: f005 0501 and.w r5, r5, #1 + 1485a: 42b5 cmp r5, r6 + 1485c: d00b beq.n 14876 bitWrite(value[mask], bit, newValue); - 14792: 2501 movs r5, #1 - 14794: 408d lsls r5, r1 - 14796: 2e00 cmp r6, #0 - 14798: f000 80ba beq.w 14910 - 1479c: 432a orrs r2, r5 - 1479e: b292 uxth r2, r2 - 147a0: f8a4 204e strh.w r2, [r4, #78] ; 0x4e + 1485e: 2501 movs r5, #1 + 14860: 408d lsls r5, r1 + 14862: 2e00 cmp r6, #0 + 14864: f000 80ba beq.w 149dc + 14868: 432a orrs r2, r5 + 1486a: b292 uxth r2, r2 + 1486c: f8a4 204e strh.w r2, [r4, #78] ; 0x4e updated = true; - 147a4: 2201 movs r2, #1 - 147a6: f884 2050 strb.w r2, [r4, #80] ; 0x50 + 14870: 2201 movs r2, #1 + 14872: f884 2050 strb.w r2, [r4, #80] ; 0x50 if(bitRead(value[mask], bit) != newValue){ - 147aa: f8b4 2052 ldrh.w r2, [r4, #82] ; 0x52 + 14876: f8b4 2052 ldrh.w r2, [r4, #82] ; 0x52 globals.rgbPixelStates[2].setBit(n, bitRead(color, 2)); - 147ae: f3c0 0080 ubfx r0, r0, #2, #1 - 147b2: fa42 f501 asr.w r5, r2, r1 - 147b6: f005 0501 and.w r5, r5, #1 - 147ba: 4285 cmp r5, r0 - 147bc: d00c beq.n 147d8 + 1487a: f3c0 0080 ubfx r0, r0, #2, #1 + 1487e: fa42 f501 asr.w r5, r2, r1 + 14882: f005 0501 and.w r5, r5, #1 + 14886: 4285 cmp r5, r0 + 14888: d00c beq.n 148a4 bitWrite(value[mask], bit, newValue); - 147be: 2800 cmp r0, #0 - 147c0: f000 80a9 beq.w 14916 - 147c4: 2001 movs r0, #1 - 147c6: fa00 f101 lsl.w r1, r0, r1 - 147ca: 430a orrs r2, r1 - 147cc: b292 uxth r2, r2 + 1488a: 2800 cmp r0, #0 + 1488c: f000 80a9 beq.w 149e2 + 14890: 2001 movs r0, #1 + 14892: fa00 f101 lsl.w r1, r0, r1 + 14896: 430a orrs r2, r1 + 14898: b292 uxth r2, r2 updated = true; - 147ce: 2101 movs r1, #1 - 147d0: f8a4 2052 strh.w r2, [r4, #82] ; 0x52 - 147d4: f884 1054 strb.w r1, [r4, #84] ; 0x54 + 1489a: 2101 movs r1, #1 + 1489c: f8a4 2052 strh.w r2, [r4, #82] ; 0x52 + 148a0: f884 1054 strb.w r1, [r4, #84] ; 0x54 bitSet(flags, bit); - 147d8: f8b3 20be ldrh.w r2, [r3, #190] ; 0xbe - 147dc: f042 0201 orr.w r2, r2, #1 - 147e0: f8a3 20be strh.w r2, [r3, #190] ; 0xbe + 148a4: f8b3 20be ldrh.w r2, [r3, #190] ; 0xbe + 148a8: f042 0201 orr.w r2, r2, #1 + 148ac: f8a3 20be strh.w r2, [r3, #190] ; 0xbe } - 147e4: bd70 pop {r4, r5, r6, pc} - 147e6: 4770 bx lr + 148b0: bd70 pop {r4, r5, r6, pc} + 148b2: 4770 bx lr if(!bitRead(cColor,7) || (cColor&0x7F)!=t_color){ - 147e8: f004 047f and.w r4, r4, #127 ; 0x7f - 147ec: 42a0 cmp r0, r4 - 147ee: d185 bne.n 146fc + 148b4: f004 047f and.w r4, r4, #127 ; 0x7f + 148b8: 42a0 cmp r0, r4 + 148ba: d185 bne.n 147c8 } - 147f0: bd70 pop {r4, r5, r6, pc} + 148bc: bd70 pop {r4, r5, r6, pc} if(_t_color==BMC_COLOR_RAINBOW_FADE){ - 147f2: 2200 movs r2, #0 - 147f4: e78e b.n 14714 + 148be: 2200 movs r2, #0 + 148c0: e78e b.n 147e0 return bitRead(flags, bit); - 147f6: f8b3 40be ldrh.w r4, [r3, #190] ; 0xbe + 148c2: f8b3 40be ldrh.w r4, [r3, #190] ; 0xbe if(flags.read(BMC_PIXELS_FLAG_USE_DIM)){ - 147fa: 07a2 lsls r2, r4, #30 - 147fc: d50e bpl.n 1481c + 148c6: 07a2 lsls r2, r4, #30 + 148c8: d50e bpl.n 148e8 uint8_t offset = (uint16_t) ((n>0) ? (n/2) : 0); - 147fe: 2900 cmp r1, #0 - 14800: f000 80a4 beq.w 1494c + 148ca: 2900 cmp r1, #0 + 148cc: f000 80a4 beq.w 14a18 if(BMC_IS_EVEN(n)){ - 14804: 07ce lsls r6, r1, #31 + 148d0: 07ce lsls r6, r1, #31 uint8_t offset = (uint16_t) ((n>0) ? (n/2) : 0); - 14806: ea4f 0251 mov.w r2, r1, lsr #1 + 148d2: ea4f 0251 mov.w r2, r1, lsr #1 if(BMC_IS_EVEN(n)){ - 1480a: f140 80a0 bpl.w 1494e + 148d6: f140 80a0 bpl.w 14a1a return ((dimColors[offset] >> 4) & 0x0F); - 1480e: 441a add r2, r3 - 14810: f892 2082 ldrb.w r2, [r2, #130] ; 0x82 - 14814: 0912 lsrs r2, r2, #4 + 148da: 441a add r2, r3 + 148dc: f892 2082 ldrb.w r2, [r2, #130] ; 0x82 + 148e0: 0912 lsrs r2, r2, #4 switch(t_index){ - 14816: 4852 ldr r0, [pc, #328] ; (14960 ) - 14818: f850 0022 ldr.w r0, [r0, r2, lsl #2] + 148e2: 4852 ldr r0, [pc, #328] ; (14a2c ) + 148e4: f850 0022 ldr.w r0, [r0, r2, lsl #2] if (num >= numled) return; - 1481c: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 - 14820: 4291 cmp r1, r2 - 14822: d211 bcs.n 14848 + 148e8: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 + 148ec: 4291 cmp r1, r2 + 148ee: d211 bcs.n 14914 if (config < 6) { - 14824: f893 2063 ldrb.w r2, [r3, #99] ; 0x63 - 14828: 2a05 cmp r2, #5 - 1482a: d87a bhi.n 14922 + 148f0: f893 2063 ldrb.w r2, [r3, #99] ; 0x63 + 148f4: 2a05 cmp r2, #5 + 148f6: d87a bhi.n 149ee drawBuffer[num+0] = color & 255; - 1482c: 6e9c ldr r4, [r3, #104] ; 0x68 + 148f8: 6e9c ldr r4, [r3, #104] ; 0x68 num *= 3; - 1482e: eb01 0241 add.w r2, r1, r1, lsl #1 + 148fa: eb01 0241 add.w r2, r1, r1, lsl #1 drawBuffer[num+1] = (color >> 8) & 255; - 14832: 0a06 lsrs r6, r0, #8 + 148fe: 0a06 lsrs r6, r0, #8 drawBuffer[num+0] = color & 255; - 14834: 54a0 strb r0, [r4, r2] + 14900: 54a0 strb r0, [r4, r2] drawBuffer[num+2] = (color >> 16) & 255; - 14836: 0c00 lsrs r0, r0, #16 + 14902: 0c00 lsrs r0, r0, #16 drawBuffer[num+1] = (color >> 8) & 255; - 14838: 6e9c ldr r4, [r3, #104] ; 0x68 - 1483a: 4414 add r4, r2 - 1483c: 7066 strb r6, [r4, #1] + 14904: 6e9c ldr r4, [r3, #104] ; 0x68 + 14906: 4414 add r4, r2 + 14908: 7066 strb r6, [r4, #1] drawBuffer[num+2] = (color >> 16) & 255; - 1483e: 6e9c ldr r4, [r3, #104] ; 0x68 - 14840: 4414 add r4, r2 - 14842: 70a0 strb r0, [r4, #2] + 1490a: 6e9c ldr r4, [r3, #104] ; 0x68 + 1490c: 4414 add r4, r2 + 1490e: 70a0 strb r0, [r4, #2] bitSet(flags, bit); - 14844: f8b3 40be ldrh.w r4, [r3, #190] ; 0xbe + 14910: f8b3 40be ldrh.w r4, [r3, #190] ; 0xbe currentColor[t_index] = 0; - 14848: 2200 movs r2, #0 - 1484a: f885 207c strb.w r2, [r5, #124] ; 0x7c + 14914: 2200 movs r2, #0 + 14916: f885 207c strb.w r2, [r5, #124] ; 0x7c globals.rgbPixelStates[0].setBit(n, bitRead(color, 0)); - 1484e: 681a ldr r2, [r3, #0] + 1491a: 681a ldr r2, [r3, #0] if(bitRead(value[mask], bit) != newValue){ - 14850: f8b2 004a ldrh.w r0, [r2, #74] ; 0x4a - 14854: fa40 f501 asr.w r5, r0, r1 - 14858: 07ed lsls r5, r5, #31 - 1485a: d507 bpl.n 1486c + 1491c: f8b2 004a ldrh.w r0, [r2, #74] ; 0x4a + 14920: fa40 f501 asr.w r5, r0, r1 + 14924: 07ed lsls r5, r5, #31 + 14926: d507 bpl.n 14938 bitWrite(value[mask], bit, newValue); - 1485c: 2501 movs r5, #1 + 14928: 2501 movs r5, #1 updated = true; - 1485e: f882 504c strb.w r5, [r2, #76] ; 0x4c + 1492a: f882 504c strb.w r5, [r2, #76] ; 0x4c bitWrite(value[mask], bit, newValue); - 14862: 408d lsls r5, r1 - 14864: ea20 0005 bic.w r0, r0, r5 - 14868: f8a2 004a strh.w r0, [r2, #74] ; 0x4a + 1492e: 408d lsls r5, r1 + 14930: ea20 0005 bic.w r0, r0, r5 + 14934: f8a2 004a strh.w r0, [r2, #74] ; 0x4a if(bitRead(value[mask], bit) != newValue){ - 1486c: f8b2 004e ldrh.w r0, [r2, #78] ; 0x4e - 14870: fa40 f501 asr.w r5, r0, r1 - 14874: 07ee lsls r6, r5, #31 - 14876: d507 bpl.n 14888 + 14938: f8b2 004e ldrh.w r0, [r2, #78] ; 0x4e + 1493c: fa40 f501 asr.w r5, r0, r1 + 14940: 07ee lsls r6, r5, #31 + 14942: d507 bpl.n 14954 bitWrite(value[mask], bit, newValue); - 14878: 2501 movs r5, #1 + 14944: 2501 movs r5, #1 updated = true; - 1487a: f882 5050 strb.w r5, [r2, #80] ; 0x50 + 14946: f882 5050 strb.w r5, [r2, #80] ; 0x50 bitWrite(value[mask], bit, newValue); - 1487e: 408d lsls r5, r1 - 14880: ea20 0005 bic.w r0, r0, r5 - 14884: f8a2 004e strh.w r0, [r2, #78] ; 0x4e + 1494a: 408d lsls r5, r1 + 1494c: ea20 0005 bic.w r0, r0, r5 + 14950: f8a2 004e strh.w r0, [r2, #78] ; 0x4e if(bitRead(value[mask], bit) != newValue){ - 14888: f8b2 0052 ldrh.w r0, [r2, #82] ; 0x52 - 1488c: fa40 f501 asr.w r5, r0, r1 - 14890: 07ed lsls r5, r5, #31 - 14892: d508 bpl.n 148a6 + 14954: f8b2 0052 ldrh.w r0, [r2, #82] ; 0x52 + 14958: fa40 f501 asr.w r5, r0, r1 + 1495c: 07ed lsls r5, r5, #31 + 1495e: d508 bpl.n 14972 bitWrite(value[mask], bit, newValue); - 14894: 2501 movs r5, #1 - 14896: fa05 f101 lsl.w r1, r5, r1 + 14960: 2501 movs r5, #1 + 14962: fa05 f101 lsl.w r1, r5, r1 updated = true; - 1489a: f882 5054 strb.w r5, [r2, #84] ; 0x54 + 14966: f882 5054 strb.w r5, [r2, #84] ; 0x54 bitWrite(value[mask], bit, newValue); - 1489e: ea20 0001 bic.w r0, r0, r1 - 148a2: f8a2 0052 strh.w r0, [r2, #82] ; 0x52 - 148a6: f044 0401 orr.w r4, r4, #1 - 148aa: f8a3 40be strh.w r4, [r3, #190] ; 0xbe + 1496a: ea20 0001 bic.w r0, r0, r1 + 1496e: f8a2 0052 strh.w r0, [r2, #82] ; 0x52 + 14972: f044 0401 orr.w r4, r4, #1 + 14976: f8a3 40be strh.w r4, [r3, #190] ; 0xbe } - 148ae: bd70 pop {r4, r5, r6, pc} + 1497a: bd70 pop {r4, r5, r6, pc} t_color = getDefaultColor(t_index); - 148b0: 4608 mov r0, r1 - 148b2: f7ff fdc1 bl 14438 - 148b6: e716 b.n 146e6 + 1497c: 4608 mov r0, r1 + 1497e: f7ff fdc1 bl 14504 + 14982: e716 b.n 147b2 if (num >= numled) return; - 148b8: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 - 148bc: 4291 cmp r1, r2 - 148be: f4bf af40 bcs.w 14742 + 14984: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 + 14988: 4291 cmp r1, r2 + 1498a: f4bf af40 bcs.w 1480e setPixelValue(t_index, (rainbowRGB[0] | (rainbowRGB[1]<<8) | (rainbowRGB[2]<<16))); - 148c2: f893 20c2 ldrb.w r2, [r3, #194] ; 0xc2 - 148c6: f893 40c1 ldrb.w r4, [r3, #193] ; 0xc1 - 148ca: 0412 lsls r2, r2, #16 - 148cc: ea42 2204 orr.w r2, r2, r4, lsl #8 - 148d0: f893 40c0 ldrb.w r4, [r3, #192] ; 0xc0 - 148d4: 4322 orrs r2, r4 + 1498e: f893 20c2 ldrb.w r2, [r3, #194] ; 0xc2 + 14992: f893 40c1 ldrb.w r4, [r3, #193] ; 0xc1 + 14996: 0412 lsls r2, r2, #16 + 14998: ea42 2204 orr.w r2, r2, r4, lsl #8 + 1499c: f893 40c0 ldrb.w r4, [r3, #192] ; 0xc0 + 149a0: 4322 orrs r2, r4 if (config < 6) { - 148d6: f893 4063 ldrb.w r4, [r3, #99] ; 0x63 - 148da: 2c05 cmp r4, #5 - 148dc: f67f af23 bls.w 14726 + 149a2: f893 4063 ldrb.w r4, [r3, #99] ; 0x63 + 149a6: 2c05 cmp r4, #5 + 149a8: f67f af23 bls.w 147f2 drawBuffer[num+0] = color & 255; - 148e0: 6e9c ldr r4, [r3, #104] ; 0x68 + 149ac: 6e9c ldr r4, [r3, #104] ; 0x68 drawBuffer[num+1] = (color >> 8) & 255; - 148e2: 0a16 lsrs r6, r2, #8 + 149ae: 0a16 lsrs r6, r2, #8 drawBuffer[num+0] = color & 255; - 148e4: f804 2021 strb.w r2, [r4, r1, lsl #2] + 149b0: f804 2021 strb.w r2, [r4, r1, lsl #2] drawBuffer[num+2] = (color >> 16) & 255; - 148e8: 0c12 lsrs r2, r2, #16 + 149b4: 0c12 lsrs r2, r2, #16 drawBuffer[num+1] = (color >> 8) & 255; - 148ea: 6e9c ldr r4, [r3, #104] ; 0x68 - 148ec: eb04 0481 add.w r4, r4, r1, lsl #2 - 148f0: 7066 strb r6, [r4, #1] + 149b6: 6e9c ldr r4, [r3, #104] ; 0x68 + 149b8: eb04 0481 add.w r4, r4, r1, lsl #2 + 149bc: 7066 strb r6, [r4, #1] drawBuffer[num+2] = (color >> 16) & 255; - 148f2: 6e9c ldr r4, [r3, #104] ; 0x68 - 148f4: eb04 0481 add.w r4, r4, r1, lsl #2 - 148f8: 70a2 strb r2, [r4, #2] + 149be: 6e9c ldr r4, [r3, #104] ; 0x68 + 149c0: eb04 0481 add.w r4, r4, r1, lsl #2 + 149c4: 70a2 strb r2, [r4, #2] drawBuffer[num+3] = (color >> 24) & 255; - 148fa: 2400 movs r4, #0 - 148fc: 6e9a ldr r2, [r3, #104] ; 0x68 - 148fe: eb02 0281 add.w r2, r2, r1, lsl #2 - 14902: 70d4 strb r4, [r2, #3] - 14904: e71d b.n 14742 - 14906: 2201 movs r2, #1 - 14908: 408a lsls r2, r1 - 1490a: ea25 0502 bic.w r5, r5, r2 - 1490e: e731 b.n 14774 - 14910: ea22 0205 bic.w r2, r2, r5 - 14914: e744 b.n 147a0 - 14916: 2001 movs r0, #1 - 14918: fa00 f101 lsl.w r1, r0, r1 - 1491c: ea22 0201 bic.w r2, r2, r1 - 14920: e755 b.n 147ce + 149c6: 2400 movs r4, #0 + 149c8: 6e9a ldr r2, [r3, #104] ; 0x68 + 149ca: eb02 0281 add.w r2, r2, r1, lsl #2 + 149ce: 70d4 strb r4, [r2, #3] + 149d0: e71d b.n 1480e + 149d2: 2201 movs r2, #1 + 149d4: 408a lsls r2, r1 + 149d6: ea25 0502 bic.w r5, r5, r2 + 149da: e731 b.n 14840 + 149dc: ea22 0205 bic.w r2, r2, r5 + 149e0: e744 b.n 1486c + 149e2: 2001 movs r0, #1 + 149e4: fa00 f101 lsl.w r1, r0, r1 + 149e8: ea22 0201 bic.w r2, r2, r1 + 149ec: e755 b.n 1489a drawBuffer[num+0] = color & 255; - 14922: 6e9a ldr r2, [r3, #104] ; 0x68 + 149ee: 6e9a ldr r2, [r3, #104] ; 0x68 drawBuffer[num+1] = (color >> 8) & 255; - 14924: 0a04 lsrs r4, r0, #8 + 149f0: 0a04 lsrs r4, r0, #8 drawBuffer[num+0] = color & 255; - 14926: f802 0021 strb.w r0, [r2, r1, lsl #2] + 149f2: f802 0021 strb.w r0, [r2, r1, lsl #2] drawBuffer[num+2] = (color >> 16) & 255; - 1492a: 0c00 lsrs r0, r0, #16 + 149f6: 0c00 lsrs r0, r0, #16 drawBuffer[num+1] = (color >> 8) & 255; - 1492c: 6e9a ldr r2, [r3, #104] ; 0x68 - 1492e: eb02 0281 add.w r2, r2, r1, lsl #2 - 14932: 7054 strb r4, [r2, #1] + 149f8: 6e9a ldr r2, [r3, #104] ; 0x68 + 149fa: eb02 0281 add.w r2, r2, r1, lsl #2 + 149fe: 7054 strb r4, [r2, #1] drawBuffer[num+2] = (color >> 16) & 255; - 14934: 6e9a ldr r2, [r3, #104] ; 0x68 - 14936: eb02 0281 add.w r2, r2, r1, lsl #2 - 1493a: 7090 strb r0, [r2, #2] + 14a00: 6e9a ldr r2, [r3, #104] ; 0x68 + 14a02: eb02 0281 add.w r2, r2, r1, lsl #2 + 14a06: 7090 strb r0, [r2, #2] drawBuffer[num+3] = (color >> 24) & 255; - 1493c: 2000 movs r0, #0 - 1493e: 6e9a ldr r2, [r3, #104] ; 0x68 - 14940: eb02 0281 add.w r2, r2, r1, lsl #2 - 14944: 70d0 strb r0, [r2, #3] - 14946: f8b3 40be ldrh.w r4, [r3, #190] ; 0xbe - 1494a: e77d b.n 14848 - 1494c: 460a mov r2, r1 + 14a08: 2000 movs r0, #0 + 14a0a: 6e9a ldr r2, [r3, #104] ; 0x68 + 14a0c: eb02 0281 add.w r2, r2, r1, lsl #2 + 14a10: 70d0 strb r0, [r2, #3] + 14a12: f8b3 40be ldrh.w r4, [r3, #190] ; 0xbe + 14a16: e77d b.n 14914 + 14a18: 460a mov r2, r1 return (dimColors[offset] & 0x0F); - 1494e: 441a add r2, r3 - 14950: f892 2082 ldrb.w r2, [r2, #130] ; 0x82 - 14954: f002 020f and.w r2, r2, #15 - 14958: e75d b.n 14816 - 1495a: bf00 nop - 1495c: 20000f44 .word 0x20000f44 - 14960: 20000f6c .word 0x20000f6c - -00014964 : + 14a1a: 441a add r2, r3 + 14a1c: f892 2082 ldrb.w r2, [r2, #130] ; 0x82 + 14a20: f002 020f and.w r2, r2, #15 + 14a24: e75d b.n 148e2 + 14a26: bf00 nop + 14a28: 20000f44 .word 0x20000f44 + 14a2c: 20000f6c .word 0x20000f6c + +00014a30 : See LICENSE file in the project root for full license information. */ #include #if BMC_TOTAL_PIXELS > 0 void BMC::setupPixels(){ - 14964: b508 push {r3, lr} - 14966: 4603 mov r3, r0 + 14a30: b508 push {r3, lr} + 14a32: 4603 mov r3, r0 // unused, kept here to match other setups pixels.begin(); - 14968: f643 003c movw r0, #14396 ; 0x383c - 1496c: 4418 add r0, r3 - 1496e: f7ff fd65 bl 1443c + 14a34: f643 005c movw r0, #14428 ; 0x385c + 14a38: 4418 add r0, r3 + 14a3a: f7ff fd65 bl 14508 } - 14972: bd08 pop {r3, pc} + 14a3e: bd08 pop {r3, pc} -00014974 : +00014a40 : void BMC::assignPixels(){ - 14974: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 14a40: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} value[i] = ~value[i]; - 14978: f500 5680 add.w r6, r0, #4096 ; 0x1000 + 14a44: f500 5680 add.w r6, r0, #4096 ; 0x1000 #if BMC_MAX_RGB_PIXELS > 0 globals.rgbPixelStates[0].clear(); globals.rgbPixelStates[1].clear(); globals.rgbPixelStates[2].clear(); for(uint16_t i=0;i& device = store.layers[layer].rgbPixels[i]; - 1497c: 2300 movs r3, #0 + 14a48: 2300 movs r3, #0 bmcStoreEvent r = globals.getDeviceEventType(device.events[0]); - 1497e: f241 59b7 movw r9, #5559 ; 0x15b7 + 14a4a: f241 59b7 movw r9, #5559 ; 0x15b7 bmcStoreEvent g = globals.getDeviceEventType(device.events[1]); - 14982: f241 58b8 movw r8, #5560 ; 0x15b8 - 14986: f8b6 284a ldrh.w r2, [r6, #2122] ; 0x84a + 14a4e: f241 58b8 movw r8, #5560 ; 0x15b8 + 14a52: f8b6 284a ldrh.w r2, [r6, #2122] ; 0x84a void BMC::assignPixels(){ - 1498a: 4605 mov r5, r0 + 14a56: 4605 mov r5, r0 bmcStoreEvent b = globals.getDeviceEventType(device.events[2]); - 1498c: f241 5ab9 movw sl, #5561 ; 0x15b9 - 14990: f500 5440 add.w r4, r0, #12288 ; 0x3000 - 14994: 43d2 mvns r2, r2 + 14a58: f241 5ab9 movw sl, #5561 ; 0x15b9 + 14a5c: f500 5440 add.w r4, r0, #12288 ; 0x3000 + 14a60: 43d2 mvns r2, r2 bmcStoreDevice <1, 3>& device = store.layers[layer].rgbPixels[i]; - 14996: f8d6 786c ldr.w r7, [r6, #2156] ; 0x86c - 1499a: f8a6 284a strh.w r2, [r6, #2122] ; 0x84a - 1499e: f8b6 284e ldrh.w r2, [r6, #2126] ; 0x84e - 149a2: 43d2 mvns r2, r2 - 149a4: f8a6 284e strh.w r2, [r6, #2126] ; 0x84e - 149a8: f8b6 2852 ldrh.w r2, [r6, #2130] ; 0x852 - 149ac: 43d2 mvns r2, r2 - 149ae: f8a6 2852 strh.w r2, [r6, #2130] ; 0x852 - 149b2: 783a ldrb r2, [r7, #0] + 14a62: f8d6 786c ldr.w r7, [r6, #2156] ; 0x86c + 14a66: f8a6 284a strh.w r2, [r6, #2122] ; 0x84a + 14a6a: f8b6 284e ldrh.w r2, [r6, #2126] ; 0x84e + 14a6e: 43d2 mvns r2, r2 + 14a70: f8a6 284e strh.w r2, [r6, #2126] ; 0x84e + 14a74: f8b6 2852 ldrh.w r2, [r6, #2130] ; 0x852 + 14a78: 43d2 mvns r2, r2 + 14a7a: f8a6 2852 strh.w r2, [r6, #2130] ; 0x852 + 14a7e: 783a ldrb r2, [r7, #0] bmcStoreEvent r = globals.getDeviceEventType(device.events[0]); - 149b4: eb03 0083 add.w r0, r3, r3, lsl #2 - 149b8: b299 uxth r1, r3 - 149ba: eb02 1e42 add.w lr, r2, r2, lsl #5 - 149be: ea4f 0c83 mov.w ip, r3, lsl #2 - 149c2: eb02 0e8e add.w lr, r2, lr, lsl #2 - 149c6: 4470 add r0, lr - 149c8: ea4f 1e42 mov.w lr, r2, lsl #5 - 149cc: 4428 add r0, r5 - 149ce: f810 b009 ldrb.w fp, [r0, r9] + 14a80: eb03 0083 add.w r0, r3, r3, lsl #2 + 14a84: b299 uxth r1, r3 + 14a86: eb02 1e42 add.w lr, r2, r2, lsl #5 + 14a8a: ea4f 0c83 mov.w ip, r3, lsl #2 + 14a8e: eb02 0e8e add.w lr, r2, lr, lsl #2 + 14a92: 4470 add r0, lr + 14a94: ea4f 1e42 mov.w lr, r2, lsl #5 + 14a98: 4428 add r0, r5 + 14a9a: f810 b009 ldrb.w fp, [r0, r9] if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 149d2: f10b 30ff add.w r0, fp, #4294967295 ; 0xffffffff - 149d6: 28c7 cmp r0, #199 ; 0xc7 - 149d8: f200 80c2 bhi.w 14b60 + 14a9e: f10b 30ff add.w r0, fp, #4294967295 ; 0xffffffff + 14aa2: 28c7 cmp r0, #199 ; 0xc7 + 14aa4: f200 80c2 bhi.w 14c2c return store.global.events[n-1]; - 149dc: f8d6 0800 ldr.w r0, [r6, #2048] ; 0x800 - 149e0: eb00 00cb add.w r0, r0, fp, lsl #3 - 149e4: f890 0032 ldrb.w r0, [r0, #50] ; 0x32 + 14aa8: f8d6 0800 ldr.w r0, [r6, #2048] ; 0x800 + 14aac: eb00 00cb add.w r0, r0, fp, lsl #3 + 14ab0: f890 0032 ldrb.w r0, [r0, #50] ; 0x32 bmcStoreEvent g = globals.getDeviceEventType(device.events[1]); - 149e8: 4496 add lr, r2 - 149ea: 449c add ip, r3 - 149ec: eb02 028e add.w r2, r2, lr, lsl #2 - 149f0: 4462 add r2, ip - 149f2: 442a add r2, r5 - 149f4: f812 c008 ldrb.w ip, [r2, r8] + 14ab4: 4496 add lr, r2 + 14ab6: 449c add ip, r3 + 14ab8: eb02 028e add.w r2, r2, lr, lsl #2 + 14abc: 4462 add r2, ip + 14abe: 442a add r2, r5 + 14ac0: f812 c008 ldrb.w ip, [r2, r8] if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 149f8: f10c 3eff add.w lr, ip, #4294967295 ; 0xffffffff - 149fc: f1be 0fc7 cmp.w lr, #199 ; 0xc7 - 14a00: f240 8091 bls.w 14b26 + 14ac4: f10c 3eff add.w lr, ip, #4294967295 ; 0xffffffff + 14ac8: f1be 0fc7 cmp.w lr, #199 ; 0xc7 + 14acc: f240 8091 bls.w 14bf2 bmcStoreEvent b = globals.getDeviceEventType(device.events[2]); - 14a04: f812 c00a ldrb.w ip, [r2, sl] - 14a08: f10c 32ff add.w r2, ip, #4294967295 ; 0xffffffff - 14a0c: 2ac7 cmp r2, #199 ; 0xc7 - 14a0e: f240 80b0 bls.w 14b72 + 14ad0: f812 c00a ldrb.w ip, [r2, sl] + 14ad4: f10c 32ff add.w r2, ip, #4294967295 ; 0xffffffff + 14ad8: 2ac7 cmp r2, #199 ; 0xc7 + 14ada: f240 80b0 bls.w 14c3e uint8_t color = 0; bitWrite(color, 0, (r.type > 0)); - 14a12: 2800 cmp r0, #0 - 14a14: d074 beq.n 14b00 - 14a16: 2001 movs r0, #1 + 14ade: 2800 cmp r0, #0 + 14ae0: d074 beq.n 14bcc + 14ae2: 2001 movs r0, #1 uint16_t offset = (uint16_t) ((n>0) ? (n/2) : 0); - 14a18: 2b00 cmp r3, #0 - 14a1a: d176 bne.n 14b0a + 14ae4: 2b00 cmp r3, #0 + 14ae6: d176 bne.n 14bd6 uint8_t tmp = dimColors[offset]; - 14a1c: f894 28be ldrb.w r2, [r4, #2238] ; 0x8be - 14a20: 469c mov ip, r3 + 14ae8: f894 28de ldrb.w r2, [r4, #2270] ; 0x8de + 14aec: 469c mov ip, r3 tmp &= 0xF0; - 14a22: f002 02f0 and.w r2, r2, #240 ; 0xf0 + 14aee: f002 02f0 and.w r2, r2, #240 ; 0xf0 tmp |= (color&0x0F); - 14a26: f000 000f and.w r0, r0, #15 - 14a2a: 4310 orrs r0, r2 + 14af2: f000 000f and.w r0, r0, #15 + 14af6: 4310 orrs r0, r2 for(uint16_t i=0;i + 14afa: 44a4 add ip, r4 + 14afc: 2b06 cmp r3, #6 + 14afe: f88c 08de strb.w r0, [ip, #2270] ; 0x8de + 14b02: d1bc bne.n 14a7e bmcStoreDevice <1, 1>& device = store.layers[layer].pixelStrip[0]; pixels.setDimColor(pixels.getPixelStripIndex(0), device.settings[0]); } #endif pixels.reassign(); - 14a38: f643 083c movw r8, #14396 ; 0x383c - 14a3c: 2700 movs r7, #0 - 14a3e: 44a8 add r8, r5 + 14b04: f643 085c movw r8, #14428 ; 0x385c + 14b08: 2700 movs r7, #0 + 14b0a: 44a8 add r8, r5 write(n, 0); - 14a40: b2b9 uxth r1, r7 + 14b0c: b2b9 uxth r1, r7 for(uint8_t i=0; i + 14b10: 2200 movs r2, #0 + 14b12: 4640 mov r0, r8 + 14b14: f7ff fe3e bl 14794 for(uint8_t i=0; i + 14b18: 2f06 cmp r7, #6 + 14b1a: d1f7 bne.n 14b0c value[i] = 0; - 14a50: 2300 movs r3, #0 + 14b1c: 2300 movs r3, #0 globals.rgbPixelStates[0].zeroOut(); // red - 14a52: f8d4 083c ldr.w r0, [r4, #2108] ; 0x83c + 14b1e: f8d4 085c ldr.w r0, [r4, #2140] ; 0x85c currentColor[n] = 0; - 14a56: f643 01b8 movw r1, #14520 ; 0x38b8 + 14b22: f643 01d8 movw r1, #14552 ; 0x38d8 flags &= excluded; - 14a5a: f8b4 28fa ldrh.w r2, [r4, #2298] ; 0x8fa - 14a5e: f8a0 304a strh.w r3, [r0, #74] ; 0x4a - 14a62: f8a0 304e strh.w r3, [r0, #78] ; 0x4e - 14a66: f002 0202 and.w r2, r2, #2 - 14a6a: f8a0 3052 strh.w r3, [r0, #82] ; 0x52 + 14b26: f8b4 291a ldrh.w r2, [r4, #2330] ; 0x91a + 14b2a: f8a0 304a strh.w r3, [r0, #74] ; 0x4a + 14b2e: f8a0 304e strh.w r3, [r0, #78] ; 0x4e + 14b32: f002 0202 and.w r2, r2, #2 + 14b36: f8a0 3052 strh.w r3, [r0, #82] ; 0x52 prevTime = 0; - 14a6e: f8c4 38c8 str.w r3, [r4, #2248] ; 0x8c8 + 14b3a: f8c4 38e8 str.w r3, [r4, #2280] ; 0x8e8 bitSet(flags, bit); - 14a72: f042 0201 orr.w r2, r2, #1 - 14a76: f8c4 38d0 str.w r3, [r4, #2256] ; 0x8d0 - 14a7a: f8c4 38d8 str.w r3, [r4, #2264] ; 0x8d8 - 14a7e: f8c4 38e0 str.w r3, [r4, #2272] ; 0x8e0 - 14a82: f8c4 38e8 str.w r3, [r4, #2280] ; 0x8e8 - 14a86: f8c4 38f0 str.w r3, [r4, #2288] ; 0x8f0 - 14a8a: 506b str r3, [r5, r1] - 14a8c: 4429 add r1, r5 - 14a8e: 808b strh r3, [r1, #4] + 14b3e: f042 0201 orr.w r2, r2, #1 + 14b42: f8c4 38f0 str.w r3, [r4, #2288] ; 0x8f0 + 14b46: f8c4 38f8 str.w r3, [r4, #2296] ; 0x8f8 + 14b4a: f8c4 3900 str.w r3, [r4, #2304] ; 0x900 + 14b4e: f8c4 3908 str.w r3, [r4, #2312] ; 0x908 + 14b52: f8c4 3910 str.w r3, [r4, #2320] ; 0x910 + 14b56: 506b str r3, [r5, r1] + 14b58: 4429 add r1, r5 + 14b5a: 808b strh r3, [r1, #4] memset(rgbPulseReset, 0, sizeof(rgbPulseReset[0])*BMC_MAX_RGB_PIXELS); - 14a90: f8c8 30b8 str.w r3, [r8, #184] ; 0xb8 - 14a94: f8a8 30bc strh.w r3, [r8, #188] ; 0xbc - 14a98: f8d6 17fc ldr.w r1, [r6, #2044] ; 0x7fc - 14a9c: f8a4 28fa strh.w r2, [r4, #2298] ; 0x8fa - 14aa0: 6849 ldr r1, [r1, #4] + 14b5c: f8c8 30b8 str.w r3, [r8, #184] ; 0xb8 + 14b60: f8a8 30bc strh.w r3, [r8, #188] ; 0xbc + 14b64: f8d6 17fc ldr.w r1, [r6, #2044] ; 0x7fc + 14b68: f8a4 291a strh.w r2, [r4, #2330] ; 0x91a + 14b6c: 6849 ldr r1, [r1, #4] pixels.setPwmOffValue(settings.getPwmDimWhenOff()); - 14aa2: f3c1 4180 ubfx r1, r1, #18, #1 + 14b6e: f3c1 4180 ubfx r1, r1, #18, #1 if(value != flags.read(BMC_PIXELS_FLAG_USE_DIM)){ - 14aa6: ebb1 0f52 cmp.w r1, r2, lsr #1 - 14aaa: d027 beq.n 14afc + 14b72: ebb1 0f52 cmp.w r1, r2, lsr #1 + 14b76: d027 beq.n 14bc8 bitWrite(flags, bit, value); - 14aac: 4299 cmp r1, r3 - 14aae: 461e mov r6, r3 - 14ab0: bf0c ite eq - 14ab2: 2301 moveq r3, #1 - 14ab4: 2303 movne r3, #3 - 14ab6: f8a4 38fa strh.w r3, [r4, #2298] ; 0x8fa + 14b78: 4299 cmp r1, r3 + 14b7a: 461e mov r6, r3 + 14b7c: bf0c ite eq + 14b7e: 2301 moveq r3, #1 + 14b80: 2303 movne r3, #3 + 14b82: f8a4 391a strh.w r3, [r4, #2330] ; 0x91a for(uint8_t i=0;i + 14b86: f643 04d7 movw r4, #14551 ; 0x38d7 + 14b8a: 442c add r4, r5 + 14b8c: e00a b.n 14ba4 write(n, (t_color==0 ? 255 : t_color)); - 14ac2: 4295 cmp r5, r2 + 14b8e: 4295 cmp r5, r2 for(uint8_t i=0;i + 14b96: bf14 ite ne + 14b98: 462a movne r2, r5 + 14b9a: 22ff moveq r2, #255 ; 0xff + 14b9c: f7ff fdfa bl 14794 for(uint8_t i=0;i + 14ba0: 2e06 cmp r6, #6 + 14ba2: d011 beq.n 14bc8 if(bitRead(currentColor[i], 7)){ - 14ad8: f814 3f01 ldrb.w r3, [r4, #1]! + 14ba4: f814 3f01 ldrb.w r3, [r4, #1]! write(n, (t_color==0 ? 255 : t_color)); - 14adc: b2b1 uxth r1, r6 - 14ade: 4640 mov r0, r8 + 14ba8: b2b1 uxth r1, r6 + 14baa: 4640 mov r0, r8 write(n, 0); - 14ae0: 2200 movs r2, #0 + 14bac: 2200 movs r2, #0 bitWrite(currentColor[i], 7, 0); - 14ae2: f003 057f and.w r5, r3, #127 ; 0x7f + 14bae: f003 057f and.w r5, r3, #127 ; 0x7f bitWrite(currentColor[i], 7, 1); - 14ae6: f063 077f orn r7, r3, #127 ; 0x7f + 14bb2: f063 077f orn r7, r3, #127 ; 0x7f if(bitRead(currentColor[i], 7)){ - 14aea: 061b lsls r3, r3, #24 - 14aec: d4e9 bmi.n 14ac2 + 14bb6: 061b lsls r3, r3, #24 + 14bb8: d4e9 bmi.n 14b8e write(n, 0); - 14aee: b2b1 uxth r1, r6 + 14bba: b2b1 uxth r1, r6 for(uint8_t i=0;i + 14bc0: f7ff fde8 bl 14794 for(uint8_t i=0;i + 14bc4: 2e06 cmp r6, #6 + 14bc6: d1ed bne.n 14ba4 } - 14afc: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 14bc8: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} color = getDefaultColor(n); - 14b00: 4608 mov r0, r1 - 14b02: f7ff fc99 bl 14438 + 14bcc: 4608 mov r0, r1 + 14bce: f7ff fc99 bl 14504 uint16_t offset = (uint16_t) ((n>0) ? (n/2) : 0); - 14b06: 2b00 cmp r3, #0 - 14b08: d088 beq.n 14a1c + 14bd2: 2b00 cmp r3, #0 + 14bd4: d088 beq.n 14ae8 uint8_t tmp = dimColors[offset]; - 14b0a: eb04 0251 add.w r2, r4, r1, lsr #1 - 14b0e: ea4f 0c51 mov.w ip, r1, lsr #1 + 14bd6: eb04 0251 add.w r2, r4, r1, lsr #1 + 14bda: ea4f 0c51 mov.w ip, r1, lsr #1 if(BMC_IS_EVEN(n)){ - 14b12: 07c9 lsls r1, r1, #31 + 14bde: 07c9 lsls r1, r1, #31 uint8_t tmp = dimColors[offset]; - 14b14: f892 28be ldrb.w r2, [r2, #2238] ; 0x8be + 14be0: f892 28de ldrb.w r2, [r2, #2270] ; 0x8de if(BMC_IS_EVEN(n)){ - 14b18: d583 bpl.n 14a22 + 14be4: d583 bpl.n 14aee tmp &= 0x0F; - 14b1a: f002 020f and.w r2, r2, #15 + 14be6: f002 020f and.w r2, r2, #15 tmp |= (color<<4); - 14b1e: ea42 1000 orr.w r0, r2, r0, lsl #4 - 14b22: b2c0 uxtb r0, r0 - 14b24: e782 b.n 14a2c + 14bea: ea42 1000 orr.w r0, r2, r0, lsl #4 + 14bee: b2c0 uxtb r0, r0 + 14bf0: e782 b.n 14af8 bmcStoreEvent b = globals.getDeviceEventType(device.events[2]); - 14b26: f812 e00a ldrb.w lr, [r2, sl] + 14bf2: f812 e00a ldrb.w lr, [r2, sl] return store.global.events[n-1]; - 14b2a: f8d6 2800 ldr.w r2, [r6, #2048] ; 0x800 + 14bf6: f8d6 2800 ldr.w r2, [r6, #2048] ; 0x800 if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 14b2e: f10e 3bff add.w fp, lr, #4294967295 ; 0xffffffff + 14bfa: f10e 3bff add.w fp, lr, #4294967295 ; 0xffffffff return store.global.events[n-1]; - 14b32: eb02 0ccc add.w ip, r2, ip, lsl #3 + 14bfe: eb02 0ccc add.w ip, r2, ip, lsl #3 if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 14b36: f1bb 0fc7 cmp.w fp, #199 ; 0xc7 + 14c02: f1bb 0fc7 cmp.w fp, #199 ; 0xc7 return store.global.events[n-1]; - 14b3a: f89c c032 ldrb.w ip, [ip, #50] ; 0x32 + 14c06: f89c c032 ldrb.w ip, [ip, #50] ; 0x32 if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 14b3e: d811 bhi.n 14b64 + 14c0a: d811 bhi.n 14c30 return store.global.events[n-1]; - 14b40: eb02 02ce add.w r2, r2, lr, lsl #3 - 14b44: f892 2032 ldrb.w r2, [r2, #50] ; 0x32 + 14c0c: eb02 02ce add.w r2, r2, lr, lsl #3 + 14c10: f892 2032 ldrb.w r2, [r2, #50] ; 0x32 bitWrite(color, 0, (r.type > 0)); - 14b48: b1f8 cbz r0, 14b8a + 14c14: b1f8 cbz r0, 14c56 bitWrite(color, 1, (g.type > 0)); - 14b4a: f1bc 0f00 cmp.w ip, #0 - 14b4e: d017 beq.n 14b80 - 14b50: 2003 movs r0, #3 + 14c16: f1bc 0f00 cmp.w ip, #0 + 14c1a: d017 beq.n 14c4c + 14c1c: 2003 movs r0, #3 bitWrite(color, 2, (b.type > 0)); - 14b52: 2a00 cmp r2, #0 - 14b54: f43f af60 beq.w 14a18 - 14b58: f040 0004 orr.w r0, r0, #4 - 14b5c: b2c0 uxtb r0, r0 - 14b5e: e75b b.n 14a18 + 14c1e: 2a00 cmp r2, #0 + 14c20: f43f af60 beq.w 14ae4 + 14c24: f040 0004 orr.w r0, r0, #4 + 14c28: b2c0 uxtb r0, r0 + 14c2a: e75b b.n 14ae4 return e; - 14b60: 2000 movs r0, #0 - 14b62: e741 b.n 149e8 + 14c2c: 2000 movs r0, #0 + 14c2e: e741 b.n 14ab4 bitWrite(color, 0, (r.type > 0)); - 14b64: b1d0 cbz r0, 14b9c - 14b66: f1bc 0f00 cmp.w ip, #0 - 14b6a: bf14 ite ne - 14b6c: 2003 movne r0, #3 - 14b6e: 2001 moveq r0, #1 - 14b70: e752 b.n 14a18 + 14c30: b1d0 cbz r0, 14c68 + 14c32: f1bc 0f00 cmp.w ip, #0 + 14c36: bf14 ite ne + 14c38: 2003 movne r0, #3 + 14c3a: 2001 moveq r0, #1 + 14c3c: e752 b.n 14ae4 return store.global.events[n-1]; - 14b72: f8d6 2800 ldr.w r2, [r6, #2048] ; 0x800 - 14b76: eb02 02cc add.w r2, r2, ip, lsl #3 - 14b7a: f892 2032 ldrb.w r2, [r2, #50] ; 0x32 - 14b7e: b148 cbz r0, 14b94 - 14b80: 2a00 cmp r2, #0 - 14b82: bf14 ite ne - 14b84: 2005 movne r0, #5 - 14b86: 2001 moveq r0, #1 - 14b88: e746 b.n 14a18 + 14c3e: f8d6 2800 ldr.w r2, [r6, #2048] ; 0x800 + 14c42: eb02 02cc add.w r2, r2, ip, lsl #3 + 14c46: f892 2032 ldrb.w r2, [r2, #50] ; 0x32 + 14c4a: b148 cbz r0, 14c60 + 14c4c: 2a00 cmp r2, #0 + 14c4e: bf14 ite ne + 14c50: 2005 movne r0, #5 + 14c52: 2001 moveq r0, #1 + 14c54: e746 b.n 14ae4 bitWrite(color, 1, (g.type > 0)); - 14b8a: f1bc 0f00 cmp.w ip, #0 - 14b8e: d001 beq.n 14b94 - 14b90: 2002 movs r0, #2 - 14b92: e7de b.n 14b52 + 14c56: f1bc 0f00 cmp.w ip, #0 + 14c5a: d001 beq.n 14c60 + 14c5c: 2002 movs r0, #2 + 14c5e: e7de b.n 14c1e bitWrite(color, 2, (b.type > 0)); - 14b94: 2a00 cmp r2, #0 - 14b96: d0b3 beq.n 14b00 - 14b98: 2004 movs r0, #4 - 14b9a: e73d b.n 14a18 + 14c60: 2a00 cmp r2, #0 + 14c62: d0b3 beq.n 14bcc + 14c64: 2004 movs r0, #4 + 14c66: e73d b.n 14ae4 bitWrite(color, 1, (g.type > 0)); - 14b9c: f1bc 0f00 cmp.w ip, #0 - 14ba0: d0ae beq.n 14b00 - 14ba2: 2002 movs r0, #2 + 14c68: f1bc 0f00 cmp.w ip, #0 + 14c6c: d0ae beq.n 14bcc + 14c6e: 2002 movs r0, #2 bitWrite(color, 2, (b.type > 0)); - 14ba4: e738 b.n 14a18 - 14ba6: bf00 nop + 14c70: e738 b.n 14ae4 + 14c72: bf00 nop -00014ba8 : +00014c74 : void BMC::readPixels(){ - 14ba8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 14bac: f500 5380 add.w r3, r0, #4096 ; 0x1000 - 14bb0: b087 sub sp, #28 + 14c74: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 14c78: f500 5380 add.w r3, r0, #4096 ; 0x1000 + 14c7c: b087 sub sp, #28 device.events[e], 0, e ); if(state<=1){ pixels.setStateRgb(i, e, state); - 14bb2: f643 0a3c movw sl, #14396 ; 0x383c - 14bb6: f643 08b8 movw r8, #14520 ; 0x38b8 - 14bba: 9304 str r3, [sp, #16] - 14bbc: f643 03c4 movw r3, #14532 ; 0x38c4 - 14bc0: 2600 movs r6, #0 + 14c7e: f643 0a5c movw sl, #14428 ; 0x385c + 14c82: f643 08d8 movw r8, #14552 ; 0x38d8 + 14c86: 9304 str r3, [sp, #16] + 14c88: f643 03e4 movw r3, #14564 ; 0x38e4 + 14c8c: 2600 movs r6, #0 void BMC::readPixels(){ - 14bc2: 4607 mov r7, r0 - 14bc4: 18c3 adds r3, r0, r3 + 14c8e: 4607 mov r7, r0 + 14c90: 18c3 adds r3, r0, r3 pixels.setStateRgb(i, e, state); - 14bc6: 4482 add sl, r0 - 14bc8: 4480 add r8, r0 - 14bca: 9305 str r3, [sp, #20] + 14c92: 4482 add sl, r0 + 14c94: 4480 add r8, r0 + 14c96: 9305 str r3, [sp, #20] bmcStoreDevice <1, 3>& device = store.layers[layer].rgbPixels[i]; - 14bcc: 9b04 ldr r3, [sp, #16] - 14bce: f241 51b6 movw r1, #5558 ; 0x15b6 - 14bd2: eb06 0286 add.w r2, r6, r6, lsl #2 + 14c98: 9b04 ldr r3, [sp, #16] + 14c9a: f241 51b6 movw r1, #5558 ; 0x15b6 + 14c9e: eb06 0286 add.w r2, r6, r6, lsl #2 prevTime = (unsigned long) _BMCTiming::get(); - 14bd6: f643 09c8 movw r9, #14536 ; 0x38c8 - 14bda: f8d3 086c ldr.w r0, [r3, #2156] ; 0x86c - 14bde: 2385 movs r3, #133 ; 0x85 - 14be0: fa1f fb86 uxth.w fp, r6 - 14be4: 2400 movs r4, #0 - 14be6: 7805 ldrb r5, [r0, #0] - 14be8: 44b9 add r9, r7 - 14bea: fb13 1505 smlabb r5, r3, r5, r1 - 14bee: 4415 add r5, r2 - 14bf0: 443d add r5, r7 + 14ca2: f643 09e8 movw r9, #14568 ; 0x38e8 + 14ca6: f8d3 086c ldr.w r0, [r3, #2156] ; 0x86c + 14caa: 2385 movs r3, #133 ; 0x85 + 14cac: fa1f fb86 uxth.w fp, r6 + 14cb0: 2400 movs r4, #0 + 14cb2: 7805 ldrb r5, [r0, #0] + 14cb4: 44b9 add r9, r7 + 14cb6: fb13 1505 smlabb r5, r3, r5, r1 + 14cba: 4415 add r5, r2 + 14cbc: 443d add r5, r7 uint8_t state = processEvent(BMC_DEVICE_GROUP_LED, - 14bf2: b2e3 uxtb r3, r4 - 14bf4: 220e movs r2, #14 - 14bf6: 2102 movs r1, #2 - 14bf8: 4638 mov r0, r7 - 14bfa: 9302 str r3, [sp, #8] - 14bfc: 2300 movs r3, #0 - 14bfe: 9301 str r3, [sp, #4] - 14c00: f815 3f01 ldrb.w r3, [r5, #1]! - 14c04: 9300 str r3, [sp, #0] - 14c06: 465b mov r3, fp - 14c08: f7f6 fe38 bl b87c + 14cbe: b2e3 uxtb r3, r4 + 14cc0: 220e movs r2, #14 + 14cc2: 2102 movs r1, #2 + 14cc4: 4638 mov r0, r7 + 14cc6: 9302 str r3, [sp, #8] + 14cc8: 2300 movs r3, #0 + 14cca: 9301 str r3, [sp, #4] + 14ccc: f815 3f01 ldrb.w r3, [r5, #1]! + 14cd0: 9300 str r3, [sp, #0] + 14cd2: 465b mov r3, fp + 14cd4: f7f6 fe36 bl b944 if(state<=1){ - 14c0c: 2801 cmp r0, #1 - 14c0e: d96a bls.n 14ce6 + 14cd8: 2801 cmp r0, #1 + 14cda: d96a bls.n 14db2 } else if(state==2){ - 14c10: 2802 cmp r0, #2 - 14c12: d073 beq.n 14cfc + 14cdc: 2802 cmp r0, #2 + 14cde: d073 beq.n 14dc8 pixels.pulseRgb(i, e); } else if(state==3){ - 14c14: 2803 cmp r0, #3 - 14c16: f000 808b beq.w 14d30 + 14ce0: 2803 cmp r0, #3 + 14ce2: f000 808b beq.w 14dfc pixels.setStateRgb(i, e, true); } else if(state!=255){ - 14c1a: 28ff cmp r0, #255 ; 0xff - 14c1c: d00e beq.n 14c3c + 14ce6: 28ff cmp r0, #255 ; 0xff + 14ce8: d00e beq.n 14d08 uint8_t cColor = currentColor[n] & 0x07; - 14c1e: f898 2000 ldrb.w r2, [r8] + 14cea: f898 2000 ldrb.w r2, [r8] bitWrite(cColor, color, t_state); - 14c22: 2301 movs r3, #1 - 14c24: 0741 lsls r1, r0, #29 + 14cee: 2301 movs r3, #1 + 14cf0: 0741 lsls r1, r0, #29 uint8_t cColor = currentColor[n] & 0x07; - 14c26: f002 0207 and.w r2, r2, #7 + 14cf2: f002 0207 and.w r2, r2, #7 bitWrite(cColor, color, t_state); - 14c2a: fa03 f304 lsl.w r3, r3, r4 - 14c2e: d562 bpl.n 14cf6 - 14c30: 431a orrs r2, r3 - 14c32: b2d2 uxtb r2, r2 + 14cf6: fa03 f304 lsl.w r3, r3, r4 + 14cfa: d562 bpl.n 14dc2 + 14cfc: 431a orrs r2, r3 + 14cfe: b2d2 uxtb r2, r2 write(n, cColor); - 14c34: 4659 mov r1, fp - 14c36: 4650 mov r0, sl - 14c38: f7ff fd46 bl 146c8 + 14d00: 4659 mov r1, fp + 14d02: 4650 mov r0, sl + 14d04: f7ff fd46 bl 14794 for(uint8_t e = 0; e < 3; e++){ - 14c3c: 3401 adds r4, #1 - 14c3e: 2c03 cmp r4, #3 - 14c40: d1d7 bne.n 14bf2 + 14d08: 3401 adds r4, #1 + 14d0a: 2c03 cmp r4, #3 + 14d0c: d1d7 bne.n 14cbe for(uint16_t i = 0; i < BMC_MAX_RGB_PIXELS; i++){ - 14c42: 3601 adds r6, #1 - 14c44: f108 0801 add.w r8, r8, #1 - 14c48: 2e06 cmp r6, #6 - 14c4a: d1bf bne.n 14bcc - 14c4c: f643 06f4 movw r6, #14580 ; 0x38f4 - 14c50: 2500 movs r5, #0 - 14c52: 9c05 ldr r4, [sp, #20] - 14c54: 443e add r6, r7 - 14c56: f8df 8138 ldr.w r8, [pc, #312] ; 14d90 + 14d0e: 3601 adds r6, #1 + 14d10: f108 0801 add.w r8, r8, #1 + 14d14: 2e06 cmp r6, #6 + 14d16: d1bf bne.n 14c98 + 14d18: f643 1614 movw r6, #14612 ; 0x3914 + 14d1c: 2500 movs r5, #0 + 14d1e: 9c05 ldr r4, [sp, #20] + 14d20: 443e add r6, r7 + 14d22: f8df 8138 ldr.w r8, [pc, #312] ; 14e5c prevTime = 0; - 14c5a: 46a9 mov r9, r5 + 14d26: 46a9 mov r9, r5 return (prevTime>0); - 14c5c: 6863 ldr r3, [r4, #4] + 14d28: 6863 ldr r3, [r4, #4] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 14c5e: b19b cbz r3, 14c88 - 14c60: f8d8 2000 ldr.w r2, [r8] - 14c64: 8821 ldrh r1, [r4, #0] - 14c66: 1ad3 subs r3, r2, r3 - 14c68: 428b cmp r3, r1 - 14c6a: d30d bcc.n 14c88 + 14d2a: b19b cbz r3, 14d54 + 14d2c: f8d8 2000 ldr.w r2, [r8] + 14d30: 8821 ldrh r1, [r4, #0] + 14d32: 1ad3 subs r3, r2, r3 + 14d34: 428b cmp r3, r1 + 14d36: d30d bcc.n 14d54 prevTime = 0; - 14c6c: f8c4 9004 str.w r9, [r4, #4] + 14d38: f8c4 9004 str.w r9, [r4, #4] write(n, ( (currentColor[n] & 7) ^ rgbPulseReset[i] )); - 14c70: b2a9 uxth r1, r5 - 14c72: f816 3c3c ldrb.w r3, [r6, #-60] - 14c76: 4650 mov r0, sl - 14c78: 7832 ldrb r2, [r6, #0] - 14c7a: f003 0307 and.w r3, r3, #7 - 14c7e: 405a eors r2, r3 - 14c80: f7ff fd22 bl 146c8 + 14d3c: b2a9 uxth r1, r5 + 14d3e: f816 3c3c ldrb.w r3, [r6, #-60] + 14d42: 4650 mov r0, sl + 14d44: 7832 ldrb r2, [r6, #0] + 14d46: f003 0307 and.w r3, r3, #7 + 14d4a: 405a eors r2, r3 + 14d4c: f7ff fd22 bl 14794 rgbPulseReset[i] = 0; - 14c84: f886 9000 strb.w r9, [r6] + 14d50: f886 9000 strb.w r9, [r6] for(uint8_t i = 0, n = getRgbPixelIndex(0); i < BMC_MAX_RGB_PIXELS; i++, n++){ - 14c88: 3501 adds r5, #1 - 14c8a: 3408 adds r4, #8 - 14c8c: 3601 adds r6, #1 - 14c8e: 2d06 cmp r5, #6 - 14c90: d1e4 bne.n 14c5c + 14d54: 3501 adds r5, #1 + 14d56: 3408 adds r4, #8 + 14d58: 3601 adds r6, #1 + 14d5a: 2d06 cmp r5, #6 + 14d5c: d1e4 bne.n 14d28 if(bitRead(flags, bit)){ - 14c92: f507 5440 add.w r4, r7, #12288 ; 0x3000 - 14c96: f8b4 38fa ldrh.w r3, [r4, #2298] ; 0x8fa - 14c9a: 07da lsls r2, r3, #31 - 14c9c: d50d bpl.n 14cba + 14d5e: f507 5440 add.w r4, r7, #12288 ; 0x3000 + 14d62: f8b4 391a ldrh.w r3, [r4, #2330] ; 0x91a + 14d66: 07da lsls r2, r3, #31 + 14d68: d50d bpl.n 14d86 bitClear(flags, bit); - 14c9e: f023 0301 bic.w r3, r3, #1 + 14d6a: f023 0301 bic.w r3, r3, #1 pixels.show(); - 14ca2: f10a 0060 add.w r0, sl, #96 ; 0x60 - 14ca6: f8a4 38fa strh.w r3, [r4, #2298] ; 0x8fa - 14caa: f014 f96d bl 28f88 + 14d6e: f10a 0060 add.w r0, sl, #96 ; 0x60 + 14d72: f8a4 391a strh.w r3, [r4, #2330] ; 0x91a + 14d76: f014 f97d bl 29074 bitClear(flags, bit); - 14cae: f8b4 38fa ldrh.w r3, [r4, #2298] ; 0x8fa - 14cb2: f023 030c bic.w r3, r3, #12 - 14cb6: f8a4 38fa strh.w r3, [r4, #2298] ; 0x8fa + 14d7a: f8b4 391a ldrh.w r3, [r4, #2330] ; 0x91a + 14d7e: f023 030c bic.w r3, r3, #12 + 14d82: f8a4 391a strh.w r3, [r4, #2330] ; 0x91a if(updated){ - 14cba: 9a04 ldr r2, [sp, #16] - 14cbc: f892 384c ldrb.w r3, [r2, #2124] ; 0x84c - 14cc0: 2b00 cmp r3, #0 - 14cc2: d153 bne.n 14d6c - 14cc4: f892 3850 ldrb.w r3, [r2, #2128] ; 0x850 - 14cc8: 2b00 cmp r3, #0 - 14cca: d13e bne.n 14d4a - 14ccc: f892 3854 ldrb.w r3, [r2, #2132] ; 0x854 - 14cd0: 2b00 cmp r3, #0 - 14cd2: d157 bne.n 14d84 + 14d86: 9a04 ldr r2, [sp, #16] + 14d88: f892 384c ldrb.w r3, [r2, #2124] ; 0x84c + 14d8c: 2b00 cmp r3, #0 + 14d8e: d153 bne.n 14e38 + 14d90: f892 3850 ldrb.w r3, [r2, #2128] ; 0x850 + 14d94: 2b00 cmp r3, #0 + 14d96: d13e bne.n 14e16 + 14d98: f892 3854 ldrb.w r3, [r2, #2132] ; 0x854 + 14d9c: 2b00 cmp r3, #0 + 14d9e: d157 bne.n 14e50 return bitRead(flags, bit); - 14cd4: f507 5300 add.w r3, r7, #8192 ; 0x2000 - 14cd8: f8d3 3ccc ldr.w r3, [r3, #3276] ; 0xccc + 14da0: f507 5300 add.w r3, r7, #8192 ; 0x2000 + 14da4: f8d3 3cec ldr.w r3, [r3, #3308] ; 0xcec //pixels.update(); { bool r = globals.rgbPixelStates[0].hasChanged(); bool g = globals.rgbPixelStates[1].hasChanged(); bool b = globals.rgbPixelStates[2].hasChanged(); if(r || g || b || editor.isTriggerStates()){ - 14cdc: 035b lsls r3, r3, #13 - 14cde: d43b bmi.n 14d58 + 14da8: 035b lsls r3, r3, #13 + 14daa: d43b bmi.n 14e24 #if BMC_MAX_PIXEL_STRIP > 0 if(globals.pixelStripStates.hasChanged() || editor.isTriggerStates()){ editor.utilitySendStateBits(BMC_DEVICE_ID_PIXEL_STRIP); } #endif } - 14ce0: b007 add sp, #28 - 14ce2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 14dac: b007 add sp, #28 + 14dae: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} uint8_t cColor = currentColor[n] & 0x07; - 14ce6: f898 2000 ldrb.w r2, [r8] + 14db2: f898 2000 ldrb.w r2, [r8] bitWrite(cColor, color, t_state); - 14cea: 2301 movs r3, #1 + 14db6: 2301 movs r3, #1 uint8_t cColor = currentColor[n] & 0x07; - 14cec: f002 0207 and.w r2, r2, #7 + 14db8: f002 0207 and.w r2, r2, #7 bitWrite(cColor, color, t_state); - 14cf0: 40a3 lsls r3, r4 - 14cf2: 2800 cmp r0, #0 - 14cf4: d19c bne.n 14c30 - 14cf6: ea22 0203 bic.w r2, r2, r3 - 14cfa: e79b b.n 14c34 + 14dbc: 40a3 lsls r3, r4 + 14dbe: 2800 cmp r0, #0 + 14dc0: d19c bne.n 14cfc + 14dc2: ea22 0203 bic.w r2, r2, r3 + 14dc6: e79b b.n 14d00 bitWrite(rgbPulseReset[t_index], t_color, 1); - 14cfc: 2201 movs r2, #1 - 14cfe: f898 303c ldrb.w r3, [r8, #60] ; 0x3c + 14dc8: 2201 movs r2, #1 + 14dca: f898 303c ldrb.w r3, [r8, #60] ; 0x3c write(t_index, t_color); - 14d02: 4659 mov r1, fp - 14d04: 4650 mov r0, sl + 14dce: 4659 mov r1, fp + 14dd0: 4650 mov r0, sl bitWrite(rgbPulseReset[t_index], t_color, 1); - 14d06: 40a2 lsls r2, r4 - 14d08: b2d2 uxtb r2, r2 - 14d0a: 4313 orrs r3, r2 - 14d0c: f888 303c strb.w r3, [r8, #60] ; 0x3c + 14dd2: 40a2 lsls r2, r4 + 14dd4: b2d2 uxtb r2, r2 + 14dd6: 4313 orrs r3, r2 + 14dd8: f888 303c strb.w r3, [r8, #60] ; 0x3c t_color = bitWrite(currentColor[t_index],t_color,1); - 14d10: f898 3000 ldrb.w r3, [r8] - 14d14: 431a orrs r2, r3 - 14d16: f888 2000 strb.w r2, [r8] + 14ddc: f898 3000 ldrb.w r3, [r8] + 14de0: 431a orrs r2, r3 + 14de2: f888 2000 strb.w r2, [r8] write(t_index, t_color); - 14d1a: f7ff fcd5 bl 146c8 + 14de6: f7ff fcd5 bl 14794 interval = value; - 14d1e: 2396 movs r3, #150 ; 0x96 - 14d20: 9a05 ldr r2, [sp, #20] - 14d22: f822 3036 strh.w r3, [r2, r6, lsl #3] - 14d26: 4b1a ldr r3, [pc, #104] ; (14d90 ) - 14d28: 681b ldr r3, [r3, #0] + 14dea: 2396 movs r3, #150 ; 0x96 + 14dec: 9a05 ldr r2, [sp, #20] + 14dee: f822 3036 strh.w r3, [r2, r6, lsl #3] + 14df2: 4b1a ldr r3, [pc, #104] ; (14e5c ) + 14df4: 681b ldr r3, [r3, #0] prevTime = (unsigned long) _BMCTiming::get(); - 14d2a: f849 3036 str.w r3, [r9, r6, lsl #3] + 14df6: f849 3036 str.w r3, [r9, r6, lsl #3] } - 14d2e: e785 b.n 14c3c + 14dfa: e785 b.n 14d08 uint8_t cColor = currentColor[n] & 0x07; - 14d30: f898 2000 ldrb.w r2, [r8] + 14dfc: f898 2000 ldrb.w r2, [r8] bitWrite(cColor, color, t_state); - 14d34: 2301 movs r3, #1 + 14e00: 2301 movs r3, #1 write(n, cColor); - 14d36: 4659 mov r1, fp - 14d38: 4650 mov r0, sl + 14e02: 4659 mov r1, fp + 14e04: 4650 mov r0, sl bitWrite(cColor, color, t_state); - 14d3a: 40a3 lsls r3, r4 + 14e06: 40a3 lsls r3, r4 uint8_t cColor = currentColor[n] & 0x07; - 14d3c: f002 0207 and.w r2, r2, #7 + 14e08: f002 0207 and.w r2, r2, #7 bitWrite(cColor, color, t_state); - 14d40: 431a orrs r2, r3 + 14e0c: 431a orrs r2, r3 write(n, cColor); - 14d42: b2d2 uxtb r2, r2 - 14d44: f7ff fcc0 bl 146c8 + 14e0e: b2d2 uxtb r2, r2 + 14e10: f7ff fcc0 bl 14794 } - 14d48: e778 b.n 14c3c - 14d4a: 9904 ldr r1, [sp, #16] + 14e14: e778 b.n 14d08 + 14e16: 9904 ldr r1, [sp, #16] updated = false; - 14d4c: 2200 movs r2, #0 + 14e18: 2200 movs r2, #0 if(updated){ - 14d4e: f891 3854 ldrb.w r3, [r1, #2132] ; 0x854 + 14e1a: f891 3854 ldrb.w r3, [r1, #2132] ; 0x854 updated = false; - 14d52: f881 2850 strb.w r2, [r1, #2128] ; 0x850 + 14e1e: f881 2850 strb.w r2, [r1, #2128] ; 0x850 if(updated){ - 14d56: b9ab cbnz r3, 14d84 + 14e22: b9ab cbnz r3, 14e50 editor.utilitySendStateBits(BMC_DEVICE_ID_RGB_PIXEL); - 14d58: f642 409c movw r0, #11420 ; 0x2c9c - 14d5c: 2201 movs r2, #1 - 14d5e: 210e movs r1, #14 - 14d60: 4438 add r0, r7 + 14e24: f642 40bc movw r0, #11452 ; 0x2cbc + 14e28: 2201 movs r2, #1 + 14e2a: 210e movs r1, #14 + 14e2c: 4438 add r0, r7 } - 14d62: b007 add sp, #28 - 14d64: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 14e2e: b007 add sp, #28 + 14e30: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} editor.utilitySendStateBits(BMC_DEVICE_ID_RGB_PIXEL); - 14d68: f00d bce4 b.w 22734 - 14d6c: 9904 ldr r1, [sp, #16] + 14e34: f00d bcee b.w 22814 + 14e38: 9904 ldr r1, [sp, #16] updated = false; - 14d6e: 2200 movs r2, #0 + 14e3a: 2200 movs r2, #0 if(updated){ - 14d70: f891 3850 ldrb.w r3, [r1, #2128] ; 0x850 + 14e3c: f891 3850 ldrb.w r3, [r1, #2128] ; 0x850 updated = false; - 14d74: f881 284c strb.w r2, [r1, #2124] ; 0x84c + 14e40: f881 284c strb.w r2, [r1, #2124] ; 0x84c if(updated){ - 14d78: 2b00 cmp r3, #0 - 14d7a: d1e6 bne.n 14d4a - 14d7c: f891 3854 ldrb.w r3, [r1, #2132] ; 0x854 - 14d80: 2b00 cmp r3, #0 - 14d82: d0e9 beq.n 14d58 + 14e44: 2b00 cmp r3, #0 + 14e46: d1e6 bne.n 14e16 + 14e48: f891 3854 ldrb.w r3, [r1, #2132] ; 0x854 + 14e4c: 2b00 cmp r3, #0 + 14e4e: d0e9 beq.n 14e24 updated = false; - 14d84: 2300 movs r3, #0 - 14d86: 9a04 ldr r2, [sp, #16] - 14d88: f882 3854 strb.w r3, [r2, #2132] ; 0x854 + 14e50: 2300 movs r3, #0 + 14e52: 9a04 ldr r2, [sp, #16] + 14e54: f882 3854 strb.w r3, [r2, #2132] ; 0x854 if(r || g || b || editor.isTriggerStates()){ - 14d8c: e7e4 b.n 14d58 - 14d8e: bf00 nop - 14d90: 2000bae8 .word 0x2000bae8 + 14e58: e7e4 b.n 14e24 + 14e5a: bf00 nop + 14e5c: 2000bb08 .word 0x2000bb08 -00014d94 : +00014e60 : if(bitRead(flags, bit)){ - 14d94: f500 5380 add.w r3, r0, #4096 ; 0x1000 - 14d98: f893 2964 ldrb.w r2, [r3, #2404] ; 0x964 - 14d9c: 0791 lsls r1, r2, #30 - 14d9e: f3c2 0040 ubfx r0, r2, #1, #1 - 14da2: d504 bpl.n 14dae + 14e60: f500 5380 add.w r3, r0, #4096 ; 0x1000 + 14e64: f893 2968 ldrb.w r2, [r3, #2408] ; 0x968 + 14e68: 0791 lsls r1, r2, #30 + 14e6a: f3c2 0040 ubfx r0, r2, #1, #1 + 14e6e: d504 bpl.n 14e7a bitClear(flags, bit); - 14da4: f022 0202 bic.w r2, r2, #2 + 14e70: f022 0202 bic.w r2, r2, #2 return true; - 14da8: 2001 movs r0, #1 + 14e74: 2001 movs r0, #1 bitClear(flags, bit); - 14daa: f883 2964 strb.w r2, [r3, #2404] ; 0x964 + 14e76: f883 2968 strb.w r2, [r3, #2408] ; 0x968 editor.triggerStates(); } }; bool BMC::layerChanged(){ return flags.toggleIfTrue(BMC_FLAGS_LAYER_CHANGED); } - 14dae: 4770 bx lr + 14e7a: 4770 bx lr -00014db0 : +00014e7c : void BMC::getLayerName(char * str){ getLayerName(layer, str); } void BMC::getLayerName(uint8_t n, char * str){ bmcStoreName t = globals.getDeviceName(store.layers[n].events[0].name); - 14db0: eb01 1341 add.w r3, r1, r1, lsl #5 + 14e7c: eb01 1341 add.w r3, r1, r1, lsl #5 void BMC::getLayerName(uint8_t n, char * str){ - 14db4: 468c mov ip, r1 + 14e80: 468c mov ip, r1 bmcStoreName t = globals.getDeviceName(store.layers[n].events[0].name); - 14db6: eb01 0383 add.w r3, r1, r3, lsl #2 - 14dba: 4403 add r3, r0 - 14dbc: f503 53ab add.w r3, r3, #5472 ; 0x1560 + 14e82: eb01 0383 add.w r3, r1, r3, lsl #2 + 14e86: 4403 add r3, r0 + 14e88: f503 53ab add.w r3, r3, #5472 ; 0x1560 void BMC::getLayerName(uint8_t n, char * str){ - 14dc0: b5f0 push {r4, r5, r6, r7, lr} + 14e8c: b5f0 push {r4, r5, r6, r7, lr} bmcStoreName t = globals.getDeviceName(store.layers[n].events[0].name); - 14dc2: 781b ldrb r3, [r3, #0] + 14e8e: 781b ldrb r3, [r3, #0] bmcStoreName t; - 14dc4: 2400 movs r4, #0 + 14e90: 2400 movs r4, #0 void BMC::getLayerName(uint8_t n, char * str){ - 14dc6: b08b sub sp, #44 ; 0x2c - 14dc8: 4686 mov lr, r0 + 14e92: b08b sub sp, #44 ; 0x2c + 14e94: 4686 mov lr, r0 if(n > 0 && n <= BMC_MAX_NAMES_LIBRARY){ - 14dca: 3b01 subs r3, #1 + 14e96: 3b01 subs r3, #1 bmcStoreName t; - 14dcc: 9405 str r4, [sp, #20] - 14dce: 9408 str r4, [sp, #32] - 14dd0: f88d 4024 strb.w r4, [sp, #36] ; 0x24 - 14dd4: e9cd 4406 strd r4, r4, [sp, #24] - 14dd8: 4614 mov r4, r2 + 14e98: 9405 str r4, [sp, #20] + 14e9a: 9408 str r4, [sp, #32] + 14e9c: f88d 4024 strb.w r4, [sp, #36] ; 0x24 + 14ea0: e9cd 4406 strd r4, r4, [sp, #24] + 14ea4: 4614 mov r4, r2 if(n > 0 && n <= BMC_MAX_NAMES_LIBRARY){ - 14dda: b29a uxth r2, r3 - 14ddc: 2a7f cmp r2, #127 ; 0x7f - 14dde: d823 bhi.n 14e28 + 14ea6: b29a uxth r2, r3 + 14ea8: 2a7f cmp r2, #127 ; 0x7f + 14eaa: d823 bhi.n 14ef4 return store.global.names[n-1]; - 14de0: f500 5280 add.w r2, r0, #4096 ; 0x1000 - 14de4: eb03 1303 add.w r3, r3, r3, lsl #4 - 14de8: 466f mov r7, sp - 14dea: f8d2 6800 ldr.w r6, [r2, #2048] ; 0x800 - 14dee: 463d mov r5, r7 - 14df0: 441e add r6, r3 - 14df2: f8d6 3684 ldr.w r3, [r6, #1668] ; 0x684 - 14df6: f8d6 0678 ldr.w r0, [r6, #1656] ; 0x678 - 14dfa: f8d6 167c ldr.w r1, [r6, #1660] ; 0x67c - 14dfe: f8d6 2680 ldr.w r2, [r6, #1664] ; 0x680 - 14e02: c50f stmia r5!, {r0, r1, r2, r3} - 14e04: f896 3688 ldrb.w r3, [r6, #1672] ; 0x688 - 14e08: 702b strb r3, [r5, #0] + 14eac: f500 5280 add.w r2, r0, #4096 ; 0x1000 + 14eb0: eb03 1303 add.w r3, r3, r3, lsl #4 + 14eb4: 466f mov r7, sp + 14eb6: f8d2 6800 ldr.w r6, [r2, #2048] ; 0x800 + 14eba: 463d mov r5, r7 + 14ebc: 441e add r6, r3 + 14ebe: f8d6 3684 ldr.w r3, [r6, #1668] ; 0x684 + 14ec2: f8d6 0678 ldr.w r0, [r6, #1656] ; 0x678 + 14ec6: f8d6 167c ldr.w r1, [r6, #1660] ; 0x67c + 14eca: f8d6 2680 ldr.w r2, [r6, #1664] ; 0x680 + 14ece: c50f stmia r5!, {r0, r1, r2, r3} + 14ed0: f896 3688 ldrb.w r3, [r6, #1672] ; 0x688 + 14ed4: 702b strb r3, [r5, #0] if(BMC_STR_MATCH(t.name, "")){ - 14e0a: f89d 3000 ldrb.w r3, [sp] - 14e0e: b9b3 cbnz r3, 14e3e + 14ed6: f89d 3000 ldrb.w r3, [sp] + 14eda: b9b3 cbnz r3, 14f0a sprintf(str, "L %u", n+globals.offset); - 14e10: f50e 5e80 add.w lr, lr, #4096 ; 0x1000 - 14e14: 490d ldr r1, [pc, #52] ; (14e4c ) - 14e16: 4620 mov r0, r4 - 14e18: f89e 2808 ldrb.w r2, [lr, #2056] ; 0x808 - 14e1c: 4462 add r2, ip + 14edc: f50e 5e80 add.w lr, lr, #4096 ; 0x1000 + 14ee0: 490d ldr r1, [pc, #52] ; (14f18 ) + 14ee2: 4620 mov r0, r4 + 14ee4: f89e 2808 ldrb.w r2, [lr, #2056] ; 0x808 + 14ee8: 4462 add r2, ip } else { strcpy(str, t.name); } } - 14e1e: b00b add sp, #44 ; 0x2c - 14e20: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 14eea: b00b add sp, #44 ; 0x2c + 14eec: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} sprintf(str, "L %u", n+globals.offset); - 14e24: f019 b9b2 b.w 2e18c + 14ef0: f019 b9c0 b.w 2e274 return t; - 14e28: 466f mov r7, sp - 14e2a: ae05 add r6, sp, #20 - 14e2c: 463d mov r5, r7 - 14e2e: ce0f ldmia r6!, {r0, r1, r2, r3} - 14e30: c50f stmia r5!, {r0, r1, r2, r3} - 14e32: 6833 ldr r3, [r6, #0] - 14e34: 702b strb r3, [r5, #0] + 14ef4: 466f mov r7, sp + 14ef6: ae05 add r6, sp, #20 + 14ef8: 463d mov r5, r7 + 14efa: ce0f ldmia r6!, {r0, r1, r2, r3} + 14efc: c50f stmia r5!, {r0, r1, r2, r3} + 14efe: 6833 ldr r3, [r6, #0] + 14f00: 702b strb r3, [r5, #0] if(BMC_STR_MATCH(t.name, "")){ - 14e36: f89d 3000 ldrb.w r3, [sp] - 14e3a: 2b00 cmp r3, #0 - 14e3c: d0e8 beq.n 14e10 + 14f02: f89d 3000 ldrb.w r3, [sp] + 14f06: 2b00 cmp r3, #0 + 14f08: d0e8 beq.n 14edc strcpy(str, t.name); - 14e3e: 4639 mov r1, r7 - 14e40: 4620 mov r0, r4 - 14e42: f019 fd9b bl 2e97c + 14f0a: 4639 mov r1, r7 + 14f0c: 4620 mov r0, r4 + 14f0e: f019 fda5 bl 2ea5c } - 14e46: b00b add sp, #44 ; 0x2c - 14e48: bdf0 pop {r4, r5, r6, r7, pc} - 14e4a: bf00 nop - 14e4c: 20001d44 .word 0x20001d44 + 14f12: b00b add sp, #44 ; 0x2c + 14f14: bdf0 pop {r4, r5, r6, r7, pc} + 14f16: bf00 nop + 14f18: 20001d44 .word 0x20001d44 -00014e50 : +00014f1c : void BMC::setLayer(uint8_t t_layer, bool reassignSettings, bool forced){ - 14e50: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 14f1c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(layer != t_layer && !forced){ - 14e54: f500 5a80 add.w sl, r0, #4096 ; 0x1000 + 14f20: f500 5a80 add.w sl, r0, #4096 ; 0x1000 void BMC::setLayer(uint8_t t_layer, bool reassignSettings, bool forced){ - 14e58: 4615 mov r5, r2 - 14e5a: 460c mov r4, r1 - 14e5c: b08f sub sp, #60 ; 0x3c + 14f24: 4615 mov r5, r2 + 14f26: 460c mov r4, r1 + 14f28: b08f sub sp, #60 ; 0x3c if(layer != t_layer && !forced){ - 14e5e: f8da 286c ldr.w r2, [sl, #2156] ; 0x86c + 14f2a: f8da 286c ldr.w r2, [sl, #2156] ; 0x86c void BMC::setLayer(uint8_t t_layer, bool reassignSettings, bool forced){ - 14e62: 4681 mov r9, r0 + 14f2e: 4681 mov r9, r0 if(layer != t_layer && !forced){ - 14e64: 7811 ldrb r1, [r2, #0] - 14e66: 42a1 cmp r1, r4 - 14e68: d002 beq.n 14e70 - 14e6a: 2b00 cmp r3, #0 - 14e6c: f000 8107 beq.w 1507e + 14f30: 7811 ldrb r1, [r2, #0] + 14f32: 42a1 cmp r1, r4 + 14f34: d002 beq.n 14f3c + 14f36: 2b00 cmp r3, #0 + 14f38: f000 8107 beq.w 1514a layer = t_layer; - 14e70: 7014 strb r4, [r2, #0] - 14e72: 2114 movs r1, #20 - 14e74: 48ac ldr r0, [pc, #688] ; (15128 ) - 14e76: f017 fb67 bl 2c548 - 14e7a: 2101 movs r1, #1 - 14e7c: 48ab ldr r0, [pc, #684] ; (1512c ) - 14e7e: f017 fb63 bl 2c548 + 14f3c: 7014 strb r4, [r2, #0] + 14f3e: 2114 movs r1, #20 + 14f40: 48ac ldr r0, [pc, #688] ; (151f4 ) + 14f42: f017 fb75 bl 2c630 + 14f46: 2101 movs r1, #1 + 14f48: 48ab ldr r0, [pc, #684] ; (151f8 ) + 14f4a: f017 fb71 bl 2c630 BMC_PRINTLN("Switching to Layer #",layer+1,"(",layer,")"); - 14e82: f8da 386c ldr.w r3, [sl, #2156] ; 0x86c + 14f4e: f8da 386c ldr.w r3, [sl, #2156] ; 0x86c size_t print(int n) { return print((long)n); } - 14e86: 48aa ldr r0, [pc, #680] ; (15130 ) - 14e88: 7819 ldrb r1, [r3, #0] - 14e8a: 3101 adds r1, #1 - 14e8c: f014 ffe6 bl 29e5c - 14e90: 2101 movs r1, #1 - 14e92: 48a6 ldr r0, [pc, #664] ; (1512c ) - 14e94: f017 fb58 bl 2c548 - 14e98: 2101 movs r1, #1 - 14e9a: 48a6 ldr r0, [pc, #664] ; (15134 ) - 14e9c: f017 fb54 bl 2c548 - 14ea0: 2101 movs r1, #1 - 14ea2: 48a2 ldr r0, [pc, #648] ; (1512c ) - 14ea4: f017 fb50 bl 2c548 - 14ea8: f8da 286c ldr.w r2, [sl, #2156] ; 0x86c + 14f52: 48aa ldr r0, [pc, #680] ; (151fc ) + 14f54: 7819 ldrb r1, [r3, #0] + 14f56: 3101 adds r1, #1 + 14f58: f014 fff6 bl 29f48 + 14f5c: 2101 movs r1, #1 + 14f5e: 48a6 ldr r0, [pc, #664] ; (151f8 ) + 14f60: f017 fb66 bl 2c630 + 14f64: 2101 movs r1, #1 + 14f66: 48a6 ldr r0, [pc, #664] ; (15200 ) + 14f68: f017 fb62 bl 2c630 + 14f6c: 2101 movs r1, #1 + 14f6e: 48a2 ldr r0, [pc, #648] ; (151f8 ) + 14f70: f017 fb5e bl 2c630 + 14f74: f8da 286c ldr.w r2, [sl, #2156] ; 0x86c size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 14eac: 2300 movs r3, #0 - 14eae: 48a0 ldr r0, [pc, #640] ; (15130 ) - 14eb0: 7811 ldrb r1, [r2, #0] - 14eb2: 220a movs r2, #10 - 14eb4: f014 fffa bl 29eac - 14eb8: 2101 movs r1, #1 - 14eba: 489c ldr r0, [pc, #624] ; (1512c ) - 14ebc: f017 fb44 bl 2c548 - 14ec0: 2101 movs r1, #1 - 14ec2: 489d ldr r0, [pc, #628] ; (15138 ) - 14ec4: f017 fb40 bl 2c548 + 14f78: 2300 movs r3, #0 + 14f7a: 48a0 ldr r0, [pc, #640] ; (151fc ) + 14f7c: 7811 ldrb r1, [r2, #0] + 14f7e: 220a movs r2, #10 + 14f80: f015 f80a bl 29f98 + 14f84: 2101 movs r1, #1 + 14f86: 489c ldr r0, [pc, #624] ; (151f8 ) + 14f88: f017 fb52 bl 2c630 + 14f8c: 2101 movs r1, #1 + 14f8e: 489d ldr r0, [pc, #628] ; (15204 ) + 14f90: f017 fb4e bl 2c630 editor.setLayer(layer); - 14ec8: f642 439c movw r3, #11420 ; 0x2c9c + 14f94: f642 43bc movw r3, #11452 ; 0x2cbc size_t println(const char s[]) { return print(s) + println(); } - 14ecc: 4898 ldr r0, [pc, #608] ; (15130 ) - 14ece: 461c mov r4, r3 - 14ed0: f014 ffd0 bl 29e74 - 14ed4: eb09 0304 add.w r3, r9, r4 - 14ed8: 461c mov r4, r3 - 14eda: 9303 str r3, [sp, #12] - 14edc: f8da 386c ldr.w r3, [sl, #2156] ; 0x86c - 14ee0: 4620 mov r0, r4 - 14ee2: 7819 ldrb r1, [r3, #0] - 14ee4: f005 fc6a bl 1a7bc + 14f98: 4898 ldr r0, [pc, #608] ; (151fc ) + 14f9a: 461c mov r4, r3 + 14f9c: f014 ffe0 bl 29f60 + 14fa0: eb09 0304 add.w r3, r9, r4 + 14fa4: 461c mov r4, r3 + 14fa6: 9303 str r3, [sp, #12] + 14fa8: f8da 386c ldr.w r3, [sl, #2156] ; 0x86c + 14fac: 4620 mov r0, r4 + 14fae: 7819 ldrb r1, [r3, #0] + 14fb0: f005 fc74 bl 1a89c editor.layerSendChangeMessage(); - 14ee8: 2101 movs r1, #1 - 14eea: 4620 mov r0, r4 - 14eec: f00d fafe bl 224ec + 14fb4: 2101 movs r1, #1 + 14fb6: 4620 mov r0, r4 + 14fb8: f00d fb08 bl 225cc if(reassignSettings){ - 14ef0: 2d00 cmp r5, #0 - 14ef2: f040 80fe bne.w 150f2 + 14fbc: 2d00 cmp r5, #0 + 14fbe: f040 80fe bne.w 151be assignHardware(); - 14ef6: 4648 mov r0, r9 - 14ef8: f643 44a7 movw r4, #15527 ; 0x3ca7 - 14efc: f7fe fbfa bl 136f4 + 14fc2: 4648 mov r0, r9 + 14fc4: f643 44c7 movw r4, #15559 ; 0x3cc7 + 14fc8: f7fe fbf8 bl 137bc for(uint8_t i = 0 ; i < 9 ; i++){ - 14f00: f643 3375 movw r3, #15221 ; 0x3b75 - 14f04: 444c add r4, r9 + 14fcc: f643 3395 movw r3, #15253 ; 0x3b95 + 14fd0: 444c add r4, r9 index = -1; - 14f06: 20ff movs r0, #255 ; 0xff - 14f08: 444b add r3, r9 + 14fd2: 20ff movs r0, #255 ; 0xff + 14fd4: 444b add r3, r9 type = 0; - 14f0a: 2200 movs r2, #0 + 14fd6: 2200 movs r2, #0 vuBits = 0; - 14f0c: f04f 0100 mov.w r1, #0 + 14fd8: f04f 0100 mov.w r1, #0 index = -1; - 14f10: f803 0c01 strb.w r0, [r3, #-1] + 14fdc: f803 0c01 strb.w r0, [r3, #-1] type = 0; - 14f14: 77da strb r2, [r3, #31] - 14f16: 3322 adds r3, #34 ; 0x22 + 14fe0: 77da strb r2, [r3, #31] + 14fe2: 3322 adds r3, #34 ; 0x22 strcpy(name, ""); - 14f18: f803 2c22 strb.w r2, [r3, #-34] + 14fe4: f803 2c22 strb.w r2, [r3, #-34] strcpy(value, ""); - 14f1c: f803 2c18 strb.w r2, [r3, #-24] + 14fe8: f803 2c18 strb.w r2, [r3, #-24] stateBits = 0; - 14f20: f803 2c0b strb.w r2, [r3, #-11] + 14fec: f803 2c0b strb.w r2, [r3, #-11] vuValue = 0; - 14f24: f803 2c0a strb.w r2, [r3, #-10] + 14ff0: f803 2c0a strb.w r2, [r3, #-10] vuBits = 0; - 14f28: f823 2c09 strh.w r2, [r3, #-9] + 14ff4: f823 2c09 strh.w r2, [r3, #-9] vPotLevel = 0; - 14f2c: f803 1c07 strb.w r1, [r3, #-7] + 14ff8: f803 1c07 strb.w r1, [r3, #-7] vPotBits = 0; - 14f30: f823 2c05 strh.w r2, [r3, #-5] - 14f34: 42a3 cmp r3, r4 - 14f36: d1e9 bne.n 14f0c + 14ffc: f823 2c05 strh.w r2, [r3, #-5] + 15000: 42a3 cmp r3, r4 + 15002: d1e9 bne.n 14fd8 strcpy(presetName, ""); - 14f38: f643 43a8 movw r3, #15528 ; 0x3ca8 - 14f3c: f643 5448 movw r4, #15688 ; 0x3d48 + 15004: f643 43c8 movw r3, #15560 ; 0x3cc8 + 15008: f643 5468 movw r4, #15720 ; 0x3d68 index = -1; - 14f40: f509 5640 add.w r6, r9, #12288 ; 0x3000 + 1500c: f509 5640 add.w r6, r9, #12288 ; 0x3000 statusLooperData = 0xFF; - 14f44: f64f 72ff movw r2, #65535 ; 0xffff + 15010: f64f 72ff movw r2, #65535 ; 0xffff strcpy(presetName, ""); - 14f48: 444b add r3, r9 - 14f4a: 444c add r4, r9 + 15014: 444b add r3, r9 + 15016: 444c add r4, r9 strcpy(sceneName, ""); - 14f4c: 2500 movs r5, #0 - 14f4e: 4f7b ldr r7, [pc, #492] ; (1513c ) - 14f50: f04f 0801 mov.w r8, #1 - 14f54: f886 0cbc strb.w r0, [r6, #3260] ; 0xcbc + 15018: 2500 movs r5, #0 + 1501a: 4f7b ldr r7, [pc, #492] ; (15208 ) + 1501c: f04f 0801 mov.w r8, #1 + 15020: f886 0cdc strb.w r0, [r6, #3292] ; 0xcdc type = 0; - 14f58: f886 1cbd strb.w r1, [r6, #3261] ; 0xcbd + 15024: f886 1cdd strb.w r1, [r6, #3293] ; 0xcdd active = false; - 14f5c: f886 1cbe strb.w r1, [r6, #3262] ; 0xcbe + 15028: f886 1cde strb.w r1, [r6, #3294] ; 0xcde index = -1; - 14f60: f886 0cbf strb.w r0, [r6, #3263] ; 0xcbf + 1502c: f886 0cdf strb.w r0, [r6, #3295] ; 0xcdf type = 0; - 14f64: f886 1cc0 strb.w r1, [r6, #3264] ; 0xcc0 + 15030: f886 1ce0 strb.w r1, [r6, #3296] ; 0xce0 active = false; - 14f68: f886 1cc1 strb.w r1, [r6, #3265] ; 0xcc1 + 15034: f886 1ce1 strb.w r1, [r6, #3297] ; 0xce1 index = -1; - 14f6c: f886 0cc2 strb.w r0, [r6, #3266] ; 0xcc2 + 15038: f886 0ce2 strb.w r0, [r6, #3298] ; 0xce2 type = 0; - 14f70: f886 1cc3 strb.w r1, [r6, #3267] ; 0xcc3 + 1503c: f886 1ce3 strb.w r1, [r6, #3299] ; 0xce3 active = false; - 14f74: f886 1cc4 strb.w r1, [r6, #3268] ; 0xcc4 + 15040: f886 1ce4 strb.w r1, [r6, #3300] ; 0xce4 index = -1; - 14f78: f886 0cc5 strb.w r0, [r6, #3269] ; 0xcc5 + 15044: f886 0ce5 strb.w r0, [r6, #3301] ; 0xce5 looperData = 0xFF; - 14f7c: f886 0cf1 strb.w r0, [r6, #3313] ; 0xcf1 + 15048: f886 0d11 strb.w r0, [r6, #3345] ; 0xd11 type = 0; - 14f80: f886 1cc6 strb.w r1, [r6, #3270] ; 0xcc6 + 1504c: f886 1ce6 strb.w r1, [r6, #3302] ; 0xce6 active = false; - 14f84: f886 1cc7 strb.w r1, [r6, #3271] ; 0xcc7 + 15050: f886 1ce7 strb.w r1, [r6, #3303] ; 0xce7 connected = false; - 14f88: f886 1cf4 strb.w r1, [r6, #3316] ; 0xcf4 + 15054: f886 1d14 strb.w r1, [r6, #3348] ; 0xd14 statusLooperData = 0xFF; - 14f8c: f8a6 2cf2 strh.w r2, [r6, #3314] ; 0xcf2 + 15058: f8a6 2d12 strh.w r2, [r6, #3346] ; 0xd12 preset = 0xFFFF; - 14f90: f8a6 2cf6 strh.w r2, [r6, #3318] ; 0xcf6 + 1505c: f8a6 2d16 strh.w r2, [r6, #3350] ; 0xd16 scene = 0xFF; - 14f94: f886 2cf8 strb.w r2, [r6, #3320] ; 0xcf8 + 15060: f886 2d18 strb.w r2, [r6, #3352] ; 0xd18 strcpy(presetName, ""); - 14f98: f883 1051 strb.w r1, [r3, #81] ; 0x51 + 15064: f883 1051 strb.w r1, [r3, #81] ; 0x51 strcpy(sceneName, ""); - 14f9c: f883 1072 strb.w r1, [r3, #114] ; 0x72 + 15068: f883 1072 strb.w r1, [r3, #114] ; 0x72 for(uint8_t i = 0 ; i < BMC_MAX_OLED ; i++){ - 14fa0: b2e9 uxtb r1, r5 + 1506c: b2e9 uxtb r1, r5 switch(n){ - 14fa2: 1e4b subs r3, r1, #1 - 14fa4: 2b04 cmp r3, #4 - 14fa6: f200 80bd bhi.w 15124 - 14faa: e8df f003 tbb [pc, r3] - 14fae: 5803 .short 0x5803 - 14fb0: 0456 .short 0x0456 - 14fb2: 54 .byte 0x54 - 14fb3: 00 .byte 0x00 - 14fb4: 2120 movs r1, #32 + 1506e: 1e4b subs r3, r1, #1 + 15070: 2b04 cmp r3, #4 + 15072: f200 80bd bhi.w 151f0 + 15076: e8df f003 tbb [pc, r3] + 1507a: 5803 .short 0x5803 + 1507c: 0456 .short 0x0456 + 1507e: 54 .byte 0x54 + 1507f: 00 .byte 0x00 + 15080: 2120 movs r1, #32 txBuffer[0] = (address << 1); - 14fb6: 23e0 movs r3, #224 ; 0xe0 + 15082: 23e0 movs r3, #224 ; 0xe0 Wire.write(mask); - 14fb8: 4638 mov r0, r7 + 15084: 4638 mov r0, r7 transmitting = 1; - 14fba: f887 8130 strb.w r8, [r7, #304] ; 0x130 + 15086: f887 8130 strb.w r8, [r7, #304] ; 0x130 txBuffer[0] = (address << 1); - 14fbe: f887 30a5 strb.w r3, [r7, #165] ; 0xa5 + 1508a: f887 30a5 strb.w r3, [r7, #165] ; 0xa5 txBufferLength = 1; - 14fc2: f887 812f strb.w r8, [r7, #303] ; 0x12f - 14fc6: f010 f8f7 bl 251b8 + 1508e: f887 812f strb.w r8, [r7, #303] ; 0x12f + 15092: f010 f907 bl 252a4 return endTransmission(1); - 14fca: 2101 movs r1, #1 - 14fcc: 4638 mov r0, r7 - 14fce: f010 fa01 bl 253d4 + 15096: 2101 movs r1, #1 + 15098: 4638 mov r0, r7 + 1509a: f010 fa11 bl 254c0 uint8_t t_settings = store.layers[globals.layer].oled[i].settings[0]; - 14fd2: f8d6 3b3c ldr.w r3, [r6, #2876] ; 0xb3c - 14fd6: eb05 0e45 add.w lr, r5, r5, lsl #1 - 14fda: f8d6 2b40 ldr.w r2, [r6, #2880] ; 0xb40 - 14fde: 7a5b ldrb r3, [r3, #9] - 14fe0: f241 5cd4 movw ip, #5588 ; 0x15d4 + 1509e: f8d6 3b5c ldr.w r3, [r6, #2908] ; 0xb5c + 150a2: eb05 0e45 add.w lr, r5, r5, lsl #1 + 150a6: f8d6 2b60 ldr.w r2, [r6, #2912] ; 0xb60 + 150aa: 7a5b ldrb r3, [r3, #9] + 150ac: f241 5cd4 movw ip, #5588 ; 0x15d4 display.setTextSize(1); - 14fe4: 2101 movs r1, #1 - 14fe6: 4620 mov r0, r4 - 14fe8: eb03 1b43 add.w fp, r3, r3, lsl #5 - 14fec: 440d add r5, r1 - 14fee: eb03 038b add.w r3, r3, fp, lsl #2 - 14ff2: 4473 add r3, lr - 14ff4: 441a add r2, r3 - 14ff6: f812 b00c ldrb.w fp, [r2, ip] - 14ffa: f011 fb83 bl 26704 + 150b0: 2101 movs r1, #1 + 150b2: 4620 mov r0, r4 + 150b4: eb03 1b43 add.w fp, r3, r3, lsl #5 + 150b8: 440d add r5, r1 + 150ba: eb03 038b add.w r3, r3, fp, lsl #2 + 150be: 4473 add r3, lr + 150c0: 441a add r2, r3 + 150c2: f812 b00c ldrb.w fp, [r2, ip] + 150c6: f011 fb93 bl 267f0 meterPixelValue = 0xFFFF; - 14ffe: f64f 73ff movw r3, #65535 ; 0xffff + 150ca: f64f 73ff movw r3, #65535 ; 0xffff selChar = -1; - 15002: 22ff movs r2, #255 ; 0xff + 150ce: 22ff movs r2, #255 ; 0xff if(bitRead(t_settings, 1)){ - 15004: f01b 0f02 tst.w fp, #2 + 150d0: f01b 0f02 tst.w fp, #2 settings = t_settings; - 15008: f804 bc09 strb.w fp, [r4, #-9] + 150d4: f804 bc09 strb.w fp, [r4, #-9] selChar = -1; - 1500c: f804 2c08 strb.w r2, [r4, #-8] + 150d8: f804 2c08 strb.w r2, [r4, #-8] meterPixelValue = 0xFFFF; - 15010: f824 3c06 strh.w r3, [r4, #-6] + 150dc: f824 3c06 strh.w r3, [r4, #-6] meterValue = 0xFFFF; - 15014: f824 3c04 strh.w r3, [r4, #-4] + 150e0: f824 3c04 strh.w r3, [r4, #-4] if(bitRead(t_settings, 1)){ - 15018: d123 bne.n 15062 + 150e4: d123 bne.n 1512e for(uint8_t i = 0 ; i < BMC_MAX_OLED ; i++){ - 1501a: 2d06 cmp r5, #6 - 1501c: f104 0438 add.w r4, r4, #56 ; 0x38 - 15020: d1be bne.n 14fa0 + 150e6: 2d06 cmp r5, #6 + 150e8: f104 0438 add.w r4, r4, #56 ; 0x38 + 150ec: d1be bne.n 1506c return bitRead(flags, bit); - 15022: f8b6 335c ldrh.w r3, [r6, #860] ; 0x35c + 150ee: f8b6 337c ldrh.w r3, [r6, #892] ; 0x37c prevTime = 0; - 15026: 2200 movs r2, #0 + 150f2: 2200 movs r2, #0 bitWrite(flags, bit, value); - 15028: f023 0308 bic.w r3, r3, #8 - 1502c: f8a6 335c strh.w r3, [r6, #860] ; 0x35c + 150f4: f023 0308 bic.w r3, r3, #8 + 150f8: f8a6 337c strh.w r3, [r6, #892] ; 0x37c tExpression = 255; - 15030: 23ff movs r3, #255 ; 0xff - 15032: f886 37ac strb.w r3, [r6, #1964] ; 0x7ac + 150fc: 23ff movs r3, #255 ; 0xff + 150fe: f886 37cc strb.w r3, [r6, #1996] ; 0x7cc if(callback.pageChanged){ - 15036: f8da 387c ldr.w r3, [sl, #2172] ; 0x87c - 1503a: f8c6 236c str.w r2, [r6, #876] ; 0x36c - 1503e: b11b cbz r3, 15048 + 15102: f8da 387c ldr.w r3, [sl, #2172] ; 0x87c + 15106: f8c6 238c str.w r2, [r6, #908] ; 0x38c + 1510a: b11b cbz r3, 15114 callback.pageChanged(layer); - 15040: f8da 286c ldr.w r2, [sl, #2156] ; 0x86c - 15044: 7810 ldrb r0, [r2, #0] - 15046: 4798 blx r3 + 1510c: f8da 286c ldr.w r2, [sl, #2156] ; 0x86c + 15110: 7810 ldrb r0, [r2, #0] + 15112: 4798 blx r3 return bitRead(flags, bit); - 15048: f89a 3964 ldrb.w r3, [sl, #2404] ; 0x964 + 15114: f89a 3968 ldrb.w r3, [sl, #2408] ; 0x968 if(flags.read(BMC_FLAGS_LAYER_CHANGED) && editor.connected()){ - 1504c: 079b lsls r3, r3, #30 - 1504e: d440 bmi.n 150d2 + 15118: 079b lsls r3, r3, #30 + 1511a: d440 bmi.n 1519e }; - 15050: b00f add sp, #60 ; 0x3c - 15052: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1511c: b00f add sp, #60 ; 0x3c + 1511e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} case 5: return BMC_DEVICE_UI_OLED_6; - 15056: 2102 movs r1, #2 - 15058: e7ad b.n 14fb6 + 15122: 2102 movs r1, #2 + 15124: e7ad b.n 15082 case 3: return BMC_DEVICE_UI_OLED_4; - 1505a: 2108 movs r1, #8 - 1505c: e7ab b.n 14fb6 + 15126: 2108 movs r1, #8 + 15128: e7ab b.n 15082 case 2: return BMC_DEVICE_UI_OLED_3; - 1505e: 2110 movs r1, #16 - 15060: e7a9 b.n 14fb6 + 1512a: 2110 movs r1, #16 + 1512c: e7a9 b.n 15082 display.drawRect(0, 0, wBound, hBound, BMC_OLED_WHITE); - 15062: f814 3c0c ldrb.w r3, [r4, #-12] - 15066: 2200 movs r2, #0 - 15068: f8cd 8004 str.w r8, [sp, #4] - 1506c: 4620 mov r0, r4 - 1506e: f814 cc0b ldrb.w ip, [r4, #-11] - 15072: 4611 mov r1, r2 - 15074: f8cd c000 str.w ip, [sp] - 15078: f010 fcd2 bl 25a20 - 1507c: e7cd b.n 1501a + 1512e: f814 3c0c ldrb.w r3, [r4, #-12] + 15132: 2200 movs r2, #0 + 15134: f8cd 8004 str.w r8, [sp, #4] + 15138: 4620 mov r0, r4 + 1513a: f814 cc0b ldrb.w ip, [r4, #-11] + 1513e: 4611 mov r1, r2 + 15140: f8cd c000 str.w ip, [sp] + 15144: f010 fce2 bl 25b0c + 15148: e7cd b.n 150e6 bmcStoreName t; - 1507e: e9cd 3309 strd r3, r3, [sp, #36] ; 0x24 - 15082: e9cd 330b strd r3, r3, [sp, #44] ; 0x2c - 15086: f88d 3034 strb.w r3, [sp, #52] ; 0x34 + 1514a: e9cd 3309 strd r3, r3, [sp, #36] ; 0x24 + 1514e: e9cd 330b strd r3, r3, [sp, #44] ; 0x2c + 15152: f88d 3034 strb.w r3, [sp, #52] ; 0x34 bitWrite(flags, bit, value); - 1508a: f89a 3964 ldrb.w r3, [sl, #2404] ; 0x964 - 1508e: f043 0302 orr.w r3, r3, #2 - 15092: f88a 3964 strb.w r3, [sl, #2404] ; 0x964 + 15156: f89a 3968 ldrb.w r3, [sl, #2408] ; 0x968 + 1515a: f043 0302 orr.w r3, r3, #2 + 1515e: f88a 3968 strb.w r3, [sl, #2408] ; 0x968 bmcStoreName e = globals.getDeviceName(store.layers[layer].events[0].name); - 15096: 7813 ldrb r3, [r2, #0] - 15098: eb03 1243 add.w r2, r3, r3, lsl #5 - 1509c: eb03 0382 add.w r3, r3, r2, lsl #2 - 150a0: 4403 add r3, r0 - 150a2: f503 53ab add.w r3, r3, #5472 ; 0x1560 - 150a6: 781b ldrb r3, [r3, #0] + 15162: 7813 ldrb r3, [r2, #0] + 15164: eb03 1243 add.w r2, r3, r3, lsl #5 + 15168: eb03 0382 add.w r3, r3, r2, lsl #2 + 1516c: 4403 add r3, r0 + 1516e: f503 53ab add.w r3, r3, #5472 ; 0x1560 + 15172: 781b ldrb r3, [r3, #0] if(n > 0 && n <= BMC_MAX_NAMES_LIBRARY){ - 150a8: 3b01 subs r3, #1 - 150aa: b29a uxth r2, r3 - 150ac: 2a7f cmp r2, #127 ; 0x7f - 150ae: d924 bls.n 150fa + 15174: 3b01 subs r3, #1 + 15176: b29a uxth r2, r3 + 15178: 2a7f cmp r2, #127 ; 0x7f + 1517a: d924 bls.n 151c6 return t; - 150b0: f10d 0c10 add.w ip, sp, #16 - 150b4: af09 add r7, sp, #36 ; 0x24 - 150b6: 4666 mov r6, ip - 150b8: cf0f ldmia r7!, {r0, r1, r2, r3} - 150ba: c60f stmia r6!, {r0, r1, r2, r3} - 150bc: 683b ldr r3, [r7, #0] - 150be: 7033 strb r3, [r6, #0] + 1517c: f10d 0c10 add.w ip, sp, #16 + 15180: af09 add r7, sp, #36 ; 0x24 + 15182: 4666 mov r6, ip + 15184: cf0f ldmia r7!, {r0, r1, r2, r3} + 15186: c60f stmia r6!, {r0, r1, r2, r3} + 15188: 683b ldr r3, [r7, #0] + 1518a: 7033 strb r3, [r6, #0] streamToSketch(BMC_DEVICE_ID_LAYER, t_layer, e.name); - 150c0: 4622 mov r2, r4 - 150c2: 4663 mov r3, ip - 150c4: 2101 movs r1, #1 - 150c6: 4648 mov r0, r9 - 150c8: f002 feb8 bl 17e3c + 1518c: 4622 mov r2, r4 + 1518e: 4663 mov r3, ip + 15190: 2101 movs r1, #1 + 15192: 4648 mov r0, r9 + 15194: f002 fec4 bl 17f20 layer = t_layer; - 150cc: f8da 286c ldr.w r2, [sl, #2156] ; 0x86c - 150d0: e6ce b.n 14e70 + 15198: f8da 286c ldr.w r2, [sl, #2156] ; 0x86c + 1519c: e6ce b.n 14f3c if(flags.read(BMC_FLAGS_LAYER_CHANGED) && editor.connected()){ - 150d2: 9803 ldr r0, [sp, #12] - 150d4: f005 fb5e bl 1a794 - 150d8: 2800 cmp r0, #0 - 150da: d0b9 beq.n 15050 + 1519e: 9803 ldr r0, [sp, #12] + 151a0: f005 fb68 bl 1a874 + 151a4: 2800 cmp r0, #0 + 151a6: d0b9 beq.n 1511c bitSet(flags, bit); - 150dc: f509 5900 add.w r9, r9, #8192 ; 0x2000 - 150e0: f8d9 3ccc ldr.w r3, [r9, #3276] ; 0xccc - 150e4: f443 2380 orr.w r3, r3, #262144 ; 0x40000 - 150e8: f8c9 3ccc str.w r3, [r9, #3276] ; 0xccc + 151a8: f509 5900 add.w r9, r9, #8192 ; 0x2000 + 151ac: f8d9 3cec ldr.w r3, [r9, #3308] ; 0xcec + 151b0: f443 2380 orr.w r3, r3, #262144 ; 0x40000 + 151b4: f8c9 3cec str.w r3, [r9, #3308] ; 0xcec }; - 150ec: b00f add sp, #60 ; 0x3c - 150ee: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 151b8: b00f add sp, #60 ; 0x3c + 151ba: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} assignSettings(); - 150f2: 4648 mov r0, r9 - 150f4: f7f1 f840 bl 6178 - 150f8: e6fd b.n 14ef6 + 151be: 4648 mov r0, r9 + 151c0: f7f1 f81e bl 6200 + 151c4: e6fd b.n 14fc2 return store.global.names[n-1]; - 150fa: eb03 1303 add.w r3, r3, r3, lsl #4 - 150fe: f8da 7800 ldr.w r7, [sl, #2048] ; 0x800 - 15102: f10d 0c10 add.w ip, sp, #16 - 15106: 441f add r7, r3 - 15108: 4666 mov r6, ip - 1510a: f8d7 3684 ldr.w r3, [r7, #1668] ; 0x684 - 1510e: f8d7 0678 ldr.w r0, [r7, #1656] ; 0x678 - 15112: f8d7 167c ldr.w r1, [r7, #1660] ; 0x67c - 15116: f8d7 2680 ldr.w r2, [r7, #1664] ; 0x680 - 1511a: c60f stmia r6!, {r0, r1, r2, r3} - 1511c: f897 3688 ldrb.w r3, [r7, #1672] ; 0x688 - 15120: 7033 strb r3, [r6, #0] - 15122: e7cd b.n 150c0 - 15124: 2101 movs r1, #1 - 15126: e746 b.n 14fb6 - 15128: 200029fc .word 0x200029fc - 1512c: 200023ec .word 0x200023ec - 15130: 20004ba8 .word 0x20004ba8 - 15134: 2000243c .word 0x2000243c - 15138: 20002b14 .word 0x20002b14 - 1513c: 2000b0f8 .word 0x2000b0f8 - -00015140 : + 151c6: eb03 1303 add.w r3, r3, r3, lsl #4 + 151ca: f8da 7800 ldr.w r7, [sl, #2048] ; 0x800 + 151ce: f10d 0c10 add.w ip, sp, #16 + 151d2: 441f add r7, r3 + 151d4: 4666 mov r6, ip + 151d6: f8d7 3684 ldr.w r3, [r7, #1668] ; 0x684 + 151da: f8d7 0678 ldr.w r0, [r7, #1656] ; 0x678 + 151de: f8d7 167c ldr.w r1, [r7, #1660] ; 0x67c + 151e2: f8d7 2680 ldr.w r2, [r7, #1664] ; 0x680 + 151e6: c60f stmia r6!, {r0, r1, r2, r3} + 151e8: f897 3688 ldrb.w r3, [r7, #1672] ; 0x688 + 151ec: 7033 strb r3, [r6, #0] + 151ee: e7cd b.n 1518c + 151f0: 2101 movs r1, #1 + 151f2: e746 b.n 15082 + 151f4: 20002a04 .word 0x20002a04 + 151f8: 200023ec .word 0x200023ec + 151fc: 20004c68 .word 0x20004c68 + 15200: 2000243c .word 0x2000243c + 15204: 20002b1c .word 0x20002b1c + 15208: 2000b118 .word 0x2000b118 + +0001520c : if(t_layer >= BMC_MAX_LAYERS && !forced){ - 15140: 2904 cmp r1, #4 - 15142: d902 bls.n 1514a - 15144: 2b01 cmp r3, #1 - 15146: d000 beq.n 1514a + 1520c: 2904 cmp r1, #4 + 1520e: d902 bls.n 15216 + 15210: 2b01 cmp r3, #1 + 15212: d000 beq.n 15216 }; - 15148: 4770 bx lr - 1514a: f7ff be81 b.w 14e50 - 1514e: bf00 nop + 15214: 4770 bx lr + 15216: f7ff be81 b.w 14f1c + 1521a: bf00 nop -00015150 : +0001521c : setLayer(layer, true, true); - 15150: f500 5180 add.w r1, r0, #4096 ; 0x1000 - 15154: 2301 movs r3, #1 - 15156: f8d1 186c ldr.w r1, [r1, #2156] ; 0x86c - 1515a: 461a mov r2, r3 - 1515c: 7809 ldrb r1, [r1, #0] - 1515e: f7ff be77 b.w 14e50 - 15162: bf00 nop - -00015164 : + 1521c: f500 5180 add.w r1, r0, #4096 ; 0x1000 + 15220: 2301 movs r3, #1 + 15222: f8d1 186c ldr.w r1, [r1, #2156] ; 0x86c + 15226: 461a mov r2, r3 + 15228: 7809 ldrb r1, [r1, #0] + 1522a: f7ff be77 b.w 14f1c + 1522e: bf00 nop + +00015230 : void BMC::scrollLayer(uint8_t t_flags, uint8_t t_min, uint8_t t_max, uint8_t t_amount){ // t_flags bit-0 = direction // t_flags bit-1 = endless scrollLayer((bitRead(t_flags,0)),bitRead(t_flags,1),t_min,t_max,t_amount); } void BMC::scrollLayer(bool t_dir, bool t_endless, uint8_t t_min, uint8_t t_max, uint8_t t_amount){ - 15164: b510 push {r4, lr} + 15230: b510 push {r4, lr} // } if(globals.setRenderDisplayList(BMC_DEVICE_ID_LAYER)){ return; } BMCScroller scroller(0, BMC_MAX_LAYERS-1); setLayer(scroller.scroll(t_amount, t_dir, t_endless, layer, t_min, t_max)); - 15166: f500 5480 add.w r4, r0, #4096 ; 0x1000 + 15232: f500 5480 add.w r4, r0, #4096 ; 0x1000 void BMC::scrollLayer(bool t_dir, bool t_endless, uint8_t t_min, uint8_t t_max, uint8_t t_amount){ - 1516a: f89d c008 ldrb.w ip, [sp, #8] + 15236: f89d c008 ldrb.w ip, [sp, #8] setLayer(scroller.scroll(t_amount, t_dir, t_endless, layer, t_min, t_max)); - 1516e: f8d4 486c ldr.w r4, [r4, #2156] ; 0x86c + 1523a: f8d4 486c ldr.w r4, [r4, #2156] ; 0x86c if((min < lowest) || (min >= max)){ - 15172: 4563 cmp r3, ip - 15174: f894 e000 ldrb.w lr, [r4] + 1523e: 4563 cmp r3, ip + 15240: f894 e000 ldrb.w lr, [r4] void BMC::scrollLayer(bool t_dir, bool t_endless, uint8_t t_min, uint8_t t_max, uint8_t t_amount){ - 15178: f89d 400c ldrb.w r4, [sp, #12] - 1517c: d312 bcc.n 151a4 + 15244: f89d 400c ldrb.w r4, [sp, #12] + 15248: d312 bcc.n 15270 if((max > highest) || (max <= min)){ - 1517e: f10c 33ff add.w r3, ip, #4294967295 ; 0xffffffff - 15182: b2db uxtb r3, r3 - 15184: 2b03 cmp r3, #3 + 1524a: f10c 33ff add.w r3, ip, #4294967295 ; 0xffffffff + 1524e: b2db uxtb r3, r3 + 15250: 2b03 cmp r3, #3 min = lowest; - 15186: f04f 0300 mov.w r3, #0 + 15252: f04f 0300 mov.w r3, #0 if((max > highest) || (max <= min)){ - 1518a: d901 bls.n 15190 + 15256: d901 bls.n 1525c max = highest; - 1518c: f04f 0c04 mov.w ip, #4 + 15258: f04f 0c04 mov.w ip, #4 if(direction==BMC_SCROLL_UP){ - 15190: b171 cbz r1, 151b0 + 1525c: b171 cbz r1, 1527c long newValue = (value+amount); - 15192: 44a6 add lr, r4 + 1525e: 44a6 add lr, r4 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - 15194: b33a cbz r2, 151e6 + 15260: b33a cbz r2, 152b2 return (newValue > max || newValue < min) ? min : newValue; - 15196: 45e6 cmp lr, ip - 15198: dd27 ble.n 151ea - 1519a: 469c mov ip, r3 + 15262: 45e6 cmp lr, ip + 15264: dd27 ble.n 152b6 + 15266: 469c mov ip, r3 if(t_layer >= BMC_MAX_LAYERS && !forced){ - 1519c: f1bc 0f04 cmp.w ip, #4 - 151a0: d911 bls.n 151c6 + 15268: f1bc 0f04 cmp.w ip, #4 + 1526c: d911 bls.n 15292 } - 151a2: bd10 pop {r4, pc} + 1526e: bd10 pop {r4, pc} if((max > highest) || (max <= min)){ - 151a4: f1bc 0f04 cmp.w ip, #4 - 151a8: d9f2 bls.n 15190 + 15270: f1bc 0f04 cmp.w ip, #4 + 15274: d9f2 bls.n 1525c max = highest; - 151aa: f04f 0c04 mov.w ip, #4 - 151ae: e7ef b.n 15190 + 15276: f04f 0c04 mov.w ip, #4 + 1527a: e7ef b.n 1525c long newValue = (value-amount); - 151b0: ebae 0e04 sub.w lr, lr, r4 + 1527c: ebae 0e04 sub.w lr, lr, r4 value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - 151b4: b972 cbnz r2, 151d4 + 15280: b972 cbnz r2, 152a0 return (newValue < min) ? min : newValue; - 151b6: 459e cmp lr, r3 - 151b8: bfb8 it lt - 151ba: 469e movlt lr, r3 - 151bc: fa5f fc8e uxtb.w ip, lr + 15282: 459e cmp lr, r3 + 15284: bfb8 it lt + 15286: 469e movlt lr, r3 + 15288: fa5f fc8e uxtb.w ip, lr if(t_layer >= BMC_MAX_LAYERS && !forced){ - 151c0: f1bc 0f04 cmp.w ip, #4 - 151c4: d8ed bhi.n 151a2 - 151c6: 2300 movs r3, #0 - 151c8: 4661 mov r1, ip - 151ca: 461a mov r2, r3 -} - 151cc: e8bd 4010 ldmia.w sp!, {r4, lr} - 151d0: f7ff be3e b.w 14e50 + 1528c: f1bc 0f04 cmp.w ip, #4 + 15290: d8ed bhi.n 1526e + 15292: 2300 movs r3, #0 + 15294: 4661 mov r1, ip + 15296: 461a mov r2, r3 +} + 15298: e8bd 4010 ldmia.w sp!, {r4, lr} + 1529c: f7ff be3e b.w 14f1c return (newValue < min) ? max : newValue; - 151d4: 459e cmp lr, r3 - 151d6: daf1 bge.n 151bc - 151d8: 2300 movs r3, #0 - 151da: 4661 mov r1, ip - 151dc: 461a mov r2, r3 - 151de: e8bd 4010 ldmia.w sp!, {r4, lr} - 151e2: f7ff be35 b.w 14e50 + 152a0: 459e cmp lr, r3 + 152a2: daf1 bge.n 15288 + 152a4: 2300 movs r3, #0 + 152a6: 4661 mov r1, ip + 152a8: 461a mov r2, r3 + 152aa: e8bd 4010 ldmia.w sp!, {r4, lr} + 152ae: f7ff be35 b.w 14f1c if(newValue>max){ - 151e6: 45e6 cmp lr, ip - 151e8: dced bgt.n 151c6 + 152b2: 45e6 cmp lr, ip + 152b4: dced bgt.n 15292 } else if(newValue - 151f6: bf00 nop + 152b8: bfa8 it ge + 152ba: fa5f f38e uxtbge.w r3, lr + 152be: 469c mov ip, r3 + 152c0: e7d2 b.n 15268 + 152c2: bf00 nop -000151f8 : +000152c4 : setLayer(scroller.scroll(t_amount, t_dir, t_endless, layer, t_min, t_max)); - 151f8: f500 5380 add.w r3, r0, #4096 ; 0x1000 - 151fc: f8d3 386c ldr.w r3, [r3, #2156] ; 0x86c - 15200: 7819 ldrb r1, [r3, #0] + 152c4: f500 5380 add.w r3, r0, #4096 ; 0x1000 + 152c8: f8d3 386c ldr.w r3, [r3, #2156] ; 0x86c + 152cc: 7819 ldrb r1, [r3, #0] return (newValue < min) ? max : newValue; - 15202: b121 cbz r1, 1520e - 15204: 3901 subs r1, #1 - 15206: b2c9 uxtb r1, r1 + 152ce: b121 cbz r1, 152da + 152d0: 3901 subs r1, #1 + 152d2: b2c9 uxtb r1, r1 if(t_layer >= BMC_MAX_LAYERS && !forced){ - 15208: 2904 cmp r1, #4 - 1520a: d901 bls.n 15210 + 152d4: 2904 cmp r1, #4 + 152d6: d901 bls.n 152dc } - 1520c: 4770 bx lr - 1520e: 2104 movs r1, #4 - 15210: 2300 movs r3, #0 - 15212: 461a mov r2, r3 - 15214: f7ff be1c b.w 14e50 + 152d8: 4770 bx lr + 152da: 2104 movs r1, #4 + 152dc: 2300 movs r3, #0 + 152de: 461a mov r2, r3 + 152e0: f7ff be1c b.w 14f1c -00015218 : +000152e4 : setLayer(scroller.scroll(t_amount, t_dir, t_endless, layer, t_min, t_max)); - 15218: f500 5380 add.w r3, r0, #4096 ; 0x1000 - 1521c: f8d3 386c ldr.w r3, [r3, #2156] ; 0x86c - 15220: 7819 ldrb r1, [r3, #0] + 152e4: f500 5380 add.w r3, r0, #4096 ; 0x1000 + 152e8: f8d3 386c ldr.w r3, [r3, #2156] ; 0x86c + 152ec: 7819 ldrb r1, [r3, #0] return (newValue > max || newValue < min) ? min : newValue; - 15222: 2903 cmp r1, #3 - 15224: d805 bhi.n 15232 - 15226: 3101 adds r1, #1 - 15228: 2300 movs r3, #0 - 1522a: b2c9 uxtb r1, r1 + 152ee: 2903 cmp r1, #3 + 152f0: d805 bhi.n 152fe + 152f2: 3101 adds r1, #1 + 152f4: 2300 movs r3, #0 + 152f6: b2c9 uxtb r1, r1 if(t_layer >= BMC_MAX_LAYERS && !forced){ - 1522c: 461a mov r2, r3 - 1522e: f7ff be0f b.w 14e50 - 15232: 2300 movs r3, #0 - 15234: 2100 movs r1, #0 - 15236: 461a mov r2, r3 - 15238: f7ff be0a b.w 14e50 - -0001523c : + 152f8: 461a mov r2, r3 + 152fa: f7ff be0f b.w 14f1c + 152fe: 2300 movs r3, #0 + 15300: 2100 movs r1, #0 + 15302: 461a mov r2, r3 + 15304: f7ff be0a b.w 14f1c + +00015308 : void incomingSysEx(BMCMidiMessage d){ - 1523c: b570 push {r4, r5, r6, lr} + 15308: b570 push {r4, r5, r6, lr} selected = 0; - 1523e: 2200 movs r2, #0 - 15240: b08a sub sp, #40 ; 0x28 + 1530a: 2200 movs r2, #0 + 1530c: b08a sub sp, #40 ; 0x28 fader = (-8192); - 15242: f44f 4c60 mov.w ip, #57344 ; 0xe000 - 15246: 4604 mov r4, r0 - 15248: 4603 mov r3, r0 - 1524a: f100 0148 add.w r1, r0, #72 ; 0x48 + 1530e: f44f 4c60 mov.w ip, #57344 ; 0xe000 + 15312: 4604 mov r4, r0 + 15314: 4603 mov r3, r0 + 15316: f100 0148 add.w r1, r0, #72 ; 0x48 selected = 0; - 1524e: f880 20d1 strb.w r2, [r0, #209] ; 0xd1 + 1531a: f880 20d1 strb.w r2, [r0, #209] ; 0xd1 states = 0; - 15252: f8c0 20d4 str.w r2, [r0, #212] ; 0xd4 + 1531e: f8c0 20d4 str.w r2, [r0, #212] ; 0xd4 flags = 0; - 15256: f883 20e1 strb.w r2, [r3, #225] ; 0xe1 + 15322: f883 20e1 strb.w r2, [r3, #225] ; 0xe1 for(uint8_t i = 0 ; i < 9 ; i++){ - 1525a: 3308 adds r3, #8 + 15326: 3308 adds r3, #8 meter = 0; - 1525c: f883 20da strb.w r2, [r3, #218] ; 0xda + 15328: f883 20da strb.w r2, [r3, #218] ; 0xda lastPeak = 0; - 15260: f883 20db strb.w r2, [r3, #219] ; 0xdb + 1532c: f883 20db strb.w r2, [r3, #219] ; 0xdb states = 0; - 15264: f883 20d4 strb.w r2, [r3, #212] ; 0xd4 + 15330: f883 20d4 strb.w r2, [r3, #212] ; 0xd4 fader = (-8192); - 15268: f8a3 c0d6 strh.w ip, [r3, #214] ; 0xd6 + 15334: f8a3 c0d6 strh.w ip, [r3, #214] ; 0xd6 vPot = 0; - 1526c: f883 20d8 strb.w r2, [r3, #216] ; 0xd8 + 15338: f883 20d8 strb.w r2, [r3, #216] ; 0xd8 for(uint8_t i = 0 ; i < 9 ; i++){ - 15270: 428b cmp r3, r1 - 15272: d1f0 bne.n 15256 + 1533c: 428b cmp r3, r1 + 1533e: d1f0 bne.n 15322 bitWrite(flags, 0, 1); - 15274: 2001 movs r0, #1 + 15340: 2001 movs r0, #1 if(callback.dawOnline){ - 15276: 6ca3 ldr r3, [r4, #72] ; 0x48 - 15278: f884 00d0 strb.w r0, [r4, #208] ; 0xd0 - 1527c: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 15280: b103 cbz r3, 15284 + 15342: 6ca3 ldr r3, [r4, #72] ; 0x48 + 15344: f884 00d0 strb.w r0, [r4, #208] ; 0xd0 + 15348: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 1534c: b103 cbz r3, 15350 callback.dawOnline(true); - 15282: 4798 blx r3 + 1534e: 4798 blx r3 0x03, // Connection Confirmation 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, // Serial Number 0x4F, 0x4E, 0x45, 0x69, // Challenge Code 0xF7 // EOX }; midi.sendSysEx(BMC_USB, reply, 18, true); - 15284: 2601 movs r6, #1 - 15286: 2300 movs r3, #0 + 15350: 2601 movs r6, #1 + 15352: 2300 movs r3, #0 uint8_t reply[18] = - 15288: 4d09 ldr r5, [pc, #36] ; (152b0 ) - 1528a: f10d 0c14 add.w ip, sp, #20 + 15354: 4d09 ldr r5, [pc, #36] ; (1537c ) + 15356: f10d 0c14 add.w ip, sp, #20 midi.sendSysEx(BMC_USB, reply, 18, true); - 1528e: 9600 str r6, [sp, #0] - 15290: e9cd 3601 strd r3, r6, [sp, #4] + 1535a: 9600 str r6, [sp, #0] + 1535c: e9cd 3601 strd r3, r6, [sp, #4] uint8_t reply[18] = - 15294: cd0f ldmia r5!, {r0, r1, r2, r3} - 15296: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - 1529a: 682a ldr r2, [r5, #0] + 15360: cd0f ldmia r5!, {r0, r1, r2, r3} + 15362: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 15366: 682a ldr r2, [r5, #0] midi.sendSysEx(BMC_USB, reply, 18, true); - 1529c: 2312 movs r3, #18 - 1529e: 4631 mov r1, r6 - 152a0: 6c20 ldr r0, [r4, #64] ; 0x40 + 15368: 2312 movs r3, #18 + 1536a: 4631 mov r1, r6 + 1536c: 6c20 ldr r0, [r4, #64] ; 0x40 uint8_t reply[18] = - 152a2: f8ac 2000 strh.w r2, [ip] + 1536e: f8ac 2000 strh.w r2, [ip] midi.sendSysEx(BMC_USB, reply, 18, true); - 152a6: aa05 add r2, sp, #20 - 152a8: f00d ff0e bl 230c8 + 15372: aa05 add r2, sp, #20 + 15374: f00d ff0e bl 23194 } - 152ac: b00a add sp, #40 ; 0x28 - 152ae: bd70 pop {r4, r5, r6, pc} - 152b0: 200008f0 .word 0x200008f0 + 15378: b00a add sp, #40 ; 0x28 + 1537a: bd70 pop {r4, r5, r6, pc} + 1537c: 200008f0 .word 0x200008f0 -000152b4 : +00015380 : num += in_range / 2; - 152b4: f04f 0c7f mov.w ip, #127 ; 0x7f + 15380: f04f 0c7f mov.w ip, #127 ; 0x7f stringNumber = t_string & 0x7F; - 152b8: ea02 020c and.w r2, r2, ip + 15384: ea02 020c and.w r2, r2, ip note = t_note & 0x7F; - 152bc: ea01 010c and.w r1, r1, ip + 15388: ea01 010c and.w r1, r1, ip stringNumber = t_string & 0x7F; - 152c0: 7002 strb r2, [r0, #0] - 152c2: 223f movs r2, #63 ; 0x3f + 1538c: 7002 strb r2, [r0, #0] + 1538e: 223f movs r2, #63 ; 0x3f note = t_note & 0x7F; - 152c4: 7041 strb r1, [r0, #1] + 15390: 7041 strb r1, [r0, #1] void setData(uint8_t t_note, uint8_t t_string, uint8_t t_pitch){ - 152c6: b500 push {lr} + 15392: b500 push {lr} pitchRaw = t_pitch & 0x7F; - 152c8: ea03 0e0c and.w lr, r3, ip - 152cc: fb1c 2303 smlabb r3, ip, r3, r2 + 15394: ea03 0e0c and.w lr, r3, ip + 15398: fb1c 2303 smlabb r3, ip, r3, r2 long result = num / in_range + out_min; - 152d0: 4a43 ldr r2, [pc, #268] ; (153e0 ) - 152d2: f880 e002 strb.w lr, [r0, #2] - 152d6: fba2 c203 umull ip, r2, r2, r3 - 152da: 1a9b subs r3, r3, r2 - 152dc: eb02 0253 add.w r2, r2, r3, lsr #1 - 152e0: 0992 lsrs r2, r2, #6 - 152e2: 3a3f subs r2, #63 ; 0x3f + 1539c: 4a43 ldr r2, [pc, #268] ; (154ac ) + 1539e: f880 e002 strb.w lr, [r0, #2] + 153a2: fba2 c203 umull ip, r2, r2, r3 + 153a6: 1a9b subs r3, r3, r2 + 153a8: eb02 0253 add.w r2, r2, r3, lsr #1 + 153ac: 0992 lsrs r2, r2, #6 + 153ae: 3a3f subs r2, #63 ; 0x3f pitch = map(t_pitch, 0, 127, -63, 64); - 152e4: 6042 str r2, [r0, #4] + 153b0: 6042 str r2, [r0, #4] switch(note){ - 152e6: 290b cmp r1, #11 - 152e8: d874 bhi.n 153d4 - 152ea: e8df f001 tbb [pc, r1] - 152ee: 211b .short 0x211b - 152f0: 39332d27 .word 0x39332d27 - 152f4: 514b453f .word 0x514b453f - 152f8: 0657 .short 0x0657 + 153b2: 290b cmp r1, #11 + 153b4: d874 bhi.n 154a0 + 153b6: e8df f001 tbb [pc, r1] + 153ba: 211b .short 0x211b + 153bc: 39332d27 .word 0x39332d27 + 153c0: 514b453f .word 0x514b453f + 153c4: 0657 .short 0x0657 case 11: strcpy(noteName, "G#"); break; - 152fa: 4b3a ldr r3, [pc, #232] ; (153e4 ) - 152fc: 881a ldrh r2, [r3, #0] - 152fe: 789b ldrb r3, [r3, #2] - 15300: 8102 strh r2, [r0, #8] - 15302: 7283 strb r3, [r0, #10] - 15304: 4b38 ldr r3, [pc, #224] ; (153e8 ) + 153c6: 4b3a ldr r3, [pc, #232] ; (154b0 ) + 153c8: 881a ldrh r2, [r3, #0] + 153ca: 789b ldrb r3, [r3, #2] + 153cc: 8102 strh r2, [r0, #8] + 153ce: 7283 strb r3, [r0, #10] + 153d0: 4b38 ldr r3, [pc, #224] ; (154b4 ) interval = value; - 15306: 22fa movs r2, #250 ; 0xfa + 153d2: 22fa movs r2, #250 ; 0xfa if(pitchRaw<62){ - 15308: f1be 0f3d cmp.w lr, #61 ; 0x3d - 1530c: 681b ldr r3, [r3, #0] - 1530e: 8182 strh r2, [r0, #12] + 153d4: f1be 0f3d cmp.w lr, #61 ; 0x3d + 153d8: 681b ldr r3, [r3, #0] + 153da: 8182 strh r2, [r0, #12] prevTime = (unsigned long) _BMCTiming::get(); - 15310: 6103 str r3, [r0, #16] - 15312: d849 bhi.n 153a8 + 153dc: 6103 str r3, [r0, #16] + 153de: d849 bhi.n 15474 if(pitchRaw < 42){ - 15314: f1be 0f29 cmp.w lr, #41 ; 0x29 - 15318: bf8c ite hi - 1531a: 2305 movhi r3, #5 - 1531c: 2307 movls r3, #7 - 1531e: 72c3 strb r3, [r0, #11] + 153e0: f1be 0f29 cmp.w lr, #41 ; 0x29 + 153e4: bf8c ite hi + 153e6: 2305 movhi r3, #5 + 153e8: 2307 movls r3, #7 + 153ea: 72c3 strb r3, [r0, #11] } - 15320: f85d fb04 ldr.w pc, [sp], #4 + 153ec: f85d fb04 ldr.w pc, [sp], #4 case 0: strcpy(noteName, "A "); break; - 15324: 4b31 ldr r3, [pc, #196] ; (153ec ) - 15326: 881a ldrh r2, [r3, #0] - 15328: 789b ldrb r3, [r3, #2] - 1532a: 8102 strh r2, [r0, #8] - 1532c: 7283 strb r3, [r0, #10] - 1532e: e7e9 b.n 15304 + 153f0: 4b31 ldr r3, [pc, #196] ; (154b8 ) + 153f2: 881a ldrh r2, [r3, #0] + 153f4: 789b ldrb r3, [r3, #2] + 153f6: 8102 strh r2, [r0, #8] + 153f8: 7283 strb r3, [r0, #10] + 153fa: e7e9 b.n 153d0 case 1: strcpy(noteName, "Bb"); break; - 15330: 4b2f ldr r3, [pc, #188] ; (153f0 ) - 15332: 881a ldrh r2, [r3, #0] - 15334: 789b ldrb r3, [r3, #2] - 15336: 8102 strh r2, [r0, #8] - 15338: 7283 strb r3, [r0, #10] - 1533a: e7e3 b.n 15304 + 153fc: 4b2f ldr r3, [pc, #188] ; (154bc ) + 153fe: 881a ldrh r2, [r3, #0] + 15400: 789b ldrb r3, [r3, #2] + 15402: 8102 strh r2, [r0, #8] + 15404: 7283 strb r3, [r0, #10] + 15406: e7e3 b.n 153d0 case 2: strcpy(noteName, "B "); break; - 1533c: 4b2d ldr r3, [pc, #180] ; (153f4 ) - 1533e: 881a ldrh r2, [r3, #0] - 15340: 789b ldrb r3, [r3, #2] - 15342: 8102 strh r2, [r0, #8] - 15344: 7283 strb r3, [r0, #10] - 15346: e7dd b.n 15304 + 15408: 4b2d ldr r3, [pc, #180] ; (154c0 ) + 1540a: 881a ldrh r2, [r3, #0] + 1540c: 789b ldrb r3, [r3, #2] + 1540e: 8102 strh r2, [r0, #8] + 15410: 7283 strb r3, [r0, #10] + 15412: e7dd b.n 153d0 case 3: strcpy(noteName, "C "); break; - 15348: 4b2b ldr r3, [pc, #172] ; (153f8 ) - 1534a: 881a ldrh r2, [r3, #0] - 1534c: 789b ldrb r3, [r3, #2] - 1534e: 8102 strh r2, [r0, #8] - 15350: 7283 strb r3, [r0, #10] - 15352: e7d7 b.n 15304 + 15414: 4b2b ldr r3, [pc, #172] ; (154c4 ) + 15416: 881a ldrh r2, [r3, #0] + 15418: 789b ldrb r3, [r3, #2] + 1541a: 8102 strh r2, [r0, #8] + 1541c: 7283 strb r3, [r0, #10] + 1541e: e7d7 b.n 153d0 case 4: strcpy(noteName, "C#"); break; - 15354: 4b29 ldr r3, [pc, #164] ; (153fc ) - 15356: 881a ldrh r2, [r3, #0] - 15358: 789b ldrb r3, [r3, #2] - 1535a: 8102 strh r2, [r0, #8] - 1535c: 7283 strb r3, [r0, #10] - 1535e: e7d1 b.n 15304 + 15420: 4b29 ldr r3, [pc, #164] ; (154c8 ) + 15422: 881a ldrh r2, [r3, #0] + 15424: 789b ldrb r3, [r3, #2] + 15426: 8102 strh r2, [r0, #8] + 15428: 7283 strb r3, [r0, #10] + 1542a: e7d1 b.n 153d0 case 5: strcpy(noteName, "D "); break; - 15360: 4b27 ldr r3, [pc, #156] ; (15400 ) - 15362: 881a ldrh r2, [r3, #0] - 15364: 789b ldrb r3, [r3, #2] - 15366: 8102 strh r2, [r0, #8] - 15368: 7283 strb r3, [r0, #10] - 1536a: e7cb b.n 15304 + 1542c: 4b27 ldr r3, [pc, #156] ; (154cc ) + 1542e: 881a ldrh r2, [r3, #0] + 15430: 789b ldrb r3, [r3, #2] + 15432: 8102 strh r2, [r0, #8] + 15434: 7283 strb r3, [r0, #10] + 15436: e7cb b.n 153d0 case 6: strcpy(noteName, "Eb"); break; - 1536c: 4b25 ldr r3, [pc, #148] ; (15404 ) - 1536e: 881a ldrh r2, [r3, #0] - 15370: 789b ldrb r3, [r3, #2] - 15372: 8102 strh r2, [r0, #8] - 15374: 7283 strb r3, [r0, #10] - 15376: e7c5 b.n 15304 + 15438: 4b25 ldr r3, [pc, #148] ; (154d0 ) + 1543a: 881a ldrh r2, [r3, #0] + 1543c: 789b ldrb r3, [r3, #2] + 1543e: 8102 strh r2, [r0, #8] + 15440: 7283 strb r3, [r0, #10] + 15442: e7c5 b.n 153d0 case 7: strcpy(noteName, "E "); break; - 15378: 4b23 ldr r3, [pc, #140] ; (15408 ) - 1537a: 881a ldrh r2, [r3, #0] - 1537c: 789b ldrb r3, [r3, #2] - 1537e: 8102 strh r2, [r0, #8] - 15380: 7283 strb r3, [r0, #10] - 15382: e7bf b.n 15304 + 15444: 4b23 ldr r3, [pc, #140] ; (154d4 ) + 15446: 881a ldrh r2, [r3, #0] + 15448: 789b ldrb r3, [r3, #2] + 1544a: 8102 strh r2, [r0, #8] + 1544c: 7283 strb r3, [r0, #10] + 1544e: e7bf b.n 153d0 case 8: strcpy(noteName, "F "); break; - 15384: 4b21 ldr r3, [pc, #132] ; (1540c ) - 15386: 881a ldrh r2, [r3, #0] - 15388: 789b ldrb r3, [r3, #2] - 1538a: 8102 strh r2, [r0, #8] - 1538c: 7283 strb r3, [r0, #10] - 1538e: e7b9 b.n 15304 + 15450: 4b21 ldr r3, [pc, #132] ; (154d8 ) + 15452: 881a ldrh r2, [r3, #0] + 15454: 789b ldrb r3, [r3, #2] + 15456: 8102 strh r2, [r0, #8] + 15458: 7283 strb r3, [r0, #10] + 1545a: e7b9 b.n 153d0 case 9: strcpy(noteName, "F#"); break; - 15390: 4b1f ldr r3, [pc, #124] ; (15410 ) - 15392: 881a ldrh r2, [r3, #0] - 15394: 789b ldrb r3, [r3, #2] - 15396: 8102 strh r2, [r0, #8] - 15398: 7283 strb r3, [r0, #10] - 1539a: e7b3 b.n 15304 + 1545c: 4b1f ldr r3, [pc, #124] ; (154dc ) + 1545e: 881a ldrh r2, [r3, #0] + 15460: 789b ldrb r3, [r3, #2] + 15462: 8102 strh r2, [r0, #8] + 15464: 7283 strb r3, [r0, #10] + 15466: e7b3 b.n 153d0 case 10: strcpy(noteName, "G "); break; - 1539c: 4b1d ldr r3, [pc, #116] ; (15414 ) - 1539e: 881a ldrh r2, [r3, #0] - 153a0: 789b ldrb r3, [r3, #2] - 153a2: 8102 strh r2, [r0, #8] - 153a4: 7283 strb r3, [r0, #10] - 153a6: e7ad b.n 15304 + 15468: 4b1d ldr r3, [pc, #116] ; (154e0 ) + 1546a: 881a ldrh r2, [r3, #0] + 1546c: 789b ldrb r3, [r3, #2] + 1546e: 8102 strh r2, [r0, #8] + 15470: 7283 strb r3, [r0, #10] + 15472: e7ad b.n 153d0 } else if(pitchRaw > 64){ - 153a8: f1be 0f40 cmp.w lr, #64 ; 0x40 - 153ac: d803 bhi.n 153b6 + 15474: f1be 0f40 cmp.w lr, #64 ; 0x40 + 15478: d803 bhi.n 15482 bitSet(flags, bit); - 153ae: 2301 movs r3, #1 - 153b0: 72c3 strb r3, [r0, #11] + 1547a: 2301 movs r3, #1 + 1547c: 72c3 strb r3, [r0, #11] } - 153b2: f85d fb04 ldr.w pc, [sp], #4 + 1547e: f85d fb04 ldr.w pc, [sp], #4 if(pitchRaw > 84){ - 153b6: f1be 0f54 cmp.w lr, #84 ; 0x54 - 153ba: d803 bhi.n 153c4 - 153bc: 2309 movs r3, #9 - 153be: 72c3 strb r3, [r0, #11] + 15482: f1be 0f54 cmp.w lr, #84 ; 0x54 + 15486: d803 bhi.n 15490 + 15488: 2309 movs r3, #9 + 1548a: 72c3 strb r3, [r0, #11] } - 153c0: f85d fb04 ldr.w pc, [sp], #4 + 1548c: f85d fb04 ldr.w pc, [sp], #4 if(pitchRaw > 105){ - 153c4: f1be 0f69 cmp.w lr, #105 ; 0x69 - 153c8: bf94 ite ls - 153ca: 2319 movls r3, #25 - 153cc: 2339 movhi r3, #57 ; 0x39 - 153ce: 72c3 strb r3, [r0, #11] + 15490: f1be 0f69 cmp.w lr, #105 ; 0x69 + 15494: bf94 ite ls + 15496: 2319 movls r3, #25 + 15498: 2339 movhi r3, #57 ; 0x39 + 1549a: 72c3 strb r3, [r0, #11] } - 153d0: f85d fb04 ldr.w pc, [sp], #4 + 1549c: f85d fb04 ldr.w pc, [sp], #4 default: strcpy(noteName, "??"); break; - 153d4: 4b10 ldr r3, [pc, #64] ; (15418 ) - 153d6: 881a ldrh r2, [r3, #0] - 153d8: 789b ldrb r3, [r3, #2] - 153da: 8102 strh r2, [r0, #8] - 153dc: 7283 strb r3, [r0, #10] - 153de: e791 b.n 15304 - 153e0: 02040811 .word 0x02040811 - 153e4: 20001948 .word 0x20001948 - 153e8: 2000bae8 .word 0x2000bae8 - 153ec: 2000191c .word 0x2000191c - 153f0: 20001920 .word 0x20001920 - 153f4: 20001924 .word 0x20001924 - 153f8: 20001928 .word 0x20001928 - 153fc: 2000192c .word 0x2000192c - 15400: 20001930 .word 0x20001930 - 15404: 20001934 .word 0x20001934 - 15408: 20001938 .word 0x20001938 - 1540c: 2000193c .word 0x2000193c - 15410: 20001940 .word 0x20001940 - 15414: 20001944 .word 0x20001944 - 15418: 2000194c .word 0x2000194c - -0001541c : + 154a0: 4b10 ldr r3, [pc, #64] ; (154e4 ) + 154a2: 881a ldrh r2, [r3, #0] + 154a4: 789b ldrb r3, [r3, #2] + 154a6: 8102 strh r2, [r0, #8] + 154a8: 7283 strb r3, [r0, #10] + 154aa: e791 b.n 153d0 + 154ac: 02040811 .word 0x02040811 + 154b0: 20001948 .word 0x20001948 + 154b4: 2000bb08 .word 0x2000bb08 + 154b8: 2000191c .word 0x2000191c + 154bc: 20001920 .word 0x20001920 + 154c0: 20001924 .word 0x20001924 + 154c4: 20001928 .word 0x20001928 + 154c8: 2000192c .word 0x2000192c + 154cc: 20001930 .word 0x20001930 + 154d0: 20001934 .word 0x20001934 + 154d4: 20001938 .word 0x20001938 + 154d8: 2000193c .word 0x2000193c + 154dc: 20001940 .word 0x20001940 + 154e0: 20001944 .word 0x20001944 + 154e4: 2000194c .word 0x2000194c + +000154e8 : } bool read(BMCMidiMessage& message, bool ignoreRealTime){ - 1541c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 15420: 4604 mov r4, r0 - 15422: 460d mov r5, r1 - 15424: 4617 mov r7, r2 + 154e8: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 154ec: 4604 mov r4, r0 + 154ee: 460d mov r5, r1 + 154f0: 4617 mov r7, r2 UsbHost.Task(); - 15426: f012 fb85 bl 27b34 + 154f2: f012 fb95 bl 27c20 if((Port) != globals.hostConnected()){ - 1542a: f8d4 2704 ldr.w r2, [r4, #1796] ; 0x704 + 154f6: f8d4 2704 ldr.w r2, [r4, #1796] ; 0x704 Device_t *dev = *(Device_t * volatile *)&device; - 1542e: 68a3 ldr r3, [r4, #8] + 154fa: 68a3 ldr r3, [r4, #8] return bitRead(flags, bit); - 15430: 6dd0 ldr r0, [r2, #92] ; 0x5c - 15432: 3b00 subs r3, #0 - 15434: f3c0 01c0 ubfx r1, r0, #3, #1 - 15438: bf18 it ne - 1543a: 2301 movne r3, #1 - 1543c: 428b cmp r3, r1 - 1543e: d10b bne.n 15458 - 15440: 68a3 ldr r3, [r4, #8] + 154fc: 6dd0 ldr r0, [r2, #92] ; 0x5c + 154fe: 3b00 subs r3, #0 + 15500: f3c0 01c0 ubfx r1, r0, #3, #1 + 15504: bf18 it ne + 15506: 2301 movne r3, #1 + 15508: 428b cmp r3, r1 + 1550a: d10b bne.n 15524 + 1550c: 68a3 ldr r3, [r4, #8] globals.setHostConnected((Port==true)); if(callback.hostConnection){ callback.hostConnection(globals.hostConnected()); } } if(Port && Port.read()){ - 15442: b12b cbz r3, 15450 - 15444: 2100 movs r1, #0 - 15446: 4620 mov r0, r4 - 15448: f013 f9d0 bl 287ec - 1544c: 4606 mov r6, r0 - 1544e: b9a8 cbnz r0, 1547c + 1550e: b12b cbz r3, 1551c + 15510: 2100 movs r1, #0 + 15512: 4620 mov r0, r4 + 15514: f013 f9e0 bl 288d8 + 15518: 4606 mov r6, r0 + 1551a: b9a8 cbnz r0, 15548 } else if(message.isChannelStatus()){ message.setChannel(Port.getChannel()); } return true; } return false; - 15450: 2600 movs r6, #0 + 1551c: 2600 movs r6, #0 } - 15452: 4630 mov r0, r6 - 15454: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 15458: 68a3 ldr r3, [r4, #8] + 1551e: 4630 mov r0, r6 + 15520: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 15524: 68a3 ldr r3, [r4, #8] bitWrite(flags, bit, value); - 1545a: b163 cbz r3, 15476 - 1545c: f040 0008 orr.w r0, r0, #8 + 15526: b163 cbz r3, 15542 + 15528: f040 0008 orr.w r0, r0, #8 if(callback.hostConnection){ - 15460: f8d4 3700 ldr.w r3, [r4, #1792] ; 0x700 - 15464: 65d0 str r0, [r2, #92] ; 0x5c - 15466: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 1546a: 2b00 cmp r3, #0 - 1546c: d0e8 beq.n 15440 + 1552c: f8d4 3700 ldr.w r3, [r4, #1792] ; 0x700 + 15530: 65d0 str r0, [r2, #92] ; 0x5c + 15532: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 15536: 2b00 cmp r3, #0 + 15538: d0e8 beq.n 1550c callback.hostConnection(globals.hostConnected()); - 1546e: f3c0 00c0 ubfx r0, r0, #3, #1 - 15472: 4798 blx r3 - 15474: e7e4 b.n 15440 - 15476: f020 0008 bic.w r0, r0, #8 + 1553a: f3c0 00c0 ubfx r0, r0, #3, #1 + 1553e: 4798 blx r3 + 15540: e7e4 b.n 1550c + 15542: f020 0008 bic.w r0, r0, #8 } - 1547a: e7f1 b.n 15460 + 15546: e7f1 b.n 1552c memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 1547c: f105 0905 add.w r9, r5, #5 - 15480: 2100 movs r1, #0 - 15482: 22fe movs r2, #254 ; 0xfe - 15484: 4648 mov r0, r9 + 15548: f105 0905 add.w r9, r5, #5 + 1554c: 2100 movs r1, #0 + 1554e: 22fe movs r2, #254 ; 0xfe + 15550: 4648 mov r0, r9 void setStatus(uint8_t t_status) { status = t_status; } - 15486: 4688 mov r8, r1 + 15552: 4688 mov r8, r1 memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 15488: f019 f800 bl 2e48c + 15554: f019 f80e bl 2e574 bitWrite(ports, sourcePortBit, 1); - 1548c: 2320 movs r3, #32 + 15558: 2320 movs r3, #32 void setStatus(uint8_t t_status) { status = t_status; } - 1548e: f885 8001 strb.w r8, [r5, #1] + 1555a: f885 8001 strb.w r8, [r5, #1] void setChannel(uint8_t t_channel) { channel = t_channel; } - 15492: f885 8002 strb.w r8, [r5, #2] + 1555e: f885 8002 strb.w r8, [r5, #2] void setData1(uint8_t t_data1) { data1 = t_data1; } - 15496: f885 8003 strb.w r8, [r5, #3] + 15562: f885 8003 strb.w r8, [r5, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1549a: f885 8004 strb.w r8, [r5, #4] + 15566: f885 8004 strb.w r8, [r5, #4] bitWrite(ports, sourcePortBit, 1); - 1549e: 702b strb r3, [r5, #0] + 1556a: 702b strb r3, [r5, #0] return msg_type; - 154a0: f894 3056 ldrb.w r3, [r4, #86] ; 0x56 + 1556c: f894 3056 ldrb.w r3, [r4, #86] ; 0x56 switch(getStatus()){ - 154a4: f103 0208 add.w r2, r3, #8 + 15570: f103 0208 add.w r2, r3, #8 void setStatus(uint8_t t_status) { status = t_status; } - 154a8: 706b strb r3, [r5, #1] + 15574: 706b strb r3, [r5, #1] switch(getStatus()){ - 154aa: b2d2 uxtb r2, r2 - 154ac: 2a07 cmp r2, #7 - 154ae: d810 bhi.n 154d2 - 154b0: 23dd movs r3, #221 ; 0xdd - 154b2: 40d3 lsrs r3, r2 - 154b4: 07db lsls r3, r3, #31 - 154b6: d53e bpl.n 15536 + 15576: b2d2 uxtb r2, r2 + 15578: 2a07 cmp r2, #7 + 1557a: d810 bhi.n 1559e + 1557c: 23dd movs r3, #221 ; 0xdd + 1557e: 40d3 lsrs r3, r2 + 15580: 07db lsls r3, r3, #31 + 15582: d53e bpl.n 15602 if(ignoreRealTime){ - 154b8: 2f00 cmp r7, #0 - 154ba: d0ca beq.n 15452 + 15584: 2f00 cmp r7, #0 + 15586: d0ca beq.n 1551e memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 154bc: 22fe movs r2, #254 ; 0xfe - 154be: 4641 mov r1, r8 - 154c0: 4648 mov r0, r9 + 15588: 22fe movs r2, #254 ; 0xfe + 1558a: 4641 mov r1, r8 + 1558c: 4648 mov r0, r9 return false; - 154c2: 4646 mov r6, r8 - 154c4: f018 ffe2 bl 2e48c + 1558e: 4646 mov r6, r8 + 15590: f018 fff0 bl 2e574 bitWrite(ports, sourcePortBit, 1); - 154c8: 2301 movs r3, #1 + 15594: 2301 movs r3, #1 void setStatus(uint8_t t_status) { status = t_status; } - 154ca: f885 8001 strb.w r8, [r5, #1] + 15596: f885 8001 strb.w r8, [r5, #1] bitWrite(ports, sourcePortBit, 1); - 154ce: 702b strb r3, [r5, #0] + 1559a: 702b strb r3, [r5, #0] } - 154d0: e7bf b.n 15452 + 1559c: e7bf b.n 1551e return msg_data1; - 154d2: f894 2057 ldrb.w r2, [r4, #87] ; 0x57 + 1559e: f894 2057 ldrb.w r2, [r4, #87] ; 0x57 return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 154d6: 2bef cmp r3, #239 ; 0xef + 155a2: 2bef cmp r3, #239 ; 0xef void setData1(uint8_t t_data1) { data1 = t_data1; } - 154d8: 70ea strb r2, [r5, #3] + 155a4: 70ea strb r2, [r5, #3] return msg_data2; - 154da: f894 2058 ldrb.w r2, [r4, #88] ; 0x58 + 155a6: f894 2058 ldrb.w r2, [r4, #88] ; 0x58 void setData2(uint8_t t_data2) { data2 = t_data2; } - 154de: 712a strb r2, [r5, #4] + 155aa: 712a strb r2, [r5, #4] return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 154e0: d80c bhi.n 154fc + 155ac: d80c bhi.n 155c8 switch(getStatus()){ - 154e2: 2bb0 cmp r3, #176 ; 0xb0 - 154e4: d006 beq.n 154f4 - 154e6: d81c bhi.n 15522 - 154e8: 2ba0 cmp r3, #160 ; 0xa0 - 154ea: d003 beq.n 154f4 - 154ec: f003 03ef and.w r3, r3, #239 ; 0xef - 154f0: 2b80 cmp r3, #128 ; 0x80 - 154f2: d1ae bne.n 15452 + 155ae: 2bb0 cmp r3, #176 ; 0xb0 + 155b0: d006 beq.n 155c0 + 155b2: d81c bhi.n 155ee + 155b4: 2ba0 cmp r3, #160 ; 0xa0 + 155b6: d003 beq.n 155c0 + 155b8: f003 03ef and.w r3, r3, #239 ; 0xef + 155bc: 2b80 cmp r3, #128 ; 0x80 + 155be: d1ae bne.n 1551e return msg_channel; - 154f4: f894 3055 ldrb.w r3, [r4, #85] ; 0x55 + 155c0: f894 3055 ldrb.w r3, [r4, #85] ; 0x55 void setChannel(uint8_t t_channel) { channel = t_channel; } - 154f8: 70ab strb r3, [r5, #2] - 154fa: e7aa b.n 15452 + 155c4: 70ab strb r3, [r5, #2] + 155c6: e7aa b.n 1551e if(message.isSystemExclusive()){ - 154fc: 2bf0 cmp r3, #240 ; 0xf0 - 154fe: d1a8 bne.n 15452 + 155c8: 2bf0 cmp r3, #240 ; 0xf0 + 155ca: d1a8 bne.n 1551e void setData1(uint8_t t_data1) { data1 = t_data1; } - 15500: f885 8003 strb.w r8, [r5, #3] + 155cc: f885 8003 strb.w r8, [r5, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 15504: f885 8004 strb.w r8, [r5, #4] + 155d0: f885 8004 strb.w r8, [r5, #4] if(Port.getSysExArrayLength() <= BMC_MIDI_SYSEX_SIZE){ - 15508: f8b4 7057 ldrh.w r7, [r4, #87] ; 0x57 - 1550c: 2ffe cmp r7, #254 ; 0xfe - 1550e: d80f bhi.n 15530 + 155d4: f8b4 7057 ldrh.w r7, [r4, #87] ; 0x57 + 155d8: 2ffe cmp r7, #254 ; 0xfe + 155da: d80f bhi.n 155fc if(length < BMC_MIDI_SYSEX_SIZE){ - 15510: d09f beq.n 15452 + 155dc: d09f beq.n 1551e memcpy(sysex, data, length); - 15512: f104 0159 add.w r1, r4, #89 ; 0x59 - 15516: 4648 mov r0, r9 - 15518: 463a mov r2, r7 - 1551a: f015 f8f5 bl 2a708 + 155de: f104 0159 add.w r1, r4, #89 ; 0x59 + 155e2: 4648 mov r0, r9 + 155e4: 463a mov r2, r7 + 155e6: f015 f903 bl 2a7f0 setData1(value & 0xFF); - 1551e: 70ef strb r7, [r5, #3] + 155ea: 70ef strb r7, [r5, #3] } - 15520: e797 b.n 15452 + 155ec: e797 b.n 1551e switch(getStatus()){ - 15522: 2be0 cmp r3, #224 ; 0xe0 - 15524: d0e6 beq.n 154f4 - 15526: f003 03ef and.w r3, r3, #239 ; 0xef - 1552a: 2bc0 cmp r3, #192 ; 0xc0 - 1552c: d191 bne.n 15452 - 1552e: e7e1 b.n 154f4 + 155ee: 2be0 cmp r3, #224 ; 0xe0 + 155f0: d0e6 beq.n 155c0 + 155f2: f003 03ef and.w r3, r3, #239 ; 0xef + 155f6: 2bc0 cmp r3, #192 ; 0xc0 + 155f8: d191 bne.n 1551e + 155fa: e7e1 b.n 155c0 void setStatus(uint8_t t_status) { status = t_status; } - 15530: f885 8001 strb.w r8, [r5, #1] - 15534: e78d b.n 15452 + 155fc: f885 8001 strb.w r8, [r5, #1] + 15600: e78d b.n 1551e return msg_data1; - 15536: f894 3057 ldrb.w r3, [r4, #87] ; 0x57 + 15602: f894 3057 ldrb.w r3, [r4, #87] ; 0x57 void setData1(uint8_t t_data1) { data1 = t_data1; } - 1553a: 70eb strb r3, [r5, #3] + 15606: 70eb strb r3, [r5, #3] return msg_data2; - 1553c: f894 3058 ldrb.w r3, [r4, #88] ; 0x58 + 15608: f894 3058 ldrb.w r3, [r4, #88] ; 0x58 void setData2(uint8_t t_data2) { data2 = t_data2; } - 15540: 712b strb r3, [r5, #4] + 1560c: 712b strb r3, [r5, #4] return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 15542: e786 b.n 15452 + 1560e: e786 b.n 1551e -00015544 : +00015610 : } setLocalMidiData(message.getEvent()); } // *Routing* void routing(BMCMidiMessage& message){ - 15544: b5f0 push {r4, r5, r6, r7, lr} - 15546: 784b ldrb r3, [r1, #1] - 15548: 460c mov r4, r1 - 1554a: 780a ldrb r2, [r1, #0] - 1554c: b0c3 sub sp, #268 ; 0x10c - 1554e: 7889 ldrb r1, [r1, #2] + 15610: b5f0 push {r4, r5, r6, r7, lr} + 15612: 784b ldrb r3, [r1, #1] + 15614: 460c mov r4, r1 + 15616: 780a ldrb r2, [r1, #0] + 15618: b0c3 sub sp, #268 ; 0x10c + 1561a: 7889 ldrb r1, [r1, #2] #endif } } uint8_t incoming(BMCMidiMessage m){ if(m.getStatus()==BMC_NONE){ - 15550: 2b00 cmp r3, #0 - 15552: d034 beq.n 155be + 1561c: b1eb cbz r3, 1565a return BMC_NONE; } BMCRoutingItem item; switch(m.getSource()){ - 15554: 3a01 subs r2, #1 - 15556: 4605 mov r5, r0 - 15558: 2a1f cmp r2, #31 - 1555a: d830 bhi.n 155be - 1555c: e8df f002 tbb [pc, r2] - 15560: 542f4b5d .word 0x542f4b5d - 15564: 2f2f2f2f .word 0x2f2f2f2f - 15568: 2f2f2f2f .word 0x2f2f2f2f - 1556c: 2f2f2f2f .word 0x2f2f2f2f - 15570: 2f2f2f2f .word 0x2f2f2f2f - 15574: 2f2f2f2f .word 0x2f2f2f2f - 15578: 2f2f2f2f .word 0x2f2f2f2f - 1557c: 312f2f2f .word 0x312f2f2f + 1561e: 2a20 cmp r2, #32 + 15620: 4605 mov r5, r0 + 15622: d062 beq.n 156ea + 15624: d81b bhi.n 1565e + 15626: 2a01 cmp r2, #1 + 15628: d032 beq.n 15690 + 1562a: 2a02 cmp r2, #2 + 1562c: d115 bne.n 1565a + case BMC_USB: item = routing.usb; break; + +#ifdef BMC_MIDI_SERIAL_A_ENABLED + case BMC_SERIAL_A: item = routing.serialA; break; + 1562e: f500 5680 add.w r6, r0, #4096 ; 0x1000 + 15632: f896 22a4 ldrb.w r2, [r6, #676] ; 0x2a4 + 15636: f896 02a5 ldrb.w r0, [r6, #677] ; 0x2a5 + 1563a: f896 62a3 ldrb.w r6, [r6, #675] ; 0x2a3 +#endif + default: + return BMC_NONE; + } + + if(item.hasDestination()){ + 1563e: b166 cbz r6, 1565a switch(getStatus()){ - 15580: 2bf3 cmp r3, #243 ; 0xf3 - 15582: d96a bls.n 1565a - 15584: 2bf6 cmp r3, #246 ; 0xf6 - 15586: d15c bne.n 15642 + 15640: 2bb0 cmp r3, #176 ; 0xb0 + 15642: d01f beq.n 15684 + 15644: d918 bls.n 15678 + 15646: 2be0 cmp r3, #224 ; 0xe0 + 15648: d01c beq.n 15684 + 1564a: f003 07ef and.w r7, r3, #239 ; 0xef + 1564e: 2fc0 cmp r7, #192 ; 0xc0 + 15650: d018 beq.n 15684 + // 2 - system common + // 3 - real time if(m.isVoiceStatus() && bitRead(item.filters, 0)){ // allow voice messages if channel is OMNI (0) or matches return (item.channel==0 || item.channel==m.getChannel()); } else if(m.isSystemExclusiveStatus() && bitRead(item.filters, 1)){ - return true; // allow system exclusive - } else if(m.isSystemCommonStatus() && bitRead(item.filters, 2)){ - 15588: 0753 lsls r3, r2, #29 - 1558a: d518 bpl.n 155be - uint8_t destinations = midiRouting.incoming(message); - if(destinations!=BMC_NONE){ - if(callback.midiPreRoute){ - 1558c: f8d5 3104 ldr.w r3, [r5, #260] ; 0x104 - 15590: 6d1b ldr r3, [r3, #80] ; 0x50 - 15592: b11b cbz r3, 1559c - // if the callback returns false we block the routing - if(!callback.midiPreRoute(message, destinations)){ - 15594: 4631 mov r1, r6 - 15596: 4620 mov r0, r4 - 15598: 4798 blx r3 - 1559a: b180 cbz r0, 155be + 15652: 2bf0 cmp r3, #240 ; 0xf0 + 15654: d127 bne.n 156a6 + 15656: 0790 lsls r0, r2, #30 + 15658: d42b bmi.n 156b2 return; } } send(destinations, message); - 1559c: 2300 movs r3, #0 - 1559e: 6827 ldr r7, [r4, #0] - 155a0: f104 0108 add.w r1, r4, #8 - 155a4: 22fb movs r2, #251 ; 0xfb - 155a6: 933f str r3, [sp, #252] ; 0xfc - 155a8: 4668 mov r0, sp - 155aa: 6863 ldr r3, [r4, #4] - 155ac: 9341 str r3, [sp, #260] ; 0x104 - 155ae: f015 f8ab bl 2a708 - 155b2: 463a mov r2, r7 - 155b4: 9b41 ldr r3, [sp, #260] ; 0x104 - 155b6: 4631 mov r1, r6 - 155b8: 4628 mov r0, r5 - 155ba: f00f fbe1 bl 24d80 } } - 155be: b043 add sp, #268 ; 0x10c - 155c0: bdf0 pop {r4, r5, r6, r7, pc} - case BMC_HOST: item = routing.host; break; - 155c2: f505 5680 add.w r6, r5, #4096 ; 0x1000 - 155c6: f896 2290 ldrb.w r2, [r6, #656] ; 0x290 - 155ca: f896 0291 ldrb.w r0, [r6, #657] ; 0x291 - 155ce: f896 628f ldrb.w r6, [r6, #655] ; 0x28f + 1565a: b043 add sp, #268 ; 0x10c + 1565c: bdf0 pop {r4, r5, r6, r7, pc} + switch(m.getSource()){ + 1565e: 2a40 cmp r2, #64 ; 0x40 + 15660: d1fb bne.n 1565a + case BMC_BLE: item = routing.ble; break; + 15662: f500 5680 add.w r6, r0, #4096 ; 0x1000 + 15666: f896 22b3 ldrb.w r2, [r6, #691] ; 0x2b3 + 1566a: f896 02b4 ldrb.w r0, [r6, #692] ; 0x2b4 + 1566e: f896 62b2 ldrb.w r6, [r6, #690] ; 0x2b2 if(item.hasDestination()){ - 155d2: 2e00 cmp r6, #0 - 155d4: d0f3 beq.n 155be - switch(getStatus()){ - 155d6: 2bb0 cmp r3, #176 ; 0xb0 - 155d8: d006 beq.n 155e8 - 155da: d827 bhi.n 1562c - 155dc: 2ba0 cmp r3, #160 ; 0xa0 - 155de: d003 beq.n 155e8 - 155e0: f003 07ef and.w r7, r3, #239 ; 0xef - 155e4: 2f80 cmp r7, #128 ; 0x80 - 155e6: d1ea bne.n 155be + 15672: 2e00 cmp r6, #0 + 15674: d0f1 beq.n 1565a + 15676: e7e3 b.n 15640 + 15678: 2ba0 cmp r3, #160 ; 0xa0 + 1567a: d003 beq.n 15684 + 1567c: f003 07ef and.w r7, r3, #239 ; 0xef + 15680: 2f80 cmp r7, #128 ; 0x80 + 15682: d1ea bne.n 1565a if(m.isVoiceStatus() && bitRead(item.filters, 0)){ - 155e8: 07d7 lsls r7, r2, #31 - 155ea: d525 bpl.n 15638 + 15684: 07d7 lsls r7, r2, #31 + 15686: d5e4 bpl.n 15652 return (item.channel==0 || item.channel==m.getChannel()); - 155ec: 2800 cmp r0, #0 - 155ee: d0cd beq.n 1558c - 155f0: 4288 cmp r0, r1 - 155f2: d1e4 bne.n 155be - 155f4: e7ca b.n 1558c - case BMC_SERIAL_A: item = routing.serialA; break; - 155f6: f505 5680 add.w r6, r5, #4096 ; 0x1000 - 155fa: f896 2284 ldrb.w r2, [r6, #644] ; 0x284 - 155fe: f896 0285 ldrb.w r0, [r6, #645] ; 0x285 - 15602: f896 6283 ldrb.w r6, [r6, #643] ; 0x283 - 15606: e7e4 b.n 155d2 - case BMC_SERIAL_B: item = routing.serialB; break; - 15608: f505 5680 add.w r6, r5, #4096 ; 0x1000 - 1560c: f896 2287 ldrb.w r2, [r6, #647] ; 0x287 - 15610: f896 0288 ldrb.w r0, [r6, #648] ; 0x288 - 15614: f896 6286 ldrb.w r6, [r6, #646] ; 0x286 - 15618: e7db b.n 155d2 + 15688: b198 cbz r0, 156b2 + 1568a: 4288 cmp r0, r1 + 1568c: d1e5 bne.n 1565a + 1568e: e010 b.n 156b2 case BMC_USB: item = routing.usb; break; - 1561a: f505 5680 add.w r6, r5, #4096 ; 0x1000 - 1561e: f896 2281 ldrb.w r2, [r6, #641] ; 0x281 - 15622: f896 0282 ldrb.w r0, [r6, #642] ; 0x282 - 15626: f896 6280 ldrb.w r6, [r6, #640] ; 0x280 - 1562a: e7d2 b.n 155d2 - 1562c: 2be0 cmp r3, #224 ; 0xe0 - 1562e: d0db beq.n 155e8 - 15630: f003 07ef and.w r7, r3, #239 ; 0xef - 15634: 2fc0 cmp r7, #192 ; 0xc0 - 15636: d0d7 beq.n 155e8 - } else if(m.isSystemExclusiveStatus() && bitRead(item.filters, 1)){ - 15638: 2bf0 cmp r3, #240 ; 0xf0 - 1563a: d1a1 bne.n 15580 - 1563c: 0790 lsls r0, r2, #30 - 1563e: d5be bpl.n 155be - 15640: e7a4 b.n 1558c + 15690: f500 5680 add.w r6, r0, #4096 ; 0x1000 + 15694: f896 22a1 ldrb.w r2, [r6, #673] ; 0x2a1 + 15698: f896 02a2 ldrb.w r0, [r6, #674] ; 0x2a2 + 1569c: f896 62a0 ldrb.w r6, [r6, #672] ; 0x2a0 + if(item.hasDestination()){ + 156a0: 2e00 cmp r6, #0 + 156a2: d0da beq.n 1565a + 156a4: e7cc b.n 15640 + switch(getStatus()){ + 156a6: 2bf3 cmp r3, #243 ; 0xf3 + 156a8: d936 bls.n 15718 + 156aa: 2bf6 cmp r3, #246 ; 0xf6 + 156ac: d128 bne.n 15700 + return true; // allow system exclusive + } else if(m.isSystemCommonStatus() && bitRead(item.filters, 2)){ + 156ae: 0753 lsls r3, r2, #29 + 156b0: d5d3 bpl.n 1565a + if(callback.midiPreRoute){ + 156b2: f8d5 3104 ldr.w r3, [r5, #260] ; 0x104 + 156b6: 6d1b ldr r3, [r3, #80] ; 0x50 + 156b8: b123 cbz r3, 156c4 + if(!callback.midiPreRoute(message, destinations)){ + 156ba: 4631 mov r1, r6 + 156bc: 4620 mov r0, r4 + 156be: 4798 blx r3 + 156c0: 2800 cmp r0, #0 + 156c2: d0ca beq.n 1565a + send(destinations, message); + 156c4: 2300 movs r3, #0 + 156c6: 6827 ldr r7, [r4, #0] + 156c8: f104 0108 add.w r1, r4, #8 + 156cc: 4668 mov r0, sp + 156ce: 933f str r3, [sp, #252] ; 0xfc + 156d0: 22fb movs r2, #251 ; 0xfb + 156d2: 6863 ldr r3, [r4, #4] + 156d4: 9341 str r3, [sp, #260] ; 0x104 + 156d6: f015 f88b bl 2a7f0 + 156da: 463a mov r2, r7 + 156dc: 9b41 ldr r3, [sp, #260] ; 0x104 + 156de: 4631 mov r1, r6 + 156e0: 4628 mov r0, r5 + 156e2: f00f fbc3 bl 24e6c + } + 156e6: b043 add sp, #268 ; 0x10c + 156e8: bdf0 pop {r4, r5, r6, r7, pc} + case BMC_HOST: item = routing.host; break; + 156ea: f500 5680 add.w r6, r0, #4096 ; 0x1000 + 156ee: f896 22b0 ldrb.w r2, [r6, #688] ; 0x2b0 + 156f2: f896 02b1 ldrb.w r0, [r6, #689] ; 0x2b1 + 156f6: f896 62af ldrb.w r6, [r6, #687] ; 0x2af + if(item.hasDestination()){ + 156fa: 2e00 cmp r6, #0 + 156fc: d0ad beq.n 1565a + 156fe: e79f b.n 15640 switch(getStatus()){ - 15642: 3308 adds r3, #8 - 15644: b2db uxtb r3, r3 - 15646: 2b07 cmp r3, #7 - 15648: d8b9 bhi.n 155be - 1564a: 21dd movs r1, #221 ; 0xdd - 1564c: fa21 f303 lsr.w r3, r1, r3 - 15650: 07d9 lsls r1, r3, #31 - 15652: d5b4 bpl.n 155be + 15700: 3308 adds r3, #8 + 15702: b2db uxtb r3, r3 + 15704: 2b07 cmp r3, #7 + 15706: d8a8 bhi.n 1565a + 15708: 21dd movs r1, #221 ; 0xdd + 1570a: fa21 f303 lsr.w r3, r1, r3 + 1570e: 07d9 lsls r1, r3, #31 + 15710: d5a3 bpl.n 1565a return true; // allow system common } else if(m.isSystemRealTimeStatus() && bitRead(item.filters, 3)){ - 15654: 0712 lsls r2, r2, #28 - 15656: d5b2 bpl.n 155be - 15658: e798 b.n 1558c + 15712: 0712 lsls r2, r2, #28 + 15714: d5a1 bpl.n 1565a + 15716: e7cc b.n 156b2 switch(getStatus()){ - 1565a: 2bf0 cmp r3, #240 ; 0xf0 - 1565c: d894 bhi.n 15588 - 1565e: e7ae b.n 155be + 15718: 2bf0 cmp r3, #240 ; 0xf0 + 1571a: d8c8 bhi.n 156ae + 1571c: e79d b.n 1565a + 1571e: bf00 nop -00015660 : +00015720 : bool read(bool incoming=false, bool isStartOrContinue=false){ - 15660: b5f8 push {r3, r4, r5, r6, r7, lr} - 15662: 4604 mov r4, r0 - 15664: 460d mov r5, r1 - 15666: 4616 mov r6, r2 + 15720: b5f8 push {r3, r4, r5, r6, r7, lr} + 15722: 4604 mov r4, r0 + 15724: 460d mov r5, r1 + 15726: 4616 mov r6, r2 mms = micros(); - 15668: f014 ff84 bl 2a574 + 15728: f014 ff98 bl 2a65c return (prevTime>0); - 1566c: 6ba3 ldr r3, [r4, #56] ; 0x38 - 1566e: 6320 str r0, [r4, #48] ; 0x30 + 1572c: 6ba3 ldr r3, [r4, #56] ; 0x38 + 1572e: 6320 str r0, [r4, #48] ; 0x30 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 15670: b133 cbz r3, 15680 - 15672: 4a9d ldr r2, [pc, #628] ; (158e8 ) - 15674: 6812 ldr r2, [r2, #0] - 15676: 1ad3 subs r3, r2, r3 - 15678: 8ea2 ldrh r2, [r4, #52] ; 0x34 - 1567a: 4293 cmp r3, r2 - 1567c: f080 808a bcs.w 15794 + 15730: b133 cbz r3, 15740 + 15732: 4a9d ldr r2, [pc, #628] ; (159a8 ) + 15734: 6812 ldr r2, [r2, #0] + 15736: 1ad3 subs r3, r2, r3 + 15738: 8ea2 ldrh r2, [r4, #52] ; 0x34 + 1573a: 4293 cmp r3, r2 + 1573c: f080 808a bcs.w 15854 return bitRead(flags, bit); - 15680: 7d23 ldrb r3, [r4, #20] + 15740: 7d23 ldrb r3, [r4, #20] if(!isMaster() && isStartOrContinue){ - 15682: f013 0701 ands.w r7, r3, #1 - 15686: d12c bne.n 156e2 - 15688: 2e00 cmp r6, #0 - 1568a: d17f bne.n 1578c + 15742: f013 0701 ands.w r7, r3, #1 + 15746: d12c bne.n 157a2 + 15748: 2e00 cmp r6, #0 + 1574a: d17f bne.n 1584c } else if(incoming && midi.isIncomingClockPort()){ - 1568c: 2d00 cmp r5, #0 - 1568e: d034 beq.n 156fa - 15690: 6822 ldr r2, [r4, #0] + 1574c: 2d00 cmp r5, #0 + 1574e: d034 beq.n 157ba + 15750: 6822 ldr r2, [r4, #0] return BMC_MATCH_PORT(message.getSource(),slaveClockPort); - 15692: 7811 ldrb r1, [r2, #0] - 15694: f892 292e ldrb.w r2, [r2, #2350] ; 0x92e - 15698: 4211 tst r1, r2 - 1569a: d02e beq.n 156fa + 15752: 7811 ldrb r1, [r2, #0] + 15754: f892 292e ldrb.w r2, [r2, #2350] ; 0x92e + 15758: 4211 tst r1, r2 + 1575a: d02e beq.n 157ba interval = value; - 1569c: f44f 62fa mov.w r2, #2000 ; 0x7d0 - 156a0: 4e91 ldr r6, [pc, #580] ; (158e8 ) - 156a2: f8a4 204c strh.w r2, [r4, #76] ; 0x4c + 1575c: f44f 62fa mov.w r2, #2000 ; 0x7d0 + 15760: 4e91 ldr r6, [pc, #580] ; (159a8 ) + 15762: f8a4 204c strh.w r2, [r4, #76] ; 0x4c bitSet(flags, bit); - 156a6: f043 0208 orr.w r2, r3, #8 - 156aa: 7522 strb r2, [r4, #20] - 156ac: 6832 ldr r2, [r6, #0] + 15766: f043 0208 orr.w r2, r3, #8 + 1576a: 7522 strb r2, [r4, #20] + 1576c: 6832 ldr r2, [r6, #0] prevTime = (unsigned long) _BMCTiming::get(); - 156ae: 6522 str r2, [r4, #80] ; 0x50 + 1576e: 6522 str r2, [r4, #80] ; 0x50 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 156b0: b12a cbz r2, 156be - 156b2: 6831 ldr r1, [r6, #0] - 156b4: 1a8a subs r2, r1, r2 - 156b6: f5b2 6ffa cmp.w r2, #2000 ; 0x7d0 - 156ba: f080 80d8 bcs.w 1586e + 15770: b12a cbz r2, 1577e + 15772: 6831 ldr r1, [r6, #0] + 15774: 1a8a subs r2, r1, r2 + 15776: f5b2 6ffa cmp.w r2, #2000 ; 0x7d0 + 1577a: f080 80d8 bcs.w 1592e ticks = 0; - 156be: 2300 movs r3, #0 - 156c0: 7123 strb r3, [r4, #4] + 1577e: 2300 movs r3, #0 + 15780: 7123 strb r3, [r4, #4] if(ticks==0){ - 156c2: f894 303c ldrb.w r3, [r4, #60] ; 0x3c - 156c6: 2b00 cmp r3, #0 - 156c8: f000 80fd beq.w 158c6 + 15782: f894 303c ldrb.w r3, [r4, #60] ; 0x3c + 15786: 2b00 cmp r3, #0 + 15788: f000 80fd beq.w 15986 bitWrite(flags, bit, value); - 156cc: 2b0c cmp r3, #12 - 156ce: 7fa2 ldrb r2, [r4, #30] - 156d0: f040 808b bne.w 157ea - 156d4: f042 0201 orr.w r2, r2, #1 - 156d8: 77a2 strb r2, [r4, #30] + 1578c: 2b0c cmp r3, #12 + 1578e: 7fa2 ldrb r2, [r4, #30] + 15790: f040 808b bne.w 158aa + 15794: f042 0201 orr.w r2, r2, #1 + 15798: 77a2 strb r2, [r4, #30] ticks++; - 156da: 3301 adds r3, #1 - 156dc: f884 303c strb.w r3, [r4, #60] ; 0x3c + 1579a: 3301 adds r3, #1 + 1579c: f884 303c strb.w r3, [r4, #60] ; 0x3c return isQuarterNote; - 156e0: e00c b.n 156fc + 157a0: e00c b.n 157bc bitSet(flags, bit); - 156e2: f043 0108 orr.w r1, r3, #8 + 157a2: f043 0108 orr.w r1, r3, #8 return (prevTime>0); - 156e6: 6ca2 ldr r2, [r4, #72] ; 0x48 - 156e8: 7521 strb r1, [r4, #20] + 157a6: 6ca2 ldr r2, [r4, #72] ; 0x48 + 157a8: 7521 strb r1, [r4, #20] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 156ea: b94a cbnz r2, 15700 + 157aa: b94a cbnz r2, 157c0 operator unsigned long () const { return micros() - us; } - 156ec: f014 ff42 bl 2a574 - 156f0: 69a2 ldr r2, [r4, #24] + 157ac: f014 ff56 bl 2a65c + 157b0: 69a2 ldr r2, [r4, #24] if(masterTimer>=interval){ - 156f2: 6923 ldr r3, [r4, #16] - 156f4: 1a80 subs r0, r0, r2 - 156f6: 4283 cmp r3, r0 - 156f8: d956 bls.n 157a8 + 157b2: 6923 ldr r3, [r4, #16] + 157b4: 1a80 subs r0, r0, r2 + 157b6: 4283 cmp r3, r0 + 157b8: d956 bls.n 15868 return false; - 156fa: 2700 movs r7, #0 - } - 156fc: 4638 mov r0, r7 - 156fe: bdf8 pop {r3, r4, r5, r6, r7, pc} - 15700: 4879 ldr r0, [pc, #484] ; (158e8 ) - 15702: 6800 ldr r0, [r0, #0] - 15704: 1a82 subs r2, r0, r2 - 15706: f8b4 0044 ldrh.w r0, [r4, #68] ; 0x44 - 1570a: 4282 cmp r2, r0 - 1570c: d3ee bcc.n 156ec + 157ba: 2700 movs r7, #0 + } + 157bc: 4638 mov r0, r7 + 157be: bdf8 pop {r3, r4, r5, r6, r7, pc} + 157c0: 4879 ldr r0, [pc, #484] ; (159a8 ) + 157c2: 6800 ldr r0, [r0, #0] + 157c4: 1a82 subs r2, r0, r2 + 157c6: f8b4 0044 ldrh.w r0, [r4, #68] ; 0x44 + 157ca: 4282 cmp r2, r0 + 157cc: d3ee bcc.n 157ac prevTime = 0; - 1570e: 2200 movs r2, #0 + 157ce: 2200 movs r2, #0 assignBpm(tmpBpm); - 15710: 89a5 ldrh r5, [r4, #12] - 15712: 64a2 str r2, [r4, #72] ; 0x48 + 157d0: 89a5 ldrh r5, [r4, #12] + 157d2: 64a2 str r2, [r4, #72] ; 0x48 elapsedMicros masterTimer; BMCBpmCalculator bpmCalc; BMCTimer bpmSetTimer; BMCTimer timeout; void assignBpm(uint16_t tempo){ if(isMaster() && BMCBpmCalculator::isValidBpm(tempo)){ - 15714: 07ca lsls r2, r1, #31 - 15716: d5e9 bpl.n 156ec - 15718: f1a5 021e sub.w r2, r5, #30 - 1571c: f5b2 7f87 cmp.w r2, #270 ; 0x10e - 15720: d8e4 bhi.n 156ec + 157d4: 07ca lsls r2, r1, #31 + 157d6: d5e9 bpl.n 157ac + 157d8: f1a5 021e sub.w r2, r5, #30 + 157dc: f5b2 7f87 cmp.w r2, #270 ; 0x10e + 157e0: d8e4 bhi.n 157ac if(bpm != tempo){ - 15722: 68a2 ldr r2, [r4, #8] - 15724: 8812 ldrh r2, [r2, #0] - 15726: 42aa cmp r2, r5 - 15728: d002 beq.n 15730 - 1572a: f043 030c orr.w r3, r3, #12 - 1572e: 7523 strb r3, [r4, #20] - 15730: 2117 movs r1, #23 - 15732: 486e ldr r0, [pc, #440] ; (158ec ) - 15734: f016 ff08 bl 2c548 - 15738: 2101 movs r1, #1 - 1573a: 486d ldr r0, [pc, #436] ; (158f0 ) - 1573c: f016 ff04 bl 2c548 + 157e2: 68a2 ldr r2, [r4, #8] + 157e4: 8812 ldrh r2, [r2, #0] + 157e6: 42aa cmp r2, r5 + 157e8: d002 beq.n 157f0 + 157ea: f043 030c orr.w r3, r3, #12 + 157ee: 7523 strb r3, [r4, #20] + 157f0: 2117 movs r1, #23 + 157f2: 486e ldr r0, [pc, #440] ; (159ac ) + 157f4: f016 ff1c bl 2c630 + 157f8: 2101 movs r1, #1 + 157fa: 486d ldr r0, [pc, #436] ; (159b0 ) + 157fc: f016 ff18 bl 2c630 size_t print(int n) { return print((long)n); } - 15740: 4629 mov r1, r5 - 15742: 486c ldr r0, [pc, #432] ; (158f4 ) - 15744: f014 fb8a bl 29e5c - 15748: 2101 movs r1, #1 - 1574a: 4869 ldr r0, [pc, #420] ; (158f0 ) - 1574c: f016 fefc bl 2c548 - 15750: 2103 movs r1, #3 - 15752: 4869 ldr r0, [pc, #420] ; (158f8 ) - 15754: f016 fef8 bl 2c548 - 15758: 2101 movs r1, #1 - 1575a: 4865 ldr r0, [pc, #404] ; (158f0 ) - 1575c: f016 fef4 bl 2c548 + 15800: 4629 mov r1, r5 + 15802: 486c ldr r0, [pc, #432] ; (159b4 ) + 15804: f014 fba0 bl 29f48 + 15808: 2101 movs r1, #1 + 1580a: 4869 ldr r0, [pc, #420] ; (159b0 ) + 1580c: f016 ff10 bl 2c630 + 15810: 2103 movs r1, #3 + 15812: 4869 ldr r0, [pc, #420] ; (159b8 ) + 15814: f016 ff0c bl 2c630 + 15818: 2101 movs r1, #1 + 1581a: 4865 ldr r0, [pc, #404] ; (159b0 ) + 1581c: f016 ff08 bl 2c630 flags.on(BMC_MIDI_CLOCK_FLAG_BPM_CHANGED); } BMC_PRINTLN("BMCMidiClock::assignBpm",tempo,"was",bpm); - 15760: 68a3 ldr r3, [r4, #8] - 15762: 4864 ldr r0, [pc, #400] ; (158f4 ) - 15764: 8819 ldrh r1, [r3, #0] - 15766: f014 fb79 bl 29e5c + 15820: 68a3 ldr r3, [r4, #8] + 15822: 4864 ldr r0, [pc, #400] ; (159b4 ) + 15824: 8819 ldrh r1, [r3, #0] + 15826: f014 fb8f bl 29f48 size_t println(int n) { return print(n) + println(); } - 1576a: 4862 ldr r0, [pc, #392] ; (158f4 ) - 1576c: f014 fb82 bl 29e74 + 1582a: 4862 ldr r0, [pc, #392] ; (159b4 ) + 1582c: f014 fb98 bl 29f60 return (BMC_MICROS_ON_SECOND / tempo); - 15770: 4b62 ldr r3, [pc, #392] ; (158fc ) + 15830: 4b62 ldr r3, [pc, #392] ; (159bc ) return bpmToMicros(tempo) / 24; - 15772: 4a63 ldr r2, [pc, #396] ; (15900 ) + 15832: 4a63 ldr r2, [pc, #396] ; (159c0 ) bpm = tempo; - 15774: 68a1 ldr r1, [r4, #8] + 15834: 68a1 ldr r1, [r4, #8] return (BMC_MICROS_ON_SECOND / tempo); - 15776: fbb3 f3f5 udiv r3, r3, r5 + 15836: fbb3 f3f5 udiv r3, r3, r5 return bpmToMicros(tempo) / 24; - 1577a: fba2 2303 umull r2, r3, r2, r3 - 1577e: 800d strh r5, [r1, #0] - 15780: 091b lsrs r3, r3, #4 + 1583a: fba2 2303 umull r2, r3, r2, r3 + 1583e: 800d strh r5, [r1, #0] + 15840: 091b lsrs r3, r3, #4 interval = BMCBpmCalculator::bpmToMicrosPPQN(tempo); - 15782: 6123 str r3, [r4, #16] + 15842: 6123 str r3, [r4, #16] elapsedMicros & operator = (unsigned long val) { us = micros() - val; return *this; } - 15784: f014 fef6 bl 2a574 - 15788: 61a0 str r0, [r4, #24] - 1578a: e7af b.n 156ec + 15844: f014 ff0a bl 2a65c + 15848: 61a0 str r0, [r4, #24] + 1584a: e7af b.n 157ac ticks = 0; - 1578c: 7127 strb r7, [r4, #4] + 1584c: 7127 strb r7, [r4, #4] ticks = 0; - 1578e: f884 703c strb.w r7, [r4, #60] ; 0x3c + 1584e: f884 703c strb.w r7, [r4, #60] ; 0x3c } - 15792: e77b b.n 1568c - 15794: 2300 movs r3, #0 - 15796: 63a3 str r3, [r4, #56] ; 0x38 + 15852: e77b b.n 1574c + 15854: 2300 movs r3, #0 + 15856: 63a3 str r3, [r4, #56] ; 0x38 ticks = 0; - 15798: f884 303c strb.w r3, [r4, #60] ; 0x3c + 15858: f884 303c strb.w r3, [r4, #60] ; 0x3c bpmAvgSize = 0; - 1579c: f884 3028 strb.w r3, [r4, #40] ; 0x28 + 1585c: f884 3028 strb.w r3, [r4, #40] ; 0x28 memset(bpmAvg, 0, sizeof(bpmAvg[0]) * BMC_BPM_AVERAGE); - 157a0: 6223 str r3, [r4, #32] - 157a2: 6263 str r3, [r4, #36] ; 0x24 + 15860: 6223 str r3, [r4, #32] + 15862: 6263 str r3, [r4, #36] ; 0x24 flags = 0; - 157a4: 77a3 strb r3, [r4, #30] + 15864: 77a3 strb r3, [r4, #30] timer.stop(); flags.reset(); } - 157a6: e76b b.n 15680 + 15866: e76b b.n 15740 elapsedMicros & operator -= (unsigned long val) { us += val ; return *this; } - 157a8: 4413 add r3, r2 + 15868: 4413 add r3, r2 midi.sendRealTime(midi.getListenerPorts(), BMC_MIDI_RT_CLOCK); - 157aa: 6820 ldr r0, [r4, #0] - 157ac: 22f8 movs r2, #248 ; 0xf8 - 157ae: 61a3 str r3, [r4, #24] - 157b0: 2300 movs r3, #0 - 157b2: f890 192d ldrb.w r1, [r0, #2349] ; 0x92d - 157b6: f00d fc7f bl 230b8 + 1586a: 6820 ldr r0, [r4, #0] + 1586c: 22f8 movs r2, #248 ; 0xf8 + 1586e: 61a3 str r3, [r4, #24] + 15870: 2300 movs r3, #0 + 15872: f890 192d ldrb.w r1, [r0, #2349] ; 0x92d + 15876: f00d fc85 bl 23184 ticks++; - 157ba: 7923 ldrb r3, [r4, #4] - 157bc: 3301 adds r3, #1 - 157be: b2db uxtb r3, r3 + 1587a: 7923 ldrb r3, [r4, #4] + 1587c: 3301 adds r3, #1 + 1587e: b2db uxtb r3, r3 bitWrite(flags, bit, value); - 157c0: 2b0c cmp r3, #12 - 157c2: 7123 strb r3, [r4, #4] - 157c4: d105 bne.n 157d2 - 157c6: 7d23 ldrb r3, [r4, #20] + 15880: 2b0c cmp r3, #12 + 15882: 7123 strb r3, [r4, #4] + 15884: d105 bne.n 15892 + 15886: 7d23 ldrb r3, [r4, #20] return false; - 157c8: 2700 movs r7, #0 - 157ca: f043 0310 orr.w r3, r3, #16 - 157ce: 7523 strb r3, [r4, #20] + 15888: 2700 movs r7, #0 + 1588a: f043 0310 orr.w r3, r3, #16 + 1588e: 7523 strb r3, [r4, #20] if(ticks>=24){ - 157d0: e794 b.n 156fc - 157d2: 7d22 ldrb r2, [r4, #20] - 157d4: 2b17 cmp r3, #23 - 157d6: f002 02ef and.w r2, r2, #239 ; 0xef - 157da: 7522 strb r2, [r4, #20] - 157dc: d98d bls.n 156fa + 15890: e794 b.n 157bc + 15892: 7d22 ldrb r2, [r4, #20] + 15894: 2b17 cmp r3, #23 + 15896: f002 02ef and.w r2, r2, #239 ; 0xef + 1589a: 7522 strb r2, [r4, #20] + 1589c: d98d bls.n 157ba ticks = 0; - 157de: 2300 movs r3, #0 + 1589e: 2300 movs r3, #0 bitSet(flags, bit); - 157e0: f042 0212 orr.w r2, r2, #18 - 157e4: 7123 strb r3, [r4, #4] - 157e6: 7522 strb r2, [r4, #20] + 158a0: f042 0212 orr.w r2, r2, #18 + 158a4: 7123 strb r3, [r4, #4] + 158a6: 7522 strb r2, [r4, #20] return true; - 157e8: e788 b.n 156fc + 158a8: e788 b.n 157bc if(ticks >= 24){ - 157ea: 2b17 cmp r3, #23 + 158aa: 2b17 cmp r3, #23 bitWrite(flags, bit, value); - 157ec: f002 02fe and.w r2, r2, #254 ; 0xfe - 157f0: d943 bls.n 1587a + 158ac: f002 02fe and.w r2, r2, #254 ; 0xfe + 158b0: d943 bls.n 1593a bitSet(flags, bit); - 157f2: f042 0201 orr.w r2, r2, #1 - 157f6: 77a2 strb r2, [r4, #30] + 158b2: f042 0201 orr.w r2, r2, #1 + 158b6: 77a2 strb r2, [r4, #30] setBpm(round(60000 / ((micros()-ticksTime) / 1000.0))); - 157f8: f014 febc bl 2a574 - 157fc: 6c23 ldr r3, [r4, #64] ; 0x40 - 157fe: 1ac0 subs r0, r0, r3 - 15800: ee07 0a90 vmov s15, r0 - 15804: ed9f 4b34 vldr d4, [pc, #208] ; 158d8 - 15808: eeb8 7b67 vcvt.f64.u32 d7, s15 - 1580c: ed9f 5b34 vldr d5, [pc, #208] ; 158e0 - 15810: ee87 6b04 vdiv.f64 d6, d7, d4 - 15814: ee85 7b06 vdiv.f64 d7, d5, d6 - 15818: feb8 7b47 vrinta.f64 d7, d7 - 1581c: eebd 7bc7 vcvt.s32.f64 s14, d7 - 15820: ee17 3a10 vmov r3, s14 - 15824: b29b uxth r3, r3 + 158b8: f014 fed0 bl 2a65c + 158bc: 6c23 ldr r3, [r4, #64] ; 0x40 + 158be: 1ac0 subs r0, r0, r3 + 158c0: ee07 0a90 vmov s15, r0 + 158c4: ed9f 4b34 vldr d4, [pc, #208] ; 15998 + 158c8: eeb8 7b67 vcvt.f64.u32 d7, s15 + 158cc: ed9f 5b34 vldr d5, [pc, #208] ; 159a0 + 158d0: ee87 6b04 vdiv.f64 d6, d7, d4 + 158d4: ee85 7b06 vdiv.f64 d7, d5, d6 + 158d8: feb8 7b47 vrinta.f64 d7, d7 + 158dc: eebd 7bc7 vcvt.s32.f64 s14, d7 + 158e0: ee17 3a10 vmov r3, s14 + 158e4: b29b uxth r3, r3 if(isValidBpm(tempo)){ - 15826: f1a3 021e sub.w r2, r3, #30 - 1582a: f5b2 7f87 cmp.w r2, #270 ; 0x10e + 158e6: f1a3 021e sub.w r2, r3, #30 + 158ea: f5b2 7f87 cmp.w r2, #270 ; 0x10e bpm = tempo; - 1582e: bf98 it ls - 15830: 83a3 strhls r3, [r4, #28] + 158ee: bf98 it ls + 158f0: 83a3 strhls r3, [r4, #28] ticksTime = micros(); - 15832: f014 fe9f bl 2a574 + 158f2: f014 feb3 bl 2a65c ticks++; - 15836: 2301 movs r3, #1 + 158f6: 2301 movs r3, #1 return bpm; - 15838: 8ba2 ldrh r2, [r4, #28] + 158f8: 8ba2 ldrh r2, [r4, #28] ticks++; - 1583a: f884 303c strb.w r3, [r4, #60] ; 0x3c + 158fa: f884 303c strb.w r3, [r4, #60] ; 0x3c if(bpm != bpmCalc.getBpm()){ - 1583e: 68a3 ldr r3, [r4, #8] + 158fe: 68a3 ldr r3, [r4, #8] ticksTime = micros(); - 15840: 6420 str r0, [r4, #64] ; 0x40 - 15842: 8819 ldrh r1, [r3, #0] - 15844: 4291 cmp r1, r2 - 15846: d044 beq.n 158d2 + 15900: 6420 str r0, [r4, #64] ; 0x40 + 15902: 8819 ldrh r1, [r3, #0] + 15904: 4291 cmp r1, r2 + 15906: d044 beq.n 15992 interval = value; - 15848: 2164 movs r1, #100 ; 0x64 - 1584a: f8a4 1044 strh.w r1, [r4, #68] ; 0x44 - 1584e: 6831 ldr r1, [r6, #0] + 15908: 2164 movs r1, #100 ; 0x64 + 1590a: f8a4 1044 strh.w r1, [r4, #68] ; 0x44 + 1590e: 6831 ldr r1, [r6, #0] prevTime = (unsigned long) _BMCTiming::get(); - 15850: 64a1 str r1, [r4, #72] ; 0x48 + 15910: 64a1 str r1, [r4, #72] ; 0x48 bpm = bpmCalc.getBpm(); - 15852: 801a strh r2, [r3, #0] - 15854: 7d23 ldrb r3, [r4, #20] - 15856: f043 0302 orr.w r3, r3, #2 - 1585a: 7523 strb r3, [r4, #20] + 15912: 801a strh r2, [r3, #0] + 15914: 7d23 ldrb r3, [r4, #20] + 15916: f043 0302 orr.w r3, r3, #2 + 1591a: 7523 strb r3, [r4, #20] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 1585c: b129 cbz r1, 1586a - 1585e: 6833 ldr r3, [r6, #0] - 15860: 1a5b subs r3, r3, r1 - 15862: f8b4 1044 ldrh.w r1, [r4, #68] ; 0x44 - 15866: 428b cmp r3, r1 - 15868: d209 bcs.n 1587e + 1591c: b129 cbz r1, 1592a + 1591e: 6833 ldr r3, [r6, #0] + 15920: 1a5b subs r3, r3, r1 + 15922: f8b4 1044 ldrh.w r1, [r4, #68] ; 0x44 + 15926: 428b cmp r3, r1 + 15928: d209 bcs.n 1593e return true; - 1586a: 462f mov r7, r5 - 1586c: e746 b.n 156fc + 1592a: 462f mov r7, r5 + 1592c: e746 b.n 157bc bitClear(flags, bit); - 1586e: f023 0308 bic.w r3, r3, #8 - 15872: 7523 strb r3, [r4, #20] + 1592e: f023 0308 bic.w r3, r3, #8 + 15932: 7523 strb r3, [r4, #20] prevTime = 0; - 15874: 2300 movs r3, #0 - 15876: 6523 str r3, [r4, #80] ; 0x50 + 15934: 2300 movs r3, #0 + 15936: 6523 str r3, [r4, #80] ; 0x50 } - 15878: e721 b.n 156be + 15938: e721 b.n 1577e bitWrite(flags, bit, value); - 1587a: 77a2 strb r2, [r4, #30] - 1587c: e72d b.n 156da + 1593a: 77a2 strb r2, [r4, #30] + 1593c: e72d b.n 1579a if(bpmSetTimer.complete() && tmpBpm!=bpm){ - 1587e: 89a3 ldrh r3, [r4, #12] - 15880: 2100 movs r1, #0 - 15882: 4293 cmp r3, r2 - 15884: 64a1 str r1, [r4, #72] ; 0x48 - 15886: d0f0 beq.n 1586a + 1593e: 89a3 ldrh r3, [r4, #12] + 15940: 2100 movs r1, #0 + 15942: 4293 cmp r3, r2 + 15944: 64a1 str r1, [r4, #72] ; 0x48 + 15946: d0f0 beq.n 1592a tmpBpm = bpm; - 15888: 81a2 strh r2, [r4, #12] - 1588a: 2107 movs r1, #7 - 1588c: 481d ldr r0, [pc, #116] ; (15904 ) + 15948: 81a2 strh r2, [r4, #12] + 1594a: 2107 movs r1, #7 + 1594c: 481d ldr r0, [pc, #116] ; (159c4 ) return true; - 1588e: 462f mov r7, r5 - 15890: f016 fe5a bl 2c548 - 15894: 2101 movs r1, #1 - 15896: 4816 ldr r0, [pc, #88] ; (158f0 ) - 15898: f016 fe56 bl 2c548 + 1594e: 462f mov r7, r5 + 15950: f016 fe6e bl 2c630 + 15954: 2101 movs r1, #1 + 15956: 4816 ldr r0, [pc, #88] ; (159b0 ) + 15958: f016 fe6a bl 2c630 BMC_PRINTLN("NEW BPM",bpm,"Received"); - 1589c: 68a3 ldr r3, [r4, #8] + 1595c: 68a3 ldr r3, [r4, #8] size_t print(int n) { return print((long)n); } - 1589e: 4815 ldr r0, [pc, #84] ; (158f4 ) - 158a0: 8819 ldrh r1, [r3, #0] - 158a2: f014 fadb bl 29e5c - 158a6: 2101 movs r1, #1 - 158a8: 4811 ldr r0, [pc, #68] ; (158f0 ) - 158aa: f016 fe4d bl 2c548 - 158ae: 2108 movs r1, #8 - 158b0: 4815 ldr r0, [pc, #84] ; (15908 ) - 158b2: f016 fe49 bl 2c548 + 1595e: 4815 ldr r0, [pc, #84] ; (159b4 ) + 15960: 8819 ldrh r1, [r3, #0] + 15962: f014 faf1 bl 29f48 + 15966: 2101 movs r1, #1 + 15968: 4811 ldr r0, [pc, #68] ; (159b0 ) + 1596a: f016 fe61 bl 2c630 + 1596e: 2108 movs r1, #8 + 15970: 4815 ldr r0, [pc, #84] ; (159c8 ) + 15972: f016 fe5d bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 158b6: 480f ldr r0, [pc, #60] ; (158f4 ) - 158b8: f014 fadc bl 29e74 + 15976: 480f ldr r0, [pc, #60] ; (159b4 ) + 15978: f014 faf2 bl 29f60 bitSet(flags, bit); - 158bc: 7d23 ldrb r3, [r4, #20] - 158be: f043 0304 orr.w r3, r3, #4 - 158c2: 7523 strb r3, [r4, #20] + 1597c: 7d23 ldrb r3, [r4, #20] + 1597e: f043 0304 orr.w r3, r3, #4 + 15982: 7523 strb r3, [r4, #20] } - 158c4: e71a b.n 156fc + 15984: e71a b.n 157bc ticksTime = micros(); - 158c6: f014 fe55 bl 2a574 + 15986: f014 fe69 bl 2a65c flags.write(BMC_BPM_CALC_EIGHT_NOTE, (ticks==12)); - 158ca: f894 303c ldrb.w r3, [r4, #60] ; 0x3c + 1598a: f894 303c ldrb.w r3, [r4, #60] ; 0x3c ticksTime = micros(); - 158ce: 6420 str r0, [r4, #64] ; 0x40 - 158d0: e6fc b.n 156cc + 1598e: 6420 str r0, [r4, #64] ; 0x40 + 15990: e6fc b.n 1578c return (prevTime>0); - 158d2: 6ca1 ldr r1, [r4, #72] ; 0x48 - 158d4: e7bd b.n 15852 - 158d6: bf00 nop - 158d8: 00000000 .word 0x00000000 - 158dc: 408f4000 .word 0x408f4000 - 158e0: 00000000 .word 0x00000000 - 158e4: 40ed4c00 .word 0x40ed4c00 - 158e8: 2000bae8 .word 0x2000bae8 - 158ec: 200018e0 .word 0x200018e0 - 158f0: 200023ec .word 0x200023ec - 158f4: 20004ba8 .word 0x20004ba8 - 158f8: 200018f8 .word 0x200018f8 - 158fc: 03938700 .word 0x03938700 - 15900: aaaaaaab .word 0xaaaaaaab - 15904: 200018fc .word 0x200018fc - 15908: 20001dcc .word 0x20001dcc - -0001590c : + 15992: 6ca1 ldr r1, [r4, #72] ; 0x48 + 15994: e7bd b.n 15912 + 15996: bf00 nop + 15998: 00000000 .word 0x00000000 + 1599c: 408f4000 .word 0x408f4000 + 159a0: 00000000 .word 0x00000000 + 159a4: 40ed4c00 .word 0x40ed4c00 + 159a8: 2000bb08 .word 0x2000bb08 + 159ac: 200018e0 .word 0x200018e0 + 159b0: 200023ec .word 0x200023ec + 159b4: 20004c68 .word 0x20004c68 + 159b8: 200018f8 .word 0x200018f8 + 159bc: 03938700 .word 0x03938700 + 159c0: aaaaaaab .word 0xaaaaaaab + 159c4: 200018fc .word 0x200018fc + 159c8: 20001dcc .word 0x20001dcc + +000159cc : void incomingSysEx(BMCMidiMessage d){ - 1590c: b084 sub sp, #16 - 1590e: b5f0 push {r4, r5, r6, r7, lr} - 15910: f5ad 7d01 sub.w sp, sp, #516 ; 0x204 - 15914: 4604 mov r4, r0 - 15916: ad87 add r5, sp, #540 ; 0x21c - 15918: e885 000e stmia.w r5, {r1, r2, r3} + 159cc: b084 sub sp, #16 + 159ce: b5f0 push {r4, r5, r6, r7, lr} + 159d0: f5ad 7d01 sub.w sp, sp, #516 ; 0x204 + 159d4: 4604 mov r4, r0 + 159d6: ad87 add r5, sp, #540 ; 0x21c + 159d8: e885 000e stmia.w r5, {r1, r2, r3} switch(d.sysex[5]){ - 1591c: f89d 3226 ldrb.w r3, [sp, #550] ; 0x226 - 15920: f8bd 621f ldrh.w r6, [sp, #543] ; 0x21f - 15924: 2b13 cmp r3, #19 - 15926: d817 bhi.n 15958 - 15928: e8df f003 tbb [pc, r3] - 1592c: 161c1677 .word 0x161c1677 - 15930: 16161616 .word 0x16161616 - 15934: 16161616 .word 0x16161616 - 15938: 16161616 .word 0x16161616 - 1593c: 6036230a .word 0x6036230a + 159dc: f89d 3226 ldrb.w r3, [sp, #550] ; 0x226 + 159e0: f8bd 621f ldrh.w r6, [sp, #543] ; 0x21f + 159e4: 2b13 cmp r3, #19 + 159e6: d817 bhi.n 15a18 + 159e8: e8df f003 tbb [pc, r3] + 159ec: 161c1677 .word 0x161c1677 + 159f0: 16161616 .word 0x16161616 + 159f4: 16161616 .word 0x16161616 + 159f8: 16161616 .word 0x16161616 + 159fc: 6036230a .word 0x6036230a if(callback.dawRecievedLCD){ - 15940: 6ca3 ldr r3, [r4, #72] ; 0x48 - 15942: f8d3 408c ldr.w r4, [r3, #140] ; 0x8c - 15946: b13c cbz r4, 15958 + 15a00: 6ca3 ldr r3, [r4, #72] ; 0x48 + 15a02: f8d3 4090 ldr.w r4, [r3, #144] ; 0x90 + 15a06: b13c cbz r4, 15a18 callback.dawRecievedLCD(d); - 15948: a98b add r1, sp, #556 ; 0x22c - 1594a: 22f3 movs r2, #243 ; 0xf3 - 1594c: 4668 mov r0, sp - 1594e: f014 fedb bl 2a708 - 15952: e895 000f ldmia.w r5, {r0, r1, r2, r3} - 15956: 47a0 blx r4 - } - 15958: f50d 7d01 add.w sp, sp, #516 ; 0x204 - 1595c: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} - 15960: b004 add sp, #16 - 15962: 4770 bx lr - 15964: f50d 7d01 add.w sp, sp, #516 ; 0x204 - 15968: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} - 1596c: b004 add sp, #16 - 1596e: f7ff bc65 b.w 1523c + 15a08: a98b add r1, sp, #556 ; 0x22c + 15a0a: 22f3 movs r2, #243 ; 0xf3 + 15a0c: 4668 mov r0, sp + 15a0e: f014 feef bl 2a7f0 + 15a12: e895 000f ldmia.w r5, {r0, r1, r2, r3} + 15a16: 47a0 blx r4 + } + 15a18: f50d 7d01 add.w sp, sp, #516 ; 0x204 + 15a1c: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 15a20: b004 add sp, #16 + 15a22: 4770 bx lr + 15a24: f50d 7d01 add.w sp, sp, #516 ; 0x204 + 15a28: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 15a2c: b004 add sp, #16 + 15a2e: f7ff bc6b b.w 15308 if(d.size()>8){ - 15972: 2e08 cmp r6, #8 - 15974: d9f0 bls.n 15958 + 15a32: 2e08 cmp r6, #8 + 15a34: d9f0 bls.n 15a18 parseTwoDigitDisplay(d.sysex[6], d.sysex[7]); - 15976: f89d 2227 ldrb.w r2, [sp, #551] ; 0x227 - 1597a: f89d 3228 ldrb.w r3, [sp, #552] ; 0x228 + 15a36: f89d 2227 ldrb.w r2, [sp, #551] ; 0x227 + 15a3a: f89d 3228 ldrb.w r3, [sp, #552] ; 0x228 if(a > 0 && a < 63){ - 1597e: 1e51 subs r1, r2, #1 - 15980: 293d cmp r1, #61 ; 0x3d - 15982: d802 bhi.n 1598a + 15a3e: 1e51 subs r1, r2, #1 + 15a40: 293d cmp r1, #61 ; 0x3d + 15a42: d802 bhi.n 15a4a twoDigitDisplay[1] = sevDigitChars[a]; - 15984: 5c82 ldrb r2, [r0, r2] - 15986: f880 20cb strb.w r2, [r0, #203] ; 0xcb + 15a44: 5c82 ldrb r2, [r0, r2] + 15a46: f880 20cb strb.w r2, [r0, #203] ; 0xcb if(b > 0 && b < 63){ - 1598a: 1e5a subs r2, r3, #1 - 1598c: 2a3d cmp r2, #61 ; 0x3d - 1598e: d8e3 bhi.n 15958 + 15a4a: 1e5a subs r2, r3, #1 + 15a4c: 2a3d cmp r2, #61 ; 0x3d + 15a4e: d8e3 bhi.n 15a18 twoDigitDisplay[0] = sevDigitChars[b]; - 15990: 5ce3 ldrb r3, [r4, r3] - 15992: f884 30ca strb.w r3, [r4, #202] ; 0xca - 15996: e7df b.n 15958 + 15a50: 5ce3 ldrb r3, [r4, r3] + 15a52: f884 30ca strb.w r3, [r4, #202] ; 0xca + 15a56: e7df b.n 15a18 parseLCD(d); - 15998: 4629 mov r1, r5 - 1599a: f240 1203 movw r2, #259 ; 0x103 - 1599e: a83f add r0, sp, #252 ; 0xfc - 159a0: f014 feb2 bl 2a708 + 15a58: 4629 mov r1, r5 + 15a5a: f240 1203 movw r2, #259 ; 0x103 + 15a5e: a83f add r0, sp, #252 ; 0xfc + 15a60: f014 fec6 bl 2a7f0 for(uint16_t i = 7, e = offset ; i < d.size()-1 ; i++, e++){ - 159a4: 1e71 subs r1, r6, #1 - 159a6: f89d 3107 ldrb.w r3, [sp, #263] ; 0x107 - 159aa: 2907 cmp r1, #7 - 159ac: ddc8 ble.n 15940 - 159ae: 2207 movs r2, #7 - 159b0: f1c3 0c08 rsb ip, r3, #8 - 159b4: e008 b.n 159c8 + 15a64: 1e71 subs r1, r6, #1 + 15a66: f89d 3107 ldrb.w r3, [sp, #263] ; 0x107 + 15a6a: 2907 cmp r1, #7 + 15a6c: ddc8 ble.n 15a00 + 15a6e: 2207 movs r2, #7 + 15a70: f1c3 0c08 rsb ip, r3, #8 + 15a74: e008 b.n 15a88 lcd[0][e] = c; - 159b6: f886 2058 strb.w r2, [r6, #88] ; 0x58 + 15a76: f886 2058 strb.w r2, [r6, #88] ; 0x58 for(uint16_t i = 7, e = offset ; i < d.size()-1 ; i++, e++){ - 159ba: eb03 020c add.w r2, r3, ip - 159be: 3301 adds r3, #1 - 159c0: b292 uxth r2, r2 - 159c2: b29b uxth r3, r3 - 159c4: 428a cmp r2, r1 - 159c6: dabb bge.n 15940 + 15a7a: eb03 020c add.w r2, r3, ip + 15a7e: 3301 adds r3, #1 + 15a80: b292 uxth r2, r2 + 15a82: b29b uxth r3, r3 + 15a84: 428a cmp r2, r1 + 15a86: dabb bge.n 15a00 char c = (char) d.sysex[i]; - 159c8: a83f add r0, sp, #252 ; 0xfc + 15a88: a83f add r0, sp, #252 ; 0xfc lcd[0][e] = c; - 159ca: 18e6 adds r6, r4, r3 + 15a8a: 18e6 adds r6, r4, r3 char c = (char) d.sysex[i]; - 159cc: 4402 add r2, r0 - 159ce: 7952 ldrb r2, [r2, #5] + 15a8c: 4402 add r2, r0 + 15a8e: 7952 ldrb r2, [r2, #5] if(c < 32 || c > 126){ - 159d0: f1a2 0020 sub.w r0, r2, #32 + 15a90: f1a2 0020 sub.w r0, r2, #32 c = ' '; - 159d4: 285e cmp r0, #94 ; 0x5e - 159d6: bf88 it hi - 159d8: 2220 movhi r2, #32 + 15a94: 285e cmp r0, #94 ; 0x5e + 15a96: bf88 it hi + 15a98: 2220 movhi r2, #32 if(e < 56){ - 159da: 2b37 cmp r3, #55 ; 0x37 - 159dc: d9eb bls.n 159b6 + 15a9a: 2b37 cmp r3, #55 ; 0x37 + 15a9c: d9eb bls.n 15a76 } else if(e-56 < 57){ - 159de: 2b70 cmp r3, #112 ; 0x70 + 15a9e: 2b70 cmp r3, #112 ; 0x70 lcd[1][e-56] = c; - 159e0: eb04 0003 add.w r0, r4, r3 - 159e4: bf98 it ls - 159e6: f880 2059 strbls.w r2, [r0, #89] ; 0x59 - 159ea: e7e6 b.n 159ba + 15aa0: eb04 0003 add.w r0, r4, r3 + 15aa4: bf98 it ls + 15aa6: f880 2059 strbls.w r2, [r0, #89] ; 0x59 + 15aaa: e7e6 b.n 15a7a } void sendVersionReply(){ //BMC_PRINTLN("sendVersionReply"); uint8_t reply[12] = - 159ec: 4b16 ldr r3, [pc, #88] ; (15a48 ) + 15aac: 4b16 ldr r3, [pc, #88] ; (15b08 ) // 0x14, // Version Reply BMC_DAW_VERSION_ID, // Version Reply 'V', '2', '.', '5', '3', // Version 0xF7, // EOX }; midi.sendSysEx(BMC_USB, reply, 12, true); - 159ee: 2601 movs r6, #1 + 15aae: 2601 movs r6, #1 uint8_t reply[12] = - 159f0: ad3f add r5, sp, #252 ; 0xfc + 15ab0: ad3f add r5, sp, #252 ; 0xfc midi.sendSysEx(BMC_USB, reply, 12, true); - 159f2: 2700 movs r7, #0 - 159f4: 9602 str r6, [sp, #8] - 159f6: 9600 str r6, [sp, #0] + 15ab2: 2700 movs r7, #0 + 15ab4: 9602 str r6, [sp, #8] + 15ab6: 9600 str r6, [sp, #0] uint8_t reply[12] = - 159f8: e893 0007 ldmia.w r3, {r0, r1, r2} + 15ab8: e893 0007 ldmia.w r3, {r0, r1, r2} midi.sendSysEx(BMC_USB, reply, 12, true); - 159fc: 230c movs r3, #12 + 15abc: 230c movs r3, #12 uint8_t reply[12] = - 159fe: e885 0007 stmia.w r5, {r0, r1, r2} + 15abe: e885 0007 stmia.w r5, {r0, r1, r2} midi.sendSysEx(BMC_USB, reply, 12, true); - 15a02: 6c20 ldr r0, [r4, #64] ; 0x40 - 15a04: 462a mov r2, r5 - 15a06: 4631 mov r1, r6 - 15a08: 9701 str r7, [sp, #4] - 15a0a: f00d fb5d bl 230c8 - } - 15a0e: f50d 7d01 add.w sp, sp, #516 ; 0x204 - 15a12: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} - 15a16: b004 add sp, #16 - 15a18: 4770 bx lr + 15ac2: 6c20 ldr r0, [r4, #64] ; 0x40 + 15ac4: 462a mov r2, r5 + 15ac6: 4631 mov r1, r6 + 15ac8: 9701 str r7, [sp, #4] + 15aca: f00d fb63 bl 23194 + } + 15ace: f50d 7d01 add.w sp, sp, #516 ; 0x204 + 15ad2: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 15ad6: b004 add sp, #16 + 15ad8: 4770 bx lr midi.sendSysEx(BMC_USB, reply, 18, true); - 15a1a: 2300 movs r3, #0 + 15ada: 2300 movs r3, #0 uint8_t reply[18] = - 15a1c: 4e0b ldr r6, [pc, #44] ; (15a4c ) + 15adc: 4e0b ldr r6, [pc, #44] ; (15b0c ) midi.sendSysEx(BMC_USB, reply, 18, true); - 15a1e: 2701 movs r7, #1 + 15ade: 2701 movs r7, #1 uint8_t reply[18] = - 15a20: ad3f add r5, sp, #252 ; 0xfc + 15ae0: ad3f add r5, sp, #252 ; 0xfc midi.sendSysEx(BMC_USB, reply, 18, true); - 15a22: 9301 str r3, [sp, #4] - 15a24: 9702 str r7, [sp, #8] - 15a26: 9700 str r7, [sp, #0] + 15ae2: 9301 str r3, [sp, #4] + 15ae4: 9702 str r7, [sp, #8] + 15ae6: 9700 str r7, [sp, #0] uint8_t reply[18] = - 15a28: ce0f ldmia r6!, {r0, r1, r2, r3} - 15a2a: c50f stmia r5!, {r0, r1, r2, r3} - 15a2c: 6833 ldr r3, [r6, #0] + 15ae8: ce0f ldmia r6!, {r0, r1, r2, r3} + 15aea: c50f stmia r5!, {r0, r1, r2, r3} + 15aec: 6833 ldr r3, [r6, #0] midi.sendSysEx(BMC_USB, reply, 18, true); - 15a2e: aa3f add r2, sp, #252 ; 0xfc - 15a30: 4639 mov r1, r7 - 15a32: 6c20 ldr r0, [r4, #64] ; 0x40 + 15aee: aa3f add r2, sp, #252 ; 0xfc + 15af0: 4639 mov r1, r7 + 15af2: 6c20 ldr r0, [r4, #64] ; 0x40 uint8_t reply[18] = - 15a34: 802b strh r3, [r5, #0] + 15af4: 802b strh r3, [r5, #0] midi.sendSysEx(BMC_USB, reply, 18, true); - 15a36: 2312 movs r3, #18 - 15a38: f00d fb46 bl 230c8 + 15af6: 2312 movs r3, #18 + 15af8: f00d fb4c bl 23194 } - 15a3c: f50d 7d01 add.w sp, sp, #516 ; 0x204 - 15a40: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} - 15a44: b004 add sp, #16 - 15a46: 4770 bx lr - 15a48: 20000918 .word 0x20000918 - 15a4c: 20000904 .word 0x20000904 + 15afc: f50d 7d01 add.w sp, sp, #516 ; 0x204 + 15b00: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 15b04: b004 add sp, #16 + 15b06: 4770 bx lr + 15b08: 20000918 .word 0x20000918 + 15b0c: 20000904 .word 0x20000904 -00015a50 : +00015b10 : void incoming(BMCMidiMessage m){ - 15a50: b084 sub sp, #16 - 15a52: b530 push {r4, r5, lr} - 15a54: b083 sub sp, #12 - 15a56: 4604 mov r4, r0 - 15a58: f10d 0c1c add.w ip, sp, #28 - 15a5c: e88c 000e stmia.w ip, {r1, r2, r3} + 15b10: b084 sub sp, #16 + 15b12: b530 push {r4, r5, lr} + 15b14: b083 sub sp, #12 + 15b16: 4604 mov r4, r0 + 15b18: f10d 0c1c add.w ip, sp, #28 + 15b1c: e88c 000e stmia.w ip, {r1, r2, r3} return bitRead(flags, bit); - 15a60: 7b63 ldrb r3, [r4, #13] - 15a62: f8bd 101f ldrh.w r1, [sp, #31] + 15b20: 7b63 ldrb r3, [r4, #13] + 15b22: f8bd 101f ldrh.w r1, [sp, #31] if(isSyncEnabled() && m.matchSource(port)){ - 15a66: 07dd lsls r5, r3, #31 - 15a68: f89d 001f ldrb.w r0, [sp, #31] - 15a6c: f89d c020 ldrb.w ip, [sp, #32] - 15a70: f89d 201d ldrb.w r2, [sp, #29] - 15a74: d504 bpl.n 15a80 - 15a76: 7e65 ldrb r5, [r4, #25] - 15a78: f89d e01c ldrb.w lr, [sp, #28] - 15a7c: 4575 cmp r5, lr - 15a7e: d004 beq.n 15a8a - } - 15a80: b003 add sp, #12 - 15a82: e8bd 4030 ldmia.w sp!, {r4, r5, lr} - 15a86: b004 add sp, #16 - 15a88: 4770 bx lr + 15b26: 07dd lsls r5, r3, #31 + 15b28: f89d 001f ldrb.w r0, [sp, #31] + 15b2c: f89d c020 ldrb.w ip, [sp, #32] + 15b30: f89d 201d ldrb.w r2, [sp, #29] + 15b34: d504 bpl.n 15b40 + 15b36: 7e65 ldrb r5, [r4, #25] + 15b38: f89d e01c ldrb.w lr, [sp, #28] + 15b3c: 4575 cmp r5, lr + 15b3e: d004 beq.n 15b4a + } + 15b40: b003 add sp, #12 + 15b42: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 15b46: b004 add sp, #16 + 15b48: 4770 bx lr return BMC_IS_CLOCK(getStatus()); //0xF8 - 15a8a: 2aef cmp r2, #239 ; 0xef - 15a8c: d821 bhi.n 15ad2 + 15b4a: 2aef cmp r2, #239 ; 0xef + 15b4c: d821 bhi.n 15b92 } else if(m.isControlChange() && m.matchChannel(channel) && m.isData1(BMC_BEATBUDDY_CC_PART_NUMBER)){ - 15a8e: f002 02f0 and.w r2, r2, #240 ; 0xf0 - 15a92: 2ab0 cmp r2, #176 ; 0xb0 - 15a94: d1f4 bne.n 15a80 - 15a96: 7e22 ldrb r2, [r4, #24] - 15a98: f89d 301e ldrb.w r3, [sp, #30] - 15a9c: 429a cmp r2, r3 - 15a9e: d1ef bne.n 15a80 - 15aa0: 2866 cmp r0, #102 ; 0x66 - 15aa2: d1ed bne.n 15a80 - 15aa4: 210e movs r1, #14 + 15b4e: f002 02f0 and.w r2, r2, #240 ; 0xf0 + 15b52: 2ab0 cmp r2, #176 ; 0xb0 + 15b54: d1f4 bne.n 15b40 + 15b56: 7e22 ldrb r2, [r4, #24] + 15b58: f89d 301e ldrb.w r3, [sp, #30] + 15b5c: 429a cmp r2, r3 + 15b5e: d1ef bne.n 15b40 + 15b60: 2866 cmp r0, #102 ; 0x66 + 15b62: d1ed bne.n 15b40 + 15b64: 210e movs r1, #14 songPart = m.getData2(); - 15aa6: f884 c01a strb.w ip, [r4, #26] - 15aaa: 484f ldr r0, [pc, #316] ; (15be8 ) - 15aac: f016 fd4c bl 2c548 - 15ab0: 2101 movs r1, #1 - 15ab2: 484e ldr r0, [pc, #312] ; (15bec ) - 15ab4: f016 fd48 bl 2c548 + 15b66: f884 c01a strb.w ip, [r4, #26] + 15b6a: 484f ldr r0, [pc, #316] ; (15ca8 ) + 15b6c: f016 fd60 bl 2c630 + 15b70: 2101 movs r1, #1 + 15b72: 484e ldr r0, [pc, #312] ; (15cac ) + 15b74: f016 fd5c bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 15ab8: 2300 movs r3, #0 - 15aba: 220a movs r2, #10 - 15abc: 7ea1 ldrb r1, [r4, #26] - 15abe: 484c ldr r0, [pc, #304] ; (15bf0 ) - 15ac0: f014 f9f4 bl 29eac + 15b78: 2300 movs r3, #0 + 15b7a: 220a movs r2, #10 + 15b7c: 7ea1 ldrb r1, [r4, #26] + 15b7e: 484c ldr r0, [pc, #304] ; (15cb0 ) + 15b80: f014 fa0a bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 15ac4: 484a ldr r0, [pc, #296] ; (15bf0 ) + 15b84: 484a ldr r0, [pc, #296] ; (15cb0 ) } - 15ac6: b003 add sp, #12 - 15ac8: e8bd 4030 ldmia.w sp!, {r4, r5, lr} - 15acc: b004 add sp, #16 - 15ace: f014 b9d1 b.w 29e74 + 15b86: b003 add sp, #12 + 15b88: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 15b8c: b004 add sp, #16 + 15b8e: f014 b9e7 b.w 29f60 if(m.isClock()){ - 15ad2: 2af8 cmp r2, #248 ; 0xf8 - 15ad4: d109 bne.n 15aea - 15ad6: 4a47 ldr r2, [pc, #284] ; (15bf4 ) + 15b92: 2af8 cmp r2, #248 ; 0xf8 + 15b94: d109 bne.n 15baa + 15b96: 4a47 ldr r2, [pc, #284] ; (15cb4 ) bitSet(flags, bit); - 15ad8: f043 0302 orr.w r3, r3, #2 + 15b98: f043 0302 orr.w r3, r3, #2 interval = value; - 15adc: f44f 61fa mov.w r1, #2000 ; 0x7d0 - 15ae0: 6812 ldr r2, [r2, #0] - 15ae2: 7363 strb r3, [r4, #13] - 15ae4: 8221 strh r1, [r4, #16] + 15b9c: f44f 61fa mov.w r1, #2000 ; 0x7d0 + 15ba0: 6812 ldr r2, [r2, #0] + 15ba2: 7363 strb r3, [r4, #13] + 15ba4: 8221 strh r1, [r4, #16] prevTime = (unsigned long) _BMCTiming::get(); - 15ae6: 6162 str r2, [r4, #20] + 15ba6: 6162 str r2, [r4, #20] } - 15ae8: e7ca b.n 15a80 + 15ba8: e7ca b.n 15b40 } else if(m.isStart()){ - 15aea: 2afa cmp r2, #250 ; 0xfa - 15aec: d111 bne.n 15b12 + 15baa: 2afa cmp r2, #250 ; 0xfa + 15bac: d111 bne.n 15bd2 return numerator>0&&denominator>0; - 15aee: 7a22 ldrb r2, [r4, #8] - 15af0: b12a cbz r2, 15afe - 15af2: 7a62 ldrb r2, [r4, #9] - 15af4: b11a cbz r2, 15afe + 15bae: 7a22 ldrb r2, [r4, #8] + 15bb0: b12a cbz r2, 15bbe + 15bb2: 7a62 ldrb r2, [r4, #9] + 15bb4: b11a cbz r2, 15bbe timeSignature.beat = 2; - 15af6: 2202 movs r2, #2 - 15af8: f043 0308 orr.w r3, r3, #8 - 15afc: 7322 strb r2, [r4, #12] + 15bb6: 2202 movs r2, #2 + 15bb8: f043 0308 orr.w r3, r3, #8 + 15bbc: 7322 strb r2, [r4, #12] bitClear(flags, bit); - 15afe: f023 0310 bic.w r3, r3, #16 - 15b02: 2111 movs r1, #17 - 15b04: 483c ldr r0, [pc, #240] ; (15bf8 ) - 15b06: f043 0304 orr.w r3, r3, #4 - 15b0a: 7363 strb r3, [r4, #13] - 15b0c: f016 fd1c bl 2c548 - 15b10: e7d8 b.n 15ac4 + 15bbe: f023 0310 bic.w r3, r3, #16 + 15bc2: 2111 movs r1, #17 + 15bc4: 483c ldr r0, [pc, #240] ; (15cb8 ) + 15bc6: f043 0304 orr.w r3, r3, #4 + 15bca: 7363 strb r3, [r4, #13] + 15bcc: f016 fd30 bl 2c630 + 15bd0: e7d8 b.n 15b84 } else if(m.isStop()){ - 15b12: 2afc cmp r2, #252 ; 0xfc - 15b14: d108 bne.n 15b28 - 15b16: f023 0364 bic.w r3, r3, #100 ; 0x64 + 15bd2: 2afc cmp r2, #252 ; 0xfc + 15bd4: d108 bne.n 15be8 + 15bd6: f023 0364 bic.w r3, r3, #100 ; 0x64 timeSignature.beat = 0; - 15b1a: 2200 movs r2, #0 - 15b1c: f043 0310 orr.w r3, r3, #16 - 15b20: 7322 strb r2, [r4, #12] + 15bda: 2200 movs r2, #0 + 15bdc: f043 0310 orr.w r3, r3, #16 + 15be0: 7322 strb r2, [r4, #12] songPart = 0; - 15b22: 8362 strh r2, [r4, #26] - 15b24: 7363 strb r3, [r4, #13] + 15be2: 8362 strh r2, [r4, #26] + 15be4: 7363 strb r3, [r4, #13] } - 15b26: e7ab b.n 15a80 + 15be6: e7ab b.n 15b40 } bool isSyncEnabled(){ return flags.read(BMC_BEATBUDDY_FLAG_SYNC_ENABLED); } bool isTimeSignatureMessage(BMCMidiMessage m){ if(m.isSysEx() && m.size()>=11){ - 15b28: 2af0 cmp r2, #240 ; 0xf0 - 15b2a: f89d 3022 ldrb.w r3, [sp, #34] ; 0x22 - 15b2e: f89d 5023 ldrb.w r5, [sp, #35] ; 0x23 - 15b32: f89d 0024 ldrb.w r0, [sp, #36] ; 0x24 - 15b36: f89d c025 ldrb.w ip, [sp, #37] ; 0x25 - 15b3a: d1a1 bne.n 15a80 + 15be8: 2af0 cmp r2, #240 ; 0xf0 + 15bea: f89d 3022 ldrb.w r3, [sp, #34] ; 0x22 + 15bee: f89d 5023 ldrb.w r5, [sp, #35] ; 0x23 + 15bf2: f89d 0024 ldrb.w r0, [sp, #36] ; 0x24 + 15bf6: f89d c025 ldrb.w ip, [sp, #37] ; 0x25 + 15bfa: d1a1 bne.n 15b40 return (m.sysex[1]==0x7F&&m.sysex[2]==0x7F&&m.sysex[3]==0x03&&m.sysex[4]==0x02); - 15b3c: f1a3 037f sub.w r3, r3, #127 ; 0x7f - 15b40: 290a cmp r1, #10 - 15b42: fab3 f383 clz r3, r3 - 15b46: ea4f 1353 mov.w r3, r3, lsr #5 - 15b4a: bf98 it ls - 15b4c: 2300 movls r3, #0 - 15b4e: 2d7f cmp r5, #127 ; 0x7f - 15b50: bf14 ite ne - 15b52: 2300 movne r3, #0 - 15b54: f003 0301 andeq.w r3, r3, #1 - 15b58: 2803 cmp r0, #3 - 15b5a: bf14 ite ne - 15b5c: 2300 movne r3, #0 - 15b5e: f003 0301 andeq.w r3, r3, #1 - 15b62: 2b00 cmp r3, #0 - 15b64: d08c beq.n 15a80 - 15b66: f1bc 0f02 cmp.w ip, #2 - 15b6a: d189 bne.n 15a80 + 15bfc: f1a3 037f sub.w r3, r3, #127 ; 0x7f + 15c00: 290a cmp r1, #10 + 15c02: fab3 f383 clz r3, r3 + 15c06: ea4f 1353 mov.w r3, r3, lsr #5 + 15c0a: bf98 it ls + 15c0c: 2300 movls r3, #0 + 15c0e: 2d7f cmp r5, #127 ; 0x7f + 15c10: bf14 ite ne + 15c12: 2300 movne r3, #0 + 15c14: f003 0301 andeq.w r3, r3, #1 + 15c18: 2803 cmp r0, #3 + 15c1a: bf14 ite ne + 15c1c: 2300 movne r3, #0 + 15c1e: f003 0301 andeq.w r3, r3, #1 + 15c22: 2b00 cmp r3, #0 + 15c24: d08c beq.n 15b40 + 15c26: f1bc 0f02 cmp.w ip, #2 + 15c2a: d189 bne.n 15b40 if(timeSignature.setFromMidi(m.sysex[6],m.sysex[7],m.sysex[8],m.sysex[9])){ - 15b6c: f89d 3028 ldrb.w r3, [sp, #40] ; 0x28 - 15b70: f89d 1029 ldrb.w r1, [sp, #41] ; 0x29 + 15c2c: f89d 3028 ldrb.w r3, [sp, #40] ; 0x28 + 15c30: f89d 1029 ldrb.w r1, [sp, #41] ; 0x29 denominator = (uint8_t) pow((int)(-d),2); - 15b74: 425b negs r3, r3 - 15b76: f89d 2027 ldrb.w r2, [sp, #39] ; 0x27 + 15c34: 425b negs r3, r3 + 15c36: f89d 2027 ldrb.w r2, [sp, #39] ; 0x27 metClocks = c; - 15b7a: 72a1 strb r1, [r4, #10] + 15c3a: 72a1 strb r1, [r4, #10] inline _GLIBCXX_CONSTEXPR typename __gnu_cxx::__promote_2<_Tp, _Up>::__type pow(_Tp __x, _Up __y) { typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; return pow(__type(__x), __type(__y)); - 15b7c: ee07 3a90 vmov s15, r3 + 15c3c: ee07 3a90 vmov s15, r3 uint8_t pNum = numerator; - 15b80: 7a21 ldrb r1, [r4, #8] - 15b82: f89d 302a ldrb.w r3, [sp, #42] ; 0x2a - 15b86: eeb8 7be7 vcvt.f64.s32 d7, s15 + 15c40: 7a21 ldrb r1, [r4, #8] + 15c42: f89d 302a ldrb.w r3, [sp, #42] ; 0x2a + 15c46: eeb8 7be7 vcvt.f64.s32 d7, s15 return (numerator != pNum || denominator != pDen); - 15b8a: 428a cmp r2, r1 + 15c4a: 428a cmp r2, r1 notated32 = n32; - 15b8c: 72e3 strb r3, [r4, #11] + 15c4c: 72e3 strb r3, [r4, #11] uint8_t pDen = denominator; - 15b8e: 7a60 ldrb r0, [r4, #9] - 15b90: ee27 7b07 vmul.f64 d7, d7, d7 + 15c4e: 7a60 ldrb r0, [r4, #9] + 15c50: ee27 7b07 vmul.f64 d7, d7, d7 numerator = n; - 15b94: 7222 strb r2, [r4, #8] + 15c54: 7222 strb r2, [r4, #8] denominator = (uint8_t) pow((int)(-d),2); - 15b96: eefc 7bc7 vcvt.u32.f64 s15, d7 - 15b9a: edcd 7a01 vstr s15, [sp, #4] - 15b9e: f89d 3004 ldrb.w r3, [sp, #4] - 15ba2: 7263 strb r3, [r4, #9] + 15c56: eefc 7bc7 vcvt.u32.f64 s15, d7 + 15c5a: edcd 7a01 vstr s15, [sp, #4] + 15c5e: f89d 3004 ldrb.w r3, [sp, #4] + 15c62: 7263 strb r3, [r4, #9] return (numerator != pNum || denominator != pDen); - 15ba4: d102 bne.n 15bac - 15ba6: 4298 cmp r0, r3 - 15ba8: f43f af6a beq.w 15a80 - 15bac: 2118 movs r1, #24 - 15bae: 4813 ldr r0, [pc, #76] ; (15bfc ) - 15bb0: f016 fcca bl 2c548 - 15bb4: 2101 movs r1, #1 - 15bb6: 480d ldr r0, [pc, #52] ; (15bec ) - 15bb8: f016 fcc6 bl 2c548 + 15c64: d102 bne.n 15c6c + 15c66: 4298 cmp r0, r3 + 15c68: f43f af6a beq.w 15b40 + 15c6c: 2118 movs r1, #24 + 15c6e: 4813 ldr r0, [pc, #76] ; (15cbc ) + 15c70: f016 fcde bl 2c630 + 15c74: 2101 movs r1, #1 + 15c76: 480d ldr r0, [pc, #52] ; (15cac ) + 15c78: f016 fcda bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 15bbc: 2300 movs r3, #0 - 15bbe: 220a movs r2, #10 - 15bc0: 7a21 ldrb r1, [r4, #8] - 15bc2: 480b ldr r0, [pc, #44] ; (15bf0 ) - 15bc4: f014 f972 bl 29eac - 15bc8: 2101 movs r1, #1 - 15bca: 4808 ldr r0, [pc, #32] ; (15bec ) - 15bcc: f016 fcbc bl 2c548 - 15bd0: 2101 movs r1, #1 - 15bd2: 480b ldr r0, [pc, #44] ; (15c00 ) - 15bd4: f016 fcb8 bl 2c548 - 15bd8: 2101 movs r1, #1 - 15bda: 4804 ldr r0, [pc, #16] ; (15bec ) - 15bdc: f016 fcb4 bl 2c548 - 15be0: 2300 movs r3, #0 - 15be2: 220a movs r2, #10 - 15be4: 7a61 ldrb r1, [r4, #9] - 15be6: e76a b.n 15abe - 15be8: 20001864 .word 0x20001864 - 15bec: 200023ec .word 0x200023ec - 15bf0: 20004ba8 .word 0x20004ba8 - 15bf4: 2000bae8 .word 0x2000bae8 - 15bf8: 20001874 .word 0x20001874 - 15bfc: 20001888 .word 0x20001888 - 15c00: 200018a4 .word 0x200018a4 - -00015c04 : + 15c7c: 2300 movs r3, #0 + 15c7e: 220a movs r2, #10 + 15c80: 7a21 ldrb r1, [r4, #8] + 15c82: 480b ldr r0, [pc, #44] ; (15cb0 ) + 15c84: f014 f988 bl 29f98 + 15c88: 2101 movs r1, #1 + 15c8a: 4808 ldr r0, [pc, #32] ; (15cac ) + 15c8c: f016 fcd0 bl 2c630 + 15c90: 2101 movs r1, #1 + 15c92: 480b ldr r0, [pc, #44] ; (15cc0 ) + 15c94: f016 fccc bl 2c630 + 15c98: 2101 movs r1, #1 + 15c9a: 4804 ldr r0, [pc, #16] ; (15cac ) + 15c9c: f016 fcc8 bl 2c630 + 15ca0: 2300 movs r3, #0 + 15ca2: 220a movs r2, #10 + 15ca4: 7a61 ldrb r1, [r4, #9] + 15ca6: e76a b.n 15b7e + 15ca8: 20001864 .word 0x20001864 + 15cac: 200023ec .word 0x200023ec + 15cb0: 20004c68 .word 0x20004c68 + 15cb4: 2000bb08 .word 0x2000bb08 + 15cb8: 20001874 .word 0x20001874 + 15cbc: 20001888 .word 0x20001888 + 15cc0: 200018a4 .word 0x200018a4 + +00015cc4 : void BMC::incomingMidi(BMCMidiMessage message){ - 15c04: b084 sub sp, #16 - 15c06: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 15c0a: ed2d 8b02 vpush {d8} - 15c0e: f5ad 7d11 sub.w sp, sp, #580 ; 0x244 - 15c12: ac9d add r4, sp, #628 ; 0x274 - 15c14: e884 000e stmia.w r4, {r1, r2, r3} - 15c18: f89d 6275 ldrb.w r6, [sp, #629] ; 0x275 + 15cc4: b084 sub sp, #16 + 15cc6: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 15cca: ed2d 8b02 vpush {d8} + 15cce: f5ad 7d11 sub.w sp, sp, #580 ; 0x244 + 15cd2: ac9d add r4, sp, #628 ; 0x274 + 15cd4: e884 000e stmia.w r4, {r1, r2, r3} + 15cd8: f89d 6275 ldrb.w r6, [sp, #629] ; 0x275 if(message.getStatus()==BMC_NONE){ - 15c1c: 2e00 cmp r6, #0 - 15c1e: f000 809a beq.w 15d56 + 15cdc: 2e00 cmp r6, #0 + 15cde: f000 809c beq.w 15e1a switch(getStatus()){ - 15c22: f106 0308 add.w r3, r6, #8 - 15c26: f89d 2277 ldrb.w r2, [sp, #631] ; 0x277 - 15c2a: 4605 mov r5, r0 + 15ce2: f106 0308 add.w r3, r6, #8 + 15ce6: f89d 2277 ldrb.w r2, [sp, #631] ; 0x277 + 15cea: 4605 mov r5, r0 bitSet(flags, bit); - 15c2c: f500 5a80 add.w sl, r0, #4096 ; 0x1000 - 15c30: b2db uxtb r3, r3 - 15c32: 923f str r2, [sp, #252] ; 0xfc - 15c34: 2b07 cmp r3, #7 - 15c36: d82e bhi.n 15c96 - 15c38: 22dd movs r2, #221 ; 0xdd - 15c3a: fa22 f303 lsr.w r3, r2, r3 - 15c3e: 07d8 lsls r0, r3, #31 - 15c40: d529 bpl.n 15c96 + 15cec: f500 5b80 add.w fp, r0, #4096 ; 0x1000 + 15cf0: b2db uxtb r3, r3 + 15cf2: 923f str r2, [sp, #252] ; 0xfc + 15cf4: 2b07 cmp r3, #7 + 15cf6: d82f bhi.n 15d58 + 15cf8: 22dd movs r2, #221 ; 0xdd + 15cfa: fa22 f303 lsr.w r3, r2, r3 + 15cfe: 07d8 lsls r0, r3, #31 + 15d00: d52a bpl.n 15d58 return BMC_IS_CLOCK(getStatus()); //0xF8 - 15c42: f1a6 01f8 sub.w r1, r6, #248 ; 0xf8 + 15d02: f1a6 01f8 sub.w r1, r6, #248 ; 0xf8 + if(midiClock.read(isClock, isStartOrContinue)){ + 15d06: f243 10a0 movw r0, #12704 ; 0x31a0 } bool isContinue(){ return BMC_IS_CONTINUE(getStatus()); //0xFB } bool isStartOrContinue(){ return isStart() || isContinue(); - 15c46: 2efa cmp r6, #250 ; 0xfa + 15d0a: 2efa cmp r6, #250 ; 0xfa return BMC_IS_CLOCK(getStatus()); //0xF8 - 15c48: 963e str r6, [sp, #248] ; 0xf8 - 15c4a: fab1 f181 clz r1, r1 - 15c4e: ea4f 1151 mov.w r1, r1, lsr #5 + 15d0c: 46b2 mov sl, r6 + 15d0e: fab1 f181 clz r1, r1 + 15d12: 4428 add r0, r5 + 15d14: ea4f 1151 mov.w r1, r1, lsr #5 return isStart() || isContinue(); - 15c52: f040 8230 bne.w 160b6 - if(midiClock.read(isClock, isStartOrContinue)){ - 15c56: 2201 movs r2, #1 - 15c58: 2100 movs r1, #0 - 15c5a: f505 5046 add.w r0, r5, #12672 ; 0x3180 - 15c5e: f7ff fcff bl 15660 - 15c62: 2800 cmp r0, #0 - 15c64: f040 80fe bne.w 15e64 + 15d18: f040 822c bne.w 16174 + 15d1c: 2201 movs r2, #1 + 15d1e: 2100 movs r1, #0 + 15d20: f7ff fcfe bl 15720 + 15d24: 2800 cmp r0, #0 + 15d26: f040 80ff bne.w 15f28 editorRead(); - 15c68: 4628 mov r0, r5 - 15c6a: f7f0 ffd5 bl 6c18 + 15d2a: 4628 mov r0, r5 + 15d2c: f7f0 ffac bl 6c88 readTrigger(); - 15c6e: 4628 mov r0, r5 - 15c70: f002 fb2c bl 182cc + 15d30: 4628 mov r0, r5 + 15d32: f002 fb3d bl 183b0 if(!d.matchSource(BMC_USB)){ - 15c74: f89d 2274 ldrb.w r2, [sp, #628] ; 0x274 - 15c78: f89d 3276 ldrb.w r3, [sp, #630] ; 0x276 - 15c7c: 2a01 cmp r2, #1 - 15c7e: f89d 9278 ldrb.w r9, [sp, #632] ; 0x278 - 15c82: d12b bne.n 15cdc + 15d36: f89d 2274 ldrb.w r2, [sp, #628] ; 0x274 + 15d3a: f89d 3276 ldrb.w r3, [sp, #630] ; 0x276 + 15d3e: 2a01 cmp r2, #1 + 15d40: f89d 9278 ldrb.w r9, [sp, #632] ; 0x278 + 15d44: d12b bne.n 15d9e return bitRead(flags, 0); - 15c84: f505 5740 add.w r7, r5, #12288 ; 0x3000 - 15c88: f897 2300 ldrb.w r2, [r7, #768] ; 0x300 + 15d46: f505 5740 add.w r7, r5, #12288 ; 0x3000 + 15d4a: f897 2320 ldrb.w r2, [r7, #800] ; 0x320 if(!controller.isOnline()){ - 15c8c: 07d2 lsls r2, r2, #31 - 15c8e: d525 bpl.n 15cdc - 15c90: f50d 789e add.w r8, sp, #316 ; 0x13c - 15c94: e151 b.n 15f3a - 15c96: f8da 385c ldr.w r3, [sl, #2140] ; 0x85c + 15d4e: 07d2 lsls r2, r2, #31 + 15d50: d525 bpl.n 15d9e + 15d52: f50d 789e add.w r8, sp, #316 ; 0x13c + 15d56: e153 b.n 16000 + 15d58: f8db 385c ldr.w r3, [fp, #2140] ; 0x85c return BMC_IS_CLOCK(getStatus()); //0xF8 - 15c9a: 2eef cmp r6, #239 ; 0xef - 15c9c: f043 0301 orr.w r3, r3, #1 - 15ca0: f8ca 385c str.w r3, [sl, #2140] ; 0x85c - 15ca4: d8cd bhi.n 15c42 + 15d5c: 2eef cmp r6, #239 ; 0xef + 15d5e: f043 0301 orr.w r3, r3, #1 + 15d62: f8cb 385c str.w r3, [fp, #2140] ; 0x85c + 15d66: d8cc bhi.n 15d02 if(midiClock.read(isClock, isStartOrContinue)){ - 15ca6: 2200 movs r2, #0 - 15ca8: f006 03f0 and.w r3, r6, #240 ; 0xf0 - 15cac: f505 5046 add.w r0, r5, #12672 ; 0x3180 - 15cb0: 4611 mov r1, r2 - 15cb2: 933e str r3, [sp, #248] ; 0xf8 - 15cb4: f7ff fcd4 bl 15660 - 15cb8: 2800 cmp r0, #0 - 15cba: f040 8208 bne.w 160ce + 15d68: 2200 movs r2, #0 + 15d6a: f243 10a0 movw r0, #12704 ; 0x31a0 + 15d6e: f006 0af0 and.w sl, r6, #240 ; 0xf0 + 15d72: 4428 add r0, r5 + 15d74: 4611 mov r1, r2 + 15d76: f7ff fcd3 bl 15720 + 15d7a: 2800 cmp r0, #0 + 15d7c: f040 8204 bne.w 16188 editorRead(); - 15cbe: 4628 mov r0, r5 - 15cc0: f7f0 ffaa bl 6c18 + 15d80: 4628 mov r0, r5 + 15d82: f7f0 ff81 bl 6c88 readTrigger(); - 15cc4: 4628 mov r0, r5 - 15cc6: f002 fb01 bl 182cc + 15d86: 4628 mov r0, r5 + 15d88: f002 fb12 bl 183b0 if(!d.matchSource(BMC_USB)){ - 15cca: f89d 2274 ldrb.w r2, [sp, #628] ; 0x274 - 15cce: f89d 3276 ldrb.w r3, [sp, #630] ; 0x276 - 15cd2: 2a01 cmp r2, #1 - 15cd4: f89d 9278 ldrb.w r9, [sp, #632] ; 0x278 - 15cd8: f000 809a beq.w 15e10 - 15cdc: f243 2b20 movw fp, #12832 ; 0x3220 - 15ce0: f50d 789e add.w r8, sp, #316 ; 0x13c - 15ce4: 44ab add fp, r5 + 15d8c: f89d 2274 ldrb.w r2, [sp, #628] ; 0x274 + 15d90: f89d 3276 ldrb.w r3, [sp, #630] ; 0x276 + 15d94: 2a01 cmp r2, #1 + 15d96: f89d 9278 ldrb.w r9, [sp, #632] ; 0x278 + 15d9a: f000 809b beq.w 15ed4 + 15d9e: f505 5349 add.w r3, r5, #12864 ; 0x3240 + 15da2: f50d 789e add.w r8, sp, #316 ; 0x13c + 15da6: 933e str r3, [sp, #248] ; 0xf8 fas.incoming(message); - 15ce6: f240 1203 movw r2, #259 ; 0x103 - 15cea: a99d add r1, sp, #628 ; 0x274 - 15cec: 4640 mov r0, r8 - 15cee: f014 fd0b bl 2a708 + 15da8: f240 1203 movw r2, #259 ; 0x103 + 15dac: a99d add r1, sp, #628 ; 0x274 + 15dae: 4640 mov r0, r8 + 15db0: f014 fd1e bl 2a7f0 return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 15cf2: f898 3001 ldrb.w r3, [r8, #1] - 15cf6: 2bf0 cmp r3, #240 ; 0xf0 - 15cf8: d104 bne.n 15d04 - 15cfa: f8b8 9003 ldrh.w r9, [r8, #3] + 15db4: f898 3001 ldrb.w r3, [r8, #1] + 15db8: 2bf0 cmp r3, #240 ; 0xf0 + 15dba: d104 bne.n 15dc6 + 15dbc: f8b8 9003 ldrh.w r9, [r8, #3] return (message.isSysEx() && - 15cfe: f1b9 0f04 cmp.w r9, #4 - 15d02: d84b bhi.n 15d9c + 15dc0: f1b9 0f04 cmp.w r9, #4 + 15dc4: d84c bhi.n 15e60 beatBuddy.incoming(message); - 15d04: 22f7 movs r2, #247 ; 0xf7 - 15d06: a9a0 add r1, sp, #640 ; 0x280 - 15d08: 4668 mov r0, sp - 15d0a: f50b 6bae add.w fp, fp, #1392 ; 0x570 - 15d0e: f014 fcfb bl 2a708 - 15d12: ab9d add r3, sp, #628 ; 0x274 - 15d14: 4658 mov r0, fp - 15d16: cb0e ldmia r3, {r1, r2, r3} - 15d18: f7ff fe9a bl 15a50 + 15dc6: 9b3e ldr r3, [sp, #248] ; 0xf8 + 15dc8: 22f7 movs r2, #247 ; 0xf7 + 15dca: a9a0 add r1, sp, #640 ; 0x280 + 15dcc: 4668 mov r0, sp + 15dce: f503 67ae add.w r7, r3, #1392 ; 0x570 + 15dd2: f014 fd0d bl 2a7f0 + 15dd6: ab9d add r3, sp, #628 ; 0x274 + 15dd8: 4638 mov r0, r7 + 15dda: cb0e ldmia r3, {r1, r2, r3} + 15ddc: f7ff fe98 bl 15b10 return bitRead(flags, bit); - 15d1c: f89a 3acc ldrb.w r3, [sl, #2764] ; 0xacc + 15de0: f89b 3acc ldrb.w r3, [fp, #2764] ; 0xacc matchSourceAndChannel() && - 15d20: 07df lsls r7, r3, #31 - 15d22: d509 bpl.n 15d38 + 15de4: 07df lsls r7, r3, #31 + 15de6: d509 bpl.n 15dfc return (t_and) ? (status & 0xF0) : status; - 15d24: f89a 39c1 ldrb.w r3, [sl, #2497] ; 0x9c1 - 15d28: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 15de8: f89b 39c1 ldrb.w r3, [fp, #2497] ; 0x9c1 + 15dec: f003 03f0 and.w r3, r3, #240 ; 0xf0 switch(getStatus(true)){ - 15d2c: 2bb0 cmp r3, #176 ; 0xb0 - 15d2e: f000 8198 beq.w 16062 - 15d32: 2bc0 cmp r3, #192 ; 0xc0 - 15d34: f000 8195 beq.w 16062 + 15df0: 2bb0 cmp r3, #176 ; 0xb0 + 15df2: f000 8195 beq.w 16120 + 15df6: 2bc0 cmp r3, #192 ; 0xc0 + 15df8: f000 8192 beq.w 16120 if(message.isClock()){ - 15d38: 9b3e ldr r3, [sp, #248] ; 0xf8 - 15d3a: 2bf8 cmp r3, #248 ; 0xf8 - 15d3c: d013 beq.n 15d66 + 15dfc: f1ba 0ff8 cmp.w sl, #248 ; 0xf8 + 15e00: d013 beq.n 15e2a return getStatus()>127 && !isUndefined(); - 15d3e: 0631 lsls r1, r6, #24 - 15d40: d416 bmi.n 15d70 + 15e02: 0631 lsls r1, r6, #24 + 15e04: d416 bmi.n 15e34 midiInDebug(message); - 15d42: a9a0 add r1, sp, #640 ; 0x280 - 15d44: 22f7 movs r2, #247 ; 0xf7 - 15d46: 4668 mov r0, sp - 15d48: f014 fcde bl 2a708 - 15d4c: ab9d add r3, sp, #628 ; 0x274 - 15d4e: 4628 mov r0, r5 - 15d50: cb0e ldmia r3, {r1, r2, r3} - 15d52: f7ef fb2b bl 53ac -} - 15d56: f50d 7d11 add.w sp, sp, #580 ; 0x244 - 15d5a: ecbd 8b02 vpop {d8} - 15d5e: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 15d62: b004 add sp, #16 - 15d64: 4770 bx lr + 15e06: a9a0 add r1, sp, #640 ; 0x280 + 15e08: 22f7 movs r2, #247 ; 0xf7 + 15e0a: 4668 mov r0, sp + 15e0c: f014 fcf0 bl 2a7f0 + 15e10: ab9d add r3, sp, #628 ; 0x274 + 15e12: 4628 mov r0, r5 + 15e14: cb0e ldmia r3, {r1, r2, r3} + 15e16: f7ef fb0d bl 5434 +} + 15e1a: f50d 7d11 add.w sp, sp, #580 ; 0x244 + 15e1e: ecbd 8b02 vpop {d8} + 15e22: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 15e26: b004 add sp, #16 + 15e28: 4770 bx lr if(callback.midiClockTickReceived){ - 15d66: f8da 38ac ldr.w r3, [sl, #2220] ; 0x8ac - 15d6a: b153 cbz r3, 15d82 + 15e2a: f8db 38ac ldr.w r3, [fp, #2220] ; 0x8ac + 15e2e: b153 cbz r3, 15e46 callback.midiClockTickReceived(); - 15d6c: 4798 blx r3 - 15d6e: e7e8 b.n 15d42 + 15e30: 4798 blx r3 + 15e32: e7e8 b.n 15e06 switch(getStatus()){ - 15d70: 360c adds r6, #12 - 15d72: b2f6 uxtb r6, r6 - 15d74: 2e09 cmp r6, #9 - 15d76: d804 bhi.n 15d82 - 15d78: f240 230b movw r3, #523 ; 0x20b - 15d7c: 40f3 lsrs r3, r6 - 15d7e: 07dc lsls r4, r3, #31 - 15d80: d4df bmi.n 15d42 + 15e34: 360c adds r6, #12 + 15e36: b2f6 uxtb r6, r6 + 15e38: 2e09 cmp r6, #9 + 15e3a: d804 bhi.n 15e46 + 15e3c: f240 230b movw r3, #523 ; 0x20b + 15e40: 40f3 lsrs r3, r6 + 15e42: 07dc lsls r4, r3, #31 + 15e44: d4df bmi.n 15e06 if(callback.midiReceived){ - 15d82: f8da 68a8 ldr.w r6, [sl, #2216] ; 0x8a8 - 15d86: 2e00 cmp r6, #0 - 15d88: d0db beq.n 15d42 + 15e46: f8db 68a8 ldr.w r6, [fp, #2216] ; 0x8a8 + 15e4a: 2e00 cmp r6, #0 + 15e4c: d0db beq.n 15e06 callback.midiReceived(message); - 15d8a: a9a1 add r1, sp, #644 ; 0x284 - 15d8c: 22f3 movs r2, #243 ; 0xf3 - 15d8e: 4668 mov r0, sp - 15d90: f014 fcba bl 2a708 - 15d94: ab9d add r3, sp, #628 ; 0x274 - 15d96: cb0f ldmia r3, {r0, r1, r2, r3} - 15d98: 47b0 blx r6 - 15d9a: e7d2 b.n 15d42 + 15e4e: a9a1 add r1, sp, #644 ; 0x284 + 15e50: 22f3 movs r2, #243 ; 0xf3 + 15e52: 4668 mov r0, sp + 15e54: f014 fccc bl 2a7f0 + 15e58: ab9d add r3, sp, #628 ; 0x274 + 15e5a: cb0f ldmia r3, {r0, r1, r2, r3} + 15e5c: 47b0 blx r6 + 15e5e: e7d2 b.n 15e06 message.sysex[1] == 0x00 && - 15d9c: f898 2006 ldrb.w r2, [r8, #6] + 15e60: f898 2006 ldrb.w r2, [r8, #6] message.size() >= minLength && - 15da0: 2a00 cmp r2, #0 - 15da2: d1af bne.n 15d04 + 15e64: 2a00 cmp r2, #0 + 15e66: d1ae bne.n 15dc6 message.sysex[1] == 0x00 && - 15da4: f898 3007 ldrb.w r3, [r8, #7] - 15da8: 2b01 cmp r3, #1 - 15daa: d1ab bne.n 15d04 + 15e68: f898 3007 ldrb.w r3, [r8, #7] + 15e6c: 2b01 cmp r3, #1 + 15e6e: d1aa bne.n 15dc6 message.sysex[2] == 0x01 && - 15dac: f898 3008 ldrb.w r3, [r8, #8] - 15db0: 2b74 cmp r3, #116 ; 0x74 - 15db2: d1a7 bne.n 15d04 + 15e70: f898 3008 ldrb.w r3, [r8, #8] + 15e74: 2b74 cmp r3, #116 ; 0x74 + 15e76: d1a6 bne.n 15dc6 switch(message.sysex[5]){ - 15db4: f898 100a ldrb.w r1, [r8, #10] - 15db8: f1a1 0310 sub.w r3, r1, #16 - 15dbc: 2b01 cmp r3, #1 - 15dbe: f200 8535 bhi.w 1682c - 15dc2: f505 5740 add.w r7, r5, #12288 ; 0x3000 + 15e78: f898 100a ldrb.w r1, [r8, #10] + 15e7c: f1a1 0310 sub.w r3, r1, #16 + 15e80: 2b01 cmp r3, #1 + 15e82: f200 8531 bhi.w 168e8 + 15e86: f505 5740 add.w r7, r5, #12288 ; 0x3000 if(message.sysex[5] == BMC_FAS3_FUNC_ID_TEMPO){ - 15dc6: 2910 cmp r1, #16 - 15dc8: f000 8579 beq.w 168be - 15dcc: f897 3373 ldrb.w r3, [r7, #883] ; 0x373 + 15e8a: 2910 cmp r1, #16 + 15e8c: f000 8577 beq.w 1697e + 15e90: f897 3393 ldrb.w r3, [r7, #915] ; 0x393 if(!connected()){ - 15dd0: 07da lsls r2, r3, #31 - 15dd2: d597 bpl.n 15d04 + 15e94: 07da lsls r2, r3, #31 + 15e96: d596 bpl.n 15dc6 fas.incoming(message); - 15dd4: f50b 739a add.w r3, fp, #308 ; 0x134 + 15e98: 9b3e ldr r3, [sp, #248] ; 0xf8 switch(message.sysex[5]){ - 15dd8: 390a subs r1, #10 - 15dda: 9340 str r3, [sp, #256] ; 0x100 - 15ddc: 2909 cmp r1, #9 - 15dde: d891 bhi.n 15d04 - 15de0: a301 add r3, pc, #4 ; (adr r3, 15de8 ) - 15de2: f853 f021 ldr.w pc, [r3, r1, lsl #2] - 15de6: bf00 nop - 15de8: 0001654b .word 0x0001654b - 15dec: 000164b5 .word 0x000164b5 - 15df0: 00016455 .word 0x00016455 - 15df4: 0001638b .word 0x0001638b - 15df8: 000162ef .word 0x000162ef - 15dfc: 00016291 .word 0x00016291 - 15e00: 00015d05 .word 0x00015d05 - 15e04: 00016139 .word 0x00016139 - 15e08: 00015d05 .word 0x00015d05 - 15e0c: 000161fb .word 0x000161fb - 15e10: f50d 789e add.w r8, sp, #316 ; 0x13c - 15e14: f505 5740 add.w r7, r5, #12288 ; 0x3000 - 15e18: f897 2300 ldrb.w r2, [r7, #768] ; 0x300 + 15e9a: 390a subs r1, #10 + 15e9c: f503 739a add.w r3, r3, #308 ; 0x134 + 15ea0: 9340 str r3, [sp, #256] ; 0x100 + 15ea2: 2909 cmp r1, #9 + 15ea4: d88f bhi.n 15dc6 + 15ea6: a301 add r3, pc, #4 ; (adr r3, 15eac ) + 15ea8: f853 f021 ldr.w pc, [r3, r1, lsl #2] + 15eac: 00016607 .word 0x00016607 + 15eb0: 00016571 .word 0x00016571 + 15eb4: 00016511 .word 0x00016511 + 15eb8: 00016447 .word 0x00016447 + 15ebc: 000163ab .word 0x000163ab + 15ec0: 0001634d .word 0x0001634d + 15ec4: 00015dc7 .word 0x00015dc7 + 15ec8: 000161f5 .word 0x000161f5 + 15ecc: 00015dc7 .word 0x00015dc7 + 15ed0: 000162b7 .word 0x000162b7 + 15ed4: f50d 789e add.w r8, sp, #316 ; 0x13c + 15ed8: f505 5740 add.w r7, r5, #12288 ; 0x3000 + 15edc: f897 2320 ldrb.w r2, [r7, #800] ; 0x320 if(!controller.isOnline()){ - 15e1c: 07d2 lsls r2, r2, #31 - 15e1e: f140 811c bpl.w 1605a + 15ee0: 07d2 lsls r2, r2, #31 + 15ee2: f140 8119 bpl.w 16118 if(d.isControlChange()){ - 15e22: 9a3e ldr r2, [sp, #248] ; 0xf8 - 15e24: 2ab0 cmp r2, #176 ; 0xb0 - 15e26: f040 8084 bne.w 15f32 + 15ee6: f1ba 0fb0 cmp.w sl, #176 ; 0xb0 + 15eea: f040 8085 bne.w 15ff8 if(c>=0x30 && c<=0x37){ // v-select - 15e2a: 9b3f ldr r3, [sp, #252] ; 0xfc - 15e2c: f1a3 0030 sub.w r0, r3, #48 ; 0x30 - 15e30: b2c0 uxtb r0, r0 - 15e32: 2807 cmp r0, #7 - 15e34: f200 8667 bhi.w 16b06 + 15eee: 9b3f ldr r3, [sp, #252] ; 0xfc + 15ef0: f1a3 0030 sub.w r0, r3, #48 ; 0x30 + 15ef4: b2c0 uxtb r0, r0 + 15ef6: 2807 cmp r0, #7 + 15ef8: f200 8661 bhi.w 16bbe if(callback.dawChannelVPotUpdate){ - 15e38: f8d7 3278 ldr.w r3, [r7, #632] ; 0x278 + 15efc: f8d7 3298 ldr.w r3, [r7, #664] ; 0x298 vPot = value; - 15e3c: eb07 07c0 add.w r7, r7, r0, lsl #3 - 15e40: f243 2b20 movw fp, #12832 ; 0x3220 - 15e44: f887 9310 strb.w r9, [r7, #784] ; 0x310 - 15e48: f8d3 70a0 ldr.w r7, [r3, #160] ; 0xa0 - 15e4c: 44ab add fp, r5 - 15e4e: 2f00 cmp r7, #0 - 15e50: f43f af49 beq.w 15ce6 + 15f00: eb07 07c0 add.w r7, r7, r0, lsl #3 + 15f04: f887 9330 strb.w r9, [r7, #816] ; 0x330 + 15f08: f8d3 70a4 ldr.w r7, [r3, #164] ; 0xa4 + 15f0c: 2f00 cmp r7, #0 + 15f0e: f000 8103 beq.w 16118 callback.dawChannelVPotUpdate(ch, value, centered, mode); - 15e54: f3c9 1301 ubfx r3, r9, #4, #2 - 15e58: f3c9 1280 ubfx r2, r9, #6, #1 - 15e5c: f009 010f and.w r1, r9, #15 - 15e60: 47b8 blx r7 - 15e62: e740 b.n 15ce6 + 15f12: f3c9 1301 ubfx r3, r9, #4, #2 + 15f16: f3c9 1280 ubfx r2, r9, #6, #1 + 15f1a: f009 010f and.w r1, r9, #15 + 15f1e: 47b8 blx r7 + 15f20: f505 5349 add.w r3, r5, #12864 ; 0x3240 + 15f24: 933e str r3, [sp, #248] ; 0xf8 + 15f26: e73f b.n 15da8 handleClockLeds(); - 15e64: 4628 mov r0, r5 - 15e66: f7f3 ff5f bl 9d28 + 15f28: 4628 mov r0, r5 + 15f2a: f7f3 fecd bl 9cc8 if(callback.midiClockBeat){ - 15e6a: f8da 38b0 ldr.w r3, [sl, #2224] ; 0x8b0 - 15e6e: 2b00 cmp r3, #0 - 15e70: f43f af25 beq.w 15cbe + 15f2e: f8db 38b0 ldr.w r3, [fp, #2224] ; 0x8b0 + 15f32: 2b00 cmp r3, #0 + 15f34: f43f af24 beq.w 15d80 callback.midiClockBeat(); - 15e74: 4798 blx r3 + 15f38: 4798 blx r3 if(t_status==BMC_MIDI_RT_ACTIVE_SENSE){ - 15e76: 2efe cmp r6, #254 ; 0xfe - 15e78: d109 bne.n 15e8e - 15e7a: 4baa ldr r3, [pc, #680] ; (16124 ) + 15f3a: 2efe cmp r6, #254 ; 0xfe + 15f3c: d109 bne.n 15f52 + 15f3e: 4ba8 ldr r3, [pc, #672] ; (161e0 ) interval = value; - 15e7c: f505 5740 add.w r7, r5, #12288 ; 0x3000 - 15e80: 681b ldr r3, [r3, #0] + 15f40: f505 5740 add.w r7, r5, #12288 ; 0x3000 + 15f44: 681b ldr r3, [r3, #0] prevTime = (unsigned long) _BMCTiming::get(); - 15e82: f8c7 31e4 str.w r3, [r7, #484] ; 0x1e4 + 15f46: f8c7 3204 str.w r3, [r7, #516] ; 0x204 interval = value; - 15e86: f44f 73fa mov.w r3, #500 ; 0x1f4 - 15e8a: f8a7 31e0 strh.w r3, [r7, #480] ; 0x1e0 + 15f4a: f44f 73fa mov.w r3, #500 ; 0x1f4 + 15f4e: f8a7 3200 strh.w r3, [r7, #512] ; 0x200 editorRead(); - 15e8e: 4628 mov r0, r5 - 15e90: f50d 789e add.w r8, sp, #316 ; 0x13c - 15e94: f7f0 fec0 bl 6c18 + 15f52: 4628 mov r0, r5 + 15f54: f50d 789e add.w r8, sp, #316 ; 0x13c + 15f58: f7f0 fe96 bl 6c88 readTrigger(); - 15e98: 4628 mov r0, r5 - 15e9a: f002 fa17 bl 182cc + 15f5c: 4628 mov r0, r5 + 15f5e: f002 fa27 bl 183b0 daw.incoming(message); - 15e9e: f240 1203 movw r2, #259 ; 0x103 - 15ea2: a99d add r1, sp, #628 ; 0x274 - 15ea4: 4640 mov r0, r8 - 15ea6: f014 fc2f bl 2a708 + 15f62: f240 1203 movw r2, #259 ; 0x103 + 15f66: a99d add r1, sp, #628 ; 0x274 + 15f68: 4640 mov r0, r8 + 15f6a: f014 fc41 bl 2a7f0 if(!d.matchSource(BMC_USB)){ - 15eaa: f89d 2274 ldrb.w r2, [sp, #628] ; 0x274 - 15eae: f89d 3276 ldrb.w r3, [sp, #630] ; 0x276 - 15eb2: 2a01 cmp r2, #1 - 15eb4: f89d 9278 ldrb.w r9, [sp, #632] ; 0x278 - 15eb8: f89d 127a ldrb.w r1, [sp, #634] ; 0x27a - 15ebc: f89d 027b ldrb.w r0, [sp, #635] ; 0x27b - 15ec0: f89d 427c ldrb.w r4, [sp, #636] ; 0x27c - 15ec4: f89d c27d ldrb.w ip, [sp, #637] ; 0x27d - 15ec8: f040 80c7 bne.w 1605a + 15f6e: f89d 2274 ldrb.w r2, [sp, #628] ; 0x274 + 15f72: f89d 3276 ldrb.w r3, [sp, #630] ; 0x276 + 15f76: 2a01 cmp r2, #1 + 15f78: f89d 9278 ldrb.w r9, [sp, #632] ; 0x278 + 15f7c: f89d 127a ldrb.w r1, [sp, #634] ; 0x27a + 15f80: f89d 027b ldrb.w r0, [sp, #635] ; 0x27b + 15f84: f89d 427c ldrb.w r4, [sp, #636] ; 0x27c + 15f88: f89d c27d ldrb.w ip, [sp, #637] ; 0x27d + 15f8c: f040 80c4 bne.w 16118 if(d.isSysEx()){ - 15ecc: 9f3e ldr r7, [sp, #248] ; 0xf8 - 15ece: 2ff0 cmp r7, #240 ; 0xf0 - 15ed0: d1a0 bne.n 15e14 + 15f90: f1ba 0ff0 cmp.w sl, #240 ; 0xf0 + 15f94: d1a0 bne.n 15ed8 if(d.size()>=7 && d.sysex[1]==0 && d.sysex[2]==0 && d.sysex[3]==0x66 && d.sysex[4]==BMC_DAW_DEVICE_ID){ - 15ed2: 9f3f ldr r7, [sp, #252] ; 0xfc - 15ed4: ea47 2e09 orr.w lr, r7, r9, lsl #8 - 15ed8: f1be 0f06 cmp.w lr, #6 - 15edc: f240 80bd bls.w 1605a - 15ee0: 4301 orrs r1, r0 - 15ee2: f040 80ba bne.w 1605a - 15ee6: 2c66 cmp r4, #102 ; 0x66 - 15ee8: f040 80b7 bne.w 1605a - 15eec: f1bc 0f10 cmp.w ip, #16 - 15ef0: f040 80b3 bne.w 1605a - 15ef4: f243 2b20 movw fp, #12832 ; 0x3220 + 15f96: 9f3f ldr r7, [sp, #252] ; 0xfc + 15f98: ea47 2e09 orr.w lr, r7, r9, lsl #8 + 15f9c: f1be 0f06 cmp.w lr, #6 + 15fa0: f240 80ba bls.w 16118 + 15fa4: 4301 orrs r1, r0 + 15fa6: f040 80b7 bne.w 16118 + 15faa: 2c66 cmp r4, #102 ; 0x66 + 15fac: f040 80b4 bne.w 16118 + 15fb0: f1bc 0f10 cmp.w ip, #16 + 15fb4: f040 80b0 bne.w 16118 incomingSysEx(d); - 15ef8: f888 3002 strb.w r3, [r8, #2] - 15efc: 9b3f ldr r3, [sp, #252] ; 0xfc - 15efe: 4668 mov r0, sp - 15f00: 44ab add fp, r5 - 15f02: f888 2000 strb.w r2, [r8] - 15f06: f888 3003 strb.w r3, [r8, #3] - 15f0a: f241 0366 movw r3, #4198 ; 0x1066 - 15f0e: f10b 0710 add.w r7, fp, #16 - 15f12: f8a8 1006 strh.w r1, [r8, #6] - 15f16: f8a8 3008 strh.w r3, [r8, #8] - 15f1a: a952 add r1, sp, #328 ; 0x148 - 15f1c: 22f7 movs r2, #247 ; 0xf7 - 15f1e: f888 9004 strb.w r9, [r8, #4] - 15f22: f014 fbf1 bl 2a708 - 15f26: 4638 mov r0, r7 - 15f28: e898 000e ldmia.w r8, {r1, r2, r3} - 15f2c: f7ff fcee bl 1590c + 15fb8: f888 3002 strb.w r3, [r8, #2] + 15fbc: 4668 mov r0, sp + 15fbe: 9b3f ldr r3, [sp, #252] ; 0xfc + 15fc0: f888 2000 strb.w r2, [r8] + 15fc4: f888 3003 strb.w r3, [r8, #3] + 15fc8: f505 5349 add.w r3, r5, #12864 ; 0x3240 + 15fcc: f8a8 1006 strh.w r1, [r8, #6] + 15fd0: a952 add r1, sp, #328 ; 0x148 + 15fd2: 461a mov r2, r3 + 15fd4: 933e str r3, [sp, #248] ; 0xf8 + 15fd6: f241 0366 movw r3, #4198 ; 0x1066 + 15fda: f888 9004 strb.w r9, [r8, #4] + 15fde: f102 0710 add.w r7, r2, #16 + 15fe2: 22f7 movs r2, #247 ; 0xf7 + 15fe4: f8a8 3008 strh.w r3, [r8, #8] + 15fe8: f014 fc02 bl 2a7f0 + 15fec: 4638 mov r0, r7 + 15fee: e898 000e ldmia.w r8, {r1, r2, r3} + 15ff2: f7ff fceb bl 159cc return true; - 15f30: e6d9 b.n 15ce6 + 15ff6: e6d7 b.n 15da8 } else if(d.isAfterTouch()){ - 15f32: 9a3e ldr r2, [sp, #248] ; 0xf8 - 15f34: 2ad0 cmp r2, #208 ; 0xd0 - 15f36: f000 85b1 beq.w 16a9c + 15ff8: f1ba 0fd0 cmp.w sl, #208 ; 0xd0 + 15ffc: f000 85ae beq.w 16b5c } else if(d.isNoteOn() || d.isNoteOff()){ - 15f3a: 9a3e ldr r2, [sp, #248] ; 0xf8 - 15f3c: f022 0210 bic.w r2, r2, #16 - 15f40: 2a80 cmp r2, #128 ; 0x80 - 15f42: d15e bne.n 16002 + 16000: f02a 0210 bic.w r2, sl, #16 + 16004: 2a80 cmp r2, #128 ; 0x80 + 16006: d15b bne.n 160c0 if(c<=0x07){ // rec/ready - 15f44: 9b3f ldr r3, [sp, #252] ; 0xfc - 15f46: 2b07 cmp r3, #7 - 15f48: f240 86bb bls.w 16cc2 + 16008: 9b3f ldr r3, [sp, #252] ; 0xfc + 1600a: 2b07 cmp r3, #7 + 1600c: f240 86b5 bls.w 16d7a } else if(c>=0x08 && c<=0x0F){ // solo - 15f4c: 9b3f ldr r3, [sp, #252] ; 0xfc - 15f4e: f1a3 0008 sub.w r0, r3, #8 - 15f52: b2c0 uxtb r0, r0 - 15f54: 2807 cmp r0, #7 - 15f56: f240 86f0 bls.w 16d3a + 16010: 9b3f ldr r3, [sp, #252] ; 0xfc + 16012: f1a3 0008 sub.w r0, r3, #8 + 16016: b2c0 uxtb r0, r0 + 16018: 2807 cmp r0, #7 + 1601a: f240 86ea bls.w 16df2 } else if(c>=0x10 && c<=0x17){ // mute - 15f5a: 9b3f ldr r3, [sp, #252] ; 0xfc - 15f5c: f1a3 0010 sub.w r0, r3, #16 - 15f60: b2c0 uxtb r0, r0 - 15f62: 2807 cmp r0, #7 - 15f64: f240 876d bls.w 16e42 + 1601e: 9b3f ldr r3, [sp, #252] ; 0xfc + 16020: f1a3 0010 sub.w r0, r3, #16 + 16024: b2c0 uxtb r0, r0 + 16026: 2807 cmp r0, #7 + 16028: f240 876c bls.w 16f04 } else if(c>=0x18 && c<=0x1F){ // select - 15f68: 9b3f ldr r3, [sp, #252] ; 0xfc - 15f6a: f1a3 0b18 sub.w fp, r3, #24 - 15f6e: fa5f fb8b uxtb.w fp, fp - 15f72: f1bb 0f07 cmp.w fp, #7 - 15f76: f240 87d1 bls.w 16f1c + 1602c: 9b3f ldr r3, [sp, #252] ; 0xfc + 1602e: 3b18 subs r3, #24 + 16030: b2d8 uxtb r0, r3 + 16032: 2807 cmp r0, #7 + 16034: f240 87d1 bls.w 16fda switch(c){ - 15f7a: 9b3f ldr r3, [sp, #252] ; 0xfc - 15f7c: 3b28 subs r3, #40 ; 0x28 - 15f7e: 2b3d cmp r3, #61 ; 0x3d - 15f80: d86b bhi.n 1605a - 15f82: e8df f013 tbh [pc, r3, lsl #1] - 15f86: 03ee .short 0x03ee - 15f88: 03ca03a6 .word 0x03ca03a6 - 15f8c: 03dc0382 .word 0x03dc0382 - 15f90: 006a0394 .word 0x006a0394 - 15f94: 006a006a .word 0x006a006a - 15f98: 03b8006a .word 0x03b8006a - 15f9c: 006a0370 .word 0x006a0370 - 15fa0: 006a006a .word 0x006a006a - 15fa4: 006a006a .word 0x006a006a - 15fa8: 006a006a .word 0x006a006a - 15fac: 006a006a .word 0x006a006a - 15fb0: 006a006a .word 0x006a006a - 15fb4: 006a006a .word 0x006a006a - 15fb8: 006a006a .word 0x006a006a - 15fbc: 006a006a .word 0x006a006a - 15fc0: 006a006a .word 0x006a006a - 15fc4: 006a006a .word 0x006a006a - 15fc8: 043f006a .word 0x043f006a - 15fcc: 041b03f7 .word 0x041b03f7 - 15fd0: 042d03af .word 0x042d03af - 15fd4: 040903d3 .word 0x040903d3 - 15fd8: 006a038b .word 0x006a038b - 15fdc: 0436006a .word 0x0436006a - 15fe0: 041203e5 .word 0x041203e5 - 15fe4: 0424039d .word 0x0424039d - 15fe8: 040003c1 .word 0x040003c1 - 15fec: 03670379 .word 0x03670379 - 15ff0: 035e0355 .word 0x035e0355 - 15ff4: 006a034c .word 0x006a034c - 15ff8: 006a006a .word 0x006a006a - 15ffc: 0343006a .word 0x0343006a - 16000: 0327 .short 0x0327 + 16038: 9b3f ldr r3, [sp, #252] ; 0xfc + 1603a: 3b28 subs r3, #40 ; 0x28 + 1603c: 2b3d cmp r3, #61 ; 0x3d + 1603e: d86b bhi.n 16118 + 16040: e8df f013 tbh [pc, r3, lsl #1] + 16044: 03a503ed .word 0x03a503ed + 16048: 038103c9 .word 0x038103c9 + 1604c: 039303db .word 0x039303db + 16050: 006a006a .word 0x006a006a + 16054: 006a006a .word 0x006a006a + 16058: 036f03b7 .word 0x036f03b7 + 1605c: 006a006a .word 0x006a006a + 16060: 006a006a .word 0x006a006a + 16064: 006a006a .word 0x006a006a + 16068: 006a006a .word 0x006a006a + 1606c: 006a006a .word 0x006a006a + 16070: 006a006a .word 0x006a006a + 16074: 006a006a .word 0x006a006a + 16078: 006a006a .word 0x006a006a + 1607c: 006a006a .word 0x006a006a + 16080: 006a006a .word 0x006a006a + 16084: 006a006a .word 0x006a006a + 16088: 03f6043e .word 0x03f6043e + 1608c: 03ae041a .word 0x03ae041a + 16090: 03d2042c .word 0x03d2042c + 16094: 038a0408 .word 0x038a0408 + 16098: 006a006a .word 0x006a006a + 1609c: 03e40435 .word 0x03e40435 + 160a0: 039c0411 .word 0x039c0411 + 160a4: 03c00423 .word 0x03c00423 + 160a8: 037803ff .word 0x037803ff + 160ac: 03540366 .word 0x03540366 + 160b0: 034b035d .word 0x034b035d + 160b4: 006a006a .word 0x006a006a + 160b8: 006a006a .word 0x006a006a + 160bc: 03260342 .word 0x03260342 } else if(d.isPitchBend()){ - 16002: 9a3e ldr r2, [sp, #248] ; 0xf8 - 16004: 2ae0 cmp r2, #224 ; 0xe0 - 16006: d128 bne.n 1605a + 160c0: f1ba 0fe0 cmp.w sl, #224 ; 0xe0 + 160c4: d128 bne.n 16118 uint8_t ch = d.getChannel()-1; - 16008: 3b01 subs r3, #1 + 160c6: 3b01 subs r3, #1 return (getData1() & 0x7F) | ((getData2() & 0x7F) << 7); - 1600a: ea4f 12c9 mov.w r2, r9, lsl #7 - 1600e: b2d8 uxtb r0, r3 + 160c8: ea4f 12c9 mov.w r2, r9, lsl #7 + 160cc: b2d8 uxtb r0, r3 int16_t value = d.getPitchValue() & 0x3FFC; - 16010: 9b3f ldr r3, [sp, #252] ; 0xfc - 16012: f402 527e and.w r2, r2, #16256 ; 0x3f80 - 16016: f003 017c and.w r1, r3, #124 ; 0x7c + 160ce: 9b3f ldr r3, [sp, #252] ; 0xfc + 160d0: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 160d4: f003 017c and.w r1, r3, #124 ; 0x7c num += in_range / 2; - 1601a: f641 43fc movw r3, #7420 ; 0x1cfc + 160d8: f641 43fc movw r3, #7420 ; 0x1cfc if(ch==8){ - 1601e: 2808 cmp r0, #8 + 160dc: 2808 cmp r0, #8 int16_t value = d.getPitchValue() & 0x3FFC; - 16020: ea41 0102 orr.w r1, r1, r2 - 16024: f643 12fb movw r2, #14843 ; 0x39fb - 16028: fb11 3102 smlabb r1, r1, r2, r3 + 160de: ea41 0102 orr.w r1, r1, r2 + 160e2: f643 12fb movw r2, #14843 ; 0x39fb + 160e6: fb11 3102 smlabb r1, r1, r2, r3 long result = num / in_range + out_min; - 1602c: 4b3e ldr r3, [pc, #248] ; (16128 ) - 1602e: ea4f 01d1 mov.w r1, r1, lsr #3 - 16032: fba3 3101 umull r3, r1, r3, r1 - 16036: ea4f 2111 mov.w r1, r1, lsr #8 - 1603a: f5a1 5100 sub.w r1, r1, #8192 ; 0x2000 + 160ea: 4b3e ldr r3, [pc, #248] ; (161e4 ) + 160ec: ea4f 01d1 mov.w r1, r1, lsr #3 + 160f0: fba3 3101 umull r3, r1, r3, r1 + 160f4: ea4f 2111 mov.w r1, r1, lsr #8 + 160f8: f5a1 5100 sub.w r1, r1, #8192 ; 0x2000 value = map(value, 0, 14840, (-8192), 6651); - 1603e: b20b sxth r3, r1 + 160fc: b20b sxth r3, r1 if(ch==8){ - 16040: f000 87be beq.w 16fc0 + 160fe: f000 87b9 beq.w 17074 if(chAllowed(n)){ - 16044: d803 bhi.n 1604e + 16102: d803 bhi.n 1610c fader = value; - 16046: eb07 02c0 add.w r2, r7, r0, lsl #3 - 1604a: f8a2 330e strh.w r3, [r2, #782] ; 0x30e + 16104: eb07 02c0 add.w r2, r7, r0, lsl #3 + 16108: f8a2 332e strh.w r3, [r2, #814] ; 0x32e if(callback.dawRecievedChannelFaderPosition){ - 1604e: f8d7 3278 ldr.w r3, [r7, #632] ; 0x278 - 16052: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 - 16056: b103 cbz r3, 1605a + 1610c: f8d7 3298 ldr.w r3, [r7, #664] ; 0x298 + 16110: f8d3 30a8 ldr.w r3, [r3, #168] ; 0xa8 + 16114: b103 cbz r3, 16118 callback.dawRecievedChannelFaderPosition(ch, value); - 16058: 4798 blx r3 - 1605a: f243 2b20 movw fp, #12832 ; 0x3220 - 1605e: 44ab add fp, r5 - 16060: e641 b.n 15ce6 + 16116: 4798 blx r3 + 16118: f505 5349 add.w r3, r5, #12864 ; 0x3240 + 1611c: 933e str r3, [sp, #248] ; 0xf8 + 1611e: e643 b.n 15da8 return (channel==0 || (channel == message.getChannel())); - 16062: f50a 5380 add.w r3, sl, #4096 ; 0x1000 - 16066: f893 32ef ldrb.w r3, [r3, #751] ; 0x2ef - 1606a: b123 cbz r3, 16076 - 1606c: f89a 29c2 ldrb.w r2, [sl, #2498] ; 0x9c2 - 16070: 429a cmp r2, r3 - 16072: f47f ae61 bne.w 15d38 + 16120: f50b 5380 add.w r3, fp, #4096 ; 0x1000 + 16124: f893 32ef ldrb.w r3, [r3, #751] ; 0x2ef + 16128: b123 cbz r3, 16134 + 1612a: f89b 29c2 ldrb.w r2, [fp, #2498] ; 0x9c2 + 1612e: 429a cmp r2, r3 + 16130: f47f ae64 bne.w 15dfc return ports; - 16076: f505 5300 add.w r3, r5, #8192 ; 0x2000 + 16134: f505 5300 add.w r3, r5, #8192 ; 0x2000 return BMC_MATCH_PORT(message.getSource(),listenerPorts.get()); - 1607a: f89a 29c0 ldrb.w r2, [sl, #2496] ; 0x9c0 - 1607e: f893 32ed ldrb.w r3, [r3, #749] ; 0x2ed + 16138: f89b 29c0 ldrb.w r2, [fp, #2496] ; 0x9c0 + 1613c: f893 32ed ldrb.w r3, [r3, #749] ; 0x2ed if(message.isProgramChange()){ - 16082: 421a tst r2, r3 - 16084: f43f ae58 beq.w 15d38 - 16088: 9b3e ldr r3, [sp, #248] ; 0xf8 - 1608a: 2bc0 cmp r3, #192 ; 0xc0 - 1608c: f47f ae54 bne.w 15d38 + 16140: 421a tst r2, r3 + 16142: f43f ae5b beq.w 15dfc + 16146: f1ba 0fc0 cmp.w sl, #192 ; 0xc0 + 1614a: f47f ae57 bne.w 15dfc return settings.data[1] & 0x03; - 16090: f8da 37fc ldr.w r3, [sl, #2044] ; 0x7fc - 16094: 689b ldr r3, [r3, #8] - 16096: f003 0303 and.w r3, r3, #3 + 1614e: f8db 37fc ldr.w r3, [fp, #2044] ; 0x7fc + 16152: 689b ldr r3, [r3, #8] + 16154: f003 0303 and.w r3, r3, #3 switch(settings.getIncomingProgramType()){ - 1609a: 2b02 cmp r3, #2 - 1609c: d020 beq.n 160e0 - 1609e: 2b03 cmp r3, #3 - 160a0: d028 beq.n 160f4 - 160a2: 2b01 cmp r3, #1 - 160a4: f47f ae4b bne.w 15d3e + 16158: 2b02 cmp r3, #2 + 1615a: d01e beq.n 1619a + 1615c: 2b03 cmp r3, #3 + 1615e: d026 beq.n 161ae + 16160: 2b01 cmp r3, #1 + 16162: f47f ae4e bne.w 15e02 setLayer(message.getData1()); - 160a8: 2300 movs r3, #0 - 160aa: 993f ldr r1, [sp, #252] ; 0xfc - 160ac: 4628 mov r0, r5 - 160ae: 461a mov r2, r3 - 160b0: f7ff f846 bl 15140 + 16166: 2300 movs r3, #0 + 16168: 993f ldr r1, [sp, #252] ; 0xfc + 1616a: 4628 mov r0, r5 + 1616c: 461a mov r2, r3 + 1616e: f7ff f84d bl 1520c break; - 160b4: e643 b.n 15d3e + 16172: e646 b.n 15e02 if(midiClock.read(isClock, isStartOrContinue)){ - 160b6: f1a6 02fb sub.w r2, r6, #251 ; 0xfb - 160ba: f505 5046 add.w r0, r5, #12672 ; 0x3180 - 160be: fab2 f282 clz r2, r2 - 160c2: 0952 lsrs r2, r2, #5 - 160c4: f7ff facc bl 15660 - 160c8: 2800 cmp r0, #0 - 160ca: f43f aed4 beq.w 15e76 + 16174: f1a6 02fb sub.w r2, r6, #251 ; 0xfb + 16178: fab2 f282 clz r2, r2 + 1617c: 0952 lsrs r2, r2, #5 + 1617e: f7ff facf bl 15720 + 16182: 2800 cmp r0, #0 + 16184: f43f aed9 beq.w 15f3a handleClockLeds(); - 160ce: 4628 mov r0, r5 - 160d0: f7f3 fe2a bl 9d28 + 16188: 4628 mov r0, r5 + 1618a: f7f3 fd9d bl 9cc8 if(callback.midiClockBeat){ - 160d4: f8da 38b0 ldr.w r3, [sl, #2224] ; 0x8b0 - 160d8: 2b00 cmp r3, #0 - 160da: f47f aecb bne.w 15e74 - 160de: e6ca b.n 15e76 + 1618e: f8db 38b0 ldr.w r3, [fp, #2224] ; 0x8b0 + 16192: 2b00 cmp r3, #0 + 16194: f47f aed0 bne.w 15f38 + 16198: e6cf b.n 15f3a set(t_bank, t_preset, forced); - 160e0: 993f ldr r1, [sp, #252] ; 0xfc - 160e2: f243 10ec movw r0, #12780 ; 0x31ec - 160e6: 2300 movs r3, #0 - 160e8: f001 0207 and.w r2, r1, #7 - 160ec: 4428 add r0, r5 - 160ee: 08c9 lsrs r1, r1, #3 - 160f0: f7ea fa66 bl 5c0 - 160f4: 210b movs r1, #11 - 160f6: 480d ldr r0, [pc, #52] ; (1612c ) - 160f8: f016 fa26 bl 2c548 - 160fc: 2101 movs r1, #1 - 160fe: 480c ldr r0, [pc, #48] ; (16130 ) - 16100: f016 fa22 bl 2c548 - 16104: 9c3f ldr r4, [sp, #252] ; 0xfc - 16106: 2300 movs r3, #0 - 16108: 220a movs r2, #10 - 1610a: 4621 mov r1, r4 - 1610c: 4809 ldr r0, [pc, #36] ; (16134 ) - 1610e: f013 fecd bl 29eac + 1619a: 993f ldr r1, [sp, #252] ; 0xfc + 1619c: f243 200c movw r0, #12812 ; 0x320c + 161a0: 2300 movs r3, #0 + 161a2: f001 0207 and.w r2, r1, #7 + 161a6: 4428 add r0, r5 + 161a8: 08c9 lsrs r1, r1, #3 + 161aa: f7ea fa09 bl 5c0 + 161ae: 210b movs r1, #11 + 161b0: 480d ldr r0, [pc, #52] ; (161e8 ) + 161b2: f016 fa3d bl 2c630 + 161b6: 2101 movs r1, #1 + 161b8: 480c ldr r0, [pc, #48] ; (161ec ) + 161ba: f016 fa39 bl 2c630 + 161be: 9c3f ldr r4, [sp, #252] ; 0xfc + 161c0: 2300 movs r3, #0 + 161c2: 220a movs r2, #10 + 161c4: 4621 mov r1, r4 + 161c6: 480a ldr r0, [pc, #40] ; (161f0 ) + 161c8: f013 fee6 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 16112: 4808 ldr r0, [pc, #32] ; (16134 ) - 16114: f013 feae bl 29e74 + 161cc: 4808 ldr r0, [pc, #32] ; (161f0 ) + 161ce: f013 fec7 bl 29f60 setLists.setSong(message.getData1()); - 16118: 4621 mov r1, r4 - 1611a: f505 5048 add.w r0, r5, #12800 ; 0x3200 - 1611e: f7ea fb51 bl 7c4 + 161d2: f243 2020 movw r0, #12832 ; 0x3220 + 161d6: 4621 mov r1, r4 + 161d8: 4428 add r0, r5 + 161da: f7ea faf3 bl 7c4 break; - 16122: e60c b.n 15d3e - 16124: 2000bae8 .word 0x2000bae8 - 16128: 23545241 .word 0x23545241 - 1612c: 20001e8c .word 0x20001e8c - 16130: 200023ec .word 0x200023ec - 16134: 20004ba8 .word 0x20004ba8 + 161de: e610 b.n 15e02 + 161e0: 2000bb08 .word 0x2000bb08 + 161e4: 23545241 .word 0x23545241 + 161e8: 20001e8c .word 0x20001e8c + 161ec: 200023ec .word 0x200023ec + 161f0: 20004c68 .word 0x20004c68 globals.clearMidiInActivity(); - 16138: f8d7 2358 ldr.w r2, [r7, #856] ; 0x358 + 161f4: f8d7 2378 ldr.w r2, [r7, #888] ; 0x378 tuner.setData(message.sysex[6], message.sysex[7], message.sysex[8]); - 1613c: f243 4998 movw r9, #13464 ; 0x3498 - 16140: f898 100b ldrb.w r1, [r8, #11] + 161f8: f243 49b8 movw r9, #13496 ; 0x34b8 + 161fc: f898 100b ldrb.w r1, [r8, #11] bitClear(flags, bit); - 16144: 6dd3 ldr r3, [r2, #92] ; 0x5c - 16146: 44a9 add r9, r5 - 16148: 460c mov r4, r1 - 1614a: f023 0301 bic.w r3, r3, #1 - 1614e: 4648 mov r0, r9 - 16150: 65d3 str r3, [r2, #92] ; 0x5c - 16152: f898 200c ldrb.w r2, [r8, #12] - 16156: f898 800d ldrb.w r8, [r8, #13] - 1615a: ee08 2a10 vmov s16, r2 - 1615e: 4643 mov r3, r8 - 16160: f7ff f8a8 bl 152b4 + 16200: 6dd3 ldr r3, [r2, #92] ; 0x5c + 16202: 44a9 add r9, r5 + 16204: 460c mov r4, r1 + 16206: f023 0301 bic.w r3, r3, #1 + 1620a: 4648 mov r0, r9 + 1620c: 65d3 str r3, [r2, #92] ; 0x5c + 1620e: f898 200c ldrb.w r2, [r8, #12] + 16212: f898 800d ldrb.w r8, [r8, #13] + 16216: ee08 2a10 vmov s16, r2 + 1621a: 4643 mov r3, r8 + 1621c: f7ff f8b0 bl 15380 return bitRead(flags, bit); - 16164: f897 34a3 ldrb.w r3, [r7, #1187] ; 0x4a3 + 16220: f897 34c3 ldrb.w r3, [r7, #1219] ; 0x4c3 if(!tuner.isOn()){ - 16168: 07da lsls r2, r3, #31 - 1616a: d40f bmi.n 1618c + 16224: 07da lsls r2, r3, #31 + 16226: d40f bmi.n 16248 if(midi.callback.fasTunerStateChange){ - 1616c: f8d7 3354 ldr.w r3, [r7, #852] ; 0x354 - 16170: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 16174: f8d3 30dc ldr.w r3, [r3, #220] ; 0xdc - 16178: b10b cbz r3, 1617e + 16228: f8d7 3374 ldr.w r3, [r7, #884] ; 0x374 + 1622c: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 16230: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 16234: b10b cbz r3, 1623a midi.callback.fasTunerStateChange(true); - 1617a: 2001 movs r0, #1 - 1617c: 4798 blx r3 - 1617e: 2112 movs r1, #18 - 16180: 48ae ldr r0, [pc, #696] ; (1643c ) - 16182: f016 f9e1 bl 2c548 + 16236: 2001 movs r0, #1 + 16238: 4798 blx r3 + 1623a: 2112 movs r1, #18 + 1623c: 48ae ldr r0, [pc, #696] ; (164f8 ) + 1623e: f016 f9f7 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 16186: 48ae ldr r0, [pc, #696] ; (16440 ) - 16188: f013 fe74 bl 29e74 + 16242: 48ae ldr r0, [pc, #696] ; (164fc ) + 16244: f013 fe8c bl 29f60 if(midi.callback.fasTunerReceived){ - 1618c: f8d7 3354 ldr.w r3, [r7, #852] ; 0x354 - 16190: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 16194: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 16198: b10b cbz r3, 1619e + 16248: f8d7 3374 ldr.w r3, [r7, #884] ; 0x374 + 1624c: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 16250: f8d3 30e4 ldr.w r3, [r3, #228] ; 0xe4 + 16254: b10b cbz r3, 1625a midi.callback.fasTunerReceived(tuner); - 1619a: 4648 mov r0, r9 - 1619c: 4798 blx r3 - 1619e: f8d7 3358 ldr.w r3, [r7, #856] ; 0x358 - 161a2: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 16256: 4648 mov r0, r9 + 16258: 4798 blx r3 + 1625a: f8d7 3378 ldr.w r3, [r7, #888] ; 0x378 + 1625e: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(globals.getFasDebug()){ - 161a6: 05db lsls r3, r3, #23 - 161a8: f57f adac bpl.w 15d04 - 161ac: 2113 movs r1, #19 - 161ae: 48a5 ldr r0, [pc, #660] ; (16444 ) - 161b0: f016 f9ca bl 2c548 - 161b4: 2101 movs r1, #1 - 161b6: 48a4 ldr r0, [pc, #656] ; (16448 ) - 161b8: f016 f9c6 bl 2c548 + 16262: 05db lsls r3, r3, #23 + 16264: f57f adaf bpl.w 15dc6 + 16268: 2113 movs r1, #19 + 1626a: 48a5 ldr r0, [pc, #660] ; (16500 ) + 1626c: f016 f9e0 bl 2c630 + 16270: 2101 movs r1, #1 + 16272: 48a4 ldr r0, [pc, #656] ; (16504 ) + 16274: f016 f9dc bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 161bc: 2300 movs r3, #0 - 161be: 220a movs r2, #10 - 161c0: 4621 mov r1, r4 - 161c2: 489f ldr r0, [pc, #636] ; (16440 ) - 161c4: f013 fe72 bl 29eac - 161c8: 2101 movs r1, #1 - 161ca: 489f ldr r0, [pc, #636] ; (16448 ) - 161cc: f016 f9bc bl 2c548 - 161d0: 2300 movs r3, #0 - 161d2: ee18 1a10 vmov r1, s16 - 161d6: 220a movs r2, #10 - 161d8: 4899 ldr r0, [pc, #612] ; (16440 ) - 161da: f013 fe67 bl 29eac - 161de: 2101 movs r1, #1 - 161e0: 4899 ldr r0, [pc, #612] ; (16448 ) - 161e2: f016 f9b1 bl 2c548 - 161e6: 4641 mov r1, r8 - 161e8: 2300 movs r3, #0 - 161ea: 220a movs r2, #10 - 161ec: 4894 ldr r0, [pc, #592] ; (16440 ) - 161ee: f013 fe5d bl 29eac + 16278: 2300 movs r3, #0 + 1627a: 220a movs r2, #10 + 1627c: 4621 mov r1, r4 + 1627e: 489f ldr r0, [pc, #636] ; (164fc ) + 16280: f013 fe8a bl 29f98 + 16284: 2101 movs r1, #1 + 16286: 489f ldr r0, [pc, #636] ; (16504 ) + 16288: f016 f9d2 bl 2c630 + 1628c: 2300 movs r3, #0 + 1628e: ee18 1a10 vmov r1, s16 + 16292: 220a movs r2, #10 + 16294: 4899 ldr r0, [pc, #612] ; (164fc ) + 16296: f013 fe7f bl 29f98 + 1629a: 2101 movs r1, #1 + 1629c: 4899 ldr r0, [pc, #612] ; (16504 ) + 1629e: f016 f9c7 bl 2c630 + 162a2: 4641 mov r1, r8 + 162a4: 2300 movs r3, #0 + 162a6: 220a movs r2, #10 + 162a8: 4894 ldr r0, [pc, #592] ; (164fc ) + 162aa: f013 fe75 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 161f2: 4893 ldr r0, [pc, #588] ; (16440 ) - 161f4: f013 fe3e bl 29e74 - 161f8: e584 b.n 15d04 + 162ae: 4893 ldr r0, [pc, #588] ; (164fc ) + 162b0: f013 fe56 bl 29f60 + 162b4: e587 b.n 15dc6 return sysex[size()-2]; - 161fa: eb08 0309 add.w r3, r8, r9 + 162b6: eb08 0309 add.w r3, r8, r9 } uint8_t getLastBlocksCrc(){ return lastBlockCrc; } bool setLastBlocksCrc(uint8_t t_crc){ bool ret = lastBlockCrc != t_crc; - 161fe: f897 2494 ldrb.w r2, [r7, #1172] ; 0x494 - 16202: 78db ldrb r3, [r3, #3] + 162ba: f897 24b4 ldrb.w r2, [r7, #1204] ; 0x4b4 + 162be: 78db ldrb r3, [r3, #3] if(preset.setLastBlocksCrc(message.getCrc())){ - 16204: 429a cmp r2, r3 + 162c0: 429a cmp r2, r3 lastBlockCrc = t_crc; - 16206: f887 3494 strb.w r3, [r7, #1172] ; 0x494 - 1620a: d007 beq.n 1621c + 162c2: f887 34b4 strb.w r3, [r7, #1204] ; 0x4b4 + 162c6: d007 beq.n 162d8 if(midi.callback.fasBlocksChange){ - 1620c: f8d7 3354 ldr.w r3, [r7, #852] ; 0x354 - 16210: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 16214: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 16218: b103 cbz r3, 1621c + 162c8: f8d7 3374 ldr.w r3, [r7, #884] ; 0x374 + 162cc: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 162d0: f8d3 30dc ldr.w r3, [r3, #220] ; 0xdc + 162d4: b103 cbz r3, 162d8 midi.callback.fasBlocksChange(); - 1621a: 4798 blx r3 + 162d6: 4798 blx r3 for(uint16_t i = 6, n = (message.size()-2); i < n; i += 3){ - 1621c: f1a9 0302 sub.w r3, r9, #2 - 16220: fa1f fe83 uxth.w lr, r3 - 16224: f1be 0f06 cmp.w lr, #6 - 16228: f240 84f2 bls.w 16c10 - 1622c: f243 40ac movw r0, #13484 ; 0x34ac - 16230: f04f 0c06 mov.w ip, #6 - 16234: 4634 mov r4, r6 - 16236: 4428 add r0, r5 - 16238: e008 b.n 1624c - 1623a: f10c 0c03 add.w ip, ip, #3 - 1623e: f108 0803 add.w r8, r8, #3 - 16242: fa1f f38c uxth.w r3, ip - 16246: 459e cmp lr, r3 - 16248: f240 84e1 bls.w 16c0e + 162d8: f1a9 0302 sub.w r3, r9, #2 + 162dc: fa1f fe83 uxth.w lr, r3 + 162e0: f1be 0f06 cmp.w lr, #6 + 162e4: f240 84f0 bls.w 16cc8 + 162e8: f243 40cc movw r0, #13516 ; 0x34cc + 162ec: f04f 0c06 mov.w ip, #6 + 162f0: 4654 mov r4, sl + 162f2: 4428 add r0, r5 + 162f4: e008 b.n 16308 + 162f6: f10c 0c03 add.w ip, ip, #3 + 162fa: f108 0803 add.w r8, r8, #3 + 162fe: fa1f f38c uxth.w r3, ip + 16302: 459e cmp lr, r3 + 16304: f240 84df bls.w 16cc6 if((t_offset+1) < size()){ - 1624c: f10c 0301 add.w r3, ip, #1 - 16250: 4599 cmp r9, r3 - 16252: ddf2 ble.n 1623a + 16308: f10c 0301 add.w r3, ip, #1 + 1630c: 4599 cmp r9, r3 + 1630e: ddf2 ble.n 162f6 return BMC_MIDI_ARRAY_TO_8BITS_LSB_FIRST(t_offset, sysex); - 16254: f898 100c ldrb.w r1, [r8, #12] - 16258: f898 300b ldrb.w r3, [r8, #11] - 1625c: 01c9 lsls r1, r1, #7 + 16310: f898 100c ldrb.w r1, [r8, #12] + 16314: f898 300b ldrb.w r3, [r8, #11] + 16318: 01c9 lsls r1, r1, #7 uint8_t flags = message.sysex[i+2]; - 1625e: f898 600d ldrb.w r6, [r8, #13] - 16262: f003 037f and.w r3, r3, #127 ; 0x7f - 16266: f001 0180 and.w r1, r1, #128 ; 0x80 + 1631a: f898 a00d ldrb.w sl, [r8, #13] + 1631e: f003 037f and.w r3, r3, #127 ; 0x7f + 16322: f001 0180 and.w r1, r1, #128 ; 0x80 uint8_t id = message.get14BitsLSBFirst(i); - 1626a: 4319 orrs r1, r3 + 16326: 4319 orrs r1, r3 if(id < BMC_FAS_BLOCK_IN_1 || id > BMC_FAS_BLOCK_IRP_2){ - 1626c: f1a1 0325 sub.w r3, r1, #37 ; 0x25 - 16270: b2db uxtb r3, r3 - 16272: 2b9f cmp r3, #159 ; 0x9f - 16274: d8e1 bhi.n 1623a + 16328: f1a1 0325 sub.w r3, r1, #37 ; 0x25 + 1632c: b2db uxtb r3, r3 + 1632e: 2b9f cmp r3, #159 ; 0x9f + 16330: d8e1 bhi.n 162f6 for(int e = 0 ; e < BMC_FAS3_BLOCKS_COUNT ; e++){ - 16276: 2300 movs r3, #0 - 16278: e002 b.n 16280 - 1627a: 3301 adds r3, #1 - 1627c: 2b5b cmp r3, #91 ; 0x5b - 1627e: d0dc beq.n 1623a + 16332: 2300 movs r3, #0 + 16334: e002 b.n 1633c + 16336: 3301 adds r3, #1 + 16338: 2b5b cmp r3, #91 ; 0x5b + 1633a: d0dc beq.n 162f6 if(blocksInfo[e].id == id){ - 16280: f810 2033 ldrb.w r2, [r0, r3, lsl #3] - 16284: 428a cmp r2, r1 - 16286: d1f8 bne.n 1627a + 1633c: f810 2033 ldrb.w r2, [r0, r3, lsl #3] + 16340: 428a cmp r2, r1 + 16342: d1f8 bne.n 16336 blockStates[t_id] = t_flags; - 16288: 443b add r3, r7 - 1628a: f883 6439 strb.w r6, [r3, #1081] ; 0x439 + 16344: 443b add r3, r7 + 16346: f883 a459 strb.w sl, [r3, #1113] ; 0x459 } - 1628e: e7d4 b.n 1623a + 1634a: e7d4 b.n 162f6 device.looper.set(message.sysex[6], 0); - 16290: f898 800b ldrb.w r8, [r8, #11] + 1634c: f898 800b ldrb.w r8, [r8, #11] position = t_position; - 16294: f04f 0900 mov.w r9, #0 - 16298: f8d7 3358 ldr.w r3, [r7, #856] ; 0x358 + 16350: f04f 0900 mov.w r9, #0 + 16354: f8d7 3378 ldr.w r3, [r7, #888] ; 0x378 data = t_data; - 1629c: f887 8377 strb.w r8, [r7, #887] ; 0x377 + 16358: f887 8397 strb.w r8, [r7, #919] ; 0x397 position = t_position; - 162a0: f887 9378 strb.w r9, [r7, #888] ; 0x378 - 162a4: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1635c: f887 9398 strb.w r9, [r7, #920] ; 0x398 + 16360: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(globals.getFasDebug()){ - 162a8: 05db lsls r3, r3, #23 - 162aa: f57f ad2b bpl.w 15d04 - 162ae: 2110 movs r1, #16 - 162b0: 4866 ldr r0, [pc, #408] ; (1644c ) - 162b2: f016 f949 bl 2c548 + 16364: 05db lsls r3, r3, #23 + 16366: f57f ad2e bpl.w 15dc6 + 1636a: 2110 movs r1, #16 + 1636c: 4866 ldr r0, [pc, #408] ; (16508 ) + 1636e: f016 f95f bl 2c630 size_t print(unsigned char n, int base) { return printNumber(n, base, 0); } - 162b6: 464b mov r3, r9 - 162b8: 4641 mov r1, r8 - 162ba: 2202 movs r2, #2 - 162bc: 4860 ldr r0, [pc, #384] ; (16440 ) - 162be: f013 fdf5 bl 29eac + 16372: 464b mov r3, r9 + 16374: 4641 mov r1, r8 + 16376: 2202 movs r2, #2 + 16378: 4860 ldr r0, [pc, #384] ; (164fc ) + 1637a: f013 fe0d bl 29f98 size_t println(int64_t n) { return print(n) + println(); } // Print an unsigned number and newline size_t println(uint64_t n) { return print(n) + println(); } // Print a number in any number base (eg, BIN, HEX, OCT) and a newline size_t println(unsigned char n, int base) { return print(n, base) + println(); } - 162c2: 485f ldr r0, [pc, #380] ; (16440 ) - 162c4: f013 fdd6 bl 29e74 + 1637e: 485f ldr r0, [pc, #380] ; (164fc ) + 16380: f013 fdee bl 29f60 bool recording(){ return bitRead(data, BMC_FAS_LOOPER_STATE_RECORDING); } - 162c8: f897 3377 ldrb.w r3, [r7, #887] ; 0x377 + 16384: f897 3397 ldrb.w r3, [r7, #919] ; 0x397 if(device.looper.recording()){ - 162cc: 07dc lsls r4, r3, #31 - 162ce: f100 8695 bmi.w 16ffc + 16388: 07dc lsls r4, r3, #31 + 1638a: f100 8691 bmi.w 170b0 if(device.looper.playing()){ - 162d2: 0798 lsls r0, r3, #30 - 162d4: f100 8687 bmi.w 16fe6 + 1638e: 0798 lsls r0, r3, #30 + 16390: f100 8683 bmi.w 1709a if(device.looper.overdubbing()){ - 162d8: 0759 lsls r1, r3, #29 - 162da: f57f ad13 bpl.w 15d04 - 162de: 2116 movs r1, #22 - 162e0: 485b ldr r0, [pc, #364] ; (16450 ) - 162e2: f016 f931 bl 2c548 + 16394: 0759 lsls r1, r3, #29 + 16396: f57f ad16 bpl.w 15dc6 + 1639a: 2116 movs r1, #22 + 1639c: 485b ldr r0, [pc, #364] ; (1650c ) + 1639e: f016 f947 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 162e6: 4856 ldr r0, [pc, #344] ; (16440 ) - 162e8: f013 fdc4 bl 29e74 - 162ec: e50a b.n 15d04 + 163a2: 4856 ldr r0, [pc, #344] ; (164fc ) + 163a4: f013 fddc bl 29f60 + 163a8: e50d b.n 15dc6 uint8_t nLen = message.size()-11; - 162ee: f1a9 030b sub.w r3, r9, #11 + 163aa: f1a9 030b sub.w r3, r9, #11 char txt[BMC_FAS3_MAX_SCENE_NAME] = ""; - 162f2: a946 add r1, sp, #280 ; 0x118 + 163ae: a946 add r1, sp, #280 ; 0x118 uint8_t nLen = message.size()-11; - 162f4: b2da uxtb r2, r3 + 163b0: b2da uxtb r2, r3 char txt[BMC_FAS3_MAX_SCENE_NAME] = ""; - 162f6: 2300 movs r3, #0 - 162f8: 460c mov r4, r1 + 163b2: 2300 movs r3, #0 + 163b4: 460c mov r4, r1 if(length > 1 && (startsAt + length) < size()){ - 162fa: 2a01 cmp r2, #1 + 163b6: 2a01 cmp r2, #1 uint8_t nLen = message.size()-11; - 162fc: 9241 str r2, [sp, #260] ; 0x104 + 163b8: 9241 str r2, [sp, #260] ; 0x104 char txt[BMC_FAS3_MAX_SCENE_NAME] = ""; - 162fe: f88d 3128 strb.w r3, [sp, #296] ; 0x128 - 16302: e9cd 3346 strd r3, r3, [sp, #280] ; 0x118 - 16306: e9cd 3348 strd r3, r3, [sp, #288] ; 0x120 - 1630a: d908 bls.n 1631e + 163ba: f88d 3128 strb.w r3, [sp, #296] ; 0x128 + 163be: e9cd 3346 strd r3, r3, [sp, #280] ; 0x118 + 163c2: e9cd 3348 strd r3, r3, [sp, #288] ; 0x120 + 163c6: d908 bls.n 163da message.getStringFromSysEx(7, txt, nLen>BMC_FAS3_MAX_SCENE_NAME ? BMC_FAS3_MAX_SCENE_NAME : nLen); - 1630c: 2a11 cmp r2, #17 - 1630e: bf28 it cs - 16310: 2211 movcs r2, #17 - 16312: 4611 mov r1, r2 - 16314: 3207 adds r2, #7 - 16316: b2d2 uxtb r2, r2 - 16318: 454a cmp r2, r9 - 1631a: f2c0 85c3 blt.w 16ea4 + 163c8: 2a11 cmp r2, #17 + 163ca: bf28 it cs + 163cc: 2211 movcs r2, #17 + 163ce: 4611 mov r1, r2 + 163d0: 3207 adds r2, #7 + 163d2: b2d2 uxtb r2, r2 + 163d4: 454a cmp r2, r9 + 163d6: f2c0 85c6 blt.w 16f66 preset.setScene(message.sysex[6], txt, (scenePolled == 0x7F)); - 1631e: f898 800b ldrb.w r8, [r8, #11] + 163da: f898 800b ldrb.w r8, [r8, #11] if(t_value < 8){ - 16322: f1b8 0f07 cmp.w r8, #7 - 16326: f200 8427 bhi.w 16b78 + 163de: f1b8 0f07 cmp.w r8, #7 + 163e2: f200 8425 bhi.w 16c30 if(isCurrent){ - 1632a: f897 3496 ldrb.w r3, [r7, #1174] ; 0x496 + 163e6: f897 34b6 ldrb.w r3, [r7, #1206] ; 0x4b6 strcpy(sceneName[t_value], str); - 1632e: f243 39b1 movw r9, #13233 ; 0x33b1 - 16332: 4621 mov r1, r4 + 163ea: f243 39d1 movw r9, #13265 ; 0x33d1 + 163ee: 4621 mov r1, r4 if(isCurrent){ - 16334: 2b7f cmp r3, #127 ; 0x7f + 163f0: 2b7f cmp r3, #127 ; 0x7f strcpy(sceneName[t_value], str); - 16336: f04f 0311 mov.w r3, #17 - 1633a: fb03 5308 mla r3, r3, r8, r5 + 163f2: f04f 0311 mov.w r3, #17 + 163f6: fb03 5308 mla r3, r3, r8, r5 scene = t_value; - 1633e: bf08 it eq - 16340: f887 838e strbeq.w r8, [r7, #910] ; 0x38e + 163fa: bf08 it eq + 163fc: f887 83ae strbeq.w r8, [r7, #942] ; 0x3ae strcpy(sceneName[t_value], str); - 16344: 4499 add r9, r3 - 16346: 4648 mov r0, r9 - 16348: f018 f944 bl 2e5d4 + 16400: 4499 add r9, r3 + 16402: 4648 mov r0, r9 + 16404: f018 f95a bl 2e6bc uint16_t len = strlen(str); - 1634c: eba0 0009 sub.w r0, r0, r9 + 16408: eba0 0009 sub.w r0, r0, r9 if(len == 0 || str[len-1] != 32){ - 16350: b283 uxth r3, r0 - 16352: 2b00 cmp r3, #0 - 16354: f000 8410 beq.w 16b78 - 16358: 4618 mov r0, r3 - 1635a: 444b add r3, r9 - 1635c: f813 2c01 ldrb.w r2, [r3, #-1] - 16360: 2a20 cmp r2, #32 - 16362: f040 8409 bne.w 16b78 + 1640c: b283 uxth r3, r0 + 1640e: 2b00 cmp r3, #0 + 16410: f000 840e beq.w 16c30 + 16414: 4618 mov r0, r3 + 16416: 444b add r3, r9 + 16418: f813 2c01 ldrb.w r2, [r3, #-1] + 1641c: 2a20 cmp r2, #32 + 1641e: f040 8407 bne.w 16c30 for(int i = len; i --> 0;){ - 16366: 2800 cmp r0, #0 - 16368: f000 8406 beq.w 16b78 + 16422: 2800 cmp r0, #0 + 16424: f000 8404 beq.w 16c30 str[i] = 0; - 1636c: 2100 movs r1, #0 - 1636e: e004 b.n 1637a + 16428: 2100 movs r1, #0 + 1642a: e004 b.n 16436 } if(str[i] > 32){ - 16370: f200 8402 bhi.w 16b78 + 1642c: f200 8400 bhi.w 16c30 for(int i = len; i --> 0;){ - 16374: 454b cmp r3, r9 - 16376: f000 83ff beq.w 16b78 + 16430: 454b cmp r3, r9 + 16432: f000 83fd beq.w 16c30 if(str[i] != 0){ - 1637a: f813 2d01 ldrb.w r2, [r3, #-1]! - 1637e: 2a00 cmp r2, #0 - 16380: d0f8 beq.n 16374 + 16436: f813 2d01 ldrb.w r2, [r3, #-1]! + 1643a: 2a00 cmp r2, #0 + 1643c: d0f8 beq.n 16430 if(str[i] == 32){ - 16382: 2a20 cmp r2, #32 - 16384: d1f4 bne.n 16370 + 1643e: 2a20 cmp r2, #32 + 16440: d1f4 bne.n 1642c str[i] = 0; - 16386: 7019 strb r1, [r3, #0] + 16442: 7019 strb r1, [r3, #0] } if(str[i] > 32){ - 16388: e7f4 b.n 16374 + 16444: e7f4 b.n 16430 char txt[BMC_FAS_MAX_PRESET_NAME] = ""; - 1638a: ab46 add r3, sp, #280 ; 0x118 - 1638c: 2100 movs r1, #0 - 1638e: 221d movs r2, #29 - 16390: a847 add r0, sp, #284 ; 0x11c - 16392: 461c mov r4, r3 - 16394: 9146 str r1, [sp, #280] ; 0x118 - 16396: f018 f879 bl 2e48c + 16446: ab46 add r3, sp, #280 ; 0x118 + 16448: 2100 movs r1, #0 + 1644a: 221d movs r2, #29 + 1644c: a847 add r0, sp, #284 ; 0x11c + 1644e: 461c mov r4, r3 + 16450: 9146 str r1, [sp, #280] ; 0x118 + 16452: f018 f88f bl 2e574 message.getStringFromSysEx(8, txt, message.size()-11); - 1639a: f1a9 030b sub.w r3, r9, #11 - 1639e: b2db uxtb r3, r3 - 163a0: 2b01 cmp r3, #1 - 163a2: 9341 str r3, [sp, #260] ; 0x104 - 163a4: d904 bls.n 163b0 - 163a6: 3308 adds r3, #8 - 163a8: 2100 movs r1, #0 - 163aa: 454b cmp r3, r9 - 163ac: f2c0 8561 blt.w 16e72 + 16456: f1a9 030b sub.w r3, r9, #11 + 1645a: b2db uxtb r3, r3 + 1645c: 2b01 cmp r3, #1 + 1645e: 9341 str r3, [sp, #260] ; 0x104 + 16460: d904 bls.n 1646c + 16462: 3308 adds r3, #8 + 16464: 2100 movs r1, #0 + 16466: 454b cmp r3, r9 + 16468: f2c0 8564 blt.w 16f34 preset.setPreset( (message.sysex[6]& 0x7F) | ((message.sysex[7] & 0x7F)<<7), txt); - 163b0: f898 200c ldrb.w r2, [r8, #12] - 163b4: f898 300b ldrb.w r3, [r8, #11] - 163b8: 01d2 lsls r2, r2, #7 - 163ba: f003 037f and.w r3, r3, #127 ; 0x7f - 163be: f402 527e and.w r2, r2, #16256 ; 0x3f80 - 163c2: 4313 orrs r3, r2 + 1646c: f898 200c ldrb.w r2, [r8, #12] + 16470: f898 300b ldrb.w r3, [r8, #11] + 16474: 01d2 lsls r2, r2, #7 + 16476: f003 037f and.w r3, r3, #127 ; 0x7f + 1647a: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 1647e: 4313 orrs r3, r2 if(t_value > 1023){ - 163c4: f5b3 6f80 cmp.w r3, #1024 ; 0x400 - 163c8: f280 8431 bge.w 16c2e + 16480: f5b3 6f80 cmp.w r3, #1024 ; 0x400 + 16484: f280 842f bge.w 16ce6 if(id != t_value){ - 163cc: f8b7 138c ldrh.w r1, [r7, #908] ; 0x38c - 163d0: b29a uxth r2, r3 - 163d2: 4299 cmp r1, r3 - 163d4: d005 beq.n 163e2 + 16488: f8b7 13ac ldrh.w r1, [r7, #940] ; 0x3ac + 1648c: b29a uxth r2, r3 + 1648e: 4299 cmp r1, r3 + 16490: d005 beq.n 1649e bitWrite(flags, 0, 1); - 163d6: f897 3495 ldrb.w r3, [r7, #1173] ; 0x495 - 163da: f043 0301 orr.w r3, r3, #1 - 163de: f887 3495 strb.w r3, [r7, #1173] ; 0x495 + 16492: f897 34b5 ldrb.w r3, [r7, #1205] ; 0x4b5 + 16496: f043 0301 orr.w r3, r3, #1 + 1649a: f887 34b5 strb.w r3, [r7, #1205] ; 0x4b5 strcpy(name, txt); - 163e2: f243 3890 movw r8, #13200 ; 0x3390 - 163e6: 4621 mov r1, r4 + 1649e: f243 38b0 movw r8, #13232 ; 0x33b0 + 164a2: 4621 mov r1, r4 id = t_value; - 163e8: f8a7 238c strh.w r2, [r7, #908] ; 0x38c + 164a4: f8a7 23ac strh.w r2, [r7, #940] ; 0x3ac strcpy(name, txt); - 163ec: 44a8 add r8, r5 - 163ee: 4640 mov r0, r8 - 163f0: f018 f8f0 bl 2e5d4 + 164a8: 44a8 add r8, r5 + 164aa: 4640 mov r0, r8 + 164ac: f018 f906 bl 2e6bc uint16_t len = strlen(str); - 163f4: eba0 0008 sub.w r0, r0, r8 + 164b0: eba0 0008 sub.w r0, r0, r8 if(len == 0 || str[len-1] != 32){ - 163f8: b283 uxth r3, r0 - 163fa: 2b00 cmp r3, #0 - 163fc: f000 8417 beq.w 16c2e - 16400: 4498 add r8, r3 - 16402: 4618 mov r0, r3 - 16404: f818 3c01 ldrb.w r3, [r8, #-1] - 16408: 2b20 cmp r3, #32 - 1640a: f040 8410 bne.w 16c2e + 164b4: b283 uxth r3, r0 + 164b6: 2b00 cmp r3, #0 + 164b8: f000 8415 beq.w 16ce6 + 164bc: 4498 add r8, r3 + 164be: 4618 mov r0, r3 + 164c0: f818 3c01 ldrb.w r3, [r8, #-1] + 164c4: 2b20 cmp r3, #32 + 164c6: f040 840e bne.w 16ce6 for(int i = len; i --> 0;){ - 1640e: 2800 cmp r0, #0 - 16410: f000 840d beq.w 16c2e - 16414: f243 3190 movw r1, #13200 ; 0x3390 - 16418: 4408 add r0, r1 - 1641a: 4429 add r1, r5 - 1641c: 182b adds r3, r5, r0 + 164ca: 2800 cmp r0, #0 + 164cc: f000 840b beq.w 16ce6 + 164d0: f243 31b0 movw r1, #13232 ; 0x33b0 + 164d4: 4408 add r0, r1 + 164d6: 4429 add r1, r5 + 164d8: 182b adds r3, r5, r0 str[i] = 0; - 1641e: 2000 movs r0, #0 - 16420: e004 b.n 1642c + 164da: 2000 movs r0, #0 + 164dc: e004 b.n 164e8 } if(str[i] > 32){ - 16422: f200 8404 bhi.w 16c2e + 164de: f200 8402 bhi.w 16ce6 for(int i = len; i --> 0;){ - 16426: 428b cmp r3, r1 - 16428: f000 8401 beq.w 16c2e + 164e2: 428b cmp r3, r1 + 164e4: f000 83ff beq.w 16ce6 if(str[i] != 0){ - 1642c: f813 2d01 ldrb.w r2, [r3, #-1]! - 16430: 2a00 cmp r2, #0 - 16432: d0f8 beq.n 16426 + 164e8: f813 2d01 ldrb.w r2, [r3, #-1]! + 164ec: 2a00 cmp r2, #0 + 164ee: d0f8 beq.n 164e2 if(str[i] == 32){ - 16434: 2a20 cmp r2, #32 - 16436: d1f4 bne.n 16422 + 164f0: 2a20 cmp r2, #32 + 164f2: d1f4 bne.n 164de str[i] = 0; - 16438: 7018 strb r0, [r3, #0] + 164f4: 7018 strb r0, [r3, #0] } if(str[i] > 32){ - 1643a: e7f4 b.n 16426 - 1643c: 20001e64 .word 0x20001e64 - 16440: 20004ba8 .word 0x20004ba8 - 16444: 20001e78 .word 0x20001e78 - 16448: 200023ec .word 0x200023ec - 1644c: 20001e0c .word 0x20001e0c - 16450: 20001e4c .word 0x20001e4c + 164f6: e7f4 b.n 164e2 + 164f8: 20001e64 .word 0x20001e64 + 164fc: 20004c68 .word 0x20004c68 + 16500: 20001e78 .word 0x20001e78 + 16504: 200023ec .word 0x200023ec + 16508: 20001e0c .word 0x20001e0c + 1650c: 20001e4c .word 0x20001e4c if(preset.setScene(message.sysex[6])){ - 16454: f898 800b ldrb.w r8, [r8, #11] + 16510: f898 800b ldrb.w r8, [r8, #11] if(t_value < 8){ - 16458: f1b8 0f07 cmp.w r8, #7 - 1645c: d80e bhi.n 1647c + 16514: f1b8 0f07 cmp.w r8, #7 + 16518: d80e bhi.n 16538 if(scene != t_value){ - 1645e: f897 338e ldrb.w r3, [r7, #910] ; 0x38e + 1651a: f897 33ae ldrb.w r3, [r7, #942] ; 0x3ae scene = t_value; - 16462: f887 838e strb.w r8, [r7, #910] ; 0x38e + 1651e: f887 83ae strb.w r8, [r7, #942] ; 0x3ae if(scene != t_value){ - 16466: 4543 cmp r3, r8 - 16468: d008 beq.n 1647c + 16522: 4543 cmp r3, r8 + 16524: d008 beq.n 16538 if(midi.callback.fasSceneChange){ - 1646a: f8d7 3354 ldr.w r3, [r7, #852] ; 0x354 - 1646e: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 16472: f8d3 30d4 ldr.w r3, [r3, #212] ; 0xd4 - 16476: b10b cbz r3, 1647c + 16526: f8d7 3374 ldr.w r3, [r7, #884] ; 0x374 + 1652a: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 1652e: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 16532: b10b cbz r3, 16538 midi.callback.fasSceneChange(preset.getSceneNumber()); - 16478: 4640 mov r0, r8 - 1647a: 4798 blx r3 + 16534: 4640 mov r0, r8 + 16536: 4798 blx r3 fetchSysEx(BMC_FAS3_FUNC_ID_SCENE_NAME, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 1647c: f04f 0900 mov.w r9, #0 - 16480: 9840 ldr r0, [sp, #256] ; 0x100 - 16482: 227f movs r2, #127 ; 0x7f - 16484: 210e movs r1, #14 - 16486: 464b mov r3, r9 - 16488: f8cd 9000 str.w r9, [sp] - 1648c: f7ea ffa0 bl 13d0 - 16490: f8d7 3358 ldr.w r3, [r7, #856] ; 0x358 - 16494: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 16538: f04f 0900 mov.w r9, #0 + 1653c: 9840 ldr r0, [sp, #256] ; 0x100 + 1653e: 227f movs r2, #127 ; 0x7f + 16540: 210e movs r1, #14 + 16542: 464b mov r3, r9 + 16544: f8cd 9000 str.w r9, [sp] + 16548: f7ea ff42 bl 13d0 + 1654c: f8d7 3378 ldr.w r3, [r7, #888] ; 0x378 + 16550: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(globals.getFasDebug()){ - 16498: 05d8 lsls r0, r3, #23 - 1649a: f57f ac33 bpl.w 15d04 - 1649e: 2113 movs r1, #19 - 164a0: 48dd ldr r0, [pc, #884] ; (16818 ) - 164a2: f016 f851 bl 2c548 - 164a6: 2101 movs r1, #1 - 164a8: 48dc ldr r0, [pc, #880] ; (1681c ) - 164aa: f016 f84d bl 2c548 + 16554: 05d8 lsls r0, r3, #23 + 16556: f57f ac36 bpl.w 15dc6 + 1655a: 2113 movs r1, #19 + 1655c: 48dd ldr r0, [pc, #884] ; (168d4 ) + 1655e: f016 f867 bl 2c630 + 16562: 2101 movs r1, #1 + 16564: 48dc ldr r0, [pc, #880] ; (168d8 ) + 16566: f016 f863 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 164ae: 464b mov r3, r9 - 164b0: 4641 mov r1, r8 - 164b2: e69a b.n 161ea + 1656a: 464b mov r3, r9 + 1656c: 4641 mov r1, r8 + 1656e: e69a b.n 162a6 if((t_offset+1) < size()){ - 164b4: f1b9 0f07 cmp.w r9, #7 - 164b8: f200 846e bhi.w 16d98 - 164bc: 2100 movs r1, #0 + 16570: f1b9 0f07 cmp.w r9, #7 + 16574: f200 8471 bhi.w 16e5a + 16578: 2100 movs r1, #0 uint8_t value = message.sysex[8]; - 164be: f243 43ac movw r3, #13484 ; 0x34ac - 164c2: f898 900d ldrb.w r9, [r8, #13] + 1657a: f243 43cc movw r3, #13516 ; 0x34cc + 1657e: f898 900d ldrb.w r9, [r8, #13] for(int e = 0 ; e < BMC_FAS3_BLOCKS_COUNT ; e++){ - 164c6: f04f 0800 mov.w r8, #0 - 164ca: 442b add r3, r5 - 164cc: e004 b.n 164d8 - 164ce: f108 0801 add.w r8, r8, #1 - 164d2: f1b8 0f5b cmp.w r8, #91 ; 0x5b - 164d6: d06c beq.n 165b2 + 16582: f04f 0800 mov.w r8, #0 + 16586: 442b add r3, r5 + 16588: e004 b.n 16594 + 1658a: f108 0801 add.w r8, r8, #1 + 1658e: f1b8 0f5b cmp.w r8, #91 ; 0x5b + 16592: d06c beq.n 1666e if(blocksInfo[e].id == blockId){ - 164d8: f813 2038 ldrb.w r2, [r3, r8, lsl #3] - 164dc: 428a cmp r2, r1 - 164de: d1f6 bne.n 164ce + 16594: f813 2038 ldrb.w r2, [r3, r8, lsl #3] + 16598: 428a cmp r2, r1 + 1659a: d1f6 bne.n 1658a } void setBlockBypass(uint8_t t_id, bool t_value){ bitWrite(blockStates[t_id], 0, t_value); } void setBlockChannel(uint8_t t_id, uint8_t t_value){ BMC_WRITE_BITS(blockStates[t_id], t_value, 0x07, 1); - 164e0: eb07 0208 add.w r2, r7, r8 - 164e4: ea4f 0149 mov.w r1, r9, lsl #1 - 164e8: f892 3439 ldrb.w r3, [r2, #1081] ; 0x439 - 164ec: f001 010e and.w r1, r1, #14 - 164f0: f023 030e bic.w r3, r3, #14 - 164f4: 430b orrs r3, r1 - 164f6: f882 3439 strb.w r3, [r2, #1081] ; 0x439 - 164fa: f8d7 3358 ldr.w r3, [r7, #856] ; 0x358 - 164fe: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1659c: eb07 0208 add.w r2, r7, r8 + 165a0: ea4f 0149 mov.w r1, r9, lsl #1 + 165a4: f892 3459 ldrb.w r3, [r2, #1113] ; 0x459 + 165a8: f001 010e and.w r1, r1, #14 + 165ac: f023 030e bic.w r3, r3, #14 + 165b0: 430b orrs r3, r1 + 165b2: f882 3459 strb.w r3, [r2, #1113] ; 0x459 + 165b6: f8d7 3378 ldr.w r3, [r7, #888] ; 0x378 + 165ba: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(globals.getFasDebug()){ - 16502: 05da lsls r2, r3, #23 - 16504: d555 bpl.n 165b2 - 16506: 211b movs r1, #27 - 16508: 48c5 ldr r0, [pc, #788] ; (16820 ) - 1650a: f016 f81d bl 2c548 - 1650e: 2101 movs r1, #1 - 16510: 48c2 ldr r0, [pc, #776] ; (1681c ) - 16512: f016 f819 bl 2c548 + 165be: 05da lsls r2, r3, #23 + 165c0: d555 bpl.n 1666e + 165c2: 211b movs r1, #27 + 165c4: 48c5 ldr r0, [pc, #788] ; (168dc ) + 165c6: f016 f833 bl 2c630 + 165ca: 2101 movs r1, #1 + 165cc: 48c2 ldr r0, [pc, #776] ; (168d8 ) + 165ce: f016 f82f bl 2c630 BMC_PRINTLN("FAS3 Block Channel Received", blocksInfo[e].name, value); - 16516: 9b40 ldr r3, [sp, #256] ; 0x100 - 16518: eb03 08c8 add.w r8, r3, r8, lsl #3 - 1651c: f208 1859 addw r8, r8, #345 ; 0x159 + 165d2: 9b40 ldr r3, [sp, #256] ; 0x100 + 165d4: eb03 08c8 add.w r8, r3, r8, lsl #3 + 165d8: f208 1859 addw r8, r8, #345 ; 0x159 return write((const uint8_t *)str, strlen(str)); } - 16520: 4640 mov r0, r8 - 16522: f018 fb0d bl 2eb40 - 16526: 4601 mov r1, r0 - 16528: 4640 mov r0, r8 - 1652a: f016 f80d bl 2c548 - 1652e: 2101 movs r1, #1 - 16530: 48ba ldr r0, [pc, #744] ; (1681c ) - 16532: f016 f809 bl 2c548 + 165dc: 4640 mov r0, r8 + 165de: f018 fb2f bl 2ec40 + 165e2: 4601 mov r1, r0 + 165e4: 4640 mov r0, r8 + 165e6: f016 f823 bl 2c630 + 165ea: 2101 movs r1, #1 + 165ec: 48ba ldr r0, [pc, #744] ; (168d8 ) + 165ee: f016 f81f bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 16536: 4649 mov r1, r9 - 16538: 2300 movs r3, #0 - 1653a: 220a movs r2, #10 - 1653c: 48b9 ldr r0, [pc, #740] ; (16824 ) - 1653e: f013 fcb5 bl 29eac + 165f2: 4649 mov r1, r9 + 165f4: 2300 movs r3, #0 + 165f6: 220a movs r2, #10 + 165f8: 48b9 ldr r0, [pc, #740] ; (168e0 ) + 165fa: f013 fccd bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 16542: 48b8 ldr r0, [pc, #736] ; (16824 ) - 16544: f013 fc96 bl 29e74 - 16548: e033 b.n 165b2 - 1654a: f1b9 0f07 cmp.w r9, #7 - 1654e: f200 840f bhi.w 16d70 - 16552: 2100 movs r1, #0 + 165fe: 48b8 ldr r0, [pc, #736] ; (168e0 ) + 16600: f013 fcae bl 29f60 + 16604: e033 b.n 1666e + 16606: f1b9 0f07 cmp.w r9, #7 + 1660a: f200 8412 bhi.w 16e32 + 1660e: 2100 movs r1, #0 bool value = message.sysex[8]>0; - 16554: f243 43ac movw r3, #13484 ; 0x34ac - 16558: f898 900d ldrb.w r9, [r8, #13] + 16610: f243 43cc movw r3, #13516 ; 0x34cc + 16614: f898 900d ldrb.w r9, [r8, #13] for(int e = 0 ; e < BMC_FAS3_BLOCKS_COUNT ; e++){ - 1655c: f04f 0800 mov.w r8, #0 - 16560: 442b add r3, r5 - 16562: e004 b.n 1656e - 16564: f108 0801 add.w r8, r8, #1 - 16568: f1b8 0f5b cmp.w r8, #91 ; 0x5b - 1656c: d021 beq.n 165b2 + 16618: f04f 0800 mov.w r8, #0 + 1661c: 442b add r3, r5 + 1661e: e004 b.n 1662a + 16620: f108 0801 add.w r8, r8, #1 + 16624: f1b8 0f5b cmp.w r8, #91 ; 0x5b + 16628: d021 beq.n 1666e if(blocksInfo[e].id == blockId){ - 1656e: f813 2038 ldrb.w r2, [r3, r8, lsl #3] - 16572: 428a cmp r2, r1 - 16574: d1f6 bne.n 16564 + 1662a: f813 2038 ldrb.w r2, [r3, r8, lsl #3] + 1662e: 428a cmp r2, r1 + 16630: d1f6 bne.n 16620 bitWrite(blockStates[t_id], 0, t_value); - 16576: eb07 0308 add.w r3, r7, r8 - 1657a: f893 2439 ldrb.w r2, [r3, #1081] ; 0x439 - 1657e: f1b9 0f00 cmp.w r9, #0 - 16582: f000 83c8 beq.w 16d16 - 16586: f042 0201 orr.w r2, r2, #1 - 1658a: eb07 0308 add.w r3, r7, r8 - 1658e: f883 2439 strb.w r2, [r3, #1081] ; 0x439 - 16592: f8d7 1358 ldr.w r1, [r7, #856] ; 0x358 - 16596: f8b1 1060 ldrh.w r1, [r1, #96] ; 0x60 + 16632: eb07 0308 add.w r3, r7, r8 + 16636: f893 2459 ldrb.w r2, [r3, #1113] ; 0x459 + 1663a: f1b9 0f00 cmp.w r9, #0 + 1663e: f000 83c6 beq.w 16dce + 16642: f042 0201 orr.w r2, r2, #1 + 16646: eb07 0308 add.w r3, r7, r8 + 1664a: f883 2459 strb.w r2, [r3, #1113] ; 0x459 + 1664e: f8d7 1378 ldr.w r1, [r7, #888] ; 0x378 + 16652: f8b1 1060 ldrh.w r1, [r1, #96] ; 0x60 if(globals.getFasDebug()){ - 1659a: 05c8 lsls r0, r1, #23 - 1659c: f100 840f bmi.w 16dbe - 165a0: 44b8 add r8, r7 - 165a2: f1b9 0f00 cmp.w r9, #0 - 165a6: f000 83b1 beq.w 16d0c - 165aa: f042 0201 orr.w r2, r2, #1 - 165ae: f888 2439 strb.w r2, [r8, #1081] ; 0x439 - 165b2: 4b9d ldr r3, [pc, #628] ; (16828 ) - 165b4: f44f 62fa mov.w r2, #2000 ; 0x7d0 - 165b8: f8a7 2384 strh.w r2, [r7, #900] ; 0x384 - 165bc: 681a ldr r2, [r3, #0] - 165be: 681b ldr r3, [r3, #0] + 16656: 05c8 lsls r0, r1, #23 + 16658: f100 8412 bmi.w 16e80 + 1665c: 44b8 add r8, r7 + 1665e: f1b9 0f00 cmp.w r9, #0 + 16662: f000 83af beq.w 16dc4 + 16666: f042 0201 orr.w r2, r2, #1 + 1666a: f888 2459 strb.w r2, [r8, #1113] ; 0x459 + 1666e: 4b9d ldr r3, [pc, #628] ; (168e4 ) + 16670: f44f 62fa mov.w r2, #2000 ; 0x7d0 + 16674: f8a7 23a4 strh.w r2, [r7, #932] ; 0x3a4 + 16678: 681a ldr r2, [r3, #0] + 1667a: 681b ldr r3, [r3, #0] prevTime = (unsigned long) _BMCTiming::get(); - 165c0: f8c7 2388 str.w r2, [r7, #904] ; 0x388 - 165c4: f8c7 3380 str.w r3, [r7, #896] ; 0x380 + 1667c: f8c7 23a8 str.w r2, [r7, #936] ; 0x3a8 + 16680: f8c7 33a0 str.w r3, [r7, #928] ; 0x3a0 interval = value; - 165c8: f241 3388 movw r3, #5000 ; 0x1388 - 165cc: f8a7 337c strh.w r3, [r7, #892] ; 0x37c + 16684: f241 3388 movw r3, #5000 ; 0x1388 + 16688: f8a7 339c strh.w r3, [r7, #924] ; 0x39c return true; - 165d0: f7ff bb98 b.w 15d04 + 1668c: f7ff bb9b b.w 15dc6 void setTransportScrub(bool value){ bitWrite(states, 29, value); } - 165d4: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 165d8: f1b9 0f00 cmp.w r9, #0 - 165dc: f000 8542 beq.w 17064 - 165e0: f043 5300 orr.w r3, r3, #536870912 ; 0x20000000 + 16690: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16694: f1b9 0f00 cmp.w r9, #0 + 16698: f000 853e beq.w 17118 + 1669c: f043 5300 orr.w r3, r3, #536870912 ; 0x20000000 void setAssignTrack(bool value){ bitWrite(states, 0, value); } - 165e4: f8c7 3304 str.w r3, [r7, #772] ; 0x304 + 166a0: f8c7 3324 str.w r3, [r7, #804] ; 0x324 if(ret && callback.dawRecievedLedState){ - 165e8: f8d7 3278 ldr.w r3, [r7, #632] ; 0x278 - 165ec: f8d3 30bc ldr.w r3, [r3, #188] ; 0xbc - 165f0: 2b00 cmp r3, #0 - 165f2: f43f ad32 beq.w 1605a + 166a4: f8d7 3298 ldr.w r3, [r7, #664] ; 0x298 + 166a8: f8d3 30c0 ldr.w r3, [r3, #192] ; 0xc0 + 166ac: 2b00 cmp r3, #0 + 166ae: f43f ad33 beq.w 16118 callback.dawRecievedLedState(c, v>0); - 165f6: f1b9 0100 subs.w r1, r9, #0 - 165fa: f243 2b20 movw fp, #12832 ; 0x3220 - 165fe: 983f ldr r0, [sp, #252] ; 0xfc - 16600: bf18 it ne - 16602: 2101 movne r1, #1 - 16604: 44ab add fp, r5 - 16606: 4798 blx r3 - 16608: f7ff bb6d b.w 15ce6 + 166b2: f1b9 0100 subs.w r1, r9, #0 + 166b6: 983f ldr r0, [sp, #252] ; 0xfc + 166b8: bf18 it ne + 166ba: 2101 movne r1, #1 + 166bc: 4798 blx r3 + 166be: f505 5349 add.w r3, r5, #12864 ; 0x3240 + 166c2: 933e str r3, [sp, #248] ; 0xf8 + 166c4: f7ff bb70 b.w 15da8 void setTransportCursorZoom(bool value){ bitWrite(states, 28, value); } - 1660c: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 16610: f1b9 0f00 cmp.w r9, #0 - 16614: f000 852a beq.w 1706c - 16618: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 - 1661c: e7e2 b.n 165e4 + 166c8: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 166cc: f1b9 0f00 cmp.w r9, #0 + 166d0: f000 8526 beq.w 17120 + 166d4: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + 166d8: e7e2 b.n 166a0 void setTransportRecord(bool value){ bitWrite(states, 27, value); } - 1661e: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 16622: f1b9 0f00 cmp.w r9, #0 - 16626: f000 8529 beq.w 1707c - 1662a: f043 6300 orr.w r3, r3, #134217728 ; 0x8000000 - 1662e: e7d9 b.n 165e4 + 166da: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 166de: f1b9 0f00 cmp.w r9, #0 + 166e2: f000 8525 beq.w 17130 + 166e6: f043 6300 orr.w r3, r3, #134217728 ; 0x8000000 + 166ea: e7d9 b.n 166a0 void setTransportStop(bool value){ bitWrite(states, 25, value); } - 16630: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 16634: f1b9 0f00 cmp.w r9, #0 - 16638: f000 851c beq.w 17074 - 1663c: f043 7300 orr.w r3, r3, #33554432 ; 0x2000000 - 16640: e7d0 b.n 165e4 + 166ec: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 166f0: f1b9 0f00 cmp.w r9, #0 + 166f4: f000 8518 beq.w 17128 + 166f8: f043 7300 orr.w r3, r3, #33554432 ; 0x2000000 + 166fc: e7d0 b.n 166a0 void setTransportPlay(bool value){ bitWrite(states, 26, value); } - 16642: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 16646: f1b9 0f00 cmp.w r9, #0 - 1664a: f000 851b beq.w 17084 - 1664e: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000 - 16652: e7c7 b.n 165e4 + 166fe: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16702: f1b9 0f00 cmp.w r9, #0 + 16706: f000 8517 beq.w 17138 + 1670a: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000 + 1670e: e7c7 b.n 166a0 void setTransportForward(bool value){ bitWrite(states, 24, value); } - 16654: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 16658: f1b9 0f00 cmp.w r9, #0 - 1665c: f000 8516 beq.w 1708c - 16660: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 - 16664: e7be b.n 165e4 + 16710: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16714: f1b9 0f00 cmp.w r9, #0 + 16718: f000 8512 beq.w 17140 + 1671c: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 16720: e7be b.n 166a0 void setFaderViewGlobal(bool value){ bitWrite(states, 7, value); } - 16666: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 1666a: f1b9 0f00 cmp.w r9, #0 - 1666e: f000 852d beq.w 170cc - 16672: f043 0380 orr.w r3, r3, #128 ; 0x80 - 16676: e7b5 b.n 165e4 + 16722: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16726: f1b9 0f00 cmp.w r9, #0 + 1672a: f000 8529 beq.w 17180 + 1672e: f043 0380 orr.w r3, r3, #128 ; 0x80 + 16732: e7b5 b.n 166a0 void setTransportRewind(bool value){ bitWrite(states, 23, value); } - 16678: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 1667c: f1b9 0f00 cmp.w r9, #0 - 16680: f000 8514 beq.w 170ac - 16684: f443 0300 orr.w r3, r3, #8388608 ; 0x800000 - 16688: e7ac b.n 165e4 + 16734: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16738: f1b9 0f00 cmp.w r9, #0 + 1673c: f000 8510 beq.w 17160 + 16740: f443 0300 orr.w r3, r3, #8388608 ; 0x800000 + 16744: e7ac b.n 166a0 void setAssignPlugin(bool value){ bitWrite(states, 3, value); } - 1668a: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 1668e: f1b9 0f00 cmp.w r9, #0 - 16692: f000 853b beq.w 1710c - 16696: f043 0308 orr.w r3, r3, #8 - 1669a: e7a3 b.n 165e4 + 16746: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 1674a: f1b9 0f00 cmp.w r9, #0 + 1674e: f000 8537 beq.w 171c0 + 16752: f043 0308 orr.w r3, r3, #8 + 16756: e7a3 b.n 166a0 void setUtilityUndo(bool value){ bitWrite(states, 15, value); } - 1669c: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 166a0: f1b9 0f00 cmp.w r9, #0 - 166a4: f000 84fa beq.w 1709c - 166a8: f443 4300 orr.w r3, r3, #32768 ; 0x8000 - 166ac: e79a b.n 165e4 + 16758: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 1675c: f1b9 0f00 cmp.w r9, #0 + 16760: f000 84f6 beq.w 17150 + 16764: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 16768: e79a b.n 166a0 void setAssignInstr(bool value){ bitWrite(states, 5, value); } - 166ae: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 166b2: f1b9 0f00 cmp.w r9, #0 - 166b6: f000 8519 beq.w 170ec - 166ba: f043 0320 orr.w r3, r3, #32 - 166be: e791 b.n 165e4 + 1676a: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 1676e: f1b9 0f00 cmp.w r9, #0 + 16772: f000 8515 beq.w 171a0 + 16776: f043 0320 orr.w r3, r3, #32 + 1677a: e791 b.n 166a0 void setTransportDrop(bool value){ bitWrite(states, 19, value); } - 166c0: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 166c4: f1b9 0f00 cmp.w r9, #0 - 166c8: f000 84f8 beq.w 170bc - 166cc: f443 2300 orr.w r3, r3, #524288 ; 0x80000 - 166d0: e788 b.n 165e4 + 1677c: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16780: f1b9 0f00 cmp.w r9, #0 + 16784: f000 84f4 beq.w 17170 + 16788: f443 2300 orr.w r3, r3, #524288 ; 0x80000 + 1678c: e788 b.n 166a0 void setAssignSend(bool value){ bitWrite(states, 1, value); } - 166d2: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 166d6: f1b9 0f00 cmp.w r9, #0 - 166da: f000 8527 beq.w 1712c - 166de: f043 0302 orr.w r3, r3, #2 - 166e2: e77f b.n 165e4 + 1678e: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16792: f1b9 0f00 cmp.w r9, #0 + 16796: f000 8523 beq.w 171e0 + 1679a: f043 0302 orr.w r3, r3, #2 + 1679e: e77f b.n 166a0 void setAutomationTouch(bool value){ bitWrite(states, 11, value); } - 166e4: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 166e8: f1b9 0f00 cmp.w r9, #0 - 166ec: f000 84d2 beq.w 17094 - 166f0: f443 6300 orr.w r3, r3, #2048 ; 0x800 - 166f4: e776 b.n 165e4 + 167a0: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 167a4: f1b9 0f00 cmp.w r9, #0 + 167a8: f000 84ce beq.w 17148 + 167ac: f443 6300 orr.w r3, r3, #2048 ; 0x800 + 167b0: e776 b.n 166a0 void setFaderViewFlip(bool value){ bitWrite(states, 6, value); } - 166f6: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 166fa: f1b9 0f00 cmp.w r9, #0 - 166fe: f000 84ed beq.w 170dc - 16702: f043 0340 orr.w r3, r3, #64 ; 0x40 - 16706: e76d b.n 165e4 + 167b2: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 167b6: f1b9 0f00 cmp.w r9, #0 + 167ba: f000 84e9 beq.w 17190 + 167be: f043 0340 orr.w r3, r3, #64 ; 0x40 + 167c2: e76d b.n 166a0 void setTransportClick(bool value){ bitWrite(states, 21, value); } - 16708: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 1670c: f1b9 0f00 cmp.w r9, #0 - 16710: f000 84d0 beq.w 170b4 - 16714: f443 1300 orr.w r3, r3, #2097152 ; 0x200000 - 16718: e764 b.n 165e4 + 167c4: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 167c8: f1b9 0f00 cmp.w r9, #0 + 167cc: f000 84cc beq.w 17168 + 167d0: f443 1300 orr.w r3, r3, #2097152 ; 0x200000 + 167d4: e764 b.n 166a0 void setAssignPan(bool value){ bitWrite(states, 2, value); } - 1671a: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 1671e: f1b9 0f00 cmp.w r9, #0 - 16722: f000 84fb beq.w 1711c - 16726: f043 0304 orr.w r3, r3, #4 - 1672a: e75b b.n 165e4 + 167d6: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 167da: f1b9 0f00 cmp.w r9, #0 + 167de: f000 84f7 beq.w 171d0 + 167e2: f043 0304 orr.w r3, r3, #4 + 167e6: e75b b.n 166a0 void setAutomationGroup(bool value){ bitWrite(states, 13, value); } - 1672c: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 16730: f1b9 0f00 cmp.w r9, #0 - 16734: f000 84b6 beq.w 170a4 - 16738: f443 5300 orr.w r3, r3, #8192 ; 0x2000 - 1673c: e752 b.n 165e4 + 167e8: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 167ec: f1b9 0f00 cmp.w r9, #0 + 167f0: f000 84b2 beq.w 17158 + 167f4: f443 5300 orr.w r3, r3, #8192 ; 0x2000 + 167f8: e752 b.n 166a0 void setAssignEQ(bool value){ bitWrite(states, 4, value); } - 1673e: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 16742: f1b9 0f00 cmp.w r9, #0 - 16746: f000 84d9 beq.w 170fc - 1674a: f043 0310 orr.w r3, r3, #16 - 1674e: e749 b.n 165e4 + 167fa: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 167fe: f1b9 0f00 cmp.w r9, #0 + 16802: f000 84d5 beq.w 171b0 + 16806: f043 0310 orr.w r3, r3, #16 + 1680a: e749 b.n 166a0 void setTransportNudge(bool value){ bitWrite(states, 17, value); } - 16750: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 16754: f1b9 0f00 cmp.w r9, #0 - 16758: f000 84b4 beq.w 170c4 - 1675c: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 16760: e740 b.n 165e4 + 1680c: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16810: f1b9 0f00 cmp.w r9, #0 + 16814: f000 84b0 beq.w 17178 + 16818: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 1681c: e740 b.n 166a0 void setAssignTrack(bool value){ bitWrite(states, 0, value); } - 16762: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 16766: f1b9 0f00 cmp.w r9, #0 - 1676a: f000 84e7 beq.w 1713c - 1676e: f043 0301 orr.w r3, r3, #1 - 16772: e737 b.n 165e4 + 1681e: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16822: f1b9 0f00 cmp.w r9, #0 + 16826: f000 84e3 beq.w 171f0 + 1682a: f043 0301 orr.w r3, r3, #1 + 1682e: e737 b.n 166a0 void setAutomationWrite(bool value){ bitWrite(states, 9, value); } - 16774: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 16778: f1b9 0f00 cmp.w r9, #0 - 1677c: f000 84aa beq.w 170d4 - 16780: f443 7300 orr.w r3, r3, #512 ; 0x200 - 16784: e72e b.n 165e4 + 16830: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16834: f1b9 0f00 cmp.w r9, #0 + 16838: f000 84a6 beq.w 17188 + 1683c: f443 7300 orr.w r3, r3, #512 ; 0x200 + 16840: e72e b.n 166a0 void setTransportSolo(bool value){ bitWrite(states, 22, value); } - 16786: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 1678a: f1b9 0f00 cmp.w r9, #0 - 1678e: f000 84c1 beq.w 17114 - 16792: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 - 16796: e725 b.n 165e4 + 16842: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16846: f1b9 0f00 cmp.w r9, #0 + 1684a: f000 84bd beq.w 171c8 + 1684e: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 + 16852: e725 b.n 166a0 void setUtilitySave(bool value){ bitWrite(states, 14, value); } - 16798: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 1679c: f1b9 0f00 cmp.w r9, #0 - 167a0: f000 84a8 beq.w 170f4 - 167a4: f443 4380 orr.w r3, r3, #16384 ; 0x4000 - 167a8: e71c b.n 165e4 + 16854: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 16858: f1b9 0f00 cmp.w r9, #0 + 1685c: f000 84a4 beq.w 171a8 + 16860: f443 4380 orr.w r3, r3, #16384 ; 0x4000 + 16864: e71c b.n 166a0 void setTransportCycle(bool value){ bitWrite(states, 18, value); } - 167aa: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 167ae: f1b9 0f00 cmp.w r9, #0 - 167b2: f000 84bf beq.w 17134 - 167b6: f443 2380 orr.w r3, r3, #262144 ; 0x40000 - 167ba: e713 b.n 165e4 + 16866: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 1686a: f1b9 0f00 cmp.w r9, #0 + 1686e: f000 84bb beq.w 171e8 + 16872: f443 2380 orr.w r3, r3, #262144 ; 0x40000 + 16876: e713 b.n 166a0 void setAutomationTrim(bool value){ bitWrite(states, 10, value); } - 167bc: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 167c0: f1b9 0f00 cmp.w r9, #0 - 167c4: f000 848e beq.w 170e4 - 167c8: f443 6380 orr.w r3, r3, #1024 ; 0x400 - 167cc: e70a b.n 165e4 + 16878: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 1687c: f1b9 0f00 cmp.w r9, #0 + 16880: f000 848a beq.w 17198 + 16884: f443 6380 orr.w r3, r3, #1024 ; 0x400 + 16888: e70a b.n 166a0 void setTransportReplace(bool value){ bitWrite(states, 20, value); } - 167ce: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 167d2: f1b9 0f00 cmp.w r9, #0 - 167d6: f000 84a5 beq.w 17124 - 167da: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 - 167de: e701 b.n 165e4 + 1688a: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 1688e: f1b9 0f00 cmp.w r9, #0 + 16892: f000 84a1 beq.w 171d8 + 16896: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 + 1689a: e701 b.n 166a0 void setAutomationLatch(bool value){ bitWrite(states, 12, value); } - 167e0: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 167e4: f1b9 0f00 cmp.w r9, #0 - 167e8: f000 848c beq.w 17104 - 167ec: f443 5380 orr.w r3, r3, #4096 ; 0x1000 - 167f0: e6f8 b.n 165e4 + 1689c: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 168a0: f1b9 0f00 cmp.w r9, #0 + 168a4: f000 8488 beq.w 171b8 + 168a8: f443 5380 orr.w r3, r3, #4096 ; 0x1000 + 168ac: e6f8 b.n 166a0 void setTransportMarker(bool value){ bitWrite(states, 16, value); } - 167f2: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 167f6: f1b9 0f00 cmp.w r9, #0 - 167fa: f000 84a3 beq.w 17144 - 167fe: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 16802: e6ef b.n 165e4 + 168ae: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 168b2: f1b9 0f00 cmp.w r9, #0 + 168b6: f000 849f beq.w 171f8 + 168ba: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 168be: e6ef b.n 166a0 void setAutomationRead(bool value){ bitWrite(states, 8, value); } - 16804: f8d7 3304 ldr.w r3, [r7, #772] ; 0x304 - 16808: f1b9 0f00 cmp.w r9, #0 - 1680c: f000 8426 beq.w 1705c - 16810: f443 7380 orr.w r3, r3, #256 ; 0x100 - 16814: e6e6 b.n 165e4 - 16816: bf00 nop - 16818: 20001da8 .word 0x20001da8 - 1681c: 200023ec .word 0x200023ec - 16820: 20001df0 .word 0x20001df0 - 16824: 20004ba8 .word 0x20004ba8 - 16828: 2000bae8 .word 0x2000bae8 + 168c0: f8d7 3324 ldr.w r3, [r7, #804] ; 0x324 + 168c4: f1b9 0f00 cmp.w r9, #0 + 168c8: f000 8422 beq.w 17110 + 168cc: f443 7380 orr.w r3, r3, #256 ; 0x100 + 168d0: e6e6 b.n 166a0 + 168d2: bf00 nop + 168d4: 20001da8 .word 0x20001da8 + 168d8: 200023ec .word 0x200023ec + 168dc: 20001df0 .word 0x20001df0 + 168e0: 20004c68 .word 0x20004c68 + 168e4: 2000bb08 .word 0x2000bb08 uint8_t incomingCRC = message.sysex[message.size()-2]; - 1682c: eb08 0309 add.w r3, r8, r9 - 16830: af50 add r7, sp, #320 ; 0x140 - 16832: 78d8 ldrb r0, [r3, #3] + 168e8: eb08 0309 add.w r3, r8, r9 + 168ec: af50 add r7, sp, #320 ; 0x140 + 168ee: 78d8 ldrb r0, [r3, #3] for(int i = 0, n = message.size()-2 ; i < n ; i++){ - 16834: f50d 739f add.w r3, sp, #318 ; 0x13e - 16838: eb03 0c09 add.w ip, r3, r9 + 168f0: f50d 739f add.w r3, sp, #318 ; 0x13e + 168f4: eb03 0c09 add.w ip, r3, r9 crc ^= message.sysex[i] & 0x7F; - 1683c: f817 3f01 ldrb.w r3, [r7, #1]! - 16840: f003 037f and.w r3, r3, #127 ; 0x7f + 168f8: f817 3f01 ldrb.w r3, [r7, #1]! + 168fc: f003 037f and.w r3, r3, #127 ; 0x7f for(int i = 0, n = message.size()-2 ; i < n ; i++){ - 16844: 4567 cmp r7, ip + 16900: 4567 cmp r7, ip crc ^= message.sysex[i] & 0x7F; - 16846: ea82 0203 eor.w r2, r2, r3 + 16902: ea82 0203 eor.w r2, r2, r3 for(int i = 0, n = message.size()-2 ; i < n ; i++){ - 1684a: d1f7 bne.n 1683c + 16906: d1f7 bne.n 168f8 if(globals.getFasDebug() && crc!=incomingCRC){ - 1684c: f505 5740 add.w r7, r5, #12288 ; 0x3000 - 16850: f8d7 3358 ldr.w r3, [r7, #856] ; 0x358 - 16854: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 16858: 05dc lsls r4, r3, #23 - 1685a: d551 bpl.n 16900 - 1685c: 4290 cmp r0, r2 - 1685e: f43f aab2 beq.w 15dc6 - 16862: f50d 78a0 add.w r8, sp, #320 ; 0x140 - 16866: 2110 movs r1, #16 - 16868: 48b8 ldr r0, [pc, #736] ; (16b4c ) - 1686a: f015 fe6d bl 2c548 + 16908: f505 5740 add.w r7, r5, #12288 ; 0x3000 + 1690c: f8d7 3378 ldr.w r3, [r7, #888] ; 0x378 + 16910: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 16914: 05dc lsls r4, r3, #23 + 16916: d553 bpl.n 169c0 + 16918: 4290 cmp r0, r2 + 1691a: f43f aab6 beq.w 15e8a + 1691e: f50d 78a0 add.w r8, sp, #320 ; 0x140 + 16922: 2110 movs r1, #16 + 16924: 48b7 ldr r0, [pc, #732] ; (16c04 ) + 16926: f015 fe83 bl 2c630 size_t print(int n) { return print((long)n); } - 1686e: eb08 0309 add.w r3, r8, r9 - 16872: 4649 mov r1, r9 - 16874: 48b6 ldr r0, [pc, #728] ; (16b50 ) - 16876: 461c mov r4, r3 - 16878: f013 faf0 bl 29e5c - 1687c: 2102 movs r1, #2 - 1687e: 48b5 ldr r0, [pc, #724] ; (16b54 ) - 16880: f015 fe62 bl 2c548 - 16884: f8df 92e8 ldr.w r9, [pc, #744] ; 16b70 - 16888: 9640 str r6, [sp, #256] ; 0x100 - 1688a: 4626 mov r6, r4 + 1692a: eb08 0309 add.w r3, r8, r9 + 1692e: 4649 mov r1, r9 + 16930: 48b5 ldr r0, [pc, #724] ; (16c08 ) + 16932: 461c mov r4, r3 + 16934: f013 fb08 bl 29f48 + 16938: 2102 movs r1, #2 + 1693a: 48b4 ldr r0, [pc, #720] ; (16c0c ) + 1693c: f015 fe78 bl 2c630 + 16940: f8df 92e4 ldr.w r9, [pc, #740] ; 16c28 + 16944: f8cd a100 str.w sl, [sp, #256] ; 0x100 + 16948: 46a2 mov sl, r4 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 1688c: f818 1f01 ldrb.w r1, [r8, #1]! - 16890: 2300 movs r3, #0 - 16892: 220a movs r2, #10 - 16894: 48ae ldr r0, [pc, #696] ; (16b50 ) - 16896: f013 fb09 bl 29eac - 1689a: 2101 movs r1, #1 - 1689c: 4648 mov r0, r9 - 1689e: f015 fe53 bl 2c548 + 1694a: f818 1f01 ldrb.w r1, [r8, #1]! + 1694e: 2300 movs r3, #0 + 16950: 220a movs r2, #10 + 16952: 48ad ldr r0, [pc, #692] ; (16c08 ) + 16954: f013 fb20 bl 29f98 + 16958: 2101 movs r1, #1 + 1695a: 4648 mov r0, r9 + 1695c: f015 fe68 bl 2c630 for(int i=0;i - 168a6: 2101 movs r1, #1 - 168a8: 48ab ldr r0, [pc, #684] ; (16b58 ) - 168aa: 9e40 ldr r6, [sp, #256] ; 0x100 - 168ac: f015 fe4c bl 2c548 + 16960: 45c2 cmp sl, r8 + 16962: d1f2 bne.n 1694a + 16964: 2101 movs r1, #1 + 16966: 48aa ldr r0, [pc, #680] ; (16c10 ) + 16968: f8dd a100 ldr.w sl, [sp, #256] ; 0x100 + 1696c: f015 fe60 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 168b0: 48a7 ldr r0, [pc, #668] ; (16b50 ) - 168b2: f013 fadf bl 29e74 - 168b6: 4ba9 ldr r3, [pc, #676] ; (16b5c ) - 168b8: f44f 72fa mov.w r2, #500 ; 0x1f4 - 168bc: e67c b.n 165b8 + 16970: 48a5 ldr r0, [pc, #660] ; (16c08 ) + 16972: f013 faf5 bl 29f60 + 16976: 4ba7 ldr r3, [pc, #668] ; (16c14 ) + 16978: f44f 72fa mov.w r2, #500 ; 0x1f4 + 1697c: e67a b.n 16674 return bitRead(flags, 0); - 168be: f897 1373 ldrb.w r1, [r7, #883] ; 0x373 + 1697e: f897 1393 ldrb.w r1, [r7, #915] ; 0x393 if(!connected()){ - 168c2: f011 0101 ands.w r1, r1, #1 - 168c6: d01f beq.n 16908 + 16982: f011 0101 ands.w r1, r1, #1 + 16986: d01f beq.n 169c8 globals.clearMidiInActivity(); - 168c8: f8d7 1358 ldr.w r1, [r7, #856] ; 0x358 + 16988: f8d7 1378 ldr.w r1, [r7, #888] ; 0x378 bitSet(flags, bit); - 168cc: f8b7 335c ldrh.w r3, [r7, #860] ; 0x35c + 1698c: f8b7 337c ldrh.w r3, [r7, #892] ; 0x37c bitClear(flags, bit); - 168d0: 6dca ldr r2, [r1, #92] ; 0x5c - 168d2: 48a2 ldr r0, [pc, #648] ; (16b5c ) + 16990: 6dca ldr r2, [r1, #92] ; 0x5c + 16992: 48a0 ldr r0, [pc, #640] ; (16c14 ) bitSet(flags, bit); - 168d4: f043 0304 orr.w r3, r3, #4 + 16994: f043 0304 orr.w r3, r3, #4 bitClear(flags, bit); - 168d8: f022 0201 bic.w r2, r2, #1 - 168dc: 65ca str r2, [r1, #92] ; 0x5c + 16998: f022 0201 bic.w r2, r2, #1 + 1699c: 65ca str r2, [r1, #92] ; 0x5c bitSet(flags, bit); - 168de: f8a7 335c strh.w r3, [r7, #860] ; 0x35c - 168e2: 6803 ldr r3, [r0, #0] + 1699e: f8a7 337c strh.w r3, [r7, #892] ; 0x37c + 169a2: 6803 ldr r3, [r0, #0] prevTime = (unsigned long) _BMCTiming::get(); - 168e4: f8c7 3380 str.w r3, [r7, #896] ; 0x380 - 168e8: 6803 ldr r3, [r0, #0] - 168ea: f8c7 3364 str.w r3, [r7, #868] ; 0x364 + 169a4: f8c7 33a0 str.w r3, [r7, #928] ; 0x3a0 + 169a8: 6803 ldr r3, [r0, #0] + 169aa: f8c7 3384 str.w r3, [r7, #900] ; 0x384 interval = value; - 168ee: f241 3388 movw r3, #5000 ; 0x1388 - 168f2: f8a7 337c strh.w r3, [r7, #892] ; 0x37c - 168f6: 234b movs r3, #75 ; 0x4b - 168f8: f8a7 3360 strh.w r3, [r7, #864] ; 0x360 + 169ae: f241 3388 movw r3, #5000 ; 0x1388 + 169b2: f8a7 339c strh.w r3, [r7, #924] ; 0x39c + 169b6: 234b movs r3, #75 ; 0x4b + 169b8: f8a7 3380 strh.w r3, [r7, #896] ; 0x380 } - 168fc: f7ff ba02 b.w 15d04 + 169bc: f7ff ba03 b.w 15dc6 if(hasCrC && !validateCrc(message)){ - 16900: 4290 cmp r0, r2 - 16902: f43f aa60 beq.w 15dc6 - 16906: e7d6 b.n 168b6 - 16908: 4895 ldr r0, [pc, #596] ; (16b60 ) - 1690a: f015 fe1d bl 2c548 - 1690e: 4890 ldr r0, [pc, #576] ; (16b50 ) - 16910: f013 fab0 bl 29e74 - 16914: 2112 movs r1, #18 - 16916: 4893 ldr r0, [pc, #588] ; (16b64 ) - 16918: f015 fe16 bl 2c548 - 1691c: 488c ldr r0, [pc, #560] ; (16b50 ) - 1691e: f013 faa9 bl 29e74 - 16922: f897 3373 ldrb.w r3, [r7, #883] ; 0x373 + 169c0: 4290 cmp r0, r2 + 169c2: f43f aa62 beq.w 15e8a + 169c6: e7d6 b.n 16976 + 169c8: 4893 ldr r0, [pc, #588] ; (16c18 ) + 169ca: f015 fe31 bl 2c630 + 169ce: 488e ldr r0, [pc, #568] ; (16c08 ) + 169d0: f013 fac6 bl 29f60 + 169d4: 2112 movs r1, #18 + 169d6: 4891 ldr r0, [pc, #580] ; (16c1c ) + 169d8: f015 fe2a bl 2c630 + 169dc: 488a ldr r0, [pc, #552] ; (16c08 ) + 169de: f013 fabf bl 29f60 + 169e2: f897 3393 ldrb.w r3, [r7, #915] ; 0x393 if(device.connect(message.sysex[4], message.getPort())){ - 16926: f898 2009 ldrb.w r2, [r8, #9] + 169e6: f898 2009 ldrb.w r2, [r8, #9] if(connected()){ - 1692a: f013 0301 ands.w r3, r3, #1 - 1692e: d119 bne.n 16964 + 169ea: f013 0301 ands.w r3, r3, #1 + 169ee: d119 bne.n 16a24 switch(t_id){ - 16930: f1a2 0110 sub.w r1, r2, #16 + 169f0: f1a2 0110 sub.w r1, r2, #16 uint8_t getPort() { return ports; } - 16934: f898 0000 ldrb.w r0, [r8] - 16938: 2902 cmp r1, #2 - 1693a: f63f a9e3 bhi.w 15d04 + 169f4: f898 0000 ldrb.w r0, [r8] + 169f8: 2902 cmp r1, #2 + 169fa: f63f a9e4 bhi.w 15dc6 data = 0; - 1693e: f887 3377 strb.w r3, [r7, #887] ; 0x377 + 169fe: f887 3397 strb.w r3, [r7, #919] ; 0x397 position = 0; - 16942: f887 3378 strb.w r3, [r7, #888] ; 0x378 + 16a02: f887 3398 strb.w r3, [r7, #920] ; 0x398 prevTime = 0; - 16946: f8c7 3380 str.w r3, [r7, #896] ; 0x380 - 1694a: f8c7 3388 str.w r3, [r7, #904] ; 0x388 + 16a06: f8c7 33a0 str.w r3, [r7, #928] ; 0x3a0 + 16a0a: f8c7 33a8 str.w r3, [r7, #936] ; 0x3a8 max = 512; - 1694e: f44f 7300 mov.w r3, #512 ; 0x200 + 16a0e: f44f 7300 mov.w r3, #512 ; 0x200 id = t_id; - 16952: f887 2370 strb.w r2, [r7, #880] ; 0x370 + 16a12: f887 2390 strb.w r2, [r7, #912] ; 0x390 max = 512; - 16956: f8a7 3374 strh.w r3, [r7, #884] ; 0x374 + 16a16: f8a7 3394 strh.w r3, [r7, #916] ; 0x394 bitWrite(flags, 2, 1); - 1695a: 2307 movs r3, #7 + 16a1a: 2307 movs r3, #7 port = t_port; - 1695c: f887 0371 strb.w r0, [r7, #881] ; 0x371 + 16a1c: f887 0391 strb.w r0, [r7, #913] ; 0x391 bitWrite(flags, 2, 1); - 16960: f887 3373 strb.w r3, [r7, #883] ; 0x373 + 16a20: f887 3393 strb.w r3, [r7, #915] ; 0x393 id = 0xFFFF; - 16964: f64f 72ff movw r2, #65535 ; 0xffff - 16968: f243 33b1 movw r3, #13233 ; 0x33b1 - 1696c: f243 4139 movw r1, #13369 ; 0x3439 - 16970: f8a7 238c strh.w r2, [r7, #908] ; 0x38c + 16a24: f64f 72ff movw r2, #65535 ; 0xffff + 16a28: f243 33d1 movw r3, #13265 ; 0x33d1 + 16a2c: f243 4159 movw r1, #13401 ; 0x3459 + 16a30: f8a7 23ac strh.w r2, [r7, #940] ; 0x3ac scene = 0xFF; - 16974: 442b add r3, r5 - 16976: f887 238e strb.w r2, [r7, #910] ; 0x38e + 16a34: 442b add r3, r5 + 16a36: f887 23ae strb.w r2, [r7, #942] ; 0x3ae flags = 0; - 1697a: 4429 add r1, r5 - 1697c: 2200 movs r2, #0 - 1697e: f887 2495 strb.w r2, [r7, #1173] ; 0x495 + 16a3a: 4429 add r1, r5 + 16a3c: 2200 movs r2, #0 + 16a3e: f887 24b5 strb.w r2, [r7, #1205] ; 0x4b5 strcpy(sceneName[i], ""); - 16982: f803 2b11 strb.w r2, [r3], #17 + 16a42: f803 2b11 strb.w r2, [r3], #17 for(uint8_t i=0;i<8;i++){ - 16986: 428b cmp r3, r1 - 16988: d1fb bne.n 16982 + 16a46: 428b cmp r3, r1 + 16a48: d1fb bne.n 16a42 strcpy(name, ""); - 1698a: f243 308c movw r0, #13196 ; 0x338c + 16a4a: f243 30ac movw r0, #13228 ; 0x33ac memset(blockStates, 0, sizeof(blockStates)); - 1698e: 2100 movs r1, #0 + 16a4e: 2100 movs r1, #0 strcpy(name, ""); - 16990: 4428 add r0, r5 - 16992: 7102 strb r2, [r0, #4] + 16a50: 4428 add r0, r5 + 16a52: 7102 strb r2, [r0, #4] memset(blockStates, 0, sizeof(blockStates)); - 16994: 30ad adds r0, #173 ; 0xad - 16996: 225b movs r2, #91 ; 0x5b - 16998: f017 fd78 bl 2e48c + 16a54: 30ad adds r0, #173 ; 0xad + 16a56: 225b movs r2, #91 ; 0x5b + 16a58: f017 fd8c bl 2e574 lastBlockCrc = 0xFF; - 1699c: 23ff movs r3, #255 ; 0xff - 1699e: f887 3494 strb.w r3, [r7, #1172] ; 0x494 + 16a5c: 23ff movs r3, #255 ; 0xff + 16a5e: f887 34b4 strb.w r3, [r7, #1204] ; 0x4b4 sceneCount = -1; - 169a2: f887 338f strb.w r3, [r7, #911] ; 0x38f + 16a62: f887 33af strb.w r3, [r7, #943] ; 0x3af device.getDeviceName(buff); - 169a6: f897 3370 ldrb.w r3, [r7, #880] ; 0x370 + 16a66: f897 3390 ldrb.w r3, [r7, #912] ; 0x390 switch(id){ - 169aa: 2b11 cmp r3, #17 - 169ac: f000 8302 beq.w 16fb4 - 169b0: 2b12 cmp r3, #18 - 169b2: f000 829b beq.w 16eec - 169b6: 2b10 cmp r3, #16 - 169b8: f000 828d beq.w 16ed6 - 169bc: f50d 7884 add.w r8, sp, #264 ; 0x108 - 169c0: 2100 movs r1, #0 - 169c2: 4867 ldr r0, [pc, #412] ; (16b60 ) - 169c4: f015 fdc0 bl 2c548 - 169c8: 4861 ldr r0, [pc, #388] ; (16b50 ) - 169ca: f013 fa53 bl 29e74 - 169ce: 212e movs r1, #46 ; 0x2e - 169d0: 4865 ldr r0, [pc, #404] ; (16b68 ) - 169d2: f015 fdb9 bl 2c548 - 169d6: 485e ldr r0, [pc, #376] ; (16b50 ) - 169d8: f013 fa4c bl 29e74 - 169dc: 212e movs r1, #46 ; 0x2e - 169de: 4862 ldr r0, [pc, #392] ; (16b68 ) - 169e0: f015 fdb2 bl 2c548 - 169e4: 485a ldr r0, [pc, #360] ; (16b50 ) - 169e6: f013 fa45 bl 29e74 - 169ea: 2100 movs r1, #0 - 169ec: 485c ldr r0, [pc, #368] ; (16b60 ) - 169ee: f015 fdab bl 2c548 - 169f2: 4857 ldr r0, [pc, #348] ; (16b50 ) - 169f4: f013 fa3e bl 29e74 - 169f8: 210c movs r1, #12 - 169fa: 485c ldr r0, [pc, #368] ; (16b6c ) - 169fc: f015 fda4 bl 2c548 - 16a00: 2101 movs r1, #1 - 16a02: 485b ldr r0, [pc, #364] ; (16b70 ) - 16a04: f015 fda0 bl 2c548 + 16a6a: 2b11 cmp r3, #17 + 16a6c: f000 82fc beq.w 17068 + 16a70: 2b12 cmp r3, #18 + 16a72: f000 82ad beq.w 16fd0 + 16a76: 2b10 cmp r3, #16 + 16a78: f000 828e beq.w 16f98 + 16a7c: f50d 7884 add.w r8, sp, #264 ; 0x108 + 16a80: 2100 movs r1, #0 + 16a82: 4865 ldr r0, [pc, #404] ; (16c18 ) + 16a84: f015 fdd4 bl 2c630 + 16a88: 485f ldr r0, [pc, #380] ; (16c08 ) + 16a8a: f013 fa69 bl 29f60 + 16a8e: 212e movs r1, #46 ; 0x2e + 16a90: 4863 ldr r0, [pc, #396] ; (16c20 ) + 16a92: f015 fdcd bl 2c630 + 16a96: 485c ldr r0, [pc, #368] ; (16c08 ) + 16a98: f013 fa62 bl 29f60 + 16a9c: 212e movs r1, #46 ; 0x2e + 16a9e: 4860 ldr r0, [pc, #384] ; (16c20 ) + 16aa0: f015 fdc6 bl 2c630 + 16aa4: 4858 ldr r0, [pc, #352] ; (16c08 ) + 16aa6: f013 fa5b bl 29f60 + 16aaa: 2100 movs r1, #0 + 16aac: 485a ldr r0, [pc, #360] ; (16c18 ) + 16aae: f015 fdbf bl 2c630 + 16ab2: 4855 ldr r0, [pc, #340] ; (16c08 ) + 16ab4: f013 fa54 bl 29f60 + 16ab8: 210c movs r1, #12 + 16aba: 485a ldr r0, [pc, #360] ; (16c24 ) + 16abc: f015 fdb8 bl 2c630 + 16ac0: 2101 movs r1, #1 + 16ac2: 4859 ldr r0, [pc, #356] ; (16c28 ) + 16ac4: f015 fdb4 bl 2c630 return write((const uint8_t *)str, strlen(str)); } - 16a08: 4640 mov r0, r8 - 16a0a: f018 f899 bl 2eb40 - 16a0e: 4601 mov r1, r0 - 16a10: 4640 mov r0, r8 - 16a12: f015 fd99 bl 2c548 - 16a16: 2101 movs r1, #1 - 16a18: 4855 ldr r0, [pc, #340] ; (16b70 ) - 16a1a: f015 fd95 bl 2c548 - 16a1e: 2102 movs r1, #2 - 16a20: 4854 ldr r0, [pc, #336] ; (16b74 ) - 16a22: f015 fd91 bl 2c548 - 16a26: 2101 movs r1, #1 - 16a28: 4851 ldr r0, [pc, #324] ; (16b70 ) - 16a2a: f015 fd8d bl 2c548 + 16ac8: 4640 mov r0, r8 + 16aca: f018 f8b9 bl 2ec40 + 16ace: 4601 mov r1, r0 + 16ad0: 4640 mov r0, r8 + 16ad2: f015 fdad bl 2c630 + 16ad6: 2101 movs r1, #1 + 16ad8: 4853 ldr r0, [pc, #332] ; (16c28 ) + 16ada: f015 fda9 bl 2c630 + 16ade: 2102 movs r1, #2 + 16ae0: 4852 ldr r0, [pc, #328] ; (16c2c ) + 16ae2: f015 fda5 bl 2c630 + 16ae6: 2101 movs r1, #1 + 16ae8: 484f ldr r0, [pc, #316] ; (16c28 ) + 16aea: f015 fda1 bl 2c630 BMC_PRINTLN("Connected to", buff, "on", BMCTools::printPortsNames(device.getPort())); - 16a2e: a846 add r0, sp, #280 ; 0x118 - 16a30: f897 1371 ldrb.w r1, [r7, #881] ; 0x371 - 16a34: f7ec fe80 bl 3738 + 16aee: a846 add r0, sp, #280 ; 0x118 + 16af0: f897 1391 ldrb.w r1, [r7, #913] ; 0x391 + 16af4: f7ec fe20 bl 3738 size_t println(const String &s) { return print(s) + println(); } - 16a38: a946 add r1, sp, #280 ; 0x118 - 16a3a: 4845 ldr r0, [pc, #276] ; (16b50 ) - 16a3c: f013 f9e8 bl 29e10 - 16a40: 4843 ldr r0, [pc, #268] ; (16b50 ) - 16a42: f013 fa17 bl 29e74 - 16a46: a846 add r0, sp, #280 ; 0x118 - 16a48: f013 fb16 bl 2a078 - 16a4c: 2100 movs r1, #0 - 16a4e: 4844 ldr r0, [pc, #272] ; (16b60 ) - 16a50: f015 fd7a bl 2c548 + 16af8: a946 add r1, sp, #280 ; 0x118 + 16afa: 4843 ldr r0, [pc, #268] ; (16c08 ) + 16afc: f013 f9fe bl 29efc + 16b00: 4841 ldr r0, [pc, #260] ; (16c08 ) + 16b02: f013 fa2d bl 29f60 + 16b06: a846 add r0, sp, #280 ; 0x118 + 16b08: f013 fb2a bl 2a160 + 16b0c: 2100 movs r1, #0 + 16b0e: 4842 ldr r0, [pc, #264] ; (16c18 ) + 16b10: f015 fd8e bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 16a54: 483e ldr r0, [pc, #248] ; (16b50 ) - 16a56: f013 fa0d bl 29e74 - 16a5a: 212e movs r1, #46 ; 0x2e - 16a5c: 4842 ldr r0, [pc, #264] ; (16b68 ) - 16a5e: f015 fd73 bl 2c548 - 16a62: 483b ldr r0, [pc, #236] ; (16b50 ) - 16a64: f013 fa06 bl 29e74 - 16a68: 212e movs r1, #46 ; 0x2e - 16a6a: 483f ldr r0, [pc, #252] ; (16b68 ) - 16a6c: f015 fd6c bl 2c548 - 16a70: 4837 ldr r0, [pc, #220] ; (16b50 ) - 16a72: f013 f9ff bl 29e74 - 16a76: 2100 movs r1, #0 - 16a78: 4839 ldr r0, [pc, #228] ; (16b60 ) - 16a7a: f015 fd65 bl 2c548 - 16a7e: 4834 ldr r0, [pc, #208] ; (16b50 ) - 16a80: f013 f9f8 bl 29e74 + 16b14: 483c ldr r0, [pc, #240] ; (16c08 ) + 16b16: f013 fa23 bl 29f60 + 16b1a: 212e movs r1, #46 ; 0x2e + 16b1c: 4840 ldr r0, [pc, #256] ; (16c20 ) + 16b1e: f015 fd87 bl 2c630 + 16b22: 4839 ldr r0, [pc, #228] ; (16c08 ) + 16b24: f013 fa1c bl 29f60 + 16b28: 212e movs r1, #46 ; 0x2e + 16b2a: 483d ldr r0, [pc, #244] ; (16c20 ) + 16b2c: f015 fd80 bl 2c630 + 16b30: 4835 ldr r0, [pc, #212] ; (16c08 ) + 16b32: f013 fa15 bl 29f60 + 16b36: 2100 movs r1, #0 + 16b38: 4837 ldr r0, [pc, #220] ; (16c18 ) + 16b3a: f015 fd79 bl 2c630 + 16b3e: 4832 ldr r0, [pc, #200] ; (16c08 ) + 16b40: f013 fa0e bl 29f60 if(midi.callback.fasConnection){ - 16a84: f8d7 3354 ldr.w r3, [r7, #852] ; 0x354 - 16a88: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 16a8c: f8d3 30c8 ldr.w r3, [r3, #200] ; 0xc8 - 16a90: b10b cbz r3, 16a96 + 16b44: f8d7 3374 ldr.w r3, [r7, #884] ; 0x374 + 16b48: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 16b4c: f8d3 30cc ldr.w r3, [r3, #204] ; 0xcc + 16b50: b10b cbz r3, 16b56 midi.callback.fasConnection(true); - 16a92: 2001 movs r0, #1 - 16a94: 4798 blx r3 - 16a96: 4b31 ldr r3, [pc, #196] ; (16b5c ) + 16b52: 2001 movs r0, #1 + 16b54: 4798 blx r3 + 16b56: 4b2f ldr r3, [pc, #188] ; (16c14 ) interval = value; - 16a98: 220a movs r2, #10 - 16a9a: e58d b.n 165b8 + 16b58: 220a movs r2, #10 + 16b5a: e58b b.n 16674 if(d.getChannel()==1){ - 16a9c: 2b01 cmp r3, #1 - 16a9e: f47f aadc bne.w 1605a + 16b5c: 2b01 cmp r3, #1 + 16b5e: f47f aadb bne.w 16118 uint8_t ch = (c>>4) & 0x07; - 16aa2: 9b3f ldr r3, [sp, #252] ; 0xfc + 16b62: 993f ldr r1, [sp, #252] ; 0xfc void setMeter(uint8_t n, uint8_t value){ if(chAllowed(n)){channel[n].vu.setMeter(value);}} - 16aa4: f505 5c4c add.w ip, r5, #13056 ; 0x3300 + 16b64: f243 3220 movw r2, #13088 ; 0x3320 + 16b68: f3c1 1002 ubfx r0, r1, #4, #3 uint8_t level = c & 0x0F; - 16aa8: f003 010f and.w r1, r3, #15 - uint8_t ch = (c>>4) & 0x07; - 16aac: f3c3 1002 ubfx r0, r3, #4, #3 + 16b6c: f001 010f and.w r1, r1, #15 + 16b70: 442a add r2, r5 + 16b72: 00c3 lsls r3, r0, #3 switch(value){ - 16ab0: 290e cmp r1, #14 + 16b74: 290e cmp r1, #14 void setMeter(uint8_t n, uint8_t value){ if(chAllowed(n)){channel[n].vu.setMeter(value);}} - 16ab2: ea4f 03c0 mov.w r3, r0, lsl #3 - 16ab6: f103 0311 add.w r3, r3, #17 + 16b76: f103 0311 add.w r3, r3, #17 switch(value){ - 16aba: f000 82c2 beq.w 17042 - 16abe: 290f cmp r1, #15 - 16ac0: f000 82b2 beq.w 17028 - 16ac4: 290d cmp r1, #13 - 16ac6: d011 beq.n 16aec + 16b7a: f000 82bb beq.w 170f4 + 16b7e: 290f cmp r1, #15 + 16b80: f000 82aa beq.w 170d8 + 16b84: 290d cmp r1, #13 + 16b86: d011 beq.n 16bac if(value != meter){ - 16ac8: eb05 02c0 add.w r2, r5, r0, lsl #3 - 16acc: f502 5240 add.w r2, r2, #12288 ; 0x3000 - 16ad0: f892 e312 ldrb.w lr, [r2, #786] ; 0x312 - 16ad4: 458e cmp lr, r1 - 16ad6: d007 beq.n 16ae8 + 16b88: eb05 0cc0 add.w ip, r5, r0, lsl #3 + 16b8c: f50c 5c40 add.w ip, ip, #12288 ; 0x3000 + 16b90: f89c e332 ldrb.w lr, [ip, #818] ; 0x332 + 16b94: 458e cmp lr, r1 + 16b96: d007 beq.n 16ba8 meter = value; - 16ad8: f882 1312 strb.w r1, [r2, #786] ; 0x312 - 16adc: f81c e003 ldrb.w lr, [ip, r3] - 16ae0: f04e 0e02 orr.w lr, lr, #2 - 16ae4: f80c e003 strb.w lr, [ip, r3] + 16b98: f88c 1332 strb.w r1, [ip, #818] ; 0x332 + 16b9c: f812 e003 ldrb.w lr, [r2, r3] + 16ba0: f04e 0e02 orr.w lr, lr, #2 + 16ba4: f802 e003 strb.w lr, [r2, r3] lastPeak = value; - 16ae8: f882 1313 strb.w r1, [r2, #787] ; 0x313 + 16ba8: f88c 1333 strb.w r1, [ip, #819] ; 0x333 if(callback.dawRecievedChannelMeter){ - 16aec: f8d7 3278 ldr.w r3, [r7, #632] ; 0x278 - 16af0: f8d3 3098 ldr.w r3, [r3, #152] ; 0x98 - 16af4: 2b00 cmp r3, #0 - 16af6: f43f aab0 beq.w 1605a - 16afa: f243 2b20 movw fp, #12832 ; 0x3220 - callback.dawRecievedChannelMute(c-0x10, (v>0)); - 16afe: 4798 blx r3 - 16b00: 44ab add fp, r5 - 16b02: f7ff b8f0 b.w 15ce6 + 16bac: f8d7 3298 ldr.w r3, [r7, #664] ; 0x298 + 16bb0: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 16bb4: 2b00 cmp r3, #0 + 16bb6: f47f ad81 bne.w 166bc + 16bba: f7ff baad b.w 16118 } else if(c==0x4A){ - 16b06: 9b3f ldr r3, [sp, #252] ; 0xfc - 16b08: 2b4a cmp r3, #74 ; 0x4a - 16b0a: f000 8107 beq.w 16d1c + 16bbe: 9b3f ldr r3, [sp, #252] ; 0xfc + 16bc0: 2b4a cmp r3, #74 ; 0x4a + 16bc2: f000 8107 beq.w 16dd4 } else if(c==0x4B){ - 16b0e: 9b3f ldr r3, [sp, #252] ; 0xfc - 16b10: 2b4b cmp r3, #75 ; 0x4b - 16b12: f000 8187 beq.w 16e24 + 16bc6: 9b3f ldr r3, [sp, #252] ; 0xfc + 16bc8: 2b4b cmp r3, #75 ; 0x4b + 16bca: f000 818c beq.w 16ee6 } else if((c & 0xF0) == 0x40){ - 16b16: 9b3f ldr r3, [sp, #252] ; 0xfc - 16b18: f003 03f0 and.w r3, r3, #240 ; 0xf0 - 16b1c: 2b40 cmp r3, #64 ; 0x40 - 16b1e: f47f aa9c bne.w 1605a + 16bce: 9b3f ldr r3, [sp, #252] ; 0xfc + 16bd0: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 16bd4: 2b40 cmp r3, #64 ; 0x40 + 16bd6: f47f aa9f bne.w 16118 uint8_t digit = c & 0x0F; - 16b22: 9b3f ldr r3, [sp, #252] ; 0xfc - 16b24: f003 000f and.w r0, r3, #15 + 16bda: 9b3f ldr r3, [sp, #252] ; 0xfc + 16bdc: f003 000f and.w r0, r3, #15 if(digit < 10 && callback.dawReceivedTimeCodeDigit){ - 16b28: 2809 cmp r0, #9 - 16b2a: f63f aa96 bhi.w 1605a - 16b2e: f8d7 3278 ldr.w r3, [r7, #632] ; 0x278 - 16b32: f8d3 30c0 ldr.w r3, [r3, #192] ; 0xc0 - 16b36: 2b00 cmp r3, #0 - 16b38: f43f aa8f beq.w 1605a + 16be0: 2809 cmp r0, #9 + 16be2: f63f aa99 bhi.w 16118 + 16be6: f8d7 3298 ldr.w r3, [r7, #664] ; 0x298 + 16bea: f8d3 30c4 ldr.w r3, [r3, #196] ; 0xc4 + 16bee: 2b00 cmp r3, #0 + 16bf0: f43f aa92 beq.w 16118 callback.dawReceivedTimeCodeDigit(digit, v); - 16b3c: f243 2b20 movw fp, #12832 ; 0x3220 - 16b40: 4649 mov r1, r9 - 16b42: 4798 blx r3 - 16b44: 44ab add fp, r5 - 16b46: f7ff b8ce b.w 15ce6 - 16b4a: bf00 nop - 16b4c: 20001d4c .word 0x20001d4c - 16b50: 20004ba8 .word 0x20004ba8 - 16b54: 200023c8 .word 0x200023c8 - 16b58: 20001fdc .word 0x20001fdc - 16b5c: 2000bae8 .word 0x2000bae8 - 16b60: 20003c58 .word 0x20003c58 - 16b64: 20001d60 .word 0x20001d60 - 16b68: 20002758 .word 0x20002758 - 16b6c: 20001d80 .word 0x20001d80 - 16b70: 200023ec .word 0x200023ec - 16b74: 20003800 .word 0x20003800 + 16bf4: 4649 mov r1, r9 + 16bf6: 4798 blx r3 + 16bf8: f505 5349 add.w r3, r5, #12864 ; 0x3240 + 16bfc: 933e str r3, [sp, #248] ; 0xf8 + 16bfe: f7ff b8d3 b.w 15da8 + 16c02: bf00 nop + 16c04: 20001d4c .word 0x20001d4c + 16c08: 20004c68 .word 0x20004c68 + 16c0c: 200023c8 .word 0x200023c8 + 16c10: 20001fdc .word 0x20001fdc + 16c14: 2000bb08 .word 0x2000bb08 + 16c18: 20003d18 .word 0x20003d18 + 16c1c: 20001d60 .word 0x20001d60 + 16c20: 20002760 .word 0x20002760 + 16c24: 20001d80 .word 0x20001d80 + 16c28: 200023ec .word 0x200023ec + 16c2c: 200038c0 .word 0x200038c0 return bitRead(flags, bit); - 16b78: f8b7 235c ldrh.w r2, [r7, #860] ; 0x35c + 16c30: f8b7 237c ldrh.w r2, [r7, #892] ; 0x37c if(flags.read(BMC_FAS3_FLAG_POLL_SCENE_NAMES)){ - 16b7c: 06d1 lsls r1, r2, #27 - 16b7e: f3c2 1300 ubfx r3, r2, #4, #1 - 16b82: f140 8115 bpl.w 16db0 + 16c34: 06d1 lsls r1, r2, #27 + 16c36: f3c2 1300 ubfx r3, r2, #4, #1 + 16c3a: f140 811a bpl.w 16e72 if(scenePolled < 7){ - 16b86: f897 3496 ldrb.w r3, [r7, #1174] ; 0x496 - 16b8a: 2b06 cmp r3, #6 - 16b8c: f200 80fc bhi.w 16d88 + 16c3e: f897 34b6 ldrb.w r3, [r7, #1206] ; 0x4b6 + 16c42: 2b06 cmp r3, #6 + 16c44: f200 8101 bhi.w 16e4a scenePolled++; - 16b90: 3301 adds r3, #1 - 16b92: b2db uxtb r3, r3 + 16c48: 3301 adds r3, #1 + 16c4a: b2db uxtb r3, r3 fetchSysEx(BMC_FAS3_FUNC_ID_SCENE_NAME, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 16b94: b29a uxth r2, r3 + 16c4c: b29a uxth r2, r3 scenePolled++; - 16b96: f887 3496 strb.w r3, [r7, #1174] ; 0x496 + 16c4e: f887 34b6 strb.w r3, [r7, #1206] ; 0x4b6 fetchSysEx(BMC_FAS3_FUNC_ID_SCENE_NAME, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 16b9a: 2300 movs r3, #0 - 16b9c: 9840 ldr r0, [sp, #256] ; 0x100 - 16b9e: 210e movs r1, #14 - 16ba0: 9300 str r3, [sp, #0] - 16ba2: f7ea fc15 bl 13d0 - 16ba6: 4bd4 ldr r3, [pc, #848] ; (16ef8 ) - 16ba8: f8d7 2358 ldr.w r2, [r7, #856] ; 0x358 - 16bac: 6819 ldr r1, [r3, #0] - 16bae: 681b ldr r3, [r3, #0] - 16bb0: f8b2 2060 ldrh.w r2, [r2, #96] ; 0x60 + 16c52: 2300 movs r3, #0 + 16c54: 9840 ldr r0, [sp, #256] ; 0x100 + 16c56: 210e movs r1, #14 + 16c58: 9300 str r3, [sp, #0] + 16c5a: f7ea fbb9 bl 13d0 + 16c5e: 4bd4 ldr r3, [pc, #848] ; (16fb0 ) + 16c60: f8d7 2378 ldr.w r2, [r7, #888] ; 0x378 + 16c64: 6819 ldr r1, [r3, #0] + 16c66: 681b ldr r3, [r3, #0] + 16c68: f8b2 2060 ldrh.w r2, [r2, #96] ; 0x60 prevTime = (unsigned long) _BMCTiming::get(); - 16bb4: f8c7 3380 str.w r3, [r7, #896] ; 0x380 + 16c6c: f8c7 33a0 str.w r3, [r7, #928] ; 0x3a0 interval = value; - 16bb8: f44f 63fa mov.w r3, #2000 ; 0x7d0 + 16c70: f44f 63fa mov.w r3, #2000 ; 0x7d0 if(globals.getFasDebug()){ - 16bbc: 05d0 lsls r0, r2, #23 + 16c74: 05d0 lsls r0, r2, #23 prevTime = (unsigned long) _BMCTiming::get(); - 16bbe: f8c7 1388 str.w r1, [r7, #904] ; 0x388 + 16c76: f8c7 13a8 str.w r1, [r7, #936] ; 0x3a8 interval = value; - 16bc2: f8a7 3384 strh.w r3, [r7, #900] ; 0x384 - 16bc6: f241 3388 movw r3, #5000 ; 0x1388 - 16bca: f8a7 337c strh.w r3, [r7, #892] ; 0x37c - 16bce: f57f a899 bpl.w 15d04 - 16bd2: 2118 movs r1, #24 - 16bd4: 48c9 ldr r0, [pc, #804] ; (16efc ) - 16bd6: f015 fcb7 bl 2c548 - 16bda: 2101 movs r1, #1 - 16bdc: 48c8 ldr r0, [pc, #800] ; (16f00 ) - 16bde: f015 fcb3 bl 2c548 + 16c7a: f8a7 33a4 strh.w r3, [r7, #932] ; 0x3a4 + 16c7e: f241 3388 movw r3, #5000 ; 0x1388 + 16c82: f8a7 339c strh.w r3, [r7, #924] ; 0x39c + 16c86: f57f a89e bpl.w 15dc6 + 16c8a: 2118 movs r1, #24 + 16c8c: 48c9 ldr r0, [pc, #804] ; (16fb4 ) + 16c8e: f015 fccf bl 2c630 + 16c92: 2101 movs r1, #1 + 16c94: 48c8 ldr r0, [pc, #800] ; (16fb8 ) + 16c96: f015 fccb bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 16be2: 4641 mov r1, r8 - 16be4: 2300 movs r3, #0 - 16be6: 220a movs r2, #10 - 16be8: 48c6 ldr r0, [pc, #792] ; (16f04 ) - 16bea: f013 f95f bl 29eac - 16bee: 2101 movs r1, #1 - 16bf0: 48c3 ldr r0, [pc, #780] ; (16f00 ) - 16bf2: f015 fca9 bl 2c548 + 16c9a: 4641 mov r1, r8 + 16c9c: 2300 movs r3, #0 + 16c9e: 220a movs r2, #10 + 16ca0: 48c6 ldr r0, [pc, #792] ; (16fbc ) + 16ca2: f013 f979 bl 29f98 + 16ca6: 2101 movs r1, #1 + 16ca8: 48c3 ldr r0, [pc, #780] ; (16fb8 ) + 16caa: f015 fcc1 bl 2c630 return write((const uint8_t *)str, strlen(str)); } - 16bf6: 4620 mov r0, r4 - 16bf8: f017 ffa2 bl 2eb40 - 16bfc: 4601 mov r1, r0 - 16bfe: 4620 mov r0, r4 - 16c00: f015 fca2 bl 2c548 + 16cae: 4620 mov r0, r4 + 16cb0: f017 ffc6 bl 2ec40 + 16cb4: 4601 mov r1, r0 + 16cb6: 4620 mov r0, r4 + 16cb8: f015 fcba bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 16c04: 48bf ldr r0, [pc, #764] ; (16f04 ) - 16c06: f013 f935 bl 29e74 + 16cbc: 48bf ldr r0, [pc, #764] ; (16fbc ) + 16cbe: f013 f94f bl 29f60 break; - 16c0a: f7ff b87b b.w 15d04 - 16c0e: 4626 mov r6, r4 - 16c10: f8d7 3358 ldr.w r3, [r7, #856] ; 0x358 - 16c14: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 16cc2: f7ff b880 b.w 15dc6 + 16cc6: 46a2 mov sl, r4 + 16cc8: f8d7 3378 ldr.w r3, [r7, #888] ; 0x378 + 16ccc: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(globals.getFasDebug()){ - 16c18: 05d9 lsls r1, r3, #23 - 16c1a: f57f acca bpl.w 165b2 - 16c1e: 2114 movs r1, #20 - 16c20: 48b9 ldr r0, [pc, #740] ; (16f08 ) - 16c22: f015 fc91 bl 2c548 - 16c26: 48b7 ldr r0, [pc, #732] ; (16f04 ) - 16c28: f013 f924 bl 29e74 - 16c2c: e4c1 b.n 165b2 + 16cd0: 05d9 lsls r1, r3, #23 + 16cd2: f57f accc bpl.w 1666e + 16cd6: 2114 movs r1, #20 + 16cd8: 48b9 ldr r0, [pc, #740] ; (16fc0 ) + 16cda: f015 fca9 bl 2c630 + 16cde: 48b7 ldr r0, [pc, #732] ; (16fbc ) + 16ce0: f013 f93e bl 29f60 + 16ce4: e4c3 b.n 1666e bool t = bitRead(flags, 0); - 16c2e: f897 2495 ldrb.w r2, [r7, #1173] ; 0x495 + 16ce6: f897 24b5 ldrb.w r2, [r7, #1205] ; 0x4b5 if(t){ - 16c32: f012 0301 ands.w r3, r2, #1 - 16c36: d05c beq.n 16cf2 + 16cea: f012 0301 ands.w r3, r2, #1 + 16cee: d05c beq.n 16daa scenePolled = 0; - 16c38: 2300 movs r3, #0 + 16cf0: 2300 movs r3, #0 bitWrite(flags, 0, 0); - 16c3a: f022 0201 bic.w r2, r2, #1 + 16cf2: f022 0201 bic.w r2, r2, #1 fetchSysEx(BMC_FAS3_FUNC_ID_SCENE_NAME, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 16c3e: 9840 ldr r0, [sp, #256] ; 0x100 - 16c40: 210e movs r1, #14 - 16c42: f887 2495 strb.w r2, [r7, #1173] ; 0x495 - 16c46: 461a mov r2, r3 + 16cf6: 9840 ldr r0, [sp, #256] ; 0x100 + 16cf8: 210e movs r1, #14 + 16cfa: f887 24b5 strb.w r2, [r7, #1205] ; 0x4b5 + 16cfe: 461a mov r2, r3 scenePolled = 0; - 16c48: f887 3496 strb.w r3, [r7, #1174] ; 0x496 + 16d00: f887 34b6 strb.w r3, [r7, #1206] ; 0x4b6 fetchSysEx(BMC_FAS3_FUNC_ID_SCENE_NAME, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 16c4c: 9300 str r3, [sp, #0] - 16c4e: f7ea fbbf bl 13d0 + 16d04: 9300 str r3, [sp, #0] + 16d06: f7ea fb63 bl 13d0 if(midi.callback.fasPresetChange){ - 16c52: f8d7 3354 ldr.w r3, [r7, #852] ; 0x354 - 16c56: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 16c5a: f8d3 20cc ldr.w r2, [r3, #204] ; 0xcc + 16d0a: f8d7 3374 ldr.w r3, [r7, #884] ; 0x374 + 16d0e: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 16d12: f8d3 20d0 ldr.w r2, [r3, #208] ; 0xd0 bitSet(flags, bit); - 16c5e: f8b7 335c ldrh.w r3, [r7, #860] ; 0x35c - 16c62: f043 0310 orr.w r3, r3, #16 - 16c66: f8a7 335c strh.w r3, [r7, #860] ; 0x35c - 16c6a: b132 cbz r2, 16c7a + 16d16: f8b7 337c ldrh.w r3, [r7, #892] ; 0x37c + 16d1a: f043 0310 orr.w r3, r3, #16 + 16d1e: f8a7 337c strh.w r3, [r7, #892] ; 0x37c + 16d22: b132 cbz r2, 16d32 if(id < 1024){ - 16c6c: f8b7 038c ldrh.w r0, [r7, #908] ; 0x38c + 16d24: f8b7 03ac ldrh.w r0, [r7, #940] ; 0x3ac return 0; - 16c70: f5b0 6f80 cmp.w r0, #1024 ; 0x400 + 16d28: f5b0 6f80 cmp.w r0, #1024 ; 0x400 midi.callback.fasPresetChange(preset.getPresetNumber()); - 16c74: bf28 it cs - 16c76: 2000 movcs r0, #0 - 16c78: 4790 blx r2 - 16c7a: 4b9f ldr r3, [pc, #636] ; (16ef8 ) + 16d2c: bf28 it cs + 16d2e: 2000 movcs r0, #0 + 16d30: 4790 blx r2 + 16d32: 4b9f ldr r3, [pc, #636] ; (16fb0 ) return bitRead(flags, bit); - 16c7c: f8d7 2358 ldr.w r2, [r7, #856] ; 0x358 - 16c80: 6819 ldr r1, [r3, #0] - 16c82: 681b ldr r3, [r3, #0] - 16c84: f8b2 2060 ldrh.w r2, [r2, #96] ; 0x60 + 16d34: f8d7 2378 ldr.w r2, [r7, #888] ; 0x378 + 16d38: 6819 ldr r1, [r3, #0] + 16d3a: 681b ldr r3, [r3, #0] + 16d3c: f8b2 2060 ldrh.w r2, [r2, #96] ; 0x60 prevTime = (unsigned long) _BMCTiming::get(); - 16c88: f8c7 3380 str.w r3, [r7, #896] ; 0x380 + 16d40: f8c7 33a0 str.w r3, [r7, #928] ; 0x3a0 interval = value; - 16c8c: f44f 63fa mov.w r3, #2000 ; 0x7d0 + 16d44: f44f 63fa mov.w r3, #2000 ; 0x7d0 prevTime = (unsigned long) _BMCTiming::get(); - 16c90: f8c7 1388 str.w r1, [r7, #904] ; 0x388 + 16d48: f8c7 13a8 str.w r1, [r7, #936] ; 0x3a8 interval = value; - 16c94: f8a7 3384 strh.w r3, [r7, #900] ; 0x384 - 16c98: f241 3388 movw r3, #5000 ; 0x1388 - 16c9c: f8a7 337c strh.w r3, [r7, #892] ; 0x37c + 16d4c: f8a7 33a4 strh.w r3, [r7, #932] ; 0x3a4 + 16d50: f241 3388 movw r3, #5000 ; 0x1388 + 16d54: f8a7 339c strh.w r3, [r7, #924] ; 0x39c if(globals.getFasDebug()){ - 16ca0: 05d3 lsls r3, r2, #23 - 16ca2: f57f a82f bpl.w 15d04 - 16ca6: 2114 movs r1, #20 - 16ca8: 4898 ldr r0, [pc, #608] ; (16f0c ) - 16caa: f015 fc4d bl 2c548 - 16cae: 2101 movs r1, #1 - 16cb0: 4893 ldr r0, [pc, #588] ; (16f00 ) - 16cb2: f015 fc49 bl 2c548 + 16d58: 05d3 lsls r3, r2, #23 + 16d5a: f57f a834 bpl.w 15dc6 + 16d5e: 2114 movs r1, #20 + 16d60: 4898 ldr r0, [pc, #608] ; (16fc4 ) + 16d62: f015 fc65 bl 2c630 + 16d66: 2101 movs r1, #1 + 16d68: 4893 ldr r0, [pc, #588] ; (16fb8 ) + 16d6a: f015 fc61 bl 2c630 size_t print(int n) { return print((long)n); } - 16cb6: f8b7 138c ldrh.w r1, [r7, #908] ; 0x38c - 16cba: 4892 ldr r0, [pc, #584] ; (16f04 ) - 16cbc: f013 f8ce bl 29e5c - 16cc0: e795 b.n 16bee + 16d6e: f8b7 13ac ldrh.w r1, [r7, #940] ; 0x3ac + 16d72: 4892 ldr r0, [pc, #584] ; (16fbc ) + 16d74: f013 f8e8 bl 29f48 + 16d78: e795 b.n 16ca6 void setRecState(bool value){ bitWrite(states, 0, value);} - 16cc2: f1b9 0f00 cmp.w r9, #0 - 16cc6: f000 80a4 beq.w 16e12 - 16cca: 3301 adds r3, #1 - 16ccc: eb07 02c3 add.w r2, r7, r3, lsl #3 - 16cd0: f892 2304 ldrb.w r2, [r2, #772] ; 0x304 - 16cd4: f042 0201 orr.w r2, r2, #1 - 16cd8: eb07 03c3 add.w r3, r7, r3, lsl #3 - 16cdc: f883 2304 strb.w r2, [r3, #772] ; 0x304 + 16d7a: f1b9 0f00 cmp.w r9, #0 + 16d7e: f000 80a9 beq.w 16ed4 + 16d82: 3301 adds r3, #1 + 16d84: eb07 02c3 add.w r2, r7, r3, lsl #3 + 16d88: f892 2324 ldrb.w r2, [r2, #804] ; 0x324 + 16d8c: f042 0201 orr.w r2, r2, #1 + 16d90: eb07 03c3 add.w r3, r7, r3, lsl #3 + 16d94: f883 2324 strb.w r2, [r3, #804] ; 0x324 if(callback.dawRecievedChannelRecReady){ - 16ce0: f8d7 3278 ldr.w r3, [r7, #632] ; 0x278 - 16ce4: f8d3 30b8 ldr.w r3, [r3, #184] ; 0xb8 - 16ce8: 2b00 cmp r3, #0 - 16cea: f47f ac84 bne.w 165f6 - 16cee: f7ff b9b4 b.w 1605a + 16d98: f8d7 3298 ldr.w r3, [r7, #664] ; 0x298 + 16d9c: f8d3 30bc ldr.w r3, [r3, #188] ; 0xbc + 16da0: 2b00 cmp r3, #0 + 16da2: f47f ac86 bne.w 166b2 + 16da6: f7ff b9b7 b.w 16118 fetchSysEx(BMC_FAS3_FUNC_ID_SCENE_NAME, t_value, 0, BMC_FAS3_FETCH_TYPE_7_BIT); - 16cf2: 9300 str r3, [sp, #0] - 16cf4: 227f movs r2, #127 ; 0x7f - 16cf6: 9840 ldr r0, [sp, #256] ; 0x100 - 16cf8: 210e movs r1, #14 - 16cfa: f7ea fb69 bl 13d0 + 16daa: 9300 str r3, [sp, #0] + 16dac: 227f movs r2, #127 ; 0x7f + 16dae: 9840 ldr r0, [sp, #256] ; 0x100 + 16db0: 210e movs r1, #14 + 16db2: f7ea fb0d bl 13d0 bitClear(flags, bit); - 16cfe: f8b7 335c ldrh.w r3, [r7, #860] ; 0x35c - 16d02: f023 0310 bic.w r3, r3, #16 - 16d06: f8a7 335c strh.w r3, [r7, #860] ; 0x35c + 16db6: f8b7 337c ldrh.w r3, [r7, #892] ; 0x37c + 16dba: f023 0310 bic.w r3, r3, #16 + 16dbe: f8a7 337c strh.w r3, [r7, #892] ; 0x37c } - 16d0a: e7b6 b.n 16c7a + 16dc2: e7b6 b.n 16d32 bitWrite(blockStates[t_id], 0, t_value); - 16d0c: f022 0201 bic.w r2, r2, #1 - 16d10: f888 2439 strb.w r2, [r8, #1081] ; 0x439 - 16d14: e44d b.n 165b2 - 16d16: f002 02fe and.w r2, r2, #254 ; 0xfe - 16d1a: e436 b.n 1658a + 16dc4: f022 0201 bic.w r2, r2, #1 + 16dc8: f888 2459 strb.w r2, [r8, #1113] ; 0x459 + 16dcc: e44f b.n 1666e + 16dce: f002 02fe and.w r2, r2, #254 ; 0xfe + 16dd2: e438 b.n 16646 if(a > 0 && a < 63){ - 16d1c: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff - 16d20: 2b3d cmp r3, #61 ; 0x3d - 16d22: f63f a99a bhi.w 1605a + 16dd4: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff + 16dd8: 2b3d cmp r3, #61 ; 0x3d + 16dda: f63f a99d bhi.w 16118 twoDigitDisplay[1] = sevDigitChars[a]; - 16d26: 44b9 add r9, r7 - 16d28: f243 2b20 movw fp, #12832 ; 0x3220 - 16d2c: f899 3230 ldrb.w r3, [r9, #560] ; 0x230 - 16d30: 44ab add fp, r5 - 16d32: f887 32fb strb.w r3, [r7, #763] ; 0x2fb - 16d36: f7fe bfd6 b.w 15ce6 + 16dde: 44b9 add r9, r7 + 16de0: f899 3250 ldrb.w r3, [r9, #592] ; 0x250 + 16de4: f887 331b strb.w r3, [r7, #795] ; 0x31b + 16de8: f505 5349 add.w r3, r5, #12864 ; 0x3240 + 16dec: 933e str r3, [sp, #248] ; 0xf8 + 16dee: f7fe bfdb b.w 15da8 void setSoloState(bool value){ bitWrite(states, 1, value);} - 16d3a: 1c43 adds r3, r0, #1 - 16d3c: eb07 02c3 add.w r2, r7, r3, lsl #3 - 16d40: f892 2304 ldrb.w r2, [r2, #772] ; 0x304 - 16d44: f1b9 0f00 cmp.w r9, #0 - 16d48: f000 80c2 beq.w 16ed0 - 16d4c: f042 0202 orr.w r2, r2, #2 - 16d50: eb07 03c3 add.w r3, r7, r3, lsl #3 - 16d54: f883 2304 strb.w r2, [r3, #772] ; 0x304 + 16df2: 1c43 adds r3, r0, #1 + 16df4: eb07 02c3 add.w r2, r7, r3, lsl #3 + 16df8: f892 2324 ldrb.w r2, [r2, #804] ; 0x324 + 16dfc: f1b9 0f00 cmp.w r9, #0 + 16e00: f000 80c7 beq.w 16f92 + 16e04: f042 0202 orr.w r2, r2, #2 + 16e08: eb07 03c3 add.w r3, r7, r3, lsl #3 + 16e0c: f883 2324 strb.w r2, [r3, #804] ; 0x324 if(callback.dawRecievedChannelSolo){ - 16d58: f8d7 3278 ldr.w r3, [r7, #632] ; 0x278 - 16d5c: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 16d60: 2b00 cmp r3, #0 - 16d62: f43f a97a beq.w 1605a - callback.dawRecievedChannelMute(c-0x10, (v>0)); - 16d66: f1b9 0100 subs.w r1, r9, #0 - 16d6a: bf18 it ne - 16d6c: 2101 movne r1, #1 - 16d6e: e6c4 b.n 16afa + 16e10: f8d7 3298 ldr.w r3, [r7, #664] ; 0x298 + 16e14: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 + 16e18: 2b00 cmp r3, #0 + 16e1a: f43f a97d beq.w 16118 + callback.dawRecievedChannelSelect((c-0x18), (v>0)); + 16e1e: f1b9 0100 subs.w r1, r9, #0 + 16e22: bf18 it ne + 16e24: 2101 movne r1, #1 + 16e26: 4798 blx r3 + 16e28: f505 5349 add.w r3, r5, #12864 ; 0x3240 + 16e2c: 933e str r3, [sp, #248] ; 0xf8 + 16e2e: f7fe bfbb b.w 15da8 return BMC_MIDI_ARRAY_TO_8BITS_LSB_FIRST(t_offset, sysex); - 16d70: f898 300c ldrb.w r3, [r8, #12] - 16d74: f898 100b ldrb.w r1, [r8, #11] - 16d78: 01db lsls r3, r3, #7 - 16d7a: f001 017f and.w r1, r1, #127 ; 0x7f - 16d7e: f403 537e and.w r3, r3, #16256 ; 0x3f80 + 16e32: f898 300c ldrb.w r3, [r8, #12] + 16e36: f898 100b ldrb.w r1, [r8, #11] + 16e3a: 01db lsls r3, r3, #7 + 16e3c: f001 017f and.w r1, r1, #127 ; 0x7f + 16e40: f403 537e and.w r3, r3, #16256 ; 0x3f80 if(blocksInfo[e].id == blockId){ - 16d82: 4319 orrs r1, r3 - 16d84: f7ff bbe6 b.w 16554 + 16e44: 4319 orrs r1, r3 + 16e46: f7ff bbe3 b.w 16610 bitClear(flags, bit); - 16d88: f022 0210 bic.w r2, r2, #16 - 16d8c: f8a7 235c strh.w r2, [r7, #860] ; 0x35c + 16e4a: f022 0210 bic.w r2, r2, #16 + 16e4e: f8a7 237c strh.w r2, [r7, #892] ; 0x37c scenePolled = 0x7F; - 16d90: 227f movs r2, #127 ; 0x7f - 16d92: f887 2496 strb.w r2, [r7, #1174] ; 0x496 - } - 16d96: e700 b.n 16b9a - 16d98: f898 300c ldrb.w r3, [r8, #12] - 16d9c: f898 100b ldrb.w r1, [r8, #11] - 16da0: 01db lsls r3, r3, #7 - 16da2: f001 017f and.w r1, r1, #127 ; 0x7f - 16da6: f403 537e and.w r3, r3, #16256 ; 0x3f80 + 16e52: 227f movs r2, #127 ; 0x7f + 16e54: f887 24b6 strb.w r2, [r7, #1206] ; 0x4b6 + } + 16e58: e6fb b.n 16c52 + 16e5a: f898 300c ldrb.w r3, [r8, #12] + 16e5e: f898 100b ldrb.w r1, [r8, #11] + 16e62: 01db lsls r3, r3, #7 + 16e64: f001 017f and.w r1, r1, #127 ; 0x7f + 16e68: f403 537e and.w r3, r3, #16256 ; 0x3f80 if(blocksInfo[e].id == blockId){ - 16daa: 4319 orrs r1, r3 - 16dac: f7ff bb87 b.w 164be + 16e6c: 4319 orrs r1, r3 + 16e6e: f7ff bb84 b.w 1657a fetchSysEx(funcId, 0, 0, 0); - 16db0: 9840 ldr r0, [sp, #256] ; 0x100 - 16db2: 461a mov r2, r3 - 16db4: 2113 movs r1, #19 - 16db6: 9300 str r3, [sp, #0] - 16db8: f7ea fb0a bl 13d0 - } - 16dbc: e6f3 b.n 16ba6 - 16dbe: 211a movs r1, #26 - 16dc0: 4853 ldr r0, [pc, #332] ; (16f10 ) - 16dc2: 9341 str r3, [sp, #260] ; 0x104 - 16dc4: f015 fbc0 bl 2c548 - 16dc8: 2101 movs r1, #1 - 16dca: 484d ldr r0, [pc, #308] ; (16f00 ) - 16dcc: f015 fbbc bl 2c548 + 16e72: 9840 ldr r0, [sp, #256] ; 0x100 + 16e74: 461a mov r2, r3 + 16e76: 2113 movs r1, #19 + 16e78: 9300 str r3, [sp, #0] + 16e7a: f7ea faa9 bl 13d0 + } + 16e7e: e6ee b.n 16c5e + 16e80: 211a movs r1, #26 + 16e82: 4851 ldr r0, [pc, #324] ; (16fc8 ) + 16e84: 9341 str r3, [sp, #260] ; 0x104 + 16e86: f015 fbd3 bl 2c630 + 16e8a: 2101 movs r1, #1 + 16e8c: 484a ldr r0, [pc, #296] ; (16fb8 ) + 16e8e: f015 fbcf bl 2c630 BMC_PRINTLN("FAS3 Block Bypass Received", blocksInfo[e].name, value); - 16dd0: 9b40 ldr r3, [sp, #256] ; 0x100 - 16dd2: eb03 02c8 add.w r2, r3, r8, lsl #3 - 16dd6: f202 1259 addw r2, r2, #345 ; 0x159 + 16e92: 9b40 ldr r3, [sp, #256] ; 0x100 + 16e94: eb03 02c8 add.w r2, r3, r8, lsl #3 + 16e98: f202 1259 addw r2, r2, #345 ; 0x159 return write((const uint8_t *)str, strlen(str)); } - 16dda: 4610 mov r0, r2 - 16ddc: 9240 str r2, [sp, #256] ; 0x100 - 16dde: f017 feaf bl 2eb40 - 16de2: 9a40 ldr r2, [sp, #256] ; 0x100 - 16de4: 4601 mov r1, r0 - 16de6: 4610 mov r0, r2 - 16de8: f015 fbae bl 2c548 - 16dec: 2101 movs r1, #1 - 16dee: 4844 ldr r0, [pc, #272] ; (16f00 ) - 16df0: f015 fbaa bl 2c548 + 16e9c: 4610 mov r0, r2 + 16e9e: 9240 str r2, [sp, #256] ; 0x100 + 16ea0: f017 fece bl 2ec40 + 16ea4: 9a40 ldr r2, [sp, #256] ; 0x100 + 16ea6: 4601 mov r1, r0 + 16ea8: 4610 mov r0, r2 + 16eaa: f015 fbc1 bl 2c630 + 16eae: 2101 movs r1, #1 + 16eb0: 4841 ldr r0, [pc, #260] ; (16fb8 ) + 16eb2: f015 fbbd bl 2c630 size_t print(int n) { return print((long)n); } - 16df4: f1b9 0100 subs.w r1, r9, #0 - 16df8: 4842 ldr r0, [pc, #264] ; (16f04 ) - 16dfa: bf18 it ne - 16dfc: 2101 movne r1, #1 - 16dfe: f013 f82d bl 29e5c + 16eb6: f1b9 0100 subs.w r1, r9, #0 + 16eba: 4840 ldr r0, [pc, #256] ; (16fbc ) + 16ebc: bf18 it ne + 16ebe: 2101 movne r1, #1 + 16ec0: f013 f842 bl 29f48 size_t println(int n) { return print(n) + println(); } - 16e02: 4840 ldr r0, [pc, #256] ; (16f04 ) - 16e04: f013 f836 bl 29e74 - 16e08: 9b41 ldr r3, [sp, #260] ; 0x104 - 16e0a: f893 2439 ldrb.w r2, [r3, #1081] ; 0x439 - 16e0e: f7ff bbc7 b.w 165a0 + 16ec4: 483d ldr r0, [pc, #244] ; (16fbc ) + 16ec6: f013 f84b bl 29f60 + 16eca: 9b41 ldr r3, [sp, #260] ; 0x104 + 16ecc: f893 2459 ldrb.w r2, [r3, #1113] ; 0x459 + 16ed0: f7ff bbc4 b.w 1665c void setRecState(bool value){ bitWrite(states, 0, value);} - 16e12: 9b3f ldr r3, [sp, #252] ; 0xfc - 16e14: 3301 adds r3, #1 - 16e16: eb07 02c3 add.w r2, r7, r3, lsl #3 - 16e1a: f892 2304 ldrb.w r2, [r2, #772] ; 0x304 - 16e1e: f002 02fe and.w r2, r2, #254 ; 0xfe - 16e22: e759 b.n 16cd8 + 16ed4: 9b3f ldr r3, [sp, #252] ; 0xfc + 16ed6: 3301 adds r3, #1 + 16ed8: eb07 02c3 add.w r2, r7, r3, lsl #3 + 16edc: f892 2324 ldrb.w r2, [r2, #804] ; 0x324 + 16ee0: f002 02fe and.w r2, r2, #254 ; 0xfe + 16ee4: e754 b.n 16d90 if(b > 0 && b < 63){ - 16e24: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff - 16e28: 2b3d cmp r3, #61 ; 0x3d - 16e2a: f63f a916 bhi.w 1605a + 16ee6: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff + 16eea: 2b3d cmp r3, #61 ; 0x3d + 16eec: f63f a914 bhi.w 16118 twoDigitDisplay[0] = sevDigitChars[b]; - 16e2e: 44b9 add r9, r7 - 16e30: f243 2b20 movw fp, #12832 ; 0x3220 - 16e34: f899 3230 ldrb.w r3, [r9, #560] ; 0x230 - 16e38: 44ab add fp, r5 - 16e3a: f887 32fa strb.w r3, [r7, #762] ; 0x2fa - 16e3e: f7fe bf52 b.w 15ce6 + 16ef0: 44b9 add r9, r7 + 16ef2: f899 3250 ldrb.w r3, [r9, #592] ; 0x250 + 16ef6: f887 331a strb.w r3, [r7, #794] ; 0x31a + 16efa: f505 5349 add.w r3, r5, #12864 ; 0x3240 + 16efe: 933e str r3, [sp, #248] ; 0xf8 + 16f00: f7fe bf52 b.w 15da8 void setMuteState(bool value){ bitWrite(states, 2, value);} - 16e42: 1c43 adds r3, r0, #1 - 16e44: eb07 02c3 add.w r2, r7, r3, lsl #3 - 16e48: f892 2304 ldrb.w r2, [r2, #772] ; 0x304 - 16e4c: f1b9 0f00 cmp.w r9, #0 - 16e50: f000 80c6 beq.w 16fe0 - 16e54: f042 0204 orr.w r2, r2, #4 - 16e58: eb07 03c3 add.w r3, r7, r3, lsl #3 - 16e5c: f883 2304 strb.w r2, [r3, #772] ; 0x304 + 16f04: 1c43 adds r3, r0, #1 + 16f06: eb07 02c3 add.w r2, r7, r3, lsl #3 + 16f0a: f892 2324 ldrb.w r2, [r2, #804] ; 0x324 + 16f0e: f1b9 0f00 cmp.w r9, #0 + 16f12: f000 80bf beq.w 17094 + 16f16: f042 0204 orr.w r2, r2, #4 + 16f1a: eb07 03c3 add.w r3, r7, r3, lsl #3 + 16f1e: f883 2324 strb.w r2, [r3, #804] ; 0x324 if(callback.dawRecievedChannelMute){ - 16e60: f8d7 3278 ldr.w r3, [r7, #632] ; 0x278 - 16e64: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 - 16e68: 2b00 cmp r3, #0 - 16e6a: f47f af7c bne.w 16d66 - 16e6e: f7ff b8f4 b.w 1605a + 16f22: f8d7 3298 ldr.w r3, [r7, #664] ; 0x298 + 16f26: f8d3 30b8 ldr.w r3, [r3, #184] ; 0xb8 + 16f2a: 2b00 cmp r3, #0 + 16f2c: f47f af77 bne.w 16e1e + 16f30: f7ff b8f2 b.w 16118 memset(str, 0, length); - 16e72: 9a41 ldr r2, [sp, #260] ; 0x104 - 16e74: 4620 mov r0, r4 - 16e76: f017 fb09 bl 2e48c + 16f34: 9a41 ldr r2, [sp, #260] ; 0x104 + 16f36: 4620 mov r0, r4 + 16f38: f017 fb1c bl 2e574 for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 16e7a: f1a9 0003 sub.w r0, r9, #3 - 16e7e: 4622 mov r2, r4 - 16e80: 2308 movs r3, #8 - 16e82: b2c0 uxtb r0, r0 + 16f3c: f1a9 0003 sub.w r0, r9, #3 + 16f40: 4622 mov r2, r4 + 16f42: 2308 movs r3, #8 + 16f44: b2c0 uxtb r0, r0 str[i] = (char) sysex[e]; - 16e84: eb08 0103 add.w r1, r8, r3 + 16f46: eb08 0103 add.w r1, r8, r3 for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 16e88: 3301 adds r3, #1 - 16e8a: b2db uxtb r3, r3 + 16f4a: 3301 adds r3, #1 + 16f4c: b2db uxtb r3, r3 str[i] = (char) sysex[e]; - 16e8c: 7949 ldrb r1, [r1, #5] + 16f4e: 7949 ldrb r1, [r1, #5] for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 16e8e: 4283 cmp r3, r0 + 16f50: 4283 cmp r3, r0 str[i] = (char) sysex[e]; - 16e90: f802 1b01 strb.w r1, [r2], #1 + 16f52: f802 1b01 strb.w r1, [r2], #1 for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 16e94: d1f6 bne.n 16e84 + 16f56: d1f6 bne.n 16f46 str[length-1] = 0; - 16e96: f20d 1317 addw r3, sp, #279 ; 0x117 - 16e9a: 2200 movs r2, #0 - 16e9c: 9941 ldr r1, [sp, #260] ; 0x104 - 16e9e: 545a strb r2, [r3, r1] + 16f58: f20d 1317 addw r3, sp, #279 ; 0x117 + 16f5c: 2200 movs r2, #0 + 16f5e: 9941 ldr r1, [sp, #260] ; 0x104 + 16f60: 545a strb r2, [r3, r1] } - 16ea0: f7ff ba86 b.w 163b0 + 16f62: f7ff ba83 b.w 1646c memset(str, 0, length); - 16ea4: 460a mov r2, r1 - 16ea6: 4689 mov r9, r1 - 16ea8: 4620 mov r0, r4 - 16eaa: 4619 mov r1, r3 - 16eac: f017 faee bl 2e48c + 16f66: 460a mov r2, r1 + 16f68: 4689 mov r9, r1 + 16f6a: 4620 mov r0, r4 + 16f6c: 4619 mov r1, r3 + 16f6e: f017 fb01 bl 2e574 str[i] = (char) sysex[e]; - 16eb0: 9b41 ldr r3, [sp, #260] ; 0x104 - 16eb2: a952 add r1, sp, #328 ; 0x148 - 16eb4: 4620 mov r0, r4 - 16eb6: 2b00 cmp r3, #0 - 16eb8: bf14 ite ne - 16eba: 464a movne r2, r9 - 16ebc: 2201 moveq r2, #1 - 16ebe: f013 fc23 bl 2a708 + 16f72: 9b41 ldr r3, [sp, #260] ; 0x104 + 16f74: a952 add r1, sp, #328 ; 0x148 + 16f76: 4620 mov r0, r4 + 16f78: 2b00 cmp r3, #0 + 16f7a: bf14 ite ne + 16f7c: 464a movne r2, r9 + 16f7e: 2201 moveq r2, #1 + 16f80: f013 fc36 bl 2a7f0 str[length-1] = 0; - 16ec2: f20d 1217 addw r2, sp, #279 ; 0x117 - 16ec6: 2300 movs r3, #0 - 16ec8: f802 3009 strb.w r3, [r2, r9] + 16f84: f20d 1217 addw r2, sp, #279 ; 0x117 + 16f88: 2300 movs r3, #0 + 16f8a: f802 3009 strb.w r3, [r2, r9] } - 16ecc: f7ff ba27 b.w 1631e + 16f8e: f7ff ba24 b.w 163da void setSoloState(bool value){ bitWrite(states, 1, value);} - 16ed0: f002 02fd and.w r2, r2, #253 ; 0xfd - 16ed4: e73c b.n 16d50 + 16f92: f002 02fd and.w r2, r2, #253 ; 0xfd + 16f96: e737 b.n 16e08 strcpy(buff, "Axe FX III"); - 16ed6: 4a0f ldr r2, [pc, #60] ; (16f14 ) - 16ed8: f50d 7884 add.w r8, sp, #264 ; 0x108 - 16edc: ca07 ldmia r2, {r0, r1, r2} - 16ede: 4643 mov r3, r8 - 16ee0: c303 stmia r3!, {r0, r1} - 16ee2: f823 2b02 strh.w r2, [r3], #2 - 16ee6: 0c12 lsrs r2, r2, #16 - 16ee8: 701a strb r2, [r3, #0] - } - 16eea: e569 b.n 169c0 + 16f98: 4a0c ldr r2, [pc, #48] ; (16fcc ) + 16f9a: f50d 7884 add.w r8, sp, #264 ; 0x108 + 16f9e: ca07 ldmia r2, {r0, r1, r2} + 16fa0: 4643 mov r3, r8 + 16fa2: c303 stmia r3!, {r0, r1} + 16fa4: f823 2b02 strh.w r2, [r3], #2 + 16fa8: 0c12 lsrs r2, r2, #16 + 16faa: 701a strb r2, [r3, #0] + } + 16fac: e568 b.n 16a80 + 16fae: bf00 nop + 16fb0: 2000bb08 .word 0x2000bb08 + 16fb4: 20001dbc .word 0x20001dbc + 16fb8: 200023ec .word 0x200023ec + 16fbc: 20004c68 .word 0x20004c68 + 16fc0: 20001dd8 .word 0x20001dd8 + 16fc4: 20001d90 .word 0x20001d90 + 16fc8: 20001e98 .word 0x20001e98 + 16fcc: 20001d74 .word 0x20001d74 strcpy(buff, "FM9"); - 16eec: 4b0a ldr r3, [pc, #40] ; (16f18 ) - 16eee: f50d 7884 add.w r8, sp, #264 ; 0x108 - 16ef2: 9342 str r3, [sp, #264] ; 0x108 + 16fd0: 4b8b ldr r3, [pc, #556] ; (17200 ) + 16fd2: f50d 7884 add.w r8, sp, #264 ; 0x108 + 16fd6: 9342 str r3, [sp, #264] ; 0x108 break; - 16ef4: e564 b.n 169c0 - 16ef6: bf00 nop - 16ef8: 2000bae8 .word 0x2000bae8 - 16efc: 20001dbc .word 0x20001dbc - 16f00: 200023ec .word 0x200023ec - 16f04: 20004ba8 .word 0x20004ba8 - 16f08: 20001dd8 .word 0x20001dd8 - 16f0c: 20001d90 .word 0x20001d90 - 16f10: 20001e98 .word 0x20001e98 - 16f14: 20001d74 .word 0x20001d74 - 16f18: 00394d46 .word 0x00394d46 + 16fd8: e552 b.n 16a80 void setSelectState(bool value){ bitWrite(states, 3, value);} - 16f1c: f1b9 0f00 cmp.w r9, #0 - 16f20: d077 beq.n 17012 - 16f22: eb05 0ccb add.w ip, r5, fp, lsl #3 + 16fda: eb05 03c0 add.w r3, r5, r0, lsl #3 + 16fde: f1b9 0f00 cmp.w r9, #0 + 16fe2: d070 beq.n 170c6 + 16fe4: f503 5240 add.w r2, r3, #12288 ; 0x3000 if(v==127){ - 16f26: f1b9 0f7f cmp.w r9, #127 ; 0x7f - 16f2a: f50c 5c40 add.w ip, ip, #12288 ; 0x3000 - 16f2e: f89c 330c ldrb.w r3, [ip, #780] ; 0x30c - 16f32: f043 0308 orr.w r3, r3, #8 - 16f36: f88c 330c strb.w r3, [ip, #780] ; 0x30c - 16f3a: d129 bne.n 16f90 + 16fe8: f1b9 0f7f cmp.w r9, #127 ; 0x7f + 16fec: f892 332c ldrb.w r3, [r2, #812] ; 0x32c + 16ff0: 923e str r2, [sp, #248] ; 0xf8 + 16ff2: f043 0308 orr.w r3, r3, #8 + 16ff6: f882 332c strb.w r3, [r2, #812] ; 0x32c + 16ffa: d12c bne.n 17056 selected = value; - 16f3c: f243 3311 movw r3, #13073 ; 0x3311 - 16f40: f243 3051 movw r0, #13137 ; 0x3351 - 16f44: f505 5e4c add.w lr, r5, #13056 ; 0x3300 + 16ffc: f243 3c20 movw ip, #13088 ; 0x3320 + 17000: f243 3331 movw r3, #13105 ; 0x3331 + 17004: f243 3e71 movw lr, #13169 ; 0x3371 meter = value; - 16f48: 2100 movs r1, #0 - 16f4a: 442b add r3, r5 - 16f4c: 4428 add r0, r5 + 17008: 2100 movs r1, #0 + 1700a: 44ac add ip, r5 + 1700c: 442b add r3, r5 + 1700e: 44ae add lr, r5 selected = value; - 16f4e: f887 b301 strb.w fp, [r7, #769] ; 0x301 + 17010: f887 0321 strb.w r0, [r7, #801] ; 0x321 if(value != meter){ - 16f52: 785a ldrb r2, [r3, #1] - 16f54: b122 cbz r2, 16f60 + 17014: 785a ldrb r2, [r3, #1] + 17016: b122 cbz r2, 17022 bitSet(flags, bit); - 16f56: 781a ldrb r2, [r3, #0] + 17018: 781a ldrb r2, [r3, #0] meter = value; - 16f58: 7059 strb r1, [r3, #1] - 16f5a: f042 0202 orr.w r2, r2, #2 - 16f5e: 701a strb r2, [r3, #0] + 1701a: 7059 strb r1, [r3, #1] + 1701c: f042 0202 orr.w r2, r2, #2 + 17020: 701a strb r2, [r3, #0] lastPeak = value; - 16f60: 7099 strb r1, [r3, #2] + 17022: 7099 strb r1, [r3, #2] for(uint8_t i = 0;i<8;i++){ - 16f62: 3308 adds r3, #8 - 16f64: 4283 cmp r3, r0 - 16f66: d1f4 bne.n 16f52 + 17024: 3308 adds r3, #8 + 17026: 4573 cmp r3, lr + 17028: d1f4 bne.n 17014 if(callback.dawChannelVPotUpdate){ - 16f68: f8d7 3278 ldr.w r3, [r7, #632] ; 0x278 - 16f6c: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 - 16f70: 461c mov r4, r3 - 16f72: b16b cbz r3, 16f90 + 1702a: f8d7 3298 ldr.w r3, [r7, #664] ; 0x298 + 1702e: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 + 17032: 461c mov r4, r3 + 17034: b17b cbz r3, 17056 return vPot & 0x0F; - 16f74: eb0e 0ecb add.w lr, lr, fp, lsl #3 + 17036: eb0c 0cc0 add.w ip, ip, r0, lsl #3 return bitRead(vPot, 6); - 16f78: f89c 2310 ldrb.w r2, [ip, #784] ; 0x310 + 1703a: 9a3e ldr r2, [sp, #248] ; 0xf8 callback.dawChannelVPotUpdate(ch, value, centered, mode); - 16f7c: 4658 mov r0, fp + 1703c: 903e str r0, [sp, #248] ; 0xf8 + 1703e: f892 2330 ldrb.w r2, [r2, #816] ; 0x330 return vPot & 0x0F; - 16f7e: f89e 1010 ldrb.w r1, [lr, #16] - 16f82: f3c2 1301 ubfx r3, r2, #4, #2 - 16f86: f3c2 1280 ubfx r2, r2, #6, #1 - 16f8a: f001 010f and.w r1, r1, #15 - 16f8e: 47a0 blx r4 + 17042: f89c 1010 ldrb.w r1, [ip, #16] + 17046: f3c2 1301 ubfx r3, r2, #4, #2 + 1704a: f3c2 1280 ubfx r2, r2, #6, #1 + 1704e: f001 010f and.w r1, r1, #15 + 17052: 47a0 blx r4 + 17054: 983e ldr r0, [sp, #248] ; 0xf8 if(callback.dawRecievedChannelSelect){ - 16f90: f8d7 3278 ldr.w r3, [r7, #632] ; 0x278 - 16f94: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac - 16f98: 2b00 cmp r3, #0 - 16f9a: f43f a85e beq.w 1605a - callback.dawRecievedChannelSelect((c-0x18), (v>0)); - 16f9e: f1b9 0100 subs.w r1, r9, #0 - 16fa2: 4658 mov r0, fp - 16fa4: f243 2b20 movw fp, #12832 ; 0x3220 - 16fa8: bf18 it ne - 16faa: 2101 movne r1, #1 - 16fac: 44ab add fp, r5 - 16fae: 4798 blx r3 - 16fb0: f7fe be99 b.w 15ce6 + 17056: f8d7 3298 ldr.w r3, [r7, #664] ; 0x298 + 1705a: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 1705e: 2b00 cmp r3, #0 + 17060: f47f aedd bne.w 16e1e + 17064: f7ff b858 b.w 16118 strcpy(buff, "FM3"); - 16fb4: f50d 7884 add.w r8, sp, #264 ; 0x108 - 16fb8: 4b64 ldr r3, [pc, #400] ; (1714c ) - 16fba: f8c8 3000 str.w r3, [r8] + 17068: f50d 7884 add.w r8, sp, #264 ; 0x108 + 1706c: 4b65 ldr r3, [pc, #404] ; (17204 ) + 1706e: f8c8 3000 str.w r3, [r8] break; - 16fbe: e4ff b.n 169c0 + 17072: e505 b.n 16a80 masterVolume = value; - 16fc0: f8a7 330a strh.w r3, [r7, #778] ; 0x30a + 17074: f8a7 332a strh.w r3, [r7, #810] ; 0x32a if(callback.dawRecievedMasterFaderPosition){ - 16fc4: f8d7 3278 ldr.w r3, [r7, #632] ; 0x278 - 16fc8: f8d3 30a8 ldr.w r3, [r3, #168] ; 0xa8 - 16fcc: 2b00 cmp r3, #0 - 16fce: f43f a844 beq.w 1605a + 17078: f8d7 3298 ldr.w r3, [r7, #664] ; 0x298 + 1707c: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac + 17080: 2b00 cmp r3, #0 + 17082: f43f a849 beq.w 16118 callback.dawRecievedMasterFaderPosition(value); - 16fd2: f243 2b20 movw fp, #12832 ; 0x3220 - 16fd6: 4608 mov r0, r1 - 16fd8: 4798 blx r3 - 16fda: 44ab add fp, r5 - 16fdc: f7fe be83 b.w 15ce6 + 17086: 4608 mov r0, r1 + 17088: 4798 blx r3 + 1708a: f505 5349 add.w r3, r5, #12864 ; 0x3240 + 1708e: 933e str r3, [sp, #248] ; 0xf8 + 17090: f7fe be8a b.w 15da8 void setMuteState(bool value){ bitWrite(states, 2, value);} - 16fe0: f002 02fb and.w r2, r2, #251 ; 0xfb - 16fe4: e738 b.n 16e58 - 16fe6: 2112 movs r1, #18 - 16fe8: 4859 ldr r0, [pc, #356] ; (17150 ) - 16fea: f015 faad bl 2c548 + 17094: f002 02fb and.w r2, r2, #251 ; 0xfb + 17098: e73f b.n 16f1a + 1709a: 2112 movs r1, #18 + 1709c: 485a ldr r0, [pc, #360] ; (17208 ) + 1709e: f015 fac7 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 16fee: 4859 ldr r0, [pc, #356] ; (17154 ) - 16ff0: f012 ff40 bl 29e74 + 170a2: 485a ldr r0, [pc, #360] ; (1720c ) + 170a4: f012 ff5c bl 29f60 bool overdubbing(){ return bitRead(data, BMC_FAS_LOOPER_STATE_OVERDUBBING); } - 16ff4: f897 3377 ldrb.w r3, [r7, #887] ; 0x377 - 16ff8: f7ff b96e b.w 162d8 - 16ffc: 2114 movs r1, #20 - 16ffe: 4856 ldr r0, [pc, #344] ; (17158 ) - 17000: f015 faa2 bl 2c548 - 17004: 4853 ldr r0, [pc, #332] ; (17154 ) - 17006: f012 ff35 bl 29e74 + 170a8: f897 3397 ldrb.w r3, [r7, #919] ; 0x397 + 170ac: f7ff b972 b.w 16394 + 170b0: 2114 movs r1, #20 + 170b2: 4857 ldr r0, [pc, #348] ; (17210 ) + 170b4: f015 fabc bl 2c630 + 170b8: 4854 ldr r0, [pc, #336] ; (1720c ) + 170ba: f012 ff51 bl 29f60 bool playing(){ return bitRead(data, BMC_FAS_LOOPER_STATE_PLAYING); } - 1700a: f897 3377 ldrb.w r3, [r7, #887] ; 0x377 - 1700e: f7ff b960 b.w 162d2 - 17012: eb05 03cb add.w r3, r5, fp, lsl #3 + 170be: f897 3397 ldrb.w r3, [r7, #919] ; 0x397 + 170c2: f7ff b964 b.w 1638e void setSelectState(bool value){ bitWrite(states, 3, value);} - 17016: f503 5340 add.w r3, r3, #12288 ; 0x3000 - 1701a: f893 230c ldrb.w r2, [r3, #780] ; 0x30c - 1701e: f022 0208 bic.w r2, r2, #8 - 17022: f883 230c strb.w r2, [r3, #780] ; 0x30c + 170c6: f503 5340 add.w r3, r3, #12288 ; 0x3000 + 170ca: f893 232c ldrb.w r2, [r3, #812] ; 0x32c + 170ce: f022 0208 bic.w r2, r2, #8 + 170d2: f883 232c strb.w r2, [r3, #812] ; 0x32c if(v==127){ - 17026: e7b3 b.n 16f90 + 170d6: e7be b.n 17056 return bitRead(flags, bit); - 17028: f81c 2003 ldrb.w r2, [ip, r3] + 170d8: f812 c003 ldrb.w ip, [r2, r3] if(flags.read(0)){ - 1702c: 07d4 lsls r4, r2, #31 - 1702e: d503 bpl.n 17038 + 170dc: f01c 0f01 tst.w ip, #1 + 170e0: d003 beq.n 170ea bitSet(flags, bit); - 17030: f042 0202 orr.w r2, r2, #2 - 17034: f80c 2003 strb.w r2, [ip, r3] + 170e2: f04c 0c02 orr.w ip, ip, #2 + 170e6: f802 c003 strb.w ip, [r2, r3] bitClear(flags, bit); - 17038: f022 0201 bic.w r2, r2, #1 - 1703c: f80c 2003 strb.w r2, [ip, r3] + 170ea: f02c 0c01 bic.w ip, ip, #1 + 170ee: f802 c003 strb.w ip, [r2, r3] return true; - 17040: e554 b.n 16aec + 170f2: e55b b.n 16bac return bitRead(flags, bit); - 17042: f81c 2003 ldrb.w r2, [ip, r3] + 170f4: f812 c003 ldrb.w ip, [r2, r3] if(!flags.read(0)){ - 17046: 07d4 lsls r4, r2, #31 - 17048: d403 bmi.n 17052 + 170f8: f01c 0f01 tst.w ip, #1 + 170fc: d103 bne.n 17106 bitSet(flags, bit); - 1704a: f042 0202 orr.w r2, r2, #2 - 1704e: f80c 2003 strb.w r2, [ip, r3] - 17052: f042 0201 orr.w r2, r2, #1 - 17056: f80c 2003 strb.w r2, [ip, r3] + 170fe: f04c 0c02 orr.w ip, ip, #2 + 17102: f802 c003 strb.w ip, [r2, r3] + 17106: f04c 0c01 orr.w ip, ip, #1 + 1710a: f802 c003 strb.w ip, [r2, r3] return true; - 1705a: e547 b.n 16aec + 1710e: e54d b.n 16bac void setAutomationRead(bool value){ bitWrite(states, 8, value); } - 1705c: f423 7380 bic.w r3, r3, #256 ; 0x100 - 17060: f7ff bac0 b.w 165e4 + 17110: f423 7380 bic.w r3, r3, #256 ; 0x100 + 17114: f7ff bac4 b.w 166a0 void setTransportScrub(bool value){ bitWrite(states, 29, value); } - 17064: f023 5300 bic.w r3, r3, #536870912 ; 0x20000000 - 17068: f7ff babc b.w 165e4 + 17118: f023 5300 bic.w r3, r3, #536870912 ; 0x20000000 + 1711c: f7ff bac0 b.w 166a0 void setTransportCursorZoom(bool value){ bitWrite(states, 28, value); } - 1706c: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 - 17070: f7ff bab8 b.w 165e4 + 17120: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 17124: f7ff babc b.w 166a0 void setTransportStop(bool value){ bitWrite(states, 25, value); } - 17074: f023 7300 bic.w r3, r3, #33554432 ; 0x2000000 - 17078: f7ff bab4 b.w 165e4 + 17128: f023 7300 bic.w r3, r3, #33554432 ; 0x2000000 + 1712c: f7ff bab8 b.w 166a0 void setTransportRecord(bool value){ bitWrite(states, 27, value); } - 1707c: f023 6300 bic.w r3, r3, #134217728 ; 0x8000000 - 17080: f7ff bab0 b.w 165e4 + 17130: f023 6300 bic.w r3, r3, #134217728 ; 0x8000000 + 17134: f7ff bab4 b.w 166a0 void setTransportPlay(bool value){ bitWrite(states, 26, value); } - 17084: f023 6380 bic.w r3, r3, #67108864 ; 0x4000000 - 17088: f7ff baac b.w 165e4 + 17138: f023 6380 bic.w r3, r3, #67108864 ; 0x4000000 + 1713c: f7ff bab0 b.w 166a0 void setTransportForward(bool value){ bitWrite(states, 24, value); } - 1708c: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000 - 17090: f7ff baa8 b.w 165e4 + 17140: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000 + 17144: f7ff baac b.w 166a0 void setAutomationTouch(bool value){ bitWrite(states, 11, value); } - 17094: f423 6300 bic.w r3, r3, #2048 ; 0x800 - 17098: f7ff baa4 b.w 165e4 + 17148: f423 6300 bic.w r3, r3, #2048 ; 0x800 + 1714c: f7ff baa8 b.w 166a0 void setUtilityUndo(bool value){ bitWrite(states, 15, value); } - 1709c: f423 4300 bic.w r3, r3, #32768 ; 0x8000 - 170a0: f7ff baa0 b.w 165e4 + 17150: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 17154: f7ff baa4 b.w 166a0 void setAutomationGroup(bool value){ bitWrite(states, 13, value); } - 170a4: f423 5300 bic.w r3, r3, #8192 ; 0x2000 - 170a8: f7ff ba9c b.w 165e4 + 17158: f423 5300 bic.w r3, r3, #8192 ; 0x2000 + 1715c: f7ff baa0 b.w 166a0 void setTransportRewind(bool value){ bitWrite(states, 23, value); } - 170ac: f423 0300 bic.w r3, r3, #8388608 ; 0x800000 - 170b0: f7ff ba98 b.w 165e4 + 17160: f423 0300 bic.w r3, r3, #8388608 ; 0x800000 + 17164: f7ff ba9c b.w 166a0 void setTransportClick(bool value){ bitWrite(states, 21, value); } - 170b4: f423 1300 bic.w r3, r3, #2097152 ; 0x200000 - 170b8: f7ff ba94 b.w 165e4 + 17168: f423 1300 bic.w r3, r3, #2097152 ; 0x200000 + 1716c: f7ff ba98 b.w 166a0 void setTransportDrop(bool value){ bitWrite(states, 19, value); } - 170bc: f423 2300 bic.w r3, r3, #524288 ; 0x80000 - 170c0: f7ff ba90 b.w 165e4 + 17170: f423 2300 bic.w r3, r3, #524288 ; 0x80000 + 17174: f7ff ba94 b.w 166a0 void setTransportNudge(bool value){ bitWrite(states, 17, value); } - 170c4: f423 3300 bic.w r3, r3, #131072 ; 0x20000 - 170c8: f7ff ba8c b.w 165e4 + 17178: f423 3300 bic.w r3, r3, #131072 ; 0x20000 + 1717c: f7ff ba90 b.w 166a0 void setFaderViewGlobal(bool value){ bitWrite(states, 7, value); } - 170cc: f023 0380 bic.w r3, r3, #128 ; 0x80 - 170d0: f7ff ba88 b.w 165e4 + 17180: f023 0380 bic.w r3, r3, #128 ; 0x80 + 17184: f7ff ba8c b.w 166a0 void setAutomationWrite(bool value){ bitWrite(states, 9, value); } - 170d4: f423 7300 bic.w r3, r3, #512 ; 0x200 - 170d8: f7ff ba84 b.w 165e4 + 17188: f423 7300 bic.w r3, r3, #512 ; 0x200 + 1718c: f7ff ba88 b.w 166a0 void setFaderViewFlip(bool value){ bitWrite(states, 6, value); } - 170dc: f023 0340 bic.w r3, r3, #64 ; 0x40 - 170e0: f7ff ba80 b.w 165e4 + 17190: f023 0340 bic.w r3, r3, #64 ; 0x40 + 17194: f7ff ba84 b.w 166a0 void setAutomationTrim(bool value){ bitWrite(states, 10, value); } - 170e4: f423 6380 bic.w r3, r3, #1024 ; 0x400 - 170e8: f7ff ba7c b.w 165e4 + 17198: f423 6380 bic.w r3, r3, #1024 ; 0x400 + 1719c: f7ff ba80 b.w 166a0 void setAssignInstr(bool value){ bitWrite(states, 5, value); } - 170ec: f023 0320 bic.w r3, r3, #32 - 170f0: f7ff ba78 b.w 165e4 + 171a0: f023 0320 bic.w r3, r3, #32 + 171a4: f7ff ba7c b.w 166a0 void setUtilitySave(bool value){ bitWrite(states, 14, value); } - 170f4: f423 4380 bic.w r3, r3, #16384 ; 0x4000 - 170f8: f7ff ba74 b.w 165e4 + 171a8: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 171ac: f7ff ba78 b.w 166a0 void setAssignEQ(bool value){ bitWrite(states, 4, value); } - 170fc: f023 0310 bic.w r3, r3, #16 - 17100: f7ff ba70 b.w 165e4 + 171b0: f023 0310 bic.w r3, r3, #16 + 171b4: f7ff ba74 b.w 166a0 void setAutomationLatch(bool value){ bitWrite(states, 12, value); } - 17104: f423 5380 bic.w r3, r3, #4096 ; 0x1000 - 17108: f7ff ba6c b.w 165e4 + 171b8: f423 5380 bic.w r3, r3, #4096 ; 0x1000 + 171bc: f7ff ba70 b.w 166a0 void setAssignPlugin(bool value){ bitWrite(states, 3, value); } - 1710c: f023 0308 bic.w r3, r3, #8 - 17110: f7ff ba68 b.w 165e4 + 171c0: f023 0308 bic.w r3, r3, #8 + 171c4: f7ff ba6c b.w 166a0 void setTransportSolo(bool value){ bitWrite(states, 22, value); } - 17114: f423 0380 bic.w r3, r3, #4194304 ; 0x400000 - 17118: f7ff ba64 b.w 165e4 + 171c8: f423 0380 bic.w r3, r3, #4194304 ; 0x400000 + 171cc: f7ff ba68 b.w 166a0 void setAssignPan(bool value){ bitWrite(states, 2, value); } - 1711c: f023 0304 bic.w r3, r3, #4 - 17120: f7ff ba60 b.w 165e4 + 171d0: f023 0304 bic.w r3, r3, #4 + 171d4: f7ff ba64 b.w 166a0 void setTransportReplace(bool value){ bitWrite(states, 20, value); } - 17124: f423 1380 bic.w r3, r3, #1048576 ; 0x100000 - 17128: f7ff ba5c b.w 165e4 + 171d8: f423 1380 bic.w r3, r3, #1048576 ; 0x100000 + 171dc: f7ff ba60 b.w 166a0 void setAssignSend(bool value){ bitWrite(states, 1, value); } - 1712c: f023 0302 bic.w r3, r3, #2 - 17130: f7ff ba58 b.w 165e4 + 171e0: f023 0302 bic.w r3, r3, #2 + 171e4: f7ff ba5c b.w 166a0 void setTransportCycle(bool value){ bitWrite(states, 18, value); } - 17134: f423 2380 bic.w r3, r3, #262144 ; 0x40000 - 17138: f7ff ba54 b.w 165e4 + 171e8: f423 2380 bic.w r3, r3, #262144 ; 0x40000 + 171ec: f7ff ba58 b.w 166a0 void setAssignTrack(bool value){ bitWrite(states, 0, value); } - 1713c: f023 0301 bic.w r3, r3, #1 - 17140: f7ff ba50 b.w 165e4 + 171f0: f023 0301 bic.w r3, r3, #1 + 171f4: f7ff ba54 b.w 166a0 void setTransportMarker(bool value){ bitWrite(states, 16, value); } - 17144: f423 3380 bic.w r3, r3, #65536 ; 0x10000 - 17148: f7ff ba4c b.w 165e4 - 1714c: 00334d46 .word 0x00334d46 - 17150: 20001e38 .word 0x20001e38 - 17154: 20004ba8 .word 0x20004ba8 - 17158: 20001e20 .word 0x20001e20 - -0001715c : + 171f8: f423 3380 bic.w r3, r3, #65536 ; 0x10000 + 171fc: f7ff ba50 b.w 166a0 + 17200: 00394d46 .word 0x00394d46 + 17204: 00334d46 .word 0x00334d46 + 17208: 20001e38 .word 0x20001e38 + 1720c: 20004c68 .word 0x20004c68 + 17210: 20001e20 .word 0x20001e20 + +00017214 : void BMC::midiProgramBankScroll(bool up, bool endless, uint8_t amount, uint8_t min, uint8_t max){ - 1715c: b570 push {r4, r5, r6, lr} - 1715e: f89d c010 ldrb.w ip, [sp, #16] - 17162: f89d e014 ldrb.w lr, [sp, #20] + 17214: b570 push {r4, r5, r6, lr} + 17216: f89d c010 ldrb.w ip, [sp, #16] + 1721a: f89d e014 ldrb.w lr, [sp, #20] amount = constrain(amount, 1, 64); - 17166: 2b00 cmp r3, #0 - 17168: d047 beq.n 171fa - 1716a: 2b40 cmp r3, #64 ; 0x40 - 1716c: bfa8 it ge - 1716e: 2340 movge r3, #64 ; 0x40 - 17170: b2de uxtb r6, r3 + 1721e: 2b00 cmp r3, #0 + 17220: d047 beq.n 172b2 + 17222: 2b40 cmp r3, #64 ; 0x40 + 17224: bfa8 it ge + 17226: 2340 movge r3, #64 ; 0x40 + 17228: b2de uxtb r6, r3 BMCScroller scroller(0, 127); programBank = scroller.scroll(amount, up, endless, programBank, min, max); - 17172: f500 5440 add.w r4, r0, #12288 ; 0x3000 + 1722a: f500 5440 add.w r4, r0, #12288 ; 0x3000 if((min < lowest) || (min >= max)){ - 17176: 45f4 cmp ip, lr - 17178: f894 5814 ldrb.w r5, [r4, #2068] ; 0x814 - 1717c: d20e bcs.n 1719c + 1722e: 45f4 cmp ip, lr + 17230: f894 5834 ldrb.w r5, [r4, #2100] ; 0x834 + 17234: d20e bcs.n 17254 if((max > highest) || (max <= min)){ - 1717e: f01e 0f80 tst.w lr, #128 ; 0x80 - 17182: d112 bne.n 171aa + 17236: f01e 0f80 tst.w lr, #128 ; 0x80 + 1723a: d112 bne.n 17262 if(direction==BMC_SCROLL_UP){ - 17184: b1a9 cbz r1, 171b2 + 1723c: b1a9 cbz r1, 1726a long newValue = (value+amount); - 17186: 442b add r3, r5 + 1723e: 442b add r3, r5 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - 17188: 2a00 cmp r2, #0 - 1718a: d03e beq.n 1720a + 17240: 2a00 cmp r2, #0 + 17242: d03e beq.n 172c2 return (newValue > max || newValue < min) ? min : newValue; - 1718c: 4573 cmp r3, lr - 1718e: dc17 bgt.n 171c0 + 17244: 4573 cmp r3, lr + 17246: dc17 bgt.n 17278 } else if(newValue + 17248: 4563 cmp r3, ip + 1724a: db15 blt.n 17278 return newValue; - 17194: 4435 add r5, r6 - 17196: fa5f fc85 uxtb.w ip, r5 - 1719a: e011 b.n 171c0 + 1724c: 4435 add r5, r6 + 1724e: fa5f fc85 uxtb.w ip, r5 + 17252: e011 b.n 17278 if((max > highest) || (max <= min)){ - 1719c: fa4f fc8e sxtb.w ip, lr - 171a0: f1bc 0f00 cmp.w ip, #0 + 17254: fa4f fc8e sxtb.w ip, lr + 17258: f1bc 0f00 cmp.w ip, #0 min = lowest; - 171a4: f04f 0c00 mov.w ip, #0 + 1725c: f04f 0c00 mov.w ip, #0 if((max > highest) || (max <= min)){ - 171a8: dcec bgt.n 17184 + 17260: dcec bgt.n 1723c max = highest; - 171aa: f04f 0e7f mov.w lr, #127 ; 0x7f + 17262: f04f 0e7f mov.w lr, #127 ; 0x7f if(direction==BMC_SCROLL_UP){ - 171ae: 2900 cmp r1, #0 - 171b0: d1e9 bne.n 17186 + 17266: 2900 cmp r1, #0 + 17268: d1e9 bne.n 1723e value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - 171b2: bb2a cbnz r2, 17200 + 1726a: bb2a cbnz r2, 172b8 long newValue = (value-amount); - 171b4: 1aed subs r5, r5, r3 + 1726c: 1aed subs r5, r5, r3 return (newValue < min) ? min : newValue; - 171b6: 4565 cmp r5, ip - 171b8: bfb8 it lt - 171ba: 4665 movlt r5, ip - 171bc: fa5f fc85 uxtb.w ip, r5 + 1726e: 4565 cmp r5, ip + 17270: bfb8 it lt + 17272: 4665 movlt r5, ip + 17274: fa5f fc85 uxtb.w ip, r5 if(callback.programBankChanged){ - 171c0: f500 5080 add.w r0, r0, #4096 ; 0x1000 + 17278: f500 5080 add.w r0, r0, #4096 ; 0x1000 programBank = scroller.scroll(amount, up, endless, programBank, min, max); - 171c4: f884 c814 strb.w ip, [r4, #2068] ; 0x814 + 1727c: f884 c834 strb.w ip, [r4, #2100] ; 0x834 if(callback.programBankChanged){ - 171c8: f8d0 38dc ldr.w r3, [r0, #2268] ; 0x8dc - 171cc: b10b cbz r3, 171d2 + 17280: f8d0 38dc ldr.w r3, [r0, #2268] ; 0x8dc + 17284: b10b cbz r3, 1728a callback.programBankChanged(programBank); - 171ce: 4660 mov r0, ip - 171d0: 4798 blx r3 - 171d2: 210b movs r1, #11 - 171d4: 4811 ldr r0, [pc, #68] ; (1721c ) - 171d6: f015 f9b7 bl 2c548 - 171da: 2101 movs r1, #1 - 171dc: 4810 ldr r0, [pc, #64] ; (17220 ) - 171de: f015 f9b3 bl 2c548 + 17286: 4660 mov r0, ip + 17288: 4798 blx r3 + 1728a: 210b movs r1, #11 + 1728c: 4811 ldr r0, [pc, #68] ; (172d4 ) + 1728e: f015 f9cf bl 2c630 + 17292: 2101 movs r1, #1 + 17294: 4810 ldr r0, [pc, #64] ; (172d8 ) + 17296: f015 f9cb bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 171e2: f894 1814 ldrb.w r1, [r4, #2068] ; 0x814 - 171e6: 2300 movs r3, #0 - 171e8: 220a movs r2, #10 - 171ea: 480e ldr r0, [pc, #56] ; (17224 ) - 171ec: f012 fe5e bl 29eac + 1729a: f894 1834 ldrb.w r1, [r4, #2100] ; 0x834 + 1729e: 2300 movs r3, #0 + 172a0: 220a movs r2, #10 + 172a2: 480e ldr r0, [pc, #56] ; (172dc ) + 172a4: f012 fe78 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 171f0: 480c ldr r0, [pc, #48] ; (17224 ) + 172a8: 480c ldr r0, [pc, #48] ; (172dc ) } BMC_PRINTLN("programBank", programBank); } - 171f2: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 171f6: f012 be3d b.w 29e74 - 171fa: 2601 movs r6, #1 + 172aa: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 172ae: f012 be57 b.w 29f60 + 172b2: 2601 movs r6, #1 amount = constrain(amount, 1, 64); - 171fc: 4633 mov r3, r6 - 171fe: e7b8 b.n 17172 + 172b4: 4633 mov r3, r6 + 172b6: e7b8 b.n 1722a long newValue = (value-amount); - 17200: 1aeb subs r3, r5, r3 + 172b8: 1aeb subs r3, r5, r3 return (newValue < min) ? max : newValue; - 17202: 4563 cmp r3, ip - 17204: da06 bge.n 17214 - 17206: 46f4 mov ip, lr - 17208: e7da b.n 171c0 + 172ba: 4563 cmp r3, ip + 172bc: da06 bge.n 172cc + 172be: 46f4 mov ip, lr + 172c0: e7da b.n 17278 if(newValue>max){ - 1720a: 4573 cmp r3, lr - 1720c: dcfb bgt.n 17206 + 172c2: 4573 cmp r3, lr + 172c4: dcfb bgt.n 172be } else if(newValue - 17212: e7d5 b.n 171c0 + 172c6: 4563 cmp r3, ip + 172c8: dac0 bge.n 1724c + 172ca: e7d5 b.n 17278 return (newValue < min) ? max : newValue; - 17214: 1bad subs r5, r5, r6 - 17216: fa5f fc85 uxtb.w ip, r5 - 1721a: e7d1 b.n 171c0 - 1721c: 20002660 .word 0x20002660 - 17220: 200023ec .word 0x200023ec - 17224: 20004ba8 .word 0x20004ba8 - -00017228 : + 172cc: 1bad subs r5, r5, r6 + 172ce: fa5f fc85 uxtb.w ip, r5 + 172d2: e7d1 b.n 17278 + 172d4: 20002660 .word 0x20002660 + 172d8: 200023ec .word 0x200023ec + 172dc: 20004c68 .word 0x20004c68 + +000172e0 : void BMC::midiProgramBankTrigger(uint8_t channel, uint8_t ports){ - 17228: b570 push {r4, r5, r6, lr} - 1722a: 460d mov r5, r1 + 172e0: b570 push {r4, r5, r6, lr} + 172e2: 460d mov r5, r1 uint8_t nextProgram = programBank; - 1722c: f500 5140 add.w r1, r0, #12288 ; 0x3000 + 172e4: f500 5140 add.w r1, r0, #12288 ; 0x3000 void BMC::midiProgramBankTrigger(uint8_t channel, uint8_t ports){ - 17230: b082 sub sp, #8 + 172e8: b082 sub sp, #8 uint8_t nextProgram = programBank; - 17232: f891 6814 ldrb.w r6, [r1, #2068] ; 0x814 + 172ea: f891 6834 ldrb.w r6, [r1, #2100] ; 0x834 if(nextProgram>127){ - 17236: f991 1814 ldrsb.w r1, [r1, #2068] ; 0x814 + 172ee: f991 1834 ldrsb.w r1, [r1, #2100] ; 0x834 nextProgram = 0; - 1723a: 2900 cmp r1, #0 + 172f2: 2900 cmp r1, #0 } if(channel==0 || channel>16 || ports==BMC_NONE){ - 1723c: f105 31ff add.w r1, r5, #4294967295 ; 0xffffffff + 172f4: f105 31ff add.w r1, r5, #4294967295 ; 0xffffffff nextProgram = 0; - 17240: bfb8 it lt - 17242: 2600 movlt r6, #0 + 172f8: bfb8 it lt + 172fa: 2600 movlt r6, #0 if(channel==0 || channel>16 || ports==BMC_NONE){ - 17244: 290f cmp r1, #15 - 17246: d804 bhi.n 17252 - 17248: 4604 mov r4, r0 - 1724a: fab2 f082 clz r0, r2 - 1724e: 0940 lsrs r0, r0, #5 - 17250: b90a cbnz r2, 17256 + 172fc: 290f cmp r1, #15 + 172fe: d804 bhi.n 1730a + 17300: 4604 mov r4, r0 + 17302: fab2 f082 clz r0, r2 + 17306: 0940 lsrs r0, r0, #5 + 17308: b90a cbnz r2, 1730e midi.sendProgramChange(ports, channel, nextProgram); streamMidi(BMC_MIDI_PROGRAM_CHANGE, channel, nextProgram); if(callback.programBankTrigger){ callback.programBankTrigger(nextProgram); } - 17252: b002 add sp, #8 - 17254: bd70 pop {r4, r5, r6, pc} + 1730a: b002 add sp, #8 + 1730c: bd70 pop {r4, r5, r6, pc} midi.sendProgramChange(ports, channel, nextProgram); - 17256: 4611 mov r1, r2 - 17258: 4633 mov r3, r6 - 1725a: 462a mov r2, r5 - 1725c: 9000 str r0, [sp, #0] - 1725e: f504 50ce add.w r0, r4, #6592 ; 0x19c0 - 17262: f00b ff41 bl 230e8 + 1730e: 4611 mov r1, r2 + 17310: 4633 mov r3, r6 + 17312: 462a mov r2, r5 + 17314: 9000 str r0, [sp, #0] + 17316: f504 50ce add.w r0, r4, #6592 ; 0x19c0 + 1731a: f00b ff4b bl 231b4 streamMidi(BMC_MIDI_PROGRAM_CHANGE, channel, nextProgram); - 17266: 21ff movs r1, #255 ; 0xff - 17268: 4620 mov r0, r4 + 1731e: 21ff movs r1, #255 ; 0xff + 17320: 4620 mov r0, r4 if(callback.programBankTrigger){ - 1726a: f504 5480 add.w r4, r4, #4096 ; 0x1000 + 17322: f504 5480 add.w r4, r4, #4096 ; 0x1000 streamMidi(BMC_MIDI_PROGRAM_CHANGE, channel, nextProgram); - 1726e: 4633 mov r3, r6 - 17270: 9100 str r1, [sp, #0] - 17272: 462a mov r2, r5 - 17274: 21c0 movs r1, #192 ; 0xc0 - 17276: f000 fe5f bl 17f38 + 17326: 4633 mov r3, r6 + 17328: 9100 str r1, [sp, #0] + 1732a: 462a mov r2, r5 + 1732c: 21c0 movs r1, #192 ; 0xc0 + 1732e: f000 fe75 bl 1801c if(callback.programBankTrigger){ - 1727a: f8d4 38e0 ldr.w r3, [r4, #2272] ; 0x8e0 - 1727e: 2b00 cmp r3, #0 - 17280: d0e7 beq.n 17252 + 17332: f8d4 38e0 ldr.w r3, [r4, #2272] ; 0x8e0 + 17336: 2b00 cmp r3, #0 + 17338: d0e7 beq.n 1730a callback.programBankTrigger(nextProgram); - 17282: 4630 mov r0, r6 - 17284: b002 add sp, #8 - 17286: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 1733a: 4630 mov r0, r6 + 1733c: b002 add sp, #8 + 1733e: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} callback.programBankTrigger(nextProgram); - 1728a: 4718 bx r3 + 17342: 4718 bx r3 -0001728c ::_read()>: +00017344 ::_read()>: // if(connected && ((unsigned long) millis()-tConn > 6000)){ // connected = false; // } return false; } bool _read(){ - 1728c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 17344: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} if(expecting == 2){ data1 = c; } else if(expecting == 1){ data2 = c; } expecting--; - 17290: f04f 0801 mov.w r8, #1 + 17348: f04f 0801 mov.w r8, #1 waitForSysExClose = false; - 17294: f04f 0900 mov.w r9, #0 + 1734c: f04f 0900 mov.w r9, #0 switch(c){ - 17298: f641 37a8 movw r7, #7080 ; 0x1ba8 + 17350: f641 37a8 movw r7, #7080 ; 0x1ba8 bool _read(){ - 1729c: 4604 mov r4, r0 + 17354: 4604 mov r4, r0 while(Port.available() > 0){ - 1729e: 6820 ldr r0, [r4, #0] - 172a0: 6803 ldr r3, [r0, #0] - 172a2: 691b ldr r3, [r3, #16] - 172a4: 4798 blx r3 - 172a6: 2800 cmp r0, #0 - 172a8: f340 80cf ble.w 1744a ::_read()+0x1be> + 17356: 6820 ldr r0, [r4, #0] + 17358: 6803 ldr r3, [r0, #0] + 1735a: 691b ldr r3, [r3, #16] + 1735c: 4798 blx r3 + 1735e: 2800 cmp r0, #0 + 17360: f340 80cf ble.w 17502 ::_read()+0x1be> uint8_t c = Port.read(); - 172ac: 6820 ldr r0, [r4, #0] - 172ae: 6803 ldr r3, [r0, #0] - 172b0: 695b ldr r3, [r3, #20] - 172b2: 4798 blx r3 + 17364: 6820 ldr r0, [r4, #0] + 17366: 6803 ldr r3, [r0, #0] + 17368: 695b ldr r3, [r3, #20] + 1736a: 4798 blx r3 if(thruOn){ - 172b4: f894 310f ldrb.w r3, [r4, #271] ; 0x10f + 1736c: f894 310f ldrb.w r3, [r4, #271] ; 0x10f uint8_t c = Port.read(); - 172b8: 4605 mov r5, r0 - 172ba: b2c6 uxtb r6, r0 + 17370: 4605 mov r5, r0 + 17372: b2c6 uxtb r6, r0 if(thruOn){ - 172bc: b123 cbz r3, 172c8 ::_read()+0x3c> + 17374: b123 cbz r3, 17380 ::_read()+0x3c> Port.write(c); - 172be: 6820 ldr r0, [r4, #0] - 172c0: 4631 mov r1, r6 - 172c2: 6803 ldr r3, [r0, #0] - 172c4: 681b ldr r3, [r3, #0] - 172c6: 4798 blx r3 + 17376: 6820 ldr r0, [r4, #0] + 17378: 4631 mov r1, r6 + 1737a: 6803 ldr r3, [r0, #0] + 1737c: 681b ldr r3, [r3, #0] + 1737e: 4798 blx r3 if(c > 0x7F){ - 172c8: 062a lsls r2, r5, #24 - 172ca: d413 bmi.n 172f4 ::_read()+0x68> + 17380: 062a lsls r2, r5, #24 + 17382: d413 bmi.n 173ac ::_read()+0x68> if(waitForSysExClose){ - 172cc: f894 310e ldrb.w r3, [r4, #270] ; 0x10e - 172d0: 2b00 cmp r3, #0 - 172d2: d1e4 bne.n 1729e ::_read()+0x12> + 17384: f894 310e ldrb.w r3, [r4, #270] ; 0x10e + 17388: 2b00 cmp r3, #0 + 1738a: d1e4 bne.n 17356 ::_read()+0x12> if(status == BMC_MIDI_SYSTEM_EXCLUSIVE){ - 172d4: 7962 ldrb r2, [r4, #5] - 172d6: 2af0 cmp r2, #240 ; 0xf0 - 172d8: f000 8094 beq.w 17404 ::_read()+0x178> + 1738c: 7962 ldrb r2, [r4, #5] + 1738e: 2af0 cmp r2, #240 ; 0xf0 + 17390: f000 8094 beq.w 174bc ::_read()+0x178> } else if(expecting>0){ - 172dc: 7920 ldrb r0, [r4, #4] - 172de: 2800 cmp r0, #0 - 172e0: d0dd beq.n 1729e ::_read()+0x12> + 17394: 7920 ldrb r0, [r4, #4] + 17396: 2800 cmp r0, #0 + 17398: d0dd beq.n 17356 ::_read()+0x12> if(expecting == 2){ - 172e2: 2802 cmp r0, #2 - 172e4: f000 80a9 beq.w 1743a ::_read()+0x1ae> + 1739a: 2802 cmp r0, #2 + 1739c: f000 80a9 beq.w 174f2 ::_read()+0x1ae> } else if(expecting == 1){ - 172e8: 2801 cmp r0, #1 - 172ea: f000 80aa beq.w 17442 ::_read()+0x1b6> + 173a0: 2801 cmp r0, #1 + 173a2: f000 80aa beq.w 174fa ::_read()+0x1b6> expecting--; - 172ee: 3801 subs r0, #1 - 172f0: 7120 strb r0, [r4, #4] - 172f2: e7d4 b.n 1729e ::_read()+0x12> + 173a6: 3801 subs r0, #1 + 173a8: 7120 strb r0, [r4, #4] + 173aa: e7d4 b.n 17356 ::_read()+0x12> switch(c){ - 172f4: 2ef2 cmp r6, #242 ; 0xf2 - 172f6: dc13 bgt.n 17320 ::_read()+0x94> - 172f8: 2ecf cmp r6, #207 ; 0xcf - 172fa: dc2f bgt.n 1735c ::_read()+0xd0> - 172fc: 2ea0 cmp r6, #160 ; 0xa0 - 172fe: d022 beq.n 17346 ::_read()+0xba> - 17300: dd1d ble.n 1733e ::_read()+0xb2> - 17302: 2eb0 cmp r6, #176 ; 0xb0 - 17304: d01f beq.n 17346 ::_read()+0xba> - 17306: 2ec0 cmp r6, #192 ; 0xc0 - 17308: d1c9 bne.n 1729e ::_read()+0x12> + 173ac: 2ef2 cmp r6, #242 ; 0xf2 + 173ae: dc13 bgt.n 173d8 ::_read()+0x94> + 173b0: 2ecf cmp r6, #207 ; 0xcf + 173b2: dc2f bgt.n 17414 ::_read()+0xd0> + 173b4: 2ea0 cmp r6, #160 ; 0xa0 + 173b6: d022 beq.n 173fe ::_read()+0xba> + 173b8: dd1d ble.n 173f6 ::_read()+0xb2> + 173ba: 2eb0 cmp r6, #176 ; 0xb0 + 173bc: d01f beq.n 173fe ::_read()+0xba> + 173be: 2ec0 cmp r6, #192 ; 0xc0 + 173c0: d1c9 bne.n 17356 ::_read()+0x12> status = c&0xF0; - 1730a: f026 030f bic.w r3, r6, #15 + 173c2: f026 030f bic.w r3, r6, #15 channel = c&0x0F; - 1730e: f006 060f and.w r6, r6, #15 + 173c6: f006 060f and.w r6, r6, #15 expecting = 1; - 17312: f884 8004 strb.w r8, [r4, #4] + 173ca: f884 8004 strb.w r8, [r4, #4] waitForSysExClose = false; - 17316: f884 910e strb.w r9, [r4, #270] ; 0x10e + 173ce: f884 910e strb.w r9, [r4, #270] ; 0x10e status = c&0xF0; - 1731a: 7163 strb r3, [r4, #5] + 173d2: 7163 strb r3, [r4, #5] channel = c&0x0F; - 1731c: 71a6 strb r6, [r4, #6] + 173d4: 71a6 strb r6, [r4, #6] break; - 1731e: e7be b.n 1729e ::_read()+0x12> + 173d6: e7be b.n 17356 ::_read()+0x12> switch(c){ - 17320: f1a6 03f3 sub.w r3, r6, #243 ; 0xf3 - 17324: fa08 f303 lsl.w r3, r8, r3 - 17328: ea13 0207 ands.w r2, r3, r7 - 1732c: d064 beq.n 173f8 ::_read()+0x16c> + 173d8: f1a6 03f3 sub.w r3, r6, #243 ; 0xf3 + 173dc: fa08 f303 lsl.w r3, r8, r3 + 173e0: ea13 0207 ands.w r2, r3, r7 + 173e4: d064 beq.n 174b0 ::_read()+0x16c> expecting = 0; - 1732e: 2300 movs r3, #0 + 173e6: 2300 movs r3, #0 return true; - 17330: 2001 movs r0, #1 + 173e8: 2001 movs r0, #1 status = c; - 17332: 7166 strb r6, [r4, #5] + 173ea: 7166 strb r6, [r4, #5] expecting = 0; - 17334: 7123 strb r3, [r4, #4] + 173ec: 7123 strb r3, [r4, #4] waitForSysExClose = false; - 17336: f884 310e strb.w r3, [r4, #270] ; 0x10e + 173ee: f884 310e strb.w r3, [r4, #270] ; 0x10e } } } } return false; } - 1733a: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 173f2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} switch(c){ - 1733e: f005 05ef and.w r5, r5, #239 ; 0xef - 17342: 2d80 cmp r5, #128 ; 0x80 - 17344: d1ab bne.n 1729e ::_read()+0x12> + 173f6: f005 05ef and.w r5, r5, #239 ; 0xef + 173fa: 2d80 cmp r5, #128 ; 0x80 + 173fc: d1ab bne.n 17356 ::_read()+0x12> status = c&0xF0; - 17346: f026 030f bic.w r3, r6, #15 + 173fe: f026 030f bic.w r3, r6, #15 channel = c&0x0F; - 1734a: f006 060f and.w r6, r6, #15 + 17402: f006 060f and.w r6, r6, #15 waitForSysExClose = false; - 1734e: f884 910e strb.w r9, [r4, #270] ; 0x10e + 17406: f884 910e strb.w r9, [r4, #270] ; 0x10e status = c&0xF0; - 17352: 7163 strb r3, [r4, #5] + 1740a: 7163 strb r3, [r4, #5] expecting = 2; - 17354: 2302 movs r3, #2 + 1740c: 2302 movs r3, #2 channel = c&0x0F; - 17356: 71a6 strb r6, [r4, #6] + 1740e: 71a6 strb r6, [r4, #6] expecting = 2; - 17358: 7123 strb r3, [r4, #4] + 17410: 7123 strb r3, [r4, #4] break; - 1735a: e7a0 b.n 1729e ::_read()+0x12> + 17412: e7a0 b.n 17356 ::_read()+0x12> switch(c){ - 1735c: f1a6 03d0 sub.w r3, r6, #208 ; 0xd0 - 17360: 2b22 cmp r3, #34 ; 0x22 - 17362: d89c bhi.n 1729e ::_read()+0x12> - 17364: a201 add r2, pc, #4 ; (adr r2, 1736c ::_read()+0xe0>) - 17366: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 1736a: bf00 nop - 1736c: 0001730b .word 0x0001730b - 17370: 0001729f .word 0x0001729f - 17374: 0001729f .word 0x0001729f - 17378: 0001729f .word 0x0001729f - 1737c: 0001729f .word 0x0001729f - 17380: 0001729f .word 0x0001729f - 17384: 0001729f .word 0x0001729f - 17388: 0001729f .word 0x0001729f - 1738c: 0001729f .word 0x0001729f - 17390: 0001729f .word 0x0001729f - 17394: 0001729f .word 0x0001729f - 17398: 0001729f .word 0x0001729f - 1739c: 0001729f .word 0x0001729f - 173a0: 0001729f .word 0x0001729f - 173a4: 0001729f .word 0x0001729f - 173a8: 0001729f .word 0x0001729f - 173ac: 00017347 .word 0x00017347 - 173b0: 0001729f .word 0x0001729f - 173b4: 0001729f .word 0x0001729f - 173b8: 0001729f .word 0x0001729f - 173bc: 0001729f .word 0x0001729f - 173c0: 0001729f .word 0x0001729f - 173c4: 0001729f .word 0x0001729f - 173c8: 0001729f .word 0x0001729f - 173cc: 0001729f .word 0x0001729f - 173d0: 0001729f .word 0x0001729f - 173d4: 0001729f .word 0x0001729f - 173d8: 0001729f .word 0x0001729f - 173dc: 0001729f .word 0x0001729f - 173e0: 0001729f .word 0x0001729f - 173e4: 0001729f .word 0x0001729f - 173e8: 0001729f .word 0x0001729f - 173ec: 00017423 .word 0x00017423 - 173f0: 0001730b .word 0x0001730b - 173f4: 00017347 .word 0x00017347 - 173f8: 2ef7 cmp r6, #247 ; 0xf7 - 173fa: d018 beq.n 1742e ::_read()+0x1a2> - 173fc: 07db lsls r3, r3, #31 - 173fe: f57f af4e bpl.w 1729e ::_read()+0x12> - 17402: e782 b.n 1730a ::_read()+0x7e> + 17414: f1a6 03d0 sub.w r3, r6, #208 ; 0xd0 + 17418: 2b22 cmp r3, #34 ; 0x22 + 1741a: d89c bhi.n 17356 ::_read()+0x12> + 1741c: a201 add r2, pc, #4 ; (adr r2, 17424 ::_read()+0xe0>) + 1741e: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 17422: bf00 nop + 17424: 000173c3 .word 0x000173c3 + 17428: 00017357 .word 0x00017357 + 1742c: 00017357 .word 0x00017357 + 17430: 00017357 .word 0x00017357 + 17434: 00017357 .word 0x00017357 + 17438: 00017357 .word 0x00017357 + 1743c: 00017357 .word 0x00017357 + 17440: 00017357 .word 0x00017357 + 17444: 00017357 .word 0x00017357 + 17448: 00017357 .word 0x00017357 + 1744c: 00017357 .word 0x00017357 + 17450: 00017357 .word 0x00017357 + 17454: 00017357 .word 0x00017357 + 17458: 00017357 .word 0x00017357 + 1745c: 00017357 .word 0x00017357 + 17460: 00017357 .word 0x00017357 + 17464: 000173ff .word 0x000173ff + 17468: 00017357 .word 0x00017357 + 1746c: 00017357 .word 0x00017357 + 17470: 00017357 .word 0x00017357 + 17474: 00017357 .word 0x00017357 + 17478: 00017357 .word 0x00017357 + 1747c: 00017357 .word 0x00017357 + 17480: 00017357 .word 0x00017357 + 17484: 00017357 .word 0x00017357 + 17488: 00017357 .word 0x00017357 + 1748c: 00017357 .word 0x00017357 + 17490: 00017357 .word 0x00017357 + 17494: 00017357 .word 0x00017357 + 17498: 00017357 .word 0x00017357 + 1749c: 00017357 .word 0x00017357 + 174a0: 00017357 .word 0x00017357 + 174a4: 000174db .word 0x000174db + 174a8: 000173c3 .word 0x000173c3 + 174ac: 000173ff .word 0x000173ff + 174b0: 2ef7 cmp r6, #247 ; 0xf7 + 174b2: d018 beq.n 174e6 ::_read()+0x1a2> + 174b4: 07db lsls r3, r3, #31 + 174b6: f57f af4e bpl.w 17356 ::_read()+0x12> + 174ba: e782 b.n 173c2 ::_read()+0x7e> if(sysexLen < BMC_MIDI_SYSEX_SIZE){ - 17404: f8b4 2108 ldrh.w r2, [r4, #264] ; 0x108 - 17408: 2afd cmp r2, #253 ; 0xfd - 1740a: d805 bhi.n 17418 ::_read()+0x18c> + 174bc: f8b4 2108 ldrh.w r2, [r4, #264] ; 0x108 + 174c0: 2afd cmp r2, #253 ; 0xfd + 174c2: d805 bhi.n 174d0 ::_read()+0x18c> sysex[sysexLen++] = c; - 1740c: 1c53 adds r3, r2, #1 - 1740e: 4422 add r2, r4 - 17410: f8a4 3108 strh.w r3, [r4, #264] ; 0x108 - 17414: 7256 strb r6, [r2, #9] - 17416: e742 b.n 1729e ::_read()+0x12> + 174c4: 1c53 adds r3, r2, #1 + 174c6: 4422 add r2, r4 + 174c8: f8a4 3108 strh.w r3, [r4, #264] ; 0x108 + 174cc: 7256 strb r6, [r2, #9] + 174ce: e742 b.n 17356 ::_read()+0x12> sysexLen = 0; - 17418: f8a4 3108 strh.w r3, [r4, #264] ; 0x108 + 174d0: f8a4 3108 strh.w r3, [r4, #264] ; 0x108 waitForSysExClose = true; - 1741c: f884 810e strb.w r8, [r4, #270] ; 0x10e - 17420: e73d b.n 1729e ::_read()+0x12> + 174d4: f884 810e strb.w r8, [r4, #270] ; 0x10e + 174d8: e73d b.n 17356 ::_read()+0x12> sysex[sysexLen++] = 0xF0; - 17422: 23f0 movs r3, #240 ; 0xf0 + 174da: 23f0 movs r3, #240 ; 0xf0 status = c; - 17424: 7166 strb r6, [r4, #5] + 174dc: 7166 strb r6, [r4, #5] sysex[sysexLen++] = 0xF0; - 17426: f8a4 8108 strh.w r8, [r4, #264] ; 0x108 - 1742a: 7263 strb r3, [r4, #9] + 174de: f8a4 8108 strh.w r8, [r4, #264] ; 0x108 + 174e2: 7263 strb r3, [r4, #9] break; - 1742c: e737 b.n 1729e ::_read()+0x12> + 174e4: e737 b.n 17356 ::_read()+0x12> if(status == BMC_MIDI_SYSTEM_EXCLUSIVE){ - 1742e: 7963 ldrb r3, [r4, #5] - 17430: 2bf0 cmp r3, #240 ; 0xf0 - 17432: d00d beq.n 17450 ::_read()+0x1c4> + 174e6: 7963 ldrb r3, [r4, #5] + 174e8: 2bf0 cmp r3, #240 ; 0xf0 + 174ea: d00d beq.n 17508 ::_read()+0x1c4> return true; - 17434: 2001 movs r0, #1 + 174ec: 2001 movs r0, #1 } - 17436: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 174ee: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} data1 = c; - 1743a: 71e6 strb r6, [r4, #7] + 174f2: 71e6 strb r6, [r4, #7] expecting--; - 1743c: f884 8004 strb.w r8, [r4, #4] - 17440: e72d b.n 1729e ::_read()+0x12> + 174f4: f884 8004 strb.w r8, [r4, #4] + 174f8: e72d b.n 17356 ::_read()+0x12> data2 = c; - 17442: 7226 strb r6, [r4, #8] + 174fa: 7226 strb r6, [r4, #8] expecting--; - 17444: 7123 strb r3, [r4, #4] + 174fc: 7123 strb r3, [r4, #4] } - 17446: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 174fe: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} return false; - 1744a: 2000 movs r0, #0 + 17502: 2000 movs r0, #0 } - 1744c: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 17504: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if(waitForSysExClose){ - 17450: f894 010e ldrb.w r0, [r4, #270] ; 0x10e - 17454: b110 cbz r0, 1745c ::_read()+0x1d0> + 17508: f894 010e ldrb.w r0, [r4, #270] ; 0x10e + 1750c: b110 cbz r0, 17514 ::_read()+0x1d0> waitForSysExClose = false; - 17456: f884 210e strb.w r2, [r4, #270] ; 0x10e - 1745a: e76e b.n 1733a ::_read()+0xae> + 1750e: f884 210e strb.w r2, [r4, #270] ; 0x10e + 17512: e76e b.n 173f2 ::_read()+0xae> sysex[sysexLen++] = 0xF7; - 1745c: f8b4 3108 ldrh.w r3, [r4, #264] ; 0x108 + 17514: f8b4 3108 ldrh.w r3, [r4, #264] ; 0x108 return true; - 17460: 2001 movs r0, #1 + 17518: 2001 movs r0, #1 sysex[sysexLen++] = 0xF7; - 17462: 181a adds r2, r3, r0 - 17464: 4423 add r3, r4 - 17466: f8a4 2108 strh.w r2, [r4, #264] ; 0x108 - 1746a: 725e strb r6, [r3, #9] - 1746c: e765 b.n 1733a ::_read()+0xae> - 1746e: bf00 nop - -00017470 ::_read()>: + 1751a: 181a adds r2, r3, r0 + 1751c: 4423 add r3, r4 + 1751e: f8a4 2108 strh.w r2, [r4, #264] ; 0x108 + 17522: 725e strb r6, [r3, #9] + 17524: e765 b.n 173f2 ::_read()+0xae> + 17526: bf00 nop + +00017528 ::_read()>: bool _read(){ - 17470: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 17528: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} expecting--; - 17474: f04f 0801 mov.w r8, #1 + 1752c: f04f 0801 mov.w r8, #1 waitForSysExClose = false; - 17478: f04f 0900 mov.w r9, #0 + 17530: f04f 0900 mov.w r9, #0 switch(c){ - 1747c: f641 37a8 movw r7, #7080 ; 0x1ba8 + 17534: f641 37a8 movw r7, #7080 ; 0x1ba8 bool _read(){ - 17480: 4604 mov r4, r0 + 17538: 4604 mov r4, r0 while(Port.available() > 0){ - 17482: 6820 ldr r0, [r4, #0] - 17484: 6803 ldr r3, [r0, #0] - 17486: 691b ldr r3, [r3, #16] - 17488: 4798 blx r3 - 1748a: 2800 cmp r0, #0 - 1748c: f340 80cf ble.w 1762e ::_read()+0x1be> + 1753a: 6820 ldr r0, [r4, #0] + 1753c: 6803 ldr r3, [r0, #0] + 1753e: 691b ldr r3, [r3, #16] + 17540: 4798 blx r3 + 17542: 2800 cmp r0, #0 + 17544: f340 80cf ble.w 176e6 ::_read()+0x1be> uint8_t c = Port.read(); - 17490: 6820 ldr r0, [r4, #0] - 17492: 6803 ldr r3, [r0, #0] - 17494: 695b ldr r3, [r3, #20] - 17496: 4798 blx r3 + 17548: 6820 ldr r0, [r4, #0] + 1754a: 6803 ldr r3, [r0, #0] + 1754c: 695b ldr r3, [r3, #20] + 1754e: 4798 blx r3 if(thruOn){ - 17498: f894 310f ldrb.w r3, [r4, #271] ; 0x10f + 17550: f894 310f ldrb.w r3, [r4, #271] ; 0x10f uint8_t c = Port.read(); - 1749c: 4605 mov r5, r0 - 1749e: b2c6 uxtb r6, r0 + 17554: 4605 mov r5, r0 + 17556: b2c6 uxtb r6, r0 if(thruOn){ - 174a0: b123 cbz r3, 174ac ::_read()+0x3c> + 17558: b123 cbz r3, 17564 ::_read()+0x3c> Port.write(c); - 174a2: 6820 ldr r0, [r4, #0] - 174a4: 4631 mov r1, r6 - 174a6: 6803 ldr r3, [r0, #0] - 174a8: 681b ldr r3, [r3, #0] - 174aa: 4798 blx r3 + 1755a: 6820 ldr r0, [r4, #0] + 1755c: 4631 mov r1, r6 + 1755e: 6803 ldr r3, [r0, #0] + 17560: 681b ldr r3, [r3, #0] + 17562: 4798 blx r3 if(c > 0x7F){ - 174ac: 062a lsls r2, r5, #24 - 174ae: d413 bmi.n 174d8 ::_read()+0x68> + 17564: 062a lsls r2, r5, #24 + 17566: d413 bmi.n 17590 ::_read()+0x68> if(waitForSysExClose){ - 174b0: f894 310e ldrb.w r3, [r4, #270] ; 0x10e - 174b4: 2b00 cmp r3, #0 - 174b6: d1e4 bne.n 17482 ::_read()+0x12> + 17568: f894 310e ldrb.w r3, [r4, #270] ; 0x10e + 1756c: 2b00 cmp r3, #0 + 1756e: d1e4 bne.n 1753a ::_read()+0x12> if(status == BMC_MIDI_SYSTEM_EXCLUSIVE){ - 174b8: 7962 ldrb r2, [r4, #5] - 174ba: 2af0 cmp r2, #240 ; 0xf0 - 174bc: f000 8094 beq.w 175e8 ::_read()+0x178> + 17570: 7962 ldrb r2, [r4, #5] + 17572: 2af0 cmp r2, #240 ; 0xf0 + 17574: f000 8094 beq.w 176a0 ::_read()+0x178> } else if(expecting>0){ - 174c0: 7920 ldrb r0, [r4, #4] - 174c2: 2800 cmp r0, #0 - 174c4: d0dd beq.n 17482 ::_read()+0x12> + 17578: 7920 ldrb r0, [r4, #4] + 1757a: 2800 cmp r0, #0 + 1757c: d0dd beq.n 1753a ::_read()+0x12> if(expecting == 2){ - 174c6: 2802 cmp r0, #2 - 174c8: f000 80a9 beq.w 1761e ::_read()+0x1ae> + 1757e: 2802 cmp r0, #2 + 17580: f000 80a9 beq.w 176d6 ::_read()+0x1ae> } else if(expecting == 1){ - 174cc: 2801 cmp r0, #1 - 174ce: f000 80aa beq.w 17626 ::_read()+0x1b6> + 17584: 2801 cmp r0, #1 + 17586: f000 80aa beq.w 176de ::_read()+0x1b6> expecting--; - 174d2: 3801 subs r0, #1 - 174d4: 7120 strb r0, [r4, #4] - 174d6: e7d4 b.n 17482 ::_read()+0x12> + 1758a: 3801 subs r0, #1 + 1758c: 7120 strb r0, [r4, #4] + 1758e: e7d4 b.n 1753a ::_read()+0x12> switch(c){ - 174d8: 2ef2 cmp r6, #242 ; 0xf2 - 174da: dc13 bgt.n 17504 ::_read()+0x94> - 174dc: 2ecf cmp r6, #207 ; 0xcf - 174de: dc2f bgt.n 17540 ::_read()+0xd0> - 174e0: 2ea0 cmp r6, #160 ; 0xa0 - 174e2: d022 beq.n 1752a ::_read()+0xba> - 174e4: dd1d ble.n 17522 ::_read()+0xb2> - 174e6: 2eb0 cmp r6, #176 ; 0xb0 - 174e8: d01f beq.n 1752a ::_read()+0xba> - 174ea: 2ec0 cmp r6, #192 ; 0xc0 - 174ec: d1c9 bne.n 17482 ::_read()+0x12> + 17590: 2ef2 cmp r6, #242 ; 0xf2 + 17592: dc13 bgt.n 175bc ::_read()+0x94> + 17594: 2ecf cmp r6, #207 ; 0xcf + 17596: dc2f bgt.n 175f8 ::_read()+0xd0> + 17598: 2ea0 cmp r6, #160 ; 0xa0 + 1759a: d022 beq.n 175e2 ::_read()+0xba> + 1759c: dd1d ble.n 175da ::_read()+0xb2> + 1759e: 2eb0 cmp r6, #176 ; 0xb0 + 175a0: d01f beq.n 175e2 ::_read()+0xba> + 175a2: 2ec0 cmp r6, #192 ; 0xc0 + 175a4: d1c9 bne.n 1753a ::_read()+0x12> status = c&0xF0; - 174ee: f026 030f bic.w r3, r6, #15 + 175a6: f026 030f bic.w r3, r6, #15 channel = c&0x0F; - 174f2: f006 060f and.w r6, r6, #15 + 175aa: f006 060f and.w r6, r6, #15 expecting = 1; - 174f6: f884 8004 strb.w r8, [r4, #4] + 175ae: f884 8004 strb.w r8, [r4, #4] waitForSysExClose = false; - 174fa: f884 910e strb.w r9, [r4, #270] ; 0x10e + 175b2: f884 910e strb.w r9, [r4, #270] ; 0x10e status = c&0xF0; - 174fe: 7163 strb r3, [r4, #5] + 175b6: 7163 strb r3, [r4, #5] channel = c&0x0F; - 17500: 71a6 strb r6, [r4, #6] + 175b8: 71a6 strb r6, [r4, #6] break; - 17502: e7be b.n 17482 ::_read()+0x12> + 175ba: e7be b.n 1753a ::_read()+0x12> switch(c){ - 17504: f1a6 03f3 sub.w r3, r6, #243 ; 0xf3 - 17508: fa08 f303 lsl.w r3, r8, r3 - 1750c: ea13 0207 ands.w r2, r3, r7 - 17510: d064 beq.n 175dc ::_read()+0x16c> + 175bc: f1a6 03f3 sub.w r3, r6, #243 ; 0xf3 + 175c0: fa08 f303 lsl.w r3, r8, r3 + 175c4: ea13 0207 ands.w r2, r3, r7 + 175c8: d064 beq.n 17694 ::_read()+0x16c> expecting = 0; - 17512: 2300 movs r3, #0 + 175ca: 2300 movs r3, #0 return true; - 17514: 2001 movs r0, #1 + 175cc: 2001 movs r0, #1 status = c; - 17516: 7166 strb r6, [r4, #5] + 175ce: 7166 strb r6, [r4, #5] expecting = 0; - 17518: 7123 strb r3, [r4, #4] + 175d0: 7123 strb r3, [r4, #4] waitForSysExClose = false; - 1751a: f884 310e strb.w r3, [r4, #270] ; 0x10e + 175d2: f884 310e strb.w r3, [r4, #270] ; 0x10e } - 1751e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 175d6: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} switch(c){ - 17522: f005 05ef and.w r5, r5, #239 ; 0xef - 17526: 2d80 cmp r5, #128 ; 0x80 - 17528: d1ab bne.n 17482 ::_read()+0x12> + 175da: f005 05ef and.w r5, r5, #239 ; 0xef + 175de: 2d80 cmp r5, #128 ; 0x80 + 175e0: d1ab bne.n 1753a ::_read()+0x12> status = c&0xF0; - 1752a: f026 030f bic.w r3, r6, #15 + 175e2: f026 030f bic.w r3, r6, #15 channel = c&0x0F; - 1752e: f006 060f and.w r6, r6, #15 + 175e6: f006 060f and.w r6, r6, #15 waitForSysExClose = false; - 17532: f884 910e strb.w r9, [r4, #270] ; 0x10e + 175ea: f884 910e strb.w r9, [r4, #270] ; 0x10e status = c&0xF0; - 17536: 7163 strb r3, [r4, #5] + 175ee: 7163 strb r3, [r4, #5] expecting = 2; - 17538: 2302 movs r3, #2 + 175f0: 2302 movs r3, #2 channel = c&0x0F; - 1753a: 71a6 strb r6, [r4, #6] + 175f2: 71a6 strb r6, [r4, #6] expecting = 2; - 1753c: 7123 strb r3, [r4, #4] + 175f4: 7123 strb r3, [r4, #4] break; - 1753e: e7a0 b.n 17482 ::_read()+0x12> + 175f6: e7a0 b.n 1753a ::_read()+0x12> switch(c){ - 17540: f1a6 03d0 sub.w r3, r6, #208 ; 0xd0 - 17544: 2b22 cmp r3, #34 ; 0x22 - 17546: d89c bhi.n 17482 ::_read()+0x12> - 17548: a201 add r2, pc, #4 ; (adr r2, 17550 ::_read()+0xe0>) - 1754a: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 1754e: bf00 nop - 17550: 000174ef .word 0x000174ef - 17554: 00017483 .word 0x00017483 - 17558: 00017483 .word 0x00017483 - 1755c: 00017483 .word 0x00017483 - 17560: 00017483 .word 0x00017483 - 17564: 00017483 .word 0x00017483 - 17568: 00017483 .word 0x00017483 - 1756c: 00017483 .word 0x00017483 - 17570: 00017483 .word 0x00017483 - 17574: 00017483 .word 0x00017483 - 17578: 00017483 .word 0x00017483 - 1757c: 00017483 .word 0x00017483 - 17580: 00017483 .word 0x00017483 - 17584: 00017483 .word 0x00017483 - 17588: 00017483 .word 0x00017483 - 1758c: 00017483 .word 0x00017483 - 17590: 0001752b .word 0x0001752b - 17594: 00017483 .word 0x00017483 - 17598: 00017483 .word 0x00017483 - 1759c: 00017483 .word 0x00017483 - 175a0: 00017483 .word 0x00017483 - 175a4: 00017483 .word 0x00017483 - 175a8: 00017483 .word 0x00017483 - 175ac: 00017483 .word 0x00017483 - 175b0: 00017483 .word 0x00017483 - 175b4: 00017483 .word 0x00017483 - 175b8: 00017483 .word 0x00017483 - 175bc: 00017483 .word 0x00017483 - 175c0: 00017483 .word 0x00017483 - 175c4: 00017483 .word 0x00017483 - 175c8: 00017483 .word 0x00017483 - 175cc: 00017483 .word 0x00017483 - 175d0: 00017607 .word 0x00017607 - 175d4: 000174ef .word 0x000174ef - 175d8: 0001752b .word 0x0001752b - 175dc: 2ef7 cmp r6, #247 ; 0xf7 - 175de: d018 beq.n 17612 ::_read()+0x1a2> - 175e0: 07db lsls r3, r3, #31 - 175e2: f57f af4e bpl.w 17482 ::_read()+0x12> - 175e6: e782 b.n 174ee ::_read()+0x7e> + 175f8: f1a6 03d0 sub.w r3, r6, #208 ; 0xd0 + 175fc: 2b22 cmp r3, #34 ; 0x22 + 175fe: d89c bhi.n 1753a ::_read()+0x12> + 17600: a201 add r2, pc, #4 ; (adr r2, 17608 ::_read()+0xe0>) + 17602: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 17606: bf00 nop + 17608: 000175a7 .word 0x000175a7 + 1760c: 0001753b .word 0x0001753b + 17610: 0001753b .word 0x0001753b + 17614: 0001753b .word 0x0001753b + 17618: 0001753b .word 0x0001753b + 1761c: 0001753b .word 0x0001753b + 17620: 0001753b .word 0x0001753b + 17624: 0001753b .word 0x0001753b + 17628: 0001753b .word 0x0001753b + 1762c: 0001753b .word 0x0001753b + 17630: 0001753b .word 0x0001753b + 17634: 0001753b .word 0x0001753b + 17638: 0001753b .word 0x0001753b + 1763c: 0001753b .word 0x0001753b + 17640: 0001753b .word 0x0001753b + 17644: 0001753b .word 0x0001753b + 17648: 000175e3 .word 0x000175e3 + 1764c: 0001753b .word 0x0001753b + 17650: 0001753b .word 0x0001753b + 17654: 0001753b .word 0x0001753b + 17658: 0001753b .word 0x0001753b + 1765c: 0001753b .word 0x0001753b + 17660: 0001753b .word 0x0001753b + 17664: 0001753b .word 0x0001753b + 17668: 0001753b .word 0x0001753b + 1766c: 0001753b .word 0x0001753b + 17670: 0001753b .word 0x0001753b + 17674: 0001753b .word 0x0001753b + 17678: 0001753b .word 0x0001753b + 1767c: 0001753b .word 0x0001753b + 17680: 0001753b .word 0x0001753b + 17684: 0001753b .word 0x0001753b + 17688: 000176bf .word 0x000176bf + 1768c: 000175a7 .word 0x000175a7 + 17690: 000175e3 .word 0x000175e3 + 17694: 2ef7 cmp r6, #247 ; 0xf7 + 17696: d018 beq.n 176ca ::_read()+0x1a2> + 17698: 07db lsls r3, r3, #31 + 1769a: f57f af4e bpl.w 1753a ::_read()+0x12> + 1769e: e782 b.n 175a6 ::_read()+0x7e> if(sysexLen < BMC_MIDI_SYSEX_SIZE){ - 175e8: f8b4 2108 ldrh.w r2, [r4, #264] ; 0x108 - 175ec: 2afd cmp r2, #253 ; 0xfd - 175ee: d805 bhi.n 175fc ::_read()+0x18c> + 176a0: f8b4 2108 ldrh.w r2, [r4, #264] ; 0x108 + 176a4: 2afd cmp r2, #253 ; 0xfd + 176a6: d805 bhi.n 176b4 ::_read()+0x18c> sysex[sysexLen++] = c; - 175f0: 1c53 adds r3, r2, #1 - 175f2: 4422 add r2, r4 - 175f4: f8a4 3108 strh.w r3, [r4, #264] ; 0x108 - 175f8: 7256 strb r6, [r2, #9] - 175fa: e742 b.n 17482 ::_read()+0x12> + 176a8: 1c53 adds r3, r2, #1 + 176aa: 4422 add r2, r4 + 176ac: f8a4 3108 strh.w r3, [r4, #264] ; 0x108 + 176b0: 7256 strb r6, [r2, #9] + 176b2: e742 b.n 1753a ::_read()+0x12> sysexLen = 0; - 175fc: f8a4 3108 strh.w r3, [r4, #264] ; 0x108 + 176b4: f8a4 3108 strh.w r3, [r4, #264] ; 0x108 waitForSysExClose = true; - 17600: f884 810e strb.w r8, [r4, #270] ; 0x10e - 17604: e73d b.n 17482 ::_read()+0x12> + 176b8: f884 810e strb.w r8, [r4, #270] ; 0x10e + 176bc: e73d b.n 1753a ::_read()+0x12> sysex[sysexLen++] = 0xF0; - 17606: 23f0 movs r3, #240 ; 0xf0 + 176be: 23f0 movs r3, #240 ; 0xf0 status = c; - 17608: 7166 strb r6, [r4, #5] + 176c0: 7166 strb r6, [r4, #5] sysex[sysexLen++] = 0xF0; - 1760a: f8a4 8108 strh.w r8, [r4, #264] ; 0x108 - 1760e: 7263 strb r3, [r4, #9] + 176c2: f8a4 8108 strh.w r8, [r4, #264] ; 0x108 + 176c6: 7263 strb r3, [r4, #9] break; - 17610: e737 b.n 17482 ::_read()+0x12> + 176c8: e737 b.n 1753a ::_read()+0x12> if(status == BMC_MIDI_SYSTEM_EXCLUSIVE){ - 17612: 7963 ldrb r3, [r4, #5] - 17614: 2bf0 cmp r3, #240 ; 0xf0 - 17616: d00d beq.n 17634 ::_read()+0x1c4> + 176ca: 7963 ldrb r3, [r4, #5] + 176cc: 2bf0 cmp r3, #240 ; 0xf0 + 176ce: d00d beq.n 176ec ::_read()+0x1c4> return true; - 17618: 2001 movs r0, #1 + 176d0: 2001 movs r0, #1 } - 1761a: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 176d2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} data1 = c; - 1761e: 71e6 strb r6, [r4, #7] + 176d6: 71e6 strb r6, [r4, #7] expecting--; - 17620: f884 8004 strb.w r8, [r4, #4] - 17624: e72d b.n 17482 ::_read()+0x12> + 176d8: f884 8004 strb.w r8, [r4, #4] + 176dc: e72d b.n 1753a ::_read()+0x12> data2 = c; - 17626: 7226 strb r6, [r4, #8] + 176de: 7226 strb r6, [r4, #8] expecting--; - 17628: 7123 strb r3, [r4, #4] + 176e0: 7123 strb r3, [r4, #4] } - 1762a: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 176e2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} return false; - 1762e: 2000 movs r0, #0 + 176e6: 2000 movs r0, #0 + } + 176e8: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + if(waitForSysExClose){ + 176ec: f894 010e ldrb.w r0, [r4, #270] ; 0x10e + 176f0: b110 cbz r0, 176f8 ::_read()+0x1d0> + waitForSysExClose = false; + 176f2: f884 210e strb.w r2, [r4, #270] ; 0x10e + 176f6: e76e b.n 175d6 ::_read()+0xae> + sysex[sysexLen++] = 0xF7; + 176f8: f8b4 3108 ldrh.w r3, [r4, #264] ; 0x108 + return true; + 176fc: 2001 movs r0, #1 + sysex[sysexLen++] = 0xF7; + 176fe: 181a adds r2, r3, r0 + 17700: 4423 add r3, r4 + 17702: f8a4 2108 strh.w r2, [r4, #264] ; 0x108 + 17706: 725e strb r6, [r3, #9] + 17708: e765 b.n 175d6 ::_read()+0xae> + 1770a: bf00 nop + +0001770c : + BMCMidiMessage readBle(){ + 1770c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 17710: 460c mov r4, r1 + memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); + 17712: 2100 movs r1, #0 + 17714: 22fe movs r2, #254 ; 0xfe + 17716: 4606 mov r6, r0 + 17718: f104 0805 add.w r8, r4, #5 + void setStatus(uint8_t t_status) { status = t_status; } + 1771c: 460d mov r5, r1 + bitWrite(ports, sourcePortBit, 1); + 1771e: f04f 0901 mov.w r9, #1 + memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); + 17722: 4640 mov r0, r8 + 17724: f016 ff26 bl 2e574 + if(_read()){ + 17728: f241 1088 movw r0, #4488 ; 0x1188 + void setStatus(uint8_t t_status) { status = t_status; } + 1772c: 7065 strb r5, [r4, #1] + 1772e: 4420 add r0, r4 + void setChannel(uint8_t t_channel) { channel = t_channel; } + 17730: 70a5 strb r5, [r4, #2] + void setData1(uint8_t t_data1) { data1 = t_data1; } + 17732: 70e5 strb r5, [r4, #3] + void setData2(uint8_t t_data2) { data2 = t_data2; } + 17734: 7125 strb r5, [r4, #4] + bitWrite(ports, sourcePortBit, 1); + 17736: f884 9000 strb.w r9, [r4] + return bitRead(flags, bit); + 1773a: f894 a10c ldrb.w sl, [r4, #268] ; 0x10c + 1773e: f7ff fef3 bl 17528 ::_read()> + 17742: bb00 cbnz r0, 17786 + 17744: f504 5780 add.w r7, r4, #4096 ; 0x1000 + bool value = Port.read(message, ignoreRealTime); + if(value){ + tConn = millis(); + connected = true; + } + if(!value && connected && ((unsigned long) millis()-tConn > 6000)){ + 17748: f897 329c ldrb.w r3, [r7, #668] ; 0x29c + 1774c: b973 cbnz r3, 1776c + connected = false; + } + globals.setBleConnected(connected); + 1774e: f8d7 2184 ldr.w r2, [r7, #388] ; 0x184 + bitWrite(flags, bit, value); + 17752: 6dd3 ldr r3, [r2, #92] ; 0x5c + 17754: f023 0310 bic.w r3, r3, #16 + 17758: 65d3 str r3, [r2, #92] ; 0x5c + return message; + 1775a: f240 1203 movw r2, #259 ; 0x103 + 1775e: 4621 mov r1, r4 + 17760: 4630 mov r0, r6 + 17762: f013 f845 bl 2a7f0 + } + 17766: 4630 mov r0, r6 + 17768: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 1776c: 4b5b ldr r3, [pc, #364] ; (178dc ) + if(!value && connected && ((unsigned long) millis()-tConn > 6000)){ + 1776e: f8d7 2298 ldr.w r2, [r7, #664] ; 0x298 + 17772: 681b ldr r3, [r3, #0] + 17774: 1a9b subs r3, r3, r2 + 17776: f241 7270 movw r2, #6000 ; 0x1770 + 1777a: 4293 cmp r3, r2 + 1777c: d954 bls.n 17828 + connected = false; + 1777e: 2300 movs r3, #0 + 17780: f887 329c strb.w r3, [r7, #668] ; 0x29c + 17784: e7e3 b.n 1774e + memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); + 17786: 22fe movs r2, #254 ; 0xfe + 17788: 4629 mov r1, r5 + 1778a: 4640 mov r0, r8 + message.setStatus(status); + 1778c: f504 5780 add.w r7, r4, #4096 ; 0x1000 + 17790: f016 fef0 bl 2e574 + bitWrite(ports, sourcePortBit, 1); + 17794: 2340 movs r3, #64 ; 0x40 + void setChannel(uint8_t t_channel) { channel = t_channel; } + 17796: 70a5 strb r5, [r4, #2] + void setData1(uint8_t t_data1) { data1 = t_data1; } + 17798: 70e5 strb r5, [r4, #3] + void setData2(uint8_t t_data2) { data2 = t_data2; } + 1779a: 7125 strb r5, [r4, #4] + bitWrite(ports, sourcePortBit, 1); + 1779c: 7023 strb r3, [r4, #0] + 1779e: f897 318d ldrb.w r3, [r7, #397] ; 0x18d + switch(getStatus()){ + 177a2: f103 0208 add.w r2, r3, #8 + void setStatus(uint8_t t_status) { status = t_status; } + 177a6: 7063 strb r3, [r4, #1] + switch(getStatus()){ + 177a8: b2d2 uxtb r2, r2 + 177aa: 2a07 cmp r2, #7 + 177ac: d843 bhi.n 17836 + 177ae: 23dd movs r3, #221 ; 0xdd + 177b0: 40d3 lsrs r3, r2 + 177b2: 07db lsls r3, r3, #31 + 177b4: d578 bpl.n 178a8 + if(ignoreRealTime){ + 177b6: f01a 0f02 tst.w sl, #2 + 177ba: d16c bne.n 17896 + 177bc: 4b47 ldr r3, [pc, #284] ; (178dc ) + connected = true; + 177be: 2101 movs r1, #1 + globals.setBleConnected(connected); + 177c0: f8d7 2184 ldr.w r2, [r7, #388] ; 0x184 + routing(message); + 177c4: 4620 mov r0, r4 + 177c6: 681b ldr r3, [r3, #0] + connected = true; + 177c8: f887 129c strb.w r1, [r7, #668] ; 0x29c + 177cc: 4621 mov r1, r4 + tConn = millis(); + 177ce: f8c7 3298 str.w r3, [r7, #664] ; 0x298 + 177d2: 6dd3 ldr r3, [r2, #92] ; 0x5c + 177d4: f043 0310 orr.w r3, r3, #16 + 177d8: 65d3 str r3, [r2, #92] ; 0x5c + 177da: f7fd ff19 bl 15610 + addToLocalData(message); + 177de: 7863 ldrb r3, [r4, #1] + if(getStatus()>127 && !isSysEx()){ + 177e0: f083 0280 eor.w r2, r3, #128 ; 0x80 + 177e4: 2a6f cmp r2, #111 ; 0x6f + 177e6: d8b8 bhi.n 1775a + 177e8: 78a2 ldrb r2, [r4, #2] + if(getChannel()==0){ + 177ea: 2a00 cmp r2, #0 + 177ec: d0b5 beq.n 1775a + event |= (getPort()<<24); + 177ee: 7821 ldrb r1, [r4, #0] + event |= ((getChannel()-1) & 0x0F); + 177f0: 3a01 subs r2, #1 + event |= (getData1() << 8) | (getData2() << 16); + 177f2: 78e0 ldrb r0, [r4, #3] + 177f4: ea43 6301 orr.w r3, r3, r1, lsl #24 + event |= ((getChannel()-1) & 0x0F); + 177f8: f002 010f and.w r1, r2, #15 + event |= (getData1() << 8) | (getData2() << 16); + 177fc: 7922 ldrb r2, [r4, #4] + 177fe: 430b orrs r3, r1 + 17800: 0412 lsls r2, r2, #16 + if((t_event & 0xF0) == BMC_MIDI_PROGRAM_CHANGE){ + 17802: f003 01f0 and.w r1, r3, #240 ; 0xf0 + 17806: ea42 2200 orr.w r2, r2, r0, lsl #8 + 1780a: 29c0 cmp r1, #192 ; 0xc0 + event |= (getPort()<<24); + 1780c: ea43 0302 orr.w r3, r3, r2 + 17810: d153 bne.n 178ba + channel[ch].program = pc; + 17812: f003 020f and.w r2, r3, #15 + uint8_t pc = BMC_GET_BYTE(1, t_event) & 0x7F; + 17816: f3c3 2306 ubfx r3, r3, #8, #7 + channel[ch].program = pc; + 1781a: eb02 1282 add.w r2, r2, r2, lsl #6 + 1781e: eb04 0242 add.w r2, r4, r2, lsl #1 + 17822: f882 310d strb.w r3, [r2, #269] ; 0x10d + } + 17826: e798 b.n 1775a + globals.setBleConnected(connected); + 17828: f8d7 2184 ldr.w r2, [r7, #388] ; 0x184 + 1782c: 6dd3 ldr r3, [r2, #92] ; 0x5c + 1782e: f043 0310 orr.w r3, r3, #16 + 17832: 65d3 str r3, [r2, #92] ; 0x5c + return value; + 17834: e791 b.n 1775a + void setData1(uint8_t t_data1) { data1 = t_data1; } + 17836: f897 218f ldrb.w r2, [r7, #399] ; 0x18f + return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 + 1783a: 2bef cmp r3, #239 ; 0xef + void setData1(uint8_t t_data1) { data1 = t_data1; } + 1783c: 70e2 strb r2, [r4, #3] + void setData2(uint8_t t_data2) { data2 = t_data2; } + 1783e: f897 2190 ldrb.w r2, [r7, #400] ; 0x190 + 17842: 7122 strb r2, [r4, #4] + return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 + 17844: d813 bhi.n 1786e + switch(getStatus()){ + 17846: 2bb0 cmp r3, #176 ; 0xb0 + 17848: d006 beq.n 17858 + 1784a: d909 bls.n 17860 + 1784c: 2be0 cmp r3, #224 ; 0xe0 + 1784e: d003 beq.n 17858 + 17850: f003 03ef and.w r3, r3, #239 ; 0xef + 17854: 2bc0 cmp r3, #192 ; 0xc0 + 17856: d1b1 bne.n 177bc + void setChannel(uint8_t t_channel) { channel = t_channel; } + 17858: f897 318e ldrb.w r3, [r7, #398] ; 0x18e + 1785c: 70a3 strb r3, [r4, #2] + if(value){ + 1785e: e7ad b.n 177bc + switch(getStatus()){ + 17860: 2ba0 cmp r3, #160 ; 0xa0 + 17862: d0f9 beq.n 17858 + 17864: f003 03ef and.w r3, r3, #239 ; 0xef + 17868: 2b80 cmp r3, #128 ; 0x80 + 1786a: d1a7 bne.n 177bc + 1786c: e7f4 b.n 17858 + if(message.isSystemExclusive()){ + 1786e: 2bf0 cmp r3, #240 ; 0xf0 + 17870: d1a4 bne.n 177bc + void setData1(uint8_t t_data1) { data1 = t_data1; } + 17872: 70e5 strb r5, [r4, #3] + void setData2(uint8_t t_data2) { data2 = t_data2; } + 17874: 7125 strb r5, [r4, #4] + if(sysexLen <= BMC_MIDI_SYSEX_SIZE){ + 17876: f8b7 9290 ldrh.w r9, [r7, #656] ; 0x290 + 1787a: f1b9 0ffe cmp.w r9, #254 ; 0xfe + 1787e: d81a bhi.n 178b6 + if(length < BMC_MIDI_SYSEX_SIZE){ + 17880: d09c beq.n 177bc + memcpy(sysex, data, length); + 17882: f241 1191 movw r1, #4497 ; 0x1191 + 17886: 4640 mov r0, r8 + 17888: 464a mov r2, r9 + 1788a: 4421 add r1, r4 + 1788c: f012 ffb0 bl 2a7f0 + setData1(value & 0xFF); + 17890: f884 9003 strb.w r9, [r4, #3] + 17894: e792 b.n 177bc + memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); + 17896: 4640 mov r0, r8 + 17898: 22fe movs r2, #254 ; 0xfe + 1789a: 4629 mov r1, r5 + 1789c: f016 fe6a bl 2e574 + void setStatus(uint8_t t_status) { status = t_status; } + 178a0: 7065 strb r5, [r4, #1] + bitWrite(ports, sourcePortBit, 1); + 178a2: f884 9000 strb.w r9, [r4] + 178a6: e74f b.n 17748 + void setData1(uint8_t t_data1) { data1 = t_data1; } + 178a8: f897 318f ldrb.w r3, [r7, #399] ; 0x18f + 178ac: 70e3 strb r3, [r4, #3] + void setData2(uint8_t t_data2) { data2 = t_data2; } + 178ae: f897 3190 ldrb.w r3, [r7, #400] ; 0x190 + 178b2: 7123 strb r3, [r4, #4] + return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 + 178b4: e782 b.n 177bc + void setStatus(uint8_t t_status) { status = t_status; } + 178b6: 7065 strb r5, [r4, #1] + 178b8: e780 b.n 177bc + } else if((t_event & 0xF0) == BMC_MIDI_CONTROL_CHANGE){ + 178ba: 29b0 cmp r1, #176 ; 0xb0 + 178bc: f47f af4d bne.w 1775a + channel[ch].control[cc] = value; + 178c0: f003 020f and.w r2, r3, #15 + 178c4: f3c3 2106 ubfx r1, r3, #8, #7 + uint8_t value = BMC_GET_BYTE(2, t_event) & 0x7F; + 178c8: f3c3 4306 ubfx r3, r3, #16, #7 + channel[ch].control[cc] = value; + 178cc: eb02 1282 add.w r2, r2, r2, lsl #6 + 178d0: eb04 0242 add.w r2, r4, r2, lsl #1 + 178d4: 440a add r2, r1 + 178d6: f882 310f strb.w r3, [r2, #271] ; 0x10f } - 17630: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - if(waitForSysExClose){ - 17634: f894 010e ldrb.w r0, [r4, #270] ; 0x10e - 17638: b110 cbz r0, 17640 ::_read()+0x1d0> - waitForSysExClose = false; - 1763a: f884 210e strb.w r2, [r4, #270] ; 0x10e - 1763e: e76e b.n 1751e ::_read()+0xae> - sysex[sysexLen++] = 0xF7; - 17640: f8b4 3108 ldrh.w r3, [r4, #264] ; 0x108 - return true; - 17644: 2001 movs r0, #1 - sysex[sysexLen++] = 0xF7; - 17646: 181a adds r2, r3, r0 - 17648: 4423 add r3, r4 - 1764a: f8a4 2108 strh.w r2, [r4, #264] ; 0x108 - 1764e: 725e strb r6, [r3, #9] - 17650: e765 b.n 1751e ::_read()+0xae> - 17652: bf00 nop - -00017654 : + 178da: e73e b.n 1775a + 178dc: 2000bb08 .word 0x2000bb08 + +000178e0 : +void BMC::readMidi(){ + 178e0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + if(midiClock.read(isClock, isStartOrContinue)){ + 178e4: 2200 movs r2, #0 +void BMC::readMidi(){ + 178e6: 4605 mov r5, r0 if(midiClock.read(isClock, isStartOrContinue)){ - 17654: 2200 movs r2, #0 + 178e8: f243 10a0 movw r0, #12704 ; 0x31a0 void BMC::readMidi(){ - 17656: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1765a: 4605 mov r5, r0 - 1765c: f2ad 5d0c subw sp, sp, #1292 ; 0x50c + 178ec: f2ad 5d0c subw sp, sp, #1292 ; 0x50c if(midiClock.read(isClock, isStartOrContinue)){ - 17660: 4611 mov r1, r2 - 17662: f500 5046 add.w r0, r0, #12672 ; 0x3180 + 178f0: 4611 mov r1, r2 if(callback.midiClockBeat){ - 17666: f505 5480 add.w r4, r5, #4096 ; 0x1000 + 178f2: f505 5480 add.w r4, r5, #4096 ; 0x1000 if(midiClock.read(isClock, isStartOrContinue)){ - 1766a: f7fd fff9 bl 15660 - 1766e: 2800 cmp r0, #0 - 17670: f040 812d bne.w 178ce + 178f6: 4428 add r0, r5 + 178f8: f7fd ff12 bl 15720 + 178fc: 2800 cmp r0, #0 + 178fe: f040 810e bne.w 17b1e if(bitRead(flags, bit)){ - 17674: f505 5640 add.w r6, r5, #12288 ; 0x3000 - 17678: f896 3194 ldrb.w r3, [r6, #404] ; 0x194 - 1767c: 075f lsls r7, r3, #29 - 1767e: f100 80d3 bmi.w 17828 + 17902: f505 5640 add.w r6, r5, #12288 ; 0x3000 + 17906: f896 31b4 ldrb.w r3, [r6, #436] ; 0x1b4 + 1790a: 075f lsls r7, r3, #29 + 1790c: f100 80b4 bmi.w 17a78 return (prevTime>0); - 17682: f8d6 31dc ldr.w r3, [r6, #476] ; 0x1dc + 17910: f8d6 31fc ldr.w r3, [r6, #508] ; 0x1fc if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 17686: b13b cbz r3, 17698 - 17688: 4fbf ldr r7, [pc, #764] ; (17988 ) - 1768a: f8b6 11d8 ldrh.w r1, [r6, #472] ; 0x1d8 - 1768e: 683a ldr r2, [r7, #0] - 17690: 1ad3 subs r3, r2, r3 - 17692: 428b cmp r3, r1 - 17694: f080 8228 bcs.w 17ae8 + 17914: b13b cbz r3, 17926 + 17916: 4fdc ldr r7, [pc, #880] ; (17c88 ) + 17918: f8b6 11f8 ldrh.w r1, [r6, #504] ; 0x1f8 + 1791c: 683a ldr r2, [r7, #0] + 1791e: 1ad3 subs r3, r2, r3 + 17920: 428b cmp r3, r1 + 17922: f080 81b9 bcs.w 17c98 return (prevTime>0); - 17698: f8d6 31e4 ldr.w r3, [r6, #484] ; 0x1e4 + 17926: f8d6 3204 ldr.w r3, [r6, #516] ; 0x204 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 1769c: b13b cbz r3, 176ae - 1769e: 4aba ldr r2, [pc, #744] ; (17988 ) - 176a0: 6812 ldr r2, [r2, #0] - 176a2: 1ad3 subs r3, r2, r3 - 176a4: f8b6 21e0 ldrh.w r2, [r6, #480] ; 0x1e0 - 176a8: 4293 cmp r3, r2 - 176aa: f080 8232 bcs.w 17b12 + 1792a: b13b cbz r3, 1793c + 1792c: 4ad6 ldr r2, [pc, #856] ; (17c88 ) + 1792e: 6812 ldr r2, [r2, #0] + 17930: 1ad3 subs r3, r2, r3 + 17932: f8b6 2200 ldrh.w r2, [r6, #512] ; 0x200 + 17936: 4293 cmp r3, r2 + 17938: f080 81c3 bcs.w 17cc2 incomingMidi(midi.read());// Read the USB MIDI Port - 176ae: f505 56ce add.w r6, r5, #6592 ; 0x19c0 + 1793c: f505 56ce add.w r6, r5, #6592 ; 0x19c0 memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 176b2: 2100 movs r1, #0 + 17940: 2100 movs r1, #0 bitWrite(ports, sourcePortBit, 1); - 176b4: f04f 0901 mov.w r9, #1 + 17942: f04f 0801 mov.w r8, #1 memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 176b8: 22fe movs r2, #254 ; 0xfe - 176ba: f106 0805 add.w r8, r6, #5 + 17946: 22fe movs r2, #254 ; 0xfe + 17948: f106 0a05 add.w sl, r6, #5 void setStatus(uint8_t t_status) { status = t_status; } - 176be: 460f mov r7, r1 + 1794c: 460f mov r7, r1 memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 176c0: 4640 mov r0, r8 - 176c2: f016 fee3 bl 2e48c + 1794e: 4650 mov r0, sl + 17950: f016 fe10 bl 2e574 void send_now(void) __attribute__((always_inline)) { usb_midi_flush_output(); } uint8_t analog2velocity(uint16_t val, uint8_t range); bool read(uint8_t channel=0) __attribute__((always_inline)) { return usb_midi_read(channel); - 176c6: 4638 mov r0, r7 + 17954: 4638 mov r0, r7 void setStatus(uint8_t t_status) { status = t_status; } - 176c8: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 + 17956: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 void setChannel(uint8_t t_channel) { channel = t_channel; } - 176cc: f884 79c2 strb.w r7, [r4, #2498] ; 0x9c2 + 1795a: f884 79c2 strb.w r7, [r4, #2498] ; 0x9c2 void setData1(uint8_t t_data1) { data1 = t_data1; } - 176d0: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 + 1795e: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 void setData2(uint8_t t_data2) { data2 = t_data2; } - 176d4: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 + 17962: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 bitWrite(ports, sourcePortBit, 1); - 176d8: f884 99c0 strb.w r9, [r4, #2496] ; 0x9c0 - 176dc: f014 fb2c bl 2bd38 + 17966: f884 89c0 strb.w r8, [r4, #2496] ; 0x9c0 + 1796a: f014 fa59 bl 2be20 if(usbMIDI.read()){ - 176e0: 2800 cmp r0, #0 - 176e2: f040 81da bne.w 17a9a + 1796e: 2800 cmp r0, #0 + 17970: f040 8162 bne.w 17c38 return message; - 176e6: af3e add r7, sp, #248 ; 0xf8 - 176e8: f240 1203 movw r2, #259 ; 0x103 - 176ec: 4631 mov r1, r6 - 176ee: 4638 mov r0, r7 - 176f0: f013 f80a bl 2a708 - 176f4: 22f7 movs r2, #247 ; 0xf7 - 176f6: a941 add r1, sp, #260 ; 0x104 - 176f8: 4668 mov r0, sp - 176fa: f013 f805 bl 2a708 - 176fe: 4628 mov r0, r5 - 17700: e897 000e ldmia.w r7, {r1, r2, r3} - 17704: f7fe fa7e bl 15c04 + 17974: af3e add r7, sp, #248 ; 0xf8 + 17976: f240 1203 movw r2, #259 ; 0x103 + 1797a: 4631 mov r1, r6 + 1797c: 4638 mov r0, r7 + 1797e: f012 ff37 bl 2a7f0 + 17982: 22f7 movs r2, #247 ; 0xf7 + 17984: a941 add r1, sp, #260 ; 0x104 + 17986: 4668 mov r0, sp + 17988: f012 ff32 bl 2a7f0 + 1798c: 4628 mov r0, r5 + 1798e: e897 000e ldmia.w r7, {r1, r2, r3} + 17992: f7fe f997 bl 15cc4 memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 17708: 22fe movs r2, #254 ; 0xfe - 1770a: 2100 movs r1, #0 - 1770c: 4640 mov r0, r8 - 1770e: f016 febd bl 2e48c + 17996: 22fe movs r2, #254 ; 0xfe + 17998: 2100 movs r1, #0 + 1799a: 4650 mov r0, sl + 1799c: f016 fdea bl 2e574 void setStatus(uint8_t t_status) { status = t_status; } - 17712: 2300 movs r3, #0 + 179a0: 2300 movs r3, #0 return bitRead(flags, bit); - 17714: f894 2acc ldrb.w r2, [r4, #2764] ; 0xacc + 179a2: f894 2acc ldrb.w r2, [r4, #2764] ; 0xacc if(midiHost.read(message, flags.read(BMC_FLAG_MIDI_REAL_TIME_BLOCK_INPUT))){ - 17718: 4631 mov r1, r6 - 1771a: f884 39c1 strb.w r3, [r4, #2497] ; 0x9c1 - 1771e: f506 6036 add.w r0, r6, #2912 ; 0xb60 + 179a6: 4631 mov r1, r6 + 179a8: f884 39c1 strb.w r3, [r4, #2497] ; 0x9c1 + 179ac: f506 6026 add.w r0, r6, #2656 ; 0xa60 void setChannel(uint8_t t_channel) { channel = t_channel; } - 17722: f884 39c2 strb.w r3, [r4, #2498] ; 0x9c2 - 17726: f3c2 0240 ubfx r2, r2, #1, #1 + 179b0: f884 39c2 strb.w r3, [r4, #2498] ; 0x9c2 + 179b4: f3c2 0240 ubfx r2, r2, #1, #1 void setData1(uint8_t t_data1) { data1 = t_data1; } - 1772a: f884 39c3 strb.w r3, [r4, #2499] ; 0x9c3 + 179b8: f884 39c3 strb.w r3, [r4, #2499] ; 0x9c3 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1772e: f884 39c4 strb.w r3, [r4, #2500] ; 0x9c4 + 179bc: f884 39c4 strb.w r3, [r4, #2500] ; 0x9c4 bitWrite(ports, sourcePortBit, 1); - 17732: 2301 movs r3, #1 - 17734: f884 39c0 strb.w r3, [r4, #2496] ; 0x9c0 - 17738: f7fd fe70 bl 1541c - 1773c: 2800 cmp r0, #0 - 1773e: f040 817c bne.w 17a3a + 179c0: 2301 movs r3, #1 + 179c2: f884 39c0 strb.w r3, [r4, #2496] ; 0x9c0 + 179c6: f7fd fd8f bl 154e8 + 179ca: 2800 cmp r0, #0 + 179cc: f040 8104 bne.w 17bd8 return message; - 17742: f50d 7afe add.w sl, sp, #508 ; 0x1fc - 17746: f240 1203 movw r2, #259 ; 0x103 - 1774a: 4631 mov r1, r6 - } - - bool read(uint8_t port, BMCMidiMessage& message, bool ignoreRealTime){ - switch(port){ -#ifdef BMC_MIDI_SERIAL_A_ENABLED - case 0: return serialPortA.read(message, ignoreRealTime); - 1774c: f242 29f4 movw r9, #8948 ; 0x22f4 - 17750: 4650 mov r0, sl + 179d0: f50d 79fe add.w r9, sp, #508 ; 0x1fc + 179d4: f240 1203 movw r2, #259 ; 0x103 + 179d8: 4631 mov r1, r6 + incomingMidi(midi.readBle()); // Read the BLE MIDI Port + 179da: f50d 7840 add.w r8, sp, #768 ; 0x300 + 179de: 4648 mov r0, r9 void setStatus(uint8_t t_status) { status = t_status; } - 17752: 2700 movs r7, #0 - 17754: f012 ffd8 bl 2a708 + 179e0: 2700 movs r7, #0 + 179e2: f012 ff05 bl 2a7f0 incomingMidi(midi.readHost()); // Read the USB Host MIDI Port - 17758: 22f7 movs r2, #247 ; 0xf7 - 1775a: a982 add r1, sp, #520 ; 0x208 - 1775c: 4668 mov r0, sp - 1775e: f012 ffd3 bl 2a708 - 17762: 44a9 add r9, r5 - 17764: 4628 mov r0, r5 + 179e6: 22f7 movs r2, #247 ; 0xf7 + 179e8: a982 add r1, sp, #520 ; 0x208 + 179ea: 4668 mov r0, sp + 179ec: f012 ff00 bl 2a7f0 + 179f0: 4628 mov r0, r5 bitWrite(ports, sourcePortBit, 1); - 17766: f04f 0b01 mov.w fp, #1 - 1776a: e89a 000e ldmia.w sl, {r1, r2, r3} - 1776e: f7fe fa49 bl 15c04 + 179f2: f04f 0b01 mov.w fp, #1 + 179f6: e899 000e ldmia.w r9, {r1, r2, r3} + 179fa: f7fe f963 bl 15cc4 + incomingMidi(midi.readBle()); // Read the BLE MIDI Port + 179fe: 4640 mov r0, r8 + 17a00: 4631 mov r1, r6 + 17a02: f7ff fe83 bl 1770c + 17a06: 22f7 movs r2, #247 ; 0xf7 + 17a08: a9c3 add r1, sp, #780 ; 0x30c + 17a0a: 4668 mov r0, sp + 17a0c: f012 fef0 bl 2a7f0 + 17a10: 4628 mov r0, r5 + 17a12: e898 000e ldmia.w r8, {r1, r2, r3} + 17a16: f7fe f955 bl 15cc4 memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 17772: 22fe movs r2, #254 ; 0xfe - 17774: 4639 mov r1, r7 - 17776: 4640 mov r0, r8 - 17778: f016 fe88 bl 2e48c + 17a1a: 22fe movs r2, #254 ; 0xfe + 17a1c: 4639 mov r1, r7 + 17a1e: 4650 mov r0, sl + 17a20: f016 fda8 bl 2e574 if(_read()){ - 1777c: f109 0004 add.w r0, r9, #4 + 17a24: f242 20f8 movw r0, #8952 ; 0x22f8 void setStatus(uint8_t t_status) { status = t_status; } - 17780: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 + 17a28: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 + 17a2c: 4428 add r0, r5 void setChannel(uint8_t t_channel) { channel = t_channel; } - 17784: f884 79c2 strb.w r7, [r4, #2498] ; 0x9c2 + 17a2e: f884 79c2 strb.w r7, [r4, #2498] ; 0x9c2 void setData1(uint8_t t_data1) { data1 = t_data1; } - 17788: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 + 17a32: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1778c: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 + 17a36: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 bitWrite(ports, sourcePortBit, 1); - 17790: f884 b9c0 strb.w fp, [r4, #2496] ; 0x9c0 - 17794: f894 aacc ldrb.w sl, [r4, #2764] ; 0xacc - 17798: f7ff fd78 bl 1728c ::_read()> - 1779c: 2800 cmp r0, #0 - 1779e: f040 80f9 bne.w 17994 + 17a3a: f884 b9c0 strb.w fp, [r4, #2496] ; 0x9c0 + 17a3e: f894 8acc ldrb.w r8, [r4, #2764] ; 0xacc + 17a42: f7ff fc7f bl 17344 ::_read()> + 17a46: 2800 cmp r0, #0 + 17a48: d173 bne.n 17b32 return message; - 177a2: f50d 7a40 add.w sl, sp, #768 ; 0x300 - 177a6: f240 1203 movw r2, #259 ; 0x103 - 177aa: 4631 mov r1, r6 - void setStatus(uint8_t t_status) { status = t_status; } - 177ac: 2700 movs r7, #0 - 177ae: 4650 mov r0, sl - bitWrite(ports, sourcePortBit, 1); - 177b0: f04f 0b01 mov.w fp, #1 - 177b4: f012 ffa8 bl 2a708 + 17a4a: f20d 4404 addw r4, sp, #1028 ; 0x404 + 17a4e: 4631 mov r1, r6 + 17a50: f240 1203 movw r2, #259 ; 0x103 + 17a54: 4620 mov r0, r4 + 17a56: f012 fecb bl 2a7f0 incomingMidi(midi.readSerial(0));// Read the Serial MIDI Port - 177b8: 22f7 movs r2, #247 ; 0xf7 - 177ba: a9c3 add r1, sp, #780 ; 0x30c - 177bc: 4668 mov r0, sp - 177be: f012 ffa3 bl 2a708 - 177c2: 4628 mov r0, r5 - 177c4: e89a 000e ldmia.w sl, {r1, r2, r3} - 177c8: f7fe fa1c bl 15c04 - memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 177cc: 22fe movs r2, #254 ; 0xfe - 177ce: 4639 mov r1, r7 - 177d0: 4640 mov r0, r8 - 177d2: f016 fe5b bl 2e48c - 177d6: f509 708a add.w r0, r9, #276 ; 0x114 - void setStatus(uint8_t t_status) { status = t_status; } - 177da: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 - void setChannel(uint8_t t_channel) { channel = t_channel; } - 177de: f884 79c2 strb.w r7, [r4, #2498] ; 0x9c2 - void setData1(uint8_t t_data1) { data1 = t_data1; } - 177e2: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 - void setData2(uint8_t t_data2) { data2 = t_data2; } - 177e6: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 - bitWrite(ports, sourcePortBit, 1); - 177ea: f884 b9c0 strb.w fp, [r4, #2496] ; 0x9c0 - 177ee: f894 9acc ldrb.w r9, [r4, #2764] ; 0xacc - 177f2: f7ff fe3d bl 17470 ::_read()> - 177f6: 2800 cmp r0, #0 - 177f8: d173 bne.n 178e2 - 177fa: f20d 4404 addw r4, sp, #1028 ; 0x404 - 177fe: 4631 mov r1, r6 - 17800: f240 1203 movw r2, #259 ; 0x103 - 17804: 4620 mov r0, r4 - 17806: f012 ff7f bl 2a708 - incomingMidi(midi.readSerial(1));// Read the Serial B MIDI Port - 1780a: f50d 6182 add.w r1, sp, #1040 ; 0x410 - 1780e: 22f7 movs r2, #247 ; 0xf7 - 17810: 4668 mov r0, sp - 17812: f012 ff79 bl 2a708 - 17816: 4628 mov r0, r5 - 17818: e894 000e ldmia.w r4, {r1, r2, r3} - 1781c: f7fe f9f2 bl 15c04 -} - 17820: f20d 5d0c addw sp, sp, #1292 ; 0x50c - 17824: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 17a5a: f50d 6182 add.w r1, sp, #1040 ; 0x410 + 17a5e: 22f7 movs r2, #247 ; 0xf7 + 17a60: 4668 mov r0, sp + 17a62: f012 fec5 bl 2a7f0 + 17a66: 4628 mov r0, r5 + 17a68: e894 000e ldmia.w r4, {r1, r2, r3} + 17a6c: f7fe f92a bl 15cc4 +} + 17a70: f20d 5d0c addw sp, sp, #1292 ; 0x50c + 17a74: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} bitClear(flags, bit); - 17828: f023 0304 bic.w r3, r3, #4 - 1782c: 210e movs r1, #14 - 1782e: 4857 ldr r0, [pc, #348] ; (1798c ) - 17830: f886 3194 strb.w r3, [r6, #404] ; 0x194 - 17834: f014 fe88 bl 2c548 + 17a78: f023 0304 bic.w r3, r3, #4 + 17a7c: 210e movs r1, #14 + 17a7e: 4883 ldr r0, [pc, #524] ; (17c8c ) + 17a80: f886 31b4 strb.w r3, [r6, #436] ; 0x1b4 + 17a84: f014 fdd4 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 17838: 4855 ldr r0, [pc, #340] ; (17990 ) - 1783a: f012 fb1b bl 29e74 + 17a88: 4881 ldr r0, [pc, #516] ; (17c90 ) + 17a8a: f012 fa69 bl 29f60 return bpm; - 1783e: f8d6 2188 ldr.w r2, [r6, #392] ; 0x188 + 17a8e: f8d6 21a8 ldr.w r2, [r6, #424] ; 0x1a8 if(lastBpm == tempo){ - 17842: f8b6 17d2 ldrh.w r1, [r6, #2002] ; 0x7d2 - 17846: 8813 ldrh r3, [r2, #0] - 17848: 428b cmp r3, r1 - 1784a: d028 beq.n 1789e + 17a92: f8b6 17f2 ldrh.w r1, [r6, #2034] ; 0x7f2 + 17a96: 8813 ldrh r3, [r2, #0] + 17a98: 428b cmp r3, r1 + 17a9a: d028 beq.n 17aee if(BMCBpmCalculator::isValidBpm(tempo)){ - 1784c: f1a3 011e sub.w r1, r3, #30 - 17850: f5b1 7f87 cmp.w r1, #270 ; 0x10e - 17854: d823 bhi.n 1789e + 17a9c: f1a3 011e sub.w r1, r3, #30 + 17aa0: f5b1 7f87 cmp.w r1, #270 ; 0x10e + 17aa4: d823 bhi.n 17aee if(bpm == tempo){ - 17856: f8b6 17d0 ldrh.w r1, [r6, #2000] ; 0x7d0 - 1785a: 4299 cmp r1, r3 - 1785c: f000 825d beq.w 17d1a + 17aa6: f8b6 17f0 ldrh.w r1, [r6, #2032] ; 0x7f0 + 17aaa: 4299 cmp r1, r3 + 17aac: f000 81ba beq.w 17e24 bitClear(flags, bit); - 17860: f896 17c8 ldrb.w r1, [r6, #1992] ; 0x7c8 + 17ab0: f896 17e8 ldrb.w r1, [r6, #2024] ; 0x7e8 prevTime = 0; - 17864: 2000 movs r0, #0 - 17866: f001 01fd and.w r1, r1, #253 ; 0xfd - 1786a: f8c6 07c4 str.w r0, [r6, #1988] ; 0x7c4 + 17ab4: 2000 movs r0, #0 + 17ab6: f001 01fd and.w r1, r1, #253 ; 0xfd + 17aba: f8c6 07e4 str.w r0, [r6, #2020] ; 0x7e4 count = 0; - 1786e: f886 07ce strb.w r0, [r6, #1998] ; 0x7ce + 17abe: f886 07ee strb.w r0, [r6, #2030] ; 0x7ee if(!flags.read(BMC_FLAG_TEMPO_TO_TAP_AVAILABLE)){ - 17872: 07c8 lsls r0, r1, #31 + 17ac2: 07c8 lsls r0, r1, #31 bpm = tempo; - 17874: f8a6 37d0 strh.w r3, [r6, #2000] ; 0x7d0 + 17ac4: f8a6 37f0 strh.w r3, [r6, #2032] ; 0x7f0 lastBpm = bpm; - 17878: f8a6 37d2 strh.w r3, [r6, #2002] ; 0x7d2 + 17ac8: f8a6 37f2 strh.w r3, [r6, #2034] ; 0x7f2 if(!flags.read(BMC_FLAG_TEMPO_TO_TAP_AVAILABLE)){ - 1787c: f140 8255 bpl.w 17d2a + 17acc: f140 81b2 bpl.w 17e34 bitSet(flags, bit); - 17880: f041 0102 orr.w r1, r1, #2 - 17884: f886 17c8 strb.w r1, [r6, #1992] ; 0x7c8 + 17ad0: f041 0102 orr.w r1, r1, #2 + 17ad4: f886 17e8 strb.w r1, [r6, #2024] ; 0x7e8 return (BMC_MILLIS_ON_SECOND / tempo); - 17888: f64e 2160 movw r1, #60000 ; 0xea60 - 1788c: fbb1 f3f3 udiv r3, r1, r3 - 17890: 493d ldr r1, [pc, #244] ; (17988 ) + 17ad8: f64e 2160 movw r1, #60000 ; 0xea60 + 17adc: fbb1 f3f3 udiv r3, r1, r3 + 17ae0: 4969 ldr r1, [pc, #420] ; (17c88 ) timer.start(BMCBpmCalculator::bpmToMillis(bpm)); - 17892: f8a6 37c0 strh.w r3, [r6, #1984] ; 0x7c0 - 17896: 8813 ldrh r3, [r2, #0] - 17898: 680a ldr r2, [r1, #0] + 17ae2: f8a6 37e0 strh.w r3, [r6, #2016] ; 0x7e0 + 17ae6: 8813 ldrh r3, [r2, #0] + 17ae8: 680a ldr r2, [r1, #0] prevTime = (unsigned long) _BMCTiming::get(); - 1789a: f8c6 27c4 str.w r2, [r6, #1988] ; 0x7c4 + 17aea: f8c6 27e4 str.w r2, [r6, #2020] ; 0x7e4 bpm = (value < 0) ? 0 :value; - 1789e: f8a4 3978 strh.w r3, [r4, #2424] ; 0x978 + 17aee: f8a4 397c strh.w r3, [r4, #2428] ; 0x97c timeout = micros(); - 178a2: f012 fe67 bl 2a574 + 17af2: f012 fdb3 bl 2a65c freeFormPhaseOffset = 0; - 178a6: f604 1388 addw r3, r4, #2440 ; 0x988 - 178aa: 2200 movs r2, #0 + 17af6: f604 138c addw r3, r4, #2444 ; 0x98c + 17afa: 2200 movs r2, #0 timeout = micros(); - 178ac: f8c4 0980 str.w r0, [r4, #2432] ; 0x980 + 17afc: f8c4 0984 str.w r0, [r4, #2436] ; 0x984 freeFormPhaseOffset = 0; - 178b0: 601a str r2, [r3, #0] + 17b00: 601a str r2, [r3, #0] if(callback.midiClockBpmChange){ - 178b2: f8d4 38b4 ldr.w r3, [r4, #2228] ; 0x8b4 - 178b6: b11b cbz r3, 178c0 - 178b8: f8d6 2188 ldr.w r2, [r6, #392] ; 0x188 + 17b02: f8d4 38b4 ldr.w r3, [r4, #2228] ; 0x8b4 + 17b06: b11b cbz r3, 17b10 + 17b08: f8d6 21a8 ldr.w r2, [r6, #424] ; 0x1a8 callback.midiClockBpmChange(midiClock.getBpm()); - 178bc: 8810 ldrh r0, [r2, #0] - 178be: 4798 blx r3 - 178c0: f8d6 3188 ldr.w r3, [r6, #392] ; 0x188 + 17b0c: 8810 ldrh r0, [r2, #0] + 17b0e: 4798 blx r3 + 17b10: f8d6 31a8 ldr.w r3, [r6, #424] ; 0x1a8 streamMidiClockBPM(midiClock.getBpm()); - 178c4: 4628 mov r0, r5 - 178c6: 8819 ldrh r1, [r3, #0] - 178c8: f000 fbe8 bl 1809c + 17b14: 4628 mov r0, r5 + 17b16: 8819 ldrh r1, [r3, #0] + 17b18: f000 fb32 bl 18180 } - 178cc: e6d9 b.n 17682 + 17b1c: e6f8 b.n 17910 handleClockLeds(); - 178ce: 4628 mov r0, r5 - 178d0: f7f2 fa2a bl 9d28 + 17b1e: 4628 mov r0, r5 + 17b20: f7f2 f8d2 bl 9cc8 if(callback.midiClockBeat){ - 178d4: f8d4 38b0 ldr.w r3, [r4, #2224] ; 0x8b0 - 178d8: 2b00 cmp r3, #0 - 178da: f43f aecb beq.w 17674 + 17b24: f8d4 38b0 ldr.w r3, [r4, #2224] ; 0x8b0 + 17b28: 2b00 cmp r3, #0 + 17b2a: f43f aeea beq.w 17902 callback.midiClockBeat(); - 178de: 4798 blx r3 - 178e0: e6c8 b.n 17674 + 17b2e: 4798 blx r3 + 17b30: e6e7 b.n 17902 memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 178e2: 22fe movs r2, #254 ; 0xfe - 178e4: 4639 mov r1, r7 - 178e6: 4640 mov r0, r8 - 178e8: f016 fdd0 bl 2e48c + 17b32: 22fe movs r2, #254 ; 0xfe + 17b34: 4639 mov r1, r7 + 17b36: 4650 mov r0, sl + 17b38: f016 fd1c bl 2e574 bitWrite(ports, sourcePortBit, 1); - 178ec: 2304 movs r3, #4 - void setChannel(uint8_t t_channel) { channel = t_channel; } - 178ee: f884 79c2 strb.w r7, [r4, #2498] ; 0x9c2 - bitWrite(ports, sourcePortBit, 1); - 178f2: f884 39c0 strb.w r3, [r4, #2496] ; 0x9c0 + 17b3c: 2302 movs r3, #2 message.setStatus(status); - 178f6: f505 5300 add.w r3, r5, #8192 ; 0x2000 - void setData1(uint8_t t_data1) { data1 = t_data1; } - 178fa: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 - void setData2(uint8_t t_data2) { data2 = t_data2; } - 178fe: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 - 17902: f893 240d ldrb.w r2, [r3, #1037] ; 0x40d - switch(getStatus()){ - 17906: f102 0108 add.w r1, r2, #8 - void setStatus(uint8_t t_status) { status = t_status; } - 1790a: f884 29c1 strb.w r2, [r4, #2497] ; 0x9c1 - switch(getStatus()){ - 1790e: b2c9 uxtb r1, r1 - 17910: 2907 cmp r1, #7 - 17912: f200 8162 bhi.w 17bda - 17916: 22dd movs r2, #221 ; 0xdd - 17918: 40ca lsrs r2, r1 - 1791a: 07d2 lsls r2, r2, #31 - 1791c: f140 81d9 bpl.w 17cd2 - if(ignoreRealTime){ - 17920: f019 0f02 tst.w r9, #2 - 17924: f040 81c1 bne.w 17caa - routing(message); - 17928: 4631 mov r1, r6 - 1792a: 4630 mov r0, r6 - 1792c: f7fd fe0a bl 15544 - addToLocalData(message); - 17930: f894 39c1 ldrb.w r3, [r4, #2497] ; 0x9c1 - if(getStatus()>127 && !isSysEx()){ - 17934: f083 0280 eor.w r2, r3, #128 ; 0x80 - 17938: 2a6f cmp r2, #111 ; 0x6f - 1793a: f63f af5e bhi.w 177fa - 1793e: f894 29c2 ldrb.w r2, [r4, #2498] ; 0x9c2 - if(getChannel()==0){ - 17942: 2a00 cmp r2, #0 - 17944: f43f af59 beq.w 177fa - event |= (getPort()<<24); - 17948: f894 19c0 ldrb.w r1, [r4, #2496] ; 0x9c0 - event |= ((getChannel()-1) & 0x0F); - 1794c: 3a01 subs r2, #1 - 1794e: ea43 6301 orr.w r3, r3, r1, lsl #24 - 17952: f002 020f and.w r2, r2, #15 - event |= (getData1() << 8) | (getData2() << 16); - 17956: f894 19c3 ldrb.w r1, [r4, #2499] ; 0x9c3 - 1795a: 4313 orrs r3, r2 - 1795c: f894 29c4 ldrb.w r2, [r4, #2500] ; 0x9c4 - 17960: 0412 lsls r2, r2, #16 - 17962: ea42 2201 orr.w r2, r2, r1, lsl #8 - event |= (getPort()<<24); - 17966: 431a orrs r2, r3 - if((t_event & 0xF0) == BMC_MIDI_PROGRAM_CHANGE){ - 17968: f003 03f0 and.w r3, r3, #240 ; 0xf0 - 1796c: 2bc0 cmp r3, #192 ; 0xc0 - 1796e: f040 81e2 bne.w 17d36 - channel[ch].program = pc; - 17972: f002 030f and.w r3, r2, #15 - uint8_t pc = BMC_GET_BYTE(1, t_event) & 0x7F; - 17976: f3c2 2206 ubfx r2, r2, #8, #7 - channel[ch].program = pc; - 1797a: eb03 1383 add.w r3, r3, r3, lsl #6 - 1797e: eb04 0343 add.w r3, r4, r3, lsl #1 - 17982: f883 2acd strb.w r2, [r3, #2765] ; 0xacd - } - 17986: e738 b.n 177fa - 17988: 2000bae8 .word 0x2000bae8 - 1798c: 200029ec .word 0x200029ec - 17990: 20004ba8 .word 0x20004ba8 - memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 17994: 22fe movs r2, #254 ; 0xfe - 17996: 4639 mov r1, r7 - 17998: 4640 mov r0, r8 - 1799a: f016 fd77 bl 2e48c - bitWrite(ports, sourcePortBit, 1); - 1799e: 2302 movs r3, #2 + 17b3e: f505 5100 add.w r1, r5, #8192 ; 0x2000 void setChannel(uint8_t t_channel) { channel = t_channel; } - 179a0: f884 79c2 strb.w r7, [r4, #2498] ; 0x9c2 - bitWrite(ports, sourcePortBit, 1); - 179a4: f884 39c0 strb.w r3, [r4, #2496] ; 0x9c0 - message.setStatus(status); - 179a8: f505 5300 add.w r3, r5, #8192 ; 0x2000 + 17b42: f884 79c2 strb.w r7, [r4, #2498] ; 0x9c2 void setData1(uint8_t t_data1) { data1 = t_data1; } - 179ac: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 + 17b46: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 void setData2(uint8_t t_data2) { data2 = t_data2; } - 179b0: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 - 179b4: f893 22fd ldrb.w r2, [r3, #765] ; 0x2fd + 17b4a: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 + bitWrite(ports, sourcePortBit, 1); + 17b4e: f884 39c0 strb.w r3, [r4, #2496] ; 0x9c0 + 17b52: f891 32fd ldrb.w r3, [r1, #765] ; 0x2fd switch(getStatus()){ - 179b8: f102 0108 add.w r1, r2, #8 + 17b56: f103 0208 add.w r2, r3, #8 void setStatus(uint8_t t_status) { status = t_status; } - 179bc: f884 29c1 strb.w r2, [r4, #2497] ; 0x9c1 + 17b5a: f884 39c1 strb.w r3, [r4, #2497] ; 0x9c1 switch(getStatus()){ - 179c0: b2c9 uxtb r1, r1 - 179c2: 2907 cmp r1, #7 - 179c4: f200 80e8 bhi.w 17b98 - 179c8: 22dd movs r2, #221 ; 0xdd - 179ca: 40ca lsrs r2, r1 - 179cc: 07d1 lsls r1, r2, #31 - 179ce: f140 8189 bpl.w 17ce4 + 17b5e: b2d2 uxtb r2, r2 + 17b60: 2a07 cmp r2, #7 + 17b62: f200 80ca bhi.w 17cfa + 17b66: 23dd movs r3, #221 ; 0xdd + 17b68: 40d3 lsrs r3, r2 + 17b6a: 07db lsls r3, r3, #31 + 17b6c: f140 8142 bpl.w 17df4 if(ignoreRealTime){ - 179d2: f01a 0f02 tst.w sl, #2 - 179d6: f040 8172 bne.w 17cbe + 17b70: f018 0f02 tst.w r8, #2 + 17b74: f040 8134 bne.w 17de0 routing(message); - 179da: 4631 mov r1, r6 - 179dc: 4630 mov r0, r6 - 179de: f7fd fdb1 bl 15544 + 17b78: 4631 mov r1, r6 + 17b7a: 4630 mov r0, r6 + 17b7c: f7fd fd48 bl 15610 addToLocalData(message); - 179e2: f894 39c1 ldrb.w r3, [r4, #2497] ; 0x9c1 + 17b80: f894 39c1 ldrb.w r3, [r4, #2497] ; 0x9c1 if(getStatus()>127 && !isSysEx()){ - 179e6: f083 0280 eor.w r2, r3, #128 ; 0x80 - 179ea: 2a6f cmp r2, #111 ; 0x6f - 179ec: f63f aed9 bhi.w 177a2 - 179f0: f894 29c2 ldrb.w r2, [r4, #2498] ; 0x9c2 + 17b84: f083 0280 eor.w r2, r3, #128 ; 0x80 + 17b88: 2a6f cmp r2, #111 ; 0x6f + 17b8a: f63f af5e bhi.w 17a4a + 17b8e: f894 29c2 ldrb.w r2, [r4, #2498] ; 0x9c2 if(getChannel()==0){ - 179f4: 2a00 cmp r2, #0 - 179f6: f43f aed4 beq.w 177a2 + 17b92: 2a00 cmp r2, #0 + 17b94: f43f af59 beq.w 17a4a event |= (getPort()<<24); - 179fa: f894 19c0 ldrb.w r1, [r4, #2496] ; 0x9c0 + 17b98: f894 19c0 ldrb.w r1, [r4, #2496] ; 0x9c0 event |= ((getChannel()-1) & 0x0F); - 179fe: 3a01 subs r2, #1 - 17a00: ea43 6301 orr.w r3, r3, r1, lsl #24 - 17a04: f002 020f and.w r2, r2, #15 + 17b9c: 3a01 subs r2, #1 + 17b9e: ea43 6301 orr.w r3, r3, r1, lsl #24 + 17ba2: f002 020f and.w r2, r2, #15 event |= (getData1() << 8) | (getData2() << 16); - 17a08: f894 19c3 ldrb.w r1, [r4, #2499] ; 0x9c3 - 17a0c: 4313 orrs r3, r2 - 17a0e: f894 29c4 ldrb.w r2, [r4, #2500] ; 0x9c4 - 17a12: 0412 lsls r2, r2, #16 - 17a14: ea42 2201 orr.w r2, r2, r1, lsl #8 + 17ba6: f894 19c3 ldrb.w r1, [r4, #2499] ; 0x9c3 + 17baa: 4313 orrs r3, r2 + 17bac: f894 29c4 ldrb.w r2, [r4, #2500] ; 0x9c4 + 17bb0: 0412 lsls r2, r2, #16 + 17bb2: ea42 2201 orr.w r2, r2, r1, lsl #8 event |= (getPort()<<24); - 17a18: 431a orrs r2, r3 + 17bb6: 431a orrs r2, r3 if((t_event & 0xF0) == BMC_MIDI_PROGRAM_CHANGE){ - 17a1a: f003 03f0 and.w r3, r3, #240 ; 0xf0 - 17a1e: 2bc0 cmp r3, #192 ; 0xc0 - 17a20: f040 81bc bne.w 17d9c + 17bb8: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 17bbc: 2bc0 cmp r3, #192 ; 0xc0 + 17bbe: f040 8161 bne.w 17e84 channel[ch].program = pc; - 17a24: f002 030f and.w r3, r2, #15 + 17bc2: f002 030f and.w r3, r2, #15 uint8_t pc = BMC_GET_BYTE(1, t_event) & 0x7F; - 17a28: f3c2 2206 ubfx r2, r2, #8, #7 + 17bc6: f3c2 2206 ubfx r2, r2, #8, #7 channel[ch].program = pc; - 17a2c: eb03 1383 add.w r3, r3, r3, lsl #6 - 17a30: eb04 0343 add.w r3, r4, r3, lsl #1 - 17a34: f883 2acd strb.w r2, [r3, #2765] ; 0xacd + 17bca: eb03 1383 add.w r3, r3, r3, lsl #6 + 17bce: eb04 0343 add.w r3, r4, r3, lsl #1 + 17bd2: f883 2acd strb.w r2, [r3, #2765] ; 0xacd } - 17a38: e6b3 b.n 177a2 + 17bd6: e738 b.n 17a4a routing(message); - 17a3a: 4631 mov r1, r6 - 17a3c: 4630 mov r0, r6 - 17a3e: f7fd fd81 bl 15544 + 17bd8: 4631 mov r1, r6 + 17bda: 4630 mov r0, r6 + 17bdc: f7fd fd18 bl 15610 addToLocalData(message); - 17a42: f894 39c1 ldrb.w r3, [r4, #2497] ; 0x9c1 + 17be0: f894 39c1 ldrb.w r3, [r4, #2497] ; 0x9c1 if(getStatus()>127 && !isSysEx()){ - 17a46: f083 0280 eor.w r2, r3, #128 ; 0x80 - 17a4a: 2a6f cmp r2, #111 ; 0x6f - 17a4c: f63f ae79 bhi.w 17742 - 17a50: f894 29c2 ldrb.w r2, [r4, #2498] ; 0x9c2 + 17be4: f083 0280 eor.w r2, r3, #128 ; 0x80 + 17be8: 2a6f cmp r2, #111 ; 0x6f + 17bea: f63f aef1 bhi.w 179d0 + 17bee: f894 29c2 ldrb.w r2, [r4, #2498] ; 0x9c2 if(getChannel()==0){ - 17a54: 2a00 cmp r2, #0 - 17a56: f43f ae74 beq.w 17742 + 17bf2: 2a00 cmp r2, #0 + 17bf4: f43f aeec beq.w 179d0 event |= (getPort()<<24); - 17a5a: f894 19c0 ldrb.w r1, [r4, #2496] ; 0x9c0 + 17bf8: f894 19c0 ldrb.w r1, [r4, #2496] ; 0x9c0 event |= ((getChannel()-1) & 0x0F); - 17a5e: 3a01 subs r2, #1 - 17a60: ea43 6301 orr.w r3, r3, r1, lsl #24 - 17a64: f002 020f and.w r2, r2, #15 + 17bfc: 3a01 subs r2, #1 + 17bfe: ea43 6301 orr.w r3, r3, r1, lsl #24 + 17c02: f002 020f and.w r2, r2, #15 event |= (getData1() << 8) | (getData2() << 16); - 17a68: f894 19c3 ldrb.w r1, [r4, #2499] ; 0x9c3 - 17a6c: 4313 orrs r3, r2 - 17a6e: f894 29c4 ldrb.w r2, [r4, #2500] ; 0x9c4 - 17a72: 0412 lsls r2, r2, #16 - 17a74: ea42 2201 orr.w r2, r2, r1, lsl #8 + 17c06: f894 19c3 ldrb.w r1, [r4, #2499] ; 0x9c3 + 17c0a: 4313 orrs r3, r2 + 17c0c: f894 29c4 ldrb.w r2, [r4, #2500] ; 0x9c4 + 17c10: 0412 lsls r2, r2, #16 + 17c12: ea42 2201 orr.w r2, r2, r1, lsl #8 event |= (getPort()<<24); - 17a78: 431a orrs r2, r3 + 17c16: 431a orrs r2, r3 if((t_event & 0xF0) == BMC_MIDI_PROGRAM_CHANGE){ - 17a7a: f003 03f0 and.w r3, r3, #240 ; 0xf0 - 17a7e: 2bc0 cmp r3, #192 ; 0xc0 - 17a80: f040 817b bne.w 17d7a + 17c18: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 17c1c: 2bc0 cmp r3, #192 ; 0xc0 + 17c1e: f040 8120 bne.w 17e62 channel[ch].program = pc; - 17a84: f002 030f and.w r3, r2, #15 + 17c22: f002 030f and.w r3, r2, #15 uint8_t pc = BMC_GET_BYTE(1, t_event) & 0x7F; - 17a88: f3c2 2206 ubfx r2, r2, #8, #7 + 17c26: f3c2 2206 ubfx r2, r2, #8, #7 channel[ch].program = pc; - 17a8c: eb03 1383 add.w r3, r3, r3, lsl #6 - 17a90: eb04 0343 add.w r3, r4, r3, lsl #1 - 17a94: f883 2acd strb.w r2, [r3, #2765] ; 0xacd + 17c2a: eb03 1383 add.w r3, r3, r3, lsl #6 + 17c2e: eb04 0343 add.w r3, r4, r3, lsl #1 + 17c32: f883 2acd strb.w r2, [r3, #2765] ; 0xacd } - 17a98: e653 b.n 17742 + 17c36: e6cb b.n 179d0 memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 17a9a: 22fe movs r2, #254 ; 0xfe - 17a9c: 4639 mov r1, r7 - 17a9e: 4640 mov r0, r8 - 17aa0: f016 fcf4 bl 2e48c + 17c38: 22fe movs r2, #254 ; 0xfe + 17c3a: 4639 mov r1, r7 + 17c3c: 4650 mov r0, sl + 17c3e: f016 fc99 bl 2e574 } uint8_t getType(void) __attribute__((always_inline)) { return usb_midi_msg_type; - 17aa4: 4bc6 ldr r3, [pc, #792] ; (17dc0 ) + 17c42: 4b14 ldr r3, [pc, #80] ; (17c94 ) bitWrite(ports, sourcePortBit, 1); - 17aa6: f884 99c0 strb.w r9, [r4, #2496] ; 0x9c0 - 17aaa: 781b ldrb r3, [r3, #0] + 17c44: f884 89c0 strb.w r8, [r4, #2496] ; 0x9c0 + 17c48: 781b ldrb r3, [r3, #0] void setChannel(uint8_t t_channel) { channel = t_channel; } - 17aac: f884 79c2 strb.w r7, [r4, #2498] ; 0x9c2 + 17c4a: f884 79c2 strb.w r7, [r4, #2498] ; 0x9c2 switch(getStatus()){ - 17ab0: f103 0208 add.w r2, r3, #8 + 17c4e: f103 0208 add.w r2, r3, #8 void setData1(uint8_t t_data1) { data1 = t_data1; } - 17ab4: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 + 17c52: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 void setData2(uint8_t t_data2) { data2 = t_data2; } - 17ab8: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 + 17c56: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 switch(getStatus()){ - 17abc: b2d2 uxtb r2, r2 + 17c5a: b2d2 uxtb r2, r2 void setStatus(uint8_t t_status) { status = t_status; } - 17abe: f884 39c1 strb.w r3, [r4, #2497] ; 0x9c1 + 17c5c: f884 39c1 strb.w r3, [r4, #2497] ; 0x9c1 switch(getStatus()){ - 17ac2: 2a07 cmp r2, #7 - 17ac4: d829 bhi.n 17b1a - 17ac6: 23dd movs r3, #221 ; 0xdd - 17ac8: 40d3 lsrs r3, r2 - 17aca: 07db lsls r3, r3, #31 - 17acc: f140 8113 bpl.w 17cf6 + 17c60: 2a07 cmp r2, #7 + 17c62: d832 bhi.n 17cca + 17c64: 23dd movs r3, #221 ; 0xdd + 17c66: 40d3 lsrs r3, r2 + 17c68: 07d9 lsls r1, r3, #31 + 17c6a: f140 80cc bpl.w 17e06 return bitRead(flags, bit); - 17ad0: f894 3acc ldrb.w r3, [r4, #2764] ; 0xacc + 17c6e: f894 3acc ldrb.w r3, [r4, #2764] ; 0xacc if(!flags.read(BMC_FLAG_MIDI_REAL_TIME_BLOCK_INPUT)){ - 17ad4: 0798 lsls r0, r3, #30 - 17ad6: d534 bpl.n 17b42 + 17c72: 079a lsls r2, r3, #30 + 17c74: d53c bpl.n 17cf0 memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 17ad8: 22fe movs r2, #254 ; 0xfe - 17ada: 4639 mov r1, r7 - 17adc: 4640 mov r0, r8 - 17ade: f016 fcd5 bl 2e48c + 17c76: 22fe movs r2, #254 ; 0xfe + 17c78: 4639 mov r1, r7 + 17c7a: 4650 mov r0, sl + 17c7c: f016 fc7a bl 2e574 void setStatus(uint8_t t_status) { status = t_status; } - 17ae2: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 - } - 17ae6: e5fe b.n 176e6 + 17c80: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 + } + 17c84: e676 b.n 17974 + 17c86: bf00 nop + 17c88: 2000bb08 .word 0x2000bb08 + 17c8c: 200029f4 .word 0x200029f4 + 17c90: 20004c68 .word 0x20004c68 + 17c94: 2000bcb4 .word 0x2000bcb4 prevTime = 0; - 17ae8: 2300 movs r3, #0 + 17c98: 2300 movs r3, #0 return ports; - 17aea: f896 11e8 ldrb.w r1, [r6, #488] ; 0x1e8 - 17aee: f8c6 31dc str.w r3, [r6, #476] ; 0x1dc + 17c9a: f896 1208 ldrb.w r1, [r6, #520] ; 0x208 + 17c9e: f8c6 31fc str.w r3, [r6, #508] ; 0x1fc if(outTimer.complete() && ports.get()!=BMC_NONE){ - 17af2: 2900 cmp r1, #0 - 17af4: f43f add0 beq.w 17698 + 17ca2: 2900 cmp r1, #0 + 17ca4: f43f ae3f beq.w 17926 midi.sendRealTime(ports.get(), BMC_MIDI_RT_ACTIVE_SENSE); - 17af8: 22fe movs r2, #254 ; 0xfe - 17afa: f8d6 01d4 ldr.w r0, [r6, #468] ; 0x1d4 - 17afe: f00b fadb bl 230b8 + 17ca8: 22fe movs r2, #254 ; 0xfe + 17caa: f8d6 01f4 ldr.w r0, [r6, #500] ; 0x1f4 + 17cae: f00b fa69 bl 23184 interval = value; - 17b02: f44f 7296 mov.w r2, #300 ; 0x12c - 17b06: 683b ldr r3, [r7, #0] - 17b08: f8a6 21d8 strh.w r2, [r6, #472] ; 0x1d8 + 17cb2: f44f 7296 mov.w r2, #300 ; 0x12c + 17cb6: 683b ldr r3, [r7, #0] + 17cb8: f8a6 21f8 strh.w r2, [r6, #504] ; 0x1f8 prevTime = (unsigned long) _BMCTiming::get(); - 17b0c: f8c6 31dc str.w r3, [r6, #476] ; 0x1dc + 17cbc: f8c6 31fc str.w r3, [r6, #508] ; 0x1fc } - 17b10: e5c2 b.n 17698 + 17cc0: e631 b.n 17926 prevTime = 0; - 17b12: 2300 movs r3, #0 - 17b14: f8c6 31e4 str.w r3, [r6, #484] ; 0x1e4 + 17cc2: 2300 movs r3, #0 + 17cc4: f8c6 3204 str.w r3, [r6, #516] ; 0x204 } - 17b18: e5c9 b.n 176ae + 17cc8: e638 b.n 1793c } uint8_t getChannel(void) __attribute__((always_inline)) { return usb_midi_msg_channel; } uint8_t getData1(void) __attribute__((always_inline)) { return usb_midi_msg_data1; - 17b1a: 4aaa ldr r2, [pc, #680] ; (17dc4 ) + 17cca: 4a77 ldr r2, [pc, #476] ; (17ea8 ) return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 17b1c: 2bef cmp r3, #239 ; 0xef + 17ccc: 2bef cmp r3, #239 ; 0xef } uint8_t getData2(void) __attribute__((always_inline)) { return usb_midi_msg_data2; - 17b1e: 49aa ldr r1, [pc, #680] ; (17dc8 ) + 17cce: 4977 ldr r1, [pc, #476] ; (17eac ) return usb_midi_msg_data1; - 17b20: 7812 ldrb r2, [r2, #0] + 17cd0: 7812 ldrb r2, [r2, #0] return usb_midi_msg_data2; - 17b22: 7809 ldrb r1, [r1, #0] + 17cd2: 7809 ldrb r1, [r1, #0] void setData1(uint8_t t_data1) { data1 = t_data1; } - 17b24: f884 29c3 strb.w r2, [r4, #2499] ; 0x9c3 + 17cd4: f884 29c3 strb.w r2, [r4, #2499] ; 0x9c3 void setData2(uint8_t t_data2) { data2 = t_data2; } - 17b28: f884 19c4 strb.w r1, [r4, #2500] ; 0x9c4 + 17cd8: f884 19c4 strb.w r1, [r4, #2500] ; 0x9c4 return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 17b2c: f200 80a6 bhi.w 17c7c + 17cdc: d853 bhi.n 17d86 switch(getStatus()){ - 17b30: 2bb0 cmp r3, #176 ; 0xb0 - 17b32: d011 beq.n 17b58 - 17b34: d80a bhi.n 17b4c - 17b36: 2ba0 cmp r3, #160 ; 0xa0 - 17b38: d00e beq.n 17b58 - 17b3a: f003 00ef and.w r0, r3, #239 ; 0xef - 17b3e: 2880 cmp r0, #128 ; 0x80 - 17b40: d00a beq.n 17b58 + 17cde: 2bb0 cmp r3, #176 ; 0xb0 + 17ce0: d032 beq.n 17d48 + 17ce2: d82b bhi.n 17d3c + 17ce4: 2ba0 cmp r3, #160 ; 0xa0 + 17ce6: d02f beq.n 17d48 + 17ce8: f003 00ef and.w r0, r3, #239 ; 0xef + 17cec: 2880 cmp r0, #128 ; 0x80 + 17cee: d02b beq.n 17d48 routing(message); - 17b42: 4631 mov r1, r6 - 17b44: 4630 mov r0, r6 - 17b46: f7fd fcfd bl 15544 - 17b4a: e5cc b.n 176e6 - 17b4c: 2be0 cmp r3, #224 ; 0xe0 - 17b4e: d003 beq.n 17b58 - 17b50: f003 00ef and.w r0, r3, #239 ; 0xef - 17b54: 28c0 cmp r0, #192 ; 0xc0 - 17b56: d1f4 bne.n 17b42 + 17cf0: 4631 mov r1, r6 + 17cf2: 4630 mov r0, r6 + 17cf4: f7fd fc8c bl 15610 + 17cf8: e63c b.n 17974 + void setData1(uint8_t t_data1) { data1 = t_data1; } + 17cfa: f891 22ff ldrb.w r2, [r1, #767] ; 0x2ff + return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 + 17cfe: 2bef cmp r3, #239 ; 0xef + void setData1(uint8_t t_data1) { data1 = t_data1; } + 17d00: f884 29c3 strb.w r2, [r4, #2499] ; 0x9c3 + void setData2(uint8_t t_data2) { data2 = t_data2; } + 17d04: f891 2300 ldrb.w r2, [r1, #768] ; 0x300 + 17d08: f884 29c4 strb.w r2, [r4, #2500] ; 0x9c4 + return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 + 17d0c: d850 bhi.n 17db0 + switch(getStatus()){ + 17d0e: 2bb0 cmp r3, #176 ; 0xb0 + 17d10: d007 beq.n 17d22 + 17d12: d90b bls.n 17d2c + 17d14: 2be0 cmp r3, #224 ; 0xe0 + 17d16: d004 beq.n 17d22 + 17d18: f003 03ef and.w r3, r3, #239 ; 0xef + 17d1c: 2bc0 cmp r3, #192 ; 0xc0 + 17d1e: f47f af2b bne.w 17b78 + void setChannel(uint8_t t_channel) { channel = t_channel; } + 17d22: f891 32fe ldrb.w r3, [r1, #766] ; 0x2fe + 17d26: f884 39c2 strb.w r3, [r4, #2498] ; 0x9c2 + 17d2a: e725 b.n 17b78 + switch(getStatus()){ + 17d2c: 2ba0 cmp r3, #160 ; 0xa0 + 17d2e: d0f8 beq.n 17d22 + 17d30: f003 03ef and.w r3, r3, #239 ; 0xef + 17d34: 2b80 cmp r3, #128 ; 0x80 + 17d36: f47f af1f bne.w 17b78 + 17d3a: e7f2 b.n 17d22 + 17d3c: 2be0 cmp r3, #224 ; 0xe0 + 17d3e: d003 beq.n 17d48 + 17d40: f003 00ef and.w r0, r3, #239 ; 0xef + 17d44: 28c0 cmp r0, #192 ; 0xc0 + 17d46: d1d3 bne.n 17cf0 return usb_midi_msg_channel; - 17b58: 489c ldr r0, [pc, #624] ; (17dcc ) - 17b5a: 7800 ldrb r0, [r0, #0] + 17d48: 4859 ldr r0, [pc, #356] ; (17eb0 ) + 17d4a: 7800 ldrb r0, [r0, #0] void setChannel(uint8_t t_channel) { channel = t_channel; } - 17b5c: f884 09c2 strb.w r0, [r4, #2498] ; 0x9c2 + 17d4c: f884 09c2 strb.w r0, [r4, #2498] ; 0x9c2 if(getChannel()==0){ - 17b60: 2800 cmp r0, #0 - 17b62: d0ee beq.n 17b42 + 17d50: 2800 cmp r0, #0 + 17d52: d0cd beq.n 17cf0 event |= (getData1() << 8) | (getData2() << 16); - 17b64: 0409 lsls r1, r1, #16 - 17b66: ea41 2202 orr.w r2, r1, r2, lsl #8 + 17d54: 0409 lsls r1, r1, #16 + 17d56: ea41 2202 orr.w r2, r1, r2, lsl #8 event |= ((getChannel()-1) & 0x0F); - 17b6a: 1e41 subs r1, r0, #1 - 17b6c: f001 010f and.w r1, r1, #15 + 17d5a: 1e41 subs r1, r0, #1 + 17d5c: f001 010f and.w r1, r1, #15 event |= (getData1() << 8) | (getData2() << 16); - 17b70: 430a orrs r2, r1 - 17b72: 4313 orrs r3, r2 + 17d60: 430a orrs r2, r1 + 17d62: 4313 orrs r3, r2 event |= (getPort()<<24); - 17b74: f003 02f0 and.w r2, r3, #240 ; 0xf0 - 17b78: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 17d64: f003 02f0 and.w r2, r3, #240 ; 0xf0 + 17d68: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 if((t_event & 0xF0) == BMC_MIDI_PROGRAM_CHANGE){ - 17b7c: 2ac0 cmp r2, #192 ; 0xc0 - 17b7e: f040 80eb bne.w 17d58 + 17d6c: 2ac0 cmp r2, #192 ; 0xc0 + 17d6e: d167 bne.n 17e40 channel[ch].program = pc; - 17b82: f003 020f and.w r2, r3, #15 + 17d70: f003 020f and.w r2, r3, #15 uint8_t pc = BMC_GET_BYTE(1, t_event) & 0x7F; - 17b86: f3c3 2306 ubfx r3, r3, #8, #7 + 17d74: f3c3 2306 ubfx r3, r3, #8, #7 channel[ch].program = pc; - 17b8a: eb02 1282 add.w r2, r2, r2, lsl #6 - 17b8e: eb04 0242 add.w r2, r4, r2, lsl #1 - 17b92: f882 3acd strb.w r3, [r2, #2765] ; 0xacd + 17d78: eb02 1282 add.w r2, r2, r2, lsl #6 + 17d7c: eb04 0242 add.w r2, r4, r2, lsl #1 + 17d80: f882 3acd strb.w r3, [r2, #2765] ; 0xacd } - 17b96: e7d4 b.n 17b42 - void setData1(uint8_t t_data1) { data1 = t_data1; } - 17b98: f893 12ff ldrb.w r1, [r3, #767] ; 0x2ff - return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 17b9c: 2aef cmp r2, #239 ; 0xef - void setData1(uint8_t t_data1) { data1 = t_data1; } - 17b9e: f884 19c3 strb.w r1, [r4, #2499] ; 0x9c3 - void setData2(uint8_t t_data2) { data2 = t_data2; } - 17ba2: f893 1300 ldrb.w r1, [r3, #768] ; 0x300 - 17ba6: f884 19c4 strb.w r1, [r4, #2500] ; 0x9c4 - return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 17baa: d84f bhi.n 17c4c - switch(getStatus()){ - 17bac: 2ab0 cmp r2, #176 ; 0xb0 - 17bae: d007 beq.n 17bc0 - 17bb0: d90b bls.n 17bca - 17bb2: 2ae0 cmp r2, #224 ; 0xe0 - 17bb4: d004 beq.n 17bc0 - 17bb6: f002 02ef and.w r2, r2, #239 ; 0xef - 17bba: 2ac0 cmp r2, #192 ; 0xc0 - 17bbc: f47f af0d bne.w 179da - void setChannel(uint8_t t_channel) { channel = t_channel; } - 17bc0: f893 32fe ldrb.w r3, [r3, #766] ; 0x2fe - 17bc4: f884 39c2 strb.w r3, [r4, #2498] ; 0x9c2 - 17bc8: e707 b.n 179da - switch(getStatus()){ - 17bca: 2aa0 cmp r2, #160 ; 0xa0 - 17bcc: d0f8 beq.n 17bc0 - 17bce: f002 02ef and.w r2, r2, #239 ; 0xef - 17bd2: 2a80 cmp r2, #128 ; 0x80 - 17bd4: f47f af01 bne.w 179da - 17bd8: e7f2 b.n 17bc0 - void setData1(uint8_t t_data1) { data1 = t_data1; } - 17bda: f893 140f ldrb.w r1, [r3, #1039] ; 0x40f - return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 17bde: 2aef cmp r2, #239 ; 0xef - void setData1(uint8_t t_data1) { data1 = t_data1; } - 17be0: f884 19c3 strb.w r1, [r4, #2499] ; 0x9c3 - void setData2(uint8_t t_data2) { data2 = t_data2; } - 17be4: f893 1410 ldrb.w r1, [r3, #1040] ; 0x410 - 17be8: f884 19c4 strb.w r1, [r4, #2500] ; 0x9c4 - return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 17bec: d816 bhi.n 17c1c - switch(getStatus()){ - 17bee: 2ab0 cmp r2, #176 ; 0xb0 - 17bf0: d007 beq.n 17c02 - 17bf2: d90b bls.n 17c0c - 17bf4: 2ae0 cmp r2, #224 ; 0xe0 - 17bf6: d004 beq.n 17c02 - 17bf8: f002 02ef and.w r2, r2, #239 ; 0xef - 17bfc: 2ac0 cmp r2, #192 ; 0xc0 - 17bfe: f47f ae93 bne.w 17928 - void setChannel(uint8_t t_channel) { channel = t_channel; } - 17c02: f893 340e ldrb.w r3, [r3, #1038] ; 0x40e - 17c06: f884 39c2 strb.w r3, [r4, #2498] ; 0x9c2 - 17c0a: e68d b.n 17928 - switch(getStatus()){ - 17c0c: 2aa0 cmp r2, #160 ; 0xa0 - 17c0e: d0f8 beq.n 17c02 - 17c10: f002 02ef and.w r2, r2, #239 ; 0xef - 17c14: 2a80 cmp r2, #128 ; 0x80 - 17c16: f47f ae87 bne.w 17928 - 17c1a: e7f2 b.n 17c02 - if(message.isSystemExclusive()){ - 17c1c: 2af0 cmp r2, #240 ; 0xf0 - 17c1e: f47f ae83 bne.w 17928 - void setData1(uint8_t t_data1) { data1 = t_data1; } - 17c22: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 - void setData2(uint8_t t_data2) { data2 = t_data2; } - 17c26: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 - if(sysexLen <= BMC_MIDI_SYSEX_SIZE){ - 17c2a: f8b3 9510 ldrh.w r9, [r3, #1296] ; 0x510 - 17c2e: f1b9 0ffe cmp.w r9, #254 ; 0xfe - 17c32: d86f bhi.n 17d14 - if(length < BMC_MIDI_SYSEX_SIZE){ - 17c34: f43f ae78 beq.w 17928 - memcpy(sysex, data, length); - 17c38: f242 4111 movw r1, #9233 ; 0x2411 - 17c3c: 4640 mov r0, r8 - 17c3e: 464a mov r2, r9 - 17c40: 4429 add r1, r5 - 17c42: f012 fd61 bl 2a708 - setData1(value & 0xFF); - 17c46: f884 99c3 strb.w r9, [r4, #2499] ; 0x9c3 - setData2((value >> 8) & 0xFF); - 17c4a: e66d b.n 17928 - if(message.isSystemExclusive()){ - 17c4c: 2af0 cmp r2, #240 ; 0xf0 - 17c4e: f47f aec4 bne.w 179da - void setData1(uint8_t t_data1) { data1 = t_data1; } - 17c52: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 - void setData2(uint8_t t_data2) { data2 = t_data2; } - 17c56: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 - if(sysexLen <= BMC_MIDI_SYSEX_SIZE){ - 17c5a: f8b3 a400 ldrh.w sl, [r3, #1024] ; 0x400 - 17c5e: f1ba 0ffe cmp.w sl, #254 ; 0xfe - 17c62: d854 bhi.n 17d0e - if(length < BMC_MIDI_SYSEX_SIZE){ - 17c64: f43f aeb9 beq.w 179da - memcpy(sysex, data, length); - 17c68: f242 3101 movw r1, #8961 ; 0x2301 - 17c6c: 4652 mov r2, sl - 17c6e: 4640 mov r0, r8 - 17c70: 4429 add r1, r5 - 17c72: f012 fd49 bl 2a708 - setData1(value & 0xFF); - 17c76: f884 a9c3 strb.w sl, [r4, #2499] ; 0x9c3 - setData2((value >> 8) & 0xFF); - 17c7a: e6ae b.n 179da + 17d84: e7b4 b.n 17cf0 if(message.isSystemExclusive()){ - 17c7c: 2bf0 cmp r3, #240 ; 0xf0 - 17c7e: f47f af60 bne.w 17b42 + 17d86: 2bf0 cmp r3, #240 ; 0xf0 + 17d88: d1b2 bne.n 17cf0 } uint8_t * getSysExArray(void) __attribute__((always_inline)) { return usb_midi_msg_sysex; } uint16_t getSysExArrayLength(void) __attribute__((always_inline)) { return usb_midi_msg_data2 << 8 | usb_midi_msg_data1; - 17c82: ea42 2301 orr.w r3, r2, r1, lsl #8 + 17d8a: ea42 2301 orr.w r3, r2, r1, lsl #8 void setData1(uint8_t t_data1) { data1 = t_data1; } - 17c86: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 + 17d8e: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 void setData2(uint8_t t_data2) { data2 = t_data2; } - 17c8a: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 + 17d92: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 if(usbMIDI.getSysExArrayLength() <= BMC_MIDI_SYSEX_SIZE){ - 17c8e: 2bfe cmp r3, #254 ; 0xfe - 17c90: 461a mov r2, r3 - 17c92: fa0f f983 sxth.w r9, r3 - 17c96: d837 bhi.n 17d08 + 17d96: 2bfe cmp r3, #254 ; 0xfe + 17d98: 461a mov r2, r3 + 17d9a: fa0f f883 sxth.w r8, r3 + 17d9e: d83e bhi.n 17e1e if(length < BMC_MIDI_SYSEX_SIZE){ - 17c98: f43f af53 beq.w 17b42 + 17da0: d0a6 beq.n 17cf0 memcpy(sysex, data, length); - 17c9c: 494c ldr r1, [pc, #304] ; (17dd0 ) - 17c9e: 4640 mov r0, r8 - 17ca0: f012 fd32 bl 2a708 + 17da2: 4944 ldr r1, [pc, #272] ; (17eb4 ) + 17da4: 4650 mov r0, sl + 17da6: f012 fd23 bl 2a7f0 setData1(value & 0xFF); - 17ca4: f884 99c3 strb.w r9, [r4, #2499] ; 0x9c3 + 17daa: f884 89c3 strb.w r8, [r4, #2499] ; 0x9c3 } - 17ca8: e74b b.n 17b42 - memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 17caa: 4640 mov r0, r8 - 17cac: 22fe movs r2, #254 ; 0xfe - 17cae: 4639 mov r1, r7 - 17cb0: f016 fbec bl 2e48c - void setStatus(uint8_t t_status) { status = t_status; } - 17cb4: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 - bitWrite(ports, sourcePortBit, 1); - 17cb8: f884 b9c0 strb.w fp, [r4, #2496] ; 0x9c0 - 17cbc: e59d b.n 177fa + 17dae: e79f b.n 17cf0 + if(message.isSystemExclusive()){ + 17db0: 2bf0 cmp r3, #240 ; 0xf0 + 17db2: f47f aee1 bne.w 17b78 + void setData1(uint8_t t_data1) { data1 = t_data1; } + 17db6: f884 79c3 strb.w r7, [r4, #2499] ; 0x9c3 + void setData2(uint8_t t_data2) { data2 = t_data2; } + 17dba: f884 79c4 strb.w r7, [r4, #2500] ; 0x9c4 + if(sysexLen <= BMC_MIDI_SYSEX_SIZE){ + 17dbe: f8b1 8400 ldrh.w r8, [r1, #1024] ; 0x400 + 17dc2: f1b8 0ffe cmp.w r8, #254 ; 0xfe + 17dc6: d827 bhi.n 17e18 + if(length < BMC_MIDI_SYSEX_SIZE){ + 17dc8: f43f aed6 beq.w 17b78 + memcpy(sysex, data, length); + 17dcc: f242 3101 movw r1, #8961 ; 0x2301 + 17dd0: 4650 mov r0, sl + 17dd2: 4642 mov r2, r8 + 17dd4: 4429 add r1, r5 + 17dd6: f012 fd0b bl 2a7f0 + setData1(value & 0xFF); + 17dda: f884 89c3 strb.w r8, [r4, #2499] ; 0x9c3 + setData2((value >> 8) & 0xFF); + 17dde: e6cb b.n 17b78 memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 17cbe: 22fe movs r2, #254 ; 0xfe - 17cc0: 4639 mov r1, r7 - 17cc2: 4640 mov r0, r8 - 17cc4: f016 fbe2 bl 2e48c + 17de0: 4650 mov r0, sl + 17de2: 22fe movs r2, #254 ; 0xfe + 17de4: 4639 mov r1, r7 + 17de6: f016 fbc5 bl 2e574 void setStatus(uint8_t t_status) { status = t_status; } - 17cc8: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 + 17dea: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 bitWrite(ports, sourcePortBit, 1); - 17ccc: f884 b9c0 strb.w fp, [r4, #2496] ; 0x9c0 - 17cd0: e567 b.n 177a2 - void setData1(uint8_t t_data1) { data1 = t_data1; } - 17cd2: f893 240f ldrb.w r2, [r3, #1039] ; 0x40f - 17cd6: f884 29c3 strb.w r2, [r4, #2499] ; 0x9c3 - void setData2(uint8_t t_data2) { data2 = t_data2; } - 17cda: f893 3410 ldrb.w r3, [r3, #1040] ; 0x410 - 17cde: f884 39c4 strb.w r3, [r4, #2500] ; 0x9c4 - return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 17ce2: e621 b.n 17928 + 17dee: f884 b9c0 strb.w fp, [r4, #2496] ; 0x9c0 + 17df2: e62a b.n 17a4a void setData1(uint8_t t_data1) { data1 = t_data1; } - 17ce4: f893 22ff ldrb.w r2, [r3, #767] ; 0x2ff - 17ce8: f884 29c3 strb.w r2, [r4, #2499] ; 0x9c3 + 17df4: f891 32ff ldrb.w r3, [r1, #767] ; 0x2ff + 17df8: f884 39c3 strb.w r3, [r4, #2499] ; 0x9c3 void setData2(uint8_t t_data2) { data2 = t_data2; } - 17cec: f893 3300 ldrb.w r3, [r3, #768] ; 0x300 - 17cf0: f884 39c4 strb.w r3, [r4, #2500] ; 0x9c4 + 17dfc: f891 3300 ldrb.w r3, [r1, #768] ; 0x300 + 17e00: f884 39c4 strb.w r3, [r4, #2500] ; 0x9c4 return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 17cf4: e671 b.n 179da + 17e04: e6b8 b.n 17b78 return usb_midi_msg_data1; - 17cf6: 4b33 ldr r3, [pc, #204] ; (17dc4 ) + 17e06: 4b28 ldr r3, [pc, #160] ; (17ea8 ) void setData1(uint8_t t_data1) { data1 = t_data1; } - 17cf8: 781b ldrb r3, [r3, #0] - 17cfa: f884 39c3 strb.w r3, [r4, #2499] ; 0x9c3 + 17e08: 781b ldrb r3, [r3, #0] + 17e0a: f884 39c3 strb.w r3, [r4, #2499] ; 0x9c3 return usb_midi_msg_data2; - 17cfe: 4b32 ldr r3, [pc, #200] ; (17dc8 ) + 17e0e: 4b27 ldr r3, [pc, #156] ; (17eac ) void setData2(uint8_t t_data2) { data2 = t_data2; } - 17d00: 781b ldrb r3, [r3, #0] - 17d02: f884 39c4 strb.w r3, [r4, #2500] ; 0x9c4 + 17e10: 781b ldrb r3, [r3, #0] + 17e12: f884 39c4 strb.w r3, [r4, #2500] ; 0x9c4 return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 17d06: e71c b.n 17b42 + 17e16: e76b b.n 17cf0 void setStatus(uint8_t t_status) { status = t_status; } - 17d08: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 - 17d0c: e719 b.n 17b42 - 17d0e: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 - 17d12: e662 b.n 179da - 17d14: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 - 17d18: e606 b.n 17928 + 17e18: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 + 17e1c: e6ac b.n 17b78 + 17e1e: f884 79c1 strb.w r7, [r4, #2497] ; 0x9c1 + 17e22: e765 b.n 17cf0 if(timer.active()){ - 17d1a: f8d6 17c4 ldr.w r1, [r6, #1988] ; 0x7c4 - 17d1e: 2900 cmp r1, #0 - 17d20: f47f adbd bne.w 1789e + 17e24: f8d6 17e4 ldr.w r1, [r6, #2020] ; 0x7e4 + 17e28: 2900 cmp r1, #0 + 17e2a: f47f ae60 bne.w 17aee bitClear(flags, bit); - 17d24: f896 17c8 ldrb.w r1, [r6, #1992] ; 0x7c8 - 17d28: e5a3 b.n 17872 - 17d2a: f021 0102 bic.w r1, r1, #2 - 17d2e: f886 17c8 strb.w r1, [r6, #1992] ; 0x7c8 - 17d32: 8813 ldrh r3, [r2, #0] + 17e2e: f896 17e8 ldrb.w r1, [r6, #2024] ; 0x7e8 + 17e32: e646 b.n 17ac2 + 17e34: f021 0102 bic.w r1, r1, #2 + 17e38: f886 17e8 strb.w r1, [r6, #2024] ; 0x7e8 + 17e3c: 8813 ldrh r3, [r2, #0] return; - 17d34: e5b3 b.n 1789e - } else if((t_event & 0xF0) == BMC_MIDI_CONTROL_CHANGE){ - 17d36: 2bb0 cmp r3, #176 ; 0xb0 - 17d38: f47f ad5f bne.w 177fa - channel[ch].control[cc] = value; - 17d3c: f002 030f and.w r3, r2, #15 - uint8_t value = BMC_GET_BYTE(2, t_event) & 0x7F; - 17d40: f3c2 4106 ubfx r1, r2, #16, #7 - channel[ch].control[cc] = value; - 17d44: f3c2 2206 ubfx r2, r2, #8, #7 - 17d48: eb03 1383 add.w r3, r3, r3, lsl #6 - 17d4c: eb04 0343 add.w r3, r4, r3, lsl #1 - 17d50: 4413 add r3, r2 - 17d52: f883 1acf strb.w r1, [r3, #2767] ; 0xacf - } - 17d56: e550 b.n 177fa + 17e3e: e656 b.n 17aee } else if((t_event & 0xF0) == BMC_MIDI_CONTROL_CHANGE){ - 17d58: 2ab0 cmp r2, #176 ; 0xb0 - 17d5a: f47f aef2 bne.w 17b42 + 17e40: 2ab0 cmp r2, #176 ; 0xb0 + 17e42: f47f af55 bne.w 17cf0 channel[ch].control[cc] = value; - 17d5e: f003 020f and.w r2, r3, #15 - 17d62: f3c3 2106 ubfx r1, r3, #8, #7 + 17e46: f003 020f and.w r2, r3, #15 + 17e4a: f3c3 2106 ubfx r1, r3, #8, #7 uint8_t value = BMC_GET_BYTE(2, t_event) & 0x7F; - 17d66: f3c3 4306 ubfx r3, r3, #16, #7 + 17e4e: f3c3 4306 ubfx r3, r3, #16, #7 channel[ch].control[cc] = value; - 17d6a: eb02 1282 add.w r2, r2, r2, lsl #6 - 17d6e: eb04 0242 add.w r2, r4, r2, lsl #1 - 17d72: 440a add r2, r1 - 17d74: f882 3acf strb.w r3, [r2, #2767] ; 0xacf + 17e52: eb02 1282 add.w r2, r2, r2, lsl #6 + 17e56: eb04 0242 add.w r2, r4, r2, lsl #1 + 17e5a: 440a add r2, r1 + 17e5c: f882 3acf strb.w r3, [r2, #2767] ; 0xacf } - 17d78: e6e3 b.n 17b42 + 17e60: e746 b.n 17cf0 } else if((t_event & 0xF0) == BMC_MIDI_CONTROL_CHANGE){ - 17d7a: 2bb0 cmp r3, #176 ; 0xb0 - 17d7c: f47f ace1 bne.w 17742 + 17e62: 2bb0 cmp r3, #176 ; 0xb0 + 17e64: f47f adb4 bne.w 179d0 channel[ch].control[cc] = value; - 17d80: f002 030f and.w r3, r2, #15 - 17d84: f3c2 2106 ubfx r1, r2, #8, #7 + 17e68: f002 030f and.w r3, r2, #15 + 17e6c: f3c2 2106 ubfx r1, r2, #8, #7 uint8_t value = BMC_GET_BYTE(2, t_event) & 0x7F; - 17d88: f3c2 4206 ubfx r2, r2, #16, #7 + 17e70: f3c2 4206 ubfx r2, r2, #16, #7 channel[ch].control[cc] = value; - 17d8c: eb03 1383 add.w r3, r3, r3, lsl #6 - 17d90: eb04 0343 add.w r3, r4, r3, lsl #1 - 17d94: 440b add r3, r1 - 17d96: f883 2acf strb.w r2, [r3, #2767] ; 0xacf + 17e74: eb03 1383 add.w r3, r3, r3, lsl #6 + 17e78: eb04 0343 add.w r3, r4, r3, lsl #1 + 17e7c: 440b add r3, r1 + 17e7e: f883 2acf strb.w r2, [r3, #2767] ; 0xacf } - 17d9a: e4d2 b.n 17742 + 17e82: e5a5 b.n 179d0 } else if((t_event & 0xF0) == BMC_MIDI_CONTROL_CHANGE){ - 17d9c: 2bb0 cmp r3, #176 ; 0xb0 - 17d9e: f47f ad00 bne.w 177a2 + 17e84: 2bb0 cmp r3, #176 ; 0xb0 + 17e86: f47f ade0 bne.w 17a4a channel[ch].control[cc] = value; - 17da2: f002 030f and.w r3, r2, #15 - 17da6: f3c2 2106 ubfx r1, r2, #8, #7 + 17e8a: f002 030f and.w r3, r2, #15 uint8_t value = BMC_GET_BYTE(2, t_event) & 0x7F; - 17daa: f3c2 4206 ubfx r2, r2, #16, #7 + 17e8e: f3c2 4106 ubfx r1, r2, #16, #7 channel[ch].control[cc] = value; - 17dae: eb03 1383 add.w r3, r3, r3, lsl #6 - 17db2: eb04 0343 add.w r3, r4, r3, lsl #1 - 17db6: 440b add r3, r1 - 17db8: f883 2acf strb.w r2, [r3, #2767] ; 0xacf - } - 17dbc: e4f1 b.n 177a2 - 17dbe: bf00 nop - 17dc0: 2000bc94 .word 0x2000bc94 - 17dc4: 2000bc92 .word 0x2000bc92 - 17dc8: 2000bc93 .word 0x2000bc93 - 17dcc: 2000bc91 .word 0x2000bc91 - 17dd0: 2000bb40 .word 0x2000bb40 - -00017dd4 : + 17e92: f3c2 2206 ubfx r2, r2, #8, #7 + 17e96: eb03 1383 add.w r3, r3, r3, lsl #6 + 17e9a: eb04 0343 add.w r3, r4, r3, lsl #1 + 17e9e: 4413 add r3, r2 + 17ea0: f883 1acf strb.w r1, [r3, #2767] ; 0xacf + } + 17ea4: e5d1 b.n 17a4a + 17ea6: bf00 nop + 17ea8: 2000bcb2 .word 0x2000bcb2 + 17eac: 2000bcb3 .word 0x2000bcb3 + 17eb0: 2000bcb1 .word 0x2000bcb1 + 17eb4: 2000bb60 .word 0x2000bb60 + +00017eb8 : #include // sketch bytes #if BMC_MAX_SKETCH_BYTES > 0 void BMC::setSketchByte(uint8_t n, uint8_t value){ if(n < BMC_MAX_SKETCH_BYTES){ - 17dd4: 2903 cmp r1, #3 - 17dd6: d900 bls.n 17dda - 17dd8: 4770 bx lr + 17eb8: 2903 cmp r1, #3 + 17eba: d900 bls.n 17ebe + 17ebc: 4770 bx lr void BMC::setSketchByte(uint8_t n, uint8_t value){ - 17dda: b570 push {r4, r5, r6, lr} - 17ddc: b088 sub sp, #32 - 17dde: 4605 mov r5, r0 - 17de0: 4616 mov r6, r2 - 17de2: 460c mov r4, r1 + 17ebe: b570 push {r4, r5, r6, lr} + 17ec0: b088 sub sp, #32 + 17ec2: 4605 mov r5, r0 + 17ec4: 4616 mov r6, r2 + 17ec6: 460c mov r4, r1 BMCSketchByteData data = BMCBuildData::getSketchByteData(n); - 17de4: a801 add r0, sp, #4 - 17de6: f7ef fc3d bl 7664 + 17ec8: a801 add r0, sp, #4 + 17eca: f7ef fb9b bl 7604 store.global.sketchBytes[0].events[n] = constrain(value, data.min, data.max); - 17dea: f89d 301a ldrb.w r3, [sp, #26] - 17dee: f89d 201b ldrb.w r2, [sp, #27] - 17df2: 429e cmp r6, r3 - 17df4: d303 bcc.n 17dfe - 17df6: 4296 cmp r6, r2 - 17df8: 4633 mov r3, r6 - 17dfa: bf28 it cs - 17dfc: 4613 movcs r3, r2 - 17dfe: 1928 adds r0, r5, r4 - 17e00: f880 3f29 strb.w r3, [r0, #3881] ; 0xf29 - } -} - 17e04: b008 add sp, #32 - 17e06: bd70 pop {r4, r5, r6, pc} - -00017e08 : + 17ece: f89d 301a ldrb.w r3, [sp, #26] + 17ed2: f89d 201b ldrb.w r2, [sp, #27] + 17ed6: 429e cmp r6, r3 + 17ed8: d303 bcc.n 17ee2 + 17eda: 4296 cmp r6, r2 + 17edc: 4633 mov r3, r6 + 17ede: bf28 it cs + 17ee0: 4613 movcs r3, r2 + 17ee2: 1928 adds r0, r5, r4 + 17ee4: f880 3f29 strb.w r3, [r0, #3881] ; 0xf29 + } +} + 17ee8: b008 add sp, #32 + 17eea: bd70 pop {r4, r5, r6, pc} + +00017eec : callback.storeUpdated(); } } // sketch bytes uint8_t BMC::getSketchByte(uint8_t n){ if(n + 17eec: 2903 cmp r1, #3 + 17eee: d901 bls.n 17ef4 BMCSketchByteData data = BMCBuildData::getSketchByteData(n); uint8_t value = store.global.sketchBytes[0].events[n]; return constrain(value, data.min, data.max); } return 0; - 17e0c: 2000 movs r0, #0 + 17ef0: 2000 movs r0, #0 } - 17e0e: 4770 bx lr + 17ef2: 4770 bx lr uint8_t BMC::getSketchByte(uint8_t n){ - 17e10: b530 push {r4, r5, lr} - 17e12: 460c mov r4, r1 - 17e14: 4605 mov r5, r0 - 17e16: b089 sub sp, #36 ; 0x24 + 17ef4: b530 push {r4, r5, lr} + 17ef6: 460c mov r4, r1 + 17ef8: 4605 mov r5, r0 + 17efa: b089 sub sp, #36 ; 0x24 uint8_t value = store.global.sketchBytes[0].events[n]; - 17e18: 4425 add r5, r4 + 17efc: 4425 add r5, r4 BMCSketchByteData data = BMCBuildData::getSketchByteData(n); - 17e1a: a801 add r0, sp, #4 - 17e1c: f7ef fc22 bl 7664 + 17efe: a801 add r0, sp, #4 + 17f00: f7ef fb80 bl 7604 return constrain(value, data.min, data.max); - 17e20: f89d 001a ldrb.w r0, [sp, #26] + 17f04: f89d 001a ldrb.w r0, [sp, #26] uint8_t value = store.global.sketchBytes[0].events[n]; - 17e24: f895 3f29 ldrb.w r3, [r5, #3881] ; 0xf29 + 17f08: f895 3f29 ldrb.w r3, [r5, #3881] ; 0xf29 return constrain(value, data.min, data.max); - 17e28: f89d 201b ldrb.w r2, [sp, #27] - 17e2c: 4283 cmp r3, r0 - 17e2e: d303 bcc.n 17e38 - 17e30: 4293 cmp r3, r2 - 17e32: bf28 it cs - 17e34: 4613 movcs r3, r2 - 17e36: 4618 mov r0, r3 -} - 17e38: b009 add sp, #36 ; 0x24 - 17e3a: bd30 pop {r4, r5, pc} - -00017e3c : + 17f0c: f89d 201b ldrb.w r2, [sp, #27] + 17f10: 4283 cmp r3, r0 + 17f12: d303 bcc.n 17f1c + 17f14: 4293 cmp r3, r2 + 17f16: bf28 it cs + 17f18: 4613 movcs r3, r2 + 17f1a: 4618 mov r0, r3 +} + 17f1c: b009 add sp, #36 ; 0x24 + 17f1e: bd30 pop {r4, r5, pc} + +00017f20 : void BMC::streamToSketch(uint8_t t_id, int t_value, char* str){ - 17e3c: b5f0 push {r4, r5, r6, r7, lr} + 17f20: b5f0 push {r4, r5, r6, r7, lr} if(callback.valueStream){ - 17e3e: f500 5580 add.w r5, r0, #4096 ; 0x1000 + 17f22: f500 5580 add.w r5, r0, #4096 ; 0x1000 void BMC::streamToSketch(uint8_t t_id, int t_value, char* str){ - 17e42: b095 sub sp, #84 ; 0x54 + 17f26: b095 sub sp, #84 ; 0x54 if(callback.valueStream){ - 17e44: f8d5 78c4 ldr.w r7, [r5, #2244] ; 0x8c4 - 17e48: b3bf cbz r7, 17eba - 17e4a: 461e mov r6, r3 + 17f28: f8d5 78c4 ldr.w r7, [r5, #2244] ; 0x8c4 + 17f2c: b3bf cbz r7, 17f9e + 17f2e: 461e mov r6, r3 BMCValueStream item; item.id = t_id; item.value = t_value; if(t_id==BMC_DEVICE_ID_LAYER && strlen(BMC_STREAM_TEMPL_LAYER)+strlen(str)<30){ - 17e4c: 2901 cmp r1, #1 + 17f30: 2901 cmp r1, #1 struct BMCValueStream { - 17e4e: f04f 0300 mov.w r3, #0 - 17e52: 4614 mov r4, r2 - 17e54: 4630 mov r0, r6 + 17f32: f04f 0300 mov.w r3, #0 + 17f36: 4614 mov r4, r2 + 17f38: 4630 mov r0, r6 item.id = t_id; - 17e56: f88d 1025 strb.w r1, [sp, #37] ; 0x25 + 17f3a: f88d 1025 strb.w r1, [sp, #37] ; 0x25 item.value = t_value; - 17e5a: 920a str r2, [sp, #40] ; 0x28 - 17e5c: f88d 3024 strb.w r3, [sp, #36] ; 0x24 - 17e60: 930b str r3, [sp, #44] ; 0x2c + 17f3e: 920a str r2, [sp, #40] ; 0x28 + 17f40: f88d 3024 strb.w r3, [sp, #36] ; 0x24 + 17f44: 930b str r3, [sp, #44] ; 0x2c if(t_id==BMC_DEVICE_ID_LAYER && strlen(BMC_STREAM_TEMPL_LAYER)+strlen(str)<30){ - 17e62: d013 beq.n 17e8c + 17f46: d013 beq.n 17f70 sprintf(item.name, BMC_STREAM_TEMPL_LAYER, (uint8_t) (t_value+1), str); } else if(t_id==BMC_DEVICE_ID_PRESET && strlen(BMC_STREAM_TEMPL_PRESET)+strlen(str)<30){ - 17e64: 291d cmp r1, #29 - 17e66: d02a beq.n 17ebe + 17f48: 291d cmp r1, #29 + 17f4a: d02a beq.n 17fa2 sprintf(item.name, BMC_STREAM_TEMPL_PRESET,(uint8_t) (t_value+1), str); } else if(t_id==BMC_DEVICE_ID_SETLIST && strlen(BMC_STREAM_TEMPL_SETLIST)+strlen(str)<30){ - 17e68: 291e cmp r1, #30 - 17e6a: d138 bne.n 17ede - 17e6c: f016 fe68 bl 2eb40 - 17e70: f100 030f add.w r3, r0, #15 - 17e74: 2b1d cmp r3, #29 - 17e76: d80f bhi.n 17e98 + 17f4c: 291e cmp r1, #30 + 17f4e: d138 bne.n 17fc2 + 17f50: f016 fe76 bl 2ec40 + 17f54: f100 030f add.w r3, r0, #15 + 17f58: 2b1d cmp r3, #29 + 17f5a: d80f bhi.n 17f7c sprintf(item.name, BMC_STREAM_TEMPL_SETLIST,(uint8_t) (t_value+1), str); - 17e78: 1c62 adds r2, r4, #1 - 17e7a: 4633 mov r3, r6 - 17e7c: 492a ldr r1, [pc, #168] ; (17f28 ) - 17e7e: a80c add r0, sp, #48 ; 0x30 - 17e80: b2d2 uxtb r2, r2 - 17e82: f016 f983 bl 2e18c + 17f5c: 1c62 adds r2, r4, #1 + 17f5e: 4633 mov r3, r6 + 17f60: 492a ldr r1, [pc, #168] ; (1800c ) + 17f62: a80c add r0, sp, #48 ; 0x30 + 17f64: b2d2 uxtb r2, r2 + 17f66: f016 f985 bl 2e274 } else if(t_id==BMC_DEVICE_ID_SETLIST_SONG && strlen(BMC_STREAM_TEMPL_SETLIST_SONG)+strlen(str)<30){ sprintf(item.name, BMC_STREAM_TEMPL_SETLIST_SONG,(uint8_t) (t_value+1), str); } else if(strlen(str)<30){ strcpy(item.name, str); } callback.valueStream(item); - 17e86: f8d5 78c4 ldr.w r7, [r5, #2244] ; 0x8c4 + 17f6a: f8d5 78c4 ldr.w r7, [r5, #2244] ; 0x8c4 sprintf(item.name, BMC_STREAM_TEMPL_SETLIST,(uint8_t) (t_value+1), str); - 17e8a: e007 b.n 17e9c + 17f6e: e007 b.n 17f80 if(t_id==BMC_DEVICE_ID_LAYER && strlen(BMC_STREAM_TEMPL_LAYER)+strlen(str)<30){ - 17e8c: f016 fe58 bl 2eb40 - 17e90: f100 030d add.w r3, r0, #13 - 17e94: 2b1d cmp r3, #29 - 17e96: d934 bls.n 17f02 + 17f70: f016 fe66 bl 2ec40 + 17f74: f100 030d add.w r3, r0, #13 + 17f78: 2b1d cmp r3, #29 + 17f7a: d934 bls.n 17fe6 } else if(strlen(str)<30){ - 17e98: 281d cmp r0, #29 - 17e9a: d93c bls.n 17f16 + 17f7c: 281d cmp r0, #29 + 17f7e: d93c bls.n 17ffa callback.valueStream(item); - 17e9c: f10d 0e34 add.w lr, sp, #52 ; 0x34 - 17ea0: 46ec mov ip, sp - 17ea2: ac09 add r4, sp, #36 ; 0x24 - 17ea4: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 17ea8: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - 17eac: e89e 0007 ldmia.w lr, {r0, r1, r2} - 17eb0: e88c 0007 stmia.w ip, {r0, r1, r2} - 17eb4: e894 000f ldmia.w r4, {r0, r1, r2, r3} - 17eb8: 47b8 blx r7 - } -} - 17eba: b015 add sp, #84 ; 0x54 - 17ebc: bdf0 pop {r4, r5, r6, r7, pc} + 17f80: f10d 0e34 add.w lr, sp, #52 ; 0x34 + 17f84: 46ec mov ip, sp + 17f86: ac09 add r4, sp, #36 ; 0x24 + 17f88: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 17f8c: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 17f90: e89e 0007 ldmia.w lr, {r0, r1, r2} + 17f94: e88c 0007 stmia.w ip, {r0, r1, r2} + 17f98: e894 000f ldmia.w r4, {r0, r1, r2, r3} + 17f9c: 47b8 blx r7 + } +} + 17f9e: b015 add sp, #84 ; 0x54 + 17fa0: bdf0 pop {r4, r5, r6, r7, pc} } else if(t_id==BMC_DEVICE_ID_PRESET && strlen(BMC_STREAM_TEMPL_PRESET)+strlen(str)<30){ - 17ebe: f016 fe3f bl 2eb40 - 17ec2: f100 030e add.w r3, r0, #14 - 17ec6: 2b1d cmp r3, #29 - 17ec8: d8e6 bhi.n 17e98 + 17fa2: f016 fe4d bl 2ec40 + 17fa6: f100 030e add.w r3, r0, #14 + 17faa: 2b1d cmp r3, #29 + 17fac: d8e6 bhi.n 17f7c sprintf(item.name, BMC_STREAM_TEMPL_PRESET,(uint8_t) (t_value+1), str); - 17eca: 1c62 adds r2, r4, #1 - 17ecc: 4633 mov r3, r6 - 17ece: 4917 ldr r1, [pc, #92] ; (17f2c ) - 17ed0: a80c add r0, sp, #48 ; 0x30 - 17ed2: b2d2 uxtb r2, r2 - 17ed4: f016 f95a bl 2e18c + 17fae: 1c62 adds r2, r4, #1 + 17fb0: 4633 mov r3, r6 + 17fb2: 4917 ldr r1, [pc, #92] ; (18010 ) + 17fb4: a80c add r0, sp, #48 ; 0x30 + 17fb6: b2d2 uxtb r2, r2 + 17fb8: f016 f95c bl 2e274 callback.valueStream(item); - 17ed8: f8d5 78c4 ldr.w r7, [r5, #2244] ; 0x8c4 + 17fbc: f8d5 78c4 ldr.w r7, [r5, #2244] ; 0x8c4 sprintf(item.name, BMC_STREAM_TEMPL_PRESET,(uint8_t) (t_value+1), str); - 17edc: e7de b.n 17e9c + 17fc0: e7de b.n 17f80 } else if(t_id==BMC_DEVICE_ID_SETLIST_SONG && strlen(BMC_STREAM_TEMPL_SETLIST_SONG)+strlen(str)<30){ - 17ede: 291f cmp r1, #31 - 17ee0: d11e bne.n 17f20 - 17ee2: f016 fe2d bl 2eb40 - 17ee6: f100 030c add.w r3, r0, #12 - 17eea: 2b1d cmp r3, #29 - 17eec: d8d4 bhi.n 17e98 + 17fc2: 291f cmp r1, #31 + 17fc4: d11e bne.n 18004 + 17fc6: f016 fe3b bl 2ec40 + 17fca: f100 030c add.w r3, r0, #12 + 17fce: 2b1d cmp r3, #29 + 17fd0: d8d4 bhi.n 17f7c sprintf(item.name, BMC_STREAM_TEMPL_SETLIST_SONG,(uint8_t) (t_value+1), str); - 17eee: 1c62 adds r2, r4, #1 - 17ef0: 4633 mov r3, r6 - 17ef2: 490f ldr r1, [pc, #60] ; (17f30 ) - 17ef4: a80c add r0, sp, #48 ; 0x30 - 17ef6: b2d2 uxtb r2, r2 - 17ef8: f016 f948 bl 2e18c + 17fd2: 1c62 adds r2, r4, #1 + 17fd4: 4633 mov r3, r6 + 17fd6: 490f ldr r1, [pc, #60] ; (18014 ) + 17fd8: a80c add r0, sp, #48 ; 0x30 + 17fda: b2d2 uxtb r2, r2 + 17fdc: f016 f94a bl 2e274 callback.valueStream(item); - 17efc: f8d5 78c4 ldr.w r7, [r5, #2244] ; 0x8c4 + 17fe0: f8d5 78c4 ldr.w r7, [r5, #2244] ; 0x8c4 sprintf(item.name, BMC_STREAM_TEMPL_SETLIST_SONG,(uint8_t) (t_value+1), str); - 17f00: e7cc b.n 17e9c + 17fe4: e7cc b.n 17f80 sprintf(item.name, BMC_STREAM_TEMPL_LAYER, (uint8_t) (t_value+1), str); - 17f02: 1c62 adds r2, r4, #1 - 17f04: 4633 mov r3, r6 - 17f06: 490b ldr r1, [pc, #44] ; (17f34 ) - 17f08: a80c add r0, sp, #48 ; 0x30 - 17f0a: b2d2 uxtb r2, r2 - 17f0c: f016 f93e bl 2e18c + 17fe6: 1c62 adds r2, r4, #1 + 17fe8: 4633 mov r3, r6 + 17fea: 490b ldr r1, [pc, #44] ; (18018 ) + 17fec: a80c add r0, sp, #48 ; 0x30 + 17fee: b2d2 uxtb r2, r2 + 17ff0: f016 f940 bl 2e274 callback.valueStream(item); - 17f10: f8d5 78c4 ldr.w r7, [r5, #2244] ; 0x8c4 + 17ff4: f8d5 78c4 ldr.w r7, [r5, #2244] ; 0x8c4 sprintf(item.name, BMC_STREAM_TEMPL_LAYER, (uint8_t) (t_value+1), str); - 17f14: e7c2 b.n 17e9c + 17ff8: e7c2 b.n 17f80 strcpy(item.name, str); - 17f16: 4631 mov r1, r6 - 17f18: a80c add r0, sp, #48 ; 0x30 - 17f1a: f016 fd2f bl 2e97c - 17f1e: e7bd b.n 17e9c + 17ffa: 4631 mov r1, r6 + 17ffc: a80c add r0, sp, #48 ; 0x30 + 17ffe: f016 fd2d bl 2ea5c + 18002: e7bd b.n 17f80 if(t_id==BMC_DEVICE_ID_LAYER && strlen(BMC_STREAM_TEMPL_LAYER)+strlen(str)<30){ - 17f20: f016 fe0e bl 2eb40 - 17f24: e7b8 b.n 17e98 - 17f26: bf00 nop - 17f28: 200024d4 .word 0x200024d4 - 17f2c: 200024c4 .word 0x200024c4 - 17f30: 200024e4 .word 0x200024e4 - 17f34: 200024b4 .word 0x200024b4 - -00017f38 : + 18004: f016 fe1c bl 2ec40 + 18008: e7b8 b.n 17f7c + 1800a: bf00 nop + 1800c: 200024d4 .word 0x200024d4 + 18010: 200024c4 .word 0x200024c4 + 18014: 200024e4 .word 0x200024e4 + 18018: 200024b4 .word 0x200024b4 + +0001801c : void BMC::streamMidi(uint8_t status, uint8_t channel, uint8_t data1, uint8_t data2){ - 17f38: b5f0 push {r4, r5, r6, r7, lr} + 1801c: b5f0 push {r4, r5, r6, r7, lr} if(callback.valueStream){ - 17f3a: f500 5480 add.w r4, r0, #4096 ; 0x1000 + 1801e: f500 5480 add.w r4, r0, #4096 ; 0x1000 void BMC::streamMidi(uint8_t status, uint8_t channel, uint8_t data1, uint8_t data2){ - 17f3e: b095 sub sp, #84 ; 0x54 + 18022: b095 sub sp, #84 ; 0x54 if(callback.valueStream){ - 17f40: f8d4 58c4 ldr.w r5, [r4, #2244] ; 0x8c4 + 18024: f8d4 58c4 ldr.w r5, [r4, #2244] ; 0x8c4 void BMC::streamMidi(uint8_t status, uint8_t channel, uint8_t data1, uint8_t data2){ - 17f44: f89d 6068 ldrb.w r6, [sp, #104] ; 0x68 + 18028: f89d 6068 ldrb.w r6, [sp, #104] ; 0x68 if(callback.valueStream){ - 17f48: b36d cbz r5, 17fa6 + 1802c: b36d cbz r5, 1808a BMCValueStream item; item.id = status; item.value = data2==255?data1:data2; - 17f4a: 2eff cmp r6, #255 ; 0xff - 17f4c: d02d beq.n 17faa + 1802e: 2eff cmp r6, #255 ; 0xff + 18030: d02d beq.n 1808e if(data2==255){ item.data = (data1<<8) | (status | channel); } else { item.data = (data2<<16) | (data1<<8) | (status | channel); - 17f4e: 0218 lsls r0, r3, #8 - 17f50: ea41 0702 orr.w r7, r1, r2 - 17f54: ea40 4006 orr.w r0, r0, r6, lsl #16 - 17f58: 4338 orrs r0, r7 + 18032: 0218 lsls r0, r3, #8 + 18034: ea41 0702 orr.w r7, r1, r2 + 18038: ea40 4006 orr.w r0, r0, r6, lsl #16 + 1803c: 4338 orrs r0, r7 item.value = data2==255?data1:data2; - 17f5a: 4637 mov r7, r6 + 1803e: 4637 mov r7, r6 } switch(status){ - 17f5c: 29b0 cmp r1, #176 ; 0xb0 + 18040: 29b0 cmp r1, #176 ; 0xb0 item.id = status; - 17f5e: f88d 1025 strb.w r1, [sp, #37] ; 0x25 + 18042: f88d 1025 strb.w r1, [sp, #37] ; 0x25 item.data = (data1<<8) | (status | channel); - 17f62: e9cd 700a strd r7, r0, [sp, #40] ; 0x28 - 17f66: f04f 0000 mov.w r0, #0 - 17f6a: f88d 0024 strb.w r0, [sp, #36] ; 0x24 + 18046: e9cd 700a strd r7, r0, [sp, #40] ; 0x28 + 1804a: f04f 0000 mov.w r0, #0 + 1804e: f88d 0024 strb.w r0, [sp, #36] ; 0x24 switch(status){ - 17f6e: d02b beq.n 17fc8 - 17f70: d821 bhi.n 17fb6 - 17f72: f001 01ef and.w r1, r1, #239 ; 0xef - 17f76: 2980 cmp r1, #128 ; 0x80 - 17f78: d106 bne.n 17f88 + 18052: d02b beq.n 180ac + 18054: d821 bhi.n 1809a + 18056: f001 01ef and.w r1, r1, #239 ; 0xef + 1805a: 2980 cmp r1, #128 ; 0x80 + 1805c: d106 bne.n 1806c case BMC_MIDI_CONTROL_CHANGE: sprintf(item.name, BMC_STREAM_TEMPL_MIDI_CC, channel, data1, data2); break; case BMC_MIDI_NOTE_ON: sprintf(item.name, BMC_STREAM_TEMPL_MIDI_NOTE_ON, channel, data1, data2); - 17f7a: 4917 ldr r1, [pc, #92] ; (17fd8 ) - 17f7c: a80c add r0, sp, #48 ; 0x30 - 17f7e: 9600 str r6, [sp, #0] - 17f80: f016 f904 bl 2e18c + 1805e: 4917 ldr r1, [pc, #92] ; (180bc ) + 18060: a80c add r0, sp, #48 ; 0x30 + 18062: 9600 str r6, [sp, #0] + 18064: f016 f906 bl 2e274 break; case BMC_MIDI_PROGRAM_CHANGE: sprintf(item.name, BMC_STREAM_TEMPL_MIDI_PC, channel, data1); break; } callback.valueStream(item); - 17f84: f8d4 58c4 ldr.w r5, [r4, #2244] ; 0x8c4 - 17f88: f10d 0e34 add.w lr, sp, #52 ; 0x34 - 17f8c: 46ec mov ip, sp - 17f8e: ac09 add r4, sp, #36 ; 0x24 - 17f90: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 17f94: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - 17f98: e89e 0007 ldmia.w lr, {r0, r1, r2} - 17f9c: e88c 0007 stmia.w ip, {r0, r1, r2} - 17fa0: e894 000f ldmia.w r4, {r0, r1, r2, r3} - 17fa4: 47a8 blx r5 - } -} - 17fa6: b015 add sp, #84 ; 0x54 - 17fa8: bdf0 pop {r4, r5, r6, r7, pc} + 18068: f8d4 58c4 ldr.w r5, [r4, #2244] ; 0x8c4 + 1806c: f10d 0e34 add.w lr, sp, #52 ; 0x34 + 18070: 46ec mov ip, sp + 18072: ac09 add r4, sp, #36 ; 0x24 + 18074: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 18078: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 1807c: e89e 0007 ldmia.w lr, {r0, r1, r2} + 18080: e88c 0007 stmia.w ip, {r0, r1, r2} + 18084: e894 000f ldmia.w r4, {r0, r1, r2, r3} + 18088: 47a8 blx r5 + } +} + 1808a: b015 add sp, #84 ; 0x54 + 1808c: bdf0 pop {r4, r5, r6, r7, pc} item.data = (data1<<8) | (status | channel); - 17faa: ea41 0002 orr.w r0, r1, r2 + 1808e: ea41 0002 orr.w r0, r1, r2 item.value = data2==255?data1:data2; - 17fae: 461f mov r7, r3 + 18092: 461f mov r7, r3 item.data = (data1<<8) | (status | channel); - 17fb0: ea40 2003 orr.w r0, r0, r3, lsl #8 - 17fb4: e7d2 b.n 17f5c + 18094: ea40 2003 orr.w r0, r0, r3, lsl #8 + 18098: e7d2 b.n 18040 switch(status){ - 17fb6: 29c0 cmp r1, #192 ; 0xc0 - 17fb8: d1e6 bne.n 17f88 + 1809a: 29c0 cmp r1, #192 ; 0xc0 + 1809c: d1e6 bne.n 1806c sprintf(item.name, BMC_STREAM_TEMPL_MIDI_PC, channel, data1); - 17fba: 4908 ldr r1, [pc, #32] ; (17fdc ) - 17fbc: a80c add r0, sp, #48 ; 0x30 - 17fbe: f016 f8e5 bl 2e18c + 1809e: 4908 ldr r1, [pc, #32] ; (180c0 ) + 180a0: a80c add r0, sp, #48 ; 0x30 + 180a2: f016 f8e7 bl 2e274 callback.valueStream(item); - 17fc2: f8d4 58c4 ldr.w r5, [r4, #2244] ; 0x8c4 + 180a6: f8d4 58c4 ldr.w r5, [r4, #2244] ; 0x8c4 break; - 17fc6: e7df b.n 17f88 + 180aa: e7df b.n 1806c sprintf(item.name, BMC_STREAM_TEMPL_MIDI_CC, channel, data1, data2); - 17fc8: 4905 ldr r1, [pc, #20] ; (17fe0 ) - 17fca: a80c add r0, sp, #48 ; 0x30 - 17fcc: 9600 str r6, [sp, #0] - 17fce: f016 f8dd bl 2e18c + 180ac: 4905 ldr r1, [pc, #20] ; (180c4 ) + 180ae: a80c add r0, sp, #48 ; 0x30 + 180b0: 9600 str r6, [sp, #0] + 180b2: f016 f8df bl 2e274 callback.valueStream(item); - 17fd2: f8d4 58c4 ldr.w r5, [r4, #2244] ; 0x8c4 + 180b6: f8d4 58c4 ldr.w r5, [r4, #2244] ; 0x8c4 break; - 17fd6: e7d7 b.n 17f88 - 17fd8: 20001c0c .word 0x20001c0c - 17fdc: 20001c2c .word 0x20001c2c - 17fe0: 20001bec .word 0x20001bec + 180ba: e7d7 b.n 1806c + 180bc: 20001c0c .word 0x20001c0c + 180c0: 20001c2c .word 0x20001c2c + 180c4: 20001bec .word 0x20001bec -00017fe4 : +000180c8 : item.data = t_value; sprintf(item.name, "%03u", t_value); callback.valueStream(item); } } void BMC::streamMidiProgram(uint8_t channel, uint8_t program){ - 17fe4: b530 push {r4, r5, lr} + 180c8: b530 push {r4, r5, lr} if(callback.valueStream){ - 17fe6: f500 5480 add.w r4, r0, #4096 ; 0x1000 + 180ca: f500 5480 add.w r4, r0, #4096 ; 0x1000 void BMC::streamMidiProgram(uint8_t channel, uint8_t program){ - 17fea: 4613 mov r3, r2 - 17fec: b095 sub sp, #84 ; 0x54 + 180ce: 4613 mov r3, r2 + 180d0: b095 sub sp, #84 ; 0x54 if(callback.valueStream){ - 17fee: f8d4 28c4 ldr.w r2, [r4, #2244] ; 0x8c4 - 17ff2: b1fa cbz r2, 18034 + 180d2: f8d4 28c4 ldr.w r2, [r4, #2244] ; 0x8c4 + 180d6: b1fa cbz r2, 18118 BMCValueStream item; item.id = BMC_DEVICE_ID_MIDI_PROGRAM; item.value = program; item.data = (program<<8) | BMC_DEVICE_ID_MIDI_PROGRAM |channel; - 17ff4: ea41 2003 orr.w r0, r1, r3, lsl #8 - 17ff8: f44f 4540 mov.w r5, #49152 ; 0xc000 + 180d8: ea41 2003 orr.w r0, r1, r3, lsl #8 + 180dc: f44f 4540 mov.w r5, #49152 ; 0xc000 sprintf(item.name,BMC_STREAM_TEMPL_MIDI_PC,channel, program); - 17ffc: 460a mov r2, r1 - 17ffe: 490e ldr r1, [pc, #56] ; (18038 ) + 180e0: 460a mov r2, r1 + 180e2: 490e ldr r1, [pc, #56] ; (1811c ) item.data = (program<<8) | BMC_DEVICE_ID_MIDI_PROGRAM |channel; - 18000: f040 00c0 orr.w r0, r0, #192 ; 0xc0 + 180e4: f040 00c0 orr.w r0, r0, #192 ; 0xc0 item.value = program; - 18004: 930a str r3, [sp, #40] ; 0x28 - 18006: f8ad 5024 strh.w r5, [sp, #36] ; 0x24 + 180e8: 930a str r3, [sp, #40] ; 0x28 + 180ea: f8ad 5024 strh.w r5, [sp, #36] ; 0x24 sprintf(item.name,BMC_STREAM_TEMPL_MIDI_PC,channel, program); - 1800a: ad09 add r5, sp, #36 ; 0x24 + 180ee: ad09 add r5, sp, #36 ; 0x24 item.data = (program<<8) | BMC_DEVICE_ID_MIDI_PROGRAM |channel; - 1800c: 900b str r0, [sp, #44] ; 0x2c + 180f0: 900b str r0, [sp, #44] ; 0x2c sprintf(item.name,BMC_STREAM_TEMPL_MIDI_PC,channel, program); - 1800e: a80c add r0, sp, #48 ; 0x30 - 18010: f016 f8bc bl 2e18c + 180f2: a80c add r0, sp, #48 ; 0x30 + 180f4: f016 f8be bl 2e274 callback.valueStream(item); - 18014: f10d 0e34 add.w lr, sp, #52 ; 0x34 - 18018: 46ec mov ip, sp - 1801a: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 1801e: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - 18022: e89e 0007 ldmia.w lr, {r0, r1, r2} - 18026: e88c 0007 stmia.w ip, {r0, r1, r2} - 1802a: e895 000f ldmia.w r5, {r0, r1, r2, r3} - 1802e: f8d4 48c4 ldr.w r4, [r4, #2244] ; 0x8c4 - 18032: 47a0 blx r4 - } -} - 18034: b015 add sp, #84 ; 0x54 - 18036: bd30 pop {r4, r5, pc} - 18038: 20001c2c .word 0x20001c2c - -0001803c : + 180f8: f10d 0e34 add.w lr, sp, #52 ; 0x34 + 180fc: 46ec mov ip, sp + 180fe: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 18102: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 18106: e89e 0007 ldmia.w lr, {r0, r1, r2} + 1810a: e88c 0007 stmia.w ip, {r0, r1, r2} + 1810e: e895 000f ldmia.w r5, {r0, r1, r2, r3} + 18112: f8d4 48c4 ldr.w r4, [r4, #2244] ; 0x8c4 + 18116: 47a0 blx r4 + } +} + 18118: b015 add sp, #84 ; 0x54 + 1811a: bd30 pop {r4, r5, pc} + 1811c: 20001c2c .word 0x20001c2c + +00018120 : void BMC::streamMidiControl(uint8_t channel, uint8_t control, uint8_t value){ - 1803c: b530 push {r4, r5, lr} + 18120: b530 push {r4, r5, lr} if(callback.valueStream){ - 1803e: f500 5480 add.w r4, r0, #4096 ; 0x1000 + 18122: f500 5480 add.w r4, r0, #4096 ; 0x1000 void BMC::streamMidiControl(uint8_t channel, uint8_t control, uint8_t value){ - 18042: 4610 mov r0, r2 - 18044: b095 sub sp, #84 ; 0x54 + 18126: 4610 mov r0, r2 + 18128: b095 sub sp, #84 ; 0x54 if(callback.valueStream){ - 18046: f8d4 28c4 ldr.w r2, [r4, #2244] ; 0x8c4 - 1804a: b31a cbz r2, 18094 + 1812a: f8d4 28c4 ldr.w r2, [r4, #2244] ; 0x8c4 + 1812e: b31a cbz r2, 18178 BMCValueStream item; item.id = BMC_DEVICE_ID_MIDI_CONTROL; item.value = value; item.data = (value<<16) | (control<<8) | BMC_DEVICE_ID_MIDI_CONTROL | channel; - 1804c: ea41 4c03 orr.w ip, r1, r3, lsl #16 + 18130: ea41 4c03 orr.w ip, r1, r3, lsl #16 sprintf(item.name,BMC_STREAM_TEMPL_MIDI_CC,channel, control,value); - 18050: 460a mov r2, r1 - 18052: f44f 4530 mov.w r5, #45056 ; 0xb000 - 18056: 9300 str r3, [sp, #0] + 18134: 460a mov r2, r1 + 18136: f44f 4530 mov.w r5, #45056 ; 0xb000 + 1813a: 9300 str r3, [sp, #0] item.data = (value<<16) | (control<<8) | BMC_DEVICE_ID_MIDI_CONTROL | channel; - 18058: ea4c 2100 orr.w r1, ip, r0, lsl #8 + 1813c: ea4c 2100 orr.w r1, ip, r0, lsl #8 item.value = value; - 1805c: 930a str r3, [sp, #40] ; 0x28 + 18140: 930a str r3, [sp, #40] ; 0x28 sprintf(item.name,BMC_STREAM_TEMPL_MIDI_CC,channel, control,value); - 1805e: 4603 mov r3, r0 - 18060: a80c add r0, sp, #48 ; 0x30 + 18142: 4603 mov r3, r0 + 18144: a80c add r0, sp, #48 ; 0x30 item.data = (value<<16) | (control<<8) | BMC_DEVICE_ID_MIDI_CONTROL | channel; - 18062: f041 01b0 orr.w r1, r1, #176 ; 0xb0 - 18066: f8ad 5024 strh.w r5, [sp, #36] ; 0x24 + 18146: f041 01b0 orr.w r1, r1, #176 ; 0xb0 + 1814a: f8ad 5024 strh.w r5, [sp, #36] ; 0x24 sprintf(item.name,BMC_STREAM_TEMPL_MIDI_CC,channel, control,value); - 1806a: ad09 add r5, sp, #36 ; 0x24 + 1814e: ad09 add r5, sp, #36 ; 0x24 item.data = (value<<16) | (control<<8) | BMC_DEVICE_ID_MIDI_CONTROL | channel; - 1806c: 910b str r1, [sp, #44] ; 0x2c + 18150: 910b str r1, [sp, #44] ; 0x2c sprintf(item.name,BMC_STREAM_TEMPL_MIDI_CC,channel, control,value); - 1806e: 490a ldr r1, [pc, #40] ; (18098 ) - 18070: f016 f88c bl 2e18c + 18152: 490a ldr r1, [pc, #40] ; (1817c ) + 18154: f016 f88e bl 2e274 callback.valueStream(item); - 18074: f10d 0e34 add.w lr, sp, #52 ; 0x34 - 18078: 46ec mov ip, sp - 1807a: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 1807e: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - 18082: e89e 0007 ldmia.w lr, {r0, r1, r2} - 18086: e88c 0007 stmia.w ip, {r0, r1, r2} - 1808a: e895 000f ldmia.w r5, {r0, r1, r2, r3} - 1808e: f8d4 48c4 ldr.w r4, [r4, #2244] ; 0x8c4 - 18092: 47a0 blx r4 - } -} - 18094: b015 add sp, #84 ; 0x54 - 18096: bd30 pop {r4, r5, pc} - 18098: 20001bec .word 0x20001bec - -0001809c : + 18158: f10d 0e34 add.w lr, sp, #52 ; 0x34 + 1815c: 46ec mov ip, sp + 1815e: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 18162: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 18166: e89e 0007 ldmia.w lr, {r0, r1, r2} + 1816a: e88c 0007 stmia.w ip, {r0, r1, r2} + 1816e: e895 000f ldmia.w r5, {r0, r1, r2, r3} + 18172: f8d4 48c4 ldr.w r4, [r4, #2244] ; 0x8c4 + 18176: 47a0 blx r4 + } +} + 18178: b015 add sp, #84 ; 0x54 + 1817a: bd30 pop {r4, r5, pc} + 1817c: 20001bec .word 0x20001bec + +00018180 : void BMC::streamMidiClockBPM(uint16_t bpm){ - 1809c: b530 push {r4, r5, lr} + 18180: b530 push {r4, r5, lr} if(callback.valueStream){ - 1809e: f500 5480 add.w r4, r0, #4096 ; 0x1000 + 18182: f500 5480 add.w r4, r0, #4096 ; 0x1000 void BMC::streamMidiClockBPM(uint16_t bpm){ - 180a2: b095 sub sp, #84 ; 0x54 + 18186: b095 sub sp, #84 ; 0x54 if(callback.valueStream){ - 180a4: f8d4 38c4 ldr.w r3, [r4, #2244] ; 0x8c4 - 180a8: b1db cbz r3, 180e2 + 18188: f8d4 38c4 ldr.w r3, [r4, #2244] ; 0x8c4 + 1818c: b1db cbz r3, 181c6 BMCValueStream item; item.id = BMC_DEVICE_ID_MIDI_CLOCK; - 180aa: 460a mov r2, r1 - 180ac: f44f 4378 mov.w r3, #63488 ; 0xf800 + 1818e: 460a mov r2, r1 + 18190: f44f 4378 mov.w r3, #63488 ; 0xf800 item.value = bpm; item.data = bpm; sprintf(item.name, BMC_STREAM_TEMPL_MIDI_CLOCK_BPM, bpm); - 180b0: 490d ldr r1, [pc, #52] ; (180e8 ) - 180b2: a80c add r0, sp, #48 ; 0x30 + 18194: 490d ldr r1, [pc, #52] ; (181cc ) + 18196: a80c add r0, sp, #48 ; 0x30 item.value = bpm; - 180b4: 920a str r2, [sp, #40] ; 0x28 + 18198: 920a str r2, [sp, #40] ; 0x28 sprintf(item.name, BMC_STREAM_TEMPL_MIDI_CLOCK_BPM, bpm); - 180b6: ad09 add r5, sp, #36 ; 0x24 - 180b8: f8ad 3024 strh.w r3, [sp, #36] ; 0x24 + 1819a: ad09 add r5, sp, #36 ; 0x24 + 1819c: f8ad 3024 strh.w r3, [sp, #36] ; 0x24 item.data = bpm; - 180bc: 920b str r2, [sp, #44] ; 0x2c + 181a0: 920b str r2, [sp, #44] ; 0x2c sprintf(item.name, BMC_STREAM_TEMPL_MIDI_CLOCK_BPM, bpm); - 180be: f016 f865 bl 2e18c + 181a2: f016 f867 bl 2e274 callback.valueStream(item); - 180c2: f10d 0e34 add.w lr, sp, #52 ; 0x34 - 180c6: 46ec mov ip, sp - 180c8: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 180cc: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} - 180d0: e89e 0007 ldmia.w lr, {r0, r1, r2} - 180d4: e88c 0007 stmia.w ip, {r0, r1, r2} - 180d8: e895 000f ldmia.w r5, {r0, r1, r2, r3} - 180dc: f8d4 48c4 ldr.w r4, [r4, #2244] ; 0x8c4 - 180e0: 47a0 blx r4 - } -} - 180e2: b015 add sp, #84 ; 0x54 - 180e4: bd30 pop {r4, r5, pc} - 180e6: bf00 nop - 180e8: 20002654 .word 0x20002654 - -000180ec : + 181a6: f10d 0e34 add.w lr, sp, #52 ; 0x34 + 181aa: 46ec mov ip, sp + 181ac: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 181b0: e8ac 000f stmia.w ip!, {r0, r1, r2, r3} + 181b4: e89e 0007 ldmia.w lr, {r0, r1, r2} + 181b8: e88c 0007 stmia.w ip, {r0, r1, r2} + 181bc: e895 000f ldmia.w r5, {r0, r1, r2, r3} + 181c0: f8d4 48c4 ldr.w r4, [r4, #2244] ; 0x8c4 + 181c4: 47a0 blx r4 + } +} + 181c6: b015 add sp, #84 ; 0x54 + 181c8: bd30 pop {r4, r5, pc} + 181ca: bf00 nop + 181cc: 20002654 .word 0x20002654 + +000181d0 : See LICENSE file in the project root for full license information. */ #include #if BMC_MAX_TEMPO_TO_TAP > 0 void BMC::runTempoToTap(){ - 180ec: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 181d0: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} return (prevTime>0); - 180f0: f500 5440 add.w r4, r0, #12288 ; 0x3000 - 180f4: b085 sub sp, #20 - 180f6: 4605 mov r5, r0 - 180f8: f8d4 37c4 ldr.w r3, [r4, #1988] ; 0x7c4 + 181d4: f500 5440 add.w r4, r0, #12288 ; 0x3000 + 181d8: b085 sub sp, #20 + 181da: 4605 mov r5, r0 + 181dc: f8d4 37e4 ldr.w r3, [r4, #2020] ; 0x7e4 if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 180fc: b133 cbz r3, 1810c - 180fe: 4933 ldr r1, [pc, #204] ; (181cc ) - 18100: 680a ldr r2, [r1, #0] - 18102: 1ad3 subs r3, r2, r3 - 18104: f8b4 27c0 ldrh.w r2, [r4, #1984] ; 0x7c0 - 18108: 4293 cmp r3, r2 - 1810a: d223 bcs.n 18154 - 1810c: f894 37c8 ldrb.w r3, [r4, #1992] ; 0x7c8 + 181e0: b133 cbz r3, 181f0 + 181e2: 4933 ldr r1, [pc, #204] ; (182b0 ) + 181e4: 680a ldr r2, [r1, #0] + 181e6: 1ad3 subs r3, r2, r3 + 181e8: f8b4 27e0 ldrh.w r2, [r4, #2016] ; 0x7e0 + 181ec: 4293 cmp r3, r2 + 181ee: d223 bcs.n 18238 + 181f0: f894 37e8 ldrb.w r3, [r4, #2024] ; 0x7e8 return flags.read(BMC_FLAG_TEMPO_TO_TAP_AVAILABLE) && flags.toggleIfTrue(BMC_FLAG_TEMPO_TO_TAP_SEND_NOW); - 18110: 07d9 lsls r1, r3, #31 - 18112: d501 bpl.n 18118 + 181f4: 07d9 lsls r1, r3, #31 + 181f6: d501 bpl.n 181fc if(bitRead(flags, bit)){ - 18114: 079a lsls r2, r3, #30 - 18116: d402 bmi.n 1811e + 181f8: 079a lsls r2, r3, #30 + 181fa: d402 bmi.n 18202 index, device.events[0] ); } } } - 18118: b005 add sp, #20 - 1811a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 181fc: b005 add sp, #20 + 181fe: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} bitClear(flags, bit); - 1811e: f023 0302 bic.w r3, r3, #2 + 18202: f023 0302 bic.w r3, r3, #2 return totalActiveCount; - 18122: f894 77cf ldrb.w r7, [r4, #1999] ; 0x7cf - 18126: f884 37c8 strb.w r3, [r4, #1992] ; 0x7c8 + 18206: f894 77ef ldrb.w r7, [r4, #2031] ; 0x7ef + 1820a: f884 37e8 strb.w r3, [r4, #2024] ; 0x7e8 for(uint8_t index = 0, n=tempoToTap.available(); index < n; index++){ - 1812a: 2f00 cmp r7, #0 - 1812c: d0f4 beq.n 18118 - 1812e: 2600 movs r6, #0 + 1820e: 2f00 cmp r7, #0 + 18210: d0f4 beq.n 181fc + 18212: 2600 movs r6, #0 device.events[0] - 18130: f241 584c movw r8, #5452 ; 0x154c + 18214: f241 584c movw r8, #5452 ; 0x154c processEvent(BMC_DEVICE_GROUP_BUTTON, - 18134: 46b1 mov r9, r6 + 18218: 46b1 mov r9, r6 device.events[0] - 18136: 44a8 add r8, r5 + 1821a: 44a8 add r8, r5 if((n >= BMC_MAX_TEMPO_TO_TAP)){ - 18138: 2e01 cmp r6, #1 - 1813a: d804 bhi.n 18146 + 1821c: 2e01 cmp r6, #1 + 1821e: d804 bhi.n 1822a return bitRead(value[mask], bit); - 1813c: f8b4 37ca ldrh.w r3, [r4, #1994] ; 0x7ca - 18140: 4133 asrs r3, r6 + 18220: f8b4 37ea ldrh.w r3, [r4, #2026] ; 0x7ea + 18224: 4133 asrs r3, r6 if(tempoToTap.isReady(index)){ - 18142: 07db lsls r3, r3, #31 - 18144: d42f bmi.n 181a6 + 18226: 07db lsls r3, r3, #31 + 18228: d42f bmi.n 1828a for(uint8_t index = 0, n=tempoToTap.available(); index < n; index++){ - 18146: 3601 adds r6, #1 - 18148: b2f3 uxtb r3, r6 - 1814a: 429f cmp r7, r3 - 1814c: d8f4 bhi.n 18138 + 1822a: 3601 adds r6, #1 + 1822c: b2f3 uxtb r3, r6 + 1822e: 429f cmp r7, r3 + 18230: d8f4 bhi.n 1821c } - 1814e: b005 add sp, #20 - 18150: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 18232: b005 add sp, #20 + 18234: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(count>=3){ - 18154: f894 27ce ldrb.w r2, [r4, #1998] ; 0x7ce + 18238: f894 27ee ldrb.w r2, [r4, #2030] ; 0x7ee prevTime = 0; - 18158: 2000 movs r0, #0 - 1815a: 2a02 cmp r2, #2 - 1815c: f8c4 07c4 str.w r0, [r4, #1988] ; 0x7c4 - 18160: d908 bls.n 18174 + 1823c: 2000 movs r0, #0 + 1823e: 2a02 cmp r2, #2 + 18240: f8c4 07e4 str.w r0, [r4, #2020] ; 0x7e4 + 18244: d908 bls.n 18258 bitClear(flags, bit); - 18162: f894 37c8 ldrb.w r3, [r4, #1992] ; 0x7c8 + 18246: f894 37e8 ldrb.w r3, [r4, #2024] ; 0x7e8 count = 0; - 18166: f884 07ce strb.w r0, [r4, #1998] ; 0x7ce - 1816a: f003 03fd and.w r3, r3, #253 ; 0xfd - 1816e: f884 37c8 strb.w r3, [r4, #1992] ; 0x7c8 + 1824a: f884 07ee strb.w r0, [r4, #2030] ; 0x7ee + 1824e: f003 03fd and.w r3, r3, #253 ; 0xfd + 18252: f884 37e8 strb.w r3, [r4, #2024] ; 0x7e8 return; - 18172: e7cd b.n 18110 + 18256: e7cd b.n 181f4 return bitRead(flags, bit); - 18174: f894 37c8 ldrb.w r3, [r4, #1992] ; 0x7c8 + 18258: f894 37e8 ldrb.w r3, [r4, #2024] ; 0x7e8 lastBpm = bpm; - 18178: f8b4 07d0 ldrh.w r0, [r4, #2000] ; 0x7d0 + 1825c: f8b4 07f0 ldrh.w r0, [r4, #2032] ; 0x7f0 if(!flags.read(BMC_FLAG_TEMPO_TO_TAP_AVAILABLE)){ - 1817c: 07de lsls r6, r3, #31 + 18260: 07de lsls r6, r3, #31 lastBpm = bpm; - 1817e: f8a4 07d2 strh.w r0, [r4, #2002] ; 0x7d2 + 18262: f8a4 07f2 strh.w r0, [r4, #2034] ; 0x7f2 if(!flags.read(BMC_FLAG_TEMPO_TO_TAP_AVAILABLE)){ - 18182: d51e bpl.n 181c2 - 18184: 6809 ldr r1, [r1, #0] + 18266: d51e bpl.n 182a6 + 18268: 6809 ldr r1, [r1, #0] bitSet(flags, bit); - 18186: f043 0302 orr.w r3, r3, #2 + 1826a: f043 0302 orr.w r3, r3, #2 prevTime = (unsigned long) _BMCTiming::get(); - 1818a: f8c4 17c4 str.w r1, [r4, #1988] ; 0x7c4 - 1818e: f64e 2160 movw r1, #60000 ; 0xea60 - 18192: f884 37c8 strb.w r3, [r4, #1992] ; 0x7c8 - 18196: fbb1 f1f0 udiv r1, r1, r0 + 1826e: f8c4 17e4 str.w r1, [r4, #2020] ; 0x7e4 + 18272: f64e 2160 movw r1, #60000 ; 0xea60 + 18276: f884 37e8 strb.w r3, [r4, #2024] ; 0x7e8 + 1827a: fbb1 f1f0 udiv r1, r1, r0 timer.start(BMCBpmCalculator::bpmToMillis(bpm)); - 1819a: f8a4 17c0 strh.w r1, [r4, #1984] ; 0x7c0 + 1827e: f8a4 17e0 strh.w r1, [r4, #2016] ; 0x7e0 count++; - 1819e: 3201 adds r2, #1 - 181a0: f884 27ce strb.w r2, [r4, #1998] ; 0x7ce - 181a4: e7b4 b.n 18110 + 18282: 3201 adds r2, #1 + 18284: f884 27ee strb.w r2, [r4, #2030] ; 0x7ee + 18288: e7b4 b.n 181f4 device.events[0] - 181a6: eb06 0346 add.w r3, r6, r6, lsl #1 + 1828a: eb06 0346 add.w r3, r6, r6, lsl #1 processEvent(BMC_DEVICE_GROUP_BUTTON, - 181aa: 2223 movs r2, #35 ; 0x23 - 181ac: 2101 movs r1, #1 - 181ae: 4628 mov r0, r5 - 181b0: e9cd 9901 strd r9, r9, [sp, #4] - 181b4: f818 3003 ldrb.w r3, [r8, r3] - 181b8: 9300 str r3, [sp, #0] - 181ba: b2b3 uxth r3, r6 - 181bc: f7f3 fb5e bl b87c - 181c0: e7c1 b.n 18146 + 1828e: 2223 movs r2, #35 ; 0x23 + 18290: 2101 movs r1, #1 + 18292: 4628 mov r0, r5 + 18294: e9cd 9901 strd r9, r9, [sp, #4] + 18298: f818 3003 ldrb.w r3, [r8, r3] + 1829c: 9300 str r3, [sp, #0] + 1829e: b2b3 uxth r3, r6 + 182a0: f7f3 fb50 bl b944 + 182a4: e7c1 b.n 1822a bitClear(flags, bit); - 181c2: f003 03fd and.w r3, r3, #253 ; 0xfd - 181c6: f884 37c8 strb.w r3, [r4, #1992] ; 0x7c8 + 182a6: f003 03fd and.w r3, r3, #253 ; 0xfd + 182aa: f884 37e8 strb.w r3, [r4, #2024] ; 0x7e8 return; - 181ca: e7e8 b.n 1819e - 181cc: 2000bae8 .word 0x2000bae8 + 182ae: e7e8 b.n 18282 + 182b0: 2000bb08 .word 0x2000bb08 -000181d0 : +000182b4 : See LICENSE file in the project root for full license information. */ #include #if BMC_MAX_TIMED_EVENTS > 0 void BMC::readTimedEvent(){ - 181d0: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 182b4: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} } uint8_t getMode(uint8_t n){ return (midi.globals.store.global.timedEvents[n].settings[1]>>2) & 0x03; } uint8_t available(){ return totalReadyTimedEvents; - 181d4: f500 5840 add.w r8, r0, #12288 ; 0x3000 - 181d8: f898 77ed ldrb.w r7, [r8, #2029] ; 0x7ed + 182b8: f500 5840 add.w r8, r0, #12288 ; 0x3000 + 182bc: f898 780d ldrb.w r7, [r8, #2061] ; 0x80d if(timedEvents.available()==0){ - 181dc: 2f00 cmp r7, #0 - 181de: d064 beq.n 182aa - 181e0: f243 75f0 movw r5, #14320 ; 0x37f0 - 181e4: f243 76e9 movw r6, #14313 ; 0x37e9 - 181e8: 463b mov r3, r7 - 181ea: 2400 movs r4, #0 - 181ec: 4405 add r5, r0 - 181ee: 4406 add r6, r0 - 181f0: f8df a0cc ldr.w sl, [pc, #204] ; 182c0 - 181f4: f8df b0cc ldr.w fp, [pc, #204] ; 182c4 - 181f8: f8df 90cc ldr.w r9, [pc, #204] ; 182c8 - 181fc: e007 b.n 1820e + 182c0: 2f00 cmp r7, #0 + 182c2: d064 beq.n 1838e + 182c4: f643 0510 movw r5, #14352 ; 0x3810 + 182c8: f643 0609 movw r6, #14345 ; 0x3809 + 182cc: 463b mov r3, r7 + 182ce: 2400 movs r4, #0 + 182d0: 4405 add r5, r0 + 182d2: 4406 add r6, r0 + 182d4: f8df a0cc ldr.w sl, [pc, #204] ; 183a4 + 182d8: f8df b0cc ldr.w fp, [pc, #204] ; 183a8 + 182dc: f8df 90cc ldr.w r9, [pc, #204] ; 183ac + 182e0: e007 b.n 182f2 return; } for(uint8_t index = 0, n=timedEvents.available(); index < n; index++){ - 181fe: 3401 adds r4, #1 - 18200: 3508 adds r5, #8 - 18202: 3601 adds r6, #1 - 18204: b2e3 uxtb r3, r4 - 18206: 429f cmp r7, r3 - 18208: d94f bls.n 182aa - 1820a: f898 37ed ldrb.w r3, [r8, #2029] ; 0x7ed + 182e2: 3401 adds r4, #1 + 182e4: 3508 adds r5, #8 + 182e6: 3601 adds r6, #1 + 182e8: b2e3 uxtb r3, r4 + 182ea: 429f cmp r7, r3 + 182ec: d94f bls.n 1838e + 182ee: f898 380d ldrb.w r3, [r8, #2061] ; 0x80d if(available() > 0 && n < BMC_MAX_TIMED_EVENTS){ - 1820e: b2e2 uxtb r2, r4 - 18210: 2b00 cmp r3, #0 - 18212: d0f4 beq.n 181fe - 18214: 2a03 cmp r2, #3 - 18216: d8f2 bhi.n 181fe + 182f2: b2e2 uxtb r2, r4 + 182f4: 2b00 cmp r3, #0 + 182f6: d0f4 beq.n 182e2 + 182f8: 2a03 cmp r2, #3 + 182fa: d8f2 bhi.n 182e2 return (prevTime>0); - 18218: 686b ldr r3, [r5, #4] + 182fc: 686b ldr r3, [r5, #4] if(active() && (unsigned long)(_BMCTiming::get() - prevTime) >= interval) { - 1821a: 2b00 cmp r3, #0 - 1821c: d0ef beq.n 181fe - 1821e: f8da 2000 ldr.w r2, [sl] - 18222: 1ad3 subs r3, r2, r3 - 18224: 682a ldr r2, [r5, #0] - 18226: 4293 cmp r3, r2 - 18228: d3e9 bcc.n 181fe + 182fe: 2b00 cmp r3, #0 + 18300: d0ef beq.n 182e2 + 18302: f8da 2000 ldr.w r2, [sl] + 18306: 1ad3 subs r3, r2, r3 + 18308: 682a ldr r2, [r5, #0] + 1830a: 4293 cmp r3, r2 + 1830c: d3e9 bcc.n 182e2 return bitRead(flags, bit); - 1822a: 7833 ldrb r3, [r6, #0] + 1830e: 7833 ldrb r3, [r6, #0] prevTime = 0; - 1822c: 2200 movs r2, #0 + 18310: 2200 movs r2, #0 if(resp && isLooped(n)){ - 1822e: 07db lsls r3, r3, #31 - 18230: 606a str r2, [r5, #4] - 18232: d511 bpl.n 18258 + 18312: 07db lsls r3, r3, #31 + 18314: 606a str r2, [r5, #4] + 18316: d511 bpl.n 1833c return (midi.globals.store.global.timedEvents[n].settings[0]+1)*10; - 18234: f8d8 37e4 ldr.w r3, [r8, #2020] ; 0x7e4 - 18238: f204 5252 addw r2, r4, #1362 ; 0x552 - 1823c: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 18240: 681b ldr r3, [r3, #0] - 18242: eb03 0382 add.w r3, r3, r2, lsl #2 - 18246: 7a5b ldrb r3, [r3, #9] - 18248: 3301 adds r3, #1 - 1824a: eb03 0383 add.w r3, r3, r3, lsl #2 + 18318: f8d8 3804 ldr.w r3, [r8, #2052] ; 0x804 + 1831c: f204 5252 addw r2, r4, #1362 ; 0x552 + 18320: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 18324: 681b ldr r3, [r3, #0] + 18326: eb03 0382 add.w r3, r3, r2, lsl #2 + 1832a: 7a5b ldrb r3, [r3, #9] + 1832c: 3301 adds r3, #1 + 1832e: eb03 0383 add.w r3, r3, r3, lsl #2 timers[n].start(getTimeout(n)); - 1824e: 005b lsls r3, r3, #1 - 18250: 602b str r3, [r5, #0] - 18252: f8da 3000 ldr.w r3, [sl] + 18332: 005b lsls r3, r3, #1 + 18334: 602b str r3, [r5, #0] + 18336: f8da 3000 ldr.w r3, [sl] prevTime = (unsigned long) _BMCTiming::get(); - 18256: 606b str r3, [r5, #4] - 18258: 210b movs r1, #11 - 1825a: 4658 mov r0, fp - 1825c: f014 f974 bl 2c548 - 18260: 2101 movs r1, #1 - 18262: 4648 mov r0, r9 - 18264: f014 f970 bl 2c548 + 1833a: 606b str r3, [r5, #4] + 1833c: 210b movs r1, #11 + 1833e: 4658 mov r0, fp + 18340: f014 f976 bl 2c630 + 18344: 2101 movs r1, #1 + 18346: 4648 mov r0, r9 + 18348: f014 f972 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 18268: 220a movs r2, #10 - 1826a: 2300 movs r3, #0 - 1826c: 4621 mov r1, r4 - 1826e: 4810 ldr r0, [pc, #64] ; (182b0 ) - 18270: f011 fe1c bl 29eac - 18274: 2101 movs r1, #1 - 18276: 4648 mov r0, r9 - 18278: f014 f966 bl 2c548 - 1827c: 210b movs r1, #11 - 1827e: 480d ldr r0, [pc, #52] ; (182b4 ) - 18280: f014 f962 bl 2c548 - 18284: 2101 movs r1, #1 - 18286: 4648 mov r0, r9 - 18288: f014 f95e bl 2c548 - 1828c: 7831 ldrb r1, [r6, #0] + 1834c: 220a movs r2, #10 + 1834e: 2300 movs r3, #0 + 18350: 4621 mov r1, r4 + 18352: 4810 ldr r0, [pc, #64] ; (18394 ) + 18354: f011 fe20 bl 29f98 + 18358: 2101 movs r1, #1 + 1835a: 4648 mov r0, r9 + 1835c: f014 f968 bl 2c630 + 18360: 210b movs r1, #11 + 18362: 480d ldr r0, [pc, #52] ; (18398 ) + 18364: f014 f964 bl 2c630 + 18368: 2101 movs r1, #1 + 1836a: 4648 mov r0, r9 + 1836c: f014 f960 bl 2c630 + 18370: 7831 ldrb r1, [r6, #0] BMC_PRINTLN("timed event",n,"is complete",isLooped(n)?"LOOP":""); - 1828e: 4b0a ldr r3, [pc, #40] ; (182b8 ) - 18290: f011 0101 ands.w r1, r1, #1 - 18294: 4809 ldr r0, [pc, #36] ; (182bc ) - 18296: ea4f 0181 mov.w r1, r1, lsl #2 - 1829a: bf08 it eq - 1829c: 4618 moveq r0, r3 - 1829e: f014 f953 bl 2c548 + 18372: 4b0a ldr r3, [pc, #40] ; (1839c ) + 18374: f011 0101 ands.w r1, r1, #1 + 18378: 4809 ldr r0, [pc, #36] ; (183a0 ) + 1837a: ea4f 0181 mov.w r1, r1, lsl #2 + 1837e: bf08 it eq + 18380: 4618 moveq r0, r3 + 18382: f014 f955 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 182a2: 4803 ldr r0, [pc, #12] ; (182b0 ) - 182a4: f011 fde6 bl 29e74 - 182a8: e7a9 b.n 181fe + 18386: 4803 ldr r0, [pc, #12] ; (18394 ) + 18388: f011 fdea bl 29f60 + 1838c: e7a9 b.n 182e2 if(timedEvents.isReady(index)){ //processTimedEvent(index); } } } - 182aa: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 182ae: bf00 nop - 182b0: 20004ba8 .word 0x20004ba8 - 182b4: 200024a8 .word 0x200024a8 - 182b8: 20003c58 .word 0x20003c58 - 182bc: 20002494 .word 0x20002494 - 182c0: 2000bae8 .word 0x2000bae8 - 182c4: 2000249c .word 0x2000249c - 182c8: 200023ec .word 0x200023ec - -000182cc : + 1838e: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 18392: bf00 nop + 18394: 20004c68 .word 0x20004c68 + 18398: 200024a8 .word 0x200024a8 + 1839c: 20003d18 .word 0x20003d18 + 183a0: 20002494 .word 0x20002494 + 183a4: 2000bb08 .word 0x2000bb08 + 183a8: 2000249c .word 0x2000249c + 183ac: 200023ec .word 0x200023ec + +000183b0 : See LICENSE file in the project root for full license information. */ #include #if BMC_MAX_TRIGGERS > 0 void BMC::readTrigger(){ - 182cc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 183b0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(totalReadableTriggers > 0 && incoming.isVoiceStatus()){ - 182d0: f500 5540 add.w r5, r0, #12288 ; 0x3000 - 182d4: b089 sub sp, #36 ; 0x24 - 182d6: f895 77e2 ldrb.w r7, [r5, #2018] ; 0x7e2 - 182da: b177 cbz r7, 182fa - 182dc: f8d5 17d8 ldr.w r1, [r5, #2008] ; 0x7d8 + 183b4: f500 5540 add.w r5, r0, #12288 ; 0x3000 + 183b8: b089 sub sp, #36 ; 0x24 + 183ba: f895 7802 ldrb.w r7, [r5, #2050] ; 0x802 + 183be: b177 cbz r7, 183de + 183c0: f8d5 17f8 ldr.w r1, [r5, #2040] ; 0x7f8 return isChannelStatus(); - 182e0: 4606 mov r6, r0 - 182e2: 784a ldrb r2, [r1, #1] + 183c4: 4606 mov r6, r0 + 183c6: 784a ldrb r2, [r1, #1] switch(getStatus()){ - 182e4: 2ab0 cmp r2, #176 ; 0xb0 - 182e6: d00f beq.n 18308 - 182e8: d855 bhi.n 18396 - 182ea: 2aa0 cmp r2, #160 ; 0xa0 - 182ec: d008 beq.n 18300 - 182ee: f002 03ef and.w r3, r2, #239 ; 0xef - 182f2: f022 0010 bic.w r0, r2, #16 - 182f6: 2b80 cmp r3, #128 ; 0x80 - 182f8: d003 beq.n 18302 + 183c8: 2ab0 cmp r2, #176 ; 0xb0 + 183ca: d00f beq.n 183ec + 183cc: d855 bhi.n 1847a + 183ce: 2aa0 cmp r2, #160 ; 0xa0 + 183d0: d008 beq.n 183e4 + 183d2: f002 03ef and.w r3, r2, #239 ; 0xef + 183d6: f022 0010 bic.w r0, r2, #16 + 183da: 2b80 cmp r3, #128 ; 0x80 + 183dc: d003 beq.n 183e6 index, device.events[1] ); } } } - 182fa: b009 add sp, #36 ; 0x24 - 182fc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 18300: 4610 mov r0, r2 + 183de: b009 add sp, #36 ; 0x24 + 183e0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 183e4: 4610 mov r0, r2 switch(incoming.getStatus()){ - 18302: b2c0 uxtb r0, r0 - 18304: 2880 cmp r0, #128 ; 0x80 - 18306: d1f8 bne.n 182fa + 183e6: b2c0 uxtb r0, r0 + 183e8: 2880 cmp r0, #128 ; 0x80 + 183ea: d1f8 bne.n 183de void BMC::readTrigger(){ - 18308: 2400 movs r4, #0 + 183ec: 2400 movs r4, #0 device.events[1] - 1830a: f241 5a3d movw sl, #5437 ; 0x153d + 183ee: f241 5a3d movw sl, #5437 ; 0x153d processEvent(BMC_DEVICE_GROUP_BUTTON, - 1830e: 9605 str r6, [sp, #20] + 183f2: 9605 str r6, [sp, #20] device.events[1] - 18310: 44b2 add sl, r6 - 18312: 4623 mov r3, r4 + 183f4: 44b2 add sl, r6 + 183f6: 4623 mov r3, r4 processEvent(BMC_DEVICE_GROUP_BUTTON, - 18314: 46a3 mov fp, r4 + 183f8: 46a3 mov fp, r4 if(incoming.getStatus()==BMC_NONE || index>=totalReadableTriggers || !activeList.getBit(index)){ - 18316: 2a00 cmp r2, #0 - 18318: d07d beq.n 18416 - 1831a: f895 07e2 ldrb.w r0, [r5, #2018] ; 0x7e2 - 1831e: 4298 cmp r0, r3 - 18320: d979 bls.n 18416 - 18322: f3c4 100b ubfx r0, r4, #4, #12 - 18326: f003 030f and.w r3, r3, #15 - 1832a: eb05 0040 add.w r0, r5, r0, lsl #1 - 1832e: f8b0 07de ldrh.w r0, [r0, #2014] ; 0x7de - 18332: 4118 asrs r0, r3 - 18334: b2a3 uxth r3, r4 - 18336: 07c0 lsls r0, r0, #31 - 18338: d56d bpl.n 18416 + 183fa: 2a00 cmp r2, #0 + 183fc: d07d beq.n 184fa + 183fe: f895 0802 ldrb.w r0, [r5, #2050] ; 0x802 + 18402: 4298 cmp r0, r3 + 18404: d979 bls.n 184fa + 18406: f3c4 100b ubfx r0, r4, #4, #12 + 1840a: f003 030f and.w r3, r3, #15 + 1840e: eb05 0040 add.w r0, r5, r0, lsl #1 + 18412: f8b0 07fe ldrh.w r0, [r0, #2046] ; 0x7fe + 18416: 4118 asrs r0, r3 + 18418: b2a3 uxth r3, r4 + 1841a: 07c0 lsls r0, r0, #31 + 1841c: d56d bpl.n 184fa bmcStoreDevice <1, 2>& device = midi.globals.store.global.triggers[index]; - 1833a: f8d5 07d4 ldr.w r0, [r5, #2004] ; 0x7d4 - 1833e: f8d0 0108 ldr.w r0, [r0, #264] ; 0x108 - 18342: f8d0 c000 ldr.w ip, [r0] + 1841e: f8d5 07f4 ldr.w r0, [r5, #2036] ; 0x7f4 + 18422: f8d0 0108 ldr.w r0, [r0, #264] ; 0x108 + 18426: f8d0 c000 ldr.w ip, [r0] return active(device.events[0]) && match(device.events[0], device.settings[0]); - 18346: eb0c 0084 add.w r0, ip, r4, lsl #2 - 1834a: f500 5080 add.w r0, r0, #4096 ; 0x1000 - 1834e: f890 e53c ldrb.w lr, [r0, #1340] ; 0x53c + 1842a: eb0c 0084 add.w r0, ip, r4, lsl #2 + 1842e: f500 5080 add.w r0, r0, #4096 ; 0x1000 + 18432: f890 e53c ldrb.w lr, [r0, #1340] ; 0x53c if(n > 0 && n <= BMC_MAX_EVENTS_LIBRARY){ - 18352: f10e 38ff add.w r8, lr, #4294967295 ; 0xffffffff - 18356: f1b8 0fc7 cmp.w r8, #199 ; 0xc7 - 1835a: d85c bhi.n 18416 + 18436: f10e 38ff add.w r8, lr, #4294967295 ; 0xffffffff + 1843a: f1b8 0fc7 cmp.w r8, #199 ; 0xc7 + 1843e: d85c bhi.n 184fa return store.global.events[n-1]; - 1835c: eb0c 0cce add.w ip, ip, lr, lsl #3 - 18360: f89c e032 ldrb.w lr, [ip, #50] ; 0x32 + 18440: eb0c 0cce add.w ip, ip, lr, lsl #3 + 18444: f89c e032 ldrb.w lr, [ip, #50] ; 0x32 switch(data.type){ - 18364: f10e 3eff add.w lr, lr, #4294967295 ; 0xffffffff - 18368: f1be 0f03 cmp.w lr, #3 - 1836c: d853 bhi.n 18416 - 1836e: f8dc 8034 ldr.w r8, [ip, #52] ; 0x34 - 18372: f89c 9033 ldrb.w r9, [ip, #51] ; 0x33 + 18448: f10e 3eff add.w lr, lr, #4294967295 ; 0xffffffff + 1844c: f1be 0f03 cmp.w lr, #3 + 18450: d853 bhi.n 184fa + 18452: f8dc 8034 ldr.w r8, [ip, #52] ; 0x34 + 18456: f89c 9033 ldrb.w r9, [ip, #51] ; 0x33 bmcStoreEvent data = midi.globals.getDeviceEventType(trigger); if(incoming.getStatus()==BMC_NONE){ return false; } uint8_t channel = BMC_GET_BYTE(0, data.event) & 0x0F; uint8_t data1 = BMC_GET_BYTE(1, data.event) & 0x7F; - 18376: f3c8 2606 ubfx r6, r8, #8, #7 + 1845a: f3c8 2606 ubfx r6, r8, #8, #7 uint8_t channel = BMC_GET_BYTE(0, data.event) & 0x0F; - 1837a: f008 0c0f and.w ip, r8, #15 + 1845e: f008 0c0f and.w ip, r8, #15 uint8_t data1 = BMC_GET_BYTE(1, data.event) & 0x7F; - 1837e: 9607 str r6, [sp, #28] + 18462: 9607 str r6, [sp, #28] uint8_t data2 = BMC_GET_BYTE(2, data.event) & 0x7F; - 18380: f3c8 4606 ubfx r6, r8, #16, #7 - 18384: 9606 str r6, [sp, #24] + 18464: f3c8 4606 ubfx r6, r8, #16, #7 + 18468: 9606 str r6, [sp, #24] uint8_t data2Operator = (settings) & 0x03; uint8_t ignorePort = bitRead(settings, 2); uint32_t target = 0; switch(data.type){ - 18386: f1be 0f03 cmp.w lr, #3 - 1838a: f200 80a3 bhi.w 184d4 - 1838e: e8df f00e tbb [pc, lr] - 18392: 4e51 .short 0x4e51 - 18394: 0d4b .short 0x0d4b - 18396: 2ae0 cmp r2, #224 ; 0xe0 - 18398: d0af beq.n 182fa - 1839a: f002 03ef and.w r3, r2, #239 ; 0xef - 1839e: 2bc0 cmp r3, #192 ; 0xc0 - 183a0: d1ab bne.n 182fa + 1846a: f1be 0f03 cmp.w lr, #3 + 1846e: f200 80a3 bhi.w 185b8 + 18472: e8df f00e tbb [pc, lr] + 18476: 4e51 .short 0x4e51 + 18478: 0d4b .short 0x0d4b + 1847a: 2ae0 cmp r2, #224 ; 0xe0 + 1847c: d0af beq.n 183de + 1847e: f002 03ef and.w r3, r2, #239 ; 0xef + 18482: 2bc0 cmp r3, #192 ; 0xc0 + 18484: d1ab bne.n 183de switch(incoming.getStatus()){ - 183a2: 2ac0 cmp r2, #192 ; 0xc0 - 183a4: d0b0 beq.n 18308 + 18486: 2ac0 cmp r2, #192 ; 0xc0 + 18488: d0b0 beq.n 183ec } - 183a6: b009 add sp, #36 ; 0x24 - 183a8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1848a: b009 add sp, #36 ; 0x24 + 1848c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} break; case BMC_EVENT_TYPE_MIDI_NOTE_ON: target = (BMC_MIDI_NOTE_ON | channel) | (data1<<8) | (data2<<16) | (data.ports<<24); break; case BMC_EVENT_TYPE_MIDI_NOTE_OFF: target = (BMC_MIDI_NOTE_OFF | channel) | (data1<<8) | (data2<<16) | (data.ports<<24); - 183ac: f04c 0c80 orr.w ip, ip, #128 ; 0x80 - 183b0: 9e07 ldr r6, [sp, #28] - 183b2: ea4c 6c09 orr.w ip, ip, r9, lsl #24 - 183b6: ea4c 2c06 orr.w ip, ip, r6, lsl #8 - 183ba: 9e06 ldr r6, [sp, #24] - 183bc: ea4c 4c06 orr.w ip, ip, r6, lsl #16 + 18490: f04c 0c80 orr.w ip, ip, #128 ; 0x80 + 18494: 9e07 ldr r6, [sp, #28] + 18496: ea4c 6c09 orr.w ip, ip, r9, lsl #24 + 1849a: ea4c 2c06 orr.w ip, ip, r6, lsl #8 + 1849e: 9e06 ldr r6, [sp, #24] + 184a0: ea4c 4c06 orr.w ip, ip, r6, lsl #16 if(getStatus()>127 && !isSysEx()){ - 183c0: 0616 lsls r6, r2, #24 - 183c2: d43f bmi.n 18444 - 183c4: 46e6 mov lr, ip + 184a4: 0616 lsls r6, r2, #24 + 184a6: d43f bmi.n 18528 + 184a8: 46e6 mov lr, ip uint32_t event = 0; - 183c6: f04f 0800 mov.w r8, #0 + 184aa: f04f 0800 mov.w r8, #0 return active(device.events[0]) && match(device.events[0], device.settings[0]); - 183ca: f890 053b ldrb.w r0, [r0, #1339] ; 0x53b + 184ae: f890 053b ldrb.w r0, [r0, #1339] ; 0x53b return statusMatch; } return statusMatch && matchPort(source, target); } bool matchStatusAndData1(uint32_t source, uint32_t target){ return (source & 0x7FFF) == (target & 0x7FFF); - 183ce: f3ce 0e0e ubfx lr, lr, #0, #15 + 184b2: f3ce 0e0e ubfx lr, lr, #0, #15 if(ignorePort){ - 183d2: 0746 lsls r6, r0, #29 - 183d4: d451 bmi.n 1847a + 184b6: 0746 lsls r6, r0, #29 + 184b8: d451 bmi.n 1855e return statusMatch && matchPort(source, target); - 183d6: f1be 0f00 cmp.w lr, #0 - 183da: d11c bne.n 18416 + 184ba: f1be 0f00 cmp.w lr, #0 + 184be: d11c bne.n 184fa } bool matchPort(uint32_t source, uint32_t target){ return BMCTools::matchPort(BMC_GET_BYTE(3,source), BMC_GET_BYTE(3,target)); - 183dc: ea4f 6c1c mov.w ip, ip, lsr #24 + 184c0: ea4f 6c1c mov.w ip, ip, lsr #24 return statusMatch && matchPort(source, target); - 183e0: ea1c 6c18 ands.w ip, ip, r8, lsr #24 - 183e4: d017 beq.n 18416 + 184c4: ea1c 6c18 ands.w ip, ip, r8, lsr #24 + 184c8: d017 beq.n 184fa return BMC_IS_PROGRAM_CHANGE(getStatus()); //0xC0 - 183e6: 2aef cmp r2, #239 ; 0xef - 183e8: d803 bhi.n 183f2 + 184ca: 2aef cmp r2, #239 ; 0xef + 184cc: d803 bhi.n 184d6 if(incoming.isProgramChange()){ - 183ea: f002 02f0 and.w r2, r2, #240 ; 0xf0 - 183ee: 2ac0 cmp r2, #192 ; 0xc0 - 183f0: d007 beq.n 18402 + 184ce: f002 02f0 and.w r2, r2, #240 ; 0xf0 + 184d2: 2ac0 cmp r2, #192 ; 0xc0 + 184d4: d007 beq.n 184e6 uint8_t data2Operator = (settings) & 0x03; - 183f2: f000 0003 and.w r0, r0, #3 + 184d6: f000 0003 and.w r0, r0, #3 switch(data2Operator){ - 183f6: 2802 cmp r0, #2 - 183f8: d063 beq.n 184c2 - 183fa: 2803 cmp r0, #3 - 183fc: d058 beq.n 184b0 - 183fe: 2801 cmp r0, #1 - 18400: d04d beq.n 1849e + 184da: 2802 cmp r0, #2 + 184dc: d063 beq.n 185a6 + 184de: 2803 cmp r0, #3 + 184e0: d058 beq.n 18594 + 184e2: 2801 cmp r0, #1 + 184e4: d04d beq.n 18582 processEvent(BMC_DEVICE_GROUP_BUTTON, - 18402: 2101 movs r1, #1 - 18404: 9805 ldr r0, [sp, #20] - 18406: e9cd bb01 strd fp, fp, [sp, #4] - 1840a: f81a 2024 ldrb.w r2, [sl, r4, lsl #2] - 1840e: 9200 str r2, [sp, #0] - 18410: 2222 movs r2, #34 ; 0x22 - 18412: f7f3 fa33 bl b87c + 184e6: 2101 movs r1, #1 + 184e8: 9805 ldr r0, [sp, #20] + 184ea: e9cd bb01 strd fp, fp, [sp, #4] + 184ee: f81a 2024 ldrb.w r2, [sl, r4, lsl #2] + 184f2: 9200 str r2, [sp, #0] + 184f4: 2222 movs r2, #34 ; 0x22 + 184f6: f7f3 fa25 bl b944 for(uint8_t index = 0, n=triggers.available(); index < n; index++){ - 18416: 3401 adds r4, #1 - 18418: b2e3 uxtb r3, r4 - 1841a: 429f cmp r7, r3 - 1841c: f67f af6d bls.w 182fa + 184fa: 3401 adds r4, #1 + 184fc: b2e3 uxtb r3, r4 + 184fe: 429f cmp r7, r3 + 18500: f67f af6d bls.w 183de if(incoming.getStatus()==BMC_NONE || index>=totalReadableTriggers || !activeList.getBit(index)){ - 18420: f8d5 17d8 ldr.w r1, [r5, #2008] ; 0x7d8 + 18504: f8d5 17f8 ldr.w r1, [r5, #2040] ; 0x7f8 return (t_and) ? (status & 0xF0) : status; - 18424: 784a ldrb r2, [r1, #1] - 18426: e776 b.n 18316 + 18508: 784a ldrb r2, [r1, #1] + 1850a: e776 b.n 183fa target = (BMC_MIDI_NOTE_ON | channel) | (data1<<8) | (data2<<16) | (data.ports<<24); - 18428: f04c 0c90 orr.w ip, ip, #144 ; 0x90 - 1842c: e7c0 b.n 183b0 + 1850c: f04c 0c90 orr.w ip, ip, #144 ; 0x90 + 18510: e7c0 b.n 18494 target = (BMC_MIDI_CONTROL_CHANGE | channel) | (data1<<8) | (data2<<16) | (data.ports<<24); - 1842e: f04c 0cb0 orr.w ip, ip, #176 ; 0xb0 - 18432: e7bd b.n 183b0 + 18512: f04c 0cb0 orr.w ip, ip, #176 ; 0xb0 + 18516: e7bd b.n 18494 target = (BMC_MIDI_PROGRAM_CHANGE | channel) | (data1<<8) | (data.ports<<24); - 18434: f04c 0cc0 orr.w ip, ip, #192 ; 0xc0 - 18438: 9e07 ldr r6, [sp, #28] - 1843a: ea4c 6c09 orr.w ip, ip, r9, lsl #24 - 1843e: ea4c 2c06 orr.w ip, ip, r6, lsl #8 + 18518: f04c 0cc0 orr.w ip, ip, #192 ; 0xc0 + 1851c: 9e07 ldr r6, [sp, #28] + 1851e: ea4c 6c09 orr.w ip, ip, r9, lsl #24 + 18522: ea4c 2c06 orr.w ip, ip, r6, lsl #8 break; - 18442: e7bd b.n 183c0 + 18526: e7bd b.n 184a4 return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 18444: 2aef cmp r2, #239 ; 0xef - 18446: d91c bls.n 18482 + 18528: 2aef cmp r2, #239 ; 0xef + 1852a: d91c bls.n 18566 if(getStatus()>127 && !isSysEx()){ - 18448: 2af0 cmp r2, #240 ; 0xf0 - 1844a: d0bb beq.n 183c4 + 1852c: 2af0 cmp r2, #240 ; 0xf0 + 1852e: d0bb beq.n 184a8 if(getChannel()==0){ - 1844c: f891 8002 ldrb.w r8, [r1, #2] - 18450: f1b8 0f00 cmp.w r8, #0 - 18454: d01a beq.n 1848c + 18530: f891 8002 ldrb.w r8, [r1, #2] + 18534: f1b8 0f00 cmp.w r8, #0 + 18538: d01a beq.n 18570 event = getStatus(); - 18456: 4691 mov r9, r2 + 1853a: 4691 mov r9, r2 event |= (getData1() << 8) | (getData2() << 16); - 18458: f891 e004 ldrb.w lr, [r1, #4] - 1845c: f891 8003 ldrb.w r8, [r1, #3] - 18460: ea4f 4e0e mov.w lr, lr, lsl #16 - 18464: ea4e 2e08 orr.w lr, lr, r8, lsl #8 + 1853c: f891 e004 ldrb.w lr, [r1, #4] + 18540: f891 8003 ldrb.w r8, [r1, #3] + 18544: ea4f 4e0e mov.w lr, lr, lsl #16 + 18548: ea4e 2e08 orr.w lr, lr, r8, lsl #8 event |= (getPort()<<24); - 18468: f891 8000 ldrb.w r8, [r1] - 1846c: ea4e 6e08 orr.w lr, lr, r8, lsl #24 - 18470: ea4e 0809 orr.w r8, lr, r9 + 1854c: f891 8000 ldrb.w r8, [r1] + 18550: ea4e 6e08 orr.w lr, lr, r8, lsl #24 + 18554: ea4e 0809 orr.w r8, lr, r9 return (source & 0x7FFF) == (target & 0x7FFF); - 18474: ea8c 0e08 eor.w lr, ip, r8 - 18478: e7a7 b.n 183ca + 18558: ea8c 0e08 eor.w lr, ip, r8 + 1855c: e7a7 b.n 184ae if(matchEvent(incoming.getEvent(), target, ignorePort)){ - 1847a: f1be 0f00 cmp.w lr, #0 - 1847e: d0b2 beq.n 183e6 - 18480: e7c9 b.n 18416 + 1855e: f1be 0f00 cmp.w lr, #0 + 18562: d0b2 beq.n 184ca + 18564: e7c9 b.n 184fa uint8_t getChannel(){ return channel; } - 18482: f891 8002 ldrb.w r8, [r1, #2] + 18566: f891 8002 ldrb.w r8, [r1, #2] if(getChannel()==0){ - 18486: f1b8 0f00 cmp.w r8, #0 - 1848a: d101 bne.n 18490 - 1848c: 46e6 mov lr, ip - 1848e: e79c b.n 183ca + 1856a: f1b8 0f00 cmp.w r8, #0 + 1856e: d101 bne.n 18574 + 18570: 46e6 mov lr, ip + 18572: e79c b.n 184ae event |= ((getChannel()-1) & 0x0F); - 18490: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff - 18494: f008 0e0f and.w lr, r8, #15 - 18498: ea4e 0902 orr.w r9, lr, r2 - 1849c: e7dc b.n 18458 + 18574: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff + 18578: f008 0e0f and.w lr, r8, #15 + 1857c: ea4e 0902 orr.w r9, lr, r2 + 18580: e7dc b.n 1853c return (incoming.getData2() == data2); - 1849e: 790a ldrb r2, [r1, #4] - 184a0: 9906 ldr r1, [sp, #24] - 184a2: 1a52 subs r2, r2, r1 - 184a4: fab2 f282 clz r2, r2 - 184a8: 0952 lsrs r2, r2, #5 + 18582: 790a ldrb r2, [r1, #4] + 18584: 9906 ldr r1, [sp, #24] + 18586: 1a52 subs r2, r2, r1 + 18588: fab2 f282 clz r2, r2 + 1858c: 0952 lsrs r2, r2, #5 return active(device.events[0]) && match(device.events[0], device.settings[0]); - 184aa: 2a00 cmp r2, #0 - 184ac: d1a9 bne.n 18402 - 184ae: e7b2 b.n 18416 + 1858e: 2a00 cmp r2, #0 + 18590: d1a9 bne.n 184e6 + 18592: e7b2 b.n 184fa return (incoming.getData2() <= data2); - 184b0: 790a ldrb r2, [r1, #4] - 184b2: 9906 ldr r1, [sp, #24] - 184b4: 428a cmp r2, r1 - 184b6: bf8c ite hi - 184b8: 2200 movhi r2, #0 - 184ba: 2201 movls r2, #1 + 18594: 790a ldrb r2, [r1, #4] + 18596: 9906 ldr r1, [sp, #24] + 18598: 428a cmp r2, r1 + 1859a: bf8c ite hi + 1859c: 2200 movhi r2, #0 + 1859e: 2201 movls r2, #1 return active(device.events[0]) && match(device.events[0], device.settings[0]); - 184bc: 2a00 cmp r2, #0 - 184be: d1a0 bne.n 18402 - 184c0: e7a9 b.n 18416 + 185a0: 2a00 cmp r2, #0 + 185a2: d1a0 bne.n 184e6 + 185a4: e7a9 b.n 184fa return (incoming.getData2() >= data2); - 184c2: 790a ldrb r2, [r1, #4] - 184c4: 9906 ldr r1, [sp, #24] - 184c6: 428a cmp r2, r1 - 184c8: bf34 ite cc - 184ca: 2200 movcc r2, #0 - 184cc: 2201 movcs r2, #1 + 185a6: 790a ldrb r2, [r1, #4] + 185a8: 9906 ldr r1, [sp, #24] + 185aa: 428a cmp r2, r1 + 185ac: bf34 ite cc + 185ae: 2200 movcc r2, #0 + 185b0: 2201 movcs r2, #1 return active(device.events[0]) && match(device.events[0], device.settings[0]); - 184ce: 2a00 cmp r2, #0 - 184d0: d197 bne.n 18402 - 184d2: e7a0 b.n 18416 + 185b2: 2a00 cmp r2, #0 + 185b4: d197 bne.n 184e6 + 185b6: e7a0 b.n 184fa switch(data.type){ - 184d4: f04f 0c00 mov.w ip, #0 - 184d8: e772 b.n 183c0 - 184da: bf00 nop + 185b8: f04f 0c00 mov.w ip, #0 + 185bc: e772 b.n 184a4 + 185be: bf00 nop -000184dc : +000185c0 : virtual int availableForWrite(void) { return 0; } - 184dc: 2000 movs r0, #0 - 184de: 4770 bx lr + 185c0: 2000 movs r0, #0 + 185c2: 4770 bx lr -000184e0 : +000185c4 : virtual void flush() { } - 184e0: 4770 bx lr - 184e2: bf00 nop + 185c4: 4770 bx lr + 185c6: bf00 nop -000184e4 : +000185c8 : @note Changes buffer contents only, no immediate effect on display. Follow up with a call to display(), or with other graphics commands as needed by one's own application. */ void BMC_SSD1306::drawPixel(int16_t x, int16_t y, uint16_t color) { if((x >= 0) && (x < width()) && (y >= 0) && (y < height())) { - 184e4: 2900 cmp r1, #0 - 184e6: db05 blt.n 184f4 - 184e8: f9b0 c00c ldrsh.w ip, [r0, #12] - 184ec: 458c cmp ip, r1 - 184ee: dd01 ble.n 184f4 - 184f0: 2a00 cmp r2, #0 - 184f2: da00 bge.n 184f6 - 184f4: 4770 bx lr - 184f6: f9b0 c00e ldrsh.w ip, [r0, #14] - 184fa: 4594 cmp ip, r2 - 184fc: ddfa ble.n 184f4 + 185c8: 2900 cmp r1, #0 + 185ca: db05 blt.n 185d8 + 185cc: f9b0 c00c ldrsh.w ip, [r0, #12] + 185d0: 458c cmp ip, r1 + 185d2: dd01 ble.n 185d8 + 185d4: 2a00 cmp r2, #0 + 185d6: da00 bge.n 185da + 185d8: 4770 bx lr + 185da: f9b0 c00e ldrsh.w ip, [r0, #14] + 185de: 4594 cmp ip, r2 + 185e0: ddfa ble.n 185d8 void BMC_SSD1306::drawPixel(int16_t x, int16_t y, uint16_t color) { - 184fe: b410 push {r4} + 185e2: b410 push {r4} /*! @brief Get rotation setting for display @returns 0 thru 3 corresponding to 4 cardinal rotations */ /************************************************************************/ uint8_t getRotation(void) const { return rotation; } - 18500: f890 c01a ldrb.w ip, [r0, #26] + 185e4: f890 c01a ldrb.w ip, [r0, #26] // Pixel is in-bounds. Rotate coordinates if needed. switch(getRotation()) { - 18504: f1bc 0f02 cmp.w ip, #2 - 18508: d00d beq.n 18526 - 1850a: f1bc 0f03 cmp.w ip, #3 - 1850e: d058 beq.n 185c2 - 18510: f1bc 0f01 cmp.w ip, #1 - 18514: d04c beq.n 185b0 + 185e8: f1bc 0f02 cmp.w ip, #2 + 185ec: d00d beq.n 1860a + 185ee: f1bc 0f03 cmp.w ip, #3 + 185f2: d058 beq.n 186a6 + 185f4: f1bc 0f01 cmp.w ip, #1 + 185f8: d04c beq.n 18694 case 3: ssd1306_swap(x, y); y = HEIGHT - y - 1; break; } switch(color) { - 18516: 2b01 cmp r3, #1 - 18518: d038 beq.n 1858c - 1851a: 2b02 cmp r3, #2 - 1851c: d024 beq.n 18568 - 1851e: b17b cbz r3, 18540 + 185fa: 2b01 cmp r3, #1 + 185fc: d038 beq.n 18670 + 185fe: 2b02 cmp r3, #2 + 18600: d024 beq.n 1864c + 18602: b17b cbz r3, 18624 case BMC_SSD1306_WHITE: buffer[x + (y/8)*WIDTH] |= (1 << (y&7)); break; case BMC_SSD1306_BLACK: buffer[x + (y/8)*WIDTH] &= ~(1 << (y&7)); break; case BMC_SSD1306_INVERSE: buffer[x + (y/8)*WIDTH] ^= (1 << (y&7)); break; } } } - 18520: f85d 4b04 ldr.w r4, [sp], #4 - 18524: 4770 bx lr + 18604: f85d 4b04 ldr.w r4, [sp], #4 + 18608: 4770 bx lr x = WIDTH - x - 1; - 18526: f8b0 c008 ldrh.w ip, [r0, #8] - 1852a: f10c 3cff add.w ip, ip, #4294967295 ; 0xffffffff - 1852e: ebac 0c01 sub.w ip, ip, r1 + 1860a: f8b0 c008 ldrh.w ip, [r0, #8] + 1860e: f10c 3cff add.w ip, ip, #4294967295 ; 0xffffffff + 18612: ebac 0c01 sub.w ip, ip, r1 y = HEIGHT - y - 1; - 18532: 8941 ldrh r1, [r0, #10] - 18534: 1a8a subs r2, r1, r2 + 18616: 8941 ldrh r1, [r0, #10] + 18618: 1a8a subs r2, r1, r2 x = WIDTH - x - 1; - 18536: fa0f f18c sxth.w r1, ip + 1861a: fa0f f18c sxth.w r1, ip y = HEIGHT - y - 1; - 1853a: 3a01 subs r2, #1 - 1853c: b212 sxth r2, r2 + 1861e: 3a01 subs r2, #1 + 18620: b212 sxth r2, r2 break; - 1853e: e7ea b.n 18516 + 18622: e7ea b.n 185fa case BMC_SSD1306_BLACK: buffer[x + (y/8)*WIDTH] &= ~(1 << (y&7)); break; - 18540: 2a00 cmp r2, #0 - 18542: 4613 mov r3, r2 - 18544: f8b0 c008 ldrh.w ip, [r0, #8] - 18548: bfb8 it lt - 1854a: 1dd3 addlt r3, r2, #7 - 1854c: 6a44 ldr r4, [r0, #36] ; 0x24 - 1854e: f002 0207 and.w r2, r2, #7 - 18552: 2001 movs r0, #1 - 18554: 10db asrs r3, r3, #3 - 18556: fa00 f202 lsl.w r2, r0, r2 - 1855a: fb13 130c smlabb r3, r3, ip, r1 - 1855e: 5ce1 ldrb r1, [r4, r3] - 18560: ea21 0202 bic.w r2, r1, r2 - 18564: 54e2 strb r2, [r4, r3] - 18566: e7db b.n 18520 + 18624: 2a00 cmp r2, #0 + 18626: 4613 mov r3, r2 + 18628: f8b0 c008 ldrh.w ip, [r0, #8] + 1862c: bfb8 it lt + 1862e: 1dd3 addlt r3, r2, #7 + 18630: 6a44 ldr r4, [r0, #36] ; 0x24 + 18632: f002 0207 and.w r2, r2, #7 + 18636: 2001 movs r0, #1 + 18638: 10db asrs r3, r3, #3 + 1863a: fa00 f202 lsl.w r2, r0, r2 + 1863e: fb13 130c smlabb r3, r3, ip, r1 + 18642: 5ce1 ldrb r1, [r4, r3] + 18644: ea21 0202 bic.w r2, r1, r2 + 18648: 54e2 strb r2, [r4, r3] + 1864a: e7db b.n 18604 case BMC_SSD1306_INVERSE: buffer[x + (y/8)*WIDTH] ^= (1 << (y&7)); break; - 18568: 2a00 cmp r2, #0 - 1856a: 4613 mov r3, r2 - 1856c: 8904 ldrh r4, [r0, #8] - 1856e: bfb8 it lt - 18570: 1dd3 addlt r3, r2, #7 - 18572: 6a40 ldr r0, [r0, #36] ; 0x24 - 18574: f002 0207 and.w r2, r2, #7 - 18578: 10db asrs r3, r3, #3 - 1857a: fb13 1304 smlabb r3, r3, r4, r1 - 1857e: 2101 movs r1, #1 - 18580: 5cc4 ldrb r4, [r0, r3] - 18582: fa01 f202 lsl.w r2, r1, r2 - 18586: 4062 eors r2, r4 - 18588: 54c2 strb r2, [r0, r3] -} - 1858a: e7c9 b.n 18520 + 1864c: 2a00 cmp r2, #0 + 1864e: 4613 mov r3, r2 + 18650: 8904 ldrh r4, [r0, #8] + 18652: bfb8 it lt + 18654: 1dd3 addlt r3, r2, #7 + 18656: 6a40 ldr r0, [r0, #36] ; 0x24 + 18658: f002 0207 and.w r2, r2, #7 + 1865c: 10db asrs r3, r3, #3 + 1865e: fb13 1304 smlabb r3, r3, r4, r1 + 18662: 2101 movs r1, #1 + 18664: 5cc4 ldrb r4, [r0, r3] + 18666: fa01 f202 lsl.w r2, r1, r2 + 1866a: 4062 eors r2, r4 + 1866c: 54c2 strb r2, [r0, r3] +} + 1866e: e7c9 b.n 18604 case BMC_SSD1306_WHITE: buffer[x + (y/8)*WIDTH] |= (1 << (y&7)); break; - 1858c: 2a00 cmp r2, #0 - 1858e: 4613 mov r3, r2 - 18590: f8b0 c008 ldrh.w ip, [r0, #8] - 18594: f002 0407 and.w r4, r2, #7 - 18598: bfb8 it lt - 1859a: 1dd3 addlt r3, r2, #7 - 1859c: 6a40 ldr r0, [r0, #36] ; 0x24 - 1859e: 2201 movs r2, #1 - 185a0: 10db asrs r3, r3, #3 - 185a2: 40a2 lsls r2, r4 - 185a4: fb13 130c smlabb r3, r3, ip, r1 - 185a8: 5cc1 ldrb r1, [r0, r3] - 185aa: 430a orrs r2, r1 - 185ac: 54c2 strb r2, [r0, r3] - 185ae: e7b7 b.n 18520 + 18670: 2a00 cmp r2, #0 + 18672: 4613 mov r3, r2 + 18674: f8b0 c008 ldrh.w ip, [r0, #8] + 18678: f002 0407 and.w r4, r2, #7 + 1867c: bfb8 it lt + 1867e: 1dd3 addlt r3, r2, #7 + 18680: 6a40 ldr r0, [r0, #36] ; 0x24 + 18682: 2201 movs r2, #1 + 18684: 10db asrs r3, r3, #3 + 18686: 40a2 lsls r2, r4 + 18688: fb13 130c smlabb r3, r3, ip, r1 + 1868c: 5cc1 ldrb r1, [r0, r3] + 1868e: 430a orrs r2, r1 + 18690: 54c2 strb r2, [r0, r3] + 18692: e7b7 b.n 18604 x = WIDTH - x - 1; - 185b0: f8b0 c008 ldrh.w ip, [r0, #8] - 185b4: ebac 0c02 sub.w ip, ip, r2 + 18694: f8b0 c008 ldrh.w ip, [r0, #8] + 18698: ebac 0c02 sub.w ip, ip, r2 break; - 185b8: 460a mov r2, r1 + 1869c: 460a mov r2, r1 x = WIDTH - x - 1; - 185ba: f10c 31ff add.w r1, ip, #4294967295 ; 0xffffffff - 185be: b209 sxth r1, r1 + 1869e: f10c 31ff add.w r1, ip, #4294967295 ; 0xffffffff + 186a2: b209 sxth r1, r1 break; - 185c0: e7a9 b.n 18516 + 186a4: e7a9 b.n 185fa y = HEIGHT - y - 1; - 185c2: f8b0 c00a ldrh.w ip, [r0, #10] - 185c6: f10c 3cff add.w ip, ip, #4294967295 ; 0xffffffff - 185ca: ebac 0c01 sub.w ip, ip, r1 + 186a6: f8b0 c00a ldrh.w ip, [r0, #10] + 186aa: f10c 3cff add.w ip, ip, #4294967295 ; 0xffffffff + 186ae: ebac 0c01 sub.w ip, ip, r1 break; - 185ce: 4611 mov r1, r2 + 186b2: 4611 mov r1, r2 y = HEIGHT - y - 1; - 185d0: fa0f f28c sxth.w r2, ip + 186b4: fa0f f28c sxth.w r2, ip break; - 185d4: e79f b.n 18516 - 185d6: bf00 nop + 186b8: e79f b.n 185fa + 186ba: bf00 nop -000185d8 : +000186bc : void BMC_SSD1306::drawFastHLineInternal( int16_t x, int16_t y, int16_t w, uint16_t color) { if((y >= 0) && (y < HEIGHT)) { // Y coord in bounds? if(x < 0) { // Clip left - 185d8: 2900 cmp r1, #0 + 186bc: 2900 cmp r1, #0 void BMC_SSD1306::drawFastHLineInternal( - 185da: b530 push {r4, r5, lr} - 185dc: f8bd 400c ldrh.w r4, [sp, #12] + 186be: b530 push {r4, r5, lr} + 186c0: f8bd 400c ldrh.w r4, [sp, #12] if(x < 0) { // Clip left - 185e0: da02 bge.n 185e8 + 186c4: da02 bge.n 186cc w += x; - 185e2: 440b add r3, r1 - 185e4: 2100 movs r1, #0 - 185e6: b21b sxth r3, r3 + 186c6: 440b add r3, r1 + 186c8: 2100 movs r1, #0 + 186ca: b21b sxth r3, r3 x = 0; } if((x + w) > WIDTH) { // Clip right - 185e8: f9b0 c008 ldrsh.w ip, [r0, #8] - 185ec: 185d adds r5, r3, r1 + 186cc: f9b0 c008 ldrsh.w ip, [r0, #8] + 186d0: 185d adds r5, r3, r1 x = 0; - 185ee: 468e mov lr, r1 + 186d2: 468e mov lr, r1 if((x + w) > WIDTH) { // Clip right - 185f0: 4565 cmp r5, ip - 185f2: dd02 ble.n 185fa + 186d4: 4565 cmp r5, ip + 186d6: dd02 ble.n 186de w = (WIDTH - x); - 185f4: ebac 0101 sub.w r1, ip, r1 - 185f8: b20b sxth r3, r1 + 186d8: ebac 0101 sub.w r1, ip, r1 + 186dc: b20b sxth r3, r1 } if(w > 0) { // Proceed only if width is positive - 185fa: 2b00 cmp r3, #0 - 185fc: dd0f ble.n 1861e + 186de: 2b00 cmp r3, #0 + 186e0: dd0f ble.n 18702 uint8_t *pBuf = &buffer[(y / 8) * WIDTH + x], - 185fe: 6a41 ldr r1, [r0, #36] ; 0x24 - 18600: 10d0 asrs r0, r2, #3 + 186e2: 6a41 ldr r1, [r0, #36] ; 0x24 + 186e4: 10d0 asrs r0, r2, #3 mask = 1 << (y & 7); - 18602: f002 0207 and.w r2, r2, #7 + 186e6: f002 0207 and.w r2, r2, #7 uint8_t *pBuf = &buffer[(y / 8) * WIDTH + x], - 18606: fb1c ec00 smlabb ip, ip, r0, lr + 186ea: fb1c ec00 smlabb ip, ip, r0, lr mask = 1 << (y & 7); - 1860a: 2001 movs r0, #1 - 1860c: fa00 f202 lsl.w r2, r0, r2 + 186ee: 2001 movs r0, #1 + 186f0: fa00 f202 lsl.w r2, r0, r2 switch(color) { - 18610: 4284 cmp r4, r0 + 186f4: 4284 cmp r4, r0 uint8_t *pBuf = &buffer[(y / 8) * WIDTH + x], - 18612: 4461 add r1, ip + 186f6: 4461 add r1, ip mask = 1 << (y & 7); - 18614: b2d2 uxtb r2, r2 + 186f8: b2d2 uxtb r2, r2 switch(color) { - 18616: d019 beq.n 1864c - 18618: 2c02 cmp r4, #2 - 1861a: d00d beq.n 18638 - 1861c: b104 cbz r4, 18620 + 186fa: d019 beq.n 18730 + 186fc: 2c02 cmp r4, #2 + 186fe: d00d beq.n 1871c + 18700: b104 cbz r4, 18704 case BMC_SSD1306_BLACK: mask = ~mask; while(w--) { *pBuf++ &= mask; }; break; case BMC_SSD1306_INVERSE: while(w--) { *pBuf++ ^= mask; }; break; } } } } - 1861e: bd30 pop {r4, r5, pc} + 18702: bd30 pop {r4, r5, pc} case BMC_SSD1306_BLACK: mask = ~mask; while(w--) { *pBuf++ &= mask; }; break; - 18620: 43d2 mvns r2, r2 - 18622: fa11 f383 uxtah r3, r1, r3 - 18626: b2d2 uxtb r2, r2 - 18628: f811 0b01 ldrb.w r0, [r1], #1 - 1862c: 4010 ands r0, r2 - 1862e: 4299 cmp r1, r3 - 18630: f801 0c01 strb.w r0, [r1, #-1] - 18634: d1f8 bne.n 18628 -} - 18636: bd30 pop {r4, r5, pc} + 18704: 43d2 mvns r2, r2 + 18706: fa11 f383 uxtah r3, r1, r3 + 1870a: b2d2 uxtb r2, r2 + 1870c: f811 0b01 ldrb.w r0, [r1], #1 + 18710: 4010 ands r0, r2 + 18712: 4299 cmp r1, r3 + 18714: f801 0c01 strb.w r0, [r1, #-1] + 18718: d1f8 bne.n 1870c +} + 1871a: bd30 pop {r4, r5, pc} case BMC_SSD1306_INVERSE: while(w--) { *pBuf++ ^= mask; }; break; - 18638: fa11 f383 uxtah r3, r1, r3 - 1863c: f811 0b01 ldrb.w r0, [r1], #1 - 18640: 4050 eors r0, r2 - 18642: 428b cmp r3, r1 - 18644: f801 0c01 strb.w r0, [r1, #-1] - 18648: d1f8 bne.n 1863c -} - 1864a: bd30 pop {r4, r5, pc} + 1871c: fa11 f383 uxtah r3, r1, r3 + 18720: f811 0b01 ldrb.w r0, [r1], #1 + 18724: 4050 eors r0, r2 + 18726: 428b cmp r3, r1 + 18728: f801 0c01 strb.w r0, [r1, #-1] + 1872c: d1f8 bne.n 18720 +} + 1872e: bd30 pop {r4, r5, pc} case BMC_SSD1306_WHITE: while(w--) { *pBuf++ |= mask; }; break; - 1864c: fa11 f383 uxtah r3, r1, r3 - 18650: f811 0b01 ldrb.w r0, [r1], #1 - 18654: 4310 orrs r0, r2 - 18656: 4299 cmp r1, r3 - 18658: f801 0c01 strb.w r0, [r1, #-1] - 1865c: d1f8 bne.n 18650 + 18730: fa11 f383 uxtah r3, r1, r3 + 18734: f811 0b01 ldrb.w r0, [r1], #1 + 18738: 4310 orrs r0, r2 + 1873a: 4299 cmp r1, r3 + 1873c: f801 0c01 strb.w r0, [r1, #-1] + 18740: d1f8 bne.n 18734 } - 1865e: bd30 pop {r4, r5, pc} + 18742: bd30 pop {r4, r5, pc} -00018660 : +00018744 : if(bSwap) drawFastHLineInternal(x, y, h, color); else drawFastVLineInternal(x, y, h, color); } void BMC_SSD1306::drawFastVLineInternal( - 18660: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 18744: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} int16_t x, int16_t __y, int16_t __h, uint16_t color) { if((x >= 0) && (x < WIDTH)) { // X coord in bounds? - 18664: f9b0 e008 ldrsh.w lr, [r0, #8] + 18748: f9b0 e008 ldrsh.w lr, [r0, #8] void BMC_SSD1306::drawFastVLineInternal( - 18668: f8bd 5018 ldrh.w r5, [sp, #24] + 1874c: f8bd 5018 ldrh.w r5, [sp, #24] if((x >= 0) && (x < WIDTH)) { // X coord in bounds? - 1866c: 458e cmp lr, r1 - 1866e: dd2d ble.n 186cc + 18750: 458e cmp lr, r1 + 18752: dd2d ble.n 187b0 if(__y < 0) { // Clip top - 18670: 2a00 cmp r2, #0 - 18672: db2d blt.n 186d0 + 18754: 2a00 cmp r2, #0 + 18756: db2d blt.n 187b4 __h += __y; __y = 0; - 18674: 4694 mov ip, r2 + 18758: 4694 mov ip, r2 } if((__y + __h) > HEIGHT) { // Clip bottom - 18676: f9b0 400a ldrsh.w r4, [r0, #10] - 1867a: 449c add ip, r3 - 1867c: 45a4 cmp ip, r4 - 1867e: dd01 ble.n 18684 + 1875a: f9b0 400a ldrsh.w r4, [r0, #10] + 1875e: 449c add ip, r3 + 18760: 45a4 cmp ip, r4 + 18762: dd01 ble.n 18768 __h = (HEIGHT - __y); - 18680: 1aa4 subs r4, r4, r2 - 18682: b223 sxth r3, r4 + 18764: 1aa4 subs r4, r4, r2 + 18766: b223 sxth r3, r4 } if(__h > 0) { // Proceed only if height is now positive - 18684: 2b00 cmp r3, #0 - 18686: dd21 ble.n 186cc + 18768: 2b00 cmp r3, #0 + 1876a: dd21 ble.n 187b0 // this display doesn't need ints for coordinates, // use local byte registers for faster juggling uint8_t y = __y, h = __h; uint8_t *pBuf = &buffer[(y / 8) * WIDTH + x]; - 18688: f3c2 04c4 ubfx r4, r2, #3, #5 - 1868c: 6a46 ldr r6, [r0, #36] ; 0x24 + 1876c: f3c2 04c4 ubfx r4, r2, #3, #5 + 18770: 6a46 ldr r6, [r0, #36] ; 0x24 // do the first partial byte, if necessary - this requires some masking uint8_t mod = (y & 7); if(mod) { - 1868e: f012 0207 ands.w r2, r2, #7 + 18772: f012 0207 ands.w r2, r2, #7 uint8_t y = __y, h = __h; - 18692: b2db uxtb r3, r3 + 18776: b2db uxtb r3, r3 uint8_t *pBuf = &buffer[(y / 8) * WIDTH + x]; - 18694: fb1e 1404 smlabb r4, lr, r4, r1 - 18698: eb06 0104 add.w r1, r6, r4 + 18778: fb1e 1404 smlabb r4, lr, r4, r1 + 1877c: eb06 0104 add.w r1, r6, r4 if(mod) { - 1869c: d036 beq.n 1870c + 18780: d036 beq.n 187f0 // mask off the high n bits we want to set mod = 8 - mod; - 1869e: f1c2 0c08 rsb ip, r2, #8 + 18782: f1c2 0c08 rsb ip, r2, #8 // note - lookup table results in a nearly 10% performance // improvement in fill* functions // uint8_t mask = ~(0xFF >> mod); static const uint8_t PROGMEM premask[8] = { 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE }; uint8_t mask = pgm_read_byte(&premask[mod]); - 186a2: f8df 8118 ldr.w r8, [pc, #280] ; 187bc + 18786: f8df 8118 ldr.w r8, [pc, #280] ; 188a0 mod = 8 - mod; - 186a6: fa5f fc8c uxtb.w ip, ip + 1878a: fa5f fc8c uxtb.w ip, ip // adjust the mask if we're not going to reach the end of this byte if(h < mod) mask &= (0XFF >> (mod - h)); - 186aa: 4563 cmp r3, ip + 1878e: 4563 cmp r3, ip uint8_t mask = pgm_read_byte(&premask[mod]); - 186ac: f818 700c ldrb.w r7, [r8, ip] + 18790: f818 700c ldrb.w r7, [r8, ip] if(h < mod) mask &= (0XFF >> (mod - h)); - 186b0: d218 bcs.n 186e4 - 186b2: ebac 0803 sub.w r8, ip, r3 - 186b6: f04f 0eff mov.w lr, #255 ; 0xff + 18794: d218 bcs.n 187c8 + 18796: ebac 0803 sub.w r8, ip, r3 + 1879a: f04f 0eff mov.w lr, #255 ; 0xff switch(color) { - 186ba: 2d01 cmp r5, #1 + 1879e: 2d01 cmp r5, #1 if(h < mod) mask &= (0XFF >> (mod - h)); - 186bc: fa4e fe08 asr.w lr, lr, r8 - 186c0: ea07 070e and.w r7, r7, lr + 187a0: fa4e fe08 asr.w lr, lr, r8 + 187a4: ea07 070e and.w r7, r7, lr switch(color) { - 186c4: d071 beq.n 187aa - 186c6: 2d02 cmp r5, #2 - 186c8: d049 beq.n 1875e - 186ca: b18d cbz r5, 186f0 + 187a8: d071 beq.n 1888e + 187aa: 2d02 cmp r5, #2 + 187ac: d049 beq.n 18842 + 187ae: b18d cbz r5, 187d4 } } } } // endif positive height } // endif x in bounds } - 186cc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 187b0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} __h += __y; - 186d0: 4413 add r3, r2 - 186d2: 2200 movs r2, #0 + 187b4: 4413 add r3, r2 + 187b6: 2200 movs r2, #0 if((__y + __h) > HEIGHT) { // Clip bottom - 186d4: f9b0 400a ldrsh.w r4, [r0, #10] + 187b8: f9b0 400a ldrsh.w r4, [r0, #10] __h += __y; - 186d8: b21b sxth r3, r3 + 187bc: b21b sxth r3, r3 __y = 0; - 186da: 4694 mov ip, r2 + 187be: 4694 mov ip, r2 if((__y + __h) > HEIGHT) { // Clip bottom - 186dc: 449c add ip, r3 - 186de: 45a4 cmp ip, r4 - 186e0: ddd0 ble.n 18684 - 186e2: e7cd b.n 18680 + 187c0: 449c add ip, r3 + 187c2: 45a4 cmp ip, r4 + 187c4: ddd0 ble.n 18768 + 187c6: e7cd b.n 18764 switch(color) { - 186e4: 2d01 cmp r5, #1 - 186e6: d060 beq.n 187aa - 186e8: 2d02 cmp r5, #2 - 186ea: d038 beq.n 1875e - 186ec: 2d00 cmp r5, #0 - 186ee: d13b bne.n 18768 + 187c8: 2d01 cmp r5, #1 + 187ca: d060 beq.n 1888e + 187cc: 2d02 cmp r5, #2 + 187ce: d038 beq.n 18842 + 187d0: 2d00 cmp r5, #0 + 187d2: d13b bne.n 1884c case BMC_SSD1306_BLACK: *pBuf &= ~mask; break; - 186f0: f816 e004 ldrb.w lr, [r6, r4] - 186f4: ea2e 0e07 bic.w lr, lr, r7 + 187d4: f816 e004 ldrb.w lr, [r6, r4] + 187d8: ea2e 0e07 bic.w lr, lr, r7 if(h >= mod) { // More to go? - 186f8: 4563 cmp r3, ip + 187dc: 4563 cmp r3, ip case BMC_SSD1306_INVERSE: *pBuf ^= mask; break; - 186fa: f806 e004 strb.w lr, [r6, r4] + 187de: f806 e004 strb.w lr, [r6, r4] pBuf += WIDTH; - 186fe: f9b0 4008 ldrsh.w r4, [r0, #8] + 187e2: f9b0 4008 ldrsh.w r4, [r0, #8] if(h >= mod) { // More to go? - 18702: d3e3 bcc.n 186cc + 187e6: d3e3 bcc.n 187b0 h -= mod; - 18704: 3a08 subs r2, #8 + 187e8: 3a08 subs r2, #8 pBuf += WIDTH; - 18706: 4421 add r1, r4 + 187ea: 4421 add r1, r4 h -= mod; - 18708: 4413 add r3, r2 - 1870a: b2db uxtb r3, r3 + 187ec: 4413 add r3, r2 + 187ee: b2db uxtb r3, r3 if(h >= 8) { - 1870c: 2b07 cmp r3, #7 - 1870e: d916 bls.n 1873e + 187f0: 2b07 cmp r3, #7 + 187f2: d916 bls.n 18822 if(color == BMC_SSD1306_INVERSE) { - 18710: 2d02 cmp r5, #2 - 18712: d035 beq.n 18780 + 187f4: 2d02 cmp r5, #2 + 187f6: d035 beq.n 18864 uint8_t val = (color != BMC_SSD1306_BLACK) ? 255 : 0; - 18714: f1b5 0c00 subs.w ip, r5, #0 - 18718: 461a mov r2, r3 - 1871a: bf18 it ne - 1871c: f04f 0c01 movne.w ip, #1 - 18720: f1cc 0c00 rsb ip, ip, #0 - 18724: fa5f fc8c uxtb.w ip, ip + 187f8: f1b5 0c00 subs.w ip, r5, #0 + 187fc: 461a mov r2, r3 + 187fe: bf18 it ne + 18800: f04f 0c01 movne.w ip, #1 + 18804: f1cc 0c00 rsb ip, ip, #0 + 18808: fa5f fc8c uxtb.w ip, ip h -= 8; // Subtract 8 rows from height - 18728: 3a08 subs r2, #8 + 1880c: 3a08 subs r2, #8 *pBuf = val; // Set byte - 1872a: f881 c000 strb.w ip, [r1] + 1880e: f881 c000 strb.w ip, [r1] pBuf += WIDTH; // Advance pointer 8 rows - 1872e: f9b0 4008 ldrsh.w r4, [r0, #8] + 18812: f9b0 4008 ldrsh.w r4, [r0, #8] h -= 8; // Subtract 8 rows from height - 18732: b2d2 uxtb r2, r2 + 18816: b2d2 uxtb r2, r2 pBuf += WIDTH; // Advance pointer 8 rows - 18734: 4421 add r1, r4 + 18818: 4421 add r1, r4 } while(h >= 8); - 18736: 2a07 cmp r2, #7 - 18738: d8f6 bhi.n 18728 - 1873a: f003 0307 and.w r3, r3, #7 + 1881a: 2a07 cmp r2, #7 + 1881c: d8f6 bhi.n 1880c + 1881e: f003 0307 and.w r3, r3, #7 if(h) { // Do the final partial byte, if necessary - 1873e: 2b00 cmp r3, #0 - 18740: d0c4 beq.n 186cc + 18822: 2b00 cmp r3, #0 + 18824: d0c4 beq.n 187b0 uint8_t mask = pgm_read_byte(&postmask[mod]); - 18742: 4a1e ldr r2, [pc, #120] ; (187bc ) + 18826: 4a1e ldr r2, [pc, #120] ; (188a0 ) switch(color) { - 18744: 2d01 cmp r5, #1 + 18828: 2d01 cmp r5, #1 uint8_t mask = pgm_read_byte(&postmask[mod]); - 18746: 4413 add r3, r2 - 18748: 7a1b ldrb r3, [r3, #8] + 1882a: 4413 add r3, r2 + 1882c: 7a1b ldrb r3, [r3, #8] switch(color) { - 1874a: d033 beq.n 187b4 - 1874c: 2d02 cmp r5, #2 - 1874e: d028 beq.n 187a2 - 18750: 2d00 cmp r5, #0 - 18752: d1bb bne.n 186cc + 1882e: d033 beq.n 18898 + 18830: 2d02 cmp r5, #2 + 18832: d028 beq.n 18886 + 18834: 2d00 cmp r5, #0 + 18836: d1bb bne.n 187b0 case BMC_SSD1306_BLACK: *pBuf &= ~mask; break; - 18754: 780a ldrb r2, [r1, #0] - 18756: ea22 0303 bic.w r3, r2, r3 - 1875a: 700b strb r3, [r1, #0] - 1875c: e7b6 b.n 186cc + 18838: 780a ldrb r2, [r1, #0] + 1883a: ea22 0303 bic.w r3, r2, r3 + 1883e: 700b strb r3, [r1, #0] + 18840: e7b6 b.n 187b0 case BMC_SSD1306_INVERSE: *pBuf ^= mask; break; - 1875e: f816 e004 ldrb.w lr, [r6, r4] - 18762: ea87 0e0e eor.w lr, r7, lr - 18766: e7c7 b.n 186f8 + 18842: f816 e004 ldrb.w lr, [r6, r4] + 18846: ea87 0e0e eor.w lr, r7, lr + 1884a: e7c7 b.n 187dc h -= mod; - 18768: 3a08 subs r2, #8 + 1884c: 3a08 subs r2, #8 pBuf += WIDTH; - 1876a: 4471 add r1, lr + 1884e: 4471 add r1, lr h -= mod; - 1876c: 4413 add r3, r2 - 1876e: b2db uxtb r3, r3 + 18850: 4413 add r3, r2 + 18852: b2db uxtb r3, r3 if(h >= 8) { - 18770: 2b07 cmp r3, #7 - 18772: d8cf bhi.n 18714 + 18854: 2b07 cmp r3, #7 + 18856: d8cf bhi.n 187f8 if(h) { // Do the final partial byte, if necessary - 18774: 2b00 cmp r3, #0 - 18776: d0a9 beq.n 186cc + 18858: 2b00 cmp r3, #0 + 1885a: d0a9 beq.n 187b0 uint8_t mask = pgm_read_byte(&postmask[mod]); - 18778: 4498 add r8, r3 - 1877a: f898 3008 ldrb.w r3, [r8, #8] + 1885c: 4498 add r8, r3 + 1885e: f898 3008 ldrb.w r3, [r8, #8] switch(color) { - 1877e: e7e5 b.n 1874c - 18780: 461a mov r2, r3 + 18862: e7e5 b.n 18830 + 18864: 461a mov r2, r3 *pBuf ^= 0xFF; // Invert byte - 18782: 780c ldrb r4, [r1, #0] + 18866: 780c ldrb r4, [r1, #0] h -= 8; // Subtract 8 rows from height - 18784: 3a08 subs r2, #8 + 18868: 3a08 subs r2, #8 *pBuf ^= 0xFF; // Invert byte - 18786: 43e4 mvns r4, r4 + 1886a: 43e4 mvns r4, r4 h -= 8; // Subtract 8 rows from height - 18788: b2d2 uxtb r2, r2 + 1886c: b2d2 uxtb r2, r2 *pBuf ^= 0xFF; // Invert byte - 1878a: 700c strb r4, [r1, #0] + 1886e: 700c strb r4, [r1, #0] } while(h >= 8); - 1878c: 2a07 cmp r2, #7 + 18870: 2a07 cmp r2, #7 pBuf += WIDTH; // Advance pointer 8 rows - 1878e: f9b0 4008 ldrsh.w r4, [r0, #8] - 18792: 4421 add r1, r4 + 18872: f9b0 4008 ldrsh.w r4, [r0, #8] + 18876: 4421 add r1, r4 } while(h >= 8); - 18794: d8f5 bhi.n 18782 + 18878: d8f5 bhi.n 18866 if(h) { // Do the final partial byte, if necessary - 18796: f013 0307 ands.w r3, r3, #7 - 1879a: d097 beq.n 186cc + 1887a: f013 0307 ands.w r3, r3, #7 + 1887e: d097 beq.n 187b0 uint8_t mask = pgm_read_byte(&postmask[mod]); - 1879c: 4a07 ldr r2, [pc, #28] ; (187bc ) - 1879e: 4413 add r3, r2 - 187a0: 7a1b ldrb r3, [r3, #8] + 18880: 4a07 ldr r2, [pc, #28] ; (188a0 ) + 18882: 4413 add r3, r2 + 18884: 7a1b ldrb r3, [r3, #8] case BMC_SSD1306_INVERSE: *pBuf ^= mask; break; - 187a2: 780a ldrb r2, [r1, #0] - 187a4: 4053 eors r3, r2 - 187a6: 700b strb r3, [r1, #0] + 18886: 780a ldrb r2, [r1, #0] + 18888: 4053 eors r3, r2 + 1888a: 700b strb r3, [r1, #0] } - 187a8: e790 b.n 186cc + 1888c: e790 b.n 187b0 case BMC_SSD1306_WHITE: *pBuf |= mask; break; - 187aa: f816 e004 ldrb.w lr, [r6, r4] - 187ae: ea47 0e0e orr.w lr, r7, lr - 187b2: e7a1 b.n 186f8 + 1888e: f816 e004 ldrb.w lr, [r6, r4] + 18892: ea47 0e0e orr.w lr, r7, lr + 18896: e7a1 b.n 187dc case BMC_SSD1306_WHITE: *pBuf |= mask; break; - 187b4: 780a ldrb r2, [r1, #0] - 187b6: 4313 orrs r3, r2 - 187b8: 700b strb r3, [r1, #0] - 187ba: e787 b.n 186cc - 187bc: 6001e12c .word 0x6001e12c + 18898: 780a ldrb r2, [r1, #0] + 1889a: 4313 orrs r3, r2 + 1889c: 700b strb r3, [r1, #0] + 1889e: e787 b.n 187b0 + 188a0: 6001e12c .word 0x6001e12c -000187c0 : +000188a4 : int16_t x, int16_t y, int16_t w, uint16_t color) { - 187c0: 4694 mov ip, r2 + 188a4: 4694 mov ip, r2 switch(rotation) { - 187c2: 7e82 ldrb r2, [r0, #26] - 187c4: 2a02 cmp r2, #2 + 188a6: 7e82 ldrb r2, [r0, #26] + 188a8: 2a02 cmp r2, #2 int16_t x, int16_t y, int16_t w, uint16_t color) { - 187c6: b410 push {r4} - 187c8: f8bd 4004 ldrh.w r4, [sp, #4] + 188aa: b410 push {r4} + 188ac: f8bd 4004 ldrh.w r4, [sp, #4] switch(rotation) { - 187cc: d028 beq.n 18820 - 187ce: 2a03 cmp r2, #3 - 187d0: d021 beq.n 18816 - 187d2: 2a01 cmp r2, #1 - 187d4: d00f beq.n 187f6 + 188b0: d028 beq.n 18904 + 188b2: 2a03 cmp r2, #3 + 188b4: d021 beq.n 188fa + 188b6: 2a01 cmp r2, #1 + 188b8: d00f beq.n 188da if((y >= 0) && (y < HEIGHT)) { // Y coord in bounds? - 187d6: f1bc 0f00 cmp.w ip, #0 - 187da: db09 blt.n 187f0 - 187dc: f9b0 200a ldrsh.w r2, [r0, #10] - 187e0: 4562 cmp r2, ip - 187e2: dd05 ble.n 187f0 - 187e4: 9401 str r4, [sp, #4] - 187e6: 4662 mov r2, ip -} - 187e8: f85d 4b04 ldr.w r4, [sp], #4 - 187ec: f7ff bef4 b.w 185d8 - 187f0: f85d 4b04 ldr.w r4, [sp], #4 - 187f4: 4770 bx lr + 188ba: f1bc 0f00 cmp.w ip, #0 + 188be: db09 blt.n 188d4 + 188c0: f9b0 200a ldrsh.w r2, [r0, #10] + 188c4: 4562 cmp r2, ip + 188c6: dd05 ble.n 188d4 + 188c8: 9401 str r4, [sp, #4] + 188ca: 4662 mov r2, ip +} + 188cc: f85d 4b04 ldr.w r4, [sp], #4 + 188d0: f7ff bef4 b.w 186bc + 188d4: f85d 4b04 ldr.w r4, [sp], #4 + 188d8: 4770 bx lr x = WIDTH - x - 1; - 187f6: 8902 ldrh r2, [r0, #8] - 187f8: eba2 020c sub.w r2, r2, ip - 187fc: 3a01 subs r2, #1 - 187fe: fa0f fc82 sxth.w ip, r2 + 188da: 8902 ldrh r2, [r0, #8] + 188dc: eba2 020c sub.w r2, r2, ip + 188e0: 3a01 subs r2, #1 + 188e2: fa0f fc82 sxth.w ip, r2 if((x >= 0) && (x < WIDTH)) { // X coord in bounds? - 18802: f1bc 0f00 cmp.w ip, #0 - 18806: dbf3 blt.n 187f0 - 18808: 460a mov r2, r1 - 1880a: 9401 str r4, [sp, #4] - 1880c: 4661 mov r1, ip -} - 1880e: f85d 4b04 ldr.w r4, [sp], #4 - 18812: f7ff bf25 b.w 18660 + 188e6: f1bc 0f00 cmp.w ip, #0 + 188ea: dbf3 blt.n 188d4 + 188ec: 460a mov r2, r1 + 188ee: 9401 str r4, [sp, #4] + 188f0: 4661 mov r1, ip +} + 188f2: f85d 4b04 ldr.w r4, [sp], #4 + 188f6: f7ff bf25 b.w 18744 y -= (w-1); - 18816: 4419 add r1, r3 - 18818: 8942 ldrh r2, [r0, #10] - 1881a: 1a52 subs r2, r2, r1 - 1881c: b211 sxth r1, r2 + 188fa: 4419 add r1, r3 + 188fc: 8942 ldrh r2, [r0, #10] + 188fe: 1a52 subs r2, r2, r1 + 18900: b211 sxth r1, r2 if(bSwap) drawFastVLineInternal(x, y, w, color); - 1881e: e7f0 b.n 18802 + 18902: e7f0 b.n 188e6 y = HEIGHT - y - 1; - 18820: 8942 ldrh r2, [r0, #10] + 18904: 8942 ldrh r2, [r0, #10] x -= (w-1); - 18822: 4419 add r1, r3 + 18906: 4419 add r1, r3 y = HEIGHT - y - 1; - 18824: eba2 020c sub.w r2, r2, ip - 18828: 3a01 subs r2, #1 - 1882a: fa0f fc82 sxth.w ip, r2 + 18908: eba2 020c sub.w r2, r2, ip + 1890c: 3a01 subs r2, #1 + 1890e: fa0f fc82 sxth.w ip, r2 x -= (w-1); - 1882e: 8902 ldrh r2, [r0, #8] - 18830: 1a52 subs r2, r2, r1 - 18832: b211 sxth r1, r2 + 18912: 8902 ldrh r2, [r0, #8] + 18914: 1a52 subs r2, r2, r1 + 18916: b211 sxth r1, r2 if(bSwap) drawFastVLineInternal(x, y, w, color); - 18834: e7cf b.n 187d6 - 18836: bf00 nop + 18918: e7cf b.n 188ba + 1891a: bf00 nop -00018838 : +0001891c : int16_t x, int16_t y, int16_t h, uint16_t color) { - 18838: 4694 mov ip, r2 + 1891c: 4694 mov ip, r2 switch(rotation) { - 1883a: 7e82 ldrb r2, [r0, #26] - 1883c: 2a02 cmp r2, #2 + 1891e: 7e82 ldrb r2, [r0, #26] + 18920: 2a02 cmp r2, #2 int16_t x, int16_t y, int16_t h, uint16_t color) { - 1883e: b410 push {r4} - 18840: f8bd 4004 ldrh.w r4, [sp, #4] + 18922: b410 push {r4} + 18924: f8bd 4004 ldrh.w r4, [sp, #4] switch(rotation) { - 18844: d027 beq.n 18896 - 18846: 2a03 cmp r2, #3 - 18848: d014 beq.n 18874 - 1884a: 2a01 cmp r2, #1 - 1884c: d007 beq.n 1885e + 18928: d027 beq.n 1897a + 1892a: 2a03 cmp r2, #3 + 1892c: d014 beq.n 18958 + 1892e: 2a01 cmp r2, #1 + 18930: d007 beq.n 18942 if((x >= 0) && (x < WIDTH)) { // X coord in bounds? - 1884e: 2900 cmp r1, #0 - 18850: db0d blt.n 1886e - 18852: 9401 str r4, [sp, #4] - 18854: 4662 mov r2, ip + 18932: 2900 cmp r1, #0 + 18934: db0d blt.n 18952 + 18936: 9401 str r4, [sp, #4] + 18938: 4662 mov r2, ip } - 18856: f85d 4b04 ldr.w r4, [sp], #4 - 1885a: f7ff bf01 b.w 18660 + 1893a: f85d 4b04 ldr.w r4, [sp], #4 + 1893e: f7ff bf01 b.w 18744 x -= (h-1); - 1885e: 449c add ip, r3 - 18860: 8902 ldrh r2, [r0, #8] + 18942: 449c add ip, r3 + 18944: 8902 ldrh r2, [r0, #8] if((y >= 0) && (y < HEIGHT)) { // Y coord in bounds? - 18862: 2900 cmp r1, #0 + 18946: 2900 cmp r1, #0 x -= (h-1); - 18864: eba2 020c sub.w r2, r2, ip - 18868: fa0f fc82 sxth.w ip, r2 + 18948: eba2 020c sub.w r2, r2, ip + 1894c: fa0f fc82 sxth.w ip, r2 if((y >= 0) && (y < HEIGHT)) { // Y coord in bounds? - 1886c: da08 bge.n 18880 + 18950: da08 bge.n 18964 } - 1886e: f85d 4b04 ldr.w r4, [sp], #4 - 18872: 4770 bx lr + 18952: f85d 4b04 ldr.w r4, [sp], #4 + 18956: 4770 bx lr y = HEIGHT - y - 1; - 18874: 8942 ldrh r2, [r0, #10] - 18876: 1a52 subs r2, r2, r1 - 18878: 3a01 subs r2, #1 - 1887a: b211 sxth r1, r2 + 18958: 8942 ldrh r2, [r0, #10] + 1895a: 1a52 subs r2, r2, r1 + 1895c: 3a01 subs r2, #1 + 1895e: b211 sxth r1, r2 if((y >= 0) && (y < HEIGHT)) { // Y coord in bounds? - 1887c: 2900 cmp r1, #0 - 1887e: dbf6 blt.n 1886e - 18880: f9b0 200a ldrsh.w r2, [r0, #10] - 18884: 428a cmp r2, r1 - 18886: ddf2 ble.n 1886e - 18888: 460a mov r2, r1 - 1888a: 9401 str r4, [sp, #4] - 1888c: 4661 mov r1, ip -} - 1888e: f85d 4b04 ldr.w r4, [sp], #4 - 18892: f7ff bea1 b.w 185d8 + 18960: 2900 cmp r1, #0 + 18962: dbf6 blt.n 18952 + 18964: f9b0 200a ldrsh.w r2, [r0, #10] + 18968: 428a cmp r2, r1 + 1896a: ddf2 ble.n 18952 + 1896c: 460a mov r2, r1 + 1896e: 9401 str r4, [sp, #4] + 18970: 4661 mov r1, ip +} + 18972: f85d 4b04 ldr.w r4, [sp], #4 + 18976: f7ff bea1 b.w 186bc x = WIDTH - x - 1; - 18896: 8902 ldrh r2, [r0, #8] + 1897a: 8902 ldrh r2, [r0, #8] y -= (h-1); - 18898: 449c add ip, r3 + 1897c: 449c add ip, r3 x = WIDTH - x - 1; - 1889a: 1a52 subs r2, r2, r1 - 1889c: 3a01 subs r2, #1 - 1889e: b211 sxth r1, r2 + 1897e: 1a52 subs r2, r2, r1 + 18980: 3a01 subs r2, #1 + 18982: b211 sxth r1, r2 y -= (h-1); - 188a0: 8942 ldrh r2, [r0, #10] - 188a2: eba2 020c sub.w r2, r2, ip - 188a6: fa0f fc82 sxth.w ip, r2 + 18984: 8942 ldrh r2, [r0, #10] + 18986: eba2 020c sub.w r2, r2, ip + 1898a: fa0f fc82 sxth.w ip, r2 if(bSwap) drawFastHLineInternal(x, y, h, color); - 188aa: e7d0 b.n 1884e + 1898e: e7d0 b.n 18932 -000188ac : +00018990 : BMC_SSD1306::BMC_SSD1306(uint8_t w, uint8_t h):Adafruit_GFX(w, h), buffer(NULL){ - 188ac: b510 push {r4, lr} - 188ae: 4604 mov r4, r0 - 188b0: f00d f9ac bl 25c0c - 188b4: 4a02 ldr r2, [pc, #8] ; (188c0 ) - 188b6: 2300 movs r3, #0 + 18990: b510 push {r4, lr} + 18992: 4604 mov r4, r0 + 18994: f00d f9b0 bl 25cf8 + 18998: 4a02 ldr r2, [pc, #8] ; (189a4 ) + 1899a: 2300 movs r3, #0 } - 188b8: 4620 mov r0, r4 + 1899c: 4620 mov r0, r4 BMC_SSD1306::BMC_SSD1306(uint8_t w, uint8_t h):Adafruit_GFX(w, h), buffer(NULL){ - 188ba: 6022 str r2, [r4, #0] - 188bc: 6263 str r3, [r4, #36] ; 0x24 + 1899e: 6022 str r2, [r4, #0] + 189a0: 6263 str r3, [r4, #36] ; 0x24 } - 188be: bd10 pop {r4, pc} - 188c0: 200040f8 .word 0x200040f8 + 189a2: bd10 pop {r4, pc} + 189a4: 200041b8 .word 0x200041b8 -000188c4 : +000189a8 : BMC_SSD1306::~BMC_SSD1306(void) { - 188c4: b510 push {r4, lr} - 188c6: 4604 mov r4, r0 + 189a8: b510 push {r4, lr} + 189aa: 4604 mov r4, r0 if(buffer) { - 188c8: 6a40 ldr r0, [r0, #36] ; 0x24 - 188ca: b108 cbz r0, 188d0 + 189ac: 6a40 ldr r0, [r0, #36] ; 0x24 + 189ae: b108 cbz r0, 189b4 free(buffer); - 188cc: f014 ffa2 bl 2d814 + 189b0: f014 ffa4 bl 2d8fc } - 188d0: 4620 mov r0, r4 - 188d2: bd10 pop {r4, pc} + 189b4: 4620 mov r0, r4 + 189b6: bd10 pop {r4, pc} -000188d4 : +000189b8 : memset(buffer, 0, WIDTH * ((HEIGHT + 7) / 8)); - 188d4: f9b0 300a ldrsh.w r3, [r0, #10] - 188d8: 2100 movs r1, #0 - 188da: 1dda adds r2, r3, #7 - 188dc: bf48 it mi - 188de: f103 020e addmi.w r2, r3, #14 - 188e2: f9b0 3008 ldrsh.w r3, [r0, #8] - 188e6: 6a40 ldr r0, [r0, #36] ; 0x24 - 188e8: 10d2 asrs r2, r2, #3 - 188ea: fb03 f202 mul.w r2, r3, r2 - 188ee: f015 bdcd b.w 2e48c - 188f2: bf00 nop - -000188f4 : + 189b8: f9b0 300a ldrsh.w r3, [r0, #10] + 189bc: 2100 movs r1, #0 + 189be: 1dda adds r2, r3, #7 + 189c0: bf48 it mi + 189c2: f103 020e addmi.w r2, r3, #14 + 189c6: f9b0 3008 ldrsh.w r3, [r0, #8] + 189ca: 6a40 ldr r0, [r0, #36] ; 0x24 + 189cc: 10d2 asrs r2, r2, #3 + 189ce: fb03 f202 mul.w r2, r3, r2 + 189d2: f015 bdcf b.w 2e574 + 189d6: bf00 nop + +000189d8 : display() function -- buffer contents are not changed, rather a different pixel mode of the display hardware is used. When enabled, drawing BMC_SSD1306_BLACK (value 0) pixels will actually draw white, BMC_SSD1306_WHITE (value 1) will draw black. */ void BMC_SSD1306::invertDisplay(boolean i) { - 188f4: b570 push {r4, r5, r6, lr} + 189d8: b570 push {r4, r5, r6, lr} transmitting = 1; - 188f6: 2601 movs r6, #1 + 189da: 2601 movs r6, #1 txBuffer[0] = (address << 1); - 188f8: f890 3028 ldrb.w r3, [r0, #40] ; 0x28 - 188fc: 4c0c ldr r4, [pc, #48] ; (18930 ) - 188fe: 460d mov r5, r1 - 18900: 40b3 lsls r3, r6 + 189dc: f890 3028 ldrb.w r3, [r0, #40] ; 0x28 + 189e0: 4c0c ldr r4, [pc, #48] ; (18a14 ) + 189e2: 460d mov r5, r1 + 189e4: 40b3 lsls r3, r6 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18902: 2100 movs r1, #0 - 18904: 4620 mov r0, r4 + 189e6: 2100 movs r1, #0 + 189e8: 4620 mov r0, r4 transmitting = 1; - 18906: f884 6130 strb.w r6, [r4, #304] ; 0x130 + 189ea: f884 6130 strb.w r6, [r4, #304] ; 0x130 txBuffer[0] = (address << 1); - 1890a: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 189ee: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 txBufferLength = 1; - 1890e: f884 612f strb.w r6, [r4, #303] ; 0x12f - 18912: f00c fc51 bl 251b8 + 189f2: f884 612f strb.w r6, [r4, #303] ; 0x12f + 189f6: f00c fc55 bl 252a4 ssd1306_command1(i ? BMC_SSD1306_INVERTDISPLAY : BMC_SSD1306_NORMALDISPLAY); - 18916: f1a5 015a sub.w r1, r5, #90 ; 0x5a + 189fa: f1a5 015a sub.w r1, r5, #90 ; 0x5a Wire.write(c); - 1891a: 4620 mov r0, r4 - 1891c: b2c9 uxtb r1, r1 - 1891e: f00c fc4b bl 251b8 + 189fe: 4620 mov r0, r4 + 18a00: b2c9 uxtb r1, r1 + 18a02: f00c fc4f bl 252a4 return endTransmission(1); - 18922: 4631 mov r1, r6 - 18924: 4620 mov r0, r4 + 18a06: 4631 mov r1, r6 + 18a08: 4620 mov r0, r4 } - 18926: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 1892a: f00c bd53 b.w 253d4 - 1892e: bf00 nop - 18930: 2000b0f8 .word 0x2000b0f8 + 18a0a: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 18a0e: f00c bd57 b.w 254c0 + 18a12: bf00 nop + 18a14: 2000b118 .word 0x2000b118 -00018934 : +00018a18 : true to enable lower brightness mode, false for full brightness. @return None (void). @note This has an immediate effect on the display, no need to call the display() function -- buffer contents are not changed. */ void BMC_SSD1306::dim(boolean dim) { - 18934: b5f8 push {r3, r4, r5, r6, r7, lr} - 18936: 4606 mov r6, r0 + 18a18: b5f8 push {r3, r4, r5, r6, r7, lr} + 18a1a: 4606 mov r6, r0 uint8_t contrast; if(dim) { - 18938: bb99 cbnz r1, 189a2 + 18a1c: bb99 cbnz r1, 18a86 contrast = 0; // Dimmed display } else { contrast = (vccstate == BMC_SSD1306_EXTERNALVCC) ? 0x9F : 0xCF; - 1893a: f990 3029 ldrsb.w r3, [r0, #41] ; 0x29 - 1893e: 2b01 cmp r3, #1 - 18940: bf0c ite eq - 18942: 279f moveq r7, #159 ; 0x9f - 18944: 27cf movne r7, #207 ; 0xcf + 18a1e: f990 3029 ldrsb.w r3, [r0, #41] ; 0x29 + 18a22: 2b01 cmp r3, #1 + 18a24: bf0c ite eq + 18a26: 279f moveq r7, #159 ; 0x9f + 18a28: 27cf movne r7, #207 ; 0xcf transmitting = 1; - 18946: 2501 movs r5, #1 + 18a2a: 2501 movs r5, #1 txBuffer[0] = (address << 1); - 18948: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 - 1894c: 4c16 ldr r4, [pc, #88] ; (189a8 ) + 18a2c: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18a30: 4c16 ldr r4, [pc, #88] ; (18a8c ) Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 1894e: 2100 movs r1, #0 - 18950: 40ab lsls r3, r5 - 18952: 4620 mov r0, r4 + 18a32: 2100 movs r1, #0 + 18a34: 40ab lsls r3, r5 + 18a36: 4620 mov r0, r4 transmitting = 1; - 18954: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18a38: f884 5130 strb.w r5, [r4, #304] ; 0x130 txBuffer[0] = (address << 1); - 18958: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18a3c: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 txBufferLength = 1; - 1895c: f884 512f strb.w r5, [r4, #303] ; 0x12f - 18960: f00c fc2a bl 251b8 + 18a40: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18a44: f00c fc2e bl 252a4 Wire.write(c); - 18964: 2181 movs r1, #129 ; 0x81 - 18966: 4620 mov r0, r4 - 18968: f00c fc26 bl 251b8 + 18a48: 2181 movs r1, #129 ; 0x81 + 18a4a: 4620 mov r0, r4 + 18a4c: f00c fc2a bl 252a4 return endTransmission(1); - 1896c: 4629 mov r1, r5 - 1896e: 4620 mov r0, r4 - 18970: f00c fd30 bl 253d4 + 18a50: 4629 mov r1, r5 + 18a52: 4620 mov r0, r4 + 18a54: f00c fd34 bl 254c0 txBuffer[0] = (address << 1); - 18974: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18a58: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18978: 2100 movs r1, #0 - 1897a: 4620 mov r0, r4 - 1897c: 40ab lsls r3, r5 + 18a5c: 2100 movs r1, #0 + 18a5e: 4620 mov r0, r4 + 18a60: 40ab lsls r3, r5 transmitting = 1; - 1897e: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18a62: f884 5130 strb.w r5, [r4, #304] ; 0x130 txBufferLength = 1; - 18982: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18a66: f884 512f strb.w r5, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 18986: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 1898a: f00c fc15 bl 251b8 + 18a6a: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18a6e: f00c fc19 bl 252a4 Wire.write(c); - 1898e: 4639 mov r1, r7 - 18990: 4620 mov r0, r4 - 18992: f00c fc11 bl 251b8 + 18a72: 4639 mov r1, r7 + 18a74: 4620 mov r0, r4 + 18a76: f00c fc15 bl 252a4 return endTransmission(1); - 18996: 4629 mov r1, r5 - 18998: 4620 mov r0, r4 + 18a7a: 4629 mov r1, r5 + 18a7c: 4620 mov r0, r4 } // the range of contrast to too small to be really useful // it is useful to dim the display ssd1306_command1(BMC_SSD1306_SETCONTRAST); ssd1306_command1(contrast); } - 1899a: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} - 1899e: f00c bd19 b.w 253d4 + 18a7e: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} + 18a82: f00c bd1d b.w 254c0 contrast = 0; // Dimmed display - 189a2: 2700 movs r7, #0 - 189a4: e7cf b.n 18946 - 189a6: bf00 nop - 189a8: 2000b0f8 .word 0x2000b0f8 + 18a86: 2700 movs r7, #0 + 18a88: e7cf b.n 18a2a + 18a8a: bf00 nop + 18a8c: 2000b118 .word 0x2000b118 -000189ac : +00018a90 : void BMC_SSD1306::display(void) { - 189ac: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 189b0: 4607 mov r7, r0 + 18a90: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 18a94: 4607 mov r7, r0 transmitting = 1; - 189b2: 2401 movs r4, #1 + 18a96: 2401 movs r4, #1 txBuffer[0] = (address << 1); - 189b4: 4d4a ldr r5, [pc, #296] ; (18ae0 ) + 18a98: 4d4a ldr r5, [pc, #296] ; (18bc4 ) Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 189b6: 2100 movs r1, #0 - 189b8: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 + 18a9a: 2100 movs r1, #0 + 18a9c: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 return endTransmission(1); - 189bc: 46a1 mov r9, r4 - 189be: 4e49 ldr r6, [pc, #292] ; (18ae4 ) - 189c0: 4628 mov r0, r5 + 18aa0: 46a1 mov r9, r4 + 18aa2: 4e49 ldr r6, [pc, #292] ; (18bc8 ) + 18aa4: 4628 mov r0, r5 txBuffer[0] = (address << 1); - 189c2: 40a3 lsls r3, r4 + 18aa6: 40a3 lsls r3, r4 transmitting = 1; - 189c4: f885 4130 strb.w r4, [r5, #304] ; 0x130 + 18aa8: f885 4130 strb.w r4, [r5, #304] ; 0x130 txBufferLength = 1; - 189c8: f885 412f strb.w r4, [r5, #303] ; 0x12f - 189cc: f106 0804 add.w r8, r6, #4 + 18aac: f885 412f strb.w r4, [r5, #303] ; 0x12f + 18ab0: f106 0804 add.w r8, r6, #4 txBuffer[0] = (address << 1); - 189d0: f885 30a5 strb.w r3, [r5, #165] ; 0xa5 - 189d4: f00c fbf0 bl 251b8 - 189d8: 2122 movs r1, #34 ; 0x22 - 189da: e001 b.n 189e0 + 18ab4: f885 30a5 strb.w r3, [r5, #165] ; 0xa5 + 18ab8: f00c fbf4 bl 252a4 + 18abc: 2122 movs r1, #34 ; 0x22 + 18abe: e001 b.n 18ac4 Wire.write(pgm_read_byte(c++)); - 189dc: f816 1f01 ldrb.w r1, [r6, #1]! - 189e0: 4628 mov r0, r5 + 18ac0: f816 1f01 ldrb.w r1, [r6, #1]! + 18ac4: 4628 mov r0, r5 bytesOut++; - 189e2: 3401 adds r4, #1 + 18ac6: 3401 adds r4, #1 Wire.write(pgm_read_byte(c++)); - 189e4: f00c fbe8 bl 251b8 + 18ac8: f00c fbec bl 252a4 while(n--) { - 189e8: 4546 cmp r6, r8 + 18acc: 4546 cmp r6, r8 bytesOut++; - 189ea: b2e4 uxtb r4, r4 + 18ace: b2e4 uxtb r4, r4 while(n--) { - 189ec: d014 beq.n 18a18 + 18ad0: d014 beq.n 18afc if(bytesOut >= WIRE_MAX) { - 189ee: 2c88 cmp r4, #136 ; 0x88 - 189f0: d1f4 bne.n 189dc + 18ad2: 2c88 cmp r4, #136 ; 0x88 + 18ad4: d1f4 bne.n 18ac0 return endTransmission(1); - 189f2: 2101 movs r1, #1 - 189f4: 4628 mov r0, r5 - 189f6: f00c fced bl 253d4 + 18ad6: 2101 movs r1, #1 + 18ad8: 4628 mov r0, r5 + 18ada: f00c fcf1 bl 254c0 bytesOut = 1; - 189fa: 2401 movs r4, #1 + 18ade: 2401 movs r4, #1 txBuffer[0] = (address << 1); - 189fc: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 + 18ae0: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18a00: 2100 movs r1, #0 - 18a02: 4628 mov r0, r5 + 18ae4: 2100 movs r1, #0 + 18ae6: 4628 mov r0, r5 transmitting = 1; - 18a04: f885 9130 strb.w r9, [r5, #304] ; 0x130 + 18ae8: f885 9130 strb.w r9, [r5, #304] ; 0x130 txBuffer[0] = (address << 1); - 18a08: 40a3 lsls r3, r4 + 18aec: 40a3 lsls r3, r4 txBufferLength = 1; - 18a0a: f885 912f strb.w r9, [r5, #303] ; 0x12f + 18aee: f885 912f strb.w r9, [r5, #303] ; 0x12f txBuffer[0] = (address << 1); - 18a0e: f885 30a5 strb.w r3, [r5, #165] ; 0xa5 - 18a12: f00c fbd1 bl 251b8 + 18af2: f885 30a5 strb.w r3, [r5, #165] ; 0xa5 + 18af6: f00c fbd5 bl 252a4 bytesOut = 1; - 18a16: e7e1 b.n 189dc + 18afa: e7e1 b.n 18ac0 return endTransmission(1); - 18a18: 2101 movs r1, #1 - 18a1a: 4831 ldr r0, [pc, #196] ; (18ae0 ) - 18a1c: f00c fcda bl 253d4 + 18afc: 2101 movs r1, #1 + 18afe: 4831 ldr r0, [pc, #196] ; (18bc4 ) + 18b00: f00c fcde bl 254c0 ssd1306_command1(WIDTH - 1); // Column end address - 18a20: 893c ldrh r4, [r7, #8] + 18b04: 893c ldrh r4, [r7, #8] txBuffer[0] = (address << 1); - 18a22: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 + 18b06: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 transmitting = 1; - 18a26: 2601 movs r6, #1 - 18a28: 3c01 subs r4, #1 + 18b0a: 2601 movs r6, #1 + 18b0c: 3c01 subs r4, #1 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18a2a: 2100 movs r1, #0 + 18b0e: 2100 movs r1, #0 txBuffer[0] = (address << 1); - 18a2c: 40b3 lsls r3, r6 - 18a2e: 482c ldr r0, [pc, #176] ; (18ae0 ) + 18b10: 40b3 lsls r3, r6 + 18b12: 482c ldr r0, [pc, #176] ; (18bc4 ) ssd1306_command1(WIDTH - 1); // Column end address - 18a30: b2e4 uxtb r4, r4 + 18b14: b2e4 uxtb r4, r4 transmitting = 1; - 18a32: f885 6130 strb.w r6, [r5, #304] ; 0x130 + 18b16: f885 6130 strb.w r6, [r5, #304] ; 0x130 txBuffer[0] = (address << 1); - 18a36: f885 30a5 strb.w r3, [r5, #165] ; 0xa5 + 18b1a: f885 30a5 strb.w r3, [r5, #165] ; 0xa5 txBufferLength = 1; - 18a3a: f885 612f strb.w r6, [r5, #303] ; 0x12f + 18b1e: f885 612f strb.w r6, [r5, #303] ; 0x12f Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18a3e: f00c fbbb bl 251b8 + 18b22: f00c fbbf bl 252a4 Wire.write(c); - 18a42: 4621 mov r1, r4 - 18a44: 4826 ldr r0, [pc, #152] ; (18ae0 ) - 18a46: f00c fbb7 bl 251b8 + 18b26: 4621 mov r1, r4 + 18b28: 4826 ldr r0, [pc, #152] ; (18bc4 ) + 18b2a: f00c fbbb bl 252a4 return endTransmission(1); - 18a4a: 4631 mov r1, r6 - 18a4c: 4824 ldr r0, [pc, #144] ; (18ae0 ) + 18b2e: 4631 mov r1, r6 + 18b30: 4824 ldr r0, [pc, #144] ; (18bc4 ) transmitting = 1; - 18a4e: 2401 movs r4, #1 + 18b32: 2401 movs r4, #1 return endTransmission(1); - 18a50: f00c fcc0 bl 253d4 + 18b34: f00c fcc4 bl 254c0 uint16_t count = WIDTH * ((HEIGHT + 7) / 8); - 18a54: f9b7 200a ldrsh.w r2, [r7, #10] - 18a58: f8b7 8008 ldrh.w r8, [r7, #8] + 18b38: f9b7 200a ldrsh.w r2, [r7, #10] + 18b3c: f8b7 8008 ldrh.w r8, [r7, #8] Wire.write((uint8_t)0x40); - 18a5c: 2140 movs r1, #64 ; 0x40 + 18b40: 2140 movs r1, #64 ; 0x40 uint16_t count = WIDTH * ((HEIGHT + 7) / 8); - 18a5e: 1dd3 adds r3, r2, #7 + 18b42: 1dd3 adds r3, r2, #7 Wire.write((uint8_t)0x40); - 18a60: 481f ldr r0, [pc, #124] ; (18ae0 ) + 18b44: 481f ldr r0, [pc, #124] ; (18bc4 ) uint8_t *ptr = buffer; - 18a62: 6a7e ldr r6, [r7, #36] ; 0x24 + 18b46: 6a7e ldr r6, [r7, #36] ; 0x24 uint16_t count = WIDTH * ((HEIGHT + 7) / 8); - 18a64: bf48 it mi - 18a66: f102 030e addmi.w r3, r2, #14 + 18b48: bf48 it mi + 18b4a: f102 030e addmi.w r3, r2, #14 txBuffer[0] = (address << 1); - 18a6a: f897 2028 ldrb.w r2, [r7, #40] ; 0x28 + 18b4e: f897 2028 ldrb.w r2, [r7, #40] ; 0x28 transmitting = 1; - 18a6e: f885 4130 strb.w r4, [r5, #304] ; 0x130 - 18a72: 10db asrs r3, r3, #3 + 18b52: f885 4130 strb.w r4, [r5, #304] ; 0x130 + 18b56: 10db asrs r3, r3, #3 txBufferLength = 1; - 18a74: f885 412f strb.w r4, [r5, #303] ; 0x12f - 18a78: fb18 f803 smulbb r8, r8, r3 + 18b58: f885 412f strb.w r4, [r5, #303] ; 0x12f + 18b5c: fb18 f803 smulbb r8, r8, r3 txBuffer[0] = (address << 1); - 18a7c: 0053 lsls r3, r2, #1 - 18a7e: fa1f f888 uxth.w r8, r8 - 18a82: f885 30a5 strb.w r3, [r5, #165] ; 0xa5 + 18b60: 0053 lsls r3, r2, #1 + 18b62: fa1f f888 uxth.w r8, r8 + 18b66: f885 30a5 strb.w r3, [r5, #165] ; 0xa5 Wire.write((uint8_t)0x40); - 18a86: f00c fb97 bl 251b8 + 18b6a: f00c fb9b bl 252a4 while(count--) { - 18a8a: f1b8 0f00 cmp.w r8, #0 - 18a8e: d021 beq.n 18ad4 - 18a90: 44b0 add r8, r6 + 18b6e: f1b8 0f00 cmp.w r8, #0 + 18b72: d021 beq.n 18bb8 + 18b74: 44b0 add r8, r6 Wire.write(*ptr++); - 18a92: f8df 904c ldr.w r9, [pc, #76] ; 18ae0 + 18b76: f8df 904c ldr.w r9, [pc, #76] ; 18bc4 return endTransmission(1); - 18a96: 46a2 mov sl, r4 - 18a98: f816 1b01 ldrb.w r1, [r6], #1 - 18a9c: 4648 mov r0, r9 + 18b7a: 46a2 mov sl, r4 + 18b7c: f816 1b01 ldrb.w r1, [r6], #1 + 18b80: 4648 mov r0, r9 bytesOut++; - 18a9e: 3401 adds r4, #1 + 18b82: 3401 adds r4, #1 Wire.write(*ptr++); - 18aa0: f00c fb8a bl 251b8 + 18b84: f00c fb8e bl 252a4 while(count--) { - 18aa4: 4546 cmp r6, r8 + 18b88: 4546 cmp r6, r8 bytesOut++; - 18aa6: b2e4 uxtb r4, r4 + 18b8a: b2e4 uxtb r4, r4 while(count--) { - 18aa8: d014 beq.n 18ad4 + 18b8c: d014 beq.n 18bb8 if(bytesOut >= WIRE_MAX) { - 18aaa: 2c88 cmp r4, #136 ; 0x88 - 18aac: d1f4 bne.n 18a98 - 18aae: 2101 movs r1, #1 - 18ab0: 4648 mov r0, r9 - 18ab2: f00c fc8f bl 253d4 + 18b8e: 2c88 cmp r4, #136 ; 0x88 + 18b90: d1f4 bne.n 18b7c + 18b92: 2101 movs r1, #1 + 18b94: 4648 mov r0, r9 + 18b96: f00c fc93 bl 254c0 bytesOut = 1; - 18ab6: 2401 movs r4, #1 + 18b9a: 2401 movs r4, #1 txBuffer[0] = (address << 1); - 18ab8: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 + 18b9c: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 Wire.write((uint8_t)0x40); - 18abc: 2140 movs r1, #64 ; 0x40 - 18abe: 4648 mov r0, r9 + 18ba0: 2140 movs r1, #64 ; 0x40 + 18ba2: 4648 mov r0, r9 transmitting = 1; - 18ac0: f885 a130 strb.w sl, [r5, #304] ; 0x130 + 18ba4: f885 a130 strb.w sl, [r5, #304] ; 0x130 txBuffer[0] = (address << 1); - 18ac4: 40a3 lsls r3, r4 + 18ba8: 40a3 lsls r3, r4 txBufferLength = 1; - 18ac6: f885 a12f strb.w sl, [r5, #303] ; 0x12f + 18baa: f885 a12f strb.w sl, [r5, #303] ; 0x12f txBuffer[0] = (address << 1); - 18aca: f885 30a5 strb.w r3, [r5, #165] ; 0xa5 - 18ace: f00c fb73 bl 251b8 + 18bae: f885 30a5 strb.w r3, [r5, #165] ; 0xa5 + 18bb2: f00c fb77 bl 252a4 bytesOut = 1; - 18ad2: e7e1 b.n 18a98 + 18bb6: e7e1 b.n 18b7c return endTransmission(1); - 18ad4: 2101 movs r1, #1 - 18ad6: 4802 ldr r0, [pc, #8] ; (18ae0 ) + 18bb8: 2101 movs r1, #1 + 18bba: 4802 ldr r0, [pc, #8] ; (18bc4 ) } - 18ad8: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 18adc: f00c bc7a b.w 253d4 - 18ae0: 2000b0f8 .word 0x2000b0f8 - 18ae4: 6001e13c .word 0x6001e13c + 18bbc: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 18bc0: f00c bc7e b.w 254c0 + 18bc4: 2000b118 .word 0x2000b118 + 18bc8: 6001e13c .word 0x6001e13c -00018ae8 : +00018bcc : boolean BMC_SSD1306::begin(uint8_t vcs, uint8_t addr) { - 18ae8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 18aec: 4606 mov r6, r0 + 18bcc: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 18bd0: 4606 mov r6, r0 if((!buffer) && !(buffer = (uint8_t *)malloc(WIDTH * ((HEIGHT + 7) / 8)))) - 18aee: 6a40 ldr r0, [r0, #36] ; 0x24 + 18bd2: 6a40 ldr r0, [r0, #36] ; 0x24 boolean BMC_SSD1306::begin(uint8_t vcs, uint8_t addr) { - 18af0: 4615 mov r5, r2 - 18af2: b082 sub sp, #8 - 18af4: 460f mov r7, r1 + 18bd4: 4615 mov r5, r2 + 18bd6: b082 sub sp, #8 + 18bd8: 460f mov r7, r1 if((!buffer) && !(buffer = (uint8_t *)malloc(WIDTH * ((HEIGHT + 7) / 8)))) - 18af6: f9b6 200a ldrsh.w r2, [r6, #10] - 18afa: 2800 cmp r0, #0 - 18afc: f000 816c beq.w 18dd8 - 18b00: 1dd3 adds r3, r2, #7 - 18b02: bf48 it mi - 18b04: f102 030e addmi.w r3, r2, #14 - 18b08: f9b6 2008 ldrsh.w r2, [r6, #8] - 18b0c: 10db asrs r3, r3, #3 - 18b0e: fb03 f202 mul.w r2, r3, r2 + 18bda: f9b6 200a ldrsh.w r2, [r6, #10] + 18bde: 2800 cmp r0, #0 + 18be0: f000 816c beq.w 18ebc + 18be4: 1dd3 adds r3, r2, #7 + 18be6: bf48 it mi + 18be8: f102 030e addmi.w r3, r2, #14 + 18bec: f9b6 2008 ldrsh.w r2, [r6, #8] + 18bf0: 10db asrs r3, r3, #3 + 18bf2: fb03 f202 mul.w r2, r3, r2 Wire.begin(); - 18b12: 4cc6 ldr r4, [pc, #792] ; (18e2c ) + 18bf6: 4cc6 ldr r4, [pc, #792] ; (18f10 ) memset(buffer, 0, WIDTH * ((HEIGHT + 7) / 8)); - 18b14: 2100 movs r1, #0 - 18b16: f015 fcb9 bl 2e48c + 18bf8: 2100 movs r1, #0 + 18bfa: f015 fcbb bl 2e574 vccstate = vcs; - 18b1a: f886 7029 strb.w r7, [r6, #41] ; 0x29 + 18bfe: f886 7029 strb.w r7, [r6, #41] ; 0x29 Wire.begin(); - 18b1e: 4620 mov r0, r4 + 18c02: 4620 mov r0, r4 i2caddr = addr; - 18b20: f886 5028 strb.w r5, [r6, #40] ; 0x28 + 18c04: f886 5028 strb.w r5, [r6, #40] ; 0x28 Wire.begin(); - 18b24: f01b f9a4 bl 33e70 <___ZN7TwoWire5beginEv_veneer> + 18c08: f01b f9b2 bl 33f70 <___ZN7TwoWire5beginEv_veneer> Wire.setClock(400000UL); - 18b28: 49c1 ldr r1, [pc, #772] ; (18e30 ) - 18b2a: 4620 mov r0, r4 + 18c0c: 49c1 ldr r1, [pc, #772] ; (18f14 ) + 18c0e: 4620 mov r0, r4 transmitting = 1; - 18b2c: 2501 movs r5, #1 - 18b2e: f00c fdd7 bl 256e0 + 18c10: 2501 movs r5, #1 + 18c12: f00c fddb bl 257cc txBuffer[0] = (address << 1); - 18b32: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 - 18b36: 4fbf ldr r7, [pc, #764] ; (18e34 ) + 18c16: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18c1a: 4fbf ldr r7, [pc, #764] ; (18f18 ) Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18b38: 2100 movs r1, #0 - 18b3a: 40ab lsls r3, r5 - 18b3c: 4620 mov r0, r4 + 18c1c: 2100 movs r1, #0 + 18c1e: 40ab lsls r3, r5 + 18c20: 4620 mov r0, r4 transmitting = 1; - 18b3e: f884 5130 strb.w r5, [r4, #304] ; 0x130 - 18b42: f107 0803 add.w r8, r7, #3 + 18c22: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18c26: f107 0803 add.w r8, r7, #3 txBufferLength = 1; - 18b46: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18c2a: f884 512f strb.w r5, [r4, #303] ; 0x12f return endTransmission(1); - 18b4a: 46a9 mov r9, r5 + 18c2e: 46a9 mov r9, r5 txBuffer[0] = (address << 1); - 18b4c: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18b50: f00c fb32 bl 251b8 - 18b54: 21ae movs r1, #174 ; 0xae - 18b56: e001 b.n 18b5c + 18c30: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18c34: f00c fb36 bl 252a4 + 18c38: 21ae movs r1, #174 ; 0xae + 18c3a: e001 b.n 18c40 Wire.write(pgm_read_byte(c++)); - 18b58: f817 1f01 ldrb.w r1, [r7, #1]! - 18b5c: 4620 mov r0, r4 + 18c3c: f817 1f01 ldrb.w r1, [r7, #1]! + 18c40: 4620 mov r0, r4 bytesOut++; - 18b5e: 3501 adds r5, #1 + 18c42: 3501 adds r5, #1 Wire.write(pgm_read_byte(c++)); - 18b60: f00c fb2a bl 251b8 + 18c44: f00c fb2e bl 252a4 while(n--) { - 18b64: 45b8 cmp r8, r7 + 18c48: 45b8 cmp r8, r7 bytesOut++; - 18b66: b2ed uxtb r5, r5 + 18c4a: b2ed uxtb r5, r5 while(n--) { - 18b68: d014 beq.n 18b94 + 18c4c: d014 beq.n 18c78 if(bytesOut >= WIRE_MAX) { - 18b6a: 2d88 cmp r5, #136 ; 0x88 - 18b6c: d1f4 bne.n 18b58 + 18c4e: 2d88 cmp r5, #136 ; 0x88 + 18c50: d1f4 bne.n 18c3c return endTransmission(1); - 18b6e: 2101 movs r1, #1 - 18b70: 4620 mov r0, r4 - 18b72: f00c fc2f bl 253d4 + 18c52: 2101 movs r1, #1 + 18c54: 4620 mov r0, r4 + 18c56: f00c fc33 bl 254c0 bytesOut = 1; - 18b76: 2501 movs r5, #1 + 18c5a: 2501 movs r5, #1 txBuffer[0] = (address << 1); - 18b78: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18c5c: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18b7c: 2100 movs r1, #0 - 18b7e: 4620 mov r0, r4 + 18c60: 2100 movs r1, #0 + 18c62: 4620 mov r0, r4 transmitting = 1; - 18b80: f884 9130 strb.w r9, [r4, #304] ; 0x130 + 18c64: f884 9130 strb.w r9, [r4, #304] ; 0x130 txBuffer[0] = (address << 1); - 18b84: 40ab lsls r3, r5 + 18c68: 40ab lsls r3, r5 txBufferLength = 1; - 18b86: f884 912f strb.w r9, [r4, #303] ; 0x12f + 18c6a: f884 912f strb.w r9, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 18b8a: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18b8e: f00c fb13 bl 251b8 + 18c6e: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18c72: f00c fb17 bl 252a4 bytesOut = 1; - 18b92: e7e1 b.n 18b58 + 18c76: e7e1 b.n 18c3c return endTransmission(1); - 18b94: 2101 movs r1, #1 - 18b96: 48a5 ldr r0, [pc, #660] ; (18e2c ) - 18b98: f00c fc1c bl 253d4 + 18c78: 2101 movs r1, #1 + 18c7a: 48a5 ldr r0, [pc, #660] ; (18f10 ) + 18c7c: f00c fc20 bl 254c0 ssd1306_command1(HEIGHT - 1); - 18b9c: 8977 ldrh r7, [r6, #10] + 18c80: 8977 ldrh r7, [r6, #10] transmitting = 1; - 18b9e: 2501 movs r5, #1 + 18c82: 2501 movs r5, #1 txBuffer[0] = (address << 1); - 18ba0: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 - 18ba4: 3f01 subs r7, #1 + 18c84: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18c88: 3f01 subs r7, #1 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18ba6: 2100 movs r1, #0 - 18ba8: 40ab lsls r3, r5 - 18baa: 48a0 ldr r0, [pc, #640] ; (18e2c ) + 18c8a: 2100 movs r1, #0 + 18c8c: 40ab lsls r3, r5 + 18c8e: 48a0 ldr r0, [pc, #640] ; (18f10 ) ssd1306_command1(HEIGHT - 1); - 18bac: b2ff uxtb r7, r7 + 18c90: b2ff uxtb r7, r7 transmitting = 1; - 18bae: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18c92: f884 5130 strb.w r5, [r4, #304] ; 0x130 txBuffer[0] = (address << 1); - 18bb2: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18c96: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 return endTransmission(1); - 18bb6: 46a9 mov r9, r5 + 18c9a: 46a9 mov r9, r5 txBufferLength = 1; - 18bb8: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18c9c: f884 512f strb.w r5, [r4, #303] ; 0x12f Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18bbc: f00c fafc bl 251b8 + 18ca0: f00c fb00 bl 252a4 Wire.write(c); - 18bc0: 4639 mov r1, r7 - 18bc2: 489a ldr r0, [pc, #616] ; (18e2c ) - 18bc4: f00c faf8 bl 251b8 + 18ca4: 4639 mov r1, r7 + 18ca6: 489a ldr r0, [pc, #616] ; (18f10 ) + 18ca8: f00c fafc bl 252a4 return endTransmission(1); - 18bc8: 4629 mov r1, r5 - 18bca: 4898 ldr r0, [pc, #608] ; (18e2c ) - 18bcc: f00c fc02 bl 253d4 + 18cac: 4629 mov r1, r5 + 18cae: 4898 ldr r0, [pc, #608] ; (18f10 ) + 18cb0: f00c fc06 bl 254c0 txBuffer[0] = (address << 1); - 18bd0: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 - 18bd4: f8df a270 ldr.w sl, [pc, #624] ; 18e48 + 18cb4: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18cb8: f8df a270 ldr.w sl, [pc, #624] ; 18f2c Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18bd8: 2100 movs r1, #0 - 18bda: 40ab lsls r3, r5 - 18bdc: 4893 ldr r0, [pc, #588] ; (18e2c ) + 18cbc: 2100 movs r1, #0 + 18cbe: 40ab lsls r3, r5 + 18cc0: 4893 ldr r0, [pc, #588] ; (18f10 ) transmitting = 1; - 18bde: f884 5130 strb.w r5, [r4, #304] ; 0x130 - 18be2: f10a 0803 add.w r8, sl, #3 + 18cc2: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18cc6: f10a 0803 add.w r8, sl, #3 txBufferLength = 1; - 18be6: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18cca: f884 512f strb.w r5, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 18bea: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18bee: f00c fae3 bl 251b8 + 18cce: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18cd2: f00c fae7 bl 252a4 Wire.write(pgm_read_byte(c++)); - 18bf2: 4f8e ldr r7, [pc, #568] ; (18e2c ) + 18cd6: 4f8e ldr r7, [pc, #568] ; (18f10 ) Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18bf4: 21d3 movs r1, #211 ; 0xd3 - 18bf6: e001 b.n 18bfc + 18cd8: 21d3 movs r1, #211 ; 0xd3 + 18cda: e001 b.n 18ce0 Wire.write(pgm_read_byte(c++)); - 18bf8: f81a 1f01 ldrb.w r1, [sl, #1]! - 18bfc: 4638 mov r0, r7 + 18cdc: f81a 1f01 ldrb.w r1, [sl, #1]! + 18ce0: 4638 mov r0, r7 bytesOut++; - 18bfe: 3501 adds r5, #1 + 18ce2: 3501 adds r5, #1 Wire.write(pgm_read_byte(c++)); - 18c00: f00c fada bl 251b8 + 18ce4: f00c fade bl 252a4 while(n--) { - 18c04: 45c2 cmp sl, r8 + 18ce8: 45c2 cmp sl, r8 bytesOut++; - 18c06: b2ed uxtb r5, r5 + 18cea: b2ed uxtb r5, r5 while(n--) { - 18c08: d014 beq.n 18c34 + 18cec: d014 beq.n 18d18 if(bytesOut >= WIRE_MAX) { - 18c0a: 2d88 cmp r5, #136 ; 0x88 - 18c0c: d1f4 bne.n 18bf8 + 18cee: 2d88 cmp r5, #136 ; 0x88 + 18cf0: d1f4 bne.n 18cdc return endTransmission(1); - 18c0e: 2101 movs r1, #1 - 18c10: 4638 mov r0, r7 - 18c12: f00c fbdf bl 253d4 + 18cf2: 2101 movs r1, #1 + 18cf4: 4638 mov r0, r7 + 18cf6: f00c fbe3 bl 254c0 bytesOut = 1; - 18c16: 2501 movs r5, #1 + 18cfa: 2501 movs r5, #1 txBuffer[0] = (address << 1); - 18c18: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18cfc: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18c1c: 2100 movs r1, #0 - 18c1e: 4638 mov r0, r7 + 18d00: 2100 movs r1, #0 + 18d02: 4638 mov r0, r7 transmitting = 1; - 18c20: f884 9130 strb.w r9, [r4, #304] ; 0x130 + 18d04: f884 9130 strb.w r9, [r4, #304] ; 0x130 txBuffer[0] = (address << 1); - 18c24: 40ab lsls r3, r5 + 18d08: 40ab lsls r3, r5 txBufferLength = 1; - 18c26: f884 912f strb.w r9, [r4, #303] ; 0x12f + 18d0a: f884 912f strb.w r9, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 18c2a: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18c2e: f00c fac3 bl 251b8 + 18d0e: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18d12: f00c fac7 bl 252a4 bytesOut = 1; - 18c32: e7e1 b.n 18bf8 + 18d16: e7e1 b.n 18cdc return endTransmission(1); - 18c34: 2101 movs r1, #1 - 18c36: 487d ldr r0, [pc, #500] ; (18e2c ) + 18d18: 2101 movs r1, #1 + 18d1a: 487d ldr r0, [pc, #500] ; (18f10 ) transmitting = 1; - 18c38: 2501 movs r5, #1 + 18d1c: 2501 movs r5, #1 return endTransmission(1); - 18c3a: f00c fbcb bl 253d4 + 18d1e: f00c fbcf bl 254c0 ssd1306_command1((vccstate == BMC_SSD1306_EXTERNALVCC) ? 0x10 : 0x14); - 18c3e: f996 2029 ldrsb.w r2, [r6, #41] ; 0x29 + 18d22: f996 2029 ldrsb.w r2, [r6, #41] ; 0x29 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18c42: 2100 movs r1, #0 + 18d26: 2100 movs r1, #0 txBuffer[0] = (address << 1); - 18c44: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18d28: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 return endTransmission(1); - 18c48: 46a9 mov r9, r5 + 18d2c: 46a9 mov r9, r5 ssd1306_command1((vccstate == BMC_SSD1306_EXTERNALVCC) ? 0x10 : 0x14); - 18c4a: 42aa cmp r2, r5 + 18d2e: 42aa cmp r2, r5 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18c4c: 4877 ldr r0, [pc, #476] ; (18e2c ) + 18d30: 4877 ldr r0, [pc, #476] ; (18f10 ) txBuffer[0] = (address << 1); - 18c4e: fa03 f305 lsl.w r3, r3, r5 + 18d32: fa03 f305 lsl.w r3, r3, r5 transmitting = 1; - 18c52: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18d36: f884 5130 strb.w r5, [r4, #304] ; 0x130 ssd1306_command1((vccstate == BMC_SSD1306_EXTERNALVCC) ? 0x10 : 0x14); - 18c56: bf0c ite eq - 18c58: 2710 moveq r7, #16 - 18c5a: 2714 movne r7, #20 + 18d3a: bf0c ite eq + 18d3c: 2710 moveq r7, #16 + 18d3e: 2714 movne r7, #20 txBuffer[0] = (address << 1); - 18c5c: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18d40: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 txBufferLength = 1; - 18c60: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18d44: f884 512f strb.w r5, [r4, #303] ; 0x12f Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18c64: f00c faa8 bl 251b8 + 18d48: f00c faac bl 252a4 Wire.write(c); - 18c68: 4639 mov r1, r7 - 18c6a: 4870 ldr r0, [pc, #448] ; (18e2c ) - 18c6c: f00c faa4 bl 251b8 + 18d4c: 4639 mov r1, r7 + 18d4e: 4870 ldr r0, [pc, #448] ; (18f10 ) + 18d50: f00c faa8 bl 252a4 return endTransmission(1); - 18c70: 4629 mov r1, r5 - 18c72: 486e ldr r0, [pc, #440] ; (18e2c ) - 18c74: f00c fbae bl 253d4 + 18d54: 4629 mov r1, r5 + 18d56: 486e ldr r0, [pc, #440] ; (18f10 ) + 18d58: f00c fbb2 bl 254c0 txBuffer[0] = (address << 1); - 18c78: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 - 18c7c: f8df a1cc ldr.w sl, [pc, #460] ; 18e4c + 18d5c: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18d60: f8df a1cc ldr.w sl, [pc, #460] ; 18f30 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18c80: 2100 movs r1, #0 - 18c82: 40ab lsls r3, r5 - 18c84: 4869 ldr r0, [pc, #420] ; (18e2c ) + 18d64: 2100 movs r1, #0 + 18d66: 40ab lsls r3, r5 + 18d68: 4869 ldr r0, [pc, #420] ; (18f10 ) transmitting = 1; - 18c86: f884 5130 strb.w r5, [r4, #304] ; 0x130 - 18c8a: f10a 0803 add.w r8, sl, #3 + 18d6a: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18d6e: f10a 0803 add.w r8, sl, #3 txBufferLength = 1; - 18c8e: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18d72: f884 512f strb.w r5, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 18c92: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18c96: f00c fa8f bl 251b8 + 18d76: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18d7a: f00c fa93 bl 252a4 Wire.write(pgm_read_byte(c++)); - 18c9a: 4f64 ldr r7, [pc, #400] ; (18e2c ) + 18d7e: 4f64 ldr r7, [pc, #400] ; (18f10 ) Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18c9c: 2120 movs r1, #32 - 18c9e: e001 b.n 18ca4 + 18d80: 2120 movs r1, #32 + 18d82: e001 b.n 18d88 Wire.write(pgm_read_byte(c++)); - 18ca0: f81a 1f01 ldrb.w r1, [sl, #1]! - 18ca4: 4638 mov r0, r7 + 18d84: f81a 1f01 ldrb.w r1, [sl, #1]! + 18d88: 4638 mov r0, r7 bytesOut++; - 18ca6: 3501 adds r5, #1 + 18d8a: 3501 adds r5, #1 Wire.write(pgm_read_byte(c++)); - 18ca8: f00c fa86 bl 251b8 + 18d8c: f00c fa8a bl 252a4 while(n--) { - 18cac: 45c2 cmp sl, r8 + 18d90: 45c2 cmp sl, r8 bytesOut++; - 18cae: b2ed uxtb r5, r5 + 18d92: b2ed uxtb r5, r5 while(n--) { - 18cb0: d014 beq.n 18cdc + 18d94: d014 beq.n 18dc0 if(bytesOut >= WIRE_MAX) { - 18cb2: 2d88 cmp r5, #136 ; 0x88 - 18cb4: d1f4 bne.n 18ca0 + 18d96: 2d88 cmp r5, #136 ; 0x88 + 18d98: d1f4 bne.n 18d84 return endTransmission(1); - 18cb6: 2101 movs r1, #1 - 18cb8: 4638 mov r0, r7 - 18cba: f00c fb8b bl 253d4 + 18d9a: 2101 movs r1, #1 + 18d9c: 4638 mov r0, r7 + 18d9e: f00c fb8f bl 254c0 bytesOut = 1; - 18cbe: 2501 movs r5, #1 + 18da2: 2501 movs r5, #1 txBuffer[0] = (address << 1); - 18cc0: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18da4: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18cc4: 2100 movs r1, #0 - 18cc6: 4638 mov r0, r7 + 18da8: 2100 movs r1, #0 + 18daa: 4638 mov r0, r7 transmitting = 1; - 18cc8: f884 9130 strb.w r9, [r4, #304] ; 0x130 + 18dac: f884 9130 strb.w r9, [r4, #304] ; 0x130 txBuffer[0] = (address << 1); - 18ccc: 40ab lsls r3, r5 + 18db0: 40ab lsls r3, r5 txBufferLength = 1; - 18cce: f884 912f strb.w r9, [r4, #303] ; 0x12f + 18db2: f884 912f strb.w r9, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 18cd2: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18cd6: f00c fa6f bl 251b8 + 18db6: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18dba: f00c fa73 bl 252a4 bytesOut = 1; - 18cda: e7e1 b.n 18ca0 + 18dbe: e7e1 b.n 18d84 return endTransmission(1); - 18cdc: 2101 movs r1, #1 - 18cde: 4853 ldr r0, [pc, #332] ; (18e2c ) - 18ce0: f00c fb78 bl 253d4 + 18dc0: 2101 movs r1, #1 + 18dc2: 4853 ldr r0, [pc, #332] ; (18f10 ) + 18dc4: f00c fb7c bl 254c0 if((WIDTH == 128) && (HEIGHT == 32)) { - 18ce4: 68b3 ldr r3, [r6, #8] - 18ce6: 4a54 ldr r2, [pc, #336] ; (18e38 ) - 18ce8: 4293 cmp r3, r2 - 18cea: f000 8088 beq.w 18dfe + 18dc8: 68b3 ldr r3, [r6, #8] + 18dca: 4a54 ldr r2, [pc, #336] ; (18f1c ) + 18dcc: 4293 cmp r3, r2 + 18dce: f000 8088 beq.w 18ee2 } else if((WIDTH == 128) && (HEIGHT == 64)) { - 18cee: 4a53 ldr r2, [pc, #332] ; (18e3c ) - 18cf0: 4293 cmp r3, r2 - 18cf2: f000 80d2 beq.w 18e9a + 18dd2: 4a53 ldr r2, [pc, #332] ; (18f20 ) + 18dd4: 4293 cmp r3, r2 + 18dd6: f000 80d2 beq.w 18f7e } else if((WIDTH == 96) && (HEIGHT == 16)) { - 18cf6: 4a52 ldr r2, [pc, #328] ; (18e40 ) - 18cf8: 4293 cmp r3, r2 - 18cfa: f000 8124 beq.w 18f46 + 18dda: 4a52 ldr r2, [pc, #328] ; (18f24 ) + 18ddc: 4293 cmp r3, r2 + 18dde: f000 8124 beq.w 1902a transmitting = 1; - 18cfe: 2501 movs r5, #1 + 18de2: 2501 movs r5, #1 txBuffer[0] = (address << 1); - 18d00: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18de4: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18d04: 2100 movs r1, #0 - 18d06: 4849 ldr r0, [pc, #292] ; (18e2c ) - 18d08: 40ab lsls r3, r5 + 18de8: 2100 movs r1, #0 + 18dea: 4849 ldr r0, [pc, #292] ; (18f10 ) + 18dec: 40ab lsls r3, r5 transmitting = 1; - 18d0a: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18dee: f884 5130 strb.w r5, [r4, #304] ; 0x130 txBufferLength = 1; - 18d0e: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18df2: f884 512f strb.w r5, [r4, #303] ; 0x12f return endTransmission(1); - 18d12: 46a9 mov r9, r5 + 18df6: 46a9 mov r9, r5 txBuffer[0] = (address << 1); - 18d14: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18d18: f00c fa4e bl 251b8 + 18df8: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18dfc: f00c fa52 bl 252a4 Wire.write(c); - 18d1c: 21d9 movs r1, #217 ; 0xd9 - 18d1e: 4843 ldr r0, [pc, #268] ; (18e2c ) - 18d20: f00c fa4a bl 251b8 + 18e00: 21d9 movs r1, #217 ; 0xd9 + 18e02: 4843 ldr r0, [pc, #268] ; (18f10 ) + 18e04: f00c fa4e bl 252a4 return endTransmission(1); - 18d24: 4629 mov r1, r5 - 18d26: 4841 ldr r0, [pc, #260] ; (18e2c ) - 18d28: f00c fb54 bl 253d4 + 18e08: 4629 mov r1, r5 + 18e0a: 4841 ldr r0, [pc, #260] ; (18f10 ) + 18e0c: f00c fb58 bl 254c0 ssd1306_command1((vccstate == BMC_SSD1306_EXTERNALVCC) ? 0x22 : 0xF1); - 18d2c: f996 2029 ldrsb.w r2, [r6, #41] ; 0x29 + 18e10: f996 2029 ldrsb.w r2, [r6, #41] ; 0x29 txBuffer[0] = (address << 1); - 18d30: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18e14: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18d34: 2100 movs r1, #0 + 18e18: 2100 movs r1, #0 ssd1306_command1((vccstate == BMC_SSD1306_EXTERNALVCC) ? 0x22 : 0xF1); - 18d36: 42aa cmp r2, r5 + 18e1a: 42aa cmp r2, r5 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18d38: 483c ldr r0, [pc, #240] ; (18e2c ) - 18d3a: fa03 f305 lsl.w r3, r3, r5 + 18e1c: 483c ldr r0, [pc, #240] ; (18f10 ) + 18e1e: fa03 f305 lsl.w r3, r3, r5 transmitting = 1; - 18d3e: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18e22: f884 5130 strb.w r5, [r4, #304] ; 0x130 ssd1306_command1((vccstate == BMC_SSD1306_EXTERNALVCC) ? 0x22 : 0xF1); - 18d42: bf0c ite eq - 18d44: 2722 moveq r7, #34 ; 0x22 - 18d46: 27f1 movne r7, #241 ; 0xf1 + 18e26: bf0c ite eq + 18e28: 2722 moveq r7, #34 ; 0x22 + 18e2a: 27f1 movne r7, #241 ; 0xf1 txBuffer[0] = (address << 1); - 18d48: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18e2c: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 txBufferLength = 1; - 18d4c: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18e30: f884 512f strb.w r5, [r4, #303] ; 0x12f Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18d50: f00c fa32 bl 251b8 + 18e34: f00c fa36 bl 252a4 Wire.write(c); - 18d54: 4639 mov r1, r7 - 18d56: 4835 ldr r0, [pc, #212] ; (18e2c ) - 18d58: f00c fa2e bl 251b8 + 18e38: 4639 mov r1, r7 + 18e3a: 4835 ldr r0, [pc, #212] ; (18f10 ) + 18e3c: f00c fa32 bl 252a4 return endTransmission(1); - 18d5c: 4629 mov r1, r5 - 18d5e: 4833 ldr r0, [pc, #204] ; (18e2c ) - 18d60: f00c fb38 bl 253d4 + 18e40: 4629 mov r1, r5 + 18e42: 4833 ldr r0, [pc, #204] ; (18f10 ) + 18e44: f00c fb3c bl 254c0 txBuffer[0] = (address << 1); - 18d64: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 - 18d68: f8df a0e4 ldr.w sl, [pc, #228] ; 18e50 + 18e48: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18e4c: f8df a0e4 ldr.w sl, [pc, #228] ; 18f34 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18d6c: 2100 movs r1, #0 - 18d6e: 40ab lsls r3, r5 - 18d70: 482e ldr r0, [pc, #184] ; (18e2c ) + 18e50: 2100 movs r1, #0 + 18e52: 40ab lsls r3, r5 + 18e54: 482e ldr r0, [pc, #184] ; (18f10 ) transmitting = 1; - 18d72: f884 5130 strb.w r5, [r4, #304] ; 0x130 - 18d76: f10a 0805 add.w r8, sl, #5 + 18e56: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18e5a: f10a 0805 add.w r8, sl, #5 txBufferLength = 1; - 18d7a: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18e5e: f884 512f strb.w r5, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 18d7e: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18d82: f00c fa19 bl 251b8 + 18e62: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18e66: f00c fa1d bl 252a4 Wire.write(pgm_read_byte(c++)); - 18d86: 4f29 ldr r7, [pc, #164] ; (18e2c ) + 18e6a: 4f29 ldr r7, [pc, #164] ; (18f10 ) Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18d88: 21db movs r1, #219 ; 0xdb - 18d8a: e001 b.n 18d90 + 18e6c: 21db movs r1, #219 ; 0xdb + 18e6e: e001 b.n 18e74 Wire.write(pgm_read_byte(c++)); - 18d8c: f81a 1f01 ldrb.w r1, [sl, #1]! - 18d90: 4638 mov r0, r7 + 18e70: f81a 1f01 ldrb.w r1, [sl, #1]! + 18e74: 4638 mov r0, r7 bytesOut++; - 18d92: 3501 adds r5, #1 + 18e76: 3501 adds r5, #1 Wire.write(pgm_read_byte(c++)); - 18d94: f00c fa10 bl 251b8 + 18e78: f00c fa14 bl 252a4 while(n--) { - 18d98: 45d0 cmp r8, sl + 18e7c: 45d0 cmp r8, sl bytesOut++; - 18d9a: b2ed uxtb r5, r5 + 18e7e: b2ed uxtb r5, r5 while(n--) { - 18d9c: d014 beq.n 18dc8 + 18e80: d014 beq.n 18eac if(bytesOut >= WIRE_MAX) { - 18d9e: 2d88 cmp r5, #136 ; 0x88 - 18da0: d1f4 bne.n 18d8c + 18e82: 2d88 cmp r5, #136 ; 0x88 + 18e84: d1f4 bne.n 18e70 return endTransmission(1); - 18da2: 2101 movs r1, #1 - 18da4: 4638 mov r0, r7 - 18da6: f00c fb15 bl 253d4 + 18e86: 2101 movs r1, #1 + 18e88: 4638 mov r0, r7 + 18e8a: f00c fb19 bl 254c0 bytesOut = 1; - 18daa: 2501 movs r5, #1 + 18e8e: 2501 movs r5, #1 txBuffer[0] = (address << 1); - 18dac: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18e90: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18db0: 2100 movs r1, #0 - 18db2: 4638 mov r0, r7 + 18e94: 2100 movs r1, #0 + 18e96: 4638 mov r0, r7 transmitting = 1; - 18db4: f884 9130 strb.w r9, [r4, #304] ; 0x130 + 18e98: f884 9130 strb.w r9, [r4, #304] ; 0x130 txBuffer[0] = (address << 1); - 18db8: 40ab lsls r3, r5 + 18e9c: 40ab lsls r3, r5 txBufferLength = 1; - 18dba: f884 912f strb.w r9, [r4, #303] ; 0x12f + 18e9e: f884 912f strb.w r9, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 18dbe: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18dc2: f00c f9f9 bl 251b8 + 18ea2: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18ea6: f00c f9fd bl 252a4 bytesOut = 1; - 18dc6: e7e1 b.n 18d8c + 18eaa: e7e1 b.n 18e70 return endTransmission(1); - 18dc8: 2101 movs r1, #1 - 18dca: 4818 ldr r0, [pc, #96] ; (18e2c ) - 18dcc: f00c fb02 bl 253d4 + 18eac: 2101 movs r1, #1 + 18eae: 4818 ldr r0, [pc, #96] ; (18f10 ) + 18eb0: f00c fb06 bl 254c0 return true; // Success - 18dd0: 2001 movs r0, #1 + 18eb4: 2001 movs r0, #1 } - 18dd2: b002 add sp, #8 - 18dd4: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 18eb6: b002 add sp, #8 + 18eb8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} if((!buffer) && !(buffer = (uint8_t *)malloc(WIDTH * ((HEIGHT + 7) / 8)))) - 18dd8: 1dd3 adds r3, r2, #7 - 18dda: bf48 it mi - 18ddc: f102 030e addmi.w r3, r2, #14 - 18de0: 10da asrs r2, r3, #3 - 18de2: f9b6 3008 ldrsh.w r3, [r6, #8] - 18de6: fb03 f202 mul.w r2, r3, r2 - 18dea: 4610 mov r0, r2 - 18dec: 9201 str r2, [sp, #4] - 18dee: f014 fd09 bl 2d804 - 18df2: 9a01 ldr r2, [sp, #4] - 18df4: 6270 str r0, [r6, #36] ; 0x24 - 18df6: 2800 cmp r0, #0 - 18df8: f47f ae8b bne.w 18b12 - 18dfc: e7e9 b.n 18dd2 + 18ebc: 1dd3 adds r3, r2, #7 + 18ebe: bf48 it mi + 18ec0: f102 030e addmi.w r3, r2, #14 + 18ec4: 10da asrs r2, r3, #3 + 18ec6: f9b6 3008 ldrsh.w r3, [r6, #8] + 18eca: fb03 f202 mul.w r2, r3, r2 + 18ece: 4610 mov r0, r2 + 18ed0: 9201 str r2, [sp, #4] + 18ed2: f014 fd0b bl 2d8ec + 18ed6: 9a01 ldr r2, [sp, #4] + 18ed8: 6270 str r0, [r6, #36] ; 0x24 + 18eda: 2800 cmp r0, #0 + 18edc: f47f ae8b bne.w 18bf6 + 18ee0: e7e9 b.n 18eb6 txBuffer[0] = (address << 1); - 18dfe: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18ee2: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 transmitting = 1; - 18e02: 2501 movs r5, #1 - 18e04: 4f0f ldr r7, [pc, #60] ; (18e44 ) + 18ee6: 2501 movs r5, #1 + 18ee8: 4f0f ldr r7, [pc, #60] ; (18f28 ) Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18e06: 2100 movs r1, #0 + 18eea: 2100 movs r1, #0 txBuffer[0] = (address << 1); - 18e08: 40ab lsls r3, r5 - 18e0a: 4808 ldr r0, [pc, #32] ; (18e2c ) + 18eec: 40ab lsls r3, r5 + 18eee: 4808 ldr r0, [pc, #32] ; (18f10 ) transmitting = 1; - 18e0c: f884 5130 strb.w r5, [r4, #304] ; 0x130 - 18e10: f107 0903 add.w r9, r7, #3 + 18ef0: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18ef4: f107 0903 add.w r9, r7, #3 txBufferLength = 1; - 18e14: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18ef8: f884 512f strb.w r5, [r4, #303] ; 0x12f return endTransmission(1); - 18e18: 46aa mov sl, r5 + 18efc: 46aa mov sl, r5 txBuffer[0] = (address << 1); - 18e1a: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18e1e: f00c f9cb bl 251b8 + 18efe: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18f02: f00c f9cf bl 252a4 Wire.write(pgm_read_byte(c++)); - 18e22: f8df 8008 ldr.w r8, [pc, #8] ; 18e2c + 18f06: f8df 8008 ldr.w r8, [pc, #8] ; 18f10 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18e26: 21da movs r1, #218 ; 0xda - 18e28: e016 b.n 18e58 - 18e2a: bf00 nop - 18e2c: 2000b0f8 .word 0x2000b0f8 - 18e30: 00061a80 .word 0x00061a80 - 18e34: 6001e14c .word 0x6001e14c - 18e38: 00200080 .word 0x00200080 - 18e3c: 00400080 .word 0x00400080 - 18e40: 00100060 .word 0x00100060 - 18e44: 6001e158 .word 0x6001e158 - 18e48: 6001e150 .word 0x6001e150 - 18e4c: 6001e154 .word 0x6001e154 - 18e50: 6001e164 .word 0x6001e164 + 18f0a: 21da movs r1, #218 ; 0xda + 18f0c: e016 b.n 18f3c + 18f0e: bf00 nop + 18f10: 2000b118 .word 0x2000b118 + 18f14: 00061a80 .word 0x00061a80 + 18f18: 6001e14c .word 0x6001e14c + 18f1c: 00200080 .word 0x00200080 + 18f20: 00400080 .word 0x00400080 + 18f24: 00100060 .word 0x00100060 + 18f28: 6001e158 .word 0x6001e158 + 18f2c: 6001e150 .word 0x6001e150 + 18f30: 6001e154 .word 0x6001e154 + 18f34: 6001e164 .word 0x6001e164 Wire.write(pgm_read_byte(c++)); - 18e54: f817 1f01 ldrb.w r1, [r7, #1]! - 18e58: 4640 mov r0, r8 + 18f38: f817 1f01 ldrb.w r1, [r7, #1]! + 18f3c: 4640 mov r0, r8 bytesOut++; - 18e5a: 3501 adds r5, #1 + 18f3e: 3501 adds r5, #1 Wire.write(pgm_read_byte(c++)); - 18e5c: f00c f9ac bl 251b8 + 18f40: f00c f9b0 bl 252a4 while(n--) { - 18e60: 45b9 cmp r9, r7 + 18f44: 45b9 cmp r9, r7 bytesOut++; - 18e62: b2ed uxtb r5, r5 + 18f46: b2ed uxtb r5, r5 while(n--) { - 18e64: d014 beq.n 18e90 + 18f48: d014 beq.n 18f74 if(bytesOut >= WIRE_MAX) { - 18e66: 2d88 cmp r5, #136 ; 0x88 - 18e68: d1f4 bne.n 18e54 + 18f4a: 2d88 cmp r5, #136 ; 0x88 + 18f4c: d1f4 bne.n 18f38 return endTransmission(1); - 18e6a: 2101 movs r1, #1 - 18e6c: 4640 mov r0, r8 - 18e6e: f00c fab1 bl 253d4 + 18f4e: 2101 movs r1, #1 + 18f50: 4640 mov r0, r8 + 18f52: f00c fab5 bl 254c0 txBuffer[0] = (address << 1); - 18e72: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18f56: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18e76: 2100 movs r1, #0 - 18e78: 4640 mov r0, r8 - 18e7a: 005b lsls r3, r3, #1 + 18f5a: 2100 movs r1, #0 + 18f5c: 4640 mov r0, r8 + 18f5e: 005b lsls r3, r3, #1 bytesOut = 1; - 18e7c: 2501 movs r5, #1 + 18f60: 2501 movs r5, #1 transmitting = 1; - 18e7e: f884 a130 strb.w sl, [r4, #304] ; 0x130 + 18f62: f884 a130 strb.w sl, [r4, #304] ; 0x130 txBufferLength = 1; - 18e82: f884 a12f strb.w sl, [r4, #303] ; 0x12f + 18f66: f884 a12f strb.w sl, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 18e86: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18f6a: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18e8a: f00c f995 bl 251b8 + 18f6e: f00c f999 bl 252a4 bytesOut = 1; - 18e8e: e7e1 b.n 18e54 + 18f72: e7e1 b.n 18f38 return endTransmission(1); - 18e90: 2101 movs r1, #1 - 18e92: 4850 ldr r0, [pc, #320] ; (18fd4 ) - 18e94: f00c fa9e bl 253d4 + 18f74: 2101 movs r1, #1 + 18f76: 4850 ldr r0, [pc, #320] ; (190b8 ) + 18f78: f00c faa2 bl 254c0 } - 18e98: e731 b.n 18cfe + 18f7c: e731 b.n 18de2 txBuffer[0] = (address << 1); - 18e9a: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18f7e: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 transmitting = 1; - 18e9e: 2501 movs r5, #1 - 18ea0: 4f4d ldr r7, [pc, #308] ; (18fd8 ) + 18f82: 2501 movs r5, #1 + 18f84: 4f4d ldr r7, [pc, #308] ; (190bc ) Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18ea2: 2100 movs r1, #0 + 18f86: 2100 movs r1, #0 txBuffer[0] = (address << 1); - 18ea4: 40ab lsls r3, r5 - 18ea6: 484b ldr r0, [pc, #300] ; (18fd4 ) + 18f88: 40ab lsls r3, r5 + 18f8a: 484b ldr r0, [pc, #300] ; (190b8 ) transmitting = 1; - 18ea8: f884 5130 strb.w r5, [r4, #304] ; 0x130 - 18eac: f107 0902 add.w r9, r7, #2 + 18f8c: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18f90: f107 0902 add.w r9, r7, #2 txBufferLength = 1; - 18eb0: f884 512f strb.w r5, [r4, #303] ; 0x12f + 18f94: f884 512f strb.w r5, [r4, #303] ; 0x12f return endTransmission(1); - 18eb4: 46aa mov sl, r5 + 18f98: 46aa mov sl, r5 txBuffer[0] = (address << 1); - 18eb6: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18eba: f00c f97d bl 251b8 + 18f9a: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18f9e: f00c f981 bl 252a4 Wire.write(pgm_read_byte(c++)); - 18ebe: f8df 8114 ldr.w r8, [pc, #276] ; 18fd4 + 18fa2: f8df 8114 ldr.w r8, [pc, #276] ; 190b8 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18ec2: 21da movs r1, #218 ; 0xda - 18ec4: e001 b.n 18eca + 18fa6: 21da movs r1, #218 ; 0xda + 18fa8: e001 b.n 18fae Wire.write(pgm_read_byte(c++)); - 18ec6: f817 1f01 ldrb.w r1, [r7, #1]! - 18eca: 4640 mov r0, r8 + 18faa: f817 1f01 ldrb.w r1, [r7, #1]! + 18fae: 4640 mov r0, r8 bytesOut++; - 18ecc: 3501 adds r5, #1 + 18fb0: 3501 adds r5, #1 Wire.write(pgm_read_byte(c++)); - 18ece: f00c f973 bl 251b8 + 18fb2: f00c f977 bl 252a4 while(n--) { - 18ed2: 454f cmp r7, r9 + 18fb6: 454f cmp r7, r9 bytesOut++; - 18ed4: b2ed uxtb r5, r5 + 18fb8: b2ed uxtb r5, r5 while(n--) { - 18ed6: d014 beq.n 18f02 + 18fba: d014 beq.n 18fe6 if(bytesOut >= WIRE_MAX) { - 18ed8: 2d88 cmp r5, #136 ; 0x88 - 18eda: d1f4 bne.n 18ec6 + 18fbc: 2d88 cmp r5, #136 ; 0x88 + 18fbe: d1f4 bne.n 18faa return endTransmission(1); - 18edc: 2101 movs r1, #1 - 18ede: 4640 mov r0, r8 - 18ee0: f00c fa78 bl 253d4 + 18fc0: 2101 movs r1, #1 + 18fc2: 4640 mov r0, r8 + 18fc4: f00c fa7c bl 254c0 txBuffer[0] = (address << 1); - 18ee4: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18fc8: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18ee8: 2100 movs r1, #0 - 18eea: 4640 mov r0, r8 - 18eec: 005b lsls r3, r3, #1 + 18fcc: 2100 movs r1, #0 + 18fce: 4640 mov r0, r8 + 18fd0: 005b lsls r3, r3, #1 bytesOut = 1; - 18eee: 2501 movs r5, #1 + 18fd2: 2501 movs r5, #1 transmitting = 1; - 18ef0: f884 a130 strb.w sl, [r4, #304] ; 0x130 + 18fd4: f884 a130 strb.w sl, [r4, #304] ; 0x130 txBufferLength = 1; - 18ef4: f884 a12f strb.w sl, [r4, #303] ; 0x12f + 18fd8: f884 a12f strb.w sl, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 18ef8: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 18fdc: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18efc: f00c f95c bl 251b8 + 18fe0: f00c f960 bl 252a4 bytesOut = 1; - 18f00: e7e1 b.n 18ec6 + 18fe4: e7e1 b.n 18faa return endTransmission(1); - 18f02: 2101 movs r1, #1 - 18f04: 4833 ldr r0, [pc, #204] ; (18fd4 ) - 18f06: f00c fa65 bl 253d4 + 18fe6: 2101 movs r1, #1 + 18fe8: 4833 ldr r0, [pc, #204] ; (190b8 ) + 18fea: f00c fa69 bl 254c0 transmitting = 1; - 18f0a: 2501 movs r5, #1 + 18fee: 2501 movs r5, #1 ssd1306_command1((vccstate == BMC_SSD1306_EXTERNALVCC) ? 0x9F : 0xCF); - 18f0c: f996 2029 ldrsb.w r2, [r6, #41] ; 0x29 + 18ff0: f996 2029 ldrsb.w r2, [r6, #41] ; 0x29 txBuffer[0] = (address << 1); - 18f10: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 - 18f14: 42aa cmp r2, r5 + 18ff4: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 18ff8: 42aa cmp r2, r5 transmitting = 1; - 18f16: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 18ffa: f884 5130 strb.w r5, [r4, #304] ; 0x130 txBuffer[0] = (address << 1); - 18f1a: fa03 f305 lsl.w r3, r3, r5 - 18f1e: bf0c ite eq - 18f20: 279f moveq r7, #159 ; 0x9f - 18f22: 27cf movne r7, #207 ; 0xcf + 18ffe: fa03 f305 lsl.w r3, r3, r5 + 19002: bf0c ite eq + 19004: 279f moveq r7, #159 ; 0x9f + 19006: 27cf movne r7, #207 ; 0xcf Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18f24: 2100 movs r1, #0 - 18f26: 482b ldr r0, [pc, #172] ; (18fd4 ) - 18f28: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 19008: 2100 movs r1, #0 + 1900a: 482b ldr r0, [pc, #172] ; (190b8 ) + 1900c: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 txBufferLength = 1; - 18f2c: f884 512f strb.w r5, [r4, #303] ; 0x12f - 18f30: f00c f942 bl 251b8 + 19010: f884 512f strb.w r5, [r4, #303] ; 0x12f + 19014: f00c f946 bl 252a4 Wire.write(c); - 18f34: 4639 mov r1, r7 - 18f36: 4827 ldr r0, [pc, #156] ; (18fd4 ) - 18f38: f00c f93e bl 251b8 + 19018: 4639 mov r1, r7 + 1901a: 4827 ldr r0, [pc, #156] ; (190b8 ) + 1901c: f00c f942 bl 252a4 return endTransmission(1); - 18f3c: 4629 mov r1, r5 - 18f3e: 4825 ldr r0, [pc, #148] ; (18fd4 ) - 18f40: f00c fa48 bl 253d4 + 19020: 4629 mov r1, r5 + 19022: 4825 ldr r0, [pc, #148] ; (190b8 ) + 19024: f00c fa4c bl 254c0 } - 18f44: e6db b.n 18cfe + 19028: e6db b.n 18de2 txBuffer[0] = (address << 1); - 18f46: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 1902a: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 transmitting = 1; - 18f4a: 2501 movs r5, #1 - 18f4c: 4f23 ldr r7, [pc, #140] ; (18fdc ) + 1902e: 2501 movs r5, #1 + 19030: 4f23 ldr r7, [pc, #140] ; (190c0 ) Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18f4e: 2100 movs r1, #0 + 19032: 2100 movs r1, #0 txBuffer[0] = (address << 1); - 18f50: 40ab lsls r3, r5 - 18f52: 4820 ldr r0, [pc, #128] ; (18fd4 ) + 19034: 40ab lsls r3, r5 + 19036: 4820 ldr r0, [pc, #128] ; (190b8 ) transmitting = 1; - 18f54: f884 5130 strb.w r5, [r4, #304] ; 0x130 - 18f58: f107 0902 add.w r9, r7, #2 + 19038: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 1903c: f107 0902 add.w r9, r7, #2 txBufferLength = 1; - 18f5c: f884 512f strb.w r5, [r4, #303] ; 0x12f + 19040: f884 512f strb.w r5, [r4, #303] ; 0x12f return endTransmission(1); - 18f60: 46aa mov sl, r5 + 19044: 46aa mov sl, r5 txBuffer[0] = (address << 1); - 18f62: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 - 18f66: f00c f927 bl 251b8 + 19046: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 1904a: f00c f92b bl 252a4 Wire.write(pgm_read_byte(c++)); - 18f6a: f8df 8068 ldr.w r8, [pc, #104] ; 18fd4 + 1904e: f8df 8068 ldr.w r8, [pc, #104] ; 190b8 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18f6e: 21da movs r1, #218 ; 0xda - 18f70: e001 b.n 18f76 + 19052: 21da movs r1, #218 ; 0xda + 19054: e001 b.n 1905a Wire.write(pgm_read_byte(c++)); - 18f72: f817 1f01 ldrb.w r1, [r7, #1]! - 18f76: 4640 mov r0, r8 + 19056: f817 1f01 ldrb.w r1, [r7, #1]! + 1905a: 4640 mov r0, r8 bytesOut++; - 18f78: 3501 adds r5, #1 + 1905c: 3501 adds r5, #1 Wire.write(pgm_read_byte(c++)); - 18f7a: f00c f91d bl 251b8 + 1905e: f00c f921 bl 252a4 while(n--) { - 18f7e: 454f cmp r7, r9 + 19062: 454f cmp r7, r9 bytesOut++; - 18f80: b2ed uxtb r5, r5 + 19064: b2ed uxtb r5, r5 while(n--) { - 18f82: d014 beq.n 18fae + 19066: d014 beq.n 19092 if(bytesOut >= WIRE_MAX) { - 18f84: 2d88 cmp r5, #136 ; 0x88 - 18f86: d1f4 bne.n 18f72 + 19068: 2d88 cmp r5, #136 ; 0x88 + 1906a: d1f4 bne.n 19056 return endTransmission(1); - 18f88: 2101 movs r1, #1 - 18f8a: 4640 mov r0, r8 - 18f8c: f00c fa22 bl 253d4 + 1906c: 2101 movs r1, #1 + 1906e: 4640 mov r0, r8 + 19070: f00c fa26 bl 254c0 txBuffer[0] = (address << 1); - 18f90: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 19074: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18f94: 2100 movs r1, #0 - 18f96: 4640 mov r0, r8 - 18f98: 005b lsls r3, r3, #1 + 19078: 2100 movs r1, #0 + 1907a: 4640 mov r0, r8 + 1907c: 005b lsls r3, r3, #1 bytesOut = 1; - 18f9a: 2501 movs r5, #1 + 1907e: 2501 movs r5, #1 transmitting = 1; - 18f9c: f884 a130 strb.w sl, [r4, #304] ; 0x130 + 19080: f884 a130 strb.w sl, [r4, #304] ; 0x130 txBufferLength = 1; - 18fa0: f884 a12f strb.w sl, [r4, #303] ; 0x12f + 19084: f884 a12f strb.w sl, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 18fa4: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 19088: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 Wire.write((uint8_t)0x00); // Co = 0, D/C = 0 - 18fa8: f00c f906 bl 251b8 + 1908c: f00c f90a bl 252a4 bytesOut = 1; - 18fac: e7e1 b.n 18f72 + 19090: e7e1 b.n 19056 return endTransmission(1); - 18fae: 2101 movs r1, #1 - 18fb0: 4808 ldr r0, [pc, #32] ; (18fd4 ) - 18fb2: f00c fa0f bl 253d4 + 19092: 2101 movs r1, #1 + 19094: 4808 ldr r0, [pc, #32] ; (190b8 ) + 19096: f00c fa13 bl 254c0 transmitting = 1; - 18fb6: 2501 movs r5, #1 + 1909a: 2501 movs r5, #1 ssd1306_command1((vccstate == BMC_SSD1306_EXTERNALVCC) ? 0x10 : 0xAF); - 18fb8: f996 2029 ldrsb.w r2, [r6, #41] ; 0x29 + 1909c: f996 2029 ldrsb.w r2, [r6, #41] ; 0x29 txBuffer[0] = (address << 1); - 18fbc: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 - 18fc0: 42aa cmp r2, r5 + 190a0: f896 3028 ldrb.w r3, [r6, #40] ; 0x28 + 190a4: 42aa cmp r2, r5 transmitting = 1; - 18fc2: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 190a6: f884 5130 strb.w r5, [r4, #304] ; 0x130 txBuffer[0] = (address << 1); - 18fc6: fa03 f305 lsl.w r3, r3, r5 - 18fca: bf0c ite eq - 18fcc: 2710 moveq r7, #16 - 18fce: 27af movne r7, #175 ; 0xaf - 18fd0: e7a8 b.n 18f24 - 18fd2: bf00 nop - 18fd4: 2000b0f8 .word 0x2000b0f8 - 18fd8: 6001e15c .word 0x6001e15c - 18fdc: 6001e160 .word 0x6001e160 - -00018fe0 <__tcf_0>: + 190aa: fa03 f305 lsl.w r3, r3, r5 + 190ae: bf0c ite eq + 190b0: 2710 moveq r7, #16 + 190b2: 27af movne r7, #175 ; 0xaf + 190b4: e7a8 b.n 19008 + 190b6: bf00 nop + 190b8: 2000b118 .word 0x2000b118 + 190bc: 6001e15c .word 0x6001e15c + 190c0: 6001e160 .word 0x6001e160 + +000190c4 <__tcf_0>: #endif #if defined(__IMXRT1062__) // Teensy 4.x // On T4 Setup the buffers to be used one per SPI buss... // This way we make sure it is hopefully in uncached memory BMC_ST7735DMA_Data BMC_ST7735_t3::_dma_data[3]; // one structure for each SPI buss... - 18fe0: b510 push {r4, lr} + 190c4: b510 push {r4, lr} DMAChannel & operator = (const DMASetting &rhs) { copy_tcd(TCD, rhs.TCD); return *this; } ~DMAChannel() { release(); - 18fe2: 4c07 ldr r4, [pc, #28] ; (19000 <__tcf_0+0x20>) - 18fe4: f504 7020 add.w r0, r4, #640 ; 0x280 - 18fe8: f010 fa62 bl 294b0 - 18fec: f504 70d0 add.w r0, r4, #416 ; 0x1a0 - 18ff0: f010 fa5e bl 294b0 - 18ff4: f104 00c0 add.w r0, r4, #192 ; 0xc0 - 18ff8: e8bd 4010 ldmia.w sp!, {r4, lr} - 18ffc: f010 ba58 b.w 294b0 - 19000: 200061e0 .word 0x200061e0 - -00019004 <_GLOBAL__sub_I__dma_dummy_rx>: + 190c6: 4c07 ldr r4, [pc, #28] ; (190e4 <__tcf_0+0x20>) + 190c8: f504 7020 add.w r0, r4, #640 ; 0x280 + 190cc: f010 fa66 bl 2959c + 190d0: f504 70d0 add.w r0, r4, #416 ; 0x1a0 + 190d4: f010 fa62 bl 2959c + 190d8: f104 00c0 add.w r0, r4, #192 ; 0xc0 + 190dc: e8bd 4010 ldmia.w sp!, {r4, lr} + 190e0: f010 ba5c b.w 2959c + 190e4: 200061e0 .word 0x200061e0 + +000190e8 <_GLOBAL__sub_I__dma_dummy_rx>: }; #ifdef DEBUG_ASYNC_LEDS digitalWriteFast(DEBUG_PIN_3, LOW); #endif #endif } - 19004: b538 push {r3, r4, r5, lr} - 19006: 4c0d ldr r4, [pc, #52] ; (1903c <_GLOBAL__sub_I__dma_dummy_rx+0x38>) - 19008: f504 7528 add.w r5, r4, #672 ; 0x2a0 + 190e8: b538 push {r3, r4, r5, lr} + 190ea: 4c0d ldr r4, [pc, #52] ; (19120 <_GLOBAL__sub_I__dma_dummy_rx+0x38>) + 190ec: f504 7528 add.w r5, r4, #672 ; 0x2a0 TCD = &tcddata; - 1900c: f104 0240 add.w r2, r4, #64 ; 0x40 - 19010: f104 0380 add.w r3, r4, #128 ; 0x80 + 190f0: f104 0240 add.w r2, r4, #64 ; 0x40 + 190f4: f104 0380 add.w r3, r4, #128 ; 0x80 begin(); - 19014: f104 00a0 add.w r0, r4, #160 ; 0xa0 + 190f8: f104 00a0 add.w r0, r4, #160 ; 0xa0 TCD = &tcddata; - 19018: f844 4c20 str.w r4, [r4, #-32] - 1901c: 6222 str r2, [r4, #32] + 190fc: f844 4c20 str.w r4, [r4, #-32] + 19100: 6222 str r2, [r4, #32] BMC_ST7735DMA_Data BMC_ST7735_t3::_dma_data[3]; // one structure for each SPI buss... - 1901e: 34e0 adds r4, #224 ; 0xe0 + 19102: 34e0 adds r4, #224 ; 0xe0 begin(); - 19020: 2100 movs r1, #0 + 19104: 2100 movs r1, #0 TCD = &tcddata; - 19022: f844 3c80 str.w r3, [r4, #-128] + 19106: f844 3c80 str.w r3, [r4, #-128] begin(); - 19026: f010 f9e9 bl 293fc - 1902a: 42ac cmp r4, r5 - 1902c: d1ee bne.n 1900c <_GLOBAL__sub_I__dma_dummy_rx+0x8> - 1902e: 4a04 ldr r2, [pc, #16] ; (19040 <_GLOBAL__sub_I__dma_dummy_rx+0x3c>) - 19030: 2000 movs r0, #0 - 19032: 4904 ldr r1, [pc, #16] ; (19044 <_GLOBAL__sub_I__dma_dummy_rx+0x40>) -} - 19034: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 1910a: f010 f9ed bl 294e8 + 1910e: 42ac cmp r4, r5 + 19110: d1ee bne.n 190f0 <_GLOBAL__sub_I__dma_dummy_rx+0x8> + 19112: 4a04 ldr r2, [pc, #16] ; (19124 <_GLOBAL__sub_I__dma_dummy_rx+0x3c>) + 19114: 2000 movs r0, #0 + 19116: 4904 ldr r1, [pc, #16] ; (19128 <_GLOBAL__sub_I__dma_dummy_rx+0x40>) +} + 19118: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} BMC_ST7735DMA_Data BMC_ST7735_t3::_dma_data[3]; // one structure for each SPI buss... - 19038: f014 bba2 b.w 2d780 <__aeabi_atexit> - 1903c: 20006200 .word 0x20006200 - 19040: 20004c24 .word 0x20004c24 - 19044: 00018fe1 .word 0x00018fe1 + 1911c: f014 bba4 b.w 2d868 <__aeabi_atexit> + 19120: 20006200 .word 0x20006200 + 19124: 20004ce4 .word 0x20004ce4 + 19128: 000190c5 .word 0x000190c5 -00019048 : +0001912c : Licensed under the MIT license. See LICENSE file in the project root for full license information. */ #include "editor/BMC-Editor.h" void BMCEditor::backupGlobalSettings(uint16_t t_minLength){ - 19048: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 1912c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} // backup message is the same as the save message if(incoming.size() == t_minLength){ - 1904c: 6bc4 ldr r4, [r0, #60] ; 0x3c + 19130: 6bc4 ldr r4, [r0, #60] ; 0x3c void BMCEditor::backupGlobalSettings(uint16_t t_minLength){ - 1904e: b082 sub sp, #8 - 19050: f8b4 3003 ldrh.w r3, [r4, #3] + 19132: b082 sub sp, #8 + 19134: f8b4 3003 ldrh.w r3, [r4, #3] if(incoming.size() == t_minLength){ - 19054: 4299 cmp r1, r3 - 19056: d008 beq.n 1906a + 19138: 4299 cmp r1, r3 + 1913a: d008 beq.n 1914e // this will make sure that we any messages we will receive from here on // are accepted, we do this even if the device id wasn't changed. deviceId = tmpDeviceId; settings.setDeviceId(deviceId); } sendNotification(BMC_NOTIFY_BACKUP_DATA_ACCEPTED, 0); - 19058: 2300 movs r3, #0 - 1905a: 2110 movs r1, #16 - 1905c: 461a mov r2, r3 - 1905e: 9300 str r3, [sp, #0] - 19060: f001 fc92 bl 1a988 -} - 19064: b002 add sp, #8 - 19066: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 1913c: 2300 movs r3, #0 + 1913e: 2110 movs r1, #16 + 19140: 461a mov r2, r3 + 19142: 9300 str r3, [sp, #0] + 19144: f001 fc90 bl 1aa68 +} + 19148: b002 add sp, #8 + 1914a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if((t_offset+4) < size()){ - 1906a: 290d cmp r1, #13 + 1914e: 290d cmp r1, #13 uint8_t tmpDeviceId = deviceId; - 1906c: f890 c02d ldrb.w ip, [r0, #45] ; 0x2d + 19150: f890 c02d ldrb.w ip, [r0, #45] ; 0x2d bmcStoreGlobalSettings& item = store.global.settings; - 19070: 6805 ldr r5, [r0, #0] - 19072: d859 bhi.n 19128 + 19154: 6805 ldr r5, [r0, #0] + 19156: d859 bhi.n 1920c return 0; - 19074: 2300 movs r3, #0 + 19158: 2300 movs r3, #0 item.flags = incoming.get32Bits(9); - 19076: 4629 mov r1, r5 - 19078: f104 0628 add.w r6, r4, #40 ; 0x28 - 1907c: f1c4 0e12 rsb lr, r4, #18 - 19080: f841 3f04 str.w r3, [r1, #4]! - 19084: 4623 mov r3, r4 + 1915a: 4629 mov r1, r5 + 1915c: f104 0628 add.w r6, r4, #40 ; 0x28 + 19160: f1c4 0e12 rsb lr, r4, #18 + 19164: f841 3f04 str.w r3, [r1, #4]! + 19168: 4623 mov r3, r4 if((t_offset+4) < size()){ - 19086: eb0e 0703 add.w r7, lr, r3 - 1908a: f8b4 8003 ldrh.w r8, [r4, #3] + 1916a: eb0e 0703 add.w r7, lr, r3 + 1916e: f8b4 8003 ldrh.w r8, [r4, #3] return 0; - 1908e: 2200 movs r2, #0 + 19172: 2200 movs r2, #0 if((t_offset+4) < size()){ - 19090: 4547 cmp r7, r8 - 19092: da15 bge.n 190c0 + 19174: 4547 cmp r7, r8 + 19176: da15 bge.n 191a4 return BMC_MIDI_ARRAY_TO_32BITS(t_offset, sysex) & BMC_MASK_32; - 19094: 7dda ldrb r2, [r3, #23] - 19096: 7d9f ldrb r7, [r3, #22] - 19098: f002 027f and.w r2, r2, #127 ; 0x7f - 1909c: f893 8013 ldrb.w r8, [r3, #19] - 190a0: 01ff lsls r7, r7, #7 - 190a2: ea42 7208 orr.w r2, r2, r8, lsl #28 - 190a6: f407 577e and.w r7, r7, #16256 ; 0x3f80 - 190aa: 433a orrs r2, r7 - 190ac: 7d5f ldrb r7, [r3, #21] - 190ae: 03bf lsls r7, r7, #14 - 190b0: f407 17fe and.w r7, r7, #2080768 ; 0x1fc000 - 190b4: 433a orrs r2, r7 - 190b6: 7d1f ldrb r7, [r3, #20] - 190b8: 057f lsls r7, r7, #21 - 190ba: f007 677e and.w r7, r7, #266338304 ; 0xfe00000 - 190be: 433a orrs r2, r7 + 19178: 7dda ldrb r2, [r3, #23] + 1917a: 7d9f ldrb r7, [r3, #22] + 1917c: f002 027f and.w r2, r2, #127 ; 0x7f + 19180: f893 8013 ldrb.w r8, [r3, #19] + 19184: 01ff lsls r7, r7, #7 + 19186: ea42 7208 orr.w r2, r2, r8, lsl #28 + 1918a: f407 577e and.w r7, r7, #16256 ; 0x3f80 + 1918e: 433a orrs r2, r7 + 19190: 7d5f ldrb r7, [r3, #21] + 19192: 03bf lsls r7, r7, #14 + 19194: f407 17fe and.w r7, r7, #2080768 ; 0x1fc000 + 19198: 433a orrs r2, r7 + 1919a: 7d1f ldrb r7, [r3, #20] + 1919c: 057f lsls r7, r7, #21 + 1919e: f007 677e and.w r7, r7, #266338304 ; 0xfe00000 + 191a2: 433a orrs r2, r7 for(uint8_t i = 0 ; i < 8 ; i++){ - 190c0: 3305 adds r3, #5 + 191a4: 3305 adds r3, #5 item.data[i] = incoming.get32Bits(e); - 190c2: f841 2f04 str.w r2, [r1, #4]! + 191a6: f841 2f04 str.w r2, [r1, #4]! for(uint8_t i = 0 ; i < 8 ; i++){ - 190c6: 429e cmp r6, r3 - 190c8: d1dd bne.n 19086 - 190ca: 3526 adds r5, #38 ; 0x26 - 190cc: f104 0715 add.w r7, r4, #21 - 190d0: 4623 mov r3, r4 - 190d2: f1c4 0638 rsb r6, r4, #56 ; 0x38 + 191aa: 429e cmp r6, r3 + 191ac: d1dd bne.n 1916a + 191ae: 3526 adds r5, #38 ; 0x26 + 191b0: f104 0715 add.w r7, r4, #21 + 191b4: 4623 mov r3, r4 + 191b6: f1c4 0638 rsb r6, r4, #56 ; 0x38 if((t_offset+2) < size()){ - 190d6: 18f1 adds r1, r6, r3 - 190d8: f8b4 e003 ldrh.w lr, [r4, #3] + 191ba: 18f1 adds r1, r6, r3 + 191bc: f8b4 e003 ldrh.w lr, [r4, #3] return 0; - 190dc: 2200 movs r2, #0 + 191c0: 2200 movs r2, #0 if((t_offset+2) < size()){ - 190de: 4571 cmp r1, lr - 190e0: da0e bge.n 19100 + 191c2: 4571 cmp r1, lr + 191c4: da0e bge.n 191e4 return BMC_MIDI_ARRAY_TO_16BITS(t_offset, sysex) & BMC_MASK_16; - 190e2: f893 203d ldrb.w r2, [r3, #61] ; 0x3d - 190e6: f893 103c ldrb.w r1, [r3, #60] ; 0x3c - 190ea: f002 027f and.w r2, r2, #127 ; 0x7f - 190ee: f893 e03b ldrb.w lr, [r3, #59] ; 0x3b - 190f2: 01c9 lsls r1, r1, #7 - 190f4: ea42 328e orr.w r2, r2, lr, lsl #14 - 190f8: f401 517e and.w r1, r1, #16256 ; 0x3f80 - 190fc: 430a orrs r2, r1 - 190fe: b292 uxth r2, r2 + 191c6: f893 203d ldrb.w r2, [r3, #61] ; 0x3d + 191ca: f893 103c ldrb.w r1, [r3, #60] ; 0x3c + 191ce: f002 027f and.w r2, r2, #127 ; 0x7f + 191d2: f893 e03b ldrb.w lr, [r3, #59] ; 0x3b + 191d6: 01c9 lsls r1, r1, #7 + 191d8: ea42 328e orr.w r2, r2, lr, lsl #14 + 191dc: f401 517e and.w r1, r1, #16256 ; 0x3f80 + 191e0: 430a orrs r2, r1 + 191e2: b292 uxth r2, r2 for(uint8_t i = 0; i < 7 ; i++){ - 19100: 3303 adds r3, #3 + 191e4: 3303 adds r3, #3 item.routing[i] = incoming.get16Bits(e); - 19102: f825 2f02 strh.w r2, [r5, #2]! + 191e6: f825 2f02 strh.w r2, [r5, #2]! for(uint8_t i = 0; i < 7 ; i++){ - 19106: 42bb cmp r3, r7 - 19108: d1e5 bne.n 190d6 + 191ea: 42bb cmp r3, r7 + 191ec: d1e5 bne.n 191ba BMC_WRITE_BITS(settings.data[0],value,0x0F,14); - 1910a: 6883 ldr r3, [r0, #8] + 191ee: 6883 ldr r3, [r0, #8] deviceId = tmpDeviceId; - 1910c: f880 c02d strb.w ip, [r0, #45] ; 0x2d - 19110: ea4f 3c8c mov.w ip, ip, lsl #14 - 19114: 681a ldr r2, [r3, #0] - 19116: f40c 3c70 and.w ip, ip, #245760 ; 0x3c000 - 1911a: 6853 ldr r3, [r2, #4] - 1911c: f423 3370 bic.w r3, r3, #245760 ; 0x3c000 - 19120: ea43 030c orr.w r3, r3, ip - 19124: 6053 str r3, [r2, #4] - } - 19126: e797 b.n 19058 + 191f0: f880 c02d strb.w ip, [r0, #45] ; 0x2d + 191f4: ea4f 3c8c mov.w ip, ip, lsl #14 + 191f8: 681a ldr r2, [r3, #0] + 191fa: f40c 3c70 and.w ip, ip, #245760 ; 0x3c000 + 191fe: 6853 ldr r3, [r2, #4] + 19200: f423 3370 bic.w r3, r3, #245760 ; 0x3c000 + 19204: ea43 030c orr.w r3, r3, ip + 19208: 6053 str r3, [r2, #4] + } + 1920a: e797 b.n 1913c return BMC_MIDI_ARRAY_TO_32BITS(t_offset, sysex) & BMC_MASK_32; - 19128: 7ca3 ldrb r3, [r4, #18] - 1912a: 7c62 ldrb r2, [r4, #17] - 1912c: f003 037f and.w r3, r3, #127 ; 0x7f - 19130: 7ba1 ldrb r1, [r4, #14] - 19132: 01d2 lsls r2, r2, #7 - 19134: ea43 7301 orr.w r3, r3, r1, lsl #28 - 19138: f402 527e and.w r2, r2, #16256 ; 0x3f80 - 1913c: 4313 orrs r3, r2 - 1913e: 7c22 ldrb r2, [r4, #16] - 19140: 0392 lsls r2, r2, #14 - 19142: f402 12fe and.w r2, r2, #2080768 ; 0x1fc000 - 19146: 4313 orrs r3, r2 - 19148: 7be2 ldrb r2, [r4, #15] - 1914a: 0552 lsls r2, r2, #21 - 1914c: f002 627e and.w r2, r2, #266338304 ; 0xfe00000 - 19150: 4313 orrs r3, r2 - 19152: e790 b.n 19076 - -00019154 : + 1920c: 7ca3 ldrb r3, [r4, #18] + 1920e: 7c62 ldrb r2, [r4, #17] + 19210: f003 037f and.w r3, r3, #127 ; 0x7f + 19214: 7ba1 ldrb r1, [r4, #14] + 19216: 01d2 lsls r2, r2, #7 + 19218: ea43 7301 orr.w r3, r3, r1, lsl #28 + 1921c: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 19220: 4313 orrs r3, r2 + 19222: 7c22 ldrb r2, [r4, #16] + 19224: 0392 lsls r2, r2, #14 + 19226: f402 12fe and.w r2, r2, #2080768 ; 0x1fc000 + 1922a: 4313 orrs r3, r2 + 1922c: 7be2 ldrb r2, [r4, #15] + 1922e: 0552 lsls r2, r2, #21 + 19230: f002 627e and.w r2, r2, #266338304 ; 0xfe00000 + 19234: 4313 orrs r3, r2 + 19236: e790 b.n 1915a + +00019238 : sendNotification(BMC_NOTIFY_BACKUP_DATA_ACCEPTED, t_minLength); } */ // BMC 2.0 void BMCEditor::backupEventMessage(uint16_t t_minLength){ uint16_t index = getMessageLayerNumber(); - 19154: 6bc3 ldr r3, [r0, #60] ; 0x3c + 19238: 6bc3 ldr r3, [r0, #60] ; 0x3c void BMCEditor::backupEventMessage(uint16_t t_minLength){ - 19156: 4684 mov ip, r0 - 19158: b510 push {r4, lr} - 1915a: f8b3 e003 ldrh.w lr, [r3, #3] - 1915e: b082 sub sp, #8 + 1923a: 4684 mov ip, r0 + 1923c: b510 push {r4, lr} + 1923e: f8b3 e003 ldrh.w lr, [r3, #3] + 19242: b082 sub sp, #8 if((t_offset+1) < size()){ - 19160: f1be 0f07 cmp.w lr, #7 - 19164: d80b bhi.n 1917e + 19244: f1be 0f07 cmp.w lr, #7 + 19248: d80b bhi.n 19262 return 0; - 19166: 2200 movs r2, #0 + 1924a: 2200 movs r2, #0 if(index >= BMC_MAX_EVENTS_LIBRARY){ sendNotification(BMC_NOTIFY_BACKUP_DATA_ACCEPTED, 0); return; } if(incoming.size() == t_minLength){ - 19168: 4571 cmp r1, lr - 1916a: d01a beq.n 191a2 + 1924c: 4571 cmp r1, lr + 1924e: d01a beq.n 19286 item.settings = incoming.get8Bits(11); item.type = incoming.get8Bits(13); item.ports = incoming.get8Bits(15); item.event = incoming.get32Bits(17); } sendNotification(BMC_NOTIFY_BACKUP_DATA_ACCEPTED, t_minLength); - 1916c: 2300 movs r3, #0 - 1916e: 460a mov r2, r1 - 19170: 4660 mov r0, ip - 19172: 2110 movs r1, #16 - 19174: 9300 str r3, [sp, #0] - 19176: f001 fc07 bl 1a988 -} - 1917a: b002 add sp, #8 - 1917c: bd10 pop {r4, pc} + 19250: 2300 movs r3, #0 + 19252: 460a mov r2, r1 + 19254: 4660 mov r0, ip + 19256: 2110 movs r1, #16 + 19258: 9300 str r3, [sp, #0] + 1925a: f001 fc05 bl 1aa68 +} + 1925e: b002 add sp, #8 + 19260: bd10 pop {r4, pc} return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1917e: 7adc ldrb r4, [r3, #11] - 19180: 7b1a ldrb r2, [r3, #12] - 19182: 01e4 lsls r4, r4, #7 - 19184: f002 027f and.w r2, r2, #127 ; 0x7f - 19188: f404 547e and.w r4, r4, #16256 ; 0x3f80 - 1918c: 4322 orrs r2, r4 + 19262: 7adc ldrb r4, [r3, #11] + 19264: 7b1a ldrb r2, [r3, #12] + 19266: 01e4 lsls r4, r4, #7 + 19268: f002 027f and.w r2, r2, #127 ; 0x7f + 1926c: f404 547e and.w r4, r4, #16256 ; 0x3f80 + 19270: 4322 orrs r2, r4 if(index >= BMC_MAX_EVENTS_LIBRARY){ - 1918e: 2ac7 cmp r2, #199 ; 0xc7 - 19190: dd2c ble.n 191ec + 19272: 2ac7 cmp r2, #199 ; 0xc7 + 19274: dd2c ble.n 192d0 sendNotification(BMC_NOTIFY_BACKUP_DATA_ACCEPTED, 0); - 19192: 2300 movs r3, #0 - 19194: 2110 movs r1, #16 - 19196: 461a mov r2, r3 - 19198: 9300 str r3, [sp, #0] - 1919a: f001 fbf5 bl 1a988 -} - 1919e: b002 add sp, #8 - 191a0: bd10 pop {r4, pc} + 19276: 2300 movs r3, #0 + 19278: 2110 movs r1, #16 + 1927a: 461a mov r2, r3 + 1927c: 9300 str r3, [sp, #0] + 1927e: f001 fbf3 bl 1aa68 +} + 19282: b002 add sp, #8 + 19284: bd10 pop {r4, pc} if((t_offset+1) < size()){ - 191a2: 290a cmp r1, #10 + 19286: 290a cmp r1, #10 bmcStoreEvent& item = store.global.events[index]; - 191a4: f8dc 4000 ldr.w r4, [ip] - 191a8: d822 bhi.n 191f0 - 191aa: 2000 movs r0, #0 - 191ac: eb04 02c2 add.w r2, r4, r2, lsl #3 + 19288: f8dc 4000 ldr.w r4, [ip] + 1928c: d822 bhi.n 192d4 + 1928e: 2000 movs r0, #0 + 19290: eb04 02c2 add.w r2, r4, r2, lsl #3 item.name = incoming.get14Bits(9); - 191b0: f882 0038 strb.w r0, [r2, #56] ; 0x38 + 19294: f882 0038 strb.w r0, [r2, #56] ; 0x38 if((t_offset+1) < size()){ - 191b4: f8b3 0003 ldrh.w r0, [r3, #3] - 191b8: 280c cmp r0, #12 - 191ba: d84d bhi.n 19258 + 19298: f8b3 0003 ldrh.w r0, [r3, #3] + 1929c: 280c cmp r0, #12 + 1929e: d84d bhi.n 1933c return 0; - 191bc: 2000 movs r0, #0 + 192a0: 2000 movs r0, #0 item.settings = incoming.get8Bits(11); - 191be: f882 0039 strb.w r0, [r2, #57] ; 0x39 + 192a2: f882 0039 strb.w r0, [r2, #57] ; 0x39 if((t_offset+1) < size()){ - 191c2: f8b3 0003 ldrh.w r0, [r3, #3] - 191c6: 280e cmp r0, #14 - 191c8: d83e bhi.n 19248 + 192a6: f8b3 0003 ldrh.w r0, [r3, #3] + 192aa: 280e cmp r0, #14 + 192ac: d83e bhi.n 1932c return 0; - 191ca: 2000 movs r0, #0 + 192ae: 2000 movs r0, #0 item.type = incoming.get8Bits(13); - 191cc: f882 003a strb.w r0, [r2, #58] ; 0x3a + 192b0: f882 003a strb.w r0, [r2, #58] ; 0x3a if((t_offset+1) < size()){ - 191d0: f8b3 0003 ldrh.w r0, [r3, #3] - 191d4: 2810 cmp r0, #16 - 191d6: d82f bhi.n 19238 + 192b4: f8b3 0003 ldrh.w r0, [r3, #3] + 192b8: 2810 cmp r0, #16 + 192ba: d82f bhi.n 1931c return 0; - 191d8: 2000 movs r0, #0 + 192bc: 2000 movs r0, #0 item.ports = incoming.get8Bits(15); - 191da: f882 003b strb.w r0, [r2, #59] ; 0x3b + 192be: f882 003b strb.w r0, [r2, #59] ; 0x3b if((t_offset+4) < size()){ - 191de: f8b3 0003 ldrh.w r0, [r3, #3] - 191e2: 2815 cmp r0, #21 - 191e4: d80f bhi.n 19206 + 192c2: f8b3 0003 ldrh.w r0, [r3, #3] + 192c6: 2815 cmp r0, #21 + 192c8: d80f bhi.n 192ea return 0; - 191e6: 2300 movs r3, #0 + 192ca: 2300 movs r3, #0 item.event = incoming.get32Bits(17); - 191e8: 63d3 str r3, [r2, #60] ; 0x3c - 191ea: e7bf b.n 1916c + 192cc: 63d3 str r3, [r2, #60] ; 0x3c + 192ce: e7bf b.n 19250 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 191ec: b292 uxth r2, r2 - 191ee: e7bb b.n 19168 - 191f0: 7b98 ldrb r0, [r3, #14] - 191f2: f893 e00f ldrb.w lr, [r3, #15] - 191f6: 01c0 lsls r0, r0, #7 - 191f8: f00e 0e7f and.w lr, lr, #127 ; 0x7f - 191fc: f000 0080 and.w r0, r0, #128 ; 0x80 + 192d0: b292 uxth r2, r2 + 192d2: e7bb b.n 1924c + 192d4: 7b98 ldrb r0, [r3, #14] + 192d6: f893 e00f ldrb.w lr, [r3, #15] + 192da: 01c0 lsls r0, r0, #7 + 192dc: f00e 0e7f and.w lr, lr, #127 ; 0x7f + 192e0: f000 0080 and.w r0, r0, #128 ; 0x80 item.name = incoming.get14Bits(9); - 19200: ea40 000e orr.w r0, r0, lr - 19204: e7d2 b.n 191ac + 192e4: ea40 000e orr.w r0, r0, lr + 192e8: e7d2 b.n 19290 return BMC_MIDI_ARRAY_TO_32BITS(t_offset, sysex) & BMC_MASK_32; - 19206: 7e98 ldrb r0, [r3, #26] - 19208: 7e5c ldrb r4, [r3, #25] - 1920a: f893 e016 ldrb.w lr, [r3, #22] - 1920e: f000 007f and.w r0, r0, #127 ; 0x7f - 19212: 01e4 lsls r4, r4, #7 - 19214: ea40 700e orr.w r0, r0, lr, lsl #28 - 19218: f893 e018 ldrb.w lr, [r3, #24] - 1921c: f404 547e and.w r4, r4, #16256 ; 0x3f80 - 19220: 4320 orrs r0, r4 - 19222: 7ddc ldrb r4, [r3, #23] - 19224: ea4f 338e mov.w r3, lr, lsl #14 - 19228: 0564 lsls r4, r4, #21 - 1922a: f403 13fe and.w r3, r3, #2080768 ; 0x1fc000 - 1922e: 4303 orrs r3, r0 - 19230: f004 607e and.w r0, r4, #266338304 ; 0xfe00000 - 19234: 4303 orrs r3, r0 - 19236: e7d7 b.n 191e8 + 192ea: 7e98 ldrb r0, [r3, #26] + 192ec: 7e5c ldrb r4, [r3, #25] + 192ee: f893 e016 ldrb.w lr, [r3, #22] + 192f2: f000 007f and.w r0, r0, #127 ; 0x7f + 192f6: 01e4 lsls r4, r4, #7 + 192f8: ea40 700e orr.w r0, r0, lr, lsl #28 + 192fc: f893 e018 ldrb.w lr, [r3, #24] + 19300: f404 547e and.w r4, r4, #16256 ; 0x3f80 + 19304: 4320 orrs r0, r4 + 19306: 7ddc ldrb r4, [r3, #23] + 19308: ea4f 338e mov.w r3, lr, lsl #14 + 1930c: 0564 lsls r4, r4, #21 + 1930e: f403 13fe and.w r3, r3, #2080768 ; 0x1fc000 + 19312: 4303 orrs r3, r0 + 19314: f004 607e and.w r0, r4, #266338304 ; 0xfe00000 + 19318: 4303 orrs r3, r0 + 1931a: e7d7 b.n 192cc return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 19238: 7d58 ldrb r0, [r3, #21] - 1923a: 7d1c ldrb r4, [r3, #20] - 1923c: f000 007f and.w r0, r0, #127 ; 0x7f - 19240: ea40 10c4 orr.w r0, r0, r4, lsl #7 - 19244: b2c0 uxtb r0, r0 - 19246: e7c8 b.n 191da - 19248: 7cd8 ldrb r0, [r3, #19] - 1924a: 7c9c ldrb r4, [r3, #18] - 1924c: f000 007f and.w r0, r0, #127 ; 0x7f - 19250: ea40 10c4 orr.w r0, r0, r4, lsl #7 - 19254: b2c0 uxtb r0, r0 - 19256: e7b9 b.n 191cc - 19258: 7c58 ldrb r0, [r3, #17] - 1925a: 7c1c ldrb r4, [r3, #16] - 1925c: f000 007f and.w r0, r0, #127 ; 0x7f - 19260: ea40 10c4 orr.w r0, r0, r4, lsl #7 - 19264: b2c0 uxtb r0, r0 - 19266: e7aa b.n 191be - -00019268 : + 1931c: 7d58 ldrb r0, [r3, #21] + 1931e: 7d1c ldrb r4, [r3, #20] + 19320: f000 007f and.w r0, r0, #127 ; 0x7f + 19324: ea40 10c4 orr.w r0, r0, r4, lsl #7 + 19328: b2c0 uxtb r0, r0 + 1932a: e7c8 b.n 192be + 1932c: 7cd8 ldrb r0, [r3, #19] + 1932e: 7c9c ldrb r4, [r3, #18] + 19330: f000 007f and.w r0, r0, #127 ; 0x7f + 19334: ea40 10c4 orr.w r0, r0, r4, lsl #7 + 19338: b2c0 uxtb r0, r0 + 1933a: e7b9 b.n 192b0 + 1933c: 7c58 ldrb r0, [r3, #17] + 1933e: 7c1c ldrb r4, [r3, #16] + 19340: f000 007f and.w r0, r0, #127 ; 0x7f + 19344: ea40 10c4 orr.w r0, r0, r4, lsl #7 + 19348: b2c0 uxtb r0, r0 + 1934a: e7aa b.n 192a2 + +0001934c : void BMCEditor::backupNameMessage(uint16_t t_minLength){ uint16_t index = getMessageLayerNumber(); - 19268: 6bc2 ldr r2, [r0, #60] ; 0x3c + 1934c: 6bc2 ldr r2, [r0, #60] ; 0x3c void BMCEditor::backupNameMessage(uint16_t t_minLength){ - 1926a: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 1926e: 460c mov r4, r1 - 19270: f8b2 1003 ldrh.w r1, [r2, #3] - 19274: b082 sub sp, #8 - 19276: 4605 mov r5, r0 + 1934e: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 19352: 460c mov r4, r1 + 19354: f8b2 1003 ldrh.w r1, [r2, #3] + 19358: b082 sub sp, #8 + 1935a: 4605 mov r5, r0 if((t_offset+1) < size()){ - 19278: 2907 cmp r1, #7 - 1927a: d841 bhi.n 19300 + 1935c: 2907 cmp r1, #7 + 1935e: d841 bhi.n 193e4 return 0; - 1927c: 2300 movs r3, #0 + 19360: 2300 movs r3, #0 if(index >= BMC_MAX_NAMES_LIBRARY){ sendNotification(BMC_NOTIFY_BACKUP_DATA_ACCEPTED, 0); return; } if(incoming.size() >= t_minLength){ - 1927e: 428c cmp r4, r1 - 19280: d909 bls.n 19296 + 19362: 428c cmp r4, r1 + 19364: d909 bls.n 1937a nameLength = BMC_MAX_NAMES_LENGTH; } incoming.getStringFromSysEx(10, item.name, nameLength); } } sendNotification(BMC_NOTIFY_BACKUP_DATA_ACCEPTED, t_minLength); - 19282: 2300 movs r3, #0 - 19284: 4622 mov r2, r4 - 19286: 2110 movs r1, #16 - 19288: 4628 mov r0, r5 - 1928a: 9300 str r3, [sp, #0] - 1928c: f001 fb7c bl 1a988 -} - 19290: b002 add sp, #8 - 19292: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 19366: 2300 movs r3, #0 + 19368: 4622 mov r2, r4 + 1936a: 2110 movs r1, #16 + 1936c: 4628 mov r0, r5 + 1936e: 9300 str r3, [sp, #0] + 19370: f001 fb7a bl 1aa68 +} + 19374: b002 add sp, #8 + 19376: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} uint8_t nameLength = incoming.sysex[9]; - 19296: 7b96 ldrb r6, [r2, #14] + 1937a: 7b96 ldrb r6, [r2, #14] if(incoming.size() == (nameLength + t_minLength)){ - 19298: 1932 adds r2, r6, r4 - 1929a: 4291 cmp r1, r2 - 1929c: d1f1 bne.n 19282 + 1937c: 1932 adds r2, r6, r4 + 1937e: 4291 cmp r1, r2 + 19380: d1f1 bne.n 19366 memset(item.name, 0, sizeof(item.name)*BMC_MAX_NAMES_LENGTH); - 1929e: eb03 1303 add.w r3, r3, r3, lsl #4 - 192a2: 682a ldr r2, [r5, #0] - 192a4: 2100 movs r1, #0 - 192a6: f503 63cf add.w r3, r3, #1656 ; 0x678 - 192aa: eb02 0803 add.w r8, r2, r3 - 192ae: f240 1221 movw r2, #289 ; 0x121 - 192b2: 4640 mov r0, r8 - 192b4: f015 f8ea bl 2e48c + 19382: eb03 1303 add.w r3, r3, r3, lsl #4 + 19386: 682a ldr r2, [r5, #0] + 19388: 2100 movs r1, #0 + 1938a: f503 63cf add.w r3, r3, #1656 ; 0x678 + 1938e: eb02 0803 add.w r8, r2, r3 + 19392: f240 1221 movw r2, #289 ; 0x121 + 19396: 4640 mov r0, r8 + 19398: f015 f8ec bl 2e574 if(length > 1 && (startsAt + length) < size()){ - 192b8: 2e01 cmp r6, #1 + 1939c: 2e01 cmp r6, #1 incoming.getStringFromSysEx(10, item.name, nameLength); - 192ba: 6bef ldr r7, [r5, #60] ; 0x3c - 192bc: d9e1 bls.n 19282 - 192be: 2e11 cmp r6, #17 - 192c0: f8b7 2003 ldrh.w r2, [r7, #3] - 192c4: bf28 it cs - 192c6: 2611 movcs r6, #17 - 192c8: f106 030a add.w r3, r6, #10 - 192cc: b2db uxtb r3, r3 - 192ce: 4293 cmp r3, r2 - 192d0: dad7 bge.n 19282 + 1939e: 6bef ldr r7, [r5, #60] ; 0x3c + 193a0: d9e1 bls.n 19366 + 193a2: 2e11 cmp r6, #17 + 193a4: f8b7 2003 ldrh.w r2, [r7, #3] + 193a8: bf28 it cs + 193aa: 2611 movcs r6, #17 + 193ac: f106 030a add.w r3, r6, #10 + 193b0: b2db uxtb r3, r3 + 193b2: 4293 cmp r3, r2 + 193b4: dad7 bge.n 19366 memset(str, 0, length); - 192d2: 4632 mov r2, r6 - 192d4: 2100 movs r1, #0 - 192d6: 4640 mov r0, r8 - 192d8: f015 f8d8 bl 2e48c + 193b6: 4632 mov r2, r6 + 193b8: 2100 movs r1, #0 + 193ba: 4640 mov r0, r8 + 193bc: f015 f8da bl 2e574 for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 192dc: f107 010e add.w r1, r7, #14 - 192e0: f108 32ff add.w r2, r8, #4294967295 ; 0xffffffff - 192e4: 2300 movs r3, #0 - 192e6: 3301 adds r3, #1 + 193c0: f107 010e add.w r1, r7, #14 + 193c4: f108 32ff add.w r2, r8, #4294967295 ; 0xffffffff + 193c8: 2300 movs r3, #0 + 193ca: 3301 adds r3, #1 str[i] = (char) sysex[e]; - 192e8: f811 0f01 ldrb.w r0, [r1, #1]! + 193cc: f811 0f01 ldrb.w r0, [r1, #1]! for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 192ec: b2db uxtb r3, r3 + 193d0: b2db uxtb r3, r3 str[i] = (char) sysex[e]; - 192ee: f802 0f01 strb.w r0, [r2, #1]! + 193d2: f802 0f01 strb.w r0, [r2, #1]! for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 192f2: 429e cmp r6, r3 - 192f4: d8f7 bhi.n 192e6 + 193d6: 429e cmp r6, r3 + 193d8: d8f7 bhi.n 193ca str[length-1] = 0; - 192f6: 4446 add r6, r8 - 192f8: 2300 movs r3, #0 - 192fa: f806 3c01 strb.w r3, [r6, #-1] + 193da: 4446 add r6, r8 + 193dc: 2300 movs r3, #0 + 193de: f806 3c01 strb.w r3, [r6, #-1] } - 192fe: e7c0 b.n 19282 + 193e2: e7c0 b.n 19366 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 19300: f892 c00b ldrb.w ip, [r2, #11] - 19304: 7b13 ldrb r3, [r2, #12] - 19306: ea4f 1ccc mov.w ip, ip, lsl #7 - 1930a: f003 037f and.w r3, r3, #127 ; 0x7f - 1930e: f40c 5c7e and.w ip, ip, #16256 ; 0x3f80 - 19312: ea43 030c orr.w r3, r3, ip + 193e4: f892 c00b ldrb.w ip, [r2, #11] + 193e8: 7b13 ldrb r3, [r2, #12] + 193ea: ea4f 1ccc mov.w ip, ip, lsl #7 + 193ee: f003 037f and.w r3, r3, #127 ; 0x7f + 193f2: f40c 5c7e and.w ip, ip, #16256 ; 0x3f80 + 193f6: ea43 030c orr.w r3, r3, ip if(index >= BMC_MAX_NAMES_LIBRARY){ - 19316: 2b7f cmp r3, #127 ; 0x7f - 19318: dd08 ble.n 1932c + 193fa: 2b7f cmp r3, #127 ; 0x7f + 193fc: dd08 ble.n 19410 sendNotification(BMC_NOTIFY_BACKUP_DATA_ACCEPTED, 0); - 1931a: 2300 movs r3, #0 - 1931c: 2110 movs r1, #16 - 1931e: 461a mov r2, r3 - 19320: 9300 str r3, [sp, #0] - 19322: f001 fb31 bl 1a988 -} - 19326: b002 add sp, #8 - 19328: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 1932c: b29b uxth r3, r3 - 1932e: e7a6 b.n 1927e - -00019330 : - 19330: 4770 bx lr - 19332: bf00 nop - -00019334 : + 193fe: 2300 movs r3, #0 + 19400: 2110 movs r1, #16 + 19402: 461a mov r2, r3 + 19404: 9300 str r3, [sp, #0] + 19406: f001 fb2f bl 1aa68 +} + 1940a: b002 add sp, #8 + 1940c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 19410: b29b uxth r3, r3 + 19412: e7a6 b.n 19362 + +00019414 : + 19414: 4770 bx lr + 19416: bf00 nop + +00019418 : void begin(){ - 19334: b510 push {r4, lr} - 19336: 211b movs r1, #27 - 19338: 4604 mov r4, r0 - 1933a: 48ac ldr r0, [pc, #688] ; (195ec ) - 1933c: f013 f904 bl 2c548 + 19418: b510 push {r4, lr} + 1941a: 211b movs r1, #27 + 1941c: 4604 mov r4, r0 + 1941e: 48ac ldr r0, [pc, #688] ; (196d0 ) + 19420: f013 f906 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 19340: 48ab ldr r0, [pc, #684] ; (195f0 ) - 19342: f010 fd97 bl 29e74 + 19424: 48ab ldr r0, [pc, #684] ; (196d4 ) + 19426: f010 fd9b bl 29f60 uint8_t t = STORAGE.begin(BMC24LC256::twiClock400kHz); - 19346: 49ab ldr r1, [pc, #684] ; (195f4 ) - 19348: 1d20 adds r0, r4, #4 - 1934a: f00b fdc1 bl 24ed0 + 1942a: 49ab ldr r1, [pc, #684] ; (196d8 ) + 1942c: 1d20 adds r0, r4, #4 + 1942e: f00b fdc5 bl 24fbc if(t){ - 1934e: b160 cbz r0, 1936a - 19350: 1e43 subs r3, r0, #1 - 19352: 4604 mov r4, r0 - 19354: 2100 movs r1, #0 - 19356: 48a8 ldr r0, [pc, #672] ; (195f8 ) - 19358: 2b03 cmp r3, #3 - 1935a: f200 8163 bhi.w 19624 - 1935e: e8df f013 tbh [pc, r3, lsl #1] - 19362: 00c7 .short 0x00c7 - 19364: 011b00f1 .word 0x011b00f1 - 19368: 0005 .short 0x0005 - } - 1936a: bd10 pop {r4, pc} - 1936c: f013 f8ec bl 2c548 - 19370: 489f ldr r0, [pc, #636] ; (195f0 ) - 19372: f010 fd7f bl 29e74 - 19376: 212e movs r1, #46 ; 0x2e - 19378: 48a0 ldr r0, [pc, #640] ; (195fc ) - 1937a: f013 f8e5 bl 2c548 - 1937e: 489c ldr r0, [pc, #624] ; (195f0 ) - 19380: f010 fd78 bl 29e74 - 19384: 212e movs r1, #46 ; 0x2e - 19386: 489d ldr r0, [pc, #628] ; (195fc ) - 19388: f013 f8de bl 2c548 - 1938c: 4898 ldr r0, [pc, #608] ; (195f0 ) - 1938e: f010 fd71 bl 29e74 - 19392: 212e movs r1, #46 ; 0x2e - 19394: 4899 ldr r0, [pc, #612] ; (195fc ) - 19396: f013 f8d7 bl 2c548 - 1939a: 4895 ldr r0, [pc, #596] ; (195f0 ) - 1939c: f010 fd6a bl 29e74 - 193a0: 212e movs r1, #46 ; 0x2e - 193a2: 4896 ldr r0, [pc, #600] ; (195fc ) - 193a4: f013 f8d0 bl 2c548 - 193a8: 4891 ldr r0, [pc, #580] ; (195f0 ) - 193aa: f010 fd63 bl 29e74 - 193ae: 2101 movs r1, #1 - 193b0: 4893 ldr r0, [pc, #588] ; (19600 ) - 193b2: f013 f8c9 bl 2c548 - 193b6: 211c movs r1, #28 - 193b8: 4892 ldr r0, [pc, #584] ; (19604 ) - 193ba: f013 f8c5 bl 2c548 + 19432: b160 cbz r0, 1944e + 19434: 1e43 subs r3, r0, #1 + 19436: 4604 mov r4, r0 + 19438: 2100 movs r1, #0 + 1943a: 48a8 ldr r0, [pc, #672] ; (196dc ) + 1943c: 2b03 cmp r3, #3 + 1943e: f200 8163 bhi.w 19708 + 19442: e8df f013 tbh [pc, r3, lsl #1] + 19446: 00c7 .short 0x00c7 + 19448: 011b00f1 .word 0x011b00f1 + 1944c: 0005 .short 0x0005 + } + 1944e: bd10 pop {r4, pc} + 19450: f013 f8ee bl 2c630 + 19454: 489f ldr r0, [pc, #636] ; (196d4 ) + 19456: f010 fd83 bl 29f60 + 1945a: 212e movs r1, #46 ; 0x2e + 1945c: 48a0 ldr r0, [pc, #640] ; (196e0 ) + 1945e: f013 f8e7 bl 2c630 + 19462: 489c ldr r0, [pc, #624] ; (196d4 ) + 19464: f010 fd7c bl 29f60 + 19468: 212e movs r1, #46 ; 0x2e + 1946a: 489d ldr r0, [pc, #628] ; (196e0 ) + 1946c: f013 f8e0 bl 2c630 + 19470: 4898 ldr r0, [pc, #608] ; (196d4 ) + 19472: f010 fd75 bl 29f60 + 19476: 212e movs r1, #46 ; 0x2e + 19478: 4899 ldr r0, [pc, #612] ; (196e0 ) + 1947a: f013 f8d9 bl 2c630 + 1947e: 4895 ldr r0, [pc, #596] ; (196d4 ) + 19480: f010 fd6e bl 29f60 + 19484: 212e movs r1, #46 ; 0x2e + 19486: 4896 ldr r0, [pc, #600] ; (196e0 ) + 19488: f013 f8d2 bl 2c630 + 1948c: 4891 ldr r0, [pc, #580] ; (196d4 ) + 1948e: f010 fd67 bl 29f60 + 19492: 2101 movs r1, #1 + 19494: 4893 ldr r0, [pc, #588] ; (196e4 ) + 19496: f013 f8cb bl 2c630 + 1949a: 211c movs r1, #28 + 1949c: 4892 ldr r0, [pc, #584] ; (196e8 ) + 1949e: f013 f8c7 bl 2c630 size_t println(uint8_t b) { return print(b) + println(); } - 193be: 488c ldr r0, [pc, #560] ; (195f0 ) - 193c0: f010 fd58 bl 29e74 - 193c4: 2101 movs r1, #1 - 193c6: 488e ldr r0, [pc, #568] ; (19600 ) - 193c8: f013 f8be bl 2c548 - 193cc: 2125 movs r1, #37 ; 0x25 - 193ce: 488e ldr r0, [pc, #568] ; (19608 ) - 193d0: f013 f8ba bl 2c548 + 194a2: 488c ldr r0, [pc, #560] ; (196d4 ) + 194a4: f010 fd5c bl 29f60 + 194a8: 2101 movs r1, #1 + 194aa: 488e ldr r0, [pc, #568] ; (196e4 ) + 194ac: f013 f8c0 bl 2c630 + 194b0: 2125 movs r1, #37 ; 0x25 + 194b2: 488e ldr r0, [pc, #568] ; (196ec ) + 194b4: f013 f8bc bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 193d4: 4886 ldr r0, [pc, #536] ; (195f0 ) - 193d6: f010 fd4d bl 29e74 - 193da: 2101 movs r1, #1 - 193dc: 4888 ldr r0, [pc, #544] ; (19600 ) - 193de: f013 f8b3 bl 2c548 - 193e2: 2125 movs r1, #37 ; 0x25 - 193e4: 4889 ldr r0, [pc, #548] ; (1960c ) - 193e6: f013 f8af bl 2c548 - 193ea: 4881 ldr r0, [pc, #516] ; (195f0 ) - 193ec: f010 fd42 bl 29e74 - 193f0: 212e movs r1, #46 ; 0x2e - 193f2: 4882 ldr r0, [pc, #520] ; (195fc ) - 193f4: f013 f8a8 bl 2c548 - 193f8: 487d ldr r0, [pc, #500] ; (195f0 ) - 193fa: f010 fd3b bl 29e74 - 193fe: 212e movs r1, #46 ; 0x2e - 19400: 487e ldr r0, [pc, #504] ; (195fc ) - 19402: f013 f8a1 bl 2c548 - 19406: 487a ldr r0, [pc, #488] ; (195f0 ) - 19408: f010 fd34 bl 29e74 - 1940c: 212e movs r1, #46 ; 0x2e - 1940e: 487b ldr r0, [pc, #492] ; (195fc ) - 19410: f013 f89a bl 2c548 - 19414: 4876 ldr r0, [pc, #472] ; (195f0 ) - 19416: f010 fd2d bl 29e74 - 1941a: 212e movs r1, #46 ; 0x2e - 1941c: 4877 ldr r0, [pc, #476] ; (195fc ) - 1941e: f013 f893 bl 2c548 - 19422: 4873 ldr r0, [pc, #460] ; (195f0 ) - 19424: f010 fd26 bl 29e74 - 19428: 2100 movs r1, #0 - 1942a: 4873 ldr r0, [pc, #460] ; (195f8 ) - 1942c: f013 f88c bl 2c548 - 19430: 486f ldr r0, [pc, #444] ; (195f0 ) - 19432: f010 fd1f bl 29e74 - 19436: 2100 movs r1, #0 - 19438: 486f ldr r0, [pc, #444] ; (195f8 ) - 1943a: f013 f885 bl 2c548 - 1943e: 486c ldr r0, [pc, #432] ; (195f0 ) - 19440: f010 fd18 bl 29e74 - 19444: 212e movs r1, #46 ; 0x2e - 19446: 486d ldr r0, [pc, #436] ; (195fc ) - 19448: f013 f87e bl 2c548 - 1944c: 4868 ldr r0, [pc, #416] ; (195f0 ) - 1944e: f010 fd11 bl 29e74 - 19452: 212e movs r1, #46 ; 0x2e - 19454: 4869 ldr r0, [pc, #420] ; (195fc ) - 19456: f013 f877 bl 2c548 - 1945a: 4865 ldr r0, [pc, #404] ; (195f0 ) - 1945c: f010 fd0a bl 29e74 - 19460: 212e movs r1, #46 ; 0x2e - 19462: 4866 ldr r0, [pc, #408] ; (195fc ) - 19464: f013 f870 bl 2c548 - 19468: 4861 ldr r0, [pc, #388] ; (195f0 ) - 1946a: f010 fd03 bl 29e74 - 1946e: 212e movs r1, #46 ; 0x2e - 19470: 4862 ldr r0, [pc, #392] ; (195fc ) - 19472: f013 f869 bl 2c548 - 19476: 485e ldr r0, [pc, #376] ; (195f0 ) - 19478: f010 fcfc bl 29e74 - 1947c: 2101 movs r1, #1 - 1947e: 4860 ldr r0, [pc, #384] ; (19600 ) - 19480: f013 f862 bl 2c548 - 19484: 2118 movs r1, #24 - 19486: 4862 ldr r0, [pc, #392] ; (19610 ) - 19488: f013 f85e bl 2c548 - 1948c: 4858 ldr r0, [pc, #352] ; (195f0 ) - 1948e: f010 fcf1 bl 29e74 - 19492: 2101 movs r1, #1 - 19494: 485a ldr r0, [pc, #360] ; (19600 ) - 19496: f013 f857 bl 2c548 - 1949a: 213f movs r1, #63 ; 0x3f - 1949c: 485d ldr r0, [pc, #372] ; (19614 ) - 1949e: f013 f853 bl 2c548 - 194a2: 4853 ldr r0, [pc, #332] ; (195f0 ) - 194a4: f010 fce6 bl 29e74 - 194a8: 212e movs r1, #46 ; 0x2e - 194aa: 4854 ldr r0, [pc, #336] ; (195fc ) - 194ac: f013 f84c bl 2c548 - 194b0: 484f ldr r0, [pc, #316] ; (195f0 ) - 194b2: f010 fcdf bl 29e74 - 194b6: 212e movs r1, #46 ; 0x2e - 194b8: 4850 ldr r0, [pc, #320] ; (195fc ) - 194ba: f013 f845 bl 2c548 - 194be: 484c ldr r0, [pc, #304] ; (195f0 ) - 194c0: f010 fcd8 bl 29e74 - 194c4: 212e movs r1, #46 ; 0x2e - 194c6: 484d ldr r0, [pc, #308] ; (195fc ) - 194c8: f013 f83e bl 2c548 - 194cc: 4848 ldr r0, [pc, #288] ; (195f0 ) - 194ce: f010 fcd1 bl 29e74 - 194d2: 212e movs r1, #46 ; 0x2e - 194d4: 4849 ldr r0, [pc, #292] ; (195fc ) - 194d6: f013 f837 bl 2c548 - 194da: 4845 ldr r0, [pc, #276] ; (195f0 ) - 194dc: f010 fcca bl 29e74 - 194e0: 2100 movs r1, #0 - 194e2: 4845 ldr r0, [pc, #276] ; (195f8 ) - 194e4: f013 f830 bl 2c548 - 194e8: 4841 ldr r0, [pc, #260] ; (195f0 ) - 194ea: f010 fcc3 bl 29e74 - 194ee: e7fe b.n 194ee - 194f0: f013 f82a bl 2c548 - 194f4: 483e ldr r0, [pc, #248] ; (195f0 ) - 194f6: f010 fcbd bl 29e74 - 194fa: 212e movs r1, #46 ; 0x2e - 194fc: 483f ldr r0, [pc, #252] ; (195fc ) - 194fe: f013 f823 bl 2c548 - 19502: 483b ldr r0, [pc, #236] ; (195f0 ) - 19504: f010 fcb6 bl 29e74 - 19508: 212e movs r1, #46 ; 0x2e - 1950a: 483c ldr r0, [pc, #240] ; (195fc ) - 1950c: f013 f81c bl 2c548 - 19510: 4837 ldr r0, [pc, #220] ; (195f0 ) - 19512: f010 fcaf bl 29e74 - 19516: 212e movs r1, #46 ; 0x2e - 19518: 4838 ldr r0, [pc, #224] ; (195fc ) - 1951a: f013 f815 bl 2c548 - 1951e: 4834 ldr r0, [pc, #208] ; (195f0 ) - 19520: f010 fca8 bl 29e74 - 19524: 212e movs r1, #46 ; 0x2e - 19526: 4835 ldr r0, [pc, #212] ; (195fc ) - 19528: f013 f80e bl 2c548 - 1952c: 4830 ldr r0, [pc, #192] ; (195f0 ) - 1952e: f010 fca1 bl 29e74 - 19532: 2101 movs r1, #1 - 19534: 4832 ldr r0, [pc, #200] ; (19600 ) - 19536: f013 f807 bl 2c548 - 1953a: 2137 movs r1, #55 ; 0x37 - 1953c: 4836 ldr r0, [pc, #216] ; (19618 ) - 1953e: f013 f803 bl 2c548 - 19542: e73c b.n 193be - 19544: f013 f800 bl 2c548 - 19548: 4829 ldr r0, [pc, #164] ; (195f0 ) - 1954a: f010 fc93 bl 29e74 - 1954e: 212e movs r1, #46 ; 0x2e - 19550: 482a ldr r0, [pc, #168] ; (195fc ) - 19552: f012 fff9 bl 2c548 - 19556: 4826 ldr r0, [pc, #152] ; (195f0 ) - 19558: f010 fc8c bl 29e74 - 1955c: 212e movs r1, #46 ; 0x2e - 1955e: 4827 ldr r0, [pc, #156] ; (195fc ) - 19560: f012 fff2 bl 2c548 - 19564: 4822 ldr r0, [pc, #136] ; (195f0 ) - 19566: f010 fc85 bl 29e74 - 1956a: 212e movs r1, #46 ; 0x2e - 1956c: 4823 ldr r0, [pc, #140] ; (195fc ) - 1956e: f012 ffeb bl 2c548 - 19572: 481f ldr r0, [pc, #124] ; (195f0 ) - 19574: f010 fc7e bl 29e74 - 19578: 212e movs r1, #46 ; 0x2e - 1957a: 4820 ldr r0, [pc, #128] ; (195fc ) - 1957c: f012 ffe4 bl 2c548 - 19580: 481b ldr r0, [pc, #108] ; (195f0 ) - 19582: f010 fc77 bl 29e74 - 19586: 2101 movs r1, #1 - 19588: 481d ldr r0, [pc, #116] ; (19600 ) - 1958a: f012 ffdd bl 2c548 - 1958e: 2134 movs r1, #52 ; 0x34 - 19590: 4822 ldr r0, [pc, #136] ; (1961c ) - 19592: f012 ffd9 bl 2c548 - 19596: e712 b.n 193be - 19598: f012 ffd6 bl 2c548 - 1959c: 4814 ldr r0, [pc, #80] ; (195f0 ) - 1959e: f010 fc69 bl 29e74 - 195a2: 212e movs r1, #46 ; 0x2e - 195a4: 4815 ldr r0, [pc, #84] ; (195fc ) - 195a6: f012 ffcf bl 2c548 - 195aa: 4811 ldr r0, [pc, #68] ; (195f0 ) - 195ac: f010 fc62 bl 29e74 - 195b0: 212e movs r1, #46 ; 0x2e - 195b2: 4812 ldr r0, [pc, #72] ; (195fc ) - 195b4: f012 ffc8 bl 2c548 - 195b8: 480d ldr r0, [pc, #52] ; (195f0 ) - 195ba: f010 fc5b bl 29e74 - 195be: 212e movs r1, #46 ; 0x2e - 195c0: 480e ldr r0, [pc, #56] ; (195fc ) - 195c2: f012 ffc1 bl 2c548 - 195c6: 480a ldr r0, [pc, #40] ; (195f0 ) - 195c8: f010 fc54 bl 29e74 - 195cc: 212e movs r1, #46 ; 0x2e - 195ce: 480b ldr r0, [pc, #44] ; (195fc ) - 195d0: f012 ffba bl 2c548 - 195d4: 4806 ldr r0, [pc, #24] ; (195f0 ) - 195d6: f010 fc4d bl 29e74 - 195da: 2101 movs r1, #1 - 195dc: 4808 ldr r0, [pc, #32] ; (19600 ) - 195de: f012 ffb3 bl 2c548 - 195e2: 2132 movs r1, #50 ; 0x32 - 195e4: 480e ldr r0, [pc, #56] ; (19620 ) - 195e6: f012 ffaf bl 2c548 - 195ea: e6e8 b.n 193be - 195ec: 20001638 .word 0x20001638 - 195f0: 20004ba8 .word 0x20004ba8 - 195f4: 00061a80 .word 0x00061a80 - 195f8: 20003c58 .word 0x20003c58 - 195fc: 20001950 .word 0x20001950 - 19600: 200023ec .word 0x200023ec - 19604: 20001748 .word 0x20001748 - 19608: 2000168c .word 0x2000168c - 1960c: 200016b4 .word 0x200016b4 - 19610: 200019d0 .word 0x200019d0 - 19614: 200019ec .word 0x200019ec - 19618: 20001654 .word 0x20001654 - 1961c: 200016dc .word 0x200016dc - 19620: 20001714 .word 0x20001714 - 19624: f012 ff90 bl 2c548 - 19628: 481a ldr r0, [pc, #104] ; (19694 ) - 1962a: f010 fc23 bl 29e74 - 1962e: 212e movs r1, #46 ; 0x2e - 19630: 4819 ldr r0, [pc, #100] ; (19698 ) - 19632: f012 ff89 bl 2c548 - 19636: 4817 ldr r0, [pc, #92] ; (19694 ) - 19638: f010 fc1c bl 29e74 - 1963c: 212e movs r1, #46 ; 0x2e - 1963e: 4816 ldr r0, [pc, #88] ; (19698 ) - 19640: f012 ff82 bl 2c548 - 19644: 4813 ldr r0, [pc, #76] ; (19694 ) - 19646: f010 fc15 bl 29e74 - 1964a: 212e movs r1, #46 ; 0x2e - 1964c: 4812 ldr r0, [pc, #72] ; (19698 ) - 1964e: f012 ff7b bl 2c548 - 19652: 4810 ldr r0, [pc, #64] ; (19694 ) - 19654: f010 fc0e bl 29e74 - 19658: 212e movs r1, #46 ; 0x2e - 1965a: 480f ldr r0, [pc, #60] ; (19698 ) - 1965c: f012 ff74 bl 2c548 - 19660: 480c ldr r0, [pc, #48] ; (19694 ) - 19662: f010 fc07 bl 29e74 - 19666: 2101 movs r1, #1 - 19668: 480c ldr r0, [pc, #48] ; (1969c ) - 1966a: f012 ff6d bl 2c548 - 1966e: 2111 movs r1, #17 - 19670: 480b ldr r0, [pc, #44] ; (196a0 ) - 19672: f012 ff69 bl 2c548 - 19676: 4807 ldr r0, [pc, #28] ; (19694 ) - 19678: f010 fbfc bl 29e74 - 1967c: 2101 movs r1, #1 - 1967e: 4807 ldr r0, [pc, #28] ; (1969c ) - 19680: f012 ff62 bl 2c548 + 194b8: 4886 ldr r0, [pc, #536] ; (196d4 ) + 194ba: f010 fd51 bl 29f60 + 194be: 2101 movs r1, #1 + 194c0: 4888 ldr r0, [pc, #544] ; (196e4 ) + 194c2: f013 f8b5 bl 2c630 + 194c6: 2125 movs r1, #37 ; 0x25 + 194c8: 4889 ldr r0, [pc, #548] ; (196f0 ) + 194ca: f013 f8b1 bl 2c630 + 194ce: 4881 ldr r0, [pc, #516] ; (196d4 ) + 194d0: f010 fd46 bl 29f60 + 194d4: 212e movs r1, #46 ; 0x2e + 194d6: 4882 ldr r0, [pc, #520] ; (196e0 ) + 194d8: f013 f8aa bl 2c630 + 194dc: 487d ldr r0, [pc, #500] ; (196d4 ) + 194de: f010 fd3f bl 29f60 + 194e2: 212e movs r1, #46 ; 0x2e + 194e4: 487e ldr r0, [pc, #504] ; (196e0 ) + 194e6: f013 f8a3 bl 2c630 + 194ea: 487a ldr r0, [pc, #488] ; (196d4 ) + 194ec: f010 fd38 bl 29f60 + 194f0: 212e movs r1, #46 ; 0x2e + 194f2: 487b ldr r0, [pc, #492] ; (196e0 ) + 194f4: f013 f89c bl 2c630 + 194f8: 4876 ldr r0, [pc, #472] ; (196d4 ) + 194fa: f010 fd31 bl 29f60 + 194fe: 212e movs r1, #46 ; 0x2e + 19500: 4877 ldr r0, [pc, #476] ; (196e0 ) + 19502: f013 f895 bl 2c630 + 19506: 4873 ldr r0, [pc, #460] ; (196d4 ) + 19508: f010 fd2a bl 29f60 + 1950c: 2100 movs r1, #0 + 1950e: 4873 ldr r0, [pc, #460] ; (196dc ) + 19510: f013 f88e bl 2c630 + 19514: 486f ldr r0, [pc, #444] ; (196d4 ) + 19516: f010 fd23 bl 29f60 + 1951a: 2100 movs r1, #0 + 1951c: 486f ldr r0, [pc, #444] ; (196dc ) + 1951e: f013 f887 bl 2c630 + 19522: 486c ldr r0, [pc, #432] ; (196d4 ) + 19524: f010 fd1c bl 29f60 + 19528: 212e movs r1, #46 ; 0x2e + 1952a: 486d ldr r0, [pc, #436] ; (196e0 ) + 1952c: f013 f880 bl 2c630 + 19530: 4868 ldr r0, [pc, #416] ; (196d4 ) + 19532: f010 fd15 bl 29f60 + 19536: 212e movs r1, #46 ; 0x2e + 19538: 4869 ldr r0, [pc, #420] ; (196e0 ) + 1953a: f013 f879 bl 2c630 + 1953e: 4865 ldr r0, [pc, #404] ; (196d4 ) + 19540: f010 fd0e bl 29f60 + 19544: 212e movs r1, #46 ; 0x2e + 19546: 4866 ldr r0, [pc, #408] ; (196e0 ) + 19548: f013 f872 bl 2c630 + 1954c: 4861 ldr r0, [pc, #388] ; (196d4 ) + 1954e: f010 fd07 bl 29f60 + 19552: 212e movs r1, #46 ; 0x2e + 19554: 4862 ldr r0, [pc, #392] ; (196e0 ) + 19556: f013 f86b bl 2c630 + 1955a: 485e ldr r0, [pc, #376] ; (196d4 ) + 1955c: f010 fd00 bl 29f60 + 19560: 2101 movs r1, #1 + 19562: 4860 ldr r0, [pc, #384] ; (196e4 ) + 19564: f013 f864 bl 2c630 + 19568: 2118 movs r1, #24 + 1956a: 4862 ldr r0, [pc, #392] ; (196f4 ) + 1956c: f013 f860 bl 2c630 + 19570: 4858 ldr r0, [pc, #352] ; (196d4 ) + 19572: f010 fcf5 bl 29f60 + 19576: 2101 movs r1, #1 + 19578: 485a ldr r0, [pc, #360] ; (196e4 ) + 1957a: f013 f859 bl 2c630 + 1957e: 213f movs r1, #63 ; 0x3f + 19580: 485d ldr r0, [pc, #372] ; (196f8 ) + 19582: f013 f855 bl 2c630 + 19586: 4853 ldr r0, [pc, #332] ; (196d4 ) + 19588: f010 fcea bl 29f60 + 1958c: 212e movs r1, #46 ; 0x2e + 1958e: 4854 ldr r0, [pc, #336] ; (196e0 ) + 19590: f013 f84e bl 2c630 + 19594: 484f ldr r0, [pc, #316] ; (196d4 ) + 19596: f010 fce3 bl 29f60 + 1959a: 212e movs r1, #46 ; 0x2e + 1959c: 4850 ldr r0, [pc, #320] ; (196e0 ) + 1959e: f013 f847 bl 2c630 + 195a2: 484c ldr r0, [pc, #304] ; (196d4 ) + 195a4: f010 fcdc bl 29f60 + 195a8: 212e movs r1, #46 ; 0x2e + 195aa: 484d ldr r0, [pc, #308] ; (196e0 ) + 195ac: f013 f840 bl 2c630 + 195b0: 4848 ldr r0, [pc, #288] ; (196d4 ) + 195b2: f010 fcd5 bl 29f60 + 195b6: 212e movs r1, #46 ; 0x2e + 195b8: 4849 ldr r0, [pc, #292] ; (196e0 ) + 195ba: f013 f839 bl 2c630 + 195be: 4845 ldr r0, [pc, #276] ; (196d4 ) + 195c0: f010 fcce bl 29f60 + 195c4: 2100 movs r1, #0 + 195c6: 4845 ldr r0, [pc, #276] ; (196dc ) + 195c8: f013 f832 bl 2c630 + 195cc: 4841 ldr r0, [pc, #260] ; (196d4 ) + 195ce: f010 fcc7 bl 29f60 + 195d2: e7fe b.n 195d2 + 195d4: f013 f82c bl 2c630 + 195d8: 483e ldr r0, [pc, #248] ; (196d4 ) + 195da: f010 fcc1 bl 29f60 + 195de: 212e movs r1, #46 ; 0x2e + 195e0: 483f ldr r0, [pc, #252] ; (196e0 ) + 195e2: f013 f825 bl 2c630 + 195e6: 483b ldr r0, [pc, #236] ; (196d4 ) + 195e8: f010 fcba bl 29f60 + 195ec: 212e movs r1, #46 ; 0x2e + 195ee: 483c ldr r0, [pc, #240] ; (196e0 ) + 195f0: f013 f81e bl 2c630 + 195f4: 4837 ldr r0, [pc, #220] ; (196d4 ) + 195f6: f010 fcb3 bl 29f60 + 195fa: 212e movs r1, #46 ; 0x2e + 195fc: 4838 ldr r0, [pc, #224] ; (196e0 ) + 195fe: f013 f817 bl 2c630 + 19602: 4834 ldr r0, [pc, #208] ; (196d4 ) + 19604: f010 fcac bl 29f60 + 19608: 212e movs r1, #46 ; 0x2e + 1960a: 4835 ldr r0, [pc, #212] ; (196e0 ) + 1960c: f013 f810 bl 2c630 + 19610: 4830 ldr r0, [pc, #192] ; (196d4 ) + 19612: f010 fca5 bl 29f60 + 19616: 2101 movs r1, #1 + 19618: 4832 ldr r0, [pc, #200] ; (196e4 ) + 1961a: f013 f809 bl 2c630 + 1961e: 2137 movs r1, #55 ; 0x37 + 19620: 4836 ldr r0, [pc, #216] ; (196fc ) + 19622: f013 f805 bl 2c630 + 19626: e73c b.n 194a2 + 19628: f013 f802 bl 2c630 + 1962c: 4829 ldr r0, [pc, #164] ; (196d4 ) + 1962e: f010 fc97 bl 29f60 + 19632: 212e movs r1, #46 ; 0x2e + 19634: 482a ldr r0, [pc, #168] ; (196e0 ) + 19636: f012 fffb bl 2c630 + 1963a: 4826 ldr r0, [pc, #152] ; (196d4 ) + 1963c: f010 fc90 bl 29f60 + 19640: 212e movs r1, #46 ; 0x2e + 19642: 4827 ldr r0, [pc, #156] ; (196e0 ) + 19644: f012 fff4 bl 2c630 + 19648: 4822 ldr r0, [pc, #136] ; (196d4 ) + 1964a: f010 fc89 bl 29f60 + 1964e: 212e movs r1, #46 ; 0x2e + 19650: 4823 ldr r0, [pc, #140] ; (196e0 ) + 19652: f012 ffed bl 2c630 + 19656: 481f ldr r0, [pc, #124] ; (196d4 ) + 19658: f010 fc82 bl 29f60 + 1965c: 212e movs r1, #46 ; 0x2e + 1965e: 4820 ldr r0, [pc, #128] ; (196e0 ) + 19660: f012 ffe6 bl 2c630 + 19664: 481b ldr r0, [pc, #108] ; (196d4 ) + 19666: f010 fc7b bl 29f60 + 1966a: 2101 movs r1, #1 + 1966c: 481d ldr r0, [pc, #116] ; (196e4 ) + 1966e: f012 ffdf bl 2c630 + 19672: 2134 movs r1, #52 ; 0x34 + 19674: 4822 ldr r0, [pc, #136] ; (19700 ) + 19676: f012 ffdb bl 2c630 + 1967a: e712 b.n 194a2 + 1967c: f012 ffd8 bl 2c630 + 19680: 4814 ldr r0, [pc, #80] ; (196d4 ) + 19682: f010 fc6d bl 29f60 + 19686: 212e movs r1, #46 ; 0x2e + 19688: 4815 ldr r0, [pc, #84] ; (196e0 ) + 1968a: f012 ffd1 bl 2c630 + 1968e: 4811 ldr r0, [pc, #68] ; (196d4 ) + 19690: f010 fc66 bl 29f60 + 19694: 212e movs r1, #46 ; 0x2e + 19696: 4812 ldr r0, [pc, #72] ; (196e0 ) + 19698: f012 ffca bl 2c630 + 1969c: 480d ldr r0, [pc, #52] ; (196d4 ) + 1969e: f010 fc5f bl 29f60 + 196a2: 212e movs r1, #46 ; 0x2e + 196a4: 480e ldr r0, [pc, #56] ; (196e0 ) + 196a6: f012 ffc3 bl 2c630 + 196aa: 480a ldr r0, [pc, #40] ; (196d4 ) + 196ac: f010 fc58 bl 29f60 + 196b0: 212e movs r1, #46 ; 0x2e + 196b2: 480b ldr r0, [pc, #44] ; (196e0 ) + 196b4: f012 ffbc bl 2c630 + 196b8: 4806 ldr r0, [pc, #24] ; (196d4 ) + 196ba: f010 fc51 bl 29f60 + 196be: 2101 movs r1, #1 + 196c0: 4808 ldr r0, [pc, #32] ; (196e4 ) + 196c2: f012 ffb5 bl 2c630 + 196c6: 2132 movs r1, #50 ; 0x32 + 196c8: 480e ldr r0, [pc, #56] ; (19704 ) + 196ca: f012 ffb1 bl 2c630 + 196ce: e6e8 b.n 194a2 + 196d0: 20001638 .word 0x20001638 + 196d4: 20004c68 .word 0x20004c68 + 196d8: 00061a80 .word 0x00061a80 + 196dc: 20003d18 .word 0x20003d18 + 196e0: 20001950 .word 0x20001950 + 196e4: 200023ec .word 0x200023ec + 196e8: 20001748 .word 0x20001748 + 196ec: 2000168c .word 0x2000168c + 196f0: 200016b4 .word 0x200016b4 + 196f4: 200019d0 .word 0x200019d0 + 196f8: 200019ec .word 0x200019ec + 196fc: 20001654 .word 0x20001654 + 19700: 200016dc .word 0x200016dc + 19704: 20001714 .word 0x20001714 + 19708: f012 ff92 bl 2c630 + 1970c: 481a ldr r0, [pc, #104] ; (19778 ) + 1970e: f010 fc27 bl 29f60 + 19712: 212e movs r1, #46 ; 0x2e + 19714: 4819 ldr r0, [pc, #100] ; (1977c ) + 19716: f012 ff8b bl 2c630 + 1971a: 4817 ldr r0, [pc, #92] ; (19778 ) + 1971c: f010 fc20 bl 29f60 + 19720: 212e movs r1, #46 ; 0x2e + 19722: 4816 ldr r0, [pc, #88] ; (1977c ) + 19724: f012 ff84 bl 2c630 + 19728: 4813 ldr r0, [pc, #76] ; (19778 ) + 1972a: f010 fc19 bl 29f60 + 1972e: 212e movs r1, #46 ; 0x2e + 19730: 4812 ldr r0, [pc, #72] ; (1977c ) + 19732: f012 ff7d bl 2c630 + 19736: 4810 ldr r0, [pc, #64] ; (19778 ) + 19738: f010 fc12 bl 29f60 + 1973c: 212e movs r1, #46 ; 0x2e + 1973e: 480f ldr r0, [pc, #60] ; (1977c ) + 19740: f012 ff76 bl 2c630 + 19744: 480c ldr r0, [pc, #48] ; (19778 ) + 19746: f010 fc0b bl 29f60 + 1974a: 2101 movs r1, #1 + 1974c: 480c ldr r0, [pc, #48] ; (19780 ) + 1974e: f012 ff6f bl 2c630 + 19752: 2111 movs r1, #17 + 19754: 480b ldr r0, [pc, #44] ; (19784 ) + 19756: f012 ff6b bl 2c630 + 1975a: 4807 ldr r0, [pc, #28] ; (19778 ) + 1975c: f010 fc00 bl 29f60 + 19760: 2101 movs r1, #1 + 19762: 4807 ldr r0, [pc, #28] ; (19780 ) + 19764: f012 ff64 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 19684: 2300 movs r3, #0 - 19686: 220a movs r2, #10 - 19688: 4621 mov r1, r4 - 1968a: 4802 ldr r0, [pc, #8] ; (19694 ) - 1968c: f010 fc0e bl 29eac - 19690: e695 b.n 193be - 19692: bf00 nop - 19694: 20004ba8 .word 0x20004ba8 - 19698: 20001950 .word 0x20001950 - 1969c: 200023ec .word 0x200023ec - 196a0: 20001768 .word 0x20001768 - 196a4: 00000000 .word 0x00000000 + 19768: 2300 movs r3, #0 + 1976a: 220a movs r2, #10 + 1976c: 4621 mov r1, r4 + 1976e: 4802 ldr r0, [pc, #8] ; (19778 ) + 19770: f010 fc12 bl 29f98 + 19774: e695 b.n 194a2 + 19776: bf00 nop + 19778: 20004c68 .word 0x20004c68 + 1977c: 20001950 .word 0x20001950 + 19780: 200023ec .word 0x200023ec + 19784: 20001768 .word 0x20001768 -000196a8 : +00019788 : } // keep these public for access by the Api // save "store.global.settings" to EEPROM void saveSettings(){ - 196a8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 19788: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} } uint32_t BMCEditor::getStoreOffset(){ return (storeAddress * sizeof(store)); } uint32_t BMCEditor::getGlobalOffset(){ return (storeAddress * sizeof(store)) + getCrcAndVersionSize(); - 196ac: f241 73fc movw r3, #6140 ; 0x17fc - 196b0: f890 702f ldrb.w r7, [r0, #47] ; 0x2f + 1978c: f241 73fc movw r3, #6140 ; 0x17fc + 19790: f890 702f ldrb.w r7, [r0, #47] ; 0x2f #if defined(BMC_SD_CARD_ENABLED) storage.set(storeAddress, store); #else uint16_t address = getGlobalOffset(); storage.set(address, store.global.settings); - 196b4: 6806 ldr r6, [r0, #0] + 19794: 6806 ldr r6, [r0, #0] void saveSettings(){ - 196b6: b085 sub sp, #20 - 196b8: fb03 f707 mul.w r7, r3, r7 - 196bc: 68c3 ldr r3, [r0, #12] + 19796: b085 sub sp, #20 + 19798: fb03 f707 mul.w r7, r3, r7 + 1979c: 68c3 ldr r3, [r0, #12] storage.set(address, store.global.settings); - 196be: f106 0a04 add.w sl, r6, #4 + 1979e: f106 0a04 add.w sl, r6, #4 void saveSettings(){ - 196c2: 4605 mov r5, r0 - 196c4: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 196c8: 3704 adds r7, #4 + 197a2: 4605 mov r5, r0 + 197a4: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 197a8: 3704 adds r7, #4 storage.set(address, store.global.settings); - 196ca: 4654 mov r4, sl + 197aa: 4654 mov r4, sl if(!globals.getStorageDebug()){ - 196cc: 07da lsls r2, r3, #31 - 196ce: d521 bpl.n 19714 - 196d0: 2100 movs r1, #0 - 196d2: 4863 ldr r0, [pc, #396] ; (19860 ) - 196d4: f012 ff38 bl 2c548 + 197ac: 07da lsls r2, r3, #31 + 197ae: d521 bpl.n 197f4 + 197b0: 2100 movs r1, #0 + 197b2: 4863 ldr r0, [pc, #396] ; (19940 ) + 197b4: f012 ff3c bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 196d8: 4862 ldr r0, [pc, #392] ; (19864 ) - 196da: f010 fbcb bl 29e74 - 196de: 2103 movs r1, #3 - 196e0: 4861 ldr r0, [pc, #388] ; (19868 ) - 196e2: f012 ff31 bl 2c548 - 196e6: 2101 movs r1, #1 - 196e8: 4860 ldr r0, [pc, #384] ; (1986c ) - 196ea: f012 ff2d bl 2c548 - 196ee: 2108 movs r1, #8 - 196f0: 485f ldr r0, [pc, #380] ; (19870 ) - 196f2: f012 ff29 bl 2c548 - 196f6: 2101 movs r1, #1 - 196f8: 485c ldr r0, [pc, #368] ; (1986c ) - 196fa: f012 ff25 bl 2c548 - 196fe: 2108 movs r1, #8 - 19700: 485c ldr r0, [pc, #368] ; (19874 ) - 19702: f012 ff21 bl 2c548 - 19706: 2101 movs r1, #1 - 19708: 4858 ldr r0, [pc, #352] ; (1986c ) - 1970a: f012 ff1d bl 2c548 + 197b8: 4862 ldr r0, [pc, #392] ; (19944 ) + 197ba: f010 fbd1 bl 29f60 + 197be: 2103 movs r1, #3 + 197c0: 4861 ldr r0, [pc, #388] ; (19948 ) + 197c2: f012 ff35 bl 2c630 + 197c6: 2101 movs r1, #1 + 197c8: 4860 ldr r0, [pc, #384] ; (1994c ) + 197ca: f012 ff31 bl 2c630 + 197ce: 2108 movs r1, #8 + 197d0: 485f ldr r0, [pc, #380] ; (19950 ) + 197d2: f012 ff2d bl 2c630 + 197d6: 2101 movs r1, #1 + 197d8: 485c ldr r0, [pc, #368] ; (1994c ) + 197da: f012 ff29 bl 2c630 + 197de: 2108 movs r1, #8 + 197e0: 485c ldr r0, [pc, #368] ; (19954 ) + 197e2: f012 ff25 bl 2c630 + 197e6: 2101 movs r1, #1 + 197e8: 4858 ldr r0, [pc, #352] ; (1994c ) + 197ea: f012 ff21 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1970e: f010 ff31 bl 2a574 - 19712: 62a8 str r0, [r5, #40] ; 0x28 - 19714: f06f 0803 mvn.w r8, #3 - 19718: b2bf uxth r7, r7 - 1971a: 210e movs r1, #14 - 1971c: 4856 ldr r0, [pc, #344] ; (19878 ) - 1971e: eba8 0806 sub.w r8, r8, r6 - 19722: 4e56 ldr r6, [pc, #344] ; (1987c ) + 197ee: f010 ff35 bl 2a65c + 197f2: 62a8 str r0, [r5, #40] ; 0x28 + 197f4: f06f 0803 mvn.w r8, #3 + 197f8: b2bf uxth r7, r7 + 197fa: 210e movs r1, #14 + 197fc: 4856 ldr r0, [pc, #344] ; (19958 ) + 197fe: eba8 0806 sub.w r8, r8, r6 + 19802: 4e56 ldr r6, [pc, #344] ; (1995c ) unsigned long n = sizeof(value)+start; - 19724: f107 0934 add.w r9, r7, #52 ; 0x34 - 19728: f012 ff0e bl 2c548 - 1972c: 44b8 add r8, r7 - 1972e: 6833 ldr r3, [r6, #0] - 19730: 3701 adds r7, #1 + 19804: f107 0934 add.w r9, r7, #52 ; 0x34 + 19808: f012 ff12 bl 2c630 + 1980c: 44b8 add r8, r7 + 1980e: 6833 ldr r3, [r6, #0] + 19810: 3701 adds r7, #1 unsigned long updatedBytes = 0; - 19732: f04f 0b00 mov.w fp, #0 + 19812: f04f 0b00 mov.w fp, #0 elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 19736: 622b str r3, [r5, #32] - 19738: 45b9 cmp r9, r7 - 1973a: bf34 ite cc - 1973c: f04f 0901 movcc.w r9, #1 - 19740: f04f 0934 movcs.w r9, #52 ; 0x34 + 19816: 622b str r3, [r5, #32] + 19818: 45b9 cmp r9, r7 + 1981a: bf34 ite cc + 1981c: f04f 0901 movcc.w r9, #1 + 19820: f04f 0934 movcs.w r9, #52 ; 0x34 STORAGE.put(address,file); - 19744: f105 0710 add.w r7, r5, #16 + 19824: f105 0710 add.w r7, r5, #16 for(i=start;i - 1974a: 6833 ldr r3, [r6, #0] + 19828: e008 b.n 1983c + 1982a: 6833 ldr r3, [r6, #0] operator unsigned long () const { return millis() - ms; } - 1974c: 6a2a ldr r2, [r5, #32] - 1974e: 1a9b subs r3, r3, r2 + 1982c: 6a2a ldr r2, [r5, #32] + 1982e: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 19750: 2bf9 cmp r3, #249 ; 0xf9 - 19752: d81f bhi.n 19794 + 19830: 2bf9 cmp r3, #249 ; 0xf9 + 19832: d81f bhi.n 19874 for(i=start;i - 1975c: eb04 0108 add.w r1, r4, r8 + 19834: eb0a 0309 add.w r3, sl, r9 + 19838: 429c cmp r4, r3 + 1983a: d025 beq.n 19888 + 1983c: eb04 0108 add.w r1, r4, r8 updatedBytes += update(i,*p++); - 19760: f814 3b01 ldrb.w r3, [r4], #1 + 19840: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 19764: 4638 mov r0, r7 - 19766: 9101 str r1, [sp, #4] - 19768: f88d 300f strb.w r3, [sp, #15] - 1976c: f00b fcee bl 2514c - 19770: f89d 300f ldrb.w r3, [sp, #15] - 19774: 9901 ldr r1, [sp, #4] - 19776: 4298 cmp r0, r3 - 19778: d0e7 beq.n 1974a + 19844: 4638 mov r0, r7 + 19846: 9101 str r1, [sp, #4] + 19848: f88d 300f strb.w r3, [sp, #15] + 1984c: f00b fcf4 bl 25238 + 19850: f89d 300f ldrb.w r3, [sp, #15] + 19854: 9901 ldr r1, [sp, #4] + 19856: 4298 cmp r0, r3 + 19858: d0e7 beq.n 1982a write(addr, &value, 1); - 1977a: 2301 movs r3, #1 - 1977c: f10d 020f add.w r2, sp, #15 - 19780: 4638 mov r0, r7 + 1985a: 2301 movs r3, #1 + 1985c: f10d 020f add.w r2, sp, #15 + 19860: 4638 mov r0, r7 updatedBytes += update(i,*p++); - 19782: f10b 0b01 add.w fp, fp, #1 + 19862: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 19786: f00b fbd7 bl 24f38 - 1978a: 6833 ldr r3, [r6, #0] - 1978c: 6a2a ldr r2, [r5, #32] - 1978e: 1a9b subs r3, r3, r2 + 19866: f00b fbdd bl 25024 + 1986a: 6833 ldr r3, [r6, #0] + 1986c: 6a2a ldr r2, [r5, #32] + 1986e: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 19790: 2bf9 cmp r3, #249 ; 0xf9 - 19792: d9df bls.n 19754 - 19794: 2101 movs r1, #1 - 19796: 483a ldr r0, [pc, #232] ; (19880 ) - 19798: f012 fed6 bl 2c548 - 1979c: 6833 ldr r3, [r6, #0] + 19870: 2bf9 cmp r3, #249 ; 0xf9 + 19872: d9df bls.n 19834 + 19874: 2101 movs r1, #1 + 19876: 483a ldr r0, [pc, #232] ; (19960 ) + 19878: f012 feda bl 2c630 + 1987c: 6833 ldr r3, [r6, #0] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 1979e: 622b str r3, [r5, #32] + 1987e: 622b str r3, [r5, #32] for(i=start;i - 197a8: 2101 movs r1, #1 - 197aa: 4835 ldr r0, [pc, #212] ; (19880 ) - 197ac: f012 fecc bl 2c548 - 197b0: 482c ldr r0, [pc, #176] ; (19864 ) - 197b2: f010 fb5f bl 29e74 - 197b6: 2109 movs r1, #9 - 197b8: 4832 ldr r0, [pc, #200] ; (19884 ) - 197ba: f012 fec5 bl 2c548 - 197be: 2101 movs r1, #1 - 197c0: 482a ldr r0, [pc, #168] ; (1986c ) - 197c2: f012 fec1 bl 2c548 + 19880: eb0a 0309 add.w r3, sl, r9 + 19884: 429c cmp r4, r3 + 19886: d1d9 bne.n 1983c + 19888: 2101 movs r1, #1 + 1988a: 4835 ldr r0, [pc, #212] ; (19960 ) + 1988c: f012 fed0 bl 2c630 + 19890: 482c ldr r0, [pc, #176] ; (19944 ) + 19892: f010 fb65 bl 29f60 + 19896: 2109 movs r1, #9 + 19898: 4832 ldr r0, [pc, #200] ; (19964 ) + 1989a: f012 fec9 bl 2c630 + 1989e: 2101 movs r1, #1 + 198a0: 482a ldr r0, [pc, #168] ; (1994c ) + 198a2: f012 fec5 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 197c6: 2300 movs r3, #0 - 197c8: 220a movs r2, #10 - 197ca: 4659 mov r1, fp - 197cc: 4825 ldr r0, [pc, #148] ; (19864 ) - 197ce: f010 fb6d bl 29eac - 197d2: 2101 movs r1, #1 - 197d4: 4825 ldr r0, [pc, #148] ; (1986c ) - 197d6: f012 feb7 bl 2c548 - 197da: 2105 movs r1, #5 - 197dc: 482a ldr r0, [pc, #168] ; (19888 ) - 197de: f012 feb3 bl 2c548 + 198a6: 2300 movs r3, #0 + 198a8: 220a movs r2, #10 + 198aa: 4659 mov r1, fp + 198ac: 4825 ldr r0, [pc, #148] ; (19944 ) + 198ae: f010 fb73 bl 29f98 + 198b2: 2101 movs r1, #1 + 198b4: 4825 ldr r0, [pc, #148] ; (1994c ) + 198b6: f012 febb bl 2c630 + 198ba: 2105 movs r1, #5 + 198bc: 482a ldr r0, [pc, #168] ; (19968 ) + 198be: f012 feb7 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 197e2: 4820 ldr r0, [pc, #128] ; (19864 ) - 197e4: f010 fb46 bl 29e74 - 197e8: 68eb ldr r3, [r5, #12] - 197ea: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 198c2: 4820 ldr r0, [pc, #128] ; (19944 ) + 198c4: f010 fb4c bl 29f60 + 198c8: 68eb ldr r3, [r5, #12] + 198ca: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 197ee: 07db lsls r3, r3, #31 - 197f0: d402 bmi.n 197f8 + 198ce: 07db lsls r3, r3, #31 + 198d0: d402 bmi.n 198d8 #endif } - 197f2: b005 add sp, #20 - 197f4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 197f8: 2104 movs r1, #4 - 197fa: 4824 ldr r0, [pc, #144] ; (1988c ) - 197fc: f012 fea4 bl 2c548 - 19800: 2101 movs r1, #1 - 19802: 481a ldr r0, [pc, #104] ; (1986c ) - 19804: f012 fea0 bl 2c548 + 198d2: b005 add sp, #20 + 198d4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 198d8: 2104 movs r1, #4 + 198da: 4824 ldr r0, [pc, #144] ; (1996c ) + 198dc: f012 fea8 bl 2c630 + 198e0: 2101 movs r1, #1 + 198e2: 481a ldr r0, [pc, #104] ; (1994c ) + 198e4: f012 fea4 bl 2c630 BMC_PRINTLN("took",((BMC_STORAGE_DEBUG_TIME_T()-debugTimer)/1000.0),"milliseconds"); - 19808: f010 feb4 bl 2a574 - 1980c: 6aab ldr r3, [r5, #40] ; 0x28 + 198e8: f010 feb8 bl 2a65c + 198ec: 6aab ldr r3, [r5, #40] ; 0x28 size_t print(double n, int digits = 2) { return printFloat(n, digits); } - 1980e: 2102 movs r1, #2 - 19810: 1ac3 subs r3, r0, r3 - 19812: 4814 ldr r0, [pc, #80] ; (19864 ) - 19814: ee07 3a10 vmov s14, r3 - 19818: ed9f 0b0f vldr d0, [pc, #60] ; 19858 - 1981c: eeb8 7b47 vcvt.f64.u32 d7, s14 - 19820: ee87 0b00 vdiv.f64 d0, d7, d0 - 19824: f010 fb58 bl 29ed8 - 19828: 2101 movs r1, #1 - 1982a: 4810 ldr r0, [pc, #64] ; (1986c ) - 1982c: f012 fe8c bl 2c548 - 19830: 210c movs r1, #12 - 19832: 4817 ldr r0, [pc, #92] ; (19890 ) - 19834: f012 fe88 bl 2c548 + 198ee: 2102 movs r1, #2 + 198f0: 1ac3 subs r3, r0, r3 + 198f2: 4814 ldr r0, [pc, #80] ; (19944 ) + 198f4: ee07 3a10 vmov s14, r3 + 198f8: ed9f 0b0f vldr d0, [pc, #60] ; 19938 + 198fc: eeb8 7b47 vcvt.f64.u32 d7, s14 + 19900: ee87 0b00 vdiv.f64 d0, d7, d0 + 19904: f010 fb5c bl 29fc0 + 19908: 2101 movs r1, #1 + 1990a: 4810 ldr r0, [pc, #64] ; (1994c ) + 1990c: f012 fe90 bl 2c630 + 19910: 210c movs r1, #12 + 19912: 4817 ldr r0, [pc, #92] ; (19970 ) + 19914: f012 fe8c bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 19838: 480a ldr r0, [pc, #40] ; (19864 ) - 1983a: f010 fb1b bl 29e74 - 1983e: 2100 movs r1, #0 - 19840: 4807 ldr r0, [pc, #28] ; (19860 ) - 19842: f012 fe81 bl 2c548 - 19846: 4807 ldr r0, [pc, #28] ; (19864 ) - 19848: b005 add sp, #20 - 1984a: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1984e: f010 bb11 b.w 29e74 - 19852: bf00 nop - 19854: f3af 8000 nop.w - 19858: 00000000 .word 0x00000000 - 1985c: 408f4000 .word 0x408f4000 - 19860: 20003c58 .word 0x20003c58 - 19864: 20004ba8 .word 0x20004ba8 - 19868: 200036c8 .word 0x200036c8 - 1986c: 200023ec .word 0x200023ec - 19870: 20003e04 .word 0x20003e04 - 19874: 20003e10 .word 0x20003e10 - 19878: 20003e1c .word 0x20003e1c - 1987c: 2000bae8 .word 0x2000bae8 - 19880: 200030b8 .word 0x200030b8 - 19884: 20003e2c .word 0x20003e2c - 19888: 20002448 .word 0x20002448 - 1988c: 20003e38 .word 0x20003e38 - 19890: 20003e40 .word 0x20003e40 - 19894: 00000000 .word 0x00000000 - -00019898 : + 19918: 480a ldr r0, [pc, #40] ; (19944 ) + 1991a: f010 fb21 bl 29f60 + 1991e: 2100 movs r1, #0 + 19920: 4807 ldr r0, [pc, #28] ; (19940 ) + 19922: f012 fe85 bl 2c630 + 19926: 4807 ldr r0, [pc, #28] ; (19944 ) + 19928: b005 add sp, #20 + 1992a: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1992e: f010 bb17 b.w 29f60 + 19932: bf00 nop + 19934: f3af 8000 nop.w + 19938: 00000000 .word 0x00000000 + 1993c: 408f4000 .word 0x408f4000 + 19940: 20003d18 .word 0x20003d18 + 19944: 20004c68 .word 0x20004c68 + 19948: 20003788 .word 0x20003788 + 1994c: 200023ec .word 0x200023ec + 19950: 20003ec4 .word 0x20003ec4 + 19954: 20003ed0 .word 0x20003ed0 + 19958: 20003edc .word 0x20003edc + 1995c: 2000bb08 .word 0x2000bb08 + 19960: 20003150 .word 0x20003150 + 19964: 20003eec .word 0x20003eec + 19968: 20002448 .word 0x20002448 + 1996c: 20003ef8 .word 0x20003ef8 + 19970: 20003f00 .word 0x20003f00 + 19974: 00000000 .word 0x00000000 + +00019978 : } } // @full = erases all data including touch calibration // erasing the touch calibration using the editor will cause // the on board editor not to work until the teensy is rebooted. void storeErase(bool full){ - 19898: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1989c: f5ad 5dc0 sub.w sp, sp, #6144 ; 0x1800 + 19978: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1997c: f5ad 5dc0 sub.w sp, sp, #6144 ; 0x1800 return (storeAddress * sizeof(store)); - 198a0: f241 72fc movw r2, #6140 ; 0x17fc - 198a4: f890 302f ldrb.w r3, [r0, #47] ; 0x2f + 19980: f241 72fc movw r2, #6140 ; 0x17fc + 19984: f890 302f ldrb.w r3, [r0, #47] ; 0x2f bmcStoreTouchSettings touchTmp; bool isTouchCalibrated = settings.getTouchScreenIsCalibrated(); touchTmp = store.global.settings.touchCalibration; #endif store = bmcStore(); - 198a8: 2100 movs r1, #0 + 19988: 2100 movs r1, #0 void storeErase(bool full){ - 198aa: b083 sub sp, #12 - 198ac: 4605 mov r5, r0 - 198ae: fb02 f303 mul.w r3, r2, r3 - 198b2: f241 54e4 movw r4, #5604 ; 0x15e4 + 1998a: b083 sub sp, #12 + 1998c: 4605 mov r5, r0 + 1998e: fb02 f303 mul.w r3, r2, r3 + 19992: f241 54e4 movw r4, #5604 ; 0x15e4 store = bmcStore(); - 198b6: a803 add r0, sp, #12 - 198b8: f641 068d movw r6, #6285 ; 0x188d - 198bc: 9301 str r3, [sp, #4] - 198be: f014 fde5 bl 2e48c - 198c2: a804 add r0, sp, #16 - 198c4: 446c add r4, sp - 198c6: f7e6 fe03 bl 4d0 - 198ca: f241 51f4 movw r1, #5620 ; 0x15f4 - 198ce: f241 50ce movw r0, #5582 ; 0x15ce - 198d2: 446e add r6, sp - 198d4: 4469 add r1, sp + 19996: a803 add r0, sp, #12 + 19998: f641 068d movw r6, #6285 ; 0x188d + 1999c: 9301 str r3, [sp, #4] + 1999e: f014 fde9 bl 2e574 + 199a2: a804 add r0, sp, #16 + 199a4: 446c add r4, sp + 199a6: f7e6 fd93 bl 4d0 + 199aa: f241 51f4 movw r1, #5620 ; 0x15f4 + 199ae: f241 50ce movw r0, #5582 ; 0x15ce + 199b2: 446e add r6, sp + 199b4: 4469 add r1, sp struct bmcStoreDevice { - 198d6: 2200 movs r2, #0 - 198d8: 4468 add r0, sp - 198da: f1a1 0374 sub.w r3, r1, #116 ; 0x74 - 198de: f801 2c88 strb.w r2, [r1, #-136] - 198e2: f803 2c0d strb.w r2, [r3, #-13] + 199b6: 2200 movs r2, #0 + 199b8: 4468 add r0, sp + 199ba: f1a1 0374 sub.w r3, r1, #116 ; 0x74 + 199be: f801 2c88 strb.w r2, [r1, #-136] + 199c2: f803 2c0d strb.w r2, [r3, #-13] struct bmcStoreLayer { - 198e6: 330d adds r3, #13 - 198e8: 4298 cmp r0, r3 - 198ea: d1fa bne.n 198e2 - 198ec: f1a1 032e sub.w r3, r1, #46 ; 0x2e + 199c6: 330d adds r3, #13 + 199c8: 4298 cmp r0, r3 + 199ca: d1fa bne.n 199c2 + 199cc: f1a1 032e sub.w r3, r1, #46 ; 0x2e struct bmcStoreDevice { - 198f0: f803 2c05 strb.w r2, [r3, #-5] + 199d0: f803 2c05 strb.w r2, [r3, #-5] struct bmcStoreLayer { - 198f4: 3305 adds r3, #5 - 198f6: 42a3 cmp r3, r4 - 198f8: d1fa bne.n 198f0 - 198fa: f1a1 0312 sub.w r3, r1, #18 + 199d4: 3305 adds r3, #5 + 199d6: 42a3 cmp r3, r4 + 199d8: d1fa bne.n 199d0 + 199da: f1a1 0312 sub.w r3, r1, #18 struct bmcStoreDevice { - 198fe: f803 2c03 strb.w r2, [r3, #-3] + 199de: f803 2c03 strb.w r2, [r3, #-3] struct bmcStoreLayer { - 19902: 3303 adds r3, #3 - 19904: 428b cmp r3, r1 - 19906: d1fa bne.n 198fe + 199e2: 3303 adds r3, #3 + 199e4: 428b cmp r3, r1 + 199e6: d1fa bne.n 199de struct bmcStore { - 19908: f103 0185 add.w r1, r3, #133 ; 0x85 - 1990c: 3485 adds r4, #133 ; 0x85 - 1990e: 3085 adds r0, #133 ; 0x85 - 19910: 42b1 cmp r1, r6 - 19912: d1e2 bne.n 198da - 19914: ae03 add r6, sp, #12 - 19916: f241 72fc movw r2, #6140 ; 0x17fc - 1991a: 6828 ldr r0, [r5, #0] + 199e8: f103 0185 add.w r1, r3, #133 ; 0x85 + 199ec: 3485 adds r4, #133 ; 0x85 + 199ee: 3085 adds r0, #133 ; 0x85 + 199f0: 42b1 cmp r1, r6 + 199f2: d1e2 bne.n 199ba + 199f4: ae03 add r6, sp, #12 + 199f6: f241 72fc movw r2, #6140 ; 0x17fc + 199fa: 6828 ldr r0, [r5, #0] settings.setTouchScreenIsCalibrated(isTouchCalibrated); } #endif // add the CRC store.crc = (BMC_CRC); // update the CRC - 1991c: 2400 movs r4, #0 + 199fc: 2400 movs r4, #0 store = bmcStore(); - 1991e: 4631 mov r1, r6 - 19920: f010 fef2 bl 2a708 + 199fe: 4631 mov r1, r6 + 19a00: f010 fef6 bl 2a7f0 store.crc = (BMC_CRC); // update the CRC - 19924: 682b ldr r3, [r5, #0] - 19926: 4aa2 ldr r2, [pc, #648] ; (19bb0 ) - 19928: 601a str r2, [r3, #0] + 19a04: 682b ldr r3, [r5, #0] + 19a06: 4aa2 ldr r2, [pc, #648] ; (19c90 ) + 19a08: 601a str r2, [r3, #0] store.version = (BMC_VERSION); // update the library version // save the new store with updated CRC and version #if BMC_MAX_SKETCH_BYTES > 0 for(uint8_t i=0;i + 19a0a: b2e1 uxtb r1, r4 + 19a0c: 4630 mov r0, r6 + 19a0e: f7ed fdf9 bl 7604 return constrain(initialValue, min, max); - 19932: 7d71 ldrb r1, [r6, #21] - 19934: 7db2 ldrb r2, [r6, #22] + 19a12: 7d71 ldrb r1, [r6, #21] + 19a14: 7db2 ldrb r2, [r6, #22] //store.global.sketchBytes[i] = constrain(data.initialValue, data.min, data.max); store.global.sketchBytes[0].events[i] = data.getInitialValue(); - 19936: 682b ldr r3, [r5, #0] - 19938: 4291 cmp r1, r2 - 1993a: 7df0 ldrb r0, [r6, #23] - 1993c: 4423 add r3, r4 + 19a16: 682b ldr r3, [r5, #0] + 19a18: 4291 cmp r1, r2 + 19a1a: 7df0 ldrb r0, [r6, #23] + 19a1c: 4423 add r3, r4 for(uint8_t i=0;i - 19944: 4281 cmp r1, r0 - 19946: 460a mov r2, r1 - 19948: bf28 it cs - 1994a: 4602 movcs r2, r0 - 1994c: 2c04 cmp r4, #4 + 19a1e: f104 0401 add.w r4, r4, #1 + 19a22: d303 bcc.n 19a2c + 19a24: 4281 cmp r1, r0 + 19a26: 460a mov r2, r1 + 19a28: bf28 it cs + 19a2a: 4602 movcs r2, r0 + 19a2c: 2c04 cmp r4, #4 store.global.sketchBytes[0].events[i] = data.getInitialValue(); - 1994e: f883 2f29 strb.w r2, [r3, #3881] ; 0xf29 + 19a2e: f883 2f29 strb.w r2, [r3, #3881] ; 0xf29 for(uint8_t i=0;i + 19a32: d1ea bne.n 19a0a } } #endif #if BMC_TOTAL_POTS_AUX_JACKS > 0 for(uint16_t i = 0 ; i < BMC_TOTAL_POTS_AUX_JACKS ; i++){ store.global.potCalibration[i].events[0] = 0; - 19954: 682b ldr r3, [r5, #0] + 19a34: 682b ldr r3, [r5, #0] store.global.potCalibration[i].events[1] = 0x3FF; } #endif store.global.shortcuts[0].events[0] = BMC_DEVICE_ID_EVENT; - 19956: 2202 movs r2, #2 + 19a36: 2202 movs r2, #2 store.global.potCalibration[i].events[0] = 0; - 19958: 4896 ldr r0, [pc, #600] ; (19bb4 ) + 19a38: 4896 ldr r0, [pc, #600] ; (19c94 ) store.global.shortcuts[0].events[1] = BMC_DEVICE_ID_NAME; - 1995a: 2603 movs r6, #3 + 19a3a: 2603 movs r6, #3 store.global.potCalibration[i].events[0] = 0; - 1995c: f503 5180 add.w r1, r3, #4096 ; 0x1000 - 19960: f8c1 04e8 str.w r0, [r1, #1256] ; 0x4e8 + 19a3c: f503 5180 add.w r1, r3, #4096 ; 0x1000 + 19a40: f8c1 04e8 str.w r0, [r1, #1256] ; 0x4e8 store.global.shortcuts[0].events[0] = BMC_DEVICE_ID_EVENT; - 19964: f883 2f19 strb.w r2, [r3, #3865] ; 0xf19 + 19a44: f883 2f19 strb.w r2, [r3, #3865] ; 0xf19 store.global.shortcuts[0].events[2] = BMC_DEVICE_ID_LFO; - 19968: 2226 movs r2, #38 ; 0x26 + 19a48: 2226 movs r2, #38 ; 0x26 store.global.shortcuts[0].events[1] = BMC_DEVICE_ID_NAME; - 1996a: 682b ldr r3, [r5, #0] - 1996c: f883 6f1a strb.w r6, [r3, #3866] ; 0xf1a + 19a4a: 682b ldr r3, [r5, #0] + 19a4c: f883 6f1a strb.w r6, [r3, #3866] ; 0xf1a store.global.shortcuts[0].events[2] = BMC_DEVICE_ID_LFO; - 19970: 682b ldr r3, [r5, #0] - 19972: f883 2f1b strb.w r2, [r3, #3867] ; 0xf1b + 19a50: 682b ldr r3, [r5, #0] + 19a52: f883 2f1b strb.w r2, [r3, #3867] ; 0xf1b store.global.shortcuts[0].events[3] = BMC_DEVICE_ID_PORT_PRESET; - 19976: 2228 movs r2, #40 ; 0x28 - 19978: 682b ldr r3, [r5, #0] - 1997a: f883 2f1c strb.w r2, [r3, #3868] ; 0xf1c + 19a56: 2228 movs r2, #40 ; 0x28 + 19a58: 682b ldr r3, [r5, #0] + 19a5a: f883 2f1c strb.w r2, [r3, #3868] ; 0xf1c BMC_WRITE_BITS(settings.data[0],value,0x0F,14); - 1997e: 68ab ldr r3, [r5, #8] + 19a5e: 68ab ldr r3, [r5, #8] storage.set(address, store); - 19980: 682c ldr r4, [r5, #0] - 19982: 6819 ldr r1, [r3, #0] - 19984: f895 302d ldrb.w r3, [r5, #45] ; 0x2d - 19988: 684a ldr r2, [r1, #4] - 1998a: 039b lsls r3, r3, #14 - 1998c: f422 3270 bic.w r2, r2, #245760 ; 0x3c000 - 19990: f403 3370 and.w r3, r3, #245760 ; 0x3c000 - 19994: 4313 orrs r3, r2 - 19996: f241 72fc movw r2, #6140 ; 0x17fc - 1999a: 604b str r3, [r1, #4] - 1999c: 68eb ldr r3, [r5, #12] - 1999e: f895 902f ldrb.w r9, [r5, #47] ; 0x2f - 199a2: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 199a6: fb02 f909 mul.w r9, r2, r9 + 19a60: 682c ldr r4, [r5, #0] + 19a62: 6819 ldr r1, [r3, #0] + 19a64: f895 302d ldrb.w r3, [r5, #45] ; 0x2d + 19a68: 684a ldr r2, [r1, #4] + 19a6a: 039b lsls r3, r3, #14 + 19a6c: f422 3270 bic.w r2, r2, #245760 ; 0x3c000 + 19a70: f403 3370 and.w r3, r3, #245760 ; 0x3c000 + 19a74: 4313 orrs r3, r2 + 19a76: f241 72fc movw r2, #6140 ; 0x17fc + 19a7a: 604b str r3, [r1, #4] + 19a7c: 68eb ldr r3, [r5, #12] + 19a7e: f895 902f ldrb.w r9, [r5, #47] ; 0x2f + 19a82: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 19a86: fb02 f909 mul.w r9, r2, r9 if(!globals.getStorageDebug()){ - 199aa: 07d8 lsls r0, r3, #31 - 199ac: d521 bpl.n 199f2 - 199ae: 2100 movs r1, #0 - 199b0: 4881 ldr r0, [pc, #516] ; (19bb8 ) - 199b2: f012 fdc9 bl 2c548 - 199b6: 4881 ldr r0, [pc, #516] ; (19bbc ) - 199b8: f010 fa5c bl 29e74 - 199bc: 4631 mov r1, r6 - 199be: 4880 ldr r0, [pc, #512] ; (19bc0 ) - 199c0: f012 fdc2 bl 2c548 - 199c4: 2101 movs r1, #1 - 199c6: 487f ldr r0, [pc, #508] ; (19bc4 ) - 199c8: f012 fdbe bl 2c548 - 199cc: 2108 movs r1, #8 - 199ce: 487e ldr r0, [pc, #504] ; (19bc8 ) - 199d0: f012 fdba bl 2c548 - 199d4: 2101 movs r1, #1 - 199d6: 487b ldr r0, [pc, #492] ; (19bc4 ) - 199d8: f012 fdb6 bl 2c548 - 199dc: 2108 movs r1, #8 - 199de: 487b ldr r0, [pc, #492] ; (19bcc ) - 199e0: f012 fdb2 bl 2c548 - 199e4: 2101 movs r1, #1 - 199e6: 4877 ldr r0, [pc, #476] ; (19bc4 ) - 199e8: f012 fdae bl 2c548 + 19a8a: 07d8 lsls r0, r3, #31 + 19a8c: d521 bpl.n 19ad2 + 19a8e: 2100 movs r1, #0 + 19a90: 4881 ldr r0, [pc, #516] ; (19c98 ) + 19a92: f012 fdcd bl 2c630 + 19a96: 4881 ldr r0, [pc, #516] ; (19c9c ) + 19a98: f010 fa62 bl 29f60 + 19a9c: 4631 mov r1, r6 + 19a9e: 4880 ldr r0, [pc, #512] ; (19ca0 ) + 19aa0: f012 fdc6 bl 2c630 + 19aa4: 2101 movs r1, #1 + 19aa6: 487f ldr r0, [pc, #508] ; (19ca4 ) + 19aa8: f012 fdc2 bl 2c630 + 19aac: 2108 movs r1, #8 + 19aae: 487e ldr r0, [pc, #504] ; (19ca8 ) + 19ab0: f012 fdbe bl 2c630 + 19ab4: 2101 movs r1, #1 + 19ab6: 487b ldr r0, [pc, #492] ; (19ca4 ) + 19ab8: f012 fdba bl 2c630 + 19abc: 2108 movs r1, #8 + 19abe: 487b ldr r0, [pc, #492] ; (19cac ) + 19ac0: f012 fdb6 bl 2c630 + 19ac4: 2101 movs r1, #1 + 19ac6: 4877 ldr r0, [pc, #476] ; (19ca4 ) + 19ac8: f012 fdb2 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 199ec: f010 fdc2 bl 2a574 - 199f0: 62a8 str r0, [r5, #40] ; 0x28 - 199f2: fa1f f989 uxth.w r9, r9 + 19acc: f010 fdc6 bl 2a65c + 19ad0: 62a8 str r0, [r5, #40] ; 0x28 + 19ad2: fa1f f989 uxth.w r9, r9 unsigned long n = sizeof(value)+start; - 199f6: f241 7afc movw sl, #6140 ; 0x17fc - 199fa: 210e movs r1, #14 - 199fc: 4874 ldr r0, [pc, #464] ; (19bd0 ) - 199fe: f012 fda3 bl 2c548 - 19a02: 4e74 ldr r6, [pc, #464] ; (19bd4 ) - 19a04: f109 0301 add.w r3, r9, #1 - 19a08: eb09 020a add.w r2, r9, sl - 19a0c: f10d 080c add.w r8, sp, #12 - 19a10: eba9 0904 sub.w r9, r9, r4 - 19a14: 429a cmp r2, r3 - 19a16: bf38 it cc - 19a18: f04f 0a01 movcc.w sl, #1 - 19a1c: 6833 ldr r3, [r6, #0] + 19ad6: f241 7afc movw sl, #6140 ; 0x17fc + 19ada: 210e movs r1, #14 + 19adc: 4874 ldr r0, [pc, #464] ; (19cb0 ) + 19ade: f012 fda7 bl 2c630 + 19ae2: 4e74 ldr r6, [pc, #464] ; (19cb4 ) + 19ae4: f109 0301 add.w r3, r9, #1 + 19ae8: eb09 020a add.w r2, r9, sl + 19aec: f10d 080c add.w r8, sp, #12 + 19af0: eba9 0904 sub.w r9, r9, r4 + 19af4: 429a cmp r2, r3 + 19af6: bf38 it cc + 19af8: f04f 0a01 movcc.w sl, #1 + 19afc: 6833 ldr r3, [r6, #0] STORAGE.put(address,file); - 19a1e: f105 0710 add.w r7, r5, #16 + 19afe: f105 0710 add.w r7, r5, #16 unsigned long updatedBytes = 0; - 19a22: f04f 0b00 mov.w fp, #0 - 19a26: 44a2 add sl, r4 - 19a28: 622b str r3, [r5, #32] - 19a2a: e006 b.n 19a3a - 19a2c: 6833 ldr r3, [r6, #0] + 19b02: f04f 0b00 mov.w fp, #0 + 19b06: 44a2 add sl, r4 + 19b08: 622b str r3, [r5, #32] + 19b0a: e006 b.n 19b1a + 19b0c: 6833 ldr r3, [r6, #0] operator unsigned long () const { return millis() - ms; } - 19a2e: 6a2a ldr r2, [r5, #32] - 19a30: 1a9b subs r3, r3, r2 + 19b0e: 6a2a ldr r2, [r5, #32] + 19b10: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 19a32: 2bf9 cmp r3, #249 ; 0xf9 - 19a34: d81c bhi.n 19a70 + 19b12: 2bf9 cmp r3, #249 ; 0xf9 + 19b14: d81c bhi.n 19b50 for(i=start;i - 19a3a: eb04 0109 add.w r1, r4, r9 + 19b16: 4554 cmp r4, sl + 19b18: d022 beq.n 19b60 + 19b1a: eb04 0109 add.w r1, r4, r9 updatedBytes += update(i,*p++); - 19a3e: f814 3b01 ldrb.w r3, [r4], #1 + 19b1e: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 19a42: 4638 mov r0, r7 - 19a44: f888 3000 strb.w r3, [r8] - 19a48: 9100 str r1, [sp, #0] - 19a4a: f00b fb7f bl 2514c - 19a4e: f898 3000 ldrb.w r3, [r8] - 19a52: 9900 ldr r1, [sp, #0] - 19a54: 4298 cmp r0, r3 - 19a56: d0e9 beq.n 19a2c + 19b22: 4638 mov r0, r7 + 19b24: f888 3000 strb.w r3, [r8] + 19b28: 9100 str r1, [sp, #0] + 19b2a: f00b fb85 bl 25238 + 19b2e: f898 3000 ldrb.w r3, [r8] + 19b32: 9900 ldr r1, [sp, #0] + 19b34: 4298 cmp r0, r3 + 19b36: d0e9 beq.n 19b0c write(addr, &value, 1); - 19a58: 2301 movs r3, #1 - 19a5a: aa03 add r2, sp, #12 - 19a5c: 4638 mov r0, r7 + 19b38: 2301 movs r3, #1 + 19b3a: aa03 add r2, sp, #12 + 19b3c: 4638 mov r0, r7 updatedBytes += update(i,*p++); - 19a5e: f10b 0b01 add.w fp, fp, #1 + 19b3e: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 19a62: f00b fa69 bl 24f38 - 19a66: 6833 ldr r3, [r6, #0] - 19a68: 6a2a ldr r2, [r5, #32] - 19a6a: 1a9b subs r3, r3, r2 + 19b42: f00b fa6f bl 25024 + 19b46: 6833 ldr r3, [r6, #0] + 19b48: 6a2a ldr r2, [r5, #32] + 19b4a: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 19a6c: 2bf9 cmp r3, #249 ; 0xf9 - 19a6e: d9e2 bls.n 19a36 - 19a70: 2101 movs r1, #1 - 19a72: 4859 ldr r0, [pc, #356] ; (19bd8 ) - 19a74: f012 fd68 bl 2c548 - 19a78: 6833 ldr r3, [r6, #0] + 19b4c: 2bf9 cmp r3, #249 ; 0xf9 + 19b4e: d9e2 bls.n 19b16 + 19b50: 2101 movs r1, #1 + 19b52: 4859 ldr r0, [pc, #356] ; (19cb8 ) + 19b54: f012 fd6c bl 2c630 + 19b58: 6833 ldr r3, [r6, #0] for(i=start;i - 19a80: 2101 movs r1, #1 - 19a82: 4855 ldr r0, [pc, #340] ; (19bd8 ) - 19a84: f012 fd60 bl 2c548 - 19a88: 484c ldr r0, [pc, #304] ; (19bbc ) - 19a8a: f010 f9f3 bl 29e74 - 19a8e: 2109 movs r1, #9 - 19a90: 4852 ldr r0, [pc, #328] ; (19bdc ) - 19a92: f012 fd59 bl 2c548 - 19a96: 2101 movs r1, #1 - 19a98: 484a ldr r0, [pc, #296] ; (19bc4 ) - 19a9a: f012 fd55 bl 2c548 + 19b5c: 622b str r3, [r5, #32] + 19b5e: d1dc bne.n 19b1a + 19b60: 2101 movs r1, #1 + 19b62: 4855 ldr r0, [pc, #340] ; (19cb8 ) + 19b64: f012 fd64 bl 2c630 + 19b68: 484c ldr r0, [pc, #304] ; (19c9c ) + 19b6a: f010 f9f9 bl 29f60 + 19b6e: 2109 movs r1, #9 + 19b70: 4852 ldr r0, [pc, #328] ; (19cbc ) + 19b72: f012 fd5d bl 2c630 + 19b76: 2101 movs r1, #1 + 19b78: 484a ldr r0, [pc, #296] ; (19ca4 ) + 19b7a: f012 fd59 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 19a9e: 2300 movs r3, #0 - 19aa0: 220a movs r2, #10 - 19aa2: 4659 mov r1, fp - 19aa4: 4845 ldr r0, [pc, #276] ; (19bbc ) - 19aa6: f010 fa01 bl 29eac - 19aaa: 2101 movs r1, #1 - 19aac: 4845 ldr r0, [pc, #276] ; (19bc4 ) - 19aae: f012 fd4b bl 2c548 - 19ab2: 2105 movs r1, #5 - 19ab4: 484a ldr r0, [pc, #296] ; (19be0 ) - 19ab6: f012 fd47 bl 2c548 + 19b7e: 2300 movs r3, #0 + 19b80: 220a movs r2, #10 + 19b82: 4659 mov r1, fp + 19b84: 4845 ldr r0, [pc, #276] ; (19c9c ) + 19b86: f010 fa07 bl 29f98 + 19b8a: 2101 movs r1, #1 + 19b8c: 4845 ldr r0, [pc, #276] ; (19ca4 ) + 19b8e: f012 fd4f bl 2c630 + 19b92: 2105 movs r1, #5 + 19b94: 484a ldr r0, [pc, #296] ; (19cc0 ) + 19b96: f012 fd4b bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 19aba: 4840 ldr r0, [pc, #256] ; (19bbc ) - 19abc: f010 f9da bl 29e74 - 19ac0: 68eb ldr r3, [r5, #12] - 19ac2: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 19b9a: 4840 ldr r0, [pc, #256] ; (19c9c ) + 19b9c: f010 f9e0 bl 29f60 + 19ba0: 68eb ldr r3, [r5, #12] + 19ba2: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 19ac6: 07d9 lsls r1, r3, #31 - 19ac8: f100 8092 bmi.w 19bf0 + 19ba6: 07d9 lsls r1, r3, #31 + 19ba8: f100 8092 bmi.w 19cd0 // update the device id on this new store to match the one we already have settings.setDeviceId(deviceId); saveStore(); storage.get(address, store); - 19acc: 682c ldr r4, [r5, #0] - 19ace: 210f movs r1, #15 - 19ad0: 4844 ldr r0, [pc, #272] ; (19be4 ) - 19ad2: f8bd 9004 ldrh.w r9, [sp, #4] + 19bac: 682c ldr r4, [r5, #0] + 19bae: 210f movs r1, #15 + 19bb0: 4844 ldr r0, [pc, #272] ; (19cc4 ) + 19bb2: f8bd 9004 ldrh.w r9, [sp, #4] unsigned long n = sizeof(value)+start; - 19ad6: f241 78fc movw r8, #6140 ; 0x17fc - 19ada: f012 fd35 bl 2c548 - 19ade: 6833 ldr r3, [r6, #0] - 19ae0: f109 0201 add.w r2, r9, #1 - 19ae4: f8df a0f0 ldr.w sl, [pc, #240] ; 19bd8 - 19ae8: 622b str r3, [r5, #32] - 19aea: eb09 0308 add.w r3, r9, r8 - 19aee: eba9 0904 sub.w r9, r9, r4 - 19af2: 429a cmp r2, r3 - 19af4: bf88 it hi - 19af6: f04f 0801 movhi.w r8, #1 - 19afa: 44a0 add r8, r4 - 19afc: e001 b.n 19b02 + 19bb6: f241 78fc movw r8, #6140 ; 0x17fc + 19bba: f012 fd39 bl 2c630 + 19bbe: 6833 ldr r3, [r6, #0] + 19bc0: f109 0201 add.w r2, r9, #1 + 19bc4: f8df a0f0 ldr.w sl, [pc, #240] ; 19cb8 + 19bc8: 622b str r3, [r5, #32] + 19bca: eb09 0308 add.w r3, r9, r8 + 19bce: eba9 0904 sub.w r9, r9, r4 + 19bd2: 429a cmp r2, r3 + 19bd4: bf88 it hi + 19bd6: f04f 0801 movhi.w r8, #1 + 19bda: 44a0 add r8, r4 + 19bdc: e001 b.n 19be2 for (i=start;i + 19bde: 4544 cmp r4, r8 + 19be0: d013 beq.n 19c0a *p++ = (uint8_t) read(i); - 19b02: eb04 0109 add.w r1, r4, r9 - 19b06: 4638 mov r0, r7 - 19b08: f00b fb20 bl 2514c - 19b0c: f804 0b01 strb.w r0, [r4], #1 - 19b10: 6833 ldr r3, [r6, #0] + 19be2: eb04 0109 add.w r1, r4, r9 + 19be6: 4638 mov r0, r7 + 19be8: f00b fb26 bl 25238 + 19bec: f804 0b01 strb.w r0, [r4], #1 + 19bf0: 6833 ldr r3, [r6, #0] operator unsigned long () const { return millis() - ms; } - 19b12: 6a2a ldr r2, [r5, #32] - 19b14: 1a9b subs r3, r3, r2 + 19bf2: 6a2a ldr r2, [r5, #32] + 19bf4: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 19b16: 2bf9 cmp r3, #249 ; 0xf9 - 19b18: d9f1 bls.n 19afe - 19b1a: 2101 movs r1, #1 - 19b1c: 4650 mov r0, sl - 19b1e: f012 fd13 bl 2c548 - 19b22: 6833 ldr r3, [r6, #0] + 19bf6: 2bf9 cmp r3, #249 ; 0xf9 + 19bf8: d9f1 bls.n 19bde + 19bfa: 2101 movs r1, #1 + 19bfc: 4650 mov r0, sl + 19bfe: f012 fd17 bl 2c630 + 19c02: 6833 ldr r3, [r6, #0] for (i=start;i - 19b2a: 2101 movs r1, #1 - 19b2c: 482a ldr r0, [pc, #168] ; (19bd8 ) - 19b2e: f012 fd0b bl 2c548 - 19b32: 4822 ldr r0, [pc, #136] ; (19bbc ) - 19b34: f010 f99e bl 29e74 - 19b38: 68eb ldr r3, [r5, #12] - 19b3a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 19b3e: 07db lsls r3, r3, #31 - 19b40: d529 bpl.n 19b96 - 19b42: 2104 movs r1, #4 - 19b44: 4828 ldr r0, [pc, #160] ; (19be8 ) - 19b46: f012 fcff bl 2c548 - 19b4a: 2101 movs r1, #1 - 19b4c: 481d ldr r0, [pc, #116] ; (19bc4 ) - 19b4e: f012 fcfb bl 2c548 + 19c06: 622b str r3, [r5, #32] + 19c08: d1eb bne.n 19be2 + 19c0a: 2101 movs r1, #1 + 19c0c: 482a ldr r0, [pc, #168] ; (19cb8 ) + 19c0e: f012 fd0f bl 2c630 + 19c12: 4822 ldr r0, [pc, #136] ; (19c9c ) + 19c14: f010 f9a4 bl 29f60 + 19c18: 68eb ldr r3, [r5, #12] + 19c1a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 19c1e: 07db lsls r3, r3, #31 + 19c20: d529 bpl.n 19c76 + 19c22: 2104 movs r1, #4 + 19c24: 4828 ldr r0, [pc, #160] ; (19cc8 ) + 19c26: f012 fd03 bl 2c630 + 19c2a: 2101 movs r1, #1 + 19c2c: 481d ldr r0, [pc, #116] ; (19ca4 ) + 19c2e: f012 fcff bl 2c630 BMC_PRINTLN("took",((BMC_STORAGE_DEBUG_TIME_T()-debugTimer)/1000.0),"milliseconds"); - 19b52: f010 fd0f bl 2a574 - 19b56: 6aab ldr r3, [r5, #40] ; 0x28 + 19c32: f010 fd13 bl 2a65c + 19c36: 6aab ldr r3, [r5, #40] ; 0x28 size_t print(double n, int digits = 2) { return printFloat(n, digits); } - 19b58: 2102 movs r1, #2 - 19b5a: 1ac3 subs r3, r0, r3 - 19b5c: 4817 ldr r0, [pc, #92] ; (19bbc ) - 19b5e: ee07 3a10 vmov s14, r3 - 19b62: ed9f 0b11 vldr d0, [pc, #68] ; 19ba8 - 19b66: eeb8 7b47 vcvt.f64.u32 d7, s14 - 19b6a: ee87 0b00 vdiv.f64 d0, d7, d0 - 19b6e: f010 f9b3 bl 29ed8 - 19b72: 2101 movs r1, #1 - 19b74: 4813 ldr r0, [pc, #76] ; (19bc4 ) - 19b76: f012 fce7 bl 2c548 - 19b7a: 210c movs r1, #12 - 19b7c: 481b ldr r0, [pc, #108] ; (19bec ) - 19b7e: f012 fce3 bl 2c548 + 19c38: 2102 movs r1, #2 + 19c3a: 1ac3 subs r3, r0, r3 + 19c3c: 4817 ldr r0, [pc, #92] ; (19c9c ) + 19c3e: ee07 3a10 vmov s14, r3 + 19c42: ed9f 0b11 vldr d0, [pc, #68] ; 19c88 + 19c46: eeb8 7b47 vcvt.f64.u32 d7, s14 + 19c4a: ee87 0b00 vdiv.f64 d0, d7, d0 + 19c4e: f010 f9b7 bl 29fc0 + 19c52: 2101 movs r1, #1 + 19c54: 4813 ldr r0, [pc, #76] ; (19ca4 ) + 19c56: f012 fceb bl 2c630 + 19c5a: 210c movs r1, #12 + 19c5c: 481b ldr r0, [pc, #108] ; (19ccc ) + 19c5e: f012 fce7 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 19b82: 480e ldr r0, [pc, #56] ; (19bbc ) - 19b84: f010 f976 bl 29e74 - 19b88: 2100 movs r1, #0 - 19b8a: 480b ldr r0, [pc, #44] ; (19bb8 ) - 19b8c: f012 fcdc bl 2c548 - 19b90: 480a ldr r0, [pc, #40] ; (19bbc ) - 19b92: f010 f96f bl 29e74 + 19c62: 480e ldr r0, [pc, #56] ; (19c9c ) + 19c64: f010 f97c bl 29f60 + 19c68: 2100 movs r1, #0 + 19c6a: 480b ldr r0, [pc, #44] ; (19c98 ) + 19c6c: f012 fce0 bl 2c630 + 19c70: 480a ldr r0, [pc, #40] ; (19c9c ) + 19c72: f010 f975 bl 29f60 bitSet(flags, bit); - 19b96: 6b2b ldr r3, [r5, #48] ; 0x30 - 19b98: f443 6300 orr.w r3, r3, #2048 ; 0x800 - 19b9c: 632b str r3, [r5, #48] ; 0x30 + 19c76: 6b2b ldr r3, [r5, #48] ; 0x30 + 19c78: f443 6300 orr.w r3, r3, #2048 ; 0x800 + 19c7c: 632b str r3, [r5, #48] ; 0x30 flags.on(BMC_EDITOR_FLAG_EEPROM_ERASED); } - 19b9e: f50d 5dc0 add.w sp, sp, #6144 ; 0x1800 - 19ba2: b003 add sp, #12 - 19ba4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 19ba8: 00000000 .word 0x00000000 - 19bac: 408f4000 .word 0x408f4000 - 19bb0: 020249b0 .word 0x020249b0 - 19bb4: 03ff0000 .word 0x03ff0000 - 19bb8: 20003c58 .word 0x20003c58 - 19bbc: 20004ba8 .word 0x20004ba8 - 19bc0: 200036c8 .word 0x200036c8 - 19bc4: 200023ec .word 0x200023ec - 19bc8: 20003e04 .word 0x20003e04 - 19bcc: 20003e10 .word 0x20003e10 - 19bd0: 20003e1c .word 0x20003e1c - 19bd4: 2000bae8 .word 0x2000bae8 - 19bd8: 200030b8 .word 0x200030b8 - 19bdc: 20003e2c .word 0x20003e2c - 19be0: 20002448 .word 0x20002448 - 19be4: 20003ba4 .word 0x20003ba4 - 19be8: 20003e38 .word 0x20003e38 - 19bec: 20003e40 .word 0x20003e40 - 19bf0: 2104 movs r1, #4 - 19bf2: 482b ldr r0, [pc, #172] ; (19ca0 ) - 19bf4: f012 fca8 bl 2c548 - 19bf8: 2101 movs r1, #1 - 19bfa: 482a ldr r0, [pc, #168] ; (19ca4 ) - 19bfc: f012 fca4 bl 2c548 - 19c00: f010 fcb8 bl 2a574 - 19c04: 6aab ldr r3, [r5, #40] ; 0x28 + 19c7e: f50d 5dc0 add.w sp, sp, #6144 ; 0x1800 + 19c82: b003 add sp, #12 + 19c84: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 19c88: 00000000 .word 0x00000000 + 19c8c: 408f4000 .word 0x408f4000 + 19c90: 020249b0 .word 0x020249b0 + 19c94: 03ff0000 .word 0x03ff0000 + 19c98: 20003d18 .word 0x20003d18 + 19c9c: 20004c68 .word 0x20004c68 + 19ca0: 20003788 .word 0x20003788 + 19ca4: 200023ec .word 0x200023ec + 19ca8: 20003ec4 .word 0x20003ec4 + 19cac: 20003ed0 .word 0x20003ed0 + 19cb0: 20003edc .word 0x20003edc + 19cb4: 2000bb08 .word 0x2000bb08 + 19cb8: 20003150 .word 0x20003150 + 19cbc: 20003eec .word 0x20003eec + 19cc0: 20002448 .word 0x20002448 + 19cc4: 20003c64 .word 0x20003c64 + 19cc8: 20003ef8 .word 0x20003ef8 + 19ccc: 20003f00 .word 0x20003f00 + 19cd0: 2104 movs r1, #4 + 19cd2: 482b ldr r0, [pc, #172] ; (19d80 ) + 19cd4: f012 fcac bl 2c630 + 19cd8: 2101 movs r1, #1 + 19cda: 482a ldr r0, [pc, #168] ; (19d84 ) + 19cdc: f012 fca8 bl 2c630 + 19ce0: f010 fcbc bl 2a65c + 19ce4: 6aab ldr r3, [r5, #40] ; 0x28 size_t print(double n, int digits = 2) { return printFloat(n, digits); } - 19c06: 2102 movs r1, #2 - 19c08: 1ac0 subs r0, r0, r3 - 19c0a: ee07 0a90 vmov s15, r0 - 19c0e: 4826 ldr r0, [pc, #152] ; (19ca8 ) - 19c10: eeb8 7b67 vcvt.f64.u32 d7, s15 - 19c14: ed9f 0b20 vldr d0, [pc, #128] ; 19c98 - 19c18: ee87 0b00 vdiv.f64 d0, d7, d0 - 19c1c: f010 f95c bl 29ed8 - 19c20: 2101 movs r1, #1 - 19c22: 4820 ldr r0, [pc, #128] ; (19ca4 ) - 19c24: f012 fc90 bl 2c548 - 19c28: 210c movs r1, #12 - 19c2a: 4820 ldr r0, [pc, #128] ; (19cac ) - 19c2c: f012 fc8c bl 2c548 + 19ce6: 2102 movs r1, #2 + 19ce8: 1ac0 subs r0, r0, r3 + 19cea: ee07 0a90 vmov s15, r0 + 19cee: 4826 ldr r0, [pc, #152] ; (19d88 ) + 19cf0: eeb8 7b67 vcvt.f64.u32 d7, s15 + 19cf4: ed9f 0b20 vldr d0, [pc, #128] ; 19d78 + 19cf8: ee87 0b00 vdiv.f64 d0, d7, d0 + 19cfc: f010 f960 bl 29fc0 + 19d00: 2101 movs r1, #1 + 19d02: 4820 ldr r0, [pc, #128] ; (19d84 ) + 19d04: f012 fc94 bl 2c630 + 19d08: 210c movs r1, #12 + 19d0a: 4820 ldr r0, [pc, #128] ; (19d8c ) + 19d0c: f012 fc90 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 19c30: 481d ldr r0, [pc, #116] ; (19ca8 ) - 19c32: f010 f91f bl 29e74 - 19c36: 2100 movs r1, #0 - 19c38: 481d ldr r0, [pc, #116] ; (19cb0 ) - 19c3a: f012 fc85 bl 2c548 - 19c3e: 481a ldr r0, [pc, #104] ; (19ca8 ) - 19c40: f010 f918 bl 29e74 + 19d10: 481d ldr r0, [pc, #116] ; (19d88 ) + 19d12: f010 f925 bl 29f60 + 19d16: 2100 movs r1, #0 + 19d18: 481d ldr r0, [pc, #116] ; (19d90 ) + 19d1a: f012 fc89 bl 2c630 + 19d1e: 481a ldr r0, [pc, #104] ; (19d88 ) + 19d20: f010 f91e bl 29f60 return bitRead(flags, bit); - 19c44: 68eb ldr r3, [r5, #12] + 19d24: 68eb ldr r3, [r5, #12] storage.get(address, store); - 19c46: 682c ldr r4, [r5, #0] - 19c48: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 19d26: 682c ldr r4, [r5, #0] + 19d28: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 19c4c: 07da lsls r2, r3, #31 - 19c4e: f57f af3e bpl.w 19ace - 19c52: 2100 movs r1, #0 - 19c54: 4816 ldr r0, [pc, #88] ; (19cb0 ) - 19c56: f012 fc77 bl 2c548 - 19c5a: 4813 ldr r0, [pc, #76] ; (19ca8 ) - 19c5c: f010 f90a bl 29e74 - 19c60: 2103 movs r1, #3 - 19c62: 4814 ldr r0, [pc, #80] ; (19cb4 ) - 19c64: f012 fc70 bl 2c548 - 19c68: 2101 movs r1, #1 - 19c6a: 480e ldr r0, [pc, #56] ; (19ca4 ) - 19c6c: f012 fc6c bl 2c548 - 19c70: 2107 movs r1, #7 - 19c72: 4811 ldr r0, [pc, #68] ; (19cb8 ) - 19c74: f012 fc68 bl 2c548 - 19c78: 2101 movs r1, #1 - 19c7a: 480a ldr r0, [pc, #40] ; (19ca4 ) - 19c7c: f012 fc64 bl 2c548 - 19c80: 2108 movs r1, #8 - 19c82: 480e ldr r0, [pc, #56] ; (19cbc ) - 19c84: f012 fc60 bl 2c548 - 19c88: 2101 movs r1, #1 - 19c8a: 4806 ldr r0, [pc, #24] ; (19ca4 ) - 19c8c: f012 fc5c bl 2c548 + 19d2c: 07da lsls r2, r3, #31 + 19d2e: f57f af3e bpl.w 19bae + 19d32: 2100 movs r1, #0 + 19d34: 4816 ldr r0, [pc, #88] ; (19d90 ) + 19d36: f012 fc7b bl 2c630 + 19d3a: 4813 ldr r0, [pc, #76] ; (19d88 ) + 19d3c: f010 f910 bl 29f60 + 19d40: 2103 movs r1, #3 + 19d42: 4814 ldr r0, [pc, #80] ; (19d94 ) + 19d44: f012 fc74 bl 2c630 + 19d48: 2101 movs r1, #1 + 19d4a: 480e ldr r0, [pc, #56] ; (19d84 ) + 19d4c: f012 fc70 bl 2c630 + 19d50: 2107 movs r1, #7 + 19d52: 4811 ldr r0, [pc, #68] ; (19d98 ) + 19d54: f012 fc6c bl 2c630 + 19d58: 2101 movs r1, #1 + 19d5a: 480a ldr r0, [pc, #40] ; (19d84 ) + 19d5c: f012 fc68 bl 2c630 + 19d60: 2108 movs r1, #8 + 19d62: 480e ldr r0, [pc, #56] ; (19d9c ) + 19d64: f012 fc64 bl 2c630 + 19d68: 2101 movs r1, #1 + 19d6a: 4806 ldr r0, [pc, #24] ; (19d84 ) + 19d6c: f012 fc60 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 19c90: f010 fc70 bl 2a574 - 19c94: 62a8 str r0, [r5, #40] ; 0x28 - 19c96: e71a b.n 19ace - 19c98: 00000000 .word 0x00000000 - 19c9c: 408f4000 .word 0x408f4000 - 19ca0: 20003e38 .word 0x20003e38 - 19ca4: 200023ec .word 0x200023ec - 19ca8: 20004ba8 .word 0x20004ba8 - 19cac: 20003e40 .word 0x20003e40 - 19cb0: 20003c58 .word 0x20003c58 - 19cb4: 200036c8 .word 0x200036c8 - 19cb8: 20003b9c .word 0x20003b9c - 19cbc: 20003e10 .word 0x20003e10 - -00019cc0 : + 19d70: f010 fc74 bl 2a65c + 19d74: 62a8 str r0, [r5, #40] ; 0x28 + 19d76: e71a b.n 19bae + 19d78: 00000000 .word 0x00000000 + 19d7c: 408f4000 .word 0x408f4000 + 19d80: 20003ef8 .word 0x20003ef8 + 19d84: 200023ec .word 0x200023ec + 19d88: 20004c68 .word 0x20004c68 + 19d8c: 20003f00 .word 0x20003f00 + 19d90: 20003d18 .word 0x20003d18 + 19d94: 20003788 .word 0x20003788 + 19d98: 20003c5c .word 0x20003c5c + 19d9c: 20003ed0 .word 0x20003ed0 + +00019da0 : void getStore(){ - 19cc0: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 19cc4: 68c3 ldr r3, [r0, #12] - 19cc6: f241 72fc movw r2, #6140 ; 0x17fc - 19cca: f890 b02f ldrb.w fp, [r0, #47] ; 0x2f - 19cce: 4605 mov r5, r0 - 19cd0: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 19da0: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 19da4: 68c3 ldr r3, [r0, #12] + 19da6: f241 72fc movw r2, #6140 ; 0x17fc + 19daa: f890 b02f ldrb.w fp, [r0, #47] ; 0x2f + 19dae: 4605 mov r5, r0 + 19db0: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 storage.get(address, store); - 19cd4: 6804 ldr r4, [r0, #0] - 19cd6: fb02 fb0b mul.w fp, r2, fp + 19db4: 6804 ldr r4, [r0, #0] + 19db6: fb02 fb0b mul.w fp, r2, fp if(!globals.getStorageDebug()){ - 19cda: 07d9 lsls r1, r3, #31 - 19cdc: d521 bpl.n 19d22 - 19cde: 2100 movs r1, #0 - 19ce0: 48ab ldr r0, [pc, #684] ; (19f90 ) - 19ce2: f012 fc31 bl 2c548 - 19ce6: 48ab ldr r0, [pc, #684] ; (19f94 ) - 19ce8: f010 f8c4 bl 29e74 - 19cec: 2103 movs r1, #3 - 19cee: 48aa ldr r0, [pc, #680] ; (19f98 ) - 19cf0: f012 fc2a bl 2c548 - 19cf4: 2101 movs r1, #1 - 19cf6: 48a9 ldr r0, [pc, #676] ; (19f9c ) - 19cf8: f012 fc26 bl 2c548 - 19cfc: 2107 movs r1, #7 - 19cfe: 48a8 ldr r0, [pc, #672] ; (19fa0 ) - 19d00: f012 fc22 bl 2c548 - 19d04: 2101 movs r1, #1 - 19d06: 48a5 ldr r0, [pc, #660] ; (19f9c ) - 19d08: f012 fc1e bl 2c548 - 19d0c: 2108 movs r1, #8 - 19d0e: 48a5 ldr r0, [pc, #660] ; (19fa4 ) - 19d10: f012 fc1a bl 2c548 - 19d14: 2101 movs r1, #1 - 19d16: 48a1 ldr r0, [pc, #644] ; (19f9c ) - 19d18: f012 fc16 bl 2c548 + 19dba: 07d9 lsls r1, r3, #31 + 19dbc: d521 bpl.n 19e02 + 19dbe: 2100 movs r1, #0 + 19dc0: 48ab ldr r0, [pc, #684] ; (1a070 ) + 19dc2: f012 fc35 bl 2c630 + 19dc6: 48ab ldr r0, [pc, #684] ; (1a074 ) + 19dc8: f010 f8ca bl 29f60 + 19dcc: 2103 movs r1, #3 + 19dce: 48aa ldr r0, [pc, #680] ; (1a078 ) + 19dd0: f012 fc2e bl 2c630 + 19dd4: 2101 movs r1, #1 + 19dd6: 48a9 ldr r0, [pc, #676] ; (1a07c ) + 19dd8: f012 fc2a bl 2c630 + 19ddc: 2107 movs r1, #7 + 19dde: 48a8 ldr r0, [pc, #672] ; (1a080 ) + 19de0: f012 fc26 bl 2c630 + 19de4: 2101 movs r1, #1 + 19de6: 48a5 ldr r0, [pc, #660] ; (1a07c ) + 19de8: f012 fc22 bl 2c630 + 19dec: 2108 movs r1, #8 + 19dee: 48a5 ldr r0, [pc, #660] ; (1a084 ) + 19df0: f012 fc1e bl 2c630 + 19df4: 2101 movs r1, #1 + 19df6: 48a1 ldr r0, [pc, #644] ; (1a07c ) + 19df8: f012 fc1a bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 19d1c: f010 fc2a bl 2a574 - 19d20: 62a8 str r0, [r5, #40] ; 0x28 - 19d22: 4ea1 ldr r6, [pc, #644] ; (19fa8 ) - 19d24: 210f movs r1, #15 - 19d26: 48a1 ldr r0, [pc, #644] ; (19fac ) - 19d28: fa1f fb8b uxth.w fp, fp - 19d2c: f012 fc0c bl 2c548 + 19dfc: f010 fc2e bl 2a65c + 19e00: 62a8 str r0, [r5, #40] ; 0x28 + 19e02: 4ea1 ldr r6, [pc, #644] ; (1a088 ) + 19e04: 210f movs r1, #15 + 19e06: 48a1 ldr r0, [pc, #644] ; (1a08c ) + 19e08: fa1f fb8b uxth.w fp, fp + 19e0c: f012 fc10 bl 2c630 unsigned long n = sizeof(value)+start; - 19d30: f241 77fc movw r7, #6140 ; 0x17fc - 19d34: 6832 ldr r2, [r6, #0] - 19d36: f10b 0301 add.w r3, fp, #1 + 19e10: f241 77fc movw r7, #6140 ; 0x17fc + 19e14: 6832 ldr r2, [r6, #0] + 19e16: f10b 0301 add.w r3, fp, #1 STORAGE.get(address, file); - 19d3a: f105 0910 add.w r9, r5, #16 - 19d3e: ebab 0804 sub.w r8, fp, r4 - 19d42: 622a str r2, [r5, #32] - 19d44: eb0b 0207 add.w r2, fp, r7 - 19d48: f8df a264 ldr.w sl, [pc, #612] ; 19fb0 - 19d4c: 429a cmp r2, r3 - 19d4e: bf38 it cc - 19d50: 2701 movcc r7, #1 - 19d52: 4427 add r7, r4 - 19d54: e001 b.n 19d5a + 19e1a: f105 0910 add.w r9, r5, #16 + 19e1e: ebab 0804 sub.w r8, fp, r4 + 19e22: 622a str r2, [r5, #32] + 19e24: eb0b 0207 add.w r2, fp, r7 + 19e28: f8df a264 ldr.w sl, [pc, #612] ; 1a090 + 19e2c: 429a cmp r2, r3 + 19e2e: bf38 it cc + 19e30: 2701 movcc r7, #1 + 19e32: 4427 add r7, r4 + 19e34: e001 b.n 19e3a for (i=start;i + 19e36: 42bc cmp r4, r7 + 19e38: d013 beq.n 19e62 *p++ = (uint8_t) read(i); - 19d5a: eb04 0108 add.w r1, r4, r8 - 19d5e: 4648 mov r0, r9 - 19d60: f00b f9f4 bl 2514c - 19d64: f804 0b01 strb.w r0, [r4], #1 - 19d68: 6833 ldr r3, [r6, #0] + 19e3a: eb04 0108 add.w r1, r4, r8 + 19e3e: 4648 mov r0, r9 + 19e40: f00b f9fa bl 25238 + 19e44: f804 0b01 strb.w r0, [r4], #1 + 19e48: 6833 ldr r3, [r6, #0] operator unsigned long () const { return millis() - ms; } - 19d6a: 6a2a ldr r2, [r5, #32] - 19d6c: 1a9b subs r3, r3, r2 + 19e4a: 6a2a ldr r2, [r5, #32] + 19e4c: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 19d6e: 2bf9 cmp r3, #249 ; 0xf9 - 19d70: d9f1 bls.n 19d56 - 19d72: 2101 movs r1, #1 - 19d74: 4650 mov r0, sl - 19d76: f012 fbe7 bl 2c548 - 19d7a: 6833 ldr r3, [r6, #0] + 19e4e: 2bf9 cmp r3, #249 ; 0xf9 + 19e50: d9f1 bls.n 19e36 + 19e52: 2101 movs r1, #1 + 19e54: 4650 mov r0, sl + 19e56: f012 fbeb bl 2c630 + 19e5a: 6833 ldr r3, [r6, #0] for (i=start;i - 19d82: 2101 movs r1, #1 - 19d84: 488a ldr r0, [pc, #552] ; (19fb0 ) - 19d86: f012 fbdf bl 2c548 - 19d8a: 4882 ldr r0, [pc, #520] ; (19f94 ) - 19d8c: f010 f872 bl 29e74 - 19d90: 68eb ldr r3, [r5, #12] - 19d92: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 19e5e: 622b str r3, [r5, #32] + 19e60: d1eb bne.n 19e3a + 19e62: 2101 movs r1, #1 + 19e64: 488a ldr r0, [pc, #552] ; (1a090 ) + 19e66: f012 fbe3 bl 2c630 + 19e6a: 4882 ldr r0, [pc, #520] ; (1a074 ) + 19e6c: f010 f878 bl 29f60 + 19e70: 68eb ldr r3, [r5, #12] + 19e72: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 19d96: 07da lsls r2, r3, #31 - 19d98: d529 bpl.n 19dee - 19d9a: 2104 movs r1, #4 - 19d9c: 4885 ldr r0, [pc, #532] ; (19fb4 ) - 19d9e: f012 fbd3 bl 2c548 - 19da2: 2101 movs r1, #1 - 19da4: 487d ldr r0, [pc, #500] ; (19f9c ) - 19da6: f012 fbcf bl 2c548 + 19e76: 07da lsls r2, r3, #31 + 19e78: d529 bpl.n 19ece + 19e7a: 2104 movs r1, #4 + 19e7c: 4885 ldr r0, [pc, #532] ; (1a094 ) + 19e7e: f012 fbd7 bl 2c630 + 19e82: 2101 movs r1, #1 + 19e84: 487d ldr r0, [pc, #500] ; (1a07c ) + 19e86: f012 fbd3 bl 2c630 BMC_PRINTLN("took",((BMC_STORAGE_DEBUG_TIME_T()-debugTimer)/1000.0),"milliseconds"); - 19daa: f010 fbe3 bl 2a574 - 19dae: 6aab ldr r3, [r5, #40] ; 0x28 + 19e8a: f010 fbe7 bl 2a65c + 19e8e: 6aab ldr r3, [r5, #40] ; 0x28 size_t print(double n, int digits = 2) { return printFloat(n, digits); } - 19db0: 2102 movs r1, #2 - 19db2: 1ac3 subs r3, r0, r3 - 19db4: 4877 ldr r0, [pc, #476] ; (19f94 ) - 19db6: ee07 3a10 vmov s14, r3 - 19dba: ed9f 0b73 vldr d0, [pc, #460] ; 19f88 - 19dbe: eeb8 7b47 vcvt.f64.u32 d7, s14 - 19dc2: ee87 0b00 vdiv.f64 d0, d7, d0 - 19dc6: f010 f887 bl 29ed8 - 19dca: 2101 movs r1, #1 - 19dcc: 4873 ldr r0, [pc, #460] ; (19f9c ) - 19dce: f012 fbbb bl 2c548 - 19dd2: 210c movs r1, #12 - 19dd4: 4878 ldr r0, [pc, #480] ; (19fb8 ) - 19dd6: f012 fbb7 bl 2c548 + 19e90: 2102 movs r1, #2 + 19e92: 1ac3 subs r3, r0, r3 + 19e94: 4877 ldr r0, [pc, #476] ; (1a074 ) + 19e96: ee07 3a10 vmov s14, r3 + 19e9a: ed9f 0b73 vldr d0, [pc, #460] ; 1a068 + 19e9e: eeb8 7b47 vcvt.f64.u32 d7, s14 + 19ea2: ee87 0b00 vdiv.f64 d0, d7, d0 + 19ea6: f010 f88b bl 29fc0 + 19eaa: 2101 movs r1, #1 + 19eac: 4873 ldr r0, [pc, #460] ; (1a07c ) + 19eae: f012 fbbf bl 2c630 + 19eb2: 210c movs r1, #12 + 19eb4: 4878 ldr r0, [pc, #480] ; (1a098 ) + 19eb6: f012 fbbb bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 19dda: 486e ldr r0, [pc, #440] ; (19f94 ) - 19ddc: f010 f84a bl 29e74 - 19de0: 2100 movs r1, #0 - 19de2: 486b ldr r0, [pc, #428] ; (19f90 ) - 19de4: f012 fbb0 bl 2c548 - 19de8: 486a ldr r0, [pc, #424] ; (19f94 ) - 19dea: f010 f843 bl 29e74 + 19eba: 486e ldr r0, [pc, #440] ; (1a074 ) + 19ebc: f010 f850 bl 29f60 + 19ec0: 2100 movs r1, #0 + 19ec2: 486b ldr r0, [pc, #428] ; (1a070 ) + 19ec4: f012 fbb4 bl 2c630 + 19ec8: 486a ldr r0, [pc, #424] ; (1a074 ) + 19eca: f010 f849 bl 29f60 if(store.crc != BMC_CRC){ - 19dee: 682b ldr r3, [r5, #0] - 19df0: f644 14b0 movw r4, #18864 ; 0x49b0 - 19df4: 881b ldrh r3, [r3, #0] - 19df6: 42a3 cmp r3, r4 - 19df8: d10f bne.n 19e1a - 19dfa: 6b2a ldr r2, [r5, #48] ; 0x30 + 19ece: 682b ldr r3, [r5, #0] + 19ed0: f644 14b0 movw r4, #18864 ; 0x49b0 + 19ed4: 881b ldrh r3, [r3, #0] + 19ed6: 42a3 cmp r3, r4 + 19ed8: d10f bne.n 19efa + 19eda: 6b2a ldr r2, [r5, #48] ; 0x30 if(!flags.read(BMC_EDITOR_FLAG_EDITOR_INITIAL_SETUP)){ - 19dfc: 04d3 lsls r3, r2, #19 - 19dfe: f3c2 3400 ubfx r4, r2, #12, #1 - 19e02: d408 bmi.n 19e16 + 19edc: 04d3 lsls r3, r2, #19 + 19ede: f3c2 3400 ubfx r4, r2, #12, #1 + 19ee2: d408 bmi.n 19ef6 return (settings.data[0]>>14) & 0x0F; - 19e04: 68aa ldr r2, [r5, #8] + 19ee4: 68aa ldr r2, [r5, #8] if(settings.getDeviceId()!=deviceId){ - 19e06: f895 302d ldrb.w r3, [r5, #45] ; 0x2d - 19e0a: 6812 ldr r2, [r2, #0] - 19e0c: 6852 ldr r2, [r2, #4] - 19e0e: f3c2 3283 ubfx r2, r2, #14, #4 - 19e12: 4293 cmp r3, r2 - 19e14: d17e bne.n 19f14 - } - 19e16: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 19e1a: 2100 movs r1, #0 - 19e1c: 485c ldr r0, [pc, #368] ; (19f90 ) - 19e1e: f012 fb93 bl 2c548 - 19e22: 485c ldr r0, [pc, #368] ; (19f94 ) - 19e24: f010 f826 bl 29e74 - 19e28: 212e movs r1, #46 ; 0x2e - 19e2a: 4864 ldr r0, [pc, #400] ; (19fbc ) - 19e2c: f012 fb8c bl 2c548 - 19e30: 4858 ldr r0, [pc, #352] ; (19f94 ) - 19e32: f010 f81f bl 29e74 - 19e36: 212e movs r1, #46 ; 0x2e - 19e38: 4860 ldr r0, [pc, #384] ; (19fbc ) - 19e3a: f012 fb85 bl 2c548 - 19e3e: 4855 ldr r0, [pc, #340] ; (19f94 ) - 19e40: f010 f818 bl 29e74 - 19e44: 210c movs r1, #12 - 19e46: 485e ldr r0, [pc, #376] ; (19fc0 ) - 19e48: f012 fb7e bl 2c548 - 19e4c: 2101 movs r1, #1 - 19e4e: 4853 ldr r0, [pc, #332] ; (19f9c ) - 19e50: f012 fb7a bl 2c548 + 19ee6: f895 302d ldrb.w r3, [r5, #45] ; 0x2d + 19eea: 6812 ldr r2, [r2, #0] + 19eec: 6852 ldr r2, [r2, #4] + 19eee: f3c2 3283 ubfx r2, r2, #14, #4 + 19ef2: 4293 cmp r3, r2 + 19ef4: d17e bne.n 19ff4 + } + 19ef6: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 19efa: 2100 movs r1, #0 + 19efc: 485c ldr r0, [pc, #368] ; (1a070 ) + 19efe: f012 fb97 bl 2c630 + 19f02: 485c ldr r0, [pc, #368] ; (1a074 ) + 19f04: f010 f82c bl 29f60 + 19f08: 212e movs r1, #46 ; 0x2e + 19f0a: 4864 ldr r0, [pc, #400] ; (1a09c ) + 19f0c: f012 fb90 bl 2c630 + 19f10: 4858 ldr r0, [pc, #352] ; (1a074 ) + 19f12: f010 f825 bl 29f60 + 19f16: 212e movs r1, #46 ; 0x2e + 19f18: 4860 ldr r0, [pc, #384] ; (1a09c ) + 19f1a: f012 fb89 bl 2c630 + 19f1e: 4855 ldr r0, [pc, #340] ; (1a074 ) + 19f20: f010 f81e bl 29f60 + 19f24: 210c movs r1, #12 + 19f26: 485e ldr r0, [pc, #376] ; (1a0a0 ) + 19f28: f012 fb82 bl 2c630 + 19f2c: 2101 movs r1, #1 + 19f2e: 4853 ldr r0, [pc, #332] ; (1a07c ) + 19f30: f012 fb7e bl 2c630 size_t print(int n) { return print((long)n); } - 19e54: 4659 mov r1, fp - 19e56: 484f ldr r0, [pc, #316] ; (19f94 ) - 19e58: f010 f800 bl 29e5c - 19e5c: 2101 movs r1, #1 - 19e5e: 484f ldr r0, [pc, #316] ; (19f9c ) - 19e60: f012 fb72 bl 2c548 - 19e64: 2111 movs r1, #17 - 19e66: 4857 ldr r0, [pc, #348] ; (19fc4 ) - 19e68: f012 fb6e bl 2c548 + 19f34: 4659 mov r1, fp + 19f36: 484f ldr r0, [pc, #316] ; (1a074 ) + 19f38: f010 f806 bl 29f48 + 19f3c: 2101 movs r1, #1 + 19f3e: 484f ldr r0, [pc, #316] ; (1a07c ) + 19f40: f012 fb76 bl 2c630 + 19f44: 2111 movs r1, #17 + 19f46: 4857 ldr r0, [pc, #348] ; (1a0a4 ) + 19f48: f012 fb72 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 19e6c: 4849 ldr r0, [pc, #292] ; (19f94 ) - 19e6e: f010 f801 bl 29e74 - 19e72: 210a movs r1, #10 - 19e74: 4854 ldr r0, [pc, #336] ; (19fc8 ) - 19e76: f012 fb67 bl 2c548 - 19e7a: 2101 movs r1, #1 - 19e7c: 4847 ldr r0, [pc, #284] ; (19f9c ) - 19e7e: f012 fb63 bl 2c548 + 19f4c: 4849 ldr r0, [pc, #292] ; (1a074 ) + 19f4e: f010 f807 bl 29f60 + 19f52: 210a movs r1, #10 + 19f54: 4854 ldr r0, [pc, #336] ; (1a0a8 ) + 19f56: f012 fb6b bl 2c630 + 19f5a: 2101 movs r1, #1 + 19f5c: 4847 ldr r0, [pc, #284] ; (1a07c ) + 19f5e: f012 fb67 bl 2c630 BMC_PRINTLN("store.crc:",store.crc,", BMC_CRC:",BMC_CRC); - 19e82: 682b ldr r3, [r5, #0] + 19f62: 682b ldr r3, [r5, #0] size_t print(int n) { return print((long)n); } - 19e84: 4843 ldr r0, [pc, #268] ; (19f94 ) - 19e86: 8819 ldrh r1, [r3, #0] - 19e88: f00f ffe8 bl 29e5c - 19e8c: 2101 movs r1, #1 - 19e8e: 4843 ldr r0, [pc, #268] ; (19f9c ) - 19e90: f012 fb5a bl 2c548 - 19e94: 210a movs r1, #10 - 19e96: 484d ldr r0, [pc, #308] ; (19fcc ) - 19e98: f012 fb56 bl 2c548 - 19e9c: 2101 movs r1, #1 - 19e9e: 483f ldr r0, [pc, #252] ; (19f9c ) - 19ea0: f012 fb52 bl 2c548 - 19ea4: 4621 mov r1, r4 - 19ea6: 483b ldr r0, [pc, #236] ; (19f94 ) - 19ea8: f00f ffd8 bl 29e5c + 19f64: 4843 ldr r0, [pc, #268] ; (1a074 ) + 19f66: 8819 ldrh r1, [r3, #0] + 19f68: f00f ffee bl 29f48 + 19f6c: 2101 movs r1, #1 + 19f6e: 4843 ldr r0, [pc, #268] ; (1a07c ) + 19f70: f012 fb5e bl 2c630 + 19f74: 210a movs r1, #10 + 19f76: 484d ldr r0, [pc, #308] ; (1a0ac ) + 19f78: f012 fb5a bl 2c630 + 19f7c: 2101 movs r1, #1 + 19f7e: 483f ldr r0, [pc, #252] ; (1a07c ) + 19f80: f012 fb56 bl 2c630 + 19f84: 4621 mov r1, r4 + 19f86: 483b ldr r0, [pc, #236] ; (1a074 ) + 19f88: f00f ffde bl 29f48 size_t println(int n) { return print(n) + println(); } - 19eac: 4839 ldr r0, [pc, #228] ; (19f94 ) - 19eae: f00f ffe1 bl 29e74 - 19eb2: 210c movs r1, #12 - 19eb4: 4842 ldr r0, [pc, #264] ; (19fc0 ) - 19eb6: f012 fb47 bl 2c548 - 19eba: 2101 movs r1, #1 - 19ebc: 4837 ldr r0, [pc, #220] ; (19f9c ) - 19ebe: f012 fb43 bl 2c548 + 19f8c: 4839 ldr r0, [pc, #228] ; (1a074 ) + 19f8e: f00f ffe7 bl 29f60 + 19f92: 210c movs r1, #12 + 19f94: 4842 ldr r0, [pc, #264] ; (1a0a0 ) + 19f96: f012 fb4b bl 2c630 + 19f9a: 2101 movs r1, #1 + 19f9c: 4837 ldr r0, [pc, #220] ; (1a07c ) + 19f9e: f012 fb47 bl 2c630 size_t print(int n) { return print((long)n); } - 19ec2: 4659 mov r1, fp - 19ec4: 4833 ldr r0, [pc, #204] ; (19f94 ) - 19ec6: f00f ffc9 bl 29e5c - 19eca: 2101 movs r1, #1 - 19ecc: 4833 ldr r0, [pc, #204] ; (19f9c ) - 19ece: f012 fb3b bl 2c548 - 19ed2: 2110 movs r1, #16 - 19ed4: 483e ldr r0, [pc, #248] ; (19fd0 ) - 19ed6: f012 fb37 bl 2c548 + 19fa2: 4659 mov r1, fp + 19fa4: 4833 ldr r0, [pc, #204] ; (1a074 ) + 19fa6: f00f ffcf bl 29f48 + 19faa: 2101 movs r1, #1 + 19fac: 4833 ldr r0, [pc, #204] ; (1a07c ) + 19fae: f012 fb3f bl 2c630 + 19fb2: 2110 movs r1, #16 + 19fb4: 483e ldr r0, [pc, #248] ; (1a0b0 ) + 19fb6: f012 fb3b bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 19eda: 482e ldr r0, [pc, #184] ; (19f94 ) - 19edc: f00f ffca bl 29e74 - 19ee0: 212e movs r1, #46 ; 0x2e - 19ee2: 4836 ldr r0, [pc, #216] ; (19fbc ) - 19ee4: f012 fb30 bl 2c548 - 19ee8: 482a ldr r0, [pc, #168] ; (19f94 ) - 19eea: f00f ffc3 bl 29e74 - 19eee: 212e movs r1, #46 ; 0x2e - 19ef0: 4832 ldr r0, [pc, #200] ; (19fbc ) - 19ef2: f012 fb29 bl 2c548 - 19ef6: 4827 ldr r0, [pc, #156] ; (19f94 ) - 19ef8: f00f ffbc bl 29e74 - 19efc: 2100 movs r1, #0 - 19efe: 4824 ldr r0, [pc, #144] ; (19f90 ) - 19f00: f012 fb22 bl 2c548 - 19f04: 4823 ldr r0, [pc, #140] ; (19f94 ) - 19f06: f00f ffb5 bl 29e74 + 19fba: 482e ldr r0, [pc, #184] ; (1a074 ) + 19fbc: f00f ffd0 bl 29f60 + 19fc0: 212e movs r1, #46 ; 0x2e + 19fc2: 4836 ldr r0, [pc, #216] ; (1a09c ) + 19fc4: f012 fb34 bl 2c630 + 19fc8: 482a ldr r0, [pc, #168] ; (1a074 ) + 19fca: f00f ffc9 bl 29f60 + 19fce: 212e movs r1, #46 ; 0x2e + 19fd0: 4832 ldr r0, [pc, #200] ; (1a09c ) + 19fd2: f012 fb2d bl 2c630 + 19fd6: 4827 ldr r0, [pc, #156] ; (1a074 ) + 19fd8: f00f ffc2 bl 29f60 + 19fdc: 2100 movs r1, #0 + 19fde: 4824 ldr r0, [pc, #144] ; (1a070 ) + 19fe0: f012 fb26 bl 2c630 + 19fe4: 4823 ldr r0, [pc, #140] ; (1a074 ) + 19fe6: f00f ffbb bl 29f60 storeErase(true); - 19f0a: 4628 mov r0, r5 + 19fea: 4628 mov r0, r5 } - 19f0c: e8bd 4ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 19fec: e8bd 4ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} storeErase(true); - 19f10: f7ff bcc2 b.w 19898 - 19f14: 2117 movs r1, #23 - 19f16: 482f ldr r0, [pc, #188] ; (19fd4 ) - 19f18: f012 fb16 bl 2c548 - 19f1c: 2101 movs r1, #1 - 19f1e: 481f ldr r0, [pc, #124] ; (19f9c ) - 19f20: f012 fb12 bl 2c548 - 19f24: 68a9 ldr r1, [r5, #8] + 19ff0: f7ff bcc2 b.w 19978 + 19ff4: 2117 movs r1, #23 + 19ff6: 482f ldr r0, [pc, #188] ; (1a0b4 ) + 19ff8: f012 fb1a bl 2c630 + 19ffc: 2101 movs r1, #1 + 19ffe: 481f ldr r0, [pc, #124] ; (1a07c ) + 1a000: f012 fb16 bl 2c630 + 1a004: 68a9 ldr r1, [r5, #8] size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 19f26: 4623 mov r3, r4 - 19f28: 220a movs r2, #10 - 19f2a: 6809 ldr r1, [r1, #0] - 19f2c: 4819 ldr r0, [pc, #100] ; (19f94 ) - 19f2e: 6849 ldr r1, [r1, #4] - 19f30: f3c1 3183 ubfx r1, r1, #14, #4 - 19f34: f00f ffba bl 29eac - 19f38: 2101 movs r1, #1 - 19f3a: 4818 ldr r0, [pc, #96] ; (19f9c ) - 19f3c: f012 fb04 bl 2c548 - 19f40: 2102 movs r1, #2 - 19f42: 4825 ldr r0, [pc, #148] ; (19fd8 ) - 19f44: f012 fb00 bl 2c548 - 19f48: 2101 movs r1, #1 - 19f4a: 4814 ldr r0, [pc, #80] ; (19f9c ) - 19f4c: f012 fafc bl 2c548 - 19f50: 4623 mov r3, r4 - 19f52: f895 102d ldrb.w r1, [r5, #45] ; 0x2d - 19f56: 220a movs r2, #10 - 19f58: 480e ldr r0, [pc, #56] ; (19f94 ) - 19f5a: f00f ffa7 bl 29eac + 1a006: 4623 mov r3, r4 + 1a008: 220a movs r2, #10 + 1a00a: 6809 ldr r1, [r1, #0] + 1a00c: 4819 ldr r0, [pc, #100] ; (1a074 ) + 1a00e: 6849 ldr r1, [r1, #4] + 1a010: f3c1 3183 ubfx r1, r1, #14, #4 + 1a014: f00f ffc0 bl 29f98 + 1a018: 2101 movs r1, #1 + 1a01a: 4818 ldr r0, [pc, #96] ; (1a07c ) + 1a01c: f012 fb08 bl 2c630 + 1a020: 2102 movs r1, #2 + 1a022: 4825 ldr r0, [pc, #148] ; (1a0b8 ) + 1a024: f012 fb04 bl 2c630 + 1a028: 2101 movs r1, #1 + 1a02a: 4814 ldr r0, [pc, #80] ; (1a07c ) + 1a02c: f012 fb00 bl 2c630 + 1a030: 4623 mov r3, r4 + 1a032: f895 102d ldrb.w r1, [r5, #45] ; 0x2d + 1a036: 220a movs r2, #10 + 1a038: 480e ldr r0, [pc, #56] ; (1a074 ) + 1a03a: f00f ffad bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 19f5e: 480d ldr r0, [pc, #52] ; (19f94 ) - 19f60: f00f ff88 bl 29e74 + 1a03e: 480d ldr r0, [pc, #52] ; (1a074 ) + 1a040: f00f ff8e bl 29f60 BMC_WRITE_BITS(settings.data[0],value,0x0F,14); - 19f64: 68aa ldr r2, [r5, #8] - 19f66: f895 302d ldrb.w r3, [r5, #45] ; 0x2d + 1a044: 68aa ldr r2, [r5, #8] + 1a046: f895 302d ldrb.w r3, [r5, #45] ; 0x2d saveSettings(); - 19f6a: 4628 mov r0, r5 - 19f6c: 6811 ldr r1, [r2, #0] - 19f6e: 039b lsls r3, r3, #14 - 19f70: 684a ldr r2, [r1, #4] - 19f72: f403 3370 and.w r3, r3, #245760 ; 0x3c000 - 19f76: f422 3270 bic.w r2, r2, #245760 ; 0x3c000 - 19f7a: 4313 orrs r3, r2 - 19f7c: 604b str r3, [r1, #4] - 19f7e: f7ff fb93 bl 196a8 - } - 19f82: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 19f86: bf00 nop - 19f88: 00000000 .word 0x00000000 - 19f8c: 408f4000 .word 0x408f4000 - 19f90: 20003c58 .word 0x20003c58 - 19f94: 20004ba8 .word 0x20004ba8 - 19f98: 200036c8 .word 0x200036c8 - 19f9c: 200023ec .word 0x200023ec - 19fa0: 20003b9c .word 0x20003b9c - 19fa4: 20003e10 .word 0x20003e10 - 19fa8: 2000bae8 .word 0x2000bae8 - 19fac: 20003ba4 .word 0x20003ba4 - 19fb0: 200030b8 .word 0x200030b8 - 19fb4: 20003e38 .word 0x20003e38 - 19fb8: 20003e40 .word 0x20003e40 - 19fbc: 20003ff4 .word 0x20003ff4 - 19fc0: 20004024 .word 0x20004024 - 19fc4: 20004034 .word 0x20004034 - 19fc8: 200032e0 .word 0x200032e0 - 19fcc: 20004048 .word 0x20004048 - 19fd0: 20004054 .word 0x20004054 - 19fd4: 20004068 .word 0x20004068 - 19fd8: 200031b8 .word 0x200031b8 - -00019fdc : + 1a04a: 4628 mov r0, r5 + 1a04c: 6811 ldr r1, [r2, #0] + 1a04e: 039b lsls r3, r3, #14 + 1a050: 684a ldr r2, [r1, #4] + 1a052: f403 3370 and.w r3, r3, #245760 ; 0x3c000 + 1a056: f422 3270 bic.w r2, r2, #245760 ; 0x3c000 + 1a05a: 4313 orrs r3, r2 + 1a05c: 604b str r3, [r1, #4] + 1a05e: f7ff fb93 bl 19788 + } + 1a062: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1a066: bf00 nop + 1a068: 00000000 .word 0x00000000 + 1a06c: 408f4000 .word 0x408f4000 + 1a070: 20003d18 .word 0x20003d18 + 1a074: 20004c68 .word 0x20004c68 + 1a078: 20003788 .word 0x20003788 + 1a07c: 200023ec .word 0x200023ec + 1a080: 20003c5c .word 0x20003c5c + 1a084: 20003ed0 .word 0x20003ed0 + 1a088: 2000bb08 .word 0x2000bb08 + 1a08c: 20003c64 .word 0x20003c64 + 1a090: 20003150 .word 0x20003150 + 1a094: 20003ef8 .word 0x20003ef8 + 1a098: 20003f00 .word 0x20003f00 + 1a09c: 200040b4 .word 0x200040b4 + 1a0a0: 200040e4 .word 0x200040e4 + 1a0a4: 200040f4 .word 0x200040f4 + 1a0a8: 200033a0 .word 0x200033a0 + 1a0ac: 20004108 .word 0x20004108 + 1a0b0: 20004114 .word 0x20004114 + 1a0b4: 20004128 .word 0x20004128 + 1a0b8: 20003250 .word 0x20003250 + +0001a0bc : BMCEditor::BMCEditor(bmcStore& t_store, - 19fdc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1a0bc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} settings(t_settings), - 19fe0: e9c0 2301 strd r2, r3, [r0, #4] + 1a0c0: e9c0 2301 strd r2, r3, [r0, #4] BMCEditor::BMCEditor(bmcStore& t_store, - 19fe4: b085 sub sp, #20 + 1a0c4: b085 sub sp, #20 store(t_store), - 19fe6: 6001 str r1, [r0, #0] + 1a0c6: 6001 str r1, [r0, #0] storage(midi.globals), - 19fe8: f8d2 1108 ldr.w r1, [r2, #264] ; 0x108 + 1a0c8: f8d2 1108 ldr.w r1, [r2, #264] ; 0x108 BMCStorage(BMCGlobals& t_globals):globals(t_globals),STORAGE(kbits_256, 1, 32, BMC_24LC256_ADDRESS){} - 19fec: 2250 movs r2, #80 ; 0x50 + 1a0cc: 2250 movs r2, #80 ; 0x50 BMCEditor::BMCEditor(bmcStore& t_store, - 19fee: 4604 mov r4, r0 - 19ff0: 2320 movs r3, #32 - 19ff2: 60c1 str r1, [r0, #12] - 19ff4: f44f 7180 mov.w r1, #256 ; 0x100 - 19ff8: 9200 str r2, [sp, #0] - 19ffa: 3010 adds r0, #16 - 19ffc: 2201 movs r2, #1 - 19ffe: 9e0e ldr r6, [sp, #56] ; 0x38 - 1a000: f00a ff36 bl 24e70 - 1a004: 4bda ldr r3, [pc, #872] ; (1a370 ) - 1a006: 2500 movs r5, #0 + 1a0ce: 4604 mov r4, r0 + 1a0d0: 2320 movs r3, #32 + 1a0d2: 60c1 str r1, [r0, #12] + 1a0d4: f44f 7180 mov.w r1, #256 ; 0x100 + 1a0d8: 9200 str r2, [sp, #0] + 1a0da: 3010 adds r0, #16 + 1a0dc: 2201 movs r2, #1 + 1a0de: 9e0e ldr r6, [sp, #56] ; 0x38 + 1a0e0: f00a ff3c bl 24f5c + 1a0e4: 4bda ldr r3, [pc, #872] ; (1a450 ) + 1a0e6: 2500 movs r5, #0 incoming(midi.message), - 1a008: 6862 ldr r2, [r4, #4] - 1a00a: 681b ldr r3, [r3, #0] + 1a0e8: 6862 ldr r2, [r4, #4] + 1a0ea: 681b ldr r3, [r3, #0] messenger(t_messenger) - 1a00c: f04f 0801 mov.w r8, #1 - 1a010: 6426 str r6, [r4, #64] ; 0x40 - 1a012: 4629 mov r1, r5 - 1a014: 4ed7 ldr r6, [pc, #860] ; (1a374 ) - 1a016: f104 0048 add.w r0, r4, #72 ; 0x48 + 1a0ec: f04f 0801 mov.w r8, #1 + 1a0f0: 6426 str r6, [r4, #64] ; 0x40 + 1a0f2: 4629 mov r1, r5 + 1a0f4: 4ed7 ldr r6, [pc, #860] ; (1a454 ) + 1a0f6: f104 0048 add.w r0, r4, #72 ; 0x48 incoming(midi.message), - 1a01a: 9202 str r2, [sp, #8] + 1a0fa: 9202 str r2, [sp, #8] struct __attribute__ ((packed)) BMCMidiControl { - 1a01c: 6365 str r5, [r4, #52] ; 0x34 + 1a0fc: 6365 str r5, [r4, #52] ; 0x34 messenger(t_messenger) - 1a01e: f106 0748 add.w r7, r6, #72 ; 0x48 - 1a022: 8725 strh r5, [r4, #56] ; 0x38 - 1a024: f884 503a strb.w r5, [r4, #58] ; 0x3a + 1a0fe: f106 0748 add.w r7, r6, #72 ; 0x48 + 1a102: 8725 strh r5, [r4, #56] ; 0x38 + 1a104: f884 503a strb.w r5, [r4, #58] ; 0x3a incoming(midi.message), - 1a028: 63e2 str r2, [r4, #60] ; 0x3c + 1a108: 63e2 str r2, [r4, #60] ; 0x3c messenger(t_messenger) - 1a02a: f44f 6293 mov.w r2, #1176 ; 0x498 + 1a10a: f44f 6293 mov.w r2, #1176 ; 0x498 struct BMCEditorMidiFlags { - 1a02e: f884 5044 strb.w r5, [r4, #68] ; 0x44 - 1a032: f884 5045 strb.w r5, [r4, #69] ; 0x45 - 1a036: f884 5046 strb.w r5, [r4, #70] ; 0x46 + 1a10e: f884 5044 strb.w r5, [r4, #68] ; 0x44 + 1a112: f884 5045 strb.w r5, [r4, #69] ; 0x45 + 1a116: f884 5046 strb.w r5, [r4, #70] ; 0x46 elapsedMillis(void) { ms = millis(); } - 1a03a: e9c4 3509 strd r3, r5, [r4, #36] ; 0x24 - 1a03e: 232a movs r3, #42 ; 0x2a + 1a11a: e9c4 3509 strd r3, r5, [r4, #36] ; 0x24 + 1a11e: 232a movs r3, #42 ; 0x2a class BMCFlags { - 1a040: e9c4 850b strd r8, r5, [r4, #44] ; 0x2c - 1a044: f884 3047 strb.w r3, [r4, #71] ; 0x47 - 1a048: f014 fa20 bl 2e48c - 1a04c: 8f33 ldrh r3, [r6, #56] ; 0x38 - 1a04e: 6b70 ldr r0, [r6, #52] ; 0x34 - 1a050: f106 0c80 add.w ip, r6, #128 ; 0x80 - 1a054: f8a4 304d strh.w r3, [r4, #77] ; 0x4d - 1a058: 4bc7 ldr r3, [pc, #796] ; (1a378 ) - 1a05a: f8c4 0049 str.w r0, [r4, #73] ; 0x49 - 1a05e: 65e3 str r3, [r4, #92] ; 0x5c - 1a060: f8c4 504f str.w r5, [r4, #79] ; 0x4f - 1a064: f8c4 5053 str.w r5, [r4, #83] ; 0x53 - 1a068: f8c4 5057 str.w r5, [r4, #87] ; 0x57 - 1a06c: f884 505b strb.w r5, [r4, #91] ; 0x5b - 1a070: f106 0564 add.w r5, r6, #100 ; 0x64 - 1a074: f884 8048 strb.w r8, [r4, #72] ; 0x48 - 1a078: cf0f ldmia r7!, {r0, r1, r2, r3} - 1a07a: f8c4 0063 str.w r0, [r4, #99] ; 0x63 - 1a07e: f8c4 1067 str.w r1, [r4, #103] ; 0x67 - 1a082: f8c4 306f str.w r3, [r4, #111] ; 0x6f - 1a086: f8c4 206b str.w r2, [r4, #107] ; 0x6b - 1a08a: cf03 ldmia r7!, {r0, r1} - 1a08c: 883b ldrh r3, [r7, #0] - 1a08e: f204 1727 addw r7, r4, #295 ; 0x127 - 1a092: f8c4 0073 str.w r0, [r4, #115] ; 0x73 - 1a096: f8c4 1077 str.w r1, [r4, #119] ; 0x77 - 1a09a: f8a4 307b strh.w r3, [r4, #123] ; 0x7b - 1a09e: cd0f ldmia r5!, {r0, r1, r2, r3} - 1a0a0: f8c4 2088 str.w r2, [r4, #136] ; 0x88 - 1a0a4: f8c4 308c str.w r3, [r4, #140] ; 0x8c - 1a0a8: f8c4 0080 str.w r0, [r4, #128] ; 0x80 - 1a0ac: f8c4 1084 str.w r1, [r4, #132] ; 0x84 - 1a0b0: cd03 ldmia r5!, {r0, r1} - 1a0b2: 782b ldrb r3, [r5, #0] - 1a0b4: f106 05f0 add.w r5, r6, #240 ; 0xf0 - 1a0b8: f8c4 0090 str.w r0, [r4, #144] ; 0x90 - 1a0bc: f8c4 1094 str.w r1, [r4, #148] ; 0x94 - 1a0c0: f884 3098 strb.w r3, [r4, #152] ; 0x98 - 1a0c4: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} - 1a0c8: f8c4 009c str.w r0, [r4, #156] ; 0x9c - 1a0cc: f8c4 10a0 str.w r1, [r4, #160] ; 0xa0 - 1a0d0: f8c4 20a4 str.w r2, [r4, #164] ; 0xa4 - 1a0d4: 2255 movs r2, #85 ; 0x55 - 1a0d6: f8c4 30a8 str.w r3, [r4, #168] ; 0xa8 - 1a0da: e8bc 0003 ldmia.w ip!, {r0, r1} - 1a0de: f8c4 00ac str.w r0, [r4, #172] ; 0xac - 1a0e2: f104 00b5 add.w r0, r4, #181 ; 0xb5 - 1a0e6: f8c4 10b0 str.w r1, [r4, #176] ; 0xb0 - 1a0ea: f106 0198 add.w r1, r6, #152 ; 0x98 - 1a0ee: f010 fb0b bl 2a708 - 1a0f2: f506 7c86 add.w ip, r6, #268 ; 0x10c - 1a0f6: f506 769e add.w r6, r6, #316 ; 0x13c - 1a0fa: f884 8125 strb.w r8, [r4, #293] ; 0x125 - 1a0fe: cd0f ldmia r5!, {r0, r1, r2, r3} - 1a100: f8c4 010b str.w r0, [r4, #267] ; 0x10b - 1a104: f8c4 110f str.w r1, [r4, #271] ; 0x10f - 1a108: f8c4 3117 str.w r3, [r4, #279] ; 0x117 - 1a10c: f8c4 2113 str.w r2, [r4, #275] ; 0x113 - 1a110: cd03 ldmia r5!, {r0, r1} - 1a112: 782b ldrb r3, [r5, #0] - 1a114: f8c4 011b str.w r0, [r4, #283] ; 0x11b - 1a118: f8c4 111f str.w r1, [r4, #287] ; 0x11f - 1a11c: f884 3123 strb.w r3, [r4, #291] ; 0x123 - 1a120: 4665 mov r5, ip - 1a122: 3710 adds r7, #16 - 1a124: f10c 0c10 add.w ip, ip, #16 - 1a128: cd0f ldmia r5!, {r0, r1, r2, r3} - 1a12a: 42b5 cmp r5, r6 - 1a12c: f847 0c10 str.w r0, [r7, #-16] - 1a130: f847 1c0c str.w r1, [r7, #-12] - 1a134: f847 2c08 str.w r2, [r7, #-8] - 1a138: f847 3c04 str.w r3, [r7, #-4] - 1a13c: d1f0 bne.n 1a120 - 1a13e: f8bc 3004 ldrh.w r3, [ip, #4] - 1a142: f8dc 0000 ldr.w r0, [ip] - 1a146: 80bb strh r3, [r7, #4] - 1a148: f04f 0301 mov.w r3, #1 - 1a14c: 4d8b ldr r5, [pc, #556] ; (1a37c ) - 1a14e: 6038 str r0, [r7, #0] - 1a150: f884 3179 strb.w r3, [r4, #377] ; 0x179 - 1a154: cd0f ldmia r5!, {r0, r1, r2, r3} - 1a156: f8c4 015e str.w r0, [r4, #350] ; 0x15e - 1a15a: f8c4 1162 str.w r1, [r4, #354] ; 0x162 - 1a15e: f8c4 316a str.w r3, [r4, #362] ; 0x16a - 1a162: f8c4 2166 str.w r2, [r4, #358] ; 0x166 - 1a166: cd03 ldmia r5!, {r0, r1} - 1a168: 46ac mov ip, r5 - 1a16a: f8c4 016e str.w r0, [r4, #366] ; 0x16e - 1a16e: f8c4 1172 str.w r1, [r4, #370] ; 0x172 - 1a172: f105 0b20 add.w fp, r5, #32 - 1a176: f83c 3b04 ldrh.w r3, [ip], #4 - 1a17a: f105 0a3c add.w sl, r5, #60 ; 0x3c - 1a17e: f105 0958 add.w r9, r5, #88 ; 0x58 - 1a182: f105 0674 add.w r6, r5, #116 ; 0x74 - 1a186: f8a4 3176 strh.w r3, [r4, #374] ; 0x176 - 1a18a: f105 03ac add.w r3, r5, #172 ; 0xac - 1a18e: f105 0890 add.w r8, r5, #144 ; 0x90 - 1a192: f105 0ec4 add.w lr, r5, #196 ; 0xc4 - 1a196: 9303 str r3, [sp, #12] - 1a198: f105 07e0 add.w r7, r5, #224 ; 0xe0 - 1a19c: 35fc adds r5, #252 ; 0xfc - 1a19e: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} - 1a1a2: f8c4 017b str.w r0, [r4, #379] ; 0x17b - 1a1a6: f8c4 117f str.w r1, [r4, #383] ; 0x17f - 1a1aa: f8c4 2183 str.w r2, [r4, #387] ; 0x183 - 1a1ae: f8c4 3187 str.w r3, [r4, #391] ; 0x187 - 1a1b2: e8bc 0003 ldmia.w ip!, {r0, r1} - 1a1b6: f8c4 018b str.w r0, [r4, #395] ; 0x18b - 1a1ba: f8c4 118f str.w r1, [r4, #399] ; 0x18f - 1a1be: f8bc 3000 ldrh.w r3, [ip] - 1a1c2: f04f 0c01 mov.w ip, #1 - 1a1c6: f8a4 3193 strh.w r3, [r4, #403] ; 0x193 - 1a1ca: f884 c196 strb.w ip, [r4, #406] ; 0x196 - 1a1ce: f884 c1b2 strb.w ip, [r4, #434] ; 0x1b2 - 1a1d2: f884 c1ce strb.w ip, [r4, #462] ; 0x1ce - 1a1d6: e8bb 000f ldmia.w fp!, {r0, r1, r2, r3} - 1a1da: f8c4 0198 str.w r0, [r4, #408] ; 0x198 - 1a1de: f8c4 119c str.w r1, [r4, #412] ; 0x19c - 1a1e2: f8c4 31a4 str.w r3, [r4, #420] ; 0x1a4 - 1a1e6: f8c4 21a0 str.w r2, [r4, #416] ; 0x1a0 - 1a1ea: e8bb 0003 ldmia.w fp!, {r0, r1} - 1a1ee: f89b 3000 ldrb.w r3, [fp] - 1a1f2: f8c4 01a8 str.w r0, [r4, #424] ; 0x1a8 - 1a1f6: f8c4 11ac str.w r1, [r4, #428] ; 0x1ac - 1a1fa: f884 31b0 strb.w r3, [r4, #432] ; 0x1b0 - 1a1fe: e8ba 000f ldmia.w sl!, {r0, r1, r2, r3} - 1a202: f8c4 01b4 str.w r0, [r4, #436] ; 0x1b4 - 1a206: f8c4 11b8 str.w r1, [r4, #440] ; 0x1b8 - 1a20a: f8c4 31c0 str.w r3, [r4, #448] ; 0x1c0 - 1a20e: f8c4 21bc str.w r2, [r4, #444] ; 0x1bc - 1a212: e8ba 0003 ldmia.w sl!, {r0, r1} - 1a216: f89a 3000 ldrb.w r3, [sl] - 1a21a: f8c4 01c4 str.w r0, [r4, #452] ; 0x1c4 - 1a21e: f8c4 11c8 str.w r1, [r4, #456] ; 0x1c8 - 1a222: f884 31cc strb.w r3, [r4, #460] ; 0x1cc - 1a226: e8b9 000f ldmia.w r9!, {r0, r1, r2, r3} - 1a22a: f8c4 01d0 str.w r0, [r4, #464] ; 0x1d0 - 1a22e: f8c4 11d4 str.w r1, [r4, #468] ; 0x1d4 - 1a232: f8c4 31dc str.w r3, [r4, #476] ; 0x1dc - 1a236: f8c4 21d8 str.w r2, [r4, #472] ; 0x1d8 - 1a23a: e8b9 0003 ldmia.w r9!, {r0, r1} - 1a23e: f899 3000 ldrb.w r3, [r9] - 1a242: f04f 0904 mov.w r9, #4 - 1a246: f8c4 01e0 str.w r0, [r4, #480] ; 0x1e0 - 1a24a: f8c4 11e4 str.w r1, [r4, #484] ; 0x1e4 - 1a24e: f884 31e8 strb.w r3, [r4, #488] ; 0x1e8 - 1a252: ce0f ldmia r6!, {r0, r1, r2, r3} - 1a254: f8c4 01ea str.w r0, [r4, #490] ; 0x1ea - 1a258: f8c4 11ee str.w r1, [r4, #494] ; 0x1ee - 1a25c: f8c4 31f6 str.w r3, [r4, #502] ; 0x1f6 - 1a260: f8c4 21f2 str.w r2, [r4, #498] ; 0x1f2 - 1a264: ce03 ldmia r6!, {r0, r1} - 1a266: 8833 ldrh r3, [r6, #0] - 1a268: f8c4 01fa str.w r0, [r4, #506] ; 0x1fa - 1a26c: f8a4 3202 strh.w r3, [r4, #514] ; 0x202 - 1a270: 78b3 ldrb r3, [r6, #2] - 1a272: f8c4 11fe str.w r1, [r4, #510] ; 0x1fe - 1a276: f884 3204 strb.w r3, [r4, #516] ; 0x204 - 1a27a: e8b8 000f ldmia.w r8!, {r0, r1, r2, r3} - 1a27e: f8c4 0207 str.w r0, [r4, #519] ; 0x207 - 1a282: f8c4 120b str.w r1, [r4, #523] ; 0x20b - 1a286: 9e03 ldr r6, [sp, #12] - 1a288: f8c4 3213 str.w r3, [r4, #531] ; 0x213 - 1a28c: f8c4 220f str.w r2, [r4, #527] ; 0x20f - 1a290: f8a4 923a strh.w r9, [r4, #570] ; 0x23a - 1a294: 46e1 mov r9, ip - 1a296: f884 c23c strb.w ip, [r4, #572] ; 0x23c - 1a29a: e8b8 0003 ldmia.w r8!, {r0, r1} - 1a29e: f8b8 3000 ldrh.w r3, [r8] - 1a2a2: f8c4 0217 str.w r0, [r4, #535] ; 0x217 - 1a2a6: f8c4 121b str.w r1, [r4, #539] ; 0x21b - 1a2aa: f8a4 321f strh.w r3, [r4, #543] ; 0x21f - 1a2ae: ce0f ldmia r6!, {r0, r1, r2, r3} - 1a2b0: f8c4 0222 str.w r0, [r4, #546] ; 0x222 - 1a2b4: f8c4 1226 str.w r1, [r4, #550] ; 0x226 - 1a2b8: f8c4 222a str.w r2, [r4, #554] ; 0x22a - 1a2bc: f8c4 322e str.w r3, [r4, #558] ; 0x22e - 1a2c0: ce03 ldmia r6!, {r0, r1} - 1a2c2: f8c4 0232 str.w r0, [r4, #562] ; 0x232 - 1a2c6: f8c4 1236 str.w r1, [r4, #566] ; 0x236 - 1a2ca: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 1a2ce: f8c4 023e str.w r0, [r4, #574] ; 0x23e - 1a2d2: f8c4 1242 str.w r1, [r4, #578] ; 0x242 - 1a2d6: f8c4 324a str.w r3, [r4, #586] ; 0x24a - 1a2da: f8c4 2246 str.w r2, [r4, #582] ; 0x246 - 1a2de: e8be 0003 ldmia.w lr!, {r0, r1} - 1a2e2: f8be 3000 ldrh.w r3, [lr] - 1a2e6: f8c4 024e str.w r0, [r4, #590] ; 0x24e - 1a2ea: f8a4 3256 strh.w r3, [r4, #598] ; 0x256 - 1a2ee: f89e 3002 ldrb.w r3, [lr, #2] - 1a2f2: f8c4 1252 str.w r1, [r4, #594] ; 0x252 - 1a2f6: f884 3258 strb.w r3, [r4, #600] ; 0x258 - 1a2fa: cf0f ldmia r7!, {r0, r1, r2, r3} - 1a2fc: f8c4 025b str.w r0, [r4, #603] ; 0x25b - 1a300: f8c4 125f str.w r1, [r4, #607] ; 0x25f - 1a304: f8c4 3267 str.w r3, [r4, #615] ; 0x267 - 1a308: f8c4 2263 str.w r2, [r4, #611] ; 0x263 - 1a30c: cf03 ldmia r7!, {r0, r1} - 1a30e: 883b ldrh r3, [r7, #0] - 1a310: f8c4 026b str.w r0, [r4, #619] ; 0x26b - 1a314: f8c4 126f str.w r1, [r4, #623] ; 0x26f - 1a318: f8a4 3273 strh.w r3, [r4, #627] ; 0x273 - 1a31c: cd0f ldmia r5!, {r0, r1, r2, r3} - 1a31e: f8c4 3283 str.w r3, [r4, #643] ; 0x283 - 1a322: f04f 0306 mov.w r3, #6 - 1a326: f8c4 227f str.w r2, [r4, #639] ; 0x27f + 1a120: e9c4 850b strd r8, r5, [r4, #44] ; 0x2c + 1a124: f884 3047 strb.w r3, [r4, #71] ; 0x47 + 1a128: f014 fa24 bl 2e574 + 1a12c: 8f33 ldrh r3, [r6, #56] ; 0x38 + 1a12e: 6b70 ldr r0, [r6, #52] ; 0x34 + 1a130: f106 0c80 add.w ip, r6, #128 ; 0x80 + 1a134: f8a4 304d strh.w r3, [r4, #77] ; 0x4d + 1a138: 4bc7 ldr r3, [pc, #796] ; (1a458 ) + 1a13a: f8c4 0049 str.w r0, [r4, #73] ; 0x49 + 1a13e: 65e3 str r3, [r4, #92] ; 0x5c + 1a140: f8c4 504f str.w r5, [r4, #79] ; 0x4f + 1a144: f8c4 5053 str.w r5, [r4, #83] ; 0x53 + 1a148: f8c4 5057 str.w r5, [r4, #87] ; 0x57 + 1a14c: f884 505b strb.w r5, [r4, #91] ; 0x5b + 1a150: f106 0564 add.w r5, r6, #100 ; 0x64 + 1a154: f884 8048 strb.w r8, [r4, #72] ; 0x48 + 1a158: cf0f ldmia r7!, {r0, r1, r2, r3} + 1a15a: f8c4 0063 str.w r0, [r4, #99] ; 0x63 + 1a15e: f8c4 1067 str.w r1, [r4, #103] ; 0x67 + 1a162: f8c4 306f str.w r3, [r4, #111] ; 0x6f + 1a166: f8c4 206b str.w r2, [r4, #107] ; 0x6b + 1a16a: cf03 ldmia r7!, {r0, r1} + 1a16c: 883b ldrh r3, [r7, #0] + 1a16e: f204 1727 addw r7, r4, #295 ; 0x127 + 1a172: f8c4 0073 str.w r0, [r4, #115] ; 0x73 + 1a176: f8c4 1077 str.w r1, [r4, #119] ; 0x77 + 1a17a: f8a4 307b strh.w r3, [r4, #123] ; 0x7b + 1a17e: cd0f ldmia r5!, {r0, r1, r2, r3} + 1a180: f8c4 2088 str.w r2, [r4, #136] ; 0x88 + 1a184: f8c4 308c str.w r3, [r4, #140] ; 0x8c + 1a188: f8c4 0080 str.w r0, [r4, #128] ; 0x80 + 1a18c: f8c4 1084 str.w r1, [r4, #132] ; 0x84 + 1a190: cd03 ldmia r5!, {r0, r1} + 1a192: 782b ldrb r3, [r5, #0] + 1a194: f106 05f0 add.w r5, r6, #240 ; 0xf0 + 1a198: f8c4 0090 str.w r0, [r4, #144] ; 0x90 + 1a19c: f8c4 1094 str.w r1, [r4, #148] ; 0x94 + 1a1a0: f884 3098 strb.w r3, [r4, #152] ; 0x98 + 1a1a4: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 1a1a8: f8c4 009c str.w r0, [r4, #156] ; 0x9c + 1a1ac: f8c4 10a0 str.w r1, [r4, #160] ; 0xa0 + 1a1b0: f8c4 20a4 str.w r2, [r4, #164] ; 0xa4 + 1a1b4: 2255 movs r2, #85 ; 0x55 + 1a1b6: f8c4 30a8 str.w r3, [r4, #168] ; 0xa8 + 1a1ba: e8bc 0003 ldmia.w ip!, {r0, r1} + 1a1be: f8c4 00ac str.w r0, [r4, #172] ; 0xac + 1a1c2: f104 00b5 add.w r0, r4, #181 ; 0xb5 + 1a1c6: f8c4 10b0 str.w r1, [r4, #176] ; 0xb0 + 1a1ca: f106 0198 add.w r1, r6, #152 ; 0x98 + 1a1ce: f010 fb0f bl 2a7f0 + 1a1d2: f506 7c86 add.w ip, r6, #268 ; 0x10c + 1a1d6: f506 769e add.w r6, r6, #316 ; 0x13c + 1a1da: f884 8125 strb.w r8, [r4, #293] ; 0x125 + 1a1de: cd0f ldmia r5!, {r0, r1, r2, r3} + 1a1e0: f8c4 010b str.w r0, [r4, #267] ; 0x10b + 1a1e4: f8c4 110f str.w r1, [r4, #271] ; 0x10f + 1a1e8: f8c4 3117 str.w r3, [r4, #279] ; 0x117 + 1a1ec: f8c4 2113 str.w r2, [r4, #275] ; 0x113 + 1a1f0: cd03 ldmia r5!, {r0, r1} + 1a1f2: 782b ldrb r3, [r5, #0] + 1a1f4: f8c4 011b str.w r0, [r4, #283] ; 0x11b + 1a1f8: f8c4 111f str.w r1, [r4, #287] ; 0x11f + 1a1fc: f884 3123 strb.w r3, [r4, #291] ; 0x123 + 1a200: 4665 mov r5, ip + 1a202: 3710 adds r7, #16 + 1a204: f10c 0c10 add.w ip, ip, #16 + 1a208: cd0f ldmia r5!, {r0, r1, r2, r3} + 1a20a: 42b5 cmp r5, r6 + 1a20c: f847 0c10 str.w r0, [r7, #-16] + 1a210: f847 1c0c str.w r1, [r7, #-12] + 1a214: f847 2c08 str.w r2, [r7, #-8] + 1a218: f847 3c04 str.w r3, [r7, #-4] + 1a21c: d1f0 bne.n 1a200 + 1a21e: f8bc 3004 ldrh.w r3, [ip, #4] + 1a222: f8dc 0000 ldr.w r0, [ip] + 1a226: 80bb strh r3, [r7, #4] + 1a228: f04f 0301 mov.w r3, #1 + 1a22c: 4d8b ldr r5, [pc, #556] ; (1a45c ) + 1a22e: 6038 str r0, [r7, #0] + 1a230: f884 3179 strb.w r3, [r4, #377] ; 0x179 + 1a234: cd0f ldmia r5!, {r0, r1, r2, r3} + 1a236: f8c4 015e str.w r0, [r4, #350] ; 0x15e + 1a23a: f8c4 1162 str.w r1, [r4, #354] ; 0x162 + 1a23e: f8c4 316a str.w r3, [r4, #362] ; 0x16a + 1a242: f8c4 2166 str.w r2, [r4, #358] ; 0x166 + 1a246: cd03 ldmia r5!, {r0, r1} + 1a248: 46ac mov ip, r5 + 1a24a: f8c4 016e str.w r0, [r4, #366] ; 0x16e + 1a24e: f8c4 1172 str.w r1, [r4, #370] ; 0x172 + 1a252: f105 0b20 add.w fp, r5, #32 + 1a256: f83c 3b04 ldrh.w r3, [ip], #4 + 1a25a: f105 0a3c add.w sl, r5, #60 ; 0x3c + 1a25e: f105 0958 add.w r9, r5, #88 ; 0x58 + 1a262: f105 0674 add.w r6, r5, #116 ; 0x74 + 1a266: f8a4 3176 strh.w r3, [r4, #374] ; 0x176 + 1a26a: f105 03ac add.w r3, r5, #172 ; 0xac + 1a26e: f105 0890 add.w r8, r5, #144 ; 0x90 + 1a272: f105 0ec4 add.w lr, r5, #196 ; 0xc4 + 1a276: 9303 str r3, [sp, #12] + 1a278: f105 07e0 add.w r7, r5, #224 ; 0xe0 + 1a27c: 35fc adds r5, #252 ; 0xfc + 1a27e: e8bc 000f ldmia.w ip!, {r0, r1, r2, r3} + 1a282: f8c4 017b str.w r0, [r4, #379] ; 0x17b + 1a286: f8c4 117f str.w r1, [r4, #383] ; 0x17f + 1a28a: f8c4 2183 str.w r2, [r4, #387] ; 0x183 + 1a28e: f8c4 3187 str.w r3, [r4, #391] ; 0x187 + 1a292: e8bc 0003 ldmia.w ip!, {r0, r1} + 1a296: f8c4 018b str.w r0, [r4, #395] ; 0x18b + 1a29a: f8c4 118f str.w r1, [r4, #399] ; 0x18f + 1a29e: f8bc 3000 ldrh.w r3, [ip] + 1a2a2: f04f 0c01 mov.w ip, #1 + 1a2a6: f8a4 3193 strh.w r3, [r4, #403] ; 0x193 + 1a2aa: f884 c196 strb.w ip, [r4, #406] ; 0x196 + 1a2ae: f884 c1b2 strb.w ip, [r4, #434] ; 0x1b2 + 1a2b2: f884 c1ce strb.w ip, [r4, #462] ; 0x1ce + 1a2b6: e8bb 000f ldmia.w fp!, {r0, r1, r2, r3} + 1a2ba: f8c4 0198 str.w r0, [r4, #408] ; 0x198 + 1a2be: f8c4 119c str.w r1, [r4, #412] ; 0x19c + 1a2c2: f8c4 31a4 str.w r3, [r4, #420] ; 0x1a4 + 1a2c6: f8c4 21a0 str.w r2, [r4, #416] ; 0x1a0 + 1a2ca: e8bb 0003 ldmia.w fp!, {r0, r1} + 1a2ce: f89b 3000 ldrb.w r3, [fp] + 1a2d2: f8c4 01a8 str.w r0, [r4, #424] ; 0x1a8 + 1a2d6: f8c4 11ac str.w r1, [r4, #428] ; 0x1ac + 1a2da: f884 31b0 strb.w r3, [r4, #432] ; 0x1b0 + 1a2de: e8ba 000f ldmia.w sl!, {r0, r1, r2, r3} + 1a2e2: f8c4 01b4 str.w r0, [r4, #436] ; 0x1b4 + 1a2e6: f8c4 11b8 str.w r1, [r4, #440] ; 0x1b8 + 1a2ea: f8c4 31c0 str.w r3, [r4, #448] ; 0x1c0 + 1a2ee: f8c4 21bc str.w r2, [r4, #444] ; 0x1bc + 1a2f2: e8ba 0003 ldmia.w sl!, {r0, r1} + 1a2f6: f89a 3000 ldrb.w r3, [sl] + 1a2fa: f8c4 01c4 str.w r0, [r4, #452] ; 0x1c4 + 1a2fe: f8c4 11c8 str.w r1, [r4, #456] ; 0x1c8 + 1a302: f884 31cc strb.w r3, [r4, #460] ; 0x1cc + 1a306: e8b9 000f ldmia.w r9!, {r0, r1, r2, r3} + 1a30a: f8c4 01d0 str.w r0, [r4, #464] ; 0x1d0 + 1a30e: f8c4 11d4 str.w r1, [r4, #468] ; 0x1d4 + 1a312: f8c4 31dc str.w r3, [r4, #476] ; 0x1dc + 1a316: f8c4 21d8 str.w r2, [r4, #472] ; 0x1d8 + 1a31a: e8b9 0003 ldmia.w r9!, {r0, r1} + 1a31e: f899 3000 ldrb.w r3, [r9] + 1a322: f04f 0904 mov.w r9, #4 + 1a326: f8c4 01e0 str.w r0, [r4, #480] ; 0x1e0 + 1a32a: f8c4 11e4 str.w r1, [r4, #484] ; 0x1e4 + 1a32e: f884 31e8 strb.w r3, [r4, #488] ; 0x1e8 + 1a332: ce0f ldmia r6!, {r0, r1, r2, r3} + 1a334: f8c4 01ea str.w r0, [r4, #490] ; 0x1ea + 1a338: f8c4 11ee str.w r1, [r4, #494] ; 0x1ee + 1a33c: f8c4 31f6 str.w r3, [r4, #502] ; 0x1f6 + 1a340: f8c4 21f2 str.w r2, [r4, #498] ; 0x1f2 + 1a344: ce03 ldmia r6!, {r0, r1} + 1a346: 8833 ldrh r3, [r6, #0] + 1a348: f8c4 01fa str.w r0, [r4, #506] ; 0x1fa + 1a34c: f8a4 3202 strh.w r3, [r4, #514] ; 0x202 + 1a350: 78b3 ldrb r3, [r6, #2] + 1a352: f8c4 11fe str.w r1, [r4, #510] ; 0x1fe + 1a356: f884 3204 strb.w r3, [r4, #516] ; 0x204 + 1a35a: e8b8 000f ldmia.w r8!, {r0, r1, r2, r3} + 1a35e: f8c4 0207 str.w r0, [r4, #519] ; 0x207 + 1a362: f8c4 120b str.w r1, [r4, #523] ; 0x20b + 1a366: 9e03 ldr r6, [sp, #12] + 1a368: f8c4 3213 str.w r3, [r4, #531] ; 0x213 + 1a36c: f8c4 220f str.w r2, [r4, #527] ; 0x20f + 1a370: f8a4 923a strh.w r9, [r4, #570] ; 0x23a + 1a374: 46e1 mov r9, ip + 1a376: f884 c23c strb.w ip, [r4, #572] ; 0x23c + 1a37a: e8b8 0003 ldmia.w r8!, {r0, r1} + 1a37e: f8b8 3000 ldrh.w r3, [r8] + 1a382: f8c4 0217 str.w r0, [r4, #535] ; 0x217 + 1a386: f8c4 121b str.w r1, [r4, #539] ; 0x21b + 1a38a: f8a4 321f strh.w r3, [r4, #543] ; 0x21f + 1a38e: ce0f ldmia r6!, {r0, r1, r2, r3} + 1a390: f8c4 0222 str.w r0, [r4, #546] ; 0x222 + 1a394: f8c4 1226 str.w r1, [r4, #550] ; 0x226 + 1a398: f8c4 222a str.w r2, [r4, #554] ; 0x22a + 1a39c: f8c4 322e str.w r3, [r4, #558] ; 0x22e + 1a3a0: ce03 ldmia r6!, {r0, r1} + 1a3a2: f8c4 0232 str.w r0, [r4, #562] ; 0x232 + 1a3a6: f8c4 1236 str.w r1, [r4, #566] ; 0x236 + 1a3aa: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 1a3ae: f8c4 023e str.w r0, [r4, #574] ; 0x23e + 1a3b2: f8c4 1242 str.w r1, [r4, #578] ; 0x242 + 1a3b6: f8c4 324a str.w r3, [r4, #586] ; 0x24a + 1a3ba: f8c4 2246 str.w r2, [r4, #582] ; 0x246 + 1a3be: e8be 0003 ldmia.w lr!, {r0, r1} + 1a3c2: f8be 3000 ldrh.w r3, [lr] + 1a3c6: f8c4 024e str.w r0, [r4, #590] ; 0x24e + 1a3ca: f8a4 3256 strh.w r3, [r4, #598] ; 0x256 + 1a3ce: f89e 3002 ldrb.w r3, [lr, #2] + 1a3d2: f8c4 1252 str.w r1, [r4, #594] ; 0x252 + 1a3d6: f884 3258 strb.w r3, [r4, #600] ; 0x258 + 1a3da: cf0f ldmia r7!, {r0, r1, r2, r3} + 1a3dc: f8c4 025b str.w r0, [r4, #603] ; 0x25b + 1a3e0: f8c4 125f str.w r1, [r4, #607] ; 0x25f + 1a3e4: f8c4 3267 str.w r3, [r4, #615] ; 0x267 + 1a3e8: f8c4 2263 str.w r2, [r4, #611] ; 0x263 + 1a3ec: cf03 ldmia r7!, {r0, r1} + 1a3ee: 883b ldrh r3, [r7, #0] + 1a3f0: f8c4 026b str.w r0, [r4, #619] ; 0x26b + 1a3f4: f8c4 126f str.w r1, [r4, #623] ; 0x26f + 1a3f8: f8a4 3273 strh.w r3, [r4, #627] ; 0x273 + 1a3fc: cd0f ldmia r5!, {r0, r1, r2, r3} + 1a3fe: f8c4 3283 str.w r3, [r4, #643] ; 0x283 + 1a402: f04f 0306 mov.w r3, #6 + 1a406: f8c4 227f str.w r2, [r4, #639] ; 0x27f memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 1a32a: 22fe movs r2, #254 ; 0xfe - 1a32c: f8c4 0277 str.w r0, [r4, #631] ; 0x277 - 1a330: f8c4 127b str.w r1, [r4, #635] ; 0x27b - 1a334: cd03 ldmia r5!, {r0, r1} - 1a336: f884 3293 strb.w r3, [r4, #659] ; 0x293 - 1a33a: f04f 0305 mov.w r3, #5 - 1a33e: f8c4 0287 str.w r0, [r4, #647] ; 0x287 - 1a342: f884 34e0 strb.w r3, [r4, #1248] ; 0x4e0 - 1a346: 882b ldrh r3, [r5, #0] - 1a348: 9d02 ldr r5, [sp, #8] - 1a34a: f8c4 128b str.w r1, [r4, #651] ; 0x28b - 1a34e: 2100 movs r1, #0 - 1a350: f8a4 328f strh.w r3, [r4, #655] ; 0x28f - 1a354: 1d68 adds r0, r5, #5 - 1a356: f014 f899 bl 2e48c + 1a40a: 22fe movs r2, #254 ; 0xfe + 1a40c: f8c4 0277 str.w r0, [r4, #631] ; 0x277 + 1a410: f8c4 127b str.w r1, [r4, #635] ; 0x27b + 1a414: cd03 ldmia r5!, {r0, r1} + 1a416: f884 3293 strb.w r3, [r4, #659] ; 0x293 + 1a41a: f04f 0305 mov.w r3, #5 + 1a41e: f8c4 0287 str.w r0, [r4, #647] ; 0x287 + 1a422: f884 34e0 strb.w r3, [r4, #1248] ; 0x4e0 + 1a426: 882b ldrh r3, [r5, #0] + 1a428: 9d02 ldr r5, [sp, #8] + 1a42a: f8c4 128b str.w r1, [r4, #651] ; 0x28b + 1a42e: 2100 movs r1, #0 + 1a430: f8a4 328f strh.w r3, [r4, #655] ; 0x28f + 1a434: 1d68 adds r0, r5, #5 + 1a436: f014 f89d bl 2e574 void setStatus(uint8_t t_status) { status = t_status; } - 1a35a: 2300 movs r3, #0 + 1a43a: 2300 movs r3, #0 } - 1a35c: 4620 mov r0, r4 + 1a43c: 4620 mov r0, r4 bitWrite(ports, sourcePortBit, 1); - 1a35e: f885 9000 strb.w r9, [r5] + 1a43e: f885 9000 strb.w r9, [r5] void setStatus(uint8_t t_status) { status = t_status; } - 1a362: 706b strb r3, [r5, #1] + 1a442: 706b strb r3, [r5, #1] void setChannel(uint8_t t_channel) { channel = t_channel; } - 1a364: 70ab strb r3, [r5, #2] + 1a444: 70ab strb r3, [r5, #2] void setData1(uint8_t t_data1) { data1 = t_data1; } - 1a366: 70eb strb r3, [r5, #3] + 1a446: 70eb strb r3, [r5, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1a368: 712b strb r3, [r5, #4] - 1a36a: b005 add sp, #20 - 1a36c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1a370: 2000bae8 .word 0x2000bae8 - 1a374: 20000924 .word 0x20000924 - 1a378: 0005ffff .word 0x0005ffff - 1a37c: 20000a68 .word 0x20000a68 - -0001a380 : + 1a448: 712b strb r3, [r5, #4] + 1a44a: b005 add sp, #20 + 1a44c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1a450: 2000bb08 .word 0x2000bb08 + 1a454: 20000924 .word 0x20000924 + 1a458: 0005ffff .word 0x0005ffff + 1a45c: 20000a68 .word 0x20000a68 + +0001a460 : void BMCEditor::begin(){ - 1a380: b570 push {r4, r5, r6, lr} + 1a460: b570 push {r4, r5, r6, lr} bitSet(flags, bit); - 1a382: f44f 5380 mov.w r3, #4096 ; 0x1000 - 1a386: 4604 mov r4, r0 - 1a388: 2100 movs r1, #0 - 1a38a: 4874 ldr r0, [pc, #464] ; (1a55c ) - 1a38c: 6323 str r3, [r4, #48] ; 0x30 - 1a38e: f012 f8db bl 2c548 + 1a462: f44f 5380 mov.w r3, #4096 ; 0x1000 + 1a466: 4604 mov r4, r0 + 1a468: 2100 movs r1, #0 + 1a46a: 4874 ldr r0, [pc, #464] ; (1a63c ) + 1a46c: 6323 str r3, [r4, #48] ; 0x30 + 1a46e: f012 f8df bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1a392: 4873 ldr r0, [pc, #460] ; (1a560 ) - 1a394: f00f fd6e bl 29e74 - 1a398: 212b movs r1, #43 ; 0x2b - 1a39a: 4872 ldr r0, [pc, #456] ; (1a564 ) - 1a39c: f012 f8d4 bl 2c548 - 1a3a0: 486f ldr r0, [pc, #444] ; (1a560 ) - 1a3a2: f00f fd67 bl 29e74 - 1a3a6: 2110 movs r1, #16 - 1a3a8: 486f ldr r0, [pc, #444] ; (1a568 ) - 1a3aa: f012 f8cd bl 2c548 - 1a3ae: 486c ldr r0, [pc, #432] ; (1a560 ) - 1a3b0: f00f fd60 bl 29e74 + 1a472: 4873 ldr r0, [pc, #460] ; (1a640 ) + 1a474: f00f fd74 bl 29f60 + 1a478: 212b movs r1, #43 ; 0x2b + 1a47a: 4872 ldr r0, [pc, #456] ; (1a644 ) + 1a47c: f012 f8d8 bl 2c630 + 1a480: 486f ldr r0, [pc, #444] ; (1a640 ) + 1a482: f00f fd6d bl 29f60 + 1a486: 2110 movs r1, #16 + 1a488: 486f ldr r0, [pc, #444] ; (1a648 ) + 1a48a: f012 f8d1 bl 2c630 + 1a48e: 486c ldr r0, [pc, #432] ; (1a640 ) + 1a490: f00f fd66 bl 29f60 devicesDataLength++; - 1a3b4: f894 34e0 ldrb.w r3, [r4, #1248] ; 0x4e0 + 1a494: f894 34e0 ldrb.w r3, [r4, #1248] ; 0x4e0 storage.begin(); - 1a3b8: f104 000c add.w r0, r4, #12 - 1a3bc: 3310 adds r3, #16 - 1a3be: f884 34e0 strb.w r3, [r4, #1248] ; 0x4e0 - 1a3c2: f7fe ffb7 bl 19334 + 1a498: f104 000c add.w r0, r4, #12 + 1a49c: 3310 adds r3, #16 + 1a49e: f884 34e0 strb.w r3, [r4, #1248] ; 0x4e0 + 1a4a2: f7fe ffb9 bl 19418 if(sizeof(bmcStore) > storage.length()){ - 1a3c6: 8ba2 ldrh r2, [r4, #28] - 1a3c8: f241 73fb movw r3, #6139 ; 0x17fb - 1a3cc: 429a cmp r2, r3 - 1a3ce: f200 80d9 bhi.w 1a584 - 1a3d2: 2100 movs r1, #0 - 1a3d4: 4861 ldr r0, [pc, #388] ; (1a55c ) - 1a3d6: f012 f8b7 bl 2c548 - 1a3da: 4861 ldr r0, [pc, #388] ; (1a560 ) - 1a3dc: f00f fd4a bl 29e74 - 1a3e0: 212e movs r1, #46 ; 0x2e - 1a3e2: 4862 ldr r0, [pc, #392] ; (1a56c ) - 1a3e4: f012 f8b0 bl 2c548 - 1a3e8: 485d ldr r0, [pc, #372] ; (1a560 ) - 1a3ea: f00f fd43 bl 29e74 - 1a3ee: 212e movs r1, #46 ; 0x2e - 1a3f0: 485e ldr r0, [pc, #376] ; (1a56c ) - 1a3f2: f012 f8a9 bl 2c548 - 1a3f6: 485a ldr r0, [pc, #360] ; (1a560 ) - 1a3f8: f00f fd3c bl 29e74 - 1a3fc: 212e movs r1, #46 ; 0x2e - 1a3fe: 485b ldr r0, [pc, #364] ; (1a56c ) - 1a400: f012 f8a2 bl 2c548 - 1a404: 4856 ldr r0, [pc, #344] ; (1a560 ) - 1a406: f00f fd35 bl 29e74 - 1a40a: 212e movs r1, #46 ; 0x2e - 1a40c: 4857 ldr r0, [pc, #348] ; (1a56c ) - 1a40e: f012 f89b bl 2c548 - 1a412: 4853 ldr r0, [pc, #332] ; (1a560 ) - 1a414: f00f fd2e bl 29e74 - 1a418: 2101 movs r1, #1 - 1a41a: 4855 ldr r0, [pc, #340] ; (1a570 ) - 1a41c: f012 f894 bl 2c548 - 1a420: 2134 movs r1, #52 ; 0x34 - 1a422: 4854 ldr r0, [pc, #336] ; (1a574 ) - 1a424: f012 f890 bl 2c548 - 1a428: 484d ldr r0, [pc, #308] ; (1a560 ) - 1a42a: f00f fd23 bl 29e74 - 1a42e: 2101 movs r1, #1 - 1a430: 484f ldr r0, [pc, #316] ; (1a570 ) - 1a432: f012 f889 bl 2c548 - 1a436: 212c movs r1, #44 ; 0x2c - 1a438: 484f ldr r0, [pc, #316] ; (1a578 ) - 1a43a: f012 f885 bl 2c548 - 1a43e: 4848 ldr r0, [pc, #288] ; (1a560 ) - 1a440: f00f fd18 bl 29e74 - 1a444: 2101 movs r1, #1 - 1a446: 484a ldr r0, [pc, #296] ; (1a570 ) - 1a448: f012 f87e bl 2c548 + 1a4a6: 8ba2 ldrh r2, [r4, #28] + 1a4a8: f241 73fb movw r3, #6139 ; 0x17fb + 1a4ac: 429a cmp r2, r3 + 1a4ae: f200 80d9 bhi.w 1a664 + 1a4b2: 2100 movs r1, #0 + 1a4b4: 4861 ldr r0, [pc, #388] ; (1a63c ) + 1a4b6: f012 f8bb bl 2c630 + 1a4ba: 4861 ldr r0, [pc, #388] ; (1a640 ) + 1a4bc: f00f fd50 bl 29f60 + 1a4c0: 212e movs r1, #46 ; 0x2e + 1a4c2: 4862 ldr r0, [pc, #392] ; (1a64c ) + 1a4c4: f012 f8b4 bl 2c630 + 1a4c8: 485d ldr r0, [pc, #372] ; (1a640 ) + 1a4ca: f00f fd49 bl 29f60 + 1a4ce: 212e movs r1, #46 ; 0x2e + 1a4d0: 485e ldr r0, [pc, #376] ; (1a64c ) + 1a4d2: f012 f8ad bl 2c630 + 1a4d6: 485a ldr r0, [pc, #360] ; (1a640 ) + 1a4d8: f00f fd42 bl 29f60 + 1a4dc: 212e movs r1, #46 ; 0x2e + 1a4de: 485b ldr r0, [pc, #364] ; (1a64c ) + 1a4e0: f012 f8a6 bl 2c630 + 1a4e4: 4856 ldr r0, [pc, #344] ; (1a640 ) + 1a4e6: f00f fd3b bl 29f60 + 1a4ea: 212e movs r1, #46 ; 0x2e + 1a4ec: 4857 ldr r0, [pc, #348] ; (1a64c ) + 1a4ee: f012 f89f bl 2c630 + 1a4f2: 4853 ldr r0, [pc, #332] ; (1a640 ) + 1a4f4: f00f fd34 bl 29f60 + 1a4f8: 2101 movs r1, #1 + 1a4fa: 4855 ldr r0, [pc, #340] ; (1a650 ) + 1a4fc: f012 f898 bl 2c630 + 1a500: 2134 movs r1, #52 ; 0x34 + 1a502: 4854 ldr r0, [pc, #336] ; (1a654 ) + 1a504: f012 f894 bl 2c630 + 1a508: 484d ldr r0, [pc, #308] ; (1a640 ) + 1a50a: f00f fd29 bl 29f60 + 1a50e: 2101 movs r1, #1 + 1a510: 484f ldr r0, [pc, #316] ; (1a650 ) + 1a512: f012 f88d bl 2c630 + 1a516: 212c movs r1, #44 ; 0x2c + 1a518: 484f ldr r0, [pc, #316] ; (1a658 ) + 1a51a: f012 f889 bl 2c630 + 1a51e: 4848 ldr r0, [pc, #288] ; (1a640 ) + 1a520: f00f fd1e bl 29f60 + 1a524: 2101 movs r1, #1 + 1a526: 484a ldr r0, [pc, #296] ; (1a650 ) + 1a528: f012 f882 bl 2c630 size_t print(int n) { return print((long)n); } - 1a44c: 8ba1 ldrh r1, [r4, #28] - 1a44e: 4844 ldr r0, [pc, #272] ; (1a560 ) - 1a450: f00f fd04 bl 29e5c + 1a52c: 8ba1 ldrh r1, [r4, #28] + 1a52e: 4844 ldr r0, [pc, #272] ; (1a640 ) + 1a530: f00f fd0a bl 29f48 size_t println(int n) { return print(n) + println(); } - 1a454: 4842 ldr r0, [pc, #264] ; (1a560 ) - 1a456: f00f fd0d bl 29e74 - 1a45a: 212e movs r1, #46 ; 0x2e - 1a45c: 4843 ldr r0, [pc, #268] ; (1a56c ) - 1a45e: f012 f873 bl 2c548 + 1a534: 4842 ldr r0, [pc, #264] ; (1a640 ) + 1a536: f00f fd13 bl 29f60 + 1a53a: 212e movs r1, #46 ; 0x2e + 1a53c: 4843 ldr r0, [pc, #268] ; (1a64c ) + 1a53e: f012 f877 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1a462: 483f ldr r0, [pc, #252] ; (1a560 ) - 1a464: f00f fd06 bl 29e74 - 1a468: 212e movs r1, #46 ; 0x2e - 1a46a: 4840 ldr r0, [pc, #256] ; (1a56c ) - 1a46c: f012 f86c bl 2c548 - 1a470: 483b ldr r0, [pc, #236] ; (1a560 ) - 1a472: f00f fcff bl 29e74 - 1a476: 212e movs r1, #46 ; 0x2e - 1a478: 483c ldr r0, [pc, #240] ; (1a56c ) - 1a47a: f012 f865 bl 2c548 - 1a47e: 4838 ldr r0, [pc, #224] ; (1a560 ) - 1a480: f00f fcf8 bl 29e74 - 1a484: 212e movs r1, #46 ; 0x2e - 1a486: 4839 ldr r0, [pc, #228] ; (1a56c ) - 1a488: f012 f85e bl 2c548 - 1a48c: 4834 ldr r0, [pc, #208] ; (1a560 ) - 1a48e: f00f fcf1 bl 29e74 - 1a492: 2100 movs r1, #0 - 1a494: 4831 ldr r0, [pc, #196] ; (1a55c ) - 1a496: f012 f857 bl 2c548 - 1a49a: 4831 ldr r0, [pc, #196] ; (1a560 ) - 1a49c: f00f fcea bl 29e74 - 1a4a0: 2100 movs r1, #0 - 1a4a2: 482e ldr r0, [pc, #184] ; (1a55c ) - 1a4a4: f012 f850 bl 2c548 - 1a4a8: 482d ldr r0, [pc, #180] ; (1a560 ) - 1a4aa: f00f fce3 bl 29e74 - 1a4ae: 212e movs r1, #46 ; 0x2e - 1a4b0: 482e ldr r0, [pc, #184] ; (1a56c ) - 1a4b2: f012 f849 bl 2c548 - 1a4b6: 482a ldr r0, [pc, #168] ; (1a560 ) - 1a4b8: f00f fcdc bl 29e74 - 1a4bc: 212e movs r1, #46 ; 0x2e - 1a4be: 482b ldr r0, [pc, #172] ; (1a56c ) - 1a4c0: f012 f842 bl 2c548 - 1a4c4: 4826 ldr r0, [pc, #152] ; (1a560 ) - 1a4c6: f00f fcd5 bl 29e74 - 1a4ca: 212e movs r1, #46 ; 0x2e - 1a4cc: 4827 ldr r0, [pc, #156] ; (1a56c ) - 1a4ce: f012 f83b bl 2c548 - 1a4d2: 4823 ldr r0, [pc, #140] ; (1a560 ) - 1a4d4: f00f fcce bl 29e74 - 1a4d8: 212e movs r1, #46 ; 0x2e - 1a4da: 4824 ldr r0, [pc, #144] ; (1a56c ) - 1a4dc: f012 f834 bl 2c548 - 1a4e0: 481f ldr r0, [pc, #124] ; (1a560 ) - 1a4e2: f00f fcc7 bl 29e74 - 1a4e6: 2101 movs r1, #1 - 1a4e8: 4821 ldr r0, [pc, #132] ; (1a570 ) - 1a4ea: f012 f82d bl 2c548 - 1a4ee: 2118 movs r1, #24 - 1a4f0: 4822 ldr r0, [pc, #136] ; (1a57c ) - 1a4f2: f012 f829 bl 2c548 - 1a4f6: 481a ldr r0, [pc, #104] ; (1a560 ) - 1a4f8: f00f fcbc bl 29e74 - 1a4fc: 2101 movs r1, #1 - 1a4fe: 481c ldr r0, [pc, #112] ; (1a570 ) - 1a500: f012 f822 bl 2c548 - 1a504: 213f movs r1, #63 ; 0x3f - 1a506: 481e ldr r0, [pc, #120] ; (1a580 ) - 1a508: f012 f81e bl 2c548 - 1a50c: 4814 ldr r0, [pc, #80] ; (1a560 ) - 1a50e: f00f fcb1 bl 29e74 - 1a512: 212e movs r1, #46 ; 0x2e - 1a514: 4815 ldr r0, [pc, #84] ; (1a56c ) - 1a516: f012 f817 bl 2c548 - 1a51a: 4811 ldr r0, [pc, #68] ; (1a560 ) - 1a51c: f00f fcaa bl 29e74 - 1a520: 212e movs r1, #46 ; 0x2e - 1a522: 4812 ldr r0, [pc, #72] ; (1a56c ) - 1a524: f012 f810 bl 2c548 - 1a528: 480d ldr r0, [pc, #52] ; (1a560 ) - 1a52a: f00f fca3 bl 29e74 - 1a52e: 212e movs r1, #46 ; 0x2e - 1a530: 480e ldr r0, [pc, #56] ; (1a56c ) - 1a532: f012 f809 bl 2c548 - 1a536: 480a ldr r0, [pc, #40] ; (1a560 ) - 1a538: f00f fc9c bl 29e74 - 1a53c: 212e movs r1, #46 ; 0x2e - 1a53e: 480b ldr r0, [pc, #44] ; (1a56c ) - 1a540: f012 f802 bl 2c548 - 1a544: 4806 ldr r0, [pc, #24] ; (1a560 ) - 1a546: f00f fc95 bl 29e74 - 1a54a: 2100 movs r1, #0 - 1a54c: 4803 ldr r0, [pc, #12] ; (1a55c ) - 1a54e: f011 fffb bl 2c548 - 1a552: 4803 ldr r0, [pc, #12] ; (1a560 ) - 1a554: f00f fc8e bl 29e74 - 1a558: e7fe b.n 1a558 - 1a55a: bf00 nop - 1a55c: 20003c58 .word 0x20003c58 - 1a560: 20004ba8 .word 0x20004ba8 - 1a564: 20003e88 .word 0x20003e88 - 1a568: 20003eb4 .word 0x20003eb4 - 1a56c: 20001950 .word 0x20001950 - 1a570: 200023ec .word 0x200023ec - 1a574: 20003ec8 .word 0x20003ec8 - 1a578: 20003f00 .word 0x20003f00 - 1a57c: 200019d0 .word 0x200019d0 - 1a580: 200019ec .word 0x200019ec - 1a584: 2128 movs r1, #40 ; 0x28 - 1a586: 4864 ldr r0, [pc, #400] ; (1a718 ) - 1a588: f011 ffde bl 2c548 - 1a58c: 4863 ldr r0, [pc, #396] ; (1a71c ) - 1a58e: f00f fc71 bl 29e74 - 1a592: 211d movs r1, #29 - 1a594: 4862 ldr r0, [pc, #392] ; (1a720 ) - 1a596: f011 ffd7 bl 2c548 - 1a59a: 4860 ldr r0, [pc, #384] ; (1a71c ) - 1a59c: f00f fc6a bl 29e74 + 1a542: 483f ldr r0, [pc, #252] ; (1a640 ) + 1a544: f00f fd0c bl 29f60 + 1a548: 212e movs r1, #46 ; 0x2e + 1a54a: 4840 ldr r0, [pc, #256] ; (1a64c ) + 1a54c: f012 f870 bl 2c630 + 1a550: 483b ldr r0, [pc, #236] ; (1a640 ) + 1a552: f00f fd05 bl 29f60 + 1a556: 212e movs r1, #46 ; 0x2e + 1a558: 483c ldr r0, [pc, #240] ; (1a64c ) + 1a55a: f012 f869 bl 2c630 + 1a55e: 4838 ldr r0, [pc, #224] ; (1a640 ) + 1a560: f00f fcfe bl 29f60 + 1a564: 212e movs r1, #46 ; 0x2e + 1a566: 4839 ldr r0, [pc, #228] ; (1a64c ) + 1a568: f012 f862 bl 2c630 + 1a56c: 4834 ldr r0, [pc, #208] ; (1a640 ) + 1a56e: f00f fcf7 bl 29f60 + 1a572: 2100 movs r1, #0 + 1a574: 4831 ldr r0, [pc, #196] ; (1a63c ) + 1a576: f012 f85b bl 2c630 + 1a57a: 4831 ldr r0, [pc, #196] ; (1a640 ) + 1a57c: f00f fcf0 bl 29f60 + 1a580: 2100 movs r1, #0 + 1a582: 482e ldr r0, [pc, #184] ; (1a63c ) + 1a584: f012 f854 bl 2c630 + 1a588: 482d ldr r0, [pc, #180] ; (1a640 ) + 1a58a: f00f fce9 bl 29f60 + 1a58e: 212e movs r1, #46 ; 0x2e + 1a590: 482e ldr r0, [pc, #184] ; (1a64c ) + 1a592: f012 f84d bl 2c630 + 1a596: 482a ldr r0, [pc, #168] ; (1a640 ) + 1a598: f00f fce2 bl 29f60 + 1a59c: 212e movs r1, #46 ; 0x2e + 1a59e: 482b ldr r0, [pc, #172] ; (1a64c ) + 1a5a0: f012 f846 bl 2c630 + 1a5a4: 4826 ldr r0, [pc, #152] ; (1a640 ) + 1a5a6: f00f fcdb bl 29f60 + 1a5aa: 212e movs r1, #46 ; 0x2e + 1a5ac: 4827 ldr r0, [pc, #156] ; (1a64c ) + 1a5ae: f012 f83f bl 2c630 + 1a5b2: 4823 ldr r0, [pc, #140] ; (1a640 ) + 1a5b4: f00f fcd4 bl 29f60 + 1a5b8: 212e movs r1, #46 ; 0x2e + 1a5ba: 4824 ldr r0, [pc, #144] ; (1a64c ) + 1a5bc: f012 f838 bl 2c630 + 1a5c0: 481f ldr r0, [pc, #124] ; (1a640 ) + 1a5c2: f00f fccd bl 29f60 + 1a5c6: 2101 movs r1, #1 + 1a5c8: 4821 ldr r0, [pc, #132] ; (1a650 ) + 1a5ca: f012 f831 bl 2c630 + 1a5ce: 2118 movs r1, #24 + 1a5d0: 4822 ldr r0, [pc, #136] ; (1a65c ) + 1a5d2: f012 f82d bl 2c630 + 1a5d6: 481a ldr r0, [pc, #104] ; (1a640 ) + 1a5d8: f00f fcc2 bl 29f60 + 1a5dc: 2101 movs r1, #1 + 1a5de: 481c ldr r0, [pc, #112] ; (1a650 ) + 1a5e0: f012 f826 bl 2c630 + 1a5e4: 213f movs r1, #63 ; 0x3f + 1a5e6: 481e ldr r0, [pc, #120] ; (1a660 ) + 1a5e8: f012 f822 bl 2c630 + 1a5ec: 4814 ldr r0, [pc, #80] ; (1a640 ) + 1a5ee: f00f fcb7 bl 29f60 + 1a5f2: 212e movs r1, #46 ; 0x2e + 1a5f4: 4815 ldr r0, [pc, #84] ; (1a64c ) + 1a5f6: f012 f81b bl 2c630 + 1a5fa: 4811 ldr r0, [pc, #68] ; (1a640 ) + 1a5fc: f00f fcb0 bl 29f60 + 1a600: 212e movs r1, #46 ; 0x2e + 1a602: 4812 ldr r0, [pc, #72] ; (1a64c ) + 1a604: f012 f814 bl 2c630 + 1a608: 480d ldr r0, [pc, #52] ; (1a640 ) + 1a60a: f00f fca9 bl 29f60 + 1a60e: 212e movs r1, #46 ; 0x2e + 1a610: 480e ldr r0, [pc, #56] ; (1a64c ) + 1a612: f012 f80d bl 2c630 + 1a616: 480a ldr r0, [pc, #40] ; (1a640 ) + 1a618: f00f fca2 bl 29f60 + 1a61c: 212e movs r1, #46 ; 0x2e + 1a61e: 480b ldr r0, [pc, #44] ; (1a64c ) + 1a620: f012 f806 bl 2c630 + 1a624: 4806 ldr r0, [pc, #24] ; (1a640 ) + 1a626: f00f fc9b bl 29f60 + 1a62a: 2100 movs r1, #0 + 1a62c: 4803 ldr r0, [pc, #12] ; (1a63c ) + 1a62e: f011 ffff bl 2c630 + 1a632: 4803 ldr r0, [pc, #12] ; (1a640 ) + 1a634: f00f fc94 bl 29f60 + 1a638: e7fe b.n 1a638 + 1a63a: bf00 nop + 1a63c: 20003d18 .word 0x20003d18 + 1a640: 20004c68 .word 0x20004c68 + 1a644: 20003f48 .word 0x20003f48 + 1a648: 20003f74 .word 0x20003f74 + 1a64c: 20001950 .word 0x20001950 + 1a650: 200023ec .word 0x200023ec + 1a654: 20003f88 .word 0x20003f88 + 1a658: 20003fc0 .word 0x20003fc0 + 1a65c: 200019d0 .word 0x200019d0 + 1a660: 200019ec .word 0x200019ec + 1a664: 2128 movs r1, #40 ; 0x28 + 1a666: 4864 ldr r0, [pc, #400] ; (1a7f8 ) + 1a668: f011 ffe2 bl 2c630 + 1a66c: 4863 ldr r0, [pc, #396] ; (1a7fc ) + 1a66e: f00f fc77 bl 29f60 + 1a672: 211d movs r1, #29 + 1a674: 4862 ldr r0, [pc, #392] ; (1a800 ) + 1a676: f011 ffdb bl 2c630 + 1a67a: 4860 ldr r0, [pc, #384] ; (1a7fc ) + 1a67c: f00f fc70 bl 29f60 uint8_t max = (storage.length()/sizeof(bmcStore)); - 1a5a0: 8ba3 ldrh r3, [r4, #28] - 1a5a2: 4a60 ldr r2, [pc, #384] ; (1a724 ) - 1a5a4: 089b lsrs r3, r3, #2 + 1a680: 8ba3 ldrh r3, [r4, #28] + 1a682: 4a60 ldr r2, [pc, #384] ; (1a804 ) + 1a684: 089b lsrs r3, r3, #2 return (settings.data[0]>>20) & 0x03; - 1a5a6: 68a1 ldr r1, [r4, #8] - 1a5a8: 4d5f ldr r5, [pc, #380] ; (1a728 ) - 1a5aa: fba2 2303 umull r2, r3, r2, r3 - 1a5ae: 680a ldr r2, [r1, #0] - 1a5b0: 682e ldr r6, [r5, #0] + 1a686: 68a1 ldr r1, [r4, #8] + 1a688: 4d5f ldr r5, [pc, #380] ; (1a808 ) + 1a68a: fba2 2303 umull r2, r3, r2, r3 + 1a68e: 680a ldr r2, [r1, #0] + 1a690: 682e ldr r6, [r5, #0] if(value + 1a6a8: f884 202f strbhi.w r2, [r4, #47] ; 0x2f + 1a6ac: 2a00 cmp r2, #0 + 1a6ae: f040 809f bne.w 1a7f0 getStore(); - 1a5d2: 4620 mov r0, r4 - 1a5d4: f7ff fb74 bl 19cc0 - 1a5d8: 211e movs r1, #30 - 1a5da: 4854 ldr r0, [pc, #336] ; (1a72c ) - 1a5dc: f011 ffb4 bl 2c548 - 1a5e0: 2101 movs r1, #1 - 1a5e2: 4853 ldr r0, [pc, #332] ; (1a730 ) - 1a5e4: f011 ffb0 bl 2c548 - 1a5e8: 6829 ldr r1, [r5, #0] + 1a6b2: 4620 mov r0, r4 + 1a6b4: f7ff fb74 bl 19da0 + 1a6b8: 211e movs r1, #30 + 1a6ba: 4854 ldr r0, [pc, #336] ; (1a80c ) + 1a6bc: f011 ffb8 bl 2c630 + 1a6c0: 2101 movs r1, #1 + 1a6c2: 4853 ldr r0, [pc, #332] ; (1a810 ) + 1a6c4: f011 ffb4 bl 2c630 + 1a6c8: 6829 ldr r1, [r5, #0] size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1a5ea: 2300 movs r3, #0 - 1a5ec: 220a movs r2, #10 - 1a5ee: 1b89 subs r1, r1, r6 - 1a5f0: 484a ldr r0, [pc, #296] ; (1a71c ) - 1a5f2: f00f fc5b bl 29eac - 1a5f6: 2101 movs r1, #1 - 1a5f8: 484d ldr r0, [pc, #308] ; (1a730 ) - 1a5fa: f011 ffa5 bl 2c548 - 1a5fe: 2102 movs r1, #2 - 1a600: 484c ldr r0, [pc, #304] ; (1a734 ) - 1a602: f011 ffa1 bl 2c548 + 1a6ca: 2300 movs r3, #0 + 1a6cc: 220a movs r2, #10 + 1a6ce: 1b89 subs r1, r1, r6 + 1a6d0: 484a ldr r0, [pc, #296] ; (1a7fc ) + 1a6d2: f00f fc61 bl 29f98 + 1a6d6: 2101 movs r1, #1 + 1a6d8: 484d ldr r0, [pc, #308] ; (1a810 ) + 1a6da: f011 ffa9 bl 2c630 + 1a6de: 2102 movs r1, #2 + 1a6e0: 484c ldr r0, [pc, #304] ; (1a814 ) + 1a6e2: f011 ffa5 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1a606: 4845 ldr r0, [pc, #276] ; (1a71c ) - 1a608: f00f fc34 bl 29e74 - 1a60c: 2128 movs r1, #40 ; 0x28 - 1a60e: 4842 ldr r0, [pc, #264] ; (1a718 ) - 1a610: f011 ff9a bl 2c548 - 1a614: 4841 ldr r0, [pc, #260] ; (1a71c ) - 1a616: f00f fc2d bl 29e74 + 1a6e6: 4845 ldr r0, [pc, #276] ; (1a7fc ) + 1a6e8: f00f fc3a bl 29f60 + 1a6ec: 2128 movs r1, #40 ; 0x28 + 1a6ee: 4842 ldr r0, [pc, #264] ; (1a7f8 ) + 1a6f0: f011 ff9e bl 2c630 + 1a6f4: 4841 ldr r0, [pc, #260] ; (1a7fc ) + 1a6f6: f00f fc33 bl 29f60 return (settings.data[0]>>14) & 0x0F; - 1a61a: 68a2 ldr r2, [r4, #8] - 1a61c: 6b23 ldr r3, [r4, #48] ; 0x30 - 1a61e: 2115 movs r1, #21 - 1a620: 6815 ldr r5, [r2, #0] - 1a622: f443 62e0 orr.w r2, r3, #1792 ; 0x700 - 1a626: 4844 ldr r0, [pc, #272] ; (1a738 ) - 1a628: 686b ldr r3, [r5, #4] - 1a62a: 6322 str r2, [r4, #48] ; 0x30 - 1a62c: f3c3 3383 ubfx r3, r3, #14, #4 + 1a6fa: 68a2 ldr r2, [r4, #8] + 1a6fc: 6b23 ldr r3, [r4, #48] ; 0x30 + 1a6fe: 2115 movs r1, #21 + 1a700: 6815 ldr r5, [r2, #0] + 1a702: f443 62e0 orr.w r2, r3, #1792 ; 0x700 + 1a706: 4844 ldr r0, [pc, #272] ; (1a818 ) + 1a708: 686b ldr r3, [r5, #4] + 1a70a: 6322 str r2, [r4, #48] ; 0x30 + 1a70c: f3c3 3383 ubfx r3, r3, #14, #4 deviceId = settings.getDeviceId(); - 1a630: f884 302d strb.w r3, [r4, #45] ; 0x2d - 1a634: f011 ff88 bl 2c548 + 1a710: f884 302d strb.w r3, [r4, #45] ; 0x2d + 1a714: f011 ff8c bl 2c630 size_t print(int n) { return print((long)n); } - 1a638: 2102 movs r1, #2 - 1a63a: 4838 ldr r0, [pc, #224] ; (1a71c ) - 1a63c: f00f fc0e bl 29e5c - 1a640: 2101 movs r1, #1 - 1a642: 483e ldr r0, [pc, #248] ; (1a73c ) - 1a644: f011 ff80 bl 2c548 - 1a648: 2102 movs r1, #2 - 1a64a: 4834 ldr r0, [pc, #208] ; (1a71c ) - 1a64c: f00f fc06 bl 29e5c - 1a650: 2101 movs r1, #1 - 1a652: 483a ldr r0, [pc, #232] ; (1a73c ) - 1a654: f011 ff78 bl 2c548 - 1a658: 2102 movs r1, #2 - 1a65a: 4830 ldr r0, [pc, #192] ; (1a71c ) - 1a65c: f00f fbfe bl 29e5c - 1a660: 2101 movs r1, #1 - 1a662: 4837 ldr r0, [pc, #220] ; (1a740 ) - 1a664: f011 ff70 bl 2c548 + 1a718: 2102 movs r1, #2 + 1a71a: 4838 ldr r0, [pc, #224] ; (1a7fc ) + 1a71c: f00f fc14 bl 29f48 + 1a720: 2101 movs r1, #1 + 1a722: 483e ldr r0, [pc, #248] ; (1a81c ) + 1a724: f011 ff84 bl 2c630 + 1a728: 2102 movs r1, #2 + 1a72a: 4834 ldr r0, [pc, #208] ; (1a7fc ) + 1a72c: f00f fc0c bl 29f48 + 1a730: 2101 movs r1, #1 + 1a732: 483a ldr r0, [pc, #232] ; (1a81c ) + 1a734: f011 ff7c bl 2c630 + 1a738: 2102 movs r1, #2 + 1a73a: 4830 ldr r0, [pc, #192] ; (1a7fc ) + 1a73c: f00f fc04 bl 29f48 + 1a740: 2101 movs r1, #1 + 1a742: 4837 ldr r0, [pc, #220] ; (1a820 ) + 1a744: f011 ff74 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1a668: 482c ldr r0, [pc, #176] ; (1a71c ) - 1a66a: f00f fc03 bl 29e74 - 1a66e: 2122 movs r1, #34 ; 0x22 - 1a670: 4834 ldr r0, [pc, #208] ; (1a744 ) - 1a672: f011 ff69 bl 2c548 + 1a748: 482c ldr r0, [pc, #176] ; (1a7fc ) + 1a74a: f00f fc09 bl 29f60 + 1a74e: 2122 movs r1, #34 ; 0x22 + 1a750: 4834 ldr r0, [pc, #208] ; (1a824 ) + 1a752: f011 ff6d bl 2c630 BMC_PRINTLNNS("Library Version stored in EEPROM \"",BMC_GET_BYTE(1,store.version),".",BMC_GET_BYTE(0,store.version),"\""); - 1a676: 6823 ldr r3, [r4, #0] + 1a756: 6823 ldr r3, [r4, #0] size_t print(int n) { return print((long)n); } - 1a678: 4828 ldr r0, [pc, #160] ; (1a71c ) - 1a67a: 8859 ldrh r1, [r3, #2] - 1a67c: 0a09 lsrs r1, r1, #8 - 1a67e: f00f fbed bl 29e5c - 1a682: 2101 movs r1, #1 - 1a684: 482d ldr r0, [pc, #180] ; (1a73c ) - 1a686: f011 ff5f bl 2c548 - 1a68a: 6823 ldr r3, [r4, #0] - 1a68c: 4823 ldr r0, [pc, #140] ; (1a71c ) - 1a68e: 7899 ldrb r1, [r3, #2] - 1a690: f00f fbe4 bl 29e5c - 1a694: 2101 movs r1, #1 - 1a696: 482a ldr r0, [pc, #168] ; (1a740 ) - 1a698: f011 ff56 bl 2c548 + 1a758: 4828 ldr r0, [pc, #160] ; (1a7fc ) + 1a75a: 8859 ldrh r1, [r3, #2] + 1a75c: 0a09 lsrs r1, r1, #8 + 1a75e: f00f fbf3 bl 29f48 + 1a762: 2101 movs r1, #1 + 1a764: 482d ldr r0, [pc, #180] ; (1a81c ) + 1a766: f011 ff63 bl 2c630 + 1a76a: 6823 ldr r3, [r4, #0] + 1a76c: 4823 ldr r0, [pc, #140] ; (1a7fc ) + 1a76e: 7899 ldrb r1, [r3, #2] + 1a770: f00f fbea bl 29f48 + 1a774: 2101 movs r1, #1 + 1a776: 482a ldr r0, [pc, #168] ; (1a820 ) + 1a778: f011 ff5a bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1a69c: 481f ldr r0, [pc, #124] ; (1a71c ) - 1a69e: f00f fbe9 bl 29e74 - 1a6a2: 210a movs r1, #10 - 1a6a4: 4828 ldr r0, [pc, #160] ; (1a748 ) - 1a6a6: f011 ff4f bl 2c548 - 1a6aa: 2101 movs r1, #1 - 1a6ac: 4820 ldr r0, [pc, #128] ; (1a730 ) - 1a6ae: f011 ff4b bl 2c548 + 1a77c: 481f ldr r0, [pc, #124] ; (1a7fc ) + 1a77e: f00f fbef bl 29f60 + 1a782: 210a movs r1, #10 + 1a784: 4828 ldr r0, [pc, #160] ; (1a828 ) + 1a786: f011 ff53 bl 2c630 + 1a78a: 2101 movs r1, #1 + 1a78c: 4820 ldr r0, [pc, #128] ; (1a810 ) + 1a78e: f011 ff4f bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 1a6b2: 2300 movs r3, #0 - 1a6b4: 220a movs r2, #10 - 1a6b6: f894 102d ldrb.w r1, [r4, #45] ; 0x2d - 1a6ba: 4818 ldr r0, [pc, #96] ; (1a71c ) - 1a6bc: f00f fbf6 bl 29eac + 1a792: 2300 movs r3, #0 + 1a794: 220a movs r2, #10 + 1a796: f894 102d ldrb.w r1, [r4, #45] ; 0x2d + 1a79a: 4818 ldr r0, [pc, #96] ; (1a7fc ) + 1a79c: f00f fbfc bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 1a6c0: 4816 ldr r0, [pc, #88] ; (1a71c ) - 1a6c2: f00f fbd7 bl 29e74 - 1a6c6: 210e movs r1, #14 - 1a6c8: 4820 ldr r0, [pc, #128] ; (1a74c ) - 1a6ca: f011 ff3d bl 2c548 - 1a6ce: 2101 movs r1, #1 - 1a6d0: 4817 ldr r0, [pc, #92] ; (1a730 ) - 1a6d2: f011 ff39 bl 2c548 + 1a7a0: 4816 ldr r0, [pc, #88] ; (1a7fc ) + 1a7a2: f00f fbdd bl 29f60 + 1a7a6: 210e movs r1, #14 + 1a7a8: 4820 ldr r0, [pc, #128] ; (1a82c ) + 1a7aa: f011 ff41 bl 2c630 + 1a7ae: 2101 movs r1, #1 + 1a7b0: 4817 ldr r0, [pc, #92] ; (1a810 ) + 1a7b2: f011 ff3d bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 1a6d6: 2300 movs r3, #0 - 1a6d8: 220a movs r2, #10 - 1a6da: f894 102f ldrb.w r1, [r4, #47] ; 0x2f - 1a6de: 480f ldr r0, [pc, #60] ; (1a71c ) - 1a6e0: f00f fbe4 bl 29eac + 1a7b6: 2300 movs r3, #0 + 1a7b8: 220a movs r2, #10 + 1a7ba: f894 102f ldrb.w r1, [r4, #47] ; 0x2f + 1a7be: 480f ldr r0, [pc, #60] ; (1a7fc ) + 1a7c0: f00f fbea bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 1a6e4: 480d ldr r0, [pc, #52] ; (1a71c ) - 1a6e6: f00f fbc5 bl 29e74 - 1a6ea: 212b movs r1, #43 ; 0x2b - 1a6ec: 4818 ldr r0, [pc, #96] ; (1a750 ) - 1a6ee: f011 ff2b bl 2c548 + 1a7c4: 480d ldr r0, [pc, #52] ; (1a7fc ) + 1a7c6: f00f fbcb bl 29f60 + 1a7ca: 212b movs r1, #43 ; 0x2b + 1a7cc: 4818 ldr r0, [pc, #96] ; (1a830 ) + 1a7ce: f011 ff2f bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1a6f2: 480a ldr r0, [pc, #40] ; (1a71c ) - 1a6f4: f00f fbbe bl 29e74 - 1a6f8: 2100 movs r1, #0 - 1a6fa: 4816 ldr r0, [pc, #88] ; (1a754 ) - 1a6fc: f011 ff24 bl 2c548 - 1a700: 4806 ldr r0, [pc, #24] ; (1a71c ) - 1a702: f00f fbb7 bl 29e74 + 1a7d2: 480a ldr r0, [pc, #40] ; (1a7fc ) + 1a7d4: f00f fbc4 bl 29f60 + 1a7d8: 2100 movs r1, #0 + 1a7da: 4816 ldr r0, [pc, #88] ; (1a834 ) + 1a7dc: f011 ff28 bl 2c630 + 1a7e0: 4806 ldr r0, [pc, #24] ; (1a7fc ) + 1a7e2: f00f fbbd bl 29f60 bitClear(flags, bit); - 1a706: 6b23 ldr r3, [r4, #48] ; 0x30 - 1a708: f423 5380 bic.w r3, r3, #4096 ; 0x1000 - 1a70c: 6323 str r3, [r4, #48] ; 0x30 + 1a7e6: 6b23 ldr r3, [r4, #48] ; 0x30 + 1a7e8: f423 5380 bic.w r3, r3, #4096 ; 0x1000 + 1a7ec: 6323 str r3, [r4, #48] ; 0x30 } - 1a70e: bd70 pop {r4, r5, r6, pc} + 1a7ee: bd70 pop {r4, r5, r6, pc} getStore(); - 1a710: 4620 mov r0, r4 - 1a712: f7ff fad5 bl 19cc0 - 1a716: e75c b.n 1a5d2 - 1a718: 20003f30 .word 0x20003f30 - 1a71c: 20004ba8 .word 0x20004ba8 - 1a720: 20003f5c .word 0x20003f5c - 1a724: 55639099 .word 0x55639099 - 1a728: 2000bae8 .word 0x2000bae8 - 1a72c: 20003f7c .word 0x20003f7c - 1a730: 200023ec .word 0x200023ec - 1a734: 200039fc .word 0x200039fc - 1a738: 20003f9c .word 0x20003f9c - 1a73c: 200030b8 .word 0x200030b8 - 1a740: 20003fb0 .word 0x20003fb0 - 1a744: 20003fb4 .word 0x20003fb4 - 1a748: 20003fd8 .word 0x20003fd8 - 1a74c: 20003fe4 .word 0x20003fe4 - 1a750: 20003e88 .word 0x20003e88 - 1a754: 20003c58 .word 0x20003c58 - -0001a758 : - 1a758: 6b03 ldr r3, [r0, #48] ; 0x30 - 1a75a: f423 2380 bic.w r3, r3, #262144 ; 0x40000 - 1a75e: 6303 str r3, [r0, #48] ; 0x30 -} - 1a760: 4770 bx lr - 1a762: bf00 nop - -0001a764 : + 1a7f0: 4620 mov r0, r4 + 1a7f2: f7ff fad5 bl 19da0 + 1a7f6: e75c b.n 1a6b2 + 1a7f8: 20003ff0 .word 0x20003ff0 + 1a7fc: 20004c68 .word 0x20004c68 + 1a800: 2000401c .word 0x2000401c + 1a804: 55639099 .word 0x55639099 + 1a808: 2000bb08 .word 0x2000bb08 + 1a80c: 2000403c .word 0x2000403c + 1a810: 200023ec .word 0x200023ec + 1a814: 20003abc .word 0x20003abc + 1a818: 2000405c .word 0x2000405c + 1a81c: 20003150 .word 0x20003150 + 1a820: 20004070 .word 0x20004070 + 1a824: 20004074 .word 0x20004074 + 1a828: 20004098 .word 0x20004098 + 1a82c: 200040a4 .word 0x200040a4 + 1a830: 20003f48 .word 0x20003f48 + 1a834: 20003d18 .word 0x20003d18 + +0001a838 : + 1a838: 6b03 ldr r3, [r0, #48] ; 0x30 + 1a83a: f423 2380 bic.w r3, r3, #262144 ; 0x40000 + 1a83e: 6303 str r3, [r0, #48] ; 0x30 +} + 1a840: 4770 bx lr + 1a842: bf00 nop + +0001a844 : if(bitRead(flags, bit)){ - 1a764: 6b02 ldr r2, [r0, #48] ; 0x30 + 1a844: 6b02 ldr r2, [r0, #48] ; 0x30 bool BMCEditor::readyToReload(){ - 1a766: 4603 mov r3, r0 - 1a768: 0751 lsls r1, r2, #29 - 1a76a: f3c2 0080 ubfx r0, r2, #2, #1 - 1a76e: d503 bpl.n 1a778 + 1a846: 4603 mov r3, r0 + 1a848: 0751 lsls r1, r2, #29 + 1a84a: f3c2 0080 ubfx r0, r2, #2, #1 + 1a84e: d503 bpl.n 1a858 bitClear(flags, bit); - 1a770: f022 0204 bic.w r2, r2, #4 + 1a850: f022 0204 bic.w r2, r2, #4 return true; - 1a774: 2001 movs r0, #1 + 1a854: 2001 movs r0, #1 bitClear(flags, bit); - 1a776: 631a str r2, [r3, #48] ; 0x30 + 1a856: 631a str r2, [r3, #48] ; 0x30 } - 1a778: 4770 bx lr - 1a77a: bf00 nop + 1a858: 4770 bx lr + 1a85a: bf00 nop -0001a77c : +0001a85c : if(bitRead(flags, bit)){ - 1a77c: 6b02 ldr r2, [r0, #48] ; 0x30 + 1a85c: 6b02 ldr r2, [r0, #48] ; 0x30 bool BMCEditor::dataForBMCAvailable(){ - 1a77e: 4603 mov r3, r0 - 1a780: 0711 lsls r1, r2, #28 - 1a782: f3c2 00c0 ubfx r0, r2, #3, #1 - 1a786: d503 bpl.n 1a790 + 1a85e: 4603 mov r3, r0 + 1a860: 0711 lsls r1, r2, #28 + 1a862: f3c2 00c0 ubfx r0, r2, #3, #1 + 1a866: d503 bpl.n 1a870 bitClear(flags, bit); - 1a788: f022 0208 bic.w r2, r2, #8 + 1a868: f022 0208 bic.w r2, r2, #8 return true; - 1a78c: 2001 movs r0, #1 + 1a86c: 2001 movs r0, #1 bitClear(flags, bit); - 1a78e: 631a str r2, [r3, #48] ; 0x30 + 1a86e: 631a str r2, [r3, #48] ; 0x30 } - 1a790: 4770 bx lr - 1a792: bf00 nop + 1a870: 4770 bx lr + 1a872: bf00 nop -0001a794 : +0001a874 : return midi.globals.editorConnected(); - 1a794: 6843 ldr r3, [r0, #4] + 1a874: 6843 ldr r3, [r0, #4] return bitRead(flags, bit); - 1a796: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1a79a: 6dd8 ldr r0, [r3, #92] ; 0x5c + 1a876: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1a87a: 6dd8 ldr r0, [r3, #92] ; 0x5c } - 1a79c: f3c0 0080 ubfx r0, r0, #2, #1 - 1a7a0: 4770 bx lr - 1a7a2: bf00 nop + 1a87c: f3c0 0080 ubfx r0, r0, #2, #1 + 1a880: 4770 bx lr + 1a882: bf00 nop -0001a7a4 : +0001a884 : if(bitRead(flags, bit)){ - 1a7a4: 6b02 ldr r2, [r0, #48] ; 0x30 + 1a884: 6b02 ldr r2, [r0, #48] ; 0x30 bool BMCEditor::connectionHasChanged(){ - 1a7a6: 4603 mov r3, r0 - 1a7a8: 0791 lsls r1, r2, #30 - 1a7aa: f3c2 0040 ubfx r0, r2, #1, #1 - 1a7ae: d503 bpl.n 1a7b8 + 1a886: 4603 mov r3, r0 + 1a888: 0791 lsls r1, r2, #30 + 1a88a: f3c2 0040 ubfx r0, r2, #1, #1 + 1a88e: d503 bpl.n 1a898 bitClear(flags, bit); - 1a7b0: f022 0202 bic.w r2, r2, #2 + 1a890: f022 0202 bic.w r2, r2, #2 return true; - 1a7b4: 2001 movs r0, #1 + 1a894: 2001 movs r0, #1 bitClear(flags, bit); - 1a7b6: 631a str r2, [r3, #48] ; 0x30 + 1a896: 631a str r2, [r3, #48] ; 0x30 } - 1a7b8: 4770 bx lr - 1a7ba: bf00 nop + 1a898: 4770 bx lr + 1a89a: bf00 nop -0001a7bc : +0001a89c : if(layer < BMC_MAX_LAYERS){ - 1a7bc: 2904 cmp r1, #4 + 1a89c: 2904 cmp r1, #4 this->layer = layer; - 1a7be: bf98 it ls - 1a7c0: f880 102e strbls.w r1, [r0, #46] ; 0x2e + 1a89e: bf98 it ls + 1a8a0: f880 102e strbls.w r1, [r0, #46] ; 0x2e } - 1a7c4: 4770 bx lr - 1a7c6: bf00 nop + 1a8a4: 4770 bx lr + 1a8a6: bf00 nop -0001a7c8 : +0001a8a8 : } - 1a7c8: f890 002e ldrb.w r0, [r0, #46] ; 0x2e - 1a7cc: 4770 bx lr - 1a7ce: bf00 nop + 1a8a8: f890 002e ldrb.w r0, [r0, #46] ; 0x2e + 1a8ac: 4770 bx lr + 1a8ae: bf00 nop -0001a7d0 : +0001a8b0 : return (storeAddress * sizeof(store)); - 1a7d0: f241 72fc movw r2, #6140 ; 0x17fc - 1a7d4: f890 002f ldrb.w r0, [r0, #47] ; 0x2f + 1a8b0: f241 72fc movw r2, #6140 ; 0x17fc + 1a8b4: f890 002f ldrb.w r0, [r0, #47] ; 0x2f } - 1a7d8: fb02 f000 mul.w r0, r2, r0 - 1a7dc: 4770 bx lr - 1a7de: bf00 nop + 1a8b8: fb02 f000 mul.w r0, r2, r0 + 1a8bc: 4770 bx lr + 1a8be: bf00 nop -0001a7e0 : +0001a8c0 : return (storeAddress * sizeof(store)) + getCrcAndVersionSize(); - 1a7e0: f241 73fc movw r3, #6140 ; 0x17fc - 1a7e4: f890 002f ldrb.w r0, [r0, #47] ; 0x2f - 1a7e8: fb03 f000 mul.w r0, r3, r0 + 1a8c0: f241 73fc movw r3, #6140 ; 0x17fc + 1a8c4: f890 002f ldrb.w r0, [r0, #47] ; 0x2f + 1a8c8: fb03 f000 mul.w r0, r3, r0 } - 1a7ec: 3004 adds r0, #4 - 1a7ee: 4770 bx lr + 1a8cc: 3004 adds r0, #4 + 1a8ce: 4770 bx lr -0001a7f0 : +0001a8d0 : uint32_t value = getSettingsOffset(); return value + sizeof(store.global.events); } uint32_t BMCEditor::getEventsOffset(uint16_t index){ uint32_t value = getSettingsOffset(); return value + (sizeof(bmcStoreEvent)*index); - 1a7f0: 00c9 lsls r1, r1, #3 + 1a8d0: 00c9 lsls r1, r1, #3 } - 1a7f2: f101 0034 add.w r0, r1, #52 ; 0x34 - 1a7f6: 4770 bx lr + 1a8d2: f101 0034 add.w r0, r1, #52 ; 0x34 + 1a8d6: 4770 bx lr -0001a7f8 : +0001a8d8 : uint32_t value = getEventsOffset(); return value + sizeof(store.global.names); } uint32_t BMCEditor::getNamesOffset(uint16_t index){ uint32_t value = getEventsOffset(); return value + (sizeof(bmcStoreName)*index); - 1a7f8: eb01 1101 add.w r1, r1, r1, lsl #4 + 1a8d8: eb01 1101 add.w r1, r1, r1, lsl #4 } - 1a7fc: f201 6074 addw r0, r1, #1652 ; 0x674 - 1a800: 4770 bx lr - 1a802: bf00 nop + 1a8dc: f201 6074 addw r0, r1, #1652 ; 0x674 + 1a8e0: 4770 bx lr + 1a8e2: bf00 nop -0001a804 : +0001a8e4 : uint32_t value = getNamesOffset(); return value + sizeof(store.global.portPresets); } uint32_t BMCEditor::getPortPresetsOffset(uint16_t index){ uint32_t value = getNamesOffset(); return value + (sizeof(bmcStoreDevice <0, 1, uint8_t>)*index); - 1a804: 0049 lsls r1, r1, #1 + 1a8e4: 0049 lsls r1, r1, #1 } - 1a806: f601 60f4 addw r0, r1, #3828 ; 0xef4 - 1a80a: 4770 bx lr + 1a8e6: f601 60f4 addw r0, r1, #3828 ; 0xef4 + 1a8ea: 4770 bx lr -0001a80c : +0001a8ec : uint32_t value = getPortPresetsOffset(); return (value + sizeof(store.global.shortcuts)); } uint32_t BMCEditor::getShortcutsOffset(uint16_t index){ uint32_t value = getPortPresetsOffset(); return (value + (sizeof(bmcStoreDevice <0, 6, uint8_t>)*index)); - 1a80c: ebc1 01c1 rsb r1, r1, r1, lsl #3 + 1a8ec: ebc1 01c1 rsb r1, r1, r1, lsl #3 } - 1a810: f601 7014 addw r0, r1, #3860 ; 0xf14 - 1a814: 4770 bx lr - 1a816: bf00 nop + 1a8f0: f601 7014 addw r0, r1, #3860 ; 0xf14 + 1a8f4: 4770 bx lr + 1a8f6: bf00 nop -0001a818 : +0001a8f8 : return value; } uint32_t BMCEditor::getLfoOffset(uint16_t index){ uint32_t value = getShortcutsOffset(); #if BMC_MAX_LFO > 0 value += (sizeof(bmcStoreDevice <3, 5, uint8_t>)*index); - 1a818: eb01 01c1 add.w r1, r1, r1, lsl #3 + 1a8f8: eb01 01c1 add.w r1, r1, r1, lsl #3 #endif return value; } - 1a81c: f601 701b addw r0, r1, #3867 ; 0xf1b - 1a820: 4770 bx lr - 1a822: bf00 nop + 1a8fc: f601 701b addw r0, r1, #3867 ; 0xf1b + 1a900: 4770 bx lr + 1a902: bf00 nop -0001a824 : +0001a904 : return value; } uint32_t BMCEditor::getSketchBytesOffset(uint16_t index){ uint32_t value = getLfoOffset(); #if BMC_MAX_SKETCH_BYTES > 0 value += (sizeof(bmcStoreDevice <0, BMC_MAX_SKETCH_BYTES, uint8_t>)*index); - 1a824: eb01 0181 add.w r1, r1, r1, lsl #2 + 1a904: eb01 0181 add.w r1, r1, r1, lsl #2 #endif return value; } - 1a828: f601 7024 addw r0, r1, #3876 ; 0xf24 - 1a82c: 4770 bx lr - 1a82e: bf00 nop + 1a908: f601 7024 addw r0, r1, #3876 ; 0xf24 + 1a90c: 4770 bx lr + 1a90e: bf00 nop -0001a830 : +0001a910 : return value; } uint32_t BMCEditor::getPresetOffset(uint16_t index){ uint32_t value = getSketchBytesOffset(); #if BMC_MAX_PRESETS > 0 value += (sizeof(bmcStoreDevice <1, BMC_MAX_PRESET_ITEMS>)*index); - 1a830: eb01 0181 add.w r1, r1, r1, lsl #2 - 1a834: 0048 lsls r0, r1, #1 + 1a910: eb01 0181 add.w r1, r1, r1, lsl #2 + 1a914: 0048 lsls r0, r1, #1 #endif return value; } - 1a836: f600 7029 addw r0, r0, #3881 ; 0xf29 - 1a83a: 4770 bx lr + 1a916: f600 7029 addw r0, r0, #3881 ; 0xf29 + 1a91a: 4770 bx lr -0001a83c : +0001a91c : return value; } uint32_t BMCEditor::getSetListOffset(uint16_t index){ uint32_t value = getPresetOffset(); #if BMC_MAX_SETLISTS > 0 value += (sizeof(bmcStoreDevice <1, BMC_MAX_SETLISTS_SONGS>)*index); - 1a83c: eb01 01c1 add.w r1, r1, r1, lsl #3 - 1a840: f241 10a9 movw r0, #4521 ; 0x11a9 + 1a91c: eb01 01c1 add.w r1, r1, r1, lsl #3 + 1a920: f241 10a9 movw r0, #4521 ; 0x11a9 #endif return value; } - 1a844: eb00 0041 add.w r0, r0, r1, lsl #1 - 1a848: 4770 bx lr - 1a84a: bf00 nop + 1a924: eb00 0041 add.w r0, r0, r1, lsl #1 + 1a928: 4770 bx lr + 1a92a: bf00 nop -0001a84c : +0001a92c : return value; } uint32_t BMCEditor::getSetListSongOffset(uint16_t index){ uint32_t value = getSetListOffset(); #if BMC_MAX_SETLISTS > 0 value += (sizeof(bmcStoreDevice <1, BMC_MAX_SETLISTS_SONG_PARTS>)*index); - 1a84c: eb01 0181 add.w r1, r1, r1, lsl #2 - 1a850: f241 2039 movw r0, #4665 ; 0x1239 + 1a92c: eb01 0181 add.w r1, r1, r1, lsl #2 + 1a930: f241 2039 movw r0, #4665 ; 0x1239 #endif return value; } - 1a854: eb00 0041 add.w r0, r0, r1, lsl #1 - 1a858: 4770 bx lr - 1a85a: bf00 nop + 1a934: eb00 0041 add.w r0, r0, r1, lsl #1 + 1a938: 4770 bx lr + 1a93a: bf00 nop -0001a85c : +0001a93c : return value; } uint32_t BMCEditor::getGlobalButtonOffset(uint16_t index){ uint32_t value = getSetListSongOffset(); #if BMC_MAX_GLOBAL_BUTTONS > 0 value += (sizeof(store.global.buttons[0])*index); - 1a85c: eb01 0341 add.w r3, r1, r1, lsl #1 + 1a93c: eb01 0341 add.w r3, r1, r1, lsl #1 // value += (sizeof(bmcStoreDevice ) * index); #endif return value; } - 1a860: f241 40b9 movw r0, #5305 ; 0x14b9 + 1a940: f241 40b9 movw r0, #5305 ; 0x14b9 value += (sizeof(store.global.buttons[0])*index); - 1a864: eb01 0183 add.w r1, r1, r3, lsl #2 + 1a944: eb01 0183 add.w r1, r1, r3, lsl #2 } - 1a868: 4408 add r0, r1 - 1a86a: 4770 bx lr + 1a948: 4408 add r0, r1 + 1a94a: 4770 bx lr -0001a86c : +0001a94c : return value; } uint32_t BMCEditor::getGlobalLedOffset(uint16_t index){ uint32_t value = getGlobalButtonOffset(); #if BMC_MAX_GLOBAL_LEDS > 0 value += (sizeof(bmcStoreDevice<1,1>) * index); - 1a86c: eb01 0141 add.w r1, r1, r1, lsl #1 + 1a94c: eb01 0141 add.w r1, r1, r1, lsl #1 #endif return value; } - 1a870: f241 40d3 movw r0, #5331 ; 0x14d3 - 1a874: 4408 add r0, r1 - 1a876: 4770 bx lr + 1a950: f241 40d3 movw r0, #5331 ; 0x14d3 + 1a954: 4408 add r0, r1 + 1a956: 4770 bx lr -0001a878 : +0001a958 : } uint32_t BMCEditor::getPotCalibrationOffset(uint16_t index){ uint32_t value = getGlobalPotOffset(); #if BMC_TOTAL_POTS_AUX_JACKS > 0 // value += (sizeof(bmcStoreDevice <0, 2, uint16_t>) * index); value += (sizeof(store.global.potCalibration[0]) * index); - 1a878: eb01 0141 add.w r1, r1, r1, lsl #1 - 1a87c: f241 40e2 movw r0, #5346 ; 0x14e2 + 1a958: eb01 0141 add.w r1, r1, r1, lsl #1 + 1a95c: f241 40e2 movw r0, #5346 ; 0x14e2 #endif return value; } - 1a880: eb00 0041 add.w r0, r0, r1, lsl #1 - 1a884: 4770 bx lr - 1a886: bf00 nop + 1a960: eb00 0041 add.w r0, r0, r1, lsl #1 + 1a964: 4770 bx lr + 1a966: bf00 nop -0001a888 : +0001a968 : } uint32_t BMCEditor::getAuxJackOffset(uint16_t index){ uint32_t value = getLRelayOffset(); #if BMC_MAX_AUX_JACKS > 0 // value += (sizeof(bmcStoreDevice <2, 3>) * index); value += (sizeof(store.global.auxJacks[0]) * index); - 1a888: eb01 0141 add.w r1, r1, r1, lsl #1 - 1a88c: f241 40e8 movw r0, #5352 ; 0x14e8 + 1a968: eb01 0141 add.w r1, r1, r1, lsl #1 + 1a96c: f241 40e8 movw r0, #5352 ; 0x14e8 #endif return value; } - 1a890: eb00 0041 add.w r0, r0, r1, lsl #1 - 1a894: 4770 bx lr - 1a896: bf00 nop + 1a970: eb00 0041 add.w r0, r0, r1, lsl #1 + 1a974: 4770 bx lr + 1a976: bf00 nop -0001a898 : +0001a978 : return value; } uint32_t BMCEditor::getCustomSysExOffset(uint16_t index){ uint32_t value = getAuxJackOffset(); #if BMC_MAX_CUSTOM_SYSEX > 0 value += (sizeof(bmcStoreDevice <1, 16, uint8_t>) * index); - 1a898: eb01 01c1 add.w r1, r1, r1, lsl #3 - 1a89c: f241 40ee movw r0, #5358 ; 0x14ee + 1a978: eb01 01c1 add.w r1, r1, r1, lsl #3 + 1a97c: f241 40ee movw r0, #5358 ; 0x14ee #endif return value; } - 1a8a0: eb00 0041 add.w r0, r0, r1, lsl #1 - 1a8a4: 4770 bx lr - 1a8a6: bf00 nop + 1a980: eb00 0041 add.w r0, r0, r1, lsl #1 + 1a984: 4770 bx lr + 1a986: bf00 nop -0001a8a8 : +0001a988 : return value; } uint32_t BMCEditor::getTriggerOffset(uint16_t index){ uint32_t value = getCustomSysExOffset(); #if BMC_MAX_TRIGGERS > 0 value += (sizeof(bmcStoreDevice <1, 2>) * index); - 1a8a8: f241 5036 movw r0, #5430 ; 0x1536 + 1a988: f241 5036 movw r0, #5430 ; 0x1536 #endif return value; } - 1a8ac: eb00 0081 add.w r0, r0, r1, lsl #2 - 1a8b0: 4770 bx lr - 1a8b2: bf00 nop + 1a98c: eb00 0081 add.w r0, r0, r1, lsl #2 + 1a990: 4770 bx lr + 1a992: bf00 nop -0001a8b4 : +0001a994 : return value; } uint32_t BMCEditor::getTempoToTapOffset(uint16_t index){ uint32_t value = getTriggerOffset(); #if BMC_MAX_TEMPO_TO_TAP > 0 value += (sizeof(bmcStoreDevice <1, 1>) * index); - 1a8b4: eb01 0141 add.w r1, r1, r1, lsl #1 + 1a994: eb01 0141 add.w r1, r1, r1, lsl #1 #endif return value; } - 1a8b8: f241 5046 movw r0, #5446 ; 0x1546 - 1a8bc: 4408 add r0, r1 - 1a8be: 4770 bx lr + 1a998: f241 5046 movw r0, #5446 ; 0x1546 + 1a99c: 4408 add r0, r1 + 1a99e: 4770 bx lr -0001a8c0 : +0001a9a0 : return value; } uint32_t BMCEditor::getTimedEventOffset(uint16_t index){ uint32_t value = getPixelProgramsOffset(); #if BMC_MAX_TIMED_EVENTS > 0 value += (sizeof(bmcStoreDevice <1, 1>) * index); - 1a8c0: eb01 0141 add.w r1, r1, r1, lsl #1 + 1a9a0: eb01 0141 add.w r1, r1, r1, lsl #1 #endif return value; } - 1a8c4: f241 504c movw r0, #5452 ; 0x154c - 1a8c8: 4408 add r0, r1 - 1a8ca: 4770 bx lr + 1a9a4: f241 504c movw r0, #5452 ; 0x154c + 1a9a8: 4408 add r0, r1 + 1a9aa: 4770 bx lr -0001a8cc : +0001a9ac : #endif } return false; } void BMCEditor::sendToEditor(BMCMidiMessage message, bool appendCRC, bool midiOutActivityAllowed){ - 1a8cc: b084 sub sp, #16 - 1a8ce: b5f0 push {r4, r5, r6, r7, lr} - 1a8d0: b085 sub sp, #20 - 1a8d2: f10d 0c2c add.w ip, sp, #44 ; 0x2c - 1a8d6: f89d 4134 ldrb.w r4, [sp, #308] ; 0x134 - 1a8da: e88c 000e stmia.w ip, {r1, r2, r3} + 1a9ac: b084 sub sp, #16 + 1a9ae: b5f0 push {r4, r5, r6, r7, lr} + 1a9b0: b085 sub sp, #20 + 1a9b2: f10d 0c2c add.w ip, sp, #44 ; 0x2c + 1a9b6: f89d 4134 ldrb.w r4, [sp, #308] ; 0x134 + 1a9ba: e88c 000e stmia.w ip, {r1, r2, r3} return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 1a8de: f89d 302d ldrb.w r3, [sp, #45] ; 0x2d - 1a8e2: f89d 2130 ldrb.w r2, [sp, #304] ; 0x130 - 1a8e6: 2bf0 cmp r3, #240 ; 0xf0 - 1a8e8: d102 bne.n 1a8f0 + 1a9be: f89d 302d ldrb.w r3, [sp, #45] ; 0x2d + 1a9c2: f89d 2130 ldrb.w r2, [sp, #304] ; 0x130 + 1a9c6: 2bf0 cmp r3, #240 ; 0xf0 + 1a9c8: d102 bne.n 1a9d0 if(message.isSysEx() && port!=BMC_NONE){ - 1a8ea: f890 102c ldrb.w r1, [r0, #44] ; 0x2c - 1a8ee: b921 cbnz r1, 1a8fa + 1a9ca: f890 102c ldrb.w r1, [r0, #44] ; 0x2c + 1a9ce: b921 cbnz r1, 1a9da false, // does it have the 0xF0 & 0xF7 bytes 0, // cable, used for USB midiOutActivityAllowed // should it trigger MIDI Out activity ); } } - 1a8f0: b005 add sp, #20 - 1a8f2: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} - 1a8f6: b004 add sp, #16 - 1a8f8: 4770 bx lr + 1a9d0: b005 add sp, #20 + 1a9d2: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 1a9d6: b004 add sp, #16 + 1a9d8: 4770 bx lr if(isSysEx() && size()>0){ - 1a8fa: f8bd 302f ldrh.w r3, [sp, #47] ; 0x2f - 1a8fe: b96b cbnz r3, 1a91c - 1a900: f10d 0231 add.w r2, sp, #49 ; 0x31 + 1a9da: f8bd 302f ldrh.w r3, [sp, #47] ; 0x2f + 1a9de: b96b cbnz r3, 1a9fc + 1a9e0: f10d 0231 add.w r2, sp, #49 ; 0x31 midi.sendSysEx( - 1a904: 6840 ldr r0, [r0, #4] - 1a906: 9402 str r4, [sp, #8] - 1a908: 2400 movs r4, #0 - 1a90a: e9cd 4400 strd r4, r4, [sp] - 1a90e: f008 fbdb bl 230c8 -} - 1a912: b005 add sp, #20 - 1a914: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} - 1a918: b004 add sp, #16 - 1a91a: 4770 bx lr + 1a9e4: 6840 ldr r0, [r0, #4] + 1a9e6: 9402 str r4, [sp, #8] + 1a9e8: 2400 movs r4, #0 + 1a9ea: e9cd 4400 strd r4, r4, [sp] + 1a9ee: f008 fbd1 bl 23194 +} + 1a9f2: b005 add sp, #20 + 1a9f4: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 1a9f8: b004 add sp, #16 + 1a9fa: 4770 bx lr if(addCrcByte && sysex[size()-1]!=0xF7){ - 1a91c: b33a cbz r2, 1a96e - 1a91e: f103 0228 add.w r2, r3, #40 ; 0x28 - 1a922: 446a add r2, sp - 1a924: 7a15 ldrb r5, [r2, #8] + 1a9fc: b33a cbz r2, 1aa4e + 1a9fe: f103 0228 add.w r2, r3, #40 ; 0x28 + 1aa02: 446a add r2, sp + 1aa04: 7a15 ldrb r5, [r2, #8] if(sysLength - 1a92a: 2bfd cmp r3, #253 ; 0xfd - 1a92c: d921 bls.n 1a972 + 1aa06: 2df7 cmp r5, #247 ; 0xf7 + 1aa08: d001 beq.n 1aa0e + 1aa0a: 2bfd cmp r3, #253 ; 0xfd + 1aa0c: d921 bls.n 1aa52 uint16_t n = size() - (addCrcByte ? 1 : 2); - 1a92e: 2701 movs r7, #1 - 1a930: 1bdf subs r7, r3, r7 + 1aa0e: 2701 movs r7, #1 + 1aa10: 1bdf subs r7, r3, r7 if(sysex[0]!=0xF0){ - 1a932: f89d c031 ldrb.w ip, [sp, #49] ; 0x31 - 1a936: f10d 0231 add.w r2, sp, #49 ; 0x31 + 1aa12: f89d c031 ldrb.w ip, [sp, #49] ; 0x31 + 1aa16: f10d 0231 add.w r2, sp, #49 ; 0x31 uint8_t crc = 0; - 1a93a: f1bc 0ff0 cmp.w ip, #240 ; 0xf0 + 1aa1a: f1bc 0ff0 cmp.w ip, #240 ; 0xf0 uint16_t n = size() - (addCrcByte ? 1 : 2); - 1a93e: b2bf uxth r7, r7 + 1aa1e: b2bf uxth r7, r7 uint8_t crc = 0; - 1a940: bf14 ite ne - 1a942: 2570 movne r5, #112 ; 0x70 - 1a944: 2500 moveq r5, #0 + 1aa20: bf14 ite ne + 1aa22: 2570 movne r5, #112 ; 0x70 + 1aa24: 2500 moveq r5, #0 for(uint16_t i=0;i - 1a948: 1e7e subs r6, r7, #1 - 1a94a: 4696 mov lr, r2 - 1a94c: fa12 f686 uxtah r6, r2, r6 - 1a950: e001 b.n 1a956 + 1aa26: b167 cbz r7, 1aa42 + 1aa28: 1e7e subs r6, r7, #1 + 1aa2a: 4696 mov lr, r2 + 1aa2c: fa12 f686 uxtah r6, r2, r6 + 1aa30: e001 b.n 1aa36 crc ^= (sysex[i] & 0x7F); - 1a952: f81e cf01 ldrb.w ip, [lr, #1]! - 1a956: f00c 0c7f and.w ip, ip, #127 ; 0x7f + 1aa32: f81e cf01 ldrb.w ip, [lr, #1]! + 1aa36: f00c 0c7f and.w ip, ip, #127 ; 0x7f for(uint16_t i=0;i + 1aa40: d1f7 bne.n 1aa32 sysex[n] = crc; - 1a962: f107 0628 add.w r6, r7, #40 ; 0x28 - 1a966: eb0d 0706 add.w r7, sp, r6 - 1a96a: 727d strb r5, [r7, #9] + 1aa42: f107 0628 add.w r6, r7, #40 ; 0x28 + 1aa46: eb0d 0706 add.w r7, sp, r6 + 1aa4a: 727d strb r5, [r7, #9] } - 1a96c: e7ca b.n 1a904 + 1aa4c: e7ca b.n 1a9e4 uint16_t n = size() - (addCrcByte ? 1 : 2); - 1a96e: 2702 movs r7, #2 - 1a970: e7de b.n 1a930 + 1aa4e: 2702 movs r7, #2 + 1aa50: e7de b.n 1aa10 sysex[sysLength++] = value; - 1a972: 3301 adds r3, #1 + 1aa52: 3301 adds r3, #1 setData1(value & 0xFF); - 1a974: f88d 302f strb.w r3, [sp, #47] ; 0x2f + 1aa54: f88d 302f strb.w r3, [sp, #47] ; 0x2f sysex[sysLength++] = value; - 1a978: 2300 movs r3, #0 + 1aa58: 2300 movs r3, #0 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1a97a: f88d 3030 strb.w r3, [sp, #48] ; 0x30 + 1aa5a: f88d 3030 strb.w r3, [sp, #48] ; 0x30 sysex[sysLength++] = value; - 1a97e: 7253 strb r3, [r2, #9] + 1aa5e: 7253 strb r3, [r2, #9] return true; - 1a980: f8bd 302f ldrh.w r3, [sp, #47] ; 0x2f - 1a984: e7d3 b.n 1a92e - 1a986: bf00 nop + 1aa60: f8bd 302f ldrh.w r3, [sp, #47] ; 0x2f + 1aa64: e7d3 b.n 1aa0e + 1aa66: bf00 nop -0001a988 : +0001aa68 : void BMCEditor::sendNotification(uint16_t code, uint32_t payload, bool hasError, bool forceResponse){ - 1a988: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1aa68: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} void setError(bool value=true) {bitWrite(flags,BMC_EDITOR_SYSEX_FLAG_ERROR,value);} - 1a98c: 011b lsls r3, r3, #4 - 1a98e: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c - 1a992: 4607 mov r7, r0 - 1a994: 460e mov r6, r1 + 1aa6c: 011b lsls r3, r3, #4 + 1aa6e: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c + 1aa72: 4607 mov r7, r0 + 1aa74: 460e mov r6, r1 struct BMCMidiMessage { - 1a996: ac41 add r4, sp, #260 ; 0x104 - 1a998: fa5f f883 uxtb.w r8, r3 - 1a99c: f89d 9230 ldrb.w r9, [sp, #560] ; 0x230 - 1a9a0: 2300 movs r3, #0 - 1a9a2: 4615 mov r5, r2 + 1aa76: ac41 add r4, sp, #260 ; 0x104 + 1aa78: fa5f f883 uxtb.w r8, r3 + 1aa7c: f89d 9230 ldrb.w r9, [sp, #560] ; 0x230 + 1aa80: 2300 movs r3, #0 + 1aa82: 4615 mov r5, r2 //BMCF_NOTIFY, byte 9 = 1 for error BMCEditorMidiFlags flag; flag.setError(hasError); BMCMidiMessage buff; uint8_t outPort = port; - 1a9a4: f890 b02c ldrb.w fp, [r0, #44] ; 0x2c - 1a9a8: 6023 str r3, [r4, #0] - 1a9aa: 7123 strb r3, [r4, #4] + 1aa84: f890 b02c ldrb.w fp, [r0, #44] ; 0x2c + 1aa88: 6023 str r3, [r4, #0] + 1aa8a: 7123 strb r3, [r4, #4] if(!forceResponse){ - 1a9ac: f1b9 0f00 cmp.w r9, #0 - 1a9b0: d102 bne.n 1a9b8 + 1aa8c: f1b9 0f00 cmp.w r9, #0 + 1aa90: d102 bne.n 1aa98 uint8_t getPort() { return ports; } - 1a9b2: 6bc3 ldr r3, [r0, #60] ; 0x3c - 1a9b4: f893 b000 ldrb.w fp, [r3] + 1aa92: 6bc3 ldr r3, [r0, #60] ; 0x3c + 1aa94: f893 b000 ldrb.w fp, [r3] memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 1a9b8: 22fa movs r2, #250 ; 0xfa - 1a9ba: 2100 movs r1, #0 - 1a9bc: f20d 100d addw r0, sp, #269 ; 0x10d + 1aa98: 22fa movs r2, #250 ; 0xfa + 1aa9a: 2100 movs r1, #0 + 1aa9c: f20d 100d addw r0, sp, #269 ; 0x10d outPort = incoming.getPort(); } buff.prepareEditorMessage(outPort, deviceId, BMCF_NOTIFY, flag.get(), 0); - 1a9c0: f897 a02d ldrb.w sl, [r7, #45] ; 0x2d - 1a9c4: f013 fd62 bl 2e48c + 1aaa0: f897 a02d ldrb.w sl, [r7, #45] ; 0x2d + 1aaa4: f013 fd66 bl 2e574 void setStatus(uint8_t t_status) { status = t_status; } - 1a9c8: 23f0 movs r3, #240 ; 0xf0 + 1aaa8: 23f0 movs r3, #240 ; 0xf0 bitWrite(ports, sourcePortBit, 1); - 1a9ca: 2101 movs r1, #1 + 1aaaa: 2101 movs r1, #1 } uint16_t getMessageLayerNumber(){ return incoming.get14Bits(6); } uint8_t getMessageRequestId(){ return incoming.sysex[8]; - 1a9cc: 6bfa ldr r2, [r7, #60] ; 0x3c + 1aaac: 6bfa ldr r2, [r7, #60] ; 0x3c void setStatus(uint8_t t_status) { status = t_status; } - 1a9ce: 7063 strb r3, [r4, #1] + 1aaae: 7063 strb r3, [r4, #1] sysex[sysLength++] = value; - 1a9d0: 237d movs r3, #125 ; 0x7d + 1aab0: 237d movs r3, #125 ; 0x7d bitWrite(ports, sourcePortBit, 1); - 1a9d2: fa01 f10b lsl.w r1, r1, fp + 1aab2: fa01 f10b lsl.w r1, r1, fp appendSysExByte(value & 0x7F); - 1a9d6: f00a 0a7f and.w sl, sl, #127 ; 0x7f + 1aab6: f00a 0a7f and.w sl, sl, #127 ; 0x7f sysex[sysLength++] = value; - 1a9da: 7163 strb r3, [r4, #5] - 1a9dc: f647 537d movw r3, #32125 ; 0x7d7d + 1aaba: 7163 strb r3, [r4, #5] + 1aabc: f647 537d movw r3, #32125 ; 0x7d7d bitWrite(ports, sourcePortBit, 1); - 1a9e0: b2c9 uxtb r1, r1 + 1aac0: b2c9 uxtb r1, r1 sysex[sysLength++] = value; - 1a9e2: f884 8009 strb.w r8, [r4, #9] - 1a9e6: 80e3 strh r3, [r4, #6] - 1a9e8: 237f movs r3, #127 ; 0x7f - 1a9ea: f884 a008 strb.w sl, [r4, #8] - 1a9ee: 7323 strb r3, [r4, #12] - 1a9f0: 7b53 ldrb r3, [r2, #13] + 1aac2: f884 8009 strb.w r8, [r4, #9] + 1aac6: 80e3 strh r3, [r4, #6] + 1aac8: 237f movs r3, #127 ; 0x7f + 1aaca: f884 a008 strb.w sl, [r4, #8] + 1aace: 7323 strb r3, [r4, #12] + 1aad0: 7b53 ldrb r3, [r2, #13] bitWrite(ports, sourcePortBit, 1); - 1a9f2: 7021 strb r1, [r4, #0] + 1aad2: 7021 strb r1, [r4, #0] if(andByte && (value!=0xF0 && value!=0xF7)){ - 1a9f4: 2bf0 cmp r3, #240 ; 0xf0 - 1a9f6: d003 beq.n 1aa00 - 1a9f8: 2bf7 cmp r3, #247 ; 0xf7 + 1aad4: 2bf0 cmp r3, #240 ; 0xf0 + 1aad6: d003 beq.n 1aae0 + 1aad8: 2bf7 cmp r3, #247 ; 0xf7 value &= 0x7F; - 1a9fa: bf18 it ne - 1a9fc: f003 037f andne.w r3, r3, #127 ; 0x7f + 1aada: bf18 it ne + 1aadc: f003 037f andne.w r3, r3, #127 ; 0x7f sysex[sysLength++] = value; - 1aa00: 7363 strb r3, [r4, #13] + 1aae0: 7363 strb r3, [r4, #13] appendToSysEx7Bits(BMC_MIDI_GET_WORD(2,value)); - 1aa02: 0bb3 lsrs r3, r6, #14 - 1aa04: 73a3 strb r3, [r4, #14] + 1aae2: 0bb3 lsrs r3, r6, #14 + 1aae4: 73a3 strb r3, [r4, #14] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 1aa06: f3c6 13c6 ubfx r3, r6, #7, #7 + 1aae6: f3c6 13c6 ubfx r3, r6, #7, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1aa0a: f006 067f and.w r6, r6, #127 ; 0x7f + 1aaea: f006 067f and.w r6, r6, #127 ; 0x7f sysex[sysLength++] = value; - 1aa0e: 73e3 strb r3, [r4, #15] + 1aaee: 73e3 strb r3, [r4, #15] appendToSysEx7Bits(BMC_MIDI_GET_WORD(4,value)); - 1aa10: 0f2b lsrs r3, r5, #28 + 1aaf0: 0f2b lsrs r3, r5, #28 sysex[sysLength++] = value; - 1aa12: 7426 strb r6, [r4, #16] + 1aaf2: 7426 strb r6, [r4, #16] appendToSysEx7Bits(BMC_MIDI_GET_WORD(4,value)); - 1aa14: 7463 strb r3, [r4, #17] + 1aaf4: 7463 strb r3, [r4, #17] appendToSysEx7Bits(BMC_MIDI_GET_WORD(3,value)); - 1aa16: f3c5 5346 ubfx r3, r5, #21, #7 + 1aaf6: f3c5 5346 ubfx r3, r5, #21, #7 sysex[sysLength++] = value; - 1aa1a: 74a3 strb r3, [r4, #18] + 1aafa: 74a3 strb r3, [r4, #18] appendToSysEx7Bits(BMC_MIDI_GET_WORD(2,value)); - 1aa1c: f3c5 3386 ubfx r3, r5, #14, #7 + 1aafc: f3c5 3386 ubfx r3, r5, #14, #7 sysex[sysLength++] = value; - 1aa20: 74e3 strb r3, [r4, #19] + 1ab00: 74e3 strb r3, [r4, #19] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 1aa22: f3c5 13c6 ubfx r3, r5, #7, #7 + 1ab02: f3c5 13c6 ubfx r3, r5, #7, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1aa26: f005 057f and.w r5, r5, #127 ; 0x7f + 1ab06: f005 057f and.w r5, r5, #127 ; 0x7f sysex[sysLength++] = value; - 1aa2a: 7523 strb r3, [r4, #20] + 1ab0a: 7523 strb r3, [r4, #20] void setData1(uint8_t t_data1) { data1 = t_data1; } - 1aa2c: 2311 movs r3, #17 + 1ab0c: 2311 movs r3, #17 sysex[sysLength++] = value; - 1aa2e: 7565 strb r5, [r4, #21] + 1ab0e: 7565 strb r5, [r4, #21] } uint8_t getMessageFlags(){ return incoming.sysex[5]; - 1aa30: 7a92 ldrb r2, [r2, #10] + 1ab10: 7a92 ldrb r2, [r2, #10] void setData1(uint8_t t_data1) { data1 = t_data1; } - 1aa32: 70e3 strb r3, [r4, #3] + 1ab12: 70e3 strb r3, [r4, #3] if(andByte && (value!=0xF0 && value!=0xF7)){ - 1aa34: 2af0 cmp r2, #240 ; 0xf0 - 1aa36: d01b beq.n 1aa70 - 1aa38: 2af7 cmp r2, #247 ; 0xf7 - 1aa3a: d019 beq.n 1aa70 + 1ab14: 2af0 cmp r2, #240 ; 0xf0 + 1ab16: d01b beq.n 1ab50 + 1ab18: 2af7 cmp r2, #247 ; 0xf7 + 1ab1a: d019 beq.n 1ab50 value &= 0x7F; - 1aa3c: f002 027f and.w r2, r2, #127 ; 0x7f + 1ab1c: f002 027f and.w r2, r2, #127 ; 0x7f void setData1(uint8_t t_data1) { data1 = t_data1; } - 1aa40: 2312 movs r3, #18 + 1ab20: 2312 movs r3, #18 sysex[sysLength++] = value; - 1aa42: 75a2 strb r2, [r4, #22] + 1ab22: 75a2 strb r2, [r4, #22] void setData1(uint8_t t_data1) { data1 = t_data1; } - 1aa44: 70e3 strb r3, [r4, #3] + 1ab24: 70e3 strb r3, [r4, #3] // the payload buff.appendToSysEx32Bits(payload); // add the flags of the source message buff.appendSysExByte(getMessageFlags()); // send if(!forceResponse){ - 1aa46: f1b9 0f00 cmp.w r9, #0 - 1aa4a: d13a bne.n 1aac2 + 1ab26: f1b9 0f00 cmp.w r9, #0 + 1ab2a: d13a bne.n 1aba2 sendToEditor(buff); - 1aa4c: 2301 movs r3, #1 - 1aa4e: 2000 movs r0, #0 - 1aa50: a944 add r1, sp, #272 ; 0x110 - 1aa52: 22f7 movs r2, #247 ; 0xf7 - 1aa54: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 - 1aa58: 4668 mov r0, sp - 1aa5a: f00f fe55 bl 2a708 - 1aa5e: 4638 mov r0, r7 - 1aa60: e894 000e ldmia.w r4, {r1, r2, r3} - 1aa64: f7ff ff32 bl 1a8cc + 1ab2c: 2301 movs r3, #1 + 1ab2e: 2000 movs r0, #0 + 1ab30: a944 add r1, sp, #272 ; 0x110 + 1ab32: 22f7 movs r2, #247 ; 0xf7 + 1ab34: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 + 1ab38: 4668 mov r0, sp + 1ab3a: f00f fe59 bl 2a7f0 + 1ab3e: 4638 mov r0, r7 + 1ab40: e894 000e ldmia.w r4, {r1, r2, r3} + 1ab44: f7ff ff32 bl 1a9ac 0, // cable, used for USB false // should it trigger MIDI Out activity ); } } - 1aa68: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 1aa6c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1aa70: 2312 movs r3, #18 + 1ab48: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 1ab4c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1ab50: 2312 movs r3, #18 sysex[sysLength++] = value; - 1aa72: 75a2 strb r2, [r4, #22] + 1ab52: 75a2 strb r2, [r4, #22] void setData1(uint8_t t_data1) { data1 = t_data1; } - 1aa74: 70e3 strb r3, [r4, #3] + 1ab54: 70e3 strb r3, [r4, #3] if(!forceResponse){ - 1aa76: f1b9 0f00 cmp.w r9, #0 - 1aa7a: d0e7 beq.n 1aa4c + 1ab56: f1b9 0f00 cmp.w r9, #0 + 1ab5a: d0e7 beq.n 1ab2c if(addCrcByte && sysex[size()-1]!=0xF7){ - 1aa7c: 2af7 cmp r2, #247 ; 0xf7 - 1aa7e: d120 bne.n 1aac2 - 1aa80: 2611 movs r6, #17 - 1aa82: 46b0 mov r8, r6 + 1ab5c: 2af7 cmp r2, #247 ; 0xf7 + 1ab5e: d120 bne.n 1aba2 + 1ab60: 2611 movs r6, #17 + 1ab62: 46b0 mov r8, r6 void BMCEditor::sendNotification(uint16_t code, uint32_t payload, bool hasError, bool forceResponse){ - 1aa84: 2000 movs r0, #0 - 1aa86: 227d movs r2, #125 ; 0x7d - 1aa88: 2570 movs r5, #112 ; 0x70 - 1aa8a: f20d 1e09 addw lr, sp, #265 ; 0x109 - 1aa8e: e001 b.n 1aa94 + 1ab64: 2000 movs r0, #0 + 1ab66: 227d movs r2, #125 ; 0x7d + 1ab68: 2570 movs r5, #112 ; 0x70 + 1ab6a: f20d 1e09 addw lr, sp, #265 ; 0x109 + 1ab6e: e001 b.n 1ab74 crc ^= (sysex[i] & 0x7F); - 1aa90: f81e 2f01 ldrb.w r2, [lr, #1]! + 1ab70: f81e 2f01 ldrb.w r2, [lr, #1]! for(uint16_t i=0;i + 1ab80: 45c4 cmp ip, r8 + 1ab82: d3f5 bcc.n 1ab70 sysex[n] = crc; - 1aaa4: 19a2 adds r2, r4, r6 + 1ab84: 19a2 adds r2, r4, r6 midi.sendSysEx( - 1aaa6: 2400 movs r4, #0 - 1aaa8: 6878 ldr r0, [r7, #4] - 1aaaa: 7155 strb r5, [r2, #5] - 1aaac: f20d 1209 addw r2, sp, #265 ; 0x109 - 1aab0: 9400 str r4, [sp, #0] - 1aab2: e9cd 4401 strd r4, r4, [sp, #4] - 1aab6: f008 fb07 bl 230c8 -} - 1aaba: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 1aabe: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1ab86: 2400 movs r4, #0 + 1ab88: 6878 ldr r0, [r7, #4] + 1ab8a: 7155 strb r5, [r2, #5] + 1ab8c: f20d 1209 addw r2, sp, #265 ; 0x109 + 1ab90: 9400 str r4, [sp, #0] + 1ab92: e9cd 4401 strd r4, r4, [sp, #4] + 1ab96: f008 fafd bl 23194 +} + 1ab9a: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 1ab9e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} void setData1(uint8_t t_data1) { data1 = t_data1; } - 1aac2: 2313 movs r3, #19 - 1aac4: 2612 movs r6, #18 - 1aac6: 70e3 strb r3, [r4, #3] - 1aac8: 46b0 mov r8, r6 - 1aaca: e7db b.n 1aa84 + 1aba2: 2313 movs r3, #19 + 1aba4: 2612 movs r6, #18 + 1aba6: 70e3 strb r3, [r4, #3] + 1aba8: 46b0 mov r8, r6 + 1abaa: e7db b.n 1ab64 -0001aacc : +0001abac : if(!incoming.isEditorMessage()){ - 1aacc: 6bc2 ldr r2, [r0, #60] ; 0x3c + 1abac: 6bc2 ldr r2, [r0, #60] ; 0x3c return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 1aace: 7853 ldrb r3, [r2, #1] - 1aad0: 2bf0 cmp r3, #240 ; 0xf0 - 1aad2: d113 bne.n 1aafc - 1aad4: f8b2 3003 ldrh.w r3, [r2, #3] + 1abae: 7853 ldrb r3, [r2, #1] + 1abb0: 2bf0 cmp r3, #240 ; 0xf0 + 1abb2: d113 bne.n 1abdc + 1abb4: f8b2 3003 ldrh.w r3, [r2, #3] return (isSysEx() && isEditorSysExLength() && isEditorSysExId()); - 1aad8: 2b0a cmp r3, #10 - 1aada: d90f bls.n 1aafc + 1abb8: 2b0a cmp r3, #10 + 1abba: d90f bls.n 1abdc bool BMCEditor::read(){ - 1aadc: b570 push {r4, r5, r6, lr} + 1abbc: b570 push {r4, r5, r6, lr} return (BMC_MERGE_BYTES(sysex[1],sysex[2],sysex[3])==BMC_EDITOR_SYSEX_ID); - 1aade: 7991 ldrb r1, [r2, #6] - 1aae0: 4604 mov r4, r0 - 1aae2: 79d0 ldrb r0, [r2, #7] - 1aae4: b084 sub sp, #16 - 1aae6: 0409 lsls r1, r1, #16 - 1aae8: ea41 2100 orr.w r1, r1, r0, lsl #8 - 1aaec: 7a10 ldrb r0, [r2, #8] - 1aaee: 4301 orrs r1, r0 + 1abbe: 7991 ldrb r1, [r2, #6] + 1abc0: 4604 mov r4, r0 + 1abc2: 79d0 ldrb r0, [r2, #7] + 1abc4: b084 sub sp, #16 + 1abc6: 0409 lsls r1, r1, #16 + 1abc8: ea41 2100 orr.w r1, r1, r0, lsl #8 + 1abcc: 7a10 ldrb r0, [r2, #8] + 1abce: 4301 orrs r1, r0 return (isSysEx() && isEditorSysExLength() && isEditorSysExId()); - 1aaf0: 4857 ldr r0, [pc, #348] ; (1ac50 ) - 1aaf2: 4281 cmp r1, r0 - 1aaf4: d004 beq.n 1ab00 + 1abd0: 4857 ldr r0, [pc, #348] ; (1ad30 ) + 1abd2: 4281 cmp r1, r0 + 1abd4: d004 beq.n 1abe0 return false; - 1aaf6: 2000 movs r0, #0 + 1abd6: 2000 movs r0, #0 } - 1aaf8: b004 add sp, #16 - 1aafa: bd70 pop {r4, r5, r6, pc} + 1abd8: b004 add sp, #16 + 1abda: bd70 pop {r4, r5, r6, pc} return false; - 1aafc: 2000 movs r0, #0 + 1abdc: 2000 movs r0, #0 } - 1aafe: 4770 bx lr + 1abde: 4770 bx lr if(getMessageDeviceId() == deviceId){ - 1ab00: f894 002d ldrb.w r0, [r4, #45] ; 0x2d - 1ab04: 7a51 ldrb r1, [r2, #9] - 1ab06: 4288 cmp r0, r1 - 1ab08: d029 beq.n 1ab5e + 1abe0: f894 002d ldrb.w r0, [r4, #45] ; 0x2d + 1abe4: 7a51 ldrb r1, [r2, #9] + 1abe6: 4288 cmp r0, r1 + 1abe8: d029 beq.n 1ac3e } else if(chaingingPort!=BMC_NONE){ - 1ab0a: f894 1045 ldrb.w r1, [r4, #69] ; 0x45 - 1ab0e: b301 cbz r1, 1ab52 + 1abea: f894 1045 ldrb.w r1, [r4, #69] ; 0x45 + 1abee: b301 cbz r1, 1ac32 uint8_t getPort() { return ports; } - 1ab10: 7810 ldrb r0, [r2, #0] + 1abf0: 7810 ldrb r0, [r2, #0] if(!BMC_MATCH_PORT(incoming.getSource(), chaingingPort)){ - 1ab12: 4201 tst r1, r0 - 1ab14: d120 bne.n 1ab58 + 1abf2: 4201 tst r1, r0 + 1abf4: d120 bne.n 1ac38 if(chaingingEditorPort==0){ - 1ab16: f894 5046 ldrb.w r5, [r4, #70] ; 0x46 - 1ab1a: b91d cbnz r5, 1ab24 + 1abf6: f894 5046 ldrb.w r5, [r4, #70] ; 0x46 + 1abfa: b91d cbnz r5, 1ac04 chaingingEditorPort = incoming.getPort(); - 1ab1c: f884 0046 strb.w r0, [r4, #70] ; 0x46 - 1ab20: f8b2 3003 ldrh.w r3, [r2, #3] + 1abfc: f884 0046 strb.w r0, [r4, #70] ; 0x46 + 1ac00: f8b2 3003 ldrh.w r3, [r2, #3] midi.sendSysEx( - 1ab24: 2500 movs r5, #0 - 1ab26: 2601 movs r6, #1 - 1ab28: 3205 adds r2, #5 - 1ab2a: 9600 str r6, [sp, #0] - 1ab2c: e9cd 5501 strd r5, r5, [sp, #4] - 1ab30: 6860 ldr r0, [r4, #4] - 1ab32: f008 fac9 bl 230c8 + 1ac04: 2500 movs r5, #0 + 1ac06: 2601 movs r6, #1 + 1ac08: 3205 adds r2, #5 + 1ac0a: 9600 str r6, [sp, #0] + 1ac0c: e9cd 5501 strd r5, r5, [sp, #4] + 1ac10: 6860 ldr r0, [r4, #4] + 1ac12: f008 fabf bl 23194 incoming.reset(); - 1ab36: 6be4 ldr r4, [r4, #60] ; 0x3c + 1ac16: 6be4 ldr r4, [r4, #60] ; 0x3c memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 1ab38: 22fe movs r2, #254 ; 0xfe - 1ab3a: 4629 mov r1, r5 - 1ab3c: 1d60 adds r0, r4, #5 - 1ab3e: f013 fca5 bl 2e48c + 1ac18: 22fe movs r2, #254 ; 0xfe + 1ac1a: 4629 mov r1, r5 + 1ac1c: 1d60 adds r0, r4, #5 + 1ac1e: f013 fca9 bl 2e574 return false; - 1ab42: 4628 mov r0, r5 + 1ac22: 4628 mov r0, r5 void setStatus(uint8_t t_status) { status = t_status; } - 1ab44: 7065 strb r5, [r4, #1] + 1ac24: 7065 strb r5, [r4, #1] void setChannel(uint8_t t_channel) { channel = t_channel; } - 1ab46: 70a5 strb r5, [r4, #2] + 1ac26: 70a5 strb r5, [r4, #2] void setData1(uint8_t t_data1) { data1 = t_data1; } - 1ab48: 70e5 strb r5, [r4, #3] + 1ac28: 70e5 strb r5, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1ab4a: 7125 strb r5, [r4, #4] + 1ac2a: 7125 strb r5, [r4, #4] bitWrite(ports, sourcePortBit, 1); - 1ab4c: 7026 strb r6, [r4, #0] + 1ac2c: 7026 strb r6, [r4, #0] } - 1ab4e: b004 add sp, #16 - 1ab50: bd70 pop {r4, r5, r6, pc} + 1ac2e: b004 add sp, #16 + 1ac30: bd70 pop {r4, r5, r6, pc} return false; - 1ab52: 4608 mov r0, r1 + 1ac32: 4608 mov r0, r1 } - 1ab54: b004 add sp, #16 - 1ab56: bd70 pop {r4, r5, r6, pc} + 1ac34: b004 add sp, #16 + 1ac36: bd70 pop {r4, r5, r6, pc} outPort = chaingingEditorPort; - 1ab58: f894 1046 ldrb.w r1, [r4, #70] ; 0x46 - 1ab5c: e7e2 b.n 1ab24 + 1ac38: f894 1046 ldrb.w r1, [r4, #70] ; 0x46 + 1ac3c: e7e2 b.n 1ac04 uint8_t crcIndex = size()-2; - 1ab5e: 3b02 subs r3, #2 + 1ac3e: 3b02 subs r3, #2 for(uint16_t i=0;i - 1ab66: 1e5d subs r5, r3, #1 - 1ab68: 1d51 adds r1, r2, #5 - 1ab6a: 1d10 adds r0, r2, #4 + 1ac40: f013 03ff ands.w r3, r3, #255 ; 0xff + 1ac44: d071 beq.n 1ad2a + 1ac46: 1e5d subs r5, r3, #1 + 1ac48: 1d51 adds r1, r2, #5 + 1ac4a: 1d10 adds r0, r2, #4 uint8_t crc = 0; - 1ab6c: 2600 movs r6, #0 - 1ab6e: fa11 f585 uxtah r5, r1, r5 + 1ac4c: 2600 movs r6, #0 + 1ac4e: fa11 f585 uxtah r5, r1, r5 crc ^= (sysex[i] & 0x7F); - 1ab72: f810 1f01 ldrb.w r1, [r0, #1]! - 1ab76: f001 017f and.w r1, r1, #127 ; 0x7f + 1ac52: f810 1f01 ldrb.w r1, [r0, #1]! + 1ac56: f001 017f and.w r1, r1, #127 ; 0x7f for(uint16_t i=0;i + 1ac60: d1f7 bne.n 1ac52 uint8_t crcIncoming = sysex[crcIndex]; - 1ab82: 4413 add r3, r2 + 1ac62: 4413 add r3, r2 if(incoming.validateChecksum()){ - 1ab84: 795b ldrb r3, [r3, #5] - 1ab86: 42b3 cmp r3, r6 - 1ab88: d11f bne.n 1abca + 1ac64: 795b ldrb r3, [r3, #5] + 1ac66: 42b3 cmp r3, r6 + 1ac68: d11f bne.n 1acaa flags = value & 0x7F; - 1ab8a: 7a93 ldrb r3, [r2, #10] + 1ac6a: 7a93 ldrb r3, [r2, #10] utilityCommand(); - 1ab8c: 4620 mov r0, r4 - 1ab8e: f003 037f and.w r3, r3, #127 ; 0x7f - 1ab92: f884 3044 strb.w r3, [r4, #68] ; 0x44 + 1ac6c: 4620 mov r0, r4 + 1ac6e: f003 037f and.w r3, r3, #127 ; 0x7f + 1ac72: f884 3044 strb.w r3, [r4, #68] ; 0x44 if(isUtilityMessage()){ - 1ab96: 7b52 ldrb r2, [r2, #13] - 1ab98: 2a7e cmp r2, #126 ; 0x7e - 1ab9a: d053 beq.n 1ac44 + 1ac76: 7b52 ldrb r2, [r2, #13] + 1ac78: 2a7e cmp r2, #126 ; 0x7e + 1ac7a: d053 beq.n 1ad24 if(isLayerMessage()){ - 1ab9c: 079b lsls r3, r3, #30 - 1ab9e: d511 bpl.n 1abc4 + 1ac7c: 079b lsls r3, r3, #30 + 1ac7e: d511 bpl.n 1aca4 layerProcessMessage(); - 1aba0: f007 fd26 bl 225f0 + 1ac80: f007 fd26 bl 226d0 incoming.reset(); - 1aba4: 6be4 ldr r4, [r4, #60] ; 0x3c + 1ac84: 6be4 ldr r4, [r4, #60] ; 0x3c memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 1aba6: 22fe movs r2, #254 ; 0xfe - 1aba8: 2100 movs r1, #0 - 1abaa: 1d60 adds r0, r4, #5 - 1abac: f013 fc6e bl 2e48c + 1ac86: 22fe movs r2, #254 ; 0xfe + 1ac88: 2100 movs r1, #0 + 1ac8a: 1d60 adds r0, r4, #5 + 1ac8c: f013 fc72 bl 2e574 bitWrite(ports, sourcePortBit, 1); - 1abb0: 2201 movs r2, #1 + 1ac90: 2201 movs r2, #1 void setStatus(uint8_t t_status) { status = t_status; } - 1abb2: 2300 movs r3, #0 + 1ac92: 2300 movs r3, #0 return true; - 1abb4: 4610 mov r0, r2 + 1ac94: 4610 mov r0, r2 bitWrite(ports, sourcePortBit, 1); - 1abb6: 7022 strb r2, [r4, #0] + 1ac96: 7022 strb r2, [r4, #0] void setStatus(uint8_t t_status) { status = t_status; } - 1abb8: 7063 strb r3, [r4, #1] + 1ac98: 7063 strb r3, [r4, #1] void setChannel(uint8_t t_channel) { channel = t_channel; } - 1abba: 70a3 strb r3, [r4, #2] + 1ac9a: 70a3 strb r3, [r4, #2] void setData1(uint8_t t_data1) { data1 = t_data1; } - 1abbc: 70e3 strb r3, [r4, #3] + 1ac9c: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1abbe: 7123 strb r3, [r4, #4] + 1ac9e: 7123 strb r3, [r4, #4] } - 1abc0: b004 add sp, #16 - 1abc2: bd70 pop {r4, r5, r6, pc} + 1aca0: b004 add sp, #16 + 1aca2: bd70 pop {r4, r5, r6, pc} globalProcessMessage(); - 1abc4: f007 f858 bl 21c78 - 1abc8: e7ec b.n 1aba4 - 1abca: 2100 movs r1, #0 - 1abcc: 4821 ldr r0, [pc, #132] ; (1ac54 ) - 1abce: f011 fcbb bl 2c548 - 1abd2: 4821 ldr r0, [pc, #132] ; (1ac58 ) - 1abd4: f00f f94e bl 29e74 - 1abd8: 212e movs r1, #46 ; 0x2e - 1abda: 4820 ldr r0, [pc, #128] ; (1ac5c ) - 1abdc: f011 fcb4 bl 2c548 - 1abe0: 481d ldr r0, [pc, #116] ; (1ac58 ) - 1abe2: f00f f947 bl 29e74 - 1abe6: 212e movs r1, #46 ; 0x2e - 1abe8: 481c ldr r0, [pc, #112] ; (1ac5c ) - 1abea: f011 fcad bl 2c548 - 1abee: 481a ldr r0, [pc, #104] ; (1ac58 ) - 1abf0: f00f f940 bl 29e74 - 1abf4: 2101 movs r1, #1 - 1abf6: 481a ldr r0, [pc, #104] ; (1ac60 ) - 1abf8: f011 fca6 bl 2c548 - 1abfc: 2119 movs r1, #25 - 1abfe: 4819 ldr r0, [pc, #100] ; (1ac64 ) - 1ac00: f011 fca2 bl 2c548 - 1ac04: 4814 ldr r0, [pc, #80] ; (1ac58 ) - 1ac06: f00f f935 bl 29e74 - 1ac0a: 212e movs r1, #46 ; 0x2e - 1ac0c: 4813 ldr r0, [pc, #76] ; (1ac5c ) - 1ac0e: f011 fc9b bl 2c548 - 1ac12: 4811 ldr r0, [pc, #68] ; (1ac58 ) - 1ac14: f00f f92e bl 29e74 - 1ac18: 212e movs r1, #46 ; 0x2e - 1ac1a: 4810 ldr r0, [pc, #64] ; (1ac5c ) - 1ac1c: f011 fc94 bl 2c548 - 1ac20: 480d ldr r0, [pc, #52] ; (1ac58 ) - 1ac22: f00f f927 bl 29e74 - 1ac26: 2100 movs r1, #0 - 1ac28: 480a ldr r0, [pc, #40] ; (1ac54 ) - 1ac2a: f011 fc8d bl 2c548 - 1ac2e: 480a ldr r0, [pc, #40] ; (1ac58 ) - 1ac30: f00f f920 bl 29e74 + 1aca4: f007 f858 bl 21d58 + 1aca8: e7ec b.n 1ac84 + 1acaa: 2100 movs r1, #0 + 1acac: 4821 ldr r0, [pc, #132] ; (1ad34 ) + 1acae: f011 fcbf bl 2c630 + 1acb2: 4821 ldr r0, [pc, #132] ; (1ad38 ) + 1acb4: f00f f954 bl 29f60 + 1acb8: 212e movs r1, #46 ; 0x2e + 1acba: 4820 ldr r0, [pc, #128] ; (1ad3c ) + 1acbc: f011 fcb8 bl 2c630 + 1acc0: 481d ldr r0, [pc, #116] ; (1ad38 ) + 1acc2: f00f f94d bl 29f60 + 1acc6: 212e movs r1, #46 ; 0x2e + 1acc8: 481c ldr r0, [pc, #112] ; (1ad3c ) + 1acca: f011 fcb1 bl 2c630 + 1acce: 481a ldr r0, [pc, #104] ; (1ad38 ) + 1acd0: f00f f946 bl 29f60 + 1acd4: 2101 movs r1, #1 + 1acd6: 481a ldr r0, [pc, #104] ; (1ad40 ) + 1acd8: f011 fcaa bl 2c630 + 1acdc: 2119 movs r1, #25 + 1acde: 4819 ldr r0, [pc, #100] ; (1ad44 ) + 1ace0: f011 fca6 bl 2c630 + 1ace4: 4814 ldr r0, [pc, #80] ; (1ad38 ) + 1ace6: f00f f93b bl 29f60 + 1acea: 212e movs r1, #46 ; 0x2e + 1acec: 4813 ldr r0, [pc, #76] ; (1ad3c ) + 1acee: f011 fc9f bl 2c630 + 1acf2: 4811 ldr r0, [pc, #68] ; (1ad38 ) + 1acf4: f00f f934 bl 29f60 + 1acf8: 212e movs r1, #46 ; 0x2e + 1acfa: 4810 ldr r0, [pc, #64] ; (1ad3c ) + 1acfc: f011 fc98 bl 2c630 + 1ad00: 480d ldr r0, [pc, #52] ; (1ad38 ) + 1ad02: f00f f92d bl 29f60 + 1ad06: 2100 movs r1, #0 + 1ad08: 480a ldr r0, [pc, #40] ; (1ad34 ) + 1ad0a: f011 fc91 bl 2c630 + 1ad0e: 480a ldr r0, [pc, #40] ; (1ad38 ) + 1ad10: f00f f926 bl 29f60 sendNotification(0x01, BMC_NOTIFY_INVALID_CHECKSUM); - 1ac34: 2300 movs r3, #0 - 1ac36: 2209 movs r2, #9 - 1ac38: 2101 movs r1, #1 - 1ac3a: 4620 mov r0, r4 - 1ac3c: 9300 str r3, [sp, #0] - 1ac3e: f7ff fea3 bl 1a988 - 1ac42: e7af b.n 1aba4 + 1ad14: 2300 movs r3, #0 + 1ad16: 2209 movs r2, #9 + 1ad18: 2101 movs r1, #1 + 1ad1a: 4620 mov r0, r4 + 1ad1c: 9300 str r3, [sp, #0] + 1ad1e: f7ff fea3 bl 1aa68 + 1ad22: e7af b.n 1ac84 utilityCommand(); - 1ac44: f007 fcee bl 22624 + 1ad24: f007 fcee bl 22704 incoming.reset(); - 1ac48: e7ac b.n 1aba4 + 1ad28: e7ac b.n 1ac84 uint8_t crc = 0; - 1ac4a: 461e mov r6, r3 - 1ac4c: e799 b.n 1ab82 - 1ac4e: bf00 nop - 1ac50: 007d7d7d .word 0x007d7d7d - 1ac54: 20003c58 .word 0x20003c58 - 1ac58: 20004ba8 .word 0x20004ba8 - 1ac5c: 20003ff4 .word 0x20003ff4 - 1ac60: 200023ec .word 0x200023ec - 1ac64: 20003e6c .word 0x20003e6c - -0001ac68 : + 1ad2a: 461e mov r6, r3 + 1ad2c: e799 b.n 1ac62 + 1ad2e: bf00 nop + 1ad30: 007d7d7d .word 0x007d7d7d + 1ad34: 20003d18 .word 0x20003d18 + 1ad38: 20004c68 .word 0x20004c68 + 1ad3c: 200040b4 .word 0x200040b4 + 1ad40: 200023ec .word 0x200023ec + 1ad44: 20003f2c .word 0x20003f2c + +0001ad48 : if(andByte && (value!=0xF0 && value!=0xF7)){ - 1ac68: b12a cbz r2, 1ac76 - 1ac6a: 29f0 cmp r1, #240 ; 0xf0 - 1ac6c: d003 beq.n 1ac76 - 1ac6e: 29f7 cmp r1, #247 ; 0xf7 + 1ad48: b12a cbz r2, 1ad56 + 1ad4a: 29f0 cmp r1, #240 ; 0xf0 + 1ad4c: d003 beq.n 1ad56 + 1ad4e: 29f7 cmp r1, #247 ; 0xf7 value &= 0x7F; - 1ac70: bf18 it ne - 1ac72: f001 017f andne.w r1, r1, #127 ; 0x7f + 1ad50: bf18 it ne + 1ad52: f001 017f andne.w r1, r1, #127 ; 0x7f uint16_t sysLength = size(); - 1ac76: f8b0 3003 ldrh.w r3, [r0, #3] + 1ad56: f8b0 3003 ldrh.w r3, [r0, #3] if(sysLength + 1ad5a: 2bfd cmp r3, #253 ; 0xfd + 1ad5c: d807 bhi.n 1ad6e sysex[sysLength++] = value; - 1ac7e: eb00 0c03 add.w ip, r0, r3 + 1ad5e: eb00 0c03 add.w ip, r0, r3 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1ac82: 2200 movs r2, #0 + 1ad62: 2200 movs r2, #0 sysex[sysLength++] = value; - 1ac84: 3301 adds r3, #1 - 1ac86: f88c 1005 strb.w r1, [ip, #5] + 1ad64: 3301 adds r3, #1 + 1ad66: f88c 1005 strb.w r1, [ip, #5] setData1(value & 0xFF); - 1ac8a: 70c3 strb r3, [r0, #3] + 1ad6a: 70c3 strb r3, [r0, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1ac8c: 7102 strb r2, [r0, #4] + 1ad6c: 7102 strb r2, [r0, #4] } - 1ac8e: 4770 bx lr + 1ad6e: 4770 bx lr -0001ac90 : +0001ad70 : size_t write(const char *str) { if (str == nullptr) return 0; - 1ac90: b169 cbz r1, 1acae - 1ac92: b570 push {r4, r5, r6, lr} - 1ac94: 4605 mov r5, r0 + 1ad70: b169 cbz r1, 1ad8e + 1ad72: b570 push {r4, r5, r6, lr} + 1ad74: 4605 mov r5, r0 return write((const uint8_t *)str, strlen(str)); } - 1ac96: 4608 mov r0, r1 - 1ac98: 460c mov r4, r1 - 1ac9a: f013 ff51 bl 2eb40 - 1ac9e: 682b ldr r3, [r5, #0] - 1aca0: 4602 mov r2, r0 - 1aca2: 4621 mov r1, r4 - 1aca4: 4628 mov r0, r5 - 1aca6: 685b ldr r3, [r3, #4] - 1aca8: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 1acac: 4718 bx r3 - 1acae: 4770 bx lr - -0001acb0 : + 1ad76: 4608 mov r0, r1 + 1ad78: 460c mov r4, r1 + 1ad7a: f013 ff61 bl 2ec40 + 1ad7e: 682b ldr r3, [r5, #0] + 1ad80: 4602 mov r2, r0 + 1ad82: 4621 mov r1, r4 + 1ad84: 4628 mov r0, r5 + 1ad86: 685b ldr r3, [r3, #4] + 1ad88: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 1ad8c: 4718 bx r3 + 1ad8e: 4770 bx lr + +0001ad90 : size_t println(const char s[]) { return print(s) + println(); } - 1acb0: b538 push {r3, r4, r5, lr} - 1acb2: 4604 mov r4, r0 + 1ad90: b538 push {r3, r4, r5, lr} + 1ad92: 4604 mov r4, r0 size_t write(const char *str) { if (str == nullptr) return 0; - 1acb4: b149 cbz r1, 1acca + 1ad94: b149 cbz r1, 1adaa return write((const uint8_t *)str, strlen(str)); } - 1acb6: 4608 mov r0, r1 - 1acb8: 460d mov r5, r1 - 1acba: f013 ff41 bl 2eb40 - 1acbe: 6823 ldr r3, [r4, #0] - 1acc0: 4602 mov r2, r0 - 1acc2: 4629 mov r1, r5 - 1acc4: 685b ldr r3, [r3, #4] - 1acc6: 4620 mov r0, r4 - 1acc8: 4798 blx r3 + 1ad96: 4608 mov r0, r1 + 1ad98: 460d mov r5, r1 + 1ad9a: f013 ff51 bl 2ec40 + 1ad9e: 6823 ldr r3, [r4, #0] + 1ada0: 4602 mov r2, r0 + 1ada2: 4629 mov r1, r5 + 1ada4: 685b ldr r3, [r3, #4] + 1ada6: 4620 mov r0, r4 + 1ada8: 4798 blx r3 size_t println(const char s[]) { return print(s) + println(); } - 1acca: 4620 mov r0, r4 - 1accc: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 1acd0: f00f b8d0 b.w 29e74 + 1adaa: 4620 mov r0, r4 + 1adac: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 1adb0: f00f b8d6 b.w 29f60 -0001acd4 : +0001adb4 : switch(device){ - 1acd4: 3904 subs r1, #4 + 1adb4: 3904 subs r1, #4 static BMCUIData getUIData(uint8_t device, int16_t n){ - 1acd6: 4684 mov ip, r0 - 1acd8: b530 push {r4, r5, lr} - 1acda: b087 sub sp, #28 + 1adb6: 4684 mov ip, r0 + 1adb8: b530 push {r4, r5, lr} + 1adba: b087 sub sp, #28 switch(device){ - 1acdc: 2925 cmp r1, #37 ; 0x25 - 1acde: d819 bhi.n 1ad14 - 1ace0: e8df f001 tbb [pc, r1] - 1ace4: 4e181347 .word 0x4e181347 - 1ace8: 18181818 .word 0x18181818 - 1acec: 18551818 .word 0x18551818 - 1acf0: 18181818 .word 0x18181818 - 1acf4: 185c1818 .word 0x185c1818 - 1acf8: 4318182d .word 0x4318182d - 1acfc: 182d2d18 .word 0x182d2d18 - 1ad00: 1818182d .word 0x1818182d - 1ad04: 18181818 .word 0x18181818 - 1ad08: 6318 .short 0x6318 + 1adbc: 2925 cmp r1, #37 ; 0x25 + 1adbe: d819 bhi.n 1adf4 + 1adc0: e8df f001 tbb [pc, r1] + 1adc4: 4e181347 .word 0x4e181347 + 1adc8: 18181818 .word 0x18181818 + 1adcc: 18551818 .word 0x18551818 + 1add0: 18181818 .word 0x18181818 + 1add4: 185c1818 .word 0x185c1818 + 1add8: 4318182d .word 0x4318182d + 1addc: 182d2d18 .word 0x182d2d18 + 1ade0: 1818182d .word 0x1818182d + 1ade4: 18181818 .word 0x18181818 + 1ade8: 6318 .short 0x6318 switch(n){ - 1ad0a: 2a00 cmp r2, #0 - 1ad0c: f000 808d beq.w 1ae2a - 1ad10: 2a01 cmp r2, #1 - 1ad12: d05a beq.n 1adca + 1adea: 2a00 cmp r2, #0 + 1adec: f000 808d beq.w 1af0a + 1adf0: 2a01 cmp r2, #1 + 1adf2: d05a beq.n 1aeaa BMCUIData e; - 1ad14: 4c46 ldr r4, [pc, #280] ; (1ae30 ) - 1ad16: ad01 add r5, sp, #4 - 1ad18: cc0f ldmia r4!, {r0, r1, r2, r3} + 1adf4: 4c46 ldr r4, [pc, #280] ; (1af10 ) + 1adf6: ad01 add r5, sp, #4 + 1adf8: cc0f ldmia r4!, {r0, r1, r2, r3} return e; - 1ad1a: 46ae mov lr, r5 + 1adfa: 46ae mov lr, r5 BMCUIData e; - 1ad1c: c50f stmia r5!, {r0, r1, r2, r3} - 1ad1e: 6823 ldr r3, [r4, #0] + 1adfc: c50f stmia r5!, {r0, r1, r2, r3} + 1adfe: 6823 ldr r3, [r4, #0] return e; - 1ad20: f8cc 3010 str.w r3, [ip, #16] - 1ad24: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} - 1ad28: f8cc 0000 str.w r0, [ip] + 1ae00: f8cc 3010 str.w r3, [ip, #16] + 1ae04: e8be 000f ldmia.w lr!, {r0, r1, r2, r3} + 1ae08: f8cc 0000 str.w r0, [ip] } - 1ad2c: 4660 mov r0, ip + 1ae0c: 4660 mov r0, ip return e; - 1ad2e: f8cc 1004 str.w r1, [ip, #4] - 1ad32: f8cc 2008 str.w r2, [ip, #8] - 1ad36: f8cc 300c str.w r3, [ip, #12] + 1ae0e: f8cc 1004 str.w r1, [ip, #4] + 1ae12: f8cc 2008 str.w r2, [ip, #8] + 1ae16: f8cc 300c str.w r3, [ip, #12] } - 1ad3a: b007 add sp, #28 - 1ad3c: bd30 pop {r4, r5, pc} + 1ae1a: b007 add sp, #28 + 1ae1c: bd30 pop {r4, r5, pc} {BMCUIData e; return e;} - 1ad3e: 4c3c ldr r4, [pc, #240] ; (1ae30 ) - 1ad40: f10d 0e04 add.w lr, sp, #4 - 1ad44: cc0f ldmia r4!, {r0, r1, r2, r3} - 1ad46: 4675 mov r5, lr - 1ad48: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} - 1ad4c: 6823 ldr r3, [r4, #0] - 1ad4e: f8cc 3010 str.w r3, [ip, #16] - 1ad52: cd0f ldmia r5!, {r0, r1, r2, r3} - 1ad54: f8cc 0000 str.w r0, [ip] - } - 1ad58: 4660 mov r0, ip + 1ae1e: 4c3c ldr r4, [pc, #240] ; (1af10 ) + 1ae20: f10d 0e04 add.w lr, sp, #4 + 1ae24: cc0f ldmia r4!, {r0, r1, r2, r3} + 1ae26: 4675 mov r5, lr + 1ae28: e8ae 000f stmia.w lr!, {r0, r1, r2, r3} + 1ae2c: 6823 ldr r3, [r4, #0] + 1ae2e: f8cc 3010 str.w r3, [ip, #16] + 1ae32: cd0f ldmia r5!, {r0, r1, r2, r3} + 1ae34: f8cc 0000 str.w r0, [ip] + } + 1ae38: 4660 mov r0, ip {BMCUIData e; return e;} - 1ad5a: f8cc 1004 str.w r1, [ip, #4] - 1ad5e: f8cc 2008 str.w r2, [ip, #8] - 1ad62: f8cc 300c str.w r3, [ip, #12] + 1ae3a: f8cc 1004 str.w r1, [ip, #4] + 1ae3e: f8cc 2008 str.w r2, [ip, #8] + 1ae42: f8cc 300c str.w r3, [ip, #12] } - 1ad66: b007 add sp, #28 - 1ad68: bd30 pop {r4, r5, pc} + 1ae46: b007 add sp, #28 + 1ae48: bd30 pop {r4, r5, pc} switch(n){ - 1ad6a: 2a00 cmp r2, #0 - 1ad6c: d1d2 bne.n 1ad14 + 1ae4a: 2a00 cmp r2, #0 + 1ae4c: d1d2 bne.n 1adf4 case 0: return BMC_DEVICE_UI_AUX_JACK_1; - 1ad6e: 4c31 ldr r4, [pc, #196] ; (1ae34 ) - 1ad70: e01c b.n 1adac + 1ae4e: 4c31 ldr r4, [pc, #196] ; (1af14 ) + 1ae50: e01c b.n 1ae8c switch(n){ - 1ad72: 2a05 cmp r2, #5 - 1ad74: d8ce bhi.n 1ad14 - 1ad76: e8df f002 tbb [pc, r2] - 1ad7a: 5456 .short 0x5456 - 1ad7c: 4c4e5052 .word 0x4c4e5052 + 1ae52: 2a05 cmp r2, #5 + 1ae54: d8ce bhi.n 1adf4 + 1ae56: e8df f002 tbb [pc, r2] + 1ae5a: 5456 .short 0x5456 + 1ae5c: 4c4e5052 .word 0x4c4e5052 switch(n){ - 1ad80: 2a04 cmp r2, #4 - 1ad82: d8c7 bhi.n 1ad14 - 1ad84: e8df f002 tbb [pc, r2] - 1ad88: 2527292b .word 0x2527292b - 1ad8c: 23 .byte 0x23 - 1ad8d: 00 .byte 0x00 + 1ae60: 2a04 cmp r2, #4 + 1ae62: d8c7 bhi.n 1adf4 + 1ae64: e8df f002 tbb [pc, r2] + 1ae68: 2527292b .word 0x2527292b + 1ae6c: 23 .byte 0x23 + 1ae6d: 00 .byte 0x00 switch(n){ - 1ad8e: 2a05 cmp r2, #5 - 1ad90: d8c0 bhi.n 1ad14 - 1ad92: e8df f002 tbb [pc, r2] - 1ad96: 2a26 .short 0x2a26 - 1ad98: 36383a28 .word 0x36383a28 + 1ae6e: 2a05 cmp r2, #5 + 1ae70: d8c0 bhi.n 1adf4 + 1ae72: e8df f002 tbb [pc, r2] + 1ae76: 2a26 .short 0x2a26 + 1ae78: 36383a28 .word 0x36383a28 switch(n){ - 1ad9c: 2a05 cmp r2, #5 - 1ad9e: d8b9 bhi.n 1ad14 - 1ada0: e8df f002 tbb [pc, r2] - 1ada4: 27292b2d .word 0x27292b2d - 1ada8: 3525 .short 0x3525 + 1ae7c: 2a05 cmp r2, #5 + 1ae7e: d8b9 bhi.n 1adf4 + 1ae80: e8df f002 tbb [pc, r2] + 1ae84: 27292b2d .word 0x27292b2d + 1ae88: 3525 .short 0x3525 return BMC_DEVICE_UI_SHORTCUTS_1; - 1adaa: 4c23 ldr r4, [pc, #140] ; (1ae38 ) + 1ae8a: 4c23 ldr r4, [pc, #140] ; (1af18 ) case 5: return BMC_DEVICE_UI_OLED_6; - 1adac: cc0f ldmia r4!, {r0, r1, r2, r3} - 1adae: f8cc 0000 str.w r0, [ip] - 1adb2: 6820 ldr r0, [r4, #0] - 1adb4: f8cc 1004 str.w r1, [ip, #4] - 1adb8: f8cc 0010 str.w r0, [ip, #16] + 1ae8c: cc0f ldmia r4!, {r0, r1, r2, r3} + 1ae8e: f8cc 0000 str.w r0, [ip] + 1ae92: 6820 ldr r0, [r4, #0] + 1ae94: f8cc 1004 str.w r1, [ip, #4] + 1ae98: f8cc 0010 str.w r0, [ip, #16] } - 1adbc: 4660 mov r0, ip + 1ae9c: 4660 mov r0, ip case 5: return BMC_DEVICE_UI_OLED_6; - 1adbe: f8cc 2008 str.w r2, [ip, #8] - 1adc2: f8cc 300c str.w r3, [ip, #12] + 1ae9e: f8cc 2008 str.w r2, [ip, #8] + 1aea2: f8cc 300c str.w r3, [ip, #12] } - 1adc6: b007 add sp, #28 - 1adc8: bd30 pop {r4, r5, pc} + 1aea6: b007 add sp, #28 + 1aea8: bd30 pop {r4, r5, pc} case 1: return BMC_DEVICE_UI_GLOBAL_BUTTON_2; - 1adca: 4c1c ldr r4, [pc, #112] ; (1ae3c ) - 1adcc: e7ee b.n 1adac + 1aeaa: 4c1c ldr r4, [pc, #112] ; (1af1c ) + 1aeac: e7ee b.n 1ae8c case 4: return BMC_DEVICE_UI_GLOBAL_LED_5; - 1adce: 4c1c ldr r4, [pc, #112] ; (1ae40 ) - 1add0: e7ec b.n 1adac + 1aeae: 4c1c ldr r4, [pc, #112] ; (1af20 ) + 1aeb0: e7ec b.n 1ae8c case 3: return BMC_DEVICE_UI_GLOBAL_LED_4; - 1add2: 4c1c ldr r4, [pc, #112] ; (1ae44 ) - 1add4: e7ea b.n 1adac + 1aeb2: 4c1c ldr r4, [pc, #112] ; (1af24 ) + 1aeb4: e7ea b.n 1ae8c case 2: return BMC_DEVICE_UI_GLOBAL_LED_3; - 1add6: 4c1c ldr r4, [pc, #112] ; (1ae48 ) - 1add8: e7e8 b.n 1adac + 1aeb6: 4c1c ldr r4, [pc, #112] ; (1af28 ) + 1aeb8: e7e8 b.n 1ae8c case 1: return BMC_DEVICE_UI_GLOBAL_LED_2; - 1adda: 4c1c ldr r4, [pc, #112] ; (1ae4c ) - 1addc: e7e6 b.n 1adac + 1aeba: 4c1c ldr r4, [pc, #112] ; (1af2c ) + 1aebc: e7e6 b.n 1ae8c case 0: return BMC_DEVICE_UI_GLOBAL_LED_1; - 1adde: 4c1c ldr r4, [pc, #112] ; (1ae50 ) - 1ade0: e7e4 b.n 1adac + 1aebe: 4c1c ldr r4, [pc, #112] ; (1af30 ) + 1aec0: e7e4 b.n 1ae8c case 0: return BMC_DEVICE_UI_RGB_PIXEL_1; - 1ade2: 4c1c ldr r4, [pc, #112] ; (1ae54 ) - 1ade4: e7e2 b.n 1adac + 1aec2: 4c1c ldr r4, [pc, #112] ; (1af34 ) + 1aec4: e7e2 b.n 1ae8c case 2: return BMC_DEVICE_UI_RGB_PIXEL_3; - 1ade6: 4c1c ldr r4, [pc, #112] ; (1ae58 ) - 1ade8: e7e0 b.n 1adac + 1aec6: 4c1c ldr r4, [pc, #112] ; (1af38 ) + 1aec8: e7e0 b.n 1ae8c case 1: return BMC_DEVICE_UI_RGB_PIXEL_2; - 1adea: 4c1c ldr r4, [pc, #112] ; (1ae5c ) - 1adec: e7de b.n 1adac + 1aeca: 4c1c ldr r4, [pc, #112] ; (1af3c ) + 1aecc: e7de b.n 1ae8c case 4: return BMC_DEVICE_UI_OLED_5; - 1adee: 4c1c ldr r4, [pc, #112] ; (1ae60 ) - 1adf0: e7dc b.n 1adac + 1aece: 4c1c ldr r4, [pc, #112] ; (1af40 ) + 1aed0: e7dc b.n 1ae8c case 3: return BMC_DEVICE_UI_OLED_4; - 1adf2: 4c1c ldr r4, [pc, #112] ; (1ae64 ) - 1adf4: e7da b.n 1adac + 1aed2: 4c1c ldr r4, [pc, #112] ; (1af44 ) + 1aed4: e7da b.n 1ae8c case 2: return BMC_DEVICE_UI_OLED_3; - 1adf6: 4c1c ldr r4, [pc, #112] ; (1ae68 ) - 1adf8: e7d8 b.n 1adac + 1aed6: 4c1c ldr r4, [pc, #112] ; (1af48 ) + 1aed8: e7d8 b.n 1ae8c case 1: return BMC_DEVICE_UI_OLED_2; - 1adfa: 4c1c ldr r4, [pc, #112] ; (1ae6c ) - 1adfc: e7d6 b.n 1adac + 1aeda: 4c1c ldr r4, [pc, #112] ; (1af4c ) + 1aedc: e7d6 b.n 1ae8c case 0: return BMC_DEVICE_UI_OLED_1; - 1adfe: 4c1c ldr r4, [pc, #112] ; (1ae70 ) - 1ae00: e7d4 b.n 1adac + 1aede: 4c1c ldr r4, [pc, #112] ; (1af50 ) + 1aee0: e7d4 b.n 1ae8c case 5: return BMC_DEVICE_UI_RGB_PIXEL_6; - 1ae02: 4c1c ldr r4, [pc, #112] ; (1ae74 ) - 1ae04: e7d2 b.n 1adac + 1aee2: 4c1c ldr r4, [pc, #112] ; (1af54 ) + 1aee4: e7d2 b.n 1ae8c case 4: return BMC_DEVICE_UI_RGB_PIXEL_5; - 1ae06: 4c1c ldr r4, [pc, #112] ; (1ae78 ) - 1ae08: e7d0 b.n 1adac + 1aee6: 4c1c ldr r4, [pc, #112] ; (1af58 ) + 1aee8: e7d0 b.n 1ae8c case 3: return BMC_DEVICE_UI_RGB_PIXEL_4; - 1ae0a: 4c1c ldr r4, [pc, #112] ; (1ae7c ) - 1ae0c: e7ce b.n 1adac + 1aeea: 4c1c ldr r4, [pc, #112] ; (1af5c ) + 1aeec: e7ce b.n 1ae8c case 5: return BMC_DEVICE_UI_OLED_6; - 1ae0e: 4c1c ldr r4, [pc, #112] ; (1ae80 ) - 1ae10: e7cc b.n 1adac + 1aeee: 4c1c ldr r4, [pc, #112] ; (1af60 ) + 1aef0: e7cc b.n 1ae8c case 5: return BMC_DEVICE_UI_BUTTON_6; - 1ae12: 4c1c ldr r4, [pc, #112] ; (1ae84 ) - 1ae14: e7ca b.n 1adac + 1aef2: 4c1c ldr r4, [pc, #112] ; (1af64 ) + 1aef4: e7ca b.n 1ae8c case 4: return BMC_DEVICE_UI_BUTTON_5; - 1ae16: 4c1c ldr r4, [pc, #112] ; (1ae88 ) - 1ae18: e7c8 b.n 1adac + 1aef6: 4c1c ldr r4, [pc, #112] ; (1af68 ) + 1aef8: e7c8 b.n 1ae8c case 3: return BMC_DEVICE_UI_BUTTON_4; - 1ae1a: 4c1c ldr r4, [pc, #112] ; (1ae8c ) - 1ae1c: e7c6 b.n 1adac + 1aefa: 4c1c ldr r4, [pc, #112] ; (1af6c ) + 1aefc: e7c6 b.n 1ae8c case 2: return BMC_DEVICE_UI_BUTTON_3; - 1ae1e: 4c1c ldr r4, [pc, #112] ; (1ae90 ) - 1ae20: e7c4 b.n 1adac + 1aefe: 4c1c ldr r4, [pc, #112] ; (1af70 ) + 1af00: e7c4 b.n 1ae8c case 1: return BMC_DEVICE_UI_BUTTON_2; - 1ae22: 4c1c ldr r4, [pc, #112] ; (1ae94 ) - 1ae24: e7c2 b.n 1adac + 1af02: 4c1c ldr r4, [pc, #112] ; (1af74 ) + 1af04: e7c2 b.n 1ae8c case 0: return BMC_DEVICE_UI_BUTTON_1; - 1ae26: 4c1c ldr r4, [pc, #112] ; (1ae98 ) - 1ae28: e7c0 b.n 1adac + 1af06: 4c1c ldr r4, [pc, #112] ; (1af78 ) + 1af08: e7c0 b.n 1ae8c case 0: return BMC_DEVICE_UI_GLOBAL_BUTTON_1; - 1ae2a: 4c1c ldr r4, [pc, #112] ; (1ae9c ) - 1ae2c: e7be b.n 1adac - 1ae2e: bf00 nop - 1ae30: 20000bac .word 0x20000bac - 1ae34: 20000d3c .word 0x20000d3c - 1ae38: 20000b98 .word 0x20000b98 - 1ae3c: 20000c4c .word 0x20000c4c - 1ae40: 20000cb0 .word 0x20000cb0 - 1ae44: 20000c9c .word 0x20000c9c - 1ae48: 20000c88 .word 0x20000c88 - 1ae4c: 20000c74 .word 0x20000c74 - 1ae50: 20000c60 .word 0x20000c60 - 1ae54: 20000cc4 .word 0x20000cc4 - 1ae58: 20000cec .word 0x20000cec - 1ae5c: 20000cd8 .word 0x20000cd8 - 1ae60: 20000da0 .word 0x20000da0 - 1ae64: 20000d8c .word 0x20000d8c - 1ae68: 20000d78 .word 0x20000d78 - 1ae6c: 20000d64 .word 0x20000d64 - 1ae70: 20000d50 .word 0x20000d50 - 1ae74: 20000d28 .word 0x20000d28 - 1ae78: 20000d14 .word 0x20000d14 - 1ae7c: 20000d00 .word 0x20000d00 - 1ae80: 20000db4 .word 0x20000db4 - 1ae84: 20000c24 .word 0x20000c24 - 1ae88: 20000c10 .word 0x20000c10 - 1ae8c: 20000bfc .word 0x20000bfc - 1ae90: 20000be8 .word 0x20000be8 - 1ae94: 20000bd4 .word 0x20000bd4 - 1ae98: 20000bc0 .word 0x20000bc0 - 1ae9c: 20000c38 .word 0x20000c38 - -0001aea0 : + 1af0a: 4c1c ldr r4, [pc, #112] ; (1af7c ) + 1af0c: e7be b.n 1ae8c + 1af0e: bf00 nop + 1af10: 20000bac .word 0x20000bac + 1af14: 20000d3c .word 0x20000d3c + 1af18: 20000b98 .word 0x20000b98 + 1af1c: 20000c4c .word 0x20000c4c + 1af20: 20000cb0 .word 0x20000cb0 + 1af24: 20000c9c .word 0x20000c9c + 1af28: 20000c88 .word 0x20000c88 + 1af2c: 20000c74 .word 0x20000c74 + 1af30: 20000c60 .word 0x20000c60 + 1af34: 20000cc4 .word 0x20000cc4 + 1af38: 20000cec .word 0x20000cec + 1af3c: 20000cd8 .word 0x20000cd8 + 1af40: 20000da0 .word 0x20000da0 + 1af44: 20000d8c .word 0x20000d8c + 1af48: 20000d78 .word 0x20000d78 + 1af4c: 20000d64 .word 0x20000d64 + 1af50: 20000d50 .word 0x20000d50 + 1af54: 20000d28 .word 0x20000d28 + 1af58: 20000d14 .word 0x20000d14 + 1af5c: 20000d00 .word 0x20000d00 + 1af60: 20000db4 .word 0x20000db4 + 1af64: 20000c24 .word 0x20000c24 + 1af68: 20000c10 .word 0x20000c10 + 1af6c: 20000bfc .word 0x20000bfc + 1af70: 20000be8 .word 0x20000be8 + 1af74: 20000bd4 .word 0x20000bd4 + 1af78: 20000bc0 .word 0x20000bc0 + 1af7c: 20000c38 .word 0x20000c38 + +0001af80 : if((t_offset+1) < size()){ - 1aea0: f8b0 2003 ldrh.w r2, [r0, #3] - 1aea4: 1c4b adds r3, r1, #1 - 1aea6: 4293 cmp r3, r2 - 1aea8: db01 blt.n 1aeae + 1af80: f8b0 2003 ldrh.w r2, [r0, #3] + 1af84: 1c4b adds r3, r1, #1 + 1af86: 4293 cmp r3, r2 + 1af88: db01 blt.n 1af8e return 0; - 1aeaa: 2000 movs r0, #0 + 1af8a: 2000 movs r0, #0 } - 1aeac: 4770 bx lr + 1af8c: 4770 bx lr return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1aeae: 4401 add r1, r0 - 1aeb0: 4418 add r0, r3 - 1aeb2: 794b ldrb r3, [r1, #5] - 1aeb4: 7940 ldrb r0, [r0, #5] - 1aeb6: 01db lsls r3, r3, #7 - 1aeb8: f000 007f and.w r0, r0, #127 ; 0x7f - 1aebc: f403 537e and.w r3, r3, #16256 ; 0x3f80 - 1aec0: 4318 orrs r0, r3 - 1aec2: 4770 bx lr - -0001aec4 : + 1af8e: 4401 add r1, r0 + 1af90: 4418 add r0, r3 + 1af92: 794b ldrb r3, [r1, #5] + 1af94: 7940 ldrb r0, [r0, #5] + 1af96: 01db lsls r3, r3, #7 + 1af98: f000 007f and.w r0, r0, #127 ; 0x7f + 1af9c: f403 537e and.w r3, r3, #16256 ; 0x3f80 + 1afa0: 4318 orrs r0, r3 + 1afa2: 4770 bx lr + +0001afa4 : void prepareEditorMessage(uint8_t t_source, uint8_t deviceId, - 1aec4: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 1aec8: f8bd 7024 ldrh.w r7, [sp, #36] ; 0x24 - 1aecc: 4604 mov r4, r0 - 1aece: 4688 mov r8, r1 - 1aed0: 4616 mov r6, r2 + 1afa4: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 1afa8: f8bd 7024 ldrh.w r7, [sp, #36] ; 0x24 + 1afac: 4604 mov r4, r0 + 1afae: 4688 mov r8, r1 + 1afb0: 4616 mov r6, r2 memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 1aed2: 2100 movs r1, #0 - 1aed4: 22f6 movs r2, #246 ; 0xf6 - 1aed6: 300d adds r0, #13 + 1afb2: 2100 movs r1, #0 + 1afb4: 22f6 movs r2, #246 ; 0xf6 + 1afb6: 300d adds r0, #13 void prepareEditorMessage(uint8_t t_source, uint8_t deviceId, - 1aed8: 461d mov r5, r3 - 1aeda: f89d 9020 ldrb.w r9, [sp, #32] + 1afb8: 461d mov r5, r3 + 1afba: f89d 9020 ldrb.w r9, [sp, #32] memset(sysex, 0, sizeof(sysex[0])*BMC_MIDI_SYSEX_SIZE); - 1aede: f013 fad5 bl 2e48c + 1afbe: f013 fad9 bl 2e574 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1aee2: f3c7 12c6 ubfx r2, r7, #7, #7 + 1afc2: f3c7 12c6 ubfx r2, r7, #7, #7 void setData1(uint8_t t_data1) { data1 = t_data1; } - 1aee6: 2308 movs r3, #8 + 1afc6: 2308 movs r3, #8 appendSysExByte(value & 0x7F); - 1aee8: f006 067f and.w r6, r6, #127 ; 0x7f - 1aeec: f009 097f and.w r9, r9, #127 ; 0x7f + 1afc8: f006 067f and.w r6, r6, #127 ; 0x7f + 1afcc: f009 097f and.w r9, r9, #127 ; 0x7f sysex[sysLength++] = value; - 1aef0: 72a2 strb r2, [r4, #10] + 1afd0: 72a2 strb r2, [r4, #10] bitWrite(ports, sourcePortBit, 1); - 1aef2: 2201 movs r2, #1 + 1afd2: 2201 movs r2, #1 void setData1(uint8_t t_data1) { data1 = t_data1; } - 1aef4: 70e3 strb r3, [r4, #3] + 1afd4: 70e3 strb r3, [r4, #3] sysex[sysLength++] = value; - 1aef6: 237d movs r3, #125 ; 0x7d + 1afd6: 237d movs r3, #125 ; 0x7d appendSysExByte(value & 0x7F); - 1aef8: f005 057f and.w r5, r5, #127 ; 0x7f + 1afd8: f005 057f and.w r5, r5, #127 ; 0x7f appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1aefc: f007 077f and.w r7, r7, #127 ; 0x7f + 1afdc: f007 077f and.w r7, r7, #127 ; 0x7f void setStatus(uint8_t t_status) { status = t_status; } - 1af00: 21f0 movs r1, #240 ; 0xf0 + 1afe0: 21f0 movs r1, #240 ; 0xf0 bitWrite(ports, sourcePortBit, 1); - 1af02: fa02 f208 lsl.w r2, r2, r8 + 1afe2: fa02 f208 lsl.w r2, r2, r8 sysex[sysLength++] = value; - 1af06: 7163 strb r3, [r4, #5] - 1af08: 71a3 strb r3, [r4, #6] - 1af0a: 71e3 strb r3, [r4, #7] + 1afe6: 7163 strb r3, [r4, #5] + 1afe8: 71a3 strb r3, [r4, #6] + 1afea: 71e3 strb r3, [r4, #7] void setChannel(uint8_t t_channel) { channel = t_channel; } - 1af0c: 2300 movs r3, #0 + 1afec: 2300 movs r3, #0 sysex[sysLength++] = value; - 1af0e: 7226 strb r6, [r4, #8] - 1af10: f884 9009 strb.w r9, [r4, #9] - 1af14: 7325 strb r5, [r4, #12] - 1af16: 72e7 strb r7, [r4, #11] + 1afee: 7226 strb r6, [r4, #8] + 1aff0: f884 9009 strb.w r9, [r4, #9] + 1aff4: 7325 strb r5, [r4, #12] + 1aff6: 72e7 strb r7, [r4, #11] void setStatus(uint8_t t_status) { status = t_status; } - 1af18: 7061 strb r1, [r4, #1] + 1aff8: 7061 strb r1, [r4, #1] bitWrite(ports, sourcePortBit, 1); - 1af1a: 7022 strb r2, [r4, #0] + 1affa: 7022 strb r2, [r4, #0] void setChannel(uint8_t t_channel) { channel = t_channel; } - 1af1c: 70a3 strb r3, [r4, #2] + 1affc: 70a3 strb r3, [r4, #2] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1af1e: 7123 strb r3, [r4, #4] + 1affe: 7123 strb r3, [r4, #4] } - 1af20: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 1b000: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} -0001af24 : +0001b004 : buff.appendToSysEx8Bits(data.formatAppend); #endif sendToEditor(buff); } void BMCEditor::globalSetTime(bool write){ - 1af24: b570 push {r4, r5, r6, lr} - 1af26: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 + 1b004: b570 push {r4, r5, r6, lr} + 1b006: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 struct BMCMidiMessage { - 1af2a: 2600 movs r6, #0 - 1af2c: 4605 mov r5, r0 + 1b00a: 2600 movs r6, #0 + 1b00c: 4605 mov r5, r0 valid = 1; } #endif BMCMidiMessage buff; buff.prepareEditorMessage( - 1af2e: 230b movs r3, #11 - 1af30: ac41 add r4, sp, #260 ; 0x104 - 1af32: 9641 str r6, [sp, #260] ; 0x104 - 1af34: f88d 6108 strb.w r6, [sp, #264] ; 0x108 - 1af38: e9cd 6600 strd r6, r6, [sp] - 1af3c: f890 202d ldrb.w r2, [r0, #45] ; 0x2d - 1af40: f890 102c ldrb.w r1, [r0, #44] ; 0x2c - 1af44: 4620 mov r0, r4 - 1af46: f7ff ffbd bl 1aec4 + 1b00e: 230b movs r3, #11 + 1b010: ac41 add r4, sp, #260 ; 0x104 + 1b012: 9641 str r6, [sp, #260] ; 0x104 + 1b014: f88d 6108 strb.w r6, [sp, #264] ; 0x108 + 1b018: e9cd 6600 strd r6, r6, [sp] + 1b01c: f890 202d ldrb.w r2, [r0, #45] ; 0x2d + 1b020: f890 102c ldrb.w r1, [r0, #44] ; 0x2c + 1b024: 4620 mov r0, r4 + 1b026: f7ff ffbd bl 1afa4 buff.appendToSysEx7Bits(getSecond()); buff.appendToSysEx7Bits(getDay()); buff.appendToSysEx7Bits(getMonth()); buff.appendToSysEx16Bits(getYear()); #endif sendToEditor(buff); - 1af4a: 2301 movs r3, #1 - 1af4c: a944 add r1, sp, #272 ; 0x110 - 1af4e: 22f7 movs r2, #247 ; 0xf7 - 1af50: 4668 mov r0, sp - 1af52: e9cd 363e strd r3, r6, [sp, #248] ; 0xf8 - 1af56: f00f fbd7 bl 2a708 - 1af5a: 4628 mov r0, r5 - 1af5c: e894 000e ldmia.w r4, {r1, r2, r3} - 1af60: f7ff fcb4 bl 1a8cc -} - 1af64: f50d 7d02 add.w sp, sp, #520 ; 0x208 - 1af68: bd70 pop {r4, r5, r6, pc} - 1af6a: bf00 nop - -0001af6c : + 1b02a: 2301 movs r3, #1 + 1b02c: a944 add r1, sp, #272 ; 0x110 + 1b02e: 22f7 movs r2, #247 ; 0xf7 + 1b030: 4668 mov r0, sp + 1b032: e9cd 363e strd r3, r6, [sp, #248] ; 0xf8 + 1b036: f00f fbdb bl 2a7f0 + 1b03a: 4628 mov r0, r5 + 1b03c: e894 000e ldmia.w r4, {r1, r2, r3} + 1b040: f7ff fcb4 bl 1a9ac +} + 1b044: f50d 7d02 add.w sp, sp, #520 ; 0x208 + 1b048: bd70 pop {r4, r5, r6, pc} + 1b04a: bf00 nop + +0001b04c : BMC_EDITOR_FUNCTION_ERASE, 0, 0 ); buff.appendToSysEx7Bits(success); sendToEditor(buff); } void BMCEditor::globalEditorMessenger(bool write){ - 1af6c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 1af70: 4605 mov r5, r0 - 1af72: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c + 1b04c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 1b050: 4605 mov r5, r0 + 1b052: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c if(!isValidGlobalMessage()){ return; } uint8_t accepted = 0; uint8_t sysExLength = BMC_EDITOR_SYSEX_MIN_LENGTH+1; if(write && incoming.size()>=sysExLength){ - 1af76: b121 cbz r1, 1af82 - 1af78: 6bc3 ldr r3, [r0, #60] ; 0x3c - 1af7a: f8b3 3003 ldrh.w r3, [r3, #3] - 1af7e: 2b0b cmp r3, #11 - 1af80: d84b bhi.n 1b01a + 1b056: b121 cbz r1, 1b062 + 1b058: 6bc3 ldr r3, [r0, #60] ; 0x3c + 1b05a: f8b3 3003 ldrh.w r3, [r3, #3] + 1b05e: 2b0b cmp r3, #11 + 1b060: d84b bhi.n 1b0fa uint8_t accepted = 0; - 1af82: 2700 movs r7, #0 - 1af84: ac41 add r4, sp, #260 ; 0x104 - 1af86: 2600 movs r6, #0 + 1b062: 2700 movs r7, #0 + 1b064: ac41 add r4, sp, #260 ; 0x104 + 1b066: 2600 movs r6, #0 incoming.getStringFromSysEx(18, messenger.string, messenger.strLen); } accepted = 1; } BMCMidiMessage buff; buff.prepareEditorMessage( - 1af88: 230f movs r3, #15 - 1af8a: 4620 mov r0, r4 - 1af8c: e9cd 6600 strd r6, r6, [sp] - 1af90: 6026 str r6, [r4, #0] - 1af92: f895 202d ldrb.w r2, [r5, #45] ; 0x2d - 1af96: f895 102c ldrb.w r1, [r5, #44] ; 0x2c - 1af9a: 7126 strb r6, [r4, #4] - 1af9c: f7ff ff92 bl 1aec4 + 1b068: 230f movs r3, #15 + 1b06a: 4620 mov r0, r4 + 1b06c: e9cd 6600 strd r6, r6, [sp] + 1b070: 6026 str r6, [r4, #0] + 1b072: f895 202d ldrb.w r2, [r5, #45] ; 0x2d + 1b076: f895 102c ldrb.w r1, [r5, #44] ; 0x2c + 1b07a: 7126 strb r6, [r4, #4] + 1b07c: f7ff ff92 bl 1afa4 uint16_t sysLength = size(); - 1afa0: f8b4 3003 ldrh.w r3, [r4, #3] + 1b080: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1b084: 2bfd cmp r3, #253 ; 0xfd + 1b086: d92a bls.n 1b0de ); // send a 0 as the first data byte to notify the app that this a response // not a message from the app buff.appendToSysEx7Bits(0); buff.appendToSysEx7Bits(accepted); sendToEditor(buff); - 1afa8: 2301 movs r3, #1 - 1afaa: 2200 movs r2, #0 - 1afac: a944 add r1, sp, #272 ; 0x110 - 1afae: 4668 mov r0, sp - 1afb0: e9cd 323e strd r3, r2, [sp, #248] ; 0xf8 - 1afb4: 22f7 movs r2, #247 ; 0xf7 - 1afb6: f00f fba7 bl 2a708 - 1afba: 4628 mov r0, r5 - 1afbc: e894 000e ldmia.w r4, {r1, r2, r3} - 1afc0: f7ff fc84 bl 1a8cc + 1b088: 2301 movs r3, #1 + 1b08a: 2200 movs r2, #0 + 1b08c: a944 add r1, sp, #272 ; 0x110 + 1b08e: 4668 mov r0, sp + 1b090: e9cd 323e strd r3, r2, [sp, #248] ; 0xf8 + 1b094: 22f7 movs r2, #247 ; 0xf7 + 1b096: f00f fbab bl 2a7f0 + 1b09a: 4628 mov r0, r5 + 1b09c: e894 000e ldmia.w r4, {r1, r2, r3} + 1b0a0: f7ff fc84 bl 1a9ac if(accepted==1 && midi.callback.messengerReceived){ - 1afc4: b91f cbnz r7, 1afce + 1b0a4: b91f cbnz r7, 1b0ae midi.callback.messengerReceived(messenger); } } - 1afc6: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 1afca: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 1b0a6: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 1b0aa: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if(accepted==1 && midi.callback.messengerReceived){ - 1afce: 686b ldr r3, [r5, #4] - 1afd0: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 1afd4: f8d3 7080 ldr.w r7, [r3, #128] ; 0x80 - 1afd8: 2f00 cmp r7, #0 - 1afda: d0f4 beq.n 1afc6 + 1b0ae: 686b ldr r3, [r5, #4] + 1b0b0: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 1b0b4: f8d3 7080 ldr.w r7, [r3, #128] ; 0x80 + 1b0b8: 2f00 cmp r7, #0 + 1b0ba: d0f4 beq.n 1b0a6 midi.callback.messengerReceived(messenger); - 1afdc: 6c2e ldr r6, [r5, #64] ; 0x40 - 1afde: 466c mov r4, sp - 1afe0: f106 0510 add.w r5, r6, #16 - 1afe4: cd0f ldmia r5!, {r0, r1, r2, r3} - 1afe6: c40f stmia r4!, {r0, r1, r2, r3} - 1afe8: e895 0007 ldmia.w r5, {r0, r1, r2} - 1afec: e884 0007 stmia.w r4, {r0, r1, r2} - 1aff0: e896 000f ldmia.w r6, {r0, r1, r2, r3} - 1aff4: 47b8 blx r7 -} - 1aff6: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 1affa: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 1b0bc: 6c2e ldr r6, [r5, #64] ; 0x40 + 1b0be: 466c mov r4, sp + 1b0c0: f106 0510 add.w r5, r6, #16 + 1b0c4: cd0f ldmia r5!, {r0, r1, r2, r3} + 1b0c6: c40f stmia r4!, {r0, r1, r2, r3} + 1b0c8: e895 0007 ldmia.w r5, {r0, r1, r2} + 1b0cc: e884 0007 stmia.w r4, {r0, r1, r2} + 1b0d0: e896 000f ldmia.w r6, {r0, r1, r2, r3} + 1b0d4: 47b8 blx r7 +} + 1b0d6: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 1b0da: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} sysex[sysLength++] = value; - 1affe: 1c5a adds r2, r3, #1 - 1b000: 4423 add r3, r4 + 1b0de: 1c5a adds r2, r3, #1 + 1b0e0: 4423 add r3, r4 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b002: 7126 strb r6, [r4, #4] + 1b0e2: 7126 strb r6, [r4, #4] setData1(value & 0xFF); - 1b004: 70e2 strb r2, [r4, #3] + 1b0e4: 70e2 strb r2, [r4, #3] sysex[sysLength++] = value; - 1b006: 715e strb r6, [r3, #5] + 1b0e6: 715e strb r6, [r3, #5] uint16_t sysLength = size(); - 1b008: f8b4 3003 ldrh.w r3, [r4, #3] + 1b0e8: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1b0ec: 2bfd cmp r3, #253 ; 0xfd + 1b0ee: d8cb bhi.n 1b088 sysex[sysLength++] = value; - 1b010: 18e2 adds r2, r4, r3 - 1b012: 3301 adds r3, #1 - 1b014: 7157 strb r7, [r2, #5] + 1b0f0: 18e2 adds r2, r4, r3 + 1b0f2: 3301 adds r3, #1 + 1b0f4: 7157 strb r7, [r2, #5] setData1(value & 0xFF); - 1b016: 70e3 strb r3, [r4, #3] + 1b0f6: 70e3 strb r3, [r4, #3] return true; - 1b018: e7c6 b.n 1afa8 + 1b0f8: e7c6 b.n 1b088 messenger.reset(); - 1b01a: 6c04 ldr r4, [r0, #64] ; 0x40 + 1b0fa: 6c04 ldr r4, [r0, #64] ; 0x40 memset(string, 0, sizeof(string[0])*strLen); - 1b01c: 2100 movs r1, #0 - 1b01e: 7a22 ldrb r2, [r4, #8] - 1b020: f104 0009 add.w r0, r4, #9 - 1b024: f013 fa32 bl 2e48c + 1b0fc: 2100 movs r1, #0 + 1b0fe: 7a22 ldrb r2, [r4, #8] + 1b100: f104 0009 add.w r0, r4, #9 + 1b104: f013 fa36 bl 2e574 status = 0; - 1b028: 2300 movs r3, #0 + 1b108: 2300 movs r3, #0 strLen = 0; - 1b02a: 7223 strb r3, [r4, #8] + 1b10a: 7223 strb r3, [r4, #8] messenger.status = incoming.get16Bits(9); - 1b02c: 6bea ldr r2, [r5, #60] ; 0x3c + 1b10c: 6bea ldr r2, [r5, #60] ; 0x3c status = 0; - 1b02e: 8023 strh r3, [r4, #0] + 1b10e: 8023 strh r3, [r4, #0] value = 0; - 1b030: 6063 str r3, [r4, #4] + 1b110: 6063 str r3, [r4, #4] if((t_offset+2) < size()){ - 1b032: f8b2 0003 ldrh.w r0, [r2, #3] - 1b036: 6c29 ldr r1, [r5, #64] ; 0x40 - 1b038: 280b cmp r0, #11 - 1b03a: d90b bls.n 1b054 + 1b112: f8b2 0003 ldrh.w r0, [r2, #3] + 1b116: 6c29 ldr r1, [r5, #64] ; 0x40 + 1b118: 280b cmp r0, #11 + 1b11a: d90b bls.n 1b134 return BMC_MIDI_ARRAY_TO_16BITS(t_offset, sysex) & BMC_MASK_16; - 1b03c: 7c13 ldrb r3, [r2, #16] - 1b03e: 7b90 ldrb r0, [r2, #14] - 1b040: f003 037f and.w r3, r3, #127 ; 0x7f - 1b044: ea43 3380 orr.w r3, r3, r0, lsl #14 - 1b048: 7bd0 ldrb r0, [r2, #15] - 1b04a: 01c0 lsls r0, r0, #7 - 1b04c: f400 507e and.w r0, r0, #16256 ; 0x3f80 - 1b050: 4303 orrs r3, r0 - 1b052: b29b uxth r3, r3 - 1b054: 800b strh r3, [r1, #0] + 1b11c: 7c13 ldrb r3, [r2, #16] + 1b11e: 7b90 ldrb r0, [r2, #14] + 1b120: f003 037f and.w r3, r3, #127 ; 0x7f + 1b124: ea43 3380 orr.w r3, r3, r0, lsl #14 + 1b128: 7bd0 ldrb r0, [r2, #15] + 1b12a: 01c0 lsls r0, r0, #7 + 1b12c: f400 507e and.w r0, r0, #16256 ; 0x3f80 + 1b130: 4303 orrs r3, r0 + 1b132: b29b uxth r3, r3 + 1b134: 800b strh r3, [r1, #0] if((t_offset+4) < size()){ - 1b056: f8b2 3003 ldrh.w r3, [r2, #3] - 1b05a: 2b10 cmp r3, #16 - 1b05c: d80d bhi.n 1b07a - 1b05e: 2300 movs r3, #0 + 1b136: f8b2 3003 ldrh.w r3, [r2, #3] + 1b13a: 2b10 cmp r3, #16 + 1b13c: d80d bhi.n 1b15a + 1b13e: 2300 movs r3, #0 messenger.value = incoming.get32Bits(12); - 1b060: 604b str r3, [r1, #4] + 1b140: 604b str r3, [r1, #4] if(t_offset < size()){ - 1b062: f8b2 3003 ldrh.w r3, [r2, #3] - 1b066: 2b11 cmp r3, #17 - 1b068: d81d bhi.n 1b0a6 + 1b142: f8b2 3003 ldrh.w r3, [r2, #3] + 1b146: 2b11 cmp r3, #17 + 1b148: d81d bhi.n 1b186 return 0; - 1b06a: 2300 movs r3, #0 + 1b14a: 2300 movs r3, #0 messenger.strLen = incoming.get7Bits(17); - 1b06c: 720b strb r3, [r1, #8] + 1b14c: 720b strb r3, [r1, #8] if(messenger.strLen>0){ - 1b06e: 6c2c ldr r4, [r5, #64] ; 0x40 - 1b070: 7a26 ldrb r6, [r4, #8] - 1b072: 2e01 cmp r6, #1 - 1b074: d81b bhi.n 1b0ae + 1b14e: 6c2c ldr r4, [r5, #64] ; 0x40 + 1b150: 7a26 ldrb r6, [r4, #8] + 1b152: 2e01 cmp r6, #1 + 1b154: d81b bhi.n 1b18e accepted = 1; - 1b076: 2701 movs r7, #1 - 1b078: e784 b.n 1af84 + 1b156: 2701 movs r7, #1 + 1b158: e784 b.n 1b064 return BMC_MIDI_ARRAY_TO_32BITS(t_offset, sysex) & BMC_MASK_32; - 1b07a: 7d53 ldrb r3, [r2, #21] - 1b07c: 7c50 ldrb r0, [r2, #17] - 1b07e: f003 037f and.w r3, r3, #127 ; 0x7f - 1b082: ea43 7300 orr.w r3, r3, r0, lsl #28 - 1b086: 7d10 ldrb r0, [r2, #20] - 1b088: 01c0 lsls r0, r0, #7 - 1b08a: f400 507e and.w r0, r0, #16256 ; 0x3f80 - 1b08e: 4303 orrs r3, r0 - 1b090: 7cd0 ldrb r0, [r2, #19] - 1b092: 0380 lsls r0, r0, #14 - 1b094: f400 10fe and.w r0, r0, #2080768 ; 0x1fc000 - 1b098: 4303 orrs r3, r0 - 1b09a: 7c90 ldrb r0, [r2, #18] - 1b09c: 0540 lsls r0, r0, #21 - 1b09e: f000 607e and.w r0, r0, #266338304 ; 0xfe00000 - 1b0a2: 4303 orrs r3, r0 - 1b0a4: e7dc b.n 1b060 + 1b15a: 7d53 ldrb r3, [r2, #21] + 1b15c: 7c50 ldrb r0, [r2, #17] + 1b15e: f003 037f and.w r3, r3, #127 ; 0x7f + 1b162: ea43 7300 orr.w r3, r3, r0, lsl #28 + 1b166: 7d10 ldrb r0, [r2, #20] + 1b168: 01c0 lsls r0, r0, #7 + 1b16a: f400 507e and.w r0, r0, #16256 ; 0x3f80 + 1b16e: 4303 orrs r3, r0 + 1b170: 7cd0 ldrb r0, [r2, #19] + 1b172: 0380 lsls r0, r0, #14 + 1b174: f400 10fe and.w r0, r0, #2080768 ; 0x1fc000 + 1b178: 4303 orrs r3, r0 + 1b17a: 7c90 ldrb r0, [r2, #18] + 1b17c: 0540 lsls r0, r0, #21 + 1b17e: f000 607e and.w r0, r0, #266338304 ; 0xfe00000 + 1b182: 4303 orrs r3, r0 + 1b184: e7dc b.n 1b140 return sysex[t_offset] & 0x7F; - 1b0a6: 7d93 ldrb r3, [r2, #22] - 1b0a8: f003 037f and.w r3, r3, #127 ; 0x7f - 1b0ac: e7de b.n 1b06c + 1b186: 7d93 ldrb r3, [r2, #22] + 1b188: f003 037f and.w r3, r3, #127 ; 0x7f + 1b18c: e7de b.n 1b14c incoming.getStringFromSysEx(18, messenger.string, messenger.strLen); - 1b0ae: 6bef ldr r7, [r5, #60] ; 0x3c + 1b18e: 6bef ldr r7, [r5, #60] ; 0x3c if(length > 1 && (startsAt + length) < size()){ - 1b0b0: f106 0912 add.w r9, r6, #18 - 1b0b4: f8b7 3003 ldrh.w r3, [r7, #3] - 1b0b8: 4599 cmp r9, r3 - 1b0ba: dadc bge.n 1b076 - 1b0bc: f104 0809 add.w r8, r4, #9 + 1b190: f106 0912 add.w r9, r6, #18 + 1b194: f8b7 3003 ldrh.w r3, [r7, #3] + 1b198: 4599 cmp r9, r3 + 1b19a: dadc bge.n 1b156 + 1b19c: f104 0809 add.w r8, r4, #9 memset(str, 0, length); - 1b0c0: 2100 movs r1, #0 - 1b0c2: 4632 mov r2, r6 - 1b0c4: 3408 adds r4, #8 - 1b0c6: 4640 mov r0, r8 - 1b0c8: f013 f9e0 bl 2e48c + 1b1a0: 2100 movs r1, #0 + 1b1a2: 4632 mov r2, r6 + 1b1a4: 3408 adds r4, #8 + 1b1a6: 4640 mov r0, r8 + 1b1a8: f013 f9e4 bl 2e574 for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 1b0cc: 2312 movs r3, #18 - 1b0ce: fa5f f189 uxtb.w r1, r9 + 1b1ac: 2312 movs r3, #18 + 1b1ae: fa5f f189 uxtb.w r1, r9 str[i] = (char) sysex[e]; - 1b0d2: 18fa adds r2, r7, r3 + 1b1b2: 18fa adds r2, r7, r3 for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 1b0d4: 3301 adds r3, #1 - 1b0d6: b2db uxtb r3, r3 + 1b1b4: 3301 adds r3, #1 + 1b1b6: b2db uxtb r3, r3 str[i] = (char) sysex[e]; - 1b0d8: 7952 ldrb r2, [r2, #5] + 1b1b8: 7952 ldrb r2, [r2, #5] for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 1b0da: 4299 cmp r1, r3 + 1b1ba: 4299 cmp r1, r3 str[i] = (char) sysex[e]; - 1b0dc: f804 2f01 strb.w r2, [r4, #1]! + 1b1bc: f804 2f01 strb.w r2, [r4, #1]! for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 1b0e0: d1f7 bne.n 1b0d2 + 1b1c0: d1f7 bne.n 1b1b2 str[length-1] = 0; - 1b0e2: 44b0 add r8, r6 - 1b0e4: 2300 movs r3, #0 + 1b1c2: 44b0 add r8, r6 + 1b1c4: 2300 movs r3, #0 accepted = 1; - 1b0e6: 2701 movs r7, #1 - 1b0e8: f808 3c01 strb.w r3, [r8, #-1] + 1b1c6: 2701 movs r7, #1 + 1b1c8: f808 3c01 strb.w r3, [r8, #-1] } - 1b0ec: e74a b.n 1af84 - 1b0ee: bf00 nop + 1b1cc: e74a b.n 1b064 + 1b1ce: bf00 nop -0001b0f0 : +0001b1d0 : void BMCEditor::globalEditorFeedback(bool write){ - 1b0f0: b570 push {r4, r5, r6, lr} - 1b0f2: 4605 mov r5, r0 - 1b0f4: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 + 1b1d0: b570 push {r4, r5, r6, lr} + 1b1d2: 4605 mov r5, r0 + 1b1d4: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 if(write && incoming.size()>=sysExLength){ - 1b0f8: b121 cbz r1, 1b104 - 1b0fa: 6bc3 ldr r3, [r0, #60] ; 0x3c - 1b0fc: f8b3 2003 ldrh.w r2, [r3, #3] - 1b100: 2a0b cmp r2, #11 - 1b102: d82a bhi.n 1b15a + 1b1d8: b121 cbz r1, 1b1e4 + 1b1da: 6bc3 ldr r3, [r0, #60] ; 0x3c + 1b1dc: f8b3 2003 ldrh.w r2, [r3, #3] + 1b1e0: 2a0b cmp r2, #11 + 1b1e2: d82a bhi.n 1b23a struct BMCMidiMessage { - 1b104: ac41 add r4, sp, #260 ; 0x104 - 1b106: 2600 movs r6, #0 + 1b1e4: ac41 add r4, sp, #260 ; 0x104 + 1b1e6: 2600 movs r6, #0 buff.prepareEditorMessage( - 1b108: 230c movs r3, #12 - 1b10a: f895 202d ldrb.w r2, [r5, #45] ; 0x2d - 1b10e: 4620 mov r0, r4 - 1b110: e9cd 6600 strd r6, r6, [sp] - 1b114: 6026 str r6, [r4, #0] - 1b116: f895 102c ldrb.w r1, [r5, #44] ; 0x2c - 1b11a: 7126 strb r6, [r4, #4] - 1b11c: f7ff fed2 bl 1aec4 + 1b1e8: 230c movs r3, #12 + 1b1ea: f895 202d ldrb.w r2, [r5, #45] ; 0x2d + 1b1ee: 4620 mov r0, r4 + 1b1f0: e9cd 6600 strd r6, r6, [sp] + 1b1f4: 6026 str r6, [r4, #0] + 1b1f6: f895 102c ldrb.w r1, [r5, #44] ; 0x2c + 1b1fa: 7126 strb r6, [r4, #4] + 1b1fc: f7ff fed2 bl 1afa4 uint16_t sysLength = size(); - 1b120: f8b4 3003 ldrh.w r3, [r4, #3] + 1b200: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1b204: 2bfd cmp r3, #253 ; 0xfd + 1b206: d807 bhi.n 1b218 return bitRead(flags, bit); - 1b128: 6b2a ldr r2, [r5, #48] ; 0x30 + 1b208: 6b2a ldr r2, [r5, #48] ; 0x30 sysex[sysLength++] = value; - 1b12a: 18e1 adds r1, r4, r3 - 1b12c: 3301 adds r3, #1 + 1b20a: 18e1 adds r1, r4, r3 + 1b20c: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b12e: 7126 strb r6, [r4, #4] - 1b130: f3c2 1240 ubfx r2, r2, #5, #1 + 1b20e: 7126 strb r6, [r4, #4] + 1b210: f3c2 1240 ubfx r2, r2, #5, #1 setData1(value & 0xFF); - 1b134: 70e3 strb r3, [r4, #3] - 1b136: 714a strb r2, [r1, #5] + 1b214: 70e3 strb r3, [r4, #3] + 1b216: 714a strb r2, [r1, #5] sendToEditor(buff); - 1b138: 2301 movs r3, #1 - 1b13a: 2100 movs r1, #0 - 1b13c: 22f7 movs r2, #247 ; 0xf7 - 1b13e: 4668 mov r0, sp - 1b140: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 - 1b144: a944 add r1, sp, #272 ; 0x110 - 1b146: f00f fadf bl 2a708 - 1b14a: 4628 mov r0, r5 - 1b14c: e894 000e ldmia.w r4, {r1, r2, r3} - 1b150: f7ff fbbc bl 1a8cc -} - 1b154: f50d 7d02 add.w sp, sp, #520 ; 0x208 - 1b158: bd70 pop {r4, r5, r6, pc} + 1b218: 2301 movs r3, #1 + 1b21a: 2100 movs r1, #0 + 1b21c: 22f7 movs r2, #247 ; 0xf7 + 1b21e: 4668 mov r0, sp + 1b220: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 + 1b224: a944 add r1, sp, #272 ; 0x110 + 1b226: f00f fae3 bl 2a7f0 + 1b22a: 4628 mov r0, r5 + 1b22c: e894 000e ldmia.w r4, {r1, r2, r3} + 1b230: f7ff fbbc bl 1a9ac +} + 1b234: f50d 7d02 add.w sp, sp, #520 ; 0x208 + 1b238: bd70 pop {r4, r5, r6, pc} return sysex[t_offset] & 0x7F; - 1b15a: 7b99 ldrb r1, [r3, #14] + 1b23a: 7b99 ldrb r1, [r3, #14] bitWrite(flags, bit, value); - 1b15c: 6b03 ldr r3, [r0, #48] ; 0x30 - 1b15e: f011 047f ands.w r4, r1, #127 ; 0x7f - 1b162: 480c ldr r0, [pc, #48] ; (1b194 ) - 1b164: f04f 011f mov.w r1, #31 - 1b168: bf14 ite ne - 1b16a: f043 0320 orrne.w r3, r3, #32 - 1b16e: f023 0320 biceq.w r3, r3, #32 - 1b172: 632b str r3, [r5, #48] ; 0x30 - 1b174: f011 f9e8 bl 2c548 - 1b178: 2101 movs r1, #1 - 1b17a: 4807 ldr r0, [pc, #28] ; (1b198 ) - 1b17c: f011 f9e4 bl 2c548 + 1b23c: 6b03 ldr r3, [r0, #48] ; 0x30 + 1b23e: f011 047f ands.w r4, r1, #127 ; 0x7f + 1b242: 480c ldr r0, [pc, #48] ; (1b274 ) + 1b244: f04f 011f mov.w r1, #31 + 1b248: bf14 ite ne + 1b24a: f043 0320 orrne.w r3, r3, #32 + 1b24e: f023 0320 biceq.w r3, r3, #32 + 1b252: 632b str r3, [r5, #48] ; 0x30 + 1b254: f011 f9ec bl 2c630 + 1b258: 2101 movs r1, #1 + 1b25a: 4807 ldr r0, [pc, #28] ; (1b278 ) + 1b25c: f011 f9e8 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 1b180: 2300 movs r3, #0 - 1b182: 220a movs r2, #10 - 1b184: 4621 mov r1, r4 - 1b186: 4805 ldr r0, [pc, #20] ; (1b19c ) - 1b188: f00e fe90 bl 29eac + 1b260: 2300 movs r3, #0 + 1b262: 220a movs r2, #10 + 1b264: 4621 mov r1, r4 + 1b266: 4805 ldr r0, [pc, #20] ; (1b27c ) + 1b268: f00e fe96 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 1b18c: 4803 ldr r0, [pc, #12] ; (1b19c ) - 1b18e: f00e fe71 bl 29e74 - 1b192: e7b7 b.n 1b104 - 1b194: 20003cf4 .word 0x20003cf4 - 1b198: 200023ec .word 0x200023ec - 1b19c: 20004ba8 .word 0x20004ba8 - -0001b1a0 : + 1b26c: 4803 ldr r0, [pc, #12] ; (1b27c ) + 1b26e: f00e fe77 bl 29f60 + 1b272: e7b7 b.n 1b1e4 + 1b274: 20003db4 .word 0x20003db4 + 1b278: 200023ec .word 0x200023ec + 1b27c: 20004c68 .word 0x20004c68 + +0001b280 : uint16_t sysLength = size(); - 1b1a0: f8b0 3003 ldrh.w r3, [r0, #3] + 1b280: f8b0 3003 ldrh.w r3, [r0, #3] if(sysLength + 1b284: 2bfd cmp r3, #253 ; 0xfd + 1b286: d900 bls.n 1b28a } - 1b1a8: 4770 bx lr + 1b288: 4770 bx lr sysex[sysLength++] = value; - 1b1aa: 18c2 adds r2, r0, r3 + 1b28a: 18c2 adds r2, r0, r3 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b1ac: f3c1 1cc6 ubfx ip, r1, #7, #7 + 1b28c: f3c1 1cc6 ubfx ip, r1, #7, #7 sysex[sysLength++] = value; - 1b1b0: 3301 adds r3, #1 + 1b290: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b1b2: f001 017f and.w r1, r1, #127 ; 0x7f + 1b292: f001 017f and.w r1, r1, #127 ; 0x7f sysex[sysLength++] = value; - 1b1b6: f882 c005 strb.w ip, [r2, #5] + 1b296: f882 c005 strb.w ip, [r2, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b1ba: 2200 movs r2, #0 + 1b29a: 2200 movs r2, #0 setData1(value & 0xFF); - 1b1bc: 70c3 strb r3, [r0, #3] + 1b29c: 70c3 strb r3, [r0, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b1be: 7102 strb r2, [r0, #4] + 1b29e: 7102 strb r2, [r0, #4] uint16_t sysLength = size(); - 1b1c0: f8b0 3003 ldrh.w r3, [r0, #3] + 1b2a0: f8b0 3003 ldrh.w r3, [r0, #3] if(sysLength + 1b2a4: 2bfd cmp r3, #253 ; 0xfd + 1b2a6: d8ef bhi.n 1b288 sysex[sysLength++] = value; - 1b1c8: 18c2 adds r2, r0, r3 - 1b1ca: 3301 adds r3, #1 - 1b1cc: 7151 strb r1, [r2, #5] + 1b2a8: 18c2 adds r2, r0, r3 + 1b2aa: 3301 adds r3, #1 + 1b2ac: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 1b1ce: 70c3 strb r3, [r0, #3] + 1b2ae: 70c3 strb r3, [r0, #3] } - 1b1d0: 4770 bx lr - 1b1d2: bf00 nop + 1b2b0: 4770 bx lr + 1b2b2: bf00 nop -0001b1d4 : +0001b2b4 : uint16_t sysLength = size(); - 1b1d4: f8b0 3003 ldrh.w r3, [r0, #3] + 1b2b4: f8b0 3003 ldrh.w r3, [r0, #3] if(sysLength + 1b2b8: 2bfd cmp r3, #253 ; 0xfd + 1b2ba: d900 bls.n 1b2be } - 1b1dc: 4770 bx lr + 1b2bc: 4770 bx lr sysex[sysLength++] = value; - 1b1de: eb00 0c03 add.w ip, r0, r3 + 1b2be: eb00 0c03 add.w ip, r0, r3 appendToSysEx7Bits(BMC_MIDI_GET_WORD(2,value)); - 1b1e2: 0b8a lsrs r2, r1, #14 + 1b2c2: 0b8a lsrs r2, r1, #14 sysex[sysLength++] = value; - 1b1e4: 3301 adds r3, #1 + 1b2c4: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(2,value)); - 1b1e6: f88c 2005 strb.w r2, [ip, #5] + 1b2c6: f88c 2005 strb.w r2, [ip, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b1ea: 2200 movs r2, #0 + 1b2ca: 2200 movs r2, #0 setData1(value & 0xFF); - 1b1ec: 70c3 strb r3, [r0, #3] + 1b2cc: 70c3 strb r3, [r0, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 1b1ee: f3c1 1cc6 ubfx ip, r1, #7, #7 + 1b2ce: f3c1 1cc6 ubfx ip, r1, #7, #7 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b1f2: 7102 strb r2, [r0, #4] + 1b2d2: 7102 strb r2, [r0, #4] uint16_t sysLength = size(); - 1b1f4: f8b0 3003 ldrh.w r3, [r0, #3] + 1b2d4: f8b0 3003 ldrh.w r3, [r0, #3] if(sysLength + 1b2d8: 2bfd cmp r3, #253 ; 0xfd + 1b2da: d8ef bhi.n 1b2bc sysex[sysLength++] = value; - 1b1fc: 18c2 adds r2, r0, r3 - 1b1fe: 3301 adds r3, #1 + 1b2dc: 18c2 adds r2, r0, r3 + 1b2de: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1b200: f001 017f and.w r1, r1, #127 ; 0x7f + 1b2e0: f001 017f and.w r1, r1, #127 ; 0x7f sysex[sysLength++] = value; - 1b204: f882 c005 strb.w ip, [r2, #5] + 1b2e4: f882 c005 strb.w ip, [r2, #5] setData1(value & 0xFF); - 1b208: 70c3 strb r3, [r0, #3] + 1b2e8: 70c3 strb r3, [r0, #3] uint16_t sysLength = size(); - 1b20a: f8b0 3003 ldrh.w r3, [r0, #3] + 1b2ea: f8b0 3003 ldrh.w r3, [r0, #3] if(sysLength + 1b2ee: 2bfd cmp r3, #253 ; 0xfd + 1b2f0: d8e4 bhi.n 1b2bc sysex[sysLength++] = value; - 1b212: 18c2 adds r2, r0, r3 - 1b214: 3301 adds r3, #1 - 1b216: 7151 strb r1, [r2, #5] + 1b2f2: 18c2 adds r2, r0, r3 + 1b2f4: 3301 adds r3, #1 + 1b2f6: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 1b218: 70c3 strb r3, [r0, #3] + 1b2f8: 70c3 strb r3, [r0, #3] } - 1b21a: 4770 bx lr + 1b2fa: 4770 bx lr -0001b21c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]>: +0001b2fc (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]>: void BMCEditor::deviceResponseData(bmcStoreDevice& item, - 1b21c: b530 push {r4, r5, lr} - 1b21e: b087 sub sp, #28 - 1b220: 460c mov r4, r1 + 1b2fc: b530 push {r4, r5, lr} + 1b2fe: b087 sub sp, #28 + 1b300: 460c mov r4, r1 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1b222: b212 sxth r2, r2 - 1b224: 4619 mov r1, r3 + 1b302: b212 sxth r2, r2 + 1b304: 4619 mov r1, r3 void BMCEditor::deviceResponseData(bmcStoreDevice& item, - 1b226: 4605 mov r5, r0 + 1b306: 4605 mov r5, r0 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1b228: a801 add r0, sp, #4 - 1b22a: f7ff fd53 bl 1acd4 + 1b308: a801 add r0, sp, #4 + 1b30a: f7ff fd53 bl 1adb4 buff.appendToSysEx14Bits(ui.pins[0]); - 1b22e: f8bd 1004 ldrh.w r1, [sp, #4] - 1b232: 4620 mov r0, r4 - 1b234: f7ff ffb4 bl 1b1a0 + 1b30e: f8bd 1004 ldrh.w r1, [sp, #4] + 1b312: 4620 mov r0, r4 + 1b314: f7ff ffb4 bl 1b280 buff.appendToSysEx14Bits(ui.pins[1]); - 1b238: f8bd 1006 ldrh.w r1, [sp, #6] - 1b23c: 4620 mov r0, r4 - 1b23e: f7ff ffaf bl 1b1a0 - 1b242: f8b4 3003 ldrh.w r3, [r4, #3] + 1b318: f8bd 1006 ldrh.w r1, [sp, #6] + 1b31c: 4620 mov r0, r4 + 1b31e: f7ff ffaf bl 1b280 + 1b322: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx14Bits(ui.pins[2]); - 1b246: f9bd 2008 ldrsh.w r2, [sp, #8] + 1b326: f9bd 2008 ldrsh.w r2, [sp, #8] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x11a> + 1b32a: 2bfd cmp r3, #253 ; 0xfd + 1b32c: d973 bls.n 1b416 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x11a> buff.appendToSysEx16Bits(ui.x); - 1b24e: f8bd 100a ldrh.w r1, [sp, #10] - 1b252: 4620 mov r0, r4 - 1b254: f7ff ffbe bl 1b1d4 + 1b32e: f8bd 100a ldrh.w r1, [sp, #10] + 1b332: 4620 mov r0, r4 + 1b334: f7ff ffbe bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1b258: f8bd 100c ldrh.w r1, [sp, #12] - 1b25c: 4620 mov r0, r4 - 1b25e: f7ff ffb9 bl 1b1d4 - 1b262: f8b4 3003 ldrh.w r3, [r4, #3] + 1b338: f8bd 100c ldrh.w r1, [sp, #12] + 1b33c: 4620 mov r0, r4 + 1b33e: f7ff ffb9 bl 1b2b4 + 1b342: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx7Bits(ui.style); - 1b266: f89d 200e ldrb.w r2, [sp, #14] - 1b26a: 2bfd cmp r3, #253 ; 0xfd - 1b26c: d942 bls.n 1b2f4 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd8> + 1b346: f89d 200e ldrb.w r2, [sp, #14] + 1b34a: 2bfd cmp r3, #253 ; 0xfd + 1b34c: d942 bls.n 1b3d4 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd8> buff.appendToSysEx14Bits(ui.mergeIndex); - 1b26e: f8bd 1012 ldrh.w r1, [sp, #18] - 1b272: 4620 mov r0, r4 - 1b274: f7ff ff94 bl 1b1a0 + 1b34e: f8bd 1012 ldrh.w r1, [sp, #18] + 1b352: 4620 mov r0, r4 + 1b354: f7ff ff94 bl 1b280 uint16_t sysLength = size(); - 1b278: f8b4 3003 ldrh.w r3, [r4, #3] + 1b358: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x78> + 1b35c: 2bfd cmp r3, #253 ; 0xfd + 1b35e: d809 bhi.n 1b374 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x78> buff.appendToSysEx7Bits(ui.other1); - 1b280: f8bd 2014 ldrh.w r2, [sp, #20] + 1b360: f8bd 2014 ldrh.w r2, [sp, #20] sysex[sysLength++] = value; - 1b284: 18e1 adds r1, r4, r3 - 1b286: 3301 adds r3, #1 + 1b364: 18e1 adds r1, r4, r3 + 1b366: 3301 adds r3, #1 appendSysExByte(value & 0x7F); - 1b288: f002 027f and.w r2, r2, #127 ; 0x7f + 1b368: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b28c: 714a strb r2, [r1, #5] + 1b36c: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b28e: 2200 movs r2, #0 + 1b36e: 2200 movs r2, #0 setData1(value & 0xFF); - 1b290: 70e3 strb r3, [r4, #3] + 1b370: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b292: 7122 strb r2, [r4, #4] + 1b372: 7122 strb r2, [r4, #4] buff.appendToSysEx14Bits(item.name);// name - 1b294: 7829 ldrb r1, [r5, #0] - 1b296: 4620 mov r0, r4 - 1b298: f7ff ff82 bl 1b1a0 + 1b374: 7829 ldrb r1, [r5, #0] + 1b376: 4620 mov r0, r4 + 1b378: f7ff ff82 bl 1b280 uint16_t sysLength = size(); - 1b29c: f8b4 3003 ldrh.w r3, [r4, #3] + 1b37c: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x142> - 1b2a4: 1c6a adds r2, r5, #1 - 1b2a6: f105 0011 add.w r0, r5, #17 + 1b380: 2bfd cmp r3, #253 ; 0xfd + 1b382: d95c bls.n 1b43e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x142> + 1b384: 1c6a adds r2, r5, #1 + 1b386: f105 0011 add.w r0, r5, #17 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b2aa: f04f 0e00 mov.w lr, #0 - 1b2ae: e003 b.n 1b2b8 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x9c> + 1b38a: f04f 0e00 mov.w lr, #0 + 1b38e: e003 b.n 1b398 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x9c> for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd4> - 1b2b4: f8b4 3003 ldrh.w r3, [r4, #3] + 1b390: 4282 cmp r2, r0 + 1b392: d01d beq.n 1b3d0 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd4> + 1b394: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x94> + 1b39a: f812 1f01 ldrb.w r1, [r2, #1]! + 1b39e: d8f7 bhi.n 1b390 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x94> appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b2c0: ea4f 1cd1 mov.w ip, r1, lsr #7 + 1b3a0: ea4f 1cd1 mov.w ip, r1, lsr #7 sysex[sysLength++] = value; - 1b2c4: 18e5 adds r5, r4, r3 - 1b2c6: 3301 adds r3, #1 + 1b3a4: 18e5 adds r5, r4, r3 + 1b3a6: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b2c8: f001 017f and.w r1, r1, #127 ; 0x7f + 1b3a8: f001 017f and.w r1, r1, #127 ; 0x7f appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b2cc: f885 c005 strb.w ip, [r5, #5] + 1b3ac: f885 c005 strb.w ip, [r5, #5] setData1(value & 0xFF); - 1b2d0: 70e3 strb r3, [r4, #3] + 1b3b0: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b2d2: f884 e004 strb.w lr, [r4, #4] + 1b3b2: f884 e004 strb.w lr, [r4, #4] uint16_t sysLength = size(); - 1b2d6: f8b4 3003 ldrh.w r3, [r4, #3] + 1b3b6: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x94> + 1b3c4: d8e4 bhi.n 1b390 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x94> for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x98> + 1b3cc: 70e3 strb r3, [r4, #3] + 1b3ce: d1e1 bne.n 1b394 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x98> } - 1b2f0: b007 add sp, #28 - 1b2f2: bd30 pop {r4, r5, pc} + 1b3d0: b007 add sp, #28 + 1b3d2: bd30 pop {r4, r5, pc} sysex[sysLength++] = value; - 1b2f4: 18e1 adds r1, r4, r3 + 1b3d4: 18e1 adds r1, r4, r3 appendSysExByte(value & 0x7F); - 1b2f6: f002 027f and.w r2, r2, #127 ; 0x7f + 1b3d6: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b2fa: 3301 adds r3, #1 - 1b2fc: 714a strb r2, [r1, #5] + 1b3da: 3301 adds r3, #1 + 1b3dc: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b2fe: 2100 movs r1, #0 + 1b3de: 2100 movs r1, #0 setData1(value & 0xFF); - 1b300: 70e3 strb r3, [r4, #3] + 1b3e0: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b302: 7121 strb r1, [r4, #4] + 1b3e2: 7121 strb r1, [r4, #4] appendSysExByte(value & 0x7F); - 1b304: f8b4 3003 ldrh.w r3, [r4, #3] - 1b308: f89d 200f ldrb.w r2, [sp, #15] + 1b3e4: f8b4 3003 ldrh.w r3, [r4, #3] + 1b3e8: f89d 200f ldrb.w r2, [sp, #15] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b3f2: d8ac bhi.n 1b34e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b314: 18e1 adds r1, r4, r3 - 1b316: 3301 adds r3, #1 - 1b318: 714a strb r2, [r1, #5] + 1b3f4: 18e1 adds r1, r4, r3 + 1b3f6: 3301 adds r3, #1 + 1b3f8: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b31a: 70e3 strb r3, [r4, #3] + 1b3fa: 70e3 strb r3, [r4, #3] appendSysExByte(value & 0x7F); - 1b31c: f8b4 3003 ldrh.w r3, [r4, #3] - 1b320: f89d 2010 ldrb.w r2, [sp, #16] + 1b3fc: f8b4 3003 ldrh.w r3, [r4, #3] + 1b400: f89d 2010 ldrb.w r2, [sp, #16] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b40a: d8a0 bhi.n 1b34e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b32c: 18e1 adds r1, r4, r3 - 1b32e: 3301 adds r3, #1 - 1b330: 714a strb r2, [r1, #5] + 1b40c: 18e1 adds r1, r4, r3 + 1b40e: 3301 adds r3, #1 + 1b410: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b332: 70e3 strb r3, [r4, #3] + 1b412: 70e3 strb r3, [r4, #3] return true; - 1b334: e79b b.n 1b26e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b414: e79b b.n 1b34e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b336: 18e1 adds r1, r4, r3 + 1b416: 18e1 adds r1, r4, r3 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b338: f3c2 10c6 ubfx r0, r2, #7, #7 + 1b418: f3c2 10c6 ubfx r0, r2, #7, #7 sysex[sysLength++] = value; - 1b33c: 3301 adds r3, #1 + 1b41c: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b33e: f002 027f and.w r2, r2, #127 ; 0x7f + 1b41e: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b342: 7148 strb r0, [r1, #5] + 1b422: 7148 strb r0, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b344: 2100 movs r1, #0 + 1b424: 2100 movs r1, #0 setData1(value & 0xFF); - 1b346: 70e3 strb r3, [r4, #3] + 1b426: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b348: 7121 strb r1, [r4, #4] + 1b428: 7121 strb r1, [r4, #4] uint16_t sysLength = size(); - 1b34a: f8b4 3003 ldrh.w r3, [r4, #3] + 1b42a: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> + 1b42e: 2bfd cmp r3, #253 ; 0xfd + 1b430: f63f af7d bhi.w 1b32e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> sysex[sysLength++] = value; - 1b354: 18e1 adds r1, r4, r3 - 1b356: 3301 adds r3, #1 - 1b358: 714a strb r2, [r1, #5] + 1b434: 18e1 adds r1, r4, r3 + 1b436: 3301 adds r3, #1 + 1b438: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b35a: 70e3 strb r3, [r4, #3] + 1b43a: 70e3 strb r3, [r4, #3] return true; - 1b35c: e777 b.n 1b24e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> + 1b43c: e777 b.n 1b32e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> sysex[sysLength++] = value; - 1b35e: 18e2 adds r2, r4, r3 - 1b360: 2101 movs r1, #1 - 1b362: 3301 adds r3, #1 - 1b364: 7151 strb r1, [r2, #5] + 1b43e: 18e2 adds r2, r4, r3 + 1b440: 2101 movs r1, #1 + 1b442: 3301 adds r3, #1 + 1b444: 7151 strb r1, [r2, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b366: 2200 movs r2, #0 + 1b446: 2200 movs r2, #0 setData1(value & 0xFF); - 1b368: 70e3 strb r3, [r4, #3] + 1b448: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b36a: 7122 strb r2, [r4, #4] + 1b44a: 7122 strb r2, [r4, #4] uint16_t sysLength = size(); - 1b36c: f8b4 3003 ldrh.w r3, [r4, #3] + 1b44c: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> + 1b450: 2bfd cmp r3, #253 ; 0xfd + 1b452: d897 bhi.n 1b384 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> sysex[sysLength++] = value; - 1b374: 18e2 adds r2, r4, r3 - 1b376: 440b add r3, r1 - 1b378: 2110 movs r1, #16 - 1b37a: 7151 strb r1, [r2, #5] + 1b454: 18e2 adds r2, r4, r3 + 1b456: 440b add r3, r1 + 1b458: 2110 movs r1, #16 + 1b45a: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 1b37c: 70e3 strb r3, [r4, #3] + 1b45c: 70e3 strb r3, [r4, #3] for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> + 1b46a: d88b bhi.n 1b384 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> sysex[sysLength++] = value; - 1b38c: 18e1 adds r1, r4, r3 - 1b38e: 3301 adds r3, #1 + 1b46c: 18e1 adds r1, r4, r3 + 1b46e: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1b390: f002 027f and.w r2, r2, #127 ; 0x7f + 1b470: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b394: 7148 strb r0, [r1, #5] + 1b474: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1b396: 70e3 strb r3, [r4, #3] + 1b476: 70e3 strb r3, [r4, #3] uint16_t sysLength = size(); - 1b398: f8b4 3003 ldrh.w r3, [r4, #3] + 1b478: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> + 1b47c: 2bfd cmp r3, #253 ; 0xfd + 1b47e: d881 bhi.n 1b384 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> sysex[sysLength++] = value; - 1b3a0: 18e1 adds r1, r4, r3 - 1b3a2: 3301 adds r3, #1 - 1b3a4: 714a strb r2, [r1, #5] + 1b480: 18e1 adds r1, r4, r3 + 1b482: 3301 adds r3, #1 + 1b484: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b3a6: 70e3 strb r3, [r4, #3] + 1b486: 70e3 strb r3, [r4, #3] for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> - 1b3ae: bf00 nop + 1b488: f8b4 3003 ldrh.w r3, [r4, #3] + 1b48c: e77a b.n 1b384 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> + 1b48e: bf00 nop -0001b3b0 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]>: +0001b490 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]>: void BMCEditor::deviceResponseData(bmcStoreDevice& item, - 1b3b0: b530 push {r4, r5, lr} - 1b3b2: b087 sub sp, #28 - 1b3b4: 460c mov r4, r1 + 1b490: b530 push {r4, r5, lr} + 1b492: b087 sub sp, #28 + 1b494: 460c mov r4, r1 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1b3b6: b212 sxth r2, r2 - 1b3b8: 4619 mov r1, r3 + 1b496: b212 sxth r2, r2 + 1b498: 4619 mov r1, r3 void BMCEditor::deviceResponseData(bmcStoreDevice& item, - 1b3ba: 4605 mov r5, r0 + 1b49a: 4605 mov r5, r0 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1b3bc: a801 add r0, sp, #4 - 1b3be: f7ff fc89 bl 1acd4 + 1b49c: a801 add r0, sp, #4 + 1b49e: f7ff fc89 bl 1adb4 buff.appendToSysEx14Bits(ui.pins[0]); - 1b3c2: f8bd 1004 ldrh.w r1, [sp, #4] - 1b3c6: 4620 mov r0, r4 - 1b3c8: f7ff feea bl 1b1a0 + 1b4a2: f8bd 1004 ldrh.w r1, [sp, #4] + 1b4a6: 4620 mov r0, r4 + 1b4a8: f7ff feea bl 1b280 buff.appendToSysEx14Bits(ui.pins[1]); - 1b3cc: f8bd 1006 ldrh.w r1, [sp, #6] - 1b3d0: 4620 mov r0, r4 - 1b3d2: f7ff fee5 bl 1b1a0 - 1b3d6: f8b4 3003 ldrh.w r3, [r4, #3] + 1b4ac: f8bd 1006 ldrh.w r1, [sp, #6] + 1b4b0: 4620 mov r0, r4 + 1b4b2: f7ff fee5 bl 1b280 + 1b4b6: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx14Bits(ui.pins[2]); - 1b3da: f9bd 2008 ldrsh.w r2, [sp, #8] + 1b4ba: f9bd 2008 ldrsh.w r2, [sp, #8] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x11a> + 1b4be: 2bfd cmp r3, #253 ; 0xfd + 1b4c0: d973 bls.n 1b5aa (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x11a> buff.appendToSysEx16Bits(ui.x); - 1b3e2: f8bd 100a ldrh.w r1, [sp, #10] - 1b3e6: 4620 mov r0, r4 - 1b3e8: f7ff fef4 bl 1b1d4 + 1b4c2: f8bd 100a ldrh.w r1, [sp, #10] + 1b4c6: 4620 mov r0, r4 + 1b4c8: f7ff fef4 bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1b3ec: f8bd 100c ldrh.w r1, [sp, #12] - 1b3f0: 4620 mov r0, r4 - 1b3f2: f7ff feef bl 1b1d4 - 1b3f6: f8b4 3003 ldrh.w r3, [r4, #3] + 1b4cc: f8bd 100c ldrh.w r1, [sp, #12] + 1b4d0: 4620 mov r0, r4 + 1b4d2: f7ff feef bl 1b2b4 + 1b4d6: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx7Bits(ui.style); - 1b3fa: f89d 200e ldrb.w r2, [sp, #14] - 1b3fe: 2bfd cmp r3, #253 ; 0xfd - 1b400: d942 bls.n 1b488 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd8> + 1b4da: f89d 200e ldrb.w r2, [sp, #14] + 1b4de: 2bfd cmp r3, #253 ; 0xfd + 1b4e0: d942 bls.n 1b568 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd8> buff.appendToSysEx14Bits(ui.mergeIndex); - 1b402: f8bd 1012 ldrh.w r1, [sp, #18] - 1b406: 4620 mov r0, r4 - 1b408: f7ff feca bl 1b1a0 + 1b4e2: f8bd 1012 ldrh.w r1, [sp, #18] + 1b4e6: 4620 mov r0, r4 + 1b4e8: f7ff feca bl 1b280 uint16_t sysLength = size(); - 1b40c: f8b4 3003 ldrh.w r3, [r4, #3] + 1b4ec: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x78> + 1b4f0: 2bfd cmp r3, #253 ; 0xfd + 1b4f2: d809 bhi.n 1b508 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x78> buff.appendToSysEx7Bits(ui.other1); - 1b414: f8bd 2014 ldrh.w r2, [sp, #20] + 1b4f4: f8bd 2014 ldrh.w r2, [sp, #20] sysex[sysLength++] = value; - 1b418: 18e1 adds r1, r4, r3 - 1b41a: 3301 adds r3, #1 + 1b4f8: 18e1 adds r1, r4, r3 + 1b4fa: 3301 adds r3, #1 appendSysExByte(value & 0x7F); - 1b41c: f002 027f and.w r2, r2, #127 ; 0x7f + 1b4fc: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b420: 714a strb r2, [r1, #5] + 1b500: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b422: 2200 movs r2, #0 + 1b502: 2200 movs r2, #0 setData1(value & 0xFF); - 1b424: 70e3 strb r3, [r4, #3] + 1b504: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b426: 7122 strb r2, [r4, #4] + 1b506: 7122 strb r2, [r4, #4] buff.appendToSysEx14Bits(item.name);// name - 1b428: 7829 ldrb r1, [r5, #0] - 1b42a: 4620 mov r0, r4 - 1b42c: f7ff feb8 bl 1b1a0 + 1b508: 7829 ldrb r1, [r5, #0] + 1b50a: 4620 mov r0, r4 + 1b50c: f7ff feb8 bl 1b280 uint16_t sysLength = size(); - 1b430: f8b4 3003 ldrh.w r3, [r4, #3] + 1b510: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x142> - 1b438: 1c6a adds r2, r5, #1 - 1b43a: f105 0009 add.w r0, r5, #9 + 1b514: 2bfd cmp r3, #253 ; 0xfd + 1b516: d95c bls.n 1b5d2 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x142> + 1b518: 1c6a adds r2, r5, #1 + 1b51a: f105 0009 add.w r0, r5, #9 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b43e: f04f 0e00 mov.w lr, #0 - 1b442: e003 b.n 1b44c (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x9c> + 1b51e: f04f 0e00 mov.w lr, #0 + 1b522: e003 b.n 1b52c (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x9c> for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd4> - 1b448: f8b4 3003 ldrh.w r3, [r4, #3] + 1b524: 4282 cmp r2, r0 + 1b526: d01d beq.n 1b564 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd4> + 1b528: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x94> + 1b52e: f812 1f01 ldrb.w r1, [r2, #1]! + 1b532: d8f7 bhi.n 1b524 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x94> appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b454: ea4f 1cd1 mov.w ip, r1, lsr #7 + 1b534: ea4f 1cd1 mov.w ip, r1, lsr #7 sysex[sysLength++] = value; - 1b458: 18e5 adds r5, r4, r3 - 1b45a: 3301 adds r3, #1 + 1b538: 18e5 adds r5, r4, r3 + 1b53a: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b45c: f001 017f and.w r1, r1, #127 ; 0x7f + 1b53c: f001 017f and.w r1, r1, #127 ; 0x7f appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b460: f885 c005 strb.w ip, [r5, #5] + 1b540: f885 c005 strb.w ip, [r5, #5] setData1(value & 0xFF); - 1b464: 70e3 strb r3, [r4, #3] + 1b544: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b466: f884 e004 strb.w lr, [r4, #4] + 1b546: f884 e004 strb.w lr, [r4, #4] uint16_t sysLength = size(); - 1b46a: f8b4 3003 ldrh.w r3, [r4, #3] + 1b54a: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x94> + 1b558: d8e4 bhi.n 1b524 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x94> for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x98> + 1b560: 70e3 strb r3, [r4, #3] + 1b562: d1e1 bne.n 1b528 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x98> } - 1b484: b007 add sp, #28 - 1b486: bd30 pop {r4, r5, pc} + 1b564: b007 add sp, #28 + 1b566: bd30 pop {r4, r5, pc} sysex[sysLength++] = value; - 1b488: 18e1 adds r1, r4, r3 + 1b568: 18e1 adds r1, r4, r3 appendSysExByte(value & 0x7F); - 1b48a: f002 027f and.w r2, r2, #127 ; 0x7f + 1b56a: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b48e: 3301 adds r3, #1 - 1b490: 714a strb r2, [r1, #5] + 1b56e: 3301 adds r3, #1 + 1b570: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b492: 2100 movs r1, #0 + 1b572: 2100 movs r1, #0 setData1(value & 0xFF); - 1b494: 70e3 strb r3, [r4, #3] + 1b574: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b496: 7121 strb r1, [r4, #4] + 1b576: 7121 strb r1, [r4, #4] appendSysExByte(value & 0x7F); - 1b498: f8b4 3003 ldrh.w r3, [r4, #3] - 1b49c: f89d 200f ldrb.w r2, [sp, #15] + 1b578: f8b4 3003 ldrh.w r3, [r4, #3] + 1b57c: f89d 200f ldrb.w r2, [sp, #15] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b586: d8ac bhi.n 1b4e2 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b4a8: 18e1 adds r1, r4, r3 - 1b4aa: 3301 adds r3, #1 - 1b4ac: 714a strb r2, [r1, #5] + 1b588: 18e1 adds r1, r4, r3 + 1b58a: 3301 adds r3, #1 + 1b58c: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b4ae: 70e3 strb r3, [r4, #3] + 1b58e: 70e3 strb r3, [r4, #3] appendSysExByte(value & 0x7F); - 1b4b0: f8b4 3003 ldrh.w r3, [r4, #3] - 1b4b4: f89d 2010 ldrb.w r2, [sp, #16] + 1b590: f8b4 3003 ldrh.w r3, [r4, #3] + 1b594: f89d 2010 ldrb.w r2, [sp, #16] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b59e: d8a0 bhi.n 1b4e2 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b4c0: 18e1 adds r1, r4, r3 - 1b4c2: 3301 adds r3, #1 - 1b4c4: 714a strb r2, [r1, #5] + 1b5a0: 18e1 adds r1, r4, r3 + 1b5a2: 3301 adds r3, #1 + 1b5a4: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b4c6: 70e3 strb r3, [r4, #3] + 1b5a6: 70e3 strb r3, [r4, #3] return true; - 1b4c8: e79b b.n 1b402 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b5a8: e79b b.n 1b4e2 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b4ca: 18e1 adds r1, r4, r3 + 1b5aa: 18e1 adds r1, r4, r3 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b4cc: f3c2 10c6 ubfx r0, r2, #7, #7 + 1b5ac: f3c2 10c6 ubfx r0, r2, #7, #7 sysex[sysLength++] = value; - 1b4d0: 3301 adds r3, #1 + 1b5b0: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b4d2: f002 027f and.w r2, r2, #127 ; 0x7f + 1b5b2: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b4d6: 7148 strb r0, [r1, #5] + 1b5b6: 7148 strb r0, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b4d8: 2100 movs r1, #0 + 1b5b8: 2100 movs r1, #0 setData1(value & 0xFF); - 1b4da: 70e3 strb r3, [r4, #3] + 1b5ba: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b4dc: 7121 strb r1, [r4, #4] + 1b5bc: 7121 strb r1, [r4, #4] uint16_t sysLength = size(); - 1b4de: f8b4 3003 ldrh.w r3, [r4, #3] + 1b5be: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> + 1b5c2: 2bfd cmp r3, #253 ; 0xfd + 1b5c4: f63f af7d bhi.w 1b4c2 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> sysex[sysLength++] = value; - 1b4e8: 18e1 adds r1, r4, r3 - 1b4ea: 3301 adds r3, #1 - 1b4ec: 714a strb r2, [r1, #5] + 1b5c8: 18e1 adds r1, r4, r3 + 1b5ca: 3301 adds r3, #1 + 1b5cc: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b4ee: 70e3 strb r3, [r4, #3] + 1b5ce: 70e3 strb r3, [r4, #3] return true; - 1b4f0: e777 b.n 1b3e2 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> + 1b5d0: e777 b.n 1b4c2 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> sysex[sysLength++] = value; - 1b4f2: 18e2 adds r2, r4, r3 - 1b4f4: 2101 movs r1, #1 - 1b4f6: 3301 adds r3, #1 - 1b4f8: 7151 strb r1, [r2, #5] + 1b5d2: 18e2 adds r2, r4, r3 + 1b5d4: 2101 movs r1, #1 + 1b5d6: 3301 adds r3, #1 + 1b5d8: 7151 strb r1, [r2, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b4fa: 2200 movs r2, #0 + 1b5da: 2200 movs r2, #0 setData1(value & 0xFF); - 1b4fc: 70e3 strb r3, [r4, #3] + 1b5dc: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b4fe: 7122 strb r2, [r4, #4] + 1b5de: 7122 strb r2, [r4, #4] uint16_t sysLength = size(); - 1b500: f8b4 3003 ldrh.w r3, [r4, #3] + 1b5e0: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> + 1b5e4: 2bfd cmp r3, #253 ; 0xfd + 1b5e6: d897 bhi.n 1b518 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> sysex[sysLength++] = value; - 1b508: 18e2 adds r2, r4, r3 - 1b50a: 440b add r3, r1 - 1b50c: 2108 movs r1, #8 - 1b50e: 7151 strb r1, [r2, #5] + 1b5e8: 18e2 adds r2, r4, r3 + 1b5ea: 440b add r3, r1 + 1b5ec: 2108 movs r1, #8 + 1b5ee: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 1b510: 70e3 strb r3, [r4, #3] + 1b5f0: 70e3 strb r3, [r4, #3] for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> + 1b5fe: d88b bhi.n 1b518 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> sysex[sysLength++] = value; - 1b520: 18e1 adds r1, r4, r3 - 1b522: 3301 adds r3, #1 + 1b600: 18e1 adds r1, r4, r3 + 1b602: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1b524: f002 027f and.w r2, r2, #127 ; 0x7f + 1b604: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b528: 7148 strb r0, [r1, #5] + 1b608: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1b52a: 70e3 strb r3, [r4, #3] + 1b60a: 70e3 strb r3, [r4, #3] uint16_t sysLength = size(); - 1b52c: f8b4 3003 ldrh.w r3, [r4, #3] + 1b60c: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> + 1b610: 2bfd cmp r3, #253 ; 0xfd + 1b612: d881 bhi.n 1b518 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> sysex[sysLength++] = value; - 1b534: 18e1 adds r1, r4, r3 - 1b536: 3301 adds r3, #1 - 1b538: 714a strb r2, [r1, #5] + 1b614: 18e1 adds r1, r4, r3 + 1b616: 3301 adds r3, #1 + 1b618: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b53a: 70e3 strb r3, [r4, #3] + 1b61a: 70e3 strb r3, [r4, #3] for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> - 1b542: bf00 nop + 1b61c: f8b4 3003 ldrh.w r3, [r4, #3] + 1b620: e77a b.n 1b518 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x88> + 1b622: bf00 nop -0001b544 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]>: +0001b624 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]>: void BMCEditor::deviceResponseData(bmcStoreDevice& item, - 1b544: b530 push {r4, r5, lr} - 1b546: b087 sub sp, #28 - 1b548: 460c mov r4, r1 + 1b624: b530 push {r4, r5, lr} + 1b626: b087 sub sp, #28 + 1b628: 460c mov r4, r1 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1b54a: b212 sxth r2, r2 - 1b54c: 4619 mov r1, r3 + 1b62a: b212 sxth r2, r2 + 1b62c: 4619 mov r1, r3 void BMCEditor::deviceResponseData(bmcStoreDevice& item, - 1b54e: 4605 mov r5, r0 + 1b62e: 4605 mov r5, r0 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1b550: a801 add r0, sp, #4 - 1b552: f7ff fbbf bl 1acd4 + 1b630: a801 add r0, sp, #4 + 1b632: f7ff fbbf bl 1adb4 buff.appendToSysEx14Bits(ui.pins[0]); - 1b556: f8bd 1004 ldrh.w r1, [sp, #4] - 1b55a: 4620 mov r0, r4 - 1b55c: f7ff fe20 bl 1b1a0 + 1b636: f8bd 1004 ldrh.w r1, [sp, #4] + 1b63a: 4620 mov r0, r4 + 1b63c: f7ff fe20 bl 1b280 buff.appendToSysEx14Bits(ui.pins[1]); - 1b560: f8bd 1006 ldrh.w r1, [sp, #6] - 1b564: 4620 mov r0, r4 - 1b566: f7ff fe1b bl 1b1a0 - 1b56a: f8b4 3003 ldrh.w r3, [r4, #3] + 1b640: f8bd 1006 ldrh.w r1, [sp, #6] + 1b644: 4620 mov r0, r4 + 1b646: f7ff fe1b bl 1b280 + 1b64a: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx14Bits(ui.pins[2]); - 1b56e: f9bd 2008 ldrsh.w r2, [sp, #8] + 1b64e: f9bd 2008 ldrsh.w r2, [sp, #8] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x6e> + 1b652: 2bfd cmp r3, #253 ; 0xfd + 1b654: d91d bls.n 1b692 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x6e> buff.appendToSysEx16Bits(ui.x); - 1b576: f8bd 100a ldrh.w r1, [sp, #10] - 1b57a: 4620 mov r0, r4 - 1b57c: f7ff fe2a bl 1b1d4 + 1b656: f8bd 100a ldrh.w r1, [sp, #10] + 1b65a: 4620 mov r0, r4 + 1b65c: f7ff fe2a bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1b580: f8bd 100c ldrh.w r1, [sp, #12] - 1b584: 4620 mov r0, r4 - 1b586: f7ff fe25 bl 1b1d4 - 1b58a: f8b4 3003 ldrh.w r3, [r4, #3] + 1b660: f8bd 100c ldrh.w r1, [sp, #12] + 1b664: 4620 mov r0, r4 + 1b666: f7ff fe25 bl 1b2b4 + 1b66a: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx7Bits(ui.style); - 1b58e: f89d 200e ldrb.w r2, [sp, #14] - 1b592: 2bfd cmp r3, #253 ; 0xfd - 1b594: d94a bls.n 1b62c (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xe8> + 1b66e: f89d 200e ldrb.w r2, [sp, #14] + 1b672: 2bfd cmp r3, #253 ; 0xfd + 1b674: d94a bls.n 1b70c (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xe8> buff.appendToSysEx14Bits(item.name);// name - 1b596: 7829 ldrb r1, [r5, #0] - 1b598: 4620 mov r0, r4 - 1b59a: f7ff fe01 bl 1b1a0 + 1b676: 7829 ldrb r1, [r5, #0] + 1b678: 4620 mov r0, r4 + 1b67a: f7ff fe01 bl 1b280 uint16_t sysLength = size(); - 1b59e: f8b4 3003 ldrh.w r3, [r4, #3] + 1b67e: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x94> + 1b682: 2bfd cmp r3, #253 ; 0xfd + 1b684: d918 bls.n 1b6b8 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x94> buff.appendToSysEx14Bits(item.events[i]); - 1b5a6: 78a9 ldrb r1, [r5, #2] - 1b5a8: 4620 mov r0, r4 - 1b5aa: f7ff fdf9 bl 1b1a0 + 1b686: 78a9 ldrb r1, [r5, #2] + 1b688: 4620 mov r0, r4 + 1b68a: f7ff fdf9 bl 1b280 } - 1b5ae: b007 add sp, #28 - 1b5b0: bd30 pop {r4, r5, pc} + 1b68e: b007 add sp, #28 + 1b690: bd30 pop {r4, r5, pc} sysex[sysLength++] = value; - 1b5b2: 18e1 adds r1, r4, r3 + 1b692: 18e1 adds r1, r4, r3 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b5b4: f3c2 10c6 ubfx r0, r2, #7, #7 + 1b694: f3c2 10c6 ubfx r0, r2, #7, #7 sysex[sysLength++] = value; - 1b5b8: 3301 adds r3, #1 + 1b698: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b5ba: f002 027f and.w r2, r2, #127 ; 0x7f + 1b69a: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b5be: 7148 strb r0, [r1, #5] + 1b69e: 7148 strb r0, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b5c0: 2100 movs r1, #0 + 1b6a0: 2100 movs r1, #0 setData1(value & 0xFF); - 1b5c2: 70e3 strb r3, [r4, #3] + 1b6a2: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b5c4: 7121 strb r1, [r4, #4] + 1b6a4: 7121 strb r1, [r4, #4] uint16_t sysLength = size(); - 1b5c6: f8b4 3003 ldrh.w r3, [r4, #3] + 1b6a6: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> + 1b6aa: 2bfd cmp r3, #253 ; 0xfd + 1b6ac: d8d3 bhi.n 1b656 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> sysex[sysLength++] = value; - 1b5ce: 18e1 adds r1, r4, r3 - 1b5d0: 3301 adds r3, #1 - 1b5d2: 714a strb r2, [r1, #5] + 1b6ae: 18e1 adds r1, r4, r3 + 1b6b0: 3301 adds r3, #1 + 1b6b2: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b5d4: 70e3 strb r3, [r4, #3] + 1b6b4: 70e3 strb r3, [r4, #3] return true; - 1b5d6: e7ce b.n 1b576 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> + 1b6b6: e7ce b.n 1b656 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x32> sysex[sysLength++] = value; - 1b5d8: 18e1 adds r1, r4, r3 - 1b5da: 2201 movs r2, #1 - 1b5dc: 714a strb r2, [r1, #5] - 1b5de: 4413 add r3, r2 + 1b6b8: 18e1 adds r1, r4, r3 + 1b6ba: 2201 movs r2, #1 + 1b6bc: 714a strb r2, [r1, #5] + 1b6be: 4413 add r3, r2 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b5e0: 2100 movs r1, #0 + 1b6c0: 2100 movs r1, #0 setData1(value & 0xFF); - 1b5e2: 70e3 strb r3, [r4, #3] + 1b6c2: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b5e4: 7121 strb r1, [r4, #4] + 1b6c4: 7121 strb r1, [r4, #4] uint16_t sysLength = size(); - 1b5e6: f8b4 3003 ldrh.w r3, [r4, #3] + 1b6c6: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x62> + 1b6ca: 2bfd cmp r3, #253 ; 0xfd + 1b6cc: d8db bhi.n 1b686 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x62> sysex[sysLength++] = value; - 1b5ee: 18e1 adds r1, r4, r3 - 1b5f0: 4413 add r3, r2 - 1b5f2: 714a strb r2, [r1, #5] + 1b6ce: 18e1 adds r1, r4, r3 + 1b6d0: 4413 add r3, r2 + 1b6d2: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b5f4: 70e3 strb r3, [r4, #3] + 1b6d4: 70e3 strb r3, [r4, #3] for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x62> + 1b6e2: d8d0 bhi.n 1b686 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x62> sysex[sysLength++] = value; - 1b604: 18e1 adds r1, r4, r3 - 1b606: 3301 adds r3, #1 + 1b6e4: 18e1 adds r1, r4, r3 + 1b6e6: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1b608: f002 027f and.w r2, r2, #127 ; 0x7f + 1b6e8: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b60c: 7148 strb r0, [r1, #5] + 1b6ec: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1b60e: 70e3 strb r3, [r4, #3] + 1b6ee: 70e3 strb r3, [r4, #3] uint16_t sysLength = size(); - 1b610: f8b4 3003 ldrh.w r3, [r4, #3] + 1b6f0: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x62> + 1b6f4: 2bfd cmp r3, #253 ; 0xfd + 1b6f6: d8c6 bhi.n 1b686 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x62> sysex[sysLength++] = value; - 1b618: 18e1 adds r1, r4, r3 - 1b61a: 3301 adds r3, #1 + 1b6f8: 18e1 adds r1, r4, r3 + 1b6fa: 3301 adds r3, #1 buff.appendToSysEx14Bits(item.events[i]); - 1b61c: 4620 mov r0, r4 - 1b61e: 714a strb r2, [r1, #5] + 1b6fc: 4620 mov r0, r4 + 1b6fe: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b620: 70e3 strb r3, [r4, #3] - 1b622: 78a9 ldrb r1, [r5, #2] - 1b624: f7ff fdbc bl 1b1a0 + 1b700: 70e3 strb r3, [r4, #3] + 1b702: 78a9 ldrb r1, [r5, #2] + 1b704: f7ff fdbc bl 1b280 } - 1b628: b007 add sp, #28 - 1b62a: bd30 pop {r4, r5, pc} + 1b708: b007 add sp, #28 + 1b70a: bd30 pop {r4, r5, pc} sysex[sysLength++] = value; - 1b62c: 18e1 adds r1, r4, r3 + 1b70c: 18e1 adds r1, r4, r3 appendSysExByte(value & 0x7F); - 1b62e: f002 027f and.w r2, r2, #127 ; 0x7f + 1b70e: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b632: 3301 adds r3, #1 - 1b634: 714a strb r2, [r1, #5] + 1b712: 3301 adds r3, #1 + 1b714: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b636: 2100 movs r1, #0 + 1b716: 2100 movs r1, #0 setData1(value & 0xFF); - 1b638: 70e3 strb r3, [r4, #3] + 1b718: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b63a: 7121 strb r1, [r4, #4] + 1b71a: 7121 strb r1, [r4, #4] appendSysExByte(value & 0x7F); - 1b63c: f8b4 3003 ldrh.w r3, [r4, #3] - 1b640: f89d 200f ldrb.w r2, [sp, #15] + 1b71c: f8b4 3003 ldrh.w r3, [r4, #3] + 1b720: f89d 200f ldrb.w r2, [sp, #15] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b72a: d8a4 bhi.n 1b676 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b64c: 18e1 adds r1, r4, r3 - 1b64e: 3301 adds r3, #1 - 1b650: 714a strb r2, [r1, #5] + 1b72c: 18e1 adds r1, r4, r3 + 1b72e: 3301 adds r3, #1 + 1b730: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b652: 70e3 strb r3, [r4, #3] + 1b732: 70e3 strb r3, [r4, #3] appendSysExByte(value & 0x7F); - 1b654: f8b4 3003 ldrh.w r3, [r4, #3] - 1b658: f89d 2010 ldrb.w r2, [sp, #16] + 1b734: f8b4 3003 ldrh.w r3, [r4, #3] + 1b738: f89d 2010 ldrb.w r2, [sp, #16] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b742: d898 bhi.n 1b676 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b664: 18e1 adds r1, r4, r3 - 1b666: 3301 adds r3, #1 - 1b668: 714a strb r2, [r1, #5] + 1b744: 18e1 adds r1, r4, r3 + 1b746: 3301 adds r3, #1 + 1b748: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b66a: 70e3 strb r3, [r4, #3] + 1b74a: 70e3 strb r3, [r4, #3] return true; - 1b66c: f8b4 3003 ldrh.w r3, [r4, #3] + 1b74c: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx14Bits(ui.mergeIndex); - 1b670: f8bd 2012 ldrh.w r2, [sp, #18] + 1b750: f8bd 2012 ldrh.w r2, [sp, #18] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b75a: d88c bhi.n 1b676 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b67c: 18e1 adds r1, r4, r3 - 1b67e: 3301 adds r3, #1 + 1b75c: 18e1 adds r1, r4, r3 + 1b75e: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b680: f002 027f and.w r2, r2, #127 ; 0x7f + 1b760: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b684: 7148 strb r0, [r1, #5] + 1b764: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1b686: 70e3 strb r3, [r4, #3] + 1b766: 70e3 strb r3, [r4, #3] uint16_t sysLength = size(); - 1b688: f8b4 3003 ldrh.w r3, [r4, #3] + 1b768: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b76c: 2bfd cmp r3, #253 ; 0xfd + 1b76e: d882 bhi.n 1b676 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b690: 18e1 adds r1, r4, r3 - 1b692: 3301 adds r3, #1 - 1b694: 714a strb r2, [r1, #5] + 1b770: 18e1 adds r1, r4, r3 + 1b772: 3301 adds r3, #1 + 1b774: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b696: 70e3 strb r3, [r4, #3] + 1b776: 70e3 strb r3, [r4, #3] appendSysExByte(value & 0x7F); - 1b698: f8b4 3003 ldrh.w r3, [r4, #3] + 1b778: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx7Bits(ui.other1); - 1b69c: f8bd 2014 ldrh.w r2, [sp, #20] + 1b77c: f8bd 2014 ldrh.w r2, [sp, #20] if(sysLength(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b786: f63f af76 bhi.w 1b676 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b6aa: 18e1 adds r1, r4, r3 - 1b6ac: 3301 adds r3, #1 - 1b6ae: 714a strb r2, [r1, #5] + 1b78a: 18e1 adds r1, r4, r3 + 1b78c: 3301 adds r3, #1 + 1b78e: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b6b0: 70e3 strb r3, [r4, #3] + 1b790: 70e3 strb r3, [r4, #3] return true; - 1b6b2: e770 b.n 1b596 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1b792: e770 b.n 1b676 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> -0001b6b4 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]>: +0001b794 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]>: void BMCEditor::deviceResponseData(bmcStoreDevice& item, - 1b6b4: b570 push {r4, r5, r6, lr} - 1b6b6: b086 sub sp, #24 - 1b6b8: 460c mov r4, r1 + 1b794: b570 push {r4, r5, r6, lr} + 1b796: b086 sub sp, #24 + 1b798: 460c mov r4, r1 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1b6ba: b212 sxth r2, r2 - 1b6bc: 4619 mov r1, r3 + 1b79a: b212 sxth r2, r2 + 1b79c: 4619 mov r1, r3 void BMCEditor::deviceResponseData(bmcStoreDevice& item, - 1b6be: 4605 mov r5, r0 + 1b79e: 4605 mov r5, r0 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1b6c0: a801 add r0, sp, #4 - 1b6c2: f7ff fb07 bl 1acd4 + 1b7a0: a801 add r0, sp, #4 + 1b7a2: f7ff fb07 bl 1adb4 buff.appendToSysEx14Bits(ui.pins[0]); - 1b6c6: f8bd 1004 ldrh.w r1, [sp, #4] - 1b6ca: 4620 mov r0, r4 - 1b6cc: f7ff fd68 bl 1b1a0 - 1b6d0: f8b4 3003 ldrh.w r3, [r4, #3] + 1b7a6: f8bd 1004 ldrh.w r1, [sp, #4] + 1b7aa: 4620 mov r0, r4 + 1b7ac: f7ff fd68 bl 1b280 + 1b7b0: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx14Bits(ui.pins[1]); - 1b6d4: f9bd 2006 ldrsh.w r2, [sp, #6] + 1b7b4: f9bd 2006 ldrsh.w r2, [sp, #6] if(sysLength(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x16a> + 1b7b8: 2bfd cmp r3, #253 ; 0xfd + 1b7ba: f240 80a0 bls.w 1b8fe (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x16a> buff.appendToSysEx14Bits(ui.pins[2]); - 1b6de: f8bd 1008 ldrh.w r1, [sp, #8] - 1b6e2: 4620 mov r0, r4 - 1b6e4: f7ff fd5c bl 1b1a0 + 1b7be: f8bd 1008 ldrh.w r1, [sp, #8] + 1b7c2: 4620 mov r0, r4 + 1b7c4: f7ff fd5c bl 1b280 buff.appendToSysEx16Bits(ui.x); - 1b6e8: f8bd 100a ldrh.w r1, [sp, #10] - 1b6ec: 4620 mov r0, r4 - 1b6ee: f7ff fd71 bl 1b1d4 + 1b7c8: f8bd 100a ldrh.w r1, [sp, #10] + 1b7cc: 4620 mov r0, r4 + 1b7ce: f7ff fd71 bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1b6f2: f8bd 100c ldrh.w r1, [sp, #12] - 1b6f6: 4620 mov r0, r4 - 1b6f8: f7ff fd6c bl 1b1d4 - 1b6fc: f8b4 3003 ldrh.w r3, [r4, #3] + 1b7d2: f8bd 100c ldrh.w r1, [sp, #12] + 1b7d6: 4620 mov r0, r4 + 1b7d8: f7ff fd6c bl 1b2b4 + 1b7dc: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx7Bits(ui.style); - 1b700: f89d 200e ldrb.w r2, [sp, #14] - 1b704: 2bfd cmp r3, #253 ; 0xfd - 1b706: d968 bls.n 1b7da (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x126> + 1b7e0: f89d 200e ldrb.w r2, [sp, #14] + 1b7e4: 2bfd cmp r3, #253 ; 0xfd + 1b7e6: d968 bls.n 1b8ba (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x126> buff.appendToSysEx14Bits(ui.mergeIndex); - 1b708: f8bd 1012 ldrh.w r1, [sp, #18] - 1b70c: 4620 mov r0, r4 - 1b70e: f7ff fd47 bl 1b1a0 + 1b7e8: f8bd 1012 ldrh.w r1, [sp, #18] + 1b7ec: 4620 mov r0, r4 + 1b7ee: f7ff fd47 bl 1b280 uint16_t sysLength = size(); - 1b712: f8b4 3003 ldrh.w r3, [r4, #3] + 1b7f2: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x7a> + 1b7f6: 2bfd cmp r3, #253 ; 0xfd + 1b7f8: d809 bhi.n 1b80e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x7a> buff.appendToSysEx7Bits(ui.other1); - 1b71a: f8bd 2014 ldrh.w r2, [sp, #20] + 1b7fa: f8bd 2014 ldrh.w r2, [sp, #20] sysex[sysLength++] = value; - 1b71e: 18e1 adds r1, r4, r3 - 1b720: 3301 adds r3, #1 + 1b7fe: 18e1 adds r1, r4, r3 + 1b800: 3301 adds r3, #1 appendSysExByte(value & 0x7F); - 1b722: f002 027f and.w r2, r2, #127 ; 0x7f + 1b802: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b726: 714a strb r2, [r1, #5] + 1b806: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b728: 2200 movs r2, #0 + 1b808: 2200 movs r2, #0 setData1(value & 0xFF); - 1b72a: 70e3 strb r3, [r4, #3] + 1b80a: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b72c: 7122 strb r2, [r4, #4] + 1b80c: 7122 strb r2, [r4, #4] buff.appendToSysEx14Bits(item.name);// name - 1b72e: 7829 ldrb r1, [r5, #0] - 1b730: 4620 mov r0, r4 - 1b732: f7ff fd35 bl 1b1a0 + 1b80e: 7829 ldrb r1, [r5, #0] + 1b810: 4620 mov r0, r4 + 1b812: f7ff fd35 bl 1b280 uint16_t sysLength = size(); - 1b736: f8b4 3003 ldrh.w r3, [r4, #3] + 1b816: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x192> - 1b740: 1c6a adds r2, r5, #1 - 1b742: f105 0c07 add.w ip, r5, #7 + 1b81a: 2bfd cmp r3, #253 ; 0xfd + 1b81c: f240 8083 bls.w 1b926 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x192> + 1b820: 1c6a adds r2, r5, #1 + 1b822: f105 0c07 add.w ip, r5, #7 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b746: 2600 movs r6, #0 - 1b748: e002 b.n 1b750 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x9c> + 1b826: 2600 movs r6, #0 + 1b828: e002 b.n 1b830 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x9c> for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd6> + 1b82a: 3201 adds r2, #1 + 1b82c: 4562 cmp r2, ip + 1b82e: d01c beq.n 1b86a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd6> if(sysLength(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x96> + 1b830: 2bfd cmp r3, #253 ; 0xfd + 1b832: d8fa bhi.n 1b82a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x96> buff.appendToSysEx8Bits(item.settings[i]); - 1b754: 7811 ldrb r1, [r2, #0] + 1b834: 7811 ldrb r1, [r2, #0] sysex[sysLength++] = value; - 1b756: 18e0 adds r0, r4, r3 - 1b758: 3301 adds r3, #1 + 1b836: 18e0 adds r0, r4, r3 + 1b838: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 1b75a: ea4f 1ed1 mov.w lr, r1, lsr #7 + 1b83a: ea4f 1ed1 mov.w lr, r1, lsr #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1b75e: f001 017f and.w r1, r1, #127 ; 0x7f + 1b83e: f001 017f and.w r1, r1, #127 ; 0x7f sysex[sysLength++] = value; - 1b762: f880 e005 strb.w lr, [r0, #5] + 1b842: f880 e005 strb.w lr, [r0, #5] setData1(value & 0xFF); - 1b766: 70e3 strb r3, [r4, #3] + 1b846: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b768: 7126 strb r6, [r4, #4] + 1b848: 7126 strb r6, [r4, #4] uint16_t sysLength = size(); - 1b76a: f8b4 3003 ldrh.w r3, [r4, #3] + 1b84a: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x96> + 1b858: d8e7 bhi.n 1b82a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x96> for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x9c> - 1b78a: 1daa adds r2, r5, #6 - 1b78c: f105 000c add.w r0, r5, #12 + 1b860: 70e0 strb r0, [r4, #3] + 1b862: 4562 cmp r2, ip + 1b864: f8b4 3003 ldrh.w r3, [r4, #3] + 1b868: d1e2 bne.n 1b830 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x9c> + 1b86a: 1daa adds r2, r5, #6 + 1b86c: f105 000c add.w r0, r5, #12 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b790: f04f 0e00 mov.w lr, #0 - 1b794: e003 b.n 1b79e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xea> + 1b870: f04f 0e00 mov.w lr, #0 + 1b874: e003 b.n 1b87e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xea> for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x122> - 1b79a: f8b4 3003 ldrh.w r3, [r4, #3] + 1b876: 4290 cmp r0, r2 + 1b878: d01d beq.n 1b8b6 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x122> + 1b87a: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xe2> + 1b880: f812 1f01 ldrb.w r1, [r2, #1]! + 1b884: d8f7 bhi.n 1b876 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xe2> appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b7a6: ea4f 1cd1 mov.w ip, r1, lsr #7 + 1b886: ea4f 1cd1 mov.w ip, r1, lsr #7 sysex[sysLength++] = value; - 1b7aa: 18e5 adds r5, r4, r3 - 1b7ac: 3301 adds r3, #1 + 1b88a: 18e5 adds r5, r4, r3 + 1b88c: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b7ae: f001 017f and.w r1, r1, #127 ; 0x7f + 1b88e: f001 017f and.w r1, r1, #127 ; 0x7f appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b7b2: f885 c005 strb.w ip, [r5, #5] + 1b892: f885 c005 strb.w ip, [r5, #5] setData1(value & 0xFF); - 1b7b6: 70e3 strb r3, [r4, #3] + 1b896: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b7b8: f884 e004 strb.w lr, [r4, #4] + 1b898: f884 e004 strb.w lr, [r4, #4] uint16_t sysLength = size(); - 1b7bc: f8b4 3003 ldrh.w r3, [r4, #3] + 1b89c: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xe2> + 1b8aa: d8e4 bhi.n 1b876 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xe2> for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xe6> + 1b8b2: 70e3 strb r3, [r4, #3] + 1b8b4: d1e1 bne.n 1b87a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xe6> } - 1b7d6: b006 add sp, #24 - 1b7d8: bd70 pop {r4, r5, r6, pc} + 1b8b6: b006 add sp, #24 + 1b8b8: bd70 pop {r4, r5, r6, pc} sysex[sysLength++] = value; - 1b7da: 18e1 adds r1, r4, r3 + 1b8ba: 18e1 adds r1, r4, r3 appendSysExByte(value & 0x7F); - 1b7dc: f002 027f and.w r2, r2, #127 ; 0x7f + 1b8bc: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b7e0: 3301 adds r3, #1 - 1b7e2: 714a strb r2, [r1, #5] + 1b8c0: 3301 adds r3, #1 + 1b8c2: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b7e4: 2100 movs r1, #0 + 1b8c4: 2100 movs r1, #0 setData1(value & 0xFF); - 1b7e6: 70e3 strb r3, [r4, #3] + 1b8c6: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b7e8: 7121 strb r1, [r4, #4] + 1b8c8: 7121 strb r1, [r4, #4] appendSysExByte(value & 0x7F); - 1b7ea: f8b4 3003 ldrh.w r3, [r4, #3] - 1b7ee: f89d 200f ldrb.w r2, [sp, #15] + 1b8ca: f8b4 3003 ldrh.w r3, [r4, #3] + 1b8ce: f89d 200f ldrb.w r2, [sp, #15] if(sysLength(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x54> + 1b8d8: d886 bhi.n 1b7e8 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x54> sysex[sysLength++] = value; - 1b7fa: 18e1 adds r1, r4, r3 - 1b7fc: 3301 adds r3, #1 - 1b7fe: 714a strb r2, [r1, #5] + 1b8da: 18e1 adds r1, r4, r3 + 1b8dc: 3301 adds r3, #1 + 1b8de: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b800: 70e3 strb r3, [r4, #3] + 1b8e0: 70e3 strb r3, [r4, #3] appendSysExByte(value & 0x7F); - 1b802: f8b4 3003 ldrh.w r3, [r4, #3] - 1b806: f89d 2010 ldrb.w r2, [sp, #16] + 1b8e2: f8b4 3003 ldrh.w r3, [r4, #3] + 1b8e6: f89d 2010 ldrb.w r2, [sp, #16] if(sysLength(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x54> + 1b8f0: f63f af7a bhi.w 1b7e8 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x54> sysex[sysLength++] = value; - 1b814: 18e1 adds r1, r4, r3 - 1b816: 3301 adds r3, #1 - 1b818: 714a strb r2, [r1, #5] + 1b8f4: 18e1 adds r1, r4, r3 + 1b8f6: 3301 adds r3, #1 + 1b8f8: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b81a: 70e3 strb r3, [r4, #3] + 1b8fa: 70e3 strb r3, [r4, #3] return true; - 1b81c: e774 b.n 1b708 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x54> + 1b8fc: e774 b.n 1b7e8 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x54> sysex[sysLength++] = value; - 1b81e: 18e1 adds r1, r4, r3 + 1b8fe: 18e1 adds r1, r4, r3 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b820: f3c2 10c6 ubfx r0, r2, #7, #7 + 1b900: f3c2 10c6 ubfx r0, r2, #7, #7 sysex[sysLength++] = value; - 1b824: 3301 adds r3, #1 + 1b904: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b826: f002 027f and.w r2, r2, #127 ; 0x7f + 1b906: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b82a: 7148 strb r0, [r1, #5] + 1b90a: 7148 strb r0, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b82c: 2100 movs r1, #0 + 1b90c: 2100 movs r1, #0 setData1(value & 0xFF); - 1b82e: 70e3 strb r3, [r4, #3] + 1b90e: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b830: 7121 strb r1, [r4, #4] + 1b910: 7121 strb r1, [r4, #4] uint16_t sysLength = size(); - 1b832: f8b4 3003 ldrh.w r3, [r4, #3] + 1b912: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x2a> + 1b916: 2bfd cmp r3, #253 ; 0xfd + 1b918: f63f af51 bhi.w 1b7be (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x2a> sysex[sysLength++] = value; - 1b83c: 18e1 adds r1, r4, r3 - 1b83e: 3301 adds r3, #1 - 1b840: 714a strb r2, [r1, #5] + 1b91c: 18e1 adds r1, r4, r3 + 1b91e: 3301 adds r3, #1 + 1b920: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b842: 70e3 strb r3, [r4, #3] + 1b922: 70e3 strb r3, [r4, #3] return true; - 1b844: e74b b.n 1b6de (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x2a> + 1b924: e74b b.n 1b7be (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x2a> sysex[sysLength++] = value; - 1b846: 18e1 adds r1, r4, r3 - 1b848: 2206 movs r2, #6 - 1b84a: 3301 adds r3, #1 - 1b84c: 714a strb r2, [r1, #5] + 1b926: 18e1 adds r1, r4, r3 + 1b928: 2206 movs r2, #6 + 1b92a: 3301 adds r3, #1 + 1b92c: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b84e: 2100 movs r1, #0 + 1b92e: 2100 movs r1, #0 setData1(value & 0xFF); - 1b850: 70e3 strb r3, [r4, #3] + 1b930: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b852: 7121 strb r1, [r4, #4] + 1b932: 7121 strb r1, [r4, #4] uint16_t sysLength = size(); - 1b854: f8b4 3003 ldrh.w r3, [r4, #3] + 1b934: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x8c> + 1b938: 2bfd cmp r3, #253 ; 0xfd + 1b93a: f63f af71 bhi.w 1b820 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x8c> sysex[sysLength++] = value; - 1b85e: 18e1 adds r1, r4, r3 - 1b860: 3301 adds r3, #1 - 1b862: 714a strb r2, [r1, #5] + 1b93e: 18e1 adds r1, r4, r3 + 1b940: 3301 adds r3, #1 + 1b942: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b864: 70e3 strb r3, [r4, #3] + 1b944: 70e3 strb r3, [r4, #3] return true; - 1b866: f8b4 3003 ldrh.w r3, [r4, #3] - 1b86a: e769 b.n 1b740 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x8c> + 1b946: f8b4 3003 ldrh.w r3, [r4, #3] + 1b94a: e769 b.n 1b820 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x8c> -0001b86c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]>: +0001b94c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]>: void BMCEditor::deviceResponseData(bmcStoreDevice& item, - 1b86c: b530 push {r4, r5, lr} - 1b86e: b087 sub sp, #28 - 1b870: 460c mov r4, r1 + 1b94c: b530 push {r4, r5, lr} + 1b94e: b087 sub sp, #28 + 1b950: 460c mov r4, r1 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1b872: b212 sxth r2, r2 - 1b874: 4619 mov r1, r3 + 1b952: b212 sxth r2, r2 + 1b954: 4619 mov r1, r3 void BMCEditor::deviceResponseData(bmcStoreDevice& item, - 1b876: 4605 mov r5, r0 + 1b956: 4605 mov r5, r0 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1b878: a801 add r0, sp, #4 - 1b87a: f7ff fa2b bl 1acd4 - 1b87e: f8b4 3003 ldrh.w r3, [r4, #3] + 1b958: a801 add r0, sp, #4 + 1b95a: f7ff fa2b bl 1adb4 + 1b95e: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx14Bits(ui.pins[0]); - 1b882: f9bd 2004 ldrsh.w r2, [sp, #4] + 1b962: f9bd 2004 ldrsh.w r2, [sp, #4] if(sysLength(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xae> + 1b966: 2bfd cmp r3, #253 ; 0xfd + 1b968: d947 bls.n 1b9fa (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xae> buff.appendToSysEx14Bits(ui.pins[1]); - 1b88a: f8bd 1006 ldrh.w r1, [sp, #6] - 1b88e: 4620 mov r0, r4 - 1b890: f7ff fc86 bl 1b1a0 + 1b96a: f8bd 1006 ldrh.w r1, [sp, #6] + 1b96e: 4620 mov r0, r4 + 1b970: f7ff fc86 bl 1b280 buff.appendToSysEx14Bits(ui.pins[2]); - 1b894: f8bd 1008 ldrh.w r1, [sp, #8] - 1b898: 4620 mov r0, r4 - 1b89a: f7ff fc81 bl 1b1a0 + 1b974: f8bd 1008 ldrh.w r1, [sp, #8] + 1b978: 4620 mov r0, r4 + 1b97a: f7ff fc81 bl 1b280 buff.appendToSysEx16Bits(ui.x); - 1b89e: f8bd 100a ldrh.w r1, [sp, #10] - 1b8a2: 4620 mov r0, r4 - 1b8a4: f7ff fc96 bl 1b1d4 + 1b97e: f8bd 100a ldrh.w r1, [sp, #10] + 1b982: 4620 mov r0, r4 + 1b984: f7ff fc96 bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1b8a8: f8bd 100c ldrh.w r1, [sp, #12] - 1b8ac: 4620 mov r0, r4 - 1b8ae: f7ff fc91 bl 1b1d4 - 1b8b2: f8b4 3003 ldrh.w r3, [r4, #3] + 1b988: f8bd 100c ldrh.w r1, [sp, #12] + 1b98c: 4620 mov r0, r4 + 1b98e: f7ff fc91 bl 1b2b4 + 1b992: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx7Bits(ui.style); - 1b8b6: f89d 200e ldrb.w r2, [sp, #14] - 1b8ba: 2bfd cmp r3, #253 ; 0xfd - 1b8bc: d952 bls.n 1b964 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xf8> + 1b996: f89d 200e ldrb.w r2, [sp, #14] + 1b99a: 2bfd cmp r3, #253 ; 0xfd + 1b99c: d952 bls.n 1ba44 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xf8> buff.appendToSysEx14Bits(item.name);// name - 1b8be: 7829 ldrb r1, [r5, #0] - 1b8c0: 4620 mov r0, r4 - 1b8c2: f7ff fc6d bl 1b1a0 + 1b99e: 7829 ldrb r1, [r5, #0] + 1b9a0: 4620 mov r0, r4 + 1b9a2: f7ff fc6d bl 1b280 uint16_t sysLength = size(); - 1b8c6: f8b4 3003 ldrh.w r3, [r4, #3] + 1b9a6: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd4> - 1b8ce: 4628 mov r0, r5 + 1b9aa: 2bfd cmp r3, #253 ; 0xfd + 1b9ac: d938 bls.n 1ba20 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xd4> + 1b9ae: 4628 mov r0, r5 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b8d0: f04f 0e00 mov.w lr, #0 - 1b8d4: 1da9 adds r1, r5, #6 - 1b8d6: e003 b.n 1b8e0 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x74> + 1b9b0: f04f 0e00 mov.w lr, #0 + 1b9b4: 1da9 adds r1, r5, #6 + 1b9b6: e003 b.n 1b9c0 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x74> for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xaa> - 1b8dc: f8b4 3003 ldrh.w r3, [r4, #3] + 1b9b8: 4288 cmp r0, r1 + 1b9ba: d01c beq.n 1b9f6 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0xaa> + 1b9bc: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x6c> + 1b9c2: f810 2f01 ldrb.w r2, [r0, #1]! + 1b9c6: d8f7 bhi.n 1b9b8 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x6c> sysex[sysLength++] = value; - 1b8e8: 18e5 adds r5, r4, r3 + 1b9c8: 18e5 adds r5, r4, r3 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b8ea: ea4f 1cd2 mov.w ip, r2, lsr #7 + 1b9ca: ea4f 1cd2 mov.w ip, r2, lsr #7 sysex[sysLength++] = value; - 1b8ee: 3301 adds r3, #1 + 1b9ce: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b8f0: f002 027f and.w r2, r2, #127 ; 0x7f + 1b9d0: f002 027f and.w r2, r2, #127 ; 0x7f appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b8f4: f885 c005 strb.w ip, [r5, #5] + 1b9d4: f885 c005 strb.w ip, [r5, #5] setData1(value & 0xFF); - 1b8f8: 70e3 strb r3, [r4, #3] + 1b9d8: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b8fa: f884 e004 strb.w lr, [r4, #4] + 1b9da: f884 e004 strb.w lr, [r4, #4] uint16_t sysLength = size(); - 1b8fe: f8b4 3003 ldrh.w r3, [r4, #3] + 1b9de: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x6c> + 1b9ec: d8e4 bhi.n 1b9b8 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x6c> for(uint8_t i=0;i(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x70> + 1b9f2: 70e3 strb r3, [r4, #3] + 1b9f4: d1e2 bne.n 1b9bc (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x70> } - 1b916: b007 add sp, #28 - 1b918: bd30 pop {r4, r5, pc} + 1b9f6: b007 add sp, #28 + 1b9f8: bd30 pop {r4, r5, pc} sysex[sysLength++] = value; - 1b91a: 18e1 adds r1, r4, r3 + 1b9fa: 18e1 adds r1, r4, r3 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1b91c: f3c2 10c6 ubfx r0, r2, #7, #7 + 1b9fc: f3c2 10c6 ubfx r0, r2, #7, #7 sysex[sysLength++] = value; - 1b920: 3301 adds r3, #1 + 1ba00: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b922: f002 027f and.w r2, r2, #127 ; 0x7f + 1ba02: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b926: 7148 strb r0, [r1, #5] + 1ba06: 7148 strb r0, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b928: 2100 movs r1, #0 + 1ba08: 2100 movs r1, #0 setData1(value & 0xFF); - 1b92a: 70e3 strb r3, [r4, #3] + 1ba0a: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b92c: 7121 strb r1, [r4, #4] + 1ba0c: 7121 strb r1, [r4, #4] uint16_t sysLength = size(); - 1b92e: f8b4 3003 ldrh.w r3, [r4, #3] + 1ba0e: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x1e> + 1ba12: 2bfd cmp r3, #253 ; 0xfd + 1ba14: d8a9 bhi.n 1b96a (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x1e> sysex[sysLength++] = value; - 1b936: 18e1 adds r1, r4, r3 - 1b938: 3301 adds r3, #1 - 1b93a: 714a strb r2, [r1, #5] + 1ba16: 18e1 adds r1, r4, r3 + 1ba18: 3301 adds r3, #1 + 1ba1a: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b93c: 70e3 strb r3, [r4, #3] + 1ba1c: 70e3 strb r3, [r4, #3] return true; - 1b93e: e7a4 b.n 1b88a (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x1e> + 1ba1e: e7a4 b.n 1b96a (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x1e> sysex[sysLength++] = value; - 1b940: 18e1 adds r1, r4, r3 - 1b942: 2200 movs r2, #0 - 1b944: 3301 adds r3, #1 - 1b946: 714a strb r2, [r1, #5] + 1ba20: 18e1 adds r1, r4, r3 + 1ba22: 2200 movs r2, #0 + 1ba24: 3301 adds r3, #1 + 1ba26: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b948: 7122 strb r2, [r4, #4] + 1ba28: 7122 strb r2, [r4, #4] setData1(value & 0xFF); - 1b94a: 70e3 strb r3, [r4, #3] + 1ba2a: 70e3 strb r3, [r4, #3] uint16_t sysLength = size(); - 1b94c: f8b4 3003 ldrh.w r3, [r4, #3] + 1ba2c: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x62> + 1ba30: 2bfd cmp r3, #253 ; 0xfd + 1ba32: d8bc bhi.n 1b9ae (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x62> sysex[sysLength++] = value; - 1b954: 18e2 adds r2, r4, r3 - 1b956: 2106 movs r1, #6 - 1b958: 3301 adds r3, #1 - 1b95a: 7151 strb r1, [r2, #5] + 1ba34: 18e2 adds r2, r4, r3 + 1ba36: 2106 movs r1, #6 + 1ba38: 3301 adds r3, #1 + 1ba3a: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 1b95c: 70e3 strb r3, [r4, #3] + 1ba3c: 70e3 strb r3, [r4, #3] return true; - 1b95e: f8b4 3003 ldrh.w r3, [r4, #3] - 1b962: e7b4 b.n 1b8ce (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x62> + 1ba3e: f8b4 3003 ldrh.w r3, [r4, #3] + 1ba42: e7b4 b.n 1b9ae (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x62> sysex[sysLength++] = value; - 1b964: 18e1 adds r1, r4, r3 + 1ba44: 18e1 adds r1, r4, r3 appendSysExByte(value & 0x7F); - 1b966: f002 027f and.w r2, r2, #127 ; 0x7f + 1ba46: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b96a: 3301 adds r3, #1 - 1b96c: 714a strb r2, [r1, #5] + 1ba4a: 3301 adds r3, #1 + 1ba4c: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b96e: 2100 movs r1, #0 + 1ba4e: 2100 movs r1, #0 setData1(value & 0xFF); - 1b970: 70e3 strb r3, [r4, #3] + 1ba50: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1b972: 7121 strb r1, [r4, #4] + 1ba52: 7121 strb r1, [r4, #4] appendSysExByte(value & 0x7F); - 1b974: f8b4 3003 ldrh.w r3, [r4, #3] - 1b978: f89d 200f ldrb.w r2, [sp, #15] + 1ba54: f8b4 3003 ldrh.w r3, [r4, #3] + 1ba58: f89d 200f ldrb.w r2, [sp, #15] if(sysLength(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1ba62: d89c bhi.n 1b99e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b984: 18e1 adds r1, r4, r3 - 1b986: 3301 adds r3, #1 - 1b988: 714a strb r2, [r1, #5] + 1ba64: 18e1 adds r1, r4, r3 + 1ba66: 3301 adds r3, #1 + 1ba68: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b98a: 70e3 strb r3, [r4, #3] + 1ba6a: 70e3 strb r3, [r4, #3] appendSysExByte(value & 0x7F); - 1b98c: f8b4 3003 ldrh.w r3, [r4, #3] - 1b990: f89d 2010 ldrb.w r2, [sp, #16] + 1ba6c: f8b4 3003 ldrh.w r3, [r4, #3] + 1ba70: f89d 2010 ldrb.w r2, [sp, #16] if(sysLength(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1ba7a: d890 bhi.n 1b99e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b99c: 18e1 adds r1, r4, r3 - 1b99e: 3301 adds r3, #1 - 1b9a0: 714a strb r2, [r1, #5] + 1ba7c: 18e1 adds r1, r4, r3 + 1ba7e: 3301 adds r3, #1 + 1ba80: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b9a2: 70e3 strb r3, [r4, #3] + 1ba82: 70e3 strb r3, [r4, #3] return true; - 1b9a4: f8b4 3003 ldrh.w r3, [r4, #3] + 1ba84: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx14Bits(ui.mergeIndex); - 1b9a8: f8bd 2012 ldrh.w r2, [sp, #18] + 1ba88: f8bd 2012 ldrh.w r2, [sp, #18] if(sysLength(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1ba92: d884 bhi.n 1b99e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b9b4: 18e1 adds r1, r4, r3 - 1b9b6: 3301 adds r3, #1 + 1ba94: 18e1 adds r1, r4, r3 + 1ba96: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1b9b8: f002 027f and.w r2, r2, #127 ; 0x7f + 1ba98: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1b9bc: 7148 strb r0, [r1, #5] + 1ba9c: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1b9be: 70e3 strb r3, [r4, #3] + 1ba9e: 70e3 strb r3, [r4, #3] uint16_t sysLength = size(); - 1b9c0: f8b4 3003 ldrh.w r3, [r4, #3] + 1baa0: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1baa4: 2bfd cmp r3, #253 ; 0xfd + 1baa6: f63f af7a bhi.w 1b99e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b9ca: 18e1 adds r1, r4, r3 - 1b9cc: 3301 adds r3, #1 - 1b9ce: 714a strb r2, [r1, #5] + 1baaa: 18e1 adds r1, r4, r3 + 1baac: 3301 adds r3, #1 + 1baae: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b9d0: 70e3 strb r3, [r4, #3] + 1bab0: 70e3 strb r3, [r4, #3] appendSysExByte(value & 0x7F); - 1b9d2: f8b4 3003 ldrh.w r3, [r4, #3] + 1bab2: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx7Bits(ui.other1); - 1b9d6: f8bd 2014 ldrh.w r2, [sp, #20] + 1bab6: f8bd 2014 ldrh.w r2, [sp, #20] if(sysLength(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1bac0: f63f af6d bhi.w 1b99e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> sysex[sysLength++] = value; - 1b9e4: 18e1 adds r1, r4, r3 - 1b9e6: 3301 adds r3, #1 - 1b9e8: 714a strb r2, [r1, #5] + 1bac4: 18e1 adds r1, r4, r3 + 1bac6: 3301 adds r3, #1 + 1bac8: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1b9ea: 70e3 strb r3, [r4, #3] + 1baca: 70e3 strb r3, [r4, #3] return true; - 1b9ec: e767 b.n 1b8be (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> - 1b9ee: bf00 nop + 1bacc: e767 b.n 1b99e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]+0x52> + 1bace: bf00 nop -0001b9f0 : +0001bad0 : uint16_t sysLength = size(); - 1b9f0: f8b0 3003 ldrh.w r3, [r0, #3] + 1bad0: f8b0 3003 ldrh.w r3, [r0, #3] if(sysLength + 1bad4: 2bfd cmp r3, #253 ; 0xfd + 1bad6: d900 bls.n 1bada } - 1b9f8: 4770 bx lr + 1bad8: 4770 bx lr sysex[sysLength++] = value; - 1b9fa: eb00 0c03 add.w ip, r0, r3 + 1bada: eb00 0c03 add.w ip, r0, r3 appendToSysEx7Bits(BMC_MIDI_GET_WORD(4,value)); - 1b9fe: 0f0a lsrs r2, r1, #28 + 1bade: 0f0a lsrs r2, r1, #28 sysex[sysLength++] = value; - 1ba00: 3301 adds r3, #1 + 1bae0: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(4,value)); - 1ba02: f88c 2005 strb.w r2, [ip, #5] + 1bae2: f88c 2005 strb.w r2, [ip, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1ba06: 2200 movs r2, #0 + 1bae6: 2200 movs r2, #0 setData1(value & 0xFF); - 1ba08: 70c3 strb r3, [r0, #3] + 1bae8: 70c3 strb r3, [r0, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(3,value)); - 1ba0a: f3c1 5c46 ubfx ip, r1, #21, #7 + 1baea: f3c1 5c46 ubfx ip, r1, #21, #7 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1ba0e: 7102 strb r2, [r0, #4] + 1baee: 7102 strb r2, [r0, #4] uint16_t sysLength = size(); - 1ba10: f8b0 3003 ldrh.w r3, [r0, #3] + 1baf0: f8b0 3003 ldrh.w r3, [r0, #3] if(sysLength + 1baf4: 2bfd cmp r3, #253 ; 0xfd + 1baf6: d8ef bhi.n 1bad8 sysex[sysLength++] = value; - 1ba18: 18c2 adds r2, r0, r3 - 1ba1a: 3301 adds r3, #1 - 1ba1c: f882 c005 strb.w ip, [r2, #5] + 1baf8: 18c2 adds r2, r0, r3 + 1bafa: 3301 adds r3, #1 + 1bafc: f882 c005 strb.w ip, [r2, #5] appendToSysEx7Bits(BMC_MIDI_GET_WORD(2,value)); - 1ba20: f3c1 3c86 ubfx ip, r1, #14, #7 + 1bb00: f3c1 3c86 ubfx ip, r1, #14, #7 setData1(value & 0xFF); - 1ba24: 70c3 strb r3, [r0, #3] + 1bb04: 70c3 strb r3, [r0, #3] uint16_t sysLength = size(); - 1ba26: f8b0 3003 ldrh.w r3, [r0, #3] + 1bb06: f8b0 3003 ldrh.w r3, [r0, #3] if(sysLength + 1bb0a: 2bfd cmp r3, #253 ; 0xfd + 1bb0c: d8e4 bhi.n 1bad8 sysex[sysLength++] = value; - 1ba2e: 18c2 adds r2, r0, r3 - 1ba30: 3301 adds r3, #1 - 1ba32: f882 c005 strb.w ip, [r2, #5] + 1bb0e: 18c2 adds r2, r0, r3 + 1bb10: 3301 adds r3, #1 + 1bb12: f882 c005 strb.w ip, [r2, #5] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 1ba36: f3c1 1cc6 ubfx ip, r1, #7, #7 + 1bb16: f3c1 1cc6 ubfx ip, r1, #7, #7 setData1(value & 0xFF); - 1ba3a: 70c3 strb r3, [r0, #3] + 1bb1a: 70c3 strb r3, [r0, #3] uint16_t sysLength = size(); - 1ba3c: f8b0 3003 ldrh.w r3, [r0, #3] + 1bb1c: f8b0 3003 ldrh.w r3, [r0, #3] if(sysLength + 1bb20: 2bfd cmp r3, #253 ; 0xfd + 1bb22: d8d9 bhi.n 1bad8 sysex[sysLength++] = value; - 1ba44: 18c2 adds r2, r0, r3 - 1ba46: 3301 adds r3, #1 + 1bb24: 18c2 adds r2, r0, r3 + 1bb26: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1ba48: f001 017f and.w r1, r1, #127 ; 0x7f + 1bb28: f001 017f and.w r1, r1, #127 ; 0x7f sysex[sysLength++] = value; - 1ba4c: f882 c005 strb.w ip, [r2, #5] + 1bb2c: f882 c005 strb.w ip, [r2, #5] setData1(value & 0xFF); - 1ba50: 70c3 strb r3, [r0, #3] + 1bb30: 70c3 strb r3, [r0, #3] uint16_t sysLength = size(); - 1ba52: f8b0 3003 ldrh.w r3, [r0, #3] + 1bb32: f8b0 3003 ldrh.w r3, [r0, #3] if(sysLength + 1bb36: 2bfd cmp r3, #253 ; 0xfd + 1bb38: d8ce bhi.n 1bad8 sysex[sysLength++] = value; - 1ba5a: 18c2 adds r2, r0, r3 - 1ba5c: 3301 adds r3, #1 - 1ba5e: 7151 strb r1, [r2, #5] + 1bb3a: 18c2 adds r2, r0, r3 + 1bb3c: 3301 adds r3, #1 + 1bb3e: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 1ba60: 70c3 strb r3, [r0, #3] + 1bb40: 70c3 strb r3, [r0, #3] } - 1ba62: 4770 bx lr + 1bb42: 4770 bx lr -0001ba64 : +0001bb44 : void BMCEditor::globalBuildInfoMessage(){// BMC_GLOBALF_BUILD_INFO - 1ba64: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1ba68: f5ad 7d0b sub.w sp, sp, #556 ; 0x22c - 1ba6c: 4606 mov r6, r0 - 1ba6e: 6bc3 ldr r3, [r0, #60] ; 0x3c - 1ba70: af40 add r7, sp, #256 ; 0x100 + 1bb44: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1bb48: f5ad 7d0b sub.w sp, sp, #556 ; 0x22c + 1bb4c: 4606 mov r6, r0 + 1bb4e: 6bc3 ldr r3, [r0, #60] ; 0x3c + 1bb50: af40 add r7, sp, #256 ; 0x100 if((t_offset+1) < size()){ - 1ba72: f8b3 2003 ldrh.w r2, [r3, #3] - 1ba76: 2a07 cmp r2, #7 - 1ba78: f200 80f8 bhi.w 1bc6c + 1bb52: f8b3 2003 ldrh.w r2, [r3, #3] + 1bb56: 2a07 cmp r2, #7 + 1bb58: f200 80f8 bhi.w 1bd4c struct BMCMidiMessage { - 1ba7c: 2000 movs r0, #0 - 1ba7e: f107 0424 add.w r4, r7, #36 ; 0x24 + 1bb5c: 2000 movs r0, #0 + 1bb5e: f107 0424 add.w r4, r7, #36 ; 0x24 buff.prepareEditorMessage( - 1ba82: f896 202d ldrb.w r2, [r6, #45] ; 0x2d - 1ba86: 237d movs r3, #125 ; 0x7d - 1ba88: 6020 str r0, [r4, #0] - 1ba8a: 7120 strb r0, [r4, #4] - 1ba8c: f896 102c ldrb.w r1, [r6, #44] ; 0x2c - 1ba90: e9cd 0000 strd r0, r0, [sp] - 1ba94: 4620 mov r0, r4 - 1ba96: f7ff fa15 bl 1aec4 + 1bb62: f896 202d ldrb.w r2, [r6, #45] ; 0x2d + 1bb66: 237d movs r3, #125 ; 0x7d + 1bb68: 6020 str r0, [r4, #0] + 1bb6a: 7120 strb r0, [r4, #4] + 1bb6c: f896 102c ldrb.w r1, [r6, #44] ; 0x2c + 1bb70: e9cd 0000 strd r0, r0, [sp] + 1bb74: 4620 mov r0, r4 + 1bb76: f7ff fa15 bl 1afa4 uint16_t sysLength = size(); - 1ba9a: f8b4 3003 ldrh.w r3, [r4, #3] + 1bb7a: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1bb7e: 2bfd cmp r3, #253 ; 0xfd + 1bb80: f240 8117 bls.w 1bdb2 buff.appendToSysEx32Bits(BMC_SEM_VERSION); - 1baa4: 49be ldr r1, [pc, #760] ; (1bda0 ) - 1baa6: 4620 mov r0, r4 - 1baa8: f7ff ffa2 bl 1b9f0 + 1bb84: 49be ldr r1, [pc, #760] ; (1be80 ) + 1bb86: 4620 mov r0, r4 + 1bb88: f7ff ffa2 bl 1bad0 buff.appendToSysEx16Bits(store.version); - 1baac: 6833 ldr r3, [r6, #0] - 1baae: 4620 mov r0, r4 - 1bab0: 8859 ldrh r1, [r3, #2] - 1bab2: f7ff fb8f bl 1b1d4 + 1bb8c: 6833 ldr r3, [r6, #0] + 1bb8e: 4620 mov r0, r4 + 1bb90: 8859 ldrh r1, [r3, #2] + 1bb92: f7ff fb8f bl 1b2b4 buff.appendToSysEx32Bits(sizeof(bmcStore)); - 1bab6: f241 71fc movw r1, #6140 ; 0x17fc - 1baba: 4620 mov r0, r4 - 1babc: f7ff ff98 bl 1b9f0 + 1bb96: f241 71fc movw r1, #6140 ; 0x17fc + 1bb9a: 4620 mov r0, r4 + 1bb9c: f7ff ff98 bl 1bad0 buff.appendToSysEx32Bits(buildData); - 1bac0: 49b8 ldr r1, [pc, #736] ; (1bda4 ) - 1bac2: 4620 mov r0, r4 - 1bac4: f7ff ff94 bl 1b9f0 + 1bba0: 49b8 ldr r1, [pc, #736] ; (1be84 ) + 1bba2: 4620 mov r0, r4 + 1bba4: f7ff ff94 bl 1bad0 buff.appendToSysEx14Bits(BMC_MAX_EVENTS_LIBRARY); - 1bac8: 21c8 movs r1, #200 ; 0xc8 - 1baca: 4620 mov r0, r4 - 1bacc: f7ff fb68 bl 1b1a0 + 1bba8: 21c8 movs r1, #200 ; 0xc8 + 1bbaa: 4620 mov r0, r4 + 1bbac: f7ff fb68 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_NAMES_LIBRARY); - 1bad0: 2180 movs r1, #128 ; 0x80 - 1bad2: 4620 mov r0, r4 - 1bad4: f7ff fb64 bl 1b1a0 + 1bbb0: 2180 movs r1, #128 ; 0x80 + 1bbb2: 4620 mov r0, r4 + 1bbb4: f7ff fb64 bl 1b280 uint16_t sysLength = size(); - 1bad8: f8b4 3003 ldrh.w r3, [r4, #3] + 1bbb8: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1bbbc: 2bfd cmp r3, #253 ; 0xfd + 1bbbe: d806 bhi.n 1bbce sysex[sysLength++] = value; - 1bae0: 18e1 adds r1, r4, r3 - 1bae2: 2011 movs r0, #17 - 1bae4: 3301 adds r3, #1 + 1bbc0: 18e1 adds r1, r4, r3 + 1bbc2: 2011 movs r0, #17 + 1bbc4: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1bae6: 2200 movs r2, #0 + 1bbc6: 2200 movs r2, #0 sysex[sysLength++] = value; - 1bae8: 7148 strb r0, [r1, #5] + 1bbc8: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1baea: 70e3 strb r3, [r4, #3] + 1bbca: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1baec: 7122 strb r2, [r4, #4] + 1bbcc: 7122 strb r2, [r4, #4] buff.appendToSysEx14Bits(BMC_MAX_PRESETS); - 1baee: 2140 movs r1, #64 ; 0x40 - 1baf0: 4620 mov r0, r4 - 1baf2: f7ff fb55 bl 1b1a0 + 1bbce: 2140 movs r1, #64 ; 0x40 + 1bbd0: 4620 mov r0, r4 + 1bbd2: f7ff fb55 bl 1b280 uint16_t sysLength = size(); - 1baf6: f8b4 3003 ldrh.w r3, [r4, #3] + 1bbd6: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1bbda: 2bfd cmp r3, #253 ; 0xfd + 1bbdc: f240 8156 bls.w 1be8c buff.appendToSysEx14Bits(BMC_MAX_SETLISTS_SONGS_LIBRARY); - 1bb00: 2140 movs r1, #64 ; 0x40 - 1bb02: 4620 mov r0, r4 - 1bb04: f7ff fb4c bl 1b1a0 + 1bbe0: 2140 movs r1, #64 ; 0x40 + 1bbe2: 4620 mov r0, r4 + 1bbe4: f7ff fb4c bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_LAYERS); - 1bb08: 2105 movs r1, #5 - 1bb0a: 4620 mov r0, r4 - 1bb0c: f7ff fb48 bl 1b1a0 + 1bbe8: 2105 movs r1, #5 + 1bbea: 4620 mov r0, r4 + 1bbec: f7ff fb48 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_BUTTON_EVENTS); - 1bb10: 2106 movs r1, #6 - 1bb12: 4620 mov r0, r4 - 1bb14: f7ff fb44 bl 1b1a0 + 1bbf0: 2106 movs r1, #6 + 1bbf2: 4620 mov r0, r4 + 1bbf4: f7ff fb44 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_BUTTONS); - 1bb18: 2106 movs r1, #6 - 1bb1a: 4620 mov r0, r4 - 1bb1c: f7ff fb40 bl 1b1a0 + 1bbf8: 2106 movs r1, #6 + 1bbfa: 4620 mov r0, r4 + 1bbfc: f7ff fb40 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_GLOBAL_BUTTONS); - 1bb20: 2102 movs r1, #2 - 1bb22: 4620 mov r0, r4 - 1bb24: f7ff fb3c bl 1b1a0 + 1bc00: 2102 movs r1, #2 + 1bc02: 4620 mov r0, r4 + 1bc04: f7ff fb3c bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_ENCODERS); - 1bb28: 2100 movs r1, #0 - 1bb2a: 4620 mov r0, r4 - 1bb2c: f7ff fb38 bl 1b1a0 + 1bc08: 2100 movs r1, #0 + 1bc0a: 4620 mov r0, r4 + 1bc0c: f7ff fb38 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_GLOBAL_ENCODERS); - 1bb30: 2100 movs r1, #0 - 1bb32: 4620 mov r0, r4 - 1bb34: f7ff fb34 bl 1b1a0 + 1bc10: 2100 movs r1, #0 + 1bc12: 4620 mov r0, r4 + 1bc14: f7ff fb34 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_POTS); - 1bb38: 2100 movs r1, #0 - 1bb3a: 4620 mov r0, r4 - 1bb3c: f7ff fb30 bl 1b1a0 + 1bc18: 2100 movs r1, #0 + 1bc1a: 4620 mov r0, r4 + 1bc1c: f7ff fb30 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_GLOBAL_POTS); - 1bb40: 2100 movs r1, #0 - 1bb42: 4620 mov r0, r4 - 1bb44: f7ff fb2c bl 1b1a0 + 1bc20: 2100 movs r1, #0 + 1bc22: 4620 mov r0, r4 + 1bc24: f7ff fb2c bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_LEDS); - 1bb48: 2100 movs r1, #0 - 1bb4a: 4620 mov r0, r4 - 1bb4c: f7ff fb28 bl 1b1a0 + 1bc28: 2100 movs r1, #0 + 1bc2a: 4620 mov r0, r4 + 1bc2c: f7ff fb28 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_GLOBAL_LEDS); - 1bb50: 2105 movs r1, #5 - 1bb52: 4620 mov r0, r4 - 1bb54: f7ff fb24 bl 1b1a0 + 1bc30: 2105 movs r1, #5 + 1bc32: 4620 mov r0, r4 + 1bc34: f7ff fb24 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_BI_LEDS); - 1bb58: 2100 movs r1, #0 - 1bb5a: 4620 mov r0, r4 - 1bb5c: f7ff fb20 bl 1b1a0 + 1bc38: 2100 movs r1, #0 + 1bc3a: 4620 mov r0, r4 + 1bc3c: f7ff fb20 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_GLOBAL_BI_LEDS); - 1bb60: 2100 movs r1, #0 - 1bb62: 4620 mov r0, r4 - 1bb64: f7ff fb1c bl 1b1a0 + 1bc40: 2100 movs r1, #0 + 1bc42: 4620 mov r0, r4 + 1bc44: f7ff fb1c bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_TRI_LEDS); - 1bb68: 2100 movs r1, #0 - 1bb6a: 4620 mov r0, r4 - 1bb6c: f7ff fb18 bl 1b1a0 + 1bc48: 2100 movs r1, #0 + 1bc4a: 4620 mov r0, r4 + 1bc4c: f7ff fb18 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_GLOBAL_TRI_LEDS); - 1bb70: 2100 movs r1, #0 - 1bb72: 4620 mov r0, r4 - 1bb74: f7ff fb14 bl 1b1a0 + 1bc50: 2100 movs r1, #0 + 1bc52: 4620 mov r0, r4 + 1bc54: f7ff fb14 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_PIXELS); - 1bb78: 2100 movs r1, #0 - 1bb7a: 4620 mov r0, r4 - 1bb7c: f7ff fb10 bl 1b1a0 + 1bc58: 2100 movs r1, #0 + 1bc5a: 4620 mov r0, r4 + 1bc5c: f7ff fb10 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_GLOBAL_PIXELS); - 1bb80: 2100 movs r1, #0 - 1bb82: 4620 mov r0, r4 - 1bb84: f7ff fb0c bl 1b1a0 + 1bc60: 2100 movs r1, #0 + 1bc62: 4620 mov r0, r4 + 1bc64: f7ff fb0c bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_RGB_PIXELS); - 1bb88: 2106 movs r1, #6 - 1bb8a: 4620 mov r0, r4 - 1bb8c: f7ff fb08 bl 1b1a0 + 1bc68: 2106 movs r1, #6 + 1bc6a: 4620 mov r0, r4 + 1bc6c: f7ff fb08 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_GLOBAL_RGB_PIXELS); - 1bb90: 2100 movs r1, #0 - 1bb92: 4620 mov r0, r4 - 1bb94: f7ff fb04 bl 1b1a0 + 1bc70: 2100 movs r1, #0 + 1bc72: 4620 mov r0, r4 + 1bc74: f7ff fb04 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_NL_RELAYS); - 1bb98: 2100 movs r1, #0 - 1bb9a: 4620 mov r0, r4 - 1bb9c: f7ff fb00 bl 1b1a0 + 1bc78: 2100 movs r1, #0 + 1bc7a: 4620 mov r0, r4 + 1bc7c: f7ff fb00 bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_L_RELAYS); - 1bba0: 2100 movs r1, #0 - 1bba2: 4620 mov r0, r4 - 1bba4: f7ff fafc bl 1b1a0 + 1bc80: 2100 movs r1, #0 + 1bc82: 4620 mov r0, r4 + 1bc84: f7ff fafc bl 1b280 buff.appendToSysEx14Bits(BMC_MAX_AUX_JACKS); - 1bba8: 2101 movs r1, #1 - 1bbaa: 4620 mov r0, r4 - 1bbac: f7ff faf8 bl 1b1a0 + 1bc88: 2101 movs r1, #1 + 1bc8a: 4620 mov r0, r4 + 1bc8c: f7ff faf8 bl 1b280 uint16_t sysLength = size(); - 1bbb0: f8b4 3003 ldrh.w r3, [r4, #3] + 1bc90: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1bc94: 2bfd cmp r3, #253 ; 0xfd + 1bc96: d878 bhi.n 1bd8a sysex[sysLength++] = value; - 1bbb8: 1c58 adds r0, r3, #1 + 1bc98: 1c58 adds r0, r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1bbba: 2200 movs r2, #0 + 1bc9a: 2200 movs r2, #0 sysex[sysLength++] = value; - 1bbbc: 4423 add r3, r4 - 1bbbe: 2106 movs r1, #6 + 1bc9c: 4423 add r3, r4 + 1bc9e: 2106 movs r1, #6 setData1(value & 0xFF); - 1bbc0: 70e0 strb r0, [r4, #3] + 1bca0: 70e0 strb r0, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1bbc2: 7122 strb r2, [r4, #4] - 1bbc4: f8b4 0003 ldrh.w r0, [r4, #3] + 1bca2: 7122 strb r2, [r4, #4] + 1bca4: f8b4 0003 ldrh.w r0, [r4, #3] sysex[sysLength++] = value; - 1bbc8: 7159 strb r1, [r3, #5] + 1bca8: 7159 strb r1, [r3, #5] if(sysLength + 1bcaa: 28fd cmp r0, #253 ; 0xfd + 1bcac: d86d bhi.n 1bd8a sysex[sysLength++] = value; - 1bbce: 1825 adds r5, r4, r0 - 1bbd0: 3001 adds r0, #1 + 1bcae: 1825 adds r5, r4, r0 + 1bcb0: 3001 adds r0, #1 setData1(value & 0xFF); - 1bbd2: 70e0 strb r0, [r4, #3] - 1bbd4: f8b4 3003 ldrh.w r3, [r4, #3] + 1bcb2: 70e0 strb r0, [r4, #3] + 1bcb4: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bbd8: 716a strb r2, [r5, #5] + 1bcb8: 716a strb r2, [r5, #5] if(sysLength + 1bcba: 2bfd cmp r3, #253 ; 0xfd + 1bcbc: d865 bhi.n 1bd8a sysex[sysLength++] = value; - 1bbde: 18e0 adds r0, r4, r3 - 1bbe0: 3301 adds r3, #1 - 1bbe2: 2501 movs r5, #1 + 1bcbe: 18e0 adds r0, r4, r3 + 1bcc0: 3301 adds r3, #1 + 1bcc2: 2501 movs r5, #1 setData1(value & 0xFF); - 1bbe4: 70e3 strb r3, [r4, #3] - 1bbe6: f8b4 3003 ldrh.w r3, [r4, #3] + 1bcc4: 70e3 strb r3, [r4, #3] + 1bcc6: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bbea: 7145 strb r5, [r0, #5] + 1bcca: 7145 strb r5, [r0, #5] if(sysLength + 1bccc: 2bfd cmp r3, #253 ; 0xfd + 1bcce: d85c bhi.n 1bd8a sysex[sysLength++] = value; - 1bbf0: 18e0 adds r0, r4, r3 - 1bbf2: 442b add r3, r5 + 1bcd0: 18e0 adds r0, r4, r3 + 1bcd2: 442b add r3, r5 setData1(value & 0xFF); - 1bbf4: 70e3 strb r3, [r4, #3] - 1bbf6: f8b4 3003 ldrh.w r3, [r4, #3] + 1bcd4: 70e3 strb r3, [r4, #3] + 1bcd6: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bbfa: 7142 strb r2, [r0, #5] + 1bcda: 7142 strb r2, [r0, #5] if(sysLength + 1bcdc: 2bfd cmp r3, #253 ; 0xfd + 1bcde: d854 bhi.n 1bd8a sysex[sysLength++] = value; - 1bc00: 18e0 adds r0, r4, r3 - 1bc02: 442b add r3, r5 + 1bce0: 18e0 adds r0, r4, r3 + 1bce2: 442b add r3, r5 setData1(value & 0xFF); - 1bc04: 70e3 strb r3, [r4, #3] - 1bc06: f8b4 3003 ldrh.w r3, [r4, #3] + 1bce4: 70e3 strb r3, [r4, #3] + 1bce6: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bc0a: 7142 strb r2, [r0, #5] + 1bcea: 7142 strb r2, [r0, #5] if(sysLength + 1bcec: 2bfd cmp r3, #253 ; 0xfd + 1bcee: d84c bhi.n 1bd8a sysex[sysLength++] = value; - 1bc10: 18e0 adds r0, r4, r3 - 1bc12: 442b add r3, r5 + 1bcf0: 18e0 adds r0, r4, r3 + 1bcf2: 442b add r3, r5 setData1(value & 0xFF); - 1bc14: 70e3 strb r3, [r4, #3] - 1bc16: f8b4 3003 ldrh.w r3, [r4, #3] + 1bcf4: 70e3 strb r3, [r4, #3] + 1bcf6: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bc1a: 7142 strb r2, [r0, #5] + 1bcfa: 7142 strb r2, [r0, #5] if(sysLength + 1bcfc: 2bfd cmp r3, #253 ; 0xfd + 1bcfe: d844 bhi.n 1bd8a sysex[sysLength++] = value; - 1bc20: 18e0 adds r0, r4, r3 - 1bc22: 442b add r3, r5 + 1bd00: 18e0 adds r0, r4, r3 + 1bd02: 442b add r3, r5 setData1(value & 0xFF); - 1bc24: 70e3 strb r3, [r4, #3] - 1bc26: f8b4 3003 ldrh.w r3, [r4, #3] + 1bd04: 70e3 strb r3, [r4, #3] + 1bd06: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bc2a: 7141 strb r1, [r0, #5] + 1bd0a: 7141 strb r1, [r0, #5] if(sysLength + 1bd0c: 2bfd cmp r3, #253 ; 0xfd + 1bd0e: d83c bhi.n 1bd8a sysex[sysLength++] = value; - 1bc30: 18e0 adds r0, r4, r3 - 1bc32: 442b add r3, r5 + 1bd10: 18e0 adds r0, r4, r3 + 1bd12: 442b add r3, r5 setData1(value & 0xFF); - 1bc34: 70e3 strb r3, [r4, #3] - 1bc36: f8b4 3003 ldrh.w r3, [r4, #3] + 1bd14: 70e3 strb r3, [r4, #3] + 1bd16: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bc3a: 7141 strb r1, [r0, #5] + 1bd1a: 7141 strb r1, [r0, #5] if(sysLength + 1bd1c: 2bfd cmp r3, #253 ; 0xfd + 1bd1e: d834 bhi.n 1bd8a sysex[sysLength++] = value; - 1bc40: 1958 adds r0, r3, r5 - 1bc42: 18e1 adds r1, r4, r3 + 1bd20: 1958 adds r0, r3, r5 + 1bd22: 18e1 adds r1, r4, r3 setData1(value & 0xFF); - 1bc44: 70e0 strb r0, [r4, #3] - 1bc46: f8b4 3003 ldrh.w r3, [r4, #3] + 1bd24: 70e0 strb r0, [r4, #3] + 1bd26: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bc4a: 714a strb r2, [r1, #5] + 1bd2a: 714a strb r2, [r1, #5] if(sysLength + 1bd2c: 2bfd cmp r3, #253 ; 0xfd + 1bd2e: d82c bhi.n 1bd8a sysex[sysLength++] = value; - 1bc50: 1958 adds r0, r3, r5 - 1bc52: 18e2 adds r2, r4, r3 - 1bc54: 2100 movs r1, #0 + 1bd30: 1958 adds r0, r3, r5 + 1bd32: 18e2 adds r2, r4, r3 + 1bd34: 2100 movs r1, #0 setData1(value & 0xFF); - 1bc56: 70e0 strb r0, [r4, #3] - 1bc58: f8b4 3003 ldrh.w r3, [r4, #3] + 1bd36: 70e0 strb r0, [r4, #3] + 1bd38: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bc5c: 7151 strb r1, [r2, #5] + 1bd3c: 7151 strb r1, [r2, #5] if(sysLength + 1bd3e: 2bfd cmp r3, #253 ; 0xfd + 1bd40: d823 bhi.n 1bd8a sysex[sysLength++] = value; - 1bc62: 18e2 adds r2, r4, r3 - 1bc64: 442b add r3, r5 - 1bc66: 7151 strb r1, [r2, #5] + 1bd42: 18e2 adds r2, r4, r3 + 1bd44: 442b add r3, r5 + 1bd46: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 1bc68: 70e3 strb r3, [r4, #3] + 1bd48: 70e3 strb r3, [r4, #3] return true; - 1bc6a: e01e b.n 1bcaa + 1bd4a: e01e b.n 1bd8a return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1bc6c: 7ada ldrb r2, [r3, #11] + 1bd4c: 7ada ldrb r2, [r3, #11] struct BMCMidiMessage { - 1bc6e: f107 0424 add.w r4, r7, #36 ; 0x24 + 1bd4e: f107 0424 add.w r4, r7, #36 ; 0x24 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1bc72: 7b1b ldrb r3, [r3, #12] + 1bd52: 7b1b ldrb r3, [r3, #12] struct BMCMidiMessage { - 1bc74: 2500 movs r5, #0 + 1bd54: 2500 movs r5, #0 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1bc76: 01d2 lsls r2, r2, #7 + 1bd56: 01d2 lsls r2, r2, #7 buff.prepareEditorMessage( - 1bc78: f890 102c ldrb.w r1, [r0, #44] ; 0x2c - 1bc7c: f003 037f and.w r3, r3, #127 ; 0x7f + 1bd58: f890 102c ldrb.w r1, [r0, #44] ; 0x2c + 1bd5c: f003 037f and.w r3, r3, #127 ; 0x7f struct BMCMidiMessage { - 1bc80: 6025 str r5, [r4, #0] + 1bd60: 6025 str r5, [r4, #0] return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1bc82: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 1bd62: f402 527e and.w r2, r2, #16256 ; 0x3f80 struct BMCMidiMessage { - 1bc86: 7125 strb r5, [r4, #4] + 1bd66: 7125 strb r5, [r4, #4] return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1bc88: ea43 0902 orr.w r9, r3, r2 - 1bc8c: f890 202d ldrb.w r2, [r0, #45] ; 0x2d - 1bc90: 237d movs r3, #125 ; 0x7d - 1bc92: 4620 mov r0, r4 - 1bc94: e9cd 5900 strd r5, r9, [sp] - 1bc98: f7ff f914 bl 1aec4 + 1bd68: ea43 0902 orr.w r9, r3, r2 + 1bd6c: f890 202d ldrb.w r2, [r0, #45] ; 0x2d + 1bd70: 237d movs r3, #125 ; 0x7d + 1bd72: 4620 mov r0, r4 + 1bd74: e9cd 5900 strd r5, r9, [sp] + 1bd78: f7ff f914 bl 1afa4 if(itemId == BMC_GLOBALF_BUILD_INFO_FLAGS){ - 1bc9c: f1b9 0f00 cmp.w r9, #0 - 1bca0: f43f aefb beq.w 1ba9a + 1bd7c: f1b9 0f00 cmp.w r9, #0 + 1bd80: f43f aefb beq.w 1bb7a } else if(itemId==BMC_GLOBALF_BUILD_INFO_DEVICE_NAME){ - 1bca4: f1b9 0f01 cmp.w r9, #1 - 1bca8: d01b beq.n 1bce2 + 1bd84: f1b9 0f01 cmp.w r9, #1 + 1bd88: d01b beq.n 1bdc2 sendToEditor(buff); - 1bcaa: 2301 movs r3, #1 - 1bcac: 2000 movs r0, #0 - 1bcae: f107 0130 add.w r1, r7, #48 ; 0x30 - 1bcb2: 22f7 movs r2, #247 ; 0xf7 - 1bcb4: 903f str r0, [sp, #252] ; 0xfc - 1bcb6: 4668 mov r0, sp - 1bcb8: 933e str r3, [sp, #248] ; 0xf8 - 1bcba: f00e fd25 bl 2a708 - 1bcbe: 4630 mov r0, r6 - 1bcc0: e894 000e ldmia.w r4, {r1, r2, r3} - 1bcc4: f7fe fe02 bl 1a8cc -} - 1bcc8: f507 7796 add.w r7, r7, #300 ; 0x12c - 1bccc: 46bd mov sp, r7 - 1bcce: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1bd8a: 2301 movs r3, #1 + 1bd8c: 2000 movs r0, #0 + 1bd8e: f107 0130 add.w r1, r7, #48 ; 0x30 + 1bd92: 22f7 movs r2, #247 ; 0xf7 + 1bd94: 903f str r0, [sp, #252] ; 0xfc + 1bd96: 4668 mov r0, sp + 1bd98: 933e str r3, [sp, #248] ; 0xf8 + 1bd9a: f00e fd29 bl 2a7f0 + 1bd9e: 4630 mov r0, r6 + 1bda0: e894 000e ldmia.w r4, {r1, r2, r3} + 1bda4: f7fe fe02 bl 1a9ac +} + 1bda8: f507 7796 add.w r7, r7, #300 ; 0x12c + 1bdac: 46bd mov sp, r7 + 1bdae: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} sysex[sysLength++] = value; - 1bcd2: 18e1 adds r1, r4, r3 - 1bcd4: 2028 movs r0, #40 ; 0x28 - 1bcd6: 3301 adds r3, #1 + 1bdb2: 18e1 adds r1, r4, r3 + 1bdb4: 2028 movs r0, #40 ; 0x28 + 1bdb6: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1bcd8: 2200 movs r2, #0 + 1bdb8: 2200 movs r2, #0 sysex[sysLength++] = value; - 1bcda: 7148 strb r0, [r1, #5] + 1bdba: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1bcdc: 70e3 strb r3, [r4, #3] + 1bdbc: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1bcde: 7122 strb r2, [r4, #4] + 1bdbe: 7122 strb r2, [r4, #4] return true; - 1bce0: e6e0 b.n 1baa4 + 1bdc0: e6e0 b.n 1bb84 String name = BMC_DEVICE_NAME; - 1bce2: 4931 ldr r1, [pc, #196] ; (1bda8 ) - 1bce4: 1d38 adds r0, r7, #4 - 1bce6: f00e fa03 bl 2a0f0 + 1bdc2: 4931 ldr r1, [pc, #196] ; (1be88 ) + 1bdc4: 1d38 adds r0, r7, #4 + 1bdc6: f00e fa07 bl 2a1d8 buff.appendToSysEx7Bits(name.length()+1); - 1bcea: 68f9 ldr r1, [r7, #12] + 1bdca: 68f9 ldr r1, [r7, #12] appendSysExByte(value & 0x7F); - 1bcec: 464a mov r2, r9 - 1bcee: 4620 mov r0, r4 - 1bcf0: 3101 adds r1, #1 + 1bdcc: 464a mov r2, r9 + 1bdce: 4620 mov r0, r4 + 1bdd0: 3101 adds r1, #1 } - 1bcf2: 46e9 mov r9, sp + 1bdd2: 46e9 mov r9, sp appendSysExByte(value & 0x7F); - 1bcf4: f001 017f and.w r1, r1, #127 ; 0x7f - 1bcf8: f7fe ffb6 bl 1ac68 + 1bdd4: f001 017f and.w r1, r1, #127 ; 0x7f + 1bdd8: f7fe ffb6 bl 1ad48 buff.appendCharArrayToSysEx(name); - 1bcfc: 1d39 adds r1, r7, #4 - 1bcfe: f107 0014 add.w r0, r7, #20 - 1bd02: f00e f99b bl 2a03c + 1bddc: 1d39 adds r1, r7, #4 + 1bdde: f107 0014 add.w r0, r7, #20 + 1bde2: f00e f99f bl 2a124 uint8_t len = str.length()+1; - 1bd06: f897 801c ldrb.w r8, [r7, #28] + 1bde6: f897 801c ldrb.w r8, [r7, #28] void setCharAt(unsigned int index, char c); char operator [] (unsigned int index) const; char& operator [] (unsigned int index); void getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index=0) const; void toCharArray(char *buf, unsigned int bufsize, unsigned int index=0) const {getBytes((unsigned char *)buf, bufsize, index);} - 1bd0a: 462b mov r3, r5 - 1bd0c: f107 0014 add.w r0, r7, #20 - 1bd10: f108 0b01 add.w fp, r8, #1 - 1bd14: fa5f fb8b uxtb.w fp, fp + 1bdea: 462b mov r3, r5 + 1bdec: f107 0014 add.w r0, r7, #20 + 1bdf0: f108 0b01 add.w fp, r8, #1 + 1bdf4: fa5f fb8b uxtb.w fp, fp char buff[len]; - 1bd18: f10b 0207 add.w r2, fp, #7 - 1bd1c: f402 72fc and.w r2, r2, #504 ; 0x1f8 - 1bd20: ebad 0d02 sub.w sp, sp, r2 - 1bd24: 465a mov r2, fp - 1bd26: f50d 7a80 add.w sl, sp, #256 ; 0x100 - 1bd2a: 4651 mov r1, sl - 1bd2c: f00e f9f4 bl 2a118 + 1bdf8: f10b 0207 add.w r2, fp, #7 + 1bdfc: f402 72fc and.w r2, r2, #504 ; 0x1f8 + 1be00: ebad 0d02 sub.w sp, sp, r2 + 1be04: 465a mov r2, fp + 1be06: f50d 7a80 add.w sl, sp, #256 ; 0x100 + 1be0a: 4651 mov r1, sl + 1be0c: f00e f9f8 bl 2a200 for(uint8_t i = 0, n = length-1 ; i < length ; i++){ - 1bd30: f1bb 0f00 cmp.w fp, #0 - 1bd34: d02a beq.n 1bd8c - 1bd36: 462b mov r3, r5 + 1be10: f1bb 0f00 cmp.w fp, #0 + 1be14: d02a beq.n 1be6c + 1be16: 462b mov r3, r5 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1bd38: 4628 mov r0, r5 - 1bd3a: e010 b.n 1bd5e + 1be18: 4628 mov r0, r5 + 1be1a: e010 b.n 1be3e if(sysLength + 1be1c: 2afd cmp r2, #253 ; 0xfd + 1be1e: d808 bhi.n 1be32 appendSysExByte(value & 0x7F); - 1bd40: f81a 1003 ldrb.w r1, [sl, r3] + 1be20: f81a 1003 ldrb.w r1, [sl, r3] sysex[sysLength++] = value; - 1bd44: 18a5 adds r5, r4, r2 - 1bd46: 3201 adds r2, #1 + 1be24: 18a5 adds r5, r4, r2 + 1be26: 3201 adds r2, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1bd48: 7120 strb r0, [r4, #4] + 1be28: 7120 strb r0, [r4, #4] appendSysExByte(value & 0x7F); - 1bd4a: f001 017f and.w r1, r1, #127 ; 0x7f + 1be2a: f001 017f and.w r1, r1, #127 ; 0x7f setData1(value & 0xFF); - 1bd4e: 70e2 strb r2, [r4, #3] + 1be2e: 70e2 strb r2, [r4, #3] sysex[sysLength++] = value; - 1bd50: 7169 strb r1, [r5, #5] + 1be30: 7169 strb r1, [r5, #5] for(uint8_t i = 0, n = length-1 ; i < length ; i++){ - 1bd52: 4598 cmp r8, r3 + 1be32: 4598 cmp r8, r3 if(i==32){ - 1bd54: f103 0301 add.w r3, r3, #1 + 1be34: f103 0301 add.w r3, r3, #1 for(uint8_t i = 0, n = length-1 ; i < length ; i++){ - 1bd58: d018 beq.n 1bd8c + 1be38: d018 beq.n 1be6c if(i==32){ - 1bd5a: 2b20 cmp r3, #32 - 1bd5c: d00c beq.n 1bd78 + 1be3a: 2b20 cmp r3, #32 + 1be3c: d00c beq.n 1be58 if(i == n){ - 1bd5e: b2da uxtb r2, r3 - 1bd60: 4542 cmp r2, r8 - 1bd62: f8b4 2003 ldrh.w r2, [r4, #3] - 1bd66: d1e9 bne.n 1bd3c + 1be3e: b2da uxtb r2, r3 + 1be40: 4542 cmp r2, r8 + 1be42: f8b4 2003 ldrh.w r2, [r4, #3] + 1be46: d1e9 bne.n 1be1c if(sysLength + 1be48: 2afd cmp r2, #253 ; 0xfd + 1be4a: d8f2 bhi.n 1be32 sysex[sysLength++] = value; - 1bd6c: 18a1 adds r1, r4, r2 - 1bd6e: 3201 adds r2, #1 + 1be4c: 18a1 adds r1, r4, r2 + 1be4e: 3201 adds r2, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1bd70: 7120 strb r0, [r4, #4] + 1be50: 7120 strb r0, [r4, #4] sysex[sysLength++] = value; - 1bd72: 7148 strb r0, [r1, #5] + 1be52: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1bd74: 70e2 strb r2, [r4, #3] + 1be54: 70e2 strb r2, [r4, #3] return true; - 1bd76: e7ec b.n 1bd52 + 1be56: e7ec b.n 1be32 uint16_t sysLength = size(); - 1bd78: f8b4 3003 ldrh.w r3, [r4, #3] + 1be58: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1be5c: 2bfd cmp r3, #253 ; 0xfd + 1be5e: d805 bhi.n 1be6c sysex[sysLength++] = value; - 1bd80: 2200 movs r2, #0 - 1bd82: 18e1 adds r1, r4, r3 - 1bd84: 3301 adds r3, #1 + 1be60: 2200 movs r2, #0 + 1be62: 18e1 adds r1, r4, r3 + 1be64: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1bd86: 7122 strb r2, [r4, #4] + 1be66: 7122 strb r2, [r4, #4] sysex[sysLength++] = value; - 1bd88: 714a strb r2, [r1, #5] + 1be68: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1bd8a: 70e3 strb r3, [r4, #3] - 1bd8c: f107 0014 add.w r0, r7, #20 - 1bd90: 46cd mov sp, r9 - 1bd92: f00e f971 bl 2a078 - } - 1bd96: 1d38 adds r0, r7, #4 - 1bd98: f00e f96e bl 2a078 - 1bd9c: e785 b.n 1bcaa - 1bd9e: bf00 nop - 1bda0: 00020202 .word 0x00020202 - 1bda4: 80897587 .word 0x80897587 - 1bda8: 20002400 .word 0x20002400 + 1be6a: 70e3 strb r3, [r4, #3] + 1be6c: f107 0014 add.w r0, r7, #20 + 1be70: 46cd mov sp, r9 + 1be72: f00e f975 bl 2a160 + } + 1be76: 1d38 adds r0, r7, #4 + 1be78: f00e f972 bl 2a160 + 1be7c: e785 b.n 1bd8a + 1be7e: bf00 nop + 1be80: 00020202 .word 0x00020202 + 1be84: 808975a3 .word 0x808975a3 + 1be88: 20002400 .word 0x20002400 sysex[sysLength++] = value; - 1bdac: 1c59 adds r1, r3, #1 + 1be8c: 1c59 adds r1, r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1bdae: 2200 movs r2, #0 + 1be8e: 2200 movs r2, #0 sysex[sysLength++] = value; - 1bdb0: 4423 add r3, r4 - 1bdb2: 2008 movs r0, #8 + 1be90: 4423 add r3, r4 + 1be92: 2008 movs r0, #8 setData1(value & 0xFF); - 1bdb4: 70e1 strb r1, [r4, #3] + 1be94: 70e1 strb r1, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1bdb6: 7122 strb r2, [r4, #4] - 1bdb8: f8b4 1003 ldrh.w r1, [r4, #3] + 1be96: 7122 strb r2, [r4, #4] + 1be98: f8b4 1003 ldrh.w r1, [r4, #3] sysex[sysLength++] = value; - 1bdbc: 7158 strb r0, [r3, #5] + 1be9c: 7158 strb r0, [r3, #5] if(sysLength + 1be9e: 29fd cmp r1, #253 ; 0xfd + 1bea0: f63f ae9e bhi.w 1bbe0 sysex[sysLength++] = value; - 1bdc4: 1865 adds r5, r4, r1 - 1bdc6: 3101 adds r1, #1 + 1bea4: 1865 adds r5, r4, r1 + 1bea6: 3101 adds r1, #1 setData1(value & 0xFF); - 1bdc8: 70e1 strb r1, [r4, #3] - 1bdca: f8b4 3003 ldrh.w r3, [r4, #3] + 1bea8: 70e1 strb r1, [r4, #3] + 1beaa: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bdce: 7168 strb r0, [r5, #5] + 1beae: 7168 strb r0, [r5, #5] if(sysLength + 1beb0: 2bfd cmp r3, #253 ; 0xfd + 1beb2: f63f ae95 bhi.w 1bbe0 sysex[sysLength++] = value; - 1bdd6: 18e1 adds r1, r4, r3 - 1bdd8: 3301 adds r3, #1 + 1beb6: 18e1 adds r1, r4, r3 + 1beb8: 3301 adds r3, #1 setData1(value & 0xFF); - 1bdda: 70e3 strb r3, [r4, #3] - 1bddc: f8b4 3003 ldrh.w r3, [r4, #3] + 1beba: 70e3 strb r3, [r4, #3] + 1bebc: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bde0: 7148 strb r0, [r1, #5] + 1bec0: 7148 strb r0, [r1, #5] if(sysLength + 1bec2: 2bfd cmp r3, #253 ; 0xfd + 1bec4: f63f ae8c bhi.w 1bbe0 sysex[sysLength++] = value; - 1bde8: 18e0 adds r0, r4, r3 - 1bdea: 3301 adds r3, #1 - 1bdec: 2104 movs r1, #4 + 1bec8: 18e0 adds r0, r4, r3 + 1beca: 3301 adds r3, #1 + 1becc: 2104 movs r1, #4 setData1(value & 0xFF); - 1bdee: 70e3 strb r3, [r4, #3] - 1bdf0: f8b4 3003 ldrh.w r3, [r4, #3] + 1bece: 70e3 strb r3, [r4, #3] + 1bed0: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bdf4: 7141 strb r1, [r0, #5] + 1bed4: 7141 strb r1, [r0, #5] if(sysLength + 1bed6: 2bfd cmp r3, #253 ; 0xfd + 1bed8: f63f ae82 bhi.w 1bbe0 sysex[sysLength++] = value; - 1bdfc: 18e0 adds r0, r4, r3 - 1bdfe: 3301 adds r3, #1 + 1bedc: 18e0 adds r0, r4, r3 + 1bede: 3301 adds r3, #1 setData1(value & 0xFF); - 1be00: 70e3 strb r3, [r4, #3] - 1be02: f8b4 3003 ldrh.w r3, [r4, #3] + 1bee0: 70e3 strb r3, [r4, #3] + 1bee2: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1be06: 7141 strb r1, [r0, #5] + 1bee6: 7141 strb r1, [r0, #5] if(sysLength + 1bee8: 2bfd cmp r3, #253 ; 0xfd + 1beea: f63f ae79 bhi.w 1bbe0 sysex[sysLength++] = value; - 1be0e: 18e0 adds r0, r4, r3 - 1be10: 3301 adds r3, #1 - 1be12: 2502 movs r5, #2 + 1beee: 18e0 adds r0, r4, r3 + 1bef0: 3301 adds r3, #1 + 1bef2: 2502 movs r5, #2 setData1(value & 0xFF); - 1be14: 70e3 strb r3, [r4, #3] - 1be16: f8b4 3003 ldrh.w r3, [r4, #3] + 1bef4: 70e3 strb r3, [r4, #3] + 1bef6: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1be1a: 7145 strb r5, [r0, #5] + 1befa: 7145 strb r5, [r0, #5] if(sysLength + 1befc: 2bfd cmp r3, #253 ; 0xfd + 1befe: f63f ae6f bhi.w 1bbe0 sysex[sysLength++] = value; - 1be22: 18e0 adds r0, r4, r3 - 1be24: 3301 adds r3, #1 + 1bf02: 18e0 adds r0, r4, r3 + 1bf04: 3301 adds r3, #1 setData1(value & 0xFF); - 1be26: 70e3 strb r3, [r4, #3] - 1be28: f8b4 3003 ldrh.w r3, [r4, #3] + 1bf06: 70e3 strb r3, [r4, #3] + 1bf08: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1be2c: 7141 strb r1, [r0, #5] + 1bf0c: 7141 strb r1, [r0, #5] if(sysLength + 1bf0e: 2bfd cmp r3, #253 ; 0xfd + 1bf10: f63f ae66 bhi.w 1bbe0 sysex[sysLength++] = value; - 1be34: 18e0 adds r0, r4, r3 - 1be36: 3301 adds r3, #1 + 1bf14: 18e0 adds r0, r4, r3 + 1bf16: 3301 adds r3, #1 setData1(value & 0xFF); - 1be38: 70e3 strb r3, [r4, #3] - 1be3a: f8b4 3003 ldrh.w r3, [r4, #3] + 1bf18: 70e3 strb r3, [r4, #3] + 1bf1a: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1be3e: 7142 strb r2, [r0, #5] + 1bf1e: 7142 strb r2, [r0, #5] if(sysLength + 1bf20: 2bfd cmp r3, #253 ; 0xfd + 1bf22: f63f ae5d bhi.w 1bbe0 sysex[sysLength++] = value; - 1be46: 1c58 adds r0, r3, #1 - 1be48: 18e2 adds r2, r4, r3 + 1bf26: 1c58 adds r0, r3, #1 + 1bf28: 18e2 adds r2, r4, r3 setData1(value & 0xFF); - 1be4a: 70e0 strb r0, [r4, #3] - 1be4c: f8b4 3003 ldrh.w r3, [r4, #3] + 1bf2a: 70e0 strb r0, [r4, #3] + 1bf2c: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1be50: 7151 strb r1, [r2, #5] + 1bf30: 7151 strb r1, [r2, #5] if(sysLength + 1bf32: 2bfd cmp r3, #253 ; 0xfd + 1bf34: f63f ae54 bhi.w 1bbe0 sysex[sysLength++] = value; - 1be58: 1c58 adds r0, r3, #1 - 1be5a: 18e2 adds r2, r4, r3 - 1be5c: 2108 movs r1, #8 + 1bf38: 1c58 adds r0, r3, #1 + 1bf3a: 18e2 adds r2, r4, r3 + 1bf3c: 2108 movs r1, #8 setData1(value & 0xFF); - 1be5e: 70e0 strb r0, [r4, #3] - 1be60: f8b4 3003 ldrh.w r3, [r4, #3] + 1bf3e: 70e0 strb r0, [r4, #3] + 1bf40: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1be64: 7151 strb r1, [r2, #5] + 1bf44: 7151 strb r1, [r2, #5] if(sysLength + 1bf46: 2bfd cmp r3, #253 ; 0xfd + 1bf48: f63f ae4a bhi.w 1bbe0 sysex[sysLength++] = value; - 1be6c: 18e2 adds r2, r4, r3 - 1be6e: 3301 adds r3, #1 - 1be70: 2010 movs r0, #16 + 1bf4c: 18e2 adds r2, r4, r3 + 1bf4e: 3301 adds r3, #1 + 1bf50: 2010 movs r0, #16 setData1(value & 0xFF); - 1be72: 70e3 strb r3, [r4, #3] - 1be74: f8b4 3003 ldrh.w r3, [r4, #3] + 1bf52: 70e3 strb r3, [r4, #3] + 1bf54: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1be78: 7150 strb r0, [r2, #5] + 1bf58: 7150 strb r0, [r2, #5] if(sysLength + 1bf5a: 2bfd cmp r3, #253 ; 0xfd + 1bf5c: f63f ae40 bhi.w 1bbe0 sysex[sysLength++] = value; - 1be80: 18e2 adds r2, r4, r3 - 1be82: 3301 adds r3, #1 - 1be84: 7151 strb r1, [r2, #5] + 1bf60: 18e2 adds r2, r4, r3 + 1bf62: 3301 adds r3, #1 + 1bf64: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 1be86: 70e3 strb r3, [r4, #3] + 1bf66: 70e3 strb r3, [r4, #3] return true; - 1be88: e63a b.n 1bb00 - 1be8a: bf00 nop + 1bf68: e63a b.n 1bbe0 + 1bf6a: bf00 nop -0001be8c : +0001bf6c : void BMCEditor::globalEditorMetrics(){ - 1be8c: b570 push {r4, r5, r6, lr} - 1be8e: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 + 1bf6c: b570 push {r4, r5, r6, lr} + 1bf6e: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 struct BMCMidiMessage { - 1be92: 2500 movs r5, #0 - 1be94: 4606 mov r6, r0 + 1bf72: 2500 movs r5, #0 + 1bf74: 4606 mov r6, r0 buff.prepareEditorMessage( - 1be96: 230e movs r3, #14 - 1be98: ac41 add r4, sp, #260 ; 0x104 - 1be9a: e9cd 5500 strd r5, r5, [sp] - 1be9e: 6025 str r5, [r4, #0] - 1bea0: f890 202d ldrb.w r2, [r0, #45] ; 0x2d - 1bea4: f890 102c ldrb.w r1, [r0, #44] ; 0x2c - 1bea8: 4620 mov r0, r4 - 1beaa: 7125 strb r5, [r4, #4] - 1beac: f7ff f80a bl 1aec4 + 1bf76: 230e movs r3, #14 + 1bf78: ac41 add r4, sp, #260 ; 0x104 + 1bf7a: e9cd 5500 strd r5, r5, [sp] + 1bf7e: 6025 str r5, [r4, #0] + 1bf80: f890 202d ldrb.w r2, [r0, #45] ; 0x2d + 1bf84: f890 102c ldrb.w r1, [r0, #44] ; 0x2c + 1bf88: 4620 mov r0, r4 + 1bf8a: 7125 strb r5, [r4, #4] + 1bf8c: f7ff f80a bl 1afa4 buff.appendToSysEx32Bits(midi.globals.getCPU()); - 1beb0: 6873 ldr r3, [r6, #4] - 1beb2: 4620 mov r0, r4 + 1bf90: 6873 ldr r3, [r6, #4] + 1bf92: 4620 mov r0, r4 return lastLoopsPerSecond; - 1beb4: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1beb8: 6e99 ldr r1, [r3, #104] ; 0x68 - 1beba: f7ff fd99 bl 1b9f0 + 1bf94: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1bf98: 6e99 ldr r1, [r3, #104] ; 0x68 + 1bf9a: f7ff fd99 bl 1bad0 uint16_t sysLength = size(); - 1bebe: f8b4 3003 ldrh.w r3, [r4, #3] + 1bf9e: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1bfa2: 2bfd cmp r3, #253 ; 0xfd + 1bfa4: d910 bls.n 1bfc8 sendToEditor(buff); - 1bec6: 2301 movs r3, #1 - 1bec8: 2100 movs r1, #0 - 1beca: 22f7 movs r2, #247 ; 0xf7 - 1becc: 4668 mov r0, sp - 1bece: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 - 1bed2: a944 add r1, sp, #272 ; 0x110 - 1bed4: f00e fc18 bl 2a708 - 1bed8: 4630 mov r0, r6 - 1beda: e894 000e ldmia.w r4, {r1, r2, r3} - 1bede: f7fe fcf5 bl 1a8cc -} - 1bee2: f50d 7d02 add.w sp, sp, #520 ; 0x208 - 1bee6: bd70 pop {r4, r5, r6, pc} + 1bfa6: 2301 movs r3, #1 + 1bfa8: 2100 movs r1, #0 + 1bfaa: 22f7 movs r2, #247 ; 0xf7 + 1bfac: 4668 mov r0, sp + 1bfae: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 + 1bfb2: a944 add r1, sp, #272 ; 0x110 + 1bfb4: f00e fc1c bl 2a7f0 + 1bfb8: 4630 mov r0, r6 + 1bfba: e894 000e ldmia.w r4, {r1, r2, r3} + 1bfbe: f7fe fcf5 bl 1a9ac +} + 1bfc2: f50d 7d02 add.w sp, sp, #520 ; 0x208 + 1bfc6: bd70 pop {r4, r5, r6, pc} sysex[sysLength++] = value; - 1bee8: 18e2 adds r2, r4, r3 - 1beea: 3301 adds r3, #1 + 1bfc8: 18e2 adds r2, r4, r3 + 1bfca: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1beec: 7125 strb r5, [r4, #4] + 1bfcc: 7125 strb r5, [r4, #4] setData1(value & 0xFF); - 1beee: 70e3 strb r3, [r4, #3] - 1bef0: f8b4 3003 ldrh.w r3, [r4, #3] + 1bfce: 70e3 strb r3, [r4, #3] + 1bfd0: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bef4: 7155 strb r5, [r2, #5] + 1bfd4: 7155 strb r5, [r2, #5] if(sysLength + 1bfd6: 2bfd cmp r3, #253 ; 0xfd + 1bfd8: d8e5 bhi.n 1bfa6 sysex[sysLength++] = value; - 1befa: 18e2 adds r2, r4, r3 - 1befc: 3301 adds r3, #1 + 1bfda: 18e2 adds r2, r4, r3 + 1bfdc: 3301 adds r3, #1 setData1(value & 0xFF); - 1befe: 70e3 strb r3, [r4, #3] - 1bf00: f8b4 3003 ldrh.w r3, [r4, #3] + 1bfde: 70e3 strb r3, [r4, #3] + 1bfe0: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bf04: 7155 strb r5, [r2, #5] + 1bfe4: 7155 strb r5, [r2, #5] if(sysLength + 1bfe6: 2bfd cmp r3, #253 ; 0xfd + 1bfe8: d8dd bhi.n 1bfa6 sysex[sysLength++] = value; - 1bf0a: 18e2 adds r2, r4, r3 - 1bf0c: 3301 adds r3, #1 + 1bfea: 18e2 adds r2, r4, r3 + 1bfec: 3301 adds r3, #1 setData1(value & 0xFF); - 1bf0e: 70e3 strb r3, [r4, #3] - 1bf10: f8b4 3003 ldrh.w r3, [r4, #3] + 1bfee: 70e3 strb r3, [r4, #3] + 1bff0: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bf14: 7155 strb r5, [r2, #5] + 1bff4: 7155 strb r5, [r2, #5] if(sysLength + 1bff6: 2bfd cmp r3, #253 ; 0xfd + 1bff8: d8d5 bhi.n 1bfa6 sysex[sysLength++] = value; - 1bf1a: 18e2 adds r2, r4, r3 - 1bf1c: 3301 adds r3, #1 + 1bffa: 18e2 adds r2, r4, r3 + 1bffc: 3301 adds r3, #1 setData1(value & 0xFF); - 1bf1e: 70e3 strb r3, [r4, #3] - 1bf20: f8b4 3003 ldrh.w r3, [r4, #3] + 1bffe: 70e3 strb r3, [r4, #3] + 1c000: f8b4 3003 ldrh.w r3, [r4, #3] sysex[sysLength++] = value; - 1bf24: 7155 strb r5, [r2, #5] + 1c004: 7155 strb r5, [r2, #5] if(sysLength + 1c006: 2bfd cmp r3, #253 ; 0xfd + 1c008: d8cd bhi.n 1bfa6 sysex[sysLength++] = value; - 1bf2a: 18e2 adds r2, r4, r3 - 1bf2c: 3301 adds r3, #1 - 1bf2e: 7155 strb r5, [r2, #5] + 1c00a: 18e2 adds r2, r4, r3 + 1c00c: 3301 adds r3, #1 + 1c00e: 7155 strb r5, [r2, #5] setData1(value & 0xFF); - 1bf30: 70e3 strb r3, [r4, #3] + 1c010: 70e3 strb r3, [r4, #3] return true; - 1bf32: e7c8 b.n 1bec6 + 1c012: e7c8 b.n 1bfa6 -0001bf34 : +0001c014 : void debugStartTiming(const char * str){ - 1bf34: b538 push {r3, r4, r5, lr} + 1c014: b538 push {r3, r4, r5, lr} return bitRead(flags, bit); - 1bf36: 6803 ldr r3, [r0, #0] - 1bf38: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1c016: 6803 ldr r3, [r0, #0] + 1c018: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1bf3c: 07db lsls r3, r3, #31 - 1bf3e: d400 bmi.n 1bf42 + 1c01c: 07db lsls r3, r3, #31 + 1c01e: d400 bmi.n 1c022 } - 1bf40: bd38 pop {r3, r4, r5, pc} - 1bf42: 460d mov r5, r1 - 1bf44: 4604 mov r4, r0 - 1bf46: 2100 movs r1, #0 - 1bf48: 4812 ldr r0, [pc, #72] ; (1bf94 ) - 1bf4a: f010 fafd bl 2c548 + 1c020: bd38 pop {r3, r4, r5, pc} + 1c022: 460d mov r5, r1 + 1c024: 4604 mov r4, r0 + 1c026: 2100 movs r1, #0 + 1c028: 4812 ldr r0, [pc, #72] ; (1c074 ) + 1c02a: f010 fb01 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1bf4e: 4812 ldr r0, [pc, #72] ; (1bf98 ) - 1bf50: f00d ff90 bl 29e74 - 1bf54: 2103 movs r1, #3 - 1bf56: 4811 ldr r0, [pc, #68] ; (1bf9c ) - 1bf58: f010 faf6 bl 2c548 - 1bf5c: 2101 movs r1, #1 - 1bf5e: 4810 ldr r0, [pc, #64] ; (1bfa0 ) - 1bf60: f010 faf2 bl 2c548 + 1c02e: 4812 ldr r0, [pc, #72] ; (1c078 ) + 1c030: f00d ff96 bl 29f60 + 1c034: 2103 movs r1, #3 + 1c036: 4811 ldr r0, [pc, #68] ; (1c07c ) + 1c038: f010 fafa bl 2c630 + 1c03c: 2101 movs r1, #1 + 1c03e: 4810 ldr r0, [pc, #64] ; (1c080 ) + 1c040: f010 faf6 bl 2c630 size_t write(const char *str) { if (str == nullptr) return 0; - 1bf64: b135 cbz r5, 1bf74 + 1c044: b135 cbz r5, 1c054 return write((const uint8_t *)str, strlen(str)); } - 1bf66: 4628 mov r0, r5 - 1bf68: f012 fdea bl 2eb40 - 1bf6c: 4601 mov r1, r0 - 1bf6e: 4628 mov r0, r5 - 1bf70: f010 faea bl 2c548 - 1bf74: 2101 movs r1, #1 - 1bf76: 480a ldr r0, [pc, #40] ; (1bfa0 ) - 1bf78: f010 fae6 bl 2c548 - 1bf7c: 2108 movs r1, #8 - 1bf7e: 4809 ldr r0, [pc, #36] ; (1bfa4 ) - 1bf80: f010 fae2 bl 2c548 - 1bf84: 2101 movs r1, #1 - 1bf86: 4806 ldr r0, [pc, #24] ; (1bfa0 ) - 1bf88: f010 fade bl 2c548 + 1c046: 4628 mov r0, r5 + 1c048: f012 fdfa bl 2ec40 + 1c04c: 4601 mov r1, r0 + 1c04e: 4628 mov r0, r5 + 1c050: f010 faee bl 2c630 + 1c054: 2101 movs r1, #1 + 1c056: 480a ldr r0, [pc, #40] ; (1c080 ) + 1c058: f010 faea bl 2c630 + 1c05c: 2108 movs r1, #8 + 1c05e: 4809 ldr r0, [pc, #36] ; (1c084 ) + 1c060: f010 fae6 bl 2c630 + 1c064: 2101 movs r1, #1 + 1c066: 4806 ldr r0, [pc, #24] ; (1c080 ) + 1c068: f010 fae2 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1bf8c: f00e faf2 bl 2a574 - 1bf90: 61e0 str r0, [r4, #28] + 1c06c: f00e faf6 bl 2a65c + 1c070: 61e0 str r0, [r4, #28] } - 1bf92: bd38 pop {r3, r4, r5, pc} - 1bf94: 20003c58 .word 0x20003c58 - 1bf98: 20004ba8 .word 0x20004ba8 - 1bf9c: 200036c8 .word 0x200036c8 - 1bfa0: 200023ec .word 0x200023ec - 1bfa4: 20003e10 .word 0x20003e10 - -0001bfa8 : - 1bfa8: 6803 ldr r3, [r0, #0] - 1bfaa: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1c072: bd38 pop {r3, r4, r5, pc} + 1c074: 20003d18 .word 0x20003d18 + 1c078: 20004c68 .word 0x20004c68 + 1c07c: 20003788 .word 0x20003788 + 1c080: 200023ec .word 0x200023ec + 1c084: 20003ed0 .word 0x20003ed0 + +0001c088 : + 1c088: 6803 ldr r3, [r0, #0] + 1c08a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1bfae: 07db lsls r3, r3, #31 - 1bfb0: d400 bmi.n 1bfb4 - 1bfb2: 4770 bx lr + 1c08e: 07db lsls r3, r3, #31 + 1c090: d400 bmi.n 1c094 + 1c092: 4770 bx lr void debugStopTiming(){ - 1bfb4: b510 push {r4, lr} - 1bfb6: 2104 movs r1, #4 - 1bfb8: 4604 mov r4, r0 - 1bfba: 4817 ldr r0, [pc, #92] ; (1c018 ) - 1bfbc: f010 fac4 bl 2c548 - 1bfc0: 2101 movs r1, #1 - 1bfc2: 4816 ldr r0, [pc, #88] ; (1c01c ) - 1bfc4: f010 fac0 bl 2c548 + 1c094: b510 push {r4, lr} + 1c096: 2104 movs r1, #4 + 1c098: 4604 mov r4, r0 + 1c09a: 4817 ldr r0, [pc, #92] ; (1c0f8 ) + 1c09c: f010 fac8 bl 2c630 + 1c0a0: 2101 movs r1, #1 + 1c0a2: 4816 ldr r0, [pc, #88] ; (1c0fc ) + 1c0a4: f010 fac4 bl 2c630 BMC_PRINTLN("took",((BMC_STORAGE_DEBUG_TIME_T()-debugTimer)/1000.0),"milliseconds"); - 1bfc8: f00e fad4 bl 2a574 - 1bfcc: 69e3 ldr r3, [r4, #28] + 1c0a8: f00e fad8 bl 2a65c + 1c0ac: 69e3 ldr r3, [r4, #28] size_t print(double n, int digits = 2) { return printFloat(n, digits); } - 1bfce: 2102 movs r1, #2 - 1bfd0: 1ac3 subs r3, r0, r3 - 1bfd2: 4813 ldr r0, [pc, #76] ; (1c020 ) - 1bfd4: ee00 3a10 vmov s0, r3 - 1bfd8: ed9f 7b0d vldr d7, [pc, #52] ; 1c010 - 1bfdc: eeb8 0b40 vcvt.f64.u32 d0, s0 - 1bfe0: ee80 0b07 vdiv.f64 d0, d0, d7 - 1bfe4: f00d ff78 bl 29ed8 - 1bfe8: 2101 movs r1, #1 - 1bfea: 480c ldr r0, [pc, #48] ; (1c01c ) - 1bfec: f010 faac bl 2c548 - 1bff0: 210c movs r1, #12 - 1bff2: 480c ldr r0, [pc, #48] ; (1c024 ) - 1bff4: f010 faa8 bl 2c548 + 1c0ae: 2102 movs r1, #2 + 1c0b0: 1ac3 subs r3, r0, r3 + 1c0b2: 4813 ldr r0, [pc, #76] ; (1c100 ) + 1c0b4: ee00 3a10 vmov s0, r3 + 1c0b8: ed9f 7b0d vldr d7, [pc, #52] ; 1c0f0 + 1c0bc: eeb8 0b40 vcvt.f64.u32 d0, s0 + 1c0c0: ee80 0b07 vdiv.f64 d0, d0, d7 + 1c0c4: f00d ff7c bl 29fc0 + 1c0c8: 2101 movs r1, #1 + 1c0ca: 480c ldr r0, [pc, #48] ; (1c0fc ) + 1c0cc: f010 fab0 bl 2c630 + 1c0d0: 210c movs r1, #12 + 1c0d2: 480c ldr r0, [pc, #48] ; (1c104 ) + 1c0d4: f010 faac bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1bff8: 4809 ldr r0, [pc, #36] ; (1c020 ) - 1bffa: f00d ff3b bl 29e74 - 1bffe: 2100 movs r1, #0 - 1c000: 4809 ldr r0, [pc, #36] ; (1c028 ) - 1c002: f010 faa1 bl 2c548 - 1c006: 4806 ldr r0, [pc, #24] ; (1c020 ) + 1c0d8: 4809 ldr r0, [pc, #36] ; (1c100 ) + 1c0da: f00d ff41 bl 29f60 + 1c0de: 2100 movs r1, #0 + 1c0e0: 4809 ldr r0, [pc, #36] ; (1c108 ) + 1c0e2: f010 faa5 bl 2c630 + 1c0e6: 4806 ldr r0, [pc, #24] ; (1c100 ) BMC_PRINTLN(""); } - 1c008: e8bd 4010 ldmia.w sp!, {r4, lr} - 1c00c: f00d bf32 b.w 29e74 - 1c010: 00000000 .word 0x00000000 - 1c014: 408f4000 .word 0x408f4000 - 1c018: 20003e38 .word 0x20003e38 - 1c01c: 200023ec .word 0x200023ec - 1c020: 20004ba8 .word 0x20004ba8 - 1c024: 20003e40 .word 0x20003e40 - 1c028: 20003c58 .word 0x20003c58 - -0001c02c : + 1c0e8: e8bd 4010 ldmia.w sp!, {r4, lr} + 1c0ec: f00d bf38 b.w 29f60 + 1c0f0: 00000000 .word 0x00000000 + 1c0f4: 408f4000 .word 0x408f4000 + 1c0f8: 20003ef8 .word 0x20003ef8 + 1c0fc: 200023ec .word 0x200023ec + 1c100: 20004c68 .word 0x20004c68 + 1c104: 20003f00 .word 0x20003f00 + 1c108: 20003d18 .word 0x20003d18 + +0001c10c : void saveSetListSong(uint16_t index){ - 1c02c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1c030: 4605 mov r5, r0 - 1c032: 460c mov r4, r1 - 1c034: b085 sub sp, #20 + 1c10c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1c110: 4605 mov r5, r0 + 1c112: 460c mov r4, r1 + 1c114: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1c036: f7fe fbd3 bl 1a7e0 + 1c116: f7fe fbd3 bl 1a8c0 address += getSetListSongOffset(index); - 1c03a: 4621 mov r1, r4 + 1c11a: 4621 mov r1, r4 uint16_t address = getGlobalOffset(); - 1c03c: 4606 mov r6, r0 + 1c11c: 4606 mov r6, r0 address += getSetListSongOffset(index); - 1c03e: 4628 mov r0, r5 - 1c040: f7fe fc04 bl 1a84c + 1c11e: 4628 mov r0, r5 + 1c120: f7fe fc04 bl 1a92c storage.set(address, store.global.songLibrary[index]); - 1c044: 462a mov r2, r5 - 1c046: eb04 0484 add.w r4, r4, r4, lsl #2 - 1c04a: f241 233d movw r3, #4669 ; 0x123d + 1c124: 462a mov r2, r5 + 1c126: eb04 0484 add.w r4, r4, r4, lsl #2 + 1c12a: f241 233d movw r3, #4669 ; 0x123d uint16_t address = getGlobalOffset(); - 1c04e: b2b6 uxth r6, r6 + 1c12e: b2b6 uxth r6, r6 storage.set(address, store.global.songLibrary[index]); - 1c050: eb03 0344 add.w r3, r3, r4, lsl #1 - 1c054: f852 4b0c ldr.w r4, [r2], #12 + 1c130: eb03 0344 add.w r3, r3, r4, lsl #1 + 1c134: f852 4b0c ldr.w r4, [r2], #12 address += getSetListSongOffset(index); - 1c058: 4406 add r6, r0 + 1c138: 4406 add r6, r0 storage.set(address, store.global.songLibrary[index]); - 1c05a: 441c add r4, r3 - 1c05c: 68eb ldr r3, [r5, #12] + 1c13a: 441c add r4, r3 + 1c13c: 68eb ldr r3, [r5, #12] address += getSetListSongOffset(index); - 1c05e: b2b6 uxth r6, r6 + 1c13e: b2b6 uxth r6, r6 storage.set(address, store.global.songLibrary[index]); - 1c060: 9201 str r2, [sp, #4] - 1c062: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1c140: 9201 str r2, [sp, #4] + 1c142: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1c066: 07db lsls r3, r3, #31 - 1c068: d521 bpl.n 1c0ae - 1c06a: 2100 movs r1, #0 - 1c06c: 4844 ldr r0, [pc, #272] ; (1c180 ) - 1c06e: f010 fa6b bl 2c548 - 1c072: 4844 ldr r0, [pc, #272] ; (1c184 ) - 1c074: f00d fefe bl 29e74 - 1c078: 2103 movs r1, #3 - 1c07a: 4843 ldr r0, [pc, #268] ; (1c188 ) - 1c07c: f010 fa64 bl 2c548 - 1c080: 2101 movs r1, #1 - 1c082: 4842 ldr r0, [pc, #264] ; (1c18c ) - 1c084: f010 fa60 bl 2c548 - 1c088: 2108 movs r1, #8 - 1c08a: 4841 ldr r0, [pc, #260] ; (1c190 ) - 1c08c: f010 fa5c bl 2c548 - 1c090: 2101 movs r1, #1 - 1c092: 483e ldr r0, [pc, #248] ; (1c18c ) - 1c094: f010 fa58 bl 2c548 - 1c098: 2108 movs r1, #8 - 1c09a: 483e ldr r0, [pc, #248] ; (1c194 ) - 1c09c: f010 fa54 bl 2c548 - 1c0a0: 2101 movs r1, #1 - 1c0a2: 483a ldr r0, [pc, #232] ; (1c18c ) - 1c0a4: f010 fa50 bl 2c548 + 1c146: 07db lsls r3, r3, #31 + 1c148: d521 bpl.n 1c18e + 1c14a: 2100 movs r1, #0 + 1c14c: 4844 ldr r0, [pc, #272] ; (1c260 ) + 1c14e: f010 fa6f bl 2c630 + 1c152: 4844 ldr r0, [pc, #272] ; (1c264 ) + 1c154: f00d ff04 bl 29f60 + 1c158: 2103 movs r1, #3 + 1c15a: 4843 ldr r0, [pc, #268] ; (1c268 ) + 1c15c: f010 fa68 bl 2c630 + 1c160: 2101 movs r1, #1 + 1c162: 4842 ldr r0, [pc, #264] ; (1c26c ) + 1c164: f010 fa64 bl 2c630 + 1c168: 2108 movs r1, #8 + 1c16a: 4841 ldr r0, [pc, #260] ; (1c270 ) + 1c16c: f010 fa60 bl 2c630 + 1c170: 2101 movs r1, #1 + 1c172: 483e ldr r0, [pc, #248] ; (1c26c ) + 1c174: f010 fa5c bl 2c630 + 1c178: 2108 movs r1, #8 + 1c17a: 483e ldr r0, [pc, #248] ; (1c274 ) + 1c17c: f010 fa58 bl 2c630 + 1c180: 2101 movs r1, #1 + 1c182: 483a ldr r0, [pc, #232] ; (1c26c ) + 1c184: f010 fa54 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1c0a8: f00e fa64 bl 2a574 - 1c0ac: 62a8 str r0, [r5, #40] ; 0x28 - 1c0ae: 210e movs r1, #14 - 1c0b0: 4839 ldr r0, [pc, #228] ; (1c198 ) - 1c0b2: f010 fa49 bl 2c548 + 1c188: f00e fa68 bl 2a65c + 1c18c: 62a8 str r0, [r5, #40] ; 0x28 + 1c18e: 210e movs r1, #14 + 1c190: 4839 ldr r0, [pc, #228] ; (1c278 ) + 1c192: f010 fa4d bl 2c630 unsigned long n = sizeof(value)+start; - 1c0b6: f106 080a add.w r8, r6, #10 - 1c0ba: 1c73 adds r3, r6, #1 - 1c0bc: 4f37 ldr r7, [pc, #220] ; (1c19c ) + 1c196: f106 080a add.w r8, r6, #10 + 1c19a: 1c73 adds r3, r6, #1 + 1c19c: 4f37 ldr r7, [pc, #220] ; (1c27c ) STORAGE.put(address,file); - 1c0be: f105 0910 add.w r9, r5, #16 - 1c0c2: 1b36 subs r6, r6, r4 - 1c0c4: 4598 cmp r8, r3 - 1c0c6: bf34 ite cc - 1c0c8: f04f 0801 movcc.w r8, #1 - 1c0cc: f04f 080a movcs.w r8, #10 - 1c0d0: 683b ldr r3, [r7, #0] + 1c19e: f105 0910 add.w r9, r5, #16 + 1c1a2: 1b36 subs r6, r6, r4 + 1c1a4: 4598 cmp r8, r3 + 1c1a6: bf34 ite cc + 1c1a8: f04f 0801 movcc.w r8, #1 + 1c1ac: f04f 080a movcs.w r8, #10 + 1c1b0: 683b ldr r3, [r7, #0] unsigned long updatedBytes = 0; - 1c0d2: f04f 0a00 mov.w sl, #0 - 1c0d6: f8df b0c8 ldr.w fp, [pc, #200] ; 1c1a0 - 1c0da: 44a0 add r8, r4 + 1c1b2: f04f 0a00 mov.w sl, #0 + 1c1b6: f8df b0c8 ldr.w fp, [pc, #200] ; 1c280 + 1c1ba: 44a0 add r8, r4 elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 1c0dc: 622b str r3, [r5, #32] + 1c1bc: 622b str r3, [r5, #32] for(i=start;i - 1c0e0: 683b ldr r3, [r7, #0] + 1c1be: e006 b.n 1c1ce + 1c1c0: 683b ldr r3, [r7, #0] operator unsigned long () const { return millis() - ms; } - 1c0e2: 6a2a ldr r2, [r5, #32] - 1c0e4: 1a9b subs r3, r3, r2 + 1c1c2: 6a2a ldr r2, [r5, #32] + 1c1c4: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1c0e6: 2bf9 cmp r3, #249 ; 0xf9 - 1c0e8: d81c bhi.n 1c124 + 1c1c6: 2bf9 cmp r3, #249 ; 0xf9 + 1c1c8: d81c bhi.n 1c204 for(i=start;i - 1c0ee: 19a1 adds r1, r4, r6 + 1c1ca: 4544 cmp r4, r8 + 1c1cc: d022 beq.n 1c214 + 1c1ce: 19a1 adds r1, r4, r6 updatedBytes += update(i,*p++); - 1c0f0: f814 3b01 ldrb.w r3, [r4], #1 + 1c1d0: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 1c0f4: 4648 mov r0, r9 - 1c0f6: 9100 str r1, [sp, #0] - 1c0f8: f88d 300f strb.w r3, [sp, #15] - 1c0fc: f009 f826 bl 2514c - 1c100: f89d 300f ldrb.w r3, [sp, #15] - 1c104: 9900 ldr r1, [sp, #0] - 1c106: 4298 cmp r0, r3 - 1c108: d0ea beq.n 1c0e0 + 1c1d4: 4648 mov r0, r9 + 1c1d6: 9100 str r1, [sp, #0] + 1c1d8: f88d 300f strb.w r3, [sp, #15] + 1c1dc: f009 f82c bl 25238 + 1c1e0: f89d 300f ldrb.w r3, [sp, #15] + 1c1e4: 9900 ldr r1, [sp, #0] + 1c1e6: 4298 cmp r0, r3 + 1c1e8: d0ea beq.n 1c1c0 write(addr, &value, 1); - 1c10a: 2301 movs r3, #1 - 1c10c: f10d 020f add.w r2, sp, #15 - 1c110: 4648 mov r0, r9 + 1c1ea: 2301 movs r3, #1 + 1c1ec: f10d 020f add.w r2, sp, #15 + 1c1f0: 4648 mov r0, r9 updatedBytes += update(i,*p++); - 1c112: f10a 0a01 add.w sl, sl, #1 + 1c1f2: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 1c116: f008 ff0f bl 24f38 - 1c11a: 683b ldr r3, [r7, #0] - 1c11c: 6a2a ldr r2, [r5, #32] - 1c11e: 1a9b subs r3, r3, r2 + 1c1f6: f008 ff15 bl 25024 + 1c1fa: 683b ldr r3, [r7, #0] + 1c1fc: 6a2a ldr r2, [r5, #32] + 1c1fe: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1c120: 2bf9 cmp r3, #249 ; 0xf9 - 1c122: d9e2 bls.n 1c0ea - 1c124: 2101 movs r1, #1 - 1c126: 4658 mov r0, fp - 1c128: f010 fa0e bl 2c548 - 1c12c: 683b ldr r3, [r7, #0] + 1c200: 2bf9 cmp r3, #249 ; 0xf9 + 1c202: d9e2 bls.n 1c1ca + 1c204: 2101 movs r1, #1 + 1c206: 4658 mov r0, fp + 1c208: f010 fa12 bl 2c630 + 1c20c: 683b ldr r3, [r7, #0] for(i=start;i - 1c134: 2101 movs r1, #1 - 1c136: 481a ldr r0, [pc, #104] ; (1c1a0 ) - 1c138: f010 fa06 bl 2c548 - 1c13c: 4811 ldr r0, [pc, #68] ; (1c184 ) - 1c13e: f00d fe99 bl 29e74 - 1c142: 2109 movs r1, #9 - 1c144: 4817 ldr r0, [pc, #92] ; (1c1a4 ) - 1c146: f010 f9ff bl 2c548 - 1c14a: 2101 movs r1, #1 - 1c14c: 480f ldr r0, [pc, #60] ; (1c18c ) - 1c14e: f010 f9fb bl 2c548 + 1c210: 622b str r3, [r5, #32] + 1c212: d1dc bne.n 1c1ce + 1c214: 2101 movs r1, #1 + 1c216: 481a ldr r0, [pc, #104] ; (1c280 ) + 1c218: f010 fa0a bl 2c630 + 1c21c: 4811 ldr r0, [pc, #68] ; (1c264 ) + 1c21e: f00d fe9f bl 29f60 + 1c222: 2109 movs r1, #9 + 1c224: 4817 ldr r0, [pc, #92] ; (1c284 ) + 1c226: f010 fa03 bl 2c630 + 1c22a: 2101 movs r1, #1 + 1c22c: 480f ldr r0, [pc, #60] ; (1c26c ) + 1c22e: f010 f9ff bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1c152: 2300 movs r3, #0 - 1c154: 220a movs r2, #10 - 1c156: 4651 mov r1, sl - 1c158: 480a ldr r0, [pc, #40] ; (1c184 ) - 1c15a: f00d fea7 bl 29eac - 1c15e: 2101 movs r1, #1 - 1c160: 480a ldr r0, [pc, #40] ; (1c18c ) - 1c162: f010 f9f1 bl 2c548 - 1c166: 2105 movs r1, #5 - 1c168: 480f ldr r0, [pc, #60] ; (1c1a8 ) - 1c16a: f010 f9ed bl 2c548 + 1c232: 2300 movs r3, #0 + 1c234: 220a movs r2, #10 + 1c236: 4651 mov r1, sl + 1c238: 480a ldr r0, [pc, #40] ; (1c264 ) + 1c23a: f00d fead bl 29f98 + 1c23e: 2101 movs r1, #1 + 1c240: 480a ldr r0, [pc, #40] ; (1c26c ) + 1c242: f010 f9f5 bl 2c630 + 1c246: 2105 movs r1, #5 + 1c248: 480f ldr r0, [pc, #60] ; (1c288 ) + 1c24a: f010 f9f1 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1c16e: 4805 ldr r0, [pc, #20] ; (1c184 ) - 1c170: f00d fe80 bl 29e74 + 1c24e: 4805 ldr r0, [pc, #20] ; (1c264 ) + 1c250: f00d fe86 bl 29f60 debugStopTiming(); - 1c174: 9801 ldr r0, [sp, #4] - 1c176: f7ff ff17 bl 1bfa8 + 1c254: 9801 ldr r0, [sp, #4] + 1c256: f7ff ff17 bl 1c088 } - 1c17a: b005 add sp, #20 - 1c17c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1c180: 20003c58 .word 0x20003c58 - 1c184: 20004ba8 .word 0x20004ba8 - 1c188: 200036c8 .word 0x200036c8 - 1c18c: 200023ec .word 0x200023ec - 1c190: 20003e04 .word 0x20003e04 - 1c194: 20003e10 .word 0x20003e10 - 1c198: 20003e1c .word 0x20003e1c - 1c19c: 2000bae8 .word 0x2000bae8 - 1c1a0: 200030b8 .word 0x200030b8 - 1c1a4: 20003e2c .word 0x20003e2c - 1c1a8: 20002448 .word 0x20002448 - -0001c1ac : + 1c25a: b005 add sp, #20 + 1c25c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1c260: 20003d18 .word 0x20003d18 + 1c264: 20004c68 .word 0x20004c68 + 1c268: 20003788 .word 0x20003788 + 1c26c: 200023ec .word 0x200023ec + 1c270: 20003ec4 .word 0x20003ec4 + 1c274: 20003ed0 .word 0x20003ed0 + 1c278: 20003edc .word 0x20003edc + 1c27c: 2000bb08 .word 0x2000bb08 + 1c280: 20003150 .word 0x20003150 + 1c284: 20003eec .word 0x20003eec + 1c288: 20002448 .word 0x20002448 + +0001c28c : void saveSetList(uint8_t index){ - 1c1ac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1c1b0: 460c mov r4, r1 - 1c1b2: 4605 mov r5, r0 - 1c1b4: b085 sub sp, #20 + 1c28c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1c290: 460c mov r4, r1 + 1c292: 4605 mov r5, r0 + 1c294: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1c1b6: f7fe fb13 bl 1a7e0 + 1c296: f7fe fb13 bl 1a8c0 address += getSetListOffset(index); - 1c1ba: 4621 mov r1, r4 + 1c29a: 4621 mov r1, r4 uint16_t address = getGlobalOffset(); - 1c1bc: 4606 mov r6, r0 + 1c29c: 4606 mov r6, r0 address += getSetListOffset(index); - 1c1be: 4628 mov r0, r5 - 1c1c0: f7fe fb3c bl 1a83c + 1c29e: 4628 mov r0, r5 + 1c2a0: f7fe fb3c bl 1a91c storage.set(address, store.global.setLists[index]); - 1c1c4: f241 12ad movw r2, #4525 ; 0x11ad - 1c1c8: 2312 movs r3, #18 + 1c2a4: f241 12ad movw r2, #4525 ; 0x11ad + 1c2a8: 2312 movs r3, #18 uint16_t address = getGlobalOffset(); - 1c1ca: b2b6 uxth r6, r6 + 1c2aa: b2b6 uxth r6, r6 storage.set(address, store.global.setLists[index]); - 1c1cc: fb13 2304 smlabb r3, r3, r4, r2 - 1c1d0: 462a mov r2, r5 + 1c2ac: fb13 2304 smlabb r3, r3, r4, r2 + 1c2b0: 462a mov r2, r5 address += getSetListOffset(index); - 1c1d2: 4406 add r6, r0 + 1c2b2: 4406 add r6, r0 storage.set(address, store.global.setLists[index]); - 1c1d4: f852 4b0c ldr.w r4, [r2], #12 + 1c2b4: f852 4b0c ldr.w r4, [r2], #12 address += getSetListOffset(index); - 1c1d8: b2b6 uxth r6, r6 + 1c2b8: b2b6 uxth r6, r6 storage.set(address, store.global.setLists[index]); - 1c1da: 441c add r4, r3 - 1c1dc: 68eb ldr r3, [r5, #12] - 1c1de: 9201 str r2, [sp, #4] - 1c1e0: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1c2ba: 441c add r4, r3 + 1c2bc: 68eb ldr r3, [r5, #12] + 1c2be: 9201 str r2, [sp, #4] + 1c2c0: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1c1e4: 07db lsls r3, r3, #31 - 1c1e6: d521 bpl.n 1c22c - 1c1e8: 2100 movs r1, #0 - 1c1ea: 4845 ldr r0, [pc, #276] ; (1c300 ) - 1c1ec: f010 f9ac bl 2c548 - 1c1f0: 4844 ldr r0, [pc, #272] ; (1c304 ) - 1c1f2: f00d fe3f bl 29e74 - 1c1f6: 2103 movs r1, #3 - 1c1f8: 4843 ldr r0, [pc, #268] ; (1c308 ) - 1c1fa: f010 f9a5 bl 2c548 - 1c1fe: 2101 movs r1, #1 - 1c200: 4842 ldr r0, [pc, #264] ; (1c30c ) - 1c202: f010 f9a1 bl 2c548 - 1c206: 2108 movs r1, #8 - 1c208: 4841 ldr r0, [pc, #260] ; (1c310 ) - 1c20a: f010 f99d bl 2c548 - 1c20e: 2101 movs r1, #1 - 1c210: 483e ldr r0, [pc, #248] ; (1c30c ) - 1c212: f010 f999 bl 2c548 - 1c216: 2108 movs r1, #8 - 1c218: 483e ldr r0, [pc, #248] ; (1c314 ) - 1c21a: f010 f995 bl 2c548 - 1c21e: 2101 movs r1, #1 - 1c220: 483a ldr r0, [pc, #232] ; (1c30c ) - 1c222: f010 f991 bl 2c548 + 1c2c4: 07db lsls r3, r3, #31 + 1c2c6: d521 bpl.n 1c30c + 1c2c8: 2100 movs r1, #0 + 1c2ca: 4845 ldr r0, [pc, #276] ; (1c3e0 ) + 1c2cc: f010 f9b0 bl 2c630 + 1c2d0: 4844 ldr r0, [pc, #272] ; (1c3e4 ) + 1c2d2: f00d fe45 bl 29f60 + 1c2d6: 2103 movs r1, #3 + 1c2d8: 4843 ldr r0, [pc, #268] ; (1c3e8 ) + 1c2da: f010 f9a9 bl 2c630 + 1c2de: 2101 movs r1, #1 + 1c2e0: 4842 ldr r0, [pc, #264] ; (1c3ec ) + 1c2e2: f010 f9a5 bl 2c630 + 1c2e6: 2108 movs r1, #8 + 1c2e8: 4841 ldr r0, [pc, #260] ; (1c3f0 ) + 1c2ea: f010 f9a1 bl 2c630 + 1c2ee: 2101 movs r1, #1 + 1c2f0: 483e ldr r0, [pc, #248] ; (1c3ec ) + 1c2f2: f010 f99d bl 2c630 + 1c2f6: 2108 movs r1, #8 + 1c2f8: 483e ldr r0, [pc, #248] ; (1c3f4 ) + 1c2fa: f010 f999 bl 2c630 + 1c2fe: 2101 movs r1, #1 + 1c300: 483a ldr r0, [pc, #232] ; (1c3ec ) + 1c302: f010 f995 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1c226: f00e f9a5 bl 2a574 - 1c22a: 62a8 str r0, [r5, #40] ; 0x28 - 1c22c: 210e movs r1, #14 - 1c22e: 483a ldr r0, [pc, #232] ; (1c318 ) - 1c230: f010 f98a bl 2c548 + 1c306: f00e f9a9 bl 2a65c + 1c30a: 62a8 str r0, [r5, #40] ; 0x28 + 1c30c: 210e movs r1, #14 + 1c30e: 483a ldr r0, [pc, #232] ; (1c3f8 ) + 1c310: f010 f98e bl 2c630 unsigned long n = sizeof(value)+start; - 1c234: f106 0912 add.w r9, r6, #18 - 1c238: 1c73 adds r3, r6, #1 - 1c23a: 4f38 ldr r7, [pc, #224] ; (1c31c ) + 1c314: f106 0912 add.w r9, r6, #18 + 1c318: 1c73 adds r3, r6, #1 + 1c31a: 4f38 ldr r7, [pc, #224] ; (1c3fc ) STORAGE.put(address,file); - 1c23c: f105 0810 add.w r8, r5, #16 - 1c240: 1b36 subs r6, r6, r4 - 1c242: 4599 cmp r9, r3 - 1c244: bf34 ite cc - 1c246: f04f 0901 movcc.w r9, #1 - 1c24a: f04f 0912 movcs.w r9, #18 - 1c24e: 683b ldr r3, [r7, #0] + 1c31c: f105 0810 add.w r8, r5, #16 + 1c320: 1b36 subs r6, r6, r4 + 1c322: 4599 cmp r9, r3 + 1c324: bf34 ite cc + 1c326: f04f 0901 movcc.w r9, #1 + 1c32a: f04f 0912 movcs.w r9, #18 + 1c32e: 683b ldr r3, [r7, #0] unsigned long updatedBytes = 0; - 1c250: f04f 0a00 mov.w sl, #0 - 1c254: f8df b0c8 ldr.w fp, [pc, #200] ; 1c320 - 1c258: 44a1 add r9, r4 - 1c25a: 622b str r3, [r5, #32] + 1c330: f04f 0a00 mov.w sl, #0 + 1c334: f8df b0c8 ldr.w fp, [pc, #200] ; 1c400 + 1c338: 44a1 add r9, r4 + 1c33a: 622b str r3, [r5, #32] for(i=start;i - 1c25e: 683b ldr r3, [r7, #0] + 1c33c: e006 b.n 1c34c + 1c33e: 683b ldr r3, [r7, #0] operator unsigned long () const { return millis() - ms; } - 1c260: 6a2a ldr r2, [r5, #32] - 1c262: 1a9b subs r3, r3, r2 + 1c340: 6a2a ldr r2, [r5, #32] + 1c342: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1c264: 2bf9 cmp r3, #249 ; 0xf9 - 1c266: d81c bhi.n 1c2a2 + 1c344: 2bf9 cmp r3, #249 ; 0xf9 + 1c346: d81c bhi.n 1c382 for(i=start;i - 1c26c: 19a1 adds r1, r4, r6 + 1c348: 454c cmp r4, r9 + 1c34a: d022 beq.n 1c392 + 1c34c: 19a1 adds r1, r4, r6 updatedBytes += update(i,*p++); - 1c26e: f814 3b01 ldrb.w r3, [r4], #1 + 1c34e: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 1c272: 4640 mov r0, r8 - 1c274: 9100 str r1, [sp, #0] - 1c276: f88d 300f strb.w r3, [sp, #15] - 1c27a: f008 ff67 bl 2514c - 1c27e: f89d 300f ldrb.w r3, [sp, #15] - 1c282: 9900 ldr r1, [sp, #0] - 1c284: 4298 cmp r0, r3 - 1c286: d0ea beq.n 1c25e + 1c352: 4640 mov r0, r8 + 1c354: 9100 str r1, [sp, #0] + 1c356: f88d 300f strb.w r3, [sp, #15] + 1c35a: f008 ff6d bl 25238 + 1c35e: f89d 300f ldrb.w r3, [sp, #15] + 1c362: 9900 ldr r1, [sp, #0] + 1c364: 4298 cmp r0, r3 + 1c366: d0ea beq.n 1c33e write(addr, &value, 1); - 1c288: 2301 movs r3, #1 - 1c28a: f10d 020f add.w r2, sp, #15 - 1c28e: 4640 mov r0, r8 + 1c368: 2301 movs r3, #1 + 1c36a: f10d 020f add.w r2, sp, #15 + 1c36e: 4640 mov r0, r8 updatedBytes += update(i,*p++); - 1c290: f10a 0a01 add.w sl, sl, #1 + 1c370: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 1c294: f008 fe50 bl 24f38 - 1c298: 683b ldr r3, [r7, #0] - 1c29a: 6a2a ldr r2, [r5, #32] - 1c29c: 1a9b subs r3, r3, r2 + 1c374: f008 fe56 bl 25024 + 1c378: 683b ldr r3, [r7, #0] + 1c37a: 6a2a ldr r2, [r5, #32] + 1c37c: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1c29e: 2bf9 cmp r3, #249 ; 0xf9 - 1c2a0: d9e2 bls.n 1c268 - 1c2a2: 2101 movs r1, #1 - 1c2a4: 4658 mov r0, fp - 1c2a6: f010 f94f bl 2c548 - 1c2aa: 683b ldr r3, [r7, #0] + 1c37e: 2bf9 cmp r3, #249 ; 0xf9 + 1c380: d9e2 bls.n 1c348 + 1c382: 2101 movs r1, #1 + 1c384: 4658 mov r0, fp + 1c386: f010 f953 bl 2c630 + 1c38a: 683b ldr r3, [r7, #0] for(i=start;i - 1c2b2: 2101 movs r1, #1 - 1c2b4: 481a ldr r0, [pc, #104] ; (1c320 ) - 1c2b6: f010 f947 bl 2c548 - 1c2ba: 4812 ldr r0, [pc, #72] ; (1c304 ) - 1c2bc: f00d fdda bl 29e74 - 1c2c0: 2109 movs r1, #9 - 1c2c2: 4818 ldr r0, [pc, #96] ; (1c324 ) - 1c2c4: f010 f940 bl 2c548 - 1c2c8: 2101 movs r1, #1 - 1c2ca: 4810 ldr r0, [pc, #64] ; (1c30c ) - 1c2cc: f010 f93c bl 2c548 + 1c38e: 622b str r3, [r5, #32] + 1c390: d1dc bne.n 1c34c + 1c392: 2101 movs r1, #1 + 1c394: 481a ldr r0, [pc, #104] ; (1c400 ) + 1c396: f010 f94b bl 2c630 + 1c39a: 4812 ldr r0, [pc, #72] ; (1c3e4 ) + 1c39c: f00d fde0 bl 29f60 + 1c3a0: 2109 movs r1, #9 + 1c3a2: 4818 ldr r0, [pc, #96] ; (1c404 ) + 1c3a4: f010 f944 bl 2c630 + 1c3a8: 2101 movs r1, #1 + 1c3aa: 4810 ldr r0, [pc, #64] ; (1c3ec ) + 1c3ac: f010 f940 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1c2d0: 2300 movs r3, #0 - 1c2d2: 220a movs r2, #10 - 1c2d4: 4651 mov r1, sl - 1c2d6: 480b ldr r0, [pc, #44] ; (1c304 ) - 1c2d8: f00d fde8 bl 29eac - 1c2dc: 2101 movs r1, #1 - 1c2de: 480b ldr r0, [pc, #44] ; (1c30c ) - 1c2e0: f010 f932 bl 2c548 - 1c2e4: 2105 movs r1, #5 - 1c2e6: 4810 ldr r0, [pc, #64] ; (1c328 ) - 1c2e8: f010 f92e bl 2c548 + 1c3b0: 2300 movs r3, #0 + 1c3b2: 220a movs r2, #10 + 1c3b4: 4651 mov r1, sl + 1c3b6: 480b ldr r0, [pc, #44] ; (1c3e4 ) + 1c3b8: f00d fdee bl 29f98 + 1c3bc: 2101 movs r1, #1 + 1c3be: 480b ldr r0, [pc, #44] ; (1c3ec ) + 1c3c0: f010 f936 bl 2c630 + 1c3c4: 2105 movs r1, #5 + 1c3c6: 4810 ldr r0, [pc, #64] ; (1c408 ) + 1c3c8: f010 f932 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1c2ec: 4805 ldr r0, [pc, #20] ; (1c304 ) - 1c2ee: f00d fdc1 bl 29e74 + 1c3cc: 4805 ldr r0, [pc, #20] ; (1c3e4 ) + 1c3ce: f00d fdc7 bl 29f60 debugStopTiming(); - 1c2f2: 9801 ldr r0, [sp, #4] - 1c2f4: f7ff fe58 bl 1bfa8 + 1c3d2: 9801 ldr r0, [sp, #4] + 1c3d4: f7ff fe58 bl 1c088 } - 1c2f8: b005 add sp, #20 - 1c2fa: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1c2fe: bf00 nop - 1c300: 20003c58 .word 0x20003c58 - 1c304: 20004ba8 .word 0x20004ba8 - 1c308: 200036c8 .word 0x200036c8 - 1c30c: 200023ec .word 0x200023ec - 1c310: 20003e04 .word 0x20003e04 - 1c314: 20003e10 .word 0x20003e10 - 1c318: 20003e1c .word 0x20003e1c - 1c31c: 2000bae8 .word 0x2000bae8 - 1c320: 200030b8 .word 0x200030b8 - 1c324: 20003e2c .word 0x20003e2c - 1c328: 20002448 .word 0x20002448 - -0001c32c : + 1c3d8: b005 add sp, #20 + 1c3da: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1c3de: bf00 nop + 1c3e0: 20003d18 .word 0x20003d18 + 1c3e4: 20004c68 .word 0x20004c68 + 1c3e8: 20003788 .word 0x20003788 + 1c3ec: 200023ec .word 0x200023ec + 1c3f0: 20003ec4 .word 0x20003ec4 + 1c3f4: 20003ed0 .word 0x20003ed0 + 1c3f8: 20003edc .word 0x20003edc + 1c3fc: 2000bb08 .word 0x2000bb08 + 1c400: 20003150 .word 0x20003150 + 1c404: 20003eec .word 0x20003eec + 1c408: 20002448 .word 0x20002448 + +0001c40c : void saveGlobalButton(uint8_t index){ - 1c32c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1c330: 460c mov r4, r1 - 1c332: 4605 mov r5, r0 - 1c334: b085 sub sp, #20 + 1c40c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1c410: 460c mov r4, r1 + 1c412: 4605 mov r5, r0 + 1c414: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1c336: f7fe fa53 bl 1a7e0 + 1c416: f7fe fa53 bl 1a8c0 address += getGlobalButtonOffset(index); - 1c33a: 4621 mov r1, r4 + 1c41a: 4621 mov r1, r4 uint16_t address = getGlobalOffset(); - 1c33c: 4606 mov r6, r0 + 1c41c: 4606 mov r6, r0 address += getGlobalButtonOffset(index); - 1c33e: 4628 mov r0, r5 - 1c340: f7fe fa8c bl 1a85c + 1c41e: 4628 mov r0, r5 + 1c420: f7fe fa8c bl 1a93c storage.set(address, store.global.buttons[index]); - 1c344: f241 42bd movw r2, #5309 ; 0x14bd - 1c348: 230d movs r3, #13 + 1c424: f241 42bd movw r2, #5309 ; 0x14bd + 1c428: 230d movs r3, #13 uint16_t address = getGlobalOffset(); - 1c34a: b2b6 uxth r6, r6 + 1c42a: b2b6 uxth r6, r6 storage.set(address, store.global.buttons[index]); - 1c34c: fb13 2304 smlabb r3, r3, r4, r2 - 1c350: 462a mov r2, r5 + 1c42c: fb13 2304 smlabb r3, r3, r4, r2 + 1c430: 462a mov r2, r5 address += getGlobalButtonOffset(index); - 1c352: 4406 add r6, r0 + 1c432: 4406 add r6, r0 storage.set(address, store.global.buttons[index]); - 1c354: f852 4b0c ldr.w r4, [r2], #12 + 1c434: f852 4b0c ldr.w r4, [r2], #12 address += getGlobalButtonOffset(index); - 1c358: b2b6 uxth r6, r6 + 1c438: b2b6 uxth r6, r6 storage.set(address, store.global.buttons[index]); - 1c35a: 441c add r4, r3 - 1c35c: 68eb ldr r3, [r5, #12] - 1c35e: 9201 str r2, [sp, #4] - 1c360: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1c43a: 441c add r4, r3 + 1c43c: 68eb ldr r3, [r5, #12] + 1c43e: 9201 str r2, [sp, #4] + 1c440: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1c364: 07db lsls r3, r3, #31 - 1c366: d521 bpl.n 1c3ac - 1c368: 2100 movs r1, #0 - 1c36a: 4845 ldr r0, [pc, #276] ; (1c480 ) - 1c36c: f010 f8ec bl 2c548 - 1c370: 4844 ldr r0, [pc, #272] ; (1c484 ) - 1c372: f00d fd7f bl 29e74 - 1c376: 2103 movs r1, #3 - 1c378: 4843 ldr r0, [pc, #268] ; (1c488 ) - 1c37a: f010 f8e5 bl 2c548 - 1c37e: 2101 movs r1, #1 - 1c380: 4842 ldr r0, [pc, #264] ; (1c48c ) - 1c382: f010 f8e1 bl 2c548 - 1c386: 2108 movs r1, #8 - 1c388: 4841 ldr r0, [pc, #260] ; (1c490 ) - 1c38a: f010 f8dd bl 2c548 - 1c38e: 2101 movs r1, #1 - 1c390: 483e ldr r0, [pc, #248] ; (1c48c ) - 1c392: f010 f8d9 bl 2c548 - 1c396: 2108 movs r1, #8 - 1c398: 483e ldr r0, [pc, #248] ; (1c494 ) - 1c39a: f010 f8d5 bl 2c548 - 1c39e: 2101 movs r1, #1 - 1c3a0: 483a ldr r0, [pc, #232] ; (1c48c ) - 1c3a2: f010 f8d1 bl 2c548 + 1c444: 07db lsls r3, r3, #31 + 1c446: d521 bpl.n 1c48c + 1c448: 2100 movs r1, #0 + 1c44a: 4845 ldr r0, [pc, #276] ; (1c560 ) + 1c44c: f010 f8f0 bl 2c630 + 1c450: 4844 ldr r0, [pc, #272] ; (1c564 ) + 1c452: f00d fd85 bl 29f60 + 1c456: 2103 movs r1, #3 + 1c458: 4843 ldr r0, [pc, #268] ; (1c568 ) + 1c45a: f010 f8e9 bl 2c630 + 1c45e: 2101 movs r1, #1 + 1c460: 4842 ldr r0, [pc, #264] ; (1c56c ) + 1c462: f010 f8e5 bl 2c630 + 1c466: 2108 movs r1, #8 + 1c468: 4841 ldr r0, [pc, #260] ; (1c570 ) + 1c46a: f010 f8e1 bl 2c630 + 1c46e: 2101 movs r1, #1 + 1c470: 483e ldr r0, [pc, #248] ; (1c56c ) + 1c472: f010 f8dd bl 2c630 + 1c476: 2108 movs r1, #8 + 1c478: 483e ldr r0, [pc, #248] ; (1c574 ) + 1c47a: f010 f8d9 bl 2c630 + 1c47e: 2101 movs r1, #1 + 1c480: 483a ldr r0, [pc, #232] ; (1c56c ) + 1c482: f010 f8d5 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1c3a6: f00e f8e5 bl 2a574 - 1c3aa: 62a8 str r0, [r5, #40] ; 0x28 - 1c3ac: 210e movs r1, #14 - 1c3ae: 483a ldr r0, [pc, #232] ; (1c498 ) - 1c3b0: f010 f8ca bl 2c548 + 1c486: f00e f8e9 bl 2a65c + 1c48a: 62a8 str r0, [r5, #40] ; 0x28 + 1c48c: 210e movs r1, #14 + 1c48e: 483a ldr r0, [pc, #232] ; (1c578 ) + 1c490: f010 f8ce bl 2c630 unsigned long n = sizeof(value)+start; - 1c3b4: f106 090d add.w r9, r6, #13 - 1c3b8: 1c73 adds r3, r6, #1 - 1c3ba: 4f38 ldr r7, [pc, #224] ; (1c49c ) + 1c494: f106 090d add.w r9, r6, #13 + 1c498: 1c73 adds r3, r6, #1 + 1c49a: 4f38 ldr r7, [pc, #224] ; (1c57c ) STORAGE.put(address,file); - 1c3bc: f105 0810 add.w r8, r5, #16 - 1c3c0: 1b36 subs r6, r6, r4 - 1c3c2: 4599 cmp r9, r3 - 1c3c4: bf34 ite cc - 1c3c6: f04f 0901 movcc.w r9, #1 - 1c3ca: f04f 090d movcs.w r9, #13 - 1c3ce: 683b ldr r3, [r7, #0] + 1c49c: f105 0810 add.w r8, r5, #16 + 1c4a0: 1b36 subs r6, r6, r4 + 1c4a2: 4599 cmp r9, r3 + 1c4a4: bf34 ite cc + 1c4a6: f04f 0901 movcc.w r9, #1 + 1c4aa: f04f 090d movcs.w r9, #13 + 1c4ae: 683b ldr r3, [r7, #0] unsigned long updatedBytes = 0; - 1c3d0: f04f 0a00 mov.w sl, #0 - 1c3d4: f8df b0c8 ldr.w fp, [pc, #200] ; 1c4a0 - 1c3d8: 44a1 add r9, r4 - 1c3da: 622b str r3, [r5, #32] + 1c4b0: f04f 0a00 mov.w sl, #0 + 1c4b4: f8df b0c8 ldr.w fp, [pc, #200] ; 1c580 + 1c4b8: 44a1 add r9, r4 + 1c4ba: 622b str r3, [r5, #32] for(i=start;i - 1c3de: 683b ldr r3, [r7, #0] + 1c4bc: e006 b.n 1c4cc + 1c4be: 683b ldr r3, [r7, #0] operator unsigned long () const { return millis() - ms; } - 1c3e0: 6a2a ldr r2, [r5, #32] - 1c3e2: 1a9b subs r3, r3, r2 + 1c4c0: 6a2a ldr r2, [r5, #32] + 1c4c2: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1c3e4: 2bf9 cmp r3, #249 ; 0xf9 - 1c3e6: d81c bhi.n 1c422 + 1c4c4: 2bf9 cmp r3, #249 ; 0xf9 + 1c4c6: d81c bhi.n 1c502 for(i=start;i - 1c3ec: 19a1 adds r1, r4, r6 + 1c4c8: 454c cmp r4, r9 + 1c4ca: d022 beq.n 1c512 + 1c4cc: 19a1 adds r1, r4, r6 updatedBytes += update(i,*p++); - 1c3ee: f814 3b01 ldrb.w r3, [r4], #1 + 1c4ce: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 1c3f2: 4640 mov r0, r8 - 1c3f4: 9100 str r1, [sp, #0] - 1c3f6: f88d 300f strb.w r3, [sp, #15] - 1c3fa: f008 fea7 bl 2514c - 1c3fe: f89d 300f ldrb.w r3, [sp, #15] - 1c402: 9900 ldr r1, [sp, #0] - 1c404: 4298 cmp r0, r3 - 1c406: d0ea beq.n 1c3de + 1c4d2: 4640 mov r0, r8 + 1c4d4: 9100 str r1, [sp, #0] + 1c4d6: f88d 300f strb.w r3, [sp, #15] + 1c4da: f008 fead bl 25238 + 1c4de: f89d 300f ldrb.w r3, [sp, #15] + 1c4e2: 9900 ldr r1, [sp, #0] + 1c4e4: 4298 cmp r0, r3 + 1c4e6: d0ea beq.n 1c4be write(addr, &value, 1); - 1c408: 2301 movs r3, #1 - 1c40a: f10d 020f add.w r2, sp, #15 - 1c40e: 4640 mov r0, r8 + 1c4e8: 2301 movs r3, #1 + 1c4ea: f10d 020f add.w r2, sp, #15 + 1c4ee: 4640 mov r0, r8 updatedBytes += update(i,*p++); - 1c410: f10a 0a01 add.w sl, sl, #1 + 1c4f0: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 1c414: f008 fd90 bl 24f38 - 1c418: 683b ldr r3, [r7, #0] - 1c41a: 6a2a ldr r2, [r5, #32] - 1c41c: 1a9b subs r3, r3, r2 + 1c4f4: f008 fd96 bl 25024 + 1c4f8: 683b ldr r3, [r7, #0] + 1c4fa: 6a2a ldr r2, [r5, #32] + 1c4fc: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1c41e: 2bf9 cmp r3, #249 ; 0xf9 - 1c420: d9e2 bls.n 1c3e8 - 1c422: 2101 movs r1, #1 - 1c424: 4658 mov r0, fp - 1c426: f010 f88f bl 2c548 - 1c42a: 683b ldr r3, [r7, #0] + 1c4fe: 2bf9 cmp r3, #249 ; 0xf9 + 1c500: d9e2 bls.n 1c4c8 + 1c502: 2101 movs r1, #1 + 1c504: 4658 mov r0, fp + 1c506: f010 f893 bl 2c630 + 1c50a: 683b ldr r3, [r7, #0] for(i=start;i - 1c432: 2101 movs r1, #1 - 1c434: 481a ldr r0, [pc, #104] ; (1c4a0 ) - 1c436: f010 f887 bl 2c548 - 1c43a: 4812 ldr r0, [pc, #72] ; (1c484 ) - 1c43c: f00d fd1a bl 29e74 - 1c440: 2109 movs r1, #9 - 1c442: 4818 ldr r0, [pc, #96] ; (1c4a4 ) - 1c444: f010 f880 bl 2c548 - 1c448: 2101 movs r1, #1 - 1c44a: 4810 ldr r0, [pc, #64] ; (1c48c ) - 1c44c: f010 f87c bl 2c548 + 1c50e: 622b str r3, [r5, #32] + 1c510: d1dc bne.n 1c4cc + 1c512: 2101 movs r1, #1 + 1c514: 481a ldr r0, [pc, #104] ; (1c580 ) + 1c516: f010 f88b bl 2c630 + 1c51a: 4812 ldr r0, [pc, #72] ; (1c564 ) + 1c51c: f00d fd20 bl 29f60 + 1c520: 2109 movs r1, #9 + 1c522: 4818 ldr r0, [pc, #96] ; (1c584 ) + 1c524: f010 f884 bl 2c630 + 1c528: 2101 movs r1, #1 + 1c52a: 4810 ldr r0, [pc, #64] ; (1c56c ) + 1c52c: f010 f880 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1c450: 2300 movs r3, #0 - 1c452: 220a movs r2, #10 - 1c454: 4651 mov r1, sl - 1c456: 480b ldr r0, [pc, #44] ; (1c484 ) - 1c458: f00d fd28 bl 29eac - 1c45c: 2101 movs r1, #1 - 1c45e: 480b ldr r0, [pc, #44] ; (1c48c ) - 1c460: f010 f872 bl 2c548 - 1c464: 2105 movs r1, #5 - 1c466: 4810 ldr r0, [pc, #64] ; (1c4a8 ) - 1c468: f010 f86e bl 2c548 + 1c530: 2300 movs r3, #0 + 1c532: 220a movs r2, #10 + 1c534: 4651 mov r1, sl + 1c536: 480b ldr r0, [pc, #44] ; (1c564 ) + 1c538: f00d fd2e bl 29f98 + 1c53c: 2101 movs r1, #1 + 1c53e: 480b ldr r0, [pc, #44] ; (1c56c ) + 1c540: f010 f876 bl 2c630 + 1c544: 2105 movs r1, #5 + 1c546: 4810 ldr r0, [pc, #64] ; (1c588 ) + 1c548: f010 f872 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1c46c: 4805 ldr r0, [pc, #20] ; (1c484 ) - 1c46e: f00d fd01 bl 29e74 + 1c54c: 4805 ldr r0, [pc, #20] ; (1c564 ) + 1c54e: f00d fd07 bl 29f60 debugStopTiming(); - 1c472: 9801 ldr r0, [sp, #4] - 1c474: f7ff fd98 bl 1bfa8 - } - 1c478: b005 add sp, #20 - 1c47a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1c47e: bf00 nop - 1c480: 20003c58 .word 0x20003c58 - 1c484: 20004ba8 .word 0x20004ba8 - 1c488: 200036c8 .word 0x200036c8 - 1c48c: 200023ec .word 0x200023ec - 1c490: 20003e04 .word 0x20003e04 - 1c494: 20003e10 .word 0x20003e10 - 1c498: 20003e1c .word 0x20003e1c - 1c49c: 2000bae8 .word 0x2000bae8 - 1c4a0: 200030b8 .word 0x200030b8 - 1c4a4: 20003e2c .word 0x20003e2c - 1c4a8: 20002448 .word 0x20002448 - -0001c4ac : + 1c552: 9801 ldr r0, [sp, #4] + 1c554: f7ff fd98 bl 1c088 + } + 1c558: b005 add sp, #20 + 1c55a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1c55e: bf00 nop + 1c560: 20003d18 .word 0x20003d18 + 1c564: 20004c68 .word 0x20004c68 + 1c568: 20003788 .word 0x20003788 + 1c56c: 200023ec .word 0x200023ec + 1c570: 20003ec4 .word 0x20003ec4 + 1c574: 20003ed0 .word 0x20003ed0 + 1c578: 20003edc .word 0x20003edc + 1c57c: 2000bb08 .word 0x2000bb08 + 1c580: 20003150 .word 0x20003150 + 1c584: 20003eec .word 0x20003eec + 1c588: 20002448 .word 0x20002448 + +0001c58c : void saveTempoToTap(uint8_t index){ - 1c4ac: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1c4b0: 4606 mov r6, r0 - 1c4b2: 460c mov r4, r1 - 1c4b4: b085 sub sp, #20 + 1c58c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1c590: 4606 mov r6, r0 + 1c592: 460c mov r4, r1 + 1c594: b085 sub sp, #20 storage.set(address, store.global.tempoToTap[index]); - 1c4b6: 2703 movs r7, #3 + 1c596: 2703 movs r7, #3 uint16_t address = getGlobalOffset(); - 1c4b8: f7fe f992 bl 1a7e0 + 1c598: f7fe f992 bl 1a8c0 address += getTempoToTapOffset(index); - 1c4bc: 4621 mov r1, r4 + 1c59c: 4621 mov r1, r4 uint16_t address = getGlobalOffset(); - 1c4be: 4605 mov r5, r0 + 1c59e: 4605 mov r5, r0 address += getTempoToTapOffset(index); - 1c4c0: 4630 mov r0, r6 - 1c4c2: f7fe f9f7 bl 1a8b4 + 1c5a0: 4630 mov r0, r6 + 1c5a2: f7fe f9f7 bl 1a994 storage.set(address, store.global.tempoToTap[index]); - 1c4c6: f241 534a movw r3, #5450 ; 0x154a - 1c4ca: 46b2 mov sl, r6 + 1c5a6: f241 534a movw r3, #5450 ; 0x154a + 1c5aa: 46b2 mov sl, r6 uint16_t address = getGlobalOffset(); - 1c4cc: b2ad uxth r5, r5 + 1c5ac: b2ad uxth r5, r5 storage.set(address, store.global.tempoToTap[index]); - 1c4ce: fb17 3404 smlabb r4, r7, r4, r3 - 1c4d2: 68f3 ldr r3, [r6, #12] + 1c5ae: fb17 3404 smlabb r4, r7, r4, r3 + 1c5b2: 68f3 ldr r3, [r6, #12] address += getTempoToTapOffset(index); - 1c4d4: 4405 add r5, r0 - 1c4d6: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 + 1c5b4: 4405 add r5, r0 + 1c5b6: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 storage.set(address, store.global.tempoToTap[index]); - 1c4da: f85a 3b0c ldr.w r3, [sl], #12 + 1c5ba: f85a 3b0c ldr.w r3, [sl], #12 address += getTempoToTapOffset(index); - 1c4de: b2ad uxth r5, r5 + 1c5be: b2ad uxth r5, r5 storage.set(address, store.global.tempoToTap[index]); - 1c4e0: 441c add r4, r3 + 1c5c0: 441c add r4, r3 if(!globals.getStorageDebug()){ - 1c4e2: 07d3 lsls r3, r2, #31 - 1c4e4: d521 bpl.n 1c52a - 1c4e6: 2100 movs r1, #0 - 1c4e8: 4841 ldr r0, [pc, #260] ; (1c5f0 ) - 1c4ea: f010 f82d bl 2c548 - 1c4ee: 4841 ldr r0, [pc, #260] ; (1c5f4 ) - 1c4f0: f00d fcc0 bl 29e74 - 1c4f4: 4639 mov r1, r7 - 1c4f6: 4840 ldr r0, [pc, #256] ; (1c5f8 ) - 1c4f8: f010 f826 bl 2c548 - 1c4fc: 2101 movs r1, #1 - 1c4fe: 483f ldr r0, [pc, #252] ; (1c5fc ) - 1c500: f010 f822 bl 2c548 - 1c504: 2108 movs r1, #8 - 1c506: 483e ldr r0, [pc, #248] ; (1c600 ) - 1c508: f010 f81e bl 2c548 - 1c50c: 2101 movs r1, #1 - 1c50e: 483b ldr r0, [pc, #236] ; (1c5fc ) - 1c510: f010 f81a bl 2c548 - 1c514: 2108 movs r1, #8 - 1c516: 483b ldr r0, [pc, #236] ; (1c604 ) - 1c518: f010 f816 bl 2c548 - 1c51c: 2101 movs r1, #1 - 1c51e: 4837 ldr r0, [pc, #220] ; (1c5fc ) - 1c520: f010 f812 bl 2c548 + 1c5c2: 07d3 lsls r3, r2, #31 + 1c5c4: d521 bpl.n 1c60a + 1c5c6: 2100 movs r1, #0 + 1c5c8: 4841 ldr r0, [pc, #260] ; (1c6d0 ) + 1c5ca: f010 f831 bl 2c630 + 1c5ce: 4841 ldr r0, [pc, #260] ; (1c6d4 ) + 1c5d0: f00d fcc6 bl 29f60 + 1c5d4: 4639 mov r1, r7 + 1c5d6: 4840 ldr r0, [pc, #256] ; (1c6d8 ) + 1c5d8: f010 f82a bl 2c630 + 1c5dc: 2101 movs r1, #1 + 1c5de: 483f ldr r0, [pc, #252] ; (1c6dc ) + 1c5e0: f010 f826 bl 2c630 + 1c5e4: 2108 movs r1, #8 + 1c5e6: 483e ldr r0, [pc, #248] ; (1c6e0 ) + 1c5e8: f010 f822 bl 2c630 + 1c5ec: 2101 movs r1, #1 + 1c5ee: 483b ldr r0, [pc, #236] ; (1c6dc ) + 1c5f0: f010 f81e bl 2c630 + 1c5f4: 2108 movs r1, #8 + 1c5f6: 483b ldr r0, [pc, #236] ; (1c6e4 ) + 1c5f8: f010 f81a bl 2c630 + 1c5fc: 2101 movs r1, #1 + 1c5fe: 4837 ldr r0, [pc, #220] ; (1c6dc ) + 1c600: f010 f816 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1c524: f00e f826 bl 2a574 - 1c528: 62b0 str r0, [r6, #40] ; 0x28 - 1c52a: 210e movs r1, #14 - 1c52c: 4836 ldr r0, [pc, #216] ; (1c608 ) - 1c52e: f010 f80b bl 2c548 + 1c604: f00e f82a bl 2a65c + 1c608: 62b0 str r0, [r6, #40] ; 0x28 + 1c60a: 210e movs r1, #14 + 1c60c: 4836 ldr r0, [pc, #216] ; (1c6e8 ) + 1c60e: f010 f80f bl 2c630 unsigned long n = sizeof(value)+start; - 1c532: 1cef adds r7, r5, #3 - 1c534: 1c6b adds r3, r5, #1 - 1c536: f8df 80e0 ldr.w r8, [pc, #224] ; 1c618 + 1c612: 1cef adds r7, r5, #3 + 1c614: 1c6b adds r3, r5, #1 + 1c616: f8df 80e0 ldr.w r8, [pc, #224] ; 1c6f8 STORAGE.put(address,file); - 1c53a: f106 0910 add.w r9, r6, #16 - 1c53e: 1b2d subs r5, r5, r4 - 1c540: 429f cmp r7, r3 - 1c542: bf34 ite cc - 1c544: 2701 movcc r7, #1 - 1c546: 2703 movcs r7, #3 + 1c61a: f106 0910 add.w r9, r6, #16 + 1c61e: 1b2d subs r5, r5, r4 + 1c620: 429f cmp r7, r3 + 1c622: bf34 ite cc + 1c624: 2701 movcc r7, #1 + 1c626: 2703 movcs r7, #3 unsigned long updatedBytes = 0; - 1c548: f04f 0b00 mov.w fp, #0 - 1c54c: f8d8 3000 ldr.w r3, [r8] - 1c550: 4427 add r7, r4 - 1c552: 6233 str r3, [r6, #32] + 1c628: f04f 0b00 mov.w fp, #0 + 1c62c: f8d8 3000 ldr.w r3, [r8] + 1c630: 4427 add r7, r4 + 1c632: 6233 str r3, [r6, #32] for(i=start;i - 1c566: f89d 300f ldrb.w r3, [sp, #15] - 1c56a: 9901 ldr r1, [sp, #4] - 1c56c: 4298 cmp r0, r3 - 1c56e: d135 bne.n 1c5dc - 1c570: f8d8 3000 ldr.w r3, [r8] + 1c63a: 4648 mov r0, r9 + 1c63c: 9101 str r1, [sp, #4] + 1c63e: f88d 300f strb.w r3, [sp, #15] + 1c642: f008 fdf9 bl 25238 + 1c646: f89d 300f ldrb.w r3, [sp, #15] + 1c64a: 9901 ldr r1, [sp, #4] + 1c64c: 4298 cmp r0, r3 + 1c64e: d135 bne.n 1c6bc + 1c650: f8d8 3000 ldr.w r3, [r8] operator unsigned long () const { return millis() - ms; } - 1c574: 6a32 ldr r2, [r6, #32] - 1c576: 1a9b subs r3, r3, r2 + 1c654: 6a32 ldr r2, [r6, #32] + 1c656: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1c578: 2bf9 cmp r3, #249 ; 0xf9 - 1c57a: d827 bhi.n 1c5cc + 1c658: 2bf9 cmp r3, #249 ; 0xf9 + 1c65a: d827 bhi.n 1c6ac for(i=start;i - 1c580: 2101 movs r1, #1 - 1c582: 4822 ldr r0, [pc, #136] ; (1c60c ) - 1c584: f00f ffe0 bl 2c548 - 1c588: 481a ldr r0, [pc, #104] ; (1c5f4 ) - 1c58a: f00d fc73 bl 29e74 - 1c58e: 2109 movs r1, #9 - 1c590: 481f ldr r0, [pc, #124] ; (1c610 ) - 1c592: f00f ffd9 bl 2c548 - 1c596: 2101 movs r1, #1 - 1c598: 4818 ldr r0, [pc, #96] ; (1c5fc ) - 1c59a: f00f ffd5 bl 2c548 + 1c65c: 42bc cmp r4, r7 + 1c65e: d1e9 bne.n 1c634 + 1c660: 2101 movs r1, #1 + 1c662: 4822 ldr r0, [pc, #136] ; (1c6ec ) + 1c664: f00f ffe4 bl 2c630 + 1c668: 481a ldr r0, [pc, #104] ; (1c6d4 ) + 1c66a: f00d fc79 bl 29f60 + 1c66e: 2109 movs r1, #9 + 1c670: 481f ldr r0, [pc, #124] ; (1c6f0 ) + 1c672: f00f ffdd bl 2c630 + 1c676: 2101 movs r1, #1 + 1c678: 4818 ldr r0, [pc, #96] ; (1c6dc ) + 1c67a: f00f ffd9 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1c59e: 2300 movs r3, #0 - 1c5a0: 220a movs r2, #10 - 1c5a2: 4659 mov r1, fp - 1c5a4: 4813 ldr r0, [pc, #76] ; (1c5f4 ) - 1c5a6: f00d fc81 bl 29eac - 1c5aa: 2101 movs r1, #1 - 1c5ac: 4813 ldr r0, [pc, #76] ; (1c5fc ) - 1c5ae: f00f ffcb bl 2c548 - 1c5b2: 2105 movs r1, #5 - 1c5b4: 4817 ldr r0, [pc, #92] ; (1c614 ) - 1c5b6: f00f ffc7 bl 2c548 + 1c67e: 2300 movs r3, #0 + 1c680: 220a movs r2, #10 + 1c682: 4659 mov r1, fp + 1c684: 4813 ldr r0, [pc, #76] ; (1c6d4 ) + 1c686: f00d fc87 bl 29f98 + 1c68a: 2101 movs r1, #1 + 1c68c: 4813 ldr r0, [pc, #76] ; (1c6dc ) + 1c68e: f00f ffcf bl 2c630 + 1c692: 2105 movs r1, #5 + 1c694: 4817 ldr r0, [pc, #92] ; (1c6f4 ) + 1c696: f00f ffcb bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1c5ba: 480e ldr r0, [pc, #56] ; (1c5f4 ) - 1c5bc: f00d fc5a bl 29e74 + 1c69a: 480e ldr r0, [pc, #56] ; (1c6d4 ) + 1c69c: f00d fc60 bl 29f60 debugStopTiming(); - 1c5c0: 4650 mov r0, sl - 1c5c2: f7ff fcf1 bl 1bfa8 - } - 1c5c6: b005 add sp, #20 - 1c5c8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1c5cc: 2101 movs r1, #1 - 1c5ce: 480f ldr r0, [pc, #60] ; (1c60c ) - 1c5d0: f00f ffba bl 2c548 - 1c5d4: f8d8 3000 ldr.w r3, [r8] + 1c6a0: 4650 mov r0, sl + 1c6a2: f7ff fcf1 bl 1c088 + } + 1c6a6: b005 add sp, #20 + 1c6a8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1c6ac: 2101 movs r1, #1 + 1c6ae: 480f ldr r0, [pc, #60] ; (1c6ec ) + 1c6b0: f00f ffbe bl 2c630 + 1c6b4: f8d8 3000 ldr.w r3, [r8] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 1c5d8: 6233 str r3, [r6, #32] - 1c5da: e7cf b.n 1c57c + 1c6b8: 6233 str r3, [r6, #32] + 1c6ba: e7cf b.n 1c65c write(addr, &value, 1); - 1c5dc: 2301 movs r3, #1 - 1c5de: f10d 020f add.w r2, sp, #15 - 1c5e2: 4648 mov r0, r9 + 1c6bc: 2301 movs r3, #1 + 1c6be: f10d 020f add.w r2, sp, #15 + 1c6c2: 4648 mov r0, r9 updatedBytes += update(i,*p++); - 1c5e4: f10b 0b01 add.w fp, fp, #1 + 1c6c4: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 1c5e8: f008 fca6 bl 24f38 + 1c6c8: f008 fcac bl 25024 return 1; - 1c5ec: e7c0 b.n 1c570 - 1c5ee: bf00 nop - 1c5f0: 20003c58 .word 0x20003c58 - 1c5f4: 20004ba8 .word 0x20004ba8 - 1c5f8: 200036c8 .word 0x200036c8 - 1c5fc: 200023ec .word 0x200023ec - 1c600: 20003e04 .word 0x20003e04 - 1c604: 20003e10 .word 0x20003e10 - 1c608: 20003e1c .word 0x20003e1c - 1c60c: 200030b8 .word 0x200030b8 - 1c610: 20003e2c .word 0x20003e2c - 1c614: 20002448 .word 0x20002448 - 1c618: 2000bae8 .word 0x2000bae8 - -0001c61c : + 1c6cc: e7c0 b.n 1c650 + 1c6ce: bf00 nop + 1c6d0: 20003d18 .word 0x20003d18 + 1c6d4: 20004c68 .word 0x20004c68 + 1c6d8: 20003788 .word 0x20003788 + 1c6dc: 200023ec .word 0x200023ec + 1c6e0: 20003ec4 .word 0x20003ec4 + 1c6e4: 20003ed0 .word 0x20003ed0 + 1c6e8: 20003edc .word 0x20003edc + 1c6ec: 20003150 .word 0x20003150 + 1c6f0: 20003eec .word 0x20003eec + 1c6f4: 20002448 .word 0x20002448 + 1c6f8: 2000bb08 .word 0x2000bb08 + +0001c6fc : void savePotCalibration(uint16_t index){ - 1c61c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1c620: 4606 mov r6, r0 - 1c622: b085 sub sp, #20 + 1c6fc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1c700: 4606 mov r6, r0 + 1c702: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1c624: f7fe f8dc bl 1a7e0 + 1c704: f7fe f8dc bl 1a8c0 address += getPotCalibrationOffset(index); - 1c628: 2100 movs r1, #0 + 1c708: 2100 movs r1, #0 uint16_t address = getGlobalOffset(); - 1c62a: 4604 mov r4, r0 + 1c70a: 4604 mov r4, r0 address += getPotCalibrationOffset(index); - 1c62c: 4630 mov r0, r6 - 1c62e: f7fe f923 bl 1a878 - 1c632: 68f3 ldr r3, [r6, #12] + 1c70c: 4630 mov r0, r6 + 1c70e: f7fe f923 bl 1a958 + 1c712: 68f3 ldr r3, [r6, #12] storage.set(address, store.global.potCalibration[index]); - 1c634: 4632 mov r2, r6 + 1c714: 4632 mov r2, r6 uint16_t address = getGlobalOffset(); - 1c636: b2a4 uxth r4, r4 - 1c638: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1c716: b2a4 uxth r4, r4 + 1c718: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 storage.set(address, store.global.potCalibration[index]); - 1c63c: f241 45e6 movw r5, #5350 ; 0x14e6 - 1c640: f852 ab0c ldr.w sl, [r2], #12 + 1c71c: f241 45e6 movw r5, #5350 ; 0x14e6 + 1c720: f852 ab0c ldr.w sl, [r2], #12 address += getPotCalibrationOffset(index); - 1c644: 4404 add r4, r0 + 1c724: 4404 add r4, r0 if(!globals.getStorageDebug()){ - 1c646: 07db lsls r3, r3, #31 - 1c648: b2a4 uxth r4, r4 + 1c726: 07db lsls r3, r3, #31 + 1c728: b2a4 uxth r4, r4 storage.set(address, store.global.potCalibration[index]); - 1c64a: 4455 add r5, sl - 1c64c: 9200 str r2, [sp, #0] - 1c64e: d521 bpl.n 1c694 - 1c650: 2100 movs r1, #0 - 1c652: 4846 ldr r0, [pc, #280] ; (1c76c ) - 1c654: f00f ff78 bl 2c548 - 1c658: 4845 ldr r0, [pc, #276] ; (1c770 ) - 1c65a: f00d fc0b bl 29e74 - 1c65e: 2103 movs r1, #3 - 1c660: 4844 ldr r0, [pc, #272] ; (1c774 ) - 1c662: f00f ff71 bl 2c548 - 1c666: 2101 movs r1, #1 - 1c668: 4843 ldr r0, [pc, #268] ; (1c778 ) - 1c66a: f00f ff6d bl 2c548 - 1c66e: 2108 movs r1, #8 - 1c670: 4842 ldr r0, [pc, #264] ; (1c77c ) - 1c672: f00f ff69 bl 2c548 - 1c676: 2101 movs r1, #1 - 1c678: 483f ldr r0, [pc, #252] ; (1c778 ) - 1c67a: f00f ff65 bl 2c548 - 1c67e: 2108 movs r1, #8 - 1c680: 483f ldr r0, [pc, #252] ; (1c780 ) - 1c682: f00f ff61 bl 2c548 - 1c686: 2101 movs r1, #1 - 1c688: 483b ldr r0, [pc, #236] ; (1c778 ) - 1c68a: f00f ff5d bl 2c548 + 1c72a: 4455 add r5, sl + 1c72c: 9200 str r2, [sp, #0] + 1c72e: d521 bpl.n 1c774 + 1c730: 2100 movs r1, #0 + 1c732: 4846 ldr r0, [pc, #280] ; (1c84c ) + 1c734: f00f ff7c bl 2c630 + 1c738: 4845 ldr r0, [pc, #276] ; (1c850 ) + 1c73a: f00d fc11 bl 29f60 + 1c73e: 2103 movs r1, #3 + 1c740: 4844 ldr r0, [pc, #272] ; (1c854 ) + 1c742: f00f ff75 bl 2c630 + 1c746: 2101 movs r1, #1 + 1c748: 4843 ldr r0, [pc, #268] ; (1c858 ) + 1c74a: f00f ff71 bl 2c630 + 1c74e: 2108 movs r1, #8 + 1c750: 4842 ldr r0, [pc, #264] ; (1c85c ) + 1c752: f00f ff6d bl 2c630 + 1c756: 2101 movs r1, #1 + 1c758: 483f ldr r0, [pc, #252] ; (1c858 ) + 1c75a: f00f ff69 bl 2c630 + 1c75e: 2108 movs r1, #8 + 1c760: 483f ldr r0, [pc, #252] ; (1c860 ) + 1c762: f00f ff65 bl 2c630 + 1c766: 2101 movs r1, #1 + 1c768: 483b ldr r0, [pc, #236] ; (1c858 ) + 1c76a: f00f ff61 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1c68e: f00d ff71 bl 2a574 - 1c692: 62b0 str r0, [r6, #40] ; 0x28 - 1c694: 210e movs r1, #14 - 1c696: 483b ldr r0, [pc, #236] ; (1c784 ) - 1c698: f00f ff56 bl 2c548 - 1c69c: f8df 80f4 ldr.w r8, [pc, #244] ; 1c794 - 1c6a0: 1c63 adds r3, r4, #1 + 1c76e: f00d ff75 bl 2a65c + 1c772: 62b0 str r0, [r6, #40] ; 0x28 + 1c774: 210e movs r1, #14 + 1c776: 483b ldr r0, [pc, #236] ; (1c864 ) + 1c778: f00f ff5a bl 2c630 + 1c77c: f8df 80f4 ldr.w r8, [pc, #244] ; 1c874 + 1c780: 1c63 adds r3, r4, #1 unsigned long n = sizeof(value)+start; - 1c6a2: 1da7 adds r7, r4, #6 + 1c782: 1da7 adds r7, r4, #6 STORAGE.put(address,file); - 1c6a4: f106 0910 add.w r9, r6, #16 + 1c784: f106 0910 add.w r9, r6, #16 unsigned long updatedBytes = 0; - 1c6a8: f04f 0b00 mov.w fp, #0 - 1c6ac: 429f cmp r7, r3 - 1c6ae: bf34 ite cc - 1c6b0: 2701 movcc r7, #1 - 1c6b2: 2706 movcs r7, #6 - 1c6b4: f8d8 3000 ldr.w r3, [r8] - 1c6b8: 6233 str r3, [r6, #32] - 1c6ba: e00c b.n 1c6d6 - 1c6bc: f8d8 3000 ldr.w r3, [r8] + 1c788: f04f 0b00 mov.w fp, #0 + 1c78c: 429f cmp r7, r3 + 1c78e: bf34 ite cc + 1c790: 2701 movcc r7, #1 + 1c792: 2706 movcs r7, #6 + 1c794: f8d8 3000 ldr.w r3, [r8] + 1c798: 6233 str r3, [r6, #32] + 1c79a: e00c b.n 1c7b6 + 1c79c: f8d8 3000 ldr.w r3, [r8] for(i=start;i=250){ - 1c6c6: 2bf9 cmp r3, #249 ; 0xf9 - 1c6c8: d81b bhi.n 1c702 + 1c7a6: 2bf9 cmp r3, #249 ; 0xf9 + 1c7a8: d81b bhi.n 1c7e2 for(i=start;i + 1c7aa: f241 43e6 movw r3, #5350 ; 0x14e6 + 1c7ae: 1b5b subs r3, r3, r5 + 1c7b0: 4453 add r3, sl + 1c7b2: 19db adds r3, r3, r7 + 1c7b4: d022 beq.n 1c7fc updatedBytes += update(i,*p++); - 1c6d6: f815 3b01 ldrb.w r3, [r5], #1 + 1c7b6: f815 3b01 ldrb.w r3, [r5], #1 if(read(addr) != value){ - 1c6da: 4621 mov r1, r4 - 1c6dc: 4648 mov r0, r9 - 1c6de: f88d 300f strb.w r3, [sp, #15] - 1c6e2: f008 fd33 bl 2514c - 1c6e6: f89d 300f ldrb.w r3, [sp, #15] - 1c6ea: 4298 cmp r0, r3 - 1c6ec: d0e6 beq.n 1c6bc + 1c7ba: 4621 mov r1, r4 + 1c7bc: 4648 mov r0, r9 + 1c7be: f88d 300f strb.w r3, [sp, #15] + 1c7c2: f008 fd39 bl 25238 + 1c7c6: f89d 300f ldrb.w r3, [sp, #15] + 1c7ca: 4298 cmp r0, r3 + 1c7cc: d0e6 beq.n 1c79c write(addr, &value, 1); - 1c6ee: 4621 mov r1, r4 - 1c6f0: 2301 movs r3, #1 - 1c6f2: f10d 020f add.w r2, sp, #15 - 1c6f6: 4648 mov r0, r9 + 1c7ce: 4621 mov r1, r4 + 1c7d0: 2301 movs r3, #1 + 1c7d2: f10d 020f add.w r2, sp, #15 + 1c7d6: 4648 mov r0, r9 updatedBytes += update(i,*p++); - 1c6f8: f10b 0b01 add.w fp, fp, #1 + 1c7d8: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 1c6fc: f008 fc1c bl 24f38 + 1c7dc: f008 fc22 bl 25024 return 1; - 1c700: e7dc b.n 1c6bc - 1c702: 2101 movs r1, #1 - 1c704: 4820 ldr r0, [pc, #128] ; (1c788 ) - 1c706: f00f ff1f bl 2c548 - 1c70a: f8d8 3000 ldr.w r3, [r8] + 1c7e0: e7dc b.n 1c79c + 1c7e2: 2101 movs r1, #1 + 1c7e4: 4820 ldr r0, [pc, #128] ; (1c868 ) + 1c7e6: f00f ff23 bl 2c630 + 1c7ea: f8d8 3000 ldr.w r3, [r8] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 1c70e: 6233 str r3, [r6, #32] + 1c7ee: 6233 str r3, [r6, #32] for(i=start;i - 1c71c: 2101 movs r1, #1 - 1c71e: 481a ldr r0, [pc, #104] ; (1c788 ) - 1c720: 9301 str r3, [sp, #4] - 1c722: f00f ff11 bl 2c548 - 1c726: 4812 ldr r0, [pc, #72] ; (1c770 ) - 1c728: f00d fba4 bl 29e74 - 1c72c: 2109 movs r1, #9 - 1c72e: 4817 ldr r0, [pc, #92] ; (1c78c ) - 1c730: f00f ff0a bl 2c548 - 1c734: 2101 movs r1, #1 - 1c736: 4810 ldr r0, [pc, #64] ; (1c778 ) - 1c738: f00f ff06 bl 2c548 + 1c7f0: f241 43e6 movw r3, #5350 ; 0x14e6 + 1c7f4: 1b5b subs r3, r3, r5 + 1c7f6: 4453 add r3, sl + 1c7f8: 19db adds r3, r3, r7 + 1c7fa: d1dc bne.n 1c7b6 + 1c7fc: 2101 movs r1, #1 + 1c7fe: 481a ldr r0, [pc, #104] ; (1c868 ) + 1c800: 9301 str r3, [sp, #4] + 1c802: f00f ff15 bl 2c630 + 1c806: 4812 ldr r0, [pc, #72] ; (1c850 ) + 1c808: f00d fbaa bl 29f60 + 1c80c: 2109 movs r1, #9 + 1c80e: 4817 ldr r0, [pc, #92] ; (1c86c ) + 1c810: f00f ff0e bl 2c630 + 1c814: 2101 movs r1, #1 + 1c816: 4810 ldr r0, [pc, #64] ; (1c858 ) + 1c818: f00f ff0a bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1c73c: 9b01 ldr r3, [sp, #4] - 1c73e: 220a movs r2, #10 - 1c740: 4659 mov r1, fp - 1c742: 480b ldr r0, [pc, #44] ; (1c770 ) - 1c744: f00d fbb2 bl 29eac - 1c748: 2101 movs r1, #1 - 1c74a: 480b ldr r0, [pc, #44] ; (1c778 ) - 1c74c: f00f fefc bl 2c548 - 1c750: 2105 movs r1, #5 - 1c752: 480f ldr r0, [pc, #60] ; (1c790 ) - 1c754: f00f fef8 bl 2c548 + 1c81c: 9b01 ldr r3, [sp, #4] + 1c81e: 220a movs r2, #10 + 1c820: 4659 mov r1, fp + 1c822: 480b ldr r0, [pc, #44] ; (1c850 ) + 1c824: f00d fbb8 bl 29f98 + 1c828: 2101 movs r1, #1 + 1c82a: 480b ldr r0, [pc, #44] ; (1c858 ) + 1c82c: f00f ff00 bl 2c630 + 1c830: 2105 movs r1, #5 + 1c832: 480f ldr r0, [pc, #60] ; (1c870 ) + 1c834: f00f fefc bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1c758: 4805 ldr r0, [pc, #20] ; (1c770 ) - 1c75a: f00d fb8b bl 29e74 + 1c838: 4805 ldr r0, [pc, #20] ; (1c850 ) + 1c83a: f00d fb91 bl 29f60 debugStopTiming(); - 1c75e: 9800 ldr r0, [sp, #0] - 1c760: f7ff fc22 bl 1bfa8 - } - 1c764: b005 add sp, #20 - 1c766: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1c76a: bf00 nop - 1c76c: 20003c58 .word 0x20003c58 - 1c770: 20004ba8 .word 0x20004ba8 - 1c774: 200036c8 .word 0x200036c8 - 1c778: 200023ec .word 0x200023ec - 1c77c: 20003e04 .word 0x20003e04 - 1c780: 20003e10 .word 0x20003e10 - 1c784: 20003e1c .word 0x20003e1c - 1c788: 200030b8 .word 0x200030b8 - 1c78c: 20003e2c .word 0x20003e2c - 1c790: 20002448 .word 0x20002448 - 1c794: 2000bae8 .word 0x2000bae8 - -0001c798 : + 1c83e: 9800 ldr r0, [sp, #0] + 1c840: f7ff fc22 bl 1c088 + } + 1c844: b005 add sp, #20 + 1c846: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1c84a: bf00 nop + 1c84c: 20003d18 .word 0x20003d18 + 1c850: 20004c68 .word 0x20004c68 + 1c854: 20003788 .word 0x20003788 + 1c858: 200023ec .word 0x200023ec + 1c85c: 20003ec4 .word 0x20003ec4 + 1c860: 20003ed0 .word 0x20003ed0 + 1c864: 20003edc .word 0x20003edc + 1c868: 20003150 .word 0x20003150 + 1c86c: 20003eec .word 0x20003eec + 1c870: 20002448 .word 0x20002448 + 1c874: 2000bb08 .word 0x2000bb08 + +0001c878 : void saveAuxJack(uint8_t index){ - 1c798: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1c79c: 4606 mov r6, r0 - 1c79e: b085 sub sp, #20 + 1c878: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1c87c: 4606 mov r6, r0 + 1c87e: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1c7a0: f7fe f81e bl 1a7e0 + 1c880: f7fe f81e bl 1a8c0 address += getAuxJackOffset(index); - 1c7a4: 2100 movs r1, #0 + 1c884: 2100 movs r1, #0 uint16_t address = getGlobalOffset(); - 1c7a6: 4604 mov r4, r0 + 1c886: 4604 mov r4, r0 address += getAuxJackOffset(index); - 1c7a8: 4630 mov r0, r6 - 1c7aa: f7fe f86d bl 1a888 - 1c7ae: 68f3 ldr r3, [r6, #12] + 1c888: 4630 mov r0, r6 + 1c88a: f7fe f86d bl 1a968 + 1c88e: 68f3 ldr r3, [r6, #12] storage.set(address, store.global.auxJacks[index]); - 1c7b0: 4632 mov r2, r6 + 1c890: 4632 mov r2, r6 uint16_t address = getGlobalOffset(); - 1c7b2: b2a4 uxth r4, r4 - 1c7b4: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1c892: b2a4 uxth r4, r4 + 1c894: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 storage.set(address, store.global.auxJacks[index]); - 1c7b8: f241 45ec movw r5, #5356 ; 0x14ec - 1c7bc: f852 ab0c ldr.w sl, [r2], #12 + 1c898: f241 45ec movw r5, #5356 ; 0x14ec + 1c89c: f852 ab0c ldr.w sl, [r2], #12 address += getAuxJackOffset(index); - 1c7c0: 4404 add r4, r0 + 1c8a0: 4404 add r4, r0 if(!globals.getStorageDebug()){ - 1c7c2: 07db lsls r3, r3, #31 - 1c7c4: b2a4 uxth r4, r4 + 1c8a2: 07db lsls r3, r3, #31 + 1c8a4: b2a4 uxth r4, r4 storage.set(address, store.global.auxJacks[index]); - 1c7c6: 4455 add r5, sl - 1c7c8: 9200 str r2, [sp, #0] - 1c7ca: d521 bpl.n 1c810 - 1c7cc: 2100 movs r1, #0 - 1c7ce: 4846 ldr r0, [pc, #280] ; (1c8e8 ) - 1c7d0: f00f feba bl 2c548 - 1c7d4: 4845 ldr r0, [pc, #276] ; (1c8ec ) - 1c7d6: f00d fb4d bl 29e74 - 1c7da: 2103 movs r1, #3 - 1c7dc: 4844 ldr r0, [pc, #272] ; (1c8f0 ) - 1c7de: f00f feb3 bl 2c548 - 1c7e2: 2101 movs r1, #1 - 1c7e4: 4843 ldr r0, [pc, #268] ; (1c8f4 ) - 1c7e6: f00f feaf bl 2c548 - 1c7ea: 2108 movs r1, #8 - 1c7ec: 4842 ldr r0, [pc, #264] ; (1c8f8 ) - 1c7ee: f00f feab bl 2c548 - 1c7f2: 2101 movs r1, #1 - 1c7f4: 483f ldr r0, [pc, #252] ; (1c8f4 ) - 1c7f6: f00f fea7 bl 2c548 - 1c7fa: 2108 movs r1, #8 - 1c7fc: 483f ldr r0, [pc, #252] ; (1c8fc ) - 1c7fe: f00f fea3 bl 2c548 - 1c802: 2101 movs r1, #1 - 1c804: 483b ldr r0, [pc, #236] ; (1c8f4 ) - 1c806: f00f fe9f bl 2c548 + 1c8a6: 4455 add r5, sl + 1c8a8: 9200 str r2, [sp, #0] + 1c8aa: d521 bpl.n 1c8f0 + 1c8ac: 2100 movs r1, #0 + 1c8ae: 4846 ldr r0, [pc, #280] ; (1c9c8 ) + 1c8b0: f00f febe bl 2c630 + 1c8b4: 4845 ldr r0, [pc, #276] ; (1c9cc ) + 1c8b6: f00d fb53 bl 29f60 + 1c8ba: 2103 movs r1, #3 + 1c8bc: 4844 ldr r0, [pc, #272] ; (1c9d0 ) + 1c8be: f00f feb7 bl 2c630 + 1c8c2: 2101 movs r1, #1 + 1c8c4: 4843 ldr r0, [pc, #268] ; (1c9d4 ) + 1c8c6: f00f feb3 bl 2c630 + 1c8ca: 2108 movs r1, #8 + 1c8cc: 4842 ldr r0, [pc, #264] ; (1c9d8 ) + 1c8ce: f00f feaf bl 2c630 + 1c8d2: 2101 movs r1, #1 + 1c8d4: 483f ldr r0, [pc, #252] ; (1c9d4 ) + 1c8d6: f00f feab bl 2c630 + 1c8da: 2108 movs r1, #8 + 1c8dc: 483f ldr r0, [pc, #252] ; (1c9dc ) + 1c8de: f00f fea7 bl 2c630 + 1c8e2: 2101 movs r1, #1 + 1c8e4: 483b ldr r0, [pc, #236] ; (1c9d4 ) + 1c8e6: f00f fea3 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1c80a: f00d feb3 bl 2a574 - 1c80e: 62b0 str r0, [r6, #40] ; 0x28 - 1c810: 210e movs r1, #14 - 1c812: 483b ldr r0, [pc, #236] ; (1c900 ) - 1c814: f00f fe98 bl 2c548 - 1c818: f8df 80f4 ldr.w r8, [pc, #244] ; 1c910 - 1c81c: 1c63 adds r3, r4, #1 + 1c8ea: f00d feb7 bl 2a65c + 1c8ee: 62b0 str r0, [r6, #40] ; 0x28 + 1c8f0: 210e movs r1, #14 + 1c8f2: 483b ldr r0, [pc, #236] ; (1c9e0 ) + 1c8f4: f00f fe9c bl 2c630 + 1c8f8: f8df 80f4 ldr.w r8, [pc, #244] ; 1c9f0 + 1c8fc: 1c63 adds r3, r4, #1 unsigned long n = sizeof(value)+start; - 1c81e: 1da7 adds r7, r4, #6 + 1c8fe: 1da7 adds r7, r4, #6 STORAGE.put(address,file); - 1c820: f106 0910 add.w r9, r6, #16 + 1c900: f106 0910 add.w r9, r6, #16 unsigned long updatedBytes = 0; - 1c824: f04f 0b00 mov.w fp, #0 - 1c828: 429f cmp r7, r3 - 1c82a: bf34 ite cc - 1c82c: 2701 movcc r7, #1 - 1c82e: 2706 movcs r7, #6 - 1c830: f8d8 3000 ldr.w r3, [r8] - 1c834: 6233 str r3, [r6, #32] - 1c836: e00c b.n 1c852 - 1c838: f8d8 3000 ldr.w r3, [r8] + 1c904: f04f 0b00 mov.w fp, #0 + 1c908: 429f cmp r7, r3 + 1c90a: bf34 ite cc + 1c90c: 2701 movcc r7, #1 + 1c90e: 2706 movcs r7, #6 + 1c910: f8d8 3000 ldr.w r3, [r8] + 1c914: 6233 str r3, [r6, #32] + 1c916: e00c b.n 1c932 + 1c918: f8d8 3000 ldr.w r3, [r8] for(i=start;i=250){ - 1c842: 2bf9 cmp r3, #249 ; 0xf9 - 1c844: d81b bhi.n 1c87e + 1c922: 2bf9 cmp r3, #249 ; 0xf9 + 1c924: d81b bhi.n 1c95e for(i=start;i + 1c926: f241 43ec movw r3, #5356 ; 0x14ec + 1c92a: 1b5b subs r3, r3, r5 + 1c92c: 4453 add r3, sl + 1c92e: 19db adds r3, r3, r7 + 1c930: d022 beq.n 1c978 updatedBytes += update(i,*p++); - 1c852: f815 3b01 ldrb.w r3, [r5], #1 + 1c932: f815 3b01 ldrb.w r3, [r5], #1 if(read(addr) != value){ - 1c856: 4621 mov r1, r4 - 1c858: 4648 mov r0, r9 - 1c85a: f88d 300f strb.w r3, [sp, #15] - 1c85e: f008 fc75 bl 2514c - 1c862: f89d 300f ldrb.w r3, [sp, #15] - 1c866: 4298 cmp r0, r3 - 1c868: d0e6 beq.n 1c838 + 1c936: 4621 mov r1, r4 + 1c938: 4648 mov r0, r9 + 1c93a: f88d 300f strb.w r3, [sp, #15] + 1c93e: f008 fc7b bl 25238 + 1c942: f89d 300f ldrb.w r3, [sp, #15] + 1c946: 4298 cmp r0, r3 + 1c948: d0e6 beq.n 1c918 write(addr, &value, 1); - 1c86a: 4621 mov r1, r4 - 1c86c: 2301 movs r3, #1 - 1c86e: f10d 020f add.w r2, sp, #15 - 1c872: 4648 mov r0, r9 + 1c94a: 4621 mov r1, r4 + 1c94c: 2301 movs r3, #1 + 1c94e: f10d 020f add.w r2, sp, #15 + 1c952: 4648 mov r0, r9 updatedBytes += update(i,*p++); - 1c874: f10b 0b01 add.w fp, fp, #1 + 1c954: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 1c878: f008 fb5e bl 24f38 + 1c958: f008 fb64 bl 25024 return 1; - 1c87c: e7dc b.n 1c838 - 1c87e: 2101 movs r1, #1 - 1c880: 4820 ldr r0, [pc, #128] ; (1c904 ) - 1c882: f00f fe61 bl 2c548 - 1c886: f8d8 3000 ldr.w r3, [r8] + 1c95c: e7dc b.n 1c918 + 1c95e: 2101 movs r1, #1 + 1c960: 4820 ldr r0, [pc, #128] ; (1c9e4 ) + 1c962: f00f fe65 bl 2c630 + 1c966: f8d8 3000 ldr.w r3, [r8] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 1c88a: 6233 str r3, [r6, #32] + 1c96a: 6233 str r3, [r6, #32] for(i=start;i - 1c898: 2101 movs r1, #1 - 1c89a: 481a ldr r0, [pc, #104] ; (1c904 ) - 1c89c: 9301 str r3, [sp, #4] - 1c89e: f00f fe53 bl 2c548 - 1c8a2: 4812 ldr r0, [pc, #72] ; (1c8ec ) - 1c8a4: f00d fae6 bl 29e74 - 1c8a8: 2109 movs r1, #9 - 1c8aa: 4817 ldr r0, [pc, #92] ; (1c908 ) - 1c8ac: f00f fe4c bl 2c548 - 1c8b0: 2101 movs r1, #1 - 1c8b2: 4810 ldr r0, [pc, #64] ; (1c8f4 ) - 1c8b4: f00f fe48 bl 2c548 + 1c96c: f241 43ec movw r3, #5356 ; 0x14ec + 1c970: 1b5b subs r3, r3, r5 + 1c972: 4453 add r3, sl + 1c974: 19db adds r3, r3, r7 + 1c976: d1dc bne.n 1c932 + 1c978: 2101 movs r1, #1 + 1c97a: 481a ldr r0, [pc, #104] ; (1c9e4 ) + 1c97c: 9301 str r3, [sp, #4] + 1c97e: f00f fe57 bl 2c630 + 1c982: 4812 ldr r0, [pc, #72] ; (1c9cc ) + 1c984: f00d faec bl 29f60 + 1c988: 2109 movs r1, #9 + 1c98a: 4817 ldr r0, [pc, #92] ; (1c9e8 ) + 1c98c: f00f fe50 bl 2c630 + 1c990: 2101 movs r1, #1 + 1c992: 4810 ldr r0, [pc, #64] ; (1c9d4 ) + 1c994: f00f fe4c bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1c8b8: 9b01 ldr r3, [sp, #4] - 1c8ba: 220a movs r2, #10 - 1c8bc: 4659 mov r1, fp - 1c8be: 480b ldr r0, [pc, #44] ; (1c8ec ) - 1c8c0: f00d faf4 bl 29eac - 1c8c4: 2101 movs r1, #1 - 1c8c6: 480b ldr r0, [pc, #44] ; (1c8f4 ) - 1c8c8: f00f fe3e bl 2c548 - 1c8cc: 2105 movs r1, #5 - 1c8ce: 480f ldr r0, [pc, #60] ; (1c90c ) - 1c8d0: f00f fe3a bl 2c548 + 1c998: 9b01 ldr r3, [sp, #4] + 1c99a: 220a movs r2, #10 + 1c99c: 4659 mov r1, fp + 1c99e: 480b ldr r0, [pc, #44] ; (1c9cc ) + 1c9a0: f00d fafa bl 29f98 + 1c9a4: 2101 movs r1, #1 + 1c9a6: 480b ldr r0, [pc, #44] ; (1c9d4 ) + 1c9a8: f00f fe42 bl 2c630 + 1c9ac: 2105 movs r1, #5 + 1c9ae: 480f ldr r0, [pc, #60] ; (1c9ec ) + 1c9b0: f00f fe3e bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1c8d4: 4805 ldr r0, [pc, #20] ; (1c8ec ) - 1c8d6: f00d facd bl 29e74 + 1c9b4: 4805 ldr r0, [pc, #20] ; (1c9cc ) + 1c9b6: f00d fad3 bl 29f60 debugStopTiming(); - 1c8da: 9800 ldr r0, [sp, #0] - 1c8dc: f7ff fb64 bl 1bfa8 - } - 1c8e0: b005 add sp, #20 - 1c8e2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1c8e6: bf00 nop - 1c8e8: 20003c58 .word 0x20003c58 - 1c8ec: 20004ba8 .word 0x20004ba8 - 1c8f0: 200036c8 .word 0x200036c8 - 1c8f4: 200023ec .word 0x200023ec - 1c8f8: 20003e04 .word 0x20003e04 - 1c8fc: 20003e10 .word 0x20003e10 - 1c900: 20003e1c .word 0x20003e1c - 1c904: 200030b8 .word 0x200030b8 - 1c908: 20003e2c .word 0x20003e2c - 1c90c: 20002448 .word 0x20002448 - 1c910: 2000bae8 .word 0x2000bae8 - -0001c914 : + 1c9ba: 9800 ldr r0, [sp, #0] + 1c9bc: f7ff fb64 bl 1c088 + } + 1c9c0: b005 add sp, #20 + 1c9c2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1c9c6: bf00 nop + 1c9c8: 20003d18 .word 0x20003d18 + 1c9cc: 20004c68 .word 0x20004c68 + 1c9d0: 20003788 .word 0x20003788 + 1c9d4: 200023ec .word 0x200023ec + 1c9d8: 20003ec4 .word 0x20003ec4 + 1c9dc: 20003ed0 .word 0x20003ed0 + 1c9e0: 20003edc .word 0x20003edc + 1c9e4: 20003150 .word 0x20003150 + 1c9e8: 20003eec .word 0x20003eec + 1c9ec: 20002448 .word 0x20002448 + 1c9f0: 2000bb08 .word 0x2000bb08 + +0001c9f4 : void saveTrigger(uint8_t index){ - 1c914: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1c918: 4606 mov r6, r0 - 1c91a: 460c mov r4, r1 - 1c91c: b085 sub sp, #20 + 1c9f4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1c9f8: 4606 mov r6, r0 + 1c9fa: 460c mov r4, r1 + 1c9fc: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1c91e: f7fd ff5f bl 1a7e0 + 1c9fe: f7fd ff5f bl 1a8c0 address += getTriggerOffset(index); - 1c922: 4621 mov r1, r4 + 1ca02: 4621 mov r1, r4 uint16_t address = getGlobalOffset(); - 1c924: 4605 mov r5, r0 + 1ca04: 4605 mov r5, r0 address += getTriggerOffset(index); - 1c926: 4630 mov r0, r6 - 1c928: f7fd ffbe bl 1a8a8 + 1ca06: 4630 mov r0, r6 + 1ca08: f7fd ffbe bl 1a988 storage.set(address, store.global.triggers[index]); - 1c92c: 46b3 mov fp, r6 - 1c92e: 00a4 lsls r4, r4, #2 - 1c930: f241 533a movw r3, #5434 ; 0x153a + 1ca0c: 46b3 mov fp, r6 + 1ca0e: 00a4 lsls r4, r4, #2 + 1ca10: f241 533a movw r3, #5434 ; 0x153a uint16_t address = getGlobalOffset(); - 1c934: b2ad uxth r5, r5 + 1ca14: b2ad uxth r5, r5 storage.set(address, store.global.triggers[index]); - 1c936: 4423 add r3, r4 - 1c938: f85b 4b0c ldr.w r4, [fp], #12 + 1ca16: 4423 add r3, r4 + 1ca18: f85b 4b0c ldr.w r4, [fp], #12 address += getTriggerOffset(index); - 1c93c: 4405 add r5, r0 + 1ca1c: 4405 add r5, r0 storage.set(address, store.global.triggers[index]); - 1c93e: 441c add r4, r3 - 1c940: 68f3 ldr r3, [r6, #12] + 1ca1e: 441c add r4, r3 + 1ca20: 68f3 ldr r3, [r6, #12] address += getTriggerOffset(index); - 1c942: b2ad uxth r5, r5 - 1c944: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1ca22: b2ad uxth r5, r5 + 1ca24: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1c948: 07db lsls r3, r3, #31 - 1c94a: d521 bpl.n 1c990 - 1c94c: 2100 movs r1, #0 - 1c94e: 4841 ldr r0, [pc, #260] ; (1ca54 ) - 1c950: f00f fdfa bl 2c548 - 1c954: 4840 ldr r0, [pc, #256] ; (1ca58 ) - 1c956: f00d fa8d bl 29e74 - 1c95a: 2103 movs r1, #3 - 1c95c: 483f ldr r0, [pc, #252] ; (1ca5c ) - 1c95e: f00f fdf3 bl 2c548 - 1c962: 2101 movs r1, #1 - 1c964: 483e ldr r0, [pc, #248] ; (1ca60 ) - 1c966: f00f fdef bl 2c548 - 1c96a: 2108 movs r1, #8 - 1c96c: 483d ldr r0, [pc, #244] ; (1ca64 ) - 1c96e: f00f fdeb bl 2c548 - 1c972: 2101 movs r1, #1 - 1c974: 483a ldr r0, [pc, #232] ; (1ca60 ) - 1c976: f00f fde7 bl 2c548 - 1c97a: 2108 movs r1, #8 - 1c97c: 483a ldr r0, [pc, #232] ; (1ca68 ) - 1c97e: f00f fde3 bl 2c548 - 1c982: 2101 movs r1, #1 - 1c984: 4836 ldr r0, [pc, #216] ; (1ca60 ) - 1c986: f00f fddf bl 2c548 + 1ca28: 07db lsls r3, r3, #31 + 1ca2a: d521 bpl.n 1ca70 + 1ca2c: 2100 movs r1, #0 + 1ca2e: 4841 ldr r0, [pc, #260] ; (1cb34 ) + 1ca30: f00f fdfe bl 2c630 + 1ca34: 4840 ldr r0, [pc, #256] ; (1cb38 ) + 1ca36: f00d fa93 bl 29f60 + 1ca3a: 2103 movs r1, #3 + 1ca3c: 483f ldr r0, [pc, #252] ; (1cb3c ) + 1ca3e: f00f fdf7 bl 2c630 + 1ca42: 2101 movs r1, #1 + 1ca44: 483e ldr r0, [pc, #248] ; (1cb40 ) + 1ca46: f00f fdf3 bl 2c630 + 1ca4a: 2108 movs r1, #8 + 1ca4c: 483d ldr r0, [pc, #244] ; (1cb44 ) + 1ca4e: f00f fdef bl 2c630 + 1ca52: 2101 movs r1, #1 + 1ca54: 483a ldr r0, [pc, #232] ; (1cb40 ) + 1ca56: f00f fdeb bl 2c630 + 1ca5a: 2108 movs r1, #8 + 1ca5c: 483a ldr r0, [pc, #232] ; (1cb48 ) + 1ca5e: f00f fde7 bl 2c630 + 1ca62: 2101 movs r1, #1 + 1ca64: 4836 ldr r0, [pc, #216] ; (1cb40 ) + 1ca66: f00f fde3 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1c98a: f00d fdf3 bl 2a574 - 1c98e: 62b0 str r0, [r6, #40] ; 0x28 - 1c990: 210e movs r1, #14 - 1c992: 4836 ldr r0, [pc, #216] ; (1ca6c ) - 1c994: f00f fdd8 bl 2c548 + 1ca6a: f00d fdf7 bl 2a65c + 1ca6e: 62b0 str r0, [r6, #40] ; 0x28 + 1ca70: 210e movs r1, #14 + 1ca72: 4836 ldr r0, [pc, #216] ; (1cb4c ) + 1ca74: f00f fddc bl 2c630 unsigned long n = sizeof(value)+start; - 1c998: 1d2f adds r7, r5, #4 - 1c99a: 1c6b adds r3, r5, #1 - 1c99c: f8df 80dc ldr.w r8, [pc, #220] ; 1ca7c + 1ca78: 1d2f adds r7, r5, #4 + 1ca7a: 1c6b adds r3, r5, #1 + 1ca7c: f8df 80dc ldr.w r8, [pc, #220] ; 1cb5c STORAGE.put(address,file); - 1c9a0: f106 0910 add.w r9, r6, #16 - 1c9a4: 1b2d subs r5, r5, r4 - 1c9a6: 429f cmp r7, r3 - 1c9a8: bf34 ite cc - 1c9aa: 2701 movcc r7, #1 - 1c9ac: 2704 movcs r7, #4 + 1ca80: f106 0910 add.w r9, r6, #16 + 1ca84: 1b2d subs r5, r5, r4 + 1ca86: 429f cmp r7, r3 + 1ca88: bf34 ite cc + 1ca8a: 2701 movcc r7, #1 + 1ca8c: 2704 movcs r7, #4 unsigned long updatedBytes = 0; - 1c9ae: f04f 0a00 mov.w sl, #0 - 1c9b2: f8d8 3000 ldr.w r3, [r8] - 1c9b6: 4427 add r7, r4 - 1c9b8: 6233 str r3, [r6, #32] + 1ca8e: f04f 0a00 mov.w sl, #0 + 1ca92: f8d8 3000 ldr.w r3, [r8] + 1ca96: 4427 add r7, r4 + 1ca98: 6233 str r3, [r6, #32] for(i=start;i - 1c9cc: f89d 300f ldrb.w r3, [sp, #15] - 1c9d0: 9901 ldr r1, [sp, #4] - 1c9d2: 4298 cmp r0, r3 - 1c9d4: d135 bne.n 1ca42 - 1c9d6: f8d8 3000 ldr.w r3, [r8] + 1caa0: 4648 mov r0, r9 + 1caa2: 9101 str r1, [sp, #4] + 1caa4: f88d 300f strb.w r3, [sp, #15] + 1caa8: f008 fbc6 bl 25238 + 1caac: f89d 300f ldrb.w r3, [sp, #15] + 1cab0: 9901 ldr r1, [sp, #4] + 1cab2: 4298 cmp r0, r3 + 1cab4: d135 bne.n 1cb22 + 1cab6: f8d8 3000 ldr.w r3, [r8] operator unsigned long () const { return millis() - ms; } - 1c9da: 6a32 ldr r2, [r6, #32] - 1c9dc: 1a9b subs r3, r3, r2 + 1caba: 6a32 ldr r2, [r6, #32] + 1cabc: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1c9de: 2bf9 cmp r3, #249 ; 0xf9 - 1c9e0: d827 bhi.n 1ca32 + 1cabe: 2bf9 cmp r3, #249 ; 0xf9 + 1cac0: d827 bhi.n 1cb12 for(i=start;i - 1c9e6: 2101 movs r1, #1 - 1c9e8: 4821 ldr r0, [pc, #132] ; (1ca70 ) - 1c9ea: f00f fdad bl 2c548 - 1c9ee: 481a ldr r0, [pc, #104] ; (1ca58 ) - 1c9f0: f00d fa40 bl 29e74 - 1c9f4: 2109 movs r1, #9 - 1c9f6: 481f ldr r0, [pc, #124] ; (1ca74 ) - 1c9f8: f00f fda6 bl 2c548 - 1c9fc: 2101 movs r1, #1 - 1c9fe: 4818 ldr r0, [pc, #96] ; (1ca60 ) - 1ca00: f00f fda2 bl 2c548 + 1cac2: 42bc cmp r4, r7 + 1cac4: d1e9 bne.n 1ca9a + 1cac6: 2101 movs r1, #1 + 1cac8: 4821 ldr r0, [pc, #132] ; (1cb50 ) + 1caca: f00f fdb1 bl 2c630 + 1cace: 481a ldr r0, [pc, #104] ; (1cb38 ) + 1cad0: f00d fa46 bl 29f60 + 1cad4: 2109 movs r1, #9 + 1cad6: 481f ldr r0, [pc, #124] ; (1cb54 ) + 1cad8: f00f fdaa bl 2c630 + 1cadc: 2101 movs r1, #1 + 1cade: 4818 ldr r0, [pc, #96] ; (1cb40 ) + 1cae0: f00f fda6 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1ca04: 2300 movs r3, #0 - 1ca06: 220a movs r2, #10 - 1ca08: 4651 mov r1, sl - 1ca0a: 4813 ldr r0, [pc, #76] ; (1ca58 ) - 1ca0c: f00d fa4e bl 29eac - 1ca10: 2101 movs r1, #1 - 1ca12: 4813 ldr r0, [pc, #76] ; (1ca60 ) - 1ca14: f00f fd98 bl 2c548 - 1ca18: 2105 movs r1, #5 - 1ca1a: 4817 ldr r0, [pc, #92] ; (1ca78 ) - 1ca1c: f00f fd94 bl 2c548 + 1cae4: 2300 movs r3, #0 + 1cae6: 220a movs r2, #10 + 1cae8: 4651 mov r1, sl + 1caea: 4813 ldr r0, [pc, #76] ; (1cb38 ) + 1caec: f00d fa54 bl 29f98 + 1caf0: 2101 movs r1, #1 + 1caf2: 4813 ldr r0, [pc, #76] ; (1cb40 ) + 1caf4: f00f fd9c bl 2c630 + 1caf8: 2105 movs r1, #5 + 1cafa: 4817 ldr r0, [pc, #92] ; (1cb58 ) + 1cafc: f00f fd98 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1ca20: 480d ldr r0, [pc, #52] ; (1ca58 ) - 1ca22: f00d fa27 bl 29e74 + 1cb00: 480d ldr r0, [pc, #52] ; (1cb38 ) + 1cb02: f00d fa2d bl 29f60 debugStopTiming(); - 1ca26: 4658 mov r0, fp - 1ca28: f7ff fabe bl 1bfa8 - } - 1ca2c: b005 add sp, #20 - 1ca2e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1ca32: 2101 movs r1, #1 - 1ca34: 480e ldr r0, [pc, #56] ; (1ca70 ) - 1ca36: f00f fd87 bl 2c548 - 1ca3a: f8d8 3000 ldr.w r3, [r8] + 1cb06: 4658 mov r0, fp + 1cb08: f7ff fabe bl 1c088 + } + 1cb0c: b005 add sp, #20 + 1cb0e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1cb12: 2101 movs r1, #1 + 1cb14: 480e ldr r0, [pc, #56] ; (1cb50 ) + 1cb16: f00f fd8b bl 2c630 + 1cb1a: f8d8 3000 ldr.w r3, [r8] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 1ca3e: 6233 str r3, [r6, #32] - 1ca40: e7cf b.n 1c9e2 + 1cb1e: 6233 str r3, [r6, #32] + 1cb20: e7cf b.n 1cac2 write(addr, &value, 1); - 1ca42: 2301 movs r3, #1 - 1ca44: f10d 020f add.w r2, sp, #15 - 1ca48: 4648 mov r0, r9 + 1cb22: 2301 movs r3, #1 + 1cb24: f10d 020f add.w r2, sp, #15 + 1cb28: 4648 mov r0, r9 updatedBytes += update(i,*p++); - 1ca4a: f10a 0a01 add.w sl, sl, #1 + 1cb2a: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 1ca4e: f008 fa73 bl 24f38 + 1cb2e: f008 fa79 bl 25024 return 1; - 1ca52: e7c0 b.n 1c9d6 - 1ca54: 20003c58 .word 0x20003c58 - 1ca58: 20004ba8 .word 0x20004ba8 - 1ca5c: 200036c8 .word 0x200036c8 - 1ca60: 200023ec .word 0x200023ec - 1ca64: 20003e04 .word 0x20003e04 - 1ca68: 20003e10 .word 0x20003e10 - 1ca6c: 20003e1c .word 0x20003e1c - 1ca70: 200030b8 .word 0x200030b8 - 1ca74: 20003e2c .word 0x20003e2c - 1ca78: 20002448 .word 0x20002448 - 1ca7c: 2000bae8 .word 0x2000bae8 - -0001ca80 : + 1cb32: e7c0 b.n 1cab6 + 1cb34: 20003d18 .word 0x20003d18 + 1cb38: 20004c68 .word 0x20004c68 + 1cb3c: 20003788 .word 0x20003788 + 1cb40: 200023ec .word 0x200023ec + 1cb44: 20003ec4 .word 0x20003ec4 + 1cb48: 20003ed0 .word 0x20003ed0 + 1cb4c: 20003edc .word 0x20003edc + 1cb50: 20003150 .word 0x20003150 + 1cb54: 20003eec .word 0x20003eec + 1cb58: 20002448 .word 0x20002448 + 1cb5c: 2000bb08 .word 0x2000bb08 + +0001cb60 : void saveTimedEvent(uint8_t n){ - 1ca80: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1ca84: 4606 mov r6, r0 - 1ca86: 460c mov r4, r1 - 1ca88: b085 sub sp, #20 + 1cb60: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1cb64: 4606 mov r6, r0 + 1cb66: 460c mov r4, r1 + 1cb68: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1ca8a: f7fd fea9 bl 1a7e0 + 1cb6a: f7fd fea9 bl 1a8c0 address += getTimedEventOffset(n); - 1ca8e: 4621 mov r1, r4 + 1cb6e: 4621 mov r1, r4 uint16_t address = getGlobalOffset(); - 1ca90: 4605 mov r5, r0 + 1cb70: 4605 mov r5, r0 address += getTimedEventOffset(n); - 1ca92: 4630 mov r0, r6 - 1ca94: f7fd ff14 bl 1a8c0 + 1cb72: 4630 mov r0, r6 + 1cb74: f7fd ff14 bl 1a9a0 storage.set(address, store.global.timedEvents[n]); - 1ca98: 46b3 mov fp, r6 - 1ca9a: 68f3 ldr r3, [r6, #12] + 1cb78: 46b3 mov fp, r6 + 1cb7a: 68f3 ldr r3, [r6, #12] uint16_t address = getGlobalOffset(); - 1ca9c: b2ad uxth r5, r5 + 1cb7c: b2ad uxth r5, r5 storage.set(address, store.global.timedEvents[n]); - 1ca9e: f204 5454 addw r4, r4, #1364 ; 0x554 - 1caa2: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 + 1cb7e: f204 5454 addw r4, r4, #1364 ; 0x554 + 1cb82: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 address += getTimedEventOffset(n); - 1caa6: 4405 add r5, r0 + 1cb86: 4405 add r5, r0 storage.set(address, store.global.timedEvents[n]); - 1caa8: f85b 3b0c ldr.w r3, [fp], #12 + 1cb88: f85b 3b0c ldr.w r3, [fp], #12 address += getTimedEventOffset(n); - 1caac: b2ad uxth r5, r5 + 1cb8c: b2ad uxth r5, r5 storage.set(address, store.global.timedEvents[n]); - 1caae: eb03 0484 add.w r4, r3, r4, lsl #2 + 1cb8e: eb03 0484 add.w r4, r3, r4, lsl #2 if(!globals.getStorageDebug()){ - 1cab2: 07d3 lsls r3, r2, #31 - 1cab4: d521 bpl.n 1cafa - 1cab6: 2100 movs r1, #0 - 1cab8: 4841 ldr r0, [pc, #260] ; (1cbc0 ) - 1caba: f00f fd45 bl 2c548 - 1cabe: 4841 ldr r0, [pc, #260] ; (1cbc4 ) - 1cac0: f00d f9d8 bl 29e74 - 1cac4: 2103 movs r1, #3 - 1cac6: 4840 ldr r0, [pc, #256] ; (1cbc8 ) - 1cac8: f00f fd3e bl 2c548 - 1cacc: 2101 movs r1, #1 - 1cace: 483f ldr r0, [pc, #252] ; (1cbcc ) - 1cad0: f00f fd3a bl 2c548 - 1cad4: 2108 movs r1, #8 - 1cad6: 483e ldr r0, [pc, #248] ; (1cbd0 ) - 1cad8: f00f fd36 bl 2c548 - 1cadc: 2101 movs r1, #1 - 1cade: 483b ldr r0, [pc, #236] ; (1cbcc ) - 1cae0: f00f fd32 bl 2c548 - 1cae4: 2108 movs r1, #8 - 1cae6: 483b ldr r0, [pc, #236] ; (1cbd4 ) - 1cae8: f00f fd2e bl 2c548 - 1caec: 2101 movs r1, #1 - 1caee: 4837 ldr r0, [pc, #220] ; (1cbcc ) - 1caf0: f00f fd2a bl 2c548 + 1cb92: 07d3 lsls r3, r2, #31 + 1cb94: d521 bpl.n 1cbda + 1cb96: 2100 movs r1, #0 + 1cb98: 4841 ldr r0, [pc, #260] ; (1cca0 ) + 1cb9a: f00f fd49 bl 2c630 + 1cb9e: 4841 ldr r0, [pc, #260] ; (1cca4 ) + 1cba0: f00d f9de bl 29f60 + 1cba4: 2103 movs r1, #3 + 1cba6: 4840 ldr r0, [pc, #256] ; (1cca8 ) + 1cba8: f00f fd42 bl 2c630 + 1cbac: 2101 movs r1, #1 + 1cbae: 483f ldr r0, [pc, #252] ; (1ccac ) + 1cbb0: f00f fd3e bl 2c630 + 1cbb4: 2108 movs r1, #8 + 1cbb6: 483e ldr r0, [pc, #248] ; (1ccb0 ) + 1cbb8: f00f fd3a bl 2c630 + 1cbbc: 2101 movs r1, #1 + 1cbbe: 483b ldr r0, [pc, #236] ; (1ccac ) + 1cbc0: f00f fd36 bl 2c630 + 1cbc4: 2108 movs r1, #8 + 1cbc6: 483b ldr r0, [pc, #236] ; (1ccb4 ) + 1cbc8: f00f fd32 bl 2c630 + 1cbcc: 2101 movs r1, #1 + 1cbce: 4837 ldr r0, [pc, #220] ; (1ccac ) + 1cbd0: f00f fd2e bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1caf4: f00d fd3e bl 2a574 - 1caf8: 62b0 str r0, [r6, #40] ; 0x28 - 1cafa: 210e movs r1, #14 - 1cafc: 4836 ldr r0, [pc, #216] ; (1cbd8 ) - 1cafe: f00f fd23 bl 2c548 + 1cbd4: f00d fd42 bl 2a65c + 1cbd8: 62b0 str r0, [r6, #40] ; 0x28 + 1cbda: 210e movs r1, #14 + 1cbdc: 4836 ldr r0, [pc, #216] ; (1ccb8 ) + 1cbde: f00f fd27 bl 2c630 unsigned long n = sizeof(value)+start; - 1cb02: 1d2f adds r7, r5, #4 - 1cb04: 1c6b adds r3, r5, #1 - 1cb06: f8df 80e0 ldr.w r8, [pc, #224] ; 1cbe8 + 1cbe2: 1d2f adds r7, r5, #4 + 1cbe4: 1c6b adds r3, r5, #1 + 1cbe6: f8df 80e0 ldr.w r8, [pc, #224] ; 1ccc8 STORAGE.put(address,file); - 1cb0a: f106 0910 add.w r9, r6, #16 - 1cb0e: 1b2d subs r5, r5, r4 - 1cb10: 429f cmp r7, r3 - 1cb12: bf34 ite cc - 1cb14: 2701 movcc r7, #1 - 1cb16: 2704 movcs r7, #4 + 1cbea: f106 0910 add.w r9, r6, #16 + 1cbee: 1b2d subs r5, r5, r4 + 1cbf0: 429f cmp r7, r3 + 1cbf2: bf34 ite cc + 1cbf4: 2701 movcc r7, #1 + 1cbf6: 2704 movcs r7, #4 unsigned long updatedBytes = 0; - 1cb18: f04f 0a00 mov.w sl, #0 - 1cb1c: f8d8 3000 ldr.w r3, [r8] - 1cb20: 4427 add r7, r4 - 1cb22: 6233 str r3, [r6, #32] + 1cbf8: f04f 0a00 mov.w sl, #0 + 1cbfc: f8d8 3000 ldr.w r3, [r8] + 1cc00: 4427 add r7, r4 + 1cc02: 6233 str r3, [r6, #32] for(i=start;i - 1cb36: f89d 300f ldrb.w r3, [sp, #15] - 1cb3a: 9901 ldr r1, [sp, #4] - 1cb3c: 4298 cmp r0, r3 - 1cb3e: d135 bne.n 1cbac - 1cb40: f8d8 3000 ldr.w r3, [r8] + 1cc0a: 4648 mov r0, r9 + 1cc0c: 9101 str r1, [sp, #4] + 1cc0e: f88d 300f strb.w r3, [sp, #15] + 1cc12: f008 fb11 bl 25238 + 1cc16: f89d 300f ldrb.w r3, [sp, #15] + 1cc1a: 9901 ldr r1, [sp, #4] + 1cc1c: 4298 cmp r0, r3 + 1cc1e: d135 bne.n 1cc8c + 1cc20: f8d8 3000 ldr.w r3, [r8] operator unsigned long () const { return millis() - ms; } - 1cb44: 6a32 ldr r2, [r6, #32] - 1cb46: 1a9b subs r3, r3, r2 + 1cc24: 6a32 ldr r2, [r6, #32] + 1cc26: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1cb48: 2bf9 cmp r3, #249 ; 0xf9 - 1cb4a: d827 bhi.n 1cb9c + 1cc28: 2bf9 cmp r3, #249 ; 0xf9 + 1cc2a: d827 bhi.n 1cc7c for(i=start;i - 1cb50: 2101 movs r1, #1 - 1cb52: 4822 ldr r0, [pc, #136] ; (1cbdc ) - 1cb54: f00f fcf8 bl 2c548 - 1cb58: 481a ldr r0, [pc, #104] ; (1cbc4 ) - 1cb5a: f00d f98b bl 29e74 - 1cb5e: 2109 movs r1, #9 - 1cb60: 481f ldr r0, [pc, #124] ; (1cbe0 ) - 1cb62: f00f fcf1 bl 2c548 - 1cb66: 2101 movs r1, #1 - 1cb68: 4818 ldr r0, [pc, #96] ; (1cbcc ) - 1cb6a: f00f fced bl 2c548 + 1cc2c: 42bc cmp r4, r7 + 1cc2e: d1e9 bne.n 1cc04 + 1cc30: 2101 movs r1, #1 + 1cc32: 4822 ldr r0, [pc, #136] ; (1ccbc ) + 1cc34: f00f fcfc bl 2c630 + 1cc38: 481a ldr r0, [pc, #104] ; (1cca4 ) + 1cc3a: f00d f991 bl 29f60 + 1cc3e: 2109 movs r1, #9 + 1cc40: 481f ldr r0, [pc, #124] ; (1ccc0 ) + 1cc42: f00f fcf5 bl 2c630 + 1cc46: 2101 movs r1, #1 + 1cc48: 4818 ldr r0, [pc, #96] ; (1ccac ) + 1cc4a: f00f fcf1 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1cb6e: 2300 movs r3, #0 - 1cb70: 220a movs r2, #10 - 1cb72: 4651 mov r1, sl - 1cb74: 4813 ldr r0, [pc, #76] ; (1cbc4 ) - 1cb76: f00d f999 bl 29eac - 1cb7a: 2101 movs r1, #1 - 1cb7c: 4813 ldr r0, [pc, #76] ; (1cbcc ) - 1cb7e: f00f fce3 bl 2c548 - 1cb82: 2105 movs r1, #5 - 1cb84: 4817 ldr r0, [pc, #92] ; (1cbe4 ) - 1cb86: f00f fcdf bl 2c548 + 1cc4e: 2300 movs r3, #0 + 1cc50: 220a movs r2, #10 + 1cc52: 4651 mov r1, sl + 1cc54: 4813 ldr r0, [pc, #76] ; (1cca4 ) + 1cc56: f00d f99f bl 29f98 + 1cc5a: 2101 movs r1, #1 + 1cc5c: 4813 ldr r0, [pc, #76] ; (1ccac ) + 1cc5e: f00f fce7 bl 2c630 + 1cc62: 2105 movs r1, #5 + 1cc64: 4817 ldr r0, [pc, #92] ; (1ccc4 ) + 1cc66: f00f fce3 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1cb8a: 480e ldr r0, [pc, #56] ; (1cbc4 ) - 1cb8c: f00d f972 bl 29e74 + 1cc6a: 480e ldr r0, [pc, #56] ; (1cca4 ) + 1cc6c: f00d f978 bl 29f60 debugStopTiming(); - 1cb90: 4658 mov r0, fp - 1cb92: f7ff fa09 bl 1bfa8 - } - 1cb96: b005 add sp, #20 - 1cb98: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1cb9c: 2101 movs r1, #1 - 1cb9e: 480f ldr r0, [pc, #60] ; (1cbdc ) - 1cba0: f00f fcd2 bl 2c548 - 1cba4: f8d8 3000 ldr.w r3, [r8] + 1cc70: 4658 mov r0, fp + 1cc72: f7ff fa09 bl 1c088 + } + 1cc76: b005 add sp, #20 + 1cc78: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1cc7c: 2101 movs r1, #1 + 1cc7e: 480f ldr r0, [pc, #60] ; (1ccbc ) + 1cc80: f00f fcd6 bl 2c630 + 1cc84: f8d8 3000 ldr.w r3, [r8] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 1cba8: 6233 str r3, [r6, #32] - 1cbaa: e7cf b.n 1cb4c + 1cc88: 6233 str r3, [r6, #32] + 1cc8a: e7cf b.n 1cc2c write(addr, &value, 1); - 1cbac: 2301 movs r3, #1 - 1cbae: f10d 020f add.w r2, sp, #15 - 1cbb2: 4648 mov r0, r9 + 1cc8c: 2301 movs r3, #1 + 1cc8e: f10d 020f add.w r2, sp, #15 + 1cc92: 4648 mov r0, r9 updatedBytes += update(i,*p++); - 1cbb4: f10a 0a01 add.w sl, sl, #1 + 1cc94: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 1cbb8: f008 f9be bl 24f38 + 1cc98: f008 f9c4 bl 25024 return 1; - 1cbbc: e7c0 b.n 1cb40 - 1cbbe: bf00 nop - 1cbc0: 20003c58 .word 0x20003c58 - 1cbc4: 20004ba8 .word 0x20004ba8 - 1cbc8: 200036c8 .word 0x200036c8 - 1cbcc: 200023ec .word 0x200023ec - 1cbd0: 20003e04 .word 0x20003e04 - 1cbd4: 20003e10 .word 0x20003e10 - 1cbd8: 20003e1c .word 0x20003e1c - 1cbdc: 200030b8 .word 0x200030b8 - 1cbe0: 20003e2c .word 0x20003e2c - 1cbe4: 20002448 .word 0x20002448 - 1cbe8: 2000bae8 .word 0x2000bae8 - -0001cbec : + 1cc9c: e7c0 b.n 1cc20 + 1cc9e: bf00 nop + 1cca0: 20003d18 .word 0x20003d18 + 1cca4: 20004c68 .word 0x20004c68 + 1cca8: 20003788 .word 0x20003788 + 1ccac: 200023ec .word 0x200023ec + 1ccb0: 20003ec4 .word 0x20003ec4 + 1ccb4: 20003ed0 .word 0x20003ed0 + 1ccb8: 20003edc .word 0x20003edc + 1ccbc: 20003150 .word 0x20003150 + 1ccc0: 20003eec .word 0x20003eec + 1ccc4: 20002448 .word 0x20002448 + 1ccc8: 2000bb08 .word 0x2000bb08 + +0001cccc : void savePreset(uint16_t index){ - 1cbec: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1cbf0: 460c mov r4, r1 - 1cbf2: 4605 mov r5, r0 - 1cbf4: b085 sub sp, #20 + 1cccc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1ccd0: 460c mov r4, r1 + 1ccd2: 4605 mov r5, r0 + 1ccd4: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1cbf6: f7fd fdf3 bl 1a7e0 + 1ccd6: f7fd fdf3 bl 1a8c0 address += getPresetOffset(index); - 1cbfa: 4621 mov r1, r4 + 1ccda: 4621 mov r1, r4 storage.set(address, store.global.presets[index]); - 1cbfc: eb04 0484 add.w r4, r4, r4, lsl #2 + 1ccdc: eb04 0484 add.w r4, r4, r4, lsl #2 uint16_t address = getGlobalOffset(); - 1cc00: 4606 mov r6, r0 + 1cce0: 4606 mov r6, r0 address += getPresetOffset(index); - 1cc02: 4628 mov r0, r5 - 1cc04: f7fd fe14 bl 1a830 + 1cce2: 4628 mov r0, r5 + 1cce4: f7fd fe14 bl 1a910 storage.set(address, store.global.presets[index]); - 1cc08: 4629 mov r1, r5 - 1cc0a: 68eb ldr r3, [r5, #12] - 1cc0c: 0064 lsls r4, r4, #1 + 1cce8: 4629 mov r1, r5 + 1ccea: 68eb ldr r3, [r5, #12] + 1ccec: 0064 lsls r4, r4, #1 uint16_t address = getGlobalOffset(); - 1cc0e: b2b6 uxth r6, r6 - 1cc10: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 + 1ccee: b2b6 uxth r6, r6 + 1ccf0: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 storage.set(address, store.global.presets[index]); - 1cc14: f604 742d addw r4, r4, #3885 ; 0xf2d - 1cc18: f851 3b0c ldr.w r3, [r1], #12 + 1ccf4: f604 742d addw r4, r4, #3885 ; 0xf2d + 1ccf8: f851 3b0c ldr.w r3, [r1], #12 address += getPresetOffset(index); - 1cc1c: 4406 add r6, r0 + 1ccfc: 4406 add r6, r0 storage.set(address, store.global.presets[index]); - 1cc1e: 441c add r4, r3 + 1ccfe: 441c add r4, r3 if(!globals.getStorageDebug()){ - 1cc20: 07d3 lsls r3, r2, #31 + 1cd00: 07d3 lsls r3, r2, #31 address += getPresetOffset(index); - 1cc22: b2b6 uxth r6, r6 + 1cd02: b2b6 uxth r6, r6 storage.set(address, store.global.presets[index]); - 1cc24: 9101 str r1, [sp, #4] - 1cc26: d521 bpl.n 1cc6c - 1cc28: 2100 movs r1, #0 - 1cc2a: 4845 ldr r0, [pc, #276] ; (1cd40 ) - 1cc2c: f00f fc8c bl 2c548 - 1cc30: 4844 ldr r0, [pc, #272] ; (1cd44 ) - 1cc32: f00d f91f bl 29e74 - 1cc36: 2103 movs r1, #3 - 1cc38: 4843 ldr r0, [pc, #268] ; (1cd48 ) - 1cc3a: f00f fc85 bl 2c548 - 1cc3e: 2101 movs r1, #1 - 1cc40: 4842 ldr r0, [pc, #264] ; (1cd4c ) - 1cc42: f00f fc81 bl 2c548 - 1cc46: 2108 movs r1, #8 - 1cc48: 4841 ldr r0, [pc, #260] ; (1cd50 ) - 1cc4a: f00f fc7d bl 2c548 - 1cc4e: 2101 movs r1, #1 - 1cc50: 483e ldr r0, [pc, #248] ; (1cd4c ) - 1cc52: f00f fc79 bl 2c548 - 1cc56: 2108 movs r1, #8 - 1cc58: 483e ldr r0, [pc, #248] ; (1cd54 ) - 1cc5a: f00f fc75 bl 2c548 - 1cc5e: 2101 movs r1, #1 - 1cc60: 483a ldr r0, [pc, #232] ; (1cd4c ) - 1cc62: f00f fc71 bl 2c548 + 1cd04: 9101 str r1, [sp, #4] + 1cd06: d521 bpl.n 1cd4c + 1cd08: 2100 movs r1, #0 + 1cd0a: 4845 ldr r0, [pc, #276] ; (1ce20 ) + 1cd0c: f00f fc90 bl 2c630 + 1cd10: 4844 ldr r0, [pc, #272] ; (1ce24 ) + 1cd12: f00d f925 bl 29f60 + 1cd16: 2103 movs r1, #3 + 1cd18: 4843 ldr r0, [pc, #268] ; (1ce28 ) + 1cd1a: f00f fc89 bl 2c630 + 1cd1e: 2101 movs r1, #1 + 1cd20: 4842 ldr r0, [pc, #264] ; (1ce2c ) + 1cd22: f00f fc85 bl 2c630 + 1cd26: 2108 movs r1, #8 + 1cd28: 4841 ldr r0, [pc, #260] ; (1ce30 ) + 1cd2a: f00f fc81 bl 2c630 + 1cd2e: 2101 movs r1, #1 + 1cd30: 483e ldr r0, [pc, #248] ; (1ce2c ) + 1cd32: f00f fc7d bl 2c630 + 1cd36: 2108 movs r1, #8 + 1cd38: 483e ldr r0, [pc, #248] ; (1ce34 ) + 1cd3a: f00f fc79 bl 2c630 + 1cd3e: 2101 movs r1, #1 + 1cd40: 483a ldr r0, [pc, #232] ; (1ce2c ) + 1cd42: f00f fc75 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1cc66: f00d fc85 bl 2a574 - 1cc6a: 62a8 str r0, [r5, #40] ; 0x28 - 1cc6c: 210e movs r1, #14 - 1cc6e: 483a ldr r0, [pc, #232] ; (1cd58 ) - 1cc70: f00f fc6a bl 2c548 + 1cd46: f00d fc89 bl 2a65c + 1cd4a: 62a8 str r0, [r5, #40] ; 0x28 + 1cd4c: 210e movs r1, #14 + 1cd4e: 483a ldr r0, [pc, #232] ; (1ce38 ) + 1cd50: f00f fc6e bl 2c630 unsigned long n = sizeof(value)+start; - 1cc74: f106 080a add.w r8, r6, #10 - 1cc78: 1c73 adds r3, r6, #1 - 1cc7a: 4f38 ldr r7, [pc, #224] ; (1cd5c ) + 1cd54: f106 080a add.w r8, r6, #10 + 1cd58: 1c73 adds r3, r6, #1 + 1cd5a: 4f38 ldr r7, [pc, #224] ; (1ce3c ) STORAGE.put(address,file); - 1cc7c: f105 0910 add.w r9, r5, #16 - 1cc80: 1b36 subs r6, r6, r4 - 1cc82: 4598 cmp r8, r3 - 1cc84: bf34 ite cc - 1cc86: f04f 0801 movcc.w r8, #1 - 1cc8a: f04f 080a movcs.w r8, #10 - 1cc8e: 683b ldr r3, [r7, #0] + 1cd5c: f105 0910 add.w r9, r5, #16 + 1cd60: 1b36 subs r6, r6, r4 + 1cd62: 4598 cmp r8, r3 + 1cd64: bf34 ite cc + 1cd66: f04f 0801 movcc.w r8, #1 + 1cd6a: f04f 080a movcs.w r8, #10 + 1cd6e: 683b ldr r3, [r7, #0] unsigned long updatedBytes = 0; - 1cc90: f04f 0a00 mov.w sl, #0 - 1cc94: f8df b0c8 ldr.w fp, [pc, #200] ; 1cd60 - 1cc98: 44a0 add r8, r4 - 1cc9a: 622b str r3, [r5, #32] + 1cd70: f04f 0a00 mov.w sl, #0 + 1cd74: f8df b0c8 ldr.w fp, [pc, #200] ; 1ce40 + 1cd78: 44a0 add r8, r4 + 1cd7a: 622b str r3, [r5, #32] for(i=start;i - 1cc9e: 683b ldr r3, [r7, #0] + 1cd7c: e006 b.n 1cd8c + 1cd7e: 683b ldr r3, [r7, #0] operator unsigned long () const { return millis() - ms; } - 1cca0: 6a2a ldr r2, [r5, #32] - 1cca2: 1a9b subs r3, r3, r2 + 1cd80: 6a2a ldr r2, [r5, #32] + 1cd82: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1cca4: 2bf9 cmp r3, #249 ; 0xf9 - 1cca6: d81c bhi.n 1cce2 + 1cd84: 2bf9 cmp r3, #249 ; 0xf9 + 1cd86: d81c bhi.n 1cdc2 for(i=start;i - 1ccac: 19a1 adds r1, r4, r6 + 1cd88: 4544 cmp r4, r8 + 1cd8a: d022 beq.n 1cdd2 + 1cd8c: 19a1 adds r1, r4, r6 updatedBytes += update(i,*p++); - 1ccae: f814 3b01 ldrb.w r3, [r4], #1 + 1cd8e: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 1ccb2: 4648 mov r0, r9 - 1ccb4: 9100 str r1, [sp, #0] - 1ccb6: f88d 300f strb.w r3, [sp, #15] - 1ccba: f008 fa47 bl 2514c - 1ccbe: f89d 300f ldrb.w r3, [sp, #15] - 1ccc2: 9900 ldr r1, [sp, #0] - 1ccc4: 4298 cmp r0, r3 - 1ccc6: d0ea beq.n 1cc9e + 1cd92: 4648 mov r0, r9 + 1cd94: 9100 str r1, [sp, #0] + 1cd96: f88d 300f strb.w r3, [sp, #15] + 1cd9a: f008 fa4d bl 25238 + 1cd9e: f89d 300f ldrb.w r3, [sp, #15] + 1cda2: 9900 ldr r1, [sp, #0] + 1cda4: 4298 cmp r0, r3 + 1cda6: d0ea beq.n 1cd7e write(addr, &value, 1); - 1ccc8: 2301 movs r3, #1 - 1ccca: f10d 020f add.w r2, sp, #15 - 1ccce: 4648 mov r0, r9 + 1cda8: 2301 movs r3, #1 + 1cdaa: f10d 020f add.w r2, sp, #15 + 1cdae: 4648 mov r0, r9 updatedBytes += update(i,*p++); - 1ccd0: f10a 0a01 add.w sl, sl, #1 + 1cdb0: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 1ccd4: f008 f930 bl 24f38 - 1ccd8: 683b ldr r3, [r7, #0] - 1ccda: 6a2a ldr r2, [r5, #32] - 1ccdc: 1a9b subs r3, r3, r2 + 1cdb4: f008 f936 bl 25024 + 1cdb8: 683b ldr r3, [r7, #0] + 1cdba: 6a2a ldr r2, [r5, #32] + 1cdbc: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1ccde: 2bf9 cmp r3, #249 ; 0xf9 - 1cce0: d9e2 bls.n 1cca8 - 1cce2: 2101 movs r1, #1 - 1cce4: 4658 mov r0, fp - 1cce6: f00f fc2f bl 2c548 - 1ccea: 683b ldr r3, [r7, #0] + 1cdbe: 2bf9 cmp r3, #249 ; 0xf9 + 1cdc0: d9e2 bls.n 1cd88 + 1cdc2: 2101 movs r1, #1 + 1cdc4: 4658 mov r0, fp + 1cdc6: f00f fc33 bl 2c630 + 1cdca: 683b ldr r3, [r7, #0] for(i=start;i - 1ccf2: 2101 movs r1, #1 - 1ccf4: 481a ldr r0, [pc, #104] ; (1cd60 ) - 1ccf6: f00f fc27 bl 2c548 - 1ccfa: 4812 ldr r0, [pc, #72] ; (1cd44 ) - 1ccfc: f00d f8ba bl 29e74 - 1cd00: 2109 movs r1, #9 - 1cd02: 4818 ldr r0, [pc, #96] ; (1cd64 ) - 1cd04: f00f fc20 bl 2c548 - 1cd08: 2101 movs r1, #1 - 1cd0a: 4810 ldr r0, [pc, #64] ; (1cd4c ) - 1cd0c: f00f fc1c bl 2c548 + 1cdce: 622b str r3, [r5, #32] + 1cdd0: d1dc bne.n 1cd8c + 1cdd2: 2101 movs r1, #1 + 1cdd4: 481a ldr r0, [pc, #104] ; (1ce40 ) + 1cdd6: f00f fc2b bl 2c630 + 1cdda: 4812 ldr r0, [pc, #72] ; (1ce24 ) + 1cddc: f00d f8c0 bl 29f60 + 1cde0: 2109 movs r1, #9 + 1cde2: 4818 ldr r0, [pc, #96] ; (1ce44 ) + 1cde4: f00f fc24 bl 2c630 + 1cde8: 2101 movs r1, #1 + 1cdea: 4810 ldr r0, [pc, #64] ; (1ce2c ) + 1cdec: f00f fc20 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1cd10: 2300 movs r3, #0 - 1cd12: 220a movs r2, #10 - 1cd14: 4651 mov r1, sl - 1cd16: 480b ldr r0, [pc, #44] ; (1cd44 ) - 1cd18: f00d f8c8 bl 29eac - 1cd1c: 2101 movs r1, #1 - 1cd1e: 480b ldr r0, [pc, #44] ; (1cd4c ) - 1cd20: f00f fc12 bl 2c548 - 1cd24: 2105 movs r1, #5 - 1cd26: 4810 ldr r0, [pc, #64] ; (1cd68 ) - 1cd28: f00f fc0e bl 2c548 + 1cdf0: 2300 movs r3, #0 + 1cdf2: 220a movs r2, #10 + 1cdf4: 4651 mov r1, sl + 1cdf6: 480b ldr r0, [pc, #44] ; (1ce24 ) + 1cdf8: f00d f8ce bl 29f98 + 1cdfc: 2101 movs r1, #1 + 1cdfe: 480b ldr r0, [pc, #44] ; (1ce2c ) + 1ce00: f00f fc16 bl 2c630 + 1ce04: 2105 movs r1, #5 + 1ce06: 4810 ldr r0, [pc, #64] ; (1ce48 ) + 1ce08: f00f fc12 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1cd2c: 4805 ldr r0, [pc, #20] ; (1cd44 ) - 1cd2e: f00d f8a1 bl 29e74 + 1ce0c: 4805 ldr r0, [pc, #20] ; (1ce24 ) + 1ce0e: f00d f8a7 bl 29f60 debugStopTiming(); - 1cd32: 9801 ldr r0, [sp, #4] - 1cd34: f7ff f938 bl 1bfa8 - } - 1cd38: b005 add sp, #20 - 1cd3a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1cd3e: bf00 nop - 1cd40: 20003c58 .word 0x20003c58 - 1cd44: 20004ba8 .word 0x20004ba8 - 1cd48: 200036c8 .word 0x200036c8 - 1cd4c: 200023ec .word 0x200023ec - 1cd50: 20003e04 .word 0x20003e04 - 1cd54: 20003e10 .word 0x20003e10 - 1cd58: 20003e1c .word 0x20003e1c - 1cd5c: 2000bae8 .word 0x2000bae8 - 1cd60: 200030b8 .word 0x200030b8 - 1cd64: 20003e2c .word 0x20003e2c - 1cd68: 20002448 .word 0x20002448 - -0001cd6c : + 1ce12: 9801 ldr r0, [sp, #4] + 1ce14: f7ff f938 bl 1c088 + } + 1ce18: b005 add sp, #20 + 1ce1a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1ce1e: bf00 nop + 1ce20: 20003d18 .word 0x20003d18 + 1ce24: 20004c68 .word 0x20004c68 + 1ce28: 20003788 .word 0x20003788 + 1ce2c: 200023ec .word 0x200023ec + 1ce30: 20003ec4 .word 0x20003ec4 + 1ce34: 20003ed0 .word 0x20003ed0 + 1ce38: 20003edc .word 0x20003edc + 1ce3c: 2000bb08 .word 0x2000bb08 + 1ce40: 20003150 .word 0x20003150 + 1ce44: 20003eec .word 0x20003eec + 1ce48: 20002448 .word 0x20002448 + +0001ce4c : void saveCustomSysEx(uint8_t index){ - 1cd6c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1cd70: 460c mov r4, r1 - 1cd72: 4605 mov r5, r0 - 1cd74: b085 sub sp, #20 + 1ce4c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1ce50: 460c mov r4, r1 + 1ce52: 4605 mov r5, r0 + 1ce54: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1cd76: f7fd fd33 bl 1a7e0 + 1ce56: f7fd fd33 bl 1a8c0 address += getCustomSysExOffset(index); - 1cd7a: 4621 mov r1, r4 + 1ce5a: 4621 mov r1, r4 uint16_t address = getGlobalOffset(); - 1cd7c: 4606 mov r6, r0 + 1ce5c: 4606 mov r6, r0 address += getCustomSysExOffset(index); - 1cd7e: 4628 mov r0, r5 - 1cd80: f7fd fd8a bl 1a898 + 1ce5e: 4628 mov r0, r5 + 1ce60: f7fd fd8a bl 1a978 storage.set(address, store.global.customSysEx[index]); - 1cd84: f241 42f2 movw r2, #5362 ; 0x14f2 - 1cd88: 2312 movs r3, #18 + 1ce64: f241 42f2 movw r2, #5362 ; 0x14f2 + 1ce68: 2312 movs r3, #18 uint16_t address = getGlobalOffset(); - 1cd8a: b2b6 uxth r6, r6 + 1ce6a: b2b6 uxth r6, r6 storage.set(address, store.global.customSysEx[index]); - 1cd8c: fb13 2304 smlabb r3, r3, r4, r2 - 1cd90: 462a mov r2, r5 + 1ce6c: fb13 2304 smlabb r3, r3, r4, r2 + 1ce70: 462a mov r2, r5 address += getCustomSysExOffset(index); - 1cd92: 4406 add r6, r0 + 1ce72: 4406 add r6, r0 storage.set(address, store.global.customSysEx[index]); - 1cd94: f852 4b0c ldr.w r4, [r2], #12 + 1ce74: f852 4b0c ldr.w r4, [r2], #12 address += getCustomSysExOffset(index); - 1cd98: b2b6 uxth r6, r6 + 1ce78: b2b6 uxth r6, r6 storage.set(address, store.global.customSysEx[index]); - 1cd9a: 441c add r4, r3 - 1cd9c: 68eb ldr r3, [r5, #12] - 1cd9e: 9201 str r2, [sp, #4] - 1cda0: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1ce7a: 441c add r4, r3 + 1ce7c: 68eb ldr r3, [r5, #12] + 1ce7e: 9201 str r2, [sp, #4] + 1ce80: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1cda4: 07db lsls r3, r3, #31 - 1cda6: d521 bpl.n 1cdec - 1cda8: 2100 movs r1, #0 - 1cdaa: 4845 ldr r0, [pc, #276] ; (1cec0 ) - 1cdac: f00f fbcc bl 2c548 - 1cdb0: 4844 ldr r0, [pc, #272] ; (1cec4 ) - 1cdb2: f00d f85f bl 29e74 - 1cdb6: 2103 movs r1, #3 - 1cdb8: 4843 ldr r0, [pc, #268] ; (1cec8 ) - 1cdba: f00f fbc5 bl 2c548 - 1cdbe: 2101 movs r1, #1 - 1cdc0: 4842 ldr r0, [pc, #264] ; (1cecc ) - 1cdc2: f00f fbc1 bl 2c548 - 1cdc6: 2108 movs r1, #8 - 1cdc8: 4841 ldr r0, [pc, #260] ; (1ced0 ) - 1cdca: f00f fbbd bl 2c548 - 1cdce: 2101 movs r1, #1 - 1cdd0: 483e ldr r0, [pc, #248] ; (1cecc ) - 1cdd2: f00f fbb9 bl 2c548 - 1cdd6: 2108 movs r1, #8 - 1cdd8: 483e ldr r0, [pc, #248] ; (1ced4 ) - 1cdda: f00f fbb5 bl 2c548 - 1cdde: 2101 movs r1, #1 - 1cde0: 483a ldr r0, [pc, #232] ; (1cecc ) - 1cde2: f00f fbb1 bl 2c548 + 1ce84: 07db lsls r3, r3, #31 + 1ce86: d521 bpl.n 1cecc + 1ce88: 2100 movs r1, #0 + 1ce8a: 4845 ldr r0, [pc, #276] ; (1cfa0 ) + 1ce8c: f00f fbd0 bl 2c630 + 1ce90: 4844 ldr r0, [pc, #272] ; (1cfa4 ) + 1ce92: f00d f865 bl 29f60 + 1ce96: 2103 movs r1, #3 + 1ce98: 4843 ldr r0, [pc, #268] ; (1cfa8 ) + 1ce9a: f00f fbc9 bl 2c630 + 1ce9e: 2101 movs r1, #1 + 1cea0: 4842 ldr r0, [pc, #264] ; (1cfac ) + 1cea2: f00f fbc5 bl 2c630 + 1cea6: 2108 movs r1, #8 + 1cea8: 4841 ldr r0, [pc, #260] ; (1cfb0 ) + 1ceaa: f00f fbc1 bl 2c630 + 1ceae: 2101 movs r1, #1 + 1ceb0: 483e ldr r0, [pc, #248] ; (1cfac ) + 1ceb2: f00f fbbd bl 2c630 + 1ceb6: 2108 movs r1, #8 + 1ceb8: 483e ldr r0, [pc, #248] ; (1cfb4 ) + 1ceba: f00f fbb9 bl 2c630 + 1cebe: 2101 movs r1, #1 + 1cec0: 483a ldr r0, [pc, #232] ; (1cfac ) + 1cec2: f00f fbb5 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1cde6: f00d fbc5 bl 2a574 - 1cdea: 62a8 str r0, [r5, #40] ; 0x28 - 1cdec: 210e movs r1, #14 - 1cdee: 483a ldr r0, [pc, #232] ; (1ced8 ) - 1cdf0: f00f fbaa bl 2c548 + 1cec6: f00d fbc9 bl 2a65c + 1ceca: 62a8 str r0, [r5, #40] ; 0x28 + 1cecc: 210e movs r1, #14 + 1cece: 483a ldr r0, [pc, #232] ; (1cfb8 ) + 1ced0: f00f fbae bl 2c630 unsigned long n = sizeof(value)+start; - 1cdf4: f106 0912 add.w r9, r6, #18 - 1cdf8: 1c73 adds r3, r6, #1 - 1cdfa: 4f38 ldr r7, [pc, #224] ; (1cedc ) + 1ced4: f106 0912 add.w r9, r6, #18 + 1ced8: 1c73 adds r3, r6, #1 + 1ceda: 4f38 ldr r7, [pc, #224] ; (1cfbc ) STORAGE.put(address,file); - 1cdfc: f105 0810 add.w r8, r5, #16 - 1ce00: 1b36 subs r6, r6, r4 - 1ce02: 4599 cmp r9, r3 - 1ce04: bf34 ite cc - 1ce06: f04f 0901 movcc.w r9, #1 - 1ce0a: f04f 0912 movcs.w r9, #18 - 1ce0e: 683b ldr r3, [r7, #0] + 1cedc: f105 0810 add.w r8, r5, #16 + 1cee0: 1b36 subs r6, r6, r4 + 1cee2: 4599 cmp r9, r3 + 1cee4: bf34 ite cc + 1cee6: f04f 0901 movcc.w r9, #1 + 1ceea: f04f 0912 movcs.w r9, #18 + 1ceee: 683b ldr r3, [r7, #0] unsigned long updatedBytes = 0; - 1ce10: f04f 0a00 mov.w sl, #0 - 1ce14: f8df b0c8 ldr.w fp, [pc, #200] ; 1cee0 - 1ce18: 44a1 add r9, r4 - 1ce1a: 622b str r3, [r5, #32] + 1cef0: f04f 0a00 mov.w sl, #0 + 1cef4: f8df b0c8 ldr.w fp, [pc, #200] ; 1cfc0 + 1cef8: 44a1 add r9, r4 + 1cefa: 622b str r3, [r5, #32] for(i=start;i - 1ce1e: 683b ldr r3, [r7, #0] + 1cefc: e006 b.n 1cf0c + 1cefe: 683b ldr r3, [r7, #0] operator unsigned long () const { return millis() - ms; } - 1ce20: 6a2a ldr r2, [r5, #32] - 1ce22: 1a9b subs r3, r3, r2 + 1cf00: 6a2a ldr r2, [r5, #32] + 1cf02: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1ce24: 2bf9 cmp r3, #249 ; 0xf9 - 1ce26: d81c bhi.n 1ce62 + 1cf04: 2bf9 cmp r3, #249 ; 0xf9 + 1cf06: d81c bhi.n 1cf42 for(i=start;i - 1ce2c: 19a1 adds r1, r4, r6 + 1cf08: 454c cmp r4, r9 + 1cf0a: d022 beq.n 1cf52 + 1cf0c: 19a1 adds r1, r4, r6 updatedBytes += update(i,*p++); - 1ce2e: f814 3b01 ldrb.w r3, [r4], #1 + 1cf0e: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 1ce32: 4640 mov r0, r8 - 1ce34: 9100 str r1, [sp, #0] - 1ce36: f88d 300f strb.w r3, [sp, #15] - 1ce3a: f008 f987 bl 2514c - 1ce3e: f89d 300f ldrb.w r3, [sp, #15] - 1ce42: 9900 ldr r1, [sp, #0] - 1ce44: 4298 cmp r0, r3 - 1ce46: d0ea beq.n 1ce1e + 1cf12: 4640 mov r0, r8 + 1cf14: 9100 str r1, [sp, #0] + 1cf16: f88d 300f strb.w r3, [sp, #15] + 1cf1a: f008 f98d bl 25238 + 1cf1e: f89d 300f ldrb.w r3, [sp, #15] + 1cf22: 9900 ldr r1, [sp, #0] + 1cf24: 4298 cmp r0, r3 + 1cf26: d0ea beq.n 1cefe write(addr, &value, 1); - 1ce48: 2301 movs r3, #1 - 1ce4a: f10d 020f add.w r2, sp, #15 - 1ce4e: 4640 mov r0, r8 + 1cf28: 2301 movs r3, #1 + 1cf2a: f10d 020f add.w r2, sp, #15 + 1cf2e: 4640 mov r0, r8 updatedBytes += update(i,*p++); - 1ce50: f10a 0a01 add.w sl, sl, #1 + 1cf30: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 1ce54: f008 f870 bl 24f38 - 1ce58: 683b ldr r3, [r7, #0] - 1ce5a: 6a2a ldr r2, [r5, #32] - 1ce5c: 1a9b subs r3, r3, r2 + 1cf34: f008 f876 bl 25024 + 1cf38: 683b ldr r3, [r7, #0] + 1cf3a: 6a2a ldr r2, [r5, #32] + 1cf3c: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1ce5e: 2bf9 cmp r3, #249 ; 0xf9 - 1ce60: d9e2 bls.n 1ce28 - 1ce62: 2101 movs r1, #1 - 1ce64: 4658 mov r0, fp - 1ce66: f00f fb6f bl 2c548 - 1ce6a: 683b ldr r3, [r7, #0] + 1cf3e: 2bf9 cmp r3, #249 ; 0xf9 + 1cf40: d9e2 bls.n 1cf08 + 1cf42: 2101 movs r1, #1 + 1cf44: 4658 mov r0, fp + 1cf46: f00f fb73 bl 2c630 + 1cf4a: 683b ldr r3, [r7, #0] for(i=start;i - 1ce72: 2101 movs r1, #1 - 1ce74: 481a ldr r0, [pc, #104] ; (1cee0 ) - 1ce76: f00f fb67 bl 2c548 - 1ce7a: 4812 ldr r0, [pc, #72] ; (1cec4 ) - 1ce7c: f00c fffa bl 29e74 - 1ce80: 2109 movs r1, #9 - 1ce82: 4818 ldr r0, [pc, #96] ; (1cee4 ) - 1ce84: f00f fb60 bl 2c548 - 1ce88: 2101 movs r1, #1 - 1ce8a: 4810 ldr r0, [pc, #64] ; (1cecc ) - 1ce8c: f00f fb5c bl 2c548 + 1cf4e: 622b str r3, [r5, #32] + 1cf50: d1dc bne.n 1cf0c + 1cf52: 2101 movs r1, #1 + 1cf54: 481a ldr r0, [pc, #104] ; (1cfc0 ) + 1cf56: f00f fb6b bl 2c630 + 1cf5a: 4812 ldr r0, [pc, #72] ; (1cfa4 ) + 1cf5c: f00d f800 bl 29f60 + 1cf60: 2109 movs r1, #9 + 1cf62: 4818 ldr r0, [pc, #96] ; (1cfc4 ) + 1cf64: f00f fb64 bl 2c630 + 1cf68: 2101 movs r1, #1 + 1cf6a: 4810 ldr r0, [pc, #64] ; (1cfac ) + 1cf6c: f00f fb60 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1ce90: 2300 movs r3, #0 - 1ce92: 220a movs r2, #10 - 1ce94: 4651 mov r1, sl - 1ce96: 480b ldr r0, [pc, #44] ; (1cec4 ) - 1ce98: f00d f808 bl 29eac - 1ce9c: 2101 movs r1, #1 - 1ce9e: 480b ldr r0, [pc, #44] ; (1cecc ) - 1cea0: f00f fb52 bl 2c548 - 1cea4: 2105 movs r1, #5 - 1cea6: 4810 ldr r0, [pc, #64] ; (1cee8 ) - 1cea8: f00f fb4e bl 2c548 + 1cf70: 2300 movs r3, #0 + 1cf72: 220a movs r2, #10 + 1cf74: 4651 mov r1, sl + 1cf76: 480b ldr r0, [pc, #44] ; (1cfa4 ) + 1cf78: f00d f80e bl 29f98 + 1cf7c: 2101 movs r1, #1 + 1cf7e: 480b ldr r0, [pc, #44] ; (1cfac ) + 1cf80: f00f fb56 bl 2c630 + 1cf84: 2105 movs r1, #5 + 1cf86: 4810 ldr r0, [pc, #64] ; (1cfc8 ) + 1cf88: f00f fb52 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1ceac: 4805 ldr r0, [pc, #20] ; (1cec4 ) - 1ceae: f00c ffe1 bl 29e74 + 1cf8c: 4805 ldr r0, [pc, #20] ; (1cfa4 ) + 1cf8e: f00c ffe7 bl 29f60 debugStopTiming(); - 1ceb2: 9801 ldr r0, [sp, #4] - 1ceb4: f7ff f878 bl 1bfa8 - } - 1ceb8: b005 add sp, #20 - 1ceba: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1cebe: bf00 nop - 1cec0: 20003c58 .word 0x20003c58 - 1cec4: 20004ba8 .word 0x20004ba8 - 1cec8: 200036c8 .word 0x200036c8 - 1cecc: 200023ec .word 0x200023ec - 1ced0: 20003e04 .word 0x20003e04 - 1ced4: 20003e10 .word 0x20003e10 - 1ced8: 20003e1c .word 0x20003e1c - 1cedc: 2000bae8 .word 0x2000bae8 - 1cee0: 200030b8 .word 0x200030b8 - 1cee4: 20003e2c .word 0x20003e2c - 1cee8: 20002448 .word 0x20002448 - -0001ceec : + 1cf92: 9801 ldr r0, [sp, #4] + 1cf94: f7ff f878 bl 1c088 + } + 1cf98: b005 add sp, #20 + 1cf9a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1cf9e: bf00 nop + 1cfa0: 20003d18 .word 0x20003d18 + 1cfa4: 20004c68 .word 0x20004c68 + 1cfa8: 20003788 .word 0x20003788 + 1cfac: 200023ec .word 0x200023ec + 1cfb0: 20003ec4 .word 0x20003ec4 + 1cfb4: 20003ed0 .word 0x20003ed0 + 1cfb8: 20003edc .word 0x20003edc + 1cfbc: 2000bb08 .word 0x2000bb08 + 1cfc0: 20003150 .word 0x20003150 + 1cfc4: 20003eec .word 0x20003eec + 1cfc8: 20002448 .word 0x20002448 + +0001cfcc : void saveGlobalLed(uint8_t index){ - 1ceec: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1cef0: 4606 mov r6, r0 - 1cef2: 460c mov r4, r1 - 1cef4: b085 sub sp, #20 + 1cfcc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1cfd0: 4606 mov r6, r0 + 1cfd2: 460c mov r4, r1 + 1cfd4: b085 sub sp, #20 storage.set(address, store.global.leds[index]); - 1cef6: 2703 movs r7, #3 + 1cfd6: 2703 movs r7, #3 uint16_t address = getGlobalOffset(); - 1cef8: f7fd fc72 bl 1a7e0 + 1cfd8: f7fd fc72 bl 1a8c0 address += getGlobalLedOffset(index); - 1cefc: 4621 mov r1, r4 + 1cfdc: 4621 mov r1, r4 uint16_t address = getGlobalOffset(); - 1cefe: 4605 mov r5, r0 + 1cfde: 4605 mov r5, r0 address += getGlobalLedOffset(index); - 1cf00: 4630 mov r0, r6 - 1cf02: f7fd fcb3 bl 1a86c + 1cfe0: 4630 mov r0, r6 + 1cfe2: f7fd fcb3 bl 1a94c storage.set(address, store.global.leds[index]); - 1cf06: f241 43d7 movw r3, #5335 ; 0x14d7 - 1cf0a: 46b2 mov sl, r6 + 1cfe6: f241 43d7 movw r3, #5335 ; 0x14d7 + 1cfea: 46b2 mov sl, r6 uint16_t address = getGlobalOffset(); - 1cf0c: b2ad uxth r5, r5 + 1cfec: b2ad uxth r5, r5 storage.set(address, store.global.leds[index]); - 1cf0e: fb17 3404 smlabb r4, r7, r4, r3 - 1cf12: 68f3 ldr r3, [r6, #12] + 1cfee: fb17 3404 smlabb r4, r7, r4, r3 + 1cff2: 68f3 ldr r3, [r6, #12] address += getGlobalLedOffset(index); - 1cf14: 4405 add r5, r0 - 1cf16: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 + 1cff4: 4405 add r5, r0 + 1cff6: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 storage.set(address, store.global.leds[index]); - 1cf1a: f85a 3b0c ldr.w r3, [sl], #12 + 1cffa: f85a 3b0c ldr.w r3, [sl], #12 address += getGlobalLedOffset(index); - 1cf1e: b2ad uxth r5, r5 + 1cffe: b2ad uxth r5, r5 storage.set(address, store.global.leds[index]); - 1cf20: 441c add r4, r3 + 1d000: 441c add r4, r3 if(!globals.getStorageDebug()){ - 1cf22: 07d3 lsls r3, r2, #31 - 1cf24: d521 bpl.n 1cf6a - 1cf26: 2100 movs r1, #0 - 1cf28: 4841 ldr r0, [pc, #260] ; (1d030 ) - 1cf2a: f00f fb0d bl 2c548 - 1cf2e: 4841 ldr r0, [pc, #260] ; (1d034 ) - 1cf30: f00c ffa0 bl 29e74 - 1cf34: 4639 mov r1, r7 - 1cf36: 4840 ldr r0, [pc, #256] ; (1d038 ) - 1cf38: f00f fb06 bl 2c548 - 1cf3c: 2101 movs r1, #1 - 1cf3e: 483f ldr r0, [pc, #252] ; (1d03c ) - 1cf40: f00f fb02 bl 2c548 - 1cf44: 2108 movs r1, #8 - 1cf46: 483e ldr r0, [pc, #248] ; (1d040 ) - 1cf48: f00f fafe bl 2c548 - 1cf4c: 2101 movs r1, #1 - 1cf4e: 483b ldr r0, [pc, #236] ; (1d03c ) - 1cf50: f00f fafa bl 2c548 - 1cf54: 2108 movs r1, #8 - 1cf56: 483b ldr r0, [pc, #236] ; (1d044 ) - 1cf58: f00f faf6 bl 2c548 - 1cf5c: 2101 movs r1, #1 - 1cf5e: 4837 ldr r0, [pc, #220] ; (1d03c ) - 1cf60: f00f faf2 bl 2c548 + 1d002: 07d3 lsls r3, r2, #31 + 1d004: d521 bpl.n 1d04a + 1d006: 2100 movs r1, #0 + 1d008: 4841 ldr r0, [pc, #260] ; (1d110 ) + 1d00a: f00f fb11 bl 2c630 + 1d00e: 4841 ldr r0, [pc, #260] ; (1d114 ) + 1d010: f00c ffa6 bl 29f60 + 1d014: 4639 mov r1, r7 + 1d016: 4840 ldr r0, [pc, #256] ; (1d118 ) + 1d018: f00f fb0a bl 2c630 + 1d01c: 2101 movs r1, #1 + 1d01e: 483f ldr r0, [pc, #252] ; (1d11c ) + 1d020: f00f fb06 bl 2c630 + 1d024: 2108 movs r1, #8 + 1d026: 483e ldr r0, [pc, #248] ; (1d120 ) + 1d028: f00f fb02 bl 2c630 + 1d02c: 2101 movs r1, #1 + 1d02e: 483b ldr r0, [pc, #236] ; (1d11c ) + 1d030: f00f fafe bl 2c630 + 1d034: 2108 movs r1, #8 + 1d036: 483b ldr r0, [pc, #236] ; (1d124 ) + 1d038: f00f fafa bl 2c630 + 1d03c: 2101 movs r1, #1 + 1d03e: 4837 ldr r0, [pc, #220] ; (1d11c ) + 1d040: f00f faf6 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1cf64: f00d fb06 bl 2a574 - 1cf68: 62b0 str r0, [r6, #40] ; 0x28 - 1cf6a: 210e movs r1, #14 - 1cf6c: 4836 ldr r0, [pc, #216] ; (1d048 ) - 1cf6e: f00f faeb bl 2c548 + 1d044: f00d fb0a bl 2a65c + 1d048: 62b0 str r0, [r6, #40] ; 0x28 + 1d04a: 210e movs r1, #14 + 1d04c: 4836 ldr r0, [pc, #216] ; (1d128 ) + 1d04e: f00f faef bl 2c630 unsigned long n = sizeof(value)+start; - 1cf72: 1cef adds r7, r5, #3 - 1cf74: 1c6b adds r3, r5, #1 - 1cf76: f8df 80e0 ldr.w r8, [pc, #224] ; 1d058 + 1d052: 1cef adds r7, r5, #3 + 1d054: 1c6b adds r3, r5, #1 + 1d056: f8df 80e0 ldr.w r8, [pc, #224] ; 1d138 STORAGE.put(address,file); - 1cf7a: f106 0910 add.w r9, r6, #16 - 1cf7e: 1b2d subs r5, r5, r4 - 1cf80: 429f cmp r7, r3 - 1cf82: bf34 ite cc - 1cf84: 2701 movcc r7, #1 - 1cf86: 2703 movcs r7, #3 + 1d05a: f106 0910 add.w r9, r6, #16 + 1d05e: 1b2d subs r5, r5, r4 + 1d060: 429f cmp r7, r3 + 1d062: bf34 ite cc + 1d064: 2701 movcc r7, #1 + 1d066: 2703 movcs r7, #3 unsigned long updatedBytes = 0; - 1cf88: f04f 0b00 mov.w fp, #0 - 1cf8c: f8d8 3000 ldr.w r3, [r8] - 1cf90: 4427 add r7, r4 - 1cf92: 6233 str r3, [r6, #32] + 1d068: f04f 0b00 mov.w fp, #0 + 1d06c: f8d8 3000 ldr.w r3, [r8] + 1d070: 4427 add r7, r4 + 1d072: 6233 str r3, [r6, #32] for(i=start;i - 1cfa6: f89d 300f ldrb.w r3, [sp, #15] - 1cfaa: 9901 ldr r1, [sp, #4] - 1cfac: 4298 cmp r0, r3 - 1cfae: d135 bne.n 1d01c - 1cfb0: f8d8 3000 ldr.w r3, [r8] + 1d07a: 4648 mov r0, r9 + 1d07c: 9101 str r1, [sp, #4] + 1d07e: f88d 300f strb.w r3, [sp, #15] + 1d082: f008 f8d9 bl 25238 + 1d086: f89d 300f ldrb.w r3, [sp, #15] + 1d08a: 9901 ldr r1, [sp, #4] + 1d08c: 4298 cmp r0, r3 + 1d08e: d135 bne.n 1d0fc + 1d090: f8d8 3000 ldr.w r3, [r8] operator unsigned long () const { return millis() - ms; } - 1cfb4: 6a32 ldr r2, [r6, #32] - 1cfb6: 1a9b subs r3, r3, r2 + 1d094: 6a32 ldr r2, [r6, #32] + 1d096: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1cfb8: 2bf9 cmp r3, #249 ; 0xf9 - 1cfba: d827 bhi.n 1d00c + 1d098: 2bf9 cmp r3, #249 ; 0xf9 + 1d09a: d827 bhi.n 1d0ec for(i=start;i - 1cfc0: 2101 movs r1, #1 - 1cfc2: 4822 ldr r0, [pc, #136] ; (1d04c ) - 1cfc4: f00f fac0 bl 2c548 - 1cfc8: 481a ldr r0, [pc, #104] ; (1d034 ) - 1cfca: f00c ff53 bl 29e74 - 1cfce: 2109 movs r1, #9 - 1cfd0: 481f ldr r0, [pc, #124] ; (1d050 ) - 1cfd2: f00f fab9 bl 2c548 - 1cfd6: 2101 movs r1, #1 - 1cfd8: 4818 ldr r0, [pc, #96] ; (1d03c ) - 1cfda: f00f fab5 bl 2c548 + 1d09c: 42bc cmp r4, r7 + 1d09e: d1e9 bne.n 1d074 + 1d0a0: 2101 movs r1, #1 + 1d0a2: 4822 ldr r0, [pc, #136] ; (1d12c ) + 1d0a4: f00f fac4 bl 2c630 + 1d0a8: 481a ldr r0, [pc, #104] ; (1d114 ) + 1d0aa: f00c ff59 bl 29f60 + 1d0ae: 2109 movs r1, #9 + 1d0b0: 481f ldr r0, [pc, #124] ; (1d130 ) + 1d0b2: f00f fabd bl 2c630 + 1d0b6: 2101 movs r1, #1 + 1d0b8: 4818 ldr r0, [pc, #96] ; (1d11c ) + 1d0ba: f00f fab9 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1cfde: 2300 movs r3, #0 - 1cfe0: 220a movs r2, #10 - 1cfe2: 4659 mov r1, fp - 1cfe4: 4813 ldr r0, [pc, #76] ; (1d034 ) - 1cfe6: f00c ff61 bl 29eac - 1cfea: 2101 movs r1, #1 - 1cfec: 4813 ldr r0, [pc, #76] ; (1d03c ) - 1cfee: f00f faab bl 2c548 - 1cff2: 2105 movs r1, #5 - 1cff4: 4817 ldr r0, [pc, #92] ; (1d054 ) - 1cff6: f00f faa7 bl 2c548 + 1d0be: 2300 movs r3, #0 + 1d0c0: 220a movs r2, #10 + 1d0c2: 4659 mov r1, fp + 1d0c4: 4813 ldr r0, [pc, #76] ; (1d114 ) + 1d0c6: f00c ff67 bl 29f98 + 1d0ca: 2101 movs r1, #1 + 1d0cc: 4813 ldr r0, [pc, #76] ; (1d11c ) + 1d0ce: f00f faaf bl 2c630 + 1d0d2: 2105 movs r1, #5 + 1d0d4: 4817 ldr r0, [pc, #92] ; (1d134 ) + 1d0d6: f00f faab bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1cffa: 480e ldr r0, [pc, #56] ; (1d034 ) - 1cffc: f00c ff3a bl 29e74 + 1d0da: 480e ldr r0, [pc, #56] ; (1d114 ) + 1d0dc: f00c ff40 bl 29f60 debugStopTiming(); - 1d000: 4650 mov r0, sl - 1d002: f7fe ffd1 bl 1bfa8 - } - 1d006: b005 add sp, #20 - 1d008: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1d00c: 2101 movs r1, #1 - 1d00e: 480f ldr r0, [pc, #60] ; (1d04c ) - 1d010: f00f fa9a bl 2c548 - 1d014: f8d8 3000 ldr.w r3, [r8] + 1d0e0: 4650 mov r0, sl + 1d0e2: f7fe ffd1 bl 1c088 + } + 1d0e6: b005 add sp, #20 + 1d0e8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1d0ec: 2101 movs r1, #1 + 1d0ee: 480f ldr r0, [pc, #60] ; (1d12c ) + 1d0f0: f00f fa9e bl 2c630 + 1d0f4: f8d8 3000 ldr.w r3, [r8] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 1d018: 6233 str r3, [r6, #32] - 1d01a: e7cf b.n 1cfbc + 1d0f8: 6233 str r3, [r6, #32] + 1d0fa: e7cf b.n 1d09c write(addr, &value, 1); - 1d01c: 2301 movs r3, #1 - 1d01e: f10d 020f add.w r2, sp, #15 - 1d022: 4648 mov r0, r9 + 1d0fc: 2301 movs r3, #1 + 1d0fe: f10d 020f add.w r2, sp, #15 + 1d102: 4648 mov r0, r9 updatedBytes += update(i,*p++); - 1d024: f10b 0b01 add.w fp, fp, #1 + 1d104: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 1d028: f007 ff86 bl 24f38 + 1d108: f007 ff8c bl 25024 return 1; - 1d02c: e7c0 b.n 1cfb0 - 1d02e: bf00 nop - 1d030: 20003c58 .word 0x20003c58 - 1d034: 20004ba8 .word 0x20004ba8 - 1d038: 200036c8 .word 0x200036c8 - 1d03c: 200023ec .word 0x200023ec - 1d040: 20003e04 .word 0x20003e04 - 1d044: 20003e10 .word 0x20003e10 - 1d048: 20003e1c .word 0x20003e1c - 1d04c: 200030b8 .word 0x200030b8 - 1d050: 20003e2c .word 0x20003e2c - 1d054: 20002448 .word 0x20002448 - 1d058: 2000bae8 .word 0x2000bae8 - -0001d05c : + 1d10c: e7c0 b.n 1d090 + 1d10e: bf00 nop + 1d110: 20003d18 .word 0x20003d18 + 1d114: 20004c68 .word 0x20004c68 + 1d118: 20003788 .word 0x20003788 + 1d11c: 200023ec .word 0x200023ec + 1d120: 20003ec4 .word 0x20003ec4 + 1d124: 20003ed0 .word 0x20003ed0 + 1d128: 20003edc .word 0x20003edc + 1d12c: 20003150 .word 0x20003150 + 1d130: 20003eec .word 0x20003eec + 1d134: 20002448 .word 0x20002448 + 1d138: 2000bb08 .word 0x2000bb08 + +0001d13c : bool isBackup() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_BACKUP);} - 1d05c: f890 2044 ldrb.w r2, [r0, #68] ; 0x44 + 1d13c: f890 2044 ldrb.w r2, [r0, #68] ; 0x44 midi.globals.editorConnected() && - 1d060: 0711 lsls r1, r2, #28 - 1d062: f3c2 03c0 ubfx r3, r2, #3, #1 - 1d066: d50a bpl.n 1d07e - 1d068: 6843 ldr r3, [r0, #4] - 1d06a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1d06e: 6dda ldr r2, [r3, #92] ; 0x5c - 1d070: f3c2 0380 ubfx r3, r2, #2, #1 + 1d140: 0711 lsls r1, r2, #28 + 1d142: f3c2 03c0 ubfx r3, r2, #3, #1 + 1d146: d50a bpl.n 1d15e + 1d148: 6843 ldr r3, [r0, #4] + 1d14a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1d14e: 6dda ldr r2, [r3, #92] ; 0x5c + 1d150: f3c2 0380 ubfx r3, r2, #2, #1 return isBackupMessage() && - 1d074: 0752 lsls r2, r2, #29 - 1d076: d502 bpl.n 1d07e - 1d078: 6b03 ldr r3, [r0, #48] ; 0x30 - 1d07a: f3c3 3340 ubfx r3, r3, #13, #1 + 1d154: 0752 lsls r2, r2, #29 + 1d156: d502 bpl.n 1d15e + 1d158: 6b03 ldr r3, [r0, #48] ; 0x30 + 1d15a: f3c3 3340 ubfx r3, r3, #13, #1 } - 1d07e: 4618 mov r0, r3 - 1d080: 4770 bx lr - 1d082: bf00 nop + 1d15e: 4618 mov r0, r3 + 1d160: 4770 bx lr + 1d162: bf00 nop -0001d084 : +0001d164 : void saveDevicePorts(uint8_t index){ - 1d084: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1d088: 4605 mov r5, r0 - 1d08a: 460e mov r6, r1 - 1d08c: b085 sub sp, #20 + 1d164: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1d168: 4605 mov r5, r0 + 1d16a: 460e mov r6, r1 + 1d16c: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1d08e: f7fd fba7 bl 1a7e0 + 1d16e: f7fd fba7 bl 1a8c0 address += getPortPresetsOffset(index); - 1d092: 4631 mov r1, r6 + 1d172: 4631 mov r1, r6 uint16_t address = getGlobalOffset(); - 1d094: 4604 mov r4, r0 + 1d174: 4604 mov r4, r0 address += getPortPresetsOffset(index); - 1d096: 4628 mov r0, r5 - 1d098: f7fd fbb4 bl 1a804 - 1d09c: 68eb ldr r3, [r5, #12] + 1d176: 4628 mov r0, r5 + 1d178: f7fd fbb4 bl 1a8e4 + 1d17c: 68eb ldr r3, [r5, #12] uint16_t address = getGlobalOffset(); - 1d09e: b2a4 uxth r4, r4 + 1d17e: b2a4 uxth r4, r4 storage.set(address, store.global.portPresets[index]); - 1d0a0: 46a9 mov r9, r5 - 1d0a2: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 1d0a6: f206 767c addw r6, r6, #1916 ; 0x77c + 1d180: 46a9 mov r9, r5 + 1d182: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1d186: f206 767c addw r6, r6, #1916 ; 0x77c address += getPortPresetsOffset(index); - 1d0aa: 4404 add r4, r0 + 1d18a: 4404 add r4, r0 storage.set(address, store.global.portPresets[index]); - 1d0ac: f859 7b0c ldr.w r7, [r9], #12 + 1d18c: f859 7b0c ldr.w r7, [r9], #12 if(!globals.getStorageDebug()){ - 1d0b0: 07db lsls r3, r3, #31 + 1d190: 07db lsls r3, r3, #31 address += getPortPresetsOffset(index); - 1d0b2: b2a4 uxth r4, r4 + 1d192: b2a4 uxth r4, r4 storage.set(address, store.global.portPresets[index]); - 1d0b4: eb07 0746 add.w r7, r7, r6, lsl #1 - 1d0b8: d521 bpl.n 1d0fe - 1d0ba: 2100 movs r1, #0 - 1d0bc: 4842 ldr r0, [pc, #264] ; (1d1c8 ) - 1d0be: f00f fa43 bl 2c548 - 1d0c2: 4842 ldr r0, [pc, #264] ; (1d1cc ) - 1d0c4: f00c fed6 bl 29e74 - 1d0c8: 2103 movs r1, #3 - 1d0ca: 4841 ldr r0, [pc, #260] ; (1d1d0 ) - 1d0cc: f00f fa3c bl 2c548 - 1d0d0: 2101 movs r1, #1 - 1d0d2: 4840 ldr r0, [pc, #256] ; (1d1d4 ) - 1d0d4: f00f fa38 bl 2c548 - 1d0d8: 2108 movs r1, #8 - 1d0da: 483f ldr r0, [pc, #252] ; (1d1d8 ) - 1d0dc: f00f fa34 bl 2c548 - 1d0e0: 2101 movs r1, #1 - 1d0e2: 483c ldr r0, [pc, #240] ; (1d1d4 ) - 1d0e4: f00f fa30 bl 2c548 - 1d0e8: 2108 movs r1, #8 - 1d0ea: 483c ldr r0, [pc, #240] ; (1d1dc ) - 1d0ec: f00f fa2c bl 2c548 - 1d0f0: 2101 movs r1, #1 - 1d0f2: 4838 ldr r0, [pc, #224] ; (1d1d4 ) - 1d0f4: f00f fa28 bl 2c548 + 1d194: eb07 0746 add.w r7, r7, r6, lsl #1 + 1d198: d521 bpl.n 1d1de + 1d19a: 2100 movs r1, #0 + 1d19c: 4842 ldr r0, [pc, #264] ; (1d2a8 ) + 1d19e: f00f fa47 bl 2c630 + 1d1a2: 4842 ldr r0, [pc, #264] ; (1d2ac ) + 1d1a4: f00c fedc bl 29f60 + 1d1a8: 2103 movs r1, #3 + 1d1aa: 4841 ldr r0, [pc, #260] ; (1d2b0 ) + 1d1ac: f00f fa40 bl 2c630 + 1d1b0: 2101 movs r1, #1 + 1d1b2: 4840 ldr r0, [pc, #256] ; (1d2b4 ) + 1d1b4: f00f fa3c bl 2c630 + 1d1b8: 2108 movs r1, #8 + 1d1ba: 483f ldr r0, [pc, #252] ; (1d2b8 ) + 1d1bc: f00f fa38 bl 2c630 + 1d1c0: 2101 movs r1, #1 + 1d1c2: 483c ldr r0, [pc, #240] ; (1d2b4 ) + 1d1c4: f00f fa34 bl 2c630 + 1d1c8: 2108 movs r1, #8 + 1d1ca: 483c ldr r0, [pc, #240] ; (1d2bc ) + 1d1cc: f00f fa30 bl 2c630 + 1d1d0: 2101 movs r1, #1 + 1d1d2: 4838 ldr r0, [pc, #224] ; (1d2b4 ) + 1d1d4: f00f fa2c bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1d0f8: f00d fa3c bl 2a574 - 1d0fc: 62a8 str r0, [r5, #40] ; 0x28 - 1d0fe: 210e movs r1, #14 - 1d100: 4837 ldr r0, [pc, #220] ; (1d1e0 ) - 1d102: f00f fa21 bl 2c548 - 1d106: 1c63 adds r3, r4, #1 + 1d1d8: f00d fa40 bl 2a65c + 1d1dc: 62a8 str r0, [r5, #40] ; 0x28 + 1d1de: 210e movs r1, #14 + 1d1e0: 4837 ldr r0, [pc, #220] ; (1d2c0 ) + 1d1e2: f00f fa25 bl 2c630 + 1d1e6: 1c63 adds r3, r4, #1 unsigned long n = sizeof(value)+start; - 1d108: 1ca2 adds r2, r4, #2 - 1d10a: f8df 80e4 ldr.w r8, [pc, #228] ; 1d1f0 + 1d1e8: 1ca2 adds r2, r4, #2 + 1d1ea: f8df 80e4 ldr.w r8, [pc, #228] ; 1d2d0 STORAGE.put(address,file); - 1d10e: f105 0a10 add.w sl, r5, #16 - 1d112: 1e7e subs r6, r7, #1 - 1d114: 429a cmp r2, r3 + 1d1ee: f105 0a10 add.w sl, r5, #16 + 1d1f2: 1e7e subs r6, r7, #1 + 1d1f4: 429a cmp r2, r3 unsigned long updatedBytes = 0; - 1d116: f04f 0b00 mov.w fp, #0 - 1d11a: bf34 ite cc - 1d11c: 2300 movcc r3, #0 - 1d11e: 2301 movcs r3, #1 - 1d120: 9301 str r3, [sp, #4] - 1d122: f8d8 3000 ldr.w r3, [r8] - 1d126: 622b str r3, [r5, #32] + 1d1f6: f04f 0b00 mov.w fp, #0 + 1d1fa: bf34 ite cc + 1d1fc: 2300 movcc r3, #0 + 1d1fe: 2301 movcs r3, #1 + 1d200: 9301 str r3, [sp, #4] + 1d202: f8d8 3000 ldr.w r3, [r8] + 1d206: 622b str r3, [r5, #32] updatedBytes += update(i,*p++); - 1d128: f816 3f01 ldrb.w r3, [r6, #1]! + 1d208: f816 3f01 ldrb.w r3, [r6, #1]! if(read(addr) != value){ - 1d12c: 4621 mov r1, r4 - 1d12e: 4650 mov r0, sl - 1d130: f88d 300f strb.w r3, [sp, #15] - 1d134: f008 f80a bl 2514c - 1d138: f89d 300f ldrb.w r3, [sp, #15] - 1d13c: 4298 cmp r0, r3 - 1d13e: d131 bne.n 1d1a4 - 1d140: f8d8 3000 ldr.w r3, [r8] + 1d20c: 4621 mov r1, r4 + 1d20e: 4650 mov r0, sl + 1d210: f88d 300f strb.w r3, [sp, #15] + 1d214: f008 f810 bl 25238 + 1d218: f89d 300f ldrb.w r3, [sp, #15] + 1d21c: 4298 cmp r0, r3 + 1d21e: d131 bne.n 1d284 + 1d220: f8d8 3000 ldr.w r3, [r8] for(i=start;i=250){ - 1d14a: 2bf9 cmp r3, #249 ; 0xf9 - 1d14c: d834 bhi.n 1d1b8 + 1d22a: 2bf9 cmp r3, #249 ; 0xf9 + 1d22c: d834 bhi.n 1d298 for(i=start;i - 1d156: 2101 movs r1, #1 - 1d158: 4822 ldr r0, [pc, #136] ; (1d1e4 ) - 1d15a: 9301 str r3, [sp, #4] - 1d15c: f00f f9f4 bl 2c548 - 1d160: 481a ldr r0, [pc, #104] ; (1d1cc ) - 1d162: f00c fe87 bl 29e74 - 1d166: 2109 movs r1, #9 - 1d168: 481f ldr r0, [pc, #124] ; (1d1e8 ) - 1d16a: f00f f9ed bl 2c548 - 1d16e: 2101 movs r1, #1 - 1d170: 4818 ldr r0, [pc, #96] ; (1d1d4 ) - 1d172: f00f f9e9 bl 2c548 + 1d22e: 1bbb subs r3, r7, r6 + 1d230: 9a01 ldr r2, [sp, #4] + 1d232: 189b adds r3, r3, r2 + 1d234: d1e8 bne.n 1d208 + 1d236: 2101 movs r1, #1 + 1d238: 4822 ldr r0, [pc, #136] ; (1d2c4 ) + 1d23a: 9301 str r3, [sp, #4] + 1d23c: f00f f9f8 bl 2c630 + 1d240: 481a ldr r0, [pc, #104] ; (1d2ac ) + 1d242: f00c fe8d bl 29f60 + 1d246: 2109 movs r1, #9 + 1d248: 481f ldr r0, [pc, #124] ; (1d2c8 ) + 1d24a: f00f f9f1 bl 2c630 + 1d24e: 2101 movs r1, #1 + 1d250: 4818 ldr r0, [pc, #96] ; (1d2b4 ) + 1d252: f00f f9ed bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1d176: 9b01 ldr r3, [sp, #4] - 1d178: 220a movs r2, #10 - 1d17a: 4659 mov r1, fp - 1d17c: 4813 ldr r0, [pc, #76] ; (1d1cc ) - 1d17e: f00c fe95 bl 29eac - 1d182: 2101 movs r1, #1 - 1d184: 4813 ldr r0, [pc, #76] ; (1d1d4 ) - 1d186: f00f f9df bl 2c548 - 1d18a: 2105 movs r1, #5 - 1d18c: 4817 ldr r0, [pc, #92] ; (1d1ec ) - 1d18e: f00f f9db bl 2c548 + 1d256: 9b01 ldr r3, [sp, #4] + 1d258: 220a movs r2, #10 + 1d25a: 4659 mov r1, fp + 1d25c: 4813 ldr r0, [pc, #76] ; (1d2ac ) + 1d25e: f00c fe9b bl 29f98 + 1d262: 2101 movs r1, #1 + 1d264: 4813 ldr r0, [pc, #76] ; (1d2b4 ) + 1d266: f00f f9e3 bl 2c630 + 1d26a: 2105 movs r1, #5 + 1d26c: 4817 ldr r0, [pc, #92] ; (1d2cc ) + 1d26e: f00f f9df bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1d192: 480e ldr r0, [pc, #56] ; (1d1cc ) - 1d194: f00c fe6e bl 29e74 + 1d272: 480e ldr r0, [pc, #56] ; (1d2ac ) + 1d274: f00c fe74 bl 29f60 debugStopTiming(); - 1d198: 4648 mov r0, r9 - 1d19a: f7fe ff05 bl 1bfa8 + 1d278: 4648 mov r0, r9 + 1d27a: f7fe ff05 bl 1c088 } - 1d19e: b005 add sp, #20 - 1d1a0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1d27e: b005 add sp, #20 + 1d280: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} write(addr, &value, 1); - 1d1a4: 2301 movs r3, #1 - 1d1a6: 4621 mov r1, r4 - 1d1a8: f10d 020f add.w r2, sp, #15 - 1d1ac: 4650 mov r0, sl + 1d284: 2301 movs r3, #1 + 1d286: 4621 mov r1, r4 + 1d288: f10d 020f add.w r2, sp, #15 + 1d28c: 4650 mov r0, sl updatedBytes += update(i,*p++); - 1d1ae: f10b 0b01 add.w fp, fp, #1 + 1d28e: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 1d1b2: f007 fec1 bl 24f38 + 1d292: f007 fec7 bl 25024 return 1; - 1d1b6: e7c3 b.n 1d140 - 1d1b8: 2101 movs r1, #1 - 1d1ba: 480a ldr r0, [pc, #40] ; (1d1e4 ) - 1d1bc: f00f f9c4 bl 2c548 - 1d1c0: f8d8 3000 ldr.w r3, [r8] + 1d296: e7c3 b.n 1d220 + 1d298: 2101 movs r1, #1 + 1d29a: 480a ldr r0, [pc, #40] ; (1d2c4 ) + 1d29c: f00f f9c8 bl 2c630 + 1d2a0: f8d8 3000 ldr.w r3, [r8] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 1d1c4: 622b str r3, [r5, #32] - 1d1c6: e7c2 b.n 1d14e - 1d1c8: 20003c58 .word 0x20003c58 - 1d1cc: 20004ba8 .word 0x20004ba8 - 1d1d0: 200036c8 .word 0x200036c8 - 1d1d4: 200023ec .word 0x200023ec - 1d1d8: 20003e04 .word 0x20003e04 - 1d1dc: 20003e10 .word 0x20003e10 - 1d1e0: 20003e1c .word 0x20003e1c - 1d1e4: 200030b8 .word 0x200030b8 - 1d1e8: 20003e2c .word 0x20003e2c - 1d1ec: 20002448 .word 0x20002448 - 1d1f0: 2000bae8 .word 0x2000bae8 - -0001d1f4 : + 1d2a4: 622b str r3, [r5, #32] + 1d2a6: e7c2 b.n 1d22e + 1d2a8: 20003d18 .word 0x20003d18 + 1d2ac: 20004c68 .word 0x20004c68 + 1d2b0: 20003788 .word 0x20003788 + 1d2b4: 200023ec .word 0x200023ec + 1d2b8: 20003ec4 .word 0x20003ec4 + 1d2bc: 20003ed0 .word 0x20003ed0 + 1d2c0: 20003edc .word 0x20003edc + 1d2c4: 20003150 .word 0x20003150 + 1d2c8: 20003eec .word 0x20003eec + 1d2cc: 20002448 .word 0x20002448 + 1d2d0: 2000bb08 .word 0x2000bb08 + +0001d2d4 : void saveShortCuts(uint8_t index){ - 1d1f4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1d1f8: 460c mov r4, r1 - 1d1fa: 4606 mov r6, r0 - 1d1fc: b085 sub sp, #20 + 1d2d4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1d2d8: 460c mov r4, r1 + 1d2da: 4606 mov r6, r0 + 1d2dc: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1d1fe: f7fd faef bl 1a7e0 + 1d2de: f7fd faef bl 1a8c0 address += getShortcutsOffset(index); - 1d202: 4621 mov r1, r4 + 1d2e2: 4621 mov r1, r4 uint16_t address = getGlobalOffset(); - 1d204: 4605 mov r5, r0 + 1d2e4: 4605 mov r5, r0 address += getShortcutsOffset(index); - 1d206: 4630 mov r0, r6 - 1d208: f7fd fb00 bl 1a80c + 1d2e6: 4630 mov r0, r6 + 1d2e8: f7fd fb00 bl 1a8ec storage.set(address, store.global.shortcuts[index]); - 1d20c: f640 7218 movw r2, #3864 ; 0xf18 - 1d210: 2307 movs r3, #7 + 1d2ec: f640 7218 movw r2, #3864 ; 0xf18 + 1d2f0: 2307 movs r3, #7 uint16_t address = getGlobalOffset(); - 1d212: b2ad uxth r5, r5 + 1d2f2: b2ad uxth r5, r5 storage.set(address, store.global.shortcuts[index]); - 1d214: fb13 2304 smlabb r3, r3, r4, r2 - 1d218: 4632 mov r2, r6 + 1d2f4: fb13 2304 smlabb r3, r3, r4, r2 + 1d2f8: 4632 mov r2, r6 address += getShortcutsOffset(index); - 1d21a: 4405 add r5, r0 + 1d2fa: 4405 add r5, r0 storage.set(address, store.global.shortcuts[index]); - 1d21c: f852 4b0c ldr.w r4, [r2], #12 + 1d2fc: f852 4b0c ldr.w r4, [r2], #12 address += getShortcutsOffset(index); - 1d220: b2ad uxth r5, r5 + 1d300: b2ad uxth r5, r5 storage.set(address, store.global.shortcuts[index]); - 1d222: 441c add r4, r3 - 1d224: 68f3 ldr r3, [r6, #12] - 1d226: 9201 str r2, [sp, #4] - 1d228: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1d302: 441c add r4, r3 + 1d304: 68f3 ldr r3, [r6, #12] + 1d306: 9201 str r2, [sp, #4] + 1d308: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1d22c: 07db lsls r3, r3, #31 - 1d22e: d521 bpl.n 1d274 - 1d230: 2100 movs r1, #0 - 1d232: 4846 ldr r0, [pc, #280] ; (1d34c ) - 1d234: f00f f988 bl 2c548 - 1d238: 4845 ldr r0, [pc, #276] ; (1d350 ) - 1d23a: f00c fe1b bl 29e74 - 1d23e: 2103 movs r1, #3 - 1d240: 4844 ldr r0, [pc, #272] ; (1d354 ) - 1d242: f00f f981 bl 2c548 - 1d246: 2101 movs r1, #1 - 1d248: 4843 ldr r0, [pc, #268] ; (1d358 ) - 1d24a: f00f f97d bl 2c548 - 1d24e: 2108 movs r1, #8 - 1d250: 4842 ldr r0, [pc, #264] ; (1d35c ) - 1d252: f00f f979 bl 2c548 - 1d256: 2101 movs r1, #1 - 1d258: 483f ldr r0, [pc, #252] ; (1d358 ) - 1d25a: f00f f975 bl 2c548 - 1d25e: 2108 movs r1, #8 - 1d260: 483f ldr r0, [pc, #252] ; (1d360 ) - 1d262: f00f f971 bl 2c548 - 1d266: 2101 movs r1, #1 - 1d268: 483b ldr r0, [pc, #236] ; (1d358 ) - 1d26a: f00f f96d bl 2c548 + 1d30c: 07db lsls r3, r3, #31 + 1d30e: d521 bpl.n 1d354 + 1d310: 2100 movs r1, #0 + 1d312: 4846 ldr r0, [pc, #280] ; (1d42c ) + 1d314: f00f f98c bl 2c630 + 1d318: 4845 ldr r0, [pc, #276] ; (1d430 ) + 1d31a: f00c fe21 bl 29f60 + 1d31e: 2103 movs r1, #3 + 1d320: 4844 ldr r0, [pc, #272] ; (1d434 ) + 1d322: f00f f985 bl 2c630 + 1d326: 2101 movs r1, #1 + 1d328: 4843 ldr r0, [pc, #268] ; (1d438 ) + 1d32a: f00f f981 bl 2c630 + 1d32e: 2108 movs r1, #8 + 1d330: 4842 ldr r0, [pc, #264] ; (1d43c ) + 1d332: f00f f97d bl 2c630 + 1d336: 2101 movs r1, #1 + 1d338: 483f ldr r0, [pc, #252] ; (1d438 ) + 1d33a: f00f f979 bl 2c630 + 1d33e: 2108 movs r1, #8 + 1d340: 483f ldr r0, [pc, #252] ; (1d440 ) + 1d342: f00f f975 bl 2c630 + 1d346: 2101 movs r1, #1 + 1d348: 483b ldr r0, [pc, #236] ; (1d438 ) + 1d34a: f00f f971 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1d26e: f00d f981 bl 2a574 - 1d272: 62b0 str r0, [r6, #40] ; 0x28 - 1d274: 210e movs r1, #14 - 1d276: 483b ldr r0, [pc, #236] ; (1d364 ) - 1d278: f00f f966 bl 2c548 + 1d34e: f00d f985 bl 2a65c + 1d352: 62b0 str r0, [r6, #40] ; 0x28 + 1d354: 210e movs r1, #14 + 1d356: 483b ldr r0, [pc, #236] ; (1d444 ) + 1d358: f00f f96a bl 2c630 unsigned long n = sizeof(value)+start; - 1d27c: 1def adds r7, r5, #7 - 1d27e: 1c6b adds r3, r5, #1 - 1d280: f8df 80f0 ldr.w r8, [pc, #240] ; 1d374 + 1d35c: 1def adds r7, r5, #7 + 1d35e: 1c6b adds r3, r5, #1 + 1d360: f8df 80f0 ldr.w r8, [pc, #240] ; 1d454 STORAGE.put(address,file); - 1d284: f106 0910 add.w r9, r6, #16 - 1d288: 1b2d subs r5, r5, r4 - 1d28a: 429f cmp r7, r3 - 1d28c: bf34 ite cc - 1d28e: 2701 movcc r7, #1 - 1d290: 2707 movcs r7, #7 - 1d292: f8d8 3000 ldr.w r3, [r8] + 1d364: f106 0910 add.w r9, r6, #16 + 1d368: 1b2d subs r5, r5, r4 + 1d36a: 429f cmp r7, r3 + 1d36c: bf34 ite cc + 1d36e: 2701 movcc r7, #1 + 1d370: 2707 movcs r7, #7 + 1d372: f8d8 3000 ldr.w r3, [r8] unsigned long updatedBytes = 0; - 1d296: f04f 0a00 mov.w sl, #0 - 1d29a: f8df b0cc ldr.w fp, [pc, #204] ; 1d368 - 1d29e: 4427 add r7, r4 - 1d2a0: 6233 str r3, [r6, #32] + 1d376: f04f 0a00 mov.w sl, #0 + 1d37a: f8df b0cc ldr.w fp, [pc, #204] ; 1d448 + 1d37e: 4427 add r7, r4 + 1d380: 6233 str r3, [r6, #32] for(i=start;i - 1d2a4: f8d8 3000 ldr.w r3, [r8] + 1d382: e007 b.n 1d394 + 1d384: f8d8 3000 ldr.w r3, [r8] operator unsigned long () const { return millis() - ms; } - 1d2a8: 6a32 ldr r2, [r6, #32] - 1d2aa: 1a9b subs r3, r3, r2 + 1d388: 6a32 ldr r2, [r6, #32] + 1d38a: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1d2ac: 2bf9 cmp r3, #249 ; 0xf9 - 1d2ae: d81d bhi.n 1d2ec + 1d38c: 2bf9 cmp r3, #249 ; 0xf9 + 1d38e: d81d bhi.n 1d3cc for(i=start;i - 1d2b4: 1961 adds r1, r4, r5 + 1d390: 42bc cmp r4, r7 + 1d392: d024 beq.n 1d3de + 1d394: 1961 adds r1, r4, r5 updatedBytes += update(i,*p++); - 1d2b6: f814 3b01 ldrb.w r3, [r4], #1 + 1d396: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 1d2ba: 4648 mov r0, r9 - 1d2bc: 9100 str r1, [sp, #0] - 1d2be: f88d 300f strb.w r3, [sp, #15] - 1d2c2: f007 ff43 bl 2514c - 1d2c6: f89d 300f ldrb.w r3, [sp, #15] - 1d2ca: 9900 ldr r1, [sp, #0] - 1d2cc: 4298 cmp r0, r3 - 1d2ce: d0e9 beq.n 1d2a4 + 1d39a: 4648 mov r0, r9 + 1d39c: 9100 str r1, [sp, #0] + 1d39e: f88d 300f strb.w r3, [sp, #15] + 1d3a2: f007 ff49 bl 25238 + 1d3a6: f89d 300f ldrb.w r3, [sp, #15] + 1d3aa: 9900 ldr r1, [sp, #0] + 1d3ac: 4298 cmp r0, r3 + 1d3ae: d0e9 beq.n 1d384 write(addr, &value, 1); - 1d2d0: 2301 movs r3, #1 - 1d2d2: f10d 020f add.w r2, sp, #15 - 1d2d6: 4648 mov r0, r9 + 1d3b0: 2301 movs r3, #1 + 1d3b2: f10d 020f add.w r2, sp, #15 + 1d3b6: 4648 mov r0, r9 updatedBytes += update(i,*p++); - 1d2d8: f10a 0a01 add.w sl, sl, #1 + 1d3b8: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 1d2dc: f007 fe2c bl 24f38 - 1d2e0: f8d8 3000 ldr.w r3, [r8] - 1d2e4: 6a32 ldr r2, [r6, #32] - 1d2e6: 1a9b subs r3, r3, r2 + 1d3bc: f007 fe32 bl 25024 + 1d3c0: f8d8 3000 ldr.w r3, [r8] + 1d3c4: 6a32 ldr r2, [r6, #32] + 1d3c6: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1d2e8: 2bf9 cmp r3, #249 ; 0xf9 - 1d2ea: d9e1 bls.n 1d2b0 - 1d2ec: 2101 movs r1, #1 - 1d2ee: 4658 mov r0, fp - 1d2f0: f00f f92a bl 2c548 - 1d2f4: f8d8 3000 ldr.w r3, [r8] + 1d3c8: 2bf9 cmp r3, #249 ; 0xf9 + 1d3ca: d9e1 bls.n 1d390 + 1d3cc: 2101 movs r1, #1 + 1d3ce: 4658 mov r0, fp + 1d3d0: f00f f92e bl 2c630 + 1d3d4: f8d8 3000 ldr.w r3, [r8] for(i=start;i - 1d2fe: 2101 movs r1, #1 - 1d300: 4819 ldr r0, [pc, #100] ; (1d368 ) - 1d302: f00f f921 bl 2c548 - 1d306: 4812 ldr r0, [pc, #72] ; (1d350 ) - 1d308: f00c fdb4 bl 29e74 - 1d30c: 2109 movs r1, #9 - 1d30e: 4817 ldr r0, [pc, #92] ; (1d36c ) - 1d310: f00f f91a bl 2c548 - 1d314: 2101 movs r1, #1 - 1d316: 4810 ldr r0, [pc, #64] ; (1d358 ) - 1d318: f00f f916 bl 2c548 + 1d3da: 6233 str r3, [r6, #32] + 1d3dc: d1da bne.n 1d394 + 1d3de: 2101 movs r1, #1 + 1d3e0: 4819 ldr r0, [pc, #100] ; (1d448 ) + 1d3e2: f00f f925 bl 2c630 + 1d3e6: 4812 ldr r0, [pc, #72] ; (1d430 ) + 1d3e8: f00c fdba bl 29f60 + 1d3ec: 2109 movs r1, #9 + 1d3ee: 4817 ldr r0, [pc, #92] ; (1d44c ) + 1d3f0: f00f f91e bl 2c630 + 1d3f4: 2101 movs r1, #1 + 1d3f6: 4810 ldr r0, [pc, #64] ; (1d438 ) + 1d3f8: f00f f91a bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1d31c: 2300 movs r3, #0 - 1d31e: 220a movs r2, #10 - 1d320: 4651 mov r1, sl - 1d322: 480b ldr r0, [pc, #44] ; (1d350 ) - 1d324: f00c fdc2 bl 29eac - 1d328: 2101 movs r1, #1 - 1d32a: 480b ldr r0, [pc, #44] ; (1d358 ) - 1d32c: f00f f90c bl 2c548 - 1d330: 2105 movs r1, #5 - 1d332: 480f ldr r0, [pc, #60] ; (1d370 ) - 1d334: f00f f908 bl 2c548 + 1d3fc: 2300 movs r3, #0 + 1d3fe: 220a movs r2, #10 + 1d400: 4651 mov r1, sl + 1d402: 480b ldr r0, [pc, #44] ; (1d430 ) + 1d404: f00c fdc8 bl 29f98 + 1d408: 2101 movs r1, #1 + 1d40a: 480b ldr r0, [pc, #44] ; (1d438 ) + 1d40c: f00f f910 bl 2c630 + 1d410: 2105 movs r1, #5 + 1d412: 480f ldr r0, [pc, #60] ; (1d450 ) + 1d414: f00f f90c bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1d338: 4805 ldr r0, [pc, #20] ; (1d350 ) - 1d33a: f00c fd9b bl 29e74 + 1d418: 4805 ldr r0, [pc, #20] ; (1d430 ) + 1d41a: f00c fda1 bl 29f60 debugStopTiming(); - 1d33e: 9801 ldr r0, [sp, #4] - 1d340: f7fe fe32 bl 1bfa8 - } - 1d344: b005 add sp, #20 - 1d346: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1d34a: bf00 nop - 1d34c: 20003c58 .word 0x20003c58 - 1d350: 20004ba8 .word 0x20004ba8 - 1d354: 200036c8 .word 0x200036c8 - 1d358: 200023ec .word 0x200023ec - 1d35c: 20003e04 .word 0x20003e04 - 1d360: 20003e10 .word 0x20003e10 - 1d364: 20003e1c .word 0x20003e1c - 1d368: 200030b8 .word 0x200030b8 - 1d36c: 20003e2c .word 0x20003e2c - 1d370: 20002448 .word 0x20002448 - 1d374: 2000bae8 .word 0x2000bae8 - -0001d378 : + 1d41e: 9801 ldr r0, [sp, #4] + 1d420: f7fe fe32 bl 1c088 + } + 1d424: b005 add sp, #20 + 1d426: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1d42a: bf00 nop + 1d42c: 20003d18 .word 0x20003d18 + 1d430: 20004c68 .word 0x20004c68 + 1d434: 20003788 .word 0x20003788 + 1d438: 200023ec .word 0x200023ec + 1d43c: 20003ec4 .word 0x20003ec4 + 1d440: 20003ed0 .word 0x20003ed0 + 1d444: 20003edc .word 0x20003edc + 1d448: 20003150 .word 0x20003150 + 1d44c: 20003eec .word 0x20003eec + 1d450: 20002448 .word 0x20002448 + 1d454: 2000bb08 .word 0x2000bb08 + +0001d458 : void saveLFO(uint8_t index){ - 1d378: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1d37c: 460c mov r4, r1 - 1d37e: 4605 mov r5, r0 - 1d380: b085 sub sp, #20 + 1d458: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1d45c: 460c mov r4, r1 + 1d45e: 4605 mov r5, r0 + 1d460: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1d382: f7fd fa2d bl 1a7e0 + 1d462: f7fd fa2d bl 1a8c0 address += getLfoOffset(index); - 1d386: 4621 mov r1, r4 + 1d466: 4621 mov r1, r4 uint16_t address = getGlobalOffset(); - 1d388: 4606 mov r6, r0 + 1d468: 4606 mov r6, r0 address += getLfoOffset(index); - 1d38a: 4628 mov r0, r5 - 1d38c: f7fd fa44 bl 1a818 + 1d46a: 4628 mov r0, r5 + 1d46c: f7fd fa44 bl 1a8f8 storage.set(address, store.global.lfo[index]); - 1d390: f640 721f movw r2, #3871 ; 0xf1f - 1d394: 2309 movs r3, #9 + 1d470: f640 721f movw r2, #3871 ; 0xf1f + 1d474: 2309 movs r3, #9 uint16_t address = getGlobalOffset(); - 1d396: b2b6 uxth r6, r6 + 1d476: b2b6 uxth r6, r6 storage.set(address, store.global.lfo[index]); - 1d398: fb13 2304 smlabb r3, r3, r4, r2 - 1d39c: 462a mov r2, r5 + 1d478: fb13 2304 smlabb r3, r3, r4, r2 + 1d47c: 462a mov r2, r5 address += getLfoOffset(index); - 1d39e: 4406 add r6, r0 + 1d47e: 4406 add r6, r0 storage.set(address, store.global.lfo[index]); - 1d3a0: f852 4b0c ldr.w r4, [r2], #12 + 1d480: f852 4b0c ldr.w r4, [r2], #12 address += getLfoOffset(index); - 1d3a4: b2b6 uxth r6, r6 + 1d484: b2b6 uxth r6, r6 storage.set(address, store.global.lfo[index]); - 1d3a6: 441c add r4, r3 - 1d3a8: 68eb ldr r3, [r5, #12] - 1d3aa: 9201 str r2, [sp, #4] - 1d3ac: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1d486: 441c add r4, r3 + 1d488: 68eb ldr r3, [r5, #12] + 1d48a: 9201 str r2, [sp, #4] + 1d48c: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1d3b0: 07db lsls r3, r3, #31 - 1d3b2: d521 bpl.n 1d3f8 - 1d3b4: 2100 movs r1, #0 - 1d3b6: 4844 ldr r0, [pc, #272] ; (1d4c8 ) - 1d3b8: f00f f8c6 bl 2c548 - 1d3bc: 4843 ldr r0, [pc, #268] ; (1d4cc ) - 1d3be: f00c fd59 bl 29e74 - 1d3c2: 2103 movs r1, #3 - 1d3c4: 4842 ldr r0, [pc, #264] ; (1d4d0 ) - 1d3c6: f00f f8bf bl 2c548 - 1d3ca: 2101 movs r1, #1 - 1d3cc: 4841 ldr r0, [pc, #260] ; (1d4d4 ) - 1d3ce: f00f f8bb bl 2c548 - 1d3d2: 2108 movs r1, #8 - 1d3d4: 4840 ldr r0, [pc, #256] ; (1d4d8 ) - 1d3d6: f00f f8b7 bl 2c548 - 1d3da: 2101 movs r1, #1 - 1d3dc: 483d ldr r0, [pc, #244] ; (1d4d4 ) - 1d3de: f00f f8b3 bl 2c548 - 1d3e2: 2108 movs r1, #8 - 1d3e4: 483d ldr r0, [pc, #244] ; (1d4dc ) - 1d3e6: f00f f8af bl 2c548 - 1d3ea: 2101 movs r1, #1 - 1d3ec: 4839 ldr r0, [pc, #228] ; (1d4d4 ) - 1d3ee: f00f f8ab bl 2c548 + 1d490: 07db lsls r3, r3, #31 + 1d492: d521 bpl.n 1d4d8 + 1d494: 2100 movs r1, #0 + 1d496: 4844 ldr r0, [pc, #272] ; (1d5a8 ) + 1d498: f00f f8ca bl 2c630 + 1d49c: 4843 ldr r0, [pc, #268] ; (1d5ac ) + 1d49e: f00c fd5f bl 29f60 + 1d4a2: 2103 movs r1, #3 + 1d4a4: 4842 ldr r0, [pc, #264] ; (1d5b0 ) + 1d4a6: f00f f8c3 bl 2c630 + 1d4aa: 2101 movs r1, #1 + 1d4ac: 4841 ldr r0, [pc, #260] ; (1d5b4 ) + 1d4ae: f00f f8bf bl 2c630 + 1d4b2: 2108 movs r1, #8 + 1d4b4: 4840 ldr r0, [pc, #256] ; (1d5b8 ) + 1d4b6: f00f f8bb bl 2c630 + 1d4ba: 2101 movs r1, #1 + 1d4bc: 483d ldr r0, [pc, #244] ; (1d5b4 ) + 1d4be: f00f f8b7 bl 2c630 + 1d4c2: 2108 movs r1, #8 + 1d4c4: 483d ldr r0, [pc, #244] ; (1d5bc ) + 1d4c6: f00f f8b3 bl 2c630 + 1d4ca: 2101 movs r1, #1 + 1d4cc: 4839 ldr r0, [pc, #228] ; (1d5b4 ) + 1d4ce: f00f f8af bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1d3f2: f00d f8bf bl 2a574 - 1d3f6: 62a8 str r0, [r5, #40] ; 0x28 - 1d3f8: 210e movs r1, #14 - 1d3fa: 4839 ldr r0, [pc, #228] ; (1d4e0 ) - 1d3fc: f00f f8a4 bl 2c548 + 1d4d2: f00d f8c3 bl 2a65c + 1d4d6: 62a8 str r0, [r5, #40] ; 0x28 + 1d4d8: 210e movs r1, #14 + 1d4da: 4839 ldr r0, [pc, #228] ; (1d5c0 ) + 1d4dc: f00f f8a8 bl 2c630 unsigned long n = sizeof(value)+start; - 1d400: f106 0709 add.w r7, r6, #9 - 1d404: 1c73 adds r3, r6, #1 - 1d406: f8df 80e8 ldr.w r8, [pc, #232] ; 1d4f0 + 1d4e0: f106 0709 add.w r7, r6, #9 + 1d4e4: 1c73 adds r3, r6, #1 + 1d4e6: f8df 80e8 ldr.w r8, [pc, #232] ; 1d5d0 STORAGE.put(address,file); - 1d40a: f105 0910 add.w r9, r5, #16 - 1d40e: 1b36 subs r6, r6, r4 - 1d410: 429f cmp r7, r3 - 1d412: bf34 ite cc - 1d414: 2701 movcc r7, #1 - 1d416: 2709 movcs r7, #9 - 1d418: f8d8 3000 ldr.w r3, [r8] + 1d4ea: f105 0910 add.w r9, r5, #16 + 1d4ee: 1b36 subs r6, r6, r4 + 1d4f0: 429f cmp r7, r3 + 1d4f2: bf34 ite cc + 1d4f4: 2701 movcc r7, #1 + 1d4f6: 2709 movcs r7, #9 + 1d4f8: f8d8 3000 ldr.w r3, [r8] unsigned long updatedBytes = 0; - 1d41c: f04f 0a00 mov.w sl, #0 - 1d420: f8df b0c0 ldr.w fp, [pc, #192] ; 1d4e4 - 1d424: 4427 add r7, r4 - 1d426: 622b str r3, [r5, #32] + 1d4fc: f04f 0a00 mov.w sl, #0 + 1d500: f8df b0c0 ldr.w fp, [pc, #192] ; 1d5c4 + 1d504: 4427 add r7, r4 + 1d506: 622b str r3, [r5, #32] for(i=start;i - 1d42a: 42bc cmp r4, r7 - 1d42c: d01c beq.n 1d468 - 1d42e: 19a1 adds r1, r4, r6 + 1d508: e001 b.n 1d50e + 1d50a: 42bc cmp r4, r7 + 1d50c: d01c beq.n 1d548 + 1d50e: 19a1 adds r1, r4, r6 updatedBytes += update(i,*p++); - 1d430: f814 3b01 ldrb.w r3, [r4], #1 + 1d510: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 1d434: 4648 mov r0, r9 - 1d436: 9100 str r1, [sp, #0] - 1d438: f88d 300f strb.w r3, [sp, #15] - 1d43c: f007 fe86 bl 2514c - 1d440: f89d 300f ldrb.w r3, [sp, #15] - 1d444: 9900 ldr r1, [sp, #0] - 1d446: 4298 cmp r0, r3 - 1d448: d134 bne.n 1d4b4 - 1d44a: f8d8 3000 ldr.w r3, [r8] + 1d514: 4648 mov r0, r9 + 1d516: 9100 str r1, [sp, #0] + 1d518: f88d 300f strb.w r3, [sp, #15] + 1d51c: f007 fe8c bl 25238 + 1d520: f89d 300f ldrb.w r3, [sp, #15] + 1d524: 9900 ldr r1, [sp, #0] + 1d526: 4298 cmp r0, r3 + 1d528: d134 bne.n 1d594 + 1d52a: f8d8 3000 ldr.w r3, [r8] operator unsigned long () const { return millis() - ms; } - 1d44e: 6a2a ldr r2, [r5, #32] - 1d450: 1a9b subs r3, r3, r2 + 1d52e: 6a2a ldr r2, [r5, #32] + 1d530: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1d452: 2bf9 cmp r3, #249 ; 0xf9 - 1d454: d9e9 bls.n 1d42a - 1d456: 2101 movs r1, #1 - 1d458: 4658 mov r0, fp - 1d45a: f00f f875 bl 2c548 - 1d45e: f8d8 3000 ldr.w r3, [r8] + 1d532: 2bf9 cmp r3, #249 ; 0xf9 + 1d534: d9e9 bls.n 1d50a + 1d536: 2101 movs r1, #1 + 1d538: 4658 mov r0, fp + 1d53a: f00f f879 bl 2c630 + 1d53e: f8d8 3000 ldr.w r3, [r8] for(i=start;i - 1d468: 2101 movs r1, #1 - 1d46a: 481e ldr r0, [pc, #120] ; (1d4e4 ) - 1d46c: f00f f86c bl 2c548 - 1d470: 4816 ldr r0, [pc, #88] ; (1d4cc ) - 1d472: f00c fcff bl 29e74 - 1d476: 2109 movs r1, #9 - 1d478: 481b ldr r0, [pc, #108] ; (1d4e8 ) - 1d47a: f00f f865 bl 2c548 - 1d47e: 2101 movs r1, #1 - 1d480: 4814 ldr r0, [pc, #80] ; (1d4d4 ) - 1d482: f00f f861 bl 2c548 + 1d544: 622b str r3, [r5, #32] + 1d546: d1e2 bne.n 1d50e + 1d548: 2101 movs r1, #1 + 1d54a: 481e ldr r0, [pc, #120] ; (1d5c4 ) + 1d54c: f00f f870 bl 2c630 + 1d550: 4816 ldr r0, [pc, #88] ; (1d5ac ) + 1d552: f00c fd05 bl 29f60 + 1d556: 2109 movs r1, #9 + 1d558: 481b ldr r0, [pc, #108] ; (1d5c8 ) + 1d55a: f00f f869 bl 2c630 + 1d55e: 2101 movs r1, #1 + 1d560: 4814 ldr r0, [pc, #80] ; (1d5b4 ) + 1d562: f00f f865 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1d486: 2300 movs r3, #0 - 1d488: 220a movs r2, #10 - 1d48a: 4651 mov r1, sl - 1d48c: 480f ldr r0, [pc, #60] ; (1d4cc ) - 1d48e: f00c fd0d bl 29eac - 1d492: 2101 movs r1, #1 - 1d494: 480f ldr r0, [pc, #60] ; (1d4d4 ) - 1d496: f00f f857 bl 2c548 - 1d49a: 2105 movs r1, #5 - 1d49c: 4813 ldr r0, [pc, #76] ; (1d4ec ) - 1d49e: f00f f853 bl 2c548 + 1d566: 2300 movs r3, #0 + 1d568: 220a movs r2, #10 + 1d56a: 4651 mov r1, sl + 1d56c: 480f ldr r0, [pc, #60] ; (1d5ac ) + 1d56e: f00c fd13 bl 29f98 + 1d572: 2101 movs r1, #1 + 1d574: 480f ldr r0, [pc, #60] ; (1d5b4 ) + 1d576: f00f f85b bl 2c630 + 1d57a: 2105 movs r1, #5 + 1d57c: 4813 ldr r0, [pc, #76] ; (1d5cc ) + 1d57e: f00f f857 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1d4a2: 480a ldr r0, [pc, #40] ; (1d4cc ) - 1d4a4: f00c fce6 bl 29e74 + 1d582: 480a ldr r0, [pc, #40] ; (1d5ac ) + 1d584: f00c fcec bl 29f60 debugStopTiming(); - 1d4a8: 9801 ldr r0, [sp, #4] - 1d4aa: f7fe fd7d bl 1bfa8 + 1d588: 9801 ldr r0, [sp, #4] + 1d58a: f7fe fd7d bl 1c088 } - 1d4ae: b005 add sp, #20 - 1d4b0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1d58e: b005 add sp, #20 + 1d590: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} write(addr, &value, 1); - 1d4b4: 2301 movs r3, #1 - 1d4b6: f10d 020f add.w r2, sp, #15 - 1d4ba: 4648 mov r0, r9 + 1d594: 2301 movs r3, #1 + 1d596: f10d 020f add.w r2, sp, #15 + 1d59a: 4648 mov r0, r9 updatedBytes += update(i,*p++); - 1d4bc: f10a 0a01 add.w sl, sl, #1 + 1d59c: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 1d4c0: f007 fd3a bl 24f38 + 1d5a0: f007 fd40 bl 25024 return 1; - 1d4c4: e7c1 b.n 1d44a - 1d4c6: bf00 nop - 1d4c8: 20003c58 .word 0x20003c58 - 1d4cc: 20004ba8 .word 0x20004ba8 - 1d4d0: 200036c8 .word 0x200036c8 - 1d4d4: 200023ec .word 0x200023ec - 1d4d8: 20003e04 .word 0x20003e04 - 1d4dc: 20003e10 .word 0x20003e10 - 1d4e0: 20003e1c .word 0x20003e1c - 1d4e4: 200030b8 .word 0x200030b8 - 1d4e8: 20003e2c .word 0x20003e2c - 1d4ec: 20002448 .word 0x20002448 - 1d4f0: 2000bae8 .word 0x2000bae8 - -0001d4f4 : + 1d5a4: e7c1 b.n 1d52a + 1d5a6: bf00 nop + 1d5a8: 20003d18 .word 0x20003d18 + 1d5ac: 20004c68 .word 0x20004c68 + 1d5b0: 20003788 .word 0x20003788 + 1d5b4: 200023ec .word 0x200023ec + 1d5b8: 20003ec4 .word 0x20003ec4 + 1d5bc: 20003ed0 .word 0x20003ed0 + 1d5c0: 20003edc .word 0x20003edc + 1d5c4: 20003150 .word 0x20003150 + 1d5c8: 20003eec .word 0x20003eec + 1d5cc: 20002448 .word 0x20002448 + 1d5d0: 2000bb08 .word 0x2000bb08 + +0001d5d4 : void saveSketchBytes(){ - 1d4f4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1d4f8: 4606 mov r6, r0 - 1d4fa: b085 sub sp, #20 + 1d5d4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1d5d8: 4606 mov r6, r0 + 1d5da: b085 sub sp, #20 uint16_t address = getGlobalOffset(); - 1d4fc: f7fd f970 bl 1a7e0 + 1d5dc: f7fd f970 bl 1a8c0 address += getSketchBytesOffset(0); - 1d500: 2100 movs r1, #0 + 1d5e0: 2100 movs r1, #0 uint16_t address = getGlobalOffset(); - 1d502: 4604 mov r4, r0 + 1d5e2: 4604 mov r4, r0 address += getSketchBytesOffset(0); - 1d504: 4630 mov r0, r6 - 1d506: f7fd f98d bl 1a824 + 1d5e4: 4630 mov r0, r6 + 1d5e6: f7fd f98d bl 1a904 storage.set(address, store.global.sketchBytes); - 1d50a: 4633 mov r3, r6 + 1d5ea: 4633 mov r3, r6 uint16_t address = getGlobalOffset(); - 1d50c: b2a4 uxth r4, r4 + 1d5ec: b2a4 uxth r4, r4 storage.set(address, store.global.sketchBytes); - 1d50e: f853 ab0c ldr.w sl, [r3], #12 + 1d5ee: f853 ab0c ldr.w sl, [r3], #12 address += getSketchBytesOffset(0); - 1d512: 4404 add r4, r0 + 1d5f2: 4404 add r4, r0 storage.set(address, store.global.sketchBytes); - 1d514: 9300 str r3, [sp, #0] - 1d516: f60a 7528 addw r5, sl, #3880 ; 0xf28 - 1d51a: 68f3 ldr r3, [r6, #12] + 1d5f4: 9300 str r3, [sp, #0] + 1d5f6: f60a 7528 addw r5, sl, #3880 ; 0xf28 + 1d5fa: 68f3 ldr r3, [r6, #12] address += getSketchBytesOffset(0); - 1d51c: b2a4 uxth r4, r4 - 1d51e: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1d5fc: b2a4 uxth r4, r4 + 1d5fe: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1d522: 07db lsls r3, r3, #31 - 1d524: d521 bpl.n 1d56a - 1d526: 2100 movs r1, #0 - 1d528: 4842 ldr r0, [pc, #264] ; (1d634 ) - 1d52a: f00f f80d bl 2c548 - 1d52e: 4842 ldr r0, [pc, #264] ; (1d638 ) - 1d530: f00c fca0 bl 29e74 - 1d534: 2103 movs r1, #3 - 1d536: 4841 ldr r0, [pc, #260] ; (1d63c ) - 1d538: f00f f806 bl 2c548 - 1d53c: 2101 movs r1, #1 - 1d53e: 4840 ldr r0, [pc, #256] ; (1d640 ) - 1d540: f00f f802 bl 2c548 - 1d544: 2108 movs r1, #8 - 1d546: 483f ldr r0, [pc, #252] ; (1d644 ) - 1d548: f00e fffe bl 2c548 - 1d54c: 2101 movs r1, #1 - 1d54e: 483c ldr r0, [pc, #240] ; (1d640 ) - 1d550: f00e fffa bl 2c548 - 1d554: 2108 movs r1, #8 - 1d556: 483c ldr r0, [pc, #240] ; (1d648 ) - 1d558: f00e fff6 bl 2c548 - 1d55c: 2101 movs r1, #1 - 1d55e: 4838 ldr r0, [pc, #224] ; (1d640 ) - 1d560: f00e fff2 bl 2c548 + 1d602: 07db lsls r3, r3, #31 + 1d604: d521 bpl.n 1d64a + 1d606: 2100 movs r1, #0 + 1d608: 4842 ldr r0, [pc, #264] ; (1d714 ) + 1d60a: f00f f811 bl 2c630 + 1d60e: 4842 ldr r0, [pc, #264] ; (1d718 ) + 1d610: f00c fca6 bl 29f60 + 1d614: 2103 movs r1, #3 + 1d616: 4841 ldr r0, [pc, #260] ; (1d71c ) + 1d618: f00f f80a bl 2c630 + 1d61c: 2101 movs r1, #1 + 1d61e: 4840 ldr r0, [pc, #256] ; (1d720 ) + 1d620: f00f f806 bl 2c630 + 1d624: 2108 movs r1, #8 + 1d626: 483f ldr r0, [pc, #252] ; (1d724 ) + 1d628: f00f f802 bl 2c630 + 1d62c: 2101 movs r1, #1 + 1d62e: 483c ldr r0, [pc, #240] ; (1d720 ) + 1d630: f00e fffe bl 2c630 + 1d634: 2108 movs r1, #8 + 1d636: 483c ldr r0, [pc, #240] ; (1d728 ) + 1d638: f00e fffa bl 2c630 + 1d63c: 2101 movs r1, #1 + 1d63e: 4838 ldr r0, [pc, #224] ; (1d720 ) + 1d640: f00e fff6 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1d564: f00d f806 bl 2a574 - 1d568: 62b0 str r0, [r6, #40] ; 0x28 - 1d56a: 210e movs r1, #14 - 1d56c: 4837 ldr r0, [pc, #220] ; (1d64c ) - 1d56e: f00e ffeb bl 2c548 - 1d572: f8df 80e8 ldr.w r8, [pc, #232] ; 1d65c - 1d576: 1c63 adds r3, r4, #1 + 1d644: f00d f80a bl 2a65c + 1d648: 62b0 str r0, [r6, #40] ; 0x28 + 1d64a: 210e movs r1, #14 + 1d64c: 4837 ldr r0, [pc, #220] ; (1d72c ) + 1d64e: f00e ffef bl 2c630 + 1d652: f8df 80e8 ldr.w r8, [pc, #232] ; 1d73c + 1d656: 1c63 adds r3, r4, #1 unsigned long n = sizeof(value)+start; - 1d578: 1d67 adds r7, r4, #5 + 1d658: 1d67 adds r7, r4, #5 STORAGE.put(address,file); - 1d57a: f106 0910 add.w r9, r6, #16 + 1d65a: f106 0910 add.w r9, r6, #16 unsigned long updatedBytes = 0; - 1d57e: f04f 0b00 mov.w fp, #0 - 1d582: 429f cmp r7, r3 - 1d584: bf34 ite cc - 1d586: 2701 movcc r7, #1 - 1d588: 2705 movcs r7, #5 - 1d58a: f8d8 3000 ldr.w r3, [r8] - 1d58e: 6233 str r3, [r6, #32] + 1d65e: f04f 0b00 mov.w fp, #0 + 1d662: 429f cmp r7, r3 + 1d664: bf34 ite cc + 1d666: 2701 movcc r7, #1 + 1d668: 2705 movcs r7, #5 + 1d66a: f8d8 3000 ldr.w r3, [r8] + 1d66e: 6233 str r3, [r6, #32] updatedBytes += update(i,*p++); - 1d590: f815 3b01 ldrb.w r3, [r5], #1 + 1d670: f815 3b01 ldrb.w r3, [r5], #1 if(read(addr) != value){ - 1d594: 4621 mov r1, r4 - 1d596: 4648 mov r0, r9 - 1d598: f88d 300f strb.w r3, [sp, #15] - 1d59c: f007 fdd6 bl 2514c - 1d5a0: f89d 300f ldrb.w r3, [sp, #15] - 1d5a4: 4298 cmp r0, r3 - 1d5a6: d13b bne.n 1d620 - 1d5a8: f8d8 3000 ldr.w r3, [r8] + 1d674: 4621 mov r1, r4 + 1d676: 4648 mov r0, r9 + 1d678: f88d 300f strb.w r3, [sp, #15] + 1d67c: f007 fddc bl 25238 + 1d680: f89d 300f ldrb.w r3, [sp, #15] + 1d684: 4298 cmp r0, r3 + 1d686: d13b bne.n 1d700 + 1d688: f8d8 3000 ldr.w r3, [r8] for(i=start;i=250){ - 1d5b2: 2bf9 cmp r3, #249 ; 0xf9 - 1d5b4: d82c bhi.n 1d610 + 1d692: 2bf9 cmp r3, #249 ; 0xf9 + 1d694: d82c bhi.n 1d6f0 for(i=start;i - 1d5c2: 2101 movs r1, #1 - 1d5c4: 4822 ldr r0, [pc, #136] ; (1d650 ) - 1d5c6: 9301 str r3, [sp, #4] - 1d5c8: f00e ffbe bl 2c548 - 1d5cc: 481a ldr r0, [pc, #104] ; (1d638 ) - 1d5ce: f00c fc51 bl 29e74 - 1d5d2: 2109 movs r1, #9 - 1d5d4: 481f ldr r0, [pc, #124] ; (1d654 ) - 1d5d6: f00e ffb7 bl 2c548 - 1d5da: 2101 movs r1, #1 - 1d5dc: 4818 ldr r0, [pc, #96] ; (1d640 ) - 1d5de: f00e ffb3 bl 2c548 + 1d696: f640 7328 movw r3, #3880 ; 0xf28 + 1d69a: 1b5b subs r3, r3, r5 + 1d69c: 4453 add r3, sl + 1d69e: 19db adds r3, r3, r7 + 1d6a0: d1e6 bne.n 1d670 + 1d6a2: 2101 movs r1, #1 + 1d6a4: 4822 ldr r0, [pc, #136] ; (1d730 ) + 1d6a6: 9301 str r3, [sp, #4] + 1d6a8: f00e ffc2 bl 2c630 + 1d6ac: 481a ldr r0, [pc, #104] ; (1d718 ) + 1d6ae: f00c fc57 bl 29f60 + 1d6b2: 2109 movs r1, #9 + 1d6b4: 481f ldr r0, [pc, #124] ; (1d734 ) + 1d6b6: f00e ffbb bl 2c630 + 1d6ba: 2101 movs r1, #1 + 1d6bc: 4818 ldr r0, [pc, #96] ; (1d720 ) + 1d6be: f00e ffb7 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1d5e2: 9b01 ldr r3, [sp, #4] - 1d5e4: 220a movs r2, #10 - 1d5e6: 4659 mov r1, fp - 1d5e8: 4813 ldr r0, [pc, #76] ; (1d638 ) - 1d5ea: f00c fc5f bl 29eac - 1d5ee: 2101 movs r1, #1 - 1d5f0: 4813 ldr r0, [pc, #76] ; (1d640 ) - 1d5f2: f00e ffa9 bl 2c548 - 1d5f6: 2105 movs r1, #5 - 1d5f8: 4817 ldr r0, [pc, #92] ; (1d658 ) - 1d5fa: f00e ffa5 bl 2c548 + 1d6c2: 9b01 ldr r3, [sp, #4] + 1d6c4: 220a movs r2, #10 + 1d6c6: 4659 mov r1, fp + 1d6c8: 4813 ldr r0, [pc, #76] ; (1d718 ) + 1d6ca: f00c fc65 bl 29f98 + 1d6ce: 2101 movs r1, #1 + 1d6d0: 4813 ldr r0, [pc, #76] ; (1d720 ) + 1d6d2: f00e ffad bl 2c630 + 1d6d6: 2105 movs r1, #5 + 1d6d8: 4817 ldr r0, [pc, #92] ; (1d738 ) + 1d6da: f00e ffa9 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1d5fe: 480e ldr r0, [pc, #56] ; (1d638 ) - 1d600: f00c fc38 bl 29e74 + 1d6de: 480e ldr r0, [pc, #56] ; (1d718 ) + 1d6e0: f00c fc3e bl 29f60 debugStopTiming(); - 1d604: 9800 ldr r0, [sp, #0] - 1d606: f7fe fccf bl 1bfa8 - } - 1d60a: b005 add sp, #20 - 1d60c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1d610: 2101 movs r1, #1 - 1d612: 480f ldr r0, [pc, #60] ; (1d650 ) - 1d614: f00e ff98 bl 2c548 - 1d618: f8d8 3000 ldr.w r3, [r8] + 1d6e4: 9800 ldr r0, [sp, #0] + 1d6e6: f7fe fccf bl 1c088 + } + 1d6ea: b005 add sp, #20 + 1d6ec: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1d6f0: 2101 movs r1, #1 + 1d6f2: 480f ldr r0, [pc, #60] ; (1d730 ) + 1d6f4: f00e ff9c bl 2c630 + 1d6f8: f8d8 3000 ldr.w r3, [r8] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 1d61c: 6233 str r3, [r6, #32] - 1d61e: e7ca b.n 1d5b6 + 1d6fc: 6233 str r3, [r6, #32] + 1d6fe: e7ca b.n 1d696 write(addr, &value, 1); - 1d620: 4621 mov r1, r4 - 1d622: 2301 movs r3, #1 - 1d624: f10d 020f add.w r2, sp, #15 - 1d628: 4648 mov r0, r9 + 1d700: 4621 mov r1, r4 + 1d702: 2301 movs r3, #1 + 1d704: f10d 020f add.w r2, sp, #15 + 1d708: 4648 mov r0, r9 updatedBytes += update(i,*p++); - 1d62a: f10b 0b01 add.w fp, fp, #1 + 1d70a: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 1d62e: f007 fc83 bl 24f38 + 1d70e: f007 fc89 bl 25024 return 1; - 1d632: e7b9 b.n 1d5a8 - 1d634: 20003c58 .word 0x20003c58 - 1d638: 20004ba8 .word 0x20004ba8 - 1d63c: 200036c8 .word 0x200036c8 - 1d640: 200023ec .word 0x200023ec - 1d644: 20003e04 .word 0x20003e04 - 1d648: 20003e10 .word 0x20003e10 - 1d64c: 20003e1c .word 0x20003e1c - 1d650: 200030b8 .word 0x200030b8 - 1d654: 20003e2c .word 0x20003e2c - 1d658: 20002448 .word 0x20002448 - 1d65c: 2000bae8 .word 0x2000bae8 - -0001d660 : + 1d712: e7b9 b.n 1d688 + 1d714: 20003d18 .word 0x20003d18 + 1d718: 20004c68 .word 0x20004c68 + 1d71c: 20003788 .word 0x20003788 + 1d720: 200023ec .word 0x200023ec + 1d724: 20003ec4 .word 0x20003ec4 + 1d728: 20003ed0 .word 0x20003ed0 + 1d72c: 20003edc .word 0x20003edc + 1d730: 20003150 .word 0x20003150 + 1d734: 20003eec .word 0x20003eec + 1d738: 20002448 .word 0x20002448 + 1d73c: 2000bb08 .word 0x2000bb08 + +0001d740 : void saveLayersAndReloadData(uint8_t layer){ - 1d660: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1d664: 460c mov r4, r1 - 1d666: b085 sub sp, #20 - 1d668: 4605 mov r5, r0 + 1d740: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1d744: 460c mov r4, r1 + 1d746: b085 sub sp, #20 + 1d748: 4605 mov r5, r0 uint16_t address = getGlobalOffset(); - 1d66a: f7fd f8b9 bl 1a7e0 + 1d74a: f7fd f8b9 bl 1a8c0 address += sizeof(store.global) + (sizeof(store.layers[0]) * layer); - 1d66e: eb04 1244 add.w r2, r4, r4, lsl #5 - 1d672: f241 535c movw r3, #5468 ; 0x155c - 1d676: eb04 0282 add.w r2, r4, r2, lsl #2 - 1d67a: 4413 add r3, r2 + 1d74e: eb04 1244 add.w r2, r4, r4, lsl #5 + 1d752: f241 535c movw r3, #5468 ; 0x155c + 1d756: eb04 0282 add.w r2, r4, r2, lsl #2 + 1d75a: 4413 add r3, r2 storage.set(address, store.layers[layer]); - 1d67c: f44f 52ab mov.w r2, #5472 ; 0x1560 + 1d75c: f44f 52ab mov.w r2, #5472 ; 0x1560 address += sizeof(store.global) + (sizeof(store.layers[0]) * layer); - 1d680: fa13 f880 uxtah r8, r3, r0 + 1d760: fa13 f880 uxtah r8, r3, r0 storage.set(address, store.layers[layer]); - 1d684: 2385 movs r3, #133 ; 0x85 - 1d686: fb13 2304 smlabb r3, r3, r4, r2 - 1d68a: 462a mov r2, r5 + 1d764: 2385 movs r3, #133 ; 0x85 + 1d766: fb13 2304 smlabb r3, r3, r4, r2 + 1d76a: 462a mov r2, r5 address += sizeof(store.global) + (sizeof(store.layers[0]) * layer); - 1d68c: fa1f f888 uxth.w r8, r8 + 1d76c: fa1f f888 uxth.w r8, r8 storage.set(address, store.layers[layer]); - 1d690: f852 4b0c ldr.w r4, [r2], #12 - 1d694: 441c add r4, r3 - 1d696: 68eb ldr r3, [r5, #12] - 1d698: 9201 str r2, [sp, #4] - 1d69a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1d770: f852 4b0c ldr.w r4, [r2], #12 + 1d774: 441c add r4, r3 + 1d776: 68eb ldr r3, [r5, #12] + 1d778: 9201 str r2, [sp, #4] + 1d77a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1d69e: 07da lsls r2, r3, #31 - 1d6a0: d521 bpl.n 1d6e6 - 1d6a2: 2100 movs r1, #0 - 1d6a4: 484b ldr r0, [pc, #300] ; (1d7d4 ) - 1d6a6: f00e ff4f bl 2c548 - 1d6aa: 484b ldr r0, [pc, #300] ; (1d7d8 ) - 1d6ac: f00c fbe2 bl 29e74 - 1d6b0: 2103 movs r1, #3 - 1d6b2: 484a ldr r0, [pc, #296] ; (1d7dc ) - 1d6b4: f00e ff48 bl 2c548 - 1d6b8: 2101 movs r1, #1 - 1d6ba: 4849 ldr r0, [pc, #292] ; (1d7e0 ) - 1d6bc: f00e ff44 bl 2c548 - 1d6c0: 2108 movs r1, #8 - 1d6c2: 4848 ldr r0, [pc, #288] ; (1d7e4 ) - 1d6c4: f00e ff40 bl 2c548 - 1d6c8: 2101 movs r1, #1 - 1d6ca: 4845 ldr r0, [pc, #276] ; (1d7e0 ) - 1d6cc: f00e ff3c bl 2c548 - 1d6d0: 2108 movs r1, #8 - 1d6d2: 4845 ldr r0, [pc, #276] ; (1d7e8 ) - 1d6d4: f00e ff38 bl 2c548 - 1d6d8: 2101 movs r1, #1 - 1d6da: 4841 ldr r0, [pc, #260] ; (1d7e0 ) - 1d6dc: f00e ff34 bl 2c548 + 1d77e: 07da lsls r2, r3, #31 + 1d780: d521 bpl.n 1d7c6 + 1d782: 2100 movs r1, #0 + 1d784: 484b ldr r0, [pc, #300] ; (1d8b4 ) + 1d786: f00e ff53 bl 2c630 + 1d78a: 484b ldr r0, [pc, #300] ; (1d8b8 ) + 1d78c: f00c fbe8 bl 29f60 + 1d790: 2103 movs r1, #3 + 1d792: 484a ldr r0, [pc, #296] ; (1d8bc ) + 1d794: f00e ff4c bl 2c630 + 1d798: 2101 movs r1, #1 + 1d79a: 4849 ldr r0, [pc, #292] ; (1d8c0 ) + 1d79c: f00e ff48 bl 2c630 + 1d7a0: 2108 movs r1, #8 + 1d7a2: 4848 ldr r0, [pc, #288] ; (1d8c4 ) + 1d7a4: f00e ff44 bl 2c630 + 1d7a8: 2101 movs r1, #1 + 1d7aa: 4845 ldr r0, [pc, #276] ; (1d8c0 ) + 1d7ac: f00e ff40 bl 2c630 + 1d7b0: 2108 movs r1, #8 + 1d7b2: 4845 ldr r0, [pc, #276] ; (1d8c8 ) + 1d7b4: f00e ff3c bl 2c630 + 1d7b8: 2101 movs r1, #1 + 1d7ba: 4841 ldr r0, [pc, #260] ; (1d8c0 ) + 1d7bc: f00e ff38 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1d6e0: f00c ff48 bl 2a574 - 1d6e4: 62a8 str r0, [r5, #40] ; 0x28 - 1d6e6: 210e movs r1, #14 - 1d6e8: 4840 ldr r0, [pc, #256] ; (1d7ec ) - 1d6ea: f00e ff2d bl 2c548 + 1d7c0: f00c ff4c bl 2a65c + 1d7c4: 62a8 str r0, [r5, #40] ; 0x28 + 1d7c6: 210e movs r1, #14 + 1d7c8: 4840 ldr r0, [pc, #256] ; (1d8cc ) + 1d7ca: f00e ff31 bl 2c630 unsigned long n = sizeof(value)+start; - 1d6ee: f108 0985 add.w r9, r8, #133 ; 0x85 - 1d6f2: f108 0301 add.w r3, r8, #1 - 1d6f6: 4e3e ldr r6, [pc, #248] ; (1d7f0 ) + 1d7ce: f108 0985 add.w r9, r8, #133 ; 0x85 + 1d7d2: f108 0301 add.w r3, r8, #1 + 1d7d6: 4e3e ldr r6, [pc, #248] ; (1d8d0 ) STORAGE.put(address,file); - 1d6f8: f105 0710 add.w r7, r5, #16 - 1d6fc: eba8 0804 sub.w r8, r8, r4 - 1d700: 4599 cmp r9, r3 - 1d702: bf34 ite cc - 1d704: f04f 0901 movcc.w r9, #1 - 1d708: f04f 0985 movcs.w r9, #133 ; 0x85 - 1d70c: 6833 ldr r3, [r6, #0] + 1d7d8: f105 0710 add.w r7, r5, #16 + 1d7dc: eba8 0804 sub.w r8, r8, r4 + 1d7e0: 4599 cmp r9, r3 + 1d7e2: bf34 ite cc + 1d7e4: f04f 0901 movcc.w r9, #1 + 1d7e8: f04f 0985 movcs.w r9, #133 ; 0x85 + 1d7ec: 6833 ldr r3, [r6, #0] unsigned long updatedBytes = 0; - 1d70e: f04f 0a00 mov.w sl, #0 - 1d712: f8df b0e0 ldr.w fp, [pc, #224] ; 1d7f4 - 1d716: 44a1 add r9, r4 - 1d718: 622b str r3, [r5, #32] + 1d7ee: f04f 0a00 mov.w sl, #0 + 1d7f2: f8df b0e0 ldr.w fp, [pc, #224] ; 1d8d4 + 1d7f6: 44a1 add r9, r4 + 1d7f8: 622b str r3, [r5, #32] for(i=start;i - 1d71c: 6833 ldr r3, [r6, #0] + 1d7fa: e006 b.n 1d80a + 1d7fc: 6833 ldr r3, [r6, #0] operator unsigned long () const { return millis() - ms; } - 1d71e: 6a2a ldr r2, [r5, #32] - 1d720: 1a9b subs r3, r3, r2 + 1d7fe: 6a2a ldr r2, [r5, #32] + 1d800: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1d722: 2bf9 cmp r3, #249 ; 0xf9 - 1d724: d81d bhi.n 1d762 + 1d802: 2bf9 cmp r3, #249 ; 0xf9 + 1d804: d81d bhi.n 1d842 for(i=start;i - 1d72a: eb04 0108 add.w r1, r4, r8 + 1d806: 454c cmp r4, r9 + 1d808: d023 beq.n 1d852 + 1d80a: eb04 0108 add.w r1, r4, r8 updatedBytes += update(i,*p++); - 1d72e: f814 3b01 ldrb.w r3, [r4], #1 + 1d80e: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 1d732: 4638 mov r0, r7 - 1d734: 9100 str r1, [sp, #0] - 1d736: f88d 300f strb.w r3, [sp, #15] - 1d73a: f007 fd07 bl 2514c - 1d73e: f89d 300f ldrb.w r3, [sp, #15] - 1d742: 9900 ldr r1, [sp, #0] - 1d744: 4298 cmp r0, r3 - 1d746: d0e9 beq.n 1d71c + 1d812: 4638 mov r0, r7 + 1d814: 9100 str r1, [sp, #0] + 1d816: f88d 300f strb.w r3, [sp, #15] + 1d81a: f007 fd0d bl 25238 + 1d81e: f89d 300f ldrb.w r3, [sp, #15] + 1d822: 9900 ldr r1, [sp, #0] + 1d824: 4298 cmp r0, r3 + 1d826: d0e9 beq.n 1d7fc write(addr, &value, 1); - 1d748: 2301 movs r3, #1 - 1d74a: f10d 020f add.w r2, sp, #15 - 1d74e: 4638 mov r0, r7 + 1d828: 2301 movs r3, #1 + 1d82a: f10d 020f add.w r2, sp, #15 + 1d82e: 4638 mov r0, r7 updatedBytes += update(i,*p++); - 1d750: f10a 0a01 add.w sl, sl, #1 + 1d830: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 1d754: f007 fbf0 bl 24f38 - 1d758: 6833 ldr r3, [r6, #0] - 1d75a: 6a2a ldr r2, [r5, #32] - 1d75c: 1a9b subs r3, r3, r2 + 1d834: f007 fbf6 bl 25024 + 1d838: 6833 ldr r3, [r6, #0] + 1d83a: 6a2a ldr r2, [r5, #32] + 1d83c: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1d75e: 2bf9 cmp r3, #249 ; 0xf9 - 1d760: d9e1 bls.n 1d726 - 1d762: 2101 movs r1, #1 - 1d764: 4658 mov r0, fp - 1d766: f00e feef bl 2c548 - 1d76a: 6833 ldr r3, [r6, #0] + 1d83e: 2bf9 cmp r3, #249 ; 0xf9 + 1d840: d9e1 bls.n 1d806 + 1d842: 2101 movs r1, #1 + 1d844: 4658 mov r0, fp + 1d846: f00e fef3 bl 2c630 + 1d84a: 6833 ldr r3, [r6, #0] for(i=start;i - 1d772: 2101 movs r1, #1 - 1d774: 481f ldr r0, [pc, #124] ; (1d7f4 ) - 1d776: f00e fee7 bl 2c548 - 1d77a: 4817 ldr r0, [pc, #92] ; (1d7d8 ) - 1d77c: f00c fb7a bl 29e74 - 1d780: 2109 movs r1, #9 - 1d782: 481d ldr r0, [pc, #116] ; (1d7f8 ) - 1d784: f00e fee0 bl 2c548 - 1d788: 2101 movs r1, #1 - 1d78a: 4815 ldr r0, [pc, #84] ; (1d7e0 ) - 1d78c: f00e fedc bl 2c548 + 1d84e: 622b str r3, [r5, #32] + 1d850: d1db bne.n 1d80a + 1d852: 2101 movs r1, #1 + 1d854: 481f ldr r0, [pc, #124] ; (1d8d4 ) + 1d856: f00e feeb bl 2c630 + 1d85a: 4817 ldr r0, [pc, #92] ; (1d8b8 ) + 1d85c: f00c fb80 bl 29f60 + 1d860: 2109 movs r1, #9 + 1d862: 481d ldr r0, [pc, #116] ; (1d8d8 ) + 1d864: f00e fee4 bl 2c630 + 1d868: 2101 movs r1, #1 + 1d86a: 4815 ldr r0, [pc, #84] ; (1d8c0 ) + 1d86c: f00e fee0 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1d790: 2300 movs r3, #0 - 1d792: 220a movs r2, #10 - 1d794: 4651 mov r1, sl - 1d796: 4810 ldr r0, [pc, #64] ; (1d7d8 ) - 1d798: f00c fb88 bl 29eac - 1d79c: 2101 movs r1, #1 - 1d79e: 4810 ldr r0, [pc, #64] ; (1d7e0 ) - 1d7a0: f00e fed2 bl 2c548 - 1d7a4: 2105 movs r1, #5 - 1d7a6: 4815 ldr r0, [pc, #84] ; (1d7fc ) - 1d7a8: f00e fece bl 2c548 + 1d870: 2300 movs r3, #0 + 1d872: 220a movs r2, #10 + 1d874: 4651 mov r1, sl + 1d876: 4810 ldr r0, [pc, #64] ; (1d8b8 ) + 1d878: f00c fb8e bl 29f98 + 1d87c: 2101 movs r1, #1 + 1d87e: 4810 ldr r0, [pc, #64] ; (1d8c0 ) + 1d880: f00e fed6 bl 2c630 + 1d884: 2105 movs r1, #5 + 1d886: 4815 ldr r0, [pc, #84] ; (1d8dc ) + 1d888: f00e fed2 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1d7ac: 480a ldr r0, [pc, #40] ; (1d7d8 ) - 1d7ae: f00c fb61 bl 29e74 + 1d88c: 480a ldr r0, [pc, #40] ; (1d8b8 ) + 1d88e: f00c fb67 bl 29f60 debugStopTiming(); - 1d7b2: 9801 ldr r0, [sp, #4] - 1d7b4: f7fe fbf8 bl 1bfa8 + 1d892: 9801 ldr r0, [sp, #4] + 1d894: f7fe fbf8 bl 1c088 if(midi.globals.editorConnected()){ - 1d7b8: 686b ldr r3, [r5, #4] - 1d7ba: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1d7be: 6ddb ldr r3, [r3, #92] ; 0x5c - 1d7c0: 075b lsls r3, r3, #29 - 1d7c2: d503 bpl.n 1d7cc + 1d898: 686b ldr r3, [r5, #4] + 1d89a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1d89e: 6ddb ldr r3, [r3, #92] ; 0x5c + 1d8a0: 075b lsls r3, r3, #29 + 1d8a2: d503 bpl.n 1d8ac bitSet(flags, bit); - 1d7c4: 6b2b ldr r3, [r5, #48] ; 0x30 - 1d7c6: f043 0304 orr.w r3, r3, #4 - 1d7ca: 632b str r3, [r5, #48] ; 0x30 - } - 1d7cc: b005 add sp, #20 - 1d7ce: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1d7d2: bf00 nop - 1d7d4: 20003c58 .word 0x20003c58 - 1d7d8: 20004ba8 .word 0x20004ba8 - 1d7dc: 200036c8 .word 0x200036c8 - 1d7e0: 200023ec .word 0x200023ec - 1d7e4: 20003e04 .word 0x20003e04 - 1d7e8: 20003e10 .word 0x20003e10 - 1d7ec: 20003e1c .word 0x20003e1c - 1d7f0: 2000bae8 .word 0x2000bae8 - 1d7f4: 200030b8 .word 0x200030b8 - 1d7f8: 20003e2c .word 0x20003e2c - 1d7fc: 20002448 .word 0x20002448 - -0001d800 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]>: + 1d8a4: 6b2b ldr r3, [r5, #48] ; 0x30 + 1d8a6: f043 0304 orr.w r3, r3, #4 + 1d8aa: 632b str r3, [r5, #48] ; 0x30 + } + 1d8ac: b005 add sp, #20 + 1d8ae: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1d8b2: bf00 nop + 1d8b4: 20003d18 .word 0x20003d18 + 1d8b8: 20004c68 .word 0x20004c68 + 1d8bc: 20003788 .word 0x20003788 + 1d8c0: 200023ec .word 0x200023ec + 1d8c4: 20003ec4 .word 0x20003ec4 + 1d8c8: 20003ed0 .word 0x20003ed0 + 1d8cc: 20003edc .word 0x20003edc + 1d8d0: 2000bb08 .word 0x2000bb08 + 1d8d4: 20003150 .word 0x20003150 + 1d8d8: 20003eec .word 0x20003eec + 1d8dc: 20002448 .word 0x20002448 + +0001d8e0 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]>: void BMCEditor::incomingMessageDeviceWrite(bmcStoreDevice& item, uint16_t index, int16_t layer){ - 1d800: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 1d8e0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} uint16_t name = incoming.get14Bits(13); - 1d804: 6bc3 ldr r3, [r0, #60] ; 0x3c + 1d8e4: 6bc3 ldr r3, [r0, #60] ; 0x3c void BMCEditor::incomingMessageDeviceWrite(bmcStoreDevice& item, uint16_t index, int16_t layer){ - 1d806: 4681 mov r9, r0 + 1d8e6: 4681 mov r9, r0 if((t_offset+1) < size()){ - 1d808: f8b3 4003 ldrh.w r4, [r3, #3] - 1d80c: 2c0e cmp r4, #14 - 1d80e: d86f bhi.n 1d8f0 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf0> + 1d8e8: f8b3 4003 ldrh.w r4, [r3, #3] + 1d8ec: 2c0e cmp r4, #14 + 1d8ee: d86f bhi.n 1d9d0 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf0> item.name = 0; - 1d810: 2300 movs r3, #0 - 1d812: 700b strb r3, [r1, #0] + 1d8f0: 2300 movs r3, #0 + 1d8f2: 700b strb r3, [r1, #0] uint8_t lenSettings = incoming.get7Bits(15); - 1d814: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c + 1d8f4: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c if(t_offset < size()){ - 1d818: f8b4 5003 ldrh.w r5, [r4, #3] - 1d81c: 2d0f cmp r5, #15 - 1d81e: d879 bhi.n 1d914 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x114> - 1d820: 2508 movs r5, #8 - 1d822: 2301 movs r3, #1 + 1d8f8: f8b4 5003 ldrh.w r5, [r4, #3] + 1d8fc: 2d0f cmp r5, #15 + 1d8fe: d879 bhi.n 1d9f4 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x114> + 1d900: 2508 movs r5, #8 + 1d902: 2301 movs r3, #1 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1d824: 2400 movs r4, #0 - 1d826: 0066 lsls r6, r4, #1 - 1d828: 3611 adds r6, #17 - 1d82a: b2f6 uxtb r6, r6 + 1d904: 2400 movs r4, #0 + 1d906: 0066 lsls r6, r4, #1 + 1d908: 3611 adds r6, #17 + 1d90a: b2f6 uxtb r6, r6 if(i < sLen){ - 1d82c: 2c00 cmp r4, #0 - 1d82e: d054 beq.n 1d8da (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xda> + 1d90c: 2c00 cmp r4, #0 + 1d90e: d054 beq.n 1d9ba (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xda> for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1d830: 3401 adds r4, #1 - 1d832: b2e6 uxtb r6, r4 - 1d834: 429e cmp r6, r3 - 1d836: d3f6 bcc.n 1d826 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x26> + 1d910: 3401 adds r4, #1 + 1d912: b2e6 uxtb r6, r4 + 1d914: 429e cmp r6, r3 + 1d916: d3f6 bcc.n 1d906 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x26> lenCount += 2; - 1d838: 005b lsls r3, r3, #1 + 1d918: 005b lsls r3, r3, #1 item.events[i] = e; - 1d83a: 3102 adds r1, #2 + 1d91a: 3102 adds r1, #2 lenCount += 2; - 1d83c: f04f 0e00 mov.w lr, #0 - 1d840: 3311 adds r3, #17 - 1d842: b2db uxtb r3, r3 - 1d844: e007 b.n 1d856 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x56> + 1d91c: f04f 0e00 mov.w lr, #0 + 1d920: 3311 adds r3, #17 + 1d922: b2db uxtb r3, r3 + 1d924: e007 b.n 1d936 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x56> for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1d846: f10e 0e01 add.w lr, lr, #1 + 1d926: f10e 0e01 add.w lr, lr, #1 lenCount += 2; - 1d84a: 3302 adds r3, #2 + 1d92a: 3302 adds r3, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1d84c: fa5f fc8e uxtb.w ip, lr + 1d92c: fa5f fc8e uxtb.w ip, lr lenCount += 2; - 1d850: b2db uxtb r3, r3 + 1d930: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1d852: 45ac cmp ip, r5 - 1d854: d21c bcs.n 1d890 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x90> + 1d932: 45ac cmp ip, r5 + 1d934: d21c bcs.n 1d970 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x90> if(i < eLen){ - 1d856: f1be 0f07 cmp.w lr, #7 - 1d85a: d8f4 bhi.n 1d846 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x46> + 1d936: f1be 0f07 cmp.w lr, #7 + 1d93a: d8f4 bhi.n 1d926 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x46> uint16_t e = incoming.get14Bits(lenCount); - 1d85c: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c + 1d93c: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c if((t_offset+1) < size()){ - 1d860: 1c5e adds r6, r3, #1 - 1d862: f04f 0c00 mov.w ip, #0 - 1d866: f8b4 7003 ldrh.w r7, [r4, #3] - 1d86a: 42be cmp r6, r7 - 1d86c: da0d bge.n 1d88a (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8a> + 1d940: 1c5e adds r6, r3, #1 + 1d942: f04f 0c00 mov.w ip, #0 + 1d946: f8b4 7003 ldrh.w r7, [r4, #3] + 1d94a: 42be cmp r6, r7 + 1d94c: da0d bge.n 1d96a (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8a> return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1d86e: 18e7 adds r7, r4, r3 - 1d870: 4434 add r4, r6 - 1d872: 797e ldrb r6, [r7, #5] - 1d874: 7964 ldrb r4, [r4, #5] - 1d876: 01f6 lsls r6, r6, #7 - 1d878: f004 047f and.w r4, r4, #127 ; 0x7f - 1d87c: f406 567e and.w r6, r6, #16256 ; 0x3f80 - 1d880: 4334 orrs r4, r6 + 1d94e: 18e7 adds r7, r4, r3 + 1d950: 4434 add r4, r6 + 1d952: 797e ldrb r6, [r7, #5] + 1d954: 7964 ldrb r4, [r4, #5] + 1d956: 01f6 lsls r6, r6, #7 + 1d958: f004 047f and.w r4, r4, #127 ; 0x7f + 1d95c: f406 567e and.w r6, r6, #16256 ; 0x3f80 + 1d960: 4334 orrs r4, r6 if(e > BMC_MAX_EVENTS_LIBRARY){ - 1d882: 2cc8 cmp r4, #200 ; 0xc8 + 1d962: 2cc8 cmp r4, #200 ; 0xc8 item.events[i] = e; - 1d884: bfd8 it le - 1d886: fa5f fc84 uxtble.w ip, r4 - 1d88a: f801 c00e strb.w ip, [r1, lr] - 1d88e: e7da b.n 1d846 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x46> + 1d964: bfd8 it le + 1d966: fa5f fc84 uxtble.w ip, r4 + 1d96a: f801 c00e strb.w ip, [r1, lr] + 1d96e: e7da b.n 1d926 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x46> if(layer >= 0 && !backupActive()){ - 1d890: 2a00 cmp r2, #0 - 1d892: db14 blt.n 1d8be (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xbe> - 1d894: f899 3044 ldrb.w r3, [r9, #68] ; 0x44 + 1d970: 2a00 cmp r2, #0 + 1d972: db14 blt.n 1d99e (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xbe> + 1d974: f899 3044 ldrb.w r3, [r9, #68] ; 0x44 midi.globals.editorConnected() && - 1d898: 071c lsls r4, r3, #28 - 1d89a: d412 bmi.n 1d8c2 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xc2> + 1d978: 071c lsls r4, r3, #28 + 1d97a: d412 bmi.n 1d9a2 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xc2> saveLayersAndReloadData(layer); - 1d89c: b2d1 uxtb r1, r2 - 1d89e: 4648 mov r0, r9 - 1d8a0: f7ff fede bl 1d660 + 1d97c: b2d1 uxtb r1, r2 + 1d97e: 4648 mov r0, r9 + 1d980: f7ff fede bl 1d740 if(midi.globals.editorConnected()){ - 1d8a4: f8d9 3004 ldr.w r3, [r9, #4] + 1d984: f8d9 3004 ldr.w r3, [r9, #4] return bitRead(flags, bit); - 1d8a8: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1d8ac: 6ddb ldr r3, [r3, #92] ; 0x5c - 1d8ae: 075b lsls r3, r3, #29 - 1d8b0: d505 bpl.n 1d8be (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xbe> + 1d988: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1d98c: 6ddb ldr r3, [r3, #92] ; 0x5c + 1d98e: 075b lsls r3, r3, #29 + 1d990: d505 bpl.n 1d99e (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xbe> bitSet(flags, bit); - 1d8b2: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 - 1d8b6: f043 0304 orr.w r3, r3, #4 - 1d8ba: f8c9 3030 str.w r3, [r9, #48] ; 0x30 + 1d992: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 + 1d996: f043 0304 orr.w r3, r3, #4 + 1d99a: f8c9 3030 str.w r3, [r9, #48] ; 0x30 } - 1d8be: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 1d99e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} midi.globals.editorConnected() && - 1d8c2: f8d9 3004 ldr.w r3, [r9, #4] + 1d9a2: f8d9 3004 ldr.w r3, [r9, #4] return bitRead(flags, bit); - 1d8c6: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1d8ca: 6ddb ldr r3, [r3, #92] ; 0x5c + 1d9a6: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1d9aa: 6ddb ldr r3, [r3, #92] ; 0x5c return isBackupMessage() && - 1d8cc: 0758 lsls r0, r3, #29 - 1d8ce: d5e5 bpl.n 1d89c (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x9c> - 1d8d0: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 + 1d9ac: 0758 lsls r0, r3, #29 + 1d9ae: d5e5 bpl.n 1d97c (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x9c> + 1d9b0: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 midi.globals.editorConnected() && - 1d8d4: 0499 lsls r1, r3, #18 - 1d8d6: d4f2 bmi.n 1d8be (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xbe> - 1d8d8: e7e0 b.n 1d89c (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x9c> + 1d9b4: 0499 lsls r1, r3, #18 + 1d9b6: d4f2 bmi.n 1d99e (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0xbe> + 1d9b8: e7e0 b.n 1d97c (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x9c> item.settings[i] = incoming.get8Bits(lenCount); - 1d8da: f8d9 003c ldr.w r0, [r9, #60] ; 0x3c + 1d9ba: f8d9 003c ldr.w r0, [r9, #60] ; 0x3c if((t_offset+1) < size()){ - 1d8de: f106 0e01 add.w lr, r6, #1 + 1d9be: f106 0e01 add.w lr, r6, #1 return 0; - 1d8e2: 4627 mov r7, r4 + 1d9c2: 4627 mov r7, r4 if((t_offset+1) < size()){ - 1d8e4: f8b0 8003 ldrh.w r8, [r0, #3] - 1d8e8: 45c6 cmp lr, r8 - 1d8ea: db22 blt.n 1d932 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x132> - 1d8ec: 704f strb r7, [r1, #1] - 1d8ee: e79f b.n 1d830 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x30> + 1d9c4: f8b0 8003 ldrh.w r8, [r0, #3] + 1d9c8: 45c6 cmp lr, r8 + 1d9ca: db22 blt.n 1da12 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x132> + 1d9cc: 704f strb r7, [r1, #1] + 1d9ce: e79f b.n 1d910 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x30> return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1d8f0: 7c9c ldrb r4, [r3, #18] - 1d8f2: 7cdb ldrb r3, [r3, #19] - 1d8f4: 01e4 lsls r4, r4, #7 - 1d8f6: f003 037f and.w r3, r3, #127 ; 0x7f - 1d8fa: f404 547e and.w r4, r4, #16256 ; 0x3f80 - 1d8fe: 4323 orrs r3, r4 + 1d9d0: 7c9c ldrb r4, [r3, #18] + 1d9d2: 7cdb ldrb r3, [r3, #19] + 1d9d4: 01e4 lsls r4, r4, #7 + 1d9d6: f003 037f and.w r3, r3, #127 ; 0x7f + 1d9da: f404 547e and.w r4, r4, #16256 ; 0x3f80 + 1d9de: 4323 orrs r3, r4 if(name <= BMC_MAX_NAMES_LIBRARY){ - 1d900: 2b80 cmp r3, #128 ; 0x80 - 1d902: dc85 bgt.n 1d810 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10> + 1d9e0: 2b80 cmp r3, #128 ; 0x80 + 1d9e2: dc85 bgt.n 1d8f0 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10> item.name = name; - 1d904: b2db uxtb r3, r3 - 1d906: 700b strb r3, [r1, #0] + 1d9e4: b2db uxtb r3, r3 + 1d9e6: 700b strb r3, [r1, #0] uint8_t lenSettings = incoming.get7Bits(15); - 1d908: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c + 1d9e8: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c if(t_offset < size()){ - 1d90c: f8b4 5003 ldrh.w r5, [r4, #3] - 1d910: 2d0f cmp r5, #15 - 1d912: d985 bls.n 1d820 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x20> + 1d9ec: f8b4 5003 ldrh.w r5, [r4, #3] + 1d9f0: 2d0f cmp r5, #15 + 1d9f2: d985 bls.n 1d900 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x20> return sysex[t_offset] & 0x7F; - 1d914: 7d23 ldrb r3, [r4, #20] + 1d9f4: 7d23 ldrb r3, [r4, #20] if(t_offset < size()){ - 1d916: 2d10 cmp r5, #16 + 1d9f6: 2d10 cmp r5, #16 return sysex[t_offset] & 0x7F; - 1d918: f003 037f and.w r3, r3, #127 ; 0x7f + 1d9f8: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 1d91c: d017 beq.n 1d94e (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x14e> + 1d9fc: d017 beq.n 1da2e (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x14e> return sysex[t_offset] & 0x7F; - 1d91e: 7d65 ldrb r5, [r4, #21] - 1d920: 2b01 cmp r3, #1 - 1d922: f005 057f and.w r5, r5, #127 ; 0x7f - 1d926: bf38 it cc - 1d928: 2301 movcc r3, #1 - 1d92a: 2d08 cmp r5, #8 - 1d92c: bf38 it cc - 1d92e: 2508 movcc r5, #8 - 1d930: e778 b.n 1d824 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x24> + 1d9fe: 7d65 ldrb r5, [r4, #21] + 1da00: 2b01 cmp r3, #1 + 1da02: f005 057f and.w r5, r5, #127 ; 0x7f + 1da06: bf38 it cc + 1da08: 2301 movcc r3, #1 + 1da0a: 2d08 cmp r5, #8 + 1da0c: bf38 it cc + 1da0e: 2508 movcc r5, #8 + 1da10: e778 b.n 1d904 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x24> return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 1d932: 4486 add lr, r0 - 1d934: eb00 0c06 add.w ip, r0, r6 - 1d938: f89e 7005 ldrb.w r7, [lr, #5] - 1d93c: f89c 6005 ldrb.w r6, [ip, #5] - 1d940: f007 077f and.w r7, r7, #127 ; 0x7f - 1d944: ea47 17c6 orr.w r7, r7, r6, lsl #7 - 1d948: b2ff uxtb r7, r7 + 1da12: 4486 add lr, r0 + 1da14: eb00 0c06 add.w ip, r0, r6 + 1da18: f89e 7005 ldrb.w r7, [lr, #5] + 1da1c: f89c 6005 ldrb.w r6, [ip, #5] + 1da20: f007 077f and.w r7, r7, #127 ; 0x7f + 1da24: ea47 17c6 orr.w r7, r7, r6, lsl #7 + 1da28: b2ff uxtb r7, r7 item.settings[i] = incoming.get8Bits(lenCount); - 1d94a: 704f strb r7, [r1, #1] - 1d94c: e770 b.n 1d830 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x30> - 1d94e: 2b01 cmp r3, #1 + 1da2a: 704f strb r7, [r1, #1] + 1da2c: e770 b.n 1d910 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x30> + 1da2e: 2b01 cmp r3, #1 if(t_offset < size()){ - 1d950: f04f 0508 mov.w r5, #8 - 1d954: bf38 it cc - 1d956: 2301 movcc r3, #1 - 1d958: e764 b.n 1d824 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x24> - 1d95a: bf00 nop + 1da30: f04f 0508 mov.w r5, #8 + 1da34: bf38 it cc + 1da36: 2301 movcc r3, #1 + 1da38: e764 b.n 1d904 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]+0x24> + 1da3a: bf00 nop -0001d95c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]>: +0001da3c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]>: void BMCEditor::incomingMessageDeviceWrite(bmcStoreDevice& item, uint16_t index, int16_t layer){ - 1d95c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 1da3c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} uint16_t name = incoming.get14Bits(13); - 1d960: 6bc3 ldr r3, [r0, #60] ; 0x3c + 1da40: 6bc3 ldr r3, [r0, #60] ; 0x3c void BMCEditor::incomingMessageDeviceWrite(bmcStoreDevice& item, uint16_t index, int16_t layer){ - 1d962: 4681 mov r9, r0 + 1da42: 4681 mov r9, r0 if((t_offset+1) < size()){ - 1d964: f8b3 4003 ldrh.w r4, [r3, #3] - 1d968: 2c0e cmp r4, #14 - 1d96a: d87a bhi.n 1da62 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x106> + 1da44: f8b3 4003 ldrh.w r4, [r3, #3] + 1da48: 2c0e cmp r4, #14 + 1da4a: d87a bhi.n 1db42 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x106> item.name = 0; - 1d96c: 2300 movs r3, #0 - 1d96e: 700b strb r3, [r1, #0] + 1da4c: 2300 movs r3, #0 + 1da4e: 700b strb r3, [r1, #0] uint8_t lenSettings = incoming.get7Bits(15); - 1d970: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c + 1da50: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c if(t_offset < size()){ - 1d974: f8b4 5003 ldrh.w r5, [r4, #3] - 1d978: 2d0f cmp r5, #15 - 1d97a: f200 8086 bhi.w 1da8a (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x12e> - 1d97e: f04f 0e10 mov.w lr, #16 - 1d982: 2301 movs r3, #1 + 1da54: f8b4 5003 ldrh.w r5, [r4, #3] + 1da58: 2d0f cmp r5, #15 + 1da5a: f200 8086 bhi.w 1db6a (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x12e> + 1da5e: f04f 0e10 mov.w lr, #16 + 1da62: 2301 movs r3, #1 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1d984: 2400 movs r4, #0 - 1d986: 0065 lsls r5, r4, #1 - 1d988: 3511 adds r5, #17 - 1d98a: b2ed uxtb r5, r5 + 1da64: 2400 movs r4, #0 + 1da66: 0065 lsls r5, r4, #1 + 1da68: 3511 adds r5, #17 + 1da6a: b2ed uxtb r5, r5 if(i < sLen){ - 1d98c: 2c00 cmp r4, #0 - 1d98e: d05d beq.n 1da4c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf0> + 1da6c: 2c00 cmp r4, #0 + 1da6e: d05d beq.n 1db2c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf0> for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1d990: 3401 adds r4, #1 - 1d992: b2e5 uxtb r5, r4 - 1d994: 429d cmp r5, r3 - 1d996: d3f6 bcc.n 1d986 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x2a> - 1d998: 3b01 subs r3, #1 + 1da70: 3401 adds r4, #1 + 1da72: b2e5 uxtb r5, r4 + 1da74: 429d cmp r5, r3 + 1da76: d3f6 bcc.n 1da66 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x2a> + 1da78: 3b01 subs r3, #1 item.events[i] = e; - 1d99a: 3102 adds r1, #2 + 1da7a: 3102 adds r1, #2 lenCount += 2; - 1d99c: f04f 0c00 mov.w ip, #0 - 1d9a0: 005b lsls r3, r3, #1 - 1d9a2: b2db uxtb r3, r3 - 1d9a4: eb03 0e4e add.w lr, r3, lr, lsl #1 - 1d9a8: 3313 adds r3, #19 - 1d9aa: f10e 0e13 add.w lr, lr, #19 - 1d9ae: b2db uxtb r3, r3 - 1d9b0: fa5f fe8e uxtb.w lr, lr - 1d9b4: e005 b.n 1d9c2 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x66> + 1da7c: f04f 0c00 mov.w ip, #0 + 1da80: 005b lsls r3, r3, #1 + 1da82: b2db uxtb r3, r3 + 1da84: eb03 0e4e add.w lr, r3, lr, lsl #1 + 1da88: 3313 adds r3, #19 + 1da8a: f10e 0e13 add.w lr, lr, #19 + 1da8e: b2db uxtb r3, r3 + 1da90: fa5f fe8e uxtb.w lr, lr + 1da94: e005 b.n 1daa2 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x66> lenCount += 2; - 1d9b6: 3302 adds r3, #2 + 1da96: 3302 adds r3, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1d9b8: f10c 0c01 add.w ip, ip, #1 + 1da98: f10c 0c01 add.w ip, ip, #1 lenCount += 2; - 1d9bc: b2db uxtb r3, r3 + 1da9c: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1d9be: 459e cmp lr, r3 - 1d9c0: d01f beq.n 1da02 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xa6> + 1da9e: 459e cmp lr, r3 + 1daa0: d01f beq.n 1dae2 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xa6> if(i < eLen){ - 1d9c2: f1bc 0f0f cmp.w ip, #15 - 1d9c6: d8f6 bhi.n 1d9b6 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x5a> + 1daa2: f1bc 0f0f cmp.w ip, #15 + 1daa6: d8f6 bhi.n 1da96 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x5a> uint16_t e = incoming.get14Bits(lenCount); - 1d9c8: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c + 1daa8: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c if((t_offset+1) < size()){ - 1d9cc: 1c5d adds r5, r3, #1 - 1d9ce: 2600 movs r6, #0 - 1d9d0: f8b4 7003 ldrh.w r7, [r4, #3] - 1d9d4: 42bd cmp r5, r7 - 1d9d6: da0c bge.n 1d9f2 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x96> + 1daac: 1c5d adds r5, r3, #1 + 1daae: 2600 movs r6, #0 + 1dab0: f8b4 7003 ldrh.w r7, [r4, #3] + 1dab4: 42bd cmp r5, r7 + 1dab6: da0c bge.n 1dad2 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x96> return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1d9d8: 18e7 adds r7, r4, r3 - 1d9da: 442c add r4, r5 - 1d9dc: 797d ldrb r5, [r7, #5] - 1d9de: 7964 ldrb r4, [r4, #5] - 1d9e0: 01ed lsls r5, r5, #7 - 1d9e2: f004 047f and.w r4, r4, #127 ; 0x7f - 1d9e6: f405 557e and.w r5, r5, #16256 ; 0x3f80 - 1d9ea: 432c orrs r4, r5 + 1dab8: 18e7 adds r7, r4, r3 + 1daba: 442c add r4, r5 + 1dabc: 797d ldrb r5, [r7, #5] + 1dabe: 7964 ldrb r4, [r4, #5] + 1dac0: 01ed lsls r5, r5, #7 + 1dac2: f004 047f and.w r4, r4, #127 ; 0x7f + 1dac6: f405 557e and.w r5, r5, #16256 ; 0x3f80 + 1daca: 432c orrs r4, r5 if(e > BMC_MAX_EVENTS_LIBRARY){ - 1d9ec: 2cc8 cmp r4, #200 ; 0xc8 + 1dacc: 2cc8 cmp r4, #200 ; 0xc8 item.events[i] = e; - 1d9ee: bfd8 it le - 1d9f0: b2e6 uxtble r6, r4 + 1dace: bfd8 it le + 1dad0: b2e6 uxtble r6, r4 lenCount += 2; - 1d9f2: 3302 adds r3, #2 + 1dad2: 3302 adds r3, #2 item.events[i] = e; - 1d9f4: f801 600c strb.w r6, [r1, ip] + 1dad4: f801 600c strb.w r6, [r1, ip] for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1d9f8: f10c 0c01 add.w ip, ip, #1 + 1dad8: f10c 0c01 add.w ip, ip, #1 lenCount += 2; - 1d9fc: b2db uxtb r3, r3 + 1dadc: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1d9fe: 459e cmp lr, r3 - 1da00: d1df bne.n 1d9c2 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x66> + 1dade: 459e cmp lr, r3 + 1dae0: d1df bne.n 1daa2 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x66> if(layer >= 0 && !backupActive()){ - 1da02: 2a00 cmp r2, #0 - 1da04: db14 blt.n 1da30 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xd4> - 1da06: f899 3044 ldrb.w r3, [r9, #68] ; 0x44 - 1da0a: 071c lsls r4, r3, #28 - 1da0c: d412 bmi.n 1da34 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xd8> + 1dae2: 2a00 cmp r2, #0 + 1dae4: db14 blt.n 1db10 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xd4> + 1dae6: f899 3044 ldrb.w r3, [r9, #68] ; 0x44 + 1daea: 071c lsls r4, r3, #28 + 1daec: d412 bmi.n 1db14 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xd8> saveLayersAndReloadData(layer); - 1da0e: b2d1 uxtb r1, r2 - 1da10: 4648 mov r0, r9 - 1da12: f7ff fe25 bl 1d660 + 1daee: b2d1 uxtb r1, r2 + 1daf0: 4648 mov r0, r9 + 1daf2: f7ff fe25 bl 1d740 if(midi.globals.editorConnected()){ - 1da16: f8d9 3004 ldr.w r3, [r9, #4] - 1da1a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1da1e: 6ddb ldr r3, [r3, #92] ; 0x5c - 1da20: 075b lsls r3, r3, #29 - 1da22: d505 bpl.n 1da30 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xd4> + 1daf6: f8d9 3004 ldr.w r3, [r9, #4] + 1dafa: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1dafe: 6ddb ldr r3, [r3, #92] ; 0x5c + 1db00: 075b lsls r3, r3, #29 + 1db02: d505 bpl.n 1db10 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xd4> bitSet(flags, bit); - 1da24: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 - 1da28: f043 0304 orr.w r3, r3, #4 - 1da2c: f8c9 3030 str.w r3, [r9, #48] ; 0x30 + 1db04: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 + 1db08: f043 0304 orr.w r3, r3, #4 + 1db0c: f8c9 3030 str.w r3, [r9, #48] ; 0x30 } - 1da30: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 1db10: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} midi.globals.editorConnected() && - 1da34: f8d9 3004 ldr.w r3, [r9, #4] + 1db14: f8d9 3004 ldr.w r3, [r9, #4] return bitRead(flags, bit); - 1da38: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1da3c: 6ddb ldr r3, [r3, #92] ; 0x5c + 1db18: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1db1c: 6ddb ldr r3, [r3, #92] ; 0x5c return isBackupMessage() && - 1da3e: 0758 lsls r0, r3, #29 - 1da40: d5e5 bpl.n 1da0e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb2> - 1da42: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 + 1db1e: 0758 lsls r0, r3, #29 + 1db20: d5e5 bpl.n 1daee (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb2> + 1db22: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 midi.globals.editorConnected() && - 1da46: 0499 lsls r1, r3, #18 - 1da48: d4f2 bmi.n 1da30 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xd4> - 1da4a: e7e0 b.n 1da0e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb2> + 1db26: 0499 lsls r1, r3, #18 + 1db28: d4f2 bmi.n 1db10 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xd4> + 1db2a: e7e0 b.n 1daee (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb2> item.settings[i] = incoming.get8Bits(lenCount); - 1da4c: f8d9 703c ldr.w r7, [r9, #60] ; 0x3c + 1db2c: f8d9 703c ldr.w r7, [r9, #60] ; 0x3c if((t_offset+1) < size()){ - 1da50: f105 0c01 add.w ip, r5, #1 + 1db30: f105 0c01 add.w ip, r5, #1 return 0; - 1da54: 4626 mov r6, r4 + 1db34: 4626 mov r6, r4 if((t_offset+1) < size()){ - 1da56: f8b7 8003 ldrh.w r8, [r7, #3] - 1da5a: 45c4 cmp ip, r8 - 1da5c: db27 blt.n 1daae (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x152> - 1da5e: 704e strb r6, [r1, #1] - 1da60: e796 b.n 1d990 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x34> + 1db36: f8b7 8003 ldrh.w r8, [r7, #3] + 1db3a: 45c4 cmp ip, r8 + 1db3c: db27 blt.n 1db8e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x152> + 1db3e: 704e strb r6, [r1, #1] + 1db40: e796 b.n 1da70 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x34> return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1da62: 7c9c ldrb r4, [r3, #18] - 1da64: 7cdb ldrb r3, [r3, #19] - 1da66: 01e4 lsls r4, r4, #7 - 1da68: f003 037f and.w r3, r3, #127 ; 0x7f - 1da6c: f404 547e and.w r4, r4, #16256 ; 0x3f80 - 1da70: 4323 orrs r3, r4 + 1db42: 7c9c ldrb r4, [r3, #18] + 1db44: 7cdb ldrb r3, [r3, #19] + 1db46: 01e4 lsls r4, r4, #7 + 1db48: f003 037f and.w r3, r3, #127 ; 0x7f + 1db4c: f404 547e and.w r4, r4, #16256 ; 0x3f80 + 1db50: 4323 orrs r3, r4 if(name <= BMC_MAX_NAMES_LIBRARY){ - 1da72: 2b80 cmp r3, #128 ; 0x80 - 1da74: f73f af7a bgt.w 1d96c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10> + 1db52: 2b80 cmp r3, #128 ; 0x80 + 1db54: f73f af7a bgt.w 1da4c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10> item.name = name; - 1da78: b2db uxtb r3, r3 - 1da7a: 700b strb r3, [r1, #0] + 1db58: b2db uxtb r3, r3 + 1db5a: 700b strb r3, [r1, #0] uint8_t lenSettings = incoming.get7Bits(15); - 1da7c: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c + 1db5c: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c if(t_offset < size()){ - 1da80: f8b4 5003 ldrh.w r5, [r4, #3] - 1da84: 2d0f cmp r5, #15 - 1da86: f67f af7a bls.w 1d97e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x22> + 1db60: f8b4 5003 ldrh.w r5, [r4, #3] + 1db64: 2d0f cmp r5, #15 + 1db66: f67f af7a bls.w 1da5e (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x22> return sysex[t_offset] & 0x7F; - 1da8a: 7d23 ldrb r3, [r4, #20] + 1db6a: 7d23 ldrb r3, [r4, #20] if(t_offset < size()){ - 1da8c: 2d10 cmp r5, #16 + 1db6c: 2d10 cmp r5, #16 return sysex[t_offset] & 0x7F; - 1da8e: f003 037f and.w r3, r3, #127 ; 0x7f + 1db6e: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 1da92: d018 beq.n 1dac6 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x16a> + 1db72: d018 beq.n 1dba6 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x16a> return sysex[t_offset] & 0x7F; - 1da94: f894 e015 ldrb.w lr, [r4, #21] - 1da98: 2b01 cmp r3, #1 - 1da9a: f00e 0e7f and.w lr, lr, #127 ; 0x7f - 1da9e: bf38 it cc - 1daa0: 2301 movcc r3, #1 - 1daa2: f1be 0f10 cmp.w lr, #16 - 1daa6: bf38 it cc - 1daa8: f04f 0e10 movcc.w lr, #16 - 1daac: e76a b.n 1d984 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x28> + 1db74: f894 e015 ldrb.w lr, [r4, #21] + 1db78: 2b01 cmp r3, #1 + 1db7a: f00e 0e7f and.w lr, lr, #127 ; 0x7f + 1db7e: bf38 it cc + 1db80: 2301 movcc r3, #1 + 1db82: f1be 0f10 cmp.w lr, #16 + 1db86: bf38 it cc + 1db88: f04f 0e10 movcc.w lr, #16 + 1db8c: e76a b.n 1da64 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x28> return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 1daae: 44bc add ip, r7 - 1dab0: 442f add r7, r5 - 1dab2: f89c 6005 ldrb.w r6, [ip, #5] - 1dab6: 797d ldrb r5, [r7, #5] - 1dab8: f006 067f and.w r6, r6, #127 ; 0x7f - 1dabc: ea46 16c5 orr.w r6, r6, r5, lsl #7 - 1dac0: b2f6 uxtb r6, r6 + 1db8e: 44bc add ip, r7 + 1db90: 442f add r7, r5 + 1db92: f89c 6005 ldrb.w r6, [ip, #5] + 1db96: 797d ldrb r5, [r7, #5] + 1db98: f006 067f and.w r6, r6, #127 ; 0x7f + 1db9c: ea46 16c5 orr.w r6, r6, r5, lsl #7 + 1dba0: b2f6 uxtb r6, r6 item.settings[i] = incoming.get8Bits(lenCount); - 1dac2: 704e strb r6, [r1, #1] - 1dac4: e764 b.n 1d990 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x34> - 1dac6: 2b01 cmp r3, #1 + 1dba2: 704e strb r6, [r1, #1] + 1dba4: e764 b.n 1da70 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x34> + 1dba6: 2b01 cmp r3, #1 if(t_offset < size()){ - 1dac8: 46ae mov lr, r5 - 1daca: bf38 it cc - 1dacc: 2301 movcc r3, #1 - 1dace: e759 b.n 1d984 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x28> + 1dba8: 46ae mov lr, r5 + 1dbaa: bf38 it cc + 1dbac: 2301 movcc r3, #1 + 1dbae: e759 b.n 1da64 (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]+0x28> -0001dad0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]>: +0001dbb0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]>: void BMCEditor::incomingMessageDeviceWrite(bmcStoreDevice& item, uint16_t index, int16_t layer){ - 1dad0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 1dbb0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} uint16_t name = incoming.get14Bits(13); - 1dad4: 6bc3 ldr r3, [r0, #60] ; 0x3c + 1dbb4: 6bc3 ldr r3, [r0, #60] ; 0x3c void BMCEditor::incomingMessageDeviceWrite(bmcStoreDevice& item, uint16_t index, int16_t layer){ - 1dad6: 4681 mov r9, r0 + 1dbb6: 4681 mov r9, r0 if((t_offset+1) < size()){ - 1dad8: f8b3 4003 ldrh.w r4, [r3, #3] - 1dadc: 2c0e cmp r4, #14 - 1dade: d873 bhi.n 1dbc8 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf8> + 1dbb8: f8b3 4003 ldrh.w r4, [r3, #3] + 1dbbc: 2c0e cmp r4, #14 + 1dbbe: d873 bhi.n 1dca8 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf8> item.name = 0; - 1dae0: 2300 movs r3, #0 - 1dae2: 700b strb r3, [r1, #0] + 1dbc0: 2300 movs r3, #0 + 1dbc2: 700b strb r3, [r1, #0] uint8_t lenSettings = incoming.get7Bits(15); - 1dae4: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c + 1dbc4: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c if(t_offset < size()){ - 1dae8: f8b4 5003 ldrh.w r5, [r4, #3] - 1daec: 2d0f cmp r5, #15 - 1daee: d87d bhi.n 1dbec (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x11c> - 1daf0: f04f 0c01 mov.w ip, #1 - 1daf4: 4663 mov r3, ip + 1dbc8: f8b4 5003 ldrh.w r5, [r4, #3] + 1dbcc: 2d0f cmp r5, #15 + 1dbce: d87d bhi.n 1dccc (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x11c> + 1dbd0: f04f 0c01 mov.w ip, #1 + 1dbd4: 4663 mov r3, ip for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1daf6: 2400 movs r4, #0 - 1daf8: 0065 lsls r5, r4, #1 - 1dafa: 3511 adds r5, #17 - 1dafc: b2ed uxtb r5, r5 + 1dbd6: 2400 movs r4, #0 + 1dbd8: 0065 lsls r5, r4, #1 + 1dbda: 3511 adds r5, #17 + 1dbdc: b2ed uxtb r5, r5 if(i < sLen){ - 1dafe: 2c00 cmp r4, #0 - 1db00: d057 beq.n 1dbb2 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0xe2> + 1dbde: 2c00 cmp r4, #0 + 1dbe0: d057 beq.n 1dc92 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0xe2> for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1db02: 3401 adds r4, #1 - 1db04: b2e5 uxtb r5, r4 - 1db06: 429d cmp r5, r3 - 1db08: d3f6 bcc.n 1daf8 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x28> - 1db0a: 3b01 subs r3, #1 + 1dbe2: 3401 adds r4, #1 + 1dbe4: b2e5 uxtb r5, r4 + 1dbe6: 429d cmp r5, r3 + 1dbe8: d3f6 bcc.n 1dbd8 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x28> + 1dbea: 3b01 subs r3, #1 lenCount += 2; - 1db0c: 2400 movs r4, #0 - 1db0e: 005b lsls r3, r3, #1 - 1db10: b2db uxtb r3, r3 - 1db12: eb03 0c4c add.w ip, r3, ip, lsl #1 - 1db16: 3313 adds r3, #19 - 1db18: f10c 0c13 add.w ip, ip, #19 - 1db1c: b2db uxtb r3, r3 - 1db1e: fa5f fc8c uxtb.w ip, ip + 1dbec: 2400 movs r4, #0 + 1dbee: 005b lsls r3, r3, #1 + 1dbf0: b2db uxtb r3, r3 + 1dbf2: eb03 0c4c add.w ip, r3, ip, lsl #1 + 1dbf6: 3313 adds r3, #19 + 1dbf8: f10c 0c13 add.w ip, ip, #19 + 1dbfc: b2db uxtb r3, r3 + 1dbfe: fa5f fc8c uxtb.w ip, ip if(i < eLen){ - 1db22: b1ec cbz r4, 1db60 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x90> + 1dc02: b1ec cbz r4, 1dc40 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x90> lenCount += 2; - 1db24: 3302 adds r3, #2 + 1dc04: 3302 adds r3, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1db26: 3401 adds r4, #1 + 1dc06: 3401 adds r4, #1 lenCount += 2; - 1db28: b2db uxtb r3, r3 + 1dc08: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1db2a: 459c cmp ip, r3 - 1db2c: d1f9 bne.n 1db22 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x52> + 1dc0a: 459c cmp ip, r3 + 1dc0c: d1f9 bne.n 1dc02 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x52> if(layer >= 0 && !backupActive()){ - 1db2e: 2a00 cmp r2, #0 - 1db30: db14 blt.n 1db5c (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8c> - 1db32: f899 3044 ldrb.w r3, [r9, #68] ; 0x44 - 1db36: 071c lsls r4, r3, #28 - 1db38: d42f bmi.n 1db9a (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0xca> + 1dc0e: 2a00 cmp r2, #0 + 1dc10: db14 blt.n 1dc3c (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8c> + 1dc12: f899 3044 ldrb.w r3, [r9, #68] ; 0x44 + 1dc16: 071c lsls r4, r3, #28 + 1dc18: d42f bmi.n 1dc7a (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0xca> saveLayersAndReloadData(layer); - 1db3a: b2d1 uxtb r1, r2 - 1db3c: 4648 mov r0, r9 - 1db3e: f7ff fd8f bl 1d660 + 1dc1a: b2d1 uxtb r1, r2 + 1dc1c: 4648 mov r0, r9 + 1dc1e: f7ff fd8f bl 1d740 if(midi.globals.editorConnected()){ - 1db42: f8d9 3004 ldr.w r3, [r9, #4] - 1db46: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1db4a: 6ddb ldr r3, [r3, #92] ; 0x5c - 1db4c: 075b lsls r3, r3, #29 - 1db4e: d505 bpl.n 1db5c (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8c> + 1dc22: f8d9 3004 ldr.w r3, [r9, #4] + 1dc26: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1dc2a: 6ddb ldr r3, [r3, #92] ; 0x5c + 1dc2c: 075b lsls r3, r3, #29 + 1dc2e: d505 bpl.n 1dc3c (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8c> bitSet(flags, bit); - 1db50: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 - 1db54: f043 0304 orr.w r3, r3, #4 - 1db58: f8c9 3030 str.w r3, [r9, #48] ; 0x30 + 1dc30: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 + 1dc34: f043 0304 orr.w r3, r3, #4 + 1dc38: f8c9 3030 str.w r3, [r9, #48] ; 0x30 } - 1db5c: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 1dc3c: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} uint16_t e = incoming.get14Bits(lenCount); - 1db60: f8d9 503c ldr.w r5, [r9, #60] ; 0x3c + 1dc40: f8d9 503c ldr.w r5, [r9, #60] ; 0x3c if((t_offset+1) < size()){ - 1db64: f103 0e01 add.w lr, r3, #1 - 1db68: 4626 mov r6, r4 - 1db6a: f8b5 7003 ldrh.w r7, [r5, #3] - 1db6e: 45be cmp lr, r7 - 1db70: db01 blt.n 1db76 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0xa6> + 1dc44: f103 0e01 add.w lr, r3, #1 + 1dc48: 4626 mov r6, r4 + 1dc4a: f8b5 7003 ldrh.w r7, [r5, #3] + 1dc4e: 45be cmp lr, r7 + 1dc50: db01 blt.n 1dc56 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0xa6> item.events[i] = e; - 1db72: 708e strb r6, [r1, #2] - 1db74: e7d6 b.n 1db24 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x54> + 1dc52: 708e strb r6, [r1, #2] + 1dc54: e7d6 b.n 1dc04 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x54> return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1db76: 18ef adds r7, r5, r3 - 1db78: 4475 add r5, lr - 1db7a: f897 e005 ldrb.w lr, [r7, #5] - 1db7e: 796d ldrb r5, [r5, #5] - 1db80: ea4f 1ece mov.w lr, lr, lsl #7 - 1db84: f005 057f and.w r5, r5, #127 ; 0x7f - 1db88: f40e 5e7e and.w lr, lr, #16256 ; 0x3f80 - 1db8c: ea45 050e orr.w r5, r5, lr + 1dc56: 18ef adds r7, r5, r3 + 1dc58: 4475 add r5, lr + 1dc5a: f897 e005 ldrb.w lr, [r7, #5] + 1dc5e: 796d ldrb r5, [r5, #5] + 1dc60: ea4f 1ece mov.w lr, lr, lsl #7 + 1dc64: f005 057f and.w r5, r5, #127 ; 0x7f + 1dc68: f40e 5e7e and.w lr, lr, #16256 ; 0x3f80 + 1dc6c: ea45 050e orr.w r5, r5, lr if(e > BMC_MAX_EVENTS_LIBRARY){ - 1db90: 2dc8 cmp r5, #200 ; 0xc8 + 1dc70: 2dc8 cmp r5, #200 ; 0xc8 item.events[i] = e; - 1db92: bfd8 it le - 1db94: b2ee uxtble r6, r5 - 1db96: 708e strb r6, [r1, #2] - 1db98: e7c4 b.n 1db24 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x54> + 1dc72: bfd8 it le + 1dc74: b2ee uxtble r6, r5 + 1dc76: 708e strb r6, [r1, #2] + 1dc78: e7c4 b.n 1dc04 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x54> midi.globals.editorConnected() && - 1db9a: f8d9 3004 ldr.w r3, [r9, #4] + 1dc7a: f8d9 3004 ldr.w r3, [r9, #4] return bitRead(flags, bit); - 1db9e: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1dba2: 6ddb ldr r3, [r3, #92] ; 0x5c + 1dc7e: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1dc82: 6ddb ldr r3, [r3, #92] ; 0x5c return isBackupMessage() && - 1dba4: 0758 lsls r0, r3, #29 - 1dba6: d5c8 bpl.n 1db3a (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x6a> - 1dba8: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 + 1dc84: 0758 lsls r0, r3, #29 + 1dc86: d5c8 bpl.n 1dc1a (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x6a> + 1dc88: f8d9 3030 ldr.w r3, [r9, #48] ; 0x30 midi.globals.editorConnected() && - 1dbac: 0499 lsls r1, r3, #18 - 1dbae: d4d5 bmi.n 1db5c (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8c> - 1dbb0: e7c3 b.n 1db3a (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x6a> + 1dc8c: 0499 lsls r1, r3, #18 + 1dc8e: d4d5 bmi.n 1dc3c (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8c> + 1dc90: e7c3 b.n 1dc1a (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x6a> item.settings[i] = incoming.get8Bits(lenCount); - 1dbb2: f8d9 703c ldr.w r7, [r9, #60] ; 0x3c + 1dc92: f8d9 703c ldr.w r7, [r9, #60] ; 0x3c if((t_offset+1) < size()){ - 1dbb6: f105 0e01 add.w lr, r5, #1 + 1dc96: f105 0e01 add.w lr, r5, #1 return 0; - 1dbba: 4626 mov r6, r4 + 1dc9a: 4626 mov r6, r4 if((t_offset+1) < size()){ - 1dbbc: f8b7 8003 ldrh.w r8, [r7, #3] - 1dbc0: 45c6 cmp lr, r8 - 1dbc2: db25 blt.n 1dc10 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x140> - 1dbc4: 704e strb r6, [r1, #1] - 1dbc6: e79c b.n 1db02 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x32> + 1dc9c: f8b7 8003 ldrh.w r8, [r7, #3] + 1dca0: 45c6 cmp lr, r8 + 1dca2: db25 blt.n 1dcf0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x140> + 1dca4: 704e strb r6, [r1, #1] + 1dca6: e79c b.n 1dbe2 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x32> return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1dbc8: 7c9c ldrb r4, [r3, #18] - 1dbca: 7cdb ldrb r3, [r3, #19] - 1dbcc: 01e4 lsls r4, r4, #7 - 1dbce: f003 037f and.w r3, r3, #127 ; 0x7f - 1dbd2: f404 547e and.w r4, r4, #16256 ; 0x3f80 - 1dbd6: 4323 orrs r3, r4 + 1dca8: 7c9c ldrb r4, [r3, #18] + 1dcaa: 7cdb ldrb r3, [r3, #19] + 1dcac: 01e4 lsls r4, r4, #7 + 1dcae: f003 037f and.w r3, r3, #127 ; 0x7f + 1dcb2: f404 547e and.w r4, r4, #16256 ; 0x3f80 + 1dcb6: 4323 orrs r3, r4 if(name <= BMC_MAX_NAMES_LIBRARY){ - 1dbd8: 2b80 cmp r3, #128 ; 0x80 - 1dbda: dc81 bgt.n 1dae0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10> + 1dcb8: 2b80 cmp r3, #128 ; 0x80 + 1dcba: dc81 bgt.n 1dbc0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10> item.name = name; - 1dbdc: b2db uxtb r3, r3 - 1dbde: 700b strb r3, [r1, #0] + 1dcbc: b2db uxtb r3, r3 + 1dcbe: 700b strb r3, [r1, #0] uint8_t lenSettings = incoming.get7Bits(15); - 1dbe0: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c + 1dcc0: f8d9 403c ldr.w r4, [r9, #60] ; 0x3c if(t_offset < size()){ - 1dbe4: f8b4 5003 ldrh.w r5, [r4, #3] - 1dbe8: 2d0f cmp r5, #15 - 1dbea: d981 bls.n 1daf0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x20> + 1dcc4: f8b4 5003 ldrh.w r5, [r4, #3] + 1dcc8: 2d0f cmp r5, #15 + 1dcca: d981 bls.n 1dbd0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x20> return sysex[t_offset] & 0x7F; - 1dbec: 7d23 ldrb r3, [r4, #20] + 1dccc: 7d23 ldrb r3, [r4, #20] if(t_offset < size()){ - 1dbee: 2d10 cmp r5, #16 + 1dcce: 2d10 cmp r5, #16 return sysex[t_offset] & 0x7F; - 1dbf0: f003 037f and.w r3, r3, #127 ; 0x7f + 1dcd0: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 1dbf4: d018 beq.n 1dc28 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x158> + 1dcd4: d018 beq.n 1dd08 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x158> return sysex[t_offset] & 0x7F; - 1dbf6: f894 c015 ldrb.w ip, [r4, #21] - 1dbfa: 2b01 cmp r3, #1 - 1dbfc: f00c 0c7f and.w ip, ip, #127 ; 0x7f - 1dc00: bf38 it cc - 1dc02: 2301 movcc r3, #1 - 1dc04: f1bc 0f01 cmp.w ip, #1 - 1dc08: bf38 it cc - 1dc0a: f04f 0c01 movcc.w ip, #1 - 1dc0e: e772 b.n 1daf6 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x26> + 1dcd6: f894 c015 ldrb.w ip, [r4, #21] + 1dcda: 2b01 cmp r3, #1 + 1dcdc: f00c 0c7f and.w ip, ip, #127 ; 0x7f + 1dce0: bf38 it cc + 1dce2: 2301 movcc r3, #1 + 1dce4: f1bc 0f01 cmp.w ip, #1 + 1dce8: bf38 it cc + 1dcea: f04f 0c01 movcc.w ip, #1 + 1dcee: e772 b.n 1dbd6 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x26> return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 1dc10: 44be add lr, r7 - 1dc12: 442f add r7, r5 - 1dc14: f89e 6005 ldrb.w r6, [lr, #5] - 1dc18: 797d ldrb r5, [r7, #5] - 1dc1a: f006 067f and.w r6, r6, #127 ; 0x7f - 1dc1e: ea46 16c5 orr.w r6, r6, r5, lsl #7 - 1dc22: b2f6 uxtb r6, r6 + 1dcf0: 44be add lr, r7 + 1dcf2: 442f add r7, r5 + 1dcf4: f89e 6005 ldrb.w r6, [lr, #5] + 1dcf8: 797d ldrb r5, [r7, #5] + 1dcfa: f006 067f and.w r6, r6, #127 ; 0x7f + 1dcfe: ea46 16c5 orr.w r6, r6, r5, lsl #7 + 1dd02: b2f6 uxtb r6, r6 item.settings[i] = incoming.get8Bits(lenCount); - 1dc24: 704e strb r6, [r1, #1] - 1dc26: e76c b.n 1db02 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x32> - 1dc28: 2b01 cmp r3, #1 + 1dd04: 704e strb r6, [r1, #1] + 1dd06: e76c b.n 1dbe2 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x32> + 1dd08: 2b01 cmp r3, #1 if(t_offset < size()){ - 1dc2a: f04f 0c01 mov.w ip, #1 - 1dc2e: bf38 it cc - 1dc30: 2301 movcc r3, #1 - 1dc32: e760 b.n 1daf6 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x26> + 1dd0a: f04f 0c01 mov.w ip, #1 + 1dd0e: bf38 it cc + 1dd10: 2301 movcc r3, #1 + 1dd12: e760 b.n 1dbd6 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]+0x26> -0001dc34 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]>: +0001dd14 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]>: void BMCEditor::incomingMessageDeviceWrite(bmcStoreDevice& item, uint16_t index, int16_t layer){ - 1dc34: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1dd14: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} uint16_t name = incoming.get14Bits(13); - 1dc38: 6bc3 ldr r3, [r0, #60] ; 0x3c + 1dd18: 6bc3 ldr r3, [r0, #60] ; 0x3c void BMCEditor::incomingMessageDeviceWrite(bmcStoreDevice& item, uint16_t index, int16_t layer){ - 1dc3a: 4683 mov fp, r0 + 1dd1a: 4683 mov fp, r0 if((t_offset+1) < size()){ - 1dc3c: f8b3 4003 ldrh.w r4, [r3, #3] - 1dc40: 2c0e cmp r4, #14 - 1dc42: f200 809f bhi.w 1dd84 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x150> + 1dd1c: f8b3 4003 ldrh.w r4, [r3, #3] + 1dd20: 2c0e cmp r4, #14 + 1dd22: f200 809f bhi.w 1de64 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x150> item.name = 0; - 1dc46: 2300 movs r3, #0 - 1dc48: 700b strb r3, [r1, #0] + 1dd26: 2300 movs r3, #0 + 1dd28: 700b strb r3, [r1, #0] uint8_t lenSettings = incoming.get7Bits(15); - 1dc4a: f8db 403c ldr.w r4, [fp, #60] ; 0x3c + 1dd2a: f8db 403c ldr.w r4, [fp, #60] ; 0x3c if(t_offset < size()){ - 1dc4e: f8b4 5003 ldrh.w r5, [r4, #3] - 1dc52: 2d0f cmp r5, #15 - 1dc54: f200 8087 bhi.w 1dd66 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x132> - 1dc58: 2606 movs r6, #6 - 1dc5a: 4633 mov r3, r6 + 1dd2e: f8b4 5003 ldrh.w r5, [r4, #3] + 1dd32: 2d0f cmp r5, #15 + 1dd34: f200 8087 bhi.w 1de46 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x132> + 1dd38: 2606 movs r6, #6 + 1dd3a: 4633 mov r3, r6 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1dc5c: 005c lsls r4, r3, #1 - 1dc5e: f04f 0e00 mov.w lr, #0 + 1dd3c: 005c lsls r4, r3, #1 + 1dd3e: f04f 0e00 mov.w lr, #0 uint8_t lenCount = 17; - 1dc62: f04f 0c11 mov.w ip, #17 + 1dd42: f04f 0c11 mov.w ip, #17 item.settings[i] = incoming.get8Bits(lenCount); - 1dc66: 1c4f adds r7, r1, #1 - 1dc68: 3411 adds r4, #17 - 1dc6a: b2e4 uxtb r4, r4 - 1dc6c: e007 b.n 1dc7e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x4a> + 1dd46: 1c4f adds r7, r1, #1 + 1dd48: 3411 adds r4, #17 + 1dd4a: b2e4 uxtb r4, r4 + 1dd4c: e007 b.n 1dd5e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x4a> lenCount += 2; - 1dc6e: f10c 0c02 add.w ip, ip, #2 + 1dd4e: f10c 0c02 add.w ip, ip, #2 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1dc72: f10e 0e01 add.w lr, lr, #1 + 1dd52: f10e 0e01 add.w lr, lr, #1 lenCount += 2; - 1dc76: fa5f fc8c uxtb.w ip, ip + 1dd56: fa5f fc8c uxtb.w ip, ip for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1dc7a: 4564 cmp r4, ip - 1dc7c: d021 beq.n 1dcc2 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8e> + 1dd5a: 4564 cmp r4, ip + 1dd5c: d021 beq.n 1dda2 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8e> if(i < sLen){ - 1dc7e: f1be 0f05 cmp.w lr, #5 - 1dc82: d8f4 bhi.n 1dc6e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x3a> + 1dd5e: f1be 0f05 cmp.w lr, #5 + 1dd62: d8f4 bhi.n 1dd4e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x3a> item.settings[i] = incoming.get8Bits(lenCount); - 1dc84: f8db 003c ldr.w r0, [fp, #60] ; 0x3c + 1dd64: f8db 003c ldr.w r0, [fp, #60] ; 0x3c if((t_offset+1) < size()){ - 1dc88: f10c 0901 add.w r9, ip, #1 + 1dd68: f10c 0901 add.w r9, ip, #1 return 0; - 1dc8c: 2500 movs r5, #0 + 1dd6c: 2500 movs r5, #0 if((t_offset+1) < size()){ - 1dc8e: f8b0 a003 ldrh.w sl, [r0, #3] - 1dc92: 45d1 cmp r9, sl - 1dc94: da0b bge.n 1dcae (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x7a> + 1dd6e: f8b0 a003 ldrh.w sl, [r0, #3] + 1dd72: 45d1 cmp r9, sl + 1dd74: da0b bge.n 1dd8e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x7a> return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 1dc96: 4481 add r9, r0 - 1dc98: eb00 080c add.w r8, r0, ip - 1dc9c: f899 5005 ldrb.w r5, [r9, #5] - 1dca0: f898 8005 ldrb.w r8, [r8, #5] - 1dca4: f005 057f and.w r5, r5, #127 ; 0x7f - 1dca8: ea45 15c8 orr.w r5, r5, r8, lsl #7 - 1dcac: b2ed uxtb r5, r5 + 1dd76: 4481 add r9, r0 + 1dd78: eb00 080c add.w r8, r0, ip + 1dd7c: f899 5005 ldrb.w r5, [r9, #5] + 1dd80: f898 8005 ldrb.w r8, [r8, #5] + 1dd84: f005 057f and.w r5, r5, #127 ; 0x7f + 1dd88: ea45 15c8 orr.w r5, r5, r8, lsl #7 + 1dd8c: b2ed uxtb r5, r5 lenCount += 2; - 1dcae: f10c 0c02 add.w ip, ip, #2 + 1dd8e: f10c 0c02 add.w ip, ip, #2 item.settings[i] = incoming.get8Bits(lenCount); - 1dcb2: f807 500e strb.w r5, [r7, lr] + 1dd92: f807 500e strb.w r5, [r7, lr] for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1dcb6: f10e 0e01 add.w lr, lr, #1 + 1dd96: f10e 0e01 add.w lr, lr, #1 lenCount += 2; - 1dcba: fa5f fc8c uxtb.w ip, ip + 1dd9a: fa5f fc8c uxtb.w ip, ip for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1dcbe: 4564 cmp r4, ip - 1dcc0: d1dd bne.n 1dc7e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x4a> + 1dd9e: 4564 cmp r4, ip + 1dda0: d1dd bne.n 1dd5e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x4a> lenCount += 2; - 1dcc2: 005b lsls r3, r3, #1 + 1dda2: 005b lsls r3, r3, #1 item.events[i] = e; - 1dcc4: 3107 adds r1, #7 + 1dda4: 3107 adds r1, #7 lenCount += 2; - 1dcc6: 2500 movs r5, #0 - 1dcc8: 3311 adds r3, #17 - 1dcca: b2db uxtb r3, r3 - 1dccc: e006 b.n 1dcdc (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xa8> + 1dda6: 2500 movs r5, #0 + 1dda8: 3311 adds r3, #17 + 1ddaa: b2db uxtb r3, r3 + 1ddac: e006 b.n 1ddbc (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xa8> for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1dcce: 3501 adds r5, #1 + 1ddae: 3501 adds r5, #1 lenCount += 2; - 1dcd0: 3302 adds r3, #2 + 1ddb0: 3302 adds r3, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1dcd2: fa5f fc85 uxtb.w ip, r5 + 1ddb2: fa5f fc85 uxtb.w ip, r5 lenCount += 2; - 1dcd6: b2db uxtb r3, r3 + 1ddb6: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1dcd8: 45b4 cmp ip, r6 - 1dcda: d21f bcs.n 1dd1c (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xe8> + 1ddb8: 45b4 cmp ip, r6 + 1ddba: d21f bcs.n 1ddfc (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xe8> if(i < eLen){ - 1dcdc: 2d05 cmp r5, #5 - 1dcde: d8f6 bhi.n 1dcce (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x9a> + 1ddbc: 2d05 cmp r5, #5 + 1ddbe: d8f6 bhi.n 1ddae (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x9a> uint16_t e = incoming.get14Bits(lenCount); - 1dce0: f8db 403c ldr.w r4, [fp, #60] ; 0x3c + 1ddc0: f8db 403c ldr.w r4, [fp, #60] ; 0x3c if((t_offset+1) < size()){ - 1dce4: f103 0c01 add.w ip, r3, #1 - 1dce8: 2700 movs r7, #0 - 1dcea: f8b4 e003 ldrh.w lr, [r4, #3] - 1dcee: 45f4 cmp ip, lr - 1dcf0: db01 blt.n 1dcf6 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xc2> + 1ddc4: f103 0c01 add.w ip, r3, #1 + 1ddc8: 2700 movs r7, #0 + 1ddca: f8b4 e003 ldrh.w lr, [r4, #3] + 1ddce: 45f4 cmp ip, lr + 1ddd0: db01 blt.n 1ddd6 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xc2> item.events[i] = e; - 1dcf2: 554f strb r7, [r1, r5] - 1dcf4: e7eb b.n 1dcce (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x9a> + 1ddd2: 554f strb r7, [r1, r5] + 1ddd4: e7eb b.n 1ddae (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x9a> return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1dcf6: eb04 0e03 add.w lr, r4, r3 - 1dcfa: 4464 add r4, ip - 1dcfc: f89e c005 ldrb.w ip, [lr, #5] - 1dd00: 7964 ldrb r4, [r4, #5] - 1dd02: ea4f 1ccc mov.w ip, ip, lsl #7 - 1dd06: f004 047f and.w r4, r4, #127 ; 0x7f - 1dd0a: f40c 5c7e and.w ip, ip, #16256 ; 0x3f80 - 1dd0e: ea44 040c orr.w r4, r4, ip + 1ddd6: eb04 0e03 add.w lr, r4, r3 + 1ddda: 4464 add r4, ip + 1dddc: f89e c005 ldrb.w ip, [lr, #5] + 1dde0: 7964 ldrb r4, [r4, #5] + 1dde2: ea4f 1ccc mov.w ip, ip, lsl #7 + 1dde6: f004 047f and.w r4, r4, #127 ; 0x7f + 1ddea: f40c 5c7e and.w ip, ip, #16256 ; 0x3f80 + 1ddee: ea44 040c orr.w r4, r4, ip if(e > BMC_MAX_EVENTS_LIBRARY){ - 1dd12: 2cc8 cmp r4, #200 ; 0xc8 + 1ddf2: 2cc8 cmp r4, #200 ; 0xc8 item.events[i] = e; - 1dd14: bfd8 it le - 1dd16: b2e7 uxtble r7, r4 - 1dd18: 554f strb r7, [r1, r5] - 1dd1a: e7d8 b.n 1dcce (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x9a> + 1ddf4: bfd8 it le + 1ddf6: b2e7 uxtble r7, r4 + 1ddf8: 554f strb r7, [r1, r5] + 1ddfa: e7d8 b.n 1ddae (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x9a> if(layer >= 0 && !backupActive()){ - 1dd1c: 2a00 cmp r2, #0 - 1dd1e: db14 blt.n 1dd4a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x116> - 1dd20: f89b 3044 ldrb.w r3, [fp, #68] ; 0x44 - 1dd24: 071c lsls r4, r3, #28 - 1dd26: d412 bmi.n 1dd4e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x11a> + 1ddfc: 2a00 cmp r2, #0 + 1ddfe: db14 blt.n 1de2a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x116> + 1de00: f89b 3044 ldrb.w r3, [fp, #68] ; 0x44 + 1de04: 071c lsls r4, r3, #28 + 1de06: d412 bmi.n 1de2e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x11a> saveLayersAndReloadData(layer); - 1dd28: b2d1 uxtb r1, r2 - 1dd2a: 4658 mov r0, fp - 1dd2c: f7ff fc98 bl 1d660 + 1de08: b2d1 uxtb r1, r2 + 1de0a: 4658 mov r0, fp + 1de0c: f7ff fc98 bl 1d740 if(midi.globals.editorConnected()){ - 1dd30: f8db 3004 ldr.w r3, [fp, #4] - 1dd34: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1dd38: 6ddb ldr r3, [r3, #92] ; 0x5c - 1dd3a: 075b lsls r3, r3, #29 - 1dd3c: d505 bpl.n 1dd4a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x116> + 1de10: f8db 3004 ldr.w r3, [fp, #4] + 1de14: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1de18: 6ddb ldr r3, [r3, #92] ; 0x5c + 1de1a: 075b lsls r3, r3, #29 + 1de1c: d505 bpl.n 1de2a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x116> bitSet(flags, bit); - 1dd3e: f8db 3030 ldr.w r3, [fp, #48] ; 0x30 - 1dd42: f043 0304 orr.w r3, r3, #4 - 1dd46: f8cb 3030 str.w r3, [fp, #48] ; 0x30 + 1de1e: f8db 3030 ldr.w r3, [fp, #48] ; 0x30 + 1de22: f043 0304 orr.w r3, r3, #4 + 1de26: f8cb 3030 str.w r3, [fp, #48] ; 0x30 } - 1dd4a: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1de2a: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} midi.globals.editorConnected() && - 1dd4e: f8db 3004 ldr.w r3, [fp, #4] + 1de2e: f8db 3004 ldr.w r3, [fp, #4] return bitRead(flags, bit); - 1dd52: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1dd56: 6ddb ldr r3, [r3, #92] ; 0x5c + 1de32: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1de36: 6ddb ldr r3, [r3, #92] ; 0x5c return isBackupMessage() && - 1dd58: 0758 lsls r0, r3, #29 - 1dd5a: d5e5 bpl.n 1dd28 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf4> - 1dd5c: f8db 3030 ldr.w r3, [fp, #48] ; 0x30 + 1de38: 0758 lsls r0, r3, #29 + 1de3a: d5e5 bpl.n 1de08 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf4> + 1de3c: f8db 3030 ldr.w r3, [fp, #48] ; 0x30 midi.globals.editorConnected() && - 1dd60: 0499 lsls r1, r3, #18 - 1dd62: d4f2 bmi.n 1dd4a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x116> - 1dd64: e7e0 b.n 1dd28 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf4> + 1de40: 0499 lsls r1, r3, #18 + 1de42: d4f2 bmi.n 1de2a (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x116> + 1de44: e7e0 b.n 1de08 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf4> return sysex[t_offset] & 0x7F; - 1dd66: 7d23 ldrb r3, [r4, #20] + 1de46: 7d23 ldrb r3, [r4, #20] if(t_offset < size()){ - 1dd68: 2d10 cmp r5, #16 + 1de48: 2d10 cmp r5, #16 return sysex[t_offset] & 0x7F; - 1dd6a: f003 037f and.w r3, r3, #127 ; 0x7f + 1de4a: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 1dd6e: d016 beq.n 1dd9e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x16a> + 1de4e: d016 beq.n 1de7e (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x16a> return sysex[t_offset] & 0x7F; - 1dd70: 7d66 ldrb r6, [r4, #21] - 1dd72: 2b06 cmp r3, #6 - 1dd74: f006 067f and.w r6, r6, #127 ; 0x7f - 1dd78: bf38 it cc - 1dd7a: 2306 movcc r3, #6 - 1dd7c: 2e06 cmp r6, #6 - 1dd7e: bf38 it cc - 1dd80: 2606 movcc r6, #6 - 1dd82: e76b b.n 1dc5c (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x28> + 1de50: 7d66 ldrb r6, [r4, #21] + 1de52: 2b06 cmp r3, #6 + 1de54: f006 067f and.w r6, r6, #127 ; 0x7f + 1de58: bf38 it cc + 1de5a: 2306 movcc r3, #6 + 1de5c: 2e06 cmp r6, #6 + 1de5e: bf38 it cc + 1de60: 2606 movcc r6, #6 + 1de62: e76b b.n 1dd3c (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x28> return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1dd84: 7c9c ldrb r4, [r3, #18] - 1dd86: 7cdb ldrb r3, [r3, #19] - 1dd88: 01e4 lsls r4, r4, #7 - 1dd8a: f003 037f and.w r3, r3, #127 ; 0x7f - 1dd8e: f404 547e and.w r4, r4, #16256 ; 0x3f80 - 1dd92: 4323 orrs r3, r4 + 1de64: 7c9c ldrb r4, [r3, #18] + 1de66: 7cdb ldrb r3, [r3, #19] + 1de68: 01e4 lsls r4, r4, #7 + 1de6a: f003 037f and.w r3, r3, #127 ; 0x7f + 1de6e: f404 547e and.w r4, r4, #16256 ; 0x3f80 + 1de72: 4323 orrs r3, r4 if(name <= BMC_MAX_NAMES_LIBRARY){ - 1dd94: 2b80 cmp r3, #128 ; 0x80 - 1dd96: f73f af56 bgt.w 1dc46 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x12> + 1de74: 2b80 cmp r3, #128 ; 0x80 + 1de76: f73f af56 bgt.w 1dd26 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x12> item.name = name; - 1dd9a: b2db uxtb r3, r3 - 1dd9c: e754 b.n 1dc48 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x14> - 1dd9e: 2b06 cmp r3, #6 + 1de7a: b2db uxtb r3, r3 + 1de7c: e754 b.n 1dd28 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x14> + 1de7e: 2b06 cmp r3, #6 if(t_offset < size()){ - 1dda0: f04f 0606 mov.w r6, #6 - 1dda4: bf38 it cc - 1dda6: 2306 movcc r3, #6 - 1dda8: e758 b.n 1dc5c (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x28> - 1ddaa: bf00 nop + 1de80: f04f 0606 mov.w r6, #6 + 1de84: bf38 it cc + 1de86: 2306 movcc r3, #6 + 1de88: e758 b.n 1dd3c (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x28> + 1de8a: bf00 nop -0001ddac (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]>: +0001de8c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]>: uint16_t name = incoming.get14Bits(13); - 1ddac: 6bc3 ldr r3, [r0, #60] ; 0x3c + 1de8c: 6bc3 ldr r3, [r0, #60] ; 0x3c void BMCEditor::incomingMessageDeviceWrite(bmcStoreDevice& item, uint16_t index, int16_t layer){ - 1ddae: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 1de8e: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} if((t_offset+1) < size()){ - 1ddb2: f8b3 4003 ldrh.w r4, [r3, #3] - 1ddb6: 4680 mov r8, r0 - 1ddb8: 2c0e cmp r4, #14 - 1ddba: d870 bhi.n 1de9e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf2> + 1de92: f8b3 4003 ldrh.w r4, [r3, #3] + 1de96: 4680 mov r8, r0 + 1de98: 2c0e cmp r4, #14 + 1de9a: d870 bhi.n 1df7e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xf2> item.name = 0; - 1ddbc: 2300 movs r3, #0 - 1ddbe: 700b strb r3, [r1, #0] + 1de9c: 2300 movs r3, #0 + 1de9e: 700b strb r3, [r1, #0] uint8_t lenSettings = incoming.get7Bits(15); - 1ddc0: f8d8 403c ldr.w r4, [r8, #60] ; 0x3c + 1dea0: f8d8 403c ldr.w r4, [r8, #60] ; 0x3c if(t_offset < size()){ - 1ddc4: f8b4 5003 ldrh.w r5, [r4, #3] - 1ddc8: 2d0f cmp r5, #15 - 1ddca: d855 bhi.n 1de78 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xcc> + 1dea4: f8b4 5003 ldrh.w r5, [r4, #3] + 1dea8: 2d0f cmp r5, #15 + 1deaa: d855 bhi.n 1df58 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xcc> lenEvents = eLen; - 1ddcc: f04f 0e06 mov.w lr, #6 + 1deac: f04f 0e06 mov.w lr, #6 uint8_t lenCount = 17; - 1ddd0: 2311 movs r3, #17 - 1ddd2: eb03 0e4e add.w lr, r3, lr, lsl #1 + 1deb0: 2311 movs r3, #17 + 1deb2: eb03 0e4e add.w lr, r3, lr, lsl #1 item.events[i] = e; - 1ddd6: 3101 adds r1, #1 + 1deb6: 3101 adds r1, #1 uint8_t lenCount = 17; - 1ddd8: f04f 0c00 mov.w ip, #0 - 1dddc: fa5f fe8e uxtb.w lr, lr - 1dde0: e005 b.n 1ddee (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x42> + 1deb8: f04f 0c00 mov.w ip, #0 + 1debc: fa5f fe8e uxtb.w lr, lr + 1dec0: e005 b.n 1dece (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x42> lenCount += 2; - 1dde2: 3302 adds r3, #2 + 1dec2: 3302 adds r3, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1dde4: f10c 0c01 add.w ip, ip, #1 + 1dec4: f10c 0c01 add.w ip, ip, #1 lenCount += 2; - 1dde8: b2db uxtb r3, r3 + 1dec8: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1ddea: 459e cmp lr, r3 - 1ddec: d01f beq.n 1de2e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x82> + 1deca: 459e cmp lr, r3 + 1decc: d01f beq.n 1df0e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x82> if(i < eLen){ - 1ddee: f1bc 0f05 cmp.w ip, #5 - 1ddf2: d8f6 bhi.n 1dde2 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x36> + 1dece: f1bc 0f05 cmp.w ip, #5 + 1ded2: d8f6 bhi.n 1dec2 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x36> uint16_t e = incoming.get14Bits(lenCount); - 1ddf4: f8d8 403c ldr.w r4, [r8, #60] ; 0x3c + 1ded4: f8d8 403c ldr.w r4, [r8, #60] ; 0x3c if((t_offset+1) < size()){ - 1ddf8: 1c5e adds r6, r3, #1 - 1ddfa: 2500 movs r5, #0 - 1ddfc: f8b4 7003 ldrh.w r7, [r4, #3] - 1de00: 42be cmp r6, r7 - 1de02: da0c bge.n 1de1e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x72> + 1ded8: 1c5e adds r6, r3, #1 + 1deda: 2500 movs r5, #0 + 1dedc: f8b4 7003 ldrh.w r7, [r4, #3] + 1dee0: 42be cmp r6, r7 + 1dee2: da0c bge.n 1defe (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x72> return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1de04: 18e7 adds r7, r4, r3 - 1de06: 4434 add r4, r6 - 1de08: 797e ldrb r6, [r7, #5] - 1de0a: 7964 ldrb r4, [r4, #5] - 1de0c: 01f6 lsls r6, r6, #7 - 1de0e: f004 047f and.w r4, r4, #127 ; 0x7f - 1de12: f406 567e and.w r6, r6, #16256 ; 0x3f80 - 1de16: 4334 orrs r4, r6 + 1dee4: 18e7 adds r7, r4, r3 + 1dee6: 4434 add r4, r6 + 1dee8: 797e ldrb r6, [r7, #5] + 1deea: 7964 ldrb r4, [r4, #5] + 1deec: 01f6 lsls r6, r6, #7 + 1deee: f004 047f and.w r4, r4, #127 ; 0x7f + 1def2: f406 567e and.w r6, r6, #16256 ; 0x3f80 + 1def6: 4334 orrs r4, r6 if(e > BMC_MAX_EVENTS_LIBRARY){ - 1de18: 2cc8 cmp r4, #200 ; 0xc8 + 1def8: 2cc8 cmp r4, #200 ; 0xc8 item.events[i] = e; - 1de1a: bfd8 it le - 1de1c: b2e5 uxtble r5, r4 + 1defa: bfd8 it le + 1defc: b2e5 uxtble r5, r4 lenCount += 2; - 1de1e: 3302 adds r3, #2 + 1defe: 3302 adds r3, #2 item.events[i] = e; - 1de20: f801 500c strb.w r5, [r1, ip] + 1df00: f801 500c strb.w r5, [r1, ip] for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1de24: f10c 0c01 add.w ip, ip, #1 + 1df04: f10c 0c01 add.w ip, ip, #1 lenCount += 2; - 1de28: b2db uxtb r3, r3 + 1df08: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1de2a: 459e cmp lr, r3 - 1de2c: d1df bne.n 1ddee (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x42> + 1df0a: 459e cmp lr, r3 + 1df0c: d1df bne.n 1dece (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x42> if(layer >= 0 && !backupActive()){ - 1de2e: 2a00 cmp r2, #0 - 1de30: db14 blt.n 1de5c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb0> - 1de32: f898 3044 ldrb.w r3, [r8, #68] ; 0x44 - 1de36: 071c lsls r4, r3, #28 - 1de38: d412 bmi.n 1de60 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb4> + 1df0e: 2a00 cmp r2, #0 + 1df10: db14 blt.n 1df3c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb0> + 1df12: f898 3044 ldrb.w r3, [r8, #68] ; 0x44 + 1df16: 071c lsls r4, r3, #28 + 1df18: d412 bmi.n 1df40 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb4> saveLayersAndReloadData(layer); - 1de3a: b2d1 uxtb r1, r2 - 1de3c: 4640 mov r0, r8 - 1de3e: f7ff fc0f bl 1d660 + 1df1a: b2d1 uxtb r1, r2 + 1df1c: 4640 mov r0, r8 + 1df1e: f7ff fc0f bl 1d740 if(midi.globals.editorConnected()){ - 1de42: f8d8 3004 ldr.w r3, [r8, #4] - 1de46: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1de4a: 6ddb ldr r3, [r3, #92] ; 0x5c - 1de4c: 075b lsls r3, r3, #29 - 1de4e: d505 bpl.n 1de5c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb0> + 1df22: f8d8 3004 ldr.w r3, [r8, #4] + 1df26: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1df2a: 6ddb ldr r3, [r3, #92] ; 0x5c + 1df2c: 075b lsls r3, r3, #29 + 1df2e: d505 bpl.n 1df3c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb0> bitSet(flags, bit); - 1de50: f8d8 3030 ldr.w r3, [r8, #48] ; 0x30 - 1de54: f043 0304 orr.w r3, r3, #4 - 1de58: f8c8 3030 str.w r3, [r8, #48] ; 0x30 + 1df30: f8d8 3030 ldr.w r3, [r8, #48] ; 0x30 + 1df34: f043 0304 orr.w r3, r3, #4 + 1df38: f8c8 3030 str.w r3, [r8, #48] ; 0x30 } - 1de5c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 1df3c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} midi.globals.editorConnected() && - 1de60: f8d8 3004 ldr.w r3, [r8, #4] + 1df40: f8d8 3004 ldr.w r3, [r8, #4] return bitRead(flags, bit); - 1de64: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1de68: 6ddb ldr r3, [r3, #92] ; 0x5c + 1df44: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1df48: 6ddb ldr r3, [r3, #92] ; 0x5c return isBackupMessage() && - 1de6a: 0758 lsls r0, r3, #29 - 1de6c: d5e5 bpl.n 1de3a (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8e> - 1de6e: f8d8 3030 ldr.w r3, [r8, #48] ; 0x30 + 1df4a: 0758 lsls r0, r3, #29 + 1df4c: d5e5 bpl.n 1df1a (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8e> + 1df4e: f8d8 3030 ldr.w r3, [r8, #48] ; 0x30 midi.globals.editorConnected() && - 1de72: 0499 lsls r1, r3, #18 - 1de74: d4f2 bmi.n 1de5c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb0> - 1de76: e7e0 b.n 1de3a (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8e> + 1df52: 0499 lsls r1, r3, #18 + 1df54: d4f2 bmi.n 1df3c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xb0> + 1df56: e7e0 b.n 1df1a (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x8e> return sysex[t_offset] & 0x7F; - 1de78: 7d23 ldrb r3, [r4, #20] + 1df58: 7d23 ldrb r3, [r4, #20] if(t_offset < size()){ - 1de7a: 2d10 cmp r5, #16 + 1df5a: 2d10 cmp r5, #16 return sysex[t_offset] & 0x7F; - 1de7c: f003 037f and.w r3, r3, #127 ; 0x7f + 1df5c: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 1de80: d01b beq.n 1deba (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10e> + 1df60: d01b beq.n 1df9a (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10e> return sysex[t_offset] & 0x7F; - 1de82: f894 e015 ldrb.w lr, [r4, #21] - 1de86: f00e 0e7f and.w lr, lr, #127 ; 0x7f - 1de8a: f1be 0f06 cmp.w lr, #6 - 1de8e: bf38 it cc - 1de90: f04f 0e06 movcc.w lr, #6 + 1df62: f894 e015 ldrb.w lr, [r4, #21] + 1df66: f00e 0e7f and.w lr, lr, #127 ; 0x7f + 1df6a: f1be 0f06 cmp.w lr, #6 + 1df6e: bf38 it cc + 1df70: f04f 0e06 movcc.w lr, #6 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1de94: b17b cbz r3, 1deb6 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10a> + 1df74: b17b cbz r3, 1df96 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10a> lenCount += 2; - 1de96: 005b lsls r3, r3, #1 - 1de98: 3311 adds r3, #17 - 1de9a: b2db uxtb r3, r3 - 1de9c: e799 b.n 1ddd2 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x26> + 1df76: 005b lsls r3, r3, #1 + 1df78: 3311 adds r3, #17 + 1df7a: b2db uxtb r3, r3 + 1df7c: e799 b.n 1deb2 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x26> return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1de9e: 7c9c ldrb r4, [r3, #18] - 1dea0: 7cdb ldrb r3, [r3, #19] - 1dea2: 01e4 lsls r4, r4, #7 - 1dea4: f003 037f and.w r3, r3, #127 ; 0x7f - 1dea8: f404 547e and.w r4, r4, #16256 ; 0x3f80 - 1deac: 4323 orrs r3, r4 + 1df7e: 7c9c ldrb r4, [r3, #18] + 1df80: 7cdb ldrb r3, [r3, #19] + 1df82: 01e4 lsls r4, r4, #7 + 1df84: f003 037f and.w r3, r3, #127 ; 0x7f + 1df88: f404 547e and.w r4, r4, #16256 ; 0x3f80 + 1df8c: 4323 orrs r3, r4 if(name <= BMC_MAX_NAMES_LIBRARY){ - 1deae: 2b80 cmp r3, #128 ; 0x80 - 1deb0: dc84 bgt.n 1ddbc (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10> + 1df8e: 2b80 cmp r3, #128 ; 0x80 + 1df90: dc84 bgt.n 1de9c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x10> item.name = name; - 1deb2: b2db uxtb r3, r3 - 1deb4: e783 b.n 1ddbe (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x12> + 1df92: b2db uxtb r3, r3 + 1df94: e783 b.n 1de9e (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x12> uint8_t lenCount = 17; - 1deb6: 2311 movs r3, #17 - 1deb8: e78b b.n 1ddd2 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x26> + 1df96: 2311 movs r3, #17 + 1df98: e78b b.n 1deb2 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0x26> lenEvents = eLen; - 1deba: f04f 0e06 mov.w lr, #6 - 1debe: e7e9 b.n 1de94 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xe8> + 1df9a: f04f 0e06 mov.w lr, #6 + 1df9e: e7e9 b.n 1df74 (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]+0xe8> -0001dec0 : +0001dfa0 : void storeErase(bool full){ - 1dec0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1dec4: f5ad 5dc0 sub.w sp, sp, #6144 ; 0x1800 - 1dec8: 4605 mov r5, r0 - 1deca: f241 54ec movw r4, #5612 ; 0x15ec - 1dece: f641 0695 movw r6, #6293 ; 0x1895 - 1ded2: b085 sub sp, #20 + 1dfa0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1dfa4: f5ad 5dc0 sub.w sp, sp, #6144 ; 0x1800 + 1dfa8: 4605 mov r5, r0 + 1dfaa: f241 54ec movw r4, #5612 ; 0x15ec + 1dfae: f641 0695 movw r6, #6293 ; 0x1895 + 1dfb2: b085 sub sp, #20 uint16_t address = getStoreOffset(); - 1ded4: f7fc fc7c bl 1a7d0 + 1dfb4: f7fc fc7c bl 1a8b0 store = bmcStore(); - 1ded8: f241 72fc movw r2, #6140 ; 0x17fc - 1dedc: 2100 movs r1, #0 + 1dfb8: f241 72fc movw r2, #6140 ; 0x17fc + 1dfbc: 2100 movs r1, #0 uint16_t address = getStoreOffset(); - 1dede: 9003 str r0, [sp, #12] + 1dfbe: 9003 str r0, [sp, #12] store = bmcStore(); - 1dee0: a805 add r0, sp, #20 - 1dee2: 446c add r4, sp - 1dee4: f010 fad2 bl 2e48c - 1dee8: a806 add r0, sp, #24 - 1deea: f7e2 faf1 bl 4d0 - 1deee: f241 51fc movw r1, #5628 ; 0x15fc - 1def2: f241 50d6 movw r0, #5590 ; 0x15d6 - 1def6: 446e add r6, sp - 1def8: 4469 add r1, sp + 1dfc0: a805 add r0, sp, #20 + 1dfc2: 446c add r4, sp + 1dfc4: f010 fad6 bl 2e574 + 1dfc8: a806 add r0, sp, #24 + 1dfca: f7e2 fa81 bl 4d0 + 1dfce: f241 51fc movw r1, #5628 ; 0x15fc + 1dfd2: f241 50d6 movw r0, #5590 ; 0x15d6 + 1dfd6: 446e add r6, sp + 1dfd8: 4469 add r1, sp struct bmcStoreDevice { - 1defa: 2200 movs r2, #0 - 1defc: 4468 add r0, sp - 1defe: f1a1 0374 sub.w r3, r1, #116 ; 0x74 - 1df02: f801 2c88 strb.w r2, [r1, #-136] - 1df06: f803 2c0d strb.w r2, [r3, #-13] + 1dfda: 2200 movs r2, #0 + 1dfdc: 4468 add r0, sp + 1dfde: f1a1 0374 sub.w r3, r1, #116 ; 0x74 + 1dfe2: f801 2c88 strb.w r2, [r1, #-136] + 1dfe6: f803 2c0d strb.w r2, [r3, #-13] struct bmcStoreLayer { - 1df0a: 330d adds r3, #13 - 1df0c: 4298 cmp r0, r3 - 1df0e: d1fa bne.n 1df06 - 1df10: f1a1 032e sub.w r3, r1, #46 ; 0x2e + 1dfea: 330d adds r3, #13 + 1dfec: 4298 cmp r0, r3 + 1dfee: d1fa bne.n 1dfe6 + 1dff0: f1a1 032e sub.w r3, r1, #46 ; 0x2e struct bmcStoreDevice { - 1df14: f803 2c05 strb.w r2, [r3, #-5] + 1dff4: f803 2c05 strb.w r2, [r3, #-5] struct bmcStoreLayer { - 1df18: 3305 adds r3, #5 - 1df1a: 42a3 cmp r3, r4 - 1df1c: d1fa bne.n 1df14 - 1df1e: f1a1 0312 sub.w r3, r1, #18 + 1dff8: 3305 adds r3, #5 + 1dffa: 42a3 cmp r3, r4 + 1dffc: d1fa bne.n 1dff4 + 1dffe: f1a1 0312 sub.w r3, r1, #18 struct bmcStoreDevice { - 1df22: f803 2c03 strb.w r2, [r3, #-3] + 1e002: f803 2c03 strb.w r2, [r3, #-3] struct bmcStoreLayer { - 1df26: 3303 adds r3, #3 - 1df28: 428b cmp r3, r1 - 1df2a: d1fa bne.n 1df22 + 1e006: 3303 adds r3, #3 + 1e008: 428b cmp r3, r1 + 1e00a: d1fa bne.n 1e002 struct bmcStore { - 1df2c: f103 0185 add.w r1, r3, #133 ; 0x85 - 1df30: 3485 adds r4, #133 ; 0x85 - 1df32: 3085 adds r0, #133 ; 0x85 - 1df34: 42b1 cmp r1, r6 - 1df36: d1e2 bne.n 1defe - 1df38: ae05 add r6, sp, #20 - 1df3a: f241 72fc movw r2, #6140 ; 0x17fc - 1df3e: 6828 ldr r0, [r5, #0] + 1e00c: f103 0185 add.w r1, r3, #133 ; 0x85 + 1e010: 3485 adds r4, #133 ; 0x85 + 1e012: 3085 adds r0, #133 ; 0x85 + 1e014: 42b1 cmp r1, r6 + 1e016: d1e2 bne.n 1dfde + 1e018: ae05 add r6, sp, #20 + 1e01a: f241 72fc movw r2, #6140 ; 0x17fc + 1e01e: 6828 ldr r0, [r5, #0] store.crc = (BMC_CRC); // update the CRC - 1df40: 2400 movs r4, #0 + 1e020: 2400 movs r4, #0 store = bmcStore(); - 1df42: 4631 mov r1, r6 - 1df44: f00c fbe0 bl 2a708 + 1e022: 4631 mov r1, r6 + 1e024: f00c fbe4 bl 2a7f0 store.crc = (BMC_CRC); // update the CRC - 1df48: 682b ldr r3, [r5, #0] - 1df4a: 4a9d ldr r2, [pc, #628] ; (1e1c0 ) - 1df4c: 601a str r2, [r3, #0] + 1e028: 682b ldr r3, [r5, #0] + 1e02a: 4a9d ldr r2, [pc, #628] ; (1e2a0 ) + 1e02c: 601a str r2, [r3, #0] BMCSketchByteData data = BMCBuildData::getSketchByteData(i); - 1df4e: b2e1 uxtb r1, r4 - 1df50: 4630 mov r0, r6 - 1df52: f7e9 fb87 bl 7664 + 1e02e: b2e1 uxtb r1, r4 + 1e030: 4630 mov r0, r6 + 1e032: f7e9 fae7 bl 7604 return constrain(initialValue, min, max); - 1df56: 7d71 ldrb r1, [r6, #21] - 1df58: 7db2 ldrb r2, [r6, #22] + 1e036: 7d71 ldrb r1, [r6, #21] + 1e038: 7db2 ldrb r2, [r6, #22] store.global.sketchBytes[0].events[i] = data.getInitialValue(); - 1df5a: 682b ldr r3, [r5, #0] - 1df5c: 4291 cmp r1, r2 - 1df5e: 7df0 ldrb r0, [r6, #23] - 1df60: 4423 add r3, r4 + 1e03a: 682b ldr r3, [r5, #0] + 1e03c: 4291 cmp r1, r2 + 1e03e: 7df0 ldrb r0, [r6, #23] + 1e040: 4423 add r3, r4 for(uint8_t i=0;i - 1df68: 4281 cmp r1, r0 - 1df6a: 460a mov r2, r1 - 1df6c: bf28 it cs - 1df6e: 4602 movcs r2, r0 - 1df70: 2c04 cmp r4, #4 + 1e042: f104 0401 add.w r4, r4, #1 + 1e046: d303 bcc.n 1e050 + 1e048: 4281 cmp r1, r0 + 1e04a: 460a mov r2, r1 + 1e04c: bf28 it cs + 1e04e: 4602 movcs r2, r0 + 1e050: 2c04 cmp r4, #4 store.global.sketchBytes[0].events[i] = data.getInitialValue(); - 1df72: f883 2f29 strb.w r2, [r3, #3881] ; 0xf29 + 1e052: f883 2f29 strb.w r2, [r3, #3881] ; 0xf29 for(uint8_t i=0;i + 1e056: d1ea bne.n 1e02e store.global.potCalibration[i].events[0] = 0; - 1df78: 682b ldr r3, [r5, #0] + 1e058: 682b ldr r3, [r5, #0] store.global.shortcuts[0].events[0] = BMC_DEVICE_ID_EVENT; - 1df7a: 2202 movs r2, #2 + 1e05a: 2202 movs r2, #2 store.global.potCalibration[i].events[0] = 0; - 1df7c: 4891 ldr r0, [pc, #580] ; (1e1c4 ) + 1e05c: 4891 ldr r0, [pc, #580] ; (1e2a4 ) store.global.shortcuts[0].events[1] = BMC_DEVICE_ID_NAME; - 1df7e: 2603 movs r6, #3 + 1e05e: 2603 movs r6, #3 store.global.potCalibration[i].events[0] = 0; - 1df80: f503 5180 add.w r1, r3, #4096 ; 0x1000 - 1df84: f8c1 04e8 str.w r0, [r1, #1256] ; 0x4e8 + 1e060: f503 5180 add.w r1, r3, #4096 ; 0x1000 + 1e064: f8c1 04e8 str.w r0, [r1, #1256] ; 0x4e8 uint16_t address = getStoreOffset(); - 1df88: 4628 mov r0, r5 + 1e068: 4628 mov r0, r5 store.global.shortcuts[0].events[0] = BMC_DEVICE_ID_EVENT; - 1df8a: f883 2f19 strb.w r2, [r3, #3865] ; 0xf19 + 1e06a: f883 2f19 strb.w r2, [r3, #3865] ; 0xf19 store.global.shortcuts[0].events[2] = BMC_DEVICE_ID_LFO; - 1df8e: 2226 movs r2, #38 ; 0x26 + 1e06e: 2226 movs r2, #38 ; 0x26 store.global.shortcuts[0].events[1] = BMC_DEVICE_ID_NAME; - 1df90: 682b ldr r3, [r5, #0] - 1df92: f883 6f1a strb.w r6, [r3, #3866] ; 0xf1a + 1e070: 682b ldr r3, [r5, #0] + 1e072: f883 6f1a strb.w r6, [r3, #3866] ; 0xf1a store.global.shortcuts[0].events[2] = BMC_DEVICE_ID_LFO; - 1df96: 682b ldr r3, [r5, #0] - 1df98: f883 2f1b strb.w r2, [r3, #3867] ; 0xf1b + 1e076: 682b ldr r3, [r5, #0] + 1e078: f883 2f1b strb.w r2, [r3, #3867] ; 0xf1b store.global.shortcuts[0].events[3] = BMC_DEVICE_ID_PORT_PRESET; - 1df9c: 2228 movs r2, #40 ; 0x28 - 1df9e: 682b ldr r3, [r5, #0] - 1dfa0: f883 2f1c strb.w r2, [r3, #3868] ; 0xf1c + 1e07c: 2228 movs r2, #40 ; 0x28 + 1e07e: 682b ldr r3, [r5, #0] + 1e080: f883 2f1c strb.w r2, [r3, #3868] ; 0xf1c BMC_WRITE_BITS(settings.data[0],value,0x0F,14); - 1dfa4: 68ab ldr r3, [r5, #8] - 1dfa6: 6819 ldr r1, [r3, #0] - 1dfa8: f895 302d ldrb.w r3, [r5, #45] ; 0x2d - 1dfac: 684a ldr r2, [r1, #4] - 1dfae: 039b lsls r3, r3, #14 - 1dfb0: f422 3270 bic.w r2, r2, #245760 ; 0x3c000 - 1dfb4: f403 3370 and.w r3, r3, #245760 ; 0x3c000 - 1dfb8: 4313 orrs r3, r2 - 1dfba: 604b str r3, [r1, #4] + 1e084: 68ab ldr r3, [r5, #8] + 1e086: 6819 ldr r1, [r3, #0] + 1e088: f895 302d ldrb.w r3, [r5, #45] ; 0x2d + 1e08c: 684a ldr r2, [r1, #4] + 1e08e: 039b lsls r3, r3, #14 + 1e090: f422 3270 bic.w r2, r2, #245760 ; 0x3c000 + 1e094: f403 3370 and.w r3, r3, #245760 ; 0x3c000 + 1e098: 4313 orrs r3, r2 + 1e09a: 604b str r3, [r1, #4] uint16_t address = getStoreOffset(); - 1dfbc: f7fc fc08 bl 1a7d0 + 1e09c: f7fc fc08 bl 1a8b0 storage.set(address, store); - 1dfc0: 462a mov r2, r5 - 1dfc2: 68eb ldr r3, [r5, #12] + 1e0a0: 462a mov r2, r5 + 1e0a2: 68eb ldr r3, [r5, #12] uint16_t address = getStoreOffset(); - 1dfc4: 4681 mov r9, r0 + 1e0a4: 4681 mov r9, r0 storage.set(address, store); - 1dfc6: f852 4b0c ldr.w r4, [r2], #12 - 1dfca: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 1dfce: 9202 str r2, [sp, #8] + 1e0a6: f852 4b0c ldr.w r4, [r2], #12 + 1e0aa: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1e0ae: 9202 str r2, [sp, #8] if(!globals.getStorageDebug()){ - 1dfd0: 07da lsls r2, r3, #31 - 1dfd2: d521 bpl.n 1e018 - 1dfd4: 2100 movs r1, #0 - 1dfd6: 487c ldr r0, [pc, #496] ; (1e1c8 ) - 1dfd8: f00e fab6 bl 2c548 - 1dfdc: 487b ldr r0, [pc, #492] ; (1e1cc ) - 1dfde: f00b ff49 bl 29e74 - 1dfe2: 4631 mov r1, r6 - 1dfe4: 487a ldr r0, [pc, #488] ; (1e1d0 ) - 1dfe6: f00e faaf bl 2c548 - 1dfea: 2101 movs r1, #1 - 1dfec: 4879 ldr r0, [pc, #484] ; (1e1d4 ) - 1dfee: f00e faab bl 2c548 - 1dff2: 2108 movs r1, #8 - 1dff4: 4878 ldr r0, [pc, #480] ; (1e1d8 ) - 1dff6: f00e faa7 bl 2c548 - 1dffa: 2101 movs r1, #1 - 1dffc: 4875 ldr r0, [pc, #468] ; (1e1d4 ) - 1dffe: f00e faa3 bl 2c548 - 1e002: 2108 movs r1, #8 - 1e004: 4875 ldr r0, [pc, #468] ; (1e1dc ) - 1e006: f00e fa9f bl 2c548 - 1e00a: 2101 movs r1, #1 - 1e00c: 4871 ldr r0, [pc, #452] ; (1e1d4 ) - 1e00e: f00e fa9b bl 2c548 + 1e0b0: 07da lsls r2, r3, #31 + 1e0b2: d521 bpl.n 1e0f8 + 1e0b4: 2100 movs r1, #0 + 1e0b6: 487c ldr r0, [pc, #496] ; (1e2a8 ) + 1e0b8: f00e faba bl 2c630 + 1e0bc: 487b ldr r0, [pc, #492] ; (1e2ac ) + 1e0be: f00b ff4f bl 29f60 + 1e0c2: 4631 mov r1, r6 + 1e0c4: 487a ldr r0, [pc, #488] ; (1e2b0 ) + 1e0c6: f00e fab3 bl 2c630 + 1e0ca: 2101 movs r1, #1 + 1e0cc: 4879 ldr r0, [pc, #484] ; (1e2b4 ) + 1e0ce: f00e faaf bl 2c630 + 1e0d2: 2108 movs r1, #8 + 1e0d4: 4878 ldr r0, [pc, #480] ; (1e2b8 ) + 1e0d6: f00e faab bl 2c630 + 1e0da: 2101 movs r1, #1 + 1e0dc: 4875 ldr r0, [pc, #468] ; (1e2b4 ) + 1e0de: f00e faa7 bl 2c630 + 1e0e2: 2108 movs r1, #8 + 1e0e4: 4875 ldr r0, [pc, #468] ; (1e2bc ) + 1e0e6: f00e faa3 bl 2c630 + 1e0ea: 2101 movs r1, #1 + 1e0ec: 4871 ldr r0, [pc, #452] ; (1e2b4 ) + 1e0ee: f00e fa9f bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1e012: f00c faaf bl 2a574 - 1e016: 62a8 str r0, [r5, #40] ; 0x28 - 1e018: fa1f f989 uxth.w r9, r9 + 1e0f2: f00c fab3 bl 2a65c + 1e0f6: 62a8 str r0, [r5, #40] ; 0x28 + 1e0f8: fa1f f989 uxth.w r9, r9 unsigned long n = sizeof(value)+start; - 1e01c: f241 7afc movw sl, #6140 ; 0x17fc - 1e020: 210e movs r1, #14 - 1e022: 486f ldr r0, [pc, #444] ; (1e1e0 ) - 1e024: f00e fa90 bl 2c548 - 1e028: 4e6e ldr r6, [pc, #440] ; (1e1e4 ) - 1e02a: f109 0301 add.w r3, r9, #1 - 1e02e: eb09 020a add.w r2, r9, sl - 1e032: f10d 0814 add.w r8, sp, #20 - 1e036: eba9 0904 sub.w r9, r9, r4 - 1e03a: 429a cmp r2, r3 - 1e03c: bf38 it cc - 1e03e: f04f 0a01 movcc.w sl, #1 - 1e042: 6833 ldr r3, [r6, #0] + 1e0fc: f241 7afc movw sl, #6140 ; 0x17fc + 1e100: 210e movs r1, #14 + 1e102: 486f ldr r0, [pc, #444] ; (1e2c0 ) + 1e104: f00e fa94 bl 2c630 + 1e108: 4e6e ldr r6, [pc, #440] ; (1e2c4 ) + 1e10a: f109 0301 add.w r3, r9, #1 + 1e10e: eb09 020a add.w r2, r9, sl + 1e112: f10d 0814 add.w r8, sp, #20 + 1e116: eba9 0904 sub.w r9, r9, r4 + 1e11a: 429a cmp r2, r3 + 1e11c: bf38 it cc + 1e11e: f04f 0a01 movcc.w sl, #1 + 1e122: 6833 ldr r3, [r6, #0] STORAGE.put(address,file); - 1e044: f105 0710 add.w r7, r5, #16 + 1e124: f105 0710 add.w r7, r5, #16 unsigned long updatedBytes = 0; - 1e048: f04f 0b00 mov.w fp, #0 - 1e04c: 44a2 add sl, r4 - 1e04e: 622b str r3, [r5, #32] - 1e050: e006 b.n 1e060 - 1e052: 6833 ldr r3, [r6, #0] + 1e128: f04f 0b00 mov.w fp, #0 + 1e12c: 44a2 add sl, r4 + 1e12e: 622b str r3, [r5, #32] + 1e130: e006 b.n 1e140 + 1e132: 6833 ldr r3, [r6, #0] operator unsigned long () const { return millis() - ms; } - 1e054: 6a2a ldr r2, [r5, #32] - 1e056: 1a9b subs r3, r3, r2 + 1e134: 6a2a ldr r2, [r5, #32] + 1e136: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1e058: 2bf9 cmp r3, #249 ; 0xf9 - 1e05a: d81c bhi.n 1e096 + 1e138: 2bf9 cmp r3, #249 ; 0xf9 + 1e13a: d81c bhi.n 1e176 for(i=start;i - 1e060: eb04 0109 add.w r1, r4, r9 + 1e13c: 4554 cmp r4, sl + 1e13e: d022 beq.n 1e186 + 1e140: eb04 0109 add.w r1, r4, r9 updatedBytes += update(i,*p++); - 1e064: f814 3b01 ldrb.w r3, [r4], #1 + 1e144: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 1e068: 4638 mov r0, r7 - 1e06a: f888 3000 strb.w r3, [r8] - 1e06e: 9101 str r1, [sp, #4] - 1e070: f007 f86c bl 2514c - 1e074: f898 3000 ldrb.w r3, [r8] - 1e078: 9901 ldr r1, [sp, #4] - 1e07a: 4298 cmp r0, r3 - 1e07c: d0e9 beq.n 1e052 + 1e148: 4638 mov r0, r7 + 1e14a: f888 3000 strb.w r3, [r8] + 1e14e: 9101 str r1, [sp, #4] + 1e150: f007 f872 bl 25238 + 1e154: f898 3000 ldrb.w r3, [r8] + 1e158: 9901 ldr r1, [sp, #4] + 1e15a: 4298 cmp r0, r3 + 1e15c: d0e9 beq.n 1e132 write(addr, &value, 1); - 1e07e: 2301 movs r3, #1 - 1e080: aa05 add r2, sp, #20 - 1e082: 4638 mov r0, r7 + 1e15e: 2301 movs r3, #1 + 1e160: aa05 add r2, sp, #20 + 1e162: 4638 mov r0, r7 updatedBytes += update(i,*p++); - 1e084: f10b 0b01 add.w fp, fp, #1 + 1e164: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 1e088: f006 ff56 bl 24f38 - 1e08c: 6833 ldr r3, [r6, #0] - 1e08e: 6a2a ldr r2, [r5, #32] - 1e090: 1a9b subs r3, r3, r2 + 1e168: f006 ff5c bl 25024 + 1e16c: 6833 ldr r3, [r6, #0] + 1e16e: 6a2a ldr r2, [r5, #32] + 1e170: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1e092: 2bf9 cmp r3, #249 ; 0xf9 - 1e094: d9e2 bls.n 1e05c - 1e096: 2101 movs r1, #1 - 1e098: 4853 ldr r0, [pc, #332] ; (1e1e8 ) - 1e09a: f00e fa55 bl 2c548 - 1e09e: 6833 ldr r3, [r6, #0] + 1e172: 2bf9 cmp r3, #249 ; 0xf9 + 1e174: d9e2 bls.n 1e13c + 1e176: 2101 movs r1, #1 + 1e178: 4853 ldr r0, [pc, #332] ; (1e2c8 ) + 1e17a: f00e fa59 bl 2c630 + 1e17e: 6833 ldr r3, [r6, #0] for(i=start;i - 1e0a6: 2101 movs r1, #1 - 1e0a8: 484f ldr r0, [pc, #316] ; (1e1e8 ) - 1e0aa: f00e fa4d bl 2c548 - 1e0ae: 4847 ldr r0, [pc, #284] ; (1e1cc ) - 1e0b0: f00b fee0 bl 29e74 - 1e0b4: 2109 movs r1, #9 - 1e0b6: 484d ldr r0, [pc, #308] ; (1e1ec ) - 1e0b8: f00e fa46 bl 2c548 - 1e0bc: 2101 movs r1, #1 - 1e0be: 4845 ldr r0, [pc, #276] ; (1e1d4 ) - 1e0c0: f00e fa42 bl 2c548 + 1e182: 622b str r3, [r5, #32] + 1e184: d1dc bne.n 1e140 + 1e186: 2101 movs r1, #1 + 1e188: 484f ldr r0, [pc, #316] ; (1e2c8 ) + 1e18a: f00e fa51 bl 2c630 + 1e18e: 4847 ldr r0, [pc, #284] ; (1e2ac ) + 1e190: f00b fee6 bl 29f60 + 1e194: 2109 movs r1, #9 + 1e196: 484d ldr r0, [pc, #308] ; (1e2cc ) + 1e198: f00e fa4a bl 2c630 + 1e19c: 2101 movs r1, #1 + 1e19e: 4845 ldr r0, [pc, #276] ; (1e2b4 ) + 1e1a0: f00e fa46 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1e0c4: 2300 movs r3, #0 - 1e0c6: 220a movs r2, #10 - 1e0c8: 4659 mov r1, fp - 1e0ca: 4840 ldr r0, [pc, #256] ; (1e1cc ) - 1e0cc: f00b feee bl 29eac - 1e0d0: 2101 movs r1, #1 - 1e0d2: 4840 ldr r0, [pc, #256] ; (1e1d4 ) - 1e0d4: f00e fa38 bl 2c548 - 1e0d8: 2105 movs r1, #5 - 1e0da: 4845 ldr r0, [pc, #276] ; (1e1f0 ) - 1e0dc: f00e fa34 bl 2c548 + 1e1a4: 2300 movs r3, #0 + 1e1a6: 220a movs r2, #10 + 1e1a8: 4659 mov r1, fp + 1e1aa: 4840 ldr r0, [pc, #256] ; (1e2ac ) + 1e1ac: f00b fef4 bl 29f98 + 1e1b0: 2101 movs r1, #1 + 1e1b2: 4840 ldr r0, [pc, #256] ; (1e2b4 ) + 1e1b4: f00e fa3c bl 2c630 + 1e1b8: 2105 movs r1, #5 + 1e1ba: 4845 ldr r0, [pc, #276] ; (1e2d0 ) + 1e1bc: f00e fa38 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1e0e0: 483a ldr r0, [pc, #232] ; (1e1cc ) - 1e0e2: f00b fec7 bl 29e74 + 1e1c0: 483a ldr r0, [pc, #232] ; (1e2ac ) + 1e1c2: f00b fecd bl 29f60 debugStopTiming(); - 1e0e6: 9802 ldr r0, [sp, #8] - 1e0e8: f7fd ff5e bl 1bfa8 - 1e0ec: 68eb ldr r3, [r5, #12] + 1e1c6: 9802 ldr r0, [sp, #8] + 1e1c8: f7fd ff5e bl 1c088 + 1e1cc: 68eb ldr r3, [r5, #12] storage.get(address, store); - 1e0ee: 682c ldr r4, [r5, #0] - 1e0f0: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 1e1ce: 682c ldr r4, [r5, #0] + 1e1d0: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 1e0f4: 07db lsls r3, r3, #31 - 1e0f6: d521 bpl.n 1e13c - 1e0f8: 2100 movs r1, #0 - 1e0fa: 4833 ldr r0, [pc, #204] ; (1e1c8 ) - 1e0fc: f00e fa24 bl 2c548 - 1e100: 4832 ldr r0, [pc, #200] ; (1e1cc ) - 1e102: f00b feb7 bl 29e74 - 1e106: 2103 movs r1, #3 - 1e108: 4831 ldr r0, [pc, #196] ; (1e1d0 ) - 1e10a: f00e fa1d bl 2c548 - 1e10e: 2101 movs r1, #1 - 1e110: 4830 ldr r0, [pc, #192] ; (1e1d4 ) - 1e112: f00e fa19 bl 2c548 - 1e116: 2107 movs r1, #7 - 1e118: 4836 ldr r0, [pc, #216] ; (1e1f4 ) - 1e11a: f00e fa15 bl 2c548 - 1e11e: 2101 movs r1, #1 - 1e120: 482c ldr r0, [pc, #176] ; (1e1d4 ) - 1e122: f00e fa11 bl 2c548 - 1e126: 2108 movs r1, #8 - 1e128: 482c ldr r0, [pc, #176] ; (1e1dc ) - 1e12a: f00e fa0d bl 2c548 - 1e12e: 2101 movs r1, #1 - 1e130: 4828 ldr r0, [pc, #160] ; (1e1d4 ) - 1e132: f00e fa09 bl 2c548 + 1e1d4: 07db lsls r3, r3, #31 + 1e1d6: d521 bpl.n 1e21c + 1e1d8: 2100 movs r1, #0 + 1e1da: 4833 ldr r0, [pc, #204] ; (1e2a8 ) + 1e1dc: f00e fa28 bl 2c630 + 1e1e0: 4832 ldr r0, [pc, #200] ; (1e2ac ) + 1e1e2: f00b febd bl 29f60 + 1e1e6: 2103 movs r1, #3 + 1e1e8: 4831 ldr r0, [pc, #196] ; (1e2b0 ) + 1e1ea: f00e fa21 bl 2c630 + 1e1ee: 2101 movs r1, #1 + 1e1f0: 4830 ldr r0, [pc, #192] ; (1e2b4 ) + 1e1f2: f00e fa1d bl 2c630 + 1e1f6: 2107 movs r1, #7 + 1e1f8: 4836 ldr r0, [pc, #216] ; (1e2d4 ) + 1e1fa: f00e fa19 bl 2c630 + 1e1fe: 2101 movs r1, #1 + 1e200: 482c ldr r0, [pc, #176] ; (1e2b4 ) + 1e202: f00e fa15 bl 2c630 + 1e206: 2108 movs r1, #8 + 1e208: 482c ldr r0, [pc, #176] ; (1e2bc ) + 1e20a: f00e fa11 bl 2c630 + 1e20e: 2101 movs r1, #1 + 1e210: 4828 ldr r0, [pc, #160] ; (1e2b4 ) + 1e212: f00e fa0d bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1e136: f00c fa1d bl 2a574 - 1e13a: 62a8 str r0, [r5, #40] ; 0x28 - 1e13c: 210f movs r1, #15 - 1e13e: 482e ldr r0, [pc, #184] ; (1e1f8 ) - 1e140: f8bd 900c ldrh.w r9, [sp, #12] + 1e216: f00c fa21 bl 2a65c + 1e21a: 62a8 str r0, [r5, #40] ; 0x28 + 1e21c: 210f movs r1, #15 + 1e21e: 482e ldr r0, [pc, #184] ; (1e2d8 ) + 1e220: f8bd 900c ldrh.w r9, [sp, #12] unsigned long n = sizeof(value)+start; - 1e144: f241 78fc movw r8, #6140 ; 0x17fc - 1e148: f00e f9fe bl 2c548 - 1e14c: 6833 ldr r3, [r6, #0] - 1e14e: f109 0201 add.w r2, r9, #1 - 1e152: f8df a094 ldr.w sl, [pc, #148] ; 1e1e8 - 1e156: 622b str r3, [r5, #32] - 1e158: eb09 0308 add.w r3, r9, r8 - 1e15c: eba9 0904 sub.w r9, r9, r4 - 1e160: 429a cmp r2, r3 - 1e162: bf88 it hi - 1e164: f04f 0801 movhi.w r8, #1 - 1e168: 44a0 add r8, r4 - 1e16a: e001 b.n 1e170 + 1e224: f241 78fc movw r8, #6140 ; 0x17fc + 1e228: f00e fa02 bl 2c630 + 1e22c: 6833 ldr r3, [r6, #0] + 1e22e: f109 0201 add.w r2, r9, #1 + 1e232: f8df a094 ldr.w sl, [pc, #148] ; 1e2c8 + 1e236: 622b str r3, [r5, #32] + 1e238: eb09 0308 add.w r3, r9, r8 + 1e23c: eba9 0904 sub.w r9, r9, r4 + 1e240: 429a cmp r2, r3 + 1e242: bf88 it hi + 1e244: f04f 0801 movhi.w r8, #1 + 1e248: 44a0 add r8, r4 + 1e24a: e001 b.n 1e250 for (i=start;i + 1e24c: 4544 cmp r4, r8 + 1e24e: d013 beq.n 1e278 *p++ = (uint8_t) read(i); - 1e170: eb04 0109 add.w r1, r4, r9 - 1e174: 4638 mov r0, r7 - 1e176: f006 ffe9 bl 2514c - 1e17a: f804 0b01 strb.w r0, [r4], #1 - 1e17e: 6833 ldr r3, [r6, #0] + 1e250: eb04 0109 add.w r1, r4, r9 + 1e254: 4638 mov r0, r7 + 1e256: f006 ffef bl 25238 + 1e25a: f804 0b01 strb.w r0, [r4], #1 + 1e25e: 6833 ldr r3, [r6, #0] operator unsigned long () const { return millis() - ms; } - 1e180: 6a2a ldr r2, [r5, #32] - 1e182: 1a9b subs r3, r3, r2 + 1e260: 6a2a ldr r2, [r5, #32] + 1e262: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1e184: 2bf9 cmp r3, #249 ; 0xf9 - 1e186: d9f1 bls.n 1e16c - 1e188: 2101 movs r1, #1 - 1e18a: 4650 mov r0, sl - 1e18c: f00e f9dc bl 2c548 - 1e190: 6833 ldr r3, [r6, #0] + 1e264: 2bf9 cmp r3, #249 ; 0xf9 + 1e266: d9f1 bls.n 1e24c + 1e268: 2101 movs r1, #1 + 1e26a: 4650 mov r0, sl + 1e26c: f00e f9e0 bl 2c630 + 1e270: 6833 ldr r3, [r6, #0] for (i=start;i - 1e198: 2101 movs r1, #1 - 1e19a: 4813 ldr r0, [pc, #76] ; (1e1e8 ) - 1e19c: f00e f9d4 bl 2c548 - 1e1a0: 480a ldr r0, [pc, #40] ; (1e1cc ) - 1e1a2: f00b fe67 bl 29e74 + 1e274: 622b str r3, [r5, #32] + 1e276: d1eb bne.n 1e250 + 1e278: 2101 movs r1, #1 + 1e27a: 4813 ldr r0, [pc, #76] ; (1e2c8 ) + 1e27c: f00e f9d8 bl 2c630 + 1e280: 480a ldr r0, [pc, #40] ; (1e2ac ) + 1e282: f00b fe6d bl 29f60 debugStopTiming(); - 1e1a6: 9802 ldr r0, [sp, #8] - 1e1a8: f7fd fefe bl 1bfa8 + 1e286: 9802 ldr r0, [sp, #8] + 1e288: f7fd fefe bl 1c088 bitSet(flags, bit); - 1e1ac: 6b2b ldr r3, [r5, #48] ; 0x30 - 1e1ae: f443 6300 orr.w r3, r3, #2048 ; 0x800 - 1e1b2: 632b str r3, [r5, #48] ; 0x30 - } - 1e1b4: f50d 5dc0 add.w sp, sp, #6144 ; 0x1800 - 1e1b8: b005 add sp, #20 - 1e1ba: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1e1be: bf00 nop - 1e1c0: 020249b0 .word 0x020249b0 - 1e1c4: 03ff0000 .word 0x03ff0000 - 1e1c8: 20003c58 .word 0x20003c58 - 1e1cc: 20004ba8 .word 0x20004ba8 - 1e1d0: 200036c8 .word 0x200036c8 - 1e1d4: 200023ec .word 0x200023ec - 1e1d8: 20003e04 .word 0x20003e04 - 1e1dc: 20003e10 .word 0x20003e10 - 1e1e0: 20003e1c .word 0x20003e1c - 1e1e4: 2000bae8 .word 0x2000bae8 - 1e1e8: 200030b8 .word 0x200030b8 - 1e1ec: 20003e2c .word 0x20003e2c - 1e1f0: 20002448 .word 0x20002448 - 1e1f4: 20003b9c .word 0x20003b9c - 1e1f8: 20003ba4 .word 0x20003ba4 - -0001e1fc : + 1e28c: 6b2b ldr r3, [r5, #48] ; 0x30 + 1e28e: f443 6300 orr.w r3, r3, #2048 ; 0x800 + 1e292: 632b str r3, [r5, #48] ; 0x30 + } + 1e294: f50d 5dc0 add.w sp, sp, #6144 ; 0x1800 + 1e298: b005 add sp, #20 + 1e29a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1e29e: bf00 nop + 1e2a0: 020249b0 .word 0x020249b0 + 1e2a4: 03ff0000 .word 0x03ff0000 + 1e2a8: 20003d18 .word 0x20003d18 + 1e2ac: 20004c68 .word 0x20004c68 + 1e2b0: 20003788 .word 0x20003788 + 1e2b4: 200023ec .word 0x200023ec + 1e2b8: 20003ec4 .word 0x20003ec4 + 1e2bc: 20003ed0 .word 0x20003ed0 + 1e2c0: 20003edc .word 0x20003edc + 1e2c4: 2000bb08 .word 0x2000bb08 + 1e2c8: 20003150 .word 0x20003150 + 1e2cc: 20003eec .word 0x20003eec + 1e2d0: 20002448 .word 0x20002448 + 1e2d4: 20003c5c .word 0x20003c5c + 1e2d8: 20003c64 .word 0x20003c64 + +0001e2dc : if(midi.globals.editorConnected() && flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 1e1fc: 6843 ldr r3, [r0, #4] + 1e2dc: 6843 ldr r3, [r0, #4] return bitRead(flags, bit); - 1e1fe: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1e202: 6ddb ldr r3, [r3, #92] ; 0x5c - 1e204: 0759 lsls r1, r3, #29 - 1e206: d505 bpl.n 1e214 - 1e208: 6b03 ldr r3, [r0, #48] ; 0x30 - 1e20a: 049a lsls r2, r3, #18 + 1e2de: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1e2e2: 6ddb ldr r3, [r3, #92] ; 0x5c + 1e2e4: 0759 lsls r1, r3, #29 + 1e2e6: d505 bpl.n 1e2f4 + 1e2e8: 6b03 ldr r3, [r0, #48] ; 0x30 + 1e2ea: 049a lsls r2, r3, #18 void backupCancel(){ - 1e20c: b510 push {r4, lr} - 1e20e: 4604 mov r4, r0 + 1e2ec: b510 push {r4, lr} + 1e2ee: 4604 mov r4, r0 if(midi.globals.editorConnected() && flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 1e210: d401 bmi.n 1e216 - } - 1e212: bd10 pop {r4, pc} - 1e214: 4770 bx lr - 1e216: 2100 movs r1, #0 - 1e218: 4823 ldr r0, [pc, #140] ; (1e2a8 ) - 1e21a: f00e f995 bl 2c548 - 1e21e: 4823 ldr r0, [pc, #140] ; (1e2ac ) - 1e220: f00b fe28 bl 29e74 - 1e224: 212e movs r1, #46 ; 0x2e - 1e226: 4822 ldr r0, [pc, #136] ; (1e2b0 ) - 1e228: f00e f98e bl 2c548 - 1e22c: 481f ldr r0, [pc, #124] ; (1e2ac ) - 1e22e: f00b fe21 bl 29e74 - 1e232: 212e movs r1, #46 ; 0x2e - 1e234: 481e ldr r0, [pc, #120] ; (1e2b0 ) - 1e236: f00e f987 bl 2c548 - 1e23a: 481c ldr r0, [pc, #112] ; (1e2ac ) - 1e23c: f00b fe1a bl 29e74 - 1e240: 2101 movs r1, #1 - 1e242: 481c ldr r0, [pc, #112] ; (1e2b4 ) - 1e244: f00e f980 bl 2c548 - 1e248: 210f movs r1, #15 - 1e24a: 481b ldr r0, [pc, #108] ; (1e2b8 ) - 1e24c: f00e f97c bl 2c548 - 1e250: 4816 ldr r0, [pc, #88] ; (1e2ac ) - 1e252: f00b fe0f bl 29e74 - 1e256: 212e movs r1, #46 ; 0x2e - 1e258: 4815 ldr r0, [pc, #84] ; (1e2b0 ) - 1e25a: f00e f975 bl 2c548 - 1e25e: 4813 ldr r0, [pc, #76] ; (1e2ac ) - 1e260: f00b fe08 bl 29e74 - 1e264: 212e movs r1, #46 ; 0x2e - 1e266: 4812 ldr r0, [pc, #72] ; (1e2b0 ) - 1e268: f00e f96e bl 2c548 - 1e26c: 480f ldr r0, [pc, #60] ; (1e2ac ) - 1e26e: f00b fe01 bl 29e74 - 1e272: 2100 movs r1, #0 - 1e274: 480c ldr r0, [pc, #48] ; (1e2a8 ) - 1e276: f00e f967 bl 2c548 - 1e27a: 480c ldr r0, [pc, #48] ; (1e2ac ) - 1e27c: f00b fdfa bl 29e74 + 1e2f0: d401 bmi.n 1e2f6 + } + 1e2f2: bd10 pop {r4, pc} + 1e2f4: 4770 bx lr + 1e2f6: 2100 movs r1, #0 + 1e2f8: 4823 ldr r0, [pc, #140] ; (1e388 ) + 1e2fa: f00e f999 bl 2c630 + 1e2fe: 4823 ldr r0, [pc, #140] ; (1e38c ) + 1e300: f00b fe2e bl 29f60 + 1e304: 212e movs r1, #46 ; 0x2e + 1e306: 4822 ldr r0, [pc, #136] ; (1e390 ) + 1e308: f00e f992 bl 2c630 + 1e30c: 481f ldr r0, [pc, #124] ; (1e38c ) + 1e30e: f00b fe27 bl 29f60 + 1e312: 212e movs r1, #46 ; 0x2e + 1e314: 481e ldr r0, [pc, #120] ; (1e390 ) + 1e316: f00e f98b bl 2c630 + 1e31a: 481c ldr r0, [pc, #112] ; (1e38c ) + 1e31c: f00b fe20 bl 29f60 + 1e320: 2101 movs r1, #1 + 1e322: 481c ldr r0, [pc, #112] ; (1e394 ) + 1e324: f00e f984 bl 2c630 + 1e328: 210f movs r1, #15 + 1e32a: 481b ldr r0, [pc, #108] ; (1e398 ) + 1e32c: f00e f980 bl 2c630 + 1e330: 4816 ldr r0, [pc, #88] ; (1e38c ) + 1e332: f00b fe15 bl 29f60 + 1e336: 212e movs r1, #46 ; 0x2e + 1e338: 4815 ldr r0, [pc, #84] ; (1e390 ) + 1e33a: f00e f979 bl 2c630 + 1e33e: 4813 ldr r0, [pc, #76] ; (1e38c ) + 1e340: f00b fe0e bl 29f60 + 1e344: 212e movs r1, #46 ; 0x2e + 1e346: 4812 ldr r0, [pc, #72] ; (1e390 ) + 1e348: f00e f972 bl 2c630 + 1e34c: 480f ldr r0, [pc, #60] ; (1e38c ) + 1e34e: f00b fe07 bl 29f60 + 1e352: 2100 movs r1, #0 + 1e354: 480c ldr r0, [pc, #48] ; (1e388 ) + 1e356: f00e f96b bl 2c630 + 1e35a: 480c ldr r0, [pc, #48] ; (1e38c ) + 1e35c: f00b fe00 bl 29f60 bitClear(flags, bit); - 1e280: 6b23 ldr r3, [r4, #48] ; 0x30 + 1e360: 6b23 ldr r3, [r4, #48] ; 0x30 getStore(); - 1e282: 4620 mov r0, r4 - 1e284: f423 4340 bic.w r3, r3, #49152 ; 0xc000 + 1e362: 4620 mov r0, r4 + 1e364: f423 4340 bic.w r3, r3, #49152 ; 0xc000 bitSet(flags, bit); - 1e288: f443 3340 orr.w r3, r3, #196608 ; 0x30000 - 1e28c: 6323 str r3, [r4, #48] ; 0x30 - 1e28e: f7fb fd17 bl 19cc0 + 1e368: f443 3340 orr.w r3, r3, #196608 ; 0x30000 + 1e36c: 6323 str r3, [r4, #48] ; 0x30 + 1e36e: f7fb fd17 bl 19da0 if(midi.globals.editorConnected()){ - 1e292: 6863 ldr r3, [r4, #4] + 1e372: 6863 ldr r3, [r4, #4] return bitRead(flags, bit); - 1e294: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1e298: 6ddb ldr r3, [r3, #92] ; 0x5c - 1e29a: 075b lsls r3, r3, #29 - 1e29c: d5b9 bpl.n 1e212 + 1e374: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1e378: 6ddb ldr r3, [r3, #92] ; 0x5c + 1e37a: 075b lsls r3, r3, #29 + 1e37c: d5b9 bpl.n 1e2f2 bitSet(flags, bit); - 1e29e: 6b23 ldr r3, [r4, #48] ; 0x30 - 1e2a0: f043 0304 orr.w r3, r3, #4 - 1e2a4: 6323 str r3, [r4, #48] ; 0x30 - } - 1e2a6: bd10 pop {r4, pc} - 1e2a8: 20003c58 .word 0x20003c58 - 1e2ac: 20004ba8 .word 0x20004ba8 - 1e2b0: 20003ff4 .word 0x20003ff4 - 1e2b4: 200023ec .word 0x200023ec - 1e2b8: 20003bb4 .word 0x20003bb4 - -0001e2bc : + 1e37e: 6b23 ldr r3, [r4, #48] ; 0x30 + 1e380: f043 0304 orr.w r3, r3, #4 + 1e384: 6323 str r3, [r4, #48] ; 0x30 + } + 1e386: bd10 pop {r4, pc} + 1e388: 20003d18 .word 0x20003d18 + 1e38c: 20004c68 .word 0x20004c68 + 1e390: 200040b4 .word 0x200040b4 + 1e394: 200023ec .word 0x200023ec + 1e398: 20003c74 .word 0x20003c74 + +0001e39c : void BMCEditor::globalEditorErase(bool write){ - 1e2bc: b5f0 push {r4, r5, r6, r7, lr} - 1e2be: 210c movs r1, #12 - 1e2c0: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c - 1e2c4: 4605 mov r5, r0 - 1e2c6: 482b ldr r0, [pc, #172] ; (1e374 ) - 1e2c8: f00e f93e bl 2c548 - 1e2cc: 482a ldr r0, [pc, #168] ; (1e378 ) - 1e2ce: f00b fdd1 bl 29e74 + 1e39c: b5f0 push {r4, r5, r6, r7, lr} + 1e39e: 210c movs r1, #12 + 1e3a0: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c + 1e3a4: 4605 mov r5, r0 + 1e3a6: 482b ldr r0, [pc, #172] ; (1e454 ) + 1e3a8: f00e f942 bl 2c630 + 1e3ac: 482a ldr r0, [pc, #168] ; (1e458 ) + 1e3ae: f00b fdd7 bl 29f60 if(getMessageLayerNumber() == 0x3FFF){ - 1e2d2: 6beb ldr r3, [r5, #60] ; 0x3c + 1e3b2: 6beb ldr r3, [r5, #60] ; 0x3c if((t_offset+1) < size()){ - 1e2d4: f8b3 2003 ldrh.w r2, [r3, #3] - 1e2d8: 2a07 cmp r2, #7 - 1e2da: d82f bhi.n 1e33c - 1e2dc: 210b movs r1, #11 - 1e2de: 4827 ldr r0, [pc, #156] ; (1e37c ) - 1e2e0: f00e f932 bl 2c548 - 1e2e4: 4824 ldr r0, [pc, #144] ; (1e378 ) - 1e2e6: 2700 movs r7, #0 - 1e2e8: f00b fdc4 bl 29e74 + 1e3b4: f8b3 2003 ldrh.w r2, [r3, #3] + 1e3b8: 2a07 cmp r2, #7 + 1e3ba: d82f bhi.n 1e41c + 1e3bc: 210b movs r1, #11 + 1e3be: 4827 ldr r0, [pc, #156] ; (1e45c ) + 1e3c0: f00e f936 bl 2c630 + 1e3c4: 4824 ldr r0, [pc, #144] ; (1e458 ) + 1e3c6: 2700 movs r7, #0 + 1e3c8: f00b fdca bl 29f60 struct BMCMidiMessage { - 1e2ec: ac41 add r4, sp, #260 ; 0x104 - 1e2ee: 2600 movs r6, #0 + 1e3cc: ac41 add r4, sp, #260 ; 0x104 + 1e3ce: 2600 movs r6, #0 buff.prepareEditorMessage( - 1e2f0: 2313 movs r3, #19 - 1e2f2: 4620 mov r0, r4 - 1e2f4: e9cd 6600 strd r6, r6, [sp] - 1e2f8: 6026 str r6, [r4, #0] - 1e2fa: f895 202d ldrb.w r2, [r5, #45] ; 0x2d - 1e2fe: f895 102c ldrb.w r1, [r5, #44] ; 0x2c - 1e302: 7126 strb r6, [r4, #4] - 1e304: f7fc fdde bl 1aec4 + 1e3d0: 2313 movs r3, #19 + 1e3d2: 4620 mov r0, r4 + 1e3d4: e9cd 6600 strd r6, r6, [sp] + 1e3d8: 6026 str r6, [r4, #0] + 1e3da: f895 202d ldrb.w r2, [r5, #45] ; 0x2d + 1e3de: f895 102c ldrb.w r1, [r5, #44] ; 0x2c + 1e3e2: 7126 strb r6, [r4, #4] + 1e3e4: f7fc fdde bl 1afa4 uint16_t sysLength = size(); - 1e308: f8b4 3003 ldrh.w r3, [r4, #3] + 1e3e8: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1e3ec: 2bfd cmp r3, #253 ; 0xfd + 1e3ee: d804 bhi.n 1e3fa sysex[sysLength++] = value; - 1e310: 18e2 adds r2, r4, r3 - 1e312: 3301 adds r3, #1 + 1e3f0: 18e2 adds r2, r4, r3 + 1e3f2: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1e314: 7126 strb r6, [r4, #4] + 1e3f4: 7126 strb r6, [r4, #4] sysex[sysLength++] = value; - 1e316: 7157 strb r7, [r2, #5] + 1e3f6: 7157 strb r7, [r2, #5] setData1(value & 0xFF); - 1e318: 70e3 strb r3, [r4, #3] + 1e3f8: 70e3 strb r3, [r4, #3] sendToEditor(buff); - 1e31a: 2301 movs r3, #1 - 1e31c: 2100 movs r1, #0 - 1e31e: 22f7 movs r2, #247 ; 0xf7 - 1e320: 4668 mov r0, sp - 1e322: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 - 1e326: a944 add r1, sp, #272 ; 0x110 - 1e328: f00c f9ee bl 2a708 - 1e32c: 4628 mov r0, r5 - 1e32e: e894 000e ldmia.w r4, {r1, r2, r3} - 1e332: f7fc facb bl 1a8cc -} - 1e336: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 1e33a: bdf0 pop {r4, r5, r6, r7, pc} + 1e3fa: 2301 movs r3, #1 + 1e3fc: 2100 movs r1, #0 + 1e3fe: 22f7 movs r2, #247 ; 0xf7 + 1e400: 4668 mov r0, sp + 1e402: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 + 1e406: a944 add r1, sp, #272 ; 0x110 + 1e408: f00c f9f2 bl 2a7f0 + 1e40c: 4628 mov r0, r5 + 1e40e: e894 000e ldmia.w r4, {r1, r2, r3} + 1e412: f7fc facb bl 1a9ac +} + 1e416: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 1e41a: bdf0 pop {r4, r5, r6, r7, pc} return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1e33c: 7ada ldrb r2, [r3, #11] + 1e41c: 7ada ldrb r2, [r3, #11] if(getMessageLayerNumber() == 0x3FFF){ - 1e33e: f643 71ff movw r1, #16383 ; 0x3fff - 1e342: 7b1b ldrb r3, [r3, #12] - 1e344: 01d2 lsls r2, r2, #7 - 1e346: f003 037f and.w r3, r3, #127 ; 0x7f - 1e34a: f402 527e and.w r2, r2, #16256 ; 0x3f80 - 1e34e: 4313 orrs r3, r2 - 1e350: 428b cmp r3, r1 - 1e352: d1c3 bne.n 1e2dc - 1e354: 2108 movs r1, #8 - 1e356: 480a ldr r0, [pc, #40] ; (1e380 ) - 1e358: f00e f8f6 bl 2c548 - 1e35c: 4806 ldr r0, [pc, #24] ; (1e378 ) - 1e35e: f00b fd89 bl 29e74 + 1e41e: f643 71ff movw r1, #16383 ; 0x3fff + 1e422: 7b1b ldrb r3, [r3, #12] + 1e424: 01d2 lsls r2, r2, #7 + 1e426: f003 037f and.w r3, r3, #127 ; 0x7f + 1e42a: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 1e42e: 4313 orrs r3, r2 + 1e430: 428b cmp r3, r1 + 1e432: d1c3 bne.n 1e3bc + 1e434: 2108 movs r1, #8 + 1e436: 480a ldr r0, [pc, #40] ; (1e460 ) + 1e438: f00e f8fa bl 2c630 + 1e43c: 4806 ldr r0, [pc, #24] ; (1e458 ) + 1e43e: f00b fd8f bl 29f60 storeErase(false); - 1e362: 4628 mov r0, r5 - 1e364: f7ff fdac bl 1dec0 + 1e442: 4628 mov r0, r5 + 1e444: f7ff fdac bl 1dfa0 delay(1000); - 1e368: f44f 707a mov.w r0, #1000 ; 0x3e8 - 1e36c: 2701 movs r7, #1 - 1e36e: f00c f8ad bl 2a4cc - 1e372: e7bb b.n 1e2ec - 1e374: 20003c78 .word 0x20003c78 - 1e378: 20004ba8 .word 0x20004ba8 - 1e37c: 20003c94 .word 0x20003c94 - 1e380: 20003c88 .word 0x20003c88 - -0001e384 : + 1e448: f44f 707a mov.w r0, #1000 ; 0x3e8 + 1e44c: 2701 movs r7, #1 + 1e44e: f00c f8b1 bl 2a5b4 + 1e452: e7bb b.n 1e3cc + 1e454: 20003d38 .word 0x20003d38 + 1e458: 20004c68 .word 0x20004c68 + 1e45c: 20003d54 .word 0x20003d54 + 1e460: 20003d48 .word 0x20003d48 + +0001e464 : if(t_address==storeAddress || t_address >= maxStoreAddresses()){ - 1e384: f890 202f ldrb.w r2, [r0, #47] ; 0x2f - 1e388: 428a cmp r2, r1 - 1e38a: f000 80d6 beq.w 1e53a + 1e464: f890 202f ldrb.w r2, [r0, #47] ; 0x2f + 1e468: 428a cmp r2, r1 + 1e46a: f000 80d6 beq.w 1e61a uint8_t max = (storage.length()/sizeof(bmcStore)); - 1e38e: 8b83 ldrh r3, [r0, #28] + 1e46e: 8b83 ldrh r3, [r0, #28] bool changeStoreLocal(uint8_t t_address){ - 1e390: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1e470: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} uint8_t max = (storage.length()/sizeof(bmcStore)); - 1e394: 089b lsrs r3, r3, #2 - 1e396: 4689 mov r9, r1 - 1e398: 498c ldr r1, [pc, #560] ; (1e5cc ) - 1e39a: 4606 mov r6, r0 - 1e39c: fba1 1303 umull r1, r3, r1, r3 + 1e474: 089b lsrs r3, r3, #2 + 1e476: 4689 mov r9, r1 + 1e478: 498c ldr r1, [pc, #560] ; (1e6ac ) + 1e47a: 4606 mov r6, r0 + 1e47c: fba1 1303 umull r1, r3, r1, r3 if(t_address==storeAddress || t_address >= maxStoreAddresses()){ - 1e3a0: 0a5b lsrs r3, r3, #9 - 1e3a2: 2b01 cmp r3, #1 - 1e3a4: bf38 it cc - 1e3a6: 2301 movcc r3, #1 - 1e3a8: 4599 cmp r9, r3 + 1e480: 0a5b lsrs r3, r3, #9 + 1e482: 2b01 cmp r3, #1 + 1e484: bf38 it cc + 1e486: 2301 movcc r3, #1 + 1e488: 4599 cmp r9, r3 bool changeStoreLocal(uint8_t t_address){ - 1e3aa: ed2d 8b02 vpush {d8} - 1e3ae: b083 sub sp, #12 + 1e48a: ed2d 8b02 vpush {d8} + 1e48e: b083 sub sp, #12 if(t_address==storeAddress || t_address >= maxStoreAddresses()){ - 1e3b0: f080 80bd bcs.w 1e52e + 1e490: f080 80bd bcs.w 1e60e storage.get(0, store); - 1e3b4: f100 030c add.w r3, r0, #12 - 1e3b8: ee08 3a10 vmov s16, r3 + 1e494: f100 030c add.w r3, r0, #12 + 1e498: ee08 3a10 vmov s16, r3 if(storeAddress!=0){ - 1e3bc: 2a00 cmp r2, #0 - 1e3be: f040 80be bne.w 1e53e + 1e49c: 2a00 cmp r2, #0 + 1e49e: f040 80be bne.w 1e61e STORAGE.get(address, file); - 1e3c2: f100 0810 add.w r8, r0, #16 + 1e4a2: f100 0810 add.w r8, r0, #16 if(max==0){ - 1e3c6: 4f82 ldr r7, [pc, #520] ; (1e5d0 ) + 1e4a6: 4f82 ldr r7, [pc, #520] ; (1e6b0 ) storeAddress = value; - 1e3c8: f886 902f strb.w r9, [r6, #47] ; 0x2f + 1e4a8: f886 902f strb.w r9, [r6, #47] ; 0x2f BMC_WRITE_BITS(settings.data[0],value,0x03,20); - 1e3cc: 68b2 ldr r2, [r6, #8] - 1e3ce: ea4f 5309 mov.w r3, r9, lsl #20 + 1e4ac: 68b2 ldr r2, [r6, #8] + 1e4ae: ea4f 5309 mov.w r3, r9, lsl #20 storage.set(0, store); - 1e3d2: 6835 ldr r5, [r6, #0] - 1e3d4: 6810 ldr r0, [r2, #0] - 1e3d6: f403 1340 and.w r3, r3, #3145728 ; 0x300000 + 1e4b2: 6835 ldr r5, [r6, #0] + 1e4b4: 6810 ldr r0, [r2, #0] + 1e4b6: f403 1340 and.w r3, r3, #3145728 ; 0x300000 return bitRead(flags, bit); - 1e3da: 68f2 ldr r2, [r6, #12] - 1e3dc: f8b2 1060 ldrh.w r1, [r2, #96] ; 0x60 - 1e3e0: 6842 ldr r2, [r0, #4] - 1e3e2: f422 1240 bic.w r2, r2, #3145728 ; 0x300000 - 1e3e6: 4313 orrs r3, r2 - 1e3e8: 6043 str r3, [r0, #4] + 1e4ba: 68f2 ldr r2, [r6, #12] + 1e4bc: f8b2 1060 ldrh.w r1, [r2, #96] ; 0x60 + 1e4c0: 6842 ldr r2, [r0, #4] + 1e4c2: f422 1240 bic.w r2, r2, #3145728 ; 0x300000 + 1e4c6: 4313 orrs r3, r2 + 1e4c8: 6043 str r3, [r0, #4] BMC_WRITE_BITS(settings.data[0],value,0x0F,14); - 1e3ea: f423 3370 bic.w r3, r3, #245760 ; 0x3c000 - 1e3ee: f896 202d ldrb.w r2, [r6, #45] ; 0x2d - 1e3f2: 0392 lsls r2, r2, #14 - 1e3f4: f402 3270 and.w r2, r2, #245760 ; 0x3c000 - 1e3f8: 4313 orrs r3, r2 - 1e3fa: 6043 str r3, [r0, #4] + 1e4ca: f423 3370 bic.w r3, r3, #245760 ; 0x3c000 + 1e4ce: f896 202d ldrb.w r2, [r6, #45] ; 0x2d + 1e4d2: 0392 lsls r2, r2, #14 + 1e4d4: f402 3270 and.w r2, r2, #245760 ; 0x3c000 + 1e4d8: 4313 orrs r3, r2 + 1e4da: 6043 str r3, [r0, #4] if(!globals.getStorageDebug()){ - 1e3fc: 07cb lsls r3, r1, #31 - 1e3fe: d521 bpl.n 1e444 - 1e400: 2100 movs r1, #0 - 1e402: 4874 ldr r0, [pc, #464] ; (1e5d4 ) - 1e404: f00e f8a0 bl 2c548 - 1e408: 4873 ldr r0, [pc, #460] ; (1e5d8 ) - 1e40a: f00b fd33 bl 29e74 - 1e40e: 2103 movs r1, #3 - 1e410: 4872 ldr r0, [pc, #456] ; (1e5dc ) - 1e412: f00e f899 bl 2c548 - 1e416: 2101 movs r1, #1 - 1e418: 4871 ldr r0, [pc, #452] ; (1e5e0 ) - 1e41a: f00e f895 bl 2c548 - 1e41e: 2108 movs r1, #8 - 1e420: 4870 ldr r0, [pc, #448] ; (1e5e4 ) - 1e422: f00e f891 bl 2c548 - 1e426: 2101 movs r1, #1 - 1e428: 486d ldr r0, [pc, #436] ; (1e5e0 ) - 1e42a: f00e f88d bl 2c548 - 1e42e: 2108 movs r1, #8 - 1e430: 486d ldr r0, [pc, #436] ; (1e5e8 ) - 1e432: f00e f889 bl 2c548 - 1e436: 2101 movs r1, #1 - 1e438: 4869 ldr r0, [pc, #420] ; (1e5e0 ) - 1e43a: f00e f885 bl 2c548 + 1e4dc: 07cb lsls r3, r1, #31 + 1e4de: d521 bpl.n 1e524 + 1e4e0: 2100 movs r1, #0 + 1e4e2: 4874 ldr r0, [pc, #464] ; (1e6b4 ) + 1e4e4: f00e f8a4 bl 2c630 + 1e4e8: 4873 ldr r0, [pc, #460] ; (1e6b8 ) + 1e4ea: f00b fd39 bl 29f60 + 1e4ee: 2103 movs r1, #3 + 1e4f0: 4872 ldr r0, [pc, #456] ; (1e6bc ) + 1e4f2: f00e f89d bl 2c630 + 1e4f6: 2101 movs r1, #1 + 1e4f8: 4871 ldr r0, [pc, #452] ; (1e6c0 ) + 1e4fa: f00e f899 bl 2c630 + 1e4fe: 2108 movs r1, #8 + 1e500: 4870 ldr r0, [pc, #448] ; (1e6c4 ) + 1e502: f00e f895 bl 2c630 + 1e506: 2101 movs r1, #1 + 1e508: 486d ldr r0, [pc, #436] ; (1e6c0 ) + 1e50a: f00e f891 bl 2c630 + 1e50e: 2108 movs r1, #8 + 1e510: 486d ldr r0, [pc, #436] ; (1e6c8 ) + 1e512: f00e f88d bl 2c630 + 1e516: 2101 movs r1, #1 + 1e518: 4869 ldr r0, [pc, #420] ; (1e6c0 ) + 1e51a: f00e f889 bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 1e43e: f00c f899 bl 2a574 - 1e442: 62b0 str r0, [r6, #40] ; 0x28 - 1e444: 210e movs r1, #14 - 1e446: 4869 ldr r0, [pc, #420] ; (1e5ec ) - 1e448: f00e f87e bl 2c548 + 1e51e: f00c f89d bl 2a65c + 1e522: 62b0 str r0, [r6, #40] ; 0x28 + 1e524: 210e movs r1, #14 + 1e526: 4869 ldr r0, [pc, #420] ; (1e6cc ) + 1e528: f00e f882 bl 2c630 unsigned long updatedBytes = 0; - 1e44c: f04f 0900 mov.w r9, #0 - 1e450: 683b ldr r3, [r7, #0] + 1e52c: f04f 0900 mov.w r9, #0 + 1e530: 683b ldr r3, [r7, #0] for(i=start;i - 1e458: 6233 str r3, [r6, #32] - 1e45a: e009 b.n 1e470 - 1e45c: 683b ldr r3, [r7, #0] - 1e45e: 3401 adds r4, #1 + 1e532: 464c mov r4, r9 + 1e534: f8df a198 ldr.w sl, [pc, #408] ; 1e6d0 + 1e538: 6233 str r3, [r6, #32] + 1e53a: e009 b.n 1e550 + 1e53c: 683b ldr r3, [r7, #0] + 1e53e: 3401 adds r4, #1 operator unsigned long () const { return millis() - ms; } - 1e460: 6a32 ldr r2, [r6, #32] - 1e462: 1a9b subs r3, r3, r2 + 1e540: 6a32 ldr r2, [r6, #32] + 1e542: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1e464: 2bf9 cmp r3, #249 ; 0xf9 - 1e466: d819 bhi.n 1e49c + 1e544: 2bf9 cmp r3, #249 ; 0xf9 + 1e546: d819 bhi.n 1e57c for(i=start;i + 1e548: f241 73fc movw r3, #6140 ; 0x17fc + 1e54c: 429c cmp r4, r3 + 1e54e: d01f beq.n 1e590 updatedBytes += update(i,*p++); - 1e470: f815 3b01 ldrb.w r3, [r5], #1 + 1e550: f815 3b01 ldrb.w r3, [r5], #1 if(read(addr) != value){ - 1e474: 4621 mov r1, r4 - 1e476: 4640 mov r0, r8 - 1e478: f88d 3007 strb.w r3, [sp, #7] - 1e47c: f006 fe66 bl 2514c - 1e480: f89d 3007 ldrb.w r3, [sp, #7] - 1e484: 4298 cmp r0, r3 - 1e486: d0e9 beq.n 1e45c + 1e554: 4621 mov r1, r4 + 1e556: 4640 mov r0, r8 + 1e558: f88d 3007 strb.w r3, [sp, #7] + 1e55c: f006 fe6c bl 25238 + 1e560: f89d 3007 ldrb.w r3, [sp, #7] + 1e564: 4298 cmp r0, r3 + 1e566: d0e9 beq.n 1e53c write(addr, &value, 1); - 1e488: 4621 mov r1, r4 - 1e48a: 2301 movs r3, #1 - 1e48c: f10d 0207 add.w r2, sp, #7 - 1e490: 4640 mov r0, r8 + 1e568: 4621 mov r1, r4 + 1e56a: 2301 movs r3, #1 + 1e56c: f10d 0207 add.w r2, sp, #7 + 1e570: 4640 mov r0, r8 updatedBytes += update(i,*p++); - 1e492: f109 0901 add.w r9, r9, #1 + 1e572: f109 0901 add.w r9, r9, #1 write(addr, &value, 1); - 1e496: f006 fd4f bl 24f38 + 1e576: f006 fd55 bl 25024 return 1; - 1e49a: e7df b.n 1e45c - 1e49c: 2101 movs r1, #1 - 1e49e: 4650 mov r0, sl - 1e4a0: f00e f852 bl 2c548 - 1e4a4: 683b ldr r3, [r7, #0] + 1e57a: e7df b.n 1e53c + 1e57c: 2101 movs r1, #1 + 1e57e: 4650 mov r0, sl + 1e580: f00e f856 bl 2c630 + 1e584: 683b ldr r3, [r7, #0] elapsedMillis & operator = (unsigned long val) { ms = millis() - val; return *this; } - 1e4a6: 6233 str r3, [r6, #32] + 1e586: 6233 str r3, [r6, #32] for(i=start;i - 1e4b0: 2101 movs r1, #1 - 1e4b2: 484f ldr r0, [pc, #316] ; (1e5f0 ) - 1e4b4: f00e f848 bl 2c548 - 1e4b8: 4847 ldr r0, [pc, #284] ; (1e5d8 ) - 1e4ba: f00b fcdb bl 29e74 - 1e4be: 2109 movs r1, #9 - 1e4c0: 484c ldr r0, [pc, #304] ; (1e5f4 ) - 1e4c2: f00e f841 bl 2c548 - 1e4c6: 2101 movs r1, #1 - 1e4c8: 4845 ldr r0, [pc, #276] ; (1e5e0 ) - 1e4ca: f00e f83d bl 2c548 + 1e588: f241 73fc movw r3, #6140 ; 0x17fc + 1e58c: 429c cmp r4, r3 + 1e58e: d1df bne.n 1e550 + 1e590: 2101 movs r1, #1 + 1e592: 484f ldr r0, [pc, #316] ; (1e6d0 ) + 1e594: f00e f84c bl 2c630 + 1e598: 4847 ldr r0, [pc, #284] ; (1e6b8 ) + 1e59a: f00b fce1 bl 29f60 + 1e59e: 2109 movs r1, #9 + 1e5a0: 484c ldr r0, [pc, #304] ; (1e6d4 ) + 1e5a2: f00e f845 bl 2c630 + 1e5a6: 2101 movs r1, #1 + 1e5a8: 4845 ldr r0, [pc, #276] ; (1e6c0 ) + 1e5aa: f00e f841 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1e4ce: 2300 movs r3, #0 - 1e4d0: 220a movs r2, #10 - 1e4d2: 4649 mov r1, r9 - 1e4d4: 4840 ldr r0, [pc, #256] ; (1e5d8 ) - 1e4d6: f00b fce9 bl 29eac - 1e4da: 2101 movs r1, #1 - 1e4dc: 4840 ldr r0, [pc, #256] ; (1e5e0 ) - 1e4de: f00e f833 bl 2c548 - 1e4e2: 2105 movs r1, #5 - 1e4e4: 4844 ldr r0, [pc, #272] ; (1e5f8 ) - 1e4e6: f00e f82f bl 2c548 + 1e5ae: 2300 movs r3, #0 + 1e5b0: 220a movs r2, #10 + 1e5b2: 4649 mov r1, r9 + 1e5b4: 4840 ldr r0, [pc, #256] ; (1e6b8 ) + 1e5b6: f00b fcef bl 29f98 + 1e5ba: 2101 movs r1, #1 + 1e5bc: 4840 ldr r0, [pc, #256] ; (1e6c0 ) + 1e5be: f00e f837 bl 2c630 + 1e5c2: 2105 movs r1, #5 + 1e5c4: 4844 ldr r0, [pc, #272] ; (1e6d8 ) + 1e5c6: f00e f833 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1e4ea: 483b ldr r0, [pc, #236] ; (1e5d8 ) - 1e4ec: f00b fcc2 bl 29e74 + 1e5ca: 483b ldr r0, [pc, #236] ; (1e6b8 ) + 1e5cc: f00b fcc8 bl 29f60 debugStopTiming(); - 1e4f0: ee18 0a10 vmov r0, s16 - 1e4f4: f7fd fd58 bl 1bfa8 + 1e5d0: ee18 0a10 vmov r0, s16 + 1e5d4: f7fd fd58 bl 1c088 getStore(); - 1e4f8: 4630 mov r0, r6 - 1e4fa: f7fb fbe1 bl 19cc0 + 1e5d8: 4630 mov r0, r6 + 1e5da: f7fb fbe1 bl 19da0 delay(5); - 1e4fe: 2005 movs r0, #5 - 1e500: f00b ffe4 bl 2a4cc - 1e504: 68b2 ldr r2, [r6, #8] - 1e506: f896 302d ldrb.w r3, [r6, #45] ; 0x2d + 1e5de: 2005 movs r0, #5 + 1e5e0: f00b ffe8 bl 2a5b4 + 1e5e4: 68b2 ldr r2, [r6, #8] + 1e5e6: f896 302d ldrb.w r3, [r6, #45] ; 0x2d saveSettings(); - 1e50a: 4630 mov r0, r6 - 1e50c: 6811 ldr r1, [r2, #0] - 1e50e: 039b lsls r3, r3, #14 - 1e510: 684a ldr r2, [r1, #4] - 1e512: f403 3370 and.w r3, r3, #245760 ; 0x3c000 - 1e516: f422 3270 bic.w r2, r2, #245760 ; 0x3c000 - 1e51a: 4313 orrs r3, r2 - 1e51c: 604b str r3, [r1, #4] - 1e51e: f7fb f8c3 bl 196a8 + 1e5ea: 4630 mov r0, r6 + 1e5ec: 6811 ldr r1, [r2, #0] + 1e5ee: 039b lsls r3, r3, #14 + 1e5f0: 684a ldr r2, [r1, #4] + 1e5f2: f403 3370 and.w r3, r3, #245760 ; 0x3c000 + 1e5f6: f422 3270 bic.w r2, r2, #245760 ; 0x3c000 + 1e5fa: 4313 orrs r3, r2 + 1e5fc: 604b str r3, [r1, #4] + 1e5fe: f7fb f8c3 bl 19788 return true; - 1e522: 2001 movs r0, #1 + 1e602: 2001 movs r0, #1 } - 1e524: b003 add sp, #12 - 1e526: ecbd 8b02 vpop {d8} - 1e52a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1e604: b003 add sp, #12 + 1e606: ecbd 8b02 vpop {d8} + 1e60a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} return false; - 1e52e: 2000 movs r0, #0 + 1e60e: 2000 movs r0, #0 } - 1e530: b003 add sp, #12 - 1e532: ecbd 8b02 vpop {d8} - 1e536: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1e610: b003 add sp, #12 + 1e612: ecbd 8b02 vpop {d8} + 1e616: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} return false; - 1e53a: 2000 movs r0, #0 + 1e61a: 2000 movs r0, #0 } - 1e53c: 4770 bx lr + 1e61c: 4770 bx lr storage.get(0, store); - 1e53e: 4680 mov r8, r0 + 1e61e: 4680 mov r8, r0 debugStartTiming("Reading"); - 1e540: 492e ldr r1, [pc, #184] ; (1e5fc ) - 1e542: 4618 mov r0, r3 - 1e544: 4f22 ldr r7, [pc, #136] ; (1e5d0 ) - 1e546: f858 4b10 ldr.w r4, [r8], #16 - 1e54a: f7fd fcf3 bl 1bf34 - 1e54e: 210f movs r1, #15 - 1e550: 482b ldr r0, [pc, #172] ; (1e600 ) - 1e552: f00d fff9 bl 2c548 - 1e556: 683a ldr r2, [r7, #0] + 1e620: 492e ldr r1, [pc, #184] ; (1e6dc ) + 1e622: 4618 mov r0, r3 + 1e624: 4f22 ldr r7, [pc, #136] ; (1e6b0 ) + 1e626: f858 4b10 ldr.w r4, [r8], #16 + 1e62a: f7fd fcf3 bl 1c014 + 1e62e: 210f movs r1, #15 + 1e630: 482b ldr r0, [pc, #172] ; (1e6e0 ) + 1e632: f00d fffd bl 2c630 + 1e636: 683a ldr r2, [r7, #0] for (i=start;i - 1e560: f241 75fc movw r5, #6140 ; 0x17fc - 1e564: 6232 str r2, [r6, #32] - 1e566: e001 b.n 1e56c - 1e568: 45ab cmp fp, r5 - 1e56a: d014 beq.n 1e596 + 1e638: f04f 0b00 mov.w fp, #0 + 1e63c: f8df a090 ldr.w sl, [pc, #144] ; 1e6d0 + 1e640: f241 75fc movw r5, #6140 ; 0x17fc + 1e644: 6232 str r2, [r6, #32] + 1e646: e001 b.n 1e64c + 1e648: 45ab cmp fp, r5 + 1e64a: d014 beq.n 1e676 *p++ = (uint8_t) read(i); - 1e56c: 4659 mov r1, fp - 1e56e: 4640 mov r0, r8 - 1e570: f006 fdec bl 2514c - 1e574: f804 0b01 strb.w r0, [r4], #1 - 1e578: 683a ldr r2, [r7, #0] + 1e64c: 4659 mov r1, fp + 1e64e: 4640 mov r0, r8 + 1e650: f006 fdf2 bl 25238 + 1e654: f804 0b01 strb.w r0, [r4], #1 + 1e658: 683a ldr r2, [r7, #0] for (i=start;i=250){ - 1e582: 2af9 cmp r2, #249 ; 0xf9 - 1e584: d9f0 bls.n 1e568 - 1e586: 2101 movs r1, #1 - 1e588: 4650 mov r0, sl - 1e58a: f00d ffdd bl 2c548 - 1e58e: 683a ldr r2, [r7, #0] + 1e662: 2af9 cmp r2, #249 ; 0xf9 + 1e664: d9f0 bls.n 1e648 + 1e666: 2101 movs r1, #1 + 1e668: 4650 mov r0, sl + 1e66a: f00d ffe1 bl 2c630 + 1e66e: 683a ldr r2, [r7, #0] for (i=start;i - 1e596: 2101 movs r1, #1 - 1e598: 4815 ldr r0, [pc, #84] ; (1e5f0 ) - 1e59a: f00d ffd5 bl 2c548 - 1e59e: 480e ldr r0, [pc, #56] ; (1e5d8 ) - 1e5a0: f00b fc68 bl 29e74 + 1e672: 6232 str r2, [r6, #32] + 1e674: d1ea bne.n 1e64c + 1e676: 2101 movs r1, #1 + 1e678: 4815 ldr r0, [pc, #84] ; (1e6d0 ) + 1e67a: f00d ffd9 bl 2c630 + 1e67e: 480e ldr r0, [pc, #56] ; (1e6b8 ) + 1e680: f00b fc6e bl 29f60 debugStopTiming(); - 1e5a4: ee18 0a10 vmov r0, s16 - 1e5a8: f7fd fcfe bl 1bfa8 + 1e684: ee18 0a10 vmov r0, s16 + 1e688: f7fd fcfe bl 1c088 uint8_t max = (storage.length()/sizeof(bmcStore)); - 1e5ac: 8bb3 ldrh r3, [r6, #28] - 1e5ae: 4a07 ldr r2, [pc, #28] ; (1e5cc ) - 1e5b0: 089b lsrs r3, r3, #2 - 1e5b2: fba2 2303 umull r2, r3, r2, r3 + 1e68c: 8bb3 ldrh r3, [r6, #28] + 1e68e: 4a07 ldr r2, [pc, #28] ; (1e6ac ) + 1e690: 089b lsrs r3, r3, #2 + 1e692: fba2 2303 umull r2, r3, r2, r3 if(value + 1e696: 0a5b lsrs r3, r3, #9 + 1e698: 2b01 cmp r3, #1 + 1e69a: bf38 it cc + 1e69c: 2301 movcc r3, #1 + 1e69e: 4599 cmp r9, r3 + 1e6a0: f4ff af02 bcc.w 1e4a8 settings.setStoreAddress(storeAddress); - 1e5c4: f896 902f ldrb.w r9, [r6, #47] ; 0x2f - 1e5c8: e700 b.n 1e3cc - 1e5ca: bf00 nop - 1e5cc: 55639099 .word 0x55639099 - 1e5d0: 2000bae8 .word 0x2000bae8 - 1e5d4: 20003c58 .word 0x20003c58 - 1e5d8: 20004ba8 .word 0x20004ba8 - 1e5dc: 200036c8 .word 0x200036c8 - 1e5e0: 200023ec .word 0x200023ec - 1e5e4: 20003e04 .word 0x20003e04 - 1e5e8: 20003e10 .word 0x20003e10 - 1e5ec: 20003e1c .word 0x20003e1c - 1e5f0: 200030b8 .word 0x200030b8 - 1e5f4: 20003e2c .word 0x20003e2c - 1e5f8: 20002448 .word 0x20002448 - 1e5fc: 20003b9c .word 0x20003b9c - 1e600: 20003ba4 .word 0x20003ba4 - -0001e604 : + 1e6a4: f896 902f ldrb.w r9, [r6, #47] ; 0x2f + 1e6a8: e700 b.n 1e4ac + 1e6aa: bf00 nop + 1e6ac: 55639099 .word 0x55639099 + 1e6b0: 2000bb08 .word 0x2000bb08 + 1e6b4: 20003d18 .word 0x20003d18 + 1e6b8: 20004c68 .word 0x20004c68 + 1e6bc: 20003788 .word 0x20003788 + 1e6c0: 200023ec .word 0x200023ec + 1e6c4: 20003ec4 .word 0x20003ec4 + 1e6c8: 20003ed0 .word 0x20003ed0 + 1e6cc: 20003edc .word 0x20003edc + 1e6d0: 20003150 .word 0x20003150 + 1e6d4: 20003eec .word 0x20003eec + 1e6d8: 20002448 .word 0x20002448 + 1e6dc: 20003c5c .word 0x20003c5c + 1e6e0: 20003c64 .word 0x20003c64 + +0001e6e4 : return (isValidMessage(checkSysExSize) && !isLayerMessage()); } bool isValidMessage(bool checkSysExSize=true){ if(checkSysExSize){ return ( midi.globals.editorConnected() && - 1e604: 6843 ldr r3, [r0, #4] - 1e606: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1e60a: 6ddb ldr r3, [r3, #92] ; 0x5c + 1e6e4: 6843 ldr r3, [r0, #4] + 1e6e6: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1e6ea: 6ddb ldr r3, [r3, #92] ; 0x5c getMessageDeviceId() == deviceId && incoming.getPort() == port && incoming.peekSysEx(4) == deviceId && - 1e60c: 075a lsls r2, r3, #29 - 1e60e: d510 bpl.n 1e632 + 1e6ec: 075a lsls r2, r3, #29 + 1e6ee: d510 bpl.n 1e712 void BMCEditor::incomingMessageLinks(){ - 1e610: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 1e614: 6bc4 ldr r4, [r0, #60] ; 0x3c - 1e616: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 - 1e61a: f890 302d ldrb.w r3, [r0, #45] ; 0x2d - 1e61e: 4605 mov r5, r0 + 1e6f0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 1e6f4: 6bc4 ldr r4, [r0, #60] ; 0x3c + 1e6f6: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 + 1e6fa: f890 302d ldrb.w r3, [r0, #45] ; 0x2d + 1e6fe: 4605 mov r5, r0 midi.globals.editorConnected() && - 1e620: 7a62 ldrb r2, [r4, #9] - 1e622: f890 602c ldrb.w r6, [r0, #44] ; 0x2c - 1e626: 429a cmp r2, r3 - 1e628: d004 beq.n 1e634 -} - 1e62a: f50d 7d02 add.w sp, sp, #520 ; 0x208 - 1e62e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 1e632: 4770 bx lr + 1e700: 7a62 ldrb r2, [r4, #9] + 1e702: f890 602c ldrb.w r6, [r0, #44] ; 0x2c + 1e706: 429a cmp r2, r3 + 1e708: d004 beq.n 1e714 +} + 1e70a: f50d 7d02 add.w sp, sp, #520 ; 0x208 + 1e70e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 1e712: 4770 bx lr getMessageDeviceId() == deviceId && - 1e634: 7821 ldrb r1, [r4, #0] - 1e636: 42b1 cmp r1, r6 - 1e638: d1f7 bne.n 1e62a + 1e714: 7821 ldrb r1, [r4, #0] + 1e716: 42b1 cmp r1, r6 + 1e718: d1f7 bne.n 1e70a incoming.peekSysEx(4) == deviceId && - 1e63a: f8b4 3003 ldrh.w r3, [r4, #3] - 1e63e: 2b0a cmp r3, #10 - 1e640: d9f3 bls.n 1e62a + 1e71a: f8b4 3003 ldrh.w r3, [r4, #3] + 1e71e: 2b0a cmp r3, #10 + 1e720: d9f3 bls.n 1e70a bool isLayer() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_LAYER);} - 1e642: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 1e722: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 1e646: f3c3 0640 ubfx r6, r3, #1, #1 - 1e64a: 079b lsls r3, r3, #30 - 1e64c: d4ed bmi.n 1e62a - 1e64e: 7ae3 ldrb r3, [r4, #11] - 1e650: 7b24 ldrb r4, [r4, #12] - 1e652: 01db lsls r3, r3, #7 - 1e654: f004 047f and.w r4, r4, #127 ; 0x7f - 1e658: f403 537e and.w r3, r3, #16256 ; 0x3f80 - 1e65c: ea44 0703 orr.w r7, r4, r3 + 1e726: f3c3 0640 ubfx r6, r3, #1, #1 + 1e72a: 079b lsls r3, r3, #30 + 1e72c: d4ed bmi.n 1e70a + 1e72e: 7ae3 ldrb r3, [r4, #11] + 1e730: 7b24 ldrb r4, [r4, #12] + 1e732: 01db lsls r3, r3, #7 + 1e734: f004 047f and.w r4, r4, #127 ; 0x7f + 1e738: f403 537e and.w r3, r3, #16256 ; 0x3f80 + 1e73c: ea44 0703 orr.w r7, r4, r3 if(index>0 && index>=BMC_MAX_LINKS){ - 1e660: 2f05 cmp r7, #5 - 1e662: dd09 ble.n 1e678 + 1e740: 2f05 cmp r7, #5 + 1e742: dd09 ble.n 1e758 sendNotification(BMC_NOTIFY_INVALID_LINK, index, true); - 1e664: 2301 movs r3, #1 - 1e666: 463a mov r2, r7 - 1e668: 2113 movs r1, #19 - 1e66a: 9600 str r6, [sp, #0] - 1e66c: f7fc f98c bl 1a988 -} - 1e670: f50d 7d02 add.w sp, sp, #520 ; 0x208 - 1e674: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 1e744: 2301 movs r3, #1 + 1e746: 463a mov r2, r7 + 1e748: 2113 movs r1, #19 + 1e74a: 9600 str r6, [sp, #0] + 1e74c: f7fc f98c bl 1aa68 +} + 1e750: f50d 7d02 add.w sp, sp, #520 ; 0x208 + 1e754: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} struct BMCMidiMessage { - 1e678: ac41 add r4, sp, #260 ; 0x104 + 1e758: ac41 add r4, sp, #260 ; 0x104 buff.prepareEditorMessage( - 1e67a: 2314 movs r3, #20 - 1e67c: e9cd 6700 strd r6, r7, [sp] - 1e680: 4620 mov r0, r4 - 1e682: 6026 str r6, [r4, #0] - 1e684: 7126 strb r6, [r4, #4] - 1e686: f7fc fc1d bl 1aec4 + 1e75a: 2314 movs r3, #20 + 1e75c: e9cd 6700 strd r6, r7, [sp] + 1e760: 4620 mov r0, r4 + 1e762: 6026 str r6, [r4, #0] + 1e764: 7126 strb r6, [r4, #4] + 1e766: f7fc fc1d bl 1afa4 uint16_t sysLength = size(); - 1e68a: f8b4 3003 ldrh.w r3, [r4, #3] + 1e76a: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1e76e: 2bfd cmp r3, #253 ; 0xfd + 1e770: d951 bls.n 1e816 switch(n){ - 1e692: 3f01 subs r7, #1 - 1e694: 2f04 cmp r7, #4 - 1e696: d85d bhi.n 1e754 - 1e698: e8df f007 tbb [pc, r7] - 1e69c: 3e434803 .word 0x3e434803 - 1e6a0: 39 .byte 0x39 - 1e6a1: 00 .byte 0x00 - 1e6a2: 2716 movs r7, #22 - 1e6a4: f04f 080e mov.w r8, #14 - 1e6a8: 2601 movs r6, #1 + 1e772: 3f01 subs r7, #1 + 1e774: 2f04 cmp r7, #4 + 1e776: d85d bhi.n 1e834 + 1e778: e8df f007 tbb [pc, r7] + 1e77c: 3e434803 .word 0x3e434803 + 1e780: 39 .byte 0x39 + 1e781: 00 .byte 0x00 + 1e782: 2716 movs r7, #22 + 1e784: f04f 080e mov.w r8, #14 + 1e788: 2601 movs r6, #1 buff.appendToSysEx14Bits(item.id1); - 1e6aa: 4620 mov r0, r4 - 1e6ac: 2104 movs r1, #4 - 1e6ae: f7fc fd77 bl 1b1a0 + 1e78a: 4620 mov r0, r4 + 1e78c: 2104 movs r1, #4 + 1e78e: f7fc fd77 bl 1b280 buff.appendToSysEx14Bits(item.index1); - 1e6b2: 4631 mov r1, r6 - 1e6b4: 4620 mov r0, r4 - 1e6b6: f7fc fd73 bl 1b1a0 + 1e792: 4631 mov r1, r6 + 1e794: 4620 mov r0, r4 + 1e796: f7fc fd73 bl 1b280 buff.appendToSysEx14Bits(item.id2); - 1e6ba: 4641 mov r1, r8 - 1e6bc: 4620 mov r0, r4 - 1e6be: f7fc fd6f bl 1b1a0 + 1e79a: 4641 mov r1, r8 + 1e79c: 4620 mov r0, r4 + 1e79e: f7fc fd6f bl 1b280 buff.appendToSysEx14Bits(item.index2); - 1e6c2: 4631 mov r1, r6 - 1e6c4: 4620 mov r0, r4 - 1e6c6: f7fc fd6b bl 1b1a0 + 1e7a2: 4631 mov r1, r6 + 1e7a4: 4620 mov r0, r4 + 1e7a6: f7fc fd6b bl 1b280 buff.appendToSysEx14Bits(item.id3); - 1e6ca: 4639 mov r1, r7 - 1e6cc: 4620 mov r0, r4 - 1e6ce: f7fc fd67 bl 1b1a0 + 1e7aa: 4639 mov r1, r7 + 1e7ac: 4620 mov r0, r4 + 1e7ae: f7fc fd67 bl 1b280 buff.appendToSysEx14Bits(item.index3); - 1e6d2: 4631 mov r1, r6 - 1e6d4: 4620 mov r0, r4 - 1e6d6: f7fc fd63 bl 1b1a0 + 1e7b2: 4631 mov r1, r6 + 1e7b4: 4620 mov r0, r4 + 1e7b6: f7fc fd63 bl 1b280 buff.appendToSysEx14Bits(item.id4); - 1e6da: 4620 mov r0, r4 - 1e6dc: 2100 movs r1, #0 - 1e6de: f7fc fd5f bl 1b1a0 + 1e7ba: 4620 mov r0, r4 + 1e7bc: 2100 movs r1, #0 + 1e7be: f7fc fd5f bl 1b280 buff.appendToSysEx14Bits(item.index4); - 1e6e2: 4620 mov r0, r4 - 1e6e4: 2100 movs r1, #0 - 1e6e6: f7fc fd5b bl 1b1a0 + 1e7c2: 4620 mov r0, r4 + 1e7c4: 2100 movs r1, #0 + 1e7c6: f7fc fd5b bl 1b280 sendToEditor(buff); - 1e6ea: 2301 movs r3, #1 - 1e6ec: 2100 movs r1, #0 - 1e6ee: 22f7 movs r2, #247 ; 0xf7 - 1e6f0: 4668 mov r0, sp - 1e6f2: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 - 1e6f6: a944 add r1, sp, #272 ; 0x110 - 1e6f8: f00c f806 bl 2a708 - 1e6fc: 4628 mov r0, r5 - 1e6fe: e894 000e ldmia.w r4, {r1, r2, r3} - 1e702: f7fc f8e3 bl 1a8cc -} - 1e706: f50d 7d02 add.w sp, sp, #520 ; 0x208 - 1e70a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 1e7ca: 2301 movs r3, #1 + 1e7cc: 2100 movs r1, #0 + 1e7ce: 22f7 movs r2, #247 ; 0xf7 + 1e7d0: 4668 mov r0, sp + 1e7d2: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 + 1e7d6: a944 add r1, sp, #272 ; 0x110 + 1e7d8: f00c f80a bl 2a7f0 + 1e7dc: 4628 mov r0, r5 + 1e7de: e894 000e ldmia.w r4, {r1, r2, r3} + 1e7e2: f7fc f8e3 bl 1a9ac +} + 1e7e6: f50d 7d02 add.w sp, sp, #520 ; 0x208 + 1e7ea: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} case 5: return BMC_LINK_6; - 1e70e: 270e movs r7, #14 - 1e710: f04f 0816 mov.w r8, #22 - 1e714: 2605 movs r6, #5 - 1e716: e7c8 b.n 1e6aa + 1e7ee: 270e movs r7, #14 + 1e7f0: f04f 0816 mov.w r8, #22 + 1e7f4: 2605 movs r6, #5 + 1e7f6: e7c8 b.n 1e78a case 4: return BMC_LINK_5; - 1e718: 2716 movs r7, #22 - 1e71a: f04f 080e mov.w r8, #14 - 1e71e: 2604 movs r6, #4 - 1e720: e7c3 b.n 1e6aa + 1e7f8: 2716 movs r7, #22 + 1e7fa: f04f 080e mov.w r8, #14 + 1e7fe: 2604 movs r6, #4 + 1e800: e7c3 b.n 1e78a case 3: return BMC_LINK_4; - 1e722: 2716 movs r7, #22 - 1e724: f04f 080e mov.w r8, #14 - 1e728: 2603 movs r6, #3 - 1e72a: e7be b.n 1e6aa + 1e802: 2716 movs r7, #22 + 1e804: f04f 080e mov.w r8, #14 + 1e808: 2603 movs r6, #3 + 1e80a: e7be b.n 1e78a case 2: return BMC_LINK_3; - 1e72c: 2716 movs r7, #22 - 1e72e: f04f 080e mov.w r8, #14 - 1e732: 2602 movs r6, #2 - 1e734: e7b9 b.n 1e6aa + 1e80c: 2716 movs r7, #22 + 1e80e: f04f 080e mov.w r8, #14 + 1e812: 2602 movs r6, #2 + 1e814: e7b9 b.n 1e78a sysex[sysLength++] = value; - 1e736: 1c5a adds r2, r3, #1 - 1e738: 4423 add r3, r4 + 1e816: 1c5a adds r2, r3, #1 + 1e818: 4423 add r3, r4 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1e73a: 7126 strb r6, [r4, #4] + 1e81a: 7126 strb r6, [r4, #4] setData1(value & 0xFF); - 1e73c: 70e2 strb r2, [r4, #3] + 1e81c: 70e2 strb r2, [r4, #3] sysex[sysLength++] = value; - 1e73e: 715e strb r6, [r3, #5] + 1e81e: 715e strb r6, [r3, #5] uint16_t sysLength = size(); - 1e740: f8b4 3003 ldrh.w r3, [r4, #3] + 1e820: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1e824: 2bfd cmp r3, #253 ; 0xfd + 1e826: d8a4 bhi.n 1e772 sysex[sysLength++] = value; - 1e748: 18e2 adds r2, r4, r3 - 1e74a: 3301 adds r3, #1 + 1e828: 18e2 adds r2, r4, r3 + 1e82a: 3301 adds r3, #1 setData1(value & 0xFF); - 1e74c: 70e3 strb r3, [r4, #3] + 1e82c: 70e3 strb r3, [r4, #3] sysex[sysLength++] = value; - 1e74e: 2306 movs r3, #6 - 1e750: 7153 strb r3, [r2, #5] + 1e82e: 2306 movs r3, #6 + 1e830: 7153 strb r3, [r2, #5] return true; - 1e752: e79e b.n 1e692 + 1e832: e79e b.n 1e772 switch(n){ - 1e754: 2716 movs r7, #22 - 1e756: f04f 080e mov.w r8, #14 - 1e75a: 2600 movs r6, #0 - 1e75c: e7a5 b.n 1e6aa - 1e75e: bf00 nop + 1e834: 2716 movs r7, #22 + 1e836: f04f 080e mov.w r8, #14 + 1e83a: 2600 movs r6, #0 + 1e83c: e7a5 b.n 1e78a + 1e83e: bf00 nop -0001e760 : +0001e840 : midi.globals.editorConnected() && - 1e760: 6843 ldr r3, [r0, #4] - 1e762: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1e766: 6ddb ldr r3, [r3, #92] ; 0x5c + 1e840: 6843 ldr r3, [r0, #4] + 1e842: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1e846: 6ddb ldr r3, [r3, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 1e768: 075a lsls r2, r3, #29 - 1e76a: d514 bpl.n 1e796 + 1e848: 075a lsls r2, r3, #29 + 1e84a: d514 bpl.n 1e876 void BMCEditor::incomingMessageEvent(bool write){ - 1e76c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1e770: 6bc5 ldr r5, [r0, #60] ; 0x3c - 1e772: 4604 mov r4, r0 - 1e774: ed2d 8b02 vpush {d8} - 1e778: f890 202d ldrb.w r2, [r0, #45] ; 0x2d - 1e77c: f5ad 7d07 sub.w sp, sp, #540 ; 0x21c + 1e84c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1e850: 6bc5 ldr r5, [r0, #60] ; 0x3c + 1e852: 4604 mov r4, r0 + 1e854: ed2d 8b02 vpush {d8} + 1e858: f890 202d ldrb.w r2, [r0, #45] ; 0x2d + 1e85c: f5ad 7d07 sub.w sp, sp, #540 ; 0x21c midi.globals.editorConnected() && - 1e780: 7a6b ldrb r3, [r5, #9] - 1e782: f890 702c ldrb.w r7, [r0, #44] ; 0x2c - 1e786: 4293 cmp r3, r2 - 1e788: d006 beq.n 1e798 -} - 1e78a: f50d 7d07 add.w sp, sp, #540 ; 0x21c - 1e78e: ecbd 8b02 vpop {d8} - 1e792: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1e796: 4770 bx lr + 1e860: 7a6b ldrb r3, [r5, #9] + 1e862: f890 702c ldrb.w r7, [r0, #44] ; 0x2c + 1e866: 4293 cmp r3, r2 + 1e868: d006 beq.n 1e878 +} + 1e86a: f50d 7d07 add.w sp, sp, #540 ; 0x21c + 1e86e: ecbd 8b02 vpop {d8} + 1e872: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1e876: 4770 bx lr getMessageDeviceId() == deviceId && - 1e798: 782b ldrb r3, [r5, #0] - 1e79a: 42bb cmp r3, r7 - 1e79c: d1f5 bne.n 1e78a - 1e79e: f8b5 6003 ldrh.w r6, [r5, #3] + 1e878: 782b ldrb r3, [r5, #0] + 1e87a: 42bb cmp r3, r7 + 1e87c: d1f5 bne.n 1e86a + 1e87e: f8b5 6003 ldrh.w r6, [r5, #3] incoming.peekSysEx(4) == deviceId && - 1e7a2: 2e0a cmp r6, #10 - 1e7a4: d9f1 bls.n 1e78a - 1e7a6: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 1e882: 2e0a cmp r6, #10 + 1e884: d9f1 bls.n 1e86a + 1e886: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 1e7aa: 079b lsls r3, r3, #30 - 1e7ac: d4ed bmi.n 1e78a + 1e88a: 079b lsls r3, r3, #30 + 1e88c: d4ed bmi.n 1e86a if(write && backupActive()){ - 1e7ae: b309 cbz r1, 1e7f4 - 1e7b0: f7fe fc54 bl 1d05c - 1e7b4: 4607 mov r7, r0 - 1e7b6: 2800 cmp r0, #0 - 1e7b8: f040 8196 bne.w 1eae8 + 1e88e: b309 cbz r1, 1e8d4 + 1e890: f7fe fc54 bl 1d13c + 1e894: 4607 mov r7, r0 + 1e896: 2800 cmp r0, #0 + 1e898: f040 8196 bne.w 1ebc8 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1e7bc: 7aeb ldrb r3, [r5, #11] - 1e7be: 7b2a ldrb r2, [r5, #12] - 1e7c0: 01db lsls r3, r3, #7 - 1e7c2: f002 027f and.w r2, r2, #127 ; 0x7f - 1e7c6: f403 537e and.w r3, r3, #16256 ; 0x3f80 - 1e7ca: ea42 0803 orr.w r8, r2, r3 + 1e89c: 7aeb ldrb r3, [r5, #11] + 1e89e: 7b2a ldrb r2, [r5, #12] + 1e8a0: 01db lsls r3, r3, #7 + 1e8a2: f002 027f and.w r2, r2, #127 ; 0x7f + 1e8a6: f403 537e and.w r3, r3, #16256 ; 0x3f80 + 1e8aa: ea42 0803 orr.w r8, r2, r3 if(index>0 && index>=BMC_MAX_EVENTS_LIBRARY){ - 1e7ce: f1b8 0fc7 cmp.w r8, #199 ; 0xc7 - 1e7d2: f8cd 8108 str.w r8, [sp, #264] ; 0x108 - 1e7d6: dd52 ble.n 1e87e + 1e8ae: f1b8 0fc7 cmp.w r8, #199 ; 0xc7 + 1e8b2: f8cd 8108 str.w r8, [sp, #264] ; 0x108 + 1e8b6: dd52 ble.n 1e95e sendNotification(BMC_NOTIFY_INVALID_EVENT, index, true); - 1e7d8: 2500 movs r5, #0 - 1e7da: 2301 movs r3, #1 - 1e7dc: 9a42 ldr r2, [sp, #264] ; 0x108 - 1e7de: 2105 movs r1, #5 - 1e7e0: 4620 mov r0, r4 - 1e7e2: 9500 str r5, [sp, #0] - 1e7e4: f7fc f8d0 bl 1a988 -} - 1e7e8: f50d 7d07 add.w sp, sp, #540 ; 0x21c - 1e7ec: ecbd 8b02 vpop {d8} - 1e7f0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1e7f4: 7aeb ldrb r3, [r5, #11] - 1e7f6: 7b29 ldrb r1, [r5, #12] - 1e7f8: 01db lsls r3, r3, #7 - 1e7fa: f001 017f and.w r1, r1, #127 ; 0x7f - 1e7fe: f403 537e and.w r3, r3, #16256 ; 0x3f80 - 1e802: ea41 0003 orr.w r0, r1, r3 + 1e8b8: 2500 movs r5, #0 + 1e8ba: 2301 movs r3, #1 + 1e8bc: 9a42 ldr r2, [sp, #264] ; 0x108 + 1e8be: 2105 movs r1, #5 + 1e8c0: 4620 mov r0, r4 + 1e8c2: 9500 str r5, [sp, #0] + 1e8c4: f7fc f8d0 bl 1aa68 +} + 1e8c8: f50d 7d07 add.w sp, sp, #540 ; 0x21c + 1e8cc: ecbd 8b02 vpop {d8} + 1e8d0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1e8d4: 7aeb ldrb r3, [r5, #11] + 1e8d6: 7b29 ldrb r1, [r5, #12] + 1e8d8: 01db lsls r3, r3, #7 + 1e8da: f001 017f and.w r1, r1, #127 ; 0x7f + 1e8de: f403 537e and.w r3, r3, #16256 ; 0x3f80 + 1e8e2: ea41 0003 orr.w r0, r1, r3 if(index>0 && index>=BMC_MAX_EVENTS_LIBRARY){ - 1e806: 28c7 cmp r0, #199 ; 0xc7 - 1e808: 9042 str r0, [sp, #264] ; 0x108 - 1e80a: dce5 bgt.n 1e7d8 - 1e80c: ad45 add r5, sp, #276 ; 0x114 + 1e8e6: 28c7 cmp r0, #199 ; 0xc7 + 1e8e8: 9042 str r0, [sp, #264] ; 0x108 + 1e8ea: dce5 bgt.n 1e8b8 + 1e8ec: ad45 add r5, sp, #276 ; 0x114 bmcStoreEvent& item = store.global.events[index]; - 1e80e: 9043 str r0, [sp, #268] ; 0x10c + 1e8ee: 9043 str r0, [sp, #268] ; 0x10c buff.prepareEditorMessage( - 1e810: 9b42 ldr r3, [sp, #264] ; 0x108 - 1e812: 4639 mov r1, r7 + 1e8f0: 9b42 ldr r3, [sp, #264] ; 0x108 + 1e8f2: 4639 mov r1, r7 struct BMCMidiMessage { - 1e814: 2700 movs r7, #0 - 1e816: 4628 mov r0, r5 - 1e818: 9301 str r3, [sp, #4] - 1e81a: 2310 movs r3, #16 - 1e81c: 9700 str r7, [sp, #0] - 1e81e: 602f str r7, [r5, #0] - 1e820: 712f strb r7, [r5, #4] - 1e822: f7fc fb4f bl 1aec4 + 1e8f4: 2700 movs r7, #0 + 1e8f6: 4628 mov r0, r5 + 1e8f8: 9301 str r3, [sp, #4] + 1e8fa: 2310 movs r3, #16 + 1e8fc: 9700 str r7, [sp, #0] + 1e8fe: 602f str r7, [r5, #0] + 1e900: 712f strb r7, [r5, #4] + 1e902: f7fc fb4f bl 1afa4 buff.appendToSysEx14Bits(BMC_MAX_EVENTS_LIBRARY); - 1e826: 21c8 movs r1, #200 ; 0xc8 - 1e828: 4628 mov r0, r5 - 1e82a: f7fc fcb9 bl 1b1a0 + 1e906: 21c8 movs r1, #200 ; 0xc8 + 1e908: 4628 mov r0, r5 + 1e90a: f7fc fcb9 bl 1b280 buff.appendToSysEx14Bits(item.name); - 1e82e: 9b43 ldr r3, [sp, #268] ; 0x10c - 1e830: 6826 ldr r6, [r4, #0] - 1e832: 4628 mov r0, r5 - 1e834: eb06 06c3 add.w r6, r6, r3, lsl #3 - 1e838: f896 1038 ldrb.w r1, [r6, #56] ; 0x38 - 1e83c: f7fc fcb0 bl 1b1a0 + 1e90e: 9b43 ldr r3, [sp, #268] ; 0x10c + 1e910: 6826 ldr r6, [r4, #0] + 1e912: 4628 mov r0, r5 + 1e914: eb06 06c3 add.w r6, r6, r3, lsl #3 + 1e918: f896 1038 ldrb.w r1, [r6, #56] ; 0x38 + 1e91c: f7fc fcb0 bl 1b280 buff.appendToSysEx8Bits(item.settings); - 1e840: f8b5 3003 ldrh.w r3, [r5, #3] - 1e844: f896 2039 ldrb.w r2, [r6, #57] ; 0x39 + 1e920: f8b5 3003 ldrh.w r3, [r5, #3] + 1e924: f896 2039 ldrb.w r2, [r6, #57] ; 0x39 if(sysLength + 1e928: 2bfd cmp r3, #253 ; 0xfd + 1e92a: f240 80d5 bls.w 1ead8 buff.appendToSysEx32Bits(item.event); - 1e84e: 6bf1 ldr r1, [r6, #60] ; 0x3c - 1e850: 4628 mov r0, r5 - 1e852: f7fd f8cd bl 1b9f0 + 1e92e: 6bf1 ldr r1, [r6, #60] ; 0x3c + 1e930: 4628 mov r0, r5 + 1e932: f7fd f8cd bl 1bad0 sendToEditor(buff); - 1e856: 2301 movs r3, #1 - 1e858: 2000 movs r0, #0 - 1e85a: a948 add r1, sp, #288 ; 0x120 - 1e85c: 22f7 movs r2, #247 ; 0xf7 - 1e85e: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 - 1e862: 4668 mov r0, sp - 1e864: f00b ff50 bl 2a708 - 1e868: 4620 mov r0, r4 - 1e86a: e895 000e ldmia.w r5, {r1, r2, r3} - 1e86e: f7fc f82d bl 1a8cc -} - 1e872: f50d 7d07 add.w sp, sp, #540 ; 0x21c - 1e876: ecbd 8b02 vpop {d8} - 1e87a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1e936: 2301 movs r3, #1 + 1e938: 2000 movs r0, #0 + 1e93a: a948 add r1, sp, #288 ; 0x120 + 1e93c: 22f7 movs r2, #247 ; 0xf7 + 1e93e: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 + 1e942: 4668 mov r0, sp + 1e944: f00b ff54 bl 2a7f0 + 1e948: 4620 mov r0, r4 + 1e94a: e895 000e ldmia.w r5, {r1, r2, r3} + 1e94e: f7fc f82d bl 1a9ac +} + 1e952: f50d 7d07 add.w sp, sp, #540 ; 0x21c + 1e956: ecbd 8b02 vpop {d8} + 1e95a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(write && incoming.size() != sysExLength){ - 1e87e: 2e18 cmp r6, #24 - 1e880: f040 80fc bne.w 1ea7c + 1e95e: 2e18 cmp r6, #24 + 1e960: f040 80fc bne.w 1eb5c return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1e884: 7bea ldrb r2, [r5, #15] - 1e886: 6823 ldr r3, [r4, #0] - 1e888: 7ba9 ldrb r1, [r5, #14] - 1e88a: f002 027f and.w r2, r2, #127 ; 0x7f - 1e88e: eb03 03c8 add.w r3, r3, r8, lsl #3 + 1e964: 7bea ldrb r2, [r5, #15] + 1e966: 6823 ldr r3, [r4, #0] + 1e968: 7ba9 ldrb r1, [r5, #14] + 1e96a: f002 027f and.w r2, r2, #127 ; 0x7f + 1e96e: eb03 03c8 add.w r3, r3, r8, lsl #3 bmcStoreEvent& item = store.global.events[index]; - 1e892: f8cd 810c str.w r8, [sp, #268] ; 0x10c - 1e896: ea42 12c1 orr.w r2, r2, r1, lsl #7 + 1e972: f8cd 810c str.w r8, [sp, #268] ; 0x10c + 1e976: ea42 12c1 orr.w r2, r2, r1, lsl #7 item.name = incoming.get14Bits(9); - 1e89a: f883 2038 strb.w r2, [r3, #56] ; 0x38 + 1e97a: f883 2038 strb.w r2, [r3, #56] ; 0x38 if((t_offset+1) < size()){ - 1e89e: f8b5 2003 ldrh.w r2, [r5, #3] - 1e8a2: 2a0c cmp r2, #12 - 1e8a4: f200 80f2 bhi.w 1ea8c + 1e97e: f8b5 2003 ldrh.w r2, [r5, #3] + 1e982: 2a0c cmp r2, #12 + 1e984: f200 80f2 bhi.w 1eb6c return 0; - 1e8a8: 2200 movs r2, #0 + 1e988: 2200 movs r2, #0 item.settings = incoming.get8Bits(11); - 1e8aa: f883 2039 strb.w r2, [r3, #57] ; 0x39 + 1e98a: f883 2039 strb.w r2, [r3, #57] ; 0x39 if((t_offset+1) < size()){ - 1e8ae: f8b5 2003 ldrh.w r2, [r5, #3] - 1e8b2: 2a0e cmp r2, #14 - 1e8b4: f200 8110 bhi.w 1ead8 + 1e98e: f8b5 2003 ldrh.w r2, [r5, #3] + 1e992: 2a0e cmp r2, #14 + 1e994: f200 8110 bhi.w 1ebb8 return 0; - 1e8b8: 2200 movs r2, #0 + 1e998: 2200 movs r2, #0 item.type = incoming.get8Bits(13); - 1e8ba: f883 203a strb.w r2, [r3, #58] ; 0x3a + 1e99a: f883 203a strb.w r2, [r3, #58] ; 0x3a if((t_offset+1) < size()){ - 1e8be: f8b5 2003 ldrh.w r2, [r5, #3] - 1e8c2: 2a10 cmp r2, #16 - 1e8c4: f200 8100 bhi.w 1eac8 + 1e99e: f8b5 2003 ldrh.w r2, [r5, #3] + 1e9a2: 2a10 cmp r2, #16 + 1e9a4: f200 8100 bhi.w 1eba8 return 0; - 1e8c8: 2200 movs r2, #0 + 1e9a8: 2200 movs r2, #0 item.ports = incoming.get8Bits(15); - 1e8ca: f883 203b strb.w r2, [r3, #59] ; 0x3b + 1e9aa: f883 203b strb.w r2, [r3, #59] ; 0x3b if((t_offset+4) < size()){ - 1e8ce: f8b5 2003 ldrh.w r2, [r5, #3] - 1e8d2: 2a15 cmp r2, #21 - 1e8d4: f200 80e2 bhi.w 1ea9c + 1e9ae: f8b5 2003 ldrh.w r2, [r5, #3] + 1e9b2: 2a15 cmp r2, #21 + 1e9b4: f200 80e2 bhi.w 1eb7c return 0; - 1e8d8: 2200 movs r2, #0 + 1e9b8: 2200 movs r2, #0 item.event = incoming.get32Bits(17); - 1e8da: 63da str r2, [r3, #60] ; 0x3c + 1e9ba: 63da str r2, [r3, #60] ; 0x3c uint16_t address = getGlobalOffset(); - 1e8dc: 4620 mov r0, r4 - 1e8de: f7fb ff7f bl 1a7e0 + 1e9bc: 4620 mov r0, r4 + 1e9be: f7fb ff7f bl 1a8c0 address += getEventsOffset(index); - 1e8e2: 9942 ldr r1, [sp, #264] ; 0x108 + 1e9c2: 9942 ldr r1, [sp, #264] ; 0x108 uint16_t address = getGlobalOffset(); - 1e8e4: b287 uxth r7, r0 + 1e9c4: b287 uxth r7, r0 address += getEventsOffset(index); - 1e8e6: 4620 mov r0, r4 - 1e8e8: f7fb ff82 bl 1a7f0 + 1e9c6: 4620 mov r0, r4 + 1e9c8: f7fb ff82 bl 1a8d0 storage.set(address, store.global.events[index]); - 1e8ec: f108 0307 add.w r3, r8, #7 - 1e8f0: 46a0 mov r8, r4 + 1e9cc: f108 0307 add.w r3, r8, #7 + 1e9d0: 46a0 mov r8, r4 address += getEventsOffset(index); - 1e8f2: 4407 add r7, r0 + 1e9d2: 4407 add r7, r0 storage.set(address, store.global.events[index]); - 1e8f4: f104 000c add.w r0, r4, #12 + 1e9d4: f104 000c add.w r0, r4, #12 debugStartTiming("Updating"); - 1e8f8: 4980 ldr r1, [pc, #512] ; (1eafc ) - 1e8fa: f858 6b10 ldr.w r6, [r8], #16 + 1e9d8: 4980 ldr r1, [pc, #512] ; (1ebdc ) + 1e9da: f858 6b10 ldr.w r6, [r8], #16 address += getEventsOffset(index); - 1e8fe: b2bf uxth r7, r7 + 1e9de: b2bf uxth r7, r7 storage.set(address, store.global.events[index]); - 1e900: ee08 0a10 vmov s16, r0 - 1e904: f8df a210 ldr.w sl, [pc, #528] ; 1eb18 - 1e908: eb06 06c3 add.w r6, r6, r3, lsl #3 + 1e9e0: ee08 0a10 vmov s16, r0 + 1e9e4: f8df a210 ldr.w sl, [pc, #528] ; 1ebf8 + 1e9e8: eb06 06c3 add.w r6, r6, r3, lsl #3 template void set(uint16_t address, const T& file){ - 1e90c: f107 0901 add.w r9, r7, #1 + 1e9ec: f107 0901 add.w r9, r7, #1 debugStartTiming("Updating"); - 1e910: f7fd fb10 bl 1bf34 - 1e914: 210e movs r1, #14 - 1e916: 487a ldr r0, [pc, #488] ; (1eb00 ) + 1e9f0: f7fd fb10 bl 1c014 + 1e9f4: 210e movs r1, #14 + 1e9f6: 487a ldr r0, [pc, #488] ; (1ebe0 ) unsigned long updatedBytes = 0; - 1e918: f04f 0b00 mov.w fp, #0 - 1e91c: f00d fe14 bl 2c548 + 1e9f8: f04f 0b00 mov.w fp, #0 + 1e9fc: f00d fe18 bl 2c630 unsigned long n = sizeof(value)+start; - 1e920: f107 0308 add.w r3, r7, #8 - 1e924: ad45 add r5, sp, #276 ; 0x114 - 1e926: 1bbf subs r7, r7, r6 - 1e928: 4599 cmp r9, r3 - 1e92a: bf8c ite hi - 1e92c: f04f 0901 movhi.w r9, #1 - 1e930: f04f 0908 movls.w r9, #8 - 1e934: f8da 3000 ldr.w r3, [sl] - 1e938: 44b1 add r9, r6 - 1e93a: 6223 str r3, [r4, #32] + 1ea00: f107 0308 add.w r3, r7, #8 + 1ea04: ad45 add r5, sp, #276 ; 0x114 + 1ea06: 1bbf subs r7, r7, r6 + 1ea08: 4599 cmp r9, r3 + 1ea0a: bf8c ite hi + 1ea0c: f04f 0901 movhi.w r9, #1 + 1ea10: f04f 0908 movls.w r9, #8 + 1ea14: f8da 3000 ldr.w r3, [sl] + 1ea18: 44b1 add r9, r6 + 1ea1a: 6223 str r3, [r4, #32] for(i=start;i - 1e93e: f8da 3000 ldr.w r3, [sl] + 1ea1c: e007 b.n 1ea2e + 1ea1e: f8da 3000 ldr.w r3, [sl] operator unsigned long () const { return millis() - ms; } - 1e942: 6a22 ldr r2, [r4, #32] - 1e944: 1a9b subs r3, r3, r2 + 1ea22: 6a22 ldr r2, [r4, #32] + 1ea24: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1e946: 2bf9 cmp r3, #249 ; 0xf9 - 1e948: d81a bhi.n 1e980 + 1ea26: 2bf9 cmp r3, #249 ; 0xf9 + 1ea28: d81a bhi.n 1ea60 for(i=start;i - 1e94e: 19f1 adds r1, r6, r7 + 1ea2a: 454e cmp r6, r9 + 1ea2c: d021 beq.n 1ea72 + 1ea2e: 19f1 adds r1, r6, r7 updatedBytes += update(i,*p++); - 1e950: f816 3b01 ldrb.w r3, [r6], #1 + 1ea30: f816 3b01 ldrb.w r3, [r6], #1 if(read(addr) != value){ - 1e954: 4640 mov r0, r8 - 1e956: 702b strb r3, [r5, #0] - 1e958: 9141 str r1, [sp, #260] ; 0x104 - 1e95a: f006 fbf7 bl 2514c - 1e95e: 782b ldrb r3, [r5, #0] - 1e960: 9941 ldr r1, [sp, #260] ; 0x104 - 1e962: 4298 cmp r0, r3 - 1e964: d0eb beq.n 1e93e + 1ea34: 4640 mov r0, r8 + 1ea36: 702b strb r3, [r5, #0] + 1ea38: 9141 str r1, [sp, #260] ; 0x104 + 1ea3a: f006 fbfd bl 25238 + 1ea3e: 782b ldrb r3, [r5, #0] + 1ea40: 9941 ldr r1, [sp, #260] ; 0x104 + 1ea42: 4298 cmp r0, r3 + 1ea44: d0eb beq.n 1ea1e write(addr, &value, 1); - 1e966: 2301 movs r3, #1 - 1e968: 462a mov r2, r5 - 1e96a: 4640 mov r0, r8 + 1ea46: 2301 movs r3, #1 + 1ea48: 462a mov r2, r5 + 1ea4a: 4640 mov r0, r8 updatedBytes += update(i,*p++); - 1e96c: f10b 0b01 add.w fp, fp, #1 + 1ea4c: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 1e970: f006 fae2 bl 24f38 - 1e974: f8da 3000 ldr.w r3, [sl] - 1e978: 6a22 ldr r2, [r4, #32] - 1e97a: 1a9b subs r3, r3, r2 + 1ea50: f006 fae8 bl 25024 + 1ea54: f8da 3000 ldr.w r3, [sl] + 1ea58: 6a22 ldr r2, [r4, #32] + 1ea5a: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1e97c: 2bf9 cmp r3, #249 ; 0xf9 - 1e97e: d9e4 bls.n 1e94a - 1e980: 2101 movs r1, #1 - 1e982: 4860 ldr r0, [pc, #384] ; (1eb04 ) - 1e984: f00d fde0 bl 2c548 - 1e988: f8da 3000 ldr.w r3, [sl] + 1ea5c: 2bf9 cmp r3, #249 ; 0xf9 + 1ea5e: d9e4 bls.n 1ea2a + 1ea60: 2101 movs r1, #1 + 1ea62: 4860 ldr r0, [pc, #384] ; (1ebe4 ) + 1ea64: f00d fde4 bl 2c630 + 1ea68: f8da 3000 ldr.w r3, [sl] for(i=start;i - 1e992: 2101 movs r1, #1 - 1e994: 485b ldr r0, [pc, #364] ; (1eb04 ) - 1e996: f00d fdd7 bl 2c548 - 1e99a: 485b ldr r0, [pc, #364] ; (1eb08 ) - 1e99c: f00b fa6a bl 29e74 - 1e9a0: 2109 movs r1, #9 - 1e9a2: 485a ldr r0, [pc, #360] ; (1eb0c ) - 1e9a4: f00d fdd0 bl 2c548 - 1e9a8: 2101 movs r1, #1 - 1e9aa: 4859 ldr r0, [pc, #356] ; (1eb10 ) - 1e9ac: f00d fdcc bl 2c548 + 1ea6e: 6223 str r3, [r4, #32] + 1ea70: d1dd bne.n 1ea2e + 1ea72: 2101 movs r1, #1 + 1ea74: 485b ldr r0, [pc, #364] ; (1ebe4 ) + 1ea76: f00d fddb bl 2c630 + 1ea7a: 485b ldr r0, [pc, #364] ; (1ebe8 ) + 1ea7c: f00b fa70 bl 29f60 + 1ea80: 2109 movs r1, #9 + 1ea82: 485a ldr r0, [pc, #360] ; (1ebec ) + 1ea84: f00d fdd4 bl 2c630 + 1ea88: 2101 movs r1, #1 + 1ea8a: 4859 ldr r0, [pc, #356] ; (1ebf0 ) + 1ea8c: f00d fdd0 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1e9b0: 2300 movs r3, #0 - 1e9b2: 220a movs r2, #10 - 1e9b4: 4659 mov r1, fp - 1e9b6: 4854 ldr r0, [pc, #336] ; (1eb08 ) - 1e9b8: f00b fa78 bl 29eac - 1e9bc: 2101 movs r1, #1 - 1e9be: 4854 ldr r0, [pc, #336] ; (1eb10 ) - 1e9c0: f00d fdc2 bl 2c548 - 1e9c4: 2105 movs r1, #5 - 1e9c6: 4853 ldr r0, [pc, #332] ; (1eb14 ) - 1e9c8: f00d fdbe bl 2c548 + 1ea90: 2300 movs r3, #0 + 1ea92: 220a movs r2, #10 + 1ea94: 4659 mov r1, fp + 1ea96: 4854 ldr r0, [pc, #336] ; (1ebe8 ) + 1ea98: f00b fa7e bl 29f98 + 1ea9c: 2101 movs r1, #1 + 1ea9e: 4854 ldr r0, [pc, #336] ; (1ebf0 ) + 1eaa0: f00d fdc6 bl 2c630 + 1eaa4: 2105 movs r1, #5 + 1eaa6: 4853 ldr r0, [pc, #332] ; (1ebf4 ) + 1eaa8: f00d fdc2 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1e9cc: 484e ldr r0, [pc, #312] ; (1eb08 ) - 1e9ce: f00b fa51 bl 29e74 + 1eaac: 484e ldr r0, [pc, #312] ; (1ebe8 ) + 1eaae: f00b fa57 bl 29f60 debugStopTiming(); - 1e9d2: ee18 0a10 vmov r0, s16 - 1e9d6: f7fd fae7 bl 1bfa8 + 1eab2: ee18 0a10 vmov r0, s16 + 1eab6: f7fd fae7 bl 1c088 if(midi.globals.editorConnected()){ - 1e9da: 6863 ldr r3, [r4, #4] - 1e9dc: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1e9e0: 6ddb ldr r3, [r3, #92] ; 0x5c - 1e9e2: 075b lsls r3, r3, #29 - 1e9e4: d503 bpl.n 1e9ee + 1eaba: 6863 ldr r3, [r4, #4] + 1eabc: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1eac0: 6ddb ldr r3, [r3, #92] ; 0x5c + 1eac2: 075b lsls r3, r3, #29 + 1eac4: d503 bpl.n 1eace bitSet(flags, bit); - 1e9e6: 6b23 ldr r3, [r4, #48] ; 0x30 - 1e9e8: f043 0304 orr.w r3, r3, #4 - 1e9ec: 6323 str r3, [r4, #48] ; 0x30 + 1eac6: 6b23 ldr r3, [r4, #48] ; 0x30 + 1eac8: f043 0304 orr.w r3, r3, #4 + 1eacc: 6323 str r3, [r4, #48] ; 0x30 buff.prepareEditorMessage( - 1e9ee: f894 702c ldrb.w r7, [r4, #44] ; 0x2c - 1e9f2: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 1eace: f894 702c ldrb.w r7, [r4, #44] ; 0x2c + 1ead2: f894 202d ldrb.w r2, [r4, #45] ; 0x2d } - 1e9f6: e70b b.n 1e810 + 1ead6: e70b b.n 1e8f0 sysex[sysLength++] = value; - 1e9f8: 18e9 adds r1, r5, r3 + 1ead8: 18e9 adds r1, r5, r3 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 1e9fa: 09d0 lsrs r0, r2, #7 + 1eada: 09d0 lsrs r0, r2, #7 sysex[sysLength++] = value; - 1e9fc: 3301 adds r3, #1 + 1eadc: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1e9fe: f002 027f and.w r2, r2, #127 ; 0x7f + 1eade: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1ea02: 7148 strb r0, [r1, #5] + 1eae2: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1ea04: 70eb strb r3, [r5, #3] + 1eae4: 70eb strb r3, [r5, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1ea06: 712f strb r7, [r5, #4] + 1eae6: 712f strb r7, [r5, #4] uint16_t sysLength = size(); - 1ea08: f8b5 3003 ldrh.w r3, [r5, #3] + 1eae8: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 1eaec: 2bfd cmp r3, #253 ; 0xfd + 1eaee: f63f af1e bhi.w 1e92e sysex[sysLength++] = value; - 1ea12: 18e9 adds r1, r5, r3 - 1ea14: 3301 adds r3, #1 - 1ea16: 714a strb r2, [r1, #5] + 1eaf2: 18e9 adds r1, r5, r3 + 1eaf4: 3301 adds r3, #1 + 1eaf6: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1ea18: 70eb strb r3, [r5, #3] + 1eaf8: 70eb strb r3, [r5, #3] buff.appendToSysEx8Bits(item.type); - 1ea1a: f8b5 3003 ldrh.w r3, [r5, #3] - 1ea1e: f896 203a ldrb.w r2, [r6, #58] ; 0x3a + 1eafa: f8b5 3003 ldrh.w r3, [r5, #3] + 1eafe: f896 203a ldrb.w r2, [r6, #58] ; 0x3a if(sysLength + 1eb08: f63f af11 bhi.w 1e92e sysex[sysLength++] = value; - 1ea2c: 18e9 adds r1, r5, r3 - 1ea2e: 3301 adds r3, #1 + 1eb0c: 18e9 adds r1, r5, r3 + 1eb0e: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1ea30: f002 027f and.w r2, r2, #127 ; 0x7f + 1eb10: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1ea34: 7148 strb r0, [r1, #5] + 1eb14: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1ea36: 70eb strb r3, [r5, #3] + 1eb16: 70eb strb r3, [r5, #3] uint16_t sysLength = size(); - 1ea38: f8b5 3003 ldrh.w r3, [r5, #3] + 1eb18: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 1eb1c: 2bfd cmp r3, #253 ; 0xfd + 1eb1e: f63f af06 bhi.w 1e92e sysex[sysLength++] = value; - 1ea42: 18e9 adds r1, r5, r3 - 1ea44: 3301 adds r3, #1 - 1ea46: 714a strb r2, [r1, #5] + 1eb22: 18e9 adds r1, r5, r3 + 1eb24: 3301 adds r3, #1 + 1eb26: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1ea48: 70eb strb r3, [r5, #3] + 1eb28: 70eb strb r3, [r5, #3] buff.appendToSysEx8Bits(item.ports); - 1ea4a: f8b5 3003 ldrh.w r3, [r5, #3] - 1ea4e: f896 203b ldrb.w r2, [r6, #59] ; 0x3b + 1eb2a: f8b5 3003 ldrh.w r3, [r5, #3] + 1eb2e: f896 203b ldrb.w r2, [r6, #59] ; 0x3b if(sysLength + 1eb38: f63f aef9 bhi.w 1e92e sysex[sysLength++] = value; - 1ea5c: 18e9 adds r1, r5, r3 - 1ea5e: 3301 adds r3, #1 + 1eb3c: 18e9 adds r1, r5, r3 + 1eb3e: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1ea60: f002 027f and.w r2, r2, #127 ; 0x7f + 1eb40: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 1ea64: 7148 strb r0, [r1, #5] + 1eb44: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1ea66: 70eb strb r3, [r5, #3] + 1eb46: 70eb strb r3, [r5, #3] uint16_t sysLength = size(); - 1ea68: f8b5 3003 ldrh.w r3, [r5, #3] + 1eb48: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 1eb4c: 2bfd cmp r3, #253 ; 0xfd + 1eb4e: f63f aeee bhi.w 1e92e sysex[sysLength++] = value; - 1ea72: 18e9 adds r1, r5, r3 - 1ea74: 3301 adds r3, #1 - 1ea76: 714a strb r2, [r1, #5] + 1eb52: 18e9 adds r1, r5, r3 + 1eb54: 3301 adds r3, #1 + 1eb56: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 1ea78: 70eb strb r3, [r5, #3] + 1eb58: 70eb strb r3, [r5, #3] return true; - 1ea7a: e6e8 b.n 1e84e + 1eb5a: e6e8 b.n 1e92e sendNotification(BMC_NOTIFY_INVALID_SIZE, sysExLength, true); - 1ea7c: 2301 movs r3, #1 - 1ea7e: 2218 movs r2, #24 - 1ea80: 210a movs r1, #10 - 1ea82: 4620 mov r0, r4 - 1ea84: 9700 str r7, [sp, #0] - 1ea86: f7fb ff7f bl 1a988 + 1eb5c: 2301 movs r3, #1 + 1eb5e: 2218 movs r2, #24 + 1eb60: 210a movs r1, #10 + 1eb62: 4620 mov r0, r4 + 1eb64: 9700 str r7, [sp, #0] + 1eb66: f7fb ff7f bl 1aa68 return; - 1ea8a: e67e b.n 1e78a + 1eb6a: e67e b.n 1e86a return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 1ea8c: 7c6a ldrb r2, [r5, #17] - 1ea8e: 7c29 ldrb r1, [r5, #16] - 1ea90: f002 027f and.w r2, r2, #127 ; 0x7f - 1ea94: ea42 12c1 orr.w r2, r2, r1, lsl #7 - 1ea98: b2d2 uxtb r2, r2 - 1ea9a: e706 b.n 1e8aa + 1eb6c: 7c6a ldrb r2, [r5, #17] + 1eb6e: 7c29 ldrb r1, [r5, #16] + 1eb70: f002 027f and.w r2, r2, #127 ; 0x7f + 1eb74: ea42 12c1 orr.w r2, r2, r1, lsl #7 + 1eb78: b2d2 uxtb r2, r2 + 1eb7a: e706 b.n 1e98a return BMC_MIDI_ARRAY_TO_32BITS(t_offset, sysex) & BMC_MASK_32; - 1ea9c: 7eaa ldrb r2, [r5, #26] - 1ea9e: 7e69 ldrb r1, [r5, #25] - 1eaa0: 7da8 ldrb r0, [r5, #22] - 1eaa2: f002 027f and.w r2, r2, #127 ; 0x7f - 1eaa6: 01c9 lsls r1, r1, #7 - 1eaa8: ea42 7200 orr.w r2, r2, r0, lsl #28 - 1eaac: 7e28 ldrb r0, [r5, #24] - 1eaae: f401 517e and.w r1, r1, #16256 ; 0x3f80 - 1eab2: 0380 lsls r0, r0, #14 - 1eab4: 430a orrs r2, r1 - 1eab6: 7de9 ldrb r1, [r5, #23] - 1eab8: f400 10fe and.w r0, r0, #2080768 ; 0x1fc000 - 1eabc: 0549 lsls r1, r1, #21 - 1eabe: 4302 orrs r2, r0 - 1eac0: f001 617e and.w r1, r1, #266338304 ; 0xfe00000 - 1eac4: 430a orrs r2, r1 - 1eac6: e708 b.n 1e8da + 1eb7c: 7eaa ldrb r2, [r5, #26] + 1eb7e: 7e69 ldrb r1, [r5, #25] + 1eb80: 7da8 ldrb r0, [r5, #22] + 1eb82: f002 027f and.w r2, r2, #127 ; 0x7f + 1eb86: 01c9 lsls r1, r1, #7 + 1eb88: ea42 7200 orr.w r2, r2, r0, lsl #28 + 1eb8c: 7e28 ldrb r0, [r5, #24] + 1eb8e: f401 517e and.w r1, r1, #16256 ; 0x3f80 + 1eb92: 0380 lsls r0, r0, #14 + 1eb94: 430a orrs r2, r1 + 1eb96: 7de9 ldrb r1, [r5, #23] + 1eb98: f400 10fe and.w r0, r0, #2080768 ; 0x1fc000 + 1eb9c: 0549 lsls r1, r1, #21 + 1eb9e: 4302 orrs r2, r0 + 1eba0: f001 617e and.w r1, r1, #266338304 ; 0xfe00000 + 1eba4: 430a orrs r2, r1 + 1eba6: e708 b.n 1e9ba return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 1eac8: 7d6a ldrb r2, [r5, #21] - 1eaca: 7d29 ldrb r1, [r5, #20] - 1eacc: f002 027f and.w r2, r2, #127 ; 0x7f - 1ead0: ea42 12c1 orr.w r2, r2, r1, lsl #7 - 1ead4: b2d2 uxtb r2, r2 - 1ead6: e6f8 b.n 1e8ca - 1ead8: 7cea ldrb r2, [r5, #19] - 1eada: 7ca9 ldrb r1, [r5, #18] - 1eadc: f002 027f and.w r2, r2, #127 ; 0x7f - 1eae0: ea42 12c1 orr.w r2, r2, r1, lsl #7 - 1eae4: b2d2 uxtb r2, r2 - 1eae6: e6e8 b.n 1e8ba + 1eba8: 7d6a ldrb r2, [r5, #21] + 1ebaa: 7d29 ldrb r1, [r5, #20] + 1ebac: f002 027f and.w r2, r2, #127 ; 0x7f + 1ebb0: ea42 12c1 orr.w r2, r2, r1, lsl #7 + 1ebb4: b2d2 uxtb r2, r2 + 1ebb6: e6f8 b.n 1e9aa + 1ebb8: 7cea ldrb r2, [r5, #19] + 1ebba: 7ca9 ldrb r1, [r5, #18] + 1ebbc: f002 027f and.w r2, r2, #127 ; 0x7f + 1ebc0: ea42 12c1 orr.w r2, r2, r1, lsl #7 + 1ebc4: b2d2 uxtb r2, r2 + 1ebc6: e6e8 b.n 1e99a backupEventMessage(sysExLength); - 1eae8: 2118 movs r1, #24 - 1eaea: 4620 mov r0, r4 + 1ebc8: 2118 movs r1, #24 + 1ebca: 4620 mov r0, r4 } - 1eaec: f50d 7d07 add.w sp, sp, #540 ; 0x21c - 1eaf0: ecbd 8b02 vpop {d8} - 1eaf4: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1ebcc: f50d 7d07 add.w sp, sp, #540 ; 0x21c + 1ebd0: ecbd 8b02 vpop {d8} + 1ebd4: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} backupEventMessage(sysExLength); - 1eaf8: f7fa bb2c b.w 19154 - 1eafc: 20003e04 .word 0x20003e04 - 1eb00: 20003e1c .word 0x20003e1c - 1eb04: 200030b8 .word 0x200030b8 - 1eb08: 20004ba8 .word 0x20004ba8 - 1eb0c: 20003e2c .word 0x20003e2c - 1eb10: 200023ec .word 0x200023ec - 1eb14: 20002448 .word 0x20002448 - 1eb18: 2000bae8 .word 0x2000bae8 - -0001eb1c : + 1ebd8: f7fa bb2e b.w 19238 + 1ebdc: 20003ec4 .word 0x20003ec4 + 1ebe0: 20003edc .word 0x20003edc + 1ebe4: 20003150 .word 0x20003150 + 1ebe8: 20004c68 .word 0x20004c68 + 1ebec: 20003eec .word 0x20003eec + 1ebf0: 200023ec .word 0x200023ec + 1ebf4: 20002448 .word 0x20002448 + 1ebf8: 2000bb08 .word 0x2000bb08 + +0001ebfc : midi.globals.editorConnected() && - 1eb1c: 6843 ldr r3, [r0, #4] + 1ebfc: 6843 ldr r3, [r0, #4] return bitRead(flags, bit); - 1eb1e: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1eb22: 6ddb ldr r3, [r3, #92] ; 0x5c + 1ebfe: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1ec02: 6ddb ldr r3, [r3, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 1eb24: 075a lsls r2, r3, #29 - 1eb26: d514 bpl.n 1eb52 + 1ec04: 075a lsls r2, r3, #29 + 1ec06: d514 bpl.n 1ec32 void BMCEditor::incomingMessageName(bool write){ - 1eb28: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1eb2c: 6bc4 ldr r4, [r0, #60] ; 0x3c - 1eb2e: 4605 mov r5, r0 - 1eb30: ed2d 8b02 vpush {d8} - 1eb34: f890 202d ldrb.w r2, [r0, #45] ; 0x2d - 1eb38: f5ad 7d07 sub.w sp, sp, #540 ; 0x21c + 1ec08: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1ec0c: 6bc4 ldr r4, [r0, #60] ; 0x3c + 1ec0e: 4605 mov r5, r0 + 1ec10: ed2d 8b02 vpush {d8} + 1ec14: f890 202d ldrb.w r2, [r0, #45] ; 0x2d + 1ec18: f5ad 7d07 sub.w sp, sp, #540 ; 0x21c midi.globals.editorConnected() && - 1eb3c: 7a63 ldrb r3, [r4, #9] - 1eb3e: f890 602c ldrb.w r6, [r0, #44] ; 0x2c - 1eb42: 4293 cmp r3, r2 - 1eb44: d006 beq.n 1eb54 -} - 1eb46: f50d 7d07 add.w sp, sp, #540 ; 0x21c - 1eb4a: ecbd 8b02 vpop {d8} - 1eb4e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1eb52: 4770 bx lr + 1ec1c: 7a63 ldrb r3, [r4, #9] + 1ec1e: f890 602c ldrb.w r6, [r0, #44] ; 0x2c + 1ec22: 4293 cmp r3, r2 + 1ec24: d006 beq.n 1ec34 +} + 1ec26: f50d 7d07 add.w sp, sp, #540 ; 0x21c + 1ec2a: ecbd 8b02 vpop {d8} + 1ec2e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1ec32: 4770 bx lr getMessageDeviceId() == deviceId && - 1eb54: 7823 ldrb r3, [r4, #0] - 1eb56: 42b3 cmp r3, r6 - 1eb58: d1f5 bne.n 1eb46 - 1eb5a: f8b4 7003 ldrh.w r7, [r4, #3] + 1ec34: 7823 ldrb r3, [r4, #0] + 1ec36: 42b3 cmp r3, r6 + 1ec38: d1f5 bne.n 1ec26 + 1ec3a: f8b4 7003 ldrh.w r7, [r4, #3] incoming.peekSysEx(4) == deviceId && - 1eb5e: 2f0a cmp r7, #10 - 1eb60: d9f1 bls.n 1eb46 - 1eb62: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 1ec3e: 2f0a cmp r7, #10 + 1ec40: d9f1 bls.n 1ec26 + 1ec42: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 1eb66: 079b lsls r3, r3, #30 - 1eb68: d4ed bmi.n 1eb46 + 1ec46: 079b lsls r3, r3, #30 + 1ec48: d4ed bmi.n 1ec26 if(write && backupActive()){ - 1eb6a: b1f9 cbz r1, 1ebac - 1eb6c: f7fe fa76 bl 1d05c - 1eb70: 4606 mov r6, r0 - 1eb72: 2800 cmp r0, #0 - 1eb74: f040 812c bne.w 1edd0 + 1ec4a: b1f9 cbz r1, 1ec8c + 1ec4c: f7fe fa76 bl 1d13c + 1ec50: 4606 mov r6, r0 + 1ec52: 2800 cmp r0, #0 + 1ec54: f040 812c bne.w 1eeb0 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1eb78: 7ae2 ldrb r2, [r4, #11] - 1eb7a: 7b21 ldrb r1, [r4, #12] - 1eb7c: 01d2 lsls r2, r2, #7 - 1eb7e: f001 017f and.w r1, r1, #127 ; 0x7f - 1eb82: f402 527e and.w r2, r2, #16256 ; 0x3f80 - 1eb86: ea41 0302 orr.w r3, r1, r2 + 1ec58: 7ae2 ldrb r2, [r4, #11] + 1ec5a: 7b21 ldrb r1, [r4, #12] + 1ec5c: 01d2 lsls r2, r2, #7 + 1ec5e: f001 017f and.w r1, r1, #127 ; 0x7f + 1ec62: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 1ec66: ea41 0302 orr.w r3, r1, r2 if(index>0 && index>=BMC_MAX_NAMES_LIBRARY){ - 1eb8a: 2b7f cmp r3, #127 ; 0x7f - 1eb8c: 9342 str r3, [sp, #264] ; 0x108 - 1eb8e: dd6f ble.n 1ec70 + 1ec6a: 2b7f cmp r3, #127 ; 0x7f + 1ec6c: 9342 str r3, [sp, #264] ; 0x108 + 1ec6e: dd6f ble.n 1ed50 sendNotification(BMC_NOTIFY_INVALID_NAME, index, true); - 1eb90: 2400 movs r4, #0 - 1eb92: 2301 movs r3, #1 - 1eb94: 9a42 ldr r2, [sp, #264] ; 0x108 - 1eb96: 2106 movs r1, #6 - 1eb98: 4628 mov r0, r5 - 1eb9a: 9400 str r4, [sp, #0] - 1eb9c: f7fb fef4 bl 1a988 -} - 1eba0: f50d 7d07 add.w sp, sp, #540 ; 0x21c - 1eba4: ecbd 8b02 vpop {d8} - 1eba8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1ebac: 7ae0 ldrb r0, [r4, #11] - 1ebae: 7b21 ldrb r1, [r4, #12] - 1ebb0: 01c0 lsls r0, r0, #7 - 1ebb2: f001 017f and.w r1, r1, #127 ; 0x7f - 1ebb6: f400 507e and.w r0, r0, #16256 ; 0x3f80 - 1ebba: ea41 0300 orr.w r3, r1, r0 + 1ec70: 2400 movs r4, #0 + 1ec72: 2301 movs r3, #1 + 1ec74: 9a42 ldr r2, [sp, #264] ; 0x108 + 1ec76: 2106 movs r1, #6 + 1ec78: 4628 mov r0, r5 + 1ec7a: 9400 str r4, [sp, #0] + 1ec7c: f7fb fef4 bl 1aa68 +} + 1ec80: f50d 7d07 add.w sp, sp, #540 ; 0x21c + 1ec84: ecbd 8b02 vpop {d8} + 1ec88: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1ec8c: 7ae0 ldrb r0, [r4, #11] + 1ec8e: 7b21 ldrb r1, [r4, #12] + 1ec90: 01c0 lsls r0, r0, #7 + 1ec92: f001 017f and.w r1, r1, #127 ; 0x7f + 1ec96: f400 507e and.w r0, r0, #16256 ; 0x3f80 + 1ec9a: ea41 0300 orr.w r3, r1, r0 if(index>0 && index>=BMC_MAX_NAMES_LIBRARY){ - 1ebbe: 2b7f cmp r3, #127 ; 0x7f - 1ebc0: 9342 str r3, [sp, #264] ; 0x108 - 1ebc2: dce5 bgt.n 1eb90 - 1ebc4: 2011 movs r0, #17 - 1ebc6: f44f 61cf mov.w r1, #1656 ; 0x678 - 1ebca: ac45 add r4, sp, #276 ; 0x114 - 1ebcc: fb13 1300 smlabb r3, r3, r0, r1 - 1ebd0: 9343 str r3, [sp, #268] ; 0x10c + 1ec9e: 2b7f cmp r3, #127 ; 0x7f + 1eca0: 9342 str r3, [sp, #264] ; 0x108 + 1eca2: dce5 bgt.n 1ec70 + 1eca4: 2011 movs r0, #17 + 1eca6: f44f 61cf mov.w r1, #1656 ; 0x678 + 1ecaa: ac45 add r4, sp, #276 ; 0x114 + 1ecac: fb13 1300 smlabb r3, r3, r0, r1 + 1ecb0: 9343 str r3, [sp, #268] ; 0x10c buff.prepareEditorMessage( - 1ebd2: 9b42 ldr r3, [sp, #264] ; 0x108 - 1ebd4: 4631 mov r1, r6 + 1ecb2: 9b42 ldr r3, [sp, #264] ; 0x108 + 1ecb4: 4631 mov r1, r6 struct BMCMidiMessage { - 1ebd6: 2600 movs r6, #0 - 1ebd8: 4620 mov r0, r4 - 1ebda: 9301 str r3, [sp, #4] - 1ebdc: 2311 movs r3, #17 - 1ebde: 9600 str r6, [sp, #0] - 1ebe0: 6026 str r6, [r4, #0] - 1ebe2: 7126 strb r6, [r4, #4] - 1ebe4: f7fc f96e bl 1aec4 + 1ecb6: 2600 movs r6, #0 + 1ecb8: 4620 mov r0, r4 + 1ecba: 9301 str r3, [sp, #4] + 1ecbc: 2311 movs r3, #17 + 1ecbe: 9600 str r6, [sp, #0] + 1ecc0: 6026 str r6, [r4, #0] + 1ecc2: 7126 strb r6, [r4, #4] + 1ecc4: f7fc f96e bl 1afa4 buff.appendToSysEx14Bits(BMC_MAX_NAMES_LIBRARY); - 1ebe8: 2180 movs r1, #128 ; 0x80 - 1ebea: 4620 mov r0, r4 - 1ebec: f7fc fad8 bl 1b1a0 + 1ecc8: 2180 movs r1, #128 ; 0x80 + 1ecca: 4620 mov r0, r4 + 1eccc: f7fc fad8 bl 1b280 bmcStoreName& item = store.global.names[index]; - 1ebf0: f8b4 2003 ldrh.w r2, [r4, #3] - 1ebf4: 682b ldr r3, [r5, #0] + 1ecd0: f8b4 2003 ldrh.w r2, [r4, #3] + 1ecd4: 682b ldr r3, [r5, #0] if(sysLength + 1ecd6: 2afd cmp r2, #253 ; 0xfd + 1ecd8: d807 bhi.n 1ecea sysex[sysLength++] = value; - 1ebfa: 18a1 adds r1, r4, r2 - 1ebfc: 2011 movs r0, #17 - 1ebfe: 3201 adds r2, #1 - 1ec00: 7148 strb r0, [r1, #5] + 1ecda: 18a1 adds r1, r4, r2 + 1ecdc: 2011 movs r0, #17 + 1ecde: 3201 adds r2, #1 + 1ece0: 7148 strb r0, [r1, #5] setData1(value & 0xFF); - 1ec02: 70e2 strb r2, [r4, #3] + 1ece2: 70e2 strb r2, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1ec04: 7126 strb r6, [r4, #4] + 1ece4: 7126 strb r6, [r4, #4] return true; - 1ec06: f8b4 2003 ldrh.w r2, [r4, #3] + 1ece6: f8b4 2003 ldrh.w r2, [r4, #3] buff.appendCharArrayToSysEx(item.name, BMC_MAX_NAMES_LENGTH); - 1ec0a: 9943 ldr r1, [sp, #268] ; 0x10c + 1ecea: 9943 ldr r1, [sp, #268] ; 0x10c void setData2(uint8_t t_data2) { data2 = t_data2; } - 1ec0c: 2700 movs r7, #0 - 1ec0e: 440b add r3, r1 - 1ec10: f103 0010 add.w r0, r3, #16 - 1ec14: e001 b.n 1ec1a - 1ec16: f8b4 2003 ldrh.w r2, [r4, #3] + 1ecec: 2700 movs r7, #0 + 1ecee: 440b add r3, r1 + 1ecf0: f103 0010 add.w r0, r3, #16 + 1ecf4: e001 b.n 1ecfa + 1ecf6: f8b4 2003 ldrh.w r2, [r4, #3] if(sysLength + 1ecfa: 2afd cmp r2, #253 ; 0xfd + 1ecfc: d807 bhi.n 1ed0e appendSysExByte(value & 0x7F); - 1ec1e: 7819 ldrb r1, [r3, #0] + 1ecfe: 7819 ldrb r1, [r3, #0] sysex[sysLength++] = value; - 1ec20: 18a6 adds r6, r4, r2 - 1ec22: 3201 adds r2, #1 + 1ed00: 18a6 adds r6, r4, r2 + 1ed02: 3201 adds r2, #1 appendSysExByte(value & 0x7F); - 1ec24: f001 017f and.w r1, r1, #127 ; 0x7f + 1ed04: f001 017f and.w r1, r1, #127 ; 0x7f sysex[sysLength++] = value; - 1ec28: 7171 strb r1, [r6, #5] + 1ed08: 7171 strb r1, [r6, #5] setData1(value & 0xFF); - 1ec2a: 70e2 strb r2, [r4, #3] + 1ed0a: 70e2 strb r2, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1ec2c: 7127 strb r7, [r4, #4] + 1ed0c: 7127 strb r7, [r4, #4] if(i == n){ - 1ec2e: 3301 adds r3, #1 - 1ec30: 4283 cmp r3, r0 - 1ec32: d1f0 bne.n 1ec16 + 1ed0e: 3301 adds r3, #1 + 1ed10: 4283 cmp r3, r0 + 1ed12: d1f0 bne.n 1ecf6 uint16_t sysLength = size(); - 1ec34: f8b4 3003 ldrh.w r3, [r4, #3] + 1ed14: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 1ed18: 2bfd cmp r3, #253 ; 0xfd + 1ed1a: d805 bhi.n 1ed28 sysex[sysLength++] = value; - 1ec3c: 2200 movs r2, #0 - 1ec3e: 18e1 adds r1, r4, r3 - 1ec40: 3301 adds r3, #1 - 1ec42: 714a strb r2, [r1, #5] + 1ed1c: 2200 movs r2, #0 + 1ed1e: 18e1 adds r1, r4, r3 + 1ed20: 3301 adds r3, #1 + 1ed22: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1ec44: 7122 strb r2, [r4, #4] + 1ed24: 7122 strb r2, [r4, #4] setData1(value & 0xFF); - 1ec46: 70e3 strb r3, [r4, #3] + 1ed26: 70e3 strb r3, [r4, #3] sendToEditor(buff); - 1ec48: 2301 movs r3, #1 - 1ec4a: 2000 movs r0, #0 - 1ec4c: a948 add r1, sp, #288 ; 0x120 - 1ec4e: 22f7 movs r2, #247 ; 0xf7 - 1ec50: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 - 1ec54: 4668 mov r0, sp - 1ec56: f00b fd57 bl 2a708 - 1ec5a: 4628 mov r0, r5 - 1ec5c: e894 000e ldmia.w r4, {r1, r2, r3} - 1ec60: f7fb fe34 bl 1a8cc -} - 1ec64: f50d 7d07 add.w sp, sp, #540 ; 0x21c - 1ec68: ecbd 8b02 vpop {d8} - 1ec6c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1ed28: 2301 movs r3, #1 + 1ed2a: 2000 movs r0, #0 + 1ed2c: a948 add r1, sp, #288 ; 0x120 + 1ed2e: 22f7 movs r2, #247 ; 0xf7 + 1ed30: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 + 1ed34: 4668 mov r0, sp + 1ed36: f00b fd5b bl 2a7f0 + 1ed3a: 4628 mov r0, r5 + 1ed3c: e894 000e ldmia.w r4, {r1, r2, r3} + 1ed40: f7fb fe34 bl 1a9ac +} + 1ed44: f50d 7d07 add.w sp, sp, #540 ; 0x21c + 1ed48: ecbd 8b02 vpop {d8} + 1ed4c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(write && incoming.size() != sysExLength){ - 1ec70: 2f1d cmp r7, #29 - 1ec72: f040 80a5 bne.w 1edc0 + 1ed50: 2f1d cmp r7, #29 + 1ed52: f040 80a5 bne.w 1eea0 incoming.getStringFromSysEx(10, item.name, BMC_MAX_NAMES_LENGTH); - 1ec76: 2111 movs r1, #17 - 1ec78: f44f 62cf mov.w r2, #1656 ; 0x678 - 1ec7c: fb13 2301 smlabb r3, r3, r1, r2 - 1ec80: 461a mov r2, r3 - 1ec82: 9343 str r3, [sp, #268] ; 0x10c - 1ec84: 682b ldr r3, [r5, #0] + 1ed56: 2111 movs r1, #17 + 1ed58: f44f 62cf mov.w r2, #1656 ; 0x678 + 1ed5c: fb13 2301 smlabb r3, r3, r1, r2 + 1ed60: 461a mov r2, r3 + 1ed62: 9343 str r3, [sp, #268] ; 0x10c + 1ed64: 682b ldr r3, [r5, #0] memset(str, 0, length); - 1ec86: 509e str r6, [r3, r2] - 1ec88: 4413 add r3, r2 - 1ec8a: f104 020e add.w r2, r4, #14 - 1ec8e: 341f adds r4, #31 - 1ec90: 1e59 subs r1, r3, #1 - 1ec92: 605e str r6, [r3, #4] - 1ec94: 609e str r6, [r3, #8] - 1ec96: 60de str r6, [r3, #12] - 1ec98: 741e strb r6, [r3, #16] + 1ed66: 509e str r6, [r3, r2] + 1ed68: 4413 add r3, r2 + 1ed6a: f104 020e add.w r2, r4, #14 + 1ed6e: 341f adds r4, #31 + 1ed70: 1e59 subs r1, r3, #1 + 1ed72: 605e str r6, [r3, #4] + 1ed74: 609e str r6, [r3, #8] + 1ed76: 60de str r6, [r3, #12] + 1ed78: 741e strb r6, [r3, #16] str[i] = (char) sysex[e]; - 1ec9a: f812 0f01 ldrb.w r0, [r2, #1]! + 1ed7a: f812 0f01 ldrb.w r0, [r2, #1]! for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 1ec9e: 42a2 cmp r2, r4 + 1ed7e: 42a2 cmp r2, r4 str[i] = (char) sysex[e]; - 1eca0: f801 0f01 strb.w r0, [r1, #1]! + 1ed80: f801 0f01 strb.w r0, [r1, #1]! for(uint8_t i = 0, e = startsAt ; i < length ; i++, e++){ - 1eca4: d1f9 bne.n 1ec9a + 1ed84: d1f9 bne.n 1ed7a str[length-1] = 0; - 1eca6: f04f 0b00 mov.w fp, #0 + 1ed86: f04f 0b00 mov.w fp, #0 uint16_t address = getGlobalOffset(); - 1ecaa: 4628 mov r0, r5 + 1ed8a: 4628 mov r0, r5 storage.set(address, store.global.names[index]); - 1ecac: 46a8 mov r8, r5 - 1ecae: f8df 9150 ldr.w r9, [pc, #336] ; 1ee00 - 1ecb2: f883 b010 strb.w fp, [r3, #16] + 1ed8c: 46a8 mov r8, r5 + 1ed8e: f8df 9150 ldr.w r9, [pc, #336] ; 1eee0 + 1ed92: f883 b010 strb.w fp, [r3, #16] uint16_t address = getGlobalOffset(); - 1ecb6: ac45 add r4, sp, #276 ; 0x114 - 1ecb8: f7fb fd92 bl 1a7e0 + 1ed96: ac45 add r4, sp, #276 ; 0x114 + 1ed98: f7fb fd92 bl 1a8c0 address += getNamesOffset(index); - 1ecbc: 9942 ldr r1, [sp, #264] ; 0x108 + 1ed9c: 9942 ldr r1, [sp, #264] ; 0x108 uint16_t address = getGlobalOffset(); - 1ecbe: b287 uxth r7, r0 + 1ed9e: b287 uxth r7, r0 address += getNamesOffset(index); - 1ecc0: 4628 mov r0, r5 - 1ecc2: f7fb fd99 bl 1a7f8 + 1eda0: 4628 mov r0, r5 + 1eda2: f7fb fd99 bl 1a8d8 storage.set(address, store.global.names[index]); - 1ecc6: 9b43 ldr r3, [sp, #268] ; 0x10c + 1eda6: 9b43 ldr r3, [sp, #268] ; 0x10c address += getNamesOffset(index); - 1ecc8: 4407 add r7, r0 + 1eda8: 4407 add r7, r0 storage.set(address, store.global.names[index]); - 1ecca: f858 6b10 ldr.w r6, [r8], #16 - 1ecce: f105 000c add.w r0, r5, #12 + 1edaa: f858 6b10 ldr.w r6, [r8], #16 + 1edae: f105 000c add.w r0, r5, #12 debugStartTiming("Updating"); - 1ecd2: 4944 ldr r1, [pc, #272] ; (1ede4 ) + 1edb2: 4944 ldr r1, [pc, #272] ; (1eec4 ) address += getNamesOffset(index); - 1ecd4: b2bf uxth r7, r7 + 1edb4: b2bf uxth r7, r7 storage.set(address, store.global.names[index]); - 1ecd6: 441e add r6, r3 - 1ecd8: ee08 0a10 vmov s16, r0 - 1ecdc: f7fd f92a bl 1bf34 - 1ece0: 210e movs r1, #14 - 1ece2: 4841 ldr r0, [pc, #260] ; (1ede8 ) - 1ece4: f00d fc30 bl 2c548 + 1edb6: 441e add r6, r3 + 1edb8: ee08 0a10 vmov s16, r0 + 1edbc: f7fd f92a bl 1c014 + 1edc0: 210e movs r1, #14 + 1edc2: 4841 ldr r0, [pc, #260] ; (1eec8 ) + 1edc4: f00d fc34 bl 2c630 unsigned long n = sizeof(value)+start; - 1ece8: f107 0a11 add.w sl, r7, #17 - 1ecec: 1c7b adds r3, r7, #1 - 1ecee: 1bbf subs r7, r7, r6 - 1ecf0: 459a cmp sl, r3 - 1ecf2: bf34 ite cc - 1ecf4: f04f 0a01 movcc.w sl, #1 - 1ecf8: f04f 0a11 movcs.w sl, #17 - 1ecfc: f8d9 3000 ldr.w r3, [r9] - 1ed00: 44b2 add sl, r6 - 1ed02: 622b str r3, [r5, #32] + 1edc8: f107 0a11 add.w sl, r7, #17 + 1edcc: 1c7b adds r3, r7, #1 + 1edce: 1bbf subs r7, r7, r6 + 1edd0: 459a cmp sl, r3 + 1edd2: bf34 ite cc + 1edd4: f04f 0a01 movcc.w sl, #1 + 1edd8: f04f 0a11 movcs.w sl, #17 + 1eddc: f8d9 3000 ldr.w r3, [r9] + 1ede0: 44b2 add sl, r6 + 1ede2: 622b str r3, [r5, #32] for(i=start;i - 1ed06: f8d9 3000 ldr.w r3, [r9] + 1ede4: e007 b.n 1edf6 + 1ede6: f8d9 3000 ldr.w r3, [r9] operator unsigned long () const { return millis() - ms; } - 1ed0a: 6a2a ldr r2, [r5, #32] - 1ed0c: 1a9b subs r3, r3, r2 + 1edea: 6a2a ldr r2, [r5, #32] + 1edec: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1ed0e: 2bf9 cmp r3, #249 ; 0xf9 - 1ed10: d81a bhi.n 1ed48 + 1edee: 2bf9 cmp r3, #249 ; 0xf9 + 1edf0: d81a bhi.n 1ee28 for(i=start;i - 1ed16: 19f1 adds r1, r6, r7 + 1edf2: 4556 cmp r6, sl + 1edf4: d021 beq.n 1ee3a + 1edf6: 19f1 adds r1, r6, r7 updatedBytes += update(i,*p++); - 1ed18: f816 3b01 ldrb.w r3, [r6], #1 + 1edf8: f816 3b01 ldrb.w r3, [r6], #1 if(read(addr) != value){ - 1ed1c: 4640 mov r0, r8 - 1ed1e: 7023 strb r3, [r4, #0] - 1ed20: 9141 str r1, [sp, #260] ; 0x104 - 1ed22: f006 fa13 bl 2514c - 1ed26: 7823 ldrb r3, [r4, #0] - 1ed28: 9941 ldr r1, [sp, #260] ; 0x104 - 1ed2a: 4298 cmp r0, r3 - 1ed2c: d0eb beq.n 1ed06 + 1edfc: 4640 mov r0, r8 + 1edfe: 7023 strb r3, [r4, #0] + 1ee00: 9141 str r1, [sp, #260] ; 0x104 + 1ee02: f006 fa19 bl 25238 + 1ee06: 7823 ldrb r3, [r4, #0] + 1ee08: 9941 ldr r1, [sp, #260] ; 0x104 + 1ee0a: 4298 cmp r0, r3 + 1ee0c: d0eb beq.n 1ede6 write(addr, &value, 1); - 1ed2e: 2301 movs r3, #1 - 1ed30: 4622 mov r2, r4 - 1ed32: 4640 mov r0, r8 + 1ee0e: 2301 movs r3, #1 + 1ee10: 4622 mov r2, r4 + 1ee12: 4640 mov r0, r8 updatedBytes += update(i,*p++); - 1ed34: f10b 0b01 add.w fp, fp, #1 + 1ee14: f10b 0b01 add.w fp, fp, #1 write(addr, &value, 1); - 1ed38: f006 f8fe bl 24f38 - 1ed3c: f8d9 3000 ldr.w r3, [r9] - 1ed40: 6a2a ldr r2, [r5, #32] - 1ed42: 1a9b subs r3, r3, r2 + 1ee18: f006 f904 bl 25024 + 1ee1c: f8d9 3000 ldr.w r3, [r9] + 1ee20: 6a2a ldr r2, [r5, #32] + 1ee22: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 1ed44: 2bf9 cmp r3, #249 ; 0xf9 - 1ed46: d9e4 bls.n 1ed12 - 1ed48: 2101 movs r1, #1 - 1ed4a: 4828 ldr r0, [pc, #160] ; (1edec ) - 1ed4c: f00d fbfc bl 2c548 - 1ed50: f8d9 3000 ldr.w r3, [r9] + 1ee24: 2bf9 cmp r3, #249 ; 0xf9 + 1ee26: d9e4 bls.n 1edf2 + 1ee28: 2101 movs r1, #1 + 1ee2a: 4828 ldr r0, [pc, #160] ; (1eecc ) + 1ee2c: f00d fc00 bl 2c630 + 1ee30: f8d9 3000 ldr.w r3, [r9] for(i=start;i - 1ed5a: 2101 movs r1, #1 - 1ed5c: 4823 ldr r0, [pc, #140] ; (1edec ) - 1ed5e: f00d fbf3 bl 2c548 - 1ed62: 4823 ldr r0, [pc, #140] ; (1edf0 ) - 1ed64: f00b f886 bl 29e74 - 1ed68: 2109 movs r1, #9 - 1ed6a: 4822 ldr r0, [pc, #136] ; (1edf4 ) - 1ed6c: f00d fbec bl 2c548 - 1ed70: 2101 movs r1, #1 - 1ed72: 4821 ldr r0, [pc, #132] ; (1edf8 ) - 1ed74: f00d fbe8 bl 2c548 + 1ee36: 622b str r3, [r5, #32] + 1ee38: d1dd bne.n 1edf6 + 1ee3a: 2101 movs r1, #1 + 1ee3c: 4823 ldr r0, [pc, #140] ; (1eecc ) + 1ee3e: f00d fbf7 bl 2c630 + 1ee42: 4823 ldr r0, [pc, #140] ; (1eed0 ) + 1ee44: f00b f88c bl 29f60 + 1ee48: 2109 movs r1, #9 + 1ee4a: 4822 ldr r0, [pc, #136] ; (1eed4 ) + 1ee4c: f00d fbf0 bl 2c630 + 1ee50: 2101 movs r1, #1 + 1ee52: 4821 ldr r0, [pc, #132] ; (1eed8 ) + 1ee54: f00d fbec bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 1ed78: 2300 movs r3, #0 - 1ed7a: 220a movs r2, #10 - 1ed7c: 4659 mov r1, fp - 1ed7e: 481c ldr r0, [pc, #112] ; (1edf0 ) - 1ed80: f00b f894 bl 29eac - 1ed84: 2101 movs r1, #1 - 1ed86: 481c ldr r0, [pc, #112] ; (1edf8 ) - 1ed88: f00d fbde bl 2c548 - 1ed8c: 2105 movs r1, #5 - 1ed8e: 481b ldr r0, [pc, #108] ; (1edfc ) - 1ed90: f00d fbda bl 2c548 + 1ee58: 2300 movs r3, #0 + 1ee5a: 220a movs r2, #10 + 1ee5c: 4659 mov r1, fp + 1ee5e: 481c ldr r0, [pc, #112] ; (1eed0 ) + 1ee60: f00b f89a bl 29f98 + 1ee64: 2101 movs r1, #1 + 1ee66: 481c ldr r0, [pc, #112] ; (1eed8 ) + 1ee68: f00d fbe2 bl 2c630 + 1ee6c: 2105 movs r1, #5 + 1ee6e: 481b ldr r0, [pc, #108] ; (1eedc ) + 1ee70: f00d fbde bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 1ed94: 4816 ldr r0, [pc, #88] ; (1edf0 ) - 1ed96: f00b f86d bl 29e74 + 1ee74: 4816 ldr r0, [pc, #88] ; (1eed0 ) + 1ee76: f00b f873 bl 29f60 debugStopTiming(); - 1ed9a: ee18 0a10 vmov r0, s16 - 1ed9e: f7fd f903 bl 1bfa8 + 1ee7a: ee18 0a10 vmov r0, s16 + 1ee7e: f7fd f903 bl 1c088 if(midi.globals.editorConnected()){ - 1eda2: 686b ldr r3, [r5, #4] - 1eda4: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1eda8: 6ddb ldr r3, [r3, #92] ; 0x5c - 1edaa: 075b lsls r3, r3, #29 - 1edac: d503 bpl.n 1edb6 + 1ee82: 686b ldr r3, [r5, #4] + 1ee84: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1ee88: 6ddb ldr r3, [r3, #92] ; 0x5c + 1ee8a: 075b lsls r3, r3, #29 + 1ee8c: d503 bpl.n 1ee96 bitSet(flags, bit); - 1edae: 6b2b ldr r3, [r5, #48] ; 0x30 - 1edb0: f043 0304 orr.w r3, r3, #4 - 1edb4: 632b str r3, [r5, #48] ; 0x30 + 1ee8e: 6b2b ldr r3, [r5, #48] ; 0x30 + 1ee90: f043 0304 orr.w r3, r3, #4 + 1ee94: 632b str r3, [r5, #48] ; 0x30 buff.prepareEditorMessage( - 1edb6: f895 602c ldrb.w r6, [r5, #44] ; 0x2c - 1edba: f895 202d ldrb.w r2, [r5, #45] ; 0x2d + 1ee96: f895 602c ldrb.w r6, [r5, #44] ; 0x2c + 1ee9a: f895 202d ldrb.w r2, [r5, #45] ; 0x2d } - 1edbe: e708 b.n 1ebd2 + 1ee9e: e708 b.n 1ecb2 sendNotification(BMC_NOTIFY_INVALID_SIZE, sysExLength, true); - 1edc0: 2301 movs r3, #1 - 1edc2: 221d movs r2, #29 - 1edc4: 210a movs r1, #10 - 1edc6: 4628 mov r0, r5 - 1edc8: 9600 str r6, [sp, #0] - 1edca: f7fb fddd bl 1a988 + 1eea0: 2301 movs r3, #1 + 1eea2: 221d movs r2, #29 + 1eea4: 210a movs r1, #10 + 1eea6: 4628 mov r0, r5 + 1eea8: 9600 str r6, [sp, #0] + 1eeaa: f7fb fddd bl 1aa68 return; - 1edce: e6ba b.n 1eb46 + 1eeae: e6ba b.n 1ec26 backupNameMessage(sysExLength); - 1edd0: 210c movs r1, #12 - 1edd2: 4628 mov r0, r5 + 1eeb0: 210c movs r1, #12 + 1eeb2: 4628 mov r0, r5 } - 1edd4: f50d 7d07 add.w sp, sp, #540 ; 0x21c - 1edd8: ecbd 8b02 vpop {d8} - 1eddc: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1eeb4: f50d 7d07 add.w sp, sp, #540 ; 0x21c + 1eeb8: ecbd 8b02 vpop {d8} + 1eebc: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} backupNameMessage(sysExLength); - 1ede0: f7fa ba42 b.w 19268 - 1ede4: 20003e04 .word 0x20003e04 - 1ede8: 20003e1c .word 0x20003e1c - 1edec: 200030b8 .word 0x200030b8 - 1edf0: 20004ba8 .word 0x20004ba8 - 1edf4: 20003e2c .word 0x20003e2c - 1edf8: 200023ec .word 0x200023ec - 1edfc: 20002448 .word 0x20002448 - 1ee00: 2000bae8 .word 0x2000bae8 - -0001ee04 : + 1eec0: f7fa ba44 b.w 1934c + 1eec4: 20003ec4 .word 0x20003ec4 + 1eec8: 20003edc .word 0x20003edc + 1eecc: 20003150 .word 0x20003150 + 1eed0: 20004c68 .word 0x20004c68 + 1eed4: 20003eec .word 0x20003eec + 1eed8: 200023ec .word 0x200023ec + 1eedc: 20002448 .word 0x20002448 + 1eee0: 2000bb08 .word 0x2000bb08 + +0001eee4 : midi.globals.editorConnected() && - 1ee04: 6843 ldr r3, [r0, #4] + 1eee4: 6843 ldr r3, [r0, #4] return bitRead(flags, bit); - 1ee06: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1ee0a: 6ddb ldr r3, [r3, #92] ; 0x5c + 1eee6: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1eeea: 6ddb ldr r3, [r3, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 1ee0c: 075b lsls r3, r3, #29 - 1ee0e: d513 bpl.n 1ee38 + 1eeec: 075b lsls r3, r3, #29 + 1eeee: d513 bpl.n 1ef18 void BMCEditor::incomingMessageDevice(bool write){ - 1ee10: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 1ee14: f8d0 e03c ldr.w lr, [r0, #60] ; 0x3c - 1ee18: 4688 mov r8, r1 + 1eef0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 1eef4: f8d0 e03c ldr.w lr, [r0, #60] ; 0x3c + 1eef8: 4688 mov r8, r1 return incoming.sysex[4]; - 1ee1a: f890 202d ldrb.w r2, [r0, #45] ; 0x2d - 1ee1e: f5ad 7d0f sub.w sp, sp, #572 ; 0x23c + 1eefa: f890 202d ldrb.w r2, [r0, #45] ; 0x2d + 1eefe: f5ad 7d0f sub.w sp, sp, #572 ; 0x23c midi.globals.editorConnected() && - 1ee22: f89e 3009 ldrb.w r3, [lr, #9] - 1ee26: 4604 mov r4, r0 - 1ee28: f890 102c ldrb.w r1, [r0, #44] ; 0x2c - 1ee2c: 4293 cmp r3, r2 - 1ee2e: d004 beq.n 1ee3a -} - 1ee30: f50d 7d0f add.w sp, sp, #572 ; 0x23c - 1ee34: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 1ee38: 4770 bx lr + 1ef02: f89e 3009 ldrb.w r3, [lr, #9] + 1ef06: 4604 mov r4, r0 + 1ef08: f890 102c ldrb.w r1, [r0, #44] ; 0x2c + 1ef0c: 4293 cmp r3, r2 + 1ef0e: d004 beq.n 1ef1a +} + 1ef10: f50d 7d0f add.w sp, sp, #572 ; 0x23c + 1ef14: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1ef18: 4770 bx lr getMessageDeviceId() == deviceId && - 1ee3a: f89e 3000 ldrb.w r3, [lr] - 1ee3e: 428b cmp r3, r1 - 1ee40: d1f6 bne.n 1ee30 - 1ee42: f8be 3003 ldrh.w r3, [lr, #3] + 1ef1a: f89e 3000 ldrb.w r3, [lr] + 1ef1e: 428b cmp r3, r1 + 1ef20: d1f6 bne.n 1ef10 + 1ef22: f8be 3003 ldrh.w r3, [lr, #3] incoming.peekSysEx(4) == deviceId && - 1ee46: 2b0a cmp r3, #10 - 1ee48: d9f2 bls.n 1ee30 - 1ee4a: f890 b044 ldrb.w fp, [r0, #68] ; 0x44 + 1ef26: 2b0a cmp r3, #10 + 1ef28: d9f2 bls.n 1ef10 + 1ef2a: f890 b044 ldrb.w fp, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 1ee4e: f01b 0f02 tst.w fp, #2 - 1ee52: f3cb 0740 ubfx r7, fp, #1, #1 - 1ee56: d1eb bne.n 1ee30 + 1ef2e: f01b 0f02 tst.w fp, #2 + 1ef32: f3cb 0740 ubfx r7, fp, #1, #1 + 1ef36: d1eb bne.n 1ef10 return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 1ee58: f89e 500f ldrb.w r5, [lr, #15] + 1ef38: f89e 500f ldrb.w r5, [lr, #15] if((t_offset+1) < size()){ - 1ee5c: 2b0c cmp r3, #12 + 1ef3c: 2b0c cmp r3, #12 return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 1ee5e: f89e 000e ldrb.w r0, [lr, #14] - 1ee62: f005 057f and.w r5, r5, #127 ; 0x7f - 1ee66: ea45 15c0 orr.w r5, r5, r0, lsl #7 - 1ee6a: b268 sxtb r0, r5 - 1ee6c: b2ed uxtb r5, r5 - 1ee6e: 9042 str r0, [sp, #264] ; 0x108 + 1ef3e: f89e 000e ldrb.w r0, [lr, #14] + 1ef42: f005 057f and.w r5, r5, #127 ; 0x7f + 1ef46: ea45 15c0 orr.w r5, r5, r0, lsl #7 + 1ef4a: b268 sxtb r0, r5 + 1ef4c: b2ed uxtb r5, r5 + 1ef4e: 9042 str r0, [sp, #264] ; 0x108 if((t_offset+1) < size()){ - 1ee70: d909 bls.n 1ee86 + 1ef50: d909 bls.n 1ef66 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1ee72: f89e 0010 ldrb.w r0, [lr, #16] - 1ee76: f89e 7011 ldrb.w r7, [lr, #17] - 1ee7a: 01c0 lsls r0, r0, #7 - 1ee7c: f007 077f and.w r7, r7, #127 ; 0x7f - 1ee80: f400 507e and.w r0, r0, #16256 ; 0x3f80 - 1ee84: 4307 orrs r7, r0 + 1ef52: f89e 0010 ldrb.w r0, [lr, #16] + 1ef56: f89e 7011 ldrb.w r7, [lr, #17] + 1ef5a: 01c0 lsls r0, r0, #7 + 1ef5c: f007 077f and.w r7, r7, #127 ; 0x7f + 1ef60: f400 507e and.w r0, r0, #16256 ; 0x3f80 + 1ef64: 4307 orrs r7, r0 if(index>0 && index>=maxDevices && !backupActive()){ - 1ee86: f1b7 0a00 subs.w sl, r7, #0 + 1ef66: f1b7 0a00 subs.w sl, r7, #0 for(uint8_t i = 0 ; i < devicesDataLength ; i++){ - 1ee8a: f894 64e0 ldrb.w r6, [r4, #1248] ; 0x4e0 - 1ee8e: bf18 it ne - 1ee90: f04f 0a01 movne.w sl, #1 - 1ee94: b1d6 cbz r6, 1eecc - 1ee96: 46a4 mov ip, r4 - 1ee98: 2000 movs r0, #0 - 1ee9a: e005 b.n 1eea8 - 1ee9c: 3001 adds r0, #1 - 1ee9e: fa5f f980 uxtb.w r9, r0 - 1eea2: 45b1 cmp r9, r6 - 1eea4: f080 817d bcs.w 1f1a2 + 1ef6a: f894 64e0 ldrb.w r6, [r4, #1248] ; 0x4e0 + 1ef6e: bf18 it ne + 1ef70: f04f 0a01 movne.w sl, #1 + 1ef74: b1d6 cbz r6, 1efac + 1ef76: 46a4 mov ip, r4 + 1ef78: 2000 movs r0, #0 + 1ef7a: e005 b.n 1ef88 + 1ef7c: 3001 adds r0, #1 + 1ef7e: fa5f f980 uxtb.w r9, r0 + 1ef82: 45b1 cmp r9, r6 + 1ef84: f080 817d bcs.w 1f282 if(devicesData[i].id==t_type){ - 1eea8: f89c 9048 ldrb.w r9, [ip, #72] ; 0x48 + 1ef88: f89c 9048 ldrb.w r9, [ip, #72] ; 0x48 for(uint8_t i = 0 ; i < devicesDataLength ; i++){ - 1eeac: f10c 0c1c add.w ip, ip, #28 + 1ef8c: f10c 0c1c add.w ip, ip, #28 if(devicesData[i].id==t_type){ - 1eeb0: 45a9 cmp r9, r5 - 1eeb2: d1f3 bne.n 1ee9c + 1ef90: 45a9 cmp r9, r5 + 1ef92: d1f3 bne.n 1ef7c return devicesData[i].length; - 1eeb4: ebc0 00c0 rsb r0, r0, r0, lsl #3 - 1eeb8: eb04 0080 add.w r0, r4, r0, lsl #2 - 1eebc: f8b0 605e ldrh.w r6, [r0, #94] ; 0x5e - 1eec0: 42be cmp r6, r7 - 1eec2: bf8c ite hi - 1eec4: f04f 0a00 movhi.w sl, #0 - 1eec8: f00a 0a01 andls.w sl, sl, #1 - 1eecc: f89e 000b ldrb.w r0, [lr, #11] + 1ef94: ebc0 00c0 rsb r0, r0, r0, lsl #3 + 1ef98: eb04 0080 add.w r0, r4, r0, lsl #2 + 1ef9c: f8b0 605e ldrh.w r6, [r0, #94] ; 0x5e + 1efa0: 42be cmp r6, r7 + 1efa2: bf8c ite hi + 1efa4: f04f 0a00 movhi.w sl, #0 + 1efa8: f00a 0a01 andls.w sl, sl, #1 + 1efac: f89e 000b ldrb.w r0, [lr, #11] if(t_offset < size()){ - 1eed0: 2b0f cmp r3, #15 + 1efb0: 2b0f cmp r3, #15 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 1eed2: f89e 900c ldrb.w r9, [lr, #12] - 1eed6: ea4f 10c0 mov.w r0, r0, lsl #7 - 1eeda: f009 097f and.w r9, r9, #127 ; 0x7f - 1eede: f400 507e and.w r0, r0, #16256 ; 0x3f80 - 1eee2: ea49 0c00 orr.w ip, r9, r0 + 1efb2: f89e 900c ldrb.w r9, [lr, #12] + 1efb6: ea4f 10c0 mov.w r0, r0, lsl #7 + 1efba: f009 097f and.w r9, r9, #127 ; 0x7f + 1efbe: f400 507e and.w r0, r0, #16256 ; 0x3f80 + 1efc2: ea49 0c00 orr.w ip, r9, r0 uint8_t layer = getMessageLayerNumber(); - 1eee6: fa5f f08c uxtb.w r0, ip - 1eeea: f8cd c104 str.w ip, [sp, #260] ; 0x104 - 1eeee: 9046 str r0, [sp, #280] ; 0x118 + 1efc6: fa5f f08c uxtb.w r0, ip + 1efca: f8cd c104 str.w ip, [sp, #260] ; 0x104 + 1efce: 9046 str r0, [sp, #280] ; 0x118 if(t_offset < size()){ - 1eef0: f241 8716 bls.w 20d20 + 1efd0: f241 8716 bls.w 20e00 return sysex[t_offset] & 0x7F; - 1eef4: f89e 9014 ldrb.w r9, [lr, #20] + 1efd4: f89e 9014 ldrb.w r9, [lr, #20] if(t_offset < size()){ - 1eef8: 2b10 cmp r3, #16 + 1efd8: 2b10 cmp r3, #16 sysExLength += (incoming.get7Bits(15) * 2); - 1eefa: f009 097f and.w r9, r9, #127 ; 0x7f - 1eefe: ea4f 0949 mov.w r9, r9, lsl #1 - 1ef02: f109 0913 add.w r9, r9, #19 - 1ef06: fa5f f989 uxtb.w r9, r9 - 1ef0a: d005 beq.n 1ef18 + 1efda: f009 097f and.w r9, r9, #127 ; 0x7f + 1efde: ea4f 0949 mov.w r9, r9, lsl #1 + 1efe2: f109 0913 add.w r9, r9, #19 + 1efe6: fa5f f989 uxtb.w r9, r9 + 1efea: d005 beq.n 1eff8 return sysex[t_offset] & 0x7F; - 1ef0c: f89e 0015 ldrb.w r0, [lr, #21] + 1efec: f89e 0015 ldrb.w r0, [lr, #21] sysExLength += (incoming.get7Bits(16) * 2); - 1ef10: eb09 0040 add.w r0, r9, r0, lsl #1 - 1ef14: f000 09ff and.w r9, r0, #255 ; 0xff + 1eff0: eb09 0040 add.w r0, r9, r0, lsl #1 + 1eff4: f000 09ff and.w r9, r0, #255 ; 0xff if(index>0 && index>=maxDevices && !backupActive()){ - 1ef18: f1ba 0f00 cmp.w sl, #0 - 1ef1c: d011 beq.n 1ef42 - 1ef1e: 4620 mov r0, r4 - 1ef20: f7fe f89c bl 1d05c - 1ef24: 4605 mov r5, r0 - 1ef26: 2800 cmp r0, #0 - 1ef28: f000 819e beq.w 1f268 + 1eff8: f1ba 0f00 cmp.w sl, #0 + 1effc: d011 beq.n 1f022 + 1effe: 4620 mov r0, r4 + 1f000: f7fe f89c bl 1d13c + 1f004: 4605 mov r5, r0 + 1f006: 2800 cmp r0, #0 + 1f008: f000 819e beq.w 1f348 sendNotification(BMC_NOTIFY_BACKUP_DATA_ACCEPTED, 0); - 1ef2c: 2300 movs r3, #0 - 1ef2e: 2110 movs r1, #16 - 1ef30: 4620 mov r0, r4 - 1ef32: 461a mov r2, r3 - 1ef34: 9300 str r3, [sp, #0] - 1ef36: f7fb fd27 bl 1a988 -} - 1ef3a: f50d 7d0f add.w sp, sp, #572 ; 0x23c - 1ef3e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1f00c: 2300 movs r3, #0 + 1f00e: 2110 movs r1, #16 + 1f010: 4620 mov r0, r4 + 1f012: 461a mov r2, r3 + 1f014: 9300 str r3, [sp, #0] + 1f016: f7fb fd27 bl 1aa68 +} + 1f01a: f50d 7d0f add.w sp, sp, #572 ; 0x23c + 1f01e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if(backupActive()){ - 1ef42: 4620 mov r0, r4 - 1ef44: 9343 str r3, [sp, #268] ; 0x10c - 1ef46: e9cd 1244 strd r1, r2, [sp, #272] ; 0x110 - 1ef4a: f7fe f887 bl 1d05c - 1ef4e: 9a45 ldr r2, [sp, #276] ; 0x114 - 1ef50: e9dd 3143 ldrd r3, r1, [sp, #268] ; 0x10c - 1ef54: 2800 cmp r0, #0 - 1ef56: f000 8126 beq.w 1f1a6 + 1f022: 4620 mov r0, r4 + 1f024: 9343 str r3, [sp, #268] ; 0x10c + 1f026: e9cd 1244 strd r1, r2, [sp, #272] ; 0x110 + 1f02a: f7fe f887 bl 1d13c + 1f02e: 9a45 ldr r2, [sp, #276] ; 0x114 + 1f030: e9dd 3143 ldrd r3, r1, [sp, #268] ; 0x10c + 1f034: 2800 cmp r0, #0 + 1f036: f000 8126 beq.w 1f286 if(index >= maxDevices){ - 1ef5a: 42be cmp r6, r7 - 1ef5c: d9e6 bls.n 1ef2c + 1f03a: 42be cmp r6, r7 + 1f03c: d9e6 bls.n 1f00c if(write && incoming.size() != sysExLength){ - 1ef5e: f1b8 0f00 cmp.w r8, #0 - 1ef62: d0e3 beq.n 1ef2c - 1ef64: 454b cmp r3, r9 - 1ef66: f040 8153 bne.w 1f210 + 1f03e: f1b8 0f00 cmp.w r8, #0 + 1f042: d0e3 beq.n 1f00c + 1f044: 454b cmp r3, r9 + 1f046: f040 8153 bne.w 1f2f0 uint16_t pageToWrite = layer; - 1ef6a: f89d 8104 ldrb.w r8, [sp, #260] ; 0x104 + 1f04a: f89d 8104 ldrb.w r8, [sp, #260] ; 0x104 uint16_t maxLayerToWrite = layer+1; - 1ef6e: f108 0301 add.w r3, r8, #1 - 1ef72: 9343 str r3, [sp, #268] ; 0x10c + 1f04e: f108 0301 add.w r3, r8, #1 + 1f052: 9343 str r3, [sp, #268] ; 0x10c size_t print(const char s[]) { return write(s); } - 1ef74: 49a2 ldr r1, [pc, #648] ; (1f200 ) - 1ef76: 48a3 ldr r0, [pc, #652] ; (1f204 ) - 1ef78: f7fb fe8a bl 1ac90 - 1ef7c: 48a1 ldr r0, [pc, #644] ; (1f204 ) - 1ef7e: 49a2 ldr r1, [pc, #648] ; (1f208 ) - 1ef80: f7fb fe86 bl 1ac90 + 1f054: 49a2 ldr r1, [pc, #648] ; (1f2e0 ) + 1f056: 48a3 ldr r0, [pc, #652] ; (1f2e4 ) + 1f058: f7fb fe8a bl 1ad70 + 1f05c: 48a1 ldr r0, [pc, #644] ; (1f2e4 ) + 1f05e: 49a2 ldr r1, [pc, #648] ; (1f2e8 ) + 1f060: f7fb fe86 bl 1ad70 size_t print(int n) { return print((long)n); } - 1ef84: 4641 mov r1, r8 - 1ef86: 489f ldr r0, [pc, #636] ; (1f204 ) - 1ef88: f00a ff68 bl 29e5c + 1f064: 4641 mov r1, r8 + 1f066: 489f ldr r0, [pc, #636] ; (1f2e4 ) + 1f068: f00a ff6e bl 29f48 size_t print(const char s[]) { return write(s); } - 1ef8c: 489d ldr r0, [pc, #628] ; (1f204 ) - 1ef8e: 499e ldr r1, [pc, #632] ; (1f208 ) - 1ef90: f7fb fe7e bl 1ac90 + 1f06c: 489d ldr r0, [pc, #628] ; (1f2e4 ) + 1f06e: 499e ldr r1, [pc, #632] ; (1f2e8 ) + 1f070: f7fb fe7e bl 1ad70 size_t print(int n) { return print((long)n); } - 1ef94: 9943 ldr r1, [sp, #268] ; 0x10c - 1ef96: 489b ldr r0, [pc, #620] ; (1f204 ) - 1ef98: f00a ff60 bl 29e5c + 1f074: 9943 ldr r1, [sp, #268] ; 0x10c + 1f076: 489b ldr r0, [pc, #620] ; (1f2e4 ) + 1f078: f00a ff66 bl 29f48 size_t println(int n) { return print(n) + println(); } - 1ef9c: 4899 ldr r0, [pc, #612] ; (1f204 ) - 1ef9e: f00a ff69 bl 29e74 + 1f07c: 4899 ldr r0, [pc, #612] ; (1f2e4 ) + 1f07e: f00a ff6f bl 29f60 if(backupActive()){ - 1efa2: 4620 mov r0, r4 - 1efa4: f7fe f85a bl 1d05c + 1f082: 4620 mov r0, r4 + 1f084: f7fe f85a bl 1d13c if(pageToWrite >= BMC_MAX_LAYERS){ - 1efa8: f1b8 0f04 cmp.w r8, #4 - 1efac: d901 bls.n 1efb2 - 1efae: 2800 cmp r0, #0 - 1efb0: d1bc bne.n 1ef2c - 1efb2: 46c1 mov r9, r8 + 1f088: f1b8 0f04 cmp.w r8, #4 + 1f08c: d901 bls.n 1f092 + 1f08e: 2800 cmp r0, #0 + 1f090: d1bc bne.n 1f00c + 1f092: 46c1 mov r9, r8 switch(deviceType){ - 1efb4: 9b42 ldr r3, [sp, #264] ; 0x108 - 1efb6: 3b01 subs r3, #1 - 1efb8: 2b28 cmp r3, #40 ; 0x28 - 1efba: d849 bhi.n 1f050 - 1efbc: e8df f013 tbh [pc, r3, lsl #1] - 1efc0: 004808ac .word 0x004808ac - 1efc4: 088d0048 .word 0x088d0048 - 1efc8: 004806eb .word 0x004806eb - 1efcc: 004805c9 .word 0x004805c9 - 1efd0: 00480048 .word 0x00480048 - 1efd4: 00480048 .word 0x00480048 - 1efd8: 05560048 .word 0x05560048 - 1efdc: 00480048 .word 0x00480048 - 1efe0: 00480048 .word 0x00480048 - 1efe4: 00480048 .word 0x00480048 - 1efe8: 05350048 .word 0x05350048 - 1efec: 00480048 .word 0x00480048 - 1eff0: 00480048 .word 0x00480048 - 1eff4: 07670838 .word 0x07670838 - 1eff8: 072b081b .word 0x072b081b - 1effc: 07fd0048 .word 0x07fd0048 - 1f000: 07af0749 .word 0x07af0749 - 1f004: 004805e6 .word 0x004805e6 - 1f008: 065a06a1 .word 0x065a06a1 - 1f00c: 06050631 .word 0x06050631 - 1f010: 0029 .short 0x0029 + 1f094: 9b42 ldr r3, [sp, #264] ; 0x108 + 1f096: 3b01 subs r3, #1 + 1f098: 2b28 cmp r3, #40 ; 0x28 + 1f09a: d849 bhi.n 1f130 + 1f09c: e8df f013 tbh [pc, r3, lsl #1] + 1f0a0: 004808ac .word 0x004808ac + 1f0a4: 088d0048 .word 0x088d0048 + 1f0a8: 004806eb .word 0x004806eb + 1f0ac: 004805c9 .word 0x004805c9 + 1f0b0: 00480048 .word 0x00480048 + 1f0b4: 00480048 .word 0x00480048 + 1f0b8: 05560048 .word 0x05560048 + 1f0bc: 00480048 .word 0x00480048 + 1f0c0: 00480048 .word 0x00480048 + 1f0c4: 00480048 .word 0x00480048 + 1f0c8: 05350048 .word 0x05350048 + 1f0cc: 00480048 .word 0x00480048 + 1f0d0: 00480048 .word 0x00480048 + 1f0d4: 07670838 .word 0x07670838 + 1f0d8: 072b081b .word 0x072b081b + 1f0dc: 07fd0048 .word 0x07fd0048 + 1f0e0: 07af0749 .word 0x07af0749 + 1f0e4: 004805e6 .word 0x004805e6 + 1f0e8: 065a06a1 .word 0x065a06a1 + 1f0ec: 06050631 .word 0x06050631 + 1f0f0: 0029 .short 0x0029 (store.global.shortcuts[index], index); - 1f012: ebc7 03c7 rsb r3, r7, r7, lsl #3 - 1f016: 6821 ldr r1, [r4, #0] - 1f018: 4620 mov r0, r4 - 1f01a: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 1f01e: f603 7318 addw r3, r3, #3864 ; 0xf18 - 1f022: 4419 add r1, r3 - 1f024: f7fe fec2 bl 1ddac (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]> + 1f0f2: ebc7 03c7 rsb r3, r7, r7, lsl #3 + 1f0f6: 6821 ldr r1, [r4, #0] + 1f0f8: 4620 mov r0, r4 + 1f0fa: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 1f0fe: f603 7318 addw r3, r3, #3864 ; 0xf18 + 1f102: 4419 add r1, r3 + 1f104: f7fe fec2 bl 1de8c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]> if(!backupActive()){ - 1f028: 4620 mov r0, r4 - 1f02a: f7fe f817 bl 1d05c - 1f02e: 2800 cmp r0, #0 - 1f030: f47f af7c bne.w 1ef2c + 1f108: 4620 mov r0, r4 + 1f10a: f7fe f817 bl 1d13c + 1f10e: 2800 cmp r0, #0 + 1f110: f47f af7c bne.w 1f00c saveShortCuts(index); - 1f034: b2f9 uxtb r1, r7 - 1f036: 4620 mov r0, r4 - 1f038: f7fe f8dc bl 1d1f4 + 1f114: b2f9 uxtb r1, r7 + 1f116: 4620 mov r0, r4 + 1f118: f7fe f8dc bl 1d2d4 if(midi.globals.editorConnected()){ - 1f03c: 6863 ldr r3, [r4, #4] - 1f03e: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1f042: 6ddb ldr r3, [r3, #92] ; 0x5c - 1f044: 0758 lsls r0, r3, #29 - 1f046: d503 bpl.n 1f050 + 1f11c: 6863 ldr r3, [r4, #4] + 1f11e: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1f122: 6ddb ldr r3, [r3, #92] ; 0x5c + 1f124: 0758 lsls r0, r3, #29 + 1f126: d503 bpl.n 1f130 bitSet(flags, bit); - 1f048: 6b23 ldr r3, [r4, #48] ; 0x30 - 1f04a: f043 0304 orr.w r3, r3, #4 - 1f04e: 6323 str r3, [r4, #48] ; 0x30 + 1f128: 6b23 ldr r3, [r4, #48] ; 0x30 + 1f12a: f043 0304 orr.w r3, r3, #4 + 1f12e: 6323 str r3, [r4, #48] ; 0x30 if(backupActive()){ - 1f050: 4620 mov r0, r4 - 1f052: f7fe f803 bl 1d05c - 1f056: 2800 cmp r0, #0 - 1f058: f47f af68 bne.w 1ef2c - 1f05c: f89d 3104 ldrb.w r3, [sp, #260] ; 0x104 + 1f130: 4620 mov r0, r4 + 1f132: f7fe f803 bl 1d13c + 1f136: 2800 cmp r0, #0 + 1f138: f47f af68 bne.w 1f00c + 1f13c: f89d 3104 ldrb.w r3, [sp, #260] ; 0x104 buff.prepareEditorMessage( - 1f060: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 1f064: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 1f140: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 1f144: f894 202d ldrb.w r2, [r4, #45] ; 0x2d struct BMCMidiMessage { - 1f068: f50d 799a add.w r9, sp, #308 ; 0x134 - 1f06c: 9301 str r3, [sp, #4] - 1f06e: 2300 movs r3, #0 - 1f070: 4648 mov r0, r9 - 1f072: 9300 str r3, [sp, #0] - 1f074: f8c9 3000 str.w r3, [r9] - 1f078: f889 3004 strb.w r3, [r9, #4] - 1f07c: 2312 movs r3, #18 - 1f07e: f7fb ff21 bl 1aec4 + 1f148: f50d 799a add.w r9, sp, #308 ; 0x134 + 1f14c: 9301 str r3, [sp, #4] + 1f14e: 2300 movs r3, #0 + 1f150: 4648 mov r0, r9 + 1f152: 9300 str r3, [sp, #0] + 1f154: f8c9 3000 str.w r3, [r9] + 1f158: f889 3004 strb.w r3, [r9, #4] + 1f15c: 2312 movs r3, #18 + 1f15e: f7fb ff21 bl 1afa4 appendSysExByte(value & 0x7F); - 1f082: 2201 movs r2, #1 - 1f084: 4648 mov r0, r9 - 1f086: f005 017f and.w r1, r5, #127 ; 0x7f - 1f08a: f7fb fded bl 1ac68 + 1f162: 2201 movs r2, #1 + 1f164: 4648 mov r0, r9 + 1f166: f005 017f and.w r1, r5, #127 ; 0x7f + 1f16a: f7fb fded bl 1ad48 buff.appendToSysEx14Bits(index); - 1f08e: 4639 mov r1, r7 - 1f090: f7fc f886 bl 1b1a0 + 1f16e: 4639 mov r1, r7 + 1f170: f7fc f886 bl 1b280 buff.appendToSysEx14Bits(maxDevices); - 1f094: 4631 mov r1, r6 - 1f096: 4648 mov r0, r9 - 1f098: f7fc f882 bl 1b1a0 + 1f174: 4631 mov r1, r6 + 1f176: 4648 mov r0, r9 + 1f178: f7fc f882 bl 1b280 switch(deviceType){ - 1f09c: 9b42 ldr r3, [sp, #264] ; 0x108 - 1f09e: 3b01 subs r3, #1 - 1f0a0: 2b28 cmp r3, #40 ; 0x28 - 1f0a2: d86c bhi.n 1f17e - 1f0a4: e8df f013 tbh [pc, r3, lsl #1] - 1f0a8: 006b02d3 .word 0x006b02d3 - 1f0ac: 02c0006b .word 0x02c0006b - 1f0b0: 006b0366 .word 0x006b0366 - 1f0b4: 006b0377 .word 0x006b0377 - 1f0b8: 006b006b .word 0x006b006b - 1f0bc: 006b006b .word 0x006b006b - 1f0c0: 02e3006b .word 0x02e3006b - 1f0c4: 006b006b .word 0x006b006b - 1f0c8: 006b006b .word 0x006b006b - 1f0cc: 006b006b .word 0x006b006b - 1f0d0: 02ad006b .word 0x02ad006b - 1f0d4: 006b006b .word 0x006b006b - 1f0d8: 006b006b .word 0x006b006b - 1f0dc: 04500386 .word 0x04500386 - 1f0e0: 04320441 .word 0x04320441 - 1f0e4: 0423006b .word 0x0423006b - 1f0e8: 024404b1 .word 0x024404b1 - 1f0ec: 006b022c .word 0x006b022c - 1f0f0: 01bd0029 .word 0x01bd0029 - 1f0f4: 010e0163 .word 0x010e0163 - 1f0f8: 0102 .short 0x0102 + 1f17c: 9b42 ldr r3, [sp, #264] ; 0x108 + 1f17e: 3b01 subs r3, #1 + 1f180: 2b28 cmp r3, #40 ; 0x28 + 1f182: d86c bhi.n 1f25e + 1f184: e8df f013 tbh [pc, r3, lsl #1] + 1f188: 006b02d3 .word 0x006b02d3 + 1f18c: 02c0006b .word 0x02c0006b + 1f190: 006b0366 .word 0x006b0366 + 1f194: 006b0377 .word 0x006b0377 + 1f198: 006b006b .word 0x006b006b + 1f19c: 006b006b .word 0x006b006b + 1f1a0: 02e3006b .word 0x02e3006b + 1f1a4: 006b006b .word 0x006b006b + 1f1a8: 006b006b .word 0x006b006b + 1f1ac: 006b006b .word 0x006b006b + 1f1b0: 02ad006b .word 0x02ad006b + 1f1b4: 006b006b .word 0x006b006b + 1f1b8: 006b006b .word 0x006b006b + 1f1bc: 04500386 .word 0x04500386 + 1f1c0: 04320441 .word 0x04320441 + 1f1c4: 0423006b .word 0x0423006b + 1f1c8: 024404b1 .word 0x024404b1 + 1f1cc: 006b022c .word 0x006b022c + 1f1d0: 01bd0029 .word 0x01bd0029 + 1f1d4: 010e0163 .word 0x010e0163 + 1f1d8: 0102 .short 0x0102 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f0fa: ad48 add r5, sp, #288 ; 0x120 - 1f0fc: 463a mov r2, r7 - 1f0fe: 2125 movs r1, #37 ; 0x25 + 1f1da: ad48 add r5, sp, #288 ; 0x120 + 1f1dc: 463a mov r2, r7 + 1f1de: 2125 movs r1, #37 ; 0x25 (store.global.timedEvents[index], buff, index, deviceType); - 1f100: 6826 ldr r6, [r4, #0] + 1f1e0: 6826 ldr r6, [r4, #0] BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f102: 4628 mov r0, r5 - 1f104: f7fb fde6 bl 1acd4 - 1f108: f8b9 3003 ldrh.w r3, [r9, #3] + 1f1e2: 4628 mov r0, r5 + 1f1e4: f7fb fde6 bl 1adb4 + 1f1e8: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx14Bits(ui.pins[0]); - 1f10c: f9b5 2000 ldrsh.w r2, [r5] + 1f1ec: f9b5 2000 ldrsh.w r2, [r5] if(sysLength + 1f1f0: 2bfd cmp r3, #253 ; 0xfd + 1f1f2: f241 83aa bls.w 2094a buff.appendToSysEx14Bits(ui.pins[1]); - 1f116: 8869 ldrh r1, [r5, #2] - 1f118: 4648 mov r0, r9 - 1f11a: f7fc f841 bl 1b1a0 + 1f1f6: 8869 ldrh r1, [r5, #2] + 1f1f8: 4648 mov r0, r9 + 1f1fa: f7fc f841 bl 1b280 buff.appendToSysEx14Bits(ui.pins[2]); - 1f11e: 88a9 ldrh r1, [r5, #4] - 1f120: 4648 mov r0, r9 - 1f122: f7fc f83d bl 1b1a0 + 1f1fe: 88a9 ldrh r1, [r5, #4] + 1f200: 4648 mov r0, r9 + 1f202: f7fc f83d bl 1b280 buff.appendToSysEx16Bits(ui.x); - 1f126: 88e9 ldrh r1, [r5, #6] - 1f128: 4648 mov r0, r9 - 1f12a: f7fc f853 bl 1b1d4 + 1f206: 88e9 ldrh r1, [r5, #6] + 1f208: 4648 mov r0, r9 + 1f20a: f7fc f853 bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1f12e: 8929 ldrh r1, [r5, #8] - 1f130: 4648 mov r0, r9 - 1f132: f7fc f84f bl 1b1d4 - 1f136: f8b9 3003 ldrh.w r3, [r9, #3] + 1f20e: 8929 ldrh r1, [r5, #8] + 1f210: 4648 mov r0, r9 + 1f212: f7fc f84f bl 1b2b4 + 1f216: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx7Bits(ui.style); - 1f13a: 7aaa ldrb r2, [r5, #10] - 1f13c: 2bfd cmp r3, #253 ; 0xfd - 1f13e: f241 8347 bls.w 207d0 - 1f142: eb06 0587 add.w r5, r6, r7, lsl #2 + 1f21a: 7aaa ldrb r2, [r5, #10] + 1f21c: 2bfd cmp r3, #253 ; 0xfd + 1f21e: f241 8347 bls.w 208b0 + 1f222: eb06 0587 add.w r5, r6, r7, lsl #2 buff.appendToSysEx14Bits(item.name);// name - 1f146: 4648 mov r0, r9 - 1f148: ea4f 0887 mov.w r8, r7, lsl #2 - 1f14c: f505 5580 add.w r5, r5, #4096 ; 0x1000 - 1f150: f895 1550 ldrb.w r1, [r5, #1360] ; 0x550 - 1f154: f7fc f824 bl 1b1a0 + 1f226: 4648 mov r0, r9 + 1f228: ea4f 0887 mov.w r8, r7, lsl #2 + 1f22c: f505 5580 add.w r5, r5, #4096 ; 0x1000 + 1f230: f895 1550 ldrb.w r1, [r5, #1360] ; 0x550 + 1f234: f7fc f824 bl 1b280 uint16_t sysLength = size(); - 1f158: f8b9 3003 ldrh.w r3, [r9, #3] + 1f238: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 1f23c: 2bfd cmp r3, #253 ; 0xfd + 1f23e: f241 8304 bls.w 2084a buff.appendToSysEx8Bits(item.settings[i]); - 1f162: f241 5352 movw r3, #5458 ; 0x1552 - 1f166: 4446 add r6, r8 - 1f168: 5cf2 ldrb r2, [r6, r3] - 1f16a: f8b9 3003 ldrh.w r3, [r9, #3] - 1f16e: 2bfd cmp r3, #253 ; 0xfd - 1f170: f241 82e3 bls.w 2073a + 1f242: f241 5352 movw r3, #5458 ; 0x1552 + 1f246: 4446 add r6, r8 + 1f248: 5cf2 ldrb r2, [r6, r3] + 1f24a: f8b9 3003 ldrh.w r3, [r9, #3] + 1f24e: 2bfd cmp r3, #253 ; 0xfd + 1f250: f241 82e3 bls.w 2081a buff.appendToSysEx14Bits(item.events[i]); - 1f174: f895 1553 ldrb.w r1, [r5, #1363] ; 0x553 - 1f178: 4648 mov r0, r9 - 1f17a: f7fc f811 bl 1b1a0 + 1f254: f895 1553 ldrb.w r1, [r5, #1363] ; 0x553 + 1f258: 4648 mov r0, r9 + 1f25a: f7fc f811 bl 1b280 sendToEditor(buff); - 1f17e: 2301 movs r3, #1 - 1f180: 2000 movs r0, #0 - 1f182: a950 add r1, sp, #320 ; 0x140 - 1f184: 22f7 movs r2, #247 ; 0xf7 - 1f186: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 - 1f18a: 4668 mov r0, sp - 1f18c: f00b fabc bl 2a708 - 1f190: 4620 mov r0, r4 - 1f192: e899 000e ldmia.w r9, {r1, r2, r3} - 1f196: f7fb fb99 bl 1a8cc -} - 1f19a: f50d 7d0f add.w sp, sp, #572 ; 0x23c - 1f19e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 1f25e: 2301 movs r3, #1 + 1f260: 2000 movs r0, #0 + 1f262: a950 add r1, sp, #320 ; 0x140 + 1f264: 22f7 movs r2, #247 ; 0xf7 + 1f266: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 + 1f26a: 4668 mov r0, sp + 1f26c: f00b fac0 bl 2a7f0 + 1f270: 4620 mov r0, r4 + 1f272: e899 000e ldmia.w r9, {r1, r2, r3} + 1f276: f7fb fb99 bl 1a9ac +} + 1f27a: f50d 7d0f add.w sp, sp, #572 ; 0x23c + 1f27e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} return 0; - 1f1a2: 2600 movs r6, #0 + 1f282: 2600 movs r6, #0 if((t_offset+1) < size()){ - 1f1a4: e692 b.n 1eecc + 1f284: e692 b.n 1efac if(write && incoming.size() != sysExLength){ - 1f1a6: f1b8 0f00 cmp.w r8, #0 - 1f1aa: d07c beq.n 1f2a6 - 1f1ac: 4599 cmp r9, r3 - 1f1ae: d12f bne.n 1f210 + 1f286: f1b8 0f00 cmp.w r8, #0 + 1f28a: d07c beq.n 1f386 + 1f28c: 4599 cmp r9, r3 + 1f28e: d12f bne.n 1f2f0 if(write && maxDevices > 0){ - 1f1b0: 2e00 cmp r6, #0 - 1f1b2: f43f af4d beq.w 1f050 + 1f290: 2e00 cmp r6, #0 + 1f292: f43f af4d beq.w 1f130 uint16_t pageToWrite = layer; - 1f1b6: f89d 8104 ldrb.w r8, [sp, #260] ; 0x104 + 1f296: f89d 8104 ldrb.w r8, [sp, #260] ; 0x104 if(isDeviceWriteToAllLayers() && !backupActive()){ - 1f1ba: f01b 0f04 tst.w fp, #4 + 1f29a: f01b 0f04 tst.w fp, #4 uint16_t maxLayerToWrite = layer+1; - 1f1be: f108 0301 add.w r3, r8, #1 - 1f1c2: 9343 str r3, [sp, #268] ; 0x10c + 1f29e: f108 0301 add.w r3, r8, #1 + 1f2a2: 9343 str r3, [sp, #268] ; 0x10c if(isDeviceWriteToAllLayers() && !backupActive()){ - 1f1c4: f43f aed6 beq.w 1ef74 + 1f2a4: f43f aed6 beq.w 1f054 size_t print(const char s[]) { return write(s); } - 1f1c8: 4910 ldr r1, [pc, #64] ; (1f20c ) + 1f2a8: 4910 ldr r1, [pc, #64] ; (1f2ec ) size_t println(int n) { return print(n) + println(); } - 1f1ca: 46c1 mov r9, r8 + 1f2aa: 46c1 mov r9, r8 size_t print(const char s[]) { return write(s); } - 1f1cc: 480d ldr r0, [pc, #52] ; (1f204 ) + 1f2ac: 480d ldr r0, [pc, #52] ; (1f2e4 ) pageToWrite = 0; - 1f1ce: 46d0 mov r8, sl - 1f1d0: f7fb fd5e bl 1ac90 - 1f1d4: 480b ldr r0, [pc, #44] ; (1f204 ) - 1f1d6: 490c ldr r1, [pc, #48] ; (1f208 ) - 1f1d8: f7fb fd5a bl 1ac90 + 1f2ae: 46d0 mov r8, sl + 1f2b0: f7fb fd5e bl 1ad70 + 1f2b4: 480b ldr r0, [pc, #44] ; (1f2e4 ) + 1f2b6: 490c ldr r1, [pc, #48] ; (1f2e8 ) + 1f2b8: f7fb fd5a bl 1ad70 size_t print(int n) { return print((long)n); } - 1f1dc: 4651 mov r1, sl - 1f1de: 4809 ldr r0, [pc, #36] ; (1f204 ) - 1f1e0: f00a fe3c bl 29e5c + 1f2bc: 4651 mov r1, sl + 1f2be: 4809 ldr r0, [pc, #36] ; (1f2e4 ) + 1f2c0: f00a fe42 bl 29f48 size_t print(const char s[]) { return write(s); } - 1f1e4: 4908 ldr r1, [pc, #32] ; (1f208 ) - 1f1e6: 4807 ldr r0, [pc, #28] ; (1f204 ) - 1f1e8: f7fb fd52 bl 1ac90 + 1f2c4: 4908 ldr r1, [pc, #32] ; (1f2e8 ) + 1f2c6: 4807 ldr r0, [pc, #28] ; (1f2e4 ) + 1f2c8: f7fb fd52 bl 1ad70 size_t print(int n) { return print((long)n); } - 1f1ec: 2105 movs r1, #5 - 1f1ee: 4805 ldr r0, [pc, #20] ; (1f204 ) - 1f1f0: f00a fe34 bl 29e5c + 1f2cc: 2105 movs r1, #5 + 1f2ce: 4805 ldr r0, [pc, #20] ; (1f2e4 ) + 1f2d0: f00a fe3a bl 29f48 size_t println(int n) { return print(n) + println(); } - 1f1f4: 4803 ldr r0, [pc, #12] ; (1f204 ) - 1f1f6: f00a fe3d bl 29e74 + 1f2d4: 4803 ldr r0, [pc, #12] ; (1f2e4 ) + 1f2d6: f00a fe43 bl 29f60 maxLayerToWrite = BMC_MAX_LAYERS; - 1f1fa: 2305 movs r3, #5 - 1f1fc: 9343 str r3, [sp, #268] ; 0x10c - 1f1fe: e6d9 b.n 1efb4 - 1f200: 20003dd4 .word 0x20003dd4 - 1f204: 20004ba8 .word 0x20004ba8 - 1f208: 200023ec .word 0x200023ec - 1f20c: 20003df0 .word 0x20003df0 + 1f2da: 2305 movs r3, #5 + 1f2dc: 9343 str r3, [sp, #268] ; 0x10c + 1f2de: e6d9 b.n 1f094 + 1f2e0: 20003e94 .word 0x20003e94 + 1f2e4: 20004c68 .word 0x20004c68 + 1f2e8: 200023ec .word 0x200023ec + 1f2ec: 20003eb0 .word 0x20003eb0 size_t print(const char s[]) { return write(s); } - 1f210: 49c2 ldr r1, [pc, #776] ; (1f51c ) + 1f2f0: 49c2 ldr r1, [pc, #776] ; (1f5fc ) sendNotification(BMC_NOTIFY_INVALID_SIZE, sysExLength, true); - 1f212: 2500 movs r5, #0 - 1f214: 48c2 ldr r0, [pc, #776] ; (1f520 ) - 1f216: f7fb fd3b bl 1ac90 - 1f21a: 49c2 ldr r1, [pc, #776] ; (1f524 ) - 1f21c: 48c0 ldr r0, [pc, #768] ; (1f520 ) - 1f21e: f7fb fd37 bl 1ac90 + 1f2f2: 2500 movs r5, #0 + 1f2f4: 48c2 ldr r0, [pc, #776] ; (1f600 ) + 1f2f6: f7fb fd3b bl 1ad70 + 1f2fa: 49c2 ldr r1, [pc, #776] ; (1f604 ) + 1f2fc: 48c0 ldr r0, [pc, #768] ; (1f600 ) + 1f2fe: f7fb fd37 bl 1ad70 BMC_PRINTLN("******************* incoming.size()",incoming.size(),"sysExLength",sysExLength); - 1f222: 6be3 ldr r3, [r4, #60] ; 0x3c + 1f302: 6be3 ldr r3, [r4, #60] ; 0x3c size_t print(int n) { return print((long)n); } - 1f224: 48be ldr r0, [pc, #760] ; (1f520 ) - 1f226: f8b3 1003 ldrh.w r1, [r3, #3] - 1f22a: f00a fe17 bl 29e5c + 1f304: 48be ldr r0, [pc, #760] ; (1f600 ) + 1f306: f8b3 1003 ldrh.w r1, [r3, #3] + 1f30a: f00a fe1d bl 29f48 size_t print(const char s[]) { return write(s); } - 1f22e: 49bd ldr r1, [pc, #756] ; (1f524 ) - 1f230: 48bb ldr r0, [pc, #748] ; (1f520 ) - 1f232: f7fb fd2d bl 1ac90 - 1f236: 49bc ldr r1, [pc, #752] ; (1f528 ) - 1f238: 48b9 ldr r0, [pc, #740] ; (1f520 ) - 1f23a: f7fb fd29 bl 1ac90 - 1f23e: 49b9 ldr r1, [pc, #740] ; (1f524 ) - 1f240: 48b7 ldr r0, [pc, #732] ; (1f520 ) - 1f242: f7fb fd25 bl 1ac90 + 1f30e: 49bd ldr r1, [pc, #756] ; (1f604 ) + 1f310: 48bb ldr r0, [pc, #748] ; (1f600 ) + 1f312: f7fb fd2d bl 1ad70 + 1f316: 49bc ldr r1, [pc, #752] ; (1f608 ) + 1f318: 48b9 ldr r0, [pc, #740] ; (1f600 ) + 1f31a: f7fb fd29 bl 1ad70 + 1f31e: 49b9 ldr r1, [pc, #740] ; (1f604 ) + 1f320: 48b7 ldr r0, [pc, #732] ; (1f600 ) + 1f322: f7fb fd25 bl 1ad70 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 1f246: 4649 mov r1, r9 - 1f248: 2300 movs r3, #0 - 1f24a: 220a movs r2, #10 - 1f24c: 48b4 ldr r0, [pc, #720] ; (1f520 ) - 1f24e: f00a fe2d bl 29eac + 1f326: 4649 mov r1, r9 + 1f328: 2300 movs r3, #0 + 1f32a: 220a movs r2, #10 + 1f32c: 48b4 ldr r0, [pc, #720] ; (1f600 ) + 1f32e: f00a fe33 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 1f252: 48b3 ldr r0, [pc, #716] ; (1f520 ) - 1f254: f00a fe0e bl 29e74 + 1f332: 48b3 ldr r0, [pc, #716] ; (1f600 ) + 1f334: f00a fe14 bl 29f60 sendNotification(BMC_NOTIFY_INVALID_SIZE, sysExLength, true); - 1f258: 2301 movs r3, #1 - 1f25a: 464a mov r2, r9 - 1f25c: 210a movs r1, #10 - 1f25e: 4620 mov r0, r4 - 1f260: 9500 str r5, [sp, #0] - 1f262: f7fb fb91 bl 1a988 + 1f338: 2301 movs r3, #1 + 1f33a: 464a mov r2, r9 + 1f33c: 210a movs r1, #10 + 1f33e: 4620 mov r0, r4 + 1f340: 9500 str r5, [sp, #0] + 1f342: f7fb fb91 bl 1aa68 return; - 1f266: e5e3 b.n 1ee30 + 1f346: e5e3 b.n 1ef10 size_t print(const char s[]) { return write(s); } - 1f268: 49b0 ldr r1, [pc, #704] ; (1f52c ) - 1f26a: 48ad ldr r0, [pc, #692] ; (1f520 ) - 1f26c: f7fb fd10 bl 1ac90 - 1f270: 49ac ldr r1, [pc, #688] ; (1f524 ) - 1f272: 48ab ldr r0, [pc, #684] ; (1f520 ) - 1f274: f7fb fd0c bl 1ac90 + 1f348: 49b0 ldr r1, [pc, #704] ; (1f60c ) + 1f34a: 48ad ldr r0, [pc, #692] ; (1f600 ) + 1f34c: f7fb fd10 bl 1ad70 + 1f350: 49ac ldr r1, [pc, #688] ; (1f604 ) + 1f352: 48ab ldr r0, [pc, #684] ; (1f600 ) + 1f354: f7fb fd0c bl 1ad70 size_t print(int n) { return print((long)n); } - 1f278: 4639 mov r1, r7 - 1f27a: 48a9 ldr r0, [pc, #676] ; (1f520 ) - 1f27c: f00a fdee bl 29e5c + 1f358: 4639 mov r1, r7 + 1f35a: 48a9 ldr r0, [pc, #676] ; (1f600 ) + 1f35c: f00a fdf4 bl 29f48 size_t print(const char s[]) { return write(s); } - 1f280: 49a8 ldr r1, [pc, #672] ; (1f524 ) - 1f282: 48a7 ldr r0, [pc, #668] ; (1f520 ) - 1f284: f7fb fd04 bl 1ac90 + 1f360: 49a8 ldr r1, [pc, #672] ; (1f604 ) + 1f362: 48a7 ldr r0, [pc, #668] ; (1f600 ) + 1f364: f7fb fd04 bl 1ad70 size_t print(int n) { return print((long)n); } - 1f288: 4631 mov r1, r6 - 1f28a: 48a5 ldr r0, [pc, #660] ; (1f520 ) - 1f28c: f00a fde6 bl 29e5c + 1f368: 4631 mov r1, r6 + 1f36a: 48a5 ldr r0, [pc, #660] ; (1f600 ) + 1f36c: f00a fdec bl 29f48 size_t println(int n) { return print(n) + println(); } - 1f290: 48a3 ldr r0, [pc, #652] ; (1f520 ) - 1f292: f00a fdef bl 29e74 + 1f370: 48a3 ldr r0, [pc, #652] ; (1f600 ) + 1f372: f00a fdf5 bl 29f60 sendNotification(BMC_NOTIFY_INVALID_DEVICE, index, true); - 1f296: 2301 movs r3, #1 - 1f298: 463a mov r2, r7 - 1f29a: 2107 movs r1, #7 - 1f29c: 4620 mov r0, r4 - 1f29e: 9500 str r5, [sp, #0] - 1f2a0: f7fb fb72 bl 1a988 + 1f376: 2301 movs r3, #1 + 1f378: 463a mov r2, r7 + 1f37a: 2107 movs r1, #7 + 1f37c: 4620 mov r0, r4 + 1f37e: 9500 str r5, [sp, #0] + 1f380: f7fb fb72 bl 1aa68 return; - 1f2a4: e5c4 b.n 1ee30 - 1f2a6: f89d 3104 ldrb.w r3, [sp, #260] ; 0x104 - 1f2aa: e6dd b.n 1f068 + 1f384: e5c4 b.n 1ef10 + 1f386: f89d 3104 ldrb.w r3, [sp, #260] ; 0x104 + 1f38a: e6dd b.n 1f148 (store.global.shortcuts[index], buff, index, deviceType); - 1f2ac: ebc7 03c7 rsb r3, r7, r7, lsl #3 - 1f2b0: 6820 ldr r0, [r4, #0] - 1f2b2: 463a mov r2, r7 - 1f2b4: 4649 mov r1, r9 - 1f2b6: f603 7318 addw r3, r3, #3864 ; 0xf18 - 1f2ba: 4418 add r0, r3 - 1f2bc: 2329 movs r3, #41 ; 0x29 - 1f2be: f7fc fad5 bl 1b86c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> + 1f38c: ebc7 03c7 rsb r3, r7, r7, lsl #3 + 1f390: 6820 ldr r0, [r4, #0] + 1f392: 463a mov r2, r7 + 1f394: 4649 mov r1, r9 + 1f396: f603 7318 addw r3, r3, #3864 ; 0xf18 + 1f39a: 4418 add r0, r3 + 1f39c: 2329 movs r3, #41 ; 0x29 + 1f39e: f7fc fad5 bl 1b94c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> break; - 1f2c2: e75c b.n 1f17e + 1f3a2: e75c b.n 1f25e BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f2c4: 463a mov r2, r7 - 1f2c6: a848 add r0, sp, #288 ; 0x120 - 1f2c8: 2128 movs r1, #40 ; 0x28 + 1f3a4: 463a mov r2, r7 + 1f3a6: a848 add r0, sp, #288 ; 0x120 + 1f3a8: 2128 movs r1, #40 ; 0x28 (store.global.portPresets[index], buff, index, deviceType); - 1f2ca: 6825 ldr r5, [r4, #0] + 1f3aa: 6825 ldr r5, [r4, #0] BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f2cc: f7fb fd02 bl 1acd4 + 1f3ac: f7fb fd02 bl 1adb4 buff.appendToSysEx14Bits(ui.pins[0]); - 1f2d0: f8bd 1120 ldrh.w r1, [sp, #288] ; 0x120 - 1f2d4: 4648 mov r0, r9 - 1f2d6: eb05 0547 add.w r5, r5, r7, lsl #1 - 1f2da: f7fb ff61 bl 1b1a0 + 1f3b0: f8bd 1120 ldrh.w r1, [sp, #288] ; 0x120 + 1f3b4: 4648 mov r0, r9 + 1f3b6: eb05 0547 add.w r5, r5, r7, lsl #1 + 1f3ba: f7fb ff61 bl 1b280 buff.appendToSysEx14Bits(ui.pins[1]); - 1f2de: f8bd 1122 ldrh.w r1, [sp, #290] ; 0x122 - 1f2e2: 4648 mov r0, r9 - 1f2e4: f7fb ff5c bl 1b1a0 + 1f3be: f8bd 1122 ldrh.w r1, [sp, #290] ; 0x122 + 1f3c2: 4648 mov r0, r9 + 1f3c4: f7fb ff5c bl 1b280 buff.appendToSysEx14Bits(ui.pins[2]); - 1f2e8: f8bd 1124 ldrh.w r1, [sp, #292] ; 0x124 - 1f2ec: 4648 mov r0, r9 - 1f2ee: f7fb ff57 bl 1b1a0 + 1f3c8: f8bd 1124 ldrh.w r1, [sp, #292] ; 0x124 + 1f3cc: 4648 mov r0, r9 + 1f3ce: f7fb ff57 bl 1b280 buff.appendToSysEx16Bits(ui.x); - 1f2f2: f8bd 1126 ldrh.w r1, [sp, #294] ; 0x126 - 1f2f6: 4648 mov r0, r9 - 1f2f8: f7fb ff6c bl 1b1d4 + 1f3d2: f8bd 1126 ldrh.w r1, [sp, #294] ; 0x126 + 1f3d6: 4648 mov r0, r9 + 1f3d8: f7fb ff6c bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1f2fc: f8bd 1128 ldrh.w r1, [sp, #296] ; 0x128 - 1f300: 4648 mov r0, r9 - 1f302: f7fb ff67 bl 1b1d4 + 1f3dc: f8bd 1128 ldrh.w r1, [sp, #296] ; 0x128 + 1f3e0: 4648 mov r0, r9 + 1f3e2: f7fb ff67 bl 1b2b4 appendSysExByte(value & 0x7F); - 1f306: f89d 112a ldrb.w r1, [sp, #298] ; 0x12a - 1f30a: 4648 mov r0, r9 - 1f30c: 2201 movs r2, #1 - 1f30e: f001 017f and.w r1, r1, #127 ; 0x7f - 1f312: f7fb fca9 bl 1ac68 - 1f316: f89d 112b ldrb.w r1, [sp, #299] ; 0x12b - 1f31a: 2201 movs r2, #1 - 1f31c: f001 017f and.w r1, r1, #127 ; 0x7f - 1f320: f7fb fca2 bl 1ac68 - 1f324: f89d 112c ldrb.w r1, [sp, #300] ; 0x12c - 1f328: 2201 movs r2, #1 - 1f32a: f001 017f and.w r1, r1, #127 ; 0x7f - 1f32e: f7fb fc9b bl 1ac68 + 1f3e6: f89d 112a ldrb.w r1, [sp, #298] ; 0x12a + 1f3ea: 4648 mov r0, r9 + 1f3ec: 2201 movs r2, #1 + 1f3ee: f001 017f and.w r1, r1, #127 ; 0x7f + 1f3f2: f7fb fca9 bl 1ad48 + 1f3f6: f89d 112b ldrb.w r1, [sp, #299] ; 0x12b + 1f3fa: 2201 movs r2, #1 + 1f3fc: f001 017f and.w r1, r1, #127 ; 0x7f + 1f400: f7fb fca2 bl 1ad48 + 1f404: f89d 112c ldrb.w r1, [sp, #300] ; 0x12c + 1f408: 2201 movs r2, #1 + 1f40a: f001 017f and.w r1, r1, #127 ; 0x7f + 1f40e: f7fb fc9b bl 1ad48 buff.appendToSysEx14Bits(ui.mergeIndex); - 1f332: f8bd 112e ldrh.w r1, [sp, #302] ; 0x12e - 1f336: f7fb ff33 bl 1b1a0 + 1f412: f8bd 112e ldrh.w r1, [sp, #302] ; 0x12e + 1f416: f7fb ff33 bl 1b280 buff.appendToSysEx7Bits(ui.other1); - 1f33a: f8bd 1130 ldrh.w r1, [sp, #304] ; 0x130 - 1f33e: 4648 mov r0, r9 - 1f340: 2201 movs r2, #1 - 1f342: f001 017f and.w r1, r1, #127 ; 0x7f - 1f346: f7fb fc8f bl 1ac68 + 1f41a: f8bd 1130 ldrh.w r1, [sp, #304] ; 0x130 + 1f41e: 4648 mov r0, r9 + 1f420: 2201 movs r2, #1 + 1f422: f001 017f and.w r1, r1, #127 ; 0x7f + 1f426: f7fb fc8f bl 1ad48 buff.appendToSysEx14Bits(item.name);// name - 1f34a: f895 1ef8 ldrb.w r1, [r5, #3832] ; 0xef8 - 1f34e: f7fb ff27 bl 1b1a0 - 1f352: 4648 mov r0, r9 - 1f354: 2201 movs r2, #1 - 1f356: 2100 movs r1, #0 - 1f358: f7fb fc86 bl 1ac68 - 1f35c: 2201 movs r2, #1 - 1f35e: 4611 mov r1, r2 - 1f360: f7fb fc82 bl 1ac68 + 1f42a: f895 1ef8 ldrb.w r1, [r5, #3832] ; 0xef8 + 1f42e: f7fb ff27 bl 1b280 + 1f432: 4648 mov r0, r9 + 1f434: 2201 movs r2, #1 + 1f436: 2100 movs r1, #0 + 1f438: f7fb fc86 bl 1ad48 + 1f43c: 2201 movs r2, #1 + 1f43e: 4611 mov r1, r2 + 1f440: f7fb fc82 bl 1ad48 buff.appendToSysEx14Bits(item.events[i]); - 1f364: f895 1ef9 ldrb.w r1, [r5, #3833] ; 0xef9 - 1f368: f7fb ff1a bl 1b1a0 + 1f444: f895 1ef9 ldrb.w r1, [r5, #3833] ; 0xef9 + 1f448: f7fb ff1a bl 1b280 } - 1f36c: e707 b.n 1f17e + 1f44c: e707 b.n 1f25e BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f36e: 2200 movs r2, #0 - 1f370: 2127 movs r1, #39 ; 0x27 - 1f372: a848 add r0, sp, #288 ; 0x120 + 1f44e: 2200 movs r2, #0 + 1f450: 2127 movs r1, #39 ; 0x27 + 1f452: a848 add r0, sp, #288 ; 0x120 (store.global.sketchBytes[0], buff, 0, deviceType); - 1f374: 6826 ldr r6, [r4, #0] + 1f454: 6826 ldr r6, [r4, #0] BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f376: f7fb fcad bl 1acd4 + 1f456: f7fb fcad bl 1adb4 buff.appendToSysEx14Bits(ui.pins[0]); - 1f37a: f8bd 1120 ldrh.w r1, [sp, #288] ; 0x120 - 1f37e: 4648 mov r0, r9 - 1f380: f606 7528 addw r5, r6, #3880 ; 0xf28 - 1f384: f7fb ff0c bl 1b1a0 + 1f45a: f8bd 1120 ldrh.w r1, [sp, #288] ; 0x120 + 1f45e: 4648 mov r0, r9 + 1f460: f606 7528 addw r5, r6, #3880 ; 0xf28 + 1f464: f7fb ff0c bl 1b280 buff.appendToSysEx14Bits(ui.pins[1]); - 1f388: f8bd 1122 ldrh.w r1, [sp, #290] ; 0x122 - 1f38c: 4648 mov r0, r9 - 1f38e: f606 762c addw r6, r6, #3884 ; 0xf2c - 1f392: f7fb ff05 bl 1b1a0 + 1f468: f8bd 1122 ldrh.w r1, [sp, #290] ; 0x122 + 1f46c: 4648 mov r0, r9 + 1f46e: f606 762c addw r6, r6, #3884 ; 0xf2c + 1f472: f7fb ff05 bl 1b280 buff.appendToSysEx14Bits(ui.pins[2]); - 1f396: f8bd 1124 ldrh.w r1, [sp, #292] ; 0x124 - 1f39a: 4648 mov r0, r9 - 1f39c: f7fb ff00 bl 1b1a0 + 1f476: f8bd 1124 ldrh.w r1, [sp, #292] ; 0x124 + 1f47a: 4648 mov r0, r9 + 1f47c: f7fb ff00 bl 1b280 buff.appendToSysEx16Bits(ui.x); - 1f3a0: f8bd 1126 ldrh.w r1, [sp, #294] ; 0x126 - 1f3a4: 4648 mov r0, r9 - 1f3a6: f7fb ff15 bl 1b1d4 + 1f480: f8bd 1126 ldrh.w r1, [sp, #294] ; 0x126 + 1f484: 4648 mov r0, r9 + 1f486: f7fb ff15 bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1f3aa: f8bd 1128 ldrh.w r1, [sp, #296] ; 0x128 - 1f3ae: 4648 mov r0, r9 - 1f3b0: f7fb ff10 bl 1b1d4 - 1f3b4: f89d 112a ldrb.w r1, [sp, #298] ; 0x12a - 1f3b8: 4648 mov r0, r9 - 1f3ba: 2201 movs r2, #1 - 1f3bc: f001 017f and.w r1, r1, #127 ; 0x7f - 1f3c0: f7fb fc52 bl 1ac68 - 1f3c4: f89d 112b ldrb.w r1, [sp, #299] ; 0x12b - 1f3c8: 2201 movs r2, #1 - 1f3ca: f001 017f and.w r1, r1, #127 ; 0x7f - 1f3ce: f7fb fc4b bl 1ac68 - 1f3d2: f89d 112c ldrb.w r1, [sp, #300] ; 0x12c - 1f3d6: 2201 movs r2, #1 - 1f3d8: f001 017f and.w r1, r1, #127 ; 0x7f - 1f3dc: f7fb fc44 bl 1ac68 + 1f48a: f8bd 1128 ldrh.w r1, [sp, #296] ; 0x128 + 1f48e: 4648 mov r0, r9 + 1f490: f7fb ff10 bl 1b2b4 + 1f494: f89d 112a ldrb.w r1, [sp, #298] ; 0x12a + 1f498: 4648 mov r0, r9 + 1f49a: 2201 movs r2, #1 + 1f49c: f001 017f and.w r1, r1, #127 ; 0x7f + 1f4a0: f7fb fc52 bl 1ad48 + 1f4a4: f89d 112b ldrb.w r1, [sp, #299] ; 0x12b + 1f4a8: 2201 movs r2, #1 + 1f4aa: f001 017f and.w r1, r1, #127 ; 0x7f + 1f4ae: f7fb fc4b bl 1ad48 + 1f4b2: f89d 112c ldrb.w r1, [sp, #300] ; 0x12c + 1f4b6: 2201 movs r2, #1 + 1f4b8: f001 017f and.w r1, r1, #127 ; 0x7f + 1f4bc: f7fb fc44 bl 1ad48 buff.appendToSysEx14Bits(ui.mergeIndex); - 1f3e0: f8bd 112e ldrh.w r1, [sp, #302] ; 0x12e - 1f3e4: f7fb fedc bl 1b1a0 + 1f4c0: f8bd 112e ldrh.w r1, [sp, #302] ; 0x12e + 1f4c4: f7fb fedc bl 1b280 buff.appendToSysEx7Bits(ui.other1); - 1f3e8: f8bd 1130 ldrh.w r1, [sp, #304] ; 0x130 - 1f3ec: 2201 movs r2, #1 - 1f3ee: 4648 mov r0, r9 - 1f3f0: f001 017f and.w r1, r1, #127 ; 0x7f - 1f3f4: f7fb fc38 bl 1ac68 + 1f4c8: f8bd 1130 ldrh.w r1, [sp, #304] ; 0x130 + 1f4cc: 2201 movs r2, #1 + 1f4ce: 4648 mov r0, r9 + 1f4d0: f001 017f and.w r1, r1, #127 ; 0x7f + 1f4d4: f7fb fc38 bl 1ad48 buff.appendToSysEx14Bits(item.name);// name - 1f3f8: f816 1c04 ldrb.w r1, [r6, #-4] - 1f3fc: f7fb fed0 bl 1b1a0 - 1f400: 2201 movs r2, #1 - 1f402: 2100 movs r1, #0 - 1f404: 4648 mov r0, r9 - 1f406: f7fb fc2f bl 1ac68 - 1f40a: 2201 movs r2, #1 - 1f40c: 2104 movs r1, #4 - 1f40e: f7fb fc2b bl 1ac68 + 1f4d8: f816 1c04 ldrb.w r1, [r6, #-4] + 1f4dc: f7fb fed0 bl 1b280 + 1f4e0: 2201 movs r2, #1 + 1f4e2: 2100 movs r1, #0 + 1f4e4: 4648 mov r0, r9 + 1f4e6: f7fb fc2f bl 1ad48 + 1f4ea: 2201 movs r2, #1 + 1f4ec: 2104 movs r1, #4 + 1f4ee: f7fb fc2b bl 1ad48 buff.appendToSysEx14Bits(item.events[i]); - 1f412: f815 1f01 ldrb.w r1, [r5, #1]! - 1f416: 4648 mov r0, r9 - 1f418: f7fb fec2 bl 1b1a0 + 1f4f2: f815 1f01 ldrb.w r1, [r5, #1]! + 1f4f6: 4648 mov r0, r9 + 1f4f8: f7fb fec2 bl 1b280 for(uint8_t i=0;i - 1f420: e6ad b.n 1f17e + 1f4fc: 42b5 cmp r5, r6 + 1f4fe: d1f8 bne.n 1f4f2 + 1f500: e6ad b.n 1f25e BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f422: 463a mov r2, r7 - 1f424: 2126 movs r1, #38 ; 0x26 - 1f426: a848 add r0, sp, #288 ; 0x120 + 1f502: 463a mov r2, r7 + 1f504: 2126 movs r1, #38 ; 0x26 + 1f506: a848 add r0, sp, #288 ; 0x120 (store.global.lfo[index], buff, index, deviceType); - 1f428: 6825 ldr r5, [r4, #0] + 1f508: 6825 ldr r5, [r4, #0] BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f42a: f7fb fc53 bl 1acd4 + 1f50a: f7fb fc53 bl 1adb4 buff.appendToSysEx14Bits(ui.pins[0]); - 1f42e: f8bd 1120 ldrh.w r1, [sp, #288] ; 0x120 - 1f432: 4648 mov r0, r9 - 1f434: f7fb feb4 bl 1b1a0 + 1f50e: f8bd 1120 ldrh.w r1, [sp, #288] ; 0x120 + 1f512: 4648 mov r0, r9 + 1f514: f7fb feb4 bl 1b280 buff.appendToSysEx14Bits(ui.pins[1]); - 1f438: f8bd 1122 ldrh.w r1, [sp, #290] ; 0x122 - 1f43c: 4648 mov r0, r9 - 1f43e: f7fb feaf bl 1b1a0 + 1f518: f8bd 1122 ldrh.w r1, [sp, #290] ; 0x122 + 1f51c: 4648 mov r0, r9 + 1f51e: f7fb feaf bl 1b280 buff.appendToSysEx14Bits(ui.pins[2]); - 1f442: f8bd 1124 ldrh.w r1, [sp, #292] ; 0x124 - 1f446: 4648 mov r0, r9 - 1f448: f7fb feaa bl 1b1a0 + 1f522: f8bd 1124 ldrh.w r1, [sp, #292] ; 0x124 + 1f526: 4648 mov r0, r9 + 1f528: f7fb feaa bl 1b280 buff.appendToSysEx16Bits(ui.x); - 1f44c: f8bd 1126 ldrh.w r1, [sp, #294] ; 0x126 - 1f450: 4648 mov r0, r9 - 1f452: f7fb febf bl 1b1d4 + 1f52c: f8bd 1126 ldrh.w r1, [sp, #294] ; 0x126 + 1f530: 4648 mov r0, r9 + 1f532: f7fb febf bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1f456: f8bd 1128 ldrh.w r1, [sp, #296] ; 0x128 - 1f45a: 4648 mov r0, r9 - 1f45c: f7fb feba bl 1b1d4 - 1f460: f8b9 3003 ldrh.w r3, [r9, #3] + 1f536: f8bd 1128 ldrh.w r1, [sp, #296] ; 0x128 + 1f53a: 4648 mov r0, r9 + 1f53c: f7fb feba bl 1b2b4 + 1f540: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx7Bits(ui.style); - 1f464: f89d 212a ldrb.w r2, [sp, #298] ; 0x12a + 1f544: f89d 212a ldrb.w r2, [sp, #298] ; 0x12a if(sysLength + 1f548: 2bfd cmp r3, #253 ; 0xfd + 1f54a: f241 80c9 bls.w 206e0 buff.appendToSysEx14Bits(item.name);// name - 1f46e: eb07 03c7 add.w r3, r7, r7, lsl #3 - 1f472: 4648 mov r0, r9 - 1f474: ea4f 08c7 mov.w r8, r7, lsl #3 - 1f478: 442b add r3, r5 - 1f47a: f893 1f1f ldrb.w r1, [r3, #3871] ; 0xf1f - 1f47e: f7fb fe8f bl 1b1a0 + 1f54e: eb07 03c7 add.w r3, r7, r7, lsl #3 + 1f552: 4648 mov r0, r9 + 1f554: ea4f 08c7 mov.w r8, r7, lsl #3 + 1f558: 442b add r3, r5 + 1f55a: f893 1f1f ldrb.w r1, [r3, #3871] ; 0xf1f + 1f55e: f7fb fe8f bl 1b280 uint16_t sysLength = size(); - 1f482: f8b9 3003 ldrh.w r3, [r9, #3] + 1f562: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength - 1f48c: 44b8 add r8, r7 - 1f48e: f605 7623 addw r6, r5, #3875 ; 0xf23 + 1f566: 2bfd cmp r3, #253 ; 0xfd + 1f568: f241 8008 bls.w 2057c + 1f56c: 44b8 add r8, r7 + 1f56e: f605 7623 addw r6, r5, #3875 ; 0xf23 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f492: 2000 movs r0, #0 - 1f494: f508 6172 add.w r1, r8, #3872 ; 0xf20 - 1f498: 4446 add r6, r8 - 1f49a: 4429 add r1, r5 + 1f572: 2000 movs r0, #0 + 1f574: f508 6172 add.w r1, r8, #3872 ; 0xf20 + 1f578: 4446 add r6, r8 + 1f57a: 4429 add r1, r5 if(sysLength + 1f57c: 2bfd cmp r3, #253 ; 0xfd + 1f57e: f240 8716 bls.w 203ae for(uint8_t i=0;i - 1f4a8: f608 7222 addw r2, r8, #3874 ; 0xf22 - 1f4ac: f605 7127 addw r1, r5, #3879 ; 0xf27 - 1f4b0: 2bfd cmp r3, #253 ; 0xfd + 1f582: 3101 adds r1, #1 + 1f584: 428e cmp r6, r1 + 1f586: d1f9 bne.n 1f57c + 1f588: f608 7222 addw r2, r8, #3874 ; 0xf22 + 1f58c: f605 7127 addw r1, r5, #3879 ; 0xf27 + 1f590: 2bfd cmp r3, #253 ; 0xfd void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f4b2: f04f 0600 mov.w r6, #0 - 1f4b6: 442a add r2, r5 + 1f592: f04f 0600 mov.w r6, #0 + 1f596: 442a add r2, r5 for(uint8_t i=0;i + 1f59e: d908 bls.n 1f5b2 for(uint8_t i=0;i - 1f4c6: f8b9 3003 ldrh.w r3, [r9, #3] + 1f5a0: 4291 cmp r1, r2 + 1f5a2: f43f ae5c beq.w 1f25e + 1f5a6: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx14Bits(item.events[i]); - 1f4ca: f812 0f01 ldrb.w r0, [r2, #1]! - 1f4ce: 2bfd cmp r3, #253 ; 0xfd - 1f4d0: d8f6 bhi.n 1f4c0 + 1f5aa: f812 0f01 ldrb.w r0, [r2, #1]! + 1f5ae: 2bfd cmp r3, #253 ; 0xfd + 1f5b0: d8f6 bhi.n 1f5a0 sysex[sysLength++] = value; - 1f4d2: eb09 0503 add.w r5, r9, r3 - 1f4d6: 3301 adds r3, #1 + 1f5b2: eb09 0503 add.w r5, r9, r3 + 1f5b6: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f4d8: f889 6004 strb.w r6, [r9, #4] + 1f5b8: f889 6004 strb.w r6, [r9, #4] setData1(value & 0xFF); - 1f4dc: f889 3003 strb.w r3, [r9, #3] + 1f5bc: f889 3003 strb.w r3, [r9, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1f4e0: 09c3 lsrs r3, r0, #7 + 1f5c0: 09c3 lsrs r3, r0, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1f4e2: f000 007f and.w r0, r0, #127 ; 0x7f + 1f5c2: f000 007f and.w r0, r0, #127 ; 0x7f appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1f4e6: 716b strb r3, [r5, #5] + 1f5c6: 716b strb r3, [r5, #5] uint16_t sysLength = size(); - 1f4e8: f8b9 3003 ldrh.w r3, [r9, #3] + 1f5c8: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 1f5d6: d8e3 bhi.n 1f5a0 setData1(value & 0xFF); - 1f4f8: f889 3003 strb.w r3, [r9, #3] + 1f5d8: f889 3003 strb.w r3, [r9, #3] sysex[sysLength++] = value; - 1f4fc: 7168 strb r0, [r5, #5] + 1f5dc: 7168 strb r0, [r5, #5] return true; - 1f4fe: e7df b.n 1f4c0 + 1f5de: e7df b.n 1f5a0 (store.global.tempoToTap[index], buff, index, deviceType); - 1f500: eb07 0147 add.w r1, r7, r7, lsl #1 - 1f504: f241 534a movw r3, #5450 ; 0x154a - 1f508: 6820 ldr r0, [r4, #0] - 1f50a: 463a mov r2, r7 - 1f50c: 440b add r3, r1 - 1f50e: 4649 mov r1, r9 - 1f510: 4418 add r0, r3 - 1f512: 2323 movs r3, #35 ; 0x23 - 1f514: f7fc f816 bl 1b544 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> + 1f5e0: eb07 0147 add.w r1, r7, r7, lsl #1 + 1f5e4: f241 534a movw r3, #5450 ; 0x154a + 1f5e8: 6820 ldr r0, [r4, #0] + 1f5ea: 463a mov r2, r7 + 1f5ec: 440b add r3, r1 + 1f5ee: 4649 mov r1, r9 + 1f5f0: 4418 add r0, r3 + 1f5f2: 2323 movs r3, #35 ; 0x23 + 1f5f4: f7fc f816 bl 1b624 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> break; - 1f518: e631 b.n 1f17e - 1f51a: bf00 nop - 1f51c: 20003da4 .word 0x20003da4 - 1f520: 20004ba8 .word 0x20004ba8 - 1f524: 200023ec .word 0x200023ec - 1f528: 20003dc8 .word 0x20003dc8 - 1f52c: 20003d80 .word 0x20003d80 + 1f5f8: e631 b.n 1f25e + 1f5fa: bf00 nop + 1f5fc: 20003e64 .word 0x20003e64 + 1f600: 20004c68 .word 0x20004c68 + 1f604: 200023ec .word 0x200023ec + 1f608: 20003e88 .word 0x20003e88 + 1f60c: 20003e40 .word 0x20003e40 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f530: ad48 add r5, sp, #288 ; 0x120 - 1f532: 463a mov r2, r7 - 1f534: 2122 movs r1, #34 ; 0x22 + 1f610: ad48 add r5, sp, #288 ; 0x120 + 1f612: 463a mov r2, r7 + 1f614: 2122 movs r1, #34 ; 0x22 (store.global.triggers[index], buff, index, deviceType); - 1f536: 6826 ldr r6, [r4, #0] + 1f616: 6826 ldr r6, [r4, #0] BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f538: 4628 mov r0, r5 - 1f53a: f7fb fbcb bl 1acd4 - 1f53e: f8b9 3003 ldrh.w r3, [r9, #3] + 1f618: 4628 mov r0, r5 + 1f61a: f7fb fbcb bl 1adb4 + 1f61e: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx14Bits(ui.pins[0]); - 1f542: f9b5 2000 ldrsh.w r2, [r5] + 1f622: f9b5 2000 ldrsh.w r2, [r5] if(sysLength + 1f626: 2bfd cmp r3, #253 ; 0xfd + 1f628: f240 878f bls.w 2054a buff.appendToSysEx14Bits(ui.pins[1]); - 1f54c: 8869 ldrh r1, [r5, #2] - 1f54e: 4648 mov r0, r9 - 1f550: f7fb fe26 bl 1b1a0 + 1f62c: 8869 ldrh r1, [r5, #2] + 1f62e: 4648 mov r0, r9 + 1f630: f7fb fe26 bl 1b280 buff.appendToSysEx14Bits(ui.pins[2]); - 1f554: 88a9 ldrh r1, [r5, #4] - 1f556: 4648 mov r0, r9 - 1f558: f7fb fe22 bl 1b1a0 + 1f634: 88a9 ldrh r1, [r5, #4] + 1f636: 4648 mov r0, r9 + 1f638: f7fb fe22 bl 1b280 buff.appendToSysEx16Bits(ui.x); - 1f55c: 88e9 ldrh r1, [r5, #6] - 1f55e: 4648 mov r0, r9 - 1f560: f7fb fe38 bl 1b1d4 + 1f63c: 88e9 ldrh r1, [r5, #6] + 1f63e: 4648 mov r0, r9 + 1f640: f7fb fe38 bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1f564: 8929 ldrh r1, [r5, #8] - 1f566: 4648 mov r0, r9 - 1f568: f7fb fe34 bl 1b1d4 - 1f56c: f8b9 3003 ldrh.w r3, [r9, #3] + 1f644: 8929 ldrh r1, [r5, #8] + 1f646: 4648 mov r0, r9 + 1f648: f7fb fe34 bl 1b2b4 + 1f64c: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx7Bits(ui.style); - 1f570: 7aaa ldrb r2, [r5, #10] - 1f572: 2bfd cmp r3, #253 ; 0xfd - 1f574: f240 87dd bls.w 20532 + 1f650: 7aaa ldrb r2, [r5, #10] + 1f652: 2bfd cmp r3, #253 ; 0xfd + 1f654: f240 87dd bls.w 20612 buff.appendToSysEx14Bits(ui.mergeIndex); - 1f578: 89e9 ldrh r1, [r5, #14] - 1f57a: 4648 mov r0, r9 - 1f57c: f7fb fe10 bl 1b1a0 + 1f658: 89e9 ldrh r1, [r5, #14] + 1f65a: 4648 mov r0, r9 + 1f65c: f7fb fe10 bl 1b280 uint16_t sysLength = size(); - 1f580: f8b9 3003 ldrh.w r3, [r9, #3] + 1f660: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 1f664: 2bfd cmp r3, #253 ; 0xfd + 1f666: d80b bhi.n 1f680 sysex[sysLength++] = value; - 1f588: eb09 0103 add.w r1, r9, r3 + 1f668: eb09 0103 add.w r1, r9, r3 buff.appendToSysEx7Bits(ui.other1); - 1f58c: 8a2a ldrh r2, [r5, #16] - 1f58e: 3301 adds r3, #1 + 1f66c: 8a2a ldrh r2, [r5, #16] + 1f66e: 3301 adds r3, #1 appendSysExByte(value & 0x7F); - 1f590: f002 027f and.w r2, r2, #127 ; 0x7f + 1f670: f002 027f and.w r2, r2, #127 ; 0x7f setData1(value & 0xFF); - 1f594: f889 3003 strb.w r3, [r9, #3] + 1f674: f889 3003 strb.w r3, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f598: 2300 movs r3, #0 + 1f678: 2300 movs r3, #0 sysex[sysLength++] = value; - 1f59a: 714a strb r2, [r1, #5] + 1f67a: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f59c: f889 3004 strb.w r3, [r9, #4] + 1f67c: f889 3004 strb.w r3, [r9, #4] return true; - 1f5a0: eb06 0587 add.w r5, r6, r7, lsl #2 + 1f680: eb06 0587 add.w r5, r6, r7, lsl #2 buff.appendToSysEx14Bits(item.name);// name - 1f5a4: 4648 mov r0, r9 - 1f5a6: ea4f 0887 mov.w r8, r7, lsl #2 - 1f5aa: f505 5580 add.w r5, r5, #4096 ; 0x1000 - 1f5ae: f895 153a ldrb.w r1, [r5, #1338] ; 0x53a - 1f5b2: f7fb fdf5 bl 1b1a0 + 1f684: 4648 mov r0, r9 + 1f686: ea4f 0887 mov.w r8, r7, lsl #2 + 1f68a: f505 5580 add.w r5, r5, #4096 ; 0x1000 + 1f68e: f895 153a ldrb.w r1, [r5, #1338] ; 0x53a + 1f692: f7fb fdf5 bl 1b280 uint16_t sysLength = size(); - 1f5b6: f8b9 3003 ldrh.w r3, [r9, #3] + 1f696: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 1f69a: 2bfd cmp r3, #253 ; 0xfd + 1f69c: f241 8071 bls.w 20782 for(uint8_t i=0;i + 1f6a4: 4446 add r6, r8 + 1f6a6: f241 523d movw r2, #5437 ; 0x153d + 1f6aa: 2bfd cmp r3, #253 ; 0xfd + 1f6ac: 5cb2 ldrb r2, [r6, r2] + 1f6ae: f63f add6 bhi.w 1f25e sysex[sysLength++] = value; - 1f5d2: eb09 0003 add.w r0, r9, r3 - 1f5d6: 3301 adds r3, #1 + 1f6b2: eb09 0003 add.w r0, r9, r3 + 1f6b6: 3301 adds r3, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1f5d8: f002 017f and.w r1, r2, #127 ; 0x7f + 1f6b8: f002 017f and.w r1, r2, #127 ; 0x7f appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1f5dc: 09d2 lsrs r2, r2, #7 + 1f6bc: 09d2 lsrs r2, r2, #7 setData1(value & 0xFF); - 1f5de: f889 3003 strb.w r3, [r9, #3] + 1f6be: f889 3003 strb.w r3, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f5e2: 2300 movs r3, #0 + 1f6c2: 2300 movs r3, #0 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1f5e4: 7142 strb r2, [r0, #5] + 1f6c4: 7142 strb r2, [r0, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f5e6: f889 3004 strb.w r3, [r9, #4] - 1f5ea: f8b9 3003 ldrh.w r3, [r9, #3] + 1f6c6: f889 3004 strb.w r3, [r9, #4] + 1f6ca: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 1f6ce: 2bfd cmp r3, #253 ; 0xfd + 1f6d0: f63f adc5 bhi.w 1f25e sysex[sysLength++] = value; - 1f5f4: eb09 0203 add.w r2, r9, r3 - 1f5f8: 3301 adds r3, #1 - 1f5fa: 7151 strb r1, [r2, #5] + 1f6d4: eb09 0203 add.w r2, r9, r3 + 1f6d8: 3301 adds r3, #1 + 1f6da: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 1f5fc: f889 3003 strb.w r3, [r9, #3] + 1f6dc: f889 3003 strb.w r3, [r9, #3] } - 1f600: e5bd b.n 1f17e + 1f6e0: e5bd b.n 1f25e (store.layers[layer].oled[index], buff, index, deviceType); - 1f602: 9846 ldr r0, [sp, #280] ; 0x118 - 1f604: eb07 0147 add.w r1, r7, r7, lsl #1 - 1f608: 463a mov r2, r7 - 1f60a: eb00 1340 add.w r3, r0, r0, lsl #5 - 1f60e: eb00 0383 add.w r3, r0, r3, lsl #2 - 1f612: 6820 ldr r0, [r4, #0] - 1f614: 4419 add r1, r3 - 1f616: f241 53d3 movw r3, #5587 ; 0x15d3 - 1f61a: 440b add r3, r1 - 1f61c: 4649 mov r1, r9 - 1f61e: 4418 add r0, r3 - 1f620: 2316 movs r3, #22 - 1f622: f7fb ff8f bl 1b544 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> + 1f6e2: 9846 ldr r0, [sp, #280] ; 0x118 + 1f6e4: eb07 0147 add.w r1, r7, r7, lsl #1 + 1f6e8: 463a mov r2, r7 + 1f6ea: eb00 1340 add.w r3, r0, r0, lsl #5 + 1f6ee: eb00 0383 add.w r3, r0, r3, lsl #2 + 1f6f2: 6820 ldr r0, [r4, #0] + 1f6f4: 4419 add r1, r3 + 1f6f6: f241 53d3 movw r3, #5587 ; 0x15d3 + 1f6fa: 440b add r3, r1 + 1f6fc: 4649 mov r1, r9 + 1f6fe: 4418 add r0, r3 + 1f700: 2316 movs r3, #22 + 1f702: f7fb ff8f bl 1b624 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> break; - 1f626: e5aa b.n 1f17e + 1f706: e5aa b.n 1f25e (store.layers[layer].buttons[index], buff, index, deviceType); - 1f628: eb07 0347 add.w r3, r7, r7, lsl #1 - 1f62c: 9846 ldr r0, [sp, #280] ; 0x118 - 1f62e: 2185 movs r1, #133 ; 0x85 - 1f630: 463a mov r2, r7 - 1f632: eb07 0383 add.w r3, r7, r3, lsl #2 - 1f636: fb11 3100 smlabb r1, r1, r0, r3 - 1f63a: f241 5367 movw r3, #5479 ; 0x1567 - 1f63e: 6820 ldr r0, [r4, #0] - 1f640: 440b add r3, r1 - 1f642: 4649 mov r1, r9 - 1f644: 4418 add r0, r3 - 1f646: 2304 movs r3, #4 - 1f648: f7fc f834 bl 1b6b4 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> + 1f708: eb07 0347 add.w r3, r7, r7, lsl #1 + 1f70c: 9846 ldr r0, [sp, #280] ; 0x118 + 1f70e: 2185 movs r1, #133 ; 0x85 + 1f710: 463a mov r2, r7 + 1f712: eb07 0383 add.w r3, r7, r3, lsl #2 + 1f716: fb11 3100 smlabb r1, r1, r0, r3 + 1f71a: f241 5367 movw r3, #5479 ; 0x1567 + 1f71e: 6820 ldr r0, [r4, #0] + 1f720: 440b add r3, r1 + 1f722: 4649 mov r1, r9 + 1f724: 4418 add r0, r3 + 1f726: 2304 movs r3, #4 + 1f728: f7fc f834 bl 1b794 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> break; - 1f64c: e597 b.n 1f17e + 1f72c: e597 b.n 1f25e (store.layers[layer].events[index], buff, index, deviceType); - 1f64e: ebc7 01c7 rsb r1, r7, r7, lsl #3 - 1f652: 9846 ldr r0, [sp, #280] ; 0x118 - 1f654: 2385 movs r3, #133 ; 0x85 - 1f656: 463a mov r2, r7 - 1f658: fb13 1300 smlabb r3, r3, r0, r1 - 1f65c: 6820 ldr r0, [r4, #0] - 1f65e: 4649 mov r1, r9 - 1f660: f503 53ab add.w r3, r3, #5472 ; 0x1560 - 1f664: 4418 add r0, r3 - 1f666: 2301 movs r3, #1 - 1f668: f7fc f900 bl 1b86c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> + 1f72e: ebc7 01c7 rsb r1, r7, r7, lsl #3 + 1f732: 9846 ldr r0, [sp, #280] ; 0x118 + 1f734: 2385 movs r3, #133 ; 0x85 + 1f736: 463a mov r2, r7 + 1f738: fb13 1300 smlabb r3, r3, r0, r1 + 1f73c: 6820 ldr r0, [r4, #0] + 1f73e: 4649 mov r1, r9 + 1f740: f503 53ab add.w r3, r3, #5472 ; 0x1560 + 1f744: 4418 add r0, r3 + 1f746: 2301 movs r3, #1 + 1f748: f7fc f900 bl 1b94c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> break; - 1f66c: e587 b.n 1f17e + 1f74c: e587 b.n 1f25e BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f66e: ad48 add r5, sp, #288 ; 0x120 - 1f670: 463a mov r2, r7 - 1f672: 210e movs r1, #14 + 1f74e: ad48 add r5, sp, #288 ; 0x120 + 1f750: 463a mov r2, r7 + 1f752: 210e movs r1, #14 (store.layers[layer].rgbPixels[index], buff, index, deviceType); - 1f674: 6826 ldr r6, [r4, #0] + 1f754: 6826 ldr r6, [r4, #0] BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f676: 4628 mov r0, r5 - 1f678: f7fb fb2c bl 1acd4 + 1f756: 4628 mov r0, r5 + 1f758: f7fb fb2c bl 1adb4 buff.appendToSysEx14Bits(ui.pins[0]); - 1f67c: 8829 ldrh r1, [r5, #0] - 1f67e: 4648 mov r0, r9 - 1f680: f7fb fd8e bl 1b1a0 + 1f75c: 8829 ldrh r1, [r5, #0] + 1f75e: 4648 mov r0, r9 + 1f760: f7fb fd8e bl 1b280 buff.appendToSysEx14Bits(ui.pins[1]); - 1f684: 8869 ldrh r1, [r5, #2] - 1f686: 4648 mov r0, r9 - 1f688: f7fb fd8a bl 1b1a0 - 1f68c: f8b9 3003 ldrh.w r3, [r9, #3] + 1f764: 8869 ldrh r1, [r5, #2] + 1f766: 4648 mov r0, r9 + 1f768: f7fb fd8a bl 1b280 + 1f76c: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx14Bits(ui.pins[2]); - 1f690: f9b5 2004 ldrsh.w r2, [r5, #4] + 1f770: f9b5 2004 ldrsh.w r2, [r5, #4] if(sysLength + 1f774: 2bfd cmp r3, #253 ; 0xfd + 1f776: f240 879a bls.w 206ae buff.appendToSysEx16Bits(ui.x); - 1f69a: 88e9 ldrh r1, [r5, #6] - 1f69c: 4648 mov r0, r9 - 1f69e: f7fb fd99 bl 1b1d4 + 1f77a: 88e9 ldrh r1, [r5, #6] + 1f77c: 4648 mov r0, r9 + 1f77e: f7fb fd99 bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1f6a2: 8929 ldrh r1, [r5, #8] - 1f6a4: 4648 mov r0, r9 - 1f6a6: f7fb fd95 bl 1b1d4 - 1f6aa: f8b9 3003 ldrh.w r3, [r9, #3] + 1f782: 8929 ldrh r1, [r5, #8] + 1f784: 4648 mov r0, r9 + 1f786: f7fb fd95 bl 1b2b4 + 1f78a: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx7Bits(ui.style); - 1f6ae: 7aaa ldrb r2, [r5, #10] - 1f6b0: 2bfd cmp r3, #253 ; 0xfd - 1f6b2: f240 8765 bls.w 20580 + 1f78e: 7aaa ldrb r2, [r5, #10] + 1f790: 2bfd cmp r3, #253 ; 0xfd + 1f792: f240 8765 bls.w 20660 buff.appendToSysEx14Bits(ui.mergeIndex); - 1f6b6: 89e9 ldrh r1, [r5, #14] - 1f6b8: 4648 mov r0, r9 - 1f6ba: f7fb fd71 bl 1b1a0 + 1f796: 89e9 ldrh r1, [r5, #14] + 1f798: 4648 mov r0, r9 + 1f79a: f7fb fd71 bl 1b280 uint16_t sysLength = size(); - 1f6be: f8b9 3003 ldrh.w r3, [r9, #3] + 1f79e: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 1f7a2: 2bfd cmp r3, #253 ; 0xfd + 1f7a4: d80b bhi.n 1f7be sysex[sysLength++] = value; - 1f6c6: eb09 0103 add.w r1, r9, r3 + 1f7a6: eb09 0103 add.w r1, r9, r3 buff.appendToSysEx7Bits(ui.other1); - 1f6ca: 8a2a ldrh r2, [r5, #16] - 1f6cc: 3301 adds r3, #1 + 1f7aa: 8a2a ldrh r2, [r5, #16] + 1f7ac: 3301 adds r3, #1 appendSysExByte(value & 0x7F); - 1f6ce: f002 027f and.w r2, r2, #127 ; 0x7f + 1f7ae: f002 027f and.w r2, r2, #127 ; 0x7f setData1(value & 0xFF); - 1f6d2: f889 3003 strb.w r3, [r9, #3] + 1f7b2: f889 3003 strb.w r3, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f6d6: 2300 movs r3, #0 + 1f7b6: 2300 movs r3, #0 sysex[sysLength++] = value; - 1f6d8: 714a strb r2, [r1, #5] + 1f7b8: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f6da: f889 3004 strb.w r3, [r9, #4] + 1f7ba: f889 3004 strb.w r3, [r9, #4] buff.appendToSysEx14Bits(item.name);// name - 1f6de: 9a46 ldr r2, [sp, #280] ; 0x118 - 1f6e0: eb07 0587 add.w r5, r7, r7, lsl #2 - 1f6e4: 4648 mov r0, r9 - 1f6e6: ea4f 0887 mov.w r8, r7, lsl #2 - 1f6ea: eb02 1342 add.w r3, r2, r2, lsl #5 - 1f6ee: eb02 0383 add.w r3, r2, r3, lsl #2 - 1f6f2: 441d add r5, r3 - 1f6f4: f241 53b5 movw r3, #5557 ; 0x15b5 - 1f6f8: 4435 add r5, r6 - 1f6fa: 5ce9 ldrb r1, [r5, r3] - 1f6fc: f7fb fd50 bl 1b1a0 + 1f7be: 9a46 ldr r2, [sp, #280] ; 0x118 + 1f7c0: eb07 0587 add.w r5, r7, r7, lsl #2 + 1f7c4: 4648 mov r0, r9 + 1f7c6: ea4f 0887 mov.w r8, r7, lsl #2 + 1f7ca: eb02 1342 add.w r3, r2, r2, lsl #5 + 1f7ce: eb02 0383 add.w r3, r2, r3, lsl #2 + 1f7d2: 441d add r5, r3 + 1f7d4: f241 53b5 movw r3, #5557 ; 0x15b5 + 1f7d8: 4435 add r5, r6 + 1f7da: 5ce9 ldrb r1, [r5, r3] + 1f7dc: f7fb fd50 bl 1b280 uint16_t sysLength = size(); - 1f700: f8b9 3003 ldrh.w r3, [r9, #3] + 1f7e0: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength - 1f70a: 9946 ldr r1, [sp, #280] ; 0x118 - 1f70c: 44b8 add r8, r7 - 1f70e: 2285 movs r2, #133 ; 0x85 - 1f710: 2bfd cmp r3, #253 ; 0xfd + 1f7e4: 2bfd cmp r3, #253 ; 0xfd + 1f7e6: f240 86e1 bls.w 205ac + 1f7ea: 9946 ldr r1, [sp, #280] ; 0x118 + 1f7ec: 44b8 add r8, r7 + 1f7ee: 2285 movs r2, #133 ; 0x85 + 1f7f0: 2bfd cmp r3, #253 ; 0xfd void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f712: f04f 0500 mov.w r5, #0 - 1f716: fb12 8201 smlabb r2, r2, r1, r8 - 1f71a: f241 51b6 movw r1, #5558 ; 0x15b6 - 1f71e: 4411 add r1, r2 - 1f720: f04f 0203 mov.w r2, #3 - 1f724: 4431 add r1, r6 + 1f7f2: f04f 0500 mov.w r5, #0 + 1f7f6: fb12 8201 smlabb r2, r2, r1, r8 + 1f7fa: f241 51b6 movw r1, #5558 ; 0x15b6 + 1f7fe: 4411 add r1, r2 + 1f800: f04f 0203 mov.w r2, #3 + 1f804: 4431 add r1, r6 for(uint8_t i=0;i + 1f80e: d90a bls.n 1f826 for(uint8_t i=0;i - 1f738: f8b9 3003 ldrh.w r3, [r9, #3] - 1f73c: 3a01 subs r2, #1 + 1f810: f012 02ff ands.w r2, r2, #255 ; 0xff + 1f814: f43f ad23 beq.w 1f25e + 1f818: f8b9 3003 ldrh.w r3, [r9, #3] + 1f81c: 3a01 subs r2, #1 buff.appendToSysEx14Bits(item.events[i]); - 1f73e: f811 0f01 ldrb.w r0, [r1, #1]! - 1f742: 2bfd cmp r3, #253 ; 0xfd - 1f744: d8f4 bhi.n 1f730 + 1f81e: f811 0f01 ldrb.w r0, [r1, #1]! + 1f822: 2bfd cmp r3, #253 ; 0xfd + 1f824: d8f4 bhi.n 1f810 sysex[sysLength++] = value; - 1f746: eb09 0603 add.w r6, r9, r3 - 1f74a: 3301 adds r3, #1 + 1f826: eb09 0603 add.w r6, r9, r3 + 1f82a: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f74c: f889 5004 strb.w r5, [r9, #4] + 1f82c: f889 5004 strb.w r5, [r9, #4] setData1(value & 0xFF); - 1f750: f889 3003 strb.w r3, [r9, #3] + 1f830: f889 3003 strb.w r3, [r9, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1f754: 09c3 lsrs r3, r0, #7 + 1f834: 09c3 lsrs r3, r0, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1f756: f000 007f and.w r0, r0, #127 ; 0x7f + 1f836: f000 007f and.w r0, r0, #127 ; 0x7f appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1f75a: 7173 strb r3, [r6, #5] + 1f83a: 7173 strb r3, [r6, #5] uint16_t sysLength = size(); - 1f75c: f8b9 3003 ldrh.w r3, [r9, #3] + 1f83c: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 1f84a: d8e1 bhi.n 1f810 setData1(value & 0xFF); - 1f76c: f889 3003 strb.w r3, [r9, #3] + 1f84c: f889 3003 strb.w r3, [r9, #3] sysex[sysLength++] = value; - 1f770: 7170 strb r0, [r6, #5] + 1f850: 7170 strb r0, [r6, #5] return true; - 1f772: e7dd b.n 1f730 - 1f774: ea4f 0b47 mov.w fp, r7, lsl #1 + 1f852: e7dd b.n 1f810 + 1f854: ea4f 0b47 mov.w fp, r7, lsl #1 (store.global.buttons[index], buff, index, deviceType); - 1f778: eb0b 0107 add.w r1, fp, r7 - 1f77c: f241 43bd movw r3, #5309 ; 0x14bd - 1f780: 6820 ldr r0, [r4, #0] - 1f782: 463a mov r2, r7 - 1f784: eb07 0181 add.w r1, r7, r1, lsl #2 - 1f788: 440b add r3, r1 - 1f78a: 4649 mov r1, r9 - 1f78c: 4418 add r0, r3 - 1f78e: 2305 movs r3, #5 - 1f790: f7fb ff90 bl 1b6b4 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> + 1f858: eb0b 0107 add.w r1, fp, r7 + 1f85c: f241 43bd movw r3, #5309 ; 0x14bd + 1f860: 6820 ldr r0, [r4, #0] + 1f862: 463a mov r2, r7 + 1f864: eb07 0181 add.w r1, r7, r1, lsl #2 + 1f868: 440b add r3, r1 + 1f86a: 4649 mov r1, r9 + 1f86c: 4418 add r0, r3 + 1f86e: 2305 movs r3, #5 + 1f870: f7fb ff90 bl 1b794 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> break; - 1f794: e4f3 b.n 1f17e - 1f796: ea4f 0b47 mov.w fp, r7, lsl #1 + 1f874: e4f3 b.n 1f25e + 1f876: ea4f 0b47 mov.w fp, r7, lsl #1 (store.global.leds[index], buff, index, deviceType); - 1f79a: eb0b 0107 add.w r1, fp, r7 - 1f79e: f241 43d7 movw r3, #5335 ; 0x14d7 - 1f7a2: 6820 ldr r0, [r4, #0] - 1f7a4: 463a mov r2, r7 - 1f7a6: 440b add r3, r1 - 1f7a8: 4649 mov r1, r9 - 1f7aa: 4418 add r0, r3 - 1f7ac: 2307 movs r3, #7 - 1f7ae: f7fb fec9 bl 1b544 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> + 1f87a: eb0b 0107 add.w r1, fp, r7 + 1f87e: f241 43d7 movw r3, #5335 ; 0x14d7 + 1f882: 6820 ldr r0, [r4, #0] + 1f884: 463a mov r2, r7 + 1f886: 440b add r3, r1 + 1f888: 4649 mov r1, r9 + 1f88a: 4418 add r0, r3 + 1f88c: 2307 movs r3, #7 + 1f88e: f7fb fec9 bl 1b624 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> break; - 1f7b2: e4e4 b.n 1f17e - 1f7b4: ea4f 0b47 mov.w fp, r7, lsl #1 + 1f892: e4e4 b.n 1f25e + 1f894: ea4f 0b47 mov.w fp, r7, lsl #1 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f7b8: ad48 add r5, sp, #288 ; 0x120 - 1f7ba: 463a mov r2, r7 - 1f7bc: 211b movs r1, #27 + 1f898: ad48 add r5, sp, #288 ; 0x120 + 1f89a: 463a mov r2, r7 + 1f89c: 211b movs r1, #27 (store.global.auxJacks[index], buff, index, deviceType); - 1f7be: 6826 ldr r6, [r4, #0] + 1f89e: 6826 ldr r6, [r4, #0] BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f7c0: 4628 mov r0, r5 - 1f7c2: f7fb fa87 bl 1acd4 + 1f8a0: 4628 mov r0, r5 + 1f8a2: f7fb fa87 bl 1adb4 buff.appendToSysEx14Bits(ui.pins[0]); - 1f7c6: 8829 ldrh r1, [r5, #0] - 1f7c8: 4648 mov r0, r9 - 1f7ca: f7fb fce9 bl 1b1a0 + 1f8a6: 8829 ldrh r1, [r5, #0] + 1f8a8: 4648 mov r0, r9 + 1f8aa: f7fb fce9 bl 1b280 buff.appendToSysEx14Bits(ui.pins[1]); - 1f7ce: 8869 ldrh r1, [r5, #2] - 1f7d0: 4648 mov r0, r9 - 1f7d2: f7fb fce5 bl 1b1a0 + 1f8ae: 8869 ldrh r1, [r5, #2] + 1f8b0: 4648 mov r0, r9 + 1f8b2: f7fb fce5 bl 1b280 buff.appendToSysEx14Bits(ui.pins[2]); - 1f7d6: 88a9 ldrh r1, [r5, #4] - 1f7d8: 4648 mov r0, r9 - 1f7da: f7fb fce1 bl 1b1a0 + 1f8b6: 88a9 ldrh r1, [r5, #4] + 1f8b8: 4648 mov r0, r9 + 1f8ba: f7fb fce1 bl 1b280 buff.appendToSysEx16Bits(ui.x); - 1f7de: 88e9 ldrh r1, [r5, #6] - 1f7e0: 4648 mov r0, r9 - 1f7e2: f7fb fcf7 bl 1b1d4 + 1f8be: 88e9 ldrh r1, [r5, #6] + 1f8c0: 4648 mov r0, r9 + 1f8c2: f7fb fcf7 bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1f7e6: 8929 ldrh r1, [r5, #8] - 1f7e8: 4648 mov r0, r9 - 1f7ea: f7fb fcf3 bl 1b1d4 - 1f7ee: f8b9 3003 ldrh.w r3, [r9, #3] + 1f8c6: 8929 ldrh r1, [r5, #8] + 1f8c8: 4648 mov r0, r9 + 1f8ca: f7fb fcf3 bl 1b2b4 + 1f8ce: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx7Bits(ui.style); - 1f7f2: 7aaa ldrb r2, [r5, #10] + 1f8d2: 7aaa ldrb r2, [r5, #10] if(sysLength + 1f8d4: 2bfd cmp r3, #253 ; 0xfd + 1f8d6: f240 8611 bls.w 204fc buff.appendToSysEx14Bits(ui.mergeIndex); - 1f7fa: 89e9 ldrh r1, [r5, #14] - 1f7fc: 4648 mov r0, r9 - 1f7fe: f7fb fccf bl 1b1a0 + 1f8da: 89e9 ldrh r1, [r5, #14] + 1f8dc: 4648 mov r0, r9 + 1f8de: f7fb fccf bl 1b280 uint16_t sysLength = size(); - 1f802: f8b9 3003 ldrh.w r3, [r9, #3] + 1f8e2: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 1f8e6: 2bfd cmp r3, #253 ; 0xfd + 1f8e8: d80b bhi.n 1f902 sysex[sysLength++] = value; - 1f80a: eb09 0103 add.w r1, r9, r3 + 1f8ea: eb09 0103 add.w r1, r9, r3 buff.appendToSysEx7Bits(ui.other1); - 1f80e: 8a2a ldrh r2, [r5, #16] - 1f810: 3301 adds r3, #1 + 1f8ee: 8a2a ldrh r2, [r5, #16] + 1f8f0: 3301 adds r3, #1 appendSysExByte(value & 0x7F); - 1f812: f002 027f and.w r2, r2, #127 ; 0x7f + 1f8f2: f002 027f and.w r2, r2, #127 ; 0x7f setData1(value & 0xFF); - 1f816: f889 3003 strb.w r3, [r9, #3] + 1f8f6: f889 3003 strb.w r3, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f81a: 2300 movs r3, #0 + 1f8fa: 2300 movs r3, #0 sysex[sysLength++] = value; - 1f81c: 714a strb r2, [r1, #5] + 1f8fc: 714a strb r2, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f81e: f889 3004 strb.w r3, [r9, #4] + 1f8fe: f889 3004 strb.w r3, [r9, #4] buff.appendToSysEx14Bits(item.name);// name - 1f822: eb0b 0307 add.w r3, fp, r7 - 1f826: f241 42ec movw r2, #5356 ; 0x14ec - 1f82a: 4648 mov r0, r9 - 1f82c: eb06 0343 add.w r3, r6, r3, lsl #1 - 1f830: 5c99 ldrb r1, [r3, r2] - 1f832: f7fb fcb5 bl 1b1a0 + 1f902: eb0b 0307 add.w r3, fp, r7 + 1f906: f241 42ec movw r2, #5356 ; 0x14ec + 1f90a: 4648 mov r0, r9 + 1f90c: eb06 0343 add.w r3, r6, r3, lsl #1 + 1f910: 5c99 ldrb r1, [r3, r2] + 1f912: f7fb fcb5 bl 1b280 uint16_t sysLength = size(); - 1f836: f8b9 3003 ldrh.w r3, [r9, #3] + 1f916: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength - 1f840: eb0b 0007 add.w r0, fp, r7 - 1f844: f241 41ed movw r1, #5357 ; 0x14ed - 1f848: 2200 movs r2, #0 - 1f84a: eb06 0540 add.w r5, r6, r0, lsl #1 + 1f91a: 2bfd cmp r3, #253 ; 0xfd + 1f91c: f240 85d6 bls.w 204cc + 1f920: eb0b 0007 add.w r0, fp, r7 + 1f924: f241 41ed movw r1, #5357 ; 0x14ed + 1f928: 2200 movs r2, #0 + 1f92a: eb06 0540 add.w r5, r6, r0, lsl #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f84e: 4617 mov r7, r2 - 1f850: 0040 lsls r0, r0, #1 - 1f852: 4429 add r1, r5 + 1f92e: 4617 mov r7, r2 + 1f930: 0040 lsls r0, r0, #1 + 1f932: 4429 add r1, r5 if(sysLength + 1f934: 2bfd cmp r3, #253 ; 0xfd + 1f936: d930 bls.n 1f99a for(uint8_t i=0;i - 1f85e: f241 42ee movw r2, #5358 ; 0x14ee - 1f862: f241 41f1 movw r1, #5361 ; 0x14f1 - 1f866: 2bfd cmp r3, #253 ; 0xfd + 1f938: 2a00 cmp r2, #0 + 1f93a: f000 8535 beq.w 203a8 + 1f93e: f241 42ee movw r2, #5358 ; 0x14ee + 1f942: f241 41f1 movw r1, #5361 ; 0x14f1 + 1f946: 2bfd cmp r3, #253 ; 0xfd void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f868: f04f 0500 mov.w r5, #0 - 1f86c: 4402 add r2, r0 - 1f86e: 4431 add r1, r6 - 1f870: 4432 add r2, r6 + 1f948: f04f 0500 mov.w r5, #0 + 1f94c: 4402 add r2, r0 + 1f94e: 4431 add r1, r6 + 1f950: 4432 add r2, r6 for(uint8_t i=0;i + 1f958: d908 bls.n 1f96c for(uint8_t i=0;i - 1f880: f8b9 3003 ldrh.w r3, [r9, #3] + 1f95a: 428a cmp r2, r1 + 1f95c: f43f ac7f beq.w 1f25e + 1f960: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx14Bits(item.events[i]); - 1f884: f812 0f01 ldrb.w r0, [r2, #1]! - 1f888: 2bfd cmp r3, #253 ; 0xfd - 1f88a: d8f6 bhi.n 1f87a + 1f964: f812 0f01 ldrb.w r0, [r2, #1]! + 1f968: 2bfd cmp r3, #253 ; 0xfd + 1f96a: d8f6 bhi.n 1f95a sysex[sysLength++] = value; - 1f88c: eb09 0603 add.w r6, r9, r3 - 1f890: 3301 adds r3, #1 + 1f96c: eb09 0603 add.w r6, r9, r3 + 1f970: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f892: f889 5004 strb.w r5, [r9, #4] + 1f972: f889 5004 strb.w r5, [r9, #4] setData1(value & 0xFF); - 1f896: f889 3003 strb.w r3, [r9, #3] + 1f976: f889 3003 strb.w r3, [r9, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1f89a: 09c3 lsrs r3, r0, #7 + 1f97a: 09c3 lsrs r3, r0, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 1f89c: f000 007f and.w r0, r0, #127 ; 0x7f + 1f97c: f000 007f and.w r0, r0, #127 ; 0x7f appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 1f8a0: 7173 strb r3, [r6, #5] + 1f980: 7173 strb r3, [r6, #5] uint16_t sysLength = size(); - 1f8a2: f8b9 3003 ldrh.w r3, [r9, #3] + 1f982: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 1f990: d8e3 bhi.n 1f95a setData1(value & 0xFF); - 1f8b2: f889 3003 strb.w r3, [r9, #3] + 1f992: f889 3003 strb.w r3, [r9, #3] sysex[sysLength++] = value; - 1f8b6: 7170 strb r0, [r6, #5] + 1f996: 7170 strb r0, [r6, #5] return true; - 1f8b8: e7df b.n 1f87a + 1f998: e7df b.n 1f95a sysex[sysLength++] = value; - 1f8ba: eb09 0e03 add.w lr, r9, r3 - 1f8be: 3301 adds r3, #1 + 1f99a: eb09 0e03 add.w lr, r9, r3 + 1f99e: 3301 adds r3, #1 buff.appendToSysEx8Bits(item.settings[i]); - 1f8c0: 5c8d ldrb r5, [r1, r2] + 1f9a0: 5c8d ldrb r5, [r1, r2] void setData2(uint8_t t_data2) { data2 = t_data2; } - 1f8c2: f889 7004 strb.w r7, [r9, #4] + 1f9a2: f889 7004 strb.w r7, [r9, #4] setData1(value & 0xFF); - 1f8c6: f889 3003 strb.w r3, [r9, #3] + 1f9a6: f889 3003 strb.w r3, [r9, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 1f8ca: f005 0c7f and.w ip, r5, #127 ; 0x7f - 1f8ce: f8b9 3003 ldrh.w r3, [r9, #3] + 1f9aa: f005 0c7f and.w ip, r5, #127 ; 0x7f + 1f9ae: f8b9 3003 ldrh.w r3, [r9, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 1f8d2: 09ed lsrs r5, r5, #7 + 1f9b2: 09ed lsrs r5, r5, #7 if(sysLength + 1f9ba: d8bd bhi.n 1f938 sysex[sysLength++] = value; - 1f8dc: 1c5d adds r5, r3, #1 - 1f8de: 444b add r3, r9 + 1f9bc: 1c5d adds r5, r3, #1 + 1f9be: 444b add r3, r9 setData1(value & 0xFF); - 1f8e0: f889 5003 strb.w r5, [r9, #3] + 1f9c0: f889 5003 strb.w r5, [r9, #3] sysex[sysLength++] = value; - 1f8e4: f883 c005 strb.w ip, [r3, #5] + 1f9c4: f883 c005 strb.w ip, [r3, #5] return true; - 1f8e8: f8b9 3003 ldrh.w r3, [r9, #3] - 1f8ec: e7b4 b.n 1f858 - 1f8ee: ea4f 0887 mov.w r8, r7, lsl #2 + 1f9c8: f8b9 3003 ldrh.w r3, [r9, #3] + 1f9cc: e7b4 b.n 1f938 + 1f9ce: ea4f 0887 mov.w r8, r7, lsl #2 (store.global.songLibrary[index], buff, index, deviceType); - 1f8f2: 44b8 add r8, r7 - 1f8f4: f241 233d movw r3, #4669 ; 0x123d - 1f8f8: 6820 ldr r0, [r4, #0] - 1f8fa: 463a mov r2, r7 - 1f8fc: eb03 0348 add.w r3, r3, r8, lsl #1 - 1f900: 4649 mov r1, r9 - 1f902: 4418 add r0, r3 - 1f904: 2320 movs r3, #32 - 1f906: f7fb fd53 bl 1b3b0 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> + 1f9d2: 44b8 add r8, r7 + 1f9d4: f241 233d movw r3, #4669 ; 0x123d + 1f9d8: 6820 ldr r0, [r4, #0] + 1f9da: 463a mov r2, r7 + 1f9dc: eb03 0348 add.w r3, r3, r8, lsl #1 + 1f9e0: 4649 mov r1, r9 + 1f9e2: 4418 add r0, r3 + 1f9e4: 2320 movs r3, #32 + 1f9e6: f7fb fd53 bl 1b490 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> break; - 1f90a: e438 b.n 1f17e - 1f90c: ea4f 08c7 mov.w r8, r7, lsl #3 + 1f9ea: e438 b.n 1f25e + 1f9ec: ea4f 08c7 mov.w r8, r7, lsl #3 (store.global.setLists[index], buff, index, deviceType); - 1f910: 44b8 add r8, r7 - 1f912: f241 13ad movw r3, #4525 ; 0x11ad - 1f916: 6820 ldr r0, [r4, #0] - 1f918: 463a mov r2, r7 - 1f91a: eb03 0348 add.w r3, r3, r8, lsl #1 - 1f91e: 4649 mov r1, r9 - 1f920: 4418 add r0, r3 - 1f922: 231e movs r3, #30 - 1f924: f7fb fc7a bl 1b21c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> + 1f9f0: 44b8 add r8, r7 + 1f9f2: f241 13ad movw r3, #4525 ; 0x11ad + 1f9f6: 6820 ldr r0, [r4, #0] + 1f9f8: 463a mov r2, r7 + 1f9fa: eb03 0348 add.w r3, r3, r8, lsl #1 + 1f9fe: 4649 mov r1, r9 + 1fa00: 4418 add r0, r3 + 1fa02: 231e movs r3, #30 + 1fa04: f7fb fc7a bl 1b2fc (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> break; - 1f928: e429 b.n 1f17e - 1f92a: ea4f 0887 mov.w r8, r7, lsl #2 + 1fa08: e429 b.n 1f25e + 1fa0a: ea4f 0887 mov.w r8, r7, lsl #2 (store.global.presets[index], buff, index, deviceType); - 1f92e: eb08 0307 add.w r3, r8, r7 - 1f932: 6820 ldr r0, [r4, #0] - 1f934: 463a mov r2, r7 - 1f936: 4649 mov r1, r9 - 1f938: 005b lsls r3, r3, #1 - 1f93a: f603 732d addw r3, r3, #3885 ; 0xf2d - 1f93e: 4418 add r0, r3 - 1f940: 231d movs r3, #29 - 1f942: f7fb fd35 bl 1b3b0 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> + 1fa0e: eb08 0307 add.w r3, r8, r7 + 1fa12: 6820 ldr r0, [r4, #0] + 1fa14: 463a mov r2, r7 + 1fa16: 4649 mov r1, r9 + 1fa18: 005b lsls r3, r3, #1 + 1fa1a: f603 732d addw r3, r3, #3885 ; 0xf2d + 1fa1e: 4418 add r0, r3 + 1fa20: 231d movs r3, #29 + 1fa22: f7fb fd35 bl 1b490 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> break; - 1f946: e41a b.n 1f17e - 1f948: ea4f 0b47 mov.w fp, r7, lsl #1 + 1fa26: e41a b.n 1f25e + 1fa28: ea4f 0b47 mov.w fp, r7, lsl #1 BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f94c: 463a mov r2, r7 - 1f94e: a848 add r0, sp, #288 ; 0x120 - 1f950: 211c movs r1, #28 + 1fa2c: 463a mov r2, r7 + 1fa2e: a848 add r0, sp, #288 ; 0x120 + 1fa30: 211c movs r1, #28 (store.global.potCalibration[index], buff, index, deviceType); - 1f952: 6825 ldr r5, [r4, #0] + 1fa32: 6825 ldr r5, [r4, #0] BMCUIData ui = BMCBuildData::getUIData(deviceType, index); - 1f954: f7fb f9be bl 1acd4 + 1fa34: f7fb f9be bl 1adb4 buff.appendToSysEx14Bits(ui.pins[0]); - 1f958: f8bd 1120 ldrh.w r1, [sp, #288] ; 0x120 - 1f95c: 4648 mov r0, r9 + 1fa38: f8bd 1120 ldrh.w r1, [sp, #288] ; 0x120 + 1fa3c: 4648 mov r0, r9 buff.appendToSysEx14Bits(item.name);// name - 1f95e: 445f add r7, fp + 1fa3e: 445f add r7, fp buff.appendToSysEx14Bits(ui.pins[0]); - 1f960: f7fb fc1e bl 1b1a0 + 1fa40: f7fb fc1e bl 1b280 buff.appendToSysEx14Bits(ui.pins[1]); - 1f964: f8bd 1122 ldrh.w r1, [sp, #290] ; 0x122 - 1f968: 4648 mov r0, r9 + 1fa44: f8bd 1122 ldrh.w r1, [sp, #290] ; 0x122 + 1fa48: 4648 mov r0, r9 buff.appendToSysEx14Bits(item.name);// name - 1f96a: eb05 0547 add.w r5, r5, r7, lsl #1 + 1fa4a: eb05 0547 add.w r5, r5, r7, lsl #1 buff.appendToSysEx14Bits(ui.pins[1]); - 1f96e: f7fb fc17 bl 1b1a0 + 1fa4e: f7fb fc17 bl 1b280 buff.appendToSysEx14Bits(ui.pins[2]); - 1f972: f8bd 1124 ldrh.w r1, [sp, #292] ; 0x124 - 1f976: 4648 mov r0, r9 - 1f978: f7fb fc12 bl 1b1a0 + 1fa52: f8bd 1124 ldrh.w r1, [sp, #292] ; 0x124 + 1fa56: 4648 mov r0, r9 + 1fa58: f7fb fc12 bl 1b280 buff.appendToSysEx16Bits(ui.x); - 1f97c: f8bd 1126 ldrh.w r1, [sp, #294] ; 0x126 - 1f980: 4648 mov r0, r9 - 1f982: f7fb fc27 bl 1b1d4 + 1fa5c: f8bd 1126 ldrh.w r1, [sp, #294] ; 0x126 + 1fa60: 4648 mov r0, r9 + 1fa62: f7fb fc27 bl 1b2b4 buff.appendToSysEx16Bits(ui.y); - 1f986: f8bd 1128 ldrh.w r1, [sp, #296] ; 0x128 - 1f98a: 4648 mov r0, r9 - 1f98c: f7fb fc22 bl 1b1d4 + 1fa66: f8bd 1128 ldrh.w r1, [sp, #296] ; 0x128 + 1fa6a: 4648 mov r0, r9 + 1fa6c: f7fb fc22 bl 1b2b4 appendSysExByte(value & 0x7F); - 1f990: f89d 112a ldrb.w r1, [sp, #298] ; 0x12a - 1f994: 4648 mov r0, r9 - 1f996: 2201 movs r2, #1 - 1f998: f001 017f and.w r1, r1, #127 ; 0x7f - 1f99c: f7fb f964 bl 1ac68 - 1f9a0: f89d 112b ldrb.w r1, [sp, #299] ; 0x12b - 1f9a4: 2201 movs r2, #1 - 1f9a6: f001 017f and.w r1, r1, #127 ; 0x7f - 1f9aa: f7fb f95d bl 1ac68 - 1f9ae: f89d 112c ldrb.w r1, [sp, #300] ; 0x12c - 1f9b2: 2201 movs r2, #1 - 1f9b4: f001 017f and.w r1, r1, #127 ; 0x7f - 1f9b8: f7fb f956 bl 1ac68 + 1fa70: f89d 112a ldrb.w r1, [sp, #298] ; 0x12a + 1fa74: 4648 mov r0, r9 + 1fa76: 2201 movs r2, #1 + 1fa78: f001 017f and.w r1, r1, #127 ; 0x7f + 1fa7c: f7fb f964 bl 1ad48 + 1fa80: f89d 112b ldrb.w r1, [sp, #299] ; 0x12b + 1fa84: 2201 movs r2, #1 + 1fa86: f001 017f and.w r1, r1, #127 ; 0x7f + 1fa8a: f7fb f95d bl 1ad48 + 1fa8e: f89d 112c ldrb.w r1, [sp, #300] ; 0x12c + 1fa92: 2201 movs r2, #1 + 1fa94: f001 017f and.w r1, r1, #127 ; 0x7f + 1fa98: f7fb f956 bl 1ad48 buff.appendToSysEx14Bits(ui.mergeIndex); - 1f9bc: f8bd 112e ldrh.w r1, [sp, #302] ; 0x12e - 1f9c0: f7fb fbee bl 1b1a0 + 1fa9c: f8bd 112e ldrh.w r1, [sp, #302] ; 0x12e + 1faa0: f7fb fbee bl 1b280 buff.appendToSysEx7Bits(ui.other1); - 1f9c4: f8bd 1130 ldrh.w r1, [sp, #304] ; 0x130 - 1f9c8: 4648 mov r0, r9 - 1f9ca: 2201 movs r2, #1 - 1f9cc: f001 017f and.w r1, r1, #127 ; 0x7f - 1f9d0: f7fb f94a bl 1ac68 + 1faa4: f8bd 1130 ldrh.w r1, [sp, #304] ; 0x130 + 1faa8: 4648 mov r0, r9 + 1faaa: 2201 movs r2, #1 + 1faac: f001 017f and.w r1, r1, #127 ; 0x7f + 1fab0: f7fb f94a bl 1ad48 buff.appendToSysEx14Bits(item.name);// name - 1f9d4: f241 43e6 movw r3, #5350 ; 0x14e6 - 1f9d8: 5ce9 ldrb r1, [r5, r3] - 1f9da: f7fb fbe1 bl 1b1a0 - 1f9de: 4648 mov r0, r9 - 1f9e0: 2201 movs r2, #1 - 1f9e2: 2100 movs r1, #0 - 1f9e4: f7fb f940 bl 1ac68 - 1f9e8: 2201 movs r2, #1 - 1f9ea: 2102 movs r1, #2 - 1f9ec: f7fb f93c bl 1ac68 + 1fab4: f241 43e6 movw r3, #5350 ; 0x14e6 + 1fab8: 5ce9 ldrb r1, [r5, r3] + 1faba: f7fb fbe1 bl 1b280 + 1fabe: 4648 mov r0, r9 + 1fac0: 2201 movs r2, #1 + 1fac2: 2100 movs r1, #0 + 1fac4: f7fb f940 bl 1ad48 + 1fac8: 2201 movs r2, #1 + 1faca: 2102 movs r1, #2 + 1facc: f7fb f93c bl 1ad48 buff.appendToSysEx14Bits(item.events[i]); - 1f9f0: f241 43e8 movw r3, #5352 ; 0x14e8 - 1f9f4: 5ae9 ldrh r1, [r5, r3] - 1f9f6: f7fb fbd3 bl 1b1a0 - 1f9fa: f241 43ea movw r3, #5354 ; 0x14ea - 1f9fe: 4648 mov r0, r9 - 1fa00: 5ae9 ldrh r1, [r5, r3] - 1fa02: f7fb fbcd bl 1b1a0 -} - 1fa06: f7ff bbba b.w 1f17e - 1fa0a: ea4f 08c7 mov.w r8, r7, lsl #3 + 1fad0: f241 43e8 movw r3, #5352 ; 0x14e8 + 1fad4: 5ae9 ldrh r1, [r5, r3] + 1fad6: f7fb fbd3 bl 1b280 + 1fada: f241 43ea movw r3, #5354 ; 0x14ea + 1fade: 4648 mov r0, r9 + 1fae0: 5ae9 ldrh r1, [r5, r3] + 1fae2: f7fb fbcd bl 1b280 +} + 1fae6: f7ff bbba b.w 1f25e + 1faea: ea4f 08c7 mov.w r8, r7, lsl #3 (store.global.customSysEx[index], buff, index, deviceType); - 1fa0e: 44b8 add r8, r7 - 1fa10: f241 43f2 movw r3, #5362 ; 0x14f2 - 1fa14: 6820 ldr r0, [r4, #0] - 1fa16: 463a mov r2, r7 - 1fa18: eb03 0348 add.w r3, r3, r8, lsl #1 - 1fa1c: 4649 mov r1, r9 - 1fa1e: 4418 add r0, r3 - 1fa20: 2321 movs r3, #33 ; 0x21 - 1fa22: f7fb fbfb bl 1b21c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> + 1faee: 44b8 add r8, r7 + 1faf0: f241 43f2 movw r3, #5362 ; 0x14f2 + 1faf4: 6820 ldr r0, [r4, #0] + 1faf6: 463a mov r2, r7 + 1faf8: eb03 0348 add.w r3, r3, r8, lsl #1 + 1fafc: 4649 mov r1, r9 + 1fafe: 4418 add r0, r3 + 1fb00: 2321 movs r3, #33 ; 0x21 + 1fb02: f7fb fbfb bl 1b2fc (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0]> break; - 1fa26: f7ff bbaa b.w 1f17e + 1fb06: f7ff bbaa b.w 1f25e for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 1fa2a: 9b43 ldr r3, [sp, #268] ; 0x10c - 1fa2c: 4598 cmp r8, r3 - 1fa2e: f4bf ab0f bcs.w 1f050 - 1fa32: eb07 0347 add.w r3, r7, r7, lsl #1 - 1fa36: f241 59d3 movw r9, #5587 ; 0x15d3 - 1fa3a: f8dd a10c ldr.w sl, [sp, #268] ; 0x10c - 1fa3e: 4499 add r9, r3 - 1fa40: eb08 1348 add.w r3, r8, r8, lsl #5 - 1fa44: eb08 0383 add.w r3, r8, r3, lsl #2 - 1fa48: 4499 add r9, r3 + 1fb0a: 9b43 ldr r3, [sp, #268] ; 0x10c + 1fb0c: 4598 cmp r8, r3 + 1fb0e: f4bf ab0f bcs.w 1f130 + 1fb12: eb07 0347 add.w r3, r7, r7, lsl #1 + 1fb16: f241 59d3 movw r9, #5587 ; 0x15d3 + 1fb1a: f8dd a10c ldr.w sl, [sp, #268] ; 0x10c + 1fb1e: 4499 add r9, r3 + 1fb20: eb08 1348 add.w r3, r8, r8, lsl #5 + 1fb24: eb08 0383 add.w r3, r8, r3, lsl #2 + 1fb28: 4499 add r9, r3 incomingMessageDeviceWrite<1,1>(store.layers[p].oled[index], index, p); - 1fa4a: fa0f f288 sxth.w r2, r8 + 1fb2a: fa0f f288 sxth.w r2, r8 for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 1fa4e: f108 0801 add.w r8, r8, #1 + 1fb2e: f108 0801 add.w r8, r8, #1 incomingMessageDeviceWrite<1,1>(store.layers[p].oled[index], index, p); - 1fa52: 6821 ldr r1, [r4, #0] - 1fa54: 4620 mov r0, r4 + 1fb32: 6821 ldr r1, [r4, #0] + 1fb34: 4620 mov r0, r4 for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 1fa56: fa1f f888 uxth.w r8, r8 + 1fb36: fa1f f888 uxth.w r8, r8 incomingMessageDeviceWrite<1,1>(store.layers[p].oled[index], index, p); - 1fa5a: 4449 add r1, r9 + 1fb3a: 4449 add r1, r9 for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 1fa5c: f109 0985 add.w r9, r9, #133 ; 0x85 + 1fb3c: f109 0985 add.w r9, r9, #133 ; 0x85 incomingMessageDeviceWrite<1,1>(store.layers[p].oled[index], index, p); - 1fa60: f7fe f836 bl 1dad0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]> + 1fb40: f7fe f836 bl 1dbb0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]> for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 1fa64: 45d0 cmp r8, sl - 1fa66: d1f0 bne.n 1fa4a - 1fa68: f7ff baf2 b.w 1f050 + 1fb44: 45d0 cmp r8, sl + 1fb46: d1f0 bne.n 1fb2a + 1fb48: f7ff baf2 b.w 1f130 for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 1fa6c: 9b43 ldr r3, [sp, #268] ; 0x10c - 1fa6e: 4598 cmp r8, r3 - 1fa70: f4bf aaee bcs.w 1f050 - 1fa74: eb08 1348 add.w r3, r8, r8, lsl #5 - 1fa78: 9547 str r5, [sp, #284] ; 0x11c - 1fa7a: eb07 0287 add.w r2, r7, r7, lsl #2 - 1fa7e: eb08 0383 add.w r3, r8, r3, lsl #2 - 1fa82: 4413 add r3, r2 - 1fa84: e9cd 6744 strd r6, r7, [sp, #272] ; 0x110 - 1fa88: 461e mov r6, r3 - 1fa8a: 4617 mov r7, r2 + 1fb4c: 9b43 ldr r3, [sp, #268] ; 0x10c + 1fb4e: 4598 cmp r8, r3 + 1fb50: f4bf aaee bcs.w 1f130 + 1fb54: eb08 1348 add.w r3, r8, r8, lsl #5 + 1fb58: 9547 str r5, [sp, #284] ; 0x11c + 1fb5a: eb07 0287 add.w r2, r7, r7, lsl #2 + 1fb5e: eb08 0383 add.w r3, r8, r3, lsl #2 + 1fb62: 4413 add r3, r2 + 1fb64: e9cd 6744 strd r6, r7, [sp, #272] ; 0x110 + 1fb68: 461e mov r6, r3 + 1fb6a: 4617 mov r7, r2 uint16_t name = incoming.get14Bits(13); - 1fa8c: 6be3 ldr r3, [r4, #60] ; 0x3c + 1fb6c: 6be3 ldr r3, [r4, #60] ; 0x3c incomingMessageDeviceWrite<1,3>(store.layers[p].rgbPixels[index], index, p); - 1fa8e: 6820 ldr r0, [r4, #0] + 1fb6e: 6820 ldr r0, [r4, #0] if((t_offset+1) < size()){ - 1fa90: f8b3 2003 ldrh.w r2, [r3, #3] - 1fa94: 2a0e cmp r2, #14 - 1fa96: f200 83bd bhi.w 20214 + 1fb70: f8b3 2003 ldrh.w r2, [r3, #3] + 1fb74: 2a0e cmp r2, #14 + 1fb76: f200 83bd bhi.w 202f4 item.name = 0; - 1fa9a: 2200 movs r2, #0 - 1fa9c: eb08 1348 add.w r3, r8, r8, lsl #5 - 1faa0: f241 51b5 movw r1, #5557 ; 0x15b5 - 1faa4: eb08 0383 add.w r3, r8, r3, lsl #2 - 1faa8: 443b add r3, r7 - 1faaa: 4403 add r3, r0 - 1faac: 545a strb r2, [r3, r1] - 1faae: ea4f 1248 mov.w r2, r8, lsl #5 + 1fb7a: 2200 movs r2, #0 + 1fb7c: eb08 1348 add.w r3, r8, r8, lsl #5 + 1fb80: f241 51b5 movw r1, #5557 ; 0x15b5 + 1fb84: eb08 0383 add.w r3, r8, r3, lsl #2 + 1fb88: 443b add r3, r7 + 1fb8a: 4403 add r3, r0 + 1fb8c: 545a strb r2, [r3, r1] + 1fb8e: ea4f 1248 mov.w r2, r8, lsl #5 uint8_t lenSettings = incoming.get7Bits(15); - 1fab2: 6be1 ldr r1, [r4, #60] ; 0x3c + 1fb92: 6be1 ldr r1, [r4, #60] ; 0x3c if(t_offset < size()){ - 1fab4: f8b1 5003 ldrh.w r5, [r1, #3] - 1fab8: 2d0f cmp r5, #15 - 1faba: f200 839b bhi.w 201f4 - 1fabe: 2503 movs r5, #3 - 1fac0: 2301 movs r3, #1 + 1fb94: f8b1 5003 ldrh.w r5, [r1, #3] + 1fb98: 2d0f cmp r5, #15 + 1fb9a: f200 839b bhi.w 202d4 + 1fb9e: 2503 movs r5, #3 + 1fba0: 2301 movs r3, #1 item.settings[i] = incoming.get8Bits(lenCount); - 1fac2: 4442 add r2, r8 - 1fac4: f241 5cb6 movw ip, #5558 ; 0x15b6 - 1fac8: eb08 0282 add.w r2, r8, r2, lsl #2 - 1facc: 443a add r2, r7 - 1face: 4402 add r2, r0 - 1fad0: 4494 add ip, r2 - 1fad2: 2200 movs r2, #0 - 1fad4: 0051 lsls r1, r2, #1 - 1fad6: 3111 adds r1, #17 - 1fad8: b2c9 uxtb r1, r1 + 1fba2: 4442 add r2, r8 + 1fba4: f241 5cb6 movw ip, #5558 ; 0x15b6 + 1fba8: eb08 0282 add.w r2, r8, r2, lsl #2 + 1fbac: 443a add r2, r7 + 1fbae: 4402 add r2, r0 + 1fbb0: 4494 add ip, r2 + 1fbb2: 2200 movs r2, #0 + 1fbb4: 0051 lsls r1, r2, #1 + 1fbb6: 3111 adds r1, #17 + 1fbb8: b2c9 uxtb r1, r1 if(i < sLen){ - 1fada: 2a00 cmp r2, #0 - 1fadc: f000 8372 beq.w 201c4 + 1fbba: 2a00 cmp r2, #0 + 1fbbc: f000 8372 beq.w 202a4 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1fae0: 3201 adds r2, #1 - 1fae2: b2d1 uxtb r1, r2 - 1fae4: 4299 cmp r1, r3 - 1fae6: d3f5 bcc.n 1fad4 + 1fbc0: 3201 adds r2, #1 + 1fbc2: b2d1 uxtb r1, r2 + 1fbc4: 4299 cmp r1, r3 + 1fbc6: d3f5 bcc.n 1fbb4 lenCount += 2; - 1fae8: ea4f 0a43 mov.w sl, r3, lsl #1 + 1fbc8: ea4f 0a43 mov.w sl, r3, lsl #1 item.events[i] = e; - 1faec: f241 59b7 movw r9, #5559 ; 0x15b7 + 1fbcc: f241 59b7 movw r9, #5559 ; 0x15b7 lenCount += 2; - 1faf0: f04f 0b00 mov.w fp, #0 - 1faf4: f10a 0a11 add.w sl, sl, #17 + 1fbd0: f04f 0b00 mov.w fp, #0 + 1fbd4: f10a 0a11 add.w sl, sl, #17 item.events[i] = e; - 1faf8: 44b1 add r9, r6 + 1fbd8: 44b1 add r9, r6 lenCount += 2; - 1fafa: fa5f fa8a uxtb.w sl, sl + 1fbda: fa5f fa8a uxtb.w sl, sl item.events[i] = e; - 1fafe: 4481 add r9, r0 + 1fbde: 4481 add r9, r0 if(i < eLen){ - 1fb00: f1bb 0f02 cmp.w fp, #2 - 1fb04: d808 bhi.n 1fb18 + 1fbe0: f1bb 0f02 cmp.w fp, #2 + 1fbe4: d808 bhi.n 1fbf8 uint16_t e = incoming.get14Bits(lenCount); - 1fb06: 6be0 ldr r0, [r4, #60] ; 0x3c - 1fb08: 4651 mov r1, sl - 1fb0a: f7fb f9c9 bl 1aea0 + 1fbe6: 6be0 ldr r0, [r4, #60] ; 0x3c + 1fbe8: 4651 mov r1, sl + 1fbea: f7fb f9c9 bl 1af80 if(e > BMC_MAX_EVENTS_LIBRARY){ - 1fb0e: 28c9 cmp r0, #201 ; 0xc9 - 1fb10: bf28 it cs - 1fb12: 2000 movcs r0, #0 + 1fbee: 28c9 cmp r0, #201 ; 0xc9 + 1fbf0: bf28 it cs + 1fbf2: 2000 movcs r0, #0 item.events[i] = e; - 1fb14: f809 000b strb.w r0, [r9, fp] + 1fbf4: f809 000b strb.w r0, [r9, fp] for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fb18: f10b 0b01 add.w fp, fp, #1 + 1fbf8: f10b 0b01 add.w fp, fp, #1 lenCount += 2; - 1fb1c: f10a 0a02 add.w sl, sl, #2 + 1fbfc: f10a 0a02 add.w sl, sl, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fb20: fa5f f38b uxtb.w r3, fp + 1fc00: fa5f f38b uxtb.w r3, fp lenCount += 2; - 1fb24: fa5f fa8a uxtb.w sl, sl + 1fc04: fa5f fa8a uxtb.w sl, sl for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fb28: 42ab cmp r3, r5 - 1fb2a: d3e9 bcc.n 1fb00 + 1fc08: 42ab cmp r3, r5 + 1fc0a: d3e9 bcc.n 1fbe0 if(layer >= 0 && !backupActive()){ - 1fb2c: 4620 mov r0, r4 - 1fb2e: f7fd fa95 bl 1d05c - 1fb32: 2800 cmp r0, #0 - 1fb34: f000 8399 beq.w 2026a + 1fc0c: 4620 mov r0, r4 + 1fc0e: f7fd fa95 bl 1d13c + 1fc12: 2800 cmp r0, #0 + 1fc14: f000 8399 beq.w 2034a for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 1fb38: f108 0801 add.w r8, r8, #1 - 1fb3c: 9a43 ldr r2, [sp, #268] ; 0x10c - 1fb3e: 3685 adds r6, #133 ; 0x85 - 1fb40: fa1f f388 uxth.w r3, r8 - 1fb44: 4293 cmp r3, r2 - 1fb46: d3a1 bcc.n 1fa8c - 1fb48: 9d47 ldr r5, [sp, #284] ; 0x11c - 1fb4a: e9dd 6744 ldrd r6, r7, [sp, #272] ; 0x110 - 1fb4e: f7ff ba7f b.w 1f050 + 1fc18: f108 0801 add.w r8, r8, #1 + 1fc1c: 9a43 ldr r2, [sp, #268] ; 0x10c + 1fc1e: 3685 adds r6, #133 ; 0x85 + 1fc20: fa1f f388 uxth.w r3, r8 + 1fc24: 4293 cmp r3, r2 + 1fc26: d3a1 bcc.n 1fb6c + 1fc28: 9d47 ldr r5, [sp, #284] ; 0x11c + 1fc2a: e9dd 6744 ldrd r6, r7, [sp, #272] ; 0x110 + 1fc2e: f7ff ba7f b.w 1f130 incomingMessageDeviceWrite<1,1>(store.global.leds[index], index); - 1fb52: eb07 0247 add.w r2, r7, r7, lsl #1 - 1fb56: f241 43d7 movw r3, #5335 ; 0x14d7 - 1fb5a: 6821 ldr r1, [r4, #0] - 1fb5c: 4620 mov r0, r4 - 1fb5e: 4413 add r3, r2 - 1fb60: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 1fb64: ea4f 0b47 mov.w fp, r7, lsl #1 - 1fb68: 4419 add r1, r3 - 1fb6a: f7fd ffb1 bl 1dad0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]> + 1fc32: eb07 0247 add.w r2, r7, r7, lsl #1 + 1fc36: f241 43d7 movw r3, #5335 ; 0x14d7 + 1fc3a: 6821 ldr r1, [r4, #0] + 1fc3c: 4620 mov r0, r4 + 1fc3e: 4413 add r3, r2 + 1fc40: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 1fc44: ea4f 0b47 mov.w fp, r7, lsl #1 + 1fc48: 4419 add r1, r3 + 1fc4a: f7fd ffb1 bl 1dbb0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]> if(!backupActive()){ - 1fb6e: 4620 mov r0, r4 - 1fb70: f7fd fa74 bl 1d05c - 1fb74: 2800 cmp r0, #0 - 1fb76: f47f a9d9 bne.w 1ef2c + 1fc4e: 4620 mov r0, r4 + 1fc50: f7fd fa74 bl 1d13c + 1fc54: 2800 cmp r0, #0 + 1fc56: f47f a9d9 bne.w 1f00c saveGlobalLed(index); - 1fb7a: b2f9 uxtb r1, r7 + 1fc5a: b2f9 uxtb r1, r7 if(index >= BMC_MAX_GLOBAL_LEDS){ - 1fb7c: 2904 cmp r1, #4 - 1fb7e: f201 8088 bhi.w 20c92 - 1fb82: 4620 mov r0, r4 - 1fb84: f7fd f9b2 bl 1ceec + 1fc5c: 2904 cmp r1, #4 + 1fc5e: f201 8088 bhi.w 20d72 + 1fc62: 4620 mov r0, r4 + 1fc64: f7fd f9b2 bl 1cfcc bool read(uint8_t bit){ - 1fb88: f7ff ba58 b.w 1f03c + 1fc68: f7ff ba58 b.w 1f11c incomingMessageDeviceWrite<1, 1>(store.global.tempoToTap[index], index); - 1fb8c: eb07 0247 add.w r2, r7, r7, lsl #1 - 1fb90: f241 534a movw r3, #5450 ; 0x154a - 1fb94: 6821 ldr r1, [r4, #0] - 1fb96: 4620 mov r0, r4 - 1fb98: 4413 add r3, r2 - 1fb9a: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 1fb9e: 4419 add r1, r3 - 1fba0: f7fd ff96 bl 1dad0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]> + 1fc6c: eb07 0247 add.w r2, r7, r7, lsl #1 + 1fc70: f241 534a movw r3, #5450 ; 0x154a + 1fc74: 6821 ldr r1, [r4, #0] + 1fc76: 4620 mov r0, r4 + 1fc78: 4413 add r3, r2 + 1fc7a: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 1fc7e: 4419 add r1, r3 + 1fc80: f7fd ff96 bl 1dbb0 (bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0]> if(!backupActive()){ - 1fba4: 4620 mov r0, r4 - 1fba6: f7fd fa59 bl 1d05c - 1fbaa: 2800 cmp r0, #0 - 1fbac: f47f a9be bne.w 1ef2c + 1fc84: 4620 mov r0, r4 + 1fc86: f7fd fa59 bl 1d13c + 1fc8a: 2800 cmp r0, #0 + 1fc8c: f47f a9be bne.w 1f00c bitSet(flags, bit); - 1fbb0: 6b23 ldr r3, [r4, #48] ; 0x30 + 1fc90: 6b23 ldr r3, [r4, #48] ; 0x30 saveTempoToTap(index); - 1fbb2: b2f9 uxtb r1, r7 - 1fbb4: f443 7380 orr.w r3, r3, #256 ; 0x100 + 1fc92: b2f9 uxtb r1, r7 + 1fc94: f443 7380 orr.w r3, r3, #256 ; 0x100 if(index>=BMC_MAX_TEMPO_TO_TAP){ - 1fbb8: 2901 cmp r1, #1 - 1fbba: 6323 str r3, [r4, #48] ; 0x30 - 1fbbc: f63f aa3e bhi.w 1f03c - 1fbc0: 4620 mov r0, r4 - 1fbc2: f7fc fc73 bl 1c4ac - 1fbc6: f7ff ba39 b.w 1f03c + 1fc98: 2901 cmp r1, #1 + 1fc9a: 6323 str r3, [r4, #48] ; 0x30 + 1fc9c: f63f aa3e bhi.w 1f11c + 1fca0: 4620 mov r0, r4 + 1fca2: f7fc fc73 bl 1c58c + 1fca6: f7ff ba39 b.w 1f11c uint16_t name = incoming.get14Bits(13); - 1fbca: 6be3 ldr r3, [r4, #60] ; 0x3c + 1fcaa: 6be3 ldr r3, [r4, #60] ; 0x3c (store.global.portPresets[index], index); - 1fbcc: 6821 ldr r1, [r4, #0] + 1fcac: 6821 ldr r1, [r4, #0] if((t_offset+1) < size()){ - 1fbce: f8b3 2003 ldrh.w r2, [r3, #3] - 1fbd2: 2a0e cmp r2, #14 - 1fbd4: f200 86db bhi.w 2098e + 1fcae: f8b3 2003 ldrh.w r2, [r3, #3] + 1fcb2: 2a0e cmp r2, #14 + 1fcb4: f200 86db bhi.w 20a6e item.name = 0; - 1fbd8: 2300 movs r3, #0 - 1fbda: eb01 0847 add.w r8, r1, r7, lsl #1 - 1fbde: f888 3ef8 strb.w r3, [r8, #3832] ; 0xef8 + 1fcb8: 2300 movs r3, #0 + 1fcba: eb01 0847 add.w r8, r1, r7, lsl #1 + 1fcbe: f888 3ef8 strb.w r3, [r8, #3832] ; 0xef8 uint8_t lenSettings = incoming.get7Bits(15); - 1fbe2: 6be2 ldr r2, [r4, #60] ; 0x3c + 1fcc2: 6be2 ldr r2, [r4, #60] ; 0x3c if(t_offset < size()){ - 1fbe4: f8b2 1003 ldrh.w r1, [r2, #3] - 1fbe8: 290f cmp r1, #15 - 1fbea: f200 8746 bhi.w 20a7a + 1fcc4: f8b2 1003 ldrh.w r1, [r2, #3] + 1fcc8: 290f cmp r1, #15 + 1fcca: f200 8746 bhi.w 20b5a lenEvents = eLen; - 1fbee: 2201 movs r2, #1 + 1fcce: 2201 movs r2, #1 uint8_t lenCount = 17; - 1fbf0: 2311 movs r3, #17 - 1fbf2: eb03 0242 add.w r2, r3, r2, lsl #1 - 1fbf6: b2d1 uxtb r1, r2 - 1fbf8: 2200 movs r2, #0 + 1fcd0: 2311 movs r3, #17 + 1fcd2: eb03 0242 add.w r2, r3, r2, lsl #1 + 1fcd6: b2d1 uxtb r1, r2 + 1fcd8: 2200 movs r2, #0 if(i < eLen){ - 1fbfa: 2a00 cmp r2, #0 - 1fbfc: f000 82a8 beq.w 20150 + 1fcda: 2a00 cmp r2, #0 + 1fcdc: f000 82a8 beq.w 20230 lenCount += 2; - 1fc00: 3302 adds r3, #2 + 1fce0: 3302 adds r3, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fc02: 3201 adds r2, #1 + 1fce2: 3201 adds r2, #1 lenCount += 2; - 1fc04: b2db uxtb r3, r3 + 1fce4: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fc06: 428b cmp r3, r1 - 1fc08: d1f7 bne.n 1fbfa + 1fce6: 428b cmp r3, r1 + 1fce8: d1f7 bne.n 1fcda if(!backupActive()){ - 1fc0a: 4620 mov r0, r4 - 1fc0c: f7fd fa26 bl 1d05c - 1fc10: 2800 cmp r0, #0 - 1fc12: f47f a98b bne.w 1ef2c + 1fcea: 4620 mov r0, r4 + 1fcec: f7fd fa26 bl 1d13c + 1fcf0: 2800 cmp r0, #0 + 1fcf2: f47f a98b bne.w 1f00c saveDevicePorts(index); - 1fc16: b2f9 uxtb r1, r7 - 1fc18: 4620 mov r0, r4 - 1fc1a: f7fd fa33 bl 1d084 + 1fcf6: b2f9 uxtb r1, r7 + 1fcf8: 4620 mov r0, r4 + 1fcfa: f7fd fa33 bl 1d164 bool read(uint8_t bit){ - 1fc1e: f7ff ba0d b.w 1f03c + 1fcfe: f7ff ba0d b.w 1f11c uint16_t name = incoming.get14Bits(13); - 1fc22: 6be3 ldr r3, [r4, #60] ; 0x3c + 1fd02: 6be3 ldr r3, [r4, #60] ; 0x3c (store.global.sketchBytes[0], 0); - 1fc24: 6822 ldr r2, [r4, #0] + 1fd04: 6822 ldr r2, [r4, #0] if((t_offset+1) < size()){ - 1fc26: f8b3 1003 ldrh.w r1, [r3, #3] - 1fc2a: 290e cmp r1, #14 - 1fc2c: f200 86a1 bhi.w 20972 + 1fd06: f8b3 1003 ldrh.w r1, [r3, #3] + 1fd0a: 290e cmp r1, #14 + 1fd0c: f200 86a1 bhi.w 20a52 item.name = 0; - 1fc30: 2300 movs r3, #0 - 1fc32: f882 3f28 strb.w r3, [r2, #3880] ; 0xf28 + 1fd10: 2300 movs r3, #0 + 1fd12: f882 3f28 strb.w r3, [r2, #3880] ; 0xf28 uint8_t lenSettings = incoming.get7Bits(15); - 1fc36: 6be1 ldr r1, [r4, #60] ; 0x3c + 1fd16: 6be1 ldr r1, [r4, #60] ; 0x3c if(t_offset < size()){ - 1fc38: f8b1 0003 ldrh.w r0, [r1, #3] - 1fc3c: 280f cmp r0, #15 - 1fc3e: f200 8640 bhi.w 208c2 + 1fd18: f8b1 0003 ldrh.w r0, [r1, #3] + 1fd1c: 280f cmp r0, #15 + 1fd1e: f200 8640 bhi.w 209a2 lenEvents = eLen; - 1fc42: 2104 movs r1, #4 + 1fd22: 2104 movs r1, #4 uint8_t lenCount = 17; - 1fc44: 2311 movs r3, #17 + 1fd24: 2311 movs r3, #17 item.events[i] = e; - 1fc46: f602 7c29 addw ip, r2, #3881 ; 0xf29 + 1fd26: f602 7c29 addw ip, r2, #3881 ; 0xf29 lenEvents = eLen; - 1fc4a: 2200 movs r2, #0 + 1fd2a: 2200 movs r2, #0 if(i < eLen){ - 1fc4c: 2a03 cmp r2, #3 - 1fc4e: f240 831d bls.w 2028c + 1fd2c: 2a03 cmp r2, #3 + 1fd2e: f240 831d bls.w 2036c for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fc52: 3201 adds r2, #1 + 1fd32: 3201 adds r2, #1 lenCount += 2; - 1fc54: 3302 adds r3, #2 + 1fd34: 3302 adds r3, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fc56: b2d0 uxtb r0, r2 + 1fd36: b2d0 uxtb r0, r2 lenCount += 2; - 1fc58: b2db uxtb r3, r3 + 1fd38: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fc5a: 4281 cmp r1, r0 - 1fc5c: d8f6 bhi.n 1fc4c + 1fd3a: 4281 cmp r1, r0 + 1fd3c: d8f6 bhi.n 1fd2c if(!backupActive()){ - 1fc5e: 4620 mov r0, r4 - 1fc60: f7fd f9fc bl 1d05c - 1fc64: 2800 cmp r0, #0 - 1fc66: f47f a961 bne.w 1ef2c + 1fd3e: 4620 mov r0, r4 + 1fd40: f7fd f9fc bl 1d13c + 1fd44: 2800 cmp r0, #0 + 1fd46: f47f a961 bne.w 1f00c saveSketchBytes(); - 1fc6a: 4620 mov r0, r4 - 1fc6c: f7fd fc42 bl 1d4f4 - 1fc70: f7ff b9e4 b.w 1f03c + 1fd4a: 4620 mov r0, r4 + 1fd4c: f7fd fc42 bl 1d5d4 + 1fd50: f7ff b9e4 b.w 1f11c uint16_t name = incoming.get14Bits(13); - 1fc74: 6be3 ldr r3, [r4, #60] ; 0x3c + 1fd54: 6be3 ldr r3, [r4, #60] ; 0x3c (store.global.lfo[index], index); - 1fc76: 6822 ldr r2, [r4, #0] + 1fd56: 6822 ldr r2, [r4, #0] if((t_offset+1) < size()){ - 1fc78: f8b3 1003 ldrh.w r1, [r3, #3] - 1fc7c: 290e cmp r1, #14 - 1fc7e: f200 8694 bhi.w 209aa + 1fd58: f8b3 1003 ldrh.w r1, [r3, #3] + 1fd5c: 290e cmp r1, #14 + 1fd5e: f200 8694 bhi.w 20a8a item.name = 0; - 1fc82: 2300 movs r3, #0 - 1fc84: eb07 01c7 add.w r1, r7, r7, lsl #3 - 1fc88: ea4f 08c7 mov.w r8, r7, lsl #3 - 1fc8c: 4411 add r1, r2 - 1fc8e: f881 3f1f strb.w r3, [r1, #3871] ; 0xf1f + 1fd62: 2300 movs r3, #0 + 1fd64: eb07 01c7 add.w r1, r7, r7, lsl #3 + 1fd68: ea4f 08c7 mov.w r8, r7, lsl #3 + 1fd6c: 4411 add r1, r2 + 1fd6e: f881 3f1f strb.w r3, [r1, #3871] ; 0xf1f uint8_t lenSettings = incoming.get7Bits(15); - 1fc92: 6be3 ldr r3, [r4, #60] ; 0x3c + 1fd72: 6be3 ldr r3, [r4, #60] ; 0x3c if(t_offset < size()){ - 1fc94: f8b3 0003 ldrh.w r0, [r3, #3] - 1fc98: 280f cmp r0, #15 - 1fc9a: f200 86c2 bhi.w 20a22 - 1fc9e: 2005 movs r0, #5 - 1fca0: 2103 movs r1, #3 + 1fd74: f8b3 0003 ldrh.w r0, [r3, #3] + 1fd78: 280f cmp r0, #15 + 1fd7a: f200 86c2 bhi.w 20b02 + 1fd7e: 2005 movs r0, #5 + 1fd80: 2103 movs r1, #3 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1fca2: 44b8 add r8, r7 + 1fd82: 44b8 add r8, r7 uint8_t lenCount = 17; - 1fca4: 2311 movs r3, #17 - 1fca6: eb02 0a08 add.w sl, r2, r8 - 1fcaa: 2200 movs r2, #0 - 1fcac: f50a 6b72 add.w fp, sl, #3872 ; 0xf20 + 1fd84: 2311 movs r3, #17 + 1fd86: eb02 0a08 add.w sl, r2, r8 + 1fd8a: 2200 movs r2, #0 + 1fd8c: f50a 6b72 add.w fp, sl, #3872 ; 0xf20 if(i < sLen){ - 1fcb0: 2a02 cmp r2, #2 - 1fcb2: f240 8327 bls.w 20304 + 1fd90: 2a02 cmp r2, #2 + 1fd92: f240 8327 bls.w 203e4 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1fcb6: 3201 adds r2, #1 + 1fd96: 3201 adds r2, #1 lenCount += 2; - 1fcb8: 3302 adds r3, #2 + 1fd98: 3302 adds r3, #2 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1fcba: fa5f fc82 uxtb.w ip, r2 + 1fd9a: fa5f fc82 uxtb.w ip, r2 lenCount += 2; - 1fcbe: b2db uxtb r3, r3 + 1fd9e: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1fcc0: 4561 cmp r1, ip - 1fcc2: d8f5 bhi.n 1fcb0 + 1fda0: 4561 cmp r1, ip + 1fda2: d8f5 bhi.n 1fd90 lenCount += 2; - 1fcc4: 004b lsls r3, r1, #1 - 1fcc6: f60a 7923 addw r9, sl, #3875 ; 0xf23 - 1fcca: 2200 movs r2, #0 - 1fccc: 3311 adds r3, #17 - 1fcce: b2db uxtb r3, r3 + 1fda4: 004b lsls r3, r1, #1 + 1fda6: f60a 7923 addw r9, sl, #3875 ; 0xf23 + 1fdaa: 2200 movs r2, #0 + 1fdac: 3311 adds r3, #17 + 1fdae: b2db uxtb r3, r3 if(i < eLen){ - 1fcd0: 2a04 cmp r2, #4 - 1fcd2: f240 82ac bls.w 2022e + 1fdb0: 2a04 cmp r2, #4 + 1fdb2: f240 82ac bls.w 2030e for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fcd6: 3201 adds r2, #1 + 1fdb6: 3201 adds r2, #1 lenCount += 2; - 1fcd8: 3302 adds r3, #2 + 1fdb8: 3302 adds r3, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fcda: b2d1 uxtb r1, r2 + 1fdba: b2d1 uxtb r1, r2 lenCount += 2; - 1fcdc: b2db uxtb r3, r3 + 1fdbc: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fcde: 4281 cmp r1, r0 - 1fce0: d3f6 bcc.n 1fcd0 + 1fdbe: 4281 cmp r1, r0 + 1fdc0: d3f6 bcc.n 1fdb0 if(!backupActive()){ - 1fce2: 4620 mov r0, r4 - 1fce4: f7fd f9ba bl 1d05c - 1fce8: 2800 cmp r0, #0 - 1fcea: f47f a91f bne.w 1ef2c + 1fdc2: 4620 mov r0, r4 + 1fdc4: f7fd f9ba bl 1d13c + 1fdc8: 2800 cmp r0, #0 + 1fdca: f47f a91f bne.w 1f00c bitSet(flags, bit); - 1fcee: 6b23 ldr r3, [r4, #48] ; 0x30 + 1fdce: 6b23 ldr r3, [r4, #48] ; 0x30 saveLFO(index); - 1fcf0: b2f9 uxtb r1, r7 - 1fcf2: 4620 mov r0, r4 - 1fcf4: f043 0380 orr.w r3, r3, #128 ; 0x80 - 1fcf8: 6323 str r3, [r4, #48] ; 0x30 - 1fcfa: f7fd fb3d bl 1d378 + 1fdd0: b2f9 uxtb r1, r7 + 1fdd2: 4620 mov r0, r4 + 1fdd4: f043 0380 orr.w r3, r3, #128 ; 0x80 + 1fdd8: 6323 str r3, [r4, #48] ; 0x30 + 1fdda: f7fd fb3d bl 1d458 bool read(uint8_t bit){ - 1fcfe: f7ff b99d b.w 1f03c + 1fdde: f7ff b99d b.w 1f11c uint16_t name = incoming.get14Bits(13); - 1fd02: 6be3 ldr r3, [r4, #60] ; 0x3c + 1fde2: 6be3 ldr r3, [r4, #60] ; 0x3c (store.global.timedEvents[index], index); - 1fd04: 6821 ldr r1, [r4, #0] + 1fde4: 6821 ldr r1, [r4, #0] if((t_offset+1) < size()){ - 1fd06: f8b3 2003 ldrh.w r2, [r3, #3] - 1fd0a: 2a0e cmp r2, #14 - 1fd0c: f200 867b bhi.w 20a06 + 1fde6: f8b3 2003 ldrh.w r2, [r3, #3] + 1fdea: 2a0e cmp r2, #14 + 1fdec: f200 867b bhi.w 20ae6 item.name = 0; - 1fd10: 2300 movs r3, #0 - 1fd12: eb01 0187 add.w r1, r1, r7, lsl #2 - 1fd16: f501 5c80 add.w ip, r1, #4096 ; 0x1000 - 1fd1a: f88c 3550 strb.w r3, [ip, #1360] ; 0x550 + 1fdf0: 2300 movs r3, #0 + 1fdf2: eb01 0187 add.w r1, r1, r7, lsl #2 + 1fdf6: f501 5c80 add.w ip, r1, #4096 ; 0x1000 + 1fdfa: f88c 3550 strb.w r3, [ip, #1360] ; 0x550 uint8_t lenSettings = incoming.get7Bits(15); - 1fd1e: 6be2 ldr r2, [r4, #60] ; 0x3c + 1fdfe: 6be2 ldr r2, [r4, #60] ; 0x3c if(t_offset < size()){ - 1fd20: f8b2 0003 ldrh.w r0, [r2, #3] - 1fd24: 280f cmp r0, #15 - 1fd26: f200 865c bhi.w 209e2 - 1fd2a: f04f 0b01 mov.w fp, #1 - 1fd2e: 2302 movs r3, #2 + 1fe00: f8b2 0003 ldrh.w r0, [r2, #3] + 1fe04: 280f cmp r0, #15 + 1fe06: f200 865c bhi.w 20ac2 + 1fe0a: f04f 0b01 mov.w fp, #1 + 1fe0e: 2302 movs r3, #2 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1fd30: f241 5a51 movw sl, #5457 ; 0x1551 + 1fe10: f241 5a51 movw sl, #5457 ; 0x1551 uint8_t lenCount = 17; - 1fd34: 2211 movs r2, #17 - 1fd36: 448a add sl, r1 - 1fd38: 2100 movs r1, #0 + 1fe14: 2211 movs r2, #17 + 1fe16: 448a add sl, r1 + 1fe18: 2100 movs r1, #0 if(i < sLen){ - 1fd3a: 2901 cmp r1, #1 - 1fd3c: f240 833f bls.w 203be + 1fe1a: 2901 cmp r1, #1 + 1fe1c: f240 833f bls.w 2049e for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1fd40: 3101 adds r1, #1 + 1fe20: 3101 adds r1, #1 lenCount += 2; - 1fd42: 3202 adds r2, #2 + 1fe22: 3202 adds r2, #2 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1fd44: b2c8 uxtb r0, r1 + 1fe24: b2c8 uxtb r0, r1 lenCount += 2; - 1fd46: b2d2 uxtb r2, r2 + 1fe26: b2d2 uxtb r2, r2 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1fd48: 4298 cmp r0, r3 - 1fd4a: d3f6 bcc.n 1fd3a - 1fd4c: 3b01 subs r3, #1 + 1fe28: 4298 cmp r0, r3 + 1fe2a: d3f6 bcc.n 1fe1a + 1fe2c: 3b01 subs r3, #1 lenCount += 2; - 1fd4e: 2200 movs r2, #0 - 1fd50: 005b lsls r3, r3, #1 - 1fd52: b2db uxtb r3, r3 - 1fd54: eb03 014b add.w r1, r3, fp, lsl #1 - 1fd58: 3313 adds r3, #19 - 1fd5a: 3113 adds r1, #19 - 1fd5c: b2db uxtb r3, r3 - 1fd5e: b2c9 uxtb r1, r1 + 1fe2e: 2200 movs r2, #0 + 1fe30: 005b lsls r3, r3, #1 + 1fe32: b2db uxtb r3, r3 + 1fe34: eb03 014b add.w r1, r3, fp, lsl #1 + 1fe38: 3313 adds r3, #19 + 1fe3a: 3113 adds r1, #19 + 1fe3c: b2db uxtb r3, r3 + 1fe3e: b2c9 uxtb r1, r1 if(i < eLen){ - 1fd60: 2a00 cmp r2, #0 - 1fd62: f000 8212 beq.w 2018a + 1fe40: 2a00 cmp r2, #0 + 1fe42: f000 8212 beq.w 2026a lenCount += 2; - 1fd66: 3302 adds r3, #2 + 1fe46: 3302 adds r3, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fd68: 3201 adds r2, #1 + 1fe48: 3201 adds r2, #1 lenCount += 2; - 1fd6a: b2db uxtb r3, r3 + 1fe4a: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fd6c: 4299 cmp r1, r3 - 1fd6e: d1f7 bne.n 1fd60 + 1fe4c: 4299 cmp r1, r3 + 1fe4e: d1f7 bne.n 1fe40 if(!backupActive()){ - 1fd70: 4620 mov r0, r4 - 1fd72: f7fd f973 bl 1d05c - 1fd76: 2800 cmp r0, #0 - 1fd78: f47f a8d8 bne.w 1ef2c + 1fe50: 4620 mov r0, r4 + 1fe52: f7fd f973 bl 1d13c + 1fe56: 2800 cmp r0, #0 + 1fe58: f47f a8d8 bne.w 1f00c bitSet(flags, bit); - 1fd7c: 6b23 ldr r3, [r4, #48] ; 0x30 + 1fe5c: 6b23 ldr r3, [r4, #48] ; 0x30 saveTimedEvent(index); - 1fd7e: b2f9 uxtb r1, r7 - 1fd80: f443 6380 orr.w r3, r3, #1024 ; 0x400 + 1fe5e: b2f9 uxtb r1, r7 + 1fe60: f443 6380 orr.w r3, r3, #1024 ; 0x400 if(n>=BMC_MAX_TIMED_EVENTS){ - 1fd84: 2903 cmp r1, #3 - 1fd86: 6323 str r3, [r4, #48] ; 0x30 - 1fd88: f63f a958 bhi.w 1f03c - 1fd8c: 4620 mov r0, r4 - 1fd8e: f7fc fe77 bl 1ca80 - 1fd92: f7ff b953 b.w 1f03c + 1fe64: 2903 cmp r1, #3 + 1fe66: 6323 str r3, [r4, #48] ; 0x30 + 1fe68: f63f a958 bhi.w 1f11c + 1fe6c: 4620 mov r0, r4 + 1fe6e: f7fc fe77 bl 1cb60 + 1fe72: f7ff b953 b.w 1f11c incomingMessageDeviceWrite(store.global.buttons[index], index); - 1fd96: eb07 0247 add.w r2, r7, r7, lsl #1 - 1fd9a: f241 43bd movw r3, #5309 ; 0x14bd - 1fd9e: 6821 ldr r1, [r4, #0] - 1fda0: 4620 mov r0, r4 - 1fda2: eb07 0282 add.w r2, r7, r2, lsl #2 - 1fda6: ea4f 0b47 mov.w fp, r7, lsl #1 - 1fdaa: 4413 add r3, r2 - 1fdac: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 1fdb0: 4419 add r1, r3 - 1fdb2: f7fd ff3f bl 1dc34 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]> + 1fe76: eb07 0247 add.w r2, r7, r7, lsl #1 + 1fe7a: f241 43bd movw r3, #5309 ; 0x14bd + 1fe7e: 6821 ldr r1, [r4, #0] + 1fe80: 4620 mov r0, r4 + 1fe82: eb07 0282 add.w r2, r7, r2, lsl #2 + 1fe86: ea4f 0b47 mov.w fp, r7, lsl #1 + 1fe8a: 4413 add r3, r2 + 1fe8c: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 1fe90: 4419 add r1, r3 + 1fe92: f7fd ff3f bl 1dd14 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]> if(!backupActive()){ - 1fdb6: 4620 mov r0, r4 - 1fdb8: f7fd f950 bl 1d05c - 1fdbc: 2800 cmp r0, #0 - 1fdbe: f47f a8b5 bne.w 1ef2c + 1fe96: 4620 mov r0, r4 + 1fe98: f7fd f950 bl 1d13c + 1fe9c: 2800 cmp r0, #0 + 1fe9e: f47f a8b5 bne.w 1f00c saveGlobalButton(index); - 1fdc2: b2f9 uxtb r1, r7 + 1fea2: b2f9 uxtb r1, r7 if(index>=BMC_MAX_GLOBAL_BUTTONS){ - 1fdc4: 2901 cmp r1, #1 - 1fdc6: f240 878b bls.w 20ce0 + 1fea4: 2901 cmp r1, #1 + 1fea6: f240 878b bls.w 20dc0 if(midi.globals.editorConnected()){ - 1fdca: 6863 ldr r3, [r4, #4] + 1feaa: 6863 ldr r3, [r4, #4] return bitRead(flags, bit); - 1fdcc: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 1fdd0: 6dda ldr r2, [r3, #92] ; 0x5c - 1fdd2: 0751 lsls r1, r2, #29 - 1fdd4: f3c2 0380 ubfx r3, r2, #2, #1 - 1fdd8: f53f a936 bmi.w 1f048 + 1feac: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 1feb0: 6dda ldr r2, [r3, #92] ; 0x5c + 1feb2: 0751 lsls r1, r2, #29 + 1feb4: f3c2 0380 ubfx r3, r2, #2, #1 + 1feb8: f53f a936 bmi.w 1f128 buff.prepareEditorMessage( - 1fddc: e9cd 3900 strd r3, r9, [sp] + 1febc: e9cd 3900 strd r3, r9, [sp] struct BMCMidiMessage { - 1fde0: f50d 799a add.w r9, sp, #308 ; 0x134 - 1fde4: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 1fde8: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 1fdec: 4648 mov r0, r9 - 1fdee: f8c9 3000 str.w r3, [r9] - 1fdf2: f889 3004 strb.w r3, [r9, #4] - 1fdf6: 2312 movs r3, #18 - 1fdf8: f7fb f864 bl 1aec4 + 1fec0: f50d 799a add.w r9, sp, #308 ; 0x134 + 1fec4: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 1fec8: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 1fecc: 4648 mov r0, r9 + 1fece: f8c9 3000 str.w r3, [r9] + 1fed2: f889 3004 strb.w r3, [r9, #4] + 1fed6: 2312 movs r3, #18 + 1fed8: f7fb f864 bl 1afa4 appendSysExByte(value & 0x7F); - 1fdfc: 4648 mov r0, r9 - 1fdfe: 2201 movs r2, #1 - 1fe00: 2105 movs r1, #5 - 1fe02: f7fa ff31 bl 1ac68 + 1fedc: 4648 mov r0, r9 + 1fede: 2201 movs r2, #1 + 1fee0: 2105 movs r1, #5 + 1fee2: f7fa ff31 bl 1ad48 buff.appendToSysEx14Bits(index); - 1fe06: 4639 mov r1, r7 - 1fe08: f7fb f9ca bl 1b1a0 + 1fee6: 4639 mov r1, r7 + 1fee8: f7fb f9ca bl 1b280 buff.appendToSysEx14Bits(maxDevices); - 1fe0c: 4631 mov r1, r6 - 1fe0e: 4648 mov r0, r9 - 1fe10: f7fb f9c6 bl 1b1a0 + 1feec: 4631 mov r1, r6 + 1feee: 4648 mov r0, r9 + 1fef0: f7fb f9c6 bl 1b280 switch(deviceType){ - 1fe14: e4b0 b.n 1f778 + 1fef4: e4b0 b.n 1f858 (store.global.setLists[index], index); - 1fe16: eb07 02c7 add.w r2, r7, r7, lsl #3 - 1fe1a: f241 13ad movw r3, #4525 ; 0x11ad - 1fe1e: 6821 ldr r1, [r4, #0] - 1fe20: 4620 mov r0, r4 - 1fe22: eb03 0342 add.w r3, r3, r2, lsl #1 - 1fe26: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 1fe2a: ea4f 08c7 mov.w r8, r7, lsl #3 - 1fe2e: 4419 add r1, r3 - 1fe30: f7fd fd94 bl 1d95c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]> + 1fef6: eb07 02c7 add.w r2, r7, r7, lsl #3 + 1fefa: f241 13ad movw r3, #4525 ; 0x11ad + 1fefe: 6821 ldr r1, [r4, #0] + 1ff00: 4620 mov r0, r4 + 1ff02: eb03 0342 add.w r3, r3, r2, lsl #1 + 1ff06: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 1ff0a: ea4f 08c7 mov.w r8, r7, lsl #3 + 1ff0e: 4419 add r1, r3 + 1ff10: f7fd fd94 bl 1da3c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]> if(!backupActive()){ - 1fe34: 4620 mov r0, r4 - 1fe36: f7fd f911 bl 1d05c - 1fe3a: 2800 cmp r0, #0 - 1fe3c: f47f a876 bne.w 1ef2c + 1ff14: 4620 mov r0, r4 + 1ff16: f7fd f911 bl 1d13c + 1ff1a: 2800 cmp r0, #0 + 1ff1c: f47f a876 bne.w 1f00c saveSetList(index); - 1fe40: b2f9 uxtb r1, r7 + 1ff20: b2f9 uxtb r1, r7 if(index >= BMC_MAX_SETLISTS){ - 1fe42: 2907 cmp r1, #7 - 1fe44: f200 8662 bhi.w 20b0c - 1fe48: 4620 mov r0, r4 - 1fe4a: f7fc f9af bl 1c1ac + 1ff22: 2907 cmp r1, #7 + 1ff24: f200 8662 bhi.w 20bec + 1ff28: 4620 mov r0, r4 + 1ff2a: f7fc f9af bl 1c28c bool read(uint8_t bit){ - 1fe4e: f7ff b8f5 b.w 1f03c + 1ff2e: f7ff b8f5 b.w 1f11c (store.global.customSysEx[index], index); - 1fe52: eb07 02c7 add.w r2, r7, r7, lsl #3 - 1fe56: f241 43f2 movw r3, #5362 ; 0x14f2 - 1fe5a: 6821 ldr r1, [r4, #0] - 1fe5c: 4620 mov r0, r4 - 1fe5e: eb03 0342 add.w r3, r3, r2, lsl #1 - 1fe62: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 1fe66: ea4f 08c7 mov.w r8, r7, lsl #3 - 1fe6a: 4419 add r1, r3 - 1fe6c: f7fd fd76 bl 1d95c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]> + 1ff32: eb07 02c7 add.w r2, r7, r7, lsl #3 + 1ff36: f241 43f2 movw r3, #5362 ; 0x14f2 + 1ff3a: 6821 ldr r1, [r4, #0] + 1ff3c: 4620 mov r0, r4 + 1ff3e: eb03 0342 add.w r3, r3, r2, lsl #1 + 1ff42: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 1ff46: ea4f 08c7 mov.w r8, r7, lsl #3 + 1ff4a: 4419 add r1, r3 + 1ff4c: f7fd fd76 bl 1da3c (bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0]> if(!backupActive()){ - 1fe70: 4620 mov r0, r4 - 1fe72: f7fd f8f3 bl 1d05c - 1fe76: 2800 cmp r0, #0 - 1fe78: f47f a858 bne.w 1ef2c + 1ff50: 4620 mov r0, r4 + 1ff52: f7fd f8f3 bl 1d13c + 1ff56: 2800 cmp r0, #0 + 1ff58: f47f a858 bne.w 1f00c saveCustomSysEx(index); - 1fe7c: b2f9 uxtb r1, r7 + 1ff5c: b2f9 uxtb r1, r7 if(index>=BMC_MAX_CUSTOM_SYSEX){ - 1fe7e: 2903 cmp r1, #3 - 1fe80: f200 86b9 bhi.w 20bf6 - 1fe84: 4620 mov r0, r4 - 1fe86: f7fc ff71 bl 1cd6c - 1fe8a: f7ff b8d7 b.w 1f03c + 1ff5e: 2903 cmp r1, #3 + 1ff60: f200 86b9 bhi.w 20cd6 + 1ff64: 4620 mov r0, r4 + 1ff66: f7fc ff71 bl 1ce4c + 1ff6a: f7ff b8d7 b.w 1f11c uint16_t name = incoming.get14Bits(13); - 1fe8e: 6be3 ldr r3, [r4, #60] ; 0x3c + 1ff6e: 6be3 ldr r3, [r4, #60] ; 0x3c incomingMessageDeviceWrite<0,2,uint16_t>(store.global.potCalibration[index], index); - 1fe90: 6822 ldr r2, [r4, #0] + 1ff70: 6822 ldr r2, [r4, #0] if((t_offset+1) < size()){ - 1fe92: f8b3 1003 ldrh.w r1, [r3, #3] - 1fe96: 290e cmp r1, #14 - 1fe98: f200 8603 bhi.w 20aa2 + 1ff72: f8b3 1003 ldrh.w r1, [r3, #3] + 1ff76: 290e cmp r1, #14 + 1ff78: f200 8603 bhi.w 20b82 item.name = 0; - 1fe9c: 2300 movs r3, #0 - 1fe9e: eb07 0147 add.w r1, r7, r7, lsl #1 - 1fea2: f241 40e6 movw r0, #5350 ; 0x14e6 - 1fea6: ea4f 0b47 mov.w fp, r7, lsl #1 - 1feaa: eb02 0141 add.w r1, r2, r1, lsl #1 - 1feae: 540b strb r3, [r1, r0] + 1ff7c: 2300 movs r3, #0 + 1ff7e: eb07 0147 add.w r1, r7, r7, lsl #1 + 1ff82: f241 40e6 movw r0, #5350 ; 0x14e6 + 1ff86: ea4f 0b47 mov.w fp, r7, lsl #1 + 1ff8a: eb02 0141 add.w r1, r2, r1, lsl #1 + 1ff8e: 540b strb r3, [r1, r0] uint8_t lenSettings = incoming.get7Bits(15); - 1feb0: 6be3 ldr r3, [r4, #60] ; 0x3c - 1feb2: f8b3 1003 ldrh.w r1, [r3, #3] - 1feb6: 9343 str r3, [sp, #268] ; 0x10c + 1ff90: 6be3 ldr r3, [r4, #60] ; 0x3c + 1ff92: f8b3 1003 ldrh.w r1, [r3, #3] + 1ff96: 9343 str r3, [sp, #268] ; 0x10c if(t_offset < size()){ - 1feb8: 290f cmp r1, #15 - 1feba: f200 85c3 bhi.w 20a44 + 1ff98: 290f cmp r1, #15 + 1ff9a: f200 85c3 bhi.w 20b24 uint8_t lenCount = 17; - 1febe: 2111 movs r1, #17 + 1ff9e: 2111 movs r1, #17 lenEvents = eLen; - 1fec0: f04f 0a02 mov.w sl, #2 - 1fec4: eb0b 0307 add.w r3, fp, r7 - 1fec8: 9444 str r4, [sp, #272] ; 0x110 - 1feca: f8cd b114 str.w fp, [sp, #276] ; 0x114 - 1fece: f04f 0800 mov.w r8, #0 - 1fed2: eb02 0243 add.w r2, r2, r3, lsl #1 - 1fed6: f241 43e8 movw r3, #5352 ; 0x14e8 - 1feda: 46cb mov fp, r9 - 1fedc: 460c mov r4, r1 - 1fede: 46a9 mov r9, r5 - 1fee0: 189d adds r5, r3, r2 + 1ffa0: f04f 0a02 mov.w sl, #2 + 1ffa4: eb0b 0307 add.w r3, fp, r7 + 1ffa8: 9444 str r4, [sp, #272] ; 0x110 + 1ffaa: f8cd b114 str.w fp, [sp, #276] ; 0x114 + 1ffae: f04f 0800 mov.w r8, #0 + 1ffb2: eb02 0243 add.w r2, r2, r3, lsl #1 + 1ffb6: f241 43e8 movw r3, #5352 ; 0x14e8 + 1ffba: 46cb mov fp, r9 + 1ffbc: 460c mov r4, r1 + 1ffbe: 46a9 mov r9, r5 + 1ffc0: 189d adds r5, r3, r2 if(i < eLen){ - 1fee2: f1b8 0f01 cmp.w r8, #1 - 1fee6: f240 8260 bls.w 203aa + 1ffc2: f1b8 0f01 cmp.w r8, #1 + 1ffc6: f240 8260 bls.w 2048a for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1feea: f108 0801 add.w r8, r8, #1 + 1ffca: f108 0801 add.w r8, r8, #1 lenCount += 2; - 1feee: 3402 adds r4, #2 + 1ffce: 3402 adds r4, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fef0: fa5f f188 uxtb.w r1, r8 + 1ffd0: fa5f f188 uxtb.w r1, r8 lenCount += 2; - 1fef4: b2e4 uxtb r4, r4 + 1ffd4: b2e4 uxtb r4, r4 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1fef6: 4551 cmp r1, sl - 1fef8: d3f3 bcc.n 1fee2 - 1fefa: 464d mov r5, r9 - 1fefc: 46d9 mov r9, fp - 1fefe: e9dd 4b44 ldrd r4, fp, [sp, #272] ; 0x110 + 1ffd6: 4551 cmp r1, sl + 1ffd8: d3f3 bcc.n 1ffc2 + 1ffda: 464d mov r5, r9 + 1ffdc: 46d9 mov r9, fp + 1ffde: e9dd 4b44 ldrd r4, fp, [sp, #272] ; 0x110 if(!backupActive()){ - 1ff02: 4620 mov r0, r4 - 1ff04: f7fd f8aa bl 1d05c - 1ff08: 2800 cmp r0, #0 - 1ff0a: f47f a80f bne.w 1ef2c + 1ffe2: 4620 mov r0, r4 + 1ffe4: f7fd f8aa bl 1d13c + 1ffe8: 2800 cmp r0, #0 + 1ffea: f47f a80f bne.w 1f00c if(index>=BMC_TOTAL_POTS_AUX_JACKS){ - 1ff0e: 2f00 cmp r7, #0 - 1ff10: f040 85d5 bne.w 20abe - 1ff14: 4620 mov r0, r4 - 1ff16: f7fc fb81 bl 1c61c - 1ff1a: f7ff b88f b.w 1f03c + 1ffee: 2f00 cmp r7, #0 + 1fff0: f040 85d5 bne.w 20b9e + 1fff4: 4620 mov r0, r4 + 1fff6: f7fc fb81 bl 1c6fc + 1fffa: f7ff b88f b.w 1f11c uint16_t name = incoming.get14Bits(13); - 1ff1e: 6be3 ldr r3, [r4, #60] ; 0x3c + 1fffe: 6be3 ldr r3, [r4, #60] ; 0x3c incomingMessageDeviceWrite<1,2>(store.global.triggers[index], index); - 1ff20: 6821 ldr r1, [r4, #0] + 20000: 6821 ldr r1, [r4, #0] if((t_offset+1) < size()){ - 1ff22: f8b3 2003 ldrh.w r2, [r3, #3] - 1ff26: 2a0e cmp r2, #14 - 1ff28: f200 8515 bhi.w 20956 + 20002: f8b3 2003 ldrh.w r2, [r3, #3] + 20006: 2a0e cmp r2, #14 + 20008: f200 8515 bhi.w 20a36 item.name = 0; - 1ff2c: 2300 movs r3, #0 - 1ff2e: eb01 0b87 add.w fp, r1, r7, lsl #2 - 1ff32: f50b 5a80 add.w sl, fp, #4096 ; 0x1000 - 1ff36: f88a 353a strb.w r3, [sl, #1338] ; 0x53a + 2000c: 2300 movs r3, #0 + 2000e: eb01 0b87 add.w fp, r1, r7, lsl #2 + 20012: f50b 5a80 add.w sl, fp, #4096 ; 0x1000 + 20016: f88a 353a strb.w r3, [sl, #1338] ; 0x53a uint8_t lenSettings = incoming.get7Bits(15); - 1ff3a: 6be2 ldr r2, [r4, #60] ; 0x3c + 2001a: 6be2 ldr r2, [r4, #60] ; 0x3c if(t_offset < size()){ - 1ff3c: f8b2 1003 ldrh.w r1, [r2, #3] - 1ff40: 290f cmp r1, #15 - 1ff42: f200 84f4 bhi.w 2092e - 1ff46: f04f 0802 mov.w r8, #2 - 1ff4a: 2301 movs r3, #1 + 2001c: f8b2 1003 ldrh.w r1, [r2, #3] + 20020: 290f cmp r1, #15 + 20022: f200 84f4 bhi.w 20a0e + 20026: f04f 0802 mov.w r8, #2 + 2002a: 2301 movs r3, #1 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1ff4c: 2000 movs r0, #0 - 1ff4e: 0041 lsls r1, r0, #1 - 1ff50: 3111 adds r1, #17 - 1ff52: b2c9 uxtb r1, r1 + 2002c: 2000 movs r0, #0 + 2002e: 0041 lsls r1, r0, #1 + 20030: 3111 adds r1, #17 + 20032: b2c9 uxtb r1, r1 if(i < sLen){ - 1ff54: 2800 cmp r0, #0 - 1ff56: f000 84d3 beq.w 20900 + 20034: 2800 cmp r0, #0 + 20036: f000 84d3 beq.w 209e0 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 1ff5a: 3001 adds r0, #1 - 1ff5c: b2c2 uxtb r2, r0 - 1ff5e: 4293 cmp r3, r2 - 1ff60: d8f5 bhi.n 1ff4e + 2003a: 3001 adds r0, #1 + 2003c: b2c2 uxtb r2, r0 + 2003e: 4293 cmp r3, r2 + 20040: d8f5 bhi.n 2002e lenCount += 2; - 1ff62: ea4f 0943 mov.w r9, r3, lsl #1 - 1ff66: f241 5a3c movw sl, #5436 ; 0x153c - 1ff6a: f109 0911 add.w r9, r9, #17 - 1ff6e: 44da add sl, fp - 1ff70: f04f 0b00 mov.w fp, #0 - 1ff74: fa5f f989 uxtb.w r9, r9 + 20042: ea4f 0943 mov.w r9, r3, lsl #1 + 20046: f241 5a3c movw sl, #5436 ; 0x153c + 2004a: f109 0911 add.w r9, r9, #17 + 2004e: 44da add sl, fp + 20050: f04f 0b00 mov.w fp, #0 + 20054: fa5f f989 uxtb.w r9, r9 if(i < eLen){ - 1ff78: f1bb 0f01 cmp.w fp, #1 - 1ff7c: f240 81f7 bls.w 2036e + 20058: f1bb 0f01 cmp.w fp, #1 + 2005c: f240 81f7 bls.w 2044e for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1ff80: f10b 0b01 add.w fp, fp, #1 + 20060: f10b 0b01 add.w fp, fp, #1 lenCount += 2; - 1ff84: f109 0902 add.w r9, r9, #2 + 20064: f109 0902 add.w r9, r9, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1ff88: fa5f f38b uxtb.w r3, fp + 20068: fa5f f38b uxtb.w r3, fp lenCount += 2; - 1ff8c: fa5f f989 uxtb.w r9, r9 + 2006c: fa5f f989 uxtb.w r9, r9 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 1ff90: 4543 cmp r3, r8 - 1ff92: d3f1 bcc.n 1ff78 + 20070: 4543 cmp r3, r8 + 20072: d3f1 bcc.n 20058 if(!backupActive()){ - 1ff94: 4620 mov r0, r4 - 1ff96: f7fd f861 bl 1d05c - 1ff9a: 2800 cmp r0, #0 - 1ff9c: f47e afc6 bne.w 1ef2c + 20074: 4620 mov r0, r4 + 20076: f7fd f861 bl 1d13c + 2007a: 2800 cmp r0, #0 + 2007c: f47e afc6 bne.w 1f00c bitSet(flags, bit); - 1ffa0: 6b23 ldr r3, [r4, #48] ; 0x30 + 20080: 6b23 ldr r3, [r4, #48] ; 0x30 saveTrigger(index); - 1ffa2: b2f9 uxtb r1, r7 - 1ffa4: f443 7300 orr.w r3, r3, #512 ; 0x200 + 20082: b2f9 uxtb r1, r7 + 20084: f443 7300 orr.w r3, r3, #512 ; 0x200 if(index>=BMC_MAX_TRIGGERS){ - 1ffa8: 2903 cmp r1, #3 - 1ffaa: 6323 str r3, [r4, #48] ; 0x30 - 1ffac: f63f a846 bhi.w 1f03c - 1ffb0: 4620 mov r0, r4 - 1ffb2: f7fc fcaf bl 1c914 - 1ffb6: f7ff b841 b.w 1f03c + 20088: 2903 cmp r1, #3 + 2008a: 6323 str r3, [r4, #48] ; 0x30 + 2008c: f63f a846 bhi.w 1f11c + 20090: 4620 mov r0, r4 + 20092: f7fc fcaf bl 1c9f4 + 20096: f7ff b841 b.w 1f11c (store.global.songLibrary[index], index); - 1ffba: eb07 0287 add.w r2, r7, r7, lsl #2 - 1ffbe: f241 233d movw r3, #4669 ; 0x123d - 1ffc2: 6821 ldr r1, [r4, #0] - 1ffc4: 4620 mov r0, r4 - 1ffc6: eb03 0342 add.w r3, r3, r2, lsl #1 - 1ffca: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 1ffce: ea4f 0887 mov.w r8, r7, lsl #2 - 1ffd2: 4419 add r1, r3 - 1ffd4: f7fd fc14 bl 1d800 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]> + 2009a: eb07 0287 add.w r2, r7, r7, lsl #2 + 2009e: f241 233d movw r3, #4669 ; 0x123d + 200a2: 6821 ldr r1, [r4, #0] + 200a4: 4620 mov r0, r4 + 200a6: eb03 0342 add.w r3, r3, r2, lsl #1 + 200aa: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 200ae: ea4f 0887 mov.w r8, r7, lsl #2 + 200b2: 4419 add r1, r3 + 200b4: f7fd fc14 bl 1d8e0 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]> if(!backupActive()){ - 1ffd8: 4620 mov r0, r4 - 1ffda: f7fd f83f bl 1d05c - 1ffde: 2800 cmp r0, #0 - 1ffe0: f47e afa4 bne.w 1ef2c + 200b8: 4620 mov r0, r4 + 200ba: f7fd f83f bl 1d13c + 200be: 2800 cmp r0, #0 + 200c0: f47e afa4 bne.w 1f00c if(index >= BMC_MAX_SETLISTS_SONGS_LIBRARY){ - 1ffe4: 2f3f cmp r7, #63 ; 0x3f - 1ffe6: f200 85df bhi.w 20ba8 - 1ffea: 4639 mov r1, r7 - 1ffec: 4620 mov r0, r4 - 1ffee: f7fc f81d bl 1c02c + 200c4: 2f3f cmp r7, #63 ; 0x3f + 200c6: f200 85df bhi.w 20c88 + 200ca: 4639 mov r1, r7 + 200cc: 4620 mov r0, r4 + 200ce: f7fc f81d bl 1c10c bool read(uint8_t bit){ - 1fff2: f7ff b823 b.w 1f03c + 200d2: f7ff b823 b.w 1f11c (store.global.presets[index], index); - 1fff6: eb07 0387 add.w r3, r7, r7, lsl #2 - 1fffa: 6821 ldr r1, [r4, #0] - 1fffc: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 20000: 4620 mov r0, r4 - 20002: 005b lsls r3, r3, #1 - 20004: ea4f 0887 mov.w r8, r7, lsl #2 - 20008: f603 732d addw r3, r3, #3885 ; 0xf2d - 2000c: 4419 add r1, r3 - 2000e: f7fd fbf7 bl 1d800 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]> + 200d6: eb07 0387 add.w r3, r7, r7, lsl #2 + 200da: 6821 ldr r1, [r4, #0] + 200dc: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 200e0: 4620 mov r0, r4 + 200e2: 005b lsls r3, r3, #1 + 200e4: ea4f 0887 mov.w r8, r7, lsl #2 + 200e8: f603 732d addw r3, r3, #3885 ; 0xf2d + 200ec: 4419 add r1, r3 + 200ee: f7fd fbf7 bl 1d8e0 (bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0]> if(!backupActive()){ - 20012: 4620 mov r0, r4 - 20014: f7fd f822 bl 1d05c - 20018: 2800 cmp r0, #0 - 2001a: f47e af87 bne.w 1ef2c + 200f2: 4620 mov r0, r4 + 200f4: f7fd f822 bl 1d13c + 200f8: 2800 cmp r0, #0 + 200fa: f47e af87 bne.w 1f00c if(index>=BMC_MAX_PRESETS){ - 2001e: 2f3f cmp r7, #63 ; 0x3f - 20020: f200 8610 bhi.w 20c44 - 20024: 4639 mov r1, r7 - 20026: 4620 mov r0, r4 - 20028: f7fc fde0 bl 1cbec - 2002c: f7ff b806 b.w 1f03c + 200fe: 2f3f cmp r7, #63 ; 0x3f + 20100: f200 8610 bhi.w 20d24 + 20104: 4639 mov r1, r7 + 20106: 4620 mov r0, r4 + 20108: f7fc fde0 bl 1cccc + 2010c: f7ff b806 b.w 1f11c uint16_t name = incoming.get14Bits(13); - 20030: 6be3 ldr r3, [r4, #60] ; 0x3c + 20110: 6be3 ldr r3, [r4, #60] ; 0x3c incomingMessageDeviceWrite<2,3>(store.global.auxJacks[index], index); - 20032: 6822 ldr r2, [r4, #0] + 20112: 6822 ldr r2, [r4, #0] if((t_offset+1) < size()){ - 20034: f8b3 1003 ldrh.w r1, [r3, #3] - 20038: 290e cmp r1, #14 - 2003a: f200 84c4 bhi.w 209c6 + 20114: f8b3 1003 ldrh.w r1, [r3, #3] + 20118: 290e cmp r1, #14 + 2011a: f200 84c4 bhi.w 20aa6 item.name = 0; - 2003e: 2300 movs r3, #0 - 20040: eb07 0147 add.w r1, r7, r7, lsl #1 - 20044: f241 40ec movw r0, #5356 ; 0x14ec - 20048: ea4f 0b47 mov.w fp, r7, lsl #1 - 2004c: eb02 0141 add.w r1, r2, r1, lsl #1 - 20050: 540b strb r3, [r1, r0] + 2011e: 2300 movs r3, #0 + 20120: eb07 0147 add.w r1, r7, r7, lsl #1 + 20124: f241 40ec movw r0, #5356 ; 0x14ec + 20128: ea4f 0b47 mov.w fp, r7, lsl #1 + 2012c: eb02 0141 add.w r1, r2, r1, lsl #1 + 20130: 540b strb r3, [r1, r0] uint8_t lenSettings = incoming.get7Bits(15); - 20052: 6be1 ldr r1, [r4, #60] ; 0x3c + 20132: 6be1 ldr r1, [r4, #60] ; 0x3c if(t_offset < size()){ - 20054: f8b1 0003 ldrh.w r0, [r1, #3] - 20058: 280f cmp r0, #15 - 2005a: f200 841f bhi.w 2089c - 2005e: f04f 0a03 mov.w sl, #3 - 20062: f04f 0802 mov.w r8, #2 + 20134: f8b1 0003 ldrh.w r0, [r1, #3] + 20138: 280f cmp r0, #15 + 2013a: f200 841f bhi.w 2097c + 2013e: f04f 0a03 mov.w sl, #3 + 20142: f04f 0802 mov.w r8, #2 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 20066: eb0b 0307 add.w r3, fp, r7 - 2006a: f241 4ced movw ip, #5357 ; 0x14ed + 20146: eb0b 0307 add.w r3, fp, r7 + 2014a: f241 4ced movw ip, #5357 ; 0x14ed uint8_t lenCount = 17; - 2006e: f04f 0e11 mov.w lr, #17 - 20072: 9544 str r5, [sp, #272] ; 0x110 - 20074: eb02 0343 add.w r3, r2, r3, lsl #1 - 20078: 449c add ip, r3 - 2007a: 9343 str r3, [sp, #268] ; 0x10c - 2007c: 2300 movs r3, #0 + 2014e: f04f 0e11 mov.w lr, #17 + 20152: 9544 str r5, [sp, #272] ; 0x110 + 20154: eb02 0343 add.w r3, r2, r3, lsl #1 + 20158: 449c add ip, r3 + 2015a: 9343 str r3, [sp, #268] ; 0x10c + 2015c: 2300 movs r3, #0 if(i < sLen){ - 2007e: 2b01 cmp r3, #1 - 20080: f240 817f bls.w 20382 + 2015e: 2b01 cmp r3, #1 + 20160: f240 817f bls.w 20462 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 20084: 3301 adds r3, #1 + 20164: 3301 adds r3, #1 lenCount += 2; - 20086: f10e 0e02 add.w lr, lr, #2 + 20166: f10e 0e02 add.w lr, lr, #2 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 2008a: b2da uxtb r2, r3 + 2016a: b2da uxtb r2, r3 lenCount += 2; - 2008c: fa5f fe8e uxtb.w lr, lr + 2016c: fa5f fe8e uxtb.w lr, lr for(uint8_t i = 0 ; i < lenSettings ; i++){ - 20090: 4542 cmp r2, r8 - 20092: d3f4 bcc.n 2007e + 20170: 4542 cmp r2, r8 + 20172: d3f4 bcc.n 2015e lenCount += 2; - 20094: ea4f 0348 mov.w r3, r8, lsl #1 - 20098: 9a43 ldr r2, [sp, #268] ; 0x10c - 2009a: f241 48ef movw r8, #5359 ; 0x14ef - 2009e: 9d44 ldr r5, [sp, #272] ; 0x110 - 200a0: 3311 adds r3, #17 - 200a2: 4442 add r2, r8 - 200a4: b2db uxtb r3, r3 - 200a6: 4690 mov r8, r2 - 200a8: 2200 movs r2, #0 + 20174: ea4f 0348 mov.w r3, r8, lsl #1 + 20178: 9a43 ldr r2, [sp, #268] ; 0x10c + 2017a: f241 48ef movw r8, #5359 ; 0x14ef + 2017e: 9d44 ldr r5, [sp, #272] ; 0x110 + 20180: 3311 adds r3, #17 + 20182: 4442 add r2, r8 + 20184: b2db uxtb r3, r3 + 20186: 4690 mov r8, r2 + 20188: 2200 movs r2, #0 if(i < eLen){ - 200aa: 2a02 cmp r2, #2 - 200ac: f240 8143 bls.w 20336 + 2018a: 2a02 cmp r2, #2 + 2018c: f240 8143 bls.w 20416 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 200b0: 3201 adds r2, #1 + 20190: 3201 adds r2, #1 lenCount += 2; - 200b2: 3302 adds r3, #2 + 20192: 3302 adds r3, #2 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 200b4: b2d1 uxtb r1, r2 + 20194: b2d1 uxtb r1, r2 lenCount += 2; - 200b6: b2db uxtb r3, r3 + 20196: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 200b8: 4551 cmp r1, sl - 200ba: d3f6 bcc.n 200aa + 20198: 4551 cmp r1, sl + 2019a: d3f6 bcc.n 2018a if(!backupActive()){ - 200bc: 4620 mov r0, r4 - 200be: f7fc ffcd bl 1d05c - 200c2: 2800 cmp r0, #0 - 200c4: f47e af32 bne.w 1ef2c + 2019c: 4620 mov r0, r4 + 2019e: f7fc ffcd bl 1d13c + 201a2: 2800 cmp r0, #0 + 201a4: f47e af32 bne.w 1f00c if(index >= BMC_MAX_AUX_JACKS){ - 200c8: b2fb uxtb r3, r7 - 200ca: 2b00 cmp r3, #0 - 200cc: f040 8545 bne.w 20b5a - 200d0: 4620 mov r0, r4 - 200d2: f7fc fb61 bl 1c798 - 200d6: f7fe bfb1 b.w 1f03c + 201a8: b2fb uxtb r3, r7 + 201aa: 2b00 cmp r3, #0 + 201ac: f040 8545 bne.w 20c3a + 201b0: 4620 mov r0, r4 + 201b2: f7fc fb61 bl 1c878 + 201b6: f7fe bfb1 b.w 1f11c for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 200da: eb07 0347 add.w r3, r7, r7, lsl #1 - 200de: f241 5967 movw r9, #5479 ; 0x1567 - 200e2: f8dd a10c ldr.w sl, [sp, #268] ; 0x10c - 200e6: eb07 0383 add.w r3, r7, r3, lsl #2 - 200ea: 4499 add r9, r3 - 200ec: eb08 1348 add.w r3, r8, r8, lsl #5 - 200f0: eb08 0383 add.w r3, r8, r3, lsl #2 - 200f4: 4499 add r9, r3 + 201ba: eb07 0347 add.w r3, r7, r7, lsl #1 + 201be: f241 5967 movw r9, #5479 ; 0x1567 + 201c2: f8dd a10c ldr.w sl, [sp, #268] ; 0x10c + 201c6: eb07 0383 add.w r3, r7, r3, lsl #2 + 201ca: 4499 add r9, r3 + 201cc: eb08 1348 add.w r3, r8, r8, lsl #5 + 201d0: eb08 0383 add.w r3, r8, r3, lsl #2 + 201d4: 4499 add r9, r3 incomingMessageDeviceWrite(store.layers[p].buttons[index], index, p); - 200f6: fa0f f288 sxth.w r2, r8 + 201d6: fa0f f288 sxth.w r2, r8 for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 200fa: f108 0801 add.w r8, r8, #1 + 201da: f108 0801 add.w r8, r8, #1 incomingMessageDeviceWrite(store.layers[p].buttons[index], index, p); - 200fe: 6821 ldr r1, [r4, #0] - 20100: 4620 mov r0, r4 + 201de: 6821 ldr r1, [r4, #0] + 201e0: 4620 mov r0, r4 for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 20102: fa1f f888 uxth.w r8, r8 + 201e2: fa1f f888 uxth.w r8, r8 incomingMessageDeviceWrite(store.layers[p].buttons[index], index, p); - 20106: 4449 add r1, r9 + 201e6: 4449 add r1, r9 for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 20108: f109 0985 add.w r9, r9, #133 ; 0x85 + 201e8: f109 0985 add.w r9, r9, #133 ; 0x85 incomingMessageDeviceWrite(store.layers[p].buttons[index], index, p); - 2010c: f7fd fd92 bl 1dc34 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]> + 201ec: f7fd fd92 bl 1dd14 (bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]> for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 20110: 45d0 cmp r8, sl - 20112: d1f0 bne.n 200f6 - 20114: f7fe bf9c b.w 1f050 - 20118: ebc7 09c7 rsb r9, r7, r7, lsl #3 - 2011c: f8dd a10c ldr.w sl, [sp, #268] ; 0x10c - 20120: eb08 1348 add.w r3, r8, r8, lsl #5 - 20124: f509 59ab add.w r9, r9, #5472 ; 0x1560 - 20128: eb08 0383 add.w r3, r8, r3, lsl #2 - 2012c: 4499 add r9, r3 + 201f0: 45d0 cmp r8, sl + 201f2: d1f0 bne.n 201d6 + 201f4: f7fe bf9c b.w 1f130 + 201f8: ebc7 09c7 rsb r9, r7, r7, lsl #3 + 201fc: f8dd a10c ldr.w sl, [sp, #268] ; 0x10c + 20200: eb08 1348 add.w r3, r8, r8, lsl #5 + 20204: f509 59ab add.w r9, r9, #5472 ; 0x1560 + 20208: eb08 0383 add.w r3, r8, r3, lsl #2 + 2020c: 4499 add r9, r3 incomingMessageDeviceWrite<0,BMC_MAX_LAYER_EVENTS>(store.layers[p].events[index], index, p); - 2012e: fa0f f288 sxth.w r2, r8 + 2020e: fa0f f288 sxth.w r2, r8 for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 20132: f108 0801 add.w r8, r8, #1 + 20212: f108 0801 add.w r8, r8, #1 incomingMessageDeviceWrite<0,BMC_MAX_LAYER_EVENTS>(store.layers[p].events[index], index, p); - 20136: 6821 ldr r1, [r4, #0] - 20138: 4620 mov r0, r4 + 20216: 6821 ldr r1, [r4, #0] + 20218: 4620 mov r0, r4 for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 2013a: fa1f f888 uxth.w r8, r8 + 2021a: fa1f f888 uxth.w r8, r8 incomingMessageDeviceWrite<0,BMC_MAX_LAYER_EVENTS>(store.layers[p].events[index], index, p); - 2013e: 4449 add r1, r9 + 2021e: 4449 add r1, r9 for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 20140: f109 0985 add.w r9, r9, #133 ; 0x85 + 20220: f109 0985 add.w r9, r9, #133 ; 0x85 incomingMessageDeviceWrite<0,BMC_MAX_LAYER_EVENTS>(store.layers[p].events[index], index, p); - 20144: f7fd fe32 bl 1ddac (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]> + 20224: f7fd fe32 bl 1de8c (bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0]> for(uint16_t p = pageToWrite ; p < maxLayerToWrite ; p++){ - 20148: 45d0 cmp r8, sl - 2014a: d3f0 bcc.n 2012e - 2014c: f7fe bf80 b.w 1f050 + 20228: 45d0 cmp r8, sl + 2022a: d3f0 bcc.n 2020e + 2022c: f7fe bf80 b.w 1f130 uint16_t e = incoming.get14Bits(lenCount); - 20150: 6be0 ldr r0, [r4, #60] ; 0x3c + 20230: 6be0 ldr r0, [r4, #60] ; 0x3c if((t_offset+1) < size()){ - 20152: f103 0e01 add.w lr, r3, #1 - 20156: 4694 mov ip, r2 - 20158: f8b0 9003 ldrh.w r9, [r0, #3] - 2015c: 45ce cmp lr, r9 - 2015e: da11 bge.n 20184 + 20232: f103 0e01 add.w lr, r3, #1 + 20236: 4694 mov ip, r2 + 20238: f8b0 9003 ldrh.w r9, [r0, #3] + 2023c: 45ce cmp lr, r9 + 2023e: da11 bge.n 20264 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 20160: eb00 0903 add.w r9, r0, r3 - 20164: 4470 add r0, lr - 20166: f899 e005 ldrb.w lr, [r9, #5] - 2016a: 7940 ldrb r0, [r0, #5] - 2016c: ea4f 1ece mov.w lr, lr, lsl #7 - 20170: f000 007f and.w r0, r0, #127 ; 0x7f - 20174: f40e 5e7e and.w lr, lr, #16256 ; 0x3f80 - 20178: ea40 000e orr.w r0, r0, lr + 20240: eb00 0903 add.w r9, r0, r3 + 20244: 4470 add r0, lr + 20246: f899 e005 ldrb.w lr, [r9, #5] + 2024a: 7940 ldrb r0, [r0, #5] + 2024c: ea4f 1ece mov.w lr, lr, lsl #7 + 20250: f000 007f and.w r0, r0, #127 ; 0x7f + 20254: f40e 5e7e and.w lr, lr, #16256 ; 0x3f80 + 20258: ea40 000e orr.w r0, r0, lr if(e > BMC_MAX_EVENTS_LIBRARY){ - 2017c: 28c8 cmp r0, #200 ; 0xc8 + 2025c: 28c8 cmp r0, #200 ; 0xc8 item.events[i] = e; - 2017e: bfd8 it le - 20180: fa5f fc80 uxtble.w ip, r0 - 20184: f888 cef9 strb.w ip, [r8, #3833] ; 0xef9 - 20188: e53a b.n 1fc00 + 2025e: bfd8 it le + 20260: fa5f fc80 uxtble.w ip, r0 + 20264: f888 cef9 strb.w ip, [r8, #3833] ; 0xef9 + 20268: e53a b.n 1fce0 uint16_t e = incoming.get14Bits(lenCount); - 2018a: 6be0 ldr r0, [r4, #60] ; 0x3c + 2026a: 6be0 ldr r0, [r4, #60] ; 0x3c if((t_offset+1) < size()){ - 2018c: f103 0801 add.w r8, r3, #1 - 20190: 4696 mov lr, r2 - 20192: f8b0 9003 ldrh.w r9, [r0, #3] - 20196: 45c8 cmp r8, r9 - 20198: da11 bge.n 201be + 2026c: f103 0801 add.w r8, r3, #1 + 20270: 4696 mov lr, r2 + 20272: f8b0 9003 ldrh.w r9, [r0, #3] + 20276: 45c8 cmp r8, r9 + 20278: da11 bge.n 2029e return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 2019a: eb00 0903 add.w r9, r0, r3 - 2019e: 4440 add r0, r8 - 201a0: f899 8005 ldrb.w r8, [r9, #5] - 201a4: 7940 ldrb r0, [r0, #5] - 201a6: ea4f 18c8 mov.w r8, r8, lsl #7 - 201aa: f000 007f and.w r0, r0, #127 ; 0x7f - 201ae: f408 587e and.w r8, r8, #16256 ; 0x3f80 - 201b2: ea40 0008 orr.w r0, r0, r8 + 2027a: eb00 0903 add.w r9, r0, r3 + 2027e: 4440 add r0, r8 + 20280: f899 8005 ldrb.w r8, [r9, #5] + 20284: 7940 ldrb r0, [r0, #5] + 20286: ea4f 18c8 mov.w r8, r8, lsl #7 + 2028a: f000 007f and.w r0, r0, #127 ; 0x7f + 2028e: f408 587e and.w r8, r8, #16256 ; 0x3f80 + 20292: ea40 0008 orr.w r0, r0, r8 if(e > BMC_MAX_EVENTS_LIBRARY){ - 201b6: 28c8 cmp r0, #200 ; 0xc8 + 20296: 28c8 cmp r0, #200 ; 0xc8 item.events[i] = e; - 201b8: bfd8 it le - 201ba: fa5f fe80 uxtble.w lr, r0 - 201be: f88c e553 strb.w lr, [ip, #1363] ; 0x553 - 201c2: e5d0 b.n 1fd66 + 20298: bfd8 it le + 2029a: fa5f fe80 uxtble.w lr, r0 + 2029e: f88c e553 strb.w lr, [ip, #1363] ; 0x553 + 202a2: e5d0 b.n 1fe46 item.settings[i] = incoming.get8Bits(lenCount); - 201c4: f8d4 903c ldr.w r9, [r4, #60] ; 0x3c + 202a4: f8d4 903c ldr.w r9, [r4, #60] ; 0x3c if((t_offset+1) < size()){ - 201c8: f101 0a01 add.w sl, r1, #1 + 202a8: f101 0a01 add.w sl, r1, #1 return 0; - 201cc: 4696 mov lr, r2 + 202ac: 4696 mov lr, r2 if((t_offset+1) < size()){ - 201ce: f8b9 b003 ldrh.w fp, [r9, #3] - 201d2: 45da cmp sl, fp - 201d4: da0b bge.n 201ee + 202ae: f8b9 b003 ldrh.w fp, [r9, #3] + 202b2: 45da cmp sl, fp + 202b4: da0b bge.n 202ce return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 201d6: 44ca add sl, r9 - 201d8: 4489 add r9, r1 - 201da: f89a e005 ldrb.w lr, [sl, #5] - 201de: f899 1005 ldrb.w r1, [r9, #5] - 201e2: f00e 0e7f and.w lr, lr, #127 ; 0x7f - 201e6: ea4e 1ec1 orr.w lr, lr, r1, lsl #7 - 201ea: fa5f fe8e uxtb.w lr, lr - 201ee: f88c e000 strb.w lr, [ip] - 201f2: e475 b.n 1fae0 + 202b6: 44ca add sl, r9 + 202b8: 4489 add r9, r1 + 202ba: f89a e005 ldrb.w lr, [sl, #5] + 202be: f899 1005 ldrb.w r1, [r9, #5] + 202c2: f00e 0e7f and.w lr, lr, #127 ; 0x7f + 202c6: ea4e 1ec1 orr.w lr, lr, r1, lsl #7 + 202ca: fa5f fe8e uxtb.w lr, lr + 202ce: f88c e000 strb.w lr, [ip] + 202d2: e475 b.n 1fbc0 return sysex[t_offset] & 0x7F; - 201f4: 7d0b ldrb r3, [r1, #20] + 202d4: 7d0b ldrb r3, [r1, #20] if(t_offset < size()){ - 201f6: 2d10 cmp r5, #16 + 202d6: 2d10 cmp r5, #16 return sysex[t_offset] & 0x7F; - 201f8: f003 037f and.w r3, r3, #127 ; 0x7f + 202d8: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 201fc: f000 85aa beq.w 20d54 + 202dc: f000 85aa beq.w 20e34 return sysex[t_offset] & 0x7F; - 20200: 7d4d ldrb r5, [r1, #21] - 20202: 2b01 cmp r3, #1 - 20204: f005 057f and.w r5, r5, #127 ; 0x7f - 20208: bf38 it cc - 2020a: 2301 movcc r3, #1 - 2020c: 2d03 cmp r5, #3 - 2020e: bf38 it cc - 20210: 2503 movcc r5, #3 - 20212: e456 b.n 1fac2 + 202e0: 7d4d ldrb r5, [r1, #21] + 202e2: 2b01 cmp r3, #1 + 202e4: f005 057f and.w r5, r5, #127 ; 0x7f + 202e8: bf38 it cc + 202ea: 2301 movcc r3, #1 + 202ec: 2d03 cmp r5, #3 + 202ee: bf38 it cc + 202f0: 2503 movcc r5, #3 + 202f2: e456 b.n 1fba2 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 20214: 7c99 ldrb r1, [r3, #18] - 20216: 7cda ldrb r2, [r3, #19] - 20218: 01cb lsls r3, r1, #7 - 2021a: f002 027f and.w r2, r2, #127 ; 0x7f - 2021e: f403 537e and.w r3, r3, #16256 ; 0x3f80 - 20222: 431a orrs r2, r3 + 202f4: 7c99 ldrb r1, [r3, #18] + 202f6: 7cda ldrb r2, [r3, #19] + 202f8: 01cb lsls r3, r1, #7 + 202fa: f002 027f and.w r2, r2, #127 ; 0x7f + 202fe: f403 537e and.w r3, r3, #16256 ; 0x3f80 + 20302: 431a orrs r2, r3 if(name <= BMC_MAX_NAMES_LIBRARY){ - 20224: 2a80 cmp r2, #128 ; 0x80 - 20226: f73f ac38 bgt.w 1fa9a + 20304: 2a80 cmp r2, #128 ; 0x80 + 20306: f73f ac38 bgt.w 1fb7a item.name = name; - 2022a: b2d2 uxtb r2, r2 - 2022c: e436 b.n 1fa9c + 2030a: b2d2 uxtb r2, r2 + 2030c: e436 b.n 1fb7c uint16_t e = incoming.get14Bits(lenCount); - 2022e: 6be1 ldr r1, [r4, #60] ; 0x3c + 2030e: 6be1 ldr r1, [r4, #60] ; 0x3c if((t_offset+1) < size()){ - 20230: f103 0e01 add.w lr, r3, #1 - 20234: f04f 0c00 mov.w ip, #0 - 20238: f8b1 8003 ldrh.w r8, [r1, #3] - 2023c: 45c6 cmp lr, r8 - 2023e: da11 bge.n 20264 + 20310: f103 0e01 add.w lr, r3, #1 + 20314: f04f 0c00 mov.w ip, #0 + 20318: f8b1 8003 ldrh.w r8, [r1, #3] + 2031c: 45c6 cmp lr, r8 + 2031e: da11 bge.n 20344 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 20240: eb01 0803 add.w r8, r1, r3 - 20244: 4471 add r1, lr - 20246: f898 e005 ldrb.w lr, [r8, #5] - 2024a: 7949 ldrb r1, [r1, #5] - 2024c: ea4f 1ece mov.w lr, lr, lsl #7 - 20250: f001 017f and.w r1, r1, #127 ; 0x7f - 20254: f40e 5e7e and.w lr, lr, #16256 ; 0x3f80 - 20258: ea41 010e orr.w r1, r1, lr + 20320: eb01 0803 add.w r8, r1, r3 + 20324: 4471 add r1, lr + 20326: f898 e005 ldrb.w lr, [r8, #5] + 2032a: 7949 ldrb r1, [r1, #5] + 2032c: ea4f 1ece mov.w lr, lr, lsl #7 + 20330: f001 017f and.w r1, r1, #127 ; 0x7f + 20334: f40e 5e7e and.w lr, lr, #16256 ; 0x3f80 + 20338: ea41 010e orr.w r1, r1, lr if(e > BMC_MAX_EVENTS_LIBRARY){ - 2025c: 29c8 cmp r1, #200 ; 0xc8 + 2033c: 29c8 cmp r1, #200 ; 0xc8 item.events[i] = e; - 2025e: bfd8 it le - 20260: fa5f fc81 uxtble.w ip, r1 - 20264: f809 c002 strb.w ip, [r9, r2] - 20268: e535 b.n 1fcd6 + 2033e: bfd8 it le + 20340: fa5f fc81 uxtble.w ip, r1 + 20344: f809 c002 strb.w ip, [r9, r2] + 20348: e535 b.n 1fdb6 saveLayersAndReloadData(layer); - 2026a: fa5f f188 uxtb.w r1, r8 - 2026e: 4620 mov r0, r4 - 20270: f7fd f9f6 bl 1d660 + 2034a: fa5f f188 uxtb.w r1, r8 + 2034e: 4620 mov r0, r4 + 20350: f7fd f9f6 bl 1d740 if(midi.globals.editorConnected()){ - 20274: 6863 ldr r3, [r4, #4] + 20354: 6863 ldr r3, [r4, #4] return bitRead(flags, bit); - 20276: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 2027a: 6ddb ldr r3, [r3, #92] ; 0x5c - 2027c: 075d lsls r5, r3, #29 - 2027e: f57f ac5b bpl.w 1fb38 + 20356: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 2035a: 6ddb ldr r3, [r3, #92] ; 0x5c + 2035c: 075d lsls r5, r3, #29 + 2035e: f57f ac5b bpl.w 1fc18 bitSet(flags, bit); - 20282: 6b23 ldr r3, [r4, #48] ; 0x30 - 20284: f043 0304 orr.w r3, r3, #4 - 20288: 6323 str r3, [r4, #48] ; 0x30 + 20362: 6b23 ldr r3, [r4, #48] ; 0x30 + 20364: f043 0304 orr.w r3, r3, #4 + 20368: 6323 str r3, [r4, #48] ; 0x30 } - 2028a: e455 b.n 1fb38 + 2036a: e455 b.n 1fc18 uint16_t e = incoming.get14Bits(lenCount); - 2028c: 6be0 ldr r0, [r4, #60] ; 0x3c + 2036c: 6be0 ldr r0, [r4, #60] ; 0x3c if((t_offset+1) < size()){ - 2028e: f103 0801 add.w r8, r3, #1 - 20292: f04f 0e00 mov.w lr, #0 - 20296: f8b0 9003 ldrh.w r9, [r0, #3] - 2029a: 45c8 cmp r8, r9 - 2029c: da11 bge.n 202c2 + 2036e: f103 0801 add.w r8, r3, #1 + 20372: f04f 0e00 mov.w lr, #0 + 20376: f8b0 9003 ldrh.w r9, [r0, #3] + 2037a: 45c8 cmp r8, r9 + 2037c: da11 bge.n 203a2 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 2029e: eb00 0903 add.w r9, r0, r3 - 202a2: 4440 add r0, r8 - 202a4: f899 8005 ldrb.w r8, [r9, #5] - 202a8: 7940 ldrb r0, [r0, #5] - 202aa: ea4f 18c8 mov.w r8, r8, lsl #7 - 202ae: f000 007f and.w r0, r0, #127 ; 0x7f - 202b2: f408 587e and.w r8, r8, #16256 ; 0x3f80 - 202b6: ea40 0008 orr.w r0, r0, r8 + 2037e: eb00 0903 add.w r9, r0, r3 + 20382: 4440 add r0, r8 + 20384: f899 8005 ldrb.w r8, [r9, #5] + 20388: 7940 ldrb r0, [r0, #5] + 2038a: ea4f 18c8 mov.w r8, r8, lsl #7 + 2038e: f000 007f and.w r0, r0, #127 ; 0x7f + 20392: f408 587e and.w r8, r8, #16256 ; 0x3f80 + 20396: ea40 0008 orr.w r0, r0, r8 if(e > BMC_MAX_EVENTS_LIBRARY){ - 202ba: 28c8 cmp r0, #200 ; 0xc8 + 2039a: 28c8 cmp r0, #200 ; 0xc8 item.events[i] = e; - 202bc: bfd8 it le - 202be: fa5f fe80 uxtble.w lr, r0 - 202c2: f80c e002 strb.w lr, [ip, r2] - 202c6: e4c4 b.n 1fc52 - 202c8: 2201 movs r2, #1 - 202ca: f7ff bac3 b.w 1f854 + 2039c: bfd8 it le + 2039e: fa5f fe80 uxtble.w lr, r0 + 203a2: f80c e002 strb.w lr, [ip, r2] + 203a6: e4c4 b.n 1fd32 + 203a8: 2201 movs r2, #1 + 203aa: f7ff bac3 b.w 1f934 sysex[sysLength++] = value; - 202ce: 1c5f adds r7, r3, #1 + 203ae: 1c5f adds r7, r3, #1 buff.appendToSysEx8Bits(item.settings[i]); - 202d0: 780a ldrb r2, [r1, #0] - 202d2: 444b add r3, r9 + 203b0: 780a ldrb r2, [r1, #0] + 203b2: 444b add r3, r9 void setData2(uint8_t t_data2) { data2 = t_data2; } - 202d4: f889 0004 strb.w r0, [r9, #4] + 203b4: f889 0004 strb.w r0, [r9, #4] setData1(value & 0xFF); - 202d8: f889 7003 strb.w r7, [r9, #3] + 203b8: f889 7003 strb.w r7, [r9, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 202dc: 09d7 lsrs r7, r2, #7 + 203bc: 09d7 lsrs r7, r2, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 202de: f002 027f and.w r2, r2, #127 ; 0x7f + 203be: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 202e2: 715f strb r7, [r3, #5] + 203c2: 715f strb r7, [r3, #5] uint16_t sysLength = size(); - 202e4: f8b9 3003 ldrh.w r3, [r9, #3] + 203c4: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 203d2: f63f a8d6 bhi.w 1f582 setData1(value & 0xFF); - 202f6: f889 c003 strb.w ip, [r9, #3] + 203d6: f889 c003 strb.w ip, [r9, #3] sysex[sysLength++] = value; - 202fa: 717a strb r2, [r7, #5] + 203da: 717a strb r2, [r7, #5] return true; - 202fc: f8b9 3003 ldrh.w r3, [r9, #3] - 20300: f7ff b8cf b.w 1f4a2 + 203dc: f8b9 3003 ldrh.w r3, [r9, #3] + 203e0: f7ff b8cf b.w 1f582 item.settings[i] = incoming.get8Bits(lenCount); - 20304: f8d4 e03c ldr.w lr, [r4, #60] ; 0x3c + 203e4: f8d4 e03c ldr.w lr, [r4, #60] ; 0x3c if((t_offset+1) < size()){ - 20308: f103 0801 add.w r8, r3, #1 + 203e8: f103 0801 add.w r8, r3, #1 return 0; - 2030c: f04f 0c00 mov.w ip, #0 + 203ec: f04f 0c00 mov.w ip, #0 if((t_offset+1) < size()){ - 20310: f8be 9003 ldrh.w r9, [lr, #3] - 20314: 45c8 cmp r8, r9 - 20316: da0b bge.n 20330 + 203f0: f8be 9003 ldrh.w r9, [lr, #3] + 203f4: 45c8 cmp r8, r9 + 203f6: da0b bge.n 20410 return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 20318: 44f0 add r8, lr - 2031a: 449e add lr, r3 - 2031c: f898 c005 ldrb.w ip, [r8, #5] - 20320: f89e e005 ldrb.w lr, [lr, #5] - 20324: f00c 0c7f and.w ip, ip, #127 ; 0x7f - 20328: ea4c 1cce orr.w ip, ip, lr, lsl #7 - 2032c: fa5f fc8c uxtb.w ip, ip - 20330: f80b c002 strb.w ip, [fp, r2] - 20334: e4bf b.n 1fcb6 + 203f8: 44f0 add r8, lr + 203fa: 449e add lr, r3 + 203fc: f898 c005 ldrb.w ip, [r8, #5] + 20400: f89e e005 ldrb.w lr, [lr, #5] + 20404: f00c 0c7f and.w ip, ip, #127 ; 0x7f + 20408: ea4c 1cce orr.w ip, ip, lr, lsl #7 + 2040c: fa5f fc8c uxtb.w ip, ip + 20410: f80b c002 strb.w ip, [fp, r2] + 20414: e4bf b.n 1fd96 uint16_t e = incoming.get14Bits(lenCount); - 20336: 6be1 ldr r1, [r4, #60] ; 0x3c + 20416: 6be1 ldr r1, [r4, #60] ; 0x3c if((t_offset+1) < size()){ - 20338: f103 0e01 add.w lr, r3, #1 - 2033c: 2000 movs r0, #0 - 2033e: f8b1 c003 ldrh.w ip, [r1, #3] - 20342: 45e6 cmp lr, ip - 20344: da10 bge.n 20368 + 20418: f103 0e01 add.w lr, r3, #1 + 2041c: 2000 movs r0, #0 + 2041e: f8b1 c003 ldrh.w ip, [r1, #3] + 20422: 45e6 cmp lr, ip + 20424: da10 bge.n 20448 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 20346: eb01 0c03 add.w ip, r1, r3 - 2034a: 4471 add r1, lr - 2034c: f89c c005 ldrb.w ip, [ip, #5] - 20350: 7949 ldrb r1, [r1, #5] - 20352: ea4f 1ccc mov.w ip, ip, lsl #7 - 20356: f001 017f and.w r1, r1, #127 ; 0x7f - 2035a: f40c 5c7e and.w ip, ip, #16256 ; 0x3f80 - 2035e: ea41 010c orr.w r1, r1, ip + 20426: eb01 0c03 add.w ip, r1, r3 + 2042a: 4471 add r1, lr + 2042c: f89c c005 ldrb.w ip, [ip, #5] + 20430: 7949 ldrb r1, [r1, #5] + 20432: ea4f 1ccc mov.w ip, ip, lsl #7 + 20436: f001 017f and.w r1, r1, #127 ; 0x7f + 2043a: f40c 5c7e and.w ip, ip, #16256 ; 0x3f80 + 2043e: ea41 010c orr.w r1, r1, ip if(e > BMC_MAX_EVENTS_LIBRARY){ - 20362: 29c8 cmp r1, #200 ; 0xc8 + 20442: 29c8 cmp r1, #200 ; 0xc8 item.events[i] = e; - 20364: bfd8 it le - 20366: b2c8 uxtble r0, r1 - 20368: f808 0002 strb.w r0, [r8, r2] - 2036c: e6a0 b.n 200b0 + 20444: bfd8 it le + 20446: b2c8 uxtble r0, r1 + 20448: f808 0002 strb.w r0, [r8, r2] + 2044c: e6a0 b.n 20190 uint16_t e = incoming.get14Bits(lenCount); - 2036e: 6be0 ldr r0, [r4, #60] ; 0x3c - 20370: 4649 mov r1, r9 - 20372: f7fa fd95 bl 1aea0 + 2044e: 6be0 ldr r0, [r4, #60] ; 0x3c + 20450: 4649 mov r1, r9 + 20452: f7fa fd95 bl 1af80 if(e > BMC_MAX_EVENTS_LIBRARY){ - 20376: 28c9 cmp r0, #201 ; 0xc9 - 20378: bf28 it cs - 2037a: 2000 movcs r0, #0 + 20456: 28c9 cmp r0, #201 ; 0xc9 + 20458: bf28 it cs + 2045a: 2000 movcs r0, #0 item.events[i] = e; - 2037c: f80a 000b strb.w r0, [sl, fp] - 20380: e5fe b.n 1ff80 + 2045c: f80a 000b strb.w r0, [sl, fp] + 20460: e5fe b.n 20060 item.settings[i] = incoming.get8Bits(lenCount); - 20382: 6be1 ldr r1, [r4, #60] ; 0x3c + 20462: 6be1 ldr r1, [r4, #60] ; 0x3c if((t_offset+1) < size()){ - 20384: f10e 0001 add.w r0, lr, #1 + 20464: f10e 0001 add.w r0, lr, #1 return 0; - 20388: 2200 movs r2, #0 + 20468: 2200 movs r2, #0 if((t_offset+1) < size()){ - 2038a: f8b1 5003 ldrh.w r5, [r1, #3] - 2038e: 42a8 cmp r0, r5 - 20390: da08 bge.n 203a4 + 2046a: f8b1 5003 ldrh.w r5, [r1, #3] + 2046e: 42a8 cmp r0, r5 + 20470: da08 bge.n 20484 return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 20392: 4408 add r0, r1 - 20394: 4471 add r1, lr - 20396: 7942 ldrb r2, [r0, #5] - 20398: 7949 ldrb r1, [r1, #5] - 2039a: f002 027f and.w r2, r2, #127 ; 0x7f - 2039e: ea42 12c1 orr.w r2, r2, r1, lsl #7 - 203a2: b2d2 uxtb r2, r2 - 203a4: f80c 2003 strb.w r2, [ip, r3] - 203a8: e66c b.n 20084 + 20472: 4408 add r0, r1 + 20474: 4471 add r1, lr + 20476: 7942 ldrb r2, [r0, #5] + 20478: 7949 ldrb r1, [r1, #5] + 2047a: f002 027f and.w r2, r2, #127 ; 0x7f + 2047e: ea42 12c1 orr.w r2, r2, r1, lsl #7 + 20482: b2d2 uxtb r2, r2 + 20484: f80c 2003 strb.w r2, [ip, r3] + 20488: e66c b.n 20164 uint16_t e = incoming.get14Bits(lenCount); - 203aa: 4621 mov r1, r4 - 203ac: 9843 ldr r0, [sp, #268] ; 0x10c - 203ae: f7fa fd77 bl 1aea0 + 2048a: 4621 mov r1, r4 + 2048c: 9843 ldr r0, [sp, #268] ; 0x10c + 2048e: f7fa fd77 bl 1af80 e = 0; - 203b2: 28c9 cmp r0, #201 ; 0xc9 - 203b4: bf28 it cs - 203b6: 2000 movcs r0, #0 + 20492: 28c9 cmp r0, #201 ; 0xc9 + 20494: bf28 it cs + 20496: 2000 movcs r0, #0 item.events[i] = e; - 203b8: f825 0018 strh.w r0, [r5, r8, lsl #1] - 203bc: e595 b.n 1feea + 20498: f825 0018 strh.w r0, [r5, r8, lsl #1] + 2049c: e595 b.n 1ffca item.settings[i] = incoming.get8Bits(lenCount); - 203be: f8d4 e03c ldr.w lr, [r4, #60] ; 0x3c + 2049e: f8d4 e03c ldr.w lr, [r4, #60] ; 0x3c if((t_offset+1) < size()){ - 203c2: f102 0801 add.w r8, r2, #1 + 204a2: f102 0801 add.w r8, r2, #1 return 0; - 203c6: 2000 movs r0, #0 + 204a6: 2000 movs r0, #0 if((t_offset+1) < size()){ - 203c8: f8be 9003 ldrh.w r9, [lr, #3] - 203cc: 45c8 cmp r8, r9 - 203ce: da0a bge.n 203e6 + 204a8: f8be 9003 ldrh.w r9, [lr, #3] + 204ac: 45c8 cmp r8, r9 + 204ae: da0a bge.n 204c6 return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 203d0: 44f0 add r8, lr - 203d2: 4496 add lr, r2 - 203d4: f898 0005 ldrb.w r0, [r8, #5] - 203d8: f89e e005 ldrb.w lr, [lr, #5] - 203dc: f000 007f and.w r0, r0, #127 ; 0x7f - 203e0: ea40 10ce orr.w r0, r0, lr, lsl #7 - 203e4: b2c0 uxtb r0, r0 - 203e6: f80a 0001 strb.w r0, [sl, r1] - 203ea: e4a9 b.n 1fd40 + 204b0: 44f0 add r8, lr + 204b2: 4496 add lr, r2 + 204b4: f898 0005 ldrb.w r0, [r8, #5] + 204b8: f89e e005 ldrb.w lr, [lr, #5] + 204bc: f000 007f and.w r0, r0, #127 ; 0x7f + 204c0: ea40 10ce orr.w r0, r0, lr, lsl #7 + 204c4: b2c0 uxtb r0, r0 + 204c6: f80a 0001 strb.w r0, [sl, r1] + 204ca: e4a9 b.n 1fe20 sysex[sysLength++] = value; - 203ec: 1c5a adds r2, r3, #1 - 203ee: 444b add r3, r9 + 204cc: 1c5a adds r2, r3, #1 + 204ce: 444b add r3, r9 setData1(value & 0xFF); - 203f0: f889 2003 strb.w r2, [r9, #3] + 204d0: f889 2003 strb.w r2, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 203f4: 2200 movs r2, #0 - 203f6: f889 2004 strb.w r2, [r9, #4] + 204d4: 2200 movs r2, #0 + 204d6: f889 2004 strb.w r2, [r9, #4] sysex[sysLength++] = value; - 203fa: 2202 movs r2, #2 - 203fc: 715a strb r2, [r3, #5] + 204da: 2202 movs r2, #2 + 204dc: 715a strb r2, [r3, #5] uint16_t sysLength = size(); - 203fe: f8b9 3003 ldrh.w r3, [r9, #3] + 204de: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 204e2: 2bfd cmp r3, #253 ; 0xfd + 204e4: f63f aa1c bhi.w 1f920 sysex[sysLength++] = value; - 20408: 1c5a adds r2, r3, #1 - 2040a: 444b add r3, r9 + 204e8: 1c5a adds r2, r3, #1 + 204ea: 444b add r3, r9 setData1(value & 0xFF); - 2040c: f889 2003 strb.w r2, [r9, #3] + 204ec: f889 2003 strb.w r2, [r9, #3] sysex[sysLength++] = value; - 20410: 2203 movs r2, #3 - 20412: 715a strb r2, [r3, #5] + 204f0: 2203 movs r2, #3 + 204f2: 715a strb r2, [r3, #5] return true; - 20414: f8b9 3003 ldrh.w r3, [r9, #3] - 20418: f7ff ba12 b.w 1f840 + 204f4: f8b9 3003 ldrh.w r3, [r9, #3] + 204f8: f7ff ba12 b.w 1f920 appendSysExByte(value & 0x7F); - 2041c: f002 027f and.w r2, r2, #127 ; 0x7f + 204fc: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 20420: 1c59 adds r1, r3, #1 - 20422: 444b add r3, r9 + 20500: 1c59 adds r1, r3, #1 + 20502: 444b add r3, r9 setData1(value & 0xFF); - 20424: f889 1003 strb.w r1, [r9, #3] + 20504: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 20428: 715a strb r2, [r3, #5] + 20508: 715a strb r2, [r3, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 2042a: 2300 movs r3, #0 + 2050a: 2300 movs r3, #0 appendSysExByte(value & 0x7F); - 2042c: 7aea ldrb r2, [r5, #11] + 2050c: 7aea ldrb r2, [r5, #11] void setData2(uint8_t t_data2) { data2 = t_data2; } - 2042e: f889 3004 strb.w r3, [r9, #4] + 2050e: f889 3004 strb.w r3, [r9, #4] appendSysExByte(value & 0x7F); - 20432: f8b9 3003 ldrh.w r3, [r9, #3] - 20436: f002 027f and.w r2, r2, #127 ; 0x7f + 20512: f8b9 3003 ldrh.w r3, [r9, #3] + 20516: f002 027f and.w r2, r2, #127 ; 0x7f if(sysLength + 2051a: 2bfd cmp r3, #253 ; 0xfd + 2051c: f63f a9dd bhi.w 1f8da sysex[sysLength++] = value; - 20440: 1c59 adds r1, r3, #1 - 20442: 444b add r3, r9 + 20520: 1c59 adds r1, r3, #1 + 20522: 444b add r3, r9 setData1(value & 0xFF); - 20444: f889 1003 strb.w r1, [r9, #3] + 20524: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 20448: 715a strb r2, [r3, #5] + 20528: 715a strb r2, [r3, #5] appendSysExByte(value & 0x7F); - 2044a: f8b9 3003 ldrh.w r3, [r9, #3] - 2044e: 7b2a ldrb r2, [r5, #12] + 2052a: f8b9 3003 ldrh.w r3, [r9, #3] + 2052e: 7b2a ldrb r2, [r5, #12] if(sysLength + 20536: f63f a9d0 bhi.w 1f8da sysex[sysLength++] = value; - 2045a: eb09 0103 add.w r1, r9, r3 - 2045e: 3301 adds r3, #1 - 20460: 714a strb r2, [r1, #5] + 2053a: eb09 0103 add.w r1, r9, r3 + 2053e: 3301 adds r3, #1 + 20540: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 20462: f889 3003 strb.w r3, [r9, #3] + 20542: f889 3003 strb.w r3, [r9, #3] return true; - 20466: f7ff b9c8 b.w 1f7fa + 20546: f7ff b9c8 b.w 1f8da sysex[sysLength++] = value; - 2046a: 1c59 adds r1, r3, #1 - 2046c: 444b add r3, r9 + 2054a: 1c59 adds r1, r3, #1 + 2054c: 444b add r3, r9 setData1(value & 0xFF); - 2046e: f889 1003 strb.w r1, [r9, #3] + 2054e: f889 1003 strb.w r1, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 20472: 2100 movs r1, #0 - 20474: f889 1004 strb.w r1, [r9, #4] + 20552: 2100 movs r1, #0 + 20554: f889 1004 strb.w r1, [r9, #4] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 20478: f3c2 11c6 ubfx r1, r2, #7, #7 + 20558: f3c2 11c6 ubfx r1, r2, #7, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 2047c: f002 027f and.w r2, r2, #127 ; 0x7f + 2055c: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 20480: 7159 strb r1, [r3, #5] + 20560: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 20482: f8b9 3003 ldrh.w r3, [r9, #3] + 20562: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 20566: 2bfd cmp r3, #253 ; 0xfd + 20568: f63f a860 bhi.w 1f62c sysex[sysLength++] = value; - 2048c: eb09 0103 add.w r1, r9, r3 - 20490: 3301 adds r3, #1 - 20492: 714a strb r2, [r1, #5] + 2056c: eb09 0103 add.w r1, r9, r3 + 20570: 3301 adds r3, #1 + 20572: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 20494: f889 3003 strb.w r3, [r9, #3] + 20574: f889 3003 strb.w r3, [r9, #3] return true; - 20498: f7ff b858 b.w 1f54c + 20578: f7ff b858 b.w 1f62c sysex[sysLength++] = value; - 2049c: 1c5a adds r2, r3, #1 - 2049e: 444b add r3, r9 + 2057c: 1c5a adds r2, r3, #1 + 2057e: 444b add r3, r9 setData1(value & 0xFF); - 204a0: f889 2003 strb.w r2, [r9, #3] + 20580: f889 2003 strb.w r2, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 204a4: 2200 movs r2, #0 - 204a6: f889 2004 strb.w r2, [r9, #4] + 20584: 2200 movs r2, #0 + 20586: f889 2004 strb.w r2, [r9, #4] sysex[sysLength++] = value; - 204aa: 2203 movs r2, #3 - 204ac: 715a strb r2, [r3, #5] + 2058a: 2203 movs r2, #3 + 2058c: 715a strb r2, [r3, #5] uint16_t sysLength = size(); - 204ae: f8b9 3003 ldrh.w r3, [r9, #3] + 2058e: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 20592: 2bfd cmp r3, #253 ; 0xfd + 20594: f63e afea bhi.w 1f56c sysex[sysLength++] = value; - 204b8: 1c5a adds r2, r3, #1 - 204ba: 444b add r3, r9 + 20598: 1c5a adds r2, r3, #1 + 2059a: 444b add r3, r9 setData1(value & 0xFF); - 204bc: f889 2003 strb.w r2, [r9, #3] + 2059c: f889 2003 strb.w r2, [r9, #3] sysex[sysLength++] = value; - 204c0: 2205 movs r2, #5 - 204c2: 715a strb r2, [r3, #5] + 205a0: 2205 movs r2, #5 + 205a2: 715a strb r2, [r3, #5] return true; - 204c4: f8b9 3003 ldrh.w r3, [r9, #3] - 204c8: f7fe bfe0 b.w 1f48c + 205a4: f8b9 3003 ldrh.w r3, [r9, #3] + 205a8: f7fe bfe0 b.w 1f56c sysex[sysLength++] = value; - 204cc: 1c5a adds r2, r3, #1 - 204ce: 444b add r3, r9 + 205ac: 1c5a adds r2, r3, #1 + 205ae: 444b add r3, r9 setData1(value & 0xFF); - 204d0: f889 2003 strb.w r2, [r9, #3] + 205b0: f889 2003 strb.w r2, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 204d4: 2200 movs r2, #0 - 204d6: f889 2004 strb.w r2, [r9, #4] + 205b4: 2200 movs r2, #0 + 205b6: f889 2004 strb.w r2, [r9, #4] sysex[sysLength++] = value; - 204da: 2201 movs r2, #1 - 204dc: 715a strb r2, [r3, #5] + 205ba: 2201 movs r2, #1 + 205bc: 715a strb r2, [r3, #5] uint16_t sysLength = size(); - 204de: f8b9 3003 ldrh.w r3, [r9, #3] + 205be: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 205c2: 2bfd cmp r3, #253 ; 0xfd + 205c4: f63f a911 bhi.w 1f7ea sysex[sysLength++] = value; - 204e8: 189a adds r2, r3, r2 - 204ea: 2103 movs r1, #3 - 204ec: 444b add r3, r9 + 205c8: 189a adds r2, r3, r2 + 205ca: 2103 movs r1, #3 + 205cc: 444b add r3, r9 setData1(value & 0xFF); - 204ee: f889 2003 strb.w r2, [r9, #3] + 205ce: f889 2003 strb.w r2, [r9, #3] buff.appendToSysEx8Bits(item.settings[i]); - 204f2: f241 52b6 movw r2, #5558 ; 0x15b6 + 205d2: f241 52b6 movw r2, #5558 ; 0x15b6 sysex[sysLength++] = value; - 204f6: 7159 strb r1, [r3, #5] + 205d6: 7159 strb r1, [r3, #5] for(uint8_t i=0;i + 205e4: f63f a901 bhi.w 1f7ea sysex[sysLength++] = value; - 20508: 1c58 adds r0, r3, #1 - 2050a: 444b add r3, r9 + 205e8: 1c58 adds r0, r3, #1 + 205ea: 444b add r3, r9 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 2050c: f002 027f and.w r2, r2, #127 ; 0x7f + 205ec: f002 027f and.w r2, r2, #127 ; 0x7f setData1(value & 0xFF); - 20510: f889 0003 strb.w r0, [r9, #3] + 205f0: f889 0003 strb.w r0, [r9, #3] sysex[sysLength++] = value; - 20514: 7159 strb r1, [r3, #5] + 205f4: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 20516: f8b9 3003 ldrh.w r3, [r9, #3] + 205f6: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 205fa: 2bfd cmp r3, #253 ; 0xfd + 205fc: f63f a8f5 bhi.w 1f7ea sysex[sysLength++] = value; - 20520: 1c59 adds r1, r3, #1 - 20522: 444b add r3, r9 + 20600: 1c59 adds r1, r3, #1 + 20602: 444b add r3, r9 setData1(value & 0xFF); - 20524: f889 1003 strb.w r1, [r9, #3] + 20604: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 20528: 715a strb r2, [r3, #5] + 20608: 715a strb r2, [r3, #5] for(uint8_t i=0;i + 2060a: f8b9 3003 ldrh.w r3, [r9, #3] + 2060e: f7ff b8ec b.w 1f7ea appendSysExByte(value & 0x7F); - 20532: f002 027f and.w r2, r2, #127 ; 0x7f + 20612: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 20536: 1c59 adds r1, r3, #1 - 20538: 444b add r3, r9 + 20616: 1c59 adds r1, r3, #1 + 20618: 444b add r3, r9 setData1(value & 0xFF); - 2053a: f889 1003 strb.w r1, [r9, #3] + 2061a: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 2053e: 715a strb r2, [r3, #5] + 2061e: 715a strb r2, [r3, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 20540: 2300 movs r3, #0 + 20620: 2300 movs r3, #0 appendSysExByte(value & 0x7F); - 20542: 7aea ldrb r2, [r5, #11] + 20622: 7aea ldrb r2, [r5, #11] void setData2(uint8_t t_data2) { data2 = t_data2; } - 20544: f889 3004 strb.w r3, [r9, #4] + 20624: f889 3004 strb.w r3, [r9, #4] appendSysExByte(value & 0x7F); - 20548: f8b9 3003 ldrh.w r3, [r9, #3] - 2054c: f002 027f and.w r2, r2, #127 ; 0x7f + 20628: f8b9 3003 ldrh.w r3, [r9, #3] + 2062c: f002 027f and.w r2, r2, #127 ; 0x7f if(sysLength + 20630: 2bfd cmp r3, #253 ; 0xfd + 20632: f63f a811 bhi.w 1f658 sysex[sysLength++] = value; - 20556: 1c59 adds r1, r3, #1 - 20558: 444b add r3, r9 + 20636: 1c59 adds r1, r3, #1 + 20638: 444b add r3, r9 setData1(value & 0xFF); - 2055a: f889 1003 strb.w r1, [r9, #3] + 2063a: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 2055e: 715a strb r2, [r3, #5] + 2063e: 715a strb r2, [r3, #5] appendSysExByte(value & 0x7F); - 20560: f8b9 3003 ldrh.w r3, [r9, #3] - 20564: 7b2a ldrb r2, [r5, #12] + 20640: f8b9 3003 ldrh.w r3, [r9, #3] + 20644: 7b2a ldrb r2, [r5, #12] if(sysLength + 2064c: f63f a804 bhi.w 1f658 sysex[sysLength++] = value; - 20570: eb09 0103 add.w r1, r9, r3 - 20574: 3301 adds r3, #1 - 20576: 714a strb r2, [r1, #5] + 20650: eb09 0103 add.w r1, r9, r3 + 20654: 3301 adds r3, #1 + 20656: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 20578: f889 3003 strb.w r3, [r9, #3] + 20658: f889 3003 strb.w r3, [r9, #3] return true; - 2057c: f7fe bffc b.w 1f578 + 2065c: f7fe bffc b.w 1f658 appendSysExByte(value & 0x7F); - 20580: f002 027f and.w r2, r2, #127 ; 0x7f + 20660: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 20584: 1c59 adds r1, r3, #1 - 20586: 444b add r3, r9 + 20664: 1c59 adds r1, r3, #1 + 20666: 444b add r3, r9 setData1(value & 0xFF); - 20588: f889 1003 strb.w r1, [r9, #3] + 20668: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 2058c: 715a strb r2, [r3, #5] + 2066c: 715a strb r2, [r3, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 2058e: 2300 movs r3, #0 + 2066e: 2300 movs r3, #0 appendSysExByte(value & 0x7F); - 20590: 7aea ldrb r2, [r5, #11] + 20670: 7aea ldrb r2, [r5, #11] void setData2(uint8_t t_data2) { data2 = t_data2; } - 20592: f889 3004 strb.w r3, [r9, #4] + 20672: f889 3004 strb.w r3, [r9, #4] appendSysExByte(value & 0x7F); - 20596: f8b9 3003 ldrh.w r3, [r9, #3] - 2059a: f002 027f and.w r2, r2, #127 ; 0x7f + 20676: f8b9 3003 ldrh.w r3, [r9, #3] + 2067a: f002 027f and.w r2, r2, #127 ; 0x7f if(sysLength + 2067e: 2bfd cmp r3, #253 ; 0xfd + 20680: f63f a889 bhi.w 1f796 sysex[sysLength++] = value; - 205a4: 1c59 adds r1, r3, #1 - 205a6: 444b add r3, r9 + 20684: 1c59 adds r1, r3, #1 + 20686: 444b add r3, r9 setData1(value & 0xFF); - 205a8: f889 1003 strb.w r1, [r9, #3] + 20688: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 205ac: 715a strb r2, [r3, #5] + 2068c: 715a strb r2, [r3, #5] appendSysExByte(value & 0x7F); - 205ae: f8b9 3003 ldrh.w r3, [r9, #3] - 205b2: 7b2a ldrb r2, [r5, #12] + 2068e: f8b9 3003 ldrh.w r3, [r9, #3] + 20692: 7b2a ldrb r2, [r5, #12] if(sysLength + 2069a: f63f a87c bhi.w 1f796 sysex[sysLength++] = value; - 205be: eb09 0103 add.w r1, r9, r3 - 205c2: 3301 adds r3, #1 - 205c4: 714a strb r2, [r1, #5] + 2069e: eb09 0103 add.w r1, r9, r3 + 206a2: 3301 adds r3, #1 + 206a4: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 205c6: f889 3003 strb.w r3, [r9, #3] + 206a6: f889 3003 strb.w r3, [r9, #3] return true; - 205ca: f7ff b874 b.w 1f6b6 + 206aa: f7ff b874 b.w 1f796 sysex[sysLength++] = value; - 205ce: 1c59 adds r1, r3, #1 - 205d0: 444b add r3, r9 + 206ae: 1c59 adds r1, r3, #1 + 206b0: 444b add r3, r9 setData1(value & 0xFF); - 205d2: f889 1003 strb.w r1, [r9, #3] + 206b2: f889 1003 strb.w r1, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 205d6: 2100 movs r1, #0 - 205d8: f889 1004 strb.w r1, [r9, #4] + 206b6: 2100 movs r1, #0 + 206b8: f889 1004 strb.w r1, [r9, #4] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 205dc: f3c2 11c6 ubfx r1, r2, #7, #7 + 206bc: f3c2 11c6 ubfx r1, r2, #7, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 205e0: f002 027f and.w r2, r2, #127 ; 0x7f + 206c0: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 205e4: 7159 strb r1, [r3, #5] + 206c4: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 205e6: f8b9 3003 ldrh.w r3, [r9, #3] + 206c6: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 206ca: 2bfd cmp r3, #253 ; 0xfd + 206cc: f63f a855 bhi.w 1f77a sysex[sysLength++] = value; - 205f0: eb09 0103 add.w r1, r9, r3 - 205f4: 3301 adds r3, #1 - 205f6: 714a strb r2, [r1, #5] + 206d0: eb09 0103 add.w r1, r9, r3 + 206d4: 3301 adds r3, #1 + 206d6: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 205f8: f889 3003 strb.w r3, [r9, #3] + 206d8: f889 3003 strb.w r3, [r9, #3] return true; - 205fc: f7ff b84d b.w 1f69a + 206dc: f7ff b84d b.w 1f77a appendSysExByte(value & 0x7F); - 20600: f002 027f and.w r2, r2, #127 ; 0x7f + 206e0: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 20604: 1c59 adds r1, r3, #1 - 20606: 444b add r3, r9 + 206e4: 1c59 adds r1, r3, #1 + 206e6: 444b add r3, r9 setData1(value & 0xFF); - 20608: f889 1003 strb.w r1, [r9, #3] + 206e8: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 2060c: 715a strb r2, [r3, #5] + 206ec: 715a strb r2, [r3, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 2060e: 2300 movs r3, #0 + 206ee: 2300 movs r3, #0 appendSysExByte(value & 0x7F); - 20610: f89d 212b ldrb.w r2, [sp, #299] ; 0x12b + 206f0: f89d 212b ldrb.w r2, [sp, #299] ; 0x12b void setData2(uint8_t t_data2) { data2 = t_data2; } - 20614: f889 3004 strb.w r3, [r9, #4] + 206f4: f889 3004 strb.w r3, [r9, #4] appendSysExByte(value & 0x7F); - 20618: f8b9 3003 ldrh.w r3, [r9, #3] - 2061c: f002 027f and.w r2, r2, #127 ; 0x7f + 206f8: f8b9 3003 ldrh.w r3, [r9, #3] + 206fc: f002 027f and.w r2, r2, #127 ; 0x7f if(sysLength + 20700: 2bfd cmp r3, #253 ; 0xfd + 20702: f63e af24 bhi.w 1f54e sysex[sysLength++] = value; - 20626: 1c59 adds r1, r3, #1 - 20628: 444b add r3, r9 + 20706: 1c59 adds r1, r3, #1 + 20708: 444b add r3, r9 setData1(value & 0xFF); - 2062a: f889 1003 strb.w r1, [r9, #3] + 2070a: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 2062e: 715a strb r2, [r3, #5] + 2070e: 715a strb r2, [r3, #5] appendSysExByte(value & 0x7F); - 20630: f8b9 3003 ldrh.w r3, [r9, #3] - 20634: f89d 212c ldrb.w r2, [sp, #300] ; 0x12c + 20710: f8b9 3003 ldrh.w r3, [r9, #3] + 20714: f89d 212c ldrb.w r2, [sp, #300] ; 0x12c if(sysLength + 2071e: f63e af16 bhi.w 1f54e sysex[sysLength++] = value; - 20642: 1c59 adds r1, r3, #1 - 20644: 444b add r3, r9 + 20722: 1c59 adds r1, r3, #1 + 20724: 444b add r3, r9 setData1(value & 0xFF); - 20646: f889 1003 strb.w r1, [r9, #3] + 20726: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 2064a: 715a strb r2, [r3, #5] + 2072a: 715a strb r2, [r3, #5] return true; - 2064c: f8b9 3003 ldrh.w r3, [r9, #3] + 2072c: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx14Bits(ui.mergeIndex); - 20650: f8bd 212e ldrh.w r2, [sp, #302] ; 0x12e + 20730: f8bd 212e ldrh.w r2, [sp, #302] ; 0x12e if(sysLength + 2073a: f63e af08 bhi.w 1f54e sysex[sysLength++] = value; - 2065e: 1c58 adds r0, r3, #1 - 20660: 444b add r3, r9 + 2073e: 1c58 adds r0, r3, #1 + 20740: 444b add r3, r9 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 20662: f002 027f and.w r2, r2, #127 ; 0x7f + 20742: f002 027f and.w r2, r2, #127 ; 0x7f setData1(value & 0xFF); - 20666: f889 0003 strb.w r0, [r9, #3] + 20746: f889 0003 strb.w r0, [r9, #3] sysex[sysLength++] = value; - 2066a: 7159 strb r1, [r3, #5] + 2074a: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 2066c: f8b9 3003 ldrh.w r3, [r9, #3] + 2074c: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 20750: 2bfd cmp r3, #253 ; 0xfd + 20752: f63e aefc bhi.w 1f54e sysex[sysLength++] = value; - 20676: 1c58 adds r0, r3, #1 - 20678: 444b add r3, r9 + 20756: 1c58 adds r0, r3, #1 + 20758: 444b add r3, r9 buff.appendToSysEx7Bits(ui.other1); - 2067a: f8bd 1130 ldrh.w r1, [sp, #304] ; 0x130 + 2075a: f8bd 1130 ldrh.w r1, [sp, #304] ; 0x130 setData1(value & 0xFF); - 2067e: f889 0003 strb.w r0, [r9, #3] + 2075e: f889 0003 strb.w r0, [r9, #3] sysex[sysLength++] = value; - 20682: 715a strb r2, [r3, #5] + 20762: 715a strb r2, [r3, #5] appendSysExByte(value & 0x7F); - 20684: f001 017f and.w r1, r1, #127 ; 0x7f + 20764: f001 017f and.w r1, r1, #127 ; 0x7f uint16_t sysLength = size(); - 20688: f8b9 3003 ldrh.w r3, [r9, #3] + 20768: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 2076c: 2bfd cmp r3, #253 ; 0xfd + 2076e: f63e aeee bhi.w 1f54e sysex[sysLength++] = value; - 20692: eb09 0203 add.w r2, r9, r3 - 20696: 3301 adds r3, #1 - 20698: 7151 strb r1, [r2, #5] + 20772: eb09 0203 add.w r2, r9, r3 + 20776: 3301 adds r3, #1 + 20778: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 2069a: f889 3003 strb.w r3, [r9, #3] + 2077a: f889 3003 strb.w r3, [r9, #3] return true; - 2069e: f7fe bee6 b.w 1f46e + 2077e: f7fe bee6 b.w 1f54e sysex[sysLength++] = value; - 206a2: 1c5a adds r2, r3, #1 - 206a4: 444b add r3, r9 + 20782: 1c5a adds r2, r3, #1 + 20784: 444b add r3, r9 setData1(value & 0xFF); - 206a6: f889 2003 strb.w r2, [r9, #3] + 20786: f889 2003 strb.w r2, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 206aa: 2200 movs r2, #0 - 206ac: f889 2004 strb.w r2, [r9, #4] + 2078a: 2200 movs r2, #0 + 2078c: f889 2004 strb.w r2, [r9, #4] sysex[sysLength++] = value; - 206b0: 2201 movs r2, #1 - 206b2: 715a strb r2, [r3, #5] + 20790: 2201 movs r2, #1 + 20792: 715a strb r2, [r3, #5] uint16_t sysLength = size(); - 206b4: f8b9 3003 ldrh.w r3, [r9, #3] + 20794: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 20798: 2bfd cmp r3, #253 ; 0xfd + 2079a: f63e af81 bhi.w 1f6a0 sysex[sysLength++] = value; - 206be: 1c59 adds r1, r3, #1 - 206c0: 444b add r3, r9 + 2079e: 1c59 adds r1, r3, #1 + 207a0: 444b add r3, r9 buff.appendToSysEx8Bits(item.settings[i]); - 206c2: f895 253b ldrb.w r2, [r5, #1339] ; 0x53b + 207a2: f895 253b ldrb.w r2, [r5, #1339] ; 0x53b setData1(value & 0xFF); - 206c6: f889 1003 strb.w r1, [r9, #3] + 207a6: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 206ca: 2102 movs r1, #2 + 207aa: 2102 movs r1, #2 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 206cc: 09d0 lsrs r0, r2, #7 + 207ac: 09d0 lsrs r0, r2, #7 sysex[sysLength++] = value; - 206ce: 7159 strb r1, [r3, #5] + 207ae: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 206d0: f8b9 3003 ldrh.w r3, [r9, #3] + 207b0: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 207b4: 2bfd cmp r3, #253 ; 0xfd + 207b6: f63e af73 bhi.w 1f6a0 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 206da: f002 017f and.w r1, r2, #127 ; 0x7f + 207ba: f002 017f and.w r1, r2, #127 ; 0x7f sysex[sysLength++] = value; - 206de: 1c5a adds r2, r3, #1 - 206e0: 444b add r3, r9 + 207be: 1c5a adds r2, r3, #1 + 207c0: 444b add r3, r9 setData1(value & 0xFF); - 206e2: f889 2003 strb.w r2, [r9, #3] + 207c2: f889 2003 strb.w r2, [r9, #3] sysex[sysLength++] = value; - 206e6: 7158 strb r0, [r3, #5] + 207c6: 7158 strb r0, [r3, #5] uint16_t sysLength = size(); - 206e8: f8b9 3003 ldrh.w r3, [r9, #3] + 207c8: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 207cc: 2bfd cmp r3, #253 ; 0xfd + 207ce: f63e af67 bhi.w 1f6a0 sysex[sysLength++] = value; - 206f2: 1c58 adds r0, r3, #1 - 206f4: 444b add r3, r9 + 207d2: 1c58 adds r0, r3, #1 + 207d4: 444b add r3, r9 buff.appendToSysEx14Bits(item.events[i]); - 206f6: f207 524c addw r2, r7, #1356 ; 0x54c + 207d6: f207 524c addw r2, r7, #1356 ; 0x54c setData1(value & 0xFF); - 206fa: f889 0003 strb.w r0, [r9, #3] + 207da: f889 0003 strb.w r0, [r9, #3] sysex[sysLength++] = value; - 206fe: 7159 strb r1, [r3, #5] - 20700: eb06 0282 add.w r2, r6, r2, lsl #2 - 20704: f8b9 3003 ldrh.w r3, [r9, #3] - 20708: 7b12 ldrb r2, [r2, #12] + 207de: 7159 strb r1, [r3, #5] + 207e0: eb06 0282 add.w r2, r6, r2, lsl #2 + 207e4: f8b9 3003 ldrh.w r3, [r9, #3] + 207e8: 7b12 ldrb r2, [r2, #12] if(sysLength + 207ea: 2bfd cmp r3, #253 ; 0xfd + 207ec: f63e af58 bhi.w 1f6a0 sysex[sysLength++] = value; - 20710: 1c59 adds r1, r3, #1 - 20712: 444b add r3, r9 + 207f0: 1c59 adds r1, r3, #1 + 207f2: 444b add r3, r9 setData1(value & 0xFF); - 20714: f889 1003 strb.w r1, [r9, #3] + 207f4: f889 1003 strb.w r1, [r9, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 20718: 09d1 lsrs r1, r2, #7 + 207f8: 09d1 lsrs r1, r2, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 2071a: f002 027f and.w r2, r2, #127 ; 0x7f + 207fa: f002 027f and.w r2, r2, #127 ; 0x7f appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 2071e: 7159 strb r1, [r3, #5] + 207fe: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 20720: f8b9 3003 ldrh.w r3, [r9, #3] + 20800: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 20804: 2bfd cmp r3, #253 ; 0xfd + 20806: f63e ad2a bhi.w 1f25e sysex[sysLength++] = value; - 2072a: eb09 0103 add.w r1, r9, r3 - 2072e: 3301 adds r3, #1 - 20730: 714a strb r2, [r1, #5] + 2080a: eb09 0103 add.w r1, r9, r3 + 2080e: 3301 adds r3, #1 + 20810: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 20732: f889 3003 strb.w r3, [r9, #3] + 20812: f889 3003 strb.w r3, [r9, #3] return true; - 20736: f7fe bf43 b.w 1f5c0 + 20816: f7fe bf43 b.w 1f6a0 sysex[sysLength++] = value; - 2073a: 1c59 adds r1, r3, #1 - 2073c: 444b add r3, r9 + 2081a: 1c59 adds r1, r3, #1 + 2081c: 444b add r3, r9 setData1(value & 0xFF); - 2073e: f889 1003 strb.w r1, [r9, #3] + 2081e: f889 1003 strb.w r1, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 20742: 2100 movs r1, #0 - 20744: f889 1004 strb.w r1, [r9, #4] + 20822: 2100 movs r1, #0 + 20824: f889 1004 strb.w r1, [r9, #4] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 20748: 09d1 lsrs r1, r2, #7 + 20828: 09d1 lsrs r1, r2, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 2074a: f002 027f and.w r2, r2, #127 ; 0x7f + 2082a: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 2074e: 7159 strb r1, [r3, #5] + 2082e: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 20750: f8b9 3003 ldrh.w r3, [r9, #3] + 20830: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 20834: 2bfd cmp r3, #253 ; 0xfd + 20836: f63e ad0d bhi.w 1f254 sysex[sysLength++] = value; - 2075a: eb09 0103 add.w r1, r9, r3 - 2075e: 3301 adds r3, #1 - 20760: 714a strb r2, [r1, #5] + 2083a: eb09 0103 add.w r1, r9, r3 + 2083e: 3301 adds r3, #1 + 20840: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 20762: f889 3003 strb.w r3, [r9, #3] + 20842: f889 3003 strb.w r3, [r9, #3] return true; - 20766: f7fe bd05 b.w 1f174 + 20846: f7fe bd05 b.w 1f254 sysex[sysLength++] = value; - 2076a: 1c5a adds r2, r3, #1 - 2076c: 444b add r3, r9 + 2084a: 1c5a adds r2, r3, #1 + 2084c: 444b add r3, r9 setData1(value & 0xFF); - 2076e: f889 2003 strb.w r2, [r9, #3] + 2084e: f889 2003 strb.w r2, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 20772: 2200 movs r2, #0 - 20774: f889 2004 strb.w r2, [r9, #4] + 20852: 2200 movs r2, #0 + 20854: f889 2004 strb.w r2, [r9, #4] sysex[sysLength++] = value; - 20778: 2202 movs r2, #2 - 2077a: 715a strb r2, [r3, #5] + 20858: 2202 movs r2, #2 + 2085a: 715a strb r2, [r3, #5] uint16_t sysLength = size(); - 2077c: f8b9 3003 ldrh.w r3, [r9, #3] + 2085c: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 20860: 2bfd cmp r3, #253 ; 0xfd + 20862: f63e acee bhi.w 1f242 sysex[sysLength++] = value; - 20786: 1c59 adds r1, r3, #1 - 20788: 444b add r3, r9 + 20866: 1c59 adds r1, r3, #1 + 20868: 444b add r3, r9 buff.appendToSysEx8Bits(item.settings[i]); - 2078a: f207 5252 addw r2, r7, #1362 ; 0x552 + 2086a: f207 5252 addw r2, r7, #1362 ; 0x552 setData1(value & 0xFF); - 2078e: f889 1003 strb.w r1, [r9, #3] + 2086e: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 20792: 2101 movs r1, #1 - 20794: eb06 0282 add.w r2, r6, r2, lsl #2 - 20798: 7159 strb r1, [r3, #5] + 20872: 2101 movs r1, #1 + 20874: eb06 0282 add.w r2, r6, r2, lsl #2 + 20878: 7159 strb r1, [r3, #5] return true; - 2079a: f8b9 3003 ldrh.w r3, [r9, #3] - 2079e: 7a52 ldrb r2, [r2, #9] + 2087a: f8b9 3003 ldrh.w r3, [r9, #3] + 2087e: 7a52 ldrb r2, [r2, #9] if(sysLength + 20880: 2bfd cmp r3, #253 ; 0xfd + 20882: f63e acde bhi.w 1f242 sysex[sysLength++] = value; - 207a6: 1859 adds r1, r3, r1 - 207a8: 444b add r3, r9 + 20886: 1859 adds r1, r3, r1 + 20888: 444b add r3, r9 setData1(value & 0xFF); - 207aa: f889 1003 strb.w r1, [r9, #3] + 2088a: f889 1003 strb.w r1, [r9, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 207ae: 09d1 lsrs r1, r2, #7 + 2088e: 09d1 lsrs r1, r2, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 207b0: f002 027f and.w r2, r2, #127 ; 0x7f + 20890: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 207b4: 7159 strb r1, [r3, #5] + 20894: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 207b6: f8b9 3003 ldrh.w r3, [r9, #3] + 20896: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 2089a: 2bfd cmp r3, #253 ; 0xfd + 2089c: f63e acda bhi.w 1f254 sysex[sysLength++] = value; - 207c0: eb09 0103 add.w r1, r9, r3 - 207c4: 3301 adds r3, #1 - 207c6: 714a strb r2, [r1, #5] + 208a0: eb09 0103 add.w r1, r9, r3 + 208a4: 3301 adds r3, #1 + 208a6: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 207c8: f889 3003 strb.w r3, [r9, #3] + 208a8: f889 3003 strb.w r3, [r9, #3] return true; - 207cc: f7fe bcc9 b.w 1f162 + 208ac: f7fe bcc9 b.w 1f242 appendSysExByte(value & 0x7F); - 207d0: f002 027f and.w r2, r2, #127 ; 0x7f + 208b0: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 207d4: 1c59 adds r1, r3, #1 - 207d6: 444b add r3, r9 + 208b4: 1c59 adds r1, r3, #1 + 208b6: 444b add r3, r9 setData1(value & 0xFF); - 207d8: f889 1003 strb.w r1, [r9, #3] + 208b8: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 207dc: 715a strb r2, [r3, #5] + 208bc: 715a strb r2, [r3, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 207de: 2300 movs r3, #0 + 208be: 2300 movs r3, #0 appendSysExByte(value & 0x7F); - 207e0: 7aea ldrb r2, [r5, #11] + 208c0: 7aea ldrb r2, [r5, #11] void setData2(uint8_t t_data2) { data2 = t_data2; } - 207e2: f889 3004 strb.w r3, [r9, #4] + 208c2: f889 3004 strb.w r3, [r9, #4] appendSysExByte(value & 0x7F); - 207e6: f8b9 3003 ldrh.w r3, [r9, #3] - 207ea: f002 027f and.w r2, r2, #127 ; 0x7f + 208c6: f8b9 3003 ldrh.w r3, [r9, #3] + 208ca: f002 027f and.w r2, r2, #127 ; 0x7f if(sysLength + 208ce: 2bfd cmp r3, #253 ; 0xfd + 208d0: f63e aca7 bhi.w 1f222 sysex[sysLength++] = value; - 207f4: 1c59 adds r1, r3, #1 - 207f6: 444b add r3, r9 + 208d4: 1c59 adds r1, r3, #1 + 208d6: 444b add r3, r9 setData1(value & 0xFF); - 207f8: f889 1003 strb.w r1, [r9, #3] + 208d8: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 207fc: 715a strb r2, [r3, #5] + 208dc: 715a strb r2, [r3, #5] appendSysExByte(value & 0x7F); - 207fe: f8b9 3003 ldrh.w r3, [r9, #3] - 20802: 7b2a ldrb r2, [r5, #12] + 208de: f8b9 3003 ldrh.w r3, [r9, #3] + 208e2: 7b2a ldrb r2, [r5, #12] if(sysLength + 208ea: f63e ac9a bhi.w 1f222 sysex[sysLength++] = value; - 2080e: 1c59 adds r1, r3, #1 - 20810: 444b add r3, r9 + 208ee: 1c59 adds r1, r3, #1 + 208f0: 444b add r3, r9 setData1(value & 0xFF); - 20812: f889 1003 strb.w r1, [r9, #3] + 208f2: f889 1003 strb.w r1, [r9, #3] sysex[sysLength++] = value; - 20816: 715a strb r2, [r3, #5] + 208f6: 715a strb r2, [r3, #5] return true; - 20818: f8b9 3003 ldrh.w r3, [r9, #3] + 208f8: f8b9 3003 ldrh.w r3, [r9, #3] buff.appendToSysEx14Bits(ui.mergeIndex); - 2081c: 89ea ldrh r2, [r5, #14] + 208fc: 89ea ldrh r2, [r5, #14] if(sysLength + 20904: f63e ac8d bhi.w 1f222 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 20828: f002 017f and.w r1, r2, #127 ; 0x7f + 20908: f002 017f and.w r1, r2, #127 ; 0x7f sysex[sysLength++] = value; - 2082c: 1c5a adds r2, r3, #1 - 2082e: 444b add r3, r9 + 2090c: 1c5a adds r2, r3, #1 + 2090e: 444b add r3, r9 setData1(value & 0xFF); - 20830: f889 2003 strb.w r2, [r9, #3] + 20910: f889 2003 strb.w r2, [r9, #3] sysex[sysLength++] = value; - 20834: 7158 strb r0, [r3, #5] + 20914: 7158 strb r0, [r3, #5] uint16_t sysLength = size(); - 20836: f8b9 3003 ldrh.w r3, [r9, #3] + 20916: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 2091a: 2bfd cmp r3, #253 ; 0xfd + 2091c: f63e ac81 bhi.w 1f222 sysex[sysLength++] = value; - 20840: 1c58 adds r0, r3, #1 - 20842: 444b add r3, r9 + 20920: 1c58 adds r0, r3, #1 + 20922: 444b add r3, r9 buff.appendToSysEx7Bits(ui.other1); - 20844: 8a2a ldrh r2, [r5, #16] + 20924: 8a2a ldrh r2, [r5, #16] setData1(value & 0xFF); - 20846: f889 0003 strb.w r0, [r9, #3] + 20926: f889 0003 strb.w r0, [r9, #3] sysex[sysLength++] = value; - 2084a: 7159 strb r1, [r3, #5] + 2092a: 7159 strb r1, [r3, #5] appendSysExByte(value & 0x7F); - 2084c: f002 027f and.w r2, r2, #127 ; 0x7f + 2092c: f002 027f and.w r2, r2, #127 ; 0x7f uint16_t sysLength = size(); - 20850: f8b9 3003 ldrh.w r3, [r9, #3] + 20930: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 20934: 2bfd cmp r3, #253 ; 0xfd + 20936: f63e ac74 bhi.w 1f222 sysex[sysLength++] = value; - 2085a: eb09 0103 add.w r1, r9, r3 - 2085e: 3301 adds r3, #1 - 20860: 714a strb r2, [r1, #5] + 2093a: eb09 0103 add.w r1, r9, r3 + 2093e: 3301 adds r3, #1 + 20940: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 20862: f889 3003 strb.w r3, [r9, #3] + 20942: f889 3003 strb.w r3, [r9, #3] return true; - 20866: f7fe bc6c b.w 1f142 + 20946: f7fe bc6c b.w 1f222 sysex[sysLength++] = value; - 2086a: 1c59 adds r1, r3, #1 - 2086c: 444b add r3, r9 + 2094a: 1c59 adds r1, r3, #1 + 2094c: 444b add r3, r9 setData1(value & 0xFF); - 2086e: f889 1003 strb.w r1, [r9, #3] + 2094e: f889 1003 strb.w r1, [r9, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 20872: 2100 movs r1, #0 - 20874: f889 1004 strb.w r1, [r9, #4] + 20952: 2100 movs r1, #0 + 20954: f889 1004 strb.w r1, [r9, #4] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 20878: f3c2 11c6 ubfx r1, r2, #7, #7 + 20958: f3c2 11c6 ubfx r1, r2, #7, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 2087c: f002 027f and.w r2, r2, #127 ; 0x7f + 2095c: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 20880: 7159 strb r1, [r3, #5] + 20960: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 20882: f8b9 3003 ldrh.w r3, [r9, #3] + 20962: f8b9 3003 ldrh.w r3, [r9, #3] if(sysLength + 20966: 2bfd cmp r3, #253 ; 0xfd + 20968: f63e ac45 bhi.w 1f1f6 sysex[sysLength++] = value; - 2088c: eb09 0103 add.w r1, r9, r3 - 20890: 3301 adds r3, #1 - 20892: 714a strb r2, [r1, #5] + 2096c: eb09 0103 add.w r1, r9, r3 + 20970: 3301 adds r3, #1 + 20972: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 20894: f889 3003 strb.w r3, [r9, #3] + 20974: f889 3003 strb.w r3, [r9, #3] return true; - 20898: f7fe bc3d b.w 1f116 + 20978: f7fe bc3d b.w 1f1f6 return sysex[t_offset] & 0x7F; - 2089c: 7d0b ldrb r3, [r1, #20] + 2097c: 7d0b ldrb r3, [r1, #20] if(t_offset < size()){ - 2089e: 2810 cmp r0, #16 + 2097e: 2810 cmp r0, #16 return sysex[t_offset] & 0x7F; - 208a0: f003 037f and.w r3, r3, #127 ; 0x7f + 20980: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 208a4: f000 825d beq.w 20d62 + 20984: f000 825d beq.w 20e42 return sysex[t_offset] & 0x7F; - 208a8: 2b02 cmp r3, #2 - 208aa: 7d49 ldrb r1, [r1, #21] - 208ac: bf38 it cc - 208ae: 2302 movcc r3, #2 - 208b0: 4698 mov r8, r3 - 208b2: f001 037f and.w r3, r1, #127 ; 0x7f - 208b6: 2b03 cmp r3, #3 - 208b8: bf38 it cc - 208ba: 2303 movcc r3, #3 - 208bc: 469a mov sl, r3 - 208be: f7ff bbd2 b.w 20066 - 208c2: 7d0b ldrb r3, [r1, #20] + 20988: 2b02 cmp r3, #2 + 2098a: 7d49 ldrb r1, [r1, #21] + 2098c: bf38 it cc + 2098e: 2302 movcc r3, #2 + 20990: 4698 mov r8, r3 + 20992: f001 037f and.w r3, r1, #127 ; 0x7f + 20996: 2b03 cmp r3, #3 + 20998: bf38 it cc + 2099a: 2303 movcc r3, #3 + 2099c: 469a mov sl, r3 + 2099e: f7ff bbd2 b.w 20146 + 209a2: 7d0b ldrb r3, [r1, #20] if(t_offset < size()){ - 208c4: 2810 cmp r0, #16 + 209a4: 2810 cmp r0, #16 return sysex[t_offset] & 0x7F; - 208c6: f003 037f and.w r3, r3, #127 ; 0x7f + 209a6: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 208ca: d003 beq.n 208d4 + 209aa: d003 beq.n 209b4 return sysex[t_offset] & 0x7F; - 208cc: 7d49 ldrb r1, [r1, #21] + 209ac: 7d49 ldrb r1, [r1, #21] if(lenEvents < eLen){ - 208ce: f011 0f7c tst.w r1, #124 ; 0x7c - 208d2: d108 bne.n 208e6 + 209ae: f011 0f7c tst.w r1, #124 ; 0x7c + 209b2: d108 bne.n 209c6 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 208d4: 2b00 cmp r3, #0 - 208d6: f43f a9b4 beq.w 1fc42 + 209b4: 2b00 cmp r3, #0 + 209b6: f43f a9b4 beq.w 1fd22 lenCount += 2; - 208da: 005b lsls r3, r3, #1 + 209ba: 005b lsls r3, r3, #1 lenEvents = eLen; - 208dc: 2104 movs r1, #4 + 209bc: 2104 movs r1, #4 lenCount += 2; - 208de: 3311 adds r3, #17 - 208e0: b2db uxtb r3, r3 + 209be: 3311 adds r3, #17 + 209c0: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 208e2: f7ff b9b0 b.w 1fc46 - 208e6: f001 017f and.w r1, r1, #127 ; 0x7f + 209c2: f7ff b9b0 b.w 1fd26 + 209c6: f001 017f and.w r1, r1, #127 ; 0x7f for(uint8_t i = 0 ; i < lenSettings ; i++){ - 208ea: 2b00 cmp r3, #0 - 208ec: f000 822c beq.w 20d48 + 209ca: 2b00 cmp r3, #0 + 209cc: f000 822c beq.w 20e28 lenCount += 2; - 208f0: 005b lsls r3, r3, #1 - 208f2: 3311 adds r3, #17 - 208f4: b2db uxtb r3, r3 + 209d0: 005b lsls r3, r3, #1 + 209d2: 3311 adds r3, #17 + 209d4: b2db uxtb r3, r3 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 208f6: 2900 cmp r1, #0 - 208f8: f43f a9b1 beq.w 1fc5e - 208fc: f7ff b9a3 b.w 1fc46 + 209d6: 2900 cmp r1, #0 + 209d8: f43f a9b1 beq.w 1fd3e + 209dc: f7ff b9a3 b.w 1fd26 item.settings[i] = incoming.get8Bits(lenCount); - 20900: f8d4 e03c ldr.w lr, [r4, #60] ; 0x3c + 209e0: f8d4 e03c ldr.w lr, [r4, #60] ; 0x3c if((t_offset+1) < size()){ - 20904: f101 0c01 add.w ip, r1, #1 + 209e4: f101 0c01 add.w ip, r1, #1 return 0; - 20908: 4602 mov r2, r0 + 209e8: 4602 mov r2, r0 if((t_offset+1) < size()){ - 2090a: f8be 9003 ldrh.w r9, [lr, #3] - 2090e: 45cc cmp ip, r9 - 20910: da09 bge.n 20926 + 209ea: f8be 9003 ldrh.w r9, [lr, #3] + 209ee: 45cc cmp ip, r9 + 209f0: da09 bge.n 20a06 return BMC_MIDI_ARRAY_TO_8BITS(t_offset,sysex) & 0xFF; - 20912: 44f4 add ip, lr - 20914: 4471 add r1, lr - 20916: f89c 2005 ldrb.w r2, [ip, #5] - 2091a: 7949 ldrb r1, [r1, #5] - 2091c: f002 027f and.w r2, r2, #127 ; 0x7f - 20920: ea42 12c1 orr.w r2, r2, r1, lsl #7 - 20924: b2d2 uxtb r2, r2 - 20926: f88a 253b strb.w r2, [sl, #1339] ; 0x53b - 2092a: f7ff bb16 b.w 1ff5a + 209f2: 44f4 add ip, lr + 209f4: 4471 add r1, lr + 209f6: f89c 2005 ldrb.w r2, [ip, #5] + 209fa: 7949 ldrb r1, [r1, #5] + 209fc: f002 027f and.w r2, r2, #127 ; 0x7f + 20a00: ea42 12c1 orr.w r2, r2, r1, lsl #7 + 20a04: b2d2 uxtb r2, r2 + 20a06: f88a 253b strb.w r2, [sl, #1339] ; 0x53b + 20a0a: f7ff bb16 b.w 2003a return sysex[t_offset] & 0x7F; - 2092e: 7d13 ldrb r3, [r2, #20] + 20a0e: 7d13 ldrb r3, [r2, #20] if(t_offset < size()){ - 20930: 2910 cmp r1, #16 + 20a10: 2910 cmp r1, #16 return sysex[t_offset] & 0x7F; - 20932: f003 037f and.w r3, r3, #127 ; 0x7f + 20a12: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 20936: f000 81ec beq.w 20d12 + 20a16: f000 81ec beq.w 20df2 return sysex[t_offset] & 0x7F; - 2093a: f892 8015 ldrb.w r8, [r2, #21] - 2093e: 2b01 cmp r3, #1 - 20940: f008 087f and.w r8, r8, #127 ; 0x7f - 20944: bf38 it cc - 20946: 2301 movcc r3, #1 - 20948: f1b8 0f02 cmp.w r8, #2 - 2094c: bf38 it cc - 2094e: f04f 0802 movcc.w r8, #2 - 20952: f7ff bafb b.w 1ff4c + 20a1a: f892 8015 ldrb.w r8, [r2, #21] + 20a1e: 2b01 cmp r3, #1 + 20a20: f008 087f and.w r8, r8, #127 ; 0x7f + 20a24: bf38 it cc + 20a26: 2301 movcc r3, #1 + 20a28: f1b8 0f02 cmp.w r8, #2 + 20a2c: bf38 it cc + 20a2e: f04f 0802 movcc.w r8, #2 + 20a32: f7ff bafb b.w 2002c return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 20956: 7c9a ldrb r2, [r3, #18] - 20958: 7cdb ldrb r3, [r3, #19] - 2095a: 01d2 lsls r2, r2, #7 - 2095c: f003 037f and.w r3, r3, #127 ; 0x7f - 20960: f402 527e and.w r2, r2, #16256 ; 0x3f80 - 20964: 4313 orrs r3, r2 + 20a36: 7c9a ldrb r2, [r3, #18] + 20a38: 7cdb ldrb r3, [r3, #19] + 20a3a: 01d2 lsls r2, r2, #7 + 20a3c: f003 037f and.w r3, r3, #127 ; 0x7f + 20a40: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 20a44: 4313 orrs r3, r2 if(name <= BMC_MAX_NAMES_LIBRARY){ - 20966: 2b80 cmp r3, #128 ; 0x80 - 20968: f73f aae0 bgt.w 1ff2c + 20a46: 2b80 cmp r3, #128 ; 0x80 + 20a48: f73f aae0 bgt.w 2000c item.name = name; - 2096c: b2db uxtb r3, r3 - 2096e: f7ff bade b.w 1ff2e - 20972: 7c99 ldrb r1, [r3, #18] - 20974: 7cdb ldrb r3, [r3, #19] - 20976: 01c9 lsls r1, r1, #7 - 20978: f003 037f and.w r3, r3, #127 ; 0x7f - 2097c: f401 517e and.w r1, r1, #16256 ; 0x3f80 - 20980: 430b orrs r3, r1 + 20a4c: b2db uxtb r3, r3 + 20a4e: f7ff bade b.w 2000e + 20a52: 7c99 ldrb r1, [r3, #18] + 20a54: 7cdb ldrb r3, [r3, #19] + 20a56: 01c9 lsls r1, r1, #7 + 20a58: f003 037f and.w r3, r3, #127 ; 0x7f + 20a5c: f401 517e and.w r1, r1, #16256 ; 0x3f80 + 20a60: 430b orrs r3, r1 if(name <= BMC_MAX_NAMES_LIBRARY){ - 20982: 2b80 cmp r3, #128 ; 0x80 - 20984: f73f a954 bgt.w 1fc30 + 20a62: 2b80 cmp r3, #128 ; 0x80 + 20a64: f73f a954 bgt.w 1fd10 item.name = name; - 20988: b2db uxtb r3, r3 - 2098a: f7ff b952 b.w 1fc32 - 2098e: 7c9a ldrb r2, [r3, #18] - 20990: 7cdb ldrb r3, [r3, #19] - 20992: 01d2 lsls r2, r2, #7 - 20994: f003 037f and.w r3, r3, #127 ; 0x7f - 20998: f402 527e and.w r2, r2, #16256 ; 0x3f80 - 2099c: 4313 orrs r3, r2 + 20a68: b2db uxtb r3, r3 + 20a6a: f7ff b952 b.w 1fd12 + 20a6e: 7c9a ldrb r2, [r3, #18] + 20a70: 7cdb ldrb r3, [r3, #19] + 20a72: 01d2 lsls r2, r2, #7 + 20a74: f003 037f and.w r3, r3, #127 ; 0x7f + 20a78: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 20a7c: 4313 orrs r3, r2 if(name <= BMC_MAX_NAMES_LIBRARY){ - 2099e: 2b80 cmp r3, #128 ; 0x80 - 209a0: f73f a91a bgt.w 1fbd8 + 20a7e: 2b80 cmp r3, #128 ; 0x80 + 20a80: f73f a91a bgt.w 1fcb8 item.name = name; - 209a4: b2db uxtb r3, r3 - 209a6: f7ff b918 b.w 1fbda - 209aa: 7c99 ldrb r1, [r3, #18] - 209ac: 7cdb ldrb r3, [r3, #19] - 209ae: 01c9 lsls r1, r1, #7 - 209b0: f003 037f and.w r3, r3, #127 ; 0x7f - 209b4: f401 517e and.w r1, r1, #16256 ; 0x3f80 - 209b8: 430b orrs r3, r1 + 20a84: b2db uxtb r3, r3 + 20a86: f7ff b918 b.w 1fcba + 20a8a: 7c99 ldrb r1, [r3, #18] + 20a8c: 7cdb ldrb r3, [r3, #19] + 20a8e: 01c9 lsls r1, r1, #7 + 20a90: f003 037f and.w r3, r3, #127 ; 0x7f + 20a94: f401 517e and.w r1, r1, #16256 ; 0x3f80 + 20a98: 430b orrs r3, r1 if(name <= BMC_MAX_NAMES_LIBRARY){ - 209ba: 2b80 cmp r3, #128 ; 0x80 - 209bc: f73f a961 bgt.w 1fc82 + 20a9a: 2b80 cmp r3, #128 ; 0x80 + 20a9c: f73f a961 bgt.w 1fd62 item.name = name; - 209c0: b2db uxtb r3, r3 - 209c2: f7ff b95f b.w 1fc84 - 209c6: 7c99 ldrb r1, [r3, #18] - 209c8: 7cdb ldrb r3, [r3, #19] - 209ca: 01c9 lsls r1, r1, #7 - 209cc: f003 037f and.w r3, r3, #127 ; 0x7f - 209d0: f401 517e and.w r1, r1, #16256 ; 0x3f80 - 209d4: 430b orrs r3, r1 + 20aa0: b2db uxtb r3, r3 + 20aa2: f7ff b95f b.w 1fd64 + 20aa6: 7c99 ldrb r1, [r3, #18] + 20aa8: 7cdb ldrb r3, [r3, #19] + 20aaa: 01c9 lsls r1, r1, #7 + 20aac: f003 037f and.w r3, r3, #127 ; 0x7f + 20ab0: f401 517e and.w r1, r1, #16256 ; 0x3f80 + 20ab4: 430b orrs r3, r1 if(name <= BMC_MAX_NAMES_LIBRARY){ - 209d6: 2b80 cmp r3, #128 ; 0x80 - 209d8: f73f ab31 bgt.w 2003e + 20ab6: 2b80 cmp r3, #128 ; 0x80 + 20ab8: f73f ab31 bgt.w 2011e item.name = name; - 209dc: b2db uxtb r3, r3 - 209de: f7ff bb2f b.w 20040 + 20abc: b2db uxtb r3, r3 + 20abe: f7ff bb2f b.w 20120 return sysex[t_offset] & 0x7F; - 209e2: 7d13 ldrb r3, [r2, #20] + 20ac2: 7d13 ldrb r3, [r2, #20] if(t_offset < size()){ - 209e4: 2810 cmp r0, #16 + 20ac4: 2810 cmp r0, #16 return sysex[t_offset] & 0x7F; - 209e6: f003 037f and.w r3, r3, #127 ; 0x7f + 20ac6: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 209ea: f000 81a6 beq.w 20d3a + 20aca: f000 81a6 beq.w 20e1a return sysex[t_offset] & 0x7F; - 209ee: 7d52 ldrb r2, [r2, #21] - 209f0: 2b02 cmp r3, #2 - 209f2: f002 027f and.w r2, r2, #127 ; 0x7f - 209f6: bf38 it cc - 209f8: 2302 movcc r3, #2 - 209fa: 2a01 cmp r2, #1 - 209fc: bf38 it cc - 209fe: 2201 movcc r2, #1 - 20a00: 4693 mov fp, r2 - 20a02: f7ff b995 b.w 1fd30 + 20ace: 7d52 ldrb r2, [r2, #21] + 20ad0: 2b02 cmp r3, #2 + 20ad2: f002 027f and.w r2, r2, #127 ; 0x7f + 20ad6: bf38 it cc + 20ad8: 2302 movcc r3, #2 + 20ada: 2a01 cmp r2, #1 + 20adc: bf38 it cc + 20ade: 2201 movcc r2, #1 + 20ae0: 4693 mov fp, r2 + 20ae2: f7ff b995 b.w 1fe10 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 20a06: 7c9a ldrb r2, [r3, #18] - 20a08: 7cdb ldrb r3, [r3, #19] - 20a0a: 01d2 lsls r2, r2, #7 - 20a0c: f003 037f and.w r3, r3, #127 ; 0x7f - 20a10: f402 527e and.w r2, r2, #16256 ; 0x3f80 - 20a14: 4313 orrs r3, r2 + 20ae6: 7c9a ldrb r2, [r3, #18] + 20ae8: 7cdb ldrb r3, [r3, #19] + 20aea: 01d2 lsls r2, r2, #7 + 20aec: f003 037f and.w r3, r3, #127 ; 0x7f + 20af0: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 20af4: 4313 orrs r3, r2 if(name <= BMC_MAX_NAMES_LIBRARY){ - 20a16: 2b80 cmp r3, #128 ; 0x80 - 20a18: f73f a97a bgt.w 1fd10 + 20af6: 2b80 cmp r3, #128 ; 0x80 + 20af8: f73f a97a bgt.w 1fdf0 item.name = name; - 20a1c: b2db uxtb r3, r3 - 20a1e: f7ff b978 b.w 1fd12 + 20afc: b2db uxtb r3, r3 + 20afe: f7ff b978 b.w 1fdf2 return sysex[t_offset] & 0x7F; - 20a22: 7d19 ldrb r1, [r3, #20] + 20b02: 7d19 ldrb r1, [r3, #20] if(t_offset < size()){ - 20a24: 2810 cmp r0, #16 + 20b04: 2810 cmp r0, #16 return sysex[t_offset] & 0x7F; - 20a26: f001 017f and.w r1, r1, #127 ; 0x7f + 20b06: f001 017f and.w r1, r1, #127 ; 0x7f if(t_offset < size()){ - 20a2a: f000 8168 beq.w 20cfe + 20b0a: f000 8168 beq.w 20dde return sysex[t_offset] & 0x7F; - 20a2e: 7d58 ldrb r0, [r3, #21] - 20a30: 2903 cmp r1, #3 - 20a32: f000 007f and.w r0, r0, #127 ; 0x7f - 20a36: bf38 it cc - 20a38: 2103 movcc r1, #3 - 20a3a: 2805 cmp r0, #5 - 20a3c: bf38 it cc - 20a3e: 2005 movcc r0, #5 - 20a40: f7ff b92f b.w 1fca2 - 20a44: 4618 mov r0, r3 + 20b0e: 7d58 ldrb r0, [r3, #21] + 20b10: 2903 cmp r1, #3 + 20b12: f000 007f and.w r0, r0, #127 ; 0x7f + 20b16: bf38 it cc + 20b18: 2103 movcc r1, #3 + 20b1a: 2805 cmp r0, #5 + 20b1c: bf38 it cc + 20b1e: 2005 movcc r0, #5 + 20b20: f7ff b92f b.w 1fd82 + 20b24: 4618 mov r0, r3 if(t_offset < size()){ - 20a46: 2910 cmp r1, #16 + 20b26: 2910 cmp r1, #16 return sysex[t_offset] & 0x7F; - 20a48: 7d1b ldrb r3, [r3, #20] - 20a4a: f003 037f and.w r3, r3, #127 ; 0x7f + 20b28: 7d1b ldrb r3, [r3, #20] + 20b2a: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 20a4e: f000 814c beq.w 20cea + 20b2e: f000 814c beq.w 20dca return sysex[t_offset] & 0x7F; - 20a52: f890 a015 ldrb.w sl, [r0, #21] + 20b32: f890 a015 ldrb.w sl, [r0, #21] if(lenEvents < eLen){ - 20a56: f01a 0f7e tst.w sl, #126 ; 0x7e - 20a5a: f000 8146 beq.w 20cea - 20a5e: f00a 0a7f and.w sl, sl, #127 ; 0x7f + 20b36: f01a 0f7e tst.w sl, #126 ; 0x7e + 20b3a: f000 8146 beq.w 20dca + 20b3e: f00a 0a7f and.w sl, sl, #127 ; 0x7f for(uint8_t i = 0 ; i < lenSettings ; i++){ - 20a62: 2b00 cmp r3, #0 - 20a64: f000 8162 beq.w 20d2c + 20b42: 2b00 cmp r3, #0 + 20b44: f000 8162 beq.w 20e0c lenCount += 2; - 20a68: 0059 lsls r1, r3, #1 - 20a6a: 3111 adds r1, #17 - 20a6c: b2c9 uxtb r1, r1 + 20b48: 0059 lsls r1, r3, #1 + 20b4a: 3111 adds r1, #17 + 20b4c: b2c9 uxtb r1, r1 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 20a6e: f1ba 0f00 cmp.w sl, #0 - 20a72: f43f aa46 beq.w 1ff02 - 20a76: f7ff ba25 b.w 1fec4 - 20a7a: 7d13 ldrb r3, [r2, #20] + 20b4e: f1ba 0f00 cmp.w sl, #0 + 20b52: f43f aa46 beq.w 1ffe2 + 20b56: f7ff ba25 b.w 1ffa4 + 20b5a: 7d13 ldrb r3, [r2, #20] if(t_offset < size()){ - 20a7c: 2910 cmp r1, #16 + 20b5c: 2910 cmp r1, #16 return sysex[t_offset] & 0x7F; - 20a7e: f003 037f and.w r3, r3, #127 ; 0x7f + 20b5e: f003 037f and.w r3, r3, #127 ; 0x7f if(t_offset < size()){ - 20a82: f000 8151 beq.w 20d28 + 20b62: f000 8151 beq.w 20e08 return sysex[t_offset] & 0x7F; - 20a86: 7d52 ldrb r2, [r2, #21] - 20a88: f002 027f and.w r2, r2, #127 ; 0x7f - 20a8c: 2a01 cmp r2, #1 - 20a8e: bf38 it cc - 20a90: 2201 movcc r2, #1 + 20b66: 7d52 ldrb r2, [r2, #21] + 20b68: f002 027f and.w r2, r2, #127 ; 0x7f + 20b6c: 2a01 cmp r2, #1 + 20b6e: bf38 it cc + 20b70: 2201 movcc r2, #1 for(uint8_t i = 0 ; i < lenSettings ; i++){ - 20a92: 2b00 cmp r3, #0 - 20a94: f000 813a beq.w 20d0c + 20b72: 2b00 cmp r3, #0 + 20b74: f000 813a beq.w 20dec lenCount += 2; - 20a98: 005b lsls r3, r3, #1 - 20a9a: 3311 adds r3, #17 - 20a9c: b2db uxtb r3, r3 - 20a9e: f7ff b8a8 b.w 1fbf2 + 20b78: 005b lsls r3, r3, #1 + 20b7a: 3311 adds r3, #17 + 20b7c: b2db uxtb r3, r3 + 20b7e: f7ff b8a8 b.w 1fcd2 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 20aa2: 7c99 ldrb r1, [r3, #18] - 20aa4: 7cdb ldrb r3, [r3, #19] - 20aa6: 01c9 lsls r1, r1, #7 - 20aa8: f003 037f and.w r3, r3, #127 ; 0x7f - 20aac: f401 517e and.w r1, r1, #16256 ; 0x3f80 - 20ab0: 430b orrs r3, r1 + 20b82: 7c99 ldrb r1, [r3, #18] + 20b84: 7cdb ldrb r3, [r3, #19] + 20b86: 01c9 lsls r1, r1, #7 + 20b88: f003 037f and.w r3, r3, #127 ; 0x7f + 20b8c: f401 517e and.w r1, r1, #16256 ; 0x3f80 + 20b90: 430b orrs r3, r1 if(name <= BMC_MAX_NAMES_LIBRARY){ - 20ab2: 2b80 cmp r3, #128 ; 0x80 - 20ab4: f73f a9f2 bgt.w 1fe9c + 20b92: 2b80 cmp r3, #128 ; 0x80 + 20b94: f73f a9f2 bgt.w 1ff7c item.name = name; - 20ab8: b2db uxtb r3, r3 - 20aba: f7ff b9f0 b.w 1fe9e - 20abe: 6863 ldr r3, [r4, #4] + 20b98: b2db uxtb r3, r3 + 20b9a: f7ff b9f0 b.w 1ff7e + 20b9e: 6863 ldr r3, [r4, #4] return bitRead(flags, bit); - 20ac0: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 20ac4: 6dda ldr r2, [r3, #92] ; 0x5c - 20ac6: 0751 lsls r1, r2, #29 - 20ac8: f3c2 0380 ubfx r3, r2, #2, #1 - 20acc: f53e aabc bmi.w 1f048 + 20ba0: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 20ba4: 6dda ldr r2, [r3, #92] ; 0x5c + 20ba6: 0751 lsls r1, r2, #29 + 20ba8: f3c2 0380 ubfx r3, r2, #2, #1 + 20bac: f53e aabc bmi.w 1f128 buff.prepareEditorMessage( - 20ad0: e9cd 3900 strd r3, r9, [sp] + 20bb0: e9cd 3900 strd r3, r9, [sp] struct BMCMidiMessage { - 20ad4: f50d 799a add.w r9, sp, #308 ; 0x134 - 20ad8: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 20adc: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 20ae0: 4648 mov r0, r9 - 20ae2: f8c9 3000 str.w r3, [r9] - 20ae6: f889 3004 strb.w r3, [r9, #4] - 20aea: 2312 movs r3, #18 - 20aec: f7fa f9ea bl 1aec4 + 20bb4: f50d 799a add.w r9, sp, #308 ; 0x134 + 20bb8: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 20bbc: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 20bc0: 4648 mov r0, r9 + 20bc2: f8c9 3000 str.w r3, [r9] + 20bc6: f889 3004 strb.w r3, [r9, #4] + 20bca: 2312 movs r3, #18 + 20bcc: f7fa f9ea bl 1afa4 appendSysExByte(value & 0x7F); - 20af0: 4648 mov r0, r9 - 20af2: 2201 movs r2, #1 - 20af4: 211c movs r1, #28 - 20af6: f7fa f8b7 bl 1ac68 + 20bd0: 4648 mov r0, r9 + 20bd2: 2201 movs r2, #1 + 20bd4: 211c movs r1, #28 + 20bd6: f7fa f8b7 bl 1ad48 buff.appendToSysEx14Bits(index); - 20afa: 4639 mov r1, r7 - 20afc: f7fa fb50 bl 1b1a0 + 20bda: 4639 mov r1, r7 + 20bdc: f7fa fb50 bl 1b280 buff.appendToSysEx14Bits(maxDevices); - 20b00: 4631 mov r1, r6 - 20b02: 4648 mov r0, r9 - 20b04: f7fa fb4c bl 1b1a0 + 20be0: 4631 mov r1, r6 + 20be2: 4648 mov r0, r9 + 20be4: f7fa fb4c bl 1b280 switch(deviceType){ - 20b08: f7fe bf20 b.w 1f94c - 20b0c: 6863 ldr r3, [r4, #4] - 20b0e: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 20b12: 6dda ldr r2, [r3, #92] ; 0x5c - 20b14: 0750 lsls r0, r2, #29 - 20b16: f3c2 0380 ubfx r3, r2, #2, #1 - 20b1a: f53e aa95 bmi.w 1f048 + 20be8: f7fe bf20 b.w 1fa2c + 20bec: 6863 ldr r3, [r4, #4] + 20bee: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 20bf2: 6dda ldr r2, [r3, #92] ; 0x5c + 20bf4: 0750 lsls r0, r2, #29 + 20bf6: f3c2 0380 ubfx r3, r2, #2, #1 + 20bfa: f53e aa95 bmi.w 1f128 buff.prepareEditorMessage( - 20b1e: e9cd 3900 strd r3, r9, [sp] + 20bfe: e9cd 3900 strd r3, r9, [sp] struct BMCMidiMessage { - 20b22: f50d 799a add.w r9, sp, #308 ; 0x134 - 20b26: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 20b2a: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 20b2e: 4648 mov r0, r9 - 20b30: f8c9 3000 str.w r3, [r9] - 20b34: f889 3004 strb.w r3, [r9, #4] - 20b38: 2312 movs r3, #18 - 20b3a: f7fa f9c3 bl 1aec4 + 20c02: f50d 799a add.w r9, sp, #308 ; 0x134 + 20c06: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 20c0a: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 20c0e: 4648 mov r0, r9 + 20c10: f8c9 3000 str.w r3, [r9] + 20c14: f889 3004 strb.w r3, [r9, #4] + 20c18: 2312 movs r3, #18 + 20c1a: f7fa f9c3 bl 1afa4 appendSysExByte(value & 0x7F); - 20b3e: 4648 mov r0, r9 - 20b40: 2201 movs r2, #1 - 20b42: 211e movs r1, #30 - 20b44: f7fa f890 bl 1ac68 + 20c1e: 4648 mov r0, r9 + 20c20: 2201 movs r2, #1 + 20c22: 211e movs r1, #30 + 20c24: f7fa f890 bl 1ad48 buff.appendToSysEx14Bits(index); - 20b48: 4639 mov r1, r7 - 20b4a: f7fa fb29 bl 1b1a0 + 20c28: 4639 mov r1, r7 + 20c2a: f7fa fb29 bl 1b280 buff.appendToSysEx14Bits(maxDevices); - 20b4e: 4631 mov r1, r6 - 20b50: 4648 mov r0, r9 - 20b52: f7fa fb25 bl 1b1a0 + 20c2e: 4631 mov r1, r6 + 20c30: 4648 mov r0, r9 + 20c32: f7fa fb25 bl 1b280 switch(deviceType){ - 20b56: f7fe bedb b.w 1f910 - 20b5a: 6863 ldr r3, [r4, #4] - 20b5c: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 20b60: 6dda ldr r2, [r3, #92] ; 0x5c - 20b62: 0751 lsls r1, r2, #29 - 20b64: f3c2 0380 ubfx r3, r2, #2, #1 - 20b68: f53e aa6e bmi.w 1f048 + 20c36: f7fe bedb b.w 1f9f0 + 20c3a: 6863 ldr r3, [r4, #4] + 20c3c: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 20c40: 6dda ldr r2, [r3, #92] ; 0x5c + 20c42: 0751 lsls r1, r2, #29 + 20c44: f3c2 0380 ubfx r3, r2, #2, #1 + 20c48: f53e aa6e bmi.w 1f128 buff.prepareEditorMessage( - 20b6c: e9cd 3900 strd r3, r9, [sp] + 20c4c: e9cd 3900 strd r3, r9, [sp] struct BMCMidiMessage { - 20b70: f50d 799a add.w r9, sp, #308 ; 0x134 - 20b74: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 20b78: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 20b7c: 4648 mov r0, r9 - 20b7e: f8c9 3000 str.w r3, [r9] - 20b82: f889 3004 strb.w r3, [r9, #4] - 20b86: 2312 movs r3, #18 - 20b88: f7fa f99c bl 1aec4 + 20c50: f50d 799a add.w r9, sp, #308 ; 0x134 + 20c54: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 20c58: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 20c5c: 4648 mov r0, r9 + 20c5e: f8c9 3000 str.w r3, [r9] + 20c62: f889 3004 strb.w r3, [r9, #4] + 20c66: 2312 movs r3, #18 + 20c68: f7fa f99c bl 1afa4 appendSysExByte(value & 0x7F); - 20b8c: 4648 mov r0, r9 - 20b8e: 2201 movs r2, #1 - 20b90: 211b movs r1, #27 - 20b92: f7fa f869 bl 1ac68 + 20c6c: 4648 mov r0, r9 + 20c6e: 2201 movs r2, #1 + 20c70: 211b movs r1, #27 + 20c72: f7fa f869 bl 1ad48 buff.appendToSysEx14Bits(index); - 20b96: 4639 mov r1, r7 - 20b98: f7fa fb02 bl 1b1a0 + 20c76: 4639 mov r1, r7 + 20c78: f7fa fb02 bl 1b280 buff.appendToSysEx14Bits(maxDevices); - 20b9c: 4631 mov r1, r6 - 20b9e: 4648 mov r0, r9 - 20ba0: f7fa fafe bl 1b1a0 + 20c7c: 4631 mov r1, r6 + 20c7e: 4648 mov r0, r9 + 20c80: f7fa fafe bl 1b280 switch(deviceType){ - 20ba4: f7fe be08 b.w 1f7b8 - 20ba8: 6863 ldr r3, [r4, #4] - 20baa: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 20bae: 6dda ldr r2, [r3, #92] ; 0x5c - 20bb0: f3c2 0380 ubfx r3, r2, #2, #1 - 20bb4: 0752 lsls r2, r2, #29 - 20bb6: f53e aa47 bmi.w 1f048 + 20c84: f7fe be08 b.w 1f898 + 20c88: 6863 ldr r3, [r4, #4] + 20c8a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 20c8e: 6dda ldr r2, [r3, #92] ; 0x5c + 20c90: f3c2 0380 ubfx r3, r2, #2, #1 + 20c94: 0752 lsls r2, r2, #29 + 20c96: f53e aa47 bmi.w 1f128 buff.prepareEditorMessage( - 20bba: e9cd 3900 strd r3, r9, [sp] + 20c9a: e9cd 3900 strd r3, r9, [sp] struct BMCMidiMessage { - 20bbe: f50d 799a add.w r9, sp, #308 ; 0x134 - 20bc2: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 20bc6: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 20bca: 4648 mov r0, r9 - 20bcc: f8c9 3000 str.w r3, [r9] - 20bd0: f889 3004 strb.w r3, [r9, #4] - 20bd4: 2312 movs r3, #18 - 20bd6: f7fa f975 bl 1aec4 + 20c9e: f50d 799a add.w r9, sp, #308 ; 0x134 + 20ca2: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 20ca6: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 20caa: 4648 mov r0, r9 + 20cac: f8c9 3000 str.w r3, [r9] + 20cb0: f889 3004 strb.w r3, [r9, #4] + 20cb4: 2312 movs r3, #18 + 20cb6: f7fa f975 bl 1afa4 appendSysExByte(value & 0x7F); - 20bda: 4648 mov r0, r9 - 20bdc: 2201 movs r2, #1 - 20bde: 2120 movs r1, #32 - 20be0: f7fa f842 bl 1ac68 + 20cba: 4648 mov r0, r9 + 20cbc: 2201 movs r2, #1 + 20cbe: 2120 movs r1, #32 + 20cc0: f7fa f842 bl 1ad48 buff.appendToSysEx14Bits(index); - 20be4: 4639 mov r1, r7 - 20be6: f7fa fadb bl 1b1a0 + 20cc4: 4639 mov r1, r7 + 20cc6: f7fa fadb bl 1b280 buff.appendToSysEx14Bits(maxDevices); - 20bea: 4631 mov r1, r6 - 20bec: 4648 mov r0, r9 - 20bee: f7fa fad7 bl 1b1a0 + 20cca: 4631 mov r1, r6 + 20ccc: 4648 mov r0, r9 + 20cce: f7fa fad7 bl 1b280 switch(deviceType){ - 20bf2: f7fe be7e b.w 1f8f2 - 20bf6: 6863 ldr r3, [r4, #4] - 20bf8: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 20bfc: 6dda ldr r2, [r3, #92] ; 0x5c - 20bfe: f3c2 0380 ubfx r3, r2, #2, #1 - 20c02: 0752 lsls r2, r2, #29 - 20c04: f53e aa20 bmi.w 1f048 + 20cd2: f7fe be7e b.w 1f9d2 + 20cd6: 6863 ldr r3, [r4, #4] + 20cd8: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 20cdc: 6dda ldr r2, [r3, #92] ; 0x5c + 20cde: f3c2 0380 ubfx r3, r2, #2, #1 + 20ce2: 0752 lsls r2, r2, #29 + 20ce4: f53e aa20 bmi.w 1f128 buff.prepareEditorMessage( - 20c08: e9cd 3900 strd r3, r9, [sp] + 20ce8: e9cd 3900 strd r3, r9, [sp] struct BMCMidiMessage { - 20c0c: f50d 799a add.w r9, sp, #308 ; 0x134 - 20c10: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 20c14: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 20c18: 4648 mov r0, r9 - 20c1a: f8c9 3000 str.w r3, [r9] - 20c1e: f889 3004 strb.w r3, [r9, #4] - 20c22: 2312 movs r3, #18 - 20c24: f7fa f94e bl 1aec4 + 20cec: f50d 799a add.w r9, sp, #308 ; 0x134 + 20cf0: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 20cf4: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 20cf8: 4648 mov r0, r9 + 20cfa: f8c9 3000 str.w r3, [r9] + 20cfe: f889 3004 strb.w r3, [r9, #4] + 20d02: 2312 movs r3, #18 + 20d04: f7fa f94e bl 1afa4 appendSysExByte(value & 0x7F); - 20c28: 4648 mov r0, r9 - 20c2a: 2201 movs r2, #1 - 20c2c: 2121 movs r1, #33 ; 0x21 - 20c2e: f7fa f81b bl 1ac68 + 20d08: 4648 mov r0, r9 + 20d0a: 2201 movs r2, #1 + 20d0c: 2121 movs r1, #33 ; 0x21 + 20d0e: f7fa f81b bl 1ad48 buff.appendToSysEx14Bits(index); - 20c32: 4639 mov r1, r7 - 20c34: f7fa fab4 bl 1b1a0 + 20d12: 4639 mov r1, r7 + 20d14: f7fa fab4 bl 1b280 buff.appendToSysEx14Bits(maxDevices); - 20c38: 4631 mov r1, r6 - 20c3a: 4648 mov r0, r9 - 20c3c: f7fa fab0 bl 1b1a0 + 20d18: 4631 mov r1, r6 + 20d1a: 4648 mov r0, r9 + 20d1c: f7fa fab0 bl 1b280 switch(deviceType){ - 20c40: f7fe bee5 b.w 1fa0e - 20c44: 6863 ldr r3, [r4, #4] - 20c46: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 20c4a: 6dda ldr r2, [r3, #92] ; 0x5c - 20c4c: f3c2 0380 ubfx r3, r2, #2, #1 - 20c50: 0752 lsls r2, r2, #29 - 20c52: f53e a9f9 bmi.w 1f048 + 20d20: f7fe bee5 b.w 1faee + 20d24: 6863 ldr r3, [r4, #4] + 20d26: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 20d2a: 6dda ldr r2, [r3, #92] ; 0x5c + 20d2c: f3c2 0380 ubfx r3, r2, #2, #1 + 20d30: 0752 lsls r2, r2, #29 + 20d32: f53e a9f9 bmi.w 1f128 buff.prepareEditorMessage( - 20c56: e9cd 3900 strd r3, r9, [sp] + 20d36: e9cd 3900 strd r3, r9, [sp] struct BMCMidiMessage { - 20c5a: f50d 799a add.w r9, sp, #308 ; 0x134 - 20c5e: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 20c62: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 20c66: 4648 mov r0, r9 - 20c68: f8c9 3000 str.w r3, [r9] - 20c6c: f889 3004 strb.w r3, [r9, #4] - 20c70: 2312 movs r3, #18 - 20c72: f7fa f927 bl 1aec4 + 20d3a: f50d 799a add.w r9, sp, #308 ; 0x134 + 20d3e: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 20d42: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 20d46: 4648 mov r0, r9 + 20d48: f8c9 3000 str.w r3, [r9] + 20d4c: f889 3004 strb.w r3, [r9, #4] + 20d50: 2312 movs r3, #18 + 20d52: f7fa f927 bl 1afa4 appendSysExByte(value & 0x7F); - 20c76: 4648 mov r0, r9 - 20c78: 2201 movs r2, #1 - 20c7a: 211d movs r1, #29 - 20c7c: f7f9 fff4 bl 1ac68 + 20d56: 4648 mov r0, r9 + 20d58: 2201 movs r2, #1 + 20d5a: 211d movs r1, #29 + 20d5c: f7f9 fff4 bl 1ad48 buff.appendToSysEx14Bits(index); - 20c80: 4639 mov r1, r7 - 20c82: f7fa fa8d bl 1b1a0 + 20d60: 4639 mov r1, r7 + 20d62: f7fa fa8d bl 1b280 buff.appendToSysEx14Bits(maxDevices); - 20c86: 4631 mov r1, r6 - 20c88: 4648 mov r0, r9 - 20c8a: f7fa fa89 bl 1b1a0 + 20d66: 4631 mov r1, r6 + 20d68: 4648 mov r0, r9 + 20d6a: f7fa fa89 bl 1b280 switch(deviceType){ - 20c8e: f7fe be4e b.w 1f92e - 20c92: 6863 ldr r3, [r4, #4] - 20c94: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 20c98: 6dda ldr r2, [r3, #92] ; 0x5c - 20c9a: 0750 lsls r0, r2, #29 - 20c9c: f3c2 0380 ubfx r3, r2, #2, #1 - 20ca0: f53e a9d2 bmi.w 1f048 + 20d6e: f7fe be4e b.w 1fa0e + 20d72: 6863 ldr r3, [r4, #4] + 20d74: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 20d78: 6dda ldr r2, [r3, #92] ; 0x5c + 20d7a: 0750 lsls r0, r2, #29 + 20d7c: f3c2 0380 ubfx r3, r2, #2, #1 + 20d80: f53e a9d2 bmi.w 1f128 buff.prepareEditorMessage( - 20ca4: e9cd 3900 strd r3, r9, [sp] + 20d84: e9cd 3900 strd r3, r9, [sp] struct BMCMidiMessage { - 20ca8: f50d 799a add.w r9, sp, #308 ; 0x134 - 20cac: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 20cb0: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 20cb4: 4648 mov r0, r9 - 20cb6: f8c9 3000 str.w r3, [r9] - 20cba: f889 3004 strb.w r3, [r9, #4] - 20cbe: 2312 movs r3, #18 - 20cc0: f7fa f900 bl 1aec4 + 20d88: f50d 799a add.w r9, sp, #308 ; 0x134 + 20d8c: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 20d90: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 20d94: 4648 mov r0, r9 + 20d96: f8c9 3000 str.w r3, [r9] + 20d9a: f889 3004 strb.w r3, [r9, #4] + 20d9e: 2312 movs r3, #18 + 20da0: f7fa f900 bl 1afa4 appendSysExByte(value & 0x7F); - 20cc4: 4648 mov r0, r9 - 20cc6: 2201 movs r2, #1 - 20cc8: 2107 movs r1, #7 - 20cca: f7f9 ffcd bl 1ac68 + 20da4: 4648 mov r0, r9 + 20da6: 2201 movs r2, #1 + 20da8: 2107 movs r1, #7 + 20daa: f7f9 ffcd bl 1ad48 buff.appendToSysEx14Bits(index); - 20cce: 4639 mov r1, r7 - 20cd0: f7fa fa66 bl 1b1a0 + 20dae: 4639 mov r1, r7 + 20db0: f7fa fa66 bl 1b280 buff.appendToSysEx14Bits(maxDevices); - 20cd4: 4631 mov r1, r6 - 20cd6: 4648 mov r0, r9 - 20cd8: f7fa fa62 bl 1b1a0 + 20db4: 4631 mov r1, r6 + 20db6: 4648 mov r0, r9 + 20db8: f7fa fa62 bl 1b280 switch(deviceType){ - 20cdc: f7fe bd5d b.w 1f79a - 20ce0: 4620 mov r0, r4 - 20ce2: f7fb fb23 bl 1c32c + 20dbc: f7fe bd5d b.w 1f87a + 20dc0: 4620 mov r0, r4 + 20dc2: f7fb fb23 bl 1c40c bool read(uint8_t bit){ - 20ce6: f7fe b9a9 b.w 1f03c + 20dc6: f7fe b9a9 b.w 1f11c for(uint8_t i = 0 ; i < lenSettings ; i++){ - 20cea: 2b00 cmp r3, #0 - 20cec: f43f a8e7 beq.w 1febe + 20dca: 2b00 cmp r3, #0 + 20dcc: f43f a8e7 beq.w 1ff9e lenCount += 2; - 20cf0: 0059 lsls r1, r3, #1 + 20dd0: 0059 lsls r1, r3, #1 lenEvents = eLen; - 20cf2: f04f 0a02 mov.w sl, #2 + 20dd2: f04f 0a02 mov.w sl, #2 lenCount += 2; - 20cf6: 3111 adds r1, #17 - 20cf8: b2c9 uxtb r1, r1 + 20dd6: 3111 adds r1, #17 + 20dd8: b2c9 uxtb r1, r1 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 20cfa: f7ff b8e3 b.w 1fec4 - 20cfe: 2903 cmp r1, #3 + 20dda: f7ff b8e3 b.w 1ffa4 + 20dde: 2903 cmp r1, #3 if(t_offset < size()){ - 20d00: f04f 0005 mov.w r0, #5 - 20d04: bf38 it cc - 20d06: 2103 movcc r1, #3 - 20d08: f7fe bfcb b.w 1fca2 + 20de0: f04f 0005 mov.w r0, #5 + 20de4: bf38 it cc + 20de6: 2103 movcc r1, #3 + 20de8: f7fe bfcb b.w 1fd82 uint8_t lenCount = 17; - 20d0c: 2311 movs r3, #17 - 20d0e: f7fe bf70 b.w 1fbf2 - 20d12: 2b01 cmp r3, #1 - 20d14: f04f 0802 mov.w r8, #2 - 20d18: bf38 it cc - 20d1a: 2301 movcc r3, #1 - 20d1c: f7ff b916 b.w 1ff4c - 20d20: f04f 0913 mov.w r9, #19 - 20d24: f7fe b8f8 b.w 1ef18 + 20dec: 2311 movs r3, #17 + 20dee: f7fe bf70 b.w 1fcd2 + 20df2: 2b01 cmp r3, #1 + 20df4: f04f 0802 mov.w r8, #2 + 20df8: bf38 it cc + 20dfa: 2301 movcc r3, #1 + 20dfc: f7ff b916 b.w 2002c + 20e00: f04f 0913 mov.w r9, #19 + 20e04: f7fe b8f8 b.w 1eff8 lenEvents = eLen; - 20d28: 2201 movs r2, #1 - 20d2a: e6b2 b.n 20a92 + 20e08: 2201 movs r2, #1 + 20e0a: e6b2 b.n 20b72 uint8_t lenCount = 17; - 20d2c: 2111 movs r1, #17 + 20e0c: 2111 movs r1, #17 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 20d2e: f1ba 0f00 cmp.w sl, #0 - 20d32: f43f a8e6 beq.w 1ff02 - 20d36: f7ff b8c5 b.w 1fec4 - 20d3a: 2b02 cmp r3, #2 - 20d3c: f04f 0b01 mov.w fp, #1 - 20d40: bf38 it cc - 20d42: 2302 movcc r3, #2 - 20d44: f7fe bff4 b.w 1fd30 + 20e0e: f1ba 0f00 cmp.w sl, #0 + 20e12: f43f a8e6 beq.w 1ffe2 + 20e16: f7ff b8c5 b.w 1ffa4 + 20e1a: 2b02 cmp r3, #2 + 20e1c: f04f 0b01 mov.w fp, #1 + 20e20: bf38 it cc + 20e22: 2302 movcc r3, #2 + 20e24: f7fe bff4 b.w 1fe10 uint8_t lenCount = 17; - 20d48: 2311 movs r3, #17 + 20e28: 2311 movs r3, #17 for(uint8_t i = 0 ; i < lenEvents ; i++){ - 20d4a: 2900 cmp r1, #0 - 20d4c: f43e af87 beq.w 1fc5e - 20d50: f7fe bf79 b.w 1fc46 - 20d54: 2b01 cmp r3, #1 - 20d56: f04f 0503 mov.w r5, #3 - 20d5a: bf38 it cc - 20d5c: 2301 movcc r3, #1 - 20d5e: f7fe beb0 b.w 1fac2 - 20d62: 2b02 cmp r3, #2 - 20d64: f04f 0a03 mov.w sl, #3 - 20d68: bf38 it cc - 20d6a: 2302 movcc r3, #2 - 20d6c: 4698 mov r8, r3 - 20d6e: f7ff b97a b.w 20066 - 20d72: bf00 nop - -00020d74 : + 20e2a: 2900 cmp r1, #0 + 20e2c: f43e af87 beq.w 1fd3e + 20e30: f7fe bf79 b.w 1fd26 + 20e34: 2b01 cmp r3, #1 + 20e36: f04f 0503 mov.w r5, #3 + 20e3a: bf38 it cc + 20e3c: 2301 movcc r3, #1 + 20e3e: f7fe beb0 b.w 1fba2 + 20e42: 2b02 cmp r3, #2 + 20e44: f04f 0a03 mov.w sl, #3 + 20e48: bf38 it cc + 20e4a: 2302 movcc r3, #2 + 20e4c: 4698 mov r8, r3 + 20e4e: f7ff b97a b.w 20146 + 20e52: bf00 nop + +00020e54 : void BMCEditor::connectEditor(){ - 20d74: b530 push {r4, r5, lr} + 20e54: b530 push {r4, r5, lr} bool isWrite() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_WRITE);} - 20d76: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 - 20d7a: b087 sub sp, #28 + 20e56: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 20e5a: b087 sub sp, #28 if(isWriteMessage()){ - 20d7c: f013 0301 ands.w r3, r3, #1 - 20d80: f000 8088 beq.w 20e94 + 20e5c: f013 0301 ands.w r3, r3, #1 + 20e60: f000 8088 beq.w 20f74 if(midi.globals.editorConnected()){ - 20d84: 6843 ldr r3, [r0, #4] - 20d86: 4604 mov r4, r0 + 20e64: 6843 ldr r3, [r0, #4] + 20e66: 4604 mov r4, r0 return bitRead(flags, bit); - 20d88: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 20d8c: 6ddb ldr r3, [r3, #92] ; 0x5c - 20d8e: 075d lsls r5, r3, #29 - 20d90: f3c3 0180 ubfx r1, r3, #2, #1 - 20d94: d43e bmi.n 20e14 - 20d96: 488f ldr r0, [pc, #572] ; (20fd4 ) + 20e68: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 20e6c: 6ddb ldr r3, [r3, #92] ; 0x5c + 20e6e: 075d lsls r5, r3, #29 + 20e70: f3c3 0180 ubfx r1, r3, #2, #1 + 20e74: d43e bmi.n 20ef4 + 20e76: 488f ldr r0, [pc, #572] ; (210b4 ) return "USB"; - 20d98: ad02 add r5, sp, #8 - 20d9a: f00b fbd5 bl 2c548 + 20e78: ad02 add r5, sp, #8 + 20e7a: f00b fbd9 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 20d9e: 488e ldr r0, [pc, #568] ; (20fd8 ) - 20da0: f009 f868 bl 29e74 - 20da4: 212e movs r1, #46 ; 0x2e - 20da6: 488d ldr r0, [pc, #564] ; (20fdc ) - 20da8: f00b fbce bl 2c548 - 20dac: 488a ldr r0, [pc, #552] ; (20fd8 ) - 20dae: f009 f861 bl 29e74 - 20db2: 212e movs r1, #46 ; 0x2e - 20db4: 4889 ldr r0, [pc, #548] ; (20fdc ) - 20db6: f00b fbc7 bl 2c548 - 20dba: 4887 ldr r0, [pc, #540] ; (20fd8 ) - 20dbc: f009 f85a bl 29e74 - 20dc0: 2101 movs r1, #1 - 20dc2: 4887 ldr r0, [pc, #540] ; (20fe0 ) - 20dc4: f00b fbc0 bl 2c548 - 20dc8: 2117 movs r1, #23 - 20dca: 4886 ldr r0, [pc, #536] ; (20fe4 ) - 20dcc: f00b fbbc bl 2c548 - 20dd0: 4881 ldr r0, [pc, #516] ; (20fd8 ) - 20dd2: f009 f84f bl 29e74 - 20dd6: 2101 movs r1, #1 - 20dd8: 4881 ldr r0, [pc, #516] ; (20fe0 ) - 20dda: f00b fbb5 bl 2c548 + 20e7e: 488e ldr r0, [pc, #568] ; (210b8 ) + 20e80: f009 f86e bl 29f60 + 20e84: 212e movs r1, #46 ; 0x2e + 20e86: 488d ldr r0, [pc, #564] ; (210bc ) + 20e88: f00b fbd2 bl 2c630 + 20e8c: 488a ldr r0, [pc, #552] ; (210b8 ) + 20e8e: f009 f867 bl 29f60 + 20e92: 212e movs r1, #46 ; 0x2e + 20e94: 4889 ldr r0, [pc, #548] ; (210bc ) + 20e96: f00b fbcb bl 2c630 + 20e9a: 4887 ldr r0, [pc, #540] ; (210b8 ) + 20e9c: f009 f860 bl 29f60 + 20ea0: 2101 movs r1, #1 + 20ea2: 4887 ldr r0, [pc, #540] ; (210c0 ) + 20ea4: f00b fbc4 bl 2c630 + 20ea8: 2117 movs r1, #23 + 20eaa: 4886 ldr r0, [pc, #536] ; (210c4 ) + 20eac: f00b fbc0 bl 2c630 + 20eb0: 4881 ldr r0, [pc, #516] ; (210b8 ) + 20eb2: f009 f855 bl 29f60 + 20eb6: 2101 movs r1, #1 + 20eb8: 4881 ldr r0, [pc, #516] ; (210c0 ) + 20eba: f00b fbb9 bl 2c630 uint8_t getPort() { return ports; } - 20dde: 6be3 ldr r3, [r4, #60] ; 0x3c - 20de0: 781b ldrb r3, [r3, #0] + 20ebe: 6be3 ldr r3, [r4, #60] ; 0x3c + 20ec0: 781b ldrb r3, [r3, #0] if(isMidiUsbPort(port)){ - 20de2: 07d8 lsls r0, r3, #31 - 20de4: d45d bmi.n 20ea2 + 20ec2: 07d8 lsls r0, r3, #31 + 20ec4: d45d bmi.n 20f82 } else if(isMidiSerialAPort(port)){ - 20de6: 0799 lsls r1, r3, #30 - 20de8: f100 80c7 bmi.w 20f7a + 20ec6: 0799 lsls r1, r3, #30 + 20ec8: f100 80c7 bmi.w 2105a } else if(isMidiSerialBPort(port)){ - 20dec: 075a lsls r2, r3, #29 - 20dee: f100 80bf bmi.w 20f70 + 20ecc: 075a lsls r2, r3, #29 + 20ece: f100 80bf bmi.w 21050 } else if(isMidiSerialCPort(port)){ - 20df2: 0718 lsls r0, r3, #28 - 20df4: f100 80cb bmi.w 20f8e + 20ed2: 0718 lsls r0, r3, #28 + 20ed4: f100 80cb bmi.w 2106e } else if(isMidiSerialDPort(port)){ - 20df8: 06d9 lsls r1, r3, #27 - 20dfa: f100 80dc bmi.w 20fb6 + 20ed8: 06d9 lsls r1, r3, #27 + 20eda: f100 80dc bmi.w 21096 } else if(isMidiHostPort(port)){ - 20dfe: 069a lsls r2, r3, #26 - 20e00: f100 80ca bmi.w 20f98 + 20ede: 069a lsls r2, r3, #26 + 20ee0: f100 80ca bmi.w 21078 } else if(isMidiBlePort(port)){ - 20e04: 065b lsls r3, r3, #25 + 20ee4: 065b lsls r3, r3, #25 return ""; - 20e06: 4628 mov r0, r5 + 20ee6: 4628 mov r0, r5 return "BLE"; - 20e08: bf4c ite mi - 20e0a: 4977 ldrmi r1, [pc, #476] ; (20fe8 ) + 20ee8: bf4c ite mi + 20eea: 4977 ldrmi r1, [pc, #476] ; (210c8 ) return ""; - 20e0c: 4971 ldrpl r1, [pc, #452] ; (20fd4 ) - 20e0e: f009 f96f bl 2a0f0 - 20e12: e04a b.n 20eaa - 20e14: 2100 movs r1, #0 - 20e16: 486f ldr r0, [pc, #444] ; (20fd4 ) - 20e18: f00b fb96 bl 2c548 - 20e1c: 486e ldr r0, [pc, #440] ; (20fd8 ) - 20e1e: f009 f829 bl 29e74 - 20e22: 212e movs r1, #46 ; 0x2e - 20e24: 4871 ldr r0, [pc, #452] ; (20fec ) + 20eec: 4971 ldrpl r1, [pc, #452] ; (210b4 ) + 20eee: f009 f973 bl 2a1d8 + 20ef2: e04a b.n 20f8a + 20ef4: 2100 movs r1, #0 + 20ef6: 486f ldr r0, [pc, #444] ; (210b4 ) + 20ef8: f00b fb9a bl 2c630 + 20efc: 486e ldr r0, [pc, #440] ; (210b8 ) + 20efe: f009 f82f bl 29f60 + 20f02: 212e movs r1, #46 ; 0x2e + 20f04: 4871 ldr r0, [pc, #452] ; (210cc ) return "USB"; - 20e26: ad02 add r5, sp, #8 - 20e28: f00b fb8e bl 2c548 - 20e2c: 486a ldr r0, [pc, #424] ; (20fd8 ) - 20e2e: f009 f821 bl 29e74 - 20e32: 212e movs r1, #46 ; 0x2e - 20e34: 486d ldr r0, [pc, #436] ; (20fec ) - 20e36: f00b fb87 bl 2c548 - 20e3a: 4867 ldr r0, [pc, #412] ; (20fd8 ) - 20e3c: f009 f81a bl 29e74 - 20e40: 2101 movs r1, #1 - 20e42: 4867 ldr r0, [pc, #412] ; (20fe0 ) - 20e44: f00b fb80 bl 2c548 - 20e48: 211b movs r1, #27 - 20e4a: 4869 ldr r0, [pc, #420] ; (20ff0 ) - 20e4c: f00b fb7c bl 2c548 - 20e50: 4861 ldr r0, [pc, #388] ; (20fd8 ) - 20e52: f009 f80f bl 29e74 - 20e56: 2101 movs r1, #1 - 20e58: 4861 ldr r0, [pc, #388] ; (20fe0 ) - 20e5a: f00b fb75 bl 2c548 - 20e5e: 6be3 ldr r3, [r4, #60] ; 0x3c - 20e60: 781b ldrb r3, [r3, #0] + 20f06: ad02 add r5, sp, #8 + 20f08: f00b fb92 bl 2c630 + 20f0c: 486a ldr r0, [pc, #424] ; (210b8 ) + 20f0e: f009 f827 bl 29f60 + 20f12: 212e movs r1, #46 ; 0x2e + 20f14: 486d ldr r0, [pc, #436] ; (210cc ) + 20f16: f00b fb8b bl 2c630 + 20f1a: 4867 ldr r0, [pc, #412] ; (210b8 ) + 20f1c: f009 f820 bl 29f60 + 20f20: 2101 movs r1, #1 + 20f22: 4867 ldr r0, [pc, #412] ; (210c0 ) + 20f24: f00b fb84 bl 2c630 + 20f28: 211b movs r1, #27 + 20f2a: 4869 ldr r0, [pc, #420] ; (210d0 ) + 20f2c: f00b fb80 bl 2c630 + 20f30: 4861 ldr r0, [pc, #388] ; (210b8 ) + 20f32: f009 f815 bl 29f60 + 20f36: 2101 movs r1, #1 + 20f38: 4861 ldr r0, [pc, #388] ; (210c0 ) + 20f3a: f00b fb79 bl 2c630 + 20f3e: 6be3 ldr r3, [r4, #60] ; 0x3c + 20f40: 781b ldrb r3, [r3, #0] if(isMidiUsbPort(port)){ - 20e62: 07d8 lsls r0, r3, #31 - 20e64: d458 bmi.n 20f18 + 20f42: 07d8 lsls r0, r3, #31 + 20f44: d458 bmi.n 20ff8 } else if(isMidiSerialAPort(port)){ - 20e66: 0799 lsls r1, r3, #30 - 20e68: f100 808c bmi.w 20f84 + 20f46: 0799 lsls r1, r3, #30 + 20f48: f100 808c bmi.w 21064 } else if(isMidiSerialBPort(port)){ - 20e6c: 075a lsls r2, r3, #29 - 20e6e: f100 809d bmi.w 20fac + 20f4c: 075a lsls r2, r3, #29 + 20f4e: f100 809d bmi.w 2108c } else if(isMidiSerialCPort(port)){ - 20e72: 0718 lsls r0, r3, #28 - 20e74: f100 80a4 bmi.w 20fc0 + 20f52: 0718 lsls r0, r3, #28 + 20f54: f100 80a4 bmi.w 210a0 } else if(isMidiSerialDPort(port)){ - 20e78: 06d9 lsls r1, r3, #27 - 20e7a: f100 8092 bmi.w 20fa2 + 20f58: 06d9 lsls r1, r3, #27 + 20f5a: f100 8092 bmi.w 21082 } else if(isMidiHostPort(port)){ - 20e7e: 069a lsls r2, r3, #26 - 20e80: f100 80a3 bmi.w 20fca + 20f5e: 069a lsls r2, r3, #26 + 20f60: f100 80a3 bmi.w 210aa } else if(isMidiBlePort(port)){ - 20e84: 065b lsls r3, r3, #25 + 20f64: 065b lsls r3, r3, #25 return ""; - 20e86: 4628 mov r0, r5 + 20f66: 4628 mov r0, r5 return "BLE"; - 20e88: bf4c ite mi - 20e8a: 4957 ldrmi r1, [pc, #348] ; (20fe8 ) + 20f68: bf4c ite mi + 20f6a: 4957 ldrmi r1, [pc, #348] ; (210c8 ) return ""; - 20e8c: 4951 ldrpl r1, [pc, #324] ; (20fd4 ) - 20e8e: f009 f92f bl 2a0f0 - 20e92: e045 b.n 20f20 + 20f6c: 4951 ldrpl r1, [pc, #324] ; (210b4 ) + 20f6e: f009 f933 bl 2a1d8 + 20f72: e045 b.n 21000 sendNotification(BMC_NOTIFY_CONNECTION, 1); - 20e94: 2201 movs r2, #1 - 20e96: 4619 mov r1, r3 - 20e98: 9300 str r3, [sp, #0] - 20e9a: f7f9 fd75 bl 1a988 + 20f74: 2201 movs r2, #1 + 20f76: 4619 mov r1, r3 + 20f78: 9300 str r3, [sp, #0] + 20f7a: f7f9 fd75 bl 1aa68 } - 20e9e: b007 add sp, #28 - 20ea0: bd30 pop {r4, r5, pc} + 20f7e: b007 add sp, #28 + 20f80: bd30 pop {r4, r5, pc} return "USB"; - 20ea2: 4954 ldr r1, [pc, #336] ; (20ff4 ) - 20ea4: 4628 mov r0, r5 - 20ea6: f009 f923 bl 2a0f0 + 20f82: 4954 ldr r1, [pc, #336] ; (210d4 ) + 20f84: 4628 mov r0, r5 + 20f86: f009 f927 bl 2a1d8 size_t println(const String &s) { return print(s) + println(); } - 20eaa: 4629 mov r1, r5 - 20eac: 484a ldr r0, [pc, #296] ; (20fd8 ) - 20eae: f008 ffaf bl 29e10 - 20eb2: 4849 ldr r0, [pc, #292] ; (20fd8 ) - 20eb4: f008 ffde bl 29e74 + 20f8a: 4629 mov r1, r5 + 20f8c: 484a ldr r0, [pc, #296] ; (210b8 ) + 20f8e: f008 ffb5 bl 29efc + 20f92: 4849 ldr r0, [pc, #292] ; (210b8 ) + 20f94: f008 ffe4 bl 29f60 BMC_INFO( - 20eb8: 4628 mov r0, r5 - 20eba: f009 f8dd bl 2a078 - 20ebe: 212e movs r1, #46 ; 0x2e - 20ec0: 4846 ldr r0, [pc, #280] ; (20fdc ) - 20ec2: f00b fb41 bl 2c548 + 20f98: 4628 mov r0, r5 + 20f9a: f009 f8e1 bl 2a160 + 20f9e: 212e movs r1, #46 ; 0x2e + 20fa0: 4846 ldr r0, [pc, #280] ; (210bc ) + 20fa2: f00b fb45 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 20ec6: 4844 ldr r0, [pc, #272] ; (20fd8 ) - 20ec8: f008 ffd4 bl 29e74 - 20ecc: 212e movs r1, #46 ; 0x2e - 20ece: 4843 ldr r0, [pc, #268] ; (20fdc ) - 20ed0: f00b fb3a bl 2c548 - 20ed4: 4840 ldr r0, [pc, #256] ; (20fd8 ) - 20ed6: f008 ffcd bl 29e74 - 20eda: 2100 movs r1, #0 - 20edc: 483d ldr r0, [pc, #244] ; (20fd4 ) - 20ede: f00b fb33 bl 2c548 - 20ee2: 483d ldr r0, [pc, #244] ; (20fd8 ) - 20ee4: f008 ffc6 bl 29e74 - 20ee8: 6be1 ldr r1, [r4, #60] ; 0x3c + 20fa6: 4844 ldr r0, [pc, #272] ; (210b8 ) + 20fa8: f008 ffda bl 29f60 + 20fac: 212e movs r1, #46 ; 0x2e + 20fae: 4843 ldr r0, [pc, #268] ; (210bc ) + 20fb0: f00b fb3e bl 2c630 + 20fb4: 4840 ldr r0, [pc, #256] ; (210b8 ) + 20fb6: f008 ffd3 bl 29f60 + 20fba: 2100 movs r1, #0 + 20fbc: 483d ldr r0, [pc, #244] ; (210b4 ) + 20fbe: f00b fb37 bl 2c630 + 20fc2: 483d ldr r0, [pc, #244] ; (210b8 ) + 20fc4: f008 ffcc bl 29f60 + 20fc8: 6be1 ldr r1, [r4, #60] ; 0x3c midi.globals.setEditorConnected(true); - 20eea: 6862 ldr r2, [r4, #4] + 20fca: 6862 ldr r2, [r4, #4] sendNotification(BMC_NOTIFY_CONNECTION, BMC_EDITOR_SYSEX_ID); - 20eec: 2300 movs r3, #0 - 20eee: 7809 ldrb r1, [r1, #0] + 20fcc: 2300 movs r3, #0 + 20fce: 7809 ldrb r1, [r1, #0] port = incoming.getPort(); - 20ef0: f884 102c strb.w r1, [r4, #44] ; 0x2c + 20fd0: f884 102c strb.w r1, [r4, #44] ; 0x2c midi.globals.setEditorConnected(true); - 20ef4: f8d2 1108 ldr.w r1, [r2, #264] ; 0x108 + 20fd4: f8d2 1108 ldr.w r1, [r2, #264] ; 0x108 bitWrite(flags, bit, value); - 20ef8: 6dca ldr r2, [r1, #92] ; 0x5c - 20efa: f042 0204 orr.w r2, r2, #4 - 20efe: 65ca str r2, [r1, #92] ; 0x5c + 20fd8: 6dca ldr r2, [r1, #92] ; 0x5c + 20fda: f042 0204 orr.w r2, r2, #4 + 20fde: 65ca str r2, [r1, #92] ; 0x5c sendNotification(BMC_NOTIFY_CONNECTION, BMC_EDITOR_SYSEX_ID); - 20f00: 4619 mov r1, r3 + 20fe0: 4619 mov r1, r3 bitSet(flags, bit); - 20f02: 6b20 ldr r0, [r4, #48] ; 0x30 - 20f04: 4a3c ldr r2, [pc, #240] ; (20ff8 ) - 20f06: f040 0012 orr.w r0, r0, #18 - 20f0a: 9300 str r3, [sp, #0] - 20f0c: 6320 str r0, [r4, #48] ; 0x30 - 20f0e: 4620 mov r0, r4 - 20f10: f7f9 fd3a bl 1a988 -} - 20f14: b007 add sp, #28 - 20f16: bd30 pop {r4, r5, pc} - 20f18: 4936 ldr r1, [pc, #216] ; (20ff4 ) - 20f1a: 4628 mov r0, r5 - 20f1c: f009 f8e8 bl 2a0f0 + 20fe2: 6b20 ldr r0, [r4, #48] ; 0x30 + 20fe4: 4a3c ldr r2, [pc, #240] ; (210d8 ) + 20fe6: f040 0012 orr.w r0, r0, #18 + 20fea: 9300 str r3, [sp, #0] + 20fec: 6320 str r0, [r4, #48] ; 0x30 + 20fee: 4620 mov r0, r4 + 20ff0: f7f9 fd3a bl 1aa68 +} + 20ff4: b007 add sp, #28 + 20ff6: bd30 pop {r4, r5, pc} + 20ff8: 4936 ldr r1, [pc, #216] ; (210d4 ) + 20ffa: 4628 mov r0, r5 + 20ffc: f009 f8ec bl 2a1d8 size_t println(const String &s) { return print(s) + println(); } - 20f20: 4629 mov r1, r5 - 20f22: 482d ldr r0, [pc, #180] ; (20fd8 ) - 20f24: f008 ff74 bl 29e10 - 20f28: 482b ldr r0, [pc, #172] ; (20fd8 ) - 20f2a: f008 ffa3 bl 29e74 + 21000: 4629 mov r1, r5 + 21002: 482d ldr r0, [pc, #180] ; (210b8 ) + 21004: f008 ff7a bl 29efc + 21008: 482b ldr r0, [pc, #172] ; (210b8 ) + 2100a: f008 ffa9 bl 29f60 BMC_WARNING( - 20f2e: 4628 mov r0, r5 - 20f30: f009 f8a2 bl 2a078 - 20f34: 212e movs r1, #46 ; 0x2e - 20f36: 482d ldr r0, [pc, #180] ; (20fec ) - 20f38: f00b fb06 bl 2c548 + 2100e: 4628 mov r0, r5 + 21010: f009 f8a6 bl 2a160 + 21014: 212e movs r1, #46 ; 0x2e + 21016: 482d ldr r0, [pc, #180] ; (210cc ) + 21018: f00b fb0a bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 20f3c: 4826 ldr r0, [pc, #152] ; (20fd8 ) - 20f3e: f008 ff99 bl 29e74 - 20f42: 212e movs r1, #46 ; 0x2e - 20f44: 4829 ldr r0, [pc, #164] ; (20fec ) - 20f46: f00b faff bl 2c548 - 20f4a: 4823 ldr r0, [pc, #140] ; (20fd8 ) - 20f4c: f008 ff92 bl 29e74 - 20f50: 2100 movs r1, #0 - 20f52: 4820 ldr r0, [pc, #128] ; (20fd4 ) - 20f54: f00b faf8 bl 2c548 - 20f58: 481f ldr r0, [pc, #124] ; (20fd8 ) - 20f5a: f008 ff8b bl 29e74 + 2101c: 4826 ldr r0, [pc, #152] ; (210b8 ) + 2101e: f008 ff9f bl 29f60 + 21022: 212e movs r1, #46 ; 0x2e + 21024: 4829 ldr r0, [pc, #164] ; (210cc ) + 21026: f00b fb03 bl 2c630 + 2102a: 4823 ldr r0, [pc, #140] ; (210b8 ) + 2102c: f008 ff98 bl 29f60 + 21030: 2100 movs r1, #0 + 21032: 4820 ldr r0, [pc, #128] ; (210b4 ) + 21034: f00b fafc bl 2c630 + 21038: 481f ldr r0, [pc, #124] ; (210b8 ) + 2103a: f008 ff91 bl 29f60 sendNotification(BMC_NOTIFY_CONNECTION, 2, true, true); - 20f5e: 2301 movs r3, #1 - 20f60: 2202 movs r2, #2 - 20f62: 2100 movs r1, #0 - 20f64: 4620 mov r0, r4 - 20f66: 9300 str r3, [sp, #0] - 20f68: f7f9 fd0e bl 1a988 -} - 20f6c: b007 add sp, #28 - 20f6e: bd30 pop {r4, r5, pc} + 2103e: 2301 movs r3, #1 + 21040: 2202 movs r2, #2 + 21042: 2100 movs r1, #0 + 21044: 4620 mov r0, r4 + 21046: 9300 str r3, [sp, #0] + 21048: f7f9 fd0e bl 1aa68 +} + 2104c: b007 add sp, #28 + 2104e: bd30 pop {r4, r5, pc} return "SerialB"; - 20f70: 4922 ldr r1, [pc, #136] ; (20ffc ) - 20f72: 4628 mov r0, r5 - 20f74: f009 f8bc bl 2a0f0 - 20f78: e797 b.n 20eaa + 21050: 4922 ldr r1, [pc, #136] ; (210dc ) + 21052: 4628 mov r0, r5 + 21054: f009 f8c0 bl 2a1d8 + 21058: e797 b.n 20f8a return "SerialA"; - 20f7a: 4921 ldr r1, [pc, #132] ; (21000 ) - 20f7c: 4628 mov r0, r5 - 20f7e: f009 f8b7 bl 2a0f0 - 20f82: e792 b.n 20eaa - 20f84: 491e ldr r1, [pc, #120] ; (21000 ) - 20f86: 4628 mov r0, r5 - 20f88: f009 f8b2 bl 2a0f0 - 20f8c: e7c8 b.n 20f20 + 2105a: 4921 ldr r1, [pc, #132] ; (210e0 ) + 2105c: 4628 mov r0, r5 + 2105e: f009 f8bb bl 2a1d8 + 21062: e792 b.n 20f8a + 21064: 491e ldr r1, [pc, #120] ; (210e0 ) + 21066: 4628 mov r0, r5 + 21068: f009 f8b6 bl 2a1d8 + 2106c: e7c8 b.n 21000 return "SerialC"; - 20f8e: 491d ldr r1, [pc, #116] ; (21004 ) - 20f90: 4628 mov r0, r5 - 20f92: f009 f8ad bl 2a0f0 - 20f96: e788 b.n 20eaa + 2106e: 491d ldr r1, [pc, #116] ; (210e4 ) + 21070: 4628 mov r0, r5 + 21072: f009 f8b1 bl 2a1d8 + 21076: e788 b.n 20f8a return "USB Host"; - 20f98: 491b ldr r1, [pc, #108] ; (21008 ) - 20f9a: 4628 mov r0, r5 - 20f9c: f009 f8a8 bl 2a0f0 - 20fa0: e783 b.n 20eaa + 21078: 491b ldr r1, [pc, #108] ; (210e8 ) + 2107a: 4628 mov r0, r5 + 2107c: f009 f8ac bl 2a1d8 + 21080: e783 b.n 20f8a return "SerialD"; - 20fa2: 491a ldr r1, [pc, #104] ; (2100c ) - 20fa4: 4628 mov r0, r5 - 20fa6: f009 f8a3 bl 2a0f0 - 20faa: e7b9 b.n 20f20 + 21082: 491a ldr r1, [pc, #104] ; (210ec ) + 21084: 4628 mov r0, r5 + 21086: f009 f8a7 bl 2a1d8 + 2108a: e7b9 b.n 21000 return "SerialB"; - 20fac: 4913 ldr r1, [pc, #76] ; (20ffc ) - 20fae: 4628 mov r0, r5 - 20fb0: f009 f89e bl 2a0f0 - 20fb4: e7b4 b.n 20f20 + 2108c: 4913 ldr r1, [pc, #76] ; (210dc ) + 2108e: 4628 mov r0, r5 + 21090: f009 f8a2 bl 2a1d8 + 21094: e7b4 b.n 21000 return "SerialD"; - 20fb6: 4915 ldr r1, [pc, #84] ; (2100c ) - 20fb8: 4628 mov r0, r5 - 20fba: f009 f899 bl 2a0f0 - 20fbe: e774 b.n 20eaa + 21096: 4915 ldr r1, [pc, #84] ; (210ec ) + 21098: 4628 mov r0, r5 + 2109a: f009 f89d bl 2a1d8 + 2109e: e774 b.n 20f8a return "SerialC"; - 20fc0: 4910 ldr r1, [pc, #64] ; (21004 ) - 20fc2: 4628 mov r0, r5 - 20fc4: f009 f894 bl 2a0f0 - 20fc8: e7aa b.n 20f20 + 210a0: 4910 ldr r1, [pc, #64] ; (210e4 ) + 210a2: 4628 mov r0, r5 + 210a4: f009 f898 bl 2a1d8 + 210a8: e7aa b.n 21000 return "USB Host"; - 20fca: 490f ldr r1, [pc, #60] ; (21008 ) - 20fcc: 4628 mov r0, r5 - 20fce: f009 f88f bl 2a0f0 - 20fd2: e7a5 b.n 20f20 - 20fd4: 20003c58 .word 0x20003c58 - 20fd8: 20004ba8 .word 0x20004ba8 - 20fdc: 20002758 .word 0x20002758 - 20fe0: 200023ec .word 0x200023ec - 20fe4: 20003be0 .word 0x20003be0 - 20fe8: 20001c74 .word 0x20001c74 - 20fec: 20003ff4 .word 0x20003ff4 - 20ff0: 20003bc4 .word 0x20003bc4 - 20ff4: 20001c44 .word 0x20001c44 - 20ff8: 007d7d7d .word 0x007d7d7d - 20ffc: 20001c50 .word 0x20001c50 - 21000: 20001c48 .word 0x20001c48 - 21004: 20001c58 .word 0x20001c58 - 21008: 20001c68 .word 0x20001c68 - 2100c: 20001c60 .word 0x20001c60 - -00021010 : + 210aa: 490f ldr r1, [pc, #60] ; (210e8 ) + 210ac: 4628 mov r0, r5 + 210ae: f009 f893 bl 2a1d8 + 210b2: e7a5 b.n 21000 + 210b4: 20003d18 .word 0x20003d18 + 210b8: 20004c68 .word 0x20004c68 + 210bc: 20002760 .word 0x20002760 + 210c0: 200023ec .word 0x200023ec + 210c4: 20003ca0 .word 0x20003ca0 + 210c8: 20001c74 .word 0x20001c74 + 210cc: 200040b4 .word 0x200040b4 + 210d0: 20003c84 .word 0x20003c84 + 210d4: 20001c44 .word 0x20001c44 + 210d8: 007d7d7d .word 0x007d7d7d + 210dc: 20001c50 .word 0x20001c50 + 210e0: 20001c48 .word 0x20001c48 + 210e4: 20001c58 .word 0x20001c58 + 210e8: 20001c68 .word 0x20001c68 + 210ec: 20001c60 .word 0x20001c60 + +000210f0 : if(midi.globals.editorConnected() && flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 21010: 6843 ldr r3, [r0, #4] + 210f0: 6843 ldr r3, [r0, #4] return bitRead(flags, bit); - 21012: f8d3 2108 ldr.w r2, [r3, #264] ; 0x108 - 21016: 6dd2 ldr r2, [r2, #92] ; 0x5c + 210f2: f8d3 2108 ldr.w r2, [r3, #264] ; 0x108 + 210f6: 6dd2 ldr r2, [r2, #92] ; 0x5c void BMCEditor::disconnect(bool t_notify){ - 21018: b530 push {r4, r5, lr} - 2101a: 4604 mov r4, r0 - 2101c: 0750 lsls r0, r2, #29 - 2101e: b083 sub sp, #12 - 21020: 460d mov r5, r1 - 21022: d502 bpl.n 2102a - 21024: 6b22 ldr r2, [r4, #48] ; 0x30 - 21026: 0491 lsls r1, r2, #18 - 21028: d41a bmi.n 21060 + 210f8: b530 push {r4, r5, lr} + 210fa: 4604 mov r4, r0 + 210fc: 0750 lsls r0, r2, #29 + 210fe: b083 sub sp, #12 + 21100: 460d mov r5, r1 + 21102: d502 bpl.n 2110a + 21104: 6b22 ldr r2, [r4, #48] ; 0x30 + 21106: 0491 lsls r1, r2, #18 + 21108: d41a bmi.n 21140 if(t_notify){ - 2102a: b985 cbnz r5, 2104e + 2110a: b985 cbnz r5, 2112e port = 0; - 2102c: 2200 movs r2, #0 - 2102e: f884 202c strb.w r2, [r4, #44] ; 0x2c + 2110c: 2200 movs r2, #0 + 2110e: f884 202c strb.w r2, [r4, #44] ; 0x2c midi.globals.setEditorConnected(false); - 21032: f8d3 2108 ldr.w r2, [r3, #264] ; 0x108 + 21112: f8d3 2108 ldr.w r2, [r3, #264] ; 0x108 bitWrite(flags, bit, value); - 21036: 6dd3 ldr r3, [r2, #92] ; 0x5c - 21038: f023 0304 bic.w r3, r3, #4 - 2103c: 65d3 str r3, [r2, #92] ; 0x5c + 21116: 6dd3 ldr r3, [r2, #92] ; 0x5c + 21118: f023 0304 bic.w r3, r3, #4 + 2111c: 65d3 str r3, [r2, #92] ; 0x5c bitClear(flags, bit); - 2103e: 6b23 ldr r3, [r4, #48] ; 0x30 - 21040: f023 0330 bic.w r3, r3, #48 ; 0x30 + 2111e: 6b23 ldr r3, [r4, #48] ; 0x30 + 21120: f023 0330 bic.w r3, r3, #48 ; 0x30 bitSet(flags, bit); - 21044: f043 0342 orr.w r3, r3, #66 ; 0x42 - 21048: 6323 str r3, [r4, #48] ; 0x30 + 21124: f043 0342 orr.w r3, r3, #66 ; 0x42 + 21128: 6323 str r3, [r4, #48] ; 0x30 } - 2104a: b003 add sp, #12 - 2104c: bd30 pop {r4, r5, pc} + 2112a: b003 add sp, #12 + 2112c: bd30 pop {r4, r5, pc} sendNotification(BMC_NOTIFY_CONNECTION, 0); - 2104e: 2300 movs r3, #0 - 21050: 4620 mov r0, r4 - 21052: 461a mov r2, r3 - 21054: 4619 mov r1, r3 - 21056: 9300 str r3, [sp, #0] - 21058: f7f9 fc96 bl 1a988 - 2105c: 6863 ldr r3, [r4, #4] - 2105e: e7e5 b.n 2102c - 21060: 2100 movs r1, #0 - 21062: 4832 ldr r0, [pc, #200] ; (2112c ) - 21064: f00b fa70 bl 2c548 - 21068: 4831 ldr r0, [pc, #196] ; (21130 ) - 2106a: f008 ff03 bl 29e74 - 2106e: 212e movs r1, #46 ; 0x2e - 21070: 4830 ldr r0, [pc, #192] ; (21134 ) - 21072: f00b fa69 bl 2c548 - 21076: 482e ldr r0, [pc, #184] ; (21130 ) - 21078: f008 fefc bl 29e74 - 2107c: 212e movs r1, #46 ; 0x2e - 2107e: 482d ldr r0, [pc, #180] ; (21134 ) - 21080: f00b fa62 bl 2c548 - 21084: 482a ldr r0, [pc, #168] ; (21130 ) - 21086: f008 fef5 bl 29e74 - 2108a: 2101 movs r1, #1 - 2108c: 482a ldr r0, [pc, #168] ; (21138 ) - 2108e: f00b fa5b bl 2c548 - 21092: 210f movs r1, #15 - 21094: 4829 ldr r0, [pc, #164] ; (2113c ) - 21096: f00b fa57 bl 2c548 - 2109a: 4825 ldr r0, [pc, #148] ; (21130 ) - 2109c: f008 feea bl 29e74 - 210a0: 212e movs r1, #46 ; 0x2e - 210a2: 4824 ldr r0, [pc, #144] ; (21134 ) - 210a4: f00b fa50 bl 2c548 - 210a8: 4821 ldr r0, [pc, #132] ; (21130 ) - 210aa: f008 fee3 bl 29e74 - 210ae: 212e movs r1, #46 ; 0x2e - 210b0: 4820 ldr r0, [pc, #128] ; (21134 ) - 210b2: f00b fa49 bl 2c548 - 210b6: 481e ldr r0, [pc, #120] ; (21130 ) - 210b8: f008 fedc bl 29e74 - 210bc: 2100 movs r1, #0 - 210be: 481b ldr r0, [pc, #108] ; (2112c ) - 210c0: f00b fa42 bl 2c548 - 210c4: 481a ldr r0, [pc, #104] ; (21130 ) - 210c6: f008 fed5 bl 29e74 + 2112e: 2300 movs r3, #0 + 21130: 4620 mov r0, r4 + 21132: 461a mov r2, r3 + 21134: 4619 mov r1, r3 + 21136: 9300 str r3, [sp, #0] + 21138: f7f9 fc96 bl 1aa68 + 2113c: 6863 ldr r3, [r4, #4] + 2113e: e7e5 b.n 2110c + 21140: 2100 movs r1, #0 + 21142: 4832 ldr r0, [pc, #200] ; (2120c ) + 21144: f00b fa74 bl 2c630 + 21148: 4831 ldr r0, [pc, #196] ; (21210 ) + 2114a: f008 ff09 bl 29f60 + 2114e: 212e movs r1, #46 ; 0x2e + 21150: 4830 ldr r0, [pc, #192] ; (21214 ) + 21152: f00b fa6d bl 2c630 + 21156: 482e ldr r0, [pc, #184] ; (21210 ) + 21158: f008 ff02 bl 29f60 + 2115c: 212e movs r1, #46 ; 0x2e + 2115e: 482d ldr r0, [pc, #180] ; (21214 ) + 21160: f00b fa66 bl 2c630 + 21164: 482a ldr r0, [pc, #168] ; (21210 ) + 21166: f008 fefb bl 29f60 + 2116a: 2101 movs r1, #1 + 2116c: 482a ldr r0, [pc, #168] ; (21218 ) + 2116e: f00b fa5f bl 2c630 + 21172: 210f movs r1, #15 + 21174: 4829 ldr r0, [pc, #164] ; (2121c ) + 21176: f00b fa5b bl 2c630 + 2117a: 4825 ldr r0, [pc, #148] ; (21210 ) + 2117c: f008 fef0 bl 29f60 + 21180: 212e movs r1, #46 ; 0x2e + 21182: 4824 ldr r0, [pc, #144] ; (21214 ) + 21184: f00b fa54 bl 2c630 + 21188: 4821 ldr r0, [pc, #132] ; (21210 ) + 2118a: f008 fee9 bl 29f60 + 2118e: 212e movs r1, #46 ; 0x2e + 21190: 4820 ldr r0, [pc, #128] ; (21214 ) + 21192: f00b fa4d bl 2c630 + 21196: 481e ldr r0, [pc, #120] ; (21210 ) + 21198: f008 fee2 bl 29f60 + 2119c: 2100 movs r1, #0 + 2119e: 481b ldr r0, [pc, #108] ; (2120c ) + 211a0: f00b fa46 bl 2c630 + 211a4: 481a ldr r0, [pc, #104] ; (21210 ) + 211a6: f008 fedb bl 29f60 bitClear(flags, bit); - 210ca: 6b23 ldr r3, [r4, #48] ; 0x30 + 211aa: 6b23 ldr r3, [r4, #48] ; 0x30 getStore(); - 210cc: 4620 mov r0, r4 - 210ce: f423 4340 bic.w r3, r3, #49152 ; 0xc000 + 211ac: 4620 mov r0, r4 + 211ae: f423 4340 bic.w r3, r3, #49152 ; 0xc000 bitSet(flags, bit); - 210d2: f443 3340 orr.w r3, r3, #196608 ; 0x30000 - 210d6: 6323 str r3, [r4, #48] ; 0x30 - 210d8: f7f8 fdf2 bl 19cc0 + 211b2: f443 3340 orr.w r3, r3, #196608 ; 0x30000 + 211b6: 6323 str r3, [r4, #48] ; 0x30 + 211b8: f7f8 fdf2 bl 19da0 if(midi.globals.editorConnected()){ - 210dc: 6863 ldr r3, [r4, #4] - 210de: f8d3 0108 ldr.w r0, [r3, #264] ; 0x108 + 211bc: 6863 ldr r3, [r4, #4] + 211be: f8d3 0108 ldr.w r0, [r3, #264] ; 0x108 return bitRead(flags, bit); - 210e2: 6dc2 ldr r2, [r0, #92] ; 0x5c - 210e4: 0752 lsls r2, r2, #29 - 210e6: d5a0 bpl.n 2102a + 211c2: 6dc2 ldr r2, [r0, #92] ; 0x5c + 211c4: 0752 lsls r2, r2, #29 + 211c6: d5a0 bpl.n 2110a bitSet(flags, bit); - 210e8: 6b21 ldr r1, [r4, #48] ; 0x30 - 210ea: f041 0204 orr.w r2, r1, #4 - 210ee: 6322 str r2, [r4, #48] ; 0x30 + 211c8: 6b21 ldr r1, [r4, #48] ; 0x30 + 211ca: f041 0204 orr.w r2, r1, #4 + 211ce: 6322 str r2, [r4, #48] ; 0x30 return bitRead(flags, bit); - 210f0: 6dc0 ldr r0, [r0, #92] ; 0x5c + 211d0: 6dc0 ldr r0, [r0, #92] ; 0x5c if(midi.globals.editorConnected() && flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 210f2: 0740 lsls r0, r0, #29 - 210f4: d599 bpl.n 2102a - 210f6: 0490 lsls r0, r2, #18 - 210f8: d597 bpl.n 2102a + 211d2: 0740 lsls r0, r0, #29 + 211d4: d599 bpl.n 2110a + 211d6: 0490 lsls r0, r2, #18 + 211d8: d597 bpl.n 2110a if(bitRead(flags, bit)){ - 210fa: 0450 lsls r0, r2, #17 - 210fc: d409 bmi.n 21112 - 210fe: 0410 lsls r0, r2, #16 - 21100: d40e bmi.n 21120 - 21102: 03d2 lsls r2, r2, #15 - 21104: d591 bpl.n 2102a + 211da: 0450 lsls r0, r2, #17 + 211dc: d409 bmi.n 211f2 + 211de: 0410 lsls r0, r2, #16 + 211e0: d40e bmi.n 21200 + 211e2: 03d2 lsls r2, r2, #15 + 211e4: d591 bpl.n 2110a bitClear(flags, bit); - 21106: f421 3190 bic.w r1, r1, #73728 ; 0x12000 - 2110a: f041 0104 orr.w r1, r1, #4 - 2110e: 6321 str r1, [r4, #48] ; 0x30 + 211e6: f421 3190 bic.w r1, r1, #73728 ; 0x12000 + 211ea: f041 0104 orr.w r1, r1, #4 + 211ee: 6321 str r1, [r4, #48] ; 0x30 return 3; - 21110: e78b b.n 2102a + 211f0: e78b b.n 2110a bitSet(flags, bit); - 21112: f421 4180 bic.w r1, r1, #16384 ; 0x4000 - 21116: f242 0204 movw r2, #8196 ; 0x2004 - 2111a: 430a orrs r2, r1 - 2111c: 6322 str r2, [r4, #48] ; 0x30 + 211f2: f421 4180 bic.w r1, r1, #16384 ; 0x4000 + 211f6: f242 0204 movw r2, #8196 ; 0x2004 + 211fa: 430a orrs r2, r1 + 211fc: 6322 str r2, [r4, #48] ; 0x30 return 1; - 2111e: e784 b.n 2102a + 211fe: e784 b.n 2110a bitClear(flags, bit); - 21120: f421 4120 bic.w r1, r1, #40960 ; 0xa000 - 21124: f041 0104 orr.w r1, r1, #4 - 21128: 6321 str r1, [r4, #48] ; 0x30 + 21200: f421 4120 bic.w r1, r1, #40960 ; 0xa000 + 21204: f041 0104 orr.w r1, r1, #4 + 21208: 6321 str r1, [r4, #48] ; 0x30 return 2; - 2112a: e77e b.n 2102a - 2112c: 20003c58 .word 0x20003c58 - 21130: 20004ba8 .word 0x20004ba8 - 21134: 20003ff4 .word 0x20003ff4 - 21138: 200023ec .word 0x200023ec - 2113c: 20003bb4 .word 0x20003bb4 - -00021140 : + 2120a: e77e b.n 2110a + 2120c: 20003d18 .word 0x20003d18 + 21210: 20004c68 .word 0x20004c68 + 21214: 200040b4 .word 0x200040b4 + 21218: 200023ec .word 0x200023ec + 2121c: 20003c74 .word 0x20003c74 + +00021220 : midi.globals.editorConnected() && - 21140: 6843 ldr r3, [r0, #4] + 21220: 6843 ldr r3, [r0, #4] return bitRead(flags, bit); - 21142: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 21146: 6ddb ldr r3, [r3, #92] ; 0x5c + 21222: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 21226: 6ddb ldr r3, [r3, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 21148: 0759 lsls r1, r3, #29 + 21228: 0759 lsls r1, r3, #29 void BMCEditor::disconnectEditor(){ - 2114a: b530 push {r4, r5, lr} - 2114c: 4604 mov r4, r0 - 2114e: b083 sub sp, #12 - 21150: d408 bmi.n 21164 + 2122a: b530 push {r4, r5, lr} + 2122c: 4604 mov r4, r0 + 2122e: b083 sub sp, #12 + 21230: d408 bmi.n 21244 sendNotification(BMC_NOTIFY_CONNECTION, 1); - 21152: 2300 movs r3, #0 - 21154: 2201 movs r2, #1 - 21156: 4620 mov r0, r4 - 21158: 4619 mov r1, r3 - 2115a: 9300 str r3, [sp, #0] - 2115c: f7f9 fc14 bl 1a988 -} - 21160: b003 add sp, #12 - 21162: bd30 pop {r4, r5, pc} - 21164: 6bc3 ldr r3, [r0, #60] ; 0x3c + 21232: 2300 movs r3, #0 + 21234: 2201 movs r2, #1 + 21236: 4620 mov r0, r4 + 21238: 4619 mov r1, r3 + 2123a: 9300 str r3, [sp, #0] + 2123c: f7f9 fc14 bl 1aa68 +} + 21240: b003 add sp, #12 + 21242: bd30 pop {r4, r5, pc} + 21244: 6bc3 ldr r3, [r0, #60] ; 0x3c midi.globals.editorConnected() && - 21166: f890 102d ldrb.w r1, [r0, #45] ; 0x2d - 2116a: 7a5a ldrb r2, [r3, #9] - 2116c: 4291 cmp r1, r2 - 2116e: d1f0 bne.n 21152 + 21246: f890 102d ldrb.w r1, [r0, #45] ; 0x2d + 2124a: 7a5a ldrb r2, [r3, #9] + 2124c: 4291 cmp r1, r2 + 2124e: d1f0 bne.n 21232 getMessageDeviceId() == deviceId && - 21170: f890 102c ldrb.w r1, [r0, #44] ; 0x2c - 21174: 781a ldrb r2, [r3, #0] - 21176: 4291 cmp r1, r2 - 21178: d1eb bne.n 21152 + 21250: f890 102c ldrb.w r1, [r0, #44] ; 0x2c + 21254: 781a ldrb r2, [r3, #0] + 21256: 4291 cmp r1, r2 + 21258: d1eb bne.n 21232 incoming.peekSysEx(4) == deviceId && - 2117a: f8b3 3003 ldrh.w r3, [r3, #3] - 2117e: 2b0a cmp r3, #10 - 21180: d9e7 bls.n 21152 + 2125a: f8b3 3003 ldrh.w r3, [r3, #3] + 2125e: 2b0a cmp r3, #10 + 21260: d9e7 bls.n 21232 bool isLayer() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_LAYER);} - 21182: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 21262: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 21186: 079a lsls r2, r3, #30 - 21188: f3c3 0540 ubfx r5, r3, #1, #1 - 2118c: d4e1 bmi.n 21152 + 21266: 079a lsls r2, r3, #30 + 21268: f3c3 0540 ubfx r5, r3, #1, #1 + 2126c: d4e1 bmi.n 21232 if(!isWriteMessage()){ - 2118e: 07db lsls r3, r3, #31 - 21190: d5e6 bpl.n 21160 - 21192: 4629 mov r1, r5 - 21194: 481d ldr r0, [pc, #116] ; (2120c ) - 21196: f00b f9d7 bl 2c548 - 2119a: 481d ldr r0, [pc, #116] ; (21210 ) - 2119c: f008 fe6a bl 29e74 - 211a0: 212e movs r1, #46 ; 0x2e - 211a2: 481c ldr r0, [pc, #112] ; (21214 ) - 211a4: f00b f9d0 bl 2c548 - 211a8: 4819 ldr r0, [pc, #100] ; (21210 ) - 211aa: f008 fe63 bl 29e74 - 211ae: 212e movs r1, #46 ; 0x2e - 211b0: 4818 ldr r0, [pc, #96] ; (21214 ) - 211b2: f00b f9c9 bl 2c548 - 211b6: 4816 ldr r0, [pc, #88] ; (21210 ) - 211b8: f008 fe5c bl 29e74 - 211bc: 2101 movs r1, #1 - 211be: 4816 ldr r0, [pc, #88] ; (21218 ) - 211c0: f00b f9c2 bl 2c548 - 211c4: 2122 movs r1, #34 ; 0x22 - 211c6: 4815 ldr r0, [pc, #84] ; (2121c ) - 211c8: f00b f9be bl 2c548 - 211cc: 4810 ldr r0, [pc, #64] ; (21210 ) - 211ce: f008 fe51 bl 29e74 - 211d2: 212e movs r1, #46 ; 0x2e - 211d4: 480f ldr r0, [pc, #60] ; (21214 ) - 211d6: f00b f9b7 bl 2c548 - 211da: 480d ldr r0, [pc, #52] ; (21210 ) - 211dc: f008 fe4a bl 29e74 - 211e0: 212e movs r1, #46 ; 0x2e - 211e2: 480c ldr r0, [pc, #48] ; (21214 ) - 211e4: f00b f9b0 bl 2c548 - 211e8: 4809 ldr r0, [pc, #36] ; (21210 ) - 211ea: f008 fe43 bl 29e74 - 211ee: 4629 mov r1, r5 - 211f0: 4806 ldr r0, [pc, #24] ; (2120c ) - 211f2: f00b f9a9 bl 2c548 - 211f6: 4806 ldr r0, [pc, #24] ; (21210 ) - 211f8: f008 fe3c bl 29e74 + 2126e: 07db lsls r3, r3, #31 + 21270: d5e6 bpl.n 21240 + 21272: 4629 mov r1, r5 + 21274: 481d ldr r0, [pc, #116] ; (212ec ) + 21276: f00b f9db bl 2c630 + 2127a: 481d ldr r0, [pc, #116] ; (212f0 ) + 2127c: f008 fe70 bl 29f60 + 21280: 212e movs r1, #46 ; 0x2e + 21282: 481c ldr r0, [pc, #112] ; (212f4 ) + 21284: f00b f9d4 bl 2c630 + 21288: 4819 ldr r0, [pc, #100] ; (212f0 ) + 2128a: f008 fe69 bl 29f60 + 2128e: 212e movs r1, #46 ; 0x2e + 21290: 4818 ldr r0, [pc, #96] ; (212f4 ) + 21292: f00b f9cd bl 2c630 + 21296: 4816 ldr r0, [pc, #88] ; (212f0 ) + 21298: f008 fe62 bl 29f60 + 2129c: 2101 movs r1, #1 + 2129e: 4816 ldr r0, [pc, #88] ; (212f8 ) + 212a0: f00b f9c6 bl 2c630 + 212a4: 2122 movs r1, #34 ; 0x22 + 212a6: 4815 ldr r0, [pc, #84] ; (212fc ) + 212a8: f00b f9c2 bl 2c630 + 212ac: 4810 ldr r0, [pc, #64] ; (212f0 ) + 212ae: f008 fe57 bl 29f60 + 212b2: 212e movs r1, #46 ; 0x2e + 212b4: 480f ldr r0, [pc, #60] ; (212f4 ) + 212b6: f00b f9bb bl 2c630 + 212ba: 480d ldr r0, [pc, #52] ; (212f0 ) + 212bc: f008 fe50 bl 29f60 + 212c0: 212e movs r1, #46 ; 0x2e + 212c2: 480c ldr r0, [pc, #48] ; (212f4 ) + 212c4: f00b f9b4 bl 2c630 + 212c8: 4809 ldr r0, [pc, #36] ; (212f0 ) + 212ca: f008 fe49 bl 29f60 + 212ce: 4629 mov r1, r5 + 212d0: 4806 ldr r0, [pc, #24] ; (212ec ) + 212d2: f00b f9ad bl 2c630 + 212d6: 4806 ldr r0, [pc, #24] ; (212f0 ) + 212d8: f008 fe42 bl 29f60 disconnect(); - 211fc: 2101 movs r1, #1 - 211fe: 4620 mov r0, r4 + 212dc: 2101 movs r1, #1 + 212de: 4620 mov r0, r4 } - 21200: b003 add sp, #12 - 21202: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 212e0: b003 add sp, #12 + 212e2: e8bd 4030 ldmia.w sp!, {r4, r5, lr} disconnect(); - 21206: f7ff bf03 b.w 21010 - 2120a: bf00 nop - 2120c: 20003c58 .word 0x20003c58 - 21210: 20004ba8 .word 0x20004ba8 - 21214: 20002758 .word 0x20002758 - 21218: 200023ec .word 0x200023ec - 2121c: 20003d40 .word 0x20003d40 - -00021220 : + 212e6: f7ff bf03 b.w 210f0 + 212ea: bf00 nop + 212ec: 20003d18 .word 0x20003d18 + 212f0: 20004c68 .word 0x20004c68 + 212f4: 20002760 .word 0x20002760 + 212f8: 200023ec .word 0x200023ec + 212fc: 20003e00 .word 0x20003e00 + +00021300 : bool isWrite() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_WRITE);} - 21220: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 21300: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 if(!isWriteMessage() || !midi.globals.editorConnected() || getMessageDeviceId() != deviceId){ - 21224: 07da lsls r2, r3, #31 - 21226: d50e bpl.n 21246 - 21228: 6843 ldr r3, [r0, #4] - 2122a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 2122e: 6ddb ldr r3, [r3, #92] ; 0x5c - 21230: 075b lsls r3, r3, #29 + 21304: 07da lsls r2, r3, #31 + 21306: d50e bpl.n 21326 + 21308: 6843 ldr r3, [r0, #4] + 2130a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 2130e: 6ddb ldr r3, [r3, #92] ; 0x5c + 21310: 075b lsls r3, r3, #29 void BMCEditor::forceDisconnectEditor(){ - 21232: b510 push {r4, lr} - 21234: 4604 mov r4, r0 + 21312: b510 push {r4, lr} + 21314: 4604 mov r4, r0 if(!isWriteMessage() || !midi.globals.editorConnected() || getMessageDeviceId() != deviceId){ - 21236: d505 bpl.n 21244 + 21316: d505 bpl.n 21324 return incoming.sysex[4]; - 21238: 6bc3 ldr r3, [r0, #60] ; 0x3c - 2123a: f890 202d ldrb.w r2, [r0, #45] ; 0x2d - 2123e: 7a5b ldrb r3, [r3, #9] - 21240: 429a cmp r2, r3 - 21242: d001 beq.n 21248 -} - 21244: bd10 pop {r4, pc} - 21246: 4770 bx lr - 21248: 2100 movs r1, #0 - 2124a: 481d ldr r0, [pc, #116] ; (212c0 ) - 2124c: f00b f97c bl 2c548 - 21250: 481c ldr r0, [pc, #112] ; (212c4 ) - 21252: f008 fe0f bl 29e74 - 21256: 212e movs r1, #46 ; 0x2e - 21258: 481b ldr r0, [pc, #108] ; (212c8 ) - 2125a: f00b f975 bl 2c548 - 2125e: 4819 ldr r0, [pc, #100] ; (212c4 ) - 21260: f008 fe08 bl 29e74 - 21264: 212e movs r1, #46 ; 0x2e - 21266: 4818 ldr r0, [pc, #96] ; (212c8 ) - 21268: f00b f96e bl 2c548 - 2126c: 4815 ldr r0, [pc, #84] ; (212c4 ) - 2126e: f008 fe01 bl 29e74 - 21272: 2101 movs r1, #1 - 21274: 4815 ldr r0, [pc, #84] ; (212cc ) - 21276: f00b f967 bl 2c548 - 2127a: 212a movs r1, #42 ; 0x2a - 2127c: 4814 ldr r0, [pc, #80] ; (212d0 ) - 2127e: f00b f963 bl 2c548 - 21282: 4810 ldr r0, [pc, #64] ; (212c4 ) - 21284: f008 fdf6 bl 29e74 - 21288: 212e movs r1, #46 ; 0x2e - 2128a: 480f ldr r0, [pc, #60] ; (212c8 ) - 2128c: f00b f95c bl 2c548 - 21290: 480c ldr r0, [pc, #48] ; (212c4 ) - 21292: f008 fdef bl 29e74 - 21296: 212e movs r1, #46 ; 0x2e - 21298: 480b ldr r0, [pc, #44] ; (212c8 ) - 2129a: f00b f955 bl 2c548 - 2129e: 4809 ldr r0, [pc, #36] ; (212c4 ) - 212a0: f008 fde8 bl 29e74 - 212a4: 2100 movs r1, #0 - 212a6: 4806 ldr r0, [pc, #24] ; (212c0 ) - 212a8: f00b f94e bl 2c548 - 212ac: 4805 ldr r0, [pc, #20] ; (212c4 ) - 212ae: f008 fde1 bl 29e74 + 21318: 6bc3 ldr r3, [r0, #60] ; 0x3c + 2131a: f890 202d ldrb.w r2, [r0, #45] ; 0x2d + 2131e: 7a5b ldrb r3, [r3, #9] + 21320: 429a cmp r2, r3 + 21322: d001 beq.n 21328 +} + 21324: bd10 pop {r4, pc} + 21326: 4770 bx lr + 21328: 2100 movs r1, #0 + 2132a: 481d ldr r0, [pc, #116] ; (213a0 ) + 2132c: f00b f980 bl 2c630 + 21330: 481c ldr r0, [pc, #112] ; (213a4 ) + 21332: f008 fe15 bl 29f60 + 21336: 212e movs r1, #46 ; 0x2e + 21338: 481b ldr r0, [pc, #108] ; (213a8 ) + 2133a: f00b f979 bl 2c630 + 2133e: 4819 ldr r0, [pc, #100] ; (213a4 ) + 21340: f008 fe0e bl 29f60 + 21344: 212e movs r1, #46 ; 0x2e + 21346: 4818 ldr r0, [pc, #96] ; (213a8 ) + 21348: f00b f972 bl 2c630 + 2134c: 4815 ldr r0, [pc, #84] ; (213a4 ) + 2134e: f008 fe07 bl 29f60 + 21352: 2101 movs r1, #1 + 21354: 4815 ldr r0, [pc, #84] ; (213ac ) + 21356: f00b f96b bl 2c630 + 2135a: 212a movs r1, #42 ; 0x2a + 2135c: 4814 ldr r0, [pc, #80] ; (213b0 ) + 2135e: f00b f967 bl 2c630 + 21362: 4810 ldr r0, [pc, #64] ; (213a4 ) + 21364: f008 fdfc bl 29f60 + 21368: 212e movs r1, #46 ; 0x2e + 2136a: 480f ldr r0, [pc, #60] ; (213a8 ) + 2136c: f00b f960 bl 2c630 + 21370: 480c ldr r0, [pc, #48] ; (213a4 ) + 21372: f008 fdf5 bl 29f60 + 21376: 212e movs r1, #46 ; 0x2e + 21378: 480b ldr r0, [pc, #44] ; (213a8 ) + 2137a: f00b f959 bl 2c630 + 2137e: 4809 ldr r0, [pc, #36] ; (213a4 ) + 21380: f008 fdee bl 29f60 + 21384: 2100 movs r1, #0 + 21386: 4806 ldr r0, [pc, #24] ; (213a0 ) + 21388: f00b f952 bl 2c630 + 2138c: 4805 ldr r0, [pc, #20] ; (213a4 ) + 2138e: f008 fde7 bl 29f60 disconnect(); - 212b2: 4620 mov r0, r4 - 212b4: 2101 movs r1, #1 + 21392: 4620 mov r0, r4 + 21394: 2101 movs r1, #1 } - 212b6: e8bd 4010 ldmia.w sp!, {r4, lr} + 21396: e8bd 4010 ldmia.w sp!, {r4, lr} disconnect(); - 212ba: f7ff bea9 b.w 21010 - 212be: bf00 nop - 212c0: 20003c58 .word 0x20003c58 - 212c4: 20004ba8 .word 0x20004ba8 - 212c8: 20002758 .word 0x20002758 - 212cc: 200023ec .word 0x200023ec - 212d0: 20003d38 .word 0x20003d38 - -000212d4 : + 2139a: f7ff bea9 b.w 210f0 + 2139e: bf00 nop + 213a0: 20003d18 .word 0x20003d18 + 213a4: 20004c68 .word 0x20004c68 + 213a8: 20002760 .word 0x20002760 + 213ac: 200023ec .word 0x200023ec + 213b0: 20003df8 .word 0x20003df8 + +000213b4 : midi.globals.editorConnected() && - 212d4: 6842 ldr r2, [r0, #4] - 212d6: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 212da: 6dd2 ldr r2, [r2, #92] ; 0x5c + 213b4: 6842 ldr r2, [r0, #4] + 213b6: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 213ba: 6dd2 ldr r2, [r2, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 212dc: 0752 lsls r2, r2, #29 - 212de: d505 bpl.n 212ec - 212e0: 6bc2 ldr r2, [r0, #60] ; 0x3c + 213bc: 0752 lsls r2, r2, #29 + 213be: d505 bpl.n 213cc + 213c0: 6bc2 ldr r2, [r0, #60] ; 0x3c midi.globals.editorConnected() && - 212e2: f890 c02d ldrb.w ip, [r0, #45] ; 0x2d - 212e6: 7a51 ldrb r1, [r2, #9] - 212e8: 458c cmp ip, r1 - 212ea: d000 beq.n 212ee + 213c2: f890 c02d ldrb.w ip, [r0, #45] ; 0x2d + 213c6: 7a51 ldrb r1, [r2, #9] + 213c8: 458c cmp ip, r1 + 213ca: d000 beq.n 213ce } - 212ec: 4770 bx lr + 213cc: 4770 bx lr getMessageDeviceId() == deviceId && - 212ee: f890 c02c ldrb.w ip, [r0, #44] ; 0x2c - 212f2: 7811 ldrb r1, [r2, #0] - 212f4: 458c cmp ip, r1 - 212f6: d1f9 bne.n 212ec + 213ce: f890 c02c ldrb.w ip, [r0, #44] ; 0x2c + 213d2: 7811 ldrb r1, [r2, #0] + 213d4: 458c cmp ip, r1 + 213d6: d1f9 bne.n 213cc incoming.peekSysEx(4) == deviceId && - 212f8: f8b2 2003 ldrh.w r2, [r2, #3] - 212fc: 2a0a cmp r2, #10 - 212fe: d9f5 bls.n 212ec + 213d8: f8b2 2003 ldrh.w r2, [r2, #3] + 213dc: 2a0a cmp r2, #10 + 213de: d9f5 bls.n 213cc bool isLayer() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_LAYER);} - 21300: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 213e0: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 21304: 079b lsls r3, r3, #30 - 21306: d4f1 bmi.n 212ec - 21308: f7fa bbac b.w 1ba64 + 213e4: 079b lsls r3, r3, #30 + 213e6: d4f1 bmi.n 213cc + 213e8: f7fa bbac b.w 1bb44 -0002130c : +000213ec : incoming.size() >= BMC_EDITOR_SYSEX_MIN_LENGTH ); } return ( midi.globals.editorConnected() && - 2130c: 6842 ldr r2, [r0, #4] - 2130e: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 21312: 6dd2 ldr r2, [r2, #92] ; 0x5c + 213ec: 6842 ldr r2, [r0, #4] + 213ee: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 213f2: 6dd2 ldr r2, [r2, #92] ; 0x5c getMessageDeviceId() == deviceId && incoming.getPort() == port && - 21314: 0753 lsls r3, r2, #29 - 21316: d50d bpl.n 21334 - 21318: 460b mov r3, r1 + 213f4: 0753 lsls r3, r2, #29 + 213f6: d50d bpl.n 21414 + 213f8: 460b mov r3, r1 void BMCEditor::globalStoreAddress(bool write){ - 2131a: b5f0 push {r4, r5, r6, r7, lr} + 213fa: b5f0 push {r4, r5, r6, r7, lr} return incoming.sysex[4]; - 2131c: 6bc5 ldr r5, [r0, #60] ; 0x3c - 2131e: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c + 213fc: 6bc5 ldr r5, [r0, #60] ; 0x3c + 213fe: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c getMessageDeviceId() == deviceId && - 21322: f890 202d ldrb.w r2, [r0, #45] ; 0x2d - 21326: 4604 mov r4, r0 + 21402: f890 202d ldrb.w r2, [r0, #45] ; 0x2d + 21406: 4604 mov r4, r0 midi.globals.editorConnected() && - 21328: 7a69 ldrb r1, [r5, #9] - 2132a: 4291 cmp r1, r2 - 2132c: d003 beq.n 21336 + 21408: 7a69 ldrb r1, [r5, #9] + 2140a: 4291 cmp r1, r2 + 2140c: d003 beq.n 21416 } - 2132e: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 21332: bdf0 pop {r4, r5, r6, r7, pc} - 21334: 4770 bx lr + 2140e: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 21412: bdf0 pop {r4, r5, r6, r7, pc} + 21414: 4770 bx lr incoming.getPort() == port && - 21336: f890 102c ldrb.w r1, [r0, #44] ; 0x2c + 21416: f890 102c ldrb.w r1, [r0, #44] ; 0x2c getMessageDeviceId() == deviceId && - 2133a: 782e ldrb r6, [r5, #0] - 2133c: 428e cmp r6, r1 - 2133e: d1f6 bne.n 2132e - 21340: f890 6044 ldrb.w r6, [r0, #68] ; 0x44 + 2141a: 782e ldrb r6, [r5, #0] + 2141c: 428e cmp r6, r1 + 2141e: d1f6 bne.n 2140e + 21420: f890 6044 ldrb.w r6, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 21344: f3c6 0740 ubfx r7, r6, #1, #1 - 21348: 07b6 lsls r6, r6, #30 - 2134a: d4f0 bmi.n 2132e + 21424: f3c6 0740 ubfx r7, r6, #1, #1 + 21428: 07b6 lsls r6, r6, #30 + 2142a: d4f0 bmi.n 2140e if(write && incoming.size() != sysExLength){ - 2134c: b1f3 cbz r3, 2138c - 2134e: f8b5 3003 ldrh.w r3, [r5, #3] - 21352: 2b0c cmp r3, #12 - 21354: d142 bne.n 213dc + 2142c: b1f3 cbz r3, 2146c + 2142e: f8b5 3003 ldrh.w r3, [r5, #3] + 21432: 2b0c cmp r3, #12 + 21434: d142 bne.n 214bc if(maxStoreAddresses()>1 && incoming.sysex[9] != storeAddress){ - 21356: 8b80 ldrh r0, [r0, #28] - 21358: f642 73f7 movw r3, #12279 ; 0x2ff7 - 2135c: 4298 cmp r0, r3 - 2135e: d915 bls.n 2138c - 21360: 7ba8 ldrb r0, [r5, #14] - 21362: f894 302f ldrb.w r3, [r4, #47] ; 0x2f - 21366: 4298 cmp r0, r3 - 21368: d010 beq.n 2138c - 2136a: 211d movs r1, #29 - 2136c: 482f ldr r0, [pc, #188] ; (2142c ) - 2136e: f00b f8eb bl 2c548 - 21372: 482f ldr r0, [pc, #188] ; (21430 ) - 21374: f008 fd7e bl 29e74 + 21436: 8b80 ldrh r0, [r0, #28] + 21438: f642 73f7 movw r3, #12279 ; 0x2ff7 + 2143c: 4298 cmp r0, r3 + 2143e: d915 bls.n 2146c + 21440: 7ba8 ldrb r0, [r5, #14] + 21442: f894 302f ldrb.w r3, [r4, #47] ; 0x2f + 21446: 4298 cmp r0, r3 + 21448: d010 beq.n 2146c + 2144a: 211d movs r1, #29 + 2144c: 482f ldr r0, [pc, #188] ; (2150c ) + 2144e: f00b f8ef bl 2c630 + 21452: 482f ldr r0, [pc, #188] ; (21510 ) + 21454: f008 fd84 bl 29f60 if(changeStoreLocal(incoming.sysex[9])){ - 21378: 6be3 ldr r3, [r4, #60] ; 0x3c - 2137a: 4620 mov r0, r4 - 2137c: 7b99 ldrb r1, [r3, #14] - 2137e: f7fd f801 bl 1e384 - 21382: bb90 cbnz r0, 213ea + 21458: 6be3 ldr r3, [r4, #60] ; 0x3c + 2145a: 4620 mov r0, r4 + 2145c: 7b99 ldrb r1, [r3, #14] + 2145e: f7fd f801 bl 1e464 + 21462: bb90 cbnz r0, 214ca buff.prepareEditorMessage( - 21384: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 21388: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 21464: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 21468: f894 202d ldrb.w r2, [r4, #45] ; 0x2d struct BMCMidiMessage { - 2138c: ad41 add r5, sp, #260 ; 0x104 - 2138e: 2600 movs r6, #0 - 21390: 2305 movs r3, #5 - 21392: 4628 mov r0, r5 - 21394: e9cd 6600 strd r6, r6, [sp] - 21398: 602e str r6, [r5, #0] - 2139a: 712e strb r6, [r5, #4] - 2139c: f7f9 fd92 bl 1aec4 + 2146c: ad41 add r5, sp, #260 ; 0x104 + 2146e: 2600 movs r6, #0 + 21470: 2305 movs r3, #5 + 21472: 4628 mov r0, r5 + 21474: e9cd 6600 strd r6, r6, [sp] + 21478: 602e str r6, [r5, #0] + 2147a: 712e strb r6, [r5, #4] + 2147c: f7f9 fd92 bl 1afa4 uint16_t sysLength = size(); - 213a0: f8b5 3003 ldrh.w r3, [r5, #3] + 21480: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 21484: 2bfd cmp r3, #253 ; 0xfd + 21486: d808 bhi.n 2149a appendSysExByte(value & 0x7F); - 213a8: f894 202f ldrb.w r2, [r4, #47] ; 0x2f + 21488: f894 202f ldrb.w r2, [r4, #47] ; 0x2f sysex[sysLength++] = value; - 213ac: 18e9 adds r1, r5, r3 - 213ae: 3301 adds r3, #1 + 2148c: 18e9 adds r1, r5, r3 + 2148e: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 213b0: 712e strb r6, [r5, #4] + 21490: 712e strb r6, [r5, #4] appendSysExByte(value & 0x7F); - 213b2: f002 027f and.w r2, r2, #127 ; 0x7f + 21492: f002 027f and.w r2, r2, #127 ; 0x7f setData1(value & 0xFF); - 213b6: 70eb strb r3, [r5, #3] + 21496: 70eb strb r3, [r5, #3] sysex[sysLength++] = value; - 213b8: 714a strb r2, [r1, #5] + 21498: 714a strb r2, [r1, #5] sendToEditor(buff); - 213ba: 2301 movs r3, #1 - 213bc: 2100 movs r1, #0 - 213be: 22f7 movs r2, #247 ; 0xf7 - 213c0: 4668 mov r0, sp - 213c2: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 - 213c6: a944 add r1, sp, #272 ; 0x110 - 213c8: f009 f99e bl 2a708 - 213cc: 4620 mov r0, r4 - 213ce: e895 000e ldmia.w r5, {r1, r2, r3} - 213d2: f7f9 fa7b bl 1a8cc -} - 213d6: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 213da: bdf0 pop {r4, r5, r6, r7, pc} + 2149a: 2301 movs r3, #1 + 2149c: 2100 movs r1, #0 + 2149e: 22f7 movs r2, #247 ; 0xf7 + 214a0: 4668 mov r0, sp + 214a2: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 + 214a6: a944 add r1, sp, #272 ; 0x110 + 214a8: f009 f9a2 bl 2a7f0 + 214ac: 4620 mov r0, r4 + 214ae: e895 000e ldmia.w r5, {r1, r2, r3} + 214b2: f7f9 fa7b bl 1a9ac +} + 214b6: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 214ba: bdf0 pop {r4, r5, r6, r7, pc} sendNotification(BMC_NOTIFY_INVALID_SIZE, sysExLength, true); - 213dc: 2301 movs r3, #1 - 213de: 220c movs r2, #12 - 213e0: 210a movs r1, #10 - 213e2: 9700 str r7, [sp, #0] - 213e4: f7f9 fad0 bl 1a988 + 214bc: 2301 movs r3, #1 + 214be: 220c movs r2, #12 + 214c0: 210a movs r1, #10 + 214c2: 9700 str r7, [sp, #0] + 214c4: f7f9 fad0 bl 1aa68 return; - 213e8: e7a1 b.n 2132e + 214c8: e7a1 b.n 2140e size_t print(const char s[]) { return write(s); } - 213ea: 4912 ldr r1, [pc, #72] ; (21434 ) - 213ec: 4810 ldr r0, [pc, #64] ; (21430 ) - 213ee: f7f9 fc4f bl 1ac90 - 213f2: 4911 ldr r1, [pc, #68] ; (21438 ) - 213f4: 480e ldr r0, [pc, #56] ; (21430 ) - 213f6: f7f9 fc4b bl 1ac90 + 214ca: 4912 ldr r1, [pc, #72] ; (21514 ) + 214cc: 4810 ldr r0, [pc, #64] ; (21510 ) + 214ce: f7f9 fc4f bl 1ad70 + 214d2: 4911 ldr r1, [pc, #68] ; (21518 ) + 214d4: 480e ldr r0, [pc, #56] ; (21510 ) + 214d6: f7f9 fc4b bl 1ad70 BMC_PRINTLN("Store changed to",incoming.sysex[9]); - 213fa: 6be1 ldr r1, [r4, #60] ; 0x3c + 214da: 6be1 ldr r1, [r4, #60] ; 0x3c size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 213fc: 463b mov r3, r7 - 213fe: 220a movs r2, #10 - 21400: 7b89 ldrb r1, [r1, #14] - 21402: 480b ldr r0, [pc, #44] ; (21430 ) - 21404: f008 fd52 bl 29eac + 214dc: 463b mov r3, r7 + 214de: 220a movs r2, #10 + 214e0: 7b89 ldrb r1, [r1, #14] + 214e2: 480b ldr r0, [pc, #44] ; (21510 ) + 214e4: f008 fd58 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 21408: 4809 ldr r0, [pc, #36] ; (21430 ) - 2140a: f008 fd33 bl 29e74 + 214e8: 4809 ldr r0, [pc, #36] ; (21510 ) + 214ea: f008 fd39 bl 29f60 if(midi.globals.editorConnected()){ - 2140e: 6863 ldr r3, [r4, #4] - 21410: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 21414: 6ddb ldr r3, [r3, #92] ; 0x5c - 21416: 075b lsls r3, r3, #29 - 21418: d5b4 bpl.n 21384 + 214ee: 6863 ldr r3, [r4, #4] + 214f0: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 214f4: 6ddb ldr r3, [r3, #92] ; 0x5c + 214f6: 075b lsls r3, r3, #29 + 214f8: d5b4 bpl.n 21464 bitSet(flags, bit); - 2141a: 6b23 ldr r3, [r4, #48] ; 0x30 + 214fa: 6b23 ldr r3, [r4, #48] ; 0x30 buff.prepareEditorMessage( - 2141c: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 21420: f043 0304 orr.w r3, r3, #4 - 21424: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 21428: 6323 str r3, [r4, #48] ; 0x30 - } - 2142a: e7af b.n 2138c - 2142c: 20003ca0 .word 0x20003ca0 - 21430: 20004ba8 .word 0x20004ba8 - 21434: 20003cc0 .word 0x20003cc0 - 21438: 200023ec .word 0x200023ec - -0002143c : + 214fc: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 21500: f043 0304 orr.w r3, r3, #4 + 21504: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 21508: 6323 str r3, [r4, #48] ; 0x30 + } + 2150a: e7af b.n 2146c + 2150c: 20003d60 .word 0x20003d60 + 21510: 20004c68 .word 0x20004c68 + 21514: 20003d80 .word 0x20003d80 + 21518: 200023ec .word 0x200023ec + +0002151c : void BMCEditor::globalSendBackupStatus(){ - 2143c: b570 push {r4, r5, r6, lr} - 2143e: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 + 2151c: b570 push {r4, r5, r6, lr} + 2151e: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 struct BMCMidiMessage { - 21442: 2600 movs r6, #0 + 21522: 2600 movs r6, #0 prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 21444: 2209 movs r2, #9 - 21446: 4605 mov r5, r0 + 21524: 2209 movs r2, #9 + 21526: 4605 mov r5, r0 struct BMCMidiMessage { - 21448: ac41 add r4, sp, #260 ; 0x104 + 21528: ac41 add r4, sp, #260 ; 0x104 prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 2144a: 2306 movs r3, #6 - 2144c: e9cd 2600 strd r2, r6, [sp] + 2152a: 2306 movs r3, #6 + 2152c: e9cd 2600 strd r2, r6, [sp] struct BMCMidiMessage { - 21450: 6026 str r6, [r4, #0] + 21530: 6026 str r6, [r4, #0] prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 21452: f890 202d ldrb.w r2, [r0, #45] ; 0x2d - 21456: f890 102c ldrb.w r1, [r0, #44] ; 0x2c - 2145a: 4620 mov r0, r4 + 21532: f890 202d ldrb.w r2, [r0, #45] ; 0x2d + 21536: f890 102c ldrb.w r1, [r0, #44] ; 0x2c + 2153a: 4620 mov r0, r4 struct BMCMidiMessage { - 2145c: 7126 strb r6, [r4, #4] + 2153c: 7126 strb r6, [r4, #4] prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 2145e: f7f9 fd31 bl 1aec4 + 2153e: f7f9 fd31 bl 1afa4 bool read(uint8_t bit){ - 21462: f8b4 3003 ldrh.w r3, [r4, #3] + 21542: f8b4 3003 ldrh.w r3, [r4, #3] return bitRead(flags, bit); - 21466: 6b29 ldr r1, [r5, #48] ; 0x30 + 21546: 6b29 ldr r1, [r5, #48] ; 0x30 if(sysLength + 21548: 2bfd cmp r3, #253 ; 0xfd + 2154a: ea4f 3251 mov.w r2, r1, lsr #13 + 2154e: d925 bls.n 2159c if(midi.globals.editorConnected() && flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 21470: 6868 ldr r0, [r5, #4] - 21472: f8d0 0108 ldr.w r0, [r0, #264] ; 0x108 - 21476: 6dc0 ldr r0, [r0, #92] ; 0x5c - 21478: ea02 0290 and.w r2, r2, r0, lsr #2 - 2147c: 07d2 lsls r2, r2, #31 - 2147e: d410 bmi.n 214a2 + 21550: 6868 ldr r0, [r5, #4] + 21552: f8d0 0108 ldr.w r0, [r0, #264] ; 0x108 + 21556: 6dc0 ldr r0, [r0, #92] ; 0x5c + 21558: ea02 0290 and.w r2, r2, r0, lsr #2 + 2155c: 07d2 lsls r2, r2, #31 + 2155e: d410 bmi.n 21582 sendToEditor(buff); - 21480: 2301 movs r3, #1 - 21482: 2000 movs r0, #0 - 21484: a944 add r1, sp, #272 ; 0x110 - 21486: 22f7 movs r2, #247 ; 0xf7 - 21488: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 - 2148c: 4668 mov r0, sp - 2148e: f009 f93b bl 2a708 - 21492: 4628 mov r0, r5 - 21494: e894 000e ldmia.w r4, {r1, r2, r3} - 21498: f7f9 fa18 bl 1a8cc -} - 2149c: f50d 7d02 add.w sp, sp, #520 ; 0x208 - 214a0: bd70 pop {r4, r5, r6, pc} + 21560: 2301 movs r3, #1 + 21562: 2000 movs r0, #0 + 21564: a944 add r1, sp, #272 ; 0x110 + 21566: 22f7 movs r2, #247 ; 0xf7 + 21568: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 + 2156c: 4668 mov r0, sp + 2156e: f009 f93f bl 2a7f0 + 21572: 4628 mov r0, r5 + 21574: e894 000e ldmia.w r4, {r1, r2, r3} + 21578: f7f9 fa18 bl 1a9ac +} + 2157c: f50d 7d02 add.w sp, sp, #520 ; 0x208 + 21580: bd70 pop {r4, r5, r6, pc} if(bitRead(flags, bit)){ - 214a2: 0448 lsls r0, r1, #17 - 214a4: d425 bmi.n 214f2 - 214a6: 040a lsls r2, r1, #16 - 214a8: d42a bmi.n 21500 - 214aa: 03ce lsls r6, r1, #15 - 214ac: f3c1 4000 ubfx r0, r1, #16, #1 - 214b0: d516 bpl.n 214e0 + 21582: 0448 lsls r0, r1, #17 + 21584: d425 bmi.n 215d2 + 21586: 040a lsls r2, r1, #16 + 21588: d42a bmi.n 215e0 + 2158a: 03ce lsls r6, r1, #15 + 2158c: f3c1 4000 ubfx r0, r1, #16, #1 + 21590: d516 bpl.n 215c0 bitClear(flags, bit); - 214b2: f421 3190 bic.w r1, r1, #73728 ; 0x12000 + 21592: f421 3190 bic.w r1, r1, #73728 ; 0x12000 return 3; - 214b6: 2003 movs r0, #3 - 214b8: 6329 str r1, [r5, #48] ; 0x30 - 214ba: e011 b.n 214e0 + 21596: 2003 movs r0, #3 + 21598: 6329 str r1, [r5, #48] ; 0x30 + 2159a: e011 b.n 215c0 if(midi.globals.editorConnected() && flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 214bc: 6868 ldr r0, [r5, #4] + 2159c: 6868 ldr r0, [r5, #4] void setData2(uint8_t t_data2) { data2 = t_data2; } - 214be: 7126 strb r6, [r4, #4] + 2159e: 7126 strb r6, [r4, #4] sysex[sysLength++] = value; - 214c0: 18e6 adds r6, r4, r3 + 215a0: 18e6 adds r6, r4, r3 return bitRead(flags, bit); - 214c2: f8d0 0108 ldr.w r0, [r0, #264] ; 0x108 - 214c6: 3301 adds r3, #1 - 214c8: 6dc0 ldr r0, [r0, #92] ; 0x5c + 215a2: f8d0 0108 ldr.w r0, [r0, #264] ; 0x108 + 215a6: 3301 adds r3, #1 + 215a8: 6dc0 ldr r0, [r0, #92] ; 0x5c setData1(value & 0xFF); - 214ca: 70e3 strb r3, [r4, #3] - 214cc: ea02 0090 and.w r0, r2, r0, lsr #2 - 214d0: f002 0201 and.w r2, r2, #1 - 214d4: f8b4 3003 ldrh.w r3, [r4, #3] - 214d8: f010 0001 ands.w r0, r0, #1 - 214dc: 7172 strb r2, [r6, #5] - 214de: d1e0 bne.n 214a2 + 215aa: 70e3 strb r3, [r4, #3] + 215ac: ea02 0090 and.w r0, r2, r0, lsr #2 + 215b0: f002 0201 and.w r2, r2, #1 + 215b4: f8b4 3003 ldrh.w r3, [r4, #3] + 215b8: f010 0001 ands.w r0, r0, #1 + 215bc: 7172 strb r2, [r6, #5] + 215be: d1e0 bne.n 21582 if(sysLength + 215c0: 2bfd cmp r3, #253 ; 0xfd + 215c2: d8cd bhi.n 21560 sysex[sysLength++] = value; - 214e4: 18e2 adds r2, r4, r3 - 214e6: 3301 adds r3, #1 - 214e8: 7150 strb r0, [r2, #5] + 215c4: 18e2 adds r2, r4, r3 + 215c6: 3301 adds r3, #1 + 215c8: 7150 strb r0, [r2, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 214ea: 2200 movs r2, #0 + 215ca: 2200 movs r2, #0 setData1(value & 0xFF); - 214ec: 70e3 strb r3, [r4, #3] + 215cc: 70e3 strb r3, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 214ee: 7122 strb r2, [r4, #4] + 215ce: 7122 strb r2, [r4, #4] return true; - 214f0: e7c6 b.n 21480 + 215d0: e7c6 b.n 21560 bitClear(flags, bit); - 214f2: f421 4180 bic.w r1, r1, #16384 ; 0x4000 + 215d2: f421 4180 bic.w r1, r1, #16384 ; 0x4000 return 1; - 214f6: 2001 movs r0, #1 + 215d6: 2001 movs r0, #1 bitSet(flags, bit); - 214f8: f441 5100 orr.w r1, r1, #8192 ; 0x2000 - 214fc: 6329 str r1, [r5, #48] ; 0x30 - 214fe: e7ef b.n 214e0 + 215d8: f441 5100 orr.w r1, r1, #8192 ; 0x2000 + 215dc: 6329 str r1, [r5, #48] ; 0x30 + 215de: e7ef b.n 215c0 bitClear(flags, bit); - 21500: f421 4120 bic.w r1, r1, #40960 ; 0xa000 + 215e0: f421 4120 bic.w r1, r1, #40960 ; 0xa000 return 2; - 21504: 2002 movs r0, #2 - 21506: 6329 str r1, [r5, #48] ; 0x30 - 21508: e7ea b.n 214e0 - 2150a: bf00 nop + 215e4: 2002 movs r0, #2 + 215e6: 6329 str r1, [r5, #48] ; 0x30 + 215e8: e7ea b.n 215c0 + 215ea: bf00 nop -0002150c : +000215ec : if(!midi.globals.editorConnected() || !isValidGlobalMessage(false) || !write){ - 2150c: 6843 ldr r3, [r0, #4] + 215ec: 6843 ldr r3, [r0, #4] return bitRead(flags, bit); - 2150e: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 21512: 6ddb ldr r3, [r3, #92] ; 0x5c - 21514: 075b lsls r3, r3, #29 - 21516: d50b bpl.n 21530 + 215ee: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 215f2: 6ddb ldr r3, [r3, #92] ; 0x5c + 215f4: 075b lsls r3, r3, #29 + 215f6: d50b bpl.n 21610 return incoming.sysex[4]; - 21518: 6bc3 ldr r3, [r0, #60] ; 0x3c + 215f8: 6bc3 ldr r3, [r0, #60] ; 0x3c void BMCEditor::globalBackupMessage(bool write){ - 2151a: b510 push {r4, lr} + 215fa: b510 push {r4, lr} midi.globals.editorConnected() && - 2151c: f893 c009 ldrb.w ip, [r3, #9] - 21520: b082 sub sp, #8 - 21522: f890 202d ldrb.w r2, [r0, #45] ; 0x2d - 21526: 4604 mov r4, r0 - 21528: 4594 cmp ip, r2 - 2152a: d002 beq.n 21532 -} - 2152c: b002 add sp, #8 - 2152e: bd10 pop {r4, pc} - 21530: 4770 bx lr + 215fc: f893 c009 ldrb.w ip, [r3, #9] + 21600: b082 sub sp, #8 + 21602: f890 202d ldrb.w r2, [r0, #45] ; 0x2d + 21606: 4604 mov r4, r0 + 21608: 4594 cmp ip, r2 + 2160a: d002 beq.n 21612 +} + 2160c: b002 add sp, #8 + 2160e: bd10 pop {r4, pc} + 21610: 4770 bx lr getMessageDeviceId() == deviceId && - 21532: f893 c000 ldrb.w ip, [r3] - 21536: f890 202c ldrb.w r2, [r0, #44] ; 0x2c - 2153a: 4594 cmp ip, r2 - 2153c: d1f6 bne.n 2152c - 2153e: f890 2044 ldrb.w r2, [r0, #68] ; 0x44 + 21612: f893 c000 ldrb.w ip, [r3] + 21616: f890 202c ldrb.w r2, [r0, #44] ; 0x2c + 2161a: 4594 cmp ip, r2 + 2161c: d1f6 bne.n 2160c + 2161e: f890 2044 ldrb.w r2, [r0, #68] ; 0x44 if(!midi.globals.editorConnected() || !isValidGlobalMessage(false) || !write){ - 21542: 0792 lsls r2, r2, #30 - 21544: d4f2 bmi.n 2152c - 21546: 2900 cmp r1, #0 - 21548: d0f0 beq.n 2152c + 21622: 0792 lsls r2, r2, #30 + 21624: d4f2 bmi.n 2160c + 21626: 2900 cmp r1, #0 + 21628: d0f0 beq.n 2160c if(incoming.size() != sysExLength){ - 2154a: f8b3 2003 ldrh.w r2, [r3, #3] - 2154e: 2a0c cmp r2, #12 - 21550: d10c bne.n 2156c + 2162a: f8b3 2003 ldrh.w r2, [r3, #3] + 2162e: 2a0c cmp r2, #12 + 21630: d10c bne.n 2164c uint8_t newStatus = incoming.sysex[9]; - 21552: 7b9b ldrb r3, [r3, #14] + 21632: 7b9b ldrb r3, [r3, #14] if(newStatus == 1){ - 21554: 2b01 cmp r3, #1 - 21556: d014 beq.n 21582 + 21634: 2b01 cmp r3, #1 + 21636: d014 beq.n 21662 } else if(newStatus == 2){ - 21558: 2b02 cmp r3, #2 - 2155a: d03d beq.n 215d8 + 21638: 2b02 cmp r3, #2 + 2163a: d03d beq.n 216b8 } else if(newStatus == 3){ - 2155c: 2b03 cmp r3, #3 - 2155e: d00d beq.n 2157c + 2163c: 2b03 cmp r3, #3 + 2163e: d00d beq.n 2165c globalSendBackupStatus(); - 21560: 4620 mov r0, r4 + 21640: 4620 mov r0, r4 } - 21562: b002 add sp, #8 - 21564: e8bd 4010 ldmia.w sp!, {r4, lr} + 21642: b002 add sp, #8 + 21644: e8bd 4010 ldmia.w sp!, {r4, lr} globalSendBackupStatus(); - 21568: f7ff bf68 b.w 2143c + 21648: f7ff bf68 b.w 2151c sendNotification(BMC_NOTIFY_INVALID_SIZE, sysExLength, true); - 2156c: 2400 movs r4, #0 - 2156e: 2301 movs r3, #1 - 21570: 220c movs r2, #12 - 21572: 210a movs r1, #10 - 21574: 9400 str r4, [sp, #0] - 21576: f7f9 fa07 bl 1a988 + 2164c: 2400 movs r4, #0 + 2164e: 2301 movs r3, #1 + 21650: 220c movs r2, #12 + 21652: 210a movs r1, #10 + 21654: 9400 str r4, [sp, #0] + 21656: f7f9 fa07 bl 1aa68 return; - 2157a: e7d7 b.n 2152c + 2165a: e7d7 b.n 2160c backupCancel(); - 2157c: f7fc fe3e bl 1e1fc + 2165c: f7fc fe3e bl 1e2dc globalSendBackupStatus(); - 21580: e7ee b.n 21560 - 21582: 6b03 ldr r3, [r0, #48] ; 0x30 + 21660: e7ee b.n 21640 + 21662: 6b03 ldr r3, [r0, #48] ; 0x30 if(midi.globals.editorConnected() && !flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 21584: 0499 lsls r1, r3, #18 - 21586: d4eb bmi.n 21560 + 21664: 0499 lsls r1, r3, #18 + 21666: d4eb bmi.n 21640 BMC_INFO("Backup Started"); - 21588: 4931 ldr r1, [pc, #196] ; (21650 ) - 2158a: 4832 ldr r0, [pc, #200] ; (21654 ) - 2158c: f7f9 fb90 bl 1acb0 - 21590: 4931 ldr r1, [pc, #196] ; (21658 ) - 21592: 4830 ldr r0, [pc, #192] ; (21654 ) - 21594: f7f9 fb8c bl 1acb0 - 21598: 492f ldr r1, [pc, #188] ; (21658 ) - 2159a: 482e ldr r0, [pc, #184] ; (21654 ) - 2159c: f7f9 fb88 bl 1acb0 + 21668: 4931 ldr r1, [pc, #196] ; (21730 ) + 2166a: 4832 ldr r0, [pc, #200] ; (21734 ) + 2166c: f7f9 fb90 bl 1ad90 + 21670: 4931 ldr r1, [pc, #196] ; (21738 ) + 21672: 4830 ldr r0, [pc, #192] ; (21734 ) + 21674: f7f9 fb8c bl 1ad90 + 21678: 492f ldr r1, [pc, #188] ; (21738 ) + 2167a: 482e ldr r0, [pc, #184] ; (21734 ) + 2167c: f7f9 fb88 bl 1ad90 size_t print(const char s[]) { return write(s); } - 215a0: 492e ldr r1, [pc, #184] ; (2165c ) - 215a2: 482c ldr r0, [pc, #176] ; (21654 ) - 215a4: f7f9 fb74 bl 1ac90 - 215a8: 492d ldr r1, [pc, #180] ; (21660 ) - 215aa: 482a ldr r0, [pc, #168] ; (21654 ) - 215ac: f7f9 fb80 bl 1acb0 - 215b0: 4929 ldr r1, [pc, #164] ; (21658 ) - 215b2: 4828 ldr r0, [pc, #160] ; (21654 ) - 215b4: f7f9 fb7c bl 1acb0 - 215b8: 4927 ldr r1, [pc, #156] ; (21658 ) - 215ba: 4826 ldr r0, [pc, #152] ; (21654 ) - 215bc: f7f9 fb78 bl 1acb0 - 215c0: 4824 ldr r0, [pc, #144] ; (21654 ) - 215c2: 4923 ldr r1, [pc, #140] ; (21650 ) - 215c4: f7f9 fb74 bl 1acb0 + 21680: 492e ldr r1, [pc, #184] ; (2173c ) + 21682: 482c ldr r0, [pc, #176] ; (21734 ) + 21684: f7f9 fb74 bl 1ad70 + 21688: 492d ldr r1, [pc, #180] ; (21740 ) + 2168a: 482a ldr r0, [pc, #168] ; (21734 ) + 2168c: f7f9 fb80 bl 1ad90 + 21690: 4929 ldr r1, [pc, #164] ; (21738 ) + 21692: 4828 ldr r0, [pc, #160] ; (21734 ) + 21694: f7f9 fb7c bl 1ad90 + 21698: 4927 ldr r1, [pc, #156] ; (21738 ) + 2169a: 4826 ldr r0, [pc, #152] ; (21734 ) + 2169c: f7f9 fb78 bl 1ad90 + 216a0: 4824 ldr r0, [pc, #144] ; (21734 ) + 216a2: 4923 ldr r1, [pc, #140] ; (21730 ) + 216a4: f7f9 fb74 bl 1ad90 bitClear(flags, bit); - 215c8: 6b23 ldr r3, [r4, #48] ; 0x30 - 215ca: 4620 mov r0, r4 - 215cc: f423 33c0 bic.w r3, r3, #98304 ; 0x18000 - 215d0: f443 3318 orr.w r3, r3, #155648 ; 0x26000 - 215d4: 6323 str r3, [r4, #48] ; 0x30 - 215d6: e7c4 b.n 21562 + 216a8: 6b23 ldr r3, [r4, #48] ; 0x30 + 216aa: 4620 mov r0, r4 + 216ac: f423 33c0 bic.w r3, r3, #98304 ; 0x18000 + 216b0: f443 3318 orr.w r3, r3, #155648 ; 0x26000 + 216b4: 6323 str r3, [r4, #48] ; 0x30 + 216b6: e7c4 b.n 21642 return bitRead(flags, bit); - 215d8: 6b03 ldr r3, [r0, #48] ; 0x30 + 216b8: 6b03 ldr r3, [r0, #48] ; 0x30 if(midi.globals.editorConnected() && flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 215da: 049a lsls r2, r3, #18 - 215dc: d5c0 bpl.n 21560 + 216ba: 049a lsls r2, r3, #18 + 216bc: d5c0 bpl.n 21640 BMC_INFO("Backup Complete"); - 215de: 491c ldr r1, [pc, #112] ; (21650 ) - 215e0: 481c ldr r0, [pc, #112] ; (21654 ) - 215e2: f7f9 fb65 bl 1acb0 - 215e6: 491c ldr r1, [pc, #112] ; (21658 ) - 215e8: 481a ldr r0, [pc, #104] ; (21654 ) - 215ea: f7f9 fb61 bl 1acb0 - 215ee: 491a ldr r1, [pc, #104] ; (21658 ) - 215f0: 4818 ldr r0, [pc, #96] ; (21654 ) - 215f2: f7f9 fb5d bl 1acb0 - 215f6: 4919 ldr r1, [pc, #100] ; (2165c ) - 215f8: 4816 ldr r0, [pc, #88] ; (21654 ) - 215fa: f7f9 fb49 bl 1ac90 - 215fe: 4919 ldr r1, [pc, #100] ; (21664 ) - 21600: 4814 ldr r0, [pc, #80] ; (21654 ) - 21602: f7f9 fb55 bl 1acb0 - 21606: 4914 ldr r1, [pc, #80] ; (21658 ) - 21608: 4812 ldr r0, [pc, #72] ; (21654 ) - 2160a: f7f9 fb51 bl 1acb0 - 2160e: 4912 ldr r1, [pc, #72] ; (21658 ) - 21610: 4810 ldr r0, [pc, #64] ; (21654 ) - 21612: f7f9 fb4d bl 1acb0 - 21616: 490e ldr r1, [pc, #56] ; (21650 ) - 21618: 480e ldr r0, [pc, #56] ; (21654 ) - 2161a: f7f9 fb49 bl 1acb0 + 216be: 491c ldr r1, [pc, #112] ; (21730 ) + 216c0: 481c ldr r0, [pc, #112] ; (21734 ) + 216c2: f7f9 fb65 bl 1ad90 + 216c6: 491c ldr r1, [pc, #112] ; (21738 ) + 216c8: 481a ldr r0, [pc, #104] ; (21734 ) + 216ca: f7f9 fb61 bl 1ad90 + 216ce: 491a ldr r1, [pc, #104] ; (21738 ) + 216d0: 4818 ldr r0, [pc, #96] ; (21734 ) + 216d2: f7f9 fb5d bl 1ad90 + 216d6: 4919 ldr r1, [pc, #100] ; (2173c ) + 216d8: 4816 ldr r0, [pc, #88] ; (21734 ) + 216da: f7f9 fb49 bl 1ad70 + 216de: 4919 ldr r1, [pc, #100] ; (21744 ) + 216e0: 4814 ldr r0, [pc, #80] ; (21734 ) + 216e2: f7f9 fb55 bl 1ad90 + 216e6: 4914 ldr r1, [pc, #80] ; (21738 ) + 216e8: 4812 ldr r0, [pc, #72] ; (21734 ) + 216ea: f7f9 fb51 bl 1ad90 + 216ee: 4912 ldr r1, [pc, #72] ; (21738 ) + 216f0: 4810 ldr r0, [pc, #64] ; (21734 ) + 216f2: f7f9 fb4d bl 1ad90 + 216f6: 490e ldr r1, [pc, #56] ; (21730 ) + 216f8: 480e ldr r0, [pc, #56] ; (21734 ) + 216fa: f7f9 fb49 bl 1ad90 bitSet(flags, bit); - 2161e: 6b22 ldr r2, [r4, #48] ; 0x30 - 21620: 4b11 ldr r3, [pc, #68] ; (21668 ) - 21622: 4620 mov r0, r4 - 21624: f422 32a0 bic.w r2, r2, #81920 ; 0x14000 - 21628: 4313 orrs r3, r2 - 2162a: 6323 str r3, [r4, #48] ; 0x30 - 2162c: f7ff ff06 bl 2143c + 216fe: 6b22 ldr r2, [r4, #48] ; 0x30 + 21700: 4b11 ldr r3, [pc, #68] ; (21748 ) + 21702: 4620 mov r0, r4 + 21704: f422 32a0 bic.w r2, r2, #81920 ; 0x14000 + 21708: 4313 orrs r3, r2 + 2170a: 6323 str r3, [r4, #48] ; 0x30 + 2170c: f7ff ff06 bl 2151c saveStore(); - 21630: 4620 mov r0, r4 - 21632: f7e6 f9a1 bl 7978 + 21710: 4620 mov r0, r4 + 21712: f7e6 f901 bl 7918 if(midi.globals.editorConnected()){ - 21636: 6863 ldr r3, [r4, #4] + 21716: 6863 ldr r3, [r4, #4] return bitRead(flags, bit); - 21638: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 2163c: 6ddb ldr r3, [r3, #92] ; 0x5c - 2163e: 075b lsls r3, r3, #29 - 21640: f57f af74 bpl.w 2152c + 21718: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 2171c: 6ddb ldr r3, [r3, #92] ; 0x5c + 2171e: 075b lsls r3, r3, #29 + 21720: f57f af74 bpl.w 2160c bitSet(flags, bit); - 21644: 6b23 ldr r3, [r4, #48] ; 0x30 - 21646: f043 0304 orr.w r3, r3, #4 - 2164a: 6323 str r3, [r4, #48] ; 0x30 - } - 2164c: e76e b.n 2152c - 2164e: bf00 nop - 21650: 20003c58 .word 0x20003c58 - 21654: 20004ba8 .word 0x20004ba8 - 21658: 20002758 .word 0x20002758 - 2165c: 200023ec .word 0x200023ec - 21660: 20003cd4 .word 0x20003cd4 - 21664: 20003ce4 .word 0x20003ce4 - 21668: 00028780 .word 0x00028780 - -0002166c : + 21724: 6b23 ldr r3, [r4, #48] ; 0x30 + 21726: f043 0304 orr.w r3, r3, #4 + 2172a: 6323 str r3, [r4, #48] ; 0x30 + } + 2172c: e76e b.n 2160c + 2172e: bf00 nop + 21730: 20003d18 .word 0x20003d18 + 21734: 20004c68 .word 0x20004c68 + 21738: 20002760 .word 0x20002760 + 2173c: 200023ec .word 0x200023ec + 21740: 20003d94 .word 0x20003d94 + 21744: 20003da4 .word 0x20003da4 + 21748: 00028780 .word 0x00028780 + +0002174c : midi.globals.editorConnected() && - 2166c: 6843 ldr r3, [r0, #4] + 2174c: 6843 ldr r3, [r0, #4] return bitRead(flags, bit); - 2166e: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 21672: 6ddb ldr r3, [r3, #92] ; 0x5c + 2174e: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 21752: 6ddb ldr r3, [r3, #92] ; 0x5c incoming.getPort() == port && - 21674: 075b lsls r3, r3, #29 - 21676: d50f bpl.n 21698 + 21754: 075b lsls r3, r3, #29 + 21756: d50f bpl.n 21778 return incoming.sysex[4]; - 21678: 6bc3 ldr r3, [r0, #60] ; 0x3c + 21758: 6bc3 ldr r3, [r0, #60] ; 0x3c void BMCEditor::globalSettingsMessage(bool write){// BMC_GLOBALF_SETTINGS - 2167a: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 2167e: 460f mov r7, r1 + 2175a: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 2175e: 460f mov r7, r1 midi.globals.editorConnected() && - 21680: f890 202d ldrb.w r2, [r0, #45] ; 0x2d - 21684: 7a59 ldrb r1, [r3, #9] - 21686: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c - 2168a: 4605 mov r5, r0 - 2168c: 4291 cmp r1, r2 - 2168e: d004 beq.n 2169a -} - 21690: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 21694: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 21698: 4770 bx lr + 21760: f890 202d ldrb.w r2, [r0, #45] ; 0x2d + 21764: 7a59 ldrb r1, [r3, #9] + 21766: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c + 2176a: 4605 mov r5, r0 + 2176c: 4291 cmp r1, r2 + 2176e: d004 beq.n 2177a +} + 21770: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 21774: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 21778: 4770 bx lr getMessageDeviceId() == deviceId && - 2169a: 781a ldrb r2, [r3, #0] - 2169c: f890 302c ldrb.w r3, [r0, #44] ; 0x2c - 216a0: 429a cmp r2, r3 - 216a2: d1f5 bne.n 21690 - 216a4: f890 2044 ldrb.w r2, [r0, #68] ; 0x44 + 2177a: 781a ldrb r2, [r3, #0] + 2177c: f890 302c ldrb.w r3, [r0, #44] ; 0x2c + 21780: 429a cmp r2, r3 + 21782: d1f5 bne.n 21770 + 21784: f890 2044 ldrb.w r2, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 216a8: f3c2 0440 ubfx r4, r2, #1, #1 - 216ac: 0792 lsls r2, r2, #30 - 216ae: d4ef bmi.n 21690 - 216b0: 210f movs r1, #15 - 216b2: 48b2 ldr r0, [pc, #712] ; (2197c ) - 216b4: f00a ff48 bl 2c548 - 216b8: 2101 movs r1, #1 - 216ba: 48b1 ldr r0, [pc, #708] ; (21980 ) - 216bc: f00a ff44 bl 2c548 + 21788: f3c2 0440 ubfx r4, r2, #1, #1 + 2178c: 0792 lsls r2, r2, #30 + 2178e: d4ef bmi.n 21770 + 21790: 210f movs r1, #15 + 21792: 48b2 ldr r0, [pc, #712] ; (21a5c ) + 21794: f00a ff4c bl 2c630 + 21798: 2101 movs r1, #1 + 2179a: 48b1 ldr r0, [pc, #708] ; (21a60 ) + 2179c: f00a ff48 bl 2c630 BMC_PRINTLN("Settings Length",incoming.size(),"required",sysExLength); - 216c0: 6beb ldr r3, [r5, #60] ; 0x3c + 217a0: 6beb ldr r3, [r5, #60] ; 0x3c size_t print(int n) { return print((long)n); } - 216c2: 48b0 ldr r0, [pc, #704] ; (21984 ) - 216c4: f8b3 1003 ldrh.w r1, [r3, #3] - 216c8: f008 fbc8 bl 29e5c - 216cc: 2101 movs r1, #1 - 216ce: 48ac ldr r0, [pc, #688] ; (21980 ) - 216d0: f00a ff3a bl 2c548 - 216d4: 2108 movs r1, #8 - 216d6: 48ac ldr r0, [pc, #688] ; (21988 ) - 216d8: f00a ff36 bl 2c548 - 216dc: 2101 movs r1, #1 - 216de: 48a8 ldr r0, [pc, #672] ; (21980 ) - 216e0: f00a ff32 bl 2c548 + 217a2: 48b0 ldr r0, [pc, #704] ; (21a64 ) + 217a4: f8b3 1003 ldrh.w r1, [r3, #3] + 217a8: f008 fbce bl 29f48 + 217ac: 2101 movs r1, #1 + 217ae: 48ac ldr r0, [pc, #688] ; (21a60 ) + 217b0: f00a ff3e bl 2c630 + 217b4: 2108 movs r1, #8 + 217b6: 48ac ldr r0, [pc, #688] ; (21a68 ) + 217b8: f00a ff3a bl 2c630 + 217bc: 2101 movs r1, #1 + 217be: 48a8 ldr r0, [pc, #672] ; (21a60 ) + 217c0: f00a ff36 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 216e4: 4623 mov r3, r4 - 216e6: 220a movs r2, #10 - 216e8: 214d movs r1, #77 ; 0x4d - 216ea: 48a6 ldr r0, [pc, #664] ; (21984 ) - 216ec: f008 fbde bl 29eac + 217c4: 4623 mov r3, r4 + 217c6: 220a movs r2, #10 + 217c8: 214d movs r1, #77 ; 0x4d + 217ca: 48a6 ldr r0, [pc, #664] ; (21a64 ) + 217cc: f008 fbe4 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 216f0: 48a4 ldr r0, [pc, #656] ; (21984 ) - 216f2: f008 fbbf bl 29e74 + 217d0: 48a4 ldr r0, [pc, #656] ; (21a64 ) + 217d2: f008 fbc5 bl 29f60 if(write && backupActive()){ - 216f6: 2f00 cmp r7, #0 - 216f8: f000 8083 beq.w 21802 - 216fc: 4628 mov r0, r5 - 216fe: f7fb fcad bl 1d05c - 21702: 4604 mov r4, r0 - 21704: 2800 cmp r0, #0 - 21706: f040 8130 bne.w 2196a + 217d6: 2f00 cmp r7, #0 + 217d8: f000 8083 beq.w 218e2 + 217dc: 4628 mov r0, r5 + 217de: f7fb fcad bl 1d13c + 217e2: 4604 mov r4, r0 + 217e4: 2800 cmp r0, #0 + 217e6: f040 8130 bne.w 21a4a if(write && incoming.size() != sysExLength){ - 2170a: 6be9 ldr r1, [r5, #60] ; 0x3c - 2170c: f8b1 3003 ldrh.w r3, [r1, #3] - 21710: 2b4d cmp r3, #77 ; 0x4d - 21712: f040 8122 bne.w 2195a + 217ea: 6be9 ldr r1, [r5, #60] ; 0x3c + 217ec: f8b1 3003 ldrh.w r3, [r1, #3] + 217f0: 2b4d cmp r3, #77 ; 0x4d + 217f2: f040 8122 bne.w 21a3a return BMC_MIDI_ARRAY_TO_32BITS(t_offset, sysex) & BMC_MASK_32; - 21716: 7c8b ldrb r3, [r1, #18] - 21718: f101 0c28 add.w ip, r1, #40 ; 0x28 - 2171c: 7c4a ldrb r2, [r1, #17] - 2171e: f1c1 0712 rsb r7, r1, #18 - 21722: 7b88 ldrb r0, [r1, #14] - 21724: f003 037f and.w r3, r3, #127 ; 0x7f - 21728: 01d2 lsls r2, r2, #7 + 217f6: 7c8b ldrb r3, [r1, #18] + 217f8: f101 0c28 add.w ip, r1, #40 ; 0x28 + 217fc: 7c4a ldrb r2, [r1, #17] + 217fe: f1c1 0712 rsb r7, r1, #18 + 21802: 7b88 ldrb r0, [r1, #14] + 21804: f003 037f and.w r3, r3, #127 ; 0x7f + 21808: 01d2 lsls r2, r2, #7 bmcStoreGlobalSettings& item = store.global.settings; - 2172a: 682e ldr r6, [r5, #0] - 2172c: ea43 7300 orr.w r3, r3, r0, lsl #28 - 21730: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 2180a: 682e ldr r6, [r5, #0] + 2180c: ea43 7300 orr.w r3, r3, r0, lsl #28 + 21810: f402 527e and.w r2, r2, #16256 ; 0x3f80 item.flags = incoming.get32Bits(9); - 21734: 4634 mov r4, r6 - 21736: 4313 orrs r3, r2 - 21738: 7c0a ldrb r2, [r1, #16] - 2173a: 0392 lsls r2, r2, #14 - 2173c: f402 12fe and.w r2, r2, #2080768 ; 0x1fc000 - 21740: 4313 orrs r3, r2 - 21742: 7bca ldrb r2, [r1, #15] - 21744: 0552 lsls r2, r2, #21 - 21746: f002 627e and.w r2, r2, #266338304 ; 0xfe00000 - 2174a: 4313 orrs r3, r2 - 2174c: f844 3f04 str.w r3, [r4, #4]! - 21750: 460b mov r3, r1 + 21814: 4634 mov r4, r6 + 21816: 4313 orrs r3, r2 + 21818: 7c0a ldrb r2, [r1, #16] + 2181a: 0392 lsls r2, r2, #14 + 2181c: f402 12fe and.w r2, r2, #2080768 ; 0x1fc000 + 21820: 4313 orrs r3, r2 + 21822: 7bca ldrb r2, [r1, #15] + 21824: 0552 lsls r2, r2, #21 + 21826: f002 627e and.w r2, r2, #266338304 ; 0xfe00000 + 2182a: 4313 orrs r3, r2 + 2182c: f844 3f04 str.w r3, [r4, #4]! + 21830: 460b mov r3, r1 if((t_offset+4) < size()){ - 21752: f8b1 e003 ldrh.w lr, [r1, #3] - 21756: 18f8 adds r0, r7, r3 + 21832: f8b1 e003 ldrh.w lr, [r1, #3] + 21836: 18f8 adds r0, r7, r3 return 0; - 21758: 2200 movs r2, #0 + 21838: 2200 movs r2, #0 if((t_offset+4) < size()){ - 2175a: 4586 cmp lr, r0 - 2175c: dd15 ble.n 2178a + 2183a: 4586 cmp lr, r0 + 2183c: dd15 ble.n 2186a return BMC_MIDI_ARRAY_TO_32BITS(t_offset, sysex) & BMC_MASK_32; - 2175e: 7dda ldrb r2, [r3, #23] - 21760: 7d98 ldrb r0, [r3, #22] - 21762: f002 027f and.w r2, r2, #127 ; 0x7f - 21766: f893 e013 ldrb.w lr, [r3, #19] - 2176a: 01c0 lsls r0, r0, #7 - 2176c: ea42 720e orr.w r2, r2, lr, lsl #28 - 21770: f400 507e and.w r0, r0, #16256 ; 0x3f80 - 21774: 4302 orrs r2, r0 - 21776: 7d58 ldrb r0, [r3, #21] - 21778: 0380 lsls r0, r0, #14 - 2177a: f400 10fe and.w r0, r0, #2080768 ; 0x1fc000 - 2177e: 4302 orrs r2, r0 - 21780: 7d18 ldrb r0, [r3, #20] - 21782: 0540 lsls r0, r0, #21 - 21784: f000 607e and.w r0, r0, #266338304 ; 0xfe00000 - 21788: 4302 orrs r2, r0 + 2183e: 7dda ldrb r2, [r3, #23] + 21840: 7d98 ldrb r0, [r3, #22] + 21842: f002 027f and.w r2, r2, #127 ; 0x7f + 21846: f893 e013 ldrb.w lr, [r3, #19] + 2184a: 01c0 lsls r0, r0, #7 + 2184c: ea42 720e orr.w r2, r2, lr, lsl #28 + 21850: f400 507e and.w r0, r0, #16256 ; 0x3f80 + 21854: 4302 orrs r2, r0 + 21856: 7d58 ldrb r0, [r3, #21] + 21858: 0380 lsls r0, r0, #14 + 2185a: f400 10fe and.w r0, r0, #2080768 ; 0x1fc000 + 2185e: 4302 orrs r2, r0 + 21860: 7d18 ldrb r0, [r3, #20] + 21862: 0540 lsls r0, r0, #21 + 21864: f000 607e and.w r0, r0, #266338304 ; 0xfe00000 + 21868: 4302 orrs r2, r0 for(uint8_t i = 0; i < 8 ; i++){ - 2178a: 3305 adds r3, #5 + 2186a: 3305 adds r3, #5 item.data[i] = incoming.get32Bits(e); - 2178c: f844 2f04 str.w r2, [r4, #4]! + 2186c: f844 2f04 str.w r2, [r4, #4]! for(uint8_t i = 0; i < 8 ; i++){ - 21790: 459c cmp ip, r3 - 21792: d1de bne.n 21752 - 21794: 3626 adds r6, #38 ; 0x26 - 21796: f101 0715 add.w r7, r1, #21 - 2179a: 460b mov r3, r1 - 2179c: f1c1 0438 rsb r4, r1, #56 ; 0x38 + 21870: 459c cmp ip, r3 + 21872: d1de bne.n 21832 + 21874: 3626 adds r6, #38 ; 0x26 + 21876: f101 0715 add.w r7, r1, #21 + 2187a: 460b mov r3, r1 + 2187c: f1c1 0438 rsb r4, r1, #56 ; 0x38 if((t_offset+2) < size()){ - 217a0: f8b1 c003 ldrh.w ip, [r1, #3] - 217a4: 18e0 adds r0, r4, r3 + 21880: f8b1 c003 ldrh.w ip, [r1, #3] + 21884: 18e0 adds r0, r4, r3 return 0; - 217a6: 2200 movs r2, #0 + 21886: 2200 movs r2, #0 if((t_offset+2) < size()){ - 217a8: 4584 cmp ip, r0 - 217aa: dd0e ble.n 217ca + 21888: 4584 cmp ip, r0 + 2188a: dd0e ble.n 218aa return BMC_MIDI_ARRAY_TO_16BITS(t_offset, sysex) & BMC_MASK_16; - 217ac: f893 203d ldrb.w r2, [r3, #61] ; 0x3d - 217b0: f893 003c ldrb.w r0, [r3, #60] ; 0x3c - 217b4: f002 027f and.w r2, r2, #127 ; 0x7f - 217b8: f893 c03b ldrb.w ip, [r3, #59] ; 0x3b - 217bc: 01c0 lsls r0, r0, #7 - 217be: ea42 328c orr.w r2, r2, ip, lsl #14 - 217c2: f400 507e and.w r0, r0, #16256 ; 0x3f80 - 217c6: 4302 orrs r2, r0 - 217c8: b292 uxth r2, r2 + 2188c: f893 203d ldrb.w r2, [r3, #61] ; 0x3d + 21890: f893 003c ldrb.w r0, [r3, #60] ; 0x3c + 21894: f002 027f and.w r2, r2, #127 ; 0x7f + 21898: f893 c03b ldrb.w ip, [r3, #59] ; 0x3b + 2189c: 01c0 lsls r0, r0, #7 + 2189e: ea42 328c orr.w r2, r2, ip, lsl #14 + 218a2: f400 507e and.w r0, r0, #16256 ; 0x3f80 + 218a6: 4302 orrs r2, r0 + 218a8: b292 uxth r2, r2 for(uint8_t i = 0; i < 7 ; i++){ - 217ca: 3303 adds r3, #3 + 218aa: 3303 adds r3, #3 item.routing[i] = incoming.get16Bits(e); - 217cc: f826 2f02 strh.w r2, [r6, #2]! + 218ac: f826 2f02 strh.w r2, [r6, #2]! for(uint8_t i = 0; i < 7 ; i++){ - 217d0: 42bb cmp r3, r7 - 217d2: d1e5 bne.n 217a0 + 218b0: 42bb cmp r3, r7 + 218b2: d1e5 bne.n 21880 return (settings.data[0]>>14) & 0x0F; - 217d4: 68ab ldr r3, [r5, #8] + 218b4: 68ab ldr r3, [r5, #8] saveSettings(); - 217d6: 4628 mov r0, r5 + 218b6: 4628 mov r0, r5 if(deviceId != settings.getDeviceId()){ - 217d8: f895 702d ldrb.w r7, [r5, #45] ; 0x2d - 217dc: 681b ldr r3, [r3, #0] - 217de: 685b ldr r3, [r3, #4] - 217e0: f3c3 3383 ubfx r3, r3, #14, #4 - 217e4: 1aff subs r7, r7, r3 - 217e6: bf18 it ne - 217e8: 2701 movne r7, #1 + 218b8: f895 702d ldrb.w r7, [r5, #45] ; 0x2d + 218bc: 681b ldr r3, [r3, #0] + 218be: 685b ldr r3, [r3, #4] + 218c0: f3c3 3383 ubfx r3, r3, #14, #4 + 218c4: 1aff subs r7, r7, r3 + 218c6: bf18 it ne + 218c8: 2701 movne r7, #1 saveSettings(); - 217ea: f7f7 ff5d bl 196a8 + 218ca: f7f7 ff5d bl 19788 if(midi.globals.editorConnected()){ - 217ee: 686b ldr r3, [r5, #4] - 217f0: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 217f4: 6ddb ldr r3, [r3, #92] ; 0x5c - 217f6: 075b lsls r3, r3, #29 - 217f8: d503 bpl.n 21802 + 218ce: 686b ldr r3, [r5, #4] + 218d0: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 218d4: 6ddb ldr r3, [r3, #92] ; 0x5c + 218d6: 075b lsls r3, r3, #29 + 218d8: d503 bpl.n 218e2 bitSet(flags, bit); - 217fa: 6b2b ldr r3, [r5, #48] ; 0x30 - 217fc: f043 0304 orr.w r3, r3, #4 - 21800: 632b str r3, [r5, #48] ; 0x30 + 218da: 6b2b ldr r3, [r5, #48] ; 0x30 + 218dc: f043 0304 orr.w r3, r3, #4 + 218e0: 632b str r3, [r5, #48] ; 0x30 struct BMCMidiMessage { - 21802: ac41 add r4, sp, #260 ; 0x104 + 218e2: ac41 add r4, sp, #260 ; 0x104 buff.prepareEditorMessage( - 21804: f895 302e ldrb.w r3, [r5, #46] ; 0x2e - 21808: 2600 movs r6, #0 - 2180a: 4620 mov r0, r4 - 2180c: 9600 str r6, [sp, #0] - 2180e: 6026 str r6, [r4, #0] - 21810: 9301 str r3, [sp, #4] - 21812: 2302 movs r3, #2 - 21814: f895 202d ldrb.w r2, [r5, #45] ; 0x2d - 21818: f895 102c ldrb.w r1, [r5, #44] ; 0x2c - 2181c: 7126 strb r6, [r4, #4] - 2181e: f7f9 fb51 bl 1aec4 + 218e4: f895 302e ldrb.w r3, [r5, #46] ; 0x2e + 218e8: 2600 movs r6, #0 + 218ea: 4620 mov r0, r4 + 218ec: 9600 str r6, [sp, #0] + 218ee: 6026 str r6, [r4, #0] + 218f0: 9301 str r3, [sp, #4] + 218f2: 2302 movs r3, #2 + 218f4: f895 202d ldrb.w r2, [r5, #45] ; 0x2d + 218f8: f895 102c ldrb.w r1, [r5, #44] ; 0x2c + 218fc: 7126 strb r6, [r4, #4] + 218fe: f7f9 fb51 bl 1afa4 uint16_t sysLength = size(); - 21822: f8b4 3003 ldrh.w r3, [r4, #3] + 21902: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 21906: 2bfd cmp r3, #253 ; 0xfd + 21908: d80d bhi.n 21926 uint8_t max = (storage.length()/sizeof(bmcStore)); - 2182a: 8baa ldrh r2, [r5, #28] - 2182c: 4957 ldr r1, [pc, #348] ; (2198c ) - 2182e: 0892 lsrs r2, r2, #2 + 2190a: 8baa ldrh r2, [r5, #28] + 2190c: 4957 ldr r1, [pc, #348] ; (21a6c ) + 2190e: 0892 lsrs r2, r2, #2 void setData2(uint8_t t_data2) { data2 = t_data2; } - 21830: 7126 strb r6, [r4, #4] - 21832: fba1 1202 umull r1, r2, r1, r2 + 21910: 7126 strb r6, [r4, #4] + 21912: fba1 1202 umull r1, r2, r1, r2 sysex[sysLength++] = value; - 21836: 18e1 adds r1, r4, r3 - 21838: 3301 adds r3, #1 - 2183a: 0a52 lsrs r2, r2, #9 + 21916: 18e1 adds r1, r4, r3 + 21918: 3301 adds r3, #1 + 2191a: 0a52 lsrs r2, r2, #9 setData1(value & 0xFF); - 2183c: 70e3 strb r3, [r4, #3] + 2191c: 70e3 strb r3, [r4, #3] sysex[sysLength++] = value; - 2183e: 2a01 cmp r2, #1 - 21840: bf38 it cc - 21842: 2201 movcc r2, #1 - 21844: 714a strb r2, [r1, #5] + 2191e: 2a01 cmp r2, #1 + 21920: bf38 it cc + 21922: 2201 movcc r2, #1 + 21924: 714a strb r2, [r1, #5] appendSysExByte(value & 0x7F); - 21846: f895 102f ldrb.w r1, [r5, #47] ; 0x2f - 2184a: 2201 movs r2, #1 - 2184c: 4620 mov r0, r4 - 2184e: f001 017f and.w r1, r1, #127 ; 0x7f - 21852: f7f9 fa09 bl 1ac68 + 21926: f895 102f ldrb.w r1, [r5, #47] ; 0x2f + 2192a: 2201 movs r2, #1 + 2192c: 4620 mov r0, r4 + 2192e: f001 017f and.w r1, r1, #127 ; 0x7f + 21932: f7f9 fa09 bl 1ad48 buff.appendToSysEx32Bits(store.global.settings.flags); - 21856: f8d5 9000 ldr.w r9, [r5] - 2185a: 464e mov r6, r9 - 2185c: f109 0824 add.w r8, r9, #36 ; 0x24 - 21860: f856 1f04 ldr.w r1, [r6, #4]! - 21864: f7fa f8c4 bl 1b9f0 + 21936: f8d5 9000 ldr.w r9, [r5] + 2193a: 464e mov r6, r9 + 2193c: f109 0824 add.w r8, r9, #36 ; 0x24 + 21940: f856 1f04 ldr.w r1, [r6, #4]! + 21944: f7fa f8c4 bl 1bad0 buff.appendToSysEx32Bits(store.global.settings.data[i]); - 21868: f856 1f04 ldr.w r1, [r6, #4]! - 2186c: 4620 mov r0, r4 - 2186e: f7fa f8bf bl 1b9f0 + 21948: f856 1f04 ldr.w r1, [r6, #4]! + 2194c: 4620 mov r0, r4 + 2194e: f7fa f8bf bl 1bad0 for(uint8_t i = 0 ; i < 8 ; i++){ - 21872: 4546 cmp r6, r8 - 21874: d1f8 bne.n 21868 - 21876: f109 0226 add.w r2, r9, #38 ; 0x26 - 2187a: f109 0134 add.w r1, r9, #52 ; 0x34 + 21952: 4546 cmp r6, r8 + 21954: d1f8 bne.n 21948 + 21956: f109 0226 add.w r2, r9, #38 ; 0x26 + 2195a: f109 0134 add.w r1, r9, #52 ; 0x34 void setData2(uint8_t t_data2) { data2 = t_data2; } - 2187e: 2600 movs r6, #0 - 21880: e001 b.n 21886 + 2195e: 2600 movs r6, #0 + 21960: e001 b.n 21966 for(uint8_t i = 0 ; i < 7 ; i++){ - 21882: 428a cmp r2, r1 - 21884: d029 beq.n 218da - 21886: f8b4 3003 ldrh.w r3, [r4, #3] + 21962: 428a cmp r2, r1 + 21964: d029 beq.n 219ba + 21966: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx16Bits(store.global.settings.routing[i]); - 2188a: f832 0f02 ldrh.w r0, [r2, #2]! + 2196a: f832 0f02 ldrh.w r0, [r2, #2]! if(sysLength + 2196e: 2bfd cmp r3, #253 ; 0xfd + 21970: d8f7 bhi.n 21962 sysex[sysLength++] = value; - 21892: eb04 0c03 add.w ip, r4, r3 - 21896: 3301 adds r3, #1 + 21972: eb04 0c03 add.w ip, r4, r3 + 21976: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 21898: 7126 strb r6, [r4, #4] + 21978: 7126 strb r6, [r4, #4] setData1(value & 0xFF); - 2189a: 70e3 strb r3, [r4, #3] + 2197a: 70e3 strb r3, [r4, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(2,value)); - 2189c: 0b83 lsrs r3, r0, #14 - 2189e: f88c 3005 strb.w r3, [ip, #5] + 2197c: 0b83 lsrs r3, r0, #14 + 2197e: f88c 3005 strb.w r3, [ip, #5] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 218a2: f3c0 1cc6 ubfx ip, r0, #7, #7 - 218a6: f8b4 3003 ldrh.w r3, [r4, #3] + 21982: f3c0 1cc6 ubfx ip, r0, #7, #7 + 21986: f8b4 3003 ldrh.w r3, [r4, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 218aa: f000 007f and.w r0, r0, #127 ; 0x7f + 2198a: f000 007f and.w r0, r0, #127 ; 0x7f if(sysLength + 2198e: 2bfd cmp r3, #253 ; 0xfd + 21990: d8e7 bhi.n 21962 sysex[sysLength++] = value; - 218b2: f103 0e01 add.w lr, r3, #1 - 218b6: 4423 add r3, r4 + 21992: f103 0e01 add.w lr, r3, #1 + 21996: 4423 add r3, r4 setData1(value & 0xFF); - 218b8: f884 e003 strb.w lr, [r4, #3] + 21998: f884 e003 strb.w lr, [r4, #3] sysex[sysLength++] = value; - 218bc: f883 c005 strb.w ip, [r3, #5] + 2199c: f883 c005 strb.w ip, [r3, #5] uint16_t sysLength = size(); - 218c0: f8b4 3003 ldrh.w r3, [r4, #3] + 219a0: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 219ae: d8d8 bhi.n 21962 for(uint8_t i = 0 ; i < 7 ; i++){ - 218d0: 428a cmp r2, r1 + 219b0: 428a cmp r2, r1 sysex[sysLength++] = value; - 218d2: f88c 0005 strb.w r0, [ip, #5] + 219b2: f88c 0005 strb.w r0, [ip, #5] setData1(value & 0xFF); - 218d6: 70e3 strb r3, [r4, #3] - 218d8: d1d5 bne.n 21886 + 219b6: 70e3 strb r3, [r4, #3] + 219b8: d1d5 bne.n 21966 sendToEditor(buff); - 218da: 2300 movs r3, #0 - 218dc: 2601 movs r6, #1 - 218de: 22f7 movs r2, #247 ; 0xf7 - 218e0: a944 add r1, sp, #272 ; 0x110 - 218e2: 4668 mov r0, sp - 218e4: e9cd 633e strd r6, r3, [sp, #248] ; 0xf8 - 218e8: f008 ff0e bl 2a708 - 218ec: 4628 mov r0, r5 - 218ee: e894 000e ldmia.w r4, {r1, r2, r3} - 218f2: f7f8 ffeb bl 1a8cc + 219ba: 2300 movs r3, #0 + 219bc: 2601 movs r6, #1 + 219be: 22f7 movs r2, #247 ; 0xf7 + 219c0: a944 add r1, sp, #272 ; 0x110 + 219c2: 4668 mov r0, sp + 219c4: e9cd 633e strd r6, r3, [sp, #248] ; 0xf8 + 219c8: f008 ff12 bl 2a7f0 + 219cc: 4628 mov r0, r5 + 219ce: e894 000e ldmia.w r4, {r1, r2, r3} + 219d2: f7f8 ffeb bl 1a9ac if(triggerDisconnect){ - 218f6: 2f00 cmp r7, #0 - 218f8: f43f aeca beq.w 21690 + 219d6: 2f00 cmp r7, #0 + 219d8: f43f aeca beq.w 21770 BMC_INFO("Disconnecting from Editor... Bye!!"); - 218fc: 4924 ldr r1, [pc, #144] ; (21990 ) - 218fe: 4821 ldr r0, [pc, #132] ; (21984 ) - 21900: f7f9 f9d6 bl 1acb0 - 21904: 4923 ldr r1, [pc, #140] ; (21994 ) - 21906: 481f ldr r0, [pc, #124] ; (21984 ) - 21908: f7f9 f9d2 bl 1acb0 - 2190c: 481d ldr r0, [pc, #116] ; (21984 ) - 2190e: 4921 ldr r1, [pc, #132] ; (21994 ) - 21910: f7f9 f9ce bl 1acb0 - 21914: 4631 mov r1, r6 - 21916: 481a ldr r0, [pc, #104] ; (21980 ) - 21918: f00a fe16 bl 2c548 - 2191c: 491e ldr r1, [pc, #120] ; (21998 ) - 2191e: 4819 ldr r0, [pc, #100] ; (21984 ) - 21920: f7f9 f9c6 bl 1acb0 - 21924: 491b ldr r1, [pc, #108] ; (21994 ) - 21926: 4817 ldr r0, [pc, #92] ; (21984 ) - 21928: f7f9 f9c2 bl 1acb0 - 2192c: 4919 ldr r1, [pc, #100] ; (21994 ) - 2192e: 4815 ldr r0, [pc, #84] ; (21984 ) - 21930: f7f9 f9be bl 1acb0 - 21934: 4916 ldr r1, [pc, #88] ; (21990 ) - 21936: 4813 ldr r0, [pc, #76] ; (21984 ) - 21938: f7f9 f9ba bl 1acb0 + 219dc: 4924 ldr r1, [pc, #144] ; (21a70 ) + 219de: 4821 ldr r0, [pc, #132] ; (21a64 ) + 219e0: f7f9 f9d6 bl 1ad90 + 219e4: 4923 ldr r1, [pc, #140] ; (21a74 ) + 219e6: 481f ldr r0, [pc, #124] ; (21a64 ) + 219e8: f7f9 f9d2 bl 1ad90 + 219ec: 481d ldr r0, [pc, #116] ; (21a64 ) + 219ee: 4921 ldr r1, [pc, #132] ; (21a74 ) + 219f0: f7f9 f9ce bl 1ad90 + 219f4: 4631 mov r1, r6 + 219f6: 481a ldr r0, [pc, #104] ; (21a60 ) + 219f8: f00a fe1a bl 2c630 + 219fc: 491e ldr r1, [pc, #120] ; (21a78 ) + 219fe: 4819 ldr r0, [pc, #100] ; (21a64 ) + 21a00: f7f9 f9c6 bl 1ad90 + 21a04: 491b ldr r1, [pc, #108] ; (21a74 ) + 21a06: 4817 ldr r0, [pc, #92] ; (21a64 ) + 21a08: f7f9 f9c2 bl 1ad90 + 21a0c: 4919 ldr r1, [pc, #100] ; (21a74 ) + 21a0e: 4815 ldr r0, [pc, #84] ; (21a64 ) + 21a10: f7f9 f9be bl 1ad90 + 21a14: 4916 ldr r1, [pc, #88] ; (21a70 ) + 21a16: 4813 ldr r0, [pc, #76] ; (21a64 ) + 21a18: f7f9 f9ba bl 1ad90 disconnect(true); - 2193c: 4631 mov r1, r6 - 2193e: 4628 mov r0, r5 - 21940: f7ff fb66 bl 21010 - 21944: 68ab ldr r3, [r5, #8] - 21946: 681b ldr r3, [r3, #0] - 21948: 685b ldr r3, [r3, #4] - 2194a: f3c3 3383 ubfx r3, r3, #14, #4 + 21a1c: 4631 mov r1, r6 + 21a1e: 4628 mov r0, r5 + 21a20: f7ff fb66 bl 210f0 + 21a24: 68ab ldr r3, [r5, #8] + 21a26: 681b ldr r3, [r3, #0] + 21a28: 685b ldr r3, [r3, #4] + 21a2a: f3c3 3383 ubfx r3, r3, #14, #4 deviceId = settings.getDeviceId(); - 2194e: f885 302d strb.w r3, [r5, #45] ; 0x2d + 21a2e: f885 302d strb.w r3, [r5, #45] ; 0x2d } - 21952: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 21956: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 21a32: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 21a36: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} sendNotification(BMC_NOTIFY_INVALID_SIZE, sysExLength, true); - 2195a: 2301 movs r3, #1 - 2195c: 224d movs r2, #77 ; 0x4d - 2195e: 210a movs r1, #10 - 21960: 4628 mov r0, r5 - 21962: 9400 str r4, [sp, #0] - 21964: f7f9 f810 bl 1a988 + 21a3a: 2301 movs r3, #1 + 21a3c: 224d movs r2, #77 ; 0x4d + 21a3e: 210a movs r1, #10 + 21a40: 4628 mov r0, r5 + 21a42: 9400 str r4, [sp, #0] + 21a44: f7f9 f810 bl 1aa68 return; - 21968: e692 b.n 21690 + 21a48: e692 b.n 21770 backupGlobalSettings(sysExLength); - 2196a: 214d movs r1, #77 ; 0x4d - 2196c: 4628 mov r0, r5 + 21a4a: 214d movs r1, #77 ; 0x4d + 21a4c: 4628 mov r0, r5 } - 2196e: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 21972: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} + 21a4e: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 21a52: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} backupGlobalSettings(sysExLength); - 21976: f7f7 bb67 b.w 19048 - 2197a: bf00 nop - 2197c: 20003d64 .word 0x20003d64 - 21980: 200023ec .word 0x200023ec - 21984: 20004ba8 .word 0x20004ba8 - 21988: 20003d74 .word 0x20003d74 - 2198c: 55639099 .word 0x55639099 - 21990: 20003c58 .word 0x20003c58 - 21994: 20002758 .word 0x20002758 - 21998: 20003d40 .word 0x20003d40 - -0002199c : + 21a56: f7f7 bb69 b.w 1912c + 21a5a: bf00 nop + 21a5c: 20003e24 .word 0x20003e24 + 21a60: 200023ec .word 0x200023ec + 21a64: 20004c68 .word 0x20004c68 + 21a68: 20003e34 .word 0x20003e34 + 21a6c: 55639099 .word 0x55639099 + 21a70: 20003d18 .word 0x20003d18 + 21a74: 20002760 .word 0x20002760 + 21a78: 20003e00 .word 0x20003e00 + +00021a7c : midi.globals.editorConnected() && - 2199c: 6843 ldr r3, [r0, #4] + 21a7c: 6843 ldr r3, [r0, #4] return bitRead(flags, bit); - 2199e: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 219a2: 6ddb ldr r3, [r3, #92] ; 0x5c + 21a7e: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 21a82: 6ddb ldr r3, [r3, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 219a4: 075a lsls r2, r3, #29 - 219a6: d510 bpl.n 219ca + 21a84: 075a lsls r2, r3, #29 + 21a86: d510 bpl.n 21aaa void BMCEditor::globalSketchBytesData(){ - 219a8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 219ac: 6bc4 ldr r4, [r0, #60] ; 0x3c - 219ae: f5ad 7d08 sub.w sp, sp, #544 ; 0x220 - 219b2: f890 302d ldrb.w r3, [r0, #45] ; 0x2d - 219b6: 4606 mov r6, r0 + 21a88: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 21a8c: 6bc4 ldr r4, [r0, #60] ; 0x3c + 21a8e: f5ad 7d08 sub.w sp, sp, #544 ; 0x220 + 21a92: f890 302d ldrb.w r3, [r0, #45] ; 0x2d + 21a96: 4606 mov r6, r0 midi.globals.editorConnected() && - 219b8: 7a62 ldrb r2, [r4, #9] - 219ba: f890 502c ldrb.w r5, [r0, #44] ; 0x2c - 219be: 429a cmp r2, r3 - 219c0: d004 beq.n 219cc -} - 219c2: f50d 7d08 add.w sp, sp, #544 ; 0x220 - 219c6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 219ca: 4770 bx lr + 21a98: 7a62 ldrb r2, [r4, #9] + 21a9a: f890 502c ldrb.w r5, [r0, #44] ; 0x2c + 21a9e: 429a cmp r2, r3 + 21aa0: d004 beq.n 21aac +} + 21aa2: f50d 7d08 add.w sp, sp, #544 ; 0x220 + 21aa6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 21aaa: 4770 bx lr getMessageDeviceId() == deviceId && - 219cc: 7821 ldrb r1, [r4, #0] - 219ce: 42a9 cmp r1, r5 - 219d0: d1f7 bne.n 219c2 + 21aac: 7821 ldrb r1, [r4, #0] + 21aae: 42a9 cmp r1, r5 + 21ab0: d1f7 bne.n 21aa2 incoming.peekSysEx(4) == deviceId && - 219d2: f8b4 3003 ldrh.w r3, [r4, #3] - 219d6: 2b0a cmp r3, #10 - 219d8: d9f3 bls.n 219c2 - 219da: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 21ab2: f8b4 3003 ldrh.w r3, [r4, #3] + 21ab6: 2b0a cmp r3, #10 + 21ab8: d9f3 bls.n 21aa2 + 21aba: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 219de: f3c3 0740 ubfx r7, r3, #1, #1 - 219e2: 079b lsls r3, r3, #30 - 219e4: d4ed bmi.n 219c2 + 21abe: f3c3 0740 ubfx r7, r3, #1, #1 + 21ac2: 079b lsls r3, r3, #30 + 21ac4: d4ed bmi.n 21aa2 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 219e6: 7ae3 ldrb r3, [r4, #11] - 219e8: 7b24 ldrb r4, [r4, #12] - 219ea: 01db lsls r3, r3, #7 - 219ec: f004 047f and.w r4, r4, #127 ; 0x7f - 219f0: f403 537e and.w r3, r3, #16256 ; 0x3f80 - 219f4: ea44 0803 orr.w r8, r4, r3 + 21ac6: 7ae3 ldrb r3, [r4, #11] + 21ac8: 7b24 ldrb r4, [r4, #12] + 21aca: 01db lsls r3, r3, #7 + 21acc: f004 047f and.w r4, r4, #127 ; 0x7f + 21ad0: f403 537e and.w r3, r3, #16256 ; 0x3f80 + 21ad4: ea44 0803 orr.w r8, r4, r3 if(index>0 && index>=BMC_MAX_SKETCH_BYTES){ - 219f8: f1b8 0f03 cmp.w r8, #3 - 219fc: dd09 ble.n 21a12 + 21ad8: f1b8 0f03 cmp.w r8, #3 + 21adc: dd09 ble.n 21af2 sendNotification(BMC_NOTIFY_INVALID_SKETCH_BYTE_DATA, index, true); - 219fe: 2301 movs r3, #1 - 21a00: 4642 mov r2, r8 - 21a02: 2111 movs r1, #17 - 21a04: 9700 str r7, [sp, #0] - 21a06: f7f8 ffbf bl 1a988 -} - 21a0a: f50d 7d08 add.w sp, sp, #544 ; 0x220 - 21a0e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 21ade: 2301 movs r3, #1 + 21ae0: 4642 mov r2, r8 + 21ae2: 2111 movs r1, #17 + 21ae4: 9700 str r7, [sp, #0] + 21ae6: f7f8 ffbf bl 1aa68 +} + 21aea: f50d 7d08 add.w sp, sp, #544 ; 0x220 + 21aee: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} struct BMCMidiMessage { - 21a12: ac47 add r4, sp, #284 ; 0x11c + 21af2: ac47 add r4, sp, #284 ; 0x11c buff.prepareEditorMessage( - 21a14: 230a movs r3, #10 - 21a16: e9cd 7800 strd r7, r8, [sp] - 21a1a: 4620 mov r0, r4 - 21a1c: 6027 str r7, [r4, #0] - 21a1e: 7127 strb r7, [r4, #4] - 21a20: f7f9 fa50 bl 1aec4 + 21af4: 230a movs r3, #10 + 21af6: e9cd 7800 strd r7, r8, [sp] + 21afa: 4620 mov r0, r4 + 21afc: 6027 str r7, [r4, #0] + 21afe: 7127 strb r7, [r4, #4] + 21b00: f7f9 fa50 bl 1afa4 uint16_t sysLength = size(); - 21a24: f8b4 5003 ldrh.w r5, [r4, #3] + 21b04: f8b4 5003 ldrh.w r5, [r4, #3] if(sysLength + 21b08: 2dfd cmp r5, #253 ; 0xfd + 21b0a: d807 bhi.n 21b1c sysex[sysLength++] = value; - 21a2c: 1c6a adds r2, r5, #1 - 21a2e: 1963 adds r3, r4, r5 + 21b0c: 1c6a adds r2, r5, #1 + 21b0e: 1963 adds r3, r4, r5 void setData2(uint8_t t_data2) { data2 = t_data2; } - 21a30: 7127 strb r7, [r4, #4] + 21b10: 7127 strb r7, [r4, #4] setData1(value & 0xFF); - 21a32: 70e2 strb r2, [r4, #3] + 21b12: 70e2 strb r2, [r4, #3] sysex[sysLength++] = value; - 21a34: 2204 movs r2, #4 - 21a36: f8b4 5003 ldrh.w r5, [r4, #3] - 21a3a: 715a strb r2, [r3, #5] + 21b14: 2204 movs r2, #4 + 21b16: f8b4 5003 ldrh.w r5, [r4, #3] + 21b1a: 715a strb r2, [r3, #5] BMCSketchByteData data = BMCBuildData::getSketchByteData(index); - 21a3c: fa5f f188 uxtb.w r1, r8 - 21a40: a840 add r0, sp, #256 ; 0x100 - 21a42: f7e5 fe0f bl 7664 + 21b1c: fa5f f188 uxtb.w r1, r8 + 21b20: a840 add r0, sp, #256 ; 0x100 + 21b22: f7e5 fd6f bl 7604 if(i == n){ - 21a46: ab40 add r3, sp, #256 ; 0x100 - 21a48: a945 add r1, sp, #276 ; 0x114 + 21b26: ab40 add r3, sp, #256 ; 0x100 + 21b28: a945 add r1, sp, #276 ; 0x114 void setData2(uint8_t t_data2) { data2 = t_data2; } - 21a4a: f04f 0c00 mov.w ip, #0 + 21b2a: f04f 0c00 mov.w ip, #0 if(sysLength + 21b2e: 2dfd cmp r5, #253 ; 0xfd + 21b30: d80a bhi.n 21b48 sysex[sysLength++] = value; - 21a52: 1c6f adds r7, r5, #1 + 21b32: 1c6f adds r7, r5, #1 appendSysExByte(value & 0x7F); - 21a54: 781a ldrb r2, [r3, #0] + 21b34: 781a ldrb r2, [r3, #0] sysex[sysLength++] = value; - 21a56: 1960 adds r0, r4, r5 + 21b36: 1960 adds r0, r4, r5 void setData2(uint8_t t_data2) { data2 = t_data2; } - 21a58: f884 c004 strb.w ip, [r4, #4] + 21b38: f884 c004 strb.w ip, [r4, #4] appendSysExByte(value & 0x7F); - 21a5c: f002 027f and.w r2, r2, #127 ; 0x7f + 21b3c: f002 027f and.w r2, r2, #127 ; 0x7f setData1(value & 0xFF); - 21a60: 70e7 strb r7, [r4, #3] - 21a62: f8b4 5003 ldrh.w r5, [r4, #3] + 21b40: 70e7 strb r7, [r4, #3] + 21b42: f8b4 5003 ldrh.w r5, [r4, #3] sysex[sysLength++] = value; - 21a66: 7142 strb r2, [r0, #5] + 21b46: 7142 strb r2, [r0, #5] if(i == n){ - 21a68: 3301 adds r3, #1 - 21a6a: 4299 cmp r1, r3 - 21a6c: d1ef bne.n 21a4e + 21b48: 3301 adds r3, #1 + 21b4a: 4299 cmp r1, r3 + 21b4c: d1ef bne.n 21b2e if(sysLength + 21b4e: 2dfd cmp r5, #253 ; 0xfd + 21b50: d911 bls.n 21b76 sendToEditor(buff); - 21a72: 2301 movs r3, #1 - 21a74: 2100 movs r1, #0 - 21a76: 22f7 movs r2, #247 ; 0xf7 - 21a78: 4668 mov r0, sp - 21a7a: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 - 21a7e: a94a add r1, sp, #296 ; 0x128 - 21a80: f008 fe42 bl 2a708 - 21a84: 4630 mov r0, r6 - 21a86: e894 000e ldmia.w r4, {r1, r2, r3} - 21a8a: f7f8 ff1f bl 1a8cc -} - 21a8e: f50d 7d08 add.w sp, sp, #544 ; 0x220 - 21a92: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 21b52: 2301 movs r3, #1 + 21b54: 2100 movs r1, #0 + 21b56: 22f7 movs r2, #247 ; 0xf7 + 21b58: 4668 mov r0, sp + 21b5a: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 + 21b5e: a94a add r1, sp, #296 ; 0x128 + 21b60: f008 fe46 bl 2a7f0 + 21b64: 4630 mov r0, r6 + 21b66: e894 000e ldmia.w r4, {r1, r2, r3} + 21b6a: f7f8 ff1f bl 1a9ac +} + 21b6e: f50d 7d08 add.w sp, sp, #544 ; 0x220 + 21b72: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} sysex[sysLength++] = value; - 21a96: 1962 adds r2, r4, r5 - 21a98: 2300 movs r3, #0 - 21a9a: 3501 adds r5, #1 - 21a9c: 7153 strb r3, [r2, #5] + 21b76: 1962 adds r2, r4, r5 + 21b78: 2300 movs r3, #0 + 21b7a: 3501 adds r5, #1 + 21b7c: 7153 strb r3, [r2, #5] setData1(value & 0xFF); - 21a9e: 70e5 strb r5, [r4, #3] + 21b7e: 70e5 strb r5, [r4, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 21aa0: 7123 strb r3, [r4, #4] - 21aa2: f8b4 3003 ldrh.w r3, [r4, #3] + 21b80: 7123 strb r3, [r4, #4] + 21b82: f8b4 3003 ldrh.w r3, [r4, #3] buff.appendToSysEx8Bits(data.min); - 21aa6: f89d 2116 ldrb.w r2, [sp, #278] ; 0x116 + 21b86: f89d 2116 ldrb.w r2, [sp, #278] ; 0x116 if(sysLength + 21b8a: 2bfd cmp r3, #253 ; 0xfd + 21b8c: d8e1 bhi.n 21b52 sysex[sysLength++] = value; - 21aae: 1c59 adds r1, r3, #1 - 21ab0: 4423 add r3, r4 + 21b8e: 1c59 adds r1, r3, #1 + 21b90: 4423 add r3, r4 setData1(value & 0xFF); - 21ab2: 70e1 strb r1, [r4, #3] + 21b92: 70e1 strb r1, [r4, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 21ab4: 09d1 lsrs r1, r2, #7 + 21b94: 09d1 lsrs r1, r2, #7 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 21ab6: f002 027f and.w r2, r2, #127 ; 0x7f + 21b96: f002 027f and.w r2, r2, #127 ; 0x7f sysex[sysLength++] = value; - 21aba: 7159 strb r1, [r3, #5] + 21b9a: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 21abc: f8b4 3003 ldrh.w r3, [r4, #3] + 21b9c: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 21ba0: 2bfd cmp r3, #253 ; 0xfd + 21ba2: d8d6 bhi.n 21b52 sysex[sysLength++] = value; - 21ac4: 1c59 adds r1, r3, #1 - 21ac6: 4423 add r3, r4 + 21ba4: 1c59 adds r1, r3, #1 + 21ba6: 4423 add r3, r4 setData1(value & 0xFF); - 21ac8: 70e1 strb r1, [r4, #3] + 21ba8: 70e1 strb r1, [r4, #3] sysex[sysLength++] = value; - 21aca: 715a strb r2, [r3, #5] + 21baa: 715a strb r2, [r3, #5] buff.appendToSysEx8Bits(data.max); - 21acc: f8b4 3003 ldrh.w r3, [r4, #3] - 21ad0: f89d 2117 ldrb.w r2, [sp, #279] ; 0x117 + 21bac: f8b4 3003 ldrh.w r3, [r4, #3] + 21bb0: f89d 2117 ldrb.w r2, [sp, #279] ; 0x117 if(sysLength + 21bba: d8ca bhi.n 21b52 sysex[sysLength++] = value; - 21adc: 1c58 adds r0, r3, #1 - 21ade: 4423 add r3, r4 + 21bbc: 1c58 adds r0, r3, #1 + 21bbe: 4423 add r3, r4 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 21ae0: f002 027f and.w r2, r2, #127 ; 0x7f + 21bc0: f002 027f and.w r2, r2, #127 ; 0x7f setData1(value & 0xFF); - 21ae4: 70e0 strb r0, [r4, #3] + 21bc4: 70e0 strb r0, [r4, #3] sysex[sysLength++] = value; - 21ae6: 7159 strb r1, [r3, #5] + 21bc6: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 21ae8: f8b4 3003 ldrh.w r3, [r4, #3] + 21bc8: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 21bcc: 2bfd cmp r3, #253 ; 0xfd + 21bce: d8c0 bhi.n 21b52 sysex[sysLength++] = value; - 21af0: 1c59 adds r1, r3, #1 - 21af2: 4423 add r3, r4 + 21bd0: 1c59 adds r1, r3, #1 + 21bd2: 4423 add r3, r4 setData1(value & 0xFF); - 21af4: 70e1 strb r1, [r4, #3] + 21bd4: 70e1 strb r1, [r4, #3] sysex[sysLength++] = value; - 21af6: 715a strb r2, [r3, #5] + 21bd6: 715a strb r2, [r3, #5] buff.appendToSysEx8Bits(data.step); - 21af8: f8b4 3003 ldrh.w r3, [r4, #3] - 21afc: f89d 2118 ldrb.w r2, [sp, #280] ; 0x118 + 21bd8: f8b4 3003 ldrh.w r3, [r4, #3] + 21bdc: f89d 2118 ldrb.w r2, [sp, #280] ; 0x118 if(sysLength + 21be6: d8b4 bhi.n 21b52 sysex[sysLength++] = value; - 21b08: 1c58 adds r0, r3, #1 - 21b0a: 4423 add r3, r4 + 21be8: 1c58 adds r0, r3, #1 + 21bea: 4423 add r3, r4 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 21b0c: f002 027f and.w r2, r2, #127 ; 0x7f + 21bec: f002 027f and.w r2, r2, #127 ; 0x7f setData1(value & 0xFF); - 21b10: 70e0 strb r0, [r4, #3] + 21bf0: 70e0 strb r0, [r4, #3] sysex[sysLength++] = value; - 21b12: 7159 strb r1, [r3, #5] + 21bf2: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 21b14: f8b4 3003 ldrh.w r3, [r4, #3] + 21bf4: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 21bf8: 2bfd cmp r3, #253 ; 0xfd + 21bfa: d8aa bhi.n 21b52 sysex[sysLength++] = value; - 21b1c: 1c59 adds r1, r3, #1 - 21b1e: 4423 add r3, r4 + 21bfc: 1c59 adds r1, r3, #1 + 21bfe: 4423 add r3, r4 setData1(value & 0xFF); - 21b20: 70e1 strb r1, [r4, #3] + 21c00: 70e1 strb r1, [r4, #3] sysex[sysLength++] = value; - 21b22: 715a strb r2, [r3, #5] + 21c02: 715a strb r2, [r3, #5] buff.appendToSysEx8Bits(data.formatType); - 21b24: f8b4 3003 ldrh.w r3, [r4, #3] - 21b28: f89d 2119 ldrb.w r2, [sp, #281] ; 0x119 + 21c04: f8b4 3003 ldrh.w r3, [r4, #3] + 21c08: f89d 2119 ldrb.w r2, [sp, #281] ; 0x119 if(sysLength + 21c12: d89e bhi.n 21b52 sysex[sysLength++] = value; - 21b34: 1c58 adds r0, r3, #1 - 21b36: 4423 add r3, r4 + 21c14: 1c58 adds r0, r3, #1 + 21c16: 4423 add r3, r4 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 21b38: f002 027f and.w r2, r2, #127 ; 0x7f + 21c18: f002 027f and.w r2, r2, #127 ; 0x7f setData1(value & 0xFF); - 21b3c: 70e0 strb r0, [r4, #3] + 21c1c: 70e0 strb r0, [r4, #3] sysex[sysLength++] = value; - 21b3e: 7159 strb r1, [r3, #5] + 21c1e: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 21b40: f8b4 3003 ldrh.w r3, [r4, #3] + 21c20: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 21c24: 2bfd cmp r3, #253 ; 0xfd + 21c26: d894 bhi.n 21b52 sysex[sysLength++] = value; - 21b48: 1c59 adds r1, r3, #1 - 21b4a: 4423 add r3, r4 + 21c28: 1c59 adds r1, r3, #1 + 21c2a: 4423 add r3, r4 setData1(value & 0xFF); - 21b4c: 70e1 strb r1, [r4, #3] + 21c2c: 70e1 strb r1, [r4, #3] sysex[sysLength++] = value; - 21b4e: 715a strb r2, [r3, #5] + 21c2e: 715a strb r2, [r3, #5] buff.appendToSysEx8Bits(data.formatValue); - 21b50: f8b4 3003 ldrh.w r3, [r4, #3] - 21b54: f89d 211a ldrb.w r2, [sp, #282] ; 0x11a + 21c30: f8b4 3003 ldrh.w r3, [r4, #3] + 21c34: f89d 211a ldrb.w r2, [sp, #282] ; 0x11a if(sysLength + 21c3e: d888 bhi.n 21b52 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 21b60: f002 017f and.w r1, r2, #127 ; 0x7f + 21c40: f002 017f and.w r1, r2, #127 ; 0x7f sysex[sysLength++] = value; - 21b64: 1c5a adds r2, r3, #1 - 21b66: 4423 add r3, r4 + 21c44: 1c5a adds r2, r3, #1 + 21c46: 4423 add r3, r4 setData1(value & 0xFF); - 21b68: 70e2 strb r2, [r4, #3] + 21c48: 70e2 strb r2, [r4, #3] sysex[sysLength++] = value; - 21b6a: 7158 strb r0, [r3, #5] + 21c4a: 7158 strb r0, [r3, #5] uint16_t sysLength = size(); - 21b6c: f8b4 3003 ldrh.w r3, [r4, #3] + 21c4c: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 21c50: 2bfd cmp r3, #253 ; 0xfd + 21c52: f63f af7e bhi.w 21b52 sysex[sysLength++] = value; - 21b76: 1c58 adds r0, r3, #1 - 21b78: 4423 add r3, r4 + 21c56: 1c58 adds r0, r3, #1 + 21c58: 4423 add r3, r4 buff.appendToSysEx8Bits(data.formatAppend); - 21b7a: f89d 211b ldrb.w r2, [sp, #283] ; 0x11b - 21b7e: 7159 strb r1, [r3, #5] + 21c5a: f89d 211b ldrb.w r2, [sp, #283] ; 0x11b + 21c5e: 7159 strb r1, [r3, #5] setData1(value & 0xFF); - 21b80: 70e0 strb r0, [r4, #3] + 21c60: 70e0 strb r0, [r4, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 21b82: 09d1 lsrs r1, r2, #7 + 21c62: 09d1 lsrs r1, r2, #7 uint16_t sysLength = size(); - 21b84: f8b4 3003 ldrh.w r3, [r4, #3] + 21c64: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 21c68: 2bfd cmp r3, #253 ; 0xfd + 21c6a: f63f af72 bhi.w 21b52 sysex[sysLength++] = value; - 21b8e: 1c58 adds r0, r3, #1 - 21b90: 4423 add r3, r4 + 21c6e: 1c58 adds r0, r3, #1 + 21c70: 4423 add r3, r4 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 21b92: f002 027f and.w r2, r2, #127 ; 0x7f + 21c72: f002 027f and.w r2, r2, #127 ; 0x7f setData1(value & 0xFF); - 21b96: 70e0 strb r0, [r4, #3] + 21c76: 70e0 strb r0, [r4, #3] sysex[sysLength++] = value; - 21b98: 7159 strb r1, [r3, #5] + 21c78: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 21b9a: f8b4 3003 ldrh.w r3, [r4, #3] + 21c7a: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 21c7e: 2bfd cmp r3, #253 ; 0xfd + 21c80: f63f af67 bhi.w 21b52 sysex[sysLength++] = value; - 21ba4: 18e1 adds r1, r4, r3 - 21ba6: 3301 adds r3, #1 - 21ba8: 714a strb r2, [r1, #5] + 21c84: 18e1 adds r1, r4, r3 + 21c86: 3301 adds r3, #1 + 21c88: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 21baa: 70e3 strb r3, [r4, #3] + 21c8a: 70e3 strb r3, [r4, #3] return true; - 21bac: e761 b.n 21a72 - 21bae: bf00 nop + 21c8c: e761 b.n 21b52 + 21c8e: bf00 nop -00021bb0 : +00021c90 : midi.globals.editorConnected() && - 21bb0: 6842 ldr r2, [r0, #4] - 21bb2: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 21bb6: 6dd2 ldr r2, [r2, #92] ; 0x5c + 21c90: 6842 ldr r2, [r0, #4] + 21c92: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 21c96: 6dd2 ldr r2, [r2, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 21bb8: 0752 lsls r2, r2, #29 - 21bba: d400 bmi.n 21bbe - 21bbc: 4770 bx lr - 21bbe: 6bc2 ldr r2, [r0, #60] ; 0x3c + 21c98: 0752 lsls r2, r2, #29 + 21c9a: d400 bmi.n 21c9e + 21c9c: 4770 bx lr + 21c9e: 6bc2 ldr r2, [r0, #60] ; 0x3c void BMCEditor::globalEditorFeedback(bool write){ - 21bc0: b500 push {lr} + 21ca0: b500 push {lr} midi.globals.editorConnected() && - 21bc2: f890 e02d ldrb.w lr, [r0, #45] ; 0x2d - 21bc6: f892 c009 ldrb.w ip, [r2, #9] - 21bca: 45e6 cmp lr, ip - 21bcc: d001 beq.n 21bd2 + 21ca2: f890 e02d ldrb.w lr, [r0, #45] ; 0x2d + 21ca6: f892 c009 ldrb.w ip, [r2, #9] + 21caa: 45e6 cmp lr, ip + 21cac: d001 beq.n 21cb2 } - 21bce: f85d fb04 ldr.w pc, [sp], #4 + 21cae: f85d fb04 ldr.w pc, [sp], #4 getMessageDeviceId() == deviceId && - 21bd2: f890 e02c ldrb.w lr, [r0, #44] ; 0x2c - 21bd6: f892 c000 ldrb.w ip, [r2] - 21bda: 45e6 cmp lr, ip - 21bdc: d1f7 bne.n 21bce + 21cb2: f890 e02c ldrb.w lr, [r0, #44] ; 0x2c + 21cb6: f892 c000 ldrb.w ip, [r2] + 21cba: 45e6 cmp lr, ip + 21cbc: d1f7 bne.n 21cae incoming.peekSysEx(4) == deviceId && - 21bde: f8b2 2003 ldrh.w r2, [r2, #3] - 21be2: 2a0a cmp r2, #10 - 21be4: d9f3 bls.n 21bce - 21be6: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 21cbe: f8b2 2003 ldrh.w r2, [r2, #3] + 21cc2: 2a0a cmp r2, #10 + 21cc4: d9f3 bls.n 21cae + 21cc6: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 21bea: 079b lsls r3, r3, #30 - 21bec: d4ef bmi.n 21bce - 21bee: f85d eb04 ldr.w lr, [sp], #4 - 21bf2: f7f9 ba7d b.w 1b0f0 - 21bf6: bf00 nop + 21cca: 079b lsls r3, r3, #30 + 21ccc: d4ef bmi.n 21cae + 21cce: f85d eb04 ldr.w lr, [sp], #4 + 21cd2: f7f9 ba7d b.w 1b1d0 + 21cd6: bf00 nop -00021bf8 : +00021cd8 : midi.globals.editorConnected() && - 21bf8: 6842 ldr r2, [r0, #4] - 21bfa: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 21bfe: 6dd2 ldr r2, [r2, #92] ; 0x5c + 21cd8: 6842 ldr r2, [r0, #4] + 21cda: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 21cde: 6dd2 ldr r2, [r2, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 21c00: 0752 lsls r2, r2, #29 - 21c02: d505 bpl.n 21c10 - 21c04: 6bc2 ldr r2, [r0, #60] ; 0x3c + 21ce0: 0752 lsls r2, r2, #29 + 21ce2: d505 bpl.n 21cf0 + 21ce4: 6bc2 ldr r2, [r0, #60] ; 0x3c midi.globals.editorConnected() && - 21c06: f890 c02d ldrb.w ip, [r0, #45] ; 0x2d - 21c0a: 7a51 ldrb r1, [r2, #9] - 21c0c: 458c cmp ip, r1 - 21c0e: d000 beq.n 21c12 + 21ce6: f890 c02d ldrb.w ip, [r0, #45] ; 0x2d + 21cea: 7a51 ldrb r1, [r2, #9] + 21cec: 458c cmp ip, r1 + 21cee: d000 beq.n 21cf2 } - 21c10: 4770 bx lr + 21cf0: 4770 bx lr getMessageDeviceId() == deviceId && - 21c12: f890 c02c ldrb.w ip, [r0, #44] ; 0x2c - 21c16: 7811 ldrb r1, [r2, #0] - 21c18: 458c cmp ip, r1 - 21c1a: d1f9 bne.n 21c10 + 21cf2: f890 c02c ldrb.w ip, [r0, #44] ; 0x2c + 21cf6: 7811 ldrb r1, [r2, #0] + 21cf8: 458c cmp ip, r1 + 21cfa: d1f9 bne.n 21cf0 incoming.peekSysEx(4) == deviceId && - 21c1c: f8b2 2003 ldrh.w r2, [r2, #3] - 21c20: 2a0a cmp r2, #10 - 21c22: d9f5 bls.n 21c10 - 21c24: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 21cfc: f8b2 2003 ldrh.w r2, [r2, #3] + 21d00: 2a0a cmp r2, #10 + 21d02: d9f5 bls.n 21cf0 + 21d04: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 21c28: 079b lsls r3, r3, #30 - 21c2a: d4f1 bmi.n 21c10 - 21c2c: f7fa b92e b.w 1be8c + 21d08: 079b lsls r3, r3, #30 + 21d0a: d4f1 bmi.n 21cf0 + 21d0c: f7fa b92e b.w 1bf6c -00021c30 : +00021d10 : midi.globals.editorConnected() && - 21c30: 6842 ldr r2, [r0, #4] - 21c32: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 21c36: 6dd2 ldr r2, [r2, #92] ; 0x5c + 21d10: 6842 ldr r2, [r0, #4] + 21d12: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 21d16: 6dd2 ldr r2, [r2, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 21c38: 0752 lsls r2, r2, #29 - 21c3a: d400 bmi.n 21c3e - 21c3c: 4770 bx lr - 21c3e: 6bc2 ldr r2, [r0, #60] ; 0x3c + 21d18: 0752 lsls r2, r2, #29 + 21d1a: d400 bmi.n 21d1e + 21d1c: 4770 bx lr + 21d1e: 6bc2 ldr r2, [r0, #60] ; 0x3c void BMCEditor::globalEditorMessenger(bool write){ - 21c40: b500 push {lr} + 21d20: b500 push {lr} midi.globals.editorConnected() && - 21c42: f890 e02d ldrb.w lr, [r0, #45] ; 0x2d - 21c46: f892 c009 ldrb.w ip, [r2, #9] - 21c4a: 45e6 cmp lr, ip - 21c4c: d001 beq.n 21c52 + 21d22: f890 e02d ldrb.w lr, [r0, #45] ; 0x2d + 21d26: f892 c009 ldrb.w ip, [r2, #9] + 21d2a: 45e6 cmp lr, ip + 21d2c: d001 beq.n 21d32 } - 21c4e: f85d fb04 ldr.w pc, [sp], #4 + 21d2e: f85d fb04 ldr.w pc, [sp], #4 getMessageDeviceId() == deviceId && - 21c52: f890 e02c ldrb.w lr, [r0, #44] ; 0x2c - 21c56: f892 c000 ldrb.w ip, [r2] - 21c5a: 45e6 cmp lr, ip - 21c5c: d1f7 bne.n 21c4e + 21d32: f890 e02c ldrb.w lr, [r0, #44] ; 0x2c + 21d36: f892 c000 ldrb.w ip, [r2] + 21d3a: 45e6 cmp lr, ip + 21d3c: d1f7 bne.n 21d2e incoming.peekSysEx(4) == deviceId && - 21c5e: f8b2 2003 ldrh.w r2, [r2, #3] - 21c62: 2a0a cmp r2, #10 - 21c64: d9f3 bls.n 21c4e - 21c66: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 21d3e: f8b2 2003 ldrh.w r2, [r2, #3] + 21d42: 2a0a cmp r2, #10 + 21d44: d9f3 bls.n 21d2e + 21d46: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 21c6a: 079b lsls r3, r3, #30 - 21c6c: d4ef bmi.n 21c4e - 21c6e: f85d eb04 ldr.w lr, [sp], #4 - 21c72: f7f9 b97b b.w 1af6c - 21c76: bf00 nop + 21d4a: 079b lsls r3, r3, #30 + 21d4c: d4ef bmi.n 21d2e + 21d4e: f85d eb04 ldr.w lr, [sp], #4 + 21d52: f7f9 b97b b.w 1b04c + 21d56: bf00 nop -00021c78 : +00021d58 : return incoming.sysex[8]; - 21c78: 6bc2 ldr r2, [r0, #60] ; 0x3c + 21d58: 6bc2 ldr r2, [r0, #60] ; 0x3c void BMCEditor::globalProcessMessage(){ - 21c7a: b510 push {r4, lr} + 21d5a: b510 push {r4, lr} switch(getMessageRequestId()){ - 21c7c: 7b53 ldrb r3, [r2, #13] + 21d5c: 7b53 ldrb r3, [r2, #13] void BMCEditor::globalProcessMessage(){ - 21c7e: 4604 mov r4, r0 + 21d5e: 4604 mov r4, r0 switch(getMessageRequestId()){ - 21c80: 2b7d cmp r3, #125 ; 0x7d - 21c82: d847 bhi.n 21d14 - 21c84: e8df f003 tbb [pc, r3] - 21c88: 464f4b47 .word 0x464f4b47 - 21c8c: 465f5746 .word 0x465f5746 - 21c90: 6f6b3f67 .word 0x6f6b3f67 - 21c94: 9894468c .word 0x9894468c - 21c98: b8b0a8a0 .word 0xb8b0a8a0 - 21c9c: 464646d7 .word 0x464646d7 - 21ca0: 46464646 .word 0x46464646 - 21ca4: 46464646 .word 0x46464646 - 21ca8: 46464646 .word 0x46464646 - 21cac: 46464646 .word 0x46464646 - 21cb0: 46464646 .word 0x46464646 - 21cb4: 46464646 .word 0x46464646 - 21cb8: 46464646 .word 0x46464646 - 21cbc: 46464646 .word 0x46464646 - 21cc0: 46464646 .word 0x46464646 - 21cc4: 46464646 .word 0x46464646 - 21cc8: 46464646 .word 0x46464646 - 21ccc: 46464646 .word 0x46464646 - 21cd0: 46464646 .word 0x46464646 - 21cd4: 46464646 .word 0x46464646 - 21cd8: 46464646 .word 0x46464646 - 21cdc: 46464646 .word 0x46464646 - 21ce0: 46464646 .word 0x46464646 - 21ce4: 46464646 .word 0x46464646 - 21ce8: 46464646 .word 0x46464646 - 21cec: 46464646 .word 0x46464646 - 21cf0: 46464646 .word 0x46464646 - 21cf4: 46464646 .word 0x46464646 - 21cf8: 46464646 .word 0x46464646 - 21cfc: 46464646 .word 0x46464646 - 21d00: 46464646 .word 0x46464646 - 21d04: db46 .short 0xdb46 + 21d60: 2b7d cmp r3, #125 ; 0x7d + 21d62: d847 bhi.n 21df4 + 21d64: e8df f003 tbb [pc, r3] + 21d68: 464f4b47 .word 0x464f4b47 + 21d6c: 465f5746 .word 0x465f5746 + 21d70: 6f6b3f67 .word 0x6f6b3f67 + 21d74: 9894468c .word 0x9894468c + 21d78: b8b0a8a0 .word 0xb8b0a8a0 + 21d7c: 464646d7 .word 0x464646d7 + 21d80: 46464646 .word 0x46464646 + 21d84: 46464646 .word 0x46464646 + 21d88: 46464646 .word 0x46464646 + 21d8c: 46464646 .word 0x46464646 + 21d90: 46464646 .word 0x46464646 + 21d94: 46464646 .word 0x46464646 + 21d98: 46464646 .word 0x46464646 + 21d9c: 46464646 .word 0x46464646 + 21da0: 46464646 .word 0x46464646 + 21da4: 46464646 .word 0x46464646 + 21da8: 46464646 .word 0x46464646 + 21dac: 46464646 .word 0x46464646 + 21db0: 46464646 .word 0x46464646 + 21db4: 46464646 .word 0x46464646 + 21db8: 46464646 .word 0x46464646 + 21dbc: 46464646 .word 0x46464646 + 21dc0: 46464646 .word 0x46464646 + 21dc4: 46464646 .word 0x46464646 + 21dc8: 46464646 .word 0x46464646 + 21dcc: 46464646 .word 0x46464646 + 21dd0: 46464646 .word 0x46464646 + 21dd4: 46464646 .word 0x46464646 + 21dd8: 46464646 .word 0x46464646 + 21ddc: 46464646 .word 0x46464646 + 21de0: 46464646 .word 0x46464646 + 21de4: db46 .short 0xdb46 midi.globals.editorConnected() && - 21d06: 6843 ldr r3, [r0, #4] - 21d08: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 21d0c: 6ddb ldr r3, [r3, #92] ; 0x5c + 21de6: 6843 ldr r3, [r0, #4] + 21de8: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 21dec: 6ddb ldr r3, [r3, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 21d0e: 0758 lsls r0, r3, #29 - 21d10: f100 8099 bmi.w 21e46 + 21dee: 0758 lsls r0, r3, #29 + 21df0: f100 8099 bmi.w 21f26 } - 21d14: bd10 pop {r4, pc} - 21d16: e8bd 4010 ldmia.w sp!, {r4, lr} + 21df4: bd10 pop {r4, pc} + 21df6: e8bd 4010 ldmia.w sp!, {r4, lr} connectEditor(); - 21d1a: f7ff b82b b.w 20d74 + 21dfa: f7ff b82b b.w 20e54 } - 21d1e: e8bd 4010 ldmia.w sp!, {r4, lr} + 21dfe: e8bd 4010 ldmia.w sp!, {r4, lr} disconnectEditor(); - 21d22: f7ff ba0d b.w 21140 + 21e02: f7ff ba0d b.w 21220 bool isWrite() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_WRITE);} - 21d26: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 + 21e06: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 } - 21d2a: e8bd 4010 ldmia.w sp!, {r4, lr} + 21e0a: e8bd 4010 ldmia.w sp!, {r4, lr} globalSettingsMessage(isWriteMessage()); - 21d2e: f001 0101 and.w r1, r1, #1 - 21d32: f7ff bc9b b.w 2166c - 21d36: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 + 21e0e: f001 0101 and.w r1, r1, #1 + 21e12: f7ff bc9b b.w 2174c + 21e16: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 } - 21d3a: e8bd 4010 ldmia.w sp!, {r4, lr} + 21e1a: e8bd 4010 ldmia.w sp!, {r4, lr} globalStoreAddress(isWriteMessage()); - 21d3e: f001 0101 and.w r1, r1, #1 - 21d42: f7ff bae3 b.w 2130c - 21d46: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 + 21e1e: f001 0101 and.w r1, r1, #1 + 21e22: f7ff bae3 b.w 213ec + 21e26: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 } - 21d4a: e8bd 4010 ldmia.w sp!, {r4, lr} + 21e2a: e8bd 4010 ldmia.w sp!, {r4, lr} globalBackupMessage(isWriteMessage()); - 21d4e: f001 0101 and.w r1, r1, #1 - 21d52: f7ff bbdb b.w 2150c + 21e2e: f001 0101 and.w r1, r1, #1 + 21e32: f7ff bbdb b.w 215ec } - 21d56: e8bd 4010 ldmia.w sp!, {r4, lr} + 21e36: e8bd 4010 ldmia.w sp!, {r4, lr} forceDisconnectEditor(); - 21d5a: f7ff ba61 b.w 21220 + 21e3a: f7ff ba61 b.w 21300 } - 21d5e: e8bd 4010 ldmia.w sp!, {r4, lr} + 21e3e: e8bd 4010 ldmia.w sp!, {r4, lr} globalSketchBytesData(); - 21d62: f7ff be1b b.w 2199c + 21e42: f7ff be1b b.w 21a7c midi.globals.editorConnected() && - 21d66: 6843 ldr r3, [r0, #4] - 21d68: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 21d6c: 6ddb ldr r3, [r3, #92] ; 0x5c + 21e46: 6843 ldr r3, [r0, #4] + 21e48: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 21e4c: 6ddb ldr r3, [r3, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 21d6e: 075b lsls r3, r3, #29 - 21d70: d5d0 bpl.n 21d14 + 21e4e: 075b lsls r3, r3, #29 + 21e50: d5d0 bpl.n 21df4 midi.globals.editorConnected() && - 21d72: f890 102d ldrb.w r1, [r0, #45] ; 0x2d - 21d76: 7a53 ldrb r3, [r2, #9] - 21d78: 4299 cmp r1, r3 - 21d7a: d1cb bne.n 21d14 + 21e52: f890 102d ldrb.w r1, [r0, #45] ; 0x2d + 21e56: 7a53 ldrb r3, [r2, #9] + 21e58: 4299 cmp r1, r3 + 21e5a: d1cb bne.n 21df4 getMessageDeviceId() == deviceId && - 21d7c: f890 102c ldrb.w r1, [r0, #44] ; 0x2c - 21d80: 7813 ldrb r3, [r2, #0] - 21d82: 4299 cmp r1, r3 - 21d84: d1c6 bne.n 21d14 + 21e5c: f890 102c ldrb.w r1, [r0, #44] ; 0x2c + 21e60: 7813 ldrb r3, [r2, #0] + 21e62: 4299 cmp r1, r3 + 21e64: d1c6 bne.n 21df4 incoming.peekSysEx(4) == deviceId && - 21d86: f8b2 3003 ldrh.w r3, [r2, #3] - 21d8a: 2b0a cmp r3, #10 - 21d8c: d9c2 bls.n 21d14 + 21e66: f8b2 3003 ldrh.w r3, [r2, #3] + 21e6a: 2b0a cmp r3, #10 + 21e6c: d9c2 bls.n 21df4 bool isLayer() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_LAYER);} - 21d8e: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 21e6e: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 21d92: 0798 lsls r0, r3, #30 - 21d94: d4be bmi.n 21d14 - 21d96: 4620 mov r0, r4 + 21e72: 0798 lsls r0, r3, #30 + 21e74: d4be bmi.n 21df4 + 21e76: 4620 mov r0, r4 } - 21d98: e8bd 4010 ldmia.w sp!, {r4, lr} - 21d9c: f7f9 b8c2 b.w 1af24 + 21e78: e8bd 4010 ldmia.w sp!, {r4, lr} + 21e7c: f7f9 b8c2 b.w 1b004 bool isWrite() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_WRITE);} - 21da0: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 - 21da4: e8bd 4010 ldmia.w sp!, {r4, lr} + 21e80: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 + 21e84: e8bd 4010 ldmia.w sp!, {r4, lr} globalEditorFeedback(isWriteMessage()); - 21da8: f001 0101 and.w r1, r1, #1 - 21dac: f7ff bf00 b.w 21bb0 + 21e88: f001 0101 and.w r1, r1, #1 + 21e8c: f7ff bf00 b.w 21c90 } - 21db0: e8bd 4010 ldmia.w sp!, {r4, lr} + 21e90: e8bd 4010 ldmia.w sp!, {r4, lr} globalEditorMetrics(); - 21db4: f7ff bf20 b.w 21bf8 - 21db8: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 + 21e94: f7ff bf20 b.w 21cd8 + 21e98: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 } - 21dbc: e8bd 4010 ldmia.w sp!, {r4, lr} + 21e9c: e8bd 4010 ldmia.w sp!, {r4, lr} globalEditorMessenger(isWriteMessage()); - 21dc0: f001 0101 and.w r1, r1, #1 - 21dc4: f7ff bf34 b.w 21c30 - 21dc8: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 + 21ea0: f001 0101 and.w r1, r1, #1 + 21ea4: f7ff bf34 b.w 21d10 + 21ea8: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 } - 21dcc: e8bd 4010 ldmia.w sp!, {r4, lr} + 21eac: e8bd 4010 ldmia.w sp!, {r4, lr} incomingMessageEvent(isWriteMessage()); - 21dd0: f001 0101 and.w r1, r1, #1 - 21dd4: f7fc bcc4 b.w 1e760 - 21dd8: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 + 21eb0: f001 0101 and.w r1, r1, #1 + 21eb4: f7fc bcc4 b.w 1e840 + 21eb8: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 } - 21ddc: e8bd 4010 ldmia.w sp!, {r4, lr} + 21ebc: e8bd 4010 ldmia.w sp!, {r4, lr} incomingMessageName(isWriteMessage()); - 21de0: f001 0101 and.w r1, r1, #1 - 21de4: f7fc be9a b.w 1eb1c - 21de8: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 + 21ec0: f001 0101 and.w r1, r1, #1 + 21ec4: f7fc be9a b.w 1ebfc + 21ec8: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 } - 21dec: e8bd 4010 ldmia.w sp!, {r4, lr} + 21ecc: e8bd 4010 ldmia.w sp!, {r4, lr} incomingMessageDevice(isWriteMessage()); - 21df0: f001 0101 and.w r1, r1, #1 - 21df4: f7fd b806 b.w 1ee04 + 21ed0: f001 0101 and.w r1, r1, #1 + 21ed4: f7fd b806 b.w 1eee4 midi.globals.editorConnected() && - 21df8: 6843 ldr r3, [r0, #4] - 21dfa: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 21dfe: 6ddb ldr r3, [r3, #92] ; 0x5c + 21ed8: 6843 ldr r3, [r0, #4] + 21eda: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 21ede: 6ddb ldr r3, [r3, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 21e00: 0759 lsls r1, r3, #29 - 21e02: d587 bpl.n 21d14 + 21ee0: 0759 lsls r1, r3, #29 + 21ee2: d587 bpl.n 21df4 midi.globals.editorConnected() && - 21e04: f890 102d ldrb.w r1, [r0, #45] ; 0x2d - 21e08: 7a53 ldrb r3, [r2, #9] - 21e0a: 4299 cmp r1, r3 - 21e0c: d182 bne.n 21d14 + 21ee4: f890 102d ldrb.w r1, [r0, #45] ; 0x2d + 21ee8: 7a53 ldrb r3, [r2, #9] + 21eea: 4299 cmp r1, r3 + 21eec: d182 bne.n 21df4 getMessageDeviceId() == deviceId && - 21e0e: f890 102c ldrb.w r1, [r0, #44] ; 0x2c - 21e12: 7813 ldrb r3, [r2, #0] - 21e14: 4299 cmp r1, r3 - 21e16: f47f af7d bne.w 21d14 + 21eee: f890 102c ldrb.w r1, [r0, #44] ; 0x2c + 21ef2: 7813 ldrb r3, [r2, #0] + 21ef4: 4299 cmp r1, r3 + 21ef6: f47f af7d bne.w 21df4 incoming.peekSysEx(4) == deviceId && - 21e1a: f8b2 3003 ldrh.w r3, [r2, #3] - 21e1e: 2b0a cmp r3, #10 - 21e20: f67f af78 bls.w 21d14 + 21efa: f8b2 3003 ldrh.w r3, [r2, #3] + 21efe: 2b0a cmp r3, #10 + 21f00: f67f af78 bls.w 21df4 bool isLayer() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_LAYER);} - 21e24: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 21f04: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 21e28: 079b lsls r3, r3, #30 - 21e2a: f53f af73 bmi.w 21d14 + 21f08: 079b lsls r3, r3, #30 + 21f0a: f53f af73 bmi.w 21df4 } - 21e2e: e8bd 4010 ldmia.w sp!, {r4, lr} - 21e32: f7fc ba43 b.w 1e2bc - 21e36: e8bd 4010 ldmia.w sp!, {r4, lr} + 21f0e: e8bd 4010 ldmia.w sp!, {r4, lr} + 21f12: f7fc ba43 b.w 1e39c + 21f16: e8bd 4010 ldmia.w sp!, {r4, lr} incomingMessageLinks(); - 21e3a: f7fc bbe3 b.w 1e604 + 21f1a: f7fc bbe3 b.w 1e6e4 } - 21e3e: e8bd 4010 ldmia.w sp!, {r4, lr} + 21f1e: e8bd 4010 ldmia.w sp!, {r4, lr} globalBuildInfoMessage(); - 21e42: f7ff ba47 b.w 212d4 + 21f22: f7ff ba47 b.w 213b4 midi.globals.editorConnected() && - 21e46: f894 102d ldrb.w r1, [r4, #45] ; 0x2d - 21e4a: 7a53 ldrb r3, [r2, #9] - 21e4c: 4299 cmp r1, r3 - 21e4e: f47f af61 bne.w 21d14 + 21f26: f894 102d ldrb.w r1, [r4, #45] ; 0x2d + 21f2a: 7a53 ldrb r3, [r2, #9] + 21f2c: 4299 cmp r1, r3 + 21f2e: f47f af61 bne.w 21df4 getMessageDeviceId() == deviceId && - 21e52: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 21e56: 7813 ldrb r3, [r2, #0] - 21e58: 4299 cmp r1, r3 - 21e5a: f47f af5b bne.w 21d14 + 21f32: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 21f36: 7813 ldrb r3, [r2, #0] + 21f38: 4299 cmp r1, r3 + 21f3a: f47f af5b bne.w 21df4 incoming.peekSysEx(4) == deviceId && - 21e5e: f8b2 3003 ldrh.w r3, [r2, #3] - 21e62: 2b0a cmp r3, #10 - 21e64: f67f af56 bls.w 21d14 - 21e68: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 + 21f3e: f8b2 3003 ldrh.w r3, [r2, #3] + 21f42: 2b0a cmp r3, #10 + 21f44: f67f af56 bls.w 21df4 + 21f48: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 return (isValidMessage(checkSysExSize) && !isLayerMessage()); - 21e6c: 0799 lsls r1, r3, #30 - 21e6e: f53f af51 bmi.w 21d14 + 21f4c: 0799 lsls r1, r3, #30 + 21f4e: f53f af51 bmi.w 21df4 if(isValidGlobalMessage() && isWriteMessage()){ - 21e72: 07da lsls r2, r3, #31 - 21e74: f57f af4e bpl.w 21d14 + 21f52: 07da lsls r2, r3, #31 + 21f54: f57f af4e bpl.w 21df4 BMC_PRINTLN("BMC_GLOBALF_EDITOR_FETCH_COMPLETE"); - 21e78: 4904 ldr r1, [pc, #16] ; (21e8c ) - 21e7a: 4805 ldr r0, [pc, #20] ; (21e90 ) - 21e7c: f7f8 ff18 bl 1acb0 + 21f58: 4904 ldr r1, [pc, #16] ; (21f6c ) + 21f5a: 4805 ldr r0, [pc, #20] ; (21f70 ) + 21f5c: f7f8 ff18 bl 1ad90 bitClear(flags, bit); - 21e80: 6b23 ldr r3, [r4, #48] ; 0x30 - 21e82: f023 0310 bic.w r3, r3, #16 - 21e86: 6323 str r3, [r4, #48] ; 0x30 + 21f60: 6b23 ldr r3, [r4, #48] ; 0x30 + 21f62: f023 0310 bic.w r3, r3, #16 + 21f66: 6323 str r3, [r4, #48] ; 0x30 } - 21e88: bd10 pop {r4, pc} - 21e8a: bf00 nop - 21e8c: 20003d14 .word 0x20003d14 - 21e90: 20004ba8 .word 0x20004ba8 - 21e94: 00000000 .word 0x00000000 + 21f68: bd10 pop {r4, pc} + 21f6a: bf00 nop + 21f6c: 20003dd4 .word 0x20003dd4 + 21f70: 20004c68 .word 0x20004c68 + 21f74: 00000000 .word 0x00000000 -00021e98 : +00021f78 : void saveLayer(uint8_t layer){ - 21e98: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 21e9c: 460c mov r4, r1 - 21e9e: b085 sub sp, #20 - 21ea0: 4605 mov r5, r0 + 21f78: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 21f7c: 460c mov r4, r1 + 21f7e: b085 sub sp, #20 + 21f80: 4605 mov r5, r0 uint16_t address = getGlobalOffset(); - 21ea2: f7f8 fc9d bl 1a7e0 + 21f82: f7f8 fc9d bl 1a8c0 address += sizeof(store.global) + (sizeof(store.layers[0]) * layer); - 21ea6: eb04 1344 add.w r3, r4, r4, lsl #5 - 21eaa: f241 525c movw r2, #5468 ; 0x155c - 21eae: eb04 0383 add.w r3, r4, r3, lsl #2 - 21eb2: 441a add r2, r3 + 21f86: eb04 1344 add.w r3, r4, r4, lsl #5 + 21f8a: f241 525c movw r2, #5468 ; 0x155c + 21f8e: eb04 0383 add.w r3, r4, r3, lsl #2 + 21f92: 441a add r2, r3 storage.set(address, store.layers[layer]); - 21eb4: 2385 movs r3, #133 ; 0x85 + 21f94: 2385 movs r3, #133 ; 0x85 address += sizeof(store.global) + (sizeof(store.layers[0]) * layer); - 21eb6: fa12 f880 uxtah r8, r2, r0 + 21f96: fa12 f880 uxtah r8, r2, r0 storage.set(address, store.layers[layer]); - 21eba: f44f 52ab mov.w r2, #5472 ; 0x1560 - 21ebe: fb13 2304 smlabb r3, r3, r4, r2 + 21f9a: f44f 52ab mov.w r2, #5472 ; 0x1560 + 21f9e: fb13 2304 smlabb r3, r3, r4, r2 return bitRead(flags, bit); - 21ec2: 68ea ldr r2, [r5, #12] - 21ec4: 682c ldr r4, [r5, #0] + 21fa2: 68ea ldr r2, [r5, #12] + 21fa4: 682c ldr r4, [r5, #0] address += sizeof(store.global) + (sizeof(store.layers[0]) * layer); - 21ec6: fa1f f888 uxth.w r8, r8 - 21eca: f8b2 2060 ldrh.w r2, [r2, #96] ; 0x60 + 21fa6: fa1f f888 uxth.w r8, r8 + 21faa: f8b2 2060 ldrh.w r2, [r2, #96] ; 0x60 storage.set(address, store.layers[layer]); - 21ece: 441c add r4, r3 + 21fae: 441c add r4, r3 if(!globals.getStorageDebug()){ - 21ed0: 07d2 lsls r2, r2, #31 - 21ed2: d521 bpl.n 21f18 - 21ed4: 2100 movs r1, #0 - 21ed6: 4860 ldr r0, [pc, #384] ; (22058 ) - 21ed8: f00a fb36 bl 2c548 + 21fb0: 07d2 lsls r2, r2, #31 + 21fb2: d521 bpl.n 21ff8 + 21fb4: 2100 movs r1, #0 + 21fb6: 4860 ldr r0, [pc, #384] ; (22138 ) + 21fb8: f00a fb3a bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 21edc: 485f ldr r0, [pc, #380] ; (2205c ) - 21ede: f007 ffc9 bl 29e74 - 21ee2: 2103 movs r1, #3 - 21ee4: 485e ldr r0, [pc, #376] ; (22060 ) - 21ee6: f00a fb2f bl 2c548 - 21eea: 2101 movs r1, #1 - 21eec: 485d ldr r0, [pc, #372] ; (22064 ) - 21eee: f00a fb2b bl 2c548 - 21ef2: 2108 movs r1, #8 - 21ef4: 485c ldr r0, [pc, #368] ; (22068 ) - 21ef6: f00a fb27 bl 2c548 - 21efa: 2101 movs r1, #1 - 21efc: 4859 ldr r0, [pc, #356] ; (22064 ) - 21efe: f00a fb23 bl 2c548 - 21f02: 2108 movs r1, #8 - 21f04: 4859 ldr r0, [pc, #356] ; (2206c ) - 21f06: f00a fb1f bl 2c548 - 21f0a: 2101 movs r1, #1 - 21f0c: 4855 ldr r0, [pc, #340] ; (22064 ) - 21f0e: f00a fb1b bl 2c548 + 21fbc: 485f ldr r0, [pc, #380] ; (2213c ) + 21fbe: f007 ffcf bl 29f60 + 21fc2: 2103 movs r1, #3 + 21fc4: 485e ldr r0, [pc, #376] ; (22140 ) + 21fc6: f00a fb33 bl 2c630 + 21fca: 2101 movs r1, #1 + 21fcc: 485d ldr r0, [pc, #372] ; (22144 ) + 21fce: f00a fb2f bl 2c630 + 21fd2: 2108 movs r1, #8 + 21fd4: 485c ldr r0, [pc, #368] ; (22148 ) + 21fd6: f00a fb2b bl 2c630 + 21fda: 2101 movs r1, #1 + 21fdc: 4859 ldr r0, [pc, #356] ; (22144 ) + 21fde: f00a fb27 bl 2c630 + 21fe2: 2108 movs r1, #8 + 21fe4: 4859 ldr r0, [pc, #356] ; (2214c ) + 21fe6: f00a fb23 bl 2c630 + 21fea: 2101 movs r1, #1 + 21fec: 4855 ldr r0, [pc, #340] ; (22144 ) + 21fee: f00a fb1f bl 2c630 debugTimer = BMC_STORAGE_DEBUG_TIME_T(); - 21f12: f008 fb2f bl 2a574 - 21f16: 62a8 str r0, [r5, #40] ; 0x28 - 21f18: 210e movs r1, #14 - 21f1a: 4855 ldr r0, [pc, #340] ; (22070 ) - 21f1c: f00a fb14 bl 2c548 + 21ff2: f008 fb33 bl 2a65c + 21ff6: 62a8 str r0, [r5, #40] ; 0x28 + 21ff8: 210e movs r1, #14 + 21ffa: 4855 ldr r0, [pc, #340] ; (22150 ) + 21ffc: f00a fb18 bl 2c630 unsigned long n = sizeof(value)+start; - 21f20: f108 0985 add.w r9, r8, #133 ; 0x85 - 21f24: f108 0301 add.w r3, r8, #1 - 21f28: 4e52 ldr r6, [pc, #328] ; (22074 ) + 22000: f108 0985 add.w r9, r8, #133 ; 0x85 + 22004: f108 0301 add.w r3, r8, #1 + 22008: 4e52 ldr r6, [pc, #328] ; (22154 ) STORAGE.put(address,file); - 21f2a: f105 0710 add.w r7, r5, #16 - 21f2e: eba8 0804 sub.w r8, r8, r4 - 21f32: 4599 cmp r9, r3 - 21f34: bf34 ite cc - 21f36: f04f 0901 movcc.w r9, #1 - 21f3a: f04f 0985 movcs.w r9, #133 ; 0x85 - 21f3e: 6833 ldr r3, [r6, #0] + 2200a: f105 0710 add.w r7, r5, #16 + 2200e: eba8 0804 sub.w r8, r8, r4 + 22012: 4599 cmp r9, r3 + 22014: bf34 ite cc + 22016: f04f 0901 movcc.w r9, #1 + 2201a: f04f 0985 movcs.w r9, #133 ; 0x85 + 2201e: 6833 ldr r3, [r6, #0] unsigned long updatedBytes = 0; - 21f40: f04f 0a00 mov.w sl, #0 - 21f44: f8df b130 ldr.w fp, [pc, #304] ; 22078 - 21f48: 44a1 add r9, r4 - 21f4a: 622b str r3, [r5, #32] + 22020: f04f 0a00 mov.w sl, #0 + 22024: f8df b130 ldr.w fp, [pc, #304] ; 22158 + 22028: 44a1 add r9, r4 + 2202a: 622b str r3, [r5, #32] for(i=start;i - 21f4e: 6833 ldr r3, [r6, #0] + 2202c: e006 b.n 2203c + 2202e: 6833 ldr r3, [r6, #0] operator unsigned long () const { return millis() - ms; } - 21f50: 6a2a ldr r2, [r5, #32] - 21f52: 1a9b subs r3, r3, r2 + 22030: 6a2a ldr r2, [r5, #32] + 22032: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 21f54: 2bf9 cmp r3, #249 ; 0xf9 - 21f56: d81d bhi.n 21f94 + 22034: 2bf9 cmp r3, #249 ; 0xf9 + 22036: d81d bhi.n 22074 for(i=start;i - 21f5c: eb04 0108 add.w r1, r4, r8 + 22038: 454c cmp r4, r9 + 2203a: d023 beq.n 22084 + 2203c: eb04 0108 add.w r1, r4, r8 updatedBytes += update(i,*p++); - 21f60: f814 3b01 ldrb.w r3, [r4], #1 + 22040: f814 3b01 ldrb.w r3, [r4], #1 if(read(addr) != value){ - 21f64: 4638 mov r0, r7 - 21f66: 9101 str r1, [sp, #4] - 21f68: f88d 300f strb.w r3, [sp, #15] - 21f6c: f003 f8ee bl 2514c - 21f70: f89d 300f ldrb.w r3, [sp, #15] - 21f74: 9901 ldr r1, [sp, #4] - 21f76: 4298 cmp r0, r3 - 21f78: d0e9 beq.n 21f4e + 22044: 4638 mov r0, r7 + 22046: 9101 str r1, [sp, #4] + 22048: f88d 300f strb.w r3, [sp, #15] + 2204c: f003 f8f4 bl 25238 + 22050: f89d 300f ldrb.w r3, [sp, #15] + 22054: 9901 ldr r1, [sp, #4] + 22056: 4298 cmp r0, r3 + 22058: d0e9 beq.n 2202e write(addr, &value, 1); - 21f7a: 2301 movs r3, #1 - 21f7c: f10d 020f add.w r2, sp, #15 - 21f80: 4638 mov r0, r7 + 2205a: 2301 movs r3, #1 + 2205c: f10d 020f add.w r2, sp, #15 + 22060: 4638 mov r0, r7 updatedBytes += update(i,*p++); - 21f82: f10a 0a01 add.w sl, sl, #1 + 22062: f10a 0a01 add.w sl, sl, #1 write(addr, &value, 1); - 21f86: f002 ffd7 bl 24f38 - 21f8a: 6833 ldr r3, [r6, #0] - 21f8c: 6a2a ldr r2, [r5, #32] - 21f8e: 1a9b subs r3, r3, r2 + 22066: f002 ffdd bl 25024 + 2206a: 6833 ldr r3, [r6, #0] + 2206c: 6a2a ldr r2, [r5, #32] + 2206e: 1a9b subs r3, r3, r2 if(writeTime>=250){ - 21f90: 2bf9 cmp r3, #249 ; 0xf9 - 21f92: d9e1 bls.n 21f58 - 21f94: 2101 movs r1, #1 - 21f96: 4658 mov r0, fp - 21f98: f00a fad6 bl 2c548 - 21f9c: 6833 ldr r3, [r6, #0] + 22070: 2bf9 cmp r3, #249 ; 0xf9 + 22072: d9e1 bls.n 22038 + 22074: 2101 movs r1, #1 + 22076: 4658 mov r0, fp + 22078: f00a fada bl 2c630 + 2207c: 6833 ldr r3, [r6, #0] for(i=start;i - 21fa4: 2101 movs r1, #1 - 21fa6: 4834 ldr r0, [pc, #208] ; (22078 ) - 21fa8: f00a face bl 2c548 - 21fac: 482b ldr r0, [pc, #172] ; (2205c ) - 21fae: f007 ff61 bl 29e74 - 21fb2: 2109 movs r1, #9 - 21fb4: 4831 ldr r0, [pc, #196] ; (2207c ) - 21fb6: f00a fac7 bl 2c548 - 21fba: 2101 movs r1, #1 - 21fbc: 4829 ldr r0, [pc, #164] ; (22064 ) - 21fbe: f00a fac3 bl 2c548 + 22080: 622b str r3, [r5, #32] + 22082: d1db bne.n 2203c + 22084: 2101 movs r1, #1 + 22086: 4834 ldr r0, [pc, #208] ; (22158 ) + 22088: f00a fad2 bl 2c630 + 2208c: 482b ldr r0, [pc, #172] ; (2213c ) + 2208e: f007 ff67 bl 29f60 + 22092: 2109 movs r1, #9 + 22094: 4831 ldr r0, [pc, #196] ; (2215c ) + 22096: f00a facb bl 2c630 + 2209a: 2101 movs r1, #1 + 2209c: 4829 ldr r0, [pc, #164] ; (22144 ) + 2209e: f00a fac7 bl 2c630 size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 21fc2: 2300 movs r3, #0 - 21fc4: 220a movs r2, #10 - 21fc6: 4651 mov r1, sl - 21fc8: 4824 ldr r0, [pc, #144] ; (2205c ) - 21fca: f007 ff6f bl 29eac - 21fce: 2101 movs r1, #1 - 21fd0: 4824 ldr r0, [pc, #144] ; (22064 ) - 21fd2: f00a fab9 bl 2c548 - 21fd6: 2105 movs r1, #5 - 21fd8: 4829 ldr r0, [pc, #164] ; (22080 ) - 21fda: f00a fab5 bl 2c548 + 220a2: 2300 movs r3, #0 + 220a4: 220a movs r2, #10 + 220a6: 4651 mov r1, sl + 220a8: 4824 ldr r0, [pc, #144] ; (2213c ) + 220aa: f007 ff75 bl 29f98 + 220ae: 2101 movs r1, #1 + 220b0: 4824 ldr r0, [pc, #144] ; (22144 ) + 220b2: f00a fabd bl 2c630 + 220b6: 2105 movs r1, #5 + 220b8: 4829 ldr r0, [pc, #164] ; (22160 ) + 220ba: f00a fab9 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 21fde: 481f ldr r0, [pc, #124] ; (2205c ) - 21fe0: f007 ff48 bl 29e74 - 21fe4: 68eb ldr r3, [r5, #12] - 21fe6: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 220be: 481f ldr r0, [pc, #124] ; (2213c ) + 220c0: f007 ff4e bl 29f60 + 220c4: 68eb ldr r3, [r5, #12] + 220c6: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(!globals.getStorageDebug()){ - 21fea: 07db lsls r3, r3, #31 - 21fec: d402 bmi.n 21ff4 - } - 21fee: b005 add sp, #20 - 21ff0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 21ff4: 2104 movs r1, #4 - 21ff6: 4823 ldr r0, [pc, #140] ; (22084 ) - 21ff8: f00a faa6 bl 2c548 - 21ffc: 2101 movs r1, #1 - 21ffe: 4819 ldr r0, [pc, #100] ; (22064 ) - 22000: f00a faa2 bl 2c548 + 220ca: 07db lsls r3, r3, #31 + 220cc: d402 bmi.n 220d4 + } + 220ce: b005 add sp, #20 + 220d0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 220d4: 2104 movs r1, #4 + 220d6: 4823 ldr r0, [pc, #140] ; (22164 ) + 220d8: f00a faaa bl 2c630 + 220dc: 2101 movs r1, #1 + 220de: 4819 ldr r0, [pc, #100] ; (22144 ) + 220e0: f00a faa6 bl 2c630 BMC_PRINTLN("took",((BMC_STORAGE_DEBUG_TIME_T()-debugTimer)/1000.0),"milliseconds"); - 22004: f008 fab6 bl 2a574 - 22008: 6aab ldr r3, [r5, #40] ; 0x28 + 220e4: f008 faba bl 2a65c + 220e8: 6aab ldr r3, [r5, #40] ; 0x28 size_t print(double n, int digits = 2) { return printFloat(n, digits); } - 2200a: 2102 movs r1, #2 - 2200c: 1ac3 subs r3, r0, r3 - 2200e: 4813 ldr r0, [pc, #76] ; (2205c ) - 22010: ee07 3a10 vmov s14, r3 - 22014: ed9f 0b0e vldr d0, [pc, #56] ; 22050 - 22018: eeb8 7b47 vcvt.f64.u32 d7, s14 - 2201c: ee87 0b00 vdiv.f64 d0, d7, d0 - 22020: f007 ff5a bl 29ed8 - 22024: 2101 movs r1, #1 - 22026: 480f ldr r0, [pc, #60] ; (22064 ) - 22028: f00a fa8e bl 2c548 - 2202c: 210c movs r1, #12 - 2202e: 4816 ldr r0, [pc, #88] ; (22088 ) - 22030: f00a fa8a bl 2c548 + 220ea: 2102 movs r1, #2 + 220ec: 1ac3 subs r3, r0, r3 + 220ee: 4813 ldr r0, [pc, #76] ; (2213c ) + 220f0: ee07 3a10 vmov s14, r3 + 220f4: ed9f 0b0e vldr d0, [pc, #56] ; 22130 + 220f8: eeb8 7b47 vcvt.f64.u32 d7, s14 + 220fc: ee87 0b00 vdiv.f64 d0, d7, d0 + 22100: f007 ff5e bl 29fc0 + 22104: 2101 movs r1, #1 + 22106: 480f ldr r0, [pc, #60] ; (22144 ) + 22108: f00a fa92 bl 2c630 + 2210c: 210c movs r1, #12 + 2210e: 4816 ldr r0, [pc, #88] ; (22168 ) + 22110: f00a fa8e bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 22034: 4809 ldr r0, [pc, #36] ; (2205c ) - 22036: f007 ff1d bl 29e74 - 2203a: 2100 movs r1, #0 - 2203c: 4806 ldr r0, [pc, #24] ; (22058 ) - 2203e: f00a fa83 bl 2c548 - 22042: 4806 ldr r0, [pc, #24] ; (2205c ) - 22044: b005 add sp, #20 - 22046: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 2204a: f007 bf13 b.w 29e74 - 2204e: bf00 nop - 22050: 00000000 .word 0x00000000 - 22054: 408f4000 .word 0x408f4000 - 22058: 20003c58 .word 0x20003c58 - 2205c: 20004ba8 .word 0x20004ba8 - 22060: 200036c8 .word 0x200036c8 - 22064: 200023ec .word 0x200023ec - 22068: 20003e04 .word 0x20003e04 - 2206c: 20003e10 .word 0x20003e10 - 22070: 20003e1c .word 0x20003e1c - 22074: 2000bae8 .word 0x2000bae8 - 22078: 200030b8 .word 0x200030b8 - 2207c: 20003e2c .word 0x20003e2c - 22080: 20002448 .word 0x20002448 - 22084: 20003e38 .word 0x20003e38 - 22088: 20003e40 .word 0x20003e40 - -0002208c : + 22114: 4809 ldr r0, [pc, #36] ; (2213c ) + 22116: f007 ff23 bl 29f60 + 2211a: 2100 movs r1, #0 + 2211c: 4806 ldr r0, [pc, #24] ; (22138 ) + 2211e: f00a fa87 bl 2c630 + 22122: 4806 ldr r0, [pc, #24] ; (2213c ) + 22124: b005 add sp, #20 + 22126: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2212a: f007 bf19 b.w 29f60 + 2212e: bf00 nop + 22130: 00000000 .word 0x00000000 + 22134: 408f4000 .word 0x408f4000 + 22138: 20003d18 .word 0x20003d18 + 2213c: 20004c68 .word 0x20004c68 + 22140: 20003788 .word 0x20003788 + 22144: 200023ec .word 0x200023ec + 22148: 20003ec4 .word 0x20003ec4 + 2214c: 20003ed0 .word 0x20003ed0 + 22150: 20003edc .word 0x20003edc + 22154: 2000bb08 .word 0x2000bb08 + 22158: 20003150 .word 0x20003150 + 2215c: 20003eec .word 0x20003eec + 22160: 20002448 .word 0x20002448 + 22164: 20003ef8 .word 0x20003ef8 + 22168: 20003f00 .word 0x20003f00 + +0002216c : uint8_t sysExLength = 14; // handle backup if(backupActive() || !write){ return; } uint16_t layerSource = getMessageLayerNumber(); - 2208c: 6bc3 ldr r3, [r0, #60] ; 0x3c + 2216c: 6bc3 ldr r3, [r0, #60] ; 0x3c void BMCEditor::layerMessageLayerCopySwap(bool write){ - 2208e: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 22092: 4604 mov r4, r0 + 2216e: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 22172: 4604 mov r4, r0 if((t_offset+1) < size()){ - 22094: f8b3 0003 ldrh.w r0, [r3, #3] - 22098: b0a5 sub sp, #148 ; 0x94 - 2209a: 2807 cmp r0, #7 - 2209c: f200 808b bhi.w 221b6 - 220a0: 2500 movs r5, #0 - 220a2: 462e mov r6, r5 + 22174: f8b3 0003 ldrh.w r0, [r3, #3] + 22178: b0a5 sub sp, #148 ; 0x94 + 2217a: 2807 cmp r0, #7 + 2217c: f200 808b bhi.w 22296 + 22180: 2500 movs r5, #0 + 22182: 462e mov r6, r5 return 0; - 220a4: 462f mov r7, r5 - 220a6: 46a8 mov r8, r5 + 22184: 462f mov r7, r5 + 22186: 46a8 mov r8, r5 uint16_t layerTarget = incoming.get14Bits(9); bool isSwap = incoming.sysex[11]; - 220a8: f893 9010 ldrb.w r9, [r3, #16] - 220ac: 2119 movs r1, #25 - 220ae: 4866 ldr r0, [pc, #408] ; (22248 ) - 220b0: f00a fa4a bl 2c548 - 220b4: 2101 movs r1, #1 - 220b6: 4865 ldr r0, [pc, #404] ; (2224c ) - 220b8: f00a fa46 bl 2c548 + 22188: f893 9010 ldrb.w r9, [r3, #16] + 2218c: 2119 movs r1, #25 + 2218e: 4866 ldr r0, [pc, #408] ; (22328 ) + 22190: f00a fa4e bl 2c630 + 22194: 2101 movs r1, #1 + 22196: 4865 ldr r0, [pc, #404] ; (2232c ) + 22198: f00a fa4a bl 2c630 size_t print(int n) { return print((long)n); } - 220bc: f1b9 0100 subs.w r1, r9, #0 - 220c0: 4863 ldr r0, [pc, #396] ; (22250 ) - 220c2: bf18 it ne - 220c4: 2101 movne r1, #1 - 220c6: f007 fec9 bl 29e5c - 220ca: 2101 movs r1, #1 - 220cc: 485f ldr r0, [pc, #380] ; (2224c ) - 220ce: f00a fa3b bl 2c548 - 220d2: 4631 mov r1, r6 - 220d4: 485e ldr r0, [pc, #376] ; (22250 ) - 220d6: f007 fec1 bl 29e5c - 220da: 2101 movs r1, #1 - 220dc: 485b ldr r0, [pc, #364] ; (2224c ) - 220de: f00a fa33 bl 2c548 - 220e2: 4629 mov r1, r5 - 220e4: 485a ldr r0, [pc, #360] ; (22250 ) - 220e6: f007 feb9 bl 29e5c - 220ea: 2101 movs r1, #1 - 220ec: 4857 ldr r0, [pc, #348] ; (2224c ) - 220ee: f00a fa2b bl 2c548 + 2219c: f1b9 0100 subs.w r1, r9, #0 + 221a0: 4863 ldr r0, [pc, #396] ; (22330 ) + 221a2: bf18 it ne + 221a4: 2101 movne r1, #1 + 221a6: f007 fecf bl 29f48 + 221aa: 2101 movs r1, #1 + 221ac: 485f ldr r0, [pc, #380] ; (2232c ) + 221ae: f00a fa3f bl 2c630 + 221b2: 4631 mov r1, r6 + 221b4: 485e ldr r0, [pc, #376] ; (22330 ) + 221b6: f007 fec7 bl 29f48 + 221ba: 2101 movs r1, #1 + 221bc: 485b ldr r0, [pc, #364] ; (2232c ) + 221be: f00a fa37 bl 2c630 + 221c2: 4629 mov r1, r5 + 221c4: 485a ldr r0, [pc, #360] ; (22330 ) + 221c6: f007 febf bl 29f48 + 221ca: 2101 movs r1, #1 + 221cc: 4857 ldr r0, [pc, #348] ; (2232c ) + 221ce: f00a fa2f bl 2c630 BMC_PRINTLN("layerMessageLayerCopySwap", isSwap, layerSource, layerTarget, incoming.size()); - 220f2: 6be3 ldr r3, [r4, #60] ; 0x3c - 220f4: 4856 ldr r0, [pc, #344] ; (22250 ) - 220f6: f8b3 1003 ldrh.w r1, [r3, #3] - 220fa: f007 feaf bl 29e5c + 221d2: 6be3 ldr r3, [r4, #60] ; 0x3c + 221d4: 4856 ldr r0, [pc, #344] ; (22330 ) + 221d6: f8b3 1003 ldrh.w r1, [r3, #3] + 221da: f007 feb5 bl 29f48 size_t println(int n) { return print(n) + println(); } - 220fe: 4854 ldr r0, [pc, #336] ; (22250 ) - 22100: f007 feb8 bl 29e74 + 221de: 4854 ldr r0, [pc, #336] ; (22330 ) + 221e0: f007 febe bl 29f60 if(layerSource>0 && layerSource>=BMC_MAX_LAYERS){ - 22104: 2f04 cmp r7, #4 - 22106: f200 8086 bhi.w 22216 + 221e4: 2f04 cmp r7, #4 + 221e6: f200 8086 bhi.w 222f6 sendNotification(BMC_NOTIFY_INVALID_LAYER, layerSource, true); return; } if(layerTarget>0 && layerTarget>=BMC_MAX_LAYERS){ - 2210a: f1b8 0f04 cmp.w r8, #4 - 2210e: f200 808d bhi.w 2222c + 221ea: f1b8 0f04 cmp.w r8, #4 + 221ee: f200 808d bhi.w 2230c sendNotification(BMC_NOTIFY_INVALID_LAYER, layerTarget, true); return; } if(write && incoming.size() != sysExLength){ - 22112: 6be3 ldr r3, [r4, #60] ; 0x3c - 22114: f8b3 3003 ldrh.w r3, [r3, #3] - 22118: 2b0e cmp r3, #14 - 2211a: d141 bne.n 221a0 + 221f2: 6be3 ldr r3, [r4, #60] ; 0x3c + 221f4: f8b3 3003 ldrh.w r3, [r3, #3] + 221f8: 2b0e cmp r3, #14 + 221fa: d141 bne.n 22280 sendNotification(BMC_NOTIFY_INVALID_SIZE, sysExLength, true); return; } if(write){ if(isSwap){ - 2211c: f1b9 0f00 cmp.w r9, #0 - 22120: d061 beq.n 221e6 + 221fc: f1b9 0f00 cmp.w r9, #0 + 22200: d061 beq.n 222c6 bmcStoreLayer copyOfSourceLayer = store.layers[layerSource]; - 22122: eb06 1146 add.w r1, r6, r6, lsl #5 - 22126: f8d4 9000 ldr.w r9, [r4] - 2212a: 2285 movs r2, #133 ; 0x85 - 2212c: a802 add r0, sp, #8 - 2212e: eb06 0681 add.w r6, r6, r1, lsl #2 - 22132: 444e add r6, r9 - 22134: f506 56ab add.w r6, r6, #5472 ; 0x1560 - 22138: 4631 mov r1, r6 - 2213a: f008 fae5 bl 2a708 + 22202: eb06 1146 add.w r1, r6, r6, lsl #5 + 22206: f8d4 9000 ldr.w r9, [r4] + 2220a: 2285 movs r2, #133 ; 0x85 + 2220c: a802 add r0, sp, #8 + 2220e: eb06 0681 add.w r6, r6, r1, lsl #2 + 22212: 444e add r6, r9 + 22214: f506 56ab add.w r6, r6, #5472 ; 0x1560 + 22218: 4631 mov r1, r6 + 2221a: f008 fae9 bl 2a7f0 store.layers[layerSource] = store.layers[layerTarget]; - 2213e: 2285 movs r2, #133 ; 0x85 - 22140: eb05 1345 add.w r3, r5, r5, lsl #5 - 22144: 4630 mov r0, r6 - 22146: eb05 0583 add.w r5, r5, r3, lsl #2 - 2214a: eb09 0105 add.w r1, r9, r5 - 2214e: f501 51ab add.w r1, r1, #5472 ; 0x1560 - 22152: f008 fad9 bl 2a708 + 2221e: 2285 movs r2, #133 ; 0x85 + 22220: eb05 1345 add.w r3, r5, r5, lsl #5 + 22224: 4630 mov r0, r6 + 22226: eb05 0583 add.w r5, r5, r3, lsl #2 + 2222a: eb09 0105 add.w r1, r9, r5 + 2222e: f501 51ab add.w r1, r1, #5472 ; 0x1560 + 22232: f008 fadd bl 2a7f0 store.layers[layerTarget] = copyOfSourceLayer; - 22156: 6820 ldr r0, [r4, #0] - 22158: a902 add r1, sp, #8 - 2215a: 2285 movs r2, #133 ; 0x85 - 2215c: 4428 add r0, r5 - 2215e: f500 50ab add.w r0, r0, #5472 ; 0x1560 - 22162: f008 fad1 bl 2a708 + 22236: 6820 ldr r0, [r4, #0] + 22238: a902 add r1, sp, #8 + 2223a: 2285 movs r2, #133 ; 0x85 + 2223c: 4428 add r0, r5 + 2223e: f500 50ab add.w r0, r0, #5472 ; 0x1560 + 22242: f008 fad5 bl 2a7f0 } else { bmcStoreLayer copyOfSourceLayer = store.layers[layerSource]; store.layers[layerTarget] = copyOfSourceLayer; } saveLayer(layerTarget); - 22166: fa5f f188 uxtb.w r1, r8 - 2216a: 4620 mov r0, r4 - 2216c: f7ff fe94 bl 21e98 + 22246: fa5f f188 uxtb.w r1, r8 + 2224a: 4620 mov r0, r4 + 2224c: f7ff fe94 bl 21f78 saveLayer(layerSource); - 22170: 4620 mov r0, r4 - 22172: b2f9 uxtb r1, r7 - 22174: f7ff fe90 bl 21e98 + 22250: 4620 mov r0, r4 + 22252: b2f9 uxtb r1, r7 + 22254: f7ff fe90 bl 21f78 if(midi.globals.editorConnected()){ - 22178: 6863 ldr r3, [r4, #4] - 2217a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 2217e: 6ddb ldr r3, [r3, #92] ; 0x5c - 22180: 075b lsls r3, r3, #29 - 22182: d503 bpl.n 2218c + 22258: 6863 ldr r3, [r4, #4] + 2225a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 2225e: 6ddb ldr r3, [r3, #92] ; 0x5c + 22260: 075b lsls r3, r3, #29 + 22262: d503 bpl.n 2226c bitSet(flags, bit); - 22184: 6b23 ldr r3, [r4, #48] ; 0x30 - 22186: f043 0304 orr.w r3, r3, #4 - 2218a: 6323 str r3, [r4, #48] ; 0x30 + 22264: 6b23 ldr r3, [r4, #48] ; 0x30 + 22266: f043 0304 orr.w r3, r3, #4 + 2226a: 6323 str r3, [r4, #48] ; 0x30 reloadData(); } sendNotification(BMC_LAYERF_LAYER_COPY_SWAP, layerSource, false); - 2218c: 2300 movs r3, #0 - 2218e: 463a mov r2, r7 - 22190: 2102 movs r1, #2 - 22192: 4620 mov r0, r4 - 22194: 9300 str r3, [sp, #0] - 22196: f7f8 fbf7 bl 1a988 - 2219a: b025 add sp, #148 ; 0x94 - 2219c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 2226c: 2300 movs r3, #0 + 2226e: 463a mov r2, r7 + 22270: 2102 movs r1, #2 + 22272: 4620 mov r0, r4 + 22274: 9300 str r3, [sp, #0] + 22276: f7f8 fbf7 bl 1aa68 + 2227a: b025 add sp, #148 ; 0x94 + 2227c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} sendNotification(BMC_NOTIFY_INVALID_SIZE, sysExLength, true); - 221a0: 2500 movs r5, #0 - 221a2: 2301 movs r3, #1 - 221a4: 220e movs r2, #14 - 221a6: 210a movs r1, #10 - 221a8: 4620 mov r0, r4 - 221aa: 9500 str r5, [sp, #0] - 221ac: f7f8 fbec bl 1a988 - 221b0: b025 add sp, #148 ; 0x94 - 221b2: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 22280: 2500 movs r5, #0 + 22282: 2301 movs r3, #1 + 22284: 220e movs r2, #14 + 22286: 210a movs r1, #10 + 22288: 4620 mov r0, r4 + 2228a: 9500 str r5, [sp, #0] + 2228c: f7f8 fbec bl 1aa68 + 22290: b025 add sp, #148 ; 0x94 + 22292: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 221b6: 7ada ldrb r2, [r3, #11] + 22296: 7ada ldrb r2, [r3, #11] if((t_offset+1) < size()){ - 221b8: 280a cmp r0, #10 + 22298: 280a cmp r0, #10 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 221ba: 7b1f ldrb r7, [r3, #12] - 221bc: ea4f 12c2 mov.w r2, r2, lsl #7 - 221c0: f007 077f and.w r7, r7, #127 ; 0x7f - 221c4: f402 527e and.w r2, r2, #16256 ; 0x3f80 - 221c8: ea47 0602 orr.w r6, r7, r2 - 221cc: 4637 mov r7, r6 + 2229a: 7b1f ldrb r7, [r3, #12] + 2229c: ea4f 12c2 mov.w r2, r2, lsl #7 + 222a0: f007 077f and.w r7, r7, #127 ; 0x7f + 222a4: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 222a8: ea47 0602 orr.w r6, r7, r2 + 222ac: 4637 mov r7, r6 if((t_offset+1) < size()){ - 221ce: d938 bls.n 22242 + 222ae: d938 bls.n 22322 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 221d0: 7b9a ldrb r2, [r3, #14] - 221d2: 7bdd ldrb r5, [r3, #15] - 221d4: 01d2 lsls r2, r2, #7 - 221d6: f005 057f and.w r5, r5, #127 ; 0x7f - 221da: f402 527e and.w r2, r2, #16256 ; 0x3f80 - 221de: ea45 0802 orr.w r8, r5, r2 + 222b0: 7b9a ldrb r2, [r3, #14] + 222b2: 7bdd ldrb r5, [r3, #15] + 222b4: 01d2 lsls r2, r2, #7 + 222b6: f005 057f and.w r5, r5, #127 ; 0x7f + 222ba: f402 527e and.w r2, r2, #16256 ; 0x3f80 + 222be: ea45 0802 orr.w r8, r5, r2 BMC_PRINTLN("layerMessageLayerCopySwap", isSwap, layerSource, layerTarget, incoming.size()); - 221e2: 4645 mov r5, r8 - 221e4: e760 b.n 220a8 + 222c2: 4645 mov r5, r8 + 222c4: e760 b.n 22188 bmcStoreLayer copyOfSourceLayer = store.layers[layerSource]; - 221e6: eb06 1346 add.w r3, r6, r6, lsl #5 - 221ea: 2285 movs r2, #133 ; 0x85 - 221ec: a802 add r0, sp, #8 - 221ee: eb06 0183 add.w r1, r6, r3, lsl #2 - 221f2: 6826 ldr r6, [r4, #0] - 221f4: 4431 add r1, r6 - 221f6: f501 51ab add.w r1, r1, #5472 ; 0x1560 - 221fa: f008 fa85 bl 2a708 + 222c6: eb06 1346 add.w r3, r6, r6, lsl #5 + 222ca: 2285 movs r2, #133 ; 0x85 + 222cc: a802 add r0, sp, #8 + 222ce: eb06 0183 add.w r1, r6, r3, lsl #2 + 222d2: 6826 ldr r6, [r4, #0] + 222d4: 4431 add r1, r6 + 222d6: f501 51ab add.w r1, r1, #5472 ; 0x1560 + 222da: f008 fa89 bl 2a7f0 store.layers[layerTarget] = copyOfSourceLayer; - 221fe: a902 add r1, sp, #8 - 22200: eb05 1345 add.w r3, r5, r5, lsl #5 - 22204: 2285 movs r2, #133 ; 0x85 - 22206: eb05 0583 add.w r5, r5, r3, lsl #2 - 2220a: 1970 adds r0, r6, r5 - 2220c: f500 50ab add.w r0, r0, #5472 ; 0x1560 - 22210: f008 fa7a bl 2a708 - 22214: e7a7 b.n 22166 + 222de: a902 add r1, sp, #8 + 222e0: eb05 1345 add.w r3, r5, r5, lsl #5 + 222e4: 2285 movs r2, #133 ; 0x85 + 222e6: eb05 0583 add.w r5, r5, r3, lsl #2 + 222ea: 1970 adds r0, r6, r5 + 222ec: f500 50ab add.w r0, r0, #5472 ; 0x1560 + 222f0: f008 fa7e bl 2a7f0 + 222f4: e7a7 b.n 22246 sendNotification(BMC_NOTIFY_INVALID_LAYER, layerSource, true); - 22216: 2500 movs r5, #0 - 22218: 2301 movs r3, #1 - 2221a: 463a mov r2, r7 - 2221c: 210c movs r1, #12 - 2221e: 4620 mov r0, r4 - 22220: 9500 str r5, [sp, #0] - 22222: f7f8 fbb1 bl 1a988 - 22226: b025 add sp, #148 ; 0x94 - 22228: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 222f6: 2500 movs r5, #0 + 222f8: 2301 movs r3, #1 + 222fa: 463a mov r2, r7 + 222fc: 210c movs r1, #12 + 222fe: 4620 mov r0, r4 + 22300: 9500 str r5, [sp, #0] + 22302: f7f8 fbb1 bl 1aa68 + 22306: b025 add sp, #148 ; 0x94 + 22308: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} sendNotification(BMC_NOTIFY_INVALID_LAYER, layerTarget, true); - 2222c: 2500 movs r5, #0 - 2222e: 2301 movs r3, #1 - 22230: 4642 mov r2, r8 - 22232: 210c movs r1, #12 - 22234: 4620 mov r0, r4 - 22236: 9500 str r5, [sp, #0] - 22238: f7f8 fba6 bl 1a988 - 2223c: b025 add sp, #148 ; 0x94 - 2223e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 2230c: 2500 movs r5, #0 + 2230e: 2301 movs r3, #1 + 22310: 4642 mov r2, r8 + 22312: 210c movs r1, #12 + 22314: 4620 mov r0, r4 + 22316: 9500 str r5, [sp, #0] + 22318: f7f8 fba6 bl 1aa68 + 2231c: b025 add sp, #148 ; 0x94 + 2231e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} BMC_PRINTLN("layerMessageLayerCopySwap", isSwap, layerSource, layerTarget, incoming.size()); - 22242: 2500 movs r5, #0 + 22322: 2500 movs r5, #0 return 0; - 22244: 46a8 mov r8, r5 - 22246: e72f b.n 220a8 - 22248: 20003e50 .word 0x20003e50 - 2224c: 200023ec .word 0x200023ec - 22250: 20004ba8 .word 0x20004ba8 + 22324: 46a8 mov r8, r5 + 22326: e72f b.n 22188 + 22328: 20003f10 .word 0x20003f10 + 2232c: 200023ec .word 0x200023ec + 22330: 20004c68 .word 0x20004c68 -00022254 : +00022334 : void BMCEditor::layerMessage(bool write){ - 22254: b570 push {r4, r5, r6, lr} + 22334: b570 push {r4, r5, r6, lr} return bitRead(flags, bit); - 22256: 6b04 ldr r4, [r0, #48] ; 0x30 - 22258: b082 sub sp, #8 + 22336: 6b04 ldr r4, [r0, #48] ; 0x30 + 22338: b082 sub sp, #8 if(flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 2225a: 04a5 lsls r5, r4, #18 - 2225c: f3c4 3640 ubfx r6, r4, #13, #1 - 22260: d412 bmi.n 22288 + 2233a: 04a5 lsls r5, r4, #18 + 2233c: f3c4 3640 ubfx r6, r4, #13, #1 + 22340: d412 bmi.n 22368 uint8_t layer = getMessageLayerNumber(); - 22262: 6bc5 ldr r5, [r0, #60] ; 0x3c + 22342: 6bc5 ldr r5, [r0, #60] ; 0x3c if((t_offset+1) < size()){ - 22264: 4603 mov r3, r0 - 22266: f8b5 2003 ldrh.w r2, [r5, #3] - 2226a: 2a07 cmp r2, #7 - 2226c: d80e bhi.n 2228c - 2226e: 4632 mov r2, r6 + 22344: 4603 mov r3, r0 + 22346: f8b5 2003 ldrh.w r2, [r5, #3] + 2234a: 2a07 cmp r2, #7 + 2234c: d80e bhi.n 2236c + 2234e: 4632 mov r2, r6 if(write){ - 22270: b151 cbz r1, 22288 - 22272: 6859 ldr r1, [r3, #4] + 22350: b151 cbz r1, 22368 + 22352: 6859 ldr r1, [r3, #4] this->layer = layer; - 22274: f883 202e strb.w r2, [r3, #46] ; 0x2e - 22278: f8d1 2108 ldr.w r2, [r1, #264] ; 0x108 - 2227c: 6dd2 ldr r2, [r2, #92] ; 0x5c - 2227e: 0752 lsls r2, r2, #29 - 22280: d502 bpl.n 22288 + 22354: f883 202e strb.w r2, [r3, #46] ; 0x2e + 22358: f8d1 2108 ldr.w r2, [r1, #264] ; 0x108 + 2235c: 6dd2 ldr r2, [r2, #92] ; 0x5c + 2235e: 0752 lsls r2, r2, #29 + 22360: d502 bpl.n 22368 bitSet(flags, bit); - 22282: f044 0404 orr.w r4, r4, #4 - 22286: 631c str r4, [r3, #48] ; 0x30 + 22362: f044 0404 orr.w r4, r4, #4 + 22366: 631c str r4, [r3, #48] ; 0x30 } - 22288: b002 add sp, #8 - 2228a: bd70 pop {r4, r5, r6, pc} + 22368: b002 add sp, #8 + 2236a: bd70 pop {r4, r5, r6, pc} return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 2228c: 7aea ldrb r2, [r5, #11] - 2228e: 7b2d ldrb r5, [r5, #12] - 22290: 01d2 lsls r2, r2, #7 - 22292: f005 057f and.w r5, r5, #127 ; 0x7f - 22296: f002 0280 and.w r2, r2, #128 ; 0x80 + 2236c: 7aea ldrb r2, [r5, #11] + 2236e: 7b2d ldrb r5, [r5, #12] + 22370: 01d2 lsls r2, r2, #7 + 22372: f005 057f and.w r5, r5, #127 ; 0x7f + 22376: f002 0280 and.w r2, r2, #128 ; 0x80 uint8_t layer = getMessageLayerNumber(); - 2229a: 432a orrs r2, r5 + 2237a: 432a orrs r2, r5 if(layer>=BMC_MAX_LAYERS){ - 2229c: 2a04 cmp r2, #4 - 2229e: d9e7 bls.n 22270 + 2237c: 2a04 cmp r2, #4 + 2237e: d9e7 bls.n 22350 sendNotification(BMC_NOTIFY_INVALID_LAYER, layer, true); - 222a0: 2301 movs r3, #1 - 222a2: 210c movs r1, #12 - 222a4: 9600 str r6, [sp, #0] - 222a6: f7f8 fb6f bl 1a988 + 22380: 2301 movs r3, #1 + 22382: 210c movs r1, #12 + 22384: 9600 str r6, [sp, #0] + 22386: f7f8 fb6f bl 1aa68 } - 222aa: b002 add sp, #8 - 222ac: bd70 pop {r4, r5, r6, pc} - 222ae: bf00 nop + 2238a: b002 add sp, #8 + 2238c: bd70 pop {r4, r5, r6, pc} + 2238e: bf00 nop -000222b0 : +00022390 : midi.globals.editorConnected() && - 222b0: 6843 ldr r3, [r0, #4] + 22390: 6843 ldr r3, [r0, #4] return bitRead(flags, bit); - 222b2: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 222b6: 6ddb ldr r3, [r3, #92] ; 0x5c + 22392: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 22396: 6ddb ldr r3, [r3, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 222b8: 075b lsls r3, r3, #29 + 22398: 075b lsls r3, r3, #29 void BMCEditor::layerNameMessage(bool write){ - 222ba: b5f0 push {r4, r5, r6, r7, lr} - 222bc: 4604 mov r4, r0 - 222be: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c - 222c2: d57b bpl.n 223bc - 222c4: 6be3 ldr r3, [r4, #60] ; 0x3c - 222c6: 4608 mov r0, r1 + 2239a: b5f0 push {r4, r5, r6, r7, lr} + 2239c: 4604 mov r4, r0 + 2239e: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c + 223a2: d57b bpl.n 2249c + 223a4: 6be3 ldr r3, [r4, #60] ; 0x3c + 223a6: 4608 mov r0, r1 return incoming.sysex[4]; - 222c8: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 223a8: f894 202d ldrb.w r2, [r4, #45] ; 0x2d midi.globals.editorConnected() && - 222cc: 7a5d ldrb r5, [r3, #9] - 222ce: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 222d2: 4295 cmp r5, r2 - 222d4: d075 beq.n 223c2 - 222d6: f894 5044 ldrb.w r5, [r4, #68] ; 0x44 + 223ac: 7a5d ldrb r5, [r3, #9] + 223ae: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 223b2: 4295 cmp r5, r2 + 223b4: d075 beq.n 224a2 + 223b6: f894 5044 ldrb.w r5, [r4, #68] ; 0x44 midi.globals.editorConnected() && - 222da: 072d lsls r5, r5, #28 - 222dc: d56e bpl.n 223bc - 222de: 6b25 ldr r5, [r4, #48] ; 0x30 - 222e0: 04ae lsls r6, r5, #18 - 222e2: d56b bpl.n 223bc + 223ba: 072d lsls r5, r5, #28 + 223bc: d56e bpl.n 2249c + 223be: 6b25 ldr r5, [r4, #48] ; 0x30 + 223c0: 04ae lsls r6, r5, #18 + 223c2: d56b bpl.n 2249c if(write && backupActive()){ - 222e4: 2800 cmp r0, #0 - 222e6: f000 80f0 beq.w 224ca + 223c4: 2800 cmp r0, #0 + 223c6: f000 80f0 beq.w 225aa backupLayerName(sysExLength); - 222ea: 210d movs r1, #13 - 222ec: 4620 mov r0, r4 + 223ca: 210d movs r1, #13 + 223cc: 4620 mov r0, r4 } - 222ee: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 222f2: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} + 223ce: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 223d2: e8bd 40f0 ldmia.w sp!, {r4, r5, r6, r7, lr} backupLayerName(sysExLength); - 222f6: f7f7 b81b b.w 19330 + 223d6: f7f7 b81d b.w 19414 return isBackupMessage() && - 222fa: 072d lsls r5, r5, #28 - 222fc: f100 80a4 bmi.w 22448 - 22300: 7ade ldrb r6, [r3, #11] - 22302: 7b1d ldrb r5, [r3, #12] - 22304: 01f6 lsls r6, r6, #7 - 22306: f005 057f and.w r5, r5, #127 ; 0x7f - 2230a: f406 567e and.w r6, r6, #16256 ; 0x3f80 - 2230e: 4335 orrs r5, r6 + 223da: 072d lsls r5, r5, #28 + 223dc: f100 80a4 bmi.w 22528 + 223e0: 7ade ldrb r6, [r3, #11] + 223e2: 7b1d ldrb r5, [r3, #12] + 223e4: 01f6 lsls r6, r6, #7 + 223e6: f005 057f and.w r5, r5, #127 ; 0x7f + 223ea: f406 567e and.w r6, r6, #16256 ; 0x3f80 + 223ee: 4335 orrs r5, r6 uint8_t layer = getMessageLayerNumber(); - 22310: fa5f fc85 uxtb.w ip, r5 + 223f0: fa5f fc85 uxtb.w ip, r5 if(layer >= BMC_MAX_LAYERS){ - 22314: f1bc 0f04 cmp.w ip, #4 - 22318: d870 bhi.n 223fc - 2231a: b2ad uxth r5, r5 + 223f4: f1bc 0f04 cmp.w ip, #4 + 223f8: d870 bhi.n 224dc + 223fa: b2ad uxth r5, r5 if(write && incoming.size() != sysExLength){ - 2231c: 2800 cmp r0, #0 - 2231e: f000 80d1 beq.w 224c4 - 22322: 2f0d cmp r7, #13 - 22324: f040 8097 bne.w 22456 - 22328: 7bdf ldrb r7, [r3, #15] + 223fc: 2800 cmp r0, #0 + 223fe: f000 80d1 beq.w 225a4 + 22402: 2f0d cmp r7, #13 + 22404: f040 8097 bne.w 22536 + 22408: 7bdf ldrb r7, [r3, #15] store.layers[layer].events[0].name = incoming.get14Bits(9); - 2232a: 4666 mov r6, ip - 2232c: 7b9a ldrb r2, [r3, #14] - 2232e: f007 037f and.w r3, r7, #127 ; 0x7f - 22332: 6820 ldr r0, [r4, #0] - 22334: ea43 13c2 orr.w r3, r3, r2, lsl #7 - 22338: eb0c 124c add.w r2, ip, ip, lsl #5 - 2233c: eb0c 0282 add.w r2, ip, r2, lsl #2 - 22340: 4410 add r0, r2 - 22342: f500 50ab add.w r0, r0, #5472 ; 0x1560 - 22346: 7003 strb r3, [r0, #0] + 2240a: 4666 mov r6, ip + 2240c: 7b9a ldrb r2, [r3, #14] + 2240e: f007 037f and.w r3, r7, #127 ; 0x7f + 22412: 6820 ldr r0, [r4, #0] + 22414: ea43 13c2 orr.w r3, r3, r2, lsl #7 + 22418: eb0c 124c add.w r2, ip, ip, lsl #5 + 2241c: eb0c 0282 add.w r2, ip, r2, lsl #2 + 22420: 4410 add r0, r2 + 22422: f500 50ab add.w r0, r0, #5472 ; 0x1560 + 22426: 7003 strb r3, [r0, #0] bool isBackup() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_BACKUP);} - 22348: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 + 22428: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 midi.globals.editorConnected() && - 2234c: 0719 lsls r1, r3, #28 - 2234e: d471 bmi.n 22434 + 2242c: 0719 lsls r1, r3, #28 + 2242e: d471 bmi.n 22514 saveLayer(layer); - 22350: 4661 mov r1, ip - 22352: 4620 mov r0, r4 - 22354: f7ff fda0 bl 21e98 + 22430: 4661 mov r1, ip + 22432: 4620 mov r0, r4 + 22434: f7ff fda0 bl 21f78 if(midi.globals.editorConnected()){ - 22358: 6863 ldr r3, [r4, #4] - 2235a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 2235e: 6ddb ldr r3, [r3, #92] ; 0x5c - 22360: 075f lsls r7, r3, #29 - 22362: f100 80a4 bmi.w 224ae + 22438: 6863 ldr r3, [r4, #4] + 2243a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 2243e: 6ddb ldr r3, [r3, #92] ; 0x5c + 22440: 075f lsls r7, r3, #29 + 22442: f100 80a4 bmi.w 2258e buff.prepareEditorMessage(port, deviceId, BMC_LAYERF_LAYER_NAME, flag, layer); - 22366: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 2236a: b2ed uxtb r5, r5 - 2236c: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 22446: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 2244a: b2ed uxtb r5, r5 + 2244c: f894 202d ldrb.w r2, [r4, #45] ; 0x2d prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 22370: 9501 str r5, [sp, #4] - 22372: 2302 movs r3, #2 + 22450: 9501 str r5, [sp, #4] + 22452: 2302 movs r3, #2 struct BMCMidiMessage { - 22374: ad41 add r5, sp, #260 ; 0x104 - 22376: 2700 movs r7, #0 + 22454: ad41 add r5, sp, #260 ; 0x104 + 22456: 2700 movs r7, #0 prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 22378: 9300 str r3, [sp, #0] - 2237a: 2301 movs r3, #1 - 2237c: 4628 mov r0, r5 + 22458: 9300 str r3, [sp, #0] + 2245a: 2301 movs r3, #1 + 2245c: 4628 mov r0, r5 struct BMCMidiMessage { - 2237e: 602f str r7, [r5, #0] - 22380: 712f strb r7, [r5, #4] + 2245e: 602f str r7, [r5, #0] + 22460: 712f strb r7, [r5, #4] prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 22382: f7f8 fd9f bl 1aec4 + 22462: f7f8 fd9f bl 1afa4 buff.appendToSysEx14Bits(store.layers[layer].events[0].name); - 22386: 6823 ldr r3, [r4, #0] - 22388: eb06 1246 add.w r2, r6, r6, lsl #5 - 2238c: eb06 0282 add.w r2, r6, r2, lsl #2 - 22390: 4413 add r3, r2 - 22392: f8b5 2003 ldrh.w r2, [r5, #3] - 22396: f503 53ab add.w r3, r3, #5472 ; 0x1560 + 22466: 6823 ldr r3, [r4, #0] + 22468: eb06 1246 add.w r2, r6, r6, lsl #5 + 2246c: eb06 0282 add.w r2, r6, r2, lsl #2 + 22470: 4413 add r3, r2 + 22472: f8b5 2003 ldrh.w r2, [r5, #3] + 22476: f503 53ab add.w r3, r3, #5472 ; 0x1560 if(sysLength + 2247a: 2afd cmp r2, #253 ; 0xfd + 2247c: 781b ldrb r3, [r3, #0] + 2247e: d938 bls.n 224f2 sendToEditor(buff); - 223a0: 2301 movs r3, #1 - 223a2: 2000 movs r0, #0 - 223a4: a944 add r1, sp, #272 ; 0x110 - 223a6: 22f7 movs r2, #247 ; 0xf7 - 223a8: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 - 223ac: 4668 mov r0, sp - 223ae: f008 f9ab bl 2a708 - 223b2: 4620 mov r0, r4 - 223b4: e895 000e ldmia.w r5, {r1, r2, r3} - 223b8: f7f8 fa88 bl 1a8cc -} - 223bc: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 223c0: bdf0 pop {r4, r5, r6, r7, pc} + 22480: 2301 movs r3, #1 + 22482: 2000 movs r0, #0 + 22484: a944 add r1, sp, #272 ; 0x110 + 22486: 22f7 movs r2, #247 ; 0xf7 + 22488: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 + 2248c: 4668 mov r0, sp + 2248e: f008 f9af bl 2a7f0 + 22492: 4620 mov r0, r4 + 22494: e895 000e ldmia.w r5, {r1, r2, r3} + 22498: f7f8 fa88 bl 1a9ac +} + 2249c: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 224a0: bdf0 pop {r4, r5, r6, r7, pc} getMessageDeviceId() == deviceId && - 223c2: 781d ldrb r5, [r3, #0] - 223c4: 428d cmp r5, r1 - 223c6: d186 bne.n 222d6 + 224a2: 781d ldrb r5, [r3, #0] + 224a4: 428d cmp r5, r1 + 224a6: d186 bne.n 223b6 return getData1() | (getData2() << 8); - 223c8: f8b3 6003 ldrh.w r6, [r3, #3] + 224a8: f8b3 6003 ldrh.w r6, [r3, #3] incoming.peekSysEx(4) == deviceId && - 223cc: 2e0a cmp r6, #10 - 223ce: b237 sxth r7, r6 - 223d0: d981 bls.n 222d6 + 224ac: 2e0a cmp r6, #10 + 224ae: b237 sxth r7, r6 + 224b0: d981 bls.n 223b6 bool isLayer() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_LAYER);} - 223d2: f894 5044 ldrb.w r5, [r4, #68] ; 0x44 + 224b2: f894 5044 ldrb.w r5, [r4, #68] ; 0x44 return (isValidMessage(checkSysExSize) && isLayerMessage()); - 223d6: f015 0f02 tst.w r5, #2 - 223da: f43f af7e beq.w 222da + 224b6: f015 0f02 tst.w r5, #2 + 224ba: f43f af7e beq.w 223ba if(write && backupActive()){ - 223de: 2800 cmp r0, #0 - 223e0: d18b bne.n 222fa + 224be: 2800 cmp r0, #0 + 224c0: d18b bne.n 223da return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 223e2: 7ad8 ldrb r0, [r3, #11] - 223e4: 7b1d ldrb r5, [r3, #12] - 223e6: 01c3 lsls r3, r0, #7 - 223e8: f005 057f and.w r5, r5, #127 ; 0x7f - 223ec: f403 537e and.w r3, r3, #16256 ; 0x3f80 - 223f0: 431d orrs r5, r3 + 224c2: 7ad8 ldrb r0, [r3, #11] + 224c4: 7b1d ldrb r5, [r3, #12] + 224c6: 01c3 lsls r3, r0, #7 + 224c8: f005 057f and.w r5, r5, #127 ; 0x7f + 224cc: f403 537e and.w r3, r3, #16256 ; 0x3f80 + 224d0: 431d orrs r5, r3 uint8_t layer = getMessageLayerNumber(); - 223f2: fa5f fc85 uxtb.w ip, r5 + 224d2: fa5f fc85 uxtb.w ip, r5 if(layer >= BMC_MAX_LAYERS){ - 223f6: f1bc 0f04 cmp.w ip, #4 - 223fa: d962 bls.n 224c2 + 224d6: f1bc 0f04 cmp.w ip, #4 + 224da: d962 bls.n 225a2 sendNotification(BMC_NOTIFY_INVALID_LAYER, layer, true); - 223fc: 2500 movs r5, #0 - 223fe: 2301 movs r3, #1 - 22400: 4662 mov r2, ip - 22402: 210c movs r1, #12 - 22404: 4620 mov r0, r4 - 22406: 9500 str r5, [sp, #0] - 22408: f7f8 fabe bl 1a988 -} - 2240c: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 22410: bdf0 pop {r4, r5, r6, r7, pc} + 224dc: 2500 movs r5, #0 + 224de: 2301 movs r3, #1 + 224e0: 4662 mov r2, ip + 224e2: 210c movs r1, #12 + 224e4: 4620 mov r0, r4 + 224e6: 9500 str r5, [sp, #0] + 224e8: f7f8 fabe bl 1aa68 +} + 224ec: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 224f0: bdf0 pop {r4, r5, r6, r7, pc} sysex[sysLength++] = value; - 22412: 1c50 adds r0, r2, #1 + 224f2: 1c50 adds r0, r2, #1 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 22414: f003 017f and.w r1, r3, #127 ; 0x7f + 224f4: f003 017f and.w r1, r3, #127 ; 0x7f sysex[sysLength++] = value; - 22418: 442a add r2, r5 + 224f8: 442a add r2, r5 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 2241a: 09db lsrs r3, r3, #7 + 224fa: 09db lsrs r3, r3, #7 void setData2(uint8_t t_data2) { data2 = t_data2; } - 2241c: 712f strb r7, [r5, #4] + 224fc: 712f strb r7, [r5, #4] setData1(value & 0xFF); - 2241e: 70e8 strb r0, [r5, #3] + 224fe: 70e8 strb r0, [r5, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 22420: 7153 strb r3, [r2, #5] + 22500: 7153 strb r3, [r2, #5] uint16_t sysLength = size(); - 22422: f8b5 3003 ldrh.w r3, [r5, #3] + 22502: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 22506: 2bfd cmp r3, #253 ; 0xfd + 22508: d8ba bhi.n 22480 sysex[sysLength++] = value; - 2242a: 18ea adds r2, r5, r3 - 2242c: 3301 adds r3, #1 - 2242e: 7151 strb r1, [r2, #5] + 2250a: 18ea adds r2, r5, r3 + 2250c: 3301 adds r3, #1 + 2250e: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 22430: 70eb strb r3, [r5, #3] + 22510: 70eb strb r3, [r5, #3] return true; - 22432: e7b5 b.n 223a0 + 22512: e7b5 b.n 22480 midi.globals.editorConnected() && - 22434: 6863 ldr r3, [r4, #4] - 22436: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 2243a: 6ddb ldr r3, [r3, #92] ; 0x5c + 22514: 6863 ldr r3, [r4, #4] + 22516: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 2251a: 6ddb ldr r3, [r3, #92] ; 0x5c return isBackupMessage() && - 2243c: 075a lsls r2, r3, #29 - 2243e: d587 bpl.n 22350 - 22440: 6b23 ldr r3, [r4, #48] ; 0x30 + 2251c: 075a lsls r2, r3, #29 + 2251e: d587 bpl.n 22430 + 22520: 6b23 ldr r3, [r4, #48] ; 0x30 midi.globals.editorConnected() && - 22442: 049b lsls r3, r3, #18 - 22444: d584 bpl.n 22350 - 22446: e78e b.n 22366 - 22448: 6b25 ldr r5, [r4, #48] ; 0x30 - 2244a: 04ad lsls r5, r5, #18 - 2244c: f53f af4d bmi.w 222ea + 22522: 049b lsls r3, r3, #18 + 22524: d584 bpl.n 22430 + 22526: e78e b.n 22446 + 22528: 6b25 ldr r5, [r4, #48] ; 0x30 + 2252a: 04ad lsls r5, r5, #18 + 2252c: f53f af4d bmi.w 223ca if((t_offset+1) < size()){ - 22450: 2e07 cmp r6, #7 - 22452: f63f af55 bhi.w 22300 - 22456: 2120 movs r1, #32 - 22458: 4820 ldr r0, [pc, #128] ; (224dc ) - 2245a: f00a f875 bl 2c548 - 2245e: 2101 movs r1, #1 - 22460: 481f ldr r0, [pc, #124] ; (224e0 ) + 22530: 2e07 cmp r6, #7 + 22532: f63f af55 bhi.w 223e0 + 22536: 2120 movs r1, #32 + 22538: 4820 ldr r0, [pc, #128] ; (225bc ) + 2253a: f00a f879 bl 2c630 + 2253e: 2101 movs r1, #1 + 22540: 481f ldr r0, [pc, #124] ; (225c0 ) sendNotification(BMC_NOTIFY_INVALID_SIZE, sysExLength, true); - 22462: 2500 movs r5, #0 - 22464: f00a f870 bl 2c548 + 22542: 2500 movs r5, #0 + 22544: f00a f874 bl 2c630 BMC_PRINTLN("pageNameMessage: incoming.size()", incoming.size(), "sysExLength", sysExLength); - 22468: 6be3 ldr r3, [r4, #60] ; 0x3c + 22548: 6be3 ldr r3, [r4, #60] ; 0x3c size_t print(int n) { return print((long)n); } - 2246a: 481e ldr r0, [pc, #120] ; (224e4 ) - 2246c: f8b3 1003 ldrh.w r1, [r3, #3] - 22470: f007 fcf4 bl 29e5c - 22474: 2101 movs r1, #1 - 22476: 481a ldr r0, [pc, #104] ; (224e0 ) - 22478: f00a f866 bl 2c548 - 2247c: 210b movs r1, #11 - 2247e: 481a ldr r0, [pc, #104] ; (224e8 ) - 22480: f00a f862 bl 2c548 - 22484: 2101 movs r1, #1 - 22486: 4816 ldr r0, [pc, #88] ; (224e0 ) - 22488: f00a f85e bl 2c548 + 2254a: 481e ldr r0, [pc, #120] ; (225c4 ) + 2254c: f8b3 1003 ldrh.w r1, [r3, #3] + 22550: f007 fcfa bl 29f48 + 22554: 2101 movs r1, #1 + 22556: 481a ldr r0, [pc, #104] ; (225c0 ) + 22558: f00a f86a bl 2c630 + 2255c: 210b movs r1, #11 + 2255e: 481a ldr r0, [pc, #104] ; (225c8 ) + 22560: f00a f866 bl 2c630 + 22564: 2101 movs r1, #1 + 22566: 4816 ldr r0, [pc, #88] ; (225c0 ) + 22568: f00a f862 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 2248c: 2300 movs r3, #0 - 2248e: 220a movs r2, #10 - 22490: 210d movs r1, #13 - 22492: 4814 ldr r0, [pc, #80] ; (224e4 ) - 22494: f007 fd0a bl 29eac + 2256c: 2300 movs r3, #0 + 2256e: 220a movs r2, #10 + 22570: 210d movs r1, #13 + 22572: 4814 ldr r0, [pc, #80] ; (225c4 ) + 22574: f007 fd10 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 22498: 4812 ldr r0, [pc, #72] ; (224e4 ) - 2249a: f007 fceb bl 29e74 + 22578: 4812 ldr r0, [pc, #72] ; (225c4 ) + 2257a: f007 fcf1 bl 29f60 sendNotification(BMC_NOTIFY_INVALID_SIZE, sysExLength, true); - 2249e: 2301 movs r3, #1 - 224a0: 220d movs r2, #13 - 224a2: 210a movs r1, #10 - 224a4: 4620 mov r0, r4 - 224a6: 9500 str r5, [sp, #0] - 224a8: f7f8 fa6e bl 1a988 + 2257e: 2301 movs r3, #1 + 22580: 220d movs r2, #13 + 22582: 210a movs r1, #10 + 22584: 4620 mov r0, r4 + 22586: 9500 str r5, [sp, #0] + 22588: f7f8 fa6e bl 1aa68 return; - 224ac: e786 b.n 223bc + 2258c: e786 b.n 2249c bitSet(flags, bit); - 224ae: 6b23 ldr r3, [r4, #48] ; 0x30 - 224b0: b2ed uxtb r5, r5 + 2258e: 6b23 ldr r3, [r4, #48] ; 0x30 + 22590: b2ed uxtb r5, r5 buff.prepareEditorMessage(port, deviceId, BMC_LAYERF_LAYER_NAME, flag, layer); - 224b2: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 224b6: f043 0304 orr.w r3, r3, #4 - 224ba: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 224be: 6323 str r3, [r4, #48] ; 0x30 + 22592: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 22596: f043 0304 orr.w r3, r3, #4 + 2259a: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 2259e: 6323 str r3, [r4, #48] ; 0x30 } - 224c0: e756 b.n 22370 + 225a0: e756 b.n 22450 return BMC_MIDI_ARRAY_TO_8BITS(t_offset, sysex); - 224c2: b2ad uxth r5, r5 + 225a2: b2ad uxth r5, r5 store.layers[layer].events[0].name = incoming.get14Bits(9); - 224c4: 4666 mov r6, ip - 224c6: b2ed uxtb r5, r5 - 224c8: e752 b.n 22370 - 224ca: f8b3 5003 ldrh.w r5, [r3, #3] + 225a4: 4666 mov r6, ip + 225a6: b2ed uxtb r5, r5 + 225a8: e752 b.n 22450 + 225aa: f8b3 5003 ldrh.w r5, [r3, #3] if((t_offset+1) < size()){ - 224ce: 2d07 cmp r5, #7 + 225ae: 2d07 cmp r5, #7 return getData1() | (getData2() << 8); - 224d0: b22f sxth r7, r5 + 225b0: b22f sxth r7, r5 if((t_offset+1) < size()){ - 224d2: f63f af15 bhi.w 22300 - 224d6: 4605 mov r5, r0 - 224d8: 4606 mov r6, r0 - 224da: e749 b.n 22370 - 224dc: 20003bf8 .word 0x20003bf8 - 224e0: 200023ec .word 0x200023ec - 224e4: 20004ba8 .word 0x20004ba8 - 224e8: 20003dc8 .word 0x20003dc8 - -000224ec : + 225b2: f63f af15 bhi.w 223e0 + 225b6: 4605 mov r5, r0 + 225b8: 4606 mov r6, r0 + 225ba: e749 b.n 22450 + 225bc: 20003cb8 .word 0x20003cb8 + 225c0: 200023ec .word 0x200023ec + 225c4: 20004c68 .word 0x20004c68 + 225c8: 20003e88 .word 0x20003e88 + +000225cc : return bitRead(flags, bit); - 224ec: 6b03 ldr r3, [r0, #48] ; 0x30 + 225cc: 6b03 ldr r3, [r0, #48] ; 0x30 if(flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 224ee: 049a lsls r2, r3, #18 - 224f0: d435 bmi.n 2255e + 225ce: 049a lsls r2, r3, #18 + 225d0: d435 bmi.n 2263e void BMCEditor::layerSendChangeMessage(bool onlyIfConnected){ - 224f2: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 224f6: 4604 mov r4, r0 - 224f8: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 + 225d2: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 225d6: 4604 mov r4, r0 + 225d8: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 if(onlyIfConnected && !midi.globals.editorConnected()){ - 224fc: b129 cbz r1, 2250a - 224fe: 6843 ldr r3, [r0, #4] - 22500: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 22504: 6ddb ldr r3, [r3, #92] ; 0x5c - 22506: 075b lsls r3, r3, #29 - 22508: d525 bpl.n 22556 + 225dc: b129 cbz r1, 225ea + 225de: 6843 ldr r3, [r0, #4] + 225e0: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 225e4: 6ddb ldr r3, [r3, #92] ; 0x5c + 225e6: 075b lsls r3, r3, #29 + 225e8: d525 bpl.n 22636 buff.prepareEditorMessage(port, deviceId, BMC_LAYERF_LAYER, flag, layer); - 2250a: f894 702e ldrb.w r7, [r4, #46] ; 0x2e + 225ea: f894 702e ldrb.w r7, [r4, #46] ; 0x2e struct BMCMidiMessage { - 2250e: ad41 add r5, sp, #260 ; 0x104 - 22510: 2600 movs r6, #0 + 225ee: ad41 add r5, sp, #260 ; 0x104 + 225f0: 2600 movs r6, #0 prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 22512: 2302 movs r3, #2 - 22514: fa1f f887 uxth.w r8, r7 - 22518: 4628 mov r0, r5 + 225f2: 2302 movs r3, #2 + 225f4: fa1f f887 uxth.w r8, r7 + 225f8: 4628 mov r0, r5 struct BMCMidiMessage { - 2251a: 602e str r6, [r5, #0] - 2251c: 712e strb r6, [r5, #4] + 225fa: 602e str r6, [r5, #0] + 225fc: 712e strb r6, [r5, #4] prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 2251e: 9300 str r3, [sp, #0] - 22520: 4633 mov r3, r6 - 22522: f8cd 8004 str.w r8, [sp, #4] - 22526: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 2252a: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 2252e: f7f8 fcc9 bl 1aec4 + 225fe: 9300 str r3, [sp, #0] + 22600: 4633 mov r3, r6 + 22602: f8cd 8004 str.w r8, [sp, #4] + 22606: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 2260a: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 2260e: f7f8 fcc9 bl 1afa4 uint16_t sysLength = size(); - 22532: f8b5 3003 ldrh.w r3, [r5, #3] + 22612: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 22616: 2bfd cmp r3, #253 ; 0xfd + 22618: d912 bls.n 22640 sendToEditor(buff); - 2253a: 2301 movs r3, #1 - 2253c: 2100 movs r1, #0 - 2253e: 22f7 movs r2, #247 ; 0xf7 - 22540: 4668 mov r0, sp - 22542: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 - 22546: a944 add r1, sp, #272 ; 0x110 - 22548: f008 f8de bl 2a708 - 2254c: 4620 mov r0, r4 - 2254e: e895 000e ldmia.w r5, {r1, r2, r3} - 22552: f7f8 f9bb bl 1a8cc -} - 22556: f50d 7d02 add.w sp, sp, #520 ; 0x208 - 2255a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 2255e: 4770 bx lr + 2261a: 2301 movs r3, #1 + 2261c: 2100 movs r1, #0 + 2261e: 22f7 movs r2, #247 ; 0xf7 + 22620: 4668 mov r0, sp + 22622: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 + 22626: a944 add r1, sp, #272 ; 0x110 + 22628: f008 f8e2 bl 2a7f0 + 2262c: 4620 mov r0, r4 + 2262e: e895 000e ldmia.w r5, {r1, r2, r3} + 22632: f7f8 f9bb bl 1a9ac +} + 22636: f50d 7d02 add.w sp, sp, #520 ; 0x208 + 2263a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 2263e: 4770 bx lr sysex[sysLength++] = value; - 22560: 1c5a adds r2, r3, #1 - 22562: 442b add r3, r5 + 22640: 1c5a adds r2, r3, #1 + 22642: 442b add r3, r5 void setData2(uint8_t t_data2) { data2 = t_data2; } - 22564: 712e strb r6, [r5, #4] + 22644: 712e strb r6, [r5, #4] setData1(value & 0xFF); - 22566: 70ea strb r2, [r5, #3] + 22646: 70ea strb r2, [r5, #3] sysex[sysLength++] = value; - 22568: 715e strb r6, [r3, #5] + 22648: 715e strb r6, [r3, #5] uint16_t sysLength = size(); - 2256a: f8b5 3003 ldrh.w r3, [r5, #3] + 2264a: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 2264e: 2bfd cmp r3, #253 ; 0xfd + 22650: d8e3 bhi.n 2261a sysex[sysLength++] = value; - 22572: 1c5a adds r2, r3, #1 - 22574: 442b add r3, r5 + 22652: 1c5a adds r2, r3, #1 + 22654: 442b add r3, r5 appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 22576: ea4f 18d8 mov.w r8, r8, lsr #7 + 22656: ea4f 18d8 mov.w r8, r8, lsr #7 setData1(value & 0xFF); - 2257a: 70ea strb r2, [r5, #3] + 2265a: 70ea strb r2, [r5, #3] sysex[sysLength++] = value; - 2257c: 2205 movs r2, #5 - 2257e: 715a strb r2, [r3, #5] + 2265c: 2205 movs r2, #5 + 2265e: 715a strb r2, [r3, #5] uint16_t sysLength = size(); - 22580: f8b5 3003 ldrh.w r3, [r5, #3] + 22660: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 22664: 2bfd cmp r3, #253 ; 0xfd + 22666: d8d8 bhi.n 2261a sysex[sysLength++] = value; - 22588: 1c5a adds r2, r3, #1 - 2258a: 442b add r3, r5 + 22668: 1c5a adds r2, r3, #1 + 2266a: 442b add r3, r5 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 2258c: f007 077f and.w r7, r7, #127 ; 0x7f + 2266c: f007 077f and.w r7, r7, #127 ; 0x7f setData1(value & 0xFF); - 22590: 70ea strb r2, [r5, #3] + 22670: 70ea strb r2, [r5, #3] sysex[sysLength++] = value; - 22592: f883 8005 strb.w r8, [r3, #5] + 22672: f883 8005 strb.w r8, [r3, #5] uint16_t sysLength = size(); - 22596: f8b5 3003 ldrh.w r3, [r5, #3] + 22676: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 2267a: 2bfd cmp r3, #253 ; 0xfd + 2267c: d8cd bhi.n 2261a sysex[sysLength++] = value; - 2259e: 18ea adds r2, r5, r3 - 225a0: 3301 adds r3, #1 - 225a2: 7157 strb r7, [r2, #5] + 2267e: 18ea adds r2, r5, r3 + 22680: 3301 adds r3, #1 + 22682: 7157 strb r7, [r2, #5] setData1(value & 0xFF); - 225a4: 70eb strb r3, [r5, #3] + 22684: 70eb strb r3, [r5, #3] return true; - 225a6: e7c8 b.n 2253a + 22686: e7c8 b.n 2261a -000225a8 : +00022688 : midi.globals.editorConnected() && - 225a8: 6843 ldr r3, [r0, #4] - 225aa: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 225ae: 6ddb ldr r3, [r3, #92] ; 0x5c + 22688: 6843 ldr r3, [r0, #4] + 2268a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 2268e: 6ddb ldr r3, [r3, #92] ; 0x5c incoming.peekSysEx(4) == deviceId && - 225b0: 075b lsls r3, r3, #29 - 225b2: d505 bpl.n 225c0 - 225b4: 6bc3 ldr r3, [r0, #60] ; 0x3c + 22690: 075b lsls r3, r3, #29 + 22692: d505 bpl.n 226a0 + 22694: 6bc3 ldr r3, [r0, #60] ; 0x3c midi.globals.editorConnected() && - 225b6: f890 c02d ldrb.w ip, [r0, #45] ; 0x2d - 225ba: 7a5a ldrb r2, [r3, #9] - 225bc: 4594 cmp ip, r2 - 225be: d000 beq.n 225c2 - 225c0: 4770 bx lr + 22696: f890 c02d ldrb.w ip, [r0, #45] ; 0x2d + 2269a: 7a5a ldrb r2, [r3, #9] + 2269c: 4594 cmp ip, r2 + 2269e: d000 beq.n 226a2 + 226a0: 4770 bx lr getMessageDeviceId() == deviceId && - 225c2: f890 c02c ldrb.w ip, [r0, #44] ; 0x2c - 225c6: 781a ldrb r2, [r3, #0] - 225c8: 4594 cmp ip, r2 - 225ca: d1f9 bne.n 225c0 + 226a2: f890 c02c ldrb.w ip, [r0, #44] ; 0x2c + 226a6: 781a ldrb r2, [r3, #0] + 226a8: 4594 cmp ip, r2 + 226aa: d1f9 bne.n 226a0 incoming.peekSysEx(4) == deviceId && - 225cc: f8b3 3003 ldrh.w r3, [r3, #3] - 225d0: 2b0a cmp r3, #10 - 225d2: d9f5 bls.n 225c0 - 225d4: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 226ac: f8b3 3003 ldrh.w r3, [r3, #3] + 226b0: 2b0a cmp r3, #10 + 226b2: d9f5 bls.n 226a0 + 226b4: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 return (isValidMessage(checkSysExSize) && isLayerMessage()); - 225d8: 079a lsls r2, r3, #30 - 225da: d5f1 bpl.n 225c0 + 226b8: 079a lsls r2, r3, #30 + 226ba: d5f1 bpl.n 226a0 midi.globals.editorConnected() && - 225dc: 071a lsls r2, r3, #28 - 225de: d502 bpl.n 225e6 - 225e0: 6b03 ldr r3, [r0, #48] ; 0x30 - 225e2: 049b lsls r3, r3, #18 - 225e4: d4ec bmi.n 225c0 + 226bc: 071a lsls r2, r3, #28 + 226be: d502 bpl.n 226c6 + 226c0: 6b03 ldr r3, [r0, #48] ; 0x30 + 226c2: 049b lsls r3, r3, #18 + 226c4: d4ec bmi.n 226a0 if(backupActive() || !write){ - 225e6: 2900 cmp r1, #0 - 225e8: d0ea beq.n 225c0 - 225ea: f7ff bd4f b.w 2208c - 225ee: bf00 nop + 226c6: 2900 cmp r1, #0 + 226c8: d0ea beq.n 226a0 + 226ca: f7ff bd4f b.w 2216c + 226ce: bf00 nop -000225f0 : +000226d0 : return incoming.sysex[8]; - 225f0: 6bc2 ldr r2, [r0, #60] ; 0x3c - 225f2: 7b52 ldrb r2, [r2, #13] + 226d0: 6bc2 ldr r2, [r0, #60] ; 0x3c + 226d2: 7b52 ldrb r2, [r2, #13] switch(getMessageRequestId()){ - 225f4: 2a01 cmp r2, #1 - 225f6: d003 beq.n 22600 - 225f8: 2a02 cmp r2, #2 - 225fa: d00d beq.n 22618 - 225fc: b132 cbz r2, 2260c + 226d4: 2a01 cmp r2, #1 + 226d6: d003 beq.n 226e0 + 226d8: 2a02 cmp r2, #2 + 226da: d00d beq.n 226f8 + 226dc: b132 cbz r2, 226ec } - 225fe: 4770 bx lr + 226de: 4770 bx lr bool isWrite() {return bitRead(flags,BMC_EDITOR_SYSEX_FLAG_WRITE);} - 22600: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 + 226e0: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 layerNameMessage(isWriteMessage()); - 22604: f001 0101 and.w r1, r1, #1 - 22608: f7ff be52 b.w 222b0 - 2260c: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 + 226e4: f001 0101 and.w r1, r1, #1 + 226e8: f7ff be52 b.w 22390 + 226ec: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 layerMessage(isWriteMessage()); - 22610: f001 0101 and.w r1, r1, #1 - 22614: f7ff be1e b.w 22254 - 22618: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 + 226f0: f001 0101 and.w r1, r1, #1 + 226f4: f7ff be1e b.w 22334 + 226f8: f890 1044 ldrb.w r1, [r0, #68] ; 0x44 layerMessageLayerCopySwap(isWriteMessage()); - 2261c: f001 0101 and.w r1, r1, #1 - 22620: f7ff bfc2 b.w 225a8 + 226fc: f001 0101 and.w r1, r1, #1 + 22700: f7ff bfc2 b.w 22688 -00022624 : +00022704 : */ #include "editor/BMC-Editor.h" void BMCEditor::utilityCommand(){ dataForBMC.reset(); if(dataForBMC.set(isWriteMessage(), incoming)){ - 22624: 6bc3 ldr r3, [r0, #60] ; 0x3c + 22704: 6bc3 ldr r3, [r0, #60] ; 0x3c } void reset(){ group = 0; - 22626: 2200 movs r2, #0 + 22706: 2200 movs r2, #0 void BMCEditor::utilityCommand(){ - 22628: b5f0 push {r4, r5, r6, r7, lr} - 2262a: f880 2035 strb.w r2, [r0, #53] ; 0x35 + 22708: b5f0 push {r4, r5, r6, r7, lr} + 2270a: f880 2035 strb.w r2, [r0, #53] ; 0x35 parameter = 0; - 2262e: f880 2036 strb.w r2, [r0, #54] ; 0x36 + 2270e: f880 2036 strb.w r2, [r0, #54] ; 0x36 value = 0; - 22632: f880 2037 strb.w r2, [r0, #55] ; 0x37 - 22636: f880 2038 strb.w r2, [r0, #56] ; 0x38 - 2263a: f880 2039 strb.w r2, [r0, #57] ; 0x39 - 2263e: f880 203a strb.w r2, [r0, #58] ; 0x3a + 22712: f880 2037 strb.w r2, [r0, #55] ; 0x37 + 22716: f880 2038 strb.w r2, [r0, #56] ; 0x38 + 2271a: f880 2039 strb.w r2, [r0, #57] ; 0x39 + 2271e: f880 203a strb.w r2, [r0, #58] ; 0x3a if(message.size()==18){ - 22642: f8b3 6003 ldrh.w r6, [r3, #3] - 22646: f893 c00e ldrb.w ip, [r3, #14] - 2264a: 2e12 cmp r6, #18 - 2264c: 7bd9 ldrb r1, [r3, #15] - 2264e: 7c1f ldrb r7, [r3, #16] - 22650: 7c5a ldrb r2, [r3, #17] - 22652: 7c9c ldrb r4, [r3, #18] - 22654: 7cdd ldrb r5, [r3, #19] - 22656: f890 e044 ldrb.w lr, [r0, #68] ; 0x44 - 2265a: 7d1b ldrb r3, [r3, #20] - 2265c: d000 beq.n 22660 + 22722: f8b3 6003 ldrh.w r6, [r3, #3] + 22726: f893 c00e ldrb.w ip, [r3, #14] + 2272a: 2e12 cmp r6, #18 + 2272c: 7bd9 ldrb r1, [r3, #15] + 2272e: 7c1f ldrb r7, [r3, #16] + 22730: 7c5a ldrb r2, [r3, #17] + 22732: 7c9c ldrb r4, [r3, #18] + 22734: 7cdd ldrb r5, [r3, #19] + 22736: f890 e044 ldrb.w lr, [r0, #68] ; 0x44 + 2273a: 7d1b ldrb r3, [r3, #20] + 2273c: d000 beq.n 22740 flags.on(BMC_EDITOR_FLAG_DATA_FOR_BMC_AVAILABLE); } } - 2265e: bdf0 pop {r4, r5, r6, r7, pc} + 2273e: bdf0 pop {r4, r5, r6, r7, pc} return BMC_MIDI_ARRAY_TO_32BITS(t_offset, sysex) & BMC_MASK_32; - 22660: f003 037f and.w r3, r3, #127 ; 0x7f - 22664: 01ed lsls r5, r5, #7 - 22666: 03a4 lsls r4, r4, #14 - 22668: f00e 0e01 and.w lr, lr, #1 - 2266c: ea43 7307 orr.w r3, r3, r7, lsl #28 - 22670: f405 557e and.w r5, r5, #16256 ; 0x3f80 - 22674: 0552 lsls r2, r2, #21 - 22676: f404 14fe and.w r4, r4, #2080768 ; 0x1fc000 - 2267a: 432b orrs r3, r5 + 22740: f003 037f and.w r3, r3, #127 ; 0x7f + 22744: 01ed lsls r5, r5, #7 + 22746: 03a4 lsls r4, r4, #14 + 22748: f00e 0e01 and.w lr, lr, #1 + 2274c: ea43 7307 orr.w r3, r3, r7, lsl #28 + 22750: f405 557e and.w r5, r5, #16256 ; 0x3f80 + 22754: 0552 lsls r2, r2, #21 + 22756: f404 14fe and.w r4, r4, #2080768 ; 0x1fc000 + 2275a: 432b orrs r3, r5 return sysex[t_offset] & 0x7F; - 2267c: f00c 0c7f and.w ip, ip, #127 ; 0x7f + 2275c: f00c 0c7f and.w ip, ip, #127 ; 0x7f return BMC_MIDI_ARRAY_TO_32BITS(t_offset, sysex) & BMC_MASK_32; - 22680: f002 627e and.w r2, r2, #266338304 ; 0xfe00000 + 22760: f002 627e and.w r2, r2, #266338304 ; 0xfe00000 return sysex[t_offset] & 0x7F; - 22684: f001 017f and.w r1, r1, #127 ; 0x7f + 22764: f001 017f and.w r1, r1, #127 ; 0x7f return BMC_MIDI_ARRAY_TO_32BITS(t_offset, sysex) & BMC_MASK_32; - 22688: 4323 orrs r3, r4 - 2268a: f880 e034 strb.w lr, [r0, #52] ; 0x34 + 22768: 4323 orrs r3, r4 + 2276a: f880 e034 strb.w lr, [r0, #52] ; 0x34 group = message.get7Bits(9); - 2268e: f880 c035 strb.w ip, [r0, #53] ; 0x35 - 22692: 4313 orrs r3, r2 + 2276e: f880 c035 strb.w ip, [r0, #53] ; 0x35 + 22772: 4313 orrs r3, r2 bitSet(flags, bit); - 22694: 6b02 ldr r2, [r0, #48] ; 0x30 + 22774: 6b02 ldr r2, [r0, #48] ; 0x30 parameter = message.get7Bits(10); - 22696: f880 1036 strb.w r1, [r0, #54] ; 0x36 - 2269a: f042 0208 orr.w r2, r2, #8 + 22776: f880 1036 strb.w r1, [r0, #54] ; 0x36 + 2277a: f042 0208 orr.w r2, r2, #8 value = message.get32Bits(11); - 2269e: f8c0 3037 str.w r3, [r0, #55] ; 0x37 - 226a2: 6302 str r2, [r0, #48] ; 0x30 - 226a4: bdf0 pop {r4, r5, r6, r7, pc} - 226a6: bf00 nop + 2277e: f8c0 3037 str.w r3, [r0, #55] ; 0x37 + 22782: 6302 str r2, [r0, #48] ; 0x30 + 22784: bdf0 pop {r4, r5, r6, r7, pc} + 22786: bf00 nop -000226a8 : +00022788 : return bitRead(flags, bit); - 226a8: 6b03 ldr r3, [r0, #48] ; 0x30 + 22788: 6b03 ldr r3, [r0, #48] ; 0x30 // and the editor app will send it as needed. This is so that the PERFORMANCE mode // don't get these messages making the MIDI traffic less. void BMCEditor::utilitySendFasState(uint8_t data, bool onlyIfConnected){ #if defined(BMC_USE_FAS) if(flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 226aa: f413 5f00 tst.w r3, #8192 ; 0x2000 - 226ae: d114 bne.n 226da + 2278a: f413 5f00 tst.w r3, #8192 ; 0x2000 + 2278e: d114 bne.n 227ba void BMCEditor::utilitySendFasState(uint8_t data, bool onlyIfConnected){ - 226b0: b5f0 push {r4, r5, r6, r7, lr} - 226b2: 4604 mov r4, r0 - 226b4: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c - 226b8: 460d mov r5, r1 + 22790: b5f0 push {r4, r5, r6, r7, lr} + 22792: 4604 mov r4, r0 + 22794: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c + 22798: 460d mov r5, r1 return; } if(onlyIfConnected && !midi.globals.editorConnected()){ - 226ba: b13a cbz r2, 226cc - 226bc: 6842 ldr r2, [r0, #4] - 226be: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 226c2: 6dd2 ldr r2, [r2, #92] ; 0x5c - 226c4: 0751 lsls r1, r2, #29 - 226c6: d505 bpl.n 226d4 + 2279a: b13a cbz r2, 227ac + 2279c: 6842 ldr r2, [r0, #4] + 2279e: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 227a2: 6dd2 ldr r2, [r2, #92] ; 0x5c + 227a4: 0751 lsls r1, r2, #29 + 227a6: d505 bpl.n 227b4 return; } // if editor feedback is disabled... if(onlyIfConnected && !flags.read(BMC_EDITOR_FLAG_EDITOR_FEEDBACK)){ - 226c8: 069a lsls r2, r3, #26 - 226ca: d503 bpl.n 226d4 + 227a8: 069a lsls r2, r3, #26 + 227aa: d503 bpl.n 227b4 return; } if(!connectionOngoing()){ - 226cc: f3c3 1700 ubfx r7, r3, #4, #1 - 226d0: 06db lsls r3, r3, #27 - 226d2: d503 bpl.n 226dc + 227ac: f3c3 1700 ubfx r7, r3, #4, #1 + 227b0: 06db lsls r3, r3, #27 + 227b2: d503 bpl.n 227bc ); buff.appendToSysEx7Bits(data); sendToEditor(buff, true, false); // don't show midi activity } #endif } - 226d4: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 226d8: bdf0 pop {r4, r5, r6, r7, pc} - 226da: 4770 bx lr + 227b4: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 227b8: bdf0 pop {r4, r5, r6, r7, pc} + 227ba: 4770 bx lr prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 226dc: 230d movs r3, #13 + 227bc: 230d movs r3, #13 struct BMCMidiMessage { - 226de: ae41 add r6, sp, #260 ; 0x104 + 227be: ae41 add r6, sp, #260 ; 0x104 prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 226e0: 9301 str r3, [sp, #4] - 226e2: 2301 movs r3, #1 + 227c0: 9301 str r3, [sp, #4] + 227c2: 2301 movs r3, #1 struct BMCMidiMessage { - 226e4: 6037 str r7, [r6, #0] + 227c4: 6037 str r7, [r6, #0] prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 226e6: 4630 mov r0, r6 + 227c6: 4630 mov r0, r6 struct BMCMidiMessage { - 226e8: 7137 strb r7, [r6, #4] + 227c8: 7137 strb r7, [r6, #4] prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 226ea: 9300 str r3, [sp, #0] - 226ec: 237e movs r3, #126 ; 0x7e - 226ee: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 226f2: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 226f6: f7f8 fbe5 bl 1aec4 + 227ca: 9300 str r3, [sp, #0] + 227cc: 237e movs r3, #126 ; 0x7e + 227ce: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 227d2: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 227d6: f7f8 fbe5 bl 1afa4 uint16_t sysLength = size(); - 226fa: f8b6 3003 ldrh.w r3, [r6, #3] + 227da: f8b6 3003 ldrh.w r3, [r6, #3] if(sysLength + 227de: 2bfd cmp r3, #253 ; 0xfd + 227e0: d806 bhi.n 227f0 sysex[sysLength++] = value; - 22702: 18f2 adds r2, r6, r3 + 227e2: 18f2 adds r2, r6, r3 appendSysExByte(value & 0x7F); - 22704: f005 017f and.w r1, r5, #127 ; 0x7f + 227e4: f005 017f and.w r1, r5, #127 ; 0x7f sysex[sysLength++] = value; - 22708: 3301 adds r3, #1 + 227e8: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 2270a: 7137 strb r7, [r6, #4] + 227ea: 7137 strb r7, [r6, #4] sysex[sysLength++] = value; - 2270c: 7151 strb r1, [r2, #5] + 227ec: 7151 strb r1, [r2, #5] setData1(value & 0xFF); - 2270e: 70f3 strb r3, [r6, #3] + 227ee: 70f3 strb r3, [r6, #3] sendToEditor(buff, true, false); // don't show midi activity - 22710: 2301 movs r3, #1 - 22712: 2100 movs r1, #0 - 22714: 22f7 movs r2, #247 ; 0xf7 - 22716: 4668 mov r0, sp - 22718: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 - 2271c: a944 add r1, sp, #272 ; 0x110 - 2271e: f007 fff3 bl 2a708 - 22722: 4620 mov r0, r4 - 22724: e896 000e ldmia.w r6, {r1, r2, r3} - 22728: f7f8 f8d0 bl 1a8cc -} - 2272c: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 22730: bdf0 pop {r4, r5, r6, r7, pc} - 22732: bf00 nop - -00022734 : - 22734: 6b03 ldr r3, [r0, #48] ; 0x30 + 227f0: 2301 movs r3, #1 + 227f2: 2100 movs r1, #0 + 227f4: 22f7 movs r2, #247 ; 0xf7 + 227f6: 4668 mov r0, sp + 227f8: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 + 227fc: a944 add r1, sp, #272 ; 0x110 + 227fe: f007 fff7 bl 2a7f0 + 22802: 4620 mov r0, r4 + 22804: e896 000e ldmia.w r6, {r1, r2, r3} + 22808: f7f8 f8d0 bl 1a9ac +} + 2280c: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 22810: bdf0 pop {r4, r5, r6, r7, pc} + 22812: bf00 nop + +00022814 : + 22814: 6b03 ldr r3, [r0, #48] ; 0x30 void BMCEditor::utilitySendStateBits(uint8_t itemId, bool onlyIfConnected){ if(flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 22736: f413 5f00 tst.w r3, #8192 ; 0x2000 - 2273a: d114 bne.n 22766 + 22816: f413 5f00 tst.w r3, #8192 ; 0x2000 + 2281a: d114 bne.n 22846 void BMCEditor::utilitySendStateBits(uint8_t itemId, bool onlyIfConnected){ - 2273c: b5f0 push {r4, r5, r6, r7, lr} - 2273e: 4604 mov r4, r0 - 22740: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c - 22744: 460e mov r6, r1 + 2281c: b5f0 push {r4, r5, r6, r7, lr} + 2281e: 4604 mov r4, r0 + 22820: f5ad 7d03 sub.w sp, sp, #524 ; 0x20c + 22824: 460e mov r6, r1 return; } if(onlyIfConnected && !midi.globals.editorConnected()){ - 22746: b13a cbz r2, 22758 - 22748: 6842 ldr r2, [r0, #4] - 2274a: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 2274e: 6dd2 ldr r2, [r2, #92] ; 0x5c - 22750: 0751 lsls r1, r2, #29 - 22752: d505 bpl.n 22760 + 22826: b13a cbz r2, 22838 + 22828: 6842 ldr r2, [r0, #4] + 2282a: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 2282e: 6dd2 ldr r2, [r2, #92] ; 0x5c + 22830: 0751 lsls r1, r2, #29 + 22832: d505 bpl.n 22840 return; } // if editor feedback is disabled... if(onlyIfConnected && !flags.read(BMC_EDITOR_FLAG_EDITOR_FEEDBACK)){ - 22754: 069a lsls r2, r3, #26 - 22756: d503 bpl.n 22760 + 22834: 069a lsls r2, r3, #26 + 22836: d503 bpl.n 22840 return; } if(!connectionOngoing()){ - 22758: f3c3 1700 ubfx r7, r3, #4, #1 - 2275c: 06db lsls r3, r3, #27 - 2275e: d503 bpl.n 22768 + 22838: f3c3 1700 ubfx r7, r3, #4, #1 + 2283c: 06db lsls r3, r3, #27 + 2283e: d503 bpl.n 22848 #endif break; } sendToEditor(buff, true, false); // don't show midi activity } } - 22760: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 22764: bdf0 pop {r4, r5, r6, r7, pc} - 22766: 4770 bx lr + 22840: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 22844: bdf0 pop {r4, r5, r6, r7, pc} + 22846: 4770 bx lr struct BMCMidiMessage { - 22768: ad41 add r5, sp, #260 ; 0x104 + 22848: ad41 add r5, sp, #260 ; 0x104 prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 2276a: 2301 movs r3, #1 - 2276c: 4628 mov r0, r5 - 2276e: e9cd 3700 strd r3, r7, [sp] - 22772: 237e movs r3, #126 ; 0x7e - 22774: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 22778: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 2284a: 2301 movs r3, #1 + 2284c: 4628 mov r0, r5 + 2284e: e9cd 3700 strd r3, r7, [sp] + 22852: 237e movs r3, #126 ; 0x7e + 22854: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 22858: f894 102c ldrb.w r1, [r4, #44] ; 0x2c struct BMCMidiMessage { - 2277c: 602f str r7, [r5, #0] - 2277e: 712f strb r7, [r5, #4] + 2285c: 602f str r7, [r5, #0] + 2285e: 712f strb r7, [r5, #4] prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 22780: f7f8 fba0 bl 1aec4 + 22860: f7f8 fba0 bl 1afa4 uint16_t sysLength = size(); - 22784: f8b5 3003 ldrh.w r3, [r5, #3] + 22864: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 22868: 2bfd cmp r3, #253 ; 0xfd + 2286a: f240 808f bls.w 2298c switch(itemId){ - 2278e: 1f31 subs r1, r6, #4 - 22790: 2917 cmp r1, #23 - 22792: d87a bhi.n 2288a - 22794: e8df f001 tbb [pc, r1] - 22798: c879de79 .word 0xc879de79 - 2279c: 79797979 .word 0x79797979 - 227a0: 790c7979 .word 0x790c7979 - 227a4: 79797979 .word 0x79797979 - 227a8: 79797979 .word 0x79797979 - 227ac: eb797979 .word 0xeb797979 + 2286e: 1f31 subs r1, r6, #4 + 22870: 2917 cmp r1, #23 + 22872: d87a bhi.n 2296a + 22874: e8df f001 tbb [pc, r1] + 22878: c879de79 .word 0xc879de79 + 2287c: 79797979 .word 0x79797979 + 22880: 790c7979 .word 0x790c7979 + 22884: 79797979 .word 0x79797979 + 22888: 79797979 .word 0x79797979 + 2288c: eb797979 .word 0xeb797979 buff.appendToSysEx7Bits(midi.globals.rgbPixelStates[0].getLength()); - 227b0: f8b5 3003 ldrh.w r3, [r5, #3] - 227b4: 6862 ldr r2, [r4, #4] - 227b6: 2bfd cmp r3, #253 ; 0xfd - 227b8: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 227bc: d865 bhi.n 2288a + 22890: f8b5 3003 ldrh.w r3, [r5, #3] + 22894: 6862 ldr r2, [r4, #4] + 22896: 2bfd cmp r3, #253 ; 0xfd + 22898: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 2289c: d865 bhi.n 2296a sysex[sysLength++] = value; - 227be: 18e9 adds r1, r5, r3 - 227c0: 3301 adds r3, #1 - 227c2: 2001 movs r0, #1 + 2289e: 18e9 adds r1, r5, r3 + 228a0: 3301 adds r3, #1 + 228a2: 2001 movs r0, #1 setData1(value & 0xFF); - 227c4: 70eb strb r3, [r5, #3] + 228a4: 70eb strb r3, [r5, #3] void setData2(uint8_t t_data2) { data2 = t_data2; } - 227c6: 2300 movs r3, #0 + 228a6: 2300 movs r3, #0 sysex[sysLength++] = value; - 227c8: 7148 strb r0, [r1, #5] + 228a8: 7148 strb r0, [r1, #5] void setData2(uint8_t t_data2) { data2 = t_data2; } - 227ca: 712b strb r3, [r5, #4] - 227cc: f8b5 1003 ldrh.w r1, [r5, #3] + 228aa: 712b strb r3, [r5, #4] + 228ac: f8b5 1003 ldrh.w r1, [r5, #3] return value[n]; - 227d0: f8b2 304a ldrh.w r3, [r2, #74] ; 0x4a + 228b0: f8b2 304a ldrh.w r3, [r2, #74] ; 0x4a if(sysLength + 228ba: d856 bhi.n 2296a sysex[sysLength++] = value; - 227dc: 1c4e adds r6, r1, #1 - 227de: 4429 add r1, r5 + 228bc: 1c4e adds r6, r1, #1 + 228be: 4429 add r1, r5 setData1(value & 0xFF); - 227e0: 70ee strb r6, [r5, #3] + 228c0: 70ee strb r6, [r5, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 227e2: f3c3 16c6 ubfx r6, r3, #7, #7 + 228c2: f3c3 16c6 ubfx r6, r3, #7, #7 sysex[sysLength++] = value; - 227e6: 7148 strb r0, [r1, #5] + 228c6: 7148 strb r0, [r1, #5] uint16_t sysLength = size(); - 227e8: f8b5 0003 ldrh.w r0, [r5, #3] + 228c8: f8b5 0003 ldrh.w r0, [r5, #3] if(sysLength + 228cc: 28fd cmp r0, #253 ; 0xfd + 228ce: d84c bhi.n 2296a appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 227f0: f003 017f and.w r1, r3, #127 ; 0x7f + 228d0: f003 017f and.w r1, r3, #127 ; 0x7f sysex[sysLength++] = value; - 227f4: 1c43 adds r3, r0, #1 - 227f6: 4428 add r0, r5 + 228d4: 1c43 adds r3, r0, #1 + 228d6: 4428 add r0, r5 setData1(value & 0xFF); - 227f8: 70eb strb r3, [r5, #3] - 227fa: f8b5 3003 ldrh.w r3, [r5, #3] + 228d8: 70eb strb r3, [r5, #3] + 228da: f8b5 3003 ldrh.w r3, [r5, #3] sysex[sysLength++] = value; - 227fe: 7146 strb r6, [r0, #5] + 228de: 7146 strb r6, [r0, #5] if(sysLength + 228e0: 2bfd cmp r3, #253 ; 0xfd + 228e2: d842 bhi.n 2296a sysex[sysLength++] = value; - 22804: 1c58 adds r0, r3, #1 - 22806: 442b add r3, r5 + 228e4: 1c58 adds r0, r3, #1 + 228e6: 442b add r3, r5 setData1(value & 0xFF); - 22808: 70e8 strb r0, [r5, #3] + 228e8: 70e8 strb r0, [r5, #3] sysex[sysLength++] = value; - 2280a: 7159 strb r1, [r3, #5] + 228ea: 7159 strb r1, [r3, #5] uint16_t get(uint8_t n){ - 2280c: f8b5 1003 ldrh.w r1, [r5, #3] + 228ec: f8b5 1003 ldrh.w r1, [r5, #3] return value[n]; - 22810: f8b2 304e ldrh.w r3, [r2, #78] ; 0x4e + 228f0: f8b2 304e ldrh.w r3, [r2, #78] ; 0x4e if(sysLength + 228fa: d836 bhi.n 2296a sysex[sysLength++] = value; - 2281c: 1c4e adds r6, r1, #1 - 2281e: 4429 add r1, r5 + 228fc: 1c4e adds r6, r1, #1 + 228fe: 4429 add r1, r5 setData1(value & 0xFF); - 22820: 70ee strb r6, [r5, #3] + 22900: 70ee strb r6, [r5, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 22822: f3c3 16c6 ubfx r6, r3, #7, #7 + 22902: f3c3 16c6 ubfx r6, r3, #7, #7 sysex[sysLength++] = value; - 22826: 7148 strb r0, [r1, #5] + 22906: 7148 strb r0, [r1, #5] uint16_t sysLength = size(); - 22828: f8b5 1003 ldrh.w r1, [r5, #3] + 22908: f8b5 1003 ldrh.w r1, [r5, #3] if(sysLength + 2290c: 29fd cmp r1, #253 ; 0xfd + 2290e: d82c bhi.n 2296a appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 22830: f003 007f and.w r0, r3, #127 ; 0x7f + 22910: f003 007f and.w r0, r3, #127 ; 0x7f sysex[sysLength++] = value; - 22834: 1c4b adds r3, r1, #1 - 22836: 4429 add r1, r5 + 22914: 1c4b adds r3, r1, #1 + 22916: 4429 add r1, r5 setData1(value & 0xFF); - 22838: 70eb strb r3, [r5, #3] + 22918: 70eb strb r3, [r5, #3] sysex[sysLength++] = value; - 2283a: 714e strb r6, [r1, #5] + 2291a: 714e strb r6, [r1, #5] uint16_t sysLength = size(); - 2283c: f8b5 1003 ldrh.w r1, [r5, #3] + 2291c: f8b5 1003 ldrh.w r1, [r5, #3] if(sysLength - 22844: f8b2 3052 ldrh.w r3, [r2, #82] ; 0x52 + 22920: 29fd cmp r1, #253 ; 0xfd + 22922: d822 bhi.n 2296a + 22924: f8b2 3052 ldrh.w r3, [r2, #82] ; 0x52 sysex[sysLength++] = value; - 22848: 1c4a adds r2, r1, #1 - 2284a: 4429 add r1, r5 + 22928: 1c4a adds r2, r1, #1 + 2292a: 4429 add r1, r5 setData1(value & 0xFF); - 2284c: 70ea strb r2, [r5, #3] - 2284e: f8b5 2003 ldrh.w r2, [r5, #3] + 2292c: 70ea strb r2, [r5, #3] + 2292e: f8b5 2003 ldrh.w r2, [r5, #3] sysex[sysLength++] = value; - 22852: 7148 strb r0, [r1, #5] + 22932: 7148 strb r0, [r1, #5] appendToSysEx7Bits(BMC_MIDI_GET_WORD(2,value)); - 22854: 0b99 lsrs r1, r3, #14 + 22934: 0b99 lsrs r1, r3, #14 if(sysLength + 22936: 2afd cmp r2, #253 ; 0xfd + 22938: d817 bhi.n 2296a sysex[sysLength++] = value; - 2285a: 1c50 adds r0, r2, #1 - 2285c: 442a add r2, r5 + 2293a: 1c50 adds r0, r2, #1 + 2293c: 442a add r2, r5 setData1(value & 0xFF); - 2285e: 70e8 strb r0, [r5, #3] + 2293e: 70e8 strb r0, [r5, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 22860: f3c3 10c6 ubfx r0, r3, #7, #7 + 22940: f3c3 10c6 ubfx r0, r3, #7, #7 sysex[sysLength++] = value; - 22864: 7151 strb r1, [r2, #5] + 22944: 7151 strb r1, [r2, #5] uint16_t sysLength = size(); - 22866: f8b5 1003 ldrh.w r1, [r5, #3] + 22946: f8b5 1003 ldrh.w r1, [r5, #3] if(sysLength + 2294a: 29fd cmp r1, #253 ; 0xfd + 2294c: d80d bhi.n 2296a appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 2286e: f003 027f and.w r2, r3, #127 ; 0x7f + 2294e: f003 027f and.w r2, r3, #127 ; 0x7f sysex[sysLength++] = value; - 22872: 1c4b adds r3, r1, #1 - 22874: 4429 add r1, r5 + 22952: 1c4b adds r3, r1, #1 + 22954: 4429 add r1, r5 setData1(value & 0xFF); - 22876: 70eb strb r3, [r5, #3] + 22956: 70eb strb r3, [r5, #3] sysex[sysLength++] = value; - 22878: 7148 strb r0, [r1, #5] + 22958: 7148 strb r0, [r1, #5] uint16_t sysLength = size(); - 2287a: f8b5 3003 ldrh.w r3, [r5, #3] + 2295a: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 2295e: 2bfd cmp r3, #253 ; 0xfd + 22960: d803 bhi.n 2296a sysex[sysLength++] = value; - 22882: 18e9 adds r1, r5, r3 - 22884: 3301 adds r3, #1 - 22886: 714a strb r2, [r1, #5] + 22962: 18e9 adds r1, r5, r3 + 22964: 3301 adds r3, #1 + 22966: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 22888: 70eb strb r3, [r5, #3] + 22968: 70eb strb r3, [r5, #3] sendToEditor(buff, true, false); // don't show midi activity - 2288a: 2301 movs r3, #1 - 2288c: 2000 movs r0, #0 - 2288e: a944 add r1, sp, #272 ; 0x110 - 22890: 22f7 movs r2, #247 ; 0xf7 - 22892: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 - 22896: 4668 mov r0, sp - 22898: f007 ff36 bl 2a708 - 2289c: 4620 mov r0, r4 - 2289e: e895 000e ldmia.w r5, {r1, r2, r3} - 228a2: f7f8 f813 bl 1a8cc -} - 228a6: f50d 7d03 add.w sp, sp, #524 ; 0x20c - 228aa: bdf0 pop {r4, r5, r6, r7, pc} + 2296a: 2301 movs r3, #1 + 2296c: 2000 movs r0, #0 + 2296e: a944 add r1, sp, #272 ; 0x110 + 22970: 22f7 movs r2, #247 ; 0xf7 + 22972: e9cd 303e strd r3, r0, [sp, #248] ; 0xf8 + 22976: 4668 mov r0, sp + 22978: f007 ff3a bl 2a7f0 + 2297c: 4620 mov r0, r4 + 2297e: e895 000e ldmia.w r5, {r1, r2, r3} + 22982: f7f8 f813 bl 1a9ac +} + 22986: f50d 7d03 add.w sp, sp, #524 ; 0x20c + 2298a: bdf0 pop {r4, r5, r6, r7, pc} sysex[sysLength++] = value; - 228ac: 18e8 adds r0, r5, r3 + 2298c: 18e8 adds r0, r5, r3 appendSysExByte(value & 0x7F); - 228ae: f006 017f and.w r1, r6, #127 ; 0x7f + 2298e: f006 017f and.w r1, r6, #127 ; 0x7f sysex[sysLength++] = value; - 228b2: 3301 adds r3, #1 + 22992: 3301 adds r3, #1 switch(itemId){ - 228b4: 1f32 subs r2, r6, #4 + 22994: 1f32 subs r2, r6, #4 void setData2(uint8_t t_data2) { data2 = t_data2; } - 228b6: 712f strb r7, [r5, #4] + 22996: 712f strb r7, [r5, #4] sysex[sysLength++] = value; - 228b8: 7141 strb r1, [r0, #5] + 22998: 7141 strb r1, [r0, #5] setData1(value & 0xFF); - 228ba: 70eb strb r3, [r5, #3] - 228bc: 2a17 cmp r2, #23 - 228be: d8e4 bhi.n 2288a - 228c0: a301 add r3, pc, #4 ; (adr r3, 228c8 ) - 228c2: f853 f022 ldr.w pc, [r3, r2, lsl #2] - 228c6: bf00 nop - 228c8: 0002298b .word 0x0002298b - 228cc: 00022955 .word 0x00022955 - 228d0: 0002288b .word 0x0002288b - 228d4: 00022929 .word 0x00022929 - 228d8: 0002288b .word 0x0002288b - 228dc: 0002288b .word 0x0002288b - 228e0: 0002288b .word 0x0002288b - 228e4: 0002288b .word 0x0002288b - 228e8: 0002288b .word 0x0002288b - 228ec: 0002288b .word 0x0002288b - 228f0: 000227b1 .word 0x000227b1 - 228f4: 0002288b .word 0x0002288b - 228f8: 0002288b .word 0x0002288b - 228fc: 0002288b .word 0x0002288b - 22900: 0002288b .word 0x0002288b - 22904: 0002288b .word 0x0002288b - 22908: 0002288b .word 0x0002288b - 2290c: 0002288b .word 0x0002288b - 22910: 0002288b .word 0x0002288b - 22914: 0002288b .word 0x0002288b - 22918: 0002288b .word 0x0002288b - 2291c: 0002288b .word 0x0002288b - 22920: 0002288b .word 0x0002288b - 22924: 0002296f .word 0x0002296f + 2299a: 70eb strb r3, [r5, #3] + 2299c: 2a17 cmp r2, #23 + 2299e: d8e4 bhi.n 2296a + 229a0: a301 add r3, pc, #4 ; (adr r3, 229a8 ) + 229a2: f853 f022 ldr.w pc, [r3, r2, lsl #2] + 229a6: bf00 nop + 229a8: 00022a6b .word 0x00022a6b + 229ac: 00022a35 .word 0x00022a35 + 229b0: 0002296b .word 0x0002296b + 229b4: 00022a09 .word 0x00022a09 + 229b8: 0002296b .word 0x0002296b + 229bc: 0002296b .word 0x0002296b + 229c0: 0002296b .word 0x0002296b + 229c4: 0002296b .word 0x0002296b + 229c8: 0002296b .word 0x0002296b + 229cc: 0002296b .word 0x0002296b + 229d0: 00022891 .word 0x00022891 + 229d4: 0002296b .word 0x0002296b + 229d8: 0002296b .word 0x0002296b + 229dc: 0002296b .word 0x0002296b + 229e0: 0002296b .word 0x0002296b + 229e4: 0002296b .word 0x0002296b + 229e8: 0002296b .word 0x0002296b + 229ec: 0002296b .word 0x0002296b + 229f0: 0002296b .word 0x0002296b + 229f4: 0002296b .word 0x0002296b + 229f8: 0002296b .word 0x0002296b + 229fc: 0002296b .word 0x0002296b + 22a00: 0002296b .word 0x0002296b + 22a04: 00022a4f .word 0x00022a4f buff.appendToSysEx7Bits(midi.globals.globalLedStates.getLength()); - 22928: f8b5 3003 ldrh.w r3, [r5, #3] - 2292c: 6862 ldr r2, [r4, #4] + 22a08: f8b5 3003 ldrh.w r3, [r5, #3] + 22a0c: 6862 ldr r2, [r4, #4] if(sysLength + 22a0e: 2bfd cmp r3, #253 ; 0xfd + 22a10: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 22a14: d8a9 bhi.n 2296a sysex[sysLength++] = value; - 22936: 18e8 adds r0, r5, r3 - 22938: 3301 adds r3, #1 + 22a16: 18e8 adds r0, r5, r3 + 22a18: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 2293a: 2100 movs r1, #0 + 22a1a: 2100 movs r1, #0 setData1(value & 0xFF); - 2293c: 70eb strb r3, [r5, #3] - 2293e: f8b2 3046 ldrh.w r3, [r2, #70] ; 0x46 + 22a1c: 70eb strb r3, [r5, #3] + 22a1e: f8b2 3046 ldrh.w r3, [r2, #70] ; 0x46 sysex[sysLength++] = value; - 22942: 2201 movs r2, #1 + 22a22: 2201 movs r2, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 22944: 7129 strb r1, [r5, #4] + 22a24: 7129 strb r1, [r5, #4] appendToSysEx7Bits(BMC_MIDI_GET_WORD(2,value)); - 22946: 0b99 lsrs r1, r3, #14 + 22a26: 0b99 lsrs r1, r3, #14 sysex[sysLength++] = value; - 22948: 7142 strb r2, [r0, #5] + 22a28: 7142 strb r2, [r0, #5] uint16_t sysLength = size(); - 2294a: f8b5 2003 ldrh.w r2, [r5, #3] + 22a2a: f8b5 2003 ldrh.w r2, [r5, #3] if(sysLength - 22952: e79a b.n 2288a + 22a2e: 2afd cmp r2, #253 ; 0xfd + 22a30: d983 bls.n 2293a + 22a32: e79a b.n 2296a buff.appendToSysEx7Bits(midi.globals.globalButtonStates.getLength()); - 22954: f8b5 3003 ldrh.w r3, [r5, #3] - 22958: 6862 ldr r2, [r4, #4] - 2295a: 2bfd cmp r3, #253 ; 0xfd - 2295c: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 - 22960: d893 bhi.n 2288a + 22a34: f8b5 3003 ldrh.w r3, [r5, #3] + 22a38: 6862 ldr r2, [r4, #4] + 22a3a: 2bfd cmp r3, #253 ; 0xfd + 22a3c: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 22a40: d893 bhi.n 2296a sysex[sysLength++] = value; - 22962: 18e8 adds r0, r5, r3 - 22964: 3301 adds r3, #1 + 22a42: 18e8 adds r0, r5, r3 + 22a44: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 22966: 2100 movs r1, #0 + 22a46: 2100 movs r1, #0 setData1(value & 0xFF); - 22968: 70eb strb r3, [r5, #3] - 2296a: 8fd3 ldrh r3, [r2, #62] ; 0x3e - 2296c: e7e9 b.n 22942 + 22a48: 70eb strb r3, [r5, #3] + 22a4a: 8fd3 ldrh r3, [r2, #62] ; 0x3e + 22a4c: e7e9 b.n 22a22 buff.appendToSysEx7Bits(midi.globals.auxJackStates.getLength()); - 2296e: f8b5 3003 ldrh.w r3, [r5, #3] - 22972: 6862 ldr r2, [r4, #4] + 22a4e: f8b5 3003 ldrh.w r3, [r5, #3] + 22a52: 6862 ldr r2, [r4, #4] if(sysLength + 22a54: 2bfd cmp r3, #253 ; 0xfd + 22a56: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 22a5a: d886 bhi.n 2296a sysex[sysLength++] = value; - 2297c: 18e8 adds r0, r5, r3 - 2297e: 3301 adds r3, #1 + 22a5c: 18e8 adds r0, r5, r3 + 22a5e: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 22980: 2100 movs r1, #0 + 22a60: 2100 movs r1, #0 setData1(value & 0xFF); - 22982: 70eb strb r3, [r5, #3] - 22984: f8b2 3056 ldrh.w r3, [r2, #86] ; 0x56 - 22988: e7db b.n 22942 + 22a62: 70eb strb r3, [r5, #3] + 22a64: f8b2 3056 ldrh.w r3, [r2, #86] ; 0x56 + 22a68: e7db b.n 22a22 buff.appendToSysEx7Bits(midi.globals.buttonStates.getLength()); - 2298a: f8b5 3003 ldrh.w r3, [r5, #3] - 2298e: 6862 ldr r2, [r4, #4] + 22a6a: f8b5 3003 ldrh.w r3, [r5, #3] + 22a6e: 6862 ldr r2, [r4, #4] if(sysLength + 22a70: 2bfd cmp r3, #253 ; 0xfd + 22a72: f8d2 2108 ldr.w r2, [r2, #264] ; 0x108 + 22a76: f63f af78 bhi.w 2296a sysex[sysLength++] = value; - 2299a: 18e8 adds r0, r5, r3 - 2299c: 3301 adds r3, #1 + 22a7a: 18e8 adds r0, r5, r3 + 22a7c: 3301 adds r3, #1 void setData2(uint8_t t_data2) { data2 = t_data2; } - 2299e: 2100 movs r1, #0 + 22a7e: 2100 movs r1, #0 setData1(value & 0xFF); - 229a0: 70eb strb r3, [r5, #3] - 229a2: 8f53 ldrh r3, [r2, #58] ; 0x3a - 229a4: e7cd b.n 22942 - 229a6: bf00 nop + 22a80: 70eb strb r3, [r5, #3] + 22a82: 8f53 ldrh r3, [r2, #58] ; 0x3a + 22a84: e7cd b.n 22a22 + 22a86: bf00 nop -000229a8 : +00022a88 : #endif } void BMCEditor::utilitySendPreset(uint8_t t_bank, uint8_t t_preset, bool onlyIfConnected){ - 229a8: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 229ac: 4604 mov r4, r0 - 229ae: 6b00 ldr r0, [r0, #48] ; 0x30 - 229b0: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 + 22a88: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 22a8c: 4604 mov r4, r0 + 22a8e: 6b00 ldr r0, [r0, #48] ; 0x30 + 22a90: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 #if BMC_MAX_PRESETS > 0 if(flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 229b4: 0486 lsls r6, r0, #18 - 229b6: d42f bmi.n 22a18 + 22a94: 0486 lsls r6, r0, #18 + 22a96: d42f bmi.n 22af8 return; } if(onlyIfConnected && !midi.globals.editorConnected()){ - 229b8: 460f mov r7, r1 - 229ba: 4616 mov r6, r2 - 229bc: b13b cbz r3, 229ce - 229be: 6863 ldr r3, [r4, #4] - 229c0: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 229c4: 6ddb ldr r3, [r3, #92] ; 0x5c - 229c6: 075d lsls r5, r3, #29 - 229c8: d526 bpl.n 22a18 + 22a98: 460f mov r7, r1 + 22a9a: 4616 mov r6, r2 + 22a9c: b13b cbz r3, 22aae + 22a9e: 6863 ldr r3, [r4, #4] + 22aa0: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 22aa4: 6ddb ldr r3, [r3, #92] ; 0x5c + 22aa6: 075d lsls r5, r3, #29 + 22aa8: d526 bpl.n 22af8 return; } // if editor feedback is disabled... if(onlyIfConnected && !flags.read(BMC_EDITOR_FLAG_EDITOR_FEEDBACK)){ - 229ca: 0681 lsls r1, r0, #26 - 229cc: d524 bpl.n 22a18 + 22aaa: 0681 lsls r1, r0, #26 + 22aac: d524 bpl.n 22af8 struct BMCMidiMessage { - 229ce: ad41 add r5, sp, #260 ; 0x104 - 229d0: f04f 0800 mov.w r8, #0 + 22aae: ad41 add r5, sp, #260 ; 0x104 + 22ab0: f04f 0800 mov.w r8, #0 prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 229d4: 2301 movs r3, #1 - 229d6: 2203 movs r2, #3 + 22ab4: 2301 movs r3, #1 + 22ab6: 2203 movs r2, #3 struct BMCMidiMessage { - 229d8: f8c5 8000 str.w r8, [r5] + 22ab8: f8c5 8000 str.w r8, [r5] prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 229dc: 4628 mov r0, r5 + 22abc: 4628 mov r0, r5 struct BMCMidiMessage { - 229de: f885 8004 strb.w r8, [r5, #4] + 22abe: f885 8004 strb.w r8, [r5, #4] prepareEditorMessage(t_source, deviceId, functionId, flags.get(), layer); - 229e2: e9cd 3200 strd r3, r2, [sp] - 229e6: 237e movs r3, #126 ; 0x7e - 229e8: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 229ec: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 229f0: f7f8 fa68 bl 1aec4 + 22ac2: e9cd 3200 strd r3, r2, [sp] + 22ac6: 237e movs r3, #126 ; 0x7e + 22ac8: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 22acc: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 22ad0: f7f8 fa68 bl 1afa4 uint16_t sysLength = size(); - 229f4: f8b5 3003 ldrh.w r3, [r5, #3] + 22ad4: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 22ad8: 2bfd cmp r3, #253 ; 0xfd + 22ada: d911 bls.n 22b00 BMC_GLOBALF_UTILITY, flag, BMC_UTILF_PRESET ); buff.appendToSysEx8Bits(t_bank); buff.appendToSysEx8Bits(t_preset); sendToEditor(buff,true,false); // don't show midi activity - 229fc: 2301 movs r3, #1 - 229fe: 2100 movs r1, #0 - 22a00: 22f7 movs r2, #247 ; 0xf7 - 22a02: 4668 mov r0, sp - 22a04: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 - 22a08: a944 add r1, sp, #272 ; 0x110 - 22a0a: f007 fe7d bl 2a708 - 22a0e: 4620 mov r0, r4 - 22a10: e895 000e ldmia.w r5, {r1, r2, r3} - 22a14: f7f7 ff5a bl 1a8cc + 22adc: 2301 movs r3, #1 + 22ade: 2100 movs r1, #0 + 22ae0: 22f7 movs r2, #247 ; 0xf7 + 22ae2: 4668 mov r0, sp + 22ae4: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 + 22ae8: a944 add r1, sp, #272 ; 0x110 + 22aea: f007 fe81 bl 2a7f0 + 22aee: 4620 mov r0, r4 + 22af0: e895 000e ldmia.w r5, {r1, r2, r3} + 22af4: f7f7 ff5a bl 1a9ac #endif } - 22a18: f50d 7d02 add.w sp, sp, #520 ; 0x208 - 22a1c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 22af8: f50d 7d02 add.w sp, sp, #520 ; 0x208 + 22afc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} sysex[sysLength++] = value; - 22a20: 1c5a adds r2, r3, #1 - 22a22: 442b add r3, r5 + 22b00: 1c5a adds r2, r3, #1 + 22b02: 442b add r3, r5 void setData2(uint8_t t_data2) { data2 = t_data2; } - 22a24: f885 8004 strb.w r8, [r5, #4] + 22b04: f885 8004 strb.w r8, [r5, #4] appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 22a28: f007 017f and.w r1, r7, #127 ; 0x7f + 22b08: f007 017f and.w r1, r7, #127 ; 0x7f setData1(value & 0xFF); - 22a2c: 70ea strb r2, [r5, #3] + 22b0c: 70ea strb r2, [r5, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 22a2e: 09fa lsrs r2, r7, #7 + 22b0e: 09fa lsrs r2, r7, #7 sysex[sysLength++] = value; - 22a30: 715a strb r2, [r3, #5] + 22b10: 715a strb r2, [r3, #5] uint16_t sysLength = size(); - 22a32: f8b5 3003 ldrh.w r3, [r5, #3] + 22b12: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 22b16: 2bfd cmp r3, #253 ; 0xfd + 22b18: d8e0 bhi.n 22adc sysex[sysLength++] = value; - 22a3a: 1c5a adds r2, r3, #1 - 22a3c: 442b add r3, r5 + 22b1a: 1c5a adds r2, r3, #1 + 22b1c: 442b add r3, r5 setData1(value & 0xFF); - 22a3e: 70ea strb r2, [r5, #3] + 22b1e: 70ea strb r2, [r5, #3] sysex[sysLength++] = value; - 22a40: 7159 strb r1, [r3, #5] + 22b20: 7159 strb r1, [r3, #5] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1,value)); - 22a42: 09f1 lsrs r1, r6, #7 + 22b22: 09f1 lsrs r1, r6, #7 uint16_t sysLength = size(); - 22a44: f8b5 3003 ldrh.w r3, [r5, #3] + 22b24: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 22b28: 2bfd cmp r3, #253 ; 0xfd + 22b2a: d8d7 bhi.n 22adc sysex[sysLength++] = value; - 22a4c: 1c58 adds r0, r3, #1 - 22a4e: 442b add r3, r5 + 22b2c: 1c58 adds r0, r3, #1 + 22b2e: 442b add r3, r5 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0,value)); - 22a50: f006 027f and.w r2, r6, #127 ; 0x7f + 22b30: f006 027f and.w r2, r6, #127 ; 0x7f setData1(value & 0xFF); - 22a54: 70e8 strb r0, [r5, #3] + 22b34: 70e8 strb r0, [r5, #3] sysex[sysLength++] = value; - 22a56: 7159 strb r1, [r3, #5] + 22b36: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 22a58: f8b5 3003 ldrh.w r3, [r5, #3] + 22b38: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 22b3c: 2bfd cmp r3, #253 ; 0xfd + 22b3e: d8cd bhi.n 22adc sysex[sysLength++] = value; - 22a60: 18e9 adds r1, r5, r3 - 22a62: 3301 adds r3, #1 - 22a64: 714a strb r2, [r1, #5] + 22b40: 18e9 adds r1, r5, r3 + 22b42: 3301 adds r3, #1 + 22b44: 714a strb r2, [r1, #5] setData1(value & 0xFF); - 22a66: 70eb strb r3, [r5, #3] + 22b46: 70eb strb r3, [r5, #3] return true; - 22a68: e7c8 b.n 229fc - 22a6a: bf00 nop + 22b48: e7c8 b.n 22adc + 22b4a: bf00 nop -00022a6c : +00022b4c : buff.appendToSysEx7Bits(state); sendToEditor(buff,true,false); // don't show midi activity #endif } void BMCEditor::utilitySendAnalogInputCalibrationStatus(bool status, bool canceled, bool onlyIfConnected){ - 22a6c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 22a70: 4604 mov r4, r0 - 22a72: 6b00 ldr r0, [r0, #48] ; 0x30 - 22a74: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 + 22b4c: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 22b50: 4604 mov r4, r0 + 22b52: 6b00 ldr r0, [r0, #48] ; 0x30 + 22b54: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 #if BMC_TOTAL_POTS_AUX_JACKS > 0 if(flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 22a78: 0480 lsls r0, r0, #18 - 22a7a: d429 bmi.n 22ad0 + 22b58: 0480 lsls r0, r0, #18 + 22b5a: d429 bmi.n 22bb0 return; } if(onlyIfConnected && !midi.globals.editorConnected()){ - 22a7c: 460f mov r7, r1 - 22a7e: 4690 mov r8, r2 - 22a80: b12b cbz r3, 22a8e - 22a82: 6863 ldr r3, [r4, #4] - 22a84: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 22a88: 6ddb ldr r3, [r3, #92] ; 0x5c - 22a8a: 075b lsls r3, r3, #29 - 22a8c: d520 bpl.n 22ad0 + 22b5c: 460f mov r7, r1 + 22b5e: 4690 mov r8, r2 + 22b60: b12b cbz r3, 22b6e + 22b62: 6863 ldr r3, [r4, #4] + 22b64: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 22b68: 6ddb ldr r3, [r3, #92] ; 0x5c + 22b6a: 075b lsls r3, r3, #29 + 22b6c: d520 bpl.n 22bb0 struct BMCMidiMessage { - 22a8e: ad41 add r5, sp, #260 ; 0x104 - 22a90: 2600 movs r6, #0 + 22b6e: ad41 add r5, sp, #260 ; 0x104 + 22b70: 2600 movs r6, #0 return; } BMCMidiMessage buff; buff.prepareEditorMessage( - 22a92: 2306 movs r3, #6 - 22a94: 9600 str r6, [sp, #0] - 22a96: 4628 mov r0, r5 - 22a98: 602e str r6, [r5, #0] - 22a9a: 712e strb r6, [r5, #4] - 22a9c: 9301 str r3, [sp, #4] - 22a9e: 237e movs r3, #126 ; 0x7e - 22aa0: f894 202d ldrb.w r2, [r4, #45] ; 0x2d - 22aa4: f894 102c ldrb.w r1, [r4, #44] ; 0x2c - 22aa8: f7f8 fa0c bl 1aec4 + 22b72: 2306 movs r3, #6 + 22b74: 9600 str r6, [sp, #0] + 22b76: 4628 mov r0, r5 + 22b78: 602e str r6, [r5, #0] + 22b7a: 712e strb r6, [r5, #4] + 22b7c: 9301 str r3, [sp, #4] + 22b7e: 237e movs r3, #126 ; 0x7e + 22b80: f894 202d ldrb.w r2, [r4, #45] ; 0x2d + 22b84: f894 102c ldrb.w r1, [r4, #44] ; 0x2c + 22b88: f7f8 fa0c bl 1afa4 uint16_t sysLength = size(); - 22aac: f8b5 3003 ldrh.w r3, [r5, #3] + 22b8c: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 22b90: 2bfd cmp r3, #253 ; 0xfd + 22b92: d911 bls.n 22bb8 BMC_UTILF_POT_CALIBRATION_STATUS ); buff.appendToSysEx7Bits(status?1:0); buff.appendToSysEx7Bits(canceled?1:0); // don't show midi activity sendToEditor(buff, true, false); - 22ab4: 2301 movs r3, #1 - 22ab6: 2100 movs r1, #0 - 22ab8: 22f7 movs r2, #247 ; 0xf7 - 22aba: 4668 mov r0, sp - 22abc: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 - 22ac0: a944 add r1, sp, #272 ; 0x110 - 22ac2: f007 fe21 bl 2a708 - 22ac6: 4620 mov r0, r4 - 22ac8: e895 000e ldmia.w r5, {r1, r2, r3} - 22acc: f7f7 fefe bl 1a8cc + 22b94: 2301 movs r3, #1 + 22b96: 2100 movs r1, #0 + 22b98: 22f7 movs r2, #247 ; 0xf7 + 22b9a: 4668 mov r0, sp + 22b9c: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 + 22ba0: a944 add r1, sp, #272 ; 0x110 + 22ba2: f007 fe25 bl 2a7f0 + 22ba6: 4620 mov r0, r4 + 22ba8: e895 000e ldmia.w r5, {r1, r2, r3} + 22bac: f7f7 fefe bl 1a9ac #endif } - 22ad0: f50d 7d02 add.w sp, sp, #520 ; 0x208 - 22ad4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 22bb0: f50d 7d02 add.w sp, sp, #520 ; 0x208 + 22bb4: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} sysex[sysLength++] = value; - 22ad8: 1c5a adds r2, r3, #1 - 22ada: 442b add r3, r5 + 22bb8: 1c5a adds r2, r3, #1 + 22bba: 442b add r3, r5 void setData2(uint8_t t_data2) { data2 = t_data2; } - 22adc: 712e strb r6, [r5, #4] + 22bbc: 712e strb r6, [r5, #4] setData1(value & 0xFF); - 22ade: 70ea strb r2, [r5, #3] + 22bbe: 70ea strb r2, [r5, #3] sysex[sysLength++] = value; - 22ae0: 715f strb r7, [r3, #5] + 22bc0: 715f strb r7, [r3, #5] uint16_t sysLength = size(); - 22ae2: f8b5 3003 ldrh.w r3, [r5, #3] + 22bc2: f8b5 3003 ldrh.w r3, [r5, #3] if(sysLength + 22bc6: 2bfd cmp r3, #253 ; 0xfd + 22bc8: d8e4 bhi.n 22b94 sysex[sysLength++] = value; - 22aea: 18ea adds r2, r5, r3 - 22aec: 3301 adds r3, #1 - 22aee: f882 8005 strb.w r8, [r2, #5] + 22bca: 18ea adds r2, r5, r3 + 22bcc: 3301 adds r3, #1 + 22bce: f882 8005 strb.w r8, [r2, #5] setData1(value & 0xFF); - 22af2: 70eb strb r3, [r5, #3] + 22bd2: 70eb strb r3, [r5, #3] return true; - 22af4: e7de b.n 22ab4 - 22af6: bf00 nop + 22bd4: e7de b.n 22b94 + 22bd6: bf00 nop -00022af8 : +00022bd8 : void BMCEditor::utilitySendAnalogInputCalibrationActivity(uint8_t deviceType, uint16_t index, uint16_t min, uint16_t max, bool onlyIfConnected){ - 22af8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 22afc: 4605 mov r5, r0 - 22afe: 6b00 ldr r0, [r0, #48] ; 0x30 - 22b00: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 - 22b04: 461f mov r7, r3 + 22bd8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 22bdc: 4605 mov r5, r0 + 22bde: 6b00 ldr r0, [r0, #48] ; 0x30 + 22be0: f5ad 7d02 sub.w sp, sp, #520 ; 0x208 + 22be4: 461f mov r7, r3 #if BMC_TOTAL_POTS_AUX_JACKS > 0 if(flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 22b06: 0480 lsls r0, r0, #18 + 22be6: 0480 lsls r0, r0, #18 bool onlyIfConnected){ - 22b08: f8bd a228 ldrh.w sl, [sp, #552] ; 0x228 - 22b0c: f89d 322c ldrb.w r3, [sp, #556] ; 0x22c + 22be8: f8bd a228 ldrh.w sl, [sp, #552] ; 0x228 + 22bec: f89d 322c ldrb.w r3, [sp, #556] ; 0x22c if(flags.read(BMC_EDITOR_FLAG_BACKUP_ACTIVE)){ - 22b10: d429 bmi.n 22b66 + 22bf0: d429 bmi.n 22c46 return; } if(onlyIfConnected && !midi.globals.editorConnected()){ - 22b12: 4688 mov r8, r1 - 22b14: 4691 mov r9, r2 - 22b16: b12b cbz r3, 22b24 - 22b18: 686b ldr r3, [r5, #4] - 22b1a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 22b1e: 6ddb ldr r3, [r3, #92] ; 0x5c - 22b20: 075b lsls r3, r3, #29 - 22b22: d520 bpl.n 22b66 + 22bf2: 4688 mov r8, r1 + 22bf4: 4691 mov r9, r2 + 22bf6: b12b cbz r3, 22c04 + 22bf8: 686b ldr r3, [r5, #4] + 22bfa: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 22bfe: 6ddb ldr r3, [r3, #92] ; 0x5c + 22c00: 075b lsls r3, r3, #29 + 22c02: d520 bpl.n 22c46 struct BMCMidiMessage { - 22b24: ac41 add r4, sp, #260 ; 0x104 - 22b26: 2600 movs r6, #0 + 22c04: ac41 add r4, sp, #260 ; 0x104 + 22c06: 2600 movs r6, #0 return; } BMCMidiMessage buff; buff.prepareEditorMessage( - 22b28: 2307 movs r3, #7 - 22b2a: 9600 str r6, [sp, #0] - 22b2c: 4620 mov r0, r4 - 22b2e: 6026 str r6, [r4, #0] - 22b30: 7126 strb r6, [r4, #4] - 22b32: 9301 str r3, [sp, #4] - 22b34: 237e movs r3, #126 ; 0x7e - 22b36: f895 202d ldrb.w r2, [r5, #45] ; 0x2d - 22b3a: f895 102c ldrb.w r1, [r5, #44] ; 0x2c - 22b3e: f7f8 f9c1 bl 1aec4 + 22c08: 2307 movs r3, #7 + 22c0a: 9600 str r6, [sp, #0] + 22c0c: 4620 mov r0, r4 + 22c0e: 6026 str r6, [r4, #0] + 22c10: 7126 strb r6, [r4, #4] + 22c12: 9301 str r3, [sp, #4] + 22c14: 237e movs r3, #126 ; 0x7e + 22c16: f895 202d ldrb.w r2, [r5, #45] ; 0x2d + 22c1a: f895 102c ldrb.w r1, [r5, #44] ; 0x2c + 22c1e: f7f8 f9c1 bl 1afa4 uint16_t sysLength = size(); - 22b42: f8b4 3003 ldrh.w r3, [r4, #3] + 22c22: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 22c26: 2bfd cmp r3, #253 ; 0xfd + 22c28: d911 bls.n 22c4e buff.appendToSysEx7Bits(deviceType); buff.appendToSysEx14Bits(index); buff.appendToSysEx14Bits(min); buff.appendToSysEx14Bits(max); // don't show midi activity sendToEditor(buff,true,false); - 22b4a: 2301 movs r3, #1 - 22b4c: 2100 movs r1, #0 - 22b4e: 22f7 movs r2, #247 ; 0xf7 - 22b50: 4668 mov r0, sp - 22b52: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 - 22b56: a944 add r1, sp, #272 ; 0x110 - 22b58: f007 fdd6 bl 2a708 - 22b5c: 4628 mov r0, r5 - 22b5e: e894 000e ldmia.w r4, {r1, r2, r3} - 22b62: f7f7 feb3 bl 1a8cc + 22c2a: 2301 movs r3, #1 + 22c2c: 2100 movs r1, #0 + 22c2e: 22f7 movs r2, #247 ; 0xf7 + 22c30: 4668 mov r0, sp + 22c32: e9cd 313e strd r3, r1, [sp, #248] ; 0xf8 + 22c36: a944 add r1, sp, #272 ; 0x110 + 22c38: f007 fdda bl 2a7f0 + 22c3c: 4628 mov r0, r5 + 22c3e: e894 000e ldmia.w r4, {r1, r2, r3} + 22c42: f7f7 feb3 bl 1a9ac #endif } - 22b66: f50d 7d02 add.w sp, sp, #520 ; 0x208 - 22b6a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 22c46: f50d 7d02 add.w sp, sp, #520 ; 0x208 + 22c4a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} sysex[sysLength++] = value; - 22b6e: 1c5a adds r2, r3, #1 + 22c4e: 1c5a adds r2, r3, #1 appendSysExByte(value & 0x7F); - 22b70: f008 087f and.w r8, r8, #127 ; 0x7f + 22c50: f008 087f and.w r8, r8, #127 ; 0x7f sysex[sysLength++] = value; - 22b74: 4423 add r3, r4 + 22c54: 4423 add r3, r4 void setData2(uint8_t t_data2) { data2 = t_data2; } - 22b76: 7126 strb r6, [r4, #4] + 22c56: 7126 strb r6, [r4, #4] setData1(value & 0xFF); - 22b78: 70e2 strb r2, [r4, #3] + 22c58: 70e2 strb r2, [r4, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 22b7a: f3c9 11c6 ubfx r1, r9, #7, #7 + 22c5a: f3c9 11c6 ubfx r1, r9, #7, #7 sysex[sysLength++] = value; - 22b7e: f883 8005 strb.w r8, [r3, #5] + 22c5e: f883 8005 strb.w r8, [r3, #5] uint16_t sysLength = size(); - 22b82: f8b4 3003 ldrh.w r3, [r4, #3] + 22c62: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 22c66: 2bfd cmp r3, #253 ; 0xfd + 22c68: d8df bhi.n 22c2a sysex[sysLength++] = value; - 22b8a: 1c58 adds r0, r3, #1 - 22b8c: 4423 add r3, r4 + 22c6a: 1c58 adds r0, r3, #1 + 22c6c: 4423 add r3, r4 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 22b8e: f009 027f and.w r2, r9, #127 ; 0x7f + 22c6e: f009 027f and.w r2, r9, #127 ; 0x7f setData1(value & 0xFF); - 22b92: 70e0 strb r0, [r4, #3] + 22c72: 70e0 strb r0, [r4, #3] sysex[sysLength++] = value; - 22b94: 7159 strb r1, [r3, #5] + 22c74: 7159 strb r1, [r3, #5] uint16_t sysLength = size(); - 22b96: f8b4 3003 ldrh.w r3, [r4, #3] + 22c76: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 22c7a: 2bfd cmp r3, #253 ; 0xfd + 22c7c: d8d5 bhi.n 22c2a sysex[sysLength++] = value; - 22b9e: 1c59 adds r1, r3, #1 - 22ba0: 4423 add r3, r4 + 22c7e: 1c59 adds r1, r3, #1 + 22c80: 4423 add r3, r4 setData1(value & 0xFF); - 22ba2: 70e1 strb r1, [r4, #3] + 22c82: 70e1 strb r1, [r4, #3] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 22ba4: f3c7 11c6 ubfx r1, r7, #7, #7 + 22c84: f3c7 11c6 ubfx r1, r7, #7, #7 sysex[sysLength++] = value; - 22ba8: 715a strb r2, [r3, #5] + 22c88: 715a strb r2, [r3, #5] uint16_t sysLength = size(); - 22baa: f8b4 2003 ldrh.w r2, [r4, #3] + 22c8a: f8b4 2003 ldrh.w r2, [r4, #3] if(sysLength + 22c8e: 2afd cmp r2, #253 ; 0xfd + 22c90: d8cb bhi.n 22c2a sysex[sysLength++] = value; - 22bb2: 1c50 adds r0, r2, #1 - 22bb4: 4422 add r2, r4 + 22c92: 1c50 adds r0, r2, #1 + 22c94: 4422 add r2, r4 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 22bb6: f007 037f and.w r3, r7, #127 ; 0x7f + 22c96: f007 037f and.w r3, r7, #127 ; 0x7f setData1(value & 0xFF); - 22bba: 70e0 strb r0, [r4, #3] + 22c9a: 70e0 strb r0, [r4, #3] sysex[sysLength++] = value; - 22bbc: 7151 strb r1, [r2, #5] + 22c9c: 7151 strb r1, [r2, #5] uint16_t sysLength = size(); - 22bbe: f8b4 2003 ldrh.w r2, [r4, #3] + 22c9e: f8b4 2003 ldrh.w r2, [r4, #3] if(sysLength + 22ca2: 2afd cmp r2, #253 ; 0xfd + 22ca4: d8c1 bhi.n 22c2a sysex[sysLength++] = value; - 22bc6: 1c51 adds r1, r2, #1 - 22bc8: 4422 add r2, r4 + 22ca6: 1c51 adds r1, r2, #1 + 22ca8: 4422 add r2, r4 setData1(value & 0xFF); - 22bca: 70e1 strb r1, [r4, #3] + 22caa: 70e1 strb r1, [r4, #3] sysex[sysLength++] = value; - 22bcc: 7153 strb r3, [r2, #5] + 22cac: 7153 strb r3, [r2, #5] appendToSysEx7Bits(BMC_MIDI_GET_WORD(1, value)); - 22bce: f3ca 12c6 ubfx r2, sl, #7, #7 + 22cae: f3ca 12c6 ubfx r2, sl, #7, #7 uint16_t sysLength = size(); - 22bd2: f8b4 3003 ldrh.w r3, [r4, #3] + 22cb2: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 22cb6: 2bfd cmp r3, #253 ; 0xfd + 22cb8: d8b7 bhi.n 22c2a sysex[sysLength++] = value; - 22bda: 1c59 adds r1, r3, #1 - 22bdc: 4423 add r3, r4 + 22cba: 1c59 adds r1, r3, #1 + 22cbc: 4423 add r3, r4 appendToSysEx7Bits(BMC_MIDI_GET_WORD(0, value)); - 22bde: f00a 0a7f and.w sl, sl, #127 ; 0x7f + 22cbe: f00a 0a7f and.w sl, sl, #127 ; 0x7f setData1(value & 0xFF); - 22be2: 70e1 strb r1, [r4, #3] + 22cc2: 70e1 strb r1, [r4, #3] sysex[sysLength++] = value; - 22be4: 715a strb r2, [r3, #5] + 22cc4: 715a strb r2, [r3, #5] uint16_t sysLength = size(); - 22be6: f8b4 3003 ldrh.w r3, [r4, #3] + 22cc6: f8b4 3003 ldrh.w r3, [r4, #3] if(sysLength + 22cca: 2bfd cmp r3, #253 ; 0xfd + 22ccc: d8ad bhi.n 22c2a sysex[sysLength++] = value; - 22bee: 18e2 adds r2, r4, r3 - 22bf0: 3301 adds r3, #1 - 22bf2: f882 a005 strb.w sl, [r2, #5] + 22cce: 18e2 adds r2, r4, r3 + 22cd0: 3301 adds r3, #1 + 22cd2: f882 a005 strb.w sl, [r2, #5] setData1(value & 0xFF); - 22bf6: 70e3 strb r3, [r4, #3] + 22cd6: 70e3 strb r3, [r4, #3] return true; - 22bf8: e7a7 b.n 22b4a - 22bfa: bf00 nop + 22cd8: e7a7 b.n 22c2a + 22cda: bf00 nop -00022bfc : +00022cdc : "Outgoing",BMCTools::getMidiStatusName(type) ); } #endif } void BMCMidi::sendSysEx(uint8_t port, uint8_t *data, - 22bfc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 22c00: b087 sub sp, #28 - 22c02: 461d mov r5, r3 + 22cdc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 22ce0: b087 sub sp, #28 + 22ce2: 461d mov r5, r3 if(port>127){ - 22c04: fa4f f981 sxtb.w r9, r1 - 22c08: 4688 mov r8, r1 - 22c0a: f89d 3044 ldrb.w r3, [sp, #68] ; 0x44 - 22c0e: 4606 mov r6, r0 - 22c10: f1b9 0f00 cmp.w r9, #0 - 22c14: 4617 mov r7, r2 - 22c16: 9301 str r3, [sp, #4] - 22c18: f89d 3048 ldrb.w r3, [sp, #72] ; 0x48 - 22c1c: f89d a040 ldrb.w sl, [sp, #64] ; 0x40 - 22c20: 9300 str r3, [sp, #0] - 22c22: f2c0 80d9 blt.w 22dd8 + 22ce4: fa4f f981 sxtb.w r9, r1 + 22ce8: 460f mov r7, r1 + 22cea: f89d 3040 ldrb.w r3, [sp, #64] ; 0x40 + 22cee: 4680 mov r8, r0 + 22cf0: f1b9 0f00 cmp.w r9, #0 + 22cf4: 4616 mov r6, r2 + 22cf6: 9300 str r3, [sp, #0] + 22cf8: f89d 3048 ldrb.w r3, [sp, #72] ; 0x48 + 22cfc: f89d b044 ldrb.w fp, [sp, #68] ; 0x44 + 22d00: 9301 str r3, [sp, #4] + 22d02: f2c0 80be blt.w 22e82 uint16_t size, bool hasTerm, uint8_t cable, bool midiOutActivityAllowed){ if(size==0){ return; } if(isMidiUsbPort(port)){ - 22c26: f011 0f01 tst.w r1, #1 - 22c2a: d03f beq.n 22cac + 22d06: 07cb lsls r3, r1, #31 + 22d08: d537 bpl.n 22d7a if (cable >= MIDI_NUM_CABLES) return; - 22c2c: 9b01 ldr r3, [sp, #4] - 22c2e: 2b00 cmp r3, #0 - 22c30: d13c bne.n 22cac + 22d0a: f1bb 0f00 cmp.w fp, #0 + 22d0e: d134 bne.n 22d7a if (hasTerm) { - 22c32: f1ba 0f00 cmp.w sl, #0 - 22c36: f040 80f8 bne.w 22e2a + 22d10: 9b00 ldr r3, [sp, #0] + 22d12: 2b00 cmp r3, #0 + 22d14: f040 80d0 bne.w 22eb8 usb_midi_send_sysex_add_term_bytes(data, length, cable); - 22c3a: 4652 mov r2, sl - 22c3c: 4629 mov r1, r5 - 22c3e: 4638 mov r0, r7 - 22c40: f008 ff9e bl 2bb80 - 22c44: f1b9 0f00 cmp.w r9, #0 - 22c48: da30 bge.n 22cac + 22d18: 9a00 ldr r2, [sp, #0] + 22d1a: 4629 mov r1, r5 + 22d1c: 4630 mov r0, r6 + 22d1e: f008 ffa3 bl 2bc68 + 22d22: f1b9 0f00 cmp.w r9, #0 + 22d26: da28 bge.n 22d7a return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 22c4a: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 22c4e: f008 010f and.w r1, r8, #15 - 22c52: 681a ldr r2, [r3, #0] - 22c54: eb02 0241 add.w r2, r2, r1, lsl #1 - 22c58: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 22d28: f8d8 3108 ldr.w r3, [r8, #264] ; 0x108 + 22d2c: f007 010f and.w r1, r7, #15 + 22d30: 681a ldr r2, [r3, #0] + 22d32: eb02 0241 add.w r2, r2, r1, lsl #1 + 22d36: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 usbMIDI.sendSysEx(size, data, hasTerm, cable); } #ifdef BMC_MIDI_SERIAL_A_ENABLED if(isMidiSerialAPort(port)){ - 22c5c: 0794 lsls r4, r2, #30 - 22c5e: d441 bmi.n 22ce4 - #endif - midiSerial.serialPortA.sendSysEx(size, data, hasTerm); - } - #endif - #ifdef BMC_MIDI_SERIAL_B_ENABLED - if(isMidiSerialBPort(port)){ - 22c60: 0750 lsls r0, r2, #29 - 22c62: d52c bpl.n 22cbe - break; - } - } - void sendSysEx(uint16_t len, const uint8_t* arr, bool bounds = false){ - // writeData(BMC_MIDI_CONTROL_CHANGE | (channel-1), cc, val); - if(!bounds){ - 22c64: f1ba 0f00 cmp.w sl, #0 - 22c68: f000 80d5 beq.w 22e16 - Port.write(0xF0); - } - for(int i=0;i - 22c6e: f107 3bff add.w fp, r7, #4294967295 ; 0xffffffff - 22c72: 465c mov r4, fp - Port.write(arr[i]); - 22c74: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - 22c78: f81b 1f01 ldrb.w r1, [fp, #1]! - for(int i=0;i - } - if(!bounds){ - 22c8a: f1ba 0f00 cmp.w sl, #0 - 22c8e: d105 bne.n 22c9c - 22c90: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - // Transmit a single byte - size_t write(long n) { return write((uint8_t)n); } - // Transmit a single byte - size_t write(unsigned int n) { return write((uint8_t)n); } - // Transmit a single byte - size_t write(int n) { return write((uint8_t)n); } - 22c94: 21f7 movs r1, #247 ; 0xf7 - 22c96: 6803 ldr r3, [r0, #0] - 22c98: 681b ldr r3, [r3, #0] - 22c9a: 4798 blx r3 - if(port>127){ - 22c9c: f1b9 0f00 cmp.w r9, #0 + 22d3a: 0794 lsls r4, r2, #30 + 22d3c: d427 bmi.n 22d8e midiSerial.serialPortD.sendSysEx(size, data, hasTerm); } #endif #ifdef BMC_USB_HOST_ENABLED if(isMidiHostPort(port) && globals.hostConnected()){ - 22ca0: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 22ca4: f2c0 80de blt.w 22e64 - 22ca8: 4642 mov r2, r8 - 22caa: e008 b.n 22cbe - if(isMidiSerialAPort(port)){ - 22cac: f018 0f02 tst.w r8, #2 - 22cb0: d118 bne.n 22ce4 - if(isMidiSerialBPort(port)){ - 22cb2: f018 0f04 tst.w r8, #4 - 22cb6: d1d5 bne.n 22c64 - if(isMidiHostPort(port) && globals.hostConnected()){ - 22cb8: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 22cbc: 4642 mov r2, r8 - 22cbe: 0691 lsls r1, r2, #26 - 22cc0: d503 bpl.n 22cca - 22cc2: 6dda ldr r2, [r3, #92] ; 0x5c - 22cc4: 0712 lsls r2, r2, #28 - 22cc6: f100 80b6 bmi.w 22e36 + 22d3e: 0691 lsls r1, r2, #26 + 22d40: d508 bpl.n 22d54 + 22d42: 6dda ldr r2, [r3, #92] ; 0x5c + 22d44: 0714 lsls r4, r2, #28 + 22d46: f100 80bd bmi.w 22ec4 + if(port>127){ + 22d4a: f1b9 0f00 cmp.w r9, #0 + 22d4e: f2c0 80eb blt.w 22f28 + 22d52: 463a mov r2, r7 + midiHost.Port.sendSysEx(size, data, hasTerm, cable); + } + #endif + + #ifdef BMC_MIDI_BLE_ENABLED if(isMidiBlePort(port) && globals.bleConnected()){ + 22d54: 0650 lsls r0, r2, #25 + 22d56: d503 bpl.n 22d60 + 22d58: 6dda ldr r2, [r3, #92] ; 0x5c + 22d5a: 06d1 lsls r1, r2, #27 + 22d5c: f100 80bf bmi.w 22ede midiBle.Port.sendSysEx(size, data, hasTerm); } #endif if(midiOutActivityAllowed){ - 22cca: 9a00 ldr r2, [sp, #0] - 22ccc: b11a cbz r2, 22cd6 + 22d60: 9a01 ldr r2, [sp, #4] + 22d62: b11a cbz r2, 22d6c bitSet(flags, bit); - 22cce: 6dda ldr r2, [r3, #92] ; 0x5c - 22cd0: f042 0202 orr.w r2, r2, #2 - 22cd4: 65da str r2, [r3, #92] ; 0x5c + 22d64: 6dda ldr r2, [r3, #92] ; 0x5c + 22d66: f042 0202 orr.w r2, r2, #2 + 22d6a: 65da str r2, [r3, #92] ; 0x5c return bitRead(flags, bit); - 22cd6: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 22d6c: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 globals.setMidiOutActivity(); } #ifdef BMC_DEBUG if(globals.getMidiOutDebug()){ - 22cda: 069b lsls r3, r3, #26 - 22cdc: d42b bmi.n 22d36 + 22d70: 069a lsls r2, r3, #26 + 22d72: d434 bmi.n 22dde "Outgoing SysEx" ); BMC_PRINT_ARRAY(true,data,size); } #endif } - 22cde: b007 add sp, #28 - 22ce0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 22d74: b007 add sp, #28 + 22d76: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + if(isMidiSerialAPort(port)){ + 22d7a: 07bb lsls r3, r7, #30 + 22d7c: d407 bmi.n 22d8e + if(isMidiHostPort(port) && globals.hostConnected()){ + 22d7e: 06b8 lsls r0, r7, #26 + 22d80: f8d8 3108 ldr.w r3, [r8, #264] ; 0x108 + 22d84: d5e5 bpl.n 22d52 + 22d86: 6dda ldr r2, [r3, #92] ; 0x5c + 22d88: 0714 lsls r4, r2, #28 + 22d8a: d5de bpl.n 22d4a + 22d8c: e09a b.n 22ec4 + break; + } + } + void sendSysEx(uint16_t len, const uint8_t* arr, bool bounds = false){ + // writeData(BMC_MIDI_CONTROL_CHANGE | (channel-1), cc, val); if(!bounds){ - 22ce4: f1ba 0f00 cmp.w sl, #0 - 22ce8: f000 808b beq.w 22e02 + 22d8e: 9b00 ldr r3, [sp, #0] + 22d90: 2b00 cmp r3, #0 + 22d92: f000 8087 beq.w 22ea4 + Port.write(0xF0); + } for(int i=0;i - 22cee: f107 3bff add.w fp, r7, #4294967295 ; 0xffffffff - 22cf2: 465c mov r4, fp + 22d96: b1ad cbz r5, 22dc4 + 22d98: f106 3aff add.w sl, r6, #4294967295 ; 0xffffffff + 22d9c: 4654 mov r4, sl Port.write(arr[i]); - 22cf4: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 - 22cf8: f81b 1f01 ldrb.w r1, [fp, #1]! + 22d9e: f8d8 0938 ldr.w r0, [r8, #2360] ; 0x938 + 22da2: f81a 1f01 ldrb.w r1, [sl, #1]! for(int i=0;i + 22db0: 42a5 cmp r5, r4 + 22db2: dcf3 bgt.n 22d9c + } if(!bounds){ - 22d0a: f1ba 0f00 cmp.w sl, #0 - 22d0e: d105 bne.n 22d1c - 22d10: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 - 22d14: 21f7 movs r1, #247 ; 0xf7 - 22d16: 6803 ldr r3, [r0, #0] - 22d18: 681b ldr r3, [r3, #0] - 22d1a: 4798 blx r3 - 22d1c: f1b9 0f00 cmp.w r9, #0 - 22d20: dac7 bge.n 22cb2 + 22db4: 9b00 ldr r3, [sp, #0] + 22db6: b92b cbnz r3, 22dc4 + 22db8: f8d8 0938 ldr.w r0, [r8, #2360] ; 0x938 + // Transmit a single byte + size_t write(long n) { return write((uint8_t)n); } + // Transmit a single byte + size_t write(unsigned int n) { return write((uint8_t)n); } + // Transmit a single byte + size_t write(int n) { return write((uint8_t)n); } + 22dbc: 21f7 movs r1, #247 ; 0xf7 + 22dbe: 6803 ldr r3, [r0, #0] + 22dc0: 681b ldr r3, [r3, #0] + 22dc2: 4798 blx r3 + 22dc4: f1b9 0f00 cmp.w r9, #0 + 22dc8: dad9 bge.n 22d7e return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 22d22: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 22d26: f008 010f and.w r1, r8, #15 - 22d2a: 681a ldr r2, [r3, #0] - 22d2c: eb02 0241 add.w r2, r2, r1, lsl #1 - 22d30: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 - 22d34: e794 b.n 22c60 - 22d36: 4b52 ldr r3, [pc, #328] ; (22e80 ) + 22dca: f8d8 3108 ldr.w r3, [r8, #264] ; 0x108 + 22dce: f007 010f and.w r1, r7, #15 + 22dd2: 681a ldr r2, [r3, #0] + 22dd4: eb02 0241 add.w r2, r2, r1, lsl #1 + 22dd8: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 22ddc: e7af b.n 22d3e + 22dde: 4b62 ldr r3, [pc, #392] ; (22f68 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 22d38: 220a movs r2, #10 - 22d3a: 4852 ldr r0, [pc, #328] ; (22e84 ) - 22d3c: 6819 ldr r1, [r3, #0] - 22d3e: 2300 movs r3, #0 - 22d40: f007 f8b4 bl 29eac - 22d44: 2101 movs r1, #1 - 22d46: 4850 ldr r0, [pc, #320] ; (22e88 ) - 22d48: f009 fbfe bl 2c548 + 22de0: 220a movs r2, #10 + 22de2: 4862 ldr r0, [pc, #392] ; (22f6c ) + 22de4: 6819 ldr r1, [r3, #0] + 22de6: 2300 movs r3, #0 + 22de8: f007 f8d6 bl 29f98 + 22dec: 2101 movs r1, #1 + 22dee: 4860 ldr r0, [pc, #384] ; (22f70 ) + 22df0: f009 fc1e bl 2c630 if(port>127){ - 22d4c: f1b9 0f00 cmp.w r9, #0 - 22d50: db7e blt.n 22e50 + 22df4: f1b9 0f00 cmp.w r9, #0 + 22df8: f2c0 809e blt.w 22f38 BMC_PRINTLN( - 22d52: 4641 mov r1, r8 - 22d54: a802 add r0, sp, #8 - 22d56: f7e0 fcef bl 3738 - 22d5a: a902 add r1, sp, #8 - 22d5c: 4849 ldr r0, [pc, #292] ; (22e84 ) - 22d5e: f007 f857 bl 29e10 - 22d62: a802 add r0, sp, #8 - 22d64: f007 f988 bl 2a078 - 22d68: 2101 movs r1, #1 - 22d6a: 4847 ldr r0, [pc, #284] ; (22e88 ) - 22d6c: f009 fbec bl 2c548 - 22d70: 210e movs r1, #14 - 22d72: 4846 ldr r0, [pc, #280] ; (22e8c ) - 22d74: f009 fbe8 bl 2c548 + 22dfc: 4639 mov r1, r7 + 22dfe: a802 add r0, sp, #8 + 22e00: f7e0 fc9a bl 3738 + 22e04: a902 add r1, sp, #8 + 22e06: 4859 ldr r0, [pc, #356] ; (22f6c ) + 22e08: f007 f878 bl 29efc + 22e0c: a802 add r0, sp, #8 + 22e0e: f007 f9a7 bl 2a160 + 22e12: 2101 movs r1, #1 + 22e14: 4856 ldr r0, [pc, #344] ; (22f70 ) + 22e16: f009 fc0b bl 2c630 + 22e1a: 210e movs r1, #14 + 22e1c: 4855 ldr r0, [pc, #340] ; (22f74 ) + 22e1e: f009 fc07 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 22d78: 4842 ldr r0, [pc, #264] ; (22e84 ) - 22d7a: f007 f87b bl 29e74 - 22d7e: 2107 movs r1, #7 - 22d80: 4843 ldr r0, [pc, #268] ; (22e90 ) - 22d82: f009 fbe1 bl 2c548 + 22e22: 4852 ldr r0, [pc, #328] ; (22f6c ) + 22e24: f007 f89c bl 29f60 + 22e28: 2107 movs r1, #7 + 22e2a: 4853 ldr r0, [pc, #332] ; (22f78 ) + 22e2c: f009 fc00 bl 2c630 size_t print(int n, int base) { return (base == 10) ? print(n) : printNumber(n, base, 0); } - 22d86: 4629 mov r1, r5 - 22d88: 2300 movs r3, #0 - 22d8a: 2210 movs r2, #16 - 22d8c: 483d ldr r0, [pc, #244] ; (22e84 ) - 22d8e: f007 f88d bl 29eac - 22d92: 2101 movs r1, #1 - 22d94: 483f ldr r0, [pc, #252] ; (22e94 ) - 22d96: f009 fbd7 bl 2c548 - 22d9a: b19d cbz r5, 22dc4 - 22d9c: 3d01 subs r5, #1 - 22d9e: 1e7c subs r4, r7, #1 - 22da0: f8df 80e4 ldr.w r8, [pc, #228] ; 22e88 + 22e30: 4629 mov r1, r5 + 22e32: 2300 movs r3, #0 + 22e34: 2210 movs r2, #16 + 22e36: 484d ldr r0, [pc, #308] ; (22f6c ) + 22e38: f007 f8ae bl 29f98 + 22e3c: 2101 movs r1, #1 + 22e3e: 484f ldr r0, [pc, #316] ; (22f7c ) + 22e40: f009 fbf6 bl 2c630 + 22e44: b19d cbz r5, 22e6e + 22e46: 3d01 subs r5, #1 + 22e48: 1e74 subs r4, r6, #1 + 22e4a: f8df 8124 ldr.w r8, [pc, #292] ; 22f70 size_t print(unsigned char n, int base) { return printNumber(n, base, 0); } - 22da4: 4e37 ldr r6, [pc, #220] ; (22e84 ) - 22da6: fa17 f585 uxtah r5, r7, r5 - 22daa: 2101 movs r1, #1 - 22dac: 4640 mov r0, r8 - 22dae: f009 fbcb bl 2c548 - 22db2: f814 1f01 ldrb.w r1, [r4, #1]! - 22db6: 2300 movs r3, #0 - 22db8: 2210 movs r2, #16 - 22dba: 4630 mov r0, r6 - 22dbc: f007 f876 bl 29eac - 22dc0: 42ac cmp r4, r5 - 22dc2: d1f2 bne.n 22daa - 22dc4: 2100 movs r1, #0 - 22dc6: 4834 ldr r0, [pc, #208] ; (22e98 ) - 22dc8: f009 fbbe bl 2c548 + 22e4e: 4f47 ldr r7, [pc, #284] ; (22f6c ) + 22e50: fa16 f585 uxtah r5, r6, r5 + 22e54: 2101 movs r1, #1 + 22e56: 4640 mov r0, r8 + 22e58: f009 fbea bl 2c630 + 22e5c: f814 1f01 ldrb.w r1, [r4, #1]! + 22e60: 2300 movs r3, #0 + 22e62: 2210 movs r2, #16 + 22e64: 4638 mov r0, r7 + 22e66: f007 f897 bl 29f98 + 22e6a: 42ac cmp r4, r5 + 22e6c: d1f2 bne.n 22e54 + 22e6e: 2100 movs r1, #0 + 22e70: 4843 ldr r0, [pc, #268] ; (22f80 ) + 22e72: f009 fbdd bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 22dcc: 482d ldr r0, [pc, #180] ; (22e84 ) + 22e76: 483d ldr r0, [pc, #244] ; (22f6c ) } - 22dce: b007 add sp, #28 - 22dd0: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 22dd4: f007 b84e b.w 29e74 + 22e78: b007 add sp, #28 + 22e7a: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 22e7e: f007 b86f b.w 29f60 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 22dd8: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 - 22ddc: f001 010f and.w r1, r1, #15 - 22de0: 681a ldr r2, [r3, #0] - 22de2: eb02 0241 add.w r2, r2, r1, lsl #1 - 22de6: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 22e82: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 + 22e86: f001 010f and.w r1, r1, #15 + 22e8a: 681a ldr r2, [r3, #0] + 22e8c: eb02 0241 add.w r2, r2, r1, lsl #1 + 22e90: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 if(isMidiUsbPort(port)){ - 22dea: 07d1 lsls r1, r2, #31 - 22dec: f57f af36 bpl.w 22c5c + 22e94: 07d1 lsls r1, r2, #31 + 22e96: f57f af50 bpl.w 22d3a if (cable >= MIDI_NUM_CABLES) return; - 22df0: 9901 ldr r1, [sp, #4] - 22df2: 2900 cmp r1, #0 - 22df4: f47f af32 bne.w 22c5c - if (hasTerm) { - 22df8: f1ba 0f00 cmp.w sl, #0 - 22dfc: f43f af1d beq.w 22c3a - 22e00: e013 b.n 22e2a - Port.write(0xF0); - 22e02: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 - 22e06: 21f0 movs r1, #240 ; 0xf0 - 22e08: 6803 ldr r3, [r0, #0] - 22e0a: 681b ldr r3, [r3, #0] - 22e0c: 4798 blx r3 - for(int i=0;i - 22e14: e77c b.n 22d10 + 22e9a: f1bb 0f00 cmp.w fp, #0 + 22e9e: f43f af37 beq.w 22d10 + 22ea2: e74a b.n 22d3a Port.write(0xF0); - 22e16: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - 22e1a: 21f0 movs r1, #240 ; 0xf0 - 22e1c: 6803 ldr r3, [r0, #0] - 22e1e: 681b ldr r3, [r3, #0] - 22e20: 4798 blx r3 + 22ea4: f8d8 0938 ldr.w r0, [r8, #2360] ; 0x938 + 22ea8: 21f0 movs r1, #240 ; 0xf0 + 22eaa: 6803 ldr r3, [r0, #0] + 22eac: 681b ldr r3, [r3, #0] + 22eae: 4798 blx r3 for(int i=0;i - 22e28: e732 b.n 22c90 + 22eb0: 2d00 cmp r5, #0 + 22eb2: f47f af71 bne.w 22d98 + 22eb6: e77f b.n 22db8 usb_midi_send_sysex_buffer_has_term(data, length, cable); - 22e2a: 2200 movs r2, #0 - 22e2c: 4629 mov r1, r5 - 22e2e: 4638 mov r0, r7 - 22e30: f008 fe46 bl 2bac0 - 22e34: e706 b.n 22c44 - midiHost.Port.sendSysEx(size, data, hasTerm, cable); - 22e36: f506 6036 add.w r0, r6, #2912 ; 0xb60 - send_sysex_buffer_has_term(data, length, cable); - 22e3a: 9b01 ldr r3, [sp, #4] - 22e3c: 462a mov r2, r5 - 22e3e: 4639 mov r1, r7 + 22eb8: 2200 movs r2, #0 + 22eba: 4629 mov r1, r5 + 22ebc: 4630 mov r0, r6 + 22ebe: f008 fe73 bl 2bba8 + 22ec2: e72e b.n 22d22 if (hasTerm) { - 22e40: f1ba 0f00 cmp.w sl, #0 - 22e44: d016 beq.n 22e74 + 22ec4: 9b00 ldr r3, [sp, #0] + midiHost.Port.sendSysEx(size, data, hasTerm, cable); + 22ec6: f508 6026 add.w r0, r8, #2656 ; 0xa60 + 22eca: 2b00 cmp r3, #0 + 22ecc: d03e beq.n 22f4c send_sysex_buffer_has_term(data, length, cable); - 22e46: f005 fc07 bl 28658 + 22ece: 465b mov r3, fp + 22ed0: 462a mov r2, r5 + 22ed2: 4631 mov r1, r6 + 22ed4: f005 fc36 bl 28744 + if(isMidiBlePort(port) && globals.bleConnected()){ + 22ed8: f8d8 3108 ldr.w r3, [r8, #264] ; 0x108 + 22edc: e735 b.n 22d4a + if(!bounds){ + 22ede: 9a00 ldr r2, [sp, #0] + 22ee0: 2a00 cmp r2, #0 + 22ee2: d13b bne.n 22f5c + Port.write(0xF0); + 22ee4: f508 5a80 add.w sl, r8, #4096 ; 0x1000 + 22ee8: 21f0 movs r1, #240 ; 0xf0 + 22eea: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + 22eee: 6803 ldr r3, [r0, #0] + 22ef0: 681b ldr r3, [r3, #0] + 22ef2: 4798 blx r3 + for(int i=0;i + 22ef6: f106 3bff add.w fp, r6, #4294967295 ; 0xffffffff + 22efa: 465c mov r4, fp + Port.write(arr[i]); + 22efc: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + 22f00: f81b 1f01 ldrb.w r1, [fp, #1]! + for(int i=0;i + if(!bounds){ + 22f12: 9b00 ldr r3, [sp, #0] + 22f14: b92b cbnz r3, 22f22 + 22f16: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + 22f1a: 21f7 movs r1, #247 ; 0xf7 + 22f1c: 6803 ldr r3, [r0, #0] + 22f1e: 681b ldr r3, [r3, #0] + 22f20: 4798 blx r3 globals.setMidiOutActivity(); - 22e4a: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 22e4e: e73c b.n 22cca - 22e50: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 22e54: f008 080f and.w r8, r8, #15 - 22e58: 681b ldr r3, [r3, #0] - 22e5a: eb03 0348 add.w r3, r3, r8, lsl #1 - 22e5e: f893 8ef9 ldrb.w r8, [r3, #3833] ; 0xef9 - 22e62: e776 b.n 22d52 - 22e64: f008 010f and.w r1, r8, #15 - 22e68: 681a ldr r2, [r3, #0] - 22e6a: eb02 0241 add.w r2, r2, r1, lsl #1 - 22e6e: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 - 22e72: e724 b.n 22cbe + 22f22: f8d8 3108 ldr.w r3, [r8, #264] ; 0x108 + 22f26: e71b b.n 22d60 + 22f28: 681a ldr r2, [r3, #0] + 22f2a: f007 010f and.w r1, r7, #15 + 22f2e: eb02 0241 add.w r2, r2, r1, lsl #1 + 22f32: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 22f36: e70d b.n 22d54 + 22f38: f8d8 3108 ldr.w r3, [r8, #264] ; 0x108 + 22f3c: f007 070f and.w r7, r7, #15 + 22f40: 681b ldr r3, [r3, #0] + 22f42: eb03 0347 add.w r3, r3, r7, lsl #1 + 22f46: f893 7ef9 ldrb.w r7, [r3, #3833] ; 0xef9 + 22f4a: e757 b.n 22dfc send_sysex_add_term_bytes(data, length, cable); - 22e74: f005 fc46 bl 28704 - 22e78: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 22e7c: e725 b.n 22cca - 22e7e: bf00 nop - 22e80: 2000bae8 .word 0x2000bae8 - 22e84: 20004ba8 .word 0x20004ba8 - 22e88: 200023ec .word 0x200023ec - 22e8c: 20003878 .word 0x20003878 - 22e90: 20001cc8 .word 0x20001cc8 - 22e94: 20002b14 .word 0x20002b14 - 22e98: 20003c58 .word 0x20003c58 - -00022e9c : + 22f4c: 465b mov r3, fp + 22f4e: 462a mov r2, r5 + 22f50: 4631 mov r1, r6 + 22f52: f005 fc4d bl 287f0 + if(isMidiBlePort(port) && globals.bleConnected()){ + 22f56: f8d8 3108 ldr.w r3, [r8, #264] ; 0x108 + 22f5a: e6f6 b.n 22d4a + for(int i=0;i + 22f62: f508 5a80 add.w sl, r8, #4096 ; 0x1000 + 22f66: e7c6 b.n 22ef6 + 22f68: 2000bb08 .word 0x2000bb08 + 22f6c: 20004c68 .word 0x20004c68 + 22f70: 200023ec .word 0x200023ec + 22f74: 20003938 .word 0x20003938 + 22f78: 20001cc8 .word 0x20001cc8 + 22f7c: 20002b1c .word 0x20002b1c + 22f80: 20003d18 .word 0x20003d18 + +00022f84 : void BMCMidi::sendRealTime(uint8_t port, uint8_t type, uint8_t cable){ - 22e9c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 22f84: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} if(port>127){ - 22ea0: b24f sxtb r7, r1 - 22ea2: b085 sub sp, #20 - 22ea4: 460c mov r4, r1 - 22ea6: 4606 mov r6, r0 - 22ea8: 2f00 cmp r7, #0 - 22eaa: 4615 mov r5, r2 - 22eac: 4698 mov r8, r3 - 22eae: f2c0 8083 blt.w 22fb8 + 22f88: b24f sxtb r7, r1 + 22f8a: b085 sub sp, #20 + 22f8c: 460c mov r4, r1 + 22f8e: 4606 mov r6, r0 + 22f90: 2f00 cmp r7, #0 + 22f92: 4615 mov r5, r2 + 22f94: 4698 mov r8, r3 + 22f96: f2c0 8090 blt.w 230ba if(isMidiUsbPort(port)){ - 22eb2: 07cb lsls r3, r1, #31 - 22eb4: d514 bpl.n 22ee0 + 22f9a: 07cb lsls r3, r1, #31 + 22f9c: d513 bpl.n 22fc6 switch (type) { - 22eb6: f105 0308 add.w r3, r5, #8 - 22eba: b2db uxtb r3, r3 - 22ebc: 2b07 cmp r3, #7 - 22ebe: d80f bhi.n 22ee0 - 22ec0: 22dd movs r2, #221 ; 0xdd - 22ec2: fa22 f303 lsr.w r3, r2, r3 - 22ec6: 07db lsls r3, r3, #31 - 22ec8: d50a bpl.n 22ee0 + 22f9e: f105 0308 add.w r3, r5, #8 + 22fa2: b2db uxtb r3, r3 + 22fa4: 2b07 cmp r3, #7 + 22fa6: d80e bhi.n 22fc6 + 22fa8: 22dd movs r2, #221 ; 0xdd + 22faa: fa22 f303 lsr.w r3, r2, r3 + 22fae: 07db lsls r3, r3, #31 + 22fb0: d509 bpl.n 22fc6 if (cable >= MIDI_NUM_CABLES) return; - 22eca: f1b8 0f00 cmp.w r8, #0 - 22ece: d104 bne.n 22eda + 22fb2: f1b8 0f00 cmp.w r8, #0 + 22fb6: d104 bne.n 22fc2 usb_midi_write_packed((type << 8) | 0x0F | ((cable & 0x0F) << 4)); - 22ed0: 0228 lsls r0, r5, #8 - 22ed2: f040 000f orr.w r0, r0, #15 - 22ed6: f008 fd9b bl 2ba10 - 22eda: 2f00 cmp r7, #0 - 22edc: f2c0 80b2 blt.w 23044 + 22fb8: 0228 lsls r0, r5, #8 + 22fba: f040 000f orr.w r0, r0, #15 + 22fbe: f008 fd9b bl 2baf8 + 22fc2: 2f00 cmp r7, #0 + 22fc4: db20 blt.n 23008 if(isMidiSerialAPort(port)){ - 22ee0: 07a1 lsls r1, r4, #30 - 22ee2: d520 bpl.n 22f26 + 22fc6: 07a1 lsls r1, r4, #30 + 22fc8: d505 bpl.n 22fd6 Port.write(status); - 22ee4: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 - 22ee8: 4629 mov r1, r5 - 22eea: 6803 ldr r3, [r0, #0] - 22eec: 681b ldr r3, [r3, #0] - 22eee: 4798 blx r3 - if(isMidiSerialBPort(port)){ - 22ef0: 0760 lsls r0, r4, #29 - 22ef2: f100 8082 bmi.w 22ffa + 22fca: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 + 22fce: 4629 mov r1, r5 + 22fd0: 6803 ldr r3, [r0, #0] + 22fd2: 681b ldr r3, [r3, #0] + 22fd4: 4798 blx r3 if(isMidiHostPort(port) && globals.hostConnected()){ - 22ef6: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 - 22efa: 4621 mov r1, r4 - 22efc: 0688 lsls r0, r1, #26 - 22efe: d503 bpl.n 22f08 - 22f00: 6dd3 ldr r3, [r2, #92] ; 0x5c - 22f02: 0719 lsls r1, r3, #28 - 22f04: f100 80ab bmi.w 2305e + 22fd6: 06a3 lsls r3, r4, #26 + 22fd8: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 + 22fdc: d423 bmi.n 23026 + 22fde: 4621 mov r1, r4 + type!=BMC_MIDI_RT_CLOCK && + 22fe0: 0649 lsls r1, r1, #25 + 22fe2: d502 bpl.n 22fea + 22fe4: 6dd3 ldr r3, [r2, #92] ; 0x5c + isMidiBlePort(port) && + 22fe6: 06db lsls r3, r3, #27 + 22fe8: d42a bmi.n 23040 if(!isSkipped(type)){ - 22f08: 2df8 cmp r5, #248 ; 0xf8 - 22f0a: d019 beq.n 22f40 - 22f0c: 2dfe cmp r5, #254 ; 0xfe - 22f0e: d017 beq.n 22f40 + 22fea: 2df8 cmp r5, #248 ; 0xf8 + 22fec: d02a beq.n 23044 + 22fee: 2dfe cmp r5, #254 ; 0xfe + 22ff0: d028 beq.n 23044 bitSet(flags, bit); - 22f10: 6dd3 ldr r3, [r2, #92] ; 0x5c - 22f12: f043 0302 orr.w r3, r3, #2 - 22f16: 65d3 str r3, [r2, #92] ; 0x5c + 22ff2: 6dd3 ldr r3, [r2, #92] ; 0x5c + 22ff4: f043 0302 orr.w r3, r3, #2 + 22ff8: 65d3 str r3, [r2, #92] ; 0x5c return bitRead(flags, bit); - 22f18: f8b2 3060 ldrh.w r3, [r2, #96] ; 0x60 + 22ffa: f8b2 3060 ldrh.w r3, [r2, #96] ; 0x60 if(globals.getMidiOutDebug()){ - 22f1c: 0698 lsls r0, r3, #26 - 22f1e: d415 bmi.n 22f4c -} - 22f20: b005 add sp, #20 - 22f22: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - if(isMidiSerialBPort(port)){ - 22f26: 0762 lsls r2, r4, #29 - 22f28: d5e5 bpl.n 22ef6 - 22f2a: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - 22f2e: 4629 mov r1, r5 - 22f30: 6803 ldr r3, [r0, #0] - 22f32: 681b ldr r3, [r3, #0] - 22f34: 4798 blx r3 - 22f36: 2f00 cmp r7, #0 - 22f38: dadd bge.n 22ef6 - 22f3a: f004 090f and.w r9, r4, #15 - 22f3e: e079 b.n 23034 - 22f40: f8b2 3060 ldrh.w r3, [r2, #96] ; 0x60 + 22ffe: 0698 lsls r0, r3, #26 + 23000: d426 bmi.n 23050 +} + 23002: b005 add sp, #20 + 23004: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 23008: f8d6 0108 ldr.w r0, [r6, #264] ; 0x108 + 2300c: f004 090f and.w r9, r4, #15 + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 23010: 6803 ldr r3, [r0, #0] + 23012: 4602 mov r2, r0 + 23014: eb03 0349 add.w r3, r3, r9, lsl #1 + 23018: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 + if(isMidiSerialAPort(port)){ + 2301c: 0788 lsls r0, r1, #30 + 2301e: f100 808e bmi.w 2313e + if(isMidiHostPort(port) && globals.hostConnected()){ + 23022: 0688 lsls r0, r1, #26 + 23024: d5dc bpl.n 22fe0 + 23026: 6dd3 ldr r3, [r2, #92] ; 0x5c + 23028: 071b lsls r3, r3, #28 + 2302a: d470 bmi.n 2310e + if(port>127){ + 2302c: 2f00 cmp r7, #0 + 2302e: dad6 bge.n 22fde + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 23030: f004 010f and.w r1, r4, #15 + 23034: 6813 ldr r3, [r2, #0] + 23036: eb03 0341 add.w r3, r3, r1, lsl #1 + 2303a: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 + 2303e: e7cf b.n 22fe0 + type!=BMC_MIDI_RT_CLOCK && + 23040: 2df8 cmp r5, #248 ; 0xf8 + 23042: d156 bne.n 230f2 + 23044: f8b2 3060 ldrh.w r3, [r2, #96] ; 0x60 if(globals.getMidiOutDebug()){ - 22f44: 069a lsls r2, r3, #26 - 22f46: d5eb bpl.n 22f20 + 23048: 069a lsls r2, r3, #26 + 2304a: d5da bpl.n 23002 if(isSkipped(type) && !globals.getMidiOutClockDebug()){ - 22f48: 0659 lsls r1, r3, #25 - 22f4a: d5e9 bpl.n 22f20 - 22f4c: 4b56 ldr r3, [pc, #344] ; (230a8 ) + 2304c: 0659 lsls r1, r3, #25 + 2304e: d5d8 bpl.n 23002 + 23050: 4b48 ldr r3, [pc, #288] ; (23174 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 22f4e: 220a movs r2, #10 - 22f50: 4856 ldr r0, [pc, #344] ; (230ac ) - 22f52: 6819 ldr r1, [r3, #0] - 22f54: 2300 movs r3, #0 - 22f56: f006 ffa9 bl 29eac - 22f5a: 2101 movs r1, #1 - 22f5c: 4854 ldr r0, [pc, #336] ; (230b0 ) - 22f5e: f009 faf3 bl 2c548 - 22f62: 2f00 cmp r7, #0 - 22f64: f2c0 8095 blt.w 23092 + 23052: 220a movs r2, #10 + 23054: 4848 ldr r0, [pc, #288] ; (23178 ) + 23056: 6819 ldr r1, [r3, #0] + 23058: 2300 movs r3, #0 + 2305a: f006 ff9d bl 29f98 + 2305e: 2101 movs r1, #1 + 23060: 4846 ldr r0, [pc, #280] ; (2317c ) + 23062: f009 fae5 bl 2c630 + if(port>127){ + 23066: 2f00 cmp r7, #0 + 23068: db7a blt.n 23160 BMC_PRINTLN( - 22f68: 4621 mov r1, r4 - 22f6a: 4668 mov r0, sp - 22f6c: f7e0 fbe4 bl 3738 - 22f70: 4669 mov r1, sp - 22f72: 484e ldr r0, [pc, #312] ; (230ac ) - 22f74: f006 ff4c bl 29e10 - 22f78: 4668 mov r0, sp - 22f7a: f007 f87d bl 2a078 - 22f7e: 2101 movs r1, #1 - 22f80: 484b ldr r0, [pc, #300] ; (230b0 ) - 22f82: f009 fae1 bl 2c548 - 22f86: 2108 movs r1, #8 - 22f88: 484a ldr r0, [pc, #296] ; (230b4 ) - 22f8a: f009 fadd bl 2c548 - 22f8e: 2101 movs r1, #1 - 22f90: 4847 ldr r0, [pc, #284] ; (230b0 ) - 22f92: f009 fad9 bl 2c548 - 22f96: 4629 mov r1, r5 - 22f98: 4668 mov r0, sp - 22f9a: f7e0 fc3d bl 3818 + 2306a: 4621 mov r1, r4 + 2306c: 4668 mov r0, sp + 2306e: f7e0 fb63 bl 3738 + 23072: 4669 mov r1, sp + 23074: 4840 ldr r0, [pc, #256] ; (23178 ) + 23076: f006 ff41 bl 29efc + 2307a: 4668 mov r0, sp + 2307c: f007 f870 bl 2a160 + 23080: 2101 movs r1, #1 + 23082: 483e ldr r0, [pc, #248] ; (2317c ) + 23084: f009 fad4 bl 2c630 + 23088: 2108 movs r1, #8 + 2308a: 483d ldr r0, [pc, #244] ; (23180 ) + 2308c: f009 fad0 bl 2c630 + 23090: 2101 movs r1, #1 + 23092: 483a ldr r0, [pc, #232] ; (2317c ) + 23094: f009 facc bl 2c630 + 23098: 4629 mov r1, r5 + 2309a: 4668 mov r0, sp + 2309c: f7e0 fbbc bl 3818 size_t println(const String &s) { return print(s) + println(); } - 22f9e: 4669 mov r1, sp - 22fa0: 4842 ldr r0, [pc, #264] ; (230ac ) - 22fa2: f006 ff35 bl 29e10 - 22fa6: 4841 ldr r0, [pc, #260] ; (230ac ) - 22fa8: f006 ff64 bl 29e74 - 22fac: 4668 mov r0, sp - 22fae: f007 f863 bl 2a078 -} - 22fb2: b005 add sp, #20 - 22fb4: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 230a0: 4669 mov r1, sp + 230a2: 4835 ldr r0, [pc, #212] ; (23178 ) + 230a4: f006 ff2a bl 29efc + 230a8: 4833 ldr r0, [pc, #204] ; (23178 ) + 230aa: f006 ff59 bl 29f60 + 230ae: 4668 mov r0, sp + 230b0: f007 f856 bl 2a160 +} + 230b4: b005 add sp, #20 + 230b6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 22fb8: f8d0 0108 ldr.w r0, [r0, #264] ; 0x108 - 22fbc: f001 020f and.w r2, r1, #15 - 22fc0: 6803 ldr r3, [r0, #0] - 22fc2: 4691 mov r9, r2 - 22fc4: eb03 0342 add.w r3, r3, r2, lsl #1 - 22fc8: 4602 mov r2, r0 - 22fca: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 + 230ba: f8d0 0108 ldr.w r0, [r0, #264] ; 0x108 + 230be: f001 020f and.w r2, r1, #15 + 230c2: 6803 ldr r3, [r0, #0] + 230c4: 4691 mov r9, r2 + 230c6: eb03 0342 add.w r3, r3, r2, lsl #1 + 230ca: 4602 mov r2, r0 + 230cc: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 if(isMidiUsbPort(port)){ - 22fce: 07cb lsls r3, r1, #31 - 22fd0: d50e bpl.n 22ff0 + 230d0: 07cb lsls r3, r1, #31 + 230d2: d5a3 bpl.n 2301c switch (type) { - 22fd2: f105 0308 add.w r3, r5, #8 - 22fd6: b2db uxtb r3, r3 - 22fd8: 2b07 cmp r3, #7 - 22fda: d837 bhi.n 2304c - 22fdc: 22dd movs r2, #221 ; 0xdd - 22fde: fa22 f303 lsr.w r3, r2, r3 - 22fe2: 07da lsls r2, r3, #31 - 22fe4: d532 bpl.n 2304c + 230d4: f105 0308 add.w r3, r5, #8 + 230d8: b2db uxtb r3, r3 + 230da: 2b07 cmp r3, #7 + 230dc: d898 bhi.n 23010 + 230de: 22dd movs r2, #221 ; 0xdd + 230e0: fa22 f303 lsr.w r3, r2, r3 + 230e4: 07da lsls r2, r3, #31 + 230e6: d593 bpl.n 23010 if (cable >= MIDI_NUM_CABLES) return; - 22fe6: f1b8 0f00 cmp.w r8, #0 - 22fea: f43f af71 beq.w 22ed0 - 22fee: e774 b.n 22eda - if(isMidiSerialAPort(port)){ - 22ff0: 078b lsls r3, r1, #30 - 22ff2: d409 bmi.n 23008 - if(isMidiSerialBPort(port)){ - 22ff4: 074b lsls r3, r1, #29 - 22ff6: d498 bmi.n 22f2a - 22ff8: e780 b.n 22efc - 22ffa: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - 22ffe: 4629 mov r1, r5 - 23000: 6803 ldr r3, [r0, #0] - 23002: 681b ldr r3, [r3, #0] - 23004: 4798 blx r3 - if(port>127){ - 23006: e776 b.n 22ef6 - 23008: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 - 2300c: 4629 mov r1, r5 - 2300e: 6803 ldr r3, [r0, #0] - 23010: 681b ldr r3, [r3, #0] - 23012: 4798 blx r3 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23014: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 - 23018: 6813 ldr r3, [r2, #0] - 2301a: eb03 0349 add.w r3, r3, r9, lsl #1 - 2301e: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 - 23022: 0748 lsls r0, r1, #29 - 23024: f57f af6a bpl.w 22efc - 23028: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - 2302c: 4629 mov r1, r5 - 2302e: 6803 ldr r3, [r0, #0] - 23030: 681b ldr r3, [r3, #0] - 23032: 4798 blx r3 - if(isMidiHostPort(port) && globals.hostConnected()){ - 23034: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 - 23038: 6813 ldr r3, [r2, #0] - 2303a: eb03 0349 add.w r3, r3, r9, lsl #1 - 2303e: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 - 23042: e75b b.n 22efc - 23044: f8d6 0108 ldr.w r0, [r6, #264] ; 0x108 - 23048: f004 090f and.w r9, r4, #15 - 2304c: 6803 ldr r3, [r0, #0] - 2304e: 4602 mov r2, r0 - 23050: eb03 0349 add.w r3, r3, r9, lsl #1 - 23054: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 - if(isMidiSerialAPort(port)){ - 23058: 078b lsls r3, r1, #30 - 2305a: d5cb bpl.n 22ff4 - 2305c: e7d4 b.n 23008 + 230e8: f1b8 0f00 cmp.w r8, #0 + 230ec: f43f af64 beq.w 22fb8 + 230f0: e767 b.n 22fc2 + type!=BMC_MIDI_RT_CLOCK && + 230f2: 2dfe cmp r5, #254 ; 0xfe + 230f4: f43f af79 beq.w 22fea + 230f8: f506 5380 add.w r3, r6, #4096 ; 0x1000 + 230fc: 4629 mov r1, r5 + 230fe: f8d3 0188 ldr.w r0, [r3, #392] ; 0x188 + 23102: 6803 ldr r3, [r0, #0] + 23104: 681b ldr r3, [r3, #0] + 23106: 4798 blx r3 + globals.setMidiOutActivity(); + 23108: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 + 2310c: e771 b.n 22ff2 switch (type) { - 2305e: f105 0308 add.w r3, r5, #8 - 23062: b2db uxtb r3, r3 - 23064: 2b07 cmp r3, #7 - 23066: f63f af53 bhi.w 22f10 - 2306a: 21dd movs r1, #221 ; 0xdd - 2306c: fa21 f303 lsr.w r3, r1, r3 - 23070: 07db lsls r3, r3, #31 - 23072: f57f af49 bpl.w 22f08 + 2310e: f105 0308 add.w r3, r5, #8 + 23112: b2db uxtb r3, r3 + 23114: 2b07 cmp r3, #7 + 23116: d889 bhi.n 2302c + 23118: 21dd movs r1, #221 ; 0xdd + 2311a: fa21 f303 lsr.w r3, r1, r3 + 2311e: 07d8 lsls r0, r3, #31 + 23120: d584 bpl.n 2302c write_packed((type << 8) | 0x0F | ((cable & 0x0F) << 4)); - 23076: ea4f 1108 mov.w r1, r8, lsl #4 - 2307a: f506 6036 add.w r0, r6, #2912 ; 0xb60 - 2307e: b2c9 uxtb r1, r1 - 23080: ea41 2105 orr.w r1, r1, r5, lsl #8 - 23084: f041 010f orr.w r1, r1, #15 - 23088: f005 fa94 bl 285b4 - globals.setMidiOutActivity(); - 2308c: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 - 23090: e73a b.n 22f08 - 23092: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 23096: f004 040f and.w r4, r4, #15 - 2309a: 681b ldr r3, [r3, #0] - 2309c: eb03 0344 add.w r3, r3, r4, lsl #1 - 230a0: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 - 230a4: e760 b.n 22f68 - 230a6: bf00 nop - 230a8: 2000bae8 .word 0x2000bae8 - 230ac: 20004ba8 .word 0x20004ba8 - 230b0: 200023ec .word 0x200023ec - 230b4: 20003788 .word 0x20003788 - -000230b8 : - 230b8: f890 c10c ldrb.w ip, [r0, #268] ; 0x10c + 23122: ea4f 1108 mov.w r1, r8, lsl #4 + 23126: f506 6026 add.w r0, r6, #2656 ; 0xa60 + 2312a: b2c9 uxtb r1, r1 + 2312c: ea41 2105 orr.w r1, r1, r5, lsl #8 + 23130: f041 010f orr.w r1, r1, #15 + 23134: f005 fab4 bl 286a0 + globals.bleConnected() && + 23138: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 + 2313c: e776 b.n 2302c + 2313e: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 + 23142: 4629 mov r1, r5 + 23144: 6803 ldr r3, [r0, #0] + 23146: 681b ldr r3, [r3, #0] + 23148: 4798 blx r3 + 2314a: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 + 2314e: 6813 ldr r3, [r2, #0] + 23150: eb03 0349 add.w r3, r3, r9, lsl #1 + 23154: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 + if(isMidiHostPort(port) && globals.hostConnected()){ + 23158: 0688 lsls r0, r1, #26 + 2315a: f57f af41 bpl.w 22fe0 + 2315e: e762 b.n 23026 + 23160: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 + 23164: f004 040f and.w r4, r4, #15 + 23168: 681b ldr r3, [r3, #0] + 2316a: eb03 0344 add.w r3, r3, r4, lsl #1 + 2316e: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 + 23172: e77a b.n 2306a + 23174: 2000bb08 .word 0x2000bb08 + 23178: 20004c68 .word 0x20004c68 + 2317c: 200023ec .word 0x200023ec + 23180: 20003848 .word 0x20003848 + +00023184 : + 23184: f890 c10c ldrb.w ip, [r0, #268] ; 0x10c if(flags.read(BMC_FLAG_MIDI_REAL_TIME_BLOCK_OUTPUT)){ - 230bc: f01c 0f04 tst.w ip, #4 - 230c0: d101 bne.n 230c6 - 230c2: f7ff beeb b.w 22e9c + 23188: f01c 0f04 tst.w ip, #4 + 2318c: d101 bne.n 23192 + 2318e: f7ff bef9 b.w 22f84 } - 230c6: 4770 bx lr + 23192: 4770 bx lr -000230c8 : +00023194 : uint8_t cable, bool midiOutActivityAllowed){ - 230c8: b470 push {r4, r5, r6} - 230ca: f89d 400c ldrb.w r4, [sp, #12] - 230ce: f89d 5010 ldrb.w r5, [sp, #16] - 230d2: f89d 6014 ldrb.w r6, [sp, #20] + 23194: b470 push {r4, r5, r6} + 23196: f89d 400c ldrb.w r4, [sp, #12] + 2319a: f89d 5010 ldrb.w r5, [sp, #16] + 2319e: f89d 6014 ldrb.w r6, [sp, #20] if(size==0){ - 230d6: b12b cbz r3, 230e4 - 230d8: 9403 str r4, [sp, #12] - 230da: e9cd 5604 strd r5, r6, [sp, #16] + 231a2: b12b cbz r3, 231b0 + 231a4: 9403 str r4, [sp, #12] + 231a6: e9cd 5604 strd r5, r6, [sp, #16] } - 230de: bc70 pop {r4, r5, r6} - 230e0: f7ff bd8c b.w 22bfc - 230e4: bc70 pop {r4, r5, r6} - 230e6: 4770 bx lr + 231aa: bc70 pop {r4, r5, r6} + 231ac: f7ff bd96 b.w 22cdc + 231b0: bc70 pop {r4, r5, r6} + 231b2: 4770 bx lr -000230e8 : +000231b4 : void BMCMidi::sendProgramChange(uint8_t port, uint8_t channel, uint8_t program, uint8_t cable){ - 230e8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 231b4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(port>127){ - 230ec: fa4f fa81 sxtb.w sl, r1 - 230f0: b087 sub sp, #28 - 230f2: 461f mov r7, r3 - 230f4: 460d mov r5, r1 - 230f6: f89d 3040 ldrb.w r3, [sp, #64] ; 0x40 - 230fa: f1ba 0f00 cmp.w sl, #0 - 230fe: 4606 mov r6, r0 - 23100: 4690 mov r8, r2 - 23102: 9300 str r3, [sp, #0] - 23104: f2c0 80b4 blt.w 23270 + 231b8: fa4f f981 sxtb.w r9, r1 + 231bc: b087 sub sp, #28 + 231be: 4690 mov r8, r2 + 231c0: 460d mov r5, r1 + 231c2: f1b9 0f00 cmp.w r9, #0 + 231c6: 4606 mov r6, r0 + 231c8: 461f mov r7, r3 + 231ca: f89d 2040 ldrb.w r2, [sp, #64] ; 0x40 + 231ce: f2c0 80d5 blt.w 2337c if(isMidiUsbPort(port)){ - 23108: 07ca lsls r2, r1, #31 - 2310a: d53a bpl.n 23182 - 2310c: 9b00 ldr r3, [sp, #0] - 2310e: 2b00 cmp r3, #0 - 23110: d137 bne.n 23182 + 231d2: 07cb lsls r3, r1, #31 + 231d4: d540 bpl.n 23258 + 231d6: 2a00 cmp r2, #0 + 231d8: d13e bne.n 23258 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23112: f108 39ff add.w r9, r8, #4294967295 ; 0xffffffff - 23116: 043a lsls r2, r7, #16 + 231da: f108 3bff add.w fp, r8, #4294967295 ; 0xffffffff + 231de: 0439 lsls r1, r7, #16 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23118: f24c 000c movw r0, #49164 ; 0xc00c + 231e0: f24c 000c movw r0, #49164 ; 0xc00c + 231e4: 9201 str r2, [sp, #4] | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2311c: ea4f 2309 mov.w r3, r9, lsl #8 - 23120: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 - 23124: f403 6370 and.w r3, r3, #3840 ; 0xf00 - 23128: 4313 orrs r3, r2 + 231e6: ea4f 230b mov.w r3, fp, lsl #8 + 231ea: f401 01fe and.w r1, r1, #8323072 ; 0x7f0000 + 231ee: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 231f2: 430b orrs r3, r1 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 2312a: 4318 orrs r0, r3 - 2312c: f008 fc70 bl 2ba10 + 231f4: 4318 orrs r0, r3 + 231f6: f008 fc7f bl 2baf8 + 231fa: 9a01 ldr r2, [sp, #4] uint8_t program, uint8_t cable){ - 23130: 462b mov r3, r5 + 231fc: 462b mov r3, r5 usbMIDI.sendProgramChange(program, channel, cable); } #ifdef BMC_MIDI_SERIAL_A_ENABLED if(isMidiSerialAPort(port)){ - 23132: 0798 lsls r0, r3, #30 - 23134: d428 bmi.n 23188 - 23136: f1ba 0f00 cmp.w sl, #0 + 231fe: 079c lsls r4, r3, #30 + 23200: d42d bmi.n 2325e + 23202: f1b9 0f00 cmp.w r9, #0 } void sendNoteOff(uint8_t note, uint8_t vel, uint8_t channel){ writeData(BMC_MIDI_NOTE_OFF | (channel-1), note, vel); } void sendProgramChange(uint8_t pc, uint8_t channel){ writeData(BMC_MIDI_PROGRAM_CHANGE | (channel-1), pc); - 2313a: fa5f f489 uxtb.w r4, r9 - 2313e: f007 0b7f and.w fp, r7, #127 ; 0x7f - 23142: db36 blt.n 231b2 - midiSerial.serialPortA.sendProgramChange(program, channel); - } - #endif - #ifdef BMC_MIDI_SERIAL_B_ENABLED - if(isMidiSerialBPort(port)){ - 23144: 076b lsls r3, r5, #29 - 23146: f100 80b7 bmi.w 232b8 + 23206: fa5f f48b uxtb.w r4, fp + 2320a: f007 0a7f and.w sl, r7, #127 ; 0x7f return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 2314a: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 - 2314e: 4629 mov r1, r5 + 2320e: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 + if(port>127){ + 23212: db3d blt.n 23290 if(isMidiSerialDPort(port)){ midiSerial.serialPortD.sendProgramChange(program, channel); } #endif #ifdef BMC_USB_HOST_ENABLED if(isMidiHostPort(port) && globals.hostConnected()){ - 23150: 068b lsls r3, r1, #26 - 23152: d503 bpl.n 2315c - 23154: 6dd1 ldr r1, [r2, #92] ; 0x5c - 23156: 0708 lsls r0, r1, #28 - 23158: f100 80d1 bmi.w 232fe + 23214: 06a9 lsls r1, r5, #26 + 23216: d505 bpl.n 23224 + 23218: 6dd9 ldr r1, [r3, #92] ; 0x5c + 2321a: 0708 lsls r0, r1, #28 + 2321c: d444 bmi.n 232a8 + 2321e: f1b9 0f00 cmp.w r9, #0 + 23222: db58 blt.n 232d6 + 23224: 4629 mov r1, r5 + midiHost.Port.sendProgramChange(program, channel, cable); + } + #endif + #ifdef BMC_MIDI_BLE_ENABLED + if(isMidiBlePort(port) && globals.bleConnected()){ + 23226: 0649 lsls r1, r1, #25 + 23228: d503 bpl.n 23232 + 2322a: 6dda ldr r2, [r3, #92] ; 0x5c + 2322c: 06d2 lsls r2, r2, #27 + 2322e: f100 80cd bmi.w 233cc channel[ch].program = (t_program & 0x7F); - 2315c: f004 040f and.w r4, r4, #15 - 23160: eb04 1484 add.w r4, r4, r4, lsl #6 - 23164: eb06 0444 add.w r4, r6, r4, lsl #1 - 23168: f884 b10d strb.w fp, [r4, #269] ; 0x10d + 23232: f004 0c0f and.w ip, r4, #15 + 23236: eb0c 1c8c add.w ip, ip, ip, lsl #6 + 2323a: eb06 0c4c add.w ip, r6, ip, lsl #1 + 2323e: f88c a10d strb.w sl, [ip, #269] ; 0x10d bitSet(flags, bit); - 2316c: 6dd3 ldr r3, [r2, #92] ; 0x5c - 2316e: f043 0322 orr.w r3, r3, #34 ; 0x22 - 23172: 65d3 str r3, [r2, #92] ; 0x5c + 23242: 6dda ldr r2, [r3, #92] ; 0x5c + 23244: f042 0222 orr.w r2, r2, #34 ; 0x22 + 23248: 65da str r2, [r3, #92] ; 0x5c return bitRead(flags, bit); - 23174: f8b2 3060 ldrh.w r3, [r2, #96] ; 0x60 + 2324a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 } #endif setLocalProgram(channel,program); globals.setMidiOutActivity(); #ifdef BMC_DEBUG if(globals.getMidiOutDebug()){ - 23178: 0699 lsls r1, r3, #26 - 2317a: d42d bmi.n 231d8 + 2324e: 0698 lsls r0, r3, #26 + 23250: d449 bmi.n 232e6 "channel:",channel, "program:",program ); } #endif } - 2317c: b007 add sp, #28 - 2317e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 23182: f108 39ff add.w r9, r8, #4294967295 ; 0xffffffff - 23186: e7d3 b.n 23130 + 23252: b007 add sp, #28 + 23254: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 23258: f108 3bff add.w fp, r8, #4294967295 ; 0xffffffff + 2325c: e7ce b.n 231fc Port.write(status); - 23188: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 + 2325e: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 writeData(BMC_MIDI_PROGRAM_CHANGE | (channel-1), pc); - 2318c: f069 013f orn r1, r9, #63 ; 0x3f - 23190: f007 0b7f and.w fp, r7, #127 ; 0x7f - 23194: fa5f f489 uxtb.w r4, r9 + 23262: f06b 013f orn r1, fp, #63 ; 0x3f + 23266: 9201 str r2, [sp, #4] + 23268: f007 0a7f and.w sl, r7, #127 ; 0x7f Port.write(status); - 23198: 6803 ldr r3, [r0, #0] - 2319a: b2c9 uxtb r1, r1 - 2319c: 681b ldr r3, [r3, #0] - 2319e: 4798 blx r3 + 2326c: 6803 ldr r3, [r0, #0] + 2326e: b2c9 uxtb r1, r1 + writeData(BMC_MIDI_PROGRAM_CHANGE | (channel-1), pc); + 23270: fa5f f48b uxtb.w r4, fp + Port.write(status); + 23274: 681b ldr r3, [r3, #0] + 23276: 4798 blx r3 Port.write(d1 & 0x7F); - 231a0: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 - 231a4: 4659 mov r1, fp - 231a6: 6802 ldr r2, [r0, #0] - 231a8: 6812 ldr r2, [r2, #0] - 231aa: 4790 blx r2 + 23278: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 + 2327c: 4651 mov r1, sl + 2327e: 6803 ldr r3, [r0, #0] + 23280: 681b ldr r3, [r3, #0] + 23282: 4798 blx r3 + 23284: f1b9 0f00 cmp.w r9, #0 + 23288: 9a01 ldr r2, [sp, #4] + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 2328a: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 + if(port>127){ + 2328e: dac1 bge.n 23214 + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 23290: f005 000f and.w r0, r5, #15 + 23294: 6819 ldr r1, [r3, #0] + 23296: eb01 0140 add.w r1, r1, r0, lsl #1 + 2329a: f891 1ef9 ldrb.w r1, [r1, #3833] ; 0xef9 + if(isMidiHostPort(port) && globals.hostConnected()){ + 2329e: 0688 lsls r0, r1, #26 + 232a0: d5c1 bpl.n 23226 + 232a2: 6dd9 ldr r1, [r3, #92] ; 0x5c + 232a4: 0708 lsls r0, r1, #28 + 232a6: d5ba bpl.n 2321e + | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) + 232a8: ea4f 230b mov.w r3, fp, lsl #8 + write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) + 232ac: f506 6026 add.w r0, r6, #2656 ; 0xa60 + | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) + 232b0: 0439 lsls r1, r7, #16 + write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) + 232b2: 0112 lsls r2, r2, #4 + | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) + 232b4: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 232b8: f401 01fe and.w r1, r1, #8323072 ; 0x7f0000 + write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) + 232bc: b2d2 uxtb r2, r2 + | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) + 232be: 430b orrs r3, r1 + write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) + 232c0: f24c 010c movw r1, #49164 ; 0xc00c + | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) + 232c4: 4313 orrs r3, r2 + write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) + 232c6: 4319 orrs r1, r3 + 232c8: f005 f9ea bl 286a0 if(port>127){ - 231ac: f1ba 0f00 cmp.w sl, #0 - 231b0: dac8 bge.n 23144 + 232cc: f1b9 0f00 cmp.w r9, #0 + if(isMidiBlePort(port) && globals.bleConnected()){ + 232d0: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 + 232d4: daa6 bge.n 23224 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 231b2: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 - 231b6: f005 000f and.w r0, r5, #15 - 231ba: 6811 ldr r1, [r2, #0] - 231bc: 4603 mov r3, r0 - 231be: eb01 0140 add.w r1, r1, r0, lsl #1 - return bitRead(port,BMC_MIDI_PORT_SERIAL_B_BIT); - 231c2: f891 1ef9 ldrb.w r1, [r1, #3833] ; 0xef9 - if(isMidiSerialBPort(port)){ - 231c6: 0749 lsls r1, r1, #29 - 231c8: f100 8087 bmi.w 232da - 231cc: 6811 ldr r1, [r2, #0] - 231ce: eb01 0143 add.w r1, r1, r3, lsl #1 - 231d2: f891 1ef9 ldrb.w r1, [r1, #3833] ; 0xef9 - 231d6: e7bb b.n 23150 - 231d8: 4b59 ldr r3, [pc, #356] ; (23340 ) + 232d6: f005 010f and.w r1, r5, #15 + 232da: 681a ldr r2, [r3, #0] + 232dc: eb02 0241 add.w r2, r2, r1, lsl #1 + 232e0: f892 1ef9 ldrb.w r1, [r2, #3833] ; 0xef9 + 232e4: e79f b.n 23226 + 232e6: 4b47 ldr r3, [pc, #284] ; (23404 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 231da: 220a movs r2, #10 - 231dc: 4859 ldr r0, [pc, #356] ; (23344 ) - 231de: 6819 ldr r1, [r3, #0] - 231e0: 2300 movs r3, #0 - 231e2: f006 fe63 bl 29eac - 231e6: 2101 movs r1, #1 - 231e8: 4857 ldr r0, [pc, #348] ; (23348 ) - 231ea: f009 f9ad bl 2c548 + 232e8: 220a movs r2, #10 + 232ea: 4847 ldr r0, [pc, #284] ; (23408 ) + 232ec: 6819 ldr r1, [r3, #0] + 232ee: 2300 movs r3, #0 + 232f0: f006 fe52 bl 29f98 + 232f4: 2101 movs r1, #1 + 232f6: 4845 ldr r0, [pc, #276] ; (2340c ) + 232f8: f009 f99a bl 2c630 if(port>127){ - 231ee: f1ba 0f00 cmp.w sl, #0 - 231f2: f2c0 809a blt.w 2332a + 232fc: f1b9 0f00 cmp.w r9, #0 + 23300: db76 blt.n 233f0 BMC_PRINTLN( - 231f6: 4629 mov r1, r5 - 231f8: a802 add r0, sp, #8 - 231fa: f7e0 fa9d bl 3738 - 231fe: a902 add r1, sp, #8 - 23200: 4850 ldr r0, [pc, #320] ; (23344 ) - 23202: f006 fe05 bl 29e10 - 23206: a802 add r0, sp, #8 - 23208: f006 ff36 bl 2a078 - 2320c: 2101 movs r1, #1 - 2320e: 484e ldr r0, [pc, #312] ; (23348 ) - 23210: f009 f99a bl 2c548 - 23214: 2117 movs r1, #23 - 23216: 484d ldr r0, [pc, #308] ; (2334c ) - 23218: f009 f996 bl 2c548 - 2321c: 2101 movs r1, #1 - 2321e: 484a ldr r0, [pc, #296] ; (23348 ) - 23220: f009 f992 bl 2c548 - 23224: 2108 movs r1, #8 - 23226: 484a ldr r0, [pc, #296] ; (23350 ) - 23228: f009 f98e bl 2c548 - 2322c: 2101 movs r1, #1 - 2322e: 4846 ldr r0, [pc, #280] ; (23348 ) - 23230: f009 f98a bl 2c548 + 23302: 4629 mov r1, r5 + 23304: a802 add r0, sp, #8 + 23306: f7e0 fa17 bl 3738 + 2330a: a902 add r1, sp, #8 + 2330c: 483e ldr r0, [pc, #248] ; (23408 ) + 2330e: f006 fdf5 bl 29efc + 23312: a802 add r0, sp, #8 + 23314: f006 ff24 bl 2a160 + 23318: 2101 movs r1, #1 + 2331a: 483c ldr r0, [pc, #240] ; (2340c ) + 2331c: f009 f988 bl 2c630 + 23320: 2117 movs r1, #23 + 23322: 483b ldr r0, [pc, #236] ; (23410 ) + 23324: f009 f984 bl 2c630 + 23328: 2101 movs r1, #1 + 2332a: 4838 ldr r0, [pc, #224] ; (2340c ) + 2332c: f009 f980 bl 2c630 + 23330: 2108 movs r1, #8 + 23332: 4838 ldr r0, [pc, #224] ; (23414 ) + 23334: f009 f97c bl 2c630 + 23338: 2101 movs r1, #1 + 2333a: 4834 ldr r0, [pc, #208] ; (2340c ) + 2333c: f009 f978 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 23234: 2300 movs r3, #0 - 23236: 220a movs r2, #10 - 23238: 4641 mov r1, r8 - 2323a: 4842 ldr r0, [pc, #264] ; (23344 ) - 2323c: f006 fe36 bl 29eac - 23240: 2101 movs r1, #1 - 23242: 4841 ldr r0, [pc, #260] ; (23348 ) - 23244: f009 f980 bl 2c548 - 23248: 2108 movs r1, #8 - 2324a: 4842 ldr r0, [pc, #264] ; (23354 ) - 2324c: f009 f97c bl 2c548 - 23250: 2101 movs r1, #1 - 23252: 483d ldr r0, [pc, #244] ; (23348 ) - 23254: f009 f978 bl 2c548 - 23258: 2300 movs r3, #0 - 2325a: 220a movs r2, #10 - 2325c: 4639 mov r1, r7 - 2325e: 4839 ldr r0, [pc, #228] ; (23344 ) - 23260: f006 fe24 bl 29eac + 23340: 2300 movs r3, #0 + 23342: 220a movs r2, #10 + 23344: 4641 mov r1, r8 + 23346: 4830 ldr r0, [pc, #192] ; (23408 ) + 23348: f006 fe26 bl 29f98 + 2334c: 2101 movs r1, #1 + 2334e: 482f ldr r0, [pc, #188] ; (2340c ) + 23350: f009 f96e bl 2c630 + 23354: 2108 movs r1, #8 + 23356: 4830 ldr r0, [pc, #192] ; (23418 ) + 23358: f009 f96a bl 2c630 + 2335c: 2101 movs r1, #1 + 2335e: 482b ldr r0, [pc, #172] ; (2340c ) + 23360: f009 f966 bl 2c630 + 23364: 2300 movs r3, #0 + 23366: 220a movs r2, #10 + 23368: 4639 mov r1, r7 + 2336a: 4827 ldr r0, [pc, #156] ; (23408 ) + 2336c: f006 fe14 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 23264: 4837 ldr r0, [pc, #220] ; (23344 ) + 23370: 4825 ldr r0, [pc, #148] ; (23408 ) } - 23266: b007 add sp, #28 - 23268: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 2326c: f006 be02 b.w 29e74 + 23372: b007 add sp, #28 + 23374: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 23378: f006 bdf2 b.w 29f60 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23270: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 - 23274: 681a ldr r2, [r3, #0] - 23276: f001 030f and.w r3, r1, #15 - 2327a: f503 63ef add.w r3, r3, #1912 ; 0x778 - 2327e: eb02 0243 add.w r2, r2, r3, lsl #1 - 23282: 005c lsls r4, r3, #1 - 23284: 7a53 ldrb r3, [r2, #9] + 2337c: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 + 23380: 6819 ldr r1, [r3, #0] + 23382: f005 030f and.w r3, r5, #15 + 23386: f503 63ef add.w r3, r3, #1912 ; 0x778 + 2338a: eb01 0143 add.w r1, r1, r3, lsl #1 + 2338e: 005c lsls r4, r3, #1 + 23390: 7a4b ldrb r3, [r1, #9] if(isMidiUsbPort(port)){ - 23286: 07da lsls r2, r3, #31 - 23288: d524 bpl.n 232d4 + 23392: 07d9 lsls r1, r3, #31 + 23394: d517 bpl.n 233c6 if (cable >= MIDI_NUM_CABLES) return; - 2328a: 9a00 ldr r2, [sp, #0] - 2328c: bb12 cbnz r2, 232d4 + 23396: b9b2 cbnz r2, 233c6 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2328e: f108 39ff add.w r9, r8, #4294967295 ; 0xffffffff - 23292: 043a lsls r2, r7, #16 + 23398: f108 3bff add.w fp, r8, #4294967295 ; 0xffffffff + 2339c: 0439 lsls r1, r7, #16 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23294: f24c 000c movw r0, #49164 ; 0xc00c + 2339e: f24c 000c movw r0, #49164 ; 0xc00c + 233a2: 9201 str r2, [sp, #4] | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23298: ea4f 2309 mov.w r3, r9, lsl #8 - 2329c: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 - 232a0: f403 6370 and.w r3, r3, #3840 ; 0xf00 - 232a4: 4313 orrs r3, r2 + 233a4: ea4f 230b mov.w r3, fp, lsl #8 + 233a8: f401 01fe and.w r1, r1, #8323072 ; 0x7f0000 + 233ac: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 233b0: 430b orrs r3, r1 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 232a6: 4318 orrs r0, r3 - 232a8: f008 fbb2 bl 2ba10 - 232ac: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 232b0: 681b ldr r3, [r3, #0] - 232b2: 4423 add r3, r4 - 232b4: 7a5b ldrb r3, [r3, #9] - 232b6: e73c b.n 23132 - Port.write(status); - 232b8: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - 232bc: f044 01c0 orr.w r1, r4, #192 ; 0xc0 - 232c0: 6802 ldr r2, [r0, #0] - 232c2: 6812 ldr r2, [r2, #0] - 232c4: 4790 blx r2 - Port.write(d1 & 0x7F); - 232c6: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - 232ca: 4659 mov r1, fp - 232cc: 6802 ldr r2, [r0, #0] - 232ce: 6812 ldr r2, [r2, #0] - 232d0: 4790 blx r2 - if(port>127){ - 232d2: e73a b.n 2314a - 232d4: f108 39ff add.w r9, r8, #4294967295 ; 0xffffffff - 232d8: e72b b.n 23132 - void writeData(uint8_t status, uint8_t d1){ - 232da: 9001 str r0, [sp, #4] + 233b2: 4318 orrs r0, r3 + 233b4: f008 fba0 bl 2baf8 + 233b8: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 + 233bc: 9a01 ldr r2, [sp, #4] + 233be: 681b ldr r3, [r3, #0] + 233c0: 4423 add r3, r4 + 233c2: 7a5b ldrb r3, [r3, #9] + 233c4: e71b b.n 231fe + 233c6: f108 3bff add.w fp, r8, #4294967295 ; 0xffffffff + 233ca: e718 b.n 231fe Port.write(status); - 232dc: f044 01c0 orr.w r1, r4, #192 ; 0xc0 - 232e0: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - 232e4: 6802 ldr r2, [r0, #0] - 232e6: 6812 ldr r2, [r2, #0] - 232e8: 4790 blx r2 + 233cc: f506 5b80 add.w fp, r6, #4096 ; 0x1000 + 233d0: f044 01c0 orr.w r1, r4, #192 ; 0xc0 + 233d4: f8db 0188 ldr.w r0, [fp, #392] ; 0x188 + 233d8: 6803 ldr r3, [r0, #0] + 233da: 681b ldr r3, [r3, #0] + 233dc: 4798 blx r3 Port.write(d1 & 0x7F); - 232ea: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - 232ee: 4659 mov r1, fp - 232f0: 6802 ldr r2, [r0, #0] - 232f2: 6812 ldr r2, [r2, #0] - 232f4: 4790 blx r2 - 232f6: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 - 232fa: 9b01 ldr r3, [sp, #4] - 232fc: e766 b.n 231cc - write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 232fe: 9b00 ldr r3, [sp, #0] - | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23300: ea4f 2209 mov.w r2, r9, lsl #8 - 23304: 0439 lsls r1, r7, #16 - write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23306: f506 6036 add.w r0, r6, #2912 ; 0xb60 - 2330a: 011b lsls r3, r3, #4 - | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2330c: f402 6270 and.w r2, r2, #3840 ; 0xf00 - 23310: f401 01fe and.w r1, r1, #8323072 ; 0x7f0000 - write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23314: b2db uxtb r3, r3 - | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23316: 430a orrs r2, r1 - write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23318: f24c 010c movw r1, #49164 ; 0xc00c - | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2331c: 431a orrs r2, r3 - write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 2331e: 4311 orrs r1, r2 - 23320: f005 f948 bl 285b4 + 233de: f8db 0188 ldr.w r0, [fp, #392] ; 0x188 + 233e2: 4651 mov r1, sl + 233e4: 6803 ldr r3, [r0, #0] + 233e6: 681b ldr r3, [r3, #0] + 233e8: 4798 blx r3 globals.setMidiLocalUpdate(true); - 23324: f8d6 2108 ldr.w r2, [r6, #264] ; 0x108 - 23328: e718 b.n 2315c + 233ea: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 + } + 233ee: e720 b.n 23232 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 2332a: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 2332e: f005 050f and.w r5, r5, #15 - 23332: 681b ldr r3, [r3, #0] - 23334: eb03 0345 add.w r3, r3, r5, lsl #1 - 23338: f893 5ef9 ldrb.w r5, [r3, #3833] ; 0xef9 - 2333c: e75b b.n 231f6 - 2333e: bf00 nop - 23340: 2000bae8 .word 0x2000bae8 - 23344: 20004ba8 .word 0x20004ba8 - 23348: 200023ec .word 0x200023ec - 2334c: 20003838 .word 0x20003838 - 23350: 20001ce0 .word 0x20001ce0 - 23354: 20003850 .word 0x20003850 - -00023358 : + 233f0: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 + 233f4: f005 050f and.w r5, r5, #15 + 233f8: 681b ldr r3, [r3, #0] + 233fa: eb03 0345 add.w r3, r3, r5, lsl #1 + 233fe: f893 5ef9 ldrb.w r5, [r3, #3833] ; 0xef9 + 23402: e77e b.n 23302 + 23404: 2000bb08 .word 0x2000bb08 + 23408: 20004c68 .word 0x20004c68 + 2340c: 200023ec .word 0x200023ec + 23410: 200038f8 .word 0x200038f8 + 23414: 20001ce0 .word 0x20001ce0 + 23418: 20003910 .word 0x20003910 + +0002341c : uint8_t ch = ((t_channel-1) & 0x0F); - 23358: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff + 2341c: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff return (ch= max)){ - 2337c: 45e6 cmp lr, ip - 2337e: d209 bcs.n 23394 + 23440: 45e6 cmp lr, ip + 23442: d209 bcs.n 23458 if((max > highest) || (max <= min)){ - 23380: f01c 0f80 tst.w ip, #128 ; 0x80 - 23384: d10d bne.n 233a2 + 23444: f01c 0f80 tst.w ip, #128 ; 0x80 + 23448: d10d bne.n 23466 if(direction==BMC_SCROLL_UP){ - 23386: b183 cbz r3, 233aa + 2344a: b183 cbz r3, 2346e long newValue = (value+amount); - 23388: 3401 adds r4, #1 + 2344c: 3401 adds r4, #1 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - 2338a: b305 cbz r5, 233ce + 2344e: b305 cbz r5, 23492 return (newValue > max || newValue < min) ? min : newValue; - 2338c: 4564 cmp r4, ip - 2338e: dd20 ble.n 233d2 - 23390: 4674 mov r4, lr - 23392: e010 b.n 233b6 + 23450: 4564 cmp r4, ip + 23452: dd20 ble.n 23496 + 23454: 4674 mov r4, lr + 23456: e010 b.n 2347a if((max > highest) || (max <= min)){ - 23394: fa4f fe8c sxtb.w lr, ip - 23398: f1be 0f00 cmp.w lr, #0 + 23458: fa4f fe8c sxtb.w lr, ip + 2345c: f1be 0f00 cmp.w lr, #0 min = lowest; - 2339c: f04f 0e00 mov.w lr, #0 + 23460: f04f 0e00 mov.w lr, #0 if((max > highest) || (max <= min)){ - 233a0: dcf1 bgt.n 23386 + 23464: dcf1 bgt.n 2344a max = highest; - 233a2: f04f 0c7f mov.w ip, #127 ; 0x7f + 23466: f04f 0c7f mov.w ip, #127 ; 0x7f if(direction==BMC_SCROLL_UP){ - 233a6: 2b00 cmp r3, #0 - 233a8: d1ee bne.n 23388 + 2346a: 2b00 cmp r3, #0 + 2346c: d1ee bne.n 2344c long newValue = (value-amount); - 233aa: 3c01 subs r4, #1 + 2346e: 3c01 subs r4, #1 value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - 233ac: b95d cbnz r5, 233c6 + 23470: b95d cbnz r5, 2348a return (newValue < min) ? min : newValue; - 233ae: 4574 cmp r4, lr - 233b0: bfb8 it lt - 233b2: 4674 movlt r4, lr - 233b4: b2e4 uxtb r4, r4 + 23472: 4574 cmp r4, lr + 23474: bfb8 it lt + 23476: 4674 movlt r4, lr + 23478: b2e4 uxtb r4, r4 return 0; } BMCScroller s(0, 127); uint8_t program = getLocalProgram(channel); program = s.scroll(1, direction, endless, program, min, max); sendProgramChange(ports, channel, program); - 233b6: 2300 movs r3, #0 - 233b8: 9300 str r3, [sp, #0] - 233ba: 4623 mov r3, r4 - 233bc: f7ff fe94 bl 230e8 + 2347a: 2300 movs r3, #0 + 2347c: 9300 str r3, [sp, #0] + 2347e: 4623 mov r3, r4 + 23480: f7ff fe98 bl 231b4 return program; } - 233c0: 4620 mov r0, r4 - 233c2: b003 add sp, #12 - 233c4: bd30 pop {r4, r5, pc} + 23484: 4620 mov r0, r4 + 23486: b003 add sp, #12 + 23488: bd30 pop {r4, r5, pc} return (newValue < min) ? max : newValue; - 233c6: 4574 cmp r4, lr - 233c8: daf4 bge.n 233b4 - 233ca: 4664 mov r4, ip - 233cc: e7f3 b.n 233b6 + 2348a: 4574 cmp r4, lr + 2348c: daf4 bge.n 23478 + 2348e: 4664 mov r4, ip + 23490: e7f3 b.n 2347a if(newValue>max){ - 233ce: 4564 cmp r4, ip - 233d0: dcfb bgt.n 233ca + 23492: 4564 cmp r4, ip + 23494: dcfb bgt.n 2348e } else if(newValue - 233d6: 4674 mov r4, lr - 233d8: e7ed b.n 233b6 - 233da: bf00 nop + 23496: 4574 cmp r4, lr + 23498: daee bge.n 23478 + 2349a: 4674 mov r4, lr + 2349c: e7ed b.n 2347a + 2349e: bf00 nop -000233dc : +000234a0 : uint8_t cable, bool localLog){ - 233dc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 233e0: b087 sub sp, #28 - 233e2: 461f mov r7, r3 - 233e4: 4605 mov r5, r0 - 233e6: 460c mov r4, r1 + 234a0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 234a4: b087 sub sp, #28 + 234a6: 461f mov r7, r3 + 234a8: 4605 mov r5, r0 + 234aa: 460c mov r4, r1 if(value>127){ - 233e8: f99d 3040 ldrsb.w r3, [sp, #64] ; 0x40 + 234ac: f99d 3040 ldrsb.w r3, [sp, #64] ; 0x40 uint8_t cable, bool localLog){ - 233ec: 4616 mov r6, r2 - 233ee: f89d 9040 ldrb.w r9, [sp, #64] ; 0x40 + 234b0: 4616 mov r6, r2 + 234b2: f89d 9040 ldrb.w r9, [sp, #64] ; 0x40 if(value>127){ - 233f2: 2b00 cmp r3, #0 + 234b6: 2b00 cmp r3, #0 uint8_t cable, bool localLog){ - 233f4: f89d a044 ldrb.w sl, [sp, #68] ; 0x44 - 233f8: f89d b048 ldrb.w fp, [sp, #72] ; 0x48 + 234b8: f89d a044 ldrb.w sl, [sp, #68] ; 0x44 + 234bc: f89d b048 ldrb.w fp, [sp, #72] ; 0x48 if(value>127){ - 233fc: da11 bge.n 23422 + 234c0: da11 bge.n 234e6 uint8_t ch = ((t_channel-1) & 0x0F); - 233fe: 1e53 subs r3, r2, #1 + 234c2: 1e53 subs r3, r2, #1 return (ch0){ - 23412: f893 310f ldrb.w r3, [r3, #271] ; 0x10f + 234d6: f893 310f ldrb.w r3, [r3, #271] ; 0x10f value = 127; - 23416: 2b00 cmp r3, #0 - 23418: bf14 ite ne - 2341a: f04f 0900 movne.w r9, #0 - 2341e: f04f 097f moveq.w r9, #127 ; 0x7f + 234da: 2b00 cmp r3, #0 + 234dc: bf14 ite ne + 234de: f04f 0900 movne.w r9, #0 + 234e2: f04f 097f moveq.w r9, #127 ; 0x7f if(port>127){ - 23422: fa4f f884 sxtb.w r8, r4 - 23426: f1b8 0f00 cmp.w r8, #0 - 2342a: f2c0 80f2 blt.w 23612 + 234e6: fa4f f884 sxtb.w r8, r4 + 234ea: f1b8 0f00 cmp.w r8, #0 + 234ee: f2c0 80d3 blt.w 23698 if(isMidiUsbPort(port)){ - 2342e: 07e3 lsls r3, r4, #31 - 23430: d436 bmi.n 234a0 + 234f2: 07e3 lsls r3, r4, #31 + 234f4: d448 bmi.n 23588 value = 0; - 23432: 4623 mov r3, r4 + 234f6: 4623 mov r3, r4 if(isMidiSerialAPort(port)){ - 23434: 079a lsls r2, r3, #30 - 23436: f100 80c8 bmi.w 235ca - 2343a: f1b8 0f00 cmp.w r8, #0 - 2343e: f2c0 80de blt.w 235fe - 23442: 4623 mov r3, r4 - if(isMidiSerialBPort(port)){ - 23444: 075b lsls r3, r3, #29 - 23446: f100 809c bmi.w 23582 - 2344a: f1b8 0f00 cmp.w r8, #0 + 234f8: 0799 lsls r1, r3, #30 + 234fa: f100 80b6 bmi.w 2366a + 234fe: f1b8 0f00 cmp.w r8, #0 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 2344e: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 23502: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 if(port>127){ - 23452: f2c0 80b2 blt.w 235ba - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23456: 4622 mov r2, r4 + 23506: db16 blt.n 23536 if(isMidiHostPort(port) && globals.hostConnected()){ - 23458: 0690 lsls r0, r2, #26 - 2345a: d503 bpl.n 23464 - 2345c: 6dda ldr r2, [r3, #92] ; 0x5c - 2345e: 0711 lsls r1, r2, #28 - 23460: f100 8100 bmi.w 23664 + 23508: 06a2 lsls r2, r4, #26 + 2350a: d41d bmi.n 23548 + 2350c: 4623 mov r3, r4 + if(isMidiBlePort(port) && globals.bleConnected()){ + 2350e: 065a lsls r2, r3, #25 + 23510: d503 bpl.n 2351a + 23512: 6dc3 ldr r3, [r0, #92] ; 0x5c + 23514: 06db lsls r3, r3, #27 + 23516: f100 8104 bmi.w 23722 if(localLog){ - 23464: f1bb 0f00 cmp.w fp, #0 - 23468: d10a bne.n 23480 + 2351a: f1bb 0f00 cmp.w fp, #0 + 2351e: d122 bne.n 23566 bitSet(flags, bit); - 2346a: 6dda ldr r2, [r3, #92] ; 0x5c - 2346c: f042 0202 orr.w r2, r2, #2 - 23470: 65da str r2, [r3, #92] ; 0x5c + 23520: 6dc3 ldr r3, [r0, #92] ; 0x5c + 23522: f043 0302 orr.w r3, r3, #2 + 23526: 65c3 str r3, [r0, #92] ; 0x5c return bitRead(flags, bit); - 23472: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 23528: f8b0 3060 ldrh.w r3, [r0, #96] ; 0x60 if(globals.getMidiOutDebug()){ - 23476: 069a lsls r2, r3, #26 - 23478: d425 bmi.n 234c6 + 2352c: 0699 lsls r1, r3, #26 + 2352e: d43e bmi.n 235ae } - 2347a: b007 add sp, #28 - 2347c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 23530: b007 add sp, #28 + 23532: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 23536: f004 020f and.w r2, r4, #15 + 2353a: 6803 ldr r3, [r0, #0] + 2353c: eb03 0342 add.w r3, r3, r2, lsl #1 + 23540: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 + if(isMidiHostPort(port) && globals.hostConnected()){ + 23544: 069a lsls r2, r3, #26 + 23546: d5e2 bpl.n 2350e + 23548: 6dc3 ldr r3, [r0, #92] ; 0x5c + 2354a: 0719 lsls r1, r3, #28 + 2354c: f100 80cd bmi.w 236ea + if(port>127){ + 23550: f1b8 0f00 cmp.w r8, #0 + 23554: dada bge.n 2350c + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 23556: 6803 ldr r3, [r0, #0] + 23558: f004 020f and.w r2, r4, #15 + 2355c: eb03 0342 add.w r3, r3, r2, lsl #1 + 23560: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 + 23564: e7d3 b.n 2350e uint8_t ch = ((t_channel-1) & 0x0F); - 23480: 1e70 subs r0, r6, #1 + 23566: f106 3cff add.w ip, r6, #4294967295 ; 0xffffffff channel[ch].control[cc] = (t_value & 0x7F); - 23482: f007 027f and.w r2, r7, #127 ; 0x7f - 23486: f000 000f and.w r0, r0, #15 - 2348a: eb00 1080 add.w r0, r0, r0, lsl #6 - 2348e: eb05 0040 add.w r0, r5, r0, lsl #1 - 23492: 4410 add r0, r2 - 23494: f880 910f strb.w r9, [r0, #271] ; 0x10f + 2356a: f007 037f and.w r3, r7, #127 ; 0x7f + 2356e: f00c 0c0f and.w ip, ip, #15 + 23572: eb0c 1c8c add.w ip, ip, ip, lsl #6 + 23576: eb05 0c4c add.w ip, r5, ip, lsl #1 + 2357a: 449c add ip, r3 + 2357c: f88c 910f strb.w r9, [ip, #271] ; 0x10f bitWrite(flags, bit, value); - 23498: 6dda ldr r2, [r3, #92] ; 0x5c - 2349a: f042 0220 orr.w r2, r2, #32 + 23580: 6dc3 ldr r3, [r0, #92] ; 0x5c + 23582: f043 0320 orr.w r3, r3, #32 } - 2349e: e7e5 b.n 2346c + 23586: e7cc b.n 23522 if (cable >= MIDI_NUM_CABLES) return; - 234a0: f1ba 0f00 cmp.w sl, #0 - 234a4: d1c5 bne.n 23432 + 23588: f1ba 0f00 cmp.w sl, #0 + 2358c: d1b3 bne.n 234f6 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 234a6: 043b lsls r3, r7, #16 - 234a8: 1e72 subs r2, r6, #1 + 2358e: 043b lsls r3, r7, #16 + 23590: 1e72 subs r2, r6, #1 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 234aa: f24b 000b movw r0, #45067 ; 0xb00b + 23592: f24b 000b movw r0, #45067 ; 0xb00b | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 234ae: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 - 234b2: 0212 lsls r2, r2, #8 + 23596: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 + 2359a: 0212 lsls r2, r2, #8 | ((data2 & 0x7F) << 24)); - 234b4: ea43 6309 orr.w r3, r3, r9, lsl #24 + 2359c: ea43 6309 orr.w r3, r3, r9, lsl #24 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 234b8: f402 6270 and.w r2, r2, #3840 ; 0xf00 + 235a0: f402 6270 and.w r2, r2, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 234bc: 4313 orrs r3, r2 + 235a4: 4313 orrs r3, r2 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 234be: 4318 orrs r0, r3 - 234c0: f008 faa6 bl 2ba10 + 235a6: 4318 orrs r0, r3 + 235a8: f008 faa6 bl 2baf8 if(port>127){ - 234c4: e7b5 b.n 23432 - 234c6: 4b78 ldr r3, [pc, #480] ; (236a8 ) + 235ac: e7a3 b.n 234f6 + 235ae: 4b6f ldr r3, [pc, #444] ; (2376c ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 234c8: 220a movs r2, #10 - 234ca: 4878 ldr r0, [pc, #480] ; (236ac ) - 234cc: 6819 ldr r1, [r3, #0] - 234ce: 2300 movs r3, #0 - 234d0: f006 fcec bl 29eac - 234d4: 2101 movs r1, #1 - 234d6: 4876 ldr r0, [pc, #472] ; (236b0 ) - 234d8: f009 f836 bl 2c548 - 234dc: f1b8 0f00 cmp.w r8, #0 - 234e0: f2c0 80d8 blt.w 23694 + 235b0: 220a movs r2, #10 + 235b2: 486f ldr r0, [pc, #444] ; (23770 ) + 235b4: 6819 ldr r1, [r3, #0] + 235b6: 2300 movs r3, #0 + 235b8: f006 fcee bl 29f98 + 235bc: 2101 movs r1, #1 + 235be: 486d ldr r0, [pc, #436] ; (23774 ) + 235c0: f009 f836 bl 2c630 + 235c4: f1b8 0f00 cmp.w r8, #0 + 235c8: f2c0 80c6 blt.w 23758 BMC_PRINTLN( - 234e4: 4621 mov r1, r4 - 234e6: a802 add r0, sp, #8 - 234e8: f7e0 f926 bl 3738 - 234ec: a902 add r1, sp, #8 - 234ee: 486f ldr r0, [pc, #444] ; (236ac ) - 234f0: f006 fc8e bl 29e10 - 234f4: a802 add r0, sp, #8 - 234f6: f006 fdbf bl 2a078 - 234fa: 2101 movs r1, #1 - 234fc: 486c ldr r0, [pc, #432] ; (236b0 ) - 234fe: f009 f823 bl 2c548 - 23502: 2117 movs r1, #23 - 23504: 486b ldr r0, [pc, #428] ; (236b4 ) - 23506: f009 f81f bl 2c548 - 2350a: 2101 movs r1, #1 - 2350c: 4868 ldr r0, [pc, #416] ; (236b0 ) - 2350e: f009 f81b bl 2c548 - 23512: 2108 movs r1, #8 - 23514: 4868 ldr r0, [pc, #416] ; (236b8 ) - 23516: f009 f817 bl 2c548 - 2351a: 2101 movs r1, #1 - 2351c: 4864 ldr r0, [pc, #400] ; (236b0 ) - 2351e: f009 f813 bl 2c548 + 235cc: 4621 mov r1, r4 + 235ce: a802 add r0, sp, #8 + 235d0: f7e0 f8b2 bl 3738 + 235d4: a902 add r1, sp, #8 + 235d6: 4866 ldr r0, [pc, #408] ; (23770 ) + 235d8: f006 fc90 bl 29efc + 235dc: a802 add r0, sp, #8 + 235de: f006 fdbf bl 2a160 + 235e2: 2101 movs r1, #1 + 235e4: 4863 ldr r0, [pc, #396] ; (23774 ) + 235e6: f009 f823 bl 2c630 + 235ea: 2117 movs r1, #23 + 235ec: 4862 ldr r0, [pc, #392] ; (23778 ) + 235ee: f009 f81f bl 2c630 + 235f2: 2101 movs r1, #1 + 235f4: 485f ldr r0, [pc, #380] ; (23774 ) + 235f6: f009 f81b bl 2c630 + 235fa: 2108 movs r1, #8 + 235fc: 485f ldr r0, [pc, #380] ; (2377c ) + 235fe: f009 f817 bl 2c630 + 23602: 2101 movs r1, #1 + 23604: 485b ldr r0, [pc, #364] ; (23774 ) + 23606: f009 f813 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 23522: 2300 movs r3, #0 - 23524: 220a movs r2, #10 - 23526: 4631 mov r1, r6 - 23528: 4860 ldr r0, [pc, #384] ; (236ac ) - 2352a: f006 fcbf bl 29eac - 2352e: 2101 movs r1, #1 - 23530: 485f ldr r0, [pc, #380] ; (236b0 ) - 23532: f009 f809 bl 2c548 - 23536: 2108 movs r1, #8 - 23538: 4860 ldr r0, [pc, #384] ; (236bc ) - 2353a: f009 f805 bl 2c548 - 2353e: 2101 movs r1, #1 - 23540: 485b ldr r0, [pc, #364] ; (236b0 ) - 23542: f009 f801 bl 2c548 - 23546: 2300 movs r3, #0 - 23548: 220a movs r2, #10 - 2354a: 4639 mov r1, r7 - 2354c: 4857 ldr r0, [pc, #348] ; (236ac ) - 2354e: f006 fcad bl 29eac - 23552: 2101 movs r1, #1 - 23554: 4856 ldr r0, [pc, #344] ; (236b0 ) - 23556: f008 fff7 bl 2c548 - 2355a: 2106 movs r1, #6 - 2355c: 4858 ldr r0, [pc, #352] ; (236c0 ) - 2355e: f008 fff3 bl 2c548 - 23562: 2101 movs r1, #1 - 23564: 4852 ldr r0, [pc, #328] ; (236b0 ) - 23566: f008 ffef bl 2c548 - 2356a: 2300 movs r3, #0 - 2356c: 220a movs r2, #10 - 2356e: 4649 mov r1, r9 - 23570: 484e ldr r0, [pc, #312] ; (236ac ) - 23572: f006 fc9b bl 29eac + 2360a: 2300 movs r3, #0 + 2360c: 220a movs r2, #10 + 2360e: 4631 mov r1, r6 + 23610: 4857 ldr r0, [pc, #348] ; (23770 ) + 23612: f006 fcc1 bl 29f98 + 23616: 2101 movs r1, #1 + 23618: 4856 ldr r0, [pc, #344] ; (23774 ) + 2361a: f009 f809 bl 2c630 + 2361e: 2108 movs r1, #8 + 23620: 4857 ldr r0, [pc, #348] ; (23780 ) + 23622: f009 f805 bl 2c630 + 23626: 2101 movs r1, #1 + 23628: 4852 ldr r0, [pc, #328] ; (23774 ) + 2362a: f009 f801 bl 2c630 + 2362e: 2300 movs r3, #0 + 23630: 220a movs r2, #10 + 23632: 4639 mov r1, r7 + 23634: 484e ldr r0, [pc, #312] ; (23770 ) + 23636: f006 fcaf bl 29f98 + 2363a: 2101 movs r1, #1 + 2363c: 484d ldr r0, [pc, #308] ; (23774 ) + 2363e: f008 fff7 bl 2c630 + 23642: 2106 movs r1, #6 + 23644: 484f ldr r0, [pc, #316] ; (23784 ) + 23646: f008 fff3 bl 2c630 + 2364a: 2101 movs r1, #1 + 2364c: 4849 ldr r0, [pc, #292] ; (23774 ) + 2364e: f008 ffef bl 2c630 + 23652: 2300 movs r3, #0 + 23654: 220a movs r2, #10 + 23656: 4649 mov r1, r9 + 23658: 4845 ldr r0, [pc, #276] ; (23770 ) + 2365a: f006 fc9d bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 23576: 484d ldr r0, [pc, #308] ; (236ac ) + 2365e: 4844 ldr r0, [pc, #272] ; (23770 ) } - 23578: b007 add sp, #28 - 2357a: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 2357e: f006 bc79 b.w 29e74 + 23660: b007 add sp, #28 + 23662: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 23666: f006 bc7b b.w 29f60 Port.write(status); - 23582: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 + 2366a: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 } void sendControlChange(uint8_t cc, uint8_t val, uint8_t channel){ writeData(BMC_MIDI_CONTROL_CHANGE | (channel-1), cc, val); - 23586: 1e71 subs r1, r6, #1 - Port.write(status); - 23588: 6803 ldr r3, [r0, #0] - writeData(BMC_MIDI_CONTROL_CHANGE | (channel-1), cc, val); - 2358a: f061 014f orn r1, r1, #79 ; 0x4f - Port.write(status); - 2358e: 681b ldr r3, [r3, #0] - 23590: b2c9 uxtb r1, r1 - 23592: 4798 blx r3 - Port.write(d1 & 0x7F); - 23594: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 23598: f007 017f and.w r1, r7, #127 ; 0x7f - 2359c: 6803 ldr r3, [r0, #0] - 2359e: 681b ldr r3, [r3, #0] - 235a0: 4798 blx r3 - Port.write(d2 & 0x7F); - 235a2: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 235a6: 4649 mov r1, r9 - 235a8: 6803 ldr r3, [r0, #0] - 235aa: 681b ldr r3, [r3, #0] - 235ac: 4798 blx r3 - 235ae: f1b8 0f00 cmp.w r8, #0 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 235b2: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - if(port>127){ - 235b6: f6bf af4e bge.w 23456 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 235ba: f004 010f and.w r1, r4, #15 - 235be: 681a ldr r2, [r3, #0] - 235c0: eb02 0241 add.w r2, r2, r1, lsl #1 - 235c4: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 - 235c8: e746 b.n 23458 - Port.write(status); - 235ca: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - writeData(BMC_MIDI_CONTROL_CHANGE | (channel-1), cc, val); - 235ce: 1e71 subs r1, r6, #1 + 2366e: 1e71 subs r1, r6, #1 Port.write(status); - 235d0: 6803 ldr r3, [r0, #0] + 23670: 6803 ldr r3, [r0, #0] writeData(BMC_MIDI_CONTROL_CHANGE | (channel-1), cc, val); - 235d2: f061 014f orn r1, r1, #79 ; 0x4f + 23672: f061 014f orn r1, r1, #79 ; 0x4f Port.write(status); - 235d6: 681b ldr r3, [r3, #0] - 235d8: b2c9 uxtb r1, r1 - 235da: 4798 blx r3 + 23676: 681b ldr r3, [r3, #0] + 23678: b2c9 uxtb r1, r1 + 2367a: 4798 blx r3 Port.write(d1 & 0x7F); - 235dc: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 235e0: f007 017f and.w r1, r7, #127 ; 0x7f - 235e4: 6803 ldr r3, [r0, #0] - 235e6: 681b ldr r3, [r3, #0] - 235e8: 4798 blx r3 + 2367c: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 23680: f007 017f and.w r1, r7, #127 ; 0x7f + 23684: 6803 ldr r3, [r0, #0] + 23686: 681b ldr r3, [r3, #0] + 23688: 4798 blx r3 Port.write(d2 & 0x7F); - 235ea: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 235ee: 4649 mov r1, r9 - 235f0: 6803 ldr r3, [r0, #0] - 235f2: 681b ldr r3, [r3, #0] - 235f4: 4798 blx r3 - if(port>127){ - 235f6: f1b8 0f00 cmp.w r8, #0 - 235fa: f6bf af22 bge.w 23442 + 2368a: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 2368e: 4649 mov r1, r9 + 23690: 6803 ldr r3, [r0, #0] + 23692: 681b ldr r3, [r3, #0] + 23694: 4798 blx r3 + } + 23696: e732 b.n 234fe return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 235fe: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 23602: f004 020f and.w r2, r4, #15 - 23606: 681b ldr r3, [r3, #0] - 23608: eb03 0342 add.w r3, r3, r2, lsl #1 - 2360c: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 - 23610: e718 b.n 23444 - 23612: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 23616: 6819 ldr r1, [r3, #0] - 23618: f004 030f and.w r3, r4, #15 - 2361c: f503 63ef add.w r3, r3, #1912 ; 0x778 - 23620: eb01 0143 add.w r1, r1, r3, lsl #1 - 23624: 005a lsls r2, r3, #1 - 23626: 7a4b ldrb r3, [r1, #9] + 23698: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 2369c: 6819 ldr r1, [r3, #0] + 2369e: f004 030f and.w r3, r4, #15 + 236a2: f503 63ef add.w r3, r3, #1912 ; 0x778 + 236a6: eb01 0143 add.w r1, r1, r3, lsl #1 + 236aa: 005a lsls r2, r3, #1 + 236ac: 7a4b ldrb r3, [r1, #9] if(isMidiUsbPort(port)){ - 23628: 07d9 lsls r1, r3, #31 - 2362a: f57f af03 bpl.w 23434 + 236ae: 07d8 lsls r0, r3, #31 + 236b0: f57f af22 bpl.w 234f8 if (cable >= MIDI_NUM_CABLES) return; - 2362e: f1ba 0f00 cmp.w sl, #0 - 23632: f47f aeff bne.w 23434 + 236b4: f1ba 0f00 cmp.w sl, #0 + 236b8: f47f af1e bne.w 234f8 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23636: 043b lsls r3, r7, #16 - 23638: 1e71 subs r1, r6, #1 + 236bc: 043b lsls r3, r7, #16 + 236be: 1e71 subs r1, r6, #1 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 2363a: f24b 000b movw r0, #45067 ; 0xb00b - 2363e: 9201 str r2, [sp, #4] + 236c0: f24b 000b movw r0, #45067 ; 0xb00b + 236c4: 9201 str r2, [sp, #4] | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23640: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 - 23644: 0209 lsls r1, r1, #8 + 236c6: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 + 236ca: 0209 lsls r1, r1, #8 | ((data2 & 0x7F) << 24)); - 23646: ea43 6309 orr.w r3, r3, r9, lsl #24 + 236cc: ea43 6309 orr.w r3, r3, r9, lsl #24 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2364a: f401 6170 and.w r1, r1, #3840 ; 0xf00 + 236d0: f401 6170 and.w r1, r1, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 2364e: 430b orrs r3, r1 + 236d4: 430b orrs r3, r1 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23650: 4318 orrs r0, r3 - 23652: f008 f9dd bl 2ba10 - 23656: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 2365a: 9a01 ldr r2, [sp, #4] - 2365c: 681b ldr r3, [r3, #0] - 2365e: 4413 add r3, r2 - 23660: 7a5b ldrb r3, [r3, #9] - 23662: e6e7 b.n 23434 - 23664: ea4f 130a mov.w r3, sl, lsl #4 - 23668: f24b 010b movw r1, #45067 ; 0xb00b + 236d6: 4318 orrs r0, r3 + 236d8: f008 fa0e bl 2baf8 + 236dc: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 236e0: 9a01 ldr r2, [sp, #4] + 236e2: 681b ldr r3, [r3, #0] + 236e4: 4413 add r3, r2 + 236e6: 7a5b ldrb r3, [r3, #9] + 236e8: e706 b.n 234f8 + 236ea: ea4f 130a mov.w r3, sl, lsl #4 + 236ee: f24b 010b movw r1, #45067 ; 0xb00b | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2366c: 043a lsls r2, r7, #16 + 236f2: 043a lsls r2, r7, #16 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 2366e: f505 6036 add.w r0, r5, #2912 ; 0xb60 - 23672: b2db uxtb r3, r3 + 236f4: f505 6026 add.w r0, r5, #2656 ; 0xa60 + 236f8: b2db uxtb r3, r3 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23674: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 236fa: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 | ((data2 & 0x7F) << 24)); - 23678: ea43 6309 orr.w r3, r3, r9, lsl #24 - 2367c: 4313 orrs r3, r2 + 236fe: ea43 6309 orr.w r3, r3, r9, lsl #24 + 23702: 4313 orrs r3, r2 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2367e: 1e72 subs r2, r6, #1 - 23680: 0212 lsls r2, r2, #8 - 23682: f402 6270 and.w r2, r2, #3840 ; 0xf00 + 23704: 1e72 subs r2, r6, #1 + 23706: 0212 lsls r2, r2, #8 + 23708: f402 6270 and.w r2, r2, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 23686: 4313 orrs r3, r2 + 2370c: 4313 orrs r3, r2 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23688: 4319 orrs r1, r3 - 2368a: f004 ff93 bl 285b4 + 2370e: 4319 orrs r1, r3 + 23710: f004 ffc6 bl 286a0 + if(port>127){ + 23714: f1b8 0f00 cmp.w r8, #0 + if(isMidiBlePort(port) && globals.bleConnected()){ + 23718: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 + 2371c: f6bf aef6 bge.w 2350c + 23720: e719 b.n 23556 + Port.write(status); + 23722: f505 5a80 add.w sl, r5, #4096 ; 0x1000 + writeData(BMC_MIDI_CONTROL_CHANGE | (channel-1), cc, val); + 23726: 1e71 subs r1, r6, #1 + Port.write(status); + 23728: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + writeData(BMC_MIDI_CONTROL_CHANGE | (channel-1), cc, val); + 2372c: f061 014f orn r1, r1, #79 ; 0x4f + Port.write(status); + 23730: 6803 ldr r3, [r0, #0] + 23732: b2c9 uxtb r1, r1 + 23734: 681b ldr r3, [r3, #0] + 23736: 4798 blx r3 + Port.write(d1 & 0x7F); + 23738: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + 2373c: f007 017f and.w r1, r7, #127 ; 0x7f + 23740: 6803 ldr r3, [r0, #0] + 23742: 681b ldr r3, [r3, #0] + 23744: 4798 blx r3 + Port.write(d2 & 0x7F); + 23746: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + 2374a: 4649 mov r1, r9 + 2374c: 6803 ldr r3, [r0, #0] + 2374e: 681b ldr r3, [r3, #0] + 23750: 4798 blx r3 globals.setMidiLocalUpdate(true); - 2368e: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 23692: e6e7 b.n 23464 + 23752: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 + } + 23756: e6e0 b.n 2351a return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23694: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 23698: f004 040f and.w r4, r4, #15 - 2369c: 681b ldr r3, [r3, #0] - 2369e: eb03 0344 add.w r3, r3, r4, lsl #1 - 236a2: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 - 236a6: e71d b.n 234e4 - 236a8: 2000bae8 .word 0x2000bae8 - 236ac: 20004ba8 .word 0x20004ba8 - 236b0: 200023ec .word 0x200023ec - 236b4: 2000380c .word 0x2000380c - 236b8: 20001ce0 .word 0x20001ce0 - 236bc: 20003824 .word 0x20003824 - 236c0: 20003830 .word 0x20003830 - -000236c4 : + 23758: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 2375c: f004 040f and.w r4, r4, #15 + 23760: 681b ldr r3, [r3, #0] + 23762: eb03 0344 add.w r3, r3, r4, lsl #1 + 23766: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 + 2376a: e72f b.n 235cc + 2376c: 2000bb08 .word 0x2000bb08 + 23770: 20004c68 .word 0x20004c68 + 23774: 200023ec .word 0x200023ec + 23778: 200038cc .word 0x200038cc + 2377c: 20001ce0 .word 0x20001ce0 + 23780: 200038e4 .word 0x200038e4 + 23784: 200038f0 .word 0x200038f0 + +00023788 : uint8_t ch = ((t_channel-1) & 0x0F); - 236c4: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff + 23788: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff return (ch= max)){ - 236ee: 45e6 cmp lr, ip - 236f0: f89d 5024 ldrb.w r5, [sp, #36] ; 0x24 - 236f4: d209 bcs.n 2370a + 237b2: 45e6 cmp lr, ip + 237b4: f89d 5024 ldrb.w r5, [sp, #36] ; 0x24 + 237b8: d209 bcs.n 237ce if((max > highest) || (max <= min)){ - 236f6: f01c 0f80 tst.w ip, #128 ; 0x80 - 236fa: d10d bne.n 23718 + 237ba: f01c 0f80 tst.w ip, #128 ; 0x80 + 237be: d10d bne.n 237dc if(direction==BMC_SCROLL_UP){ - 236fc: b186 cbz r6, 23720 + 237c0: b186 cbz r6, 237e4 long newValue = (value+amount); - 236fe: 3401 adds r4, #1 + 237c2: 3401 adds r4, #1 value = (t_endless) ? upEndless(t_amount) : upLimited(t_amount); - 23700: b315 cbz r5, 23748 + 237c4: b315 cbz r5, 2380c return (newValue > max || newValue < min) ? min : newValue; - 23702: 4564 cmp r4, ip - 23704: dd22 ble.n 2374c - 23706: 4674 mov r4, lr - 23708: e010 b.n 2372c + 237c6: 4564 cmp r4, ip + 237c8: dd22 ble.n 23810 + 237ca: 4674 mov r4, lr + 237cc: e010 b.n 237f0 if((max > highest) || (max <= min)){ - 2370a: fa4f fe8c sxtb.w lr, ip - 2370e: f1be 0f00 cmp.w lr, #0 + 237ce: fa4f fe8c sxtb.w lr, ip + 237d2: f1be 0f00 cmp.w lr, #0 min = lowest; - 23712: f04f 0e00 mov.w lr, #0 + 237d6: f04f 0e00 mov.w lr, #0 if((max > highest) || (max <= min)){ - 23716: dcf1 bgt.n 236fc + 237da: dcf1 bgt.n 237c0 max = highest; - 23718: f04f 0c7f mov.w ip, #127 ; 0x7f + 237dc: f04f 0c7f mov.w ip, #127 ; 0x7f if(direction==BMC_SCROLL_UP){ - 2371c: 2e00 cmp r6, #0 - 2371e: d1ee bne.n 236fe + 237e0: 2e00 cmp r6, #0 + 237e2: d1ee bne.n 237c2 long newValue = (value-amount); - 23720: 3c01 subs r4, #1 + 237e4: 3c01 subs r4, #1 value = (t_endless) ? downEndless(t_amount) : downLimited(t_amount); - 23722: b96d cbnz r5, 23740 + 237e6: b96d cbnz r5, 23804 return (newValue < min) ? min : newValue; - 23724: 4574 cmp r4, lr - 23726: bfb8 it lt - 23728: 4674 movlt r4, lr - 2372a: b2e4 uxtb r4, r4 + 237e8: 4574 cmp r4, lr + 237ea: bfb8 it lt + 237ec: 4674 movlt r4, lr + 237ee: b2e4 uxtb r4, r4 sendControlChange(ports,channel,control,ccValue); - 2372c: 2500 movs r5, #0 - 2372e: 2601 movs r6, #1 - 23730: 9400 str r4, [sp, #0] - 23732: e9cd 5601 strd r5, r6, [sp, #4] - 23736: f7ff fe51 bl 233dc -} - 2373a: 4620 mov r0, r4 - 2373c: b004 add sp, #16 - 2373e: bd70 pop {r4, r5, r6, pc} + 237f0: 2500 movs r5, #0 + 237f2: 2601 movs r6, #1 + 237f4: 9400 str r4, [sp, #0] + 237f6: e9cd 5601 strd r5, r6, [sp, #4] + 237fa: f7ff fe51 bl 234a0 +} + 237fe: 4620 mov r0, r4 + 23800: b004 add sp, #16 + 23802: bd70 pop {r4, r5, r6, pc} return (newValue < min) ? max : newValue; - 23740: 4574 cmp r4, lr - 23742: daf2 bge.n 2372a - 23744: 4664 mov r4, ip - 23746: e7f1 b.n 2372c + 23804: 4574 cmp r4, lr + 23806: daf2 bge.n 237ee + 23808: 4664 mov r4, ip + 2380a: e7f1 b.n 237f0 if(newValue>max){ - 23748: 4564 cmp r4, ip - 2374a: dcfb bgt.n 23744 + 2380c: 4564 cmp r4, ip + 2380e: dcfb bgt.n 23808 } else if(newValue - 23750: 4674 mov r4, lr - 23752: e7eb b.n 2372c + 23810: 4574 cmp r4, lr + 23812: daec bge.n 237ee + 23814: 4674 mov r4, lr + 23816: e7eb b.n 237f0 -00023754 : +00023818 : uint8_t cable){ - 23754: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 23818: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(port>127){ - 23758: fa4f f881 sxtb.w r8, r1 - 2375c: b085 sub sp, #20 - 2375e: 460c mov r4, r1 - 23760: 4605 mov r5, r0 - 23762: f1b8 0f00 cmp.w r8, #0 - 23766: 4617 mov r7, r2 - 23768: 461e mov r6, r3 - 2376a: f89d 9038 ldrb.w r9, [sp, #56] ; 0x38 - 2376e: f89d a03c ldrb.w sl, [sp, #60] ; 0x3c - 23772: f2c0 80e3 blt.w 2393c + 2381c: fa4f f881 sxtb.w r8, r1 + 23820: b085 sub sp, #20 + 23822: 460c mov r4, r1 + 23824: 4605 mov r5, r0 + 23826: f1b8 0f00 cmp.w r8, #0 + 2382a: 4617 mov r7, r2 + 2382c: 461e mov r6, r3 + 2382e: f89d 9038 ldrb.w r9, [sp, #56] ; 0x38 + 23832: f89d a03c ldrb.w sl, [sp, #60] ; 0x3c + 23836: f2c0 80bd blt.w 239b4 if(isMidiUsbPort(port)){ - 23776: 07cb lsls r3, r1, #31 - 23778: d422 bmi.n 237c0 + 2383a: 07cb lsls r3, r1, #31 + 2383c: d42e bmi.n 2389c uint8_t cable){ - 2377a: 4623 mov r3, r4 + 2383e: 4623 mov r3, r4 if(isMidiSerialAPort(port)){ - 2377c: 0798 lsls r0, r3, #30 - 2377e: f100 80b8 bmi.w 238f2 - 23782: f1b8 0f00 cmp.w r8, #0 - 23786: f2c0 80cf blt.w 23928 - 2378a: 4623 mov r3, r4 - if(isMidiSerialBPort(port)){ - 2378c: 0759 lsls r1, r3, #29 - 2378e: f100 808b bmi.w 238a8 - 23792: f1b8 0f00 cmp.w r8, #0 + 23840: 0798 lsls r0, r3, #30 + 23842: f100 809f bmi.w 23984 + 23846: f1b8 0f00 cmp.w r8, #0 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23796: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 2384a: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 if(port>127){ - 2379a: f2c0 80a2 blt.w 238e2 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 2379e: 4622 mov r2, r4 + 2384e: db04 blt.n 2385a if(isMidiHostPort(port) && globals.hostConnected()){ - 237a0: 0692 lsls r2, r2, #26 + 23850: 06a2 lsls r2, r4, #26 + 23852: d40b bmi.n 2386c return bitRead(flags, bit); - 237a2: 6dd8 ldr r0, [r3, #92] ; 0x5c - 237a4: d502 bpl.n 237ac - 237a6: 0701 lsls r1, r0, #28 - 237a8: f100 80f3 bmi.w 23992 + 23854: 4622 mov r2, r4 + 23856: 6dd8 ldr r0, [r3, #92] ; 0x5c + 23858: e011 b.n 2387e + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 2385a: f004 010f and.w r1, r4, #15 + 2385e: 681a ldr r2, [r3, #0] + 23860: eb02 0241 add.w r2, r2, r1, lsl #1 + 23864: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 23868: 0691 lsls r1, r2, #26 + 2386a: d5f4 bpl.n 23856 + 2386c: 6dd8 ldr r0, [r3, #92] ; 0x5c + 2386e: 0702 lsls r2, r0, #28 + 23870: f100 80cb bmi.w 23a0a + if(port>127){ + 23874: f1b8 0f00 cmp.w r8, #0 + 23878: f2c0 80e6 blt.w 23a48 + 2387c: 4622 mov r2, r4 + if(isMidiBlePort(port) && globals.bleConnected()){ + 2387e: 0651 lsls r1, r2, #25 + 23880: d502 bpl.n 23888 + 23882: 06c2 lsls r2, r0, #27 + 23884: f100 80e8 bmi.w 23a58 bitSet(flags, bit); - 237ac: f040 0002 orr.w r0, r0, #2 - 237b0: 65d8 str r0, [r3, #92] ; 0x5c + 23888: f040 0002 orr.w r0, r0, #2 + 2388c: 65d8 str r0, [r3, #92] ; 0x5c return bitRead(flags, bit); - 237b2: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 2388e: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(globals.getMidiOutDebug()){ - 237b6: 069a lsls r2, r3, #26 - 237b8: d418 bmi.n 237ec + 23892: 0699 lsls r1, r3, #26 + 23894: d418 bmi.n 238c8 } - 237ba: b005 add sp, #20 - 237bc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 23896: b005 add sp, #20 + 23898: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if (cable >= MIDI_NUM_CABLES) return; - 237c0: f1ba 0f00 cmp.w sl, #0 - 237c4: d1d9 bne.n 2377a + 2389c: f1ba 0f00 cmp.w sl, #0 + 238a0: d1cd bne.n 2383e | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 237c6: 1e53 subs r3, r2, #1 + 238a2: 1e53 subs r3, r2, #1 | ((data2 & 0x7F) << 24)); - 237c8: ea4f 6209 mov.w r2, r9, lsl #24 + 238a4: ea4f 6209 mov.w r2, r9, lsl #24 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 237cc: f249 0009 movw r0, #36873 ; 0x9009 + 238a8: f249 0009 movw r0, #36873 ; 0x9009 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 237d0: 021b lsls r3, r3, #8 + 238ac: 021b lsls r3, r3, #8 | ((data2 & 0x7F) << 24)); - 237d2: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 + 238ae: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 237d6: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 238b2: f403 6370 and.w r3, r3, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 237da: 4313 orrs r3, r2 + 238b6: 4313 orrs r3, r2 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 237dc: 0432 lsls r2, r6, #16 - 237de: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 238b8: 0432 lsls r2, r6, #16 + 238ba: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 | ((data2 & 0x7F) << 24)); - 237e2: 4313 orrs r3, r2 + 238be: 4313 orrs r3, r2 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 237e4: 4318 orrs r0, r3 - 237e6: f008 f913 bl 2ba10 - if(port>127){ - 237ea: e7c6 b.n 2377a - 237ec: 4b7c ldr r3, [pc, #496] ; (239e0 ) + 238c0: 4318 orrs r0, r3 + 238c2: f008 f919 bl 2baf8 + 238c6: e7ba b.n 2383e + 238c8: 4b77 ldr r3, [pc, #476] ; (23aa8 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 237ee: 220a movs r2, #10 - 237f0: 487c ldr r0, [pc, #496] ; (239e4 ) - 237f2: 6819 ldr r1, [r3, #0] - 237f4: 2300 movs r3, #0 - 237f6: f006 fb59 bl 29eac - 237fa: 2101 movs r1, #1 - 237fc: 487a ldr r0, [pc, #488] ; (239e8 ) - 237fe: f008 fea3 bl 2c548 - 23802: f1b8 0f00 cmp.w r8, #0 - 23806: f2c0 80e0 blt.w 239ca + 238ca: 220a movs r2, #10 + 238cc: 4877 ldr r0, [pc, #476] ; (23aac ) + 238ce: 6819 ldr r1, [r3, #0] + 238d0: 2300 movs r3, #0 + 238d2: f006 fb61 bl 29f98 + 238d6: 2101 movs r1, #1 + 238d8: 4875 ldr r0, [pc, #468] ; (23ab0 ) + 238da: f008 fea9 bl 2c630 + 238de: f1b8 0f00 cmp.w r8, #0 + 238e2: f2c0 80d6 blt.w 23a92 BMC_PRINTLN( - 2380a: 4621 mov r1, r4 - 2380c: 4668 mov r0, sp - 2380e: f7df ff93 bl 3738 - 23812: 4669 mov r1, sp - 23814: 4873 ldr r0, [pc, #460] ; (239e4 ) - 23816: f006 fafb bl 29e10 - 2381a: 4668 mov r0, sp - 2381c: f006 fc2c bl 2a078 - 23820: 2101 movs r1, #1 - 23822: 4871 ldr r0, [pc, #452] ; (239e8 ) - 23824: f008 fe90 bl 2c548 - 23828: 2110 movs r1, #16 - 2382a: 4870 ldr r0, [pc, #448] ; (239ec ) - 2382c: f008 fe8c bl 2c548 - 23830: 2101 movs r1, #1 - 23832: 486d ldr r0, [pc, #436] ; (239e8 ) - 23834: f008 fe88 bl 2c548 - 23838: 2108 movs r1, #8 - 2383a: 486d ldr r0, [pc, #436] ; (239f0 ) - 2383c: f008 fe84 bl 2c548 - 23840: 2101 movs r1, #1 - 23842: 4869 ldr r0, [pc, #420] ; (239e8 ) - 23844: f008 fe80 bl 2c548 + 238e6: 4621 mov r1, r4 + 238e8: 4668 mov r0, sp + 238ea: f7df ff25 bl 3738 + 238ee: 4669 mov r1, sp + 238f0: 486e ldr r0, [pc, #440] ; (23aac ) + 238f2: f006 fb03 bl 29efc + 238f6: 4668 mov r0, sp + 238f8: f006 fc32 bl 2a160 + 238fc: 2101 movs r1, #1 + 238fe: 486c ldr r0, [pc, #432] ; (23ab0 ) + 23900: f008 fe96 bl 2c630 + 23904: 2110 movs r1, #16 + 23906: 486b ldr r0, [pc, #428] ; (23ab4 ) + 23908: f008 fe92 bl 2c630 + 2390c: 2101 movs r1, #1 + 2390e: 4868 ldr r0, [pc, #416] ; (23ab0 ) + 23910: f008 fe8e bl 2c630 + 23914: 2108 movs r1, #8 + 23916: 4868 ldr r0, [pc, #416] ; (23ab8 ) + 23918: f008 fe8a bl 2c630 + 2391c: 2101 movs r1, #1 + 2391e: 4864 ldr r0, [pc, #400] ; (23ab0 ) + 23920: f008 fe86 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 23848: 2300 movs r3, #0 - 2384a: 220a movs r2, #10 - 2384c: 4639 mov r1, r7 - 2384e: 4865 ldr r0, [pc, #404] ; (239e4 ) - 23850: f006 fb2c bl 29eac - 23854: 2101 movs r1, #1 - 23856: 4864 ldr r0, [pc, #400] ; (239e8 ) - 23858: f008 fe76 bl 2c548 - 2385c: 2105 movs r1, #5 - 2385e: 4865 ldr r0, [pc, #404] ; (239f4 ) - 23860: f008 fe72 bl 2c548 - 23864: 2101 movs r1, #1 - 23866: 4860 ldr r0, [pc, #384] ; (239e8 ) - 23868: f008 fe6e bl 2c548 - 2386c: 2300 movs r3, #0 - 2386e: 220a movs r2, #10 - 23870: 4631 mov r1, r6 - 23872: 485c ldr r0, [pc, #368] ; (239e4 ) - 23874: f006 fb1a bl 29eac - 23878: 2101 movs r1, #1 - 2387a: 485b ldr r0, [pc, #364] ; (239e8 ) - 2387c: f008 fe64 bl 2c548 - 23880: 2109 movs r1, #9 - 23882: 485d ldr r0, [pc, #372] ; (239f8 ) - 23884: f008 fe60 bl 2c548 - 23888: 2101 movs r1, #1 - 2388a: 4857 ldr r0, [pc, #348] ; (239e8 ) - 2388c: f008 fe5c bl 2c548 - 23890: 2300 movs r3, #0 - 23892: 220a movs r2, #10 - 23894: 4649 mov r1, r9 - 23896: 4853 ldr r0, [pc, #332] ; (239e4 ) - 23898: f006 fb08 bl 29eac + 23924: 2300 movs r3, #0 + 23926: 220a movs r2, #10 + 23928: 4639 mov r1, r7 + 2392a: 4860 ldr r0, [pc, #384] ; (23aac ) + 2392c: f006 fb34 bl 29f98 + 23930: 2101 movs r1, #1 + 23932: 485f ldr r0, [pc, #380] ; (23ab0 ) + 23934: f008 fe7c bl 2c630 + 23938: 2105 movs r1, #5 + 2393a: 4860 ldr r0, [pc, #384] ; (23abc ) + 2393c: f008 fe78 bl 2c630 + 23940: 2101 movs r1, #1 + 23942: 485b ldr r0, [pc, #364] ; (23ab0 ) + 23944: f008 fe74 bl 2c630 + 23948: 2300 movs r3, #0 + 2394a: 220a movs r2, #10 + 2394c: 4631 mov r1, r6 + 2394e: 4857 ldr r0, [pc, #348] ; (23aac ) + 23950: f006 fb22 bl 29f98 + 23954: 2101 movs r1, #1 + 23956: 4856 ldr r0, [pc, #344] ; (23ab0 ) + 23958: f008 fe6a bl 2c630 + 2395c: 2109 movs r1, #9 + 2395e: 4858 ldr r0, [pc, #352] ; (23ac0 ) + 23960: f008 fe66 bl 2c630 + 23964: 2101 movs r1, #1 + 23966: 4852 ldr r0, [pc, #328] ; (23ab0 ) + 23968: f008 fe62 bl 2c630 + 2396c: 2300 movs r3, #0 + 2396e: 220a movs r2, #10 + 23970: 4649 mov r1, r9 + 23972: 484e ldr r0, [pc, #312] ; (23aac ) + 23974: f006 fb10 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 2389c: 4851 ldr r0, [pc, #324] ; (239e4 ) + 23978: 484c ldr r0, [pc, #304] ; (23aac ) } - 2389e: b005 add sp, #20 - 238a0: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 238a4: f006 bae6 b.w 29e74 - Port.write(status); - 238a8: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - writeData(BMC_MIDI_NOTE_ON | (channel-1), note, vel); - 238ac: 1e79 subs r1, r7, #1 - Port.write(status); - 238ae: 6803 ldr r3, [r0, #0] - writeData(BMC_MIDI_NOTE_ON | (channel-1), note, vel); - 238b0: f061 016f orn r1, r1, #111 ; 0x6f - Port.write(status); - 238b4: 681b ldr r3, [r3, #0] - 238b6: b2c9 uxtb r1, r1 - 238b8: 4798 blx r3 - Port.write(d1 & 0x7F); - 238ba: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 238be: f006 017f and.w r1, r6, #127 ; 0x7f - 238c2: 6803 ldr r3, [r0, #0] - 238c4: 681b ldr r3, [r3, #0] - 238c6: 4798 blx r3 - Port.write(d2 & 0x7F); - 238c8: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 238cc: f009 017f and.w r1, r9, #127 ; 0x7f - 238d0: 6803 ldr r3, [r0, #0] - 238d2: 681b ldr r3, [r3, #0] - 238d4: 4798 blx r3 - 238d6: f1b8 0f00 cmp.w r8, #0 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 238da: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - if(port>127){ - 238de: f6bf af5e bge.w 2379e - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 238e2: f004 010f and.w r1, r4, #15 - 238e6: 681a ldr r2, [r3, #0] - 238e8: eb02 0241 add.w r2, r2, r1, lsl #1 - 238ec: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 - 238f0: e756 b.n 237a0 + 2397a: b005 add sp, #20 + 2397c: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 23980: f006 baee b.w 29f60 Port.write(status); - 238f2: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 23984: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 writeData(BMC_MIDI_NOTE_ON | (channel-1), note, vel); - 238f6: 1e79 subs r1, r7, #1 + 23988: 1e79 subs r1, r7, #1 Port.write(status); - 238f8: 6803 ldr r3, [r0, #0] + 2398a: 6803 ldr r3, [r0, #0] writeData(BMC_MIDI_NOTE_ON | (channel-1), note, vel); - 238fa: f061 016f orn r1, r1, #111 ; 0x6f + 2398c: f061 016f orn r1, r1, #111 ; 0x6f Port.write(status); - 238fe: 681b ldr r3, [r3, #0] - 23900: b2c9 uxtb r1, r1 - 23902: 4798 blx r3 + 23990: 681b ldr r3, [r3, #0] + 23992: b2c9 uxtb r1, r1 + 23994: 4798 blx r3 Port.write(d1 & 0x7F); - 23904: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 23908: f006 017f and.w r1, r6, #127 ; 0x7f - 2390c: 6803 ldr r3, [r0, #0] - 2390e: 681b ldr r3, [r3, #0] - 23910: 4798 blx r3 + 23996: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 2399a: f006 017f and.w r1, r6, #127 ; 0x7f + 2399e: 6803 ldr r3, [r0, #0] + 239a0: 681b ldr r3, [r3, #0] + 239a2: 4798 blx r3 Port.write(d2 & 0x7F); - 23912: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 23916: f009 017f and.w r1, r9, #127 ; 0x7f - 2391a: 6803 ldr r3, [r0, #0] - 2391c: 681b ldr r3, [r3, #0] - 2391e: 4798 blx r3 - if(port>127){ - 23920: f1b8 0f00 cmp.w r8, #0 - 23924: f6bf af31 bge.w 2378a + 239a4: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 239a8: f009 017f and.w r1, r9, #127 ; 0x7f + 239ac: 6803 ldr r3, [r0, #0] + 239ae: 681b ldr r3, [r3, #0] + 239b0: 4798 blx r3 + } + 239b2: e748 b.n 23846 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23928: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 2392c: f004 020f and.w r2, r4, #15 - 23930: 681b ldr r3, [r3, #0] - 23932: eb03 0342 add.w r3, r3, r2, lsl #1 - 23936: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 - 2393a: e727 b.n 2378c - 2393c: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 - 23940: 681a ldr r2, [r3, #0] - 23942: f001 030f and.w r3, r1, #15 - 23946: f503 63ef add.w r3, r3, #1912 ; 0x778 - 2394a: eb02 0243 add.w r2, r2, r3, lsl #1 - 2394e: ea4f 0b43 mov.w fp, r3, lsl #1 - 23952: 7a53 ldrb r3, [r2, #9] + 239b4: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 + 239b8: 681a ldr r2, [r3, #0] + 239ba: f001 030f and.w r3, r1, #15 + 239be: f503 63ef add.w r3, r3, #1912 ; 0x778 + 239c2: eb02 0243 add.w r2, r2, r3, lsl #1 + 239c6: ea4f 0b43 mov.w fp, r3, lsl #1 + 239ca: 7a53 ldrb r3, [r2, #9] if(isMidiUsbPort(port)){ - 23954: 07da lsls r2, r3, #31 - 23956: f57f af11 bpl.w 2377c + 239cc: 07da lsls r2, r3, #31 + 239ce: f57f af37 bpl.w 23840 if (cable >= MIDI_NUM_CABLES) return; - 2395a: f1ba 0f00 cmp.w sl, #0 - 2395e: f47f af0d bne.w 2377c + 239d2: f1ba 0f00 cmp.w sl, #0 + 239d6: f47f af33 bne.w 23840 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23962: 1e7b subs r3, r7, #1 + 239da: 1e7b subs r3, r7, #1 | ((data2 & 0x7F) << 24)); - 23964: ea4f 6209 mov.w r2, r9, lsl #24 + 239dc: ea4f 6209 mov.w r2, r9, lsl #24 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23968: f249 0009 movw r0, #36873 ; 0x9009 + 239e0: f249 0009 movw r0, #36873 ; 0x9009 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2396c: 021b lsls r3, r3, #8 + 239e4: 021b lsls r3, r3, #8 | ((data2 & 0x7F) << 24)); - 2396e: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 + 239e6: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23972: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 239ea: f403 6370 and.w r3, r3, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 23976: 4313 orrs r3, r2 + 239ee: 4313 orrs r3, r2 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23978: 0432 lsls r2, r6, #16 - 2397a: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 239f0: 0432 lsls r2, r6, #16 + 239f2: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 | ((data2 & 0x7F) << 24)); - 2397e: 4313 orrs r3, r2 + 239f6: 4313 orrs r3, r2 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23980: 4318 orrs r0, r3 - 23982: f008 f845 bl 2ba10 - 23986: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 2398a: 681b ldr r3, [r3, #0] - 2398c: 445b add r3, fp - 2398e: 7a5b ldrb r3, [r3, #9] - 23990: e6f4 b.n 2377c - 23992: ea4f 130a mov.w r3, sl, lsl #4 - 23996: f249 0109 movw r1, #36873 ; 0x9009 + 239f8: 4318 orrs r0, r3 + 239fa: f008 f87d bl 2baf8 + 239fe: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 23a02: 681b ldr r3, [r3, #0] + 23a04: 445b add r3, fp + 23a06: 7a5b ldrb r3, [r3, #9] + 23a08: e71a b.n 23840 + 23a0a: ea4f 130a mov.w r3, sl, lsl #4 + 23a0e: f249 0109 movw r1, #36873 ; 0x9009 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2399a: 0432 lsls r2, r6, #16 + 23a12: 0432 lsls r2, r6, #16 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 2399c: f505 6036 add.w r0, r5, #2912 ; 0xb60 - 239a0: b2db uxtb r3, r3 + 23a14: f505 6026 add.w r0, r5, #2656 ; 0xa60 + 23a18: b2db uxtb r3, r3 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 239a2: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 23a1a: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 | ((data2 & 0x7F) << 24)); - 239a6: 4313 orrs r3, r2 + 23a1e: 4313 orrs r3, r2 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 239a8: 1e7a subs r2, r7, #1 - 239aa: 0212 lsls r2, r2, #8 - 239ac: f402 6270 and.w r2, r2, #3840 ; 0xf00 + 23a20: 1e7a subs r2, r7, #1 + 23a22: 0212 lsls r2, r2, #8 + 23a24: f402 6270 and.w r2, r2, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 239b0: 4313 orrs r3, r2 - 239b2: ea4f 6209 mov.w r2, r9, lsl #24 - 239b6: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 - 239ba: 4313 orrs r3, r2 + 23a28: 4313 orrs r3, r2 + 23a2a: ea4f 6209 mov.w r2, r9, lsl #24 + 23a2e: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 + 23a32: 4313 orrs r3, r2 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 239bc: 4319 orrs r1, r3 - 239be: f004 fdf9 bl 285b4 + 23a34: 4319 orrs r1, r3 + 23a36: f004 fe33 bl 286a0 + if(isMidiBlePort(port) && globals.bleConnected()){ + 23a3a: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + if(port>127){ + 23a3e: f1b8 0f00 cmp.w r8, #0 + 23a42: 6dd8 ldr r0, [r3, #92] ; 0x5c + 23a44: f6bf af1a bge.w 2387c + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 23a48: 681a ldr r2, [r3, #0] + 23a4a: f004 010f and.w r1, r4, #15 + 23a4e: eb02 0241 add.w r2, r2, r1, lsl #1 + 23a52: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 23a56: e712 b.n 2387e + Port.write(status); + 23a58: f505 5a80 add.w sl, r5, #4096 ; 0x1000 + writeData(BMC_MIDI_NOTE_ON | (channel-1), note, vel); + 23a5c: 1e79 subs r1, r7, #1 + Port.write(status); + 23a5e: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + writeData(BMC_MIDI_NOTE_ON | (channel-1), note, vel); + 23a62: f061 016f orn r1, r1, #111 ; 0x6f + Port.write(status); + 23a66: 6803 ldr r3, [r0, #0] + 23a68: b2c9 uxtb r1, r1 + 23a6a: 681b ldr r3, [r3, #0] + 23a6c: 4798 blx r3 + Port.write(d1 & 0x7F); + 23a6e: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + 23a72: f006 017f and.w r1, r6, #127 ; 0x7f + 23a76: 6803 ldr r3, [r0, #0] + 23a78: 681b ldr r3, [r3, #0] + 23a7a: 4798 blx r3 + Port.write(d2 & 0x7F); + 23a7c: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + 23a80: f009 017f and.w r1, r9, #127 ; 0x7f + 23a84: 6803 ldr r3, [r0, #0] + 23a86: 681b ldr r3, [r3, #0] + 23a88: 4798 blx r3 globals.setMidiOutActivity(); - 239c2: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 23a8a: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 bitSet(flags, bit); - 239c6: 6dd8 ldr r0, [r3, #92] ; 0x5c - 239c8: e6f0 b.n 237ac - 239ca: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 239ce: f004 040f and.w r4, r4, #15 - 239d2: 681b ldr r3, [r3, #0] - 239d4: eb03 0344 add.w r3, r3, r4, lsl #1 - 239d8: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 - 239dc: e715 b.n 2380a - 239de: bf00 nop - 239e0: 2000bae8 .word 0x2000bae8 - 239e4: 20004ba8 .word 0x20004ba8 - 239e8: 200023ec .word 0x200023ec - 239ec: 2000374c .word 0x2000374c - 239f0: 20001ce0 .word 0x20001ce0 - 239f4: 20003760 .word 0x20003760 - 239f8: 20003768 .word 0x20003768 - -000239fc : + 23a8e: 6dd8 ldr r0, [r3, #92] ; 0x5c + } + 23a90: e6fa b.n 23888 + 23a92: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 23a96: f004 040f and.w r4, r4, #15 + 23a9a: 681b ldr r3, [r3, #0] + 23a9c: eb03 0344 add.w r3, r3, r4, lsl #1 + 23aa0: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 + 23aa4: e71f b.n 238e6 + 23aa6: bf00 nop + 23aa8: 2000bb08 .word 0x2000bb08 + 23aac: 20004c68 .word 0x20004c68 + 23ab0: 200023ec .word 0x200023ec + 23ab4: 2000380c .word 0x2000380c + 23ab8: 20001ce0 .word 0x20001ce0 + 23abc: 20003820 .word 0x20003820 + 23ac0: 20003828 .word 0x20003828 + +00023ac4 : uint8_t cable){ - 239fc: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 23ac4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(port>127){ - 23a00: fa4f f881 sxtb.w r8, r1 - 23a04: b085 sub sp, #20 - 23a06: 460c mov r4, r1 - 23a08: 4605 mov r5, r0 - 23a0a: f1b8 0f00 cmp.w r8, #0 - 23a0e: 4617 mov r7, r2 - 23a10: 461e mov r6, r3 - 23a12: f89d 9038 ldrb.w r9, [sp, #56] ; 0x38 - 23a16: f89d a03c ldrb.w sl, [sp, #60] ; 0x3c - 23a1a: f2c0 80e3 blt.w 23be4 + 23ac8: fa4f f881 sxtb.w r8, r1 + 23acc: b085 sub sp, #20 + 23ace: 460c mov r4, r1 + 23ad0: 4605 mov r5, r0 + 23ad2: f1b8 0f00 cmp.w r8, #0 + 23ad6: 4617 mov r7, r2 + 23ad8: 461e mov r6, r3 + 23ada: f89d 9038 ldrb.w r9, [sp, #56] ; 0x38 + 23ade: f89d a03c ldrb.w sl, [sp, #60] ; 0x3c + 23ae2: f2c0 80bd blt.w 23c60 if(isMidiUsbPort(port)){ - 23a1e: 07cb lsls r3, r1, #31 - 23a20: d422 bmi.n 23a68 + 23ae6: 07cb lsls r3, r1, #31 + 23ae8: d42e bmi.n 23b48 uint8_t cable){ - 23a22: 4623 mov r3, r4 + 23aea: 4623 mov r3, r4 if(isMidiSerialAPort(port)){ - 23a24: 0798 lsls r0, r3, #30 - 23a26: f100 80b8 bmi.w 23b9a - 23a2a: f1b8 0f00 cmp.w r8, #0 - 23a2e: f2c0 80cf blt.w 23bd0 - 23a32: 4623 mov r3, r4 - if(isMidiSerialBPort(port)){ - 23a34: 0759 lsls r1, r3, #29 - 23a36: f100 808b bmi.w 23b50 - 23a3a: f1b8 0f00 cmp.w r8, #0 + 23aec: 0798 lsls r0, r3, #30 + 23aee: f100 809f bmi.w 23c30 + 23af2: f1b8 0f00 cmp.w r8, #0 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23a3e: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 23af6: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 if(port>127){ - 23a42: f2c0 80a2 blt.w 23b8a - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23a46: 4622 mov r2, r4 + 23afa: db04 blt.n 23b06 if(isMidiHostPort(port) && globals.hostConnected()){ - 23a48: 0692 lsls r2, r2, #26 + 23afc: 06a2 lsls r2, r4, #26 + 23afe: d40b bmi.n 23b18 return bitRead(flags, bit); - 23a4a: 6dd8 ldr r0, [r3, #92] ; 0x5c - 23a4c: d502 bpl.n 23a54 - 23a4e: 0701 lsls r1, r0, #28 - 23a50: f100 80f3 bmi.w 23c3a + 23b00: 4622 mov r2, r4 + 23b02: 6dd8 ldr r0, [r3, #92] ; 0x5c + 23b04: e011 b.n 23b2a + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 23b06: f004 010f and.w r1, r4, #15 + 23b0a: 681a ldr r2, [r3, #0] + 23b0c: eb02 0241 add.w r2, r2, r1, lsl #1 + 23b10: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 23b14: 0691 lsls r1, r2, #26 + 23b16: d5f4 bpl.n 23b02 + 23b18: 6dd8 ldr r0, [r3, #92] ; 0x5c + 23b1a: 0702 lsls r2, r0, #28 + 23b1c: f100 80cb bmi.w 23cb6 + if(port>127){ + 23b20: f1b8 0f00 cmp.w r8, #0 + 23b24: f2c0 80e6 blt.w 23cf4 + 23b28: 4622 mov r2, r4 + if(isMidiBlePort(port) && globals.bleConnected()){ + 23b2a: 0651 lsls r1, r2, #25 + 23b2c: d502 bpl.n 23b34 + 23b2e: 06c2 lsls r2, r0, #27 + 23b30: f100 80e8 bmi.w 23d04 bitSet(flags, bit); - 23a54: f040 0002 orr.w r0, r0, #2 - 23a58: 65d8 str r0, [r3, #92] ; 0x5c + 23b34: f040 0002 orr.w r0, r0, #2 + 23b38: 65d8 str r0, [r3, #92] ; 0x5c return bitRead(flags, bit); - 23a5a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 23b3a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(globals.getMidiOutDebug()){ - 23a5e: 069a lsls r2, r3, #26 - 23a60: d418 bmi.n 23a94 + 23b3e: 0699 lsls r1, r3, #26 + 23b40: d418 bmi.n 23b74 } - 23a62: b005 add sp, #20 - 23a64: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 23b42: b005 add sp, #20 + 23b44: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if (cable >= MIDI_NUM_CABLES) return; - 23a68: f1ba 0f00 cmp.w sl, #0 - 23a6c: d1d9 bne.n 23a22 + 23b48: f1ba 0f00 cmp.w sl, #0 + 23b4c: d1cd bne.n 23aea | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23a6e: 1e53 subs r3, r2, #1 + 23b4e: 1e53 subs r3, r2, #1 | ((data2 & 0x7F) << 24)); - 23a70: ea4f 6209 mov.w r2, r9, lsl #24 + 23b50: ea4f 6209 mov.w r2, r9, lsl #24 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23a74: f248 0008 movw r0, #32776 ; 0x8008 - | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23a78: 021b lsls r3, r3, #8 - | ((data2 & 0x7F) << 24)); - 23a7a: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 + 23b54: f248 0008 movw r0, #32776 ; 0x8008 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23a7e: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 23b58: 021b lsls r3, r3, #8 | ((data2 & 0x7F) << 24)); - 23a82: 4313 orrs r3, r2 + 23b5a: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23a84: 0432 lsls r2, r6, #16 - 23a86: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 23b5e: f403 6370 and.w r3, r3, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 23a8a: 4313 orrs r3, r2 - usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23a8c: 4318 orrs r0, r3 - 23a8e: f007 ffbf bl 2ba10 - if(port>127){ - 23a92: e7c6 b.n 23a22 - 23a94: 4b7c ldr r3, [pc, #496] ; (23c88 ) - size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 23a96: 220a movs r2, #10 - 23a98: 487c ldr r0, [pc, #496] ; (23c8c ) - 23a9a: 6819 ldr r1, [r3, #0] - 23a9c: 2300 movs r3, #0 - 23a9e: f006 fa05 bl 29eac - 23aa2: 2101 movs r1, #1 - 23aa4: 487a ldr r0, [pc, #488] ; (23c90 ) - 23aa6: f008 fd4f bl 2c548 - 23aaa: f1b8 0f00 cmp.w r8, #0 - 23aae: f2c0 80e0 blt.w 23c72 - BMC_PRINTLN( - 23ab2: 4621 mov r1, r4 - 23ab4: 4668 mov r0, sp - 23ab6: f7df fe3f bl 3738 - 23aba: 4669 mov r1, sp - 23abc: 4873 ldr r0, [pc, #460] ; (23c8c ) - 23abe: f006 f9a7 bl 29e10 - 23ac2: 4668 mov r0, sp - 23ac4: f006 fad8 bl 2a078 - 23ac8: 2101 movs r1, #1 - 23aca: 4871 ldr r0, [pc, #452] ; (23c90 ) - 23acc: f008 fd3c bl 2c548 - 23ad0: 2111 movs r1, #17 - 23ad2: 4870 ldr r0, [pc, #448] ; (23c94 ) - 23ad4: f008 fd38 bl 2c548 - 23ad8: 2101 movs r1, #1 - 23ada: 486d ldr r0, [pc, #436] ; (23c90 ) - 23adc: f008 fd34 bl 2c548 - 23ae0: 2108 movs r1, #8 - 23ae2: 486d ldr r0, [pc, #436] ; (23c98 ) - 23ae4: f008 fd30 bl 2c548 - 23ae8: 2101 movs r1, #1 - 23aea: 4869 ldr r0, [pc, #420] ; (23c90 ) - 23aec: f008 fd2c bl 2c548 - size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 23af0: 2300 movs r3, #0 - 23af2: 220a movs r2, #10 - 23af4: 4639 mov r1, r7 - 23af6: 4865 ldr r0, [pc, #404] ; (23c8c ) - 23af8: f006 f9d8 bl 29eac - 23afc: 2101 movs r1, #1 - 23afe: 4864 ldr r0, [pc, #400] ; (23c90 ) - 23b00: f008 fd22 bl 2c548 - 23b04: 2105 movs r1, #5 - 23b06: 4865 ldr r0, [pc, #404] ; (23c9c ) - 23b08: f008 fd1e bl 2c548 - 23b0c: 2101 movs r1, #1 - 23b0e: 4860 ldr r0, [pc, #384] ; (23c90 ) - 23b10: f008 fd1a bl 2c548 - 23b14: 2300 movs r3, #0 - 23b16: 220a movs r2, #10 - 23b18: 4631 mov r1, r6 - 23b1a: 485c ldr r0, [pc, #368] ; (23c8c ) - 23b1c: f006 f9c6 bl 29eac - 23b20: 2101 movs r1, #1 - 23b22: 485b ldr r0, [pc, #364] ; (23c90 ) - 23b24: f008 fd10 bl 2c548 - 23b28: 2109 movs r1, #9 - 23b2a: 485d ldr r0, [pc, #372] ; (23ca0 ) - 23b2c: f008 fd0c bl 2c548 - 23b30: 2101 movs r1, #1 - 23b32: 4857 ldr r0, [pc, #348] ; (23c90 ) - 23b34: f008 fd08 bl 2c548 - 23b38: 2300 movs r3, #0 - 23b3a: 220a movs r2, #10 - 23b3c: 4649 mov r1, r9 - 23b3e: 4853 ldr r0, [pc, #332] ; (23c8c ) - 23b40: f006 f9b4 bl 29eac - size_t println(uint8_t b) { return print(b) + println(); } - 23b44: 4851 ldr r0, [pc, #324] ; (23c8c ) -} - 23b46: b005 add sp, #20 - 23b48: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 23b4c: f006 b992 b.w 29e74 - Port.write(status); - 23b50: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - writeData(BMC_MIDI_NOTE_OFF | (channel-1), note, vel); - 23b54: 1e79 subs r1, r7, #1 - Port.write(status); - 23b56: 6803 ldr r3, [r0, #0] - writeData(BMC_MIDI_NOTE_OFF | (channel-1), note, vel); - 23b58: f061 017f orn r1, r1, #127 ; 0x7f - Port.write(status); - 23b5c: 681b ldr r3, [r3, #0] - 23b5e: b2c9 uxtb r1, r1 - 23b60: 4798 blx r3 - Port.write(d1 & 0x7F); - 23b62: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 23b66: f006 017f and.w r1, r6, #127 ; 0x7f - 23b6a: 6803 ldr r3, [r0, #0] - 23b6c: 681b ldr r3, [r3, #0] - 23b6e: 4798 blx r3 - Port.write(d2 & 0x7F); - 23b70: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 23b74: f009 017f and.w r1, r9, #127 ; 0x7f - 23b78: 6803 ldr r3, [r0, #0] - 23b7a: 681b ldr r3, [r3, #0] - 23b7c: 4798 blx r3 - 23b7e: f1b8 0f00 cmp.w r8, #0 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23b82: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - if(port>127){ - 23b86: f6bf af5e bge.w 23a46 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23b8a: f004 010f and.w r1, r4, #15 - 23b8e: 681a ldr r2, [r3, #0] - 23b90: eb02 0241 add.w r2, r2, r1, lsl #1 - 23b94: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 - 23b98: e756 b.n 23a48 + 23b62: 4313 orrs r3, r2 + | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) + 23b64: 0432 lsls r2, r6, #16 + 23b66: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + | ((data2 & 0x7F) << 24)); + 23b6a: 4313 orrs r3, r2 + usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) + 23b6c: 4318 orrs r0, r3 + 23b6e: f007 ffc3 bl 2baf8 + 23b72: e7ba b.n 23aea + 23b74: 4b77 ldr r3, [pc, #476] ; (23d54 ) + size_t print(unsigned long n) { return printNumber(n, 10, 0); } + 23b76: 220a movs r2, #10 + 23b78: 4877 ldr r0, [pc, #476] ; (23d58 ) + 23b7a: 6819 ldr r1, [r3, #0] + 23b7c: 2300 movs r3, #0 + 23b7e: f006 fa0b bl 29f98 + 23b82: 2101 movs r1, #1 + 23b84: 4875 ldr r0, [pc, #468] ; (23d5c ) + 23b86: f008 fd53 bl 2c630 + 23b8a: f1b8 0f00 cmp.w r8, #0 + 23b8e: f2c0 80d6 blt.w 23d3e + BMC_PRINTLN( + 23b92: 4621 mov r1, r4 + 23b94: 4668 mov r0, sp + 23b96: f7df fdcf bl 3738 + 23b9a: 4669 mov r1, sp + 23b9c: 486e ldr r0, [pc, #440] ; (23d58 ) + 23b9e: f006 f9ad bl 29efc + 23ba2: 4668 mov r0, sp + 23ba4: f006 fadc bl 2a160 + 23ba8: 2101 movs r1, #1 + 23baa: 486c ldr r0, [pc, #432] ; (23d5c ) + 23bac: f008 fd40 bl 2c630 + 23bb0: 2111 movs r1, #17 + 23bb2: 486b ldr r0, [pc, #428] ; (23d60 ) + 23bb4: f008 fd3c bl 2c630 + 23bb8: 2101 movs r1, #1 + 23bba: 4868 ldr r0, [pc, #416] ; (23d5c ) + 23bbc: f008 fd38 bl 2c630 + 23bc0: 2108 movs r1, #8 + 23bc2: 4868 ldr r0, [pc, #416] ; (23d64 ) + 23bc4: f008 fd34 bl 2c630 + 23bc8: 2101 movs r1, #1 + 23bca: 4864 ldr r0, [pc, #400] ; (23d5c ) + 23bcc: f008 fd30 bl 2c630 + size_t print(uint8_t b) { return printNumber(b, 10, 0); } + 23bd0: 2300 movs r3, #0 + 23bd2: 220a movs r2, #10 + 23bd4: 4639 mov r1, r7 + 23bd6: 4860 ldr r0, [pc, #384] ; (23d58 ) + 23bd8: f006 f9de bl 29f98 + 23bdc: 2101 movs r1, #1 + 23bde: 485f ldr r0, [pc, #380] ; (23d5c ) + 23be0: f008 fd26 bl 2c630 + 23be4: 2105 movs r1, #5 + 23be6: 4860 ldr r0, [pc, #384] ; (23d68 ) + 23be8: f008 fd22 bl 2c630 + 23bec: 2101 movs r1, #1 + 23bee: 485b ldr r0, [pc, #364] ; (23d5c ) + 23bf0: f008 fd1e bl 2c630 + 23bf4: 2300 movs r3, #0 + 23bf6: 220a movs r2, #10 + 23bf8: 4631 mov r1, r6 + 23bfa: 4857 ldr r0, [pc, #348] ; (23d58 ) + 23bfc: f006 f9cc bl 29f98 + 23c00: 2101 movs r1, #1 + 23c02: 4856 ldr r0, [pc, #344] ; (23d5c ) + 23c04: f008 fd14 bl 2c630 + 23c08: 2109 movs r1, #9 + 23c0a: 4858 ldr r0, [pc, #352] ; (23d6c ) + 23c0c: f008 fd10 bl 2c630 + 23c10: 2101 movs r1, #1 + 23c12: 4852 ldr r0, [pc, #328] ; (23d5c ) + 23c14: f008 fd0c bl 2c630 + 23c18: 2300 movs r3, #0 + 23c1a: 220a movs r2, #10 + 23c1c: 4649 mov r1, r9 + 23c1e: 484e ldr r0, [pc, #312] ; (23d58 ) + 23c20: f006 f9ba bl 29f98 + size_t println(uint8_t b) { return print(b) + println(); } + 23c24: 484c ldr r0, [pc, #304] ; (23d58 ) +} + 23c26: b005 add sp, #20 + 23c28: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 23c2c: f006 b998 b.w 29f60 Port.write(status); - 23b9a: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 23c30: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 writeData(BMC_MIDI_NOTE_OFF | (channel-1), note, vel); - 23b9e: 1e79 subs r1, r7, #1 + 23c34: 1e79 subs r1, r7, #1 Port.write(status); - 23ba0: 6803 ldr r3, [r0, #0] + 23c36: 6803 ldr r3, [r0, #0] writeData(BMC_MIDI_NOTE_OFF | (channel-1), note, vel); - 23ba2: f061 017f orn r1, r1, #127 ; 0x7f + 23c38: f061 017f orn r1, r1, #127 ; 0x7f Port.write(status); - 23ba6: 681b ldr r3, [r3, #0] - 23ba8: b2c9 uxtb r1, r1 - 23baa: 4798 blx r3 + 23c3c: 681b ldr r3, [r3, #0] + 23c3e: b2c9 uxtb r1, r1 + 23c40: 4798 blx r3 Port.write(d1 & 0x7F); - 23bac: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 23bb0: f006 017f and.w r1, r6, #127 ; 0x7f - 23bb4: 6803 ldr r3, [r0, #0] - 23bb6: 681b ldr r3, [r3, #0] - 23bb8: 4798 blx r3 + 23c42: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 23c46: f006 017f and.w r1, r6, #127 ; 0x7f + 23c4a: 6803 ldr r3, [r0, #0] + 23c4c: 681b ldr r3, [r3, #0] + 23c4e: 4798 blx r3 Port.write(d2 & 0x7F); - 23bba: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 23bbe: f009 017f and.w r1, r9, #127 ; 0x7f - 23bc2: 6803 ldr r3, [r0, #0] - 23bc4: 681b ldr r3, [r3, #0] - 23bc6: 4798 blx r3 - if(port>127){ - 23bc8: f1b8 0f00 cmp.w r8, #0 - 23bcc: f6bf af31 bge.w 23a32 + 23c50: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 23c54: f009 017f and.w r1, r9, #127 ; 0x7f + 23c58: 6803 ldr r3, [r0, #0] + 23c5a: 681b ldr r3, [r3, #0] + 23c5c: 4798 blx r3 + } + 23c5e: e748 b.n 23af2 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23bd0: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 23bd4: f004 020f and.w r2, r4, #15 - 23bd8: 681b ldr r3, [r3, #0] - 23bda: eb03 0342 add.w r3, r3, r2, lsl #1 - 23bde: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 - 23be2: e727 b.n 23a34 - 23be4: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 - 23be8: 681a ldr r2, [r3, #0] - 23bea: f001 030f and.w r3, r1, #15 - 23bee: f503 63ef add.w r3, r3, #1912 ; 0x778 - 23bf2: eb02 0243 add.w r2, r2, r3, lsl #1 - 23bf6: ea4f 0b43 mov.w fp, r3, lsl #1 - 23bfa: 7a53 ldrb r3, [r2, #9] + 23c60: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 + 23c64: 681a ldr r2, [r3, #0] + 23c66: f001 030f and.w r3, r1, #15 + 23c6a: f503 63ef add.w r3, r3, #1912 ; 0x778 + 23c6e: eb02 0243 add.w r2, r2, r3, lsl #1 + 23c72: ea4f 0b43 mov.w fp, r3, lsl #1 + 23c76: 7a53 ldrb r3, [r2, #9] if(isMidiUsbPort(port)){ - 23bfc: 07da lsls r2, r3, #31 - 23bfe: f57f af11 bpl.w 23a24 + 23c78: 07da lsls r2, r3, #31 + 23c7a: f57f af37 bpl.w 23aec if (cable >= MIDI_NUM_CABLES) return; - 23c02: f1ba 0f00 cmp.w sl, #0 - 23c06: f47f af0d bne.w 23a24 + 23c7e: f1ba 0f00 cmp.w sl, #0 + 23c82: f47f af33 bne.w 23aec | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23c0a: 1e7b subs r3, r7, #1 + 23c86: 1e7b subs r3, r7, #1 | ((data2 & 0x7F) << 24)); - 23c0c: ea4f 6209 mov.w r2, r9, lsl #24 + 23c88: ea4f 6209 mov.w r2, r9, lsl #24 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23c10: f248 0008 movw r0, #32776 ; 0x8008 + 23c8c: f248 0008 movw r0, #32776 ; 0x8008 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23c14: 021b lsls r3, r3, #8 + 23c90: 021b lsls r3, r3, #8 | ((data2 & 0x7F) << 24)); - 23c16: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 + 23c92: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23c1a: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 23c96: f403 6370 and.w r3, r3, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 23c1e: 4313 orrs r3, r2 + 23c9a: 4313 orrs r3, r2 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23c20: 0432 lsls r2, r6, #16 - 23c22: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 23c9c: 0432 lsls r2, r6, #16 + 23c9e: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 | ((data2 & 0x7F) << 24)); - 23c26: 4313 orrs r3, r2 + 23ca2: 4313 orrs r3, r2 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23c28: 4318 orrs r0, r3 - 23c2a: f007 fef1 bl 2ba10 - 23c2e: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 23c32: 681b ldr r3, [r3, #0] - 23c34: 445b add r3, fp - 23c36: 7a5b ldrb r3, [r3, #9] - 23c38: e6f4 b.n 23a24 - 23c3a: ea4f 130a mov.w r3, sl, lsl #4 - 23c3e: f248 0108 movw r1, #32776 ; 0x8008 + 23ca4: 4318 orrs r0, r3 + 23ca6: f007 ff27 bl 2baf8 + 23caa: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 23cae: 681b ldr r3, [r3, #0] + 23cb0: 445b add r3, fp + 23cb2: 7a5b ldrb r3, [r3, #9] + 23cb4: e71a b.n 23aec + 23cb6: ea4f 130a mov.w r3, sl, lsl #4 + 23cba: f248 0108 movw r1, #32776 ; 0x8008 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23c42: 0432 lsls r2, r6, #16 + 23cbe: 0432 lsls r2, r6, #16 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23c44: f505 6036 add.w r0, r5, #2912 ; 0xb60 - 23c48: b2db uxtb r3, r3 + 23cc0: f505 6026 add.w r0, r5, #2656 ; 0xa60 + 23cc4: b2db uxtb r3, r3 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23c4a: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 23cc6: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 | ((data2 & 0x7F) << 24)); - 23c4e: 4313 orrs r3, r2 + 23cca: 4313 orrs r3, r2 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23c50: 1e7a subs r2, r7, #1 - 23c52: 0212 lsls r2, r2, #8 - 23c54: f402 6270 and.w r2, r2, #3840 ; 0xf00 + 23ccc: 1e7a subs r2, r7, #1 + 23cce: 0212 lsls r2, r2, #8 + 23cd0: f402 6270 and.w r2, r2, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 23c58: 4313 orrs r3, r2 - 23c5a: ea4f 6209 mov.w r2, r9, lsl #24 - 23c5e: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 - 23c62: 4313 orrs r3, r2 + 23cd4: 4313 orrs r3, r2 + 23cd6: ea4f 6209 mov.w r2, r9, lsl #24 + 23cda: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 + 23cde: 4313 orrs r3, r2 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23c64: 4319 orrs r1, r3 - 23c66: f004 fca5 bl 285b4 + 23ce0: 4319 orrs r1, r3 + 23ce2: f004 fcdd bl 286a0 + if(isMidiBlePort(port) && globals.bleConnected()){ + 23ce6: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + if(port>127){ + 23cea: f1b8 0f00 cmp.w r8, #0 + 23cee: 6dd8 ldr r0, [r3, #92] ; 0x5c + 23cf0: f6bf af1a bge.w 23b28 + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 23cf4: 681a ldr r2, [r3, #0] + 23cf6: f004 010f and.w r1, r4, #15 + 23cfa: eb02 0241 add.w r2, r2, r1, lsl #1 + 23cfe: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 23d02: e712 b.n 23b2a + Port.write(status); + 23d04: f505 5a80 add.w sl, r5, #4096 ; 0x1000 + writeData(BMC_MIDI_NOTE_OFF | (channel-1), note, vel); + 23d08: 1e79 subs r1, r7, #1 + Port.write(status); + 23d0a: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + writeData(BMC_MIDI_NOTE_OFF | (channel-1), note, vel); + 23d0e: f061 017f orn r1, r1, #127 ; 0x7f + Port.write(status); + 23d12: 6803 ldr r3, [r0, #0] + 23d14: b2c9 uxtb r1, r1 + 23d16: 681b ldr r3, [r3, #0] + 23d18: 4798 blx r3 + Port.write(d1 & 0x7F); + 23d1a: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + 23d1e: f006 017f and.w r1, r6, #127 ; 0x7f + 23d22: 6803 ldr r3, [r0, #0] + 23d24: 681b ldr r3, [r3, #0] + 23d26: 4798 blx r3 + Port.write(d2 & 0x7F); + 23d28: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + 23d2c: f009 017f and.w r1, r9, #127 ; 0x7f + 23d30: 6803 ldr r3, [r0, #0] + 23d32: 681b ldr r3, [r3, #0] + 23d34: 4798 blx r3 globals.setMidiOutActivity(); - 23c6a: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 23d36: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 bitSet(flags, bit); - 23c6e: 6dd8 ldr r0, [r3, #92] ; 0x5c - 23c70: e6f0 b.n 23a54 - 23c72: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 23c76: f004 040f and.w r4, r4, #15 - 23c7a: 681b ldr r3, [r3, #0] - 23c7c: eb03 0344 add.w r3, r3, r4, lsl #1 - 23c80: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 - 23c84: e715 b.n 23ab2 - 23c86: bf00 nop - 23c88: 2000bae8 .word 0x2000bae8 - 23c8c: 20004ba8 .word 0x20004ba8 - 23c90: 200023ec .word 0x200023ec - 23c94: 20003774 .word 0x20003774 - 23c98: 20001ce0 .word 0x20001ce0 - 23c9c: 20003760 .word 0x20003760 - 23ca0: 20003768 .word 0x20003768 - -00023ca4 : + 23d3a: 6dd8 ldr r0, [r3, #92] ; 0x5c + } + 23d3c: e6fa b.n 23b34 + 23d3e: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 23d42: f004 040f and.w r4, r4, #15 + 23d46: 681b ldr r3, [r3, #0] + 23d48: eb03 0344 add.w r3, r3, r4, lsl #1 + 23d4c: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 + 23d50: e71f b.n 23b92 + 23d52: bf00 nop + 23d54: 2000bb08 .word 0x2000bb08 + 23d58: 20004c68 .word 0x20004c68 + 23d5c: 200023ec .word 0x200023ec + 23d60: 20003834 .word 0x20003834 + 23d64: 20001ce0 .word 0x20001ce0 + 23d68: 20003820 .word 0x20003820 + 23d6c: 20003828 .word 0x20003828 + +00023d70 : int16_t value, uint8_t cable){ - 23ca4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 23d70: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(port>127){ - 23ca8: fa4f f881 sxtb.w r8, r1 - 23cac: b087 sub sp, #28 - 23cae: 460d mov r5, r1 - 23cb0: 4606 mov r6, r0 - 23cb2: f1b8 0f00 cmp.w r8, #0 - 23cb6: 4691 mov r9, r2 - 23cb8: 461f mov r7, r3 - 23cba: f89d a040 ldrb.w sl, [sp, #64] ; 0x40 - 23cbe: f2c0 810e blt.w 23ede + 23d74: fa4f f981 sxtb.w r9, r1 + 23d78: b087 sub sp, #28 + 23d7a: 460d mov r5, r1 + 23d7c: 4606 mov r6, r0 + 23d7e: f1b9 0f00 cmp.w r9, #0 + 23d82: 4690 mov r8, r2 + 23d84: 461f mov r7, r3 + 23d86: f89d b040 ldrb.w fp, [sp, #64] ; 0x40 + 23d8a: f2c0 80e4 blt.w 23f56 if(isMidiUsbPort(port)){ - 23cc2: 07cb lsls r3, r1, #31 - 23cc4: d54c bpl.n 23d60 + 23d8e: 07cb lsls r3, r1, #31 + 23d90: d544 bpl.n 23e1c if (cable >= MIDI_NUM_CABLES) return; - 23cc6: f1ba 0f00 cmp.w sl, #0 - 23cca: d149 bne.n 23d60 + 23d92: f1bb 0f00 cmp.w fp, #0 + 23d96: d141 bne.n 23e1c value += 8192; - 23ccc: f307 020d ssat r2, #14, r7 + 23d98: f307 020d ssat r2, #14, r7 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23cd0: f109 3bff add.w fp, r9, #4294967295 ; 0xffffffff + 23d9c: f108 3aff add.w sl, r8, #4294967295 ; 0xffffffff usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23cd4: f24e 000e movw r0, #57358 ; 0xe00e + 23da0: f24e 000e movw r0, #57358 ; 0xe00e value += 8192; - 23cd8: f502 5200 add.w r2, r2, #8192 ; 0x2000 + 23da4: f502 5200 add.w r2, r2, #8192 ; 0x2000 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23cdc: ea4f 230b mov.w r3, fp, lsl #8 - 23ce0: 0411 lsls r1, r2, #16 - 23ce2: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 23da8: ea4f 230a mov.w r3, sl, lsl #8 + 23dac: 0411 lsls r1, r2, #16 + 23dae: f403 6370 and.w r3, r3, #3840 ; 0xf00 send(0xE0, value, value >> 7, channel, cable); - 23ce6: 11d2 asrs r2, r2, #7 + 23db2: 11d2 asrs r2, r2, #7 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23ce8: f401 01fe and.w r1, r1, #8323072 ; 0x7f0000 + 23db4: f401 01fe and.w r1, r1, #8323072 ; 0x7f0000 | ((data2 & 0x7F) << 24)); - 23cec: 430b orrs r3, r1 - 23cee: ea43 6302 orr.w r3, r3, r2, lsl #24 + 23db8: 430b orrs r3, r1 + 23dba: ea43 6302 orr.w r3, r3, r2, lsl #24 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23cf2: 4318 orrs r0, r3 - 23cf4: f007 fe8c bl 2ba10 + 23dbe: 4318 orrs r0, r3 + 23dc0: f007 fe9a bl 2baf8 int16_t value, uint8_t cable){ - 23cf8: 462b mov r3, r5 + 23dc4: 462b mov r3, r5 if(isMidiSerialAPort(port)){ - 23cfa: 079c lsls r4, r3, #30 - 23cfc: f100 80c5 bmi.w 23e8a - 23d00: f1b8 0f00 cmp.w r8, #0 + 23dc6: 0798 lsls r0, r3, #30 + 23dc8: f100 80a8 bmi.w 23f1c } void sendPitchBend(int pitch, uint8_t channel){ int bend = int(pitch - int(-8192)); writeData(BMC_MIDI_PITCH_BEND | (channel-1), (bend & 0x7f), (bend >> 7) & 0x7f); - 23d04: fa5f f48b uxtb.w r4, fp - 23d08: f2c0 80df blt.w 23eca - 23d0c: 462b mov r3, r5 - if(isMidiSerialBPort(port)){ - 23d0e: 0758 lsls r0, r3, #29 - 23d10: f100 8093 bmi.w 23e3a - 23d14: f1b8 0f00 cmp.w r8, #0 + 23dcc: fa5f f48a uxtb.w r4, sl + 23dd0: f1b9 0f00 cmp.w r9, #0 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23d18: f8d6 0108 ldr.w r0, [r6, #264] ; 0x108 + 23dd4: f8d6 0108 ldr.w r0, [r6, #264] ; 0x108 if(port>127){ - 23d1c: f2c0 80ad blt.w 23e7a - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23d20: 462b mov r3, r5 + 23dd8: db23 blt.n 23e22 if(isMidiHostPort(port) && globals.hostConnected()){ - 23d22: f013 0f20 tst.w r3, #32 + 23dda: 06aa lsls r2, r5, #26 + 23ddc: d42a bmi.n 23e34 return bitRead(flags, bit); - 23d26: 6dc3 ldr r3, [r0, #92] ; 0x5c - 23d28: d002 beq.n 23d30 - 23d2a: 0719 lsls r1, r3, #28 - 23d2c: f100 8126 bmi.w 23f7c + 23dde: 462a mov r2, r5 + 23de0: 6dc3 ldr r3, [r0, #92] ; 0x5c + if(isMidiBlePort(port) && globals.bleConnected()){ + 23de2: 0651 lsls r1, r2, #25 + 23de4: d502 bpl.n 23dec + 23de6: 06da lsls r2, r3, #27 + 23de8: f100 812f bmi.w 2404a bitSet(flags, bit); - 23d30: f043 0302 orr.w r3, r3, #2 + 23dec: f043 0302 orr.w r3, r3, #2 if(value==0){ - 23d34: 2f00 cmp r7, #0 - 23d36: 65c3 str r3, [r0, #92] ; 0x5c - 23d38: d115 bne.n 23d66 + 23df0: 2f00 cmp r7, #0 + 23df2: 65c3 str r3, [r0, #92] ; 0x5c + 23df4: d128 bne.n 23e48 channel[ch].pitch = (t_value & 0x7F); - 23d3a: f004 040f and.w r4, r4, #15 - 23d3e: eb04 1484 add.w r4, r4, r4, lsl #6 - 23d42: eb06 0444 add.w r4, r6, r4, lsl #1 - 23d46: f884 710e strb.w r7, [r4, #270] ; 0x10e + 23df6: f004 040f and.w r4, r4, #15 + 23dfa: eb04 1484 add.w r4, r4, r4, lsl #6 + 23dfe: eb06 0444 add.w r4, r6, r4, lsl #1 + 23e02: f884 710e strb.w r7, [r4, #270] ; 0x10e bitWrite(flags, bit, value); - 23d4a: 6dc3 ldr r3, [r0, #92] ; 0x5c - 23d4c: f043 0320 orr.w r3, r3, #32 - 23d50: 65c3 str r3, [r0, #92] ; 0x5c + 23e06: 6dc3 ldr r3, [r0, #92] ; 0x5c + 23e08: f043 0320 orr.w r3, r3, #32 + 23e0c: 65c3 str r3, [r0, #92] ; 0x5c return bitRead(flags, bit); - 23d52: f8b0 3060 ldrh.w r3, [r0, #96] ; 0x60 + 23e0e: f8b0 3060 ldrh.w r3, [r0, #96] ; 0x60 if(globals.getMidiOutDebug()){ - 23d56: 069a lsls r2, r3, #26 - 23d58: d425 bmi.n 23da6 + 23e12: 0699 lsls r1, r3, #26 + 23e14: d438 bmi.n 23e88 } - 23d5a: b007 add sp, #28 - 23d5c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 23d60: f109 3bff add.w fp, r9, #4294967295 ; 0xffffffff - 23d64: e7c8 b.n 23cf8 + 23e16: b007 add sp, #28 + 23e18: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 23e1c: f108 3aff add.w sl, r8, #4294967295 ; 0xffffffff + 23e20: e7d0 b.n 23dc4 + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 23e22: f005 020f and.w r2, r5, #15 + 23e26: 6803 ldr r3, [r0, #0] + 23e28: eb03 0342 add.w r3, r3, r2, lsl #1 + 23e2c: f893 2ef9 ldrb.w r2, [r3, #3833] ; 0xef9 + if(isMidiHostPort(port) && globals.hostConnected()){ + 23e30: 0691 lsls r1, r2, #26 + 23e32: d5d5 bpl.n 23de0 + 23e34: 6dc3 ldr r3, [r0, #92] ; 0x5c + 23e36: 071a lsls r2, r3, #28 + 23e38: f100 80dc bmi.w 23ff4 + if(port>127){ + 23e3c: f1b9 0f00 cmp.w r9, #0 + 23e40: f2c0 80fb blt.w 2403a + 23e44: 462a mov r2, r5 + 23e46: e7cc b.n 23de2 } else if(value>0){ - 23d66: f340 80e6 ble.w 23f36 + 23e48: f340 80b1 ble.w 23fae num += in_range / 2; - 23d6a: f640 72ff movw r2, #4095 ; 0xfff - 23d6e: 1e7b subs r3, r7, #1 - 23d70: 217e movs r1, #126 ; 0x7e - 23d72: f004 040f and.w r4, r4, #15 - 23d76: fb13 2301 smlabb r3, r3, r1, r2 + 23e4c: 217e movs r1, #126 ; 0x7e + 23e4e: f640 72ff movw r2, #4095 ; 0xfff + 23e52: 1e7b subs r3, r7, #1 + 23e54: f004 040f and.w r4, r4, #15 + 23e58: fb13 2301 smlabb r3, r3, r1, r2 long result = num / in_range + out_min; - 23d7a: 4a95 ldr r2, [pc, #596] ; (23fd0 ) - 23d7c: eb04 1484 add.w r4, r4, r4, lsl #6 - 23d80: 085b lsrs r3, r3, #1 - 23d82: eb06 0444 add.w r4, r6, r4, lsl #1 - 23d86: fba2 2303 umull r2, r3, r2, r3 - 23d8a: 0adb lsrs r3, r3, #11 - 23d8c: 3301 adds r3, #1 - 23d8e: f003 037f and.w r3, r3, #127 ; 0x7f - 23d92: f884 310e strb.w r3, [r4, #270] ; 0x10e + 23e5c: 4a8e ldr r2, [pc, #568] ; (24098 ) + 23e5e: eb04 1484 add.w r4, r4, r4, lsl #6 + 23e62: 085b lsrs r3, r3, #1 + 23e64: eb06 0444 add.w r4, r6, r4, lsl #1 + 23e68: fba2 2303 umull r2, r3, r2, r3 + 23e6c: 0adb lsrs r3, r3, #11 + 23e6e: 3301 adds r3, #1 + 23e70: f003 037f and.w r3, r3, #127 ; 0x7f + 23e74: f884 310e strb.w r3, [r4, #270] ; 0x10e bitWrite(flags, bit, value); - 23d96: 6dc3 ldr r3, [r0, #92] ; 0x5c - 23d98: f043 0320 orr.w r3, r3, #32 - 23d9c: 65c3 str r3, [r0, #92] ; 0x5c + 23e78: 6dc3 ldr r3, [r0, #92] ; 0x5c + 23e7a: f043 0320 orr.w r3, r3, #32 + 23e7e: 65c3 str r3, [r0, #92] ; 0x5c return bitRead(flags, bit); - 23d9e: f8b0 3060 ldrh.w r3, [r0, #96] ; 0x60 + 23e80: f8b0 3060 ldrh.w r3, [r0, #96] ; 0x60 if(globals.getMidiOutDebug()){ - 23da2: 069a lsls r2, r3, #26 - 23da4: d5d9 bpl.n 23d5a - 23da6: 4b8b ldr r3, [pc, #556] ; (23fd4 ) + 23e84: 0699 lsls r1, r3, #26 + 23e86: d5c6 bpl.n 23e16 + 23e88: 4b84 ldr r3, [pc, #528] ; (2409c ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 23da8: 220a movs r2, #10 - 23daa: 488b ldr r0, [pc, #556] ; (23fd8 ) - 23dac: 6819 ldr r1, [r3, #0] - 23dae: 2300 movs r3, #0 - 23db0: f006 f87c bl 29eac - 23db4: 2101 movs r1, #1 - 23db6: 4889 ldr r0, [pc, #548] ; (23fdc ) - 23db8: f008 fbc6 bl 2c548 - if(port>127){ - 23dbc: f1b8 0f00 cmp.w r8, #0 - 23dc0: f2c0 80fc blt.w 23fbc + 23e8a: 220a movs r2, #10 + 23e8c: 4884 ldr r0, [pc, #528] ; (240a0 ) + 23e8e: 6819 ldr r1, [r3, #0] + 23e90: 2300 movs r3, #0 + 23e92: f006 f881 bl 29f98 + 23e96: 2101 movs r1, #1 + 23e98: 4882 ldr r0, [pc, #520] ; (240a4 ) + 23e9a: f008 fbc9 bl 2c630 + 23e9e: f1b9 0f00 cmp.w r9, #0 + 23ea2: f2c0 80ef blt.w 24084 BMC_PRINTLN( - 23dc4: 4629 mov r1, r5 - 23dc6: a802 add r0, sp, #8 - 23dc8: f7df fcb6 bl 3738 - 23dcc: a902 add r1, sp, #8 - 23dce: 4882 ldr r0, [pc, #520] ; (23fd8 ) - 23dd0: f006 f81e bl 29e10 - 23dd4: a802 add r0, sp, #8 - 23dd6: f006 f94f bl 2a078 - 23dda: 2101 movs r1, #1 - 23ddc: 487f ldr r0, [pc, #508] ; (23fdc ) - 23dde: f008 fbb3 bl 2c548 - 23de2: 2113 movs r1, #19 - 23de4: 487e ldr r0, [pc, #504] ; (23fe0 ) - 23de6: f008 fbaf bl 2c548 - 23dea: 2101 movs r1, #1 - 23dec: 487b ldr r0, [pc, #492] ; (23fdc ) - 23dee: f008 fbab bl 2c548 - 23df2: 2108 movs r1, #8 - 23df4: 487b ldr r0, [pc, #492] ; (23fe4 ) - 23df6: f008 fba7 bl 2c548 - 23dfa: 2101 movs r1, #1 - 23dfc: 4877 ldr r0, [pc, #476] ; (23fdc ) - 23dfe: f008 fba3 bl 2c548 + 23ea6: 4629 mov r1, r5 + 23ea8: a802 add r0, sp, #8 + 23eaa: f7df fc45 bl 3738 + 23eae: a902 add r1, sp, #8 + 23eb0: 487b ldr r0, [pc, #492] ; (240a0 ) + 23eb2: f006 f823 bl 29efc + 23eb6: a802 add r0, sp, #8 + 23eb8: f006 f952 bl 2a160 + 23ebc: 2101 movs r1, #1 + 23ebe: 4879 ldr r0, [pc, #484] ; (240a4 ) + 23ec0: f008 fbb6 bl 2c630 + 23ec4: 2113 movs r1, #19 + 23ec6: 4878 ldr r0, [pc, #480] ; (240a8 ) + 23ec8: f008 fbb2 bl 2c630 + 23ecc: 2101 movs r1, #1 + 23ece: 4875 ldr r0, [pc, #468] ; (240a4 ) + 23ed0: f008 fbae bl 2c630 + 23ed4: 2108 movs r1, #8 + 23ed6: 4875 ldr r0, [pc, #468] ; (240ac ) + 23ed8: f008 fbaa bl 2c630 + 23edc: 2101 movs r1, #1 + 23ede: 4871 ldr r0, [pc, #452] ; (240a4 ) + 23ee0: f008 fba6 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 23e02: 2300 movs r3, #0 - 23e04: 220a movs r2, #10 - 23e06: 4649 mov r1, r9 - 23e08: 4873 ldr r0, [pc, #460] ; (23fd8 ) - 23e0a: f006 f84f bl 29eac - 23e0e: 2101 movs r1, #1 - 23e10: 4872 ldr r0, [pc, #456] ; (23fdc ) - 23e12: f008 fb99 bl 2c548 - 23e16: 2106 movs r1, #6 - 23e18: 4873 ldr r0, [pc, #460] ; (23fe8 ) - 23e1a: f008 fb95 bl 2c548 - 23e1e: 2101 movs r1, #1 - 23e20: 486e ldr r0, [pc, #440] ; (23fdc ) - 23e22: f008 fb91 bl 2c548 + 23ee4: 2300 movs r3, #0 + 23ee6: 220a movs r2, #10 + 23ee8: 4641 mov r1, r8 + 23eea: 486d ldr r0, [pc, #436] ; (240a0 ) + 23eec: f006 f854 bl 29f98 + 23ef0: 2101 movs r1, #1 + 23ef2: 486c ldr r0, [pc, #432] ; (240a4 ) + 23ef4: f008 fb9c bl 2c630 + 23ef8: 2106 movs r1, #6 + 23efa: 486d ldr r0, [pc, #436] ; (240b0 ) + 23efc: f008 fb98 bl 2c630 + 23f00: 2101 movs r1, #1 + 23f02: 4868 ldr r0, [pc, #416] ; (240a4 ) + 23f04: f008 fb94 bl 2c630 size_t print(int n) { return print((long)n); } - 23e26: 4639 mov r1, r7 - 23e28: 486b ldr r0, [pc, #428] ; (23fd8 ) - 23e2a: f006 f817 bl 29e5c + 23f08: 4639 mov r1, r7 + 23f0a: 4865 ldr r0, [pc, #404] ; (240a0 ) + 23f0c: f006 f81c bl 29f48 size_t println(int n) { return print(n) + println(); } - 23e2e: 486a ldr r0, [pc, #424] ; (23fd8 ) + 23f10: 4863 ldr r0, [pc, #396] ; (240a0 ) } - 23e30: b007 add sp, #28 - 23e32: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 23e36: f006 b81d b.w 29e74 - Port.write(status); - 23e3a: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - int bend = int(pitch - int(-8192)); - 23e3e: f507 5300 add.w r3, r7, #8192 ; 0x2000 - Port.write(status); - 23e42: f044 01e0 orr.w r1, r4, #224 ; 0xe0 - 23e46: 6802 ldr r2, [r0, #0] - int bend = int(pitch - int(-8192)); - 23e48: 9301 str r3, [sp, #4] - Port.write(status); - 23e4a: 6812 ldr r2, [r2, #0] - 23e4c: 4790 blx r2 - Port.write(d1 & 0x7F); - 23e4e: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - 23e52: 9b01 ldr r3, [sp, #4] - 23e54: 6802 ldr r2, [r0, #0] - 23e56: f003 017f and.w r1, r3, #127 ; 0x7f - 23e5a: 6812 ldr r2, [r2, #0] - 23e5c: 4790 blx r2 - 23e5e: 9b01 ldr r3, [sp, #4] - Port.write(d2 & 0x7F); - 23e60: f8d6 0a48 ldr.w r0, [r6, #2632] ; 0xa48 - 23e64: f3c3 11c6 ubfx r1, r3, #7, #7 - 23e68: 6803 ldr r3, [r0, #0] - 23e6a: 681b ldr r3, [r3, #0] - 23e6c: 4798 blx r3 - 23e6e: f1b8 0f00 cmp.w r8, #0 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23e72: f8d6 0108 ldr.w r0, [r6, #264] ; 0x108 - if(port>127){ - 23e76: f6bf af53 bge.w 23d20 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23e7a: f005 020f and.w r2, r5, #15 - 23e7e: 6803 ldr r3, [r0, #0] - 23e80: eb03 0342 add.w r3, r3, r2, lsl #1 - 23e84: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 - 23e88: e74b b.n 23d22 + 23f12: b007 add sp, #28 + 23f14: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 23f18: f006 b822 b.w 29f60 Port.write(status); - 23e8a: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 + 23f1c: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 writeData(BMC_MIDI_PITCH_BEND | (channel-1), (bend & 0x7f), (bend >> 7) & 0x7f); - 23e8e: f06b 011f orn r1, fp, #31 - 23e92: fa5f f48b uxtb.w r4, fp + 23f20: f06a 011f orn r1, sl, #31 + 23f24: fa5f f48a uxtb.w r4, sl Port.write(status); - 23e96: 6803 ldr r3, [r0, #0] - 23e98: b2c9 uxtb r1, r1 - 23e9a: 681b ldr r3, [r3, #0] - 23e9c: 4798 blx r3 + 23f28: 6803 ldr r3, [r0, #0] + 23f2a: b2c9 uxtb r1, r1 + 23f2c: 681b ldr r3, [r3, #0] + 23f2e: 4798 blx r3 Port.write(d1 & 0x7F); - 23e9e: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 + 23f30: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 int bend = int(pitch - int(-8192)); - 23ea2: f507 5300 add.w r3, r7, #8192 ; 0x2000 - 23ea6: 6802 ldr r2, [r0, #0] - 23ea8: f003 017f and.w r1, r3, #127 ; 0x7f - 23eac: 9301 str r3, [sp, #4] - 23eae: 6812 ldr r2, [r2, #0] - 23eb0: 4790 blx r2 - 23eb2: 9b01 ldr r3, [sp, #4] + 23f34: f507 5300 add.w r3, r7, #8192 ; 0x2000 + 23f38: 6802 ldr r2, [r0, #0] + 23f3a: f003 017f and.w r1, r3, #127 ; 0x7f + 23f3e: 9301 str r3, [sp, #4] + 23f40: 6812 ldr r2, [r2, #0] + 23f42: 4790 blx r2 + 23f44: 9b01 ldr r3, [sp, #4] Port.write(d2 & 0x7F); - 23eb4: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 - 23eb8: f3c3 11c6 ubfx r1, r3, #7, #7 - 23ebc: 6803 ldr r3, [r0, #0] - 23ebe: 681b ldr r3, [r3, #0] - 23ec0: 4798 blx r3 - if(port>127){ - 23ec2: f1b8 0f00 cmp.w r8, #0 - 23ec6: f6bf af21 bge.w 23d0c + 23f46: f8d6 0938 ldr.w r0, [r6, #2360] ; 0x938 + 23f4a: f3c3 11c6 ubfx r1, r3, #7, #7 + 23f4e: 6803 ldr r3, [r0, #0] + 23f50: 681b ldr r3, [r3, #0] + 23f52: 4798 blx r3 + } + 23f54: e73c b.n 23dd0 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23eca: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 23ece: f005 020f and.w r2, r5, #15 - 23ed2: 681b ldr r3, [r3, #0] - 23ed4: eb03 0342 add.w r3, r3, r2, lsl #1 - 23ed8: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 - 23edc: e717 b.n 23d0e - 23ede: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 - 23ee2: 681a ldr r2, [r3, #0] - 23ee4: f001 030f and.w r3, r1, #15 - 23ee8: f503 63ef add.w r3, r3, #1912 ; 0x778 - 23eec: eb02 0243 add.w r2, r2, r3, lsl #1 - 23ef0: 005c lsls r4, r3, #1 - 23ef2: 7a53 ldrb r3, [r2, #9] + 23f56: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 + 23f5a: 681a ldr r2, [r3, #0] + 23f5c: f001 030f and.w r3, r1, #15 + 23f60: f503 63ef add.w r3, r3, #1912 ; 0x778 + 23f64: eb02 0243 add.w r2, r2, r3, lsl #1 + 23f68: 005c lsls r4, r3, #1 + 23f6a: 7a53 ldrb r3, [r2, #9] if(isMidiUsbPort(port)){ - 23ef4: 07da lsls r2, r3, #31 - 23ef6: d53e bpl.n 23f76 + 23f6c: 07da lsls r2, r3, #31 + 23f6e: d53e bpl.n 23fee if (cable >= MIDI_NUM_CABLES) return; - 23ef8: f1ba 0f00 cmp.w sl, #0 - 23efc: d13b bne.n 23f76 + 23f70: f1bb 0f00 cmp.w fp, #0 + 23f74: d13b bne.n 23fee value += 8192; - 23efe: f307 030d ssat r3, #14, r7 + 23f76: f307 030d ssat r3, #14, r7 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23f02: f109 3bff add.w fp, r9, #4294967295 ; 0xffffffff + 23f7a: f108 3aff add.w sl, r8, #4294967295 ; 0xffffffff usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23f06: f24e 000e movw r0, #57358 ; 0xe00e + 23f7e: f24e 000e movw r0, #57358 ; 0xe00e value += 8192; - 23f0a: f503 5300 add.w r3, r3, #8192 ; 0x2000 + 23f82: f503 5300 add.w r3, r3, #8192 ; 0x2000 send(0xE0, value, value >> 7, channel, cable); - 23f0e: 11da asrs r2, r3, #7 + 23f86: 11da asrs r2, r3, #7 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23f10: 0419 lsls r1, r3, #16 - 23f12: ea4f 230b mov.w r3, fp, lsl #8 - 23f16: f401 01fe and.w r1, r1, #8323072 ; 0x7f0000 - 23f1a: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 23f88: 0419 lsls r1, r3, #16 + 23f8a: ea4f 230a mov.w r3, sl, lsl #8 + 23f8e: f401 01fe and.w r1, r1, #8323072 ; 0x7f0000 + 23f92: f403 6370 and.w r3, r3, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 23f1e: 430b orrs r3, r1 - 23f20: ea43 6302 orr.w r3, r3, r2, lsl #24 + 23f96: 430b orrs r3, r1 + 23f98: ea43 6302 orr.w r3, r3, r2, lsl #24 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23f24: 4318 orrs r0, r3 - 23f26: f007 fd73 bl 2ba10 - 23f2a: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 23f2e: 681b ldr r3, [r3, #0] - 23f30: 4423 add r3, r4 - 23f32: 7a5b ldrb r3, [r3, #9] - 23f34: e6e1 b.n 23cfa + 23f9c: 4318 orrs r0, r3 + 23f9e: f007 fdab bl 2baf8 + 23fa2: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 + 23fa6: 681b ldr r3, [r3, #0] + 23fa8: 4423 add r3, r4 + 23faa: 7a5b ldrb r3, [r3, #9] + 23fac: e70b b.n 23dc6 num += in_range / 2; - 23f36: f640 73ff movw r3, #4095 ; 0xfff - 23f3a: 217e movs r1, #126 ; 0x7e - 23f3c: f507 5200 add.w r2, r7, #8192 ; 0x2000 - 23f40: f004 040f and.w r4, r4, #15 - 23f44: fb12 3201 smlabb r2, r2, r1, r3 + 23fae: f640 73ff movw r3, #4095 ; 0xfff + 23fb2: 217e movs r1, #126 ; 0x7e + 23fb4: f507 5200 add.w r2, r7, #8192 ; 0x2000 + 23fb8: f004 040f and.w r4, r4, #15 + 23fbc: fb12 3201 smlabb r2, r2, r1, r3 long result = num / in_range + out_min; - 23f48: 4928 ldr r1, [pc, #160] ; (23fec ) - 23f4a: eb04 1484 add.w r4, r4, r4, lsl #6 - 23f4e: fb81 3102 smull r3, r1, r1, r2 - 23f52: 17d3 asrs r3, r2, #31 + 23fc0: 493c ldr r1, [pc, #240] ; (240b4 ) + 23fc2: eb04 1484 add.w r4, r4, r4, lsl #6 + 23fc6: fb81 3102 smull r3, r1, r1, r2 + 23fca: 17d3 asrs r3, r2, #31 if (in_range * num < 0) return result - 1; - 23f54: 2a00 cmp r2, #0 - 23f56: eb06 0444 add.w r4, r6, r4, lsl #1 + 23fcc: 2a00 cmp r2, #0 + 23fce: eb06 0444 add.w r4, r6, r4, lsl #1 long result = num / in_range + out_min; - 23f5a: 4411 add r1, r2 - 23f5c: ebc3 3321 rsb r3, r3, r1, asr #12 - 23f60: bfac ite ge - 23f62: 3b7f subge r3, #127 ; 0x7f + 23fd2: 4411 add r1, r2 + 23fd4: ebc3 3321 rsb r3, r3, r1, asr #12 + 23fd8: bfac ite ge + 23fda: 3b7f subge r3, #127 ; 0x7f if (in_range * num < 0) return result - 1; - 23f64: 3b80 sublt r3, #128 ; 0x80 - 23f66: f003 037f and.w r3, r3, #127 ; 0x7f - 23f6a: f884 310e strb.w r3, [r4, #270] ; 0x10e + 23fdc: 3b80 sublt r3, #128 ; 0x80 + 23fde: f003 037f and.w r3, r3, #127 ; 0x7f + 23fe2: f884 310e strb.w r3, [r4, #270] ; 0x10e bitWrite(flags, bit, value); - 23f6e: 6dc3 ldr r3, [r0, #92] ; 0x5c - 23f70: f043 0320 orr.w r3, r3, #32 + 23fe6: 6dc3 ldr r3, [r0, #92] ; 0x5c + 23fe8: f043 0320 orr.w r3, r3, #32 } - 23f74: e6ec b.n 23d50 - 23f76: f109 3bff add.w fp, r9, #4294967295 ; 0xffffffff - 23f7a: e6be b.n 23cfa + 23fec: e70e b.n 23e0c + 23fee: f108 3aff add.w sl, r8, #4294967295 ; 0xffffffff + 23ff2: e6e8 b.n 23dc6 value += 8192; - 23f7c: f307 020d ssat r2, #14, r7 + 23ff4: f307 020d ssat r2, #14, r7 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23f80: ea4f 130a mov.w r3, sl, lsl #4 + 23ff8: ea4f 130b mov.w r3, fp, lsl #4 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23f84: ea4f 2b0b mov.w fp, fp, lsl #8 + 23ffc: ea4f 2a0a mov.w sl, sl, lsl #8 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23f88: f24e 010e movw r1, #57358 ; 0xe00e + 24000: f24e 010e movw r1, #57358 ; 0xe00e value += 8192; - 23f8c: f502 5200 add.w r2, r2, #8192 ; 0x2000 + 24004: f502 5200 add.w r2, r2, #8192 ; 0x2000 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23f90: b2db uxtb r3, r3 + 24008: b2db uxtb r3, r3 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23f92: f40b 6b70 and.w fp, fp, #3840 ; 0xf00 + 2400a: f40a 6a70 and.w sl, sl, #3840 ; 0xf00 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23f96: f506 6036 add.w r0, r6, #2912 ; 0xb60 + 2400e: f506 6026 add.w r0, r6, #2656 ; 0xa60 send(0xE0, value, value >> 7, channel, cable); - 23f9a: ea4f 1ce2 mov.w ip, r2, asr #7 + 24012: ea4f 1ce2 mov.w ip, r2, asr #7 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23f9e: 0412 lsls r2, r2, #16 + 24016: 0412 lsls r2, r2, #16 | ((data2 & 0x7F) << 24)); - 23fa0: ea43 630c orr.w r3, r3, ip, lsl #24 + 24018: ea43 630c orr.w r3, r3, ip, lsl #24 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 23fa4: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 2401c: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 | ((data2 & 0x7F) << 24)); - 23fa8: ea43 030b orr.w r3, r3, fp - 23fac: 4313 orrs r3, r2 + 24020: ea43 030a orr.w r3, r3, sl + 24024: 4313 orrs r3, r2 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 23fae: 4319 orrs r1, r3 - 23fb0: f004 fb00 bl 285b4 + 24026: 4319 orrs r1, r3 + 24028: f004 fb3a bl 286a0 + if(isMidiBlePort(port) && globals.bleConnected()){ + 2402c: f8d6 0108 ldr.w r0, [r6, #264] ; 0x108 + if(port>127){ + 24030: f1b9 0f00 cmp.w r9, #0 + return bitRead(flags, bit); + 24034: 6dc3 ldr r3, [r0, #92] ; 0x5c + 24036: f6bf af05 bge.w 23e44 + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 2403a: 6802 ldr r2, [r0, #0] + 2403c: f005 010f and.w r1, r5, #15 + 24040: eb02 0241 add.w r2, r2, r1, lsl #1 + 24044: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 24048: e6cb b.n 23de2 + Port.write(status); + 2404a: f506 5b80 add.w fp, r6, #4096 ; 0x1000 + 2404e: f044 01e0 orr.w r1, r4, #224 ; 0xe0 + int bend = int(pitch - int(-8192)); + 24052: f507 5a00 add.w sl, r7, #8192 ; 0x2000 + Port.write(status); + 24056: f8db 0188 ldr.w r0, [fp, #392] ; 0x188 + 2405a: 6803 ldr r3, [r0, #0] + 2405c: 681b ldr r3, [r3, #0] + 2405e: 4798 blx r3 + Port.write(d1 & 0x7F); + 24060: f8db 0188 ldr.w r0, [fp, #392] ; 0x188 + 24064: f00a 017f and.w r1, sl, #127 ; 0x7f + 24068: 6803 ldr r3, [r0, #0] + 2406a: 681b ldr r3, [r3, #0] + 2406c: 4798 blx r3 + Port.write(d2 & 0x7F); + 2406e: f8db 0188 ldr.w r0, [fp, #392] ; 0x188 + 24072: f3ca 11c6 ubfx r1, sl, #7, #7 + 24076: 6803 ldr r3, [r0, #0] + 24078: 681b ldr r3, [r3, #0] + 2407a: 4798 blx r3 globals.setMidiOutActivity(); - 23fb4: f8d6 0108 ldr.w r0, [r6, #264] ; 0x108 + 2407c: f8d6 0108 ldr.w r0, [r6, #264] ; 0x108 bitSet(flags, bit); - 23fb8: 6dc3 ldr r3, [r0, #92] ; 0x5c - 23fba: e6b9 b.n 23d30 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 23fbc: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 - 23fc0: f005 050f and.w r5, r5, #15 - 23fc4: 681b ldr r3, [r3, #0] - 23fc6: eb03 0345 add.w r3, r3, r5, lsl #1 - 23fca: f893 5ef9 ldrb.w r5, [r3, #3833] ; 0xef9 - 23fce: e6f9 b.n 23dc4 - 23fd0: 80080081 .word 0x80080081 - 23fd4: 2000bae8 .word 0x2000bae8 - 23fd8: 20004ba8 .word 0x20004ba8 - 23fdc: 200023ec .word 0x200023ec - 23fe0: 20003794 .word 0x20003794 - 23fe4: 20001ce0 .word 0x20001ce0 - 23fe8: 20003830 .word 0x20003830 - 23fec: 80040021 .word 0x80040021 - -00023ff0 : + 24080: 6dc3 ldr r3, [r0, #92] ; 0x5c + } + 24082: e6b3 b.n 23dec + 24084: f8d6 3108 ldr.w r3, [r6, #264] ; 0x108 + 24088: f005 050f and.w r5, r5, #15 + 2408c: 681b ldr r3, [r3, #0] + 2408e: eb03 0345 add.w r3, r3, r5, lsl #1 + 24092: f893 5ef9 ldrb.w r5, [r3, #3833] ; 0xef9 + 24096: e706 b.n 23ea6 + 24098: 80080081 .word 0x80080081 + 2409c: 2000bb08 .word 0x2000bb08 + 240a0: 20004c68 .word 0x20004c68 + 240a4: 200023ec .word 0x200023ec + 240a8: 20003854 .word 0x20003854 + 240ac: 20001ce0 .word 0x20001ce0 + 240b0: 200038f0 .word 0x200038f0 + 240b4: 80040021 .word 0x80040021 + +000240b8 : uint8_t pressure, uint8_t cable){ - 23ff0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 240b8: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} if(port>127){ - 23ff4: fa4f f981 sxtb.w r9, r1 - 23ff8: b084 sub sp, #16 - 23ffa: 460c mov r4, r1 - 23ffc: 4605 mov r5, r0 - 23ffe: f1b9 0f00 cmp.w r9, #0 - 24002: 4690 mov r8, r2 - 24004: 461f mov r7, r3 - 24006: f89d a030 ldrb.w sl, [sp, #48] ; 0x30 - 2400a: f2c0 80bf blt.w 2418c + 240bc: fa4f f981 sxtb.w r9, r1 + 240c0: b084 sub sp, #16 + 240c2: 460c mov r4, r1 + 240c4: 4605 mov r5, r0 + 240c6: f1b9 0f00 cmp.w r9, #0 + 240ca: 4690 mov r8, r2 + 240cc: 461f mov r7, r3 + 240ce: f89d a030 ldrb.w sl, [sp, #48] ; 0x30 + 240d2: f2c0 80a0 blt.w 24216 if(isMidiUsbPort(port)){ - 2400e: 07cb lsls r3, r1, #31 - 24010: d421 bmi.n 24056 + 240d6: 07cb lsls r3, r1, #31 + 240d8: d42e bmi.n 24138 uint8_t pressure, uint8_t cable){ - 24012: 4623 mov r3, r4 + 240da: 4623 mov r3, r4 if(isMidiSerialAPort(port)){ - 24014: 0799 lsls r1, r3, #30 - 24016: f100 809a bmi.w 2414e - 2401a: f1b9 0f00 cmp.w r9, #0 - 2401e: f2c0 80ab blt.w 24178 - 24022: 4623 mov r3, r4 - if(isMidiSerialBPort(port)){ - 24024: 075a lsls r2, r3, #29 - 24026: d473 bmi.n 24110 - 24028: f1b9 0f00 cmp.w r9, #0 + 240dc: 079e lsls r6, r3, #30 + 240de: f100 8088 bmi.w 241f2 + 240e2: f1b9 0f00 cmp.w r9, #0 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 2402c: f8d5 6108 ldr.w r6, [r5, #264] ; 0x108 + 240e6: f8d5 6108 ldr.w r6, [r5, #264] ; 0x108 if(port>127){ - 24030: f2c0 8085 blt.w 2413e - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 24034: 4623 mov r3, r4 + 240ea: db04 blt.n 240f6 if(isMidiHostPort(port) && globals.hostConnected()){ - 24036: 069b lsls r3, r3, #26 + 240ec: 06a2 lsls r2, r4, #26 + 240ee: d40b bmi.n 24108 return bitRead(flags, bit); - 24038: 6df0 ldr r0, [r6, #92] ; 0x5c - 2403a: d502 bpl.n 24042 - 2403c: 0701 lsls r1, r0, #28 - 2403e: f100 80cb bmi.w 241d8 - 24042: f8b6 3060 ldrh.w r3, [r6, #96] ; 0x60 + 240f0: 4623 mov r3, r4 + 240f2: 6df0 ldr r0, [r6, #92] ; 0x5c + 240f4: e011 b.n 2411a + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 240f6: f004 020f and.w r2, r4, #15 + 240fa: 6833 ldr r3, [r6, #0] + 240fc: eb03 0342 add.w r3, r3, r2, lsl #1 + 24100: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 + 24104: 0698 lsls r0, r3, #26 + 24106: d5f4 bpl.n 240f2 + 24108: 6df0 ldr r0, [r6, #92] ; 0x5c + 2410a: 0701 lsls r1, r0, #28 + 2410c: f100 80a9 bmi.w 24262 + if(port>127){ + 24110: f1b9 0f00 cmp.w r9, #0 + 24114: f2c0 80c2 blt.w 2429c + 24118: 4623 mov r3, r4 + if(isMidiBlePort(port) && globals.bleConnected()){ + 2411a: 065a lsls r2, r3, #25 + 2411c: d502 bpl.n 24124 + 2411e: 06c3 lsls r3, r0, #27 + 24120: f100 80c4 bmi.w 242ac + 24124: f8b6 3060 ldrh.w r3, [r6, #96] ; 0x60 bitSet(flags, bit); - 24046: f040 0002 orr.w r0, r0, #2 + 24128: f040 0002 orr.w r0, r0, #2 if(globals.getMidiOutDebug()){ - 2404a: 069a lsls r2, r3, #26 - 2404c: 65f0 str r0, [r6, #92] ; 0x5c - 2404e: d413 bmi.n 24078 + 2412c: 0699 lsls r1, r3, #26 + 2412e: 65f0 str r0, [r6, #92] ; 0x5c + 24130: d413 bmi.n 2415a } - 24050: b004 add sp, #16 - 24052: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 24132: b004 add sp, #16 + 24134: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} if (cable >= MIDI_NUM_CABLES) return; - 24056: f1ba 0f00 cmp.w sl, #0 - 2405a: d1da bne.n 24012 + 24138: f1ba 0f00 cmp.w sl, #0 + 2413c: d1cd bne.n 240da | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2405c: 1e53 subs r3, r2, #1 - 2405e: 043a lsls r2, r7, #16 + 2413e: 1e53 subs r3, r2, #1 + 24140: 043a lsls r2, r7, #16 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 24060: f24d 000d movw r0, #53261 ; 0xd00d + 24142: f24d 000d movw r0, #53261 ; 0xd00d | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 24064: 021b lsls r3, r3, #8 - 24066: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 - 2406a: f403 6370 and.w r3, r3, #3840 ; 0xf00 - 2406e: 4313 orrs r3, r2 + 24146: 021b lsls r3, r3, #8 + 24148: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 2414c: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 24150: 4313 orrs r3, r2 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 24070: 4318 orrs r0, r3 - 24072: f007 fccd bl 2ba10 - if(port>127){ - 24076: e7cc b.n 24012 - 24078: 4b69 ldr r3, [pc, #420] ; (24220 ) + 24152: 4318 orrs r0, r3 + 24154: f007 fcd0 bl 2baf8 + 24158: e7bf b.n 240da + 2415a: 4b65 ldr r3, [pc, #404] ; (242f0 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 2407a: 220a movs r2, #10 - 2407c: 4869 ldr r0, [pc, #420] ; (24224 ) - 2407e: 6819 ldr r1, [r3, #0] - 24080: 2300 movs r3, #0 - 24082: f005 ff13 bl 29eac - 24086: 2101 movs r1, #1 - 24088: 4867 ldr r0, [pc, #412] ; (24228 ) - 2408a: f008 fa5d bl 2c548 - 2408e: f1b9 0f00 cmp.w r9, #0 - 24092: f2c0 80bb blt.w 2420c + 2415c: 220a movs r2, #10 + 2415e: 4865 ldr r0, [pc, #404] ; (242f4 ) + 24160: 6819 ldr r1, [r3, #0] + 24162: 2300 movs r3, #0 + 24164: f005 ff18 bl 29f98 + 24168: 2101 movs r1, #1 + 2416a: 4863 ldr r0, [pc, #396] ; (242f8 ) + 2416c: f008 fa60 bl 2c630 + 24170: f1b9 0f00 cmp.w r9, #0 + 24174: f2c0 80b1 blt.w 242da BMC_PRINTLN( - 24096: 4621 mov r1, r4 - 24098: 4668 mov r0, sp - 2409a: f7df fb4d bl 3738 - 2409e: 4669 mov r1, sp - 240a0: 4860 ldr r0, [pc, #384] ; (24224 ) - 240a2: f005 feb5 bl 29e10 - 240a6: 4668 mov r0, sp - 240a8: f005 ffe6 bl 2a078 - 240ac: 2101 movs r1, #1 - 240ae: 485e ldr r0, [pc, #376] ; (24228 ) - 240b0: f008 fa4a bl 2c548 - 240b4: 2114 movs r1, #20 - 240b6: 485d ldr r0, [pc, #372] ; (2422c ) - 240b8: f008 fa46 bl 2c548 - 240bc: 2101 movs r1, #1 - 240be: 485a ldr r0, [pc, #360] ; (24228 ) - 240c0: f008 fa42 bl 2c548 - 240c4: 2108 movs r1, #8 - 240c6: 485a ldr r0, [pc, #360] ; (24230 ) - 240c8: f008 fa3e bl 2c548 - 240cc: 2101 movs r1, #1 - 240ce: 4856 ldr r0, [pc, #344] ; (24228 ) - 240d0: f008 fa3a bl 2c548 + 24178: 4621 mov r1, r4 + 2417a: 4668 mov r0, sp + 2417c: f7df fadc bl 3738 + 24180: 4669 mov r1, sp + 24182: 485c ldr r0, [pc, #368] ; (242f4 ) + 24184: f005 feba bl 29efc + 24188: 4668 mov r0, sp + 2418a: f005 ffe9 bl 2a160 + 2418e: 2101 movs r1, #1 + 24190: 4859 ldr r0, [pc, #356] ; (242f8 ) + 24192: f008 fa4d bl 2c630 + 24196: 2114 movs r1, #20 + 24198: 4858 ldr r0, [pc, #352] ; (242fc ) + 2419a: f008 fa49 bl 2c630 + 2419e: 2101 movs r1, #1 + 241a0: 4855 ldr r0, [pc, #340] ; (242f8 ) + 241a2: f008 fa45 bl 2c630 + 241a6: 2108 movs r1, #8 + 241a8: 4855 ldr r0, [pc, #340] ; (24300 ) + 241aa: f008 fa41 bl 2c630 + 241ae: 2101 movs r1, #1 + 241b0: 4851 ldr r0, [pc, #324] ; (242f8 ) + 241b2: f008 fa3d bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 240d4: 2300 movs r3, #0 - 240d6: 220a movs r2, #10 - 240d8: 4641 mov r1, r8 - 240da: 4852 ldr r0, [pc, #328] ; (24224 ) - 240dc: f005 fee6 bl 29eac - 240e0: 2101 movs r1, #1 - 240e2: 4851 ldr r0, [pc, #324] ; (24228 ) - 240e4: f008 fa30 bl 2c548 - 240e8: 2109 movs r1, #9 - 240ea: 4852 ldr r0, [pc, #328] ; (24234 ) - 240ec: f008 fa2c bl 2c548 - 240f0: 2101 movs r1, #1 - 240f2: 484d ldr r0, [pc, #308] ; (24228 ) - 240f4: f008 fa28 bl 2c548 - 240f8: 2300 movs r3, #0 - 240fa: 220a movs r2, #10 - 240fc: 4639 mov r1, r7 - 240fe: 4849 ldr r0, [pc, #292] ; (24224 ) - 24100: f005 fed4 bl 29eac + 241b6: 2300 movs r3, #0 + 241b8: 220a movs r2, #10 + 241ba: 4641 mov r1, r8 + 241bc: 484d ldr r0, [pc, #308] ; (242f4 ) + 241be: f005 feeb bl 29f98 + 241c2: 2101 movs r1, #1 + 241c4: 484c ldr r0, [pc, #304] ; (242f8 ) + 241c6: f008 fa33 bl 2c630 + 241ca: 2109 movs r1, #9 + 241cc: 484d ldr r0, [pc, #308] ; (24304 ) + 241ce: f008 fa2f bl 2c630 + 241d2: 2101 movs r1, #1 + 241d4: 4848 ldr r0, [pc, #288] ; (242f8 ) + 241d6: f008 fa2b bl 2c630 + 241da: 2300 movs r3, #0 + 241dc: 220a movs r2, #10 + 241de: 4639 mov r1, r7 + 241e0: 4844 ldr r0, [pc, #272] ; (242f4 ) + 241e2: f005 fed9 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 24104: 4847 ldr r0, [pc, #284] ; (24224 ) + 241e6: 4843 ldr r0, [pc, #268] ; (242f4 ) } - 24106: b004 add sp, #16 - 24108: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 2410c: f005 beb2 b.w 29e74 + 241e8: b004 add sp, #16 + 241ea: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 241ee: f005 beb7 b.w 29f60 Port.write(status); - 24110: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 + 241f2: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 } void sendAfterTouch(uint8_t pressure, uint8_t channel){ writeData(BMC_MIDI_AFTER_TOUCH | (channel-1), pressure); - 24114: f108 31ff add.w r1, r8, #4294967295 ; 0xffffffff - Port.write(status); - 24118: 6803 ldr r3, [r0, #0] - writeData(BMC_MIDI_AFTER_TOUCH | (channel-1), pressure); - 2411a: f061 012f orn r1, r1, #47 ; 0x2f + 241f6: f108 31ff add.w r1, r8, #4294967295 ; 0xffffffff Port.write(status); - 2411e: 681b ldr r3, [r3, #0] - 24120: b2c9 uxtb r1, r1 - 24122: 4798 blx r3 - Port.write(d1 & 0x7F); - 24124: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 24128: f007 017f and.w r1, r7, #127 ; 0x7f - 2412c: 6803 ldr r3, [r0, #0] - 2412e: 681b ldr r3, [r3, #0] - 24130: 4798 blx r3 - 24132: f1b9 0f00 cmp.w r9, #0 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 24136: f8d5 6108 ldr.w r6, [r5, #264] ; 0x108 - if(port>127){ - 2413a: f6bf af7b bge.w 24034 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 2413e: f004 020f and.w r2, r4, #15 - 24142: 6833 ldr r3, [r6, #0] - 24144: eb03 0342 add.w r3, r3, r2, lsl #1 - 24148: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 - 2414c: e773 b.n 24036 - Port.write(status); - 2414e: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - writeData(BMC_MIDI_AFTER_TOUCH | (channel-1), pressure); - 24152: f108 31ff add.w r1, r8, #4294967295 ; 0xffffffff - Port.write(status); - 24156: 6803 ldr r3, [r0, #0] + 241fa: 6803 ldr r3, [r0, #0] writeData(BMC_MIDI_AFTER_TOUCH | (channel-1), pressure); - 24158: f061 012f orn r1, r1, #47 ; 0x2f + 241fc: f061 012f orn r1, r1, #47 ; 0x2f Port.write(status); - 2415c: 681b ldr r3, [r3, #0] - 2415e: b2c9 uxtb r1, r1 - 24160: 4798 blx r3 + 24200: 681b ldr r3, [r3, #0] + 24202: b2c9 uxtb r1, r1 + 24204: 4798 blx r3 Port.write(d1 & 0x7F); - 24162: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 24166: f007 017f and.w r1, r7, #127 ; 0x7f - 2416a: 6803 ldr r3, [r0, #0] - 2416c: 681b ldr r3, [r3, #0] - 2416e: 4798 blx r3 - if(port>127){ - 24170: f1b9 0f00 cmp.w r9, #0 - 24174: f6bf af55 bge.w 24022 + 24206: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 2420a: f007 017f and.w r1, r7, #127 ; 0x7f + 2420e: 6803 ldr r3, [r0, #0] + 24210: 681b ldr r3, [r3, #0] + 24212: 4798 blx r3 + } + 24214: e765 b.n 240e2 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 24178: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 2417c: f004 020f and.w r2, r4, #15 - 24180: 681b ldr r3, [r3, #0] - 24182: eb03 0342 add.w r3, r3, r2, lsl #1 - 24186: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 - 2418a: e74b b.n 24024 - 2418c: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 - 24190: 681a ldr r2, [r3, #0] - 24192: f001 030f and.w r3, r1, #15 - 24196: f503 63ef add.w r3, r3, #1912 ; 0x778 - 2419a: eb02 0243 add.w r2, r2, r3, lsl #1 - 2419e: 005e lsls r6, r3, #1 - 241a0: 7a53 ldrb r3, [r2, #9] + 24216: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 + 2421a: 681a ldr r2, [r3, #0] + 2421c: f001 030f and.w r3, r1, #15 + 24220: f503 63ef add.w r3, r3, #1912 ; 0x778 + 24224: eb02 0243 add.w r2, r2, r3, lsl #1 + 24228: 005e lsls r6, r3, #1 + 2422a: 7a53 ldrb r3, [r2, #9] if(isMidiUsbPort(port)){ - 241a2: 07d8 lsls r0, r3, #31 - 241a4: f57f af36 bpl.w 24014 + 2422c: 07da lsls r2, r3, #31 + 2422e: f57f af55 bpl.w 240dc if (cable >= MIDI_NUM_CABLES) return; - 241a8: f1ba 0f00 cmp.w sl, #0 - 241ac: f47f af32 bne.w 24014 + 24232: f1ba 0f00 cmp.w sl, #0 + 24236: f47f af51 bne.w 240dc | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 241b0: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff - 241b4: 043a lsls r2, r7, #16 + 2423a: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff + 2423e: 043a lsls r2, r7, #16 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 241b6: f24d 000d movw r0, #53261 ; 0xd00d + 24240: f24d 000d movw r0, #53261 ; 0xd00d | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 241ba: 021b lsls r3, r3, #8 - 241bc: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 - 241c0: f403 6370 and.w r3, r3, #3840 ; 0xf00 - 241c4: 4313 orrs r3, r2 + 24244: 021b lsls r3, r3, #8 + 24246: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 2424a: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 2424e: 4313 orrs r3, r2 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 241c6: 4318 orrs r0, r3 - 241c8: f007 fc22 bl 2ba10 - 241cc: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 241d0: 681b ldr r3, [r3, #0] - 241d2: 4433 add r3, r6 - 241d4: 7a5b ldrb r3, [r3, #9] - 241d6: e71d b.n 24014 + 24250: 4318 orrs r0, r3 + 24252: f007 fc51 bl 2baf8 + 24256: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 2425a: 681b ldr r3, [r3, #0] + 2425c: 4433 add r3, r6 + 2425e: 7a5b ldrb r3, [r3, #9] + 24260: e73c b.n 240dc | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 241d8: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff - 241dc: 043a lsls r2, r7, #16 + 24262: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff + 24266: 043a lsls r2, r7, #16 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 241de: ea4f 1a0a mov.w sl, sl, lsl #4 - 241e2: f24d 010d movw r1, #53261 ; 0xd00d + 24268: ea4f 1a0a mov.w sl, sl, lsl #4 + 2426c: f24d 010d movw r1, #53261 ; 0xd00d | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 241e6: 021b lsls r3, r3, #8 - 241e8: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 24270: 021b lsls r3, r3, #8 + 24272: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 241ec: fa5f fa8a uxtb.w sl, sl - 241f0: f505 6036 add.w r0, r5, #2912 ; 0xb60 + 24276: fa5f fa8a uxtb.w sl, sl + 2427a: f505 6026 add.w r0, r5, #2656 ; 0xa60 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 241f4: f403 6370 and.w r3, r3, #3840 ; 0xf00 - 241f8: 4313 orrs r3, r2 - 241fa: ea43 030a orr.w r3, r3, sl + 2427e: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 24282: 4313 orrs r3, r2 + 24284: ea43 030a orr.w r3, r3, sl write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 241fe: 4319 orrs r1, r3 - 24200: f004 f9d8 bl 285b4 + 24288: 4319 orrs r1, r3 + 2428a: f004 fa09 bl 286a0 + if(isMidiBlePort(port) && globals.bleConnected()){ + 2428e: f8d5 6108 ldr.w r6, [r5, #264] ; 0x108 + if(port>127){ + 24292: f1b9 0f00 cmp.w r9, #0 + return bitRead(flags, bit); + 24296: 6df0 ldr r0, [r6, #92] ; 0x5c + 24298: f6bf af3e bge.w 24118 + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 2429c: 6833 ldr r3, [r6, #0] + 2429e: f004 020f and.w r2, r4, #15 + 242a2: eb03 0342 add.w r3, r3, r2, lsl #1 + 242a6: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 + 242aa: e736 b.n 2411a + Port.write(status); + 242ac: f505 5680 add.w r6, r5, #4096 ; 0x1000 + writeData(BMC_MIDI_AFTER_TOUCH | (channel-1), pressure); + 242b0: f108 31ff add.w r1, r8, #4294967295 ; 0xffffffff + Port.write(status); + 242b4: f8d6 0188 ldr.w r0, [r6, #392] ; 0x188 + writeData(BMC_MIDI_AFTER_TOUCH | (channel-1), pressure); + 242b8: f061 012f orn r1, r1, #47 ; 0x2f + Port.write(status); + 242bc: 6803 ldr r3, [r0, #0] + 242be: b2c9 uxtb r1, r1 + 242c0: 681b ldr r3, [r3, #0] + 242c2: 4798 blx r3 + Port.write(d1 & 0x7F); + 242c4: f8d6 0188 ldr.w r0, [r6, #392] ; 0x188 + 242c8: f007 017f and.w r1, r7, #127 ; 0x7f + 242cc: 6803 ldr r3, [r0, #0] + 242ce: 681b ldr r3, [r3, #0] + 242d0: 4798 blx r3 globals.setMidiOutActivity(); - 24204: f8d5 6108 ldr.w r6, [r5, #264] ; 0x108 - 24208: 6df0 ldr r0, [r6, #92] ; 0x5c - 2420a: e71a b.n 24042 - 2420c: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 24210: f004 040f and.w r4, r4, #15 - 24214: 681b ldr r3, [r3, #0] - 24216: eb03 0344 add.w r3, r3, r4, lsl #1 - 2421a: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 - 2421e: e73a b.n 24096 - 24220: 2000bae8 .word 0x2000bae8 - 24224: 20004ba8 .word 0x20004ba8 - 24228: 200023ec .word 0x200023ec - 2422c: 200037a8 .word 0x200037a8 - 24230: 20001ce0 .word 0x20001ce0 - 24234: 200037c0 .word 0x200037c0 - -00024238 : + 242d2: f8d5 6108 ldr.w r6, [r5, #264] ; 0x108 + bitSet(flags, bit); + 242d6: 6df0 ldr r0, [r6, #92] ; 0x5c + } + 242d8: e724 b.n 24124 + 242da: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 242de: f004 040f and.w r4, r4, #15 + 242e2: 681b ldr r3, [r3, #0] + 242e4: eb03 0344 add.w r3, r3, r4, lsl #1 + 242e8: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 + 242ec: e744 b.n 24178 + 242ee: bf00 nop + 242f0: 2000bb08 .word 0x2000bb08 + 242f4: 20004c68 .word 0x20004c68 + 242f8: 200023ec .word 0x200023ec + 242fc: 20003868 .word 0x20003868 + 24300: 20001ce0 .word 0x20001ce0 + 24304: 20003880 .word 0x20003880 + +00024308 : uint8_t cable){ - 24238: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 24308: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} if(port>127){ - 2423c: fa4f f881 sxtb.w r8, r1 - 24240: b085 sub sp, #20 - 24242: 460c mov r4, r1 - 24244: 4605 mov r5, r0 - 24246: f1b8 0f00 cmp.w r8, #0 - 2424a: 4617 mov r7, r2 - 2424c: 461e mov r6, r3 - 2424e: f89d 9038 ldrb.w r9, [sp, #56] ; 0x38 - 24252: f89d a03c ldrb.w sl, [sp, #60] ; 0x3c - 24256: f2c0 80e3 blt.w 24420 + 2430c: fa4f f881 sxtb.w r8, r1 + 24310: b085 sub sp, #20 + 24312: 460c mov r4, r1 + 24314: 4605 mov r5, r0 + 24316: f1b8 0f00 cmp.w r8, #0 + 2431a: 4617 mov r7, r2 + 2431c: 461e mov r6, r3 + 2431e: f89d 9038 ldrb.w r9, [sp, #56] ; 0x38 + 24322: f89d a03c ldrb.w sl, [sp, #60] ; 0x3c + 24326: f2c0 80bd blt.w 244a4 if(isMidiUsbPort(port)){ - 2425a: 07cb lsls r3, r1, #31 - 2425c: d422 bmi.n 242a4 + 2432a: 07cb lsls r3, r1, #31 + 2432c: d42e bmi.n 2438c uint8_t cable){ - 2425e: 4623 mov r3, r4 + 2432e: 4623 mov r3, r4 if(isMidiSerialAPort(port)){ - 24260: 0798 lsls r0, r3, #30 - 24262: f100 80b8 bmi.w 243d6 - 24266: f1b8 0f00 cmp.w r8, #0 - 2426a: f2c0 80cf blt.w 2440c - 2426e: 4623 mov r3, r4 - if(isMidiSerialBPort(port)){ - 24270: 0759 lsls r1, r3, #29 - 24272: f100 808b bmi.w 2438c - 24276: f1b8 0f00 cmp.w r8, #0 + 24330: 0798 lsls r0, r3, #30 + 24332: f100 809f bmi.w 24474 + 24336: f1b8 0f00 cmp.w r8, #0 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 2427a: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 2433a: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 if(port>127){ - 2427e: f2c0 80a2 blt.w 243c6 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 24282: 4622 mov r2, r4 + 2433e: db04 blt.n 2434a if(isMidiHostPort(port) && globals.hostConnected()){ - 24284: 0692 lsls r2, r2, #26 + 24340: 06a2 lsls r2, r4, #26 + 24342: d40b bmi.n 2435c return bitRead(flags, bit); - 24286: 6dd8 ldr r0, [r3, #92] ; 0x5c - 24288: d502 bpl.n 24290 - 2428a: 0701 lsls r1, r0, #28 - 2428c: f100 80f3 bmi.w 24476 + 24344: 4622 mov r2, r4 + 24346: 6dd8 ldr r0, [r3, #92] ; 0x5c + 24348: e011 b.n 2436e + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 2434a: f004 010f and.w r1, r4, #15 + 2434e: 681a ldr r2, [r3, #0] + 24350: eb02 0241 add.w r2, r2, r1, lsl #1 + 24354: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 24358: 0691 lsls r1, r2, #26 + 2435a: d5f4 bpl.n 24346 + 2435c: 6dd8 ldr r0, [r3, #92] ; 0x5c + 2435e: 0702 lsls r2, r0, #28 + 24360: f100 80cb bmi.w 244fa + if(port>127){ + 24364: f1b8 0f00 cmp.w r8, #0 + 24368: f2c0 80e6 blt.w 24538 + 2436c: 4622 mov r2, r4 + if(isMidiBlePort(port) && globals.bleConnected()){ + 2436e: 0651 lsls r1, r2, #25 + 24370: d502 bpl.n 24378 + 24372: 06c2 lsls r2, r0, #27 + 24374: f100 80e8 bmi.w 24548 bitSet(flags, bit); - 24290: f040 0002 orr.w r0, r0, #2 - 24294: 65d8 str r0, [r3, #92] ; 0x5c + 24378: f040 0002 orr.w r0, r0, #2 + 2437c: 65d8 str r0, [r3, #92] ; 0x5c return bitRead(flags, bit); - 24296: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 2437e: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 if(globals.getMidiOutDebug()){ - 2429a: 069a lsls r2, r3, #26 - 2429c: d418 bmi.n 242d0 + 24382: 0699 lsls r1, r3, #26 + 24384: d418 bmi.n 243b8 } - 2429e: b005 add sp, #20 - 242a0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 24386: b005 add sp, #20 + 24388: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if (cable >= MIDI_NUM_CABLES) return; - 242a4: f1ba 0f00 cmp.w sl, #0 - 242a8: d1d9 bne.n 2425e + 2438c: f1ba 0f00 cmp.w sl, #0 + 24390: d1cd bne.n 2432e | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 242aa: 1e53 subs r3, r2, #1 + 24392: 1e53 subs r3, r2, #1 | ((data2 & 0x7F) << 24)); - 242ac: ea4f 6209 mov.w r2, r9, lsl #24 + 24394: ea4f 6209 mov.w r2, r9, lsl #24 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 242b0: f24a 000a movw r0, #40970 ; 0xa00a + 24398: f24a 000a movw r0, #40970 ; 0xa00a | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 242b4: 021b lsls r3, r3, #8 + 2439c: 021b lsls r3, r3, #8 | ((data2 & 0x7F) << 24)); - 242b6: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 + 2439e: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 242ba: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 243a2: f403 6370 and.w r3, r3, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 242be: 4313 orrs r3, r2 + 243a6: 4313 orrs r3, r2 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 242c0: 0432 lsls r2, r6, #16 - 242c2: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 243a8: 0432 lsls r2, r6, #16 + 243aa: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 | ((data2 & 0x7F) << 24)); - 242c6: 4313 orrs r3, r2 + 243ae: 4313 orrs r3, r2 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 242c8: 4318 orrs r0, r3 - 242ca: f007 fba1 bl 2ba10 - if(port>127){ - 242ce: e7c6 b.n 2425e - 242d0: 4b7c ldr r3, [pc, #496] ; (244c4 ) + 243b0: 4318 orrs r0, r3 + 243b2: f007 fba1 bl 2baf8 + 243b6: e7ba b.n 2432e + 243b8: 4b77 ldr r3, [pc, #476] ; (24598 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 242d2: 220a movs r2, #10 - 242d4: 487c ldr r0, [pc, #496] ; (244c8 ) - 242d6: 6819 ldr r1, [r3, #0] - 242d8: 2300 movs r3, #0 - 242da: f005 fde7 bl 29eac - 242de: 2101 movs r1, #1 - 242e0: 487a ldr r0, [pc, #488] ; (244cc ) - 242e2: f008 f931 bl 2c548 - 242e6: f1b8 0f00 cmp.w r8, #0 - 242ea: f2c0 80e0 blt.w 244ae + 243ba: 220a movs r2, #10 + 243bc: 4877 ldr r0, [pc, #476] ; (2459c ) + 243be: 6819 ldr r1, [r3, #0] + 243c0: 2300 movs r3, #0 + 243c2: f005 fde9 bl 29f98 + 243c6: 2101 movs r1, #1 + 243c8: 4875 ldr r0, [pc, #468] ; (245a0 ) + 243ca: f008 f931 bl 2c630 + 243ce: f1b8 0f00 cmp.w r8, #0 + 243d2: f2c0 80d6 blt.w 24582 BMC_PRINTLN( - 242ee: 4621 mov r1, r4 - 242f0: 4668 mov r0, sp - 242f2: f7df fa21 bl 3738 - 242f6: 4669 mov r1, sp - 242f8: 4873 ldr r0, [pc, #460] ; (244c8 ) - 242fa: f005 fd89 bl 29e10 - 242fe: 4668 mov r0, sp - 24300: f005 feba bl 2a078 - 24304: 2101 movs r1, #1 - 24306: 4871 ldr r0, [pc, #452] ; (244cc ) - 24308: f008 f91e bl 2c548 - 2430c: 2119 movs r1, #25 - 2430e: 4870 ldr r0, [pc, #448] ; (244d0 ) - 24310: f008 f91a bl 2c548 - 24314: 2101 movs r1, #1 - 24316: 486d ldr r0, [pc, #436] ; (244cc ) - 24318: f008 f916 bl 2c548 - 2431c: 2108 movs r1, #8 - 2431e: 486d ldr r0, [pc, #436] ; (244d4 ) - 24320: f008 f912 bl 2c548 - 24324: 2101 movs r1, #1 - 24326: 4869 ldr r0, [pc, #420] ; (244cc ) - 24328: f008 f90e bl 2c548 + 243d6: 4621 mov r1, r4 + 243d8: 4668 mov r0, sp + 243da: f7df f9ad bl 3738 + 243de: 4669 mov r1, sp + 243e0: 486e ldr r0, [pc, #440] ; (2459c ) + 243e2: f005 fd8b bl 29efc + 243e6: 4668 mov r0, sp + 243e8: f005 feba bl 2a160 + 243ec: 2101 movs r1, #1 + 243ee: 486c ldr r0, [pc, #432] ; (245a0 ) + 243f0: f008 f91e bl 2c630 + 243f4: 2119 movs r1, #25 + 243f6: 486b ldr r0, [pc, #428] ; (245a4 ) + 243f8: f008 f91a bl 2c630 + 243fc: 2101 movs r1, #1 + 243fe: 4868 ldr r0, [pc, #416] ; (245a0 ) + 24400: f008 f916 bl 2c630 + 24404: 2108 movs r1, #8 + 24406: 4868 ldr r0, [pc, #416] ; (245a8 ) + 24408: f008 f912 bl 2c630 + 2440c: 2101 movs r1, #1 + 2440e: 4864 ldr r0, [pc, #400] ; (245a0 ) + 24410: f008 f90e bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 2432c: 2300 movs r3, #0 - 2432e: 220a movs r2, #10 - 24330: 4639 mov r1, r7 - 24332: 4865 ldr r0, [pc, #404] ; (244c8 ) - 24334: f005 fdba bl 29eac - 24338: 2101 movs r1, #1 - 2433a: 4864 ldr r0, [pc, #400] ; (244cc ) - 2433c: f008 f904 bl 2c548 - 24340: 2105 movs r1, #5 - 24342: 4865 ldr r0, [pc, #404] ; (244d8 ) - 24344: f008 f900 bl 2c548 - 24348: 2101 movs r1, #1 - 2434a: 4860 ldr r0, [pc, #384] ; (244cc ) - 2434c: f008 f8fc bl 2c548 - 24350: 2300 movs r3, #0 - 24352: 220a movs r2, #10 - 24354: 4631 mov r1, r6 - 24356: 485c ldr r0, [pc, #368] ; (244c8 ) - 24358: f005 fda8 bl 29eac - 2435c: 2101 movs r1, #1 - 2435e: 485b ldr r0, [pc, #364] ; (244cc ) - 24360: f008 f8f2 bl 2c548 - 24364: 2109 movs r1, #9 - 24366: 485d ldr r0, [pc, #372] ; (244dc ) - 24368: f008 f8ee bl 2c548 - 2436c: 2101 movs r1, #1 - 2436e: 4857 ldr r0, [pc, #348] ; (244cc ) - 24370: f008 f8ea bl 2c548 - 24374: 2300 movs r3, #0 - 24376: 220a movs r2, #10 - 24378: 4649 mov r1, r9 - 2437a: 4853 ldr r0, [pc, #332] ; (244c8 ) - 2437c: f005 fd96 bl 29eac + 24414: 2300 movs r3, #0 + 24416: 220a movs r2, #10 + 24418: 4639 mov r1, r7 + 2441a: 4860 ldr r0, [pc, #384] ; (2459c ) + 2441c: f005 fdbc bl 29f98 + 24420: 2101 movs r1, #1 + 24422: 485f ldr r0, [pc, #380] ; (245a0 ) + 24424: f008 f904 bl 2c630 + 24428: 2105 movs r1, #5 + 2442a: 4860 ldr r0, [pc, #384] ; (245ac ) + 2442c: f008 f900 bl 2c630 + 24430: 2101 movs r1, #1 + 24432: 485b ldr r0, [pc, #364] ; (245a0 ) + 24434: f008 f8fc bl 2c630 + 24438: 2300 movs r3, #0 + 2443a: 220a movs r2, #10 + 2443c: 4631 mov r1, r6 + 2443e: 4857 ldr r0, [pc, #348] ; (2459c ) + 24440: f005 fdaa bl 29f98 + 24444: 2101 movs r1, #1 + 24446: 4856 ldr r0, [pc, #344] ; (245a0 ) + 24448: f008 f8f2 bl 2c630 + 2444c: 2109 movs r1, #9 + 2444e: 4858 ldr r0, [pc, #352] ; (245b0 ) + 24450: f008 f8ee bl 2c630 + 24454: 2101 movs r1, #1 + 24456: 4852 ldr r0, [pc, #328] ; (245a0 ) + 24458: f008 f8ea bl 2c630 + 2445c: 2300 movs r3, #0 + 2445e: 220a movs r2, #10 + 24460: 4649 mov r1, r9 + 24462: 484e ldr r0, [pc, #312] ; (2459c ) + 24464: f005 fd98 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 24380: 4851 ldr r0, [pc, #324] ; (244c8 ) + 24468: 484c ldr r0, [pc, #304] ; (2459c ) } - 24382: b005 add sp, #20 - 24384: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 24388: f005 bd74 b.w 29e74 + 2446a: b005 add sp, #20 + 2446c: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 24470: f005 bd76 b.w 29f60 Port.write(status); - 2438c: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 + 24474: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 } void sendAfterTouch(uint8_t note, uint8_t pressure, uint8_t channel){ writeData(BMC_MIDI_AFTER_TOUCH_POLY | (channel-1), note, pressure); - 24390: 1e79 subs r1, r7, #1 - Port.write(status); - 24392: 6803 ldr r3, [r0, #0] - writeData(BMC_MIDI_AFTER_TOUCH_POLY | (channel-1), note, pressure); - 24394: f061 015f orn r1, r1, #95 ; 0x5f - Port.write(status); - 24398: 681b ldr r3, [r3, #0] - 2439a: b2c9 uxtb r1, r1 - 2439c: 4798 blx r3 - Port.write(d1 & 0x7F); - 2439e: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 243a2: f006 017f and.w r1, r6, #127 ; 0x7f - 243a6: 6803 ldr r3, [r0, #0] - 243a8: 681b ldr r3, [r3, #0] - 243aa: 4798 blx r3 - Port.write(d2 & 0x7F); - 243ac: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 243b0: f009 017f and.w r1, r9, #127 ; 0x7f - 243b4: 6803 ldr r3, [r0, #0] - 243b6: 681b ldr r3, [r3, #0] - 243b8: 4798 blx r3 - 243ba: f1b8 0f00 cmp.w r8, #0 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 243be: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - if(port>127){ - 243c2: f6bf af5e bge.w 24282 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 243c6: f004 010f and.w r1, r4, #15 - 243ca: 681a ldr r2, [r3, #0] - 243cc: eb02 0241 add.w r2, r2, r1, lsl #1 - 243d0: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 - 243d4: e756 b.n 24284 - Port.write(status); - 243d6: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - writeData(BMC_MIDI_AFTER_TOUCH_POLY | (channel-1), note, pressure); - 243da: 1e79 subs r1, r7, #1 + 24478: 1e79 subs r1, r7, #1 Port.write(status); - 243dc: 6803 ldr r3, [r0, #0] + 2447a: 6803 ldr r3, [r0, #0] writeData(BMC_MIDI_AFTER_TOUCH_POLY | (channel-1), note, pressure); - 243de: f061 015f orn r1, r1, #95 ; 0x5f + 2447c: f061 015f orn r1, r1, #95 ; 0x5f Port.write(status); - 243e2: 681b ldr r3, [r3, #0] - 243e4: b2c9 uxtb r1, r1 - 243e6: 4798 blx r3 + 24480: 681b ldr r3, [r3, #0] + 24482: b2c9 uxtb r1, r1 + 24484: 4798 blx r3 Port.write(d1 & 0x7F); - 243e8: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 243ec: f006 017f and.w r1, r6, #127 ; 0x7f - 243f0: 6803 ldr r3, [r0, #0] - 243f2: 681b ldr r3, [r3, #0] - 243f4: 4798 blx r3 + 24486: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 2448a: f006 017f and.w r1, r6, #127 ; 0x7f + 2448e: 6803 ldr r3, [r0, #0] + 24490: 681b ldr r3, [r3, #0] + 24492: 4798 blx r3 Port.write(d2 & 0x7F); - 243f6: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 243fa: f009 017f and.w r1, r9, #127 ; 0x7f - 243fe: 6803 ldr r3, [r0, #0] - 24400: 681b ldr r3, [r3, #0] - 24402: 4798 blx r3 - if(port>127){ - 24404: f1b8 0f00 cmp.w r8, #0 - 24408: f6bf af31 bge.w 2426e + 24494: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 24498: f009 017f and.w r1, r9, #127 ; 0x7f + 2449c: 6803 ldr r3, [r0, #0] + 2449e: 681b ldr r3, [r3, #0] + 244a0: 4798 blx r3 + } + 244a2: e748 b.n 24336 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 2440c: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 24410: f004 020f and.w r2, r4, #15 - 24414: 681b ldr r3, [r3, #0] - 24416: eb03 0342 add.w r3, r3, r2, lsl #1 - 2441a: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 - 2441e: e727 b.n 24270 - 24420: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 - 24424: 681a ldr r2, [r3, #0] - 24426: f001 030f and.w r3, r1, #15 - 2442a: f503 63ef add.w r3, r3, #1912 ; 0x778 - 2442e: eb02 0243 add.w r2, r2, r3, lsl #1 - 24432: ea4f 0b43 mov.w fp, r3, lsl #1 - 24436: 7a53 ldrb r3, [r2, #9] + 244a4: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 + 244a8: 681a ldr r2, [r3, #0] + 244aa: f001 030f and.w r3, r1, #15 + 244ae: f503 63ef add.w r3, r3, #1912 ; 0x778 + 244b2: eb02 0243 add.w r2, r2, r3, lsl #1 + 244b6: ea4f 0b43 mov.w fp, r3, lsl #1 + 244ba: 7a53 ldrb r3, [r2, #9] if(isMidiUsbPort(port)){ - 24438: 07da lsls r2, r3, #31 - 2443a: f57f af11 bpl.w 24260 + 244bc: 07da lsls r2, r3, #31 + 244be: f57f af37 bpl.w 24330 if (cable >= MIDI_NUM_CABLES) return; - 2443e: f1ba 0f00 cmp.w sl, #0 - 24442: f47f af0d bne.w 24260 + 244c2: f1ba 0f00 cmp.w sl, #0 + 244c6: f47f af33 bne.w 24330 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 24446: 1e7b subs r3, r7, #1 + 244ca: 1e7b subs r3, r7, #1 | ((data2 & 0x7F) << 24)); - 24448: ea4f 6209 mov.w r2, r9, lsl #24 + 244cc: ea4f 6209 mov.w r2, r9, lsl #24 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 2444c: f24a 000a movw r0, #40970 ; 0xa00a + 244d0: f24a 000a movw r0, #40970 ; 0xa00a | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 24450: 021b lsls r3, r3, #8 + 244d4: 021b lsls r3, r3, #8 | ((data2 & 0x7F) << 24)); - 24452: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 + 244d6: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 24456: f403 6370 and.w r3, r3, #3840 ; 0xf00 + 244da: f403 6370 and.w r3, r3, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 2445a: 4313 orrs r3, r2 + 244de: 4313 orrs r3, r2 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2445c: 0432 lsls r2, r6, #16 - 2445e: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 244e0: 0432 lsls r2, r6, #16 + 244e2: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 | ((data2 & 0x7F) << 24)); - 24462: 4313 orrs r3, r2 + 244e6: 4313 orrs r3, r2 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 24464: 4318 orrs r0, r3 - 24466: f007 fad3 bl 2ba10 - 2446a: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 2446e: 681b ldr r3, [r3, #0] - 24470: 445b add r3, fp - 24472: 7a5b ldrb r3, [r3, #9] - 24474: e6f4 b.n 24260 - 24476: ea4f 130a mov.w r3, sl, lsl #4 - 2447a: f24a 010a movw r1, #40970 ; 0xa00a + 244e8: 4318 orrs r0, r3 + 244ea: f007 fb05 bl 2baf8 + 244ee: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 244f2: 681b ldr r3, [r3, #0] + 244f4: 445b add r3, fp + 244f6: 7a5b ldrb r3, [r3, #9] + 244f8: e71a b.n 24330 + 244fa: ea4f 130a mov.w r3, sl, lsl #4 + 244fe: f24a 010a movw r1, #40970 ; 0xa00a | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2447e: 0432 lsls r2, r6, #16 + 24502: 0432 lsls r2, r6, #16 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 24480: f505 6036 add.w r0, r5, #2912 ; 0xb60 - 24484: b2db uxtb r3, r3 + 24504: f505 6026 add.w r0, r5, #2656 ; 0xa60 + 24508: b2db uxtb r3, r3 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 24486: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 2450a: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 | ((data2 & 0x7F) << 24)); - 2448a: 4313 orrs r3, r2 + 2450e: 4313 orrs r3, r2 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2448c: 1e7a subs r2, r7, #1 - 2448e: 0212 lsls r2, r2, #8 - 24490: f402 6270 and.w r2, r2, #3840 ; 0xf00 + 24510: 1e7a subs r2, r7, #1 + 24512: 0212 lsls r2, r2, #8 + 24514: f402 6270 and.w r2, r2, #3840 ; 0xf00 | ((data2 & 0x7F) << 24)); - 24494: 4313 orrs r3, r2 - 24496: ea4f 6209 mov.w r2, r9, lsl #24 - 2449a: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 - 2449e: 4313 orrs r3, r2 + 24518: 4313 orrs r3, r2 + 2451a: ea4f 6209 mov.w r2, r9, lsl #24 + 2451e: f002 42fe and.w r2, r2, #2130706432 ; 0x7f000000 + 24522: 4313 orrs r3, r2 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 244a0: 4319 orrs r1, r3 - 244a2: f004 f887 bl 285b4 + 24524: 4319 orrs r1, r3 + 24526: f004 f8bb bl 286a0 + if(isMidiBlePort(port) && globals.bleConnected()){ + 2452a: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + if(port>127){ + 2452e: f1b8 0f00 cmp.w r8, #0 + 24532: 6dd8 ldr r0, [r3, #92] ; 0x5c + 24534: f6bf af1a bge.w 2436c + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 24538: 681a ldr r2, [r3, #0] + 2453a: f004 010f and.w r1, r4, #15 + 2453e: eb02 0241 add.w r2, r2, r1, lsl #1 + 24542: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 24546: e712 b.n 2436e + Port.write(status); + 24548: f505 5a80 add.w sl, r5, #4096 ; 0x1000 + writeData(BMC_MIDI_AFTER_TOUCH_POLY | (channel-1), note, pressure); + 2454c: 1e79 subs r1, r7, #1 + Port.write(status); + 2454e: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + writeData(BMC_MIDI_AFTER_TOUCH_POLY | (channel-1), note, pressure); + 24552: f061 015f orn r1, r1, #95 ; 0x5f + Port.write(status); + 24556: 6803 ldr r3, [r0, #0] + 24558: b2c9 uxtb r1, r1 + 2455a: 681b ldr r3, [r3, #0] + 2455c: 4798 blx r3 + Port.write(d1 & 0x7F); + 2455e: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + 24562: f006 017f and.w r1, r6, #127 ; 0x7f + 24566: 6803 ldr r3, [r0, #0] + 24568: 681b ldr r3, [r3, #0] + 2456a: 4798 blx r3 + Port.write(d2 & 0x7F); + 2456c: f8da 0188 ldr.w r0, [sl, #392] ; 0x188 + 24570: f009 017f and.w r1, r9, #127 ; 0x7f + 24574: 6803 ldr r3, [r0, #0] + 24576: 681b ldr r3, [r3, #0] + 24578: 4798 blx r3 globals.setMidiOutActivity(); - 244a6: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 2457a: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 bitSet(flags, bit); - 244aa: 6dd8 ldr r0, [r3, #92] ; 0x5c - 244ac: e6f0 b.n 24290 - 244ae: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 244b2: f004 040f and.w r4, r4, #15 - 244b6: 681b ldr r3, [r3, #0] - 244b8: eb03 0344 add.w r3, r3, r4, lsl #1 - 244bc: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 - 244c0: e715 b.n 242ee - 244c2: bf00 nop - 244c4: 2000bae8 .word 0x2000bae8 - 244c8: 20004ba8 .word 0x20004ba8 - 244cc: 200023ec .word 0x200023ec - 244d0: 2000385c .word 0x2000385c - 244d4: 20001ce0 .word 0x20001ce0 - 244d8: 20003760 .word 0x20003760 - 244dc: 200037c0 .word 0x200037c0 - -000244e0 : + 2457e: 6dd8 ldr r0, [r3, #92] ; 0x5c + } + 24580: e6fa b.n 24378 + 24582: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 24586: f004 040f and.w r4, r4, #15 + 2458a: 681b ldr r3, [r3, #0] + 2458c: eb03 0344 add.w r3, r3, r4, lsl #1 + 24590: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 + 24594: e71f b.n 243d6 + 24596: bf00 nop + 24598: 2000bb08 .word 0x2000bb08 + 2459c: 20004c68 .word 0x20004c68 + 245a0: 200023ec .word 0x200023ec + 245a4: 2000391c .word 0x2000391c + 245a8: 20001ce0 .word 0x20001ce0 + 245ac: 20003820 .word 0x20003820 + 245b0: 20003880 .word 0x20003880 + +000245b4 : uint8_t cable){ - 244e0: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 245b4: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} if(port>127){ - 244e4: b24f sxtb r7, r1 - 244e6: b085 sub sp, #20 - 244e8: 460c mov r4, r1 - 244ea: 4605 mov r5, r0 - 244ec: 2f00 cmp r7, #0 - 244ee: 4616 mov r6, r2 - 244f0: 4698 mov r8, r3 - 244f2: f2c0 80a9 blt.w 24648 + 245b8: b24f sxtb r7, r1 + 245ba: b085 sub sp, #20 + 245bc: 460c mov r4, r1 + 245be: 4605 mov r5, r0 + 245c0: 2f00 cmp r7, #0 + 245c2: 4616 mov r6, r2 + 245c4: 4698 mov r8, r3 + 245c6: f2c0 80ae blt.w 24726 if(isMidiUsbPort(port)){ - 244f6: 07cb lsls r3, r1, #31 - 244f8: d41e bmi.n 24538 + 245ca: 07cb lsls r3, r1, #31 + 245cc: d41d bmi.n 2460a uint8_t cable){ - 244fa: 4622 mov r2, r4 + 245ce: 4622 mov r2, r4 if(isMidiSerialAPort(port)){ - 244fc: 0791 lsls r1, r2, #30 - 244fe: f100 8082 bmi.w 24606 - 24502: 2f00 cmp r7, #0 - 24504: f2c0 8096 blt.w 24634 - 24508: 4623 mov r3, r4 - if(isMidiSerialBPort(port)){ - 2450a: 075a lsls r2, r3, #29 - 2450c: d45b bmi.n 245c6 - 2450e: 2f00 cmp r7, #0 + 245d0: 0793 lsls r3, r2, #30 + 245d2: d42d bmi.n 24630 + 245d4: 2f00 cmp r7, #0 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 24510: f8d5 1108 ldr.w r1, [r5, #264] ; 0x108 + 245d6: f8d5 2108 ldr.w r2, [r5, #264] ; 0x108 if(port>127){ - 24514: db6f blt.n 245f6 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 24516: 4623 mov r3, r4 + 245da: db41 blt.n 24660 if(isMidiHostPort(port) && globals.hostConnected()){ - 24518: 069b lsls r3, r3, #26 + 245dc: 06a1 lsls r1, r4, #26 + 245de: d524 bpl.n 2462a return bitRead(flags, bit); - 2451a: 6dca ldr r2, [r1, #92] ; 0x5c - 2451c: d502 bpl.n 24524 - 2451e: 0710 lsls r0, r2, #28 - 24520: f100 80b7 bmi.w 24692 + 245e0: 6dd0 ldr r0, [r2, #92] ; 0x5c + 245e2: 0703 lsls r3, r0, #28 + 245e4: d448 bmi.n 24678 + 245e6: 2f00 cmp r7, #0 + 245e8: db5f blt.n 246aa + 245ea: 4621 mov r1, r4 + if(isMidiBlePort(port) && globals.bleConnected()){ + 245ec: 0649 lsls r1, r1, #25 + 245ee: d502 bpl.n 245f6 + 245f0: 06c3 lsls r3, r0, #27 + 245f2: f100 80bd bmi.w 24770 bitSet(flags, bit); - 24524: f042 0202 orr.w r2, r2, #2 + 245f6: f040 0002 orr.w r0, r0, #2 return bitRead(flags, bit); - 24528: f8b1 3060 ldrh.w r3, [r1, #96] ; 0x60 + 245fa: f8b2 3060 ldrh.w r3, [r2, #96] ; 0x60 bitSet(flags, bit); - 2452c: 65ca str r2, [r1, #92] ; 0x5c + 245fe: 65d0 str r0, [r2, #92] ; 0x5c if(globals.getMidiOutDebug()){ - 2452e: 069a lsls r2, r3, #26 - 24530: d412 bmi.n 24558 + 24600: 0698 lsls r0, r3, #26 + 24602: d45a bmi.n 246ba } - 24532: b005 add sp, #20 - 24534: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 24604: b005 add sp, #20 + 24606: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if (cable >= MIDI_NUM_CABLES) return; - 24538: f1b8 0f00 cmp.w r8, #0 - 2453c: d1dd bne.n 244fa + 2460a: f1b8 0f00 cmp.w r8, #0 + 2460e: d1de bne.n 245ce | ((data1 & 0x7F) << 16) | ((data2 & 0x7F) << 24)); - 2453e: 0453 lsls r3, r2, #17 + 24610: 0453 lsls r3, r2, #17 usb_midi_write_packed((type << 8) | 0x03 | ((cable & 0x0F) << 4) - 24540: f24f 2003 movw r0, #61955 ; 0xf203 + 24612: f24f 2003 movw r0, #61955 ; 0xf203 | ((data1 & 0x7F) << 16) | ((data2 & 0x7F) << 24)); - 24544: 0412 lsls r2, r2, #16 - 24546: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 - 2454a: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 - 2454e: 4313 orrs r3, r2 + 24616: 0412 lsls r2, r2, #16 + 24618: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 + 2461c: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 24620: 4313 orrs r3, r2 usb_midi_write_packed((type << 8) | 0x03 | ((cable & 0x0F) << 4) - 24550: 4318 orrs r0, r3 - 24552: f007 fa5d bl 2ba10 - if(port>127){ - 24556: e7d0 b.n 244fa - 24558: 4b5f ldr r3, [pc, #380] ; (246d8 ) - size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 2455a: 220a movs r2, #10 - 2455c: 485f ldr r0, [pc, #380] ; (246dc ) - 2455e: 6819 ldr r1, [r3, #0] - 24560: 2300 movs r3, #0 - 24562: f005 fca3 bl 29eac - 24566: 2101 movs r1, #1 - 24568: 485d ldr r0, [pc, #372] ; (246e0 ) - 2456a: f007 ffed bl 2c548 - 2456e: 2f00 cmp r7, #0 - 24570: f2c0 80a7 blt.w 246c2 - BMC_PRINTLN( - 24574: 4621 mov r1, r4 - 24576: 4668 mov r0, sp - 24578: f7df f8de bl 3738 - 2457c: 4669 mov r1, sp - 2457e: 4857 ldr r0, [pc, #348] ; (246dc ) - 24580: f005 fc46 bl 29e10 - 24584: 4668 mov r0, sp - 24586: f005 fd77 bl 2a078 - 2458a: 2101 movs r1, #1 - 2458c: 4854 ldr r0, [pc, #336] ; (246e0 ) - 2458e: f007 ffdb bl 2c548 - 24592: 2116 movs r1, #22 - 24594: 4853 ldr r0, [pc, #332] ; (246e4 ) - 24596: f007 ffd7 bl 2c548 - 2459a: 2101 movs r1, #1 - 2459c: 4850 ldr r0, [pc, #320] ; (246e0 ) - 2459e: f007 ffd3 bl 2c548 - 245a2: 2106 movs r1, #6 - 245a4: 4850 ldr r0, [pc, #320] ; (246e8 ) - 245a6: f007 ffcf bl 2c548 - 245aa: 2101 movs r1, #1 - 245ac: 484c ldr r0, [pc, #304] ; (246e0 ) - 245ae: f007 ffcb bl 2c548 - size_t print(int n) { return print((long)n); } - 245b2: 4631 mov r1, r6 - 245b4: 4849 ldr r0, [pc, #292] ; (246dc ) - 245b6: f005 fc51 bl 29e5c - size_t println(int n) { return print(n) + println(); } - 245ba: 4848 ldr r0, [pc, #288] ; (246dc ) -} - 245bc: b005 add sp, #20 - 245be: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} - 245c2: f005 bc57 b.w 29e74 + 24622: 4318 orrs r0, r3 + 24624: f007 fa68 bl 2baf8 + 24628: e7d1 b.n 245ce + return bitRead(flags, bit); + 2462a: 4621 mov r1, r4 + 2462c: 6dd0 ldr r0, [r2, #92] ; 0x5c + 2462e: e7dd b.n 245ec Port.write(status); - 245c6: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 245ca: 21f2 movs r1, #242 ; 0xf2 - 245cc: 6803 ldr r3, [r0, #0] - 245ce: 681b ldr r3, [r3, #0] - 245d0: 4798 blx r3 + 24630: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 24634: 21f2 movs r1, #242 ; 0xf2 + 24636: 6803 ldr r3, [r0, #0] + 24638: 681b ldr r3, [r3, #0] + 2463a: 4798 blx r3 Port.write(d1 & 0x7F); - 245d2: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 245d6: f006 017f and.w r1, r6, #127 ; 0x7f - 245da: 6803 ldr r3, [r0, #0] - 245dc: 681b ldr r3, [r3, #0] - 245de: 4798 blx r3 + 2463c: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 24640: f006 017f and.w r1, r6, #127 ; 0x7f + 24644: 6803 ldr r3, [r0, #0] + 24646: 681b ldr r3, [r3, #0] + 24648: 4798 blx r3 Port.write(d2 & 0x7F); - 245e0: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 245e4: f3c6 11c6 ubfx r1, r6, #7, #7 - 245e8: 6803 ldr r3, [r0, #0] - 245ea: 681b ldr r3, [r3, #0] - 245ec: 4798 blx r3 - 245ee: 2f00 cmp r7, #0 + 2464a: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 2464e: f3c6 11c6 ubfx r1, r6, #7, #7 + 24652: 6803 ldr r3, [r0, #0] + 24654: 681b ldr r3, [r3, #0] + 24656: 4798 blx r3 + 24658: 2f00 cmp r7, #0 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 245f0: f8d5 1108 ldr.w r1, [r5, #264] ; 0x108 + 2465a: f8d5 2108 ldr.w r2, [r5, #264] ; 0x108 if(port>127){ - 245f4: da8f bge.n 24516 + 2465e: dabd bge.n 245dc return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 245f6: f004 020f and.w r2, r4, #15 - 245fa: 680b ldr r3, [r1, #0] - 245fc: eb03 0342 add.w r3, r3, r2, lsl #1 - 24600: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 - 24604: e788 b.n 24518 - Port.write(status); - 24606: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 2460a: 21f2 movs r1, #242 ; 0xf2 - 2460c: 6803 ldr r3, [r0, #0] - 2460e: 681b ldr r3, [r3, #0] - 24610: 4798 blx r3 - Port.write(d1 & 0x7F); - 24612: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 24616: f006 017f and.w r1, r6, #127 ; 0x7f - 2461a: 6803 ldr r3, [r0, #0] - 2461c: 681b ldr r3, [r3, #0] - 2461e: 4798 blx r3 - Port.write(d2 & 0x7F); - 24620: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 24624: f3c6 11c6 ubfx r1, r6, #7, #7 - 24628: 6803 ldr r3, [r0, #0] - 2462a: 681b ldr r3, [r3, #0] - 2462c: 4798 blx r3 + 24660: f004 010f and.w r1, r4, #15 + 24664: 6813 ldr r3, [r2, #0] + 24666: eb03 0341 add.w r3, r3, r1, lsl #1 + 2466a: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 + if(isMidiHostPort(port) && globals.hostConnected()){ + 2466e: 0688 lsls r0, r1, #26 + 24670: d5dc bpl.n 2462c + 24672: 6dd0 ldr r0, [r2, #92] ; 0x5c + 24674: 0703 lsls r3, r0, #28 + 24676: d5b6 bpl.n 245e6 + write_packed((type << 8) | 0x03 | ((cable & 0x0F) << 4) + 24678: ea4f 1808 mov.w r8, r8, lsl #4 + 2467c: f24f 2103 movw r1, #61955 ; 0xf203 + | ((data1 & 0x7F) << 16) | ((data2 & 0x7F) << 24)); + 24680: 0473 lsls r3, r6, #17 + write_packed((type << 8) | 0x03 | ((cable & 0x0F) << 4) + 24682: f505 6026 add.w r0, r5, #2656 ; 0xa60 + 24686: fa5f f888 uxtb.w r8, r8 + | ((data1 & 0x7F) << 16) | ((data2 & 0x7F) << 24)); + 2468a: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 + 2468e: 0432 lsls r2, r6, #16 + 24690: ea43 0308 orr.w r3, r3, r8 + 24694: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 24698: 4313 orrs r3, r2 + write_packed((type << 8) | 0x03 | ((cable & 0x0F) << 4) + 2469a: 4319 orrs r1, r3 + 2469c: f004 f800 bl 286a0 + if(isMidiBlePort(port) && globals.bleConnected()){ + 246a0: f8d5 2108 ldr.w r2, [r5, #264] ; 0x108 + if(port>127){ + 246a4: 2f00 cmp r7, #0 + 246a6: 6dd0 ldr r0, [r2, #92] ; 0x5c + 246a8: da9f bge.n 245ea + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 246aa: f004 010f and.w r1, r4, #15 + 246ae: 6813 ldr r3, [r2, #0] + 246b0: eb03 0341 add.w r3, r3, r1, lsl #1 + 246b4: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 + 246b8: e798 b.n 245ec + 246ba: 4b3f ldr r3, [pc, #252] ; (247b8 ) + size_t print(unsigned long n) { return printNumber(n, 10, 0); } + 246bc: 220a movs r2, #10 + 246be: 483f ldr r0, [pc, #252] ; (247bc ) + 246c0: 6819 ldr r1, [r3, #0] + 246c2: 2300 movs r3, #0 + 246c4: f005 fc68 bl 29f98 + 246c8: 2101 movs r1, #1 + 246ca: 483d ldr r0, [pc, #244] ; (247c0 ) + 246cc: f007 ffb0 bl 2c630 if(port>127){ - 2462e: 2f00 cmp r7, #0 - 24630: f6bf af6a bge.w 24508 + 246d0: 2f00 cmp r7, #0 + 246d2: db67 blt.n 247a4 + BMC_PRINTLN( + 246d4: 4621 mov r1, r4 + 246d6: 4668 mov r0, sp + 246d8: f7df f82e bl 3738 + 246dc: 4669 mov r1, sp + 246de: 4837 ldr r0, [pc, #220] ; (247bc ) + 246e0: f005 fc0c bl 29efc + 246e4: 4668 mov r0, sp + 246e6: f005 fd3b bl 2a160 + 246ea: 2101 movs r1, #1 + 246ec: 4834 ldr r0, [pc, #208] ; (247c0 ) + 246ee: f007 ff9f bl 2c630 + 246f2: 2116 movs r1, #22 + 246f4: 4833 ldr r0, [pc, #204] ; (247c4 ) + 246f6: f007 ff9b bl 2c630 + 246fa: 2101 movs r1, #1 + 246fc: 4830 ldr r0, [pc, #192] ; (247c0 ) + 246fe: f007 ff97 bl 2c630 + 24702: 2106 movs r1, #6 + 24704: 4830 ldr r0, [pc, #192] ; (247c8 ) + 24706: f007 ff93 bl 2c630 + 2470a: 2101 movs r1, #1 + 2470c: 482c ldr r0, [pc, #176] ; (247c0 ) + 2470e: f007 ff8f bl 2c630 + size_t print(int n) { return print((long)n); } + 24712: 4631 mov r1, r6 + 24714: 4829 ldr r0, [pc, #164] ; (247bc ) + 24716: f005 fc17 bl 29f48 + size_t println(int n) { return print(n) + println(); } + 2471a: 4828 ldr r0, [pc, #160] ; (247bc ) +} + 2471c: b005 add sp, #20 + 2471e: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} + 24722: f005 bc1d b.w 29f60 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 24634: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 24638: f004 020f and.w r2, r4, #15 - 2463c: 681b ldr r3, [r3, #0] - 2463e: eb03 0342 add.w r3, r3, r2, lsl #1 - 24642: f893 3ef9 ldrb.w r3, [r3, #3833] ; 0xef9 - 24646: e760 b.n 2450a - 24648: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 - 2464c: 681a ldr r2, [r3, #0] - 2464e: f001 030f and.w r3, r1, #15 - 24652: f503 63ef add.w r3, r3, #1912 ; 0x778 - 24656: eb02 0243 add.w r2, r2, r3, lsl #1 - 2465a: ea4f 0943 mov.w r9, r3, lsl #1 - 2465e: 7a52 ldrb r2, [r2, #9] + 24726: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 + 2472a: 681a ldr r2, [r3, #0] + 2472c: f001 030f and.w r3, r1, #15 + 24730: f503 63ef add.w r3, r3, #1912 ; 0x778 + 24734: eb02 0243 add.w r2, r2, r3, lsl #1 + 24738: ea4f 0943 mov.w r9, r3, lsl #1 + 2473c: 7a52 ldrb r2, [r2, #9] if(isMidiUsbPort(port)){ - 24660: 07d0 lsls r0, r2, #31 - 24662: f57f af4b bpl.w 244fc + 2473e: 07d1 lsls r1, r2, #31 + 24740: f57f af46 bpl.w 245d0 if (cable >= MIDI_NUM_CABLES) return; - 24666: f1b8 0f00 cmp.w r8, #0 - 2466a: f47f af47 bne.w 244fc + 24744: f1b8 0f00 cmp.w r8, #0 + 24748: f47f af42 bne.w 245d0 | ((data1 & 0x7F) << 16) | ((data2 & 0x7F) << 24)); - 2466e: 0473 lsls r3, r6, #17 + 2474c: 0473 lsls r3, r6, #17 usb_midi_write_packed((type << 8) | 0x03 | ((cable & 0x0F) << 4) - 24670: f24f 2003 movw r0, #61955 ; 0xf203 + 2474e: f24f 2003 movw r0, #61955 ; 0xf203 | ((data1 & 0x7F) << 16) | ((data2 & 0x7F) << 24)); - 24674: 0432 lsls r2, r6, #16 - 24676: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 - 2467a: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 - 2467e: 4313 orrs r3, r2 + 24752: 0432 lsls r2, r6, #16 + 24754: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 + 24758: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 2475c: 4313 orrs r3, r2 usb_midi_write_packed((type << 8) | 0x03 | ((cable & 0x0F) << 4) - 24680: 4318 orrs r0, r3 - 24682: f007 f9c5 bl 2ba10 - 24686: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 2468a: 681b ldr r3, [r3, #0] - 2468c: 444b add r3, r9 - 2468e: 7a5a ldrb r2, [r3, #9] - 24690: e734 b.n 244fc - write_packed((type << 8) | 0x03 | ((cable & 0x0F) << 4) - 24692: ea4f 1808 mov.w r8, r8, lsl #4 - 24696: f24f 2103 movw r1, #61955 ; 0xf203 - | ((data1 & 0x7F) << 16) | ((data2 & 0x7F) << 24)); - 2469a: 0473 lsls r3, r6, #17 - write_packed((type << 8) | 0x03 | ((cable & 0x0F) << 4) - 2469c: f505 6036 add.w r0, r5, #2912 ; 0xb60 - 246a0: fa5f f888 uxtb.w r8, r8 - | ((data1 & 0x7F) << 16) | ((data2 & 0x7F) << 24)); - 246a4: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 - 246a8: 0432 lsls r2, r6, #16 - 246aa: ea43 0308 orr.w r3, r3, r8 - 246ae: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 - 246b2: 4313 orrs r3, r2 - write_packed((type << 8) | 0x03 | ((cable & 0x0F) << 4) - 246b4: 4319 orrs r1, r3 - 246b6: f003 ff7d bl 285b4 + 2475e: 4318 orrs r0, r3 + 24760: f007 f9ca bl 2baf8 + 24764: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 24768: 681b ldr r3, [r3, #0] + 2476a: 444b add r3, r9 + 2476c: 7a5a ldrb r2, [r3, #9] + 2476e: e72f b.n 245d0 + Port.write(status); + 24770: f505 5880 add.w r8, r5, #4096 ; 0x1000 + 24774: 21f2 movs r1, #242 ; 0xf2 + 24776: f8d8 0188 ldr.w r0, [r8, #392] ; 0x188 + 2477a: 6803 ldr r3, [r0, #0] + 2477c: 681b ldr r3, [r3, #0] + 2477e: 4798 blx r3 + Port.write(d1 & 0x7F); + 24780: f8d8 0188 ldr.w r0, [r8, #392] ; 0x188 + 24784: f006 017f and.w r1, r6, #127 ; 0x7f + 24788: 6803 ldr r3, [r0, #0] + 2478a: 681b ldr r3, [r3, #0] + 2478c: 4798 blx r3 + Port.write(d2 & 0x7F); + 2478e: f8d8 0188 ldr.w r0, [r8, #392] ; 0x188 + 24792: f3c6 11c6 ubfx r1, r6, #7, #7 + 24796: 6803 ldr r3, [r0, #0] + 24798: 681b ldr r3, [r3, #0] + 2479a: 4798 blx r3 globals.setMidiOutActivity(); - 246ba: f8d5 1108 ldr.w r1, [r5, #264] ; 0x108 - 246be: 6dca ldr r2, [r1, #92] ; 0x5c - 246c0: e730 b.n 24524 - 246c2: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 246c6: f004 040f and.w r4, r4, #15 - 246ca: 681b ldr r3, [r3, #0] - 246cc: eb03 0344 add.w r3, r3, r4, lsl #1 - 246d0: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 - 246d4: e74e b.n 24574 - 246d6: bf00 nop - 246d8: 2000bae8 .word 0x2000bae8 - 246dc: 20004ba8 .word 0x20004ba8 - 246e0: 200023ec .word 0x200023ec - 246e4: 200037ec .word 0x200037ec - 246e8: 20003804 .word 0x20003804 - -000246ec : + 2479c: f8d5 2108 ldr.w r2, [r5, #264] ; 0x108 + bitSet(flags, bit); + 247a0: 6dd0 ldr r0, [r2, #92] ; 0x5c + } + 247a2: e728 b.n 245f6 + 247a4: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 247a8: f004 040f and.w r4, r4, #15 + 247ac: 681b ldr r3, [r3, #0] + 247ae: eb03 0344 add.w r3, r3, r4, lsl #1 + 247b2: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 + 247b6: e78d b.n 246d4 + 247b8: 2000bb08 .word 0x2000bb08 + 247bc: 20004c68 .word 0x20004c68 + 247c0: 200023ec .word 0x200023ec + 247c4: 200038ac .word 0x200038ac + 247c8: 200038c4 .word 0x200038c4 + +000247cc : void BMCMidi::sendSongSelect(uint8_t port, uint8_t song, uint8_t cable){ - 246ec: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 247cc: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} if(port>127){ - 246f0: fa4f f981 sxtb.w r9, r1 - 246f4: b085 sub sp, #20 - 246f6: 460c mov r4, r1 - 246f8: 4605 mov r5, r0 - 246fa: f1b9 0f00 cmp.w r9, #0 - 246fe: 4690 mov r8, r2 - 24700: 461f mov r7, r3 - 24702: f2c0 80a2 blt.w 2484a + 247d0: fa4f f881 sxtb.w r8, r1 + 247d4: b084 sub sp, #16 + 247d6: 460c mov r4, r1 + 247d8: 4605 mov r5, r0 + 247da: f1b8 0f00 cmp.w r8, #0 + 247de: 4617 mov r7, r2 + 247e0: 4699 mov r9, r3 + 247e2: db23 blt.n 2482c if(isMidiUsbPort(port)){ - 24706: 07ca lsls r2, r1, #31 - 24708: d41a bmi.n 24740 -void BMCMidi::sendSongSelect(uint8_t port, uint8_t song, uint8_t cable){ - 2470a: 4623 mov r3, r4 + 247e4: 07ca lsls r2, r1, #31 + 247e6: d50a bpl.n 247fe + if (cable >= MIDI_NUM_CABLES) return; + 247e8: f1b9 0f00 cmp.w r9, #0 + 247ec: d107 bne.n 247fe + | ((data1 & 0x7F) << 16)); + 247ee: 043b lsls r3, r7, #16 + usb_midi_write_packed((type << 8) | 0x02 | ((cable & 0x0F) << 4) + 247f0: f24f 3002 movw r0, #62210 ; 0xf302 + | ((data1 & 0x7F) << 16)); + 247f4: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 + usb_midi_write_packed((type << 8) | 0x02 | ((cable & 0x0F) << 4) + 247f8: 4318 orrs r0, r3 + 247fa: f007 f97d bl 2baf8 if(isMidiSerialAPort(port)){ - 2470c: 0798 lsls r0, r3, #30 - 2470e: d46b bmi.n 247e8 - 24710: f1b9 0f00 cmp.w r9, #0 - 24714: db78 blt.n 24808 - if(isMidiSerialBPort(port)){ - 24716: 0763 lsls r3, r4, #29 - 24718: d41e bmi.n 24758 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 2471a: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 - 2471e: 4623 mov r3, r4 + 247fe: 07a3 lsls r3, r4, #30 + 24800: d425 bmi.n 2484e if(isMidiHostPort(port) && globals.hostConnected()){ - 24720: 069a lsls r2, r3, #26 + 24802: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 + 24806: 06a1 lsls r1, r4, #26 + 24808: d43c bmi.n 24884 + return bitRead(flags, bit); + 2480a: 6dc6 ldr r6, [r0, #92] ; 0x5c + 2480c: 4622 mov r2, r4 + if(isMidiBlePort(port) && globals.bleConnected()){ + 2480e: 0652 lsls r2, r2, #25 + 24810: d502 bpl.n 24818 + 24812: 06f3 lsls r3, r6, #27 + 24814: f100 808a bmi.w 2492c + bitSet(flags, bit); + 24818: f046 0602 orr.w r6, r6, #2 return bitRead(flags, bit); - 24722: 6dc6 ldr r6, [r0, #92] ; 0x5c - 24724: d502 bpl.n 2472c - 24726: 0733 lsls r3, r6, #28 - 24728: f100 80af bmi.w 2488a - 2472c: f8b0 3060 ldrh.w r3, [r0, #96] ; 0x60 + 2481c: f8b0 3060 ldrh.w r3, [r0, #96] ; 0x60 bitSet(flags, bit); - 24730: f046 0602 orr.w r6, r6, #2 + 24820: 65c6 str r6, [r0, #92] ; 0x5c if(globals.getMidiOutDebug()){ - 24734: 0699 lsls r1, r3, #26 - 24736: 65c6 str r6, [r0, #92] ; 0x5c - 24738: d41c bmi.n 24774 + 24822: 0698 lsls r0, r3, #26 + 24824: d436 bmi.n 24894 } - 2473a: b005 add sp, #20 - 2473c: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - if (cable >= MIDI_NUM_CABLES) return; - 24740: 2f00 cmp r7, #0 - 24742: d1e2 bne.n 2470a - | ((data1 & 0x7F) << 16)); - 24744: ea4f 4308 mov.w r3, r8, lsl #16 - usb_midi_write_packed((type << 8) | 0x02 | ((cable & 0x0F) << 4) - 24748: f24f 3002 movw r0, #62210 ; 0xf302 - | ((data1 & 0x7F) << 16)); - 2474c: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 - usb_midi_write_packed((type << 8) | 0x02 | ((cable & 0x0F) << 4) - 24750: 4318 orrs r0, r3 - 24752: f007 f95d bl 2ba10 - if(port>127){ - 24756: e7d8 b.n 2470a + 24826: b004 add sp, #16 + 24828: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 2482c: f8d0 0108 ldr.w r0, [r0, #264] ; 0x108 + 24830: f001 030f and.w r3, r1, #15 + 24834: f001 0a0f and.w sl, r1, #15 + 24838: f503 63ef add.w r3, r3, #1912 ; 0x778 + 2483c: 6802 ldr r2, [r0, #0] + 2483e: eb02 0243 add.w r2, r2, r3, lsl #1 + 24842: 005e lsls r6, r3, #1 + 24844: 7a53 ldrb r3, [r2, #9] + if(isMidiUsbPort(port)){ + 24846: 07da lsls r2, r3, #31 + 24848: d45f bmi.n 2490a + if(isMidiSerialAPort(port)){ + 2484a: 079b lsls r3, r3, #30 + 2484c: d513 bpl.n 24876 Port.write(status); - 24758: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 2475c: 21f3 movs r1, #243 ; 0xf3 - 2475e: 6803 ldr r3, [r0, #0] - 24760: 681b ldr r3, [r3, #0] - 24762: 4798 blx r3 + 2484e: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 24852: 21f3 movs r1, #243 ; 0xf3 + 24854: 6803 ldr r3, [r0, #0] + 24856: 681b ldr r3, [r3, #0] + 24858: 4798 blx r3 Port.write(d1 & 0x7F); - 24764: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 24768: f008 017f and.w r1, r8, #127 ; 0x7f - 2476c: 6803 ldr r3, [r0, #0] - 2476e: 681b ldr r3, [r3, #0] - 24770: 4798 blx r3 - 24772: e7d2 b.n 2471a - 24774: 4b53 ldr r3, [pc, #332] ; (248c4 ) + 2485a: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 + 2485e: f007 017f and.w r1, r7, #127 ; 0x7f + 24862: 6803 ldr r3, [r0, #0] + 24864: 681b ldr r3, [r3, #0] + 24866: 4798 blx r3 + if(port>127){ + 24868: f1b8 0f00 cmp.w r8, #0 + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 2486c: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 + if(port>127){ + 24870: dac9 bge.n 24806 + 24872: f004 0a0f and.w sl, r4, #15 + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 24876: 6803 ldr r3, [r0, #0] + 24878: eb03 034a add.w r3, r3, sl, lsl #1 + 2487c: f893 2ef9 ldrb.w r2, [r3, #3833] ; 0xef9 + if(isMidiHostPort(port) && globals.hostConnected()){ + 24880: 0696 lsls r6, r2, #26 + 24882: d540 bpl.n 24906 + return bitRead(flags, bit); + 24884: 6dc6 ldr r6, [r0, #92] ; 0x5c + 24886: 0731 lsls r1, r6, #28 + 24888: d463 bmi.n 24952 + if(port>127){ + 2488a: f1b8 0f00 cmp.w r8, #0 + 2488e: db74 blt.n 2497a + 24890: 4622 mov r2, r4 + 24892: e7bc b.n 2480e + 24894: 4b42 ldr r3, [pc, #264] ; (249a0 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 24776: 220a movs r2, #10 - 24778: 4853 ldr r0, [pc, #332] ; (248c8 ) - 2477a: 6819 ldr r1, [r3, #0] - 2477c: 2300 movs r3, #0 - 2477e: f005 fb95 bl 29eac - 24782: 2101 movs r1, #1 - 24784: 4851 ldr r0, [pc, #324] ; (248cc ) - 24786: f007 fedf bl 2c548 - 2478a: f1b9 0f00 cmp.w r9, #0 - 2478e: f2c0 808e blt.w 248ae + 24896: 220a movs r2, #10 + 24898: 4842 ldr r0, [pc, #264] ; (249a4 ) + 2489a: 6819 ldr r1, [r3, #0] + 2489c: 2300 movs r3, #0 + 2489e: f005 fb7b bl 29f98 + 248a2: 2101 movs r1, #1 + 248a4: 4840 ldr r0, [pc, #256] ; (249a8 ) + 248a6: f007 fec3 bl 2c630 + 248aa: f1b8 0f00 cmp.w r8, #0 + 248ae: db6c blt.n 2498a BMC_PRINTLN( - 24792: 4621 mov r1, r4 - 24794: 4668 mov r0, sp - 24796: f7de ffcf bl 3738 - 2479a: 4669 mov r1, sp - 2479c: 484a ldr r0, [pc, #296] ; (248c8 ) - 2479e: f005 fb37 bl 29e10 - 247a2: 4668 mov r0, sp - 247a4: f005 fc68 bl 2a078 - 247a8: 2101 movs r1, #1 - 247aa: 4848 ldr r0, [pc, #288] ; (248cc ) - 247ac: f007 fecc bl 2c548 - 247b0: 2117 movs r1, #23 - 247b2: 4847 ldr r0, [pc, #284] ; (248d0 ) - 247b4: f007 fec8 bl 2c548 - 247b8: 2101 movs r1, #1 - 247ba: 4844 ldr r0, [pc, #272] ; (248cc ) - 247bc: f007 fec4 bl 2c548 - 247c0: 2105 movs r1, #5 - 247c2: 4844 ldr r0, [pc, #272] ; (248d4 ) - 247c4: f007 fec0 bl 2c548 - 247c8: 2101 movs r1, #1 - 247ca: 4840 ldr r0, [pc, #256] ; (248cc ) - 247cc: f007 febc bl 2c548 + 248b0: 4621 mov r1, r4 + 248b2: 4668 mov r0, sp + 248b4: f7de ff40 bl 3738 + 248b8: 4669 mov r1, sp + 248ba: 483a ldr r0, [pc, #232] ; (249a4 ) + 248bc: f005 fb1e bl 29efc + 248c0: 4668 mov r0, sp + 248c2: f005 fc4d bl 2a160 + 248c6: 2101 movs r1, #1 + 248c8: 4837 ldr r0, [pc, #220] ; (249a8 ) + 248ca: f007 feb1 bl 2c630 + 248ce: 2117 movs r1, #23 + 248d0: 4836 ldr r0, [pc, #216] ; (249ac ) + 248d2: f007 fead bl 2c630 + 248d6: 2101 movs r1, #1 + 248d8: 4833 ldr r0, [pc, #204] ; (249a8 ) + 248da: f007 fea9 bl 2c630 + 248de: 2105 movs r1, #5 + 248e0: 4833 ldr r0, [pc, #204] ; (249b0 ) + 248e2: f007 fea5 bl 2c630 + 248e6: 2101 movs r1, #1 + 248e8: 482f ldr r0, [pc, #188] ; (249a8 ) + 248ea: f007 fea1 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 247d0: 2300 movs r3, #0 - 247d2: 220a movs r2, #10 - 247d4: 4641 mov r1, r8 - 247d6: 483c ldr r0, [pc, #240] ; (248c8 ) - 247d8: f005 fb68 bl 29eac + 248ee: 2300 movs r3, #0 + 248f0: 220a movs r2, #10 + 248f2: 4639 mov r1, r7 + 248f4: 482b ldr r0, [pc, #172] ; (249a4 ) + 248f6: f005 fb4f bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 247dc: 483a ldr r0, [pc, #232] ; (248c8 ) + 248fa: 482a ldr r0, [pc, #168] ; (249a4 ) } - 247de: b005 add sp, #20 - 247e0: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} - 247e4: f005 bb46 b.w 29e74 - Port.write(status); - 247e8: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 247ec: 21f3 movs r1, #243 ; 0xf3 - 247ee: 6803 ldr r3, [r0, #0] - 247f0: 681b ldr r3, [r3, #0] - 247f2: 4798 blx r3 - Port.write(d1 & 0x7F); - 247f4: f8d5 0938 ldr.w r0, [r5, #2360] ; 0x938 - 247f8: f008 017f and.w r1, r8, #127 ; 0x7f - 247fc: 6803 ldr r3, [r0, #0] - 247fe: 681b ldr r3, [r3, #0] - 24800: 4798 blx r3 - 24802: f1b9 0f00 cmp.w r9, #0 - 24806: da86 bge.n 24716 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 24808: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 - 2480c: f004 030f and.w r3, r4, #15 - 24810: 6802 ldr r2, [r0, #0] - 24812: f503 63ef add.w r3, r3, #1912 ; 0x778 - 24816: eb02 0243 add.w r2, r2, r3, lsl #1 - 2481a: 005e lsls r6, r3, #1 - 2481c: 7a53 ldrb r3, [r2, #9] - if(isMidiSerialBPort(port)){ - 2481e: 0759 lsls r1, r3, #29 - 24820: f57f af7e bpl.w 24720 - Port.write(status); - 24824: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 24828: 21f3 movs r1, #243 ; 0xf3 - 2482a: 6803 ldr r3, [r0, #0] - 2482c: 681b ldr r3, [r3, #0] - 2482e: 4798 blx r3 - Port.write(d1 & 0x7F); - 24830: f8d5 0a48 ldr.w r0, [r5, #2632] ; 0xa48 - 24834: f008 017f and.w r1, r8, #127 ; 0x7f - 24838: 6803 ldr r3, [r0, #0] - 2483a: 681b ldr r3, [r3, #0] - 2483c: 4798 blx r3 - 2483e: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 - 24842: 6803 ldr r3, [r0, #0] - 24844: 4433 add r3, r6 - 24846: 7a5b ldrb r3, [r3, #9] - 24848: e76a b.n 24720 - 2484a: f8d0 3108 ldr.w r3, [r0, #264] ; 0x108 - 2484e: 681a ldr r2, [r3, #0] - 24850: f001 030f and.w r3, r1, #15 - 24854: f503 63ef add.w r3, r3, #1912 ; 0x778 - 24858: eb02 0243 add.w r2, r2, r3, lsl #1 - 2485c: 005e lsls r6, r3, #1 - 2485e: 7a53 ldrb r3, [r2, #9] - if(isMidiUsbPort(port)){ - 24860: 07da lsls r2, r3, #31 - 24862: f57f af53 bpl.w 2470c + 248fc: b004 add sp, #16 + 248fe: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 24902: f005 bb2d b.w 29f60 + 24906: 6dc6 ldr r6, [r0, #92] ; 0x5c + 24908: e781 b.n 2480e if (cable >= MIDI_NUM_CABLES) return; - 24866: 2f00 cmp r7, #0 - 24868: f47f af50 bne.w 2470c + 2490a: f1b9 0f00 cmp.w r9, #0 + 2490e: d19c bne.n 2484a | ((data1 & 0x7F) << 16)); - 2486c: ea4f 4308 mov.w r3, r8, lsl #16 + 24910: 043b lsls r3, r7, #16 usb_midi_write_packed((type << 8) | 0x02 | ((cable & 0x0F) << 4) - 24870: f24f 3002 movw r0, #62210 ; 0xf302 + 24912: f24f 3002 movw r0, #62210 ; 0xf302 | ((data1 & 0x7F) << 16)); - 24874: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 + 24916: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 usb_midi_write_packed((type << 8) | 0x02 | ((cable & 0x0F) << 4) - 24878: 4318 orrs r0, r3 - 2487a: f007 f8c9 bl 2ba10 - 2487e: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 24882: 681b ldr r3, [r3, #0] - 24884: 4433 add r3, r6 - 24886: 7a5b ldrb r3, [r3, #9] - 24888: e740 b.n 2470c + 2491a: 4318 orrs r0, r3 + 2491c: f007 f8ec bl 2baf8 + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 24920: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 + 24924: 6803 ldr r3, [r0, #0] + 24926: 4433 add r3, r6 + 24928: 7a5b ldrb r3, [r3, #9] + 2492a: e78e b.n 2484a + Port.write(status); + 2492c: f505 5680 add.w r6, r5, #4096 ; 0x1000 + 24930: 21f3 movs r1, #243 ; 0xf3 + 24932: f8d6 0188 ldr.w r0, [r6, #392] ; 0x188 + 24936: 6803 ldr r3, [r0, #0] + 24938: 681b ldr r3, [r3, #0] + 2493a: 4798 blx r3 + Port.write(d1 & 0x7F); + 2493c: f8d6 0188 ldr.w r0, [r6, #392] ; 0x188 + 24940: f007 017f and.w r1, r7, #127 ; 0x7f + 24944: 6803 ldr r3, [r0, #0] + 24946: 681b ldr r3, [r3, #0] + 24948: 4798 blx r3 + globals.setMidiOutActivity(); + 2494a: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 + bitSet(flags, bit); + 2494e: 6dc6 ldr r6, [r0, #92] ; 0x5c + } + 24950: e762 b.n 24818 write_packed((type << 8) | 0x02 | ((cable & 0x0F) << 4) - 2488a: 013f lsls r7, r7, #4 - 2488c: f24f 3102 movw r1, #62210 ; 0xf302 + 24952: ea4f 1309 mov.w r3, r9, lsl #4 + 24956: f24f 3102 movw r1, #62210 ; 0xf302 | ((data1 & 0x7F) << 16)); - 24890: ea4f 4308 mov.w r3, r8, lsl #16 + 2495a: 043a lsls r2, r7, #16 write_packed((type << 8) | 0x02 | ((cable & 0x0F) << 4) - 24894: f505 6036 add.w r0, r5, #2912 ; 0xb60 - 24898: b2ff uxtb r7, r7 + 2495c: f505 6026 add.w r0, r5, #2656 ; 0xa60 + 24960: b2db uxtb r3, r3 | ((data1 & 0x7F) << 16)); - 2489a: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 - 2489e: 431f orrs r7, r3 + 24962: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 24966: 4313 orrs r3, r2 write_packed((type << 8) | 0x02 | ((cable & 0x0F) << 4) - 248a0: 4339 orrs r1, r7 - 248a2: f003 fe87 bl 285b4 - globals.setMidiOutActivity(); - 248a6: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 - 248aa: 6dc6 ldr r6, [r0, #92] ; 0x5c - 248ac: e73e b.n 2472c - 248ae: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 - 248b2: f004 040f and.w r4, r4, #15 - 248b6: 681b ldr r3, [r3, #0] - 248b8: eb03 0344 add.w r3, r3, r4, lsl #1 - 248bc: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 - 248c0: e767 b.n 24792 - 248c2: bf00 nop - 248c4: 2000bae8 .word 0x2000bae8 - 248c8: 20004ba8 .word 0x20004ba8 - 248cc: 200023ec .word 0x200023ec - 248d0: 200037cc .word 0x200037cc - 248d4: 200037e4 .word 0x200037e4 - -000248d8 : + 24968: 4319 orrs r1, r3 + 2496a: f003 fe99 bl 286a0 + if(isMidiBlePort(port) && globals.bleConnected()){ + 2496e: f8d5 0108 ldr.w r0, [r5, #264] ; 0x108 + if(port>127){ + 24972: f1b8 0f00 cmp.w r8, #0 + return bitRead(flags, bit); + 24976: 6dc6 ldr r6, [r0, #92] ; 0x5c + 24978: da8a bge.n 24890 + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 2497a: f004 020f and.w r2, r4, #15 + 2497e: 6803 ldr r3, [r0, #0] + 24980: eb03 0342 add.w r3, r3, r2, lsl #1 + 24984: f893 2ef9 ldrb.w r2, [r3, #3833] ; 0xef9 + 24988: e741 b.n 2480e + 2498a: f8d5 3108 ldr.w r3, [r5, #264] ; 0x108 + 2498e: f004 040f and.w r4, r4, #15 + 24992: 681b ldr r3, [r3, #0] + 24994: eb03 0344 add.w r3, r3, r4, lsl #1 + 24998: f893 4ef9 ldrb.w r4, [r3, #3833] ; 0xef9 + 2499c: e788 b.n 248b0 + 2499e: bf00 nop + 249a0: 2000bb08 .word 0x2000bb08 + 249a4: 20004c68 .word 0x20004c68 + 249a8: 200023ec .word 0x200023ec + 249ac: 2000388c .word 0x2000388c + 249b0: 200038a4 .word 0x200038a4 + +000249b4 : uint8_t channel, uint8_t cable){ - 248d8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 249b4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} switch(type){ - 248dc: 2af2 cmp r2, #242 ; 0xf2 + 249b8: 2af2 cmp r2, #242 ; 0xf2 uint8_t channel, uint8_t cable){ - 248de: b087 sub sp, #28 - 248e0: 461d mov r5, r3 - 248e2: 4607 mov r7, r0 - 248e4: 4614 mov r4, r2 - 248e6: 460e mov r6, r1 - 248e8: f89d 8040 ldrb.w r8, [sp, #64] ; 0x40 - 248ec: f89d 9044 ldrb.w r9, [sp, #68] ; 0x44 - 248f0: f89d 3048 ldrb.w r3, [sp, #72] ; 0x48 + 249ba: b087 sub sp, #28 + 249bc: 461d mov r5, r3 + 249be: 4607 mov r7, r0 + 249c0: 4614 mov r4, r2 + 249c2: 460e mov r6, r1 + 249c4: f89d 8040 ldrb.w r8, [sp, #64] ; 0x40 + 249c8: f89d 9044 ldrb.w r9, [sp, #68] ; 0x44 + 249cc: f89d 3048 ldrb.w r3, [sp, #72] ; 0x48 switch(type){ - 248f4: d913 bls.n 2491e - 248f6: f102 0e0d add.w lr, r2, #13 - 248fa: f04f 0c01 mov.w ip, #1 - 248fe: fa5f fe8e uxtb.w lr, lr - 24902: fa0c fc0e lsl.w ip, ip, lr - 24906: f41c 5fdd tst.w ip, #7072 ; 0x1ba0 - 2490a: f040 80e7 bne.w 24adc - 2490e: f240 4246 movw r2, #1094 ; 0x446 - 24912: ea1c 0f02 tst.w ip, r2 - 24916: d013 beq.n 24940 -} - 24918: b007 add sp, #28 - 2491a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 249d0: d913 bls.n 249fa + 249d2: f102 0e0d add.w lr, r2, #13 + 249d6: f04f 0c01 mov.w ip, #1 + 249da: fa5f fe8e uxtb.w lr, lr + 249de: fa0c fc0e lsl.w ip, ip, lr + 249e2: f41c 5fdd tst.w ip, #7072 ; 0x1ba0 + 249e6: f040 80f0 bne.w 24bca + 249ea: f240 4246 movw r2, #1094 ; 0x446 + 249ee: ea1c 0f02 tst.w ip, r2 + 249f2: d013 beq.n 24a1c +} + 249f4: b007 add sp, #28 + 249f6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} switch(type){ - 2491e: 2af0 cmp r2, #240 ; 0xf0 - 24920: d0fa beq.n 24918 - 24922: 2af2 cmp r2, #242 ; 0xf2 - 24924: d110 bne.n 24948 + 249fa: 2af0 cmp r2, #240 ; 0xf0 + 249fc: d0fa beq.n 249f4 + 249fe: 2af2 cmp r2, #242 ; 0xf2 + 24a00: d110 bne.n 24a24 sendSongPosition(port, (data1 & 0x7F) | ((data2 & 0x7F)<<7), cable); - 24926: ea4f 18c8 mov.w r8, r8, lsl #7 - 2492a: f005 027f and.w r2, r5, #127 ; 0x7f - 2492e: f408 587e and.w r8, r8, #16256 ; 0x3f80 - 24932: ea42 0208 orr.w r2, r2, r8 + 24a02: ea4f 18c8 mov.w r8, r8, lsl #7 + 24a06: f005 027f and.w r2, r5, #127 ; 0x7f + 24a0a: f408 587e and.w r8, r8, #16256 ; 0x3f80 + 24a0e: ea42 0208 orr.w r2, r2, r8 } - 24936: b007 add sp, #28 - 24938: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 24a12: b007 add sp, #28 + 24a14: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sendSongPosition(port, (data1 & 0x7F) | ((data2 & 0x7F)<<7), cable); - 2493c: f7ff bdd0 b.w 244e0 + 24a18: f7ff bdcc b.w 245b4 switch(type){ - 24940: f01c 0f01 tst.w ip, #1 - 24944: f040 80c4 bne.w 24ad0 + 24a1c: f01c 0f01 tst.w ip, #1 + 24a20: f040 80cd bne.w 24bbe if(data2 > 127){ - 24948: f018 0f80 tst.w r8, #128 ; 0x80 + 24a24: f018 0f80 tst.w r8, #128 ; 0x80 type &= 0xF0; - 2494c: f004 0af0 and.w sl, r4, #240 ; 0xf0 + 24a28: f004 0af0 and.w sl, r4, #240 ; 0xf0 if(data2 > 127){ - 24950: f040 80ce bne.w 24af0 + 24a2c: f040 80d7 bne.w 24bde if(port>127){ - 24954: fa4f fb86 sxtb.w fp, r6 - 24958: f1bb 0f00 cmp.w fp, #0 - 2495c: f2c0 80dc blt.w 24b18 + 24a30: fa4f fb86 sxtb.w fp, r6 + 24a34: f1bb 0f00 cmp.w fp, #0 + 24a38: f2c0 80e5 blt.w 24c06 if(isMidiUsbPort(port)){ - 24960: 07f2 lsls r2, r6, #31 - 24962: f140 80f4 bpl.w 24b4e + 24a3c: 07f2 lsls r2, r6, #31 + 24a3e: f140 80fd bpl.w 24c3c if (type < 0xF0) { - 24966: 2b00 cmp r3, #0 - 24968: f040 80f1 bne.w 24b4e - 2496c: f1ba 0ff0 cmp.w sl, #240 ; 0xf0 - 24970: f000 80ed beq.w 24b4e + 24a42: f1ba 0ff0 cmp.w sl, #240 ; 0xf0 + 24a46: f000 80f9 beq.w 24c3c + 24a4a: 2b00 cmp r3, #0 + 24a4c: f040 80f6 bne.w 24c3c if (type < 0x80) return; - 24974: f01a 0f80 tst.w sl, #128 ; 0x80 - 24978: f000 80e9 beq.w 24b4e + 24a50: f01a 0f80 tst.w sl, #128 ; 0x80 + 24a54: f000 80f2 beq.w 24c3c | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 2497c: f109 30ff add.w r0, r9, #4294967295 ; 0xffffffff - 24980: 042a lsls r2, r5, #16 - 24982: 9301 str r3, [sp, #4] - 24984: 0200 lsls r0, r0, #8 - 24986: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 - 2498a: f400 6070 and.w r0, r0, #3840 ; 0xf00 - 2498e: 4310 orrs r0, r2 - 24990: ea40 200a orr.w r0, r0, sl, lsl #8 - 24994: ea40 101a orr.w r0, r0, sl, lsr #4 + 24a58: f109 30ff add.w r0, r9, #4294967295 ; 0xffffffff + 24a5c: 042a lsls r2, r5, #16 + 24a5e: 9301 str r3, [sp, #4] + 24a60: 0200 lsls r0, r0, #8 + 24a62: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 24a66: f400 6070 and.w r0, r0, #3840 ; 0xf00 + 24a6a: 4310 orrs r0, r2 + 24a6c: ea40 200a orr.w r0, r0, sl, lsl #8 + 24a70: ea40 101a orr.w r0, r0, sl, lsr #4 usb_midi_write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 24998: ea40 6008 orr.w r0, r0, r8, lsl #24 - 2499c: f007 f838 bl 2ba10 - 249a0: f1bb 0f00 cmp.w fp, #0 - 249a4: 9b01 ldr r3, [sp, #4] - 249a6: f280 80d2 bge.w 24b4e - 249aa: f8d7 0108 ldr.w r0, [r7, #264] ; 0x108 - 249ae: f006 0c0f and.w ip, r6, #15 + 24a74: ea40 6008 orr.w r0, r0, r8, lsl #24 + 24a78: f007 f83e bl 2baf8 + 24a7c: f1bb 0f00 cmp.w fp, #0 + 24a80: 9b01 ldr r3, [sp, #4] + 24a82: f280 80db bge.w 24c3c + 24a86: f8d7 0108 ldr.w r0, [r7, #264] ; 0x108 + 24a8a: f006 0c0f and.w ip, r6, #15 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 249b2: 6802 ldr r2, [r0, #0] - 249b4: 4601 mov r1, r0 - 249b6: eb02 024c add.w r2, r2, ip, lsl #1 - 249ba: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 24a8e: 6801 ldr r1, [r0, #0] + 24a90: 4602 mov r2, r0 + 24a92: eb01 014c add.w r1, r1, ip, lsl #1 + 24a96: f891 1ef9 ldrb.w r1, [r1, #3833] ; 0xef9 if(isMidiSerialAPort(port)){ - 249be: 0790 lsls r0, r2, #30 - 249c0: f100 80cd bmi.w 24b5e - if(isMidiSerialBPort(port)){ - 249c4: 0750 lsls r0, r2, #29 - 249c6: f100 80f9 bmi.w 24bbc + 24a9a: 0788 lsls r0, r1, #30 + 24a9c: f100 80dd bmi.w 24c5a if(isMidiHostPort(port) && globals.hostConnected()){ - 249ca: 0694 lsls r4, r2, #26 - 249cc: d503 bpl.n 249d6 - return bitRead(flags, bit); - 249ce: 6dca ldr r2, [r1, #92] ; 0x5c - 249d0: 0710 lsls r0, r2, #28 - 249d2: f100 81b3 bmi.w 24d3c + 24aa0: 0688 lsls r0, r1, #26 + 24aa2: f100 80d1 bmi.w 24c48 + if(isMidiBlePort(port) && globals.bleConnected()){ + 24aa6: 0648 lsls r0, r1, #25 + 24aa8: d50c bpl.n 24ac4 + if(type <= BMC_MIDI_PITCH_BEND){ + 24aaa: f1ba 0fe0 cmp.w sl, #224 ; 0xe0 + 24aae: 6dd1 ldr r1, [r2, #92] ; 0x5c + 24ab0: bf8c ite hi + 24ab2: 2300 movhi r3, #0 + 24ab4: 2301 movls r3, #1 + if(channel < 1){ + 24ab6: ea13 1311 ands.w r3, r3, r1, lsr #4 + 24aba: d003 beq.n 24ac4 + 24abc: f1b9 0f00 cmp.w r9, #0 + 24ac0: f040 811c bne.w 24cfc if(type == BMC_MIDI_PROGRAM_CHANGE){ - 249d6: f1ba 0fc0 cmp.w sl, #192 ; 0xc0 - 249da: f000 8116 beq.w 24c0a + 24ac4: f1ba 0fc0 cmp.w sl, #192 ; 0xc0 + 24ac8: f000 80f5 beq.w 24cb6 } else if(type == BMC_MIDI_CONTROL_CHANGE){ - 249de: f1ba 0fb0 cmp.w sl, #176 ; 0xb0 - 249e2: f000 8135 beq.w 24c50 + 24acc: f1ba 0fb0 cmp.w sl, #176 ; 0xb0 + 24ad0: f000 8133 beq.w 24d3a bitSet(flags, bit); - 249e6: 6dca ldr r2, [r1, #92] ; 0x5c - 249e8: f042 0202 orr.w r2, r2, #2 + 24ad4: 6dd3 ldr r3, [r2, #92] ; 0x5c + 24ad6: f043 0302 orr.w r3, r3, #2 + 24ada: 65d3 str r3, [r2, #92] ; 0x5c return bitRead(flags, bit); - 249ec: f8b1 3060 ldrh.w r3, [r1, #96] ; 0x60 - bitSet(flags, bit); - 249f0: 65ca str r2, [r1, #92] ; 0x5c + 24adc: f8b2 3060 ldrh.w r3, [r2, #96] ; 0x60 if(globals.getMidiOutDebug()){ - 249f2: 0699 lsls r1, r3, #26 - 249f4: d590 bpl.n 24918 - 249f6: 4bb2 ldr r3, [pc, #712] ; (24cc0 ) + 24ae0: 0699 lsls r1, r3, #26 + 24ae2: d587 bpl.n 249f4 + 24ae4: 4bb3 ldr r3, [pc, #716] ; (24db4 ) size_t print(unsigned long n) { return printNumber(n, 10, 0); } - 249f8: 220a movs r2, #10 - 249fa: 48b2 ldr r0, [pc, #712] ; (24cc4 ) - 249fc: 6819 ldr r1, [r3, #0] - 249fe: 2300 movs r3, #0 - 24a00: f005 fa54 bl 29eac - 24a04: 2101 movs r1, #1 - 24a06: 48b0 ldr r0, [pc, #704] ; (24cc8 ) - 24a08: f007 fd9e bl 2c548 + 24ae6: 220a movs r2, #10 + 24ae8: 48b3 ldr r0, [pc, #716] ; (24db8 ) + 24aea: 6819 ldr r1, [r3, #0] + 24aec: 2300 movs r3, #0 + 24aee: f005 fa53 bl 29f98 + 24af2: 2101 movs r1, #1 + 24af4: 48b1 ldr r0, [pc, #708] ; (24dbc ) + 24af6: f007 fd9b bl 2c630 if(port>127){ - 24a0c: f1bb 0f00 cmp.w fp, #0 - 24a10: f2c0 810c blt.w 24c2c + 24afa: f1bb 0f00 cmp.w fp, #0 + 24afe: f2c0 80f3 blt.w 24ce8 BMC_PRINTLN( - 24a14: 4631 mov r1, r6 - 24a16: a802 add r0, sp, #8 - 24a18: f7de fe8e bl 3738 - 24a1c: a902 add r1, sp, #8 - 24a1e: 48a9 ldr r0, [pc, #676] ; (24cc4 ) - 24a20: f005 f9f6 bl 29e10 - 24a24: a802 add r0, sp, #8 - 24a26: f005 fb27 bl 2a078 - 24a2a: 2101 movs r1, #1 - 24a2c: 48a6 ldr r0, [pc, #664] ; (24cc8 ) - 24a2e: f007 fd8b bl 2c548 - 24a32: 2108 movs r1, #8 - 24a34: 48a5 ldr r0, [pc, #660] ; (24ccc ) - 24a36: f007 fd87 bl 2c548 - 24a3a: 2101 movs r1, #1 - 24a3c: 48a2 ldr r0, [pc, #648] ; (24cc8 ) - 24a3e: f007 fd83 bl 2c548 - 24a42: 4651 mov r1, sl - 24a44: a802 add r0, sp, #8 - 24a46: f7de fee7 bl 3818 - 24a4a: a902 add r1, sp, #8 - 24a4c: 489d ldr r0, [pc, #628] ; (24cc4 ) - 24a4e: f005 f9df bl 29e10 - 24a52: a802 add r0, sp, #8 - 24a54: f005 fb10 bl 2a078 - 24a58: 2101 movs r1, #1 - 24a5a: 489b ldr r0, [pc, #620] ; (24cc8 ) - 24a5c: f007 fd74 bl 2c548 - 24a60: 2108 movs r1, #8 - 24a62: 489b ldr r0, [pc, #620] ; (24cd0 ) - 24a64: f007 fd70 bl 2c548 - 24a68: 2101 movs r1, #1 - 24a6a: 4897 ldr r0, [pc, #604] ; (24cc8 ) - 24a6c: f007 fd6c bl 2c548 + 24b02: 4631 mov r1, r6 + 24b04: a802 add r0, sp, #8 + 24b06: f7de fe17 bl 3738 + 24b0a: a902 add r1, sp, #8 + 24b0c: 48aa ldr r0, [pc, #680] ; (24db8 ) + 24b0e: f005 f9f5 bl 29efc + 24b12: a802 add r0, sp, #8 + 24b14: f005 fb24 bl 2a160 + 24b18: 2101 movs r1, #1 + 24b1a: 48a8 ldr r0, [pc, #672] ; (24dbc ) + 24b1c: f007 fd88 bl 2c630 + 24b20: 2108 movs r1, #8 + 24b22: 48a7 ldr r0, [pc, #668] ; (24dc0 ) + 24b24: f007 fd84 bl 2c630 + 24b28: 2101 movs r1, #1 + 24b2a: 48a4 ldr r0, [pc, #656] ; (24dbc ) + 24b2c: f007 fd80 bl 2c630 + 24b30: 4651 mov r1, sl + 24b32: a802 add r0, sp, #8 + 24b34: f7de fe70 bl 3818 + 24b38: a902 add r1, sp, #8 + 24b3a: 489f ldr r0, [pc, #636] ; (24db8 ) + 24b3c: f005 f9de bl 29efc + 24b40: a802 add r0, sp, #8 + 24b42: f005 fb0d bl 2a160 + 24b46: 2101 movs r1, #1 + 24b48: 489c ldr r0, [pc, #624] ; (24dbc ) + 24b4a: f007 fd71 bl 2c630 + 24b4e: 2108 movs r1, #8 + 24b50: 489c ldr r0, [pc, #624] ; (24dc4 ) + 24b52: f007 fd6d bl 2c630 + 24b56: 2101 movs r1, #1 + 24b58: 4898 ldr r0, [pc, #608] ; (24dbc ) + 24b5a: f007 fd69 bl 2c630 size_t print(uint8_t b) { return printNumber(b, 10, 0); } - 24a70: 2300 movs r3, #0 - 24a72: 220a movs r2, #10 - 24a74: 4649 mov r1, r9 - 24a76: 4893 ldr r0, [pc, #588] ; (24cc4 ) - 24a78: f005 fa18 bl 29eac - 24a7c: 2101 movs r1, #1 - 24a7e: 4892 ldr r0, [pc, #584] ; (24cc8 ) - 24a80: f007 fd62 bl 2c548 - 24a84: 2106 movs r1, #6 - 24a86: 4893 ldr r0, [pc, #588] ; (24cd4 ) - 24a88: f007 fd5e bl 2c548 - 24a8c: 2101 movs r1, #1 - 24a8e: 488e ldr r0, [pc, #568] ; (24cc8 ) - 24a90: f007 fd5a bl 2c548 - 24a94: 2300 movs r3, #0 - 24a96: 220a movs r2, #10 - 24a98: 4629 mov r1, r5 - 24a9a: 488a ldr r0, [pc, #552] ; (24cc4 ) - 24a9c: f005 fa06 bl 29eac - 24aa0: 2101 movs r1, #1 - 24aa2: 4889 ldr r0, [pc, #548] ; (24cc8 ) - 24aa4: f007 fd50 bl 2c548 - 24aa8: 2106 movs r1, #6 - 24aaa: 488b ldr r0, [pc, #556] ; (24cd8 ) - 24aac: f007 fd4c bl 2c548 - 24ab0: 2101 movs r1, #1 - 24ab2: 4885 ldr r0, [pc, #532] ; (24cc8 ) - 24ab4: f007 fd48 bl 2c548 - 24ab8: 2300 movs r3, #0 - 24aba: 220a movs r2, #10 - 24abc: 4641 mov r1, r8 - 24abe: 4881 ldr r0, [pc, #516] ; (24cc4 ) - 24ac0: f005 f9f4 bl 29eac + 24b5e: 2300 movs r3, #0 + 24b60: 220a movs r2, #10 + 24b62: 4649 mov r1, r9 + 24b64: 4894 ldr r0, [pc, #592] ; (24db8 ) + 24b66: f005 fa17 bl 29f98 + 24b6a: 2101 movs r1, #1 + 24b6c: 4893 ldr r0, [pc, #588] ; (24dbc ) + 24b6e: f007 fd5f bl 2c630 + 24b72: 2106 movs r1, #6 + 24b74: 4894 ldr r0, [pc, #592] ; (24dc8 ) + 24b76: f007 fd5b bl 2c630 + 24b7a: 2101 movs r1, #1 + 24b7c: 488f ldr r0, [pc, #572] ; (24dbc ) + 24b7e: f007 fd57 bl 2c630 + 24b82: 2300 movs r3, #0 + 24b84: 220a movs r2, #10 + 24b86: 4629 mov r1, r5 + 24b88: 488b ldr r0, [pc, #556] ; (24db8 ) + 24b8a: f005 fa05 bl 29f98 + 24b8e: 2101 movs r1, #1 + 24b90: 488a ldr r0, [pc, #552] ; (24dbc ) + 24b92: f007 fd4d bl 2c630 + 24b96: 2106 movs r1, #6 + 24b98: 488c ldr r0, [pc, #560] ; (24dcc ) + 24b9a: f007 fd49 bl 2c630 + 24b9e: 2101 movs r1, #1 + 24ba0: 4886 ldr r0, [pc, #536] ; (24dbc ) + 24ba2: f007 fd45 bl 2c630 + 24ba6: 2300 movs r3, #0 + 24ba8: 220a movs r2, #10 + 24baa: 4641 mov r1, r8 + 24bac: 4882 ldr r0, [pc, #520] ; (24db8 ) + 24bae: f005 f9f3 bl 29f98 size_t println(uint8_t b) { return print(b) + println(); } - 24ac4: 487f ldr r0, [pc, #508] ; (24cc4 ) + 24bb2: 4881 ldr r0, [pc, #516] ; (24db8 ) } - 24ac6: b007 add sp, #28 - 24ac8: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 24acc: f005 b9d2 b.w 29e74 + 24bb4: b007 add sp, #28 + 24bb6: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 24bba: f005 b9d1 b.w 29f60 sendSongSelect(port, data1, cable); - 24ad0: 462a mov r2, r5 + 24bbe: 462a mov r2, r5 } - 24ad2: b007 add sp, #28 - 24ad4: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 24bc0: b007 add sp, #28 + 24bc2: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} sendSongSelect(port, data1, cable); - 24ad8: f7ff be08 b.w 246ec - return bitRead(flags, bit); - 24adc: f890 410c ldrb.w r4, [r0, #268] ; 0x10c + 24bc6: f7ff be01 b.w 247cc + 24bca: f890 410c ldrb.w r4, [r0, #268] ; 0x10c if(flags.read(BMC_FLAG_MIDI_REAL_TIME_BLOCK_OUTPUT)){ - 24ae0: 0764 lsls r4, r4, #29 - 24ae2: f53f af19 bmi.w 24918 + 24bce: 0764 lsls r4, r4, #29 + 24bd0: f53f af10 bmi.w 249f4 } - 24ae6: b007 add sp, #28 - 24ae8: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 24aec: f7fe b9d6 b.w 22e9c + 24bd4: b007 add sp, #28 + 24bd6: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 24bda: f7fe b9d3 b.w 22f84 uint8_t ch = ((t_channel-1) & 0x0F); - 24af0: f109 32ff add.w r2, r9, #4294967295 ; 0xffffffff + 24bde: f109 32ff add.w r2, r9, #4294967295 ; 0xffffffff return (ch0 ? 0 : 127; - 24b06: f892 210f ldrb.w r2, [r2, #271] ; 0x10f - 24b0a: 2a00 cmp r2, #0 - 24b0c: bf14 ite ne - 24b0e: f04f 0800 movne.w r8, #0 - 24b12: f04f 087f moveq.w r8, #127 ; 0x7f - 24b16: e71d b.n 24954 + 24bf4: f892 210f ldrb.w r2, [r2, #271] ; 0x10f + 24bf8: 2a00 cmp r2, #0 + 24bfa: bf14 ite ne + 24bfc: f04f 0800 movne.w r8, #0 + 24c00: f04f 087f moveq.w r8, #127 ; 0x7f + 24c04: e714 b.n 24a30 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 24b18: f8d7 0108 ldr.w r0, [r7, #264] ; 0x108 - 24b1c: f006 010f and.w r1, r6, #15 - 24b20: 6802 ldr r2, [r0, #0] - 24b22: 468c mov ip, r1 - 24b24: eb02 0241 add.w r2, r2, r1, lsl #1 - 24b28: 4601 mov r1, r0 - 24b2a: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 + 24c06: f8d7 0108 ldr.w r0, [r7, #264] ; 0x108 + 24c0a: f006 010f and.w r1, r6, #15 + 24c0e: 6802 ldr r2, [r0, #0] + 24c10: 468c mov ip, r1 + 24c12: eb02 0241 add.w r2, r2, r1, lsl #1 + 24c16: f892 1ef9 ldrb.w r1, [r2, #3833] ; 0xef9 + 24c1a: 4602 mov r2, r0 if(isMidiUsbPort(port)){ - 24b2e: f012 0f01 tst.w r2, #1 - 24b32: f43f af44 beq.w 249be + 24c1c: f011 0f01 tst.w r1, #1 + 24c20: f43f af3b beq.w 24a9a if (type < 0xF0) { - 24b36: f1ba 0ff0 cmp.w sl, #240 ; 0xf0 - 24b3a: f43f af40 beq.w 249be - 24b3e: 2b00 cmp r3, #0 - 24b40: f47f af3d bne.w 249be + 24c24: f1ba 0ff0 cmp.w sl, #240 ; 0xf0 + 24c28: f43f af37 beq.w 24a9a + 24c2c: 2b00 cmp r3, #0 + 24c2e: f47f af34 bne.w 24a9a if (type < 0x80) return; - 24b44: f01a 0f80 tst.w sl, #128 ; 0x80 - 24b48: f43f af33 beq.w 249b2 - 24b4c: e716 b.n 2497c + 24c32: f01a 0f80 tst.w sl, #128 ; 0x80 + 24c36: f43f af2a beq.w 24a8e + 24c3a: e70d b.n 24a58 if(isMidiSerialAPort(port)){ - 24b4e: 07b2 lsls r2, r6, #30 - 24b50: d405 bmi.n 24b5e - if(isMidiSerialBPort(port)){ - 24b52: 0772 lsls r2, r6, #29 - 24b54: d432 bmi.n 24bbc + 24c3c: 07b2 lsls r2, r6, #30 + 24c3e: d40c bmi.n 24c5a if(isMidiHostPort(port) && globals.hostConnected()){ - 24b56: f8d7 1108 ldr.w r1, [r7, #264] ; 0x108 - 24b5a: 4632 mov r2, r6 - 24b5c: e735 b.n 249ca - if(channel < 1){ - 24b5e: f1b9 0f00 cmp.w r9, #0 - 24b62: d01e beq.n 24ba2 - 24b64: f1ba 0fe0 cmp.w sl, #224 ; 0xe0 - 24b68: d81b bhi.n 24ba2 - switch(type){ - 24b6a: f1ba 0fc0 cmp.w sl, #192 ; 0xc0 - 24b6e: d005 beq.n 24b7c - 24b70: f240 80d2 bls.w 24d18 - 24b74: f1ba 0fd0 cmp.w sl, #208 ; 0xd0 - 24b78: f040 80b0 bne.w 24cdc - Port.write(status); - 24b7c: f8d7 0938 ldr.w r0, [r7, #2360] ; 0x938 - writeData(type | (channel-1), d1); - 24b80: f109 31ff add.w r1, r9, #4294967295 ; 0xffffffff - 24b84: 9301 str r3, [sp, #4] - Port.write(status); - 24b86: 6802 ldr r2, [r0, #0] - 24b88: ea4a 0101 orr.w r1, sl, r1 - 24b8c: 6812 ldr r2, [r2, #0] - 24b8e: b2c9 uxtb r1, r1 - 24b90: 4790 blx r2 - Port.write(d1 & 0x7F); - 24b92: f8d7 0938 ldr.w r0, [r7, #2360] ; 0x938 - 24b96: f005 017f and.w r1, r5, #127 ; 0x7f - 24b9a: 6802 ldr r2, [r0, #0] - 24b9c: 6812 ldr r2, [r2, #0] - 24b9e: 4790 blx r2 - 24ba0: 9b01 ldr r3, [sp, #4] + 24c40: 06b1 lsls r1, r6, #26 + 24c42: f8d7 2108 ldr.w r2, [r7, #264] ; 0x108 + 24c46: d506 bpl.n 24c56 + 24c48: 6dd1 ldr r1, [r2, #92] ; 0x5c + 24c4a: 0709 lsls r1, r1, #28 + 24c4c: f100 80c0 bmi.w 24dd0 if(port>127){ - 24ba2: f1bb 0f00 cmp.w fp, #0 - 24ba6: dad4 bge.n 24b52 - return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 24ba8: f8d7 1108 ldr.w r1, [r7, #264] ; 0x108 - 24bac: f006 000f and.w r0, r6, #15 - 24bb0: 680a ldr r2, [r1, #0] - 24bb2: eb02 0240 add.w r2, r2, r0, lsl #1 - 24bb6: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 - 24bba: e703 b.n 249c4 - if(channel < 1){ - 24bbc: f1b9 0f00 cmp.w r9, #0 - 24bc0: d01c beq.n 24bfc - 24bc2: f1ba 0fe0 cmp.w sl, #224 ; 0xe0 - 24bc6: d819 bhi.n 24bfc + 24c50: f1bb 0f00 cmp.w fp, #0 + 24c54: db40 blt.n 24cd8 + 24c56: 4631 mov r1, r6 + 24c58: e725 b.n 24aa6 + 24c5a: f1b9 0f00 cmp.w r9, #0 + 24c5e: d01d beq.n 24c9c + 24c60: f1ba 0fe0 cmp.w sl, #224 ; 0xe0 + 24c64: d81a bhi.n 24c9c switch(type){ - 24bc8: f1ba 0fc0 cmp.w sl, #192 ; 0xc0 - 24bcc: d003 beq.n 24bd6 - 24bce: d96e bls.n 24cae - 24bd0: f1ba 0fd0 cmp.w sl, #208 ; 0xd0 - 24bd4: d14e bne.n 24c74 + 24c66: f1ba 0fc0 cmp.w sl, #192 ; 0xc0 + 24c6a: d004 beq.n 24c76 + 24c6c: f240 8094 bls.w 24d98 + 24c70: f1ba 0fd0 cmp.w sl, #208 ; 0xd0 + 24c74: d173 bne.n 24d5e Port.write(status); - 24bd6: f8d7 0a48 ldr.w r0, [r7, #2632] ; 0xa48 + 24c76: f8d7 0938 ldr.w r0, [r7, #2360] ; 0x938 writeData(type | (channel-1), d1); - 24bda: f109 31ff add.w r1, r9, #4294967295 ; 0xffffffff - 24bde: 9301 str r3, [sp, #4] + 24c7a: f109 31ff add.w r1, r9, #4294967295 ; 0xffffffff + 24c7e: 9301 str r3, [sp, #4] Port.write(status); - 24be0: 6802 ldr r2, [r0, #0] - 24be2: ea4a 0101 orr.w r1, sl, r1 - 24be6: 6812 ldr r2, [r2, #0] - 24be8: b2c9 uxtb r1, r1 - 24bea: 4790 blx r2 + 24c80: 6802 ldr r2, [r0, #0] + 24c82: ea4a 0101 orr.w r1, sl, r1 + 24c86: 6812 ldr r2, [r2, #0] + 24c88: b2c9 uxtb r1, r1 + 24c8a: 4790 blx r2 Port.write(d1 & 0x7F); - 24bec: f8d7 0a48 ldr.w r0, [r7, #2632] ; 0xa48 - 24bf0: f005 017f and.w r1, r5, #127 ; 0x7f - 24bf4: 6802 ldr r2, [r0, #0] - 24bf6: 6812 ldr r2, [r2, #0] - 24bf8: 4790 blx r2 - 24bfa: 9b01 ldr r3, [sp, #4] - if(port>127){ - 24bfc: f1bb 0f00 cmp.w fp, #0 - 24c00: f8d7 1108 ldr.w r1, [r7, #264] ; 0x108 - 24c04: db1c blt.n 24c40 - 24c06: 4632 mov r2, r6 - 24c08: e6df b.n 249ca + 24c8c: f8d7 0938 ldr.w r0, [r7, #2360] ; 0x938 + 24c90: f005 017f and.w r1, r5, #127 ; 0x7f + 24c94: 6802 ldr r2, [r0, #0] + 24c96: 6812 ldr r2, [r2, #0] + 24c98: 4790 blx r2 + 24c9a: 9b01 ldr r3, [sp, #4] + 24c9c: f1bb 0f00 cmp.w fp, #0 + 24ca0: dace bge.n 24c40 + return globals.store.global.portPresets[(port & 0x0F)].events[0]; + 24ca2: f8d7 2108 ldr.w r2, [r7, #264] ; 0x108 + 24ca6: f006 000f and.w r0, r6, #15 + 24caa: 6811 ldr r1, [r2, #0] + 24cac: eb01 0140 add.w r1, r1, r0, lsl #1 + 24cb0: f891 1ef9 ldrb.w r1, [r1, #3833] ; 0xef9 + 24cb4: e6f4 b.n 24aa0 uint8_t ch = ((t_channel-1) & 0x0F); - 24c0a: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff + 24cb6: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff channel[ch].program = (t_program & 0x7F); - 24c0e: f005 027f and.w r2, r5, #127 ; 0x7f - 24c12: f003 030f and.w r3, r3, #15 - 24c16: eb03 1383 add.w r3, r3, r3, lsl #6 - 24c1a: eb07 0343 add.w r3, r7, r3, lsl #1 - 24c1e: f883 210d strb.w r2, [r3, #269] ; 0x10d + 24cba: f005 017f and.w r1, r5, #127 ; 0x7f + 24cbe: f003 030f and.w r3, r3, #15 + 24cc2: eb03 1383 add.w r3, r3, r3, lsl #6 + 24cc6: eb07 0343 add.w r3, r7, r3, lsl #1 + 24cca: f883 110d strb.w r1, [r3, #269] ; 0x10d bitWrite(flags, bit, value); - 24c22: 6dca ldr r2, [r1, #92] ; 0x5c - 24c24: f042 0220 orr.w r2, r2, #32 - 24c28: 65ca str r2, [r1, #92] ; 0x5c + 24cce: 6dd3 ldr r3, [r2, #92] ; 0x5c + 24cd0: f043 0320 orr.w r3, r3, #32 + 24cd4: 65d3 str r3, [r2, #92] ; 0x5c } - 24c2a: e6dd b.n 249e8 + 24cd6: e6fe b.n 24ad6 return globals.store.global.portPresets[(port & 0x0F)].events[0]; - 24c2c: f8d7 3108 ldr.w r3, [r7, #264] ; 0x108 - 24c30: f006 060f and.w r6, r6, #15 - 24c34: 681b ldr r3, [r3, #0] - 24c36: eb03 0346 add.w r3, r3, r6, lsl #1 - 24c3a: f893 6ef9 ldrb.w r6, [r3, #3833] ; 0xef9 - 24c3e: e6e9 b.n 24a14 - 24c40: f006 000f and.w r0, r6, #15 - 24c44: 680a ldr r2, [r1, #0] - 24c46: eb02 0240 add.w r2, r2, r0, lsl #1 - 24c4a: f892 2ef9 ldrb.w r2, [r2, #3833] ; 0xef9 - 24c4e: e6bc b.n 249ca - uint8_t ch = ((t_channel-1) & 0x0F); - 24c50: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff - channel[ch].control[cc] = (t_value & 0x7F); - 24c54: f005 027f and.w r2, r5, #127 ; 0x7f - 24c58: f003 030f and.w r3, r3, #15 - 24c5c: eb03 1383 add.w r3, r3, r3, lsl #6 - 24c60: eb07 0343 add.w r3, r7, r3, lsl #1 - 24c64: 4413 add r3, r2 - 24c66: f883 810f strb.w r8, [r3, #271] ; 0x10f - 24c6a: 6dca ldr r2, [r1, #92] ; 0x5c - 24c6c: f042 0220 orr.w r2, r2, #32 - 24c70: 65ca str r2, [r1, #92] ; 0x5c - } - 24c72: e6b9 b.n 249e8 + 24cd8: f006 010f and.w r1, r6, #15 + 24cdc: 6813 ldr r3, [r2, #0] + 24cde: eb03 0341 add.w r3, r3, r1, lsl #1 + 24ce2: f893 1ef9 ldrb.w r1, [r3, #3833] ; 0xef9 + 24ce6: e6de b.n 24aa6 + 24ce8: f8d7 3108 ldr.w r3, [r7, #264] ; 0x108 + 24cec: f006 060f and.w r6, r6, #15 + 24cf0: 681b ldr r3, [r3, #0] + 24cf2: eb03 0346 add.w r3, r3, r6, lsl #1 + 24cf6: f893 6ef9 ldrb.w r6, [r3, #3833] ; 0xef9 + 24cfa: e702 b.n 24b02 switch(type){ - 24c74: f1ba 0fe0 cmp.w sl, #224 ; 0xe0 - 24c78: d1c0 bne.n 24bfc + 24cfc: f1ba 0fc0 cmp.w sl, #192 ; 0xc0 + 24d00: d005 beq.n 24d0e + 24d02: f240 80a6 bls.w 24e52 + 24d06: f1ba 0fd0 cmp.w sl, #208 ; 0xd0 + 24d0a: f040 8082 bne.w 24e12 Port.write(status); - 24c7a: f8d7 0a48 ldr.w r0, [r7, #2632] ; 0xa48 - writeData(type | (channel-1), d1, d2); - 24c7e: f109 31ff add.w r1, r9, #4294967295 ; 0xffffffff - 24c82: 9301 str r3, [sp, #4] + 24d0e: f507 5480 add.w r4, r7, #4096 ; 0x1000 + writeData(type | (channel-1), d1); + 24d12: f109 31ff add.w r1, r9, #4294967295 ; 0xffffffff Port.write(status); - 24c84: 6802 ldr r2, [r0, #0] - 24c86: ea4a 0101 orr.w r1, sl, r1 - 24c8a: 6812 ldr r2, [r2, #0] - 24c8c: b2c9 uxtb r1, r1 - 24c8e: 4790 blx r2 + 24d16: f8d4 0188 ldr.w r0, [r4, #392] ; 0x188 + 24d1a: ea4a 0101 orr.w r1, sl, r1 + 24d1e: 6803 ldr r3, [r0, #0] + 24d20: b2c9 uxtb r1, r1 + 24d22: 681b ldr r3, [r3, #0] + 24d24: 4798 blx r3 Port.write(d1 & 0x7F); - 24c90: f8d7 0a48 ldr.w r0, [r7, #2632] ; 0xa48 - 24c94: f005 017f and.w r1, r5, #127 ; 0x7f - 24c98: 6802 ldr r2, [r0, #0] - 24c9a: 6812 ldr r2, [r2, #0] - 24c9c: 4790 blx r2 - Port.write(d2 & 0x7F); - 24c9e: f8d7 0a48 ldr.w r0, [r7, #2632] ; 0xa48 - 24ca2: 4641 mov r1, r8 - 24ca4: 6802 ldr r2, [r0, #0] - 24ca6: 6812 ldr r2, [r2, #0] - 24ca8: 4790 blx r2 - } - 24caa: 9b01 ldr r3, [sp, #4] - 24cac: e7a6 b.n 24bfc + 24d26: f8d4 0188 ldr.w r0, [r4, #392] ; 0x188 + 24d2a: f005 017f and.w r1, r5, #127 ; 0x7f + 24d2e: 6803 ldr r3, [r0, #0] + 24d30: 681b ldr r3, [r3, #0] + 24d32: 4798 blx r3 + globals.setMidiLocalUpdate(true); + 24d34: f8d7 2108 ldr.w r2, [r7, #264] ; 0x108 + } + 24d38: e6c4 b.n 24ac4 + uint8_t ch = ((t_channel-1) & 0x0F); + 24d3a: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff + channel[ch].control[cc] = (t_value & 0x7F); + 24d3e: f005 017f and.w r1, r5, #127 ; 0x7f + 24d42: f003 030f and.w r3, r3, #15 + 24d46: eb03 1383 add.w r3, r3, r3, lsl #6 + 24d4a: eb07 0343 add.w r3, r7, r3, lsl #1 + 24d4e: 440b add r3, r1 + 24d50: f883 810f strb.w r8, [r3, #271] ; 0x10f + 24d54: 6dd3 ldr r3, [r2, #92] ; 0x5c + 24d56: f043 0320 orr.w r3, r3, #32 + 24d5a: 65d3 str r3, [r2, #92] ; 0x5c + } + 24d5c: e6bb b.n 24ad6 switch(type){ - 24cae: f1ba 0fa0 cmp.w sl, #160 ; 0xa0 - 24cb2: d0e2 beq.n 24c7a - 24cb4: d938 bls.n 24d28 - 24cb6: f1ba 0fb0 cmp.w sl, #176 ; 0xb0 - 24cba: d0de beq.n 24c7a - 24cbc: e79e b.n 24bfc - 24cbe: bf00 nop - 24cc0: 2000bae8 .word 0x2000bae8 - 24cc4: 20004ba8 .word 0x20004ba8 - 24cc8: 200023ec .word 0x200023ec - 24ccc: 20003788 .word 0x20003788 - 24cd0: 20001ce0 .word 0x20001ce0 - 24cd4: 20001cd0 .word 0x20001cd0 - 24cd8: 20001cd8 .word 0x20001cd8 - 24cdc: f1ba 0fe0 cmp.w sl, #224 ; 0xe0 - 24ce0: f47f af5f bne.w 24ba2 + 24d5e: f1ba 0fe0 cmp.w sl, #224 ; 0xe0 + 24d62: d19b bne.n 24c9c Port.write(status); - 24ce4: f8d7 0938 ldr.w r0, [r7, #2360] ; 0x938 + 24d64: f8d7 0938 ldr.w r0, [r7, #2360] ; 0x938 writeData(type | (channel-1), d1, d2); - 24ce8: f109 31ff add.w r1, r9, #4294967295 ; 0xffffffff - 24cec: 9301 str r3, [sp, #4] + 24d68: f109 31ff add.w r1, r9, #4294967295 ; 0xffffffff + 24d6c: 9301 str r3, [sp, #4] Port.write(status); - 24cee: 6802 ldr r2, [r0, #0] - 24cf0: ea4a 0101 orr.w r1, sl, r1 - 24cf4: 6812 ldr r2, [r2, #0] - 24cf6: b2c9 uxtb r1, r1 - 24cf8: 4790 blx r2 + 24d6e: 6802 ldr r2, [r0, #0] + 24d70: ea4a 0101 orr.w r1, sl, r1 + 24d74: 6812 ldr r2, [r2, #0] + 24d76: b2c9 uxtb r1, r1 + 24d78: 4790 blx r2 Port.write(d1 & 0x7F); - 24cfa: f8d7 0938 ldr.w r0, [r7, #2360] ; 0x938 - 24cfe: f005 017f and.w r1, r5, #127 ; 0x7f - 24d02: 6802 ldr r2, [r0, #0] - 24d04: 6812 ldr r2, [r2, #0] - 24d06: 4790 blx r2 + 24d7a: f8d7 0938 ldr.w r0, [r7, #2360] ; 0x938 + 24d7e: f005 017f and.w r1, r5, #127 ; 0x7f + 24d82: 6802 ldr r2, [r0, #0] + 24d84: 6812 ldr r2, [r2, #0] + 24d86: 4790 blx r2 Port.write(d2 & 0x7F); - 24d08: f8d7 0938 ldr.w r0, [r7, #2360] ; 0x938 - 24d0c: 4641 mov r1, r8 - 24d0e: 6802 ldr r2, [r0, #0] - 24d10: 6812 ldr r2, [r2, #0] - 24d12: 4790 blx r2 - } - 24d14: 9b01 ldr r3, [sp, #4] - 24d16: e744 b.n 24ba2 + 24d88: f8d7 0938 ldr.w r0, [r7, #2360] ; 0x938 + 24d8c: 4641 mov r1, r8 + 24d8e: 6802 ldr r2, [r0, #0] + 24d90: 6812 ldr r2, [r2, #0] + 24d92: 4790 blx r2 + } + 24d94: 9b01 ldr r3, [sp, #4] + 24d96: e781 b.n 24c9c switch(type){ - 24d18: f1ba 0fa0 cmp.w sl, #160 ; 0xa0 - 24d1c: d0e2 beq.n 24ce4 - 24d1e: d908 bls.n 24d32 - 24d20: f1ba 0fb0 cmp.w sl, #176 ; 0xb0 - 24d24: d0de beq.n 24ce4 - 24d26: e73c b.n 24ba2 - 24d28: f004 04e0 and.w r4, r4, #224 ; 0xe0 - 24d2c: 2c80 cmp r4, #128 ; 0x80 - 24d2e: d0a4 beq.n 24c7a - 24d30: e764 b.n 24bfc - 24d32: f004 02e0 and.w r2, r4, #224 ; 0xe0 - 24d36: 2a80 cmp r2, #128 ; 0x80 - 24d38: d0d4 beq.n 24ce4 - 24d3a: e732 b.n 24ba2 + 24d98: f1ba 0fa0 cmp.w sl, #160 ; 0xa0 + 24d9c: d0e2 beq.n 24d64 + 24d9e: d903 bls.n 24da8 + 24da0: f1ba 0fb0 cmp.w sl, #176 ; 0xb0 + 24da4: d0de beq.n 24d64 + 24da6: e779 b.n 24c9c + 24da8: f004 02e0 and.w r2, r4, #224 ; 0xe0 + 24dac: 2a80 cmp r2, #128 ; 0x80 + 24dae: d0d9 beq.n 24d64 + 24db0: e774 b.n 24c9c + 24db2: bf00 nop + 24db4: 2000bb08 .word 0x2000bb08 + 24db8: 20004c68 .word 0x20004c68 + 24dbc: 200023ec .word 0x200023ec + 24dc0: 20003848 .word 0x20003848 + 24dc4: 20001ce0 .word 0x20001ce0 + 24dc8: 20001cd0 .word 0x20001cd0 + 24dcc: 20001cd8 .word 0x20001cd8 if (type < 0xF0) { - 24d3c: f1ba 0ff0 cmp.w sl, #240 ; 0xf0 - 24d40: f43f ae52 beq.w 249e8 + 24dd0: f1ba 0ff0 cmp.w sl, #240 ; 0xf0 + 24dd4: f43f af3c beq.w 24c50 if (type < 0x80) return; - 24d44: f01a 0f80 tst.w sl, #128 ; 0x80 - 24d48: f43f ae45 beq.w 249d6 + 24dd8: f01a 0f80 tst.w sl, #128 ; 0x80 + 24ddc: f43f af38 beq.w 24c50 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 24d4c: f109 31ff add.w r1, r9, #4294967295 ; 0xffffffff - 24d50: 042a lsls r2, r5, #16 + 24de0: f109 31ff add.w r1, r9, #4294967295 ; 0xffffffff + 24de4: 042a lsls r2, r5, #16 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 24d52: 011b lsls r3, r3, #4 - 24d54: f507 6036 add.w r0, r7, #2912 ; 0xb60 + 24de6: 011b lsls r3, r3, #4 + 24de8: f507 6026 add.w r0, r7, #2656 ; 0xa60 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 24d58: 0209 lsls r1, r1, #8 - 24d5a: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 + 24dec: 0209 lsls r1, r1, #8 + 24dee: f402 02fe and.w r2, r2, #8323072 ; 0x7f0000 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 24d5e: b2db uxtb r3, r3 + 24df2: b2db uxtb r3, r3 | (((channel - 1) & 0x0F) << 8) | ((data1 & 0x7F) << 16) - 24d60: f401 6170 and.w r1, r1, #3840 ; 0xf00 - 24d64: 4311 orrs r1, r2 - 24d66: 4319 orrs r1, r3 - 24d68: ea41 210a orr.w r1, r1, sl, lsl #8 - 24d6c: ea41 111a orr.w r1, r1, sl, lsr #4 + 24df4: f401 6170 and.w r1, r1, #3840 ; 0xf00 + 24df8: 4311 orrs r1, r2 + 24dfa: 4319 orrs r1, r3 + 24dfc: ea41 210a orr.w r1, r1, sl, lsl #8 + 24e00: ea41 111a orr.w r1, r1, sl, lsr #4 write_packed((type << 8) | (type >> 4) | ((cable & 0x0F) << 4) - 24d70: ea41 6108 orr.w r1, r1, r8, lsl #24 - 24d74: f003 fc1e bl 285b4 + 24e04: ea41 6108 orr.w r1, r1, r8, lsl #24 + 24e08: f003 fc4a bl 286a0 + if(isMidiBlePort(port) && globals.bleConnected()){ + 24e0c: f8d7 2108 ldr.w r2, [r7, #264] ; 0x108 + 24e10: e71e b.n 24c50 + 24e12: f1ba 0fe0 cmp.w sl, #224 ; 0xe0 + 24e16: f47f ae5d bne.w 24ad4 + Port.write(status); + 24e1a: f507 5480 add.w r4, r7, #4096 ; 0x1000 + writeData(type | (channel-1), d1, d2); + 24e1e: f109 31ff add.w r1, r9, #4294967295 ; 0xffffffff + Port.write(status); + 24e22: f8d4 0188 ldr.w r0, [r4, #392] ; 0x188 + 24e26: ea4a 0101 orr.w r1, sl, r1 + 24e2a: 6803 ldr r3, [r0, #0] + 24e2c: b2c9 uxtb r1, r1 + 24e2e: 681b ldr r3, [r3, #0] + 24e30: 4798 blx r3 + Port.write(d1 & 0x7F); + 24e32: f8d4 0188 ldr.w r0, [r4, #392] ; 0x188 + 24e36: f005 017f and.w r1, r5, #127 ; 0x7f + 24e3a: 6803 ldr r3, [r0, #0] + 24e3c: 681b ldr r3, [r3, #0] + 24e3e: 4798 blx r3 + Port.write(d2 & 0x7F); + 24e40: f8d4 0188 ldr.w r0, [r4, #392] ; 0x188 + 24e44: 4641 mov r1, r8 + 24e46: 6803 ldr r3, [r0, #0] + 24e48: 681b ldr r3, [r3, #0] + 24e4a: 4798 blx r3 globals.setMidiLocalUpdate(true); - 24d78: f8d7 1108 ldr.w r1, [r7, #264] ; 0x108 - 24d7c: e62b b.n 249d6 - 24d7e: bf00 nop - -00024d80 : + 24e4c: f8d7 2108 ldr.w r2, [r7, #264] ; 0x108 + if(type == BMC_MIDI_PROGRAM_CHANGE){ + 24e50: e63c b.n 24acc + switch(type){ + 24e52: f1ba 0fa0 cmp.w sl, #160 ; 0xa0 + 24e56: d0e0 beq.n 24e1a + 24e58: d903 bls.n 24e62 + 24e5a: f1ba 0fb0 cmp.w sl, #176 ; 0xb0 + 24e5e: d0dc beq.n 24e1a + 24e60: e638 b.n 24ad4 + 24e62: f004 04e0 and.w r4, r4, #224 ; 0xe0 + 24e66: 2c80 cmp r4, #128 ; 0x80 + 24e68: d0d7 beq.n 24e1a + 24e6a: e633 b.n 24ad4 + +00024e6c : void BMCMidi::send(uint8_t port, BMCMidiMessage m, uint8_t cable){ - 24d80: b082 sub sp, #8 - 24d82: b530 push {r4, r5, lr} - 24d84: b085 sub sp, #20 - 24d86: ac08 add r4, sp, #32 - 24d88: e884 000c stmia.w r4, {r2, r3} + 24e6c: b082 sub sp, #8 + 24e6e: b530 push {r4, r5, lr} + 24e70: b085 sub sp, #20 + 24e72: ac08 add r4, sp, #32 + 24e74: e884 000c stmia.w r4, {r2, r3} return (t_and) ? (status & 0xF0) : status; - 24d8c: f89d 2021 ldrb.w r2, [sp, #33] ; 0x21 - 24d90: f89d 4124 ldrb.w r4, [sp, #292] ; 0x124 + 24e78: f89d 2021 ldrb.w r2, [sp, #33] ; 0x21 + 24e7c: f89d 4124 ldrb.w r4, [sp, #292] ; 0x124 if(m.getStatus()==BMC_NONE){ - 24d94: b19a cbz r2, 24dbe + 24e80: b19a cbz r2, 24eaa return BMC_IS_SYSTEM_EXCLUSIVE(getStatus()); //0xF0 - 24d96: 2af0 cmp r2, #240 ; 0xf0 - 24d98: d116 bne.n 24dc8 + 24e82: 2af0 cmp r2, #240 ; 0xf0 + 24e84: d116 bne.n 24eb4 return sysex; - 24d9a: f8bd 3023 ldrh.w r3, [sp, #35] ; 0x23 + 24e86: f8bd 3023 ldrh.w r3, [sp, #35] ; 0x23 if(size==0){ - 24d9e: b173 cbz r3, 24dbe + 24e8a: b173 cbz r3, 24eaa sendSysEx( - 24da0: f89d 2025 ldrb.w r2, [sp, #37] ; 0x25 - 24da4: 2501 movs r5, #1 - 24da6: 9401 str r4, [sp, #4] - 24da8: f1a2 02f0 sub.w r2, r2, #240 ; 0xf0 - 24dac: 9502 str r5, [sp, #8] - 24dae: fab2 f282 clz r2, r2 - 24db2: 0952 lsrs r2, r2, #5 - 24db4: 9200 str r2, [sp, #0] - 24db6: f10d 0225 add.w r2, sp, #37 ; 0x25 - 24dba: f7fd ff1f bl 22bfc -} - 24dbe: b005 add sp, #20 - 24dc0: e8bd 4030 ldmia.w sp!, {r4, r5, lr} - 24dc4: b002 add sp, #8 - 24dc6: 4770 bx lr + 24e8c: f89d 2025 ldrb.w r2, [sp, #37] ; 0x25 + 24e90: 2501 movs r5, #1 + 24e92: 9401 str r4, [sp, #4] + 24e94: f1a2 02f0 sub.w r2, r2, #240 ; 0xf0 + 24e98: 9502 str r5, [sp, #8] + 24e9a: fab2 f282 clz r2, r2 + 24e9e: 0952 lsrs r2, r2, #5 + 24ea0: 9200 str r2, [sp, #0] + 24ea2: f10d 0225 add.w r2, sp, #37 ; 0x25 + 24ea6: f7fd ff19 bl 22cdc +} + 24eaa: b005 add sp, #20 + 24eac: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 24eb0: b002 add sp, #8 + 24eb2: 4770 bx lr send( - 24dc8: f89d 3022 ldrb.w r3, [sp, #34] ; 0x22 - 24dcc: e9cd 3401 strd r3, r4, [sp, #4] - 24dd0: f89d 4024 ldrb.w r4, [sp, #36] ; 0x24 - 24dd4: f89d 3023 ldrb.w r3, [sp, #35] ; 0x23 - 24dd8: 9400 str r4, [sp, #0] - 24dda: f7ff fd7d bl 248d8 -} - 24dde: b005 add sp, #20 - 24de0: e8bd 4030 ldmia.w sp!, {r4, r5, lr} - 24de4: b002 add sp, #8 - 24de6: 4770 bx lr - -00024de8 : + 24eb4: f89d 3022 ldrb.w r3, [sp, #34] ; 0x22 + 24eb8: e9cd 3401 strd r3, r4, [sp, #4] + 24ebc: f89d 4024 ldrb.w r4, [sp, #36] ; 0x24 + 24ec0: f89d 3023 ldrb.w r3, [sp, #35] ; 0x23 + 24ec4: 9400 str r4, [sp, #0] + 24ec6: f7ff fd75 bl 249b4 +} + 24eca: b005 add sp, #20 + 24ecc: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 24ed0: b002 add sp, #8 + 24ed2: 4770 bx lr + +00024ed4 : uint8_t BMCMidi::toggleCC(uint8_t ports, uint8_t channel, uint8_t control){ - 24de8: b570 push {r4, r5, r6, lr} + 24ed4: b570 push {r4, r5, r6, lr} sendControlChange(ports, channel, control, 255); - 24dea: f04f 0c01 mov.w ip, #1 + 24ed6: f04f 0c01 mov.w ip, #1 uint8_t BMCMidi::toggleCC(uint8_t ports, uint8_t channel, uint8_t control){ - 24dee: b084 sub sp, #16 + 24eda: b084 sub sp, #16 sendControlChange(ports, channel, control, 255); - 24df0: 2600 movs r6, #0 + 24edc: 2600 movs r6, #0 uint8_t BMCMidi::toggleCC(uint8_t ports, uint8_t channel, uint8_t control){ - 24df2: 4614 mov r4, r2 - 24df4: 4605 mov r5, r0 + 24ede: 4614 mov r4, r2 + 24ee0: 4605 mov r5, r0 sendControlChange(ports, channel, control, 255); - 24df6: e9cd 6c01 strd r6, ip, [sp, #4] - 24dfa: 26ff movs r6, #255 ; 0xff - 24dfc: 9600 str r6, [sp, #0] + 24ee2: e9cd 6c01 strd r6, ip, [sp, #4] + 24ee6: 26ff movs r6, #255 ; 0xff + 24ee8: 9600 str r6, [sp, #0] uint8_t BMCMidi::toggleCC(uint8_t ports, uint8_t channel, uint8_t control){ - 24dfe: 461e mov r6, r3 + 24eea: 461e mov r6, r3 sendControlChange(ports, channel, control, 255); - 24e00: f7fe faec bl 233dc + 24eec: f7fe fad8 bl 234a0 uint8_t ch = ((t_channel-1) & 0x0F); - 24e04: 1e62 subs r2, r4, #1 + 24ef0: 1e62 subs r2, r4, #1 return (ch: +00024f0c : uint8_t min, uint8_t max){ - 24e20: b4f0 push {r4, r5, r6, r7} - 24e22: f89d 4014 ldrb.w r4, [sp, #20] - 24e26: f89d 5018 ldrb.w r5, [sp, #24] - 24e2a: f89d 601c ldrb.w r6, [sp, #28] - 24e2e: f89d 7020 ldrb.w r7, [sp, #32] + 24f0c: b4f0 push {r4, r5, r6, r7} + 24f0e: f89d 4014 ldrb.w r4, [sp, #20] + 24f12: f89d 5018 ldrb.w r5, [sp, #24] + 24f16: f89d 601c ldrb.w r6, [sp, #28] + 24f1a: f89d 7020 ldrb.w r7, [sp, #32] if(channel == 0){ - 24e32: b912 cbnz r2, 24e3a + 24f1e: b912 cbnz r2, 24f26 } - 24e34: 4610 mov r0, r2 - 24e36: bcf0 pop {r4, r5, r6, r7} - 24e38: 4770 bx lr - 24e3a: e9cd 6706 strd r6, r7, [sp, #24] - 24e3e: e9cd 4504 strd r4, r5, [sp, #16] - 24e42: bcf0 pop {r4, r5, r6, r7} - 24e44: f7fe bc3e b.w 236c4 + 24f20: 4610 mov r0, r2 + 24f22: bcf0 pop {r4, r5, r6, r7} + 24f24: 4770 bx lr + 24f26: e9cd 6706 strd r6, r7, [sp, #24] + 24f2a: e9cd 4504 strd r4, r5, [sp, #16] + 24f2e: bcf0 pop {r4, r5, r6, r7} + 24f30: f7fe bc2a b.w 23788 -00024e48 : +00024f34 : uint8_t min, uint8_t max){ - 24e48: b470 push {r4, r5, r6} - 24e4a: f89d 300c ldrb.w r3, [sp, #12] - 24e4e: f89d 4010 ldrb.w r4, [sp, #16] - 24e52: f89d 5014 ldrb.w r5, [sp, #20] - 24e56: f89d 6018 ldrb.w r6, [sp, #24] + 24f34: b470 push {r4, r5, r6} + 24f36: f89d 300c ldrb.w r3, [sp, #12] + 24f3a: f89d 4010 ldrb.w r4, [sp, #16] + 24f3e: f89d 5014 ldrb.w r5, [sp, #20] + 24f42: f89d 6018 ldrb.w r6, [sp, #24] if(channel == 0){ - 24e5a: b912 cbnz r2, 24e62 -} - 24e5c: 4610 mov r0, r2 - 24e5e: bc70 pop {r4, r5, r6} - 24e60: 4770 bx lr - 24e62: e9cd 5604 strd r5, r6, [sp, #16] - 24e66: 9403 str r4, [sp, #12] - 24e68: bc70 pop {r4, r5, r6} - 24e6a: f7fe ba75 b.w 23358 - 24e6e: bf00 nop - -00024e70 : + 24f46: b912 cbnz r2, 24f4e +} + 24f48: 4610 mov r0, r2 + 24f4a: bc70 pop {r4, r5, r6} + 24f4c: 4770 bx lr + 24f4e: e9cd 5604 strd r5, r6, [sp, #16] + 24f52: 9403 str r4, [sp, #12] + 24f54: bc70 pop {r4, r5, r6} + 24f56: f7fe ba61 b.w 2341c + 24f5a: bf00 nop + +00024f5c : // - eepromAddr is the EEPROM's I2C address and defaults to 0x50 which is common. BMC24LC256::BMC24LC256(BMC_eeprom_size_t deviceCapacity, uint8_t nDevice, unsigned int pageSize, uint8_t eepromAddr) { _dvcCapacity = deviceCapacity; _nDevice = nDevice; _pageSize = pageSize; - 24e70: 80c3 strh r3, [r0, #6] + 24f5c: 80c3 strh r3, [r0, #6] _eepromAddr = eepromAddr; _totalCapacity = _nDevice * _dvcCapacity * 1024UL / 8; _nAddrBytes = deviceCapacity > kbits_16 ? 2 : 1; //two address bytes needed for eeproms > 16kbits - 24e72: 2910 cmp r1, #16 + 24f5e: 2910 cmp r1, #16 _totalCapacity = _nDevice * _dvcCapacity * 1024UL / 8; - 24e74: fb01 f302 mul.w r3, r1, r2 + 24f60: fb01 f302 mul.w r3, r1, r2 BMC24LC256::BMC24LC256(BMC_eeprom_size_t deviceCapacity, uint8_t nDevice, unsigned int pageSize, uint8_t eepromAddr) - 24e78: f89d c000 ldrb.w ip, [sp] + 24f64: f89d c000 ldrb.w ip, [sp] _nDevice = nDevice; - 24e7c: 7102 strb r2, [r0, #4] + 24f68: 7102 strb r2, [r0, #4] _totalCapacity = _nDevice * _dvcCapacity * 1024UL / 8; - 24e7e: ea4f 2383 mov.w r3, r3, lsl #10 - 24e82: 4a12 ldr r2, [pc, #72] ; (24ecc ) + 24f6a: ea4f 2383 mov.w r3, r3, lsl #10 + 24f6e: 4a12 ldr r2, [pc, #72] ; (24fb8 ) _dvcCapacity = deviceCapacity; - 24e84: 8041 strh r1, [r0, #2] - 24e86: 6812 ldr r2, [r2, #0] + 24f70: 8041 strh r1, [r0, #2] + 24f72: 6812 ldr r2, [r2, #0] _totalCapacity = _nDevice * _dvcCapacity * 1024UL / 8; - 24e88: ea4f 03d3 mov.w r3, r3, lsr #3 + 24f74: ea4f 03d3 mov.w r3, r3, lsr #3 _eepromAddr = eepromAddr; - 24e8c: f880 c000 strb.w ip, [r0] + 24f78: f880 c000 strb.w ip, [r0] _totalCapacity = _nDevice * _dvcCapacity * 1024UL / 8; - 24e90: e9c0 3203 strd r3, r2, [r0, #12] + 24f7c: e9c0 3203 strd r3, r2, [r0, #12] _nAddrBytes = deviceCapacity > kbits_16 ? 2 : 1; //two address bytes needed for eeproms > 16kbits - 24e94: d911 bls.n 24eba - 24e96: 2302 movs r3, #2 + 24f80: d911 bls.n 24fa6 + 24f82: 2302 movs r3, #2 //determine the bitshift needed to isolate the chip select bits from the address to put into the control byte uint16_t kb = _dvcCapacity; if ( kb <= kbits_16 ) _csShift = 8; else if ( kb >= kbits_512 ) _csShift = 16; - 24e98: f5b1 7f00 cmp.w r1, #512 ; 0x200 + 24f84: f5b1 7f00 cmp.w r1, #512 ; 0x200 _nAddrBytes = deviceCapacity > kbits_16 ? 2 : 1; //two address bytes needed for eeproms > 16kbits - 24e9c: 8143 strh r3, [r0, #10] + 24f88: 8143 strh r3, [r0, #10] else if ( kb >= kbits_512 ) _csShift = 16; - 24e9e: d211 bcs.n 24ec4 + 24f8a: d211 bcs.n 24fb0 else { kb >>= 6; _csShift = 12; - 24ea0: 230c movs r3, #12 + 24f8c: 230c movs r3, #12 while ( kb >= 1 ) { - 24ea2: 0989 lsrs r1, r1, #6 + 24f8e: 0989 lsrs r1, r1, #6 _csShift = 12; - 24ea4: 7203 strb r3, [r0, #8] + 24f90: 7203 strb r3, [r0, #8] while ( kb >= 1 ) { - 24ea6: d010 beq.n 24eca - 24ea8: 230d movs r3, #13 - 24eaa: 1c5a adds r2, r3, #1 - 24eac: 0849 lsrs r1, r1, #1 - 24eae: 469c mov ip, r3 - 24eb0: b2d3 uxtb r3, r2 - 24eb2: d1fa bne.n 24eaa - 24eb4: f880 c008 strb.w ip, [r0, #8] - 24eb8: 4770 bx lr + 24f92: d010 beq.n 24fb6 + 24f94: 230d movs r3, #13 + 24f96: 1c5a adds r2, r3, #1 + 24f98: 0849 lsrs r1, r1, #1 + 24f9a: 469c mov ip, r3 + 24f9c: b2d3 uxtb r3, r2 + 24f9e: d1fa bne.n 24f96 + 24fa0: f880 c008 strb.w ip, [r0, #8] + 24fa4: 4770 bx lr _nAddrBytes = deviceCapacity > kbits_16 ? 2 : 1; //two address bytes needed for eeproms > 16kbits - 24eba: 2201 movs r2, #1 + 24fa6: 2201 movs r2, #1 if ( kb <= kbits_16 ) _csShift = 8; - 24ebc: 2308 movs r3, #8 + 24fa8: 2308 movs r3, #8 _nAddrBytes = deviceCapacity > kbits_16 ? 2 : 1; //two address bytes needed for eeproms > 16kbits - 24ebe: 8142 strh r2, [r0, #10] + 24faa: 8142 strh r2, [r0, #10] if ( kb <= kbits_16 ) _csShift = 8; - 24ec0: 7203 strb r3, [r0, #8] + 24fac: 7203 strb r3, [r0, #8] ++_csShift; kb >>= 1; } } } - 24ec2: 4770 bx lr + 24fae: 4770 bx lr else if ( kb >= kbits_512 ) _csShift = 16; - 24ec4: 2310 movs r3, #16 - 24ec6: 7203 strb r3, [r0, #8] - 24ec8: 4770 bx lr + 24fb0: 2310 movs r3, #16 + 24fb2: 7203 strb r3, [r0, #8] + 24fb4: 4770 bx lr } - 24eca: 4770 bx lr - 24ecc: 2000bae8 .word 0x2000bae8 + 24fb6: 4770 bx lr + 24fb8: 2000bb08 .word 0x2000bb08 -00024ed0 : +00024fbc : //initialize the I2C bus and do a dummy write (no data sent) //to the device so that the caller can determine whether it is responding. //when using a 400kHz bus speed and there are multiple I2C devices on the //bus (other than EEPROM), call BMC24LC256::begin() after any initialization //calls for the other devices to ensure the intended I2C clock speed is set. uint8_t BMC24LC256::begin(twiClockFreq_t twiFreq){ - 24ed0: b570 push {r4, r5, r6, lr} + 24fbc: b570 push {r4, r5, r6, lr} BMC_PRINTLN("BMC24LC256::begin"); Wire.begin(); - 24ed2: 4c16 ldr r4, [pc, #88] ; (24f2c ) + 24fbe: 4c16 ldr r4, [pc, #88] ; (25018 ) uint8_t BMC24LC256::begin(twiClockFreq_t twiFreq){ - 24ed4: 4605 mov r5, r0 - 24ed6: 460e mov r6, r1 - 24ed8: 4815 ldr r0, [pc, #84] ; (24f30 ) - 24eda: 2111 movs r1, #17 - 24edc: f007 fb34 bl 2c548 + 24fc0: 4605 mov r5, r0 + 24fc2: 460e mov r6, r1 + 24fc4: 4815 ldr r0, [pc, #84] ; (2501c ) + 24fc6: 2111 movs r1, #17 + 24fc8: f007 fb32 bl 2c630 size_t println(const char s[]) { return print(s) + println(); } - 24ee0: 4814 ldr r0, [pc, #80] ; (24f34 ) - 24ee2: f004 ffc7 bl 29e74 + 24fcc: 4814 ldr r0, [pc, #80] ; (25020 ) + 24fce: f004 ffc7 bl 29f60 Wire.begin(); - 24ee6: 4620 mov r0, r4 - 24ee8: f00e ffc2 bl 33e70 <___ZN7TwoWire5beginEv_veneer> + 24fd2: 4620 mov r0, r4 + 24fd4: f00e ffcc bl 33f70 <___ZN7TwoWire5beginEv_veneer> Wire.setClock(twiFreq); // TRL 21Oct2018, compatibility with other processors - 24eec: 4631 mov r1, r6 - 24eee: 4620 mov r0, r4 - 24ef0: f000 fbf6 bl 256e0 - 24ef4: 782b ldrb r3, [r5, #0] + 24fd8: 4631 mov r1, r6 + 24fda: 4620 mov r0, r4 + 24fdc: f000 fbf6 bl 257cc + 24fe0: 782b ldrb r3, [r5, #0] transmitting = 1; - 24ef6: 2201 movs r2, #1 + 24fe2: 2201 movs r2, #1 txBuffer[0] = (address << 1); - 24ef8: 4093 lsls r3, r2 + 24fe4: 4093 lsls r3, r2 transmitting = 1; - 24efa: f884 2130 strb.w r2, [r4, #304] ; 0x130 + 24fe6: f884 2130 strb.w r2, [r4, #304] ; 0x130 txBufferLength = 1; - 24efe: f884 212f strb.w r2, [r4, #303] ; 0x12f + 24fea: f884 212f strb.w r2, [r4, #303] ; 0x12f txBuffer[0] = (address << 1); - 24f02: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 24fee: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 Wire.beginTransmission(_eepromAddr); if (_nAddrBytes == 2) Wire.write(0); //high addr byte - 24f06: 896b ldrh r3, [r5, #10] - 24f08: 2b02 cmp r3, #2 - 24f0a: d009 beq.n 24f20 + 24ff2: 896b ldrh r3, [r5, #10] + 24ff4: 2b02 cmp r3, #2 + 24ff6: d009 beq.n 2500c } size_t write(unsigned int n) { return write((uint8_t)n); } size_t write(int n) { return write((uint8_t)n); - 24f0c: 2100 movs r1, #0 - 24f0e: 4807 ldr r0, [pc, #28] ; (24f2c ) - 24f10: f000 f952 bl 251b8 + 24ff8: 2100 movs r1, #0 + 24ffa: 4807 ldr r0, [pc, #28] ; (25018 ) + 24ffc: f000 f952 bl 252a4 return endTransmission(1); - 24f14: 2101 movs r1, #1 - 24f16: 4805 ldr r0, [pc, #20] ; (24f2c ) + 25000: 2101 movs r1, #1 + 25002: 4805 ldr r0, [pc, #20] ; (25018 ) Wire.write(0); //low addr byte return Wire.endTransmission(); } - 24f18: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 24f1c: f000 ba5a b.w 253d4 + 25004: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 25008: f000 ba5a b.w 254c0 return write((uint8_t)n); - 24f20: 2100 movs r1, #0 - 24f22: 4620 mov r0, r4 - 24f24: f000 f948 bl 251b8 - 24f28: e7f0 b.n 24f0c - 24f2a: bf00 nop - 24f2c: 2000b0f8 .word 0x2000b0f8 - 24f30: 2000153c .word 0x2000153c - 24f34: 20004ba8 .word 0x20004ba8 + 2500c: 2100 movs r1, #0 + 2500e: 4620 mov r0, r4 + 25010: f000 f948 bl 252a4 + 25014: e7f0 b.n 24ff8 + 25016: bf00 nop + 25018: 2000b118 .word 0x2000b118 + 2501c: 2000153c .word 0x2000153c + 25020: 20004c68 .word 0x20004c68 -00024f38 : +00025024 : //Write bytes to external EEPROM. //If the I/O would extend past the top of the EEPROM address space, //a status of EEPROM_ADDR_ERR is returned. For I2C errors, the status //from the Arduino Wire library is passed back through to the caller. uint8_t BMC24LC256::write(unsigned long addr, uint8_t *values, unsigned int nBytes){ - 24f38: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 24f3c: b085 sub sp, #20 - 24f3e: e88d 000e stmia.w sp, {r1, r2, r3} + 25024: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 25028: b085 sub sp, #20 + 2502a: e88d 000e stmia.w sp, {r1, r2, r3} uint8_t ctrlByte; //control uint8_t (I2C device address & chip/block select bits) uint8_t txStatus = 0; //transmit status uint16_t nWrite; //number of bytes to write uint16_t nPage; //number of bytes remaining on current layer, starting at addr if (addr + nBytes > _totalCapacity) { //will this write go past the top of the EEPROM? - 24f42: 460a mov r2, r1 - 24f44: 4619 mov r1, r3 - 24f46: 441a add r2, r3 - 24f48: 68c3 ldr r3, [r0, #12] - 24f4a: 429a cmp r2, r3 - 24f4c: f200 8086 bhi.w 2505c + 2502e: 460a mov r2, r1 + 25030: 4619 mov r1, r3 + 25032: 441a add r2, r3 + 25034: 68c3 ldr r3, [r0, #12] + 25036: 429a cmp r2, r3 + 25038: f200 8086 bhi.w 25148 return EEPROM_ADDR_ERR; //yes, tell the caller } while (nBytes > 0) { - 24f50: 2900 cmp r1, #0 - 24f52: d079 beq.n 25048 - 24f54: 4680 mov r8, r0 - 24f56: f8df 9110 ldr.w r9, [pc, #272] ; 25068 + 2503c: 2900 cmp r1, #0 + 2503e: d079 beq.n 25134 + 25040: 4680 mov r8, r0 + 25042: f8df 9110 ldr.w r9, [pc, #272] ; 25154 transmitting = 1; - 24f5a: 2601 movs r6, #1 - 24f5c: f8df b10c ldr.w fp, [pc, #268] ; 2506c + 25046: 2601 movs r6, #1 + 25048: f8df b10c ldr.w fp, [pc, #268] ; 25158 uint32_t begin = ARM_DWT_CYCCNT; - 24f60: 4c40 ldr r4, [pc, #256] ; (25064 ) + 2504c: 4c40 ldr r4, [pc, #256] ; (25150 ) uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 24f62: f8df a10c ldr.w sl, [pc, #268] ; 25070 + 2504e: f8df a10c ldr.w sl, [pc, #268] ; 2515c nPage = _pageSize - ( addr & (_pageSize - 1) ); - 24f66: f8b8 3006 ldrh.w r3, [r8, #6] + 25052: f8b8 3006 ldrh.w r3, [r8, #6] //find min(nBytes, nPage, BUFFER_LENGTH) -- BUFFER_LENGTH is defined in the Wire library. nWrite = nBytes < nPage ? nBytes : nPage; nWrite = BUFFER_LENGTH - _nAddrBytes < nWrite ? BUFFER_LENGTH - _nAddrBytes : nWrite; ctrlByte = _eepromAddr | (uint8_t) (addr >> _csShift); - 24f6a: 9800 ldr r0, [sp, #0] + 25056: 9800 ldr r0, [sp, #0] nPage = _pageSize - ( addr & (_pageSize - 1) ); - 24f6c: 1e59 subs r1, r3, #1 + 25058: 1e59 subs r1, r3, #1 ctrlByte = _eepromAddr | (uint8_t) (addr >> _csShift); - 24f6e: f898 7008 ldrb.w r7, [r8, #8] + 2505a: f898 7008 ldrb.w r7, [r8, #8] nWrite = BUFFER_LENGTH - _nAddrBytes < nWrite ? BUFFER_LENGTH - _nAddrBytes : nWrite; - 24f72: f8b8 200a ldrh.w r2, [r8, #10] + 2505e: f8b8 200a ldrh.w r2, [r8, #10] nPage = _pageSize - ( addr & (_pageSize - 1) ); - 24f76: 4001 ands r1, r0 + 25062: 4001 ands r1, r0 ctrlByte = _eepromAddr | (uint8_t) (addr >> _csShift); - 24f78: fa20 f707 lsr.w r7, r0, r7 + 25064: fa20 f707 lsr.w r7, r0, r7 nWrite = BUFFER_LENGTH - _nAddrBytes < nWrite ? BUFFER_LENGTH - _nAddrBytes : nWrite; - 24f7c: f1c2 0288 rsb r2, r2, #136 ; 0x88 + 25068: f1c2 0288 rsb r2, r2, #136 ; 0x88 nPage = _pageSize - ( addr & (_pageSize - 1) ); - 24f80: 1a5d subs r5, r3, r1 + 2506c: 1a5d subs r5, r3, r1 nWrite = nBytes < nPage ? nBytes : nPage; - 24f82: 9b02 ldr r3, [sp, #8] - 24f84: b2ad uxth r5, r5 - 24f86: 429d cmp r5, r3 - 24f88: bf28 it cs - 24f8a: 461d movcs r5, r3 + 2506e: 9b02 ldr r3, [sp, #8] + 25070: b2ad uxth r5, r5 + 25072: 429d cmp r5, r3 + 25074: bf28 it cs + 25076: 461d movcs r5, r3 ctrlByte = _eepromAddr | (uint8_t) (addr >> _csShift); - 24f8c: f898 3000 ldrb.w r3, [r8] - 24f90: f889 6130 strb.w r6, [r9, #304] ; 0x130 - 24f94: 431f orrs r7, r3 + 25078: f898 3000 ldrb.w r3, [r8] + 2507c: f889 6130 strb.w r6, [r9, #304] ; 0x130 + 25080: 431f orrs r7, r3 nWrite = BUFFER_LENGTH - _nAddrBytes < nWrite ? BUFFER_LENGTH - _nAddrBytes : nWrite; - 24f96: 4295 cmp r5, r2 + 25082: 4295 cmp r5, r2 txBufferLength = 1; - 24f98: f889 612f strb.w r6, [r9, #303] ; 0x12f + 25084: f889 612f strb.w r6, [r9, #303] ; 0x12f txBuffer[0] = (address << 1); - 24f9c: ea4f 0747 mov.w r7, r7, lsl #1 - 24fa0: bfa8 it ge - 24fa2: 4615 movge r5, r2 - 24fa4: b2ff uxtb r7, r7 - 24fa6: f889 70a5 strb.w r7, [r9, #165] ; 0xa5 + 25088: ea4f 0747 mov.w r7, r7, lsl #1 + 2508c: bfa8 it ge + 2508e: 4615 movge r5, r2 + 25090: b2ff uxtb r7, r7 + 25092: f889 70a5 strb.w r7, [r9, #165] ; 0xa5 Wire.beginTransmission(ctrlByte); if (_nAddrBytes == 2) Wire.write( (uint8_t) (addr >> 8) ); //high addr byte - 24faa: f8b8 300a ldrh.w r3, [r8, #10] - 24fae: 2b02 cmp r3, #2 - 24fb0: d04e beq.n 25050 + 25096: f8b8 300a ldrh.w r3, [r8, #10] + 2509a: 2b02 cmp r3, #2 + 2509c: d04e beq.n 2513c Wire.write( (uint8_t) addr ); //low addr byte Wire.write(values, nWrite); - 24fb2: b2ab uxth r3, r5 + 2509e: b2ab uxth r3, r5 Wire.write( (uint8_t) addr ); //low addr byte - 24fb4: f89d 1000 ldrb.w r1, [sp] - 24fb8: 4648 mov r0, r9 + 250a0: f89d 1000 ldrb.w r1, [sp] + 250a4: 4648 mov r0, r9 Wire.write(values, nWrite); - 24fba: 461d mov r5, r3 - 24fbc: 9303 str r3, [sp, #12] + 250a6: 461d mov r5, r3 + 250a8: 9303 str r3, [sp, #12] Wire.write( (uint8_t) addr ); //low addr byte - 24fbe: f000 f8fb bl 251b8 + 250aa: f000 f8fb bl 252a4 Wire.write(values, nWrite); - 24fc2: 9901 ldr r1, [sp, #4] - 24fc4: 462a mov r2, r5 - 24fc6: 4648 mov r0, r9 - 24fc8: f000 f90c bl 251e4 + 250ae: 9901 ldr r1, [sp, #4] + 250b0: 462a mov r2, r5 + 250b2: 4648 mov r0, r9 + 250b4: f000 f90c bl 252d0 return endTransmission(1); - 24fcc: 2101 movs r1, #1 - 24fce: 4648 mov r0, r9 - 24fd0: f000 fa00 bl 253d4 + 250b8: 2101 movs r1, #1 + 250ba: 4648 mov r0, r9 + 250bc: f000 fa00 bl 254c0 txStatus = Wire.endTransmission(); if (txStatus != 0) return txStatus; - 24fd4: bb28 cbnz r0, 25022 - 24fd6: 2564 movs r5, #100 ; 0x64 + 250c0: bb28 cbnz r0, 2510e + 250c2: 2564 movs r5, #100 ; 0x64 uint32_t begin = ARM_DWT_CYCCNT; - 24fd8: 6861 ldr r1, [r4, #4] + 250c4: 6861 ldr r1, [r4, #4] uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 24fda: f8db 2000 ldr.w r2, [fp] - 24fde: fbaa 3202 umull r3, r2, sl, r2 - 24fe2: f44f 73fa mov.w r3, #500 ; 0x1f4 - 24fe6: 0c92 lsrs r2, r2, #18 - 24fe8: fb03 f202 mul.w r2, r3, r2 + 250c6: f8db 2000 ldr.w r2, [fp] + 250ca: fbaa 3202 umull r3, r2, sl, r2 + 250ce: f44f 73fa mov.w r3, #500 ; 0x1f4 + 250d2: 0c92 lsrs r2, r2, #18 + 250d4: fb03 f202 mul.w r2, r3, r2 while (ARM_DWT_CYCCNT - begin < cycles) ; // wait - 24fec: 6863 ldr r3, [r4, #4] - 24fee: 1a5b subs r3, r3, r1 - 24ff0: 429a cmp r2, r3 - 24ff2: d8fb bhi.n 24fec + 250d8: 6863 ldr r3, [r4, #4] + 250da: 1a5b subs r3, r3, r1 + 250dc: 429a cmp r2, r3 + 250de: d8fb bhi.n 250d8 txBuffer[0] = (address << 1); - 24ff4: f889 70a5 strb.w r7, [r9, #165] ; 0xa5 + 250e0: f889 70a5 strb.w r7, [r9, #165] ; 0xa5 transmitting = 1; - 24ff8: f889 6130 strb.w r6, [r9, #304] ; 0x130 + 250e4: f889 6130 strb.w r6, [r9, #304] ; 0x130 txBufferLength = 1; - 24ffc: f889 612f strb.w r6, [r9, #303] ; 0x12f + 250e8: f889 612f strb.w r6, [r9, #303] ; 0x12f //wait up to 50ms for the write to complete for (uint8_t i=100; i; --i) { delayMicroseconds(500); //no point in waiting too fast Wire.beginTransmission(ctrlByte); if (_nAddrBytes == 2) Wire.write(0); //high addr byte - 25000: f8b8 300a ldrh.w r3, [r8, #10] - 25004: 2b02 cmp r3, #2 - 25006: d00f beq.n 25028 + 250ec: f8b8 300a ldrh.w r3, [r8, #10] + 250f0: 2b02 cmp r3, #2 + 250f2: d00f beq.n 25114 return write((uint8_t)n); - 25008: 2100 movs r1, #0 - 2500a: 4648 mov r0, r9 - 2500c: f000 f8d4 bl 251b8 + 250f4: 2100 movs r1, #0 + 250f6: 4648 mov r0, r9 + 250f8: f000 f8d4 bl 252a4 return endTransmission(1); - 25010: 2101 movs r1, #1 - 25012: 4648 mov r0, r9 - 25014: f000 f9de bl 253d4 + 250fc: 2101 movs r1, #1 + 250fe: 4648 mov r0, r9 + 25100: f000 f9de bl 254c0 Wire.write(0); //low addr byte txStatus = Wire.endTransmission(); if (txStatus == 0) break; - 25018: b158 cbz r0, 25032 + 25104: b158 cbz r0, 2511e for (uint8_t i=100; i; --i) { - 2501a: 3d01 subs r5, #1 - 2501c: f015 05ff ands.w r5, r5, #255 ; 0xff - 25020: d1da bne.n 24fd8 + 25106: 3d01 subs r5, #1 + 25108: f015 05ff ands.w r5, r5, #255 ; 0xff + 2510c: d1da bne.n 250c4 addr += nWrite; //increment the EEPROM address values += nWrite; //increment the input data pointer nBytes -= nWrite; //decrement the number of bytes left to write } return txStatus; } - 25022: b005 add sp, #20 - 25024: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2510e: b005 add sp, #20 + 25110: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} return write((uint8_t)n); - 25028: 2100 movs r1, #0 - 2502a: 4648 mov r0, r9 - 2502c: f000 f8c4 bl 251b8 - 25030: e7ea b.n 25008 + 25114: 2100 movs r1, #0 + 25116: 4648 mov r0, r9 + 25118: f000 f8c4 bl 252a4 + 2511c: e7ea b.n 250f4 addr += nWrite; //increment the EEPROM address - 25032: 9b03 ldr r3, [sp, #12] - 25034: 9a00 ldr r2, [sp, #0] - 25036: 441a add r2, r3 - 25038: 9200 str r2, [sp, #0] + 2511e: 9b03 ldr r3, [sp, #12] + 25120: 9a00 ldr r2, [sp, #0] + 25122: 441a add r2, r3 + 25124: 9200 str r2, [sp, #0] values += nWrite; //increment the input data pointer - 2503a: 9a01 ldr r2, [sp, #4] - 2503c: 441a add r2, r3 - 2503e: 9201 str r2, [sp, #4] + 25126: 9a01 ldr r2, [sp, #4] + 25128: 441a add r2, r3 + 2512a: 9201 str r2, [sp, #4] while (nBytes > 0) { - 25040: 9a02 ldr r2, [sp, #8] - 25042: 1ad3 subs r3, r2, r3 - 25044: 9302 str r3, [sp, #8] - 25046: d18e bne.n 24f66 + 2512c: 9a02 ldr r2, [sp, #8] + 2512e: 1ad3 subs r3, r2, r3 + 25130: 9302 str r3, [sp, #8] + 25132: d18e bne.n 25052 return txStatus; - 25048: 2000 movs r0, #0 + 25134: 2000 movs r0, #0 } - 2504a: b005 add sp, #20 - 2504c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 25136: b005 add sp, #20 + 25138: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if (_nAddrBytes == 2) Wire.write( (uint8_t) (addr >> 8) ); //high addr byte - 25050: f3c0 2107 ubfx r1, r0, #8, #8 - 25054: 4648 mov r0, r9 - 25056: f000 f8af bl 251b8 - 2505a: e7aa b.n 24fb2 + 2513c: f3c0 2107 ubfx r1, r0, #8, #8 + 25140: 4648 mov r0, r9 + 25142: f000 f8af bl 252a4 + 25146: e7aa b.n 2509e return EEPROM_ADDR_ERR; //yes, tell the caller - 2505c: 2009 movs r0, #9 + 25148: 2009 movs r0, #9 } - 2505e: b005 add sp, #20 - 25060: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 25064: e0001000 .word 0xe0001000 - 25068: 2000b0f8 .word 0x2000b0f8 - 2506c: 20004ba4 .word 0x20004ba4 - 25070: 431bde83 .word 0x431bde83 + 2514a: b005 add sp, #20 + 2514c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 25150: e0001000 .word 0xe0001000 + 25154: 2000b118 .word 0x2000b118 + 25158: 20004c64 .word 0x20004c64 + 2515c: 431bde83 .word 0x431bde83 -00025074 : +00025160 : //Read bytes from external EEPROM. //If the I/O would extend past the top of the EEPROM address space, //a status of EEPROM_ADDR_ERR is returned. For I2C errors, the status //from the Arduino Wire library is passed back through to the caller. uint8_t BMC24LC256::read(unsigned long addr, uint8_t *values, unsigned int nBytes) { - 25074: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 25078: 469b mov fp, r3 - 2507a: 4617 mov r7, r2 + 25160: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 25164: 469b mov fp, r3 + 25166: 4617 mov r7, r2 uint8_t ctrlByte; uint8_t rxStatus; unsigned int nRead; //number of bytes to read unsigned int nPage; //number of bytes remaining on current layer, starting at addr if (addr + nBytes > _totalCapacity) { //will this read take us past the top of the EEPROM? - 2507c: 18ca adds r2, r1, r3 - 2507e: 68c3 ldr r3, [r0, #12] - 25080: 429a cmp r2, r3 - 25082: d85d bhi.n 25140 + 25168: 18ca adds r2, r1, r3 + 2516a: 68c3 ldr r3, [r0, #12] + 2516c: 429a cmp r2, r3 + 2516e: d85d bhi.n 2522c return EEPROM_ADDR_ERR; //yes, tell the caller } while (nBytes > 0) { - 25084: f1bb 0f00 cmp.w fp, #0 - 25088: d04e beq.n 25128 - 2508a: 4682 mov sl, r0 - 2508c: 4689 mov r9, r1 - 2508e: 4c2e ldr r4, [pc, #184] ; (25148 ) + 25170: f1bb 0f00 cmp.w fp, #0 + 25174: d04e beq.n 25214 + 25176: 4682 mov sl, r0 + 25178: 4689 mov r9, r1 + 2517a: 4c2e ldr r4, [pc, #184] ; (25234 ) nPage = _pageSize - ( addr & (_pageSize - 1) ); nRead = nBytes < nPage ? nBytes : nPage; nRead = BUFFER_LENGTH < nRead ? BUFFER_LENGTH : nRead; ctrlByte = _eepromAddr | (uint8_t) (addr >> _csShift); - 25090: f89a 8008 ldrb.w r8, [sl, #8] + 2517c: f89a 8008 ldrb.w r8, [sl, #8] nRead = BUFFER_LENGTH < nRead ? BUFFER_LENGTH : nRead; - 25094: 465a mov r2, fp + 25180: 465a mov r2, fp nPage = _pageSize - ( addr & (_pageSize - 1) ); - 25096: f8ba 6006 ldrh.w r6, [sl, #6] + 25182: f8ba 6006 ldrh.w r6, [sl, #6] transmitting = 1; - 2509a: f04f 0001 mov.w r0, #1 + 25186: f04f 0001 mov.w r0, #1 ctrlByte = _eepromAddr | (uint8_t) (addr >> _csShift); - 2509e: f89a 1000 ldrb.w r1, [sl] - 250a2: fa29 f808 lsr.w r8, r9, r8 + 2518a: f89a 1000 ldrb.w r1, [sl] + 2518e: fa29 f808 lsr.w r8, r9, r8 nPage = _pageSize - ( addr & (_pageSize - 1) ); - 250a6: 1e73 subs r3, r6, #1 + 25192: 1e73 subs r3, r6, #1 nRead = BUFFER_LENGTH < nRead ? BUFFER_LENGTH : nRead; - 250a8: 2a88 cmp r2, #136 ; 0x88 + 25194: 2a88 cmp r2, #136 ; 0x88 ctrlByte = _eepromAddr | (uint8_t) (addr >> _csShift); - 250aa: ea48 0801 orr.w r8, r8, r1 - 250ae: f884 0130 strb.w r0, [r4, #304] ; 0x130 + 25196: ea48 0801 orr.w r8, r8, r1 + 2519a: f884 0130 strb.w r0, [r4, #304] ; 0x130 nPage = _pageSize - ( addr & (_pageSize - 1) ); - 250b2: ea03 0309 and.w r3, r3, r9 + 2519e: ea03 0309 and.w r3, r3, r9 nRead = BUFFER_LENGTH < nRead ? BUFFER_LENGTH : nRead; - 250b6: bf28 it cs - 250b8: 2288 movcs r2, #136 ; 0x88 + 251a2: bf28 it cs + 251a4: 2288 movcs r2, #136 ; 0x88 ctrlByte = _eepromAddr | (uint8_t) (addr >> _csShift); - 250ba: fa5f f888 uxtb.w r8, r8 + 251a6: fa5f f888 uxtb.w r8, r8 txBufferLength = 1; - 250be: f884 012f strb.w r0, [r4, #303] ; 0x12f + 251aa: f884 012f strb.w r0, [r4, #303] ; 0x12f nPage = _pageSize - ( addr & (_pageSize - 1) ); - 250c2: 1af6 subs r6, r6, r3 + 251ae: 1af6 subs r6, r6, r3 txBuffer[0] = (address << 1); - 250c4: ea4f 0348 mov.w r3, r8, lsl #1 + 251b0: ea4f 0348 mov.w r3, r8, lsl #1 nRead = BUFFER_LENGTH < nRead ? BUFFER_LENGTH : nRead; - 250c8: 4296 cmp r6, r2 - 250ca: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 + 251b4: 4296 cmp r6, r2 + 251b6: f884 30a5 strb.w r3, [r4, #165] ; 0xa5 Wire.beginTransmission(ctrlByte); if (_nAddrBytes == 2) Wire.write( (uint8_t) (addr >> 8) ); //high addr byte - 250ce: f8ba 300a ldrh.w r3, [sl, #10] + 251ba: f8ba 300a ldrh.w r3, [sl, #10] nRead = BUFFER_LENGTH < nRead ? BUFFER_LENGTH : nRead; - 250d2: bf28 it cs - 250d4: 4616 movcs r6, r2 + 251be: bf28 it cs + 251c0: 4616 movcs r6, r2 if (_nAddrBytes == 2) Wire.write( (uint8_t) (addr >> 8) ); //high addr byte - 250d6: 2b02 cmp r3, #2 - 250d8: d02a beq.n 25130 + 251c2: 2b02 cmp r3, #2 + 251c4: d02a beq.n 2521c Wire.write( (uint8_t) addr ); //low addr byte - 250da: fa5f f189 uxtb.w r1, r9 - 250de: 4620 mov r0, r4 - 250e0: f000 f86a bl 251b8 + 251c6: fa5f f189 uxtb.w r1, r9 + 251ca: 4620 mov r0, r4 + 251cc: f000 f86a bl 252a4 return endTransmission(1); - 250e4: 2101 movs r1, #1 - 250e6: 4620 mov r0, r4 - 250e8: f000 f974 bl 253d4 + 251d0: 2101 movs r1, #1 + 251d2: 4620 mov r0, r4 + 251d4: f000 f974 bl 254c0 rxStatus = Wire.endTransmission(); if (rxStatus != 0) return rxStatus; //read error - 250ec: 4605 mov r5, r0 - 250ee: b9e0 cbnz r0, 2512a + 251d8: 4605 mov r5, r0 + 251da: b9e0 cbnz r0, 25216 return requestFrom(address, quantity, (uint8_t)1); - 250f0: 2301 movs r3, #1 - 250f2: b2f2 uxtb r2, r6 - 250f4: 4641 mov r1, r8 - 250f6: 4620 mov r0, r4 - 250f8: f000 f9ea bl 254d0 + 251dc: 2301 movs r3, #1 + 251de: b2f2 uxtb r2, r6 + 251e0: 4641 mov r1, r8 + 251e2: 4620 mov r0, r4 + 251e4: f000 f9ea bl 255bc Wire.requestFrom(ctrlByte, nRead); for (uint8_t i=0; i + 251e8: b17e cbz r6, 2520a if (rxBufferIndex >= rxBufferLength) return -1; - 250fe: f894 30a2 ldrb.w r3, [r4, #162] ; 0xa2 - 25102: f894 20a3 ldrb.w r2, [r4, #163] ; 0xa3 + 251ea: f894 30a2 ldrb.w r3, [r4, #162] ; 0xa2 + 251ee: f894 20a3 ldrb.w r2, [r4, #163] ; 0xa3 return rxBuffer[rxBufferIndex++]; - 25106: 1c59 adds r1, r3, #1 + 251f2: 1c59 adds r1, r3, #1 if (rxBufferIndex >= rxBufferLength) return -1; - 25108: 429a cmp r2, r3 + 251f4: 429a cmp r2, r3 return rxBuffer[rxBufferIndex++]; - 2510a: 4423 add r3, r4 + 251f6: 4423 add r3, r4 if (rxBufferIndex >= rxBufferLength) return -1; - 2510c: d916 bls.n 2513c + 251f8: d916 bls.n 25228 return rxBuffer[rxBufferIndex++]; - 2510e: 7e9a ldrb r2, [r3, #26] - 25110: f884 10a2 strb.w r1, [r4, #162] ; 0xa2 - 25114: 1c6b adds r3, r5, #1 - 25116: 557a strb r2, [r7, r5] - 25118: b2dd uxtb r5, r3 - 2511a: 42ae cmp r6, r5 - 2511c: d8ef bhi.n 250fe + 251fa: 7e9a ldrb r2, [r3, #26] + 251fc: f884 10a2 strb.w r1, [r4, #162] ; 0xa2 + 25200: 1c6b adds r3, r5, #1 + 25202: 557a strb r2, [r7, r5] + 25204: b2dd uxtb r5, r3 + 25206: 42ae cmp r6, r5 + 25208: d8ef bhi.n 251ea while (nBytes > 0) { - 2511e: ebbb 0b06 subs.w fp, fp, r6 + 2520a: ebbb 0b06 subs.w fp, fp, r6 addr += nRead; //increment the EEPROM address - 25122: 44b1 add r9, r6 + 2520e: 44b1 add r9, r6 values += nRead; //increment the input data pointer - 25124: 4437 add r7, r6 + 25210: 4437 add r7, r6 while (nBytes > 0) { - 25126: d1b3 bne.n 25090 + 25212: d1b3 bne.n 2517c nBytes -= nRead; //decrement the number of bytes left to write } return 0; - 25128: 2500 movs r5, #0 + 25214: 2500 movs r5, #0 } - 2512a: 4628 mov r0, r5 - 2512c: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 25216: 4628 mov r0, r5 + 25218: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} if (_nAddrBytes == 2) Wire.write( (uint8_t) (addr >> 8) ); //high addr byte - 25130: f3c9 2107 ubfx r1, r9, #8, #8 - 25134: 4620 mov r0, r4 - 25136: f000 f83f bl 251b8 - 2513a: e7ce b.n 250da - 2513c: 22ff movs r2, #255 ; 0xff - 2513e: e7e9 b.n 25114 + 2521c: f3c9 2107 ubfx r1, r9, #8, #8 + 25220: 4620 mov r0, r4 + 25222: f000 f83f bl 252a4 + 25226: e7ce b.n 251c6 + 25228: 22ff movs r2, #255 ; 0xff + 2522a: e7e9 b.n 25200 return EEPROM_ADDR_ERR; //yes, tell the caller - 25140: 2509 movs r5, #9 + 2522c: 2509 movs r5, #9 } - 25142: 4628 mov r0, r5 - 25144: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 25148: 2000b0f8 .word 0x2000b0f8 + 2522e: 4628 mov r0, r5 + 25230: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 25234: 2000b118 .word 0x2000b118 -0002514c : +00025238 : //If the I/O would extend past the top of the EEPROM address space, //a status of EEPROM_ADDR_ERR is returned. For I2C errors, the status //from the Arduino Wire library is passed back through to the caller. //To distinguish error values from valid data, error values are returned as negative numbers. int BMC24LC256::read(unsigned long addr) { - 2514c: b500 push {lr} - 2514e: b083 sub sp, #12 + 25238: b500 push {lr} + 2523a: b083 sub sp, #12 uint8_t data; int ret; ret = read(addr, &data, 1); - 25150: 2301 movs r3, #1 - 25152: f10d 0207 add.w r2, sp, #7 - 25156: f7ff ff8d bl 25074 + 2523c: 2301 movs r3, #1 + 2523e: f10d 0207 add.w r2, sp, #7 + 25242: f7ff ff8d bl 25160 return ret == 0 ? data : -ret; - 2515a: b920 cbnz r0, 25166 - 2515c: f89d 0007 ldrb.w r0, [sp, #7] + 25246: b920 cbnz r0, 25252 + 25248: f89d 0007 ldrb.w r0, [sp, #7] } - 25160: b003 add sp, #12 - 25162: f85d fb04 ldr.w pc, [sp], #4 + 2524c: b003 add sp, #12 + 2524e: f85d fb04 ldr.w pc, [sp], #4 return ret == 0 ? data : -ret; - 25166: 4240 negs r0, r0 + 25252: 4240 negs r0, r0 } - 25168: b003 add sp, #12 - 2516a: f85d fb04 ldr.w pc, [sp], #4 - 2516e: bf00 nop + 25254: b003 add sp, #12 + 25256: f85d fb04 ldr.w pc, [sp], #4 + 2525a: bf00 nop -00025170 : +0002525c : return rxBufferLength - rxBufferIndex; - 25170: f890 20a3 ldrb.w r2, [r0, #163] ; 0xa3 - 25174: f890 00a2 ldrb.w r0, [r0, #162] ; 0xa2 + 2525c: f890 20a3 ldrb.w r2, [r0, #163] ; 0xa3 + 25260: f890 00a2 ldrb.w r0, [r0, #162] ; 0xa2 } - 25178: 1a10 subs r0, r2, r0 - 2517a: 4770 bx lr + 25264: 1a10 subs r0, r2, r0 + 25266: 4770 bx lr -0002517c : +00025268 : if (rxBufferIndex >= rxBufferLength) return -1; - 2517c: f890 30a2 ldrb.w r3, [r0, #162] ; 0xa2 - 25180: f890 20a3 ldrb.w r2, [r0, #163] ; 0xa3 - 25184: 429a cmp r2, r3 - 25186: d905 bls.n 25194 + 25268: f890 30a2 ldrb.w r3, [r0, #162] ; 0xa2 + 2526c: f890 20a3 ldrb.w r2, [r0, #163] ; 0xa3 + 25270: 429a cmp r2, r3 + 25272: d905 bls.n 25280 return rxBuffer[rxBufferIndex++]; - 25188: 1c5a adds r2, r3, #1 - 2518a: 4403 add r3, r0 - 2518c: f880 20a2 strb.w r2, [r0, #162] ; 0xa2 - 25190: 7e98 ldrb r0, [r3, #26] - 25192: 4770 bx lr + 25274: 1c5a adds r2, r3, #1 + 25276: 4403 add r3, r0 + 25278: f880 20a2 strb.w r2, [r0, #162] ; 0xa2 + 2527c: 7e98 ldrb r0, [r3, #26] + 2527e: 4770 bx lr if (rxBufferIndex >= rxBufferLength) return -1; - 25194: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 25280: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff } - 25198: 4770 bx lr - 2519a: bf00 nop + 25284: 4770 bx lr + 25286: bf00 nop -0002519c : +00025288 : if (rxBufferIndex >= rxBufferLength) return -1; - 2519c: f890 30a2 ldrb.w r3, [r0, #162] ; 0xa2 - 251a0: f890 20a3 ldrb.w r2, [r0, #163] ; 0xa3 - 251a4: 429a cmp r2, r3 - 251a6: d902 bls.n 251ae + 25288: f890 30a2 ldrb.w r3, [r0, #162] ; 0xa2 + 2528c: f890 20a3 ldrb.w r2, [r0, #163] ; 0xa3 + 25290: 429a cmp r2, r3 + 25292: d902 bls.n 2529a return rxBuffer[rxBufferIndex]; - 251a8: 4418 add r0, r3 - 251aa: 7e80 ldrb r0, [r0, #26] - 251ac: 4770 bx lr + 25294: 4418 add r0, r3 + 25296: 7e80 ldrb r0, [r0, #26] + 25298: 4770 bx lr if (rxBufferIndex >= rxBufferLength) return -1; - 251ae: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 2529a: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff } - 251b2: 4770 bx lr + 2529e: 4770 bx lr -000251b4 : +000252a0 : } - 251b4: 4770 bx lr - 251b6: bf00 nop + 252a0: 4770 bx lr + 252a2: bf00 nop -000251b8 : +000252a4 : { - 251b8: 4603 mov r3, r0 + 252a4: 4603 mov r3, r0 if (transmitting || slave_mode) { - 251ba: f8b0 0130 ldrh.w r0, [r0, #304] ; 0x130 - 251be: b178 cbz r0, 251e0 + 252a6: f8b0 0130 ldrh.w r0, [r0, #304] ; 0x130 + 252aa: b178 cbz r0, 252cc if (txBufferLength >= BUFFER_LENGTH+1) { - 251c0: f893 212f ldrb.w r2, [r3, #303] ; 0x12f - 251c4: 2a88 cmp r2, #136 ; 0x88 - 251c6: d903 bls.n 251d0 + 252ac: f893 212f ldrb.w r2, [r3, #303] ; 0x12f + 252b0: 2a88 cmp r2, #136 ; 0x88 + 252b2: d903 bls.n 252bc // format warnings are too pedantic - disable until newer toolchain offers better... // https://forum.pjrc.com/threads/62473?p=256873&viewfull=1#post256873 // int printf(const char *format, ...) __attribute__ ((format (printf, 2, 3))); protected: void setWriteError(int err = 1) { write_error = err; } - 251c8: 2201 movs r2, #1 + 252b4: 2201 movs r2, #1 return 0; - 251ca: 2000 movs r0, #0 - 251cc: 605a str r2, [r3, #4] - 251ce: 4770 bx lr + 252b6: 2000 movs r0, #0 + 252b8: 605a str r2, [r3, #4] + 252ba: 4770 bx lr txBuffer[txBufferLength++] = data; - 251d0: f102 0c01 add.w ip, r2, #1 + 252bc: f102 0c01 add.w ip, r2, #1 return 1; - 251d4: 2001 movs r0, #1 + 252c0: 2001 movs r0, #1 txBuffer[txBufferLength++] = data; - 251d6: 441a add r2, r3 - 251d8: f883 c12f strb.w ip, [r3, #303] ; 0x12f - 251dc: f882 10a5 strb.w r1, [r2, #165] ; 0xa5 + 252c2: 441a add r2, r3 + 252c4: f883 c12f strb.w ip, [r3, #303] ; 0x12f + 252c8: f882 10a5 strb.w r1, [r2, #165] ; 0xa5 } - 251e0: 4770 bx lr - 251e2: bf00 nop + 252cc: 4770 bx lr + 252ce: bf00 nop -000251e4 : +000252d0 : { - 251e4: b538 push {r3, r4, r5, lr} + 252d0: b538 push {r3, r4, r5, lr} if (transmitting || slave_mode) { - 251e6: f8b0 4130 ldrh.w r4, [r0, #304] ; 0x130 - 251ea: b90c cbnz r4, 251f0 + 252d2: f8b0 4130 ldrh.w r4, [r0, #304] ; 0x130 + 252d6: b90c cbnz r4, 252dc } - 251ec: 4620 mov r0, r4 - 251ee: bd38 pop {r3, r4, r5, pc} + 252d8: 4620 mov r0, r4 + 252da: bd38 pop {r3, r4, r5, pc} size_t avail = BUFFER_LENGTH+1 - txBufferLength; - 251f0: f890 312f ldrb.w r3, [r0, #303] ; 0x12f - 251f4: 4605 mov r5, r0 - 251f6: f1c3 0489 rsb r4, r3, #137 ; 0x89 + 252dc: f890 312f ldrb.w r3, [r0, #303] ; 0x12f + 252e0: 4605 mov r5, r0 + 252e2: f1c3 0489 rsb r4, r3, #137 ; 0x89 if (quantity > avail) { - 251fa: 42a2 cmp r2, r4 - 251fc: d80d bhi.n 2521a - 251fe: 4614 mov r4, r2 + 252e6: 42a2 cmp r2, r4 + 252e8: d80d bhi.n 25306 + 252ea: 4614 mov r4, r2 memcpy(txBuffer + txBufferLength, data, quantity); - 25200: f105 00a5 add.w r0, r5, #165 ; 0xa5 - 25204: 4622 mov r2, r4 - 25206: 4418 add r0, r3 - 25208: f005 fa7e bl 2a708 + 252ec: f105 00a5 add.w r0, r5, #165 ; 0xa5 + 252f0: 4622 mov r2, r4 + 252f2: 4418 add r0, r3 + 252f4: f005 fa7c bl 2a7f0 txBufferLength += quantity; - 2520c: f895 312f ldrb.w r3, [r5, #303] ; 0x12f + 252f8: f895 312f ldrb.w r3, [r5, #303] ; 0x12f } - 25210: 4620 mov r0, r4 + 252fc: 4620 mov r0, r4 txBufferLength += quantity; - 25212: 4423 add r3, r4 - 25214: f885 312f strb.w r3, [r5, #303] ; 0x12f + 252fe: 4423 add r3, r4 + 25300: f885 312f strb.w r3, [r5, #303] ; 0x12f } - 25218: bd38 pop {r3, r4, r5, pc} - 2521a: 2201 movs r2, #1 - 2521c: 6042 str r2, [r0, #4] - 2521e: e7ef b.n 25200 + 25304: bd38 pop {r3, r4, r5, pc} + 25306: 2201 movs r2, #1 + 25308: 6042 str r2, [r0, #4] + 2530a: e7ef b.n 252ec -00025220 : +0002530c : constexpr TwoWire(IMXRT_LPI2C_t *myport, const I2C_Hardware_t &myhardware) - 25220: b538 push {r3, r4, r5, lr} + 2530c: b538 push {r3, r4, r5, lr} constexpr Print() : write_error(0) {} - 25222: 2500 movs r5, #0 - 25224: 4613 mov r3, r2 + 2530e: 2500 movs r5, #0 + 25310: 4613 mov r3, r2 #include "Print.h" class Stream : public Print { public: constexpr Stream() : _timeout(1000), read_error(0) {} - 25226: f44f 727a mov.w r2, #1000 ; 0x3e8 - 2522a: 4604 mov r4, r0 - 2522c: e9c0 5201 strd r5, r2, [r0, #4] + 25312: f44f 727a mov.w r2, #1000 ; 0x3e8 + 25316: 4604 mov r4, r0 + 25318: e9c0 5201 strd r5, r2, [r0, #4] : port(myport), hardware(myhardware) { - 25230: 4815 ldr r0, [pc, #84] ; (25288 ) - 25232: 2288 movs r2, #136 ; 0x88 - 25234: 6121 str r1, [r4, #16] - 25236: 4629 mov r1, r5 - 25238: 6020 str r0, [r4, #0] - 2523a: f104 001a add.w r0, r4, #26 - 2523e: 6163 str r3, [r4, #20] - 25240: 7325 strb r5, [r4, #12] - 25242: 7625 strb r5, [r4, #24] - 25244: 7665 strb r5, [r4, #25] - 25246: f009 f921 bl 2e48c - 2524a: 2289 movs r2, #137 ; 0x89 - 2524c: 4629 mov r1, r5 - 2524e: f104 00a5 add.w r0, r4, #165 ; 0xa5 - 25252: f884 50a2 strb.w r5, [r4, #162] ; 0xa2 - 25256: f884 50a3 strb.w r5, [r4, #163] ; 0xa3 - 2525a: f884 50a4 strb.w r5, [r4, #164] ; 0xa4 - 2525e: f009 f915 bl 2e48c + 2531c: 4815 ldr r0, [pc, #84] ; (25374 ) + 2531e: 2288 movs r2, #136 ; 0x88 + 25320: 6121 str r1, [r4, #16] + 25322: 4629 mov r1, r5 + 25324: 6020 str r0, [r4, #0] + 25326: f104 001a add.w r0, r4, #26 + 2532a: 6163 str r3, [r4, #20] + 2532c: 7325 strb r5, [r4, #12] + 2532e: 7625 strb r5, [r4, #24] + 25330: 7665 strb r5, [r4, #25] + 25332: f009 f91f bl 2e574 + 25336: 2289 movs r2, #137 ; 0x89 + 25338: 4629 mov r1, r5 + 2533a: f104 00a5 add.w r0, r4, #165 ; 0xa5 + 2533e: f884 50a2 strb.w r5, [r4, #162] ; 0xa2 + 25342: f884 50a3 strb.w r5, [r4, #163] ; 0xa3 + 25346: f884 50a4 strb.w r5, [r4, #164] ; 0xa4 + 2534a: f009 f913 bl 2e574 } - 25262: 4620 mov r0, r4 + 2534e: 4620 mov r0, r4 : port(myport), hardware(myhardware) { - 25264: f884 512e strb.w r5, [r4, #302] ; 0x12e - 25268: f884 512f strb.w r5, [r4, #303] ; 0x12f - 2526c: f884 5130 strb.w r5, [r4, #304] ; 0x130 - 25270: f884 5131 strb.w r5, [r4, #305] ; 0x131 - 25274: f884 5132 strb.w r5, [r4, #306] ; 0x132 - 25278: f884 5133 strb.w r5, [r4, #307] ; 0x133 - 2527c: f884 5134 strb.w r5, [r4, #308] ; 0x134 - 25280: e9c4 554e strd r5, r5, [r4, #312] ; 0x138 + 25350: f884 512e strb.w r5, [r4, #302] ; 0x12e + 25354: f884 512f strb.w r5, [r4, #303] ; 0x12f + 25358: f884 5130 strb.w r5, [r4, #304] ; 0x130 + 2535c: f884 5131 strb.w r5, [r4, #305] ; 0x131 + 25360: f884 5132 strb.w r5, [r4, #306] ; 0x132 + 25364: f884 5133 strb.w r5, [r4, #307] ; 0x133 + 25368: f884 5134 strb.w r5, [r4, #308] ; 0x134 + 2536c: e9c4 554e strd r5, r5, [r4, #312] ; 0x138 } - 25284: bd38 pop {r3, r4, r5, pc} - 25286: bf00 nop - 25288: 2000420c .word 0x2000420c + 25370: bd38 pop {r3, r4, r5, pc} + 25372: bf00 nop + 25374: 200042cc .word 0x200042cc -0002528c : +00025378 : { - 2528c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 25378: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} uint32_t sda_pin = hardware.sda_pins[sda_pin_index_].pin; - 25290: f8d0 a014 ldr.w sl, [r0, #20] + 2537c: f8d0 a014 ldr.w sl, [r0, #20] *portConfigRegister(sda_pin) = 5 | 0x10; - 25294: 2415 movs r4, #21 + 25380: 2415 movs r4, #21 uint32_t sda_pin = hardware.sda_pins[sda_pin_index_].pin; - 25296: 7e01 ldrb r1, [r0, #24] + 25382: 7e01 ldrb r1, [r0, #24] { - 25298: 4681 mov r9, r0 + 25384: 4681 mov r9, r0 uint32_t scl_pin = hardware.scl_pins[scl_pin_index_].pin; - 2529a: 7e43 ldrb r3, [r0, #25] + 25386: 7e43 ldrb r3, [r0, #25] { - 2529c: b083 sub sp, #12 + 25388: b083 sub sp, #12 uint32_t sda_pin = hardware.sda_pins[sda_pin_index_].pin; - 2529e: eb0a 1101 add.w r1, sl, r1, lsl #4 + 2538a: eb0a 1101 add.w r1, sl, r1, lsl #4 uint32_t sda_mask = digitalPinToBitMask(sda_pin); - 252a2: 4a38 ldr r2, [pc, #224] ; (25384 ) + 2538e: 4a38 ldr r2, [pc, #224] ; (25470 ) uint32_t scl_pin = hardware.scl_pins[scl_pin_index_].pin; - 252a4: eb0a 1303 add.w r3, sl, r3, lsl #4 + 25390: eb0a 1303 add.w r3, sl, r3, lsl #4 uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 252a8: 4f37 ldr r7, [pc, #220] ; (25388 ) + 25394: 4f37 ldr r7, [pc, #220] ; (25474 ) uint32_t sda_pin = hardware.sda_pins[sda_pin_index_].pin; - 252aa: 7a09 ldrb r1, [r1, #8] + 25396: 7a09 ldrb r1, [r1, #8] uint32_t scl_pin = hardware.scl_pins[scl_pin_index_].pin; - 252ac: f893 3028 ldrb.w r3, [r3, #40] ; 0x28 + 25398: f893 3028 ldrb.w r3, [r3, #40] ; 0x28 uint32_t sda_mask = digitalPinToBitMask(sda_pin); - 252b0: eb02 1501 add.w r5, r2, r1, lsl #4 - 252b4: 0109 lsls r1, r1, #4 - 252b6: 68e8 ldr r0, [r5, #12] + 2539c: eb02 1501 add.w r5, r2, r1, lsl #4 + 253a0: 0109 lsls r1, r1, #4 + 253a2: 68e8 ldr r0, [r5, #12] *portSetRegister(sda_pin) = sda_mask; - 252b8: f852 8001 ldr.w r8, [r2, r1] + 253a4: f852 8001 ldr.w r8, [r2, r1] uint32_t scl_mask = digitalPinToBitMask(scl_pin); - 252bc: eb02 1103 add.w r1, r2, r3, lsl #4 + 253a8: eb02 1103 add.w r1, r2, r3, lsl #4 *portConfigRegister(sda_pin) = 5 | 0x10; - 252c0: f8d5 b004 ldr.w fp, [r5, #4] + 253ac: f8d5 b004 ldr.w fp, [r5, #4] uint32_t scl_mask = digitalPinToBitMask(scl_pin); - 252c4: 011b lsls r3, r3, #4 - 252c6: 68ce ldr r6, [r1, #12] + 253b0: 011b lsls r3, r3, #4 + 253b2: 68ce ldr r6, [r1, #12] *portSetRegister(scl_pin) = scl_mask; - 252c8: 58d5 ldr r5, [r2, r3] + 253b4: 58d5 ldr r5, [r2, r3] *portConfigRegister(sda_pin) = 5 | 0x10; - 252ca: f8cb 4000 str.w r4, [fp] + 253b6: f8cb 4000 str.w r4, [fp] *portSetRegister(sda_pin) = sda_mask; - 252ce: f8c8 0084 str.w r0, [r8, #132] ; 0x84 + 253ba: f8c8 0084 str.w r0, [r8, #132] ; 0x84 *portModeRegister(sda_pin) |= sda_mask; - 252d2: f8d8 3004 ldr.w r3, [r8, #4] + 253be: f8d8 3004 ldr.w r3, [r8, #4] *portConfigRegister(scl_pin) = 5 | 0x10; - 252d6: 684a ldr r2, [r1, #4] + 253c2: 684a ldr r2, [r1, #4] *portModeRegister(sda_pin) |= sda_mask; - 252d8: 4303 orrs r3, r0 + 253c4: 4303 orrs r3, r0 uint32_t begin = ARM_DWT_CYCCNT; - 252da: 492c ldr r1, [pc, #176] ; (2538c ) + 253c6: 492c ldr r1, [pc, #176] ; (25478 ) *portConfigRegister(scl_pin) = 5 | 0x10; - 252dc: 9201 str r2, [sp, #4] + 253c8: 9201 str r2, [sp, #4] *portModeRegister(sda_pin) |= sda_mask; - 252de: f8c8 3004 str.w r3, [r8, #4] + 253ca: f8c8 3004 str.w r3, [r8, #4] *portConfigRegister(scl_pin) = 5 | 0x10; - 252e2: 6014 str r4, [r2, #0] + 253ce: 6014 str r4, [r2, #0] *portSetRegister(scl_pin) = scl_mask; - 252e4: f8c5 6084 str.w r6, [r5, #132] ; 0x84 + 253d0: f8c5 6084 str.w r6, [r5, #132] ; 0x84 *portModeRegister(scl_pin) |= scl_mask; - 252e8: 686b ldr r3, [r5, #4] - 252ea: 4333 orrs r3, r6 - 252ec: 606b str r3, [r5, #4] + 253d4: 686b ldr r3, [r5, #4] + 253d6: 4333 orrs r3, r6 + 253d8: 606b str r3, [r5, #4] uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 252ee: 4b28 ldr r3, [pc, #160] ; (25390 ) + 253da: 4b28 ldr r3, [pc, #160] ; (2547c ) uint32_t begin = ARM_DWT_CYCCNT; - 252f0: 684c ldr r4, [r1, #4] + 253dc: 684c ldr r4, [r1, #4] uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 252f2: 683a ldr r2, [r7, #0] - 252f4: fba3 3202 umull r3, r2, r3, r2 - 252f8: 0c92 lsrs r2, r2, #18 - 252fa: eb02 0282 add.w r2, r2, r2, lsl #2 - 252fe: 0052 lsls r2, r2, #1 + 253de: 683a ldr r2, [r7, #0] + 253e0: fba3 3202 umull r3, r2, r3, r2 + 253e4: 0c92 lsrs r2, r2, #18 + 253e6: eb02 0282 add.w r2, r2, r2, lsl #2 + 253ea: 0052 lsls r2, r2, #1 while (ARM_DWT_CYCCNT - begin < cycles) ; // wait - 25300: 684b ldr r3, [r1, #4] - 25302: 1b1b subs r3, r3, r4 - 25304: 429a cmp r2, r3 - 25306: d8fb bhi.n 25300 - 25308: f04f 0c09 mov.w ip, #9 + 253ec: 684b ldr r3, [r1, #4] + 253ee: 1b1b subs r3, r3, r4 + 253f0: 429a cmp r2, r3 + 253f2: d8fb bhi.n 253ec + 253f4: f04f 0c09 mov.w ip, #9 uint32_t begin = ARM_DWT_CYCCNT; - 2530c: 4a1f ldr r2, [pc, #124] ; (2538c ) + 253f8: 4a1f ldr r2, [pc, #124] ; (25478 ) uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 2530e: f8df e080 ldr.w lr, [pc, #128] ; 25390 + 253fa: f8df e080 ldr.w lr, [pc, #128] ; 2547c if ((*portInputRegister(sda_pin) & sda_mask) - 25312: f8d8 3008 ldr.w r3, [r8, #8] + 253fe: f8d8 3008 ldr.w r3, [r8, #8] && (*portInputRegister(scl_pin) & scl_mask)) { - 25316: 4203 tst r3, r0 - 25318: d002 beq.n 25320 - 2531a: 68ab ldr r3, [r5, #8] - 2531c: 4233 tst r3, r6 - 2531e: d12f bne.n 25380 + 25402: 4203 tst r3, r0 + 25404: d002 beq.n 2540c + 25406: 68ab ldr r3, [r5, #8] + 25408: 4233 tst r3, r6 + 2540a: d12f bne.n 2546c *portClearRegister(scl_pin) = scl_mask; - 25320: f8c5 6088 str.w r6, [r5, #136] ; 0x88 + 2540c: f8c5 6088 str.w r6, [r5, #136] ; 0x88 uint32_t begin = ARM_DWT_CYCCNT; - 25324: 6854 ldr r4, [r2, #4] + 25410: 6854 ldr r4, [r2, #4] uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 25326: 6839 ldr r1, [r7, #0] - 25328: fbae 3101 umull r3, r1, lr, r1 - 2532c: 0c89 lsrs r1, r1, #18 - 2532e: eb01 0181 add.w r1, r1, r1, lsl #2 + 25412: 6839 ldr r1, [r7, #0] + 25414: fbae 3101 umull r3, r1, lr, r1 + 25418: 0c89 lsrs r1, r1, #18 + 2541a: eb01 0181 add.w r1, r1, r1, lsl #2 while (ARM_DWT_CYCCNT - begin < cycles) ; // wait - 25332: 6853 ldr r3, [r2, #4] - 25334: 1b1b subs r3, r3, r4 - 25336: 4299 cmp r1, r3 - 25338: d8fb bhi.n 25332 + 2541e: 6853 ldr r3, [r2, #4] + 25420: 1b1b subs r3, r3, r4 + 25422: 4299 cmp r1, r3 + 25424: d8fb bhi.n 2541e *portSetRegister(scl_pin) = scl_mask; - 2533a: f8c5 6084 str.w r6, [r5, #132] ; 0x84 + 25426: f8c5 6084 str.w r6, [r5, #132] ; 0x84 uint32_t begin = ARM_DWT_CYCCNT; - 2533e: 6854 ldr r4, [r2, #4] + 2542a: 6854 ldr r4, [r2, #4] uint32_t cycles = F_CPU_ACTUAL / 1000000 * usec; - 25340: 6839 ldr r1, [r7, #0] - 25342: fbae 3101 umull r3, r1, lr, r1 - 25346: 0c89 lsrs r1, r1, #18 - 25348: eb01 0181 add.w r1, r1, r1, lsl #2 + 2542c: 6839 ldr r1, [r7, #0] + 2542e: fbae 3101 umull r3, r1, lr, r1 + 25432: 0c89 lsrs r1, r1, #18 + 25434: eb01 0181 add.w r1, r1, r1, lsl #2 while (ARM_DWT_CYCCNT - begin < cycles) ; // wait - 2534c: 6853 ldr r3, [r2, #4] - 2534e: 1b1b subs r3, r3, r4 - 25350: 4299 cmp r1, r3 - 25352: d8fb bhi.n 2534c + 25438: 6853 ldr r3, [r2, #4] + 2543a: 1b1b subs r3, r3, r4 + 2543c: 4299 cmp r1, r3 + 2543e: d8fb bhi.n 25438 for (int i=0; i < 9; i++) { - 25354: f1bc 0c01 subs.w ip, ip, #1 - 25358: d1db bne.n 25312 + 25440: f1bc 0c01 subs.w ip, ip, #1 + 25444: d1db bne.n 253fe bool ret = false; - 2535a: 4660 mov r0, ip + 25446: 4660 mov r0, ip *(portConfigRegister(sda_pin)) = hardware.sda_pins[sda_pin_index_].mux_val; - 2535c: f899 3018 ldrb.w r3, [r9, #24] + 25448: f899 3018 ldrb.w r3, [r9, #24] *(portConfigRegister(scl_pin)) = hardware.scl_pins[scl_pin_index_].mux_val; - 25360: 9a01 ldr r2, [sp, #4] + 2544c: 9a01 ldr r2, [sp, #4] *(portConfigRegister(sda_pin)) = hardware.sda_pins[sda_pin_index_].mux_val; - 25362: eb0a 1303 add.w r3, sl, r3, lsl #4 - 25366: 68db ldr r3, [r3, #12] - 25368: f8cb 3000 str.w r3, [fp] + 2544e: eb0a 1303 add.w r3, sl, r3, lsl #4 + 25452: 68db ldr r3, [r3, #12] + 25454: f8cb 3000 str.w r3, [fp] *(portConfigRegister(scl_pin)) = hardware.scl_pins[scl_pin_index_].mux_val; - 2536c: f899 3019 ldrb.w r3, [r9, #25] - 25370: eb0a 1a03 add.w sl, sl, r3, lsl #4 - 25374: f8da 302c ldr.w r3, [sl, #44] ; 0x2c - 25378: 6013 str r3, [r2, #0] + 25458: f899 3019 ldrb.w r3, [r9, #25] + 2545c: eb0a 1a03 add.w sl, sl, r3, lsl #4 + 25460: f8da 302c ldr.w r3, [sl, #44] ; 0x2c + 25464: 6013 str r3, [r2, #0] } - 2537a: b003 add sp, #12 - 2537c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 25466: b003 add sp, #12 + 25468: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} ret = true; - 25380: 2001 movs r0, #1 - 25382: e7eb b.n 2535c - 25384: 200044b4 .word 0x200044b4 - 25388: 20004ba4 .word 0x20004ba4 - 2538c: e0001000 .word 0xe0001000 - 25390: 431bde83 .word 0x431bde83 - -00025394 : + 2546c: 2001 movs r0, #1 + 2546e: e7eb b.n 25448 + 25470: 20004574 .word 0x20004574 + 25474: 20004c64 .word 0x20004c64 + 25478: e0001000 .word 0xe0001000 + 2547c: 431bde83 .word 0x431bde83 + +00025480 : return systick_millis_count; - 25394: 4a0e ldr r2, [pc, #56] ; (253d0 ) + 25480: 4a0e ldr r2, [pc, #56] ; (254bc ) { - 25396: b510 push {r4, lr} - 25398: 6811 ldr r1, [r2, #0] + 25482: b510 push {r4, lr} + 25484: 6811 ldr r1, [r2, #0] uint32_t status = port->MSR; // pg 2899 & 2892 - 2539a: 6904 ldr r4, [r0, #16] + 25486: 6904 ldr r4, [r0, #16] elapsedMillis(unsigned long val) { ms = millis() - val; } - 2539c: e005 b.n 253aa + 25488: e005 b.n 25496 if (status & LPI2C_MSR_MBF) break; // we already have bus control - 2539e: 01db lsls r3, r3, #7 - 253a0: d407 bmi.n 253b2 - 253a2: 6813 ldr r3, [r2, #0] + 2548a: 01db lsls r3, r3, #7 + 2548c: d407 bmi.n 2549e + 2548e: 6813 ldr r3, [r2, #0] operator unsigned long () const { return millis() - ms; } - 253a4: 1a5b subs r3, r3, r1 + 25490: 1a5b subs r3, r3, r1 if (timeout > 16) { - 253a6: 2b10 cmp r3, #16 - 253a8: d808 bhi.n 253bc + 25492: 2b10 cmp r3, #16 + 25494: d808 bhi.n 254a8 uint32_t status = port->MSR; // pg 2899 & 2892 - 253aa: 6963 ldr r3, [r4, #20] + 25496: 6963 ldr r3, [r4, #20] if (!(status & LPI2C_MSR_BBF)) break; // bus is available - 253ac: f013 7f00 tst.w r3, #33554432 ; 0x2000000 - 253b0: d1f5 bne.n 2539e + 25498: f013 7f00 tst.w r3, #33554432 ; 0x2000000 + 2549c: d1f5 bne.n 2548a port->MSR = 0x00007F00; // clear all prior flags - 253b2: f44f 43fe mov.w r3, #32512 ; 0x7f00 + 2549e: f44f 43fe mov.w r3, #32512 ; 0x7f00 return true; - 253b6: 2001 movs r0, #1 + 254a2: 2001 movs r0, #1 port->MSR = 0x00007F00; // clear all prior flags - 253b8: 6163 str r3, [r4, #20] + 254a4: 6163 str r3, [r4, #20] } - 253ba: bd10 pop {r4, pc} + 254a6: bd10 pop {r4, pc} if (force_clock()) break; - 253bc: f7ff ff66 bl 2528c - 253c0: 2800 cmp r0, #0 - 253c2: d0fa beq.n 253ba + 254a8: f7ff ff66 bl 25378 + 254ac: 2800 cmp r0, #0 + 254ae: d0fa beq.n 254a6 port->MSR = 0x00007F00; // clear all prior flags - 253c4: f44f 43fe mov.w r3, #32512 ; 0x7f00 + 254b0: f44f 43fe mov.w r3, #32512 ; 0x7f00 return true; - 253c8: 2001 movs r0, #1 + 254b4: 2001 movs r0, #1 port->MSR = 0x00007F00; // clear all prior flags - 253ca: 6163 str r3, [r4, #20] + 254b6: 6163 str r3, [r4, #20] return true; - 253cc: e7f5 b.n 253ba - 253ce: bf00 nop - 253d0: 2000bae8 .word 0x2000bae8 + 254b8: e7f5 b.n 254a6 + 254ba: bf00 nop + 254bc: 2000bb08 .word 0x2000bb08 -000253d4 : +000254c0 : { - 253d4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 254c0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} uint32_t tx_len = txBufferLength; - 253d8: f890 a12f ldrb.w sl, [r0, #303] ; 0x12f + 254c4: f890 a12f ldrb.w sl, [r0, #303] ; 0x12f if (!tx_len) return 4; // no address for transmit - 253dc: f1ba 0f00 cmp.w sl, #0 - 253e0: d058 beq.n 25494 + 254c8: f1ba 0f00 cmp.w sl, #0 + 254cc: d058 beq.n 25580 if (!wait_idle()) return 4; - 253e2: 4681 mov r9, r0 - 253e4: 4688 mov r8, r1 - 253e6: f7ff ffd5 bl 25394 - 253ea: 2800 cmp r0, #0 - 253ec: d052 beq.n 25494 - 253ee: 4e37 ldr r6, [pc, #220] ; (254cc ) + 254ce: 4681 mov r9, r0 + 254d0: 4688 mov r8, r1 + 254d2: f7ff ffd5 bl 25480 + 254d6: 2800 cmp r0, #0 + 254d8: d052 beq.n 25580 + 254da: 4e37 ldr r6, [pc, #220] ; (255b8 ) uint32_t tx_index = 0; // 0=start, 1=addr, 2-(N-1)=data, N=stop - 253f0: 2400 movs r4, #0 - 253f2: 6837 ldr r7, [r6, #0] + 254dc: 2400 movs r4, #0 + 254de: 6837 ldr r7, [r6, #0] elapsedMillis(unsigned long val) { ms = millis() - val; } - 253f4: e016 b.n 25424 + 254e0: e016 b.n 25510 uint32_t status = port->MSR; // pg 2884 & 2891 - 253f6: 696b ldr r3, [r5, #20] + 254e2: 696b ldr r3, [r5, #20] if (status & LPI2C_MSR_ALF) { - 253f8: 051a lsls r2, r3, #20 - 253fa: d444 bmi.n 25486 + 254e4: 051a lsls r2, r3, #20 + 254e6: d444 bmi.n 25572 if (status & LPI2C_MSR_NDF) { - 253fc: 0558 lsls r0, r3, #21 - 253fe: d458 bmi.n 254b2 + 254e8: 0558 lsls r0, r3, #21 + 254ea: d458 bmi.n 2559e if ((status & LPI2C_MSR_PLTF) || timeout > 50) { - 25400: 0499 lsls r1, r3, #18 - 25402: d44c bmi.n 2549e - 25404: 6832 ldr r2, [r6, #0] + 254ec: 0499 lsls r1, r3, #18 + 254ee: d44c bmi.n 2558a + 254f0: 6832 ldr r2, [r6, #0] operator unsigned long () const { return millis() - ms; } - 25406: 1bd2 subs r2, r2, r7 - 25408: 2a32 cmp r2, #50 ; 0x32 - 2540a: d848 bhi.n 2549e + 254f2: 1bd2 subs r2, r2, r7 + 254f4: 2a32 cmp r2, #50 ; 0x32 + 254f6: d848 bhi.n 2558a if (tx_index > tx_len) { - 2540c: 4554 cmp r4, sl - 2540e: d907 bls.n 25420 + 254f8: 4554 cmp r4, sl + 254fa: d907 bls.n 2550c uint32_t tx_fifo = port->MFSR & 0x07; - 25410: 6dea ldr r2, [r5, #92] ; 0x5c + 254fc: 6dea ldr r2, [r5, #92] ; 0x5c if (tx_fifo == 0 && ((status & LPI2C_MSR_SDF) || !sendStop)) { - 25412: 0752 lsls r2, r2, #29 - 25414: d104 bne.n 25420 - 25416: 059b lsls r3, r3, #22 - 25418: d455 bmi.n 254c6 - 2541a: f1b8 0f00 cmp.w r8, #0 - 2541e: d052 beq.n 254c6 + 254fe: 0752 lsls r2, r2, #29 + 25500: d104 bne.n 2550c + 25502: 059b lsls r3, r3, #22 + 25504: d455 bmi.n 255b2 + 25506: f1b8 0f00 cmp.w r8, #0 + 2550a: d052 beq.n 255b2 yield(); - 25420: f007 f8cc bl 2c5bc + 2550c: f007 f8ca bl 2c6a4 if (tx_index <= tx_len) { - 25424: 4554 cmp r4, sl + 25510: 4554 cmp r4, sl uint32_t fifo_used = port->MFSR & 0x07; // pg 2914 - 25426: f8d9 5010 ldr.w r5, [r9, #16] + 25512: f8d9 5010 ldr.w r5, [r9, #16] if (tx_index <= tx_len) { - 2542a: d8e4 bhi.n 253f6 + 25516: d8e4 bhi.n 254e2 uint32_t fifo_used = port->MFSR & 0x07; // pg 2914 - 2542c: 6dea ldr r2, [r5, #92] ; 0x5c + 25518: 6dea ldr r2, [r5, #92] ; 0x5c while (fifo_used < 4) { - 2542e: 0751 lsls r1, r2, #29 + 2551a: 0751 lsls r1, r2, #29 uint32_t fifo_used = port->MFSR & 0x07; // pg 2914 - 25430: f002 0307 and.w r3, r2, #7 + 2551c: f002 0307 and.w r3, r2, #7 while (fifo_used < 4) { - 25434: d4df bmi.n 253f6 - 25436: e013 b.n 25460 + 25520: d4df bmi.n 254e2 + 25522: e013 b.n 2554c port->MTDR = LPI2C_MTDR_CMD_START | txBuffer[0]; - 25438: f899 20a5 ldrb.w r2, [r9, #165] ; 0xa5 + 25524: f899 20a5 ldrb.w r2, [r9, #165] ; 0xa5 fifo_used++; - 2543c: 3301 adds r3, #1 + 25528: 3301 adds r3, #1 while (fifo_used < 4) { - 2543e: 2402 movs r4, #2 + 2552a: 2402 movs r4, #2 port->MTDR = LPI2C_MTDR_CMD_START | txBuffer[0]; - 25440: f442 6280 orr.w r2, r2, #1024 ; 0x400 + 2552c: f442 6280 orr.w r2, r2, #1024 ; 0x400 while (fifo_used < 4) { - 25444: 2b04 cmp r3, #4 + 25530: 2b04 cmp r3, #4 port->MTDR = LPI2C_MTDR_CMD_START | txBuffer[0]; - 25446: 662a str r2, [r5, #96] ; 0x60 + 25532: 662a str r2, [r5, #96] ; 0x60 while (fifo_used < 4) { - 25448: d027 beq.n 2549a + 25534: d027 beq.n 25586 } else if (tx_index < tx_len) { - 2544a: 458a cmp sl, r1 + 25536: 458a cmp sl, r1 fifo_used++; - 2544c: f103 0301 add.w r3, r3, #1 + 25538: f103 0301 add.w r3, r3, #1 port->MTDR = LPI2C_MTDR_CMD_TRANSMIT | txBuffer[tx_index++]; - 25450: eb09 0201 add.w r2, r9, r1 + 2553c: eb09 0201 add.w r2, r9, r1 } else if (tx_index < tx_len) { - 25454: d90e bls.n 25474 + 25540: d90e bls.n 25560 port->MTDR = LPI2C_MTDR_CMD_TRANSMIT | txBuffer[tx_index++]; - 25456: f892 20a5 ldrb.w r2, [r2, #165] ; 0xa5 + 25542: f892 20a5 ldrb.w r2, [r2, #165] ; 0xa5 while (fifo_used < 4) { - 2545a: 2b04 cmp r3, #4 + 25546: 2b04 cmp r3, #4 port->MTDR = LPI2C_MTDR_CMD_TRANSMIT | txBuffer[tx_index++]; - 2545c: 662a str r2, [r5, #96] ; 0x60 + 25548: 662a str r2, [r5, #96] ; 0x60 while (fifo_used < 4) { - 2545e: d0ca beq.n 253f6 + 2554a: d0ca beq.n 254e2 tx_index = 1; - 25460: 2101 movs r1, #1 + 2554c: 2101 movs r1, #1 if (tx_index == 0) { - 25462: 2c00 cmp r4, #0 - 25464: d0e8 beq.n 25438 + 2554e: 2c00 cmp r4, #0 + 25550: d0e8 beq.n 25524 port->MTDR = LPI2C_MTDR_CMD_TRANSMIT | txBuffer[tx_index++]; - 25466: 4621 mov r1, r4 + 25552: 4621 mov r1, r4 fifo_used++; - 25468: 3301 adds r3, #1 + 25554: 3301 adds r3, #1 port->MTDR = LPI2C_MTDR_CMD_TRANSMIT | txBuffer[tx_index++]; - 2546a: 3401 adds r4, #1 + 25556: 3401 adds r4, #1 } else if (tx_index < tx_len) { - 2546c: 458a cmp sl, r1 + 25558: 458a cmp sl, r1 port->MTDR = LPI2C_MTDR_CMD_TRANSMIT | txBuffer[tx_index++]; - 2546e: eb09 0201 add.w r2, r9, r1 + 2555a: eb09 0201 add.w r2, r9, r1 } else if (tx_index < tx_len) { - 25472: d8f0 bhi.n 25456 + 2555e: d8f0 bhi.n 25542 if (sendStop) port->MTDR = LPI2C_MTDR_CMD_STOP; - 25474: f1b8 0f00 cmp.w r8, #0 - 25478: d0bd beq.n 253f6 - 2547a: f44f 7300 mov.w r3, #512 ; 0x200 - 2547e: 662b str r3, [r5, #96] ; 0x60 + 25560: f1b8 0f00 cmp.w r8, #0 + 25564: d0bd beq.n 254e2 + 25566: f44f 7300 mov.w r3, #512 ; 0x200 + 2556a: 662b str r3, [r5, #96] ; 0x60 uint32_t status = port->MSR; // pg 2884 & 2891 - 25480: 696b ldr r3, [r5, #20] + 2556c: 696b ldr r3, [r5, #20] if (status & LPI2C_MSR_ALF) { - 25482: 051a lsls r2, r3, #20 - 25484: d5ba bpl.n 253fc + 2556e: 051a lsls r2, r3, #20 + 25570: d5ba bpl.n 254e8 port->MCR |= LPI2C_MCR_RTF | LPI2C_MCR_RRF; // clear FIFOs - 25486: 692b ldr r3, [r5, #16] + 25572: 692b ldr r3, [r5, #16] return 4; // we lost bus arbitration to another master - 25488: 2004 movs r0, #4 + 25574: 2004 movs r0, #4 port->MCR |= LPI2C_MCR_RTF | LPI2C_MCR_RRF; // clear FIFOs - 2548a: f443 7340 orr.w r3, r3, #768 ; 0x300 - 2548e: 612b str r3, [r5, #16] + 25576: f443 7340 orr.w r3, r3, #768 ; 0x300 + 2557a: 612b str r3, [r5, #16] } - 25490: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 2557c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} if (!tx_len) return 4; // no address for transmit - 25494: 2004 movs r0, #4 + 25580: 2004 movs r0, #4 } - 25496: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 25582: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} tx_index = 1; - 2549a: 2401 movs r4, #1 - 2549c: e7ab b.n 253f6 + 25586: 2401 movs r4, #1 + 25588: e7ab b.n 254e2 port->MCR |= LPI2C_MCR_RTF | LPI2C_MCR_RRF; // clear FIFOs - 2549e: 692b ldr r3, [r5, #16] + 2558a: 692b ldr r3, [r5, #16] port->MTDR = LPI2C_MTDR_CMD_STOP; // try to send a stop - 254a0: f44f 7200 mov.w r2, #512 ; 0x200 + 2558c: f44f 7200 mov.w r2, #512 ; 0x200 return 4; // clock stretched too long or generic timeout - 254a4: 2004 movs r0, #4 + 25590: 2004 movs r0, #4 port->MCR |= LPI2C_MCR_RTF | LPI2C_MCR_RRF; // clear FIFOs - 254a6: f443 7340 orr.w r3, r3, #768 ; 0x300 - 254aa: 612b str r3, [r5, #16] + 25592: f443 7340 orr.w r3, r3, #768 ; 0x300 + 25596: 612b str r3, [r5, #16] port->MTDR = LPI2C_MTDR_CMD_STOP; // try to send a stop - 254ac: 662a str r2, [r5, #96] ; 0x60 + 25598: 662a str r2, [r5, #96] ; 0x60 } - 254ae: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 2559a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} port->MCR |= LPI2C_MCR_RTF | LPI2C_MCR_RRF; // clear FIFOs - 254b2: 692b ldr r3, [r5, #16] + 2559e: 692b ldr r3, [r5, #16] port->MTDR = LPI2C_MTDR_CMD_STOP; - 254b4: f44f 7200 mov.w r2, #512 ; 0x200 + 255a0: f44f 7200 mov.w r2, #512 ; 0x200 return 2; // NACK (assume address, TODO: how to tell address from data) - 254b8: 2002 movs r0, #2 + 255a4: 2002 movs r0, #2 port->MCR |= LPI2C_MCR_RTF | LPI2C_MCR_RRF; // clear FIFOs - 254ba: f443 7340 orr.w r3, r3, #768 ; 0x300 - 254be: 612b str r3, [r5, #16] + 255a6: f443 7340 orr.w r3, r3, #768 ; 0x300 + 255aa: 612b str r3, [r5, #16] port->MTDR = LPI2C_MTDR_CMD_STOP; - 254c0: 662a str r2, [r5, #96] ; 0x60 + 255ac: 662a str r2, [r5, #96] ; 0x60 } - 254c2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 255ae: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} return 0; - 254c6: 2000 movs r0, #0 - 254c8: e7e5 b.n 25496 - 254ca: bf00 nop - 254cc: 2000bae8 .word 0x2000bae8 + 255b2: 2000 movs r0, #0 + 255b4: e7e5 b.n 25582 + 255b6: bf00 nop + 255b8: 2000bb08 .word 0x2000bb08 -000254d0 : +000255bc : { - 254d0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 254d4: 4682 mov sl, r0 - 254d6: 460c mov r4, r1 - 254d8: 4615 mov r5, r2 - 254da: 461f mov r7, r3 + 255bc: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 255c0: 4682 mov sl, r0 + 255c2: 460c mov r4, r1 + 255c4: 4615 mov r5, r2 + 255c6: 461f mov r7, r3 if (!wait_idle()) return 4; - 254dc: f7ff ff5a bl 25394 - 254e0: 2800 cmp r0, #0 - 254e2: f000 808f beq.w 25604 + 255c8: f7ff ff5a bl 25480 + 255cc: 2800 cmp r0, #0 + 255ce: f000 808f beq.w 256f0 address = (address & 0x7F) << 1; - 254e6: 0063 lsls r3, r4, #1 + 255d2: 0063 lsls r3, r4, #1 rxBufferIndex = 0; - 254e8: 2100 movs r1, #0 - 254ea: 2d01 cmp r5, #1 - 254ec: f8df 811c ldr.w r8, [pc, #284] ; 2560c + 255d4: 2100 movs r1, #0 + 255d6: 2d01 cmp r5, #1 + 255d8: f8df 811c ldr.w r8, [pc, #284] ; 256f8 port->MTDR = LPI2C_MTDR_CMD_START | 1 | address; - 254f0: b2db uxtb r3, r3 - 254f2: f240 4601 movw r6, #1025 ; 0x401 - 254f6: bf38 it cc - 254f8: 2501 movcc r5, #1 + 255dc: b2db uxtb r3, r3 + 255de: f240 4601 movw r6, #1025 ; 0x401 + 255e2: bf38 it cc + 255e4: 2501 movcc r5, #1 uint32_t tx_state = 0; // 0=begin, 1=start, 2=data, 3=stop - 254fa: 460c mov r4, r1 + 255e6: 460c mov r4, r1 port->MTDR = LPI2C_MTDR_CMD_START | 1 | address; - 254fc: 431e orrs r6, r3 - 254fe: f8d8 9000 ldr.w r9, [r8] + 255e8: 431e orrs r6, r3 + 255ea: f8d8 9000 ldr.w r9, [r8] rxBufferIndex = 0; - 25502: f8aa 10a2 strh.w r1, [sl, #162] ; 0xa2 + 255ee: f8aa 10a2 strh.w r1, [sl, #162] ; 0xa2 elapsedMillis(unsigned long val) { ms = millis() - val; } - 25506: e01e b.n 25546 + 255f2: e01e b.n 25632 if (rxBufferLength < sizeof(rxBuffer)) { - 25508: f89a 30a3 ldrb.w r3, [sl, #163] ; 0xa3 - 2550c: 2b87 cmp r3, #135 ; 0x87 - 2550e: d93d bls.n 2558c + 255f4: f89a 30a3 ldrb.w r3, [sl, #163] ; 0xa3 + 255f8: 2b87 cmp r3, #135 ; 0x87 + 255fa: d93d bls.n 25678 uint32_t status = port->MSR; // pg 2884 & 2891 - 25510: 6951 ldr r1, [r2, #20] + 255fc: 6951 ldr r1, [r2, #20] if (status & LPI2C_MSR_ALF) { - 25512: 050b lsls r3, r1, #20 - 25514: d457 bmi.n 255c6 + 255fe: 050b lsls r3, r1, #20 + 25600: d457 bmi.n 256b2 if ((status & LPI2C_MSR_NDF) || (status & LPI2C_MSR_PLTF) || timeout > 50) { - 25516: f411 5f10 tst.w r1, #9216 ; 0x2400 - 2551a: d167 bne.n 255ec - 2551c: f8d8 3000 ldr.w r3, [r8] + 25602: f411 5f10 tst.w r1, #9216 ; 0x2400 + 25606: d167 bne.n 256d8 + 25608: f8d8 3000 ldr.w r3, [r8] operator unsigned long () const { return millis() - ms; } - 25520: eba3 0309 sub.w r3, r3, r9 - 25524: 2b32 cmp r3, #50 ; 0x32 - 25526: d861 bhi.n 255ec + 2560c: eba3 0309 sub.w r3, r3, r9 + 25610: 2b32 cmp r3, #50 ; 0x32 + 25612: d861 bhi.n 256d8 if (rxBufferLength >= length && tx_state >= 3) { - 25528: f89a 30a3 ldrb.w r3, [sl, #163] ; 0xa3 - 2552c: 42ab cmp r3, r5 - 2552e: d308 bcc.n 25542 - 25530: 2c02 cmp r4, #2 - 25532: d906 bls.n 25542 + 25614: f89a 30a3 ldrb.w r3, [sl, #163] ; 0xa3 + 25618: 42ab cmp r3, r5 + 2561a: d308 bcc.n 2562e + 2561c: 2c02 cmp r4, #2 + 2561e: d906 bls.n 2562e uint32_t tx_fifo = port->MFSR & 0x07; - 25534: 6dd3 ldr r3, [r2, #92] ; 0x5c + 25620: 6dd3 ldr r3, [r2, #92] ; 0x5c if (tx_fifo == 0 && ((status & LPI2C_MSR_SDF) || !sendStop)) { - 25536: 0758 lsls r0, r3, #29 - 25538: d103 bne.n 25542 - 2553a: 058b lsls r3, r1, #22 - 2553c: d447 bmi.n 255ce - 2553e: 2f00 cmp r7, #0 - 25540: d045 beq.n 255ce + 25622: 0758 lsls r0, r3, #29 + 25624: d103 bne.n 2562e + 25626: 058b lsls r3, r1, #22 + 25628: d447 bmi.n 256ba + 2562a: 2f00 cmp r7, #0 + 2562c: d045 beq.n 256ba yield(); - 25542: f007 f83b bl 2c5bc + 2562e: f007 f839 bl 2c6a4 if (tx_state < 3) { - 25546: 2c02 cmp r4, #2 + 25632: 2c02 cmp r4, #2 uint32_t tx_fifo = port->MFSR & 0x07; // pg 2914 - 25548: f8da 2010 ldr.w r2, [sl, #16] + 25634: f8da 2010 ldr.w r2, [sl, #16] if (tx_state < 3) { - 2554c: d8dc bhi.n 25508 + 25638: d8dc bhi.n 255f4 uint32_t tx_fifo = port->MFSR & 0x07; // pg 2914 - 2554e: 6dd3 ldr r3, [r2, #92] ; 0x5c + 2563a: 6dd3 ldr r3, [r2, #92] ; 0x5c while (tx_fifo < 4 && tx_state < 3) { - 25550: 0759 lsls r1, r3, #29 + 2563c: 0759 lsls r1, r3, #29 uint32_t tx_fifo = port->MFSR & 0x07; // pg 2914 - 25552: f003 0007 and.w r0, r3, #7 + 2563e: f003 0007 and.w r0, r3, #7 while (tx_fifo < 4 && tx_state < 3) { - 25556: d4d7 bmi.n 25508 - 25558: 4621 mov r1, r4 + 25642: d4d7 bmi.n 255f4 + 25644: 4621 mov r1, r4 port->MTDR = LPI2C_MTDR_CMD_RECEIVE | (length - 1); - 2555a: 1e6c subs r4, r5, #1 - 2555c: 4408 add r0, r1 - 2555e: f444 7480 orr.w r4, r4, #256 ; 0x100 + 25646: 1e6c subs r4, r5, #1 + 25648: 4408 add r0, r1 + 2564a: f444 7480 orr.w r4, r4, #256 ; 0x100 if (tx_state == 0) { - 25562: b941 cbnz r1, 25576 + 2564e: b941 cbnz r1, 25662 port->MTDR = LPI2C_MTDR_CMD_START | 1 | address; - 25564: 6616 str r6, [r2, #96] ; 0x60 + 25650: 6616 str r6, [r2, #96] ; 0x60 tx_state++; - 25566: 3101 adds r1, #1 + 25652: 3101 adds r1, #1 while (tx_fifo < 4 && tx_state < 3) { - 25568: 1a43 subs r3, r0, r1 - 2556a: 2b03 cmp r3, #3 - 2556c: d801 bhi.n 25572 - 2556e: 2902 cmp r1, #2 - 25570: d9f7 bls.n 25562 + 25654: 1a43 subs r3, r0, r1 + 25656: 2b03 cmp r3, #3 + 25658: d801 bhi.n 2565e + 2565a: 2902 cmp r1, #2 + 2565c: d9f7 bls.n 2564e tx_state++; - 25572: 460c mov r4, r1 - 25574: e7c8 b.n 25508 + 2565e: 460c mov r4, r1 + 25660: e7c8 b.n 255f4 } else if (tx_state == 1) { - 25576: 2901 cmp r1, #1 - 25578: d031 beq.n 255de + 25662: 2901 cmp r1, #1 + 25664: d031 beq.n 256ca if (sendStop) port->MTDR = LPI2C_MTDR_CMD_STOP; - 2557a: b117 cbz r7, 25582 - 2557c: f44f 7300 mov.w r3, #512 ; 0x200 - 25580: 6613 str r3, [r2, #96] ; 0x60 + 25666: b117 cbz r7, 2566e + 25668: f44f 7300 mov.w r3, #512 ; 0x200 + 2566c: 6613 str r3, [r2, #96] ; 0x60 if (rxBufferLength < sizeof(rxBuffer)) { - 25582: f89a 30a3 ldrb.w r3, [sl, #163] ; 0xa3 + 2566e: f89a 30a3 ldrb.w r3, [sl, #163] ; 0xa3 tx_state++; - 25586: 2403 movs r4, #3 + 25672: 2403 movs r4, #3 if (rxBufferLength < sizeof(rxBuffer)) { - 25588: 2b87 cmp r3, #135 ; 0x87 - 2558a: d8c1 bhi.n 25510 + 25674: 2b87 cmp r3, #135 ; 0x87 + 25676: d8c1 bhi.n 255fc uint32_t rx_fifo = (port->MFSR >> 16) & 0x07; - 2558c: 6dd1 ldr r1, [r2, #92] ; 0x5c + 25678: 6dd1 ldr r1, [r2, #92] ; 0x5c while (rx_fifo > 0 && rxBufferLength < sizeof(rxBuffer)) { - 2558e: f411 2fe0 tst.w r1, #458752 ; 0x70000 + 2567a: f411 2fe0 tst.w r1, #458752 ; 0x70000 uint32_t rx_fifo = (port->MFSR >> 16) & 0x07; - 25592: f3c1 4e02 ubfx lr, r1, #16, #3 + 2567e: f3c1 4e02 ubfx lr, r1, #16, #3 while (rx_fifo > 0 && rxBufferLength < sizeof(rxBuffer)) { - 25596: d0bb beq.n 25510 - 25598: 1c59 adds r1, r3, #1 - 2559a: 449e add lr, r3 - 2559c: 3319 adds r3, #25 - 2559e: b2c9 uxtb r1, r1 - 255a0: fa5f fe8e uxtb.w lr, lr - 255a4: fa5a f383 uxtab r3, sl, r3 + 25682: d0bb beq.n 255fc + 25684: 1c59 adds r1, r3, #1 + 25686: 449e add lr, r3 + 25688: 3319 adds r3, #25 + 2568a: b2c9 uxtb r1, r1 + 2568c: fa5f fe8e uxtb.w lr, lr + 25690: fa5a f383 uxtab r3, sl, r3 rxBuffer[rxBufferLength++] = port->MRDR; - 255a8: f8d2 c070 ldr.w ip, [r2, #112] ; 0x70 + 25694: f8d2 c070 ldr.w ip, [r2, #112] ; 0x70 while (rx_fifo > 0 && rxBufferLength < sizeof(rxBuffer)) { - 255ac: 1c48 adds r0, r1, #1 - 255ae: 4571 cmp r1, lr + 25698: 1c48 adds r0, r1, #1 + 2569a: 4571 cmp r1, lr rxBuffer[rxBufferLength++] = port->MRDR; - 255b0: f88a 10a3 strb.w r1, [sl, #163] ; 0xa3 + 2569c: f88a 10a3 strb.w r1, [sl, #163] ; 0xa3 while (rx_fifo > 0 && rxBufferLength < sizeof(rxBuffer)) { - 255b4: b2c1 uxtb r1, r0 + 256a0: b2c1 uxtb r1, r0 rxBuffer[rxBufferLength++] = port->MRDR; - 255b6: f803 cf01 strb.w ip, [r3, #1]! + 256a2: f803 cf01 strb.w ip, [r3, #1]! while (rx_fifo > 0 && rxBufferLength < sizeof(rxBuffer)) { - 255ba: d0a9 beq.n 25510 - 255bc: 2989 cmp r1, #137 ; 0x89 - 255be: d1f3 bne.n 255a8 + 256a6: d0a9 beq.n 255fc + 256a8: 2989 cmp r1, #137 ; 0x89 + 256aa: d1f3 bne.n 25694 uint32_t status = port->MSR; // pg 2884 & 2891 - 255c0: 6951 ldr r1, [r2, #20] + 256ac: 6951 ldr r1, [r2, #20] if (status & LPI2C_MSR_ALF) { - 255c2: 050b lsls r3, r1, #20 - 255c4: d5a7 bpl.n 25516 + 256ae: 050b lsls r3, r1, #20 + 256b0: d5a7 bpl.n 25602 port->MCR |= LPI2C_MCR_RTF | LPI2C_MCR_RRF; // clear FIFOs - 255c6: 6913 ldr r3, [r2, #16] - 255c8: f443 7340 orr.w r3, r3, #768 ; 0x300 - 255cc: 6113 str r3, [r2, #16] + 256b2: 6913 ldr r3, [r2, #16] + 256b4: f443 7340 orr.w r3, r3, #768 ; 0x300 + 256b8: 6113 str r3, [r2, #16] uint32_t rx_fifo = (port->MFSR >> 16) & 0x07; - 255ce: 6dd3 ldr r3, [r2, #92] ; 0x5c + 256ba: 6dd3 ldr r3, [r2, #92] ; 0x5c if (rx_fifo > 0) port->MCR |= LPI2C_MCR_RRF; - 255d0: f413 2fe0 tst.w r3, #458752 ; 0x70000 - 255d4: d105 bne.n 255e2 + 256bc: f413 2fe0 tst.w r3, #458752 ; 0x70000 + 256c0: d105 bne.n 256ce return rxBufferLength; - 255d6: f89a 00a3 ldrb.w r0, [sl, #163] ; 0xa3 + 256c2: f89a 00a3 ldrb.w r0, [sl, #163] ; 0xa3 } - 255da: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 256c6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} port->MTDR = LPI2C_MTDR_CMD_RECEIVE | (length - 1); - 255de: 6614 str r4, [r2, #96] ; 0x60 - 255e0: e7c1 b.n 25566 + 256ca: 6614 str r4, [r2, #96] ; 0x60 + 256cc: e7c1 b.n 25652 if (rx_fifo > 0) port->MCR |= LPI2C_MCR_RRF; - 255e2: 6913 ldr r3, [r2, #16] - 255e4: f443 7300 orr.w r3, r3, #512 ; 0x200 - 255e8: 6113 str r3, [r2, #16] - 255ea: e7f4 b.n 255d6 + 256ce: 6913 ldr r3, [r2, #16] + 256d0: f443 7300 orr.w r3, r3, #512 ; 0x200 + 256d4: 6113 str r3, [r2, #16] + 256d6: e7f4 b.n 256c2 port->MCR |= LPI2C_MCR_RTF | LPI2C_MCR_RRF; // clear FIFOs - 255ec: 6913 ldr r3, [r2, #16] + 256d8: 6913 ldr r3, [r2, #16] port->MTDR = LPI2C_MTDR_CMD_STOP; // try to send a stop - 255ee: f44f 7100 mov.w r1, #512 ; 0x200 + 256da: f44f 7100 mov.w r1, #512 ; 0x200 port->MCR |= LPI2C_MCR_RTF | LPI2C_MCR_RRF; // clear FIFOs - 255f2: f443 7340 orr.w r3, r3, #768 ; 0x300 - 255f6: 6113 str r3, [r2, #16] + 256de: f443 7340 orr.w r3, r3, #768 ; 0x300 + 256e2: 6113 str r3, [r2, #16] port->MTDR = LPI2C_MTDR_CMD_STOP; // try to send a stop - 255f8: 6611 str r1, [r2, #96] ; 0x60 + 256e4: 6611 str r1, [r2, #96] ; 0x60 uint32_t rx_fifo = (port->MFSR >> 16) & 0x07; - 255fa: 6dd3 ldr r3, [r2, #92] ; 0x5c + 256e6: 6dd3 ldr r3, [r2, #92] ; 0x5c if (rx_fifo > 0) port->MCR |= LPI2C_MCR_RRF; - 255fc: f413 2fe0 tst.w r3, #458752 ; 0x70000 - 25600: d0e9 beq.n 255d6 - 25602: e7ee b.n 255e2 + 256e8: f413 2fe0 tst.w r3, #458752 ; 0x70000 + 256ec: d0e9 beq.n 256c2 + 256ee: e7ee b.n 256ce if (!wait_idle()) return 4; - 25604: 2004 movs r0, #4 + 256f0: 2004 movs r0, #4 } - 25606: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 2560a: bf00 nop - 2560c: 2000bae8 .word 0x2000bae8 + 256f2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 256f6: bf00 nop + 256f8: 2000bb08 .word 0x2000bb08 -00025610 : +000256fc : uint32_t status = port->SSR; - 25610: 6903 ldr r3, [r0, #16] + 256fc: 6903 ldr r3, [r0, #16] { - 25612: b570 push {r4, r5, r6, lr} + 256fe: b570 push {r4, r5, r6, lr} uint32_t status = port->SSR; - 25614: f8d3 5114 ldr.w r5, [r3, #276] ; 0x114 + 25700: f8d3 5114 ldr.w r5, [r3, #276] ; 0x114 { - 25618: 4604 mov r4, r0 + 25704: 4604 mov r4, r0 if (w1c_bits) port->SSR = w1c_bits; - 2561a: f415 6270 ands.w r2, r5, #3840 ; 0xf00 - 2561e: d001 beq.n 25624 - 25620: f8c3 2114 str.w r2, [r3, #276] ; 0x114 + 25706: f415 6270 ands.w r2, r5, #3840 ; 0xf00 + 2570a: d001 beq.n 25710 + 2570c: f8c3 2114 str.w r2, [r3, #276] ; 0x114 if (status & LPI2C_SSR_RDF) { // Receive Data Flag - 25624: 07ae lsls r6, r5, #30 - 25626: d50b bpl.n 25640 + 25710: 07ae lsls r6, r5, #30 + 25712: d50b bpl.n 2572c int rx = port->SRDR; - 25628: f8d3 1170 ldr.w r1, [r3, #368] ; 0x170 + 25714: f8d3 1170 ldr.w r1, [r3, #368] ; 0x170 if (rx & 0x8000) { - 2562c: 0408 lsls r0, r1, #16 - 2562e: d53e bpl.n 256ae + 25718: 0408 lsls r0, r1, #16 + 2571a: d53e bpl.n 2579a rxBufferIndex = 0; - 25630: 2200 movs r2, #0 - 25632: 2001 movs r0, #1 - 25634: f884 20a2 strb.w r2, [r4, #162] ; 0xa2 + 2571c: 2200 movs r2, #0 + 2571e: 2001 movs r0, #1 + 25720: f884 20a2 strb.w r2, [r4, #162] ; 0xa2 rxBuffer[rxBufferLength++] = rx & 255; - 25638: 4422 add r2, r4 - 2563a: f884 00a3 strb.w r0, [r4, #163] ; 0xa3 - 2563e: 7691 strb r1, [r2, #26] + 25724: 4422 add r2, r4 + 25726: f884 00a3 strb.w r0, [r4, #163] ; 0xa3 + 2572a: 7691 strb r1, [r2, #26] if (status & LPI2C_SSR_TDF) { // Transmit Data Flag - 25640: 07ea lsls r2, r5, #31 - 25642: d510 bpl.n 25666 + 2572c: 07ea lsls r2, r5, #31 + 2572e: d510 bpl.n 25752 if (!transmitting) { - 25644: f894 6130 ldrb.w r6, [r4, #304] ; 0x130 - 25648: b1f6 cbz r6, 25688 + 25730: f894 6130 ldrb.w r6, [r4, #304] ; 0x130 + 25734: b1f6 cbz r6, 25774 if (txBufferIndex < txBufferLength) { - 2564a: f894 612e ldrb.w r6, [r4, #302] ; 0x12e - 2564e: f894 212f ldrb.w r2, [r4, #303] ; 0x12f - 25652: 42b2 cmp r2, r6 - 25654: d927 bls.n 256a6 + 25736: f894 612e ldrb.w r6, [r4, #302] ; 0x12e + 2573a: f894 212f ldrb.w r2, [r4, #303] ; 0x12f + 2573e: 42b2 cmp r2, r6 + 25740: d927 bls.n 25792 port->STDR = txBuffer[txBufferIndex++]; - 25656: 1c72 adds r2, r6, #1 - 25658: 4426 add r6, r4 - 2565a: f884 212e strb.w r2, [r4, #302] ; 0x12e - 2565e: f896 20a5 ldrb.w r2, [r6, #165] ; 0xa5 - 25662: f8c3 2160 str.w r2, [r3, #352] ; 0x160 + 25742: 1c72 adds r2, r6, #1 + 25744: 4426 add r6, r4 + 25746: f884 212e strb.w r2, [r4, #302] ; 0x12e + 2574a: f896 20a5 ldrb.w r2, [r6, #165] ; 0xa5 + 2574e: f8c3 2160 str.w r2, [r3, #352] ; 0x160 if (status & LPI2C_SSR_SDF) { // Stop - 25666: 05ab lsls r3, r5, #22 - 25668: d50d bpl.n 25686 + 25752: 05ab lsls r3, r5, #22 + 25754: d50d bpl.n 25772 if (rxBufferLength > 0 && user_onReceive != nullptr) { - 2566a: f894 00a3 ldrb.w r0, [r4, #163] ; 0xa3 - 2566e: b118 cbz r0, 25678 - 25670: f8d4 313c ldr.w r3, [r4, #316] ; 0x13c - 25674: b103 cbz r3, 25678 + 25756: f894 00a3 ldrb.w r0, [r4, #163] ; 0xa3 + 2575a: b118 cbz r0, 25764 + 2575c: f8d4 313c ldr.w r3, [r4, #316] ; 0x13c + 25760: b103 cbz r3, 25764 (*user_onReceive)(rxBufferLength); - 25676: 4798 blx r3 + 25762: 4798 blx r3 rxBufferIndex = 0; - 25678: 2300 movs r3, #0 - 2567a: f8a4 30a2 strh.w r3, [r4, #162] ; 0xa2 + 25764: 2300 movs r3, #0 + 25766: f8a4 30a2 strh.w r3, [r4, #162] ; 0xa2 txBufferIndex = 0; - 2567e: f8a4 312e strh.w r3, [r4, #302] ; 0x12e + 2576a: f8a4 312e strh.w r3, [r4, #302] ; 0x12e transmitting = 0; - 25682: f884 3130 strb.w r3, [r4, #304] ; 0x130 + 2576e: f884 3130 strb.w r3, [r4, #304] ; 0x130 } - 25686: bd70 pop {r4, r5, r6, pc} + 25772: bd70 pop {r4, r5, r6, pc} if (user_onRequest != nullptr) { - 25688: f8d4 2138 ldr.w r2, [r4, #312] ; 0x138 - 2568c: b10a cbz r2, 25692 + 25774: f8d4 2138 ldr.w r2, [r4, #312] ; 0x138 + 25778: b10a cbz r2, 2577e (*user_onRequest)(); - 2568e: 4790 blx r2 + 2577a: 4790 blx r2 port->STDR = txBuffer[txBufferIndex++]; - 25690: 6923 ldr r3, [r4, #16] + 2577c: 6923 ldr r3, [r4, #16] txBufferIndex = 0; - 25692: 2200 movs r2, #0 - 25694: f884 212e strb.w r2, [r4, #302] ; 0x12e + 2577e: 2200 movs r2, #0 + 25780: f884 212e strb.w r2, [r4, #302] ; 0x12e transmitting = 1; - 25698: 2201 movs r2, #1 - 2569a: f884 2130 strb.w r2, [r4, #304] ; 0x130 + 25784: 2201 movs r2, #1 + 25786: f884 2130 strb.w r2, [r4, #304] ; 0x130 if (txBufferIndex < txBufferLength) { - 2569e: f894 212f ldrb.w r2, [r4, #303] ; 0x12f - 256a2: 42b2 cmp r2, r6 - 256a4: d8d7 bhi.n 25656 + 2578a: f894 212f ldrb.w r2, [r4, #303] ; 0x12f + 2578e: 42b2 cmp r2, r6 + 25790: d8d7 bhi.n 25742 port->STDR = 0; - 256a6: 2200 movs r2, #0 - 256a8: f8c3 2160 str.w r2, [r3, #352] ; 0x160 - 256ac: e7db b.n 25666 + 25792: 2200 movs r2, #0 + 25794: f8c3 2160 str.w r2, [r3, #352] ; 0x160 + 25798: e7db b.n 25752 if (rxBufferLength < BUFFER_LENGTH) { - 256ae: f894 20a3 ldrb.w r2, [r4, #163] ; 0xa3 - 256b2: 2a87 cmp r2, #135 ; 0x87 - 256b4: d8c4 bhi.n 25640 + 2579a: f894 20a3 ldrb.w r2, [r4, #163] ; 0xa3 + 2579e: 2a87 cmp r2, #135 ; 0x87 + 257a0: d8c4 bhi.n 2572c rxBuffer[rxBufferLength++] = rx & 255; - 256b6: 1c50 adds r0, r2, #1 - 256b8: b2c0 uxtb r0, r0 - 256ba: e7bd b.n 25638 + 257a2: 1c50 adds r0, r2, #1 + 257a4: b2c0 uxtb r0, r0 + 257a6: e7bd b.n 25724 -000256bc : +000257a8 : void lpi2c1_isr(void) { Wire.isr(); } - 256bc: 4801 ldr r0, [pc, #4] ; (256c4 ) - 256be: f7ff bfa7 b.w 25610 - 256c2: bf00 nop - 256c4: 2000b0f8 .word 0x2000b0f8 + 257a8: 4801 ldr r0, [pc, #4] ; (257b0 ) + 257aa: f7ff bfa7 b.w 256fc + 257ae: bf00 nop + 257b0: 2000b118 .word 0x2000b118 -000256c8 : +000257b4 : void lpi2c3_isr(void) { Wire1.isr(); } - 256c8: 4801 ldr r0, [pc, #4] ; (256d0 ) - 256ca: f7ff bfa1 b.w 25610 - 256ce: bf00 nop - 256d0: 2000b238 .word 0x2000b238 + 257b4: 4801 ldr r0, [pc, #4] ; (257bc ) + 257b6: f7ff bfa1 b.w 256fc + 257ba: bf00 nop + 257bc: 2000b258 .word 0x2000b258 -000256d4 : +000257c0 : void lpi2c4_isr(void) { Wire2.isr(); } - 256d4: 4801 ldr r0, [pc, #4] ; (256dc ) - 256d6: f7ff bf9b b.w 25610 - 256da: bf00 nop - 256dc: 2000b378 .word 0x2000b378 + 257c0: 4801 ldr r0, [pc, #4] ; (257c8 ) + 257c2: f7ff bf9b b.w 256fc + 257c6: bf00 nop + 257c8: 2000b398 .word 0x2000b398 -000256e0 : +000257cc : { - 256e0: b410 push {r4} + 257cc: b410 push {r4} if (frequency < 400000) { - 256e2: 4c14 ldr r4, [pc, #80] ; (25734 ) + 257ce: 4c14 ldr r4, [pc, #80] ; (25820 ) port->MCR = 0; - 256e4: 2200 movs r2, #0 - 256e6: 6903 ldr r3, [r0, #16] + 257d0: 2200 movs r2, #0 + 257d2: 6903 ldr r3, [r0, #16] if (frequency < 400000) { - 256e8: 42a1 cmp r1, r4 + 257d4: 42a1 cmp r1, r4 port->MCR = 0; - 256ea: 611a str r2, [r3, #16] + 257d6: 611a str r2, [r3, #16] if (frequency < 400000) { - 256ec: d814 bhi.n 25718 + 257d8: d814 bhi.n 25804 port->MCCR0 = LPI2C_MCCR0_CLKHI(55) | LPI2C_MCCR0_CLKLO(59) | - 256ee: 4c12 ldr r4, [pc, #72] ; (25738 ) + 257da: 4c12 ldr r4, [pc, #72] ; (25824 ) port->MCFGR1 = LPI2C_MCFGR1_PRESCALE(1); - 256f0: 2001 movs r0, #1 + 257dc: 2001 movs r0, #1 port->MCFGR2 = LPI2C_MCFGR2_FILTSDA(5) | LPI2C_MCFGR2_FILTSCL(5) | - 256f2: 4912 ldr r1, [pc, #72] ; (2573c ) + 257de: 4912 ldr r1, [pc, #72] ; (25828 ) port->MCFGR3 = LPI2C_MCFGR3_PINLOW(CLOCK_STRETCH_TIMEOUT * 12 / 256 + 1); - 256f4: f44f 3230 mov.w r2, #180224 ; 0x2c000 + 257e0: f44f 3230 mov.w r2, #180224 ; 0x2c000 port->MCCR0 = LPI2C_MCCR0_CLKHI(55) | LPI2C_MCCR0_CLKLO(59) | - 256f8: 649c str r4, [r3, #72] ; 0x48 + 257e4: 649c str r4, [r3, #72] ; 0x48 port->MCFGR1 = LPI2C_MCFGR1_PRESCALE(1); - 256fa: 6258 str r0, [r3, #36] ; 0x24 + 257e6: 6258 str r0, [r3, #36] ; 0x24 port->MCFGR2 = LPI2C_MCFGR2_FILTSDA(5) | LPI2C_MCFGR2_FILTSCL(5) | - 256fc: 6299 str r1, [r3, #40] ; 0x28 + 257e8: 6299 str r1, [r3, #40] ; 0x28 port->MCFGR3 = LPI2C_MCFGR3_PINLOW(CLOCK_STRETCH_TIMEOUT * 12 / 256 + 1); - 256fe: 62da str r2, [r3, #44] ; 0x2c + 257ea: 62da str r2, [r3, #44] ; 0x2c port->MCCR1 = port->MCCR0; - 25700: 6c9c ldr r4, [r3, #72] ; 0x48 + 257ec: 6c9c ldr r4, [r3, #72] ; 0x48 port->MCFGR0 = 0; - 25702: 2000 movs r0, #0 + 257ee: 2000 movs r0, #0 port->MFCR = LPI2C_MFCR_RXWATER(1) | LPI2C_MFCR_TXWATER(1); - 25704: f04f 1101 mov.w r1, #65537 ; 0x10001 + 257f0: f04f 1101 mov.w r1, #65537 ; 0x10001 port->MCR = LPI2C_MCR_MEN; - 25708: 2201 movs r2, #1 + 257f4: 2201 movs r2, #1 port->MCCR1 = port->MCCR0; - 2570a: 651c str r4, [r3, #80] ; 0x50 + 257f6: 651c str r4, [r3, #80] ; 0x50 port->MCFGR0 = 0; - 2570c: 6218 str r0, [r3, #32] + 257f8: 6218 str r0, [r3, #32] } - 2570e: f85d 4b04 ldr.w r4, [sp], #4 + 257fa: f85d 4b04 ldr.w r4, [sp], #4 port->MFCR = LPI2C_MFCR_RXWATER(1) | LPI2C_MFCR_TXWATER(1); - 25712: 6599 str r1, [r3, #88] ; 0x58 + 257fe: 6599 str r1, [r3, #88] ; 0x58 port->MCR = LPI2C_MCR_MEN; - 25714: 611a str r2, [r3, #16] + 25800: 611a str r2, [r3, #16] } - 25716: 4770 bx lr + 25802: 4770 bx lr } else if (frequency < 1000000) { - 25718: 4809 ldr r0, [pc, #36] ; (25740 ) - 2571a: 4281 cmp r1, r0 - 2571c: d907 bls.n 2572e + 25804: 4809 ldr r0, [pc, #36] ; (2582c ) + 25806: 4281 cmp r1, r0 + 25808: d907 bls.n 2581a port->MCCR0 = LPI2C_MCCR0_CLKHI(9) | LPI2C_MCCR0_CLKLO(10) | - 2571e: 4c09 ldr r4, [pc, #36] ; (25744 ) + 2580a: 4c09 ldr r4, [pc, #36] ; (25830 ) port->MCFGR2 = LPI2C_MCFGR2_FILTSDA(1) | LPI2C_MCFGR2_FILTSCL(1) | - 25720: 4809 ldr r0, [pc, #36] ; (25748 ) + 2580c: 4809 ldr r0, [pc, #36] ; (25834 ) port->MCFGR3 = LPI2C_MCFGR3_PINLOW(CLOCK_STRETCH_TIMEOUT * 24 / 256 + 1); - 25722: 490a ldr r1, [pc, #40] ; (2574c ) + 2580e: 490a ldr r1, [pc, #40] ; (25838 ) port->MCCR0 = LPI2C_MCCR0_CLKHI(9) | LPI2C_MCCR0_CLKLO(10) | - 25724: 649c str r4, [r3, #72] ; 0x48 + 25810: 649c str r4, [r3, #72] ; 0x48 port->MCFGR1 = LPI2C_MCFGR1_PRESCALE(0); - 25726: 625a str r2, [r3, #36] ; 0x24 + 25812: 625a str r2, [r3, #36] ; 0x24 port->MCFGR2 = LPI2C_MCFGR2_FILTSDA(1) | LPI2C_MCFGR2_FILTSCL(1) | - 25728: 6298 str r0, [r3, #40] ; 0x28 + 25814: 6298 str r0, [r3, #40] ; 0x28 port->MCFGR3 = LPI2C_MCFGR3_PINLOW(CLOCK_STRETCH_TIMEOUT * 24 / 256 + 1); - 2572a: 62d9 str r1, [r3, #44] ; 0x2c - 2572c: e7e8 b.n 25700 + 25816: 62d9 str r1, [r3, #44] ; 0x2c + 25818: e7e8 b.n 257ec port->MCCR0 = LPI2C_MCCR0_CLKHI(26) | LPI2C_MCCR0_CLKLO(28) | - 2572e: 4c08 ldr r4, [pc, #32] ; (25750 ) + 2581a: 4c08 ldr r4, [pc, #32] ; (2583c ) port->MCFGR2 = LPI2C_MCFGR2_FILTSDA(2) | LPI2C_MCFGR2_FILTSCL(2) | - 25730: 4808 ldr r0, [pc, #32] ; (25754 ) - 25732: e7f6 b.n 25722 - 25734: 00061a7f .word 0x00061a7f - 25738: 1928373b .word 0x1928373b - 2573c: 05050bb8 .word 0x05050bb8 - 25740: 000f423f .word 0x000f423f - 25744: 0407090a .word 0x0407090a - 25748: 01010960 .word 0x01010960 - 2574c: 00057f00 .word 0x00057f00 - 25750: 0c121a1c .word 0x0c121a1c - 25754: 02020e10 .word 0x02020e10 - -00025758 <_GLOBAL__sub_I__ZN7TwoWire5beginEv>: -} - 25758: b510 push {r4, lr} + 2581c: 4808 ldr r0, [pc, #32] ; (25840 ) + 2581e: e7f6 b.n 2580e + 25820: 00061a7f .word 0x00061a7f + 25824: 1928373b .word 0x1928373b + 25828: 05050bb8 .word 0x05050bb8 + 2582c: 000f423f .word 0x000f423f + 25830: 0407090a .word 0x0407090a + 25834: 01010960 .word 0x01010960 + 25838: 00057f00 .word 0x00057f00 + 2583c: 0c121a1c .word 0x0c121a1c + 25840: 02020e10 .word 0x02020e10 + +00025844 <_GLOBAL__sub_I__ZN7TwoWire5beginEv>: +} + 25844: b510 push {r4, lr} TwoWire Wire(&IMXRT_LPI2C1, TwoWire::i2c1_hardware); - 2575a: 4c09 ldr r4, [pc, #36] ; (25780 <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x28>) - 2575c: 4909 ldr r1, [pc, #36] ; (25784 <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x2c>) - 2575e: 4622 mov r2, r4 - 25760: 4809 ldr r0, [pc, #36] ; (25788 <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x30>) - 25762: f7ff fd5d bl 25220 + 25846: 4c09 ldr r4, [pc, #36] ; (2586c <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x28>) + 25848: 4909 ldr r1, [pc, #36] ; (25870 <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x2c>) + 2584a: 4622 mov r2, r4 + 2584c: 4809 ldr r0, [pc, #36] ; (25874 <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x30>) + 2584e: f7ff fd5d bl 2530c TwoWire Wire1(&IMXRT_LPI2C3, TwoWire::i2c3_hardware); - 25766: f104 0250 add.w r2, r4, #80 ; 0x50 - 2576a: 4908 ldr r1, [pc, #32] ; (2578c <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x34>) - 2576c: 4808 ldr r0, [pc, #32] ; (25790 <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x38>) - 2576e: f7ff fd57 bl 25220 + 25852: f104 0250 add.w r2, r4, #80 ; 0x50 + 25856: 4908 ldr r1, [pc, #32] ; (25878 <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x34>) + 25858: 4808 ldr r0, [pc, #32] ; (2587c <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x38>) + 2585a: f7ff fd57 bl 2530c TwoWire Wire2(&IMXRT_LPI2C4, TwoWire::i2c4_hardware); - 25772: f104 02a0 add.w r2, r4, #160 ; 0xa0 - 25776: 4907 ldr r1, [pc, #28] ; (25794 <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x3c>) - 25778: 4807 ldr r0, [pc, #28] ; (25798 <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x40>) - 2577a: f7ff fd51 bl 25220 -} - 2577e: bd10 pop {r4, pc} - 25780: 6001e16c .word 0x6001e16c - 25784: 403f0000 .word 0x403f0000 - 25788: 2000b0f8 .word 0x2000b0f8 - 2578c: 403f8000 .word 0x403f8000 - 25790: 2000b238 .word 0x2000b238 - 25794: 403fc000 .word 0x403fc000 - 25798: 2000b378 .word 0x2000b378 - -0002579c : + 2585e: f104 02a0 add.w r2, r4, #160 ; 0xa0 + 25862: 4907 ldr r1, [pc, #28] ; (25880 <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x3c>) + 25864: 4807 ldr r0, [pc, #28] ; (25884 <_GLOBAL__sub_I__ZN7TwoWire5beginEv+0x40>) + 25866: f7ff fd51 bl 2530c +} + 2586a: bd10 pop {r4, pc} + 2586c: 6001e16c .word 0x6001e16c + 25870: 403f0000 .word 0x403f0000 + 25874: 2000b118 .word 0x2000b118 + 25878: 403f8000 .word 0x403f8000 + 2587c: 2000b258 .word 0x2000b258 + 25880: 403fc000 .word 0x403fc000 + 25884: 2000b398 .word 0x2000b398 + +00025888 : /**************************************************************************/ /*! @brief Start a display-writing routine, overwrite in subclasses. */ /**************************************************************************/ void Adafruit_GFX::startWrite() {} - 2579c: 4770 bx lr - 2579e: bf00 nop + 25888: 4770 bx lr + 2588a: bf00 nop -000257a0 : +0002588c : @param x x coordinate @param y y coordinate @param color 16-bit 5-6-5 Color to fill with */ /**************************************************************************/ void Adafruit_GFX::writePixel(int16_t x, int16_t y, uint16_t color) { - 257a0: b410 push {r4} + 2588c: b410 push {r4} drawPixel(x, y, color); - 257a2: 6804 ldr r4, [r0, #0] - 257a4: 6924 ldr r4, [r4, #16] - 257a6: 46a4 mov ip, r4 + 2588e: 6804 ldr r4, [r0, #0] + 25890: 6924 ldr r4, [r4, #16] + 25892: 46a4 mov ip, r4 } - 257a8: f85d 4b04 ldr.w r4, [sp], #4 + 25894: f85d 4b04 ldr.w r4, [sp], #4 drawPixel(x, y, color); - 257ac: 4760 bx ip - 257ae: bf00 nop + 25898: 4760 bx ip + 2589a: bf00 nop -000257b0 : +0002589c : @param h Height in pixels @param color 16-bit 5-6-5 Color to fill with */ /**************************************************************************/ void Adafruit_GFX::writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color) { - 257b0: b430 push {r4, r5} + 2589c: b430 push {r4, r5} // Overwrite in subclasses if startWrite is defined! // Can be just writeLine(x, y, x, y+h-1, color); // or writeFillRect(x, y, 1, h, color); drawFastVLine(x, y, h, color); - 257b2: 6804 ldr r4, [r0, #0] + 2589e: 6804 ldr r4, [r0, #0] uint16_t color) { - 257b4: f8bd 5008 ldrh.w r5, [sp, #8] + 258a0: f8bd 5008 ldrh.w r5, [sp, #8] drawFastVLine(x, y, h, color); - 257b8: 9502 str r5, [sp, #8] - 257ba: 6ba4 ldr r4, [r4, #56] ; 0x38 - 257bc: 46a4 mov ip, r4 + 258a4: 9502 str r5, [sp, #8] + 258a6: 6ba4 ldr r4, [r4, #56] ; 0x38 + 258a8: 46a4 mov ip, r4 } - 257be: bc30 pop {r4, r5} + 258aa: bc30 pop {r4, r5} drawFastVLine(x, y, h, color); - 257c0: 4760 bx ip - 257c2: bf00 nop + 258ac: 4760 bx ip + 258ae: bf00 nop -000257c4 : +000258b0 : @param w Width in pixels @param color 16-bit 5-6-5 Color to fill with */ /**************************************************************************/ void Adafruit_GFX::writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) { - 257c4: b430 push {r4, r5} + 258b0: b430 push {r4, r5} // Overwrite in subclasses if startWrite is defined! // Example: writeLine(x, y, x+w-1, y, color); // or writeFillRect(x, y, w, 1, color); drawFastHLine(x, y, w, color); - 257c6: 6804 ldr r4, [r0, #0] + 258b2: 6804 ldr r4, [r0, #0] uint16_t color) { - 257c8: f8bd 5008 ldrh.w r5, [sp, #8] + 258b4: f8bd 5008 ldrh.w r5, [sp, #8] drawFastHLine(x, y, w, color); - 257cc: 9502 str r5, [sp, #8] - 257ce: 6be4 ldr r4, [r4, #60] ; 0x3c - 257d0: 46a4 mov ip, r4 + 258b8: 9502 str r5, [sp, #8] + 258ba: 6be4 ldr r4, [r4, #60] ; 0x3c + 258bc: 46a4 mov ip, r4 } - 257d2: bc30 pop {r4, r5} + 258be: bc30 pop {r4, r5} drawFastHLine(x, y, w, color); - 257d4: 4760 bx ip - 257d6: bf00 nop + 258c0: 4760 bx ip + 258c2: bf00 nop -000257d8 : +000258c4 : @param h Height in pixels @param color 16-bit 5-6-5 Color to fill with */ /**************************************************************************/ void Adafruit_GFX::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) { - 257d8: b430 push {r4, r5} - 257da: f9bd 5008 ldrsh.w r5, [sp, #8] + 258c4: b430 push {r4, r5} + 258c6: f9bd 5008 ldrsh.w r5, [sp, #8] // Overwrite in subclasses if desired! fillRect(x, y, w, h, color); - 257de: 6804 ldr r4, [r0, #0] - 257e0: 9502 str r5, [sp, #8] + 258ca: 6804 ldr r4, [r0, #0] + 258cc: 9502 str r5, [sp, #8] uint16_t color) { - 257e2: f8bd 500c ldrh.w r5, [sp, #12] + 258ce: f8bd 500c ldrh.w r5, [sp, #12] fillRect(x, y, w, h, color); - 257e6: 9503 str r5, [sp, #12] - 257e8: 6c24 ldr r4, [r4, #64] ; 0x40 - 257ea: 46a4 mov ip, r4 + 258d2: 9503 str r5, [sp, #12] + 258d4: 6c24 ldr r4, [r4, #64] ; 0x40 + 258d6: 46a4 mov ip, r4 } - 257ec: bc30 pop {r4, r5} + 258d8: bc30 pop {r4, r5} fillRect(x, y, w, h, color); - 257ee: 4760 bx ip + 258da: 4760 bx ip -000257f0 : +000258dc : @brief Fill the screen completely with one color. Update in subclasses if desired! @param color 16-bit 5-6-5 Color to fill with */ /**************************************************************************/ void Adafruit_GFX::fillScreen(uint16_t color) { - 257f0: b530 push {r4, r5, lr} + 258dc: b530 push {r4, r5, lr} fillRect(0, 0, _width, _height, color); - 257f2: 2200 movs r2, #0 + 258de: 2200 movs r2, #0 void Adafruit_GFX::fillScreen(uint16_t color) { - 257f4: b083 sub sp, #12 + 258e0: b083 sub sp, #12 fillRect(0, 0, _width, _height, color); - 257f6: 6804 ldr r4, [r0, #0] - 257f8: f9b0 500e ldrsh.w r5, [r0, #14] - 257fc: 9101 str r1, [sp, #4] - 257fe: 4611 mov r1, r2 - 25800: 9500 str r5, [sp, #0] - 25802: f9b0 300c ldrsh.w r3, [r0, #12] - 25806: 6c24 ldr r4, [r4, #64] ; 0x40 - 25808: 47a0 blx r4 -} - 2580a: b003 add sp, #12 - 2580c: bd30 pop {r4, r5, pc} - 2580e: bf00 nop - -00025810 : + 258e2: 6804 ldr r4, [r0, #0] + 258e4: f9b0 500e ldrsh.w r5, [r0, #14] + 258e8: 9101 str r1, [sp, #4] + 258ea: 4611 mov r1, r2 + 258ec: 9500 str r5, [sp, #0] + 258ee: f9b0 300c ldrsh.w r3, [r0, #12] + 258f2: 6c24 ldr r4, [r4, #64] ; 0x40 + 258f4: 47a0 blx r4 +} + 258f6: b003 add sp, #12 + 258f8: bd30 pop {r4, r5, pc} + 258fa: bf00 nop + +000258fc : */ /**************************************************************************/ void Adafruit_GFX::invertDisplay(bool i) { // Do nothing, must be subclassed if supported by hardware (void)i; // disable -Wunused-parameter warning } - 25810: 4770 bx lr - 25812: bf00 nop + 258fc: 4770 bx lr + 258fe: bf00 nop -00025814 : +00025900 : rotation = (x & 3); - 25814: f001 0303 and.w r3, r1, #3 - 25818: 7683 strb r3, [r0, #26] + 25900: f001 0303 and.w r3, r1, #3 + 25904: 7683 strb r3, [r0, #26] switch (rotation) { - 2581a: 07cb lsls r3, r1, #31 - 2581c: d405 bmi.n 2582a + 25906: 07cb lsls r3, r1, #31 + 25908: d405 bmi.n 25916 _width = WIDTH; - 2581e: 8902 ldrh r2, [r0, #8] + 2590a: 8902 ldrh r2, [r0, #8] _height = HEIGHT; - 25820: f9b0 300a ldrsh.w r3, [r0, #10] + 2590c: f9b0 300a ldrsh.w r3, [r0, #10] _width = WIDTH; - 25824: 8182 strh r2, [r0, #12] + 25910: 8182 strh r2, [r0, #12] _height = WIDTH; - 25826: 81c3 strh r3, [r0, #14] + 25912: 81c3 strh r3, [r0, #14] } - 25828: 4770 bx lr + 25914: 4770 bx lr _width = HEIGHT; - 2582a: 8942 ldrh r2, [r0, #10] + 25916: 8942 ldrh r2, [r0, #10] _height = WIDTH; - 2582c: f9b0 3008 ldrsh.w r3, [r0, #8] + 25918: f9b0 3008 ldrsh.w r3, [r0, #8] _width = HEIGHT; - 25830: 8182 strh r2, [r0, #12] + 2591c: 8182 strh r2, [r0, #12] _height = WIDTH; - 25832: 81c3 strh r3, [r0, #14] + 2591e: 81c3 strh r3, [r0, #14] } - 25834: 4770 bx lr - 25836: bf00 nop + 25920: 4770 bx lr + 25922: bf00 nop -00025838 : +00025924 : uint16_t color) { - 25838: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 2583c: 461c mov r4, r3 - 2583e: 460b mov r3, r1 + 25924: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 25928: 461c mov r4, r3 + 2592a: 460b mov r3, r1 startWrite(); - 25840: 6801 ldr r1, [r0, #0] + 2592c: 6801 ldr r1, [r0, #0] uint16_t color) { - 25842: b084 sub sp, #16 - 25844: 4e11 ldr r6, [pc, #68] ; (2588c ) - 25846: 4605 mov r5, r0 + 2592e: b084 sub sp, #16 + 25930: 4e11 ldr r6, [pc, #68] ; (25978 ) + 25932: 4605 mov r5, r0 startWrite(); - 25848: 694f ldr r7, [r1, #20] + 25934: 694f ldr r7, [r1, #20] uint16_t color) { - 2584a: f8bd 8028 ldrh.w r8, [sp, #40] ; 0x28 - 2584e: 42b7 cmp r7, r6 - 25850: d110 bne.n 25874 + 25936: f8bd 8028 ldrh.w r8, [sp, #40] ; 0x28 + 2593a: 42b7 cmp r7, r6 + 2593c: d110 bne.n 25960 writeLine(x, y, x, y + h - 1, color); - 25852: 3c01 subs r4, #1 - 25854: f8cd 8004 str.w r8, [sp, #4] - 25858: 4628 mov r0, r5 - 2585a: 4414 add r4, r2 - 2585c: b224 sxth r4, r4 - 2585e: 9400 str r4, [sp, #0] - 25860: 6a8c ldr r4, [r1, #40] ; 0x28 - 25862: 4619 mov r1, r3 - 25864: 47a0 blx r4 + 2593e: 3c01 subs r4, #1 + 25940: f8cd 8004 str.w r8, [sp, #4] + 25944: 4628 mov r0, r5 + 25946: 4414 add r4, r2 + 25948: b224 sxth r4, r4 + 2594a: 9400 str r4, [sp, #0] + 2594c: 6a8c ldr r4, [r1, #40] ; 0x28 + 2594e: 4619 mov r1, r3 + 25950: 47a0 blx r4 endWrite(); - 25866: 682b ldr r3, [r5, #0] - 25868: 6adb ldr r3, [r3, #44] ; 0x2c - 2586a: 42b3 cmp r3, r6 - 2586c: d109 bne.n 25882 -} - 2586e: b004 add sp, #16 - 25870: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 25874: e9cd 3202 strd r3, r2, [sp, #8] + 25952: 682b ldr r3, [r5, #0] + 25954: 6adb ldr r3, [r3, #44] ; 0x2c + 25956: 42b3 cmp r3, r6 + 25958: d109 bne.n 2596e +} + 2595a: b004 add sp, #16 + 2595c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 25960: e9cd 3202 strd r3, r2, [sp, #8] startWrite(); - 25878: 47b8 blx r7 + 25964: 47b8 blx r7 writeLine(x, y, x, y + h - 1, color); - 2587a: 6829 ldr r1, [r5, #0] - 2587c: e9dd 3202 ldrd r3, r2, [sp, #8] - 25880: e7e7 b.n 25852 + 25966: 6829 ldr r1, [r5, #0] + 25968: e9dd 3202 ldrd r3, r2, [sp, #8] + 2596c: e7e7 b.n 2593e endWrite(); - 25882: 4628 mov r0, r5 + 2596e: 4628 mov r0, r5 } - 25884: b004 add sp, #16 - 25886: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 25970: b004 add sp, #16 + 25972: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} endWrite(); - 2588a: 4718 bx r3 - 2588c: 0002579d .word 0x0002579d + 25976: 4718 bx r3 + 25978: 00025889 .word 0x00025889 -00025890 : +0002597c : uint16_t color) { - 25890: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 2597c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} startWrite(); - 25894: 6805 ldr r5, [r0, #0] + 25980: 6805 ldr r5, [r0, #0] uint16_t color) { - 25896: b085 sub sp, #20 - 25898: 4e12 ldr r6, [pc, #72] ; (258e4 ) - 2589a: 4604 mov r4, r0 + 25982: b085 sub sp, #20 + 25984: 4e12 ldr r6, [pc, #72] ; (259d0 ) + 25986: 4604 mov r4, r0 startWrite(); - 2589c: 696f ldr r7, [r5, #20] + 25988: 696f ldr r7, [r5, #20] uint16_t color) { - 2589e: 4699 mov r9, r3 - 258a0: f8bd 8030 ldrh.w r8, [sp, #48] ; 0x30 - 258a4: 42b7 cmp r7, r6 - 258a6: d110 bne.n 258ca + 2598a: 4699 mov r9, r3 + 2598c: f8bd 8030 ldrh.w r8, [sp, #48] ; 0x30 + 25990: 42b7 cmp r7, r6 + 25992: d110 bne.n 259b6 writeLine(x, y, x + w - 1, y, color); - 258a8: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff - 258ac: f8cd 8004 str.w r8, [sp, #4] - 258b0: 9200 str r2, [sp, #0] - 258b2: 4620 mov r0, r4 - 258b4: 440b add r3, r1 - 258b6: 6aad ldr r5, [r5, #40] ; 0x28 - 258b8: b21b sxth r3, r3 - 258ba: 47a8 blx r5 + 25994: f109 33ff add.w r3, r9, #4294967295 ; 0xffffffff + 25998: f8cd 8004 str.w r8, [sp, #4] + 2599c: 9200 str r2, [sp, #0] + 2599e: 4620 mov r0, r4 + 259a0: 440b add r3, r1 + 259a2: 6aad ldr r5, [r5, #40] ; 0x28 + 259a4: b21b sxth r3, r3 + 259a6: 47a8 blx r5 endWrite(); - 258bc: 6823 ldr r3, [r4, #0] - 258be: 6adb ldr r3, [r3, #44] ; 0x2c - 258c0: 42b3 cmp r3, r6 - 258c2: d109 bne.n 258d8 -} - 258c4: b005 add sp, #20 - 258c6: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 258ca: e9cd 1202 strd r1, r2, [sp, #8] + 259a8: 6823 ldr r3, [r4, #0] + 259aa: 6adb ldr r3, [r3, #44] ; 0x2c + 259ac: 42b3 cmp r3, r6 + 259ae: d109 bne.n 259c4 +} + 259b0: b005 add sp, #20 + 259b2: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 259b6: e9cd 1202 strd r1, r2, [sp, #8] startWrite(); - 258ce: 47b8 blx r7 + 259ba: 47b8 blx r7 writeLine(x, y, x + w - 1, y, color); - 258d0: 6825 ldr r5, [r4, #0] - 258d2: e9dd 1202 ldrd r1, r2, [sp, #8] - 258d6: e7e7 b.n 258a8 + 259bc: 6825 ldr r5, [r4, #0] + 259be: e9dd 1202 ldrd r1, r2, [sp, #8] + 259c2: e7e7 b.n 25994 endWrite(); - 258d8: 4620 mov r0, r4 + 259c4: 4620 mov r0, r4 } - 258da: b005 add sp, #20 - 258dc: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} + 259c6: b005 add sp, #20 + 259c8: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} endWrite(); - 258e0: 4718 bx r3 - 258e2: bf00 nop - 258e4: 0002579d .word 0x0002579d + 259cc: 4718 bx r3 + 259ce: bf00 nop + 259d0: 00025889 .word 0x00025889 -000258e8 : +000259d4 : uint16_t color) { - 258e8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 259d4: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} if (x0 == x1) { - 258ec: 4299 cmp r1, r3 + 259d8: 4299 cmp r1, r3 uint16_t color) { - 258ee: b087 sub sp, #28 - 258f0: 4605 mov r5, r0 - 258f2: f9bd 4038 ldrsh.w r4, [sp, #56] ; 0x38 - 258f6: f8bd 603c ldrh.w r6, [sp, #60] ; 0x3c + 259da: b087 sub sp, #28 + 259dc: 4605 mov r5, r0 + 259de: f9bd 4038 ldrsh.w r4, [sp, #56] ; 0x38 + 259e2: f8bd 603c ldrh.w r6, [sp, #60] ; 0x3c if (x0 == x1) { - 258fa: d022 beq.n 25942 + 259e6: d022 beq.n 25a2e } else if (y0 == y1) { - 258fc: 42a2 cmp r2, r4 - 258fe: d012 beq.n 25926 + 259e8: 42a2 cmp r2, r4 + 259ea: d012 beq.n 25a12 startWrite(); - 25900: 6807 ldr r7, [r0, #0] - 25902: f8df 8084 ldr.w r8, [pc, #132] ; 25988 - 25906: f8d7 9014 ldr.w r9, [r7, #20] - 2590a: 45c1 cmp r9, r8 - 2590c: d133 bne.n 25976 + 259ec: 6807 ldr r7, [r0, #0] + 259ee: f8df 8084 ldr.w r8, [pc, #132] ; 25a74 + 259f2: f8d7 9014 ldr.w r9, [r7, #20] + 259f6: 45c1 cmp r9, r8 + 259f8: d133 bne.n 25a62 writeLine(x0, y0, x1, y1, color); - 2590e: 4628 mov r0, r5 - 25910: e9cd 4600 strd r4, r6, [sp] - 25914: 6abc ldr r4, [r7, #40] ; 0x28 - 25916: 47a0 blx r4 + 259fa: 4628 mov r0, r5 + 259fc: e9cd 4600 strd r4, r6, [sp] + 25a00: 6abc ldr r4, [r7, #40] ; 0x28 + 25a02: 47a0 blx r4 endWrite(); - 25918: 682b ldr r3, [r5, #0] - 2591a: 6adb ldr r3, [r3, #44] ; 0x2c - 2591c: 4543 cmp r3, r8 - 2591e: d125 bne.n 2596c + 25a04: 682b ldr r3, [r5, #0] + 25a06: 6adb ldr r3, [r3, #44] ; 0x2c + 25a08: 4543 cmp r3, r8 + 25a0a: d125 bne.n 25a58 } - 25920: b007 add sp, #28 - 25922: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 25a0c: b007 add sp, #28 + 25a0e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} if (x0 > x1) - 25926: 4299 cmp r1, r3 - 25928: dc1c bgt.n 25964 + 25a12: 4299 cmp r1, r3 + 25a14: dc1c bgt.n 25a50 drawFastHLine(x0, y0, x1 - x0 + 1, color); - 2592a: 960e str r6, [sp, #56] ; 0x38 - 2592c: 3301 adds r3, #1 - 2592e: 682c ldr r4, [r5, #0] - 25930: 4628 mov r0, r5 - 25932: 1a5b subs r3, r3, r1 - 25934: 6be4 ldr r4, [r4, #60] ; 0x3c - 25936: b21b sxth r3, r3 - 25938: 46a4 mov ip, r4 -} - 2593a: b007 add sp, #28 - 2593c: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} + 25a16: 960e str r6, [sp, #56] ; 0x38 + 25a18: 3301 adds r3, #1 + 25a1a: 682c ldr r4, [r5, #0] + 25a1c: 4628 mov r0, r5 + 25a1e: 1a5b subs r3, r3, r1 + 25a20: 6be4 ldr r4, [r4, #60] ; 0x3c + 25a22: b21b sxth r3, r3 + 25a24: 46a4 mov ip, r4 +} + 25a26: b007 add sp, #28 + 25a28: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} drawFastHLine(x0, y0, x1 - x0 + 1, color); - 25940: 4760 bx ip + 25a2c: 4760 bx ip if (y0 > y1) - 25942: 42a2 cmp r2, r4 - 25944: dd02 ble.n 2594c - 25946: 4613 mov r3, r2 - 25948: 4622 mov r2, r4 - 2594a: 461c mov r4, r3 + 25a2e: 42a2 cmp r2, r4 + 25a30: dd02 ble.n 25a38 + 25a32: 4613 mov r3, r2 + 25a34: 4622 mov r2, r4 + 25a36: 461c mov r4, r3 drawFastVLine(x0, y0, y1 - y0 + 1, color); - 2594c: 960e str r6, [sp, #56] ; 0x38 - 2594e: 1c63 adds r3, r4, #1 - 25950: 682c ldr r4, [r5, #0] - 25952: 4628 mov r0, r5 - 25954: 1a9b subs r3, r3, r2 - 25956: 6ba4 ldr r4, [r4, #56] ; 0x38 - 25958: b21b sxth r3, r3 + 25a38: 960e str r6, [sp, #56] ; 0x38 + 25a3a: 1c63 adds r3, r4, #1 + 25a3c: 682c ldr r4, [r5, #0] + 25a3e: 4628 mov r0, r5 + 25a40: 1a9b subs r3, r3, r2 + 25a42: 6ba4 ldr r4, [r4, #56] ; 0x38 + 25a44: b21b sxth r3, r3 drawFastHLine(x0, y0, x1 - x0 + 1, color); - 2595a: 46a4 mov ip, r4 + 25a46: 46a4 mov ip, r4 } - 2595c: b007 add sp, #28 - 2595e: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} + 25a48: b007 add sp, #28 + 25a4a: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} drawFastHLine(x0, y0, x1 - x0 + 1, color); - 25962: 4760 bx ip + 25a4e: 4760 bx ip if (x0 > x1) - 25964: 4608 mov r0, r1 - 25966: 4619 mov r1, r3 - 25968: 4603 mov r3, r0 - 2596a: e7de b.n 2592a + 25a50: 4608 mov r0, r1 + 25a52: 4619 mov r1, r3 + 25a54: 4603 mov r3, r0 + 25a56: e7de b.n 25a16 endWrite(); - 2596c: 4628 mov r0, r5 + 25a58: 4628 mov r0, r5 } - 2596e: b007 add sp, #28 - 25970: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} + 25a5a: b007 add sp, #28 + 25a5c: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} endWrite(); - 25974: 4718 bx r3 - 25976: e9cd 2304 strd r2, r3, [sp, #16] - 2597a: 9103 str r1, [sp, #12] + 25a60: 4718 bx r3 + 25a62: e9cd 2304 strd r2, r3, [sp, #16] + 25a66: 9103 str r1, [sp, #12] startWrite(); - 2597c: 47c8 blx r9 + 25a68: 47c8 blx r9 writeLine(x0, y0, x1, y1, color); - 2597e: 682f ldr r7, [r5, #0] - 25980: 9903 ldr r1, [sp, #12] - 25982: e9dd 2304 ldrd r2, r3, [sp, #16] - 25986: e7c2 b.n 2590e - 25988: 0002579d .word 0x0002579d + 25a6a: 682f ldr r7, [r5, #0] + 25a6c: 9903 ldr r1, [sp, #12] + 25a6e: e9dd 2304 ldrd r2, r3, [sp, #16] + 25a72: e7c2 b.n 259fa + 25a74: 00025889 .word 0x00025889 -0002598c : +00025a78 : startWrite(); - 2598c: f8d0 c000 ldr.w ip, [r0] + 25a78: f8d0 c000 ldr.w ip, [r0] uint16_t color) { - 25990: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 25994: 4690 mov r8, r2 - 25996: 461f mov r7, r3 - 25998: 4a1f ldr r2, [pc, #124] ; (25a18 ) - 2599a: b083 sub sp, #12 + 25a7c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 25a80: 4690 mov r8, r2 + 25a82: 461f mov r7, r3 + 25a84: 4a1f ldr r2, [pc, #124] ; (25b04 ) + 25a86: b083 sub sp, #12 startWrite(); - 2599c: f8dc 3014 ldr.w r3, [ip, #20] + 25a88: f8dc 3014 ldr.w r3, [ip, #20] uint16_t color) { - 259a0: 4605 mov r5, r0 - 259a2: 460c mov r4, r1 - 259a4: f9bd 9030 ldrsh.w r9, [sp, #48] ; 0x30 - 259a8: 4293 cmp r3, r2 - 259aa: f8bd a034 ldrh.w sl, [sp, #52] ; 0x34 - 259ae: d129 bne.n 25a04 + 25a8c: 4605 mov r5, r0 + 25a8e: 460c mov r4, r1 + 25a90: f9bd 9030 ldrsh.w r9, [sp, #48] ; 0x30 + 25a94: 4293 cmp r3, r2 + 25a96: f8bd a034 ldrh.w sl, [sp, #52] ; 0x34 + 25a9a: d129 bne.n 25af0 for (int16_t i = x; i < x + w; i++) { - 259b0: 4427 add r7, r4 - 259b2: 42a7 cmp r7, r4 - 259b4: dd1e ble.n 259f4 - 259b6: f8df b064 ldr.w fp, [pc, #100] ; 25a1c - 259ba: e00a b.n 259d2 - 259bc: 3401 adds r4, #1 + 25a9c: 4427 add r7, r4 + 25a9e: 42a7 cmp r7, r4 + 25aa0: dd1e ble.n 25ae0 + 25aa2: f8df b064 ldr.w fp, [pc, #100] ; 25b08 + 25aa6: e00a b.n 25abe + 25aa8: 3401 adds r4, #1 drawFastVLine(x, y, h, color); - 259be: f8cd a000 str.w sl, [sp] - 259c2: f8dc 6038 ldr.w r6, [ip, #56] ; 0x38 - 259c6: b224 sxth r4, r4 - 259c8: 47b0 blx r6 + 25aaa: f8cd a000 str.w sl, [sp] + 25aae: f8dc 6038 ldr.w r6, [ip, #56] ; 0x38 + 25ab2: b224 sxth r4, r4 + 25ab4: 47b0 blx r6 endWrite(); - 259ca: f8d5 c000 ldr.w ip, [r5] + 25ab6: f8d5 c000 ldr.w ip, [r5] for (int16_t i = x; i < x + w; i++) { - 259ce: 42bc cmp r4, r7 - 259d0: da10 bge.n 259f4 + 25aba: 42bc cmp r4, r7 + 25abc: da10 bge.n 25ae0 writeFastVLine(i, y, h, color); - 259d2: f8dc 6020 ldr.w r6, [ip, #32] + 25abe: f8dc 6020 ldr.w r6, [ip, #32] drawFastVLine(x, y, h, color); - 259d6: 464b mov r3, r9 - 259d8: 4642 mov r2, r8 - 259da: 4621 mov r1, r4 - 259dc: 455e cmp r6, fp - 259de: 4628 mov r0, r5 - 259e0: d0ec beq.n 259bc - 259e2: 3401 adds r4, #1 + 25ac2: 464b mov r3, r9 + 25ac4: 4642 mov r2, r8 + 25ac6: 4621 mov r1, r4 + 25ac8: 455e cmp r6, fp + 25aca: 4628 mov r0, r5 + 25acc: d0ec beq.n 25aa8 + 25ace: 3401 adds r4, #1 writeFastVLine(i, y, h, color); - 259e4: f8cd a000 str.w sl, [sp] - 259e8: 47b0 blx r6 + 25ad0: f8cd a000 str.w sl, [sp] + 25ad4: 47b0 blx r6 endWrite(); - 259ea: f8d5 c000 ldr.w ip, [r5] - 259ee: b224 sxth r4, r4 + 25ad6: f8d5 c000 ldr.w ip, [r5] + 25ada: b224 sxth r4, r4 for (int16_t i = x; i < x + w; i++) { - 259f0: 42bc cmp r4, r7 - 259f2: dbee blt.n 259d2 + 25adc: 42bc cmp r4, r7 + 25ade: dbee blt.n 25abe endWrite(); - 259f4: f8dc 302c ldr.w r3, [ip, #44] ; 0x2c - 259f8: 4a07 ldr r2, [pc, #28] ; (25a18 ) - 259fa: 4293 cmp r3, r2 - 259fc: d106 bne.n 25a0c + 25ae0: f8dc 302c ldr.w r3, [ip, #44] ; 0x2c + 25ae4: 4a07 ldr r2, [pc, #28] ; (25b04 ) + 25ae6: 4293 cmp r3, r2 + 25ae8: d106 bne.n 25af8 } - 259fe: b003 add sp, #12 - 25a00: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 25aea: b003 add sp, #12 + 25aec: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} startWrite(); - 25a04: 4798 blx r3 + 25af0: 4798 blx r3 endWrite(); - 25a06: f8d5 c000 ldr.w ip, [r5] - 25a0a: e7d1 b.n 259b0 - 25a0c: 4628 mov r0, r5 + 25af2: f8d5 c000 ldr.w ip, [r5] + 25af6: e7d1 b.n 25a9c + 25af8: 4628 mov r0, r5 } - 25a0e: b003 add sp, #12 - 25a10: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 25afa: b003 add sp, #12 + 25afc: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} endWrite(); - 25a14: 4718 bx r3 - 25a16: bf00 nop - 25a18: 0002579d .word 0x0002579d - 25a1c: 000257b1 .word 0x000257b1 + 25b00: 4718 bx r3 + 25b02: bf00 nop + 25b04: 00025889 .word 0x00025889 + 25b08: 0002589d .word 0x0002589d -00025a20 : +00025b0c : uint16_t color) { - 25a20: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 25a24: 461d mov r5, r3 + 25b0c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 25b10: 461d mov r5, r3 startWrite(); - 25a26: 6803 ldr r3, [r0, #0] + 25b12: 6803 ldr r3, [r0, #0] uint16_t color) { - 25a28: 4616 mov r6, r2 - 25a2a: f8df 90bc ldr.w r9, [pc, #188] ; 25ae8 + 25b14: 4616 mov r6, r2 + 25b16: f8df 90bc ldr.w r9, [pc, #188] ; 25bd4 startWrite(); - 25a2e: 695a ldr r2, [r3, #20] + 25b1a: 695a ldr r2, [r3, #20] uint16_t color) { - 25a30: b085 sub sp, #20 - 25a32: 4604 mov r4, r0 - 25a34: 454a cmp r2, r9 - 25a36: f9bd 8038 ldrsh.w r8, [sp, #56] ; 0x38 - 25a3a: f8bd 703c ldrh.w r7, [sp, #60] ; 0x3c - 25a3e: d143 bne.n 25ac8 + 25b1c: b085 sub sp, #20 + 25b1e: 4604 mov r4, r0 + 25b20: 454a cmp r2, r9 + 25b22: f9bd 8038 ldrsh.w r8, [sp, #56] ; 0x38 + 25b26: f8bd 703c ldrh.w r7, [sp, #60] ; 0x3c + 25b2a: d143 bne.n 25bb4 writeFastHLine(x, y, w, color); - 25a40: f8d3 b024 ldr.w fp, [r3, #36] ; 0x24 - 25a44: 4632 mov r2, r6 - 25a46: f8df a0a4 ldr.w sl, [pc, #164] ; 25aec - 25a4a: 4620 mov r0, r4 + 25b2c: f8d3 b024 ldr.w fp, [r3, #36] ; 0x24 + 25b30: 4632 mov r2, r6 + 25b32: f8df a0a4 ldr.w sl, [pc, #164] ; 25bd8 + 25b36: 4620 mov r0, r4 drawFastHLine(x, y, w, color); - 25a4c: 9700 str r7, [sp, #0] - 25a4e: 45d3 cmp fp, sl + 25b38: 9700 str r7, [sp, #0] + 25b3a: 45d3 cmp fp, sl writeFastHLine(x, y, w, color); - 25a50: 9103 str r1, [sp, #12] + 25b3c: 9103 str r1, [sp, #12] drawFastHLine(x, y, w, color); - 25a52: bf08 it eq - 25a54: f8d3 b03c ldreq.w fp, [r3, #60] ; 0x3c + 25b3e: bf08 it eq + 25b40: f8d3 b03c ldreq.w fp, [r3, #60] ; 0x3c writeFastHLine(x, y, w, color); - 25a58: 462b mov r3, r5 - 25a5a: 47d8 blx fp + 25b44: 462b mov r3, r5 + 25b46: 47d8 blx fp writeFastHLine(x, y + h - 1, w, color); - 25a5c: 6823 ldr r3, [r4, #0] - 25a5e: f108 32ff add.w r2, r8, #4294967295 ; 0xffffffff + 25b48: 6823 ldr r3, [r4, #0] + 25b4a: f108 32ff add.w r2, r8, #4294967295 ; 0xffffffff writeFastHLine(x, y, w, color); - 25a62: 9903 ldr r1, [sp, #12] + 25b4e: 9903 ldr r1, [sp, #12] writeFastHLine(x, y + h - 1, w, color); - 25a64: f8d3 b024 ldr.w fp, [r3, #36] ; 0x24 - 25a68: 4432 add r2, r6 + 25b50: f8d3 b024 ldr.w fp, [r3, #36] ; 0x24 + 25b54: 4432 add r2, r6 drawFastHLine(x, y, w, color); - 25a6a: 9700 str r7, [sp, #0] - 25a6c: 45d3 cmp fp, sl + 25b56: 9700 str r7, [sp, #0] + 25b58: 45d3 cmp fp, sl writeFastHLine(x, y + h - 1, w, color); - 25a6e: b212 sxth r2, r2 - 25a70: d134 bne.n 25adc + 25b5a: b212 sxth r2, r2 + 25b5c: d134 bne.n 25bc8 drawFastHLine(x, y, w, color); - 25a72: f8d3 a03c ldr.w sl, [r3, #60] ; 0x3c - 25a76: 4620 mov r0, r4 - 25a78: 9103 str r1, [sp, #12] - 25a7a: 462b mov r3, r5 - 25a7c: 47d0 blx sl + 25b5e: f8d3 a03c ldr.w sl, [r3, #60] ; 0x3c + 25b62: 4620 mov r0, r4 + 25b64: 9103 str r1, [sp, #12] + 25b66: 462b mov r3, r5 + 25b68: 47d0 blx sl } - 25a7e: 9903 ldr r1, [sp, #12] + 25b6a: 9903 ldr r1, [sp, #12] writeFastVLine(x, y, h, color); - 25a80: 6823 ldr r3, [r4, #0] - 25a82: 4632 mov r2, r6 - 25a84: f8df a068 ldr.w sl, [pc, #104] ; 25af0 - 25a88: 4620 mov r0, r4 - 25a8a: f8d3 b020 ldr.w fp, [r3, #32] + 25b6c: 6823 ldr r3, [r4, #0] + 25b6e: 4632 mov r2, r6 + 25b70: f8df a068 ldr.w sl, [pc, #104] ; 25bdc + 25b74: 4620 mov r0, r4 + 25b76: f8d3 b020 ldr.w fp, [r3, #32] writeFastVLine(x + w - 1, y, h, color); - 25a8e: 3d01 subs r5, #1 + 25b7a: 3d01 subs r5, #1 drawFastVLine(x, y, h, color); - 25a90: 9700 str r7, [sp, #0] - 25a92: 45d3 cmp fp, sl + 25b7c: 9700 str r7, [sp, #0] + 25b7e: 45d3 cmp fp, sl writeFastVLine(x, y, h, color); - 25a94: 9103 str r1, [sp, #12] + 25b80: 9103 str r1, [sp, #12] drawFastVLine(x, y, h, color); - 25a96: bf08 it eq - 25a98: f8d3 b038 ldreq.w fp, [r3, #56] ; 0x38 + 25b82: bf08 it eq + 25b84: f8d3 b038 ldreq.w fp, [r3, #56] ; 0x38 writeFastVLine(x, y, h, color); - 25a9c: 4643 mov r3, r8 - 25a9e: 47d8 blx fp - 25aa0: 9903 ldr r1, [sp, #12] + 25b88: 4643 mov r3, r8 + 25b8a: 47d8 blx fp + 25b8c: 9903 ldr r1, [sp, #12] writeFastVLine(x + w - 1, y, h, color); - 25aa2: 6822 ldr r2, [r4, #0] + 25b8e: 6822 ldr r2, [r4, #0] drawFastVLine(x, y, h, color); - 25aa4: 4643 mov r3, r8 + 25b90: 4643 mov r3, r8 writeFastVLine(x + w - 1, y, h, color); - 25aa6: 440d add r5, r1 - 25aa8: 4620 mov r0, r4 - 25aaa: b229 sxth r1, r5 - 25aac: 6a15 ldr r5, [r2, #32] + 25b92: 440d add r5, r1 + 25b94: 4620 mov r0, r4 + 25b96: b229 sxth r1, r5 + 25b98: 6a15 ldr r5, [r2, #32] drawFastVLine(x, y, h, color); - 25aae: 9700 str r7, [sp, #0] - 25ab0: 4555 cmp r5, sl - 25ab2: bf08 it eq - 25ab4: 6b95 ldreq r5, [r2, #56] ; 0x38 + 25b9a: 9700 str r7, [sp, #0] + 25b9c: 4555 cmp r5, sl + 25b9e: bf08 it eq + 25ba0: 6b95 ldreq r5, [r2, #56] ; 0x38 writeFastVLine(x + w - 1, y, h, color); - 25ab6: 4632 mov r2, r6 - 25ab8: 47a8 blx r5 + 25ba2: 4632 mov r2, r6 + 25ba4: 47a8 blx r5 endWrite(); - 25aba: 6823 ldr r3, [r4, #0] - 25abc: 6adb ldr r3, [r3, #44] ; 0x2c - 25abe: 454b cmp r3, r9 - 25ac0: d107 bne.n 25ad2 -} - 25ac2: b005 add sp, #20 - 25ac4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 25ac8: 9103 str r1, [sp, #12] + 25ba6: 6823 ldr r3, [r4, #0] + 25ba8: 6adb ldr r3, [r3, #44] ; 0x2c + 25baa: 454b cmp r3, r9 + 25bac: d107 bne.n 25bbe +} + 25bae: b005 add sp, #20 + 25bb0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 25bb4: 9103 str r1, [sp, #12] startWrite(); - 25aca: 4790 blx r2 + 25bb6: 4790 blx r2 writeFastHLine(x, y, w, color); - 25acc: 6823 ldr r3, [r4, #0] - 25ace: 9903 ldr r1, [sp, #12] - 25ad0: e7b6 b.n 25a40 + 25bb8: 6823 ldr r3, [r4, #0] + 25bba: 9903 ldr r1, [sp, #12] + 25bbc: e7b6 b.n 25b2c endWrite(); - 25ad2: 4620 mov r0, r4 + 25bbe: 4620 mov r0, r4 } - 25ad4: b005 add sp, #20 - 25ad6: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 25bc0: b005 add sp, #20 + 25bc2: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} endWrite(); - 25ada: 4718 bx r3 + 25bc6: 4718 bx r3 writeFastHLine(x, y + h - 1, w, color); - 25adc: 9103 str r1, [sp, #12] - 25ade: 462b mov r3, r5 - 25ae0: 4620 mov r0, r4 - 25ae2: 47d8 blx fp - 25ae4: 9903 ldr r1, [sp, #12] - 25ae6: e7cb b.n 25a80 - 25ae8: 0002579d .word 0x0002579d - 25aec: 000257c5 .word 0x000257c5 - 25af0: 000257b1 .word 0x000257b1 - -00025af4 : + 25bc8: 9103 str r1, [sp, #12] + 25bca: 462b mov r3, r5 + 25bcc: 4620 mov r0, r4 + 25bce: 47d8 blx fp + 25bd0: 9903 ldr r1, [sp, #12] + 25bd2: e7cb b.n 25b6c + 25bd4: 00025889 .word 0x00025889 + 25bd8: 000258b1 .word 0x000258b1 + 25bdc: 0002589d .word 0x0002589d + +00025be0 : uint16_t color) { - 25af4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 25af8: ed2d 8b02 vpush {d8} - 25afc: b085 sub sp, #20 - 25afe: 4698 mov r8, r3 - 25b00: 460c mov r4, r1 - 25b02: 4616 mov r6, r2 - 25b04: f9bd c040 ldrsh.w ip, [sp, #64] ; 0x40 + 25be0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 25be4: ed2d 8b02 vpush {d8} + 25be8: b085 sub sp, #20 + 25bea: 4698 mov r8, r3 + 25bec: 460c mov r4, r1 + 25bee: 4616 mov r6, r2 + 25bf0: f9bd c040 ldrsh.w ip, [sp, #64] ; 0x40 int16_t steep = abs(y1 - y0) > abs(x1 - x0); - 25b08: eba8 0a01 sub.w sl, r8, r1 + 25bf4: eba8 0a01 sub.w sl, r8, r1 uint16_t color) { - 25b0c: 4607 mov r7, r0 - 25b0e: f8bd 9044 ldrh.w r9, [sp, #68] ; 0x44 + 25bf8: 4607 mov r7, r0 + 25bfa: f8bd 9044 ldrh.w r9, [sp, #68] ; 0x44 int16_t steep = abs(y1 - y0) > abs(x1 - x0); - 25b12: ebac 0302 sub.w r3, ip, r2 - 25b16: f1ba 0f00 cmp.w sl, #0 - 25b1a: ea83 75e3 eor.w r5, r3, r3, asr #31 - 25b1e: bfb8 it lt - 25b20: f1ca 0a00 rsblt sl, sl, #0 - 25b24: eba5 75e3 sub.w r5, r5, r3, asr #31 + 25bfe: ebac 0302 sub.w r3, ip, r2 + 25c02: f1ba 0f00 cmp.w sl, #0 + 25c06: ea83 75e3 eor.w r5, r3, r3, asr #31 + 25c0a: bfb8 it lt + 25c0c: f1ca 0a00 rsblt sl, sl, #0 + 25c10: eba5 75e3 sub.w r5, r5, r3, asr #31 if (steep) { - 25b28: 4555 cmp r5, sl + 25c14: 4555 cmp r5, sl int16_t steep = abs(y1 - y0) > abs(x1 - x0); - 25b2a: 9501 str r5, [sp, #4] + 25c16: 9501 str r5, [sp, #4] if (steep) { - 25b2c: dd66 ble.n 25bfc - 25b2e: 4641 mov r1, r8 - 25b30: 4620 mov r0, r4 - 25b32: 4622 mov r2, r4 - 25b34: 4643 mov r3, r8 + 25c18: dd66 ble.n 25ce8 + 25c1a: 4641 mov r1, r8 + 25c1c: 4620 mov r0, r4 + 25c1e: 4622 mov r2, r4 + 25c20: 4643 mov r3, r8 _swap_int16_t(x0, y0); - 25b36: 4634 mov r4, r6 + 25c22: 4634 mov r4, r6 _swap_int16_t(x1, y1); - 25b38: 46e0 mov r8, ip + 25c24: 46e0 mov r8, ip _swap_int16_t(x0, y0); - 25b3a: 4606 mov r6, r0 + 25c26: 4606 mov r6, r0 _swap_int16_t(x1, y1); - 25b3c: 468c mov ip, r1 + 25c28: 468c mov ip, r1 if (x0 > x1) { - 25b3e: 4544 cmp r4, r8 - 25b40: dd08 ble.n 25b54 - 25b42: 461d mov r5, r3 - 25b44: 4630 mov r0, r6 - 25b46: 4621 mov r1, r4 - 25b48: 4613 mov r3, r2 + 25c2a: 4544 cmp r4, r8 + 25c2c: dd08 ble.n 25c40 + 25c2e: 461d mov r5, r3 + 25c30: 4630 mov r0, r6 + 25c32: 4621 mov r1, r4 + 25c34: 4613 mov r3, r2 _swap_int16_t(y0, y1); - 25b4a: 4666 mov r6, ip + 25c36: 4666 mov r6, ip if (x0 > x1) { - 25b4c: 4644 mov r4, r8 - 25b4e: 462a mov r2, r5 + 25c38: 4644 mov r4, r8 + 25c3a: 462a mov r2, r5 _swap_int16_t(y0, y1); - 25b50: 4684 mov ip, r0 + 25c3c: 4684 mov ip, r0 if (x0 > x1) { - 25b52: 4688 mov r8, r1 + 25c3e: 4688 mov r8, r1 dy = abs(y1 - y0); - 25b54: 1a9b subs r3, r3, r2 + 25c40: 1a9b subs r3, r3, r2 dx = x1 - x0; - 25b56: eba8 0204 sub.w r2, r8, r4 + 25c42: eba8 0204 sub.w r2, r8, r4 dy = abs(y1 - y0); - 25b5a: 2b00 cmp r3, #0 + 25c46: 2b00 cmp r3, #0 int16_t err = dx / 2; - 25b5c: b215 sxth r5, r2 + 25c48: b215 sxth r5, r2 dx = x1 - x0; - 25b5e: b292 uxth r2, r2 + 25c4a: b292 uxth r2, r2 dy = abs(y1 - y0); - 25b60: bfb8 it lt - 25b62: 425b neglt r3, r3 + 25c4c: bfb8 it lt + 25c4e: 425b neglt r3, r3 int16_t err = dx / 2; - 25b64: 2d00 cmp r5, #0 + 25c50: 2d00 cmp r5, #0 dx = x1 - x0; - 25b66: 9200 str r2, [sp, #0] + 25c52: 9200 str r2, [sp, #0] int16_t err = dx / 2; - 25b68: bfb8 it lt - 25b6a: 3501 addlt r5, #1 + 25c54: bfb8 it lt + 25c56: 3501 addlt r5, #1 if (y0 < y1) { - 25b6c: 45b4 cmp ip, r6 + 25c58: 45b4 cmp ip, r6 int16_t err = dx / 2; - 25b6e: ea4f 0565 mov.w r5, r5, asr #1 + 25c5a: ea4f 0565 mov.w r5, r5, asr #1 if (y0 < y1) { - 25b72: dd3a ble.n 25bea + 25c5e: dd3a ble.n 25cd6 ystep = 1; - 25b74: 2201 movs r2, #1 - 25b76: 9202 str r2, [sp, #8] + 25c60: 2201 movs r2, #1 + 25c62: 9202 str r2, [sp, #8] err -= dy; - 25b78: b29b uxth r3, r3 - 25b7a: ee08 7a10 vmov s16, r7 - 25b7e: 9303 str r3, [sp, #12] - 25b80: e01e b.n 25bc0 + 25c64: b29b uxth r3, r3 + 25c66: ee08 7a10 vmov s16, r7 + 25c6a: 9303 str r3, [sp, #12] + 25c6c: e01e b.n 25cac writePixel(y0, x0, color); - 25b82: ee18 1a10 vmov r1, s16 - 25b86: 4f20 ldr r7, [pc, #128] ; (25c08 ) + 25c6e: ee18 1a10 vmov r1, s16 + 25c72: 4f20 ldr r7, [pc, #128] ; (25cf4 ) drawPixel(x, y, color); - 25b88: ee18 0a10 vmov r0, s16 + 25c74: ee18 0a10 vmov r0, s16 writePixel(y0, x0, color); - 25b8c: f8d1 c000 ldr.w ip, [r1] + 25c78: f8d1 c000 ldr.w ip, [r1] drawPixel(x, y, color); - 25b90: 4631 mov r1, r6 + 25c7c: 4631 mov r1, r6 writePixel(y0, x0, color); - 25b92: f8dc b018 ldr.w fp, [ip, #24] - 25b96: 45bb cmp fp, r7 - 25b98: d12e bne.n 25bf8 + 25c7e: f8dc b018 ldr.w fp, [ip, #24] + 25c82: 45bb cmp fp, r7 + 25c84: d12e bne.n 25ce4 drawPixel(x, y, color); - 25b9a: f8dc b010 ldr.w fp, [ip, #16] - 25b9e: 47d8 blx fp + 25c86: f8dc b010 ldr.w fp, [ip, #16] + 25c8a: 47d8 blx fp err -= dy; - 25ba0: 9b03 ldr r3, [sp, #12] - 25ba2: 3401 adds r4, #1 + 25c8c: 9b03 ldr r3, [sp, #12] + 25c8e: 3401 adds r4, #1 y0 += ystep; - 25ba4: 9a02 ldr r2, [sp, #8] + 25c90: 9a02 ldr r2, [sp, #8] err -= dy; - 25ba6: 1aeb subs r3, r5, r3 + 25c92: 1aeb subs r3, r5, r3 err += dx; - 25ba8: 9900 ldr r1, [sp, #0] + 25c94: 9900 ldr r1, [sp, #0] y0 += ystep; - 25baa: 18b2 adds r2, r6, r2 - 25bac: b224 sxth r4, r4 + 25c96: 18b2 adds r2, r6, r2 + 25c98: b224 sxth r4, r4 err -= dy; - 25bae: b21d sxth r5, r3 - 25bb0: b29b uxth r3, r3 + 25c9a: b21d sxth r5, r3 + 25c9c: b29b uxth r3, r3 if (err < 0) { - 25bb2: 2d00 cmp r5, #0 + 25c9e: 2d00 cmp r5, #0 err += dx; - 25bb4: 440b add r3, r1 + 25ca0: 440b add r3, r1 if (err < 0) { - 25bb6: da01 bge.n 25bbc + 25ca2: da01 bge.n 25ca8 y0 += ystep; - 25bb8: b216 sxth r6, r2 + 25ca4: b216 sxth r6, r2 err += dx; - 25bba: b21d sxth r5, r3 + 25ca6: b21d sxth r5, r3 for (; x0 <= x1; x0++) { - 25bbc: 45a0 cmp r8, r4 - 25bbe: db16 blt.n 25bee + 25ca8: 45a0 cmp r8, r4 + 25caa: db16 blt.n 25cda if (steep) { - 25bc0: 9b01 ldr r3, [sp, #4] + 25cac: 9b01 ldr r3, [sp, #4] drawPixel(x, y, color); - 25bc2: 4622 mov r2, r4 - 25bc4: 4621 mov r1, r4 + 25cae: 4622 mov r2, r4 + 25cb0: 4621 mov r1, r4 if (steep) { - 25bc6: 4553 cmp r3, sl + 25cb2: 4553 cmp r3, sl drawPixel(x, y, color); - 25bc8: 464b mov r3, r9 + 25cb4: 464b mov r3, r9 if (steep) { - 25bca: dcda bgt.n 25b82 + 25cb6: dcda bgt.n 25c6e writePixel(x0, y0, color); - 25bcc: ee18 3a10 vmov r3, s16 - 25bd0: 4f0d ldr r7, [pc, #52] ; (25c08 ) + 25cb8: ee18 3a10 vmov r3, s16 + 25cbc: 4f0d ldr r7, [pc, #52] ; (25cf4 ) drawPixel(x, y, color); - 25bd2: 4632 mov r2, r6 - 25bd4: ee18 0a10 vmov r0, s16 + 25cbe: 4632 mov r2, r6 + 25cc0: ee18 0a10 vmov r0, s16 writePixel(x0, y0, color); - 25bd8: f8d3 c000 ldr.w ip, [r3] + 25cc4: f8d3 c000 ldr.w ip, [r3] drawPixel(x, y, color); - 25bdc: 464b mov r3, r9 + 25cc8: 464b mov r3, r9 writePixel(x0, y0, color); - 25bde: f8dc b018 ldr.w fp, [ip, #24] - 25be2: 45bb cmp fp, r7 - 25be4: d0d9 beq.n 25b9a - 25be6: 47d8 blx fp - 25be8: e7da b.n 25ba0 + 25cca: f8dc b018 ldr.w fp, [ip, #24] + 25cce: 45bb cmp fp, r7 + 25cd0: d0d9 beq.n 25c86 + 25cd2: 47d8 blx fp + 25cd4: e7da b.n 25c8c for (; x0 <= x1; x0++) { - 25bea: 45a0 cmp r8, r4 - 25bec: da08 bge.n 25c00 + 25cd6: 45a0 cmp r8, r4 + 25cd8: da08 bge.n 25cec } - 25bee: b005 add sp, #20 - 25bf0: ecbd 8b02 vpop {d8} - 25bf4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 25cda: b005 add sp, #20 + 25cdc: ecbd 8b02 vpop {d8} + 25ce0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} writePixel(y0, x0, color); - 25bf8: 47d8 blx fp - 25bfa: e7d1 b.n 25ba0 - 25bfc: 4663 mov r3, ip - 25bfe: e79e b.n 25b3e + 25ce4: 47d8 blx fp + 25ce6: e7d1 b.n 25c8c + 25ce8: 4663 mov r3, ip + 25cea: e79e b.n 25c2a ystep = -1; - 25c00: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 25c04: 9202 str r2, [sp, #8] - 25c06: e7b7 b.n 25b78 - 25c08: 000257a1 .word 0x000257a1 + 25cec: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 25cf0: 9202 str r2, [sp, #8] + 25cf2: e7b7 b.n 25c64 + 25cf4: 0002588d .word 0x0002588d -00025c0c : +00025cf8 : Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h) : WIDTH(w), HEIGHT(h) { - 25c0c: 8142 strh r2, [r0, #10] + 25cf8: 8142 strh r2, [r0, #10] _height = HEIGHT; - 25c0e: 81c2 strh r2, [r0, #14] + 25cfa: 81c2 strh r2, [r0, #14] textsize_x = textsize_y = 1; - 25c10: 4a08 ldr r2, [pc, #32] ; (25c34 ) + 25cfc: 4a08 ldr r2, [pc, #32] ; (25d20 ) Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h) : WIDTH(w), HEIGHT(h) { - 25c12: 8101 strh r1, [r0, #8] + 25cfe: 8101 strh r1, [r0, #8] _width = WIDTH; - 25c14: 8181 strh r1, [r0, #12] + 25d00: 8181 strh r1, [r0, #12] textcolor = textbgcolor = 0xFFFF; - 25c16: f04f 31ff mov.w r1, #4294967295 ; 0xffffffff + 25d02: f04f 31ff mov.w r1, #4294967295 ; 0xffffffff textsize_x = textsize_y = 1; - 25c1a: 6182 str r2, [r0, #24] + 25d06: 6182 str r2, [r0, #24] Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h) : WIDTH(w), HEIGHT(h) { - 25c1c: 4a06 ldr r2, [pc, #24] ; (25c38 ) - 25c1e: b410 push {r4} - 25c20: 2400 movs r4, #0 - 25c22: 6002 str r2, [r0, #0] - 25c24: 6044 str r4, [r0, #4] + 25d08: 4a06 ldr r2, [pc, #24] ; (25d24 ) + 25d0a: b410 push {r4} + 25d0c: 2400 movs r4, #0 + 25d0e: 6002 str r2, [r0, #0] + 25d10: 6044 str r4, [r0, #4] _cp437 = false; - 25c26: 7704 strb r4, [r0, #28] + 25d12: 7704 strb r4, [r0, #28] gfxFont = NULL; - 25c28: 6204 str r4, [r0, #32] + 25d14: 6204 str r4, [r0, #32] textcolor = textbgcolor = 0xFFFF; - 25c2a: e9c0 4104 strd r4, r1, [r0, #16] + 25d16: e9c0 4104 strd r4, r1, [r0, #16] } - 25c2e: f85d 4b04 ldr.w r4, [sp], #4 - 25c32: 4770 bx lr - 25c34: 01000101 .word 0x01000101 - 25c38: 20004150 .word 0x20004150 + 25d1a: f85d 4b04 ldr.w r4, [sp], #4 + 25d1e: 4770 bx lr + 25d20: 01000101 .word 0x01000101 + 25d24: 20004210 .word 0x20004210 -00025c3c : +00025d28 : uint16_t color) { - 25c3c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 25c40: b08b sub sp, #44 ; 0x2c - 25c42: 461e mov r6, r3 + 25d28: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 25d2c: b08b sub sp, #44 ; 0x2c + 25d2e: 461e mov r6, r3 int16_t f = 1 - r; - 25c44: b29c uxth r4, r3 + 25d30: b29c uxth r4, r3 uint16_t color) { - 25c46: 4683 mov fp, r0 - 25c48: f9bd 3054 ldrsh.w r3, [sp, #84] ; 0x54 + 25d32: 4683 mov fp, r0 + 25d34: f9bd 3054 ldrsh.w r3, [sp, #84] ; 0x54 while (x < y) { - 25c4c: 2e00 cmp r6, #0 + 25d38: 2e00 cmp r6, #0 uint16_t color) { - 25c4e: 9105 str r1, [sp, #20] + 25d3a: 9105 str r1, [sp, #20] delta++; // Avoid some +1's in the loop - 25c50: f103 0301 add.w r3, r3, #1 + 25d3c: f103 0301 add.w r3, r3, #1 uint16_t color) { - 25c54: f89d 1050 ldrb.w r1, [sp, #80] ; 0x50 + 25d40: f89d 1050 ldrb.w r1, [sp, #80] ; 0x50 delta++; // Avoid some +1's in the loop - 25c58: b298 uxth r0, r3 + 25d44: b298 uxth r0, r3 uint16_t color) { - 25c5a: 9104 str r1, [sp, #16] + 25d46: 9104 str r1, [sp, #16] int16_t ddF_y = -2 * r; - 25c5c: ebc4 33c4 rsb r3, r4, r4, lsl #15 + 25d48: ebc4 33c4 rsb r3, r4, r4, lsl #15 delta++; // Avoid some +1's in the loop - 25c60: 9008 str r0, [sp, #32] + 25d4c: 9008 str r0, [sp, #32] int16_t ddF_y = -2 * r; - 25c62: ea4f 0343 mov.w r3, r3, lsl #1 - 25c66: b21b sxth r3, r3 - 25c68: 9303 str r3, [sp, #12] + 25d4e: ea4f 0343 mov.w r3, r3, lsl #1 + 25d52: b21b sxth r3, r3 + 25d54: 9303 str r3, [sp, #12] uint16_t color) { - 25c6a: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 - 25c6e: 9306 str r3, [sp, #24] + 25d56: f8bd 3058 ldrh.w r3, [sp, #88] ; 0x58 + 25d5a: 9306 str r3, [sp, #24] while (x < y) { - 25c70: f340 809f ble.w 25db2 - 25c74: f1c4 0401 rsb r4, r4, #1 - 25c78: b293 uxth r3, r2 + 25d5c: f340 809f ble.w 25e9e + 25d60: f1c4 0401 rsb r4, r4, #1 + 25d64: b293 uxth r3, r2 if (corners & 1) - 25c7a: f001 0201 and.w r2, r1, #1 + 25d66: f001 0201 and.w r2, r1, #1 while (x < y) { - 25c7e: 4681 mov r9, r0 - 25c80: b224 sxth r4, r4 + 25d6a: 4681 mov r9, r0 + 25d6c: b224 sxth r4, r4 int16_t x = 0; - 25c82: 2500 movs r5, #0 + 25d6e: 2500 movs r5, #0 while (x < y) { - 25c84: 4698 mov r8, r3 - 25c86: 9309 str r3, [sp, #36] ; 0x24 + 25d70: 4698 mov r8, r3 + 25d72: 9309 str r3, [sp, #36] ; 0x24 if (corners & 1) - 25c88: 9207 str r2, [sp, #28] - 25c8a: 9402 str r4, [sp, #8] - 25c8c: e088 b.n 25da0 + 25d74: 9207 str r2, [sp, #28] + 25d76: 9402 str r4, [sp, #8] + 25d78: e088 b.n 25e8c ddF_y += 2; - 25c8e: 9b03 ldr r3, [sp, #12] + 25d7a: 9b03 ldr r3, [sp, #12] y--; - 25c90: 1e77 subs r7, r6, #1 + 25d7c: 1e77 subs r7, r6, #1 f += ddF_y; - 25c92: 9a02 ldr r2, [sp, #8] + 25d7e: 9a02 ldr r2, [sp, #8] ddF_y += 2; - 25c94: 3302 adds r3, #2 + 25d80: 3302 adds r3, #2 y--; - 25c96: b23f sxth r7, r7 + 25d82: b23f sxth r7, r7 f += ddF_y; - 25c98: fa12 f483 uxtah r4, r2, r3 + 25d84: fa12 f483 uxtah r4, r2, r3 ddF_y += 2; - 25c9c: b21b sxth r3, r3 + 25d88: b21b sxth r3, r3 f += ddF_y; - 25c9e: b2a4 uxth r4, r4 + 25d8a: b2a4 uxth r4, r4 ddF_y += 2; - 25ca0: 9303 str r3, [sp, #12] + 25d8c: 9303 str r3, [sp, #12] x++; - 25ca2: 3501 adds r5, #1 - 25ca4: fa1f fa85 uxth.w sl, r5 - 25ca8: b22d sxth r5, r5 + 25d8e: 3501 adds r5, #1 + 25d90: fa1f fa85 uxth.w sl, r5 + 25d94: b22d sxth r5, r5 ddF_x += 2; - 25caa: eb04 044a add.w r4, r4, sl, lsl #1 + 25d96: eb04 044a add.w r4, r4, sl, lsl #1 if (x < (y + 1)) { - 25cae: 42af cmp r7, r5 + 25d9a: 42af cmp r7, r5 f += ddF_x; - 25cb0: f104 0401 add.w r4, r4, #1 - 25cb4: b223 sxth r3, r4 - 25cb6: 9302 str r3, [sp, #8] + 25d9c: f104 0401 add.w r4, r4, #1 + 25da0: b223 sxth r3, r4 + 25da2: 9302 str r3, [sp, #8] if (x < (y + 1)) { - 25cb8: db38 blt.n 25d2c + 25da4: db38 blt.n 25e18 if (corners & 1) - 25cba: 9b07 ldr r3, [sp, #28] - 25cbc: b1cb cbz r3, 25cf2 + 25da6: 9b07 ldr r3, [sp, #28] + 25da8: b1cb cbz r3, 25dde writeFastVLine(x0 + x, y0 - y, 2 * y + delta, color); - 25cbe: 9a05 ldr r2, [sp, #20] - 25cc0: b2bb uxth r3, r7 - 25cc2: 9c08 ldr r4, [sp, #32] - 25cc4: eb0a 0102 add.w r1, sl, r2 - 25cc8: 9a09 ldr r2, [sp, #36] ; 0x24 - 25cca: f8db 0000 ldr.w r0, [fp] - 25cce: 1ad2 subs r2, r2, r3 - 25cd0: eb04 0343 add.w r3, r4, r3, lsl #1 - 25cd4: 6a04 ldr r4, [r0, #32] - 25cd6: b209 sxth r1, r1 - 25cd8: fa0f fc83 sxth.w ip, r3 - 25cdc: 4b3e ldr r3, [pc, #248] ; (25dd8 ) - 25cde: b212 sxth r2, r2 - 25ce0: 429c cmp r4, r3 - 25ce2: d16e bne.n 25dc2 + 25daa: 9a05 ldr r2, [sp, #20] + 25dac: b2bb uxth r3, r7 + 25dae: 9c08 ldr r4, [sp, #32] + 25db0: eb0a 0102 add.w r1, sl, r2 + 25db4: 9a09 ldr r2, [sp, #36] ; 0x24 + 25db6: f8db 0000 ldr.w r0, [fp] + 25dba: 1ad2 subs r2, r2, r3 + 25dbc: eb04 0343 add.w r3, r4, r3, lsl #1 + 25dc0: 6a04 ldr r4, [r0, #32] + 25dc2: b209 sxth r1, r1 + 25dc4: fa0f fc83 sxth.w ip, r3 + 25dc8: 4b3e ldr r3, [pc, #248] ; (25ec4 ) + 25dca: b212 sxth r2, r2 + 25dcc: 429c cmp r4, r3 + 25dce: d16e bne.n 25eae drawFastVLine(x, y, h, color); - 25ce4: 9b06 ldr r3, [sp, #24] - 25ce6: 9300 str r3, [sp, #0] - 25ce8: 4663 mov r3, ip - 25cea: 6b80 ldr r0, [r0, #56] ; 0x38 - 25cec: 4604 mov r4, r0 - 25cee: 4658 mov r0, fp - 25cf0: 47a0 blx r4 + 25dd0: 9b06 ldr r3, [sp, #24] + 25dd2: 9300 str r3, [sp, #0] + 25dd4: 4663 mov r3, ip + 25dd6: 6b80 ldr r0, [r0, #56] ; 0x38 + 25dd8: 4604 mov r4, r0 + 25dda: 4658 mov r0, fp + 25ddc: 47a0 blx r4 if (corners & 2) - 25cf2: 9b04 ldr r3, [sp, #16] - 25cf4: 079a lsls r2, r3, #30 - 25cf6: d519 bpl.n 25d2c + 25dde: 9b04 ldr r3, [sp, #16] + 25de0: 079a lsls r2, r3, #30 + 25de2: d519 bpl.n 25e18 writeFastVLine(x0 - x, y0 - y, 2 * y + delta, color); - 25cf8: 9b05 ldr r3, [sp, #20] - 25cfa: 9c08 ldr r4, [sp, #32] - 25cfc: eba3 0a0a sub.w sl, r3, sl - 25d00: f8db 0000 ldr.w r0, [fp] - 25d04: b2bb uxth r3, r7 - 25d06: 9a09 ldr r2, [sp, #36] ; 0x24 - 25d08: fa0f f18a sxth.w r1, sl - 25d0c: f8d0 a020 ldr.w sl, [r0, #32] - 25d10: 1ad2 subs r2, r2, r3 - 25d12: eb04 0343 add.w r3, r4, r3, lsl #1 - 25d16: 4c30 ldr r4, [pc, #192] ; (25dd8 ) - 25d18: b212 sxth r2, r2 - 25d1a: 45a2 cmp sl, r4 - 25d1c: b21b sxth r3, r3 - 25d1e: d156 bne.n 25dce + 25de4: 9b05 ldr r3, [sp, #20] + 25de6: 9c08 ldr r4, [sp, #32] + 25de8: eba3 0a0a sub.w sl, r3, sl + 25dec: f8db 0000 ldr.w r0, [fp] + 25df0: b2bb uxth r3, r7 + 25df2: 9a09 ldr r2, [sp, #36] ; 0x24 + 25df4: fa0f f18a sxth.w r1, sl + 25df8: f8d0 a020 ldr.w sl, [r0, #32] + 25dfc: 1ad2 subs r2, r2, r3 + 25dfe: eb04 0343 add.w r3, r4, r3, lsl #1 + 25e02: 4c30 ldr r4, [pc, #192] ; (25ec4 ) + 25e04: b212 sxth r2, r2 + 25e06: 45a2 cmp sl, r4 + 25e08: b21b sxth r3, r3 + 25e0a: d156 bne.n 25eba drawFastVLine(x, y, h, color); - 25d20: 9c06 ldr r4, [sp, #24] - 25d22: 9400 str r4, [sp, #0] - 25d24: f8d0 a038 ldr.w sl, [r0, #56] ; 0x38 - 25d28: 4658 mov r0, fp - 25d2a: 47d0 blx sl + 25e0c: 9c06 ldr r4, [sp, #24] + 25e0e: 9400 str r4, [sp, #0] + 25e10: f8d0 a038 ldr.w sl, [r0, #56] ; 0x38 + 25e14: 4658 mov r0, fp + 25e16: 47d0 blx sl if (y != py) { - 25d2c: 42b7 cmp r7, r6 - 25d2e: d02d beq.n 25d8c + 25e18: 42b7 cmp r7, r6 + 25e1a: d02d beq.n 25e78 if (corners & 1) - 25d30: 9b07 ldr r3, [sp, #28] - 25d32: b19b cbz r3, 25d5c + 25e1c: 9b07 ldr r3, [sp, #28] + 25e1e: b19b cbz r3, 25e48 writeFastVLine(x0 + py, y0 - px, 2 * px + delta, color); - 25d34: f8db 0000 ldr.w r0, [fp] - 25d38: fa0f f288 sxth.w r2, r8 - 25d3c: 9b05 ldr r3, [sp, #20] - 25d3e: f8d0 a020 ldr.w sl, [r0, #32] - 25d42: 4c25 ldr r4, [pc, #148] ; (25dd8 ) - 25d44: 1999 adds r1, r3, r6 - 25d46: fa0f f389 sxth.w r3, r9 - 25d4a: 45a2 cmp sl, r4 - 25d4c: b209 sxth r1, r1 - 25d4e: d133 bne.n 25db8 + 25e20: f8db 0000 ldr.w r0, [fp] + 25e24: fa0f f288 sxth.w r2, r8 + 25e28: 9b05 ldr r3, [sp, #20] + 25e2a: f8d0 a020 ldr.w sl, [r0, #32] + 25e2e: 4c25 ldr r4, [pc, #148] ; (25ec4 ) + 25e30: 1999 adds r1, r3, r6 + 25e32: fa0f f389 sxth.w r3, r9 + 25e36: 45a2 cmp sl, r4 + 25e38: b209 sxth r1, r1 + 25e3a: d133 bne.n 25ea4 drawFastVLine(x, y, h, color); - 25d50: 9c06 ldr r4, [sp, #24] - 25d52: 9400 str r4, [sp, #0] - 25d54: f8d0 a038 ldr.w sl, [r0, #56] ; 0x38 - 25d58: 4658 mov r0, fp - 25d5a: 47d0 blx sl + 25e3c: 9c06 ldr r4, [sp, #24] + 25e3e: 9400 str r4, [sp, #0] + 25e40: f8d0 a038 ldr.w sl, [r0, #56] ; 0x38 + 25e44: 4658 mov r0, fp + 25e46: 47d0 blx sl if (corners & 2) - 25d5c: 9b04 ldr r3, [sp, #16] - 25d5e: 079b lsls r3, r3, #30 - 25d60: d525 bpl.n 25dae + 25e48: 9b04 ldr r3, [sp, #16] + 25e4a: 079b lsls r3, r3, #30 + 25e4c: d525 bpl.n 25e9a writeFastVLine(x0 - py, y0 - px, 2 * px + delta, color); - 25d62: 9b05 ldr r3, [sp, #20] - 25d64: fa0f f288 sxth.w r2, r8 - 25d68: 481b ldr r0, [pc, #108] ; (25dd8 ) - 25d6a: 1b9e subs r6, r3, r6 - 25d6c: fa0f f389 sxth.w r3, r9 - 25d70: b231 sxth r1, r6 - 25d72: f8db 6000 ldr.w r6, [fp] - 25d76: f8d6 a020 ldr.w sl, [r6, #32] - 25d7a: 4582 cmp sl, r0 + 25e4e: 9b05 ldr r3, [sp, #20] + 25e50: fa0f f288 sxth.w r2, r8 + 25e54: 481b ldr r0, [pc, #108] ; (25ec4 ) + 25e56: 1b9e subs r6, r3, r6 + 25e58: fa0f f389 sxth.w r3, r9 + 25e5c: b231 sxth r1, r6 + 25e5e: f8db 6000 ldr.w r6, [fp] + 25e62: f8d6 a020 ldr.w sl, [r6, #32] + 25e66: 4582 cmp sl, r0 drawFastVLine(x, y, h, color); - 25d7c: 9806 ldr r0, [sp, #24] - 25d7e: 9000 str r0, [sp, #0] + 25e68: 9806 ldr r0, [sp, #24] + 25e6a: 9000 str r0, [sp, #0] writeFastVLine(x0 - py, y0 - px, 2 * px + delta, color); - 25d80: 4658 mov r0, fp + 25e6c: 4658 mov r0, fp drawFastVLine(x, y, h, color); - 25d82: bf08 it eq - 25d84: f8d6 a038 ldreq.w sl, [r6, #56] ; 0x38 + 25e6e: bf08 it eq + 25e70: f8d6 a038 ldreq.w sl, [r6, #56] ; 0x38 writeFastVLine(x0 - py, y0 - px, 2 * px + delta, color); - 25d88: 463e mov r6, r7 - 25d8a: 47d0 blx sl + 25e74: 463e mov r6, r7 + 25e76: 47d0 blx sl while (x < y) { - 25d8c: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff - 25d90: f109 0902 add.w r9, r9, #2 - 25d94: 42ae cmp r6, r5 - 25d96: fa1f f888 uxth.w r8, r8 - 25d9a: fa1f f989 uxth.w r9, r9 - 25d9e: dd08 ble.n 25db2 + 25e78: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff + 25e7c: f109 0902 add.w r9, r9, #2 + 25e80: 42ae cmp r6, r5 + 25e82: fa1f f888 uxth.w r8, r8 + 25e86: fa1f f989 uxth.w r9, r9 + 25e8a: dd08 ble.n 25e9e if (f >= 0) { - 25da0: 9b02 ldr r3, [sp, #8] - 25da2: 2b00 cmp r3, #0 - 25da4: f6bf af73 bge.w 25c8e + 25e8c: 9b02 ldr r3, [sp, #8] + 25e8e: 2b00 cmp r3, #0 + 25e90: f6bf af73 bge.w 25d7a f += ddF_y; - 25da8: b29c uxth r4, r3 - 25daa: 4637 mov r7, r6 - 25dac: e779 b.n 25ca2 - 25dae: 463e mov r6, r7 - 25db0: e7ec b.n 25d8c -} - 25db2: b00b add sp, #44 ; 0x2c - 25db4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 25e94: b29c uxth r4, r3 + 25e96: 4637 mov r7, r6 + 25e98: e779 b.n 25d8e + 25e9a: 463e mov r6, r7 + 25e9c: e7ec b.n 25e78 +} + 25e9e: b00b add sp, #44 ; 0x2c + 25ea0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} writeFastVLine(x0 + py, y0 - px, 2 * px + delta, color); - 25db8: 9806 ldr r0, [sp, #24] - 25dba: 9000 str r0, [sp, #0] - 25dbc: 4658 mov r0, fp - 25dbe: 47d0 blx sl - 25dc0: e7cc b.n 25d5c + 25ea4: 9806 ldr r0, [sp, #24] + 25ea6: 9000 str r0, [sp, #0] + 25ea8: 4658 mov r0, fp + 25eaa: 47d0 blx sl + 25eac: e7cc b.n 25e48 writeFastVLine(x0 + x, y0 - y, 2 * y + delta, color); - 25dc2: 9806 ldr r0, [sp, #24] - 25dc4: 4663 mov r3, ip - 25dc6: 9000 str r0, [sp, #0] - 25dc8: 4658 mov r0, fp - 25dca: 47a0 blx r4 - 25dcc: e791 b.n 25cf2 + 25eae: 9806 ldr r0, [sp, #24] + 25eb0: 4663 mov r3, ip + 25eb2: 9000 str r0, [sp, #0] + 25eb4: 4658 mov r0, fp + 25eb6: 47a0 blx r4 + 25eb8: e791 b.n 25dde writeFastVLine(x0 - x, y0 - y, 2 * y + delta, color); - 25dce: 9806 ldr r0, [sp, #24] - 25dd0: 9000 str r0, [sp, #0] - 25dd2: 4658 mov r0, fp - 25dd4: 47d0 blx sl - 25dd6: e7a9 b.n 25d2c - 25dd8: 000257b1 .word 0x000257b1 - -00025ddc : + 25eba: 9806 ldr r0, [sp, #24] + 25ebc: 9000 str r0, [sp, #0] + 25ebe: 4658 mov r0, fp + 25ec0: 47d0 blx sl + 25ec2: e7a9 b.n 25e18 + 25ec4: 0002589d .word 0x0002589d + +00025ec8 : uint16_t color) { - 25ddc: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 25ec8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} startWrite(); - 25de0: f8d0 e000 ldr.w lr, [r0] + 25ecc: f8d0 e000 ldr.w lr, [r0] uint16_t color) { - 25de4: 461e mov r6, r3 - 25de6: 4f1f ldr r7, [pc, #124] ; (25e64 ) - 25de8: b087 sub sp, #28 + 25ed0: 461e mov r6, r3 + 25ed2: 4f1f ldr r7, [pc, #124] ; (25f50 ) + 25ed4: b087 sub sp, #28 startWrite(); - 25dea: f8de 3014 ldr.w r3, [lr, #20] + 25ed6: f8de 3014 ldr.w r3, [lr, #20] uint16_t color) { - 25dee: 4604 mov r4, r0 - 25df0: 4615 mov r5, r2 - 25df2: f8bd 8038 ldrh.w r8, [sp, #56] ; 0x38 - 25df6: 42bb cmp r3, r7 - 25df8: d128 bne.n 25e4c + 25eda: 4604 mov r4, r0 + 25edc: 4615 mov r5, r2 + 25ede: f8bd 8038 ldrh.w r8, [sp, #56] ; 0x38 + 25ee2: 42bb cmp r3, r7 + 25ee4: d128 bne.n 25f38 writeFastVLine(x0, y0 - r, 2 * r + 1, color); - 25dfa: fa1f fc86 uxth.w ip, r6 - 25dfe: f8de 9020 ldr.w r9, [lr, #32] - 25e02: 4819 ldr r0, [pc, #100] ; (25e68 ) - 25e04: ea4f 034c mov.w r3, ip, lsl #1 - 25e08: eba5 020c sub.w r2, r5, ip - 25e0c: 4581 cmp r9, r0 + 25ee6: fa1f fc86 uxth.w ip, r6 + 25eea: f8de 9020 ldr.w r9, [lr, #32] + 25eee: 4819 ldr r0, [pc, #100] ; (25f54 ) + 25ef0: ea4f 034c mov.w r3, ip, lsl #1 + 25ef4: eba5 020c sub.w r2, r5, ip + 25ef8: 4581 cmp r9, r0 drawFastVLine(x, y, h, color); - 25e0e: f8cd 8000 str.w r8, [sp] + 25efa: f8cd 8000 str.w r8, [sp] writeFastVLine(x0, y0 - r, 2 * r + 1, color); - 25e12: f103 0301 add.w r3, r3, #1 - 25e16: b212 sxth r2, r2 + 25efe: f103 0301 add.w r3, r3, #1 + 25f02: b212 sxth r2, r2 drawFastVLine(x, y, h, color); - 25e18: bf08 it eq - 25e1a: f8de 9038 ldreq.w r9, [lr, #56] ; 0x38 + 25f04: bf08 it eq + 25f06: f8de 9038 ldreq.w r9, [lr, #56] ; 0x38 writeFastVLine(x0, y0 - r, 2 * r + 1, color); - 25e1e: 4620 mov r0, r4 - 25e20: b21b sxth r3, r3 - 25e22: 9105 str r1, [sp, #20] - 25e24: 47c8 blx r9 + 25f0a: 4620 mov r0, r4 + 25f0c: b21b sxth r3, r3 + 25f0e: 9105 str r1, [sp, #20] + 25f10: 47c8 blx r9 fillCircleHelper(x0, y0, r, 3, 0, color); - 25e26: 462a mov r2, r5 - 25e28: 2003 movs r0, #3 - 25e2a: 2500 movs r5, #0 - 25e2c: 4633 mov r3, r6 + 25f12: 462a mov r2, r5 + 25f14: 2003 movs r0, #3 + 25f16: 2500 movs r5, #0 + 25f18: 4633 mov r3, r6 writeFastVLine(x0, y0 - r, 2 * r + 1, color); - 25e2e: 9905 ldr r1, [sp, #20] + 25f1a: 9905 ldr r1, [sp, #20] fillCircleHelper(x0, y0, r, 3, 0, color); - 25e30: f8cd 8008 str.w r8, [sp, #8] - 25e34: e9cd 0500 strd r0, r5, [sp] - 25e38: 4620 mov r0, r4 - 25e3a: f7ff feff bl 25c3c + 25f1c: f8cd 8008 str.w r8, [sp, #8] + 25f20: e9cd 0500 strd r0, r5, [sp] + 25f24: 4620 mov r0, r4 + 25f26: f7ff feff bl 25d28 endWrite(); - 25e3e: 6823 ldr r3, [r4, #0] - 25e40: 6adb ldr r3, [r3, #44] ; 0x2c - 25e42: 42bb cmp r3, r7 - 25e44: d108 bne.n 25e58 -} - 25e46: b007 add sp, #28 - 25e48: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 25e4c: 9105 str r1, [sp, #20] + 25f2a: 6823 ldr r3, [r4, #0] + 25f2c: 6adb ldr r3, [r3, #44] ; 0x2c + 25f2e: 42bb cmp r3, r7 + 25f30: d108 bne.n 25f44 +} + 25f32: b007 add sp, #28 + 25f34: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 25f38: 9105 str r1, [sp, #20] startWrite(); - 25e4e: 4798 blx r3 + 25f3a: 4798 blx r3 writeFastVLine(x0, y0 - r, 2 * r + 1, color); - 25e50: f8d4 e000 ldr.w lr, [r4] - 25e54: 9905 ldr r1, [sp, #20] - 25e56: e7d0 b.n 25dfa + 25f3c: f8d4 e000 ldr.w lr, [r4] + 25f40: 9905 ldr r1, [sp, #20] + 25f42: e7d0 b.n 25ee6 endWrite(); - 25e58: 4620 mov r0, r4 + 25f44: 4620 mov r0, r4 } - 25e5a: b007 add sp, #28 - 25e5c: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} + 25f46: b007 add sp, #28 + 25f48: e8bd 43f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, lr} endWrite(); - 25e60: 4718 bx r3 - 25e62: bf00 nop - 25e64: 0002579d .word 0x0002579d - 25e68: 000257b1 .word 0x000257b1 + 25f4c: 4718 bx r3 + 25f4e: bf00 nop + 25f50: 00025889 .word 0x00025889 + 25f54: 0002589d .word 0x0002589d -00025e6c : +00025f58 : int16_t r, uint16_t color) { - 25e6c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 25e70: b089 sub sp, #36 ; 0x24 - 25e72: 461f mov r7, r3 - 25e74: 4682 mov sl, r0 - 25e76: 460e mov r6, r1 - 25e78: f9bd 4048 ldrsh.w r4, [sp, #72] ; 0x48 - 25e7c: f8bd 1050 ldrh.w r1, [sp, #80] ; 0x50 + 25f58: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 25f5c: b089 sub sp, #36 ; 0x24 + 25f5e: 461f mov r7, r3 + 25f60: 4682 mov sl, r0 + 25f62: 460e mov r6, r1 + 25f64: f9bd 4048 ldrsh.w r4, [sp, #72] ; 0x48 + 25f68: f8bd 1050 ldrh.w r1, [sp, #80] ; 0x50 int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis - 25e80: 429c cmp r4, r3 - 25e82: 4625 mov r5, r4 + 25f6c: 429c cmp r4, r3 + 25f6e: 4625 mov r5, r4 startWrite(); - 25e84: 6800 ldr r0, [r0, #0] + 25f70: 6800 ldr r0, [r0, #0] int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis - 25e86: bfa8 it ge - 25e88: 461d movge r5, r3 + 25f72: bfa8 it ge + 25f74: 461d movge r5, r3 int16_t r, uint16_t color) { - 25e8a: f9bd 304c ldrsh.w r3, [sp, #76] ; 0x4c - 25e8e: 9105 str r1, [sp, #20] + 25f76: f9bd 304c ldrsh.w r3, [sp, #76] ; 0x4c + 25f7a: 9105 str r1, [sp, #20] int16_t max_radius = ((w < h) ? w : h) / 2; // 1/2 minor axis - 25e90: 2d00 cmp r5, #0 - 25e92: 492f ldr r1, [pc, #188] ; (25f50 ) - 25e94: bfb8 it lt - 25e96: 3501 addlt r5, #1 - 25e98: 106d asrs r5, r5, #1 - 25e9a: 429d cmp r5, r3 - 25e9c: bfa8 it ge - 25e9e: 461d movge r5, r3 + 25f7c: 2d00 cmp r5, #0 + 25f7e: 492f ldr r1, [pc, #188] ; (2603c ) + 25f80: bfb8 it lt + 25f82: 3501 addlt r5, #1 + 25f84: 106d asrs r5, r5, #1 + 25f86: 429d cmp r5, r3 + 25f88: bfa8 it ge + 25f8a: 461d movge r5, r3 startWrite(); - 25ea0: 6943 ldr r3, [r0, #20] - 25ea2: 428b cmp r3, r1 - 25ea4: d147 bne.n 25f36 + 25f8c: 6943 ldr r3, [r0, #20] + 25f8e: 428b cmp r3, r1 + 25f90: d147 bne.n 26022 writeFillRect(x + r, y, w - 2 * r, h, color); - 25ea6: fa1f f885 uxth.w r8, r5 - 25eaa: f8d0 b01c ldr.w fp, [r0, #28] - 25eae: b2b6 uxth r6, r6 - 25eb0: 4928 ldr r1, [pc, #160] ; (25f54 ) - 25eb2: ea4f 0948 mov.w r9, r8, lsl #1 - 25eb6: 9207 str r2, [sp, #28] - 25eb8: b2bb uxth r3, r7 - 25eba: eb06 0708 add.w r7, r6, r8 - 25ebe: fa1f f989 uxth.w r9, r9 - 25ec2: 458b cmp fp, r1 - 25ec4: b23f sxth r7, r7 + 25f92: fa1f f885 uxth.w r8, r5 + 25f96: f8d0 b01c ldr.w fp, [r0, #28] + 25f9a: b2b6 uxth r6, r6 + 25f9c: 4928 ldr r1, [pc, #160] ; (26040 ) + 25f9e: ea4f 0948 mov.w r9, r8, lsl #1 + 25fa2: 9207 str r2, [sp, #28] + 25fa4: b2bb uxth r3, r7 + 25fa6: eb06 0708 add.w r7, r6, r8 + 25faa: fa1f f989 uxth.w r9, r9 + 25fae: 458b cmp fp, r1 + 25fb0: b23f sxth r7, r7 fillRect(x, y, w, h, color); - 25ec6: 9905 ldr r1, [sp, #20] + 25fb2: 9905 ldr r1, [sp, #20] writeFillRect(x + r, y, w - 2 * r, h, color); - 25ec8: 9306 str r3, [sp, #24] - 25eca: eba3 0309 sub.w r3, r3, r9 + 25fb4: 9306 str r3, [sp, #24] + 25fb6: eba3 0309 sub.w r3, r3, r9 fillCircleHelper(x + w - r - 1, y + r, r, 1, h - 2 * r - 1, color); - 25ece: f106 36ff add.w r6, r6, #4294967295 ; 0xffffffff + 25fba: f106 36ff add.w r6, r6, #4294967295 ; 0xffffffff writeFillRect(x + r, y, w - 2 * r, h, color); - 25ed2: b21b sxth r3, r3 + 25fbe: b21b sxth r3, r3 fillRect(x, y, w, h, color); - 25ed4: e9cd 4100 strd r4, r1, [sp] + 25fc0: e9cd 4100 strd r4, r1, [sp] writeFillRect(x + r, y, w - 2 * r, h, color); - 25ed8: 4639 mov r1, r7 + 25fc4: 4639 mov r1, r7 fillRect(x, y, w, h, color); - 25eda: bf08 it eq - 25edc: f8d0 b040 ldreq.w fp, [r0, #64] ; 0x40 + 25fc6: bf08 it eq + 25fc8: f8d0 b040 ldreq.w fp, [r0, #64] ; 0x40 writeFillRect(x + r, y, w - 2 * r, h, color); - 25ee0: 4650 mov r0, sl + 25fcc: 4650 mov r0, sl fillCircleHelper(x + w - r - 1, y + r, r, 1, h - 2 * r - 1, color); - 25ee2: 3c01 subs r4, #1 + 25fce: 3c01 subs r4, #1 writeFillRect(x + r, y, w - 2 * r, h, color); - 25ee4: 47d8 blx fp + 25fd0: 47d8 blx fp fillCircleHelper(x + w - r - 1, y + r, r, 1, h - 2 * r - 1, color); - 25ee6: 9906 ldr r1, [sp, #24] + 25fd2: 9906 ldr r1, [sp, #24] writeFillRect(x + r, y, w - 2 * r, h, color); - 25ee8: 9a07 ldr r2, [sp, #28] + 25fd4: 9a07 ldr r2, [sp, #28] fillCircleHelper(x + w - r - 1, y + r, r, 1, h - 2 * r - 1, color); - 25eea: eba4 0409 sub.w r4, r4, r9 - 25eee: 4431 add r1, r6 - 25ef0: 2301 movs r3, #1 - 25ef2: 4442 add r2, r8 - 25ef4: 9e05 ldr r6, [sp, #20] - 25ef6: b224 sxth r4, r4 - 25ef8: eba1 0108 sub.w r1, r1, r8 - 25efc: b212 sxth r2, r2 - 25efe: 4650 mov r0, sl - 25f00: b209 sxth r1, r1 - 25f02: 9401 str r4, [sp, #4] - 25f04: 9300 str r3, [sp, #0] - 25f06: 462b mov r3, r5 - 25f08: 9602 str r6, [sp, #8] - 25f0a: 9205 str r2, [sp, #20] - 25f0c: f7ff fe96 bl 25c3c + 25fd6: eba4 0409 sub.w r4, r4, r9 + 25fda: 4431 add r1, r6 + 25fdc: 2301 movs r3, #1 + 25fde: 4442 add r2, r8 + 25fe0: 9e05 ldr r6, [sp, #20] + 25fe2: b224 sxth r4, r4 + 25fe4: eba1 0108 sub.w r1, r1, r8 + 25fe8: b212 sxth r2, r2 + 25fea: 4650 mov r0, sl + 25fec: b209 sxth r1, r1 + 25fee: 9401 str r4, [sp, #4] + 25ff0: 9300 str r3, [sp, #0] + 25ff2: 462b mov r3, r5 + 25ff4: 9602 str r6, [sp, #8] + 25ff6: 9205 str r2, [sp, #20] + 25ff8: f7ff fe96 bl 25d28 fillCircleHelper(x + r, y + r, r, 2, h - 2 * r - 1, color); - 25f10: 462b mov r3, r5 - 25f12: 9a05 ldr r2, [sp, #20] - 25f14: 4639 mov r1, r7 - 25f16: 4650 mov r0, sl - 25f18: e9cd 4601 strd r4, r6, [sp, #4] - 25f1c: 2402 movs r4, #2 - 25f1e: 9400 str r4, [sp, #0] - 25f20: f7ff fe8c bl 25c3c + 25ffc: 462b mov r3, r5 + 25ffe: 9a05 ldr r2, [sp, #20] + 26000: 4639 mov r1, r7 + 26002: 4650 mov r0, sl + 26004: e9cd 4601 strd r4, r6, [sp, #4] + 26008: 2402 movs r4, #2 + 2600a: 9400 str r4, [sp, #0] + 2600c: f7ff fe8c bl 25d28 endWrite(); - 25f24: f8da 3000 ldr.w r3, [sl] - 25f28: 4a09 ldr r2, [pc, #36] ; (25f50 ) - 25f2a: 6adb ldr r3, [r3, #44] ; 0x2c - 25f2c: 4293 cmp r3, r2 - 25f2e: d109 bne.n 25f44 -} - 25f30: b009 add sp, #36 ; 0x24 - 25f32: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 26010: f8da 3000 ldr.w r3, [sl] + 26014: 4a09 ldr r2, [pc, #36] ; (2603c ) + 26016: 6adb ldr r3, [r3, #44] ; 0x2c + 26018: 4293 cmp r3, r2 + 2601a: d109 bne.n 26030 +} + 2601c: b009 add sp, #36 ; 0x24 + 2601e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} startWrite(); - 25f36: 4650 mov r0, sl - 25f38: 9206 str r2, [sp, #24] - 25f3a: 4798 blx r3 + 26022: 4650 mov r0, sl + 26024: 9206 str r2, [sp, #24] + 26026: 4798 blx r3 writeFillRect(x + r, y, w - 2 * r, h, color); - 25f3c: f8da 0000 ldr.w r0, [sl] - 25f40: 9a06 ldr r2, [sp, #24] - 25f42: e7b0 b.n 25ea6 + 26028: f8da 0000 ldr.w r0, [sl] + 2602c: 9a06 ldr r2, [sp, #24] + 2602e: e7b0 b.n 25f92 endWrite(); - 25f44: 4650 mov r0, sl + 26030: 4650 mov r0, sl } - 25f46: b009 add sp, #36 ; 0x24 - 25f48: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 26032: b009 add sp, #36 ; 0x24 + 26034: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} endWrite(); - 25f4c: 4718 bx r3 - 25f4e: bf00 nop - 25f50: 0002579d .word 0x0002579d - 25f54: 000257d9 .word 0x000257d9 + 26038: 4718 bx r3 + 2603a: bf00 nop + 2603c: 00025889 .word 0x00025889 + 26040: 000258c5 .word 0x000258c5 -00025f58 : +00026044 : int16_t x2, int16_t y2, uint16_t color) { - 25f58: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 25f5c: b08f sub sp, #60 ; 0x3c - 25f5e: 4694 mov ip, r2 - 25f60: 4605 mov r5, r0 - 25f62: 461f mov r7, r3 - 25f64: 920c str r2, [sp, #48] ; 0x30 - 25f66: 460e mov r6, r1 - 25f68: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 - 25f6c: f9bd 3068 ldrsh.w r3, [sp, #104] ; 0x68 - 25f70: f8bd 006c ldrh.w r0, [sp, #108] ; 0x6c + 26044: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 26048: b08f sub sp, #60 ; 0x3c + 2604a: 4694 mov ip, r2 + 2604c: 4605 mov r5, r0 + 2604e: 461f mov r7, r3 + 26050: 920c str r2, [sp, #48] ; 0x30 + 26052: 460e mov r6, r1 + 26054: f9bd 2060 ldrsh.w r2, [sp, #96] ; 0x60 + 26058: f9bd 3068 ldrsh.w r3, [sp, #104] ; 0x68 + 2605c: f8bd 006c ldrh.w r0, [sp, #108] ; 0x6c if (y0 > y1) { - 25f74: 4594 cmp ip, r2 + 26060: 4594 cmp ip, r2 int16_t x2, int16_t y2, uint16_t color) { - 25f76: f9bd 4064 ldrsh.w r4, [sp, #100] ; 0x64 - 25f7a: 920d str r2, [sp, #52] ; 0x34 - 25f7c: 9305 str r3, [sp, #20] - 25f7e: 9003 str r0, [sp, #12] + 26062: f9bd 4064 ldrsh.w r4, [sp, #100] ; 0x64 + 26066: 920d str r2, [sp, #52] ; 0x34 + 26068: 9305 str r3, [sp, #20] + 2606a: 9003 str r0, [sp, #12] if (y0 > y1) { - 25f80: f340 80e3 ble.w 2614a + 2606c: f340 80e3 ble.w 26236 if (y1 > y2) { - 25f84: 459c cmp ip, r3 - 25f86: f340 8117 ble.w 261b8 - 25f8a: 463b mov r3, r7 + 26070: 459c cmp ip, r3 + 26072: f340 8117 ble.w 262a4 + 26076: 463b mov r3, r7 _swap_int16_t(x0, x1); - 25f8c: 4637 mov r7, r6 - 25f8e: f8cd c034 str.w ip, [sp, #52] ; 0x34 - 25f92: 461e mov r6, r3 - 25f94: 920c str r2, [sp, #48] ; 0x30 + 26078: 4637 mov r7, r6 + 2607a: f8cd c034 str.w ip, [sp, #52] ; 0x34 + 2607e: 461e mov r6, r3 + 26080: 920c str r2, [sp, #48] ; 0x30 if (y0 > y1) { - 25f96: 9a0c ldr r2, [sp, #48] ; 0x30 - 25f98: 9905 ldr r1, [sp, #20] - 25f9a: 428a cmp r2, r1 - 25f9c: f340 811f ble.w 261de - 25fa0: 4633 mov r3, r6 - 25fa2: 910c str r1, [sp, #48] ; 0x30 - 25fa4: 4626 mov r6, r4 - 25fa6: 990d ldr r1, [sp, #52] ; 0x34 - 25fa8: 463c mov r4, r7 - 25faa: 461f mov r7, r3 - 25fac: 9105 str r1, [sp, #20] - 25fae: 920d str r2, [sp, #52] ; 0x34 + 26082: 9a0c ldr r2, [sp, #48] ; 0x30 + 26084: 9905 ldr r1, [sp, #20] + 26086: 428a cmp r2, r1 + 26088: f340 811f ble.w 262ca + 2608c: 4633 mov r3, r6 + 2608e: 910c str r1, [sp, #48] ; 0x30 + 26090: 4626 mov r6, r4 + 26092: 990d ldr r1, [sp, #52] ; 0x34 + 26094: 463c mov r4, r7 + 26096: 461f mov r7, r3 + 26098: 9105 str r1, [sp, #20] + 2609a: 920d str r2, [sp, #52] ; 0x34 startWrite(); - 25fb0: f8d5 c000 ldr.w ip, [r5] - 25fb4: 4a8e ldr r2, [pc, #568] ; (261f0 ) - 25fb6: f8dc 3014 ldr.w r3, [ip, #20] - 25fba: 4293 cmp r3, r2 - 25fbc: f040 80d2 bne.w 26164 + 2609c: f8d5 c000 ldr.w ip, [r5] + 260a0: 4a8e ldr r2, [pc, #568] ; (262dc ) + 260a2: f8dc 3014 ldr.w r3, [ip, #20] + 260a6: 4293 cmp r3, r2 + 260a8: f040 80d2 bne.w 26250 if (y0 == y2) { // Handle awkward all-on-same-line case as its own thing - 25fc0: 9b0c ldr r3, [sp, #48] ; 0x30 - 25fc2: 9a05 ldr r2, [sp, #20] - 25fc4: 4293 cmp r3, r2 - 25fc6: f000 80d6 beq.w 26176 + 260ac: 9b0c ldr r3, [sp, #48] ; 0x30 + 260ae: 9a05 ldr r2, [sp, #20] + 260b0: 4293 cmp r3, r2 + 260b2: f000 80d6 beq.w 26262 int16_t dx01 = x1 - x0, dy01 = y1 - y0, dx02 = x2 - x0, dy02 = y2 - y0, - 25fca: b2b8 uxth r0, r7 - 25fcc: f8dd e034 ldr.w lr, [sp, #52] ; 0x34 - 25fd0: b2b6 uxth r6, r6 - 25fd2: 9f05 ldr r7, [sp, #20] - 25fd4: b2a3 uxth r3, r4 - 25fd6: 9007 str r0, [sp, #28] - 25fd8: 4604 mov r4, r0 - 25fda: 1b80 subs r0, r0, r6 - 25fdc: fa1f fa8e uxth.w sl, lr - 25fe0: f8bd 1030 ldrh.w r1, [sp, #48] ; 0x30 - 25fe4: b2ba uxth r2, r7 + 260b6: b2b8 uxth r0, r7 + 260b8: f8dd e034 ldr.w lr, [sp, #52] ; 0x34 + 260bc: b2b6 uxth r6, r6 + 260be: 9f05 ldr r7, [sp, #20] + 260c0: b2a3 uxth r3, r4 + 260c2: 9007 str r0, [sp, #28] + 260c4: 4604 mov r4, r0 + 260c6: 1b80 subs r0, r0, r6 + 260c8: fa1f fa8e uxth.w sl, lr + 260cc: f8bd 1030 ldrh.w r1, [sp, #48] ; 0x30 + 260d0: b2ba uxth r2, r7 if (y1 == y2) - 25fe6: 45be cmp lr, r7 + 260d2: 45be cmp lr, r7 int16_t dx01 = x1 - x0, dy01 = y1 - y0, dx02 = x2 - x0, dy02 = y2 - y0, - 25fe8: b200 sxth r0, r0 - 25fea: 9008 str r0, [sp, #32] - 25fec: ebaa 0001 sub.w r0, sl, r1 - 25ff0: eba2 0101 sub.w r1, r2, r1 + 260d4: b200 sxth r0, r0 + 260d6: 9008 str r0, [sp, #32] + 260d8: ebaa 0001 sub.w r0, sl, r1 + 260dc: eba2 0101 sub.w r1, r2, r1 dx12 = x2 - x1, dy12 = y2 - y1; - 25ff4: eba2 020a sub.w r2, r2, sl + 260e0: eba2 020a sub.w r2, r2, sl int16_t dx01 = x1 - x0, dy01 = y1 - y0, dx02 = x2 - x0, dy02 = y2 - y0, - 25ff8: b200 sxth r0, r0 + 260e4: b200 sxth r0, r0 dx12 = x2 - x1, dy12 = y2 - y1; - 25ffa: b212 sxth r2, r2 + 260e6: b212 sxth r2, r2 int16_t dx01 = x1 - x0, dy01 = y1 - y0, dx02 = x2 - x0, dy02 = y2 - y0, - 25ffc: b209 sxth r1, r1 - 25ffe: 9009 str r0, [sp, #36] ; 0x24 + 260e8: b209 sxth r1, r1 + 260ea: 9009 str r0, [sp, #36] ; 0x24 dx12 = x2 - x1, dy12 = y2 - y1; - 26000: 920a str r2, [sp, #40] ; 0x28 + 260ec: 920a str r2, [sp, #40] ; 0x28 int16_t dx01 = x1 - x0, dy01 = y1 - y0, dx02 = x2 - x0, dy02 = y2 - y0, - 26002: eba3 0206 sub.w r2, r3, r6 + 260ee: eba3 0206 sub.w r2, r3, r6 dx12 = x2 - x1, dy12 = y2 - y1; - 26006: eba3 0304 sub.w r3, r3, r4 + 260f2: eba3 0304 sub.w r3, r3, r4 int16_t dx01 = x1 - x0, dy01 = y1 - y0, dx02 = x2 - x0, dy02 = y2 - y0, - 2600a: 9104 str r1, [sp, #16] - 2600c: fa0f f982 sxth.w r9, r2 + 260f6: 9104 str r1, [sp, #16] + 260f8: fa0f f982 sxth.w r9, r2 dx12 = x2 - x1, dy12 = y2 - y1; - 26010: b21b sxth r3, r3 - 26012: 9306 str r3, [sp, #24] + 260fc: b21b sxth r3, r3 + 260fe: 9306 str r3, [sp, #24] if (y1 == y2) - 26014: f000 80d8 beq.w 261c8 + 26100: f000 80d8 beq.w 262b4 last = y1 - 1; // Skip it - 26018: f10a 3aff add.w sl, sl, #4294967295 ; 0xffffffff - 2601c: fa0f fa8a sxth.w sl, sl + 26104: f10a 3aff add.w sl, sl, #4294967295 ; 0xffffffff + 26108: fa0f fa8a sxth.w sl, sl for (y = y0; y <= last; y++) { - 26020: 9c0c ldr r4, [sp, #48] ; 0x30 - 26022: 4554 cmp r4, sl - 26024: f300 80d9 bgt.w 261da + 2610c: 9c0c ldr r4, [sp, #48] ; 0x30 + 2610e: 4554 cmp r4, sl + 26110: f300 80d9 bgt.w 262c6 int32_t sa = 0, sb = 0; - 26028: 2700 movs r7, #0 - 2602a: 4b72 ldr r3, [pc, #456] ; (261f4 ) - 2602c: 46ab mov fp, r5 - 2602e: 46b8 mov r8, r7 - 26030: 930b str r3, [sp, #44] ; 0x2c - 26032: e00b b.n 2604c - 26034: 3401 adds r4, #1 + 26114: 2700 movs r7, #0 + 26116: 4b72 ldr r3, [pc, #456] ; (262e0 ) + 26118: 46ab mov fp, r5 + 2611a: 46b8 mov r8, r7 + 2611c: 930b str r3, [sp, #44] ; 0x2c + 2611e: e00b b.n 26138 + 26120: 3401 adds r4, #1 drawFastHLine(x, y, w, color); - 26036: 9803 ldr r0, [sp, #12] - 26038: b224 sxth r4, r4 - 2603a: 9000 str r0, [sp, #0] - 2603c: 4658 mov r0, fp - 2603e: f8dc 503c ldr.w r5, [ip, #60] ; 0x3c - 26042: 47a8 blx r5 + 26122: 9803 ldr r0, [sp, #12] + 26124: b224 sxth r4, r4 + 26126: 9000 str r0, [sp, #0] + 26128: 4658 mov r0, fp + 2612a: f8dc 503c ldr.w r5, [ip, #60] ; 0x3c + 2612e: 47a8 blx r5 for (y = y0; y <= last; y++) { - 26044: 45a2 cmp sl, r4 - 26046: db28 blt.n 2609a + 26130: 45a2 cmp sl, r4 + 26132: db28 blt.n 26186 endWrite(); - 26048: f8db c000 ldr.w ip, [fp] + 26134: f8db c000 ldr.w ip, [fp] a = x0 + sa / dy01; - 2604c: 9b09 ldr r3, [sp, #36] ; 0x24 + 26138: 9b09 ldr r3, [sp, #36] ; 0x24 drawFastHLine(x, y, w, color); - 2604e: 4622 mov r2, r4 + 2613a: 4622 mov r2, r4 a = x0 + sa / dy01; - 26050: fb98 f0f3 sdiv r0, r8, r3 + 2613c: fb98 f0f3 sdiv r0, r8, r3 sa += dx01; - 26054: 9b08 ldr r3, [sp, #32] + 26140: 9b08 ldr r3, [sp, #32] a = x0 + sa / dy01; - 26056: 4430 add r0, r6 + 26142: 4430 add r0, r6 sa += dx01; - 26058: 4498 add r8, r3 + 26144: 4498 add r8, r3 b = x0 + sb / dy02; - 2605a: 9b04 ldr r3, [sp, #16] + 26146: 9b04 ldr r3, [sp, #16] a = x0 + sa / dy01; - 2605c: b201 sxth r1, r0 - 2605e: b280 uxth r0, r0 + 26148: b201 sxth r1, r0 + 2614a: b280 uxth r0, r0 b = x0 + sb / dy02; - 26060: fb97 f3f3 sdiv r3, r7, r3 - 26064: 4433 add r3, r6 + 2614c: fb97 f3f3 sdiv r3, r7, r3 + 26150: 4433 add r3, r6 sb += dx02; - 26066: 444f add r7, r9 + 26152: 444f add r7, r9 b = x0 + sb / dy02; - 26068: b21d sxth r5, r3 - 2606a: b29b uxth r3, r3 + 26154: b21d sxth r5, r3 + 26156: b29b uxth r3, r3 if (a > b) - 2606c: 42a9 cmp r1, r5 - 2606e: 469e mov lr, r3 - 26070: dd02 ble.n 26078 - 26072: 4603 mov r3, r0 - 26074: 4629 mov r1, r5 - 26076: 4670 mov r0, lr + 26158: 42a9 cmp r1, r5 + 2615a: 469e mov lr, r3 + 2615c: dd02 ble.n 26164 + 2615e: 4603 mov r3, r0 + 26160: 4629 mov r1, r5 + 26162: 4670 mov r0, lr writeFastHLine(a, y, b - a + 1, color); - 26078: 3301 adds r3, #1 - 2607a: f8dc 5024 ldr.w r5, [ip, #36] ; 0x24 - 2607e: 1a1b subs r3, r3, r0 - 26080: 980b ldr r0, [sp, #44] ; 0x2c - 26082: 4285 cmp r5, r0 - 26084: b21b sxth r3, r3 + 26164: 3301 adds r3, #1 + 26166: f8dc 5024 ldr.w r5, [ip, #36] ; 0x24 + 2616a: 1a1b subs r3, r3, r0 + 2616c: 980b ldr r0, [sp, #44] ; 0x2c + 2616e: 4285 cmp r5, r0 + 26170: b21b sxth r3, r3 drawFastHLine(x, y, w, color); - 26086: d0d5 beq.n 26034 + 26172: d0d5 beq.n 26120 writeFastHLine(a, y, b - a + 1, color); - 26088: 9a03 ldr r2, [sp, #12] - 2608a: 4658 mov r0, fp - 2608c: 9200 str r2, [sp, #0] - 2608e: 4622 mov r2, r4 - 26090: 3401 adds r4, #1 - 26092: 47a8 blx r5 + 26174: 9a03 ldr r2, [sp, #12] + 26176: 4658 mov r0, fp + 26178: 9200 str r2, [sp, #0] + 2617a: 4622 mov r2, r4 + 2617c: 3401 adds r4, #1 + 2617e: 47a8 blx r5 for (y = y0; y <= last; y++) { - 26094: b224 sxth r4, r4 - 26096: 45a2 cmp sl, r4 - 26098: dad6 bge.n 26048 + 26180: b224 sxth r4, r4 + 26182: 45a2 cmp sl, r4 + 26184: dad6 bge.n 26134 endWrite(); - 2609a: 465d mov r5, fp - 2609c: f8db c000 ldr.w ip, [fp] + 26186: 465d mov r5, fp + 26188: f8db c000 ldr.w ip, [fp] sa = (int32_t)dx12 * (y - y1); - 260a0: 9b0d ldr r3, [sp, #52] ; 0x34 - 260a2: 1ae7 subs r7, r4, r3 + 2618c: 9b0d ldr r3, [sp, #52] ; 0x34 + 2618e: 1ae7 subs r7, r4, r3 sb = (int32_t)dx02 * (y - y0); - 260a4: 9b0c ldr r3, [sp, #48] ; 0x30 - 260a6: eba4 0803 sub.w r8, r4, r3 + 26190: 9b0c ldr r3, [sp, #48] ; 0x30 + 26192: eba4 0803 sub.w r8, r4, r3 sa = (int32_t)dx12 * (y - y1); - 260aa: 9b06 ldr r3, [sp, #24] - 260ac: fb03 f707 mul.w r7, r3, r7 + 26196: 9b06 ldr r3, [sp, #24] + 26198: fb03 f707 mul.w r7, r3, r7 for (; y <= y2; y++) { - 260b0: 9b05 ldr r3, [sp, #20] + 2619c: 9b05 ldr r3, [sp, #20] sb = (int32_t)dx02 * (y - y0); - 260b2: fb09 f808 mul.w r8, r9, r8 + 2619e: fb09 f808 mul.w r8, r9, r8 for (; y <= y2; y++) { - 260b6: 42a3 cmp r3, r4 - 260b8: db3f blt.n 2613a - 260ba: 4b4e ldr r3, [pc, #312] ; (261f4 ) - 260bc: 4660 mov r0, ip - 260be: 9608 str r6, [sp, #32] - 260c0: 469a mov sl, r3 - 260c2: e00b b.n 260dc + 261a2: 42a3 cmp r3, r4 + 261a4: db3f blt.n 26226 + 261a6: 4b4e ldr r3, [pc, #312] ; (262e0 ) + 261a8: 4660 mov r0, ip + 261aa: 9608 str r6, [sp, #32] + 261ac: 469a mov sl, r3 + 261ae: e00b b.n 261c8 drawFastHLine(x, y, w, color); - 260c4: 9e03 ldr r6, [sp, #12] - 260c6: 3401 adds r4, #1 - 260c8: 9600 str r6, [sp, #0] - 260ca: b224 sxth r4, r4 - 260cc: f8d0 b03c ldr.w fp, [r0, #60] ; 0x3c - 260d0: 4628 mov r0, r5 - 260d2: 47d8 blx fp + 261b0: 9e03 ldr r6, [sp, #12] + 261b2: 3401 adds r4, #1 + 261b4: 9600 str r6, [sp, #0] + 261b6: b224 sxth r4, r4 + 261b8: f8d0 b03c ldr.w fp, [r0, #60] ; 0x3c + 261bc: 4628 mov r0, r5 + 261be: 47d8 blx fp for (; y <= y2; y++) { - 260d4: 9b05 ldr r3, [sp, #20] - 260d6: 42a3 cmp r3, r4 - 260d8: db2d blt.n 26136 + 261c0: 9b05 ldr r3, [sp, #20] + 261c2: 42a3 cmp r3, r4 + 261c4: db2d blt.n 26222 endWrite(); - 260da: 6828 ldr r0, [r5, #0] + 261c6: 6828 ldr r0, [r5, #0] a = x1 + sa / dy12; - 260dc: 9b0a ldr r3, [sp, #40] ; 0x28 + 261c8: 9b0a ldr r3, [sp, #40] ; 0x28 b = x0 + sb / dy02; - 260de: 9a08 ldr r2, [sp, #32] + 261ca: 9a08 ldr r2, [sp, #32] a = x1 + sa / dy12; - 260e0: fb97 fef3 sdiv lr, r7, r3 + 261cc: fb97 fef3 sdiv lr, r7, r3 sa += dx12; - 260e4: 9b06 ldr r3, [sp, #24] - 260e6: 441f add r7, r3 + 261d0: 9b06 ldr r3, [sp, #24] + 261d2: 441f add r7, r3 a = x1 + sa / dy12; - 260e8: 9b07 ldr r3, [sp, #28] - 260ea: 449e add lr, r3 + 261d4: 9b07 ldr r3, [sp, #28] + 261d6: 449e add lr, r3 b = x0 + sb / dy02; - 260ec: 9b04 ldr r3, [sp, #16] - 260ee: fb98 f3f3 sdiv r3, r8, r3 - 260f2: 4413 add r3, r2 + 261d8: 9b04 ldr r3, [sp, #16] + 261da: fb98 f3f3 sdiv r3, r8, r3 + 261de: 4413 add r3, r2 a = x1 + sa / dy12; - 260f4: fa0f f18e sxth.w r1, lr + 261e0: fa0f f18e sxth.w r1, lr sb += dx02; - 260f8: 44c8 add r8, r9 + 261e4: 44c8 add r8, r9 a = x1 + sa / dy12; - 260fa: fa1f fe8e uxth.w lr, lr + 261e6: fa1f fe8e uxth.w lr, lr b = x0 + sb / dy02; - 260fe: fa0f fc83 sxth.w ip, r3 + 261ea: fa0f fc83 sxth.w ip, r3 drawFastHLine(x, y, w, color); - 26102: 4622 mov r2, r4 + 261ee: 4622 mov r2, r4 b = x0 + sb / dy02; - 26104: b29b uxth r3, r3 + 261f0: b29b uxth r3, r3 if (a > b) - 26106: 4561 cmp r1, ip - 26108: 469b mov fp, r3 - 2610a: dd02 ble.n 26112 - 2610c: 4673 mov r3, lr - 2610e: 4661 mov r1, ip - 26110: 46de mov lr, fp + 261f2: 4561 cmp r1, ip + 261f4: 469b mov fp, r3 + 261f6: dd02 ble.n 261fe + 261f8: 4673 mov r3, lr + 261fa: 4661 mov r1, ip + 261fc: 46de mov lr, fp writeFastHLine(a, y, b - a + 1, color); - 26112: 3301 adds r3, #1 - 26114: f8d0 b024 ldr.w fp, [r0, #36] ; 0x24 - 26118: eba3 030e sub.w r3, r3, lr - 2611c: 45d3 cmp fp, sl - 2611e: b21b sxth r3, r3 + 261fe: 3301 adds r3, #1 + 26200: f8d0 b024 ldr.w fp, [r0, #36] ; 0x24 + 26204: eba3 030e sub.w r3, r3, lr + 26208: 45d3 cmp fp, sl + 2620a: b21b sxth r3, r3 drawFastHLine(x, y, w, color); - 26120: d0d0 beq.n 260c4 + 2620c: d0d0 beq.n 261b0 writeFastHLine(a, y, b - a + 1, color); - 26122: 9a03 ldr r2, [sp, #12] - 26124: 4628 mov r0, r5 - 26126: 9200 str r2, [sp, #0] - 26128: 4622 mov r2, r4 - 2612a: 3401 adds r4, #1 - 2612c: 47d8 blx fp + 2620e: 9a03 ldr r2, [sp, #12] + 26210: 4628 mov r0, r5 + 26212: 9200 str r2, [sp, #0] + 26214: 4622 mov r2, r4 + 26216: 3401 adds r4, #1 + 26218: 47d8 blx fp for (; y <= y2; y++) { - 2612e: 9b05 ldr r3, [sp, #20] - 26130: b224 sxth r4, r4 - 26132: 42a3 cmp r3, r4 - 26134: dad1 bge.n 260da + 2621a: 9b05 ldr r3, [sp, #20] + 2621c: b224 sxth r4, r4 + 2621e: 42a3 cmp r3, r4 + 26220: dad1 bge.n 261c6 endWrite(); - 26136: f8d5 c000 ldr.w ip, [r5] - 2613a: f8dc 302c ldr.w r3, [ip, #44] ; 0x2c - 2613e: 4a2c ldr r2, [pc, #176] ; (261f0 ) - 26140: 4293 cmp r3, r2 - 26142: d134 bne.n 261ae -} - 26144: b00f add sp, #60 ; 0x3c - 26146: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 26222: f8d5 c000 ldr.w ip, [r5] + 26226: f8dc 302c ldr.w r3, [ip, #44] ; 0x2c + 2622a: 4a2c ldr r2, [pc, #176] ; (262dc ) + 2622c: 4293 cmp r3, r2 + 2622e: d134 bne.n 2629a +} + 26230: b00f add sp, #60 ; 0x3c + 26232: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if (y1 > y2) { - 2614a: 9b0d ldr r3, [sp, #52] ; 0x34 - 2614c: 9a05 ldr r2, [sp, #20] - 2614e: 4293 cmp r3, r2 - 26150: f73f af21 bgt.w 25f96 + 26236: 9b0d ldr r3, [sp, #52] ; 0x34 + 26238: 9a05 ldr r2, [sp, #20] + 2623a: 4293 cmp r3, r2 + 2623c: f73f af21 bgt.w 26082 startWrite(); - 26154: f8d5 c000 ldr.w ip, [r5] - 26158: 4a25 ldr r2, [pc, #148] ; (261f0 ) - 2615a: f8dc 3014 ldr.w r3, [ip, #20] - 2615e: 4293 cmp r3, r2 - 26160: f43f af2e beq.w 25fc0 - 26164: 4628 mov r0, r5 - 26166: 4798 blx r3 + 26240: f8d5 c000 ldr.w ip, [r5] + 26244: 4a25 ldr r2, [pc, #148] ; (262dc ) + 26246: f8dc 3014 ldr.w r3, [ip, #20] + 2624a: 4293 cmp r3, r2 + 2624c: f43f af2e beq.w 260ac + 26250: 4628 mov r0, r5 + 26252: 4798 blx r3 if (y0 == y2) { // Handle awkward all-on-same-line case as its own thing - 26168: 9b0c ldr r3, [sp, #48] ; 0x30 - 2616a: 9a05 ldr r2, [sp, #20] + 26254: 9b0c ldr r3, [sp, #48] ; 0x30 + 26256: 9a05 ldr r2, [sp, #20] writeFastHLine(a, y0, b - a + 1, color); - 2616c: f8d5 c000 ldr.w ip, [r5] + 26258: f8d5 c000 ldr.w ip, [r5] if (y0 == y2) { // Handle awkward all-on-same-line case as its own thing - 26170: 4293 cmp r3, r2 - 26172: f47f af2a bne.w 25fca + 2625c: 4293 cmp r3, r2 + 2625e: f47f af2a bne.w 260b6 if (x1 < a) - 26176: 42be cmp r6, r7 - 26178: dd02 ble.n 26180 - 2617a: 4633 mov r3, r6 - 2617c: 463e mov r6, r7 - 2617e: 461f mov r7, r3 + 26262: 42be cmp r6, r7 + 26264: dd02 ble.n 2626c + 26266: 4633 mov r3, r6 + 26268: 463e mov r6, r7 + 2626a: 461f mov r7, r3 if (x2 < a) - 26180: 42a6 cmp r6, r4 - 26182: dd24 ble.n 261ce + 2626c: 42a6 cmp r6, r4 + 2626e: dd24 ble.n 262ba writeFastHLine(a, y0, b - a + 1, color); - 26184: f8dc 6024 ldr.w r6, [ip, #36] ; 0x24 - 26188: 1c7b adds r3, r7, #1 - 2618a: 4a1a ldr r2, [pc, #104] ; (261f4 ) - 2618c: 4621 mov r1, r4 - 2618e: 1b1b subs r3, r3, r4 - 26190: 4628 mov r0, r5 - 26192: 4296 cmp r6, r2 + 26270: f8dc 6024 ldr.w r6, [ip, #36] ; 0x24 + 26274: 1c7b adds r3, r7, #1 + 26276: 4a1a ldr r2, [pc, #104] ; (262e0 ) + 26278: 4621 mov r1, r4 + 2627a: 1b1b subs r3, r3, r4 + 2627c: 4628 mov r0, r5 + 2627e: 4296 cmp r6, r2 drawFastHLine(x, y, w, color); - 26194: 9a03 ldr r2, [sp, #12] + 26280: 9a03 ldr r2, [sp, #12] writeFastHLine(a, y0, b - a + 1, color); - 26196: b21b sxth r3, r3 + 26282: b21b sxth r3, r3 drawFastHLine(x, y, w, color); - 26198: 9200 str r2, [sp, #0] + 26284: 9200 str r2, [sp, #0] writeFastHLine(a, y0, b - a + 1, color); - 2619a: 9a0c ldr r2, [sp, #48] ; 0x30 + 26286: 9a0c ldr r2, [sp, #48] ; 0x30 drawFastHLine(x, y, w, color); - 2619c: bf08 it eq - 2619e: f8dc 603c ldreq.w r6, [ip, #60] ; 0x3c + 26288: bf08 it eq + 2628a: f8dc 603c ldreq.w r6, [ip, #60] ; 0x3c writeFastHLine(a, y0, b - a + 1, color); - 261a2: 47b0 blx r6 + 2628e: 47b0 blx r6 endWrite(); - 261a4: 682b ldr r3, [r5, #0] - 261a6: 4a12 ldr r2, [pc, #72] ; (261f0 ) - 261a8: 6adb ldr r3, [r3, #44] ; 0x2c - 261aa: 4293 cmp r3, r2 - 261ac: d0ca beq.n 26144 + 26290: 682b ldr r3, [r5, #0] + 26292: 4a12 ldr r2, [pc, #72] ; (262dc ) + 26294: 6adb ldr r3, [r3, #44] ; 0x2c + 26296: 4293 cmp r3, r2 + 26298: d0ca beq.n 26230 endWrite(); - 261ae: 4628 mov r0, r5 + 2629a: 4628 mov r0, r5 } - 261b0: b00f add sp, #60 ; 0x3c - 261b2: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2629c: b00f add sp, #60 ; 0x3c + 2629e: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} endWrite(); - 261b6: 4718 bx r3 - 261b8: 9a0c ldr r2, [sp, #48] ; 0x30 - 261ba: 4633 mov r3, r6 - 261bc: 990d ldr r1, [sp, #52] ; 0x34 + 262a2: 4718 bx r3 + 262a4: 9a0c ldr r2, [sp, #48] ; 0x30 + 262a6: 4633 mov r3, r6 + 262a8: 990d ldr r1, [sp, #52] ; 0x34 _swap_int16_t(x0, x1); - 261be: 463e mov r6, r7 - 261c0: 920d str r2, [sp, #52] ; 0x34 - 261c2: 461f mov r7, r3 - 261c4: 910c str r1, [sp, #48] ; 0x30 - 261c6: e6f3 b.n 25fb0 - 261c8: f8dd a034 ldr.w sl, [sp, #52] ; 0x34 - 261cc: e728 b.n 26020 + 262aa: 463e mov r6, r7 + 262ac: 920d str r2, [sp, #52] ; 0x34 + 262ae: 461f mov r7, r3 + 262b0: 910c str r1, [sp, #48] ; 0x30 + 262b2: e6f3 b.n 2609c + 262b4: f8dd a034 ldr.w sl, [sp, #52] ; 0x34 + 262b8: e728 b.n 2610c else if (x2 > b) - 261ce: 42a7 cmp r7, r4 - 261d0: bfb8 it lt - 261d2: 4627 movlt r7, r4 - 261d4: 4634 mov r4, r6 - 261d6: b23f sxth r7, r7 - 261d8: e7d4 b.n 26184 + 262ba: 42a7 cmp r7, r4 + 262bc: bfb8 it lt + 262be: 4627 movlt r7, r4 + 262c0: 4634 mov r4, r6 + 262c2: b23f sxth r7, r7 + 262c4: e7d4 b.n 26270 sb = (int32_t)dx02 * (y - y0); - 261da: 9c0c ldr r4, [sp, #48] ; 0x30 - 261dc: e760 b.n 260a0 - 261de: 9a0d ldr r2, [sp, #52] ; 0x34 - 261e0: 463b mov r3, r7 - 261e2: 9905 ldr r1, [sp, #20] - 261e4: 4627 mov r7, r4 - 261e6: 9205 str r2, [sp, #20] - 261e8: 461c mov r4, r3 - 261ea: 910d str r1, [sp, #52] ; 0x34 - 261ec: e6e0 b.n 25fb0 - 261ee: bf00 nop - 261f0: 0002579d .word 0x0002579d - 261f4: 000257c5 .word 0x000257c5 - -000261f8 : + 262c6: 9c0c ldr r4, [sp, #48] ; 0x30 + 262c8: e760 b.n 2618c + 262ca: 9a0d ldr r2, [sp, #52] ; 0x34 + 262cc: 463b mov r3, r7 + 262ce: 9905 ldr r1, [sp, #20] + 262d0: 4627 mov r7, r4 + 262d2: 9205 str r2, [sp, #20] + 262d4: 461c mov r4, r3 + 262d6: 910d str r1, [sp, #52] ; 0x34 + 262d8: e6e0 b.n 2609c + 262da: bf00 nop + 262dc: 00025889 .word 0x00025889 + 262e0: 000258b1 .word 0x000258b1 + +000262e4 : uint8_t size_y) { - 261f8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 261fc: ed2d 8b02 vpush {d8} - 26200: b091 sub sp, #68 ; 0x44 - 26202: 4691 mov r9, r2 - 26204: 4682 mov sl, r0 - 26206: f8bd 2070 ldrh.w r2, [sp, #112] ; 0x70 - 2620a: 9104 str r1, [sp, #16] - 2620c: f89d 1078 ldrb.w r1, [sp, #120] ; 0x78 - 26210: 9205 str r2, [sp, #20] - 26212: 910e str r1, [sp, #56] ; 0x38 + 262e4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 262e8: ed2d 8b02 vpush {d8} + 262ec: b091 sub sp, #68 ; 0x44 + 262ee: 4691 mov r9, r2 + 262f0: 4682 mov sl, r0 + 262f2: f8bd 2070 ldrh.w r2, [sp, #112] ; 0x70 + 262f6: 9104 str r1, [sp, #16] + 262f8: f89d 1078 ldrb.w r1, [sp, #120] ; 0x78 + 262fc: 9205 str r2, [sp, #20] + 262fe: 910e str r1, [sp, #56] ; 0x38 if (!gfxFont) { // 'Classic' built-in font - 26214: 6a02 ldr r2, [r0, #32] + 26300: 6a02 ldr r2, [r0, #32] uint8_t size_y) { - 26216: f89d 107c ldrb.w r1, [sp, #124] ; 0x7c - 2621a: f8bd b074 ldrh.w fp, [sp, #116] ; 0x74 - 2621e: 9102 str r1, [sp, #8] + 26302: f89d 107c ldrb.w r1, [sp, #124] ; 0x7c + 26306: f8bd b074 ldrh.w fp, [sp, #116] ; 0x74 + 2630a: 9102 str r1, [sp, #8] if (!gfxFont) { // 'Classic' built-in font - 26220: 2a00 cmp r2, #0 - 26222: f000 80b3 beq.w 2638c + 2630c: 2a00 cmp r2, #0 + 2630e: f000 80b3 beq.w 26478 c -= (uint8_t)pgm_read_byte(&gfxFont->first); - 26226: 7a11 ldrb r1, [r2, #8] + 26312: 7a11 ldrb r1, [r2, #8] return gfxFont->bitmap; - 26228: e9d2 2400 ldrd r2, r4, [r2] + 26314: e9d2 2400 ldrd r2, r4, [r2] c -= (uint8_t)pgm_read_byte(&gfxFont->first); - 2622c: 1a5b subs r3, r3, r1 + 26318: 1a5b subs r3, r3, r1 if (size_x > 1 || size_y > 1) { - 2622e: 9902 ldr r1, [sp, #8] + 2631a: 9902 ldr r1, [sp, #8] return gfxFont->bitmap; - 26230: 9203 str r2, [sp, #12] + 2631c: 9203 str r2, [sp, #12] return gfxFont->glyph + c; - 26232: b2db uxtb r3, r3 + 2631e: b2db uxtb r3, r3 if (size_x > 1 || size_y > 1) { - 26234: 9a0e ldr r2, [sp, #56] ; 0x38 - 26236: 4311 orrs r1, r2 + 26320: 9a0e ldr r2, [sp, #56] ; 0x38 + 26322: 4311 orrs r1, r2 return gfxFont->glyph + c; - 26238: eb04 02c3 add.w r2, r4, r3, lsl #3 + 26324: eb04 02c3 add.w r2, r4, r3, lsl #3 uint16_t bo = pgm_read_word(&glyph->bitmapOffset); - 2623c: f834 7033 ldrh.w r7, [r4, r3, lsl #3] + 26328: f834 7033 ldrh.w r7, [r4, r3, lsl #3] int8_t xo = pgm_read_byte(&glyph->xOffset), - 26240: f992 0005 ldrsb.w r0, [r2, #5] + 2632c: f992 0005 ldrsb.w r0, [r2, #5] if (size_x > 1 || size_y > 1) { - 26244: 2901 cmp r1, #1 + 26330: 2901 cmp r1, #1 uint8_t w = pgm_read_byte(&glyph->width), h = pgm_read_byte(&glyph->height); - 26246: 78d3 ldrb r3, [r2, #3] - 26248: f892 8002 ldrb.w r8, [r2, #2] + 26332: 78d3 ldrb r3, [r2, #3] + 26334: f892 8002 ldrb.w r8, [r2, #2] yo = pgm_read_byte(&glyph->yOffset); - 2624c: f992 4006 ldrsb.w r4, [r2, #6] + 26338: f992 4006 ldrsb.w r4, [r2, #6] uint8_t w = pgm_read_byte(&glyph->width), h = pgm_read_byte(&glyph->height); - 26250: 930a str r3, [sp, #40] ; 0x28 + 2633c: 930a str r3, [sp, #40] ; 0x28 int8_t xo = pgm_read_byte(&glyph->xOffset), - 26252: 9008 str r0, [sp, #32] + 2633e: 9008 str r0, [sp, #32] if (size_x > 1 || size_y > 1) { - 26254: d85a bhi.n 2630c + 26340: d85a bhi.n 263f8 int16_t xo16 = 0, yo16 = 0; - 26256: 2300 movs r3, #0 - 26258: 930b str r3, [sp, #44] ; 0x2c - 2625a: 9309 str r3, [sp, #36] ; 0x24 + 26342: 2300 movs r3, #0 + 26344: 930b str r3, [sp, #44] ; 0x2c + 26346: 9309 str r3, [sp, #36] ; 0x24 startWrite(); - 2625c: 4ba3 ldr r3, [pc, #652] ; (264ec ) - 2625e: f8da 2000 ldr.w r2, [sl] - 26262: 4619 mov r1, r3 - 26264: 930f str r3, [sp, #60] ; 0x3c - 26266: 6953 ldr r3, [r2, #20] - 26268: 428b cmp r3, r1 - 2626a: f040 817d bne.w 26568 + 26348: 4ba3 ldr r3, [pc, #652] ; (265d8 ) + 2634a: f8da 2000 ldr.w r2, [sl] + 2634e: 4619 mov r1, r3 + 26350: 930f str r3, [sp, #60] ; 0x3c + 26352: 6953 ldr r3, [r2, #20] + 26354: 428b cmp r3, r1 + 26356: f040 817d bne.w 26654 for (yy = 0; yy < h; yy++) { - 2626e: 9b0a ldr r3, [sp, #40] ; 0x28 - 26270: 2b00 cmp r3, #0 - 26272: d078 beq.n 26366 + 2635a: 9b0a ldr r3, [sp, #40] ; 0x28 + 2635c: 2b00 cmp r3, #0 + 2635e: d078 beq.n 26452 writeFillRect(x + (xo16 + xx) * size_x, y + (yo16 + yy) * size_y, - 26274: fa1f f389 uxth.w r3, r9 + 26360: fa1f f389 uxth.w r3, r9 for (yy = 0; yy < h; yy++) { - 26278: 46d3 mov fp, sl - 2627a: f8dd 9038 ldr.w r9, [sp, #56] ; 0x38 + 26364: 46d3 mov fp, sl + 26366: f8dd 9038 ldr.w r9, [sp, #56] ; 0x38 writeFillRect(x + (xo16 + xx) * size_x, y + (yo16 + yy) * size_y, - 2627e: 930c str r3, [sp, #48] ; 0x30 + 2636a: 930c str r3, [sp, #48] ; 0x30 writePixel(x + xo + xx, y + yo + yy, color); - 26280: 4423 add r3, r4 - 26282: 930d str r3, [sp, #52] ; 0x34 + 2636c: 4423 add r3, r4 + 2636e: 930d str r3, [sp, #52] ; 0x34 for (yy = 0; yy < h; yy++) { - 26284: 2300 movs r3, #0 - 26286: 461d mov r5, r3 - 26288: 9307 str r3, [sp, #28] - 2628a: 9306 str r3, [sp, #24] + 26370: 2300 movs r3, #0 + 26372: 461d mov r5, r3 + 26374: 9307 str r3, [sp, #28] + 26376: 9306 str r3, [sp, #24] for (xx = 0; xx < w; xx++) { - 2628c: f1b8 0f00 cmp.w r8, #0 - 26290: d061 beq.n 26356 + 26378: f1b8 0f00 cmp.w r8, #0 + 2637c: d061 beq.n 26442 writeFillRect(x + (xo16 + xx) * size_x, y + (yo16 + yy) * size_y, - 26292: 9906 ldr r1, [sp, #24] - 26294: 9b0b ldr r3, [sp, #44] ; 0x2c - 26296: 9c02 ldr r4, [sp, #8] - 26298: 18cb adds r3, r1, r3 - 2629a: 980c ldr r0, [sp, #48] ; 0x30 - 2629c: 9e07 ldr r6, [sp, #28] - 2629e: fb03 0304 mla r3, r3, r4, r0 + 2637e: 9906 ldr r1, [sp, #24] + 26380: 9b0b ldr r3, [sp, #44] ; 0x2c + 26382: 9c02 ldr r4, [sp, #8] + 26384: 18cb adds r3, r1, r3 + 26386: 980c ldr r0, [sp, #48] ; 0x30 + 26388: 9e07 ldr r6, [sp, #28] + 2638a: fb03 0304 mla r3, r3, r4, r0 for (xx = 0; xx < w; xx++) { - 262a2: 2400 movs r4, #0 + 2638e: 2400 movs r4, #0 writeFillRect(x + (xo16 + xx) * size_x, y + (yo16 + yy) * size_y, - 262a4: b21b sxth r3, r3 - 262a6: ee08 3a10 vmov s16, r3 + 26390: b21b sxth r3, r3 + 26392: ee08 3a10 vmov s16, r3 writePixel(x + xo + xx, y + yo + yy, color); - 262aa: 9b0d ldr r3, [sp, #52] ; 0x34 - 262ac: 440b add r3, r1 - 262ae: b21b sxth r3, r3 - 262b0: ee08 3a90 vmov s17, r3 - 262b4: e005 b.n 262c2 + 26396: 9b0d ldr r3, [sp, #52] ; 0x34 + 26398: 440b add r3, r1 + 2639a: b21b sxth r3, r3 + 2639c: ee08 3a90 vmov s17, r3 + 263a0: e005 b.n 263ae for (xx = 0; xx < w; xx++) { - 262b6: 3401 adds r4, #1 + 263a2: 3401 adds r4, #1 bits <<= 1; - 262b8: 006d lsls r5, r5, #1 + 263a4: 006d lsls r5, r5, #1 for (xx = 0; xx < w; xx++) { - 262ba: b2e4 uxtb r4, r4 + 263a6: b2e4 uxtb r4, r4 bits <<= 1; - 262bc: b2ed uxtb r5, r5 + 263a8: b2ed uxtb r5, r5 for (xx = 0; xx < w; xx++) { - 262be: 45a0 cmp r8, r4 - 262c0: d945 bls.n 2634e + 263aa: 45a0 cmp r8, r4 + 263ac: d945 bls.n 2643a if (!(bit++ & 7)) { - 262c2: 4633 mov r3, r6 - 262c4: 3601 adds r6, #1 - 262c6: 0759 lsls r1, r3, #29 - 262c8: b2f6 uxtb r6, r6 - 262ca: d103 bne.n 262d4 + 263ae: 4633 mov r3, r6 + 263b0: 3601 adds r6, #1 + 263b2: 0759 lsls r1, r3, #29 + 263b4: b2f6 uxtb r6, r6 + 263b6: d103 bne.n 263c0 bits = pgm_read_byte(&bitmap[bo++]); - 262cc: 1c7b adds r3, r7, #1 - 262ce: 9903 ldr r1, [sp, #12] - 262d0: 5dcd ldrb r5, [r1, r7] - 262d2: b29f uxth r7, r3 + 263b8: 1c7b adds r3, r7, #1 + 263ba: 9903 ldr r1, [sp, #12] + 263bc: 5dcd ldrb r5, [r1, r7] + 263be: b29f uxth r7, r3 if (bits & 0x80) { - 262d4: 062b lsls r3, r5, #24 - 262d6: d5ee bpl.n 262b6 + 263c0: 062b lsls r3, r5, #24 + 263c2: d5ee bpl.n 263a2 if (size_x == 1 && size_y == 1) { - 262d8: f1b9 0f01 cmp.w r9, #1 - 262dc: d11b bne.n 26316 - 262de: 9b02 ldr r3, [sp, #8] - 262e0: 2b01 cmp r3, #1 - 262e2: d118 bne.n 26316 + 263c4: f1b9 0f01 cmp.w r9, #1 + 263c8: d11b bne.n 26402 + 263ca: 9b02 ldr r3, [sp, #8] + 263cc: 2b01 cmp r3, #1 + 263ce: d118 bne.n 26402 writePixel(x + xo + xx, y + yo + yy, color); - 262e4: 9b08 ldr r3, [sp, #32] - 262e6: 4658 mov r0, fp - 262e8: 9904 ldr r1, [sp, #16] - 262ea: f8d2 a018 ldr.w sl, [r2, #24] - 262ee: 1859 adds r1, r3, r1 - 262f0: 4b7f ldr r3, [pc, #508] ; (264f0 ) - 262f2: 4421 add r1, r4 - 262f4: 459a cmp sl, r3 - 262f6: 9b05 ldr r3, [sp, #20] + 263d0: 9b08 ldr r3, [sp, #32] + 263d2: 4658 mov r0, fp + 263d4: 9904 ldr r1, [sp, #16] + 263d6: f8d2 a018 ldr.w sl, [r2, #24] + 263da: 1859 adds r1, r3, r1 + 263dc: 4b7f ldr r3, [pc, #508] ; (265dc ) + 263de: 4421 add r1, r4 + 263e0: 459a cmp sl, r3 + 263e2: 9b05 ldr r3, [sp, #20] drawPixel(x, y, color); - 262f8: bf08 it eq - 262fa: f8d2 a010 ldreq.w sl, [r2, #16] + 263e4: bf08 it eq + 263e6: f8d2 a010 ldreq.w sl, [r2, #16] writePixel(x + xo + xx, y + yo + yy, color); - 262fe: b209 sxth r1, r1 - 26300: ee18 2a90 vmov r2, s17 - 26304: 47d0 blx sl + 263ea: b209 sxth r1, r1 + 263ec: ee18 2a90 vmov r2, s17 + 263f0: 47d0 blx sl endWrite(); - 26306: f8db 2000 ldr.w r2, [fp] - 2630a: e7d4 b.n 262b6 + 263f2: f8db 2000 ldr.w r2, [fp] + 263f6: e7d4 b.n 263a2 xo16 = xo; - 2630c: b203 sxth r3, r0 - 2630e: 9309 str r3, [sp, #36] ; 0x24 + 263f8: b203 sxth r3, r0 + 263fa: 9309 str r3, [sp, #36] ; 0x24 yo16 = yo; - 26310: b223 sxth r3, r4 - 26312: 930b str r3, [sp, #44] ; 0x2c - 26314: e7a2 b.n 2625c + 263fc: b223 sxth r3, r4 + 263fe: 930b str r3, [sp, #44] ; 0x2c + 26400: e7a2 b.n 26348 writeFillRect(x + (xo16 + xx) * size_x, y + (yo16 + yy) * size_y, - 26316: 9b09 ldr r3, [sp, #36] ; 0x24 - 26318: f8d2 a01c ldr.w sl, [r2, #28] - 2631c: 1919 adds r1, r3, r4 - 2631e: f8df e1d8 ldr.w lr, [pc, #472] ; 264f8 - 26322: 9b04 ldr r3, [sp, #16] - 26324: f9bd 0008 ldrsh.w r0, [sp, #8] - 26328: 45f2 cmp sl, lr - 2632a: fb01 3109 mla r1, r1, r9, r3 - 2632e: fa0f f389 sxth.w r3, r9 + 26402: 9b09 ldr r3, [sp, #36] ; 0x24 + 26404: f8d2 a01c ldr.w sl, [r2, #28] + 26408: 1919 adds r1, r3, r4 + 2640a: f8df e1d8 ldr.w lr, [pc, #472] ; 265e4 + 2640e: 9b04 ldr r3, [sp, #16] + 26410: f9bd 0008 ldrsh.w r0, [sp, #8] + 26414: 45f2 cmp sl, lr + 26416: fb01 3109 mla r1, r1, r9, r3 + 2641a: fa0f f389 sxth.w r3, r9 fillRect(x, y, w, h, color); - 26332: 9000 str r0, [sp, #0] + 2641e: 9000 str r0, [sp, #0] writeFillRect(x + (xo16 + xx) * size_x, y + (yo16 + yy) * size_y, - 26334: b209 sxth r1, r1 - 26336: d120 bne.n 2637a + 26420: b209 sxth r1, r1 + 26422: d120 bne.n 26466 fillRect(x, y, w, h, color); - 26338: 9805 ldr r0, [sp, #20] - 2633a: 9001 str r0, [sp, #4] - 2633c: 4658 mov r0, fp - 2633e: f8d2 a040 ldr.w sl, [r2, #64] ; 0x40 - 26342: ee18 2a10 vmov r2, s16 - 26346: 47d0 blx sl + 26424: 9805 ldr r0, [sp, #20] + 26426: 9001 str r0, [sp, #4] + 26428: 4658 mov r0, fp + 2642a: f8d2 a040 ldr.w sl, [r2, #64] ; 0x40 + 2642e: ee18 2a10 vmov r2, s16 + 26432: 47d0 blx sl endWrite(); - 26348: f8db 2000 ldr.w r2, [fp] + 26434: f8db 2000 ldr.w r2, [fp] } - 2634c: e7b3 b.n 262b6 + 26438: e7b3 b.n 263a2 if (!(bit++ & 7)) { - 2634e: 9b07 ldr r3, [sp, #28] - 26350: 4443 add r3, r8 - 26352: b2db uxtb r3, r3 - 26354: 9307 str r3, [sp, #28] + 2643a: 9b07 ldr r3, [sp, #28] + 2643c: 4443 add r3, r8 + 2643e: b2db uxtb r3, r3 + 26440: 9307 str r3, [sp, #28] for (yy = 0; yy < h; yy++) { - 26356: 9b06 ldr r3, [sp, #24] - 26358: 990a ldr r1, [sp, #40] ; 0x28 - 2635a: 3301 adds r3, #1 - 2635c: b2db uxtb r3, r3 - 2635e: 4299 cmp r1, r3 - 26360: 9306 str r3, [sp, #24] - 26362: d893 bhi.n 2628c - 26364: 46da mov sl, fp + 26442: 9b06 ldr r3, [sp, #24] + 26444: 990a ldr r1, [sp, #40] ; 0x28 + 26446: 3301 adds r3, #1 + 26448: b2db uxtb r3, r3 + 2644a: 4299 cmp r1, r3 + 2644c: 9306 str r3, [sp, #24] + 2644e: d893 bhi.n 26378 + 26450: 46da mov sl, fp endWrite(); - 26366: 6ad3 ldr r3, [r2, #44] ; 0x2c - 26368: 9a0f ldr r2, [sp, #60] ; 0x3c - 2636a: 4293 cmp r3, r2 - 2636c: f040 80f5 bne.w 2655a -} - 26370: b011 add sp, #68 ; 0x44 - 26372: ecbd 8b02 vpop {d8} - 26376: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 26452: 6ad3 ldr r3, [r2, #44] ; 0x2c + 26454: 9a0f ldr r2, [sp, #60] ; 0x3c + 26456: 4293 cmp r3, r2 + 26458: f040 80f5 bne.w 26646 +} + 2645c: b011 add sp, #68 ; 0x44 + 2645e: ecbd 8b02 vpop {d8} + 26462: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} writeFillRect(x + (xo16 + xx) * size_x, y + (yo16 + yy) * size_y, - 2637a: 9a05 ldr r2, [sp, #20] - 2637c: 4658 mov r0, fp - 2637e: 9201 str r2, [sp, #4] - 26380: ee18 2a10 vmov r2, s16 - 26384: 47d0 blx sl + 26466: 9a05 ldr r2, [sp, #20] + 26468: 4658 mov r0, fp + 2646a: 9201 str r2, [sp, #4] + 2646c: ee18 2a10 vmov r2, s16 + 26470: 47d0 blx sl endWrite(); - 26386: f8db 2000 ldr.w r2, [fp] - 2638a: e794 b.n 262b6 + 26472: f8db 2000 ldr.w r2, [fp] + 26476: e794 b.n 263a2 if ((x >= _width) || // Clip right - 2638c: f9b0 200c ldrsh.w r2, [r0, #12] - 26390: 9904 ldr r1, [sp, #16] - 26392: 428a cmp r2, r1 - 26394: ddec ble.n 26370 - 26396: f9b0 200e ldrsh.w r2, [r0, #14] - 2639a: 454a cmp r2, r9 - 2639c: dde8 ble.n 26370 + 26478: f9b0 200c ldrsh.w r2, [r0, #12] + 2647c: 9904 ldr r1, [sp, #16] + 2647e: 428a cmp r2, r1 + 26480: ddec ble.n 2645c + 26482: f9b0 200e ldrsh.w r2, [r0, #14] + 26486: 454a cmp r2, r9 + 26488: dde8 ble.n 2645c ((x + 6 * size_x - 1) < 0) || // Clip left - 2639e: 2206 movs r2, #6 - 263a0: 980e ldr r0, [sp, #56] ; 0x38 - 263a2: fb12 1200 smlabb r2, r2, r0, r1 + 2648a: 2206 movs r2, #6 + 2648c: 980e ldr r0, [sp, #56] ; 0x38 + 2648e: fb12 1200 smlabb r2, r2, r0, r1 (y >= _height) || // Clip bottom - 263a6: 2a00 cmp r2, #0 - 263a8: dde2 ble.n 26370 + 26492: 2a00 cmp r2, #0 + 26494: dde2 ble.n 2645c ((y + 8 * size_y - 1) < 0)) // Clip top - 263aa: 9a02 ldr r2, [sp, #8] - 263ac: eb09 02c2 add.w r2, r9, r2, lsl #3 + 26496: 9a02 ldr r2, [sp, #8] + 26498: eb09 02c2 add.w r2, r9, r2, lsl #3 ((x + 6 * size_x - 1) < 0) || // Clip left - 263b0: 2a00 cmp r2, #0 - 263b2: dddd ble.n 26370 + 2649c: 2a00 cmp r2, #0 + 2649e: dddd ble.n 2645c if (!_cp437 && (c >= 176)) - 263b4: f89a 201c ldrb.w r2, [sl, #28] - 263b8: 2a01 cmp r2, #1 - 263ba: d003 beq.n 263c4 - 263bc: 2baf cmp r3, #175 ; 0xaf - 263be: d901 bls.n 263c4 + 264a0: f89a 201c ldrb.w r2, [sl, #28] + 264a4: 2a01 cmp r2, #1 + 264a6: d003 beq.n 264b0 + 264a8: 2baf cmp r3, #175 ; 0xaf + 264aa: d901 bls.n 264b0 c++; // Handle 'classic' charset behavior - 263c0: 3301 adds r3, #1 - 263c2: b2db uxtb r3, r3 + 264ac: 3301 adds r3, #1 + 264ae: b2db uxtb r3, r3 startWrite(); - 263c4: 4a49 ldr r2, [pc, #292] ; (264ec ) - 263c6: f8da 0000 ldr.w r0, [sl] - 263ca: 4611 mov r1, r2 - 263cc: 920f str r2, [sp, #60] ; 0x3c - 263ce: 6942 ldr r2, [r0, #20] - 263d0: 428a cmp r2, r1 - 263d2: f040 80f0 bne.w 265b6 + 264b0: 4a49 ldr r2, [pc, #292] ; (265d8 ) + 264b2: f8da 0000 ldr.w r0, [sl] + 264b6: 4611 mov r1, r2 + 264b8: 920f str r2, [sp, #60] ; 0x3c + 264ba: 6942 ldr r2, [r0, #20] + 264bc: 428a cmp r2, r1 + 264be: f040 80f0 bne.w 266a2 writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, bg); - 263d6: f8bd 2010 ldrh.w r2, [sp, #16] + 264c2: f8bd 2010 ldrh.w r2, [sp, #16] uint8_t line = pgm_read_byte(&font[c * 5 + i]); - 263da: eb03 0383 add.w r3, r3, r3, lsl #2 - 263de: f8cd 900c str.w r9, [sp, #12] - 263e2: 46d1 mov r9, sl + 264c6: eb03 0383 add.w r3, r3, r3, lsl #2 + 264ca: f8cd 900c str.w r9, [sp, #12] + 264ce: 46d1 mov r9, sl writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, bg); - 263e4: 4611 mov r1, r2 - 263e6: 920b str r2, [sp, #44] ; 0x2c - 263e8: 4a42 ldr r2, [pc, #264] ; (264f4 ) - 263ea: f8cd b010 str.w fp, [sp, #16] - 263ee: 18d3 adds r3, r2, r3 - 263f0: 460a mov r2, r1 - 263f2: f8dd 8014 ldr.w r8, [sp, #20] - 263f6: 9308 str r3, [sp, #32] - 263f8: 1d4b adds r3, r1, #5 - 263fa: 990e ldr r1, [sp, #56] ; 0x38 - 263fc: b29b uxth r3, r3 - 263fe: 9f02 ldr r7, [sp, #8] - 26400: 468b mov fp, r1 - 26402: 9309 str r3, [sp, #36] ; 0x24 - 26404: b28b uxth r3, r1 - 26406: 930a str r3, [sp, #40] ; 0x28 - 26408: 4603 mov r3, r0 - 2640a: e9cd 2206 strd r2, r2, [sp, #24] + 264d0: 4611 mov r1, r2 + 264d2: 920b str r2, [sp, #44] ; 0x2c + 264d4: 4a42 ldr r2, [pc, #264] ; (265e0 ) + 264d6: f8cd b010 str.w fp, [sp, #16] + 264da: 18d3 adds r3, r2, r3 + 264dc: 460a mov r2, r1 + 264de: f8dd 8014 ldr.w r8, [sp, #20] + 264e2: 9308 str r3, [sp, #32] + 264e4: 1d4b adds r3, r1, #5 + 264e6: 990e ldr r1, [sp, #56] ; 0x38 + 264e8: b29b uxth r3, r3 + 264ea: 9f02 ldr r7, [sp, #8] + 264ec: 468b mov fp, r1 + 264ee: 9309 str r3, [sp, #36] ; 0x24 + 264f0: b28b uxth r3, r1 + 264f2: 930a str r3, [sp, #40] ; 0x28 + 264f4: 4603 mov r3, r0 + 264f6: e9cd 2206 strd r2, r2, [sp, #24] uint8_t line = pgm_read_byte(&font[c * 5 + i]); - 2640e: 9a08 ldr r2, [sp, #32] + 264fa: 9a08 ldr r2, [sp, #32] writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, bg); - 26410: 2408 movs r4, #8 + 264fc: 2408 movs r4, #8 for (int8_t j = 0; j < 8; j++, line >>= 1) { - 26412: 2500 movs r5, #0 + 264fe: 2500 movs r5, #0 writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, bg); - 26414: 46ca mov sl, r9 + 26500: 46ca mov sl, r9 uint8_t line = pgm_read_byte(&font[c * 5 + i]); - 26416: f812 6b01 ldrb.w r6, [r2], #1 - 2641a: 9208 str r2, [sp, #32] + 26502: f812 6b01 ldrb.w r6, [r2], #1 + 26506: 9208 str r2, [sp, #32] writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, bg); - 2641c: f9bd 201c ldrsh.w r2, [sp, #28] - 26420: ee08 2a10 vmov s16, r2 - 26424: fa0f f28b sxth.w r2, fp - 26428: ee08 2a90 vmov s17, r2 - 2642c: e01c b.n 26468 + 26508: f9bd 201c ldrsh.w r2, [sp, #28] + 2650c: ee08 2a10 vmov s16, r2 + 26510: fa0f f28b sxth.w r2, fp + 26514: ee08 2a90 vmov s17, r2 + 26518: e01c b.n 26554 if (size_x == 1 && size_y == 1) - 2642e: f1bb 0f01 cmp.w fp, #1 + 2651a: f1bb 0f01 cmp.w fp, #1 writePixel(x + i, y + j, color); - 26432: 9a03 ldr r2, [sp, #12] + 2651e: 9a03 ldr r2, [sp, #12] if (size_x == 1 && size_y == 1) - 26434: d136 bne.n 264a4 - 26436: 2f01 cmp r7, #1 - 26438: d134 bne.n 264a4 + 26520: d136 bne.n 26590 + 26522: 2f01 cmp r7, #1 + 26524: d134 bne.n 26590 writePixel(x + i, y + j, color); - 2643a: f8d3 9018 ldr.w r9, [r3, #24] - 2643e: 18aa adds r2, r5, r2 - 26440: 482b ldr r0, [pc, #172] ; (264f0 ) - 26442: b212 sxth r2, r2 - 26444: f9bd 1018 ldrsh.w r1, [sp, #24] - 26448: 4581 cmp r9, r0 - 2644a: 4650 mov r0, sl + 26526: f8d3 9018 ldr.w r9, [r3, #24] + 2652a: 18aa adds r2, r5, r2 + 2652c: 482b ldr r0, [pc, #172] ; (265dc ) + 2652e: b212 sxth r2, r2 + 26530: f9bd 1018 ldrsh.w r1, [sp, #24] + 26534: 4581 cmp r9, r0 + 26536: 4650 mov r0, sl drawPixel(x, y, color); - 2644c: bf08 it eq - 2644e: f8d3 9010 ldreq.w r9, [r3, #16] + 26538: bf08 it eq + 2653a: f8d3 9010 ldreq.w r9, [r3, #16] writePixel(x + i, y + j, color); - 26452: 4643 mov r3, r8 - 26454: 47c8 blx r9 + 2653e: 4643 mov r3, r8 + 26540: 47c8 blx r9 writeFastVLine(x + 5, y, 8, bg); - 26456: f8da 3000 ldr.w r3, [sl] + 26542: f8da 3000 ldr.w r3, [sl] for (int8_t j = 0; j < 8; j++, line >>= 1) { - 2645a: 3c01 subs r4, #1 - 2645c: 3501 adds r5, #1 - 2645e: 0876 lsrs r6, r6, #1 - 26460: f014 04ff ands.w r4, r4, #255 ; 0xff - 26464: b26d sxtb r5, r5 - 26466: d049 beq.n 264fc + 26546: 3c01 subs r4, #1 + 26548: 3501 adds r5, #1 + 2654a: 0876 lsrs r6, r6, #1 + 2654c: f014 04ff ands.w r4, r4, #255 ; 0xff + 26550: b26d sxtb r5, r5 + 26552: d049 beq.n 265e8 if (line & 1) { - 26468: 07f0 lsls r0, r6, #31 - 2646a: d4e0 bmi.n 2642e + 26554: 07f0 lsls r0, r6, #31 + 26556: d4e0 bmi.n 2651a } else if (bg != color) { - 2646c: 9804 ldr r0, [sp, #16] - 2646e: 4580 cmp r8, r0 - 26470: d0f3 beq.n 2645a + 26558: 9804 ldr r0, [sp, #16] + 2655a: 4580 cmp r8, r0 + 2655c: d0f3 beq.n 26546 if (size_x == 1 && size_y == 1) - 26472: f1bb 0f01 cmp.w fp, #1 + 2655e: f1bb 0f01 cmp.w fp, #1 writePixel(x + i, y + j, bg); - 26476: 9a03 ldr r2, [sp, #12] + 26562: 9a03 ldr r2, [sp, #12] if (size_x == 1 && size_y == 1) - 26478: d12a bne.n 264d0 - 2647a: 2f01 cmp r7, #1 - 2647c: d128 bne.n 264d0 + 26564: d12a bne.n 265bc + 26566: 2f01 cmp r7, #1 + 26568: d128 bne.n 265bc writePixel(x + i, y + j, bg); - 2647e: 18aa adds r2, r5, r2 - 26480: f8d3 9018 ldr.w r9, [r3, #24] - 26484: f9bd 1018 ldrsh.w r1, [sp, #24] - 26488: fa0f fc82 sxth.w ip, r2 - 2648c: 4a18 ldr r2, [pc, #96] ; (264f0 ) - 2648e: 4591 cmp r9, r2 - 26490: d16f bne.n 26572 + 2656a: 18aa adds r2, r5, r2 + 2656c: f8d3 9018 ldr.w r9, [r3, #24] + 26570: f9bd 1018 ldrsh.w r1, [sp, #24] + 26574: fa0f fc82 sxth.w ip, r2 + 26578: 4a18 ldr r2, [pc, #96] ; (265dc ) + 2657a: 4591 cmp r9, r2 + 2657c: d16f bne.n 2665e drawPixel(x, y, color); - 26492: f8d3 9010 ldr.w r9, [r3, #16] - 26496: 4662 mov r2, ip - 26498: 4603 mov r3, r0 - 2649a: 4650 mov r0, sl - 2649c: 47c8 blx r9 + 2657e: f8d3 9010 ldr.w r9, [r3, #16] + 26582: 4662 mov r2, ip + 26584: 4603 mov r3, r0 + 26586: 4650 mov r0, sl + 26588: 47c8 blx r9 writeFastVLine(x + 5, y, 8, bg); - 2649e: f8da 3000 ldr.w r3, [sl] + 2658a: f8da 3000 ldr.w r3, [sl] } - 264a2: e7da b.n 2645a + 2658e: e7da b.n 26546 writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, - 264a4: f8d3 901c ldr.w r9, [r3, #28] - 264a8: fb05 2207 mla r2, r5, r7, r2 - 264ac: 4812 ldr r0, [pc, #72] ; (264f8 ) - 264ae: b239 sxth r1, r7 - 264b0: b212 sxth r2, r2 - 264b2: 4581 cmp r9, r0 + 26590: f8d3 901c ldr.w r9, [r3, #28] + 26594: fb05 2207 mla r2, r5, r7, r2 + 26598: 4812 ldr r0, [pc, #72] ; (265e4 ) + 2659a: b239 sxth r1, r7 + 2659c: b212 sxth r2, r2 + 2659e: 4581 cmp r9, r0 fillRect(x, y, w, h, color); - 264b4: e9cd 1800 strd r1, r8, [sp] - 264b8: d101 bne.n 264be - 264ba: f8d3 9040 ldr.w r9, [r3, #64] ; 0x40 + 265a0: e9cd 1800 strd r1, r8, [sp] + 265a4: d101 bne.n 265aa + 265a6: f8d3 9040 ldr.w r9, [r3, #64] ; 0x40 writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, bg); - 264be: ee18 3a90 vmov r3, s17 - 264c2: ee18 1a10 vmov r1, s16 - 264c6: 4650 mov r0, sl - 264c8: 47c8 blx r9 + 265aa: ee18 3a90 vmov r3, s17 + 265ae: ee18 1a10 vmov r1, s16 + 265b2: 4650 mov r0, sl + 265b4: 47c8 blx r9 writeFastVLine(x + 5, y, 8, bg); - 264ca: f8da 3000 ldr.w r3, [sl] - 264ce: e7c4 b.n 2645a + 265b6: f8da 3000 ldr.w r3, [sl] + 265ba: e7c4 b.n 26546 writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, bg); - 264d0: f8d3 901c ldr.w r9, [r3, #28] - 264d4: fb05 2207 mla r2, r5, r7, r2 - 264d8: 4807 ldr r0, [pc, #28] ; (264f8 ) - 264da: b239 sxth r1, r7 - 264dc: b212 sxth r2, r2 - 264de: 4581 cmp r9, r0 + 265bc: f8d3 901c ldr.w r9, [r3, #28] + 265c0: fb05 2207 mla r2, r5, r7, r2 + 265c4: 4807 ldr r0, [pc, #28] ; (265e4 ) + 265c6: b239 sxth r1, r7 + 265c8: b212 sxth r2, r2 + 265ca: 4581 cmp r9, r0 fillRect(x, y, w, h, color); - 264e0: 9100 str r1, [sp, #0] - 264e2: d14d bne.n 26580 - 264e4: 9904 ldr r1, [sp, #16] - 264e6: 9101 str r1, [sp, #4] - 264e8: e7e7 b.n 264ba - 264ea: bf00 nop - 264ec: 0002579d .word 0x0002579d - 264f0: 000257a1 .word 0x000257a1 - 264f4: 2000103c .word 0x2000103c - 264f8: 000257d9 .word 0x000257d9 + 265cc: 9100 str r1, [sp, #0] + 265ce: d14d bne.n 2666c + 265d0: 9904 ldr r1, [sp, #16] + 265d2: 9101 str r1, [sp, #4] + 265d4: e7e7 b.n 265a6 + 265d6: bf00 nop + 265d8: 00025889 .word 0x00025889 + 265dc: 0002588d .word 0x0002588d + 265e0: 2000103c .word 0x2000103c + 265e4: 000258c5 .word 0x000258c5 for (int8_t i = 0; i < 5; i++) { // Char bitmap = 5 columns - 264fc: 9a07 ldr r2, [sp, #28] - 264fe: 46d1 mov r9, sl - 26500: 980a ldr r0, [sp, #40] ; 0x28 - 26502: 9906 ldr r1, [sp, #24] - 26504: 4402 add r2, r0 - 26506: 3101 adds r1, #1 - 26508: b292 uxth r2, r2 - 2650a: b289 uxth r1, r1 - 2650c: 9207 str r2, [sp, #28] - 2650e: 9a09 ldr r2, [sp, #36] ; 0x24 - 26510: 9106 str r1, [sp, #24] - 26512: 428a cmp r2, r1 - 26514: f47f af7b bne.w 2640e + 265e8: 9a07 ldr r2, [sp, #28] + 265ea: 46d1 mov r9, sl + 265ec: 980a ldr r0, [sp, #40] ; 0x28 + 265ee: 9906 ldr r1, [sp, #24] + 265f0: 4402 add r2, r0 + 265f2: 3101 adds r1, #1 + 265f4: b292 uxth r2, r2 + 265f6: b289 uxth r1, r1 + 265f8: 9207 str r2, [sp, #28] + 265fa: 9a09 ldr r2, [sp, #36] ; 0x24 + 265fc: 9106 str r1, [sp, #24] + 265fe: 428a cmp r2, r1 + 26600: f47f af7b bne.w 264fa if (bg != color) { // If opaque, draw vertical line for last column - 26518: 4618 mov r0, r3 - 2651a: 9b05 ldr r3, [sp, #20] - 2651c: e9dd 9b03 ldrd r9, fp, [sp, #12] - 26520: 455b cmp r3, fp - 26522: d015 beq.n 26550 + 26604: 4618 mov r0, r3 + 26606: 9b05 ldr r3, [sp, #20] + 26608: e9dd 9b03 ldrd r9, fp, [sp, #12] + 2660c: 455b cmp r3, fp + 2660e: d015 beq.n 2663c if (size_x == 1 && size_y == 1) - 26524: 9b0e ldr r3, [sp, #56] ; 0x38 - 26526: 2b01 cmp r3, #1 - 26528: d12d bne.n 26586 - 2652a: 9b02 ldr r3, [sp, #8] - 2652c: 2b01 cmp r3, #1 - 2652e: d12a bne.n 26586 + 26610: 9b0e ldr r3, [sp, #56] ; 0x38 + 26612: 2b01 cmp r3, #1 + 26614: d12d bne.n 26672 + 26616: 9b02 ldr r3, [sp, #8] + 26618: 2b01 cmp r3, #1 + 2661a: d12a bne.n 26672 writeFastVLine(x + 5, y, 8, bg); - 26530: 6a04 ldr r4, [r0, #32] + 2661c: 6a04 ldr r4, [r0, #32] drawFastVLine(x, y, h, color); - 26532: 464a mov r2, r9 - 26534: 4b23 ldr r3, [pc, #140] ; (265c4 ) - 26536: f8cd b000 str.w fp, [sp] - 2653a: 429c cmp r4, r3 + 2661e: 464a mov r2, r9 + 26620: 4b23 ldr r3, [pc, #140] ; (266b0 ) + 26622: f8cd b000 str.w fp, [sp] + 26626: 429c cmp r4, r3 writeFastVLine(x + 5, y, 8, bg); - 2653c: f9bd 1024 ldrsh.w r1, [sp, #36] ; 0x24 - 26540: f04f 0308 mov.w r3, #8 + 26628: f9bd 1024 ldrsh.w r1, [sp, #36] ; 0x24 + 2662c: f04f 0308 mov.w r3, #8 drawFastVLine(x, y, h, color); - 26544: bf08 it eq - 26546: 6b84 ldreq r4, [r0, #56] ; 0x38 + 26630: bf08 it eq + 26632: 6b84 ldreq r4, [r0, #56] ; 0x38 writeFastVLine(x + 5, y, 8, bg); - 26548: 4650 mov r0, sl - 2654a: 47a0 blx r4 + 26634: 4650 mov r0, sl + 26636: 47a0 blx r4 endWrite(); - 2654c: f8da 0000 ldr.w r0, [sl] - 26550: 6ac3 ldr r3, [r0, #44] ; 0x2c - 26552: 9a0f ldr r2, [sp, #60] ; 0x3c - 26554: 4293 cmp r3, r2 - 26556: f43f af0b beq.w 26370 + 26638: f8da 0000 ldr.w r0, [sl] + 2663c: 6ac3 ldr r3, [r0, #44] ; 0x2c + 2663e: 9a0f ldr r2, [sp, #60] ; 0x3c + 26640: 4293 cmp r3, r2 + 26642: f43f af0b beq.w 2645c endWrite(); - 2655a: 4650 mov r0, sl + 26646: 4650 mov r0, sl } - 2655c: b011 add sp, #68 ; 0x44 - 2655e: ecbd 8b02 vpop {d8} - 26562: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 26648: b011 add sp, #68 ; 0x44 + 2664a: ecbd 8b02 vpop {d8} + 2664e: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} endWrite(); - 26566: 4718 bx r3 + 26652: 4718 bx r3 startWrite(); - 26568: 4650 mov r0, sl - 2656a: 4798 blx r3 + 26654: 4650 mov r0, sl + 26656: 4798 blx r3 endWrite(); - 2656c: f8da 2000 ldr.w r2, [sl] - 26570: e67d b.n 2626e + 26658: f8da 2000 ldr.w r2, [sl] + 2665c: e67d b.n 2635a writePixel(x + i, y + j, bg); - 26572: 9b04 ldr r3, [sp, #16] - 26574: 4662 mov r2, ip - 26576: 4650 mov r0, sl - 26578: 47c8 blx r9 + 2665e: 9b04 ldr r3, [sp, #16] + 26660: 4662 mov r2, ip + 26662: 4650 mov r0, sl + 26664: 47c8 blx r9 writeFastVLine(x + 5, y, 8, bg); - 2657a: f8da 3000 ldr.w r3, [sl] - 2657e: e76c b.n 2645a + 26666: f8da 3000 ldr.w r3, [sl] + 2666a: e76c b.n 26546 writeFillRect(x + i * size_x, y + j * size_y, size_x, size_y, bg); - 26580: 9b04 ldr r3, [sp, #16] - 26582: 9301 str r3, [sp, #4] - 26584: e79b b.n 264be + 2666c: 9b04 ldr r3, [sp, #16] + 2666e: 9301 str r3, [sp, #4] + 26670: e79b b.n 265aa writeFillRect(x + 5 * size_x, y, size_x, 8 * size_y, bg); - 26586: 9b0a ldr r3, [sp, #40] ; 0x28 - 26588: 69c4 ldr r4, [r0, #28] - 2658a: eb03 0183 add.w r1, r3, r3, lsl #2 - 2658e: 9b0b ldr r3, [sp, #44] ; 0x2c - 26590: 9a02 ldr r2, [sp, #8] - 26592: 440b add r3, r1 - 26594: 4d0c ldr r5, [pc, #48] ; (265c8 ) - 26596: 00d2 lsls r2, r2, #3 - 26598: 4619 mov r1, r3 - 2659a: 42ac cmp r4, r5 - 2659c: f9bd 3038 ldrsh.w r3, [sp, #56] ; 0x38 - 265a0: b209 sxth r1, r1 + 26672: 9b0a ldr r3, [sp, #40] ; 0x28 + 26674: 69c4 ldr r4, [r0, #28] + 26676: eb03 0183 add.w r1, r3, r3, lsl #2 + 2667a: 9b0b ldr r3, [sp, #44] ; 0x2c + 2667c: 9a02 ldr r2, [sp, #8] + 2667e: 440b add r3, r1 + 26680: 4d0c ldr r5, [pc, #48] ; (266b4 ) + 26682: 00d2 lsls r2, r2, #3 + 26684: 4619 mov r1, r3 + 26686: 42ac cmp r4, r5 + 26688: f9bd 3038 ldrsh.w r3, [sp, #56] ; 0x38 + 2668c: b209 sxth r1, r1 fillRect(x, y, w, h, color); - 265a2: e9cd 2b00 strd r2, fp, [sp] + 2668e: e9cd 2b00 strd r2, fp, [sp] writeFillRect(x + 5 * size_x, y, size_x, 8 * size_y, bg); - 265a6: 464a mov r2, r9 + 26692: 464a mov r2, r9 fillRect(x, y, w, h, color); - 265a8: bf08 it eq - 265aa: 6c04 ldreq r4, [r0, #64] ; 0x40 + 26694: bf08 it eq + 26696: 6c04 ldreq r4, [r0, #64] ; 0x40 writeFillRect(x + 5 * size_x, y, size_x, 8 * size_y, bg); - 265ac: 4650 mov r0, sl - 265ae: 47a0 blx r4 + 26698: 4650 mov r0, sl + 2669a: 47a0 blx r4 endWrite(); - 265b0: f8da 0000 ldr.w r0, [sl] - 265b4: e7cc b.n 26550 + 2669c: f8da 0000 ldr.w r0, [sl] + 266a0: e7cc b.n 2663c startWrite(); - 265b6: 4650 mov r0, sl - 265b8: 9303 str r3, [sp, #12] - 265ba: 4790 blx r2 + 266a2: 4650 mov r0, sl + 266a4: 9303 str r3, [sp, #12] + 266a6: 4790 blx r2 writePixel(x + i, y + j, color); - 265bc: f8da 0000 ldr.w r0, [sl] - 265c0: 9b03 ldr r3, [sp, #12] - 265c2: e708 b.n 263d6 - 265c4: 000257b1 .word 0x000257b1 - 265c8: 000257d9 .word 0x000257d9 + 266a8: f8da 0000 ldr.w r0, [sl] + 266ac: 9b03 ldr r3, [sp, #12] + 266ae: e708 b.n 264c2 + 266b0: 0002589d .word 0x0002589d + 266b4: 000258c5 .word 0x000258c5 -000265cc : +000266b8 : if (!gfxFont) { // 'Classic' built-in font - 265cc: 6a03 ldr r3, [r0, #32] + 266b8: 6a03 ldr r3, [r0, #32] size_t Adafruit_GFX::write(uint8_t c) { - 265ce: b5f0 push {r4, r5, r6, r7, lr} - 265d0: 4607 mov r7, r0 - 265d2: b085 sub sp, #20 + 266ba: b5f0 push {r4, r5, r6, r7, lr} + 266bc: 4607 mov r7, r0 + 266be: b085 sub sp, #20 if (!gfxFont) { // 'Classic' built-in font - 265d4: 2b00 cmp r3, #0 - 265d6: d03a beq.n 2664e + 266c0: 2b00 cmp r3, #0 + 266c2: d03a beq.n 2673a if (c == '\n') { - 265d8: 290a cmp r1, #10 - 265da: d02b beq.n 26634 + 266c4: 290a cmp r1, #10 + 266c6: d02b beq.n 26720 } else if (c != '\r') { - 265dc: 290d cmp r1, #13 - 265de: d033 beq.n 26648 + 266c8: 290d cmp r1, #13 + 266ca: d033 beq.n 26734 uint8_t first = pgm_read_byte(&gfxFont->first); - 265e0: 7a1a ldrb r2, [r3, #8] + 266cc: 7a1a ldrb r2, [r3, #8] if ((c >= first) && (c <= (uint8_t)pgm_read_byte(&gfxFont->last))) { - 265e2: 4291 cmp r1, r2 - 265e4: d330 bcc.n 26648 - 265e6: 7a9c ldrb r4, [r3, #10] - 265e8: 428c cmp r4, r1 - 265ea: d32d bcc.n 26648 + 266ce: 4291 cmp r1, r2 + 266d0: d330 bcc.n 26734 + 266d2: 7a9c ldrb r4, [r3, #10] + 266d4: 428c cmp r4, r1 + 266d6: d32d bcc.n 26734 GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c - first); - 265ec: 1a8a subs r2, r1, r2 + 266d8: 1a8a subs r2, r1, r2 return gfxFont->glyph + c; - 265ee: 685c ldr r4, [r3, #4] - 265f0: b2d2 uxtb r2, r2 - 265f2: eb04 04c2 add.w r4, r4, r2, lsl #3 + 266da: 685c ldr r4, [r3, #4] + 266dc: b2d2 uxtb r2, r2 + 266de: eb04 04c2 add.w r4, r4, r2, lsl #3 if ((w > 0) && (h > 0)) { // Is there an associated bitmap? - 265f6: 78e5 ldrb r5, [r4, #3] + 266e2: 78e5 ldrb r5, [r4, #3] uint8_t w = pgm_read_byte(&glyph->width), - 265f8: 78a2 ldrb r2, [r4, #2] + 266e4: 78a2 ldrb r2, [r4, #2] if ((w > 0) && (h > 0)) { // Is there an associated bitmap? - 265fa: b1a5 cbz r5, 26626 - 265fc: b19a cbz r2, 26626 + 266e6: b1a5 cbz r5, 26712 + 266e8: b19a cbz r2, 26712 if (wrap && ((cursor_x + textsize_x * (xo + w)) > _width)) { - 265fe: 7ec5 ldrb r5, [r0, #27] - 26600: 2d00 cmp r5, #0 - 26602: d163 bne.n 266cc + 266ea: 7ec5 ldrb r5, [r0, #27] + 266ec: 2d00 cmp r5, #0 + 266ee: d163 bne.n 267b8 if (wrap && ((cursor_x + textsize_x * 6) > _width)) { // Off right? - 26604: 7e06 ldrb r6, [r0, #24] + 266f0: 7e06 ldrb r6, [r0, #24] cursor_y += textsize_y * 8; // advance y one line - 26606: 7e43 ldrb r3, [r0, #25] + 266f2: 7e43 ldrb r3, [r0, #25] if (wrap && ((cursor_x + textsize_x * 6) > _width)) { // Off right? - 26608: f9b0 5010 ldrsh.w r5, [r0, #16] + 266f4: f9b0 5010 ldrsh.w r5, [r0, #16] cursor_y += textsize_y * 8; // advance y one line - 2660c: f9b0 2012 ldrsh.w r2, [r0, #18] + 266f8: f9b0 2012 ldrsh.w r2, [r0, #18] drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize_x, - 26610: 4638 mov r0, r7 - 26612: e9cd 6302 strd r6, r3, [sp, #8] - 26616: 460b mov r3, r1 - 26618: 4629 mov r1, r5 - 2661a: 8afd ldrh r5, [r7, #22] - 2661c: 9501 str r5, [sp, #4] - 2661e: 8abd ldrh r5, [r7, #20] - 26620: 9500 str r5, [sp, #0] - 26622: f7ff fde9 bl 261f8 + 266fc: 4638 mov r0, r7 + 266fe: e9cd 6302 strd r6, r3, [sp, #8] + 26702: 460b mov r3, r1 + 26704: 4629 mov r1, r5 + 26706: 8afd ldrh r5, [r7, #22] + 26708: 9501 str r5, [sp, #4] + 2670a: 8abd ldrh r5, [r7, #20] + 2670c: 9500 str r5, [sp, #0] + 2670e: f7ff fde9 bl 262e4 (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize_x; - 26626: 7921 ldrb r1, [r4, #4] + 26712: 7921 ldrb r1, [r4, #4] cursor_x += - 26628: 8a3b ldrh r3, [r7, #16] + 26714: 8a3b ldrh r3, [r7, #16] (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize_x; - 2662a: 7e3a ldrb r2, [r7, #24] + 26716: 7e3a ldrb r2, [r7, #24] cursor_x += - 2662c: fb01 3302 mla r3, r1, r2, r3 - 26630: 823b strh r3, [r7, #16] - 26632: e009 b.n 26648 + 26718: fb01 3302 mla r3, r1, r2, r3 + 2671c: 823b strh r3, [r7, #16] + 2671e: e009 b.n 26734 cursor_x = 0; - 26634: f04f 0c00 mov.w ip, #0 + 26720: f04f 0c00 mov.w ip, #0 cursor_y += - 26638: 8a42 ldrh r2, [r0, #18] + 26724: 8a42 ldrh r2, [r0, #18] (int16_t)textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - 2663a: 7e41 ldrb r1, [r0, #25] + 26726: 7e41 ldrb r1, [r0, #25] cursor_x = 0; - 2663c: f8a0 c010 strh.w ip, [r0, #16] + 26728: f8a0 c010 strh.w ip, [r0, #16] (int16_t)textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - 26640: 7b1b ldrb r3, [r3, #12] + 2672c: 7b1b ldrb r3, [r3, #12] cursor_y += - 26642: fb01 2303 mla r3, r1, r3, r2 - 26646: 8243 strh r3, [r0, #18] + 2672e: fb01 2303 mla r3, r1, r3, r2 + 26732: 8243 strh r3, [r0, #18] } - 26648: 2001 movs r0, #1 - 2664a: b005 add sp, #20 - 2664c: bdf0 pop {r4, r5, r6, r7, pc} + 26734: 2001 movs r0, #1 + 26736: b005 add sp, #20 + 26738: bdf0 pop {r4, r5, r6, r7, pc} if (c == '\n') { // Newline? - 2664e: 290a cmp r1, #10 - 26650: d01e beq.n 26690 + 2673a: 290a cmp r1, #10 + 2673c: d01e beq.n 2677c } else if (c != '\r') { // Ignore carriage returns - 26652: 290d cmp r1, #13 - 26654: d0f8 beq.n 26648 + 2673e: 290d cmp r1, #13 + 26740: d0f8 beq.n 26734 if (wrap && ((cursor_x + textsize_x * 6) > _width)) { // Off right? - 26656: 7ec2 ldrb r2, [r0, #27] - 26658: f9b0 4010 ldrsh.w r4, [r0, #16] - 2665c: bb0a cbnz r2, 266a2 + 26742: 7ec2 ldrb r2, [r0, #27] + 26744: f9b0 4010 ldrsh.w r4, [r0, #16] + 26748: bb0a cbnz r2, 2678e cursor_y += textsize_y * 8; // advance y one line - 2665e: f9b0 2012 ldrsh.w r2, [r0, #18] + 2674a: f9b0 2012 ldrsh.w r2, [r0, #18] if (wrap && ((cursor_x + textsize_x * 6) > _width)) { // Off right? - 26662: 7e06 ldrb r6, [r0, #24] + 2674e: 7e06 ldrb r6, [r0, #24] cursor_y += textsize_y * 8; // advance y one line - 26664: 7e45 ldrb r5, [r0, #25] + 26750: 7e45 ldrb r5, [r0, #25] drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize_x, - 26666: 9503 str r5, [sp, #12] - 26668: 460b mov r3, r1 - 2666a: 9602 str r6, [sp, #8] - 2666c: 4621 mov r1, r4 - 2666e: 8afc ldrh r4, [r7, #22] - 26670: 4638 mov r0, r7 - 26672: 9401 str r4, [sp, #4] - 26674: 8abc ldrh r4, [r7, #20] - 26676: 9400 str r4, [sp, #0] - 26678: f7ff fdbe bl 261f8 + 26752: 9503 str r5, [sp, #12] + 26754: 460b mov r3, r1 + 26756: 9602 str r6, [sp, #8] + 26758: 4621 mov r1, r4 + 2675a: 8afc ldrh r4, [r7, #22] + 2675c: 4638 mov r0, r7 + 2675e: 9401 str r4, [sp, #4] + 26760: 8abc ldrh r4, [r7, #20] + 26762: 9400 str r4, [sp, #0] + 26764: f7ff fdbe bl 262e4 cursor_x += textsize_x * 6; // Advance x one char - 2667c: 7e3b ldrb r3, [r7, #24] - 2667e: 8a3a ldrh r2, [r7, #16] + 26768: 7e3b ldrb r3, [r7, #24] + 2676a: 8a3a ldrh r2, [r7, #16] } - 26680: 2001 movs r0, #1 + 2676c: 2001 movs r0, #1 cursor_x += textsize_x * 6; // Advance x one char - 26682: eb03 0343 add.w r3, r3, r3, lsl #1 - 26686: eb02 0343 add.w r3, r2, r3, lsl #1 - 2668a: 823b strh r3, [r7, #16] + 2676e: eb03 0343 add.w r3, r3, r3, lsl #1 + 26772: eb02 0343 add.w r3, r2, r3, lsl #1 + 26776: 823b strh r3, [r7, #16] } - 2668c: b005 add sp, #20 - 2668e: bdf0 pop {r4, r5, r6, r7, pc} + 26778: b005 add sp, #20 + 2677a: bdf0 pop {r4, r5, r6, r7, pc} cursor_y += textsize_y * 8; // advance y one line - 26690: 8a42 ldrh r2, [r0, #18] - 26692: 7e41 ldrb r1, [r0, #25] + 2677c: 8a42 ldrh r2, [r0, #18] + 2677e: 7e41 ldrb r1, [r0, #25] cursor_x = 0; // Reset x to zero, - 26694: 8203 strh r3, [r0, #16] + 26780: 8203 strh r3, [r0, #16] cursor_y += textsize_y * 8; // advance y one line - 26696: eb02 03c1 add.w r3, r2, r1, lsl #3 - 2669a: 8243 strh r3, [r0, #18] + 26782: eb02 03c1 add.w r3, r2, r1, lsl #3 + 26786: 8243 strh r3, [r0, #18] } - 2669c: 2001 movs r0, #1 - 2669e: b005 add sp, #20 - 266a0: bdf0 pop {r4, r5, r6, r7, pc} + 26788: 2001 movs r0, #1 + 2678a: b005 add sp, #20 + 2678c: bdf0 pop {r4, r5, r6, r7, pc} if (wrap && ((cursor_x + textsize_x * 6) > _width)) { // Off right? - 266a2: 7e06 ldrb r6, [r0, #24] - 266a4: 2206 movs r2, #6 - 266a6: f9b0 500c ldrsh.w r5, [r0, #12] - 266aa: fb12 4206 smlabb r2, r2, r6, r4 - 266ae: 42aa cmp r2, r5 - 266b0: dd08 ble.n 266c4 + 2678e: 7e06 ldrb r6, [r0, #24] + 26790: 2206 movs r2, #6 + 26792: f9b0 500c ldrsh.w r5, [r0, #12] + 26796: fb12 4206 smlabb r2, r2, r6, r4 + 2679a: 42aa cmp r2, r5 + 2679c: dd08 ble.n 267b0 cursor_y += textsize_y * 8; // advance y one line - 266b2: 8a42 ldrh r2, [r0, #18] - 266b4: 461c mov r4, r3 - 266b6: 7e45 ldrb r5, [r0, #25] + 2679e: 8a42 ldrh r2, [r0, #18] + 267a0: 461c mov r4, r3 + 267a2: 7e45 ldrb r5, [r0, #25] cursor_x = 0; // Reset x to zero, - 266b8: 8203 strh r3, [r0, #16] + 267a4: 8203 strh r3, [r0, #16] cursor_y += textsize_y * 8; // advance y one line - 266ba: eb02 02c5 add.w r2, r2, r5, lsl #3 - 266be: b212 sxth r2, r2 - 266c0: 8242 strh r2, [r0, #18] - 266c2: e7d0 b.n 26666 + 267a6: eb02 02c5 add.w r2, r2, r5, lsl #3 + 267aa: b212 sxth r2, r2 + 267ac: 8242 strh r2, [r0, #18] + 267ae: e7d0 b.n 26752 cursor_y += textsize_y * 8; // advance y one line - 266c4: f9b0 2012 ldrsh.w r2, [r0, #18] - 266c8: 7e45 ldrb r5, [r0, #25] - 266ca: e7cc b.n 26666 + 267b0: f9b0 2012 ldrsh.w r2, [r0, #18] + 267b4: 7e45 ldrb r5, [r0, #25] + 267b6: e7cc b.n 26752 if (wrap && ((cursor_x + textsize_x * (xo + w)) > _width)) { - 266cc: f994 5005 ldrsb.w r5, [r4, #5] - 266d0: 7e06 ldrb r6, [r0, #24] - 266d2: 442a add r2, r5 - 266d4: f9b0 5010 ldrsh.w r5, [r0, #16] - 266d8: f9b0 c00c ldrsh.w ip, [r0, #12] - 266dc: fb06 5202 mla r2, r6, r2, r5 - 266e0: 4562 cmp r2, ip - 266e2: dc03 bgt.n 266ec + 267b8: f994 5005 ldrsb.w r5, [r4, #5] + 267bc: 7e06 ldrb r6, [r0, #24] + 267be: 442a add r2, r5 + 267c0: f9b0 5010 ldrsh.w r5, [r0, #16] + 267c4: f9b0 c00c ldrsh.w ip, [r0, #12] + 267c8: fb06 5202 mla r2, r6, r2, r5 + 267cc: 4562 cmp r2, ip + 267ce: dc03 bgt.n 267d8 cursor_y += textsize_y * 8; // advance y one line - 266e4: 7e43 ldrb r3, [r0, #25] - 266e6: f9b0 2012 ldrsh.w r2, [r0, #18] - 266ea: e791 b.n 26610 + 267d0: 7e43 ldrb r3, [r0, #25] + 267d2: f9b0 2012 ldrsh.w r2, [r0, #18] + 267d6: e791 b.n 266fc cursor_x = 0; - 266ec: 2500 movs r5, #0 + 267d8: 2500 movs r5, #0 cursor_y += (int16_t)textsize_y * - 266ee: 8a42 ldrh r2, [r0, #18] + 267da: 8a42 ldrh r2, [r0, #18] cursor_x = 0; - 266f0: 8205 strh r5, [r0, #16] + 267dc: 8205 strh r5, [r0, #16] (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - 266f2: f893 c00c ldrb.w ip, [r3, #12] + 267de: f893 c00c ldrb.w ip, [r3, #12] cursor_y += (int16_t)textsize_y * - 266f6: 7e43 ldrb r3, [r0, #25] - 266f8: fb0c 2203 mla r2, ip, r3, r2 - 266fc: b212 sxth r2, r2 - 266fe: 8242 strh r2, [r0, #18] - 26700: e786 b.n 26610 - 26702: bf00 nop - -00026704 : + 267e2: 7e43 ldrb r3, [r0, #25] + 267e4: fb0c 2203 mla r2, ip, r3, r2 + 267e8: b212 sxth r2, r2 + 267ea: 8242 strh r2, [r0, #18] + 267ec: e786 b.n 266fc + 267ee: bf00 nop + +000267f0 : textsize_x = (s_x > 0) ? s_x : 1; - 26704: 2901 cmp r1, #1 - 26706: bf38 it cc - 26708: 2101 movcc r1, #1 - 2670a: 7601 strb r1, [r0, #24] + 267f0: 2901 cmp r1, #1 + 267f2: bf38 it cc + 267f4: 2101 movcc r1, #1 + 267f6: 7601 strb r1, [r0, #24] textsize_y = (s_y > 0) ? s_y : 1; - 2670c: 7641 strb r1, [r0, #25] + 267f8: 7641 strb r1, [r0, #25] void Adafruit_GFX::setTextSize(uint8_t s) { setTextSize(s, s); } - 2670e: 4770 bx lr + 267fa: 4770 bx lr -00026710 : +000267fc : if (!gfxFont) { // And no current font struct? - 26710: 6a03 ldr r3, [r0, #32] + 267fc: 6a03 ldr r3, [r0, #32] if (f) { // Font struct pointer passed in? - 26712: b139 cbz r1, 26724 + 267fe: b139 cbz r1, 26810 if (!gfxFont) { // And no current font struct? - 26714: b10b cbz r3, 2671a + 26800: b10b cbz r3, 26806 gfxFont = (GFXfont *)f; - 26716: 6201 str r1, [r0, #32] + 26802: 6201 str r1, [r0, #32] } - 26718: 4770 bx lr + 26804: 4770 bx lr cursor_y += 6; - 2671a: 8a43 ldrh r3, [r0, #18] + 26806: 8a43 ldrh r3, [r0, #18] gfxFont = (GFXfont *)f; - 2671c: 6201 str r1, [r0, #32] + 26808: 6201 str r1, [r0, #32] cursor_y += 6; - 2671e: 3306 adds r3, #6 - 26720: 8243 strh r3, [r0, #18] + 2680a: 3306 adds r3, #6 + 2680c: 8243 strh r3, [r0, #18] } - 26722: 4770 bx lr + 2680e: 4770 bx lr } else if (gfxFont) { // NULL passed. Current font struct defined? - 26724: 2b00 cmp r3, #0 - 26726: d0f6 beq.n 26716 + 26810: 2b00 cmp r3, #0 + 26812: d0f6 beq.n 26802 cursor_y -= 6; - 26728: 8a43 ldrh r3, [r0, #18] + 26814: 8a43 ldrh r3, [r0, #18] gfxFont = (GFXfont *)f; - 2672a: 6201 str r1, [r0, #32] + 26816: 6201 str r1, [r0, #32] cursor_y -= 6; - 2672c: 3b06 subs r3, #6 - 2672e: 8243 strh r3, [r0, #18] + 26818: 3b06 subs r3, #6 + 2681a: 8243 strh r3, [r0, #18] } - 26730: 4770 bx lr - 26732: bf00 nop + 2681c: 4770 bx lr + 2681e: bf00 nop -00026734 : +00026820 : int16_t *maxy) { - 26734: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 26820: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} if (gfxFont) { - 26738: 6a04 ldr r4, [r0, #32] - 2673a: 2c00 cmp r4, #0 - 2673c: d05f beq.n 267fe + 26824: 6a04 ldr r4, [r0, #32] + 26826: 2c00 cmp r4, #0 + 26828: d05f beq.n 268ea if (c == '\n') { // Newline? - 2673e: 290a cmp r1, #10 - 26740: d053 beq.n 267ea + 2682a: 290a cmp r1, #10 + 2682c: d053 beq.n 268d6 } else if (c != '\r') { // Not a carriage return; is normal char - 26742: 290d cmp r1, #13 - 26744: d059 beq.n 267fa + 2682e: 290d cmp r1, #13 + 26830: d059 beq.n 268e6 if ((c >= first) && (c <= last)) { // Char present in this font? - 26746: 7aa6 ldrb r6, [r4, #10] + 26832: 7aa6 ldrb r6, [r4, #10] uint8_t first = pgm_read_byte(&gfxFont->first), - 26748: 7a25 ldrb r5, [r4, #8] + 26834: 7a25 ldrb r5, [r4, #8] if ((c >= first) && (c <= last)) { // Char present in this font? - 2674a: 428e cmp r6, r1 - 2674c: d355 bcc.n 267fa - 2674e: 42a9 cmp r1, r5 - 26750: d353 bcc.n 267fa + 26836: 428e cmp r6, r1 + 26838: d355 bcc.n 268e6 + 2683a: 42a9 cmp r1, r5 + 2683c: d353 bcc.n 268e6 GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c - first); - 26752: 1b49 subs r1, r1, r5 + 2683e: 1b49 subs r1, r1, r5 return gfxFont->glyph + c; - 26754: 6865 ldr r5, [r4, #4] + 26840: 6865 ldr r5, [r4, #4] if (wrap && ((*x + (((int16_t)xo + gw) * textsize_x)) > _width)) { - 26756: 7ec6 ldrb r6, [r0, #27] + 26842: 7ec6 ldrb r6, [r0, #27] return gfxFont->glyph + c; - 26758: b2c9 uxtb r1, r1 - 2675a: eb05 01c1 add.w r1, r5, r1, lsl #3 + 26844: b2c9 uxtb r1, r1 + 26846: eb05 01c1 add.w r1, r5, r1, lsl #3 uint8_t gw = pgm_read_byte(&glyph->width), - 2675e: f891 c002 ldrb.w ip, [r1, #2] + 2684a: f891 c002 ldrb.w ip, [r1, #2] gh = pgm_read_byte(&glyph->height), - 26762: 78cd ldrb r5, [r1, #3] + 2684e: 78cd ldrb r5, [r1, #3] xa = pgm_read_byte(&glyph->xAdvance); - 26764: f891 e004 ldrb.w lr, [r1, #4] + 26850: f891 e004 ldrb.w lr, [r1, #4] int8_t xo = pgm_read_byte(&glyph->xOffset), - 26768: f991 8005 ldrsb.w r8, [r1, #5] + 26854: f991 8005 ldrsb.w r8, [r1, #5] yo = pgm_read_byte(&glyph->yOffset); - 2676c: f991 7006 ldrsb.w r7, [r1, #6] + 26858: f991 7006 ldrsb.w r7, [r1, #6] if (wrap && ((*x + (((int16_t)xo + gw) * textsize_x)) > _width)) { - 26770: 2e00 cmp r6, #0 - 26772: f040 8088 bne.w 26886 + 2685c: 2e00 cmp r6, #0 + 2685e: f040 8088 bne.w 26972 x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, - 26776: 881c ldrh r4, [r3, #0] + 26862: 881c ldrh r4, [r3, #0] if (wrap && ((*x + (((int16_t)xo + gw) * textsize_x)) > _width)) { - 26778: f9b2 6000 ldrsh.w r6, [r2] - 2677c: 7e01 ldrb r1, [r0, #24] + 26864: f9b2 6000 ldrsh.w r6, [r2] + 26868: 7e01 ldrb r1, [r0, #24] x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, - 2677e: 7e43 ldrb r3, [r0, #25] - 26780: fb08 6601 mla r6, r8, r1, r6 - 26784: fb07 4403 mla r4, r7, r3, r4 + 2686a: 7e43 ldrb r3, [r0, #25] + 2686c: fb08 6601 mla r6, r8, r1, r6 + 26870: fb07 4403 mla r4, r7, r3, r4 y2 = y1 + gh * tsy - 1; - 26788: fb15 f003 smulbb r0, r5, r3 + 26874: fb15 f003 smulbb r0, r5, r3 x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, - 2678c: fb0c f301 mul.w r3, ip, r1 + 26878: fb0c f301 mul.w r3, ip, r1 if (x1 < *minx) - 26790: 9d08 ldr r5, [sp, #32] + 2687c: 9d08 ldr r5, [sp, #32] y2 = y1 + gh * tsy - 1; - 26792: 3801 subs r0, #1 + 2687e: 3801 subs r0, #1 x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, - 26794: b289 uxth r1, r1 - 26796: 3b01 subs r3, #1 + 26880: b289 uxth r1, r1 + 26882: 3b01 subs r3, #1 if (x1 < *minx) - 26798: f9b5 5000 ldrsh.w r5, [r5] + 26884: f9b5 5000 ldrsh.w r5, [r5] y2 = y1 + gh * tsy - 1; - 2679c: fa10 f084 uxtah r0, r0, r4 + 26888: fa10 f084 uxtah r0, r0, r4 x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, - 267a0: b224 sxth r4, r4 - 267a2: fa13 f386 uxtah r3, r3, r6 - 267a6: b236 sxth r6, r6 + 2688c: b224 sxth r4, r4 + 2688e: fa13 f386 uxtah r3, r3, r6 + 26892: b236 sxth r6, r6 y2 = y1 + gh * tsy - 1; - 267a8: b200 sxth r0, r0 + 26894: b200 sxth r0, r0 if (x1 < *minx) - 267aa: 42b5 cmp r5, r6 + 26896: 42b5 cmp r5, r6 x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, - 267ac: b21b sxth r3, r3 + 26898: b21b sxth r3, r3 if (x1 < *minx) - 267ae: dd01 ble.n 267b4 + 2689a: dd01 ble.n 268a0 *minx = x1; - 267b0: 9d08 ldr r5, [sp, #32] - 267b2: 802e strh r6, [r5, #0] + 2689c: 9d08 ldr r5, [sp, #32] + 2689e: 802e strh r6, [r5, #0] if (y1 < *miny) - 267b4: 9d09 ldr r5, [sp, #36] ; 0x24 - 267b6: f9b5 5000 ldrsh.w r5, [r5] - 267ba: 42a5 cmp r5, r4 - 267bc: dd01 ble.n 267c2 + 268a0: 9d09 ldr r5, [sp, #36] ; 0x24 + 268a2: f9b5 5000 ldrsh.w r5, [r5] + 268a6: 42a5 cmp r5, r4 + 268a8: dd01 ble.n 268ae *miny = y1; - 267be: 9d09 ldr r5, [sp, #36] ; 0x24 - 267c0: 802c strh r4, [r5, #0] + 268aa: 9d09 ldr r5, [sp, #36] ; 0x24 + 268ac: 802c strh r4, [r5, #0] if (x2 > *maxx) - 267c2: 9c0a ldr r4, [sp, #40] ; 0x28 - 267c4: f9b4 4000 ldrsh.w r4, [r4] - 267c8: 429c cmp r4, r3 - 267ca: da01 bge.n 267d0 + 268ae: 9c0a ldr r4, [sp, #40] ; 0x28 + 268b0: f9b4 4000 ldrsh.w r4, [r4] + 268b4: 429c cmp r4, r3 + 268b6: da01 bge.n 268bc *maxx = x2; - 267cc: 9c0a ldr r4, [sp, #40] ; 0x28 - 267ce: 8023 strh r3, [r4, #0] + 268b8: 9c0a ldr r4, [sp, #40] ; 0x28 + 268ba: 8023 strh r3, [r4, #0] if (y2 > *maxy) - 267d0: 9b0b ldr r3, [sp, #44] ; 0x2c - 267d2: f9b3 3000 ldrsh.w r3, [r3] - 267d6: 4283 cmp r3, r0 - 267d8: da01 bge.n 267de + 268bc: 9b0b ldr r3, [sp, #44] ; 0x2c + 268be: f9b3 3000 ldrsh.w r3, [r3] + 268c2: 4283 cmp r3, r0 + 268c4: da01 bge.n 268ca *maxy = y2; - 267da: 9b0b ldr r3, [sp, #44] ; 0x2c - 267dc: 8018 strh r0, [r3, #0] + 268c6: 9b0b ldr r3, [sp, #44] ; 0x2c + 268c8: 8018 strh r0, [r3, #0] *x += xa * tsx; - 267de: 8813 ldrh r3, [r2, #0] - 267e0: fb0e 3301 mla r3, lr, r1, r3 - 267e4: 8013 strh r3, [r2, #0] + 268ca: 8813 ldrh r3, [r2, #0] + 268cc: fb0e 3301 mla r3, lr, r1, r3 + 268d0: 8013 strh r3, [r2, #0] } - 267e6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 268d2: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} *x = 0; // Reset x to zero, advance y by one line - 267ea: 2100 movs r1, #0 - 267ec: 8011 strh r1, [r2, #0] + 268d6: 2100 movs r1, #0 + 268d8: 8011 strh r1, [r2, #0] *y += textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - 267ee: 7e40 ldrb r0, [r0, #25] - 267f0: 7b21 ldrb r1, [r4, #12] - 267f2: 881a ldrh r2, [r3, #0] - 267f4: fb00 2201 mla r2, r0, r1, r2 - 267f8: 801a strh r2, [r3, #0] + 268da: 7e40 ldrb r0, [r0, #25] + 268dc: 7b21 ldrb r1, [r4, #12] + 268de: 881a ldrh r2, [r3, #0] + 268e0: fb00 2201 mla r2, r0, r1, r2 + 268e4: 801a strh r2, [r3, #0] } - 267fa: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 268e6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} if (c == '\n') { // Newline? - 267fe: 290a cmp r1, #10 - 26800: d039 beq.n 26876 + 268ea: 290a cmp r1, #10 + 268ec: d039 beq.n 26962 } else if (c != '\r') { // Normal char; ignore carriage returns - 26802: 290d cmp r1, #13 - 26804: d0f9 beq.n 267fa + 268ee: 290d cmp r1, #13 + 268f0: d0f9 beq.n 268e6 if (wrap && ((*x + textsize_x * 6) > _width)) { // Off right? - 26806: 7ec1 ldrb r1, [r0, #27] - 26808: f9b2 5000 ldrsh.w r5, [r2] - 2680c: 2900 cmp r1, #0 - 2680e: d152 bne.n 268b6 + 268f2: 7ec1 ldrb r1, [r0, #27] + 268f4: f9b2 5000 ldrsh.w r5, [r2] + 268f8: 2900 cmp r1, #0 + 268fa: d152 bne.n 269a2 x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, - 26810: f9b3 4000 ldrsh.w r4, [r3] - 26814: 7e01 ldrb r1, [r0, #24] + 268fc: f9b3 4000 ldrsh.w r4, [r3] + 26900: 7e01 ldrb r1, [r0, #24] y2 = *y + textsize_y * 8 - 1; - 26816: 7e40 ldrb r0, [r0, #25] - 26818: eb04 00c0 add.w r0, r4, r0, lsl #3 + 26902: 7e40 ldrb r0, [r0, #25] + 26904: eb04 00c0 add.w r0, r4, r0, lsl #3 int x2 = *x + textsize_x * 6 - 1, // Lower-right pixel of char - 2681c: 2406 movs r4, #6 - 2681e: fb14 5401 smlabb r4, r4, r1, r5 + 26908: 2406 movs r4, #6 + 2690a: fb14 5401 smlabb r4, r4, r1, r5 if (x2 > *maxx) - 26822: 9d0a ldr r5, [sp, #40] ; 0x28 + 2690e: 9d0a ldr r5, [sp, #40] ; 0x28 y2 = *y + textsize_y * 8 - 1; - 26824: 3801 subs r0, #1 + 26910: 3801 subs r0, #1 int x2 = *x + textsize_x * 6 - 1, // Lower-right pixel of char - 26826: 3c01 subs r4, #1 + 26912: 3c01 subs r4, #1 if (x2 > *maxx) - 26828: f9b5 5000 ldrsh.w r5, [r5] - 2682c: 42a5 cmp r5, r4 - 2682e: da01 bge.n 26834 + 26914: f9b5 5000 ldrsh.w r5, [r5] + 26918: 42a5 cmp r5, r4 + 2691a: da01 bge.n 26920 *maxx = x2; // Track max x, y - 26830: 9d0a ldr r5, [sp, #40] ; 0x28 - 26832: 802c strh r4, [r5, #0] + 2691c: 9d0a ldr r5, [sp, #40] ; 0x28 + 2691e: 802c strh r4, [r5, #0] if (y2 > *maxy) - 26834: 9c0b ldr r4, [sp, #44] ; 0x2c - 26836: f9b4 4000 ldrsh.w r4, [r4] - 2683a: 4284 cmp r4, r0 - 2683c: da01 bge.n 26842 + 26920: 9c0b ldr r4, [sp, #44] ; 0x2c + 26922: f9b4 4000 ldrsh.w r4, [r4] + 26926: 4284 cmp r4, r0 + 26928: da01 bge.n 2692e *maxy = y2; - 2683e: 9c0b ldr r4, [sp, #44] ; 0x2c - 26840: 8020 strh r0, [r4, #0] + 2692a: 9c0b ldr r4, [sp, #44] ; 0x2c + 2692c: 8020 strh r0, [r4, #0] if (*x < *minx) - 26842: 9c08 ldr r4, [sp, #32] - 26844: f9b2 0000 ldrsh.w r0, [r2] - 26848: f9b4 4000 ldrsh.w r4, [r4] - 2684c: 4284 cmp r4, r0 - 2684e: dd01 ble.n 26854 + 2692e: 9c08 ldr r4, [sp, #32] + 26930: f9b2 0000 ldrsh.w r0, [r2] + 26934: f9b4 4000 ldrsh.w r4, [r4] + 26938: 4284 cmp r4, r0 + 2693a: dd01 ble.n 26940 *minx = *x; // Track min x, y - 26850: 9c08 ldr r4, [sp, #32] - 26852: 8020 strh r0, [r4, #0] + 2693c: 9c08 ldr r4, [sp, #32] + 2693e: 8020 strh r0, [r4, #0] if (*y < *miny) - 26854: 9809 ldr r0, [sp, #36] ; 0x24 - 26856: f9b3 3000 ldrsh.w r3, [r3] - 2685a: f9b0 0000 ldrsh.w r0, [r0] - 2685e: 4298 cmp r0, r3 - 26860: dd01 ble.n 26866 + 26940: 9809 ldr r0, [sp, #36] ; 0x24 + 26942: f9b3 3000 ldrsh.w r3, [r3] + 26946: f9b0 0000 ldrsh.w r0, [r0] + 2694a: 4298 cmp r0, r3 + 2694c: dd01 ble.n 26952 *miny = *y; - 26862: 9809 ldr r0, [sp, #36] ; 0x24 - 26864: 8003 strh r3, [r0, #0] + 2694e: 9809 ldr r0, [sp, #36] ; 0x24 + 26950: 8003 strh r3, [r0, #0] *x += textsize_x * 6; // Advance x one char - 26866: 8813 ldrh r3, [r2, #0] - 26868: eb01 0141 add.w r1, r1, r1, lsl #1 - 2686c: eb03 0341 add.w r3, r3, r1, lsl #1 - 26870: 8013 strh r3, [r2, #0] + 26952: 8813 ldrh r3, [r2, #0] + 26954: eb01 0141 add.w r1, r1, r1, lsl #1 + 26958: eb03 0341 add.w r3, r3, r1, lsl #1 + 2695c: 8013 strh r3, [r2, #0] } - 26872: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 2695e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} *x = 0; // Reset x to zero, - 26876: 8014 strh r4, [r2, #0] + 26962: 8014 strh r4, [r2, #0] *y += textsize_y * 8; // advance y one line - 26878: 7e41 ldrb r1, [r0, #25] - 2687a: 881a ldrh r2, [r3, #0] - 2687c: eb02 02c1 add.w r2, r2, r1, lsl #3 - 26880: 801a strh r2, [r3, #0] + 26964: 7e41 ldrb r1, [r0, #25] + 26966: 881a ldrh r2, [r3, #0] + 26968: eb02 02c1 add.w r2, r2, r1, lsl #3 + 2696c: 801a strh r2, [r3, #0] } - 26882: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 2696e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} if (wrap && ((*x + (((int16_t)xo + gw) * textsize_x)) > _width)) { - 26886: f9b2 6000 ldrsh.w r6, [r2] - 2688a: eb08 090c add.w r9, r8, ip - 2688e: 7e01 ldrb r1, [r0, #24] - 26890: f9b0 a00c ldrsh.w sl, [r0, #12] - 26894: fb01 6909 mla r9, r1, r9, r6 - 26898: 45d1 cmp r9, sl - 2689a: dd1f ble.n 268dc + 26972: f9b2 6000 ldrsh.w r6, [r2] + 26976: eb08 090c add.w r9, r8, ip + 2697a: 7e01 ldrb r1, [r0, #24] + 2697c: f9b0 a00c ldrsh.w sl, [r0, #12] + 26980: fb01 6909 mla r9, r1, r9, r6 + 26984: 45d1 cmp r9, sl + 26986: dd1f ble.n 269c8 *x = 0; // Reset x to zero, advance y by one line - 2689c: 2100 movs r1, #0 - 2689e: 8011 strh r1, [r2, #0] + 26988: 2100 movs r1, #0 + 2698a: 8011 strh r1, [r2, #0] *y += textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - 268a0: 7b21 ldrb r1, [r4, #12] - 268a2: 7e46 ldrb r6, [r0, #25] - 268a4: 881c ldrh r4, [r3, #0] - 268a6: fb06 4401 mla r4, r6, r1, r4 - 268aa: b2a4 uxth r4, r4 - 268ac: 801c strh r4, [r3, #0] + 2698c: 7b21 ldrb r1, [r4, #12] + 2698e: 7e46 ldrb r6, [r0, #25] + 26990: 881c ldrh r4, [r3, #0] + 26992: fb06 4401 mla r4, r6, r1, r4 + 26996: b2a4 uxth r4, r4 + 26998: 801c strh r4, [r3, #0] x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, - 268ae: f9b2 6000 ldrsh.w r6, [r2] - 268b2: 7e01 ldrb r1, [r0, #24] - 268b4: e763 b.n 2677e + 2699a: f9b2 6000 ldrsh.w r6, [r2] + 2699e: 7e01 ldrb r1, [r0, #24] + 269a0: e763 b.n 2686a if (wrap && ((*x + textsize_x * 6) > _width)) { // Off right? - 268b6: 7e01 ldrb r1, [r0, #24] - 268b8: 2606 movs r6, #6 - 268ba: f9b0 700c ldrsh.w r7, [r0, #12] - 268be: fb16 5601 smlabb r6, r6, r1, r5 - 268c2: 42be cmp r6, r7 - 268c4: dd0c ble.n 268e0 + 269a2: 7e01 ldrb r1, [r0, #24] + 269a4: 2606 movs r6, #6 + 269a6: f9b0 700c ldrsh.w r7, [r0, #12] + 269aa: fb16 5601 smlabb r6, r6, r1, r5 + 269ae: 42be cmp r6, r7 + 269b0: dd0c ble.n 269cc *x = 0; // Reset x to zero, - 268c6: 8014 strh r4, [r2, #0] + 269b2: 8014 strh r4, [r2, #0] *y += textsize_y * 8; // advance y one line - 268c8: 7e41 ldrb r1, [r0, #25] - 268ca: 881c ldrh r4, [r3, #0] - 268cc: eb04 04c1 add.w r4, r4, r1, lsl #3 - 268d0: b224 sxth r4, r4 - 268d2: 801c strh r4, [r3, #0] + 269b4: 7e41 ldrb r1, [r0, #25] + 269b6: 881c ldrh r4, [r3, #0] + 269b8: eb04 04c1 add.w r4, r4, r1, lsl #3 + 269bc: b224 sxth r4, r4 + 269be: 801c strh r4, [r3, #0] int x2 = *x + textsize_x * 6 - 1, // Lower-right pixel of char - 268d4: f9b2 5000 ldrsh.w r5, [r2] - 268d8: 7e01 ldrb r1, [r0, #24] - 268da: e79c b.n 26816 + 269c0: f9b2 5000 ldrsh.w r5, [r2] + 269c4: 7e01 ldrb r1, [r0, #24] + 269c6: e79c b.n 26902 x1 = *x + xo * tsx, y1 = *y + yo * tsy, x2 = x1 + gw * tsx - 1, - 268dc: 881c ldrh r4, [r3, #0] - 268de: e74e b.n 2677e - 268e0: f9b3 4000 ldrsh.w r4, [r3] - 268e4: e797 b.n 26816 - 268e6: bf00 nop + 269c8: 881c ldrh r4, [r3, #0] + 269ca: e74e b.n 2686a + 269cc: f9b3 4000 ldrsh.w r4, [r3] + 269d0: e797 b.n 26902 + 269d2: bf00 nop -000268e8 : +000269d4 : uint16_t *h) { - 268e8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 268ec: b089 sub sp, #36 ; 0x24 + 269d4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 269d8: b089 sub sp, #36 ; 0x24 while ((c = *str++)) { - 268ee: 460c mov r4, r1 + 269da: 460c mov r4, r1 uint16_t *h) { - 268f0: f8dd b048 ldr.w fp, [sp, #72] ; 0x48 - 268f4: f8ad 2016 strh.w r2, [sp, #22] + 269dc: f8dd b048 ldr.w fp, [sp, #72] ; 0x48 + 269e0: f8ad 2016 strh.w r2, [sp, #22] *x1 = x; // Initial position is value passed in - 268f8: f8ab 2000 strh.w r2, [fp] + 269e4: f8ab 2000 strh.w r2, [fp] int16_t minx = 0x7FFF, miny = 0x7FFF, maxx = -1, maxy = -1; // Bound rect - 268fc: f647 72ff movw r2, #32767 ; 0x7fff + 269e8: f647 72ff movw r2, #32767 ; 0x7fff *y1 = y; - 26900: 9913 ldr r1, [sp, #76] ; 0x4c + 269ec: 9913 ldr r1, [sp, #76] ; 0x4c int16_t minx = 0x7FFF, miny = 0x7FFF, maxx = -1, maxy = -1; // Bound rect - 26902: f8ad 2018 strh.w r2, [sp, #24] - 26906: f8ad 201a strh.w r2, [sp, #26] - 2690a: f64f 72ff movw r2, #65535 ; 0xffff + 269ee: f8ad 2018 strh.w r2, [sp, #24] + 269f2: f8ad 201a strh.w r2, [sp, #26] + 269f6: f64f 72ff movw r2, #65535 ; 0xffff *y1 = y; - 2690e: 800b strh r3, [r1, #0] + 269fa: 800b strh r3, [r1, #0] uint16_t *h) { - 26910: f8ad 3014 strh.w r3, [sp, #20] + 269fc: f8ad 3014 strh.w r3, [sp, #20] int16_t minx = 0x7FFF, miny = 0x7FFF, maxx = -1, maxy = -1; // Bound rect - 26914: f8ad 201c strh.w r2, [sp, #28] - 26918: f8ad 201e strh.w r2, [sp, #30] + 26a00: f8ad 201c strh.w r2, [sp, #28] + 26a04: f8ad 201e strh.w r2, [sp, #30] *w = *h = 0; // Initial size is zero - 2691c: 2200 movs r2, #0 - 2691e: e9dd a314 ldrd sl, r3, [sp, #80] ; 0x50 - 26922: 801a strh r2, [r3, #0] - 26924: f8aa 2000 strh.w r2, [sl] + 26a08: 2200 movs r2, #0 + 26a0a: e9dd a314 ldrd sl, r3, [sp, #80] ; 0x50 + 26a0e: 801a strh r2, [r3, #0] + 26a10: f8aa 2000 strh.w r2, [sl] while ((c = *str++)) { - 26928: f814 1b01 ldrb.w r1, [r4], #1 - 2692c: b361 cbz r1, 26988 - 2692e: 4681 mov r9, r0 - 26930: f10d 081e add.w r8, sp, #30 - 26934: af07 add r7, sp, #28 - 26936: f10d 061a add.w r6, sp, #26 - 2693a: ad06 add r5, sp, #24 + 26a14: f814 1b01 ldrb.w r1, [r4], #1 + 26a18: b361 cbz r1, 26a74 + 26a1a: 4681 mov r9, r0 + 26a1c: f10d 081e add.w r8, sp, #30 + 26a20: af07 add r7, sp, #28 + 26a22: f10d 061a add.w r6, sp, #26 + 26a26: ad06 add r5, sp, #24 charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); - 2693c: ab05 add r3, sp, #20 - 2693e: f10d 0216 add.w r2, sp, #22 - 26942: 4648 mov r0, r9 - 26944: e9cd 7802 strd r7, r8, [sp, #8] - 26948: e9cd 5600 strd r5, r6, [sp] - 2694c: f7ff fef2 bl 26734 + 26a28: ab05 add r3, sp, #20 + 26a2a: f10d 0216 add.w r2, sp, #22 + 26a2e: 4648 mov r0, r9 + 26a30: e9cd 7802 strd r7, r8, [sp, #8] + 26a34: e9cd 5600 strd r5, r6, [sp] + 26a38: f7ff fef2 bl 26820 while ((c = *str++)) { - 26950: f814 1b01 ldrb.w r1, [r4], #1 - 26954: 2900 cmp r1, #0 - 26956: d1f1 bne.n 2693c + 26a3c: f814 1b01 ldrb.w r1, [r4], #1 + 26a40: 2900 cmp r1, #0 + 26a42: d1f1 bne.n 26a28 if (maxx >= minx) { // If legit string bounds were found... - 26958: f9bd 301c ldrsh.w r3, [sp, #28] - 2695c: f9bd 2018 ldrsh.w r2, [sp, #24] - 26960: 4293 cmp r3, r2 - 26962: db14 blt.n 2698e + 26a44: f9bd 301c ldrsh.w r3, [sp, #28] + 26a48: f9bd 2018 ldrsh.w r2, [sp, #24] + 26a4c: 4293 cmp r3, r2 + 26a4e: db14 blt.n 26a7a *w = maxx - minx + 1; // And w to bound rect width - 26964: 3301 adds r3, #1 + 26a50: 3301 adds r3, #1 *x1 = minx; // Update x1 to least X coord, - 26966: f8ab 2000 strh.w r2, [fp] + 26a52: f8ab 2000 strh.w r2, [fp] *w = maxx - minx + 1; // And w to bound rect width - 2696a: 1a9a subs r2, r3, r2 + 26a56: 1a9a subs r2, r3, r2 if (maxy >= miny) { // Same for height - 2696c: f9bd 301e ldrsh.w r3, [sp, #30] + 26a58: f9bd 301e ldrsh.w r3, [sp, #30] *w = maxx - minx + 1; // And w to bound rect width - 26970: f8aa 2000 strh.w r2, [sl] + 26a5c: f8aa 2000 strh.w r2, [sl] if (maxy >= miny) { // Same for height - 26974: f9bd 201a ldrsh.w r2, [sp, #26] - 26978: 4293 cmp r3, r2 - 2697a: db05 blt.n 26988 + 26a60: f9bd 201a ldrsh.w r2, [sp, #26] + 26a64: 4293 cmp r3, r2 + 26a66: db05 blt.n 26a74 *h = maxy - miny + 1; - 2697c: 3301 adds r3, #1 + 26a68: 3301 adds r3, #1 *y1 = miny; - 2697e: 9913 ldr r1, [sp, #76] ; 0x4c + 26a6a: 9913 ldr r1, [sp, #76] ; 0x4c *h = maxy - miny + 1; - 26980: 1a9b subs r3, r3, r2 + 26a6c: 1a9b subs r3, r3, r2 *y1 = miny; - 26982: 800a strh r2, [r1, #0] + 26a6e: 800a strh r2, [r1, #0] *h = maxy - miny + 1; - 26984: 9a15 ldr r2, [sp, #84] ; 0x54 - 26986: 8013 strh r3, [r2, #0] + 26a70: 9a15 ldr r2, [sp, #84] ; 0x54 + 26a72: 8013 strh r3, [r2, #0] } - 26988: b009 add sp, #36 ; 0x24 - 2698a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 26a74: b009 add sp, #36 ; 0x24 + 26a76: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if (maxy >= miny) { // Same for height - 2698e: f9bd 301e ldrsh.w r3, [sp, #30] - 26992: f9bd 201a ldrsh.w r2, [sp, #26] - 26996: e7ef b.n 26978 + 26a7a: f9bd 301e ldrsh.w r3, [sp, #30] + 26a7e: f9bd 201a ldrsh.w r2, [sp, #26] + 26a82: e7ef b.n 26a64 -00026998 : +00026a84 : // The code triggering the event does NOT control which of the above // response methods will be used. virtual void triggerEvent(int status=0, void *data=nullptr) { _status = status; _data = data; if (_type == EventTypeImmediate) { - 26998: f890 c01c ldrb.w ip, [r0, #28] + 26a84: f890 c01c ldrb.w ip, [r0, #28] _status = status; - 2699c: 6041 str r1, [r0, #4] + 26a88: 6041 str r1, [r0, #4] if (_type == EventTypeImmediate) { - 2699e: f1bc 0f02 cmp.w ip, #2 + 26a8a: f1bc 0f02 cmp.w ip, #2 _data = data; - 269a2: 60c2 str r2, [r0, #12] + 26a8e: 60c2 str r2, [r0, #12] if (_type == EventTypeImmediate) { - 269a4: d101 bne.n 269aa + 26a90: d101 bne.n 26a96 (*_function)(*this); - 269a6: 6883 ldr r3, [r0, #8] - 269a8: 4718 bx r3 + 26a92: 6883 ldr r3, [r0, #8] + 26a94: 4718 bx r3 } else { triggerEventNotImmediate(); - 269aa: f002 bd9b b.w 294e4 - 269ae: bf00 nop + 26a96: f002 bd9b b.w 295d0 + 26a9a: bf00 nop -000269b0 <_spi_dma_rxISR1()>: +00026a9c <_spi_dma_rxISR1()>: //------------------------------------------------------------------------- // DMA RX ISR //------------------------------------------------------------------------- void SPIClass::dma_rxisr(void) { _dmaRX->clearInterrupt(); - 269b0: 4b32 ldr r3, [pc, #200] ; (26a7c <_spi_dma_rxISR1()+0xcc>) + 26a9c: 4b32 ldr r3, [pc, #200] ; (26b68 <_spi_dma_rxISR1()+0xcc>) void detachInterrupt(void) { NVIC_DISABLE_IRQ(IRQ_DMA_CH0 + channel); } void clearInterrupt(void) { DMA_CINT = channel; - 269b2: 4933 ldr r1, [pc, #204] ; (26a80 <_spi_dma_rxISR1()+0xd0>) + 26a9e: 4933 ldr r1, [pc, #204] ; (26b6c <_spi_dma_rxISR1()+0xd0>) void _spi_dma_rxISR1(void) {SPI1.dma_rxisr();} - 269b4: b530 push {r4, r5, lr} + 26aa0: b530 push {r4, r5, lr} _dmaTX->clearComplete(); - 269b6: e9d3 5411 ldrd r5, r4, [r3, #68] ; 0x44 - 269ba: 7920 ldrb r0, [r4, #4] - 269bc: 77c8 strb r0, [r1, #31] + 26aa2: e9d3 5411 ldrd r5, r4, [r3, #68] ; 0x44 + 26aa6: 7920 ldrb r0, [r4, #4] + 26aa8: 77c8 strb r0, [r1, #31] _dmaRX->clearComplete(); if (_dma_count_remaining) { - 269be: 6c1a ldr r2, [r3, #64] ; 0x40 + 26aaa: 6c1a ldr r2, [r3, #64] ; 0x40 bool complete(void) { if (TCD->CSR & DMA_TCD_CSR_DONE) return true; return false; } void clearComplete(void) { DMA_CDNE = channel; - 269c0: f895 c004 ldrb.w ip, [r5, #4] - 269c4: f881 c01c strb.w ip, [r1, #28] - 269c8: 7708 strb r0, [r1, #28] - 269ca: b152 cbz r2, 269e2 <_spi_dma_rxISR1()+0x32> + 26aac: f895 c004 ldrb.w ip, [r5, #4] + 26ab0: f881 c01c strb.w ip, [r1, #28] + 26ab4: 7708 strb r0, [r1, #28] + 26ab6: b152 cbz r2, 26ace <_spi_dma_rxISR1()+0x32> // What do I need to do to start it back up again... // We will use the BITR/CITR from RX as TX may have prefed some stuff if (_dma_count_remaining > MAX_DMA_COUNT) { - 269cc: f5b2 4f00 cmp.w r2, #32768 ; 0x8000 - 269d0: d323 bcc.n 26a1a <_spi_dma_rxISR1()+0x6a> + 26ab8: f5b2 4f00 cmp.w r2, #32768 ; 0x8000 + 26abc: d323 bcc.n 26b06 <_spi_dma_rxISR1()+0x6a> _dma_count_remaining -= MAX_DMA_COUNT; - 269d2: 492c ldr r1, [pc, #176] ; (26a84 <_spi_dma_rxISR1()+0xd4>) - 269d4: 4411 add r1, r2 + 26abe: 492c ldr r1, [pc, #176] ; (26b70 <_spi_dma_rxISR1()+0xd4>) + 26ac0: 4411 add r1, r2 DMA_SERQ = channel; - 269d6: 4a2a ldr r2, [pc, #168] ; (26a80 <_spi_dma_rxISR1()+0xd0>) - 269d8: 6419 str r1, [r3, #64] ; 0x40 - 269da: 76d0 strb r0, [r2, #27] - 269dc: f882 c01b strb.w ip, [r2, #27] + 26ac2: 4a2a ldr r2, [pc, #168] ; (26b6c <_spi_dma_rxISR1()+0xd0>) + 26ac4: 6419 str r1, [r3, #64] ; 0x40 + 26ac6: 76d0 strb r0, [r2, #27] + 26ac8: f882 c01b strb.w ip, [r2, #27] void _spi_dma_rxISR1(void) {SPI1.dma_rxisr();} - 269e0: bd30 pop {r4, r5, pc} + 26acc: bd30 pop {r4, r5, pc} // programs/sketches. See the ILI3941_t3 library for an example. uint8_t setCS(uint8_t pin); private: private: IMXRT_LPSPI_t & port() { return *(IMXRT_LPSPI_t *)port_addr; } - 269e2: 6819 ldr r1, [r3, #0] + 26ace: 6819 ldr r1, [r3, #0] } _dmaRX->enable(); _dmaTX->enable(); } else { port().FCR = LPSPI_FCR_TXWATER(15); // _spi_fcr_save; // restore the FSR status... - 269e4: 240f movs r4, #15 + 26ad0: 240f movs r4, #15 port().CR = LPSPI_CR_MEN | LPSPI_CR_RRF | LPSPI_CR_RTF; // actually clear both... port().SR = 0x3f00; // clear out all of the other status... _dma_state = DMAState::completed; // set back to 1 in case our call wants to start up dma again _dma_event_responder->triggerEvent(); - 269e6: 6cd8 ldr r0, [r3, #76] ; 0x4c + 26ad2: 6cd8 ldr r0, [r3, #76] ; 0x4c port().FCR = LPSPI_FCR_TXWATER(15); // _spi_fcr_save; // restore the FSR status... - 269e8: 658c str r4, [r1, #88] ; 0x58 + 26ad4: 658c str r4, [r1, #88] ; 0x58 port().CR = LPSPI_CR_MEN | LPSPI_CR_RRF | LPSPI_CR_RTF; // actually clear both... - 269ea: f240 3401 movw r4, #769 ; 0x301 + 26ad6: f240 3401 movw r4, #769 ; 0x301 port().DER = 0; // DMA no longer doing TX (or RX) - 269ee: 61ca str r2, [r1, #28] + 26ada: 61ca str r2, [r1, #28] port().CR = LPSPI_CR_MEN | LPSPI_CR_RRF | LPSPI_CR_RTF; // actually clear both... - 269f0: 610c str r4, [r1, #16] + 26adc: 610c str r4, [r1, #16] port().SR = 0x3f00; // clear out all of the other status... - 269f2: f44f 547c mov.w r4, #16128 ; 0x3f00 - 269f6: 614c str r4, [r1, #20] + 26ade: f44f 547c mov.w r4, #16128 ; 0x3f00 + 26ae2: 614c str r4, [r1, #20] _dma_state = DMAState::completed; // set back to 1 in case our call wants to start up dma again - 269f8: 2103 movs r1, #3 + 26ae4: 2103 movs r1, #3 _dma_event_responder->triggerEvent(); - 269fa: 6804 ldr r4, [r0, #0] - 269fc: 6824 ldr r4, [r4, #0] + 26ae6: 6804 ldr r4, [r0, #0] + 26ae8: 6824 ldr r4, [r4, #0] _dma_state = DMAState::completed; // set back to 1 in case our call wants to start up dma again - 269fe: f883 103d strb.w r1, [r3, #61] ; 0x3d + 26aea: f883 103d strb.w r1, [r3, #61] ; 0x3d _dma_event_responder->triggerEvent(); - 26a02: 4b21 ldr r3, [pc, #132] ; (26a88 <_spi_dma_rxISR1()+0xd8>) - 26a04: 429c cmp r4, r3 - 26a06: d126 bne.n 26a56 <_spi_dma_rxISR1()+0xa6> + 26aee: 4b21 ldr r3, [pc, #132] ; (26b74 <_spi_dma_rxISR1()+0xd8>) + 26af0: 429c cmp r4, r3 + 26af2: d126 bne.n 26b42 <_spi_dma_rxISR1()+0xa6> if (_type == EventTypeImmediate) { - 26a08: 7f03 ldrb r3, [r0, #28] + 26af4: 7f03 ldrb r3, [r0, #28] _status = status; - 26a0a: 6042 str r2, [r0, #4] + 26af6: 6042 str r2, [r0, #4] if (_type == EventTypeImmediate) { - 26a0c: 2b02 cmp r3, #2 + 26af8: 2b02 cmp r3, #2 _data = data; - 26a0e: 60c2 str r2, [r0, #12] + 26afa: 60c2 str r2, [r0, #12] if (_type == EventTypeImmediate) { - 26a10: d126 bne.n 26a60 <_spi_dma_rxISR1()+0xb0> + 26afc: d126 bne.n 26b4c <_spi_dma_rxISR1()+0xb0> (*_function)(*this); - 26a12: 6883 ldr r3, [r0, #8] + 26afe: 6883 ldr r3, [r0, #8] void _spi_dma_rxISR1(void) {SPI1.dma_rxisr();} - 26a14: e8bd 4030 ldmia.w sp!, {r4, r5, lr} - 26a18: 4718 bx r3 + 26b00: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 26b04: 4718 bx r3 DMAChanneltransferCount(_dmaTX, _dma_count_remaining); - 26a1a: 682d ldr r5, [r5, #0] + 26b06: 682d ldr r5, [r5, #0] if (!(tcd->BITER & DMA_TCD_BITER_ELINK)) { - 26a1c: 8be9 ldrh r1, [r5, #30] - 26a1e: 0409 lsls r1, r1, #16 - 26a20: d422 bmi.n 26a68 <_spi_dma_rxISR1()+0xb8> + 26b08: 8be9 ldrh r1, [r5, #30] + 26b0a: 0409 lsls r1, r1, #16 + 26b0c: d422 bmi.n 26b54 <_spi_dma_rxISR1()+0xb8> tcd->BITER = len & 0x7fff; - 26a22: b292 uxth r2, r2 - 26a24: 83ea strh r2, [r5, #30] + 26b0e: b292 uxth r2, r2 + 26b10: 83ea strh r2, [r5, #30] tcd->CITER = tcd->BITER; - 26a26: 6821 ldr r1, [r4, #0] - 26a28: 8bec ldrh r4, [r5, #30] - 26a2a: b2a4 uxth r4, r4 - 26a2c: 82ec strh r4, [r5, #22] + 26b12: 6821 ldr r1, [r4, #0] + 26b14: 8bec ldrh r4, [r5, #30] + 26b16: b2a4 uxth r4, r4 + 26b18: 82ec strh r4, [r5, #22] if (!(tcd->BITER & DMA_TCD_BITER_ELINK)) { - 26a2e: 8bcc ldrh r4, [r1, #30] - 26a30: 0424 lsls r4, r4, #16 - 26a32: d505 bpl.n 26a40 <_spi_dma_rxISR1()+0x90> + 26b1a: 8bcc ldrh r4, [r1, #30] + 26b1c: 0424 lsls r4, r4, #16 + 26b1e: d505 bpl.n 26b2c <_spi_dma_rxISR1()+0x90> tcd->BITER = (tcd->BITER & 0xFE00) | (len & 0x1ff); - 26a34: 8bcc ldrh r4, [r1, #30] - 26a36: f3c2 0208 ubfx r2, r2, #0, #9 - 26a3a: f404 447e and.w r4, r4, #65024 ; 0xfe00 - 26a3e: 4322 orrs r2, r4 - 26a40: 83ca strh r2, [r1, #30] + 26b20: 8bcc ldrh r4, [r1, #30] + 26b22: f3c2 0208 ubfx r2, r2, #0, #9 + 26b26: f404 447e and.w r4, r4, #65024 ; 0xfe00 + 26b2a: 4322 orrs r2, r4 + 26b2c: 83ca strh r2, [r1, #30] tcd->CITER = tcd->BITER; - 26a42: 8bca ldrh r2, [r1, #30] - 26a44: b292 uxth r2, r2 - 26a46: 82ca strh r2, [r1, #22] - 26a48: 2100 movs r1, #0 - 26a4a: 4a0d ldr r2, [pc, #52] ; (26a80 <_spi_dma_rxISR1()+0xd0>) + 26b2e: 8bca ldrh r2, [r1, #30] + 26b30: b292 uxth r2, r2 + 26b32: 82ca strh r2, [r1, #22] + 26b34: 2100 movs r1, #0 + 26b36: 4a0d ldr r2, [pc, #52] ; (26b6c <_spi_dma_rxISR1()+0xd0>) _dma_count_remaining -= MAX_DMA_COUNT; - 26a4c: 6419 str r1, [r3, #64] ; 0x40 - 26a4e: 76d0 strb r0, [r2, #27] - 26a50: f882 c01b strb.w ip, [r2, #27] + 26b38: 6419 str r1, [r3, #64] ; 0x40 + 26b3a: 76d0 strb r0, [r2, #27] + 26b3c: f882 c01b strb.w ip, [r2, #27] void _spi_dma_rxISR1(void) {SPI1.dma_rxisr();} - 26a54: bd30 pop {r4, r5, pc} + 26b40: bd30 pop {r4, r5, pc} _dma_event_responder->triggerEvent(); - 26a56: 4623 mov r3, r4 - 26a58: 4611 mov r1, r2 + 26b42: 4623 mov r3, r4 + 26b44: 4611 mov r1, r2 void _spi_dma_rxISR1(void) {SPI1.dma_rxisr();} - 26a5a: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 26b46: e8bd 4030 ldmia.w sp!, {r4, r5, lr} _dma_event_responder->triggerEvent(); - 26a5e: 4718 bx r3 + 26b4a: 4718 bx r3 void _spi_dma_rxISR1(void) {SPI1.dma_rxisr();} - 26a60: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 26b4c: e8bd 4030 ldmia.w sp!, {r4, r5, lr} triggerEventNotImmediate(); - 26a64: f002 bd3e b.w 294e4 + 26b50: f002 bd3e b.w 295d0 tcd->BITER = (tcd->BITER & 0xFE00) | (len & 0x1ff); - 26a68: 8be9 ldrh r1, [r5, #30] - 26a6a: f3c2 0e08 ubfx lr, r2, #0, #9 - 26a6e: b292 uxth r2, r2 - 26a70: f401 417e and.w r1, r1, #65024 ; 0xfe00 - 26a74: ea41 010e orr.w r1, r1, lr - 26a78: 83e9 strh r1, [r5, #30] - 26a7a: e7d4 b.n 26a26 <_spi_dma_rxISR1()+0x76> - 26a7c: 2000af80 .word 0x2000af80 - 26a80: 400e8000 .word 0x400e8000 - 26a84: ffff8001 .word 0xffff8001 - 26a88: 00026999 .word 0x00026999 - -00026a8c <_spi_dma_rxISR0()>: + 26b54: 8be9 ldrh r1, [r5, #30] + 26b56: f3c2 0e08 ubfx lr, r2, #0, #9 + 26b5a: b292 uxth r2, r2 + 26b5c: f401 417e and.w r1, r1, #65024 ; 0xfe00 + 26b60: ea41 010e orr.w r1, r1, lr + 26b64: 83e9 strh r1, [r5, #30] + 26b66: e7d4 b.n 26b12 <_spi_dma_rxISR1()+0x76> + 26b68: 2000afa0 .word 0x2000afa0 + 26b6c: 400e8000 .word 0x400e8000 + 26b70: ffff8001 .word 0xffff8001 + 26b74: 00026a85 .word 0x00026a85 + +00026b78 <_spi_dma_rxISR0()>: _dmaRX->clearInterrupt(); - 26a8c: 4b32 ldr r3, [pc, #200] ; (26b58 <_spi_dma_rxISR0()+0xcc>) + 26b78: 4b32 ldr r3, [pc, #200] ; (26c44 <_spi_dma_rxISR0()+0xcc>) DMA_CINT = channel; - 26a8e: 4933 ldr r1, [pc, #204] ; (26b5c <_spi_dma_rxISR0()+0xd0>) + 26b7a: 4933 ldr r1, [pc, #204] ; (26c48 <_spi_dma_rxISR0()+0xd0>) void _spi_dma_rxISR0(void) {SPI.dma_rxisr();} - 26a90: b530 push {r4, r5, lr} + 26b7c: b530 push {r4, r5, lr} _dmaTX->clearComplete(); - 26a92: e9d3 5411 ldrd r5, r4, [r3, #68] ; 0x44 - 26a96: 7920 ldrb r0, [r4, #4] - 26a98: 77c8 strb r0, [r1, #31] + 26b7e: e9d3 5411 ldrd r5, r4, [r3, #68] ; 0x44 + 26b82: 7920 ldrb r0, [r4, #4] + 26b84: 77c8 strb r0, [r1, #31] if (_dma_count_remaining) { - 26a9a: 6c1a ldr r2, [r3, #64] ; 0x40 + 26b86: 6c1a ldr r2, [r3, #64] ; 0x40 DMA_CDNE = channel; - 26a9c: f895 c004 ldrb.w ip, [r5, #4] - 26aa0: f881 c01c strb.w ip, [r1, #28] - 26aa4: 7708 strb r0, [r1, #28] - 26aa6: b152 cbz r2, 26abe <_spi_dma_rxISR0()+0x32> + 26b88: f895 c004 ldrb.w ip, [r5, #4] + 26b8c: f881 c01c strb.w ip, [r1, #28] + 26b90: 7708 strb r0, [r1, #28] + 26b92: b152 cbz r2, 26baa <_spi_dma_rxISR0()+0x32> if (_dma_count_remaining > MAX_DMA_COUNT) { - 26aa8: f5b2 4f00 cmp.w r2, #32768 ; 0x8000 - 26aac: d323 bcc.n 26af6 <_spi_dma_rxISR0()+0x6a> + 26b94: f5b2 4f00 cmp.w r2, #32768 ; 0x8000 + 26b98: d323 bcc.n 26be2 <_spi_dma_rxISR0()+0x6a> _dma_count_remaining -= MAX_DMA_COUNT; - 26aae: 492c ldr r1, [pc, #176] ; (26b60 <_spi_dma_rxISR0()+0xd4>) - 26ab0: 4411 add r1, r2 + 26b9a: 492c ldr r1, [pc, #176] ; (26c4c <_spi_dma_rxISR0()+0xd4>) + 26b9c: 4411 add r1, r2 DMA_SERQ = channel; - 26ab2: 4a2a ldr r2, [pc, #168] ; (26b5c <_spi_dma_rxISR0()+0xd0>) - 26ab4: 6419 str r1, [r3, #64] ; 0x40 - 26ab6: 76d0 strb r0, [r2, #27] - 26ab8: f882 c01b strb.w ip, [r2, #27] + 26b9e: 4a2a ldr r2, [pc, #168] ; (26c48 <_spi_dma_rxISR0()+0xd0>) + 26ba0: 6419 str r1, [r3, #64] ; 0x40 + 26ba2: 76d0 strb r0, [r2, #27] + 26ba4: f882 c01b strb.w ip, [r2, #27] void _spi_dma_rxISR0(void) {SPI.dma_rxisr();} - 26abc: bd30 pop {r4, r5, pc} - 26abe: 6819 ldr r1, [r3, #0] + 26ba8: bd30 pop {r4, r5, pc} + 26baa: 6819 ldr r1, [r3, #0] port().FCR = LPSPI_FCR_TXWATER(15); // _spi_fcr_save; // restore the FSR status... - 26ac0: 240f movs r4, #15 + 26bac: 240f movs r4, #15 _dma_event_responder->triggerEvent(); - 26ac2: 6cd8 ldr r0, [r3, #76] ; 0x4c + 26bae: 6cd8 ldr r0, [r3, #76] ; 0x4c port().FCR = LPSPI_FCR_TXWATER(15); // _spi_fcr_save; // restore the FSR status... - 26ac4: 658c str r4, [r1, #88] ; 0x58 + 26bb0: 658c str r4, [r1, #88] ; 0x58 port().CR = LPSPI_CR_MEN | LPSPI_CR_RRF | LPSPI_CR_RTF; // actually clear both... - 26ac6: f240 3401 movw r4, #769 ; 0x301 + 26bb2: f240 3401 movw r4, #769 ; 0x301 port().DER = 0; // DMA no longer doing TX (or RX) - 26aca: 61ca str r2, [r1, #28] + 26bb6: 61ca str r2, [r1, #28] port().CR = LPSPI_CR_MEN | LPSPI_CR_RRF | LPSPI_CR_RTF; // actually clear both... - 26acc: 610c str r4, [r1, #16] + 26bb8: 610c str r4, [r1, #16] port().SR = 0x3f00; // clear out all of the other status... - 26ace: f44f 547c mov.w r4, #16128 ; 0x3f00 - 26ad2: 614c str r4, [r1, #20] + 26bba: f44f 547c mov.w r4, #16128 ; 0x3f00 + 26bbe: 614c str r4, [r1, #20] _dma_state = DMAState::completed; // set back to 1 in case our call wants to start up dma again - 26ad4: 2103 movs r1, #3 + 26bc0: 2103 movs r1, #3 _dma_event_responder->triggerEvent(); - 26ad6: 6804 ldr r4, [r0, #0] - 26ad8: 6824 ldr r4, [r4, #0] + 26bc2: 6804 ldr r4, [r0, #0] + 26bc4: 6824 ldr r4, [r4, #0] _dma_state = DMAState::completed; // set back to 1 in case our call wants to start up dma again - 26ada: f883 103d strb.w r1, [r3, #61] ; 0x3d + 26bc6: f883 103d strb.w r1, [r3, #61] ; 0x3d _dma_event_responder->triggerEvent(); - 26ade: 4b21 ldr r3, [pc, #132] ; (26b64 <_spi_dma_rxISR0()+0xd8>) - 26ae0: 429c cmp r4, r3 - 26ae2: d126 bne.n 26b32 <_spi_dma_rxISR0()+0xa6> + 26bca: 4b21 ldr r3, [pc, #132] ; (26c50 <_spi_dma_rxISR0()+0xd8>) + 26bcc: 429c cmp r4, r3 + 26bce: d126 bne.n 26c1e <_spi_dma_rxISR0()+0xa6> if (_type == EventTypeImmediate) { - 26ae4: 7f03 ldrb r3, [r0, #28] + 26bd0: 7f03 ldrb r3, [r0, #28] _status = status; - 26ae6: 6042 str r2, [r0, #4] + 26bd2: 6042 str r2, [r0, #4] if (_type == EventTypeImmediate) { - 26ae8: 2b02 cmp r3, #2 + 26bd4: 2b02 cmp r3, #2 _data = data; - 26aea: 60c2 str r2, [r0, #12] + 26bd6: 60c2 str r2, [r0, #12] if (_type == EventTypeImmediate) { - 26aec: d126 bne.n 26b3c <_spi_dma_rxISR0()+0xb0> + 26bd8: d126 bne.n 26c28 <_spi_dma_rxISR0()+0xb0> (*_function)(*this); - 26aee: 6883 ldr r3, [r0, #8] + 26bda: 6883 ldr r3, [r0, #8] void _spi_dma_rxISR0(void) {SPI.dma_rxisr();} - 26af0: e8bd 4030 ldmia.w sp!, {r4, r5, lr} - 26af4: 4718 bx r3 + 26bdc: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 26be0: 4718 bx r3 DMAChanneltransferCount(_dmaTX, _dma_count_remaining); - 26af6: 682d ldr r5, [r5, #0] + 26be2: 682d ldr r5, [r5, #0] if (!(tcd->BITER & DMA_TCD_BITER_ELINK)) { - 26af8: 8be9 ldrh r1, [r5, #30] - 26afa: 0409 lsls r1, r1, #16 - 26afc: d422 bmi.n 26b44 <_spi_dma_rxISR0()+0xb8> + 26be4: 8be9 ldrh r1, [r5, #30] + 26be6: 0409 lsls r1, r1, #16 + 26be8: d422 bmi.n 26c30 <_spi_dma_rxISR0()+0xb8> tcd->BITER = len & 0x7fff; - 26afe: b292 uxth r2, r2 - 26b00: 83ea strh r2, [r5, #30] + 26bea: b292 uxth r2, r2 + 26bec: 83ea strh r2, [r5, #30] tcd->CITER = tcd->BITER; - 26b02: 6821 ldr r1, [r4, #0] - 26b04: 8bec ldrh r4, [r5, #30] - 26b06: b2a4 uxth r4, r4 - 26b08: 82ec strh r4, [r5, #22] + 26bee: 6821 ldr r1, [r4, #0] + 26bf0: 8bec ldrh r4, [r5, #30] + 26bf2: b2a4 uxth r4, r4 + 26bf4: 82ec strh r4, [r5, #22] if (!(tcd->BITER & DMA_TCD_BITER_ELINK)) { - 26b0a: 8bcc ldrh r4, [r1, #30] - 26b0c: 0424 lsls r4, r4, #16 - 26b0e: d505 bpl.n 26b1c <_spi_dma_rxISR0()+0x90> + 26bf6: 8bcc ldrh r4, [r1, #30] + 26bf8: 0424 lsls r4, r4, #16 + 26bfa: d505 bpl.n 26c08 <_spi_dma_rxISR0()+0x90> tcd->BITER = (tcd->BITER & 0xFE00) | (len & 0x1ff); - 26b10: 8bcc ldrh r4, [r1, #30] - 26b12: f3c2 0208 ubfx r2, r2, #0, #9 - 26b16: f404 447e and.w r4, r4, #65024 ; 0xfe00 - 26b1a: 4322 orrs r2, r4 - 26b1c: 83ca strh r2, [r1, #30] + 26bfc: 8bcc ldrh r4, [r1, #30] + 26bfe: f3c2 0208 ubfx r2, r2, #0, #9 + 26c02: f404 447e and.w r4, r4, #65024 ; 0xfe00 + 26c06: 4322 orrs r2, r4 + 26c08: 83ca strh r2, [r1, #30] tcd->CITER = tcd->BITER; - 26b1e: 8bca ldrh r2, [r1, #30] - 26b20: b292 uxth r2, r2 - 26b22: 82ca strh r2, [r1, #22] - 26b24: 2100 movs r1, #0 - 26b26: 4a0d ldr r2, [pc, #52] ; (26b5c <_spi_dma_rxISR0()+0xd0>) + 26c0a: 8bca ldrh r2, [r1, #30] + 26c0c: b292 uxth r2, r2 + 26c0e: 82ca strh r2, [r1, #22] + 26c10: 2100 movs r1, #0 + 26c12: 4a0d ldr r2, [pc, #52] ; (26c48 <_spi_dma_rxISR0()+0xd0>) _dma_count_remaining -= MAX_DMA_COUNT; - 26b28: 6419 str r1, [r3, #64] ; 0x40 - 26b2a: 76d0 strb r0, [r2, #27] - 26b2c: f882 c01b strb.w ip, [r2, #27] + 26c14: 6419 str r1, [r3, #64] ; 0x40 + 26c16: 76d0 strb r0, [r2, #27] + 26c18: f882 c01b strb.w ip, [r2, #27] void _spi_dma_rxISR0(void) {SPI.dma_rxisr();} - 26b30: bd30 pop {r4, r5, pc} + 26c1c: bd30 pop {r4, r5, pc} _dma_event_responder->triggerEvent(); - 26b32: 4623 mov r3, r4 - 26b34: 4611 mov r1, r2 + 26c1e: 4623 mov r3, r4 + 26c20: 4611 mov r1, r2 void _spi_dma_rxISR0(void) {SPI.dma_rxisr();} - 26b36: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 26c22: e8bd 4030 ldmia.w sp!, {r4, r5, lr} _dma_event_responder->triggerEvent(); - 26b3a: 4718 bx r3 + 26c26: 4718 bx r3 void _spi_dma_rxISR0(void) {SPI.dma_rxisr();} - 26b3c: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 26c28: e8bd 4030 ldmia.w sp!, {r4, r5, lr} triggerEventNotImmediate(); - 26b40: f002 bcd0 b.w 294e4 + 26c2c: f002 bcd0 b.w 295d0 tcd->BITER = (tcd->BITER & 0xFE00) | (len & 0x1ff); - 26b44: 8be9 ldrh r1, [r5, #30] - 26b46: f3c2 0e08 ubfx lr, r2, #0, #9 - 26b4a: b292 uxth r2, r2 - 26b4c: f401 417e and.w r1, r1, #65024 ; 0xfe00 - 26b50: ea41 010e orr.w r1, r1, lr - 26b54: 83e9 strh r1, [r5, #30] - 26b56: e7d4 b.n 26b02 <_spi_dma_rxISR0()+0x76> - 26b58: 2000af30 .word 0x2000af30 - 26b5c: 400e8000 .word 0x400e8000 - 26b60: ffff8001 .word 0xffff8001 - 26b64: 00026999 .word 0x00026999 - -00026b68 : + 26c30: 8be9 ldrh r1, [r5, #30] + 26c32: f3c2 0e08 ubfx lr, r2, #0, #9 + 26c36: b292 uxth r2, r2 + 26c38: f401 417e and.w r1, r1, #65024 ; 0xfe00 + 26c3c: ea41 010e orr.w r1, r1, lr + 26c40: 83e9 strh r1, [r5, #30] + 26c42: e7d4 b.n 26bee <_spi_dma_rxISR0()+0x76> + 26c44: 2000af50 .word 0x2000af50 + 26c48: 400e8000 .word 0x400e8000 + 26c4c: ffff8001 .word 0xffff8001 + 26c50: 00026a85 .word 0x00026a85 + +00026c54 : : port_addr(myport), hardware_addr(myhardware) { - 26b68: 2300 movs r3, #0 - 26b6a: e9c0 1200 strd r1, r2, [r0] - 26b6e: e9c0 3302 strd r3, r3, [r0, #8] - 26b72: e9c0 3304 strd r3, r3, [r0, #16] - 26b76: e9c0 3306 strd r3, r3, [r0, #24] - 26b7a: e9c0 3308 strd r3, r3, [r0, #32] - 26b7e: e9c0 330a strd r3, r3, [r0, #40] ; 0x28 - 26b82: e9c0 330c strd r3, r3, [r0, #48] ; 0x30 - 26b86: 6383 str r3, [r0, #56] ; 0x38 - 26b88: 8783 strh r3, [r0, #60] ; 0x3c - 26b8a: e9c0 3310 strd r3, r3, [r0, #64] ; 0x40 - 26b8e: e9c0 3312 strd r3, r3, [r0, #72] ; 0x48 + 26c54: 2300 movs r3, #0 + 26c56: e9c0 1200 strd r1, r2, [r0] + 26c5a: e9c0 3302 strd r3, r3, [r0, #8] + 26c5e: e9c0 3304 strd r3, r3, [r0, #16] + 26c62: e9c0 3306 strd r3, r3, [r0, #24] + 26c66: e9c0 3308 strd r3, r3, [r0, #32] + 26c6a: e9c0 330a strd r3, r3, [r0, #40] ; 0x28 + 26c6e: e9c0 330c strd r3, r3, [r0, #48] ; 0x30 + 26c72: 6383 str r3, [r0, #56] ; 0x38 + 26c74: 8783 strh r3, [r0, #60] ; 0x3c + 26c76: e9c0 3310 strd r3, r3, [r0, #64] ; 0x40 + 26c7a: e9c0 3312 strd r3, r3, [r0, #72] ; 0x48 } - 26b92: 4770 bx lr + 26c7e: 4770 bx lr -00026b94 <_GLOBAL__sub_I__ZN8SPIClass5beginEv>: +00026c80 <_GLOBAL__sub_I__ZN8SPIClass5beginEv>: } } - 26b94: b508 push {r3, lr} + 26c80: b508 push {r3, lr} SPIClass SPI((uintptr_t)&IMXRT_LPSPI4_S, (uintptr_t)&SPIClass::spiclass_lpspi4_hardware); - 26b96: 4a08 ldr r2, [pc, #32] ; (26bb8 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x24>) - 26b98: 4908 ldr r1, [pc, #32] ; (26bbc <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x28>) - 26b9a: 4809 ldr r0, [pc, #36] ; (26bc0 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x2c>) - 26b9c: f7ff ffe4 bl 26b68 + 26c82: 4a08 ldr r2, [pc, #32] ; (26ca4 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x24>) + 26c84: 4908 ldr r1, [pc, #32] ; (26ca8 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x28>) + 26c86: 4809 ldr r0, [pc, #36] ; (26cac <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x2c>) + 26c88: f7ff ffe4 bl 26c54 SPIClass SPI1((uintptr_t)&IMXRT_LPSPI3_S, (uintptr_t)&SPIClass::spiclass_lpspi3_hardware); - 26ba0: 4a08 ldr r2, [pc, #32] ; (26bc4 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x30>) - 26ba2: 4909 ldr r1, [pc, #36] ; (26bc8 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x34>) - 26ba4: 4809 ldr r0, [pc, #36] ; (26bcc <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x38>) - 26ba6: f7ff ffdf bl 26b68 + 26c8c: 4a08 ldr r2, [pc, #32] ; (26cb0 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x30>) + 26c8e: 4909 ldr r1, [pc, #36] ; (26cb4 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x34>) + 26c90: 4809 ldr r0, [pc, #36] ; (26cb8 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x38>) + 26c92: f7ff ffdf bl 26c54 SPIClass SPI2((uintptr_t)&IMXRT_LPSPI1_S, (uintptr_t)&SPIClass::spiclass_lpspi1_hardware); - 26baa: 4a09 ldr r2, [pc, #36] ; (26bd0 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x3c>) - 26bac: 4909 ldr r1, [pc, #36] ; (26bd4 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x40>) - 26bae: 480a ldr r0, [pc, #40] ; (26bd8 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x44>) - 26bb0: f7ff ffda bl 26b68 -} - 26bb4: bd08 pop {r3, pc} - 26bb6: bf00 nop - 26bb8: 20003ac4 .word 0x20003ac4 - 26bbc: 403a0000 .word 0x403a0000 - 26bc0: 2000af30 .word 0x2000af30 - 26bc4: 20003a74 .word 0x20003a74 - 26bc8: 4039c000 .word 0x4039c000 - 26bcc: 2000af80 .word 0x2000af80 - 26bd0: 20003a24 .word 0x20003a24 - 26bd4: 40394000 .word 0x40394000 - 26bd8: 2000afd0 .word 0x2000afd0 - -00026bdc : + 26c96: 4a09 ldr r2, [pc, #36] ; (26cbc <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x3c>) + 26c98: 4909 ldr r1, [pc, #36] ; (26cc0 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x40>) + 26c9a: 480a ldr r0, [pc, #40] ; (26cc4 <_GLOBAL__sub_I__ZN8SPIClass5beginEv+0x44>) + 26c9c: f7ff ffda bl 26c54 +} + 26ca0: bd08 pop {r3, pc} + 26ca2: bf00 nop + 26ca4: 20003b84 .word 0x20003b84 + 26ca8: 403a0000 .word 0x403a0000 + 26cac: 2000af50 .word 0x2000af50 + 26cb0: 20003b34 .word 0x20003b34 + 26cb4: 4039c000 .word 0x4039c000 + 26cb8: 2000afa0 .word 0x2000afa0 + 26cbc: 20003ae4 .word 0x20003ae4 + 26cc0: 40394000 .word 0x40394000 + 26cc4: 2000aff0 .word 0x2000aff0 + +00026cc8 : virtual void timer_event(USBDriverTimer *whichTimer) { } - 26bdc: 4770 bx lr - 26bde: bf00 nop + 26cc8: 4770 bx lr + 26cca: bf00 nop -00026be0 <_GLOBAL__sub_I_em_rx_tx2>: +00026ccc <_GLOBAL__sub_I_em_rx_tx2>: break; case EV_LE_LONG_TERM_KEY_REQUEST: break; //default: } } - 26be0: b508 push {r3, lr} + 26ccc: b508 push {r3, lr} ***/ struct EEPROMClass{ #if defined(__arm__) && defined(TEENSYDUINO) EEPROMClass() { eeprom_initialize(); } - 26be2: f003 fd65 bl 2a6b0 - 26be6: 4b04 ldr r3, [pc, #16] ; (26bf8 <_GLOBAL__sub_I_em_rx_tx2+0x18>) + 26cce: f003 fd63 bl 2a798 + 26cd2: 4b04 ldr r3, [pc, #16] ; (26ce4 <_GLOBAL__sub_I_em_rx_tx2+0x18>) elapsedMillis(unsigned long val) { ms = millis() - val; } - 26be8: 4904 ldr r1, [pc, #16] ; (26bfc <_GLOBAL__sub_I_em_rx_tx2+0x1c>) - 26bea: 6818 ldr r0, [r3, #0] - 26bec: 4a04 ldr r2, [pc, #16] ; (26c00 <_GLOBAL__sub_I_em_rx_tx2+0x20>) - 26bee: 681b ldr r3, [r3, #0] - 26bf0: 6008 str r0, [r1, #0] - 26bf2: 6013 str r3, [r2, #0] - 26bf4: bd08 pop {r3, pc} - 26bf6: bf00 nop - 26bf8: 2000bae8 .word 0x2000bae8 - 26bfc: 2000ba34 .word 0x2000ba34 - 26c00: 2000ba30 .word 0x2000ba30 - -00026c04 : + 26cd4: 4904 ldr r1, [pc, #16] ; (26ce8 <_GLOBAL__sub_I_em_rx_tx2+0x1c>) + 26cd6: 6818 ldr r0, [r3, #0] + 26cd8: 4a04 ldr r2, [pc, #16] ; (26cec <_GLOBAL__sub_I_em_rx_tx2+0x20>) + 26cda: 681b ldr r3, [r3, #0] + 26cdc: 6008 str r0, [r1, #0] + 26cde: 6013 str r3, [r2, #0] + 26ce0: bd08 pop {r3, pc} + 26ce2: bf00 nop + 26ce4: 2000bb08 .word 0x2000bb08 + 26ce8: 2000ba54 .word 0x2000ba54 + 26cec: 2000ba50 .word 0x2000ba50 + +00026cf0 : { - 26c04: b5f8 push {r3, r4, r5, r6, r7, lr} + 26cf0: b5f8 push {r3, r4, r5, r6, r7, lr} uint32_t n = CCM_ANALOG_PLL_USB2; - 26c06: 4a47 ldr r2, [pc, #284] ; (26d24 ) + 26cf2: 4a47 ldr r2, [pc, #284] ; (26e10 ) CCM_ANALOG_PLL_USB2_SET = CCM_ANALOG_PLL_USB2_EN_USB_CLKS; // enable - 26c08: f04f 0c40 mov.w ip, #64 ; 0x40 + 26cf4: f04f 0c40 mov.w ip, #64 ; 0x40 CCM_ANALOG_PLL_USB2_CLR = CCM_ANALOG_PLL_USB2_BYPASS; // turn off bypass - 26c0c: f44f 3180 mov.w r1, #65536 ; 0x10000 + 26cf8: f44f 3180 mov.w r1, #65536 ; 0x10000 CCM_ANALOG_PLL_USB2_SET = CCM_ANALOG_PLL_USB2_POWER; // power up - 26c10: f44f 5780 mov.w r7, #4096 ; 0x1000 + 26cfc: f44f 5780 mov.w r7, #4096 ; 0x1000 CCM_ANALOG_PLL_USB2_SET = CCM_ANALOG_PLL_USB2_ENABLE; // enable - 26c14: f44f 5500 mov.w r5, #8192 ; 0x2000 + 26d00: f44f 5500 mov.w r5, #8192 ; 0x2000 CCM_ANALOG_PLL_USB2_CLR = 0xC000; // get out of 528 MHz mode - 26c18: f44f 4440 mov.w r4, #49152 ; 0xc000 + 26d04: f44f 4440 mov.w r4, #49152 ; 0xc000 CCM_ANALOG_PLL_USB2_CLR = CCM_ANALOG_PLL_USB2_POWER | - 26c1c: f243 0042 movw r0, #12354 ; 0x3042 + 26d08: f243 0042 movw r0, #12354 ; 0x3042 uint32_t n = CCM_ANALOG_PLL_USB2; - 26c20: 6a13 ldr r3, [r2, #32] + 26d0c: 6a13 ldr r3, [r2, #32] if (n & CCM_ANALOG_PLL_USB2_DIV_SELECT) { - 26c22: 079e lsls r6, r3, #30 - 26c24: d470 bmi.n 26d08 + 26d0e: 079e lsls r6, r3, #30 + 26d10: d470 bmi.n 26df4 if (!(n & CCM_ANALOG_PLL_USB2_ENABLE)) { - 26c26: 049e lsls r6, r3, #18 - 26c28: d572 bpl.n 26d10 + 26d12: 049e lsls r6, r3, #18 + 26d14: d572 bpl.n 26dfc if (!(n & CCM_ANALOG_PLL_USB2_POWER)) { - 26c2a: 04de lsls r6, r3, #19 - 26c2c: d572 bpl.n 26d14 + 26d16: 04de lsls r6, r3, #19 + 26d18: d572 bpl.n 26e00 if (!(n & CCM_ANALOG_PLL_USB2_LOCK)) { - 26c2e: 2b00 cmp r3, #0 - 26c30: daf6 bge.n 26c20 + 26d1a: 2b00 cmp r3, #0 + 26d1c: daf6 bge.n 26d0c if (n & CCM_ANALOG_PLL_USB2_BYPASS) { - 26c32: f413 3680 ands.w r6, r3, #65536 ; 0x10000 - 26c36: d16f bne.n 26d18 + 26d1e: f413 3680 ands.w r6, r3, #65536 ; 0x10000 + 26d22: d16f bne.n 26e04 if (!(n & CCM_ANALOG_PLL_USB2_EN_USB_CLKS)) { - 26c38: 065b lsls r3, r3, #25 - 26c3a: d56f bpl.n 26d1c + 26d24: 065b lsls r3, r3, #25 + 26d26: d56f bpl.n 26e08 CCM_CCGR6 |= CCM_CCGR6_USBOH3(CCM_CCGR_ON); - 26c3c: 493a ldr r1, [pc, #232] ; (26d28 ) + 26d28: 493a ldr r1, [pc, #232] ; (26e14 ) USBPHY2_CTRL_CLR = USBPHY_CTRL_SFTRST | USBPHY_CTRL_CLKGATE; - 26c3e: f04f 4540 mov.w r5, #3221225472 ; 0xc0000000 - 26c42: 4b3a ldr r3, [pc, #232] ; (26d2c ) + 26d2a: f04f 4540 mov.w r5, #3221225472 ; 0xc0000000 + 26d2e: 4b3a ldr r3, [pc, #232] ; (26e18 ) USBPHY2_CTRL_SET = USBPHY_CTRL_ENUTMILEVEL2 | USBPHY_CTRL_ENUTMILEVEL3; - 26c44: f44f 4440 mov.w r4, #49152 ; 0xc000 + 26d30: f44f 4440 mov.w r4, #49152 ; 0xc000 CCM_CCGR6 |= CCM_CCGR6_USBOH3(CCM_CCGR_ON); - 26c48: f8d1 2080 ldr.w r2, [r1, #128] ; 0x80 + 26d34: f8d1 2080 ldr.w r2, [r1, #128] ; 0x80 delay(10); - 26c4c: 200a movs r0, #10 + 26d38: 200a movs r0, #10 CCM_CCGR6 |= CCM_CCGR6_USBOH3(CCM_CCGR_ON); - 26c4e: f042 0203 orr.w r2, r2, #3 - 26c52: f8c1 2080 str.w r2, [r1, #128] ; 0x80 + 26d3a: f042 0203 orr.w r2, r2, #3 + 26d3e: f8c1 2080 str.w r2, [r1, #128] ; 0x80 USBPHY2_CTRL_CLR = USBPHY_CTRL_SFTRST | USBPHY_CTRL_CLKGATE; - 26c56: 639d str r5, [r3, #56] ; 0x38 + 26d42: 639d str r5, [r3, #56] ; 0x38 USBPHY2_CTRL_SET = USBPHY_CTRL_ENUTMILEVEL2 | USBPHY_CTRL_ENUTMILEVEL3; - 26c58: 635c str r4, [r3, #52] ; 0x34 + 26d44: 635c str r4, [r3, #52] ; 0x34 USBPHY2_PWD = 0; - 26c5a: 601e str r6, [r3, #0] + 26d46: 601e str r6, [r3, #0] delay(10); - 26c5c: f003 fc36 bl 2a4cc + 26d48: f003 fc34 bl 2a5b4 USBHS_USBCMD |= USBHS_USBCMD_RST; - 26c60: 4a33 ldr r2, [pc, #204] ; (26d30 ) - 26c62: f8d2 3140 ldr.w r3, [r2, #320] ; 0x140 - 26c66: f043 0302 orr.w r3, r3, #2 - 26c6a: f8c2 3140 str.w r3, [r2, #320] ; 0x140 + 26d4c: 4a33 ldr r2, [pc, #204] ; (26e1c ) + 26d4e: f8d2 3140 ldr.w r3, [r2, #320] ; 0x140 + 26d52: f043 0302 orr.w r3, r3, #2 + 26d56: f8c2 3140 str.w r3, [r2, #320] ; 0x140 while (USBHS_USBCMD & USBHS_USBCMD_RST) { - 26c6e: f8d2 3140 ldr.w r3, [r2, #320] ; 0x140 - 26c72: 079b lsls r3, r3, #30 - 26c74: d4fb bmi.n 26c6e + 26d5a: f8d2 3140 ldr.w r3, [r2, #320] ; 0x140 + 26d5e: 079b lsls r3, r3, #30 + 26d60: d4fb bmi.n 26d5a init_Device_Pipe_Transfer_memory(); - 26c76: 4d2f ldr r5, [pc, #188] ; (26d34 ) - 26c78: f001 fa46 bl 28108 + 26d62: 4d2f ldr r5, [pc, #188] ; (26e20 ) + 26d64: f001 fa46 bl 281f4 periodictable[i] = 1; - 26c7c: 2401 movs r4, #1 - 26c7e: 1f2b subs r3, r5, #4 - 26c80: f105 027c add.w r2, r5, #124 ; 0x7c - 26c84: f843 4f04 str.w r4, [r3, #4]! + 26d68: 2401 movs r4, #1 + 26d6a: 1f2b subs r3, r5, #4 + 26d6c: f105 027c add.w r2, r5, #124 ; 0x7c + 26d70: f843 4f04 str.w r4, [r3, #4]! for (int i=0; i < PERIODIC_LIST_SIZE; i++) { - 26c88: 429a cmp r2, r3 - 26c8a: d1fb bne.n 26c84 + 26d74: 429a cmp r2, r3 + 26d76: d1fb bne.n 26d70 memset(uframe_bandwidth, 0, sizeof(uframe_bandwidth)); - 26c8c: f44f 7280 mov.w r2, #256 ; 0x100 - 26c90: 2100 movs r1, #0 - 26c92: 4829 ldr r0, [pc, #164] ; (26d38 ) - 26c94: f007 fbfa bl 2e48c + 26d78: f44f 7280 mov.w r2, #256 ; 0x100 + 26d7c: 2100 movs r1, #0 + 26d7e: 4829 ldr r0, [pc, #164] ; (26e24 ) + 26d80: f007 fbf8 bl 2e574 port_state = PORT_STATE_DISCONNECTED; - 26c98: 2200 movs r2, #0 - 26c9a: 4928 ldr r1, [pc, #160] ; (26d3c ) + 26d84: 2200 movs r2, #0 + 26d86: 4928 ldr r1, [pc, #160] ; (26e28 ) USBHS_USB_SBUSCFG = 1; // System Bus Interface Configuration - 26c9c: 4b24 ldr r3, [pc, #144] ; (26d30 ) + 26d88: 4b24 ldr r3, [pc, #144] ; (26e1c ) port_state = PORT_STATE_DISCONNECTED; - 26c9e: 700a strb r2, [r1, #0] + 26d8a: 700a strb r2, [r1, #0] USBHS_USBMODE = USBHS_USBMODE_CM(3); // host mode - 26ca0: 2103 movs r1, #3 + 26d8c: 2103 movs r1, #3 USBHS_USB_SBUSCFG = 1; // System Bus Interface Configuration - 26ca2: f8c3 4090 str.w r4, [r3, #144] ; 0x90 + 26d8e: f8c3 4090 str.w r4, [r3, #144] ; 0x90 USBHS_USBMODE = USBHS_USBMODE_CM(3); // host mode - 26ca6: f8c3 11a8 str.w r1, [r3, #424] ; 0x1a8 + 26d92: f8c3 11a8 str.w r1, [r3, #424] ; 0x1a8 USBHS_USBCMD = USBHS_USBCMD_ITC(1) | USBHS_USBCMD_RS | - 26caa: 4925 ldr r1, [pc, #148] ; (26d40 ) + 26d96: 4925 ldr r1, [pc, #148] ; (26e2c ) USBHS_USBINTR = 0; - 26cac: f8c3 2148 str.w r2, [r3, #328] ; 0x148 + 26d98: f8c3 2148 str.w r2, [r3, #328] ; 0x148 USBHS_PERIODICLISTBASE = (uint32_t)periodictable; - 26cb0: f8c3 5154 str.w r5, [r3, #340] ; 0x154 + 26d9c: f8c3 5154 str.w r5, [r3, #340] ; 0x154 USBHS_FRINDEX = 0; - 26cb4: f8c3 214c str.w r2, [r3, #332] ; 0x14c + 26da0: f8c3 214c str.w r2, [r3, #332] ; 0x14c USBHS_ASYNCLISTADDR = 0; - 26cb8: f8c3 2158 str.w r2, [r3, #344] ; 0x158 + 26da4: f8c3 2158 str.w r2, [r3, #344] ; 0x158 USBHS_USBCMD = USBHS_USBCMD_ITC(1) | USBHS_USBCMD_RS | - 26cbc: f8c3 1140 str.w r1, [r3, #320] ; 0x140 + 26da8: f8c3 1140 str.w r1, [r3, #320] ; 0x140 USBHS_PORTSC1 |= USBHS_PORTSC_PP; - 26cc0: f8d3 2184 ldr.w r2, [r3, #388] ; 0x184 + 26dac: f8d3 2184 ldr.w r2, [r3, #388] ; 0x184 static inline void attachInterruptVector(IRQ_NUMBER_t irq, void (*function)(void)) { _VectorsRam[irq + 16] = function; asm volatile("": : :"memory"); } - 26cc4: 491f ldr r1, [pc, #124] ; (26d44 ) - 26cc6: 4820 ldr r0, [pc, #128] ; (26d48 ) - 26cc8: f442 5280 orr.w r2, r2, #4096 ; 0x1000 - 26ccc: f8c3 2184 str.w r2, [r3, #388] ; 0x184 + 26db0: 491f ldr r1, [pc, #124] ; (26e30 ) + 26db2: 4820 ldr r0, [pc, #128] ; (26e34 ) + 26db4: f442 5280 orr.w r2, r2, #4096 ; 0x1000 + 26db8: f8c3 2184 str.w r2, [r3, #388] ; 0x184 println("USBHS_ASYNCLISTADDR = ", USBHS_ASYNCLISTADDR, HEX); - 26cd0: f8d3 2158 ldr.w r2, [r3, #344] ; 0x158 + 26dbc: f8d3 2158 ldr.w r2, [r3, #344] ; 0x158 println("USBHS_PERIODICLISTBASE = ", USBHS_PERIODICLISTBASE, HEX); - 26cd4: f8d3 2154 ldr.w r2, [r3, #340] ; 0x154 - 26cd8: f8c1 0200 str.w r0, [r1, #512] ; 0x200 + 26dc0: f8d3 2154 ldr.w r2, [r3, #340] ; 0x154 + 26dc4: f8c1 0200 str.w r0, [r1, #512] ; 0x200 USBHS_USBINTR = USBHS_USBINTR_PCE | USBHS_USBINTR_TIE0 | USBHS_USBINTR_TIE1; - 26cdc: 4a1b ldr r2, [pc, #108] ; (26d4c ) + 26dc8: 4a1b ldr r2, [pc, #108] ; (26e38 ) NVIC_ENABLE_IRQ(IRQ_USBHS); - 26cde: f04f 21e0 mov.w r1, #3758153728 ; 0xe000e000 - 26ce2: f44f 3080 mov.w r0, #65536 ; 0x10000 - 26ce6: f8c1 010c str.w r0, [r1, #268] ; 0x10c + 26dca: f04f 21e0 mov.w r1, #3758153728 ; 0xe000e000 + 26dce: f44f 3080 mov.w r0, #65536 ; 0x10000 + 26dd2: f8c1 010c str.w r0, [r1, #268] ; 0x10c USBHS_USBINTR = USBHS_USBINTR_PCE | USBHS_USBINTR_TIE0 | USBHS_USBINTR_TIE1; - 26cea: f8c3 2148 str.w r2, [r3, #328] ; 0x148 + 26dd6: f8c3 2148 str.w r2, [r3, #328] ; 0x148 USBHS_USBINTR |= USBHS_USBINTR_UEE | USBHS_USBINTR_SEE; - 26cee: f8d3 2148 ldr.w r2, [r3, #328] ; 0x148 - 26cf2: f042 0212 orr.w r2, r2, #18 - 26cf6: f8c3 2148 str.w r2, [r3, #328] ; 0x148 + 26dda: f8d3 2148 ldr.w r2, [r3, #328] ; 0x148 + 26dde: f042 0212 orr.w r2, r2, #18 + 26de2: f8c3 2148 str.w r2, [r3, #328] ; 0x148 USBHS_USBINTR |= USBHS_USBINTR_UPIE | USBHS_USBINTR_UAIE; - 26cfa: f8d3 2148 ldr.w r2, [r3, #328] ; 0x148 - 26cfe: f442 2240 orr.w r2, r2, #786432 ; 0xc0000 - 26d02: f8c3 2148 str.w r2, [r3, #328] ; 0x148 + 26de6: f8d3 2148 ldr.w r2, [r3, #328] ; 0x148 + 26dea: f442 2240 orr.w r2, r2, #786432 ; 0xc0000 + 26dee: f8c3 2148 str.w r2, [r3, #328] ; 0x148 } - 26d06: bdf8 pop {r3, r4, r5, r6, r7, pc} + 26df2: bdf8 pop {r3, r4, r5, r6, r7, pc} CCM_ANALOG_PLL_USB2_CLR = 0xC000; // get out of 528 MHz mode - 26d08: 6294 str r4, [r2, #40] ; 0x28 + 26df4: 6294 str r4, [r2, #40] ; 0x28 CCM_ANALOG_PLL_USB2_SET = CCM_ANALOG_PLL_USB2_BYPASS; - 26d0a: 6251 str r1, [r2, #36] ; 0x24 + 26df6: 6251 str r1, [r2, #36] ; 0x24 CCM_ANALOG_PLL_USB2_CLR = CCM_ANALOG_PLL_USB2_POWER | - 26d0c: 6290 str r0, [r2, #40] ; 0x28 + 26df8: 6290 str r0, [r2, #40] ; 0x28 continue; - 26d0e: e787 b.n 26c20 + 26dfa: e787 b.n 26d0c CCM_ANALOG_PLL_USB2_SET = CCM_ANALOG_PLL_USB2_ENABLE; // enable - 26d10: 6255 str r5, [r2, #36] ; 0x24 + 26dfc: 6255 str r5, [r2, #36] ; 0x24 continue; - 26d12: e785 b.n 26c20 + 26dfe: e785 b.n 26d0c CCM_ANALOG_PLL_USB2_SET = CCM_ANALOG_PLL_USB2_POWER; // power up - 26d14: 6257 str r7, [r2, #36] ; 0x24 + 26e00: 6257 str r7, [r2, #36] ; 0x24 continue; - 26d16: e783 b.n 26c20 + 26e02: e783 b.n 26d0c CCM_ANALOG_PLL_USB2_CLR = CCM_ANALOG_PLL_USB2_BYPASS; // turn off bypass - 26d18: 6291 str r1, [r2, #40] ; 0x28 + 26e04: 6291 str r1, [r2, #40] ; 0x28 continue; - 26d1a: e781 b.n 26c20 + 26e06: e781 b.n 26d0c CCM_ANALOG_PLL_USB2_SET = CCM_ANALOG_PLL_USB2_EN_USB_CLKS; // enable - 26d1c: f8c2 c024 str.w ip, [r2, #36] ; 0x24 + 26e08: f8c2 c024 str.w ip, [r2, #36] ; 0x24 continue; - 26d20: e77e b.n 26c20 - 26d22: bf00 nop - 26d24: 400d8000 .word 0x400d8000 - 26d28: 400fc000 .word 0x400fc000 - 26d2c: 400da000 .word 0x400da000 - 26d30: 402e0200 .word 0x402e0200 - 26d34: 20006000 .word 0x20006000 - 26d38: 2000b5d4 .word 0x2000b5d4 - 26d3c: 2000bc7a .word 0x2000bc7a - 26d40: 00018b15 .word 0x00018b15 - 26d44: 20005400 .word 0x20005400 - 26d48: 00027331 .word 0x00027331 - 26d4c: 03000004 .word 0x03000004 - -00026d50 : + 26e0c: e77e b.n 26d0c + 26e0e: bf00 nop + 26e10: 400d8000 .word 0x400d8000 + 26e14: 400fc000 .word 0x400fc000 + 26e18: 400da000 .word 0x400da000 + 26e1c: 402e0200 .word 0x402e0200 + 26e20: 20006000 .word 0x20006000 + 26e24: 2000b5f4 .word 0x2000b5f4 + 26e28: 2000bc9a .word 0x2000bc9a + 26e2c: 00018b15 .word 0x00018b15 + 26e30: 20005400 .word 0x20005400 + 26e34: 0002741d .word 0x0002741d + 26e38: 03000004 .word 0x03000004 + +00026e3c : if (!driver) return; - 26d50: 68c3 ldr r3, [r0, #12] + 26e3c: 68c3 ldr r3, [r0, #12] if (microseconds < 100) return; // minimum timer duration - 26d52: b353 cbz r3, 26daa - 26d54: 2963 cmp r1, #99 ; 0x63 + 26e3e: b353 cbz r3, 26e96 + 26e40: 2963 cmp r1, #99 ; 0x63 { - 26d56: b570 push {r4, r5, r6, lr} + 26e42: b570 push {r4, r5, r6, lr} if (microseconds < 100) return; // minimum timer duration - 26d58: bf8c ite hi - 26d5a: 2600 movhi r6, #0 - 26d5c: 2601 movls r6, #1 - 26d5e: 460c mov r4, r1 - 26d60: bb16 cbnz r6, 26da8 + 26e44: bf8c ite hi + 26e46: 2600 movhi r6, #0 + 26e48: 2601 movls r6, #1 + 26e4a: 460c mov r4, r1 + 26e4c: bb16 cbnz r6, 26e94 started_micros = micros(); - 26d62: 4605 mov r5, r0 - 26d64: f003 fc06 bl 2a574 + 26e4e: 4605 mov r5, r0 + 26e50: f003 fc04 bl 2a65c if (active_timers == NULL) { - 26d68: 4926 ldr r1, [pc, #152] ; (26e04 ) + 26e54: 4926 ldr r1, [pc, #152] ; (26ef0 ) started_micros = micros(); - 26d6a: 60a8 str r0, [r5, #8] + 26e56: 60a8 str r0, [r5, #8] if (active_timers == NULL) { - 26d6c: 6808 ldr r0, [r1, #0] + 26e58: 6808 ldr r0, [r1, #0] USBHS_GPTIMER1LD = microseconds - 1; - 26d6e: 4b26 ldr r3, [pc, #152] ; (26e08 ) + 26e5a: 4b26 ldr r3, [pc, #152] ; (26ef4 ) if (active_timers == NULL) { - 26d70: 2800 cmp r0, #0 - 26d72: d03a beq.n 26dea + 26e5c: 2800 cmp r0, #0 + 26e5e: d03a beq.n 26ed6 uint32_t remain = USBHS_GPTIMER1CTL & 0xFFFFFF; - 26d74: f8d3 208c ldr.w r2, [r3, #140] ; 0x8c - 26d78: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 + 26e60: f8d3 208c ldr.w r2, [r3, #140] ; 0x8c + 26e64: f022 427f bic.w r2, r2, #4278190080 ; 0xff000000 if (microseconds < remain) { - 26d7c: 4294 cmp r4, r2 - 26d7e: d315 bcc.n 26dac + 26e68: 4294 cmp r4, r2 + 26e6a: d315 bcc.n 26e98 while (list->next) { - 26d80: 6943 ldr r3, [r0, #20] + 26e6c: 6943 ldr r3, [r0, #20] microseconds -= remain; - 26d82: 1aa1 subs r1, r4, r2 + 26e6e: 1aa1 subs r1, r4, r2 while (list->next) { - 26d84: b923 cbnz r3, 26d90 - 26d86: e029 b.n 26ddc - 26d88: 695c ldr r4, [r3, #20] + 26e70: b923 cbnz r3, 26e7c + 26e72: e029 b.n 26ec8 + 26e74: 695c ldr r4, [r3, #20] microseconds -= list->usec; - 26d8a: 1a89 subs r1, r1, r2 + 26e76: 1a89 subs r1, r1, r2 while (list->next) { - 26d8c: b33c cbz r4, 26dde - 26d8e: 4623 mov r3, r4 + 26e78: b33c cbz r4, 26eca + 26e7a: 4623 mov r3, r4 if (microseconds < list->usec) { - 26d90: 691a ldr r2, [r3, #16] - 26d92: 428a cmp r2, r1 - 26d94: d9f8 bls.n 26d88 + 26e7c: 691a ldr r2, [r3, #16] + 26e7e: 428a cmp r2, r1 + 26e80: d9f8 bls.n 26e74 prev = list->prev; - 26d96: 6998 ldr r0, [r3, #24] + 26e82: 6998 ldr r0, [r3, #24] list->usec -= microseconds; - 26d98: 1a52 subs r2, r2, r1 - 26d9a: 611a str r2, [r3, #16] + 26e84: 1a52 subs r2, r2, r1 + 26e86: 611a str r2, [r3, #16] prev = list->prev; - 26d9c: 61a8 str r0, [r5, #24] + 26e88: 61a8 str r0, [r5, #24] next = list; - 26d9e: e9c5 1304 strd r1, r3, [r5, #16] + 26e8a: e9c5 1304 strd r1, r3, [r5, #16] list->prev = this; - 26da2: 619d str r5, [r3, #24] + 26e8e: 619d str r5, [r3, #24] prev->next = this; - 26da4: 69ab ldr r3, [r5, #24] - 26da6: 615d str r5, [r3, #20] + 26e90: 69ab ldr r3, [r5, #24] + 26e92: 615d str r5, [r3, #20] } - 26da8: bd70 pop {r4, r5, r6, pc} - 26daa: 4770 bx lr + 26e94: bd70 pop {r4, r5, r6, pc} + 26e96: 4770 bx lr __disable_irq(); - 26dac: b672 cpsid i + 26e98: b672 cpsid i USBHS_USBSTS = USBHS_USBSTS_TI1; // TODO: UPI & UAI safety?! - 26dae: f04f 7000 mov.w r0, #33554432 ; 0x2000000 + 26e9a: f04f 7000 mov.w r0, #33554432 ; 0x2000000 USBHS_GPTIMER1CTL = 0; - 26db2: f8c3 608c str.w r6, [r3, #140] ; 0x8c + 26e9e: f8c3 608c str.w r6, [r3, #140] ; 0x8c active_timers->usec = remain - microseconds; - 26db6: 1b12 subs r2, r2, r4 + 26ea2: 1b12 subs r2, r2, r4 USBHS_USBSTS = USBHS_USBSTS_TI1; // TODO: UPI & UAI safety?! - 26db8: f8c3 0144 str.w r0, [r3, #324] ; 0x144 + 26ea4: f8c3 0144 str.w r0, [r3, #324] ; 0x144 next = active_timers; - 26dbc: 6808 ldr r0, [r1, #0] + 26ea8: 6808 ldr r0, [r1, #0] usec = microseconds; - 26dbe: 612c str r4, [r5, #16] + 26eaa: 612c str r4, [r5, #16] USBHS_GPTIMER1LD = microseconds - 1; - 26dc0: 3c01 subs r4, #1 + 26eac: 3c01 subs r4, #1 prev = NULL; - 26dc2: 61ae str r6, [r5, #24] + 26eae: 61ae str r6, [r5, #24] next = active_timers; - 26dc4: 6168 str r0, [r5, #20] + 26eb0: 6168 str r0, [r5, #20] active_timers->usec = remain - microseconds; - 26dc6: 6102 str r2, [r0, #16] + 26eb2: 6102 str r2, [r0, #16] USBHS_GPTIMER1CTL = USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; - 26dc8: f04f 4240 mov.w r2, #3221225472 ; 0xc0000000 + 26eb4: f04f 4240 mov.w r2, #3221225472 ; 0xc0000000 active_timers = this; - 26dcc: 600d str r5, [r1, #0] + 26eb8: 600d str r5, [r1, #0] active_timers->prev = this; - 26dce: 6185 str r5, [r0, #24] + 26eba: 6185 str r5, [r0, #24] USBHS_GPTIMER1LD = microseconds - 1; - 26dd0: f8c3 4088 str.w r4, [r3, #136] ; 0x88 + 26ebc: f8c3 4088 str.w r4, [r3, #136] ; 0x88 USBHS_GPTIMER1CTL = USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; - 26dd4: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 26ec0: f8c3 208c str.w r2, [r3, #140] ; 0x8c __enable_irq(); - 26dd8: b662 cpsie i + 26ec4: b662 cpsie i } - 26dda: bd70 pop {r4, r5, r6, pc} + 26ec6: bd70 pop {r4, r5, r6, pc} while (list->next) { - 26ddc: 4603 mov r3, r0 + 26ec8: 4603 mov r3, r0 next = NULL; - 26dde: 2200 movs r2, #0 + 26eca: 2200 movs r2, #0 usec = microseconds; - 26de0: 6129 str r1, [r5, #16] + 26ecc: 6129 str r1, [r5, #16] next = NULL; - 26de2: e9c5 2305 strd r2, r3, [r5, #20] + 26ece: e9c5 2305 strd r2, r3, [r5, #20] list->next = this; - 26de6: 615d str r5, [r3, #20] + 26ed2: 615d str r5, [r3, #20] } - 26de8: bd70 pop {r4, r5, r6, pc} + 26ed4: bd70 pop {r4, r5, r6, pc} USBHS_GPTIMER1LD = microseconds - 1; - 26dea: 1e66 subs r6, r4, #1 + 26ed6: 1e66 subs r6, r4, #1 USBHS_GPTIMER1CTL = USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; - 26dec: f04f 4240 mov.w r2, #3221225472 ; 0xc0000000 + 26ed8: f04f 4240 mov.w r2, #3221225472 ; 0xc0000000 prev = NULL; - 26df0: 61a8 str r0, [r5, #24] + 26edc: 61a8 str r0, [r5, #24] active_timers = this; - 26df2: 600d str r5, [r1, #0] + 26ede: 600d str r5, [r1, #0] next = NULL; - 26df4: e9c5 4004 strd r4, r0, [r5, #16] + 26ee0: e9c5 4004 strd r4, r0, [r5, #16] USBHS_GPTIMER1LD = microseconds - 1; - 26df8: f8c3 6088 str.w r6, [r3, #136] ; 0x88 + 26ee4: f8c3 6088 str.w r6, [r3, #136] ; 0x88 USBHS_GPTIMER1CTL = USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; - 26dfc: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 26ee8: f8c3 208c str.w r2, [r3, #140] ; 0x8c } - 26e00: bd70 pop {r4, r5, r6, pc} - 26e02: bf00 nop - 26e04: 2000b5a0 .word 0x2000b5a0 - 26e08: 402e0200 .word 0x402e0200 + 26eec: bd70 pop {r4, r5, r6, pc} + 26eee: bf00 nop + 26ef0: 2000b5c0 .word 0x2000b5c0 + 26ef4: 402e0200 .word 0x402e0200 -00026e0c : +00026ef8 : __disable_irq(); - 26e0c: b672 cpsid i + 26ef8: b672 cpsid i if (active_timers) { - 26e0e: 4a19 ldr r2, [pc, #100] ; (26e74 ) - 26e10: 6813 ldr r3, [r2, #0] - 26e12: b1fb cbz r3, 26e54 + 26efa: 4a19 ldr r2, [pc, #100] ; (26f60 ) + 26efc: 6813 ldr r3, [r2, #0] + 26efe: b1fb cbz r3, 26f40 if (active_timers == this) { - 26e14: 4283 cmp r3, r0 - 26e16: d11a bne.n 26e4e + 26f00: 4283 cmp r3, r0 + 26f02: d11a bne.n 26f3a USBHS_GPTIMER1CTL = 0; - 26e18: 4817 ldr r0, [pc, #92] ; (26e78 ) + 26f04: 4817 ldr r0, [pc, #92] ; (26f64 ) if (next) { - 26e1a: 695b ldr r3, [r3, #20] + 26f06: 695b ldr r3, [r3, #20] { - 26e1c: b430 push {r4, r5} + 26f08: b430 push {r4, r5} USBHS_GPTIMER1CTL = 0; - 26e1e: 2400 movs r4, #0 - 26e20: f8c0 408c str.w r4, [r0, #140] ; 0x8c + 26f0a: 2400 movs r4, #0 + 26f0c: f8c0 408c str.w r4, [r0, #140] ; 0x8c if (next) { - 26e24: b323 cbz r3, 26e70 + 26f10: b323 cbz r3, 26f5c uint32_t usec_til_next = USBHS_GPTIMER1CTL & 0xFFFFFF; - 26e26: f8d0 108c ldr.w r1, [r0, #140] ; 0x8c + 26f12: f8d0 108c ldr.w r1, [r0, #140] ; 0x8c usec_til_next += next->usec; - 26e2a: 691d ldr r5, [r3, #16] + 26f16: 691d ldr r5, [r3, #16] uint32_t usec_til_next = USBHS_GPTIMER1CTL & 0xFFFFFF; - 26e2c: f021 417f bic.w r1, r1, #4278190080 ; 0xff000000 + 26f18: f021 417f bic.w r1, r1, #4278190080 ; 0xff000000 usec_til_next += next->usec; - 26e30: 4429 add r1, r5 + 26f1c: 4429 add r1, r5 next->usec = usec_til_next; - 26e32: 6119 str r1, [r3, #16] + 26f1e: 6119 str r1, [r3, #16] USBHS_GPTIMER1LD = usec_til_next; - 26e34: f8c0 1088 str.w r1, [r0, #136] ; 0x88 + 26f20: f8c0 1088 str.w r1, [r0, #136] ; 0x88 USBHS_GPTIMER1CTL = USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; - 26e38: f04f 4140 mov.w r1, #3221225472 ; 0xc0000000 - 26e3c: f8c0 108c str.w r1, [r0, #140] ; 0x8c + 26f24: f04f 4140 mov.w r1, #3221225472 ; 0xc0000000 + 26f28: f8c0 108c str.w r1, [r0, #140] ; 0x8c next->prev = NULL; - 26e40: 619c str r4, [r3, #24] + 26f2c: 619c str r4, [r3, #24] active_timers = next; - 26e42: 6013 str r3, [r2, #0] + 26f2e: 6013 str r3, [r2, #0] __enable_irq(); - 26e44: b662 cpsie i + 26f30: b662 cpsie i } - 26e46: bc30 pop {r4, r5} - 26e48: 4770 bx lr + 26f32: bc30 pop {r4, r5} + 26f34: 4770 bx lr if (t == this) { - 26e4a: 4298 cmp r0, r3 - 26e4c: d004 beq.n 26e58 + 26f36: 4298 cmp r0, r3 + 26f38: d004 beq.n 26f44 for (USBDriverTimer *t = active_timers->next; t; t = t->next) { - 26e4e: 695b ldr r3, [r3, #20] - 26e50: 2b00 cmp r3, #0 - 26e52: d1fa bne.n 26e4a + 26f3a: 695b ldr r3, [r3, #20] + 26f3c: 2b00 cmp r3, #0 + 26f3e: d1fa bne.n 26f36 __enable_irq(); - 26e54: b662 cpsie i - 26e56: 4770 bx lr + 26f40: b662 cpsie i + 26f42: 4770 bx lr t->prev->next = t->next; - 26e58: e9d3 2105 ldrd r2, r1, [r3, #20] - 26e5c: 614a str r2, [r1, #20] + 26f44: e9d3 2105 ldrd r2, r1, [r3, #20] + 26f48: 614a str r2, [r1, #20] if (t->next) { - 26e5e: 2a00 cmp r2, #0 - 26e60: d0f8 beq.n 26e54 + 26f4a: 2a00 cmp r2, #0 + 26f4c: d0f8 beq.n 26f40 t->next->usec += t->usec; - 26e62: 6918 ldr r0, [r3, #16] - 26e64: 6913 ldr r3, [r2, #16] + 26f4e: 6918 ldr r0, [r3, #16] + 26f50: 6913 ldr r3, [r2, #16] t->next->prev = t->prev; - 26e66: 6191 str r1, [r2, #24] + 26f52: 6191 str r1, [r2, #24] t->next->usec += t->usec; - 26e68: 4403 add r3, r0 - 26e6a: 6113 str r3, [r2, #16] + 26f54: 4403 add r3, r0 + 26f56: 6113 str r3, [r2, #16] __enable_irq(); - 26e6c: b662 cpsie i - 26e6e: 4770 bx lr + 26f58: b662 cpsie i + 26f5a: 4770 bx lr active_timers = NULL; - 26e70: 6013 str r3, [r2, #0] - 26e72: e7e7 b.n 26e44 - 26e74: 2000b5a0 .word 0x2000b5a0 - 26e78: 402e0200 .word 0x402e0200 + 26f5c: 6013 str r3, [r2, #0] + 26f5e: e7e7 b.n 26f30 + 26f60: 2000b5c0 .word 0x2000b5c0 + 26f64: 402e0200 .word 0x402e0200 -00026e7c : +00026f68 : Transfer_t *halt = (Transfer_t *)(pipe->qh.next); - 26e7c: 6903 ldr r3, [r0, #16] + 26f68: 6903 ldr r3, [r0, #16] { - 26e7e: 4684 mov ip, r0 + 26f6a: 4684 mov ip, r0 while (!(halt->qtd.token & 0x40)) halt = (Transfer_t *)(halt->qtd.next); - 26e80: 689a ldr r2, [r3, #8] + 26f6c: 689a ldr r2, [r3, #8] { - 26e82: b5f0 push {r4, r5, r6, r7, lr} - 26e84: 460d mov r5, r1 + 26f6e: b5f0 push {r4, r5, r6, r7, lr} + 26f70: 460d mov r5, r1 while (!(halt->qtd.token & 0x40)) halt = (Transfer_t *)(halt->qtd.next); - 26e86: 0651 lsls r1, r2, #25 - 26e88: d403 bmi.n 26e92 - 26e8a: 681b ldr r3, [r3, #0] - 26e8c: 689a ldr r2, [r3, #8] - 26e8e: 0652 lsls r2, r2, #25 - 26e90: d5fb bpl.n 26e8a + 26f72: 0651 lsls r1, r2, #25 + 26f74: d403 bmi.n 26f7e + 26f76: 681b ldr r3, [r3, #0] + 26f78: 689a ldr r2, [r3, #8] + 26f7a: 0652 lsls r2, r2, #25 + 26f7c: d5fb bpl.n 26f76 transfer->qtd.token = 0x40; - 26e92: 2240 movs r2, #64 ; 0x40 + 26f7e: 2240 movs r2, #64 ; 0x40 uint32_t token = transfer->qtd.token; - 26e94: f8d5 e008 ldr.w lr, [r5, #8] + 26f80: f8d5 e008 ldr.w lr, [r5, #8] halt->setup = transfer->setup; - 26e98: f105 0134 add.w r1, r5, #52 ; 0x34 + 26f84: f105 0134 add.w r1, r5, #52 ; 0x34 halt->driver = transfer->driver; - 26e9c: 6bee ldr r6, [r5, #60] ; 0x3c + 26f88: 6bee ldr r6, [r5, #60] ; 0x3c transfer->qtd.token = 0x40; - 26e9e: 60aa str r2, [r5, #8] + 26f8a: 60aa str r2, [r5, #8] halt->qtd.next = transfer->qtd.next; - 26ea0: 682a ldr r2, [r5, #0] - 26ea2: 601a str r2, [r3, #0] + 26f8c: 682a ldr r2, [r5, #0] + 26f8e: 601a str r2, [r3, #0] halt->qtd.alt_next = transfer->qtd.alt_next; - 26ea4: 686a ldr r2, [r5, #4] - 26ea6: 605a str r2, [r3, #4] + 26f90: 686a ldr r2, [r5, #4] + 26f92: 605a str r2, [r3, #4] halt->qtd.buffer[0] = transfer->qtd.buffer[0]; // TODO: optimize memcpy, all - 26ea8: 68ea ldr r2, [r5, #12] - 26eaa: 60da str r2, [r3, #12] + 26f94: 68ea ldr r2, [r5, #12] + 26f96: 60da str r2, [r3, #12] halt->qtd.buffer[1] = transfer->qtd.buffer[1]; // fields except token - 26eac: 692a ldr r2, [r5, #16] - 26eae: 611a str r2, [r3, #16] + 26f98: 692a ldr r2, [r5, #16] + 26f9a: 611a str r2, [r3, #16] halt->qtd.buffer[2] = transfer->qtd.buffer[2]; - 26eb0: 696a ldr r2, [r5, #20] - 26eb2: 615a str r2, [r3, #20] + 26f9c: 696a ldr r2, [r5, #20] + 26f9e: 615a str r2, [r3, #20] halt->qtd.buffer[3] = transfer->qtd.buffer[3]; - 26eb4: 69aa ldr r2, [r5, #24] - 26eb6: 619a str r2, [r3, #24] + 26fa0: 69aa ldr r2, [r5, #24] + 26fa2: 619a str r2, [r3, #24] halt->qtd.buffer[4] = transfer->qtd.buffer[4]; - 26eb8: 69ea ldr r2, [r5, #28] + 26fa4: 69ea ldr r2, [r5, #28] halt->pipe = pipe; - 26eba: f8c3 c028 str.w ip, [r3, #40] ; 0x28 + 26fa6: f8c3 c028 str.w ip, [r3, #40] ; 0x28 halt->qtd.buffer[4] = transfer->qtd.buffer[4]; - 26ebe: 61da str r2, [r3, #28] + 26faa: 61da str r2, [r3, #28] halt->buffer = transfer->buffer; - 26ec0: 6aea ldr r2, [r5, #44] ; 0x2c + 26fac: 6aea ldr r2, [r5, #44] ; 0x2c while ((uint32_t)(last->qtd.next) != 1) last = (Transfer_t *)(last->qtd.next); - 26ec2: 681c ldr r4, [r3, #0] + 26fae: 681c ldr r4, [r3, #0] halt->buffer = transfer->buffer; - 26ec4: 62da str r2, [r3, #44] ; 0x2c + 26fb0: 62da str r2, [r3, #44] ; 0x2c halt->length = transfer->length; - 26ec6: 6b2a ldr r2, [r5, #48] ; 0x30 + 26fb2: 6b2a ldr r2, [r5, #48] ; 0x30 while ((uint32_t)(last->qtd.next) != 1) last = (Transfer_t *)(last->qtd.next); - 26ec8: 2c01 cmp r4, #1 + 26fb4: 2c01 cmp r4, #1 halt->setup = transfer->setup; - 26eca: c903 ldmia r1, {r0, r1} + 26fb6: c903 ldmia r1, {r0, r1} halt->length = transfer->length; - 26ecc: 631a str r2, [r3, #48] ; 0x30 + 26fb8: 631a str r2, [r3, #48] ; 0x30 halt->setup = transfer->setup; - 26ece: f103 0234 add.w r2, r3, #52 ; 0x34 - 26ed2: e882 0003 stmia.w r2, {r0, r1} + 26fba: f103 0234 add.w r2, r3, #52 ; 0x34 + 26fbe: e882 0003 stmia.w r2, {r0, r1} while ((uint32_t)(last->qtd.next) != 1) last = (Transfer_t *)(last->qtd.next); - 26ed6: 461a mov r2, r3 + 26fc2: 461a mov r2, r3 halt->driver = transfer->driver; - 26ed8: 63de str r6, [r3, #60] ; 0x3c + 26fc4: 63de str r6, [r3, #60] ; 0x3c while ((uint32_t)(last->qtd.next) != 1) last = (Transfer_t *)(last->qtd.next); - 26eda: d003 beq.n 26ee4 - 26edc: 6812 ldr r2, [r2, #0] - 26ede: 6811 ldr r1, [r2, #0] - 26ee0: 2901 cmp r1, #1 - 26ee2: d1fb bne.n 26edc + 26fc6: d003 beq.n 26fd0 + 26fc8: 6812 ldr r2, [r2, #0] + 26fca: 6811 ldr r1, [r2, #0] + 26fcc: 2901 cmp r1, #1 + 26fce: d1fb bne.n 26fc8 last->qtd.next = (uint32_t)transfer; - 26ee4: 6015 str r5, [r2, #0] + 26fd0: 6015 str r5, [r2, #0] transfer->qtd.next = 1; - 26ee6: 2201 movs r2, #1 - 26ee8: 602a str r2, [r5, #0] + 26fd2: 2201 movs r2, #1 + 26fd4: 602a str r2, [r5, #0] while (p->qtd.next != (uint32_t)transfer) { - 26eea: 681a ldr r2, [r3, #0] - 26eec: 4295 cmp r5, r2 - 26eee: 461a mov r2, r3 - 26ef0: d02e beq.n 26f50 + 26fd6: 681a ldr r2, [r3, #0] + 26fd8: 4295 cmp r5, r2 + 26fda: 461a mov r2, r3 + 26fdc: d02e beq.n 2703c Transfer_t *prev = NULL; - 26ef2: 2600 movs r6, #0 + 26fde: 2600 movs r6, #0 Transfer_t *next = (Transfer_t *)p->qtd.next; - 26ef4: 6811 ldr r1, [r2, #0] - 26ef6: 4614 mov r4, r2 + 26fe0: 6811 ldr r1, [r2, #0] + 26fe2: 4614 mov r4, r2 while (p->qtd.next != (uint32_t)transfer) { - 26ef8: 680f ldr r7, [r1, #0] + 26fe4: 680f ldr r7, [r1, #0] Transfer_t *next = (Transfer_t *)p->qtd.next; - 26efa: 460a mov r2, r1 + 26fe6: 460a mov r2, r1 p->prev_followup = prev; - 26efc: 6266 str r6, [r4, #36] ; 0x24 + 26fe8: 6266 str r6, [r4, #36] ; 0x24 p->next_followup = next; - 26efe: 4626 mov r6, r4 + 26fea: 4626 mov r6, r4 while (p->qtd.next != (uint32_t)transfer) { - 26f00: 42bd cmp r5, r7 + 26fec: 42bd cmp r5, r7 p->next_followup = next; - 26f02: 6221 str r1, [r4, #32] + 26fee: 6221 str r1, [r4, #32] while (p->qtd.next != (uint32_t)transfer) { - 26f04: d1f6 bne.n 26ef4 + 26ff0: d1f6 bne.n 26fe0 p->next_followup = NULL; - 26f06: 2100 movs r1, #0 + 26ff2: 2100 movs r1, #0 p->prev_followup = prev; - 26f08: 6254 str r4, [r2, #36] ; 0x24 + 26ff4: 6254 str r4, [r2, #36] ; 0x24 p->next_followup = NULL; - 26f0a: 6211 str r1, [r2, #32] + 26ff6: 6211 str r1, [r2, #32] if (pipe->type == 0 || pipe->type == 2) { - 26f0c: f89c 1034 ldrb.w r1, [ip, #52] ; 0x34 - 26f10: f011 0ffd tst.w r1, #253 ; 0xfd - 26f14: d109 bne.n 26f2a + 26ff8: f89c 1034 ldrb.w r1, [ip, #52] ; 0x34 + 26ffc: f011 0ffd tst.w r1, #253 ; 0xfd + 27000: d109 bne.n 27016 } static void add_to_async_followup_list(Transfer_t *first, Transfer_t *last) { last->next_followup = NULL; // always add to end of list if (async_followup_last == NULL) { - 26f16: 480f ldr r0, [pc, #60] ; (26f54 ) - 26f18: 6801 ldr r1, [r0, #0] + 27002: 480f ldr r0, [pc, #60] ; (27040 ) + 27004: 6801 ldr r1, [r0, #0] first->prev_followup = NULL; - 26f1a: 6259 str r1, [r3, #36] ; 0x24 + 27006: 6259 str r1, [r3, #36] ; 0x24 if (async_followup_last == NULL) { - 26f1c: b189 cbz r1, 26f42 + 27008: b189 cbz r1, 2702e if (periodic_followup_last == NULL) { first->prev_followup = NULL; periodic_followup_first = first; } else { first->prev_followup = periodic_followup_last; periodic_followup_last->next_followup = first; - 26f1e: 620b str r3, [r1, #32] + 2700a: 620b str r3, [r1, #32] } periodic_followup_last = last; - 26f20: 6002 str r2, [r0, #0] + 2700c: 6002 str r2, [r0, #0] } - 26f22: 2001 movs r0, #1 + 2700e: 2001 movs r0, #1 halt->qtd.token = token; - 26f24: f8c3 e008 str.w lr, [r3, #8] + 27010: f8c3 e008 str.w lr, [r3, #8] } - 26f28: bdf0 pop {r4, r5, r6, r7, pc} + 27014: bdf0 pop {r4, r5, r6, r7, pc} if (periodic_followup_last == NULL) { - 26f2a: 480b ldr r0, [pc, #44] ; (26f58 ) - 26f2c: 6801 ldr r1, [r0, #0] + 27016: 480b ldr r0, [pc, #44] ; (27044 ) + 27018: 6801 ldr r1, [r0, #0] first->prev_followup = NULL; - 26f2e: 6259 str r1, [r3, #36] ; 0x24 + 2701a: 6259 str r1, [r3, #36] ; 0x24 if (periodic_followup_last == NULL) { - 26f30: 2900 cmp r1, #0 - 26f32: d1f4 bne.n 26f1e + 2701c: 2900 cmp r1, #0 + 2701e: d1f4 bne.n 2700a periodic_followup_first = first; - 26f34: 4909 ldr r1, [pc, #36] ; (26f5c ) - 26f36: 600b str r3, [r1, #0] + 27020: 4909 ldr r1, [pc, #36] ; (27048 ) + 27022: 600b str r3, [r1, #0] periodic_followup_last = last; - 26f38: 6002 str r2, [r0, #0] + 27024: 6002 str r2, [r0, #0] } - 26f3a: 2001 movs r0, #1 + 27026: 2001 movs r0, #1 halt->qtd.token = token; - 26f3c: f8c3 e008 str.w lr, [r3, #8] + 27028: f8c3 e008 str.w lr, [r3, #8] } - 26f40: bdf0 pop {r4, r5, r6, r7, pc} + 2702c: bdf0 pop {r4, r5, r6, r7, pc} async_followup_first = first; - 26f42: 4907 ldr r1, [pc, #28] ; (26f60 ) - 26f44: 600b str r3, [r1, #0] + 2702e: 4907 ldr r1, [pc, #28] ; (2704c ) + 27030: 600b str r3, [r1, #0] periodic_followup_last = last; - 26f46: 6002 str r2, [r0, #0] + 27032: 6002 str r2, [r0, #0] } - 26f48: 2001 movs r0, #1 + 27034: 2001 movs r0, #1 halt->qtd.token = token; - 26f4a: f8c3 e008 str.w lr, [r3, #8] + 27036: f8c3 e008 str.w lr, [r3, #8] } - 26f4e: bdf0 pop {r4, r5, r6, r7, pc} + 2703a: bdf0 pop {r4, r5, r6, r7, pc} Transfer_t *prev = NULL; - 26f50: 2400 movs r4, #0 - 26f52: e7d8 b.n 26f06 - 26f54: 2000b6dc .word 0x2000b6dc - 26f58: 2000b6e4 .word 0x2000b6e4 - 26f5c: 2000b6e8 .word 0x2000b6e8 - 26f60: 2000b6e0 .word 0x2000b6e0 - -00026f64 : + 2703c: 2400 movs r4, #0 + 2703e: e7d8 b.n 26ff2 + 27040: 2000b6fc .word 0x2000b6fc + 27044: 2000b704 .word 0x2000b704 + 27048: 2000b708 .word 0x2000b708 + 2704c: 2000b700 .word 0x2000b700 + +00027050 : { - 26f64: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 26f68: 4698 mov r8, r3 + 27050: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 27054: 4698 mov r8, r3 if (setup->wLength > 16384) return false; // max 16K data for control - 26f6a: 88cb ldrh r3, [r1, #6] - 26f6c: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 26f70: d902 bls.n 26f78 + 27056: 88cb ldrh r3, [r1, #6] + 27058: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 2705c: d902 bls.n 27064 } - 26f72: 2000 movs r0, #0 - 26f74: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 2705e: 2000 movs r0, #0 + 27060: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} transfer = allocate_Transfer(); - 26f78: 460d mov r5, r1 - 26f7a: 4681 mov r9, r0 - 26f7c: 4617 mov r7, r2 - 26f7e: f001 f90b bl 28198 + 27064: 460d mov r5, r1 + 27066: 4681 mov r9, r0 + 27068: 4617 mov r7, r2 + 2706a: f001 f90b bl 28284 if (!transfer) { - 26f82: 4606 mov r6, r0 - 26f84: 2800 cmp r0, #0 - 26f86: d0f4 beq.n 26f72 + 2706e: 4606 mov r6, r0 + 27070: 2800 cmp r0, #0 + 27072: d0f4 beq.n 2705e status = allocate_Transfer(); - 26f88: f001 f906 bl 28198 + 27074: f001 f906 bl 28284 if (!status) { - 26f8c: 4604 mov r4, r0 - 26f8e: 2800 cmp r0, #0 - 26f90: d06c beq.n 2706c + 27078: 4604 mov r4, r0 + 2707a: 2800 cmp r0, #0 + 2707c: d06c beq.n 27158 if (setup->wLength > 0) { - 26f92: 88e9 ldrh r1, [r5, #6] - 26f94: 2900 cmp r1, #0 - 26f96: d13b bne.n 27010 + 2707e: 88e9 ldrh r1, [r5, #6] + 27080: 2900 cmp r1, #0 + 27082: d13b bne.n 270fc transfer->qtd.next = (uint32_t)status; - 26f98: f8df c0f0 ldr.w ip, [pc, #240] ; 2708c - 26f9c: 6030 str r0, [r6, #0] + 27084: f8df c0f0 ldr.w ip, [pc, #240] ; 27178 + 27088: 6030 str r0, [r6, #0] addr &= 0xFFFFF000; - 26f9e: 4b39 ldr r3, [pc, #228] ; (27084 ) + 2708a: 4b39 ldr r3, [pc, #228] ; (27170 ) t->qtd.alt_next = 1; // 1=terminate - 26fa0: 2201 movs r2, #1 + 2708c: 2201 movs r2, #1 t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 26fa2: f8df a0ec ldr.w sl, [pc, #236] ; 27090 + 2708e: f8df a0ec ldr.w sl, [pc, #236] ; 2717c addr &= 0xFFFFF000; - 26fa6: 402b ands r3, r5 + 27092: 402b ands r3, r5 status->pipe = dev->control_pipe; - 26fa8: f8d9 0000 ldr.w r0, [r9] + 27094: f8d9 0000 ldr.w r0, [r9] status->setup.word2 = setup->word2; - 26fac: f8d5 e004 ldr.w lr, [r5, #4] + 27098: f8d5 e004 ldr.w lr, [r5, #4] status->setup.word1 = setup->word1; - 26fb0: f8d5 9000 ldr.w r9, [r5] + 2709c: f8d5 9000 ldr.w r9, [r5] t->qtd.alt_next = 1; // 1=terminate - 26fb4: 6072 str r2, [r6, #4] + 270a0: 6072 str r2, [r6, #4] t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 26fb6: f8c6 a008 str.w sl, [r6, #8] + 270a2: f8c6 a008 str.w sl, [r6, #8] t->qtd.buffer[0] = addr; - 26fba: 60f5 str r5, [r6, #12] + 270a6: 60f5 str r5, [r6, #12] t->qtd.buffer[1] = addr + 0x1000; - 26fbc: f503 5580 add.w r5, r3, #4096 ; 0x1000 - 26fc0: 6135 str r5, [r6, #16] + 270a8: f503 5580 add.w r5, r3, #4096 ; 0x1000 + 270ac: 6135 str r5, [r6, #16] t->qtd.buffer[2] = addr + 0x2000; - 26fc2: f503 5500 add.w r5, r3, #8192 ; 0x2000 - 26fc6: 6175 str r5, [r6, #20] + 270ae: f503 5500 add.w r5, r3, #8192 ; 0x2000 + 270b2: 6175 str r5, [r6, #20] t->qtd.buffer[3] = addr + 0x3000; - 26fc8: f503 5540 add.w r5, r3, #12288 ; 0x3000 + 270b4: f503 5540 add.w r5, r3, #12288 ; 0x3000 t->qtd.buffer[4] = addr + 0x4000; - 26fcc: f503 4380 add.w r3, r3, #16384 ; 0x4000 + 270b8: f503 4380 add.w r3, r3, #16384 ; 0x4000 t->qtd.buffer[3] = addr + 0x3000; - 26fd0: 61b5 str r5, [r6, #24] + 270bc: 61b5 str r5, [r6, #24] t->qtd.buffer[4] = addr + 0x4000; - 26fd2: 61f3 str r3, [r6, #28] + 270be: 61f3 str r3, [r6, #28] t->qtd.buffer[0] = addr; - 26fd4: 2300 movs r3, #0 + 270c0: 2300 movs r3, #0 t->qtd.alt_next = 1; // 1=terminate - 26fd6: 6062 str r2, [r4, #4] + 270c2: 6062 str r2, [r4, #4] t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 26fd8: f8c4 c008 str.w ip, [r4, #8] + 270c4: f8c4 c008 str.w ip, [r4, #8] t->qtd.buffer[0] = addr; - 26fdc: 60e3 str r3, [r4, #12] + 270c8: 60e3 str r3, [r4, #12] t->qtd.buffer[1] = addr + 0x1000; - 26fde: f44f 5380 mov.w r3, #4096 ; 0x1000 + 270ca: f44f 5380 mov.w r3, #4096 ; 0x1000 status->driver = driver; - 26fe2: f8c4 803c str.w r8, [r4, #60] ; 0x3c + 270ce: f8c4 803c str.w r8, [r4, #60] ; 0x3c t->qtd.buffer[1] = addr + 0x1000; - 26fe6: 6123 str r3, [r4, #16] + 270d2: 6123 str r3, [r4, #16] t->qtd.buffer[2] = addr + 0x2000; - 26fe8: f44f 5300 mov.w r3, #8192 ; 0x2000 + 270d4: f44f 5300 mov.w r3, #8192 ; 0x2000 status->pipe = dev->control_pipe; - 26fec: 62a0 str r0, [r4, #40] ; 0x28 + 270d8: 62a0 str r0, [r4, #40] ; 0x28 t->qtd.buffer[2] = addr + 0x2000; - 26fee: 6163 str r3, [r4, #20] + 270da: 6163 str r3, [r4, #20] t->qtd.buffer[3] = addr + 0x3000; - 26ff0: f44f 5340 mov.w r3, #12288 ; 0x3000 - 26ff4: 61a3 str r3, [r4, #24] + 270dc: f44f 5340 mov.w r3, #12288 ; 0x3000 + 270e0: 61a3 str r3, [r4, #24] t->qtd.buffer[4] = addr + 0x4000; - 26ff6: f44f 4380 mov.w r3, #16384 ; 0x4000 + 270e2: f44f 4380 mov.w r3, #16384 ; 0x4000 status->length = setup->wLength; - 26ffa: e9c4 710b strd r7, r1, [r4, #44] ; 0x2c + 270e6: e9c4 710b strd r7, r1, [r4, #44] ; 0x2c t->qtd.buffer[4] = addr + 0x4000; - 26ffe: 61e3 str r3, [r4, #28] + 270ea: 61e3 str r3, [r4, #28] return queue_Transfer(dev->control_pipe, transfer); - 27000: 4631 mov r1, r6 + 270ec: 4631 mov r1, r6 status->qtd.next = 1; - 27002: 6022 str r2, [r4, #0] + 270ee: 6022 str r2, [r4, #0] status->setup.word2 = setup->word2; - 27004: e9c4 9e0d strd r9, lr, [r4, #52] ; 0x34 + 270f0: e9c4 9e0d strd r9, lr, [r4, #52] ; 0x34 } - 27008: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 270f4: e8bd 47f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, lr} return queue_Transfer(dev->control_pipe, transfer); - 2700c: f7ff bf36 b.w 26e7c + 270f8: f7ff bf36 b.w 26f68 data = allocate_Transfer(); - 27010: f001 f8c2 bl 28198 + 270fc: f001 f8c2 bl 28284 if (!data) { - 27014: b370 cbz r0, 27074 + 27100: b370 cbz r0, 27160 uint32_t pid = (setup->bmRequestType & 0x80) ? 1 : 0; - 27016: 782a ldrb r2, [r5, #0] + 27102: 782a ldrb r2, [r5, #0] init_qTD(data, buf, setup->wLength, pid, 1, false); - 27018: 88e9 ldrh r1, [r5, #6] - 2701a: 09d2 lsrs r2, r2, #7 + 27104: 88e9 ldrh r1, [r5, #6] + 27106: 09d2 lsrs r2, r2, #7 addr &= 0xFFFFF000; - 2701c: 4b19 ldr r3, [pc, #100] ; (27084 ) + 27108: 4b19 ldr r3, [pc, #100] ; (27170 ) t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 2701e: f8df c074 ldr.w ip, [pc, #116] ; 27094 - 27022: ea4f 2e02 mov.w lr, r2, lsl #8 + 2710a: f8df c074 ldr.w ip, [pc, #116] ; 27180 + 2710e: ea4f 2e02 mov.w lr, r2, lsl #8 addr &= 0xFFFFF000; - 27026: 403b ands r3, r7 + 27112: 403b ands r3, r7 status_direction = pid ^ 1; - 27028: f082 0201 eor.w r2, r2, #1 + 27114: f082 0201 eor.w r2, r2, #1 t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 2702c: ea4e 4e01 orr.w lr, lr, r1, lsl #16 - 27030: ea4e 0c0c orr.w ip, lr, ip + 27118: ea4e 4e01 orr.w lr, lr, r1, lsl #16 + 2711c: ea4e 0c0c orr.w ip, lr, ip t->qtd.alt_next = 1; // 1=terminate - 27034: f04f 0e01 mov.w lr, #1 - 27038: f8c0 e004 str.w lr, [r0, #4] + 27120: f04f 0e01 mov.w lr, #1 + 27124: f8c0 e004 str.w lr, [r0, #4] t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 2703c: f8c0 c008 str.w ip, [r0, #8] + 27128: f8c0 c008 str.w ip, [r0, #8] t->qtd.buffer[1] = addr + 0x1000; - 27040: f503 5c80 add.w ip, r3, #4096 ; 0x1000 + 2712c: f503 5c80 add.w ip, r3, #4096 ; 0x1000 t->qtd.buffer[0] = addr; - 27044: 60c7 str r7, [r0, #12] + 27130: 60c7 str r7, [r0, #12] t->qtd.buffer[1] = addr + 0x1000; - 27046: f8c0 c010 str.w ip, [r0, #16] + 27132: f8c0 c010 str.w ip, [r0, #16] t->qtd.buffer[2] = addr + 0x2000; - 2704a: f503 5c00 add.w ip, r3, #8192 ; 0x2000 - 2704e: f8c0 c014 str.w ip, [r0, #20] + 27136: f503 5c00 add.w ip, r3, #8192 ; 0x2000 + 2713a: f8c0 c014 str.w ip, [r0, #20] t->qtd.buffer[3] = addr + 0x3000; - 27052: f503 5c40 add.w ip, r3, #12288 ; 0x3000 + 2713e: f503 5c40 add.w ip, r3, #12288 ; 0x3000 t->qtd.buffer[4] = addr + 0x4000; - 27056: f503 4380 add.w r3, r3, #16384 ; 0x4000 + 27142: f503 4380 add.w r3, r3, #16384 ; 0x4000 t->qtd.buffer[3] = addr + 0x3000; - 2705a: f8c0 c018 str.w ip, [r0, #24] + 27146: f8c0 c018 str.w ip, [r0, #24] t->qtd.buffer[4] = addr + 0x4000; - 2705e: 61c3 str r3, [r0, #28] + 2714a: 61c3 str r3, [r0, #28] t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 27060: 4b09 ldr r3, [pc, #36] ; (27088 ) + 2714c: 4b09 ldr r3, [pc, #36] ; (27174 ) transfer->qtd.next = (uint32_t)data; - 27062: 6030 str r0, [r6, #0] + 2714e: 6030 str r0, [r6, #0] t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 27064: ea43 2c02 orr.w ip, r3, r2, lsl #8 + 27150: ea43 2c02 orr.w ip, r3, r2, lsl #8 data->qtd.next = (uint32_t)status; - 27068: 6004 str r4, [r0, #0] + 27154: 6004 str r4, [r0, #0] status_direction = pid ^ 1; - 2706a: e798 b.n 26f9e + 27156: e798 b.n 2708a free_Transfer(transfer); - 2706c: 4630 mov r0, r6 - 2706e: f001 f89b bl 281a8 + 27158: 4630 mov r0, r6 + 2715a: f001 f89b bl 28294 return false; - 27072: e77e b.n 26f72 + 2715e: e77e b.n 2705e free_Transfer(transfer); - 27074: 4630 mov r0, r6 - 27076: f001 f897 bl 281a8 + 27160: 4630 mov r0, r6 + 27162: f001 f897 bl 28294 free_Transfer(status); - 2707a: 4620 mov r0, r4 - 2707c: f001 f894 bl 281a8 + 27166: 4620 mov r0, r4 + 27168: f001 f894 bl 28294 return false; - 27080: e777 b.n 26f72 - 27082: bf00 nop - 27084: fffff000 .word 0xfffff000 - 27088: 80008080 .word 0x80008080 - 2708c: 80008180 .word 0x80008180 - 27090: 00080280 .word 0x00080280 - 27094: 80000080 .word 0x80000080 - -00027098 : + 2716c: e777 b.n 2705e + 2716e: bf00 nop + 27170: fffff000 .word 0xfffff000 + 27174: 80008080 .word 0x80008080 + 27178: 80008180 .word 0x80008180 + 2717c: 00080280 .word 0x00080280 + 27180: 80000080 .word 0x80000080 + +00027184 : { - 27098: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 27184: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} bool irq_was_enabled = NVIC_IS_ENABLED(IRQ_USBHS); - 2709c: f04f 24e0 mov.w r4, #3758153728 ; 0xe000e000 + 27188: f04f 24e0 mov.w r4, #3758153728 ; 0xe000e000 NVIC_DISABLE_IRQ(IRQ_USBHS); - 270a0: f44f 3a80 mov.w sl, #65536 ; 0x10000 + 2718c: f44f 3a80 mov.w sl, #65536 ; 0x10000 { - 270a4: 4699 mov r9, r3 - 270a6: 4607 mov r7, r0 + 27190: 4699 mov r9, r3 + 27192: 4607 mov r7, r0 bool irq_was_enabled = NVIC_IS_ENABLED(IRQ_USBHS); - 270a8: f8d4 310c ldr.w r3, [r4, #268] ; 0x10c + 27194: f8d4 310c ldr.w r3, [r4, #268] ; 0x10c { - 270ac: 468b mov fp, r1 + 27198: 468b mov fp, r1 NVIC_DISABLE_IRQ(IRQ_USBHS); - 270ae: f8c4 a18c str.w sl, [r4, #396] ; 0x18c + 2719a: f8c4 a18c str.w sl, [r4, #396] ; 0x18c { - 270b2: 4616 mov r6, r2 + 2719e: 4616 mov r6, r2 bool irq_was_enabled = NVIC_IS_ENABLED(IRQ_USBHS); - 270b4: ea03 080a and.w r8, r3, sl + 271a0: ea03 080a and.w r8, r3, sl transfer = allocate_Transfer(); - 270b8: f001 f86e bl 28198 + 271a4: f001 f86e bl 28284 if (!transfer) { - 270bc: 4605 mov r5, r0 - 270be: 2800 cmp r0, #0 - 270c0: d07d beq.n 271be + 271a8: 4605 mov r5, r0 + 271aa: 2800 cmp r0, #0 + 271ac: d07d beq.n 272aa for (count=((len-1) >> 14); count; count--) { - 270c2: 1e73 subs r3, r6, #1 - 270c4: 0b9c lsrs r4, r3, #14 - 270c6: d008 beq.n 270da + 271ae: 1e73 subs r3, r6, #1 + 271b0: 0b9c lsrs r4, r3, #14 + 271b2: d008 beq.n 271c6 next = allocate_Transfer(); - 270c8: 4682 mov sl, r0 - 270ca: f001 f865 bl 28198 + 271b4: 4682 mov sl, r0 + 271b6: f001 f865 bl 28284 if (!next) { - 270ce: 2800 cmp r0, #0 - 270d0: d060 beq.n 27194 + 271ba: 2800 cmp r0, #0 + 271bc: d060 beq.n 27280 for (count=((len-1) >> 14); count; count--) { - 270d2: 3c01 subs r4, #1 + 271be: 3c01 subs r4, #1 data->qtd.next = (uint32_t)next; - 270d4: f8ca 0000 str.w r0, [sl] + 271c0: f8ca 0000 str.w r0, [sl] for (count=((len-1) >> 14); count; count--) { - 270d8: d1f6 bne.n 270c8 + 271c4: d1f6 bne.n 271b4 data->setup.word1 = 0; - 270da: 2300 movs r3, #0 + 271c6: 2300 movs r3, #0 data->qtd.next = 1; - 270dc: 2101 movs r1, #1 + 271c8: 2101 movs r1, #1 if (count > 16384) { - 270de: f5b6 4f80 cmp.w r6, #16384 ; 0x4000 + 271ca: f5b6 4f80 cmp.w r6, #16384 ; 0x4000 data->driver = driver; - 270e2: f8c0 903c str.w r9, [r0, #60] ; 0x3c + 271ce: f8c0 903c str.w r9, [r0, #60] ; 0x3c data->length = len; - 270e6: 6306 str r6, [r0, #48] ; 0x30 + 271d2: 6306 str r6, [r0, #48] ; 0x30 data->driver = driver; - 270e8: 462a mov r2, r5 + 271d4: 462a mov r2, r5 data->qtd.next = 1; - 270ea: 6001 str r1, [r0, #0] + 271d6: 6001 str r1, [r0, #0] t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 270ec: 4c37 ldr r4, [pc, #220] ; (271cc ) + 271d8: 4c37 ldr r4, [pc, #220] ; (272b8 ) data->buffer = buffer; - 270ee: e9c0 7b0a strd r7, fp, [r0, #40] ; 0x28 + 271da: e9c0 7b0a strd r7, fp, [r0, #40] ; 0x28 data->setup.word2 = 0; - 270f2: e9c0 330d strd r3, r3, [r0, #52] ; 0x34 + 271de: e9c0 330d strd r3, r3, [r0, #52] ; 0x34 addr &= 0xFFFFF000; - 270f6: 4836 ldr r0, [pc, #216] ; (271d0 ) + 271e2: 4836 ldr r0, [pc, #216] ; (272bc ) if (count > 16384) { - 270f8: d920 bls.n 2713c + 271e4: d920 bls.n 27228 init_qTD(data, p, count, pipe->direction, 0, last); - 270fa: f897 3035 ldrb.w r3, [r7, #53] ; 0x35 + 271e6: f897 3035 ldrb.w r3, [r7, #53] ; 0x35 len -= count; - 270fe: f5a6 4680 sub.w r6, r6, #16384 ; 0x4000 + 271ea: f5a6 4680 sub.w r6, r6, #16384 ; 0x4000 t->qtd.alt_next = 1; // 1=terminate - 27102: 6051 str r1, [r2, #4] + 271ee: 6051 str r1, [r2, #4] t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 27104: ea44 2303 orr.w r3, r4, r3, lsl #8 + 271f0: ea44 2303 orr.w r3, r4, r3, lsl #8 if (count > 16384) { - 27108: f5b6 4f80 cmp.w r6, #16384 ; 0x4000 + 271f4: f5b6 4f80 cmp.w r6, #16384 ; 0x4000 t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 2710c: 6093 str r3, [r2, #8] + 271f8: 6093 str r3, [r2, #8] addr &= 0xFFFFF000; - 2710e: ea0b 0300 and.w r3, fp, r0 + 271fa: ea0b 0300 and.w r3, fp, r0 t->qtd.buffer[0] = addr; - 27112: f8c2 b00c str.w fp, [r2, #12] + 271fe: f8c2 b00c str.w fp, [r2, #12] t->qtd.buffer[1] = addr + 0x1000; - 27116: f50b 4b80 add.w fp, fp, #16384 ; 0x4000 - 2711a: f503 5c80 add.w ip, r3, #4096 ; 0x1000 - 2711e: f8c2 c010 str.w ip, [r2, #16] + 27202: f50b 4b80 add.w fp, fp, #16384 ; 0x4000 + 27206: f503 5c80 add.w ip, r3, #4096 ; 0x1000 + 2720a: f8c2 c010 str.w ip, [r2, #16] t->qtd.buffer[2] = addr + 0x2000; - 27122: f503 5c00 add.w ip, r3, #8192 ; 0x2000 - 27126: f8c2 c014 str.w ip, [r2, #20] + 2720e: f503 5c00 add.w ip, r3, #8192 ; 0x2000 + 27212: f8c2 c014 str.w ip, [r2, #20] t->qtd.buffer[3] = addr + 0x3000; - 2712a: f503 5c40 add.w ip, r3, #12288 ; 0x3000 + 27216: f503 5c40 add.w ip, r3, #12288 ; 0x3000 t->qtd.buffer[4] = addr + 0x4000; - 2712e: f503 4380 add.w r3, r3, #16384 ; 0x4000 + 2721a: f503 4380 add.w r3, r3, #16384 ; 0x4000 t->qtd.buffer[3] = addr + 0x3000; - 27132: f8c2 c018 str.w ip, [r2, #24] + 2721e: f8c2 c018 str.w ip, [r2, #24] t->qtd.buffer[4] = addr + 0x4000; - 27136: 61d3 str r3, [r2, #28] + 27222: 61d3 str r3, [r2, #28] data = (Transfer_t *)(data->qtd.next); - 27138: 6812 ldr r2, [r2, #0] + 27224: 6812 ldr r2, [r2, #0] if (count > 16384) { - 2713a: d8de bhi.n 270fa + 27226: d8de bhi.n 271e6 t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 2713c: 0436 lsls r6, r6, #16 + 27228: 0436 lsls r6, r6, #16 init_qTD(data, p, count, pipe->direction, 0, last); - 2713e: f897 0035 ldrb.w r0, [r7, #53] ; 0x35 + 2722a: f897 0035 ldrb.w r0, [r7, #53] ; 0x35 addr &= 0xFFFFF000; - 27142: 4c23 ldr r4, [pc, #140] ; (271d0 ) + 2722e: 4c23 ldr r4, [pc, #140] ; (272bc ) bool return_value = queue_Transfer(pipe, transfer); - 27144: 4629 mov r1, r5 + 27230: 4629 mov r1, r5 t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 27146: f446 4300 orr.w r3, r6, #32768 ; 0x8000 + 27232: f446 4300 orr.w r3, r6, #32768 ; 0x8000 t->qtd.alt_next = 1; // 1=terminate - 2714a: 2501 movs r5, #1 + 27236: 2501 movs r5, #1 addr &= 0xFFFFF000; - 2714c: ea0b 0404 and.w r4, fp, r4 + 27238: ea0b 0404 and.w r4, fp, r4 t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 27150: ea43 2300 orr.w r3, r3, r0, lsl #8 + 2723c: ea43 2300 orr.w r3, r3, r0, lsl #8 t->qtd.alt_next = 1; // 1=terminate - 27154: 6055 str r5, [r2, #4] + 27240: 6055 str r5, [r2, #4] bool return_value = queue_Transfer(pipe, transfer); - 27156: 4638 mov r0, r7 + 27242: 4638 mov r0, r7 t->qtd.token = data01 | (len << 16) | (irq ? 0x8000 : 0) | (pid << 8) | 0x80; - 27158: f043 0380 orr.w r3, r3, #128 ; 0x80 - 2715c: 6093 str r3, [r2, #8] + 27244: f043 0380 orr.w r3, r3, #128 ; 0x80 + 27248: 6093 str r3, [r2, #8] t->qtd.buffer[1] = addr + 0x1000; - 2715e: f504 5380 add.w r3, r4, #4096 ; 0x1000 + 2724a: f504 5380 add.w r3, r4, #4096 ; 0x1000 t->qtd.buffer[0] = addr; - 27162: f8c2 b00c str.w fp, [r2, #12] + 2724e: f8c2 b00c str.w fp, [r2, #12] t->qtd.buffer[1] = addr + 0x1000; - 27166: 6113 str r3, [r2, #16] + 27252: 6113 str r3, [r2, #16] t->qtd.buffer[2] = addr + 0x2000; - 27168: f504 5300 add.w r3, r4, #8192 ; 0x2000 - 2716c: 6153 str r3, [r2, #20] + 27254: f504 5300 add.w r3, r4, #8192 ; 0x2000 + 27258: 6153 str r3, [r2, #20] t->qtd.buffer[3] = addr + 0x3000; - 2716e: f504 5340 add.w r3, r4, #12288 ; 0x3000 + 2725a: f504 5340 add.w r3, r4, #12288 ; 0x3000 t->qtd.buffer[4] = addr + 0x4000; - 27172: f504 4480 add.w r4, r4, #16384 ; 0x4000 + 2725e: f504 4480 add.w r4, r4, #16384 ; 0x4000 t->qtd.buffer[3] = addr + 0x3000; - 27176: 6193 str r3, [r2, #24] + 27262: 6193 str r3, [r2, #24] t->qtd.buffer[4] = addr + 0x4000; - 27178: 61d4 str r4, [r2, #28] + 27264: 61d4 str r4, [r2, #28] bool return_value = queue_Transfer(pipe, transfer); - 2717a: f7ff fe7f bl 26e7c + 27266: f7ff fe7f bl 26f68 if (irq_was_enabled) NVIC_ENABLE_IRQ(IRQ_USBHS); - 2717e: f1b8 0f00 cmp.w r8, #0 - 27182: d005 beq.n 27190 - 27184: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 - 27188: f44f 3280 mov.w r2, #65536 ; 0x10000 - 2718c: f8c3 210c str.w r2, [r3, #268] ; 0x10c + 2726a: f1b8 0f00 cmp.w r8, #0 + 2726e: d005 beq.n 2727c + 27270: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 27274: f44f 3280 mov.w r2, #65536 ; 0x10000 + 27278: f8c3 210c str.w r2, [r3, #268] ; 0x10c } - 27190: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2727c: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} next = (Transfer_t *)transfer->qtd.next; - 27194: 462c mov r4, r5 - 27196: 682d ldr r5, [r5, #0] + 27280: 462c mov r4, r5 + 27282: 682d ldr r5, [r5, #0] free_Transfer(transfer); - 27198: 4620 mov r0, r4 - 2719a: f001 f805 bl 281a8 + 27284: 4620 mov r0, r4 + 27286: f001 f805 bl 28294 if (transfer == data) break; - 2719e: 4554 cmp r4, sl - 271a0: d1f8 bne.n 27194 + 2728a: 4554 cmp r4, sl + 2728c: d1f8 bne.n 27280 if (irq_was_enabled) NVIC_ENABLE_IRQ(IRQ_USBHS); - 271a2: f1b8 0f00 cmp.w r8, #0 - 271a6: d007 beq.n 271b8 - 271a8: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 - 271ac: f44f 3280 mov.w r2, #65536 ; 0x10000 + 2728e: f1b8 0f00 cmp.w r8, #0 + 27292: d007 beq.n 272a4 + 27294: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 27298: f44f 3280 mov.w r2, #65536 ; 0x10000 return false; - 271b0: 2000 movs r0, #0 + 2729c: 2000 movs r0, #0 if (irq_was_enabled) NVIC_ENABLE_IRQ(IRQ_USBHS); - 271b2: f8c3 210c str.w r2, [r3, #268] ; 0x10c - 271b6: e7eb b.n 27190 + 2729e: f8c3 210c str.w r2, [r3, #268] ; 0x10c + 272a2: e7eb b.n 2727c return false; - 271b8: 2000 movs r0, #0 + 272a4: 2000 movs r0, #0 } - 271ba: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 272a6: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} if (irq_was_enabled) NVIC_ENABLE_IRQ(IRQ_USBHS); - 271be: f1b8 0f00 cmp.w r8, #0 - 271c2: d0f9 beq.n 271b8 - 271c4: f8c4 a10c str.w sl, [r4, #268] ; 0x10c - 271c8: e7e2 b.n 27190 - 271ca: bf00 nop - 271cc: 40000080 .word 0x40000080 - 271d0: fffff000 .word 0xfffff000 - -000271d4 : + 272aa: f1b8 0f00 cmp.w r8, #0 + 272ae: d0f9 beq.n 272a4 + 272b0: f8c4 a10c str.w sl, [r4, #268] ; 0x10c + 272b4: e7e2 b.n 2727c + 272b6: bf00 nop + 272b8: 40000080 .word 0x40000080 + 272bc: fffff000 .word 0xfffff000 + +000272c0 : { - 271d4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 272c0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} Transfer_t *p = async_followup_first; - 271d8: 4d53 ldr r5, [pc, #332] ; (27328 ) + 272c4: 4d53 ldr r5, [pc, #332] ; (27414 ) { - 271da: b083 sub sp, #12 + 272c6: b083 sub sp, #12 Transfer_t *p = async_followup_first; - 271dc: 682f ldr r7, [r5, #0] + 272c8: 682f ldr r7, [r5, #0] while (p) { - 271de: b137 cbz r7, 271ee + 272ca: b137 cbz r7, 272da haltedpipe->qh.current = 0; - 271e0: 2600 movs r6, #0 + 272cc: 2600 movs r6, #0 if (!(transfer->qtd.token & 0x80)) { - 271e2: 68bb ldr r3, [r7, #8] - 271e4: 061a lsls r2, r3, #24 - 271e6: d505 bpl.n 271f4 + 272ce: 68bb ldr r3, [r7, #8] + 272d0: 061a lsls r2, r3, #24 + 272d2: d505 bpl.n 272e0 p = p->next_followup; - 271e8: 6a3f ldr r7, [r7, #32] + 272d4: 6a3f ldr r7, [r7, #32] while (p) { - 271ea: 2f00 cmp r7, #0 - 271ec: d1f9 bne.n 271e2 + 272d6: 2f00 cmp r7, #0 + 272d8: d1f9 bne.n 272ce } - 271ee: b003 add sp, #12 - 271f0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 272da: b003 add sp, #12 + 272dc: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if (transfer->qtd.token & 0x8000) { - 271f4: 68bb ldr r3, [r7, #8] - 271f6: 041b lsls r3, r3, #16 - 271f8: d504 bpl.n 27204 + 272e0: 68bb ldr r3, [r7, #8] + 272e2: 041b lsls r3, r3, #16 + 272e4: d504 bpl.n 272f0 if (transfer->pipe->callback_function) { - 271fa: 6abb ldr r3, [r7, #40] ; 0x28 - 271fc: 6bdb ldr r3, [r3, #60] ; 0x3c - 271fe: b10b cbz r3, 27204 + 272e6: 6abb ldr r3, [r7, #40] ; 0x28 + 272e8: 6bdb ldr r3, [r3, #60] ; 0x3c + 272ea: b10b cbz r3, 272f0 (*(transfer->pipe->callback_function))(transfer); - 27200: 4638 mov r0, r7 - 27202: 4798 blx r3 + 272ec: 4638 mov r0, r7 + 272ee: 4798 blx r3 Transfer_t *next = p->next_followup; - 27204: e9d7 2308 ldrd r2, r3, [r7, #32] + 272f0: e9d7 2308 ldrd r2, r3, [r7, #32] if (prev) { - 27208: b163 cbz r3, 27224 + 272f4: b163 cbz r3, 27310 prev->next_followup = next; - 2720a: 621a str r2, [r3, #32] + 272f6: 621a str r2, [r3, #32] if (next) { - 2720c: b16a cbz r2, 2722a + 272f8: b16a cbz r2, 27316 if (p->qtd.token & 0x40) { - 2720e: 68b9 ldr r1, [r7, #8] + 272fa: 68b9 ldr r1, [r7, #8] next->prev_followup = prev; - 27210: 6253 str r3, [r2, #36] ; 0x24 + 272fc: 6253 str r3, [r2, #36] ; 0x24 if (p->qtd.token & 0x40) { - 27212: 064c lsls r4, r1, #25 - 27214: d445 bmi.n 272a2 + 272fe: 064c lsls r4, r1, #25 + 27300: d445 bmi.n 2738e free_Transfer(p); - 27216: 4638 mov r0, r7 + 27302: 4638 mov r0, r7 Transfer_t *next = p->next_followup; - 27218: 4617 mov r7, r2 + 27304: 4617 mov r7, r2 free_Transfer(p); - 2721a: f000 ffc5 bl 281a8 + 27306: f000 ffc5 bl 28294 while (p) { - 2721e: 2f00 cmp r7, #0 - 27220: d1df bne.n 271e2 - 27222: e7e4 b.n 271ee + 2730a: 2f00 cmp r7, #0 + 2730c: d1df bne.n 272ce + 2730e: e7e4 b.n 272da async_followup_first = next; - 27224: 602a str r2, [r5, #0] + 27310: 602a str r2, [r5, #0] if (next) { - 27226: 2a00 cmp r2, #0 - 27228: d1f1 bne.n 2720e + 27312: 2a00 cmp r2, #0 + 27314: d1f1 bne.n 272fa async_followup_last = prev; - 2722a: 4940 ldr r1, [pc, #256] ; (2732c ) - 2722c: 600b str r3, [r1, #0] + 27316: 4940 ldr r1, [pc, #256] ; (27418 ) + 27318: 600b str r3, [r1, #0] if (p->qtd.token & 0x40) { - 2722e: 68bb ldr r3, [r7, #8] - 27230: 0658 lsls r0, r3, #25 - 27232: d5f0 bpl.n 27216 + 2731a: 68bb ldr r3, [r7, #8] + 2731c: 0658 lsls r0, r3, #25 + 2731e: d5f0 bpl.n 27302 Pipe_t *haltedpipe = p->pipe; - 27234: 6abc ldr r4, [r7, #40] ; 0x28 + 27320: 6abc ldr r4, [r7, #40] ; 0x28 free_Transfer(p); - 27236: 4638 mov r0, r7 - 27238: 9201 str r2, [sp, #4] - 2723a: f000 ffb5 bl 281a8 + 27322: 4638 mov r0, r7 + 27324: 9201 str r2, [sp, #4] + 27326: f000 ffb5 bl 28294 p = (Transfer_t *)(haltedpipe->qh.next & ~0x1F); - 2723e: 6923 ldr r3, [r4, #16] + 2732a: 6923 ldr r3, [r4, #16] while (p && ((p->qtd.token & 0x40) == 0)) { - 27240: 9a01 ldr r2, [sp, #4] - 27242: f033 031f bics.w r3, r3, #31 - 27246: d0d2 beq.n 271ee + 2732c: 9a01 ldr r2, [sp, #4] + 2732e: f033 031f bics.w r3, r3, #31 + 27332: d0d2 beq.n 272da Transfer_t *next = p->next_followup; - 27248: 4617 mov r7, r2 + 27334: 4617 mov r7, r2 Transfer_t *first = NULL; - 2724a: 4693 mov fp, r2 - 2724c: e005 b.n 2725a + 27336: 4693 mov fp, r2 + 27338: e005 b.n 27346 print(", token=", (uint32_t)p->qtd.token, HEX); - 2724e: 689a ldr r2, [r3, #8] + 2733a: 689a ldr r2, [r3, #8] println(", next=", (uint32_t)p->qtd.next, HEX); - 27250: 681a ldr r2, [r3, #0] + 2733c: 681a ldr r2, [r3, #0] p = (Transfer_t *)(p->qtd.next & ~0x1F); - 27252: 681b ldr r3, [r3, #0] + 2733e: 681b ldr r3, [r3, #0] while (p && ((p->qtd.token & 0x40) == 0)) { - 27254: f033 031f bics.w r3, r3, #31 - 27258: d005 beq.n 27266 - 2725a: 689a ldr r2, [r3, #8] - 2725c: 0651 lsls r1, r2, #25 - 2725e: d5f6 bpl.n 2724e + 27340: f033 031f bics.w r3, r3, #31 + 27344: d005 beq.n 27352 + 27346: 689a ldr r2, [r3, #8] + 27348: 0651 lsls r1, r2, #25 + 2734a: d5f6 bpl.n 2733a haltedpipe->qh.next = (uint32_t)p; - 27260: 6123 str r3, [r4, #16] + 2734c: 6123 str r3, [r4, #16] haltedpipe->qh.current = 0; - 27262: 60e6 str r6, [r4, #12] + 2734e: 60e6 str r6, [r4, #12] haltedpipe->qh.token = 0; - 27264: 61a6 str r6, [r4, #24] + 27350: 61a6 str r6, [r4, #24] while (p) { - 27266: f1bb 0f00 cmp.w fp, #0 - 2726a: d0be beq.n 271ea + 27352: f1bb 0f00 cmp.w fp, #0 + 27356: d0be beq.n 272d6 uint32_t token = p->qtd.token; - 2726c: f8db 3008 ldr.w r3, [fp, #8] + 27358: f8db 3008 ldr.w r3, [fp, #8] if (token & 0x8000 && haltedpipe->callback_function) { - 27270: 041a lsls r2, r3, #16 - 27272: d50a bpl.n 2728a - 27274: 6be2 ldr r2, [r4, #60] ; 0x3c + 2735c: 041a lsls r2, r3, #16 + 2735e: d50a bpl.n 27376 + 27360: 6be2 ldr r2, [r4, #60] ; 0x3c p->qtd.token = token | 0x40; - 27276: f043 0340 orr.w r3, r3, #64 ; 0x40 + 27362: f043 0340 orr.w r3, r3, #64 ; 0x40 (*(p->pipe->callback_function))(p); - 2727a: 4658 mov r0, fp + 27366: 4658 mov r0, fp if (token & 0x8000 && haltedpipe->callback_function) { - 2727c: b12a cbz r2, 2728a + 27368: b12a cbz r2, 27376 (*(p->pipe->callback_function))(p); - 2727e: f8db 2028 ldr.w r2, [fp, #40] ; 0x28 + 2736a: f8db 2028 ldr.w r2, [fp, #40] ; 0x28 p->qtd.token = token | 0x40; - 27282: f8cb 3008 str.w r3, [fp, #8] + 2736e: f8cb 3008 str.w r3, [fp, #8] (*(p->pipe->callback_function))(p); - 27286: 6bd3 ldr r3, [r2, #60] ; 0x3c - 27288: 4798 blx r3 + 27372: 6bd3 ldr r3, [r2, #60] ; 0x3c + 27374: 4798 blx r3 Transfer_t *next2 = p->next_followup; - 2728a: f8db a020 ldr.w sl, [fp, #32] + 27376: f8db a020 ldr.w sl, [fp, #32] free_Transfer(p); - 2728e: 4658 mov r0, fp - 27290: f000 ff8a bl 281a8 + 2737a: 4658 mov r0, fp + 2737c: f000 ff8a bl 28294 while (p) { - 27294: 46d3 mov fp, sl - 27296: f1ba 0f00 cmp.w sl, #0 - 2729a: d1e7 bne.n 2726c + 27380: 46d3 mov fp, sl + 27382: f1ba 0f00 cmp.w sl, #0 + 27386: d1e7 bne.n 27358 while (p) { - 2729c: 2f00 cmp r7, #0 - 2729e: d1a0 bne.n 271e2 - 272a0: e7a5 b.n 271ee + 27388: 2f00 cmp r7, #0 + 2738a: d1a0 bne.n 272ce + 2738c: e7a5 b.n 272da free_Transfer(p); - 272a2: 4638 mov r0, r7 + 2738e: 4638 mov r0, r7 Pipe_t *haltedpipe = p->pipe; - 272a4: 6abc ldr r4, [r7, #40] ; 0x28 - 272a6: 9201 str r2, [sp, #4] + 27390: 6abc ldr r4, [r7, #40] ; 0x28 + 27392: 9201 str r2, [sp, #4] free_Transfer(p); - 272a8: f000 ff7e bl 281a8 - 272ac: 2000 movs r0, #0 - 272ae: 9a01 ldr r2, [sp, #4] - 272b0: 4684 mov ip, r0 - 272b2: 4617 mov r7, r2 - 272b4: 4683 mov fp, r0 + 27394: f000 ff7e bl 28294 + 27398: 2000 movs r0, #0 + 2739a: 9a01 ldr r2, [sp, #4] + 2739c: 4684 mov ip, r0 + 2739e: 4617 mov r7, r2 + 273a0: 4683 mov fp, r0 Transfer_t *next2 = p->next_followup; - 272b6: 4611 mov r1, r2 - 272b8: 6a12 ldr r2, [r2, #32] + 273a2: 4611 mov r1, r2 + 273a4: 6a12 ldr r2, [r2, #32] if (p->pipe == haltedpipe) { - 272ba: 6a8b ldr r3, [r1, #40] ; 0x28 - 272bc: 42a3 cmp r3, r4 - 272be: d00a beq.n 272d6 + 273a6: 6a8b ldr r3, [r1, #40] ; 0x28 + 273a8: 42a3 cmp r3, r4 + 273aa: d00a beq.n 273c2 while (p) { - 272c0: 2a00 cmp r2, #0 - 272c2: d1f8 bne.n 272b6 - 272c4: b9c0 cbnz r0, 272f8 - 272c6: f1bc 0f00 cmp.w ip, #0 - 272ca: d125 bne.n 27318 + 273ac: 2a00 cmp r2, #0 + 273ae: d1f8 bne.n 273a2 + 273b0: b9c0 cbnz r0, 273e4 + 273b2: f1bc 0f00 cmp.w ip, #0 + 273b6: d125 bne.n 27404 p = (Transfer_t *)(haltedpipe->qh.next & ~0x1F); - 272cc: 6923 ldr r3, [r4, #16] + 273b8: 6923 ldr r3, [r4, #16] while (p && ((p->qtd.token & 0x40) == 0)) { - 272ce: f033 031f bics.w r3, r3, #31 - 272d2: d1c2 bne.n 2725a - 272d4: e7c7 b.n 27266 + 273ba: f033 031f bics.w r3, r3, #31 + 273be: d1c2 bne.n 27346 + 273c0: e7c7 b.n 27352 Transfer_t *prev = transfer->prev_followup; - 272d6: 6a4b ldr r3, [r1, #36] ; 0x24 + 273c2: 6a4b ldr r3, [r1, #36] ; 0x24 if (prev) { - 272d8: b1d3 cbz r3, 27310 + 273c4: b1d3 cbz r3, 273fc prev->next_followup = next; - 272da: 621a str r2, [r3, #32] + 273c6: 621a str r2, [r3, #32] if (next) { - 272dc: b1aa cbz r2, 2730a + 273c8: b1aa cbz r2, 273f6 next->prev_followup = prev; - 272de: 6253 str r3, [r2, #36] ; 0x24 + 273ca: 6253 str r3, [r2, #36] ; 0x24 if (first == NULL) { - 272e0: f1bb 0f00 cmp.w fp, #0 - 272e4: d00f beq.n 27306 + 273cc: f1bb 0f00 cmp.w fp, #0 + 273d0: d00f beq.n 273f2 last->next_followup = p; - 272e6: f8cb 1020 str.w r1, [fp, #32] + 273d2: f8cb 1020 str.w r1, [fp, #32] Transfer_t *next2 = p->next_followup; - 272ea: 428f cmp r7, r1 - 272ec: bf08 it eq - 272ee: 4617 moveq r7, r2 + 273d6: 428f cmp r7, r1 + 273d8: bf08 it eq + 273da: 4617 moveq r7, r2 p->next_followup = NULL; - 272f0: 620e str r6, [r1, #32] + 273dc: 620e str r6, [r1, #32] while (p) { - 272f2: 2a00 cmp r2, #0 - 272f4: d1df bne.n 272b6 - 272f6: e7e5 b.n 272c4 - 272f8: 4b0c ldr r3, [pc, #48] ; (2732c ) - 272fa: f8c3 8000 str.w r8, [r3] - 272fe: f1bc 0f00 cmp.w ip, #0 - 27302: d0e3 beq.n 272cc - 27304: e008 b.n 27318 - 27306: 468b mov fp, r1 - 27308: e7ef b.n 272ea + 273de: 2a00 cmp r2, #0 + 273e0: d1df bne.n 273a2 + 273e2: e7e5 b.n 273b0 + 273e4: 4b0c ldr r3, [pc, #48] ; (27418 ) + 273e6: f8c3 8000 str.w r8, [r3] + 273ea: f1bc 0f00 cmp.w ip, #0 + 273ee: d0e3 beq.n 273b8 + 273f0: e008 b.n 27404 + 273f2: 468b mov fp, r1 + 273f4: e7ef b.n 273d6 Transfer_t *prev = transfer->prev_followup; - 2730a: 4698 mov r8, r3 - 2730c: 2001 movs r0, #1 - 2730e: e7e7 b.n 272e0 + 273f6: 4698 mov r8, r3 + 273f8: 2001 movs r0, #1 + 273fa: e7e7 b.n 273cc Transfer_t *next2 = p->next_followup; - 27310: 4691 mov r9, r2 - 27312: f04f 0c01 mov.w ip, #1 - 27316: e7e1 b.n 272dc + 273fc: 4691 mov r9, r2 + 273fe: f04f 0c01 mov.w ip, #1 + 27402: e7e1 b.n 273c8 p = (Transfer_t *)(haltedpipe->qh.next & ~0x1F); - 27318: 6923 ldr r3, [r4, #16] - 2731a: f8c5 9000 str.w r9, [r5] + 27404: 6923 ldr r3, [r4, #16] + 27406: f8c5 9000 str.w r9, [r5] while (p && ((p->qtd.token & 0x40) == 0)) { - 2731e: f033 031f bics.w r3, r3, #31 - 27322: d19a bne.n 2725a - 27324: e79f b.n 27266 - 27326: bf00 nop - 27328: 2000b6e0 .word 0x2000b6e0 - 2732c: 2000b6dc .word 0x2000b6dc - -00027330 : + 2740a: f033 031f bics.w r3, r3, #31 + 2740e: d19a bne.n 27346 + 27410: e79f b.n 27352 + 27412: bf00 nop + 27414: 2000b700 .word 0x2000b700 + 27418: 2000b6fc .word 0x2000b6fc + +0002741c : uint32_t stat = USBHS_USBSTS; - 27330: 4b6c ldr r3, [pc, #432] ; (274e4 ) + 2741c: 4b6c ldr r3, [pc, #432] ; (275d0 ) { - 27332: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 2741e: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} uint32_t stat = USBHS_USBSTS; - 27336: f8d3 5144 ldr.w r5, [r3, #324] ; 0x144 + 27422: f8d3 5144 ldr.w r5, [r3, #324] ; 0x144 if (stat & USBHS_USBSTS_UAI) { // completed qTD(s) from the async schedule - 2733a: 0368 lsls r0, r5, #13 + 27426: 0368 lsls r0, r5, #13 USBHS_USBSTS = stat; // clear pending interrupts - 2733c: f8c3 5144 str.w r5, [r3, #324] ; 0x144 + 27428: f8c3 5144 str.w r5, [r3, #324] ; 0x144 if (stat & USBHS_USBSTS_UAI) { // completed qTD(s) from the async schedule - 27340: d509 bpl.n 27356 + 2742c: d509 bpl.n 27442 Transfer_t *p = async_followup_first; - 27342: 4e69 ldr r6, [pc, #420] ; (274e8 ) - 27344: 6834 ldr r4, [r6, #0] + 2742e: 4e69 ldr r6, [pc, #420] ; (275d4 ) + 27430: 6834 ldr r4, [r6, #0] while (p) { - 27346: b134 cbz r4, 27356 + 27432: b134 cbz r4, 27442 async_followup_last = prev; - 27348: 4f68 ldr r7, [pc, #416] ; (274ec ) + 27434: 4f68 ldr r7, [pc, #416] ; (275d8 ) if (!(transfer->qtd.token & 0x80)) { - 2734a: 68a3 ldr r3, [r4, #8] - 2734c: 061a lsls r2, r3, #24 - 2734e: d559 bpl.n 27404 + 27436: 68a3 ldr r3, [r4, #8] + 27438: 061a lsls r2, r3, #24 + 2743a: d559 bpl.n 274f0 p = p->next_followup; - 27350: 6a24 ldr r4, [r4, #32] + 2743c: 6a24 ldr r4, [r4, #32] while (p) { - 27352: 2c00 cmp r4, #0 - 27354: d1f9 bne.n 2734a + 2743e: 2c00 cmp r4, #0 + 27440: d1f9 bne.n 27436 if (stat & USBHS_USBSTS_UPI) { // completed qTD(s) from the periodic schedule - 27356: 0329 lsls r1, r5, #12 - 27358: d509 bpl.n 2736e + 27442: 0329 lsls r1, r5, #12 + 27444: d509 bpl.n 2745a Transfer_t *p = periodic_followup_first; - 2735a: 4e65 ldr r6, [pc, #404] ; (274f0 ) - 2735c: 6834 ldr r4, [r6, #0] + 27446: 4e65 ldr r6, [pc, #404] ; (275dc ) + 27448: 6834 ldr r4, [r6, #0] while (p) { - 2735e: b134 cbz r4, 2736e + 2744a: b134 cbz r4, 2745a periodic_followup_first = next; } if (next) { next->prev_followup = prev; } else { periodic_followup_last = prev; - 27360: 4f64 ldr r7, [pc, #400] ; (274f4 ) + 2744c: 4f64 ldr r7, [pc, #400] ; (275e0 ) if (!(transfer->qtd.token & 0x80)) { - 27362: 68a3 ldr r3, [r4, #8] - 27364: 0619 lsls r1, r3, #24 - 27366: d562 bpl.n 2742e + 2744e: 68a3 ldr r3, [r4, #8] + 27450: 0619 lsls r1, r3, #24 + 27452: d562 bpl.n 2751a p = p->next_followup; - 27368: 6a24 ldr r4, [r4, #32] + 27454: 6a24 ldr r4, [r4, #32] while (p) { - 2736a: 2c00 cmp r4, #0 - 2736c: d1f9 bne.n 27362 + 27456: 2c00 cmp r4, #0 + 27458: d1f9 bne.n 2744e if (stat & USBHS_USBSTS_UEI) { - 2736e: 07a8 lsls r0, r5, #30 - 27370: d47b bmi.n 2746a + 2745a: 07a8 lsls r0, r5, #30 + 2745c: d47b bmi.n 27556 if (stat & USBHS_USBSTS_PCI) { // port change detected - 27372: 076b lsls r3, r5, #29 - 27374: d50e bpl.n 27394 + 2745e: 076b lsls r3, r5, #29 + 27460: d50e bpl.n 27480 const uint32_t portstat = USBHS_PORTSC1; - 27376: 4b5b ldr r3, [pc, #364] ; (274e4 ) - 27378: f8d3 4184 ldr.w r4, [r3, #388] ; 0x184 + 27462: 4b5b ldr r3, [pc, #364] ; (275d0 ) + 27464: f8d3 4184 ldr.w r4, [r3, #388] ; 0x184 USBHS_PORTSC1 = portstat | (USBHS_PORTSC_OCC|USBHS_PORTSC_PEC|USBHS_PORTSC_CSC); - 2737c: f044 022a orr.w r2, r4, #42 ; 0x2a + 27468: f044 022a orr.w r2, r4, #42 ; 0x2a if (portstat & USBHS_PORTSC_CSC) { - 27380: 07a7 lsls r7, r4, #30 + 2746c: 07a7 lsls r7, r4, #30 USBHS_PORTSC1 = portstat | (USBHS_PORTSC_OCC|USBHS_PORTSC_PEC|USBHS_PORTSC_CSC); - 27382: f8c3 2184 str.w r2, [r3, #388] ; 0x184 + 2746e: f8c3 2184 str.w r2, [r3, #388] ; 0x184 if (portstat & USBHS_PORTSC_CSC) { - 27386: d42a bmi.n 273de + 27472: d42a bmi.n 274ca if (portstat & USBHS_PORTSC_PEC) { - 27388: 0726 lsls r6, r4, #28 - 2738a: d403 bmi.n 27394 + 27474: 0726 lsls r6, r4, #28 + 27476: d403 bmi.n 27480 } else if (port_state == PORT_STATE_RESET && portstat & USBHS_PORTSC_PE) { - 2738c: 4b5a ldr r3, [pc, #360] ; (274f8 ) - 2738e: 781a ldrb r2, [r3, #0] - 27390: 2a02 cmp r2, #2 - 27392: d06d beq.n 27470 + 27478: 4b5a ldr r3, [pc, #360] ; (275e4 ) + 2747a: 781a ldrb r2, [r3, #0] + 2747c: 2a02 cmp r2, #2 + 2747e: d06d beq.n 2755c if (stat & USBHS_USBSTS_TI0) { // timer 0 - used for built-in port events - 27394: f005 7380 and.w r3, r5, #16777216 ; 0x1000000 - 27398: b133 cbz r3, 273a8 + 27480: f005 7380 and.w r3, r5, #16777216 ; 0x1000000 + 27484: b133 cbz r3, 27494 if (port_state == PORT_STATE_DEBOUNCE) { - 2739a: 4b57 ldr r3, [pc, #348] ; (274f8 ) - 2739c: 781a ldrb r2, [r3, #0] - 2739e: 2a01 cmp r2, #1 - 273a0: f000 8096 beq.w 274d0 + 27486: 4b57 ldr r3, [pc, #348] ; (275e4 ) + 27488: 781a ldrb r2, [r3, #0] + 2748a: 2a01 cmp r2, #1 + 2748c: f000 8096 beq.w 275bc } else if (port_state == PORT_STATE_RECOVERY) { - 273a4: 2a03 cmp r2, #3 - 273a6: d078 beq.n 2749a + 27490: 2a03 cmp r2, #3 + 27492: d078 beq.n 27586 if (stat & USBHS_USBSTS_TI1) { // timer 1 - used for USBDriverTimer - 273a8: 01a9 lsls r1, r5, #6 - 273aa: d516 bpl.n 273da + 27494: 01a9 lsls r1, r5, #6 + 27496: d516 bpl.n 274c6 USBDriverTimer *timer = active_timers; - 273ac: 4a53 ldr r2, [pc, #332] ; (274fc ) - 273ae: 6811 ldr r1, [r2, #0] + 27498: 4a53 ldr r2, [pc, #332] ; (275e8 ) + 2749a: 6811 ldr r1, [r2, #0] if (timer) { - 273b0: b199 cbz r1, 273da + 2749c: b199 cbz r1, 274c6 USBDriverTimer *next = timer->next; - 273b2: 694b ldr r3, [r1, #20] + 2749e: 694b ldr r3, [r1, #20] active_timers = next; - 273b4: 6013 str r3, [r2, #0] + 274a0: 6013 str r3, [r2, #0] if (next) { - 273b6: b153 cbz r3, 273ce + 274a2: b153 cbz r3, 274ba USBHS_GPTIMER1LD = next->usec - 1; - 273b8: 691a ldr r2, [r3, #16] + 274a4: 691a ldr r2, [r3, #16] next->prev = NULL; - 273ba: 2400 movs r4, #0 + 274a6: 2400 movs r4, #0 USBHS_GPTIMER1LD = next->usec - 1; - 273bc: 4849 ldr r0, [pc, #292] ; (274e4 ) + 274a8: 4849 ldr r0, [pc, #292] ; (275d0 ) next->prev = NULL; - 273be: 619c str r4, [r3, #24] + 274aa: 619c str r4, [r3, #24] USBHS_GPTIMER1LD = next->usec - 1; - 273c0: 3a01 subs r2, #1 + 274ac: 3a01 subs r2, #1 USBHS_GPTIMER1CTL = USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; - 273c2: f04f 4340 mov.w r3, #3221225472 ; 0xc0000000 + 274ae: f04f 4340 mov.w r3, #3221225472 ; 0xc0000000 USBHS_GPTIMER1LD = next->usec - 1; - 273c6: f8c0 2088 str.w r2, [r0, #136] ; 0x88 + 274b2: f8c0 2088 str.w r2, [r0, #136] ; 0x88 USBHS_GPTIMER1CTL = USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; - 273ca: f8c0 308c str.w r3, [r0, #140] ; 0x8c + 274b6: f8c0 308c str.w r3, [r0, #140] ; 0x8c timer->driver->timer_event(timer); // call driver's timer() - 273ce: 68c8 ldr r0, [r1, #12] - 273d0: 4a4b ldr r2, [pc, #300] ; (27500 ) - 273d2: 6803 ldr r3, [r0, #0] - 273d4: 689b ldr r3, [r3, #8] - 273d6: 4293 cmp r3, r2 - 273d8: d177 bne.n 274ca -} - 273da: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 274ba: 68c8 ldr r0, [r1, #12] + 274bc: 4a4b ldr r2, [pc, #300] ; (275ec ) + 274be: 6803 ldr r3, [r0, #0] + 274c0: 689b ldr r3, [r3, #8] + 274c2: 4293 cmp r3, r2 + 274c4: d177 bne.n 275b6 +} + 274c6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if (portstat & USBHS_PORTSC_CCS) { - 273de: f014 0601 ands.w r6, r4, #1 + 274ca: f014 0601 ands.w r6, r4, #1 || port_state == PORT_STATE_DEBOUNCE) { - 273e2: 4a45 ldr r2, [pc, #276] ; (274f8 ) + 274ce: 4a45 ldr r2, [pc, #276] ; (275e4 ) if (portstat & USBHS_PORTSC_CCS) { - 273e4: d067 beq.n 274b6 + 274d0: d067 beq.n 275a2 if (port_state == PORT_STATE_DISCONNECTED - 273e6: 7811 ldrb r1, [r2, #0] - 273e8: 2901 cmp r1, #1 - 273ea: d8cd bhi.n 27388 + 274d2: 7811 ldrb r1, [r2, #0] + 274d4: 2901 cmp r1, #1 + 274d6: d8cd bhi.n 27474 port_state = PORT_STATE_DEBOUNCE; - 273ec: 2001 movs r0, #1 + 274d8: 2001 movs r0, #1 USBHS_GPTIMER0LD = 100000; // microseconds - 273ee: 4945 ldr r1, [pc, #276] ; (27504 ) + 274da: 4945 ldr r1, [pc, #276] ; (275f0 ) stat &= ~USBHS_USBSTS_TI0; - 273f0: f025 7580 bic.w r5, r5, #16777216 ; 0x1000000 + 274dc: f025 7580 bic.w r5, r5, #16777216 ; 0x1000000 port_state = PORT_STATE_DEBOUNCE; - 273f4: 7010 strb r0, [r2, #0] + 274e0: 7010 strb r0, [r2, #0] USBHS_GPTIMER0CTL = - 273f6: f04f 4240 mov.w r2, #3221225472 ; 0xc0000000 + 274e2: f04f 4240 mov.w r2, #3221225472 ; 0xc0000000 USBHS_GPTIMER0LD = 100000; // microseconds - 273fa: f8c3 1080 str.w r1, [r3, #128] ; 0x80 + 274e6: f8c3 1080 str.w r1, [r3, #128] ; 0x80 USBHS_GPTIMER0CTL = - 273fe: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 274ea: f8c3 2084 str.w r2, [r3, #132] ; 0x84 if (portstat & USBHS_PORTSC_PEC) { - 27402: e7d1 b.n 273a8 + 274ee: e7d1 b.n 27494 if (transfer->qtd.token & 0x8000) { - 27404: 68a3 ldr r3, [r4, #8] - 27406: 041b lsls r3, r3, #16 - 27408: d504 bpl.n 27414 + 274f0: 68a3 ldr r3, [r4, #8] + 274f2: 041b lsls r3, r3, #16 + 274f4: d504 bpl.n 27500 if (transfer->pipe->callback_function) { - 2740a: 6aa3 ldr r3, [r4, #40] ; 0x28 - 2740c: 6bdb ldr r3, [r3, #60] ; 0x3c - 2740e: b10b cbz r3, 27414 + 274f6: 6aa3 ldr r3, [r4, #40] ; 0x28 + 274f8: 6bdb ldr r3, [r3, #60] ; 0x3c + 274fa: b10b cbz r3, 27500 (*(transfer->pipe->callback_function))(transfer); - 27410: 4620 mov r0, r4 - 27412: 4798 blx r3 + 274fc: 4620 mov r0, r4 + 274fe: 4798 blx r3 Transfer_t *next = p->next_followup; - 27414: e9d4 3208 ldrd r3, r2, [r4, #32] + 27500: e9d4 3208 ldrd r3, r2, [r4, #32] if (prev) { - 27418: b32a cbz r2, 27466 + 27504: b32a cbz r2, 27552 prev->next_followup = next; - 2741a: 6213 str r3, [r2, #32] + 27506: 6213 str r3, [r2, #32] if (next) { - 2741c: b30b cbz r3, 27462 + 27508: b30b cbz r3, 2754e next->prev_followup = prev; - 2741e: 625a str r2, [r3, #36] ; 0x24 + 2750a: 625a str r2, [r3, #36] ; 0x24 free_Transfer(p); - 27420: 4620 mov r0, r4 + 2750c: 4620 mov r0, r4 Transfer_t *next = p->next_followup; - 27422: 461c mov r4, r3 + 2750e: 461c mov r4, r3 free_Transfer(p); - 27424: f000 fec0 bl 281a8 + 27510: f000 fec0 bl 28294 while (p) { - 27428: 2c00 cmp r4, #0 - 2742a: d18e bne.n 2734a - 2742c: e793 b.n 27356 + 27514: 2c00 cmp r4, #0 + 27516: d18e bne.n 27436 + 27518: e793 b.n 27442 if (transfer->qtd.token & 0x8000) { - 2742e: 68a3 ldr r3, [r4, #8] - 27430: 041a lsls r2, r3, #16 - 27432: d504 bpl.n 2743e + 2751a: 68a3 ldr r3, [r4, #8] + 2751c: 041a lsls r2, r3, #16 + 2751e: d504 bpl.n 2752a if (transfer->pipe->callback_function) { - 27434: 6aa3 ldr r3, [r4, #40] ; 0x28 - 27436: 6bdb ldr r3, [r3, #60] ; 0x3c - 27438: b10b cbz r3, 2743e + 27520: 6aa3 ldr r3, [r4, #40] ; 0x28 + 27522: 6bdb ldr r3, [r3, #60] ; 0x3c + 27524: b10b cbz r3, 2752a (*(transfer->pipe->callback_function))(transfer); - 2743a: 4620 mov r0, r4 - 2743c: 4798 blx r3 + 27526: 4620 mov r0, r4 + 27528: 4798 blx r3 Transfer_t *next = p->next_followup; - 2743e: e9d4 3208 ldrd r3, r2, [r4, #32] + 2752a: e9d4 3208 ldrd r3, r2, [r4, #32] if (prev) { - 27442: b14a cbz r2, 27458 + 2752e: b14a cbz r2, 27544 prev->next_followup = next; - 27444: 6213 str r3, [r2, #32] + 27530: 6213 str r3, [r2, #32] if (next) { - 27446: b153 cbz r3, 2745e + 27532: b153 cbz r3, 2754a next->prev_followup = prev; - 27448: 625a str r2, [r3, #36] ; 0x24 + 27534: 625a str r2, [r3, #36] ; 0x24 free_Transfer(p); - 2744a: 4620 mov r0, r4 + 27536: 4620 mov r0, r4 Transfer_t *next = p->next_followup; - 2744c: 461c mov r4, r3 + 27538: 461c mov r4, r3 free_Transfer(p); - 2744e: f000 feab bl 281a8 + 2753a: f000 feab bl 28294 while (p) { - 27452: 2c00 cmp r4, #0 - 27454: d185 bne.n 27362 - 27456: e78a b.n 2736e + 2753e: 2c00 cmp r4, #0 + 27540: d185 bne.n 2744e + 27542: e78a b.n 2745a periodic_followup_first = next; - 27458: 6033 str r3, [r6, #0] + 27544: 6033 str r3, [r6, #0] if (next) { - 2745a: 2b00 cmp r3, #0 - 2745c: d1f4 bne.n 27448 + 27546: 2b00 cmp r3, #0 + 27548: d1f4 bne.n 27534 periodic_followup_last = prev; - 2745e: 603a str r2, [r7, #0] - 27460: e7f3 b.n 2744a + 2754a: 603a str r2, [r7, #0] + 2754c: e7f3 b.n 27536 async_followup_last = prev; - 27462: 603a str r2, [r7, #0] - 27464: e7dc b.n 27420 + 2754e: 603a str r2, [r7, #0] + 27550: e7dc b.n 2750c async_followup_first = next; - 27466: 6033 str r3, [r6, #0] - 27468: e7d8 b.n 2741c + 27552: 6033 str r3, [r6, #0] + 27554: e7d8 b.n 27508 followup_Error(); - 2746a: f7ff feb3 bl 271d4 - 2746e: e780 b.n 27372 + 27556: f7ff feb3 bl 272c0 + 2755a: e780 b.n 2745e } else if (port_state == PORT_STATE_RESET && portstat & USBHS_PORTSC_PE) { - 27470: 0764 lsls r4, r4, #29 - 27472: d599 bpl.n 273a8 + 2755c: 0764 lsls r4, r4, #29 + 2755e: d599 bpl.n 27494 port_state = PORT_STATE_RECOVERY; - 27474: 2003 movs r0, #3 + 27560: 2003 movs r0, #3 USBHS_GPTIMER0LD = 10000; // microseconds - 27476: 491b ldr r1, [pc, #108] ; (274e4 ) + 27562: 491b ldr r1, [pc, #108] ; (275d0 ) port_state = PORT_STATE_RECOVERY; - 27478: 7018 strb r0, [r3, #0] + 27564: 7018 strb r0, [r3, #0] USBHS_GPTIMER0LD = 10000; // microseconds - 2747a: f242 7010 movw r0, #10000 ; 0x2710 - 2747e: f8c1 0080 str.w r0, [r1, #128] ; 0x80 + 27566: f242 7010 movw r0, #10000 ; 0x2710 + 2756a: f8c1 0080 str.w r0, [r1, #128] ; 0x80 USBHS_GPTIMER0CTL = USBHS_GPTIMERCTL_RST | USBHS_GPTIMERCTL_RUN; - 27482: f04f 4040 mov.w r0, #3221225472 ; 0xc0000000 - 27486: f8c1 0084 str.w r0, [r1, #132] ; 0x84 + 2756e: f04f 4040 mov.w r0, #3221225472 ; 0xc0000000 + 27572: f8c1 0084 str.w r0, [r1, #132] ; 0x84 if (USBHS_PORTSC1 & USBHS_PORTSC_HSP) { - 2748a: f8d1 1184 ldr.w r1, [r1, #388] ; 0x184 - 2748e: 0588 lsls r0, r1, #22 - 27490: d501 bpl.n 27496 + 27576: f8d1 1184 ldr.w r1, [r1, #388] ; 0x184 + 2757a: 0588 lsls r0, r1, #22 + 2757c: d501 bpl.n 27582 USBPHY_CTRL_SET = USBPHY_CTRL_ENHOSTDISCONDETECT; - 27492: 491d ldr r1, [pc, #116] ; (27508 ) - 27494: 634a str r2, [r1, #52] ; 0x34 + 2757e: 491d ldr r1, [pc, #116] ; (275f4 ) + 27580: 634a str r2, [r1, #52] ; 0x34 if (stat & USBHS_USBSTS_TI0) { // timer 0 - used for built-in port events - 27496: 01ea lsls r2, r5, #7 - 27498: d586 bpl.n 273a8 + 27582: 01ea lsls r2, r5, #7 + 27584: d586 bpl.n 27494 port_state = PORT_STATE_ACTIVE; - 2749a: 2004 movs r0, #4 + 27586: 2004 movs r0, #4 uint32_t speed = (USBHS_PORTSC1 >> 26) & 3; - 2749c: 4911 ldr r1, [pc, #68] ; (274e4 ) + 27588: 4911 ldr r1, [pc, #68] ; (275d0 ) rootdev = new_Device(speed, 0, 0); - 2749e: 2200 movs r2, #0 + 2758a: 2200 movs r2, #0 port_state = PORT_STATE_ACTIVE; - 274a0: 7018 strb r0, [r3, #0] + 2758c: 7018 strb r0, [r3, #0] uint32_t speed = (USBHS_PORTSC1 >> 26) & 3; - 274a2: f8d1 0184 ldr.w r0, [r1, #388] ; 0x184 + 2758e: f8d1 0184 ldr.w r0, [r1, #388] ; 0x184 rootdev = new_Device(speed, 0, 0); - 274a6: 4611 mov r1, r2 - 274a8: f3c0 6081 ubfx r0, r0, #26, #2 - 274ac: f000 fb6e bl 27b8c - 274b0: 4b16 ldr r3, [pc, #88] ; (2750c ) - 274b2: 6018 str r0, [r3, #0] - 274b4: e778 b.n 273a8 + 27592: 4611 mov r1, r2 + 27594: f3c0 6081 ubfx r0, r0, #26, #2 + 27598: f000 fb6e bl 27c78 + 2759c: 4b16 ldr r3, [pc, #88] ; (275f8 ) + 2759e: 6018 str r0, [r3, #0] + 275a0: e778 b.n 27494 port_state = PORT_STATE_DISCONNECTED; - 274b6: 7016 strb r6, [r2, #0] + 275a2: 7016 strb r6, [r2, #0] USBPHY_CTRL_CLR = USBPHY_CTRL_ENHOSTDISCONDETECT; - 274b8: 2202 movs r2, #2 - 274ba: 4b13 ldr r3, [pc, #76] ; (27508 ) + 275a4: 2202 movs r2, #2 + 275a6: 4b13 ldr r3, [pc, #76] ; (275f4 ) disconnect_Device(rootdev); - 274bc: 4f13 ldr r7, [pc, #76] ; (2750c ) + 275a8: 4f13 ldr r7, [pc, #76] ; (275f8 ) USBPHY_CTRL_CLR = USBPHY_CTRL_ENHOSTDISCONDETECT; - 274be: 639a str r2, [r3, #56] ; 0x38 + 275aa: 639a str r2, [r3, #56] ; 0x38 disconnect_Device(rootdev); - 274c0: 6838 ldr r0, [r7, #0] - 274c2: f000 fdcd bl 28060 + 275ac: 6838 ldr r0, [r7, #0] + 275ae: f000 fdcd bl 2814c rootdev = NULL; - 274c6: 603e str r6, [r7, #0] - 274c8: e75e b.n 27388 + 275b2: 603e str r6, [r7, #0] + 275b4: e75e b.n 27474 } - 274ca: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 275b6: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} timer->driver->timer_event(timer); // call driver's timer() - 274ce: 4718 bx r3 + 275ba: 4718 bx r3 USBHS_PORTSC1 |= USBHS_PORTSC_PR; // begin reset sequence - 274d0: 4a04 ldr r2, [pc, #16] ; (274e4 ) + 275bc: 4a04 ldr r2, [pc, #16] ; (275d0 ) port_state = PORT_STATE_RESET; - 274d2: 2102 movs r1, #2 - 274d4: 7019 strb r1, [r3, #0] + 275be: 2102 movs r1, #2 + 275c0: 7019 strb r1, [r3, #0] USBHS_PORTSC1 |= USBHS_PORTSC_PR; // begin reset sequence - 274d6: f8d2 3184 ldr.w r3, [r2, #388] ; 0x184 - 274da: f443 7380 orr.w r3, r3, #256 ; 0x100 - 274de: f8c2 3184 str.w r3, [r2, #388] ; 0x184 + 275c2: f8d2 3184 ldr.w r3, [r2, #388] ; 0x184 + 275c6: f443 7380 orr.w r3, r3, #256 ; 0x100 + 275ca: f8c2 3184 str.w r3, [r2, #388] ; 0x184 static void println_(const char *s) {} - 274e2: e761 b.n 273a8 - 274e4: 402e0200 .word 0x402e0200 - 274e8: 2000b6e0 .word 0x2000b6e0 - 274ec: 2000b6dc .word 0x2000b6dc - 274f0: 2000b6e8 .word 0x2000b6e8 - 274f4: 2000b6e4 .word 0x2000b6e4 - 274f8: 2000bc7a .word 0x2000bc7a - 274fc: 2000b5a0 .word 0x2000b5a0 - 27500: 00026bdd .word 0x00026bdd - 27504: 000186a0 .word 0x000186a0 - 27508: 400da000 .word 0x400da000 - 2750c: 2000b6f0 .word 0x2000b6f0 - -00027510 : + 275ce: e761 b.n 27494 + 275d0: 402e0200 .word 0x402e0200 + 275d4: 2000b700 .word 0x2000b700 + 275d8: 2000b6fc .word 0x2000b6fc + 275dc: 2000b708 .word 0x2000b708 + 275e0: 2000b704 .word 0x2000b704 + 275e4: 2000bc9a .word 0x2000bc9a + 275e8: 2000b5c0 .word 0x2000b5c0 + 275ec: 00026cc9 .word 0x00026cc9 + 275f0: 000186a0 .word 0x000186a0 + 275f4: 400da000 .word 0x400da000 + 275f8: 2000b710 .word 0x2000b710 + +000275fc : // bool USBHost::allocate_interrupt_pipe_bandwidth(Pipe_t *pipe, uint32_t maxlen, uint32_t interval) { println("allocate_interrupt_pipe_bandwidth"); if (interval == 0) interval = 1; maxlen = (maxlen * 76459) >> 16; // worst case bit stuffing - 27510: 4b8d ldr r3, [pc, #564] ; (27748 ) - 27512: 2a01 cmp r2, #1 - 27514: fb03 f101 mul.w r1, r3, r1 + 275fc: 4b8d ldr r3, [pc, #564] ; (27834 ) + 275fe: 2a01 cmp r2, #1 + 27600: fb03 f101 mul.w r1, r3, r1 if (pipe->device->speed == 2) { - 27518: 6b03 ldr r3, [r0, #48] ; 0x30 + 27604: 6b03 ldr r3, [r0, #48] ; 0x30 { - 2751a: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 2751e: b085 sub sp, #20 + 27606: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2760a: b085 sub sp, #20 if (pipe->device->speed == 2) { - 27520: 7d1b ldrb r3, [r3, #20] + 2760c: 7d1b ldrb r3, [r3, #20] maxlen = (maxlen * 76459) >> 16; // worst case bit stuffing - 27522: ea4f 4111 mov.w r1, r1, lsr #16 + 2760e: ea4f 4111 mov.w r1, r1, lsr #16 { - 27526: 9002 str r0, [sp, #8] - 27528: 4610 mov r0, r2 - 2752a: bf38 it cc - 2752c: 2001 movcc r0, #1 + 27612: 9002 str r0, [sp, #8] + 27614: 4610 mov r0, r2 + 27616: bf38 it cc + 27618: 2001 movcc r0, #1 if (pipe->device->speed == 2) { - 2752e: 2b02 cmp r3, #2 - 27530: f000 8094 beq.w 2765c - 27534: 2305 movs r3, #5 + 2761a: 2b02 cmp r3, #2 + 2761c: f000 8094 beq.w 27748 + 27620: 2305 movs r3, #5 for (uint32_t pow2num=1; pow2num < maxnum; pow2num <<= 1) { - 27536: f04f 0a01 mov.w sl, #1 + 27622: f04f 0a01 mov.w sl, #1 if (n <= (pow2num | (pow2num >> 1))) return pow2num; - 2753a: ea4a 025a orr.w r2, sl, sl, lsr #1 - 2753e: 4282 cmp r2, r0 - 27540: f080 80e4 bcs.w 2770c + 27626: ea4a 025a orr.w r2, sl, sl, lsr #1 + 2762a: 4282 cmp r2, r0 + 2762c: f080 80e4 bcs.w 277f8 for (uint32_t pow2num=1; pow2num < maxnum; pow2num <<= 1) { - 27544: 3b01 subs r3, #1 - 27546: ea4f 0a4a mov.w sl, sl, lsl #1 - 2754a: d1f6 bne.n 2753a - 2754c: f04f 0a20 mov.w sl, #32 + 27630: 3b01 subs r3, #1 + 27632: ea4f 0a4a mov.w sl, sl, lsl #1 + 27636: d1f6 bne.n 27626 + 27638: f04f 0a20 mov.w sl, #32 return maxnum; - 27550: f8cd a00c str.w sl, [sp, #12] + 2763c: f8cd a00c str.w sl, [sp, #12] } else { // full speed 12 Mbit/sec or low speed 1.5 Mbit/sec interval = round_to_power_of_two(interval, PERIODIC_LIST_SIZE); pipe->periodic_interval = interval; uint32_t stime, ctime; if (pipe->direction == 0) { - 27554: 9a02 ldr r2, [sp, #8] + 27640: 9a02 ldr r2, [sp, #8] pipe->periodic_interval = interval; - 27556: 9803 ldr r0, [sp, #12] + 27642: 9803 ldr r0, [sp, #12] if (pipe->direction == 0) { - 27558: f892 3035 ldrb.w r3, [r2, #53] ; 0x35 + 27644: f892 3035 ldrb.w r3, [r2, #53] ; 0x35 pipe->periodic_interval = interval; - 2755c: f8a2 0040 strh.w r0, [r2, #64] ; 0x40 + 27648: f8a2 0040 strh.w r0, [r2, #64] ; 0x40 if (pipe->direction == 0) { - 27560: 2b00 cmp r3, #0 - 27562: f040 80cf bne.w 27704 + 2764c: 2b00 cmp r3, #0 + 2764e: f040 80cf bne.w 277f0 // for OUT direction, SSPLIT will carry the data payload // TODO: how much time to SSPLIT & CSPLIT actually take? // they're not documented in 5.7 or 5.11.3. stime = (100 + 32 + maxlen) >> 5; - 27566: 3184 adds r1, #132 ; 0x84 + 27652: 3184 adds r1, #132 ; 0x84 ctime = (55 + 32) >> 5; - 27568: 2402 movs r4, #2 + 27654: 2402 movs r4, #2 stime = (100 + 32 + maxlen) >> 5; - 2756a: 094f lsrs r7, r1, #5 + 27656: 094f lsrs r7, r1, #5 // TODO: even if Multi-TT, do we need to worry about packing // too many into the same uframe? uint32_t best_shift = 0; uint32_t best_offset = 0xFFFFFFFF; uint32_t best_bandwidth = 0xFFFFFFFF; for (uint32_t offset=0; offset < interval; offset++) { - 2756c: 2300 movs r3, #0 + 27658: 2300 movs r3, #0 uint32_t best_bandwidth = 0xFFFFFFFF; - 2756e: f04f 36ff mov.w r6, #4294967295 ; 0xffffffff - 27572: f8df b1d8 ldr.w fp, [pc, #472] ; 2774c + 2765a: f04f 36ff mov.w r6, #4294967295 ; 0xffffffff + 2765e: f8df b1d8 ldr.w fp, [pc, #472] ; 27838 uint32_t best_offset = 0xFFFFFFFF; - 27576: 46b0 mov r8, r6 + 27662: 46b0 mov r8, r6 uint32_t best_shift = 0; - 27578: 4699 mov r9, r3 + 27664: 4699 mov r9, r3 for (uint32_t offset=0; offset < interval; offset++) { - 2757a: 9301 str r3, [sp, #4] + 27666: 9301 str r3, [sp, #4] uint32_t bw2 = uframe_bandwidth[n+2] + ctime; uint32_t bw3 = uframe_bandwidth[n+3] + ctime; uint32_t bw4 = uframe_bandwidth[n+4] + ctime; max_bandwidth = max4(bw1, bw2, bw3, bw4); // remember the best usage found if (max_bandwidth < best_bandwidth) { - 2757c: f8dd e004 ldr.w lr, [sp, #4] + 27668: f8dd e004 ldr.w lr, [sp, #4] for (uint32_t j=0; j <= 3; j++) { // max 3 without FSTN - 27580: eb0b 02ce add.w r2, fp, lr, lsl #3 - 27584: 2500 movs r5, #0 + 2766c: eb0b 02ce add.w r2, fp, lr, lsl #3 + 27670: 2500 movs r5, #0 uint32_t bw1 = uframe_bandwidth[n+0] + stime; - 27586: f812 0b01 ldrb.w r0, [r2], #1 + 27672: f812 0b01 ldrb.w r0, [r2], #1 uint32_t bw2 = uframe_bandwidth[n+2] + ctime; - 2758a: 7851 ldrb r1, [r2, #1] + 27676: 7851 ldrb r1, [r2, #1] uint32_t bw1 = uframe_bandwidth[n+0] + stime; - 2758c: 4438 add r0, r7 + 27678: 4438 add r0, r7 uint32_t bw3 = uframe_bandwidth[n+3] + ctime; - 2758e: f892 c002 ldrb.w ip, [r2, #2] + 2767a: f892 c002 ldrb.w ip, [r2, #2] uint32_t bw2 = uframe_bandwidth[n+2] + ctime; - 27592: 4421 add r1, r4 + 2767e: 4421 add r1, r4 uint32_t bw4 = uframe_bandwidth[n+4] + ctime; - 27594: 78d3 ldrb r3, [r2, #3] + 27680: 78d3 ldrb r3, [r2, #3] uint32_t bw3 = uframe_bandwidth[n+3] + ctime; - 27596: 44a4 add ip, r4 + 27682: 44a4 add ip, r4 if (n1 > n2) { - 27598: 4288 cmp r0, r1 + 27684: 4288 cmp r0, r1 uint32_t bw4 = uframe_bandwidth[n+4] + ctime; - 2759a: 4423 add r3, r4 + 27686: 4423 add r3, r4 if (n1 > n2) { - 2759c: d954 bls.n 27648 + 27688: d954 bls.n 27734 if (n1 > n3) { - 2759e: 4560 cmp r0, ip - 275a0: d94e bls.n 27640 - 275a2: 4283 cmp r3, r0 - 275a4: bf38 it cc - 275a6: 4603 movcc r3, r0 + 2768a: 4560 cmp r0, ip + 2768c: d94e bls.n 2772c + 2768e: 4283 cmp r3, r0 + 27690: bf38 it cc + 27692: 4603 movcc r3, r0 if (max_bandwidth < best_bandwidth) { - 275a8: 42b3 cmp r3, r6 - 275aa: d202 bcs.n 275b2 - 275ac: 46a9 mov r9, r5 - 275ae: 46f0 mov r8, lr - 275b0: 461e mov r6, r3 + 27694: 42b3 cmp r3, r6 + 27696: d202 bcs.n 2769e + 27698: 46a9 mov r9, r5 + 2769a: 46f0 mov r8, lr + 2769c: 461e mov r6, r3 for (uint32_t j=0; j <= 3; j++) { // max 3 without FSTN - 275b2: 3501 adds r5, #1 - 275b4: 2d04 cmp r5, #4 - 275b6: d1e6 bne.n 27586 + 2769e: 3501 adds r5, #1 + 276a0: 2d04 cmp r5, #4 + 276a2: d1e6 bne.n 27672 for (uint32_t i=offset; i < PERIODIC_LIST_SIZE; i += interval) { - 275b8: 44d6 add lr, sl - 275ba: f1be 0f1f cmp.w lr, #31 - 275be: d9df bls.n 27580 + 276a4: 44d6 add lr, sl + 276a6: f1be 0f1f cmp.w lr, #31 + 276aa: d9df bls.n 2766c for (uint32_t offset=0; offset < interval; offset++) { - 275c0: 9b01 ldr r3, [sp, #4] - 275c2: 3301 adds r3, #1 - 275c4: 459a cmp sl, r3 - 275c6: 9301 str r3, [sp, #4] - 275c8: d1d8 bne.n 2757c + 276ac: 9b01 ldr r3, [sp, #4] + 276ae: 3301 adds r3, #1 + 276b0: 459a cmp sl, r3 + 276b2: 9301 str r3, [sp, #4] + 276b4: d1d8 bne.n 27668 //print(best_offset); println(", shift= ", best_shift); //println(best_shift); // a 125 us micro frame can fit 7500 bytes, or 234 of our 32-byte units // fail if the best found needs more than 80% (234 * 0.8) in any uframe if (best_bandwidth > 187) return false; - 275ca: 2ebb cmp r6, #187 ; 0xbb - 275cc: d842 bhi.n 27654 + 276b6: 2ebb cmp r6, #187 ; 0xbb + 276b8: d842 bhi.n 27740 // save essential bandwidth specs, for cleanup in delete_Pipe pipe->bandwidth_interval = interval; pipe->bandwidth_offset = best_offset; pipe->bandwidth_shift = best_shift; pipe->bandwidth_stime = stime; - 275ce: b2ff uxtb r7, r7 + 276ba: b2ff uxtb r7, r7 pipe->bandwidth_ctime = ctime; for (uint32_t i=best_offset; i < PERIODIC_LIST_SIZE; i += interval) { - 275d0: f1b8 0f1f cmp.w r8, #31 + 276bc: f1b8 0f1f cmp.w r8, #31 pipe->bandwidth_ctime = ctime; - 275d4: b2e4 uxtb r4, r4 + 276c0: b2e4 uxtb r4, r4 pipe->bandwidth_offset = best_offset; - 275d6: fa1f f588 uxth.w r5, r8 + 276c2: fa1f f588 uxth.w r5, r8 pipe->bandwidth_interval = interval; - 275da: e9dd 3202 ldrd r3, r2, [sp, #8] - 275de: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 + 276c6: e9dd 3202 ldrd r3, r2, [sp, #8] + 276ca: f8a3 2044 strh.w r2, [r3, #68] ; 0x44 pipe->bandwidth_shift = best_shift; - 275e2: f8a3 9048 strh.w r9, [r3, #72] ; 0x48 + 276ce: f8a3 9048 strh.w r9, [r3, #72] ; 0x48 pipe->bandwidth_stime = stime; - 275e6: f883 704a strb.w r7, [r3, #74] ; 0x4a + 276d2: f883 704a strb.w r7, [r3, #74] ; 0x4a pipe->bandwidth_ctime = ctime; - 275ea: f883 404b strb.w r4, [r3, #75] ; 0x4b + 276d6: f883 404b strb.w r4, [r3, #75] ; 0x4b pipe->bandwidth_offset = best_offset; - 275ee: f8a3 5046 strh.w r5, [r3, #70] ; 0x46 + 276da: f8a3 5046 strh.w r5, [r3, #70] ; 0x46 for (uint32_t i=best_offset; i < PERIODIC_LIST_SIZE; i += interval) { - 275f2: d815 bhi.n 27620 - 275f4: eb09 03c8 add.w r3, r9, r8, lsl #3 - 275f8: 9e01 ldr r6, [sp, #4] - 275fa: 445b add r3, fp - 275fc: 00f0 lsls r0, r6, #3 + 276de: d815 bhi.n 2770c + 276e0: eb09 03c8 add.w r3, r9, r8, lsl #3 + 276e4: 9e01 ldr r6, [sp, #4] + 276e6: 445b add r3, fp + 276e8: 00f0 lsls r0, r6, #3 uint32_t n = (i << 3) + best_shift; uframe_bandwidth[n+0] += stime; - 275fe: 7819 ldrb r1, [r3, #0] + 276ea: 7819 ldrb r1, [r3, #0] for (uint32_t i=best_offset; i < PERIODIC_LIST_SIZE; i += interval) { - 27600: 44b0 add r8, r6 + 276ec: 44b0 add r8, r6 uframe_bandwidth[n+2] += ctime; - 27602: 789a ldrb r2, [r3, #2] + 276ee: 789a ldrb r2, [r3, #2] uframe_bandwidth[n+0] += stime; - 27604: 4439 add r1, r7 + 276f0: 4439 add r1, r7 for (uint32_t i=best_offset; i < PERIODIC_LIST_SIZE; i += interval) { - 27606: f1b8 0f1f cmp.w r8, #31 + 276f2: f1b8 0f1f cmp.w r8, #31 uframe_bandwidth[n+2] += ctime; - 2760a: 4422 add r2, r4 + 276f6: 4422 add r2, r4 uframe_bandwidth[n+0] += stime; - 2760c: 7019 strb r1, [r3, #0] + 276f8: 7019 strb r1, [r3, #0] uframe_bandwidth[n+2] += ctime; - 2760e: 709a strb r2, [r3, #2] + 276fa: 709a strb r2, [r3, #2] uframe_bandwidth[n+3] += ctime; - 27610: 78d9 ldrb r1, [r3, #3] + 276fc: 78d9 ldrb r1, [r3, #3] uframe_bandwidth[n+4] += ctime; - 27612: 791a ldrb r2, [r3, #4] + 276fe: 791a ldrb r2, [r3, #4] uframe_bandwidth[n+3] += ctime; - 27614: 4421 add r1, r4 + 27700: 4421 add r1, r4 uframe_bandwidth[n+4] += ctime; - 27616: 4422 add r2, r4 + 27702: 4422 add r2, r4 uframe_bandwidth[n+3] += ctime; - 27618: 70d9 strb r1, [r3, #3] + 27704: 70d9 strb r1, [r3, #3] uframe_bandwidth[n+4] += ctime; - 2761a: 711a strb r2, [r3, #4] + 27706: 711a strb r2, [r3, #4] for (uint32_t i=best_offset; i < PERIODIC_LIST_SIZE; i += interval) { - 2761c: 4403 add r3, r0 - 2761e: d9ee bls.n 275fe + 27708: 4403 add r3, r0 + 2770a: d9ee bls.n 276ea } pipe->start_mask = 0x01 << best_shift; - 27620: 2001 movs r0, #1 + 2770c: 2001 movs r0, #1 pipe->complete_mask = 0x1C << best_shift; - 27622: 231c movs r3, #28 + 2770e: 231c movs r3, #28 pipe->periodic_offset = best_offset; - 27624: 9902 ldr r1, [sp, #8] + 27710: 9902 ldr r1, [sp, #8] pipe->start_mask = 0x01 << best_shift; - 27626: fa00 f209 lsl.w r2, r0, r9 + 27712: fa00 f209 lsl.w r2, r0, r9 pipe->complete_mask = 0x1C << best_shift; - 2762a: fa03 f309 lsl.w r3, r3, r9 + 27716: fa03 f309 lsl.w r3, r3, r9 pipe->periodic_offset = best_offset; - 2762e: f8a1 5042 strh.w r5, [r1, #66] ; 0x42 + 2771a: f8a1 5042 strh.w r5, [r1, #66] ; 0x42 pipe->start_mask = 0x01 << best_shift; - 27632: f881 2036 strb.w r2, [r1, #54] ; 0x36 + 2771e: f881 2036 strb.w r2, [r1, #54] ; 0x36 pipe->complete_mask = 0x1C << best_shift; - 27636: f881 3037 strb.w r3, [r1, #55] ; 0x37 + 27722: f881 3037 strb.w r3, [r1, #55] ; 0x37 } return true; } - 2763a: b005 add sp, #20 - 2763c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 27640: 4563 cmp r3, ip - 27642: bf38 it cc - 27644: 4663 movcc r3, ip - 27646: e7af b.n 275a8 + 27726: b005 add sp, #20 + 27728: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2772c: 4563 cmp r3, ip + 2772e: bf38 it cc + 27730: 4663 movcc r3, ip + 27732: e7af b.n 27694 if (n2 > n3) { - 27648: 4561 cmp r1, ip - 2764a: d9f9 bls.n 27640 - 2764c: 428b cmp r3, r1 - 2764e: bf38 it cc - 27650: 460b movcc r3, r1 - 27652: e7a9 b.n 275a8 + 27734: 4561 cmp r1, ip + 27736: d9f9 bls.n 2772c + 27738: 428b cmp r3, r1 + 2773a: bf38 it cc + 2773c: 460b movcc r3, r1 + 2773e: e7a9 b.n 27694 if (best_bandwidth > 187) return false; - 27654: 2000 movs r0, #0 + 27740: 2000 movs r0, #0 } - 27656: b005 add sp, #20 - 27658: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 27742: b005 add sp, #20 + 27744: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} interval = 1 << (interval - 1); - 2765c: 280f cmp r0, #15 - 2765e: 4603 mov r3, r0 - 27660: f04f 0c01 mov.w ip, #1 + 27748: 280f cmp r0, #15 + 2774a: 4603 mov r3, r0 + 2774c: f04f 0c01 mov.w ip, #1 uint32_t stime = (55 + 32 + maxlen) >> 5; // time units: 32 bytes or 533 ns - 27664: f101 0157 add.w r1, r1, #87 ; 0x57 + 27750: f101 0157 add.w r1, r1, #87 ; 0x57 interval = 1 << (interval - 1); - 27668: bf28 it cs - 2766a: 230f movcs r3, #15 + 27754: bf28 it cs + 27756: 230f movcs r3, #15 uint32_t best_bandwidth = 0xFFFFFFFF; - 2766c: f04f 3eff mov.w lr, #4294967295 ; 0xffffffff + 27758: f04f 3eff mov.w lr, #4294967295 ; 0xffffffff uint32_t stime = (55 + 32 + maxlen) >> 5; // time units: 32 bytes or 533 ns - 27670: 094c lsrs r4, r1, #5 + 2775c: 094c lsrs r4, r1, #5 for (uint32_t offset=0; offset < interval; offset++) { - 27672: 2600 movs r6, #0 + 2775e: 2600 movs r6, #0 interval = 1 << (interval - 1); - 27674: 3b01 subs r3, #1 + 27760: 3b01 subs r3, #1 pipe->periodic_interval = (pinterval > 0) ? pinterval : 1; - 27676: 9902 ldr r1, [sp, #8] - 27678: f8df b0d0 ldr.w fp, [pc, #208] ; 2774c + 27762: 9902 ldr r1, [sp, #8] + 27764: f8df b0d0 ldr.w fp, [pc, #208] ; 27838 uint32_t best_offset = 0xFFFFFFFF; - 2767c: 4677 mov r7, lr + 27768: 4677 mov r7, lr interval = 1 << (interval - 1); - 2767e: fa0c fc03 lsl.w ip, ip, r3 + 2776a: fa0c fc03 lsl.w ip, ip, r3 if (interval > PERIODIC_LIST_SIZE*8) interval = PERIODIC_LIST_SIZE*8; - 27682: f5bc 7f80 cmp.w ip, #256 ; 0x100 - 27686: 4665 mov r5, ip - 27688: bf28 it cs - 2768a: f44f 7580 movcs.w r5, #256 ; 0x100 + 2776e: f5bc 7f80 cmp.w ip, #256 ; 0x100 + 27772: 4665 mov r5, ip + 27774: bf28 it cs + 27776: f44f 7580 movcs.w r5, #256 ; 0x100 uint32_t pinterval = interval >> 3; - 2768e: 08eb lsrs r3, r5, #3 + 2777a: 08eb lsrs r3, r5, #3 pipe->periodic_interval = (pinterval > 0) ? pinterval : 1; - 27690: 2b01 cmp r3, #1 - 27692: bf38 it cc - 27694: 2301 movcc r3, #1 - 27696: f8a1 3040 strh.w r3, [r1, #64] ; 0x40 + 2777c: 2b01 cmp r3, #1 + 2777e: bf38 it cc + 27780: 2301 movcc r3, #1 + 27782: f8a1 3040 strh.w r3, [r1, #64] ; 0x40 { - 2769a: 4633 mov r3, r6 + 27786: 4633 mov r3, r6 uint32_t max_bandwidth = 0; - 2769c: 2000 movs r0, #0 + 27788: 2000 movs r0, #0 uint32_t bandwidth = uframe_bandwidth[i] + stime; - 2769e: f81b 1003 ldrb.w r1, [fp, r3] + 2778a: f81b 1003 ldrb.w r1, [fp, r3] for (uint32_t i=offset; i < PERIODIC_LIST_SIZE*8; i += interval) { - 276a2: 442b add r3, r5 + 2778e: 442b add r3, r5 uint32_t bandwidth = uframe_bandwidth[i] + stime; - 276a4: 4421 add r1, r4 - 276a6: 4288 cmp r0, r1 - 276a8: bf38 it cc - 276aa: 4608 movcc r0, r1 + 27790: 4421 add r1, r4 + 27792: 4288 cmp r0, r1 + 27794: bf38 it cc + 27796: 4608 movcc r0, r1 for (uint32_t i=offset; i < PERIODIC_LIST_SIZE*8; i += interval) { - 276ac: 2bff cmp r3, #255 ; 0xff - 276ae: d9f6 bls.n 2769e + 27798: 2bff cmp r3, #255 ; 0xff + 2779a: d9f6 bls.n 2778a if (max_bandwidth < best_bandwidth) { - 276b0: 4570 cmp r0, lr - 276b2: d201 bcs.n 276b8 - 276b4: 4686 mov lr, r0 - 276b6: 4637 mov r7, r6 + 2779c: 4570 cmp r0, lr + 2779e: d201 bcs.n 277a4 + 277a0: 4686 mov lr, r0 + 277a2: 4637 mov r7, r6 for (uint32_t offset=0; offset < interval; offset++) { - 276b8: 3601 adds r6, #1 - 276ba: 42b5 cmp r5, r6 - 276bc: d1ed bne.n 2769a + 277a4: 3601 adds r6, #1 + 277a6: 42b5 cmp r5, r6 + 277a8: d1ed bne.n 27786 if (best_bandwidth > 187) return false; - 276be: f1be 0fbb cmp.w lr, #187 ; 0xbb - 276c2: d8c7 bhi.n 27654 + 277aa: f1be 0fbb cmp.w lr, #187 ; 0xbb + 277ae: d8c7 bhi.n 27740 pipe->bandwidth_interval = interval; - 276c4: 9b02 ldr r3, [sp, #8] + 277b0: 9b02 ldr r3, [sp, #8] pipe->bandwidth_stime = stime; - 276c6: b2e4 uxtb r4, r4 + 277b2: b2e4 uxtb r4, r4 for (uint32_t i=best_offset; i < PERIODIC_LIST_SIZE*8; i += interval) { - 276c8: 2fff cmp r7, #255 ; 0xff + 277b4: 2fff cmp r7, #255 ; 0xff pipe->bandwidth_interval = interval; - 276ca: f8a3 5044 strh.w r5, [r3, #68] ; 0x44 + 277b6: f8a3 5044 strh.w r5, [r3, #68] ; 0x44 pipe->bandwidth_offset = best_offset; - 276ce: f8a3 7046 strh.w r7, [r3, #70] ; 0x46 + 277ba: f8a3 7046 strh.w r7, [r3, #70] ; 0x46 pipe->bandwidth_stime = stime; - 276d2: f883 404a strb.w r4, [r3, #74] ; 0x4a + 277be: f883 404a strb.w r4, [r3, #74] ; 0x4a for (uint32_t i=best_offset; i < PERIODIC_LIST_SIZE*8; i += interval) { - 276d6: d808 bhi.n 276ea - 276d8: 463b mov r3, r7 + 277c2: d808 bhi.n 277d6 + 277c4: 463b mov r3, r7 uframe_bandwidth[i] += stime; - 276da: f81b 1003 ldrb.w r1, [fp, r3] - 276de: 4421 add r1, r4 - 276e0: f80b 1003 strb.w r1, [fp, r3] + 277c6: f81b 1003 ldrb.w r1, [fp, r3] + 277ca: 4421 add r1, r4 + 277cc: f80b 1003 strb.w r1, [fp, r3] for (uint32_t i=best_offset; i < PERIODIC_LIST_SIZE*8; i += interval) { - 276e4: 442b add r3, r5 - 276e6: 2bff cmp r3, #255 ; 0xff - 276e8: d9f7 bls.n 276da + 277d0: 442b add r3, r5 + 277d2: 2bff cmp r3, #255 ; 0xff + 277d4: d9f7 bls.n 277c6 if (interval == 1) { - 276ea: 2a01 cmp r2, #1 - 276ec: d912 bls.n 27714 + 277d6: 2a01 cmp r2, #1 + 277d8: d912 bls.n 27800 } else if (interval == 2) { - 276ee: 2a02 cmp r2, #2 - 276f0: d01e beq.n 27730 + 277da: 2a02 cmp r2, #2 + 277dc: d01e beq.n 2781c } else if (interval <= 4) { - 276f2: f1bc 0f04 cmp.w ip, #4 - 276f6: dc21 bgt.n 2773c + 277de: f1bc 0f04 cmp.w ip, #4 + 277e2: dc21 bgt.n 27828 pipe->start_mask = 0x11 << (best_offset & 3); - 276f8: f007 0203 and.w r2, r7, #3 - 276fc: 2311 movs r3, #17 - 276fe: 4093 lsls r3, r2 - 27700: b2db uxtb r3, r3 - 27702: e008 b.n 27716 + 277e4: f007 0203 and.w r2, r7, #3 + 277e8: 2311 movs r3, #17 + 277ea: 4093 lsls r3, r2 + 277ec: b2db uxtb r3, r3 + 277ee: e008 b.n 27802 ctime = (70 + 32 + maxlen) >> 5; - 27704: 3166 adds r1, #102 ; 0x66 + 277f0: 3166 adds r1, #102 ; 0x66 stime = (40 + 32) >> 5; - 27706: 2702 movs r7, #2 + 277f2: 2702 movs r7, #2 ctime = (70 + 32 + maxlen) >> 5; - 27708: 094c lsrs r4, r1, #5 - 2770a: e72f b.n 2756c + 277f4: 094c lsrs r4, r1, #5 + 277f6: e72f b.n 27658 pipe->periodic_interval = interval; - 2770c: fa1f f38a uxth.w r3, sl - 27710: 9303 str r3, [sp, #12] - 27712: e71f b.n 27554 - 27714: 23ff movs r3, #255 ; 0xff + 277f8: fa1f f38a uxth.w r3, sl + 277fc: 9303 str r3, [sp, #12] + 277fe: e71f b.n 27640 + 27800: 23ff movs r3, #255 ; 0xff pipe->start_mask = 0xFF; - 27716: 9902 ldr r1, [sp, #8] + 27802: 9902 ldr r1, [sp, #8] pipe->periodic_offset = best_offset >> 3; - 27718: 08ff lsrs r7, r7, #3 + 27804: 08ff lsrs r7, r7, #3 pipe->complete_mask = 0; - 2771a: 2200 movs r2, #0 + 27806: 2200 movs r2, #0 return true; - 2771c: 2001 movs r0, #1 + 27808: 2001 movs r0, #1 pipe->start_mask = 0xFF; - 2771e: f881 3036 strb.w r3, [r1, #54] ; 0x36 + 2780a: f881 3036 strb.w r3, [r1, #54] ; 0x36 pipe->periodic_offset = best_offset >> 3; - 27722: f8a1 7042 strh.w r7, [r1, #66] ; 0x42 + 2780e: f8a1 7042 strh.w r7, [r1, #66] ; 0x42 pipe->complete_mask = 0; - 27726: f881 2037 strb.w r2, [r1, #55] ; 0x37 + 27812: f881 2037 strb.w r2, [r1, #55] ; 0x37 } - 2772a: b005 add sp, #20 - 2772c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 27816: b005 add sp, #20 + 27818: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} pipe->start_mask = 0x55 << (best_offset & 1); - 27730: f007 0201 and.w r2, r7, #1 - 27734: 2355 movs r3, #85 ; 0x55 - 27736: 4093 lsls r3, r2 - 27738: b2db uxtb r3, r3 - 2773a: e7ec b.n 27716 + 2781c: f007 0201 and.w r2, r7, #1 + 27820: 2355 movs r3, #85 ; 0x55 + 27822: 4093 lsls r3, r2 + 27824: b2db uxtb r3, r3 + 27826: e7ec b.n 27802 pipe->start_mask = 0x01 << (best_offset & 7); - 2773c: f007 0207 and.w r2, r7, #7 - 27740: 2301 movs r3, #1 - 27742: 4093 lsls r3, r2 - 27744: b2db uxtb r3, r3 - 27746: e7e6 b.n 27716 - 27748: 00012aab .word 0x00012aab - 2774c: 2000b5d4 .word 0x2000b5d4 - -00027750 : + 27828: f007 0207 and.w r2, r7, #7 + 2782c: 2301 movs r3, #1 + 2782e: 4093 lsls r3, r2 + 27830: b2db uxtb r3, r3 + 27832: e7e6 b.n 27802 + 27834: 00012aab .word 0x00012aab + 27838: 2000b5f4 .word 0x2000b5f4 + +0002783c : pipe->qh.horizontal_link = periodictable[0]; periodictable[0] = (uint32_t)&(pipe->qh) | 2; // 2=QH println("init periodictable with ", periodictable[0], HEX); #else uint32_t interval = pipe->periodic_interval; uint32_t offset = pipe->periodic_offset; - 27750: f8b0 1042 ldrh.w r1, [r0, #66] ; 0x42 + 2783c: f8b0 1042 ldrh.w r1, [r0, #66] ; 0x42 uint32_t interval = pipe->periodic_interval; - 27754: f8b0 c040 ldrh.w ip, [r0, #64] ; 0x40 + 27840: f8b0 c040 ldrh.w ip, [r0, #64] ; 0x40 //println(" interval = ", interval); //println(" offset = ", offset); // By an interative miracle, hopefully make an inverted tree of EHCI figure 4-18, page 93 for (uint32_t i=offset; i < PERIODIC_LIST_SIZE; i += interval) { - 27758: 291f cmp r1, #31 - 2775a: d834 bhi.n 277c6 + 27844: 291f cmp r1, #31 + 27846: d834 bhi.n 278b2 { - 2775c: b530 push {r4, r5, lr} - 2775e: 4c1a ldr r4, [pc, #104] ; (277c8 ) + 27848: b530 push {r4, r5, lr} + 2784a: 4c1a ldr r4, [pc, #104] ; (278b4 ) uint32_t num = periodictable[i]; Pipe_t *node = (Pipe_t *)(num & 0xFFFFFFE0); if ((num & 1) || ((num & 6) == 2 && node->periodic_interval < interval)) { //println(" add to slot ", i); pipe->qh.horizontal_link = num; periodictable[i] = (uint32_t)&(pipe->qh) | 2; // 2=QH - 27760: f040 0502 orr.w r5, r0, #2 - 27764: e009 b.n 2777a + 2784c: f040 0502 orr.w r5, r0, #2 + 27850: e009 b.n 27866 if ((num & 1) || ((num & 6) == 2 && node->periodic_interval < interval)) { - 27766: f8b3 e040 ldrh.w lr, [r3, #64] ; 0x40 - 2776a: 45e6 cmp lr, ip - 2776c: d211 bcs.n 27792 + 27852: f8b3 e040 ldrh.w lr, [r3, #64] ; 0x40 + 27856: 45e6 cmp lr, ip + 27858: d211 bcs.n 2787e pipe->qh.horizontal_link = num; - 2776e: 6002 str r2, [r0, #0] + 2785a: 6002 str r2, [r0, #0] periodictable[i] = (uint32_t)&(pipe->qh) | 2; // 2=QH - 27770: f844 5021 str.w r5, [r4, r1, lsl #2] + 2785c: f844 5021 str.w r5, [r4, r1, lsl #2] for (uint32_t i=offset; i < PERIODIC_LIST_SIZE; i += interval) { - 27774: 4461 add r1, ip - 27776: 291f cmp r1, #31 - 27778: d824 bhi.n 277c4 + 27860: 4461 add r1, ip + 27862: 291f cmp r1, #31 + 27864: d824 bhi.n 278b0 uint32_t num = periodictable[i]; - 2777a: f854 2021 ldr.w r2, [r4, r1, lsl #2] + 27866: f854 2021 ldr.w r2, [r4, r1, lsl #2] if ((num & 1) || ((num & 6) == 2 && node->periodic_interval < interval)) { - 2777e: 07d3 lsls r3, r2, #31 - 27780: d4f5 bmi.n 2776e - 27782: f002 0e06 and.w lr, r2, #6 + 2786a: 07d3 lsls r3, r2, #31 + 2786c: d4f5 bmi.n 2785a + 2786e: f002 0e06 and.w lr, r2, #6 Pipe_t *node = (Pipe_t *)(num & 0xFFFFFFE0); - 27786: f022 031f bic.w r3, r2, #31 + 27872: f022 031f bic.w r3, r2, #31 if ((num & 1) || ((num & 6) == 2 && node->periodic_interval < interval)) { - 2778a: f1be 0f02 cmp.w lr, #2 - 2778e: d0ea beq.n 27766 - 27790: e007 b.n 277a2 + 27876: f1be 0f02 cmp.w lr, #2 + 2787a: d0ea beq.n 27852 + 2787c: e007 b.n 2788e } else { //println(" traverse list ", i); // TODO: skip past iTD, siTD when/if we support isochronous while (node->periodic_interval >= interval) { if (node == pipe) goto nextslot; - 27792: 4298 cmp r0, r3 - 27794: d0ee beq.n 27774 + 2787e: 4298 cmp r0, r3 + 27880: d0ee beq.n 27860 //print(" num ", num, HEX); //print(" node ", (uint32_t)node, HEX); //println("->", node->qh.horizontal_link, HEX); if (node->qh.horizontal_link & 1) break; - 27796: 681a ldr r2, [r3, #0] - 27798: 07d2 lsls r2, r2, #31 - 2779a: d406 bmi.n 277aa + 27882: 681a ldr r2, [r3, #0] + 27884: 07d2 lsls r2, r2, #31 + 27886: d406 bmi.n 27896 num = node->qh.horizontal_link; - 2779c: 681b ldr r3, [r3, #0] + 27888: 681b ldr r3, [r3, #0] node = (Pipe_t *)(num & 0xFFFFFFE0); - 2779e: f023 031f bic.w r3, r3, #31 + 2788a: f023 031f bic.w r3, r3, #31 while (node->periodic_interval >= interval) { - 277a2: f8b3 2040 ldrh.w r2, [r3, #64] ; 0x40 - 277a6: 4562 cmp r2, ip - 277a8: d2f3 bcs.n 27792 + 2788e: f8b3 2040 ldrh.w r2, [r3, #64] ; 0x40 + 27892: 4562 cmp r2, ip + 27894: d2f3 bcs.n 2787e { - 277aa: 461a mov r2, r3 + 27896: 461a mov r2, r3 } Pipe_t *n = node; do { if (n == pipe) goto nextslot; - 277ac: 4282 cmp r2, r0 - 277ae: d0e1 beq.n 27774 + 27898: 4282 cmp r2, r0 + 2789a: d0e1 beq.n 27860 n = (Pipe_t *)(n->qh.horizontal_link & 0xFFFFFFE0); - 277b0: 6812 ldr r2, [r2, #0] + 2789c: 6812 ldr r2, [r2, #0] } while (n != NULL); - 277b2: f032 021f bics.w r2, r2, #31 - 277b6: d1f9 bne.n 277ac + 2789e: f032 021f bics.w r2, r2, #31 + 278a2: d1f9 bne.n 27898 for (uint32_t i=offset; i < PERIODIC_LIST_SIZE; i += interval) { - 277b8: 4461 add r1, ip + 278a4: 4461 add r1, ip //print(" adding at node ", (uint32_t)node, HEX); //print(", num=", num, HEX); //println(", node->qh.horizontal_link=", node->qh.horizontal_link, HEX); pipe->qh.horizontal_link = node->qh.horizontal_link; - 277ba: 681a ldr r2, [r3, #0] + 278a6: 681a ldr r2, [r3, #0] for (uint32_t i=offset; i < PERIODIC_LIST_SIZE; i += interval) { - 277bc: 291f cmp r1, #31 + 278a8: 291f cmp r1, #31 pipe->qh.horizontal_link = node->qh.horizontal_link; - 277be: 6002 str r2, [r0, #0] + 278aa: 6002 str r2, [r0, #0] node->qh.horizontal_link = (uint32_t)pipe | 2; // 2=QH - 277c0: 601d str r5, [r3, #0] + 278ac: 601d str r5, [r3, #0] for (uint32_t i=offset; i < PERIODIC_LIST_SIZE; i += interval) { - 277c2: d9da bls.n 2777a + 278ae: d9da bls.n 27866 print(i); print(": "); print_qh_list((Pipe_t *)(periodictable[i] & 0xFFFFFFE0)); } #endif } - 277c4: bd30 pop {r4, r5, pc} - 277c6: 4770 bx lr - 277c8: 20006000 .word 0x20006000 + 278b0: bd30 pop {r4, r5, pc} + 278b2: 4770 bx lr + 278b4: 20006000 .word 0x20006000 -000277cc : +000278b8 : { - 277cc: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 277d0: 4605 mov r5, r0 - 277d2: 460e mov r6, r1 - 277d4: 4614 mov r4, r2 - 277d6: 4699 mov r9, r3 + 278b8: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 278bc: 4605 mov r5, r0 + 278be: 460e mov r6, r1 + 278c0: 4614 mov r4, r2 + 278c2: 4699 mov r9, r3 pipe = allocate_Pipe(); - 277d8: f000 fcce bl 28178 + 278c4: f000 fcce bl 28264 if (!pipe) return NULL; - 277dc: 4607 mov r7, r0 - 277de: 2800 cmp r0, #0 - 277e0: d065 beq.n 278ae + 278c8: 4607 mov r7, r0 + 278ca: 2800 cmp r0, #0 + 278cc: d065 beq.n 2799a halt = allocate_Transfer(); - 277e2: f000 fcd9 bl 28198 + 278ce: f000 fcd9 bl 28284 if (!halt) { - 277e6: 4680 mov r8, r0 - 277e8: 2800 cmp r0, #0 - 277ea: f000 8086 beq.w 278fa + 278d2: 4680 mov r8, r0 + 278d4: 2800 cmp r0, #0 + 278d6: f000 8086 beq.w 279e6 memset(pipe, 0, sizeof(Pipe_t)); - 277ee: 2260 movs r2, #96 ; 0x60 - 277f0: 2100 movs r1, #0 - 277f2: 4638 mov r0, r7 - 277f4: f006 fe4a bl 2e48c + 278da: 2260 movs r2, #96 ; 0x60 + 278dc: 2100 movs r1, #0 + 278de: 4638 mov r0, r7 + 278e0: f006 fe48 bl 2e574 memset(halt, 0, sizeof(Transfer_t)); - 277f8: 223c movs r2, #60 ; 0x3c - 277fa: 2100 movs r1, #0 - 277fc: f108 0004 add.w r0, r8, #4 - 27800: f006 fe44 bl 2e48c + 278e4: 223c movs r2, #60 ; 0x3c + 278e6: 2100 movs r1, #0 + 278e8: f108 0004 add.w r0, r8, #4 + 278ec: f006 fe42 bl 2e574 halt->qtd.next = 1; - 27804: 2201 movs r2, #1 + 278f0: 2201 movs r2, #1 halt->qtd.token = 0x40; - 27806: 2340 movs r3, #64 ; 0x40 + 278f2: 2340 movs r3, #64 ; 0x40 if (type == 3) { - 27808: 2e03 cmp r6, #3 + 278f4: 2e03 cmp r6, #3 halt->qtd.next = 1; - 2780a: f8c8 2000 str.w r2, [r8] + 278f6: f8c8 2000 str.w r2, [r8] halt->qtd.token = 0x40; - 2780e: f8c8 3008 str.w r3, [r8, #8] + 278fa: f8c8 3008 str.w r3, [r8, #8] pipe->qh.next = (uint32_t)halt; - 27812: f8c7 8010 str.w r8, [r7, #16] + 278fe: f8c7 8010 str.w r8, [r7, #16] pipe->direction = direction; - 27816: f887 9035 strb.w r9, [r7, #53] ; 0x35 + 27902: f887 9035 strb.w r9, [r7, #53] ; 0x35 pipe->qh.alt_next = 1; - 2781a: 617a str r2, [r7, #20] + 27906: 617a str r2, [r7, #20] pipe->device = dev; - 2781c: 633d str r5, [r7, #48] ; 0x30 + 27908: 633d str r5, [r7, #48] ; 0x30 pipe->type = type; - 2781e: f887 6034 strb.w r6, [r7, #52] ; 0x34 + 2790a: f887 6034 strb.w r6, [r7, #52] ; 0x34 if (type == 3) { - 27822: d058 beq.n 278d6 + 2790e: d058 beq.n 279c2 if (endpoint > 0) { - 27824: b13c cbz r4, 27836 + 27910: b13c cbz r4, 27922 Pipe_t *p = dev->data_pipes; - 27826: 686b ldr r3, [r5, #4] + 27912: 686b ldr r3, [r5, #4] if (p == NULL) { - 27828: 2b00 cmp r3, #0 - 2782a: d061 beq.n 278f0 + 27914: 2b00 cmp r3, #0 + 27916: d061 beq.n 279dc while (p->next) p = p->next; - 2782c: 461a mov r2, r3 - 2782e: 6b9b ldr r3, [r3, #56] ; 0x38 - 27830: 2b00 cmp r3, #0 - 27832: d1fb bne.n 2782c + 27918: 461a mov r2, r3 + 2791a: 6b9b ldr r3, [r3, #56] ; 0x38 + 2791c: 2b00 cmp r3, #0 + 2791e: d1fb bne.n 27918 p->next = pipe; - 27834: 6397 str r7, [r2, #56] ; 0x38 + 27920: 6397 str r7, [r2, #56] ; 0x38 if (dev->speed < 2) c = 1; - 27836: 7d29 ldrb r1, [r5, #20] + 27922: 7d29 ldrb r1, [r5, #20] if (type == 0) { - 27838: 2e00 cmp r6, #0 - 2783a: d13b bne.n 278b4 + 27924: 2e00 cmp r6, #0 + 27926: d13b bne.n 279a0 if (dev->speed < 2) c = 1; - 2783c: 2901 cmp r1, #1 - 2783e: f44f 4080 mov.w r0, #16384 ; 0x4000 - 27842: bf8c ite hi - 27844: 2200 movhi r2, #0 - 27846: 2201 movls r2, #1 + 27928: 2901 cmp r1, #1 + 2792a: f44f 4080 mov.w r0, #16384 ; 0x4000 + 2792e: bf8c ite hi + 27930: 2200 movhi r2, #0 + 27932: 2201 movls r2, #1 return ( (nak_count_reload << 28) | (control_endpoint_flag << 27) | - 27848: 06d2 lsls r2, r2, #27 + 27934: 06d2 lsls r2, r2, #27 (data_toggle_control << 14) | (speed << 12) | (endpoint_number << 8) | - 2784a: 0223 lsls r3, r4, #8 + 27936: 0223 lsls r3, r4, #8 (inactivate << 7) | (address << 0) ); - 2784c: ea43 3301 orr.w r3, r3, r1, lsl #12 - 27850: 9908 ldr r1, [sp, #32] - 27852: ea43 4301 orr.w r3, r3, r1, lsl #16 + 27938: ea43 3301 orr.w r3, r3, r1, lsl #12 + 2793c: 9908 ldr r1, [sp, #32] + 2793e: ea43 4301 orr.w r3, r3, r1, lsl #16 pipe->qh.capabilities[0] = QH_capabilities1(15, c, maxlen, 0, - 27856: 7d69 ldrb r1, [r5, #21] + 27942: 7d69 ldrb r1, [r5, #21] (inactivate << 7) | (address << 0) ); - 27858: 430b orrs r3, r1 - 2785a: 4313 orrs r3, r2 + 27944: 430b orrs r3, r1 + 27946: 4313 orrs r3, r2 pipe->qh.capabilities[1] = QH_capabilities2(1, dev->hub_port, - 2785c: f897 2037 ldrb.w r2, [r7, #55] ; 0x37 + 27948: f897 2037 ldrb.w r2, [r7, #55] ; 0x37 (inactivate << 7) | (address << 0) ); - 27860: 4303 orrs r3, r0 - 27862: f043 4370 orr.w r3, r3, #4026531840 ; 0xf0000000 + 2794c: 4303 orrs r3, r0 + 2794e: f043 4370 orr.w r3, r3, #4026531840 ; 0xf0000000 pipe->qh.capabilities[0] = QH_capabilities1(15, c, maxlen, 0, - 27866: 607b str r3, [r7, #4] + 27952: 607b str r3, [r7, #4] pipe->qh.capabilities[1] = QH_capabilities2(1, dev->hub_port, - 27868: 7dab ldrb r3, [r5, #22] - 2786a: 7de9 ldrb r1, [r5, #23] + 27954: 7dab ldrb r3, [r5, #22] + 27956: 7de9 ldrb r1, [r5, #23] return ( (high_bw_mult << 30) | (hub_port_number << 23) | (hub_address << 16) | - 2786c: 041b lsls r3, r3, #16 + 27958: 041b lsls r3, r3, #16 (split_completion_mask << 8) | (interrupt_schedule_mask << 0) ); - 2786e: ea43 53c1 orr.w r3, r3, r1, lsl #23 - 27872: ea43 2302 orr.w r3, r3, r2, lsl #8 + 2795a: ea43 53c1 orr.w r3, r3, r1, lsl #23 + 2795e: ea43 2302 orr.w r3, r3, r2, lsl #8 pipe->qh.capabilities[1] = QH_capabilities2(1, dev->hub_port, - 27876: f897 2036 ldrb.w r2, [r7, #54] ; 0x36 + 27962: f897 2036 ldrb.w r2, [r7, #54] ; 0x36 (split_completion_mask << 8) | (interrupt_schedule_mask << 0) ); - 2787a: 4313 orrs r3, r2 - 2787c: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000 + 27966: 4313 orrs r3, r2 + 27968: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000 pipe->qh.capabilities[1] = QH_capabilities2(1, dev->hub_port, - 27880: 60bb str r3, [r7, #8] + 2796c: 60bb str r3, [r7, #8] if (type == 0 || type == 2) { - 27882: f036 0302 bics.w r3, r6, #2 - 27886: d118 bne.n 278ba + 2796e: f036 0302 bics.w r3, r6, #2 + 27972: d118 bne.n 279a6 Pipe_t *list = (Pipe_t *)USBHS_ASYNCLISTADDR; - 27888: 4b22 ldr r3, [pc, #136] ; (27914 ) - 2788a: f8d3 2158 ldr.w r2, [r3, #344] ; 0x158 + 27974: 4b22 ldr r3, [pc, #136] ; (27a00 ) + 27976: f8d3 2158 ldr.w r2, [r3, #344] ; 0x158 if (list == NULL) { - 2788e: b9d2 cbnz r2, 278c6 + 2797a: b9d2 cbnz r2, 279b2 pipe->qh.capabilities[0] |= 0x8000; // H bit - 27890: 6879 ldr r1, [r7, #4] + 2797c: 6879 ldr r1, [r7, #4] pipe->qh.horizontal_link = (uint32_t)&(pipe->qh) | 2; // 2=QH - 27892: f047 0202 orr.w r2, r7, #2 + 2797e: f047 0202 orr.w r2, r7, #2 pipe->qh.capabilities[0] |= 0x8000; // H bit - 27896: f441 4100 orr.w r1, r1, #32768 ; 0x8000 - 2789a: 6079 str r1, [r7, #4] + 27982: f441 4100 orr.w r1, r1, #32768 ; 0x8000 + 27986: 6079 str r1, [r7, #4] pipe->qh.horizontal_link = (uint32_t)&(pipe->qh) | 2; // 2=QH - 2789c: 603a str r2, [r7, #0] + 27988: 603a str r2, [r7, #0] USBHS_ASYNCLISTADDR = (uint32_t)&(pipe->qh); - 2789e: f8c3 7158 str.w r7, [r3, #344] ; 0x158 + 2798a: f8c3 7158 str.w r7, [r3, #344] ; 0x158 USBHS_USBCMD |= USBHS_USBCMD_ASE; // enable async schedule - 278a2: f8d3 2140 ldr.w r2, [r3, #320] ; 0x140 - 278a6: f042 0220 orr.w r2, r2, #32 - 278aa: f8c3 2140 str.w r2, [r3, #320] ; 0x140 + 2798e: f8d3 2140 ldr.w r2, [r3, #320] ; 0x140 + 27992: f042 0220 orr.w r2, r2, #32 + 27996: f8c3 2140 str.w r2, [r3, #320] ; 0x140 } - 278ae: 4638 mov r0, r7 - 278b0: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 2799a: 4638 mov r0, r7 + 2799c: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if (dev->speed < 2) c = 1; - 278b4: 2000 movs r0, #0 - 278b6: 4602 mov r2, r0 - 278b8: e7c7 b.n 2784a + 279a0: 2000 movs r0, #0 + 279a2: 4602 mov r2, r0 + 279a4: e7c7 b.n 27936 } else if (type == 3) { - 278ba: 2e03 cmp r6, #3 - 278bc: d1f7 bne.n 278ae + 279a6: 2e03 cmp r6, #3 + 279a8: d1f7 bne.n 2799a add_qh_to_periodic_schedule(pipe); - 278be: 4638 mov r0, r7 - 278c0: f7ff ff46 bl 27750 - 278c4: e7f3 b.n 278ae + 279aa: 4638 mov r0, r7 + 279ac: f7ff ff46 bl 2783c + 279b0: e7f3 b.n 2799a pipe->qh.horizontal_link = list->qh.horizontal_link; - 278c6: 6811 ldr r1, [r2, #0] + 279b2: 6811 ldr r1, [r2, #0] list->qh.horizontal_link = (uint32_t)&(pipe->qh) | 2; - 278c8: f047 0302 orr.w r3, r7, #2 + 279b4: f047 0302 orr.w r3, r7, #2 } - 278cc: 4638 mov r0, r7 + 279b8: 4638 mov r0, r7 pipe->qh.horizontal_link = list->qh.horizontal_link; - 278ce: 6039 str r1, [r7, #0] + 279ba: 6039 str r1, [r7, #0] list->qh.horizontal_link = (uint32_t)&(pipe->qh) | 2; - 278d0: 6013 str r3, [r2, #0] + 279bc: 6013 str r3, [r2, #0] } - 278d2: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 279be: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if (!allocate_interrupt_pipe_bandwidth(pipe, maxlen, interval)) { - 278d6: e9dd 1208 ldrd r1, r2, [sp, #32] - 278da: 4638 mov r0, r7 - 278dc: f7ff fe18 bl 27510 - 278e0: 4681 mov r9, r0 - 278e2: b178 cbz r0, 27904 + 279c2: e9dd 1208 ldrd r1, r2, [sp, #32] + 279c6: 4638 mov r0, r7 + 279c8: f7ff fe18 bl 275fc + 279cc: 4681 mov r9, r0 + 279ce: b178 cbz r0, 279f0 if (endpoint > 0) { - 278e4: 2c00 cmp r4, #0 - 278e6: d19e bne.n 27826 + 279d0: 2c00 cmp r4, #0 + 279d2: d19e bne.n 27912 dtc, dev->speed, endpoint, 0, dev->address); - 278e8: 7d29 ldrb r1, [r5, #20] - 278ea: 4620 mov r0, r4 - 278ec: 4622 mov r2, r4 - 278ee: e7ac b.n 2784a + 279d4: 7d29 ldrb r1, [r5, #20] + 279d6: 4620 mov r0, r4 + 279d8: 4622 mov r2, r4 + 279da: e7ac b.n 27936 if (dev->speed < 2) c = 1; - 278f0: 7d29 ldrb r1, [r5, #20] + 279dc: 7d29 ldrb r1, [r5, #20] dev->data_pipes = pipe; - 278f2: 606f str r7, [r5, #4] + 279de: 606f str r7, [r5, #4] if (type == 0) { - 278f4: 2e00 cmp r6, #0 - 278f6: d0a1 beq.n 2783c - 278f8: e7dc b.n 278b4 + 279e0: 2e00 cmp r6, #0 + 279e2: d0a1 beq.n 27928 + 279e4: e7dc b.n 279a0 free_Pipe(pipe); - 278fa: 4638 mov r0, r7 + 279e6: 4638 mov r0, r7 return NULL; - 278fc: 4647 mov r7, r8 + 279e8: 4647 mov r7, r8 free_Pipe(pipe); - 278fe: f000 fc43 bl 28188 + 279ea: f000 fc43 bl 28274 return NULL; - 27902: e7d4 b.n 278ae + 279ee: e7d4 b.n 2799a free_Transfer(halt); - 27904: 4640 mov r0, r8 - 27906: f000 fc4f bl 281a8 + 279f0: 4640 mov r0, r8 + 279f2: f000 fc4f bl 28294 free_Pipe(pipe); - 2790a: 4638 mov r0, r7 - 2790c: f000 fc3c bl 28188 + 279f6: 4638 mov r0, r7 + 279f8: f000 fc3c bl 28274 return NULL; - 27910: 464f mov r7, r9 - 27912: e7cc b.n 278ae - 27914: 402e0200 .word 0x402e0200 + 279fc: 464f mov r7, r9 + 279fe: e7cc b.n 2799a + 27a00: 402e0200 .word 0x402e0200 -00027918 : +00027a04 : void USBHost::delete_Pipe(Pipe_t *pipe) { - 27918: b5f8 push {r3, r4, r5, r6, r7, lr} + 27a04: b5f8 push {r3, r4, r5, r6, r7, lr} // _never_ become inactive (if the endpoint NAKs indefinitely). For // another, the procedure given in the spec (deactivate the qTDs on the // queue) is racy, since the controller can perform a new overlay or // writeback at any time. bool isasync = (pipe->type == 0 || pipe->type == 2); - 2791a: f890 3034 ldrb.w r3, [r0, #52] ; 0x34 + 27a06: f890 3034 ldrb.w r3, [r0, #52] ; 0x34 { - 2791e: 4604 mov r4, r0 + 27a0a: 4604 mov r4, r0 if (isasync) { - 27920: f013 0ffd tst.w r3, #253 ; 0xfd - 27924: d13b bne.n 2799e + 27a0c: f013 0ffd tst.w r3, #253 ; 0xfd + 27a10: d13b bne.n 27a8a // find the next QH in the async schedule loop Pipe_t *next = (Pipe_t *)(pipe->qh.horizontal_link & 0xFFFFFFE0); - 27926: 6803 ldr r3, [r0, #0] - 27928: f023 031f bic.w r3, r3, #31 + 27a12: 6803 ldr r3, [r0, #0] + 27a14: f023 031f bic.w r3, r3, #31 if (next == pipe) { - 2792c: 4298 cmp r0, r3 - 2792e: f000 80cb beq.w 27ac8 + 27a18: 4298 cmp r0, r3 + 27a1a: f000 80cb beq.w 27bb4 } else { // find the previous QH in the async schedule loop println(" remove QH from async schedule"); Pipe_t *prev = next; while (1) { Pipe_t *n = (Pipe_t *)(prev->qh.horizontal_link & 0xFFFFFFE0); - 27932: 681a ldr r2, [r3, #0] - 27934: 4619 mov r1, r3 - 27936: f022 031f bic.w r3, r2, #31 + 27a1e: 681a ldr r2, [r3, #0] + 27a20: 4619 mov r1, r3 + 27a22: f022 031f bic.w r3, r2, #31 if (n == pipe) break; - 2793a: 429c cmp r4, r3 - 2793c: d1f9 bne.n 27932 + 27a26: 429c cmp r4, r3 + 27a28: d1f9 bne.n 27a1e prev = n; } // if removing the one with H bit, set another if (pipe->qh.capabilities[0] & 0x8000) { - 2793e: 6863 ldr r3, [r4, #4] - 27940: 041d lsls r5, r3, #16 - 27942: f100 80ac bmi.w 27a9e + 27a2a: 6863 ldr r3, [r4, #4] + 27a2c: 041d lsls r5, r3, #16 + 27a2e: f100 80ac bmi.w 27b8a prev->qh.capabilities[0] |= 0x8000; // set H bit } // link the previous QH, we're no longer in the loop prev->qh.horizontal_link = pipe->qh.horizontal_link; - 27946: 6823 ldr r3, [r4, #0] + 27a32: 6823 ldr r3, [r4, #0] // do the Async Advance Doorbell handshake to wait to be // sure the EHCI no longer references the removed QH USBHS_USBCMD |= USBHS_USBCMD_IAA; - 27948: 4a73 ldr r2, [pc, #460] ; (27b18 ) + 27a34: 4a73 ldr r2, [pc, #460] ; (27c04 ) prev->qh.horizontal_link = pipe->qh.horizontal_link; - 2794a: 600b str r3, [r1, #0] + 27a36: 600b str r3, [r1, #0] USBHS_USBCMD |= USBHS_USBCMD_IAA; - 2794c: f8d2 3140 ldr.w r3, [r2, #320] ; 0x140 - 27950: f043 0340 orr.w r3, r3, #64 ; 0x40 - 27954: f8c2 3140 str.w r3, [r2, #320] ; 0x140 + 27a38: f8d2 3140 ldr.w r3, [r2, #320] ; 0x140 + 27a3c: f043 0340 orr.w r3, r3, #64 ; 0x40 + 27a40: f8c2 3140 str.w r3, [r2, #320] ; 0x140 while (!(USBHS_USBSTS & USBHS_USBSTS_AAI)) ; // busy loop wait - 27958: f8d2 3144 ldr.w r3, [r2, #324] ; 0x144 - 2795c: 0698 lsls r0, r3, #26 - 2795e: d5fb bpl.n 27958 + 27a44: f8d2 3144 ldr.w r3, [r2, #324] ; 0x144 + 27a48: 0698 lsls r0, r3, #26 + 27a4a: d5fb bpl.n 27a44 USBHS_USBSTS = USBHS_USBSTS_AAI; - 27960: 2320 movs r3, #32 - 27962: f8c2 3144 str.w r3, [r2, #324] ; 0x144 + 27a4c: 2320 movs r3, #32 + 27a4e: f8c2 3144 str.w r3, [r2, #324] ; 0x144 // TODO: does this write interfere UPI & UAI (bits 18 & 19) ?? } // find & free all the transfers which completed println(" Free transfers"); Transfer_t *t = async_followup_first; - 27966: 4e6d ldr r6, [pc, #436] ; (27b1c ) - 27968: 6835 ldr r5, [r6, #0] + 27a52: 4e6d ldr r6, [pc, #436] ; (27c08 ) + 27a54: 6835 ldr r5, [r6, #0] while (t) { - 2796a: b13d cbz r5, 2797c + 27a56: b13d cbz r5, 27a68 async_followup_last = prev; - 2796c: 4f6c ldr r7, [pc, #432] ; (27b20 ) + 27a58: 4f6c ldr r7, [pc, #432] ; (27c0c ) print(" * ", (uint32_t)t); Transfer_t *next = t->next_followup; - 2796e: 4628 mov r0, r5 - 27970: 6a2d ldr r5, [r5, #32] + 27a5a: 4628 mov r0, r5 + 27a5c: 6a2d ldr r5, [r5, #32] if (t->pipe == pipe) { - 27972: 6a83 ldr r3, [r0, #40] ; 0x28 - 27974: 42a3 cmp r3, r4 - 27976: d07f beq.n 27a78 + 27a5e: 6a83 ldr r3, [r0, #40] ; 0x28 + 27a60: 42a3 cmp r3, r4 + 27a62: d07f beq.n 27b64 while (t) { - 27978: 2d00 cmp r5, #0 - 2797a: d1f8 bne.n 2796e + 27a64: 2d00 cmp r5, #0 + 27a66: d1f8 bne.n 27a5a // // TODO: do we need to look at pipe->qh.current ?? // // free all the transfers still attached to the QH println(" Free transfers attached to QH"); Transfer_t *tr = (Transfer_t *)(pipe->qh.next); - 2797c: 6925 ldr r5, [r4, #16] + 27a68: 6925 ldr r5, [r4, #16] while ((uint32_t)tr & 0xFFFFFFE0) { - 2797e: f035 031f bics.w r3, r5, #31 - 27982: d007 beq.n 27994 + 27a6a: f035 031f bics.w r3, r5, #31 + 27a6e: d007 beq.n 27a80 println(" * ", (uint32_t)tr); Transfer_t *next = (Transfer_t *)(tr->qtd.next); - 27984: 682b ldr r3, [r5, #0] - 27986: 4628 mov r0, r5 - 27988: 461d mov r5, r3 + 27a70: 682b ldr r3, [r5, #0] + 27a72: 4628 mov r0, r5 + 27a74: 461d mov r5, r3 free_Transfer(tr); - 2798a: f000 fc0d bl 281a8 + 27a76: f000 fc0d bl 28294 while ((uint32_t)tr & 0xFFFFFFE0) { - 2798e: f035 031f bics.w r3, r5, #31 - 27992: d1f7 bne.n 27984 + 27a7a: f035 031f bics.w r3, r5, #31 + 27a7e: d1f7 bne.n 27a70 tr = next; } // hopefully we found everything... free_Pipe(pipe); - 27994: 4620 mov r0, r4 + 27a80: 4620 mov r0, r4 println("* Delete Pipe completed"); } - 27996: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} + 27a82: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} free_Pipe(pipe); - 2799a: f000 bbf5 b.w 28188 - 2799e: 4861 ldr r0, [pc, #388] ; (27b24 ) - 279a0: f100 0580 add.w r5, r0, #128 ; 0x80 + 27a86: f000 bbf5 b.w 28274 + 27a8a: 4861 ldr r0, [pc, #388] ; (27c10 ) + 27a8c: f100 0580 add.w r5, r0, #128 ; 0x80 uint32_t num = periodictable[i]; - 279a4: f850 2f04 ldr.w r2, [r0, #4]! + 27a90: f850 2f04 ldr.w r2, [r0, #4]! if (num & 1) continue; - 279a8: 07d1 lsls r1, r2, #31 - 279aa: d40c bmi.n 279c6 + 27a94: 07d1 lsls r1, r2, #31 + 27a96: d40c bmi.n 27ab2 Pipe_t *node = (Pipe_t *)(num & 0xFFFFFFE0); - 279ac: f022 021f bic.w r2, r2, #31 + 27a98: f022 021f bic.w r2, r2, #31 if (node == pipe) { - 279b0: 4294 cmp r4, r2 - 279b2: d103 bne.n 279bc - 279b4: e056 b.n 27a64 + 27a9c: 4294 cmp r4, r2 + 27a9e: d103 bne.n 27aa8 + 27aa0: e056 b.n 27b50 if (node == pipe) { - 279b6: 428c cmp r4, r1 - 279b8: d059 beq.n 27a6e - 279ba: 460a mov r2, r1 + 27aa2: 428c cmp r4, r1 + 27aa4: d059 beq.n 27b5a + 27aa6: 460a mov r2, r1 num = node->qh.horizontal_link; - 279bc: 6813 ldr r3, [r2, #0] + 27aa8: 6813 ldr r3, [r2, #0] node = (Pipe_t *)(num & 0xFFFFFFE0); - 279be: f023 011f bic.w r1, r3, #31 + 27aaa: f023 011f bic.w r1, r3, #31 if (num & 1) break; - 279c2: 07db lsls r3, r3, #31 - 279c4: d5f7 bpl.n 279b6 + 27aae: 07db lsls r3, r3, #31 + 27ab0: d5f7 bpl.n 27aa2 for (uint32_t i=0; i < PERIODIC_LIST_SIZE; i++) { - 279c6: 42a8 cmp r0, r5 - 279c8: d1ec bne.n 279a4 + 27ab2: 42a8 cmp r0, r5 + 27ab4: d1ec bne.n 27a90 if (pipe->device->speed == 2) { - 279ca: 6b23 ldr r3, [r4, #48] ; 0x30 - 279cc: 7d1b ldrb r3, [r3, #20] - 279ce: 2b02 cmp r3, #2 - 279d0: d06a beq.n 27aa8 + 27ab6: 6b23 ldr r3, [r4, #48] ; 0x30 + 27ab8: 7d1b ldrb r3, [r3, #20] + 27aba: 2b02 cmp r3, #2 + 27abc: d06a beq.n 27b94 uint32_t offset = pipe->bandwidth_offset; - 279d2: f8b4 5046 ldrh.w r5, [r4, #70] ; 0x46 + 27abe: f8b4 5046 ldrh.w r5, [r4, #70] ; 0x46 uint32_t interval = pipe->bandwidth_interval; - 279d6: f8b4 e044 ldrh.w lr, [r4, #68] ; 0x44 + 27ac2: f8b4 e044 ldrh.w lr, [r4, #68] ; 0x44 for (uint32_t i=offset; i < PERIODIC_LIST_SIZE; i += interval) { - 279da: 2d1f cmp r5, #31 + 27ac6: 2d1f cmp r5, #31 uint32_t shift = pipe->bandwidth_shift; - 279dc: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 + 27ac8: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 uint32_t stime = pipe->bandwidth_stime; - 279e0: f894 604a ldrb.w r6, [r4, #74] ; 0x4a + 27acc: f894 604a ldrb.w r6, [r4, #74] ; 0x4a uint32_t ctime = pipe->bandwidth_ctime; - 279e4: f894 c04b ldrb.w ip, [r4, #75] ; 0x4b + 27ad0: f894 c04b ldrb.w ip, [r4, #75] ; 0x4b for (uint32_t i=offset; i < PERIODIC_LIST_SIZE; i += interval) { - 279e8: d818 bhi.n 27a1c - 279ea: eb03 03c5 add.w r3, r3, r5, lsl #3 - 279ee: 4a4e ldr r2, [pc, #312] ; (27b28 ) - 279f0: ea4f 07ce mov.w r7, lr, lsl #3 - 279f4: 4413 add r3, r2 + 27ad4: d818 bhi.n 27b08 + 27ad6: eb03 03c5 add.w r3, r3, r5, lsl #3 + 27ada: 4a4e ldr r2, [pc, #312] ; (27c14 ) + 27adc: ea4f 07ce mov.w r7, lr, lsl #3 + 27ae0: 4413 add r3, r2 uframe_bandwidth[n+2] -= ctime; - 279f6: 789a ldrb r2, [r3, #2] + 27ae2: 789a ldrb r2, [r3, #2] for (uint32_t i=offset; i < PERIODIC_LIST_SIZE; i += interval) { - 279f8: 4475 add r5, lr + 27ae4: 4475 add r5, lr uframe_bandwidth[n+0] -= stime; - 279fa: 7818 ldrb r0, [r3, #0] + 27ae6: 7818 ldrb r0, [r3, #0] uframe_bandwidth[n+2] -= ctime; - 279fc: eba2 020c sub.w r2, r2, ip + 27ae8: eba2 020c sub.w r2, r2, ip uframe_bandwidth[n+3] -= ctime; - 27a00: 78d9 ldrb r1, [r3, #3] + 27aec: 78d9 ldrb r1, [r3, #3] uframe_bandwidth[n+0] -= stime; - 27a02: 1b80 subs r0, r0, r6 + 27aee: 1b80 subs r0, r0, r6 for (uint32_t i=offset; i < PERIODIC_LIST_SIZE; i += interval) { - 27a04: 2d1f cmp r5, #31 + 27af0: 2d1f cmp r5, #31 uframe_bandwidth[n+2] -= ctime; - 27a06: 709a strb r2, [r3, #2] + 27af2: 709a strb r2, [r3, #2] uframe_bandwidth[n+3] -= ctime; - 27a08: eba1 010c sub.w r1, r1, ip + 27af4: eba1 010c sub.w r1, r1, ip uframe_bandwidth[n+4] -= ctime; - 27a0c: 791a ldrb r2, [r3, #4] + 27af8: 791a ldrb r2, [r3, #4] uframe_bandwidth[n+0] -= stime; - 27a0e: 7018 strb r0, [r3, #0] + 27afa: 7018 strb r0, [r3, #0] uframe_bandwidth[n+4] -= ctime; - 27a10: eba2 020c sub.w r2, r2, ip + 27afc: eba2 020c sub.w r2, r2, ip uframe_bandwidth[n+3] -= ctime; - 27a14: 70d9 strb r1, [r3, #3] + 27b00: 70d9 strb r1, [r3, #3] uframe_bandwidth[n+4] -= ctime; - 27a16: 711a strb r2, [r3, #4] + 27b02: 711a strb r2, [r3, #4] for (uint32_t i=offset; i < PERIODIC_LIST_SIZE; i += interval) { - 27a18: 443b add r3, r7 - 27a1a: d9ec bls.n 279f6 + 27b04: 443b add r3, r7 + 27b06: d9ec bls.n 27ae2 Transfer_t *t = periodic_followup_first; - 27a1c: 4e43 ldr r6, [pc, #268] ; (27b2c ) - 27a1e: 6835 ldr r5, [r6, #0] + 27b08: 4e43 ldr r6, [pc, #268] ; (27c18 ) + 27b0a: 6835 ldr r5, [r6, #0] while (t) { - 27a20: 2d00 cmp r5, #0 - 27a22: d0ab beq.n 2797c - 27a24: 4628 mov r0, r5 + 27b0c: 2d00 cmp r5, #0 + 27b0e: d0ab beq.n 27a68 + 27b10: 4628 mov r0, r5 periodic_followup_last = prev; - 27a26: 4f42 ldr r7, [pc, #264] ; (27b30 ) + 27b12: 4f42 ldr r7, [pc, #264] ; (27c1c ) Transfer_t *next = t->next_followup; - 27a28: 6a2d ldr r5, [r5, #32] + 27b14: 6a2d ldr r5, [r5, #32] if (t->pipe == pipe) { - 27a2a: 6a83 ldr r3, [r0, #40] ; 0x28 - 27a2c: 42a3 cmp r3, r4 - 27a2e: d006 beq.n 27a3e + 27b16: 6a83 ldr r3, [r0, #40] ; 0x28 + 27b18: 42a3 cmp r3, r4 + 27b1a: d006 beq.n 27b2a while (t) { - 27a30: 2d00 cmp r5, #0 - 27a32: d0a3 beq.n 2797c + 27b1c: 2d00 cmp r5, #0 + 27b1e: d0a3 beq.n 27a68 Transfer_t *next = t->next_followup; - 27a34: 4628 mov r0, r5 - 27a36: 6a2d ldr r5, [r5, #32] + 27b20: 4628 mov r0, r5 + 27b22: 6a2d ldr r5, [r5, #32] if (t->pipe == pipe) { - 27a38: 6a83 ldr r3, [r0, #40] ; 0x28 - 27a3a: 42a3 cmp r3, r4 - 27a3c: d1f8 bne.n 27a30 + 27b24: 6a83 ldr r3, [r0, #40] ; 0x28 + 27b26: 42a3 cmp r3, r4 + 27b28: d1f8 bne.n 27b1c Transfer_t *prev = transfer->prev_followup; - 27a3e: 6a43 ldr r3, [r0, #36] ; 0x24 + 27b2a: 6a43 ldr r3, [r0, #36] ; 0x24 if (prev) { - 27a40: 2b00 cmp r3, #0 - 27a42: d066 beq.n 27b12 + 27b2c: 2b00 cmp r3, #0 + 27b2e: d066 beq.n 27bfe prev->next_followup = next; - 27a44: 621d str r5, [r3, #32] + 27b30: 621d str r5, [r3, #32] if (next) { - 27a46: 2d00 cmp r5, #0 - 27a48: d061 beq.n 27b0e + 27b32: 2d00 cmp r5, #0 + 27b34: d061 beq.n 27bfa next->prev_followup = prev; - 27a4a: 626b str r3, [r5, #36] ; 0x24 + 27b36: 626b str r3, [r5, #36] ; 0x24 Transfer_t *tr = (Transfer_t *)(pipe->qh.next); - 27a4c: 6923 ldr r3, [r4, #16] + 27b38: 6923 ldr r3, [r4, #16] while (((uint32_t)tr & 0xFFFFFFE0) && (tr != t)){ - 27a4e: f033 021f bics.w r2, r3, #31 - 27a52: d104 bne.n 27a5e - 27a54: e050 b.n 27af8 + 27b3a: f033 021f bics.w r2, r3, #31 + 27b3e: d104 bne.n 27b4a + 27b40: e050 b.n 27be4 tr = (Transfer_t *)(tr->qtd.next); - 27a56: 681b ldr r3, [r3, #0] + 27b42: 681b ldr r3, [r3, #0] while (((uint32_t)tr & 0xFFFFFFE0) && (tr != t)){ - 27a58: f033 021f bics.w r2, r3, #31 - 27a5c: d04c beq.n 27af8 - 27a5e: 4283 cmp r3, r0 - 27a60: d1f9 bne.n 27a56 - 27a62: e7e5 b.n 27a30 + 27b44: f033 021f bics.w r2, r3, #31 + 27b48: d04c beq.n 27be4 + 27b4a: 4283 cmp r3, r0 + 27b4c: d1f9 bne.n 27b42 + 27b4e: e7e5 b.n 27b1c periodictable[i] = pipe->qh.horizontal_link; - 27a64: 6823 ldr r3, [r4, #0] + 27b50: 6823 ldr r3, [r4, #0] for (uint32_t i=0; i < PERIODIC_LIST_SIZE; i++) { - 27a66: 42a8 cmp r0, r5 + 27b52: 42a8 cmp r0, r5 periodictable[i] = pipe->qh.horizontal_link; - 27a68: 6003 str r3, [r0, #0] + 27b54: 6003 str r3, [r0, #0] for (uint32_t i=0; i < PERIODIC_LIST_SIZE; i++) { - 27a6a: d19b bne.n 279a4 - 27a6c: e7ad b.n 279ca + 27b56: d19b bne.n 27a90 + 27b58: e7ad b.n 27ab6 prev->qh.horizontal_link = node->qh.horizontal_link; - 27a6e: 6823 ldr r3, [r4, #0] + 27b5a: 6823 ldr r3, [r4, #0] for (uint32_t i=0; i < PERIODIC_LIST_SIZE; i++) { - 27a70: 42a8 cmp r0, r5 + 27b5c: 42a8 cmp r0, r5 prev->qh.horizontal_link = node->qh.horizontal_link; - 27a72: 6013 str r3, [r2, #0] + 27b5e: 6013 str r3, [r2, #0] for (uint32_t i=0; i < PERIODIC_LIST_SIZE; i++) { - 27a74: d196 bne.n 279a4 - 27a76: e7a8 b.n 279ca + 27b60: d196 bne.n 27a90 + 27b62: e7a8 b.n 27ab6 Transfer_t *prev = transfer->prev_followup; - 27a78: 6a43 ldr r3, [r0, #36] ; 0x24 + 27b64: 6a43 ldr r3, [r0, #36] ; 0x24 if (prev) { - 27a7a: 2b00 cmp r3, #0 - 27a7c: d045 beq.n 27b0a + 27b66: 2b00 cmp r3, #0 + 27b68: d045 beq.n 27bf6 prev->next_followup = next; - 27a7e: 621d str r5, [r3, #32] + 27b6a: 621d str r5, [r3, #32] if (next) { - 27a80: 2d00 cmp r5, #0 - 27a82: d040 beq.n 27b06 + 27b6c: 2d00 cmp r5, #0 + 27b6e: d040 beq.n 27bf2 next->prev_followup = prev; - 27a84: 626b str r3, [r5, #36] ; 0x24 + 27b70: 626b str r3, [r5, #36] ; 0x24 Transfer_t *tr = (Transfer_t *)(pipe->qh.next); - 27a86: 6923 ldr r3, [r4, #16] + 27b72: 6923 ldr r3, [r4, #16] while (((uint32_t)tr & 0xFFFFFFE0) && (tr != t)){ - 27a88: f033 021f bics.w r2, r3, #31 - 27a8c: d104 bne.n 27a98 - 27a8e: e02a b.n 27ae6 + 27b74: f033 021f bics.w r2, r3, #31 + 27b78: d104 bne.n 27b84 + 27b7a: e02a b.n 27bd2 tr = (Transfer_t *)(tr->qtd.next); - 27a90: 681b ldr r3, [r3, #0] + 27b7c: 681b ldr r3, [r3, #0] while (((uint32_t)tr & 0xFFFFFFE0) && (tr != t)){ - 27a92: f033 021f bics.w r2, r3, #31 - 27a96: d026 beq.n 27ae6 - 27a98: 4283 cmp r3, r0 - 27a9a: d1f9 bne.n 27a90 - 27a9c: e76c b.n 27978 + 27b7e: f033 021f bics.w r2, r3, #31 + 27b82: d026 beq.n 27bd2 + 27b84: 4283 cmp r3, r0 + 27b86: d1f9 bne.n 27b7c + 27b88: e76c b.n 27a64 prev->qh.capabilities[0] |= 0x8000; // set H bit - 27a9e: 684b ldr r3, [r1, #4] - 27aa0: f443 4300 orr.w r3, r3, #32768 ; 0x8000 - 27aa4: 604b str r3, [r1, #4] - 27aa6: e74e b.n 27946 + 27b8a: 684b ldr r3, [r1, #4] + 27b8c: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 27b90: 604b str r3, [r1, #4] + 27b92: e74e b.n 27a32 uint32_t offset = pipe->bandwidth_offset; - 27aa8: f8b4 3046 ldrh.w r3, [r4, #70] ; 0x46 + 27b94: f8b4 3046 ldrh.w r3, [r4, #70] ; 0x46 uint32_t interval = pipe->bandwidth_interval; - 27aac: f8b4 5044 ldrh.w r5, [r4, #68] ; 0x44 + 27b98: f8b4 5044 ldrh.w r5, [r4, #68] ; 0x44 for (uint32_t i=offset; i < PERIODIC_LIST_SIZE*8; i += interval) { - 27ab0: 2bff cmp r3, #255 ; 0xff + 27b9c: 2bff cmp r3, #255 ; 0xff uint32_t stime = pipe->bandwidth_stime; - 27ab2: f894 004a ldrb.w r0, [r4, #74] ; 0x4a + 27b9e: f894 004a ldrb.w r0, [r4, #74] ; 0x4a for (uint32_t i=offset; i < PERIODIC_LIST_SIZE*8; i += interval) { - 27ab6: d8b1 bhi.n 27a1c - 27ab8: 491b ldr r1, [pc, #108] ; (27b28 ) + 27ba2: d8b1 bhi.n 27b08 + 27ba4: 491b ldr r1, [pc, #108] ; (27c14 ) uframe_bandwidth[i] -= stime; - 27aba: 5cca ldrb r2, [r1, r3] - 27abc: 1a12 subs r2, r2, r0 - 27abe: 54ca strb r2, [r1, r3] + 27ba6: 5cca ldrb r2, [r1, r3] + 27ba8: 1a12 subs r2, r2, r0 + 27baa: 54ca strb r2, [r1, r3] for (uint32_t i=offset; i < PERIODIC_LIST_SIZE*8; i += interval) { - 27ac0: 442b add r3, r5 - 27ac2: 2bff cmp r3, #255 ; 0xff - 27ac4: d9f9 bls.n 27aba - 27ac6: e7a9 b.n 27a1c + 27bac: 442b add r3, r5 + 27bae: 2bff cmp r3, #255 ; 0xff + 27bb0: d9f9 bls.n 27ba6 + 27bb2: e7a9 b.n 27b08 USBHS_USBCMD &= ~USBHS_USBCMD_ASE; // disable async schedule - 27ac8: 4a13 ldr r2, [pc, #76] ; (27b18 ) - 27aca: f8d2 3140 ldr.w r3, [r2, #320] ; 0x140 - 27ace: f023 0320 bic.w r3, r3, #32 - 27ad2: f8c2 3140 str.w r3, [r2, #320] ; 0x140 + 27bb4: 4a13 ldr r2, [pc, #76] ; (27c04 ) + 27bb6: f8d2 3140 ldr.w r3, [r2, #320] ; 0x140 + 27bba: f023 0320 bic.w r3, r3, #32 + 27bbe: f8c2 3140 str.w r3, [r2, #320] ; 0x140 while (USBHS_USBSTS & USBHS_USBSTS_AS) ; // busy loop wait - 27ad6: f8d2 3144 ldr.w r3, [r2, #324] ; 0x144 - 27ada: f413 4300 ands.w r3, r3, #32768 ; 0x8000 - 27ade: d1fa bne.n 27ad6 + 27bc2: f8d2 3144 ldr.w r3, [r2, #324] ; 0x144 + 27bc6: f413 4300 ands.w r3, r3, #32768 ; 0x8000 + 27bca: d1fa bne.n 27bc2 USBHS_ASYNCLISTADDR = 0; - 27ae0: f8c2 3158 str.w r3, [r2, #344] ; 0x158 - 27ae4: e73f b.n 27966 + 27bcc: f8c2 3158 str.w r3, [r2, #344] ; 0x158 + 27bd0: e73f b.n 27a52 if (tr == t) { - 27ae6: 4283 cmp r3, r0 - 27ae8: f43f af46 beq.w 27978 + 27bd2: 4283 cmp r3, r0 + 27bd4: f43f af46 beq.w 27a64 free_Transfer(t); // The later code should actually free it... - 27aec: f000 fb5c bl 281a8 + 27bd8: f000 fb5c bl 28294 while (t) { - 27af0: 2d00 cmp r5, #0 - 27af2: f47f af3c bne.w 2796e - 27af6: e741 b.n 2797c + 27bdc: 2d00 cmp r5, #0 + 27bde: f47f af3c bne.w 27a5a + 27be2: e741 b.n 27a68 if (tr == t) { - 27af8: 4283 cmp r3, r0 - 27afa: d099 beq.n 27a30 + 27be4: 4283 cmp r3, r0 + 27be6: d099 beq.n 27b1c free_Transfer(t); // The later code should actually free it... - 27afc: f000 fb54 bl 281a8 + 27be8: f000 fb54 bl 28294 while (t) { - 27b00: 2d00 cmp r5, #0 - 27b02: d197 bne.n 27a34 - 27b04: e73a b.n 2797c + 27bec: 2d00 cmp r5, #0 + 27bee: d197 bne.n 27b20 + 27bf0: e73a b.n 27a68 async_followup_last = prev; - 27b06: 603b str r3, [r7, #0] - 27b08: e7bd b.n 27a86 + 27bf2: 603b str r3, [r7, #0] + 27bf4: e7bd b.n 27b72 async_followup_first = next; - 27b0a: 6035 str r5, [r6, #0] - 27b0c: e7b8 b.n 27a80 + 27bf6: 6035 str r5, [r6, #0] + 27bf8: e7b8 b.n 27b6c periodic_followup_last = prev; - 27b0e: 603b str r3, [r7, #0] - 27b10: e79c b.n 27a4c + 27bfa: 603b str r3, [r7, #0] + 27bfc: e79c b.n 27b38 periodic_followup_first = next; - 27b12: 6035 str r5, [r6, #0] - 27b14: e797 b.n 27a46 - 27b16: bf00 nop - 27b18: 402e0200 .word 0x402e0200 - 27b1c: 2000b6e0 .word 0x2000b6e0 - 27b20: 2000b6dc .word 0x2000b6dc - 27b24: 20005ffc .word 0x20005ffc - 27b28: 2000b5d4 .word 0x2000b5d4 - 27b2c: 2000b6e8 .word 0x2000b6e8 - 27b30: 2000b6e4 .word 0x2000b6e4 - -00027b34 : + 27bfe: 6035 str r5, [r6, #0] + 27c00: e797 b.n 27b32 + 27c02: bf00 nop + 27c04: 402e0200 .word 0x402e0200 + 27c08: 2000b700 .word 0x2000b700 + 27c0c: 2000b6fc .word 0x2000b6fc + 27c10: 20005ffc .word 0x20005ffc + 27c14: 2000b5f4 .word 0x2000b5f4 + 27c18: 2000b708 .word 0x2000b708 + 27c1c: 2000b704 .word 0x2000b704 + +00027c20 : for (Device_t *dev = devlist; dev; dev = dev->next) { - 27b34: 4b0b ldr r3, [pc, #44] ; (27b64 ) + 27c20: 4b0b ldr r3, [pc, #44] ; (27c50 ) { - 27b36: b570 push {r4, r5, r6, lr} + 27c22: b570 push {r4, r5, r6, lr} for (Device_t *dev = devlist; dev; dev = dev->next) { - 27b38: 681e ldr r6, [r3, #0] - 27b3a: b18e cbz r6, 27b60 - 27b3c: 4d0a ldr r5, [pc, #40] ; (27b68 ) + 27c24: 681e ldr r6, [r3, #0] + 27c26: b18e cbz r6, 27c4c + 27c28: 4d0a ldr r5, [pc, #40] ; (27c54 ) for (USBDriver *driver = dev->drivers; driver; driver = driver->next) { - 27b3e: 68f4 ldr r4, [r6, #12] - 27b40: b914 cbnz r4, 27b48 - 27b42: e00a b.n 27b5a - 27b44: 6864 ldr r4, [r4, #4] - 27b46: b144 cbz r4, 27b5a + 27c2a: 68f4 ldr r4, [r6, #12] + 27c2c: b914 cbnz r4, 27c34 + 27c2e: e00a b.n 27c46 + 27c30: 6864 ldr r4, [r4, #4] + 27c32: b144 cbz r4, 27c46 (driver->Task)(); - 27b48: 6823 ldr r3, [r4, #0] - 27b4a: 68db ldr r3, [r3, #12] - 27b4c: 42ab cmp r3, r5 - 27b4e: d0f9 beq.n 27b44 - 27b50: 4620 mov r0, r4 - 27b52: 4798 blx r3 + 27c34: 6823 ldr r3, [r4, #0] + 27c36: 68db ldr r3, [r3, #12] + 27c38: 42ab cmp r3, r5 + 27c3a: d0f9 beq.n 27c30 + 27c3c: 4620 mov r0, r4 + 27c3e: 4798 blx r3 for (USBDriver *driver = dev->drivers; driver; driver = driver->next) { - 27b54: 6864 ldr r4, [r4, #4] - 27b56: 2c00 cmp r4, #0 - 27b58: d1f6 bne.n 27b48 + 27c40: 6864 ldr r4, [r4, #4] + 27c42: 2c00 cmp r4, #0 + 27c44: d1f6 bne.n 27c34 for (Device_t *dev = devlist; dev; dev = dev->next) { - 27b5a: 68b6 ldr r6, [r6, #8] - 27b5c: 2e00 cmp r6, #0 - 27b5e: d1ee bne.n 27b3e + 27c46: 68b6 ldr r6, [r6, #8] + 27c48: 2e00 cmp r6, #0 + 27c4a: d1ee bne.n 27c2a } - 27b60: bd70 pop {r4, r5, r6, pc} - 27b62: bf00 nop - 27b64: 2000b6ec .word 0x2000b6ec - 27b68: 000000cd .word 0x000000cd + 27c4c: bd70 pop {r4, r5, r6, pc} + 27c4e: bf00 nop + 27c50: 2000b70c .word 0x2000b70c + 27c54: 000000cd .word 0x000000cd -00027b6c : +00027c58 : if (available_drivers == NULL) { - 27b6c: 4906 ldr r1, [pc, #24] ; (27b88 ) + 27c58: 4906 ldr r1, [pc, #24] ; (27c74 ) driver->device = NULL; - 27b6e: 2200 movs r2, #0 + 27c5a: 2200 movs r2, #0 if (available_drivers == NULL) { - 27b70: 680b ldr r3, [r1, #0] + 27c5c: 680b ldr r3, [r1, #0] driver->next = NULL; - 27b72: e9c0 2201 strd r2, r2, [r0, #4] + 27c5e: e9c0 2201 strd r2, r2, [r0, #4] if (available_drivers == NULL) { - 27b76: b12b cbz r3, 27b84 + 27c62: b12b cbz r3, 27c70 while (last->next) last = last->next; - 27b78: 461a mov r2, r3 - 27b7a: 685b ldr r3, [r3, #4] - 27b7c: 2b00 cmp r3, #0 - 27b7e: d1fb bne.n 27b78 + 27c64: 461a mov r2, r3 + 27c66: 685b ldr r3, [r3, #4] + 27c68: 2b00 cmp r3, #0 + 27c6a: d1fb bne.n 27c64 last->next = driver; - 27b80: 6050 str r0, [r2, #4] + 27c6c: 6050 str r0, [r2, #4] } - 27b82: 4770 bx lr + 27c6e: 4770 bx lr available_drivers = driver; - 27b84: 6008 str r0, [r1, #0] - 27b86: 4770 bx lr - 27b88: 2000b6d4 .word 0x2000b6d4 + 27c70: 6008 str r0, [r1, #0] + 27c72: 4770 bx lr + 27c74: 2000b6f4 .word 0x2000b6f4 -00027b8c : +00027c78 : { - 27b8c: b5f0 push {r4, r5, r6, r7, lr} - 27b8e: b083 sub sp, #12 - 27b90: 4607 mov r7, r0 - 27b92: 460e mov r6, r1 - 27b94: 4615 mov r5, r2 + 27c78: b5f0 push {r4, r5, r6, r7, lr} + 27c7a: b083 sub sp, #12 + 27c7c: 4607 mov r7, r0 + 27c7e: 460e mov r6, r1 + 27c80: 4615 mov r5, r2 dev = allocate_Device(); - 27b96: f000 fadf bl 28158 + 27c82: f000 fadf bl 28244 if (!dev) return NULL; - 27b9a: 4604 mov r4, r0 - 27b9c: b380 cbz r0, 27c00 + 27c86: 4604 mov r4, r0 + 27c88: b380 cbz r0, 27cec memset(dev, 0, sizeof(Device_t)); - 27b9e: 2224 movs r2, #36 ; 0x24 - 27ba0: 2100 movs r1, #0 - 27ba2: f006 fc73 bl 2e48c + 27c8a: 2224 movs r2, #36 ; 0x24 + 27c8c: 2100 movs r1, #0 + 27c8e: f006 fc71 bl 2e574 dev->control_pipe = new_Pipe(dev, 0, 0, 0, 8); - 27ba6: 2300 movs r3, #0 - 27ba8: 2108 movs r1, #8 + 27c92: 2300 movs r3, #0 + 27c94: 2108 movs r1, #8 dev->speed = speed; - 27baa: 7527 strb r7, [r4, #20] + 27c96: 7527 strb r7, [r4, #20] dev->control_pipe = new_Pipe(dev, 0, 0, 0, 8); - 27bac: 461a mov r2, r3 + 27c98: 461a mov r2, r3 dev->hub_address = hub_addr; - 27bae: 75a6 strb r6, [r4, #22] + 27c9a: 75a6 strb r6, [r4, #22] dev->hub_port = hub_port; - 27bb0: 75e5 strb r5, [r4, #23] + 27c9c: 75e5 strb r5, [r4, #23] dev->control_pipe = new_Pipe(dev, 0, 0, 0, 8); - 27bb2: 4620 mov r0, r4 - 27bb4: e9cd 1300 strd r1, r3, [sp] - 27bb8: 4619 mov r1, r3 - 27bba: f7ff fe07 bl 277cc - 27bbe: 4602 mov r2, r0 - 27bc0: 6020 str r0, [r4, #0] + 27c9e: 4620 mov r0, r4 + 27ca0: e9cd 1300 strd r1, r3, [sp] + 27ca4: 4619 mov r1, r3 + 27ca6: f7ff fe07 bl 278b8 + 27caa: 4602 mov r2, r0 + 27cac: 6020 str r0, [r4, #0] if (!dev->control_pipe) { - 27bc2: b320 cbz r0, 27c0e + 27cae: b320 cbz r0, 27cfa dev->strbuf = allocate_string_buffer(); // try to allocate a string buffer; - 27bc4: f000 faf8 bl 281b8 + 27cb0: f000 faf8 bl 282a4 dev->control_pipe->callback_function = &enumeration; - 27bc8: 6821 ldr r1, [r4, #0] - 27bca: 4a13 ldr r2, [pc, #76] ; (27c18 ) + 27cb4: 6821 ldr r1, [r4, #0] + 27cb6: 4a13 ldr r2, [pc, #76] ; (27d04 ) queue_Control_Transfer(dev, &enumsetup, enumbuf, NULL); - 27bcc: 2300 movs r3, #0 + 27cb8: 2300 movs r3, #0 dev->strbuf = allocate_string_buffer(); // try to allocate a string buffer; - 27bce: 6120 str r0, [r4, #16] + 27cba: 6120 str r0, [r4, #16] dev->control_pipe->callback_function = &enumeration; - 27bd0: 63ca str r2, [r1, #60] ; 0x3c + 27cbc: 63ca str r2, [r1, #60] ; 0x3c dev->control_pipe->direction = 1; // 1=IN - 27bd2: 2201 movs r2, #1 + 27cbe: 2201 movs r2, #1 USBHost::enumeration_busy = true; - 27bd4: 4811 ldr r0, [pc, #68] ; (27c1c ) + 27cc0: 4811 ldr r0, [pc, #68] ; (27d08 ) dev->control_pipe->direction = 1; // 1=IN - 27bd6: f881 2035 strb.w r2, [r1, #53] ; 0x35 + 27cc2: f881 2035 strb.w r2, [r1, #53] ; 0x35 USBHost::enumeration_busy = true; - 27bda: 7002 strb r2, [r0, #0] + 27cc6: 7002 strb r2, [r0, #0] s.word2 = wIndex | (wLength << 16); - 27bdc: f44f 2200 mov.w r2, #524288 ; 0x80000 + 27cc8: f44f 2200 mov.w r2, #524288 ; 0x80000 s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27be0: 490f ldr r1, [pc, #60] ; (27c20 ) + 27ccc: 490f ldr r1, [pc, #60] ; (27d0c ) s.word2 = wIndex | (wLength << 16); - 27be2: 4810 ldr r0, [pc, #64] ; (27c24 ) - 27be4: e9c1 0200 strd r0, r2, [r1] + 27cce: 4810 ldr r0, [pc, #64] ; (27d10 ) + 27cd0: e9c1 0200 strd r0, r2, [r1] queue_Control_Transfer(dev, &enumsetup, enumbuf, NULL); - 27be8: 4a0f ldr r2, [pc, #60] ; (27c28 ) - 27bea: 4620 mov r0, r4 - 27bec: f7ff f9ba bl 26f64 + 27cd4: 4a0f ldr r2, [pc, #60] ; (27d14 ) + 27cd6: 4620 mov r0, r4 + 27cd8: f7ff f9ba bl 27050 if (devlist == NULL) { - 27bf0: 4a0e ldr r2, [pc, #56] ; (27c2c ) - 27bf2: 6813 ldr r3, [r2, #0] - 27bf4: b13b cbz r3, 27c06 + 27cdc: 4a0e ldr r2, [pc, #56] ; (27d18 ) + 27cde: 6813 ldr r3, [r2, #0] + 27ce0: b13b cbz r3, 27cf2 for (p = devlist; p->next; p = p->next) ; // walk devlist - 27bf6: 461a mov r2, r3 - 27bf8: 689b ldr r3, [r3, #8] - 27bfa: 2b00 cmp r3, #0 - 27bfc: d1fb bne.n 27bf6 + 27ce2: 461a mov r2, r3 + 27ce4: 689b ldr r3, [r3, #8] + 27ce6: 2b00 cmp r3, #0 + 27ce8: d1fb bne.n 27ce2 p->next = dev; - 27bfe: 6094 str r4, [r2, #8] + 27cea: 6094 str r4, [r2, #8] } - 27c00: 4620 mov r0, r4 - 27c02: b003 add sp, #12 - 27c04: bdf0 pop {r4, r5, r6, r7, pc} - 27c06: 4620 mov r0, r4 + 27cec: 4620 mov r0, r4 + 27cee: b003 add sp, #12 + 27cf0: bdf0 pop {r4, r5, r6, r7, pc} + 27cf2: 4620 mov r0, r4 devlist = dev; - 27c08: 6014 str r4, [r2, #0] + 27cf4: 6014 str r4, [r2, #0] } - 27c0a: b003 add sp, #12 - 27c0c: bdf0 pop {r4, r5, r6, r7, pc} + 27cf6: b003 add sp, #12 + 27cf8: bdf0 pop {r4, r5, r6, r7, pc} free_Device(dev); - 27c0e: 4620 mov r0, r4 + 27cfa: 4620 mov r0, r4 return NULL; - 27c10: 4614 mov r4, r2 + 27cfc: 4614 mov r4, r2 free_Device(dev); - 27c12: f000 faa9 bl 28168 + 27cfe: f000 faa9 bl 28254 return NULL; - 27c16: e7f3 b.n 27c00 - 27c18: 00027dc1 .word 0x00027dc1 - 27c1c: 2000bc7d .word 0x2000bc7d - 27c20: 2000af20 .word 0x2000af20 - 27c24: 01000680 .word 0x01000680 - 27c28: 2000a720 .word 0x2000a720 - 27c2c: 2000b6ec .word 0x2000b6ec - -00027c30 : + 27d02: e7f3 b.n 27cec + 27d04: 00027ead .word 0x00027ead + 27d08: 2000bc9d .word 0x2000bc9d + 27d0c: 2000af40 .word 0x2000af40 + 27d10: 01000680 .word 0x01000680 + 27d14: 2000a740 .word 0x2000a740 + 27d18: 2000b70c .word 0x2000b70c + +00027d1c : void USBHost::convertStringDescriptorToASCIIString(uint8_t string_index, Device_t *dev, const Transfer_t *transfer) { - 27c30: b570 push {r4, r5, r6, lr} + 27d1c: b570 push {r4, r5, r6, lr} strbuf_t *strbuf = dev->strbuf; - 27c32: 690d ldr r5, [r1, #16] + 27d1e: 690d ldr r5, [r1, #16] if (!strbuf) return; // don't have a buffer - 27c34: b39d cbz r5, 27c9e + 27d20: b39d cbz r5, 27d8a uint8_t *buffer = (uint8_t*)transfer->buffer; - 27c36: 6ad6 ldr r6, [r2, #44] ; 0x2c + 27d22: 6ad6 ldr r6, [r2, #44] ; 0x2c uint8_t buf_index = string_index? strbuf->iStrings[string_index]+1 : 0; - 27c38: b390 cbz r0, 27ca0 - 27c3a: 5c29 ldrb r1, [r5, r0] - 27c3c: 3101 adds r1, #1 - 27c3e: b2c9 uxtb r1, r1 + 27d24: b390 cbz r0, 27d8c + 27d26: 5c29 ldrb r1, [r5, r0] + 27d28: 3101 adds r1, #1 + 27d2a: b2c9 uxtb r1, r1 if (!buffer || (buffer[1] != 0x3)) { - 27c40: b36e cbz r6, 27c9e - 27c42: 7873 ldrb r3, [r6, #1] - 27c44: 2b03 cmp r3, #3 - 27c46: d12a bne.n 27c9e + 27d2c: b36e cbz r6, 27d8a + 27d2e: 7873 ldrb r3, [r6, #1] + 27d30: 2b03 cmp r3, #3 + 27d32: d12a bne.n 27d8a strbuf->iStrings[string_index] = buf_index; // remember our starting positio - 27c48: 5429 strb r1, [r5, r0] + 27d34: 5429 strb r1, [r5, r0] uint8_t count_bytes_returned = buffer[0]; - 27c4a: 7834 ldrb r4, [r6, #0] + 27d36: 7834 ldrb r4, [r6, #0] if ((buf_index + count_bytes_returned/2) >= DEVICE_STRUCT_STRING_BUF_SIZE) - 27c4c: eb01 0354 add.w r3, r1, r4, lsr #1 - 27c50: 2b31 cmp r3, #49 ; 0x31 - 27c52: dc27 bgt.n 27ca4 + 27d38: eb01 0354 add.w r3, r1, r4, lsr #1 + 27d3c: 2b31 cmp r3, #49 ; 0x31 + 27d3e: dc27 bgt.n 27d90 for (uint8_t i = 2; (i < count_bytes_returned) && (buf_index < (DEVICE_STRUCT_STRING_BUF_SIZE -1)); i += 2) { - 27c54: 2c02 cmp r4, #2 - 27c56: d913 bls.n 27c80 - 27c58: 2930 cmp r1, #48 ; 0x30 - 27c5a: d811 bhi.n 27c80 - 27c5c: f04f 0c02 mov.w ip, #2 - 27c60: f10c 0202 add.w r2, ip, #2 - 27c64: 460b mov r3, r1 + 27d40: 2c02 cmp r4, #2 + 27d42: d913 bls.n 27d6c + 27d44: 2930 cmp r1, #48 ; 0x30 + 27d46: d811 bhi.n 27d6c + 27d48: f04f 0c02 mov.w ip, #2 + 27d4c: f10c 0202 add.w r2, ip, #2 + 27d50: 460b mov r3, r1 strbuf->buffer[buf_index++] = buffer[i]; - 27c66: f816 e00c ldrb.w lr, [r6, ip] - 27c6a: 3101 adds r1, #1 + 27d52: f816 e00c ldrb.w lr, [r6, ip] + 27d56: 3101 adds r1, #1 for (uint8_t i = 2; (i < count_bytes_returned) && (buf_index < (DEVICE_STRUCT_STRING_BUF_SIZE -1)); i += 2) { - 27c6c: fa5f fc82 uxtb.w ip, r2 + 27d58: fa5f fc82 uxtb.w ip, r2 strbuf->buffer[buf_index++] = buffer[i]; - 27c70: 442b add r3, r5 - 27c72: b2c9 uxtb r1, r1 + 27d5c: 442b add r3, r5 + 27d5e: b2c9 uxtb r1, r1 for (uint8_t i = 2; (i < count_bytes_returned) && (buf_index < (DEVICE_STRUCT_STRING_BUF_SIZE -1)); i += 2) { - 27c74: 4564 cmp r4, ip + 27d60: 4564 cmp r4, ip strbuf->buffer[buf_index++] = buffer[i]; - 27c76: f883 e003 strb.w lr, [r3, #3] + 27d62: f883 e003 strb.w lr, [r3, #3] for (uint8_t i = 2; (i < count_bytes_returned) && (buf_index < (DEVICE_STRUCT_STRING_BUF_SIZE -1)); i += 2) { - 27c7a: d901 bls.n 27c80 - 27c7c: 2930 cmp r1, #48 ; 0x30 - 27c7e: d9ef bls.n 27c60 + 27d66: d901 bls.n 27d6c + 27d68: 2930 cmp r1, #48 ; 0x30 + 27d6a: d9ef bls.n 27d4c strbuf->buffer[buf_index] = 0; // null terminate. - 27c80: 186b adds r3, r5, r1 - 27c82: 2200 movs r2, #0 - 27c84: 70da strb r2, [r3, #3] + 27d6c: 186b adds r3, r5, r1 + 27d6e: 2200 movs r2, #0 + 27d70: 70da strb r2, [r3, #3] while (++string_index < 3) { - 27c86: 1c43 adds r3, r0, #1 - 27c88: b2db uxtb r3, r3 - 27c8a: 2b02 cmp r3, #2 - 27c8c: d807 bhi.n 27c9e + 27d72: 1c43 adds r3, r0, #1 + 27d74: b2db uxtb r3, r3 + 27d76: 2b02 cmp r3, #2 + 27d78: d807 bhi.n 27d8a strbuf->iStrings[string_index] = buf_index; // point to trailing NULL character - 27c8e: f1c0 0202 rsb r2, r0, #2 - 27c92: 18e8 adds r0, r5, r3 - 27c94: b2d2 uxtb r2, r2 + 27d7a: f1c0 0202 rsb r2, r0, #2 + 27d7e: 18e8 adds r0, r5, r3 + 27d80: b2d2 uxtb r2, r2 } - 27c96: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 27d82: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} strbuf->iStrings[string_index] = buf_index; // point to trailing NULL character - 27c9a: f006 bbf7 b.w 2e48c + 27d86: f006 bbf5 b.w 2e574 } - 27c9e: bd70 pop {r4, r5, r6, pc} + 27d8a: bd70 pop {r4, r5, r6, pc} uint8_t buf_index = string_index? strbuf->iStrings[string_index]+1 : 0; - 27ca0: 4601 mov r1, r0 - 27ca2: e7cd b.n 27c40 + 27d8c: 4601 mov r1, r0 + 27d8e: e7cd b.n 27d2c count_bytes_returned = (DEVICE_STRUCT_STRING_BUF_SIZE - buf_index) * 2; - 27ca4: f1c1 0432 rsb r4, r1, #50 ; 0x32 - 27ca8: 0064 lsls r4, r4, #1 - 27caa: b2e4 uxtb r4, r4 - 27cac: e7d2 b.n 27c54 - 27cae: bf00 nop + 27d90: f1c1 0432 rsb r4, r1, #50 ; 0x32 + 27d94: 0064 lsls r4, r4, #1 + 27d96: b2e4 uxtb r4, r4 + 27d98: e7d2 b.n 27d40 + 27d9a: bf00 nop -00027cb0 : +00027d9c : for (driver=available_drivers; driver != NULL; driver = driver->next) { - 27cb0: 4b3f ldr r3, [pc, #252] ; (27db0 ) + 27d9c: 4b3f ldr r3, [pc, #252] ; (27e9c ) { - 27cb2: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 27d9e: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} for (driver=available_drivers; driver != NULL; driver = driver->next) { - 27cb6: 681c ldr r4, [r3, #0] + 27da2: 681c ldr r4, [r3, #0] { - 27cb8: b083 sub sp, #12 - 27cba: 4606 mov r6, r0 + 27da4: b083 sub sp, #12 + 27da6: 4606 mov r6, r0 for (driver=available_drivers; driver != NULL; driver = driver->next) { - 27cbc: 2c00 cmp r4, #0 - 27cbe: d073 beq.n 27da8 + 27da8: 2c00 cmp r4, #0 + 27daa: d073 beq.n 27e94 USBDriver *driver, *prev=NULL; - 27cc0: f04f 0900 mov.w r9, #0 - 27cc4: f8df 80f4 ldr.w r8, [pc, #244] ; 27dbc + 27dac: f04f 0900 mov.w r9, #0 + 27db0: f8df 80f4 ldr.w r8, [pc, #244] ; 27ea8 if (driver->claim(dev, 0, enumbuf + 9, enumlen - 9)) { - 27cc8: 4f3a ldr r7, [pc, #232] ; (27db4 ) - 27cca: e001 b.n 27cd0 + 27db4: 4f3a ldr r7, [pc, #232] ; (27ea0 ) + 27db6: e001 b.n 27dbc for (driver=available_drivers; driver != NULL; driver = driver->next) { - 27ccc: 6864 ldr r4, [r4, #4] - 27cce: b1a4 cbz r4, 27cfa + 27db8: 6864 ldr r4, [r4, #4] + 27dba: b1a4 cbz r4, 27de6 if (driver->device != NULL) continue; - 27cd0: 68a2 ldr r2, [r4, #8] + 27dbc: 68a2 ldr r2, [r4, #8] if (driver->claim(dev, 0, enumbuf + 9, enumlen - 9)) { - 27cd2: 4620 mov r0, r4 - 27cd4: 463b mov r3, r7 - 27cd6: 4631 mov r1, r6 + 27dbe: 4620 mov r0, r4 + 27dc0: 463b mov r3, r7 + 27dc2: 4631 mov r1, r6 if (driver->device != NULL) continue; - 27cd8: 2a00 cmp r2, #0 - 27cda: d1f7 bne.n 27ccc + 27dc4: 2a00 cmp r2, #0 + 27dc6: d1f7 bne.n 27db8 if (driver->claim(dev, 0, enumbuf + 9, enumlen - 9)) { - 27cdc: f8b8 5000 ldrh.w r5, [r8] - 27ce0: f8d4 c000 ldr.w ip, [r4] - 27ce4: 3d09 subs r5, #9 - 27ce6: 9500 str r5, [sp, #0] - 27ce8: f8dc 5000 ldr.w r5, [ip] - 27cec: 47a8 blx r5 - 27cee: 2800 cmp r0, #0 - 27cf0: d147 bne.n 27d82 - 27cf2: 46a1 mov r9, r4 + 27dc8: f8b8 5000 ldrh.w r5, [r8] + 27dcc: f8d4 c000 ldr.w ip, [r4] + 27dd0: 3d09 subs r5, #9 + 27dd2: 9500 str r5, [sp, #0] + 27dd4: f8dc 5000 ldr.w r5, [ip] + 27dd8: 47a8 blx r5 + 27dda: 2800 cmp r0, #0 + 27ddc: d147 bne.n 27e6e + 27dde: 46a1 mov r9, r4 for (driver=available_drivers; driver != NULL; driver = driver->next) { - 27cf4: 6864 ldr r4, [r4, #4] - 27cf6: 2c00 cmp r4, #0 - 27cf8: d1ea bne.n 27cd0 + 27de0: 6864 ldr r4, [r4, #4] + 27de2: 2c00 cmp r4, #0 + 27de4: d1ea bne.n 27dbc const uint8_t *end = enumbuf + enumlen; - 27cfa: 4b2f ldr r3, [pc, #188] ; (27db8 ) - 27cfc: f8b8 2000 ldrh.w r2, [r8] + 27de6: 4b2f ldr r3, [pc, #188] ; (27ea4 ) + 27de8: f8b8 2000 ldrh.w r2, [r8] while (p < end) { - 27d00: f103 0509 add.w r5, r3, #9 + 27dec: f103 0509 add.w r5, r3, #9 const uint8_t *end = enumbuf + enumlen; - 27d04: eb03 0902 add.w r9, r3, r2 + 27df0: eb03 0902 add.w r9, r3, r2 while (p < end) { - 27d08: 45a9 cmp r9, r5 - 27d0a: d803 bhi.n 27d14 - 27d0c: e043 b.n 27d96 + 27df4: 45a9 cmp r9, r5 + 27df6: d803 bhi.n 27e00 + 27df8: e043 b.n 27e82 p += desclen; - 27d0e: 4445 add r5, r8 + 27dfa: 4445 add r5, r8 while (p < end) { - 27d10: 45a9 cmp r9, r5 - 27d12: d940 bls.n 27d96 + 27dfc: 45a9 cmp r9, r5 + 27dfe: d940 bls.n 27e82 if (desctype == 4 && desclen == 9) { - 27d14: 786b ldrb r3, [r5, #1] + 27e00: 786b ldrb r3, [r5, #1] uint8_t desclen = *p; - 27d16: f895 8000 ldrb.w r8, [r5] + 27e02: f895 8000 ldrb.w r8, [r5] if (desctype == 4 && desclen == 9) { - 27d1a: 2b04 cmp r3, #4 - 27d1c: d1f7 bne.n 27d0e - 27d1e: f1b8 0f09 cmp.w r8, #9 - 27d22: d1f4 bne.n 27d0e + 27e06: 2b04 cmp r3, #4 + 27e08: d1f7 bne.n 27dfa + 27e0a: f1b8 0f09 cmp.w r8, #9 + 27e0e: d1f4 bne.n 27dfa for (driver=available_drivers; driver != NULL; driver = driver->next) { - 27d24: 4b22 ldr r3, [pc, #136] ; (27db0 ) - 27d26: 681c ldr r4, [r3, #0] - 27d28: 2c00 cmp r4, #0 - 27d2a: d0f0 beq.n 27d0e + 27e10: 4b22 ldr r3, [pc, #136] ; (27e9c ) + 27e12: 681c ldr r4, [r3, #0] + 27e14: 2c00 cmp r4, #0 + 27e16: d0f0 beq.n 27dfa if (driver->device != NULL) continue; - 27d2c: 68a7 ldr r7, [r4, #8] + 27e18: 68a7 ldr r7, [r4, #8] prev = NULL; - 27d2e: f04f 0a00 mov.w sl, #0 + 27e1a: f04f 0a00 mov.w sl, #0 if (driver->claim(dev, 1, p, end - p)) { - 27d32: eba9 0b05 sub.w fp, r9, r5 - 27d36: 4620 mov r0, r4 - 27d38: 462b mov r3, r5 - 27d3a: 2201 movs r2, #1 - 27d3c: 4631 mov r1, r6 + 27e1e: eba9 0b05 sub.w fp, r9, r5 + 27e22: 4620 mov r0, r4 + 27e24: 462b mov r3, r5 + 27e26: 2201 movs r2, #1 + 27e28: 4631 mov r1, r6 if (driver->device != NULL) continue; - 27d3e: b14f cbz r7, 27d54 + 27e2a: b14f cbz r7, 27e40 prev->next = driver->next; - 27d40: 6864 ldr r4, [r4, #4] + 27e2c: 6864 ldr r4, [r4, #4] for (driver=available_drivers; driver != NULL; driver = driver->next) { - 27d42: 2c00 cmp r4, #0 - 27d44: d0e3 beq.n 27d0e + 27e2e: 2c00 cmp r4, #0 + 27e30: d0e3 beq.n 27dfa if (driver->device != NULL) continue; - 27d46: 68a7 ldr r7, [r4, #8] + 27e32: 68a7 ldr r7, [r4, #8] if (driver->claim(dev, 1, p, end - p)) { - 27d48: 4620 mov r0, r4 - 27d4a: 462b mov r3, r5 - 27d4c: 2201 movs r2, #1 - 27d4e: 4631 mov r1, r6 + 27e34: 4620 mov r0, r4 + 27e36: 462b mov r3, r5 + 27e38: 2201 movs r2, #1 + 27e3a: 4631 mov r1, r6 if (driver->device != NULL) continue; - 27d50: 2f00 cmp r7, #0 - 27d52: d1f5 bne.n 27d40 + 27e3c: 2f00 cmp r7, #0 + 27e3e: d1f5 bne.n 27e2c if (driver->claim(dev, 1, p, end - p)) { - 27d54: 6827 ldr r7, [r4, #0] - 27d56: f8cd b000 str.w fp, [sp] - 27d5a: 683f ldr r7, [r7, #0] - 27d5c: 47b8 blx r7 - 27d5e: b908 cbnz r0, 27d64 + 27e40: 6827 ldr r7, [r4, #0] + 27e42: f8cd b000 str.w fp, [sp] + 27e46: 683f ldr r7, [r7, #0] + 27e48: 47b8 blx r7 + 27e4a: b908 cbnz r0, 27e50 prev->next = driver->next; - 27d60: 46a2 mov sl, r4 - 27d62: e7ed b.n 27d40 - 27d64: 6863 ldr r3, [r4, #4] + 27e4c: 46a2 mov sl, r4 + 27e4e: e7ed b.n 27e2c + 27e50: 6863 ldr r3, [r4, #4] if (prev) { - 27d66: f1ba 0f00 cmp.w sl, #0 - 27d6a: d017 beq.n 27d9c + 27e52: f1ba 0f00 cmp.w sl, #0 + 27e56: d017 beq.n 27e88 prev->next = driver->next; - 27d6c: f8ca 3004 str.w r3, [sl, #4] + 27e58: f8ca 3004 str.w r3, [sl, #4] driver->next = dev->drivers; - 27d70: 68f3 ldr r3, [r6, #12] - 27d72: 46a2 mov sl, r4 - 27d74: 6063 str r3, [r4, #4] + 27e5c: 68f3 ldr r3, [r6, #12] + 27e5e: 46a2 mov sl, r4 + 27e60: 6063 str r3, [r4, #4] dev->drivers = driver; - 27d76: 60f4 str r4, [r6, #12] + 27e62: 60f4 str r4, [r6, #12] driver->device = dev; - 27d78: 60a6 str r6, [r4, #8] - 27d7a: 461c mov r4, r3 + 27e64: 60a6 str r6, [r4, #8] + 27e66: 461c mov r4, r3 for (driver=available_drivers; driver != NULL; driver = driver->next) { - 27d7c: 2c00 cmp r4, #0 - 27d7e: d1e2 bne.n 27d46 - 27d80: e7c5 b.n 27d0e + 27e68: 2c00 cmp r4, #0 + 27e6a: d1e2 bne.n 27e32 + 27e6c: e7c5 b.n 27dfa prev->next = driver->next; - 27d82: 6863 ldr r3, [r4, #4] + 27e6e: 6863 ldr r3, [r4, #4] if (prev) { - 27d84: f1b9 0f00 cmp.w r9, #0 - 27d88: d00b beq.n 27da2 + 27e70: f1b9 0f00 cmp.w r9, #0 + 27e74: d00b beq.n 27e8e prev->next = driver->next; - 27d8a: f8c9 3004 str.w r3, [r9, #4] + 27e76: f8c9 3004 str.w r3, [r9, #4] driver->next = NULL; - 27d8e: 2300 movs r3, #0 - 27d90: e9c4 3601 strd r3, r6, [r4, #4] + 27e7a: 2300 movs r3, #0 + 27e7c: e9c4 3601 strd r3, r6, [r4, #4] dev->drivers = driver; - 27d94: 60f4 str r4, [r6, #12] + 27e80: 60f4 str r4, [r6, #12] } - 27d96: b003 add sp, #12 - 27d98: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 27e82: b003 add sp, #12 + 27e84: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} available_drivers = driver->next; - 27d9c: 4a04 ldr r2, [pc, #16] ; (27db0 ) - 27d9e: 6013 str r3, [r2, #0] - 27da0: e7e6 b.n 27d70 + 27e88: 4a04 ldr r2, [pc, #16] ; (27e9c ) + 27e8a: 6013 str r3, [r2, #0] + 27e8c: e7e6 b.n 27e5c available_drivers = driver->next; - 27da2: 4a03 ldr r2, [pc, #12] ; (27db0 ) - 27da4: 6013 str r3, [r2, #0] - 27da6: e7f2 b.n 27d8e - 27da8: f8df 8010 ldr.w r8, [pc, #16] ; 27dbc - 27dac: e7a5 b.n 27cfa - 27dae: bf00 nop - 27db0: 2000b6d4 .word 0x2000b6d4 - 27db4: 2000a729 .word 0x2000a729 - 27db8: 2000a720 .word 0x2000a720 - 27dbc: 2000bc6c .word 0x2000bc6c - -00027dc0 : + 27e8e: 4a03 ldr r2, [pc, #12] ; (27e9c ) + 27e90: 6013 str r3, [r2, #0] + 27e92: e7f2 b.n 27e7a + 27e94: f8df 8010 ldr.w r8, [pc, #16] ; 27ea8 + 27e98: e7a5 b.n 27de6 + 27e9a: bf00 nop + 27e9c: 2000b6f4 .word 0x2000b6f4 + 27ea0: 2000a749 .word 0x2000a749 + 27ea4: 2000a740 .word 0x2000a740 + 27ea8: 2000bc8c .word 0x2000bc8c + +00027eac : { - 27dc0: b570 push {r4, r5, r6, lr} - 27dc2: 4604 mov r4, r0 + 27eac: b570 push {r4, r5, r6, lr} + 27eae: 4604 mov r4, r0 if (transfer->driver) { - 27dc4: 6bc0 ldr r0, [r0, #60] ; 0x3c - 27dc6: b128 cbz r0, 27dd4 + 27eb0: 6bc0 ldr r0, [r0, #60] ; 0x3c + 27eb2: b128 cbz r0, 27ec0 transfer->driver->control(transfer); - 27dc8: 6803 ldr r3, [r0, #0] - 27dca: 4a98 ldr r2, [pc, #608] ; (2802c ) - 27dcc: 685b ldr r3, [r3, #4] - 27dce: 4293 cmp r3, r2 - 27dd0: d117 bne.n 27e02 + 27eb4: 6803 ldr r3, [r0, #0] + 27eb6: 4a98 ldr r2, [pc, #608] ; (28118 ) + 27eb8: 685b ldr r3, [r3, #4] + 27eba: 4293 cmp r3, r2 + 27ebc: d117 bne.n 27eee } - 27dd2: bd70 pop {r4, r5, r6, pc} + 27ebe: bd70 pop {r4, r5, r6, pc} dev = transfer->pipe->device; - 27dd4: 6aa3 ldr r3, [r4, #40] ; 0x28 + 27ec0: 6aa3 ldr r3, [r4, #40] ; 0x28 if (enumbuf[2]) dev->enum_state = 9; - 27dd6: 4e96 ldr r6, [pc, #600] ; (28030 ) + 27ec2: 4e96 ldr r6, [pc, #600] ; (2811c ) dev = transfer->pipe->device; - 27dd8: 6b1d ldr r5, [r3, #48] ; 0x30 + 27ec4: 6b1d ldr r5, [r3, #48] ; 0x30 switch (dev->enum_state) { - 27dda: 7e2b ldrb r3, [r5, #24] - 27ddc: 2b0e cmp r3, #14 - 27dde: d8f8 bhi.n 27dd2 - 27de0: e8df f013 tbh [pc, r3, lsl #1] - 27de4: 0044001c .word 0x0044001c - 27de8: 0071005a .word 0x0071005a - 27dec: 0088007e .word 0x0088007e - 27df0: 00a6009b .word 0x00a6009b - 27df4: 010100f5 .word 0x010100f5 - 27df8: 00bf00b9 .word 0x00bf00b9 - 27dfc: 00e100cd .word 0x00e100cd - 27e00: 0013 .short 0x0013 + 27ec6: 7e2b ldrb r3, [r5, #24] + 27ec8: 2b0e cmp r3, #14 + 27eca: d8f8 bhi.n 27ebe + 27ecc: e8df f013 tbh [pc, r3, lsl #1] + 27ed0: 0044001c .word 0x0044001c + 27ed4: 0071005a .word 0x0071005a + 27ed8: 0088007e .word 0x0088007e + 27edc: 00a6009b .word 0x00a6009b + 27ee0: 010100f5 .word 0x010100f5 + 27ee4: 00bf00b9 .word 0x00bf00b9 + 27ee8: 00e100cd .word 0x00e100cd + 27eec: 0013 .short 0x0013 transfer->driver->control(transfer); - 27e02: 4621 mov r1, r4 + 27eee: 4621 mov r1, r4 } - 27e04: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 27ef0: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} transfer->driver->control(transfer); - 27e08: 4718 bx r3 + 27ef4: 4718 bx r3 claim_drivers(dev); - 27e0a: 4628 mov r0, r5 - 27e0c: f7ff ff50 bl 27cb0 + 27ef6: 4628 mov r0, r5 + 27ef8: f7ff ff50 bl 27d9c dev->enum_state = 15; - 27e10: 210f movs r1, #15 + 27efc: 210f movs r1, #15 USBHost::enumeration_busy = false; - 27e12: 4b88 ldr r3, [pc, #544] ; (28034 ) - 27e14: 2200 movs r2, #0 + 27efe: 4b88 ldr r3, [pc, #544] ; (28120 ) + 27f00: 2200 movs r2, #0 dev->enum_state = 15; - 27e16: 7629 strb r1, [r5, #24] + 27f02: 7629 strb r1, [r5, #24] USBHost::enumeration_busy = false; - 27e18: 701a strb r2, [r3, #0] + 27f04: 701a strb r2, [r3, #0] } - 27e1a: bd70 pop {r4, r5, r6, pc} + 27f06: bd70 pop {r4, r5, r6, pc} pipe_set_maxlen(dev->control_pipe, enumbuf[7]); - 27e1c: 682a ldr r2, [r5, #0] - 27e1e: 4984 ldr r1, [pc, #528] ; (28030 ) + 27f08: 682a ldr r2, [r5, #0] + 27f0a: 4984 ldr r1, [pc, #528] ; (2811c ) static void pipe_set_maxlen(Pipe_t *pipe, uint32_t maxlen) { pipe->qh.capabilities[0] = (pipe->qh.capabilities[0] & 0xF800FFFF) | (maxlen << 16); - 27e20: 6850 ldr r0, [r2, #4] - 27e22: 4b85 ldr r3, [pc, #532] ; (28038 ) + 27f0c: 6850 ldr r0, [r2, #4] + 27f0e: 4b85 ldr r3, [pc, #532] ; (28124 ) pipe_set_maxlen(dev->control_pipe, enumbuf[7]); - 27e24: 79c9 ldrb r1, [r1, #7] + 27f10: 79c9 ldrb r1, [r1, #7] pipe->qh.capabilities[0] = (pipe->qh.capabilities[0] & 0xF800FFFF) | (maxlen << 16); - 27e26: 4003 ands r3, r0 + 27f12: 4003 ands r3, r0 uint32_t addr = last_assigned_address; - 27e28: 4c84 ldr r4, [pc, #528] ; (2803c ) + 27f14: 4c84 ldr r4, [pc, #528] ; (28128 ) pipe->qh.capabilities[0] = (pipe->qh.capabilities[0] & 0xF800FFFF) | (maxlen << 16); - 27e2a: ea43 4301 orr.w r3, r3, r1, lsl #16 + 27f16: ea43 4301 orr.w r3, r3, r1, lsl #16 for (Device_t *p = devlist; p; p = p->next) { - 27e2e: 4984 ldr r1, [pc, #528] ; (28040 ) + 27f1a: 4984 ldr r1, [pc, #528] ; (2812c ) uint32_t addr = last_assigned_address; - 27e30: 7820 ldrb r0, [r4, #0] + 27f1c: 7820 ldrb r0, [r4, #0] for (Device_t *p = devlist; p; p = p->next) { - 27e32: 6809 ldr r1, [r1, #0] + 27f1e: 6809 ldr r1, [r1, #0] pipe->qh.capabilities[0] = (pipe->qh.capabilities[0] & 0xF800FFFF) | (maxlen << 16); - 27e34: 6053 str r3, [r2, #4] + 27f20: 6053 str r3, [r2, #4] if (++addr > 127) addr = 1; - 27e36: 3001 adds r0, #1 - 27e38: 2880 cmp r0, #128 ; 0x80 - 27e3a: bf28 it cs - 27e3c: 2001 movcs r0, #1 + 27f22: 3001 adds r0, #1 + 27f24: 2880 cmp r0, #128 ; 0x80 + 27f26: bf28 it cs + 27f28: 2001 movcs r0, #1 for (Device_t *p = devlist; p; p = p->next) { - 27e3e: b131 cbz r1, 27e4e - 27e40: 460b mov r3, r1 + 27f2a: b131 cbz r1, 27f3a + 27f2c: 460b mov r3, r1 if (p->address == addr) return true; - 27e42: 7d5a ldrb r2, [r3, #21] - 27e44: 4282 cmp r2, r0 - 27e46: d0f6 beq.n 27e36 + 27f2e: 7d5a ldrb r2, [r3, #21] + 27f30: 4282 cmp r2, r0 + 27f32: d0f6 beq.n 27f22 for (Device_t *p = devlist; p; p = p->next) { - 27e48: 689b ldr r3, [r3, #8] - 27e4a: 2b00 cmp r3, #0 - 27e4c: d1f9 bne.n 27e42 + 27f34: 689b ldr r3, [r3, #8] + 27f36: 2b00 cmp r3, #0 + 27f38: d1f9 bne.n 27f2e s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27e4e: 0403 lsls r3, r0, #16 - 27e50: 497c ldr r1, [pc, #496] ; (28044 ) + 27f3a: 0403 lsls r3, r0, #16 + 27f3c: 497c ldr r1, [pc, #496] ; (28130 ) last_assigned_address = addr; - 27e52: 7020 strb r0, [r4, #0] + 27f3e: 7020 strb r0, [r4, #0] queue_Control_Transfer(dev, &enumsetup, NULL, NULL); - 27e54: 4628 mov r0, r5 - 27e56: f443 63a0 orr.w r3, r3, #1280 ; 0x500 - 27e5a: 600b str r3, [r1, #0] + 27f40: 4628 mov r0, r5 + 27f42: f443 63a0 orr.w r3, r3, #1280 ; 0x500 + 27f46: 600b str r3, [r1, #0] s.word2 = wIndex | (wLength << 16); - 27e5c: 2300 movs r3, #0 - 27e5e: 461a mov r2, r3 - 27e60: 604b str r3, [r1, #4] - 27e62: f7ff f87f bl 26f64 + 27f48: 2300 movs r3, #0 + 27f4a: 461a mov r2, r3 + 27f4c: 604b str r3, [r1, #4] + 27f4e: f7ff f87f bl 27050 dev->enum_state = 1; - 27e66: 2301 movs r3, #1 - 27e68: 762b strb r3, [r5, #24] + 27f52: 2301 movs r3, #1 + 27f54: 762b strb r3, [r5, #24] } - 27e6a: bd70 pop {r4, r5, r6, pc} + 27f56: bd70 pop {r4, r5, r6, pc} dev->address = enumsetup.wValue; - 27e6c: 4975 ldr r1, [pc, #468] ; (28044 ) - 27e6e: f44f 1490 mov.w r4, #1179648 ; 0x120000 + 27f58: 4975 ldr r1, [pc, #468] ; (28130 ) + 27f5a: f44f 1490 mov.w r4, #1179648 ; 0x120000 pipe_set_addr(dev->control_pipe, enumsetup.wValue); - 27e72: 682a ldr r2, [r5, #0] + 27f5e: 682a ldr r2, [r5, #0] dev->address = enumsetup.wValue; - 27e74: 8848 ldrh r0, [r1, #2] + 27f60: 8848 ldrh r0, [r1, #2] s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27e76: 4b74 ldr r3, [pc, #464] ; (28048 ) - 27e78: 7568 strb r0, [r5, #21] - 27e7a: 600b str r3, [r1, #0] + 27f62: 4b74 ldr r3, [pc, #464] ; (28134 ) + 27f64: 7568 strb r0, [r5, #21] + 27f66: 600b str r3, [r1, #0] } static void pipe_set_addr(Pipe_t *pipe, uint32_t addr) { pipe->qh.capabilities[0] = (pipe->qh.capabilities[0] & 0xFFFFFF80) | addr; - 27e7c: 6853 ldr r3, [r2, #4] - 27e7e: f023 037f bic.w r3, r3, #127 ; 0x7f - 27e82: 4303 orrs r3, r0 + 27f68: 6853 ldr r3, [r2, #4] + 27f6a: f023 037f bic.w r3, r3, #127 ; 0x7f + 27f6e: 4303 orrs r3, r0 queue_Control_Transfer(dev, &enumsetup, enumbuf, NULL); - 27e84: 4628 mov r0, r5 + 27f70: 4628 mov r0, r5 pipe->qh.capabilities[0] = (pipe->qh.capabilities[0] & 0xFFFFFF80) | addr; - 27e86: 6053 str r3, [r2, #4] + 27f72: 6053 str r3, [r2, #4] queue_Control_Transfer(dev, &enumsetup, enumbuf, NULL); - 27e88: 2300 movs r3, #0 - 27e8a: 4a69 ldr r2, [pc, #420] ; (28030 ) + 27f74: 2300 movs r3, #0 + 27f76: 4a69 ldr r2, [pc, #420] ; (2811c ) s.word2 = wIndex | (wLength << 16); - 27e8c: 604c str r4, [r1, #4] - 27e8e: f7ff f869 bl 26f64 + 27f78: 604c str r4, [r1, #4] + 27f7a: f7ff f869 bl 27050 dev->enum_state = 2; - 27e92: 2302 movs r3, #2 - 27e94: 762b strb r3, [r5, #24] + 27f7e: 2302 movs r3, #2 + 27f80: 762b strb r3, [r5, #24] } - 27e96: bd70 pop {r4, r5, r6, pc} + 27f82: bd70 pop {r4, r5, r6, pc} enumbuf[1] = enumbuf[15]; - 27e98: 7bf2 ldrb r2, [r6, #15] + 27f84: 7bf2 ldrb r2, [r6, #15] enumbuf[0] = enumbuf[14]; - 27e9a: 7bb3 ldrb r3, [r6, #14] + 27f86: 7bb3 ldrb r3, [r6, #14] enumbuf[1] = enumbuf[15]; - 27e9c: 7072 strb r2, [r6, #1] + 27f88: 7072 strb r2, [r6, #1] enumbuf[0] = enumbuf[14]; - 27e9e: 7033 strb r3, [r6, #0] + 27f8a: 7033 strb r3, [r6, #0] if ((enumbuf[0] | enumbuf[1] | enumbuf[2]) > 0) { - 27ea0: 4313 orrs r3, r2 + 27f8c: 4313 orrs r3, r2 enumbuf[2] = enumbuf[16]; - 27ea2: 7c32 ldrb r2, [r6, #16] + 27f8e: 7c32 ldrb r2, [r6, #16] dev->bDeviceClass = enumbuf[4]; - 27ea4: 7931 ldrb r1, [r6, #4] - 27ea6: 4313 orrs r3, r2 + 27f90: 7931 ldrb r1, [r6, #4] + 27f92: 4313 orrs r3, r2 enumbuf[2] = enumbuf[16]; - 27ea8: 70b2 strb r2, [r6, #2] + 27f94: 70b2 strb r2, [r6, #2] dev->bDeviceSubClass = enumbuf[5]; - 27eaa: 7972 ldrb r2, [r6, #5] - 27eac: bf14 ite ne - 27eae: 2303 movne r3, #3 - 27eb0: 230b moveq r3, #11 - 27eb2: 76aa strb r2, [r5, #26] + 27f96: 7972 ldrb r2, [r6, #5] + 27f98: bf14 ite ne + 27f9a: 2303 movne r3, #3 + 27f9c: 230b moveq r3, #11 + 27f9e: 76aa strb r2, [r5, #26] dev->bDeviceProtocol = enumbuf[6]; - 27eb4: 79b2 ldrb r2, [r6, #6] + 27fa0: 79b2 ldrb r2, [r6, #6] dev->bDeviceClass = enumbuf[4]; - 27eb6: 7669 strb r1, [r5, #25] + 27fa2: 7669 strb r1, [r5, #25] dev->bDeviceProtocol = enumbuf[6]; - 27eb8: 76ea strb r2, [r5, #27] + 27fa4: 76ea strb r2, [r5, #27] dev->idVendor = enumbuf[8] | (enumbuf[9] << 8); - 27eba: 8932 ldrh r2, [r6, #8] + 27fa6: 8932 ldrh r2, [r6, #8] dev->enum_state = 11; - 27ebc: 762b strb r3, [r5, #24] + 27fa8: 762b strb r3, [r5, #24] dev->idVendor = enumbuf[8] | (enumbuf[9] << 8); - 27ebe: 83ea strh r2, [r5, #30] + 27faa: 83ea strh r2, [r5, #30] dev->idProduct = enumbuf[10] | (enumbuf[11] << 8); - 27ec0: 8972 ldrh r2, [r6, #10] - 27ec2: 842a strh r2, [r5, #32] + 27fac: 8972 ldrh r2, [r6, #10] + 27fae: 842a strh r2, [r5, #32] if ((enumbuf[0] | enumbuf[1] | enumbuf[2]) > 0) { - 27ec4: e789 b.n 27dda + 27fb0: e789 b.n 27ec6 s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27ec6: 495f ldr r1, [pc, #380] ; (28044 ) + 27fb2: 495f ldr r1, [pc, #380] ; (28130 ) queue_Control_Transfer(dev, &enumsetup, enumbuf + 4, NULL); - 27ec8: 2300 movs r3, #0 - 27eca: 4860 ldr r0, [pc, #384] ; (2804c ) + 27fb4: 2300 movs r3, #0 + 27fb6: 4860 ldr r0, [pc, #384] ; (28138 ) s.word2 = wIndex | (wLength << 16); - 27ecc: 4a60 ldr r2, [pc, #384] ; (28050 ) - 27ece: e9c1 0200 strd r0, r2, [r1] - 27ed2: 4a60 ldr r2, [pc, #384] ; (28054 ) - 27ed4: 4628 mov r0, r5 - 27ed6: f7ff f845 bl 26f64 + 27fb8: 4a60 ldr r2, [pc, #384] ; (2813c ) + 27fba: e9c1 0200 strd r0, r2, [r1] + 27fbe: 4a60 ldr r2, [pc, #384] ; (28140 ) + 27fc0: 4628 mov r0, r5 + 27fc2: f7ff f845 bl 27050 dev->enum_state = 4; - 27eda: 2304 movs r3, #4 - 27edc: 762b strb r3, [r5, #24] + 27fc6: 2304 movs r3, #4 + 27fc8: 762b strb r3, [r5, #24] } - 27ede: bd70 pop {r4, r5, r6, pc} + 27fca: bd70 pop {r4, r5, r6, pc} if (enumbuf[4] < 4 || enumbuf[5] != 3) { - 27ee0: 7933 ldrb r3, [r6, #4] - 27ee2: 2b03 cmp r3, #3 - 27ee4: d903 bls.n 27eee - 27ee6: 7973 ldrb r3, [r6, #5] - 27ee8: 2b03 cmp r3, #3 - 27eea: f000 8096 beq.w 2801a + 27fcc: 7933 ldrb r3, [r6, #4] + 27fce: 2b03 cmp r3, #3 + 27fd0: d903 bls.n 27fda + 27fd2: 7973 ldrb r3, [r6, #5] + 27fd4: 2b03 cmp r3, #3 + 27fd6: f000 8096 beq.w 28106 break; - 27eee: 230b movs r3, #11 + 27fda: 230b movs r3, #11 dev->enum_state = 11; - 27ef0: 762b strb r3, [r5, #24] - 27ef2: e772 b.n 27dda + 27fdc: 762b strb r3, [r5, #24] + 27fde: e772 b.n 27ec6 s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27ef4: 4a4e ldr r2, [pc, #312] ; (28030 ) - 27ef6: 4b55 ldr r3, [pc, #340] ; (2804c ) - 27ef8: f812 0b04 ldrb.w r0, [r2], #4 + 27fe0: 4a4e ldr r2, [pc, #312] ; (2811c ) + 27fe2: 4b55 ldr r3, [pc, #340] ; (28138 ) + 27fe4: f812 0b04 ldrb.w r0, [r2], #4 mk_setup(enumsetup, 0x80, 6, 0x0300 | enumbuf[0], dev->LanguageID, len); - 27efc: 8c6c ldrh r4, [r5, #34] ; 0x22 - 27efe: ea43 4300 orr.w r3, r3, r0, lsl #16 + 27fe8: 8c6c ldrh r4, [r5, #34] ; 0x22 + 27fea: ea43 4300 orr.w r3, r3, r0, lsl #16 s.word2 = wIndex | (wLength << 16); - 27f02: 4853 ldr r0, [pc, #332] ; (28050 ) + 27fee: 4853 ldr r0, [pc, #332] ; (2813c ) s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27f04: 494f ldr r1, [pc, #316] ; (28044 ) + 27ff0: 494f ldr r1, [pc, #316] ; (28130 ) s.word2 = wIndex | (wLength << 16); - 27f06: 4320 orrs r0, r4 + 27ff2: 4320 orrs r0, r4 s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27f08: 600b str r3, [r1, #0] + 27ff4: 600b str r3, [r1, #0] queue_Control_Transfer(dev, &enumsetup, enumbuf + 4, NULL); - 27f0a: 2300 movs r3, #0 + 27ff6: 2300 movs r3, #0 s.word2 = wIndex | (wLength << 16); - 27f0c: 6048 str r0, [r1, #4] - 27f0e: 4628 mov r0, r5 - 27f10: f7ff f828 bl 26f64 + 27ff8: 6048 str r0, [r1, #4] + 27ffa: 4628 mov r0, r5 + 27ffc: f7ff f828 bl 27050 dev->enum_state = 6; - 27f14: 2306 movs r3, #6 - 27f16: 762b strb r3, [r5, #24] + 28000: 2306 movs r3, #6 + 28002: 762b strb r3, [r5, #24] } - 27f18: bd70 pop {r4, r5, r6, pc} + 28004: bd70 pop {r4, r5, r6, pc} convertStringDescriptorToASCIIString(0, dev, transfer); - 27f1a: 4622 mov r2, r4 - 27f1c: 4629 mov r1, r5 - 27f1e: 2000 movs r0, #0 - 27f20: f7ff fe86 bl 27c30 + 28006: 4622 mov r2, r4 + 28008: 4629 mov r1, r5 + 2800a: 2000 movs r0, #0 + 2800c: f7ff fe86 bl 27d1c if (enumbuf[1]) dev->enum_state = 7; - 27f24: 7873 ldrb r3, [r6, #1] - 27f26: 2b00 cmp r3, #0 - 27f28: d056 beq.n 27fd8 - 27f2a: 2307 movs r3, #7 + 28010: 7873 ldrb r3, [r6, #1] + 28012: 2b00 cmp r3, #0 + 28014: d056 beq.n 280c4 + 28016: 2307 movs r3, #7 dev->enum_state = 11; - 27f2c: 762b strb r3, [r5, #24] - 27f2e: e754 b.n 27dda + 28018: 762b strb r3, [r5, #24] + 2801a: e754 b.n 27ec6 mk_setup(enumsetup, 0x80, 6, 0x0300 | enumbuf[1], dev->LanguageID, len); - 27f30: 4a3f ldr r2, [pc, #252] ; (28030 ) + 2801c: 4a3f ldr r2, [pc, #252] ; (2811c ) s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27f32: 4b46 ldr r3, [pc, #280] ; (2804c ) - 27f34: 7850 ldrb r0, [r2, #1] + 2801e: 4b46 ldr r3, [pc, #280] ; (28138 ) + 28020: 7850 ldrb r0, [r2, #1] queue_Control_Transfer(dev, &enumsetup, enumbuf + 4, NULL); - 27f36: 3204 adds r2, #4 + 28022: 3204 adds r2, #4 mk_setup(enumsetup, 0x80, 6, 0x0300 | enumbuf[1], dev->LanguageID, len); - 27f38: 8c6c ldrh r4, [r5, #34] ; 0x22 - 27f3a: ea43 4300 orr.w r3, r3, r0, lsl #16 + 28024: 8c6c ldrh r4, [r5, #34] ; 0x22 + 28026: ea43 4300 orr.w r3, r3, r0, lsl #16 s.word2 = wIndex | (wLength << 16); - 27f3e: 4844 ldr r0, [pc, #272] ; (28050 ) + 2802a: 4844 ldr r0, [pc, #272] ; (2813c ) s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27f40: 4940 ldr r1, [pc, #256] ; (28044 ) + 2802c: 4940 ldr r1, [pc, #256] ; (28130 ) s.word2 = wIndex | (wLength << 16); - 27f42: 4320 orrs r0, r4 + 2802e: 4320 orrs r0, r4 s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27f44: 600b str r3, [r1, #0] + 28030: 600b str r3, [r1, #0] queue_Control_Transfer(dev, &enumsetup, enumbuf + 4, NULL); - 27f46: 2300 movs r3, #0 + 28032: 2300 movs r3, #0 s.word2 = wIndex | (wLength << 16); - 27f48: 6048 str r0, [r1, #4] - 27f4a: 4628 mov r0, r5 - 27f4c: f7ff f80a bl 26f64 + 28034: 6048 str r0, [r1, #4] + 28036: 4628 mov r0, r5 + 28038: f7ff f80a bl 27050 dev->enum_state = 8; - 27f50: 2308 movs r3, #8 - 27f52: 762b strb r3, [r5, #24] + 2803c: 2308 movs r3, #8 + 2803e: 762b strb r3, [r5, #24] } - 27f54: bd70 pop {r4, r5, r6, pc} + 28040: bd70 pop {r4, r5, r6, pc} convertStringDescriptorToASCIIString(2, dev, transfer); - 27f56: 4622 mov r2, r4 - 27f58: 4629 mov r1, r5 - 27f5a: 2002 movs r0, #2 - 27f5c: f7ff fe68 bl 27c30 - 27f60: e7c5 b.n 27eee + 28042: 4622 mov r2, r4 + 28044: 4629 mov r1, r5 + 28046: 2002 movs r0, #2 + 28048: f7ff fe68 bl 27d1c + 2804c: e7c5 b.n 27fda s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27f62: 4938 ldr r1, [pc, #224] ; (28044 ) + 2804e: 4938 ldr r1, [pc, #224] ; (28130 ) s.word2 = wIndex | (wLength << 16); - 27f64: f44f 2210 mov.w r2, #589824 ; 0x90000 + 28050: f44f 2210 mov.w r2, #589824 ; 0x90000 s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27f68: 483b ldr r0, [pc, #236] ; (28058 ) + 28054: 483b ldr r0, [pc, #236] ; (28144 ) queue_Control_Transfer(dev, &enumsetup, enumbuf, NULL); - 27f6a: 2300 movs r3, #0 + 28056: 2300 movs r3, #0 s.word2 = wIndex | (wLength << 16); - 27f6c: e9c1 0200 strd r0, r2, [r1] - 27f70: 4a2f ldr r2, [pc, #188] ; (28030 ) - 27f72: 4628 mov r0, r5 - 27f74: f7fe fff6 bl 26f64 + 28058: e9c1 0200 strd r0, r2, [r1] + 2805c: 4a2f ldr r2, [pc, #188] ; (2811c ) + 2805e: 4628 mov r0, r5 + 28060: f7fe fff6 bl 27050 dev->enum_state = 12; - 27f78: 230c movs r3, #12 - 27f7a: 762b strb r3, [r5, #24] + 28064: 230c movs r3, #12 + 28066: 762b strb r3, [r5, #24] } - 27f7c: bd70 pop {r4, r5, r6, pc} + 28068: bd70 pop {r4, r5, r6, pc} enumlen = enumbuf[2] | (enumbuf[3] << 8); - 27f7e: 4b2c ldr r3, [pc, #176] ; (28030 ) - 27f80: 885b ldrh r3, [r3, #2] + 2806a: 4b2c ldr r3, [pc, #176] ; (2811c ) + 2806c: 885b ldrh r3, [r3, #2] if (enumlen > sizeof(enumbuf)) { - 27f82: f5b3 6f00 cmp.w r3, #2048 ; 0x800 - 27f86: d841 bhi.n 2800c + 2806e: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 28072: d841 bhi.n 280f8 enumlen = enumbuf[2] | (enumbuf[3] << 8); - 27f88: 4a34 ldr r2, [pc, #208] ; (2805c ) - 27f8a: 0418 lsls r0, r3, #16 - 27f8c: 8013 strh r3, [r2, #0] + 28074: 4a34 ldr r2, [pc, #208] ; (28148 ) + 28076: 0418 lsls r0, r3, #16 + 28078: 8013 strh r3, [r2, #0] s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27f8e: 492d ldr r1, [pc, #180] ; (28044 ) + 2807a: 492d ldr r1, [pc, #180] ; (28130 ) queue_Control_Transfer(dev, &enumsetup, enumbuf, NULL); - 27f90: 2300 movs r3, #0 - 27f92: 4a31 ldr r2, [pc, #196] ; (28058 ) + 2807c: 2300 movs r3, #0 + 2807e: 4a31 ldr r2, [pc, #196] ; (28144 ) s.word2 = wIndex | (wLength << 16); - 27f94: e9c1 2000 strd r2, r0, [r1] - 27f98: 4a25 ldr r2, [pc, #148] ; (28030 ) - 27f9a: 4628 mov r0, r5 - 27f9c: f7fe ffe2 bl 26f64 + 28080: e9c1 2000 strd r2, r0, [r1] + 28084: 4a25 ldr r2, [pc, #148] ; (2811c ) + 28086: 4628 mov r0, r5 + 28088: f7fe ffe2 bl 27050 dev->enum_state = 13; - 27fa0: 230d movs r3, #13 - 27fa2: 762b strb r3, [r5, #24] + 2808c: 230d movs r3, #13 + 2808e: 762b strb r3, [r5, #24] } - 27fa4: bd70 pop {r4, r5, r6, pc} + 28090: bd70 pop {r4, r5, r6, pc} dev->bmAttributes = enumbuf[7]; - 27fa6: 4822 ldr r0, [pc, #136] ; (28030 ) - 27fa8: 2300 movs r3, #0 + 28092: 4822 ldr r0, [pc, #136] ; (2811c ) + 28094: 2300 movs r3, #0 s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27faa: 4926 ldr r1, [pc, #152] ; (28044 ) + 28096: 4926 ldr r1, [pc, #152] ; (28130 ) mk_setup(enumsetup, 0, 9, enumbuf[5], 0, 0); // 9=SET_CONFIGURATION - 27fac: 7942 ldrb r2, [r0, #5] + 28098: 7942 ldrb r2, [r0, #5] dev->bmAttributes = enumbuf[7]; - 27fae: 79c4 ldrb r4, [r0, #7] - 27fb0: 0412 lsls r2, r2, #16 + 2809a: 79c4 ldrb r4, [r0, #7] + 2809c: 0412 lsls r2, r2, #16 dev->bMaxPower = enumbuf[8]; - 27fb2: 7a00 ldrb r0, [r0, #8] + 2809e: 7a00 ldrb r0, [r0, #8] dev->bmAttributes = enumbuf[7]; - 27fb4: 772c strb r4, [r5, #28] - 27fb6: f442 6210 orr.w r2, r2, #2304 ; 0x900 + 280a0: 772c strb r4, [r5, #28] + 280a2: f442 6210 orr.w r2, r2, #2304 ; 0x900 dev->bMaxPower = enumbuf[8]; - 27fba: 7768 strb r0, [r5, #29] + 280a6: 7768 strb r0, [r5, #29] queue_Control_Transfer(dev, &enumsetup, NULL, NULL); - 27fbc: 4628 mov r0, r5 + 280a8: 4628 mov r0, r5 s.word2 = wIndex | (wLength << 16); - 27fbe: 604b str r3, [r1, #4] + 280aa: 604b str r3, [r1, #4] s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27fc0: 600a str r2, [r1, #0] - 27fc2: 461a mov r2, r3 - 27fc4: f7fe ffce bl 26f64 + 280ac: 600a str r2, [r1, #0] + 280ae: 461a mov r2, r3 + 280b0: f7fe ffce bl 27050 dev->enum_state = 14; - 27fc8: 230e movs r3, #14 - 27fca: 762b strb r3, [r5, #24] + 280b4: 230e movs r3, #14 + 280b6: 762b strb r3, [r5, #24] } - 27fcc: bd70 pop {r4, r5, r6, pc} + 280b8: bd70 pop {r4, r5, r6, pc} convertStringDescriptorToASCIIString(1, dev, transfer); - 27fce: 4622 mov r2, r4 - 27fd0: 4629 mov r1, r5 - 27fd2: 2001 movs r0, #1 - 27fd4: f7ff fe2c bl 27c30 + 280ba: 4622 mov r2, r4 + 280bc: 4629 mov r1, r5 + 280be: 2001 movs r0, #1 + 280c0: f7ff fe2c bl 27d1c if (enumbuf[2]) dev->enum_state = 9; - 27fd8: 78b3 ldrb r3, [r6, #2] - 27fda: 2b00 cmp r3, #0 - 27fdc: bf0c ite eq - 27fde: 230b moveq r3, #11 - 27fe0: 2309 movne r3, #9 + 280c4: 78b3 ldrb r3, [r6, #2] + 280c6: 2b00 cmp r3, #0 + 280c8: bf0c ite eq + 280ca: 230b moveq r3, #11 + 280cc: 2309 movne r3, #9 dev->enum_state = 11; - 27fe2: 762b strb r3, [r5, #24] - 27fe4: e6f9 b.n 27dda + 280ce: 762b strb r3, [r5, #24] + 280d0: e6f9 b.n 27ec6 mk_setup(enumsetup, 0x80, 6, 0x0300 | enumbuf[2], dev->LanguageID, len); - 27fe6: 4a12 ldr r2, [pc, #72] ; (28030 ) - 27fe8: 4b18 ldr r3, [pc, #96] ; (2804c ) - 27fea: 7890 ldrb r0, [r2, #2] + 280d2: 4a12 ldr r2, [pc, #72] ; (2811c ) + 280d4: 4b18 ldr r3, [pc, #96] ; (28138 ) + 280d6: 7890 ldrb r0, [r2, #2] queue_Control_Transfer(dev, &enumsetup, enumbuf + 4, NULL); - 27fec: 3204 adds r2, #4 + 280d8: 3204 adds r2, #4 mk_setup(enumsetup, 0x80, 6, 0x0300 | enumbuf[2], dev->LanguageID, len); - 27fee: 8c6c ldrh r4, [r5, #34] ; 0x22 - 27ff0: ea43 4300 orr.w r3, r3, r0, lsl #16 + 280da: 8c6c ldrh r4, [r5, #34] ; 0x22 + 280dc: ea43 4300 orr.w r3, r3, r0, lsl #16 s.word2 = wIndex | (wLength << 16); - 27ff4: 4816 ldr r0, [pc, #88] ; (28050 ) + 280e0: 4816 ldr r0, [pc, #88] ; (2813c ) s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27ff6: 4913 ldr r1, [pc, #76] ; (28044 ) + 280e2: 4913 ldr r1, [pc, #76] ; (28130 ) s.word2 = wIndex | (wLength << 16); - 27ff8: 4320 orrs r0, r4 + 280e4: 4320 orrs r0, r4 s.word1 = bmRequestType | (bRequest << 8) | (wValue << 16); - 27ffa: 600b str r3, [r1, #0] + 280e6: 600b str r3, [r1, #0] queue_Control_Transfer(dev, &enumsetup, enumbuf + 4, NULL); - 27ffc: 2300 movs r3, #0 + 280e8: 2300 movs r3, #0 s.word2 = wIndex | (wLength << 16); - 27ffe: 6048 str r0, [r1, #4] - 28000: 4628 mov r0, r5 - 28002: f7fe ffaf bl 26f64 + 280ea: 6048 str r0, [r1, #4] + 280ec: 4628 mov r0, r5 + 280ee: f7fe ffaf bl 27050 dev->enum_state = 10; - 28006: 230a movs r3, #10 - 28008: 762b strb r3, [r5, #24] + 280f2: 230a movs r3, #10 + 280f4: 762b strb r3, [r5, #24] } - 2800a: bd70 pop {r4, r5, r6, pc} + 280f6: bd70 pop {r4, r5, r6, pc} enumlen = sizeof(enumbuf); - 2800c: 4b13 ldr r3, [pc, #76] ; (2805c ) - 2800e: f44f 6200 mov.w r2, #2048 ; 0x800 - 28012: f04f 6000 mov.w r0, #134217728 ; 0x8000000 - 28016: 801a strh r2, [r3, #0] - 28018: e7b9 b.n 27f8e + 280f8: 4b13 ldr r3, [pc, #76] ; (28148 ) + 280fa: f44f 6200 mov.w r2, #2048 ; 0x800 + 280fe: f04f 6000 mov.w r0, #134217728 ; 0x8000000 + 28102: 801a strh r2, [r3, #0] + 28104: e7b9 b.n 2807a dev->LanguageID = enumbuf[6] | (enumbuf[7] << 8); - 2801a: 88f2 ldrh r2, [r6, #6] + 28106: 88f2 ldrh r2, [r6, #6] if (enumbuf[0]) dev->enum_state = 5; - 2801c: 7833 ldrb r3, [r6, #0] + 28108: 7833 ldrb r3, [r6, #0] dev->LanguageID = enumbuf[6] | (enumbuf[7] << 8); - 2801e: 846a strh r2, [r5, #34] ; 0x22 + 2810a: 846a strh r2, [r5, #34] ; 0x22 if (enumbuf[0]) dev->enum_state = 5; - 28020: 2b00 cmp r3, #0 - 28022: f43f af7f beq.w 27f24 - 28026: 2305 movs r3, #5 + 2810c: 2b00 cmp r3, #0 + 2810e: f43f af7f beq.w 28010 + 28112: 2305 movs r3, #5 dev->enum_state = 11; - 28028: 762b strb r3, [r5, #24] - 2802a: e6d6 b.n 27dda - 2802c: 000000c9 .word 0x000000c9 - 28030: 2000a720 .word 0x2000a720 - 28034: 2000bc7d .word 0x2000bc7d - 28038: f800ffff .word 0xf800ffff - 2803c: 2000bc80 .word 0x2000bc80 - 28040: 2000b6ec .word 0x2000b6ec - 28044: 2000af20 .word 0x2000af20 - 28048: 01000680 .word 0x01000680 - 2804c: 03000680 .word 0x03000680 - 28050: 07fc0000 .word 0x07fc0000 - 28054: 2000a724 .word 0x2000a724 - 28058: 02000680 .word 0x02000680 - 2805c: 2000bc6c .word 0x2000bc6c - -00028060 : + 28114: 762b strb r3, [r5, #24] + 28116: e6d6 b.n 27ec6 + 28118: 000000c9 .word 0x000000c9 + 2811c: 2000a740 .word 0x2000a740 + 28120: 2000bc9d .word 0x2000bc9d + 28124: f800ffff .word 0xf800ffff + 28128: 2000bca0 .word 0x2000bca0 + 2812c: 2000b70c .word 0x2000b70c + 28130: 2000af40 .word 0x2000af40 + 28134: 01000680 .word 0x01000680 + 28138: 03000680 .word 0x03000680 + 2813c: 07fc0000 .word 0x07fc0000 + 28140: 2000a744 .word 0x2000a744 + 28144: 02000680 .word 0x02000680 + 28148: 2000bc8c .word 0x2000bc8c + +0002814c : } void USBHost::disconnect_Device(Device_t *dev) { if (!dev) return; - 28060: 2800 cmp r0, #0 - 28062: d037 beq.n 280d4 + 2814c: 2800 cmp r0, #0 + 2814e: d037 beq.n 281c0 { - 28064: b5f8 push {r3, r4, r5, r6, r7, lr} + 28150: b5f8 push {r3, r4, r5, r6, r7, lr} // Disconnect all drivers using this device. If this device is // a hub, the hub driver is responsible for recursively calling // this function to disconnect its downstream devices. print_driverlist("available_drivers", available_drivers); print_driverlist("dev->drivers", dev->drivers); - 28066: 68c4 ldr r4, [r0, #12] + 28152: 68c4 ldr r4, [r0, #12] for (USBDriver *p = dev->drivers; p; ) { - 28068: 4606 mov r6, r0 - 2806a: b16c cbz r4, 28088 - 2806c: 4d1a ldr r5, [pc, #104] ; (280d8 ) + 28154: 4606 mov r6, r0 + 28156: b16c cbz r4, 28174 + 28158: 4d1a ldr r5, [pc, #104] ; (281c4 ) println("disconnect driver ", (uint32_t)p, HEX); p->disconnect(); p->device = NULL; - 2806e: 2700 movs r7, #0 + 2815a: 2700 movs r7, #0 p->disconnect(); - 28070: 6823 ldr r3, [r4, #0] - 28072: 4620 mov r0, r4 - 28074: 691b ldr r3, [r3, #16] - 28076: 4798 blx r3 + 2815c: 6823 ldr r3, [r4, #0] + 2815e: 4620 mov r0, r4 + 28160: 691b ldr r3, [r3, #16] + 28162: 4798 blx r3 p->device = NULL; - 28078: 4623 mov r3, r4 + 28164: 4623 mov r3, r4 USBDriver *next = p->next; p->next = available_drivers; - 2807a: 682a ldr r2, [r5, #0] + 28166: 682a ldr r2, [r5, #0] p->device = NULL; - 2807c: 60a7 str r7, [r4, #8] + 28168: 60a7 str r7, [r4, #8] USBDriver *next = p->next; - 2807e: 6864 ldr r4, [r4, #4] + 2816a: 6864 ldr r4, [r4, #4] available_drivers = p; - 28080: 602b str r3, [r5, #0] + 2816c: 602b str r3, [r5, #0] p->next = available_drivers; - 28082: 605a str r2, [r3, #4] + 2816e: 605a str r2, [r3, #4] for (USBDriver *p = dev->drivers; p; ) { - 28084: 2c00 cmp r4, #0 - 28086: d1f3 bne.n 28070 + 28170: 2c00 cmp r4, #0 + 28172: d1f3 bne.n 2815c p = next; } print_driverlist("available_drivers", available_drivers); // delete all the pipes for (Pipe_t *p = dev->data_pipes; p; ) { - 28088: 6874 ldr r4, [r6, #4] - 2808a: b12c cbz r4, 28098 + 28174: 6874 ldr r4, [r6, #4] + 28176: b12c cbz r4, 28184 Pipe_t *next = p->next; - 2808c: 4620 mov r0, r4 - 2808e: 6ba4 ldr r4, [r4, #56] ; 0x38 + 28178: 4620 mov r0, r4 + 2817a: 6ba4 ldr r4, [r4, #56] ; 0x38 delete_Pipe(p); - 28090: f7ff fc42 bl 27918 + 2817c: f7ff fc42 bl 27a04 for (Pipe_t *p = dev->data_pipes; p; ) { - 28094: 2c00 cmp r4, #0 - 28096: d1f9 bne.n 2808c + 28180: 2c00 cmp r4, #0 + 28182: d1f9 bne.n 28178 p = next; } delete_Pipe(dev->control_pipe); - 28098: 6830 ldr r0, [r6, #0] - 2809a: f7ff fc3d bl 27918 + 28184: 6830 ldr r0, [r6, #0] + 28186: f7ff fc3d bl 27a04 // remove device from devlist and free its Device_t Device_t *prev_dev = NULL; for (Device_t *p = devlist; p; p = p->next) { - 2809e: 4b0f ldr r3, [pc, #60] ; (280dc ) - 280a0: 681c ldr r4, [r3, #0] - 280a2: b144 cbz r4, 280b6 + 2818a: 4b0f ldr r3, [pc, #60] ; (281c8 ) + 2818c: 681c ldr r4, [r3, #0] + 2818e: b144 cbz r4, 281a2 if (p == dev) { - 280a4: 42a6 cmp r6, r4 - 280a6: d102 bne.n 280ae - 280a8: e011 b.n 280ce - 280aa: 42a6 cmp r6, r4 - 280ac: d004 beq.n 280b8 + 28190: 42a6 cmp r6, r4 + 28192: d102 bne.n 2819a + 28194: e011 b.n 281ba + 28196: 42a6 cmp r6, r4 + 28198: d004 beq.n 281a4 for (Device_t *p = devlist; p; p = p->next) { - 280ae: 4623 mov r3, r4 - 280b0: 68a4 ldr r4, [r4, #8] - 280b2: 2c00 cmp r4, #0 - 280b4: d1f9 bne.n 280aa + 2819a: 4623 mov r3, r4 + 2819c: 68a4 ldr r4, [r4, #8] + 2819e: 2c00 cmp r4, #0 + 281a0: d1f9 bne.n 28196 free_Device(p); break; } prev_dev = p; } } - 280b6: bdf8 pop {r3, r4, r5, r6, r7, pc} + 281a2: bdf8 pop {r3, r4, r5, r6, r7, pc} prev_dev->next = p->next; - 280b8: 68a2 ldr r2, [r4, #8] - 280ba: 609a str r2, [r3, #8] + 281a4: 68a2 ldr r2, [r4, #8] + 281a6: 609a str r2, [r3, #8] if (p->strbuf != nullptr ) { - 280bc: 6920 ldr r0, [r4, #16] - 280be: b108 cbz r0, 280c4 + 281a8: 6920 ldr r0, [r4, #16] + 281aa: b108 cbz r0, 281b0 free_string_buffer(p->strbuf); - 280c0: f000 f888 bl 281d4 + 281ac: f000 f888 bl 282c0 free_Device(p); - 280c4: 4620 mov r0, r4 + 281b0: 4620 mov r0, r4 } - 280c6: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} + 281b2: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} free_Device(p); - 280ca: f000 b84d b.w 28168 + 281b6: f000 b84d b.w 28254 devlist = p->next; - 280ce: 68a2 ldr r2, [r4, #8] - 280d0: 601a str r2, [r3, #0] - 280d2: e7f3 b.n 280bc - 280d4: 4770 bx lr - 280d6: bf00 nop - 280d8: 2000b6d4 .word 0x2000b6d4 - 280dc: 2000b6ec .word 0x2000b6ec - -000280e0 <_GLOBAL__sub_I_ack_rvd>: + 281ba: 68a2 ldr r2, [r4, #8] + 281bc: 601a str r2, [r3, #0] + 281be: e7f3 b.n 281a8 + 281c0: 4770 bx lr + 281c2: bf00 nop + 281c4: 2000b6f4 .word 0x2000b6f4 + 281c8: 2000b70c .word 0x2000b70c + +000281cc <_GLOBAL__sub_I_ack_rvd>: uint8_t gpnum; //GlobalPacketNumber uint8_t subCommand; uint8_t subCommandData[38]; } __attribute__((packed)); struct SWProIMUCalibration { - 280e0: 4a07 ldr r2, [pc, #28] ; (28100 <_GLOBAL__sub_I_ack_rvd+0x20>) - 280e2: 4b08 ldr r3, [pc, #32] ; (28104 <_GLOBAL__sub_I_ack_rvd+0x24>) - 280e4: 6e50 ldr r0, [r2, #100] ; 0x64 - 280e6: f8b2 c068 ldrh.w ip, [r2, #104] ; 0x68 - 280ea: f8b2 1070 ldrh.w r1, [r2, #112] ; 0x70 - 280ee: f8c3 0006 str.w r0, [r3, #6] - 280f2: 6ed0 ldr r0, [r2, #108] ; 0x6c - 280f4: f8a3 c00a strh.w ip, [r3, #10] - 280f8: 82d9 strh r1, [r3, #22] - 280fa: f8c3 0012 str.w r0, [r3, #18] + 281cc: 4a07 ldr r2, [pc, #28] ; (281ec <_GLOBAL__sub_I_ack_rvd+0x20>) + 281ce: 4b08 ldr r3, [pc, #32] ; (281f0 <_GLOBAL__sub_I_ack_rvd+0x24>) + 281d0: 6e50 ldr r0, [r2, #100] ; 0x64 + 281d2: f8b2 c068 ldrh.w ip, [r2, #104] ; 0x68 + 281d6: f8b2 1070 ldrh.w r1, [r2, #112] ; 0x70 + 281da: f8c3 0006 str.w r0, [r3, #6] + 281de: 6ed0 ldr r0, [r2, #108] ; 0x6c + 281e0: f8a3 c00a strh.w ip, [r3, #10] + 281e4: 82d9 strh r1, [r3, #22] + 281e6: f8c3 0012 str.w r0, [r3, #18] pOutX = 0.0f; pOutY = 0.0f; } } - 280fe: 4770 bx lr - 28100: 20000dfc .word 0x20000dfc - 28104: 2000b020 .word 0x2000b020 + 281ea: 4770 bx lr + 281ec: 20000dfc .word 0x20000dfc + 281f0: 2000b040 .word 0x2000b040 -00028108 : +000281f4 : { - 28108: b430 push {r4, r5} + 281f4: b430 push {r4, r5} *(Device_t **)device = free_Device_list; - 2810a: 4c0d ldr r4, [pc, #52] ; (28140 ) + 281f6: 4c0d ldr r4, [pc, #52] ; (2822c ) *(Pipe_t **)pipe = free_Pipe_list; - 2810c: 490d ldr r1, [pc, #52] ; (28144 ) + 281f8: 490d ldr r1, [pc, #52] ; (28230 ) *(Device_t **)device = free_Device_list; - 2810e: 6825 ldr r5, [r4, #0] - 28110: 4a0d ldr r2, [pc, #52] ; (28148 ) + 281fa: 6825 ldr r5, [r4, #0] + 281fc: 4a0d ldr r2, [pc, #52] ; (28234 ) *(Transfer_t **)transfer = free_Transfer_list; - 28112: 4b0e ldr r3, [pc, #56] ; (2814c ) + 281fe: 4b0e ldr r3, [pc, #56] ; (28238 ) *(Device_t **)device = free_Device_list; - 28114: 6015 str r5, [r2, #0] + 28200: 6015 str r5, [r2, #0] *(Transfer_t **)transfer = free_Transfer_list; - 28116: 480e ldr r0, [pc, #56] ; (28150 ) + 28202: 480e ldr r0, [pc, #56] ; (2823c ) *(Pipe_t **)pipe = free_Pipe_list; - 28118: 680d ldr r5, [r1, #0] + 28204: 680d ldr r5, [r1, #0] free_Device_list = device; - 2811a: 6022 str r2, [r4, #0] + 28206: 6022 str r2, [r4, #0] *(Pipe_t **)pipe = free_Pipe_list; - 2811c: 4a0d ldr r2, [pc, #52] ; (28154 ) + 28208: 4a0d ldr r2, [pc, #52] ; (28240 ) *(Transfer_t **)transfer = free_Transfer_list; - 2811e: 6804 ldr r4, [r0, #0] + 2820a: 6804 ldr r4, [r0, #0] free_Pipe_list = pipe; - 28120: 600a str r2, [r1, #0] + 2820c: 600a str r2, [r1, #0] *(Transfer_t **)transfer = free_Transfer_list; - 28122: 4619 mov r1, r3 + 2820e: 4619 mov r1, r3 *(Pipe_t **)pipe = free_Pipe_list; - 28124: 6015 str r5, [r2, #0] + 28210: 6015 str r5, [r2, #0] *(Transfer_t **)transfer = free_Transfer_list; - 28126: 461a mov r2, r3 - 28128: f103 0540 add.w r5, r3, #64 ; 0x40 - 2812c: 601c str r4, [r3, #0] - 2812e: 641b str r3, [r3, #64] ; 0x40 - 28130: f842 5f80 str.w r5, [r2, #128]! - 28134: f841 2fc0 str.w r2, [r1, #192]! + 28212: 461a mov r2, r3 + 28214: f103 0540 add.w r5, r3, #64 ; 0x40 + 28218: 601c str r4, [r3, #0] + 2821a: 641b str r3, [r3, #64] ; 0x40 + 2821c: f842 5f80 str.w r5, [r2, #128]! + 28220: f841 2fc0 str.w r2, [r1, #192]! for (Transfer_t *transfer = transfers ; transfer < end; transfer++) { - 28138: 6001 str r1, [r0, #0] -} - 2813a: bc30 pop {r4, r5} - 2813c: 4770 bx lr - 2813e: bf00 nop - 28140: 2000b5cc .word 0x2000b5cc - 28144: 2000b5c8 .word 0x2000b5c8 - 28148: 2000b5a4 .word 0x2000b5a4 - 2814c: 200060e0 .word 0x200060e0 - 28150: 2000b6d8 .word 0x2000b6d8 - 28154: 20006080 .word 0x20006080 - -00028158 : + 28224: 6001 str r1, [r0, #0] +} + 28226: bc30 pop {r4, r5} + 28228: 4770 bx lr + 2822a: bf00 nop + 2822c: 2000b5ec .word 0x2000b5ec + 28230: 2000b5e8 .word 0x2000b5e8 + 28234: 2000b5c4 .word 0x2000b5c4 + 28238: 200060e0 .word 0x200060e0 + 2823c: 2000b6f8 .word 0x2000b6f8 + 28240: 20006080 .word 0x20006080 + +00028244 : Device_t *device = free_Device_list; - 28158: 4b02 ldr r3, [pc, #8] ; (28164 ) - 2815a: 6818 ldr r0, [r3, #0] + 28244: 4b02 ldr r3, [pc, #8] ; (28250 ) + 28246: 6818 ldr r0, [r3, #0] if (device) free_Device_list = *(Device_t **)device; - 2815c: b108 cbz r0, 28162 - 2815e: 6802 ldr r2, [r0, #0] - 28160: 601a str r2, [r3, #0] + 28248: b108 cbz r0, 2824e + 2824a: 6802 ldr r2, [r0, #0] + 2824c: 601a str r2, [r3, #0] } - 28162: 4770 bx lr - 28164: 2000b5cc .word 0x2000b5cc + 2824e: 4770 bx lr + 28250: 2000b5ec .word 0x2000b5ec -00028168 : +00028254 : *(Device_t **)device = free_Device_list; - 28168: 4b02 ldr r3, [pc, #8] ; (28174 ) - 2816a: 681a ldr r2, [r3, #0] + 28254: 4b02 ldr r3, [pc, #8] ; (28260 ) + 28256: 681a ldr r2, [r3, #0] free_Device_list = device; - 2816c: 6018 str r0, [r3, #0] + 28258: 6018 str r0, [r3, #0] *(Device_t **)device = free_Device_list; - 2816e: 6002 str r2, [r0, #0] + 2825a: 6002 str r2, [r0, #0] } - 28170: 4770 bx lr - 28172: bf00 nop - 28174: 2000b5cc .word 0x2000b5cc + 2825c: 4770 bx lr + 2825e: bf00 nop + 28260: 2000b5ec .word 0x2000b5ec -00028178 : +00028264 : Pipe_t *pipe = free_Pipe_list; - 28178: 4b02 ldr r3, [pc, #8] ; (28184 ) - 2817a: 6818 ldr r0, [r3, #0] + 28264: 4b02 ldr r3, [pc, #8] ; (28270 ) + 28266: 6818 ldr r0, [r3, #0] if (pipe) free_Pipe_list = *(Pipe_t **)pipe; - 2817c: b108 cbz r0, 28182 - 2817e: 6802 ldr r2, [r0, #0] - 28180: 601a str r2, [r3, #0] + 28268: b108 cbz r0, 2826e + 2826a: 6802 ldr r2, [r0, #0] + 2826c: 601a str r2, [r3, #0] } - 28182: 4770 bx lr - 28184: 2000b5c8 .word 0x2000b5c8 + 2826e: 4770 bx lr + 28270: 2000b5e8 .word 0x2000b5e8 -00028188 : +00028274 : *(Pipe_t **)pipe = free_Pipe_list; - 28188: 4b02 ldr r3, [pc, #8] ; (28194 ) - 2818a: 681a ldr r2, [r3, #0] + 28274: 4b02 ldr r3, [pc, #8] ; (28280 ) + 28276: 681a ldr r2, [r3, #0] free_Pipe_list = pipe; - 2818c: 6018 str r0, [r3, #0] + 28278: 6018 str r0, [r3, #0] *(Pipe_t **)pipe = free_Pipe_list; - 2818e: 6002 str r2, [r0, #0] + 2827a: 6002 str r2, [r0, #0] } - 28190: 4770 bx lr - 28192: bf00 nop - 28194: 2000b5c8 .word 0x2000b5c8 + 2827c: 4770 bx lr + 2827e: bf00 nop + 28280: 2000b5e8 .word 0x2000b5e8 -00028198 : +00028284 : Transfer_t *transfer = free_Transfer_list; - 28198: 4b02 ldr r3, [pc, #8] ; (281a4 ) - 2819a: 6818 ldr r0, [r3, #0] + 28284: 4b02 ldr r3, [pc, #8] ; (28290 ) + 28286: 6818 ldr r0, [r3, #0] if (transfer) free_Transfer_list = *(Transfer_t **)transfer; - 2819c: b108 cbz r0, 281a2 - 2819e: 6802 ldr r2, [r0, #0] - 281a0: 601a str r2, [r3, #0] + 28288: b108 cbz r0, 2828e + 2828a: 6802 ldr r2, [r0, #0] + 2828c: 601a str r2, [r3, #0] } - 281a2: 4770 bx lr - 281a4: 2000b6d8 .word 0x2000b6d8 + 2828e: 4770 bx lr + 28290: 2000b6f8 .word 0x2000b6f8 -000281a8 : +00028294 : *(Transfer_t **)transfer = free_Transfer_list; - 281a8: 4b02 ldr r3, [pc, #8] ; (281b4 ) - 281aa: 681a ldr r2, [r3, #0] + 28294: 4b02 ldr r3, [pc, #8] ; (282a0 ) + 28296: 681a ldr r2, [r3, #0] free_Transfer_list = transfer; - 281ac: 6018 str r0, [r3, #0] + 28298: 6018 str r0, [r3, #0] *(Transfer_t **)transfer = free_Transfer_list; - 281ae: 6002 str r2, [r0, #0] + 2829a: 6002 str r2, [r0, #0] } - 281b0: 4770 bx lr - 281b2: bf00 nop - 281b4: 2000b6d8 .word 0x2000b6d8 + 2829c: 4770 bx lr + 2829e: bf00 nop + 282a0: 2000b6f8 .word 0x2000b6f8 -000281b8 : +000282a4 : strbuf_t *strbuf = free_strbuf_list; - 281b8: 4a05 ldr r2, [pc, #20] ; (281d0 ) - 281ba: 6810 ldr r0, [r2, #0] + 282a4: 4a05 ldr r2, [pc, #20] ; (282bc ) + 282a6: 6810 ldr r0, [r2, #0] if (strbuf) { - 281bc: b130 cbz r0, 281cc + 282a8: b130 cbz r0, 282b8 free_strbuf_list = *(strbuf_t **)strbuf; - 281be: 6801 ldr r1, [r0, #0] + 282aa: 6801 ldr r1, [r0, #0] strbuf->iStrings[strbuf_t::STR_ID_MAN] = 0; // Set indexes into string buffer to say not there... - 281c0: 2300 movs r3, #0 + 282ac: 2300 movs r3, #0 free_strbuf_list = *(strbuf_t **)strbuf; - 281c2: 6011 str r1, [r2, #0] + 282ae: 6011 str r1, [r2, #0] strbuf->iStrings[strbuf_t::STR_ID_MAN] = 0; // Set indexes into string buffer to say not there... - 281c4: 7003 strb r3, [r0, #0] + 282b0: 7003 strb r3, [r0, #0] strbuf->iStrings[strbuf_t::STR_ID_PROD] = 0; - 281c6: 7043 strb r3, [r0, #1] + 282b2: 7043 strb r3, [r0, #1] strbuf->iStrings[strbuf_t::STR_ID_SERIAL] = 0; - 281c8: 7083 strb r3, [r0, #2] + 282b4: 7083 strb r3, [r0, #2] strbuf->buffer[0] = 0; // have trailing NULL.. - 281ca: 70c3 strb r3, [r0, #3] + 282b6: 70c3 strb r3, [r0, #3] } - 281cc: 4770 bx lr - 281ce: bf00 nop - 281d0: 2000b5d0 .word 0x2000b5d0 + 282b8: 4770 bx lr + 282ba: bf00 nop + 282bc: 2000b5f0 .word 0x2000b5f0 -000281d4 : +000282c0 : *(strbuf_t **)strbuf = free_strbuf_list; - 281d4: 4b02 ldr r3, [pc, #8] ; (281e0 ) - 281d6: 681a ldr r2, [r3, #0] + 282c0: 4b02 ldr r3, [pc, #8] ; (282cc ) + 282c2: 681a ldr r2, [r3, #0] free_strbuf_list = strbuf; - 281d8: 6018 str r0, [r3, #0] + 282c4: 6018 str r0, [r3, #0] *(strbuf_t **)strbuf = free_strbuf_list; - 281da: 6002 str r2, [r0, #0] + 282c6: 6002 str r2, [r0, #0] } - 281dc: 4770 bx lr - 281de: bf00 nop - 281e0: 2000b5d0 .word 0x2000b5d0 + 282c8: 4770 bx lr + 282ca: bf00 nop + 282cc: 2000b5f0 .word 0x2000b5f0 -000281e4 : +000282d0 : Pipe_t *end = pipes + num; - 281e4: eb01 0141 add.w r1, r1, r1, lsl #1 - 281e8: eb00 1141 add.w r1, r0, r1, lsl #5 + 282d0: eb01 0141 add.w r1, r1, r1, lsl #1 + 282d4: eb00 1141 add.w r1, r0, r1, lsl #5 for (Pipe_t *pipe = pipes; pipe < end; pipe++) { - 281ec: 4288 cmp r0, r1 - 281ee: d20e bcs.n 2820e + 282d8: 4288 cmp r0, r1 + 282da: d20e bcs.n 282fa { - 281f0: b410 push {r4} - 281f2: 4c07 ldr r4, [pc, #28] ; (28210 ) - 281f4: 6822 ldr r2, [r4, #0] - 281f6: e000 b.n 281fa - 281f8: 4618 mov r0, r3 + 282dc: b410 push {r4} + 282de: 4c07 ldr r4, [pc, #28] ; (282fc ) + 282e0: 6822 ldr r2, [r4, #0] + 282e2: e000 b.n 282e6 + 282e4: 4618 mov r0, r3 *(Pipe_t **)pipe = free_Pipe_list; - 281fa: 4603 mov r3, r0 - 281fc: f843 2b60 str.w r2, [r3], #96 + 282e6: 4603 mov r3, r0 + 282e8: f843 2b60 str.w r2, [r3], #96 for (Pipe_t *pipe = pipes; pipe < end; pipe++) { - 28200: 4299 cmp r1, r3 - 28202: 4602 mov r2, r0 - 28204: d8f8 bhi.n 281f8 - 28206: 6020 str r0, [r4, #0] + 282ec: 4299 cmp r1, r3 + 282ee: 4602 mov r2, r0 + 282f0: d8f8 bhi.n 282e4 + 282f2: 6020 str r0, [r4, #0] } - 28208: f85d 4b04 ldr.w r4, [sp], #4 - 2820c: 4770 bx lr - 2820e: 4770 bx lr - 28210: 2000b5c8 .word 0x2000b5c8 + 282f4: f85d 4b04 ldr.w r4, [sp], #4 + 282f8: 4770 bx lr + 282fa: 4770 bx lr + 282fc: 2000b5e8 .word 0x2000b5e8 -00028214 : +00028300 : Transfer_t *end = transfers + num; - 28214: eb00 1c81 add.w ip, r0, r1, lsl #6 + 28300: eb00 1c81 add.w ip, r0, r1, lsl #6 for (Transfer_t *transfer = transfers ; transfer < end; transfer++) { - 28218: 4560 cmp r0, ip - 2821a: d211 bcs.n 28240 - 2821c: 4602 mov r2, r0 + 28304: 4560 cmp r0, ip + 28306: d211 bcs.n 2832c + 28308: 4602 mov r2, r0 { - 2821e: b510 push {r4, lr} - 28220: 4c08 ldr r4, [pc, #32] ; (28244 ) - 28222: ea4f 1e81 mov.w lr, r1, lsl #6 - 28226: 6821 ldr r1, [r4, #0] + 2830a: b510 push {r4, lr} + 2830c: 4c08 ldr r4, [pc, #32] ; (28330 ) + 2830e: ea4f 1e81 mov.w lr, r1, lsl #6 + 28312: 6821 ldr r1, [r4, #0] *(Transfer_t **)transfer = free_Transfer_list; - 28228: 4613 mov r3, r2 - 2822a: f843 1b40 str.w r1, [r3], #64 + 28314: 4613 mov r3, r2 + 28316: f843 1b40 str.w r1, [r3], #64 for (Transfer_t *transfer = transfers ; transfer < end; transfer++) { - 2822e: 459c cmp ip, r3 - 28230: 4611 mov r1, r2 - 28232: 461a mov r2, r3 - 28234: d8f8 bhi.n 28228 - 28236: f1ae 0e40 sub.w lr, lr, #64 ; 0x40 - 2823a: 4470 add r0, lr - 2823c: 6020 str r0, [r4, #0] -} - 2823e: bd10 pop {r4, pc} - 28240: 4770 bx lr - 28242: bf00 nop - 28244: 2000b6d8 .word 0x2000b6d8 - -00028248 : + 2831a: 459c cmp ip, r3 + 2831c: 4611 mov r1, r2 + 2831e: 461a mov r2, r3 + 28320: d8f8 bhi.n 28314 + 28322: f1ae 0e40 sub.w lr, lr, #64 ; 0x40 + 28326: 4470 add r0, lr + 28328: 6020 str r0, [r4, #0] +} + 2832a: bd10 pop {r4, pc} + 2832c: 4770 bx lr + 2832e: bf00 nop + 28330: 2000b6f8 .word 0x2000b6f8 + +00028334 : strbuf_t *end = strbufs + num; - 28248: 2335 movs r3, #53 ; 0x35 - 2824a: fb03 0101 mla r1, r3, r1, r0 + 28334: 2335 movs r3, #53 ; 0x35 + 28336: fb03 0101 mla r1, r3, r1, r0 for (strbuf_t *str = strbufs ; str < end; str++) { - 2824e: 4288 cmp r0, r1 - 28250: d20e bcs.n 28270 + 2833a: 4288 cmp r0, r1 + 2833c: d20e bcs.n 2835c { - 28252: b410 push {r4} - 28254: 4c07 ldr r4, [pc, #28] ; (28274 ) - 28256: 6822 ldr r2, [r4, #0] - 28258: e000 b.n 2825c - 2825a: 4618 mov r0, r3 + 2833e: b410 push {r4} + 28340: 4c07 ldr r4, [pc, #28] ; (28360 ) + 28342: 6822 ldr r2, [r4, #0] + 28344: e000 b.n 28348 + 28346: 4618 mov r0, r3 *(strbuf_t **)strbuf = free_strbuf_list; - 2825c: 4603 mov r3, r0 - 2825e: f843 2b35 str.w r2, [r3], #53 + 28348: 4603 mov r3, r0 + 2834a: f843 2b35 str.w r2, [r3], #53 for (strbuf_t *str = strbufs ; str < end; str++) { - 28262: 4299 cmp r1, r3 - 28264: 4602 mov r2, r0 - 28266: d8f8 bhi.n 2825a - 28268: 6020 str r0, [r4, #0] -} - 2826a: f85d 4b04 ldr.w r4, [sp], #4 - 2826e: 4770 bx lr - 28270: 4770 bx lr - 28272: bf00 nop - 28274: 2000b5d0 .word 0x2000b5d0 - -00028278 : + 2834e: 4299 cmp r1, r3 + 28350: 4602 mov r2, r0 + 28352: d8f8 bhi.n 28346 + 28354: 6020 str r0, [r4, #0] +} + 28356: f85d 4b04 ldr.w r4, [sp], #4 + 2835a: 4770 bx lr + 2835c: 4770 bx lr + 2835e: bf00 nop + 28360: 2000b5f0 .word 0x2000b5f0 + +00028364 : if (transfer->driver) { - 28278: 6bc3 ldr r3, [r0, #60] ; 0x3c - 2827a: b133 cbz r3, 2828a + 28364: 6bc3 ldr r3, [r0, #60] ; 0x3c + 28366: b133 cbz r3, 28376 print_hexbytes(transfer->buffer, tx_size); - 2827c: 6ac2 ldr r2, [r0, #44] ; 0x2c + 28368: 6ac2 ldr r2, [r0, #44] ; 0x2c if (transfer->buffer == tx_buffer1) { - 2827e: 6b59 ldr r1, [r3, #52] ; 0x34 - 28280: 428a cmp r2, r1 - 28282: d003 beq.n 2828c + 2836a: 6b59 ldr r1, [r3, #52] ; 0x34 + 2836c: 428a cmp r2, r1 + 2836e: d003 beq.n 28378 } else if (transfer->buffer == tx_buffer2) { - 28284: 6b99 ldr r1, [r3, #56] ; 0x38 - 28286: 428a cmp r2, r1 - 28288: d004 beq.n 28294 + 28370: 6b99 ldr r1, [r3, #56] ; 0x38 + 28372: 428a cmp r2, r1 + 28374: d004 beq.n 28380 } - 2828a: 4770 bx lr + 28376: 4770 bx lr tx1_count = 0; - 2828c: 2200 movs r2, #0 - 2828e: f883 204e strb.w r2, [r3, #78] ; 0x4e - 28292: 4770 bx lr + 28378: 2200 movs r2, #0 + 2837a: f883 204e strb.w r2, [r3, #78] ; 0x4e + 2837e: 4770 bx lr tx2_count = 0; - 28294: 2200 movs r2, #0 - 28296: f883 204f strb.w r2, [r3, #79] ; 0x4f + 28380: 2200 movs r2, #0 + 28382: f883 204f strb.w r2, [r3, #79] ; 0x4f } - 2829a: 4770 bx lr + 28386: 4770 bx lr -0002829c : +00028388 : rxpipe = NULL; - 2829c: 2300 movs r3, #0 + 28388: 2300 movs r3, #0 txpipe = NULL; - 2829e: e9c0 3303 strd r3, r3, [r0, #12] + 2838a: e9c0 3303 strd r3, r3, [r0, #12] } - 282a2: 4770 bx lr + 2838e: 4770 bx lr -000282a4 : +00028390 : { - 282a4: b570 push {r4, r5, r6, lr} + 28390: b570 push {r4, r5, r6, lr} const uint32_t tx_max = tx_size / 4; - 282a6: 8fc3 ldrh r3, [r0, #62] ; 0x3e + 28392: 8fc3 ldrh r3, [r0, #62] ; 0x3e { - 282a8: 4604 mov r4, r0 + 28394: 4604 mov r4, r0 uint32_t tx1 = tx1_count; - 282aa: f890 104e ldrb.w r1, [r0, #78] ; 0x4e + 28396: f890 104e ldrb.w r1, [r0, #78] ; 0x4e const uint32_t tx_max = tx_size / 4; - 282ae: 089d lsrs r5, r3, #2 + 2839a: 089d lsrs r5, r3, #2 if (tx1 > 0) { - 282b0: b929 cbnz r1, 282be + 2839c: b929 cbnz r1, 283aa uint32_t tx2 = tx2_count; - 282b2: f894 304f ldrb.w r3, [r4, #79] ; 0x4f + 2839e: f894 304f ldrb.w r3, [r4, #79] ; 0x4f if (tx2 > 0) { - 282b6: f003 02ff and.w r2, r3, #255 ; 0xff - 282ba: b98b cbnz r3, 282e0 + 283a2: f003 02ff and.w r2, r3, #255 ; 0xff + 283a6: b98b cbnz r3, 283cc } - 282bc: bd70 pop {r4, r5, r6, pc} + 283a8: bd70 pop {r4, r5, r6, pc} tx1_count = tx_max; - 282be: f001 02ff and.w r2, r1, #255 ; 0xff - 282c2: b2e9 uxtb r1, r5 + 283aa: f001 02ff and.w r2, r1, #255 ; 0xff + 283ae: b2e9 uxtb r1, r5 queue_Data_Transfer(txpipe, tx_buffer1, tx1*4, this); - 282c4: 4603 mov r3, r0 + 283b0: 4603 mov r3, r0 tx1_count = tx_max; - 282c6: f880 104e strb.w r1, [r0, #78] ; 0x4e + 283b2: f880 104e strb.w r1, [r0, #78] ; 0x4e queue_Data_Transfer(txpipe, tx_buffer1, tx1*4, this); - 282ca: 0092 lsls r2, r2, #2 - 282cc: 6b41 ldr r1, [r0, #52] ; 0x34 - 282ce: 6900 ldr r0, [r0, #16] - 282d0: f7fe fee2 bl 27098 + 283b6: 0092 lsls r2, r2, #2 + 283b8: 6b41 ldr r1, [r0, #52] ; 0x34 + 283ba: 6900 ldr r0, [r0, #16] + 283bc: f7fe fee2 bl 27184 uint32_t tx2 = tx2_count; - 282d4: f894 304f ldrb.w r3, [r4, #79] ; 0x4f + 283c0: f894 304f ldrb.w r3, [r4, #79] ; 0x4f if (tx2 > 0) { - 282d8: f003 02ff and.w r2, r3, #255 ; 0xff - 282dc: 2b00 cmp r3, #0 - 282de: d0ed beq.n 282bc + 283c4: f003 02ff and.w r2, r3, #255 ; 0xff + 283c8: 2b00 cmp r3, #0 + 283ca: d0ed beq.n 283a8 tx2_count = tx_max; - 282e0: b2ed uxtb r5, r5 + 283cc: b2ed uxtb r5, r5 queue_Data_Transfer(txpipe, tx_buffer2, tx2*4, this); - 282e2: 4623 mov r3, r4 - 282e4: 6ba1 ldr r1, [r4, #56] ; 0x38 - 282e6: 0092 lsls r2, r2, #2 - 282e8: 6920 ldr r0, [r4, #16] + 283ce: 4623 mov r3, r4 + 283d0: 6ba1 ldr r1, [r4, #56] ; 0x38 + 283d2: 0092 lsls r2, r2, #2 + 283d4: 6920 ldr r0, [r4, #16] tx2_count = tx_max; - 282ea: f884 504f strb.w r5, [r4, #79] ; 0x4f + 283d6: f884 504f strb.w r5, [r4, #79] ; 0x4f } - 282ee: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 283da: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} queue_Data_Transfer(txpipe, tx_buffer2, tx2*4, this); - 282f2: f7fe bed1 b.w 27098 - 282f6: bf00 nop + 283de: f7fe bed1 b.w 27184 + 283e2: bf00 nop -000282f8 : +000283e4 : if (type != 1) return false; - 282f8: 2a01 cmp r2, #1 - 282fa: d001 beq.n 28300 - 282fc: 2000 movs r0, #0 + 283e4: 2a01 cmp r2, #1 + 283e6: d001 beq.n 283ec + 283e8: 2000 movs r0, #0 } - 282fe: 4770 bx lr + 283ea: 4770 bx lr if (p[0] != 9 || p[1] != 4) return false; // interface descriptor - 28300: 781a ldrb r2, [r3, #0] - 28302: 2a09 cmp r2, #9 - 28304: d1fa bne.n 282fc - 28306: 785a ldrb r2, [r3, #1] - 28308: 2a04 cmp r2, #4 - 2830a: d1f7 bne.n 282fc + 283ec: 781a ldrb r2, [r3, #0] + 283ee: 2a09 cmp r2, #9 + 283f0: d1fa bne.n 283e8 + 283f2: 785a ldrb r2, [r3, #1] + 283f4: 2a04 cmp r2, #4 + 283f6: d1f7 bne.n 283e8 { - 2830c: b570 push {r4, r5, r6, lr} - 2830e: b082 sub sp, #8 + 283f8: b570 push {r4, r5, r6, lr} + 283fa: b082 sub sp, #8 if (p[5] == 1 && p[6] == 3) { - 28310: 795a ldrb r2, [r3, #5] - 28312: 460d mov r5, r1 - 28314: 4604 mov r4, r0 + 283fc: 795a ldrb r2, [r3, #5] + 283fe: 460d mov r5, r1 + 28400: 4604 mov r4, r0 const uint8_t *end = p + len; - 28316: 9906 ldr r1, [sp, #24] + 28402: 9906 ldr r1, [sp, #24] if (p[5] == 1 && p[6] == 3) { - 28318: 2a01 cmp r2, #1 + 28404: 2a01 cmp r2, #1 const uint8_t *end = p + len; - 2831a: 4419 add r1, r3 + 28406: 4419 add r1, r3 if (p[5] == 1 && p[6] == 3) { - 2831c: d059 beq.n 283d2 + 28408: d059 beq.n 284be if (p[5] >= 2 && p[5] <= 18) return false; // definitely not MIDI - 2831e: 3a02 subs r2, #2 - 28320: 2a10 cmp r2, #16 - 28322: d925 bls.n 28370 + 2840a: 3a02 subs r2, #2 + 2840c: 2a10 cmp r2, #16 + 2840e: d925 bls.n 2845c p += 9; - 28324: 3309 adds r3, #9 + 28410: 3309 adds r3, #9 rx_ep = 0; - 28326: 2200 movs r2, #0 + 28412: 2200 movs r2, #0 while (p < end) { - 28328: 428b cmp r3, r1 + 28414: 428b cmp r3, r1 rx_ep = 0; - 2832a: f8a4 2050 strh.w r2, [r4, #80] ; 0x50 + 28416: f8a4 2050 strh.w r2, [r4, #80] ; 0x50 while (p < end) { - 2832e: d21f bcs.n 28370 + 2841a: d21f bcs.n 2845c len = *p; - 28330: f893 c000 ldrb.w ip, [r3] + 2841c: f893 c000 ldrb.w ip, [r3] ismidi = true; // p[6] is bInterfaceSubClass: 3 = MIDI - 28334: 4616 mov r6, r2 + 28420: 4616 mov r6, r2 if (len < 4) return false; // all audio desc are at least 4 bytes - 28336: f1bc 0f03 cmp.w ip, #3 - 2833a: d919 bls.n 28370 + 28422: f1bc 0f03 cmp.w ip, #3 + 28426: d919 bls.n 2845c if (p + len > end) return false; // reject if beyond end of data - 2833c: eb03 0e0c add.w lr, r3, ip - 28340: 4571 cmp r1, lr - 28342: d315 bcc.n 28370 + 28428: eb03 0e0c add.w lr, r3, ip + 2842c: 4571 cmp r1, lr + 2842e: d315 bcc.n 2845c uint32_t type = p[1]; - 28344: 785a ldrb r2, [r3, #1] + 28430: 785a ldrb r2, [r3, #1] if (type == 4 || type == 11) break; // interface or IAD, not for us - 28346: 2a0b cmp r2, #11 - 28348: bf18 it ne - 2834a: 2a04 cmpne r2, #4 - 2834c: bf0c ite eq - 2834e: 2001 moveq r0, #1 - 28350: 2000 movne r0, #0 - 28352: d071 beq.n 28438 + 28432: 2a0b cmp r2, #11 + 28434: bf18 it ne + 28436: 2a04 cmpne r2, #4 + 28438: bf0c ite eq + 2843a: 2001 moveq r0, #1 + 2843c: 2000 movne r0, #0 + 2843e: d071 beq.n 28524 if (type == 0x24) { // 0x24 = Audio CS_INTERFACE, audio 1.0, page 99 - 28354: 2a24 cmp r2, #36 ; 0x24 - 28356: d00e beq.n 28376 + 28440: 2a24 cmp r2, #36 ; 0x24 + 28442: d00e beq.n 28462 } else if (type == 5) { - 28358: 2a05 cmp r2, #5 - 2835a: d01b beq.n 28394 + 28444: 2a05 cmp r2, #5 + 28446: d01b beq.n 28480 } else if (type == 37) { - 2835c: 2a25 cmp r2, #37 ; 0x25 - 2835e: d107 bne.n 28370 + 28448: 2a25 cmp r2, #37 ; 0x25 + 2844a: d107 bne.n 2845c while (p < end) { - 28360: 4571 cmp r1, lr - 28362: d969 bls.n 28438 - 28364: 4673 mov r3, lr + 2844c: 4571 cmp r1, lr + 2844e: d969 bls.n 28524 + 28450: 4673 mov r3, lr len = *p; - 28366: f893 c000 ldrb.w ip, [r3] + 28452: f893 c000 ldrb.w ip, [r3] if (len < 4) return false; // all audio desc are at least 4 bytes - 2836a: f1bc 0f03 cmp.w ip, #3 - 2836e: d8e5 bhi.n 2833c + 28456: f1bc 0f03 cmp.w ip, #3 + 2845a: d8e5 bhi.n 28428 if (type != 1) return false; - 28370: 2000 movs r0, #0 + 2845c: 2000 movs r0, #0 } - 28372: b002 add sp, #8 - 28374: bd70 pop {r4, r5, r6, pc} + 2845e: b002 add sp, #8 + 28460: bd70 pop {r4, r5, r6, pc} uint32_t subtype = p[2]; - 28376: 789a ldrb r2, [r3, #2] + 28462: 789a ldrb r2, [r3, #2] if (subtype == 1) { - 28378: 2a01 cmp r2, #1 - 2837a: d006 beq.n 2838a + 28464: 2a01 cmp r2, #1 + 28466: d006 beq.n 28476 } else if (subtype == 2) { - 2837c: 2a04 cmp r2, #4 - 2837e: d906 bls.n 2838e - 28380: 2af1 cmp r2, #241 ; 0xf1 - 28382: d1f6 bne.n 28372 + 28468: 2a04 cmp r2, #4 + 2846a: d906 bls.n 2847a + 2846c: 2af1 cmp r2, #241 ; 0xf1 + 2846e: d1f6 bne.n 2845e } else if (subtype == 0xF1 && p[3] == 2) { - 28384: 78db ldrb r3, [r3, #3] - 28386: 2b02 cmp r3, #2 - 28388: d1f2 bne.n 28370 + 28470: 78db ldrb r3, [r3, #3] + 28472: 2b02 cmp r3, #2 + 28474: d1f2 bne.n 2845c ismidi = true; - 2838a: 2601 movs r6, #1 - 2838c: e7e8 b.n 28360 - 2838e: 2a01 cmp r2, #1 - 28390: d9ef bls.n 28372 - 28392: e7fa b.n 2838a + 28476: 2601 movs r6, #1 + 28478: e7e8 b.n 2844c + 2847a: 2a01 cmp r2, #1 + 2847c: d9ef bls.n 2845e + 2847e: e7fa b.n 28476 if (p[0] < 7) return false; // at least 7 bytes - 28394: f1bc 0f06 cmp.w ip, #6 - 28398: d9ea bls.n 28370 + 28480: f1bc 0f06 cmp.w ip, #6 + 28484: d9ea bls.n 2845c if (p[3] != 2 && p[3] != 3) return false; // must be bulk or interrupt type - 2839a: f893 c003 ldrb.w ip, [r3, #3] - 2839e: f1ac 0c02 sub.w ip, ip, #2 - 283a2: f1bc 0f01 cmp.w ip, #1 - 283a6: d8e3 bhi.n 28370 + 28486: f893 c003 ldrb.w ip, [r3, #3] + 2848a: f1ac 0c02 sub.w ip, ip, #2 + 2848e: f1bc 0f01 cmp.w ip, #1 + 28492: d8e3 bhi.n 2845c println(" MIDI Endpoint: ", p[2], HEX); - 283a8: f893 c002 ldrb.w ip, [r3, #2] + 28494: f893 c002 ldrb.w ip, [r3, #2] switch (p[2] & 0xF0) { - 283ac: f01c 02f0 ands.w r2, ip, #240 ; 0xf0 - 283b0: d036 beq.n 28420 - 283b2: 2a80 cmp r2, #128 ; 0x80 - 283b4: d1dd bne.n 28372 + 28498: f01c 02f0 ands.w r2, ip, #240 ; 0xf0 + 2849c: d036 beq.n 2850c + 2849e: 2a80 cmp r2, #128 ; 0x80 + 284a0: d1dd bne.n 2845e if (rx_ep == 0) { - 283b6: f894 2050 ldrb.w r2, [r4, #80] ; 0x50 - 283ba: 2a00 cmp r2, #0 - 283bc: d1d0 bne.n 28360 + 284a2: f894 2050 ldrb.w r2, [r4, #80] ; 0x50 + 284a6: 2a00 cmp r2, #0 + 284a8: d1d0 bne.n 2844c rx_ep = p[2] & 0x0F; - 283be: f00c 0c0f and.w ip, ip, #15 - 283c2: f884 c050 strb.w ip, [r4, #80] ; 0x50 + 284aa: f00c 0c0f and.w ip, ip, #15 + 284ae: f884 c050 strb.w ip, [r4, #80] ; 0x50 rx_ep_type = p[3]; - 283c6: 78da ldrb r2, [r3, #3] - 283c8: f884 2052 strb.w r2, [r4, #82] ; 0x52 + 284b2: 78da ldrb r2, [r3, #3] + 284b4: f884 2052 strb.w r2, [r4, #82] ; 0x52 rx_size = p[4] | (p[5] << 8); - 283cc: 889b ldrh r3, [r3, #4] - 283ce: 87a3 strh r3, [r4, #60] ; 0x3c + 284b8: 889b ldrh r3, [r3, #4] + 284ba: 87a3 strh r3, [r4, #60] ; 0x3c static void println_(const char *s, int n, uint8_t b = DEC) {} - 283d0: e7c6 b.n 28360 + 284bc: e7c6 b.n 2844c if (p[5] == 1 && p[6] == 3) { - 283d2: 7998 ldrb r0, [r3, #6] - 283d4: 2803 cmp r0, #3 - 283d6: d1a5 bne.n 28324 + 284be: 7998 ldrb r0, [r3, #6] + 284c0: 2803 cmp r0, #3 + 284c2: d1a5 bne.n 28410 p += 9; - 283d8: 3309 adds r3, #9 + 284c4: 3309 adds r3, #9 rx_ep = 0; - 283da: 2000 movs r0, #0 + 284c6: 2000 movs r0, #0 while (p < end) { - 283dc: 4299 cmp r1, r3 + 284c8: 4299 cmp r1, r3 rx_ep = 0; - 283de: f8a4 0050 strh.w r0, [r4, #80] ; 0x50 + 284ca: f8a4 0050 strh.w r0, [r4, #80] ; 0x50 while (p < end) { - 283e2: d8a5 bhi.n 28330 + 284ce: d8a5 bhi.n 2841c rxpipe = NULL; - 283e4: 2300 movs r3, #0 - 283e6: 60e3 str r3, [r4, #12] + 284d0: 2300 movs r3, #0 + 284d2: 60e3 str r3, [r4, #12] if (tx_ep && tx_size <= max_packet_size) { - 283e8: f894 2051 ldrb.w r2, [r4, #81] ; 0x51 - 283ec: b122 cbz r2, 283f8 - 283ee: 8fe1 ldrh r1, [r4, #62] ; 0x3e - 283f0: f8b4 3046 ldrh.w r3, [r4, #70] ; 0x46 - 283f4: 428b cmp r3, r1 - 283f6: d246 bcs.n 28486 + 284d4: f894 2051 ldrb.w r2, [r4, #81] ; 0x51 + 284d8: b122 cbz r2, 284e4 + 284da: 8fe1 ldrh r1, [r4, #62] ; 0x3e + 284dc: f8b4 3046 ldrh.w r3, [r4, #70] ; 0x46 + 284e0: 428b cmp r3, r1 + 284e2: d246 bcs.n 28572 txpipe = NULL; - 283f8: 2300 movs r3, #0 - 283fa: 6123 str r3, [r4, #16] + 284e4: 2300 movs r3, #0 + 284e6: 6123 str r3, [r4, #16] rx_head = 0; - 283fc: 2300 movs r3, #0 + 284e8: 2300 movs r3, #0 return (rxpipe || txpipe); - 283fe: 68e2 ldr r2, [r4, #12] + 284ea: 68e2 ldr r2, [r4, #12] rx_head = 0; - 28400: f8a4 304a strh.w r3, [r4, #74] ; 0x4a + 284ec: f8a4 304a strh.w r3, [r4, #74] ; 0x4a rx_tail = 0; - 28404: f8a4 304c strh.w r3, [r4, #76] ; 0x4c + 284f0: f8a4 304c strh.w r3, [r4, #76] ; 0x4c msg_channel = 0; - 28408: f884 3055 strb.w r3, [r4, #85] ; 0x55 + 284f4: f884 3055 strb.w r3, [r4, #85] ; 0x55 msg_type = 0; - 2840c: f8a4 3056 strh.w r3, [r4, #86] ; 0x56 + 284f8: f8a4 3056 strh.w r3, [r4, #86] ; 0x56 msg_data2 = 0; - 28410: f884 3058 strb.w r3, [r4, #88] ; 0x58 + 284fc: f884 3058 strb.w r3, [r4, #88] ; 0x58 msg_sysex_len = 0; - 28414: f8a4 317c strh.w r3, [r4, #380] ; 0x17c + 28500: f8a4 317c strh.w r3, [r4, #380] ; 0x17c return (rxpipe || txpipe); - 28418: 2a00 cmp r2, #0 - 2841a: d02f beq.n 2847c - 2841c: 2001 movs r0, #1 - 2841e: e7a8 b.n 28372 + 28504: 2a00 cmp r2, #0 + 28506: d02f beq.n 28568 + 28508: 2001 movs r0, #1 + 2850a: e7a8 b.n 2845e if (tx_ep == 0) { - 28420: f894 2051 ldrb.w r2, [r4, #81] ; 0x51 - 28424: 2a00 cmp r2, #0 - 28426: d19b bne.n 28360 + 2850c: f894 2051 ldrb.w r2, [r4, #81] ; 0x51 + 28510: 2a00 cmp r2, #0 + 28512: d19b bne.n 2844c tx_ep = p[2]; - 28428: f884 c051 strb.w ip, [r4, #81] ; 0x51 + 28514: f884 c051 strb.w ip, [r4, #81] ; 0x51 tx_ep_type = p[3]; - 2842c: 78da ldrb r2, [r3, #3] - 2842e: f884 2053 strb.w r2, [r4, #83] ; 0x53 + 28518: 78da ldrb r2, [r3, #3] + 2851a: f884 2053 strb.w r2, [r4, #83] ; 0x53 tx_size = p[4] | (p[5] << 8); - 28432: 889b ldrh r3, [r3, #4] - 28434: 87e3 strh r3, [r4, #62] ; 0x3e - 28436: e793 b.n 28360 + 2851e: 889b ldrh r3, [r3, #4] + 28520: 87e3 strh r3, [r4, #62] ; 0x3e + 28522: e793 b.n 2844c if (!ismidi) { - 28438: 2e00 cmp r6, #0 - 2843a: d099 beq.n 28370 + 28524: 2e00 cmp r6, #0 + 28526: d099 beq.n 2845c if (rx_ep && rx_size <= max_packet_size) { - 2843c: f894 2050 ldrb.w r2, [r4, #80] ; 0x50 - 28440: 2a00 cmp r2, #0 - 28442: d0cf beq.n 283e4 - 28444: 8fa3 ldrh r3, [r4, #60] ; 0x3c - 28446: f8b4 1046 ldrh.w r1, [r4, #70] ; 0x46 - 2844a: 4299 cmp r1, r3 - 2844c: d3ca bcc.n 283e4 + 28528: f894 2050 ldrb.w r2, [r4, #80] ; 0x50 + 2852c: 2a00 cmp r2, #0 + 2852e: d0cf beq.n 284d0 + 28530: 8fa3 ldrh r3, [r4, #60] ; 0x3c + 28532: f8b4 1046 ldrh.w r1, [r4, #70] ; 0x46 + 28536: 4299 cmp r1, r3 + 28538: d3ca bcc.n 284d0 rxpipe = new_Pipe(dev, rx_ep_type, rx_ep, 1, rx_size); - 2844e: 2100 movs r1, #0 - 28450: 9300 str r3, [sp, #0] - 28452: 4628 mov r0, r5 - 28454: 2301 movs r3, #1 - 28456: 9101 str r1, [sp, #4] - 28458: f894 1052 ldrb.w r1, [r4, #82] ; 0x52 - 2845c: f7ff f9b6 bl 277cc - 28460: 60e0 str r0, [r4, #12] + 2853a: 2100 movs r1, #0 + 2853c: 9300 str r3, [sp, #0] + 2853e: 4628 mov r0, r5 + 28540: 2301 movs r3, #1 + 28542: 9101 str r1, [sp, #4] + 28544: f894 1052 ldrb.w r1, [r4, #82] ; 0x52 + 28548: f7ff f9b6 bl 278b8 + 2854c: 60e0 str r0, [r4, #12] if (rxpipe) { - 28462: 2800 cmp r0, #0 - 28464: d0c0 beq.n 283e8 + 2854e: 2800 cmp r0, #0 + 28550: d0c0 beq.n 284d4 rxpipe->callback_function = rx_callback; - 28466: 4a11 ldr r2, [pc, #68] ; (284ac ) + 28552: 4a11 ldr r2, [pc, #68] ; (28598 ) queue_Data_Transfer(rxpipe, rx_buffer, rx_size, this); - 28468: 4623 mov r3, r4 - 2846a: 6b21 ldr r1, [r4, #48] ; 0x30 + 28554: 4623 mov r3, r4 + 28556: 6b21 ldr r1, [r4, #48] ; 0x30 rxpipe->callback_function = rx_callback; - 2846c: 63c2 str r2, [r0, #60] ; 0x3c + 28558: 63c2 str r2, [r0, #60] ; 0x3c queue_Data_Transfer(rxpipe, rx_buffer, rx_size, this); - 2846e: 8fa2 ldrh r2, [r4, #60] ; 0x3c - 28470: f7fe fe12 bl 27098 + 2855a: 8fa2 ldrh r2, [r4, #60] ; 0x3c + 2855c: f7fe fe12 bl 27184 rx_packet_queued = true; - 28474: 2301 movs r3, #1 - 28476: f884 3044 strb.w r3, [r4, #68] ; 0x44 - 2847a: e7b5 b.n 283e8 + 28560: 2301 movs r3, #1 + 28562: f884 3044 strb.w r3, [r4, #68] ; 0x44 + 28566: e7b5 b.n 284d4 return (rxpipe || txpipe); - 2847c: 6920 ldr r0, [r4, #16] - 2847e: 1ac0 subs r0, r0, r3 - 28480: bf18 it ne - 28482: 2001 movne r0, #1 - 28484: e775 b.n 28372 + 28568: 6920 ldr r0, [r4, #16] + 2856a: 1ac0 subs r0, r0, r3 + 2856c: bf18 it ne + 2856e: 2001 movne r0, #1 + 28570: e775 b.n 2845e txpipe = new_Pipe(dev, tx_ep_type, tx_ep, 0, tx_size); - 28486: 2600 movs r6, #0 - 28488: 9100 str r1, [sp, #0] - 2848a: 4628 mov r0, r5 - 2848c: 9601 str r6, [sp, #4] - 2848e: 4633 mov r3, r6 - 28490: f894 1053 ldrb.w r1, [r4, #83] ; 0x53 - 28494: f7ff f99a bl 277cc - 28498: 6120 str r0, [r4, #16] + 28572: 2600 movs r6, #0 + 28574: 9100 str r1, [sp, #0] + 28576: 4628 mov r0, r5 + 28578: 9601 str r6, [sp, #4] + 2857a: 4633 mov r3, r6 + 2857c: f894 1053 ldrb.w r1, [r4, #83] ; 0x53 + 28580: f7ff f99a bl 278b8 + 28584: 6120 str r0, [r4, #16] if (txpipe) { - 2849a: 2800 cmp r0, #0 - 2849c: d0ae beq.n 283fc + 28586: 2800 cmp r0, #0 + 28588: d0ae beq.n 284e8 txpipe->callback_function = tx_callback; - 2849e: 4b04 ldr r3, [pc, #16] ; (284b0 ) - 284a0: 63c3 str r3, [r0, #60] ; 0x3c + 2858a: 4b04 ldr r3, [pc, #16] ; (2859c ) + 2858c: 63c3 str r3, [r0, #60] ; 0x3c tx1_count = 0; - 284a2: f884 604e strb.w r6, [r4, #78] ; 0x4e + 2858e: f884 604e strb.w r6, [r4, #78] ; 0x4e tx2_count = 0; - 284a6: f884 604f strb.w r6, [r4, #79] ; 0x4f - 284aa: e7a7 b.n 283fc - 284ac: 000285a9 .word 0x000285a9 - 284b0: 00028279 .word 0x00028279 + 28592: f884 604f strb.w r6, [r4, #79] ; 0x4f + 28596: e7a7 b.n 284e8 + 28598: 00028695 .word 0x00028695 + 2859c: 00028365 .word 0x00028365 -000284b4 : +000285a0 : { - 284b4: b510 push {r4, lr} - 284b6: 4604 mov r4, r0 + 285a0: b510 push {r4, lr} + 285a2: 4604 mov r4, r0 contribute_Pipes(mypipes, sizeof(mypipes)/sizeof(Pipe_t)); - 284b8: 2103 movs r1, #3 - 284ba: f500 70f0 add.w r0, r0, #480 ; 0x1e0 - 284be: f7ff fe91 bl 281e4 + 285a4: 2103 movs r1, #3 + 285a6: f500 70f0 add.w r0, r0, #480 ; 0x1e0 + 285aa: f7ff fe91 bl 282d0 contribute_Transfers(mytransfers, sizeof(mytransfers)/sizeof(Transfer_t)); - 284c2: f504 7040 add.w r0, r4, #768 ; 0x300 - 284c6: 2107 movs r1, #7 - 284c8: f7ff fea4 bl 28214 + 285ae: f504 7040 add.w r0, r4, #768 ; 0x300 + 285b2: 2107 movs r1, #7 + 285b4: f7ff fea4 bl 28300 contribute_String_Buffers(mystring_bufs, sizeof(mystring_bufs)/sizeof(strbuf_t)); - 284cc: f504 6098 add.w r0, r4, #1216 ; 0x4c0 - 284d0: 2101 movs r1, #1 - 284d2: f7ff feb9 bl 28248 + 285b8: f504 6098 add.w r0, r4, #1216 ; 0x4c0 + 285bc: 2101 movs r1, #1 + 285be: f7ff feb9 bl 28334 handleNoteOff = NULL; - 284d6: 2300 movs r3, #0 + 285c2: 2300 movs r3, #0 driver_ready_for_device(this); - 284d8: 4620 mov r0, r4 + 285c4: 4620 mov r0, r4 rx_head = 0; - 284da: f8a4 304a strh.w r3, [r4, #74] ; 0x4a + 285c6: f8a4 304a strh.w r3, [r4, #74] ; 0x4a rx_tail = 0; - 284de: f8a4 304c strh.w r3, [r4, #76] ; 0x4c + 285ca: f8a4 304c strh.w r3, [r4, #76] ; 0x4c handleNoteOn = NULL; - 284e2: e9c4 3360 strd r3, r3, [r4, #384] ; 0x180 + 285ce: e9c4 3360 strd r3, r3, [r4, #384] ; 0x180 handleControlChange = NULL; - 284e6: e9c4 3362 strd r3, r3, [r4, #392] ; 0x188 + 285d2: e9c4 3362 strd r3, r3, [r4, #392] ; 0x188 handleAfterTouch = NULL; - 284ea: e9c4 3364 strd r3, r3, [r4, #400] ; 0x190 + 285d6: e9c4 3364 strd r3, r3, [r4, #400] ; 0x190 handleSysExPartial = NULL; - 284ee: e9c4 3366 strd r3, r3, [r4, #408] ; 0x198 + 285da: e9c4 3366 strd r3, r3, [r4, #408] ; 0x198 handleTimeCodeQuarterFrame = NULL; - 284f2: e9c4 3368 strd r3, r3, [r4, #416] ; 0x1a0 + 285de: e9c4 3368 strd r3, r3, [r4, #416] ; 0x1a0 handleSongSelect = NULL; - 284f6: e9c4 336a strd r3, r3, [r4, #424] ; 0x1a8 + 285e2: e9c4 336a strd r3, r3, [r4, #424] ; 0x1a8 handleClock = NULL; - 284fa: e9c4 336c strd r3, r3, [r4, #432] ; 0x1b0 + 285e6: e9c4 336c strd r3, r3, [r4, #432] ; 0x1b0 handleContinue = NULL; - 284fe: e9c4 336e strd r3, r3, [r4, #440] ; 0x1b8 + 285ea: e9c4 336e strd r3, r3, [r4, #440] ; 0x1b8 handleActiveSensing = NULL; - 28502: e9c4 3370 strd r3, r3, [r4, #448] ; 0x1c0 + 285ee: e9c4 3370 strd r3, r3, [r4, #448] ; 0x1c0 handleRealTimeSystem = NULL; - 28506: e9c4 3372 strd r3, r3, [r4, #456] ; 0x1c8 + 285f2: e9c4 3372 strd r3, r3, [r4, #456] ; 0x1c8 txpipe = NULL; - 2850a: e9c4 3303 strd r3, r3, [r4, #12] + 285f6: e9c4 3303 strd r3, r3, [r4, #12] } - 2850e: e8bd 4010 ldmia.w sp!, {r4, lr} + 285fa: e8bd 4010 ldmia.w sp!, {r4, lr} driver_ready_for_device(this); - 28512: f7ff bb2b b.w 27b6c - 28516: bf00 nop + 285fe: f7ff bb2b b.w 27c58 + 28602: bf00 nop -00028518 : +00028604 : uint32_t len = (transfer->length - ((transfer->qtd.token >> 16) & 0x7FFF)) >> 2; - 28518: 688a ldr r2, [r1, #8] - 2851a: 6b0b ldr r3, [r1, #48] ; 0x30 - 2851c: f3c2 420e ubfx r2, r2, #16, #15 + 28604: 688a ldr r2, [r1, #8] + 28606: 6b0b ldr r3, [r1, #48] ; 0x30 + 28608: f3c2 420e ubfx r2, r2, #16, #15 uint32_t head = rx_head; - 28520: f8b0 104a ldrh.w r1, [r0, #74] ; 0x4a + 2860c: f8b0 104a ldrh.w r1, [r0, #74] ; 0x4a uint32_t tail = rx_tail; - 28524: f8b0 c04c ldrh.w ip, [r0, #76] ; 0x4c + 28610: f8b0 c04c ldrh.w ip, [r0, #76] ; 0x4c uint32_t len = (transfer->length - ((transfer->qtd.token >> 16) & 0x7FFF)) >> 2; - 28528: 1a9b subs r3, r3, r2 + 28614: 1a9b subs r3, r3, r2 for (uint32_t i=0; i < len; i++) { - 2852a: 089b lsrs r3, r3, #2 + 28616: 089b lsrs r3, r3, #2 { - 2852c: b570 push {r4, r5, r6, lr} - 2852e: 4605 mov r5, r0 + 28618: b570 push {r4, r5, r6, lr} + 2861a: 4605 mov r5, r0 for (uint32_t i=0; i < len; i++) { - 28530: d038 beq.n 285a4 + 2861c: d038 beq.n 28690 uint32_t msg = rx_buffer[i]; - 28532: 6b02 ldr r2, [r0, #48] ; 0x30 - 28534: 3a04 subs r2, #4 - 28536: eb02 0383 add.w r3, r2, r3, lsl #2 - 2853a: f852 4f04 ldr.w r4, [r2, #4]! + 2861e: 6b02 ldr r2, [r0, #48] ; 0x30 + 28620: 3a04 subs r2, #4 + 28622: eb02 0383 add.w r3, r2, r3, lsl #2 + 28626: f852 4f04 ldr.w r4, [r2, #4]! if (msg) { - 2853e: b154 cbz r4, 28556 + 2862a: b154 cbz r4, 28642 if (++head >= rx_queue_size) head = 0; - 28540: 3101 adds r1, #1 - 28542: f8b5 0048 ldrh.w r0, [r5, #72] ; 0x48 - 28546: 4288 cmp r0, r1 + 2862c: 3101 adds r1, #1 + 2862e: f8b5 0048 ldrh.w r0, [r5, #72] ; 0x48 + 28632: 4288 cmp r0, r1 rx_queue[head] = msg; - 28548: ea4f 0081 mov.w r0, r1, lsl #2 + 28634: ea4f 0081 mov.w r0, r1, lsl #2 if (++head >= rx_queue_size) head = 0; - 2854c: d801 bhi.n 28552 - 2854e: 2100 movs r1, #0 - 28550: 4608 mov r0, r1 + 28638: d801 bhi.n 2863e + 2863a: 2100 movs r1, #0 + 2863c: 4608 mov r0, r1 rx_queue[head] = msg; - 28552: 6c2e ldr r6, [r5, #64] ; 0x40 - 28554: 5034 str r4, [r6, r0] + 2863e: 6c2e ldr r6, [r5, #64] ; 0x40 + 28640: 5034 str r4, [r6, r0] for (uint32_t i=0; i < len; i++) { - 28556: 429a cmp r2, r3 - 28558: d1ef bne.n 2853a + 28642: 429a cmp r2, r3 + 28644: d1ef bne.n 28626 rx_head = head; - 2855a: b288 uxth r0, r1 + 28646: b288 uxth r0, r1 uint32_t avail = (head < tail) ? tail - head - 1 : rx_queue_size - 1 - head + tail; - 2855c: 458c cmp ip, r1 + 28648: 458c cmp ip, r1 rx_head = head; - 2855e: f8a5 004a strh.w r0, [r5, #74] ; 0x4a + 2864a: f8a5 004a strh.w r0, [r5, #74] ; 0x4a rx_tail = tail; - 28562: f8a5 c04c strh.w ip, [r5, #76] ; 0x4c + 2864e: f8a5 c04c strh.w ip, [r5, #76] ; 0x4c uint32_t avail = (head < tail) ? tail - head - 1 : rx_queue_size - 1 - head + tail; - 28566: d90b bls.n 28580 - 28568: f10c 3cff add.w ip, ip, #4294967295 ; 0xffffffff + 28652: d90b bls.n 2866c + 28654: f10c 3cff add.w ip, ip, #4294967295 ; 0xffffffff if (avail >= (uint32_t)(rx_size>>2)) { - 2856c: 8faa ldrh r2, [r5, #60] ; 0x3c + 28658: 8faa ldrh r2, [r5, #60] ; 0x3c uint32_t avail = (head < tail) ? tail - head - 1 : rx_queue_size - 1 - head + tail; - 2856e: ebac 0101 sub.w r1, ip, r1 + 2865a: ebac 0101 sub.w r1, ip, r1 if (avail >= (uint32_t)(rx_size>>2)) { - 28572: ebb1 0f92 cmp.w r1, r2, lsr #2 - 28576: d20c bcs.n 28592 - 28578: 2300 movs r3, #0 + 2865e: ebb1 0f92 cmp.w r1, r2, lsr #2 + 28662: d20c bcs.n 2867e + 28664: 2300 movs r3, #0 rx_packet_queued = true; - 2857a: f885 3044 strb.w r3, [r5, #68] ; 0x44 + 28666: f885 3044 strb.w r3, [r5, #68] ; 0x44 } - 2857e: bd70 pop {r4, r5, r6, pc} + 2866a: bd70 pop {r4, r5, r6, pc} uint32_t avail = (head < tail) ? tail - head - 1 : rx_queue_size - 1 - head + tail; - 28580: f8b5 3048 ldrh.w r3, [r5, #72] ; 0x48 + 2866c: f8b5 3048 ldrh.w r3, [r5, #72] ; 0x48 if (avail >= (uint32_t)(rx_size>>2)) { - 28584: 8faa ldrh r2, [r5, #60] ; 0x3c + 28670: 8faa ldrh r2, [r5, #60] ; 0x3c uint32_t avail = (head < tail) ? tail - head - 1 : rx_queue_size - 1 - head + tail; - 28586: 4463 add r3, ip - 28588: 3b01 subs r3, #1 - 2858a: 1a59 subs r1, r3, r1 + 28672: 4463 add r3, ip + 28674: 3b01 subs r3, #1 + 28676: 1a59 subs r1, r3, r1 if (avail >= (uint32_t)(rx_size>>2)) { - 2858c: ebb1 0f92 cmp.w r1, r2, lsr #2 - 28590: d3f2 bcc.n 28578 + 28678: ebb1 0f92 cmp.w r1, r2, lsr #2 + 2867c: d3f2 bcc.n 28664 queue_Data_Transfer(rxpipe, rx_buffer, rx_size, this); - 28592: 462b mov r3, r5 - 28594: 6b29 ldr r1, [r5, #48] ; 0x30 - 28596: 68e8 ldr r0, [r5, #12] - 28598: f7fe fd7e bl 27098 + 2867e: 462b mov r3, r5 + 28680: 6b29 ldr r1, [r5, #48] ; 0x30 + 28682: 68e8 ldr r0, [r5, #12] + 28684: f7fe fd7e bl 27184 rx_packet_queued = true; - 2859c: 2301 movs r3, #1 - 2859e: f885 3044 strb.w r3, [r5, #68] ; 0x44 + 28688: 2301 movs r3, #1 + 2868a: f885 3044 strb.w r3, [r5, #68] ; 0x44 } - 285a2: bd70 pop {r4, r5, r6, pc} - 285a4: 4608 mov r0, r1 - 285a6: e7d9 b.n 2855c + 2868e: bd70 pop {r4, r5, r6, pc} + 28690: 4608 mov r0, r1 + 28692: e7d9 b.n 28648 -000285a8 : +00028694 : { - 285a8: 4601 mov r1, r0 + 28694: 4601 mov r1, r0 if (transfer->driver) { - 285aa: 6bc0 ldr r0, [r0, #60] ; 0x3c - 285ac: b108 cbz r0, 285b2 + 28696: 6bc0 ldr r0, [r0, #60] ; 0x3c + 28698: b108 cbz r0, 2869e ((MIDIDevice *)(transfer->driver))->rx_data(transfer); - 285ae: f7ff bfb3 b.w 28518 + 2869a: f7ff bfb3 b.w 28604 } - 285b2: 4770 bx lr + 2869e: 4770 bx lr -000285b4 : +000286a0 : if (!txpipe) return; - 285b4: 6903 ldr r3, [r0, #16] - 285b6: 2b00 cmp r3, #0 - 285b8: d04c beq.n 28654 + 286a0: 6903 ldr r3, [r0, #16] + 286a2: 2b00 cmp r3, #0 + 286a4: d04c beq.n 28740 { - 285ba: b570 push {r4, r5, r6, lr} + 286a6: b570 push {r4, r5, r6, lr} uint32_t tx_max = tx_size / 4; - 285bc: 8fc5 ldrh r5, [r0, #62] ; 0x3e + 286a8: 8fc5 ldrh r5, [r0, #62] ; 0x3e { - 285be: b082 sub sp, #8 - 285c0: 4606 mov r6, r0 + 286aa: b082 sub sp, #8 + 286ac: 4606 mov r6, r0 uint32_t tx_max = tx_size / 4; - 285c2: 08ad lsrs r5, r5, #2 + 286ae: 08ad lsrs r5, r5, #2 __disable_irq(); - 285c4: b672 cpsid i + 286b0: b672 cpsid i uint32_t tx1 = tx1_count; - 285c6: f896 404e ldrb.w r4, [r6, #78] ; 0x4e + 286b2: f896 404e ldrb.w r4, [r6, #78] ; 0x4e uint32_t tx2 = tx2_count; - 285ca: f896 204f ldrb.w r2, [r6, #79] ; 0x4f + 286b6: f896 204f ldrb.w r2, [r6, #79] ; 0x4f if (tx1 < tx_max && (tx2 == 0 || tx2 >= tx_max)) { - 285ce: 42a5 cmp r5, r4 + 286ba: 42a5 cmp r5, r4 uint32_t tx1 = tx1_count; - 285d0: b2e3 uxtb r3, r4 + 286bc: b2e3 uxtb r3, r4 uint32_t tx2 = tx2_count; - 285d2: b2d2 uxtb r2, r2 + 286be: b2d2 uxtb r2, r2 if (tx1 < tx_max && (tx2 == 0 || tx2 >= tx_max)) { - 285d4: d91b bls.n 2860e - 285d6: b1f2 cbz r2, 28616 - 285d8: 4295 cmp r5, r2 - 285da: d91c bls.n 28616 + 286c0: d91b bls.n 286fa + 286c2: b1f2 cbz r2, 28702 + 286c4: 4295 cmp r5, r2 + 286c6: d91c bls.n 28702 tx_buffer2[tx2++] = data; - 285dc: 6bb3 ldr r3, [r6, #56] ; 0x38 + 286c8: 6bb3 ldr r3, [r6, #56] ; 0x38 tx2_count = tx2; - 285de: 1c54 adds r4, r2, #1 + 286ca: 1c54 adds r4, r2, #1 txtimer.stop(); - 285e0: f106 0014 add.w r0, r6, #20 + 286cc: f106 0014 add.w r0, r6, #20 tx_buffer2[tx2++] = data; - 285e4: f843 1022 str.w r1, [r3, r2, lsl #2] + 286d0: f843 1022 str.w r1, [r3, r2, lsl #2] tx2_count = tx2; - 285e8: b2e3 uxtb r3, r4 + 286d4: b2e3 uxtb r3, r4 txtimer.stop(); - 285ea: 9001 str r0, [sp, #4] + 286d6: 9001 str r0, [sp, #4] tx2_count = tx2; - 285ec: f886 304f strb.w r3, [r6, #79] ; 0x4f + 286d8: f886 304f strb.w r3, [r6, #79] ; 0x4f txtimer.stop(); - 285f0: f7fe fc0c bl 26e0c + 286dc: f7fe fc0c bl 26ef8 if (tx2 >= tx_max) { - 285f4: 42a5 cmp r5, r4 - 285f6: 9801 ldr r0, [sp, #4] - 285f8: d923 bls.n 28642 + 286e0: 42a5 cmp r5, r4 + 286e2: 9801 ldr r0, [sp, #4] + 286e4: d923 bls.n 2872e txtimer.start(tx_max >= 128 ? 200 : 1500); - 285fa: 2d7f cmp r5, #127 ; 0x7f - 285fc: f240 51dc movw r1, #1500 ; 0x5dc - 28600: bf88 it hi - 28602: 21c8 movhi r1, #200 ; 0xc8 - 28604: f7fe fba4 bl 26d50 + 286e6: 2d7f cmp r5, #127 ; 0x7f + 286e8: f240 51dc movw r1, #1500 ; 0x5dc + 286ec: bf88 it hi + 286ee: 21c8 movhi r1, #200 ; 0xc8 + 286f0: f7fe fba4 bl 26e3c __enable_irq(); - 28608: b662 cpsie i + 286f4: b662 cpsie i } - 2860a: b002 add sp, #8 - 2860c: bd70 pop {r4, r5, r6, pc} + 286f6: b002 add sp, #8 + 286f8: bd70 pop {r4, r5, r6, pc} if (tx2 < tx_max) { - 2860e: 4295 cmp r5, r2 - 28610: d8e4 bhi.n 285dc + 286fa: 4295 cmp r5, r2 + 286fc: d8e4 bhi.n 286c8 __enable_irq(); - 28612: b662 cpsie i + 286fe: b662 cpsie i } - 28614: e7d6 b.n 285c4 + 28700: e7d6 b.n 286b0 tx_buffer1[tx1++] = data; - 28616: 6b72 ldr r2, [r6, #52] ; 0x34 + 28702: 6b72 ldr r2, [r6, #52] ; 0x34 tx1_count = tx1; - 28618: 1c5c adds r4, r3, #1 + 28704: 1c5c adds r4, r3, #1 txtimer.stop(); - 2861a: f106 0014 add.w r0, r6, #20 + 28706: f106 0014 add.w r0, r6, #20 tx_buffer1[tx1++] = data; - 2861e: f842 1023 str.w r1, [r2, r3, lsl #2] + 2870a: f842 1023 str.w r1, [r2, r3, lsl #2] tx1_count = tx1; - 28622: b2e3 uxtb r3, r4 + 2870e: b2e3 uxtb r3, r4 txtimer.stop(); - 28624: 9001 str r0, [sp, #4] + 28710: 9001 str r0, [sp, #4] tx1_count = tx1; - 28626: f886 304e strb.w r3, [r6, #78] ; 0x4e + 28712: f886 304e strb.w r3, [r6, #78] ; 0x4e txtimer.stop(); - 2862a: f7fe fbef bl 26e0c + 28716: f7fe fbef bl 26ef8 if (tx1 >= tx_max) { - 2862e: 42a5 cmp r5, r4 - 28630: 9801 ldr r0, [sp, #4] - 28632: d8e2 bhi.n 285fa + 2871a: 42a5 cmp r5, r4 + 2871c: 9801 ldr r0, [sp, #4] + 2871e: d8e2 bhi.n 286e6 queue_Data_Transfer(txpipe, tx_buffer1, tx_max*4, this); - 28634: 4633 mov r3, r6 - 28636: 00aa lsls r2, r5, #2 - 28638: 6b71 ldr r1, [r6, #52] ; 0x34 - 2863a: 6930 ldr r0, [r6, #16] - 2863c: f7fe fd2c bl 27098 - 28640: e7e2 b.n 28608 + 28720: 4633 mov r3, r6 + 28722: 00aa lsls r2, r5, #2 + 28724: 6b71 ldr r1, [r6, #52] ; 0x34 + 28726: 6930 ldr r0, [r6, #16] + 28728: f7fe fd2c bl 27184 + 2872c: e7e2 b.n 286f4 queue_Data_Transfer(txpipe, tx_buffer2, tx_max*4, this); - 28642: 4633 mov r3, r6 - 28644: 00aa lsls r2, r5, #2 - 28646: 6bb1 ldr r1, [r6, #56] ; 0x38 - 28648: 6930 ldr r0, [r6, #16] - 2864a: f7fe fd25 bl 27098 + 2872e: 4633 mov r3, r6 + 28730: 00aa lsls r2, r5, #2 + 28732: 6bb1 ldr r1, [r6, #56] ; 0x38 + 28734: 6930 ldr r0, [r6, #16] + 28736: f7fe fd25 bl 27184 __enable_irq(); - 2864e: b662 cpsie i + 2873a: b662 cpsie i } - 28650: b002 add sp, #8 - 28652: bd70 pop {r4, r5, r6, pc} - 28654: 4770 bx lr - 28656: bf00 nop + 2873c: b002 add sp, #8 + 2873e: bd70 pop {r4, r5, r6, pc} + 28740: 4770 bx lr + 28742: bf00 nop -00028658 : +00028744 : { - 28658: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 28744: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} while (length > 3) { - 2865c: 2a03 cmp r2, #3 + 28748: 2a03 cmp r2, #3 cable = (cable & 0x0F) << 4; - 2865e: ea4f 1303 mov.w r3, r3, lsl #4 + 2874a: ea4f 1303 mov.w r3, r3, lsl #4 { - 28662: 4615 mov r5, r2 - 28664: 4681 mov r9, r0 - 28666: 4688 mov r8, r1 + 2874e: 4615 mov r5, r2 + 28750: 4681 mov r9, r0 + 28752: 4688 mov r8, r1 cable = (cable & 0x0F) << 4; - 28668: b2df uxtb r7, r3 + 28754: b2df uxtb r7, r3 while (length > 3) { - 2866a: d916 bls.n 2869a + 28756: d916 bls.n 28786 write_packed(0x04 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 2866c: f047 0604 orr.w r6, r7, #4 - 28670: 1ccc adds r4, r1, #3 - 28672: f814 3c02 ldrb.w r3, [r4, #-2] + 28758: f047 0604 orr.w r6, r7, #4 + 2875c: 1ccc adds r4, r1, #3 + 2875e: f814 3c02 ldrb.w r3, [r4, #-2] length -= 3; - 28676: 3d03 subs r5, #3 + 28762: 3d03 subs r5, #3 write_packed(0x04 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 28678: f814 2c03 ldrb.w r2, [r4, #-3] - 2867c: 4648 mov r0, r9 - 2867e: 041b lsls r3, r3, #16 - 28680: f814 1c01 ldrb.w r1, [r4, #-1] - 28684: 46a0 mov r8, r4 + 28764: f814 2c03 ldrb.w r2, [r4, #-3] + 28768: 4648 mov r0, r9 + 2876a: 041b lsls r3, r3, #16 + 2876c: f814 1c01 ldrb.w r1, [r4, #-1] + 28770: 46a0 mov r8, r4 while (length > 3) { - 28686: 3403 adds r4, #3 + 28772: 3403 adds r4, #3 write_packed(0x04 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 28688: ea43 2302 orr.w r3, r3, r2, lsl #8 - 2868c: 4333 orrs r3, r6 - 2868e: ea43 6101 orr.w r1, r3, r1, lsl #24 - 28692: f7ff ff8f bl 285b4 + 28774: ea43 2302 orr.w r3, r3, r2, lsl #8 + 28778: 4333 orrs r3, r6 + 2877a: ea43 6101 orr.w r1, r3, r1, lsl #24 + 2877e: f7ff ff8f bl 286a0 while (length > 3) { - 28696: 2d03 cmp r5, #3 - 28698: d8eb bhi.n 28672 + 28782: 2d03 cmp r5, #3 + 28784: d8eb bhi.n 2875e if (length == 3) { - 2869a: 2d03 cmp r5, #3 - 2869c: d005 beq.n 286aa + 28786: 2d03 cmp r5, #3 + 28788: d005 beq.n 28796 } else if (length == 2) { - 2869e: 2d02 cmp r5, #2 - 286a0: d016 beq.n 286d0 + 2878a: 2d02 cmp r5, #2 + 2878c: d016 beq.n 287bc } else if (length == 1) { - 286a2: 2d01 cmp r5, #1 - 286a4: d023 beq.n 286ee + 2878e: 2d01 cmp r5, #1 + 28790: d023 beq.n 287da } - 286a6: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 28792: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} write_packed(0x07 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 286aa: f898 3001 ldrb.w r3, [r8, #1] - 286ae: f047 0707 orr.w r7, r7, #7 - 286b2: f898 2000 ldrb.w r2, [r8] - 286b6: 4648 mov r0, r9 - 286b8: 041b lsls r3, r3, #16 - 286ba: f898 1002 ldrb.w r1, [r8, #2] - 286be: ea43 2302 orr.w r3, r3, r2, lsl #8 - 286c2: 433b orrs r3, r7 - 286c4: ea43 6101 orr.w r1, r3, r1, lsl #24 -} - 286c8: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 28796: f898 3001 ldrb.w r3, [r8, #1] + 2879a: f047 0707 orr.w r7, r7, #7 + 2879e: f898 2000 ldrb.w r2, [r8] + 287a2: 4648 mov r0, r9 + 287a4: 041b lsls r3, r3, #16 + 287a6: f898 1002 ldrb.w r1, [r8, #2] + 287aa: ea43 2302 orr.w r3, r3, r2, lsl #8 + 287ae: 433b orrs r3, r7 + 287b0: ea43 6101 orr.w r1, r3, r1, lsl #24 +} + 287b4: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} write_packed(0x07 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 286cc: f7ff bf72 b.w 285b4 + 287b8: f7ff bf72 b.w 286a0 write_packed(0x06 | cable | (data[0] << 8) | (data[1] << 16)); - 286d0: f898 3001 ldrb.w r3, [r8, #1] - 286d4: f047 0106 orr.w r1, r7, #6 - 286d8: f898 2000 ldrb.w r2, [r8] - 286dc: 4648 mov r0, r9 - 286de: 041b lsls r3, r3, #16 - 286e0: ea43 2302 orr.w r3, r3, r2, lsl #8 - 286e4: 4319 orrs r1, r3 -} - 286e6: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 287bc: f898 3001 ldrb.w r3, [r8, #1] + 287c0: f047 0106 orr.w r1, r7, #6 + 287c4: f898 2000 ldrb.w r2, [r8] + 287c8: 4648 mov r0, r9 + 287ca: 041b lsls r3, r3, #16 + 287cc: ea43 2302 orr.w r3, r3, r2, lsl #8 + 287d0: 4319 orrs r1, r3 +} + 287d2: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} write_packed(0x06 | cable | (data[0] << 8) | (data[1] << 16)); - 286ea: f7ff bf63 b.w 285b4 + 287d6: f7ff bf63 b.w 286a0 write_packed(0x05 | cable | (data[0] << 8)); - 286ee: f898 1000 ldrb.w r1, [r8] - 286f2: f047 0705 orr.w r7, r7, #5 - 286f6: 4648 mov r0, r9 - 286f8: ea47 2101 orr.w r1, r7, r1, lsl #8 + 287da: f898 1000 ldrb.w r1, [r8] + 287de: f047 0705 orr.w r7, r7, #5 + 287e2: 4648 mov r0, r9 + 287e4: ea47 2101 orr.w r1, r7, r1, lsl #8 } - 286fc: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 287e8: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} write_packed(0x05 | cable | (data[0] << 8)); - 28700: f7ff bf58 b.w 285b4 + 287ec: f7ff bf58 b.w 286a0 -00028704 : +000287f0 : { - 28704: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 287f0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} cable = (cable & 0x0F) << 4; - 28708: 011b lsls r3, r3, #4 - 2870a: b2de uxtb r6, r3 + 287f4: 011b lsls r3, r3, #4 + 287f6: b2de uxtb r6, r3 if (length == 0) { - 2870c: b3da cbz r2, 28786 + 287f8: b3da cbz r2, 28872 } else if (length == 1) { - 2870e: 2a01 cmp r2, #1 - 28710: 460c mov r4, r1 - 28712: d04b beq.n 287ac + 287fa: 2a01 cmp r2, #1 + 287fc: 460c mov r4, r1 + 287fe: d04b beq.n 28898 write_packed(0x04 | cable | (0xF0 << 8) | (data[0] << 16) | (data[1] << 24)); - 28714: 7849 ldrb r1, [r1, #1] - 28716: f046 0704 orr.w r7, r6, #4 - 2871a: 7823 ldrb r3, [r4, #0] + 28800: 7849 ldrb r1, [r1, #1] + 28802: f046 0704 orr.w r7, r6, #4 + 28806: 7823 ldrb r3, [r4, #0] length -= 2; - 2871c: f1a2 0902 sub.w r9, r2, #2 + 28808: f1a2 0902 sub.w r9, r2, #2 write_packed(0x04 | cable | (0xF0 << 8) | (data[0] << 16) | (data[1] << 24)); - 28720: 0609 lsls r1, r1, #24 - 28722: 4605 mov r5, r0 + 2880c: 0609 lsls r1, r1, #24 + 2880e: 4605 mov r5, r0 data += 2; - 28724: f104 0802 add.w r8, r4, #2 + 28810: f104 0802 add.w r8, r4, #2 write_packed(0x04 | cable | (0xF0 << 8) | (data[0] << 16) | (data[1] << 24)); - 28728: ea41 4103 orr.w r1, r1, r3, lsl #16 - 2872c: 4339 orrs r1, r7 - 2872e: f441 4170 orr.w r1, r1, #61440 ; 0xf000 - 28732: f7ff ff3f bl 285b4 + 28814: ea41 4103 orr.w r1, r1, r3, lsl #16 + 28818: 4339 orrs r1, r7 + 2881a: f441 4170 orr.w r1, r1, #61440 ; 0xf000 + 2881e: f7ff ff3f bl 286a0 while (length >= 3) { - 28736: f1b9 0f02 cmp.w r9, #2 - 2873a: d916 bls.n 2876a - 2873c: 3405 adds r4, #5 + 28822: f1b9 0f02 cmp.w r9, #2 + 28826: d916 bls.n 28856 + 28828: 3405 adds r4, #5 write_packed(0x04 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 2873e: f814 3c02 ldrb.w r3, [r4, #-2] + 2882a: f814 3c02 ldrb.w r3, [r4, #-2] length -= 3; - 28742: f1a9 0903 sub.w r9, r9, #3 + 2882e: f1a9 0903 sub.w r9, r9, #3 write_packed(0x04 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 28746: f814 2c03 ldrb.w r2, [r4, #-3] - 2874a: 4628 mov r0, r5 - 2874c: 041b lsls r3, r3, #16 - 2874e: f814 1c01 ldrb.w r1, [r4, #-1] - 28752: 46a0 mov r8, r4 + 28832: f814 2c03 ldrb.w r2, [r4, #-3] + 28836: 4628 mov r0, r5 + 28838: 041b lsls r3, r3, #16 + 2883a: f814 1c01 ldrb.w r1, [r4, #-1] + 2883e: 46a0 mov r8, r4 while (length >= 3) { - 28754: 3403 adds r4, #3 + 28840: 3403 adds r4, #3 write_packed(0x04 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 28756: ea43 2302 orr.w r3, r3, r2, lsl #8 - 2875a: 433b orrs r3, r7 - 2875c: ea43 6101 orr.w r1, r3, r1, lsl #24 - 28760: f7ff ff28 bl 285b4 + 28842: ea43 2302 orr.w r3, r3, r2, lsl #8 + 28846: 433b orrs r3, r7 + 28848: ea43 6101 orr.w r1, r3, r1, lsl #24 + 2884c: f7ff ff28 bl 286a0 while (length >= 3) { - 28764: f1b9 0f02 cmp.w r9, #2 - 28768: d8e9 bhi.n 2873e + 28850: f1b9 0f02 cmp.w r9, #2 + 28854: d8e9 bhi.n 2882a if (length == 2) { - 2876a: f1b9 0f02 cmp.w r9, #2 - 2876e: d028 beq.n 287c2 + 28856: f1b9 0f02 cmp.w r9, #2 + 2885a: d028 beq.n 288ae } else if (length == 1) { - 28770: f1b9 0f01 cmp.w r9, #1 - 28774: d00d beq.n 28792 + 2885c: f1b9 0f01 cmp.w r9, #1 + 28860: d00d beq.n 2887e write_packed(0x05 | cable | (0xF7 << 8)); - 28776: f24f 7105 movw r1, #63237 ; 0xf705 - 2877a: 4628 mov r0, r5 - 2877c: 4331 orrs r1, r6 + 28862: f24f 7105 movw r1, #63237 ; 0xf705 + 28866: 4628 mov r0, r5 + 28868: 4331 orrs r1, r6 } - 2877e: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 2886a: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} write_packed(0x05 | cable | (0xF7 << 8)); - 28782: f7ff bf17 b.w 285b4 + 2886e: f7ff bf17 b.w 286a0 write_packed(0x06 | cable | (0xF0 << 8) | (0xF7 << 16)); - 28786: 4916 ldr r1, [pc, #88] ; (287e0 ) - 28788: 4331 orrs r1, r6 + 28872: 4916 ldr r1, [pc, #88] ; (288cc ) + 28874: 4331 orrs r1, r6 } - 2878a: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 28876: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} write_packed(0x06 | cable | (0xF0 << 8) | (0xF7 << 16)); - 2878e: f7ff bf11 b.w 285b4 + 2887a: f7ff bf11 b.w 286a0 write_packed(0x06 | cable | (data[0] << 8) | (0xF7 << 16)); - 28792: f898 3000 ldrb.w r3, [r8] - 28796: f046 0106 orr.w r1, r6, #6 - 2879a: 4628 mov r0, r5 - 2879c: ea41 2103 orr.w r1, r1, r3, lsl #8 + 2887e: f898 3000 ldrb.w r3, [r8] + 28882: f046 0106 orr.w r1, r6, #6 + 28886: 4628 mov r0, r5 + 28888: ea41 2103 orr.w r1, r1, r3, lsl #8 } - 287a0: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 2888c: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} write_packed(0x06 | cable | (data[0] << 8) | (0xF7 << 16)); - 287a4: f441 0177 orr.w r1, r1, #16187392 ; 0xf70000 - 287a8: f7ff bf04 b.w 285b4 + 28890: f441 0177 orr.w r1, r1, #16187392 ; 0xf70000 + 28894: f7ff bf04 b.w 286a0 write_packed(0x07 | cable | (0xF0 << 8) | (data[0] << 16) | (0xF7 << 24)); - 287ac: 780b ldrb r3, [r1, #0] - 287ae: f046 0607 orr.w r6, r6, #7 - 287b2: 490c ldr r1, [pc, #48] ; (287e4 ) - 287b4: ea46 4603 orr.w r6, r6, r3, lsl #16 - 287b8: 4331 orrs r1, r6 + 28898: 780b ldrb r3, [r1, #0] + 2889a: f046 0607 orr.w r6, r6, #7 + 2889e: 490c ldr r1, [pc, #48] ; (288d0 ) + 288a0: ea46 4603 orr.w r6, r6, r3, lsl #16 + 288a4: 4331 orrs r1, r6 } - 287ba: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 288a6: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} write_packed(0x07 | cable | (0xF0 << 8) | (data[0] << 16) | (0xF7 << 24)); - 287be: f7ff bef9 b.w 285b4 + 288aa: f7ff bef9 b.w 286a0 write_packed(0x07 | cable | (data[0] << 8) | (data[1] << 16) | (0xF7 << 24)); - 287c2: f898 3001 ldrb.w r3, [r8, #1] - 287c6: 4628 mov r0, r5 - 287c8: f898 2000 ldrb.w r2, [r8] - 287cc: 041b lsls r3, r3, #16 - 287ce: 4906 ldr r1, [pc, #24] ; (287e8 ) - 287d0: ea43 2302 orr.w r3, r3, r2, lsl #8 - 287d4: 4333 orrs r3, r6 - 287d6: 4319 orrs r1, r3 -} - 287d8: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 288ae: f898 3001 ldrb.w r3, [r8, #1] + 288b2: 4628 mov r0, r5 + 288b4: f898 2000 ldrb.w r2, [r8] + 288b8: 041b lsls r3, r3, #16 + 288ba: 4906 ldr r1, [pc, #24] ; (288d4 ) + 288bc: ea43 2302 orr.w r3, r3, r2, lsl #8 + 288c0: 4333 orrs r3, r6 + 288c2: 4319 orrs r1, r3 +} + 288c4: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} write_packed(0x07 | cable | (data[0] << 8) | (data[1] << 16) | (0xF7 << 24)); - 287dc: f7ff beea b.w 285b4 - 287e0: 00f7f006 .word 0x00f7f006 - 287e4: f700f000 .word 0xf700f000 - 287e8: f7000007 .word 0xf7000007 + 288c8: f7ff beea b.w 286a0 + 288cc: 00f7f006 .word 0x00f7f006 + 288d0: f700f000 .word 0xf700f000 + 288d4: f7000007 .word 0xf7000007 -000287ec : +000288d8 : { - 287ec: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 287f0: 460f mov r7, r1 + 288d8: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 288dc: 460f mov r7, r1 tail = rx_tail; - 287f2: f8b0 304c ldrh.w r3, [r0, #76] ; 0x4c + 288de: f8b0 304c ldrh.w r3, [r0, #76] ; 0x4c head = rx_head; - 287f6: f8b0 104a ldrh.w r1, [r0, #74] ; 0x4a + 288e2: f8b0 104a ldrh.w r1, [r0, #74] ; 0x4a if (head == tail) return false; - 287fa: 4299 cmp r1, r3 - 287fc: d033 beq.n 28866 + 288e6: 4299 cmp r1, r3 + 288e8: d033 beq.n 28952 if (++tail >= rx_queue_size) tail = 0; - 287fe: 3301 adds r3, #1 - 28800: f8b0 2048 ldrh.w r2, [r0, #72] ; 0x48 - 28804: 4604 mov r4, r0 - 28806: 429a cmp r2, r3 - 28808: d931 bls.n 2886e + 288ea: 3301 adds r3, #1 + 288ec: f8b0 2048 ldrh.w r2, [r0, #72] ; 0x48 + 288f0: 4604 mov r4, r0 + 288f2: 429a cmp r2, r3 + 288f4: d931 bls.n 2895a n = rx_queue[tail]; - 2880a: 009d lsls r5, r3, #2 + 288f6: 009d lsls r5, r3, #2 rx_tail = tail; - 2880c: b298 uxth r0, r3 + 288f8: b298 uxth r0, r3 n = rx_queue[tail]; - 2880e: 6c26 ldr r6, [r4, #64] ; 0x40 - 28810: 5975 ldr r5, [r6, r5] + 288fa: 6c26 ldr r6, [r4, #64] ; 0x40 + 288fc: 5975 ldr r5, [r6, r5] rx_tail = tail; - 28812: f8a4 004c strh.w r0, [r4, #76] ; 0x4c + 288fe: f8a4 004c strh.w r0, [r4, #76] ; 0x4c if (!rx_packet_queued && rxpipe) { - 28816: f894 0044 ldrb.w r0, [r4, #68] ; 0x44 - 2881a: b990 cbnz r0, 28842 - 2881c: 68e0 ldr r0, [r4, #12] - 2881e: b180 cbz r0, 28842 + 28902: f894 0044 ldrb.w r0, [r4, #68] ; 0x44 + 28906: b990 cbnz r0, 2892e + 28908: 68e0 ldr r0, [r4, #12] + 2890a: b180 cbz r0, 2892e avail = (head < tail) ? tail - head - 1 : rx_queue_size - 1 - head + tail; - 28820: 428b cmp r3, r1 - 28822: f240 80af bls.w 28984 - 28826: 1a5b subs r3, r3, r1 - 28828: 1e5a subs r2, r3, #1 + 2890c: 428b cmp r3, r1 + 2890e: f240 80af bls.w 28a70 + 28912: 1a5b subs r3, r3, r1 + 28914: 1e5a subs r2, r3, #1 if (avail >= (uint32_t)(rx_size>>2)) { - 2882a: 8fa3 ldrh r3, [r4, #60] ; 0x3c - 2882c: ebb2 0f93 cmp.w r2, r3, lsr #2 - 28830: d307 bcc.n 28842 + 28916: 8fa3 ldrh r3, [r4, #60] ; 0x3c + 28918: ebb2 0f93 cmp.w r2, r3, lsr #2 + 2891c: d307 bcc.n 2892e __disable_irq(); - 28832: b672 cpsid i + 2891e: b672 cpsid i queue_Data_Transfer(rxpipe, rx_buffer, rx_size, this); - 28834: 4623 mov r3, r4 - 28836: 8fa2 ldrh r2, [r4, #60] ; 0x3c - 28838: 6b21 ldr r1, [r4, #48] ; 0x30 - 2883a: 68e0 ldr r0, [r4, #12] - 2883c: f7fe fc2c bl 27098 + 28920: 4623 mov r3, r4 + 28922: 8fa2 ldrh r2, [r4, #60] ; 0x3c + 28924: 6b21 ldr r1, [r4, #48] ; 0x30 + 28926: 68e0 ldr r0, [r4, #12] + 28928: f7fe fc2c bl 27184 __enable_irq(); - 28840: b662 cpsie i + 2892c: b662 cpsie i msg_cable = (n >> 4) & 15; - 28842: f3c5 1303 ubfx r3, r5, #4, #4 + 2892e: f3c5 1303 ubfx r3, r5, #4, #4 type1 = n & 15; - 28846: f005 080f and.w r8, r5, #15 + 28932: f005 080f and.w r8, r5, #15 ch = (b1 & 15) + 1; - 2884a: f3c5 2603 ubfx r6, r5, #8, #4 + 28936: f3c5 2603 ubfx r6, r5, #8, #4 b1 = (n >> 8) & 0xFF; - 2884e: ea4f 2915 mov.w r9, r5, lsr #8 + 2893a: ea4f 2915 mov.w r9, r5, lsr #8 msg_cable = (n >> 4) & 15; - 28852: f884 3054 strb.w r3, [r4, #84] ; 0x54 + 2893e: f884 3054 strb.w r3, [r4, #84] ; 0x54 if (type1 >= 0x08 && type1 <= 0x0E) { - 28856: f1a8 0308 sub.w r3, r8, #8 + 28942: f1a8 0308 sub.w r3, r8, #8 ch = (b1 & 15) + 1; - 2885a: 3601 adds r6, #1 + 28946: 3601 adds r6, #1 if (type1 >= 0x08 && type1 <= 0x0E) { - 2885c: 2b06 cmp r3, #6 - 2885e: d82b bhi.n 288b8 + 28948: 2b06 cmp r3, #6 + 2894a: d82b bhi.n 289a4 if (channel && channel != ch) { - 28860: b14f cbz r7, 28876 - 28862: 42b7 cmp r7, r6 - 28864: d007 beq.n 28876 + 2894c: b14f cbz r7, 28962 + 2894e: 42b7 cmp r7, r6 + 28950: d007 beq.n 28962 switch (b1) { - 28866: 2700 movs r7, #0 + 28952: 2700 movs r7, #0 } - 28868: 4638 mov r0, r7 - 2886a: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 2886e: 2000 movs r0, #0 - 28870: 4605 mov r5, r0 + 28954: 4638 mov r0, r7 + 28956: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2895a: 2000 movs r0, #0 + 2895c: 4605 mov r5, r0 if (++tail >= rx_queue_size) tail = 0; - 28872: 4603 mov r3, r0 - 28874: e7cb b.n 2880e + 2895e: 4603 mov r3, r0 + 28960: e7cb b.n 288fa if (type1 == 0x08 && type2 == 0x08) { - 28876: f1b8 0f08 cmp.w r8, #8 + 28962: f1b8 0f08 cmp.w r8, #8 type2 = (n >> 12) & 15; - 2887a: f3c5 3303 ubfx r3, r5, #12, #4 + 28966: f3c5 3303 ubfx r3, r5, #12, #4 if (type1 == 0x08 && type2 == 0x08) { - 2887e: f040 8085 bne.w 2898c - 28882: 2b08 cmp r3, #8 - 28884: f040 8082 bne.w 2898c + 2896a: f040 8085 bne.w 28a78 + 2896e: 2b08 cmp r3, #8 + 28970: f040 8082 bne.w 28a78 msg_type = 0x80; // 0x80 = Note off - 28888: 2280 movs r2, #128 ; 0x80 + 28974: 2280 movs r2, #128 ; 0x80 if (handleNoteOff) { - 2888a: f8d4 3180 ldr.w r3, [r4, #384] ; 0x180 + 28976: f8d4 3180 ldr.w r3, [r4, #384] ; 0x180 (*handleControlChange)(ch, (n >> 16), (n >> 24)); - 2888e: f3c5 4807 ubfx r8, r5, #16, #8 - 28892: b2f6 uxtb r6, r6 - 28894: 0e2d lsrs r5, r5, #24 + 2897a: f3c5 4807 ubfx r8, r5, #16, #8 + 2897e: b2f6 uxtb r6, r6 + 28980: 0e2d lsrs r5, r5, #24 msg_type = 0xB0; // 0xB0 = Control Change - 28896: f884 2056 strb.w r2, [r4, #86] ; 0x56 + 28982: f884 2056 strb.w r2, [r4, #86] ; 0x56 if (handleControlChange) { - 2889a: b11b cbz r3, 288a4 + 28986: b11b cbz r3, 28990 (*handleControlChange)(ch, (n >> 16), (n >> 24)); - 2889c: 4641 mov r1, r8 - 2889e: 4630 mov r0, r6 - 288a0: 462a mov r2, r5 - 288a2: 4798 blx r3 + 28988: 4641 mov r1, r8 + 2898a: 4630 mov r0, r6 + 2898c: 462a mov r2, r5 + 2898e: 4798 blx r3 return true; - 288a4: 2701 movs r7, #1 + 28990: 2701 movs r7, #1 msg_channel = ch; - 288a6: f884 6055 strb.w r6, [r4, #85] ; 0x55 + 28992: f884 6055 strb.w r6, [r4, #85] ; 0x55 msg_data1 = (n >> 16); - 288aa: f884 8057 strb.w r8, [r4, #87] ; 0x57 + 28996: f884 8057 strb.w r8, [r4, #87] ; 0x57 } - 288ae: 4638 mov r0, r7 + 2899a: 4638 mov r0, r7 msg_data2 = (n >> 24); - 288b0: f884 5058 strb.w r5, [r4, #88] ; 0x58 + 2899c: f884 5058 strb.w r5, [r4, #88] ; 0x58 } - 288b4: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 289a0: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} if (type1 == 0x02 || type1 == 0x03 || (type1 == 0x05 && b1 >= 0xF1 && b1 != 0xF7)) { - 288b8: f1a8 0202 sub.w r2, r8, #2 + 289a4: f1a8 0202 sub.w r2, r8, #2 b1 = (n >> 8) & 0xFF; - 288bc: fa5f f389 uxtb.w r3, r9 + 289a8: fa5f f389 uxtb.w r3, r9 if (type1 == 0x02 || type1 == 0x03 || (type1 == 0x05 && b1 >= 0xF1 && b1 != 0xF7)) { - 288c0: 2a01 cmp r2, #1 - 288c2: d93b bls.n 2893c - 288c4: f1b3 0bf7 subs.w fp, r3, #247 ; 0xf7 - 288c8: f1a8 0a05 sub.w sl, r8, #5 - 288cc: bf18 it ne - 288ce: f04f 0b01 movne.w fp, #1 - 288d2: faba fa8a clz sl, sl - 288d6: 2bf0 cmp r3, #240 ; 0xf0 - 288d8: bf94 ite ls - 288da: 2700 movls r7, #0 - 288dc: f00b 0701 andhi.w r7, fp, #1 - 288e0: ea4f 1a5a mov.w sl, sl, lsr #5 - 288e4: ea1a 0707 ands.w r7, sl, r7 - 288e8: d128 bne.n 2893c + 289ac: 2a01 cmp r2, #1 + 289ae: d93b bls.n 28a28 + 289b0: f1b3 0bf7 subs.w fp, r3, #247 ; 0xf7 + 289b4: f1a8 0a05 sub.w sl, r8, #5 + 289b8: bf18 it ne + 289ba: f04f 0b01 movne.w fp, #1 + 289be: faba fa8a clz sl, sl + 289c2: 2bf0 cmp r3, #240 ; 0xf0 + 289c4: bf94 ite ls + 289c6: 2700 movls r7, #0 + 289c8: f00b 0701 andhi.w r7, fp, #1 + 289cc: ea4f 1a5a mov.w sl, sl, lsr #5 + 289d0: ea1a 0707 ands.w r7, sl, r7 + 289d4: d128 bne.n 28a28 if (type1 == 0x04) { - 288ea: f1b8 0f04 cmp.w r8, #4 - 288ee: f000 8173 beq.w 28bd8 + 289d6: f1b8 0f04 cmp.w r8, #4 + 289da: f000 8173 beq.w 28cc4 if (type1 >= 0x05 && type1 <= 0x07) { - 288f2: f1a8 0205 sub.w r2, r8, #5 - 288f6: 2a02 cmp r2, #2 - 288f8: f240 8111 bls.w 28b1e + 289de: f1a8 0205 sub.w r2, r8, #5 + 289e2: 2a02 cmp r2, #2 + 289e4: f240 8111 bls.w 28c0a if (type1 == 0x0F) { - 288fc: f1b8 0f0f cmp.w r8, #15 - 28900: d1b1 bne.n 28866 + 289e8: f1b8 0f0f cmp.w r8, #15 + 289ec: d1b1 bne.n 28952 if (b1 >= 0xF8) { - 28902: 2bf7 cmp r3, #247 ; 0xf7 - 28904: d81a bhi.n 2893c + 289ee: 2bf7 cmp r3, #247 ; 0xf7 + 289f0: d81a bhi.n 28a28 if (b1 == 0xF0 || msg_sysex_len > 0) { - 28906: 2bf0 cmp r3, #240 ; 0xf0 + 289f2: 2bf0 cmp r3, #240 ; 0xf0 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28908: f8b4 117c ldrh.w r1, [r4, #380] ; 0x17c + 289f4: f8b4 117c ldrh.w r1, [r4, #380] ; 0x17c if (b1 == 0xF0 || msg_sysex_len > 0) { - 2890c: d001 beq.n 28912 - 2890e: 2900 cmp r1, #0 - 28910: d0a9 beq.n 28866 + 289f8: d001 beq.n 289fe + 289fa: 2900 cmp r1, #0 + 289fc: d0a9 beq.n 28952 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28912: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c - 28916: 2b00 cmp r3, #0 - 28918: f000 821a beq.w 28d50 - 2891c: f5b1 7f91 cmp.w r1, #290 ; 0x122 - 28920: f0c0 821a bcc.w 28d58 + 289fe: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c + 28a02: 2b00 cmp r3, #0 + 28a04: f000 821a beq.w 28e3c + 28a08: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 28a0c: f0c0 821a bcc.w 28e44 (*handleSysExPartial)(msg_sysex, msg_sysex_len, 0); - 28924: 2200 movs r2, #0 - 28926: f104 0059 add.w r0, r4, #89 ; 0x59 - 2892a: 4798 blx r3 + 28a10: 2200 movs r2, #0 + 28a12: f104 0059 add.w r0, r4, #89 ; 0x59 + 28a16: 4798 blx r3 msg_sysex_len = 0; - 2892c: 2100 movs r1, #0 - 2892e: 2301 movs r3, #1 + 28a18: 2100 movs r1, #0 + 28a1a: 2301 movs r3, #1 } if (msg_sysex_len < SYSEX_MAX_LEN) { msg_sysex[msg_sysex_len++] = b; - 28930: 4421 add r1, r4 - 28932: f8a4 317c strh.w r3, [r4, #380] ; 0x17c + 28a1c: 4421 add r1, r4 + 28a1e: f8a4 317c strh.w r3, [r4, #380] ; 0x17c sysex_byte(b1); - 28936: f881 9059 strb.w r9, [r1, #89] ; 0x59 - 2893a: e795 b.n 28868 + 28a22: f881 9059 strb.w r9, [r1, #89] ; 0x59 + 28a26: e795 b.n 28954 switch (b1) { - 2893c: 3bf1 subs r3, #241 ; 0xf1 - 2893e: 2b0e cmp r3, #14 - 28940: d891 bhi.n 28866 - 28942: a201 add r2, pc, #4 ; (adr r2, 28948 ) - 28944: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 28948: 00028acd .word 0x00028acd - 2894c: 00028adf .word 0x00028adf - 28950: 00028aff .word 0x00028aff - 28954: 00028867 .word 0x00028867 - 28958: 00028867 .word 0x00028867 - 2895c: 00028a27 .word 0x00028a27 - 28960: 00028867 .word 0x00028867 - 28964: 00028a3d .word 0x00028a3d - 28968: 00028867 .word 0x00028867 - 2896c: 00028a4f .word 0x00028a4f - 28970: 00028a69 .word 0x00028a69 - 28974: 00028a83 .word 0x00028a83 - 28978: 00028867 .word 0x00028867 - 2897c: 00028a9d .word 0x00028a9d - 28980: 00028ab3 .word 0x00028ab3 + 28a28: 3bf1 subs r3, #241 ; 0xf1 + 28a2a: 2b0e cmp r3, #14 + 28a2c: d891 bhi.n 28952 + 28a2e: a201 add r2, pc, #4 ; (adr r2, 28a34 ) + 28a30: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 28a34: 00028bb9 .word 0x00028bb9 + 28a38: 00028bcb .word 0x00028bcb + 28a3c: 00028beb .word 0x00028beb + 28a40: 00028953 .word 0x00028953 + 28a44: 00028953 .word 0x00028953 + 28a48: 00028b13 .word 0x00028b13 + 28a4c: 00028953 .word 0x00028953 + 28a50: 00028b29 .word 0x00028b29 + 28a54: 00028953 .word 0x00028953 + 28a58: 00028b3b .word 0x00028b3b + 28a5c: 00028b55 .word 0x00028b55 + 28a60: 00028b6f .word 0x00028b6f + 28a64: 00028953 .word 0x00028953 + 28a68: 00028b89 .word 0x00028b89 + 28a6c: 00028b9f .word 0x00028b9f avail = (head < tail) ? tail - head - 1 : rx_queue_size - 1 - head + tail; - 28984: 3a01 subs r2, #1 - 28986: 1a52 subs r2, r2, r1 - 28988: 441a add r2, r3 - 2898a: e74e b.n 2882a + 28a70: 3a01 subs r2, #1 + 28a72: 1a52 subs r2, r2, r1 + 28a74: 441a add r2, r3 + 28a76: e74e b.n 28916 if (type1 == 0x09 && type2 == 0x09) { - 2898c: f1b8 0f09 cmp.w r8, #9 - 28990: d113 bne.n 289ba - 28992: 2b09 cmp r3, #9 - 28994: d111 bne.n 289ba + 28a78: f1b8 0f09 cmp.w r8, #9 + 28a7c: d113 bne.n 28aa6 + 28a7e: 2b09 cmp r3, #9 + 28a80: d111 bne.n 28aa6 if ((n >> 24) > 0) { - 28996: 0e2a lsrs r2, r5, #24 - 28998: d138 bne.n 28a0c + 28a82: 0e2a lsrs r2, r5, #24 + 28a84: d138 bne.n 28af8 msg_type = 0x80; // 0x80 = Note off - 2899a: 2380 movs r3, #128 ; 0x80 + 28a86: 2380 movs r3, #128 ; 0x80 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2899c: b2f6 uxtb r6, r6 - 2899e: f3c5 4807 ubfx r8, r5, #16, #8 + 28a88: b2f6 uxtb r6, r6 + 28a8a: f3c5 4807 ubfx r8, r5, #16, #8 msg_type = 0x80; // 0x80 = Note off - 289a2: f884 3056 strb.w r3, [r4, #86] ; 0x56 + 28a8e: f884 3056 strb.w r3, [r4, #86] ; 0x56 if (handleNoteOff) { - 289a6: f8d4 3180 ldr.w r3, [r4, #384] ; 0x180 - 289aa: 2b00 cmp r3, #0 - 289ac: f000 8169 beq.w 28c82 + 28a92: f8d4 3180 ldr.w r3, [r4, #384] ; 0x180 + 28a96: 2b00 cmp r3, #0 + 28a98: f000 8169 beq.w 28d6e (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 289b0: 4641 mov r1, r8 - 289b2: 4630 mov r0, r6 - 289b4: 4615 mov r5, r2 - 289b6: 4798 blx r3 - 289b8: e774 b.n 288a4 + 28a9c: 4641 mov r1, r8 + 28a9e: 4630 mov r0, r6 + 28aa0: 4615 mov r5, r2 + 28aa2: 4798 blx r3 + 28aa4: e774 b.n 28990 if (type1 == 0x0A && type2 == 0x0A) { - 289ba: f1b8 0f0a cmp.w r8, #10 - 289be: d105 bne.n 289cc - 289c0: 2b0a cmp r3, #10 - 289c2: d103 bne.n 289cc + 28aa6: f1b8 0f0a cmp.w r8, #10 + 28aaa: d105 bne.n 28ab8 + 28aac: 2b0a cmp r3, #10 + 28aae: d103 bne.n 28ab8 msg_type = 0xA0; // 0xA0 = AfterTouchPoly - 289c4: 22a0 movs r2, #160 ; 0xa0 + 28ab0: 22a0 movs r2, #160 ; 0xa0 if (handleVelocityChange) { - 289c6: f8d4 3188 ldr.w r3, [r4, #392] ; 0x188 - 289ca: e760 b.n 2888e + 28ab2: f8d4 3188 ldr.w r3, [r4, #392] ; 0x188 + 28ab6: e760 b.n 2897a if (type1 == 0x0B && type2 == 0x0B) { - 289cc: f1b8 0f0b cmp.w r8, #11 - 289d0: d105 bne.n 289de - 289d2: 2b0b cmp r3, #11 - 289d4: d103 bne.n 289de + 28ab8: f1b8 0f0b cmp.w r8, #11 + 28abc: d105 bne.n 28aca + 28abe: 2b0b cmp r3, #11 + 28ac0: d103 bne.n 28aca msg_type = 0xB0; // 0xB0 = Control Change - 289d6: 22b0 movs r2, #176 ; 0xb0 + 28ac2: 22b0 movs r2, #176 ; 0xb0 if (handleControlChange) { - 289d8: f8d4 318c ldr.w r3, [r4, #396] ; 0x18c - 289dc: e757 b.n 2888e + 28ac4: f8d4 318c ldr.w r3, [r4, #396] ; 0x18c + 28ac8: e757 b.n 2897a if (type1 == 0x0C && type2 == 0x0C) { - 289de: f1b8 0f0c cmp.w r8, #12 - 289e2: f040 8093 bne.w 28b0c - 289e6: 2b0c cmp r3, #12 - 289e8: f040 8090 bne.w 28b0c + 28aca: f1b8 0f0c cmp.w r8, #12 + 28ace: f040 8093 bne.w 28bf8 + 28ad2: 2b0c cmp r3, #12 + 28ad4: f040 8090 bne.w 28bf8 msg_type = 0xC0; // 0xC0 = Program Change - 289ec: 22c0 movs r2, #192 ; 0xc0 + 28ad8: 22c0 movs r2, #192 ; 0xc0 if (handleProgramChange) { - 289ee: f8d4 3190 ldr.w r3, [r4, #400] ; 0x190 + 28ada: f8d4 3190 ldr.w r3, [r4, #400] ; 0x190 (*handleAfterTouch)(ch, (n >> 16)); - 289f2: f3c5 4807 ubfx r8, r5, #16, #8 - 289f6: b2f6 uxtb r6, r6 + 28ade: f3c5 4807 ubfx r8, r5, #16, #8 + 28ae2: b2f6 uxtb r6, r6 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 289f8: 0e2d lsrs r5, r5, #24 + 28ae4: 0e2d lsrs r5, r5, #24 msg_type = 0xD0; // 0xD0 = After Touch - 289fa: f884 2056 strb.w r2, [r4, #86] ; 0x56 + 28ae6: f884 2056 strb.w r2, [r4, #86] ; 0x56 if (handleAfterTouch) { - 289fe: 2b00 cmp r3, #0 - 28a00: f43f af50 beq.w 288a4 + 28aea: 2b00 cmp r3, #0 + 28aec: f43f af50 beq.w 28990 (*handleAfterTouch)(ch, (n >> 16)); - 28a04: 4641 mov r1, r8 - 28a06: 4630 mov r0, r6 - 28a08: 4798 blx r3 - 28a0a: e74b b.n 288a4 + 28af0: 4641 mov r1, r8 + 28af2: 4630 mov r0, r6 + 28af4: 4798 blx r3 + 28af6: e74b b.n 28990 msg_type = 0x90; // 0x90 = Note on - 28a0c: 2390 movs r3, #144 ; 0x90 + 28af8: 2390 movs r3, #144 ; 0x90 (*handleNoteOn)(ch, (n >> 16), (n >> 24)); - 28a0e: f3c5 4807 ubfx r8, r5, #16, #8 - 28a12: b2f6 uxtb r6, r6 + 28afa: f3c5 4807 ubfx r8, r5, #16, #8 + 28afe: b2f6 uxtb r6, r6 msg_type = 0x90; // 0x90 = Note on - 28a14: f884 3056 strb.w r3, [r4, #86] ; 0x56 + 28b00: f884 3056 strb.w r3, [r4, #86] ; 0x56 (*handleNoteOn)(ch, (n >> 16), (n >> 24)); - 28a18: b2d5 uxtb r5, r2 + 28b04: b2d5 uxtb r5, r2 if (handleNoteOn) { - 28a1a: f8d4 3184 ldr.w r3, [r4, #388] ; 0x184 - 28a1e: 2b00 cmp r3, #0 - 28a20: f47f af3c bne.w 2889c - 28a24: e73e b.n 288a4 + 28b06: f8d4 3184 ldr.w r3, [r4, #388] ; 0x184 + 28b0a: 2b00 cmp r3, #0 + 28b0c: f47f af3c bne.w 28988 + 28b10: e73e b.n 28990 if (handleTuneRequest) { - 28a26: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 28a2a: b16b cbz r3, 28a48 + 28b12: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 28b16: b16b cbz r3, 28b34 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28a2c: f3c5 4807 ubfx r8, r5, #16, #8 + 28b18: f3c5 4807 ubfx r8, r5, #16, #8 (*handleSystemReset)(); - 28a30: 4798 blx r3 + 28b1c: 4798 blx r3 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28a32: b2f6 uxtb r6, r6 + 28b1e: b2f6 uxtb r6, r6 msg_type = b1; - 28a34: f884 9056 strb.w r9, [r4, #86] ; 0x56 + 28b20: f884 9056 strb.w r9, [r4, #86] ; 0x56 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28a38: 0e2d lsrs r5, r5, #24 + 28b24: 0e2d lsrs r5, r5, #24 goto return_message; - 28a3a: e733 b.n 288a4 + 28b26: e733 b.n 28990 if (handleClock) { - 28a3c: f8d4 31b4 ldr.w r3, [r4, #436] ; 0x1b4 - 28a40: 2b00 cmp r3, #0 - 28a42: f000 814e beq.w 28ce2 + 28b28: f8d4 31b4 ldr.w r3, [r4, #436] ; 0x1b4 + 28b2c: 2b00 cmp r3, #0 + 28b2e: f000 814e beq.w 28dce (*handleClock)(); - 28a46: 4798 blx r3 + 28b32: 4798 blx r3 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28a48: f3c5 4807 ubfx r8, r5, #16, #8 - 28a4c: e7f1 b.n 28a32 + 28b34: f3c5 4807 ubfx r8, r5, #16, #8 + 28b38: e7f1 b.n 28b1e if (handleStart) { - 28a4e: f8d4 31b8 ldr.w r3, [r4, #440] ; 0x1b8 - 28a52: 2b00 cmp r3, #0 - 28a54: d1f7 bne.n 28a46 + 28b3a: f8d4 31b8 ldr.w r3, [r4, #440] ; 0x1b8 + 28b3e: 2b00 cmp r3, #0 + 28b40: d1f7 bne.n 28b32 } else if (handleRealTimeSystem) { - 28a56: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc - 28a5a: 2b00 cmp r3, #0 - 28a5c: d0f4 beq.n 28a48 + 28b42: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc + 28b46: 2b00 cmp r3, #0 + 28b48: d0f4 beq.n 28b34 (*handleRealTimeSystem)(0xFA); - 28a5e: 20fa movs r0, #250 ; 0xfa + 28b4a: 20fa movs r0, #250 ; 0xfa (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28a60: f3c5 4807 ubfx r8, r5, #16, #8 + 28b4c: f3c5 4807 ubfx r8, r5, #16, #8 (*handleRealTimeSystem)(0xFA); - 28a64: 4798 blx r3 - 28a66: e7e4 b.n 28a32 + 28b50: 4798 blx r3 + 28b52: e7e4 b.n 28b1e if (handleContinue) { - 28a68: f8d4 31bc ldr.w r3, [r4, #444] ; 0x1bc - 28a6c: 2b00 cmp r3, #0 - 28a6e: d1dd bne.n 28a2c + 28b54: f8d4 31bc ldr.w r3, [r4, #444] ; 0x1bc + 28b58: 2b00 cmp r3, #0 + 28b5a: d1dd bne.n 28b18 } else if (handleRealTimeSystem) { - 28a70: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc - 28a74: 2b00 cmp r3, #0 - 28a76: d0e7 beq.n 28a48 + 28b5c: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc + 28b60: 2b00 cmp r3, #0 + 28b62: d0e7 beq.n 28b34 (*handleRealTimeSystem)(0xFB); - 28a78: 20fb movs r0, #251 ; 0xfb + 28b64: 20fb movs r0, #251 ; 0xfb (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28a7a: f3c5 4807 ubfx r8, r5, #16, #8 + 28b66: f3c5 4807 ubfx r8, r5, #16, #8 (*handleRealTimeSystem)(0xFB); - 28a7e: 4798 blx r3 - 28a80: e7d7 b.n 28a32 + 28b6a: 4798 blx r3 + 28b6c: e7d7 b.n 28b1e if (handleStop) { - 28a82: f8d4 31c0 ldr.w r3, [r4, #448] ; 0x1c0 - 28a86: 2b00 cmp r3, #0 - 28a88: d1d0 bne.n 28a2c + 28b6e: f8d4 31c0 ldr.w r3, [r4, #448] ; 0x1c0 + 28b72: 2b00 cmp r3, #0 + 28b74: d1d0 bne.n 28b18 } else if (handleRealTimeSystem) { - 28a8a: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc - 28a8e: 2b00 cmp r3, #0 - 28a90: d0da beq.n 28a48 + 28b76: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc + 28b7a: 2b00 cmp r3, #0 + 28b7c: d0da beq.n 28b34 (*handleRealTimeSystem)(0xFC); - 28a92: 20fc movs r0, #252 ; 0xfc + 28b7e: 20fc movs r0, #252 ; 0xfc (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28a94: f3c5 4807 ubfx r8, r5, #16, #8 + 28b80: f3c5 4807 ubfx r8, r5, #16, #8 (*handleRealTimeSystem)(0xFC); - 28a98: 4798 blx r3 - 28a9a: e7ca b.n 28a32 + 28b84: 4798 blx r3 + 28b86: e7ca b.n 28b1e if (handleActiveSensing) { - 28a9c: f8d4 31c4 ldr.w r3, [r4, #452] ; 0x1c4 - 28aa0: 2b00 cmp r3, #0 - 28aa2: d1c3 bne.n 28a2c + 28b88: f8d4 31c4 ldr.w r3, [r4, #452] ; 0x1c4 + 28b8c: 2b00 cmp r3, #0 + 28b8e: d1c3 bne.n 28b18 } else if (handleRealTimeSystem) { - 28aa4: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc - 28aa8: 2b00 cmp r3, #0 - 28aaa: d0cd beq.n 28a48 + 28b90: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc + 28b94: 2b00 cmp r3, #0 + 28b96: d0cd beq.n 28b34 (*handleRealTimeSystem)(0xFE); - 28aac: 20fe movs r0, #254 ; 0xfe - 28aae: 4798 blx r3 - 28ab0: e7ca b.n 28a48 + 28b98: 20fe movs r0, #254 ; 0xfe + 28b9a: 4798 blx r3 + 28b9c: e7ca b.n 28b34 if (handleSystemReset) { - 28ab2: f8d4 31c8 ldr.w r3, [r4, #456] ; 0x1c8 - 28ab6: 2b00 cmp r3, #0 - 28ab8: d1b8 bne.n 28a2c + 28b9e: f8d4 31c8 ldr.w r3, [r4, #456] ; 0x1c8 + 28ba2: 2b00 cmp r3, #0 + 28ba4: d1b8 bne.n 28b18 } else if (handleRealTimeSystem) { - 28aba: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc + 28ba6: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28abe: f3c5 4807 ubfx r8, r5, #16, #8 + 28baa: f3c5 4807 ubfx r8, r5, #16, #8 } else if (handleRealTimeSystem) { - 28ac2: 2b00 cmp r3, #0 - 28ac4: d0b5 beq.n 28a32 + 28bae: 2b00 cmp r3, #0 + 28bb0: d0b5 beq.n 28b1e (*handleRealTimeSystem)(0xFF); - 28ac6: 20ff movs r0, #255 ; 0xff - 28ac8: 4798 blx r3 - 28aca: e7b2 b.n 28a32 + 28bb2: 20ff movs r0, #255 ; 0xff + 28bb4: 4798 blx r3 + 28bb6: e7b2 b.n 28b1e if (handleTimeCodeQuarterFrame) { - 28acc: f8d4 31a4 ldr.w r3, [r4, #420] ; 0x1a4 + 28bb8: f8d4 31a4 ldr.w r3, [r4, #420] ; 0x1a4 (*handleTimeCodeQuarterFrame)(n >> 16); - 28ad0: f3c5 4807 ubfx r8, r5, #16, #8 + 28bbc: f3c5 4807 ubfx r8, r5, #16, #8 if (handleTimeCodeQuarterFrame) { - 28ad4: 2b00 cmp r3, #0 - 28ad6: d0ac beq.n 28a32 + 28bc0: 2b00 cmp r3, #0 + 28bc2: d0ac beq.n 28b1e (*handleSongSelect)(n >> 16); - 28ad8: 4640 mov r0, r8 - 28ada: 4798 blx r3 - 28adc: e7a9 b.n 28a32 + 28bc4: 4640 mov r0, r8 + 28bc6: 4798 blx r3 + 28bc8: e7a9 b.n 28b1e if (handleSongPosition) { - 28ade: f8d4 21a8 ldr.w r2, [r4, #424] ; 0x1a8 - 28ae2: 2a00 cmp r2, #0 - 28ae4: d0b0 beq.n 28a48 + 28bca: f8d4 21a8 ldr.w r2, [r4, #424] ; 0x1a8 + 28bce: 2a00 cmp r2, #0 + 28bd0: d0b0 beq.n 28b34 (*handleSongPosition)(((n >> 16) & 0x7F) | ((n >> 17) & 0x3F80)); - 28ae6: 0c6b lsrs r3, r5, #17 - 28ae8: f3c5 4006 ubfx r0, r5, #16, #7 - 28aec: ea4f 4815 mov.w r8, r5, lsr #16 - 28af0: f403 537e and.w r3, r3, #16256 ; 0x3f80 + 28bd2: 0c6b lsrs r3, r5, #17 + 28bd4: f3c5 4006 ubfx r0, r5, #16, #7 + 28bd8: ea4f 4815 mov.w r8, r5, lsr #16 + 28bdc: f403 537e and.w r3, r3, #16256 ; 0x3f80 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28af4: fa5f f888 uxtb.w r8, r8 + 28be0: fa5f f888 uxtb.w r8, r8 (*handleSongPosition)(((n >> 16) & 0x7F) | ((n >> 17) & 0x3F80)); - 28af8: 4318 orrs r0, r3 - 28afa: 4790 blx r2 - 28afc: e799 b.n 28a32 + 28be4: 4318 orrs r0, r3 + 28be6: 4790 blx r2 + 28be8: e799 b.n 28b1e if (handleSongSelect) { - 28afe: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac + 28bea: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac (*handleSongSelect)(n >> 16); - 28b02: f3c5 4807 ubfx r8, r5, #16, #8 + 28bee: f3c5 4807 ubfx r8, r5, #16, #8 if (handleSongSelect) { - 28b06: 2b00 cmp r3, #0 - 28b08: d1e6 bne.n 28ad8 - 28b0a: e792 b.n 28a32 + 28bf2: 2b00 cmp r3, #0 + 28bf4: d1e6 bne.n 28bc4 + 28bf6: e792 b.n 28b1e if (type1 == 0x0D && type2 == 0x0D) { - 28b0c: f1b8 0f0d cmp.w r8, #13 - 28b10: d13c bne.n 28b8c - 28b12: 2b0d cmp r3, #13 - 28b14: d13a bne.n 28b8c + 28bf8: f1b8 0f0d cmp.w r8, #13 + 28bfc: d13c bne.n 28c78 + 28bfe: 2b0d cmp r3, #13 + 28c00: d13a bne.n 28c78 msg_type = 0xD0; // 0xD0 = After Touch - 28b16: 22d0 movs r2, #208 ; 0xd0 + 28c02: 22d0 movs r2, #208 ; 0xd0 if (handleAfterTouch) { - 28b18: f8d4 3194 ldr.w r3, [r4, #404] ; 0x194 - 28b1c: e769 b.n 289f2 + 28c04: f8d4 3194 ldr.w r3, [r4, #404] ; 0x194 + 28c08: e769 b.n 28ade if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28b1e: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c - 28b22: f8b4 117c ldrh.w r1, [r4, #380] ; 0x17c - 28b26: 2b00 cmp r3, #0 - 28b28: d050 beq.n 28bcc - 28b2a: f5b1 7f91 cmp.w r1, #290 ; 0x122 - 28b2e: d350 bcc.n 28bd2 + 28c0a: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c + 28c0e: f8b4 117c ldrh.w r1, [r4, #380] ; 0x17c + 28c12: 2b00 cmp r3, #0 + 28c14: d050 beq.n 28cb8 + 28c16: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 28c1a: d350 bcc.n 28cbe (*handleSysExPartial)(msg_sysex, msg_sysex_len, 0); - 28b30: 463a mov r2, r7 - 28b32: f104 0059 add.w r0, r4, #89 ; 0x59 - 28b36: 4798 blx r3 + 28c1c: 463a mov r2, r7 + 28c1e: f104 0059 add.w r0, r4, #89 ; 0x59 + 28c22: 4798 blx r3 msg_sysex_len = 0; - 28b38: 4639 mov r1, r7 - 28b3a: 2301 movs r3, #1 + 28c24: 4639 mov r1, r7 + 28c26: 2301 movs r3, #1 msg_sysex[msg_sysex_len++] = b; - 28b3c: 4421 add r1, r4 - 28b3e: f8a4 317c strh.w r3, [r4, #380] ; 0x17c + 28c28: 4421 add r1, r4 + 28c2a: f8a4 317c strh.w r3, [r4, #380] ; 0x17c sysex_byte(b1); - 28b42: f881 9059 strb.w r9, [r1, #89] ; 0x59 + 28c2e: f881 9059 strb.w r9, [r1, #89] ; 0x59 if (type1 == 0x05 && b1 != 0xF7) return false; - 28b46: f1ba 0f00 cmp.w sl, #0 - 28b4a: d003 beq.n 28b54 - 28b4c: f1bb 0f00 cmp.w fp, #0 - 28b50: f47f ae89 bne.w 28866 + 28c32: f1ba 0f00 cmp.w sl, #0 + 28c36: d003 beq.n 28c40 + 28c38: f1bb 0f00 cmp.w fp, #0 + 28c3c: f47f ae89 bne.w 28952 if (type1 >= 0x06) sysex_byte(n >> 16); - 28b54: f1b8 0f05 cmp.w r8, #5 - 28b58: d16d bne.n 28c36 + 28c40: f1b8 0f05 cmp.w r8, #5 + 28c44: d16d bne.n 28d22 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28b5a: f8b4 117c ldrh.w r1, [r4, #380] ; 0x17c - 28b5e: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c + 28c46: f8b4 117c ldrh.w r1, [r4, #380] ; 0x17c + 28c4a: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c msg_data1 = len; - 28b62: b2c8 uxtb r0, r1 + 28c4e: b2c8 uxtb r0, r1 msg_data2 = len >> 8; - 28b64: 0a0a lsrs r2, r1, #8 + 28c50: 0a0a lsrs r2, r1, #8 msg_data1 = len; - 28b66: f884 0057 strb.w r0, [r4, #87] ; 0x57 + 28c52: f884 0057 strb.w r0, [r4, #87] ; 0x57 msg_sysex_len = 0; - 28b6a: 2000 movs r0, #0 + 28c56: 2000 movs r0, #0 msg_data2 = len >> 8; - 28b6c: f884 2058 strb.w r2, [r4, #88] ; 0x58 + 28c58: f884 2058 strb.w r2, [r4, #88] ; 0x58 msg_type = 0xF0; // 0xF0 = SystemExclusive - 28b70: 22f0 movs r2, #240 ; 0xf0 + 28c5c: 22f0 movs r2, #240 ; 0xf0 msg_sysex_len = 0; - 28b72: f8a4 017c strh.w r0, [r4, #380] ; 0x17c + 28c5e: f8a4 017c strh.w r0, [r4, #380] ; 0x17c msg_type = 0xF0; // 0xF0 = SystemExclusive - 28b76: f884 2056 strb.w r2, [r4, #86] ; 0x56 + 28c62: f884 2056 strb.w r2, [r4, #86] ; 0x56 if (handleSysExPartial) { - 28b7a: 2b00 cmp r3, #0 - 28b7c: f000 80a8 beq.w 28cd0 + 28c66: 2b00 cmp r3, #0 + 28c68: f000 80a8 beq.w 28dbc (*handleSysExPartial)(msg_sysex, len, 1); - 28b80: 2201 movs r2, #1 - 28b82: f104 0059 add.w r0, r4, #89 ; 0x59 + 28c6c: 2201 movs r2, #1 + 28c6e: f104 0059 add.w r0, r4, #89 ; 0x59 return true; - 28b86: 4617 mov r7, r2 + 28c72: 4617 mov r7, r2 (*handleSysExPartial)(msg_sysex, len, 1); - 28b88: 4798 blx r3 - 28b8a: e66d b.n 28868 + 28c74: 4798 blx r3 + 28c76: e66d b.n 28954 if (type1 == 0x0E && type2 == 0x0E) { - 28b8c: f1b8 0f0e cmp.w r8, #14 - 28b90: f47f ae69 bne.w 28866 - 28b94: 2b0e cmp r3, #14 - 28b96: f47f ae66 bne.w 28866 + 28c78: f1b8 0f0e cmp.w r8, #14 + 28c7c: f47f ae69 bne.w 28952 + 28c80: 2b0e cmp r3, #14 + 28c82: f47f ae66 bne.w 28952 msg_type = 0xE0; // 0xE0 = Pitch Bend - 28b9a: 22e0 movs r2, #224 ; 0xe0 + 28c86: 22e0 movs r2, #224 ; 0xe0 if (handlePitchChange) { - 28b9c: f8d4 3198 ldr.w r3, [r4, #408] ; 0x198 + 28c88: f8d4 3198 ldr.w r3, [r4, #408] ; 0x198 msg_type = 0xE0; // 0xE0 = Pitch Bend - 28ba0: f884 2056 strb.w r2, [r4, #86] ; 0x56 + 28c8c: f884 2056 strb.w r2, [r4, #86] ; 0x56 if (handlePitchChange) { - 28ba4: 2b00 cmp r3, #0 - 28ba6: f000 80f5 beq.w 28d94 + 28c90: 2b00 cmp r3, #0 + 28c92: f000 80f5 beq.w 28e80 int value = ((n >> 16) & 0x7F) | ((n >> 17) & 0x3F80); - 28baa: 0c69 lsrs r1, r5, #17 - 28bac: f3c5 4206 ubfx r2, r5, #16, #7 + 28c96: 0c69 lsrs r1, r5, #17 + 28c98: f3c5 4206 ubfx r2, r5, #16, #7 (*handlePitchChange)(ch, value); - 28bb0: b2f6 uxtb r6, r6 + 28c9c: b2f6 uxtb r6, r6 int value = ((n >> 16) & 0x7F) | ((n >> 17) & 0x3F80); - 28bb2: f401 517e and.w r1, r1, #16256 ; 0x3f80 - 28bb6: ea4f 4815 mov.w r8, r5, lsr #16 + 28c9e: f401 517e and.w r1, r1, #16256 ; 0x3f80 + 28ca2: ea4f 4815 mov.w r8, r5, lsr #16 (*handlePitchChange)(ch, value); - 28bba: 4630 mov r0, r6 + 28ca6: 4630 mov r0, r6 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28bbc: 0e2d lsrs r5, r5, #24 + 28ca8: 0e2d lsrs r5, r5, #24 int value = ((n >> 16) & 0x7F) | ((n >> 17) & 0x3F80); - 28bbe: 4311 orrs r1, r2 + 28caa: 4311 orrs r1, r2 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28bc0: fa5f f888 uxtb.w r8, r8 + 28cac: fa5f f888 uxtb.w r8, r8 (*handlePitchChange)(ch, value); - 28bc4: f5a1 5100 sub.w r1, r1, #8192 ; 0x2000 - 28bc8: 4798 blx r3 - 28bca: e66b b.n 288a4 + 28cb0: f5a1 5100 sub.w r1, r1, #8192 ; 0x2000 + 28cb4: 4798 blx r3 + 28cb6: e66b b.n 28990 if (msg_sysex_len < SYSEX_MAX_LEN) { - 28bcc: f5b1 7f91 cmp.w r1, #290 ; 0x122 - 28bd0: d2b9 bcs.n 28b46 + 28cb8: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 28cbc: d2b9 bcs.n 28c32 msg_sysex[msg_sysex_len++] = b; - 28bd2: 1c4b adds r3, r1, #1 - 28bd4: b29b uxth r3, r3 - 28bd6: e7b1 b.n 28b3c + 28cbe: 1c4b adds r3, r1, #1 + 28cc0: b29b uxth r3, r3 + 28cc2: e7b1 b.n 28c28 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28bd8: f8d4 619c ldr.w r6, [r4, #412] ; 0x19c - 28bdc: 2e00 cmp r6, #0 - 28bde: d052 beq.n 28c86 - 28be0: f8b4 317c ldrh.w r3, [r4, #380] ; 0x17c - 28be4: f5b3 7f91 cmp.w r3, #290 ; 0x122 - 28be8: f0c0 8088 bcc.w 28cfc + 28cc4: f8d4 619c ldr.w r6, [r4, #412] ; 0x19c + 28cc8: 2e00 cmp r6, #0 + 28cca: d052 beq.n 28d72 + 28ccc: f8b4 317c ldrh.w r3, [r4, #380] ; 0x17c + 28cd0: f5b3 7f91 cmp.w r3, #290 ; 0x122 + 28cd4: f0c0 8088 bcc.w 28de8 (*handleSysExPartial)(msg_sysex, msg_sysex_len, 0); - 28bec: 4619 mov r1, r3 - 28bee: 463a mov r2, r7 - 28bf0: f104 0059 add.w r0, r4, #89 ; 0x59 - 28bf4: 47b0 blx r6 + 28cd8: 4619 mov r1, r3 + 28cda: 463a mov r2, r7 + 28cdc: f104 0059 add.w r0, r4, #89 ; 0x59 + 28ce0: 47b0 blx r6 msg_sysex[msg_sysex_len++] = b; - 28bf6: 2301 movs r3, #1 + 28ce2: 2301 movs r3, #1 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28bf8: f8d4 219c ldr.w r2, [r4, #412] ; 0x19c + 28ce4: f8d4 219c ldr.w r2, [r4, #412] ; 0x19c sysex_byte(n >> 16); - 28bfc: f3c5 4007 ubfx r0, r5, #16, #8 + 28ce8: f3c5 4007 ubfx r0, r5, #16, #8 sysex_byte(n >> 8); - 28c00: f884 9059 strb.w r9, [r4, #89] ; 0x59 + 28cec: f884 9059 strb.w r9, [r4, #89] ; 0x59 msg_sysex[msg_sysex_len++] = b; - 28c04: f8a4 317c strh.w r3, [r4, #380] ; 0x17c + 28cf0: f8a4 317c strh.w r3, [r4, #380] ; 0x17c if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28c08: 2a00 cmp r2, #0 - 28c0a: f040 80e2 bne.w 28dd2 + 28cf4: 2a00 cmp r2, #0 + 28cf6: f040 80e2 bne.w 28ebe msg_sysex[msg_sysex_len++] = b; - 28c0e: 1c59 adds r1, r3, #1 - 28c10: 4423 add r3, r4 + 28cfa: 1c59 adds r1, r3, #1 + 28cfc: 4423 add r3, r4 sysex_byte(n >> 24); - 28c12: 0e2d lsrs r5, r5, #24 + 28cfe: 0e2d lsrs r5, r5, #24 msg_sysex[msg_sysex_len++] = b; - 28c14: b289 uxth r1, r1 + 28d00: b289 uxth r1, r1 if (msg_sysex_len < SYSEX_MAX_LEN) { - 28c16: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 28d02: f5b1 7f91 cmp.w r1, #290 ; 0x122 msg_sysex[msg_sysex_len++] = b; - 28c1a: f8a4 117c strh.w r1, [r4, #380] ; 0x17c - 28c1e: f883 0059 strb.w r0, [r3, #89] ; 0x59 + 28d06: f8a4 117c strh.w r1, [r4, #380] ; 0x17c + 28d0a: f883 0059 strb.w r0, [r3, #89] ; 0x59 if (msg_sysex_len < SYSEX_MAX_LEN) { - 28c22: f4bf ae20 bcs.w 28866 + 28d0e: f4bf ae20 bcs.w 28952 msg_sysex[msg_sysex_len++] = b; - 28c26: 1c4b adds r3, r1, #1 - 28c28: b29b uxth r3, r3 - 28c2a: 4421 add r1, r4 - 28c2c: f8a4 317c strh.w r3, [r4, #380] ; 0x17c - 28c30: f881 5059 strb.w r5, [r1, #89] ; 0x59 - 28c34: e618 b.n 28868 + 28d12: 1c4b adds r3, r1, #1 + 28d14: b29b uxth r3, r3 + 28d16: 4421 add r1, r4 + 28d18: f8a4 317c strh.w r3, [r4, #380] ; 0x17c + 28d1c: f881 5059 strb.w r5, [r1, #89] ; 0x59 + 28d20: e618 b.n 28954 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28c36: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c - 28c3a: f8b4 117c ldrh.w r1, [r4, #380] ; 0x17c - 28c3e: b3b3 cbz r3, 28cae - 28c40: f5b1 7f91 cmp.w r1, #290 ; 0x122 - 28c44: f0c0 808b bcc.w 28d5e + 28d22: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c + 28d26: f8b4 117c ldrh.w r1, [r4, #380] ; 0x17c + 28d2a: b3b3 cbz r3, 28d9a + 28d2c: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 28d30: f0c0 808b bcc.w 28e4a (*handleSysExPartial)(msg_sysex, msg_sysex_len, 0); - 28c48: 2200 movs r2, #0 - 28c4a: f104 0059 add.w r0, r4, #89 ; 0x59 - 28c4e: 4798 blx r3 + 28d34: 2200 movs r2, #0 + 28d36: f104 0059 add.w r0, r4, #89 ; 0x59 + 28d3a: 4798 blx r3 msg_sysex[msg_sysex_len++] = b; - 28c50: 2101 movs r1, #1 + 28d3c: 2101 movs r1, #1 if (type1 >= 0x06) sysex_byte(n >> 16); - 28c52: 0c2a lsrs r2, r5, #16 + 28d3e: 0c2a lsrs r2, r5, #16 if (type1 == 0x07) sysex_byte(n >> 24); - 28c54: f1b8 0f07 cmp.w r8, #7 + 28d40: f1b8 0f07 cmp.w r8, #7 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28c58: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c + 28d44: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c if (type1 >= 0x06) sysex_byte(n >> 16); - 28c5c: f884 2059 strb.w r2, [r4, #89] ; 0x59 + 28d48: f884 2059 strb.w r2, [r4, #89] ; 0x59 msg_sysex[msg_sysex_len++] = b; - 28c60: f8a4 117c strh.w r1, [r4, #380] ; 0x17c + 28d4c: f8a4 117c strh.w r1, [r4, #380] ; 0x17c if (type1 == 0x07) sysex_byte(n >> 24); - 28c64: d147 bne.n 28cf6 + 28d50: d147 bne.n 28de2 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28c66: 2b00 cmp r3, #0 - 28c68: f000 80ab beq.w 28dc2 + 28d52: 2b00 cmp r3, #0 + 28d54: f000 80ab beq.w 28eae msg_sysex[msg_sysex_len++] = b; - 28c6c: 1c4f adds r7, r1, #1 - 28c6e: 460e mov r6, r1 + 28d58: 1c4f adds r7, r1, #1 + 28d5a: 460e mov r6, r1 msg_data1 = len; - 28c70: b2f8 uxtb r0, r7 + 28d5c: b2f8 uxtb r0, r7 msg_data2 = len >> 8; - 28c72: f3c7 2207 ubfx r2, r7, #8, #8 - 28c76: b2b9 uxth r1, r7 + 28d5e: f3c7 2207 ubfx r2, r7, #8, #8 + 28d62: b2b9 uxth r1, r7 msg_sysex[msg_sysex_len++] = b; - 28c78: 4426 add r6, r4 + 28d64: 4426 add r6, r4 if (type1 == 0x07) sysex_byte(n >> 24); - 28c7a: 0e2d lsrs r5, r5, #24 - 28c7c: f886 5059 strb.w r5, [r6, #89] ; 0x59 - 28c80: e771 b.n 28b66 + 28d66: 0e2d lsrs r5, r5, #24 + 28d68: f886 5059 strb.w r5, [r6, #89] ; 0x59 + 28d6c: e771 b.n 28c52 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28c82: 461d mov r5, r3 - 28c84: e60e b.n 288a4 + 28d6e: 461d mov r5, r3 + 28d70: e60e b.n 28990 if (msg_sysex_len < SYSEX_MAX_LEN) { - 28c86: f8b4 217c ldrh.w r2, [r4, #380] ; 0x17c - 28c8a: f5b2 7f91 cmp.w r2, #290 ; 0x122 - 28c8e: f4bf adea bcs.w 28866 + 28d72: f8b4 217c ldrh.w r2, [r4, #380] ; 0x17c + 28d76: f5b2 7f91 cmp.w r2, #290 ; 0x122 + 28d7a: f4bf adea bcs.w 28952 msg_sysex[msg_sysex_len++] = b; - 28c92: 1c53 adds r3, r2, #1 - 28c94: 4422 add r2, r4 + 28d7e: 1c53 adds r3, r2, #1 + 28d80: 4422 add r2, r4 sysex_byte(n >> 16); - 28c96: f3c5 4007 ubfx r0, r5, #16, #8 + 28d82: f3c5 4007 ubfx r0, r5, #16, #8 msg_sysex[msg_sysex_len++] = b; - 28c9a: b29b uxth r3, r3 + 28d86: b29b uxth r3, r3 if (msg_sysex_len < SYSEX_MAX_LEN) { - 28c9c: f5b3 7f91 cmp.w r3, #290 ; 0x122 + 28d88: f5b3 7f91 cmp.w r3, #290 ; 0x122 msg_sysex[msg_sysex_len++] = b; - 28ca0: f8a4 317c strh.w r3, [r4, #380] ; 0x17c + 28d8c: f8a4 317c strh.w r3, [r4, #380] ; 0x17c sysex_byte(n >> 8); - 28ca4: f882 9059 strb.w r9, [r2, #89] ; 0x59 + 28d90: f882 9059 strb.w r9, [r2, #89] ; 0x59 if (msg_sysex_len < SYSEX_MAX_LEN) { - 28ca8: f43f addd beq.w 28866 - 28cac: e7af b.n 28c0e - 28cae: f5b1 7f91 cmp.w r1, #290 ; 0x122 - 28cb2: d376 bcc.n 28da2 + 28d94: f43f addd beq.w 28952 + 28d98: e7af b.n 28cfa + 28d9a: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 28d9e: d376 bcc.n 28e8e if (type1 == 0x07) sysex_byte(n >> 24); - 28cb4: f1b8 0f07 cmp.w r8, #7 - 28cb8: d11d bne.n 28cf6 + 28da0: f1b8 0f07 cmp.w r8, #7 + 28da4: d11d bne.n 28de2 msg_data2 = len >> 8; - 28cba: 0a0b lsrs r3, r1, #8 + 28da6: 0a0b lsrs r3, r1, #8 msg_sysex_len = 0; - 28cbc: 2000 movs r0, #0 + 28da8: 2000 movs r0, #0 msg_type = 0xF0; // 0xF0 = SystemExclusive - 28cbe: 22f0 movs r2, #240 ; 0xf0 + 28daa: 22f0 movs r2, #240 ; 0xf0 msg_data1 = len; - 28cc0: f884 1057 strb.w r1, [r4, #87] ; 0x57 + 28dac: f884 1057 strb.w r1, [r4, #87] ; 0x57 msg_data2 = len >> 8; - 28cc4: f884 3058 strb.w r3, [r4, #88] ; 0x58 + 28db0: f884 3058 strb.w r3, [r4, #88] ; 0x58 msg_sysex_len = 0; - 28cc8: f8a4 017c strh.w r0, [r4, #380] ; 0x17c + 28db4: f8a4 017c strh.w r0, [r4, #380] ; 0x17c msg_type = 0xF0; // 0xF0 = SystemExclusive - 28ccc: f884 2056 strb.w r2, [r4, #86] ; 0x56 + 28db8: f884 2056 strb.w r2, [r4, #86] ; 0x56 } else if (handleSysExComplete) { - 28cd0: f8d4 31a0 ldr.w r3, [r4, #416] ; 0x1a0 - 28cd4: 2b00 cmp r3, #0 - 28cd6: d062 beq.n 28d9e + 28dbc: f8d4 31a0 ldr.w r3, [r4, #416] ; 0x1a0 + 28dc0: 2b00 cmp r3, #0 + 28dc2: d062 beq.n 28e8a (*handleSysExComplete)(msg_sysex, len); - 28cd8: f104 0059 add.w r0, r4, #89 ; 0x59 + 28dc4: f104 0059 add.w r0, r4, #89 ; 0x59 return true; - 28cdc: 2701 movs r7, #1 + 28dc8: 2701 movs r7, #1 (*handleSysExComplete)(msg_sysex, len); - 28cde: 4798 blx r3 - 28ce0: e5c2 b.n 28868 + 28dca: 4798 blx r3 + 28dcc: e5c2 b.n 28954 } else if (handleRealTimeSystem) { - 28ce2: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc - 28ce6: 2b00 cmp r3, #0 - 28ce8: f43f aeae beq.w 28a48 + 28dce: f8d4 31cc ldr.w r3, [r4, #460] ; 0x1cc + 28dd2: 2b00 cmp r3, #0 + 28dd4: f43f aeae beq.w 28b34 (*handleRealTimeSystem)(0xF8); - 28cec: 20f8 movs r0, #248 ; 0xf8 + 28dd8: 20f8 movs r0, #248 ; 0xf8 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28cee: f3c5 4807 ubfx r8, r5, #16, #8 + 28dda: f3c5 4807 ubfx r8, r5, #16, #8 (*handleRealTimeSystem)(0xF8); - 28cf2: 4798 blx r3 - 28cf4: e69d b.n 28a32 + 28dde: 4798 blx r3 + 28de0: e69d b.n 28b1e msg_data1 = len; - 28cf6: b2c8 uxtb r0, r1 + 28de2: b2c8 uxtb r0, r1 msg_data2 = len >> 8; - 28cf8: 0a0a lsrs r2, r1, #8 - 28cfa: e734 b.n 28b66 + 28de4: 0a0a lsrs r2, r1, #8 + 28de6: e734 b.n 28c52 msg_sysex[msg_sysex_len++] = b; - 28cfc: 1c59 adds r1, r3, #1 - 28cfe: 18e2 adds r2, r4, r3 + 28de8: 1c59 adds r1, r3, #1 + 28dea: 18e2 adds r2, r4, r3 sysex_byte(n >> 16); - 28d00: f3c5 4807 ubfx r8, r5, #16, #8 + 28dec: f3c5 4807 ubfx r8, r5, #16, #8 msg_sysex[msg_sysex_len++] = b; - 28d04: b289 uxth r1, r1 + 28df0: b289 uxth r1, r1 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28d06: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 28df2: f5b1 7f91 cmp.w r1, #290 ; 0x122 msg_sysex[msg_sysex_len++] = b; - 28d0a: f8a4 117c strh.w r1, [r4, #380] ; 0x17c + 28df6: f8a4 117c strh.w r1, [r4, #380] ; 0x17c sysex_byte(n >> 8); - 28d0e: f882 9059 strb.w r9, [r2, #89] ; 0x59 + 28dfa: f882 9059 strb.w r9, [r2, #89] ; 0x59 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28d12: d012 beq.n 28d3a + 28dfe: d012 beq.n 28e26 msg_sysex[msg_sysex_len++] = b; - 28d14: 3302 adds r3, #2 - 28d16: 1862 adds r2, r4, r1 + 28e00: 3302 adds r3, #2 + 28e02: 1862 adds r2, r4, r1 sysex_byte(n >> 24); - 28d18: 0e2d lsrs r5, r5, #24 + 28e04: 0e2d lsrs r5, r5, #24 msg_sysex[msg_sysex_len++] = b; - 28d1a: b299 uxth r1, r3 + 28e06: b299 uxth r1, r3 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28d1c: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 28e08: f5b1 7f91 cmp.w r1, #290 ; 0x122 msg_sysex[msg_sysex_len++] = b; - 28d20: f8a4 117c strh.w r1, [r4, #380] ; 0x17c - 28d24: f882 8059 strb.w r8, [r2, #89] ; 0x59 + 28e0c: f8a4 117c strh.w r1, [r4, #380] ; 0x17c + 28e10: f882 8059 strb.w r8, [r2, #89] ; 0x59 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28d28: f47f af7d bne.w 28c26 + 28e14: f47f af7d bne.w 28d12 (*handleSysExPartial)(msg_sysex, msg_sysex_len, 0); - 28d2c: 463a mov r2, r7 - 28d2e: f104 0059 add.w r0, r4, #89 ; 0x59 - 28d32: 47b0 blx r6 + 28e18: 463a mov r2, r7 + 28e1a: f104 0059 add.w r0, r4, #89 ; 0x59 + 28e1e: 47b0 blx r6 msg_sysex_len = 0; - 28d34: 4639 mov r1, r7 - 28d36: 2301 movs r3, #1 - 28d38: e777 b.n 28c2a + 28e20: 4639 mov r1, r7 + 28e22: 2301 movs r3, #1 + 28e24: e777 b.n 28d16 (*handleSysExPartial)(msg_sysex, msg_sysex_len, 0); - 28d3a: 463a mov r2, r7 - 28d3c: f104 0059 add.w r0, r4, #89 ; 0x59 - 28d40: 47b0 blx r6 + 28e26: 463a mov r2, r7 + 28e28: f104 0059 add.w r0, r4, #89 ; 0x59 + 28e2c: 47b0 blx r6 msg_sysex[msg_sysex_len++] = b; - 28d42: 2101 movs r1, #1 + 28e2e: 2101 movs r1, #1 sysex_byte(n >> 24); - 28d44: 0e2d lsrs r5, r5, #24 + 28e30: 0e2d lsrs r5, r5, #24 msg_sysex[msg_sysex_len++] = b; - 28d46: f884 8059 strb.w r8, [r4, #89] ; 0x59 - 28d4a: f8a4 117c strh.w r1, [r4, #380] ; 0x17c - 28d4e: e76a b.n 28c26 + 28e32: f884 8059 strb.w r8, [r4, #89] ; 0x59 + 28e36: f8a4 117c strh.w r1, [r4, #380] ; 0x17c + 28e3a: e76a b.n 28d12 if (msg_sysex_len < SYSEX_MAX_LEN) { - 28d50: f5b1 7f91 cmp.w r1, #290 ; 0x122 - 28d54: f4bf ad87 bcs.w 28866 + 28e3c: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 28e40: f4bf ad87 bcs.w 28952 msg_sysex[msg_sysex_len++] = b; - 28d58: 1c4b adds r3, r1, #1 - 28d5a: b29b uxth r3, r3 - 28d5c: e5e8 b.n 28930 - 28d5e: 1c48 adds r0, r1, #1 - 28d60: 1862 adds r2, r4, r1 + 28e44: 1c4b adds r3, r1, #1 + 28e46: b29b uxth r3, r3 + 28e48: e5e8 b.n 28a1c + 28e4a: 1c48 adds r0, r1, #1 + 28e4c: 1862 adds r2, r4, r1 if (type1 == 0x07) sysex_byte(n >> 24); - 28d62: f1b8 0f07 cmp.w r8, #7 + 28e4e: f1b8 0f07 cmp.w r8, #7 msg_sysex[msg_sysex_len++] = b; - 28d66: b281 uxth r1, r0 + 28e52: b281 uxth r1, r0 if (type1 >= 0x06) sysex_byte(n >> 16); - 28d68: ea4f 4015 mov.w r0, r5, lsr #16 + 28e54: ea4f 4015 mov.w r0, r5, lsr #16 msg_sysex[msg_sysex_len++] = b; - 28d6c: f8a4 117c strh.w r1, [r4, #380] ; 0x17c + 28e58: f8a4 117c strh.w r1, [r4, #380] ; 0x17c if (type1 >= 0x06) sysex_byte(n >> 16); - 28d70: f882 0059 strb.w r0, [r2, #89] ; 0x59 + 28e5c: f882 0059 strb.w r0, [r2, #89] ; 0x59 if (type1 == 0x07) sysex_byte(n >> 24); - 28d74: d1bf bne.n 28cf6 + 28e60: d1bf bne.n 28de2 if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28d76: f5b1 7f91 cmp.w r1, #290 ; 0x122 - 28d7a: f47f af77 bne.w 28c6c + 28e62: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 28e66: f47f af77 bne.w 28d58 (*handleSysExPartial)(msg_sysex, msg_sysex_len, 0); - 28d7e: 2200 movs r2, #0 - 28d80: f104 0059 add.w r0, r4, #89 ; 0x59 - 28d84: 4798 blx r3 + 28e6a: 2200 movs r2, #0 + 28e6c: f104 0059 add.w r0, r4, #89 ; 0x59 + 28e70: 4798 blx r3 msg_sysex_len = 0; - 28d86: 2200 movs r2, #0 - 28d88: 2001 movs r0, #1 + 28e72: 2200 movs r2, #0 + 28e74: 2001 movs r0, #1 if (handleSysExPartial) { - 28d8a: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c - 28d8e: 4616 mov r6, r2 - 28d90: 4601 mov r1, r0 - 28d92: e771 b.n 28c78 + 28e76: f8d4 319c ldr.w r3, [r4, #412] ; 0x19c + 28e7a: 4616 mov r6, r2 + 28e7c: 4601 mov r1, r0 + 28e7e: e771 b.n 28d64 (*handleNoteOff)(ch, (n >> 16), (n >> 24)); - 28d94: f3c5 4807 ubfx r8, r5, #16, #8 - 28d98: b2f6 uxtb r6, r6 - 28d9a: 0e2d lsrs r5, r5, #24 - 28d9c: e582 b.n 288a4 + 28e80: f3c5 4807 ubfx r8, r5, #16, #8 + 28e84: b2f6 uxtb r6, r6 + 28e86: 0e2d lsrs r5, r5, #24 + 28e88: e582 b.n 28990 return true; - 28d9e: 2701 movs r7, #1 - 28da0: e562 b.n 28868 + 28e8a: 2701 movs r7, #1 + 28e8c: e562 b.n 28954 msg_sysex[msg_sysex_len++] = b; - 28da2: 1c4a adds r2, r1, #1 + 28e8e: 1c4a adds r2, r1, #1 if (type1 >= 0x06) sysex_byte(n >> 16); - 28da4: 0c28 lsrs r0, r5, #16 + 28e90: 0c28 lsrs r0, r5, #16 msg_sysex[msg_sysex_len++] = b; - 28da6: 4421 add r1, r4 + 28e92: 4421 add r1, r4 if (type1 == 0x07) sysex_byte(n >> 24); - 28da8: f1b8 0f07 cmp.w r8, #7 + 28e94: f1b8 0f07 cmp.w r8, #7 msg_sysex[msg_sysex_len++] = b; - 28dac: b292 uxth r2, r2 - 28dae: f8a4 217c strh.w r2, [r4, #380] ; 0x17c + 28e98: b292 uxth r2, r2 + 28e9a: f8a4 217c strh.w r2, [r4, #380] ; 0x17c if (type1 >= 0x06) sysex_byte(n >> 16); - 28db2: f881 0059 strb.w r0, [r1, #89] ; 0x59 + 28e9e: f881 0059 strb.w r0, [r1, #89] ; 0x59 if (type1 == 0x07) sysex_byte(n >> 24); - 28db6: 4611 mov r1, r2 - 28db8: d19d bne.n 28cf6 + 28ea2: 4611 mov r1, r2 + 28ea4: d19d bne.n 28de2 if (msg_sysex_len < SYSEX_MAX_LEN) { - 28dba: f5b2 7f91 cmp.w r2, #290 ; 0x122 - 28dbe: f43f af7c beq.w 28cba + 28ea6: f5b2 7f91 cmp.w r2, #290 ; 0x122 + 28eaa: f43f af7c beq.w 28da6 msg_sysex[msg_sysex_len++] = b; - 28dc2: 1c4f adds r7, r1, #1 - 28dc4: 460e mov r6, r1 + 28eae: 1c4f adds r7, r1, #1 + 28eb0: 460e mov r6, r1 msg_data2 = len >> 8; - 28dc6: 2300 movs r3, #0 + 28eb2: 2300 movs r3, #0 msg_data1 = len; - 28dc8: b2f8 uxtb r0, r7 + 28eb4: b2f8 uxtb r0, r7 msg_data2 = len >> 8; - 28dca: f3c7 2207 ubfx r2, r7, #8, #8 - 28dce: b2b9 uxth r1, r7 - 28dd0: e752 b.n 28c78 + 28eb6: f3c7 2207 ubfx r2, r7, #8, #8 + 28eba: b2b9 uxth r1, r7 + 28ebc: e752 b.n 28d64 sysex_byte(n >> 24); - 28dd2: 0e2d lsrs r5, r5, #24 + 28ebe: 0e2d lsrs r5, r5, #24 msg_sysex[msg_sysex_len++] = b; - 28dd4: 2102 movs r1, #2 - 28dd6: f884 005a strb.w r0, [r4, #90] ; 0x5a + 28ec0: 2102 movs r1, #2 + 28ec2: f884 005a strb.w r0, [r4, #90] ; 0x5a if (handleSysExPartial && msg_sysex_len >= SYSEX_MAX_LEN) { - 28dda: e724 b.n 28c26 + 28ec6: e724 b.n 28d12 -00028ddc : +00028ec8 : */ #include "WS2812Serial.h" bool WS2812Serial::begin() { - 28ddc: b5f8 push {r3, r4, r5, r6, r7, lr} + 28ec8: b5f8 push {r3, r4, r5, r6, r7, lr} uint32_t hwtrigger; #else uint32_t divisor, portconfig, hwtrigger; KINETISK_UART_t *uart; #endif switch (pin) { - 28dde: 7881 ldrb r1, [r0, #2] + 28eca: 7881 ldrb r1, [r0, #2] { - 28de0: 4604 mov r4, r0 + 28ecc: 4604 mov r4, r0 switch (pin) { - 28de2: 1e4b subs r3, r1, #1 - 28de4: 2b26 cmp r3, #38 ; 0x26 - 28de6: d815 bhi.n 28e14 - 28de8: e8df f003 tbb [pc, r3] - 28dec: 14141482 .word 0x14141482 - 28df0: 8b141414 .word 0x8b141414 - 28df4: 14141414 .word 0x14141414 - 28df8: 14149414 .word 0x14149414 - 28dfc: 1614149d .word 0x1614149d - 28e00: 64141414 .word 0x64141414 - 28e04: 14141414 .word 0x14141414 - 28e08: 14141479 .word 0x14141479 - 28e0c: 14141414 .word 0x14141414 - 28e10: 1414 .short 0x1414 - 28e12: 16 .byte 0x16 - 28e13: 00 .byte 0x00 - 28e14: 2000 movs r0, #0 + 28ece: 1e4b subs r3, r1, #1 + 28ed0: 2b26 cmp r3, #38 ; 0x26 + 28ed2: d815 bhi.n 28f00 + 28ed4: e8df f003 tbb [pc, r3] + 28ed8: 14141482 .word 0x14141482 + 28edc: 8b141414 .word 0x8b141414 + 28ee0: 14141414 .word 0x14141414 + 28ee4: 14149414 .word 0x14149414 + 28ee8: 1614149d .word 0x1614149d + 28eec: 64141414 .word 0x64141414 + 28ef0: 14141414 .word 0x14141414 + 28ef4: 14141479 .word 0x14141479 + 28ef8: 14141414 .word 0x14141414 + 28efc: 1414 .short 0x1414 + 28efe: 16 .byte 0x16 + 28eff: 00 .byte 0x00 + 28f00: 2000 movs r0, #0 #endif dma->triggerAtHardwareEvent(hwtrigger); memset(drawBuffer, 0, numled * 3); return true; } - 28e16: bdf8 pop {r3, r4, r5, r6, r7, pc} + 28f02: bdf8 pop {r3, r4, r5, r6, r7, pc} CCM_CCGR6 |= CCM_CCGR6_LPUART8(CCM_CCGR_ON); - 28e18: 4a48 ldr r2, [pc, #288] ; (28f3c ) + 28f04: 4a48 ldr r2, [pc, #288] ; (29028 ) uart = &IMXRT_LPUART8; - 28e1a: 4849 ldr r0, [pc, #292] ; (28f40 ) + 28f06: 4849 ldr r0, [pc, #292] ; (2902c ) CCM_CCGR6 |= CCM_CCGR6_LPUART8(CCM_CCGR_ON); - 28e1c: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 + 28f08: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 break; - 28e20: 4e48 ldr r6, [pc, #288] ; (28f44 ) + 28f0c: 4e48 ldr r6, [pc, #288] ; (29030 ) CCM_CCGR6 |= CCM_CCGR6_LPUART8(CCM_CCGR_ON); - 28e22: f443 4340 orr.w r3, r3, #49152 ; 0xc000 + 28f0e: f443 4340 orr.w r3, r3, #49152 ; 0xc000 uart = &IMXRT_LPUART8; - 28e26: 61a0 str r0, [r4, #24] + 28f12: 61a0 str r0, [r4, #24] CCM_CCGR6 |= CCM_CCGR6_LPUART8(CCM_CCGR_ON); - 28e28: f8c2 3080 str.w r3, [r2, #128] ; 0x80 + 28f14: f8c2 3080 str.w r3, [r2, #128] ; 0x80 if (!dma) { - 28e2c: 68e5 ldr r5, [r4, #12] - 28e2e: 2d00 cmp r5, #0 - 28e30: d04b beq.n 28eca + 28f18: 68e5 ldr r5, [r4, #12] + 28f1a: 2d00 cmp r5, #0 + 28f1c: d04b beq.n 28fb6 uart->CTRL = 0; // clear everything - 28e32: 69a3 ldr r3, [r4, #24] - 28e34: 2200 movs r2, #0 + 28f1e: 69a3 ldr r3, [r4, #24] + 28f20: 2200 movs r2, #0 uart->BAUD = LPUART_BAUD_OSR(5) | LPUART_BAUD_SBR(1) | LPUART_BAUD_TDMAE; // set baud configure for transfer DMA - 28e36: 4844 ldr r0, [pc, #272] ; (28f48 ) + 28f22: 4844 ldr r0, [pc, #272] ; (29034 ) uart->CTRL = 0; // clear everything - 28e38: 619a str r2, [r3, #24] + 28f24: 619a str r2, [r3, #24] uart->BAUD = LPUART_BAUD_OSR(5) | LPUART_BAUD_SBR(1) | LPUART_BAUD_TDMAE; // set baud configure for transfer DMA - 28e3a: 6118 str r0, [r3, #16] + 28f26: 6118 str r0, [r3, #16] uart->PINCFG = 0; - 28e3c: 60da str r2, [r3, #12] + 28f28: 60da str r2, [r3, #12] uint16_t tx_fifo_size = (((uart->FIFO >> 4) & 0x7) << 2); - 28e3e: 6a9a ldr r2, [r3, #40] ; 0x28 - 28e40: 0892 lsrs r2, r2, #2 - 28e42: f002 021c and.w r2, r2, #28 + 28f2a: 6a9a ldr r2, [r3, #40] ; 0x28 + 28f2c: 0892 lsrs r2, r2, #2 + 28f2e: f002 021c and.w r2, r2, #28 uint8_t tx_water = (tx_fifo_size < 16) ? tx_fifo_size >> 1 : 7; - 28e46: 2a0f cmp r2, #15 - 28e48: d876 bhi.n 28f38 - 28e4a: 0852 lsrs r2, r2, #1 + 28f32: 2a0f cmp r2, #15 + 28f34: d876 bhi.n 29024 + 28f36: 0852 lsrs r2, r2, #1 uart->WATER = LPUART_WATER_TXWATER(tx_water); - 28e4c: f002 0202 and.w r2, r2, #2 - 28e50: 62da str r2, [r3, #44] ; 0x2c + 28f38: f002 0202 and.w r2, r2, #2 + 28f3c: 62da str r2, [r3, #44] ; 0x2c dma->destination((volatile uint8_t&)uart->DATA); - 28e52: 331c adds r3, #28 + 28f3e: 331c adds r3, #28 *(portControlRegister(pin)) = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3); - 28e54: 4a3d ldr r2, [pc, #244] ; (28f4c ) + 28f40: 4a3d ldr r2, [pc, #244] ; (29038 ) uart->CTRL = (LPUART_CTRL_TE /*| LPUART_CTRL_TIE */ | LPUART_CTRL_TXINV); // enable transmitter and invert - 28e56: f8df c12c ldr.w ip, [pc, #300] ; 28f84 + 28f42: f8df c12c ldr.w ip, [pc, #300] ; 29070 *(portControlRegister(pin)) = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3); - 28e5a: eb02 1201 add.w r2, r2, r1, lsl #4 + 28f46: eb02 1201 add.w r2, r2, r1, lsl #4 uart->FIFO |= LPUART_FIFO_TXFE; - 28e5e: 68d9 ldr r1, [r3, #12] - 28e60: f041 0180 orr.w r1, r1, #128 ; 0x80 + 28f4a: 68d9 ldr r1, [r3, #12] + 28f4c: f041 0180 orr.w r1, r1, #128 ; 0x80 *(portConfigRegister(pin)) = pinmuxval; - 28e64: e9d2 0701 ldrd r0, r7, [r2, #4] + 28f50: e9d2 0701 ldrd r0, r7, [r2, #4] uart->FIFO |= LPUART_FIFO_TXFE; - 28e68: 60d9 str r1, [r3, #12] + 28f54: 60d9 str r1, [r3, #12] TCD->DOFF = 0; - 28e6a: 2100 movs r1, #0 - 28e6c: 682a ldr r2, [r5, #0] + 28f56: 2100 movs r1, #0 + 28f58: 682a ldr r2, [r5, #0] uart->CTRL = (LPUART_CTRL_TE /*| LPUART_CTRL_TIE */ | LPUART_CTRL_TXINV); // enable transmitter and invert - 28e6e: f843 cc04 str.w ip, [r3, #-4] + 28f5a: f843 cc04 str.w ip, [r3, #-4] *(portControlRegister(pin)) = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3); - 28e72: f04f 0cd9 mov.w ip, #217 ; 0xd9 + 28f5e: f04f 0cd9 mov.w ip, #217 ; 0xd9 if ((uint32_t)&p < 0x40000000 || TCD->NBYTES == 0) TCD->NBYTES = 1; - 28e76: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 28e7a: f8c7 c000 str.w ip, [r7] + 28f62: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 28f66: f8c7 c000 str.w ip, [r7] *(portConfigRegister(pin)) = pinmuxval; - 28e7e: f04f 0702 mov.w r7, #2 - 28e82: 6007 str r7, [r0, #0] + 28f6a: f04f 0702 mov.w r7, #2 + 28f6e: 6007 str r7, [r0, #0] TCD->DADDR = &p; - 28e84: 6113 str r3, [r2, #16] + 28f70: 6113 str r3, [r2, #16] TCD->DOFF = 0; - 28e86: 8291 strh r1, [r2, #20] + 28f72: 8291 strh r1, [r2, #20] TCD->ATTR_DST = 0; - 28e88: 7191 strb r1, [r2, #6] + 28f74: 7191 strb r1, [r2, #6] if ((uint32_t)&p < 0x40000000 || TCD->NBYTES == 0) TCD->NBYTES = 1; - 28e8a: d301 bcc.n 28e90 - 28e8c: 6893 ldr r3, [r2, #8] - 28e8e: b90b cbnz r3, 28e94 - 28e90: 2301 movs r3, #1 - 28e92: 6093 str r3, [r2, #8] + 28f76: d301 bcc.n 28f7c + 28f78: 6893 ldr r3, [r2, #8] + 28f7a: b90b cbnz r3, 28f80 + 28f7c: 2301 movs r3, #1 + 28f7e: 6093 str r3, [r2, #8] TCD->DLASTSGA = 0; - 28e94: 2100 movs r1, #0 + 28f80: 2100 movs r1, #0 volatile uint32_t *mux = &DMAMUX_CHCFG0 + channel; - 28e96: 4b2e ldr r3, [pc, #184] ; (28f50 ) + 28f82: 4b2e ldr r3, [pc, #184] ; (2903c ) memset(drawBuffer, 0, numled * 3); - 28e98: 68a0 ldr r0, [r4, #8] + 28f84: 68a0 ldr r0, [r4, #8] TCD->DLASTSGA = 0; - 28e9a: 6191 str r1, [r2, #24] + 28f86: 6191 str r1, [r2, #24] volatile uint32_t *mux = &DMAMUX_CHCFG0 + channel; - 28e9c: 792a ldrb r2, [r5, #4] + 28f88: 792a ldrb r2, [r5, #4] *mux = 0; - 28e9e: f843 1022 str.w r1, [r3, r2, lsl #2] + 28f8a: f843 1022 str.w r1, [r3, r2, lsl #2] *mux = (source & 0x7F) | DMAMUX_CHCFG_ENBL; - 28ea2: f843 6022 str.w r6, [r3, r2, lsl #2] - 28ea6: 8822 ldrh r2, [r4, #0] - 28ea8: eb02 0242 add.w r2, r2, r2, lsl #1 - 28eac: f005 faee bl 2e48c + 28f8e: f843 6022 str.w r6, [r3, r2, lsl #2] + 28f92: 8822 ldrh r2, [r4, #0] + 28f94: eb02 0242 add.w r2, r2, r2, lsl #1 + 28f98: f005 faec bl 2e574 return true; - 28eb0: 2001 movs r0, #1 + 28f9c: 2001 movs r0, #1 } - 28eb2: bdf8 pop {r3, r4, r5, r6, r7, pc} + 28f9e: bdf8 pop {r3, r4, r5, r6, r7, pc} CCM_CCGR5 |= CCM_CCGR5_LPUART1(CCM_CCGR_ON); - 28eb4: 4a21 ldr r2, [pc, #132] ; (28f3c ) + 28fa0: 4a21 ldr r2, [pc, #132] ; (29028 ) uart = &IMXRT_LPUART1; - 28eb6: 4827 ldr r0, [pc, #156] ; (28f54 ) + 28fa2: 4827 ldr r0, [pc, #156] ; (29040 ) CCM_CCGR5 |= CCM_CCGR5_LPUART1(CCM_CCGR_ON); - 28eb8: 6fd3 ldr r3, [r2, #124] ; 0x7c + 28fa4: 6fd3 ldr r3, [r2, #124] ; 0x7c if (!dma) { - 28eba: 68e5 ldr r5, [r4, #12] + 28fa6: 68e5 ldr r5, [r4, #12] CCM_CCGR5 |= CCM_CCGR5_LPUART1(CCM_CCGR_ON); - 28ebc: f043 7340 orr.w r3, r3, #50331648 ; 0x3000000 + 28fa8: f043 7340 orr.w r3, r3, #50331648 ; 0x3000000 uart = &IMXRT_LPUART1; - 28ec0: 61a0 str r0, [r4, #24] + 28fac: 61a0 str r0, [r4, #24] break; - 28ec2: 4e25 ldr r6, [pc, #148] ; (28f58 ) + 28fae: 4e25 ldr r6, [pc, #148] ; (29044 ) CCM_CCGR5 |= CCM_CCGR5_LPUART1(CCM_CCGR_ON); - 28ec4: 67d3 str r3, [r2, #124] ; 0x7c + 28fb0: 67d3 str r3, [r2, #124] ; 0x7c if (!dma) { - 28ec6: 2d00 cmp r5, #0 - 28ec8: d1b3 bne.n 28e32 + 28fb2: 2d00 cmp r5, #0 + 28fb4: d1b3 bne.n 28f1e dma = new DMAChannel; - 28eca: 2008 movs r0, #8 - 28ecc: f001 fcb6 bl 2a83c - 28ed0: 4605 mov r5, r0 + 28fb6: 2008 movs r0, #8 + 28fb8: f001 fcb4 bl 2a924 + 28fbc: 4605 mov r5, r0 begin(); - 28ed2: 2100 movs r1, #0 - 28ed4: f000 fa92 bl 293fc + 28fbe: 2100 movs r1, #0 + 28fc0: f000 fa92 bl 294e8 *(portControlRegister(pin)) = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3); - 28ed8: 78a1 ldrb r1, [r4, #2] + 28fc4: 78a1 ldrb r1, [r4, #2] dma = new DMAChannel; - 28eda: 60e5 str r5, [r4, #12] + 28fc6: 60e5 str r5, [r4, #12] if (!dma) return false; // unable to allocate DMA channel - 28edc: e7a9 b.n 28e32 + 28fc8: e7a9 b.n 28f1e CCM_CCGR5 |= CCM_CCGR5_LPUART7(CCM_CCGR_ON); - 28ede: 4a17 ldr r2, [pc, #92] ; (28f3c ) + 28fca: 4a17 ldr r2, [pc, #92] ; (29028 ) uart = &IMXRT_LPUART7; - 28ee0: 481e ldr r0, [pc, #120] ; (28f5c ) + 28fcc: 481e ldr r0, [pc, #120] ; (29048 ) CCM_CCGR5 |= CCM_CCGR5_LPUART7(CCM_CCGR_ON); - 28ee2: 6fd3 ldr r3, [r2, #124] ; 0x7c + 28fce: 6fd3 ldr r3, [r2, #124] ; 0x7c break; - 28ee4: 4e1e ldr r6, [pc, #120] ; (28f60 ) + 28fd0: 4e1e ldr r6, [pc, #120] ; (2904c ) CCM_CCGR5 |= CCM_CCGR5_LPUART7(CCM_CCGR_ON); - 28ee6: f043 6340 orr.w r3, r3, #201326592 ; 0xc000000 + 28fd2: f043 6340 orr.w r3, r3, #201326592 ; 0xc000000 uart = &IMXRT_LPUART7; - 28eea: 61a0 str r0, [r4, #24] + 28fd6: 61a0 str r0, [r4, #24] CCM_CCGR5 |= CCM_CCGR5_LPUART7(CCM_CCGR_ON); - 28eec: 67d3 str r3, [r2, #124] ; 0x7c + 28fd8: 67d3 str r3, [r2, #124] ; 0x7c break; - 28eee: e79d b.n 28e2c + 28fda: e79d b.n 28f18 CCM_CCGR3 |= CCM_CCGR3_LPUART6(CCM_CCGR_ON); - 28ef0: 4a12 ldr r2, [pc, #72] ; (28f3c ) + 28fdc: 4a12 ldr r2, [pc, #72] ; (29028 ) uart = &IMXRT_LPUART6; - 28ef2: 481c ldr r0, [pc, #112] ; (28f64 ) + 28fde: 481c ldr r0, [pc, #112] ; (29050 ) CCM_CCGR3 |= CCM_CCGR3_LPUART6(CCM_CCGR_ON); - 28ef4: 6f53 ldr r3, [r2, #116] ; 0x74 + 28fe0: 6f53 ldr r3, [r2, #116] ; 0x74 break; - 28ef6: 4e1c ldr r6, [pc, #112] ; (28f68 ) + 28fe2: 4e1c ldr r6, [pc, #112] ; (29054 ) CCM_CCGR3 |= CCM_CCGR3_LPUART6(CCM_CCGR_ON); - 28ef8: f043 03c0 orr.w r3, r3, #192 ; 0xc0 + 28fe4: f043 03c0 orr.w r3, r3, #192 ; 0xc0 uart = &IMXRT_LPUART6; - 28efc: 61a0 str r0, [r4, #24] + 28fe8: 61a0 str r0, [r4, #24] CCM_CCGR3 |= CCM_CCGR3_LPUART6(CCM_CCGR_ON); - 28efe: 6753 str r3, [r2, #116] ; 0x74 + 28fea: 6753 str r3, [r2, #116] ; 0x74 break; - 28f00: e794 b.n 28e2c + 28fec: e794 b.n 28f18 CCM_CCGR1 |= CCM_CCGR1_LPUART4(CCM_CCGR_ON); - 28f02: 4a0e ldr r2, [pc, #56] ; (28f3c ) + 28fee: 4a0e ldr r2, [pc, #56] ; (29028 ) uart = &IMXRT_LPUART4; - 28f04: 4819 ldr r0, [pc, #100] ; (28f6c ) + 28ff0: 4819 ldr r0, [pc, #100] ; (29058 ) CCM_CCGR1 |= CCM_CCGR1_LPUART4(CCM_CCGR_ON); - 28f06: 6ed3 ldr r3, [r2, #108] ; 0x6c + 28ff2: 6ed3 ldr r3, [r2, #108] ; 0x6c break; - 28f08: 4e19 ldr r6, [pc, #100] ; (28f70 ) + 28ff4: 4e19 ldr r6, [pc, #100] ; (2905c ) CCM_CCGR1 |= CCM_CCGR1_LPUART4(CCM_CCGR_ON); - 28f0a: f043 7340 orr.w r3, r3, #50331648 ; 0x3000000 + 28ff6: f043 7340 orr.w r3, r3, #50331648 ; 0x3000000 uart = &IMXRT_LPUART4; - 28f0e: 61a0 str r0, [r4, #24] + 28ffa: 61a0 str r0, [r4, #24] CCM_CCGR1 |= CCM_CCGR1_LPUART4(CCM_CCGR_ON); - 28f10: 66d3 str r3, [r2, #108] ; 0x6c + 28ffc: 66d3 str r3, [r2, #108] ; 0x6c break; - 28f12: e78b b.n 28e2c + 28ffe: e78b b.n 28f18 CCM_CCGR0 |= CCM_CCGR0_LPUART2(CCM_CCGR_ON); - 28f14: 4a09 ldr r2, [pc, #36] ; (28f3c ) + 29000: 4a09 ldr r2, [pc, #36] ; (29028 ) uart = &IMXRT_LPUART2; - 28f16: 4817 ldr r0, [pc, #92] ; (28f74 ) + 29002: 4817 ldr r0, [pc, #92] ; (29060 ) CCM_CCGR0 |= CCM_CCGR0_LPUART2(CCM_CCGR_ON); - 28f18: 6e93 ldr r3, [r2, #104] ; 0x68 + 29004: 6e93 ldr r3, [r2, #104] ; 0x68 break; - 28f1a: 4e17 ldr r6, [pc, #92] ; (28f78 ) + 29006: 4e17 ldr r6, [pc, #92] ; (29064 ) CCM_CCGR0 |= CCM_CCGR0_LPUART2(CCM_CCGR_ON); - 28f1c: f043 5340 orr.w r3, r3, #805306368 ; 0x30000000 + 29008: f043 5340 orr.w r3, r3, #805306368 ; 0x30000000 uart = &IMXRT_LPUART2; - 28f20: 61a0 str r0, [r4, #24] + 2900c: 61a0 str r0, [r4, #24] CCM_CCGR0 |= CCM_CCGR0_LPUART2(CCM_CCGR_ON); - 28f22: 6693 str r3, [r2, #104] ; 0x68 + 2900e: 6693 str r3, [r2, #104] ; 0x68 break; - 28f24: e782 b.n 28e2c + 29010: e782 b.n 28f18 CCM_CCGR0 |= CCM_CCGR0_LPUART3(CCM_CCGR_ON); - 28f26: 4a05 ldr r2, [pc, #20] ; (28f3c ) + 29012: 4a05 ldr r2, [pc, #20] ; (29028 ) uart = &IMXRT_LPUART3; - 28f28: 4814 ldr r0, [pc, #80] ; (28f7c ) + 29014: 4814 ldr r0, [pc, #80] ; (29068 ) CCM_CCGR0 |= CCM_CCGR0_LPUART3(CCM_CCGR_ON); - 28f2a: 6e93 ldr r3, [r2, #104] ; 0x68 + 29016: 6e93 ldr r3, [r2, #104] ; 0x68 break; - 28f2c: 4e14 ldr r6, [pc, #80] ; (28f80 ) + 29018: 4e14 ldr r6, [pc, #80] ; (2906c ) CCM_CCGR0 |= CCM_CCGR0_LPUART3(CCM_CCGR_ON); - 28f2e: f443 5340 orr.w r3, r3, #12288 ; 0x3000 + 2901a: f443 5340 orr.w r3, r3, #12288 ; 0x3000 uart = &IMXRT_LPUART3; - 28f32: 61a0 str r0, [r4, #24] + 2901e: 61a0 str r0, [r4, #24] CCM_CCGR0 |= CCM_CCGR0_LPUART3(CCM_CCGR_ON); - 28f34: 6693 str r3, [r2, #104] ; 0x68 + 29020: 6693 str r3, [r2, #104] ; 0x68 break; - 28f36: e779 b.n 28e2c - 28f38: 2203 movs r2, #3 - 28f3a: e789 b.n 28e50 - 28f3c: 400fc000 .word 0x400fc000 - 28f40: 401a0000 .word 0x401a0000 - 28f44: 80000048 .word 0x80000048 - 28f48: 05800001 .word 0x05800001 - 28f4c: 200044b4 .word 0x200044b4 - 28f50: 400ec000 .word 0x400ec000 - 28f54: 40184000 .word 0x40184000 - 28f58: 80000002 .word 0x80000002 - 28f5c: 4019c000 .word 0x4019c000 - 28f60: 80000008 .word 0x80000008 - 28f64: 40198000 .word 0x40198000 - 28f68: 80000046 .word 0x80000046 - 28f6c: 40190000 .word 0x40190000 - 28f70: 80000044 .word 0x80000044 - 28f74: 40188000 .word 0x40188000 - 28f78: 80000042 .word 0x80000042 - 28f7c: 4018c000 .word 0x4018c000 - 28f80: 80000004 .word 0x80000004 - 28f84: 10080000 .word 0x10080000 - -00028f88 : + 29022: e779 b.n 28f18 + 29024: 2203 movs r2, #3 + 29026: e789 b.n 28f3c + 29028: 400fc000 .word 0x400fc000 + 2902c: 401a0000 .word 0x401a0000 + 29030: 80000048 .word 0x80000048 + 29034: 05800001 .word 0x05800001 + 29038: 20004574 .word 0x20004574 + 2903c: 400ec000 .word 0x400ec000 + 29040: 40184000 .word 0x40184000 + 29044: 80000002 .word 0x80000002 + 29048: 4019c000 .word 0x4019c000 + 2904c: 80000008 .word 0x80000008 + 29050: 40198000 .word 0x40198000 + 29054: 80000046 .word 0x80000046 + 29058: 40190000 .word 0x40190000 + 2905c: 80000044 .word 0x80000044 + 29060: 40188000 .word 0x40188000 + 29064: 80000042 .word 0x80000042 + 29068: 4018c000 .word 0x4018c000 + 2906c: 80000004 .word 0x80000004 + 29070: 10080000 .word 0x10080000 + +00029074 : while ((dma->CFG->DCR & DMA_DCR_ERQ)) { yield(); } #elif defined(__IMXRT1062__) //Serial.println("Show called"); while ((DMA_ERQ & (1 << dma->channel))) { - 28f88: 68c3 ldr r3, [r0, #12] + 29074: 68c3 ldr r3, [r0, #12] { - 28f8a: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 29076: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} while ((DMA_ERQ & (1 << dma->channel))) { - 28f8e: 4eb1 ldr r6, [pc, #708] ; (29254 ) - 28f90: 2501 movs r5, #1 - 28f92: 791b ldrb r3, [r3, #4] + 2907a: 4eb1 ldr r6, [pc, #708] ; (29340 ) + 2907c: 2501 movs r5, #1 + 2907e: 791b ldrb r3, [r3, #4] { - 28f94: b083 sub sp, #12 + 29080: b083 sub sp, #12 while ((DMA_ERQ & (1 << dma->channel))) { - 28f96: 68f2 ldr r2, [r6, #12] + 29082: 68f2 ldr r2, [r6, #12] { - 28f98: 4604 mov r4, r0 + 29084: 4604 mov r4, r0 while ((DMA_ERQ & (1 << dma->channel))) { - 28f9a: fa05 f303 lsl.w r3, r5, r3 - 28f9e: 4213 tst r3, r2 - 28fa0: d008 beq.n 28fb4 + 29086: fa05 f303 lsl.w r3, r5, r3 + 2908a: 4213 tst r3, r2 + 2908c: d008 beq.n 290a0 yield(); - 28fa2: f003 fb0b bl 2c5bc + 2908e: f003 fb09 bl 2c6a4 while ((DMA_ERQ & (1 << dma->channel))) { - 28fa6: 68e3 ldr r3, [r4, #12] - 28fa8: 68f2 ldr r2, [r6, #12] - 28faa: 791b ldrb r3, [r3, #4] - 28fac: fa05 f303 lsl.w r3, r5, r3 - 28fb0: 4213 tst r3, r2 - 28fb2: d1f6 bne.n 28fa2 + 29092: 68e3 ldr r3, [r4, #12] + 29094: 68f2 ldr r2, [r6, #12] + 29096: 791b ldrb r3, [r3, #4] + 29098: fa05 f303 lsl.w r3, r5, r3 + 2909c: 4213 tst r3, r2 + 2909e: d1f6 bne.n 2908e } //Serial.println("After Yield"); #endif // copy drawing buffer to frame buffer if (config < 6) { - 28fb4: 78e0 ldrb r0, [r4, #3] - 28fb6: 2805 cmp r0, #5 - 28fb8: d826 bhi.n 29008 + 290a0: 78e0 ldrb r0, [r4, #3] + 290a2: 2805 cmp r0, #5 + 290a4: d826 bhi.n 290f4 // RGB const uint8_t *p = drawBuffer; const uint8_t *end = p + (numled * 3); - 28fba: 8823 ldrh r3, [r4, #0] + 290a6: 8823 ldrh r3, [r4, #0] const uint8_t *p = drawBuffer; - 28fbc: 68a6 ldr r6, [r4, #8] + 290a8: 68a6 ldr r6, [r4, #8] const uint8_t *end = p + (numled * 3); - 28fbe: eb03 0743 add.w r7, r3, r3, lsl #1 + 290aa: eb03 0743 add.w r7, r3, r3, lsl #1 uint8_t *fb = frameBuffer; - 28fc2: 6865 ldr r5, [r4, #4] + 290ae: 6865 ldr r5, [r4, #4] const uint8_t *end = p + (numled * 3); - 28fc4: 4437 add r7, r6 + 290b0: 4437 add r7, r6 while (p < end) { - 28fc6: 42be cmp r6, r7 - 28fc8: f080 820d bcs.w 293e6 - 28fcc: 3603 adds r6, #3 - 28fce: 350c adds r5, #12 + 290b2: 42be cmp r6, r7 + 290b4: f080 820d bcs.w 294d2 + 290b8: 3603 adds r6, #3 + 290ba: 350c adds r5, #12 uint8_t b = *p++; uint8_t g = *p++; uint8_t r = *p++; uint32_t mult = brightness + 1; - 28fd0: 7d21 ldrb r1, [r4, #20] - 28fd2: f1a5 020c sub.w r2, r5, #12 + 290bc: 7d21 ldrb r1, [r4, #20] + 290be: f1a5 020c sub.w r2, r5, #12 b = (b * mult) >> 8; g = (g * mult) >> 8; r = (r * mult) >> 8; - 28fd6: f816 3c01 ldrb.w r3, [r6, #-1] + 290c2: f816 3c01 ldrb.w r3, [r6, #-1] b = (b * mult) >> 8; - 28fda: f816 ec03 ldrb.w lr, [r6, #-3] + 290c6: f816 ec03 ldrb.w lr, [r6, #-3] g = (g * mult) >> 8; - 28fde: f816 cc02 ldrb.w ip, [r6, #-2] + 290ca: f816 cc02 ldrb.w ip, [r6, #-2] b = (b * mult) >> 8; - 28fe2: fb01 ee0e mla lr, r1, lr, lr + 290ce: fb01 ee0e mla lr, r1, lr, lr g = (g * mult) >> 8; - 28fe6: fb01 cc0c mla ip, r1, ip, ip + 290d2: fb01 cc0c mla ip, r1, ip, ip r = (r * mult) >> 8; - 28fea: fb01 3103 mla r1, r1, r3, r3 + 290d6: fb01 3103 mla r1, r1, r3, r3 b = (b * mult) >> 8; - 28fee: ea4f 281e mov.w r8, lr, lsr #8 + 290da: ea4f 281e mov.w r8, lr, lsr #8 g = (g * mult) >> 8; - 28ff2: ea4f 291c mov.w r9, ip, lsr #8 + 290de: ea4f 291c mov.w r9, ip, lsr #8 r = (r * mult) >> 8; - 28ff6: 0a0b lsrs r3, r1, #8 + 290e2: 0a0b lsrs r3, r1, #8 uint32_t n=0; switch (config) { - 28ff8: 2805 cmp r0, #5 - 28ffa: f200 81fb bhi.w 293f4 - 28ffe: e8df f000 tbb [pc, r0] - 29002: 767d .short 0x767d - 29004: 4662696f .word 0x4662696f + 290e4: 2805 cmp r0, #5 + 290e6: f200 81fb bhi.w 294e0 + 290ea: e8df f000 tbb [pc, r0] + 290ee: 767d .short 0x767d + 290f0: 4662696f .word 0x4662696f } microseconds_per_led = 30; bytes_per_led = 12; } else { // RGBW const uint8_t *p = drawBuffer; - 29008: 68a2 ldr r2, [r4, #8] + 290f4: 68a2 ldr r2, [r4, #8] const uint8_t *end = p + (numled * 4); - 2900a: 8823 ldrh r3, [r4, #0] + 290f6: 8823 ldrh r3, [r4, #0] uint8_t *fb = frameBuffer; - 2900c: 6861 ldr r1, [r4, #4] + 290f8: 6861 ldr r1, [r4, #4] const uint8_t *end = p + (numled * 4); - 2900e: eb02 0b83 add.w fp, r2, r3, lsl #2 + 290fa: eb02 0b83 add.w fp, r2, r3, lsl #2 while (p < end) { - 29012: 455a cmp r2, fp - 29014: f080 81e4 bcs.w 293e0 - 29018: f102 0c04 add.w ip, r2, #4 - 2901c: 3110 adds r1, #16 + 290fe: 455a cmp r2, fp + 29100: f080 81e4 bcs.w 294cc + 29104: f102 0c04 add.w ip, r2, #4 + 29108: 3110 adds r1, #16 uint8_t b = *p++; uint8_t g = *p++; uint8_t r = *p++; uint8_t w = *p++; uint32_t mult = brightness + 1; - 2901e: 7d23 ldrb r3, [r4, #20] + 2910a: 7d23 ldrb r3, [r4, #20] b = (b * mult) >> 8; g = (g * mult) >> 8; r = (r * mult) >> 8; w = (w * mult) >> 8; uint32_t n=0; switch (config) { - 29020: 3806 subs r0, #6 + 2910c: 3806 subs r0, #6 g = (g * mult) >> 8; - 29022: f81c 6c03 ldrb.w r6, [ip, #-3] - 29026: f1a1 0210 sub.w r2, r1, #16 + 2910e: f81c 6c03 ldrb.w r6, [ip, #-3] + 29112: f1a1 0210 sub.w r2, r1, #16 b = (b * mult) >> 8; - 2902a: f81c ec04 ldrb.w lr, [ip, #-4] + 29116: f81c ec04 ldrb.w lr, [ip, #-4] r = (r * mult) >> 8; - 2902e: f81c 7c02 ldrb.w r7, [ip, #-2] + 2911a: f81c 7c02 ldrb.w r7, [ip, #-2] g = (g * mult) >> 8; - 29032: fb03 6606 mla r6, r3, r6, r6 + 2911e: fb03 6606 mla r6, r3, r6, r6 w = (w * mult) >> 8; - 29036: f81c 5c01 ldrb.w r5, [ip, #-1] + 29122: f81c 5c01 ldrb.w r5, [ip, #-1] b = (b * mult) >> 8; - 2903a: fb03 ee0e mla lr, r3, lr, lr + 29126: fb03 ee0e mla lr, r3, lr, lr r = (r * mult) >> 8; - 2903e: fb03 7707 mla r7, r3, r7, r7 + 2912a: fb03 7707 mla r7, r3, r7, r7 w = (w * mult) >> 8; - 29042: fb03 5505 mla r5, r3, r5, r5 + 2912e: fb03 5505 mla r5, r3, r5, r5 g = (g * mult) >> 8; - 29046: 0a33 lsrs r3, r6, #8 + 29132: 0a33 lsrs r3, r6, #8 b = (b * mult) >> 8; - 29048: ea4f 281e mov.w r8, lr, lsr #8 + 29134: ea4f 281e mov.w r8, lr, lsr #8 g = (g * mult) >> 8; - 2904c: 9301 str r3, [sp, #4] + 29138: 9301 str r3, [sp, #4] w = (w * mult) >> 8; - 2904e: ea4f 2915 mov.w r9, r5, lsr #8 + 2913a: ea4f 2915 mov.w r9, r5, lsr #8 r = (r * mult) >> 8; - 29052: 0a3b lsrs r3, r7, #8 + 2913e: 0a3b lsrs r3, r7, #8 switch (config) { - 29054: 2817 cmp r0, #23 - 29056: f200 81cf bhi.w 293f8 - 2905a: e8df f010 tbh [pc, r0, lsl #1] - 2905e: 01b5 .short 0x01b5 - 29060: 01a001ab .word 0x01a001ab - 29064: 018c0195 .word 0x018c0195 - 29068: 01790182 .word 0x01790182 - 2906c: 0165016f .word 0x0165016f - 29070: 0151015b .word 0x0151015b - 29074: 013e0148 .word 0x013e0148 - 29078: 01280133 .word 0x01280133 - 2907c: 0113011d .word 0x0113011d - 29080: 00ff010a .word 0x00ff010a - 29084: 00e700f1 .word 0x00e700f1 - 29088: 00d400dd .word 0x00d400dd - 2908c: 00b3 .short 0x00b3 + 29140: 2817 cmp r0, #23 + 29142: f200 81cf bhi.w 294e4 + 29146: e8df f010 tbh [pc, r0, lsl #1] + 2914a: 01b5 .short 0x01b5 + 2914c: 01a001ab .word 0x01a001ab + 29150: 018c0195 .word 0x018c0195 + 29154: 01790182 .word 0x01790182 + 29158: 0165016f .word 0x0165016f + 2915c: 0151015b .word 0x0151015b + 29160: 013e0148 .word 0x013e0148 + 29164: 01280133 .word 0x01280133 + 29168: 0113011d .word 0x0113011d + 2916c: 00ff010a .word 0x00ff010a + 29170: 00e700f1 .word 0x00e700f1 + 29174: 00d400dd .word 0x00d400dd + 29178: 00b3 .short 0x00b3 case WS2812_BGR: n = (b << 16) | (g << 8) | r; break; - 2908e: f40c 4c7f and.w ip, ip, #65280 ; 0xff00 - 29092: ea4c 4108 orr.w r1, ip, r8, lsl #16 - 29096: 430b orrs r3, r1 + 2917a: f40c 4c7f and.w ip, ip, #65280 ; 0xff00 + 2917e: ea4c 4108 orr.w r1, ip, r8, lsl #16 + 29182: 430b orrs r3, r1 if (!(n & 0x00800000)) x |= 0x07; - 29098: f413 0f00 tst.w r3, #8388608 ; 0x800000 - 2909c: bf0c ite eq - 2909e: 210f moveq r1, #15 - 290a0: 2108 movne r1, #8 + 29184: f413 0f00 tst.w r3, #8388608 ; 0x800000 + 29188: bf0c ite eq + 2918a: 210f moveq r1, #15 + 2918c: 2108 movne r1, #8 if (!(n & 0x00400000)) x |= 0xE0; - 290a2: f413 0f80 tst.w r3, #4194304 ; 0x400000 + 2918e: f413 0f80 tst.w r3, #4194304 ; 0x400000 n <<= 2; - 290a6: ea4f 0383 mov.w r3, r3, lsl #2 + 29192: ea4f 0383 mov.w r3, r3, lsl #2 if (!(n & 0x00400000)) x |= 0xE0; - 290aa: bf08 it eq - 290ac: f041 01e0 orreq.w r1, r1, #224 ; 0xe0 + 29196: bf08 it eq + 29198: f041 01e0 orreq.w r1, r1, #224 ; 0xe0 *fb++ = x; - 290b0: f802 1b01 strb.w r1, [r2], #1 + 2919c: f802 1b01 strb.w r1, [r2], #1 } while (fb < stop); - 290b4: 42aa cmp r2, r5 - 290b6: d1ef bne.n 29098 + 291a0: 42aa cmp r2, r5 + 291a2: d1ef bne.n 29184 while (p < end) { - 290b8: 42b7 cmp r7, r6 - 290ba: f102 050c add.w r5, r2, #12 - 290be: d924 bls.n 2910a + 291a4: 42b7 cmp r7, r6 + 291a6: f102 050c add.w r5, r2, #12 + 291aa: d924 bls.n 291f6 switch (config) { - 290c0: 78e0 ldrb r0, [r4, #3] - 290c2: 3603 adds r6, #3 - 290c4: e784 b.n 28fd0 + 291ac: 78e0 ldrb r0, [r4, #3] + 291ae: 3603 adds r6, #3 + 291b0: e784 b.n 290bc case WS2812_BRG: n = (b << 16) | (r << 8) | g; break; - 290c6: f401 437f and.w r3, r1, #65280 ; 0xff00 - 290ca: ea43 4308 orr.w r3, r3, r8, lsl #16 - 290ce: ea43 0309 orr.w r3, r3, r9 - 290d2: e7e1 b.n 29098 + 291b2: f401 437f and.w r3, r1, #65280 ; 0xff00 + 291b6: ea43 4308 orr.w r3, r3, r8, lsl #16 + 291ba: ea43 0309 orr.w r3, r3, r9 + 291be: e7e1 b.n 29184 case WS2812_GBR: n = (g << 16) | (b << 8) | r; break; - 290d4: f40e 417f and.w r1, lr, #65280 ; 0xff00 - 290d8: ea41 4109 orr.w r1, r1, r9, lsl #16 - 290dc: 430b orrs r3, r1 - 290de: e7db b.n 29098 + 291c0: f40e 417f and.w r1, lr, #65280 ; 0xff00 + 291c4: ea41 4109 orr.w r1, r1, r9, lsl #16 + 291c8: 430b orrs r3, r1 + 291ca: e7db b.n 29184 case WS2812_GRB: n = (g << 16) | (r << 8) | b; break; - 290e0: f401 437f and.w r3, r1, #65280 ; 0xff00 - 290e4: ea43 4309 orr.w r3, r3, r9, lsl #16 - 290e8: ea43 0308 orr.w r3, r3, r8 - 290ec: e7d4 b.n 29098 + 291cc: f401 437f and.w r3, r1, #65280 ; 0xff00 + 291d0: ea43 4309 orr.w r3, r3, r9, lsl #16 + 291d4: ea43 0308 orr.w r3, r3, r8 + 291d8: e7d4 b.n 29184 case WS2812_RBG: n = (r << 16) | (b << 8) | g; break; - 290ee: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 - 290f2: ea4e 4303 orr.w r3, lr, r3, lsl #16 - 290f6: ea43 0309 orr.w r3, r3, r9 - 290fa: e7cd b.n 29098 + 291da: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 + 291de: ea4e 4303 orr.w r3, lr, r3, lsl #16 + 291e2: ea43 0309 orr.w r3, r3, r9 + 291e6: e7cd b.n 29184 case WS2812_RGB: n = (r << 16) | (g << 8) | b; break; - 290fc: f40c 4c7f and.w ip, ip, #65280 ; 0xff00 - 29100: ea4c 4303 orr.w r3, ip, r3, lsl #16 - 29104: ea43 0308 orr.w r3, r3, r8 - 29108: e7c6 b.n 29098 + 291e8: f40c 4c7f and.w ip, ip, #65280 ; 0xff00 + 291ec: ea4c 4303 orr.w r3, ip, r3, lsl #16 + 291f0: ea43 0308 orr.w r3, r3, r8 + 291f4: e7c6 b.n 29184 } microseconds_per_led = 40; bytes_per_led = 16; } // wait 300us WS2812 reset time uint32_t min_elapsed = (numled * microseconds_per_led) + 300; - 2910a: 8823 ldrh r3, [r4, #0] + 291f6: 8823 ldrh r3, [r4, #0] bytes_per_led = 12; - 2910c: 260c movs r6, #12 + 291f8: 260c movs r6, #12 microseconds_per_led = 30; - 2910e: 221e movs r2, #30 + 291fa: 221e movs r2, #30 uint32_t min_elapsed = (numled * microseconds_per_led) + 300; - 29110: fb02 f303 mul.w r3, r2, r3 - 29114: f503 7596 add.w r5, r3, #300 ; 0x12c - 29118: e001 b.n 2911e + 291fc: fb02 f303 mul.w r3, r2, r3 + 29200: f503 7596 add.w r5, r3, #300 ; 0x12c + 29204: e001 b.n 2920a //if (min_elapsed < 2500) min_elapsed = 2500; // limit refresh to 400 Hz uint32_t m; while (1) { m = micros(); if ((m - prior_micros) > min_elapsed) break; yield(); - 2911a: f003 fa4f bl 2c5bc + 29206: f003 fa4d bl 2c6a4 m = micros(); - 2911e: f001 fa29 bl 2a574 + 2920a: f001 fa27 bl 2a65c if ((m - prior_micros) > min_elapsed) break; - 29122: 6923 ldr r3, [r4, #16] - 29124: 1ac3 subs r3, r0, r3 - 29126: 42ab cmp r3, r5 - 29128: d9f7 bls.n 2911a + 2920e: 6923 ldr r3, [r4, #16] + 29210: 1ac3 subs r3, r0, r3 + 29212: 42ab cmp r3, r5 + 29214: d9f7 bls.n 29206 dma->CFG->DSR_BCR = numled * bytes_per_led; dma->CFG->DCR = DMA_DCR_ERQ | DMA_DCR_CS | DMA_DCR_SSIZE(1) | DMA_DCR_SINC | DMA_DCR_DSIZE(1) | DMA_DCR_D_REQ; #elif defined(__IMXRT1062__) // See if we need to muck with DMA cache... if ((uint32_t)frameBuffer >= 0x20200000u) arm_dcache_flush(frameBuffer, numled * bytes_per_led); - 2912a: 6862 ldr r2, [r4, #4] - 2912c: 4b4a ldr r3, [pc, #296] ; (29258 ) + 29216: 6862 ldr r2, [r4, #4] + 29218: 4b4a ldr r3, [pc, #296] ; (29344 ) prior_micros = m; - 2912e: 6120 str r0, [r4, #16] + 2921a: 6120 str r0, [r4, #16] if ((uint32_t)frameBuffer >= 0x20200000u) arm_dcache_flush(frameBuffer, numled * bytes_per_led); - 29130: 429a cmp r2, r3 - 29132: d912 bls.n 2915a - 29134: 8821 ldrh r1, [r4, #0] + 2921c: 429a cmp r2, r3 + 2921e: d912 bls.n 29246 + 29220: 8821 ldrh r1, [r4, #0] // typically used with special fields you will want to quickly access // in the future. For data transmission, use arm_dcache_flush_delete(). __attribute__((always_inline, unused)) static inline void arm_dcache_flush(void *addr, uint32_t size) { uint32_t location = (uint32_t)addr & 0xFFFFFFE0; - 29136: f022 031f bic.w r3, r2, #31 + 29222: f022 031f bic.w r3, r2, #31 uint32_t end_addr = (uint32_t)addr + size; - 2913a: fb06 2201 mla r2, r6, r1, r2 + 29226: fb06 2201 mla r2, r6, r1, r2 asm volatile("": : :"memory"); asm("dsb"); - 2913e: f3bf 8f4f dsb sy + 2922a: f3bf 8f4f dsb sy do { SCB_CACHE_DCCMVAC = location; - 29142: f04f 21e0 mov.w r1, #3758153728 ; 0xe000e000 - 29146: f8c1 3f68 str.w r3, [r1, #3944] ; 0xf68 + 2922e: f04f 21e0 mov.w r1, #3758153728 ; 0xe000e000 + 29232: f8c1 3f68 str.w r3, [r1, #3944] ; 0xf68 location += 32; - 2914a: 3320 adds r3, #32 + 29236: 3320 adds r3, #32 } while (location < end_addr); - 2914c: 429a cmp r2, r3 - 2914e: d8fa bhi.n 29146 + 29238: 429a cmp r2, r3 + 2923a: d8fa bhi.n 29232 asm("dsb"); - 29150: f3bf 8f4f dsb sy + 2923c: f3bf 8f4f dsb sy asm("isb"); - 29154: f3bf 8f6f isb sy + 29240: f3bf 8f6f isb sy dma->sourceBuffer(frameBuffer, numled * bytes_per_led); - 29158: 6862 ldr r2, [r4, #4] - 2915a: 68e0 ldr r0, [r4, #12] - 2915c: 8821 ldrh r1, [r4, #0] + 29244: 6862 ldr r2, [r4, #4] + 29246: 68e0 ldr r0, [r4, #12] + 29248: 8821 ldrh r1, [r4, #0] TCD->SADDR = p; - 2915e: 6803 ldr r3, [r0, #0] - 29160: fb06 f101 mul.w r1, r6, r1 + 2924a: 6803 ldr r3, [r0, #0] + 2924c: fb06 f101 mul.w r1, r6, r1 TCD->ATTR_SRC = 0; - 29164: 2600 movs r6, #0 + 29250: 2600 movs r6, #0 TCD->SADDR = p; - 29166: 601a str r2, [r3, #0] + 29252: 601a str r2, [r3, #0] TCD->SOFF = 1; - 29168: 2201 movs r2, #1 - 2916a: 6805 ldr r5, [r0, #0] - 2916c: 809a strh r2, [r3, #4] + 29254: 2201 movs r2, #1 + 29256: 6805 ldr r5, [r0, #0] + 29258: 809a strh r2, [r3, #4] TCD->NBYTES = 1; - 2916e: 609a str r2, [r3, #8] + 2925a: 609a str r2, [r3, #8] TCD->SLAST = -len; - 29170: 424a negs r2, r1 + 2925c: 424a negs r2, r1 TCD->ATTR_SRC = 0; - 29172: 71de strb r6, [r3, #7] + 2925e: 71de strb r6, [r3, #7] TCD->SLAST = -len; - 29174: 60da str r2, [r3, #12] + 29260: 60da str r2, [r3, #12] TCD->BITER = len; - 29176: b28a uxth r2, r1 - 29178: 83da strh r2, [r3, #30] + 29262: b28a uxth r2, r1 + 29264: 83da strh r2, [r3, #30] TCD->CITER = len; - 2917a: 82da strh r2, [r3, #22] + 29266: 82da strh r2, [r3, #22] if (!(TCD->BITER & DMA_TCD_BITER_ELINK)) { - 2917c: 8bee ldrh r6, [r5, #30] - 2917e: 0436 lsls r6, r6, #16 - 29180: d412 bmi.n 291a8 + 29268: 8bee ldrh r6, [r5, #30] + 2926a: 0436 lsls r6, r6, #16 + 2926c: d412 bmi.n 29294 if (len > 32767) return; - 29182: f5b1 4f00 cmp.w r1, #32768 ; 0x8000 - 29186: d201 bcs.n 2918c + 2926e: f5b1 4f00 cmp.w r1, #32768 ; 0x8000 + 29272: d201 bcs.n 29278 TCD->BITER = len; - 29188: 83ea strh r2, [r5, #30] + 29274: 83ea strh r2, [r5, #30] TCD->CITER = len; - 2918a: 82ea strh r2, [r5, #22] + 29276: 82ea strh r2, [r5, #22] TCD->CSR |= DMA_TCD_CSR_DREQ; - 2918c: 8b9a ldrh r2, [r3, #28] + 29278: 8b9a ldrh r2, [r3, #28] Serial.printf("SA:%x SO:%d AT:%x NB:%x SL:%d DA:%x DO: %d CI:%x DL:%x CS:%x BI:%x\n", (uint32_t)dma->TCD->SADDR, dma->TCD->SOFF, dma->TCD->ATTR, dma->TCD->NBYTES, dma->TCD->SLAST, (uint32_t)dma->TCD->DADDR, dma->TCD->DOFF, dma->TCD->CITER, dma->TCD->DLASTSGA, dma->TCD->CSR, dma->TCD->BITER); */ uart->STAT = 0; // try clearing out the status - 2918e: 69a1 ldr r1, [r4, #24] - 29190: 2400 movs r4, #0 - 29192: b292 uxth r2, r2 - 29194: f042 0208 orr.w r2, r2, #8 - 29198: 839a strh r2, [r3, #28] - 2919a: 614c str r4, [r1, #20] + 2927a: 69a1 ldr r1, [r4, #24] + 2927c: 2400 movs r4, #0 + 2927e: b292 uxth r2, r2 + 29280: f042 0208 orr.w r2, r2, #8 + 29284: 839a strh r2, [r3, #28] + 29286: 614c str r4, [r1, #20] DMA_SERQ = channel; - 2919c: 4b2d ldr r3, [pc, #180] ; (29254 ) - 2919e: 7902 ldrb r2, [r0, #4] - 291a0: 76da strb r2, [r3, #27] + 29288: 4b2d ldr r3, [pc, #180] ; (29340 ) + 2928a: 7902 ldrb r2, [r0, #4] + 2928c: 76da strb r2, [r3, #27] dma->enable(); #endif } - 291a2: b003 add sp, #12 - 291a4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2928e: b003 add sp, #12 + 29290: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if (len > 511) return; - 291a8: f5b1 7f00 cmp.w r1, #512 ; 0x200 - 291ac: d2ee bcs.n 2918c + 29294: f5b1 7f00 cmp.w r1, #512 ; 0x200 + 29298: d2ee bcs.n 29278 TCD->BITER = (TCD->BITER & 0xFE00) | len; - 291ae: 8be9 ldrh r1, [r5, #30] - 291b0: f401 417e and.w r1, r1, #65024 ; 0xfe00 - 291b4: 4311 orrs r1, r2 - 291b6: 83e9 strh r1, [r5, #30] + 2929a: 8be9 ldrh r1, [r5, #30] + 2929c: f401 417e and.w r1, r1, #65024 ; 0xfe00 + 292a0: 4311 orrs r1, r2 + 292a2: 83e9 strh r1, [r5, #30] TCD->CITER = (TCD->CITER & 0xFE00) | len; - 291b8: 8ae9 ldrh r1, [r5, #22] - 291ba: f401 417e and.w r1, r1, #65024 ; 0xfe00 - 291be: 430a orrs r2, r1 - 291c0: 82ea strh r2, [r5, #22] - 291c2: e7e3 b.n 2918c + 292a4: 8ae9 ldrh r1, [r5, #22] + 292a6: f401 417e and.w r1, r1, #65024 ; 0xfe00 + 292aa: 430a orrs r2, r1 + 292ac: 82ea strh r2, [r5, #22] + 292ae: e7e3 b.n 29278 case WS2812_BGWR: n = (b << 24) | (g << 16) | (w << 8) | r; break; - 291c4: ea4f 6008 mov.w r0, r8, lsl #24 - 291c8: 9e01 ldr r6, [sp, #4] - 291ca: f405 457f and.w r5, r5, #65280 ; 0xff00 - 291ce: ea40 4006 orr.w r0, r0, r6, lsl #16 - 291d2: 4328 orrs r0, r5 - 291d4: 4303 orrs r3, r0 + 292b0: ea4f 6008 mov.w r0, r8, lsl #24 + 292b4: 9e01 ldr r6, [sp, #4] + 292b6: f405 457f and.w r5, r5, #65280 ; 0xff00 + 292ba: ea40 4006 orr.w r0, r0, r6, lsl #16 + 292be: 4328 orrs r0, r5 + 292c0: 4303 orrs r3, r0 if (!(n & 0x80000000)) x |= 0x07; - 291d6: 2b00 cmp r3, #0 - 291d8: bfb4 ite lt - 291da: 2008 movlt r0, #8 - 291dc: 200f movge r0, #15 + 292c2: 2b00 cmp r3, #0 + 292c4: bfb4 ite lt + 292c6: 2008 movlt r0, #8 + 292c8: 200f movge r0, #15 if (!(n & 0x40000000)) x |= 0xE0; - 291de: f013 4f80 tst.w r3, #1073741824 ; 0x40000000 + 292ca: f013 4f80 tst.w r3, #1073741824 ; 0x40000000 n <<= 2; - 291e2: ea4f 0383 mov.w r3, r3, lsl #2 + 292ce: ea4f 0383 mov.w r3, r3, lsl #2 if (!(n & 0x40000000)) x |= 0xE0; - 291e6: bf08 it eq - 291e8: f040 00e0 orreq.w r0, r0, #224 ; 0xe0 + 292d2: bf08 it eq + 292d4: f040 00e0 orreq.w r0, r0, #224 ; 0xe0 *fb++ = x; - 291ec: f802 0b01 strb.w r0, [r2], #1 + 292d8: f802 0b01 strb.w r0, [r2], #1 } while (fb < stop); - 291f0: 428a cmp r2, r1 - 291f2: d1f0 bne.n 291d6 + 292dc: 428a cmp r2, r1 + 292de: d1f0 bne.n 292c2 while (p < end) { - 291f4: 45e3 cmp fp, ip - 291f6: f102 0110 add.w r1, r2, #16 - 291fa: f240 80f7 bls.w 293ec + 292e0: 45e3 cmp fp, ip + 292e2: f102 0110 add.w r1, r2, #16 + 292e6: f240 80f7 bls.w 294d8 switch (config) { - 291fe: 78e0 ldrb r0, [r4, #3] - 29200: f10c 0c04 add.w ip, ip, #4 - 29204: e70b b.n 2901e + 292ea: 78e0 ldrb r0, [r4, #3] + 292ec: f10c 0c04 add.w ip, ip, #4 + 292f0: e70b b.n 2910a case WS2812_BRWG: n = (b << 24) | (r << 16) | (w << 8) | g; break; - 29206: 041b lsls r3, r3, #16 - 29208: f405 457f and.w r5, r5, #65280 ; 0xff00 - 2920c: 9801 ldr r0, [sp, #4] - 2920e: ea43 6308 orr.w r3, r3, r8, lsl #24 - 29212: 432b orrs r3, r5 - 29214: 4303 orrs r3, r0 - 29216: e7de b.n 291d6 + 292f2: 041b lsls r3, r3, #16 + 292f4: f405 457f and.w r5, r5, #65280 ; 0xff00 + 292f8: 9801 ldr r0, [sp, #4] + 292fa: ea43 6308 orr.w r3, r3, r8, lsl #24 + 292fe: 432b orrs r3, r5 + 29300: 4303 orrs r3, r0 + 29302: e7de b.n 292c2 case WS2812_GBWR: n = (g << 24) | (b << 16) | (w << 8) | r; break; - 29218: ea4f 4008 mov.w r0, r8, lsl #16 - 2921c: 9e01 ldr r6, [sp, #4] - 2921e: f405 457f and.w r5, r5, #65280 ; 0xff00 - 29222: ea40 6006 orr.w r0, r0, r6, lsl #24 - 29226: 4328 orrs r0, r5 - 29228: 4303 orrs r3, r0 - 2922a: e7d4 b.n 291d6 + 29304: ea4f 4008 mov.w r0, r8, lsl #16 + 29308: 9e01 ldr r6, [sp, #4] + 2930a: f405 457f and.w r5, r5, #65280 ; 0xff00 + 2930e: ea40 6006 orr.w r0, r0, r6, lsl #24 + 29312: 4328 orrs r0, r5 + 29314: 4303 orrs r3, r0 + 29316: e7d4 b.n 292c2 case WS2812_GRWB: n = (g << 24) | (r << 16) | (w << 8) | b; break; - 2922c: 041b lsls r3, r3, #16 - 2922e: 9801 ldr r0, [sp, #4] - 29230: f405 457f and.w r5, r5, #65280 ; 0xff00 - 29234: ea43 6300 orr.w r3, r3, r0, lsl #24 - 29238: 432b orrs r3, r5 - 2923a: ea43 0308 orr.w r3, r3, r8 - 2923e: e7ca b.n 291d6 + 29318: 041b lsls r3, r3, #16 + 2931a: 9801 ldr r0, [sp, #4] + 2931c: f405 457f and.w r5, r5, #65280 ; 0xff00 + 29320: ea43 6300 orr.w r3, r3, r0, lsl #24 + 29324: 432b orrs r3, r5 + 29326: ea43 0308 orr.w r3, r3, r8 + 2932a: e7ca b.n 292c2 case WS2812_RBWG: n = (r << 24) | (b << 16) | (w << 8) | g; break; - 29240: ea4f 4808 mov.w r8, r8, lsl #16 - 29244: f405 457f and.w r5, r5, #65280 ; 0xff00 - 29248: 9801 ldr r0, [sp, #4] - 2924a: ea48 6303 orr.w r3, r8, r3, lsl #24 - 2924e: 432b orrs r3, r5 - 29250: 4303 orrs r3, r0 - 29252: e7c0 b.n 291d6 - 29254: 400e8000 .word 0x400e8000 - 29258: 201fffff .word 0x201fffff + 2932c: ea4f 4808 mov.w r8, r8, lsl #16 + 29330: f405 457f and.w r5, r5, #65280 ; 0xff00 + 29334: 9801 ldr r0, [sp, #4] + 29336: ea48 6303 orr.w r3, r8, r3, lsl #24 + 2933a: 432b orrs r3, r5 + 2933c: 4303 orrs r3, r0 + 2933e: e7c0 b.n 292c2 + 29340: 400e8000 .word 0x400e8000 + 29344: 201fffff .word 0x201fffff case WS2812_RGWB: n = (r << 24) | (g << 16) | (w << 8) | b; break; - 2925c: 9801 ldr r0, [sp, #4] - 2925e: f405 457f and.w r5, r5, #65280 ; 0xff00 - 29262: ea4f 4a00 mov.w sl, r0, lsl #16 - 29266: ea4a 6303 orr.w r3, sl, r3, lsl #24 - 2926a: 432b orrs r3, r5 - 2926c: ea43 0308 orr.w r3, r3, r8 - 29270: e7b1 b.n 291d6 + 29348: 9801 ldr r0, [sp, #4] + 2934a: f405 457f and.w r5, r5, #65280 ; 0xff00 + 2934e: ea4f 4a00 mov.w sl, r0, lsl #16 + 29352: ea4a 6303 orr.w r3, sl, r3, lsl #24 + 29356: 432b orrs r3, r5 + 29358: ea43 0308 orr.w r3, r3, r8 + 2935c: e7b1 b.n 292c2 case WS2812_BWGR: n = (b << 24) | (w << 16) | (g << 8) | r; break; - 29272: ea4f 4009 mov.w r0, r9, lsl #16 - 29276: f406 467f and.w r6, r6, #65280 ; 0xff00 - 2927a: ea40 6008 orr.w r0, r0, r8, lsl #24 - 2927e: 4330 orrs r0, r6 - 29280: 4303 orrs r3, r0 - 29282: e7a8 b.n 291d6 + 2935e: ea4f 4009 mov.w r0, r9, lsl #16 + 29362: f406 467f and.w r6, r6, #65280 ; 0xff00 + 29366: ea40 6008 orr.w r0, r0, r8, lsl #24 + 2936a: 4330 orrs r0, r6 + 2936c: 4303 orrs r3, r0 + 2936e: e7a8 b.n 292c2 case WS2812_BWRG: n = (b << 24) | (w << 16) | (r << 8) | g; break; - 29284: ea4f 4309 mov.w r3, r9, lsl #16 - 29288: f407 477f and.w r7, r7, #65280 ; 0xff00 - 2928c: 9801 ldr r0, [sp, #4] - 2928e: ea43 6308 orr.w r3, r3, r8, lsl #24 - 29292: 433b orrs r3, r7 - 29294: 4303 orrs r3, r0 - 29296: e79e b.n 291d6 + 29370: ea4f 4309 mov.w r3, r9, lsl #16 + 29374: f407 477f and.w r7, r7, #65280 ; 0xff00 + 29378: 9801 ldr r0, [sp, #4] + 2937a: ea43 6308 orr.w r3, r3, r8, lsl #24 + 2937e: 433b orrs r3, r7 + 29380: 4303 orrs r3, r0 + 29382: e79e b.n 292c2 case WS2812_GWBR: n = (g << 24) | (w << 16) | (b << 8) | r; break; - 29298: ea4f 4009 mov.w r0, r9, lsl #16 - 2929c: 9d01 ldr r5, [sp, #4] - 2929e: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 - 292a2: ea40 6005 orr.w r0, r0, r5, lsl #24 - 292a6: ea40 000e orr.w r0, r0, lr - 292aa: 4303 orrs r3, r0 - 292ac: e793 b.n 291d6 + 29384: ea4f 4009 mov.w r0, r9, lsl #16 + 29388: 9d01 ldr r5, [sp, #4] + 2938a: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 + 2938e: ea40 6005 orr.w r0, r0, r5, lsl #24 + 29392: ea40 000e orr.w r0, r0, lr + 29396: 4303 orrs r3, r0 + 29398: e793 b.n 292c2 case WS2812_GWRB: n = (g << 24) | (w << 16) | (r << 8) | b; break; - 292ae: ea4f 4309 mov.w r3, r9, lsl #16 - 292b2: 9801 ldr r0, [sp, #4] - 292b4: f407 477f and.w r7, r7, #65280 ; 0xff00 - 292b8: ea43 6300 orr.w r3, r3, r0, lsl #24 - 292bc: 433b orrs r3, r7 - 292be: ea43 0308 orr.w r3, r3, r8 - 292c2: e788 b.n 291d6 + 2939a: ea4f 4309 mov.w r3, r9, lsl #16 + 2939e: 9801 ldr r0, [sp, #4] + 293a0: f407 477f and.w r7, r7, #65280 ; 0xff00 + 293a4: ea43 6300 orr.w r3, r3, r0, lsl #24 + 293a8: 433b orrs r3, r7 + 293aa: ea43 0308 orr.w r3, r3, r8 + 293ae: e788 b.n 292c2 case WS2812_RWBG: n = (r << 24) | (w << 16) | (b << 8) | g; break; - 292c4: ea4f 4909 mov.w r9, r9, lsl #16 - 292c8: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 - 292cc: 9801 ldr r0, [sp, #4] - 292ce: ea49 6303 orr.w r3, r9, r3, lsl #24 - 292d2: ea43 030e orr.w r3, r3, lr - 292d6: 4303 orrs r3, r0 - 292d8: e77d b.n 291d6 + 293b0: ea4f 4909 mov.w r9, r9, lsl #16 + 293b4: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 + 293b8: 9801 ldr r0, [sp, #4] + 293ba: ea49 6303 orr.w r3, r9, r3, lsl #24 + 293be: ea43 030e orr.w r3, r3, lr + 293c2: 4303 orrs r3, r0 + 293c4: e77d b.n 292c2 case WS2812_RWGB: n = (r << 24) | (w << 16) | (g << 8) | b; break; - 292da: ea4f 4909 mov.w r9, r9, lsl #16 - 292de: f406 467f and.w r6, r6, #65280 ; 0xff00 - 292e2: ea49 6303 orr.w r3, r9, r3, lsl #24 - 292e6: 4333 orrs r3, r6 - 292e8: ea43 0308 orr.w r3, r3, r8 - 292ec: e773 b.n 291d6 + 293c6: ea4f 4909 mov.w r9, r9, lsl #16 + 293ca: f406 467f and.w r6, r6, #65280 ; 0xff00 + 293ce: ea49 6303 orr.w r3, r9, r3, lsl #24 + 293d2: 4333 orrs r3, r6 + 293d4: ea43 0308 orr.w r3, r3, r8 + 293d8: e773 b.n 292c2 case WS2812_WBGR: n = (w << 24) | (b << 16) | (g << 8) | r; break; - 292ee: ea4f 4008 mov.w r0, r8, lsl #16 - 292f2: f406 467f and.w r6, r6, #65280 ; 0xff00 - 292f6: ea40 6009 orr.w r0, r0, r9, lsl #24 - 292fa: 4330 orrs r0, r6 - 292fc: 4303 orrs r3, r0 - 292fe: e76a b.n 291d6 + 293da: ea4f 4008 mov.w r0, r8, lsl #16 + 293de: f406 467f and.w r6, r6, #65280 ; 0xff00 + 293e2: ea40 6009 orr.w r0, r0, r9, lsl #24 + 293e6: 4330 orrs r0, r6 + 293e8: 4303 orrs r3, r0 + 293ea: e76a b.n 292c2 case WS2812_WBRG: n = (w << 24) | (b << 16) | (r << 8) | g; break; - 29300: ea4f 4308 mov.w r3, r8, lsl #16 - 29304: f407 477f and.w r7, r7, #65280 ; 0xff00 - 29308: 9801 ldr r0, [sp, #4] - 2930a: ea43 6309 orr.w r3, r3, r9, lsl #24 - 2930e: 433b orrs r3, r7 - 29310: 4303 orrs r3, r0 - 29312: e760 b.n 291d6 + 293ec: ea4f 4308 mov.w r3, r8, lsl #16 + 293f0: f407 477f and.w r7, r7, #65280 ; 0xff00 + 293f4: 9801 ldr r0, [sp, #4] + 293f6: ea43 6309 orr.w r3, r3, r9, lsl #24 + 293fa: 433b orrs r3, r7 + 293fc: 4303 orrs r3, r0 + 293fe: e760 b.n 292c2 case WS2812_WGBR: n = (w << 24) | (g << 16) | (b << 8) | r; break; - 29314: 9801 ldr r0, [sp, #4] - 29316: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 - 2931a: 0400 lsls r0, r0, #16 - 2931c: ea40 6009 orr.w r0, r0, r9, lsl #24 - 29320: ea40 000e orr.w r0, r0, lr - 29324: 4303 orrs r3, r0 - 29326: e756 b.n 291d6 + 29400: 9801 ldr r0, [sp, #4] + 29402: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 + 29406: 0400 lsls r0, r0, #16 + 29408: ea40 6009 orr.w r0, r0, r9, lsl #24 + 2940c: ea40 000e orr.w r0, r0, lr + 29410: 4303 orrs r3, r0 + 29412: e756 b.n 292c2 case WS2812_WGRB: n = (w << 24) | (g << 16) | (r << 8) | b; break; - 29328: 9b01 ldr r3, [sp, #4] - 2932a: f407 477f and.w r7, r7, #65280 ; 0xff00 - 2932e: 041b lsls r3, r3, #16 - 29330: ea43 6309 orr.w r3, r3, r9, lsl #24 - 29334: 433b orrs r3, r7 - 29336: ea43 0308 orr.w r3, r3, r8 - 2933a: e74c b.n 291d6 + 29414: 9b01 ldr r3, [sp, #4] + 29416: f407 477f and.w r7, r7, #65280 ; 0xff00 + 2941a: 041b lsls r3, r3, #16 + 2941c: ea43 6309 orr.w r3, r3, r9, lsl #24 + 29420: 433b orrs r3, r7 + 29422: ea43 0308 orr.w r3, r3, r8 + 29426: e74c b.n 292c2 case WS2812_WRBG: n = (w << 24) | (r << 16) | (b << 8) | g; break; - 2933c: 041b lsls r3, r3, #16 - 2933e: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 - 29342: 9801 ldr r0, [sp, #4] - 29344: ea43 6309 orr.w r3, r3, r9, lsl #24 - 29348: ea43 030e orr.w r3, r3, lr - 2934c: 4303 orrs r3, r0 - 2934e: e742 b.n 291d6 + 29428: 041b lsls r3, r3, #16 + 2942a: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 + 2942e: 9801 ldr r0, [sp, #4] + 29430: ea43 6309 orr.w r3, r3, r9, lsl #24 + 29434: ea43 030e orr.w r3, r3, lr + 29438: 4303 orrs r3, r0 + 2943a: e742 b.n 292c2 case WS2812_WRGB: n = (w << 24) | (r << 16) | (g << 8) | b; break; - 29350: 041b lsls r3, r3, #16 - 29352: f406 467f and.w r6, r6, #65280 ; 0xff00 - 29356: ea43 6309 orr.w r3, r3, r9, lsl #24 - 2935a: 4333 orrs r3, r6 - 2935c: ea43 0308 orr.w r3, r3, r8 - 29360: e739 b.n 291d6 + 2943c: 041b lsls r3, r3, #16 + 2943e: f406 467f and.w r6, r6, #65280 ; 0xff00 + 29442: ea43 6309 orr.w r3, r3, r9, lsl #24 + 29446: 4333 orrs r3, r6 + 29448: ea43 0308 orr.w r3, r3, r8 + 2944c: e739 b.n 292c2 case WS2812_BGRW: n = (b << 24) | (b << 16) | (r << 8) | w; break; - 29362: ea4f 4308 mov.w r3, r8, lsl #16 - 29366: f407 477f and.w r7, r7, #65280 ; 0xff00 - 2936a: ea43 6308 orr.w r3, r3, r8, lsl #24 - 2936e: 433b orrs r3, r7 - 29370: ea43 0309 orr.w r3, r3, r9 - 29374: e72f b.n 291d6 + 2944e: ea4f 4308 mov.w r3, r8, lsl #16 + 29452: f407 477f and.w r7, r7, #65280 ; 0xff00 + 29456: ea43 6308 orr.w r3, r3, r8, lsl #24 + 2945a: 433b orrs r3, r7 + 2945c: ea43 0309 orr.w r3, r3, r9 + 29460: e72f b.n 292c2 case WS2812_BRGW: n = (b << 24) | (r << 16) | (g << 8) | w; break; - 29376: 041b lsls r3, r3, #16 - 29378: f406 467f and.w r6, r6, #65280 ; 0xff00 - 2937c: ea43 6308 orr.w r3, r3, r8, lsl #24 - 29380: 4333 orrs r3, r6 - 29382: ea43 0309 orr.w r3, r3, r9 - 29386: e726 b.n 291d6 + 29462: 041b lsls r3, r3, #16 + 29464: f406 467f and.w r6, r6, #65280 ; 0xff00 + 29468: ea43 6308 orr.w r3, r3, r8, lsl #24 + 2946c: 4333 orrs r3, r6 + 2946e: ea43 0309 orr.w r3, r3, r9 + 29472: e726 b.n 292c2 case WS2812_GBRW: n = (g << 24) | (b << 16) | (r << 8) | w; break; - 29388: ea4f 4308 mov.w r3, r8, lsl #16 - 2938c: 9801 ldr r0, [sp, #4] - 2938e: f407 477f and.w r7, r7, #65280 ; 0xff00 - 29392: ea43 6300 orr.w r3, r3, r0, lsl #24 - 29396: 433b orrs r3, r7 - 29398: ea43 0309 orr.w r3, r3, r9 - 2939c: e71b b.n 291d6 + 29474: ea4f 4308 mov.w r3, r8, lsl #16 + 29478: 9801 ldr r0, [sp, #4] + 2947a: f407 477f and.w r7, r7, #65280 ; 0xff00 + 2947e: ea43 6300 orr.w r3, r3, r0, lsl #24 + 29482: 433b orrs r3, r7 + 29484: ea43 0309 orr.w r3, r3, r9 + 29488: e71b b.n 292c2 case WS2812_GRBW: n = (g << 24) | (r << 16) | (b << 8) | w; break; - 2939e: 041b lsls r3, r3, #16 - 293a0: 9801 ldr r0, [sp, #4] - 293a2: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 - 293a6: ea43 6300 orr.w r3, r3, r0, lsl #24 - 293aa: ea43 030e orr.w r3, r3, lr - 293ae: ea43 0309 orr.w r3, r3, r9 - 293b2: e710 b.n 291d6 + 2948a: 041b lsls r3, r3, #16 + 2948c: 9801 ldr r0, [sp, #4] + 2948e: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 + 29492: ea43 6300 orr.w r3, r3, r0, lsl #24 + 29496: ea43 030e orr.w r3, r3, lr + 2949a: ea43 0309 orr.w r3, r3, r9 + 2949e: e710 b.n 292c2 case WS2812_RBGW: n = (r << 24) | (b << 16) | (g << 8) | w; break; - 293b4: ea4f 4808 mov.w r8, r8, lsl #16 - 293b8: f406 467f and.w r6, r6, #65280 ; 0xff00 - 293bc: ea48 6303 orr.w r3, r8, r3, lsl #24 - 293c0: 4333 orrs r3, r6 - 293c2: ea43 0309 orr.w r3, r3, r9 - 293c6: e706 b.n 291d6 + 294a0: ea4f 4808 mov.w r8, r8, lsl #16 + 294a4: f406 467f and.w r6, r6, #65280 ; 0xff00 + 294a8: ea48 6303 orr.w r3, r8, r3, lsl #24 + 294ac: 4333 orrs r3, r6 + 294ae: ea43 0309 orr.w r3, r3, r9 + 294b2: e706 b.n 292c2 case WS2812_RGBW: n = (r << 24) | (g << 16) | (b << 8) | w; break; - 293c8: 9801 ldr r0, [sp, #4] - 293ca: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 - 293ce: ea4f 4a00 mov.w sl, r0, lsl #16 - 293d2: ea4a 6303 orr.w r3, sl, r3, lsl #24 - 293d6: ea43 030e orr.w r3, r3, lr - 293da: ea43 0309 orr.w r3, r3, r9 - 293de: e6fa b.n 291d6 + 294b4: 9801 ldr r0, [sp, #4] + 294b6: f40e 4e7f and.w lr, lr, #65280 ; 0xff00 + 294ba: ea4f 4a00 mov.w sl, r0, lsl #16 + 294be: ea4a 6303 orr.w r3, sl, r3, lsl #24 + 294c2: ea43 030e orr.w r3, r3, lr + 294c6: ea43 0309 orr.w r3, r3, r9 + 294ca: e6fa b.n 292c2 bytes_per_led = 16; - 293e0: 2610 movs r6, #16 + 294cc: 2610 movs r6, #16 microseconds_per_led = 40; - 293e2: 2228 movs r2, #40 ; 0x28 - 293e4: e694 b.n 29110 + 294ce: 2228 movs r2, #40 ; 0x28 + 294d0: e694 b.n 291fc bytes_per_led = 12; - 293e6: 260c movs r6, #12 + 294d2: 260c movs r6, #12 microseconds_per_led = 30; - 293e8: 221e movs r2, #30 - 293ea: e691 b.n 29110 + 294d4: 221e movs r2, #30 + 294d6: e691 b.n 291fc uint32_t min_elapsed = (numled * microseconds_per_led) + 300; - 293ec: 8823 ldrh r3, [r4, #0] + 294d8: 8823 ldrh r3, [r4, #0] bytes_per_led = 16; - 293ee: 2610 movs r6, #16 + 294da: 2610 movs r6, #16 microseconds_per_led = 40; - 293f0: 2228 movs r2, #40 ; 0x28 - 293f2: e68d b.n 29110 + 294dc: 2228 movs r2, #40 ; 0x28 + 294de: e68d b.n 291fc switch (config) { - 293f4: 2300 movs r3, #0 + 294e0: 2300 movs r3, #0 const uint8_t *stop = fb + 12; - 293f6: e64f b.n 29098 + 294e2: e64f b.n 29184 switch (config) { - 293f8: 2300 movs r3, #0 + 294e4: 2300 movs r3, #0 const uint8_t *stop = fb + 16; - 293fa: e6ec b.n 291d6 + 294e6: e6ec b.n 292c2 -000293fc : +000294e8 : #warning "CR is defined as something?" #endif void DMAChannel::begin(bool force_initialization) { - 293fc: b430 push {r4, r5} + 294e8: b430 push {r4, r5} uint32_t ch = 0; __disable_irq(); - 293fe: b672 cpsid i + 294ea: b672 cpsid i if (!force_initialization && TCD && channel < DMA_MAX_CHANNELS - 29400: b921 cbnz r1, 2940c - 29402: 6803 ldr r3, [r0, #0] - 29404: b113 cbz r3, 2940c - 29406: 7902 ldrb r2, [r0, #4] - 29408: 2a0f cmp r2, #15 - 2940a: d93b bls.n 29484 + 294ec: b921 cbnz r1, 294f8 + 294ee: 6803 ldr r3, [r0, #0] + 294f0: b113 cbz r3, 294f8 + 294f2: 7902 ldrb r2, [r0, #4] + 294f4: 2a0f cmp r2, #15 + 294f6: d93b bls.n 29570 && (dma_channel_allocated_mask & (1 << channel)) - 2940c: 4c24 ldr r4, [pc, #144] ; (294a0 ) - 2940e: 8821 ldrh r1, [r4, #0] + 294f8: 4c24 ldr r4, [pc, #144] ; (2958c ) + 294fa: 8821 ldrh r1, [r4, #0] { - 29410: 2300 movs r3, #0 + 294fc: 2300 movs r3, #0 // DMA channel already allocated __enable_irq(); return; } while (1) { if (!(dma_channel_allocated_mask & (1 << ch))) { - 29412: fa41 f203 asr.w r2, r1, r3 - 29416: f012 0201 ands.w r2, r2, #1 - 2941a: d008 beq.n 2942e + 294fe: fa41 f203 asr.w r2, r1, r3 + 29502: f012 0201 ands.w r2, r2, #1 + 29506: d008 beq.n 2951a dma_channel_allocated_mask |= (1 << ch); __enable_irq(); break; } if (++ch >= DMA_MAX_CHANNELS) { - 2941c: 3301 adds r3, #1 - 2941e: 2b10 cmp r3, #16 - 29420: d1f7 bne.n 29412 + 29508: 3301 adds r3, #1 + 2950a: 2b10 cmp r3, #16 + 2950c: d1f7 bne.n 294fe __enable_irq(); - 29422: b662 cpsie i + 2950e: b662 cpsie i TCD = (TCD_t *)0; - 29424: 2200 movs r2, #0 + 29510: 2200 movs r2, #0 channel = DMA_MAX_CHANNELS; - 29426: 7103 strb r3, [r0, #4] + 29512: 7103 strb r3, [r0, #4] TCD = (TCD_t *)0; - 29428: 6002 str r2, [r0, #0] + 29514: 6002 str r2, [r0, #0] *p++ = 0; *p++ = 0; *p++ = 0; *p++ = 0; *p++ = 0; } - 2942a: bc30 pop {r4, r5} - 2942c: 4770 bx lr + 29516: bc30 pop {r4, r5} + 29518: 4770 bx lr dma_channel_allocated_mask |= (1 << ch); - 2942e: f04f 0c01 mov.w ip, #1 - 29432: fa0c fc03 lsl.w ip, ip, r3 - 29436: ea41 010c orr.w r1, r1, ip - 2943a: 8021 strh r1, [r4, #0] + 2951a: f04f 0c01 mov.w ip, #1 + 2951e: fa0c fc03 lsl.w ip, ip, r3 + 29522: ea41 010c orr.w r1, r1, ip + 29526: 8021 strh r1, [r4, #0] __enable_irq(); - 2943c: b662 cpsie i + 29528: b662 cpsie i TCD = (TCD_t *)(0x400E9000 + ch * 32); - 2943e: 4919 ldr r1, [pc, #100] ; (294a4 ) + 2952a: 4919 ldr r1, [pc, #100] ; (29590 ) channel = ch; - 29440: fa5f fc83 uxtb.w ip, r3 + 2952c: fa5f fc83 uxtb.w ip, r3 CCM_CCGR5 |= CCM_CCGR5_DMA(CCM_CCGR_ON); - 29444: 4c18 ldr r4, [pc, #96] ; (294a8 ) + 29530: 4c18 ldr r4, [pc, #96] ; (29594 ) TCD = (TCD_t *)(0x400E9000 + ch * 32); - 29446: 4419 add r1, r3 + 29532: 4419 add r1, r3 channel = ch; - 29448: f880 c004 strb.w ip, [r0, #4] + 29534: f880 c004 strb.w ip, [r0, #4] TCD = (TCD_t *)(0x400E9000 + ch * 32); - 2944c: 014b lsls r3, r1, #5 + 29538: 014b lsls r3, r1, #5 CCM_CCGR5 |= CCM_CCGR5_DMA(CCM_CCGR_ON); - 2944e: 6fe1 ldr r1, [r4, #124] ; 0x7c - 29450: f041 01c0 orr.w r1, r1, #192 ; 0xc0 - 29454: 67e1 str r1, [r4, #124] ; 0x7c + 2953a: 6fe1 ldr r1, [r4, #124] ; 0x7c + 2953c: f041 01c0 orr.w r1, r1, #192 ; 0xc0 + 29540: 67e1 str r1, [r4, #124] ; 0x7c DMA_CR = DMA_CR_GRP1PRI | DMA_CR_EMLM | DMA_CR_EDBG; - 29456: f240 4482 movw r4, #1154 ; 0x482 - 2945a: 4914 ldr r1, [pc, #80] ; (294ac ) - 2945c: 600c str r4, [r1, #0] + 29542: f240 4482 movw r4, #1154 ; 0x482 + 29546: 4914 ldr r1, [pc, #80] ; (29598 ) + 29548: 600c str r4, [r1, #0] DMA_CERQ = ch; - 2945e: f881 c01a strb.w ip, [r1, #26] + 2954a: f881 c01a strb.w ip, [r1, #26] DMA_CERR = ch; - 29462: f881 c01e strb.w ip, [r1, #30] + 2954e: f881 c01e strb.w ip, [r1, #30] DMA_CEEI = ch; - 29466: f881 c018 strb.w ip, [r1, #24] + 29552: f881 c018 strb.w ip, [r1, #24] DMA_CINT = ch; - 2946a: f881 c01f strb.w ip, [r1, #31] + 29556: f881 c01f strb.w ip, [r1, #31] TCD = (TCD_t *)(0x400E9000 + ch * 32); - 2946e: 6003 str r3, [r0, #0] + 2955a: 6003 str r3, [r0, #0] } - 29470: bc30 pop {r4, r5} + 2955c: bc30 pop {r4, r5} *p++ = 0; - 29472: e9c3 2200 strd r2, r2, [r3] + 2955e: e9c3 2200 strd r2, r2, [r3] *p++ = 0; - 29476: e9c3 2202 strd r2, r2, [r3, #8] + 29562: e9c3 2202 strd r2, r2, [r3, #8] *p++ = 0; - 2947a: e9c3 2204 strd r2, r2, [r3, #16] + 29566: e9c3 2204 strd r2, r2, [r3, #16] *p++ = 0; - 2947e: e9c3 2206 strd r2, r2, [r3, #24] + 2956a: e9c3 2206 strd r2, r2, [r3, #24] } - 29482: 4770 bx lr + 2956e: 4770 bx lr && (dma_channel_allocated_mask & (1 << channel)) - 29484: 4c06 ldr r4, [pc, #24] ; (294a0 ) - 29486: 8821 ldrh r1, [r4, #0] - 29488: fa41 f502 asr.w r5, r1, r2 - 2948c: 07ed lsls r5, r5, #31 - 2948e: d5bf bpl.n 29410 + 29570: 4c06 ldr r4, [pc, #24] ; (2958c ) + 29572: 8821 ldrh r1, [r4, #0] + 29574: fa41 f502 asr.w r5, r1, r2 + 29578: 07ed lsls r5, r5, #31 + 2957a: d5bf bpl.n 294fc && (uint32_t)TCD == (uint32_t)(0x400E9000 + channel * 32)) { - 29490: 4d04 ldr r5, [pc, #16] ; (294a4 ) - 29492: 4415 add r5, r2 - 29494: ebb3 1f45 cmp.w r3, r5, lsl #5 - 29498: d1ba bne.n 29410 + 2957c: 4d04 ldr r5, [pc, #16] ; (29590 ) + 2957e: 4415 add r5, r2 + 29580: ebb3 1f45 cmp.w r3, r5, lsl #5 + 29584: d1ba bne.n 294fc __enable_irq(); - 2949a: b662 cpsie i + 29586: b662 cpsie i return; - 2949c: e7c5 b.n 2942a - 2949e: bf00 nop - 294a0: 2000bc6e .word 0x2000bc6e - 294a4: 02007480 .word 0x02007480 - 294a8: 400fc000 .word 0x400fc000 - 294ac: 400e8000 .word 0x400e8000 + 29588: e7c5 b.n 29516 + 2958a: bf00 nop + 2958c: 2000bc8e .word 0x2000bc8e + 29590: 02007480 .word 0x02007480 + 29594: 400fc000 .word 0x400fc000 + 29598: 400e8000 .word 0x400e8000 -000294b0 : +0002959c : void DMAChannel::release(void) { if (channel >= DMA_MAX_CHANNELS) return; - 294b0: 7903 ldrb r3, [r0, #4] - 294b2: 2b0f cmp r3, #15 - 294b4: d811 bhi.n 294da + 2959c: 7903 ldrb r3, [r0, #4] + 2959e: 2b0f cmp r3, #15 + 295a0: d811 bhi.n 295c6 DMA_CERQ = channel; - 294b6: 4a09 ldr r2, [pc, #36] ; (294dc ) - 294b8: 7693 strb r3, [r2, #26] + 295a2: 4a09 ldr r2, [pc, #36] ; (295c8 ) + 295a4: 7693 strb r3, [r2, #26] __disable_irq(); - 294ba: b672 cpsid i + 295a6: b672 cpsid i dma_channel_allocated_mask &= ~(1 << channel); - 294bc: 4908 ldr r1, [pc, #32] ; (294e0 ) - 294be: 2201 movs r2, #1 - 294c0: f890 c004 ldrb.w ip, [r0, #4] - 294c4: 880b ldrh r3, [r1, #0] - 294c6: fa02 f20c lsl.w r2, r2, ip - 294ca: ea23 0302 bic.w r3, r3, r2 - 294ce: 800b strh r3, [r1, #0] + 295a8: 4908 ldr r1, [pc, #32] ; (295cc ) + 295aa: 2201 movs r2, #1 + 295ac: f890 c004 ldrb.w ip, [r0, #4] + 295b0: 880b ldrh r3, [r1, #0] + 295b2: fa02 f20c lsl.w r2, r2, ip + 295b6: ea23 0302 bic.w r3, r3, r2 + 295ba: 800b strh r3, [r1, #0] __enable_irq(); - 294d0: b662 cpsie i + 295bc: b662 cpsie i channel = DMA_MAX_CHANNELS; - 294d2: 2210 movs r2, #16 + 295be: 2210 movs r2, #16 TCD = (TCD_t *)0; - 294d4: 2300 movs r3, #0 + 295c0: 2300 movs r3, #0 channel = DMA_MAX_CHANNELS; - 294d6: 7102 strb r2, [r0, #4] + 295c2: 7102 strb r2, [r0, #4] TCD = (TCD_t *)0; - 294d8: 6003 str r3, [r0, #0] + 295c4: 6003 str r3, [r0, #0] } - 294da: 4770 bx lr - 294dc: 400e8000 .word 0x400e8000 - 294e0: 2000bc6e .word 0x2000bc6e + 295c6: 4770 bx lr + 295c8: 400e8000 .word 0x400e8000 + 295cc: 2000bc8e .word 0x2000bc8e -000294e4 : +000295d0 : static EventResponder *lastInterrupt; static bool runningFromYield; private: static bool disableInterrupts() { uint32_t primask; __asm__ volatile("mrs %0, primask\n" : "=r" (primask)::); - 294e4: f3ef 8210 mrs r2, PRIMASK + 295d0: f3ef 8210 mrs r2, PRIMASK __disable_irq(); - 294e8: b672 cpsid i + 295d4: b672 cpsid i extern const uint8_t _serialEventUSB2_default __attribute__((weak)) PROGMEM = 0 ; void EventResponder::triggerEventNotImmediate() { bool irq = disableInterrupts(); if (_triggered == false) { - 294ea: 7f43 ldrb r3, [r0, #29] - 294ec: b95b cbnz r3, 29506 + 295d6: 7f43 ldrb r3, [r0, #29] + 295d8: b95b cbnz r3, 295f2 // not already triggered if (_type == EventTypeYield) { - 294ee: 7f01 ldrb r1, [r0, #28] - 294f0: 2901 cmp r1, #1 + 295da: 7f01 ldrb r1, [r0, #28] + 295dc: 2901 cmp r1, #1 { - 294f2: b430 push {r4, r5} + 295de: b430 push {r4, r5} if (_type == EventTypeYield) { - 294f4: d00b beq.n 2950e + 295e0: d00b beq.n 295fa _next = nullptr; _prev = lastYield; _prev->_next = this; lastYield = this; } } else if (_type == EventTypeInterrupt) { - 294f6: 2903 cmp r1, #3 - 294f8: d013 beq.n 29522 + 295e2: 2903 cmp r1, #3 + 295e4: d013 beq.n 2960e } SCB_ICSR = SCB_ICSR_PENDSVSET; // set PendSV interrupt } else { // detached, easy :-) } _triggered = true; - 294fa: 2301 movs r3, #1 - 294fc: 7743 strb r3, [r0, #29] + 295e6: 2301 movs r3, #1 + 295e8: 7743 strb r3, [r0, #29] return (primask == 0) ? true : false; } static void enableInterrupts(bool doit) { if (doit) __enable_irq(); - 294fe: b902 cbnz r2, 29502 - 29500: b662 cpsie i + 295ea: b902 cbnz r2, 295ee + 295ec: b662 cpsie i } enableInterrupts(irq); } - 29502: bc30 pop {r4, r5} - 29504: 4770 bx lr - 29506: b90a cbnz r2, 2950c - 29508: b662 cpsie i - 2950a: 4770 bx lr - 2950c: 4770 bx lr + 295ee: bc30 pop {r4, r5} + 295f0: 4770 bx lr + 295f2: b90a cbnz r2, 295f8 + 295f4: b662 cpsie i + 295f6: 4770 bx lr + 295f8: 4770 bx lr if (firstYield == nullptr) { - 2950e: 4c12 ldr r4, [pc, #72] ; (29558 ) - 29510: 6821 ldr r1, [r4, #0] - 29512: b1b1 cbz r1, 29542 + 295fa: 4c12 ldr r4, [pc, #72] ; (29644 ) + 295fc: 6821 ldr r1, [r4, #0] + 295fe: b1b1 cbz r1, 2962e _prev = lastYield; - 29514: 4911 ldr r1, [pc, #68] ; (2955c ) + 29600: 4911 ldr r1, [pc, #68] ; (29648 ) _next = nullptr; - 29516: 6143 str r3, [r0, #20] + 29602: 6143 str r3, [r0, #20] _prev = lastYield; - 29518: 680b ldr r3, [r1, #0] + 29604: 680b ldr r3, [r1, #0] lastYield = this; - 2951a: 6008 str r0, [r1, #0] + 29606: 6008 str r0, [r1, #0] _prev = lastYield; - 2951c: 6183 str r3, [r0, #24] + 29608: 6183 str r3, [r0, #24] _prev->_next = this; - 2951e: 6158 str r0, [r3, #20] + 2960a: 6158 str r0, [r3, #20] lastYield = this; - 29520: e7eb b.n 294fa + 2960c: e7eb b.n 295e6 if (firstInterrupt == nullptr) { - 29522: 4d0f ldr r5, [pc, #60] ; (29560 ) - 29524: 490f ldr r1, [pc, #60] ; (29564 ) - 29526: 682c ldr r4, [r5, #0] - 29528: b18c cbz r4, 2954e + 2960e: 4d0f ldr r5, [pc, #60] ; (2964c ) + 29610: 490f ldr r1, [pc, #60] ; (29650 ) + 29612: 682c ldr r4, [r5, #0] + 29614: b18c cbz r4, 2963a _next = nullptr; - 2952a: 6143 str r3, [r0, #20] + 29616: 6143 str r3, [r0, #20] _prev = lastInterrupt; - 2952c: 680b ldr r3, [r1, #0] - 2952e: 6183 str r3, [r0, #24] + 29618: 680b ldr r3, [r1, #0] + 2961a: 6183 str r3, [r0, #24] _prev->_next = this; - 29530: 6158 str r0, [r3, #20] + 2961c: 6158 str r0, [r3, #20] SCB_ICSR = SCB_ICSR_PENDSVSET; // set PendSV interrupt - 29532: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 - 29536: f04f 5480 mov.w r4, #268435456 ; 0x10000000 + 2961e: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 29622: f04f 5480 mov.w r4, #268435456 ; 0x10000000 lastInterrupt = this; - 2953a: 6008 str r0, [r1, #0] + 29626: 6008 str r0, [r1, #0] SCB_ICSR = SCB_ICSR_PENDSVSET; // set PendSV interrupt - 2953c: f8c3 4d04 str.w r4, [r3, #3332] ; 0xd04 - 29540: e7db b.n 294fa + 29628: f8c3 4d04 str.w r4, [r3, #3332] ; 0xd04 + 2962c: e7db b.n 295e6 lastYield = this; - 29542: 4b06 ldr r3, [pc, #24] ; (2955c ) + 2962e: 4b06 ldr r3, [pc, #24] ; (29648 ) firstYield = this; - 29544: 6020 str r0, [r4, #0] + 29630: 6020 str r0, [r4, #0] lastYield = this; - 29546: 6018 str r0, [r3, #0] + 29632: 6018 str r0, [r3, #0] _prev = nullptr; - 29548: e9c0 1105 strd r1, r1, [r0, #20] + 29634: e9c0 1105 strd r1, r1, [r0, #20] lastYield = this; - 2954c: e7d5 b.n 294fa + 29638: e7d5 b.n 295e6 _prev = nullptr; - 2954e: e9c0 4405 strd r4, r4, [r0, #20] + 2963a: e9c0 4405 strd r4, r4, [r0, #20] firstInterrupt = this; - 29552: 6028 str r0, [r5, #0] + 2963e: 6028 str r0, [r5, #0] lastInterrupt = this; - 29554: e7ed b.n 29532 - 29556: bf00 nop - 29558: 2000b6f4 .word 0x2000b6f4 - 2955c: 2000b700 .word 0x2000b700 - 29560: 2000b6fc .word 0x2000b6fc - 29564: 2000b6f8 .word 0x2000b6f8 - -00029568 : + 29640: e7ed b.n 2961e + 29642: bf00 nop + 29644: 2000b714 .word 0x2000b714 + 29648: 2000b720 .word 0x2000b720 + 2964c: 2000b71c .word 0x2000b71c + 29650: 2000b718 .word 0x2000b718 + +00029654 : { EventResponder::runFromInterrupt(); } void EventResponder::runFromInterrupt() { - 29568: b570 push {r4, r5, r6, lr} + 29654: b570 push {r4, r5, r6, lr} __asm__ volatile("mrs %0, primask\n" : "=r" (primask)::); - 2956a: f3ef 8210 mrs r2, PRIMASK + 29656: f3ef 8210 mrs r2, PRIMASK __disable_irq(); - 2956e: b672 cpsid i + 2965a: b672 cpsid i while (1) { bool irq = disableInterrupts(); EventResponder *first = firstInterrupt; - 29570: 4c0c ldr r4, [pc, #48] ; (295a4 ) - 29572: 6820 ldr r0, [r4, #0] + 2965c: 4c0c ldr r4, [pc, #48] ; (29690 ) + 2965e: 6820 ldr r0, [r4, #0] if (first) { - 29574: b180 cbz r0, 29598 + 29660: b180 cbz r0, 29684 firstInterrupt = first->_next; if (firstInterrupt) { firstInterrupt->_prev = nullptr; } else { lastInterrupt = nullptr; - 29576: 4e0c ldr r6, [pc, #48] ; (295a8 ) + 29662: 4e0c ldr r6, [pc, #48] ; (29694 ) firstInterrupt->_prev = nullptr; - 29578: 2500 movs r5, #0 + 29664: 2500 movs r5, #0 firstInterrupt = first->_next; - 2957a: 6943 ldr r3, [r0, #20] - 2957c: 6023 str r3, [r4, #0] + 29666: 6943 ldr r3, [r0, #20] + 29668: 6023 str r3, [r4, #0] if (firstInterrupt) { - 2957e: b173 cbz r3, 2959e + 2966a: b173 cbz r3, 2968a firstInterrupt->_prev = nullptr; - 29580: 619d str r5, [r3, #24] + 2966c: 619d str r5, [r3, #24] if (doit) __enable_irq(); - 29582: b902 cbnz r2, 29586 - 29584: b662 cpsie i + 2966e: b902 cbnz r2, 29672 + 29670: b662 cpsie i } enableInterrupts(irq); first->_triggered = false; (*(first->_function))(*first); - 29586: 6883 ldr r3, [r0, #8] + 29672: 6883 ldr r3, [r0, #8] first->_triggered = false; - 29588: 7745 strb r5, [r0, #29] + 29674: 7745 strb r5, [r0, #29] (*(first->_function))(*first); - 2958a: 4798 blx r3 + 29676: 4798 blx r3 __asm__ volatile("mrs %0, primask\n" : "=r" (primask)::); - 2958c: f3ef 8210 mrs r2, PRIMASK + 29678: f3ef 8210 mrs r2, PRIMASK __disable_irq(); - 29590: b672 cpsid i + 2967c: b672 cpsid i EventResponder *first = firstInterrupt; - 29592: 6820 ldr r0, [r4, #0] + 2967e: 6820 ldr r0, [r4, #0] if (first) { - 29594: 2800 cmp r0, #0 - 29596: d1f0 bne.n 2957a + 29680: 2800 cmp r0, #0 + 29682: d1f0 bne.n 29666 if (doit) __enable_irq(); - 29598: b902 cbnz r2, 2959c - 2959a: b662 cpsie i + 29684: b902 cbnz r2, 29688 + 29686: b662 cpsie i } else { enableInterrupts(irq); break; } } } - 2959c: bd70 pop {r4, r5, r6, pc} + 29688: bd70 pop {r4, r5, r6, pc} lastInterrupt = nullptr; - 2959e: 6033 str r3, [r6, #0] - 295a0: e7ef b.n 29582 - 295a2: bf00 nop - 295a4: 2000b6fc .word 0x2000b6fc - 295a8: 2000b6f8 .word 0x2000b6f8 + 2968a: 6033 str r3, [r6, #0] + 2968c: e7ef b.n 2966e + 2968e: bf00 nop + 29690: 2000b71c .word 0x2000b71c + 29694: 2000b718 .word 0x2000b718 -000295ac : +00029698 : EventResponder::runFromInterrupt(); - 295ac: f7ff bfdc b.w 29568 + 29698: f7ff bfdc b.w 29654 -000295b0 : +0002969c : extern "C" volatile uint32_t systick_millis_count; extern "C" volatile uint32_t systick_cycle_count; extern "C" uint32_t systick_safe_read; // micros() synchronization extern "C" void systick_isr(void) { systick_cycle_count = ARM_DWT_CYCCNT; - 295b0: 4904 ldr r1, [pc, #16] ; (295c4 ) + 2969c: 4904 ldr r1, [pc, #16] ; (296b0 ) systick_millis_count++; - 295b2: 4a05 ldr r2, [pc, #20] ; (295c8 ) + 2969e: 4a05 ldr r2, [pc, #20] ; (296b4 ) systick_cycle_count = ARM_DWT_CYCCNT; - 295b4: 6849 ldr r1, [r1, #4] - 295b6: 4b05 ldr r3, [pc, #20] ; (295cc ) - 295b8: 6019 str r1, [r3, #0] + 296a0: 6849 ldr r1, [r1, #4] + 296a2: 4b05 ldr r3, [pc, #20] ; (296b8 ) + 296a4: 6019 str r1, [r3, #0] systick_millis_count++; - 295ba: 6813 ldr r3, [r2, #0] - 295bc: 3301 adds r3, #1 - 295be: 6013 str r3, [r2, #0] + 296a6: 6813 ldr r3, [r2, #0] + 296a8: 3301 adds r3, #1 + 296aa: 6013 str r3, [r2, #0] } - 295c0: 4770 bx lr - 295c2: bf00 nop - 295c4: e0001000 .word 0xe0001000 - 295c8: 2000bae8 .word 0x2000bae8 - 295cc: 2000bae4 .word 0x2000bae4 + 296ac: 4770 bx lr + 296ae: bf00 nop + 296b0: e0001000 .word 0xe0001000 + 296b4: 2000bb08 .word 0x2000bb08 + 296b8: 2000bb04 .word 0x2000bb04 -000295d0 : +000296bc : int HardwareSerial::availableForWrite(void) { uint32_t head, tail; head = tx_buffer_head_; - 295d0: f8b0 3046 ldrh.w r3, [r0, #70] ; 0x46 + 296bc: f8b0 3046 ldrh.w r3, [r0, #70] ; 0x46 tail = tx_buffer_tail_; - 295d4: f8b0 2048 ldrh.w r2, [r0, #72] ; 0x48 + 296c0: f8b0 2048 ldrh.w r2, [r0, #72] ; 0x48 head = tx_buffer_head_; - 295d8: b29b uxth r3, r3 + 296c4: b29b uxth r3, r3 tail = tx_buffer_tail_; - 295da: b292 uxth r2, r2 + 296c6: b292 uxth r2, r2 if (head >= tail) return tx_buffer_total_size_ - 1 - head + tail; - 295dc: 4293 cmp r3, r2 - 295de: d202 bcs.n 295e6 + 296c8: 4293 cmp r3, r2 + 296ca: d202 bcs.n 296d2 return tail - head - 1; - 295e0: 3a01 subs r2, #1 - 295e2: 1ad0 subs r0, r2, r3 + 296cc: 3a01 subs r2, #1 + 296ce: 1ad0 subs r0, r2, r3 } - 295e4: 4770 bx lr + 296d0: 4770 bx lr if (head >= tail) return tx_buffer_total_size_ - 1 - head + tail; - 295e6: 6b41 ldr r1, [r0, #52] ; 0x34 - 295e8: 3901 subs r1, #1 - 295ea: 440a add r2, r1 - 295ec: 1ad0 subs r0, r2, r3 - 295ee: 4770 bx lr + 296d2: 6b41 ldr r1, [r0, #52] ; 0x34 + 296d4: 3901 subs r1, #1 + 296d6: 440a add r2, r1 + 296d8: 1ad0 subs r0, r2, r3 + 296da: 4770 bx lr -000295f0 : +000296dc : int HardwareSerial::available(void) { uint32_t head, tail; // WATER> 0 so IDLE involved may want to check if port has already has RX data to retrieve __disable_irq(); - 295f0: b672 cpsid i + 296dc: b672 cpsid i head = rx_buffer_head_; - 295f2: f8b0 204a ldrh.w r2, [r0, #74] ; 0x4a + 296de: f8b0 204a ldrh.w r2, [r0, #74] ; 0x4a tail = rx_buffer_tail_; - 295f6: f8b0 304c ldrh.w r3, [r0, #76] ; 0x4c + 296e2: f8b0 304c ldrh.w r3, [r0, #76] ; 0x4c head = rx_buffer_head_; - 295fa: b292 uxth r2, r2 + 296e6: b292 uxth r2, r2 tail = rx_buffer_tail_; - 295fc: b29b uxth r3, r3 + 296e8: b29b uxth r3, r3 int avail; if (head >= tail) avail = head - tail; - 295fe: 429a cmp r2, r3 + 296ea: 429a cmp r2, r3 else avail = rx_buffer_total_size_ + head - tail; - 29600: bf3c itt cc - 29602: 6b81 ldrcc r1, [r0, #56] ; 0x38 - 29604: 1852 addcc r2, r2, r1 - 29606: 1ad3 subs r3, r2, r3 + 296ec: bf3c itt cc + 296ee: 6b81 ldrcc r1, [r0, #56] ; 0x38 + 296f0: 1852 addcc r2, r2, r1 + 296f2: 1ad3 subs r3, r2, r3 avail += (port->WATER >> 24) & 0x7; - 29608: 6902 ldr r2, [r0, #16] - 2960a: 6ad0 ldr r0, [r2, #44] ; 0x2c + 296f4: 6902 ldr r2, [r0, #16] + 296f6: 6ad0 ldr r0, [r2, #44] ; 0x2c __enable_irq(); - 2960c: b662 cpsie i + 296f8: b662 cpsie i avail += (port->WATER >> 24) & 0x7; - 2960e: f3c0 6002 ubfx r0, r0, #24, #3 + 296fa: f3c0 6002 ubfx r0, r0, #24, #3 return avail; } - 29612: 4418 add r0, r3 - 29614: 4770 bx lr - 29616: bf00 nop + 296fe: 4418 add r0, r3 + 29700: 4770 bx lr + 29702: bf00 nop -00029618 : +00029704 : int HardwareSerial::peek(void) { uint32_t head, tail; head = rx_buffer_head_; - 29618: f8b0 104a ldrh.w r1, [r0, #74] ; 0x4a + 29704: f8b0 104a ldrh.w r1, [r0, #74] ; 0x4a { - 2961c: 4602 mov r2, r0 + 29708: 4602 mov r2, r0 tail = rx_buffer_tail_; - 2961e: f8b0 304c ldrh.w r3, [r0, #76] ; 0x4c + 2970a: f8b0 304c ldrh.w r3, [r0, #76] ; 0x4c head = rx_buffer_head_; - 29622: b289 uxth r1, r1 + 2970e: b289 uxth r1, r1 tail = rx_buffer_tail_; - 29624: b29b uxth r3, r3 + 29710: b29b uxth r3, r3 if (head == tail) { - 29626: 4299 cmp r1, r3 - 29628: d010 beq.n 2964c + 29712: 4299 cmp r1, r3 + 29714: d010 beq.n 29738 return c; } __enable_irq(); } if (++tail >= rx_buffer_total_size_) tail = 0; - 2962a: 3301 adds r3, #1 - 2962c: 6b90 ldr r0, [r2, #56] ; 0x38 + 29716: 3301 adds r3, #1 + 29718: 6b90 ldr r0, [r2, #56] ; 0x38 if (tail < rx_buffer_size_) { - 2962e: 6b11 ldr r1, [r2, #48] ; 0x30 + 2971a: 6b11 ldr r1, [r2, #48] ; 0x30 if (++tail >= rx_buffer_total_size_) tail = 0; - 29630: 4298 cmp r0, r3 - 29632: bf98 it ls - 29634: 2300 movls r3, #0 + 2971c: 4298 cmp r0, r3 + 2971e: bf98 it ls + 29720: 2300 movls r3, #0 if (tail < rx_buffer_size_) { - 29636: 4299 cmp r1, r3 - 29638: d903 bls.n 29642 + 29722: 4299 cmp r1, r3 + 29724: d903 bls.n 2972e return rx_buffer_[tail]; - 2963a: 6a12 ldr r2, [r2, #32] - 2963c: 5cd0 ldrb r0, [r2, r3] - 2963e: b2c0 uxtb r0, r0 - 29640: 4770 bx lr + 29726: 6a12 ldr r2, [r2, #32] + 29728: 5cd0 ldrb r0, [r2, r3] + 2972a: b2c0 uxtb r0, r0 + 2972c: 4770 bx lr } else { return rx_buffer_storage_[tail-rx_buffer_size_]; - 29642: 1a5b subs r3, r3, r1 - 29644: 6a52 ldr r2, [r2, #36] ; 0x24 - 29646: 5cd0 ldrb r0, [r2, r3] - 29648: b2c0 uxtb r0, r0 + 2972e: 1a5b subs r3, r3, r1 + 29730: 6a52 ldr r2, [r2, #36] ; 0x24 + 29732: 5cd0 ldrb r0, [r2, r3] + 29734: b2c0 uxtb r0, r0 } } - 2964a: 4770 bx lr + 29736: 4770 bx lr __disable_irq(); - 2964c: b672 cpsid i + 29738: b672 cpsid i head = rx_buffer_head_; // reread head to make sure no ISR happened - 2964e: f8b0 004a ldrh.w r0, [r0, #74] ; 0x4a - 29652: b280 uxth r0, r0 + 2973a: f8b0 004a ldrh.w r0, [r0, #74] ; 0x4a + 2973e: b280 uxth r0, r0 if (head == tail) { - 29654: 4281 cmp r1, r0 - 29656: d001 beq.n 2965c + 29740: 4281 cmp r1, r0 + 29742: d001 beq.n 29748 __enable_irq(); - 29658: b662 cpsie i - 2965a: e7e6 b.n 2962a + 29744: b662 cpsie i + 29746: e7e6 b.n 29716 if (port->WATER & 0x7000000) { - 2965c: 6913 ldr r3, [r2, #16] - 2965e: 6ad9 ldr r1, [r3, #44] ; 0x2c - 29660: f011 6fe0 tst.w r1, #117440512 ; 0x7000000 - 29664: d103 bne.n 2966e + 29748: 6913 ldr r3, [r2, #16] + 2974a: 6ad9 ldr r1, [r3, #44] ; 0x2c + 2974c: f011 6fe0 tst.w r1, #117440512 ; 0x7000000 + 29750: d103 bne.n 2975a int c = -1; // assume nothing to return - 29666: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 29752: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff __enable_irq(); - 2966a: b662 cpsie i + 29756: b662 cpsie i return c; - 2966c: 4770 bx lr + 29758: 4770 bx lr c = port->DATA & 0x3ff; // Use only up to 10 bits of data - 2966e: 69db ldr r3, [r3, #28] + 2975a: 69db ldr r3, [r3, #28] rx_buffer_head_ = 1; - 29670: 2001 movs r0, #1 + 2975c: 2001 movs r0, #1 rx_buffer_tail_ = 0; - 29672: f04f 0c00 mov.w ip, #0 + 2975e: f04f 0c00 mov.w ip, #0 rx_buffer_[1] = c; - 29676: 6a11 ldr r1, [r2, #32] + 29762: 6a11 ldr r1, [r2, #32] rx_buffer_head_ = 1; - 29678: f8a2 004a strh.w r0, [r2, #74] ; 0x4a + 29764: f8a2 004a strh.w r0, [r2, #74] ; 0x4a c = port->DATA & 0x3ff; // Use only up to 10 bits of data - 2967c: f3c3 0009 ubfx r0, r3, #0, #10 + 29768: f3c3 0009 ubfx r0, r3, #0, #10 rx_buffer_[1] = c; - 29680: b2db uxtb r3, r3 + 2976c: b2db uxtb r3, r3 rx_buffer_tail_ = 0; - 29682: f8a2 c04c strh.w ip, [r2, #76] ; 0x4c + 2976e: f8a2 c04c strh.w ip, [r2, #76] ; 0x4c rx_buffer_[1] = c; - 29686: 704b strb r3, [r1, #1] - 29688: e7ef b.n 2966a - 2968a: bf00 nop + 29772: 704b strb r3, [r1, #1] + 29774: e7ef b.n 29756 + 29776: bf00 nop -0002968c : +00029778 : int HardwareSerial::read(void) { uint32_t head, tail; int c; head = rx_buffer_head_; - 2968c: f8b0 104a ldrh.w r1, [r0, #74] ; 0x4a + 29778: f8b0 104a ldrh.w r1, [r0, #74] ; 0x4a { - 29690: 4602 mov r2, r0 + 2977c: 4602 mov r2, r0 tail = rx_buffer_tail_; - 29692: f8b0 304c ldrh.w r3, [r0, #76] ; 0x4c + 2977e: f8b0 304c ldrh.w r3, [r0, #76] ; 0x4c head = rx_buffer_head_; - 29696: b289 uxth r1, r1 + 29782: b289 uxth r1, r1 tail = rx_buffer_tail_; - 29698: b29b uxth r3, r3 + 29784: b29b uxth r3, r3 if (head == tail) { - 2969a: 4299 cmp r1, r3 - 2969c: d026 beq.n 296ec + 29786: 4299 cmp r1, r3 + 29788: d026 beq.n 297d8 return c; } __enable_irq(); } if (++tail >= rx_buffer_total_size_) tail = 0; - 2969e: 3301 adds r3, #1 + 2978a: 3301 adds r3, #1 { - 296a0: b430 push {r4, r5} + 2978c: b430 push {r4, r5} if (++tail >= rx_buffer_total_size_) tail = 0; - 296a2: 6b94 ldr r4, [r2, #56] ; 0x38 - 296a4: 429c cmp r4, r3 - 296a6: d916 bls.n 296d6 + 2978e: 6b94 ldr r4, [r2, #56] ; 0x38 + 29790: 429c cmp r4, r3 + 29792: d916 bls.n 297c2 if (tail < rx_buffer_size_) { - 296a8: 6b10 ldr r0, [r2, #48] ; 0x30 + 29794: 6b10 ldr r0, [r2, #48] ; 0x30 c = rx_buffer_[tail]; } else { c = rx_buffer_storage_[tail-rx_buffer_size_]; } rx_buffer_tail_ = tail; - 296aa: fa1f fc83 uxth.w ip, r3 + 29796: fa1f fc83 uxth.w ip, r3 if (tail < rx_buffer_size_) { - 296ae: 4298 cmp r0, r3 - 296b0: d917 bls.n 296e2 + 2979a: 4298 cmp r0, r3 + 2979c: d917 bls.n 297ce c = rx_buffer_[tail]; - 296b2: 6a10 ldr r0, [r2, #32] - 296b4: 5cc0 ldrb r0, [r0, r3] - 296b6: b2c0 uxtb r0, r0 + 2979e: 6a10 ldr r0, [r2, #32] + 297a0: 5cc0 ldrb r0, [r0, r3] + 297a2: b2c0 uxtb r0, r0 if (rts_pin_baseReg_) { - 296b8: 6d95 ldr r5, [r2, #88] ; 0x58 + 297a4: 6d95 ldr r5, [r2, #88] ; 0x58 rx_buffer_tail_ = tail; - 296ba: f8a2 c04c strh.w ip, [r2, #76] ; 0x4c + 297a6: f8a2 c04c strh.w ip, [r2, #76] ; 0x4c if (rts_pin_baseReg_) { - 296be: b145 cbz r5, 296d2 + 297aa: b145 cbz r5, 297be uint32_t avail; if (head >= tail) avail = head - tail; - 296c0: 4299 cmp r1, r3 - 296c2: d31c bcc.n 296fe - 296c4: 1acb subs r3, r1, r3 + 297ac: 4299 cmp r1, r3 + 297ae: d31c bcc.n 297ea + 297b0: 1acb subs r3, r1, r3 else avail = rx_buffer_total_size_ + head - tail; if (avail <= rts_low_watermark_) rts_assert(); - 296c6: 6bd1 ldr r1, [r2, #60] ; 0x3c - 296c8: 4299 cmp r1, r3 - 296ca: d302 bcc.n 296d2 + 297b2: 6bd1 ldr r1, [r2, #60] ; 0x3c + 297b4: 4299 cmp r1, r3 + 297b6: d302 bcc.n 297be DIRECT_WRITE_LOW(rts_pin_baseReg_, rts_pin_bitmask_); - 296cc: 6dd3 ldr r3, [r2, #92] ; 0x5c - 296ce: f8c5 3088 str.w r3, [r5, #136] ; 0x88 + 297b8: 6dd3 ldr r3, [r2, #92] ; 0x5c + 297ba: f8c5 3088 str.w r3, [r5, #136] ; 0x88 } return c; } - 296d2: bc30 pop {r4, r5} - 296d4: 4770 bx lr - 296d6: f04f 0c00 mov.w ip, #0 + 297be: bc30 pop {r4, r5} + 297c0: 4770 bx lr + 297c2: f04f 0c00 mov.w ip, #0 if (tail < rx_buffer_size_) { - 296da: 6b10 ldr r0, [r2, #48] ; 0x30 + 297c6: 6b10 ldr r0, [r2, #48] ; 0x30 if (++tail >= rx_buffer_total_size_) tail = 0; - 296dc: 4663 mov r3, ip + 297c8: 4663 mov r3, ip if (tail < rx_buffer_size_) { - 296de: 4298 cmp r0, r3 - 296e0: d8e7 bhi.n 296b2 + 297ca: 4298 cmp r0, r3 + 297cc: d8e7 bhi.n 2979e c = rx_buffer_storage_[tail-rx_buffer_size_]; - 296e2: 1a18 subs r0, r3, r0 - 296e4: 6a55 ldr r5, [r2, #36] ; 0x24 - 296e6: 5c28 ldrb r0, [r5, r0] - 296e8: b2c0 uxtb r0, r0 - 296ea: e7e5 b.n 296b8 - 296ec: 4608 mov r0, r1 + 297ce: 1a18 subs r0, r3, r0 + 297d0: 6a55 ldr r5, [r2, #36] ; 0x24 + 297d2: 5c28 ldrb r0, [r5, r0] + 297d4: b2c0 uxtb r0, r0 + 297d6: e7e5 b.n 297a4 + 297d8: 4608 mov r0, r1 __disable_irq(); - 296ee: b672 cpsid i + 297da: b672 cpsid i head = rx_buffer_head_; // reread head to make sure no ISR happened - 296f0: f8b2 104a ldrh.w r1, [r2, #74] ; 0x4a - 296f4: b289 uxth r1, r1 + 297dc: f8b2 104a ldrh.w r1, [r2, #74] ; 0x4a + 297e0: b289 uxth r1, r1 if (head == tail) { - 296f6: 4288 cmp r0, r1 - 296f8: d004 beq.n 29704 + 297e2: 4288 cmp r0, r1 + 297e4: d004 beq.n 297f0 __enable_irq(); - 296fa: b662 cpsie i - 296fc: e7cf b.n 2969e + 297e6: b662 cpsie i + 297e8: e7cf b.n 2978a else avail = rx_buffer_total_size_ + head - tail; - 296fe: 440c add r4, r1 - 29700: 1ae3 subs r3, r4, r3 - 29702: e7e0 b.n 296c6 + 297ea: 440c add r4, r1 + 297ec: 1ae3 subs r3, r4, r3 + 297ee: e7e0 b.n 297b2 if (port->WATER & 0x7000000) { - 29704: 6913 ldr r3, [r2, #16] - 29706: 6ada ldr r2, [r3, #44] ; 0x2c - 29708: f012 6fe0 tst.w r2, #117440512 ; 0x7000000 - 2970c: d103 bne.n 29716 + 297f0: 6913 ldr r3, [r2, #16] + 297f2: 6ada ldr r2, [r3, #44] ; 0x2c + 297f4: f012 6fe0 tst.w r2, #117440512 ; 0x7000000 + 297f8: d103 bne.n 29802 c = -1; // assume nothing to return - 2970e: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 297fa: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff __enable_irq(); - 29712: b662 cpsie i + 297fe: b662 cpsie i } - 29714: 4770 bx lr + 29800: 4770 bx lr c = port->DATA & 0x3ff; // Use only up to 10 bits of data - 29716: 69d8 ldr r0, [r3, #28] - 29718: f3c0 0009 ubfx r0, r0, #0, #10 - 2971c: e7f9 b.n 29712 - 2971e: bf00 nop + 29802: 69d8 ldr r0, [r3, #28] + 29804: f3c0 0009 ubfx r0, r0, #0, #10 + 29808: e7f9 b.n 297fe + 2980a: bf00 nop -00029720 : +0002980c : void HardwareSerial::flush(void) { while (transmitting_) yield(); // wait - 29720: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 - 29724: b143 cbz r3, 29738 + 2980c: f890 3044 ldrb.w r3, [r0, #68] ; 0x44 + 29810: b143 cbz r3, 29824 { - 29726: b510 push {r4, lr} - 29728: 4604 mov r4, r0 + 29812: b510 push {r4, lr} + 29814: 4604 mov r4, r0 while (transmitting_) yield(); // wait - 2972a: f002 ff47 bl 2c5bc - 2972e: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 - 29732: 2b00 cmp r3, #0 - 29734: d1f9 bne.n 2972a + 29816: f002 ff45 bl 2c6a4 + 2981a: f894 3044 ldrb.w r3, [r4, #68] ; 0x44 + 2981e: 2b00 cmp r3, #0 + 29820: d1f9 bne.n 29816 } - 29736: bd10 pop {r4, pc} - 29738: 4770 bx lr - 2973a: bf00 nop + 29822: bd10 pop {r4, pc} + 29824: 4770 bx lr + 29826: bf00 nop -0002973c : +00029828 : __asm__ volatile("mrs %0, faultmask\n" : "=r" (faultmask)::); - 2973c: f3ef 8013 mrs r0, FAULTMASK + 29828: f3ef 8013 mrs r0, FAULTMASK if (faultmask) return -1; - 29740: b9b8 cbnz r0, 29772 + 2982c: b9b8 cbnz r0, 2985e __asm__ volatile("mrs %0, primask\n" : "=r" (primask)::); - 29742: f3ef 8310 mrs r3, PRIMASK + 2982e: f3ef 8310 mrs r3, PRIMASK if (primask) return 0; - 29746: b94b cbnz r3, 2975c + 29832: b94b cbnz r3, 29848 __asm__ volatile("mrs %0, ipsr\n" : "=r" (ipsr)::); - 29748: f3ef 8205 mrs r2, IPSR + 29834: f3ef 8205 mrs r2, IPSR if (ipsr) { - 2974c: b93a cbnz r2, 2975e + 29838: b93a cbnz r2, 2984a uint32_t priority=256; - 2974e: f44f 7380 mov.w r3, #256 ; 0x100 + 2983a: f44f 7380 mov.w r3, #256 ; 0x100 __asm__ volatile("mrs %0, basepri\n" : "=r" (basepri)::); - 29752: f3ef 8011 mrs r0, BASEPRI + 2983e: f3ef 8011 mrs r0, BASEPRI if (basepri > 0 && basepri < priority) priority = basepri; - 29756: b150 cbz r0, 2976e - 29758: 4298 cmp r0, r3 - 2975a: d208 bcs.n 2976e + 29842: b150 cbz r0, 2985a + 29844: 4298 cmp r0, r3 + 29846: d208 bcs.n 2985a } - 2975c: 4770 bx lr + 29848: 4770 bx lr if (ipsr < 16) priority = 0; // could be non-zero - 2975e: 2a0f cmp r2, #15 - 29760: d9f7 bls.n 29752 + 2984a: 2a0f cmp r2, #15 + 2984c: d9f7 bls.n 2983e else priority = NVIC_GET_PRIORITY(ipsr - 16); - 29762: 4b05 ldr r3, [pc, #20] ; (29778 ) - 29764: 5c9b ldrb r3, [r3, r2] + 2984e: 4b05 ldr r3, [pc, #20] ; (29864 ) + 29850: 5c9b ldrb r3, [r3, r2] __asm__ volatile("mrs %0, basepri\n" : "=r" (basepri)::); - 29766: f3ef 8011 mrs r0, BASEPRI + 29852: f3ef 8011 mrs r0, BASEPRI if (basepri > 0 && basepri < priority) priority = basepri; - 2976a: 2800 cmp r0, #0 - 2976c: d1f4 bne.n 29758 - 2976e: 4618 mov r0, r3 + 29856: 2800 cmp r0, #0 + 29858: d1f4 bne.n 29844 + 2985a: 4618 mov r0, r3 return priority; - 29770: 4770 bx lr + 2985c: 4770 bx lr if (faultmask) return -1; - 29772: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 29776: e7f1 b.n 2975c - 29778: e000e3f0 .word 0xe000e3f0 + 2985e: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 29862: e7f1 b.n 29848 + 29864: e000e3f0 .word 0xe000e3f0 -0002977c : +00029868 : float base = (float)UART_CLOCK / (float)baud; - 2977c: ee07 1a90 vmov s15, r1 - 29780: ed9f 7a91 vldr s14, [pc, #580] ; 299c8 + 29868: ee07 1a90 vmov s15, r1 + 2986c: ed9f 7a91 vldr s14, [pc, #580] ; 29ab4 for (int osr=4; osr <= 32; osr++) { - 29784: 2104 movs r1, #4 + 29870: 2104 movs r1, #4 int divint = (int)(div + 0.5f); - 29786: eeb6 5a00 vmov.f32 s10, #96 ; 0x3f000000 0.5 + 29872: eeb6 5a00 vmov.f32 s10, #96 ; 0x3f000000 0.5 float base = (float)UART_CLOCK / (float)baud; - 2978a: eef8 7a67 vcvt.f32.u32 s15, s15 + 29876: eef8 7a67 vcvt.f32.u32 s15, s15 float besterr = 1e20; - 2978e: ed9f 6a8f vldr s12, [pc, #572] ; 299cc - 29792: f641 7cff movw ip, #8191 ; 0x1fff + 2987a: ed9f 6a8f vldr s12, [pc, #572] ; 29ab8 + 2987e: f641 7cff movw ip, #8191 ; 0x1fff float base = (float)UART_CLOCK / (float)baud; - 29796: eec7 5a27 vdiv.f32 s11, s14, s15 + 29882: eec7 5a27 vdiv.f32 s11, s14, s15 { - 2979a: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 29886: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} int bestosr = 4; - 2979e: 468e mov lr, r1 + 2988a: 468e mov lr, r1 int bestdiv = 1; - 297a0: 2401 movs r4, #1 + 2988c: 2401 movs r4, #1 float div = base / (float)osr; - 297a2: ee07 1a90 vmov s15, r1 - 297a6: eef8 7ae7 vcvt.f32.s32 s15, s15 - 297aa: ee85 7aa7 vdiv.f32 s14, s11, s15 + 2988e: ee07 1a90 vmov s15, r1 + 29892: eef8 7ae7 vcvt.f32.s32 s15, s15 + 29896: ee85 7aa7 vdiv.f32 s14, s11, s15 int divint = (int)(div + 0.5f); - 297ae: ee77 7a05 vadd.f32 s15, s14, s10 - 297b2: eefd 7ae7 vcvt.s32.f32 s15, s15 - 297b6: ee17 3a90 vmov r3, s15 - 297ba: 4563 cmp r3, ip - 297bc: bfa8 it ge - 297be: 4663 movge r3, ip - 297c0: 2b01 cmp r3, #1 - 297c2: bfb8 it lt - 297c4: 2301 movlt r3, #1 + 2989a: ee77 7a05 vadd.f32 s15, s14, s10 + 2989e: eefd 7ae7 vcvt.s32.f32 s15, s15 + 298a2: ee17 3a90 vmov r3, s15 + 298a6: 4563 cmp r3, ip + 298a8: bfa8 it ge + 298aa: 4663 movge r3, ip + 298ac: 2b01 cmp r3, #1 + 298ae: bfb8 it lt + 298b0: 2301 movlt r3, #1 float err = ((float)divint - div) / div; - 297c6: ee07 3a90 vmov s15, r3 - 297ca: eef8 6ae7 vcvt.f32.s32 s13, s15 - 297ce: ee76 6ac7 vsub.f32 s13, s13, s14 - 297d2: eec6 7a87 vdiv.f32 s15, s13, s14 + 298b2: ee07 3a90 vmov s15, r3 + 298b6: eef8 6ae7 vcvt.f32.s32 s13, s15 + 298ba: ee76 6ac7 vsub.f32 s13, s13, s14 + 298be: eec6 7a87 vdiv.f32 s15, s13, s14 if (err < 0.0f) err = -err; - 297d6: eef5 7ac0 vcmpe.f32 s15, #0.0 - 297da: eef1 fa10 vmrs APSR_nzcv, fpscr - 297de: bf48 it mi - 297e0: eef1 7a67 vnegmi.f32 s15, s15 + 298c2: eef5 7ac0 vcmpe.f32 s15, #0.0 + 298c6: eef1 fa10 vmrs APSR_nzcv, fpscr + 298ca: bf48 it mi + 298cc: eef1 7a67 vnegmi.f32 s15, s15 if (err <= besterr) { - 297e4: eef4 7ac6 vcmpe.f32 s15, s12 - 297e8: eef1 fa10 vmrs APSR_nzcv, fpscr - 297ec: d803 bhi.n 297f6 + 298d0: eef4 7ac6 vcmpe.f32 s15, s12 + 298d4: eef1 fa10 vmrs APSR_nzcv, fpscr + 298d8: d803 bhi.n 298e2 besterr = err; - 297ee: eeb0 6a67 vmov.f32 s12, s15 + 298da: eeb0 6a67 vmov.f32 s12, s15 if (err <= besterr) { - 297f2: 468e mov lr, r1 + 298de: 468e mov lr, r1 bestdiv = divint; - 297f4: 461c mov r4, r3 + 298e0: 461c mov r4, r3 for (int osr=4; osr <= 32; osr++) { - 297f6: 3101 adds r1, #1 - 297f8: 2921 cmp r1, #33 ; 0x21 - 297fa: d1d2 bne.n 297a2 + 298e2: 3101 adds r1, #1 + 298e4: 2921 cmp r1, #33 ; 0x21 + 298e6: d1d2 bne.n 2988e rx_buffer_head_ = 0; - 297fc: 2100 movs r1, #0 + 298e8: 2100 movs r1, #0 rts_low_watermark_ = rx_buffer_total_size_ - hardware->rts_low_watermark; - 297fe: 6943 ldr r3, [r0, #20] - 29800: f402 7500 and.w r5, r2, #512 ; 0x200 + 298ea: 6943 ldr r3, [r0, #20] + 298ec: f402 7500 and.w r5, r2, #512 ; 0x200 rx_buffer_head_ = 0; - 29804: f8a0 104a strh.w r1, [r0, #74] ; 0x4a + 298f0: f8a0 104a strh.w r1, [r0, #74] ; 0x4a rts_high_watermark_ = rx_buffer_total_size_ - hardware->rts_high_watermark; - 29808: f8b3 c05e ldrh.w ip, [r3, #94] ; 0x5e + 298f4: f8b3 c05e ldrh.w ip, [r3, #94] ; 0x5e half_duplex_mode_ = (format & SERIAL_HALF_DUPLEX) != 0; - 2980c: 428d cmp r5, r1 + 298f8: 428d cmp r5, r1 rx_buffer_tail_ = 0; - 2980e: f8a0 104c strh.w r1, [r0, #76] ; 0x4c + 298fa: f8a0 104c strh.w r1, [r0, #76] ; 0x4c rts_low_watermark_ = rx_buffer_total_size_ - hardware->rts_low_watermark; - 29812: f8b3 505c ldrh.w r5, [r3, #92] ; 0x5c + 298fe: f8b3 505c ldrh.w r5, [r3, #92] ; 0x5c tx_buffer_head_ = 0; - 29816: f8a0 1046 strh.w r1, [r0, #70] ; 0x46 + 29902: f8a0 1046 strh.w r1, [r0, #70] ; 0x46 tx_buffer_tail_ = 0; - 2981a: f8a0 1048 strh.w r1, [r0, #72] ; 0x48 + 29906: f8a0 1048 strh.w r1, [r0, #72] ; 0x48 transmitting_ = 0; - 2981e: f880 1044 strb.w r1, [r0, #68] ; 0x44 + 2990a: f880 1044 strb.w r1, [r0, #68] ; 0x44 rts_low_watermark_ = rx_buffer_total_size_ - hardware->rts_low_watermark; - 29822: 6b81 ldr r1, [r0, #56] ; 0x38 + 2990e: 6b81 ldr r1, [r0, #56] ; 0x38 hardware->ccm_register |= hardware->ccm_value; - 29824: 691e ldr r6, [r3, #16] + 29910: 691e ldr r6, [r3, #16] rts_low_watermark_ = rx_buffer_total_size_ - hardware->rts_low_watermark; - 29826: eba1 0505 sub.w r5, r1, r5 + 29912: eba1 0505 sub.w r5, r1, r5 rts_high_watermark_ = rx_buffer_total_size_ - hardware->rts_high_watermark; - 2982a: eba1 010c sub.w r1, r1, ip - 2982e: e9c0 510f strd r5, r1, [r0, #60] ; 0x3c + 29916: eba1 010c sub.w r1, r1, ip + 2991a: e9c0 510f strd r5, r1, [r0, #60] ; 0x3c hardware->ccm_register |= hardware->ccm_value; - 29832: 6831 ldr r1, [r6, #0] - 29834: 695d ldr r5, [r3, #20] - 29836: ea41 0105 orr.w r1, r1, r5 - 2983a: 6031 str r1, [r6, #0] + 2991e: 6831 ldr r1, [r6, #0] + 29920: 695d ldr r5, [r3, #20] + 29922: ea41 0105 orr.w r1, r1, r5 + 29926: 6031 str r1, [r6, #0] half_duplex_mode_ = (format & SERIAL_HALF_DUPLEX) != 0; - 2983c: bf14 ite ne - 2983e: 2101 movne r1, #1 - 29840: 2100 moveq r1, #0 - 29842: 7681 strb r1, [r0, #26] + 29928: bf14 ite ne + 2992a: 2101 movne r1, #1 + 2992c: 2100 moveq r1, #0 + 2992e: 7681 strb r1, [r0, #26] if (!half_duplex_mode_) { - 29844: f040 8091 bne.w 2996a + 29930: f040 8091 bne.w 29a56 *(portControlRegister(hardware->rx_pins[rx_pin_index_].pin)) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(3) | IOMUXC_PAD_HYS; - 29848: 7e05 ldrb r5, [r0, #24] - 2984a: f8df 8198 ldr.w r8, [pc, #408] ; 299e4 - 2984e: eb03 1c05 add.w ip, r3, r5, lsl #4 - 29852: 4e5f ldr r6, [pc, #380] ; (299d0 ) - 29854: f89c 5018 ldrb.w r5, [ip, #24] - 29858: eb08 1505 add.w r5, r8, r5, lsl #4 - 2985c: 68a9 ldr r1, [r5, #8] + 29934: 7e05 ldrb r5, [r0, #24] + 29936: f8df 8198 ldr.w r8, [pc, #408] ; 29ad0 + 2993a: eb03 1c05 add.w ip, r3, r5, lsl #4 + 2993e: 4e5f ldr r6, [pc, #380] ; (29abc ) + 29940: f89c 5018 ldrb.w r5, [ip, #24] + 29944: eb08 1505 add.w r5, r8, r5, lsl #4 + 29948: 68a9 ldr r1, [r5, #8] *(portConfigRegister(hardware->rx_pins[rx_pin_index_].pin)) = hardware->rx_pins[rx_pin_index_].mux_val; - 2985e: 686d ldr r5, [r5, #4] + 2994a: 686d ldr r5, [r5, #4] *(portControlRegister(hardware->rx_pins[rx_pin_index_].pin)) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(3) | IOMUXC_PAD_HYS; - 29860: 600e str r6, [r1, #0] + 2994c: 600e str r6, [r1, #0] *(portConfigRegister(hardware->rx_pins[rx_pin_index_].pin)) = hardware->rx_pins[rx_pin_index_].mux_val; - 29862: f8dc 601c ldr.w r6, [ip, #28] - 29866: 602e str r6, [r5, #0] + 2994e: f8dc 601c ldr.w r6, [ip, #28] + 29952: 602e str r6, [r5, #0] if (hardware->rx_pins[rx_pin_index_].select_input_register) { - 29868: f8dc 5020 ldr.w r5, [ip, #32] - 2986c: b115 cbz r5, 29874 + 29954: f8dc 5020 ldr.w r5, [ip, #32] + 29958: b115 cbz r5, 29960 *(hardware->rx_pins[rx_pin_index_].select_input_register) = hardware->rx_pins[rx_pin_index_].select_val; - 2986e: f8dc 6024 ldr.w r6, [ip, #36] ; 0x24 - 29872: 602e str r6, [r5, #0] + 2995a: f8dc 6024 ldr.w r6, [ip, #36] ; 0x24 + 2995e: 602e str r6, [r5, #0] *(portControlRegister(hardware->tx_pins[tx_pin_index_].pin)) = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3); - 29874: 7e45 ldrb r5, [r0, #25] - 29876: 27d9 movs r7, #217 ; 0xd9 - 29878: eb03 1505 add.w r5, r3, r5, lsl #4 - 2987c: f895 6038 ldrb.w r6, [r5, #56] ; 0x38 - 29880: eb08 1106 add.w r1, r8, r6, lsl #4 - 29884: 688e ldr r6, [r1, #8] + 29960: 7e45 ldrb r5, [r0, #25] + 29962: 27d9 movs r7, #217 ; 0xd9 + 29964: eb03 1505 add.w r5, r3, r5, lsl #4 + 29968: f895 6038 ldrb.w r6, [r5, #56] ; 0x38 + 2996c: eb08 1106 add.w r1, r8, r6, lsl #4 + 29970: 688e ldr r6, [r1, #8] *(portConfigRegister(hardware->tx_pins[tx_pin_index_].pin)) = hardware->tx_pins[tx_pin_index_].mux_val; - 29886: 6849 ldr r1, [r1, #4] + 29972: 6849 ldr r1, [r1, #4] *(portControlRegister(hardware->tx_pins[tx_pin_index_].pin)) = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3); - 29888: 6037 str r7, [r6, #0] + 29974: 6037 str r7, [r6, #0] *(portConfigRegister(hardware->tx_pins[tx_pin_index_].pin)) = hardware->tx_pins[tx_pin_index_].mux_val; - 2988a: 6bed ldr r5, [r5, #60] ; 0x3c - 2988c: 600d str r5, [r1, #0] + 29976: 6bed ldr r5, [r5, #60] ; 0x3c + 29978: 600d str r5, [r1, #0] if (hardware->tx_pins[tx_pin_index_].select_input_register) { - 2988e: 7e41 ldrb r1, [r0, #25] - 29890: eb03 1101 add.w r1, r3, r1, lsl #4 - 29894: 6c0d ldr r5, [r1, #64] ; 0x40 - 29896: b10d cbz r5, 2989c + 2997a: 7e41 ldrb r1, [r0, #25] + 2997c: eb03 1101 add.w r1, r3, r1, lsl #4 + 29980: 6c0d ldr r5, [r1, #64] ; 0x40 + 29982: b10d cbz r5, 29988 *(hardware->tx_pins[tx_pin_index_].select_input_register) = hardware->tx_pins[tx_pin_index_].select_val; - 29898: 6c49 ldr r1, [r1, #68] ; 0x44 - 2989a: 6029 str r1, [r5, #0] + 29984: 6c49 ldr r1, [r1, #68] ; 0x44 + 29986: 6029 str r1, [r5, #0] port->BAUD = LPUART_BAUD_OSR(bestosr - 1) | LPUART_BAUD_SBR(bestdiv) - 2989c: f10e 31ff add.w r1, lr, #4294967295 ; 0xffffffff + 29988: f10e 31ff add.w r1, lr, #4294967295 ; 0xffffffff | (bestosr <= 8 ? LPUART_BAUD_BOTHEDGE : 0); - 298a0: f1be 0f08 cmp.w lr, #8 + 2998c: f1be 0f08 cmp.w lr, #8 attachInterruptVector(hardware->irq, hardware->irq_handler); - 298a4: 685d ldr r5, [r3, #4] + 29990: 685d ldr r5, [r3, #4] port->PINCFG = 0; - 298a6: f04f 0600 mov.w r6, #0 + 29992: f04f 0600 mov.w r6, #0 | (bestosr <= 8 ? LPUART_BAUD_BOTHEDGE : 0); - 298aa: bfcc ite gt - 298ac: f04f 0e00 movgt.w lr, #0 - 298b0: f04f 0e01 movle.w lr, #1 + 29996: bfcc ite gt + 29998: f04f 0e00 movgt.w lr, #0 + 2999c: f04f 0e01 movle.w lr, #1 port->BAUD = LPUART_BAUD_OSR(bestosr - 1) | LPUART_BAUD_SBR(bestdiv) - 298b4: 0609 lsls r1, r1, #24 + 299a0: 0609 lsls r1, r1, #24 | (bestosr <= 8 ? LPUART_BAUD_BOTHEDGE : 0); - 298b6: ea44 444e orr.w r4, r4, lr, lsl #17 + 299a2: ea44 444e orr.w r4, r4, lr, lsl #17 port->BAUD = LPUART_BAUD_OSR(bestosr - 1) | LPUART_BAUD_SBR(bestdiv) - 298ba: f001 51f8 and.w r1, r1, #520093696 ; 0x1f000000 + 299a6: f001 51f8 and.w r1, r1, #520093696 ; 0x1f000000 | (bestosr <= 8 ? LPUART_BAUD_BOTHEDGE : 0); - 298be: 4321 orrs r1, r4 + 299aa: 4321 orrs r1, r4 static inline void attachInterruptVector(IRQ_NUMBER_t irq, void (*function)(void)) { _VectorsRam[irq + 16] = function; asm volatile("": : :"memory"); } - 298c0: 785c ldrb r4, [r3, #1] - 298c2: f104 0310 add.w r3, r4, #16 + 299ac: 785c ldrb r4, [r3, #1] + 299ae: f104 0310 add.w r3, r4, #16 port->BAUD = LPUART_BAUD_OSR(bestosr - 1) | LPUART_BAUD_SBR(bestdiv) - 298c6: 6904 ldr r4, [r0, #16] - 298c8: 6121 str r1, [r4, #16] - 298ca: 4942 ldr r1, [pc, #264] ; (299d4 ) + 299b2: 6904 ldr r4, [r0, #16] + 299b4: 6121 str r1, [r4, #16] + 299b6: 4942 ldr r1, [pc, #264] ; (29ac0 ) port->PINCFG = 0; - 298cc: 60e6 str r6, [r4, #12] - 298ce: f841 5023 str.w r5, [r1, r3, lsl #2] + 299b8: 60e6 str r6, [r4, #12] + 299ba: f841 5023 str.w r5, [r1, r3, lsl #2] NVIC_SET_PRIORITY(hardware->irq, hardware->irq_priority); // maybe should put into hardware... - 298d2: 6943 ldr r3, [r0, #20] + 299be: 6943 ldr r3, [r0, #20] NVIC_ENABLE_IRQ(hardware->irq); - 298d4: f04f 0c01 mov.w ip, #1 + 299c0: f04f 0c01 mov.w ip, #1 NVIC_SET_PRIORITY(hardware->irq, hardware->irq_priority); // maybe should put into hardware... - 298d8: 493f ldr r1, [pc, #252] ; (299d8 ) + 299c4: 493f ldr r1, [pc, #252] ; (29ac4 ) ctrl |= (format & (LPUART_CTRL_PT | LPUART_CTRL_PE) ); // configure parity - turn off PT, PE, M and configure PT, PE - 298da: f002 0503 and.w r5, r2, #3 + 299c6: f002 0503 and.w r5, r2, #3 NVIC_SET_PRIORITY(hardware->irq, hardware->irq_priority); // maybe should put into hardware... - 298de: 785c ldrb r4, [r3, #1] - 298e0: f893 305a ldrb.w r3, [r3, #90] ; 0x5a - 298e4: 5463 strb r3, [r4, r1] + 299ca: 785c ldrb r4, [r3, #1] + 299cc: f893 305a ldrb.w r3, [r3, #90] ; 0x5a + 299d0: 5463 strb r3, [r4, r1] NVIC_ENABLE_IRQ(hardware->irq); - 298e6: 6944 ldr r4, [r0, #20] - 298e8: 4b3c ldr r3, [pc, #240] ; (299dc ) - 298ea: 7861 ldrb r1, [r4, #1] - 298ec: eb03 1351 add.w r3, r3, r1, lsr #5 - 298f0: f001 011f and.w r1, r1, #31 - 298f4: 009b lsls r3, r3, #2 - 298f6: fa0c f101 lsl.w r1, ip, r1 - 298fa: 6019 str r1, [r3, #0] + 299d2: 6944 ldr r4, [r0, #20] + 299d4: 4b3c ldr r3, [pc, #240] ; (29ac8 ) + 299d6: 7861 ldrb r1, [r4, #1] + 299d8: eb03 1351 add.w r3, r3, r1, lsr #5 + 299dc: f001 011f and.w r1, r1, #31 + 299e0: 009b lsls r3, r3, #2 + 299e2: fa0c f101 lsl.w r1, ip, r1 + 299e6: 6019 str r1, [r3, #0] port->WATER = LPUART_WATER_RXWATER(rx_water) | LPUART_WATER_TXWATER(tx_water); - 298fc: f04f 1102 mov.w r1, #131074 ; 0x20002 - 29900: 6903 ldr r3, [r0, #16] - 29902: 62d9 str r1, [r3, #44] ; 0x2c + 299e8: f04f 1102 mov.w r1, #131074 ; 0x20002 + 299ec: 6903 ldr r3, [r0, #16] + 299ee: 62d9 str r1, [r3, #44] ; 0x2c port->FIFO |= LPUART_FIFO_TXFE | LPUART_FIFO_RXFE; - 29904: 6a99 ldr r1, [r3, #40] ; 0x28 - 29906: f041 0188 orr.w r1, r1, #136 ; 0x88 - 2990a: 6299 str r1, [r3, #40] ; 0x28 + 299f0: 6a99 ldr r1, [r3, #40] ; 0x28 + 299f2: f041 0188 orr.w r1, r1, #136 ; 0x88 + 299f6: 6299 str r1, [r3, #40] ; 0x28 if (format & 0x04) ctrl |= LPUART_CTRL_M; // 9 bits (might include parity) - 2990c: 0751 lsls r1, r2, #29 - 2990e: d429 bmi.n 29964 + 299f8: 0751 lsls r1, r2, #29 + 299fa: d429 bmi.n 29a50 ctrl |= (format & (LPUART_CTRL_PT | LPUART_CTRL_PE) ); // configure parity - turn off PT, PE, M and configure PT, PE - 29910: f445 1170 orr.w r1, r5, #3932160 ; 0x3c0000 + 299fc: f445 1170 orr.w r1, r5, #3932160 ; 0x3c0000 if ((format & 0x0F) == 0x04) ctrl |= LPUART_CTRL_R9T8; // 8N2 is 9 bit with 9th bit always 1 - 29914: f002 050f and.w r5, r2, #15 - 29918: 2d04 cmp r5, #4 + 29a00: f002 050f and.w r5, r2, #15 + 29a04: 2d04 cmp r5, #4 if (half_duplex_mode_) ctrl |= (LPUART_CTRL_LOOPS | LPUART_CTRL_RSRC); - 2991a: 7e85 ldrb r5, [r0, #26] + 29a06: 7e85 ldrb r5, [r0, #26] if ((format & 0x0F) == 0x04) ctrl |= LPUART_CTRL_R9T8; // 8N2 is 9 bit with 9th bit always 1 - 2991c: bf08 it eq - 2991e: f041 4180 orreq.w r1, r1, #1073741824 ; 0x40000000 + 29a08: bf08 it eq + 29a0a: f041 4180 orreq.w r1, r1, #1073741824 ; 0x40000000 if (format & 0x20) ctrl |= LPUART_CTRL_TXINV; // tx invert - 29922: 0697 lsls r7, r2, #26 - 29924: bf48 it mi - 29926: f041 5180 orrmi.w r1, r1, #268435456 ; 0x10000000 + 29a0e: 0697 lsls r7, r2, #26 + 29a10: bf48 it mi + 29a12: f041 5180 orrmi.w r1, r1, #268435456 ; 0x10000000 if (half_duplex_mode_) ctrl |= (LPUART_CTRL_LOOPS | LPUART_CTRL_RSRC); - 2992a: b10d cbz r5, 29930 - 2992c: f041 01a0 orr.w r1, r1, #160 ; 0xa0 + 29a16: b10d cbz r5, 29a1c + 29a18: f041 01a0 orr.w r1, r1, #160 ; 0xa0 if (format & 0x08) port->BAUD |= LPUART_BAUD_M10; - 29930: 0716 lsls r6, r2, #28 + 29a1c: 0716 lsls r6, r2, #28 port->CTRL = ctrl; - 29932: 6199 str r1, [r3, #24] + 29a1e: 6199 str r1, [r3, #24] if (format & 0x08) port->BAUD |= LPUART_BAUD_M10; - 29934: d503 bpl.n 2993e - 29936: 6919 ldr r1, [r3, #16] - 29938: f041 5100 orr.w r1, r1, #536870912 ; 0x20000000 - 2993c: 6119 str r1, [r3, #16] + 29a20: d503 bpl.n 29a2a + 29a22: 6919 ldr r1, [r3, #16] + 29a24: f041 5100 orr.w r1, r1, #536870912 ; 0x20000000 + 29a28: 6119 str r1, [r3, #16] uint32_t c = port->STAT & ~LPUART_STAT_RXINV; - 2993e: 6959 ldr r1, [r3, #20] + 29a2a: 6959 ldr r1, [r3, #20] if (format & 0x10) c |= LPUART_STAT_RXINV; // rx invert - 29940: 06d5 lsls r5, r2, #27 + 29a2c: 06d5 lsls r5, r2, #27 uint32_t c = port->STAT & ~LPUART_STAT_RXINV; - 29942: f021 5180 bic.w r1, r1, #268435456 ; 0x10000000 + 29a2e: f021 5180 bic.w r1, r1, #268435456 ; 0x10000000 if (format & 0x10) c |= LPUART_STAT_RXINV; // rx invert - 29946: bf48 it mi - 29948: f041 5180 orrmi.w r1, r1, #268435456 ; 0x10000000 + 29a32: bf48 it mi + 29a34: f041 5180 orrmi.w r1, r1, #268435456 ; 0x10000000 if ( format & 0x100) port->BAUD |= LPUART_BAUD_SBNS; - 2994c: 05d2 lsls r2, r2, #23 + 29a38: 05d2 lsls r2, r2, #23 port->STAT = c; - 2994e: 6159 str r1, [r3, #20] + 29a3a: 6159 str r1, [r3, #20] if ( format & 0x100) port->BAUD |= LPUART_BAUD_SBNS; - 29950: d503 bpl.n 2995a - 29952: 691a ldr r2, [r3, #16] - 29954: f442 5200 orr.w r2, r2, #8192 ; 0x2000 - 29958: 611a str r2, [r3, #16] + 29a3c: d503 bpl.n 29a46 + 29a3e: 691a ldr r2, [r3, #16] + 29a40: f442 5200 orr.w r2, r2, #8192 ; 0x2000 + 29a44: 611a str r2, [r3, #16] if (!(*hardware->serial_event_handler_default)) addToSerialEventsList(); // Enable the processing of serialEvent for this object - 2995a: 68e3 ldr r3, [r4, #12] - 2995c: 781b ldrb r3, [r3, #0] - 2995e: b1a3 cbz r3, 2998a + 29a46: 68e3 ldr r3, [r4, #12] + 29a48: 781b ldrb r3, [r3, #0] + 29a4a: b1a3 cbz r3, 29a76 }; - 29960: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 29a4c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if (format & 0x04) ctrl |= LPUART_CTRL_M; // 9 bits (might include parity) - 29964: 491e ldr r1, [pc, #120] ; (299e0 ) - 29966: 4329 orrs r1, r5 - 29968: e7d4 b.n 29914 + 29a50: 491e ldr r1, [pc, #120] ; (29acc ) + 29a52: 4329 orrs r1, r5 + 29a54: e7d4 b.n 29a00 *(portControlRegister(hardware->tx_pins[tx_pin_index_].pin)) = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3) - 2996a: 7e41 ldrb r1, [r0, #25] - 2996c: f24f 07d9 movw r7, #61657 ; 0xf0d9 - 29970: 4d1c ldr r5, [pc, #112] ; (299e4 ) - 29972: eb03 1101 add.w r1, r3, r1, lsl #4 - 29976: f891 6038 ldrb.w r6, [r1, #56] ; 0x38 - 2997a: eb05 1506 add.w r5, r5, r6, lsl #4 - 2997e: 68ae ldr r6, [r5, #8] + 29a56: 7e41 ldrb r1, [r0, #25] + 29a58: f24f 07d9 movw r7, #61657 ; 0xf0d9 + 29a5c: 4d1c ldr r5, [pc, #112] ; (29ad0 ) + 29a5e: eb03 1101 add.w r1, r3, r1, lsl #4 + 29a62: f891 6038 ldrb.w r6, [r1, #56] ; 0x38 + 29a66: eb05 1506 add.w r5, r5, r6, lsl #4 + 29a6a: 68ae ldr r6, [r5, #8] *(portConfigRegister(hardware->tx_pins[tx_pin_index_].pin)) = hardware->tx_pins[tx_pin_index_].mux_val; - 29980: 686d ldr r5, [r5, #4] + 29a6c: 686d ldr r5, [r5, #4] *(portControlRegister(hardware->tx_pins[tx_pin_index_].pin)) = IOMUXC_PAD_SRE | IOMUXC_PAD_DSE(3) | IOMUXC_PAD_SPEED(3) - 29982: 6037 str r7, [r6, #0] + 29a6e: 6037 str r7, [r6, #0] *(portConfigRegister(hardware->tx_pins[tx_pin_index_].pin)) = hardware->tx_pins[tx_pin_index_].mux_val; - 29984: 6bc9 ldr r1, [r1, #60] ; 0x3c - 29986: 6029 str r1, [r5, #0] - 29988: e781 b.n 2988e + 29a70: 6bc9 ldr r1, [r1, #60] ; 0x3c + 29a72: 6029 str r1, [r5, #0] + 29a74: e781 b.n 2997a //digitalWrite(4, LOW); } void HardwareSerial::addToSerialEventsList() { for (uint8_t i = 0; i < s_count_serials_with_serial_events; i++) { - 2998a: 4e17 ldr r6, [pc, #92] ; (299e8 ) - 2998c: 7834 ldrb r4, [r6, #0] - 2998e: b1bc cbz r4, 299c0 - 29990: 1e61 subs r1, r4, #1 - 29992: 4d16 ldr r5, [pc, #88] ; (299ec ) - 29994: b2c9 uxtb r1, r1 - 29996: 1f2b subs r3, r5, #4 - 29998: eb05 0181 add.w r1, r5, r1, lsl #2 + 29a76: 4e17 ldr r6, [pc, #92] ; (29ad4 ) + 29a78: 7834 ldrb r4, [r6, #0] + 29a7a: b1bc cbz r4, 29aac + 29a7c: 1e61 subs r1, r4, #1 + 29a7e: 4d16 ldr r5, [pc, #88] ; (29ad8 ) + 29a80: b2c9 uxtb r1, r1 + 29a82: 1f2b subs r3, r5, #4 + 29a84: eb05 0181 add.w r1, r5, r1, lsl #2 if (s_serials_with_serial_events[i] == this) return; // already in the list. - 2999c: f853 2f04 ldr.w r2, [r3, #4]! - 299a0: 4290 cmp r0, r2 - 299a2: d0dd beq.n 29960 + 29a88: f853 2f04 ldr.w r2, [r3, #4]! + 29a8c: 4290 cmp r0, r2 + 29a8e: d0dd beq.n 29a4c for (uint8_t i = 0; i < s_count_serials_with_serial_events; i++) { - 299a4: 4299 cmp r1, r3 - 299a6: d1f9 bne.n 2999c + 29a90: 4299 cmp r1, r3 + 29a92: d1f9 bne.n 29a88 } s_serials_with_serial_events[s_count_serials_with_serial_events++] = this; - 299a8: 1c63 adds r3, r4, #1 - 299aa: b2db uxtb r3, r3 + 29a94: 1c63 adds r3, r4, #1 + 29a96: b2db uxtb r3, r3 yield_active_check_flags |= YIELD_CHECK_HARDWARE_SERIAL; - 299ac: 4a10 ldr r2, [pc, #64] ; (299f0 ) + 29a98: 4a10 ldr r2, [pc, #64] ; (29adc ) s_serials_with_serial_events[s_count_serials_with_serial_events++] = this; - 299ae: 7033 strb r3, [r6, #0] + 29a9a: 7033 strb r3, [r6, #0] yield_active_check_flags |= YIELD_CHECK_HARDWARE_SERIAL; - 299b0: 7813 ldrb r3, [r2, #0] + 29a9c: 7813 ldrb r3, [r2, #0] s_serials_with_serial_events[s_count_serials_with_serial_events++] = this; - 299b2: f845 0024 str.w r0, [r5, r4, lsl #2] + 29a9e: f845 0024 str.w r0, [r5, r4, lsl #2] yield_active_check_flags |= YIELD_CHECK_HARDWARE_SERIAL; - 299b6: f043 0302 orr.w r3, r3, #2 - 299ba: 7013 strb r3, [r2, #0] + 29aa2: f043 0302 orr.w r3, r3, #2 + 29aa6: 7013 strb r3, [r2, #0] }; - 299bc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 29aa8: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} for (uint8_t i = 0; i < s_count_serials_with_serial_events; i++) { - 299c0: 2301 movs r3, #1 - 299c2: 4d0a ldr r5, [pc, #40] ; (299ec ) - 299c4: e7f2 b.n 299ac - 299c6: bf00 nop - 299c8: 4bb71b00 .word 0x4bb71b00 - 299cc: 60ad78ec .word 0x60ad78ec - 299d0: 0001f038 .word 0x0001f038 - 299d4: 20005400 .word 0x20005400 - 299d8: e000e400 .word 0xe000e400 - 299dc: 38003840 .word 0x38003840 - 299e0: 003c0010 .word 0x003c0010 - 299e4: 200044b4 .word 0x200044b4 - 299e8: 2000bc7c .word 0x2000bc7c - 299ec: 2000b704 .word 0x2000b704 - 299f0: 20005217 .word 0x20005217 - -000299f4 : + 29aac: 2301 movs r3, #1 + 29aae: 4d0a ldr r5, [pc, #40] ; (29ad8 ) + 29ab0: e7f2 b.n 29a98 + 29ab2: bf00 nop + 29ab4: 4bb71b00 .word 0x4bb71b00 + 29ab8: 60ad78ec .word 0x60ad78ec + 29abc: 0001f038 .word 0x0001f038 + 29ac0: 20005400 .word 0x20005400 + 29ac4: e000e400 .word 0xe000e400 + 29ac8: 38003840 .word 0x38003840 + 29acc: 003c0010 .word 0x003c0010 + 29ad0: 20004574 .word 0x20004574 + 29ad4: 2000bc9c .word 0x2000bc9c + 29ad8: 2000b724 .word 0x2000b724 + 29adc: 200052d7 .word 0x200052d7 + +00029ae0 : { - 299f4: b5f8 push {r3, r4, r5, r6, r7, lr} + 29ae0: b5f8 push {r3, r4, r5, r6, r7, lr} if (transmit_pin_baseReg_) DIRECT_WRITE_HIGH(transmit_pin_baseReg_, transmit_pin_bitmask_); - 299f6: 6d03 ldr r3, [r0, #80] ; 0x50 + 29ae2: 6d03 ldr r3, [r0, #80] ; 0x50 { - 299f8: 4604 mov r4, r0 - 299fa: 460e mov r6, r1 + 29ae4: 4604 mov r4, r0 + 29ae6: 460e mov r6, r1 if (transmit_pin_baseReg_) DIRECT_WRITE_HIGH(transmit_pin_baseReg_, transmit_pin_bitmask_); - 299fc: b113 cbz r3, 29a04 - 299fe: 6d42 ldr r2, [r0, #84] ; 0x54 - 29a00: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 29ae8: b113 cbz r3, 29af0 + 29aea: 6d42 ldr r2, [r0, #84] ; 0x54 + 29aec: f8c3 2084 str.w r2, [r3, #132] ; 0x84 if(half_duplex_mode_) { - 29a04: 7ea3 ldrb r3, [r4, #26] - 29a06: b133 cbz r3, 29a16 + 29af0: 7ea3 ldrb r3, [r4, #26] + 29af2: b133 cbz r3, 29b02 __disable_irq(); - 29a08: b672 cpsid i + 29af4: b672 cpsid i port->CTRL |= LPUART_CTRL_TXDIR; - 29a0a: 6922 ldr r2, [r4, #16] - 29a0c: 6993 ldr r3, [r2, #24] - 29a0e: f043 5300 orr.w r3, r3, #536870912 ; 0x20000000 - 29a12: 6193 str r3, [r2, #24] + 29af6: 6922 ldr r2, [r4, #16] + 29af8: 6993 ldr r3, [r2, #24] + 29afa: f043 5300 orr.w r3, r3, #536870912 ; 0x20000000 + 29afe: 6193 str r3, [r2, #24] __enable_irq(); - 29a14: b662 cpsie i + 29b00: b662 cpsie i head = tx_buffer_head_; - 29a16: f8b4 5046 ldrh.w r5, [r4, #70] ; 0x46 + 29b02: f8b4 5046 ldrh.w r5, [r4, #70] ; 0x46 if (++head >= tx_buffer_total_size_) head = 0; - 29a1a: 6b63 ldr r3, [r4, #52] ; 0x34 + 29b06: 6b63 ldr r3, [r4, #52] ; 0x34 head = tx_buffer_head_; - 29a1c: b2ad uxth r5, r5 + 29b08: b2ad uxth r5, r5 if (++head >= tx_buffer_total_size_) head = 0; - 29a1e: 3501 adds r5, #1 - 29a20: 42ab cmp r3, r5 - 29a22: d84c bhi.n 29abe - 29a24: 2700 movs r7, #0 - 29a26: 463d mov r5, r7 + 29b0a: 3501 adds r5, #1 + 29b0c: 42ab cmp r3, r5 + 29b0e: d84c bhi.n 29baa + 29b10: 2700 movs r7, #0 + 29b12: 463d mov r5, r7 while (tx_buffer_tail_ == head) { - 29a28: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 - 29a2c: b29b uxth r3, r3 - 29a2e: 429d cmp r5, r3 - 29a30: d01a beq.n 29a68 - 29a32: e029 b.n 29a88 + 29b14: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 + 29b18: b29b uxth r3, r3 + 29b1a: 429d cmp r5, r3 + 29b1c: d01a beq.n 29b54 + 29b1e: e029 b.n 29b74 if ((port->STAT & LPUART_STAT_TDRE)) { - 29a34: 6921 ldr r1, [r4, #16] - 29a36: 694b ldr r3, [r1, #20] - 29a38: 021b lsls r3, r3, #8 - 29a3a: d510 bpl.n 29a5e + 29b20: 6921 ldr r1, [r4, #16] + 29b22: 694b ldr r3, [r1, #20] + 29b24: 021b lsls r3, r3, #8 + 29b26: d510 bpl.n 29b4a uint32_t tail = tx_buffer_tail_; - 29a3c: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 + 29b28: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 if (++tail >= tx_buffer_total_size_) tail = 0; - 29a40: 6b62 ldr r2, [r4, #52] ; 0x34 + 29b2c: 6b62 ldr r2, [r4, #52] ; 0x34 uint32_t tail = tx_buffer_tail_; - 29a42: b29b uxth r3, r3 + 29b2e: b29b uxth r3, r3 if (++tail >= tx_buffer_total_size_) tail = 0; - 29a44: 3301 adds r3, #1 - 29a46: 429a cmp r2, r3 - 29a48: d936 bls.n 29ab8 + 29b30: 3301 adds r3, #1 + 29b32: 429a cmp r2, r3 + 29b34: d936 bls.n 29ba4 tx_buffer_tail_ = tail; - 29a4a: b29a uxth r2, r3 + 29b36: b29a uxth r2, r3 if (tail < tx_buffer_size_) { - 29a4c: 6ae0 ldr r0, [r4, #44] ; 0x2c - 29a4e: 4298 cmp r0, r3 - 29a50: d92d bls.n 29aae + 29b38: 6ae0 ldr r0, [r4, #44] ; 0x2c + 29b3a: 4298 cmp r0, r3 + 29b3c: d92d bls.n 29b9a n = tx_buffer_[tail]; - 29a52: 69e0 ldr r0, [r4, #28] - 29a54: 5cc3 ldrb r3, [r0, r3] - 29a56: b2db uxtb r3, r3 + 29b3e: 69e0 ldr r0, [r4, #28] + 29b40: 5cc3 ldrb r3, [r0, r3] + 29b42: b2db uxtb r3, r3 port->DATA = n; - 29a58: 61cb str r3, [r1, #28] + 29b44: 61cb str r3, [r1, #28] tx_buffer_tail_ = tail; - 29a5a: f8a4 2048 strh.w r2, [r4, #72] ; 0x48 + 29b46: f8a4 2048 strh.w r2, [r4, #72] ; 0x48 while (tx_buffer_tail_ == head) { - 29a5e: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 - 29a62: b29b uxth r3, r3 - 29a64: 42ab cmp r3, r5 - 29a66: d10f bne.n 29a88 + 29b4a: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 + 29b4e: b29b uxth r3, r3 + 29b50: 42ab cmp r3, r5 + 29b52: d10f bne.n 29b74 int priority = nvic_execution_priority(); - 29a68: f7ff fe68 bl 2973c + 29b54: f7ff fe68 bl 29828 if (priority <= hardware->irq_priority) { - 29a6c: 6963 ldr r3, [r4, #20] - 29a6e: f8b3 305a ldrh.w r3, [r3, #90] ; 0x5a - 29a72: 4283 cmp r3, r0 - 29a74: dade bge.n 29a34 + 29b58: 6963 ldr r3, [r4, #20] + 29b5a: f8b3 305a ldrh.w r3, [r3, #90] ; 0x5a + 29b5e: 4283 cmp r3, r0 + 29b60: dade bge.n 29b20 } else if (priority >= 256) - 29a76: 28ff cmp r0, #255 ; 0xff - 29a78: ddf1 ble.n 29a5e + 29b62: 28ff cmp r0, #255 ; 0xff + 29b64: ddf1 ble.n 29b4a yield(); // wait - 29a7a: f002 fd9f bl 2c5bc + 29b66: f002 fd9d bl 2c6a4 while (tx_buffer_tail_ == head) { - 29a7e: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 - 29a82: b29b uxth r3, r3 - 29a84: 42ab cmp r3, r5 - 29a86: d0ef beq.n 29a68 + 29b6a: f8b4 3048 ldrh.w r3, [r4, #72] ; 0x48 + 29b6e: b29b uxth r3, r3 + 29b70: 42ab cmp r3, r5 + 29b72: d0ef beq.n 29b54 if (head < tx_buffer_size_) { - 29a88: 6ae3 ldr r3, [r4, #44] ; 0x2c - 29a8a: 42ab cmp r3, r5 - 29a8c: d919 bls.n 29ac2 + 29b74: 6ae3 ldr r3, [r4, #44] ; 0x2c + 29b76: 42ab cmp r3, r5 + 29b78: d919 bls.n 29bae tx_buffer_[head] = c; - 29a8e: 69e3 ldr r3, [r4, #28] - 29a90: b2f6 uxtb r6, r6 - 29a92: 555e strb r6, [r3, r5] + 29b7a: 69e3 ldr r3, [r4, #28] + 29b7c: b2f6 uxtb r6, r6 + 29b7e: 555e strb r6, [r3, r5] __disable_irq(); - 29a94: b672 cpsid i + 29b80: b672 cpsid i transmitting_ = 1; - 29a96: 2001 movs r0, #1 + 29b82: 2001 movs r0, #1 port->CTRL |= LPUART_CTRL_TIE; // (may need to handle this issue)BITBAND_SET_BIT(LPUART0_CTRL, TIE_BIT); - 29a98: 6922 ldr r2, [r4, #16] + 29b84: 6922 ldr r2, [r4, #16] transmitting_ = 1; - 29a9a: f884 0044 strb.w r0, [r4, #68] ; 0x44 + 29b86: f884 0044 strb.w r0, [r4, #68] ; 0x44 tx_buffer_head_ = head; - 29a9e: f8a4 7046 strh.w r7, [r4, #70] ; 0x46 + 29b8a: f8a4 7046 strh.w r7, [r4, #70] ; 0x46 port->CTRL |= LPUART_CTRL_TIE; // (may need to handle this issue)BITBAND_SET_BIT(LPUART0_CTRL, TIE_BIT); - 29aa2: 6993 ldr r3, [r2, #24] - 29aa4: f443 0300 orr.w r3, r3, #8388608 ; 0x800000 - 29aa8: 6193 str r3, [r2, #24] + 29b8e: 6993 ldr r3, [r2, #24] + 29b90: f443 0300 orr.w r3, r3, #8388608 ; 0x800000 + 29b94: 6193 str r3, [r2, #24] __enable_irq(); - 29aaa: b662 cpsie i + 29b96: b662 cpsie i } - 29aac: bdf8 pop {r3, r4, r5, r6, r7, pc} + 29b98: bdf8 pop {r3, r4, r5, r6, r7, pc} n = tx_buffer_storage_[tail-tx_buffer_size_]; - 29aae: 1a1b subs r3, r3, r0 - 29ab0: 6aa0 ldr r0, [r4, #40] ; 0x28 - 29ab2: 5cc3 ldrb r3, [r0, r3] - 29ab4: b2db uxtb r3, r3 - 29ab6: e7cf b.n 29a58 - 29ab8: 2200 movs r2, #0 + 29b9a: 1a1b subs r3, r3, r0 + 29b9c: 6aa0 ldr r0, [r4, #40] ; 0x28 + 29b9e: 5cc3 ldrb r3, [r0, r3] + 29ba0: b2db uxtb r3, r3 + 29ba2: e7cf b.n 29b44 + 29ba4: 2200 movs r2, #0 if (++tail >= tx_buffer_total_size_) tail = 0; - 29aba: 4613 mov r3, r2 - 29abc: e7c6 b.n 29a4c + 29ba6: 4613 mov r3, r2 + 29ba8: e7c6 b.n 29b38 tx_buffer_head_ = head; - 29abe: b2af uxth r7, r5 - 29ac0: e7b2 b.n 29a28 + 29baa: b2af uxth r7, r5 + 29bac: e7b2 b.n 29b14 tx_buffer_storage_[head - tx_buffer_size_] = c; - 29ac2: 1aed subs r5, r5, r3 - 29ac4: b2f6 uxtb r6, r6 - 29ac6: 6aa3 ldr r3, [r4, #40] ; 0x28 - 29ac8: 555e strb r6, [r3, r5] - 29aca: e7e3 b.n 29a94 + 29bae: 1aed subs r5, r5, r3 + 29bb0: b2f6 uxtb r6, r6 + 29bb2: 6aa3 ldr r3, [r4, #40] ; 0x28 + 29bb4: 555e strb r6, [r3, r5] + 29bb6: e7e3 b.n 29b80 -00029acc : +00029bb8 : return write9bit(c); - 29acc: f7ff bf92 b.w 299f4 + 29bb8: f7ff bf92 b.w 29ae0 -00029ad0 : +00029bbc : if (port->STAT & (LPUART_STAT_RDRF | LPUART_STAT_IDLE)) { - 29ad0: 6902 ldr r2, [r0, #16] - 29ad2: 6953 ldr r3, [r2, #20] - 29ad4: f413 1f40 tst.w r3, #3145728 ; 0x300000 + 29bbc: 6902 ldr r2, [r0, #16] + 29bbe: 6953 ldr r3, [r2, #20] + 29bc0: f413 1f40 tst.w r3, #3145728 ; 0x300000 { - 29ad8: b570 push {r4, r5, r6, lr} + 29bc4: b570 push {r4, r5, r6, lr} if (port->STAT & (LPUART_STAT_RDRF | LPUART_STAT_IDLE)) { - 29ada: 4615 mov r5, r2 - 29adc: d047 beq.n 29b6e + 29bc6: 4615 mov r5, r2 + 29bc8: d047 beq.n 29c5a uint8_t avail = (port->WATER >> 24) & 0x7; - 29ade: 6ad3 ldr r3, [r2, #44] ; 0x2c + 29bca: 6ad3 ldr r3, [r2, #44] ; 0x2c if (avail) { - 29ae0: f013 6fe0 tst.w r3, #117440512 ; 0x7000000 + 29bcc: f013 6fe0 tst.w r3, #117440512 ; 0x7000000 uint8_t avail = (port->WATER >> 24) & 0x7; - 29ae4: f3c3 6e02 ubfx lr, r3, #24, #3 + 29bd0: f3c3 6e02 ubfx lr, r3, #24, #3 if (avail) { - 29ae8: d03e beq.n 29b68 + 29bd4: d03e beq.n 29c54 head = rx_buffer_head_; - 29aea: f8b0 404a ldrh.w r4, [r0, #74] ; 0x4a + 29bd6: f8b0 404a ldrh.w r4, [r0, #74] ; 0x4a tail = rx_buffer_tail_; - 29aee: f8b0 504c ldrh.w r5, [r0, #76] ; 0x4c + 29bda: f8b0 504c ldrh.w r5, [r0, #76] ; 0x4c head = rx_buffer_head_; - 29af2: b2a4 uxth r4, r4 + 29bde: b2a4 uxth r4, r4 tail = rx_buffer_tail_; - 29af4: b2ad uxth r5, r5 - 29af6: e008 b.n 29b0a + 29be0: b2ad uxth r5, r5 + 29be2: e008 b.n 29bf6 rx_buffer_[head] = n; - 29af8: 6a02 ldr r2, [r0, #32] - 29afa: f802 c003 strb.w ip, [r2, r3] - 29afe: 6902 ldr r2, [r0, #16] + 29be4: 6a02 ldr r2, [r0, #32] + 29be6: f802 c003 strb.w ip, [r2, r3] + 29bea: 6902 ldr r2, [r0, #16] } while (--avail > 0) ; - 29b00: f10e 33ff add.w r3, lr, #4294967295 ; 0xffffffff - 29b04: f013 0eff ands.w lr, r3, #255 ; 0xff - 29b08: d01e beq.n 29b48 + 29bec: f10e 33ff add.w r3, lr, #4294967295 ; 0xffffffff + 29bf0: f013 0eff ands.w lr, r3, #255 ; 0xff + 29bf4: d01e beq.n 29c34 n = port->DATA & 0x3ff; // Use only up to 10 bits of data - 29b0a: 69d1 ldr r1, [r2, #28] + 29bf6: 69d1 ldr r1, [r2, #28] newhead = head + 1; - 29b0c: 1c63 adds r3, r4, #1 + 29bf8: 1c63 adds r3, r4, #1 if (newhead != rx_buffer_tail_) { - 29b0e: f8b0 c04c ldrh.w ip, [r0, #76] ; 0x4c + 29bfa: f8b0 c04c ldrh.w ip, [r0, #76] ; 0x4c if (newhead >= rx_buffer_total_size_) newhead = 0; - 29b12: 6b86 ldr r6, [r0, #56] ; 0x38 + 29bfe: 6b86 ldr r6, [r0, #56] ; 0x38 n = port->DATA & 0x3ff; // Use only up to 10 bits of data - 29b14: f3c1 0109 ubfx r1, r1, #0, #10 + 29c00: f3c1 0109 ubfx r1, r1, #0, #10 if (newhead != rx_buffer_tail_) { - 29b18: fa1f fc8c uxth.w ip, ip + 29c04: fa1f fc8c uxth.w ip, ip if (newhead >= rx_buffer_total_size_) newhead = 0; - 29b1c: 429e cmp r6, r3 - 29b1e: bf98 it ls - 29b20: 2300 movls r3, #0 + 29c08: 429e cmp r6, r3 + 29c0a: bf98 it ls + 29c0c: 2300 movls r3, #0 if (newhead != rx_buffer_tail_) { - 29b22: 459c cmp ip, r3 - 29b24: d0ec beq.n 29b00 + 29c0e: 459c cmp ip, r3 + 29c10: d0ec beq.n 29bec if (newhead < rx_buffer_size_) { - 29b26: 6b02 ldr r2, [r0, #48] ; 0x30 + 29c12: 6b02 ldr r2, [r0, #48] ; 0x30 rx_buffer_storage_[head-rx_buffer_size_] = n; - 29b28: fa5f fc81 uxtb.w ip, r1 - 29b2c: 461c mov r4, r3 + 29c14: fa5f fc81 uxtb.w ip, r1 + 29c18: 461c mov r4, r3 if (newhead < rx_buffer_size_) { - 29b2e: 429a cmp r2, r3 + 29c1a: 429a cmp r2, r3 rx_buffer_storage_[head-rx_buffer_size_] = n; - 29b30: eba3 0602 sub.w r6, r3, r2 + 29c1c: eba3 0602 sub.w r6, r3, r2 if (newhead < rx_buffer_size_) { - 29b34: d8e0 bhi.n 29af8 + 29c20: d8e0 bhi.n 29be4 rx_buffer_storage_[head-rx_buffer_size_] = n; - 29b36: 6a43 ldr r3, [r0, #36] ; 0x24 - 29b38: f803 c006 strb.w ip, [r3, r6] + 29c22: 6a43 ldr r3, [r0, #36] ; 0x24 + 29c24: f803 c006 strb.w ip, [r3, r6] } while (--avail > 0) ; - 29b3c: f10e 33ff add.w r3, lr, #4294967295 ; 0xffffffff - 29b40: 6902 ldr r2, [r0, #16] - 29b42: f013 0eff ands.w lr, r3, #255 ; 0xff - 29b46: d1e0 bne.n 29b0a + 29c28: f10e 33ff add.w r3, lr, #4294967295 ; 0xffffffff + 29c2c: 6902 ldr r2, [r0, #16] + 29c2e: f013 0eff ands.w lr, r3, #255 ; 0xff + 29c32: d1e0 bne.n 29bf6 rx_buffer_head_ = head; - 29b48: b2a3 uxth r3, r4 - 29b4a: f8a0 304a strh.w r3, [r0, #74] ; 0x4a + 29c34: b2a3 uxth r3, r4 + 29c36: f8a0 304a strh.w r3, [r0, #74] ; 0x4a if (rts_pin_baseReg_) { - 29b4e: 6d83 ldr r3, [r0, #88] ; 0x58 - 29b50: 2b00 cmp r3, #0 - 29b52: d05a beq.n 29c0a + 29c3a: 6d83 ldr r3, [r0, #88] ; 0x58 + 29c3c: 2b00 cmp r3, #0 + 29c3e: d05a beq.n 29cf6 if (head >= tail) avail = head - tail; - 29b54: 42ac cmp r4, r5 - 29b56: d35d bcc.n 29c14 - 29b58: 1b64 subs r4, r4, r5 + 29c40: 42ac cmp r4, r5 + 29c42: d35d bcc.n 29d00 + 29c44: 1b64 subs r4, r4, r5 if (avail >= rts_high_watermark_) rts_deassert(); - 29b5a: 6c01 ldr r1, [r0, #64] ; 0x40 - 29b5c: 42a1 cmp r1, r4 - 29b5e: d854 bhi.n 29c0a + 29c46: 6c01 ldr r1, [r0, #64] ; 0x40 + 29c48: 42a1 cmp r1, r4 + 29c4a: d854 bhi.n 29cf6 DIRECT_WRITE_HIGH(rts_pin_baseReg_, rts_pin_bitmask_); - 29b60: 6dc1 ldr r1, [r0, #92] ; 0x5c + 29c4c: 6dc1 ldr r1, [r0, #92] ; 0x5c if (port->STAT & LPUART_STAT_IDLE) { - 29b62: 4615 mov r5, r2 + 29c4e: 4615 mov r5, r2 DIRECT_WRITE_HIGH(rts_pin_baseReg_, rts_pin_bitmask_); - 29b64: f8c3 1084 str.w r1, [r3, #132] ; 0x84 + 29c50: f8c3 1084 str.w r1, [r3, #132] ; 0x84 if (port->STAT & LPUART_STAT_IDLE) { - 29b68: 6953 ldr r3, [r2, #20] - 29b6a: 02dc lsls r4, r3, #11 - 29b6c: d448 bmi.n 29c00 + 29c54: 6953 ldr r3, [r2, #20] + 29c56: 02dc lsls r4, r3, #11 + 29c58: d448 bmi.n 29cec ctrl = port->CTRL; - 29b6e: 6996 ldr r6, [r2, #24] + 29c5a: 6996 ldr r6, [r2, #24] if ((ctrl & LPUART_CTRL_TIE) && (port->STAT & LPUART_STAT_TDRE)) - 29b70: 0231 lsls r1, r6, #8 - 29b72: d529 bpl.n 29bc8 - 29b74: 6953 ldr r3, [r2, #20] - 29b76: 021b lsls r3, r3, #8 - 29b78: d526 bpl.n 29bc8 + 29c5c: 0231 lsls r1, r6, #8 + 29c5e: d529 bpl.n 29cb4 + 29c60: 6953 ldr r3, [r2, #20] + 29c62: 021b lsls r3, r3, #8 + 29c64: d526 bpl.n 29cb4 head = tx_buffer_head_; - 29b7a: f8b0 c046 ldrh.w ip, [r0, #70] ; 0x46 + 29c66: f8b0 c046 ldrh.w ip, [r0, #70] ; 0x46 tail = tx_buffer_tail_; - 29b7e: f8b0 3048 ldrh.w r3, [r0, #72] ; 0x48 + 29c6a: f8b0 3048 ldrh.w r3, [r0, #72] ; 0x48 head = tx_buffer_head_; - 29b82: fa1f fc8c uxth.w ip, ip + 29c6e: fa1f fc8c uxth.w ip, ip tail = tx_buffer_tail_; - 29b86: b29b uxth r3, r3 - 29b88: e006 b.n 29b98 + 29c72: b29b uxth r3, r3 + 29c74: e006 b.n 29c84 n = tx_buffer_[tail]; - 29b8a: 69c1 ldr r1, [r0, #28] - 29b8c: 5cc9 ldrb r1, [r1, r3] - 29b8e: b2c9 uxtb r1, r1 + 29c76: 69c1 ldr r1, [r0, #28] + 29c78: 5cc9 ldrb r1, [r1, r3] + 29c7a: b2c9 uxtb r1, r1 port->DATA = n; - 29b90: 61d1 str r1, [r2, #28] + 29c7c: 61d1 str r1, [r2, #28] } while (((port->WATER >> 8) & 0x7) < 4); // need to computer properly - 29b92: 6ad1 ldr r1, [r2, #44] ; 0x2c - 29b94: 054c lsls r4, r1, #21 - 29b96: d412 bmi.n 29bbe + 29c7e: 6ad1 ldr r1, [r2, #44] ; 0x2c + 29c80: 054c lsls r4, r1, #21 + 29c82: d412 bmi.n 29caa if (head == tail) break; - 29b98: 4563 cmp r3, ip - 29b9a: d03f beq.n 29c1c + 29c84: 4563 cmp r3, ip + 29c86: d03f beq.n 29d08 if (++tail >= tx_buffer_total_size_) tail = 0; - 29b9c: 6b44 ldr r4, [r0, #52] ; 0x34 - 29b9e: 3301 adds r3, #1 + 29c88: 6b44 ldr r4, [r0, #52] ; 0x34 + 29c8a: 3301 adds r3, #1 if (tail < tx_buffer_size_) { - 29ba0: 6ac1 ldr r1, [r0, #44] ; 0x2c + 29c8c: 6ac1 ldr r1, [r0, #44] ; 0x2c if (++tail >= tx_buffer_total_size_) tail = 0; - 29ba2: 429c cmp r4, r3 - 29ba4: bf98 it ls - 29ba6: 2300 movls r3, #0 + 29c8e: 429c cmp r4, r3 + 29c90: bf98 it ls + 29c92: 2300 movls r3, #0 if (tail < tx_buffer_size_) { - 29ba8: 4299 cmp r1, r3 + 29c94: 4299 cmp r1, r3 n = tx_buffer_storage_[tail-tx_buffer_size_]; - 29baa: eba3 0401 sub.w r4, r3, r1 + 29c96: eba3 0401 sub.w r4, r3, r1 if (tail < tx_buffer_size_) { - 29bae: d8ec bhi.n 29b8a + 29c9a: d8ec bhi.n 29c76 n = tx_buffer_storage_[tail-tx_buffer_size_]; - 29bb0: 6a81 ldr r1, [r0, #40] ; 0x28 - 29bb2: 5d09 ldrb r1, [r1, r4] - 29bb4: b2c9 uxtb r1, r1 + 29c9c: 6a81 ldr r1, [r0, #40] ; 0x28 + 29c9e: 5d09 ldrb r1, [r1, r4] + 29ca0: b2c9 uxtb r1, r1 port->DATA = n; - 29bb6: 61d1 str r1, [r2, #28] + 29ca2: 61d1 str r1, [r2, #28] } while (((port->WATER >> 8) & 0x7) < 4); // need to computer properly - 29bb8: 6ad1 ldr r1, [r2, #44] ; 0x2c - 29bba: 054c lsls r4, r1, #21 - 29bbc: d5ec bpl.n 29b98 + 29ca4: 6ad1 ldr r1, [r2, #44] ; 0x2c + 29ca6: 054c lsls r4, r1, #21 + 29ca8: d5ec bpl.n 29c84 tx_buffer_tail_ = tail; - 29bbe: b299 uxth r1, r3 + 29caa: b299 uxth r1, r3 if (head == tail) { - 29bc0: 4563 cmp r3, ip + 29cac: 4563 cmp r3, ip tx_buffer_tail_ = tail; - 29bc2: f8a0 1048 strh.w r1, [r0, #72] ; 0x48 + 29cae: f8a0 1048 strh.w r1, [r0, #72] ; 0x48 if (head == tail) { - 29bc6: d02c beq.n 29c22 + 29cb2: d02c beq.n 29d0e if ((ctrl & LPUART_CTRL_TCIE) && (port->STAT & LPUART_STAT_TC)) - 29bc8: 0271 lsls r1, r6, #9 - 29bca: d518 bpl.n 29bfe - 29bcc: 6953 ldr r3, [r2, #20] - 29bce: 025b lsls r3, r3, #9 - 29bd0: d515 bpl.n 29bfe + 29cb4: 0271 lsls r1, r6, #9 + 29cb6: d518 bpl.n 29cea + 29cb8: 6953 ldr r3, [r2, #20] + 29cba: 025b lsls r3, r3, #9 + 29cbc: d515 bpl.n 29cea transmitting_ = 0; - 29bd2: 2200 movs r2, #0 + 29cbe: 2200 movs r2, #0 if (transmit_pin_baseReg_) DIRECT_WRITE_LOW(transmit_pin_baseReg_, transmit_pin_bitmask_); - 29bd4: 6d03 ldr r3, [r0, #80] ; 0x50 + 29cc0: 6d03 ldr r3, [r0, #80] ; 0x50 transmitting_ = 0; - 29bd6: f880 2044 strb.w r2, [r0, #68] ; 0x44 + 29cc2: f880 2044 strb.w r2, [r0, #68] ; 0x44 if (transmit_pin_baseReg_) DIRECT_WRITE_LOW(transmit_pin_baseReg_, transmit_pin_bitmask_); - 29bda: b113 cbz r3, 29be2 - 29bdc: 6d42 ldr r2, [r0, #84] ; 0x54 - 29bde: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 29cc6: b113 cbz r3, 29cce + 29cc8: 6d42 ldr r2, [r0, #84] ; 0x54 + 29cca: f8c3 2088 str.w r2, [r3, #136] ; 0x88 if(half_duplex_mode_) { - 29be2: 7e83 ldrb r3, [r0, #26] - 29be4: b13b cbz r3, 29bf6 + 29cce: 7e83 ldrb r3, [r0, #26] + 29cd0: b13b cbz r3, 29ce2 __disable_irq(); - 29be6: b672 cpsid i + 29cd2: b672 cpsid i port->CTRL &= ~LPUART_CTRL_TXDIR; - 29be8: 6902 ldr r2, [r0, #16] - 29bea: 6993 ldr r3, [r2, #24] - 29bec: f023 5300 bic.w r3, r3, #536870912 ; 0x20000000 - 29bf0: 6193 str r3, [r2, #24] + 29cd4: 6902 ldr r2, [r0, #16] + 29cd6: 6993 ldr r3, [r2, #24] + 29cd8: f023 5300 bic.w r3, r3, #536870912 ; 0x20000000 + 29cdc: 6193 str r3, [r2, #24] __enable_irq(); - 29bf2: b662 cpsie i + 29cde: b662 cpsie i port->CTRL &= ~LPUART_CTRL_TCIE; - 29bf4: 6905 ldr r5, [r0, #16] - 29bf6: 69ab ldr r3, [r5, #24] - 29bf8: f423 0380 bic.w r3, r3, #4194304 ; 0x400000 - 29bfc: 61ab str r3, [r5, #24] + 29ce0: 6905 ldr r5, [r0, #16] + 29ce2: 69ab ldr r3, [r5, #24] + 29ce4: f423 0380 bic.w r3, r3, #4194304 ; 0x400000 + 29ce8: 61ab str r3, [r5, #24] } - 29bfe: bd70 pop {r4, r5, r6, pc} + 29cea: bd70 pop {r4, r5, r6, pc} port->STAT |= LPUART_STAT_IDLE; // writing a 1 to idle should clear it. - 29c00: 6953 ldr r3, [r2, #20] - 29c02: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 - 29c06: 6153 str r3, [r2, #20] - 29c08: e7b1 b.n 29b6e + 29cec: 6953 ldr r3, [r2, #20] + 29cee: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 + 29cf2: 6153 str r3, [r2, #20] + 29cf4: e7b1 b.n 29c5a if (port->STAT & LPUART_STAT_IDLE) { - 29c0a: 6953 ldr r3, [r2, #20] - 29c0c: 4615 mov r5, r2 - 29c0e: 02dc lsls r4, r3, #11 - 29c10: d5ad bpl.n 29b6e - 29c12: e7f5 b.n 29c00 + 29cf6: 6953 ldr r3, [r2, #20] + 29cf8: 4615 mov r5, r2 + 29cfa: 02dc lsls r4, r3, #11 + 29cfc: d5ad bpl.n 29c5a + 29cfe: e7f5 b.n 29cec else avail = rx_buffer_total_size_ + head - tail; - 29c14: 6b81 ldr r1, [r0, #56] ; 0x38 - 29c16: 1b49 subs r1, r1, r5 - 29c18: 440c add r4, r1 - 29c1a: e79e b.n 29b5a + 29d00: 6b81 ldr r1, [r0, #56] ; 0x38 + 29d02: 1b49 subs r1, r1, r5 + 29d04: 440c add r4, r1 + 29d06: e79e b.n 29c46 tx_buffer_tail_ = tail; - 29c1c: b29b uxth r3, r3 - 29c1e: f8a0 3048 strh.w r3, [r0, #72] ; 0x48 + 29d08: b29b uxth r3, r3 + 29d0a: f8a0 3048 strh.w r3, [r0, #72] ; 0x48 port->CTRL &= ~LPUART_CTRL_TIE; - 29c22: 6993 ldr r3, [r2, #24] - 29c24: f423 0300 bic.w r3, r3, #8388608 ; 0x800000 - 29c28: 6193 str r3, [r2, #24] + 29d0e: 6993 ldr r3, [r2, #24] + 29d10: f423 0300 bic.w r3, r3, #8388608 ; 0x800000 + 29d14: 6193 str r3, [r2, #24] port->CTRL |= LPUART_CTRL_TCIE; // Actually wondering if we can just leave this one on... - 29c2a: 6993 ldr r3, [r2, #24] - 29c2c: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 - 29c30: 6193 str r3, [r2, #24] - 29c32: e7c9 b.n 29bc8 + 29d16: 6993 ldr r3, [r2, #24] + 29d18: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 + 29d1c: 6193 str r3, [r2, #24] + 29d1e: e7c9 b.n 29cb4 -00029c34 : +00029d20 : Serial1.IRQHandler(); - 29c34: 4801 ldr r0, [pc, #4] ; (29c3c ) - 29c36: f7ff bf4b b.w 29ad0 - 29c3a: bf00 nop - 29c3c: 2000b038 .word 0x2000b038 + 29d20: 4801 ldr r0, [pc, #4] ; (29d28 ) + 29d22: f7ff bf4b b.w 29bbc + 29d26: bf00 nop + 29d28: 2000b058 .word 0x2000b058 -00029c40 <_GLOBAL__sub_I_IRQHandler_Serial1>: +00029d2c <_GLOBAL__sub_I_IRQHandler_Serial1>: { serial_phex(n >> 24); serial_phex(n >> 16); serial_phex(n >> 8); serial_phex(n); } - 29c40: b410 push {r4} - 29c42: 4b16 ldr r3, [pc, #88] ; (29c9c <_GLOBAL__sub_I_IRQHandler_Serial1+0x5c>) - 29c44: f44f 747a mov.w r4, #1000 ; 0x3e8 + 29d2c: b410 push {r4} + 29d2e: 4b16 ldr r3, [pc, #88] ; (29d88 <_GLOBAL__sub_I_IRQHandler_Serial1+0x5c>) + 29d30: f44f 747a mov.w r4, #1000 ; 0x3e8 tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29c48: 4815 ldr r0, [pc, #84] ; (29ca0 <_GLOBAL__sub_I_IRQHandler_Serial1+0x60>) - 29c4a: 2200 movs r2, #0 - 29c4c: 609c str r4, [r3, #8] + 29d34: 4815 ldr r0, [pc, #84] ; (29d8c <_GLOBAL__sub_I_IRQHandler_Serial1+0x60>) + 29d36: 2200 movs r2, #0 + 29d38: 609c str r4, [r3, #8] tx_buffer_(_tx_buffer), rx_buffer_(_rx_buffer), tx_buffer_size_(_tx_buffer_size), rx_buffer_size_(_rx_buffer_size), - 29c4e: 2140 movs r1, #64 ; 0x40 + 29d3a: 2140 movs r1, #64 ; 0x40 port(myport), hardware(myhardware), - 29c50: 4c14 ldr r4, [pc, #80] ; (29ca4 <_GLOBAL__sub_I_IRQHandler_Serial1+0x64>) + 29d3c: 4c14 ldr r4, [pc, #80] ; (29d90 <_GLOBAL__sub_I_IRQHandler_Serial1+0x64>) tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29c52: 6018 str r0, [r3, #0] + 29d3e: 6018 str r0, [r3, #0] port(myport), hardware(myhardware), - 29c54: 4814 ldr r0, [pc, #80] ; (29ca8 <_GLOBAL__sub_I_IRQHandler_Serial1+0x68>) - 29c56: 611c str r4, [r3, #16] - 29c58: 6158 str r0, [r3, #20] + 29d40: 4814 ldr r0, [pc, #80] ; (29d94 <_GLOBAL__sub_I_IRQHandler_Serial1+0x68>) + 29d42: 611c str r4, [r3, #16] + 29d44: 6158 str r0, [r3, #20] tx_buffer_(_tx_buffer), rx_buffer_(_rx_buffer), tx_buffer_size_(_tx_buffer_size), rx_buffer_size_(_rx_buffer_size), - 29c5a: 4c14 ldr r4, [pc, #80] ; (29cac <_GLOBAL__sub_I_IRQHandler_Serial1+0x6c>) - 29c5c: 4814 ldr r0, [pc, #80] ; (29cb0 <_GLOBAL__sub_I_IRQHandler_Serial1+0x70>) + 29d46: 4c14 ldr r4, [pc, #80] ; (29d98 <_GLOBAL__sub_I_IRQHandler_Serial1+0x6c>) + 29d48: 4814 ldr r0, [pc, #80] ; (29d9c <_GLOBAL__sub_I_IRQHandler_Serial1+0x70>) tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29c5e: f883 2044 strb.w r2, [r3, #68] ; 0x44 - 29c62: 731a strb r2, [r3, #12] - 29c64: 831a strh r2, [r3, #24] - 29c66: 769a strb r2, [r3, #26] - 29c68: f8a3 2046 strh.w r2, [r3, #70] ; 0x46 + 29d4a: f883 2044 strb.w r2, [r3, #68] ; 0x44 + 29d4e: 731a strb r2, [r3, #12] + 29d50: 831a strh r2, [r3, #24] + 29d52: 769a strb r2, [r3, #26] + 29d54: f8a3 2046 strh.w r2, [r3, #70] ; 0x46 tx_buffer_(_tx_buffer), rx_buffer_(_rx_buffer), tx_buffer_size_(_tx_buffer_size), rx_buffer_size_(_rx_buffer_size), - 29c6c: 61dc str r4, [r3, #28] + 29d58: 61dc str r4, [r3, #28] tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29c6e: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 - 29c72: f85d 4b04 ldr.w r4, [sp], #4 - 29c76: f8a3 204a strh.w r2, [r3, #74] ; 0x4a - 29c7a: 605a str r2, [r3, #4] - 29c7c: 625a str r2, [r3, #36] ; 0x24 - 29c7e: 629a str r2, [r3, #40] ; 0x28 + 29d5a: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 29d5e: f85d 4b04 ldr.w r4, [sp], #4 + 29d62: f8a3 204a strh.w r2, [r3, #74] ; 0x4a + 29d66: 605a str r2, [r3, #4] + 29d68: 625a str r2, [r3, #36] ; 0x24 + 29d6a: 629a str r2, [r3, #40] ; 0x28 tx_buffer_(_tx_buffer), rx_buffer_(_rx_buffer), tx_buffer_size_(_tx_buffer_size), rx_buffer_size_(_rx_buffer_size), - 29c80: 6218 str r0, [r3, #32] + 29d6c: 6218 str r0, [r3, #32] tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29c82: f8a3 204c strh.w r2, [r3, #76] ; 0x4c + 29d6e: f8a3 204c strh.w r2, [r3, #76] ; 0x4c tx_buffer_(_tx_buffer), rx_buffer_(_rx_buffer), tx_buffer_size_(_tx_buffer_size), rx_buffer_size_(_rx_buffer_size), - 29c86: e9c3 110b strd r1, r1, [r3, #44] ; 0x2c + 29d72: e9c3 110b strd r1, r1, [r3, #44] ; 0x2c tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29c8a: e9c3 110d strd r1, r1, [r3, #52] ; 0x34 - 29c8e: e9c3 220f strd r2, r2, [r3, #60] ; 0x3c - 29c92: e9c3 2214 strd r2, r2, [r3, #80] ; 0x50 - 29c96: e9c3 2216 strd r2, r2, [r3, #88] ; 0x58 - 29c9a: 4770 bx lr - 29c9c: 2000b038 .word 0x2000b038 - 29ca0: 200041a8 .word 0x200041a8 - 29ca4: 40198000 .word 0x40198000 - 29ca8: 20000fd8 .word 0x20000fd8 - 29cac: 2000b538 .word 0x2000b538 - 29cb0: 2000b4b8 .word 0x2000b4b8 - -00029cb4 : + 29d76: e9c3 110d strd r1, r1, [r3, #52] ; 0x34 + 29d7a: e9c3 220f strd r2, r2, [r3, #60] ; 0x3c + 29d7e: e9c3 2214 strd r2, r2, [r3, #80] ; 0x50 + 29d82: e9c3 2216 strd r2, r2, [r3, #88] ; 0x58 + 29d86: 4770 bx lr + 29d88: 2000b058 .word 0x2000b058 + 29d8c: 20004268 .word 0x20004268 + 29d90: 40198000 .word 0x40198000 + 29d94: 20000fd8 .word 0x20000fd8 + 29d98: 2000b558 .word 0x2000b558 + 29d9c: 2000b4d8 .word 0x2000b4d8 + +00029da0 : #endif #define IRQ_PRIORITY 64 // 0 = highest priority, 255 = lowest void IRQHandler_Serial3() { Serial3.IRQHandler(); - 29cb4: 4801 ldr r0, [pc, #4] ; (29cbc ) - 29cb6: f7ff bf0b b.w 29ad0 - 29cba: bf00 nop - 29cbc: 2000b098 .word 0x2000b098 + 29da0: 4801 ldr r0, [pc, #4] ; (29da8 ) + 29da2: f7ff bf0b b.w 29bbc + 29da6: bf00 nop + 29da8: 2000b0b8 .word 0x2000b0b8 -00029cc0 <_GLOBAL__sub_I_IRQHandler_Serial3>: +00029dac <_GLOBAL__sub_I_IRQHandler_Serial3>: 2, // page 473 IRQ_PRIORITY, 38, 24, // IRQ, rts_low_watermark, rts_high_watermark XBARA1_OUT_LPUART2_TRG_INPUT }; HardwareSerial Serial3(&IMXRT_LPUART2, &UART2_Hardware,tx_buffer3, SERIAL3_TX_BUFFER_SIZE, rx_buffer3, SERIAL3_RX_BUFFER_SIZE); - 29cc0: b410 push {r4} - 29cc2: 4b17 ldr r3, [pc, #92] ; (29d20 <_GLOBAL__sub_I_IRQHandler_Serial3+0x60>) - 29cc4: f44f 747a mov.w r4, #1000 ; 0x3e8 - 29cc8: 2200 movs r2, #0 + 29dac: b410 push {r4} + 29dae: 4b17 ldr r3, [pc, #92] ; (29e0c <_GLOBAL__sub_I_IRQHandler_Serial3+0x60>) + 29db0: f44f 747a mov.w r4, #1000 ; 0x3e8 + 29db4: 2200 movs r2, #0 tx_buffer_(_tx_buffer), rx_buffer_(_rx_buffer), tx_buffer_size_(_tx_buffer_size), rx_buffer_size_(_rx_buffer_size), - 29cca: 2028 movs r0, #40 ; 0x28 - 29ccc: 609c str r4, [r3, #8] - 29cce: 2140 movs r1, #64 ; 0x40 + 29db6: 2028 movs r0, #40 ; 0x28 + 29db8: 609c str r4, [r3, #8] + 29dba: 2140 movs r1, #64 ; 0x40 tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29cd0: 4c14 ldr r4, [pc, #80] ; (29d24 <_GLOBAL__sub_I_IRQHandler_Serial3+0x64>) - 29cd2: f883 2044 strb.w r2, [r3, #68] ; 0x44 - 29cd6: 601c str r4, [r3, #0] + 29dbc: 4c14 ldr r4, [pc, #80] ; (29e10 <_GLOBAL__sub_I_IRQHandler_Serial3+0x64>) + 29dbe: f883 2044 strb.w r2, [r3, #68] ; 0x44 + 29dc2: 601c str r4, [r3, #0] port(myport), hardware(myhardware), - 29cd8: 4c13 ldr r4, [pc, #76] ; (29d28 <_GLOBAL__sub_I_IRQHandler_Serial3+0x68>) - 29cda: 731a strb r2, [r3, #12] - 29cdc: 611c str r4, [r3, #16] - 29cde: 4c13 ldr r4, [pc, #76] ; (29d2c <_GLOBAL__sub_I_IRQHandler_Serial3+0x6c>) + 29dc4: 4c13 ldr r4, [pc, #76] ; (29e14 <_GLOBAL__sub_I_IRQHandler_Serial3+0x68>) + 29dc6: 731a strb r2, [r3, #12] + 29dc8: 611c str r4, [r3, #16] + 29dca: 4c13 ldr r4, [pc, #76] ; (29e18 <_GLOBAL__sub_I_IRQHandler_Serial3+0x6c>) tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29ce0: 831a strh r2, [r3, #24] + 29dcc: 831a strh r2, [r3, #24] port(myport), hardware(myhardware), - 29ce2: 615c str r4, [r3, #20] + 29dce: 615c str r4, [r3, #20] tx_buffer_(_tx_buffer), rx_buffer_(_rx_buffer), tx_buffer_size_(_tx_buffer_size), rx_buffer_size_(_rx_buffer_size), - 29ce4: 4c12 ldr r4, [pc, #72] ; (29d30 <_GLOBAL__sub_I_IRQHandler_Serial3+0x70>) + 29dd0: 4c12 ldr r4, [pc, #72] ; (29e1c <_GLOBAL__sub_I_IRQHandler_Serial3+0x70>) tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29ce6: 769a strb r2, [r3, #26] - 29ce8: f8a3 2046 strh.w r2, [r3, #70] ; 0x46 + 29dd2: 769a strb r2, [r3, #26] + 29dd4: f8a3 2046 strh.w r2, [r3, #70] ; 0x46 tx_buffer_(_tx_buffer), rx_buffer_(_rx_buffer), tx_buffer_size_(_tx_buffer_size), rx_buffer_size_(_rx_buffer_size), - 29cec: 61dc str r4, [r3, #28] + 29dd8: 61dc str r4, [r3, #28] tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29cee: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 - 29cf2: f85d 4b04 ldr.w r4, [sp], #4 - 29cf6: f8a3 204a strh.w r2, [r3, #74] ; 0x4a - 29cfa: 605a str r2, [r3, #4] - 29cfc: 625a str r2, [r3, #36] ; 0x24 - 29cfe: 641a str r2, [r3, #64] ; 0x40 - 29d00: f8a3 204c strh.w r2, [r3, #76] ; 0x4c + 29dda: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 29dde: f85d 4b04 ldr.w r4, [sp], #4 + 29de2: f8a3 204a strh.w r2, [r3, #74] ; 0x4a + 29de6: 605a str r2, [r3, #4] + 29de8: 625a str r2, [r3, #36] ; 0x24 + 29dea: 641a str r2, [r3, #64] ; 0x40 + 29dec: f8a3 204c strh.w r2, [r3, #76] ; 0x4c tx_buffer_(_tx_buffer), rx_buffer_(_rx_buffer), tx_buffer_size_(_tx_buffer_size), rx_buffer_size_(_rx_buffer_size), - 29d04: e9c3 200a strd r2, r0, [r3, #40] ; 0x28 + 29df0: e9c3 200a strd r2, r0, [r3, #40] ; 0x28 tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29d08: e9c3 100c strd r1, r0, [r3, #48] ; 0x30 + 29df4: e9c3 100c strd r1, r0, [r3, #48] ; 0x30 tx_buffer_(_tx_buffer), rx_buffer_(_rx_buffer), tx_buffer_size_(_tx_buffer_size), rx_buffer_size_(_rx_buffer_size), - 29d0c: 4809 ldr r0, [pc, #36] ; (29d34 <_GLOBAL__sub_I_IRQHandler_Serial3+0x74>) + 29df8: 4809 ldr r0, [pc, #36] ; (29e20 <_GLOBAL__sub_I_IRQHandler_Serial3+0x74>) tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29d0e: e9c3 120e strd r1, r2, [r3, #56] ; 0x38 + 29dfa: e9c3 120e strd r1, r2, [r3, #56] ; 0x38 tx_buffer_(_tx_buffer), rx_buffer_(_rx_buffer), tx_buffer_size_(_tx_buffer_size), rx_buffer_size_(_rx_buffer_size), - 29d12: 6218 str r0, [r3, #32] + 29dfe: 6218 str r0, [r3, #32] tx_buffer_total_size_(_tx_buffer_size), rx_buffer_total_size_(_rx_buffer_size) { - 29d14: e9c3 2214 strd r2, r2, [r3, #80] ; 0x50 - 29d18: e9c3 2216 strd r2, r2, [r3, #88] ; 0x58 - 29d1c: 4770 bx lr - 29d1e: bf00 nop - 29d20: 2000b098 .word 0x2000b098 - 29d24: 200041a8 .word 0x200041a8 - 29d28: 40188000 .word 0x40188000 - 29d2c: 20004bb8 .word 0x20004bb8 - 29d30: 2000b578 .word 0x2000b578 - 29d34: 2000b4f8 .word 0x2000b4f8 - -00029d38 : + 29e00: e9c3 2214 strd r2, r2, [r3, #80] ; 0x50 + 29e04: e9c3 2216 strd r2, r2, [r3, #88] ; 0x58 + 29e08: 4770 bx lr + 29e0a: bf00 nop + 29e0c: 2000b0b8 .word 0x2000b0b8 + 29e10: 20004268 .word 0x20004268 + 29e14: 40188000 .word 0x40188000 + 29e18: 20004c78 .word 0x20004c78 + 29e1c: 2000b598 .word 0x2000b598 + 29e20: 2000b518 .word 0x2000b518 + +00029e24 : virtual size_t write(uint8_t c) { return usb_seremu_putchar(c); } - 29d38: 4608 mov r0, r1 - 29d3a: f002 bbef b.w 2c51c - 29d3e: bf00 nop + 29e24: 4608 mov r0, r1 + 29e26: f002 bbed b.w 2c604 + 29e2a: bf00 nop -00029d40 : +00029e2c : // almost always a constant. base = 0 (BYTE) should // inline as a call directly to write() if (base == 0) { return write((uint8_t)n); } else if (base == 1) { base = 10; - 29d40: 2a01 cmp r2, #1 + 29e2c: 2a01 cmp r2, #1 size_t Print::printNumber(unsigned long n, uint8_t base, uint8_t sign) - 29d42: b570 push {r4, r5, r6, lr} + 29e2e: b570 push {r4, r5, r6, lr} base = 10; - 29d44: bf08 it eq - 29d46: 220a moveq r2, #10 + 29e30: bf08 it eq + 29e32: 220a moveq r2, #10 size_t Print::printNumber(unsigned long n, uint8_t base, uint8_t sign) - 29d48: b08a sub sp, #40 ; 0x28 + 29e34: b08a sub sp, #40 ; 0x28 } if (n == 0) { - 29d4a: b391 cbz r1, 29db2 + 29e36: b391 cbz r1, 29e9e buf[sizeof(buf) - 1] = '0'; i = sizeof(buf) - 1; } else { i = sizeof(buf) - 1; - 29d4c: f04f 0e21 mov.w lr, #33 ; 0x21 - 29d50: e001 b.n 29d56 + 29e38: f04f 0e21 mov.w lr, #33 ; 0x21 + 29e3c: e001 b.n 29e42 while (1) { digit = n % base; buf[i] = ((digit < 10) ? '0' + digit : 'A' + digit - 10); n /= base; if (n == 0) break; i--; - 29d52: fa5f fe86 uxtb.w lr, r6 - 29d56: f10e 36ff add.w r6, lr, #4294967295 ; 0xffffffff + 29e3e: fa5f fe86 uxtb.w lr, r6 + 29e42: f10e 36ff add.w r6, lr, #4294967295 ; 0xffffffff digit = n % base; - 29d5a: fbb1 f5f2 udiv r5, r1, r2 - 29d5e: fb02 1415 mls r4, r2, r5, r1 - 29d62: fa5f fc84 uxtb.w ip, r4 + 29e46: fbb1 f5f2 udiv r5, r1, r2 + 29e4a: fb02 1415 mls r4, r2, r5, r1 + 29e4e: fa5f fc84 uxtb.w ip, r4 buf[i] = ((digit < 10) ? '0' + digit : 'A' + digit - 10); - 29d66: 2c09 cmp r4, #9 - 29d68: f10c 0437 add.w r4, ip, #55 ; 0x37 - 29d6c: f10c 0c30 add.w ip, ip, #48 ; 0x30 - 29d70: bf98 it ls - 29d72: fa5f f48c uxtbls.w r4, ip - 29d76: f10e 0c28 add.w ip, lr, #40 ; 0x28 - 29d7a: bf88 it hi - 29d7c: b2e4 uxtbhi r4, r4 + 29e52: 2c09 cmp r4, #9 + 29e54: f10c 0437 add.w r4, ip, #55 ; 0x37 + 29e58: f10c 0c30 add.w ip, ip, #48 ; 0x30 + 29e5c: bf98 it ls + 29e5e: fa5f f48c uxtbls.w r4, ip + 29e62: f10e 0c28 add.w ip, lr, #40 ; 0x28 + 29e66: bf88 it hi + 29e68: b2e4 uxtbhi r4, r4 if (n == 0) break; - 29d7e: 4291 cmp r1, r2 + 29e6a: 4291 cmp r1, r2 buf[i] = ((digit < 10) ? '0' + digit : 'A' + digit - 10); - 29d80: 44ec add ip, sp + 29e6c: 44ec add ip, sp n /= base; - 29d82: 4629 mov r1, r5 + 29e6e: 4629 mov r1, r5 buf[i] = ((digit < 10) ? '0' + digit : 'A' + digit - 10); - 29d84: f80c 4c24 strb.w r4, [ip, #-36] + 29e70: f80c 4c24 strb.w r4, [ip, #-36] if (n == 0) break; - 29d88: d2e3 bcs.n 29d52 + 29e74: d2e3 bcs.n 29e3e } } if (sign) { - 29d8a: b14b cbz r3, 29da0 + 29e76: b14b cbz r3, 29e8c i--; - 29d8c: f10e 3eff add.w lr, lr, #4294967295 ; 0xffffffff + 29e78: f10e 3eff add.w lr, lr, #4294967295 ; 0xffffffff buf[i] = '-'; - 29d90: 222d movs r2, #45 ; 0x2d + 29e7c: 222d movs r2, #45 ; 0x2d i--; - 29d92: fa5f fe8e uxtb.w lr, lr + 29e7e: fa5f fe8e uxtb.w lr, lr buf[i] = '-'; - 29d96: f10e 0328 add.w r3, lr, #40 ; 0x28 - 29d9a: 446b add r3, sp - 29d9c: f803 2c24 strb.w r2, [r3, #-36] + 29e82: f10e 0328 add.w r3, lr, #40 ; 0x28 + 29e86: 446b add r3, sp + 29e88: f803 2c24 strb.w r2, [r3, #-36] } return write(buf + i, sizeof(buf) - i); - 29da0: 6803 ldr r3, [r0, #0] - 29da2: a901 add r1, sp, #4 - 29da4: f1ce 0222 rsb r2, lr, #34 ; 0x22 - 29da8: 685b ldr r3, [r3, #4] - 29daa: 4471 add r1, lr - 29dac: 4798 blx r3 -} - 29dae: b00a add sp, #40 ; 0x28 - 29db0: bd70 pop {r4, r5, r6, pc} + 29e8c: 6803 ldr r3, [r0, #0] + 29e8e: a901 add r1, sp, #4 + 29e90: f1ce 0222 rsb r2, lr, #34 ; 0x22 + 29e94: 685b ldr r3, [r3, #4] + 29e96: 4471 add r1, lr + 29e98: 4798 blx r3 +} + 29e9a: b00a add sp, #40 ; 0x28 + 29e9c: bd70 pop {r4, r5, r6, pc} buf[sizeof(buf) - 1] = '0'; - 29db2: 2230 movs r2, #48 ; 0x30 + 29e9e: 2230 movs r2, #48 ; 0x30 i = sizeof(buf) - 1; - 29db4: f04f 0e21 mov.w lr, #33 ; 0x21 + 29ea0: f04f 0e21 mov.w lr, #33 ; 0x21 buf[sizeof(buf) - 1] = '0'; - 29db8: f88d 2025 strb.w r2, [sp, #37] ; 0x25 + 29ea4: f88d 2025 strb.w r2, [sp, #37] ; 0x25 i = sizeof(buf) - 1; - 29dbc: e7e5 b.n 29d8a - 29dbe: bf00 nop + 29ea8: e7e5 b.n 29e76 + 29eaa: bf00 nop -00029dc0 : +00029eac : { - 29dc0: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 29eac: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} if (buffer == nullptr) return 0; - 29dc4: 460c mov r4, r1 - 29dc6: b1d1 cbz r1, 29dfe + 29eb0: 460c mov r4, r1 + 29eb2: b1d1 cbz r1, 29eea while (size--) count += write(*buffer++); - 29dc8: b1ea cbz r2, 29e06 - 29dca: 4680 mov r8, r0 - 29dcc: 188e adds r6, r1, r2 + 29eb4: b1ea cbz r2, 29ef2 + 29eb6: 4680 mov r8, r0 + 29eb8: 188e adds r6, r1, r2 size_t count = 0; - 29dce: 2500 movs r5, #0 - 29dd0: 4f0e ldr r7, [pc, #56] ; (29e0c ) - 29dd2: e004 b.n 29dde - 29dd4: f002 fba2 bl 2c51c + 29eba: 2500 movs r5, #0 + 29ebc: 4f0e ldr r7, [pc, #56] ; (29ef8 ) + 29ebe: e004 b.n 29eca + 29ec0: f002 fba0 bl 2c604 while (size--) count += write(*buffer++); - 29dd8: 42b4 cmp r4, r6 - 29dda: 4405 add r5, r0 - 29ddc: d00c beq.n 29df8 - 29dde: f8d8 3000 ldr.w r3, [r8] - 29de2: f814 0b01 ldrb.w r0, [r4], #1 - 29de6: 681b ldr r3, [r3, #0] - 29de8: 42bb cmp r3, r7 - 29dea: d0f3 beq.n 29dd4 - 29dec: 4601 mov r1, r0 - 29dee: 4640 mov r0, r8 - 29df0: 4798 blx r3 - 29df2: 42b4 cmp r4, r6 - 29df4: 4405 add r5, r0 - 29df6: d1f2 bne.n 29dde -} - 29df8: 4628 mov r0, r5 - 29dfa: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 29ec4: 42b4 cmp r4, r6 + 29ec6: 4405 add r5, r0 + 29ec8: d00c beq.n 29ee4 + 29eca: f8d8 3000 ldr.w r3, [r8] + 29ece: f814 0b01 ldrb.w r0, [r4], #1 + 29ed2: 681b ldr r3, [r3, #0] + 29ed4: 42bb cmp r3, r7 + 29ed6: d0f3 beq.n 29ec0 + 29ed8: 4601 mov r1, r0 + 29eda: 4640 mov r0, r8 + 29edc: 4798 blx r3 + 29ede: 42b4 cmp r4, r6 + 29ee0: 4405 add r5, r0 + 29ee2: d1f2 bne.n 29eca +} + 29ee4: 4628 mov r0, r5 + 29ee6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if (buffer == nullptr) return 0; - 29dfe: 460d mov r5, r1 + 29eea: 460d mov r5, r1 } - 29e00: 4628 mov r0, r5 - 29e02: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 29eec: 4628 mov r0, r5 + 29eee: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if (buffer == nullptr) return 0; - 29e06: 4615 mov r5, r2 - 29e08: e7f6 b.n 29df8 - 29e0a: bf00 nop - 29e0c: 00029d39 .word 0x00029d39 + 29ef2: 4615 mov r5, r2 + 29ef4: e7f6 b.n 29ee4 + 29ef6: bf00 nop + 29ef8: 00029e25 .word 0x00029e25 -00029e10 : +00029efc : { - 29e10: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 29efc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} inline unsigned int length(void) const {return len;} - 29e14: 688c ldr r4, [r1, #8] - 29e16: b08a sub sp, #40 ; 0x28 + 29f00: 688c ldr r4, [r1, #8] + 29f02: b08a sub sp, #40 ; 0x28 while (len > 0) { - 29e18: b1dc cbz r4, 29e52 + 29f04: b1dc cbz r4, 29f3e unsigned int index = 0; - 29e1a: 2500 movs r5, #0 - 29e1c: 4688 mov r8, r1 - 29e1e: 4606 mov r6, r0 + 29f06: 2500 movs r5, #0 + 29f08: 4688 mov r8, r1 + 29f0a: 4606 mov r6, r0 size_t count = 0; - 29e20: 462f mov r7, r5 + 29f0c: 462f mov r7, r5 s.getBytes(buffer, sizeof(buffer), index); - 29e22: 462b mov r3, r5 - 29e24: 2221 movs r2, #33 ; 0x21 - 29e26: a901 add r1, sp, #4 - 29e28: 4640 mov r0, r8 - 29e2a: f000 f975 bl 2a118 + 29f0e: 462b mov r3, r5 + 29f10: 2221 movs r2, #33 ; 0x21 + 29f12: a901 add r1, sp, #4 + 29f14: 4640 mov r0, r8 + 29f16: f000 f973 bl 2a200 if (nbytes > sizeof(buffer)-1) nbytes = sizeof(buffer)-1; - 29e2e: 2c20 cmp r4, #32 - 29e30: 4622 mov r2, r4 + 29f1a: 2c20 cmp r4, #32 + 29f1c: 4622 mov r2, r4 count += write(buffer, nbytes); - 29e32: 6833 ldr r3, [r6, #0] - 29e34: bf28 it cs - 29e36: 2220 movcs r2, #32 - 29e38: a901 add r1, sp, #4 - 29e3a: 4630 mov r0, r6 - 29e3c: 685b ldr r3, [r3, #4] + 29f1e: 6833 ldr r3, [r6, #0] + 29f20: bf28 it cs + 29f22: 2220 movcs r2, #32 + 29f24: a901 add r1, sp, #4 + 29f26: 4630 mov r0, r6 + 29f28: 685b ldr r3, [r3, #4] len -= nbytes; - 29e3e: 1aa4 subs r4, r4, r2 + 29f2a: 1aa4 subs r4, r4, r2 index += nbytes; - 29e40: 4415 add r5, r2 + 29f2c: 4415 add r5, r2 count += write(buffer, nbytes); - 29e42: 4798 blx r3 - 29e44: 4407 add r7, r0 + 29f2e: 4798 blx r3 + 29f30: 4407 add r7, r0 while (len > 0) { - 29e46: 2c00 cmp r4, #0 - 29e48: d1eb bne.n 29e22 + 29f32: 2c00 cmp r4, #0 + 29f34: d1eb bne.n 29f0e } - 29e4a: 4638 mov r0, r7 - 29e4c: b00a add sp, #40 ; 0x28 - 29e4e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 29f36: 4638 mov r0, r7 + 29f38: b00a add sp, #40 ; 0x28 + 29f3a: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} size_t count = 0; - 29e52: 4627 mov r7, r4 + 29f3e: 4627 mov r7, r4 } - 29e54: 4638 mov r0, r7 - 29e56: b00a add sp, #40 ; 0x28 - 29e58: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 29f40: 4638 mov r0, r7 + 29f42: b00a add sp, #40 ; 0x28 + 29f44: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} -00029e5c : +00029f48 : if (n < 0) { - 29e5c: 2900 cmp r1, #0 - 29e5e: db03 blt.n 29e68 + 29f48: 2900 cmp r1, #0 + 29f4a: db03 blt.n 29f54 uint8_t sign=0; - 29e60: 2300 movs r3, #0 + 29f4c: 2300 movs r3, #0 if (base == 0) { - 29e62: 220a movs r2, #10 - 29e64: f7ff bf6c b.w 29d40 + 29f4e: 220a movs r2, #10 + 29f50: f7ff bf6c b.w 29e2c n = -n; - 29e68: 4249 negs r1, r1 + 29f54: 4249 negs r1, r1 sign = '-'; - 29e6a: 232d movs r3, #45 ; 0x2d + 29f56: 232d movs r3, #45 ; 0x2d if (base == 0) { - 29e6c: 220a movs r2, #10 - 29e6e: f7ff bf67 b.w 29d40 - 29e72: bf00 nop + 29f58: 220a movs r2, #10 + 29f5a: f7ff bf67 b.w 29e2c + 29f5e: bf00 nop -00029e74 : +00029f60 : { - 29e74: b500 push {lr} + 29f60: b500 push {lr} return write(buf, 2); - 29e76: 6803 ldr r3, [r0, #0] + 29f62: 6803 ldr r3, [r0, #0] { - 29e78: b083 sub sp, #12 + 29f64: b083 sub sp, #12 uint8_t buf[2]={'\r', '\n'}; - 29e7a: f640 2c0d movw ip, #2573 ; 0xa0d + 29f66: f640 2c0d movw ip, #2573 ; 0xa0d return write(buf, 2); - 29e7e: 2202 movs r2, #2 - 29e80: a901 add r1, sp, #4 - 29e82: 685b ldr r3, [r3, #4] + 29f6a: 2202 movs r2, #2 + 29f6c: a901 add r1, sp, #4 + 29f6e: 685b ldr r3, [r3, #4] uint8_t buf[2]={'\r', '\n'}; - 29e84: f8ad c004 strh.w ip, [sp, #4] + 29f70: f8ad c004 strh.w ip, [sp, #4] return write(buf, 2); - 29e88: 4798 blx r3 + 29f74: 4798 blx r3 } - 29e8a: b003 add sp, #12 - 29e8c: f85d fb04 ldr.w pc, [sp], #4 + 29f76: b003 add sp, #12 + 29f78: f85d fb04 ldr.w pc, [sp], #4 -00029e90 <_write>: +00029f7c <_write>: return ((class Print *)file)->write((uint8_t *)ptr, len); - 29e90: 4b05 ldr r3, [pc, #20] ; (29ea8 <_write+0x18>) - 29e92: 2802 cmp r0, #2 - 29e94: bf88 it hi - 29e96: 4603 movhi r3, r0 + 29f7c: 4b05 ldr r3, [pc, #20] ; (29f94 <_write+0x18>) + 29f7e: 2802 cmp r0, #2 + 29f80: bf88 it hi + 29f82: 4603 movhi r3, r0 { - 29e98: b410 push {r4} + 29f84: b410 push {r4} return ((class Print *)file)->write((uint8_t *)ptr, len); - 29e9a: 681c ldr r4, [r3, #0] - 29e9c: 4618 mov r0, r3 - 29e9e: 6863 ldr r3, [r4, #4] + 29f86: 681c ldr r4, [r3, #0] + 29f88: 4618 mov r0, r3 + 29f8a: 6863 ldr r3, [r4, #4] } - 29ea0: f85d 4b04 ldr.w r4, [sp], #4 + 29f8c: f85d 4b04 ldr.w r4, [sp], #4 return ((class Print *)file)->write((uint8_t *)ptr, len); - 29ea4: 4718 bx r3 - 29ea6: bf00 nop - 29ea8: 20004ba8 .word 0x20004ba8 + 29f90: 4718 bx r3 + 29f92: bf00 nop + 29f94: 20004c68 .word 0x20004c68 -00029eac : +00029f98 : if (base == 0) { - 29eac: b95a cbnz r2, 29ec6 + 29f98: b95a cbnz r2, 29fb2 return write((uint8_t)n); - 29eae: 6803 ldr r3, [r0, #0] - 29eb0: b2c9 uxtb r1, r1 - 29eb2: 4a07 ldr r2, [pc, #28] ; (29ed0 ) - 29eb4: 681b ldr r3, [r3, #0] - 29eb6: 4293 cmp r3, r2 + 29f9a: 6803 ldr r3, [r0, #0] + 29f9c: b2c9 uxtb r1, r1 + 29f9e: 4a07 ldr r2, [pc, #28] ; (29fbc ) + 29fa0: 681b ldr r3, [r3, #0] + 29fa2: 4293 cmp r3, r2 { - 29eb8: b500 push {lr} - 29eba: d106 bne.n 29eca - 29ebc: 4608 mov r0, r1 -} - 29ebe: f85d eb04 ldr.w lr, [sp], #4 - 29ec2: f002 bb2b b.w 2c51c - 29ec6: f7ff bf3b b.w 29d40 - 29eca: f85d eb04 ldr.w lr, [sp], #4 + 29fa4: b500 push {lr} + 29fa6: d106 bne.n 29fb6 + 29fa8: 4608 mov r0, r1 +} + 29faa: f85d eb04 ldr.w lr, [sp], #4 + 29fae: f002 bb29 b.w 2c604 + 29fb2: f7ff bf3b b.w 29e2c + 29fb6: f85d eb04 ldr.w lr, [sp], #4 return write((uint8_t)n); - 29ece: 4718 bx r3 - 29ed0: 00029d39 .word 0x00029d39 - 29ed4: 00000000 .word 0x00000000 + 29fba: 4718 bx r3 + 29fbc: 00029e25 .word 0x00029e25 -00029ed8 : +00029fc0 : size_t Print::printFloat(double number, uint8_t digits) { uint8_t sign=0; size_t count=0; if (isnan(number)) return print("nan"); - 29ed8: eeb4 0b40 vcmp.f64 d0, d0 + 29fc0: eeb4 0b40 vcmp.f64 d0, d0 { - 29edc: b570 push {r4, r5, r6, lr} + 29fc4: b570 push {r4, r5, r6, lr} if (isnan(number)) return print("nan"); - 29ede: eef1 fa10 vmrs APSR_nzcv, fpscr + 29fc6: eef1 fa10 vmrs APSR_nzcv, fpscr { - 29ee2: 4605 mov r5, r0 - 29ee4: ed2d 8b02 vpush {d8} - 29ee8: b086 sub sp, #24 + 29fca: 4605 mov r5, r0 + 29fcc: ed2d 8b02 vpush {d8} + 29fd0: b086 sub sp, #24 if (isnan(number)) return print("nan"); - 29eea: d67c bvs.n 29fe6 + 29fd2: d67c bvs.n 2a0ce && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC using ::isinf; #else constexpr bool isinf(double __x) { return __builtin_isinf(__x); } - 29eec: eeb0 7bc0 vabs.f64 d7, d0 + 29fd4: eeb0 7bc0 vabs.f64 d7, d0 if (isinf(number)) return print("inf"); - 29ef0: ed9f 6b47 vldr d6, [pc, #284] ; 2a010 - 29ef4: eeb4 7b46 vcmp.f64 d7, d6 - 29ef8: eef1 fa10 vmrs APSR_nzcv, fpscr - 29efc: dc6b bgt.n 29fd6 + 29fd8: ed9f 6b47 vldr d6, [pc, #284] ; 2a0f8 + 29fdc: eeb4 7b46 vcmp.f64 d7, d6 + 29fe0: eef1 fa10 vmrs APSR_nzcv, fpscr + 29fe4: dc6b bgt.n 2a0be if (number > 4294967040.0f) return print("ovf"); // constant determined empirically - 29efe: ed9f 7b46 vldr d7, [pc, #280] ; 2a018 - 29f02: eeb4 0bc7 vcmpe.f64 d0, d7 - 29f06: eef1 fa10 vmrs APSR_nzcv, fpscr - 29f0a: dc5a bgt.n 29fc2 + 29fe6: ed9f 7b46 vldr d7, [pc, #280] ; 2a100 + 29fea: eeb4 0bc7 vcmpe.f64 d0, d7 + 29fee: eef1 fa10 vmrs APSR_nzcv, fpscr + 29ff2: dc5a bgt.n 2a0aa if (number <-4294967040.0f) return print("ovf"); // constant determined empirically - 29f0c: ed9f 7b44 vldr d7, [pc, #272] ; 2a020 - 29f10: eeb4 0bc7 vcmpe.f64 d0, d7 - 29f14: eef1 fa10 vmrs APSR_nzcv, fpscr - 29f18: d453 bmi.n 29fc2 + 29ff4: ed9f 7b44 vldr d7, [pc, #272] ; 2a108 + 29ff8: eeb4 0bc7 vcmpe.f64 d0, d7 + 29ffc: eef1 fa10 vmrs APSR_nzcv, fpscr + 2a000: d453 bmi.n 2a0aa // Handle negative numbers if (number < 0.0) { - 29f1a: eeb5 0bc0 vcmpe.f64 d0, #0.0 - 29f1e: 460c mov r4, r1 - 29f20: eef1 fa10 vmrs APSR_nzcv, fpscr - 29f24: d45b bmi.n 29fde + 2a002: eeb5 0bc0 vcmpe.f64 d0, #0.0 + 2a006: 460c mov r4, r1 + 2a008: eef1 fa10 vmrs APSR_nzcv, fpscr + 2a00c: d45b bmi.n 2a0c6 uint8_t sign=0; - 29f26: 2300 movs r3, #0 + 2a00e: 2300 movs r3, #0 sign = 1; number = -number; } // Round correctly so that print(1.999, 2) prints as "2.00" double rounding = 0.5; - 29f28: eeb6 7b00 vmov.f64 d7, #96 ; 0x3f000000 0.5 + 2a010: eeb6 7b00 vmov.f64 d7, #96 ; 0x3f000000 0.5 for (uint8_t i=0; i - 29f30: f04f 0c00 mov.w ip, #0 + 2a014: 2c00 cmp r4, #0 + 2a016: d05e beq.n 2a0d6 + 2a018: f04f 0c00 mov.w ip, #0 rounding *= 0.1; - 29f34: ed9f 6b3c vldr d6, [pc, #240] ; 2a028 + 2a01c: ed9f 6b3c vldr d6, [pc, #240] ; 2a110 for (uint8_t i=0; i + 2a028: fa5f f28c uxtb.w r2, ip + 2a02c: 42a2 cmp r2, r4 + 2a02e: d3f7 bcc.n 2a020 } number += rounding; - 29f48: ee30 0b07 vadd.f64 d0, d0, d7 + 2a030: ee30 0b07 vadd.f64 d0, d0, d7 // Extract the integer part of the number and print it unsigned long int_part = (unsigned long)number; - 29f4c: 220a movs r2, #10 - 29f4e: 4628 mov r0, r5 - 29f50: eefc 7bc0 vcvt.u32.f64 s15, d0 + 2a034: 220a movs r2, #10 + 2a036: 4628 mov r0, r5 + 2a038: eefc 7bc0 vcvt.u32.f64 s15, d0 double remainder = number - (double)int_part; - 29f54: eeb8 8b67 vcvt.f64.u32 d8, s15 - 29f58: ee17 1a90 vmov r1, s15 - 29f5c: ee30 8b48 vsub.f64 d8, d0, d8 + 2a03c: eeb8 8b67 vcvt.f64.u32 d8, s15 + 2a040: ee17 1a90 vmov r1, s15 + 2a044: ee30 8b48 vsub.f64 d8, d0, d8 if (base == 0) { - 29f60: f7ff feee bl 29d40 - 29f64: 2c0f cmp r4, #15 + 2a048: f7ff fef0 bl 29e2c + 2a04c: 2c0f cmp r4, #15 count += printNumber(int_part, 10, sign); // Print the decimal point, but only if there are digits beyond if (digits > 0) { uint8_t n, buf[16], count=1; buf[0] = '.'; - 29f66: f04f 032e mov.w r3, #46 ; 0x2e + 2a04e: f04f 032e mov.w r3, #46 ; 0x2e // Extract digits from the remainder one at a time if (digits > sizeof(buf) - 1) digits = sizeof(buf) - 1; while (digits-- > 0) { remainder *= 10.0; - 29f6a: eeb2 6b04 vmov.f64 d6, #36 ; 0x41200000 10.0 - 29f6e: 4606 mov r6, r0 + 2a052: eeb2 6b04 vmov.f64 d6, #36 ; 0x41200000 10.0 + 2a056: 4606 mov r6, r0 buf[0] = '.'; - 29f70: bf28 it cs - 29f72: 240f movcs r4, #15 - 29f74: f88d 3008 strb.w r3, [sp, #8] + 2a058: bf28 it cs + 2a05a: 240f movcs r4, #15 + 2a05c: f88d 3008 strb.w r3, [sp, #8] while (digits-- > 0) { - 29f78: f10d 0309 add.w r3, sp, #9 - 29f7c: aa02 add r2, sp, #8 - 29f7e: 1e61 subs r1, r4, #1 - 29f80: fa53 f181 uxtab r1, r3, r1 + 2a060: f10d 0309 add.w r3, sp, #9 + 2a064: aa02 add r2, sp, #8 + 2a066: 1e61 subs r1, r4, #1 + 2a068: fa53 f181 uxtab r1, r3, r1 remainder *= 10.0; - 29f84: ee28 0b06 vmul.f64 d0, d8, d6 + 2a06c: ee28 0b06 vmul.f64 d0, d8, d6 n = (uint8_t)(remainder); - 29f88: eefc 7bc0 vcvt.u32.f64 s15, d0 - 29f8c: edcd 7a01 vstr s15, [sp, #4] - 29f90: f89d 3004 ldrb.w r3, [sp, #4] + 2a070: eefc 7bc0 vcvt.u32.f64 s15, d0 + 2a074: edcd 7a01 vstr s15, [sp, #4] + 2a078: f89d 3004 ldrb.w r3, [sp, #4] buf[count++] = '0' + n; remainder -= n; - 29f94: ee07 3a90 vmov s15, r3 + 2a07c: ee07 3a90 vmov s15, r3 buf[count++] = '0' + n; - 29f98: 3330 adds r3, #48 ; 0x30 + 2a080: 3330 adds r3, #48 ; 0x30 remainder -= n; - 29f9a: eeb8 8be7 vcvt.f64.s32 d8, s15 + 2a082: eeb8 8be7 vcvt.f64.s32 d8, s15 buf[count++] = '0' + n; - 29f9e: f802 3f01 strb.w r3, [r2, #1]! + 2a086: f802 3f01 strb.w r3, [r2, #1]! while (digits-- > 0) { - 29fa2: 4291 cmp r1, r2 + 2a08a: 4291 cmp r1, r2 remainder -= n; - 29fa4: ee30 8b48 vsub.f64 d8, d0, d8 + 2a08c: ee30 8b48 vsub.f64 d8, d0, d8 while (digits-- > 0) { - 29fa8: d1ec bne.n 29f84 + 2a090: d1ec bne.n 2a06c } count += write(buf, count); - 29faa: 682b ldr r3, [r5, #0] + 2a092: 682b ldr r3, [r5, #0] buf[count++] = '0' + n; - 29fac: 3401 adds r4, #1 + 2a094: 3401 adds r4, #1 count += write(buf, count); - 29fae: a902 add r1, sp, #8 - 29fb0: 4628 mov r0, r5 - 29fb2: 685b ldr r3, [r3, #4] - 29fb4: b2e2 uxtb r2, r4 - 29fb6: 4798 blx r3 + 2a096: a902 add r1, sp, #8 + 2a098: 4628 mov r0, r5 + 2a09a: 685b ldr r3, [r3, #4] + 2a09c: b2e2 uxtb r2, r4 + 2a09e: 4798 blx r3 } return count; } - 29fb8: 4630 mov r0, r6 - 29fba: b006 add sp, #24 - 29fbc: ecbd 8b02 vpop {d8} - 29fc0: bd70 pop {r4, r5, r6, pc} + 2a0a0: 4630 mov r0, r6 + 2a0a2: b006 add sp, #24 + 2a0a4: ecbd 8b02 vpop {d8} + 2a0a8: bd70 pop {r4, r5, r6, pc} return write((const uint8_t *)str, strlen(str)); } - 29fc2: 682b ldr r3, [r5, #0] - 29fc4: 2203 movs r2, #3 - 29fc6: 491a ldr r1, [pc, #104] ; (2a030 ) - 29fc8: 685b ldr r3, [r3, #4] - 29fca: b006 add sp, #24 - 29fcc: ecbd 8b02 vpop {d8} - 29fd0: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 29fd4: 4718 bx r3 - 29fd6: 6803 ldr r3, [r0, #0] - 29fd8: 2203 movs r2, #3 - 29fda: 4916 ldr r1, [pc, #88] ; (2a034 ) - 29fdc: e7f4 b.n 29fc8 + 2a0aa: 682b ldr r3, [r5, #0] + 2a0ac: 2203 movs r2, #3 + 2a0ae: 491a ldr r1, [pc, #104] ; (2a118 ) + 2a0b0: 685b ldr r3, [r3, #4] + 2a0b2: b006 add sp, #24 + 2a0b4: ecbd 8b02 vpop {d8} + 2a0b8: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 2a0bc: 4718 bx r3 + 2a0be: 6803 ldr r3, [r0, #0] + 2a0c0: 2203 movs r2, #3 + 2a0c2: 4916 ldr r1, [pc, #88] ; (2a11c ) + 2a0c4: e7f4 b.n 2a0b0 number = -number; - 29fde: eeb1 0b40 vneg.f64 d0, d0 + 2a0c6: eeb1 0b40 vneg.f64 d0, d0 sign = 1; - 29fe2: 2301 movs r3, #1 - 29fe4: e7a0 b.n 29f28 - 29fe6: 6803 ldr r3, [r0, #0] - 29fe8: 2203 movs r2, #3 - 29fea: 4913 ldr r1, [pc, #76] ; (2a038 ) - 29fec: e7ec b.n 29fc8 + 2a0ca: 2301 movs r3, #1 + 2a0cc: e7a0 b.n 2a010 + 2a0ce: 6803 ldr r3, [r0, #0] + 2a0d0: 2203 movs r2, #3 + 2a0d2: 4913 ldr r1, [pc, #76] ; (2a120 ) + 2a0d4: e7ec b.n 2a0b0 number += rounding; - 29fee: ee30 0b07 vadd.f64 d0, d0, d7 - 29ff2: 220a movs r2, #10 - 29ff4: 4628 mov r0, r5 - 29ff6: eefc 7bc0 vcvt.u32.f64 s15, d0 - 29ffa: ee17 1a90 vmov r1, s15 -} - 29ffe: b006 add sp, #24 - 2a000: ecbd 8b02 vpop {d8} - 2a004: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} - 2a008: f7ff be9a b.w 29d40 - 2a00c: f3af 8000 nop.w - 2a010: ffffffff .word 0xffffffff - 2a014: 7fefffff .word 0x7fefffff - 2a018: e0000000 .word 0xe0000000 - 2a01c: 41efffff .word 0x41efffff - 2a020: e0000000 .word 0xe0000000 - 2a024: c1efffff .word 0xc1efffff - 2a028: 9999999a .word 0x9999999a - 2a02c: 3fb99999 .word 0x3fb99999 - 2a030: 200036a8 .word 0x200036a8 - 2a034: 200036a4 .word 0x200036a4 - 2a038: 200036a0 .word 0x200036a0 - -0002a03c : + 2a0d6: ee30 0b07 vadd.f64 d0, d0, d7 + 2a0da: 220a movs r2, #10 + 2a0dc: 4628 mov r0, r5 + 2a0de: eefc 7bc0 vcvt.u32.f64 s15, d0 + 2a0e2: ee17 1a90 vmov r1, s15 +} + 2a0e6: b006 add sp, #24 + 2a0e8: ecbd 8b02 vpop {d8} + 2a0ec: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} + 2a0f0: f7ff be9c b.w 29e2c + 2a0f4: f3af 8000 nop.w + 2a0f8: ffffffff .word 0xffffffff + 2a0fc: 7fefffff .word 0x7fefffff + 2a100: e0000000 .word 0xe0000000 + 2a104: 41efffff .word 0x41efffff + 2a108: e0000000 .word 0xe0000000 + 2a10c: c1efffff .word 0xc1efffff + 2a110: 9999999a .word 0x9999999a + 2a114: 3fb99999 .word 0x3fb99999 + 2a118: 20003768 .word 0x20003768 + 2a11c: 20003764 .word 0x20003764 + 2a120: 20003760 .word 0x20003760 + +0002a124 : { init(); *this = pgmstr; } String::String(const String &value) - 2a03c: b5f8 push {r3, r4, r5, r6, r7, lr} + 2a124: b5f8 push {r3, r4, r5, r6, r7, lr} rhs.len = 0; } String & String::operator = (const String &rhs) { if (this == &rhs) return *this; - 2a03e: 4288 cmp r0, r1 + 2a126: 4288 cmp r0, r1 buffer = NULL; - 2a040: f04f 0500 mov.w r5, #0 + 2a128: f04f 0500 mov.w r5, #0 String::String(const String &value) - 2a044: 4604 mov r4, r0 + 2a12c: 4604 mov r4, r0 len = 0; - 2a046: 6085 str r5, [r0, #8] + 2a12e: 6085 str r5, [r0, #8] flags = 0; - 2a048: 7305 strb r5, [r0, #12] + 2a130: 7305 strb r5, [r0, #12] capacity = 0; - 2a04a: e9c0 5500 strd r5, r5, [r0] + 2a132: e9c0 5500 strd r5, r5, [r0] if (this == &rhs) return *this; - 2a04e: d002 beq.n 2a056 - 2a050: 688e ldr r6, [r1, #8] + 2a136: d002 beq.n 2a13e + 2a138: 688e ldr r6, [r1, #8] return copy(rhs.buffer, rhs.len); - 2a052: 680f ldr r7, [r1, #0] + 2a13a: 680f ldr r7, [r1, #0] if (length == 0) { - 2a054: b90e cbnz r6, 2a05a + 2a13c: b90e cbnz r6, 2a142 } - 2a056: 4620 mov r0, r4 - 2a058: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2a13e: 4620 mov r0, r4 + 2a140: bdf8 pop {r3, r4, r5, r6, r7, pc} char *newbuffer = (char *)realloc(buffer, maxStrLen + 1); - 2a05a: 1c70 adds r0, r6, #1 - 2a05c: f003 fbd2 bl 2d804 + 2a142: 1c70 adds r0, r6, #1 + 2a144: f003 fbd2 bl 2d8ec if (newbuffer) { - 2a060: 2800 cmp r0, #0 - 2a062: d0f8 beq.n 2a056 + 2a148: 2800 cmp r0, #0 + 2a14a: d0f8 beq.n 2a13e strcpy(buffer, cstr); - 2a064: 4639 mov r1, r7 + 2a14c: 4639 mov r1, r7 if (len == 0) buffer[0] = 0; - 2a066: 7005 strb r5, [r0, #0] + 2a14e: 7005 strb r5, [r0, #0] buffer = newbuffer; - 2a068: 6020 str r0, [r4, #0] + 2a150: 6020 str r0, [r4, #0] len = length; - 2a06a: e9c4 6601 strd r6, r6, [r4, #4] + 2a152: e9c4 6601 strd r6, r6, [r4, #4] strcpy(buffer, cstr); - 2a06e: f004 fc85 bl 2e97c + 2a156: f004 fc81 bl 2ea5c } - 2a072: 4620 mov r0, r4 - 2a074: bdf8 pop {r3, r4, r5, r6, r7, pc} - 2a076: bf00 nop + 2a15a: 4620 mov r0, r4 + 2a15c: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2a15e: bf00 nop -0002a078 : +0002a160 : String::~String() - 2a078: b510 push {r4, lr} - 2a07a: 4604 mov r4, r0 + 2a160: b510 push {r4, lr} + 2a162: 4604 mov r4, r0 free(buffer); - 2a07c: 6800 ldr r0, [r0, #0] - 2a07e: f003 fbc9 bl 2d814 + 2a164: 6800 ldr r0, [r0, #0] + 2a166: f003 fbc9 bl 2d8fc } - 2a082: 4620 mov r0, r4 - 2a084: bd10 pop {r4, pc} - 2a086: bf00 nop + 2a16a: 4620 mov r0, r4 + 2a16c: bd10 pop {r4, pc} + 2a16e: bf00 nop -0002a088 : +0002a170 : { - 2a088: b5f8 push {r3, r4, r5, r6, r7, lr} - 2a08a: 4604 mov r4, r0 + 2a170: b5f8 push {r3, r4, r5, r6, r7, lr} + 2a172: 4604 mov r4, r0 if (length == 0) { - 2a08c: 4615 mov r5, r2 - 2a08e: b932 cbnz r2, 2a09e + 2a174: 4615 mov r5, r2 + 2a176: b932 cbnz r2, 2a186 if (buffer) buffer[0] = 0; - 2a090: 6803 ldr r3, [r0, #0] - 2a092: b103 cbz r3, 2a096 - 2a094: 701a strb r2, [r3, #0] + 2a178: 6803 ldr r3, [r0, #0] + 2a17a: b103 cbz r3, 2a17e + 2a17c: 701a strb r2, [r3, #0] len = 0; - 2a096: 2300 movs r3, #0 + 2a17e: 2300 movs r3, #0 } - 2a098: 4620 mov r0, r4 + 2a180: 4620 mov r0, r4 len = 0; - 2a09a: 60a3 str r3, [r4, #8] + 2a182: 60a3 str r3, [r4, #8] } - 2a09c: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2a184: bdf8 pop {r3, r4, r5, r6, r7, pc} if (capacity >= size) return 1; - 2a09e: 6843 ldr r3, [r0, #4] - 2a0a0: 460e mov r6, r1 - 2a0a2: 429a cmp r2, r3 - 2a0a4: d91c bls.n 2a0e0 + 2a186: 6843 ldr r3, [r0, #4] + 2a188: 460e mov r6, r1 + 2a18a: 429a cmp r2, r3 + 2a18c: d91c bls.n 2a1c8 char *newbuffer = (char *)realloc(buffer, maxStrLen + 1); - 2a0a6: 1c51 adds r1, r2, #1 - 2a0a8: 6800 ldr r0, [r0, #0] - 2a0aa: f003 fe77 bl 2dd9c + 2a18e: 1c51 adds r1, r2, #1 + 2a190: 6800 ldr r0, [r0, #0] + 2a192: f003 fe77 bl 2de84 if (newbuffer) { - 2a0ae: 4607 mov r7, r0 - 2a0b0: b160 cbz r0, 2a0cc + 2a196: 4607 mov r7, r0 + 2a198: b160 cbz r0, 2a1b4 if (len == 0) buffer[0] = 0; - 2a0b2: 68a3 ldr r3, [r4, #8] + 2a19a: 68a3 ldr r3, [r4, #8] capacity = maxStrLen; - 2a0b4: e9c4 0500 strd r0, r5, [r4] + 2a19c: e9c4 0500 strd r0, r5, [r4] if (len == 0) buffer[0] = 0; - 2a0b8: b90b cbnz r3, 2a0be - 2a0ba: 7003 strb r3, [r0, #0] + 2a1a0: b90b cbnz r3, 2a1a6 + 2a1a2: 7003 strb r3, [r0, #0] strcpy(buffer, cstr); - 2a0bc: 6827 ldr r7, [r4, #0] - 2a0be: 4631 mov r1, r6 - 2a0c0: 4638 mov r0, r7 + 2a1a4: 6827 ldr r7, [r4, #0] + 2a1a6: 4631 mov r1, r6 + 2a1a8: 4638 mov r0, r7 len = length; - 2a0c2: 60a5 str r5, [r4, #8] + 2a1aa: 60a5 str r5, [r4, #8] strcpy(buffer, cstr); - 2a0c4: f004 fc5a bl 2e97c + 2a1ac: f004 fc56 bl 2ea5c } - 2a0c8: 4620 mov r0, r4 - 2a0ca: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2a1b0: 4620 mov r0, r4 + 2a1b2: bdf8 pop {r3, r4, r5, r6, r7, pc} if (buffer) { - 2a0cc: 6820 ldr r0, [r4, #0] - 2a0ce: b110 cbz r0, 2a0d6 + 2a1b4: 6820 ldr r0, [r4, #0] + 2a1b6: b110 cbz r0, 2a1be free(buffer); - 2a0d0: f003 fba0 bl 2d814 + 2a1b8: f003 fba0 bl 2d8fc buffer = NULL; - 2a0d4: 6027 str r7, [r4, #0] + 2a1bc: 6027 str r7, [r4, #0] len = capacity = 0; - 2a0d6: 2300 movs r3, #0 + 2a1be: 2300 movs r3, #0 } - 2a0d8: 4620 mov r0, r4 + 2a1c0: 4620 mov r0, r4 len = capacity = 0; - 2a0da: e9c4 3301 strd r3, r3, [r4, #4] + 2a1c2: e9c4 3301 strd r3, r3, [r4, #4] } - 2a0de: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2a1c6: bdf8 pop {r3, r4, r5, r6, r7, pc} if (buffer) buffer[0] = 0; - 2a0e0: 6807 ldr r7, [r0, #0] + 2a1c8: 6807 ldr r7, [r0, #0] strcpy(buffer, cstr); - 2a0e2: 4631 mov r1, r6 + 2a1ca: 4631 mov r1, r6 len = length; - 2a0e4: 60a5 str r5, [r4, #8] + 2a1cc: 60a5 str r5, [r4, #8] strcpy(buffer, cstr); - 2a0e6: 4638 mov r0, r7 - 2a0e8: f004 fc48 bl 2e97c + 2a1ce: 4638 mov r0, r7 + 2a1d0: f004 fc44 bl 2ea5c return *this; - 2a0ec: e7ec b.n 2a0c8 - 2a0ee: bf00 nop + 2a1d4: e7ec b.n 2a1b0 + 2a1d6: bf00 nop -0002a0f0 : +0002a1d8 : String::String(const char *cstr) - 2a0f0: b538 push {r3, r4, r5, lr} + 2a1d8: b538 push {r3, r4, r5, lr} buffer = NULL; - 2a0f2: 2300 movs r3, #0 + 2a1da: 2300 movs r3, #0 String::String(const char *cstr) - 2a0f4: 4604 mov r4, r0 + 2a1dc: 4604 mov r4, r0 capacity = 0; - 2a0f6: e9c0 3300 strd r3, r3, [r0] + 2a1de: e9c0 3300 strd r3, r3, [r0] len = 0; - 2a0fa: 6083 str r3, [r0, #8] + 2a1e2: 6083 str r3, [r0, #8] flags = 0; - 2a0fc: 7303 strb r3, [r0, #12] + 2a1e4: 7303 strb r3, [r0, #12] if (cstr) copy(cstr, strlen(cstr)); - 2a0fe: b141 cbz r1, 2a112 - 2a100: 460d mov r5, r1 - 2a102: 4608 mov r0, r1 - 2a104: f004 fd1c bl 2eb40 - 2a108: 4602 mov r2, r0 - 2a10a: 4629 mov r1, r5 - 2a10c: 4620 mov r0, r4 - 2a10e: f7ff ffbb bl 2a088 -} - 2a112: 4620 mov r0, r4 - 2a114: bd38 pop {r3, r4, r5, pc} - 2a116: bf00 nop - -0002a118 : + 2a1e6: b141 cbz r1, 2a1fa + 2a1e8: 460d mov r5, r1 + 2a1ea: 4608 mov r0, r1 + 2a1ec: f004 fd28 bl 2ec40 + 2a1f0: 4602 mov r2, r0 + 2a1f2: 4629 mov r1, r5 + 2a1f4: 4620 mov r0, r4 + 2a1f6: f7ff ffbb bl 2a170 +} + 2a1fa: 4620 mov r0, r4 + 2a1fc: bd38 pop {r3, r4, r5, pc} + 2a1fe: bf00 nop + +0002a200 : return buffer[index]; } void String::getBytes(unsigned char *buf, unsigned int bufsize, unsigned int index) const { if (!bufsize || !buf) return; - 2a118: b1c2 cbz r2, 2a14c + 2a200: b1c2 cbz r2, 2a234 { - 2a11a: b570 push {r4, r5, r6, lr} + 2a202: b570 push {r4, r5, r6, lr} if (!bufsize || !buf) return; - 2a11c: fab1 f681 clz r6, r1 - 2a120: 460c mov r4, r1 - 2a122: 0976 lsrs r6, r6, #5 - 2a124: b119 cbz r1, 2a12e + 2a204: fab1 f681 clz r6, r1 + 2a208: 460c mov r4, r1 + 2a20a: 0976 lsrs r6, r6, #5 + 2a20c: b119 cbz r1, 2a216 if (index >= len) { - 2a126: 6885 ldr r5, [r0, #8] - 2a128: 429d cmp r5, r3 - 2a12a: d801 bhi.n 2a130 + 2a20e: 6885 ldr r5, [r0, #8] + 2a210: 429d cmp r5, r3 + 2a212: d801 bhi.n 2a218 buf[0] = 0; - 2a12c: 700e strb r6, [r1, #0] + 2a214: 700e strb r6, [r1, #0] } unsigned int n = bufsize - 1; if (n > len - index) n = len - index; strncpy((char *)buf, buffer + index, n); buf[n] = 0; } - 2a12e: bd70 pop {r4, r5, r6, pc} + 2a216: bd70 pop {r4, r5, r6, pc} if (n > len - index) n = len - index; - 2a130: 1aed subs r5, r5, r3 + 2a218: 1aed subs r5, r5, r3 unsigned int n = bufsize - 1; - 2a132: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff + 2a21a: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff strncpy((char *)buf, buffer + index, n); - 2a136: 6801 ldr r1, [r0, #0] - 2a138: 4620 mov r0, r4 - 2a13a: 4565 cmp r5, ip - 2a13c: 4419 add r1, r3 - 2a13e: bf28 it cs - 2a140: 4665 movcs r5, ip - 2a142: 462a mov r2, r5 - 2a144: f004 fa14 bl 2e570 + 2a21e: 6801 ldr r1, [r0, #0] + 2a220: 4620 mov r0, r4 + 2a222: 4565 cmp r5, ip + 2a224: 4419 add r1, r3 + 2a226: bf28 it cs + 2a228: 4665 movcs r5, ip + 2a22a: 462a mov r2, r5 + 2a22c: f004 fa14 bl 2e658 buf[n] = 0; - 2a148: 5566 strb r6, [r4, r5] + 2a230: 5566 strb r6, [r4, r5] } - 2a14a: bd70 pop {r4, r5, r6, pc} - 2a14c: 4770 bx lr - 2a14e: bf00 nop + 2a232: bd70 pop {r4, r5, r6, pc} + 2a234: 4770 bx lr + 2a236: bf00 nop -0002a150 : +0002a238 : if (pin > sizeof(pin_to_channel)) return 0; - 2a150: 281c cmp r0, #28 - 2a152: d839 bhi.n 2a1c8 + 2a238: 281c cmp r0, #28 + 2a23a: d839 bhi.n 2a2b0 { - 2a154: b5f8 push {r3, r4, r5, r6, r7, lr} + 2a23c: b5f8 push {r3, r4, r5, r6, r7, lr} if (calibrating) wait_for_cal(); - 2a156: 4f1d ldr r7, [pc, #116] ; (2a1cc ) - 2a158: 4604 mov r4, r0 - 2a15a: 783b ldrb r3, [r7, #0] - 2a15c: b993 cbnz r3, 2a184 + 2a23e: 4f1d ldr r7, [pc, #116] ; (2a2b4 ) + 2a240: 4604 mov r4, r0 + 2a242: 783b ldrb r3, [r7, #0] + 2a244: b993 cbnz r3, 2a26c uint8_t ch = pin_to_channel[pin]; - 2a15e: 4b1c ldr r3, [pc, #112] ; (2a1d0 ) - 2a160: 5d1b ldrb r3, [r3, r4] + 2a246: 4b1c ldr r3, [pc, #112] ; (2a2b8 ) + 2a248: 5d1b ldrb r3, [r3, r4] if (ch == 255) return 0; - 2a162: 2bff cmp r3, #255 ; 0xff - 2a164: d01f beq.n 2a1a6 + 2a24a: 2bff cmp r3, #255 ; 0xff + 2a24c: d01f beq.n 2a28e if(!(ch & 0x80)) { - 2a166: 061c lsls r4, r3, #24 - 2a168: d41f bmi.n 2a1aa + 2a24e: 061c lsls r4, r3, #24 + 2a250: d41f bmi.n 2a292 ADC1_HC0 = ch; - 2a16a: 4c1a ldr r4, [pc, #104] ; (2a1d4 ) - 2a16c: 6023 str r3, [r4, #0] + 2a252: 4c1a ldr r4, [pc, #104] ; (2a2bc ) + 2a254: 6023 str r3, [r4, #0] while (!(ADC1_HS & ADC_HS_COCO0)) { - 2a16e: 6a23 ldr r3, [r4, #32] - 2a170: 07d8 lsls r0, r3, #31 - 2a172: d404 bmi.n 2a17e + 2a256: 6a23 ldr r3, [r4, #32] + 2a258: 07d8 lsls r0, r3, #31 + 2a25a: d404 bmi.n 2a266 yield(); // TODO: what happens if yield-called code uses analogRead() - 2a174: f002 fa22 bl 2c5bc + 2a25c: f002 fa22 bl 2c6a4 while (!(ADC1_HS & ADC_HS_COCO0)) { - 2a178: 6a23 ldr r3, [r4, #32] - 2a17a: 07d9 lsls r1, r3, #31 - 2a17c: d5fa bpl.n 2a174 + 2a260: 6a23 ldr r3, [r4, #32] + 2a262: 07d9 lsls r1, r3, #31 + 2a264: d5fa bpl.n 2a25c return ADC1_R0; - 2a17e: 4b15 ldr r3, [pc, #84] ; (2a1d4 ) - 2a180: 6a58 ldr r0, [r3, #36] ; 0x24 + 2a266: 4b15 ldr r3, [pc, #84] ; (2a2bc ) + 2a268: 6a58 ldr r0, [r3, #36] ; 0x24 } - 2a182: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2a26a: bdf8 pop {r3, r4, r5, r6, r7, pc} while ((ADC1_GC & ADC_GC_CAL) || (ADC2_GC & ADC_GC_CAL)) { - 2a184: 4d13 ldr r5, [pc, #76] ; (2a1d4 ) - 2a186: 4e14 ldr r6, [pc, #80] ; (2a1d8 ) - 2a188: e001 b.n 2a18e + 2a26c: 4d13 ldr r5, [pc, #76] ; (2a2bc ) + 2a26e: 4e14 ldr r6, [pc, #80] ; (2a2c0 ) + 2a270: e001 b.n 2a276 yield(); - 2a18a: f002 fa17 bl 2c5bc + 2a272: f002 fa17 bl 2c6a4 while ((ADC1_GC & ADC_GC_CAL) || (ADC2_GC & ADC_GC_CAL)) { - 2a18e: 6cab ldr r3, [r5, #72] ; 0x48 - 2a190: 061b lsls r3, r3, #24 - 2a192: d4fa bmi.n 2a18a - 2a194: 6cb3 ldr r3, [r6, #72] ; 0x48 - 2a196: f013 0380 ands.w r3, r3, #128 ; 0x80 - 2a19a: d1f6 bne.n 2a18a + 2a276: 6cab ldr r3, [r5, #72] ; 0x48 + 2a278: 061b lsls r3, r3, #24 + 2a27a: d4fa bmi.n 2a272 + 2a27c: 6cb3 ldr r3, [r6, #72] ; 0x48 + 2a27e: f013 0380 ands.w r3, r3, #128 ; 0x80 + 2a282: d1f6 bne.n 2a272 calibrating = 0; - 2a19c: 703b strb r3, [r7, #0] + 2a284: 703b strb r3, [r7, #0] uint8_t ch = pin_to_channel[pin]; - 2a19e: 4b0c ldr r3, [pc, #48] ; (2a1d0 ) - 2a1a0: 5d1b ldrb r3, [r3, r4] + 2a286: 4b0c ldr r3, [pc, #48] ; (2a2b8 ) + 2a288: 5d1b ldrb r3, [r3, r4] if (ch == 255) return 0; - 2a1a2: 2bff cmp r3, #255 ; 0xff - 2a1a4: d1df bne.n 2a166 + 2a28a: 2bff cmp r3, #255 ; 0xff + 2a28c: d1df bne.n 2a24e if (pin > sizeof(pin_to_channel)) return 0; - 2a1a6: 2000 movs r0, #0 + 2a28e: 2000 movs r0, #0 } - 2a1a8: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2a290: bdf8 pop {r3, r4, r5, r6, r7, pc} ADC2_HC0 = ch & 0x7f; - 2a1aa: 4c0b ldr r4, [pc, #44] ; (2a1d8 ) - 2a1ac: f003 037f and.w r3, r3, #127 ; 0x7f - 2a1b0: 6023 str r3, [r4, #0] + 2a292: 4c0b ldr r4, [pc, #44] ; (2a2c0 ) + 2a294: f003 037f and.w r3, r3, #127 ; 0x7f + 2a298: 6023 str r3, [r4, #0] while (!(ADC2_HS & ADC_HS_COCO0)) { - 2a1b2: 6a23 ldr r3, [r4, #32] - 2a1b4: 07da lsls r2, r3, #31 - 2a1b6: d404 bmi.n 2a1c2 + 2a29a: 6a23 ldr r3, [r4, #32] + 2a29c: 07da lsls r2, r3, #31 + 2a29e: d404 bmi.n 2a2aa yield(); // TODO: what happens if yield-called code uses analogRead() - 2a1b8: f002 fa00 bl 2c5bc + 2a2a0: f002 fa00 bl 2c6a4 while (!(ADC2_HS & ADC_HS_COCO0)) { - 2a1bc: 6a23 ldr r3, [r4, #32] - 2a1be: 07db lsls r3, r3, #31 - 2a1c0: d5fa bpl.n 2a1b8 + 2a2a4: 6a23 ldr r3, [r4, #32] + 2a2a6: 07db lsls r3, r3, #31 + 2a2a8: d5fa bpl.n 2a2a0 return ADC2_R0; - 2a1c2: 4b05 ldr r3, [pc, #20] ; (2a1d8 ) - 2a1c4: 6a58 ldr r0, [r3, #36] ; 0x24 + 2a2aa: 4b05 ldr r3, [pc, #20] ; (2a2c0 ) + 2a2ac: 6a58 ldr r0, [r3, #36] ; 0x24 } - 2a1c6: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2a2ae: bdf8 pop {r3, r4, r5, r6, r7, pc} if (pin > sizeof(pin_to_channel)) return 0; - 2a1c8: 2000 movs r0, #0 + 2a2b0: 2000 movs r0, #0 } - 2a1ca: 4770 bx lr - 2a1cc: 2000bc81 .word 0x2000bc81 - 2a1d0: 200047d0 .word 0x200047d0 - 2a1d4: 400c4000 .word 0x400c4000 - 2a1d8: 400c8000 .word 0x400c8000 + 2a2b2: 4770 bx lr + 2a2b4: 2000bca1 .word 0x2000bca1 + 2a2b8: 20004890 .word 0x20004890 + 2a2bc: 400c4000 .word 0x400c4000 + 2a2c0: 400c8000 .word 0x400c8000 -0002a1dc : +0002a2c4 : uint32_t cbcmr = CCM_CBCMR; // pg 1023 uint32_t dcdc = DCDC_REG3; // compute required voltage uint32_t voltage = 1150; // default = 1.15V if (frequency > 528000000) { - 2a1dc: 49a2 ldr r1, [pc, #648] ; (2a468 ) + 2a2c4: 49a2 ldr r1, [pc, #648] ; (2a550 ) uint32_t cbcdr = CCM_CBCDR; // pg 1021 - 2a1de: 4ba3 ldr r3, [pc, #652] ; (2a46c ) + 2a2c6: 4ba3 ldr r3, [pc, #652] ; (2a554 ) if (frequency > 528000000) { - 2a1e0: 4288 cmp r0, r1 + 2a2c8: 4288 cmp r0, r1 { - 2a1e2: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 2a2ca: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} uint32_t dcdc = DCDC_REG3; - 2a1e6: 4ca2 ldr r4, [pc, #648] ; (2a470 ) + 2a2ce: 4ca2 ldr r4, [pc, #648] ; (2a558 ) uint32_t cbcdr = CCM_CBCDR; // pg 1021 - 2a1e8: 695e ldr r6, [r3, #20] + 2a2d0: 695e ldr r6, [r3, #20] uint32_t cbcmr = CCM_CBCMR; // pg 1023 - 2a1ea: 699a ldr r2, [r3, #24] + 2a2d2: 699a ldr r2, [r3, #24] uint32_t dcdc = DCDC_REG3; - 2a1ec: f8d4 800c ldr.w r8, [r4, #12] + 2a2d4: f8d4 800c ldr.w r8, [r4, #12] if (frequency > 528000000) { - 2a1f0: d91b bls.n 2a22a + 2a2d8: d91b bls.n 2a312 voltage = 1250; // 1.25V #if defined(OVERCLOCK_STEPSIZE) && defined(OVERCLOCK_MAX_VOLT) if (frequency > 600000000) { - 2a1f2: 4ba0 ldr r3, [pc, #640] ; (2a474 ) - 2a1f4: 4298 cmp r0, r3 - 2a1f6: f240 8102 bls.w 2a3fe + 2a2da: 4ba0 ldr r3, [pc, #640] ; (2a55c ) + 2a2dc: 4298 cmp r0, r3 + 2a2de: f240 8102 bls.w 2a4e6 voltage += ((frequency - 600000000) / OVERCLOCK_STEPSIZE) * 25; - 2a1fa: 1ac3 subs r3, r0, r3 - 2a1fc: 499e ldr r1, [pc, #632] ; (2a478 ) - 2a1fe: 0a1b lsrs r3, r3, #8 - 2a200: fba1 1303 umull r1, r3, r1, r3 + 2a2e2: 1ac3 subs r3, r0, r3 + 2a2e4: 499e ldr r1, [pc, #632] ; (2a560 ) + 2a2e6: 0a1b lsrs r3, r3, #8 + 2a2e8: fba1 1303 umull r1, r3, r1, r3 voltage = 950; // 0.95 } // if voltage needs to increase, do it before switch clock speed CCM_CCGR6 |= CCM_CCGR6_DCDC(CCM_CCGR_ON); if ((dcdc & DCDC_REG3_TRG_MASK) < DCDC_REG3_TRG((voltage - 800) / 25)) { - 2a204: f240 6127 movw r1, #1575 ; 0x627 + 2a2ec: f240 6127 movw r1, #1575 ; 0x627 voltage += ((frequency - 600000000) / OVERCLOCK_STEPSIZE) * 25; - 2a208: 09db lsrs r3, r3, #7 - 2a20a: eb03 0383 add.w r3, r3, r3, lsl #2 - 2a20e: eb03 0383 add.w r3, r3, r3, lsl #2 - 2a212: f203 43e2 addw r3, r3, #1250 ; 0x4e2 + 2a2f0: 09db lsrs r3, r3, #7 + 2a2f2: eb03 0383 add.w r3, r3, r3, lsl #2 + 2a2f6: eb03 0383 add.w r3, r3, r3, lsl #2 + 2a2fa: f203 43e2 addw r3, r3, #1250 ; 0x4e2 if ((dcdc & DCDC_REG3_TRG_MASK) < DCDC_REG3_TRG((voltage - 800) / 25)) { - 2a216: 428b cmp r3, r1 - 2a218: bf28 it cs - 2a21a: 460b movcs r3, r1 - 2a21c: f5a3 7748 sub.w r7, r3, #800 ; 0x320 - 2a220: 4b96 ldr r3, [pc, #600] ; (2a47c ) - 2a222: fba3 3707 umull r3, r7, r3, r7 - 2a226: 08ff lsrs r7, r7, #3 - 2a228: e004 b.n 2a234 + 2a2fe: 428b cmp r3, r1 + 2a300: bf28 it cs + 2a302: 460b movcs r3, r1 + 2a304: f5a3 7748 sub.w r7, r3, #800 ; 0x320 + 2a308: 4b96 ldr r3, [pc, #600] ; (2a564 ) + 2a30a: fba3 3707 umull r3, r7, r3, r7 + 2a30e: 08ff lsrs r7, r7, #3 + 2a310: e004 b.n 2a31c } else if (frequency <= 24000000) { - 2a22a: 4f95 ldr r7, [pc, #596] ; (2a480 ) - 2a22c: 42b8 cmp r0, r7 - 2a22e: bf8c ite hi - 2a230: 270e movhi r7, #14 - 2a232: 2706 movls r7, #6 + 2a312: 4f95 ldr r7, [pc, #596] ; (2a568 ) + 2a314: 42b8 cmp r0, r7 + 2a316: bf8c ite hi + 2a318: 270e movhi r7, #14 + 2a31a: 2706 movls r7, #6 CCM_CCGR6 |= CCM_CCGR6_DCDC(CCM_CCGR_ON); - 2a234: 498d ldr r1, [pc, #564] ; (2a46c ) + 2a31c: 498d ldr r1, [pc, #564] ; (2a554 ) if ((dcdc & DCDC_REG3_TRG_MASK) < DCDC_REG3_TRG((voltage - 800) / 25)) { - 2a236: f008 091f and.w r9, r8, #31 + 2a31e: f008 091f and.w r9, r8, #31 CCM_CCGR6 |= CCM_CCGR6_DCDC(CCM_CCGR_ON); - 2a23a: f8d1 3080 ldr.w r3, [r1, #128] ; 0x80 + 2a322: f8d1 3080 ldr.w r3, [r1, #128] ; 0x80 if ((dcdc & DCDC_REG3_TRG_MASK) < DCDC_REG3_TRG((voltage - 800) / 25)) { - 2a23e: 45b9 cmp r9, r7 + 2a326: 45b9 cmp r9, r7 CCM_CCGR6 |= CCM_CCGR6_DCDC(CCM_CCGR_ON); - 2a240: f043 03c0 orr.w r3, r3, #192 ; 0xc0 - 2a244: f8c1 3080 str.w r3, [r1, #128] ; 0x80 + 2a328: f043 03c0 orr.w r3, r3, #192 ; 0xc0 + 2a32c: f8c1 3080 str.w r3, [r1, #128] ; 0x80 if ((dcdc & DCDC_REG3_TRG_MASK) < DCDC_REG3_TRG((voltage - 800) / 25)) { - 2a248: d20c bcs.n 2a264 + 2a330: d20c bcs.n 2a34c printf("Increasing voltage to %u mV\n", voltage); dcdc &= ~DCDC_REG3_TRG_MASK; - 2a24a: f028 081f bic.w r8, r8, #31 + 2a332: f028 081f bic.w r8, r8, #31 dcdc |= DCDC_REG3_TRG((voltage - 800) / 25); DCDC_REG3 = dcdc; - 2a24e: f5a1 21f8 sub.w r1, r1, #507904 ; 0x7c000 + 2a336: f5a1 21f8 sub.w r1, r1, #507904 ; 0x7c000 dcdc |= DCDC_REG3_TRG((voltage - 800) / 25); - 2a252: ea48 0807 orr.w r8, r8, r7 + 2a33a: ea48 0807 orr.w r8, r8, r7 DCDC_REG3 = dcdc; - 2a256: f8c1 800c str.w r8, [r1, #12] + 2a33e: f8c1 800c str.w r8, [r1, #12] while (!(DCDC_REG0 & DCDC_REG0_STS_DC_OK)) ; // wait voltage settling - 2a25a: 680b ldr r3, [r1, #0] - 2a25c: 2b00 cmp r3, #0 - 2a25e: dafc bge.n 2a25a + 2a342: 680b ldr r3, [r1, #0] + 2a344: 2b00 cmp r3, #0 + 2a346: dafc bge.n 2a342 scale_cpu_cycles_to_microseconds = 0xFFFFFFFFu / (uint32_t)(frequency / 1000000u); printf("New Frequency: ARM=%u, IPG=%u\n", frequency, frequency / div_ipg); // if voltage needs to decrease, do it after switch clock speed if ((dcdc & DCDC_REG3_TRG_MASK) > DCDC_REG3_TRG((voltage - 800) / 25)) { - 2a260: f008 091f and.w r9, r8, #31 + 2a348: f008 091f and.w r9, r8, #31 if (!(cbcdr & CCM_CBCDR_PERIPH_CLK_SEL)) { - 2a264: f016 7300 ands.w r3, r6, #33554432 ; 0x2000000 - 2a268: d124 bne.n 2a2b4 + 2a34c: f016 7300 ands.w r3, r6, #33554432 ; 0x2000000 + 2a350: d124 bne.n 2a39c if ((CCM_ANALOG_PLL_USB1 & need1s) == need1s) { - 2a26a: 4986 ldr r1, [pc, #536] ; (2a484 ) - 2a26c: 690c ldr r4, [r1, #16] - 2a26e: 4986 ldr r1, [pc, #536] ; (2a488 ) - 2a270: 43a1 bics r1, r4 - 2a272: f000 80ea beq.w 2a44a + 2a352: 4986 ldr r1, [pc, #536] ; (2a56c ) + 2a354: 690c ldr r4, [r1, #16] + 2a356: 4986 ldr r1, [pc, #536] ; (2a570 ) + 2a358: 43a1 bics r1, r4 + 2a35a: f000 80ea beq.w 2a532 if ((cbcmr & CCM_CBCMR_PERIPH_CLK2_SEL_MASK) != CCM_CBCMR_PERIPH_CLK2_SEL(sel)) { - 2a276: f482 5180 eor.w r1, r2, #4096 ; 0x1000 - 2a27a: 4634 mov r4, r6 - 2a27c: f44f 5580 mov.w r5, #4096 ; 0x1000 + 2a35e: f482 5180 eor.w r1, r2, #4096 ; 0x1000 + 2a362: 4634 mov r4, r6 + 2a364: f44f 5580 mov.w r5, #4096 ; 0x1000 if ((cbcdr & CCM_CBCDR_PERIPH_CLK2_PODF_MASK) != CCM_CBCDR_PERIPH_CLK2_PODF(div)) { - 2a280: f014 5f60 tst.w r4, #939524096 ; 0x38000000 - 2a284: d004 beq.n 2a290 + 2a368: f014 5f60 tst.w r4, #939524096 ; 0x38000000 + 2a36c: d004 beq.n 2a378 cbcdr &= ~CCM_CBCDR_PERIPH_CLK2_PODF_MASK; - 2a286: f026 5660 bic.w r6, r6, #939524096 ; 0x38000000 + 2a36e: f026 5660 bic.w r6, r6, #939524096 ; 0x38000000 cbcdr |= CCM_CBCDR_PERIPH_CLK2_PODF(div); - 2a28a: 431e orrs r6, r3 + 2a372: 431e orrs r6, r3 CCM_CBCDR = cbcdr; - 2a28c: 4b77 ldr r3, [pc, #476] ; (2a46c ) - 2a28e: 615e str r6, [r3, #20] + 2a374: 4b77 ldr r3, [pc, #476] ; (2a554 ) + 2a376: 615e str r6, [r3, #20] if ((cbcmr & CCM_CBCMR_PERIPH_CLK2_SEL_MASK) != CCM_CBCMR_PERIPH_CLK2_SEL(sel)) { - 2a290: f411 5f40 tst.w r1, #12288 ; 0x3000 - 2a294: d007 beq.n 2a2a6 + 2a378: f411 5f40 tst.w r1, #12288 ; 0x3000 + 2a37c: d007 beq.n 2a38e cbcmr &= ~CCM_CBCMR_PERIPH_CLK2_SEL_MASK; - 2a296: f422 5240 bic.w r2, r2, #12288 ; 0x3000 + 2a37e: f422 5240 bic.w r2, r2, #12288 ; 0x3000 CCM_CBCMR = cbcmr; - 2a29a: 4974 ldr r1, [pc, #464] ; (2a46c ) + 2a382: 4974 ldr r1, [pc, #464] ; (2a554 ) cbcmr |= CCM_CBCMR_PERIPH_CLK2_SEL(sel); - 2a29c: 432a orrs r2, r5 + 2a384: 432a orrs r2, r5 CCM_CBCMR = cbcmr; - 2a29e: 618a str r2, [r1, #24] + 2a386: 618a str r2, [r1, #24] while (CCM_CDHIPR & CCM_CDHIPR_PERIPH2_CLK_SEL_BUSY) ; // wait - 2a2a0: 6c8b ldr r3, [r1, #72] ; 0x48 - 2a2a2: 071a lsls r2, r3, #28 - 2a2a4: d4fc bmi.n 2a2a0 + 2a388: 6c8b ldr r3, [r1, #72] ; 0x48 + 2a38a: 071a lsls r2, r3, #28 + 2a38c: d4fc bmi.n 2a388 cbcdr |= CCM_CBCDR_PERIPH_CLK_SEL; - 2a2a6: f046 7600 orr.w r6, r6, #33554432 ; 0x2000000 + 2a38e: f046 7600 orr.w r6, r6, #33554432 ; 0x2000000 CCM_CBCDR = cbcdr; - 2a2aa: 4a70 ldr r2, [pc, #448] ; (2a46c ) - 2a2ac: 6156 str r6, [r2, #20] + 2a392: 4a70 ldr r2, [pc, #448] ; (2a554 ) + 2a394: 6156 str r6, [r2, #20] while (CCM_CDHIPR & CCM_CDHIPR_PERIPH_CLK_SEL_BUSY) ; // wait - 2a2ae: 6c93 ldr r3, [r2, #72] ; 0x48 - 2a2b0: 069b lsls r3, r3, #26 - 2a2b2: d4fc bmi.n 2a2ae + 2a396: 6c93 ldr r3, [r2, #72] ; 0x48 + 2a398: 069b lsls r3, r3, #26 + 2a39a: d4fc bmi.n 2a396 while (frequency * div_arm * div_ahb < 648000000) { - 2a2b4: 4c75 ldr r4, [pc, #468] ; (2a48c ) - 2a2b6: 42a0 cmp r0, r4 - 2a2b8: f200 80ce bhi.w 2a458 + 2a39c: 4c75 ldr r4, [pc, #468] ; (2a574 ) + 2a39e: 42a0 cmp r0, r4 + 2a3a0: f200 80ce bhi.w 2a540 uint32_t div_ahb = 1; - 2a2bc: f04f 0c01 mov.w ip, #1 - 2a2c0: 4601 mov r1, r0 + 2a3a4: f04f 0c01 mov.w ip, #1 + 2a3a8: 4601 mov r1, r0 uint32_t div_arm = 1; - 2a2c2: 4663 mov r3, ip + 2a3aa: 4663 mov r3, ip while (frequency * div_arm * div_ahb < 648000000) { - 2a2c4: fb03 1201 mla r2, r3, r1, r1 + 2a3ac: fb03 1201 mla r2, r3, r1, r1 div_arm = div_arm + 1; - 2a2c8: f103 0e01 add.w lr, r3, #1 + 2a3b0: f103 0e01 add.w lr, r3, #1 div_ahb = div_ahb + 1; - 2a2cc: f10c 0501 add.w r5, ip, #1 + 2a3b4: f10c 0501 add.w r5, ip, #1 while (frequency * div_arm * div_ahb < 648000000) { - 2a2d0: 42a2 cmp r2, r4 - 2a2d2: d818 bhi.n 2a306 + 2a3b8: 42a2 cmp r2, r4 + 2a3ba: d818 bhi.n 2a3ee if (div_arm < 8) { - 2a2d4: f1be 0f08 cmp.w lr, #8 + 2a3bc: f1be 0f08 cmp.w lr, #8 div_arm = 1; - 2a2d8: f04f 0301 mov.w r3, #1 + 2a3c0: f04f 0301 mov.w r3, #1 if (div_arm < 8) { - 2a2dc: f040 808d bne.w 2a3fa + 2a3c4: f040 808d bne.w 2a4e2 if (div_ahb < 5) { - 2a2e0: f1bc 0f04 cmp.w ip, #4 - 2a2e4: f200 8091 bhi.w 2a40a + 2a3c8: f1bc 0f04 cmp.w ip, #4 + 2a3cc: f200 8091 bhi.w 2a4f2 while (frequency * div_arm * div_ahb < 648000000) { - 2a2e8: 180a adds r2, r1, r0 - 2a2ea: 42a2 cmp r2, r4 - 2a2ec: f200 80a4 bhi.w 2a438 - 2a2f0: fb05 f100 mul.w r1, r5, r0 + 2a3d0: 180a adds r2, r1, r0 + 2a3d2: 42a2 cmp r2, r4 + 2a3d4: f200 80a4 bhi.w 2a520 + 2a3d8: fb05 f100 mul.w r1, r5, r0 div_ahb = div_ahb + 1; - 2a2f4: 46ac mov ip, r5 + 2a3dc: 46ac mov ip, r5 div_arm = div_arm + 1; - 2a2f6: f103 0e01 add.w lr, r3, #1 + 2a3de: f103 0e01 add.w lr, r3, #1 while (frequency * div_arm * div_ahb < 648000000) { - 2a2fa: fb03 1201 mla r2, r3, r1, r1 + 2a3e2: fb03 1201 mla r2, r3, r1, r1 div_ahb = div_ahb + 1; - 2a2fe: f10c 0501 add.w r5, ip, #1 + 2a3e6: f10c 0501 add.w r5, ip, #1 while (frequency * div_arm * div_ahb < 648000000) { - 2a302: 42a2 cmp r2, r4 - 2a304: d9e6 bls.n 2a2d4 + 2a3ea: 42a2 cmp r2, r4 + 2a3ec: d9e6 bls.n 2a3bc if ((cbcdr & CCM_CBCDR_AHB_PODF_MASK) != CCM_CBCDR_AHB_PODF(div_ahb - 1)) { - 2a306: f10c 31ff add.w r1, ip, #4294967295 ; 0xffffffff - 2a30a: 028c lsls r4, r1, #10 - 2a30c: ea86 2181 eor.w r1, r6, r1, lsl #10 + 2a3ee: f10c 31ff add.w r1, ip, #4294967295 ; 0xffffffff + 2a3f2: 028c lsls r4, r1, #10 + 2a3f4: ea86 2181 eor.w r1, r6, r1, lsl #10 uint32_t mult = (frequency * div_arm * div_ahb + 6000000) / 12000000; - 2a310: 485f ldr r0, [pc, #380] ; (2a490 ) - 2a312: 4410 add r0, r2 + 2a3f8: 485f ldr r0, [pc, #380] ; (2a578 ) + 2a3fa: 4410 add r0, r2 if (mult > 108) mult = 108; - 2a314: 4a5f ldr r2, [pc, #380] ; (2a494 ) - 2a316: 4290 cmp r0, r2 - 2a318: d97f bls.n 2a41a - 2a31a: f8df a1a4 ldr.w sl, [pc, #420] ; 2a4c0 - 2a31e: 226c movs r2, #108 ; 0x6c - 2a320: 485d ldr r0, [pc, #372] ; (2a498 ) + 2a3fc: 4a5f ldr r2, [pc, #380] ; (2a57c ) + 2a3fe: 4290 cmp r0, r2 + 2a400: d97f bls.n 2a502 + 2a402: f8df a1a4 ldr.w sl, [pc, #420] ; 2a5a8 + 2a406: 226c movs r2, #108 ; 0x6c + 2a408: 485d ldr r0, [pc, #372] ; (2a580 ) if ((CCM_ANALOG_PLL_ARM & arm_pll_mask) != (CCM_ANALOG_PLL_ARM_LOCK - 2a322: 4d58 ldr r5, [pc, #352] ; (2a484 ) + 2a40a: 4d58 ldr r5, [pc, #352] ; (2a56c ) frequency = mult * 12000000 / div_arm / div_ahb; - 2a324: fbb0 f0fe udiv r0, r0, lr + 2a40c: fbb0 f0fe udiv r0, r0, lr if ((CCM_ANALOG_PLL_ARM & arm_pll_mask) != (CCM_ANALOG_PLL_ARM_LOCK - 2a328: f8d5 e000 ldr.w lr, [r5] + 2a410: f8d5 e000 ldr.w lr, [r5] frequency = mult * 12000000 / div_arm / div_ahb; - 2a32c: fbb0 f0fc udiv r0, r0, ip + 2a414: fbb0 f0fc udiv r0, r0, ip if ((CCM_ANALOG_PLL_ARM & arm_pll_mask) != (CCM_ANALOG_PLL_ARM_LOCK - 2a330: f8df c190 ldr.w ip, [pc, #400] ; 2a4c4 - 2a334: ea0e 0c0c and.w ip, lr, ip - 2a338: 45d4 cmp ip, sl - 2a33a: d009 beq.n 2a350 + 2a418: f8df c190 ldr.w ip, [pc, #400] ; 2a5ac + 2a41c: ea0e 0c0c and.w ip, lr, ip + 2a420: 45d4 cmp ip, sl + 2a422: d009 beq.n 2a438 | CCM_ANALOG_PLL_ARM_DIV_SELECT(mult); - 2a33c: f442 5200 orr.w r2, r2, #8192 ; 0x2000 + 2a424: f442 5200 orr.w r2, r2, #8192 ; 0x2000 CCM_ANALOG_PLL_ARM = CCM_ANALOG_PLL_ARM_POWERDOWN; - 2a340: f44f 5c80 mov.w ip, #4096 ; 0x1000 - 2a344: f8c5 c000 str.w ip, [r5] + 2a428: f44f 5c80 mov.w ip, #4096 ; 0x1000 + 2a42c: f8c5 c000 str.w ip, [r5] CCM_ANALOG_PLL_ARM = CCM_ANALOG_PLL_ARM_ENABLE - 2a348: 602a str r2, [r5, #0] + 2a430: 602a str r2, [r5, #0] while (!(CCM_ANALOG_PLL_ARM & CCM_ANALOG_PLL_ARM_LOCK)) ; // wait for lock - 2a34a: 682a ldr r2, [r5, #0] - 2a34c: 2a00 cmp r2, #0 - 2a34e: dafc bge.n 2a34a + 2a432: 682a ldr r2, [r5, #0] + 2a434: 2a00 cmp r2, #0 + 2a436: dafc bge.n 2a432 if ((CCM_CACRR & CCM_CACRR_ARM_PODF_MASK) != (div_arm - 1)) { - 2a350: 4a46 ldr r2, [pc, #280] ; (2a46c ) - 2a352: 6915 ldr r5, [r2, #16] - 2a354: f005 0507 and.w r5, r5, #7 - 2a358: 429d cmp r5, r3 - 2a35a: d003 beq.n 2a364 + 2a438: 4a46 ldr r2, [pc, #280] ; (2a554 ) + 2a43a: 6915 ldr r5, [r2, #16] + 2a43c: f005 0507 and.w r5, r5, #7 + 2a440: 429d cmp r5, r3 + 2a442: d003 beq.n 2a44c CCM_CACRR = CCM_CACRR_ARM_PODF(div_arm - 1); - 2a35c: 6113 str r3, [r2, #16] + 2a444: 6113 str r3, [r2, #16] while (CCM_CDHIPR & CCM_CDHIPR_ARM_PODF_BUSY) ; // wait - 2a35e: 6c93 ldr r3, [r2, #72] ; 0x48 - 2a360: 03dd lsls r5, r3, #15 - 2a362: d4fc bmi.n 2a35e + 2a446: 6c93 ldr r3, [r2, #72] ; 0x48 + 2a448: 03dd lsls r5, r3, #15 + 2a44a: d4fc bmi.n 2a446 if ((cbcdr & CCM_CBCDR_AHB_PODF_MASK) != CCM_CBCDR_AHB_PODF(div_ahb - 1)) { - 2a364: f411 5fe0 tst.w r1, #7168 ; 0x1c00 - 2a368: d009 beq.n 2a37e + 2a44c: f411 5fe0 tst.w r1, #7168 ; 0x1c00 + 2a450: d009 beq.n 2a466 cbcdr &= ~CCM_CBCDR_AHB_PODF_MASK; - 2a36a: f426 56e0 bic.w r6, r6, #7168 ; 0x1c00 + 2a452: f426 56e0 bic.w r6, r6, #7168 ; 0x1c00 cbcdr |= CCM_CBCDR_AHB_PODF(div_ahb - 1); - 2a36e: f404 54e0 and.w r4, r4, #7168 ; 0x1c00 + 2a456: f404 54e0 and.w r4, r4, #7168 ; 0x1c00 CCM_CBCDR = cbcdr; - 2a372: 4a3e ldr r2, [pc, #248] ; (2a46c ) + 2a45a: 4a3e ldr r2, [pc, #248] ; (2a554 ) cbcdr |= CCM_CBCDR_AHB_PODF(div_ahb - 1); - 2a374: 4326 orrs r6, r4 + 2a45c: 4326 orrs r6, r4 CCM_CBCDR = cbcdr; - 2a376: 6156 str r6, [r2, #20] + 2a45e: 6156 str r6, [r2, #20] while (CCM_CDHIPR & CCM_CDHIPR_AHB_PODF_BUSY); // wait - 2a378: 6c93 ldr r3, [r2, #72] ; 0x48 - 2a37a: 0799 lsls r1, r3, #30 - 2a37c: d4fc bmi.n 2a378 + 2a460: 6c93 ldr r3, [r2, #72] ; 0x48 + 2a462: 0799 lsls r1, r3, #30 + 2a464: d4fc bmi.n 2a460 uint32_t div_ipg = (frequency + 149999999) / 150000000; - 2a37e: 4947 ldr r1, [pc, #284] ; (2a49c ) + 2a466: 4947 ldr r1, [pc, #284] ; (2a584 ) if (div_ipg > 4) div_ipg = 4; - 2a380: 4a47 ldr r2, [pc, #284] ; (2a4a0 ) + 2a468: 4a47 ldr r2, [pc, #284] ; (2a588 ) uint32_t div_ipg = (frequency + 149999999) / 150000000; - 2a382: 4401 add r1, r0 + 2a46a: 4401 add r1, r0 if (div_ipg > 4) div_ipg = 4; - 2a384: 4291 cmp r1, r2 - 2a386: d83c bhi.n 2a402 + 2a46c: 4291 cmp r1, r2 + 2a46e: d83c bhi.n 2a4ea uint32_t div_ipg = (frequency + 149999999) / 150000000; - 2a388: 4b46 ldr r3, [pc, #280] ; (2a4a4 ) - 2a38a: 09c9 lsrs r1, r1, #7 - 2a38c: fba3 3101 umull r3, r1, r3, r1 - 2a390: 0b09 lsrs r1, r1, #12 + 2a470: 4b46 ldr r3, [pc, #280] ; (2a58c ) + 2a472: 09c9 lsrs r1, r1, #7 + 2a474: fba3 3101 umull r3, r1, r3, r1 + 2a478: 0b09 lsrs r1, r1, #12 if ((cbcdr & CCM_CBCDR_IPG_PODF_MASK) != (CCM_CBCDR_IPG_PODF(div_ipg - 1))) { - 2a392: 1e4b subs r3, r1, #1 - 2a394: 021b lsls r3, r3, #8 - 2a396: ea86 0203 eor.w r2, r6, r3 - 2a39a: f412 7f40 tst.w r2, #768 ; 0x300 - 2a39e: d006 beq.n 2a3ae + 2a47a: 1e4b subs r3, r1, #1 + 2a47c: 021b lsls r3, r3, #8 + 2a47e: ea86 0203 eor.w r2, r6, r3 + 2a482: f412 7f40 tst.w r2, #768 ; 0x300 + 2a486: d006 beq.n 2a496 cbcdr &= ~CCM_CBCDR_IPG_PODF_MASK; - 2a3a0: f426 7640 bic.w r6, r6, #768 ; 0x300 + 2a488: f426 7640 bic.w r6, r6, #768 ; 0x300 cbcdr |= CCM_CBCDR_IPG_PODF(div_ipg - 1); - 2a3a4: f403 7340 and.w r3, r3, #768 ; 0x300 + 2a48c: f403 7340 and.w r3, r3, #768 ; 0x300 CCM_CBCDR = cbcdr; - 2a3a8: 4a30 ldr r2, [pc, #192] ; (2a46c ) + 2a490: 4a30 ldr r2, [pc, #192] ; (2a554 ) cbcdr |= CCM_CBCDR_IPG_PODF(div_ipg - 1); - 2a3aa: 4333 orrs r3, r6 + 2a492: 4333 orrs r3, r6 CCM_CBCDR = cbcdr; - 2a3ac: 6153 str r3, [r2, #20] + 2a494: 6153 str r3, [r2, #20] CCM_CBCDR &= ~CCM_CBCDR_PERIPH_CLK_SEL; - 2a3ae: 4a2f ldr r2, [pc, #188] ; (2a46c ) - 2a3b0: 6953 ldr r3, [r2, #20] - 2a3b2: f023 7300 bic.w r3, r3, #33554432 ; 0x2000000 - 2a3b6: 6153 str r3, [r2, #20] + 2a496: 4a2f ldr r2, [pc, #188] ; (2a554 ) + 2a498: 6953 ldr r3, [r2, #20] + 2a49a: f023 7300 bic.w r3, r3, #33554432 ; 0x2000000 + 2a49e: 6153 str r3, [r2, #20] while (CCM_CDHIPR & CCM_CDHIPR_PERIPH_CLK_SEL_BUSY) ; // wait - 2a3b8: 6c93 ldr r3, [r2, #72] ; 0x48 - 2a3ba: 069b lsls r3, r3, #26 - 2a3bc: d4fc bmi.n 2a3b8 + 2a4a0: 6c93 ldr r3, [r2, #72] ; 0x48 + 2a4a2: 069b lsls r3, r3, #26 + 2a4a4: d4fc bmi.n 2a4a0 scale_cpu_cycles_to_microseconds = 0xFFFFFFFFu / (uint32_t)(frequency / 1000000u); - 2a3be: 4b3a ldr r3, [pc, #232] ; (2a4a8 ) + 2a4a6: 4b3a ldr r3, [pc, #232] ; (2a590 ) if ((dcdc & DCDC_REG3_TRG_MASK) > DCDC_REG3_TRG((voltage - 800) / 25)) { - 2a3c0: 454f cmp r7, r9 + 2a4a8: 454f cmp r7, r9 scale_cpu_cycles_to_microseconds = 0xFFFFFFFFu / (uint32_t)(frequency / 1000000u); - 2a3c2: fba3 2300 umull r2, r3, r3, r0 - 2a3c6: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 2a3ca: ea4f 4393 mov.w r3, r3, lsr #18 + 2a4aa: fba3 2300 umull r2, r3, r3, r0 + 2a4ae: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 2a4b2: ea4f 4393 mov.w r3, r3, lsr #18 F_BUS_ACTUAL = frequency / div_ipg; - 2a3ce: fbb0 f1f1 udiv r1, r0, r1 + 2a4b6: fbb0 f1f1 udiv r1, r0, r1 scale_cpu_cycles_to_microseconds = 0xFFFFFFFFu / (uint32_t)(frequency / 1000000u); - 2a3d2: fbb2 f3f3 udiv r3, r2, r3 + 2a4ba: fbb2 f3f3 udiv r3, r2, r3 F_CPU_ACTUAL = frequency; - 2a3d6: 4a35 ldr r2, [pc, #212] ; (2a4ac ) - 2a3d8: 6010 str r0, [r2, #0] + 2a4be: 4a35 ldr r2, [pc, #212] ; (2a594 ) + 2a4c0: 6010 str r0, [r2, #0] F_BUS_ACTUAL = frequency / div_ipg; - 2a3da: 4a35 ldr r2, [pc, #212] ; (2a4b0 ) - 2a3dc: 6011 str r1, [r2, #0] + 2a4c2: 4a35 ldr r2, [pc, #212] ; (2a598 ) + 2a4c4: 6011 str r1, [r2, #0] scale_cpu_cycles_to_microseconds = 0xFFFFFFFFu / (uint32_t)(frequency / 1000000u); - 2a3de: 4a35 ldr r2, [pc, #212] ; (2a4b4 ) - 2a3e0: 6013 str r3, [r2, #0] + 2a4c6: 4a35 ldr r2, [pc, #212] ; (2a59c ) + 2a4c8: 6013 str r3, [r2, #0] if ((dcdc & DCDC_REG3_TRG_MASK) > DCDC_REG3_TRG((voltage - 800) / 25)) { - 2a3e2: d208 bcs.n 2a3f6 + 2a4ca: d208 bcs.n 2a4de printf("Decreasing voltage to %u mV\n", voltage); dcdc &= ~DCDC_REG3_TRG_MASK; - 2a3e4: f028 081f bic.w r8, r8, #31 + 2a4cc: f028 081f bic.w r8, r8, #31 dcdc |= DCDC_REG3_TRG((voltage - 800) / 25); DCDC_REG3 = dcdc; - 2a3e8: 4a21 ldr r2, [pc, #132] ; (2a470 ) + 2a4d0: 4a21 ldr r2, [pc, #132] ; (2a558 ) dcdc |= DCDC_REG3_TRG((voltage - 800) / 25); - 2a3ea: ea48 0707 orr.w r7, r8, r7 + 2a4d2: ea48 0707 orr.w r7, r8, r7 DCDC_REG3 = dcdc; - 2a3ee: 60d7 str r7, [r2, #12] + 2a4d6: 60d7 str r7, [r2, #12] while (!(DCDC_REG0 & DCDC_REG0_STS_DC_OK)) ; // wait voltage settling - 2a3f0: 6813 ldr r3, [r2, #0] - 2a3f2: 2b00 cmp r3, #0 - 2a3f4: dafc bge.n 2a3f0 + 2a4d8: 6813 ldr r3, [r2, #0] + 2a4da: 2b00 cmp r3, #0 + 2a4dc: dafc bge.n 2a4d8 } return frequency; } - 2a3f6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 2a3fa: 4673 mov r3, lr - 2a3fc: e762 b.n 2a2c4 - 2a3fe: 2712 movs r7, #18 - 2a400: e718 b.n 2a234 - 2a402: f44f 7340 mov.w r3, #768 ; 0x300 + 2a4de: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 2a4e2: 4673 mov r3, lr + 2a4e4: e762 b.n 2a3ac + 2a4e6: 2712 movs r7, #18 + 2a4e8: e718 b.n 2a31c + 2a4ea: f44f 7340 mov.w r3, #768 ; 0x300 if (div_ipg > 4) div_ipg = 4; - 2a406: 2104 movs r1, #4 - 2a408: e7c5 b.n 2a396 + 2a4ee: 2104 movs r1, #4 + 2a4f0: e7c5 b.n 2a47e if ((cbcdr & CCM_CBCDR_AHB_PODF_MASK) != CCM_CBCDR_AHB_PODF(div_ahb - 1)) { - 2a40a: f10c 31ff add.w r1, ip, #4294967295 ; 0xffffffff + 2a4f2: f10c 31ff add.w r1, ip, #4294967295 ; 0xffffffff uint32_t mult = (frequency * div_arm * div_ahb + 6000000) / 12000000; - 2a40e: 4820 ldr r0, [pc, #128] ; (2a490 ) - 2a410: 2307 movs r3, #7 + 2a4f6: 4820 ldr r0, [pc, #128] ; (2a578 ) + 2a4f8: 2307 movs r3, #7 if ((cbcdr & CCM_CBCDR_AHB_PODF_MASK) != CCM_CBCDR_AHB_PODF(div_ahb - 1)) { - 2a412: 028c lsls r4, r1, #10 + 2a4fa: 028c lsls r4, r1, #10 uint32_t mult = (frequency * div_arm * div_ahb + 6000000) / 12000000; - 2a414: 4410 add r0, r2 + 2a4fc: 4410 add r0, r2 if ((cbcdr & CCM_CBCDR_AHB_PODF_MASK) != CCM_CBCDR_AHB_PODF(div_ahb - 1)) { - 2a416: ea86 2181 eor.w r1, r6, r1, lsl #10 + 2a4fe: ea86 2181 eor.w r1, r6, r1, lsl #10 uint32_t mult = (frequency * div_arm * div_ahb + 6000000) / 12000000; - 2a41a: 4a27 ldr r2, [pc, #156] ; (2a4b8 ) + 2a502: 4a27 ldr r2, [pc, #156] ; (2a5a0 ) | CCM_ANALOG_PLL_ARM_ENABLE | CCM_ANALOG_PLL_ARM_DIV_SELECT(mult))) { - 2a41c: f8df a0a8 ldr.w sl, [pc, #168] ; 2a4c8 + 2a504: f8df a0a8 ldr.w sl, [pc, #168] ; 2a5b0 uint32_t mult = (frequency * div_arm * div_ahb + 6000000) / 12000000; - 2a420: fba2 2000 umull r2, r0, r2, r0 - 2a424: 0d02 lsrs r2, r0, #20 + 2a508: fba2 2000 umull r2, r0, r2, r0 + 2a50c: 0d02 lsrs r2, r0, #20 frequency = mult * 12000000 / div_arm / div_ahb; - 2a426: 4825 ldr r0, [pc, #148] ; (2a4bc ) - 2a428: 2a36 cmp r2, #54 ; 0x36 - 2a42a: bf38 it cc - 2a42c: 2236 movcc r2, #54 ; 0x36 - 2a42e: fb02 f000 mul.w r0, r2, r0 + 2a50e: 4825 ldr r0, [pc, #148] ; (2a5a4 ) + 2a510: 2a36 cmp r2, #54 ; 0x36 + 2a512: bf38 it cc + 2a514: 2236 movcc r2, #54 ; 0x36 + 2a516: fb02 f000 mul.w r0, r2, r0 | CCM_ANALOG_PLL_ARM_ENABLE | CCM_ANALOG_PLL_ARM_DIV_SELECT(mult))) { - 2a432: ea42 0a0a orr.w sl, r2, sl - 2a436: e774 b.n 2a322 + 2a51a: ea42 0a0a orr.w sl, r2, sl + 2a51e: e774 b.n 2a40a if ((cbcdr & CCM_CBCDR_AHB_PODF_MASK) != CCM_CBCDR_AHB_PODF(div_ahb - 1)) { - 2a438: ea4f 248c mov.w r4, ip, lsl #10 - 2a43c: 2300 movs r3, #0 - 2a43e: ea86 218c eor.w r1, r6, ip, lsl #10 + 2a520: ea4f 248c mov.w r4, ip, lsl #10 + 2a524: 2300 movs r3, #0 + 2a526: ea86 218c eor.w r1, r6, ip, lsl #10 div_arm = 1; - 2a442: f04f 0e01 mov.w lr, #1 + 2a52a: f04f 0e01 mov.w lr, #1 div_ahb = div_ahb + 1; - 2a446: 46ac mov ip, r5 - 2a448: e762 b.n 2a310 + 2a52e: 46ac mov ip, r5 + 2a530: e762 b.n 2a3f8 if ((cbcdr & CCM_CBCDR_PERIPH_CLK2_PODF_MASK) != CCM_CBCDR_PERIPH_CLK2_PODF(div)) { - 2a44a: 461d mov r5, r3 - 2a44c: f086 54c0 eor.w r4, r6, #402653184 ; 0x18000000 - 2a450: 4611 mov r1, r2 - 2a452: f04f 53c0 mov.w r3, #402653184 ; 0x18000000 - 2a456: e713 b.n 2a280 + 2a532: 461d mov r5, r3 + 2a534: f086 54c0 eor.w r4, r6, #402653184 ; 0x18000000 + 2a538: 4611 mov r1, r2 + 2a53a: f04f 53c0 mov.w r3, #402653184 ; 0x18000000 + 2a53e: e713 b.n 2a368 while (frequency * div_arm * div_ahb < 648000000) { - 2a458: 2400 movs r4, #0 + 2a540: 2400 movs r4, #0 uint32_t div_ahb = 1; - 2a45a: f04f 0c01 mov.w ip, #1 + 2a542: f04f 0c01 mov.w ip, #1 while (frequency * div_arm * div_ahb < 648000000) { - 2a45e: 4602 mov r2, r0 - 2a460: 4631 mov r1, r6 - 2a462: 4623 mov r3, r4 + 2a546: 4602 mov r2, r0 + 2a548: 4631 mov r1, r6 + 2a54a: 4623 mov r3, r4 uint32_t div_arm = 1; - 2a464: 46e6 mov lr, ip - 2a466: e753 b.n 2a310 - 2a468: 1f78a400 .word 0x1f78a400 - 2a46c: 400fc000 .word 0x400fc000 - 2a470: 40080000 .word 0x40080000 - 2a474: 23c34600 .word 0x23c34600 - 2a478: 004cb223 .word 0x004cb223 - 2a47c: 51eb851f .word 0x51eb851f - 2a480: 016e3600 .word 0x016e3600 - 2a484: 400d8000 .word 0x400d8000 - 2a488: 80003040 .word 0x80003040 - 2a48c: 269fb1ff .word 0x269fb1ff - 2a490: 005b8d80 .word 0x005b8d80 - 2a494: 4df67eff .word 0x4df67eff - 2a498: 4d3f6400 .word 0x4d3f6400 - 2a49c: 08f0d17f .word 0x08f0d17f - 2a4a0: 2cb4177f .word 0x2cb4177f - 2a4a4: 00e5109f .word 0x00e5109f - 2a4a8: 431bde83 .word 0x431bde83 - 2a4ac: 20004ba4 .word 0x20004ba4 - 2a4b0: 20004ba0 .word 0x20004ba0 - 2a4b4: 2000bac0 .word 0x2000bac0 - 2a4b8: 165e9f81 .word 0x165e9f81 - 2a4bc: 00b71b00 .word 0x00b71b00 - 2a4c0: 8000206c .word 0x8000206c - 2a4c4: 8001307f .word 0x8001307f - 2a4c8: 80002000 .word 0x80002000 - -0002a4cc : + 2a54c: 46e6 mov lr, ip + 2a54e: e753 b.n 2a3f8 + 2a550: 1f78a400 .word 0x1f78a400 + 2a554: 400fc000 .word 0x400fc000 + 2a558: 40080000 .word 0x40080000 + 2a55c: 23c34600 .word 0x23c34600 + 2a560: 004cb223 .word 0x004cb223 + 2a564: 51eb851f .word 0x51eb851f + 2a568: 016e3600 .word 0x016e3600 + 2a56c: 400d8000 .word 0x400d8000 + 2a570: 80003040 .word 0x80003040 + 2a574: 269fb1ff .word 0x269fb1ff + 2a578: 005b8d80 .word 0x005b8d80 + 2a57c: 4df67eff .word 0x4df67eff + 2a580: 4d3f6400 .word 0x4d3f6400 + 2a584: 08f0d17f .word 0x08f0d17f + 2a588: 2cb4177f .word 0x2cb4177f + 2a58c: 00e5109f .word 0x00e5109f + 2a590: 431bde83 .word 0x431bde83 + 2a594: 20004c64 .word 0x20004c64 + 2a598: 20004c60 .word 0x20004c60 + 2a59c: 2000bae0 .word 0x2000bae0 + 2a5a0: 165e9f81 .word 0x165e9f81 + 2a5a4: 00b71b00 .word 0x00b71b00 + 2a5a8: 8000206c .word 0x8000206c + 2a5ac: 8001307f .word 0x8001307f + 2a5b0: 80002000 .word 0x80002000 + +0002a5b4 : // or delayNanoseconds(). void delay(uint32_t msec) { uint32_t start; if (msec == 0) return; - 2a4cc: b900 cbnz r0, 2a4d0 - 2a4ce: 4770 bx lr + 2a5b4: b900 cbnz r0, 2a5b8 + 2a5b6: 4770 bx lr { - 2a4d0: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2a5b8: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} */ __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) { uint32_t result; __ASM volatile ("strex %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - 2a4d4: 2101 movs r1, #1 - 2a4d6: 4681 mov r9, r0 - 2a4d8: 4c21 ldr r4, [pc, #132] ; (2a560 ) - 2a4da: 4d22 ldr r5, [pc, #136] ; (2a564 ) - 2a4dc: 4e22 ldr r6, [pc, #136] ; (2a568 ) + 2a5bc: 2101 movs r1, #1 + 2a5be: 4681 mov r9, r0 + 2a5c0: 4c21 ldr r4, [pc, #132] ; (2a648 ) + 2a5c2: 4d22 ldr r5, [pc, #136] ; (2a64c ) + 2a5c4: 4e22 ldr r6, [pc, #136] ; (2a650 ) __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) ); - 2a4de: e854 3f00 ldrex r3, [r4] + 2a5c6: e854 3f00 ldrex r3, [r4] uint32_t micros(void) { uint32_t smc, scc; do { __LDREXW(&systick_safe_read); smc = systick_millis_count; - 2a4e2: 682a ldr r2, [r5, #0] + 2a5ca: 682a ldr r2, [r5, #0] scc = systick_cycle_count; - 2a4e4: 6830 ldr r0, [r6, #0] + 2a5cc: 6830 ldr r0, [r6, #0] __ASM volatile ("strex %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - 2a4e6: e844 1300 strex r3, r1, [r4] + 2a5ce: e844 1300 strex r3, r1, [r4] } while ( __STREXW(1, &systick_safe_read)); - 2a4ea: 2b00 cmp r3, #0 - 2a4ec: d1f7 bne.n 2a4de + 2a5d2: 2b00 cmp r3, #0 + 2a5d4: d1f7 bne.n 2a5c6 uint32_t cyccnt = ARM_DWT_CYCCNT; - 2a4ee: 491f ldr r1, [pc, #124] ; (2a56c ) - 2a4f0: 684b ldr r3, [r1, #4] + 2a5d6: 491f ldr r1, [pc, #124] ; (2a654 ) + 2a5d8: 684b ldr r3, [r1, #4] asm volatile("" : : : "memory"); uint32_t ccdelta = cyccnt - scc; uint32_t frac = ((uint64_t)ccdelta * scale_cpu_cycles_to_microseconds) >> 32; if (frac > 1000) frac = 1000; uint32_t usec = 1000*smc + frac; - 2a4f2: f44f 7b7a mov.w fp, #1000 ; 0x3e8 + 2a5da: f44f 7b7a mov.w fp, #1000 ; 0x3e8 uint32_t frac = ((uint64_t)ccdelta * scale_cpu_cycles_to_microseconds) >> 32; - 2a4f6: f8df a078 ldr.w sl, [pc, #120] ; 2a570 + 2a5de: f8df a078 ldr.w sl, [pc, #120] ; 2a658 uint32_t ccdelta = cyccnt - scc; - 2a4fa: 1a1b subs r3, r3, r0 - 2a4fc: 2701 movs r7, #1 + 2a5e2: 1a1b subs r3, r3, r0 + 2a5e4: 2701 movs r7, #1 uint32_t usec = 1000*smc + frac; - 2a4fe: fb0b f802 mul.w r8, fp, r2 + 2a5e6: fb0b f802 mul.w r8, fp, r2 uint32_t frac = ((uint64_t)ccdelta * scale_cpu_cycles_to_microseconds) >> 32; - 2a502: f8da 2000 ldr.w r2, [sl] - 2a506: fba3 3202 umull r3, r2, r3, r2 + 2a5ea: f8da 2000 ldr.w r2, [sl] + 2a5ee: fba3 3202 umull r3, r2, r3, r2 uint32_t usec = 1000*smc + frac; - 2a50a: 455a cmp r2, fp - 2a50c: bf94 ite ls - 2a50e: 4490 addls r8, r2 - 2a510: 44d8 addhi r8, fp + 2a5f2: 455a cmp r2, fp + 2a5f4: bf94 ite ls + 2a5f6: 4490 addls r8, r2 + 2a5f8: 44d8 addhi r8, fp __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) ); - 2a512: e854 3f00 ldrex r3, [r4] + 2a5fa: e854 3f00 ldrex r3, [r4] smc = systick_millis_count; - 2a516: 682a ldr r2, [r5, #0] + 2a5fe: 682a ldr r2, [r5, #0] scc = systick_cycle_count; - 2a518: 6830 ldr r0, [r6, #0] + 2a600: 6830 ldr r0, [r6, #0] __ASM volatile ("strex %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - 2a51a: e844 7300 strex r3, r7, [r4] + 2a602: e844 7300 strex r3, r7, [r4] } while ( __STREXW(1, &systick_safe_read)); - 2a51e: 2b00 cmp r3, #0 - 2a520: d1f7 bne.n 2a512 + 2a606: 2b00 cmp r3, #0 + 2a608: d1f7 bne.n 2a5fa uint32_t cyccnt = ARM_DWT_CYCCNT; - 2a522: 684b ldr r3, [r1, #4] + 2a60a: 684b ldr r3, [r1, #4] uint32_t frac = ((uint64_t)ccdelta * scale_cpu_cycles_to_microseconds) >> 32; - 2a524: f8da c000 ldr.w ip, [sl] + 2a60c: f8da c000 ldr.w ip, [sl] uint32_t ccdelta = cyccnt - scc; - 2a528: 1a1b subs r3, r3, r0 + 2a610: 1a1b subs r3, r3, r0 uint32_t usec = 1000*smc + frac; - 2a52a: fb0b f202 mul.w r2, fp, r2 + 2a612: fb0b f202 mul.w r2, fp, r2 uint32_t frac = ((uint64_t)ccdelta * scale_cpu_cycles_to_microseconds) >> 32; - 2a52e: fba3 3c0c umull r3, ip, r3, ip + 2a616: fba3 3c0c umull r3, ip, r3, ip uint32_t usec = 1000*smc + frac; - 2a532: f5bc 7f7a cmp.w ip, #1000 ; 0x3e8 - 2a536: bf94 ite ls - 2a538: 4462 addls r2, ip - 2a53a: f502 727a addhi.w r2, r2, #1000 ; 0x3e8 + 2a61a: f5bc 7f7a cmp.w ip, #1000 ; 0x3e8 + 2a61e: bf94 ite ls + 2a620: 4462 addls r2, ip + 2a622: f502 727a addhi.w r2, r2, #1000 ; 0x3e8 while ((micros() - start) >= 1000) { - 2a53e: eba2 0208 sub.w r2, r2, r8 - 2a542: f5b2 7f7a cmp.w r2, #1000 ; 0x3e8 - 2a546: d306 bcc.n 2a556 + 2a626: eba2 0208 sub.w r2, r2, r8 + 2a62a: f5b2 7f7a cmp.w r2, #1000 ; 0x3e8 + 2a62e: d306 bcc.n 2a63e if (--msec == 0) return; - 2a548: f1b9 0901 subs.w r9, r9, #1 + 2a630: f1b9 0901 subs.w r9, r9, #1 start += 1000; - 2a54c: f508 787a add.w r8, r8, #1000 ; 0x3e8 + 2a634: f508 787a add.w r8, r8, #1000 ; 0x3e8 if (--msec == 0) return; - 2a550: d1df bne.n 2a512 + 2a638: d1df bne.n 2a5fa } - 2a552: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2a63a: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} yield(); - 2a556: f002 f831 bl 2c5bc + 2a63e: f002 f831 bl 2c6a4 while ((micros() - start) >= 1000) { - 2a55a: 4904 ldr r1, [pc, #16] ; (2a56c ) - 2a55c: e7d9 b.n 2a512 - 2a55e: bf00 nop - 2a560: 2000baec .word 0x2000baec - 2a564: 2000bae8 .word 0x2000bae8 - 2a568: 2000bae4 .word 0x2000bae4 - 2a56c: e0001000 .word 0xe0001000 - 2a570: 2000bac0 .word 0x2000bac0 - -0002a574 : + 2a642: 4904 ldr r1, [pc, #16] ; (2a654 ) + 2a644: e7d9 b.n 2a5fa + 2a646: bf00 nop + 2a648: 2000bb0c .word 0x2000bb0c + 2a64c: 2000bb08 .word 0x2000bb08 + 2a650: 2000bb04 .word 0x2000bb04 + 2a654: e0001000 .word 0xe0001000 + 2a658: 2000bae0 .word 0x2000bae0 + +0002a65c : { - 2a574: b430 push {r4, r5} - 2a576: 4b0f ldr r3, [pc, #60] ; (2a5b4 ) - 2a578: f04f 0c01 mov.w ip, #1 - 2a57c: 4d0e ldr r5, [pc, #56] ; (2a5b8 ) - 2a57e: 4c0f ldr r4, [pc, #60] ; (2a5bc ) + 2a65c: b430 push {r4, r5} + 2a65e: 4b0f ldr r3, [pc, #60] ; (2a69c ) + 2a660: f04f 0c01 mov.w ip, #1 + 2a664: 4d0e ldr r5, [pc, #56] ; (2a6a0 ) + 2a666: 4c0f ldr r4, [pc, #60] ; (2a6a4 ) __ASM volatile ("ldrex %0, [%1]" : "=r" (result) : "r" (addr) ); - 2a580: e853 2f00 ldrex r2, [r3] + 2a668: e853 2f00 ldrex r2, [r3] smc = systick_millis_count; - 2a584: 6828 ldr r0, [r5, #0] + 2a66c: 6828 ldr r0, [r5, #0] scc = systick_cycle_count; - 2a586: 6821 ldr r1, [r4, #0] + 2a66e: 6821 ldr r1, [r4, #0] __ASM volatile ("strex %0, %2, [%1]" : "=&r" (result) : "r" (addr), "r" (value) ); - 2a588: e843 c200 strex r2, ip, [r3] + 2a670: e843 c200 strex r2, ip, [r3] } while ( __STREXW(1, &systick_safe_read)); - 2a58c: 2a00 cmp r2, #0 - 2a58e: d1f7 bne.n 2a580 + 2a674: 2a00 cmp r2, #0 + 2a676: d1f7 bne.n 2a668 uint32_t cyccnt = ARM_DWT_CYCCNT; - 2a590: 4b0b ldr r3, [pc, #44] ; (2a5c0 ) - 2a592: 685b ldr r3, [r3, #4] + 2a678: 4b0b ldr r3, [pc, #44] ; (2a6a8 ) + 2a67a: 685b ldr r3, [r3, #4] uint32_t frac = ((uint64_t)ccdelta * scale_cpu_cycles_to_microseconds) >> 32; - 2a594: 4a0b ldr r2, [pc, #44] ; (2a5c4 ) + 2a67c: 4a0b ldr r2, [pc, #44] ; (2a6ac ) uint32_t ccdelta = cyccnt - scc; - 2a596: 1a5b subs r3, r3, r1 + 2a67e: 1a5b subs r3, r3, r1 uint32_t usec = 1000*smc + frac; - 2a598: f44f 717a mov.w r1, #1000 ; 0x3e8 + 2a680: f44f 717a mov.w r1, #1000 ; 0x3e8 uint32_t frac = ((uint64_t)ccdelta * scale_cpu_cycles_to_microseconds) >> 32; - 2a59c: 6812 ldr r2, [r2, #0] + 2a684: 6812 ldr r2, [r2, #0] uint32_t usec = 1000*smc + frac; - 2a59e: fb01 f000 mul.w r0, r1, r0 + 2a686: fb01 f000 mul.w r0, r1, r0 uint32_t frac = ((uint64_t)ccdelta * scale_cpu_cycles_to_microseconds) >> 32; - 2a5a2: fba3 3202 umull r3, r2, r3, r2 + 2a68a: fba3 3202 umull r3, r2, r3, r2 return usec; } - 2a5a6: bc30 pop {r4, r5} - 2a5a8: 428a cmp r2, r1 - 2a5aa: bf94 ite ls - 2a5ac: 1880 addls r0, r0, r2 - 2a5ae: 1840 addhi r0, r0, r1 - 2a5b0: 4770 bx lr - 2a5b2: bf00 nop - 2a5b4: 2000baec .word 0x2000baec - 2a5b8: 2000bae8 .word 0x2000bae8 - 2a5bc: 2000bae4 .word 0x2000bae4 - 2a5c0: e0001000 .word 0xe0001000 - 2a5c4: 2000bac0 .word 0x2000bac0 - -0002a5c8 : + 2a68e: bc30 pop {r4, r5} + 2a690: 428a cmp r2, r1 + 2a692: bf94 ite ls + 2a694: 1880 addls r0, r0, r2 + 2a696: 1840 addhi r0, r0, r1 + 2a698: 4770 bx lr + 2a69a: bf00 nop + 2a69c: 2000bb0c .word 0x2000bb0c + 2a6a0: 2000bb08 .word 0x2000bb08 + 2a6a4: 2000bb04 .word 0x2000bb04 + 2a6a8: e0001000 .word 0xe0001000 + 2a6ac: 2000bae0 .word 0x2000bae0 + +0002a6b0 : void digitalWrite(uint8_t pin, uint8_t val) { const struct digital_pin_bitband_and_config_table_struct *p; uint32_t pinmode, mask; if (pin >= CORE_NUM_DIGITAL) return; - 2a5c8: 2827 cmp r0, #39 ; 0x27 - 2a5ca: d816 bhi.n 2a5fa + 2a6b0: 2827 cmp r0, #39 ; 0x27 + 2a6b2: d816 bhi.n 2a6e2 p = digital_pin_to_info_PGM + pin; - 2a5cc: 0102 lsls r2, r0, #4 - 2a5ce: 4b10 ldr r3, [pc, #64] ; (2a610 ) - 2a5d0: eb03 1000 add.w r0, r3, r0, lsl #4 + 2a6b4: 0102 lsls r2, r0, #4 + 2a6b6: 4b10 ldr r3, [pc, #64] ; (2a6f8 ) + 2a6b8: eb03 1000 add.w r0, r3, r0, lsl #4 pinmode = *(p->reg + 1); - 2a5d4: 589b ldr r3, [r3, r2] + 2a6bc: 589b ldr r3, [r3, r2] { - 2a5d6: b410 push {r4} + 2a6be: b410 push {r4} mask = p->mask; - 2a5d8: 68c2 ldr r2, [r0, #12] + 2a6c0: 68c2 ldr r2, [r0, #12] pinmode = *(p->reg + 1); - 2a5da: 685c ldr r4, [r3, #4] + 2a6c2: 685c ldr r4, [r3, #4] if (pinmode & mask) { - 2a5dc: 4214 tst r4, r2 - 2a5de: d005 beq.n 2a5ec + 2a6c4: 4214 tst r4, r2 + 2a6c6: d005 beq.n 2a6d4 // pin is configured for output mode if (val) { - 2a5e0: b961 cbnz r1, 2a5fc + 2a6c8: b961 cbnz r1, 2a6e4 *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(3) | IOMUXC_PAD_HYS; } else { *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(0) | IOMUXC_PAD_HYS; } } } - 2a5e2: f85d 4b04 ldr.w r4, [sp], #4 + 2a6ca: f85d 4b04 ldr.w r4, [sp], #4 *(p->reg + 0x22) = mask; // clear register - 2a5e6: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 2a6ce: f8c3 2088 str.w r2, [r3, #136] ; 0x88 } - 2a5ea: 4770 bx lr + 2a6d2: 4770 bx lr *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(3) | IOMUXC_PAD_HYS; - 2a5ec: 6883 ldr r3, [r0, #8] + 2a6d4: 6883 ldr r3, [r0, #8] if (val) { - 2a5ee: b151 cbz r1, 2a606 + 2a6d6: b151 cbz r1, 2a6ee *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(3) | IOMUXC_PAD_HYS; - 2a5f0: 4a08 ldr r2, [pc, #32] ; (2a614 ) + 2a6d8: 4a08 ldr r2, [pc, #32] ; (2a6fc ) } - 2a5f2: f85d 4b04 ldr.w r4, [sp], #4 + 2a6da: f85d 4b04 ldr.w r4, [sp], #4 *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(3) | IOMUXC_PAD_HYS; - 2a5f6: 601a str r2, [r3, #0] + 2a6de: 601a str r2, [r3, #0] } - 2a5f8: 4770 bx lr - 2a5fa: 4770 bx lr - 2a5fc: f85d 4b04 ldr.w r4, [sp], #4 + 2a6e0: 4770 bx lr + 2a6e2: 4770 bx lr + 2a6e4: f85d 4b04 ldr.w r4, [sp], #4 *(p->reg + 0x21) = mask; // set register - 2a600: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 2a6e8: f8c3 2084 str.w r2, [r3, #132] ; 0x84 } - 2a604: 4770 bx lr + 2a6ec: 4770 bx lr *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(0) | IOMUXC_PAD_HYS; - 2a606: 4a04 ldr r2, [pc, #16] ; (2a618 ) + 2a6ee: 4a04 ldr r2, [pc, #16] ; (2a700 ) } - 2a608: f85d 4b04 ldr.w r4, [sp], #4 + 2a6f0: f85d 4b04 ldr.w r4, [sp], #4 *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(0) | IOMUXC_PAD_HYS; - 2a60c: 601a str r2, [r3, #0] + 2a6f4: 601a str r2, [r3, #0] } - 2a60e: 4770 bx lr - 2a610: 200044b4 .word 0x200044b4 - 2a614: 0001f038 .word 0x0001f038 - 2a618: 00013038 .word 0x00013038 + 2a6f6: 4770 bx lr + 2a6f8: 20004574 .word 0x20004574 + 2a6fc: 0001f038 .word 0x0001f038 + 2a700: 00013038 .word 0x00013038 -0002a61c : +0002a704 : uint8_t digitalRead(uint8_t pin) { const struct digital_pin_bitband_and_config_table_struct *p; if (pin >= CORE_NUM_DIGITAL) return 0; - 2a61c: 2827 cmp r0, #39 ; 0x27 - 2a61e: d80b bhi.n 2a638 + 2a704: 2827 cmp r0, #39 ; 0x27 + 2a706: d80b bhi.n 2a720 p = digital_pin_to_info_PGM + pin; - 2a620: 4b06 ldr r3, [pc, #24] ; (2a63c ) - 2a622: 0102 lsls r2, r0, #4 - 2a624: eb03 1000 add.w r0, r3, r0, lsl #4 + 2a708: 4b06 ldr r3, [pc, #24] ; (2a724 ) + 2a70a: 0102 lsls r2, r0, #4 + 2a70c: eb03 1000 add.w r0, r3, r0, lsl #4 return (*(p->reg + 2) & p->mask) ? 1 : 0; - 2a628: 589a ldr r2, [r3, r2] - 2a62a: 68c3 ldr r3, [r0, #12] - 2a62c: 6892 ldr r2, [r2, #8] - 2a62e: 421a tst r2, r3 - 2a630: bf14 ite ne - 2a632: 2001 movne r0, #1 - 2a634: 2000 moveq r0, #0 - 2a636: 4770 bx lr + 2a710: 589a ldr r2, [r3, r2] + 2a712: 68c3 ldr r3, [r0, #12] + 2a714: 6892 ldr r2, [r2, #8] + 2a716: 421a tst r2, r3 + 2a718: bf14 ite ne + 2a71a: 2001 movne r0, #1 + 2a71c: 2000 moveq r0, #0 + 2a71e: 4770 bx lr if (pin >= CORE_NUM_DIGITAL) return 0; - 2a638: 2000 movs r0, #0 + 2a720: 2000 movs r0, #0 } - 2a63a: 4770 bx lr - 2a63c: 200044b4 .word 0x200044b4 + 2a722: 4770 bx lr + 2a724: 20004574 .word 0x20004574 -0002a640 : +0002a728 : void pinMode(uint8_t pin, uint8_t mode) { const struct digital_pin_bitband_and_config_table_struct *p; if (pin >= CORE_NUM_DIGITAL) return; - 2a640: 2827 cmp r0, #39 ; 0x27 - 2a642: d829 bhi.n 2a698 + 2a728: 2827 cmp r0, #39 ; 0x27 + 2a72a: d829 bhi.n 2a780 p = digital_pin_to_info_PGM + pin; - 2a644: 4b16 ldr r3, [pc, #88] ; (2a6a0 ) - 2a646: 0102 lsls r2, r0, #4 + 2a72c: 4b16 ldr r3, [pc, #88] ; (2a788 ) + 2a72e: 0102 lsls r2, r0, #4 if (mode == OUTPUT || mode == OUTPUT_OPENDRAIN) { - 2a648: 2901 cmp r1, #1 + 2a730: 2901 cmp r1, #1 p = digital_pin_to_info_PGM + pin; - 2a64a: eb03 1000 add.w r0, r3, r0, lsl #4 + 2a732: eb03 1000 add.w r0, r3, r0, lsl #4 *(p->pad) = IOMUXC_PAD_DSE(7); } else { // OUTPUT_OPENDRAIN *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_ODE; } } else { *(p->reg + 1) &= ~(p->mask); // TODO: atomic - 2a64e: 589a ldr r2, [r3, r2] + 2a736: 589a ldr r2, [r3, r2] { - 2a650: b410 push {r4} + 2a738: b410 push {r4} *(p->reg + 1) &= ~(p->mask); // TODO: atomic - 2a652: 6853 ldr r3, [r2, #4] - 2a654: 68c4 ldr r4, [r0, #12] + 2a73a: 6853 ldr r3, [r2, #4] + 2a73c: 68c4 ldr r4, [r0, #12] if (mode == OUTPUT || mode == OUTPUT_OPENDRAIN) { - 2a656: d00e beq.n 2a676 - 2a658: 2904 cmp r1, #4 - 2a65a: d00c beq.n 2a676 + 2a73e: d00e beq.n 2a75e + 2a740: 2904 cmp r1, #4 + 2a742: d00c beq.n 2a75e *(p->reg + 1) &= ~(p->mask); // TODO: atomic - 2a65c: ea23 0304 bic.w r3, r3, r4 - 2a660: 6053 str r3, [r2, #4] + 2a744: ea23 0304 bic.w r3, r3, r4 + 2a748: 6053 str r3, [r2, #4] if (mode == INPUT) { *(p->pad) = IOMUXC_PAD_DSE(7); - 2a662: 6883 ldr r3, [r0, #8] + 2a74a: 6883 ldr r3, [r0, #8] if (mode == INPUT) { - 2a664: b1a9 cbz r1, 2a692 + 2a74c: b1a9 cbz r1, 2a77a } else if (mode == INPUT_PULLUP) { - 2a666: 2902 cmp r1, #2 - 2a668: d017 beq.n 2a69a + 2a74e: 2902 cmp r1, #2 + 2a750: d017 beq.n 2a782 *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(3) | IOMUXC_PAD_HYS; } else if (mode == INPUT_PULLDOWN) { - 2a66a: 2903 cmp r1, #3 + 2a752: 2903 cmp r1, #3 *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(0) | IOMUXC_PAD_HYS; - 2a66c: bf0c ite eq - 2a66e: 4a0d ldreq r2, [pc, #52] ; (2a6a4 ) + 2a754: bf0c ite eq + 2a756: 4a0d ldreq r2, [pc, #52] ; (2a78c ) } else { // INPUT_DISABLE *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_HYS; - 2a670: 4a0d ldrne r2, [pc, #52] ; (2a6a8 ) - 2a672: 601a str r2, [r3, #0] - 2a674: e007 b.n 2a686 + 2a758: 4a0d ldrne r2, [pc, #52] ; (2a790 ) + 2a75a: 601a str r2, [r3, #0] + 2a75c: e007 b.n 2a76e *(p->reg + 1) |= p->mask; // TODO: atomic - 2a676: 4323 orrs r3, r4 + 2a75e: 4323 orrs r3, r4 if (mode == OUTPUT) { - 2a678: 2901 cmp r1, #1 + 2a760: 2901 cmp r1, #1 *(p->reg + 1) |= p->mask; // TODO: atomic - 2a67a: 6053 str r3, [r2, #4] + 2a762: 6053 str r3, [r2, #4] *(p->pad) = IOMUXC_PAD_DSE(7); - 2a67c: 6883 ldr r3, [r0, #8] + 2a764: 6883 ldr r3, [r0, #8] if (mode == OUTPUT) { - 2a67e: d008 beq.n 2a692 + 2a766: d008 beq.n 2a77a *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_ODE; - 2a680: f640 0238 movw r2, #2104 ; 0x838 - 2a684: 601a str r2, [r3, #0] + 2a768: f640 0238 movw r2, #2104 ; 0x838 + 2a76c: 601a str r2, [r3, #0] } } *(p->mux) = 5 | 0x10; - 2a686: 6843 ldr r3, [r0, #4] - 2a688: 2215 movs r2, #21 + 2a76e: 6843 ldr r3, [r0, #4] + 2a770: 2215 movs r2, #21 } - 2a68a: f85d 4b04 ldr.w r4, [sp], #4 + 2a772: f85d 4b04 ldr.w r4, [sp], #4 *(p->mux) = 5 | 0x10; - 2a68e: 601a str r2, [r3, #0] + 2a776: 601a str r2, [r3, #0] } - 2a690: 4770 bx lr + 2a778: 4770 bx lr *(p->pad) = IOMUXC_PAD_DSE(7); - 2a692: 2238 movs r2, #56 ; 0x38 - 2a694: 601a str r2, [r3, #0] - 2a696: e7f6 b.n 2a686 - 2a698: 4770 bx lr + 2a77a: 2238 movs r2, #56 ; 0x38 + 2a77c: 601a str r2, [r3, #0] + 2a77e: e7f6 b.n 2a76e + 2a780: 4770 bx lr *(p->pad) = IOMUXC_PAD_DSE(7) | IOMUXC_PAD_PKE | IOMUXC_PAD_PUE | IOMUXC_PAD_PUS(3) | IOMUXC_PAD_HYS; - 2a69a: 4a04 ldr r2, [pc, #16] ; (2a6ac ) - 2a69c: 601a str r2, [r3, #0] - 2a69e: e7f2 b.n 2a686 - 2a6a0: 200044b4 .word 0x200044b4 - 2a6a4: 00013038 .word 0x00013038 - 2a6a8: 00010038 .word 0x00010038 - 2a6ac: 0001f038 .word 0x0001f038 + 2a782: 4a04 ldr r2, [pc, #16] ; (2a794 ) + 2a784: 601a str r2, [r3, #0] + 2a786: e7f2 b.n 2a76e + 2a788: 20004574 .word 0x20004574 + 2a78c: 00013038 .word 0x00013038 + 2a790: 00010038 .word 0x00010038 + 2a794: 0001f038 .word 0x0001f038 -0002a6b0 : +0002a798 : static uint8_t initialized=0; static uint16_t sector_index[FLASH_SECTORS]; void eeprom_initialize(void) { - 2a6b0: b570 push {r4, r5, r6, lr} - 2a6b2: 4c0e ldr r4, [pc, #56] ; (2a6ec ) + 2a798: b570 push {r4, r5, r6, lr} + 2a79a: 4c0e ldr r4, [pc, #56] ; (2a7d4 ) for (sector=0; sector < FLASH_SECTORS; sector++) { const uint16_t *p = (uint16_t *)(FLASH_BASEADDR + sector * 4096); const uint16_t *end = (uint16_t *)(FLASH_BASEADDR + (sector + 1) * 4096); uint16_t index = 0; do { if (*p++ == 0xFFFF) break; - 2a6b4: f64f 7eff movw lr, #65535 ; 0xffff + 2a79c: f64f 7eff movw lr, #65535 ; 0xffff { - 2a6b8: 4e0d ldr r6, [pc, #52] ; (2a6f0 ) - 2a6ba: f104 051e add.w r5, r4, #30 + 2a7a0: 4e0d ldr r6, [pc, #52] ; (2a7d8 ) + 2a7a2: f104 051e add.w r5, r4, #30 const uint16_t *p = (uint16_t *)(FLASH_BASEADDR + sector * 4096); - 2a6be: f5a6 5380 sub.w r3, r6, #4096 ; 0x1000 + 2a7a6: f5a6 5380 sub.w r3, r6, #4096 ; 0x1000 uint16_t index = 0; - 2a6c2: 2100 movs r1, #0 - 2a6c4: e002 b.n 2a6cc + 2a7aa: 2100 movs r1, #0 + 2a7ac: e002 b.n 2a7b4 index++; } while (p < end); - 2a6c6: 42b3 cmp r3, r6 + 2a7ae: 42b3 cmp r3, r6 index++; - 2a6c8: b281 uxth r1, r0 + 2a7b0: b281 uxth r1, r0 } while (p < end); - 2a6ca: d204 bcs.n 2a6d6 + 2a7b2: d204 bcs.n 2a7be if (*p++ == 0xFFFF) break; - 2a6cc: 881a ldrh r2, [r3, #0] + 2a7b4: 881a ldrh r2, [r3, #0] index++; - 2a6ce: 1c48 adds r0, r1, #1 + 2a7b6: 1c48 adds r0, r1, #1 if (*p++ == 0xFFFF) break; - 2a6d0: 3302 adds r3, #2 - 2a6d2: 4572 cmp r2, lr - 2a6d4: d1f7 bne.n 2a6c6 + 2a7b8: 3302 adds r3, #2 + 2a7ba: 4572 cmp r2, lr + 2a7bc: d1f7 bne.n 2a7ae sector_index[sector] = index; - 2a6d6: f824 1f02 strh.w r1, [r4, #2]! + 2a7be: f824 1f02 strh.w r1, [r4, #2]! for (sector=0; sector < FLASH_SECTORS; sector++) { - 2a6da: 42ac cmp r4, r5 - 2a6dc: f506 5680 add.w r6, r6, #4096 ; 0x1000 - 2a6e0: d1ed bne.n 2a6be + 2a7c2: 42ac cmp r4, r5 + 2a7c4: f506 5680 add.w r6, r6, #4096 ; 0x1000 + 2a7c8: d1ed bne.n 2a7a6 } initialized = 1; - 2a6e2: 4b04 ldr r3, [pc, #16] ; (2a6f4 ) - 2a6e4: 2201 movs r2, #1 - 2a6e6: 701a strb r2, [r3, #0] + 2a7ca: 4b04 ldr r3, [pc, #16] ; (2a7dc ) + 2a7cc: 2201 movs r2, #1 + 2a7ce: 701a strb r2, [r3, #0] } - 2a6e8: bd70 pop {r4, r5, r6, pc} - 2a6ea: bf00 nop - 2a6ec: 2000bac2 .word 0x2000bac2 - 2a6f0: 601f1000 .word 0x601f1000 - 2a6f4: 2000bc82 .word 0x2000bc82 + 2a7d0: bd70 pop {r4, r5, r6, pc} + 2a7d2: bf00 nop + 2a7d4: 2000bae2 .word 0x2000bae2 + 2a7d8: 601f1000 .word 0x601f1000 + 2a7dc: 2000bca2 .word 0x2000bca2 -0002a6f8
: +0002a7e0
: */ #include extern "C" int main(void) { - 2a6f8: b508 push {r3, lr} + 2a7e0: b508 push {r3, lr} } #else // Arduino's main() function just calls setup() and loop().... setup(); - 2a6fa: f7d5 fcc7 bl 8c + 2a7e2: f7d5 fc53 bl 8c while (1) { loop(); - 2a6fe: f7d5 fccb bl 98 + 2a7e6: f7d5 fc57 bl 98 yield(); - 2a702: f001 ff5b bl 2c5bc + 2a7ea: f001 ff5b bl 2c6a4 while (1) { - 2a706: e7fa b.n 2a6fe + 2a7ee: e7fa b.n 2a7e6 -0002a708 : +0002a7f0 : @ r1: src @ r2: len #ifdef __ARM_FEATURE_UNALIGNED /* In case of UNALIGNED access supported, ip is not used in function body. */ mov ip, r0 - 2a708: 4684 mov ip, r0 + 2a7f0: 4684 mov ip, r0 #else push {r0} #endif orr r3, r1, r0 - 2a70a: ea41 0300 orr.w r3, r1, r0 + 2a7f2: ea41 0300 orr.w r3, r1, r0 ands r3, r3, #3 - 2a70e: f013 0303 ands.w r3, r3, #3 + 2a7f6: f013 0303 ands.w r3, r3, #3 bne .Lmisaligned_copy - 2a712: d16d bne.n 2a7f0 + 2a7fa: d16d bne.n 2a8d8 .Lbig_block: subs r2, __OPT_BIG_BLOCK_SIZE - 2a714: 3a40 subs r2, #64 ; 0x40 + 2a7fc: 3a40 subs r2, #64 ; 0x40 blo .Lmid_block - 2a716: d341 bcc.n 2a79c + 2a7fe: d341 bcc.n 2a884 .Lbig_block_loop: BEGIN_UNROLL_BIG_BLOCK #ifdef __ARM_ARCH_7EM__ ldr r3, [r1], #4 str r3, [r0], #4 END_UNROLL - 2a718: f851 3b04 ldr.w r3, [r1], #4 - 2a71c: f840 3b04 str.w r3, [r0], #4 - 2a720: f851 3b04 ldr.w r3, [r1], #4 - 2a724: f840 3b04 str.w r3, [r0], #4 - 2a728: f851 3b04 ldr.w r3, [r1], #4 - 2a72c: f840 3b04 str.w r3, [r0], #4 - 2a730: f851 3b04 ldr.w r3, [r1], #4 - 2a734: f840 3b04 str.w r3, [r0], #4 - 2a738: f851 3b04 ldr.w r3, [r1], #4 - 2a73c: f840 3b04 str.w r3, [r0], #4 - 2a740: f851 3b04 ldr.w r3, [r1], #4 - 2a744: f840 3b04 str.w r3, [r0], #4 - 2a748: f851 3b04 ldr.w r3, [r1], #4 - 2a74c: f840 3b04 str.w r3, [r0], #4 - 2a750: f851 3b04 ldr.w r3, [r1], #4 - 2a754: f840 3b04 str.w r3, [r0], #4 - 2a758: f851 3b04 ldr.w r3, [r1], #4 - 2a75c: f840 3b04 str.w r3, [r0], #4 - 2a760: f851 3b04 ldr.w r3, [r1], #4 - 2a764: f840 3b04 str.w r3, [r0], #4 - 2a768: f851 3b04 ldr.w r3, [r1], #4 - 2a76c: f840 3b04 str.w r3, [r0], #4 - 2a770: f851 3b04 ldr.w r3, [r1], #4 - 2a774: f840 3b04 str.w r3, [r0], #4 - 2a778: f851 3b04 ldr.w r3, [r1], #4 - 2a77c: f840 3b04 str.w r3, [r0], #4 - 2a780: f851 3b04 ldr.w r3, [r1], #4 - 2a784: f840 3b04 str.w r3, [r0], #4 - 2a788: f851 3b04 ldr.w r3, [r1], #4 - 2a78c: f840 3b04 str.w r3, [r0], #4 - 2a790: f851 3b04 ldr.w r3, [r1], #4 - 2a794: f840 3b04 str.w r3, [r0], #4 + 2a800: f851 3b04 ldr.w r3, [r1], #4 + 2a804: f840 3b04 str.w r3, [r0], #4 + 2a808: f851 3b04 ldr.w r3, [r1], #4 + 2a80c: f840 3b04 str.w r3, [r0], #4 + 2a810: f851 3b04 ldr.w r3, [r1], #4 + 2a814: f840 3b04 str.w r3, [r0], #4 + 2a818: f851 3b04 ldr.w r3, [r1], #4 + 2a81c: f840 3b04 str.w r3, [r0], #4 + 2a820: f851 3b04 ldr.w r3, [r1], #4 + 2a824: f840 3b04 str.w r3, [r0], #4 + 2a828: f851 3b04 ldr.w r3, [r1], #4 + 2a82c: f840 3b04 str.w r3, [r0], #4 + 2a830: f851 3b04 ldr.w r3, [r1], #4 + 2a834: f840 3b04 str.w r3, [r0], #4 + 2a838: f851 3b04 ldr.w r3, [r1], #4 + 2a83c: f840 3b04 str.w r3, [r0], #4 + 2a840: f851 3b04 ldr.w r3, [r1], #4 + 2a844: f840 3b04 str.w r3, [r0], #4 + 2a848: f851 3b04 ldr.w r3, [r1], #4 + 2a84c: f840 3b04 str.w r3, [r0], #4 + 2a850: f851 3b04 ldr.w r3, [r1], #4 + 2a854: f840 3b04 str.w r3, [r0], #4 + 2a858: f851 3b04 ldr.w r3, [r1], #4 + 2a85c: f840 3b04 str.w r3, [r0], #4 + 2a860: f851 3b04 ldr.w r3, [r1], #4 + 2a864: f840 3b04 str.w r3, [r0], #4 + 2a868: f851 3b04 ldr.w r3, [r1], #4 + 2a86c: f840 3b04 str.w r3, [r0], #4 + 2a870: f851 3b04 ldr.w r3, [r1], #4 + 2a874: f840 3b04 str.w r3, [r0], #4 + 2a878: f851 3b04 ldr.w r3, [r1], #4 + 2a87c: f840 3b04 str.w r3, [r0], #4 str r3, [r0, \offset] END_UNROLL adds r0, __OPT_BIG_BLOCK_SIZE adds r1, __OPT_BIG_BLOCK_SIZE #endif subs r2, __OPT_BIG_BLOCK_SIZE - 2a798: 3a40 subs r2, #64 ; 0x40 + 2a880: 3a40 subs r2, #64 ; 0x40 bhs .Lbig_block_loop - 2a79a: d2bd bcs.n 2a718 + 2a882: d2bd bcs.n 2a800 .Lmid_block: adds r2, __OPT_BIG_BLOCK_SIZE - __OPT_MID_BLOCK_SIZE - 2a79c: 3230 adds r2, #48 ; 0x30 + 2a884: 3230 adds r2, #48 ; 0x30 blo .Lcopy_word_by_word - 2a79e: d311 bcc.n 2a7c4 + 2a886: d311 bcc.n 2a8ac .Lmid_block_loop: BEGIN_UNROLL_MID_BLOCK #ifdef __ARM_ARCH_7EM__ ldr r3, [r1], #4 str r3, [r0], #4 END_UNROLL - 2a7a0: f851 3b04 ldr.w r3, [r1], #4 - 2a7a4: f840 3b04 str.w r3, [r0], #4 - 2a7a8: f851 3b04 ldr.w r3, [r1], #4 - 2a7ac: f840 3b04 str.w r3, [r0], #4 - 2a7b0: f851 3b04 ldr.w r3, [r1], #4 - 2a7b4: f840 3b04 str.w r3, [r0], #4 - 2a7b8: f851 3b04 ldr.w r3, [r1], #4 - 2a7bc: f840 3b04 str.w r3, [r0], #4 + 2a888: f851 3b04 ldr.w r3, [r1], #4 + 2a88c: f840 3b04 str.w r3, [r0], #4 + 2a890: f851 3b04 ldr.w r3, [r1], #4 + 2a894: f840 3b04 str.w r3, [r0], #4 + 2a898: f851 3b04 ldr.w r3, [r1], #4 + 2a89c: f840 3b04 str.w r3, [r0], #4 + 2a8a0: f851 3b04 ldr.w r3, [r1], #4 + 2a8a4: f840 3b04 str.w r3, [r0], #4 str r3, [r0, \offset] END_UNROLL adds r0, __OPT_MID_BLOCK_SIZE adds r1, __OPT_MID_BLOCK_SIZE #endif subs r2, __OPT_MID_BLOCK_SIZE - 2a7c0: 3a10 subs r2, #16 + 2a8a8: 3a10 subs r2, #16 bhs .Lmid_block_loop - 2a7c2: d2ed bcs.n 2a7a0 + 2a8aa: d2ed bcs.n 2a888 .Lcopy_word_by_word: adds r2, __OPT_MID_BLOCK_SIZE - 4 - 2a7c4: 320c adds r2, #12 + 2a8ac: 320c adds r2, #12 blo .Lcopy_less_than_4 - 2a7c6: d305 bcc.n 2a7d4 + 2a8ae: d305 bcc.n 2a8bc /* Kernel loop for small block copy */ .align 2 .Lcopy_word_by_word_loop: ldr r3, [r1], #4 - 2a7c8: f851 3b04 ldr.w r3, [r1], #4 + 2a8b0: f851 3b04 ldr.w r3, [r1], #4 str r3, [r0], #4 - 2a7cc: f840 3b04 str.w r3, [r0], #4 + 2a8b4: f840 3b04 str.w r3, [r0], #4 subs r2, #4 - 2a7d0: 3a04 subs r2, #4 + 2a8b8: 3a04 subs r2, #4 bhs .Lcopy_word_by_word_loop - 2a7d2: d2f9 bcs.n 2a7c8 + 2a8ba: d2f9 bcs.n 2a8b0 .Lcopy_less_than_4: adds r2, #4 - 2a7d4: 3204 adds r2, #4 + 2a8bc: 3204 adds r2, #4 beq .Ldone - 2a7d6: d008 beq.n 2a7ea + 2a8be: d008 beq.n 2a8d2 lsls r2, r2, #31 - 2a7d8: 07d2 lsls r2, r2, #31 + 2a8c0: 07d2 lsls r2, r2, #31 itt ne - 2a7da: bf1c itt ne + 2a8c2: bf1c itt ne ldrbne r3, [r1], #1 - 2a7dc: f811 3b01 ldrbne.w r3, [r1], #1 + 2a8c4: f811 3b01 ldrbne.w r3, [r1], #1 strbne r3, [r0], #1 - 2a7e0: f800 3b01 strbne.w r3, [r0], #1 + 2a8c8: f800 3b01 strbne.w r3, [r0], #1 bcc .Ldone - 2a7e4: d301 bcc.n 2a7ea + 2a8cc: d301 bcc.n 2a8d2 #ifdef __ARM_FEATURE_UNALIGNED ldrh r3, [r1] - 2a7e6: 880b ldrh r3, [r1, #0] + 2a8ce: 880b ldrh r3, [r1, #0] strh r3, [r0] - 2a7e8: 8003 strh r3, [r0, #0] + 2a8d0: 8003 strh r3, [r0, #0] strb r3, [r0, #1] #endif /* __ARM_FEATURE_UNALIGNED */ .Ldone: #ifdef __ARM_FEATURE_UNALIGNED mov r0, ip - 2a7ea: 4660 mov r0, ip + 2a8d2: 4660 mov r0, ip #else pop {r0} #endif bx lr - 2a7ec: 4770 bx lr - 2a7ee: bf00 nop + 2a8d4: 4770 bx lr + 2a8d6: bf00 nop #define Ldst_aligned Lbig_block /* Copy word by word using LDR when alignment can be done in hardware, i.e., SCTLR.A is set, supporting unaligned access in LDR and STR. */ cmp r2, #8 - 2a7f0: 2a08 cmp r2, #8 + 2a8d8: 2a08 cmp r2, #8 blo .Lbyte_copy - 2a7f2: d313 bcc.n 2a81c + 2a8da: d313 bcc.n 2a904 /* if src is aligned, just go to the big block loop. */ lsls r3, r1, #30 - 2a7f4: 078b lsls r3, r1, #30 + 2a8dc: 078b lsls r3, r1, #30 beq .Ldst_aligned - 2a7f6: d08d beq.n 2a714 + 2a8de: d08d beq.n 2a7fc handling of aligned src and misaligned dst need more overhead than otherwise. By doing this the worst case is when initial src is aligned, additional up to 4 byte additional copy will executed, which is acceptable. */ ands r3, r0, #3 - 2a7f8: f010 0303 ands.w r3, r0, #3 + 2a8e0: f010 0303 ands.w r3, r0, #3 beq .Ldst_aligned - 2a7fc: d08a beq.n 2a714 + 2a8e4: d08a beq.n 2a7fc rsb r3, #4 - 2a7fe: f1c3 0304 rsb r3, r3, #4 + 2a8e6: f1c3 0304 rsb r3, r3, #4 subs r2, r3 - 2a802: 1ad2 subs r2, r2, r3 + 2a8ea: 1ad2 subs r2, r2, r3 lsls r3, r3, #31 - 2a804: 07db lsls r3, r3, #31 + 2a8ec: 07db lsls r3, r3, #31 itt ne - 2a806: bf1c itt ne + 2a8ee: bf1c itt ne ldrbne r3, [r1], #1 - 2a808: f811 3b01 ldrbne.w r3, [r1], #1 + 2a8f0: f811 3b01 ldrbne.w r3, [r1], #1 strbne r3, [r0], #1 - 2a80c: f800 3b01 strbne.w r3, [r0], #1 + 2a8f4: f800 3b01 strbne.w r3, [r0], #1 bcc .Ldst_aligned - 2a810: d380 bcc.n 2a714 + 2a8f8: d380 bcc.n 2a7fc #ifdef __ARM_FEATURE_UNALIGNED ldrh r3, [r1], #2 - 2a812: f831 3b02 ldrh.w r3, [r1], #2 + 2a8fa: f831 3b02 ldrh.w r3, [r1], #2 strh r3, [r0], #2 - 2a816: f820 3b02 strh.w r3, [r0], #2 + 2a8fe: f820 3b02 strh.w r3, [r0], #2 b .Ldst_aligned - 2a81a: e77b b.n 2a714 + 2a902: e77b b.n 2a7fc pop {r4, r5} #endif /* __ARM_FEATURE_UNALIGNED */ .Lbyte_copy: subs r2, #4 - 2a81c: 3a04 subs r2, #4 + 2a904: 3a04 subs r2, #4 blo .Lcopy_less_than_4 - 2a81e: d3d9 bcc.n 2a7d4 + 2a906: d3d9 bcc.n 2a8bc .Lbyte_copy_loop: subs r2, #1 - 2a820: 3a01 subs r2, #1 + 2a908: 3a01 subs r2, #1 ldrb r3, [r1], #1 - 2a822: f811 3b01 ldrb.w r3, [r1], #1 + 2a90a: f811 3b01 ldrb.w r3, [r1], #1 strb r3, [r0], #1 - 2a826: f800 3b01 strb.w r3, [r0], #1 + 2a90e: f800 3b01 strb.w r3, [r0], #1 bhs .Lbyte_copy_loop - 2a82a: d2f9 bcs.n 2a820 + 2a912: d2f9 bcs.n 2a908 ldrb r3, [r1] - 2a82c: 780b ldrb r3, [r1, #0] + 2a914: 780b ldrb r3, [r1, #0] strb r3, [r0] - 2a82e: 7003 strb r3, [r0, #0] + 2a916: 7003 strb r3, [r0, #0] ldrb r3, [r1, #1] - 2a830: 784b ldrb r3, [r1, #1] + 2a918: 784b ldrb r3, [r1, #1] strb r3, [r0, #1] - 2a832: 7043 strb r3, [r0, #1] + 2a91a: 7043 strb r3, [r0, #1] ldrb r3, [r1, #2] - 2a834: 788b ldrb r3, [r1, #2] + 2a91c: 788b ldrb r3, [r1, #2] strb r3, [r0, #2] - 2a836: 7083 strb r3, [r0, #2] + 2a91e: 7083 strb r3, [r0, #2] #ifdef __ARM_FEATURE_UNALIGNED mov r0, ip - 2a838: 4660 mov r0, ip + 2a920: 4660 mov r0, ip #else pop {r0} #endif bx lr - 2a83a: 4770 bx lr + 2a922: 4770 bx lr -0002a83c : +0002a924 : #include void * operator new(size_t size) { return malloc(size); - 2a83c: f002 bfe2 b.w 2d804 + 2a924: f002 bfe2 b.w 2d8ec -0002a840 : +0002a928 : char * ultoa(unsigned long val, char *buf, int radix) { unsigned digit; int i=0, j; - 2a840: f101 3cff add.w ip, r1, #4294967295 ; 0xffffffff + 2a928: f101 3cff add.w ip, r1, #4294967295 ; 0xffffffff { - 2a844: b570 push {r4, r5, r6, lr} + 2a92c: b570 push {r4, r5, r6, lr} char t; while (1) { digit = val % radix; - 2a846: 4666 mov r6, ip + 2a92e: 4666 mov r6, ip int i=0, j; - 2a848: 2400 movs r4, #0 - 2a84a: e000 b.n 2a84e + 2a930: 2400 movs r4, #0 + 2a932: e000 b.n 2a936 buf[i] = ((digit < 10) ? '0' + digit : 'A' + digit - 10); val /= radix; if (val == 0) break; i++; - 2a84c: 3401 adds r4, #1 + 2a934: 3401 adds r4, #1 digit = val % radix; - 2a84e: fbb0 f5f2 udiv r5, r0, r2 - 2a852: fb02 0315 mls r3, r2, r5, r0 + 2a936: fbb0 f5f2 udiv r5, r0, r2 + 2a93a: fb02 0315 mls r3, r2, r5, r0 buf[i] = ((digit < 10) ? '0' + digit : 'A' + digit - 10); - 2a856: 2b09 cmp r3, #9 - 2a858: f103 0e37 add.w lr, r3, #55 ; 0x37 - 2a85c: f103 0330 add.w r3, r3, #48 ; 0x30 - 2a860: fa5f fe8e uxtb.w lr, lr - 2a864: bf98 it ls - 2a866: fa5f fe83 uxtbls.w lr, r3 + 2a93e: 2b09 cmp r3, #9 + 2a940: f103 0e37 add.w lr, r3, #55 ; 0x37 + 2a944: f103 0330 add.w r3, r3, #48 ; 0x30 + 2a948: fa5f fe8e uxtb.w lr, lr + 2a94c: bf98 it ls + 2a94e: fa5f fe83 uxtbls.w lr, r3 if (val == 0) break; - 2a86a: 4290 cmp r0, r2 + 2a952: 4290 cmp r0, r2 val /= radix; - 2a86c: 4628 mov r0, r5 + 2a954: 4628 mov r0, r5 buf[i] = ((digit < 10) ? '0' + digit : 'A' + digit - 10); - 2a86e: f806 ef01 strb.w lr, [r6, #1]! + 2a956: f806 ef01 strb.w lr, [r6, #1]! if (val == 0) break; - 2a872: d2eb bcs.n 2a84c + 2a95a: d2eb bcs.n 2a934 } buf[i + 1] = 0; - 2a874: 1c63 adds r3, r4, #1 - 2a876: 2200 movs r2, #0 - 2a878: 18c8 adds r0, r1, r3 - 2a87a: 54ca strb r2, [r1, r3] + 2a95c: 1c63 adds r3, r4, #1 + 2a95e: 2200 movs r2, #0 + 2a960: 18c8 adds r0, r1, r3 + 2a962: 54ca strb r2, [r1, r3] for (j=0; j < i; j++, i--) { - 2a87c: b17c cbz r4, 2a89e + 2a964: b17c cbz r4, 2a986 t = buf[j]; - 2a87e: 4662 mov r2, ip - 2a880: f81c 5f01 ldrb.w r5, [ip, #1]! + 2a966: 4662 mov r2, ip + 2a968: f81c 5f01 ldrb.w r5, [ip, #1]! buf[j] = buf[i]; - 2a884: f810 6d01 ldrb.w r6, [r0, #-1]! + 2a96c: f810 6d01 ldrb.w r6, [r0, #-1]! for (j=0; j < i; j++, i--) { - 2a888: eba1 030c sub.w r3, r1, ip - 2a88c: 3202 adds r2, #2 + 2a970: eba1 030c sub.w r3, r1, ip + 2a974: 3202 adds r2, #2 buf[j] = buf[i]; - 2a88e: f88c 6000 strb.w r6, [ip] + 2a976: f88c 6000 strb.w r6, [ip] for (j=0; j < i; j++, i--) { - 2a892: 3b01 subs r3, #1 - 2a894: 1a52 subs r2, r2, r1 + 2a97a: 3b01 subs r3, #1 + 2a97c: 1a52 subs r2, r2, r1 buf[i] = t; - 2a896: 7005 strb r5, [r0, #0] + 2a97e: 7005 strb r5, [r0, #0] for (j=0; j < i; j++, i--) { - 2a898: 4423 add r3, r4 - 2a89a: 429a cmp r2, r3 - 2a89c: dbef blt.n 2a87e + 2a980: 4423 add r3, r4 + 2a982: 429a cmp r2, r3 + 2a984: dbef blt.n 2a966 } return buf; } - 2a89e: 4608 mov r0, r1 - 2a8a0: bd70 pop {r4, r5, r6, pc} - 2a8a2: bf00 nop + 2a986: 4608 mov r0, r1 + 2a988: bd70 pop {r4, r5, r6, pc} + 2a98a: bf00 nop -0002a8a4 : +0002a98c : #endif // __IMXRT1062__ void flexpwmWrite(IMXRT_FLEXPWM_t *p, unsigned int submodule, uint8_t channel, uint16_t val) { uint16_t mask = 1 << submodule; - 2a8a4: f04f 0c01 mov.w ip, #1 - 2a8a8: fa0c fc01 lsl.w ip, ip, r1 + 2a98c: f04f 0c01 mov.w ip, #1 + 2a990: fa0c fc01 lsl.w ip, ip, r1 uint32_t modulo = p->SM[submodule].VAL1; - 2a8ac: eb01 0141 add.w r1, r1, r1, lsl #1 - 2a8b0: eb00 1141 add.w r1, r0, r1, lsl #5 + 2a994: eb01 0141 add.w r1, r1, r1, lsl #1 + 2a998: eb00 1141 add.w r1, r0, r1, lsl #5 { - 2a8b4: b570 push {r4, r5, r6, lr} + 2a99c: b570 push {r4, r5, r6, lr} uint32_t modulo = p->SM[submodule].VAL1; - 2a8b6: f8b1 e00e ldrh.w lr, [r1, #14] + 2a99e: f8b1 e00e ldrh.w lr, [r1, #14] uint16_t mask = 1 << submodule; - 2a8ba: fa1f f58c uxth.w r5, ip + 2a9a2: fa1f f58c uxth.w r5, ip uint32_t cval = ((uint32_t)val * (modulo + 1)) >> analog_write_res; - 2a8be: 4c25 ldr r4, [pc, #148] ; (2a954 ) + 2a9a6: 4c25 ldr r4, [pc, #148] ; (2aa3c ) uint32_t modulo = p->SM[submodule].VAL1; - 2a8c0: fa1f fe8e uxth.w lr, lr + 2a9a8: fa1f fe8e uxth.w lr, lr uint32_t cval = ((uint32_t)val * (modulo + 1)) >> analog_write_res; - 2a8c4: 7824 ldrb r4, [r4, #0] + 2a9ac: 7824 ldrb r4, [r4, #0] if (cval > modulo) cval = modulo; // TODO: is this check correct? //printf("flexpwmWrite, p=%08lX, sm=%d, ch=%c, cval=%ld\n", //(uint32_t)p, submodule, channel == 0 ? 'X' : (channel == 1 ? 'A' : 'B'), cval); p->MCTRL |= FLEXPWM_MCTRL_CLDOK(mask); - 2a8c6: 012e lsls r6, r5, #4 + 2a9ae: 012e lsls r6, r5, #4 uint32_t cval = ((uint32_t)val * (modulo + 1)) >> analog_write_res; - 2a8c8: fb0e 3303 mla r3, lr, r3, r3 - 2a8cc: f006 06f0 and.w r6, r6, #240 ; 0xf0 - 2a8d0: 40e3 lsrs r3, r4 + 2a9b0: fb0e 3303 mla r3, lr, r3, r3 + 2a9b4: f006 06f0 and.w r6, r6, #240 ; 0xf0 + 2a9b8: 40e3 lsrs r3, r4 p->MCTRL |= FLEXPWM_MCTRL_CLDOK(mask); - 2a8d2: f8b0 4188 ldrh.w r4, [r0, #392] ; 0x188 - 2a8d6: 4573 cmp r3, lr - 2a8d8: b2a4 uxth r4, r4 - 2a8da: bf28 it cs - 2a8dc: 4673 movcs r3, lr - 2a8de: 4334 orrs r4, r6 + 2a9ba: f8b0 4188 ldrh.w r4, [r0, #392] ; 0x188 + 2a9be: 4573 cmp r3, lr + 2a9c0: b2a4 uxth r4, r4 + 2a9c2: bf28 it cs + 2a9c4: 4673 movcs r3, lr + 2a9c6: 4334 orrs r4, r6 switch (channel) { - 2a8e0: 2a01 cmp r2, #1 + 2a9c8: 2a01 cmp r2, #1 p->MCTRL |= FLEXPWM_MCTRL_CLDOK(mask); - 2a8e2: f8a0 4188 strh.w r4, [r0, #392] ; 0x188 + 2a9ca: f8a0 4188 strh.w r4, [r0, #392] ; 0x188 switch (channel) { - 2a8e6: d00d beq.n 2a904 - 2a8e8: 2a02 cmp r2, #2 - 2a8ea: d028 beq.n 2a93e - 2a8ec: b1c2 cbz r2, 2a920 - 2a8ee: f00c 020f and.w r2, ip, #15 + 2a9ce: d00d beq.n 2a9ec + 2a9d0: 2a02 cmp r2, #2 + 2a9d2: d028 beq.n 2aa26 + 2a9d4: b1c2 cbz r2, 2aa08 + 2a9d6: f00c 020f and.w r2, ip, #15 case 2: // B p->SM[submodule].VAL5 = cval; p->OUTEN |= FLEXPWM_OUTEN_PWMB_EN(mask); //printf(" write channel B\n"); } p->MCTRL |= FLEXPWM_MCTRL_LDOK(mask); - 2a8f2: f8b0 c188 ldrh.w ip, [r0, #392] ; 0x188 - 2a8f6: fa1f fc8c uxth.w ip, ip - 2a8fa: ea4c 0c02 orr.w ip, ip, r2 - 2a8fe: f8a0 c188 strh.w ip, [r0, #392] ; 0x188 + 2a9da: f8b0 c188 ldrh.w ip, [r0, #392] ; 0x188 + 2a9de: fa1f fc8c uxth.w ip, ip + 2a9e2: ea4c 0c02 orr.w ip, ip, r2 + 2a9e6: f8a0 c188 strh.w ip, [r0, #392] ; 0x188 } - 2a902: bd70 pop {r4, r5, r6, pc} + 2a9ea: bd70 pop {r4, r5, r6, pc} p->SM[submodule].VAL3 = cval; - 2a904: b29b uxth r3, r3 - 2a906: f00c 020f and.w r2, ip, #15 + 2a9ec: b29b uxth r3, r3 + 2a9ee: f00c 020f and.w r2, ip, #15 p->OUTEN |= FLEXPWM_OUTEN_PWMA_EN(mask); - 2a90a: 022d lsls r5, r5, #8 + 2a9f2: 022d lsls r5, r5, #8 p->SM[submodule].VAL3 = cval; - 2a90c: 82cb strh r3, [r1, #22] + 2a9f4: 82cb strh r3, [r1, #22] p->OUTEN |= FLEXPWM_OUTEN_PWMA_EN(mask); - 2a90e: f8b0 3180 ldrh.w r3, [r0, #384] ; 0x180 - 2a912: f405 6570 and.w r5, r5, #3840 ; 0xf00 - 2a916: b29b uxth r3, r3 - 2a918: 432b orrs r3, r5 - 2a91a: f8a0 3180 strh.w r3, [r0, #384] ; 0x180 + 2a9f6: f8b0 3180 ldrh.w r3, [r0, #384] ; 0x180 + 2a9fa: f405 6570 and.w r5, r5, #3840 ; 0xf00 + 2a9fe: b29b uxth r3, r3 + 2aa00: 432b orrs r3, r5 + 2aa02: f8a0 3180 strh.w r3, [r0, #384] ; 0x180 break; - 2a91e: e7e8 b.n 2a8f2 + 2aa06: e7e8 b.n 2a9da p->SM[submodule].VAL0 = modulo - cval; - 2a920: ebae 0e03 sub.w lr, lr, r3 - 2a924: f00c 020f and.w r2, ip, #15 - 2a928: fa1f fe8e uxth.w lr, lr - 2a92c: f8a1 e00a strh.w lr, [r1, #10] + 2aa08: ebae 0e03 sub.w lr, lr, r3 + 2aa0c: f00c 020f and.w r2, ip, #15 + 2aa10: fa1f fe8e uxth.w lr, lr + 2aa14: f8a1 e00a strh.w lr, [r1, #10] p->OUTEN |= FLEXPWM_OUTEN_PWMX_EN(mask); - 2a930: f8b0 3180 ldrh.w r3, [r0, #384] ; 0x180 - 2a934: b29b uxth r3, r3 - 2a936: 4313 orrs r3, r2 - 2a938: f8a0 3180 strh.w r3, [r0, #384] ; 0x180 + 2aa18: f8b0 3180 ldrh.w r3, [r0, #384] ; 0x180 + 2aa1c: b29b uxth r3, r3 + 2aa1e: 4313 orrs r3, r2 + 2aa20: f8a0 3180 strh.w r3, [r0, #384] ; 0x180 break; - 2a93c: e7d9 b.n 2a8f2 + 2aa24: e7d9 b.n 2a9da p->SM[submodule].VAL5 = cval; - 2a93e: b29b uxth r3, r3 - 2a940: f00c 020f and.w r2, ip, #15 - 2a944: 83cb strh r3, [r1, #30] + 2aa26: b29b uxth r3, r3 + 2aa28: f00c 020f and.w r2, ip, #15 + 2aa2c: 83cb strh r3, [r1, #30] p->OUTEN |= FLEXPWM_OUTEN_PWMB_EN(mask); - 2a946: f8b0 3180 ldrh.w r3, [r0, #384] ; 0x180 - 2a94a: b29b uxth r3, r3 - 2a94c: 431e orrs r6, r3 - 2a94e: f8a0 6180 strh.w r6, [r0, #384] ; 0x180 - 2a952: e7ce b.n 2a8f2 - 2a954: 20005216 .word 0x20005216 + 2aa2e: f8b0 3180 ldrh.w r3, [r0, #384] ; 0x180 + 2aa32: b29b uxth r3, r3 + 2aa34: 431e orrs r6, r3 + 2aa36: f8a0 6180 strh.w r6, [r0, #384] ; 0x180 + 2aa3a: e7ce b.n 2a9da + 2aa3c: 200052d6 .word 0x200052d6 -0002a958 : +0002aa40 : void analogWrite(uint8_t pin, int val) { const struct pwm_pin_info_struct *info; if (pin >= CORE_NUM_DIGITAL) return; - 2a958: 2827 cmp r0, #39 ; 0x27 - 2a95a: d84b bhi.n 2a9f4 + 2aa40: 2827 cmp r0, #39 ; 0x27 + 2aa42: d84b bhi.n 2aadc { - 2a95c: b5f8 push {r3, r4, r5, r6, r7, lr} + 2aa44: b5f8 push {r3, r4, r5, r6, r7, lr} //printf("analogWrite, pin %d, val %d\n", pin, val); info = pwm_pin_info + pin; - 2a95e: 4d2a ldr r5, [pc, #168] ; (2aa08 ) - 2a960: 4604 mov r4, r0 + 2aa46: 4d2a ldr r5, [pc, #168] ; (2aaf0 ) + 2aa48: 4604 mov r4, r0 if (info->type == 1) { - 2a962: f815 2020 ldrb.w r2, [r5, r0, lsl #2] + 2aa4a: f815 2020 ldrb.w r2, [r5, r0, lsl #2] info = pwm_pin_info + pin; - 2a966: eb05 0580 add.w r5, r5, r0, lsl #2 + 2aa4e: eb05 0580 add.w r5, r5, r0, lsl #2 if (info->type == 1) { - 2a96a: 2a01 cmp r2, #1 - 2a96c: d02d beq.n 2a9ca + 2aa52: 2a01 cmp r2, #1 + 2aa54: d02d beq.n 2aab2 case 1: flexpwm = &IMXRT_FLEXPWM2; break; case 2: flexpwm = &IMXRT_FLEXPWM3; break; default: flexpwm = &IMXRT_FLEXPWM4; } flexpwmWrite(flexpwm, info->module & 0x03, info->channel, val); } else if (info->type == 2) { - 2a96e: 2a02 cmp r2, #2 - 2a970: d13f bne.n 2a9f2 + 2aa56: 2a02 cmp r2, #2 + 2aa58: d13f bne.n 2aada // QuadTimer pin IMXRT_TMR_t *qtimer; switch ((info->module >> 4) & 3) { - 2a972: 786b ldrb r3, [r5, #1] - 2a974: f3c3 1001 ubfx r0, r3, #4, #2 - 2a978: 2803 cmp r0, #3 - 2a97a: d03e beq.n 2a9fa - 2a97c: 4a23 ldr r2, [pc, #140] ; (2aa0c ) - 2a97e: eb02 3280 add.w r2, r2, r0, lsl #14 + 2aa5a: 786b ldrb r3, [r5, #1] + 2aa5c: f3c3 1001 ubfx r0, r3, #4, #2 + 2aa60: 2803 cmp r0, #3 + 2aa62: d03e beq.n 2aae2 + 2aa64: 4a23 ldr r2, [pc, #140] ; (2aaf4 ) + 2aa66: eb02 3280 add.w r2, r2, r0, lsl #14 case 0: qtimer = &IMXRT_TMR1; break; case 1: qtimer = &IMXRT_TMR2; break; case 2: qtimer = &IMXRT_TMR3; break; default: qtimer = &IMXRT_TMR4; } quadtimerWrite(qtimer, info->module & 0x03, val); - 2a982: f003 0c03 and.w ip, r3, #3 + 2aa6a: f003 0c03 and.w ip, r3, #3 uint32_t high = ((uint32_t)val * (modulo - 1)) >> analog_write_res; - 2a986: 4822 ldr r0, [pc, #136] ; (2aa10 ) - 2a988: b289 uxth r1, r1 - 2a98a: 4663 mov r3, ip + 2aa6e: 4822 ldr r0, [pc, #136] ; (2aaf8 ) + 2aa70: b289 uxth r1, r1 + 2aa72: 4663 mov r3, ip uint32_t modulo = 65537 - p->CH[submodule].LOAD + p->CH[submodule].CMPLD1; - 2a98c: eb02 1c4c add.w ip, r2, ip, lsl #5 + 2aa74: eb02 1c4c add.w ip, r2, ip, lsl #5 uint32_t high = ((uint32_t)val * (modulo - 1)) >> analog_write_res; - 2a990: 7806 ldrb r6, [r0, #0] + 2aa78: 7806 ldrb r6, [r0, #0] uint32_t modulo = 65537 - p->CH[submodule].LOAD + p->CH[submodule].CMPLD1; - 2a992: f8bc e006 ldrh.w lr, [ip, #6] - 2a996: 0158 lsls r0, r3, #5 - 2a998: f8bc 3010 ldrh.w r3, [ip, #16] - 2a99c: fa1f fe8e uxth.w lr, lr - 2a9a0: f1ce 1e01 rsb lr, lr, #65537 ; 0x10001 - 2a9a4: fa1e f383 uxtah r3, lr, r3 + 2aa7a: f8bc e006 ldrh.w lr, [ip, #6] + 2aa7e: 0158 lsls r0, r3, #5 + 2aa80: f8bc 3010 ldrh.w r3, [ip, #16] + 2aa84: fa1f fe8e uxth.w lr, lr + 2aa88: f1ce 1e01 rsb lr, lr, #65537 ; 0x10001 + 2aa8c: fa1e f383 uxtah r3, lr, r3 uint32_t high = ((uint32_t)val * (modulo - 1)) >> analog_write_res; - 2a9a8: f103 3eff add.w lr, r3, #4294967295 ; 0xffffffff - 2a9ac: fb0e f101 mul.w r1, lr, r1 - 2a9b0: 40f1 lsrs r1, r6 + 2aa90: f103 3eff add.w lr, r3, #4294967295 ; 0xffffffff + 2aa94: fb0e f101 mul.w r1, lr, r1 + 2aa98: 40f1 lsrs r1, r6 if (high >= modulo - 1) high = modulo - 2; - 2a9b2: 458e cmp lr, r1 - 2a9b4: d923 bls.n 2a9fe + 2aa9a: 458e cmp lr, r1 + 2aa9c: d923 bls.n 2aae6 uint32_t low = modulo - high; // low must 2 or higher - 2a9b6: 1a5b subs r3, r3, r1 + 2aa9e: 1a5b subs r3, r3, r1 p->CH[submodule].LOAD = 65537 - low; - 2a9b8: f1c3 0301 rsb r3, r3, #1 - 2a9bc: b29b uxth r3, r3 + 2aaa0: f1c3 0301 rsb r3, r3, #1 + 2aaa4: b29b uxth r3, r3 p->CH[submodule].CMPLD1 = high; - 2a9be: b289 uxth r1, r1 - 2a9c0: 4402 add r2, r0 + 2aaa6: b289 uxth r1, r1 + 2aaa8: 4402 add r2, r0 p->CH[submodule].LOAD = 65537 - low; - 2a9c2: f8ac 3006 strh.w r3, [ip, #6] + 2aaaa: f8ac 3006 strh.w r3, [ip, #6] p->CH[submodule].CMPLD1 = high; - 2a9c6: 8211 strh r1, [r2, #16] + 2aaae: 8211 strh r1, [r2, #16] } - 2a9c8: e00d b.n 2a9e6 + 2aab0: e00d b.n 2aace switch ((info->module >> 4) & 3) { - 2a9ca: 786a ldrb r2, [r5, #1] - 2a9cc: f3c2 1301 ubfx r3, r2, #4, #2 - 2a9d0: 2b03 cmp r3, #3 - 2a9d2: d010 beq.n 2a9f6 - 2a9d4: 480f ldr r0, [pc, #60] ; (2aa14 ) - 2a9d6: eb00 3083 add.w r0, r0, r3, lsl #14 + 2aab2: 786a ldrb r2, [r5, #1] + 2aab4: f3c2 1301 ubfx r3, r2, #4, #2 + 2aab8: 2b03 cmp r3, #3 + 2aaba: d010 beq.n 2aade + 2aabc: 480f ldr r0, [pc, #60] ; (2aafc ) + 2aabe: eb00 3083 add.w r0, r0, r3, lsl #14 flexpwmWrite(flexpwm, info->module & 0x03, info->channel, val); - 2a9da: b28b uxth r3, r1 - 2a9dc: f002 0103 and.w r1, r2, #3 - 2a9e0: 78aa ldrb r2, [r5, #2] - 2a9e2: f7ff ff5f bl 2a8a4 + 2aac2: b28b uxth r3, r1 + 2aac4: f002 0103 and.w r1, r2, #3 + 2aac8: 78aa ldrb r2, [r5, #2] + 2aaca: f7ff ff5f bl 2a98c } else { return; } *(portConfigRegister(pin)) = info->muxval; - 2a9e6: 4b0c ldr r3, [pc, #48] ; (2aa18 ) - 2a9e8: 78ea ldrb r2, [r5, #3] - 2a9ea: eb03 1304 add.w r3, r3, r4, lsl #4 - 2a9ee: 685b ldr r3, [r3, #4] - 2a9f0: 601a str r2, [r3, #0] + 2aace: 4b0c ldr r3, [pc, #48] ; (2ab00 ) + 2aad0: 78ea ldrb r2, [r5, #3] + 2aad2: eb03 1304 add.w r3, r3, r4, lsl #4 + 2aad6: 685b ldr r3, [r3, #4] + 2aad8: 601a str r2, [r3, #0] // TODO: pad config register } - 2a9f2: bdf8 pop {r3, r4, r5, r6, r7, pc} - 2a9f4: 4770 bx lr + 2aada: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2aadc: 4770 bx lr switch ((info->module >> 4) & 3) { - 2a9f6: 4809 ldr r0, [pc, #36] ; (2aa1c ) - 2a9f8: e7ef b.n 2a9da + 2aade: 4809 ldr r0, [pc, #36] ; (2ab04 ) + 2aae0: e7ef b.n 2aac2 switch ((info->module >> 4) & 3) { - 2a9fa: 4a09 ldr r2, [pc, #36] ; (2aa20 ) - 2a9fc: e7c1 b.n 2a982 + 2aae2: 4a09 ldr r2, [pc, #36] ; (2ab08 ) + 2aae4: e7c1 b.n 2aa6a if (high >= modulo - 1) high = modulo - 2; - 2a9fe: 1e99 subs r1, r3, #2 - 2aa00: f64f 73ff movw r3, #65535 ; 0xffff - 2aa04: e7db b.n 2a9be - 2aa06: bf00 nop - 2aa08: 200047ec .word 0x200047ec - 2aa0c: 401dc000 .word 0x401dc000 - 2aa10: 20005216 .word 0x20005216 - 2aa14: 403dc000 .word 0x403dc000 - 2aa18: 200044b4 .word 0x200044b4 - 2aa1c: 403e8000 .word 0x403e8000 - 2aa20: 401e8000 .word 0x401e8000 - -0002aa24 : + 2aae6: 1e99 subs r1, r3, #2 + 2aae8: f64f 73ff movw r3, #65535 ; 0xffff + 2aaec: e7db b.n 2aaa6 + 2aaee: bf00 nop + 2aaf0: 200048ac .word 0x200048ac + 2aaf4: 401dc000 .word 0x401dc000 + 2aaf8: 200052d6 .word 0x200052d6 + 2aafc: 403dc000 .word 0x403dc000 + 2ab00: 20004574 .word 0x20004574 + 2ab04: 403e8000 .word 0x403e8000 + 2ab08: 401e8000 .word 0x401e8000 + +0002ab0c : { int i; p->FCTRL0 = FLEXPWM_FCTRL0_FLVL(15); // logic high = fault p->FSTS0 = 0x000F; // clear fault status p->FFILT0 = 0; - 2aa24: 2300 movs r3, #0 + 2ab0c: 2300 movs r3, #0 p->FSTS0 = 0x000F; // clear fault status - 2aa26: 220f movs r2, #15 + 2ab0e: 220f movs r2, #15 p->SM[i].CTRL = FLEXPWM_SMCTRL_FULL; p->SM[i].OCTRL = 0; p->SM[i].DTCNT0 = 0; p->SM[i].INIT = 0; p->SM[i].VAL0 = 0; p->SM[i].VAL1 = 33464; - 2aa28: f248 2cb8 movw ip, #33464 ; 0x82b8 + 2ab10: f248 2cb8 movw ip, #33464 ; 0x82b8 for (i=0; i < 4; i++) { - 2aa2c: 4619 mov r1, r3 + 2ab14: 4619 mov r1, r3 { - 2aa2e: b510 push {r4, lr} + 2ab16: b510 push {r4, lr} p->FCTRL0 = FLEXPWM_FCTRL0_FLVL(15); // logic high = fault - 2aa30: f44f 4470 mov.w r4, #61440 ; 0xf000 + 2ab18: f44f 4470 mov.w r4, #61440 ; 0xf000 p->SM[i].CTRL = FLEXPWM_SMCTRL_FULL; - 2aa34: f44f 6e80 mov.w lr, #1024 ; 0x400 + 2ab1c: f44f 6e80 mov.w lr, #1024 ; 0x400 p->FCTRL0 = FLEXPWM_FCTRL0_FLVL(15); // logic high = fault - 2aa38: f8a0 418c strh.w r4, [r0, #396] ; 0x18c + 2ab20: f8a0 418c strh.w r4, [r0, #396] ; 0x18c p->SM[i].CTRL2 = FLEXPWM_SMCTRL2_INDEP | FLEXPWM_SMCTRL2_WAITEN - 2aa3c: f44f 4460 mov.w r4, #57344 ; 0xe000 + 2ab24: f44f 4460 mov.w r4, #57344 ; 0xe000 p->FSTS0 = 0x000F; // clear fault status - 2aa40: f8a0 218e strh.w r2, [r0, #398] ; 0x18e + 2ab28: f8a0 218e strh.w r2, [r0, #398] ; 0x18e p->SM[i].OCTRL = 0; - 2aa44: 460a mov r2, r1 + 2ab2c: 460a mov r2, r1 p->FFILT0 = 0; - 2aa46: f8a0 3190 strh.w r3, [r0, #400] ; 0x190 + 2ab2e: f8a0 3190 strh.w r3, [r0, #400] ; 0x190 p->MCTRL |= FLEXPWM_MCTRL_CLDOK(15); - 2aa4a: f8b0 3188 ldrh.w r3, [r0, #392] ; 0x188 - 2aa4e: b29b uxth r3, r3 - 2aa50: f043 03f0 orr.w r3, r3, #240 ; 0xf0 - 2aa54: f8a0 3188 strh.w r3, [r0, #392] ; 0x188 + 2ab32: f8b0 3188 ldrh.w r3, [r0, #392] ; 0x188 + 2ab36: b29b uxth r3, r3 + 2ab38: f043 03f0 orr.w r3, r3, #240 ; 0xf0 + 2ab3c: f8a0 3188 strh.w r3, [r0, #392] ; 0x188 p->SM[i].CTRL2 = FLEXPWM_SMCTRL2_INDEP | FLEXPWM_SMCTRL2_WAITEN - 2aa58: eb01 0341 add.w r3, r1, r1, lsl #1 + 2ab40: eb01 0341 add.w r3, r1, r1, lsl #1 for (i=0; i < 4; i++) { - 2aa5c: 3101 adds r1, #1 - 2aa5e: eb00 1343 add.w r3, r0, r3, lsl #5 - 2aa62: 2904 cmp r1, #4 + 2ab44: 3101 adds r1, #1 + 2ab46: eb00 1343 add.w r3, r0, r3, lsl #5 + 2ab4a: 2904 cmp r1, #4 p->SM[i].CTRL2 = FLEXPWM_SMCTRL2_INDEP | FLEXPWM_SMCTRL2_WAITEN - 2aa64: 809c strh r4, [r3, #4] + 2ab4c: 809c strh r4, [r3, #4] p->SM[i].CTRL = FLEXPWM_SMCTRL_FULL; - 2aa66: f8a3 e006 strh.w lr, [r3, #6] + 2ab4e: f8a3 e006 strh.w lr, [r3, #6] p->SM[i].OCTRL = 0; - 2aa6a: 845a strh r2, [r3, #34] ; 0x22 + 2ab52: 845a strh r2, [r3, #34] ; 0x22 p->SM[i].DTCNT0 = 0; - 2aa6c: 861a strh r2, [r3, #48] ; 0x30 + 2ab54: 861a strh r2, [r3, #48] ; 0x30 p->SM[i].INIT = 0; - 2aa6e: 805a strh r2, [r3, #2] + 2ab56: 805a strh r2, [r3, #2] p->SM[i].VAL0 = 0; - 2aa70: 815a strh r2, [r3, #10] + 2ab58: 815a strh r2, [r3, #10] p->SM[i].VAL1 = 33464; - 2aa72: f8a3 c00e strh.w ip, [r3, #14] + 2ab5a: f8a3 c00e strh.w ip, [r3, #14] p->SM[i].VAL2 = 0; - 2aa76: 825a strh r2, [r3, #18] + 2ab5e: 825a strh r2, [r3, #18] p->SM[i].VAL3 = 0; - 2aa78: 82da strh r2, [r3, #22] + 2ab60: 82da strh r2, [r3, #22] p->SM[i].VAL4 = 0; - 2aa7a: 835a strh r2, [r3, #26] + 2ab62: 835a strh r2, [r3, #26] p->SM[i].VAL5 = 0; - 2aa7c: 83da strh r2, [r3, #30] + 2ab64: 83da strh r2, [r3, #30] for (i=0; i < 4; i++) { - 2aa7e: d1eb bne.n 2aa58 + 2ab66: d1eb bne.n 2ab40 } p->MCTRL |= FLEXPWM_MCTRL_LDOK(15); - 2aa80: f8b0 3188 ldrh.w r3, [r0, #392] ; 0x188 - 2aa84: b29b uxth r3, r3 - 2aa86: f043 030f orr.w r3, r3, #15 - 2aa8a: f8a0 3188 strh.w r3, [r0, #392] ; 0x188 + 2ab68: f8b0 3188 ldrh.w r3, [r0, #392] ; 0x188 + 2ab6c: b29b uxth r3, r3 + 2ab6e: f043 030f orr.w r3, r3, #15 + 2ab72: f8a0 3188 strh.w r3, [r0, #392] ; 0x188 p->MCTRL |= FLEXPWM_MCTRL_RUN(15); - 2aa8e: f8b0 3188 ldrh.w r3, [r0, #392] ; 0x188 - 2aa92: b29b uxth r3, r3 - 2aa94: f443 6370 orr.w r3, r3, #3840 ; 0xf00 - 2aa98: f8a0 3188 strh.w r3, [r0, #392] ; 0x188 + 2ab76: f8b0 3188 ldrh.w r3, [r0, #392] ; 0x188 + 2ab7a: b29b uxth r3, r3 + 2ab7c: f443 6370 orr.w r3, r3, #3840 ; 0xf00 + 2ab80: f8a0 3188 strh.w r3, [r0, #392] ; 0x188 } - 2aa9c: bd10 pop {r4, pc} - 2aa9e: bf00 nop + 2ab84: bd10 pop {r4, pc} + 2ab86: bf00 nop -0002aaa0 : +0002ab88 : } void pwm_init(void) { //printf("pwm init\n"); CCM_CCGR4 |= CCM_CCGR4_PWM1(CCM_CCGR_ON) | CCM_CCGR4_PWM2(CCM_CCGR_ON) | - 2aaa0: 4b37 ldr r3, [pc, #220] ; (2ab80 ) + 2ab88: 4b37 ldr r3, [pc, #220] ; (2ac68 ) CCM_CCGR4_PWM3(CCM_CCGR_ON) | CCM_CCGR4_PWM4(CCM_CCGR_ON); CCM_CCGR6 |= CCM_CCGR6_QTIMER1(CCM_CCGR_ON) | CCM_CCGR6_QTIMER2(CCM_CCGR_ON) | - 2aaa2: 4a38 ldr r2, [pc, #224] ; (2ab84 ) + 2ab8a: 4a38 ldr r2, [pc, #224] ; (2ac6c ) CCM_CCGR4 |= CCM_CCGR4_PWM1(CCM_CCGR_ON) | CCM_CCGR4_PWM2(CCM_CCGR_ON) | - 2aaa4: 6f99 ldr r1, [r3, #120] ; 0x78 + 2ab8c: 6f99 ldr r1, [r3, #120] ; 0x78 CCM_CCGR6_QTIMER3(CCM_CCGR_ON) | CCM_CCGR6_QTIMER4(CCM_CCGR_ON); flexpwm_init(&IMXRT_FLEXPWM1); - 2aaa6: 4838 ldr r0, [pc, #224] ; (2ab88 ) + 2ab8e: 4838 ldr r0, [pc, #224] ; (2ac70 ) CCM_CCGR4 |= CCM_CCGR4_PWM1(CCM_CCGR_ON) | CCM_CCGR4_PWM2(CCM_CCGR_ON) | - 2aaa8: f441 017f orr.w r1, r1, #16711680 ; 0xff0000 + 2ab90: f441 017f orr.w r1, r1, #16711680 ; 0xff0000 { - 2aaac: b570 push {r4, r5, r6, lr} + 2ab94: b570 push {r4, r5, r6, lr} CCM_CCGR4 |= CCM_CCGR4_PWM1(CCM_CCGR_ON) | CCM_CCGR4_PWM2(CCM_CCGR_ON) | - 2aaae: 6799 str r1, [r3, #120] ; 0x78 + 2ab96: 6799 str r1, [r3, #120] ; 0x78 p->CH[i].CSCTRL = TMR_CSCTRL_CL1(1) | TMR_CSCTRL_ALT_LOAD; - 2aab0: f241 0601 movw r6, #4097 ; 0x1001 + 2ab98: f241 0601 movw r6, #4097 ; 0x1001 CCM_CCGR6 |= CCM_CCGR6_QTIMER1(CCM_CCGR_ON) | CCM_CCGR6_QTIMER2(CCM_CCGR_ON) | - 2aab4: f8d3 1080 ldr.w r1, [r3, #128] ; 0x80 + 2ab9c: f8d3 1080 ldr.w r1, [r3, #128] ; 0x80 p->CH[i].LOAD = 24000; // low time (65537 - x) - - 2aab8: f645 55c0 movw r5, #24000 ; 0x5dc0 + 2aba0: f645 55c0 movw r5, #24000 ; 0x5dc0 p->CH[i].CTRL = TMR_CTRL_CM(1) | TMR_CTRL_PCS(8) | - 2aabc: f243 0426 movw r4, #12326 ; 0x3026 + 2aba4: f243 0426 movw r4, #12326 ; 0x3026 CCM_CCGR6 |= CCM_CCGR6_QTIMER1(CCM_CCGR_ON) | CCM_CCGR6_QTIMER2(CCM_CCGR_ON) | - 2aac0: 430a orrs r2, r1 - 2aac2: f8c3 2080 str.w r2, [r3, #128] ; 0x80 + 2aba8: 430a orrs r2, r1 + 2abaa: f8c3 2080 str.w r2, [r3, #128] ; 0x80 flexpwm_init(&IMXRT_FLEXPWM1); - 2aac6: f7ff ffad bl 2aa24 + 2abae: f7ff ffad bl 2ab0c flexpwm_init(&IMXRT_FLEXPWM2); - 2aaca: f500 4080 add.w r0, r0, #16384 ; 0x4000 - 2aace: f7ff ffa9 bl 2aa24 + 2abb2: f500 4080 add.w r0, r0, #16384 ; 0x4000 + 2abb6: f7ff ffa9 bl 2ab0c flexpwm_init(&IMXRT_FLEXPWM3); - 2aad2: f500 4080 add.w r0, r0, #16384 ; 0x4000 - 2aad6: f7ff ffa5 bl 2aa24 + 2abba: f500 4080 add.w r0, r0, #16384 ; 0x4000 + 2abbe: f7ff ffa5 bl 2ab0c flexpwm_init(&IMXRT_FLEXPWM4); - 2aada: f500 4080 add.w r0, r0, #16384 ; 0x4000 - 2aade: f7ff ffa1 bl 2aa24 + 2abc2: f500 4080 add.w r0, r0, #16384 ; 0x4000 + 2abc6: f7ff ffa1 bl 2ab0c for (i=0; i < 4; i++) { - 2aae2: 2200 movs r2, #0 + 2abca: 2200 movs r2, #0 p->CH[i].CTRL = 0; // stop timer - 2aae4: f5a0 1003 sub.w r0, r0, #2146304 ; 0x20c000 + 2abcc: f5a0 1003 sub.w r0, r0, #2146304 ; 0x20c000 p->CH[i].SCTRL = TMR_SCTRL_OEN | TMR_SCTRL_OPS | TMR_SCTRL_VAL | TMR_SCTRL_FORCE; - 2aae8: f04f 0e0f mov.w lr, #15 + 2abd0: f04f 0e0f mov.w lr, #15 p->CH[i].CTRL = 0; // stop timer - 2aaec: 4611 mov r1, r2 - 2aaee: eb00 1342 add.w r3, r0, r2, lsl #5 - 2aaf2: ea4f 1c42 mov.w ip, r2, lsl #5 + 2abd4: 4611 mov r1, r2 + 2abd6: eb00 1342 add.w r3, r0, r2, lsl #5 + 2abda: ea4f 1c42 mov.w ip, r2, lsl #5 for (i=0; i < 4; i++) { - 2aaf6: 3201 adds r2, #1 + 2abde: 3201 adds r2, #1 p->CH[i].CTRL = 0; // stop timer - 2aaf8: 8199 strh r1, [r3, #12] + 2abe0: 8199 strh r1, [r3, #12] for (i=0; i < 4; i++) { - 2aafa: 2a04 cmp r2, #4 + 2abe2: 2a04 cmp r2, #4 p->CH[i].CNTR = 0; - 2aafc: 8159 strh r1, [r3, #10] + 2abe4: 8159 strh r1, [r3, #10] p->CH[i].SCTRL = TMR_SCTRL_OEN | TMR_SCTRL_OPS | TMR_SCTRL_VAL | TMR_SCTRL_FORCE; - 2aafe: f8a3 e00e strh.w lr, [r3, #14] + 2abe6: f8a3 e00e strh.w lr, [r3, #14] p->CH[i].CSCTRL = TMR_CSCTRL_CL1(1) | TMR_CSCTRL_ALT_LOAD; - 2ab02: 829e strh r6, [r3, #20] + 2abea: 829e strh r6, [r3, #20] p->CH[i].LOAD = 24000; // low time (65537 - x) - - 2ab04: 80dd strh r5, [r3, #6] + 2abec: 80dd strh r5, [r3, #6] p->CH[i].COMP1 = 0; // high time (0 = always low, max = LOAD-1) - 2ab06: f820 100c strh.w r1, [r0, ip] + 2abee: f820 100c strh.w r1, [r0, ip] p->CH[i].CMPLD1 = 0; - 2ab0a: 8219 strh r1, [r3, #16] + 2abf2: 8219 strh r1, [r3, #16] p->CH[i].CTRL = TMR_CTRL_CM(1) | TMR_CTRL_PCS(8) | - 2ab0c: 819c strh r4, [r3, #12] + 2abf4: 819c strh r4, [r3, #12] for (i=0; i < 4; i++) { - 2ab0e: d1ee bne.n 2aaee - 2ab10: 2200 movs r2, #0 + 2abf6: d1ee bne.n 2abd6 + 2abf8: 2200 movs r2, #0 p->CH[i].CTRL = 0; // stop timer - 2ab12: 481e ldr r0, [pc, #120] ; (2ab8c ) + 2abfa: 481e ldr r0, [pc, #120] ; (2ac74 ) p->CH[i].SCTRL = TMR_SCTRL_OEN | TMR_SCTRL_OPS | TMR_SCTRL_VAL | TMR_SCTRL_FORCE; - 2ab14: f04f 0e0f mov.w lr, #15 + 2abfc: f04f 0e0f mov.w lr, #15 p->CH[i].CSCTRL = TMR_CSCTRL_CL1(1) | TMR_CSCTRL_ALT_LOAD; - 2ab18: f241 0601 movw r6, #4097 ; 0x1001 + 2ac00: f241 0601 movw r6, #4097 ; 0x1001 p->CH[i].CTRL = 0; // stop timer - 2ab1c: 4611 mov r1, r2 + 2ac04: 4611 mov r1, r2 p->CH[i].LOAD = 24000; // low time (65537 - x) - - 2ab1e: f645 55c0 movw r5, #24000 ; 0x5dc0 + 2ac06: f645 55c0 movw r5, #24000 ; 0x5dc0 p->CH[i].CTRL = TMR_CTRL_CM(1) | TMR_CTRL_PCS(8) | - 2ab22: f243 0426 movw r4, #12326 ; 0x3026 + 2ac0a: f243 0426 movw r4, #12326 ; 0x3026 p->CH[i].CTRL = 0; // stop timer - 2ab26: eb00 1342 add.w r3, r0, r2, lsl #5 - 2ab2a: ea4f 1c42 mov.w ip, r2, lsl #5 + 2ac0e: eb00 1342 add.w r3, r0, r2, lsl #5 + 2ac12: ea4f 1c42 mov.w ip, r2, lsl #5 for (i=0; i < 4; i++) { - 2ab2e: 3201 adds r2, #1 + 2ac16: 3201 adds r2, #1 p->CH[i].CTRL = 0; // stop timer - 2ab30: 8199 strh r1, [r3, #12] + 2ac18: 8199 strh r1, [r3, #12] for (i=0; i < 4; i++) { - 2ab32: 2a04 cmp r2, #4 + 2ac1a: 2a04 cmp r2, #4 p->CH[i].CNTR = 0; - 2ab34: 8159 strh r1, [r3, #10] + 2ac1c: 8159 strh r1, [r3, #10] p->CH[i].SCTRL = TMR_SCTRL_OEN | TMR_SCTRL_OPS | TMR_SCTRL_VAL | TMR_SCTRL_FORCE; - 2ab36: f8a3 e00e strh.w lr, [r3, #14] + 2ac1e: f8a3 e00e strh.w lr, [r3, #14] p->CH[i].CSCTRL = TMR_CSCTRL_CL1(1) | TMR_CSCTRL_ALT_LOAD; - 2ab3a: 829e strh r6, [r3, #20] + 2ac22: 829e strh r6, [r3, #20] p->CH[i].LOAD = 24000; // low time (65537 - x) - - 2ab3c: 80dd strh r5, [r3, #6] + 2ac24: 80dd strh r5, [r3, #6] p->CH[i].COMP1 = 0; // high time (0 = always low, max = LOAD-1) - 2ab3e: f820 100c strh.w r1, [r0, ip] + 2ac26: f820 100c strh.w r1, [r0, ip] p->CH[i].CMPLD1 = 0; - 2ab42: 8219 strh r1, [r3, #16] + 2ac2a: 8219 strh r1, [r3, #16] p->CH[i].CTRL = TMR_CTRL_CM(1) | TMR_CTRL_PCS(8) | - 2ab44: 819c strh r4, [r3, #12] + 2ac2c: 819c strh r4, [r3, #12] for (i=0; i < 4; i++) { - 2ab46: d1ee bne.n 2ab26 - 2ab48: 2200 movs r2, #0 + 2ac2e: d1ee bne.n 2ac0e + 2ac30: 2200 movs r2, #0 p->CH[i].CTRL = 0; // stop timer - 2ab4a: 4811 ldr r0, [pc, #68] ; (2ab90 ) + 2ac32: 4811 ldr r0, [pc, #68] ; (2ac78 ) p->CH[i].SCTRL = TMR_SCTRL_OEN | TMR_SCTRL_OPS | TMR_SCTRL_VAL | TMR_SCTRL_FORCE; - 2ab4c: 260f movs r6, #15 + 2ac34: 260f movs r6, #15 p->CH[i].CSCTRL = TMR_CSCTRL_CL1(1) | TMR_CSCTRL_ALT_LOAD; - 2ab4e: f241 0501 movw r5, #4097 ; 0x1001 + 2ac36: f241 0501 movw r5, #4097 ; 0x1001 p->CH[i].CTRL = 0; // stop timer - 2ab52: 4611 mov r1, r2 + 2ac3a: 4611 mov r1, r2 p->CH[i].LOAD = 24000; // low time (65537 - x) - - 2ab54: f645 54c0 movw r4, #24000 ; 0x5dc0 + 2ac3c: f645 54c0 movw r4, #24000 ; 0x5dc0 p->CH[i].CTRL = TMR_CTRL_CM(1) | TMR_CTRL_PCS(8) | - 2ab58: f243 0e26 movw lr, #12326 ; 0x3026 + 2ac40: f243 0e26 movw lr, #12326 ; 0x3026 p->CH[i].CTRL = 0; // stop timer - 2ab5c: eb00 1342 add.w r3, r0, r2, lsl #5 - 2ab60: ea4f 1c42 mov.w ip, r2, lsl #5 + 2ac44: eb00 1342 add.w r3, r0, r2, lsl #5 + 2ac48: ea4f 1c42 mov.w ip, r2, lsl #5 for (i=0; i < 4; i++) { - 2ab64: 3201 adds r2, #1 + 2ac4c: 3201 adds r2, #1 p->CH[i].CTRL = 0; // stop timer - 2ab66: 8199 strh r1, [r3, #12] + 2ac4e: 8199 strh r1, [r3, #12] for (i=0; i < 4; i++) { - 2ab68: 2a04 cmp r2, #4 + 2ac50: 2a04 cmp r2, #4 p->CH[i].CNTR = 0; - 2ab6a: 8159 strh r1, [r3, #10] + 2ac52: 8159 strh r1, [r3, #10] p->CH[i].SCTRL = TMR_SCTRL_OEN | TMR_SCTRL_OPS | TMR_SCTRL_VAL | TMR_SCTRL_FORCE; - 2ab6c: 81de strh r6, [r3, #14] + 2ac54: 81de strh r6, [r3, #14] p->CH[i].CSCTRL = TMR_CSCTRL_CL1(1) | TMR_CSCTRL_ALT_LOAD; - 2ab6e: 829d strh r5, [r3, #20] + 2ac56: 829d strh r5, [r3, #20] p->CH[i].LOAD = 24000; // low time (65537 - x) - - 2ab70: 80dc strh r4, [r3, #6] + 2ac58: 80dc strh r4, [r3, #6] p->CH[i].COMP1 = 0; // high time (0 = always low, max = LOAD-1) - 2ab72: f820 100c strh.w r1, [r0, ip] + 2ac5a: f820 100c strh.w r1, [r0, ip] p->CH[i].CMPLD1 = 0; - 2ab76: 8219 strh r1, [r3, #16] + 2ac5e: 8219 strh r1, [r3, #16] p->CH[i].CTRL = TMR_CTRL_CM(1) | TMR_CTRL_PCS(8) | - 2ab78: f8a3 e00c strh.w lr, [r3, #12] + 2ac60: f8a3 e00c strh.w lr, [r3, #12] for (i=0; i < 4; i++) { - 2ab7c: d1ee bne.n 2ab5c + 2ac64: d1ee bne.n 2ac44 quadtimer_init(&IMXRT_TMR1); quadtimer_init(&IMXRT_TMR2); quadtimer_init(&IMXRT_TMR3); } - 2ab7e: bd70 pop {r4, r5, r6, pc} - 2ab80: 400fc000 .word 0x400fc000 - 2ab84: fc030000 .word 0xfc030000 - 2ab88: 403dc000 .word 0x403dc000 - 2ab8c: 401e0000 .word 0x401e0000 - 2ab90: 401e4000 .word 0x401e4000 + 2ac66: bd70 pop {r4, r5, r6, pc} + 2ac68: 400fc000 .word 0x400fc000 + 2ac6c: fc030000 .word 0xfc030000 + 2ac70: 403dc000 .word 0x403dc000 + 2ac74: 401e0000 .word 0x401e0000 + 2ac78: 401e4000 .word 0x401e4000 -0002ab94 : +0002ac7c : #include #include "HardwareSerial.h" void serialEvent1() __attribute__((weak)); void serialEvent1() {} // No use calling this so disable if called... - 2ab94: 4770 bx lr - 2ab96: bf00 nop + 2ac7c: 4770 bx lr + 2ac7e: bf00 nop -0002ab98 : +0002ac80 : #include #include "HardwareSerial.h" void serialEvent3() __attribute__((weak)); void serialEvent3() {} // No use calling this so disable if called... - 2ab98: 4770 bx lr - 2ab9a: bf00 nop + 2ac80: 4770 bx lr + 2ac82: bf00 nop -0002ab9c : +0002ac84 : __disable_irq(); - 2ab9c: b672 cpsid i + 2ac84: b672 cpsid i asm volatile("mrs %0, ipsr\n" : "=r" (ipsr) :: "memory"); - 2ab9e: f3ef 8305 mrs r3, IPSR + 2ac86: f3ef 8305 mrs r3, IPSR info->ipsr = ipsr; - 2aba2: 4c4f ldr r4, [pc, #316] ; (2ace0 ) - 2aba4: f8c4 3084 str.w r3, [r4, #132] ; 0x84 + 2ac8a: 4c4f ldr r4, [pc, #316] ; (2adc8 ) + 2ac8c: f8c4 3084 str.w r3, [r4, #132] ; 0x84 asm volatile("mrs %0, msp\n" : "=r" (stack) :: "memory"); - 2aba8: f3ef 8208 mrs r2, MSP + 2ac90: f3ef 8208 mrs r2, MSP info->cfsr = SCB_CFSR; - 2abac: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 2ac94: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 p = (uint32_t *)info; - 2abb0: 4e4c ldr r6, [pc, #304] ; (2ace4 ) + 2ac98: 4e4c ldr r6, [pc, #304] ; (2adcc ) while (p < end) { - 2abb2: 4d4d ldr r5, [pc, #308] ; (2ace8 ) + 2ac9a: 4d4d ldr r5, [pc, #308] ; (2add0 ) info->cfsr = SCB_CFSR; - 2abb4: f8d3 0d28 ldr.w r0, [r3, #3368] ; 0xd28 + 2ac9c: f8d3 0d28 ldr.w r0, [r3, #3368] ; 0xd28 info->hfsr = SCB_HFSR; - 2abb8: f8d3 1d2c ldr.w r1, [r3, #3372] ; 0xd2c - 2abbc: e9c4 0122 strd r0, r1, [r4, #136] ; 0x88 + 2aca0: f8d3 1d2c ldr.w r1, [r3, #3372] ; 0xd2c + 2aca4: e9c4 0122 strd r0, r1, [r4, #136] ; 0x88 info->mmfar = SCB_MMFAR; - 2abc0: f8d3 1d34 ldr.w r1, [r3, #3380] ; 0xd34 + 2aca8: f8d3 1d34 ldr.w r1, [r3, #3380] ; 0xd34 info->bfar = SCB_BFAR; - 2abc4: f8d3 3d38 ldr.w r3, [r3, #3384] ; 0xd38 - 2abc8: e9c4 1324 strd r1, r3, [r4, #144] ; 0x90 + 2acac: f8d3 3d38 ldr.w r3, [r3, #3384] ; 0xd38 + 2acb0: e9c4 1324 strd r1, r3, [r4, #144] ; 0x90 info->ret = stack[6]; - 2abcc: 6993 ldr r3, [r2, #24] - 2abce: f8c4 3098 str.w r3, [r4, #152] ; 0x98 + 2acb4: 6993 ldr r3, [r2, #24] + 2acb6: f8c4 3098 str.w r3, [r4, #152] ; 0x98 info->xpsr = stack[7]; - 2abd2: 69d3 ldr r3, [r2, #28] - 2abd4: f8c4 309c str.w r3, [r4, #156] ; 0x9c + 2acba: 69d3 ldr r3, [r2, #28] + 2acbc: f8c4 309c str.w r3, [r4, #156] ; 0x9c info->temp = tempmonGetTemp(); - 2abd8: f000 f8d2 bl 2ad80 - 2abdc: ed84 0a28 vstr s0, [r4, #160] ; 0xa0 + 2acc0: f000 f8d2 bl 2ae68 + 2acc4: ed84 0a28 vstr s0, [r4, #160] ; 0xa0 info->time = rtc_get(); - 2abe0: f001 fd64 bl 2c6ac + 2acc8: f001 fd64 bl 2c794 info->len = sizeof(*info) / 4; - 2abe4: 210b movs r1, #11 + 2accc: 210b movs r1, #11 crc = 0xFFFFFFFF; - 2abe6: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 2acce: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff info->time = rtc_get(); - 2abea: f8c4 00a4 str.w r0, [r4, #164] ; 0xa4 + 2acd2: f8c4 00a4 str.w r0, [r4, #164] ; 0xa4 info->len = sizeof(*info) / 4; - 2abee: 460b mov r3, r1 - 2abf0: f8c4 1080 str.w r1, [r4, #128] ; 0x80 + 2acd6: 460b mov r3, r1 + 2acd8: f8c4 1080 str.w r1, [r4, #128] ; 0x80 for (i=0; i < 32; i++) crc = (crc >> 1) ^ (crc & 1)*0xEDB88320; - 2abf4: 493d ldr r1, [pc, #244] ; (2acec ) + 2acdc: 493d ldr r1, [pc, #244] ; (2add4 ) crc ^= *p++; - 2abf6: 1d30 adds r0, r6, #4 - 2abf8: 405a eors r2, r3 - 2abfa: 2420 movs r4, #32 + 2acde: 1d30 adds r0, r6, #4 + 2ace0: 405a eors r2, r3 + 2ace2: 2420 movs r4, #32 for (i=0; i < 32; i++) crc = (crc >> 1) ^ (crc & 1)*0xEDB88320; - 2abfc: f002 0301 and.w r3, r2, #1 - 2ac00: 3c01 subs r4, #1 - 2ac02: fb01 f303 mul.w r3, r1, r3 - 2ac06: ea83 0252 eor.w r2, r3, r2, lsr #1 - 2ac0a: d1f7 bne.n 2abfc + 2ace4: f002 0301 and.w r3, r2, #1 + 2ace8: 3c01 subs r4, #1 + 2acea: fb01 f303 mul.w r3, r1, r3 + 2acee: ea83 0252 eor.w r2, r3, r2, lsr #1 + 2acf2: d1f7 bne.n 2ace4 while (p < end) { - 2ac0c: 42a8 cmp r0, r5 - 2ac0e: d002 beq.n 2ac16 + 2acf4: 42a8 cmp r0, r5 + 2acf6: d002 beq.n 2acfe crc ^= *p++; - 2ac10: 6873 ldr r3, [r6, #4] - 2ac12: 4606 mov r6, r0 - 2ac14: e7ef b.n 2abf6 + 2acf8: 6873 ldr r3, [r6, #4] + 2acfa: 4606 mov r6, r0 + 2acfc: e7ef b.n 2acde info->crc = crc; - 2ac16: 4b32 ldr r3, [pc, #200] ; (2ace0 ) - 2ac18: f8c3 20a8 str.w r2, [r3, #168] ; 0xa8 + 2acfe: 4b32 ldr r3, [pc, #200] ; (2adc8 ) + 2ad00: f8c3 20a8 str.w r2, [r3, #168] ; 0xa8 static inline void arm_dcache_flush_delete(void *addr, uint32_t size) { uint32_t location = (uint32_t)addr & 0xFFFFFFE0; uint32_t end_addr = (uint32_t)addr + size; asm volatile("": : :"memory"); asm("dsb"); - 2ac1c: f3bf 8f4f dsb sy + 2ad04: f3bf 8f4f dsb sy do { SCB_CACHE_DCCIMVAC = location; - 2ac20: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 - 2ac24: 492f ldr r1, [pc, #188] ; (2ace4 ) - 2ac26: 4a32 ldr r2, [pc, #200] ; (2acf0 ) - 2ac28: f8c3 1f70 str.w r1, [r3, #3952] ; 0xf70 - 2ac2c: f8c3 2f70 str.w r2, [r3, #3952] ; 0xf70 + 2ad08: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 2ad0c: 492f ldr r1, [pc, #188] ; (2adcc ) + 2ad0e: 4a32 ldr r2, [pc, #200] ; (2add8 ) + 2ad10: f8c3 1f70 str.w r1, [r3, #3952] ; 0xf70 + 2ad14: f8c3 2f70 str.w r2, [r3, #3952] ; 0xf70 location += 32; } while (location < end_addr); asm("dsb"); - 2ac30: f3bf 8f4f dsb sy + 2ad18: f3bf 8f4f dsb sy asm("isb"); - 2ac34: f3bf 8f6f isb sy + 2ad1c: f3bf 8f6f isb sy CCM_CCGR1 |= CCM_CCGR1_PIT(CCM_CCGR_ON); - 2ac38: 4a2e ldr r2, [pc, #184] ; (2acf4 ) + 2ad20: 4a2e ldr r2, [pc, #184] ; (2addc ) PIT_MCR = PIT_MCR_MDIS; - 2ac3a: 2502 movs r5, #2 - 2ac3c: 482e ldr r0, [pc, #184] ; (2acf8 ) + 2ad22: 2502 movs r5, #2 + 2ad24: 482e ldr r0, [pc, #184] ; (2ade0 ) CCM_CCGR1 |= CCM_CCGR1_PIT(CCM_CCGR_ON); - 2ac3e: 6ed3 ldr r3, [r2, #108] ; 0x6c + 2ad26: 6ed3 ldr r3, [r2, #108] ; 0x6c if (F_CPU_ACTUAL > 198000000) set_arm_clock(198000000); - 2ac40: 492e ldr r1, [pc, #184] ; (2acfc ) + 2ad28: 492e ldr r1, [pc, #184] ; (2ade4 ) CCM_CCGR1 |= CCM_CCGR1_PIT(CCM_CCGR_ON); - 2ac42: f443 5340 orr.w r3, r3, #12288 ; 0x3000 - 2ac46: 66d3 str r3, [r2, #108] ; 0x6c + 2ad2a: f443 5340 orr.w r3, r3, #12288 ; 0x3000 + 2ad2e: 66d3 str r3, [r2, #108] ; 0x6c PIT_MCR = PIT_MCR_MDIS; - 2ac48: 6005 str r5, [r0, #0] + 2ad30: 6005 str r5, [r0, #0] CCM_CSCMR1 = (CCM_CSCMR1 & ~CCM_CSCMR1_PERCLK_PODF(0x3F)) | CCM_CSCMR1_PERCLK_CLK_SEL; - 2ac4a: 69d3 ldr r3, [r2, #28] + 2ad32: 69d3 ldr r3, [r2, #28] if (F_CPU_ACTUAL > 198000000) set_arm_clock(198000000); - 2ac4c: 482c ldr r0, [pc, #176] ; (2ad00 ) + 2ad34: 482c ldr r0, [pc, #176] ; (2ade8 ) CCM_CSCMR1 = (CCM_CSCMR1 & ~CCM_CSCMR1_PERCLK_PODF(0x3F)) | CCM_CSCMR1_PERCLK_CLK_SEL; - 2ac4e: f023 037f bic.w r3, r3, #127 ; 0x7f - 2ac52: f043 0340 orr.w r3, r3, #64 ; 0x40 - 2ac56: 61d3 str r3, [r2, #28] + 2ad36: f023 037f bic.w r3, r3, #127 ; 0x7f + 2ad3a: f043 0340 orr.w r3, r3, #64 ; 0x40 + 2ad3e: 61d3 str r3, [r2, #28] if (F_CPU_ACTUAL > 198000000) set_arm_clock(198000000); - 2ac58: 680b ldr r3, [r1, #0] - 2ac5a: 4283 cmp r3, r0 - 2ac5c: d83d bhi.n 2acda + 2ad40: 680b ldr r3, [r1, #0] + 2ad42: 4283 cmp r3, r0 + 2ad44: d83d bhi.n 2adc2 PIT_MCR = 0; - 2ac5e: 4d26 ldr r5, [pc, #152] ; (2acf8 ) - 2ac60: 2100 movs r1, #0 + 2ad46: 4d26 ldr r5, [pc, #152] ; (2ade0 ) + 2ad48: 2100 movs r1, #0 NVIC_ICER0 = 0xFFFFFFFF; - 2ac62: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 - 2ac66: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 2ad4a: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 2ad4e: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff PIT_MCR = 0; - 2ac6a: 6029 str r1, [r5, #0] + 2ad52: 6029 str r1, [r5, #0] PIT_TCTRL0 = PIT_TCTRL_TEN; - 2ac6c: 2601 movs r6, #1 + 2ad54: 2601 movs r6, #1 PIT_TCTRL0 = 0; - 2ac6e: f8c5 1108 str.w r1, [r5, #264] ; 0x108 + 2ad56: f8c5 1108 str.w r1, [r5, #264] ; 0x108 PIT_LDVAL0 = 2400000; // 2400000 = 100ms - 2ac72: 4924 ldr r1, [pc, #144] ; (2ad04 ) - 2ac74: f8c5 1100 str.w r1, [r5, #256] ; 0x100 + 2ad5a: 4924 ldr r1, [pc, #144] ; (2adec ) + 2ad5c: f8c5 1100 str.w r1, [r5, #256] ; 0x100 PIT_TCTRL0 = PIT_TCTRL_TEN; - 2ac78: f8c5 6108 str.w r6, [r5, #264] ; 0x108 + 2ad60: f8c5 6108 str.w r6, [r5, #264] ; 0x108 NVIC_ICER0 = 0xFFFFFFFF; - 2ac7c: f8c3 2180 str.w r2, [r3, #384] ; 0x180 + 2ad64: f8c3 2180 str.w r2, [r3, #384] ; 0x180 NVIC_ICER1 = 0xFFFFFFFF; - 2ac80: f8c3 2184 str.w r2, [r3, #388] ; 0x184 + 2ad68: f8c3 2184 str.w r2, [r3, #388] ; 0x184 NVIC_ICER2 = 0xFFFFFFFF; - 2ac84: f8c3 2188 str.w r2, [r3, #392] ; 0x188 + 2ad6c: f8c3 2188 str.w r2, [r3, #392] ; 0x188 NVIC_ICER3 = 0xFFFFFFFF; - 2ac88: f8c3 218c str.w r2, [r3, #396] ; 0x18c + 2ad70: f8c3 218c str.w r2, [r3, #396] ; 0x18c NVIC_ICER4 = 0xFFFFFFFF; - 2ac8c: f8c3 2190 str.w r2, [r3, #400] ; 0x190 + 2ad74: f8c3 2190 str.w r2, [r3, #400] ; 0x190 count = 0; - 2ac90: e001 b.n 2ac96 + 2ad78: e001 b.n 2ad7e usb_isr(); - 2ac92: f000 f983 bl 2af9c + 2ad7a: f000 f983 bl 2b084 if (PIT_TFLG0) { - 2ac96: f8d5 310c ldr.w r3, [r5, #268] ; 0x10c - 2ac9a: 2b00 cmp r3, #0 - 2ac9c: d0f9 beq.n 2ac92 + 2ad7e: f8d5 310c ldr.w r3, [r5, #268] ; 0x10c + 2ad82: 2b00 cmp r3, #0 + 2ad84: d0f9 beq.n 2ad7a if (++count >= 80) break; // reboot after 8 seconds - 2ac9e: 3401 adds r4, #1 + 2ad86: 3401 adds r4, #1 PIT_TFLG0 = 1; - 2aca0: f8c5 610c str.w r6, [r5, #268] ; 0x10c + 2ad88: f8c5 610c str.w r6, [r5, #268] ; 0x10c if (++count >= 80) break; // reboot after 8 seconds - 2aca4: 2c4f cmp r4, #79 ; 0x4f - 2aca6: d9f4 bls.n 2ac92 + 2ad8c: 2c4f cmp r4, #79 ; 0x4f + 2ad8e: d9f4 bls.n 2ad7a USBPHY1_CTRL_SET = USBPHY_CTRL_SFTRST; - 2aca8: 4b17 ldr r3, [pc, #92] ; (2ad08 ) + 2ad90: 4b17 ldr r3, [pc, #92] ; (2adf0 ) USB1_USBCMD = USB_USBCMD_RST; - 2acaa: 2002 movs r0, #2 - 2acac: 4917 ldr r1, [pc, #92] ; (2ad0c ) + 2ad92: 2002 movs r0, #2 + 2ad94: 4917 ldr r1, [pc, #92] ; (2adf4 ) USBPHY1_CTRL_SET = USBPHY_CTRL_SFTRST; - 2acae: f04f 4200 mov.w r2, #2147483648 ; 0x80000000 + 2ad96: f04f 4200 mov.w r2, #2147483648 ; 0x80000000 USB1_USBCMD = USB_USBCMD_RST; - 2acb2: f8c1 0140 str.w r0, [r1, #320] ; 0x140 + 2ad9a: f8c1 0140 str.w r0, [r1, #320] ; 0x140 USBPHY1_CTRL_SET = USBPHY_CTRL_SFTRST; - 2acb6: 635a str r2, [r3, #52] ; 0x34 + 2ad9e: 635a str r2, [r3, #52] ; 0x34 while (PIT_TFLG0 == 0) /* wait 0.1 second for PC to know USB unplugged */ - 2acb8: f8d5 310c ldr.w r3, [r5, #268] ; 0x10c - 2acbc: b93b cbnz r3, 2acce + 2ada0: f8d5 310c ldr.w r3, [r5, #268] ; 0x10c + 2ada4: b93b cbnz r3, 2adb6 SRC_GPR5 = 0x0BAD00F1; - 2acbe: 4814 ldr r0, [pc, #80] ; (2ad10 ) - 2acc0: 4914 ldr r1, [pc, #80] ; (2ad14 ) + 2ada6: 4814 ldr r0, [pc, #80] ; (2adf8 ) + 2ada8: 4914 ldr r1, [pc, #80] ; (2adfc ) while (PIT_TFLG0 == 0) /* wait 0.1 second for PC to know USB unplugged */ - 2acc2: 4a0d ldr r2, [pc, #52] ; (2acf8 ) + 2adaa: 4a0d ldr r2, [pc, #52] ; (2ade0 ) SRC_GPR5 = 0x0BAD00F1; - 2acc4: 6301 str r1, [r0, #48] ; 0x30 + 2adac: 6301 str r1, [r0, #48] ; 0x30 while (PIT_TFLG0 == 0) /* wait 0.1 second for PC to know USB unplugged */ - 2acc6: f8d2 310c ldr.w r3, [r2, #268] ; 0x10c - 2acca: 2b00 cmp r3, #0 - 2accc: d0fa beq.n 2acc4 + 2adae: f8d2 310c ldr.w r3, [r2, #268] ; 0x10c + 2adb2: 2b00 cmp r3, #0 + 2adb4: d0fa beq.n 2adac SCB_AIRCR = 0x05FA0004; - 2acce: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 - 2acd2: 4a11 ldr r2, [pc, #68] ; (2ad18 ) - 2acd4: f8c3 2d0c str.w r2, [r3, #3340] ; 0xd0c + 2adb6: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 2adba: 4a11 ldr r2, [pc, #68] ; (2ae00 ) + 2adbc: f8c3 2d0c str.w r2, [r3, #3340] ; 0xd0c while (1) ; - 2acd8: e7fe b.n 2acd8 + 2adc0: e7fe b.n 2adc0 if (F_CPU_ACTUAL > 198000000) set_arm_clock(198000000); - 2acda: f7ff fa7f bl 2a1dc - 2acde: e7be b.n 2ac5e - 2ace0: 2027ff00 .word 0x2027ff00 - 2ace4: 2027ff80 .word 0x2027ff80 - 2ace8: 2027ffa8 .word 0x2027ffa8 - 2acec: edb88320 .word 0xedb88320 - 2acf0: 2027ffa0 .word 0x2027ffa0 - 2acf4: 400fc000 .word 0x400fc000 - 2acf8: 40084000 .word 0x40084000 - 2acfc: 20004ba4 .word 0x20004ba4 - 2ad00: 0bcd3d80 .word 0x0bcd3d80 - 2ad04: 00249f00 .word 0x00249f00 - 2ad08: 400d9000 .word 0x400d9000 - 2ad0c: 402e0000 .word 0x402e0000 - 2ad10: 400f8000 .word 0x400f8000 - 2ad14: 0bad00f1 .word 0x0bad00f1 - 2ad18: 05fa0004 .word 0x05fa0004 - -0002ad1c <_sbrk>: + 2adc2: f7ff fa7f bl 2a2c4 + 2adc6: e7be b.n 2ad46 + 2adc8: 2027ff00 .word 0x2027ff00 + 2adcc: 2027ff80 .word 0x2027ff80 + 2add0: 2027ffa8 .word 0x2027ffa8 + 2add4: edb88320 .word 0xedb88320 + 2add8: 2027ffa0 .word 0x2027ffa0 + 2addc: 400fc000 .word 0x400fc000 + 2ade0: 40084000 .word 0x40084000 + 2ade4: 20004c64 .word 0x20004c64 + 2ade8: 0bcd3d80 .word 0x0bcd3d80 + 2adec: 00249f00 .word 0x00249f00 + 2adf0: 400d9000 .word 0x400d9000 + 2adf4: 402e0000 .word 0x402e0000 + 2adf8: 400f8000 .word 0x400f8000 + 2adfc: 0bad00f1 .word 0x0bad00f1 + 2ae00: 05fa0004 .word 0x05fa0004 + +0002ae04 <_sbrk>: char *__brkval = (char *)&_heap_start; __attribute__((weak)) void * _sbrk(int incr) { char *prev = __brkval; - 2ad1c: 490a ldr r1, [pc, #40] ; (2ad48 <_sbrk+0x2c>) - 2ad1e: 680a ldr r2, [r1, #0] + 2ae04: 490a ldr r1, [pc, #40] ; (2ae30 <_sbrk+0x2c>) + 2ae06: 680a ldr r2, [r1, #0] if (incr != 0) { - 2ad20: b138 cbz r0, 2ad32 <_sbrk+0x16> + 2ae08: b138 cbz r0, 2ae1a <_sbrk+0x16> { - 2ad22: b508 push {r3, lr} + 2ae0a: b508 push {r3, lr} if (prev + incr > (char *)&_heap_end) { - 2ad24: 1813 adds r3, r2, r0 - 2ad26: 4809 ldr r0, [pc, #36] ; (2ad4c <_sbrk+0x30>) - 2ad28: 4283 cmp r3, r0 - 2ad2a: d804 bhi.n 2ad36 <_sbrk+0x1a> + 2ae0c: 1813 adds r3, r2, r0 + 2ae0e: 4809 ldr r0, [pc, #36] ; (2ae34 <_sbrk+0x30>) + 2ae10: 4283 cmp r3, r0 + 2ae12: d804 bhi.n 2ae1e <_sbrk+0x1a> return (void *)-1; } __brkval = prev + incr; } return prev; } - 2ad2c: 4610 mov r0, r2 + 2ae14: 4610 mov r0, r2 __brkval = prev + incr; - 2ad2e: 600b str r3, [r1, #0] + 2ae16: 600b str r3, [r1, #0] } - 2ad30: bd08 pop {r3, pc} - 2ad32: 4610 mov r0, r2 - 2ad34: 4770 bx lr + 2ae18: bd08 pop {r3, pc} + 2ae1a: 4610 mov r0, r2 + 2ae1c: 4770 bx lr errno = ENOMEM; - 2ad36: f003 fca5 bl 2e684 <__errno> - 2ad3a: 230c movs r3, #12 + 2ae1e: f003 fca5 bl 2e76c <__errno> + 2ae22: 230c movs r3, #12 return (void *)-1; - 2ad3c: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 2ae24: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff errno = ENOMEM; - 2ad40: 6003 str r3, [r0, #0] + 2ae28: 6003 str r3, [r0, #0] } - 2ad42: 4610 mov r0, r2 - 2ad44: bd08 pop {r3, pc} - 2ad46: bf00 nop - 2ad48: 20004c20 .word 0x20004c20 - 2ad4c: 20280000 .word 0x20280000 + 2ae2a: 4610 mov r0, r2 + 2ae2c: bd08 pop {r3, pc} + 2ae2e: bf00 nop + 2ae30: 20004ce0 .word 0x20004ce0 + 2ae34: 20280000 .word 0x20280000 -0002ad50 <_read>: +0002ae38 <_read>: __attribute__((weak)) int _read(int file __attribute__((unused)), char *ptr __attribute__((unused)), int len __attribute__((unused))) { return 0; } - 2ad50: 2000 movs r0, #0 - 2ad52: 4770 bx lr + 2ae38: 2000 movs r0, #0 + 2ae3a: 4770 bx lr -0002ad54 <_close>: +0002ae3c <_close>: __attribute__((weak)) int _close(int fd __attribute__((unused))) { return -1; } - 2ad54: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 2ad58: 4770 bx lr - 2ad5a: bf00 nop + 2ae3c: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 2ae40: 4770 bx lr + 2ae42: bf00 nop -0002ad5c <_fstat>: +0002ae44 <_fstat>: #include __attribute__((weak)) int _fstat(int fd __attribute__((unused)), struct stat *st) { st->st_mode = S_IFCHR; - 2ad5c: f44f 5300 mov.w r3, #8192 ; 0x2000 + 2ae44: f44f 5300 mov.w r3, #8192 ; 0x2000 return 0; } - 2ad60: 2000 movs r0, #0 + 2ae48: 2000 movs r0, #0 st->st_mode = S_IFCHR; - 2ad62: 604b str r3, [r1, #4] + 2ae4a: 604b str r3, [r1, #4] } - 2ad64: 4770 bx lr - 2ad66: bf00 nop + 2ae4c: 4770 bx lr + 2ae4e: bf00 nop -0002ad68 <_isatty>: +0002ae50 <_isatty>: __attribute__((weak)) int _isatty(int fd __attribute__((unused))) { return 1; } - 2ad68: 2001 movs r0, #1 - 2ad6a: 4770 bx lr + 2ae50: 2001 movs r0, #1 + 2ae52: 4770 bx lr -0002ad6c <_lseek>: +0002ae54 <_lseek>: __attribute__((weak)) int _lseek(int fd __attribute__((unused)), long long offset __attribute__((unused)), int whence __attribute__((unused))) { return -1; } - 2ad6c: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 2ad70: 4770 bx lr - 2ad72: bf00 nop + 2ae54: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 2ae58: 4770 bx lr + 2ae5a: bf00 nop -0002ad74 <__cxa_pure_virtual>: +0002ae5c <__cxa_pure_virtual>: } __attribute__((weak)) void __cxa_pure_virtual() { while (1) asm ("WFI"); - 2ad74: bf30 wfi - 2ad76: e7fd b.n 2ad74 <__cxa_pure_virtual> + 2ae5c: bf30 wfi + 2ae5e: e7fd b.n 2ae5c <__cxa_pure_virtual> -0002ad78 : +0002ae60 : } __attribute__((weak)) void abort(void) { while (1) asm ("WFI"); - 2ad78: bf30 wfi - 2ad7a: e7fd b.n 2ad78 + 2ae60: bf30 wfi + 2ae62: e7fd b.n 2ae60 -0002ad7c : +0002ae64 : unused_interrupt_vector(); - 2ad7c: f7ff bf0e b.w 2ab9c + 2ae64: f7ff bf0e b.w 2ac84 -0002ad80 : +0002ae68 : float tempmonGetTemp(void) { uint32_t nmeas; float tmeas; while (!(TEMPMON_TEMPSENSE0 & 0x4U)) - 2ad80: 4a12 ldr r2, [pc, #72] ; (2adcc ) - 2ad82: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 - 2ad86: 075b lsls r3, r3, #29 - 2ad88: d5fb bpl.n 2ad82 + 2ae68: 4a12 ldr r2, [pc, #72] ; (2aeb4 ) + 2ae6a: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 + 2ae6e: 075b lsls r3, r3, #29 + 2ae70: d5fb bpl.n 2ae6a { } /* ready to read temperature code value */ nmeas = (TEMPMON_TEMPSENSE0 & 0xFFF00U) >> 8U; - 2ad8a: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 + 2ae72: f8d2 3080 ldr.w r3, [r2, #128] ; 0x80 /* Calculate temperature */ tmeas = s_hotTemp - (((float)nmeas - (float)s_hotCount) * s_hot_ROOM / s_roomC_hotC); - 2ad8e: 4810 ldr r0, [pc, #64] ; (2add0 ) + 2ae76: 4810 ldr r0, [pc, #64] ; (2aeb8 ) nmeas = (TEMPMON_TEMPSENSE0 & 0xFFF00U) >> 8U; - 2ad90: f3c3 230b ubfx r3, r3, #8, #12 + 2ae78: f3c3 230b ubfx r3, r3, #8, #12 tmeas = s_hotTemp - (((float)nmeas - (float)s_hotCount) * s_hot_ROOM / s_roomC_hotC); - 2ad94: 490f ldr r1, [pc, #60] ; (2add4 ) - 2ad96: ed90 7a00 vldr s14, [r0] + 2ae7c: 490f ldr r1, [pc, #60] ; (2aebc ) + 2ae7e: ed90 7a00 vldr s14, [r0] nmeas = (TEMPMON_TEMPSENSE0 & 0xFFF00U) >> 8U; - 2ad9a: ee07 3a90 vmov s15, r3 + 2ae82: ee07 3a90 vmov s15, r3 tmeas = s_hotTemp - (((float)nmeas - (float)s_hotCount) * s_hot_ROOM / s_roomC_hotC); - 2ad9e: ed91 6a00 vldr s12, [r1] - 2ada2: eeb8 7a47 vcvt.f32.u32 s14, s14 - 2ada6: 4a0c ldr r2, [pc, #48] ; (2add8 ) - 2ada8: eef8 7ae7 vcvt.f32.s32 s15, s15 - 2adac: 4b0b ldr r3, [pc, #44] ; (2addc ) - 2adae: edd2 6a00 vldr s13, [r2] - 2adb2: ee77 7ac7 vsub.f32 s15, s15, s14 - 2adb6: ed93 7a00 vldr s14, [r3] - 2adba: eeb8 7a47 vcvt.f32.u32 s14, s14 - 2adbe: ee67 7a86 vmul.f32 s15, s15, s12 - 2adc2: ee87 0aa6 vdiv.f32 s0, s15, s13 + 2ae86: ed91 6a00 vldr s12, [r1] + 2ae8a: eeb8 7a47 vcvt.f32.u32 s14, s14 + 2ae8e: 4a0c ldr r2, [pc, #48] ; (2aec0 ) + 2ae90: eef8 7ae7 vcvt.f32.s32 s15, s15 + 2ae94: 4b0b ldr r3, [pc, #44] ; (2aec4 ) + 2ae96: edd2 6a00 vldr s13, [r2] + 2ae9a: ee77 7ac7 vsub.f32 s15, s15, s14 + 2ae9e: ed93 7a00 vldr s14, [r3] + 2aea2: eeb8 7a47 vcvt.f32.u32 s14, s14 + 2aea6: ee67 7a86 vmul.f32 s15, s15, s12 + 2aeaa: ee87 0aa6 vdiv.f32 s0, s15, s13 return tmeas; } - 2adc6: ee37 0a40 vsub.f32 s0, s14, s0 - 2adca: 4770 bx lr - 2adcc: 400d8100 .word 0x400d8100 - 2add0: 2000bab0 .word 0x2000bab0 - 2add4: 2000bab8 .word 0x2000bab8 - 2add8: 2000babc .word 0x2000babc - 2addc: 2000bab4 .word 0x2000bab4 + 2aeae: ee37 0a40 vsub.f32 s0, s14, s0 + 2aeb2: 4770 bx lr + 2aeb4: 400d8100 .word 0x400d8100 + 2aeb8: 2000bad0 .word 0x2000bad0 + 2aebc: 2000bad8 .word 0x2000bad8 + 2aec0: 2000badc .word 0x2000badc + 2aec4: 2000bad4 .word 0x2000bad4 -0002ade0 : +0002aec8 : { // when we stop at 6, why is the last transfer missing from the USB output? //if (transfer_log_count >= 6) return; //uint32_t ret = (*(const uint8_t *)transfer->pointer0) << 8; if (endpoint->callback_function) { - 2ade0: 6b83 ldr r3, [r0, #56] ; 0x38 + 2aec8: 6b83 ldr r3, [r0, #56] ; 0x38 { - 2ade2: b4f0 push {r4, r5, r6, r7} + 2aeca: b4f0 push {r4, r5, r6, r7} if (endpoint->callback_function) { - 2ade4: b11b cbz r3, 2adee + 2aecc: b11b cbz r3, 2aed6 transfer->status |= (1<<15); - 2ade6: 6853 ldr r3, [r2, #4] - 2ade8: f443 4300 orr.w r3, r3, #32768 ; 0x8000 - 2adec: 6053 str r3, [r2, #4] + 2aece: 6853 ldr r3, [r2, #4] + 2aed0: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 2aed4: 6053 str r3, [r2, #4] } __disable_irq(); - 2adee: b672 cpsid i + 2aed6: b672 cpsid i //digitalWriteFast(1, HIGH); // Executing A Transfer Descriptor, page 2468 (RT1060 manual, Rev 1, 12/2018) transfer_t *last = endpoint->last_transfer; - 2adf0: 6b44 ldr r4, [r0, #52] ; 0x34 + 2aed8: 6b44 ldr r4, [r0, #52] ; 0x34 if (last) { - 2adf2: b33c cbz r4, 2ae44 + 2aeda: b33c cbz r4, 2af2c last->next = (uint32_t)transfer; if (USB1_ENDPTPRIME & epmask) goto end; - 2adf4: 4b1a ldr r3, [pc, #104] ; (2ae60 ) + 2aedc: 4b1a ldr r3, [pc, #104] ; (2af48 ) last->next = (uint32_t)transfer; - 2adf6: 6022 str r2, [r4, #0] + 2aede: 6022 str r2, [r4, #0] if (USB1_ENDPTPRIME & epmask) goto end; - 2adf8: f8d3 41b0 ldr.w r4, [r3, #432] ; 0x1b0 - 2adfc: 420c tst r4, r1 - 2adfe: d11d bne.n 2ae3c + 2aee0: f8d3 41b0 ldr.w r4, [r3, #432] ; 0x1b0 + 2aee4: 420c tst r4, r1 + 2aee6: d11d bne.n 2af24 //digitalWriteFast(2, HIGH); //ret |= 0x01; uint32_t status, cyccnt=ARM_DWT_CYCCNT; - 2ae00: 4e18 ldr r6, [pc, #96] ; (2ae64 ) - 2ae02: 6877 ldr r7, [r6, #4] - 2ae04: e004 b.n 2ae10 + 2aee8: 4e18 ldr r6, [pc, #96] ; (2af4c ) + 2aeea: 6877 ldr r7, [r6, #4] + 2aeec: e004 b.n 2aef8 do { USB1_USBCMD |= USB_USBCMD_ATDTW; status = USB1_ENDPTSTATUS; } while (!(USB1_USBCMD & USB_USBCMD_ATDTW) && (ARM_DWT_CYCCNT - cyccnt < 2400)); - 2ae06: 6874 ldr r4, [r6, #4] - 2ae08: 1be4 subs r4, r4, r7 - 2ae0a: f5b4 6f16 cmp.w r4, #2400 ; 0x960 - 2ae0e: d20b bcs.n 2ae28 + 2aeee: 6874 ldr r4, [r6, #4] + 2aef0: 1be4 subs r4, r4, r7 + 2aef2: f5b4 6f16 cmp.w r4, #2400 ; 0x960 + 2aef6: d20b bcs.n 2af10 USB1_USBCMD |= USB_USBCMD_ATDTW; - 2ae10: f8d3 4140 ldr.w r4, [r3, #320] ; 0x140 - 2ae14: f444 4480 orr.w r4, r4, #16384 ; 0x4000 - 2ae18: f8c3 4140 str.w r4, [r3, #320] ; 0x140 + 2aef8: f8d3 4140 ldr.w r4, [r3, #320] ; 0x140 + 2aefc: f444 4480 orr.w r4, r4, #16384 ; 0x4000 + 2af00: f8c3 4140 str.w r4, [r3, #320] ; 0x140 status = USB1_ENDPTSTATUS; - 2ae1c: f8d3 51b8 ldr.w r5, [r3, #440] ; 0x1b8 + 2af04: f8d3 51b8 ldr.w r5, [r3, #440] ; 0x1b8 } while (!(USB1_USBCMD & USB_USBCMD_ATDTW) && (ARM_DWT_CYCCNT - cyccnt < 2400)); - 2ae20: f8d3 4140 ldr.w r4, [r3, #320] ; 0x140 - 2ae24: 0464 lsls r4, r4, #17 - 2ae26: d5ee bpl.n 2ae06 + 2af08: f8d3 4140 ldr.w r4, [r3, #320] ; 0x140 + 2af0c: 0464 lsls r4, r4, #17 + 2af0e: d5ee bpl.n 2aeee //USB1_USBCMD &= ~USB_USBCMD_ATDTW; if (status & epmask) goto end; - 2ae28: 400d ands r5, r1 - 2ae2a: d107 bne.n 2ae3c + 2af10: 400d ands r5, r1 + 2af12: d107 bne.n 2af24 //ret |= 0x02; endpoint->next = (uint32_t)transfer; endpoint->status = 0; USB1_ENDPTPRIME |= epmask; - 2ae2c: 4c0c ldr r4, [pc, #48] ; (2ae60 ) + 2af14: 4c0c ldr r4, [pc, #48] ; (2af48 ) endpoint->status = 0; - 2ae2e: e9c0 2502 strd r2, r5, [r0, #8] + 2af16: e9c0 2502 strd r2, r5, [r0, #8] USB1_ENDPTPRIME |= epmask; - 2ae32: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2ae36: 430b orrs r3, r1 - 2ae38: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 + 2af1a: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2af1e: 430b orrs r3, r1 + 2af20: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 endpoint->next = (uint32_t)transfer; endpoint->status = 0; USB1_ENDPTPRIME |= epmask; endpoint->first_transfer = transfer; end: endpoint->last_transfer = transfer; - 2ae3c: 6342 str r2, [r0, #52] ; 0x34 + 2af24: 6342 str r2, [r0, #52] ; 0x34 __enable_irq(); - 2ae3e: b662 cpsie i + 2af26: b662 cpsie i //digitalWriteFast(2, LOW); //digitalWriteFast(1, LOW); //if (transfer_log_head > LOG_SIZE) transfer_log_head = 0; //transfer_log[transfer_log_head++] = ret; //transfer_log_count++; } - 2ae40: bcf0 pop {r4, r5, r6, r7} - 2ae42: 4770 bx lr + 2af28: bcf0 pop {r4, r5, r6, r7} + 2af2a: 4770 bx lr USB1_ENDPTPRIME |= epmask; - 2ae44: 4d06 ldr r5, [pc, #24] ; (2ae60 ) + 2af2c: 4d06 ldr r5, [pc, #24] ; (2af48 ) endpoint->status = 0; - 2ae46: e9c0 2402 strd r2, r4, [r0, #8] + 2af2e: e9c0 2402 strd r2, r4, [r0, #8] USB1_ENDPTPRIME |= epmask; - 2ae4a: f8d5 31b0 ldr.w r3, [r5, #432] ; 0x1b0 - 2ae4e: 430b orrs r3, r1 - 2ae50: f8c5 31b0 str.w r3, [r5, #432] ; 0x1b0 + 2af32: f8d5 31b0 ldr.w r3, [r5, #432] ; 0x1b0 + 2af36: 430b orrs r3, r1 + 2af38: f8c5 31b0 str.w r3, [r5, #432] ; 0x1b0 endpoint->first_transfer = transfer; - 2ae54: 6302 str r2, [r0, #48] ; 0x30 + 2af3c: 6302 str r2, [r0, #48] ; 0x30 endpoint->last_transfer = transfer; - 2ae56: 6342 str r2, [r0, #52] ; 0x34 + 2af3e: 6342 str r2, [r0, #52] ; 0x34 __enable_irq(); - 2ae58: b662 cpsie i + 2af40: b662 cpsie i } - 2ae5a: bcf0 pop {r4, r5, r6, r7} - 2ae5c: 4770 bx lr - 2ae5e: bf00 nop - 2ae60: 402e0000 .word 0x402e0000 - 2ae64: e0001000 .word 0xe0001000 + 2af42: bcf0 pop {r4, r5, r6, r7} + 2af44: 4770 bx lr + 2af46: bf00 nop + 2af48: 402e0000 .word 0x402e0000 + 2af4c: e0001000 .word 0xe0001000 -0002ae68 : +0002af50 : void (*callback_function)(transfer_t *completed_transfer); uint32_t unused1; };*/ static void run_callbacks(endpoint_t *ep) { - 2ae68: b570 push {r4, r5, r6, lr} + 2af50: b570 push {r4, r5, r6, lr} //printf("run_callbacks\n"); transfer_t *first = ep->first_transfer; - 2ae6a: 6b05 ldr r5, [r0, #48] ; 0x30 + 2af52: 6b05 ldr r5, [r0, #48] ; 0x30 if (first == NULL) return; - 2ae6c: b19d cbz r5, 2ae96 - 2ae6e: 4606 mov r6, r0 - 2ae70: 462a mov r2, r5 + 2af54: b19d cbz r5, 2af7e + 2af56: 4606 mov r6, r0 + 2af58: 462a mov r2, r5 // count how many transfers are completed, then remove them from the endpoint's list uint32_t count = 0; - 2ae72: 2400 movs r4, #0 - 2ae74: e003 b.n 2ae7e + 2af5a: 2400 movs r4, #0 + 2af5c: e003 b.n 2af66 //printf(" still active\n"); ep->first_transfer = t; break; } count++; t = (transfer_t *)t->next; - 2ae76: 6812 ldr r2, [r2, #0] + 2af5e: 6812 ldr r2, [r2, #0] count++; - 2ae78: 3401 adds r4, #1 + 2af60: 3401 adds r4, #1 if ((uint32_t)t == 1) { - 2ae7a: 2a01 cmp r2, #1 - 2ae7c: d00c beq.n 2ae98 + 2af62: 2a01 cmp r2, #1 + 2af64: d00c beq.n 2af80 if (t->status & (1<<7)) { - 2ae7e: 6853 ldr r3, [r2, #4] - 2ae80: f013 0380 ands.w r3, r3, #128 ; 0x80 - 2ae84: d0f7 beq.n 2ae76 + 2af66: 6853 ldr r3, [r2, #4] + 2af68: f013 0380 ands.w r3, r3, #128 ; 0x80 + 2af6c: d0f7 beq.n 2af5e ep->first_transfer = t; - 2ae86: 6332 str r2, [r6, #48] ; 0x30 + 2af6e: 6332 str r2, [r6, #48] ; 0x30 ep->last_transfer = NULL; break; } } // do all the callbacks while (count) { - 2ae88: b12c cbz r4, 2ae96 + 2af70: b12c cbz r4, 2af7e transfer_t *next = (transfer_t *)first->next; - 2ae8a: 4628 mov r0, r5 + 2af72: 4628 mov r0, r5 ep->callback_function(first); - 2ae8c: 6bb3 ldr r3, [r6, #56] ; 0x38 + 2af74: 6bb3 ldr r3, [r6, #56] ; 0x38 transfer_t *next = (transfer_t *)first->next; - 2ae8e: 682d ldr r5, [r5, #0] + 2af76: 682d ldr r5, [r5, #0] ep->callback_function(first); - 2ae90: 4798 blx r3 + 2af78: 4798 blx r3 while (count) { - 2ae92: 3c01 subs r4, #1 - 2ae94: d1f9 bne.n 2ae8a + 2af7a: 3c01 subs r4, #1 + 2af7c: d1f9 bne.n 2af72 first = next; count--; } } - 2ae96: bd70 pop {r4, r5, r6, pc} + 2af7e: bd70 pop {r4, r5, r6, pc} ep->last_transfer = NULL; - 2ae98: e9c6 330c strd r3, r3, [r6, #48] ; 0x30 + 2af80: e9c6 330c strd r3, r3, [r6, #48] ; 0x30 break; - 2ae9c: e7f4 b.n 2ae88 - 2ae9e: bf00 nop + 2af84: e7f4 b.n 2af70 + 2af86: bf00 nop -0002aea0 : +0002af88 : static void endpoint0_transmit(const void *data, uint32_t len, int notify) - 2aea0: b430 push {r4, r5} + 2af88: b430 push {r4, r5} if (len > 0) { - 2aea2: b9d9 cbnz r1, 2aedc - 2aea4: 4c1f ldr r4, [pc, #124] ; (2af24 ) + 2af8a: b9d9 cbnz r1, 2afc4 + 2af8c: 4c1f ldr r4, [pc, #124] ; (2b00c ) endpoint0_transfer_ack.next = 1; - 2aea6: 4b20 ldr r3, [pc, #128] ; (2af28 ) + 2af8e: 4b20 ldr r3, [pc, #128] ; (2b010 ) endpoint0_transfer_ack.pointer0 = 0; - 2aea8: 2100 movs r1, #0 + 2af90: 2100 movs r1, #0 USB1_ENDPTCOMPLETE = (1<<0) | (1<<16); - 2aeaa: 4a20 ldr r2, [pc, #128] ; (2af2c ) + 2af92: 4a20 ldr r2, [pc, #128] ; (2b014 ) endpoint0_transfer_ack.next = 1; - 2aeac: 2501 movs r5, #1 + 2af94: 2501 movs r5, #1 USB1_ENDPTCOMPLETE = (1<<0) | (1<<16); - 2aeae: f04f 1001 mov.w r0, #65537 ; 0x10001 + 2af96: f04f 1001 mov.w r0, #65537 ; 0x10001 endpoint0_transfer_ack.pointer0 = 0; - 2aeb2: 6099 str r1, [r3, #8] + 2af9a: 6099 str r1, [r3, #8] endpoint0_transfer_ack.next = 1; - 2aeb4: 601d str r5, [r3, #0] + 2af9c: 601d str r5, [r3, #0] endpoint_queue_head[0].status = 0; - 2aeb6: e9c4 3102 strd r3, r1, [r4, #8] + 2af9e: e9c4 3102 strd r3, r1, [r4, #8] endpoint0_transfer_ack.status = (1<<7) | (notify ? (1 << 15) : 0); - 2aeba: 2480 movs r4, #128 ; 0x80 - 2aebc: 605c str r4, [r3, #4] + 2afa2: 2480 movs r4, #128 ; 0x80 + 2afa4: 605c str r4, [r3, #4] USB1_ENDPTCOMPLETE = (1<<0) | (1<<16); - 2aebe: f8c2 01bc str.w r0, [r2, #444] ; 0x1bc + 2afa6: f8c2 01bc str.w r0, [r2, #444] ; 0x1bc USB1_ENDPTPRIME |= (1<<0); - 2aec2: f8d2 31b0 ldr.w r3, [r2, #432] ; 0x1b0 + 2afaa: f8d2 31b0 ldr.w r3, [r2, #432] ; 0x1b0 endpoint0_notify_mask = (notify ? (1 << 0) : 0); - 2aec6: 481a ldr r0, [pc, #104] ; (2af30 ) + 2afae: 481a ldr r0, [pc, #104] ; (2b018 ) USB1_ENDPTPRIME |= (1<<0); - 2aec8: 432b orrs r3, r5 - 2aeca: f8c2 31b0 str.w r3, [r2, #432] ; 0x1b0 + 2afb0: 432b orrs r3, r5 + 2afb2: f8c2 31b0 str.w r3, [r2, #432] ; 0x1b0 endpoint0_notify_mask = (notify ? (1 << 0) : 0); - 2aece: 6001 str r1, [r0, #0] + 2afb6: 6001 str r1, [r0, #0] while (USB1_ENDPTPRIME) ; - 2aed0: f8d2 31b0 ldr.w r3, [r2, #432] ; 0x1b0 - 2aed4: 2b00 cmp r3, #0 - 2aed6: d1fb bne.n 2aed0 + 2afb8: f8d2 31b0 ldr.w r3, [r2, #432] ; 0x1b0 + 2afbc: 2b00 cmp r3, #0 + 2afbe: d1fb bne.n 2afb8 } - 2aed8: bc30 pop {r4, r5} - 2aeda: 4770 bx lr + 2afc0: bc30 pop {r4, r5} + 2afc2: 4770 bx lr endpoint0_transfer_data.status = (len << 16) | (1<<7); - 2aedc: 0409 lsls r1, r1, #16 + 2afc4: 0409 lsls r1, r1, #16 endpoint0_transfer_data.next = 1; - 2aede: 4b15 ldr r3, [pc, #84] ; (2af34 ) + 2afc6: 4b15 ldr r3, [pc, #84] ; (2b01c ) endpoint_queue_head[1].next = (uint32_t)&endpoint0_transfer_data; - 2aee0: 4c10 ldr r4, [pc, #64] ; (2af24 ) + 2afc8: 4c10 ldr r4, [pc, #64] ; (2b00c ) endpoint0_transfer_data.next = 1; - 2aee2: 2501 movs r5, #1 + 2afca: 2501 movs r5, #1 endpoint0_transfer_data.status = (len << 16) | (1<<7); - 2aee4: f041 0180 orr.w r1, r1, #128 ; 0x80 + 2afcc: f041 0180 orr.w r1, r1, #128 ; 0x80 endpoint0_transfer_data.pointer0 = addr; // format: table 55-60, pg 3159 - 2aee8: 6098 str r0, [r3, #8] + 2afd0: 6098 str r0, [r3, #8] USB1_ENDPTPRIME |= (1<<16); - 2aeea: 4a10 ldr r2, [pc, #64] ; (2af2c ) + 2afd2: 4a10 ldr r2, [pc, #64] ; (2b014 ) endpoint0_transfer_data.status = (len << 16) | (1<<7); - 2aeec: 6059 str r1, [r3, #4] + 2afd4: 6059 str r1, [r3, #4] endpoint0_transfer_data.pointer1 = addr + 4096; - 2aeee: f500 5180 add.w r1, r0, #4096 ; 0x1000 + 2afd6: f500 5180 add.w r1, r0, #4096 ; 0x1000 endpoint0_transfer_data.next = 1; - 2aef2: 601d str r5, [r3, #0] + 2afda: 601d str r5, [r3, #0] endpoint0_transfer_data.pointer1 = addr + 4096; - 2aef4: 60d9 str r1, [r3, #12] + 2afdc: 60d9 str r1, [r3, #12] endpoint0_transfer_data.pointer2 = addr + 8192; - 2aef6: f500 5100 add.w r1, r0, #8192 ; 0x2000 + 2afde: f500 5100 add.w r1, r0, #8192 ; 0x2000 endpoint_queue_head[1].next = (uint32_t)&endpoint0_transfer_data; - 2aefa: 64a3 str r3, [r4, #72] ; 0x48 + 2afe2: 64a3 str r3, [r4, #72] ; 0x48 endpoint0_transfer_data.pointer2 = addr + 8192; - 2aefc: 6119 str r1, [r3, #16] + 2afe4: 6119 str r1, [r3, #16] endpoint0_transfer_data.pointer3 = addr + 12288; - 2aefe: f500 5140 add.w r1, r0, #12288 ; 0x3000 + 2afe6: f500 5140 add.w r1, r0, #12288 ; 0x3000 endpoint0_transfer_data.pointer4 = addr + 16384; - 2af02: f500 4080 add.w r0, r0, #16384 ; 0x4000 + 2afea: f500 4080 add.w r0, r0, #16384 ; 0x4000 endpoint0_transfer_data.pointer3 = addr + 12288; - 2af06: 6159 str r1, [r3, #20] + 2afee: 6159 str r1, [r3, #20] endpoint_queue_head[1].status = 0; - 2af08: 2100 movs r1, #0 + 2aff0: 2100 movs r1, #0 endpoint0_transfer_data.pointer4 = addr + 16384; - 2af0a: 6198 str r0, [r3, #24] + 2aff2: 6198 str r0, [r3, #24] endpoint_queue_head[1].status = 0; - 2af0c: 64e1 str r1, [r4, #76] ; 0x4c + 2aff4: 64e1 str r1, [r4, #76] ; 0x4c USB1_ENDPTPRIME |= (1<<16); - 2af0e: f8d2 31b0 ldr.w r3, [r2, #432] ; 0x1b0 - 2af12: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 2af16: f8c2 31b0 str.w r3, [r2, #432] ; 0x1b0 + 2aff6: f8d2 31b0 ldr.w r3, [r2, #432] ; 0x1b0 + 2affa: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 2affe: f8c2 31b0 str.w r3, [r2, #432] ; 0x1b0 while (USB1_ENDPTPRIME) ; - 2af1a: f8d2 31b0 ldr.w r3, [r2, #432] ; 0x1b0 - 2af1e: 2b00 cmp r3, #0 - 2af20: d1fb bne.n 2af1a - 2af22: e7c0 b.n 2aea6 - 2af24: 20000000 .word 0x20000000 - 2af28: 2000a320 .word 0x2000a320 - 2af2c: 402e0000 .word 0x402e0000 - 2af30: 2000ba40 .word 0x2000ba40 - 2af34: 2000a340 .word 0x2000a340 - -0002af38 : + 2b002: f8d2 31b0 ldr.w r3, [r2, #432] ; 0x1b0 + 2b006: 2b00 cmp r3, #0 + 2b008: d1fb bne.n 2b002 + 2b00a: e7c0 b.n 2af8e + 2b00c: 20000000 .word 0x20000000 + 2b010: 2000a340 .word 0x2000a340 + 2b014: 402e0000 .word 0x402e0000 + 2b018: 2000ba60 .word 0x2000ba60 + 2b01c: 2000a360 .word 0x2000a360 + +0002b020 : { - 2af38: b410 push {r4} + 2b020: b410 push {r4} __disable_irq(); - 2af3a: b672 cpsid i + 2b022: b672 cpsid i sof_usage |= (1 << interface); - 2af3c: 4c0a ldr r4, [pc, #40] ; (2af68 ) - 2af3e: 2201 movs r2, #1 + 2b024: 4c0a ldr r4, [pc, #40] ; (2b050 ) + 2b026: 2201 movs r2, #1 uint32_t intr = USB1_USBINTR; - 2af40: 490a ldr r1, [pc, #40] ; (2af6c ) + 2b028: 490a ldr r1, [pc, #40] ; (2b054 ) sof_usage |= (1 << interface); - 2af42: 7823 ldrb r3, [r4, #0] - 2af44: fa02 f000 lsl.w r0, r2, r0 - 2af48: 4318 orrs r0, r3 - 2af4a: 7020 strb r0, [r4, #0] + 2b02a: 7823 ldrb r3, [r4, #0] + 2b02c: fa02 f000 lsl.w r0, r2, r0 + 2b030: 4318 orrs r0, r3 + 2b032: 7020 strb r0, [r4, #0] uint32_t intr = USB1_USBINTR; - 2af4c: f8d1 3148 ldr.w r3, [r1, #328] ; 0x148 + 2b034: f8d1 3148 ldr.w r3, [r1, #328] ; 0x148 if (!(intr & USB_USBINTR_SRE)) { - 2af50: 061a lsls r2, r3, #24 - 2af52: d405 bmi.n 2af60 + 2b038: 061a lsls r2, r3, #24 + 2b03a: d405 bmi.n 2b048 USB1_USBSTS = USB_USBSTS_SRI; // clear prior SOF before SOF IRQ enable - 2af54: 2280 movs r2, #128 ; 0x80 + 2b03c: 2280 movs r2, #128 ; 0x80 USB1_USBINTR = intr | USB_USBINTR_SRE; - 2af56: 4313 orrs r3, r2 + 2b03e: 4313 orrs r3, r2 USB1_USBSTS = USB_USBSTS_SRI; // clear prior SOF before SOF IRQ enable - 2af58: f8c1 2144 str.w r2, [r1, #324] ; 0x144 + 2b040: f8c1 2144 str.w r2, [r1, #324] ; 0x144 USB1_USBINTR = intr | USB_USBINTR_SRE; - 2af5c: f8c1 3148 str.w r3, [r1, #328] ; 0x148 + 2b044: f8c1 3148 str.w r3, [r1, #328] ; 0x148 __enable_irq(); - 2af60: b662 cpsie i + 2b048: b662 cpsie i } - 2af62: f85d 4b04 ldr.w r4, [sp], #4 - 2af66: 4770 bx lr - 2af68: 2000bc87 .word 0x2000bc87 - 2af6c: 402e0000 .word 0x402e0000 + 2b04a: f85d 4b04 ldr.w r4, [sp], #4 + 2b04e: 4770 bx lr + 2b050: 2000bca7 .word 0x2000bca7 + 2b054: 402e0000 .word 0x402e0000 -0002af70 : +0002b058 : sof_usage &= ~(1 << interface); - 2af70: 4908 ldr r1, [pc, #32] ; (2af94 ) - 2af72: 2201 movs r2, #1 - 2af74: 780b ldrb r3, [r1, #0] - 2af76: fa02 f000 lsl.w r0, r2, r0 - 2af7a: ea23 0000 bic.w r0, r3, r0 - 2af7e: 7008 strb r0, [r1, #0] + 2b058: 4908 ldr r1, [pc, #32] ; (2b07c ) + 2b05a: 2201 movs r2, #1 + 2b05c: 780b ldrb r3, [r1, #0] + 2b05e: fa02 f000 lsl.w r0, r2, r0 + 2b062: ea23 0000 bic.w r0, r3, r0 + 2b066: 7008 strb r0, [r1, #0] if (sof_usage == 0) { - 2af80: b930 cbnz r0, 2af90 + 2b068: b930 cbnz r0, 2b078 USB1_USBINTR &= ~USB_USBINTR_SRE; - 2af82: 4a05 ldr r2, [pc, #20] ; (2af98 ) - 2af84: f8d2 3148 ldr.w r3, [r2, #328] ; 0x148 - 2af88: f023 0380 bic.w r3, r3, #128 ; 0x80 - 2af8c: f8c2 3148 str.w r3, [r2, #328] ; 0x148 + 2b06a: 4a05 ldr r2, [pc, #20] ; (2b080 ) + 2b06c: f8d2 3148 ldr.w r3, [r2, #328] ; 0x148 + 2b070: f023 0380 bic.w r3, r3, #128 ; 0x80 + 2b074: f8c2 3148 str.w r3, [r2, #328] ; 0x148 } - 2af90: 4770 bx lr - 2af92: bf00 nop - 2af94: 2000bc87 .word 0x2000bc87 - 2af98: 402e0000 .word 0x402e0000 + 2b078: 4770 bx lr + 2b07a: bf00 nop + 2b07c: 2000bca7 .word 0x2000bca7 + 2b080: 402e0000 .word 0x402e0000 -0002af9c : +0002b084 : { - 2af9c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2b084: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} uint32_t status = USB1_USBSTS; - 2afa0: 4c9d ldr r4, [pc, #628] ; (2b218 ) + 2b088: 4c9d ldr r4, [pc, #628] ; (2b300 ) { - 2afa2: b083 sub sp, #12 + 2b08a: b083 sub sp, #12 uint32_t status = USB1_USBSTS; - 2afa4: f8d4 6144 ldr.w r6, [r4, #324] ; 0x144 + 2b08c: f8d4 6144 ldr.w r6, [r4, #324] ; 0x144 if (status & USB_USBSTS_UI) { - 2afa8: 07f1 lsls r1, r6, #31 + 2b090: 07f1 lsls r1, r6, #31 USB1_USBSTS = status; - 2afaa: f8c4 6144 str.w r6, [r4, #324] ; 0x144 + 2b092: f8c4 6144 str.w r6, [r4, #324] ; 0x144 if (status & USB_USBSTS_UI) { - 2afae: d56f bpl.n 2b090 + 2b096: d56f bpl.n 2b178 uint32_t setupstatus = USB1_ENDPTSETUPSTAT; - 2afb0: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac + 2b098: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac while (setupstatus) { - 2afb4: 2b00 cmp r3, #0 - 2afb6: d066 beq.n 2b086 - 2afb8: 4d98 ldr r5, [pc, #608] ; (2b21c ) - 2afba: f8df b27c ldr.w fp, [pc, #636] ; 2b238 + 2b09c: 2b00 cmp r3, #0 + 2b09e: d066 beq.n 2b16e + 2b0a0: 4d98 ldr r5, [pc, #608] ; (2b304 ) + 2b0a2: f8df b27c ldr.w fp, [pc, #636] ; 2b320 endpoint0_transfer_data.pointer1 = addr + 4096; - 2afbe: f8df a284 ldr.w sl, [pc, #644] ; 2b244 + 2b0a6: f8df a284 ldr.w sl, [pc, #644] ; 2b32c endpoint0_transfer_ack.next = 1; - 2afc2: 4f97 ldr r7, [pc, #604] ; (2b220 ) + 2b0aa: 4f97 ldr r7, [pc, #604] ; (2b308 ) usb_configuration = setup.wValue; - 2afc4: f8df 8280 ldr.w r8, [pc, #640] ; 2b248 + 2b0ac: f8df 8280 ldr.w r8, [pc, #640] ; 2b330 *((volatile uint32_t *)&USB1_ENDPTCTRL0 + endpoint) &= ~USB_ENDPTCTRL_RXS; - 2afc8: f8df 9280 ldr.w r9, [pc, #640] ; 2b24c + 2b0b0: f8df 9280 ldr.w r9, [pc, #640] ; 2b334 USB1_ENDPTSETUPSTAT = setupstatus; - 2afcc: f8c4 31ac str.w r3, [r4, #428] ; 0x1ac + 2b0b4: f8c4 31ac str.w r3, [r4, #428] ; 0x1ac s.word2 = endpoint_queue_head[0].setup1; - 2afd0: e9d5 200a ldrd r2, r0, [r5, #40] ; 0x28 + 2b0b8: e9d5 200a ldrd r2, r0, [r5, #40] ; 0x28 USB1_USBCMD |= USB_USBCMD_SUTW; - 2afd4: f8d4 3140 ldr.w r3, [r4, #320] ; 0x140 - 2afd8: f443 5300 orr.w r3, r3, #8192 ; 0x2000 - 2afdc: f8c4 3140 str.w r3, [r4, #320] ; 0x140 + 2b0bc: f8d4 3140 ldr.w r3, [r4, #320] ; 0x140 + 2b0c0: f443 5300 orr.w r3, r3, #8192 ; 0x2000 + 2b0c4: f8c4 3140 str.w r3, [r4, #320] ; 0x140 } while (!(USB1_USBCMD & USB_USBCMD_SUTW)); - 2afe0: f8d4 3140 ldr.w r3, [r4, #320] ; 0x140 - 2afe4: 049b lsls r3, r3, #18 - 2afe6: d5f5 bpl.n 2afd4 + 2b0c8: f8d4 3140 ldr.w r3, [r4, #320] ; 0x140 + 2b0cc: 049b lsls r3, r3, #18 + 2b0ce: d5f5 bpl.n 2b0bc USB1_USBCMD &= ~USB_USBCMD_SUTW; - 2afe8: f8d4 3140 ldr.w r3, [r4, #320] ; 0x140 - 2afec: f423 5300 bic.w r3, r3, #8192 ; 0x2000 - 2aff0: f8c4 3140 str.w r3, [r4, #320] ; 0x140 + 2b0d0: f8d4 3140 ldr.w r3, [r4, #320] ; 0x140 + 2b0d4: f423 5300 bic.w r3, r3, #8192 ; 0x2000 + 2b0d8: f8c4 3140 str.w r3, [r4, #320] ; 0x140 USB1_ENDPTFLUSH = (1<<16) | (1<<0); // page 3174 - 2aff4: f04f 1301 mov.w r3, #65537 ; 0x10001 - 2aff8: f8c4 31b4 str.w r3, [r4, #436] ; 0x1b4 + 2b0dc: f04f 1301 mov.w r3, #65537 ; 0x10001 + 2b0e0: f8c4 31b4 str.w r3, [r4, #436] ; 0x1b4 while (USB1_ENDPTFLUSH & ((1<<16) | (1<<0))) ; - 2affc: f8d4 31b4 ldr.w r3, [r4, #436] ; 0x1b4 - 2b000: f013 1301 ands.w r3, r3, #65537 ; 0x10001 - 2b004: d1fa bne.n 2affc + 2b0e4: f8d4 31b4 ldr.w r3, [r4, #436] ; 0x1b4 + 2b0e8: f013 1301 ands.w r3, r3, #65537 ; 0x10001 + 2b0ec: d1fa bne.n 2b0e4 endpoint0_notify_mask = 0; - 2b006: b291 uxth r1, r2 - 2b008: f8cb 3000 str.w r3, [fp] + 2b0ee: b291 uxth r1, r2 + 2b0f0: f8cb 3000 str.w r3, [fp] switch (setup.wRequestAndType) { - 2b00c: f5b1 6fa0 cmp.w r1, #1280 ; 0x500 - 2b010: f000 81b2 beq.w 2b378 - 2b014: f200 80d7 bhi.w 2b1c6 - 2b018: f5b1 7f81 cmp.w r1, #258 ; 0x102 - 2b01c: f000 8150 beq.w 2b2c0 - 2b020: f240 80b1 bls.w 2b186 - 2b024: f240 3302 movw r3, #770 ; 0x302 - 2b028: 4299 cmp r1, r3 - 2b02a: f040 80db bne.w 2b1e4 + 2b0f4: f5b1 6fa0 cmp.w r1, #1280 ; 0x500 + 2b0f8: f000 81b2 beq.w 2b460 + 2b0fc: f200 80d7 bhi.w 2b2ae + 2b100: f5b1 7f81 cmp.w r1, #258 ; 0x102 + 2b104: f000 8150 beq.w 2b3a8 + 2b108: f240 80b1 bls.w 2b26e + 2b10c: f240 3302 movw r3, #770 ; 0x302 + 2b110: 4299 cmp r1, r3 + 2b112: f040 80db bne.w 2b2cc if (endpoint > 7) break; - 2b02e: f010 0f78 tst.w r0, #120 ; 0x78 - 2b032: b283 uxth r3, r0 - 2b034: f040 80d6 bne.w 2b1e4 + 2b116: f010 0f78 tst.w r0, #120 ; 0x78 + 2b11a: b283 uxth r3, r0 + 2b11c: f040 80d6 bne.w 2b2cc endpoint = setup.wIndex & 0x7F; - 2b038: f003 027f and.w r2, r3, #127 ; 0x7f + 2b120: f003 027f and.w r2, r3, #127 ; 0x7f if (dir) { - 2b03c: f013 0f80 tst.w r3, #128 ; 0x80 + 2b124: f013 0f80 tst.w r3, #128 ; 0x80 *((volatile uint32_t *)&USB1_ENDPTCTRL0 + endpoint) |= USB_ENDPTCTRL_TXS; - 2b040: f859 3022 ldr.w r3, [r9, r2, lsl #2] - 2b044: bf14 ite ne - 2b046: f443 3380 orrne.w r3, r3, #65536 ; 0x10000 + 2b128: f859 3022 ldr.w r3, [r9, r2, lsl #2] + 2b12c: bf14 ite ne + 2b12e: f443 3380 orrne.w r3, r3, #65536 ; 0x10000 *((volatile uint32_t *)&USB1_ENDPTCTRL0 + endpoint) |= USB_ENDPTCTRL_RXS; - 2b04a: f043 0301 orreq.w r3, r3, #1 - 2b04e: f849 3022 str.w r3, [r9, r2, lsl #2] + 2b132: f043 0301 orreq.w r3, r3, #1 + 2b136: f849 3022 str.w r3, [r9, r2, lsl #2] endpoint0_transfer_ack.pointer0 = 0; - 2b052: 2300 movs r3, #0 + 2b13a: 2300 movs r3, #0 endpoint_queue_head[1].next = (uint32_t)&endpoint0_transfer_ack; - 2b054: 64af str r7, [r5, #72] ; 0x48 + 2b13c: 64af str r7, [r5, #72] ; 0x48 endpoint_queue_head[1].status = 0; - 2b056: 64eb str r3, [r5, #76] ; 0x4c + 2b13e: 64eb str r3, [r5, #76] ; 0x4c endpoint0_transfer_ack.pointer0 = 0; - 2b058: 60bb str r3, [r7, #8] + 2b140: 60bb str r3, [r7, #8] endpoint0_transfer_ack.next = 1; - 2b05a: 2301 movs r3, #1 - 2b05c: 603b str r3, [r7, #0] + 2b142: 2301 movs r3, #1 + 2b144: 603b str r3, [r7, #0] endpoint0_transfer_ack.status = (1<<7) | (notify ? (1 << 15) : 0); - 2b05e: 2380 movs r3, #128 ; 0x80 - 2b060: 607b str r3, [r7, #4] + 2b146: 2380 movs r3, #128 ; 0x80 + 2b148: 607b str r3, [r7, #4] USB1_ENDPTCOMPLETE = (1<<0) | (1<<16); - 2b062: f04f 1301 mov.w r3, #65537 ; 0x10001 - 2b066: f8c4 31bc str.w r3, [r4, #444] ; 0x1bc + 2b14a: f04f 1301 mov.w r3, #65537 ; 0x10001 + 2b14e: f8c4 31bc str.w r3, [r4, #444] ; 0x1bc USB1_ENDPTPRIME |= (1<<16); - 2b06a: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2b06e: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 2b072: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 + 2b152: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2b156: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 2b15a: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 while (USB1_ENDPTPRIME) ; - 2b076: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2b07a: 2b00 cmp r3, #0 - 2b07c: d1fb bne.n 2b076 + 2b15e: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2b162: 2b00 cmp r3, #0 + 2b164: d1fb bne.n 2b15e setupstatus = USB1_ENDPTSETUPSTAT; // page 3175 - 2b07e: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac + 2b166: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac while (setupstatus) { - 2b082: 2b00 cmp r3, #0 - 2b084: d1a2 bne.n 2afcc + 2b16a: 2b00 cmp r3, #0 + 2b16c: d1a2 bne.n 2b0b4 uint32_t completestatus = USB1_ENDPTCOMPLETE; - 2b086: 4b64 ldr r3, [pc, #400] ; (2b218 ) - 2b088: f8d3 41bc ldr.w r4, [r3, #444] ; 0x1bc + 2b16e: 4b64 ldr r3, [pc, #400] ; (2b300 ) + 2b170: f8d3 41bc ldr.w r4, [r3, #444] ; 0x1bc if (completestatus) { - 2b08c: 2c00 cmp r4, #0 - 2b08e: d148 bne.n 2b122 + 2b174: 2c00 cmp r4, #0 + 2b176: d148 bne.n 2b20a if (status & USB_USBSTS_URI) { // page 3164 - 2b090: 0672 lsls r2, r6, #25 - 2b092: d514 bpl.n 2b0be + 2b178: 0672 lsls r2, r6, #25 + 2b17a: d514 bpl.n 2b1a6 USB1_ENDPTSETUPSTAT = USB1_ENDPTSETUPSTAT; // Clear all setup token semaphores - 2b094: 4a60 ldr r2, [pc, #384] ; (2b218 ) - 2b096: f8d2 31ac ldr.w r3, [r2, #428] ; 0x1ac - 2b09a: f8c2 31ac str.w r3, [r2, #428] ; 0x1ac + 2b17c: 4a60 ldr r2, [pc, #384] ; (2b300 ) + 2b17e: f8d2 31ac ldr.w r3, [r2, #428] ; 0x1ac + 2b182: f8c2 31ac str.w r3, [r2, #428] ; 0x1ac USB1_ENDPTCOMPLETE = USB1_ENDPTCOMPLETE; // Clear all the endpoint complete status - 2b09e: f8d2 31bc ldr.w r3, [r2, #444] ; 0x1bc - 2b0a2: f8c2 31bc str.w r3, [r2, #444] ; 0x1bc + 2b186: f8d2 31bc ldr.w r3, [r2, #444] ; 0x1bc + 2b18a: f8c2 31bc str.w r3, [r2, #444] ; 0x1bc while (USB1_ENDPTPRIME != 0) ; // Wait for any endpoint priming - 2b0a6: f8d2 31b0 ldr.w r3, [r2, #432] ; 0x1b0 - 2b0aa: 2b00 cmp r3, #0 - 2b0ac: d1fb bne.n 2b0a6 + 2b18e: f8d2 31b0 ldr.w r3, [r2, #432] ; 0x1b0 + 2b192: 2b00 cmp r3, #0 + 2b194: d1fb bne.n 2b18e USB1_ENDPTFLUSH = 0xFFFFFFFF; // Cancel all endpoint primed status - 2b0ae: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 2b196: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff endpointN_notify_mask = 0; - 2b0b2: 495c ldr r1, [pc, #368] ; (2b224 ) + 2b19a: 495c ldr r1, [pc, #368] ; (2b30c ) USB1_ENDPTFLUSH = 0xFFFFFFFF; // Cancel all endpoint primed status - 2b0b4: f8c2 01b4 str.w r0, [r2, #436] ; 0x1b4 + 2b19c: f8c2 01b4 str.w r0, [r2, #436] ; 0x1b4 if ((USB1_PORTSC1 & USB_PORTSC1_PR)) { - 2b0b8: f8d2 2184 ldr.w r2, [r2, #388] ; 0x184 + 2b1a0: f8d2 2184 ldr.w r2, [r2, #388] ; 0x184 endpointN_notify_mask = 0; - 2b0bc: 600b str r3, [r1, #0] + 2b1a4: 600b str r3, [r1, #0] if (status & USB_USBSTS_TI0) { - 2b0be: 01f4 lsls r4, r6, #7 - 2b0c0: d503 bpl.n 2b0ca + 2b1a6: 01f4 lsls r4, r6, #7 + 2b1a8: d503 bpl.n 2b1b2 if (usb_timer0_callback != NULL) usb_timer0_callback(); - 2b0c2: 4b59 ldr r3, [pc, #356] ; (2b228 ) - 2b0c4: 681b ldr r3, [r3, #0] - 2b0c6: b103 cbz r3, 2b0ca - 2b0c8: 4798 blx r3 + 2b1aa: 4b59 ldr r3, [pc, #356] ; (2b310 ) + 2b1ac: 681b ldr r3, [r3, #0] + 2b1ae: b103 cbz r3, 2b1b2 + 2b1b0: 4798 blx r3 if (status & USB_USBSTS_TI1) { - 2b0ca: 01b0 lsls r0, r6, #6 - 2b0cc: d503 bpl.n 2b0d6 + 2b1b2: 01b0 lsls r0, r6, #6 + 2b1b4: d503 bpl.n 2b1be if (usb_timer1_callback != NULL) usb_timer1_callback(); - 2b0ce: 4b57 ldr r3, [pc, #348] ; (2b22c ) - 2b0d0: 681b ldr r3, [r3, #0] - 2b0d2: b103 cbz r3, 2b0d6 - 2b0d4: 4798 blx r3 + 2b1b6: 4b57 ldr r3, [pc, #348] ; (2b314 ) + 2b1b8: 681b ldr r3, [r3, #0] + 2b1ba: b103 cbz r3, 2b1be + 2b1bc: 4798 blx r3 if (status & USB_USBSTS_PCI) { - 2b0d6: 0771 lsls r1, r6, #29 - 2b0d8: d508 bpl.n 2b0ec + 2b1be: 0771 lsls r1, r6, #29 + 2b1c0: d508 bpl.n 2b1d4 if (USB1_PORTSC1 & USB_PORTSC1_HSP) { - 2b0da: 4b4f ldr r3, [pc, #316] ; (2b218 ) - 2b0dc: f8d3 3184 ldr.w r3, [r3, #388] ; 0x184 - 2b0e0: f413 7300 ands.w r3, r3, #512 ; 0x200 - 2b0e4: d01a beq.n 2b11c + 2b1c2: 4b4f ldr r3, [pc, #316] ; (2b300 ) + 2b1c4: f8d3 3184 ldr.w r3, [r3, #388] ; 0x184 + 2b1c8: f413 7300 ands.w r3, r3, #512 ; 0x200 + 2b1cc: d01a beq.n 2b204 usb_high_speed = 1; - 2b0e6: 4b52 ldr r3, [pc, #328] ; (2b230 ) - 2b0e8: 2201 movs r2, #1 - 2b0ea: 701a strb r2, [r3, #0] + 2b1ce: 4b52 ldr r3, [pc, #328] ; (2b318 ) + 2b1d0: 2201 movs r2, #1 + 2b1d2: 701a strb r2, [r3, #0] if ((USB1_USBINTR & USB_USBINTR_SRE) && (status & USB_USBSTS_SRI)) { - 2b0ec: 4b4a ldr r3, [pc, #296] ; (2b218 ) - 2b0ee: f8d3 3148 ldr.w r3, [r3, #328] ; 0x148 - 2b0f2: 061a lsls r2, r3, #24 - 2b0f4: d50f bpl.n 2b116 - 2b0f6: 0633 lsls r3, r6, #24 - 2b0f8: d50d bpl.n 2b116 + 2b1d4: 4b4a ldr r3, [pc, #296] ; (2b300 ) + 2b1d6: f8d3 3148 ldr.w r3, [r3, #328] ; 0x148 + 2b1da: 061a lsls r2, r3, #24 + 2b1dc: d50f bpl.n 2b1fe + 2b1de: 0633 lsls r3, r6, #24 + 2b1e0: d50d bpl.n 2b1fe if (usb_reboot_timer) { - 2b0fa: 4a4e ldr r2, [pc, #312] ; (2b234 ) - 2b0fc: 7813 ldrb r3, [r2, #0] - 2b0fe: b12b cbz r3, 2b10c + 2b1e2: 4a4e ldr r2, [pc, #312] ; (2b31c ) + 2b1e4: 7813 ldrb r3, [r2, #0] + 2b1e6: b12b cbz r3, 2b1f4 if (--usb_reboot_timer == 0) { - 2b100: 3b01 subs r3, #1 - 2b102: b2db uxtb r3, r3 - 2b104: 7013 strb r3, [r2, #0] - 2b106: 2b00 cmp r3, #0 - 2b108: f000 8207 beq.w 2b51a -} - 2b10c: b003 add sp, #12 - 2b10e: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2b1e8: 3b01 subs r3, #1 + 2b1ea: b2db uxtb r3, r3 + 2b1ec: 7013 strb r3, [r2, #0] + 2b1ee: 2b00 cmp r3, #0 + 2b1f0: f000 8207 beq.w 2b602 +} + 2b1f4: b003 add sp, #12 + 2b1f6: e8bd 4ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} usb_midi_flush_output(); - 2b112: f000 bc85 b.w 2ba20 + 2b1fa: f000 bc85 b.w 2bb08 } - 2b116: b003 add sp, #12 - 2b118: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2b1fe: b003 add sp, #12 + 2b200: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} usb_high_speed = 0; - 2b11c: 4a44 ldr r2, [pc, #272] ; (2b230 ) - 2b11e: 7013 strb r3, [r2, #0] - 2b120: e7e4 b.n 2b0ec + 2b204: 4a44 ldr r2, [pc, #272] ; (2b318 ) + 2b206: 7013 strb r3, [r2, #0] + 2b208: e7e4 b.n 2b1d4 if (completestatus & endpoint0_notify_mask) { - 2b122: 4a45 ldr r2, [pc, #276] ; (2b238 ) + 2b20a: 4a45 ldr r2, [pc, #276] ; (2b320 ) USB1_ENDPTCOMPLETE = completestatus; - 2b124: f8c3 41bc str.w r4, [r3, #444] ; 0x1bc + 2b20c: f8c3 41bc str.w r4, [r3, #444] ; 0x1bc if (completestatus & endpoint0_notify_mask) { - 2b128: 6813 ldr r3, [r2, #0] - 2b12a: 421c tst r4, r3 - 2b12c: f040 8154 bne.w 2b3d8 + 2b210: 6813 ldr r3, [r2, #0] + 2b212: 421c tst r4, r3 + 2b214: f040 8154 bne.w 2b4c0 completestatus &= endpointN_notify_mask; - 2b130: 4b3c ldr r3, [pc, #240] ; (2b224 ) - 2b132: 681b ldr r3, [r3, #0] + 2b218: 4b3c ldr r3, [pc, #240] ; (2b30c ) + 2b21a: 681b ldr r3, [r3, #0] if (completestatus) { - 2b134: 401c ands r4, r3 - 2b136: d0ab beq.n 2b090 + 2b21c: 401c ands r4, r3 + 2b21e: d0ab beq.n 2b178 while (tx) { - 2b138: ea5f 4814 movs.w r8, r4, lsr #16 - 2b13c: d010 beq.n 2b160 - 2b13e: 4d37 ldr r5, [pc, #220] ; (2b21c ) + 2b220: ea5f 4814 movs.w r8, r4, lsr #16 + 2b224: d010 beq.n 2b248 + 2b226: 4d37 ldr r5, [pc, #220] ; (2b304 ) tx &= ~(1< + 2b23c: 3040 adds r0, #64 ; 0x40 + 2b23e: f7ff fe87 bl 2af50 while (tx) { - 2b15a: ea38 0807 bics.w r8, r8, r7 - 2b15e: d1f1 bne.n 2b144 + 2b242: ea38 0807 bics.w r8, r8, r7 + 2b246: d1f1 bne.n 2b22c uint32_t rx = completestatus & 0xffff; - 2b160: b2a4 uxth r4, r4 + 2b248: b2a4 uxth r4, r4 while(rx) { - 2b162: 2c00 cmp r4, #0 - 2b164: d094 beq.n 2b090 - 2b166: 4d2d ldr r5, [pc, #180] ; (2b21c ) + 2b24a: 2c00 cmp r4, #0 + 2b24c: d094 beq.n 2b178 + 2b24e: 4d2d ldr r5, [pc, #180] ; (2b304 ) rx &= ~(1< + 2b264: f7ff fe74 bl 2af50 while(rx) { - 2b180: 43bc bics r4, r7 - 2b182: d1f3 bne.n 2b16c - 2b184: e784 b.n 2b090 + 2b268: 43bc bics r4, r7 + 2b26a: d1f3 bne.n 2b254 + 2b26c: e784 b.n 2b178 switch (setup.wRequestAndType) { - 2b186: 2980 cmp r1, #128 ; 0x80 - 2b188: f000 8117 beq.w 2b3ba - 2b18c: 2982 cmp r1, #130 ; 0x82 - 2b18e: d129 bne.n 2b1e4 + 2b26e: 2980 cmp r1, #128 ; 0x80 + 2b270: f000 8117 beq.w 2b4a2 + 2b274: 2982 cmp r1, #130 ; 0x82 + 2b276: d129 bne.n 2b2cc endpoint = setup.wIndex & 0x7F; - 2b190: b283 uxth r3, r0 + 2b278: b283 uxth r3, r0 if (endpoint > 7) break; - 2b192: f010 0078 ands.w r0, r0, #120 ; 0x78 - 2b196: d125 bne.n 2b1e4 + 2b27a: f010 0078 ands.w r0, r0, #120 ; 0x78 + 2b27e: d125 bne.n 2b2cc endpoint = setup.wIndex & 0x7F; - 2b198: f003 027f and.w r2, r3, #127 ; 0x7f + 2b280: f003 027f and.w r2, r3, #127 ; 0x7f ctrl = *((uint32_t *)&USB1_ENDPTCTRL0 + endpoint); - 2b19c: f859 1022 ldr.w r1, [r9, r2, lsl #2] + 2b284: f859 1022 ldr.w r1, [r9, r2, lsl #2] reply_buffer[0] = 0; - 2b1a0: 4a26 ldr r2, [pc, #152] ; (2b23c ) - 2b1a2: 8010 strh r0, [r2, #0] + 2b288: 4a26 ldr r2, [pc, #152] ; (2b324 ) + 2b28a: 8010 strh r0, [r2, #0] if ((dir && (ctrl & USB_ENDPTCTRL_TXS)) || (!dir && (ctrl & USB_ENDPTCTRL_RXS))) { - 2b1a4: 0618 lsls r0, r3, #24 - 2b1a6: f140 8113 bpl.w 2b3d0 - 2b1aa: 03c9 lsls r1, r1, #15 - 2b1ac: d501 bpl.n 2b1b2 + 2b28c: 0618 lsls r0, r3, #24 + 2b28e: f140 8113 bpl.w 2b4b8 + 2b292: 03c9 lsls r1, r1, #15 + 2b294: d501 bpl.n 2b29a reply_buffer[0] = 1; - 2b1ae: 2301 movs r3, #1 - 2b1b0: 7013 strb r3, [r2, #0] + 2b296: 2301 movs r3, #1 + 2b298: 7013 strb r3, [r2, #0] endpoint0_transmit(reply_buffer, 2, 0); - 2b1b2: 2102 movs r1, #2 - 2b1b4: 4821 ldr r0, [pc, #132] ; (2b23c ) - 2b1b6: f7ff fe73 bl 2aea0 + 2b29a: 2102 movs r1, #2 + 2b29c: 4821 ldr r0, [pc, #132] ; (2b324 ) + 2b29e: f7ff fe73 bl 2af88 setupstatus = USB1_ENDPTSETUPSTAT; // page 3175 - 2b1ba: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac + 2b2a2: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac while (setupstatus) { - 2b1be: 2b00 cmp r3, #0 - 2b1c0: f47f af04 bne.w 2afcc - 2b1c4: e75f b.n 2b086 + 2b2a6: 2b00 cmp r3, #0 + 2b2a8: f47f af04 bne.w 2b0b4 + 2b2ac: e75f b.n 2b16e switch (setup.wRequestAndType) { - 2b1c6: f5b1 6f10 cmp.w r1, #2304 ; 0x900 - 2b1ca: f000 80a6 beq.w 2b31a - 2b1ce: d913 bls.n 2b1f8 - 2b1d0: f640 1c21 movw ip, #2337 ; 0x921 - 2b1d4: 4561 cmp r1, ip - 2b1d6: d105 bne.n 2b1e4 + 2b2ae: f5b1 6f10 cmp.w r1, #2304 ; 0x900 + 2b2b2: f000 80a6 beq.w 2b402 + 2b2b6: d913 bls.n 2b2e0 + 2b2b8: f640 1c21 movw ip, #2337 ; 0x921 + 2b2bc: 4561 cmp r1, ip + 2b2be: d105 bne.n 2b2cc if (setup.wLength <= sizeof(endpoint0_buffer)) { - 2b1d8: f5b0 2f10 cmp.w r0, #589824 ; 0x90000 - 2b1dc: ea4f 4110 mov.w r1, r0, lsr #16 - 2b1e0: f0c0 812a bcc.w 2b438 + 2b2c0: f5b0 2f10 cmp.w r0, #589824 ; 0x90000 + 2b2c4: ea4f 4110 mov.w r1, r0, lsr #16 + 2b2c8: f0c0 812a bcc.w 2b520 USB1_ENDPTCTRL0 = 0x000010001; // stall - 2b1e4: f04f 1301 mov.w r3, #65537 ; 0x10001 - 2b1e8: f8c4 31c0 str.w r3, [r4, #448] ; 0x1c0 + 2b2cc: f04f 1301 mov.w r3, #65537 ; 0x10001 + 2b2d0: f8c4 31c0 str.w r3, [r4, #448] ; 0x1c0 setupstatus = USB1_ENDPTSETUPSTAT; // page 3175 - 2b1ec: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac + 2b2d4: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac while (setupstatus) { - 2b1f0: 2b00 cmp r3, #0 - 2b1f2: f47f aeeb bne.w 2afcc - 2b1f6: e746 b.n 2b086 + 2b2d8: 2b00 cmp r3, #0 + 2b2da: f47f aeeb bne.w 2b0b4 + 2b2de: e746 b.n 2b16e switch (setup.wRequestAndType) { - 2b1f8: f240 6381 movw r3, #1665 ; 0x681 - 2b1fc: 4299 cmp r1, r3 - 2b1fe: d84f bhi.n 2b2a0 - 2b200: f5b1 6fd0 cmp.w r1, #1664 ; 0x680 - 2b204: d3ee bcc.n 2b1e4 + 2b2e0: f240 6381 movw r3, #1665 ; 0x681 + 2b2e4: 4299 cmp r1, r3 + 2b2e6: d84f bhi.n 2b388 + 2b2e8: f5b1 6fd0 cmp.w r1, #1664 ; 0x680 + 2b2ec: d3ee bcc.n 2b2cc for (list = usb_descriptor_list; list->addr != NULL; list++) { - 2b206: 4b0e ldr r3, [pc, #56] ; (2b240 ) - 2b208: 6859 ldr r1, [r3, #4] - 2b20a: 2900 cmp r1, #0 - 2b20c: d0ea beq.n 2b1e4 - 2b20e: ea4f 4e12 mov.w lr, r2, lsr #16 + 2b2ee: 4b0e ldr r3, [pc, #56] ; (2b328 ) + 2b2f0: 6859 ldr r1, [r3, #4] + 2b2f2: 2900 cmp r1, #0 + 2b2f4: d0ea beq.n 2b2cc + 2b2f6: ea4f 4e12 mov.w lr, r2, lsr #16 if (setup.wValue == list->wValue && setup.wIndex == list->wIndex) { - 2b212: b282 uxth r2, r0 - 2b214: e020 b.n 2b258 - 2b216: bf00 nop - 2b218: 402e0000 .word 0x402e0000 - 2b21c: 20000000 .word 0x20000000 - 2b220: 2000a320 .word 0x2000a320 - 2b224: 2000ba44 .word 0x2000ba44 - 2b228: 2000bc64 .word 0x2000bc64 - 2b22c: 2000bc68 .word 0x2000bc68 - 2b230: 2000bc8f .word 0x2000bc8f - 2b234: 2000bc95 .word 0x2000bc95 - 2b238: 2000ba40 .word 0x2000ba40 - 2b23c: 2000ba64 .word 0x2000ba64 - 2b240: 200049d8 .word 0x200049d8 - 2b244: 2000ca38 .word 0x2000ca38 - 2b248: 2000bc8e .word 0x2000bc8e - 2b24c: 402e01c0 .word 0x402e01c0 + 2b2fa: b282 uxth r2, r0 + 2b2fc: e020 b.n 2b340 + 2b2fe: bf00 nop + 2b300: 402e0000 .word 0x402e0000 + 2b304: 20000000 .word 0x20000000 + 2b308: 2000a340 .word 0x2000a340 + 2b30c: 2000ba64 .word 0x2000ba64 + 2b310: 2000bc84 .word 0x2000bc84 + 2b314: 2000bc88 .word 0x2000bc88 + 2b318: 2000bcaf .word 0x2000bcaf + 2b31c: 2000bcb5 .word 0x2000bcb5 + 2b320: 2000ba60 .word 0x2000ba60 + 2b324: 2000ba84 .word 0x2000ba84 + 2b328: 20004a98 .word 0x20004a98 + 2b32c: 2000ca58 .word 0x2000ca58 + 2b330: 2000bcae .word 0x2000bcae + 2b334: 402e01c0 .word 0x402e01c0 for (list = usb_descriptor_list; list->addr != NULL; list++) { - 2b250: 6919 ldr r1, [r3, #16] - 2b252: 330c adds r3, #12 - 2b254: 2900 cmp r1, #0 - 2b256: d0c5 beq.n 2b1e4 + 2b338: 6919 ldr r1, [r3, #16] + 2b33a: 330c adds r3, #12 + 2b33c: 2900 cmp r1, #0 + 2b33e: d0c5 beq.n 2b2cc if (setup.wValue == list->wValue && setup.wIndex == list->wIndex) { - 2b258: f8b3 c000 ldrh.w ip, [r3] - 2b25c: 45f4 cmp ip, lr - 2b25e: d1f7 bne.n 2b250 - 2b260: f8b3 c002 ldrh.w ip, [r3, #2] - 2b264: 4594 cmp ip, r2 - 2b266: d1f3 bne.n 2b250 + 2b340: f8b3 c000 ldrh.w ip, [r3] + 2b344: 45f4 cmp ip, lr + 2b346: d1f7 bne.n 2b338 + 2b348: f8b3 c002 ldrh.w ip, [r3, #2] + 2b34c: 4594 cmp ip, r2 + 2b34e: d1f3 bne.n 2b338 if ((setup.wValue >> 8) == 3) { - 2b268: ea4f 221e mov.w r2, lr, lsr #8 - 2b26c: 2a03 cmp r2, #3 - 2b26e: f000 80c8 beq.w 2b402 + 2b350: ea4f 221e mov.w r2, lr, lsr #8 + 2b354: 2a03 cmp r2, #3 + 2b356: f000 80c8 beq.w 2b4ea datalen = list->length; - 2b272: 891a ldrh r2, [r3, #8] + 2b35a: 891a ldrh r2, [r3, #8] if (datalen > setup.wLength) datalen = setup.wLength; - 2b274: 0c00 lsrs r0, r0, #16 - 2b276: 4282 cmp r2, r0 - 2b278: bf28 it cs - 2b27a: 4602 movcs r2, r0 + 2b35c: 0c00 lsrs r0, r0, #16 + 2b35e: 4282 cmp r2, r0 + 2b360: bf28 it cs + 2b362: 4602 movcs r2, r0 if (setup.wValue == 0x200) { - 2b27c: f5be 7f00 cmp.w lr, #512 ; 0x200 - 2b280: f040 80c4 bne.w 2b40c + 2b364: f5be 7f00 cmp.w lr, #512 ; 0x200 + 2b368: f040 80c4 bne.w 2b4f4 if (usb_high_speed) src = usb_config_descriptor_480; - 2b284: 4ba7 ldr r3, [pc, #668] ; (2b524 ) - 2b286: 49a8 ldr r1, [pc, #672] ; (2b528 ) - 2b288: 7818 ldrb r0, [r3, #0] - 2b28a: 4ba8 ldr r3, [pc, #672] ; (2b52c ) + 2b36c: 4ba7 ldr r3, [pc, #668] ; (2b60c ) + 2b36e: 49a8 ldr r1, [pc, #672] ; (2b610 ) + 2b370: 7818 ldrb r0, [r3, #0] + 2b372: 4ba8 ldr r3, [pc, #672] ; (2b614 ) memcpy(usb_descriptor_buffer, src, datalen); - 2b28c: 9200 str r2, [sp, #0] - 2b28e: 2800 cmp r0, #0 - 2b290: bf18 it ne - 2b292: 4619 movne r1, r3 - 2b294: 48a6 ldr r0, [pc, #664] ; (2b530 ) - 2b296: f7ff fa37 bl 2a708 - 2b29a: 4ba5 ldr r3, [pc, #660] ; (2b530 ) - 2b29c: 9a00 ldr r2, [sp, #0] - 2b29e: e114 b.n 2b4ca + 2b374: 9200 str r2, [sp, #0] + 2b376: 2800 cmp r0, #0 + 2b378: bf18 it ne + 2b37a: 4619 movne r1, r3 + 2b37c: 48a6 ldr r0, [pc, #664] ; (2b618 ) + 2b37e: f7ff fa37 bl 2a7f0 + 2b382: 4ba5 ldr r3, [pc, #660] ; (2b618 ) + 2b384: 9a00 ldr r2, [sp, #0] + 2b386: e114 b.n 2b5b2 switch (setup.wRequestAndType) { - 2b2a0: f5b1 6f08 cmp.w r1, #2176 ; 0x880 - 2b2a4: d19e bne.n 2b1e4 + 2b388: f5b1 6f08 cmp.w r1, #2176 ; 0x880 + 2b38c: d19e bne.n 2b2cc reply_buffer[0] = usb_configuration; - 2b2a6: f898 3000 ldrb.w r3, [r8] + 2b38e: f898 3000 ldrb.w r3, [r8] endpoint0_transmit(reply_buffer, 1, 0); - 2b2aa: 2101 movs r1, #1 + 2b392: 2101 movs r1, #1 reply_buffer[0] = usb_configuration; - 2b2ac: 48a1 ldr r0, [pc, #644] ; (2b534 ) - 2b2ae: 7003 strb r3, [r0, #0] + 2b394: 48a1 ldr r0, [pc, #644] ; (2b61c ) + 2b396: 7003 strb r3, [r0, #0] endpoint0_transmit(reply_buffer, 1, 0); - 2b2b0: f7ff fdf6 bl 2aea0 + 2b398: f7ff fdf6 bl 2af88 setupstatus = USB1_ENDPTSETUPSTAT; // page 3175 - 2b2b4: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac + 2b39c: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac while (setupstatus) { - 2b2b8: 2b00 cmp r3, #0 - 2b2ba: f47f ae87 bne.w 2afcc - 2b2be: e6e2 b.n 2b086 + 2b3a0: 2b00 cmp r3, #0 + 2b3a2: f47f ae87 bne.w 2b0b4 + 2b3a6: e6e2 b.n 2b16e if (endpoint > 7) break; - 2b2c0: f010 0f78 tst.w r0, #120 ; 0x78 - 2b2c4: b283 uxth r3, r0 - 2b2c6: d18d bne.n 2b1e4 + 2b3a8: f010 0f78 tst.w r0, #120 ; 0x78 + 2b3ac: b283 uxth r3, r0 + 2b3ae: d18d bne.n 2b2cc endpoint = setup.wIndex & 0x7F; - 2b2c8: f003 027f and.w r2, r3, #127 ; 0x7f + 2b3b0: f003 027f and.w r2, r3, #127 ; 0x7f if (dir) { - 2b2cc: f013 0f80 tst.w r3, #128 ; 0x80 + 2b3b4: f013 0f80 tst.w r3, #128 ; 0x80 *((volatile uint32_t *)&USB1_ENDPTCTRL0 + endpoint) &= ~USB_ENDPTCTRL_TXS; - 2b2d0: f859 3022 ldr.w r3, [r9, r2, lsl #2] - 2b2d4: bf14 ite ne - 2b2d6: f423 3380 bicne.w r3, r3, #65536 ; 0x10000 + 2b3b8: f859 3022 ldr.w r3, [r9, r2, lsl #2] + 2b3bc: bf14 ite ne + 2b3be: f423 3380 bicne.w r3, r3, #65536 ; 0x10000 *((volatile uint32_t *)&USB1_ENDPTCTRL0 + endpoint) &= ~USB_ENDPTCTRL_RXS; - 2b2da: f023 0301 biceq.w r3, r3, #1 - 2b2de: f849 3022 str.w r3, [r9, r2, lsl #2] + 2b3c2: f023 0301 biceq.w r3, r3, #1 + 2b3c6: f849 3022 str.w r3, [r9, r2, lsl #2] endpoint0_transfer_ack.pointer0 = 0; - 2b2e2: 2300 movs r3, #0 + 2b3ca: 2300 movs r3, #0 endpoint_queue_head[1].next = (uint32_t)&endpoint0_transfer_ack; - 2b2e4: 64af str r7, [r5, #72] ; 0x48 + 2b3cc: 64af str r7, [r5, #72] ; 0x48 endpoint_queue_head[1].status = 0; - 2b2e6: 64eb str r3, [r5, #76] ; 0x4c + 2b3ce: 64eb str r3, [r5, #76] ; 0x4c endpoint0_transfer_ack.pointer0 = 0; - 2b2e8: 60bb str r3, [r7, #8] + 2b3d0: 60bb str r3, [r7, #8] endpoint0_transfer_ack.next = 1; - 2b2ea: 2301 movs r3, #1 - 2b2ec: 603b str r3, [r7, #0] + 2b3d2: 2301 movs r3, #1 + 2b3d4: 603b str r3, [r7, #0] endpoint0_transfer_ack.status = (1<<7) | (notify ? (1 << 15) : 0); - 2b2ee: 2380 movs r3, #128 ; 0x80 - 2b2f0: 607b str r3, [r7, #4] + 2b3d6: 2380 movs r3, #128 ; 0x80 + 2b3d8: 607b str r3, [r7, #4] USB1_ENDPTCOMPLETE = (1<<0) | (1<<16); - 2b2f2: f04f 1301 mov.w r3, #65537 ; 0x10001 - 2b2f6: f8c4 31bc str.w r3, [r4, #444] ; 0x1bc + 2b3da: f04f 1301 mov.w r3, #65537 ; 0x10001 + 2b3de: f8c4 31bc str.w r3, [r4, #444] ; 0x1bc USB1_ENDPTPRIME |= (1<<16); - 2b2fa: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2b2fe: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 2b302: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 + 2b3e2: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2b3e6: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 2b3ea: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 while (USB1_ENDPTPRIME) ; - 2b306: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2b30a: 2b00 cmp r3, #0 - 2b30c: d1fb bne.n 2b306 + 2b3ee: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2b3f2: 2b00 cmp r3, #0 + 2b3f4: d1fb bne.n 2b3ee setupstatus = USB1_ENDPTSETUPSTAT; // page 3175 - 2b30e: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac + 2b3f6: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac while (setupstatus) { - 2b312: 2b00 cmp r3, #0 - 2b314: f47f ae5a bne.w 2afcc - 2b318: e6b5 b.n 2b086 + 2b3fa: 2b00 cmp r3, #0 + 2b3fc: f47f ae5a bne.w 2b0b4 + 2b400: e6b5 b.n 2b16e usb_configuration = setup.wValue; - 2b31a: f3c2 4207 ubfx r2, r2, #16, #8 - 2b31e: 9300 str r3, [sp, #0] - 2b320: f888 2000 strb.w r2, [r8] + 2b402: f3c2 4207 ubfx r2, r2, #16, #8 + 2b406: 9300 str r3, [sp, #0] + 2b408: f888 2000 strb.w r2, [r8] USB1_ENDPTCTRL2 = ENDPOINT2_CONFIG; - 2b324: f04f 12cc mov.w r2, #13369548 ; 0xcc00cc - 2b328: f8c4 21c8 str.w r2, [r4, #456] ; 0x1c8 + 2b40c: f04f 12cc mov.w r2, #13369548 ; 0xcc00cc + 2b410: f8c4 21c8 str.w r2, [r4, #456] ; 0x1c8 USB1_ENDPTCTRL3 = ENDPOINT3_CONFIG; - 2b32c: f04f 12c8 mov.w r2, #13107400 ; 0xc800c8 - 2b330: f8c4 21cc str.w r2, [r4, #460] ; 0x1cc + 2b414: f04f 12c8 mov.w r2, #13107400 ; 0xc800c8 + 2b418: f8c4 21cc str.w r2, [r4, #460] ; 0x1cc usb_seremu_configure(); - 2b334: f000 ff3e bl 2c1b4 + 2b41c: f000 ff3e bl 2c29c usb_midi_configure(); - 2b338: f000 fb08 bl 2b94c + 2b420: f000 fb08 bl 2ba34 endpoint0_transfer_ack.next = 1; - 2b33c: 2201 movs r2, #1 + 2b424: 2201 movs r2, #1 endpoint_queue_head[1].status = 0; - 2b33e: 9b00 ldr r3, [sp, #0] + 2b426: 9b00 ldr r3, [sp, #0] endpoint0_transfer_ack.next = 1; - 2b340: 603a str r2, [r7, #0] + 2b428: 603a str r2, [r7, #0] endpoint0_transfer_ack.status = (1<<7) | (notify ? (1 << 15) : 0); - 2b342: 2280 movs r2, #128 ; 0x80 + 2b42a: 2280 movs r2, #128 ; 0x80 endpoint_queue_head[1].next = (uint32_t)&endpoint0_transfer_ack; - 2b344: 64af str r7, [r5, #72] ; 0x48 + 2b42c: 64af str r7, [r5, #72] ; 0x48 endpoint0_transfer_ack.status = (1<<7) | (notify ? (1 << 15) : 0); - 2b346: 607a str r2, [r7, #4] + 2b42e: 607a str r2, [r7, #4] USB1_ENDPTCOMPLETE = (1<<0) | (1<<16); - 2b348: f04f 1201 mov.w r2, #65537 ; 0x10001 + 2b430: f04f 1201 mov.w r2, #65537 ; 0x10001 endpoint_queue_head[1].status = 0; - 2b34c: 64eb str r3, [r5, #76] ; 0x4c + 2b434: 64eb str r3, [r5, #76] ; 0x4c endpoint0_transfer_ack.pointer0 = 0; - 2b34e: 60bb str r3, [r7, #8] + 2b436: 60bb str r3, [r7, #8] USB1_ENDPTCOMPLETE = (1<<0) | (1<<16); - 2b350: f8c4 21bc str.w r2, [r4, #444] ; 0x1bc + 2b438: f8c4 21bc str.w r2, [r4, #444] ; 0x1bc USB1_ENDPTPRIME |= (1<<16); - 2b354: f8d4 21b0 ldr.w r2, [r4, #432] ; 0x1b0 - 2b358: f442 3280 orr.w r2, r2, #65536 ; 0x10000 - 2b35c: f8c4 21b0 str.w r2, [r4, #432] ; 0x1b0 + 2b43c: f8d4 21b0 ldr.w r2, [r4, #432] ; 0x1b0 + 2b440: f442 3280 orr.w r2, r2, #65536 ; 0x10000 + 2b444: f8c4 21b0 str.w r2, [r4, #432] ; 0x1b0 endpoint0_notify_mask = (notify ? (1 << 16) : 0); - 2b360: f8cb 3000 str.w r3, [fp] + 2b448: f8cb 3000 str.w r3, [fp] while (USB1_ENDPTPRIME) ; - 2b364: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2b368: 2b00 cmp r3, #0 - 2b36a: d1fb bne.n 2b364 + 2b44c: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2b450: 2b00 cmp r3, #0 + 2b452: d1fb bne.n 2b44c setupstatus = USB1_ENDPTSETUPSTAT; // page 3175 - 2b36c: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac + 2b454: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac while (setupstatus) { - 2b370: 2b00 cmp r3, #0 - 2b372: f47f ae2b bne.w 2afcc - 2b376: e686 b.n 2b086 + 2b458: 2b00 cmp r3, #0 + 2b45a: f47f ae2b bne.w 2b0b4 + 2b45e: e686 b.n 2b16e endpoint_queue_head[1].status = 0; - 2b378: e9c5 7312 strd r7, r3, [r5, #72] ; 0x48 + 2b460: e9c5 7312 strd r7, r3, [r5, #72] ; 0x48 endpoint0_transfer_ack.pointer0 = 0; - 2b37c: 60bb str r3, [r7, #8] + 2b464: 60bb str r3, [r7, #8] endpoint0_transfer_ack.next = 1; - 2b37e: 2301 movs r3, #1 - 2b380: 603b str r3, [r7, #0] + 2b466: 2301 movs r3, #1 + 2b468: 603b str r3, [r7, #0] endpoint0_transfer_ack.status = (1<<7) | (notify ? (1 << 15) : 0); - 2b382: 2380 movs r3, #128 ; 0x80 - 2b384: 607b str r3, [r7, #4] + 2b46a: 2380 movs r3, #128 ; 0x80 + 2b46c: 607b str r3, [r7, #4] USB1_ENDPTCOMPLETE = (1<<0) | (1<<16); - 2b386: f04f 1301 mov.w r3, #65537 ; 0x10001 - 2b38a: f8c4 31bc str.w r3, [r4, #444] ; 0x1bc + 2b46e: f04f 1301 mov.w r3, #65537 ; 0x10001 + 2b472: f8c4 31bc str.w r3, [r4, #444] ; 0x1bc USB1_ENDPTPRIME |= (1<<16); - 2b38e: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2b392: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 2b396: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 + 2b476: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2b47a: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 2b47e: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 while (USB1_ENDPTPRIME) ; - 2b39a: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2b39e: 2b00 cmp r3, #0 - 2b3a0: d1fb bne.n 2b39a + 2b482: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2b486: 2b00 cmp r3, #0 + 2b488: d1fb bne.n 2b482 USB1_DEVICEADDR = USB_DEVICEADDR_USBADR(setup.wValue) | USB_DEVICEADDR_USBADRA; - 2b3a2: 0c13 lsrs r3, r2, #16 - 2b3a4: 065b lsls r3, r3, #25 - 2b3a6: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 - 2b3aa: f8c4 3154 str.w r3, [r4, #340] ; 0x154 + 2b48a: 0c13 lsrs r3, r2, #16 + 2b48c: 065b lsls r3, r3, #25 + 2b48e: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 2b492: f8c4 3154 str.w r3, [r4, #340] ; 0x154 setupstatus = USB1_ENDPTSETUPSTAT; // page 3175 - 2b3ae: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac + 2b496: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac while (setupstatus) { - 2b3b2: 2b00 cmp r3, #0 - 2b3b4: f47f ae0a bne.w 2afcc - 2b3b8: e665 b.n 2b086 + 2b49a: 2b00 cmp r3, #0 + 2b49c: f47f ae0a bne.w 2b0b4 + 2b4a0: e665 b.n 2b16e reply_buffer[0] = 0; - 2b3ba: 485e ldr r0, [pc, #376] ; (2b534 ) + 2b4a2: 485e ldr r0, [pc, #376] ; (2b61c ) endpoint0_transmit(reply_buffer, 2, 0); - 2b3bc: 2102 movs r1, #2 + 2b4a4: 2102 movs r1, #2 reply_buffer[0] = 0; - 2b3be: 8003 strh r3, [r0, #0] + 2b4a6: 8003 strh r3, [r0, #0] endpoint0_transmit(reply_buffer, 2, 0); - 2b3c0: f7ff fd6e bl 2aea0 + 2b4a8: f7ff fd6e bl 2af88 setupstatus = USB1_ENDPTSETUPSTAT; // page 3175 - 2b3c4: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac + 2b4ac: f8d4 31ac ldr.w r3, [r4, #428] ; 0x1ac while (setupstatus) { - 2b3c8: 2b00 cmp r3, #0 - 2b3ca: f47f adff bne.w 2afcc - 2b3ce: e65a b.n 2b086 + 2b4b0: 2b00 cmp r3, #0 + 2b4b2: f47f adff bne.w 2b0b4 + 2b4b6: e65a b.n 2b16e if ((dir && (ctrl & USB_ENDPTCTRL_TXS)) || (!dir && (ctrl & USB_ENDPTCTRL_RXS))) { - 2b3d0: 07cb lsls r3, r1, #31 - 2b3d2: f57f aeee bpl.w 2b1b2 - 2b3d6: e6ea b.n 2b1ae + 2b4b8: 07cb lsls r3, r1, #31 + 2b4ba: f57f aeee bpl.w 2b29a + 2b4be: e6ea b.n 2b296 setup.bothwords = endpoint0_setupdata.bothwords; - 2b3d8: 4b57 ldr r3, [pc, #348] ; (2b538 ) + 2b4c0: 4b57 ldr r3, [pc, #348] ; (2b620 ) endpoint0_notify_mask = 0; - 2b3da: 2100 movs r1, #0 - 2b3dc: 6011 str r1, [r2, #0] + 2b4c2: 2100 movs r1, #0 + 2b4c4: 6011 str r1, [r2, #0] setup.bothwords = endpoint0_setupdata.bothwords; - 2b3de: e9d3 2100 ldrd r2, r1, [r3] + 2b4c6: e9d3 2100 ldrd r2, r1, [r3] if (setup.word1 == 0x03000921 && setup.word2 == ((4<<16)|SEREMU_INTERFACE)) { - 2b3e2: 4b56 ldr r3, [pc, #344] ; (2b53c ) - 2b3e4: 429a cmp r2, r3 - 2b3e6: f47f aea3 bne.w 2b130 - 2b3ea: 4b55 ldr r3, [pc, #340] ; (2b540 ) - 2b3ec: 4299 cmp r1, r3 - 2b3ee: f47f ae9f bne.w 2b130 + 2b4ca: 4b56 ldr r3, [pc, #344] ; (2b624 ) + 2b4cc: 429a cmp r2, r3 + 2b4ce: f47f aea3 bne.w 2b218 + 2b4d2: 4b55 ldr r3, [pc, #340] ; (2b628 ) + 2b4d4: 4299 cmp r1, r3 + 2b4d6: f47f ae9f bne.w 2b218 if (endpoint0_buffer[0] == 0xA9 && endpoint0_buffer[1] == 0x45 - 2b3f2: 4b54 ldr r3, [pc, #336] ; (2b544 ) - 2b3f4: 781a ldrb r2, [r3, #0] - 2b3f6: 2aa9 cmp r2, #169 ; 0xa9 - 2b3f8: d07c beq.n 2b4f4 + 2b4da: 4b54 ldr r3, [pc, #336] ; (2b62c ) + 2b4dc: 781a ldrb r2, [r3, #0] + 2b4de: 2aa9 cmp r2, #169 ; 0xa9 + 2b4e0: d07c beq.n 2b5dc usb_seremu_online = 1; - 2b3fa: 4b53 ldr r3, [pc, #332] ; (2b548 ) - 2b3fc: 2201 movs r2, #1 - 2b3fe: 701a strb r2, [r3, #0] - 2b400: e696 b.n 2b130 + 2b4e2: 4b53 ldr r3, [pc, #332] ; (2b630 ) + 2b4e4: 2201 movs r2, #1 + 2b4e6: 701a strb r2, [r3, #0] + 2b4e8: e696 b.n 2b218 if (datalen > setup.wLength) datalen = setup.wLength; - 2b402: 0c00 lsrs r0, r0, #16 + 2b4ea: 0c00 lsrs r0, r0, #16 datalen = *(list->addr); - 2b404: 780a ldrb r2, [r1, #0] - 2b406: 4282 cmp r2, r0 - 2b408: bf28 it cs - 2b40a: 4602 movcs r2, r0 + 2b4ec: 780a ldrb r2, [r1, #0] + 2b4ee: 4282 cmp r2, r0 + 2b4f0: bf28 it cs + 2b4f2: 4602 movcs r2, r0 } else if (setup.wValue == 0x700) { - 2b40c: f5be 6fe0 cmp.w lr, #1792 ; 0x700 - 2b410: d153 bne.n 2b4ba + 2b4f4: f5be 6fe0 cmp.w lr, #1792 ; 0x700 + 2b4f8: d153 bne.n 2b5a2 if (usb_high_speed) src = usb_config_descriptor_12; - 2b412: 4b44 ldr r3, [pc, #272] ; (2b524 ) - 2b414: 4844 ldr r0, [pc, #272] ; (2b528 ) - 2b416: f893 c000 ldrb.w ip, [r3] - 2b41a: 4944 ldr r1, [pc, #272] ; (2b52c ) + 2b4fa: 4b44 ldr r3, [pc, #272] ; (2b60c ) + 2b4fc: 4844 ldr r0, [pc, #272] ; (2b610 ) + 2b4fe: f893 c000 ldrb.w ip, [r3] + 2b502: 4944 ldr r1, [pc, #272] ; (2b614 ) memcpy(usb_descriptor_buffer, src, datalen); - 2b41c: 4b44 ldr r3, [pc, #272] ; (2b530 ) - 2b41e: f1bc 0f00 cmp.w ip, #0 - 2b422: bf18 it ne - 2b424: 4601 movne r1, r0 - 2b426: 9200 str r2, [sp, #0] - 2b428: 4618 mov r0, r3 - 2b42a: f7ff f96d bl 2a708 + 2b504: 4b44 ldr r3, [pc, #272] ; (2b618 ) + 2b506: f1bc 0f00 cmp.w ip, #0 + 2b50a: bf18 it ne + 2b50c: 4601 movne r1, r0 + 2b50e: 9200 str r2, [sp, #0] + 2b510: 4618 mov r0, r3 + 2b512: f7ff f96d bl 2a7f0 usb_descriptor_buffer[1] = 7; - 2b42e: 2107 movs r1, #7 + 2b516: 2107 movs r1, #7 memcpy(usb_descriptor_buffer, src, datalen); - 2b430: 4603 mov r3, r0 + 2b518: 4603 mov r3, r0 usb_descriptor_buffer[1] = 7; - 2b432: 7041 strb r1, [r0, #1] - 2b434: 9a00 ldr r2, [sp, #0] - 2b436: e048 b.n 2b4ca + 2b51a: 7041 strb r1, [r0, #1] + 2b51c: 9a00 ldr r2, [sp, #0] + 2b51e: e048 b.n 2b5b2 endpoint0_setupdata.bothwords = setup.bothwords; - 2b438: f8df c0fc ldr.w ip, [pc, #252] ; 2b538 - 2b43c: e9cc 2000 strd r2, r0, [ip] + 2b520: f8df c0fc ldr.w ip, [pc, #252] ; 2b620 + 2b524: e9cc 2000 strd r2, r0, [ip] endpoint0_buffer[0] = 0xE9; - 2b440: 4840 ldr r0, [pc, #256] ; (2b544 ) - 2b442: 22e9 movs r2, #233 ; 0xe9 - 2b444: 7002 strb r2, [r0, #0] + 2b528: 4840 ldr r0, [pc, #256] ; (2b62c ) + 2b52a: 22e9 movs r2, #233 ; 0xe9 + 2b52c: 7002 strb r2, [r0, #0] if (len > 0) { - 2b446: b1e1 cbz r1, 2b482 + 2b52e: b1e1 cbz r1, 2b56a endpoint_queue_head[0].status = 0; - 2b448: 60eb str r3, [r5, #12] + 2b530: 60eb str r3, [r5, #12] endpoint0_transfer_data.status = (len << 16) | (1<<7); - 2b44a: 040b lsls r3, r1, #16 + 2b532: 040b lsls r3, r1, #16 endpoint0_transfer_data.next = 1; - 2b44c: 4a3f ldr r2, [pc, #252] ; (2b54c ) + 2b534: 4a3f ldr r2, [pc, #252] ; (2b634 ) endpoint0_transfer_data.status = (len << 16) | (1<<7); - 2b44e: f043 0380 orr.w r3, r3, #128 ; 0x80 + 2b536: f043 0380 orr.w r3, r3, #128 ; 0x80 endpoint_queue_head[0].next = (uint32_t)&endpoint0_transfer_data; - 2b452: 60aa str r2, [r5, #8] + 2b53a: 60aa str r2, [r5, #8] endpoint0_transfer_data.status = (len << 16) | (1<<7); - 2b454: 6053 str r3, [r2, #4] + 2b53c: 6053 str r3, [r2, #4] endpoint0_transfer_data.pointer2 = addr + 8192; - 2b456: 4b3e ldr r3, [pc, #248] ; (2b550 ) - 2b458: 6113 str r3, [r2, #16] + 2b53e: 4b3e ldr r3, [pc, #248] ; (2b638 ) + 2b540: 6113 str r3, [r2, #16] endpoint0_transfer_data.next = 1; - 2b45a: 2301 movs r3, #1 + 2b542: 2301 movs r3, #1 endpoint0_transfer_data.pointer1 = addr + 4096; - 2b45c: e9c2 0a02 strd r0, sl, [r2, #8] + 2b544: e9c2 0a02 strd r0, sl, [r2, #8] endpoint0_transfer_data.next = 1; - 2b460: 6013 str r3, [r2, #0] + 2b548: 6013 str r3, [r2, #0] USB1_ENDPTPRIME |= (1<<0); - 2b462: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2b466: f043 0301 orr.w r3, r3, #1 - 2b46a: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 + 2b54a: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2b54e: f043 0301 orr.w r3, r3, #1 + 2b552: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 endpoint0_transfer_data.pointer3 = addr + 12288; - 2b46e: f500 5340 add.w r3, r0, #12288 ; 0x3000 + 2b556: f500 5340 add.w r3, r0, #12288 ; 0x3000 endpoint0_transfer_data.pointer4 = addr + 16384; - 2b472: f500 4080 add.w r0, r0, #16384 ; 0x4000 + 2b55a: f500 4080 add.w r0, r0, #16384 ; 0x4000 endpoint0_transfer_data.pointer3 = addr + 12288; - 2b476: 6153 str r3, [r2, #20] + 2b55e: 6153 str r3, [r2, #20] endpoint0_transfer_data.pointer4 = addr + 16384; - 2b478: 6190 str r0, [r2, #24] + 2b560: 6190 str r0, [r2, #24] while (USB1_ENDPTPRIME) ; - 2b47a: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2b47e: 2b00 cmp r3, #0 - 2b480: d1fb bne.n 2b47a + 2b562: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2b566: 2b00 cmp r3, #0 + 2b568: d1fb bne.n 2b562 endpoint0_transfer_ack.pointer0 = 0; - 2b482: 2300 movs r3, #0 + 2b56a: 2300 movs r3, #0 endpoint_queue_head[1].next = (uint32_t)&endpoint0_transfer_ack; - 2b484: 64af str r7, [r5, #72] ; 0x48 + 2b56c: 64af str r7, [r5, #72] ; 0x48 endpoint_queue_head[1].status = 0; - 2b486: 64eb str r3, [r5, #76] ; 0x4c + 2b56e: 64eb str r3, [r5, #76] ; 0x4c endpoint0_transfer_ack.pointer0 = 0; - 2b488: 60bb str r3, [r7, #8] + 2b570: 60bb str r3, [r7, #8] endpoint0_transfer_ack.next = 1; - 2b48a: 2301 movs r3, #1 - 2b48c: 603b str r3, [r7, #0] + 2b572: 2301 movs r3, #1 + 2b574: 603b str r3, [r7, #0] endpoint0_transfer_ack.status = (1<<7) | (notify ? (1 << 15) : 0); - 2b48e: f248 0380 movw r3, #32896 ; 0x8080 - 2b492: 607b str r3, [r7, #4] + 2b576: f248 0380 movw r3, #32896 ; 0x8080 + 2b57a: 607b str r3, [r7, #4] USB1_ENDPTCOMPLETE = (1<<0) | (1<<16); - 2b494: f04f 1301 mov.w r3, #65537 ; 0x10001 - 2b498: f8c4 31bc str.w r3, [r4, #444] ; 0x1bc + 2b57c: f04f 1301 mov.w r3, #65537 ; 0x10001 + 2b580: f8c4 31bc str.w r3, [r4, #444] ; 0x1bc USB1_ENDPTPRIME |= (1<<16); - 2b49c: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2b4a0: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 2b4a4: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 + 2b584: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2b588: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 2b58c: f8c4 31b0 str.w r3, [r4, #432] ; 0x1b0 endpoint0_notify_mask = (notify ? (1 << 16) : 0); - 2b4a8: f44f 3380 mov.w r3, #65536 ; 0x10000 - 2b4ac: f8cb 3000 str.w r3, [fp] + 2b590: f44f 3380 mov.w r3, #65536 ; 0x10000 + 2b594: f8cb 3000 str.w r3, [fp] while (USB1_ENDPTPRIME) ; - 2b4b0: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 - 2b4b4: 2b00 cmp r3, #0 - 2b4b6: d1fb bne.n 2b4b0 - 2b4b8: e5e1 b.n 2b07e + 2b598: f8d4 31b0 ldr.w r3, [r4, #432] ; 0x1b0 + 2b59c: 2b00 cmp r3, #0 + 2b59e: d1fb bne.n 2b598 + 2b5a0: e5e1 b.n 2b166 memcpy(usb_descriptor_buffer, list->addr, datalen); - 2b4ba: 4b1d ldr r3, [pc, #116] ; (2b530 ) - 2b4bc: 4618 mov r0, r3 - 2b4be: e9cd 2300 strd r2, r3, [sp] - 2b4c2: f7ff f921 bl 2a708 - 2b4c6: e9dd 2300 ldrd r2, r3, [sp] + 2b5a2: 4b1d ldr r3, [pc, #116] ; (2b618 ) + 2b5a4: 4618 mov r0, r3 + 2b5a6: e9cd 2300 strd r2, r3, [sp] + 2b5aa: f7ff f921 bl 2a7f0 + 2b5ae: e9dd 2300 ldrd r2, r3, [sp] uint32_t location = (uint32_t)addr & 0xFFFFFFE0; - 2b4ca: f023 011f bic.w r1, r3, #31 + 2b5b2: f023 011f bic.w r1, r3, #31 uint32_t end_addr = (uint32_t)addr + size; - 2b4ce: 4413 add r3, r2 + 2b5b6: 4413 add r3, r2 asm("dsb"); - 2b4d0: f3bf 8f4f dsb sy + 2b5b8: f3bf 8f4f dsb sy SCB_CACHE_DCCIMVAC = location; - 2b4d4: f04f 20e0 mov.w r0, #3758153728 ; 0xe000e000 - 2b4d8: f8c0 1f70 str.w r1, [r0, #3952] ; 0xf70 + 2b5bc: f04f 20e0 mov.w r0, #3758153728 ; 0xe000e000 + 2b5c0: f8c0 1f70 str.w r1, [r0, #3952] ; 0xf70 location += 32; - 2b4dc: 3120 adds r1, #32 + 2b5c4: 3120 adds r1, #32 } while (location < end_addr); - 2b4de: 428b cmp r3, r1 - 2b4e0: d8fa bhi.n 2b4d8 + 2b5c6: 428b cmp r3, r1 + 2b5c8: d8fa bhi.n 2b5c0 asm("dsb"); - 2b4e2: f3bf 8f4f dsb sy + 2b5ca: f3bf 8f4f dsb sy asm("isb"); - 2b4e6: f3bf 8f6f isb sy + 2b5ce: f3bf 8f6f isb sy endpoint0_transmit(usb_descriptor_buffer, datalen, 0); - 2b4ea: 4811 ldr r0, [pc, #68] ; (2b530 ) - 2b4ec: 4611 mov r1, r2 - 2b4ee: f7ff fcd7 bl 2aea0 + 2b5d2: 4811 ldr r0, [pc, #68] ; (2b618 ) + 2b5d4: 4611 mov r1, r2 + 2b5d6: f7ff fcd7 bl 2af88 return; - 2b4f2: e5c4 b.n 2b07e + 2b5da: e5c4 b.n 2b166 if (endpoint0_buffer[0] == 0xA9 && endpoint0_buffer[1] == 0x45 - 2b4f4: 785a ldrb r2, [r3, #1] - 2b4f6: 2a45 cmp r2, #69 ; 0x45 - 2b4f8: f47f af7f bne.w 2b3fa + 2b5dc: 785a ldrb r2, [r3, #1] + 2b5de: 2a45 cmp r2, #69 ; 0x45 + 2b5e0: f47f af7f bne.w 2b4e2 && endpoint0_buffer[2] == 0xC2 && endpoint0_buffer[3] == 0x6B) { - 2b4fc: 789a ldrb r2, [r3, #2] - 2b4fe: 2ac2 cmp r2, #194 ; 0xc2 - 2b500: f47f af7b bne.w 2b3fa - 2b504: 78db ldrb r3, [r3, #3] - 2b506: 2b6b cmp r3, #107 ; 0x6b - 2b508: f47f af77 bne.w 2b3fa + 2b5e4: 789a ldrb r2, [r3, #2] + 2b5e6: 2ac2 cmp r2, #194 ; 0xc2 + 2b5e8: f47f af7b bne.w 2b4e2 + 2b5ec: 78db ldrb r3, [r3, #3] + 2b5ee: 2b6b cmp r3, #107 ; 0x6b + 2b5f0: f47f af77 bne.w 2b4e2 usb_start_sof_interrupts(NUM_INTERFACE); - 2b50c: 2002 movs r0, #2 - 2b50e: f7ff fd13 bl 2af38 + 2b5f4: 2002 movs r0, #2 + 2b5f6: f7ff fd13 bl 2b020 usb_reboot_timer = 80; // TODO: 10 if only 12 Mbit/sec - 2b512: 4b10 ldr r3, [pc, #64] ; (2b554 ) - 2b514: 2250 movs r2, #80 ; 0x50 - 2b516: 701a strb r2, [r3, #0] - 2b518: e60a b.n 2b130 + 2b5fa: 4b10 ldr r3, [pc, #64] ; (2b63c ) + 2b5fc: 2250 movs r2, #80 ; 0x50 + 2b5fe: 701a strb r2, [r3, #0] + 2b600: e60a b.n 2b218 usb_stop_sof_interrupts(NUM_INTERFACE); - 2b51a: 2002 movs r0, #2 - 2b51c: f7ff fd28 bl 2af70 + 2b602: 2002 movs r0, #2 + 2b604: f7ff fd28 bl 2b058 _reboot_Teensyduino_(); - 2b520: f008 fca2 bl 33e68 <___reboot_Teensyduino__veneer> - 2b524: 2000bc8f .word 0x2000bc8f - 2b528: 6001e298 .word 0x6001e298 - 2b52c: 6001e30c .word 0x6001e30c - 2b530: 20200000 .word 0x20200000 - 2b534: 2000ba64 .word 0x2000ba64 - 2b538: 2000af28 .word 0x2000af28 - 2b53c: 03000921 .word 0x03000921 - 2b540: 00040001 .word 0x00040001 - 2b544: 2000ba38 .word 0x2000ba38 - 2b548: 2000bc96 .word 0x2000bc96 - 2b54c: 2000a340 .word 0x2000a340 - 2b550: 2000da38 .word 0x2000da38 - 2b554: 2000bc95 .word 0x2000bc95 - -0002b558 : + 2b608: f008 fcae bl 33f68 <___reboot_Teensyduino__veneer> + 2b60c: 2000bcaf .word 0x2000bcaf + 2b610: 6001e298 .word 0x6001e298 + 2b614: 6001e30c .word 0x6001e30c + 2b618: 20200000 .word 0x20200000 + 2b61c: 2000ba84 .word 0x2000ba84 + 2b620: 2000af48 .word 0x2000af48 + 2b624: 03000921 .word 0x03000921 + 2b628: 00040001 .word 0x00040001 + 2b62c: 2000ba58 .word 0x2000ba58 + 2b630: 2000bcb6 .word 0x2000bcb6 + 2b634: 2000a360 .word 0x2000a360 + 2b638: 2000da58 .word 0x2000da58 + 2b63c: 2000bcb5 .word 0x2000bcb5 + +0002b640 : { - 2b558: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 2b55c: 461f mov r7, r3 + 2b640: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 2b644: 461f mov r7, r3 if (ep < 2 || ep > NUM_ENDPOINTS) return; - 2b55e: 1e83 subs r3, r0, #2 - 2b560: 2b02 cmp r3, #2 - 2b562: d901 bls.n 2b568 + 2b646: 1e83 subs r3, r0, #2 + 2b648: 2b02 cmp r3, #2 + 2b64a: d901 bls.n 2b650 } - 2b564: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 2b64c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} usb_endpoint_config(endpoint_queue_head + ep * 2, config, cb); - 2b568: f8df 904c ldr.w r9, [pc, #76] ; 2b5b8 - 2b56c: 4615 mov r5, r2 - 2b56e: 460c mov r4, r1 + 2b650: f8df 904c ldr.w r9, [pc, #76] ; 2b6a0 + 2b654: 4615 mov r5, r2 + 2b656: 460c mov r4, r1 memset(qh, 0, sizeof(endpoint_t)); - 2b570: 223c movs r2, #60 ; 0x3c + 2b658: 223c movs r2, #60 ; 0x3c usb_endpoint_config(endpoint_queue_head + ep * 2, config, cb); - 2b572: eb09 18c0 add.w r8, r9, r0, lsl #7 + 2b65a: eb09 18c0 add.w r8, r9, r0, lsl #7 memset(qh, 0, sizeof(endpoint_t)); - 2b576: 4606 mov r6, r0 + 2b65e: 4606 mov r6, r0 usb_endpoint_config(endpoint_queue_head + ep * 2, config, cb); - 2b578: ea4f 1ac0 mov.w sl, r0, lsl #7 + 2b660: ea4f 1ac0 mov.w sl, r0, lsl #7 memset(qh, 0, sizeof(endpoint_t)); - 2b57c: 2100 movs r1, #0 - 2b57e: f108 0004 add.w r0, r8, #4 + 2b664: 2100 movs r1, #0 + 2b666: f108 0004 add.w r0, r8, #4 uint32_t config = (packet_size << 16) | (do_zlp ? 0 : (1 << 29)); - 2b582: 0424 lsls r4, r4, #16 + 2b66a: 0424 lsls r4, r4, #16 memset(qh, 0, sizeof(endpoint_t)); - 2b584: f002 ff82 bl 2e48c + 2b66c: f002 ff82 bl 2e574 uint32_t config = (packet_size << 16) | (do_zlp ? 0 : (1 << 29)); - 2b588: fab5 f285 clz r2, r5 + 2b670: fab5 f285 clz r2, r5 qh->next = 1; // Terminate bit = 1 - 2b58c: 2301 movs r3, #1 + 2b674: 2301 movs r3, #1 uint32_t config = (packet_size << 16) | (do_zlp ? 0 : (1 << 29)); - 2b58e: 0952 lsrs r2, r2, #5 - 2b590: ea44 7442 orr.w r4, r4, r2, lsl #29 + 2b676: 0952 lsrs r2, r2, #5 + 2b678: ea44 7442 orr.w r4, r4, r2, lsl #29 qh->config = config; - 2b594: f849 400a str.w r4, [r9, sl] + 2b67c: f849 400a str.w r4, [r9, sl] qh->callback_function = callback; - 2b598: f8c8 7038 str.w r7, [r8, #56] ; 0x38 + 2b680: f8c8 7038 str.w r7, [r8, #56] ; 0x38 qh->next = 1; // Terminate bit = 1 - 2b59c: f8c8 3008 str.w r3, [r8, #8] + 2b684: f8c8 3008 str.w r3, [r8, #8] if (cb) endpointN_notify_mask |= (1 << ep); - 2b5a0: 2f00 cmp r7, #0 - 2b5a2: d0df beq.n 2b564 - 2b5a4: 4a03 ldr r2, [pc, #12] ; (2b5b4 ) - 2b5a6: 40b3 lsls r3, r6 - 2b5a8: 6811 ldr r1, [r2, #0] - 2b5aa: 430b orrs r3, r1 - 2b5ac: 6013 str r3, [r2, #0] -} - 2b5ae: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 2b5b2: bf00 nop - 2b5b4: 2000ba44 .word 0x2000ba44 - 2b5b8: 20000000 .word 0x20000000 - -0002b5bc : + 2b688: 2f00 cmp r7, #0 + 2b68a: d0df beq.n 2b64c + 2b68c: 4a03 ldr r2, [pc, #12] ; (2b69c ) + 2b68e: 40b3 lsls r3, r6 + 2b690: 6811 ldr r1, [r2, #0] + 2b692: 430b orrs r3, r1 + 2b694: 6013 str r3, [r2, #0] +} + 2b696: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 2b69a: bf00 nop + 2b69c: 2000ba64 .word 0x2000ba64 + 2b6a0: 20000000 .word 0x20000000 + +0002b6a4 : { - 2b5bc: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 2b5c0: 460d mov r5, r1 + 2b6a4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 2b6a8: 460d mov r5, r1 if (ep < 2 || ep > NUM_ENDPOINTS) return; - 2b5c2: 1e81 subs r1, r0, #2 - 2b5c4: 2902 cmp r1, #2 - 2b5c6: d901 bls.n 2b5cc + 2b6aa: 1e81 subs r1, r0, #2 + 2b6ac: 2902 cmp r1, #2 + 2b6ae: d901 bls.n 2b6b4 } - 2b5c8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 2b6b0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} usb_endpoint_config(endpoint_queue_head + ep * 2 + 1, config, cb); - 2b5cc: 01c7 lsls r7, r0, #7 - 2b5ce: f8df 904c ldr.w r9, [pc, #76] ; 2b61c - 2b5d2: 4692 mov sl, r2 - 2b5d4: 4604 mov r4, r0 - 2b5d6: 3740 adds r7, #64 ; 0x40 + 2b6b4: 01c7 lsls r7, r0, #7 + 2b6b6: f8df 904c ldr.w r9, [pc, #76] ; 2b704 + 2b6ba: 4692 mov sl, r2 + 2b6bc: 4604 mov r4, r0 + 2b6be: 3740 adds r7, #64 ; 0x40 memset(qh, 0, sizeof(endpoint_t)); - 2b5d8: 223c movs r2, #60 ; 0x3c - 2b5da: 2100 movs r1, #0 - 2b5dc: 461e mov r6, r3 + 2b6c0: 223c movs r2, #60 ; 0x3c + 2b6c2: 2100 movs r1, #0 + 2b6c4: 461e mov r6, r3 usb_endpoint_config(endpoint_queue_head + ep * 2 + 1, config, cb); - 2b5de: eb09 0807 add.w r8, r9, r7 + 2b6c6: eb09 0807 add.w r8, r9, r7 uint32_t config = (packet_size << 16) | (do_zlp ? 0 : (1 << 29)); - 2b5e2: 042d lsls r5, r5, #16 + 2b6ca: 042d lsls r5, r5, #16 memset(qh, 0, sizeof(endpoint_t)); - 2b5e4: f108 0004 add.w r0, r8, #4 - 2b5e8: f002 ff50 bl 2e48c + 2b6cc: f108 0004 add.w r0, r8, #4 + 2b6d0: f002 ff50 bl 2e574 uint32_t config = (packet_size << 16) | (do_zlp ? 0 : (1 << 29)); - 2b5ec: faba f28a clz r2, sl - 2b5f0: 0952 lsrs r2, r2, #5 - 2b5f2: ea45 7242 orr.w r2, r5, r2, lsl #29 + 2b6d4: faba f28a clz r2, sl + 2b6d8: 0952 lsrs r2, r2, #5 + 2b6da: ea45 7242 orr.w r2, r5, r2, lsl #29 qh->config = config; - 2b5f6: f849 2007 str.w r2, [r9, r7] + 2b6de: f849 2007 str.w r2, [r9, r7] qh->next = 1; // Terminate bit = 1 - 2b5fa: 2201 movs r2, #1 + 2b6e2: 2201 movs r2, #1 qh->callback_function = callback; - 2b5fc: f8c8 6038 str.w r6, [r8, #56] ; 0x38 + 2b6e4: f8c8 6038 str.w r6, [r8, #56] ; 0x38 qh->next = 1; // Terminate bit = 1 - 2b600: f8c8 2008 str.w r2, [r8, #8] + 2b6e8: f8c8 2008 str.w r2, [r8, #8] if (cb) endpointN_notify_mask |= (1 << (ep + 16)); - 2b604: 2e00 cmp r6, #0 - 2b606: d0df beq.n 2b5c8 - 2b608: 4b03 ldr r3, [pc, #12] ; (2b618 ) - 2b60a: 3410 adds r4, #16 - 2b60c: 6819 ldr r1, [r3, #0] - 2b60e: 40a2 lsls r2, r4 - 2b610: 430a orrs r2, r1 - 2b612: 601a str r2, [r3, #0] -} - 2b614: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 2b618: 2000ba44 .word 0x2000ba44 - 2b61c: 20000000 .word 0x20000000 - -0002b620 : + 2b6ec: 2e00 cmp r6, #0 + 2b6ee: d0df beq.n 2b6b0 + 2b6f0: 4b03 ldr r3, [pc, #12] ; (2b700 ) + 2b6f2: 3410 adds r4, #16 + 2b6f4: 6819 ldr r1, [r3, #0] + 2b6f6: 40a2 lsls r2, r4 + 2b6f8: 430a orrs r2, r1 + 2b6fa: 601a str r2, [r3, #0] +} + 2b6fc: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 2b700: 2000ba64 .word 0x2000ba64 + 2b704: 20000000 .word 0x20000000 + +0002b708 : transfer->status = (len << 16) | (1<<7); - 2b620: 0412 lsls r2, r2, #16 + 2b708: 0412 lsls r2, r2, #16 transfer->pointer0 = addr; - 2b622: 6081 str r1, [r0, #8] + 2b70a: 6081 str r1, [r0, #8] transfer->callback_param = param; - 2b624: 61c3 str r3, [r0, #28] + 2b70c: 61c3 str r3, [r0, #28] transfer->pointer3 = addr + 12288; - 2b626: f501 5340 add.w r3, r1, #12288 ; 0x3000 + 2b70e: f501 5340 add.w r3, r1, #12288 ; 0x3000 transfer->status = (len << 16) | (1<<7); - 2b62a: f042 0280 orr.w r2, r2, #128 ; 0x80 + 2b712: f042 0280 orr.w r2, r2, #128 ; 0x80 { - 2b62e: b410 push {r4} + 2b716: b410 push {r4} transfer->next = 1; - 2b630: 2401 movs r4, #1 + 2b718: 2401 movs r4, #1 transfer->status = (len << 16) | (1<<7); - 2b632: 6042 str r2, [r0, #4] + 2b71a: 6042 str r2, [r0, #4] transfer->pointer2 = addr + 8192; - 2b634: f501 5200 add.w r2, r1, #8192 ; 0x2000 + 2b71c: f501 5200 add.w r2, r1, #8192 ; 0x2000 transfer->next = 1; - 2b638: 6004 str r4, [r0, #0] + 2b720: 6004 str r4, [r0, #0] transfer->pointer1 = addr + 4096; - 2b63a: f501 5480 add.w r4, r1, #4096 ; 0x1000 + 2b722: f501 5480 add.w r4, r1, #4096 ; 0x1000 transfer->pointer4 = addr + 16384; - 2b63e: f501 4180 add.w r1, r1, #16384 ; 0x4000 + 2b726: f501 4180 add.w r1, r1, #16384 ; 0x4000 transfer->pointer1 = addr + 4096; - 2b642: 60c4 str r4, [r0, #12] + 2b72a: 60c4 str r4, [r0, #12] transfer->pointer4 = addr + 16384; - 2b644: 6181 str r1, [r0, #24] + 2b72c: 6181 str r1, [r0, #24] } - 2b646: f85d 4b04 ldr.w r4, [sp], #4 + 2b72e: f85d 4b04 ldr.w r4, [sp], #4 transfer->pointer3 = addr + 12288; - 2b64a: e9c0 2304 strd r2, r3, [r0, #16] + 2b732: e9c0 2304 strd r2, r3, [r0, #16] } - 2b64e: 4770 bx lr + 2b736: 4770 bx lr -0002b650 : +0002b738 : void usb_transmit(int endpoint_number, transfer_t *transfer) { if (endpoint_number < 2 || endpoint_number > NUM_ENDPOINTS) return; - 2b650: 1e83 subs r3, r0, #2 + 2b738: 1e83 subs r3, r0, #2 { - 2b652: 460a mov r2, r1 + 2b73a: 460a mov r2, r1 if (endpoint_number < 2 || endpoint_number > NUM_ENDPOINTS) return; - 2b654: 2b02 cmp r3, #2 - 2b656: d900 bls.n 2b65a + 2b73c: 2b02 cmp r3, #2 + 2b73e: d900 bls.n 2b742 endpoint_t *endpoint = endpoint_queue_head + endpoint_number * 2 + 1; uint32_t mask = 1 << (endpoint_number + 16); schedule_transfer(endpoint, mask, transfer); } - 2b658: 4770 bx lr + 2b740: 4770 bx lr endpoint_t *endpoint = endpoint_queue_head + endpoint_number * 2 + 1; - 2b65a: 4b06 ldr r3, [pc, #24] ; (2b674 ) + 2b742: 4b06 ldr r3, [pc, #24] ; (2b75c ) uint32_t mask = 1 << (endpoint_number + 16); - 2b65c: f100 0110 add.w r1, r0, #16 - 2b660: f04f 0c01 mov.w ip, #1 + 2b744: f100 0110 add.w r1, r0, #16 + 2b748: f04f 0c01 mov.w ip, #1 endpoint_t *endpoint = endpoint_queue_head + endpoint_number * 2 + 1; - 2b664: eb03 10c0 add.w r0, r3, r0, lsl #7 + 2b74c: eb03 10c0 add.w r0, r3, r0, lsl #7 schedule_transfer(endpoint, mask, transfer); - 2b668: fa0c f101 lsl.w r1, ip, r1 - 2b66c: 3040 adds r0, #64 ; 0x40 - 2b66e: f7ff bbb7 b.w 2ade0 - 2b672: bf00 nop - 2b674: 20000000 .word 0x20000000 + 2b750: fa0c f101 lsl.w r1, ip, r1 + 2b754: 3040 adds r0, #64 ; 0x40 + 2b756: f7ff bbb7 b.w 2aec8 + 2b75a: bf00 nop + 2b75c: 20000000 .word 0x20000000 -0002b678 : +0002b760 : void usb_receive(int endpoint_number, transfer_t *transfer) { if (endpoint_number < 2 || endpoint_number > NUM_ENDPOINTS) return; - 2b678: 1e83 subs r3, r0, #2 + 2b760: 1e83 subs r3, r0, #2 { - 2b67a: 460a mov r2, r1 + 2b762: 460a mov r2, r1 if (endpoint_number < 2 || endpoint_number > NUM_ENDPOINTS) return; - 2b67c: 2b02 cmp r3, #2 - 2b67e: d900 bls.n 2b682 + 2b764: 2b02 cmp r3, #2 + 2b766: d900 bls.n 2b76a endpoint_t *endpoint = endpoint_queue_head + endpoint_number * 2; uint32_t mask = 1 << endpoint_number; schedule_transfer(endpoint, mask, transfer); } - 2b680: 4770 bx lr + 2b768: 4770 bx lr uint32_t mask = 1 << endpoint_number; - 2b682: 2101 movs r1, #1 + 2b76a: 2101 movs r1, #1 endpoint_t *endpoint = endpoint_queue_head + endpoint_number * 2; - 2b684: 4b02 ldr r3, [pc, #8] ; (2b690 ) + 2b76c: 4b02 ldr r3, [pc, #8] ; (2b778 ) schedule_transfer(endpoint, mask, transfer); - 2b686: 4081 lsls r1, r0 - 2b688: eb03 10c0 add.w r0, r3, r0, lsl #7 - 2b68c: f7ff bba8 b.w 2ade0 - 2b690: 20000000 .word 0x20000000 + 2b76e: 4081 lsls r1, r0 + 2b770: eb03 10c0 add.w r0, r3, r0, lsl #7 + 2b774: f7ff bba8 b.w 2aec8 + 2b778: 20000000 .word 0x20000000 -0002b694 : +0002b77c : //if (!(cmd & USB_USBCMD_ATDTW)) continue; //if (status & 0x80) break; // for still active, only 1 reading needed //if (++count > 1) break; // for completed, check 10 times } #else return transfer->status; - 2b694: 6840 ldr r0, [r0, #4] + 2b77c: 6840 ldr r0, [r0, #4] #endif } - 2b696: 4770 bx lr + 2b77e: 4770 bx lr -0002b698 : +0002b780 : void usb_init_serialnumber(void) { char buf[11]; uint32_t i, num; num = HW_OCOTP_MAC0 & 0xFFFFFF; - 2b698: 4a12 ldr r2, [pc, #72] ; (2b6e4 ) + 2b780: 4a12 ldr r2, [pc, #72] ; (2b7cc ) // add extra zero to work around OS-X CDC-ACM driver bug if (num < 10000000) num = num * 10; - 2b69a: 4b13 ldr r3, [pc, #76] ; (2b6e8 ) + 2b782: 4b13 ldr r3, [pc, #76] ; (2b7d0 ) num = HW_OCOTP_MAC0 & 0xFFFFFF; - 2b69c: f8d2 0220 ldr.w r0, [r2, #544] ; 0x220 - 2b6a0: f020 407f bic.w r0, r0, #4278190080 ; 0xff000000 + 2b784: f8d2 0220 ldr.w r0, [r2, #544] ; 0x220 + 2b788: f020 407f bic.w r0, r0, #4278190080 ; 0xff000000 if (num < 10000000) num = num * 10; - 2b6a4: 4298 cmp r0, r3 + 2b78c: 4298 cmp r0, r3 { - 2b6a6: b510 push {r4, lr} - 2b6a8: b084 sub sp, #16 + 2b78e: b510 push {r4, lr} + 2b790: b084 sub sp, #16 if (num < 10000000) num = num * 10; - 2b6aa: d202 bcs.n 2b6b2 - 2b6ac: eb00 0080 add.w r0, r0, r0, lsl #2 - 2b6b0: 0040 lsls r0, r0, #1 + 2b792: d202 bcs.n 2b79a + 2b794: eb00 0080 add.w r0, r0, r0, lsl #2 + 2b798: 0040 lsls r0, r0, #1 ultoa(num, buf, 10); - 2b6b2: 4c0e ldr r4, [pc, #56] ; (2b6ec ) - 2b6b4: a901 add r1, sp, #4 - 2b6b6: 220a movs r2, #10 - 2b6b8: f7ff f8c2 bl 2a840 + 2b79a: 4c0e ldr r4, [pc, #56] ; (2b7d4 ) + 2b79c: a901 add r1, sp, #4 + 2b79e: 220a movs r2, #10 + 2b7a0: f7ff f8c2 bl 2a928 for (i=0; i<10; i++) { - 2b6bc: a901 add r1, sp, #4 - 2b6be: 2300 movs r3, #0 - 2b6c0: 4620 mov r0, r4 + 2b7a4: a901 add r1, sp, #4 + 2b7a6: 2300 movs r3, #0 + 2b7a8: 4620 mov r0, r4 char c = buf[i]; - 2b6c2: f811 2b01 ldrb.w r2, [r1], #1 + 2b7aa: f811 2b01 ldrb.w r2, [r1], #1 for (i=0; i<10; i++) { - 2b6c6: 3301 adds r3, #1 + 2b7ae: 3301 adds r3, #1 if (!c) break; - 2b6c8: b13a cbz r2, 2b6da + 2b7b0: b13a cbz r2, 2b7c2 for (i=0; i<10; i++) { - 2b6ca: 2b0a cmp r3, #10 + 2b7b2: 2b0a cmp r3, #10 usb_string_serial_number_default.wString[i] = c; - 2b6cc: f820 2f02 strh.w r2, [r0, #2]! + 2b7b4: f820 2f02 strh.w r2, [r0, #2]! for (i=0; i<10; i++) { - 2b6d0: d1f7 bne.n 2b6c2 - 2b6d2: 2316 movs r3, #22 + 2b7b8: d1f7 bne.n 2b7aa + 2b7ba: 2316 movs r3, #22 } usb_string_serial_number_default.bLength = i * 2 + 2; - 2b6d4: 7023 strb r3, [r4, #0] + 2b7bc: 7023 strb r3, [r4, #0] } - 2b6d6: b004 add sp, #16 - 2b6d8: bd10 pop {r4, pc} + 2b7be: b004 add sp, #16 + 2b7c0: bd10 pop {r4, pc} usb_string_serial_number_default.bLength = i * 2 + 2; - 2b6da: 005b lsls r3, r3, #1 - 2b6dc: b2db uxtb r3, r3 - 2b6de: 7023 strb r3, [r4, #0] + 2b7c2: 005b lsls r3, r3, #1 + 2b7c4: b2db uxtb r3, r3 + 2b7c6: 7023 strb r3, [r4, #0] } - 2b6e0: b004 add sp, #16 - 2b6e2: bd10 pop {r4, pc} - 2b6e4: 401f4400 .word 0x401f4400 - 2b6e8: 00989680 .word 0x00989680 - 2b6ec: 20005200 .word 0x20005200 + 2b7c8: b004 add sp, #16 + 2b7ca: bd10 pop {r4, pc} + 2b7cc: 401f4400 .word 0x401f4400 + 2b7d0: 00989680 .word 0x00989680 + 2b7d4: 200052c0 .word 0x200052c0 -0002b6f0 : +0002b7d8 : virtual int peek() { return usb_seremu_peekchar(); } - 2b6f0: f000 bdec b.w 2c2cc + 2b7d8: f000 bdec b.w 2c3b4 -0002b6f4 : +0002b7dc : virtual int read() { return usb_seremu_getchar(); } - 2b6f4: f000 bdb6 b.w 2c264 + 2b7dc: f000 bdb6 b.w 2c34c -0002b6f8 : +0002b7e0 : virtual int available() { return usb_seremu_available(); } - 2b6f8: f000 be0a b.w 2c310 + 2b7e0: f000 be0a b.w 2c3f8 -0002b6fc : +0002b7e4 : virtual void flush() { usb_seremu_flush_output(); } - 2b6fc: f000 bf32 b.w 2c564 + 2b7e4: f000 bf32 b.w 2c64c -0002b700 : +0002b7e8 : virtual int availableForWrite() { return usb_seremu_write_buffer_free(); } - 2b700: f000 bf2e b.w 2c560 + 2b7e8: f000 bf2e b.w 2c648 -0002b704 : +0002b7ec : virtual size_t write(const uint8_t *buffer, size_t size) { return usb_seremu_write(buffer, size); } - 2b704: 4608 mov r0, r1 - 2b706: 4611 mov r1, r2 - 2b708: f000 bf1e b.w 2c548 + 2b7ec: 4608 mov r0, r1 + 2b7ee: 4611 mov r1, r2 + 2b7f0: f000 bf1e b.w 2c630 -0002b70c : +0002b7f4 : usb_midi_write_packed(0x05 | cable | (0xF7 << 8)); } } static void sysex_byte(uint8_t b) { - 2b70c: b538 push {r3, r4, r5, lr} + 2b7f4: b538 push {r3, r4, r5, lr} if (usb_midi_handleSysExPartial && usb_midi_msg_sysex_len >= USB_MIDI_SYSEX_MAX) { - 2b70e: 4b0c ldr r3, [pc, #48] ; (2b740 ) + 2b7f6: 4b0c ldr r3, [pc, #48] ; (2b828 ) { - 2b710: 4604 mov r4, r0 + 2b7f8: 4604 mov r4, r0 if (usb_midi_handleSysExPartial && usb_midi_msg_sysex_len >= USB_MIDI_SYSEX_MAX) { - 2b712: 4d0c ldr r5, [pc, #48] ; (2b744 ) - 2b714: 681b ldr r3, [r3, #0] - 2b716: 8829 ldrh r1, [r5, #0] - 2b718: b143 cbz r3, 2b72c - 2b71a: f5b1 7f91 cmp.w r1, #290 ; 0x122 - 2b71e: d209 bcs.n 2b734 + 2b7fa: 4d0c ldr r5, [pc, #48] ; (2b82c ) + 2b7fc: 681b ldr r3, [r3, #0] + 2b7fe: 8829 ldrh r1, [r5, #0] + 2b800: b143 cbz r3, 2b814 + 2b802: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 2b806: d209 bcs.n 2b81c // when buffer is full, send another chunk to partial handler. (*usb_midi_handleSysExPartial)(usb_midi_msg_sysex, usb_midi_msg_sysex_len, 0); usb_midi_msg_sysex_len = 0; } if (usb_midi_msg_sysex_len < USB_MIDI_SYSEX_MAX) { usb_midi_msg_sysex[usb_midi_msg_sysex_len++] = b; - 2b720: 1c4b adds r3, r1, #1 - 2b722: b29b uxth r3, r3 - 2b724: 4a08 ldr r2, [pc, #32] ; (2b748 ) - 2b726: 802b strh r3, [r5, #0] - 2b728: 5454 strb r4, [r2, r1] + 2b808: 1c4b adds r3, r1, #1 + 2b80a: b29b uxth r3, r3 + 2b80c: 4a08 ldr r2, [pc, #32] ; (2b830 ) + 2b80e: 802b strh r3, [r5, #0] + 2b810: 5454 strb r4, [r2, r1] } } - 2b72a: bd38 pop {r3, r4, r5, pc} + 2b812: bd38 pop {r3, r4, r5, pc} if (usb_midi_msg_sysex_len < USB_MIDI_SYSEX_MAX) { - 2b72c: f5b1 7f91 cmp.w r1, #290 ; 0x122 - 2b730: d3f6 bcc.n 2b720 + 2b814: f5b1 7f91 cmp.w r1, #290 ; 0x122 + 2b818: d3f6 bcc.n 2b808 } - 2b732: bd38 pop {r3, r4, r5, pc} + 2b81a: bd38 pop {r3, r4, r5, pc} (*usb_midi_handleSysExPartial)(usb_midi_msg_sysex, usb_midi_msg_sysex_len, 0); - 2b734: 2200 movs r2, #0 - 2b736: 4804 ldr r0, [pc, #16] ; (2b748 ) - 2b738: 4798 blx r3 - 2b73a: 2100 movs r1, #0 - 2b73c: 2301 movs r3, #1 - 2b73e: e7f1 b.n 2b724 - 2b740: 2000bb2c .word 0x2000bb2c - 2b744: 2000bc78 .word 0x2000bc78 - 2b748: 2000bb40 .word 0x2000bb40 + 2b81c: 2200 movs r2, #0 + 2b81e: 4804 ldr r0, [pc, #16] ; (2b830 ) + 2b820: 4798 blx r3 + 2b822: 2100 movs r1, #0 + 2b824: 2301 movs r3, #1 + 2b826: e7f1 b.n 2b80c + 2b828: 2000bb4c .word 0x2000bb4c + 2b82c: 2000bc98 .word 0x2000bc98 + 2b830: 2000bb60 .word 0x2000bb60 -0002b74c : +0002b834 : static void rx_queue_transfer(int i) { - 2b74c: b5f8 push {r3, r4, r5, r6, r7, lr} + 2b834: b5f8 push {r3, r4, r5, r6, r7, lr} NVIC_DISABLE_IRQ(IRQ_USB1); void *buffer = rx_buffer + i * MIDI_RX_SIZE_480; - 2b74e: 4c14 ldr r4, [pc, #80] ; (2b7a0 ) + 2b836: 4c14 ldr r4, [pc, #80] ; (2b888 ) NVIC_DISABLE_IRQ(IRQ_USB1); - 2b750: f04f 25e0 mov.w r5, #3758153728 ; 0xe000e000 + 2b838: f04f 25e0 mov.w r5, #3758153728 ; 0xe000e000 usb_prepare_transfer(rx_transfer + i, buffer, rx_packet_size, i); - 2b754: 4e13 ldr r6, [pc, #76] ; (2b7a4 ) + 2b83c: 4e13 ldr r6, [pc, #76] ; (2b88c ) NVIC_DISABLE_IRQ(IRQ_USB1); - 2b756: f44f 3200 mov.w r2, #131072 ; 0x20000 + 2b83e: f44f 3200 mov.w r2, #131072 ; 0x20000 void *buffer = rx_buffer + i * MIDI_RX_SIZE_480; - 2b75a: eb04 2440 add.w r4, r4, r0, lsl #9 + 2b842: eb04 2440 add.w r4, r4, r0, lsl #9 usb_prepare_transfer(rx_transfer + i, buffer, rx_packet_size, i); - 2b75e: 4f12 ldr r7, [pc, #72] ; (2b7a8 ) - 2b760: eb06 1640 add.w r6, r6, r0, lsl #5 + 2b846: 4f12 ldr r7, [pc, #72] ; (2b890 ) + 2b848: eb06 1640 add.w r6, r6, r0, lsl #5 { - 2b764: 4603 mov r3, r0 + 2b84c: 4603 mov r3, r0 NVIC_DISABLE_IRQ(IRQ_USB1); - 2b766: f8c5 218c str.w r2, [r5, #396] ; 0x18c + 2b84e: f8c5 218c str.w r2, [r5, #396] ; 0x18c usb_prepare_transfer(rx_transfer + i, buffer, rx_packet_size, i); - 2b76a: 4621 mov r1, r4 - 2b76c: 883a ldrh r2, [r7, #0] - 2b76e: 4630 mov r0, r6 - 2b770: f7ff ff56 bl 2b620 + 2b852: 4621 mov r1, r4 + 2b854: 883a ldrh r2, [r7, #0] + 2b856: 4630 mov r0, r6 + 2b858: f7ff ff56 bl 2b708 arm_dcache_delete(buffer, rx_packet_size); - 2b774: 883b ldrh r3, [r7, #0] + 2b85c: 883b ldrh r3, [r7, #0] uint32_t end_addr = (uint32_t)addr + size; - 2b776: 4423 add r3, r4 + 2b85e: 4423 add r3, r4 asm("dsb"); - 2b778: f3bf 8f4f dsb sy + 2b860: f3bf 8f4f dsb sy SCB_CACHE_DCIMVAC = location; - 2b77c: f8c5 4f5c str.w r4, [r5, #3932] ; 0xf5c + 2b864: f8c5 4f5c str.w r4, [r5, #3932] ; 0xf5c location += 32; - 2b780: 3420 adds r4, #32 + 2b868: 3420 adds r4, #32 } while (location < end_addr); - 2b782: 42a3 cmp r3, r4 - 2b784: d8fa bhi.n 2b77c + 2b86a: 42a3 cmp r3, r4 + 2b86c: d8fa bhi.n 2b864 asm("dsb"); - 2b786: f3bf 8f4f dsb sy + 2b86e: f3bf 8f4f dsb sy asm("isb"); - 2b78a: f3bf 8f6f isb sy + 2b872: f3bf 8f6f isb sy usb_receive(MIDI_RX_ENDPOINT, rx_transfer + i); - 2b78e: 2003 movs r0, #3 - 2b790: 4631 mov r1, r6 - 2b792: f7ff ff71 bl 2b678 + 2b876: 2003 movs r0, #3 + 2b878: 4631 mov r1, r6 + 2b87a: f7ff ff71 bl 2b760 NVIC_ENABLE_IRQ(IRQ_USB1); - 2b796: f44f 3300 mov.w r3, #131072 ; 0x20000 - 2b79a: f8c5 310c str.w r3, [r5, #268] ; 0x10c + 2b87e: f44f 3300 mov.w r3, #131072 ; 0x20000 + 2b882: f8c5 310c str.w r3, [r5, #268] ; 0x10c } - 2b79e: bdf8 pop {r3, r4, r5, r6, r7, pc} - 2b7a0: 20200080 .word 0x20200080 - 2b7a4: 2000a360 .word 0x2000a360 - 2b7a8: 2000bc70 .word 0x2000bc70 + 2b886: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2b888: 20200080 .word 0x20200080 + 2b88c: 2000a380 .word 0x2000a380 + 2b890: 2000bc90 .word 0x2000bc90 -0002b7ac : +0002b894 : // called by USB interrupt when any packet is received static void rx_event(transfer_t *t) { int len = rx_packet_size - ((t->status >> 16) & 0x7FFF); - 2b7ac: 6842 ldr r2, [r0, #4] + 2b894: 6842 ldr r2, [r0, #4] len &= 0xFFFC; // MIDI packets must be multiple of 4 bytes - 2b7ae: f64f 71fc movw r1, #65532 ; 0xfffc + 2b896: f64f 71fc movw r1, #65532 ; 0xfffc int len = rx_packet_size - ((t->status >> 16) & 0x7FFF); - 2b7b2: 4b11 ldr r3, [pc, #68] ; (2b7f8 ) - 2b7b4: f3c2 420e ubfx r2, r2, #16, #15 + 2b89a: 4b11 ldr r3, [pc, #68] ; (2b8e0 ) + 2b89c: f3c2 420e ubfx r2, r2, #16, #15 int i = t->callback_param; - 2b7b8: 69c0 ldr r0, [r0, #28] + 2b8a0: 69c0 ldr r0, [r0, #28] int len = rx_packet_size - ((t->status >> 16) & 0x7FFF); - 2b7ba: 881b ldrh r3, [r3, #0] - 2b7bc: 1a9b subs r3, r3, r2 + 2b8a2: 881b ldrh r3, [r3, #0] + 2b8a4: 1a9b subs r3, r3, r2 printf("rx event, len=%d, i=%d\n", len, i); if (len > 0) { - 2b7be: 400b ands r3, r1 - 2b7c0: d017 beq.n 2b7f2 + 2b8a6: 400b ands r3, r1 + 2b8a8: d017 beq.n 2b8da uint32_t head = rx_head; rx_count[i] = len; - 2b7c2: 490e ldr r1, [pc, #56] ; (2b7fc ) + 2b8aa: 490e ldr r1, [pc, #56] ; (2b8e4 ) { - 2b7c4: b430 push {r4, r5} + 2b8ac: b430 push {r4, r5} uint32_t head = rx_head; - 2b7c6: 4c0e ldr r4, [pc, #56] ; (2b800 ) + 2b8ae: 4c0e ldr r4, [pc, #56] ; (2b8e8 ) rx_index[i] = 0; - 2b7c8: 4d0e ldr r5, [pc, #56] ; (2b804 ) + 2b8b0: 4d0e ldr r5, [pc, #56] ; (2b8ec ) uint32_t head = rx_head; - 2b7ca: 7822 ldrb r2, [r4, #0] + 2b8b2: 7822 ldrb r2, [r4, #0] rx_count[i] = len; - 2b7cc: f821 3010 strh.w r3, [r1, r0, lsl #1] + 2b8b4: f821 3010 strh.w r3, [r1, r0, lsl #1] rx_index[i] = 0; - 2b7d0: 2100 movs r1, #0 + 2b8b8: 2100 movs r1, #0 if (++head > RX_NUM) head = 0; - 2b7d2: 3201 adds r2, #1 + 2b8ba: 3201 adds r2, #1 rx_index[i] = 0; - 2b7d4: f825 1010 strh.w r1, [r5, r0, lsl #1] + 2b8bc: f825 1010 strh.w r1, [r5, r0, lsl #1] if (++head > RX_NUM) head = 0; - 2b7d8: 2a06 cmp r2, #6 + 2b8c0: 2a06 cmp r2, #6 rx_list[head] = i; rx_head = head; - 2b7da: bf94 ite ls - 2b7dc: b2d1 uxtbls r1, r2 + 2b8c2: bf94 ite ls + 2b8c4: b2d1 uxtbls r1, r2 if (++head > RX_NUM) head = 0; - 2b7de: 460a movhi r2, r1 + 2b8c6: 460a movhi r2, r1 rx_head = head; - 2b7e0: 7021 strb r1, [r4, #0] + 2b8c8: 7021 strb r1, [r4, #0] rx_available += len; - 2b7e2: 4909 ldr r1, [pc, #36] ; (2b808 ) - 2b7e4: 680c ldr r4, [r1, #0] - 2b7e6: 4423 add r3, r4 - 2b7e8: 600b str r3, [r1, #0] + 2b8ca: 4909 ldr r1, [pc, #36] ; (2b8f0 ) + 2b8cc: 680c ldr r4, [r1, #0] + 2b8ce: 4423 add r3, r4 + 2b8d0: 600b str r3, [r1, #0] rx_list[head] = i; - 2b7ea: 4b08 ldr r3, [pc, #32] ; (2b80c ) - 2b7ec: 5498 strb r0, [r3, r2] + 2b8d2: 4b08 ldr r3, [pc, #32] ; (2b8f4 ) + 2b8d4: 5498 strb r0, [r3, r2] } else { // received a zero length packet rx_queue_transfer(i); } } - 2b7ee: bc30 pop {r4, r5} - 2b7f0: 4770 bx lr + 2b8d6: bc30 pop {r4, r5} + 2b8d8: 4770 bx lr rx_queue_transfer(i); - 2b7f2: f7ff bfab b.w 2b74c - 2b7f6: bf00 nop - 2b7f8: 2000bc70 .word 0x2000bc70 - 2b7fc: 2000ba74 .word 0x2000ba74 - 2b800: 2000bc83 .word 0x2000bc83 - 2b804: 2000ba80 .word 0x2000ba80 - 2b808: 2000ba6c .word 0x2000ba6c - 2b80c: 2000ba9c .word 0x2000ba9c - -0002b810 : + 2b8da: f7ff bfab b.w 2b834 + 2b8de: bf00 nop + 2b8e0: 2000bc90 .word 0x2000bc90 + 2b8e4: 2000ba94 .word 0x2000ba94 + 2b8e8: 2000bca3 .word 0x2000bca3 + 2b8ec: 2000baa0 .word 0x2000baa0 + 2b8f0: 2000ba8c .word 0x2000ba8c + 2b8f4: 2000babc .word 0x2000babc + +0002b8f8 : void usb_midi_write_packed(uint32_t n) - 2b810: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2b8f8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} tx_noautoflush = 1; - 2b814: 2301 movs r3, #1 + 2b8fc: 2301 movs r3, #1 uint32_t head = tx_head; - 2b816: f8df a128 ldr.w sl, [pc, #296] ; 2b940 + 2b8fe: f8df a128 ldr.w sl, [pc, #296] ; 2ba28 tx_noautoflush = 1; - 2b81a: f8df b128 ldr.w fp, [pc, #296] ; 2b944 + 2b902: f8df b128 ldr.w fp, [pc, #296] ; 2ba2c void usb_midi_write_packed(uint32_t n) - 2b81e: b083 sub sp, #12 + 2b906: b083 sub sp, #12 while (!tx_available) { - 2b820: 4e41 ldr r6, [pc, #260] ; (2b928 ) + 2b908: 4e41 ldr r6, [pc, #260] ; (2ba10 ) uint32_t head = tx_head; - 2b822: f89a 2000 ldrb.w r2, [sl] + 2b90a: f89a 2000 ldrb.w r2, [sl] transfer_t *xfer = tx_transfer + head; - 2b826: 4d41 ldr r5, [pc, #260] ; (2b92c ) + 2b90e: 4d41 ldr r5, [pc, #260] ; (2ba14 ) uint32_t wait_begin_at = systick_millis_count; - 2b828: 4f41 ldr r7, [pc, #260] ; (2b930 ) + 2b910: 4f41 ldr r7, [pc, #260] ; (2ba18 ) tx_noautoflush = 1; - 2b82a: f88b 3000 strb.w r3, [fp] + 2b912: f88b 3000 strb.w r3, [fp] transfer_t *xfer = tx_transfer + head; - 2b82e: eb05 1542 add.w r5, r5, r2, lsl #5 + 2b916: eb05 1542 add.w r5, r5, r2, lsl #5 while (!tx_available) { - 2b832: 8833 ldrh r3, [r6, #0] + 2b91a: 8833 ldrh r3, [r6, #0] uint32_t wait_begin_at = systick_millis_count; - 2b834: f8d7 8000 ldr.w r8, [r7] + 2b91c: f8d7 8000 ldr.w r8, [r7] void usb_midi_write_packed(uint32_t n) - 2b838: e9cd 0200 strd r0, r2, [sp] + 2b920: e9cd 0200 strd r0, r2, [sp] while (!tx_available) { - 2b83c: 2b00 cmp r3, #0 - 2b83e: d16d bne.n 2b91c - 2b840: 4c3c ldr r4, [pc, #240] ; (2b934 ) + 2b924: 2b00 cmp r3, #0 + 2b926: d16d bne.n 2ba04 + 2b928: 4c3c ldr r4, [pc, #240] ; (2ba1c ) if (!usb_configuration) return; - 2b842: f8df 9104 ldr.w r9, [pc, #260] ; 2b948 + 2b92a: f8df 9104 ldr.w r9, [pc, #260] ; 2ba30 uint32_t status = usb_transfer_status(xfer); - 2b846: 4628 mov r0, r5 - 2b848: f7ff ff24 bl 2b694 + 2b92e: 4628 mov r0, r5 + 2b930: f7ff ff24 bl 2b77c if (!(status & 0x80)) { - 2b84c: f010 0080 ands.w r0, r0, #128 ; 0x80 - 2b850: d05d beq.n 2b90e + 2b934: f010 0080 ands.w r0, r0, #128 ; 0x80 + 2b938: d05d beq.n 2b9f6 if (systick_millis_count - wait_begin_at > TX_TIMEOUT_MSEC) { - 2b852: 683b ldr r3, [r7, #0] - 2b854: eba3 0308 sub.w r3, r3, r8 - 2b858: 2b28 cmp r3, #40 ; 0x28 - 2b85a: d904 bls.n 2b866 + 2b93a: 683b ldr r3, [r7, #0] + 2b93c: eba3 0308 sub.w r3, r3, r8 + 2b940: 2b28 cmp r3, #40 ; 0x28 + 2b942: d904 bls.n 2b94e transmit_previous_timeout = 1; - 2b85c: 2301 movs r3, #1 - 2b85e: 7023 strb r3, [r4, #0] + 2b944: 2301 movs r3, #1 + 2b946: 7023 strb r3, [r4, #0] } - 2b860: b003 add sp, #12 - 2b862: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2b948: b003 add sp, #12 + 2b94a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} if (transmit_previous_timeout) return; - 2b866: 7823 ldrb r3, [r4, #0] - 2b868: 2b00 cmp r3, #0 - 2b86a: d1f9 bne.n 2b860 + 2b94e: 7823 ldrb r3, [r4, #0] + 2b950: 2b00 cmp r3, #0 + 2b952: d1f9 bne.n 2b948 if (!usb_configuration) return; - 2b86c: f899 3000 ldrb.w r3, [r9] - 2b870: 2b00 cmp r3, #0 - 2b872: d0f5 beq.n 2b860 + 2b954: f899 3000 ldrb.w r3, [r9] + 2b958: 2b00 cmp r3, #0 + 2b95a: d0f5 beq.n 2b948 yield(); - 2b874: f000 fea2 bl 2c5bc + 2b95c: f000 fea2 bl 2c6a4 while (!tx_available) { - 2b878: 8833 ldrh r3, [r6, #0] - 2b87a: 2b00 cmp r3, #0 - 2b87c: d0e3 beq.n 2b846 + 2b960: 8833 ldrh r3, [r6, #0] + 2b962: 2b00 cmp r3, #0 + 2b964: d0e3 beq.n 2b92e uint32_t *txdata = (uint32_t *)(txbuffer + (tx_head * TX_SIZE) + (tx_packet_size - tx_available)); - 2b87e: 4a2e ldr r2, [pc, #184] ; (2b938 ) - 2b880: f89a 1000 ldrb.w r1, [sl] - 2b884: 8812 ldrh r2, [r2, #0] - 2b886: 1ad0 subs r0, r2, r3 + 2b966: 4a2e ldr r2, [pc, #184] ; (2ba20 ) + 2b968: f89a 1000 ldrb.w r1, [sl] + 2b96c: 8812 ldrh r2, [r2, #0] + 2b96e: 1ad0 subs r0, r2, r3 tx_available -= 4; - 2b888: 3b04 subs r3, #4 + 2b970: 3b04 subs r3, #4 uint32_t *txdata = (uint32_t *)(txbuffer + (tx_head * TX_SIZE) + (tx_packet_size - tx_available)); - 2b88a: 4c2c ldr r4, [pc, #176] ; (2b93c ) + 2b972: 4c2c ldr r4, [pc, #176] ; (2ba24 ) tx_available -= 4; - 2b88c: b29b uxth r3, r3 + 2b974: b29b uxth r3, r3 *txdata = n; - 2b88e: 4420 add r0, r4 + 2b976: 4420 add r0, r4 tx_available -= 4; - 2b890: 8033 strh r3, [r6, #0] + 2b978: 8033 strh r3, [r6, #0] *txdata = n; - 2b892: eb00 2041 add.w r0, r0, r1, lsl #9 - 2b896: 9e00 ldr r6, [sp, #0] + 2b97a: eb00 2041 add.w r0, r0, r1, lsl #9 + 2b97e: 9e00 ldr r6, [sp, #0] uint32_t *txdata = (uint32_t *)(txbuffer + (tx_head * TX_SIZE) + (tx_packet_size - tx_available)); - 2b898: 0249 lsls r1, r1, #9 + 2b980: 0249 lsls r1, r1, #9 *txdata = n; - 2b89a: f8c0 6c00 str.w r6, [r0, #3072] ; 0xc00 + 2b982: f8c0 6c00 str.w r6, [r0, #3072] ; 0xc00 if (tx_available == 0) { - 2b89e: bb93 cbnz r3, 2b906 + 2b986: bb93 cbnz r3, 2b9ee uint8_t *txbuf = txbuffer + (tx_head * TX_SIZE); - 2b8a0: f504 6440 add.w r4, r4, #3072 ; 0xc00 + 2b988: f504 6440 add.w r4, r4, #3072 ; 0xc00 usb_prepare_transfer(xfer, txbuf, tx_packet_size, 0); - 2b8a4: 4628 mov r0, r5 + 2b98c: 4628 mov r0, r5 uint8_t *txbuf = txbuffer + (tx_head * TX_SIZE); - 2b8a6: 440c add r4, r1 + 2b98e: 440c add r4, r1 usb_prepare_transfer(xfer, txbuf, tx_packet_size, 0); - 2b8a8: 4621 mov r1, r4 - 2b8aa: f7ff feb9 bl 2b620 + 2b990: 4621 mov r1, r4 + 2b992: f7ff feb9 bl 2b708 asm("dsb"); - 2b8ae: f3bf 8f4f dsb sy - 2b8b2: f104 0220 add.w r2, r4, #32 + 2b996: f3bf 8f4f dsb sy + 2b99a: f104 0220 add.w r2, r4, #32 uint32_t end_addr = (uint32_t)addr + size; - 2b8b6: f504 7300 add.w r3, r4, #512 ; 0x200 - 2b8ba: 4293 cmp r3, r2 - 2b8bc: bf34 ite cc - 2b8be: 2301 movcc r3, #1 - 2b8c0: 2310 movcs r3, #16 + 2b99e: f504 7300 add.w r3, r4, #512 ; 0x200 + 2b9a2: 4293 cmp r3, r2 + 2b9a4: bf34 ite cc + 2b9a6: 2301 movcc r3, #1 + 2b9a8: 2310 movcs r3, #16 SCB_CACHE_DCCIMVAC = location; - 2b8c2: f04f 22e0 mov.w r2, #3758153728 ; 0xe000e000 - 2b8c6: eb04 1343 add.w r3, r4, r3, lsl #5 - 2b8ca: f8c2 4f70 str.w r4, [r2, #3952] ; 0xf70 + 2b9aa: f04f 22e0 mov.w r2, #3758153728 ; 0xe000e000 + 2b9ae: eb04 1343 add.w r3, r4, r3, lsl #5 + 2b9b2: f8c2 4f70 str.w r4, [r2, #3952] ; 0xf70 location += 32; - 2b8ce: 3420 adds r4, #32 + 2b9b6: 3420 adds r4, #32 } while (location < end_addr); - 2b8d0: 429c cmp r4, r3 - 2b8d2: d1fa bne.n 2b8ca + 2b9b8: 429c cmp r4, r3 + 2b9ba: d1fa bne.n 2b9b2 asm("dsb"); - 2b8d4: f3bf 8f4f dsb sy + 2b9bc: f3bf 8f4f dsb sy asm("isb"); - 2b8d8: f3bf 8f6f isb sy + 2b9c0: f3bf 8f6f isb sy usb_transmit(MIDI_TX_ENDPOINT, xfer); - 2b8dc: 2003 movs r0, #3 - 2b8de: 4629 mov r1, r5 - 2b8e0: f7ff feb6 bl 2b650 + 2b9c4: 2003 movs r0, #3 + 2b9c6: 4629 mov r1, r5 + 2b9c8: f7ff feb6 bl 2b738 if (++head >= TX_NUM) head = 0; - 2b8e4: 9b01 ldr r3, [sp, #4] + 2b9cc: 9b01 ldr r3, [sp, #4] usb_stop_sof_interrupts(MIDI_INTERFACE); - 2b8e6: 2000 movs r0, #0 + 2b9ce: 2000 movs r0, #0 if (++head >= TX_NUM) head = 0; - 2b8e8: 3301 adds r3, #1 - 2b8ea: 2b03 cmp r3, #3 + 2b9d0: 3301 adds r3, #1 + 2b9d2: 2b03 cmp r3, #3 tx_head = head; - 2b8ec: bf94 ite ls - 2b8ee: b2db uxtbls r3, r3 - 2b8f0: 2300 movhi r3, #0 - 2b8f2: f88a 3000 strb.w r3, [sl] + 2b9d4: bf94 ite ls + 2b9d6: b2db uxtbls r3, r3 + 2b9d8: 2300 movhi r3, #0 + 2b9da: f88a 3000 strb.w r3, [sl] usb_stop_sof_interrupts(MIDI_INTERFACE); - 2b8f6: f7ff fb3b bl 2af70 + 2b9de: f7ff fb3b bl 2b058 tx_noautoflush = 0; - 2b8fa: 2300 movs r3, #0 - 2b8fc: f88b 3000 strb.w r3, [fp] + 2b9e2: 2300 movs r3, #0 + 2b9e4: f88b 3000 strb.w r3, [fp] } - 2b900: b003 add sp, #12 - 2b902: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2b9e8: b003 add sp, #12 + 2b9ea: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} usb_start_sof_interrupts(MIDI_INTERFACE); - 2b906: 2000 movs r0, #0 - 2b908: f7ff fb16 bl 2af38 - 2b90c: e7f5 b.n 2b8fa + 2b9ee: 2000 movs r0, #0 + 2b9f0: f7ff fb16 bl 2b020 + 2b9f4: e7f5 b.n 2b9e2 tx_available = tx_packet_size; - 2b90e: 4b0a ldr r3, [pc, #40] ; (2b938 ) + 2b9f6: 4b0a ldr r3, [pc, #40] ; (2ba20 ) uint32_t *txdata = (uint32_t *)(txbuffer + (tx_head * TX_SIZE) + (tx_packet_size - tx_available)); - 2b910: f89a 1000 ldrb.w r1, [sl] + 2b9f8: f89a 1000 ldrb.w r1, [sl] tx_available = tx_packet_size; - 2b914: 881a ldrh r2, [r3, #0] + 2b9fc: 881a ldrh r2, [r3, #0] transmit_previous_timeout = 0; - 2b916: 7020 strb r0, [r4, #0] + 2b9fe: 7020 strb r0, [r4, #0] break; - 2b918: 4613 mov r3, r2 - 2b91a: e7b5 b.n 2b888 + 2ba00: 4613 mov r3, r2 + 2ba02: e7b5 b.n 2b970 uint32_t *txdata = (uint32_t *)(txbuffer + (tx_head * TX_SIZE) + (tx_packet_size - tx_available)); - 2b91c: 4a06 ldr r2, [pc, #24] ; (2b938 ) - 2b91e: 9901 ldr r1, [sp, #4] - 2b920: 8812 ldrh r2, [r2, #0] - 2b922: 1ad0 subs r0, r2, r3 - 2b924: e7b0 b.n 2b888 - 2b926: bf00 nop - 2b928: 2000bc72 .word 0x2000bc72 - 2b92c: 2000a520 .word 0x2000a520 - 2b930: 2000bae8 .word 0x2000bae8 - 2b934: 2000bc88 .word 0x2000bc88 - 2b938: 2000bc76 .word 0x2000bc76 - 2b93c: 20200080 .word 0x20200080 - 2b940: 2000bc8a .word 0x2000bc8a - 2b944: 2000bc8c .word 0x2000bc8c - 2b948: 2000bc8e .word 0x2000bc8e - -0002b94c : + 2ba04: 4a06 ldr r2, [pc, #24] ; (2ba20 ) + 2ba06: 9901 ldr r1, [sp, #4] + 2ba08: 8812 ldrh r2, [r2, #0] + 2ba0a: 1ad0 subs r0, r2, r3 + 2ba0c: e7b0 b.n 2b970 + 2ba0e: bf00 nop + 2ba10: 2000bc92 .word 0x2000bc92 + 2ba14: 2000a540 .word 0x2000a540 + 2ba18: 2000bb08 .word 0x2000bb08 + 2ba1c: 2000bca8 .word 0x2000bca8 + 2ba20: 2000bc96 .word 0x2000bc96 + 2ba24: 20200080 .word 0x20200080 + 2ba28: 2000bcaa .word 0x2000bcaa + 2ba2c: 2000bcac .word 0x2000bcac + 2ba30: 2000bcae .word 0x2000bcae + +0002ba34 : if (usb_high_speed) { - 2b94c: 4b21 ldr r3, [pc, #132] ; (2b9d4 ) + 2ba34: 4b21 ldr r3, [pc, #132] ; (2babc ) { - 2b94e: b570 push {r4, r5, r6, lr} + 2ba36: b570 push {r4, r5, r6, lr} if (usb_high_speed) { - 2b950: 781b ldrb r3, [r3, #0] - 2b952: 2b00 cmp r3, #0 - 2b954: d03b beq.n 2b9ce - 2b956: f44f 7300 mov.w r3, #512 ; 0x200 - 2b95a: 461e mov r6, r3 + 2ba38: 781b ldrb r3, [r3, #0] + 2ba3a: 2b00 cmp r3, #0 + 2ba3c: d03b beq.n 2bab6 + 2ba3e: f44f 7300 mov.w r3, #512 ; 0x200 + 2ba42: 461e mov r6, r3 rx_packet_size = MIDI_RX_SIZE_480; - 2b95c: 491e ldr r1, [pc, #120] ; (2b9d8 ) + 2ba44: 491e ldr r1, [pc, #120] ; (2bac0 ) memset(tx_transfer, 0, sizeof(tx_transfer)); - 2b95e: 2280 movs r2, #128 ; 0x80 + 2ba46: 2280 movs r2, #128 ; 0x80 tx_packet_size = MIDI_TX_SIZE_480; - 2b960: 4d1e ldr r5, [pc, #120] ; (2b9dc ) + 2ba48: 4d1e ldr r5, [pc, #120] ; (2bac4 ) tx_head = 0; - 2b962: 2400 movs r4, #0 + 2ba4a: 2400 movs r4, #0 rx_packet_size = MIDI_RX_SIZE_480; - 2b964: 800b strh r3, [r1, #0] + 2ba4c: 800b strh r3, [r1, #0] memset(tx_transfer, 0, sizeof(tx_transfer)); - 2b966: 2100 movs r1, #0 - 2b968: 481d ldr r0, [pc, #116] ; (2b9e0 ) + 2ba4e: 2100 movs r1, #0 + 2ba50: 481d ldr r0, [pc, #116] ; (2bac8 ) tx_packet_size = MIDI_TX_SIZE_480; - 2b96a: 802b strh r3, [r5, #0] + 2ba52: 802b strh r3, [r5, #0] memset(tx_transfer, 0, sizeof(tx_transfer)); - 2b96c: f002 fd8e bl 2e48c + 2ba54: f002 fd8e bl 2e574 tx_head = 0; - 2b970: 4a1c ldr r2, [pc, #112] ; (2b9e4 ) + 2ba58: 4a1c ldr r2, [pc, #112] ; (2bacc ) memset(rx_transfer, 0, sizeof(rx_transfer)); - 2b972: 4621 mov r1, r4 + 2ba5a: 4621 mov r1, r4 tx_available = 0; - 2b974: 4b1c ldr r3, [pc, #112] ; (2b9e8 ) + 2ba5c: 4b1c ldr r3, [pc, #112] ; (2bad0 ) tx_head = 0; - 2b976: 7014 strb r4, [r2, #0] + 2ba5e: 7014 strb r4, [r2, #0] memset(rx_transfer, 0, sizeof(rx_transfer)); - 2b978: 22c0 movs r2, #192 ; 0xc0 - 2b97a: 481c ldr r0, [pc, #112] ; (2b9ec ) + 2ba60: 22c0 movs r2, #192 ; 0xc0 + 2ba62: 481c ldr r0, [pc, #112] ; (2bad4 ) tx_available = 0; - 2b97c: 801c strh r4, [r3, #0] + 2ba64: 801c strh r4, [r3, #0] memset(rx_transfer, 0, sizeof(rx_transfer)); - 2b97e: f002 fd85 bl 2e48c + 2ba66: f002 fd85 bl 2e574 memset(rx_count, 0, sizeof(rx_count)); - 2b982: 4a1b ldr r2, [pc, #108] ; (2b9f0 ) + 2ba6a: 4a1b ldr r2, [pc, #108] ; (2bad8 ) usb_config_rx(MIDI_RX_ENDPOINT, rx_packet_size, 0, rx_event); - 2b984: 4631 mov r1, r6 + 2ba6c: 4631 mov r1, r6 memset(rx_index, 0, sizeof(rx_index)); - 2b986: 4b1b ldr r3, [pc, #108] ; (2b9f4 ) + 2ba6e: 4b1b ldr r3, [pc, #108] ; (2badc ) usb_config_rx(MIDI_RX_ENDPOINT, rx_packet_size, 0, rx_event); - 2b988: 2003 movs r0, #3 + 2ba70: 2003 movs r0, #3 memset(rx_count, 0, sizeof(rx_count)); - 2b98a: 6094 str r4, [r2, #8] + 2ba72: 6094 str r4, [r2, #8] memset(rx_index, 0, sizeof(rx_index)); - 2b98c: 609c str r4, [r3, #8] + 2ba74: 609c str r4, [r3, #8] memset(rx_count, 0, sizeof(rx_count)); - 2b98e: e9c2 4400 strd r4, r4, [r2] + 2ba76: e9c2 4400 strd r4, r4, [r2] rx_head = 0; - 2b992: 4a19 ldr r2, [pc, #100] ; (2b9f8 ) + 2ba7a: 4a19 ldr r2, [pc, #100] ; (2bae0 ) memset(rx_index, 0, sizeof(rx_index)); - 2b994: e9c3 4400 strd r4, r4, [r3] + 2ba7c: e9c3 4400 strd r4, r4, [r3] rx_head = 0; - 2b998: 7014 strb r4, [r2, #0] + 2ba80: 7014 strb r4, [r2, #0] rx_tail = 0; - 2b99a: 4b18 ldr r3, [pc, #96] ; (2b9fc ) + 2ba82: 4b18 ldr r3, [pc, #96] ; (2bae4 ) rx_available = 0; - 2b99c: 4a18 ldr r2, [pc, #96] ; (2ba00 ) + 2ba84: 4a18 ldr r2, [pc, #96] ; (2bae8 ) rx_tail = 0; - 2b99e: 701c strb r4, [r3, #0] + 2ba86: 701c strb r4, [r3, #0] usb_config_rx(MIDI_RX_ENDPOINT, rx_packet_size, 0, rx_event); - 2b9a0: 4b18 ldr r3, [pc, #96] ; (2ba04 ) + 2ba88: 4b18 ldr r3, [pc, #96] ; (2baec ) rx_available = 0; - 2b9a2: 6014 str r4, [r2, #0] + 2ba8a: 6014 str r4, [r2, #0] usb_config_rx(MIDI_RX_ENDPOINT, rx_packet_size, 0, rx_event); - 2b9a4: 4622 mov r2, r4 - 2b9a6: f7ff fdd7 bl 2b558 + 2ba8c: 4622 mov r2, r4 + 2ba8e: f7ff fdd7 bl 2b640 usb_config_tx(MIDI_TX_ENDPOINT, tx_packet_size, 0, NULL); // TODO: is ZLP needed? - 2b9aa: 4623 mov r3, r4 - 2b9ac: 4622 mov r2, r4 - 2b9ae: 8829 ldrh r1, [r5, #0] - 2b9b0: 2003 movs r0, #3 - 2b9b2: f7ff fe03 bl 2b5bc + 2ba92: 4623 mov r3, r4 + 2ba94: 4622 mov r2, r4 + 2ba96: 8829 ldrh r1, [r5, #0] + 2ba98: 2003 movs r0, #3 + 2ba9a: f7ff fe03 bl 2b6a4 for (i=0; i < RX_NUM; i++) rx_queue_transfer(i); - 2b9b6: 4620 mov r0, r4 - 2b9b8: 3401 adds r4, #1 - 2b9ba: f7ff fec7 bl 2b74c - 2b9be: 2c06 cmp r4, #6 - 2b9c0: d1f9 bne.n 2b9b6 + 2ba9e: 4620 mov r0, r4 + 2baa0: 3401 adds r4, #1 + 2baa2: f7ff fec7 bl 2b834 + 2baa6: 2c06 cmp r4, #6 + 2baa8: d1f9 bne.n 2ba9e transmit_previous_timeout = 0; - 2b9c2: 2300 movs r3, #0 - 2b9c4: 4910 ldr r1, [pc, #64] ; (2ba08 ) + 2baaa: 2300 movs r3, #0 + 2baac: 4910 ldr r1, [pc, #64] ; (2baf0 ) tx_noautoflush = 0; - 2b9c6: 4a11 ldr r2, [pc, #68] ; (2ba0c ) + 2baae: 4a11 ldr r2, [pc, #68] ; (2baf4 ) transmit_previous_timeout = 0; - 2b9c8: 700b strb r3, [r1, #0] + 2bab0: 700b strb r3, [r1, #0] tx_noautoflush = 0; - 2b9ca: 7013 strb r3, [r2, #0] -} - 2b9cc: bd70 pop {r4, r5, r6, pc} - 2b9ce: 2340 movs r3, #64 ; 0x40 - 2b9d0: 461e mov r6, r3 - 2b9d2: e7c3 b.n 2b95c - 2b9d4: 2000bc8f .word 0x2000bc8f - 2b9d8: 2000bc70 .word 0x2000bc70 - 2b9dc: 2000bc76 .word 0x2000bc76 - 2b9e0: 2000a520 .word 0x2000a520 - 2b9e4: 2000bc8a .word 0x2000bc8a - 2b9e8: 2000bc72 .word 0x2000bc72 - 2b9ec: 2000a360 .word 0x2000a360 - 2b9f0: 2000ba74 .word 0x2000ba74 - 2b9f4: 2000ba80 .word 0x2000ba80 - 2b9f8: 2000bc83 .word 0x2000bc83 - 2b9fc: 2000bc85 .word 0x2000bc85 - 2ba00: 2000ba6c .word 0x2000ba6c - 2ba04: 0002b7ad .word 0x0002b7ad - 2ba08: 2000bc88 .word 0x2000bc88 - 2ba0c: 2000bc8c .word 0x2000bc8c - -0002ba10 : + 2bab2: 7013 strb r3, [r2, #0] +} + 2bab4: bd70 pop {r4, r5, r6, pc} + 2bab6: 2340 movs r3, #64 ; 0x40 + 2bab8: 461e mov r6, r3 + 2baba: e7c3 b.n 2ba44 + 2babc: 2000bcaf .word 0x2000bcaf + 2bac0: 2000bc90 .word 0x2000bc90 + 2bac4: 2000bc96 .word 0x2000bc96 + 2bac8: 2000a540 .word 0x2000a540 + 2bacc: 2000bcaa .word 0x2000bcaa + 2bad0: 2000bc92 .word 0x2000bc92 + 2bad4: 2000a380 .word 0x2000a380 + 2bad8: 2000ba94 .word 0x2000ba94 + 2badc: 2000baa0 .word 0x2000baa0 + 2bae0: 2000bca3 .word 0x2000bca3 + 2bae4: 2000bca5 .word 0x2000bca5 + 2bae8: 2000ba8c .word 0x2000ba8c + 2baec: 0002b895 .word 0x0002b895 + 2baf0: 2000bca8 .word 0x2000bca8 + 2baf4: 2000bcac .word 0x2000bcac + +0002baf8 : if (!usb_configuration) return; - 2ba10: 4b02 ldr r3, [pc, #8] ; (2ba1c ) - 2ba12: 781b ldrb r3, [r3, #0] - 2ba14: b10b cbz r3, 2ba1a - 2ba16: f7ff befb b.w 2b810 + 2baf8: 4b02 ldr r3, [pc, #8] ; (2bb04 ) + 2bafa: 781b ldrb r3, [r3, #0] + 2bafc: b10b cbz r3, 2bb02 + 2bafe: f7ff befb b.w 2b8f8 } - 2ba1a: 4770 bx lr - 2ba1c: 2000bc8e .word 0x2000bc8e + 2bb02: 4770 bx lr + 2bb04: 2000bcae .word 0x2000bcae -0002ba20 : +0002bb08 : { - 2ba20: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 2bb08: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} if (tx_noautoflush == 0 && tx_available > 0) { - 2ba24: 4b20 ldr r3, [pc, #128] ; (2baa8 ) - 2ba26: 781d ldrb r5, [r3, #0] - 2ba28: b915 cbnz r5, 2ba30 - 2ba2a: 4e20 ldr r6, [pc, #128] ; (2baac ) - 2ba2c: 8833 ldrh r3, [r6, #0] - 2ba2e: b90b cbnz r3, 2ba34 -} - 2ba30: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 2bb0c: 4b20 ldr r3, [pc, #128] ; (2bb90 ) + 2bb0e: 781d ldrb r5, [r3, #0] + 2bb10: b915 cbnz r5, 2bb18 + 2bb12: 4e20 ldr r6, [pc, #128] ; (2bb94 ) + 2bb14: 8833 ldrh r3, [r6, #0] + 2bb16: b90b cbnz r3, 2bb1c +} + 2bb18: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} uint32_t head = tx_head; - 2ba34: f8df 8084 ldr.w r8, [pc, #132] ; 2babc + 2bb1c: f8df 8084 ldr.w r8, [pc, #132] ; 2bba4 transfer_t *xfer = tx_transfer + head; - 2ba38: 4a1d ldr r2, [pc, #116] ; (2bab0 ) + 2bb20: 4a1d ldr r2, [pc, #116] ; (2bb98 ) uint32_t head = tx_head; - 2ba3a: f898 7000 ldrb.w r7, [r8] + 2bb22: f898 7000 ldrb.w r7, [r8] uint8_t *txbuf = txbuffer + (head * TX_SIZE); - 2ba3e: 4c1d ldr r4, [pc, #116] ; (2bab4 ) + 2bb26: 4c1d ldr r4, [pc, #116] ; (2bb9c ) transfer_t *xfer = tx_transfer + head; - 2ba40: eb02 1947 add.w r9, r2, r7, lsl #5 + 2bb28: eb02 1947 add.w r9, r2, r7, lsl #5 uint32_t len = tx_packet_size - tx_available; - 2ba44: 4a1c ldr r2, [pc, #112] ; (2bab8 ) + 2bb2c: 4a1c ldr r2, [pc, #112] ; (2bba0 ) uint8_t *txbuf = txbuffer + (head * TX_SIZE); - 2ba46: eb04 2447 add.w r4, r4, r7, lsl #9 + 2bb2e: eb04 2447 add.w r4, r4, r7, lsl #9 uint32_t len = tx_packet_size - tx_available; - 2ba4a: 8812 ldrh r2, [r2, #0] + 2bb32: 8812 ldrh r2, [r2, #0] usb_prepare_transfer(xfer, txbuf, len, 0); - 2ba4c: 4648 mov r0, r9 - 2ba4e: 4621 mov r1, r4 - 2ba50: 1ad2 subs r2, r2, r3 - 2ba52: 462b mov r3, r5 - 2ba54: f7ff fde4 bl 2b620 + 2bb34: 4648 mov r0, r9 + 2bb36: 4621 mov r1, r4 + 2bb38: 1ad2 subs r2, r2, r3 + 2bb3a: 462b mov r3, r5 + 2bb3c: f7ff fde4 bl 2b708 asm("dsb"); - 2ba58: f3bf 8f4f dsb sy - 2ba5c: f104 0220 add.w r2, r4, #32 + 2bb40: f3bf 8f4f dsb sy + 2bb44: f104 0220 add.w r2, r4, #32 uint32_t end_addr = (uint32_t)addr + size; - 2ba60: f504 7300 add.w r3, r4, #512 ; 0x200 - 2ba64: 4293 cmp r3, r2 - 2ba66: bf34 ite cc - 2ba68: 2301 movcc r3, #1 - 2ba6a: 2310 movcs r3, #16 + 2bb48: f504 7300 add.w r3, r4, #512 ; 0x200 + 2bb4c: 4293 cmp r3, r2 + 2bb4e: bf34 ite cc + 2bb50: 2301 movcc r3, #1 + 2bb52: 2310 movcs r3, #16 SCB_CACHE_DCCIMVAC = location; - 2ba6c: f04f 22e0 mov.w r2, #3758153728 ; 0xe000e000 - 2ba70: eb04 1343 add.w r3, r4, r3, lsl #5 - 2ba74: f8c2 4f70 str.w r4, [r2, #3952] ; 0xf70 + 2bb54: f04f 22e0 mov.w r2, #3758153728 ; 0xe000e000 + 2bb58: eb04 1343 add.w r3, r4, r3, lsl #5 + 2bb5c: f8c2 4f70 str.w r4, [r2, #3952] ; 0xf70 location += 32; - 2ba78: 3420 adds r4, #32 + 2bb60: 3420 adds r4, #32 } while (location < end_addr); - 2ba7a: 429c cmp r4, r3 - 2ba7c: d1fa bne.n 2ba74 + 2bb62: 429c cmp r4, r3 + 2bb64: d1fa bne.n 2bb5c asm("dsb"); - 2ba7e: f3bf 8f4f dsb sy + 2bb66: f3bf 8f4f dsb sy asm("isb"); - 2ba82: f3bf 8f6f isb sy + 2bb6a: f3bf 8f6f isb sy if (++head >= TX_NUM) head = 0; - 2ba86: 3701 adds r7, #1 + 2bb6e: 3701 adds r7, #1 usb_transmit(MIDI_TX_ENDPOINT, xfer); - 2ba88: 4649 mov r1, r9 - 2ba8a: 2003 movs r0, #3 - 2ba8c: f7ff fde0 bl 2b650 + 2bb70: 4649 mov r1, r9 + 2bb72: 2003 movs r0, #3 + 2bb74: f7ff fde0 bl 2b738 if (++head >= TX_NUM) head = 0; - 2ba90: 2f03 cmp r7, #3 + 2bb78: 2f03 cmp r7, #3 tx_available = 0; - 2ba92: f04f 0000 mov.w r0, #0 + 2bb7a: f04f 0000 mov.w r0, #0 tx_head = head; - 2ba96: bf98 it ls - 2ba98: b2fd uxtbls r5, r7 + 2bb7e: bf98 it ls + 2bb80: b2fd uxtbls r5, r7 tx_available = 0; - 2ba9a: 8030 strh r0, [r6, #0] + 2bb82: 8030 strh r0, [r6, #0] tx_head = head; - 2ba9c: f888 5000 strb.w r5, [r8] + 2bb84: f888 5000 strb.w r5, [r8] } - 2baa0: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 2bb88: e8bd 43f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr} usb_stop_sof_interrupts(MIDI_INTERFACE); - 2baa4: f7ff ba64 b.w 2af70 - 2baa8: 2000bc8c .word 0x2000bc8c - 2baac: 2000bc72 .word 0x2000bc72 - 2bab0: 2000a520 .word 0x2000a520 - 2bab4: 20200c80 .word 0x20200c80 - 2bab8: 2000bc76 .word 0x2000bc76 - 2babc: 2000bc8a .word 0x2000bc8a - -0002bac0 : + 2bb8c: f7ff ba64 b.w 2b058 + 2bb90: 2000bcac .word 0x2000bcac + 2bb94: 2000bc92 .word 0x2000bc92 + 2bb98: 2000a540 .word 0x2000a540 + 2bb9c: 20200c80 .word 0x20200c80 + 2bba0: 2000bc96 .word 0x2000bc96 + 2bba4: 2000bcaa .word 0x2000bcaa + +0002bba8 : cable = (cable & 0x0F) << 4; - 2bac0: 0112 lsls r2, r2, #4 + 2bba8: 0112 lsls r2, r2, #4 while (length > 3) { - 2bac2: 2903 cmp r1, #3 + 2bbaa: 2903 cmp r1, #3 { - 2bac4: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 2bac8: 4688 mov r8, r1 + 2bbac: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 2bbb0: 4688 mov r8, r1 cable = (cable & 0x0F) << 4; - 2baca: b2d6 uxtb r6, r2 + 2bbb2: b2d6 uxtb r6, r2 while (length > 3) { - 2bacc: d91b bls.n 2bb06 + 2bbb4: d91b bls.n 2bbee usb_midi_write_packed(0x04 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 2bace: f046 0704 orr.w r7, r6, #4 - 2bad2: 1cc4 adds r4, r0, #3 - 2bad4: 4d29 ldr r5, [pc, #164] ; (2bb7c ) + 2bbb6: f046 0704 orr.w r7, r6, #4 + 2bbba: 1cc4 adds r4, r0, #3 + 2bbbc: 4d29 ldr r5, [pc, #164] ; (2bc64 ) if (!usb_configuration) return; - 2bad6: 782b ldrb r3, [r5, #0] + 2bbbe: 782b ldrb r3, [r5, #0] length -= 3; - 2bad8: f1a8 0803 sub.w r8, r8, #3 + 2bbc0: f1a8 0803 sub.w r8, r8, #3 if (!usb_configuration) return; - 2badc: b16b cbz r3, 2bafa + 2bbc4: b16b cbz r3, 2bbe2 usb_midi_write_packed(0x04 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 2bade: f814 3c01 ldrb.w r3, [r4, #-1] - 2bae2: f814 2c02 ldrb.w r2, [r4, #-2] - 2bae6: 061b lsls r3, r3, #24 - 2bae8: f814 0c03 ldrb.w r0, [r4, #-3] - 2baec: ea43 4302 orr.w r3, r3, r2, lsl #16 - 2baf0: 433b orrs r3, r7 - 2baf2: ea43 2000 orr.w r0, r3, r0, lsl #8 - 2baf6: f7ff fe8b bl 2b810 + 2bbc6: f814 3c01 ldrb.w r3, [r4, #-1] + 2bbca: f814 2c02 ldrb.w r2, [r4, #-2] + 2bbce: 061b lsls r3, r3, #24 + 2bbd0: f814 0c03 ldrb.w r0, [r4, #-3] + 2bbd4: ea43 4302 orr.w r3, r3, r2, lsl #16 + 2bbd8: 433b orrs r3, r7 + 2bbda: ea43 2000 orr.w r0, r3, r0, lsl #8 + 2bbde: f7ff fe8b bl 2b8f8 while (length > 3) { - 2bafa: f1b8 0f03 cmp.w r8, #3 + 2bbe2: f1b8 0f03 cmp.w r8, #3 data += 3; - 2bafe: 4620 mov r0, r4 + 2bbe6: 4620 mov r0, r4 while (length > 3) { - 2bb00: f104 0403 add.w r4, r4, #3 - 2bb04: d8e7 bhi.n 2bad6 + 2bbe8: f104 0403 add.w r4, r4, #3 + 2bbec: d8e7 bhi.n 2bbbe if (length == 3) { - 2bb06: f1b8 0f03 cmp.w r8, #3 - 2bb0a: d017 beq.n 2bb3c + 2bbee: f1b8 0f03 cmp.w r8, #3 + 2bbf2: d017 beq.n 2bc24 } else if (length == 2) { - 2bb0c: f1b8 0f02 cmp.w r8, #2 - 2bb10: d004 beq.n 2bb1c + 2bbf4: f1b8 0f02 cmp.w r8, #2 + 2bbf8: d004 beq.n 2bc04 } else if (length == 1) { - 2bb12: f1b8 0f01 cmp.w r8, #1 - 2bb16: d024 beq.n 2bb62 + 2bbfa: f1b8 0f01 cmp.w r8, #1 + 2bbfe: d024 beq.n 2bc4a } - 2bb18: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 2bc00: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if (!usb_configuration) return; - 2bb1c: 4b17 ldr r3, [pc, #92] ; (2bb7c ) - 2bb1e: 781b ldrb r3, [r3, #0] - 2bb20: 2b00 cmp r3, #0 - 2bb22: d0f9 beq.n 2bb18 + 2bc04: 4b17 ldr r3, [pc, #92] ; (2bc64 ) + 2bc06: 781b ldrb r3, [r3, #0] + 2bc08: 2b00 cmp r3, #0 + 2bc0a: d0f9 beq.n 2bc00 usb_midi_write_packed(0x06 | cable | (data[0] << 8) | (data[1] << 16)); - 2bb24: 7843 ldrb r3, [r0, #1] - 2bb26: 7802 ldrb r2, [r0, #0] - 2bb28: f046 0006 orr.w r0, r6, #6 - 2bb2c: 041b lsls r3, r3, #16 - 2bb2e: ea43 2302 orr.w r3, r3, r2, lsl #8 -} - 2bb32: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 2bb36: 4318 orrs r0, r3 - 2bb38: f7ff be6a b.w 2b810 + 2bc0c: 7843 ldrb r3, [r0, #1] + 2bc0e: 7802 ldrb r2, [r0, #0] + 2bc10: f046 0006 orr.w r0, r6, #6 + 2bc14: 041b lsls r3, r3, #16 + 2bc16: ea43 2302 orr.w r3, r3, r2, lsl #8 +} + 2bc1a: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 2bc1e: 4318 orrs r0, r3 + 2bc20: f7ff be6a b.w 2b8f8 if (!usb_configuration) return; - 2bb3c: 4b0f ldr r3, [pc, #60] ; (2bb7c ) - 2bb3e: 781b ldrb r3, [r3, #0] - 2bb40: 2b00 cmp r3, #0 - 2bb42: d0e9 beq.n 2bb18 + 2bc24: 4b0f ldr r3, [pc, #60] ; (2bc64 ) + 2bc26: 781b ldrb r3, [r3, #0] + 2bc28: 2b00 cmp r3, #0 + 2bc2a: d0e9 beq.n 2bc00 usb_midi_write_packed(0x07 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 2bb44: 7883 ldrb r3, [r0, #2] - 2bb46: f046 0607 orr.w r6, r6, #7 - 2bb4a: 7842 ldrb r2, [r0, #1] - 2bb4c: 061b lsls r3, r3, #24 - 2bb4e: 7800 ldrb r0, [r0, #0] - 2bb50: ea43 4302 orr.w r3, r3, r2, lsl #16 - 2bb54: 4333 orrs r3, r6 -} - 2bb56: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 2bb5a: ea43 2000 orr.w r0, r3, r0, lsl #8 - 2bb5e: f7ff be57 b.w 2b810 + 2bc2c: 7883 ldrb r3, [r0, #2] + 2bc2e: f046 0607 orr.w r6, r6, #7 + 2bc32: 7842 ldrb r2, [r0, #1] + 2bc34: 061b lsls r3, r3, #24 + 2bc36: 7800 ldrb r0, [r0, #0] + 2bc38: ea43 4302 orr.w r3, r3, r2, lsl #16 + 2bc3c: 4333 orrs r3, r6 +} + 2bc3e: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 2bc42: ea43 2000 orr.w r0, r3, r0, lsl #8 + 2bc46: f7ff be57 b.w 2b8f8 if (!usb_configuration) return; - 2bb62: 4b06 ldr r3, [pc, #24] ; (2bb7c ) - 2bb64: 781b ldrb r3, [r3, #0] - 2bb66: 2b00 cmp r3, #0 - 2bb68: d0d6 beq.n 2bb18 + 2bc4a: 4b06 ldr r3, [pc, #24] ; (2bc64 ) + 2bc4c: 781b ldrb r3, [r3, #0] + 2bc4e: 2b00 cmp r3, #0 + 2bc50: d0d6 beq.n 2bc00 usb_midi_write_packed(0x05 | cable | (data[0] << 8)); - 2bb6a: f046 0605 orr.w r6, r6, #5 - 2bb6e: 7800 ldrb r0, [r0, #0] - 2bb70: ea46 2000 orr.w r0, r6, r0, lsl #8 + 2bc52: f046 0605 orr.w r6, r6, #5 + 2bc56: 7800 ldrb r0, [r0, #0] + 2bc58: ea46 2000 orr.w r0, r6, r0, lsl #8 } - 2bb74: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 2bb78: f7ff be4a b.w 2b810 - 2bb7c: 2000bc8e .word 0x2000bc8e + 2bc5c: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 2bc60: f7ff be4a b.w 2b8f8 + 2bc64: 2000bcae .word 0x2000bcae -0002bb80 : +0002bc68 : cable = (cable & 0x0F) << 4; - 2bb80: 0112 lsls r2, r2, #4 + 2bc68: 0112 lsls r2, r2, #4 { - 2bb82: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 2bc6a: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} cable = (cable & 0x0F) << 4; - 2bb86: b2d5 uxtb r5, r2 + 2bc6e: b2d5 uxtb r5, r2 if (length == 0) { - 2bb88: 2900 cmp r1, #0 - 2bb8a: d042 beq.n 2bc12 + 2bc70: 2900 cmp r1, #0 + 2bc72: d042 beq.n 2bcfa } else if (length == 1) { - 2bb8c: 2901 cmp r1, #1 - 2bb8e: 4604 mov r4, r0 - 2bb90: 4688 mov r8, r1 - 2bb92: d057 beq.n 2bc44 + 2bc74: 2901 cmp r1, #1 + 2bc76: 4604 mov r4, r0 + 2bc78: 4688 mov r8, r1 + 2bc7a: d057 beq.n 2bd2c if (!usb_configuration) return; - 2bb94: 4e3a ldr r6, [pc, #232] ; (2bc80 ) + 2bc7c: 4e3a ldr r6, [pc, #232] ; (2bd68 ) usb_midi_write_packed(0x04 | cable | (0xF0 << 8) | (data[0] << 16) | (data[1] << 24)); - 2bb96: f045 0704 orr.w r7, r5, #4 + 2bc7e: f045 0704 orr.w r7, r5, #4 if (!usb_configuration) return; - 2bb9a: 7833 ldrb r3, [r6, #0] - 2bb9c: b14b cbz r3, 2bbb2 + 2bc82: 7833 ldrb r3, [r6, #0] + 2bc84: b14b cbz r3, 2bc9a usb_midi_write_packed(0x04 | cable | (0xF0 << 8) | (data[0] << 16) | (data[1] << 24)); - 2bb9e: 7840 ldrb r0, [r0, #1] - 2bba0: 7823 ldrb r3, [r4, #0] - 2bba2: 0600 lsls r0, r0, #24 - 2bba4: ea40 4003 orr.w r0, r0, r3, lsl #16 - 2bba8: 4338 orrs r0, r7 - 2bbaa: f440 4070 orr.w r0, r0, #61440 ; 0xf000 - 2bbae: f7ff fe2f bl 2b810 + 2bc86: 7840 ldrb r0, [r0, #1] + 2bc88: 7823 ldrb r3, [r4, #0] + 2bc8a: 0600 lsls r0, r0, #24 + 2bc8c: ea40 4003 orr.w r0, r0, r3, lsl #16 + 2bc90: 4338 orrs r0, r7 + 2bc92: f440 4070 orr.w r0, r0, #61440 ; 0xf000 + 2bc96: f7ff fe2f bl 2b8f8 length -= 2; - 2bbb2: f1a8 0802 sub.w r8, r8, #2 + 2bc9a: f1a8 0802 sub.w r8, r8, #2 data += 2; - 2bbb6: 1ca3 adds r3, r4, #2 + 2bc9e: 1ca3 adds r3, r4, #2 while (length >= 3) { - 2bbb8: f1b8 0f02 cmp.w r8, #2 - 2bbbc: d918 bls.n 2bbf0 - 2bbbe: 3405 adds r4, #5 + 2bca0: f1b8 0f02 cmp.w r8, #2 + 2bca4: d918 bls.n 2bcd8 + 2bca6: 3405 adds r4, #5 if (!usb_configuration) return; - 2bbc0: 7833 ldrb r3, [r6, #0] + 2bca8: 7833 ldrb r3, [r6, #0] length -= 3; - 2bbc2: f1a8 0803 sub.w r8, r8, #3 + 2bcaa: f1a8 0803 sub.w r8, r8, #3 if (!usb_configuration) return; - 2bbc6: b16b cbz r3, 2bbe4 + 2bcae: b16b cbz r3, 2bccc usb_midi_write_packed(0x04 | cable | (data[0] << 8) | (data[1] << 16) | (data[2] << 24)); - 2bbc8: f814 3c01 ldrb.w r3, [r4, #-1] - 2bbcc: f814 2c02 ldrb.w r2, [r4, #-2] - 2bbd0: 061b lsls r3, r3, #24 - 2bbd2: f814 0c03 ldrb.w r0, [r4, #-3] - 2bbd6: ea43 4302 orr.w r3, r3, r2, lsl #16 - 2bbda: 433b orrs r3, r7 - 2bbdc: ea43 2000 orr.w r0, r3, r0, lsl #8 - 2bbe0: f7ff fe16 bl 2b810 + 2bcb0: f814 3c01 ldrb.w r3, [r4, #-1] + 2bcb4: f814 2c02 ldrb.w r2, [r4, #-2] + 2bcb8: 061b lsls r3, r3, #24 + 2bcba: f814 0c03 ldrb.w r0, [r4, #-3] + 2bcbe: ea43 4302 orr.w r3, r3, r2, lsl #16 + 2bcc2: 433b orrs r3, r7 + 2bcc4: ea43 2000 orr.w r0, r3, r0, lsl #8 + 2bcc8: f7ff fe16 bl 2b8f8 while (length >= 3) { - 2bbe4: f1b8 0f02 cmp.w r8, #2 + 2bccc: f1b8 0f02 cmp.w r8, #2 data += 3; - 2bbe8: 4623 mov r3, r4 + 2bcd0: 4623 mov r3, r4 while (length >= 3) { - 2bbea: f104 0403 add.w r4, r4, #3 - 2bbee: d8e7 bhi.n 2bbc0 + 2bcd2: f104 0403 add.w r4, r4, #3 + 2bcd6: d8e7 bhi.n 2bca8 if (length == 2) { - 2bbf0: f1b8 0f02 cmp.w r8, #2 - 2bbf4: d017 beq.n 2bc26 + 2bcd8: f1b8 0f02 cmp.w r8, #2 + 2bcdc: d017 beq.n 2bd0e } else if (length == 1) { - 2bbf6: f1b8 0f01 cmp.w r8, #1 - 2bbfa: d032 beq.n 2bc62 + 2bcde: f1b8 0f01 cmp.w r8, #1 + 2bce2: d032 beq.n 2bd4a if (!usb_configuration) return; - 2bbfc: 7833 ldrb r3, [r6, #0] - 2bbfe: b133 cbz r3, 2bc0e - 2bc00: f24f 7005 movw r0, #63237 ; 0xf705 - 2bc04: 4328 orrs r0, r5 -} - 2bc06: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 2bc0a: f7ff be01 b.w 2b810 - 2bc0e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 2bce4: 7833 ldrb r3, [r6, #0] + 2bce6: b133 cbz r3, 2bcf6 + 2bce8: f24f 7005 movw r0, #63237 ; 0xf705 + 2bcec: 4328 orrs r0, r5 +} + 2bcee: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 2bcf2: f7ff be01 b.w 2b8f8 + 2bcf6: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if (!usb_configuration) return; - 2bc12: 4b1b ldr r3, [pc, #108] ; (2bc80 ) - 2bc14: 781b ldrb r3, [r3, #0] - 2bc16: 2b00 cmp r3, #0 - 2bc18: d0f9 beq.n 2bc0e - 2bc1a: 481a ldr r0, [pc, #104] ; (2bc84 ) - 2bc1c: 4328 orrs r0, r5 -} - 2bc1e: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 2bc22: f7ff bdf5 b.w 2b810 + 2bcfa: 4b1b ldr r3, [pc, #108] ; (2bd68 ) + 2bcfc: 781b ldrb r3, [r3, #0] + 2bcfe: 2b00 cmp r3, #0 + 2bd00: d0f9 beq.n 2bcf6 + 2bd02: 481a ldr r0, [pc, #104] ; (2bd6c ) + 2bd04: 4328 orrs r0, r5 +} + 2bd06: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 2bd0a: f7ff bdf5 b.w 2b8f8 if (!usb_configuration) return; - 2bc26: 7832 ldrb r2, [r6, #0] + 2bd0e: 7832 ldrb r2, [r6, #0] usb_midi_write_packed(0x07 | cable | (data[0] << 8) | (data[1] << 16) | (0xF7 << 24)); - 2bc28: 7819 ldrb r1, [r3, #0] - 2bc2a: 785b ldrb r3, [r3, #1] + 2bd10: 7819 ldrb r1, [r3, #0] + 2bd12: 785b ldrb r3, [r3, #1] if (!usb_configuration) return; - 2bc2c: 2a00 cmp r2, #0 - 2bc2e: d0ee beq.n 2bc0e + 2bd14: 2a00 cmp r2, #0 + 2bd16: d0ee beq.n 2bcf6 usb_midi_write_packed(0x07 | cable | (data[0] << 8) | (data[1] << 16) | (0xF7 << 24)); - 2bc30: 041b lsls r3, r3, #16 - 2bc32: 4815 ldr r0, [pc, #84] ; (2bc88 ) - 2bc34: ea43 2301 orr.w r3, r3, r1, lsl #8 - 2bc38: 432b orrs r3, r5 -} - 2bc3a: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 2bc3e: 4318 orrs r0, r3 - 2bc40: f7ff bde6 b.w 2b810 + 2bd18: 041b lsls r3, r3, #16 + 2bd1a: 4815 ldr r0, [pc, #84] ; (2bd70 ) + 2bd1c: ea43 2301 orr.w r3, r3, r1, lsl #8 + 2bd20: 432b orrs r3, r5 +} + 2bd22: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 2bd26: 4318 orrs r0, r3 + 2bd28: f7ff bde6 b.w 2b8f8 if (!usb_configuration) return; - 2bc44: 4b0e ldr r3, [pc, #56] ; (2bc80 ) + 2bd2c: 4b0e ldr r3, [pc, #56] ; (2bd68 ) usb_midi_write_packed(0x07 | cable | (0xF0 << 8) | (data[0] << 16) | (0xF7 << 24)); - 2bc46: 7802 ldrb r2, [r0, #0] + 2bd2e: 7802 ldrb r2, [r0, #0] if (!usb_configuration) return; - 2bc48: 781b ldrb r3, [r3, #0] - 2bc4a: 2b00 cmp r3, #0 - 2bc4c: d0df beq.n 2bc0e + 2bd30: 781b ldrb r3, [r3, #0] + 2bd32: 2b00 cmp r3, #0 + 2bd34: d0df beq.n 2bcf6 usb_midi_write_packed(0x07 | cable | (0xF0 << 8) | (data[0] << 16) | (0xF7 << 24)); - 2bc4e: f045 0507 orr.w r5, r5, #7 - 2bc52: 480e ldr r0, [pc, #56] ; (2bc8c ) - 2bc54: ea45 4502 orr.w r5, r5, r2, lsl #16 - 2bc58: 4328 orrs r0, r5 + 2bd36: f045 0507 orr.w r5, r5, #7 + 2bd3a: 480e ldr r0, [pc, #56] ; (2bd74 ) + 2bd3c: ea45 4502 orr.w r5, r5, r2, lsl #16 + 2bd40: 4328 orrs r0, r5 } - 2bc5a: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 2bc5e: f7ff bdd7 b.w 2b810 + 2bd42: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 2bd46: f7ff bdd7 b.w 2b8f8 if (!usb_configuration) return; - 2bc62: 7832 ldrb r2, [r6, #0] + 2bd4a: 7832 ldrb r2, [r6, #0] usb_midi_write_packed(0x06 | cable | (data[0] << 8) | (0xF7 << 16)); - 2bc64: 781b ldrb r3, [r3, #0] + 2bd4c: 781b ldrb r3, [r3, #0] if (!usb_configuration) return; - 2bc66: 2a00 cmp r2, #0 - 2bc68: d0d1 beq.n 2bc0e + 2bd4e: 2a00 cmp r2, #0 + 2bd50: d0d1 beq.n 2bcf6 usb_midi_write_packed(0x06 | cable | (data[0] << 8) | (0xF7 << 16)); - 2bc6a: f045 0006 orr.w r0, r5, #6 - 2bc6e: ea40 2003 orr.w r0, r0, r3, lsl #8 -} - 2bc72: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 2bc76: f440 0077 orr.w r0, r0, #16187392 ; 0xf70000 - 2bc7a: f7ff bdc9 b.w 2b810 - 2bc7e: bf00 nop - 2bc80: 2000bc8e .word 0x2000bc8e - 2bc84: 00f7f006 .word 0x00f7f006 - 2bc88: f7000007 .word 0xf7000007 - 2bc8c: f700f000 .word 0xf700f000 - -0002bc90 : + 2bd52: f045 0006 orr.w r0, r5, #6 + 2bd56: ea40 2003 orr.w r0, r0, r3, lsl #8 +} + 2bd5a: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 2bd5e: f440 0077 orr.w r0, r0, #16187392 ; 0xf70000 + 2bd62: f7ff bdc9 b.w 2b8f8 + 2bd66: bf00 nop + 2bd68: 2000bcae .word 0x2000bcae + 2bd6c: 00f7f006 .word 0x00f7f006 + 2bd70: f7000007 .word 0xf7000007 + 2bd74: f700f000 .word 0xf700f000 + +0002bd78 : { return rx_available / 4; } uint32_t usb_midi_read_message(void) { - 2bc90: b5f8 push {r3, r4, r5, r6, r7, lr} + 2bd78: b5f8 push {r3, r4, r5, r6, r7, lr} uint32_t n = 0; NVIC_DISABLE_IRQ(IRQ_USB1); - 2bc92: f44f 3200 mov.w r2, #131072 ; 0x20000 - 2bc96: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 2bd7a: f44f 3200 mov.w r2, #131072 ; 0x20000 + 2bd7e: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 uint32_t tail = rx_tail; - 2bc9a: 4c20 ldr r4, [pc, #128] ; (2bd1c ) + 2bd82: 4c20 ldr r4, [pc, #128] ; (2be04 ) NVIC_DISABLE_IRQ(IRQ_USB1); - 2bc9c: f8c3 218c str.w r2, [r3, #396] ; 0x18c + 2bd84: f8c3 218c str.w r2, [r3, #396] ; 0x18c if (tail != rx_head) { - 2bca0: 4b1f ldr r3, [pc, #124] ; (2bd20 ) + 2bd88: 4b1f ldr r3, [pc, #124] ; (2be08 ) uint32_t tail = rx_tail; - 2bca2: 7822 ldrb r2, [r4, #0] + 2bd8a: 7822 ldrb r2, [r4, #0] if (tail != rx_head) { - 2bca4: 7819 ldrb r1, [r3, #0] - 2bca6: 428a cmp r2, r1 - 2bca8: d02e beq.n 2bd08 + 2bd8c: 7819 ldrb r1, [r3, #0] + 2bd8e: 428a cmp r2, r1 + 2bd90: d02e beq.n 2bdf0 if (++tail > RX_NUM) tail = 0; - 2bcaa: b2d3 uxtb r3, r2 + 2bd92: b2d3 uxtb r3, r2 uint32_t i = rx_list[tail]; - 2bcac: 4a1d ldr r2, [pc, #116] ; (2bd24 ) + 2bd94: 4a1d ldr r2, [pc, #116] ; (2be0c ) //uint32_t avail = (rx_count[i] - rx_index[i]) / 4; void *p = rx_buffer + i * MIDI_RX_SIZE_480 + rx_index[i]; - 2bcae: 4f1e ldr r7, [pc, #120] ; (2bd28 ) + 2bd96: 4f1e ldr r7, [pc, #120] ; (2be10 ) if (++tail > RX_NUM) tail = 0; - 2bcb0: 3301 adds r3, #1 + 2bd98: 3301 adds r3, #1 void *p = rx_buffer + i * MIDI_RX_SIZE_480 + rx_index[i]; - 2bcb2: 491e ldr r1, [pc, #120] ; (2bd2c ) + 2bd9a: 491e ldr r1, [pc, #120] ; (2be14 ) n = *(uint32_t *)p; rx_available -= 4; - 2bcb4: 4e1e ldr r6, [pc, #120] ; (2bd30 ) + 2bd9c: 4e1e ldr r6, [pc, #120] ; (2be18 ) if (++tail > RX_NUM) tail = 0; - 2bcb6: 2b07 cmp r3, #7 - 2bcb8: bf28 it cs - 2bcba: 2300 movcs r3, #0 + 2bd9e: 2b07 cmp r3, #7 + 2bda0: bf28 it cs + 2bda2: 2300 movcs r3, #0 uint32_t i = rx_list[tail]; - 2bcbc: 5cd0 ldrb r0, [r2, r3] + 2bda4: 5cd0 ldrb r0, [r2, r3] void *p = rx_buffer + i * MIDI_RX_SIZE_480 + rx_index[i]; - 2bcbe: f837 2010 ldrh.w r2, [r7, r0, lsl #1] + 2bda6: f837 2010 ldrh.w r2, [r7, r0, lsl #1] n = *(uint32_t *)p; - 2bcc2: eb01 2140 add.w r1, r1, r0, lsl #9 - 2bcc6: 588d ldr r5, [r1, r2] + 2bdaa: eb01 2140 add.w r1, r1, r0, lsl #9 + 2bdae: 588d ldr r5, [r1, r2] rx_index[i] += 4; - 2bcc8: 3204 adds r2, #4 + 2bdb0: 3204 adds r2, #4 rx_available -= 4; - 2bcca: 6831 ldr r1, [r6, #0] + 2bdb2: 6831 ldr r1, [r6, #0] rx_index[i] += 4; - 2bccc: b292 uxth r2, r2 + 2bdb4: b292 uxth r2, r2 rx_available -= 4; - 2bcce: 3904 subs r1, #4 + 2bdb6: 3904 subs r1, #4 rx_index[i] += 4; - 2bcd0: f827 2010 strh.w r2, [r7, r0, lsl #1] + 2bdb8: f827 2010 strh.w r2, [r7, r0, lsl #1] rx_available -= 4; - 2bcd4: 6031 str r1, [r6, #0] + 2bdbc: 6031 str r1, [r6, #0] if (rx_index[i] >= rx_count[i]) { - 2bcd6: 4917 ldr r1, [pc, #92] ; (2bd34 ) - 2bcd8: f831 1010 ldrh.w r1, [r1, r0, lsl #1] - 2bcdc: 4291 cmp r1, r2 - 2bcde: d907 bls.n 2bcf0 + 2bdbe: 4917 ldr r1, [pc, #92] ; (2be1c ) + 2bdc0: f831 1010 ldrh.w r1, [r1, r0, lsl #1] + 2bdc4: 4291 cmp r1, r2 + 2bdc6: d907 bls.n 2bdd8 rx_tail = tail; rx_queue_transfer(i); } } NVIC_ENABLE_IRQ(IRQ_USB1); - 2bce0: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 - 2bce4: f44f 3200 mov.w r2, #131072 ; 0x20000 + 2bdc8: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 2bdcc: f44f 3200 mov.w r2, #131072 ; 0x20000 return n; } - 2bce8: 4628 mov r0, r5 + 2bdd0: 4628 mov r0, r5 NVIC_ENABLE_IRQ(IRQ_USB1); - 2bcea: f8c3 210c str.w r2, [r3, #268] ; 0x10c + 2bdd2: f8c3 210c str.w r2, [r3, #268] ; 0x10c } - 2bcee: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2bdd6: bdf8 pop {r3, r4, r5, r6, r7, pc} rx_tail = tail; - 2bcf0: b2db uxtb r3, r3 - 2bcf2: 7023 strb r3, [r4, #0] + 2bdd8: b2db uxtb r3, r3 + 2bdda: 7023 strb r3, [r4, #0] rx_queue_transfer(i); - 2bcf4: f7ff fd2a bl 2b74c + 2bddc: f7ff fd2a bl 2b834 NVIC_ENABLE_IRQ(IRQ_USB1); - 2bcf8: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 - 2bcfc: f44f 3200 mov.w r2, #131072 ; 0x20000 + 2bde0: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 2bde4: f44f 3200 mov.w r2, #131072 ; 0x20000 } - 2bd00: 4628 mov r0, r5 + 2bde8: 4628 mov r0, r5 NVIC_ENABLE_IRQ(IRQ_USB1); - 2bd02: f8c3 210c str.w r2, [r3, #268] ; 0x10c + 2bdea: f8c3 210c str.w r2, [r3, #268] ; 0x10c } - 2bd06: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2bdee: bdf8 pop {r3, r4, r5, r6, r7, pc} uint32_t n = 0; - 2bd08: 2500 movs r5, #0 + 2bdf0: 2500 movs r5, #0 NVIC_ENABLE_IRQ(IRQ_USB1); - 2bd0a: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 - 2bd0e: f44f 3200 mov.w r2, #131072 ; 0x20000 + 2bdf2: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 2bdf6: f44f 3200 mov.w r2, #131072 ; 0x20000 } - 2bd12: 4628 mov r0, r5 + 2bdfa: 4628 mov r0, r5 NVIC_ENABLE_IRQ(IRQ_USB1); - 2bd14: f8c3 210c str.w r2, [r3, #268] ; 0x10c + 2bdfc: f8c3 210c str.w r2, [r3, #268] ; 0x10c } - 2bd18: bdf8 pop {r3, r4, r5, r6, r7, pc} - 2bd1a: bf00 nop - 2bd1c: 2000bc85 .word 0x2000bc85 - 2bd20: 2000bc83 .word 0x2000bc83 - 2bd24: 2000ba9c .word 0x2000ba9c - 2bd28: 2000ba80 .word 0x2000ba80 - 2bd2c: 20200080 .word 0x20200080 - 2bd30: 2000ba6c .word 0x2000ba6c - 2bd34: 2000ba74 .word 0x2000ba74 + 2be00: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2be02: bf00 nop + 2be04: 2000bca5 .word 0x2000bca5 + 2be08: 2000bca3 .word 0x2000bca3 + 2be0c: 2000babc .word 0x2000babc + 2be10: 2000baa0 .word 0x2000baa0 + 2be14: 20200080 .word 0x20200080 + 2be18: 2000ba8c .word 0x2000ba8c + 2be1c: 2000ba94 .word 0x2000ba94 -0002bd38 : +0002be20 : int usb_midi_read(uint32_t channel) { - 2bd38: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 2bd3c: 4607 mov r7, r0 + 2be20: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 2be24: 4607 mov r7, r0 uint32_t n, ch, type1, type2, b1; n = usb_midi_read_message(); - 2bd3e: f7ff ffa7 bl 2bc90 + 2be26: f7ff ffa7 bl 2bd78 if (n == 0) return 0; - 2bd42: b198 cbz r0, 2bd6c + 2be2a: b198 cbz r0, 2be54 type1 = n & 15; type2 = (n >> 12) & 15; b1 = (n >> 8) & 0xFF; ch = (b1 & 15) + 1; - 2bd44: f3c0 2303 ubfx r3, r0, #8, #4 + 2be2c: f3c0 2303 ubfx r3, r0, #8, #4 type1 = n & 15; - 2bd48: f000 050f and.w r5, r0, #15 + 2be30: f000 050f and.w r5, r0, #15 usb_midi_msg_cable = (n >> 4) & 15; - 2bd4c: 4a9f ldr r2, [pc, #636] ; (2bfcc ) - 2bd4e: 4604 mov r4, r0 + 2be34: 4a9f ldr r2, [pc, #636] ; (2c0b4 ) + 2be36: 4604 mov r4, r0 ch = (b1 & 15) + 1; - 2bd50: 1c5e adds r6, r3, #1 + 2be38: 1c5e adds r6, r3, #1 usb_midi_msg_cable = (n >> 4) & 15; - 2bd52: f3c0 1303 ubfx r3, r0, #4, #4 + 2be3a: f3c0 1303 ubfx r3, r0, #4, #4 b1 = (n >> 8) & 0xFF; - 2bd56: ea4f 2810 mov.w r8, r0, lsr #8 + 2be3e: ea4f 2810 mov.w r8, r0, lsr #8 usb_midi_msg_cable = (n >> 4) & 15; - 2bd5a: 7013 strb r3, [r2, #0] + 2be42: 7013 strb r3, [r2, #0] if (type1 >= 0x08 && type1 <= 0x0E) { - 2bd5c: f1a5 0308 sub.w r3, r5, #8 - 2bd60: 2b06 cmp r3, #6 - 2bd62: d806 bhi.n 2bd72 + 2be44: f1a5 0308 sub.w r3, r5, #8 + 2be48: 2b06 cmp r3, #6 + 2be4a: d806 bhi.n 2be5a if (channel && channel != ch) { - 2bd64: 2f00 cmp r7, #0 - 2bd66: d047 beq.n 2bdf8 - 2bd68: 42be cmp r6, r7 - 2bd6a: d045 beq.n 2bdf8 + 2be4c: 2f00 cmp r7, #0 + 2be4e: d047 beq.n 2bee0 + 2be50: 42be cmp r6, r7 + 2be52: d045 beq.n 2bee0 // OSX sometimes uses Single Byte Unparsed to // send bytes in the middle of a SYSEX message. sysex_byte(b1); } } return 0; - 2bd6c: 2000 movs r0, #0 + 2be54: 2000 movs r0, #0 } - 2bd6e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 2be56: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if (type1 == 0x02 || type1 == 0x03 || (type1 == 0x05 && b1 >= 0xF1 && b1 != 0xF7)) { - 2bd72: 1eab subs r3, r5, #2 + 2be5a: 1eab subs r3, r5, #2 b1 = (n >> 8) & 0xFF; - 2bd74: fa5f f088 uxtb.w r0, r8 + 2be5c: fa5f f088 uxtb.w r0, r8 if (type1 == 0x02 || type1 == 0x03 || (type1 == 0x05 && b1 >= 0xF1 && b1 != 0xF7)) { - 2bd78: 2b01 cmp r3, #1 - 2bd7a: d919 bls.n 2bdb0 - 2bd7c: 28f7 cmp r0, #247 ; 0xf7 - 2bd7e: bf18 it ne - 2bd80: 28f0 cmpne r0, #240 ; 0xf0 - 2bd82: d901 bls.n 2bd88 - 2bd84: 2d05 cmp r5, #5 - 2bd86: d013 beq.n 2bdb0 + 2be60: 2b01 cmp r3, #1 + 2be62: d919 bls.n 2be98 + 2be64: 28f7 cmp r0, #247 ; 0xf7 + 2be66: bf18 it ne + 2be68: 28f0 cmpne r0, #240 ; 0xf0 + 2be6a: d901 bls.n 2be70 + 2be6c: 2d05 cmp r5, #5 + 2be6e: d013 beq.n 2be98 if (type1 == 0x04) { - 2bd88: 2d04 cmp r5, #4 - 2bd8a: f000 8189 beq.w 2c0a0 + 2be70: 2d04 cmp r5, #4 + 2be72: f000 8189 beq.w 2c188 if (type1 >= 0x05 && type1 <= 0x07) { - 2bd8e: 1f6b subs r3, r5, #5 - 2bd90: 2b02 cmp r3, #2 - 2bd92: f240 8149 bls.w 2c028 + 2be76: 1f6b subs r3, r5, #5 + 2be78: 2b02 cmp r3, #2 + 2be7a: f240 8149 bls.w 2c110 if (type1 == 0x0F) { - 2bd96: 2d0f cmp r5, #15 - 2bd98: d1e8 bne.n 2bd6c + 2be7e: 2d0f cmp r5, #15 + 2be80: d1e8 bne.n 2be54 if (b1 >= 0xF8) { - 2bd9a: 28f7 cmp r0, #247 ; 0xf7 - 2bd9c: d808 bhi.n 2bdb0 + 2be82: 28f7 cmp r0, #247 ; 0xf7 + 2be84: d808 bhi.n 2be98 if (b1 == 0xF0 || usb_midi_msg_sysex_len > 0) { - 2bd9e: 28f0 cmp r0, #240 ; 0xf0 - 2bda0: d003 beq.n 2bdaa - 2bda2: 4b8b ldr r3, [pc, #556] ; (2bfd0 ) - 2bda4: 881b ldrh r3, [r3, #0] - 2bda6: 2b00 cmp r3, #0 - 2bda8: d0e0 beq.n 2bd6c + 2be86: 28f0 cmp r0, #240 ; 0xf0 + 2be88: d003 beq.n 2be92 + 2be8a: 4b8b ldr r3, [pc, #556] ; (2c0b8 ) + 2be8c: 881b ldrh r3, [r3, #0] + 2be8e: 2b00 cmp r3, #0 + 2be90: d0e0 beq.n 2be54 sysex_byte(b1); - 2bdaa: f7ff fcaf bl 2b70c - 2bdae: e7dd b.n 2bd6c + 2be92: f7ff fcaf bl 2b7f4 + 2be96: e7dd b.n 2be54 switch (b1) { - 2bdb0: 38f1 subs r0, #241 ; 0xf1 - 2bdb2: 280e cmp r0, #14 - 2bdb4: d8da bhi.n 2bd6c - 2bdb6: a301 add r3, pc, #4 ; (adr r3, 2bdbc ) - 2bdb8: f853 f020 ldr.w pc, [r3, r0, lsl #2] - 2bdbc: 0002bf3d .word 0x0002bf3d - 2bdc0: 0002bf4f .word 0x0002bf4f - 2bdc4: 0002bf6b .word 0x0002bf6b - 2bdc8: 0002bd6d .word 0x0002bd6d - 2bdcc: 0002bd6d .word 0x0002bd6d - 2bdd0: 0002bf79 .word 0x0002bf79 - 2bdd4: 0002bd6d .word 0x0002bd6d - 2bdd8: 0002bf87 .word 0x0002bf87 - 2bddc: 0002bd6d .word 0x0002bd6d - 2bde0: 0002bec1 .word 0x0002bec1 - 2bde4: 0002bef5 .word 0x0002bef5 - 2bde8: 0002bedd .word 0x0002bedd - 2bdec: 0002bd6d .word 0x0002bd6d - 2bdf0: 0002bf0d .word 0x0002bf0d - 2bdf4: 0002bf25 .word 0x0002bf25 + 2be98: 38f1 subs r0, #241 ; 0xf1 + 2be9a: 280e cmp r0, #14 + 2be9c: d8da bhi.n 2be54 + 2be9e: a301 add r3, pc, #4 ; (adr r3, 2bea4 ) + 2bea0: f853 f020 ldr.w pc, [r3, r0, lsl #2] + 2bea4: 0002c025 .word 0x0002c025 + 2bea8: 0002c037 .word 0x0002c037 + 2beac: 0002c053 .word 0x0002c053 + 2beb0: 0002be55 .word 0x0002be55 + 2beb4: 0002be55 .word 0x0002be55 + 2beb8: 0002c061 .word 0x0002c061 + 2bebc: 0002be55 .word 0x0002be55 + 2bec0: 0002c06f .word 0x0002c06f + 2bec4: 0002be55 .word 0x0002be55 + 2bec8: 0002bfa9 .word 0x0002bfa9 + 2becc: 0002bfdd .word 0x0002bfdd + 2bed0: 0002bfc5 .word 0x0002bfc5 + 2bed4: 0002be55 .word 0x0002be55 + 2bed8: 0002bff5 .word 0x0002bff5 + 2bedc: 0002c00d .word 0x0002c00d if (type1 == 0x08 && type2 == 0x08) { - 2bdf8: 2d08 cmp r5, #8 + 2bee0: 2d08 cmp r5, #8 type2 = (n >> 12) & 15; - 2bdfa: f3c4 3303 ubfx r3, r4, #12, #4 + 2bee2: f3c4 3303 ubfx r3, r4, #12, #4 if (type1 == 0x08 && type2 == 0x08) { - 2bdfe: d118 bne.n 2be32 - 2be00: 2b08 cmp r3, #8 - 2be02: d116 bne.n 2be32 + 2bee6: d118 bne.n 2bf1a + 2bee8: 2b08 cmp r3, #8 + 2beea: d116 bne.n 2bf1a if (usb_midi_handleNoteOff) - 2be04: 4973 ldr r1, [pc, #460] ; (2bfd4 ) + 2beec: 4973 ldr r1, [pc, #460] ; (2c0bc ) usb_midi_msg_type = 0x80; // 0x80 = usbMIDI.NoteOff - 2be06: 2280 movs r2, #128 ; 0x80 - 2be08: 4b73 ldr r3, [pc, #460] ; (2bfd8 ) + 2beee: 2280 movs r2, #128 ; 0x80 + 2bef0: 4b73 ldr r3, [pc, #460] ; (2c0c0 ) (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2be0a: f3c4 4507 ubfx r5, r4, #16, #8 + 2bef2: f3c4 4507 ubfx r5, r4, #16, #8 if (usb_midi_handleNoteOff) - 2be0e: 680f ldr r7, [r1, #0] + 2bef6: 680f ldr r7, [r1, #0] (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2be10: b2f6 uxtb r6, r6 - 2be12: 0e24 lsrs r4, r4, #24 + 2bef8: b2f6 uxtb r6, r6 + 2befa: 0e24 lsrs r4, r4, #24 usb_midi_msg_type = 0x80; // 0x80 = usbMIDI.NoteOff - 2be14: 701a strb r2, [r3, #0] + 2befc: 701a strb r2, [r3, #0] if (usb_midi_handleNoteOff) - 2be16: b11f cbz r7, 2be20 + 2befe: b11f cbz r7, 2bf08 (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2be18: 4629 mov r1, r5 - 2be1a: 4630 mov r0, r6 - 2be1c: 4622 mov r2, r4 - 2be1e: 47b8 blx r7 + 2bf00: 4629 mov r1, r5 + 2bf02: 4630 mov r0, r6 + 2bf04: 4622 mov r2, r4 + 2bf06: 47b8 blx r7 usb_midi_msg_channel = ch; - 2be20: 496e ldr r1, [pc, #440] ; (2bfdc ) + 2bf08: 496e ldr r1, [pc, #440] ; (2c0c4 ) return 1; - 2be22: 2001 movs r0, #1 + 2bf0a: 2001 movs r0, #1 usb_midi_msg_data1 = (n >> 16); - 2be24: 4a6e ldr r2, [pc, #440] ; (2bfe0 ) + 2bf0c: 4a6e ldr r2, [pc, #440] ; (2c0c8 ) usb_midi_msg_data2 = (n >> 24); - 2be26: 4b6f ldr r3, [pc, #444] ; (2bfe4 ) + 2bf0e: 4b6f ldr r3, [pc, #444] ; (2c0cc ) usb_midi_msg_channel = ch; - 2be28: 700e strb r6, [r1, #0] + 2bf10: 700e strb r6, [r1, #0] usb_midi_msg_data1 = (n >> 16); - 2be2a: 7015 strb r5, [r2, #0] + 2bf12: 7015 strb r5, [r2, #0] usb_midi_msg_data2 = (n >> 24); - 2be2c: 701c strb r4, [r3, #0] + 2bf14: 701c strb r4, [r3, #0] } - 2be2e: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 2bf16: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} if (type1 == 0x09 && type2 == 0x09) { - 2be32: 2d09 cmp r5, #9 - 2be34: d114 bne.n 2be60 - 2be36: 2b09 cmp r3, #9 - 2be38: d112 bne.n 2be60 + 2bf1a: 2d09 cmp r5, #9 + 2bf1c: d114 bne.n 2bf48 + 2bf1e: 2b09 cmp r3, #9 + 2bf20: d112 bne.n 2bf48 if ((n >> 24) > 0) { - 2be3a: 0e22 lsrs r2, r4, #24 + 2bf22: 0e22 lsrs r2, r4, #24 usb_midi_msg_type = 0x90; // 0x90 = usbMIDI.NoteOn - 2be3c: 4b66 ldr r3, [pc, #408] ; (2bfd8 ) + 2bf24: 4b66 ldr r3, [pc, #408] ; (2c0c0 ) if ((n >> 24) > 0) { - 2be3e: f000 80b7 beq.w 2bfb0 + 2bf26: f000 80b7 beq.w 2c098 usb_midi_msg_type = 0x90; // 0x90 = usbMIDI.NoteOn - 2be42: 2190 movs r1, #144 ; 0x90 + 2bf2a: 2190 movs r1, #144 ; 0x90 (*usb_midi_handleNoteOn)(ch, (n >> 16), (n >> 24)); - 2be44: f3c4 4507 ubfx r5, r4, #16, #8 - 2be48: b2f6 uxtb r6, r6 + 2bf2c: f3c4 4507 ubfx r5, r4, #16, #8 + 2bf30: b2f6 uxtb r6, r6 usb_midi_msg_type = 0x90; // 0x90 = usbMIDI.NoteOn - 2be4a: 7019 strb r1, [r3, #0] + 2bf32: 7019 strb r1, [r3, #0] (*usb_midi_handleNoteOn)(ch, (n >> 16), (n >> 24)); - 2be4c: b2d4 uxtb r4, r2 + 2bf34: b2d4 uxtb r4, r2 if (usb_midi_handleNoteOn) - 2be4e: 4b66 ldr r3, [pc, #408] ; (2bfe8 ) - 2be50: 681b ldr r3, [r3, #0] - 2be52: 2b00 cmp r3, #0 - 2be54: d0e4 beq.n 2be20 + 2bf36: 4b66 ldr r3, [pc, #408] ; (2c0d0 ) + 2bf38: 681b ldr r3, [r3, #0] + 2bf3a: 2b00 cmp r3, #0 + 2bf3c: d0e4 beq.n 2bf08 (*usb_midi_handleNoteOn)(ch, (n >> 16), (n >> 24)); - 2be56: 4622 mov r2, r4 - 2be58: 4629 mov r1, r5 - 2be5a: 4630 mov r0, r6 - 2be5c: 4798 blx r3 - 2be5e: e7df b.n 2be20 + 2bf3e: 4622 mov r2, r4 + 2bf40: 4629 mov r1, r5 + 2bf42: 4630 mov r0, r6 + 2bf44: 4798 blx r3 + 2bf46: e7df b.n 2bf08 if (type1 == 0x0A && type2 == 0x0A) { - 2be60: 2d0a cmp r5, #10 - 2be62: d105 bne.n 2be70 - 2be64: 2b0a cmp r3, #10 - 2be66: d103 bne.n 2be70 + 2bf48: 2d0a cmp r5, #10 + 2bf4a: d105 bne.n 2bf58 + 2bf4c: 2b0a cmp r3, #10 + 2bf4e: d103 bne.n 2bf58 if (usb_midi_handleVelocityChange) - 2be68: 4b60 ldr r3, [pc, #384] ; (2bfec ) + 2bf50: 4b60 ldr r3, [pc, #384] ; (2c0d4 ) usb_midi_msg_type = 0xA0; // 0xA0 = usbMIDI.AfterTouchPoly - 2be6a: 21a0 movs r1, #160 ; 0xa0 - 2be6c: 4a5a ldr r2, [pc, #360] ; (2bfd8 ) - 2be6e: e006 b.n 2be7e + 2bf52: 21a0 movs r1, #160 ; 0xa0 + 2bf54: 4a5a ldr r2, [pc, #360] ; (2c0c0 ) + 2bf56: e006 b.n 2bf66 if (type1 == 0x0B && type2 == 0x0B) { - 2be70: 2d0b cmp r5, #11 - 2be72: d111 bne.n 2be98 - 2be74: 2b0b cmp r3, #11 - 2be76: d10f bne.n 2be98 + 2bf58: 2d0b cmp r5, #11 + 2bf5a: d111 bne.n 2bf80 + 2bf5c: 2b0b cmp r3, #11 + 2bf5e: d10f bne.n 2bf80 if (usb_midi_handleControlChange) - 2be78: 4b5d ldr r3, [pc, #372] ; (2bff0 ) + 2bf60: 4b5d ldr r3, [pc, #372] ; (2c0d8 ) usb_midi_msg_type = 0xB0; // 0xB0 = usbMIDI.ControlChange - 2be7a: 21b0 movs r1, #176 ; 0xb0 - 2be7c: 4a56 ldr r2, [pc, #344] ; (2bfd8 ) + 2bf62: 21b0 movs r1, #176 ; 0xb0 + 2bf64: 4a56 ldr r2, [pc, #344] ; (2c0c0 ) if (usb_midi_handleControlChange) - 2be7e: 681b ldr r3, [r3, #0] + 2bf66: 681b ldr r3, [r3, #0] (*usb_midi_handleControlChange)(ch, (n >> 16), (n >> 24)); - 2be80: f3c4 4507 ubfx r5, r4, #16, #8 - 2be84: b2f6 uxtb r6, r6 + 2bf68: f3c4 4507 ubfx r5, r4, #16, #8 + 2bf6c: b2f6 uxtb r6, r6 usb_midi_msg_type = 0xB0; // 0xB0 = usbMIDI.ControlChange - 2be86: 7011 strb r1, [r2, #0] + 2bf6e: 7011 strb r1, [r2, #0] (*usb_midi_handleControlChange)(ch, (n >> 16), (n >> 24)); - 2be88: 0e24 lsrs r4, r4, #24 + 2bf70: 0e24 lsrs r4, r4, #24 if (usb_midi_handleControlChange) - 2be8a: 2b00 cmp r3, #0 - 2be8c: d0c8 beq.n 2be20 + 2bf72: 2b00 cmp r3, #0 + 2bf74: d0c8 beq.n 2bf08 (*usb_midi_handleControlChange)(ch, (n >> 16), (n >> 24)); - 2be8e: 4629 mov r1, r5 - 2be90: 4630 mov r0, r6 - 2be92: 4622 mov r2, r4 - 2be94: 4798 blx r3 - 2be96: e7c3 b.n 2be20 + 2bf76: 4629 mov r1, r5 + 2bf78: 4630 mov r0, r6 + 2bf7a: 4622 mov r2, r4 + 2bf7c: 4798 blx r3 + 2bf7e: e7c3 b.n 2bf08 if (type1 == 0x0C && type2 == 0x0C) { - 2be98: 2d0c cmp r5, #12 - 2be9a: f040 8081 bne.w 2bfa0 - 2be9e: 2b0c cmp r3, #12 - 2bea0: d17e bne.n 2bfa0 + 2bf80: 2d0c cmp r5, #12 + 2bf82: f040 8081 bne.w 2c088 + 2bf86: 2b0c cmp r3, #12 + 2bf88: d17e bne.n 2c088 if (usb_midi_handleProgramChange) - 2bea2: 4b54 ldr r3, [pc, #336] ; (2bff4 ) + 2bf8a: 4b54 ldr r3, [pc, #336] ; (2c0dc ) usb_midi_msg_type = 0xC0; // 0xC0 = usbMIDI.ProgramChange - 2bea4: 21c0 movs r1, #192 ; 0xc0 - 2bea6: 4a4c ldr r2, [pc, #304] ; (2bfd8 ) + 2bf8c: 21c0 movs r1, #192 ; 0xc0 + 2bf8e: 4a4c ldr r2, [pc, #304] ; (2c0c0 ) if (usb_midi_handleAfterTouch) - 2bea8: 681b ldr r3, [r3, #0] + 2bf90: 681b ldr r3, [r3, #0] (*usb_midi_handleAfterTouch)(ch, (n >> 16)); - 2beaa: f3c4 4507 ubfx r5, r4, #16, #8 - 2beae: b2f6 uxtb r6, r6 + 2bf92: f3c4 4507 ubfx r5, r4, #16, #8 + 2bf96: b2f6 uxtb r6, r6 usb_midi_msg_type = 0xD0; // 0xD0 = usbMIDI.AfterTouchChannel - 2beb0: 7011 strb r1, [r2, #0] + 2bf98: 7011 strb r1, [r2, #0] (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2beb2: 0e24 lsrs r4, r4, #24 + 2bf9a: 0e24 lsrs r4, r4, #24 if (usb_midi_handleAfterTouch) - 2beb4: 2b00 cmp r3, #0 - 2beb6: d0b3 beq.n 2be20 + 2bf9c: 2b00 cmp r3, #0 + 2bf9e: d0b3 beq.n 2bf08 (*usb_midi_handleAfterTouch)(ch, (n >> 16)); - 2beb8: 4629 mov r1, r5 - 2beba: 4630 mov r0, r6 - 2bebc: 4798 blx r3 - 2bebe: e7af b.n 2be20 + 2bfa0: 4629 mov r1, r5 + 2bfa2: 4630 mov r0, r6 + 2bfa4: 4798 blx r3 + 2bfa6: e7af b.n 2bf08 if (usb_midi_handleStart) { - 2bec0: 4b4d ldr r3, [pc, #308] ; (2bff8 ) - 2bec2: 681b ldr r3, [r3, #0] - 2bec4: 2b00 cmp r3, #0 - 2bec6: f000 80ff beq.w 2c0c8 + 2bfa8: 4b4d ldr r3, [pc, #308] ; (2c0e0 ) + 2bfaa: 681b ldr r3, [r3, #0] + 2bfac: 2b00 cmp r3, #0 + 2bfae: f000 80ff beq.w 2c1b0 (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2beca: f3c4 4507 ubfx r5, r4, #16, #8 + 2bfb2: f3c4 4507 ubfx r5, r4, #16, #8 (*usb_midi_handleSystemReset)(); - 2bece: 4798 blx r3 + 2bfb6: 4798 blx r3 usb_midi_msg_type = b1; - 2bed0: 4a41 ldr r2, [pc, #260] ; (2bfd8 ) + 2bfb8: 4a41 ldr r2, [pc, #260] ; (2c0c0 ) (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2bed2: b2f6 uxtb r6, r6 - 2bed4: 0e24 lsrs r4, r4, #24 + 2bfba: b2f6 uxtb r6, r6 + 2bfbc: 0e24 lsrs r4, r4, #24 usb_midi_msg_type = b1; - 2bed6: f882 8000 strb.w r8, [r2] + 2bfbe: f882 8000 strb.w r8, [r2] goto return_message; - 2beda: e7a1 b.n 2be20 + 2bfc2: e7a1 b.n 2bf08 if (usb_midi_handleStop) { - 2bedc: 4b47 ldr r3, [pc, #284] ; (2bffc ) - 2bede: 681b ldr r3, [r3, #0] - 2bee0: 2b00 cmp r3, #0 - 2bee2: d1f2 bne.n 2beca + 2bfc4: 4b47 ldr r3, [pc, #284] ; (2c0e4 ) + 2bfc6: 681b ldr r3, [r3, #0] + 2bfc8: 2b00 cmp r3, #0 + 2bfca: d1f2 bne.n 2bfb2 } else if (usb_midi_handleRealTimeSystem) { - 2bee4: 4b46 ldr r3, [pc, #280] ; (2c000 ) - 2bee6: 681b ldr r3, [r3, #0] - 2bee8: b32b cbz r3, 2bf36 + 2bfcc: 4b46 ldr r3, [pc, #280] ; (2c0e8 ) + 2bfce: 681b ldr r3, [r3, #0] + 2bfd0: b32b cbz r3, 2c01e (*usb_midi_handleRealTimeSystem)(0xFC); - 2beea: 20fc movs r0, #252 ; 0xfc + 2bfd2: 20fc movs r0, #252 ; 0xfc (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2beec: f3c4 4507 ubfx r5, r4, #16, #8 + 2bfd4: f3c4 4507 ubfx r5, r4, #16, #8 (*usb_midi_handleRealTimeSystem)(0xFC); - 2bef0: 4798 blx r3 - 2bef2: e7ed b.n 2bed0 + 2bfd8: 4798 blx r3 + 2bfda: e7ed b.n 2bfb8 if (usb_midi_handleContinue) { - 2bef4: 4b43 ldr r3, [pc, #268] ; (2c004 ) - 2bef6: 681b ldr r3, [r3, #0] - 2bef8: 2b00 cmp r3, #0 - 2befa: d1e6 bne.n 2beca + 2bfdc: 4b43 ldr r3, [pc, #268] ; (2c0ec ) + 2bfde: 681b ldr r3, [r3, #0] + 2bfe0: 2b00 cmp r3, #0 + 2bfe2: d1e6 bne.n 2bfb2 } else if (usb_midi_handleRealTimeSystem) { - 2befc: 4b40 ldr r3, [pc, #256] ; (2c000 ) - 2befe: 681b ldr r3, [r3, #0] - 2bf00: b1cb cbz r3, 2bf36 + 2bfe4: 4b40 ldr r3, [pc, #256] ; (2c0e8 ) + 2bfe6: 681b ldr r3, [r3, #0] + 2bfe8: b1cb cbz r3, 2c01e (*usb_midi_handleRealTimeSystem)(0xFB); - 2bf02: 20fb movs r0, #251 ; 0xfb + 2bfea: 20fb movs r0, #251 ; 0xfb (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2bf04: f3c4 4507 ubfx r5, r4, #16, #8 + 2bfec: f3c4 4507 ubfx r5, r4, #16, #8 (*usb_midi_handleRealTimeSystem)(0xFB); - 2bf08: 4798 blx r3 - 2bf0a: e7e1 b.n 2bed0 + 2bff0: 4798 blx r3 + 2bff2: e7e1 b.n 2bfb8 if (usb_midi_handleActiveSensing) { - 2bf0c: 4b3e ldr r3, [pc, #248] ; (2c008 ) - 2bf0e: 681b ldr r3, [r3, #0] - 2bf10: 2b00 cmp r3, #0 - 2bf12: d1da bne.n 2beca + 2bff4: 4b3e ldr r3, [pc, #248] ; (2c0f0 ) + 2bff6: 681b ldr r3, [r3, #0] + 2bff8: 2b00 cmp r3, #0 + 2bffa: d1da bne.n 2bfb2 } else if (usb_midi_handleRealTimeSystem) { - 2bf14: 4b3a ldr r3, [pc, #232] ; (2c000 ) - 2bf16: 681b ldr r3, [r3, #0] - 2bf18: b16b cbz r3, 2bf36 + 2bffc: 4b3a ldr r3, [pc, #232] ; (2c0e8 ) + 2bffe: 681b ldr r3, [r3, #0] + 2c000: b16b cbz r3, 2c01e (*usb_midi_handleRealTimeSystem)(0xFE); - 2bf1a: 20fe movs r0, #254 ; 0xfe + 2c002: 20fe movs r0, #254 ; 0xfe (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2bf1c: f3c4 4507 ubfx r5, r4, #16, #8 + 2c004: f3c4 4507 ubfx r5, r4, #16, #8 (*usb_midi_handleRealTimeSystem)(0xFE); - 2bf20: 4798 blx r3 - 2bf22: e7d5 b.n 2bed0 + 2c008: 4798 blx r3 + 2c00a: e7d5 b.n 2bfb8 if (usb_midi_handleSystemReset) { - 2bf24: 4b39 ldr r3, [pc, #228] ; (2c00c ) - 2bf26: 681b ldr r3, [r3, #0] - 2bf28: 2b00 cmp r3, #0 - 2bf2a: d1ce bne.n 2beca + 2c00c: 4b39 ldr r3, [pc, #228] ; (2c0f4 ) + 2c00e: 681b ldr r3, [r3, #0] + 2c010: 2b00 cmp r3, #0 + 2c012: d1ce bne.n 2bfb2 } else if (usb_midi_handleRealTimeSystem) { - 2bf2c: 4b34 ldr r3, [pc, #208] ; (2c000 ) - 2bf2e: 681b ldr r3, [r3, #0] - 2bf30: b10b cbz r3, 2bf36 + 2c014: 4b34 ldr r3, [pc, #208] ; (2c0e8 ) + 2c016: 681b ldr r3, [r3, #0] + 2c018: b10b cbz r3, 2c01e (*usb_midi_handleRealTimeSystem)(0xFF); - 2bf32: 20ff movs r0, #255 ; 0xff - 2bf34: 4798 blx r3 + 2c01a: 20ff movs r0, #255 ; 0xff + 2c01c: 4798 blx r3 (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2bf36: f3c4 4507 ubfx r5, r4, #16, #8 - 2bf3a: e7c9 b.n 2bed0 + 2c01e: f3c4 4507 ubfx r5, r4, #16, #8 + 2c022: e7c9 b.n 2bfb8 if (usb_midi_handleTimeCodeQuarterFrame) { - 2bf3c: 4b34 ldr r3, [pc, #208] ; (2c010 ) + 2c024: 4b34 ldr r3, [pc, #208] ; (2c0f8 ) (*usb_midi_handleTimeCodeQuarterFrame)(n >> 16); - 2bf3e: f3c4 4507 ubfx r5, r4, #16, #8 + 2c026: f3c4 4507 ubfx r5, r4, #16, #8 if (usb_midi_handleTimeCodeQuarterFrame) { - 2bf42: 681b ldr r3, [r3, #0] - 2bf44: 2b00 cmp r3, #0 - 2bf46: d0c3 beq.n 2bed0 + 2c02a: 681b ldr r3, [r3, #0] + 2c02c: 2b00 cmp r3, #0 + 2c02e: d0c3 beq.n 2bfb8 (*usb_midi_handleSongSelect)(n >> 16); - 2bf48: 4628 mov r0, r5 - 2bf4a: 4798 blx r3 - 2bf4c: e7c0 b.n 2bed0 + 2c030: 4628 mov r0, r5 + 2c032: 4798 blx r3 + 2c034: e7c0 b.n 2bfb8 if (usb_midi_handleSongPosition) { - 2bf4e: 4b31 ldr r3, [pc, #196] ; (2c014 ) - 2bf50: 681a ldr r2, [r3, #0] - 2bf52: 2a00 cmp r2, #0 - 2bf54: d0ef beq.n 2bf36 + 2c036: 4b31 ldr r3, [pc, #196] ; (2c0fc ) + 2c038: 681a ldr r2, [r3, #0] + 2c03a: 2a00 cmp r2, #0 + 2c03c: d0ef beq.n 2c01e ((n >> 16) & 0x7F) | ((n >> 17) & 0x3F80)); - 2bf56: 0c63 lsrs r3, r4, #17 - 2bf58: f3c4 4006 ubfx r0, r4, #16, #7 - 2bf5c: 0c25 lsrs r5, r4, #16 - 2bf5e: f403 537e and.w r3, r3, #16256 ; 0x3f80 + 2c03e: 0c63 lsrs r3, r4, #17 + 2c040: f3c4 4006 ubfx r0, r4, #16, #7 + 2c044: 0c25 lsrs r5, r4, #16 + 2c046: f403 537e and.w r3, r3, #16256 ; 0x3f80 (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2bf62: b2ed uxtb r5, r5 + 2c04a: b2ed uxtb r5, r5 (*usb_midi_handleSongPosition)( - 2bf64: 4318 orrs r0, r3 - 2bf66: 4790 blx r2 - 2bf68: e7b2 b.n 2bed0 + 2c04c: 4318 orrs r0, r3 + 2c04e: 4790 blx r2 + 2c050: e7b2 b.n 2bfb8 if (usb_midi_handleSongSelect) { - 2bf6a: 4b2b ldr r3, [pc, #172] ; (2c018 ) + 2c052: 4b2b ldr r3, [pc, #172] ; (2c100 ) (*usb_midi_handleSongSelect)(n >> 16); - 2bf6c: f3c4 4507 ubfx r5, r4, #16, #8 + 2c054: f3c4 4507 ubfx r5, r4, #16, #8 if (usb_midi_handleSongSelect) { - 2bf70: 681b ldr r3, [r3, #0] - 2bf72: 2b00 cmp r3, #0 - 2bf74: d1e8 bne.n 2bf48 - 2bf76: e7ab b.n 2bed0 + 2c058: 681b ldr r3, [r3, #0] + 2c05a: 2b00 cmp r3, #0 + 2c05c: d1e8 bne.n 2c030 + 2c05e: e7ab b.n 2bfb8 if (usb_midi_handleTuneRequest) { - 2bf78: 4b28 ldr r3, [pc, #160] ; (2c01c ) + 2c060: 4b28 ldr r3, [pc, #160] ; (2c104 ) (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2bf7a: f3c4 4507 ubfx r5, r4, #16, #8 + 2c062: f3c4 4507 ubfx r5, r4, #16, #8 if (usb_midi_handleTuneRequest) { - 2bf7e: 681b ldr r3, [r3, #0] - 2bf80: 2b00 cmp r3, #0 - 2bf82: d1a4 bne.n 2bece - 2bf84: e7a4 b.n 2bed0 + 2c066: 681b ldr r3, [r3, #0] + 2c068: 2b00 cmp r3, #0 + 2c06a: d1a4 bne.n 2bfb6 + 2c06c: e7a4 b.n 2bfb8 if (usb_midi_handleClock) { - 2bf86: 4b26 ldr r3, [pc, #152] ; (2c020 ) - 2bf88: 681b ldr r3, [r3, #0] - 2bf8a: 2b00 cmp r3, #0 - 2bf8c: d19d bne.n 2beca + 2c06e: 4b26 ldr r3, [pc, #152] ; (2c108 ) + 2c070: 681b ldr r3, [r3, #0] + 2c072: 2b00 cmp r3, #0 + 2c074: d19d bne.n 2bfb2 } else if (usb_midi_handleRealTimeSystem) { - 2bf8e: 4b1c ldr r3, [pc, #112] ; (2c000 ) - 2bf90: 681b ldr r3, [r3, #0] - 2bf92: 2b00 cmp r3, #0 - 2bf94: d0cf beq.n 2bf36 + 2c076: 4b1c ldr r3, [pc, #112] ; (2c0e8 ) + 2c078: 681b ldr r3, [r3, #0] + 2c07a: 2b00 cmp r3, #0 + 2c07c: d0cf beq.n 2c01e (*usb_midi_handleRealTimeSystem)(0xF8); - 2bf96: 20f8 movs r0, #248 ; 0xf8 + 2c07e: 20f8 movs r0, #248 ; 0xf8 (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2bf98: f3c4 4507 ubfx r5, r4, #16, #8 + 2c080: f3c4 4507 ubfx r5, r4, #16, #8 (*usb_midi_handleRealTimeSystem)(0xF8); - 2bf9c: 4798 blx r3 - 2bf9e: e797 b.n 2bed0 + 2c084: 4798 blx r3 + 2c086: e797 b.n 2bfb8 if (type1 == 0x0D && type2 == 0x0D) { - 2bfa0: 2d0d cmp r5, #13 - 2bfa2: d162 bne.n 2c06a - 2bfa4: 2b0d cmp r3, #13 - 2bfa6: d160 bne.n 2c06a + 2c088: 2d0d cmp r5, #13 + 2c08a: d162 bne.n 2c152 + 2c08c: 2b0d cmp r3, #13 + 2c08e: d160 bne.n 2c152 if (usb_midi_handleAfterTouch) - 2bfa8: 4b1e ldr r3, [pc, #120] ; (2c024 ) + 2c090: 4b1e ldr r3, [pc, #120] ; (2c10c ) usb_midi_msg_type = 0xD0; // 0xD0 = usbMIDI.AfterTouchChannel - 2bfaa: 21d0 movs r1, #208 ; 0xd0 - 2bfac: 4a0a ldr r2, [pc, #40] ; (2bfd8 ) - 2bfae: e77b b.n 2bea8 + 2c092: 21d0 movs r1, #208 ; 0xd0 + 2c094: 4a0a ldr r2, [pc, #40] ; (2c0c0 ) + 2c096: e77b b.n 2bf90 usb_midi_msg_type = 0x80; // 0x80 = usbMIDI.NoteOff - 2bfb0: 2180 movs r1, #128 ; 0x80 + 2c098: 2180 movs r1, #128 ; 0x80 (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2bfb2: b2f6 uxtb r6, r6 - 2bfb4: f3c4 4507 ubfx r5, r4, #16, #8 + 2c09a: b2f6 uxtb r6, r6 + 2c09c: f3c4 4507 ubfx r5, r4, #16, #8 usb_midi_msg_type = 0x80; // 0x80 = usbMIDI.NoteOff - 2bfb8: 7019 strb r1, [r3, #0] + 2c0a0: 7019 strb r1, [r3, #0] if (usb_midi_handleNoteOff) - 2bfba: 4b06 ldr r3, [pc, #24] ; (2bfd4 ) - 2bfbc: 681b ldr r3, [r3, #0] - 2bfbe: 2b00 cmp r3, #0 - 2bfc0: d079 beq.n 2c0b6 + 2c0a2: 4b06 ldr r3, [pc, #24] ; (2c0bc ) + 2c0a4: 681b ldr r3, [r3, #0] + 2c0a6: 2b00 cmp r3, #0 + 2c0a8: d079 beq.n 2c19e (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2bfc2: 4629 mov r1, r5 - 2bfc4: 4630 mov r0, r6 - 2bfc6: 4614 mov r4, r2 - 2bfc8: 4798 blx r3 - 2bfca: e729 b.n 2be20 - 2bfcc: 2000bc90 .word 0x2000bc90 - 2bfd0: 2000bc78 .word 0x2000bc78 - 2bfd4: 2000bb04 .word 0x2000bb04 - 2bfd8: 2000bc94 .word 0x2000bc94 - 2bfdc: 2000bc91 .word 0x2000bc91 - 2bfe0: 2000bc92 .word 0x2000bc92 - 2bfe4: 2000bc93 .word 0x2000bc93 - 2bfe8: 2000bb08 .word 0x2000bb08 - 2bfec: 2000bb3c .word 0x2000bb3c - 2bff0: 2000bb00 .word 0x2000bb00 - 2bff4: 2000bb10 .word 0x2000bb10 - 2bff8: 2000bb20 .word 0x2000bb20 - 2bffc: 2000bb24 .word 0x2000bb24 - 2c000: 2000bb14 .word 0x2000bb14 - 2c004: 2000bafc .word 0x2000bafc - 2c008: 2000baf0 .word 0x2000baf0 - 2c00c: 2000bb30 .word 0x2000bb30 - 2c010: 2000bb34 .word 0x2000bb34 - 2c014: 2000bb18 .word 0x2000bb18 - 2c018: 2000bb1c .word 0x2000bb1c - 2c01c: 2000bb38 .word 0x2000bb38 - 2c020: 2000baf8 .word 0x2000baf8 - 2c024: 2000baf4 .word 0x2000baf4 + 2c0aa: 4629 mov r1, r5 + 2c0ac: 4630 mov r0, r6 + 2c0ae: 4614 mov r4, r2 + 2c0b0: 4798 blx r3 + 2c0b2: e729 b.n 2bf08 + 2c0b4: 2000bcb0 .word 0x2000bcb0 + 2c0b8: 2000bc98 .word 0x2000bc98 + 2c0bc: 2000bb24 .word 0x2000bb24 + 2c0c0: 2000bcb4 .word 0x2000bcb4 + 2c0c4: 2000bcb1 .word 0x2000bcb1 + 2c0c8: 2000bcb2 .word 0x2000bcb2 + 2c0cc: 2000bcb3 .word 0x2000bcb3 + 2c0d0: 2000bb28 .word 0x2000bb28 + 2c0d4: 2000bb5c .word 0x2000bb5c + 2c0d8: 2000bb20 .word 0x2000bb20 + 2c0dc: 2000bb30 .word 0x2000bb30 + 2c0e0: 2000bb40 .word 0x2000bb40 + 2c0e4: 2000bb44 .word 0x2000bb44 + 2c0e8: 2000bb34 .word 0x2000bb34 + 2c0ec: 2000bb1c .word 0x2000bb1c + 2c0f0: 2000bb10 .word 0x2000bb10 + 2c0f4: 2000bb50 .word 0x2000bb50 + 2c0f8: 2000bb54 .word 0x2000bb54 + 2c0fc: 2000bb38 .word 0x2000bb38 + 2c100: 2000bb3c .word 0x2000bb3c + 2c104: 2000bb58 .word 0x2000bb58 + 2c108: 2000bb18 .word 0x2000bb18 + 2c10c: 2000bb14 .word 0x2000bb14 sysex_byte(b1); - 2c028: f7ff fb70 bl 2b70c + 2c110: f7ff fb70 bl 2b7f4 if (type1 >= 0x06) sysex_byte(n >> 16); - 2c02c: 2d05 cmp r5, #5 - 2c02e: d008 beq.n 2c042 - 2c030: f3c4 4007 ubfx r0, r4, #16, #8 - 2c034: f7ff fb6a bl 2b70c + 2c114: 2d05 cmp r5, #5 + 2c116: d008 beq.n 2c12a + 2c118: f3c4 4007 ubfx r0, r4, #16, #8 + 2c11c: f7ff fb6a bl 2b7f4 if (type1 == 0x07) sysex_byte(n >> 24); - 2c038: 2d07 cmp r5, #7 - 2c03a: d102 bne.n 2c042 - 2c03c: 0e20 lsrs r0, r4, #24 - 2c03e: f7ff fb65 bl 2b70c + 2c120: 2d07 cmp r5, #7 + 2c122: d102 bne.n 2c12a + 2c124: 0e20 lsrs r0, r4, #24 + 2c126: f7ff fb65 bl 2b7f4 uint16_t len = usb_midi_msg_sysex_len; - 2c042: 4b2a ldr r3, [pc, #168] ; (2c0ec ) + 2c12a: 4b2a ldr r3, [pc, #168] ; (2c1d4 ) usb_midi_msg_data1 = len; - 2c044: 482a ldr r0, [pc, #168] ; (2c0f0 ) + 2c12c: 482a ldr r0, [pc, #168] ; (2c1d8 ) uint16_t len = usb_midi_msg_sysex_len; - 2c046: 8819 ldrh r1, [r3, #0] + 2c12e: 8819 ldrh r1, [r3, #0] usb_midi_msg_data2 = len >> 8; - 2c048: 4a2a ldr r2, [pc, #168] ; (2c0f4 ) + 2c130: 4a2a ldr r2, [pc, #168] ; (2c1dc ) usb_midi_msg_data1 = len; - 2c04a: 7001 strb r1, [r0, #0] + 2c132: 7001 strb r1, [r0, #0] usb_midi_msg_data2 = len >> 8; - 2c04c: 0a08 lsrs r0, r1, #8 + 2c134: 0a08 lsrs r0, r1, #8 if (usb_midi_handleSysExPartial) { - 2c04e: 4c2a ldr r4, [pc, #168] ; (2c0f8 ) + 2c136: 4c2a ldr r4, [pc, #168] ; (2c1e0 ) usb_midi_msg_data2 = len >> 8; - 2c050: 7010 strb r0, [r2, #0] + 2c138: 7010 strb r0, [r2, #0] usb_midi_msg_sysex_len = 0; - 2c052: 2000 movs r0, #0 + 2c13a: 2000 movs r0, #0 usb_midi_msg_type = 0xF0; // 0xF0 = usbMIDI.SystemExclusive - 2c054: 4a29 ldr r2, [pc, #164] ; (2c0fc ) + 2c13c: 4a29 ldr r2, [pc, #164] ; (2c1e4 ) usb_midi_msg_sysex_len = 0; - 2c056: 8018 strh r0, [r3, #0] + 2c13e: 8018 strh r0, [r3, #0] usb_midi_msg_type = 0xF0; // 0xF0 = usbMIDI.SystemExclusive - 2c058: 23f0 movs r3, #240 ; 0xf0 + 2c140: 23f0 movs r3, #240 ; 0xf0 if (usb_midi_handleSysExPartial) { - 2c05a: 6824 ldr r4, [r4, #0] + 2c142: 6824 ldr r4, [r4, #0] usb_midi_msg_type = 0xF0; // 0xF0 = usbMIDI.SystemExclusive - 2c05c: 7013 strb r3, [r2, #0] + 2c144: 7013 strb r3, [r2, #0] if (usb_midi_handleSysExPartial) { - 2c05e: b364 cbz r4, 2c0ba + 2c146: b364 cbz r4, 2c1a2 (*usb_midi_handleSysExPartial)(usb_midi_msg_sysex, len, 1); - 2c060: 4827 ldr r0, [pc, #156] ; (2c100 ) - 2c062: 2201 movs r2, #1 - 2c064: 47a0 blx r4 + 2c148: 4827 ldr r0, [pc, #156] ; (2c1e8 ) + 2c14a: 2201 movs r2, #1 + 2c14c: 47a0 blx r4 return 1; - 2c066: 2001 movs r0, #1 - 2c068: e681 b.n 2bd6e + 2c14e: 2001 movs r0, #1 + 2c150: e681 b.n 2be56 if (type1 == 0x0E && type2 == 0x0E) { - 2c06a: 2d0e cmp r5, #14 - 2c06c: f47f ae7e bne.w 2bd6c - 2c070: 2b0e cmp r3, #14 - 2c072: f47f ae7b bne.w 2bd6c + 2c152: 2d0e cmp r5, #14 + 2c154: f47f ae7e bne.w 2be54 + 2c158: 2b0e cmp r3, #14 + 2c15a: f47f ae7b bne.w 2be54 if (usb_midi_handlePitchChange) { - 2c076: 4b23 ldr r3, [pc, #140] ; (2c104 ) + 2c15e: 4b23 ldr r3, [pc, #140] ; (2c1ec ) usb_midi_msg_type = 0xE0; // 0xE0 = usbMIDI.PitchBend - 2c078: 21e0 movs r1, #224 ; 0xe0 - 2c07a: 4a20 ldr r2, [pc, #128] ; (2c0fc ) + 2c160: 21e0 movs r1, #224 ; 0xe0 + 2c162: 4a20 ldr r2, [pc, #128] ; (2c1e4 ) if (usb_midi_handlePitchChange) { - 2c07c: 681b ldr r3, [r3, #0] + 2c164: 681b ldr r3, [r3, #0] usb_midi_msg_type = 0xE0; // 0xE0 = usbMIDI.PitchBend - 2c07e: 7011 strb r1, [r2, #0] + 2c166: 7011 strb r1, [r2, #0] if (usb_midi_handlePitchChange) { - 2c080: b363 cbz r3, 2c0dc + 2c168: b363 cbz r3, 2c1c4 int value = ((n >> 16) & 0x7F) | ((n >> 17) & 0x3F80); - 2c082: 0c61 lsrs r1, r4, #17 - 2c084: f3c4 4206 ubfx r2, r4, #16, #7 + 2c16a: 0c61 lsrs r1, r4, #17 + 2c16c: f3c4 4206 ubfx r2, r4, #16, #7 (*usb_midi_handlePitchChange)(ch, value); - 2c088: b2f6 uxtb r6, r6 + 2c170: b2f6 uxtb r6, r6 int value = ((n >> 16) & 0x7F) | ((n >> 17) & 0x3F80); - 2c08a: f401 517e and.w r1, r1, #16256 ; 0x3f80 - 2c08e: 0c25 lsrs r5, r4, #16 + 2c172: f401 517e and.w r1, r1, #16256 ; 0x3f80 + 2c176: 0c25 lsrs r5, r4, #16 (*usb_midi_handlePitchChange)(ch, value); - 2c090: 4630 mov r0, r6 + 2c178: 4630 mov r0, r6 (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2c092: 0e24 lsrs r4, r4, #24 + 2c17a: 0e24 lsrs r4, r4, #24 int value = ((n >> 16) & 0x7F) | ((n >> 17) & 0x3F80); - 2c094: 4311 orrs r1, r2 + 2c17c: 4311 orrs r1, r2 (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2c096: b2ed uxtb r5, r5 + 2c17e: b2ed uxtb r5, r5 (*usb_midi_handlePitchChange)(ch, value); - 2c098: f5a1 5100 sub.w r1, r1, #8192 ; 0x2000 - 2c09c: 4798 blx r3 - 2c09e: e6bf b.n 2be20 + 2c180: f5a1 5100 sub.w r1, r1, #8192 ; 0x2000 + 2c184: 4798 blx r3 + 2c186: e6bf b.n 2bf08 sysex_byte(n >> 8); - 2c0a0: f7ff fb34 bl 2b70c + 2c188: f7ff fb34 bl 2b7f4 sysex_byte(n >> 16); - 2c0a4: f3c4 4007 ubfx r0, r4, #16, #8 - 2c0a8: f7ff fb30 bl 2b70c + 2c18c: f3c4 4007 ubfx r0, r4, #16, #8 + 2c190: f7ff fb30 bl 2b7f4 sysex_byte(n >> 24); - 2c0ac: 0e20 lsrs r0, r4, #24 - 2c0ae: f7ff fb2d bl 2b70c + 2c194: 0e20 lsrs r0, r4, #24 + 2c196: f7ff fb2d bl 2b7f4 return 0; - 2c0b2: 2000 movs r0, #0 - 2c0b4: e65b b.n 2bd6e + 2c19a: 2000 movs r0, #0 + 2c19c: e65b b.n 2be56 (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2c0b6: 461c mov r4, r3 - 2c0b8: e6b2 b.n 2be20 + 2c19e: 461c mov r4, r3 + 2c1a0: e6b2 b.n 2bf08 } else if (usb_midi_handleSysExComplete) { - 2c0ba: 4b13 ldr r3, [pc, #76] ; (2c108 ) - 2c0bc: 681b ldr r3, [r3, #0] - 2c0be: b193 cbz r3, 2c0e6 + 2c1a2: 4b13 ldr r3, [pc, #76] ; (2c1f0 ) + 2c1a4: 681b ldr r3, [r3, #0] + 2c1a6: b193 cbz r3, 2c1ce (*usb_midi_handleSysExComplete)(usb_midi_msg_sysex, len); - 2c0c0: 480f ldr r0, [pc, #60] ; (2c100 ) - 2c0c2: 4798 blx r3 + 2c1a8: 480f ldr r0, [pc, #60] ; (2c1e8 ) + 2c1aa: 4798 blx r3 return 1; - 2c0c4: 2001 movs r0, #1 - 2c0c6: e652 b.n 2bd6e + 2c1ac: 2001 movs r0, #1 + 2c1ae: e652 b.n 2be56 } else if (usb_midi_handleRealTimeSystem) { - 2c0c8: 4b10 ldr r3, [pc, #64] ; (2c10c ) - 2c0ca: 681b ldr r3, [r3, #0] - 2c0cc: 2b00 cmp r3, #0 - 2c0ce: f43f af32 beq.w 2bf36 + 2c1b0: 4b10 ldr r3, [pc, #64] ; (2c1f4 ) + 2c1b2: 681b ldr r3, [r3, #0] + 2c1b4: 2b00 cmp r3, #0 + 2c1b6: f43f af32 beq.w 2c01e (*usb_midi_handleRealTimeSystem)(0xFA); - 2c0d2: 20fa movs r0, #250 ; 0xfa + 2c1ba: 20fa movs r0, #250 ; 0xfa (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2c0d4: f3c4 4507 ubfx r5, r4, #16, #8 + 2c1bc: f3c4 4507 ubfx r5, r4, #16, #8 (*usb_midi_handleRealTimeSystem)(0xFA); - 2c0d8: 4798 blx r3 - 2c0da: e6f9 b.n 2bed0 + 2c1c0: 4798 blx r3 + 2c1c2: e6f9 b.n 2bfb8 (*usb_midi_handleNoteOff)(ch, (n >> 16), (n >> 24)); - 2c0dc: f3c4 4507 ubfx r5, r4, #16, #8 - 2c0e0: b2f6 uxtb r6, r6 - 2c0e2: 0e24 lsrs r4, r4, #24 - 2c0e4: e69c b.n 2be20 + 2c1c4: f3c4 4507 ubfx r5, r4, #16, #8 + 2c1c8: b2f6 uxtb r6, r6 + 2c1ca: 0e24 lsrs r4, r4, #24 + 2c1cc: e69c b.n 2bf08 return 1; - 2c0e6: 2001 movs r0, #1 - 2c0e8: e641 b.n 2bd6e - 2c0ea: bf00 nop - 2c0ec: 2000bc78 .word 0x2000bc78 - 2c0f0: 2000bc92 .word 0x2000bc92 - 2c0f4: 2000bc93 .word 0x2000bc93 - 2c0f8: 2000bb2c .word 0x2000bb2c - 2c0fc: 2000bc94 .word 0x2000bc94 - 2c100: 2000bb40 .word 0x2000bb40 - 2c104: 2000bb0c .word 0x2000bb0c - 2c108: 2000bb28 .word 0x2000bb28 - 2c10c: 2000bb14 .word 0x2000bb14 - -0002c110 : + 2c1ce: 2001 movs r0, #1 + 2c1d0: e641 b.n 2be56 + 2c1d2: bf00 nop + 2c1d4: 2000bc98 .word 0x2000bc98 + 2c1d8: 2000bcb2 .word 0x2000bcb2 + 2c1dc: 2000bcb3 .word 0x2000bcb3 + 2c1e0: 2000bb4c .word 0x2000bb4c + 2c1e4: 2000bcb4 .word 0x2000bcb4 + 2c1e8: 2000bb60 .word 0x2000bb60 + 2c1ec: 2000bb2c .word 0x2000bb2c + 2c1f0: 2000bb48 .word 0x2000bb48 + 2c1f4: 2000bb34 .word 0x2000bb34 + +0002c1f8 : /*************************************************************************/ /** Receive **/ /*************************************************************************/ static void rx_queue_transfer(int i) { - 2c110: b5f8 push {r3, r4, r5, r6, r7, lr} + 2c1f8: b5f8 push {r3, r4, r5, r6, r7, lr} NVIC_DISABLE_IRQ(IRQ_USB1); void *buffer = rx_buffer + i * SEREMU_RX_SIZE; - 2c112: 4d10 ldr r5, [pc, #64] ; (2c154 ) + 2c1fa: 4d10 ldr r5, [pc, #64] ; (2c23c ) NVIC_DISABLE_IRQ(IRQ_USB1); - 2c114: f04f 26e0 mov.w r6, #3758153728 ; 0xe000e000 + 2c1fc: f04f 26e0 mov.w r6, #3758153728 ; 0xe000e000 usb_prepare_transfer(rx_transfer + i, buffer, SEREMU_RX_SIZE, i); - 2c118: 4c0f ldr r4, [pc, #60] ; (2c158 ) + 2c200: 4c0f ldr r4, [pc, #60] ; (2c240 ) NVIC_DISABLE_IRQ(IRQ_USB1); - 2c11a: f44f 3700 mov.w r7, #131072 ; 0x20000 + 2c202: f44f 3700 mov.w r7, #131072 ; 0x20000 void *buffer = rx_buffer + i * SEREMU_RX_SIZE; - 2c11e: eb05 1540 add.w r5, r5, r0, lsl #5 + 2c206: eb05 1540 add.w r5, r5, r0, lsl #5 { - 2c122: 4603 mov r3, r0 + 2c20a: 4603 mov r3, r0 usb_prepare_transfer(rx_transfer + i, buffer, SEREMU_RX_SIZE, i); - 2c124: eb04 1440 add.w r4, r4, r0, lsl #5 - 2c128: 2220 movs r2, #32 - 2c12a: 4629 mov r1, r5 + 2c20c: eb04 1440 add.w r4, r4, r0, lsl #5 + 2c210: 2220 movs r2, #32 + 2c212: 4629 mov r1, r5 NVIC_DISABLE_IRQ(IRQ_USB1); - 2c12c: f8c6 718c str.w r7, [r6, #396] ; 0x18c + 2c214: f8c6 718c str.w r7, [r6, #396] ; 0x18c usb_prepare_transfer(rx_transfer + i, buffer, SEREMU_RX_SIZE, i); - 2c130: 4620 mov r0, r4 - 2c132: f7ff fa75 bl 2b620 + 2c218: 4620 mov r0, r4 + 2c21a: f7ff fa75 bl 2b708 asm("dsb"); - 2c136: f3bf 8f4f dsb sy + 2c21e: f3bf 8f4f dsb sy SCB_CACHE_DCIMVAC = location; - 2c13a: f8c6 5f5c str.w r5, [r6, #3932] ; 0xf5c + 2c222: f8c6 5f5c str.w r5, [r6, #3932] ; 0xf5c asm("dsb"); - 2c13e: f3bf 8f4f dsb sy + 2c226: f3bf 8f4f dsb sy asm("isb"); - 2c142: f3bf 8f6f isb sy + 2c22a: f3bf 8f6f isb sy arm_dcache_delete(buffer, SEREMU_RX_SIZE); usb_receive(SEREMU_RX_ENDPOINT, rx_transfer + i); - 2c146: 2002 movs r0, #2 - 2c148: 4621 mov r1, r4 - 2c14a: f7ff fa95 bl 2b678 + 2c22e: 2002 movs r0, #2 + 2c230: 4621 mov r1, r4 + 2c232: f7ff fa95 bl 2b760 NVIC_ENABLE_IRQ(IRQ_USB1); - 2c14e: f8c6 710c str.w r7, [r6, #268] ; 0x10c + 2c236: f8c6 710c str.w r7, [r6, #268] ; 0x10c } - 2c152: bdf8 pop {r3, r4, r5, r6, r7, pc} - 2c154: 20201480 .word 0x20201480 - 2c158: 2000a420 .word 0x2000a420 + 2c23a: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2c23c: 20201480 .word 0x20201480 + 2c240: 2000a440 .word 0x2000a440 -0002c15c : +0002c244 : // called by USB interrupt when any packet is received static void rx_event(transfer_t *t) { int len = SEREMU_RX_SIZE - ((t->status >> 16) & 0x7FFF); - 2c15c: 6843 ldr r3, [r0, #4] + 2c244: 6843 ldr r3, [r0, #4] int i = t->callback_param; - 2c15e: 69c0 ldr r0, [r0, #28] + 2c246: 69c0 ldr r0, [r0, #28] int len = SEREMU_RX_SIZE - ((t->status >> 16) & 0x7FFF); - 2c160: f3c3 430e ubfx r3, r3, #16, #15 + 2c248: f3c3 430e ubfx r3, r3, #16, #15 printf("rx event, len=%d, i=%d\n", len, i); if (len == SEREMU_RX_SIZE && rx_buffer[i * SEREMU_RX_SIZE] != 0) { - 2c164: b9c3 cbnz r3, 2c198 - 2c166: 490e ldr r1, [pc, #56] ; (2c1a0 ) - 2c168: 0142 lsls r2, r0, #5 - 2c16a: 5c8a ldrb r2, [r1, r2] - 2c16c: b1a2 cbz r2, 2c198 + 2c24c: b9c3 cbnz r3, 2c280 + 2c24e: 490e ldr r1, [pc, #56] ; (2c288 ) + 2c250: 0142 lsls r2, r0, #5 + 2c252: 5c8a ldrb r2, [r1, r2] + 2c254: b1a2 cbz r2, 2c280 // received a packet with data uint32_t head = rx_head; - 2c16e: 490d ldr r1, [pc, #52] ; (2c1a4 ) + 2c256: 490d ldr r1, [pc, #52] ; (2c28c ) { - 2c170: b410 push {r4} + 2c258: b410 push {r4} uint32_t head = rx_head; - 2c172: 780a ldrb r2, [r1, #0] + 2c25a: 780a ldrb r2, [r1, #0] rx_index[i] = 0; - 2c174: 4c0c ldr r4, [pc, #48] ; (2c1a8 ) + 2c25c: 4c0c ldr r4, [pc, #48] ; (2c290 ) if (++head > RX_NUM) head = 0; - 2c176: 3201 adds r2, #1 + 2c25e: 3201 adds r2, #1 rx_index[i] = 0; - 2c178: f824 3010 strh.w r3, [r4, r0, lsl #1] + 2c260: f824 3010 strh.w r3, [r4, r0, lsl #1] if (++head > RX_NUM) head = 0; - 2c17c: 2a08 cmp r2, #8 - 2c17e: d80d bhi.n 2c19c + 2c264: 2a08 cmp r2, #8 + 2c266: d80d bhi.n 2c284 rx_list[head] = i; rx_head = head; - 2c180: b2d4 uxtb r4, r2 - 2c182: 4613 mov r3, r2 - 2c184: 700c strb r4, [r1, #0] + 2c268: b2d4 uxtb r4, r2 + 2c26a: 4613 mov r3, r2 + 2c26c: 700c strb r4, [r1, #0] rx_available += len; - 2c186: 4909 ldr r1, [pc, #36] ; (2c1ac ) + 2c26e: 4909 ldr r1, [pc, #36] ; (2c294 ) rx_list[head] = i; - 2c188: 4c09 ldr r4, [pc, #36] ; (2c1b0 ) + 2c270: 4c09 ldr r4, [pc, #36] ; (2c298 ) rx_available += len; - 2c18a: 680a ldr r2, [r1, #0] + 2c272: 680a ldr r2, [r1, #0] rx_list[head] = i; - 2c18c: 54e0 strb r0, [r4, r3] + 2c274: 54e0 strb r0, [r4, r3] rx_available += len; - 2c18e: 3220 adds r2, #32 + 2c276: 3220 adds r2, #32 // TODO: trigger serialEvent } else { // received a short packet - should never happen with HID rx_queue_transfer(i); } } - 2c190: f85d 4b04 ldr.w r4, [sp], #4 + 2c278: f85d 4b04 ldr.w r4, [sp], #4 rx_available += len; - 2c194: 600a str r2, [r1, #0] + 2c27c: 600a str r2, [r1, #0] } - 2c196: 4770 bx lr + 2c27e: 4770 bx lr rx_queue_transfer(i); - 2c198: f7ff bfba b.w 2c110 - 2c19c: 461c mov r4, r3 - 2c19e: e7f1 b.n 2c184 - 2c1a0: 20201480 .word 0x20201480 - 2c1a4: 2000bc84 .word 0x2000bc84 - 2c1a8: 2000ba8c .word 0x2000ba8c - 2c1ac: 2000ba70 .word 0x2000ba70 - 2c1b0: 2000baa4 .word 0x2000baa4 - -0002c1b4 : + 2c280: f7ff bfba b.w 2c1f8 + 2c284: 461c mov r4, r3 + 2c286: e7f1 b.n 2c26c + 2c288: 20201480 .word 0x20201480 + 2c28c: 2000bca4 .word 0x2000bca4 + 2c290: 2000baac .word 0x2000baac + 2c294: 2000ba90 .word 0x2000ba90 + 2c298: 2000bac4 .word 0x2000bac4 + +0002c29c : { - 2c1b4: b538 push {r3, r4, r5, lr} + 2c29c: b538 push {r3, r4, r5, lr} tx_head = 0; - 2c1b6: 2400 movs r4, #0 + 2c29e: 2400 movs r4, #0 memset(tx_transfer, 0, sizeof(tx_transfer)); - 2c1b8: f44f 72c0 mov.w r2, #384 ; 0x180 - 2c1bc: 481d ldr r0, [pc, #116] ; (2c234 ) - 2c1be: 4621 mov r1, r4 + 2c2a0: f44f 72c0 mov.w r2, #384 ; 0x180 + 2c2a4: 481d ldr r0, [pc, #116] ; (2c31c ) + 2c2a6: 4621 mov r1, r4 rx_available = 0; - 2c1c0: 4d1d ldr r5, [pc, #116] ; (2c238 ) + 2c2a8: 4d1d ldr r5, [pc, #116] ; (2c320 ) memset(tx_transfer, 0, sizeof(tx_transfer)); - 2c1c2: f002 f963 bl 2e48c + 2c2aa: f002 f963 bl 2e574 tx_head = 0; - 2c1c6: 481d ldr r0, [pc, #116] ; (2c23c ) + 2c2ae: 481d ldr r0, [pc, #116] ; (2c324 ) tx_available = 0; - 2c1c8: 4b1d ldr r3, [pc, #116] ; (2c240 ) + 2c2b0: 4b1d ldr r3, [pc, #116] ; (2c328 ) memset(rx_transfer, 0, sizeof(rx_transfer)); - 2c1ca: f44f 7280 mov.w r2, #256 ; 0x100 - 2c1ce: 4621 mov r1, r4 + 2c2b2: f44f 7280 mov.w r2, #256 ; 0x100 + 2c2b6: 4621 mov r1, r4 tx_head = 0; - 2c1d0: 7004 strb r4, [r0, #0] + 2c2b8: 7004 strb r4, [r0, #0] memset(rx_transfer, 0, sizeof(rx_transfer)); - 2c1d2: 481c ldr r0, [pc, #112] ; (2c244 ) + 2c2ba: 481c ldr r0, [pc, #112] ; (2c32c ) tx_available = 0; - 2c1d4: 801c strh r4, [r3, #0] + 2c2bc: 801c strh r4, [r3, #0] memset(rx_transfer, 0, sizeof(rx_transfer)); - 2c1d6: f002 f959 bl 2e48c + 2c2be: f002 f959 bl 2e574 memset(rx_index, 0, sizeof(rx_index)); - 2c1da: 4a1b ldr r2, [pc, #108] ; (2c248 ) + 2c2c2: 4a1b ldr r2, [pc, #108] ; (2c330 ) usb_config_rx(SEREMU_RX_ENDPOINT, SEREMU_RX_SIZE, 0, rx_event); // SEREMU_RX_SIZE = 32 - 2c1dc: 2002 movs r0, #2 + 2c2c4: 2002 movs r0, #2 rx_head = 0; - 2c1de: 491b ldr r1, [pc, #108] ; (2c24c ) + 2c2c6: 491b ldr r1, [pc, #108] ; (2c334 ) rx_tail = 0; - 2c1e0: 4b1b ldr r3, [pc, #108] ; (2c250 ) + 2c2c8: 4b1b ldr r3, [pc, #108] ; (2c338 ) rx_head = 0; - 2c1e2: 700c strb r4, [r1, #0] + 2c2ca: 700c strb r4, [r1, #0] usb_config_rx(SEREMU_RX_ENDPOINT, SEREMU_RX_SIZE, 0, rx_event); // SEREMU_RX_SIZE = 32 - 2c1e4: 2120 movs r1, #32 + 2c2cc: 2120 movs r1, #32 rx_tail = 0; - 2c1e6: 701c strb r4, [r3, #0] + 2c2ce: 701c strb r4, [r3, #0] memset(rx_index, 0, sizeof(rx_index)); - 2c1e8: 6014 str r4, [r2, #0] + 2c2d0: 6014 str r4, [r2, #0] usb_config_rx(SEREMU_RX_ENDPOINT, SEREMU_RX_SIZE, 0, rx_event); // SEREMU_RX_SIZE = 32 - 2c1ea: 4b1a ldr r3, [pc, #104] ; (2c254 ) + 2c2d2: 4b1a ldr r3, [pc, #104] ; (2c33c ) memset(rx_index, 0, sizeof(rx_index)); - 2c1ec: 6054 str r4, [r2, #4] + 2c2d4: 6054 str r4, [r2, #4] rx_available = 0; - 2c1ee: 602c str r4, [r5, #0] + 2c2d6: 602c str r4, [r5, #0] memset(rx_index, 0, sizeof(rx_index)); - 2c1f0: e9c2 4402 strd r4, r4, [r2, #8] + 2c2d8: e9c2 4402 strd r4, r4, [r2, #8] usb_config_rx(SEREMU_RX_ENDPOINT, SEREMU_RX_SIZE, 0, rx_event); // SEREMU_RX_SIZE = 32 - 2c1f4: 4622 mov r2, r4 - 2c1f6: f7ff f9af bl 2b558 + 2c2dc: 4622 mov r2, r4 + 2c2de: f7ff f9af bl 2b640 usb_config_tx(SEREMU_TX_ENDPOINT, SEREMU_TX_SIZE, 0, NULL); // SEREMU_TX_SIZE = 64 - 2c1fa: 4623 mov r3, r4 - 2c1fc: 4622 mov r2, r4 - 2c1fe: 2140 movs r1, #64 ; 0x40 - 2c200: 2002 movs r0, #2 - 2c202: f7ff f9db bl 2b5bc + 2c2e2: 4623 mov r3, r4 + 2c2e4: 4622 mov r2, r4 + 2c2e6: 2140 movs r1, #64 ; 0x40 + 2c2e8: 2002 movs r0, #2 + 2c2ea: f7ff f9db bl 2b6a4 for (i=0; i < RX_NUM; i++) rx_queue_transfer(i); - 2c206: 4620 mov r0, r4 - 2c208: 3401 adds r4, #1 - 2c20a: f7ff ff81 bl 2c110 - 2c20e: 2c08 cmp r4, #8 - 2c210: d1f9 bne.n 2c206 + 2c2ee: 4620 mov r0, r4 + 2c2f0: 3401 adds r4, #1 + 2c2f2: f7ff ff81 bl 2c1f8 + 2c2f6: 2c08 cmp r4, #8 + 2c2f8: d1f9 bne.n 2c2ee static void timer_stop(); static void timer_config(void (*callback)(void), uint32_t microseconds) { usb_timer0_callback = callback; USB1_GPTIMER0CTRL = 0; - 2c212: 4b11 ldr r3, [pc, #68] ; (2c258 ) + 2c2fa: 4b11 ldr r3, [pc, #68] ; (2c340 ) USB1_GPTIMER0LD = microseconds - 1; - 2c214: 224a movs r2, #74 ; 0x4a + 2c2fc: 224a movs r2, #74 ; 0x4a usb_timer0_callback = callback; - 2c216: 4811 ldr r0, [pc, #68] ; (2c25c ) + 2c2fe: 4811 ldr r0, [pc, #68] ; (2c344 ) USB1_GPTIMER0CTRL = 0; - 2c218: 2100 movs r1, #0 + 2c300: 2100 movs r1, #0 usb_timer0_callback = callback; - 2c21a: 4c11 ldr r4, [pc, #68] ; (2c260 ) - 2c21c: 6004 str r4, [r0, #0] + 2c302: 4c11 ldr r4, [pc, #68] ; (2c348 ) + 2c304: 6004 str r4, [r0, #0] USB1_GPTIMER0CTRL = 0; - 2c21e: f8c3 1084 str.w r1, [r3, #132] ; 0x84 + 2c306: f8c3 1084 str.w r1, [r3, #132] ; 0x84 USB1_GPTIMER0LD = microseconds - 1; - 2c222: f8c3 2080 str.w r2, [r3, #128] ; 0x80 + 2c30a: f8c3 2080 str.w r2, [r3, #128] ; 0x80 USB1_USBINTR |= USB_USBINTR_TIE0; - 2c226: f8d3 2148 ldr.w r2, [r3, #328] ; 0x148 - 2c22a: f042 7280 orr.w r2, r2, #16777216 ; 0x1000000 - 2c22e: f8c3 2148 str.w r2, [r3, #328] ; 0x148 -} - 2c232: bd38 pop {r3, r4, r5, pc} - 2c234: 2000a5a0 .word 0x2000a5a0 - 2c238: 2000ba70 .word 0x2000ba70 - 2c23c: 2000bc8b .word 0x2000bc8b - 2c240: 2000bc74 .word 0x2000bc74 - 2c244: 2000a420 .word 0x2000a420 - 2c248: 2000ba8c .word 0x2000ba8c - 2c24c: 2000bc84 .word 0x2000bc84 - 2c250: 2000bc86 .word 0x2000bc86 - 2c254: 0002c15d .word 0x0002c15d - 2c258: 402e0000 .word 0x402e0000 - 2c25c: 2000bc64 .word 0x2000bc64 - 2c260: 0002c399 .word 0x0002c399 - -0002c264 : + 2c30e: f8d3 2148 ldr.w r2, [r3, #328] ; 0x148 + 2c312: f042 7280 orr.w r2, r2, #16777216 ; 0x1000000 + 2c316: f8c3 2148 str.w r2, [r3, #328] ; 0x148 +} + 2c31a: bd38 pop {r3, r4, r5, pc} + 2c31c: 2000a5c0 .word 0x2000a5c0 + 2c320: 2000ba90 .word 0x2000ba90 + 2c324: 2000bcab .word 0x2000bcab + 2c328: 2000bc94 .word 0x2000bc94 + 2c32c: 2000a440 .word 0x2000a440 + 2c330: 2000baac .word 0x2000baac + 2c334: 2000bca4 .word 0x2000bca4 + 2c338: 2000bca6 .word 0x2000bca6 + 2c33c: 0002c245 .word 0x0002c245 + 2c340: 402e0000 .word 0x402e0000 + 2c344: 2000bc84 .word 0x2000bc84 + 2c348: 0002c481 .word 0x0002c481 + +0002c34c : { - 2c264: b570 push {r4, r5, r6, lr} + 2c34c: b570 push {r4, r5, r6, lr} if (tail == rx_head) return -1; - 2c266: 4b14 ldr r3, [pc, #80] ; (2c2b8 ) + 2c34e: 4b14 ldr r3, [pc, #80] ; (2c3a0 ) uint32_t tail = rx_tail; - 2c268: 4d14 ldr r5, [pc, #80] ; (2c2bc ) - 2c26a: 782a ldrb r2, [r5, #0] + 2c350: 4d14 ldr r5, [pc, #80] ; (2c3a4 ) + 2c352: 782a ldrb r2, [r5, #0] if (tail == rx_head) return -1; - 2c26c: 7819 ldrb r1, [r3, #0] - 2c26e: 428a cmp r2, r1 - 2c270: d01f beq.n 2c2b2 + 2c354: 7819 ldrb r1, [r3, #0] + 2c356: 428a cmp r2, r1 + 2c358: d01f beq.n 2c39a if (++tail > RX_NUM) tail = 0; - 2c272: b2d3 uxtb r3, r2 + 2c35a: b2d3 uxtb r3, r2 uint32_t i = rx_list[tail]; - 2c274: 4a12 ldr r2, [pc, #72] ; (2c2c0 ) + 2c35c: 4a12 ldr r2, [pc, #72] ; (2c3a8 ) uint32_t index = rx_index[i]; - 2c276: 4e13 ldr r6, [pc, #76] ; (2c2c4 ) + 2c35e: 4e13 ldr r6, [pc, #76] ; (2c3ac ) if (++tail > RX_NUM) tail = 0; - 2c278: 3301 adds r3, #1 + 2c360: 3301 adds r3, #1 uint8_t *p = rx_buffer + i * SEREMU_RX_SIZE + index; - 2c27a: 4c13 ldr r4, [pc, #76] ; (2c2c8 ) + 2c362: 4c13 ldr r4, [pc, #76] ; (2c3b0 ) if (++tail > RX_NUM) tail = 0; - 2c27c: 2b09 cmp r3, #9 - 2c27e: bf28 it cs - 2c280: 2300 movcs r3, #0 + 2c364: 2b09 cmp r3, #9 + 2c366: bf28 it cs + 2c368: 2300 movcs r3, #0 uint32_t i = rx_list[tail]; - 2c282: 5cd0 ldrb r0, [r2, r3] + 2c36a: 5cd0 ldrb r0, [r2, r3] uint32_t index = rx_index[i]; - 2c284: f836 2010 ldrh.w r2, [r6, r0, lsl #1] + 2c36c: f836 2010 ldrh.w r2, [r6, r0, lsl #1] uint8_t *p = rx_buffer + i * SEREMU_RX_SIZE + index; - 2c288: eb02 1140 add.w r1, r2, r0, lsl #5 + 2c370: eb02 1140 add.w r1, r2, r0, lsl #5 if (++index >= SEREMU_RX_SIZE || *(p+1) == 0) { - 2c28c: 3201 adds r2, #1 - 2c28e: 2a1f cmp r2, #31 + 2c374: 3201 adds r2, #1 + 2c376: 2a1f cmp r2, #31 uint8_t *p = rx_buffer + i * SEREMU_RX_SIZE + index; - 2c290: eb04 0c01 add.w ip, r4, r1 + 2c378: eb04 0c01 add.w ip, r4, r1 int c = *p; - 2c294: 5c64 ldrb r4, [r4, r1] + 2c37c: 5c64 ldrb r4, [r4, r1] if (++index >= SEREMU_RX_SIZE || *(p+1) == 0) { - 2c296: d802 bhi.n 2c29e - 2c298: f89c 1001 ldrb.w r1, [ip, #1] - 2c29c: b929 cbnz r1, 2c2aa + 2c37e: d802 bhi.n 2c386 + 2c380: f89c 1001 ldrb.w r1, [ip, #1] + 2c384: b929 cbnz r1, 2c392 rx_tail = tail; - 2c29e: b2db uxtb r3, r3 - 2c2a0: 702b strb r3, [r5, #0] + 2c386: b2db uxtb r3, r3 + 2c388: 702b strb r3, [r5, #0] rx_queue_transfer(i); - 2c2a2: f7ff ff35 bl 2c110 + 2c38a: f7ff ff35 bl 2c1f8 } - 2c2a6: 4620 mov r0, r4 - 2c2a8: bd70 pop {r4, r5, r6, pc} + 2c38e: 4620 mov r0, r4 + 2c390: bd70 pop {r4, r5, r6, pc} rx_index[i] = index; - 2c2aa: f826 2010 strh.w r2, [r6, r0, lsl #1] + 2c392: f826 2010 strh.w r2, [r6, r0, lsl #1] } - 2c2ae: 4620 mov r0, r4 - 2c2b0: bd70 pop {r4, r5, r6, pc} + 2c396: 4620 mov r0, r4 + 2c398: bd70 pop {r4, r5, r6, pc} if (tail == rx_head) return -1; - 2c2b2: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff - 2c2b6: e7f6 b.n 2c2a6 - 2c2b8: 2000bc84 .word 0x2000bc84 - 2c2bc: 2000bc86 .word 0x2000bc86 - 2c2c0: 2000baa4 .word 0x2000baa4 - 2c2c4: 2000ba8c .word 0x2000ba8c - 2c2c8: 20201480 .word 0x20201480 - -0002c2cc : + 2c39a: f04f 34ff mov.w r4, #4294967295 ; 0xffffffff + 2c39e: e7f6 b.n 2c38e + 2c3a0: 2000bca4 .word 0x2000bca4 + 2c3a4: 2000bca6 .word 0x2000bca6 + 2c3a8: 2000bac4 .word 0x2000bac4 + 2c3ac: 2000baac .word 0x2000baac + 2c3b0: 20201480 .word 0x20201480 + +0002c3b4 : if (tail == rx_head) return -1; - 2c2cc: 4b0b ldr r3, [pc, #44] ; (2c2fc ) + 2c3b4: 4b0b ldr r3, [pc, #44] ; (2c3e4 ) uint32_t tail = rx_tail; - 2c2ce: 4a0c ldr r2, [pc, #48] ; (2c300 ) - 2c2d0: 7812 ldrb r2, [r2, #0] + 2c3b6: 4a0c ldr r2, [pc, #48] ; (2c3e8 ) + 2c3b8: 7812 ldrb r2, [r2, #0] if (tail == rx_head) return -1; - 2c2d2: 7819 ldrb r1, [r3, #0] + 2c3ba: 7819 ldrb r1, [r3, #0] uint32_t tail = rx_tail; - 2c2d4: b2d3 uxtb r3, r2 + 2c3bc: b2d3 uxtb r3, r2 if (tail == rx_head) return -1; - 2c2d6: 428a cmp r2, r1 - 2c2d8: d00d beq.n 2c2f6 + 2c3be: 428a cmp r2, r1 + 2c3c0: d00d beq.n 2c3de if (++tail > RX_NUM) tail = 0; - 2c2da: 3301 adds r3, #1 + 2c3c2: 3301 adds r3, #1 uint32_t i = rx_list[tail]; - 2c2dc: 4a09 ldr r2, [pc, #36] ; (2c304 ) + 2c3c4: 4a09 ldr r2, [pc, #36] ; (2c3ec ) return rx_buffer[i * SEREMU_RX_SIZE + rx_index[i]]; - 2c2de: 480a ldr r0, [pc, #40] ; (2c308 ) + 2c3c6: 480a ldr r0, [pc, #40] ; (2c3f0 ) if (++tail > RX_NUM) tail = 0; - 2c2e0: 2b09 cmp r3, #9 + 2c3c8: 2b09 cmp r3, #9 return rx_buffer[i * SEREMU_RX_SIZE + rx_index[i]]; - 2c2e2: 490a ldr r1, [pc, #40] ; (2c30c ) + 2c3ca: 490a ldr r1, [pc, #40] ; (2c3f4 ) if (++tail > RX_NUM) tail = 0; - 2c2e4: bf28 it cs - 2c2e6: 2300 movcs r3, #0 + 2c3cc: bf28 it cs + 2c3ce: 2300 movcs r3, #0 uint32_t i = rx_list[tail]; - 2c2e8: 5cd2 ldrb r2, [r2, r3] + 2c3d0: 5cd2 ldrb r2, [r2, r3] return rx_buffer[i * SEREMU_RX_SIZE + rx_index[i]]; - 2c2ea: f830 3012 ldrh.w r3, [r0, r2, lsl #1] - 2c2ee: eb03 1342 add.w r3, r3, r2, lsl #5 - 2c2f2: 5cc8 ldrb r0, [r1, r3] - 2c2f4: 4770 bx lr + 2c3d2: f830 3012 ldrh.w r3, [r0, r2, lsl #1] + 2c3d6: eb03 1342 add.w r3, r3, r2, lsl #5 + 2c3da: 5cc8 ldrb r0, [r1, r3] + 2c3dc: 4770 bx lr if (tail == rx_head) return -1; - 2c2f6: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 2c3de: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff } - 2c2fa: 4770 bx lr - 2c2fc: 2000bc84 .word 0x2000bc84 - 2c300: 2000bc86 .word 0x2000bc86 - 2c304: 2000baa4 .word 0x2000baa4 - 2c308: 2000ba8c .word 0x2000ba8c - 2c30c: 20201480 .word 0x20201480 + 2c3e2: 4770 bx lr + 2c3e4: 2000bca4 .word 0x2000bca4 + 2c3e8: 2000bca6 .word 0x2000bca6 + 2c3ec: 2000bac4 .word 0x2000bac4 + 2c3f0: 2000baac .word 0x2000baac + 2c3f4: 20201480 .word 0x20201480 -0002c310 : +0002c3f8 : { - 2c310: b508 push {r3, lr} + 2c3f8: b508 push {r3, lr} uint32_t tail = rx_tail; - 2c312: 4a06 ldr r2, [pc, #24] ; (2c32c ) + 2c3fa: 4a06 ldr r2, [pc, #24] ; (2c414 ) if (tail == rx_head) { - 2c314: 4b06 ldr r3, [pc, #24] ; (2c330 ) + 2c3fc: 4b06 ldr r3, [pc, #24] ; (2c418 ) uint32_t tail = rx_tail; - 2c316: 7812 ldrb r2, [r2, #0] + 2c3fe: 7812 ldrb r2, [r2, #0] if (tail == rx_head) { - 2c318: 781b ldrb r3, [r3, #0] - 2c31a: 429a cmp r2, r3 - 2c31c: d001 beq.n 2c322 + 2c400: 781b ldrb r3, [r3, #0] + 2c402: 429a cmp r2, r3 + 2c404: d001 beq.n 2c40a return 1; - 2c31e: 2001 movs r0, #1 + 2c406: 2001 movs r0, #1 } - 2c320: bd08 pop {r3, pc} + 2c408: bd08 pop {r3, pc} yield(); - 2c322: f000 f94b bl 2c5bc + 2c40a: f000 f94b bl 2c6a4 return 0; - 2c326: 2000 movs r0, #0 + 2c40e: 2000 movs r0, #0 } - 2c328: bd08 pop {r3, pc} - 2c32a: bf00 nop - 2c32c: 2000bc86 .word 0x2000bc86 - 2c330: 2000bc84 .word 0x2000bc84 + 2c410: bd08 pop {r3, pc} + 2c412: bf00 nop + 2c414: 2000bca6 .word 0x2000bca6 + 2c418: 2000bca4 .word 0x2000bca4 -0002c334 : +0002c41c : memset(txdata, 0, tx_available); tx_available = 0; } void tx_queue_transfer(void) { - 2c334: b570 push {r4, r5, r6, lr} + 2c41c: b570 push {r4, r5, r6, lr} transfer_t *xfer = tx_transfer + tx_head; - 2c336: 4e15 ldr r6, [pc, #84] ; (2c38c ) + 2c41e: 4e15 ldr r6, [pc, #84] ; (2c474 ) uint8_t *txbuf = txbuffer + (tx_head * SEREMU_TX_SIZE); usb_prepare_transfer(xfer, txbuf, SEREMU_TX_SIZE, 0); - 2c338: 2300 movs r3, #0 + 2c420: 2300 movs r3, #0 transfer_t *xfer = tx_transfer + tx_head; - 2c33a: 4d15 ldr r5, [pc, #84] ; (2c390 ) - 2c33c: 7832 ldrb r2, [r6, #0] + 2c422: 4d15 ldr r5, [pc, #84] ; (2c478 ) + 2c424: 7832 ldrb r2, [r6, #0] uint8_t *txbuf = txbuffer + (tx_head * SEREMU_TX_SIZE); - 2c33e: 4c15 ldr r4, [pc, #84] ; (2c394 ) + 2c426: 4c15 ldr r4, [pc, #84] ; (2c47c ) transfer_t *xfer = tx_transfer + tx_head; - 2c340: eb05 1542 add.w r5, r5, r2, lsl #5 + 2c428: eb05 1542 add.w r5, r5, r2, lsl #5 uint8_t *txbuf = txbuffer + (tx_head * SEREMU_TX_SIZE); - 2c344: eb04 1482 add.w r4, r4, r2, lsl #6 + 2c42c: eb04 1482 add.w r4, r4, r2, lsl #6 usb_prepare_transfer(xfer, txbuf, SEREMU_TX_SIZE, 0); - 2c348: 2240 movs r2, #64 ; 0x40 - 2c34a: 4628 mov r0, r5 - 2c34c: 4621 mov r1, r4 - 2c34e: f7ff f967 bl 2b620 + 2c430: 2240 movs r2, #64 ; 0x40 + 2c432: 4628 mov r0, r5 + 2c434: 4621 mov r1, r4 + 2c436: f7ff f967 bl 2b708 asm("dsb"); - 2c352: f3bf 8f4f dsb sy + 2c43a: f3bf 8f4f dsb sy SCB_CACHE_DCCIMVAC = location; - 2c356: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 + 2c43e: f04f 23e0 mov.w r3, #3758153728 ; 0xe000e000 location += 32; - 2c35a: f104 0220 add.w r2, r4, #32 + 2c442: f104 0220 add.w r2, r4, #32 SCB_CACHE_DCCIMVAC = location; - 2c35e: f8c3 4f70 str.w r4, [r3, #3952] ; 0xf70 + 2c446: f8c3 4f70 str.w r4, [r3, #3952] ; 0xf70 uint32_t end_addr = (uint32_t)addr + size; - 2c362: 3440 adds r4, #64 ; 0x40 + 2c44a: 3440 adds r4, #64 ; 0x40 } while (location < end_addr); - 2c364: 4294 cmp r4, r2 - 2c366: d901 bls.n 2c36c + 2c44c: 4294 cmp r4, r2 + 2c44e: d901 bls.n 2c454 SCB_CACHE_DCCIMVAC = location; - 2c368: f8c3 2f70 str.w r2, [r3, #3952] ; 0xf70 + 2c450: f8c3 2f70 str.w r2, [r3, #3952] ; 0xf70 asm("dsb"); - 2c36c: f3bf 8f4f dsb sy + 2c454: f3bf 8f4f dsb sy asm("isb"); - 2c370: f3bf 8f6f isb sy + 2c458: f3bf 8f6f isb sy arm_dcache_flush_delete(txbuf, SEREMU_TX_SIZE); usb_transmit(SEREMU_TX_ENDPOINT, xfer); - 2c374: 2002 movs r0, #2 - 2c376: 4629 mov r1, r5 - 2c378: f7ff f96a bl 2b650 + 2c45c: 2002 movs r0, #2 + 2c45e: 4629 mov r1, r5 + 2c460: f7ff f96a bl 2b738 if (++tx_head >= TX_NUM) tx_head = 0; - 2c37c: 7833 ldrb r3, [r6, #0] - 2c37e: 3301 adds r3, #1 - 2c380: b2db uxtb r3, r3 - 2c382: 2b0b cmp r3, #11 - 2c384: bf88 it hi - 2c386: 2300 movhi r3, #0 - 2c388: 7033 strb r3, [r6, #0] -} - 2c38a: bd70 pop {r4, r5, r6, pc} - 2c38c: 2000bc8b .word 0x2000bc8b - 2c390: 2000a5a0 .word 0x2000a5a0 - 2c394: 20201580 .word 0x20201580 - -0002c398 : + 2c464: 7833 ldrb r3, [r6, #0] + 2c466: 3301 adds r3, #1 + 2c468: b2db uxtb r3, r3 + 2c46a: 2b0b cmp r3, #11 + 2c46c: bf88 it hi + 2c46e: 2300 movhi r3, #0 + 2c470: 7033 strb r3, [r6, #0] +} + 2c472: bd70 pop {r4, r5, r6, pc} + 2c474: 2000bcab .word 0x2000bcab + 2c478: 2000a5c0 .word 0x2000a5c0 + 2c47c: 20201580 .word 0x20201580 + +0002c480 : timer_stop(); tx_noautoflush = 0; } static void usb_seremu_flush_callback(void) { - 2c398: b538 push {r3, r4, r5, lr} + 2c480: b538 push {r3, r4, r5, lr} if (tx_noautoflush) return; - 2c39a: 4b0d ldr r3, [pc, #52] ; (2c3d0 ) - 2c39c: 781b ldrb r3, [r3, #0] - 2c39e: b933 cbnz r3, 2c3ae + 2c482: 4b0d ldr r3, [pc, #52] ; (2c4b8 ) + 2c484: 781b ldrb r3, [r3, #0] + 2c486: b933 cbnz r3, 2c496 if (tx_available == 0 || tx_available >= SEREMU_TX_SIZE) return; - 2c3a0: 4d0c ldr r5, [pc, #48] ; (2c3d4 ) - 2c3a2: f003 04ff and.w r4, r3, #255 ; 0xff - 2c3a6: 882a ldrh r2, [r5, #0] - 2c3a8: 1e53 subs r3, r2, #1 - 2c3aa: 2b3e cmp r3, #62 ; 0x3e - 2c3ac: d900 bls.n 2c3b0 + 2c488: 4d0c ldr r5, [pc, #48] ; (2c4bc ) + 2c48a: f003 04ff and.w r4, r3, #255 ; 0xff + 2c48e: 882a ldrh r2, [r5, #0] + 2c490: 1e53 subs r3, r2, #1 + 2c492: 2b3e cmp r3, #62 ; 0x3e + 2c494: d900 bls.n 2c498 tx_zero_pad(); tx_queue_transfer(); } - 2c3ae: bd38 pop {r3, r4, r5, pc} + 2c496: bd38 pop {r3, r4, r5, pc} uint8_t *txdata = txbuffer + (tx_head * SEREMU_TX_SIZE) + (SEREMU_TX_SIZE - tx_available); - 2c3b0: 4909 ldr r1, [pc, #36] ; (2c3d8 ) - 2c3b2: f1c2 0340 rsb r3, r2, #64 ; 0x40 - 2c3b6: 4809 ldr r0, [pc, #36] ; (2c3dc ) - 2c3b8: 7809 ldrb r1, [r1, #0] - 2c3ba: eb03 1381 add.w r3, r3, r1, lsl #6 + 2c498: 4909 ldr r1, [pc, #36] ; (2c4c0 ) + 2c49a: f1c2 0340 rsb r3, r2, #64 ; 0x40 + 2c49e: 4809 ldr r0, [pc, #36] ; (2c4c4 ) + 2c4a0: 7809 ldrb r1, [r1, #0] + 2c4a2: eb03 1381 add.w r3, r3, r1, lsl #6 memset(txdata, 0, tx_available); - 2c3be: 4621 mov r1, r4 - 2c3c0: 4418 add r0, r3 - 2c3c2: f002 f863 bl 2e48c + 2c4a6: 4621 mov r1, r4 + 2c4a8: 4418 add r0, r3 + 2c4aa: f002 f863 bl 2e574 tx_available = 0; - 2c3c6: 802c strh r4, [r5, #0] + 2c4ae: 802c strh r4, [r5, #0] } - 2c3c8: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 2c4b0: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} tx_queue_transfer(); - 2c3cc: f7ff bfb2 b.w 2c334 - 2c3d0: 2000bc8d .word 0x2000bc8d - 2c3d4: 2000bc74 .word 0x2000bc74 - 2c3d8: 2000bc8b .word 0x2000bc8b - 2c3dc: 20201580 .word 0x20201580 + 2c4b4: f7ff bfb2 b.w 2c41c + 2c4b8: 2000bcad .word 0x2000bcad + 2c4bc: 2000bc94 .word 0x2000bc94 + 2c4c0: 2000bcab .word 0x2000bcab + 2c4c4: 20201580 .word 0x20201580 -0002c3e0 : +0002c4c8 : int usb_seremu_write(const void *buffer, uint32_t size) - 2c3e0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 2c3e4: b085 sub sp, #20 + 2c4c8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2c4cc: b085 sub sp, #20 while (size > 0) { - 2c3e6: e9cd 1001 strd r1, r0, [sp, #4] - 2c3ea: 2900 cmp r1, #0 - 2c3ec: f000 8081 beq.w 2c4f2 + 2c4ce: e9cd 1001 strd r1, r0, [sp, #4] + 2c4d2: 2900 cmp r1, #0 + 2c4d4: f000 8081 beq.w 2c5da uint32_t sent=0; - 2c3f0: 2300 movs r3, #0 - 2c3f2: 4f41 ldr r7, [pc, #260] ; (2c4f8 ) - 2c3f4: f8df 811c ldr.w r8, [pc, #284] ; 2c514 - 2c3f8: f8df a11c ldr.w sl, [pc, #284] ; 2c518 + 2c4d8: 2300 movs r3, #0 + 2c4da: 4f41 ldr r7, [pc, #260] ; (2c5e0 ) + 2c4dc: f8df 811c ldr.w r8, [pc, #284] ; 2c5fc + 2c4e0: f8df a11c ldr.w sl, [pc, #284] ; 2c600 wait_begin_at = systick_millis_count; - 2c3fc: 4e3f ldr r6, [pc, #252] ; (2c4fc ) + 2c4e4: 4e3f ldr r6, [pc, #252] ; (2c5e4 ) uint32_t sent=0; - 2c3fe: 9300 str r3, [sp, #0] + 2c4e6: 9300 str r3, [sp, #0] tx_noautoflush = 1; - 2c400: 2301 movs r3, #1 + 2c4e8: 2301 movs r3, #1 transfer_t *xfer = tx_transfer + tx_head; - 2c402: 4a3f ldr r2, [pc, #252] ; (2c500 ) + 2c4ea: 4a3f ldr r2, [pc, #252] ; (2c5e8 ) tx_noautoflush = 1; - 2c404: 703b strb r3, [r7, #0] + 2c4ec: 703b strb r3, [r7, #0] transfer_t *xfer = tx_transfer + tx_head; - 2c406: 4b3f ldr r3, [pc, #252] ; (2c504 ) - 2c408: 7819 ldrb r1, [r3, #0] + 2c4ee: 4b3f ldr r3, [pc, #252] ; (2c5ec ) + 2c4f0: 7819 ldrb r1, [r3, #0] while (!tx_available) { - 2c40a: f8b8 3000 ldrh.w r3, [r8] + 2c4f2: f8b8 3000 ldrh.w r3, [r8] transfer_t *xfer = tx_transfer + tx_head; - 2c40e: eb02 1941 add.w r9, r2, r1, lsl #5 + 2c4f6: eb02 1941 add.w r9, r2, r1, lsl #5 while (!tx_available) { - 2c412: 2b00 cmp r3, #0 - 2c414: d169 bne.n 2c4ea + 2c4fa: 2b00 cmp r3, #0 + 2c4fc: d169 bne.n 2c5d2 uint32_t wait_begin_at=0; - 2c416: 461d mov r5, r3 + 2c4fe: 461d mov r5, r3 int waiting=0; - 2c418: 461c mov r4, r3 + 2c500: 461c mov r4, r3 tx_noautoflush = 0; - 2c41a: 469b mov fp, r3 + 2c502: 469b mov fp, r3 uint32_t status = usb_transfer_status(xfer); - 2c41c: 4648 mov r0, r9 - 2c41e: f7ff f939 bl 2b694 + 2c504: 4648 mov r0, r9 + 2c506: f7ff f939 bl 2b77c if (!(status & 0x80)) { - 2c422: f010 0080 ands.w r0, r0, #128 ; 0x80 - 2c426: d051 beq.n 2c4cc + 2c50a: f010 0080 ands.w r0, r0, #128 ; 0x80 + 2c50e: d051 beq.n 2c5b4 if (transmit_previous_timeout) return sent; - 2c428: f89a 3000 ldrb.w r3, [sl] + 2c510: f89a 3000 ldrb.w r3, [sl] tx_noautoflush = 0; - 2c42c: f887 b000 strb.w fp, [r7] + 2c514: f887 b000 strb.w fp, [r7] if (!waiting) { - 2c430: b904 cbnz r4, 2c434 + 2c518: b904 cbnz r4, 2c51c wait_begin_at = systick_millis_count; - 2c432: 6835 ldr r5, [r6, #0] + 2c51a: 6835 ldr r5, [r6, #0] if (transmit_previous_timeout) return sent; - 2c434: 2b00 cmp r3, #0 - 2c436: d12f bne.n 2c498 + 2c51c: 2b00 cmp r3, #0 + 2c51e: d12f bne.n 2c580 if (systick_millis_count - wait_begin_at > TX_TIMEOUT_MSEC) { - 2c438: 6833 ldr r3, [r6, #0] - 2c43a: 2401 movs r4, #1 - 2c43c: 1b5b subs r3, r3, r5 - 2c43e: 2b32 cmp r3, #50 ; 0x32 - 2c440: d84d bhi.n 2c4de + 2c520: 6833 ldr r3, [r6, #0] + 2c522: 2401 movs r4, #1 + 2c524: 1b5b subs r3, r3, r5 + 2c526: 2b32 cmp r3, #50 ; 0x32 + 2c528: d84d bhi.n 2c5c6 if (!usb_configuration) return sent; - 2c442: 4b31 ldr r3, [pc, #196] ; (2c508 ) - 2c444: 781b ldrb r3, [r3, #0] - 2c446: b33b cbz r3, 2c498 + 2c52a: 4b31 ldr r3, [pc, #196] ; (2c5f0 ) + 2c52c: 781b ldrb r3, [r3, #0] + 2c52e: b33b cbz r3, 2c580 yield(); - 2c448: f000 f8b8 bl 2c5bc + 2c530: f000 f8b8 bl 2c6a4 while (!tx_available) { - 2c44c: f8b8 3000 ldrh.w r3, [r8] - 2c450: 2b00 cmp r3, #0 - 2c452: d0e3 beq.n 2c41c + 2c534: f8b8 3000 ldrh.w r3, [r8] + 2c538: 2b00 cmp r3, #0 + 2c53a: d0e3 beq.n 2c504 uint8_t *txdata = txbuffer + (tx_head * SEREMU_TX_SIZE) + (SEREMU_TX_SIZE - tx_available); - 2c454: 4a2b ldr r2, [pc, #172] ; (2c504 ) - 2c456: f1c3 0040 rsb r0, r3, #64 ; 0x40 - 2c45a: 7811 ldrb r1, [r2, #0] - 2c45c: 461a mov r2, r3 - 2c45e: eb00 1081 add.w r0, r0, r1, lsl #6 - 2c462: 492a ldr r1, [pc, #168] ; (2c50c ) - 2c464: 4408 add r0, r1 + 2c53c: 4a2b ldr r2, [pc, #172] ; (2c5ec ) + 2c53e: f1c3 0040 rsb r0, r3, #64 ; 0x40 + 2c542: 7811 ldrb r1, [r2, #0] + 2c544: 461a mov r2, r3 + 2c546: eb00 1081 add.w r0, r0, r1, lsl #6 + 2c54a: 492a ldr r1, [pc, #168] ; (2c5f4 ) + 2c54c: 4408 add r0, r1 if (size >= tx_available) { - 2c466: 9901 ldr r1, [sp, #4] - 2c468: 4291 cmp r1, r2 - 2c46a: d319 bcc.n 2c4a0 + 2c54e: 9901 ldr r1, [sp, #4] + 2c550: 4291 cmp r1, r2 + 2c552: d319 bcc.n 2c588 sent += tx_available; - 2c46c: 9b00 ldr r3, [sp, #0] + 2c554: 9b00 ldr r3, [sp, #0] size -= tx_available; - 2c46e: 1a8d subs r5, r1, r2 + 2c556: 1a8d subs r5, r1, r2 tx_available = 0; - 2c470: 2400 movs r4, #0 + 2c558: 2400 movs r4, #0 sent += tx_available; - 2c472: 4413 add r3, r2 + 2c55a: 4413 add r3, r2 size -= tx_available; - 2c474: 9501 str r5, [sp, #4] + 2c55c: 9501 str r5, [sp, #4] sent += tx_available; - 2c476: 9300 str r3, [sp, #0] + 2c55e: 9300 str r3, [sp, #0] memcpy(txdata, data, tx_available); - 2c478: 9b02 ldr r3, [sp, #8] - 2c47a: 4619 mov r1, r3 + 2c560: 9b02 ldr r3, [sp, #8] + 2c562: 4619 mov r1, r3 data += tx_available; - 2c47c: 4413 add r3, r2 - 2c47e: 9302 str r3, [sp, #8] + 2c564: 4413 add r3, r2 + 2c566: 9302 str r3, [sp, #8] memcpy(txdata, data, tx_available); - 2c480: f7fe f942 bl 2a708 + 2c568: f7fe f942 bl 2a7f0 tx_available = 0; - 2c484: f8a8 4000 strh.w r4, [r8] + 2c56c: f8a8 4000 strh.w r4, [r8] tx_queue_transfer(); - 2c488: f7ff ff54 bl 2c334 + 2c570: f7ff ff54 bl 2c41c USB1_GPTIMER0CTRL = 0; - 2c48c: 4b20 ldr r3, [pc, #128] ; (2c510 ) - 2c48e: f8c3 4084 str.w r4, [r3, #132] ; 0x84 + 2c574: 4b20 ldr r3, [pc, #128] ; (2c5f8 ) + 2c576: f8c3 4084 str.w r4, [r3, #132] ; 0x84 tx_noautoflush = 0; - 2c492: 703c strb r4, [r7, #0] + 2c57a: 703c strb r4, [r7, #0] while (size > 0) { - 2c494: 2d00 cmp r5, #0 - 2c496: d1b3 bne.n 2c400 + 2c57c: 2d00 cmp r5, #0 + 2c57e: d1b3 bne.n 2c4e8 return sent; - 2c498: 9800 ldr r0, [sp, #0] + 2c580: 9800 ldr r0, [sp, #0] } - 2c49a: b005 add sp, #20 - 2c49c: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2c582: b005 add sp, #20 + 2c584: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} memcpy(txdata, data, size); - 2c4a0: e9dd 4101 ldrd r4, r1, [sp, #4] - 2c4a4: 9303 str r3, [sp, #12] - 2c4a6: 4622 mov r2, r4 - 2c4a8: f7fe f92e bl 2a708 + 2c588: e9dd 4101 ldrd r4, r1, [sp, #4] + 2c58c: 9303 str r3, [sp, #12] + 2c58e: 4622 mov r2, r4 + 2c590: f7fe f92e bl 2a7f0 tx_available -= size; - 2c4ac: 9b03 ldr r3, [sp, #12] + 2c594: 9b03 ldr r3, [sp, #12] sent += size; - 2c4ae: 9800 ldr r0, [sp, #0] + 2c596: 9800 ldr r0, [sp, #0] USB1_GPTIMER0CTRL = USB_GPTIMERCTRL_GPTRUN | USB_GPTIMERCTRL_GPTRST; - 2c4b0: f04f 4140 mov.w r1, #3221225472 ; 0xc0000000 + 2c598: f04f 4140 mov.w r1, #3221225472 ; 0xc0000000 tx_available -= size; - 2c4b4: 1b1b subs r3, r3, r4 + 2c59c: 1b1b subs r3, r3, r4 USB1_GPTIMER0CTRL = USB_GPTIMERCTRL_GPTRUN | USB_GPTIMERCTRL_GPTRST; - 2c4b6: 4a16 ldr r2, [pc, #88] ; (2c510 ) + 2c59e: 4a16 ldr r2, [pc, #88] ; (2c5f8 ) sent += size; - 2c4b8: 4420 add r0, r4 + 2c5a0: 4420 add r0, r4 tx_available -= size; - 2c4ba: f8a8 3000 strh.w r3, [r8] + 2c5a2: f8a8 3000 strh.w r3, [r8] tx_noautoflush = 0; - 2c4be: 2300 movs r3, #0 + 2c5a6: 2300 movs r3, #0 USB1_GPTIMER0CTRL = USB_GPTIMERCTRL_GPTRUN | USB_GPTIMERCTRL_GPTRST; - 2c4c0: f8c2 1084 str.w r1, [r2, #132] ; 0x84 + 2c5a8: f8c2 1084 str.w r1, [r2, #132] ; 0x84 tx_noautoflush = 0; - 2c4c4: 703b strb r3, [r7, #0] + 2c5ac: 703b strb r3, [r7, #0] } - 2c4c6: b005 add sp, #20 - 2c4c8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2c5ae: b005 add sp, #20 + 2c5b0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} tx_available = SEREMU_TX_SIZE; - 2c4cc: 2240 movs r2, #64 ; 0x40 + 2c5b4: 2240 movs r2, #64 ; 0x40 uint8_t *txdata = txbuffer + (tx_head * SEREMU_TX_SIZE) + (SEREMU_TX_SIZE - tx_available); - 2c4ce: 4b0d ldr r3, [pc, #52] ; (2c504 ) + 2c5b6: 4b0d ldr r3, [pc, #52] ; (2c5ec ) transmit_previous_timeout = 0; - 2c4d0: f88a 0000 strb.w r0, [sl] + 2c5b8: f88a 0000 strb.w r0, [sl] uint8_t *txdata = txbuffer + (tx_head * SEREMU_TX_SIZE) + (SEREMU_TX_SIZE - tx_available); - 2c4d4: 7819 ldrb r1, [r3, #0] + 2c5bc: 7819 ldrb r1, [r3, #0] break; - 2c4d6: 4613 mov r3, r2 + 2c5be: 4613 mov r3, r2 tx_available = SEREMU_TX_SIZE; - 2c4d8: f8a8 2000 strh.w r2, [r8] + 2c5c0: f8a8 2000 strh.w r2, [r8] break; - 2c4dc: e7bf b.n 2c45e + 2c5c4: e7bf b.n 2c546 return sent; - 2c4de: 9800 ldr r0, [sp, #0] + 2c5c6: 9800 ldr r0, [sp, #0] transmit_previous_timeout = 1; - 2c4e0: f88a 4000 strb.w r4, [sl] + 2c5c8: f88a 4000 strb.w r4, [sl] } - 2c4e4: b005 add sp, #20 - 2c4e6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2c5cc: b005 add sp, #20 + 2c5ce: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} uint8_t *txdata = txbuffer + (tx_head * SEREMU_TX_SIZE) + (SEREMU_TX_SIZE - tx_available); - 2c4ea: 461a mov r2, r3 - 2c4ec: f1c3 0040 rsb r0, r3, #64 ; 0x40 - 2c4f0: e7b5 b.n 2c45e + 2c5d2: 461a mov r2, r3 + 2c5d4: f1c3 0040 rsb r0, r3, #64 ; 0x40 + 2c5d8: e7b5 b.n 2c546 while (size > 0) { - 2c4f2: 9801 ldr r0, [sp, #4] + 2c5da: 9801 ldr r0, [sp, #4] return sent; - 2c4f4: e7d1 b.n 2c49a - 2c4f6: bf00 nop - 2c4f8: 2000bc8d .word 0x2000bc8d - 2c4fc: 2000bae8 .word 0x2000bae8 - 2c500: 2000a5a0 .word 0x2000a5a0 - 2c504: 2000bc8b .word 0x2000bc8b - 2c508: 2000bc8e .word 0x2000bc8e - 2c50c: 20201580 .word 0x20201580 - 2c510: 402e0000 .word 0x402e0000 - 2c514: 2000bc74 .word 0x2000bc74 - 2c518: 2000bc89 .word 0x2000bc89 - -0002c51c : + 2c5dc: e7d1 b.n 2c582 + 2c5de: bf00 nop + 2c5e0: 2000bcad .word 0x2000bcad + 2c5e4: 2000bb08 .word 0x2000bb08 + 2c5e8: 2000a5c0 .word 0x2000a5c0 + 2c5ec: 2000bcab .word 0x2000bcab + 2c5f0: 2000bcae .word 0x2000bcae + 2c5f4: 20201580 .word 0x20201580 + 2c5f8: 402e0000 .word 0x402e0000 + 2c5fc: 2000bc94 .word 0x2000bc94 + 2c600: 2000bca9 .word 0x2000bca9 + +0002c604 : if (!usb_configuration) return 0; - 2c51c: 4b09 ldr r3, [pc, #36] ; (2c544 ) + 2c604: 4b09 ldr r3, [pc, #36] ; (2c62c ) { - 2c51e: b500 push {lr} - 2c520: b083 sub sp, #12 + 2c606: b500 push {lr} + 2c608: b083 sub sp, #12 if (!usb_configuration) return 0; - 2c522: 781b ldrb r3, [r3, #0] + 2c60a: 781b ldrb r3, [r3, #0] { - 2c524: f88d 0007 strb.w r0, [sp, #7] + 2c60c: f88d 0007 strb.w r0, [sp, #7] if (!usb_configuration) return 0; - 2c528: b13b cbz r3, 2c53a - 2c52a: 2101 movs r1, #1 - 2c52c: f10d 0007 add.w r0, sp, #7 - 2c530: f7ff ff56 bl 2c3e0 -} - 2c534: b003 add sp, #12 - 2c536: f85d fb04 ldr.w pc, [sp], #4 - 2c53a: f003 00ff and.w r0, r3, #255 ; 0xff - 2c53e: b003 add sp, #12 - 2c540: f85d fb04 ldr.w pc, [sp], #4 - 2c544: 2000bc8e .word 0x2000bc8e - -0002c548 : + 2c610: b13b cbz r3, 2c622 + 2c612: 2101 movs r1, #1 + 2c614: f10d 0007 add.w r0, sp, #7 + 2c618: f7ff ff56 bl 2c4c8 +} + 2c61c: b003 add sp, #12 + 2c61e: f85d fb04 ldr.w pc, [sp], #4 + 2c622: f003 00ff and.w r0, r3, #255 ; 0xff + 2c626: b003 add sp, #12 + 2c628: f85d fb04 ldr.w pc, [sp], #4 + 2c62c: 2000bcae .word 0x2000bcae + +0002c630 : if (!usb_configuration) return 0; - 2c548: 4b04 ldr r3, [pc, #16] ; (2c55c ) - 2c54a: 781b ldrb r3, [r3, #0] - 2c54c: f003 02ff and.w r2, r3, #255 ; 0xff - 2c550: b10b cbz r3, 2c556 - 2c552: f7ff bf45 b.w 2c3e0 + 2c630: 4b04 ldr r3, [pc, #16] ; (2c644 ) + 2c632: 781b ldrb r3, [r3, #0] + 2c634: f003 02ff and.w r2, r3, #255 ; 0xff + 2c638: b10b cbz r3, 2c63e + 2c63a: f7ff bf45 b.w 2c4c8 } - 2c556: 4610 mov r0, r2 - 2c558: 4770 bx lr - 2c55a: bf00 nop - 2c55c: 2000bc8e .word 0x2000bc8e + 2c63e: 4610 mov r0, r2 + 2c640: 4770 bx lr + 2c642: bf00 nop + 2c644: 2000bcae .word 0x2000bcae -0002c560 : +0002c648 : } - 2c560: 2001 movs r0, #1 - 2c562: 4770 bx lr + 2c648: 2001 movs r0, #1 + 2c64a: 4770 bx lr -0002c564 : +0002c64c : if (!usb_configuration) return; - 2c564: 4b0f ldr r3, [pc, #60] ; (2c5a4 ) - 2c566: 781b ldrb r3, [r3, #0] - 2c568: b1db cbz r3, 2c5a2 + 2c64c: 4b0f ldr r3, [pc, #60] ; (2c68c ) + 2c64e: 781b ldrb r3, [r3, #0] + 2c650: b1db cbz r3, 2c68a { - 2c56a: b570 push {r4, r5, r6, lr} + 2c652: b570 push {r4, r5, r6, lr} if (tx_available == 0) return; - 2c56c: 4c0e ldr r4, [pc, #56] ; (2c5a8 ) - 2c56e: 8822 ldrh r2, [r4, #0] - 2c570: b902 cbnz r2, 2c574 + 2c654: 4c0e ldr r4, [pc, #56] ; (2c690 ) + 2c656: 8822 ldrh r2, [r4, #0] + 2c658: b902 cbnz r2, 2c65c } - 2c572: bd70 pop {r4, r5, r6, pc} + 2c65a: bd70 pop {r4, r5, r6, pc} uint8_t *txdata = txbuffer + (tx_head * SEREMU_TX_SIZE) + (SEREMU_TX_SIZE - tx_available); - 2c574: 490d ldr r1, [pc, #52] ; (2c5ac ) - 2c576: f1c2 0340 rsb r3, r2, #64 ; 0x40 - 2c57a: 480d ldr r0, [pc, #52] ; (2c5b0 ) + 2c65c: 490d ldr r1, [pc, #52] ; (2c694 ) + 2c65e: f1c2 0340 rsb r3, r2, #64 ; 0x40 + 2c662: 480d ldr r0, [pc, #52] ; (2c698 ) tx_available = 0; - 2c57c: 2500 movs r5, #0 + 2c664: 2500 movs r5, #0 uint8_t *txdata = txbuffer + (tx_head * SEREMU_TX_SIZE) + (SEREMU_TX_SIZE - tx_available); - 2c57e: 7809 ldrb r1, [r1, #0] + 2c666: 7809 ldrb r1, [r1, #0] tx_noautoflush = 1; - 2c580: 4e0c ldr r6, [pc, #48] ; (2c5b4 ) + 2c668: 4e0c ldr r6, [pc, #48] ; (2c69c ) uint8_t *txdata = txbuffer + (tx_head * SEREMU_TX_SIZE) + (SEREMU_TX_SIZE - tx_available); - 2c582: eb03 1381 add.w r3, r3, r1, lsl #6 + 2c66a: eb03 1381 add.w r3, r3, r1, lsl #6 memset(txdata, 0, tx_available); - 2c586: 4629 mov r1, r5 - 2c588: 4418 add r0, r3 + 2c66e: 4629 mov r1, r5 + 2c670: 4418 add r0, r3 tx_noautoflush = 1; - 2c58a: 2301 movs r3, #1 - 2c58c: 7033 strb r3, [r6, #0] + 2c672: 2301 movs r3, #1 + 2c674: 7033 strb r3, [r6, #0] memset(txdata, 0, tx_available); - 2c58e: f001 ff7d bl 2e48c + 2c676: f001 ff7d bl 2e574 tx_available = 0; - 2c592: 8025 strh r5, [r4, #0] + 2c67a: 8025 strh r5, [r4, #0] tx_queue_transfer(); - 2c594: f7ff fece bl 2c334 + 2c67c: f7ff fece bl 2c41c USB1_GPTIMER0CTRL = 0; - 2c598: 4b07 ldr r3, [pc, #28] ; (2c5b8 ) - 2c59a: f8c3 5084 str.w r5, [r3, #132] ; 0x84 + 2c680: 4b07 ldr r3, [pc, #28] ; (2c6a0 ) + 2c682: f8c3 5084 str.w r5, [r3, #132] ; 0x84 tx_noautoflush = 0; - 2c59e: 7035 strb r5, [r6, #0] + 2c686: 7035 strb r5, [r6, #0] } - 2c5a0: bd70 pop {r4, r5, r6, pc} - 2c5a2: 4770 bx lr - 2c5a4: 2000bc8e .word 0x2000bc8e - 2c5a8: 2000bc74 .word 0x2000bc74 - 2c5ac: 2000bc8b .word 0x2000bc8b - 2c5b0: 20201580 .word 0x20201580 - 2c5b4: 2000bc8d .word 0x2000bc8d - 2c5b8: 402e0000 .word 0x402e0000 + 2c688: bd70 pop {r4, r5, r6, pc} + 2c68a: 4770 bx lr + 2c68c: 2000bcae .word 0x2000bcae + 2c690: 2000bc94 .word 0x2000bc94 + 2c694: 2000bcab .word 0x2000bcab + 2c698: 20201580 .word 0x20201580 + 2c69c: 2000bcad .word 0x2000bcad + 2c6a0: 402e0000 .word 0x402e0000 -0002c5bc : +0002c6a4 : extern const uint8_t _serialEvent_default; void yield(void) __attribute__ ((weak)); void yield(void) { - 2c5bc: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 2c6a4: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} static uint8_t running=0; if (!yield_active_check_flags) return; // nothing to do - 2c5c0: 4e32 ldr r6, [pc, #200] ; (2c68c ) - 2c5c2: 7833 ldrb r3, [r6, #0] - 2c5c4: b163 cbz r3, 2c5e0 + 2c6a8: 4e32 ldr r6, [pc, #200] ; (2c774 ) + 2c6aa: 7833 ldrb r3, [r6, #0] + 2c6ac: b163 cbz r3, 2c6c8 if (running) return; // TODO: does this need to be atomic? - 2c5c6: 4f32 ldr r7, [pc, #200] ; (2c690 ) - 2c5c8: 783a ldrb r2, [r7, #0] - 2c5ca: b94a cbnz r2, 2c5e0 + 2c6ae: 4f32 ldr r7, [pc, #200] ; (2c778 ) + 2c6b0: 783a ldrb r2, [r7, #0] + 2c6b2: b94a cbnz r2, 2c6c8 running = 1; - 2c5cc: 2201 movs r2, #1 + 2c6b4: 2201 movs r2, #1 // USB Serial - Add hack to minimize impact... if (yield_active_check_flags & YIELD_CHECK_USB_SERIAL) { - 2c5ce: 07d9 lsls r1, r3, #31 + 2c6b6: 07d9 lsls r1, r3, #31 running = 1; - 2c5d0: 703a strb r2, [r7, #0] + 2c6b8: 703a strb r2, [r7, #0] if (yield_active_check_flags & YIELD_CHECK_USB_SERIAL) { - 2c5d2: d444 bmi.n 2c65e + 2c6ba: d444 bmi.n 2c746 if (_serialEventUSB2_default) yield_active_check_flags &= ~YIELD_CHECK_USB_SERIALUSB2; } #endif // Current workaround until integrate with EventResponder. if (yield_active_check_flags & YIELD_CHECK_HARDWARE_SERIAL) HardwareSerial::processSerialEventsList(); - 2c5d4: 079a lsls r2, r3, #30 - 2c5d6: d426 bmi.n 2c626 + 2c6bc: 079a lsls r2, r3, #30 + 2c6be: d426 bmi.n 2c70e running = 0; - 2c5d8: 2200 movs r2, #0 + 2c6c0: 2200 movs r2, #0 if (yield_active_check_flags & YIELD_CHECK_EVENT_RESPONDER) EventResponder::runFromYield(); - 2c5da: 075b lsls r3, r3, #29 + 2c6c2: 075b lsls r3, r3, #29 running = 0; - 2c5dc: 703a strb r2, [r7, #0] + 2c6c4: 703a strb r2, [r7, #0] if (yield_active_check_flags & YIELD_CHECK_EVENT_RESPONDER) EventResponder::runFromYield(); - 2c5de: d401 bmi.n 2c5e4 + 2c6c6: d401 bmi.n 2c6cc }; - 2c5e0: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 2c6c8: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} if (!firstYield) return; - 2c5e4: 4b2b ldr r3, [pc, #172] ; (2c694 ) - 2c5e6: 681a ldr r2, [r3, #0] - 2c5e8: 2a00 cmp r2, #0 - 2c5ea: d0f9 beq.n 2c5e0 + 2c6cc: 4b2b ldr r3, [pc, #172] ; (2c77c ) + 2c6ce: 681a ldr r2, [r3, #0] + 2c6d0: 2a00 cmp r2, #0 + 2c6d2: d0f9 beq.n 2c6c8 __asm__ volatile("mrs %0, ipsr\n" : "=r" (ipsr)::); - 2c5ec: f3ef 8205 mrs r2, IPSR + 2c6d4: f3ef 8205 mrs r2, IPSR if (ipsr != 0) return; - 2c5f0: 2a00 cmp r2, #0 - 2c5f2: d1f5 bne.n 2c5e0 + 2c6d8: 2a00 cmp r2, #0 + 2c6da: d1f5 bne.n 2c6c8 __asm__ volatile("mrs %0, primask\n" : "=r" (primask)::); - 2c5f4: f3ef 8510 mrs r5, PRIMASK + 2c6dc: f3ef 8510 mrs r5, PRIMASK __disable_irq(); - 2c5f8: b672 cpsid i + 2c6e0: b672 cpsid i EventResponder *first = firstYield; - 2c5fa: 6818 ldr r0, [r3, #0] + 2c6e2: 6818 ldr r0, [r3, #0] if (first == nullptr) { - 2c5fc: 2800 cmp r0, #0 - 2c5fe: d03b beq.n 2c678 + 2c6e4: 2800 cmp r0, #0 + 2c6e6: d03b beq.n 2c760 if (runningFromYield) { - 2c600: 4c25 ldr r4, [pc, #148] ; (2c698 ) - 2c602: 7821 ldrb r1, [r4, #0] - 2c604: 2900 cmp r1, #0 - 2c606: d137 bne.n 2c678 + 2c6e8: 4c25 ldr r4, [pc, #148] ; (2c780 ) + 2c6ea: 7821 ldrb r1, [r4, #0] + 2c6ec: 2900 cmp r1, #0 + 2c6ee: d137 bne.n 2c760 runningFromYield = true; - 2c608: 2201 movs r2, #1 - 2c60a: 7022 strb r2, [r4, #0] + 2c6f0: 2201 movs r2, #1 + 2c6f2: 7022 strb r2, [r4, #0] firstYield = first->_next; - 2c60c: 6942 ldr r2, [r0, #20] - 2c60e: 601a str r2, [r3, #0] + 2c6f4: 6942 ldr r2, [r0, #20] + 2c6f6: 601a str r2, [r3, #0] if (firstYield) { - 2c610: 2a00 cmp r2, #0 - 2c612: d038 beq.n 2c686 + 2c6f8: 2a00 cmp r2, #0 + 2c6fa: d038 beq.n 2c76e firstYield->_prev = nullptr; - 2c614: 6191 str r1, [r2, #24] + 2c6fc: 6191 str r1, [r2, #24] if (doit) __enable_irq(); - 2c616: b905 cbnz r5, 2c61a - 2c618: b662 cpsie i + 2c6fe: b905 cbnz r5, 2c702 + 2c700: b662 cpsie i first->_triggered = false; - 2c61a: 2500 movs r5, #0 + 2c702: 2500 movs r5, #0 (*(first->_function))(*first); - 2c61c: 6883 ldr r3, [r0, #8] + 2c704: 6883 ldr r3, [r0, #8] first->_triggered = false; - 2c61e: 7745 strb r5, [r0, #29] + 2c706: 7745 strb r5, [r0, #29] (*(first->_function))(*first); - 2c620: 4798 blx r3 + 2c708: 4798 blx r3 runningFromYield = false; - 2c622: 7025 strb r5, [r4, #0] - 2c624: e7dc b.n 2c5e0 + 2c70a: 7025 strb r5, [r4, #0] + 2c70c: e7dc b.n 2c6c8 */ operator bool() { return true; } static inline void processSerialEventsList() { for (uint8_t i = 0; i < s_count_serials_with_serial_events; i++) { - 2c626: f8df 807c ldr.w r8, [pc, #124] ; 2c6a4 - 2c62a: f898 2000 ldrb.w r2, [r8] - 2c62e: 2a00 cmp r2, #0 - 2c630: d0d2 beq.n 2c5d8 - 2c632: 2500 movs r5, #0 - 2c634: f8df 9070 ldr.w r9, [pc, #112] ; 2c6a8 - 2c638: 462b mov r3, r5 + 2c70e: f8df 807c ldr.w r8, [pc, #124] ; 2c78c + 2c712: f898 2000 ldrb.w r2, [r8] + 2c716: 2a00 cmp r2, #0 + 2c718: d0d2 beq.n 2c6c0 + 2c71a: 2500 movs r5, #0 + 2c71c: f8df 9070 ldr.w r9, [pc, #112] ; 2c790 + 2c720: 462b mov r3, r5 s_serials_with_serial_events[i]->doYieldCode(); - 2c63a: f859 4023 ldr.w r4, [r9, r3, lsl #2] + 2c722: f859 4023 ldr.w r4, [r9, r3, lsl #2] for (uint8_t i = 0; i < s_count_serials_with_serial_events; i++) { - 2c63e: 3501 adds r5, #1 + 2c726: 3501 adds r5, #1 static HardwareSerial *s_serials_with_serial_events[7]; #endif static uint8_t s_count_serials_with_serial_events; void addToSerialEventsList(); inline void doYieldCode() { if (available()) (*hardware->_serialEvent)(); - 2c640: 6823 ldr r3, [r4, #0] - 2c642: 4620 mov r0, r4 - 2c644: 691b ldr r3, [r3, #16] - 2c646: 4798 blx r3 - 2c648: b110 cbz r0, 2c650 - 2c64a: 6963 ldr r3, [r4, #20] - 2c64c: 689b ldr r3, [r3, #8] - 2c64e: 4798 blx r3 + 2c728: 6823 ldr r3, [r4, #0] + 2c72a: 4620 mov r0, r4 + 2c72c: 691b ldr r3, [r3, #16] + 2c72e: 4798 blx r3 + 2c730: b110 cbz r0, 2c738 + 2c732: 6963 ldr r3, [r4, #20] + 2c734: 689b ldr r3, [r3, #8] + 2c736: 4798 blx r3 for (uint8_t i = 0; i < s_count_serials_with_serial_events; i++) { - 2c650: f898 2000 ldrb.w r2, [r8] - 2c654: b2eb uxtb r3, r5 - 2c656: 429a cmp r2, r3 - 2c658: d8ef bhi.n 2c63a + 2c738: f898 2000 ldrb.w r2, [r8] + 2c73c: b2eb uxtb r3, r5 + 2c73e: 429a cmp r2, r3 + 2c740: d8ef bhi.n 2c722 if (yield_active_check_flags & YIELD_CHECK_EVENT_RESPONDER) EventResponder::runFromYield(); - 2c65a: 7833 ldrb r3, [r6, #0] - 2c65c: e7bc b.n 2c5d8 + 2c742: 7833 ldrb r3, [r6, #0] + 2c744: e7bc b.n 2c6c0 virtual int available() { return usb_seremu_available(); } - 2c65e: f7ff fe57 bl 2c310 + 2c746: f7ff fe57 bl 2c3f8 if (Serial.available()) serialEvent(); - 2c662: b968 cbnz r0, 2c680 + 2c74a: b968 cbnz r0, 2c768 if (_serialEvent_default) yield_active_check_flags &= ~YIELD_CHECK_USB_SERIAL; - 2c664: 4b0d ldr r3, [pc, #52] ; (2c69c ) - 2c666: 781b ldrb r3, [r3, #0] - 2c668: b90b cbnz r3, 2c66e - 2c66a: 7833 ldrb r3, [r6, #0] - 2c66c: e7b2 b.n 2c5d4 - 2c66e: 7833 ldrb r3, [r6, #0] - 2c670: f003 03fe and.w r3, r3, #254 ; 0xfe - 2c674: 7033 strb r3, [r6, #0] - 2c676: e7ad b.n 2c5d4 + 2c74c: 4b0d ldr r3, [pc, #52] ; (2c784 ) + 2c74e: 781b ldrb r3, [r3, #0] + 2c750: b90b cbnz r3, 2c756 + 2c752: 7833 ldrb r3, [r6, #0] + 2c754: e7b2 b.n 2c6bc + 2c756: 7833 ldrb r3, [r6, #0] + 2c758: f003 03fe and.w r3, r3, #254 ; 0xfe + 2c75c: 7033 strb r3, [r6, #0] + 2c75e: e7ad b.n 2c6bc if (doit) __enable_irq(); - 2c678: 2d00 cmp r5, #0 - 2c67a: d1b1 bne.n 2c5e0 - 2c67c: b662 cpsie i - 2c67e: e7af b.n 2c5e0 + 2c760: 2d00 cmp r5, #0 + 2c762: d1b1 bne.n 2c6c8 + 2c764: b662 cpsie i + 2c766: e7af b.n 2c6c8 if (Serial.available()) serialEvent(); - 2c680: f000 f826 bl 2c6d0 - 2c684: e7ee b.n 2c664 + 2c768: f000 f826 bl 2c7b8 + 2c76c: e7ee b.n 2c74c lastYield = nullptr; - 2c686: 4b06 ldr r3, [pc, #24] ; (2c6a0 ) - 2c688: 601a str r2, [r3, #0] - 2c68a: e7c4 b.n 2c616 - 2c68c: 20005217 .word 0x20005217 - 2c690: 2000bc7e .word 0x2000bc7e - 2c694: 2000b6f4 .word 0x2000b6f4 - 2c698: 2000bc7b .word 0x2000bc7b - 2c69c: 6001e25e .word 0x6001e25e - 2c6a0: 2000b700 .word 0x2000b700 - 2c6a4: 2000bc7c .word 0x2000bc7c - 2c6a8: 2000b704 .word 0x2000b704 - -0002c6ac : + 2c76e: 4b06 ldr r3, [pc, #24] ; (2c788 ) + 2c770: 601a str r2, [r3, #0] + 2c772: e7c4 b.n 2c6fe + 2c774: 200052d7 .word 0x200052d7 + 2c778: 2000bc9e .word 0x2000bc9e + 2c77c: 2000b714 .word 0x2000b714 + 2c780: 2000bc9b .word 0x2000bc9b + 2c784: 6001e25e .word 0x6001e25e + 2c788: 2000b720 .word 0x2000b720 + 2c78c: 2000bc9c .word 0x2000bc9c + 2c790: 2000b724 .word 0x2000b724 + +0002c794 : uint32_t hi1 = SNVS_HPRTCMR; - 2c6ac: 4a07 ldr r2, [pc, #28] ; (2c6cc ) - 2c6ae: 6a50 ldr r0, [r2, #36] ; 0x24 + 2c794: 4a07 ldr r2, [pc, #28] ; (2c7b4 ) + 2c796: 6a50 ldr r0, [r2, #36] ; 0x24 uint32_t lo1 = SNVS_HPRTCLR; - 2c6b0: 6a93 ldr r3, [r2, #40] ; 0x28 + 2c798: 6a93 ldr r3, [r2, #40] ; 0x28 uint32_t hi2 = SNVS_HPRTCMR; - 2c6b2: 4619 mov r1, r3 - 2c6b4: 4684 mov ip, r0 - 2c6b6: 6a50 ldr r0, [r2, #36] ; 0x24 + 2c79a: 4619 mov r1, r3 + 2c79c: 4684 mov ip, r0 + 2c79e: 6a50 ldr r0, [r2, #36] ; 0x24 uint32_t lo2 = SNVS_HPRTCLR; - 2c6b8: 6a93 ldr r3, [r2, #40] ; 0x28 + 2c7a0: 6a93 ldr r3, [r2, #40] ; 0x28 if (lo1 == lo2 && hi1 == hi2) { - 2c6ba: 4299 cmp r1, r3 - 2c6bc: d1f9 bne.n 2c6b2 - 2c6be: 4584 cmp ip, r0 - 2c6c0: d1f7 bne.n 2c6b2 + 2c7a2: 4299 cmp r1, r3 + 2c7a4: d1f9 bne.n 2c79a + 2c7a6: 4584 cmp ip, r0 + 2c7a8: d1f7 bne.n 2c79a return (hi2 << 17) | (lo2 >> 15); - 2c6c2: 0bdb lsrs r3, r3, #15 + 2c7aa: 0bdb lsrs r3, r3, #15 } - 2c6c4: ea43 4040 orr.w r0, r3, r0, lsl #17 - 2c6c8: 4770 bx lr - 2c6ca: bf00 nop - 2c6cc: 400d4000 .word 0x400d4000 + 2c7ac: ea43 4040 orr.w r0, r3, r0, lsl #17 + 2c7b0: 4770 bx lr + 2c7b2: bf00 nop + 2c7b4: 400d4000 .word 0x400d4000 -0002c6d0 : +0002c7b8 : #include void serialEvent() __attribute__((weak)); void serialEvent() { } - 2c6d0: 4770 bx lr - 2c6d2: bf00 nop - 2c6d4: 0000 movs r0, r0 + 2c7b8: 4770 bx lr + 2c7ba: bf00 nop + 2c7bc: 0000 movs r0, r0 ... -0002c6d8 : - 2c6d8: b508 push {r3, lr} - 2c6da: ed2d 8b04 vpush {d8-d9} - 2c6de: eeb0 9b40 vmov.f64 d9, d0 - 2c6e2: eeb0 8b41 vmov.f64 d8, d1 - 2c6e6: f000 f85f bl 2c7a8 <__ieee754_fmod> - 2c6ea: eeb4 9b48 vcmp.f64 d9, d8 - 2c6ee: eef1 fa10 vmrs APSR_nzcv, fpscr - 2c6f2: d606 bvs.n 2c702 - 2c6f4: ed9f 9b0a vldr d9, [pc, #40] ; 2c720 - 2c6f8: eeb4 8b49 vcmp.f64 d8, d9 - 2c6fc: eef1 fa10 vmrs APSR_nzcv, fpscr - 2c700: d002 beq.n 2c708 - 2c702: ecbd 8b04 vpop {d8-d9} - 2c706: bd08 pop {r3, pc} - 2c708: f001 ffbc bl 2e684 <__errno> - 2c70c: ee89 0b09 vdiv.f64 d0, d9, d9 - 2c710: ecbd 8b04 vpop {d8-d9} - 2c714: 2321 movs r3, #33 ; 0x21 - 2c716: 6003 str r3, [r0, #0] - 2c718: bd08 pop {r3, pc} - 2c71a: bf00 nop - 2c71c: f3af 8000 nop.w +0002c7c0 : + 2c7c0: b508 push {r3, lr} + 2c7c2: ed2d 8b04 vpush {d8-d9} + 2c7c6: eeb0 9b40 vmov.f64 d9, d0 + 2c7ca: eeb0 8b41 vmov.f64 d8, d1 + 2c7ce: f000 f85f bl 2c890 <__ieee754_fmod> + 2c7d2: eeb4 9b48 vcmp.f64 d9, d8 + 2c7d6: eef1 fa10 vmrs APSR_nzcv, fpscr + 2c7da: d606 bvs.n 2c7ea + 2c7dc: ed9f 9b0a vldr d9, [pc, #40] ; 2c808 + 2c7e0: eeb4 8b49 vcmp.f64 d8, d9 + 2c7e4: eef1 fa10 vmrs APSR_nzcv, fpscr + 2c7e8: d002 beq.n 2c7f0 + 2c7ea: ecbd 8b04 vpop {d8-d9} + 2c7ee: bd08 pop {r3, pc} + 2c7f0: f001 ffbc bl 2e76c <__errno> + 2c7f4: ee89 0b09 vdiv.f64 d0, d9, d9 + 2c7f8: ecbd 8b04 vpop {d8-d9} + 2c7fc: 2321 movs r3, #33 ; 0x21 + 2c7fe: 6003 str r3, [r0, #0] + 2c800: bd08 pop {r3, pc} + 2c802: bf00 nop + 2c804: f3af 8000 nop.w ... -0002c728 : - 2c728: eeb0 7b40 vmov.f64 d7, d0 - 2c72c: ee17 3a90 vmov r3, s15 - 2c730: 4a1b ldr r2, [pc, #108] ; (2c7a0 ) - 2c732: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 - 2c736: 4293 cmp r3, r2 - 2c738: dd1b ble.n 2c772 - 2c73a: 4a1a ldr r2, [pc, #104] ; (2c7a4 ) - 2c73c: 4293 cmp r3, r2 - 2c73e: dd02 ble.n 2c746 - 2c740: ee30 0b40 vsub.f64 d0, d0, d0 - 2c744: 4770 bx lr - 2c746: b500 push {lr} - 2c748: b085 sub sp, #20 - 2c74a: 4668 mov r0, sp - 2c74c: f000 f978 bl 2ca40 <__ieee754_rem_pio2> - 2c750: f000 0003 and.w r0, r0, #3 - 2c754: 2801 cmp r0, #1 - 2c756: ed9d 1b02 vldr d1, [sp, #8] - 2c75a: ed9d 0b00 vldr d0, [sp] - 2c75e: d00c beq.n 2c77a - 2c760: 2802 cmp r0, #2 - 2c762: d012 beq.n 2c78a - 2c764: b170 cbz r0, 2c784 - 2c766: 2001 movs r0, #1 - 2c768: f000 fe96 bl 2d498 <__kernel_sin> - 2c76c: b005 add sp, #20 - 2c76e: f85d fb04 ldr.w pc, [sp], #4 - 2c772: ed9f 1b09 vldr d1, [pc, #36] ; 2c798 - 2c776: f000 bdf7 b.w 2d368 <__kernel_cos> - 2c77a: f000 fe8d bl 2d498 <__kernel_sin> - 2c77e: eeb1 0b40 vneg.f64 d0, d0 - 2c782: e7f3 b.n 2c76c - 2c784: f000 fdf0 bl 2d368 <__kernel_cos> - 2c788: e7f0 b.n 2c76c - 2c78a: f000 fded bl 2d368 <__kernel_cos> - 2c78e: eeb1 0b40 vneg.f64 d0, d0 - 2c792: e7eb b.n 2c76c - 2c794: f3af 8000 nop.w +0002c810 : + 2c810: eeb0 7b40 vmov.f64 d7, d0 + 2c814: ee17 3a90 vmov r3, s15 + 2c818: 4a1b ldr r2, [pc, #108] ; (2c888 ) + 2c81a: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 2c81e: 4293 cmp r3, r2 + 2c820: dd1b ble.n 2c85a + 2c822: 4a1a ldr r2, [pc, #104] ; (2c88c ) + 2c824: 4293 cmp r3, r2 + 2c826: dd02 ble.n 2c82e + 2c828: ee30 0b40 vsub.f64 d0, d0, d0 + 2c82c: 4770 bx lr + 2c82e: b500 push {lr} + 2c830: b085 sub sp, #20 + 2c832: 4668 mov r0, sp + 2c834: f000 f978 bl 2cb28 <__ieee754_rem_pio2> + 2c838: f000 0003 and.w r0, r0, #3 + 2c83c: 2801 cmp r0, #1 + 2c83e: ed9d 1b02 vldr d1, [sp, #8] + 2c842: ed9d 0b00 vldr d0, [sp] + 2c846: d00c beq.n 2c862 + 2c848: 2802 cmp r0, #2 + 2c84a: d012 beq.n 2c872 + 2c84c: b170 cbz r0, 2c86c + 2c84e: 2001 movs r0, #1 + 2c850: f000 fe96 bl 2d580 <__kernel_sin> + 2c854: b005 add sp, #20 + 2c856: f85d fb04 ldr.w pc, [sp], #4 + 2c85a: ed9f 1b09 vldr d1, [pc, #36] ; 2c880 + 2c85e: f000 bdf7 b.w 2d450 <__kernel_cos> + 2c862: f000 fe8d bl 2d580 <__kernel_sin> + 2c866: eeb1 0b40 vneg.f64 d0, d0 + 2c86a: e7f3 b.n 2c854 + 2c86c: f000 fdf0 bl 2d450 <__kernel_cos> + 2c870: e7f0 b.n 2c854 + 2c872: f000 fded bl 2d450 <__kernel_cos> + 2c876: eeb1 0b40 vneg.f64 d0, d0 + 2c87a: e7eb b.n 2c854 + 2c87c: f3af 8000 nop.w ... - 2c7a0: 3fe921fb .word 0x3fe921fb - 2c7a4: 7fefffff .word 0x7fefffff - -0002c7a8 <__ieee754_fmod>: - 2c7a8: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 2c7ac: b085 sub sp, #20 - 2c7ae: ed8d 1b00 vstr d1, [sp] - 2c7b2: e9dd 7c00 ldrd r7, ip, [sp] - 2c7b6: f02c 4000 bic.w r0, ip, #2147483648 ; 0x80000000 - 2c7ba: ea50 0307 orrs.w r3, r0, r7 - 2c7be: ed8d 0b02 vstr d0, [sp, #8] - 2c7c2: d02f beq.n 2c824 <__ieee754_fmod+0x7c> - 2c7c4: 9b03 ldr r3, [sp, #12] - 2c7c6: 4a98 ldr r2, [pc, #608] ; (2ca28 <__ieee754_fmod+0x280>) - 2c7c8: f023 4e00 bic.w lr, r3, #2147483648 ; 0x80000000 - 2c7cc: 4596 cmp lr, r2 - 2c7ce: dc29 bgt.n 2c824 <__ieee754_fmod+0x7c> - 2c7d0: 427a negs r2, r7 - 2c7d2: 4996 ldr r1, [pc, #600] ; (2ca2c <__ieee754_fmod+0x284>) - 2c7d4: 433a orrs r2, r7 - 2c7d6: ea40 72d2 orr.w r2, r0, r2, lsr #31 - 2c7da: 428a cmp r2, r1 - 2c7dc: d822 bhi.n 2c824 <__ieee754_fmod+0x7c> - 2c7de: f8dd 9008 ldr.w r9, [sp, #8] - 2c7e2: 4586 cmp lr, r0 - 2c7e4: 463c mov r4, r7 - 2c7e6: 464a mov r2, r9 - 2c7e8: f003 4600 and.w r6, r3, #2147483648 ; 0x80000000 - 2c7ec: dc06 bgt.n 2c7fc <__ieee754_fmod+0x54> - 2c7ee: f2c0 80c7 blt.w 2c980 <__ieee754_fmod+0x1d8> - 2c7f2: 45b9 cmp r9, r7 - 2c7f4: f0c0 80c4 bcc.w 2c980 <__ieee754_fmod+0x1d8> - 2c7f8: f000 80fd beq.w 2c9f6 <__ieee754_fmod+0x24e> - 2c7fc: 498b ldr r1, [pc, #556] ; (2ca2c <__ieee754_fmod+0x284>) - 2c7fe: 4019 ands r1, r3 - 2c800: b9d9 cbnz r1, 2c83a <__ieee754_fmod+0x92> - 2c802: f1be 0f00 cmp.w lr, #0 - 2c806: f040 80df bne.w 2c9c8 <__ieee754_fmod+0x220> - 2c80a: f1b9 0f00 cmp.w r9, #0 - 2c80e: 464d mov r5, r9 - 2c810: f340 8108 ble.w 2ca24 <__ieee754_fmod+0x27c> - 2c814: f2a1 4113 subw r1, r1, #1043 ; 0x413 - 2c818: 006d lsls r5, r5, #1 - 2c81a: 2d00 cmp r5, #0 - 2c81c: f101 31ff add.w r1, r1, #4294967295 ; 0xffffffff - 2c820: dcfa bgt.n 2c818 <__ieee754_fmod+0x70> - 2c822: e00e b.n 2c842 <__ieee754_fmod+0x9a> - 2c824: ed9d 7b02 vldr d7, [sp, #8] - 2c828: ed9d 6b00 vldr d6, [sp] - 2c82c: ee27 7b06 vmul.f64 d7, d7, d6 - 2c830: ee87 0b07 vdiv.f64 d0, d7, d7 - 2c834: b005 add sp, #20 - 2c836: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 2c83a: ea4f 512e mov.w r1, lr, asr #20 - 2c83e: f2a1 31ff subw r1, r1, #1023 ; 0x3ff - 2c842: 4d7a ldr r5, [pc, #488] ; (2ca2c <__ieee754_fmod+0x284>) - 2c844: ea0c 0505 and.w r5, ip, r5 - 2c848: b985 cbnz r5, 2c86c <__ieee754_fmod+0xc4> - 2c84a: 2800 cmp r0, #0 - 2c84c: f040 80ad bne.w 2c9aa <__ieee754_fmod+0x202> - 2c850: 2f00 cmp r7, #0 - 2c852: 46b8 mov r8, r7 - 2c854: f340 80e4 ble.w 2ca20 <__ieee754_fmod+0x278> - 2c858: f2a5 4513 subw r5, r5, #1043 ; 0x413 - 2c85c: ea4f 0848 mov.w r8, r8, lsl #1 - 2c860: f1b8 0f00 cmp.w r8, #0 - 2c864: f105 35ff add.w r5, r5, #4294967295 ; 0xffffffff - 2c868: dcf8 bgt.n 2c85c <__ieee754_fmod+0xb4> - 2c86a: e002 b.n 2c872 <__ieee754_fmod+0xca> - 2c86c: 1505 asrs r5, r0, #20 - 2c86e: f2a5 35ff subw r5, r5, #1023 ; 0x3ff - 2c872: f8df 81bc ldr.w r8, [pc, #444] ; 2ca30 <__ieee754_fmod+0x288> - 2c876: 4541 cmp r1, r8 - 2c878: db72 blt.n 2c960 <__ieee754_fmod+0x1b8> - 2c87a: f3c3 0313 ubfx r3, r3, #0, #20 - 2c87e: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 - 2c882: f8df e1ac ldr.w lr, [pc, #428] ; 2ca30 <__ieee754_fmod+0x288> - 2c886: 4575 cmp r5, lr - 2c888: db59 blt.n 2c93e <__ieee754_fmod+0x196> - 2c88a: f3cc 0c13 ubfx ip, ip, #0, #20 - 2c88e: f44c 1c80 orr.w ip, ip, #1048576 ; 0x100000 - 2c892: 1bd0 subs r0, r2, r7 - 2c894: 1b49 subs r1, r1, r5 - 2c896: d10b bne.n 2c8b0 <__ieee754_fmod+0x108> - 2c898: e01d b.n 2c8d6 <__ieee754_fmod+0x12e> - 2c89a: ea50 030e orrs.w r3, r0, lr - 2c89e: d045 beq.n 2c92c <__ieee754_fmod+0x184> - 2c8a0: ea4f 73de mov.w r3, lr, lsr #31 - 2c8a4: 3901 subs r1, #1 - 2c8a6: eb03 0340 add.w r3, r3, r0, lsl #1 - 2c8aa: ea4f 024e mov.w r2, lr, lsl #1 - 2c8ae: d011 beq.n 2c8d4 <__ieee754_fmod+0x12c> - 2c8b0: eba3 000c sub.w r0, r3, ip - 2c8b4: 4294 cmp r4, r2 - 2c8b6: bf88 it hi - 2c8b8: f100 30ff addhi.w r0, r0, #4294967295 ; 0xffffffff - 2c8bc: 2800 cmp r0, #0 - 2c8be: eba2 0e04 sub.w lr, r2, r4 - 2c8c2: ea4f 77d2 mov.w r7, r2, lsr #31 - 2c8c6: dae8 bge.n 2c89a <__ieee754_fmod+0xf2> - 2c8c8: 3901 subs r1, #1 - 2c8ca: eb07 0343 add.w r3, r7, r3, lsl #1 - 2c8ce: ea4f 0242 mov.w r2, r2, lsl #1 - 2c8d2: d1ed bne.n 2c8b0 <__ieee754_fmod+0x108> - 2c8d4: 1b10 subs r0, r2, r4 - 2c8d6: eba3 0c0c sub.w ip, r3, ip - 2c8da: 4294 cmp r4, r2 - 2c8dc: bf88 it hi - 2c8de: f10c 3cff addhi.w ip, ip, #4294967295 ; 0xffffffff - 2c8e2: f1bc 0f00 cmp.w ip, #0 - 2c8e6: bfa4 itt ge - 2c8e8: 4602 movge r2, r0 - 2c8ea: 4663 movge r3, ip - 2c8ec: ea53 0102 orrs.w r1, r3, r2 - 2c8f0: d105 bne.n 2c8fe <__ieee754_fmod+0x156> - 2c8f2: e01b b.n 2c92c <__ieee754_fmod+0x184> - 2c8f4: 0fd1 lsrs r1, r2, #31 - 2c8f6: eb01 0343 add.w r3, r1, r3, lsl #1 - 2c8fa: 0052 lsls r2, r2, #1 - 2c8fc: 3d01 subs r5, #1 - 2c8fe: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 2c902: dbf7 blt.n 2c8f4 <__ieee754_fmod+0x14c> - 2c904: 494a ldr r1, [pc, #296] ; (2ca30 <__ieee754_fmod+0x288>) - 2c906: 428d cmp r5, r1 - 2c908: da6a bge.n 2c9e0 <__ieee754_fmod+0x238> - 2c90a: 1b49 subs r1, r1, r5 - 2c90c: 2914 cmp r1, #20 - 2c90e: dc78 bgt.n 2ca02 <__ieee754_fmod+0x25a> - 2c910: f205 401e addw r0, r5, #1054 ; 0x41e - 2c914: 40ca lsrs r2, r1 - 2c916: fa03 f000 lsl.w r0, r3, r0 - 2c91a: fa43 f101 asr.w r1, r3, r1 - 2c91e: 4310 orrs r0, r2 - 2c920: 430e orrs r6, r1 - 2c922: 4633 mov r3, r6 - 2c924: 4602 mov r2, r0 - 2c926: ec43 2b10 vmov d0, r2, r3 - 2c92a: e783 b.n 2c834 <__ieee754_fmod+0x8c> - 2c92c: 4b41 ldr r3, [pc, #260] ; (2ca34 <__ieee754_fmod+0x28c>) - 2c92e: 0ff6 lsrs r6, r6, #31 - 2c930: eb03 03c6 add.w r3, r3, r6, lsl #3 - 2c934: ed93 0b00 vldr d0, [r3] - 2c938: b005 add sp, #20 - 2c93a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 2c93e: ebae 0405 sub.w r4, lr, r5 - 2c942: 2c1f cmp r4, #31 - 2c944: dd25 ble.n 2c992 <__ieee754_fmod+0x1ea> - 2c946: 483c ldr r0, [pc, #240] ; (2ca38 <__ieee754_fmod+0x290>) - 2c948: 1b49 subs r1, r1, r5 - 2c94a: eba0 0c05 sub.w ip, r0, r5 - 2c94e: fa07 fc0c lsl.w ip, r7, ip - 2c952: bf18 it ne - 2c954: 2400 movne r4, #0 - 2c956: d1ab bne.n 2c8b0 <__ieee754_fmod+0x108> - 2c958: eba3 0c0c sub.w ip, r3, ip - 2c95c: 4610 mov r0, r2 - 2c95e: e7c0 b.n 2c8e2 <__ieee754_fmod+0x13a> - 2c960: eba8 0801 sub.w r8, r8, r1 - 2c964: f1b8 0f1f cmp.w r8, #31 - 2c968: dc0d bgt.n 2c986 <__ieee754_fmod+0x1de> - 2c96a: f201 431e addw r3, r1, #1054 ; 0x41e - 2c96e: fa0e fe08 lsl.w lr, lr, r8 - 2c972: fa29 f303 lsr.w r3, r9, r3 - 2c976: fa09 f208 lsl.w r2, r9, r8 - 2c97a: ea43 030e orr.w r3, r3, lr - 2c97e: e780 b.n 2c882 <__ieee754_fmod+0xda> - 2c980: ed9d 0b02 vldr d0, [sp, #8] - 2c984: e756 b.n 2c834 <__ieee754_fmod+0x8c> - 2c986: 4b2c ldr r3, [pc, #176] ; (2ca38 <__ieee754_fmod+0x290>) - 2c988: 1a5b subs r3, r3, r1 - 2c98a: fa09 f303 lsl.w r3, r9, r3 - 2c98e: 2200 movs r2, #0 - 2c990: e777 b.n 2c882 <__ieee754_fmod+0xda> - 2c992: f205 4c1e addw ip, r5, #1054 ; 0x41e - 2c996: fa00 fe04 lsl.w lr, r0, r4 - 2c99a: fa27 fc0c lsr.w ip, r7, ip - 2c99e: fa07 f404 lsl.w r4, r7, r4 - 2c9a2: ea4c 0c0e orr.w ip, ip, lr - 2c9a6: 1b10 subs r0, r2, r4 - 2c9a8: e774 b.n 2c894 <__ieee754_fmod+0xec> - 2c9aa: ea4f 28c0 mov.w r8, r0, lsl #11 - 2c9ae: f1b8 0f00 cmp.w r8, #0 - 2c9b2: 4d1f ldr r5, [pc, #124] ; (2ca30 <__ieee754_fmod+0x288>) - 2c9b4: f77f af5d ble.w 2c872 <__ieee754_fmod+0xca> - 2c9b8: ea4f 0848 mov.w r8, r8, lsl #1 - 2c9bc: f1b8 0f00 cmp.w r8, #0 - 2c9c0: f105 35ff add.w r5, r5, #4294967295 ; 0xffffffff - 2c9c4: dcf8 bgt.n 2c9b8 <__ieee754_fmod+0x210> - 2c9c6: e754 b.n 2c872 <__ieee754_fmod+0xca> - 2c9c8: ea4f 25ce mov.w r5, lr, lsl #11 - 2c9cc: 2d00 cmp r5, #0 - 2c9ce: 4918 ldr r1, [pc, #96] ; (2ca30 <__ieee754_fmod+0x288>) - 2c9d0: f77f af37 ble.w 2c842 <__ieee754_fmod+0x9a> - 2c9d4: 006d lsls r5, r5, #1 - 2c9d6: 2d00 cmp r5, #0 - 2c9d8: f101 31ff add.w r1, r1, #4294967295 ; 0xffffffff - 2c9dc: dcfa bgt.n 2c9d4 <__ieee754_fmod+0x22c> - 2c9de: e730 b.n 2c842 <__ieee754_fmod+0x9a> - 2c9e0: f5a3 1380 sub.w r3, r3, #1048576 ; 0x100000 - 2c9e4: 4333 orrs r3, r6 - 2c9e6: f205 35ff addw r5, r5, #1023 ; 0x3ff - 2c9ea: ea43 5105 orr.w r1, r3, r5, lsl #20 - 2c9ee: 4610 mov r0, r2 - 2c9f0: ec41 0b10 vmov d0, r0, r1 - 2c9f4: e71e b.n 2c834 <__ieee754_fmod+0x8c> - 2c9f6: 4b0f ldr r3, [pc, #60] ; (2ca34 <__ieee754_fmod+0x28c>) - 2c9f8: eb03 7316 add.w r3, r3, r6, lsr #28 - 2c9fc: ed93 0b00 vldr d0, [r3] - 2ca00: e718 b.n 2c834 <__ieee754_fmod+0x8c> - 2ca02: 291f cmp r1, #31 - 2ca04: dc07 bgt.n 2ca16 <__ieee754_fmod+0x26e> - 2ca06: f205 401e addw r0, r5, #1054 ; 0x41e - 2ca0a: fa22 f101 lsr.w r1, r2, r1 - 2ca0e: fa03 f000 lsl.w r0, r3, r0 - 2ca12: 4308 orrs r0, r1 - 2ca14: e785 b.n 2c922 <__ieee754_fmod+0x17a> - 2ca16: 4808 ldr r0, [pc, #32] ; (2ca38 <__ieee754_fmod+0x290>) - 2ca18: 1b40 subs r0, r0, r5 - 2ca1a: fa43 f000 asr.w r0, r3, r0 - 2ca1e: e780 b.n 2c922 <__ieee754_fmod+0x17a> - 2ca20: 4d06 ldr r5, [pc, #24] ; (2ca3c <__ieee754_fmod+0x294>) - 2ca22: e726 b.n 2c872 <__ieee754_fmod+0xca> - 2ca24: 4905 ldr r1, [pc, #20] ; (2ca3c <__ieee754_fmod+0x294>) - 2ca26: e70c b.n 2c842 <__ieee754_fmod+0x9a> - 2ca28: 7fefffff .word 0x7fefffff - 2ca2c: 7ff00000 .word 0x7ff00000 - 2ca30: fffffc02 .word 0xfffffc02 - 2ca34: 200002c0 .word 0x200002c0 - 2ca38: fffffbe2 .word 0xfffffbe2 - 2ca3c: fffffbed .word 0xfffffbed - -0002ca40 <__ieee754_rem_pio2>: - 2ca40: b570 push {r4, r5, r6, lr} - 2ca42: ec53 2b10 vmov r2, r3, d0 - 2ca46: 499c ldr r1, [pc, #624] ; (2ccb8 <__ieee754_rem_pio2+0x278>) - 2ca48: f023 4500 bic.w r5, r3, #2147483648 ; 0x80000000 - 2ca4c: 428d cmp r5, r1 - 2ca4e: b088 sub sp, #32 - 2ca50: 4604 mov r4, r0 - 2ca52: dd6a ble.n 2cb2a <__ieee754_rem_pio2+0xea> - 2ca54: 4999 ldr r1, [pc, #612] ; (2ccbc <__ieee754_rem_pio2+0x27c>) - 2ca56: 428d cmp r5, r1 - 2ca58: 461e mov r6, r3 - 2ca5a: dc1b bgt.n 2ca94 <__ieee754_rem_pio2+0x54> - 2ca5c: 2b00 cmp r3, #0 - 2ca5e: ed9f 7b86 vldr d7, [pc, #536] ; 2cc78 <__ieee754_rem_pio2+0x238> - 2ca62: f340 80eb ble.w 2cc3c <__ieee754_rem_pio2+0x1fc> - 2ca66: ee30 7b47 vsub.f64 d7, d0, d7 - 2ca6a: f5a1 211b sub.w r1, r1, #634880 ; 0x9b000 - 2ca6e: f5a1 61f0 sub.w r1, r1, #1920 ; 0x780 - 2ca72: 428d cmp r5, r1 - 2ca74: d06a beq.n 2cb4c <__ieee754_rem_pio2+0x10c> - 2ca76: ed9f 6b82 vldr d6, [pc, #520] ; 2cc80 <__ieee754_rem_pio2+0x240> - 2ca7a: 2001 movs r0, #1 - 2ca7c: ee37 5b46 vsub.f64 d5, d7, d6 - 2ca80: ee37 7b45 vsub.f64 d7, d7, d5 - 2ca84: ed84 5b00 vstr d5, [r4] - 2ca88: ee37 7b46 vsub.f64 d7, d7, d6 - 2ca8c: ed84 7b02 vstr d7, [r4, #8] - 2ca90: b008 add sp, #32 - 2ca92: bd70 pop {r4, r5, r6, pc} - 2ca94: 498a ldr r1, [pc, #552] ; (2ccc0 <__ieee754_rem_pio2+0x280>) - 2ca96: 428d cmp r5, r1 - 2ca98: dd60 ble.n 2cb5c <__ieee754_rem_pio2+0x11c> - 2ca9a: 498a ldr r1, [pc, #552] ; (2ccc4 <__ieee754_rem_pio2+0x284>) - 2ca9c: 428d cmp r5, r1 - 2ca9e: dc4d bgt.n 2cb3c <__ieee754_rem_pio2+0xfc> - 2caa0: 152a asrs r2, r5, #20 - 2caa2: ee10 0a10 vmov r0, s0 - 2caa6: f2a2 4216 subw r2, r2, #1046 ; 0x416 - 2caaa: eba5 5102 sub.w r1, r5, r2, lsl #20 - 2caae: ec41 0b17 vmov d7, r0, r1 - 2cab2: ed9f 5b75 vldr d5, [pc, #468] ; 2cc88 <__ieee754_rem_pio2+0x248> - 2cab6: eebd 6bc7 vcvt.s32.f64 s12, d7 - 2caba: eeb8 6bc6 vcvt.f64.s32 d6, s12 - 2cabe: ee37 7b46 vsub.f64 d7, d7, d6 - 2cac2: ee27 7b05 vmul.f64 d7, d7, d5 - 2cac6: eefd 4bc7 vcvt.s32.f64 s9, d7 - 2caca: ed8d 6b02 vstr d6, [sp, #8] - 2cace: eeb8 6be4 vcvt.f64.s32 d6, s9 - 2cad2: ee37 7b46 vsub.f64 d7, d7, d6 - 2cad6: ee27 7b05 vmul.f64 d7, d7, d5 - 2cada: eeb5 7b40 vcmp.f64 d7, #0.0 - 2cade: eef1 fa10 vmrs APSR_nzcv, fpscr - 2cae2: ed8d 6b04 vstr d6, [sp, #16] - 2cae6: ed8d 7b06 vstr d7, [sp, #24] - 2caea: f040 8096 bne.w 2cc1a <__ieee754_rem_pio2+0x1da> - 2caee: ee14 3a90 vmov r3, s9 - 2caf2: 2b00 cmp r3, #0 - 2caf4: bf0c ite eq - 2caf6: 2301 moveq r3, #1 - 2caf8: 2302 movne r3, #2 - 2cafa: 4973 ldr r1, [pc, #460] ; (2ccc8 <__ieee754_rem_pio2+0x288>) - 2cafc: 9101 str r1, [sp, #4] - 2cafe: 2102 movs r1, #2 - 2cb00: 9100 str r1, [sp, #0] - 2cb02: a802 add r0, sp, #8 - 2cb04: 4621 mov r1, r4 - 2cb06: f000 f8e7 bl 2ccd8 <__kernel_rem_pio2> - 2cb0a: 2e00 cmp r6, #0 - 2cb0c: dac0 bge.n 2ca90 <__ieee754_rem_pio2+0x50> - 2cb0e: ed94 6b00 vldr d6, [r4] - 2cb12: ed94 7b02 vldr d7, [r4, #8] - 2cb16: eeb1 6b46 vneg.f64 d6, d6 - 2cb1a: eeb1 7b47 vneg.f64 d7, d7 - 2cb1e: ed84 6b00 vstr d6, [r4] - 2cb22: ed84 7b02 vstr d7, [r4, #8] - 2cb26: 4240 negs r0, r0 - 2cb28: e7b2 b.n 2ca90 <__ieee754_rem_pio2+0x50> - 2cb2a: 2000 movs r0, #0 - 2cb2c: 2100 movs r1, #0 - 2cb2e: e9c4 0102 strd r0, r1, [r4, #8] - 2cb32: 2000 movs r0, #0 - 2cb34: ed84 0b00 vstr d0, [r4] - 2cb38: b008 add sp, #32 - 2cb3a: bd70 pop {r4, r5, r6, pc} - 2cb3c: ee30 7b40 vsub.f64 d7, d0, d0 - 2cb40: 2000 movs r0, #0 - 2cb42: ed84 7b02 vstr d7, [r4, #8] - 2cb46: ed84 7b00 vstr d7, [r4] - 2cb4a: e7a1 b.n 2ca90 <__ieee754_rem_pio2+0x50> - 2cb4c: ed9f 5b50 vldr d5, [pc, #320] ; 2cc90 <__ieee754_rem_pio2+0x250> - 2cb50: ed9f 6b51 vldr d6, [pc, #324] ; 2cc98 <__ieee754_rem_pio2+0x258> - 2cb54: ee37 7b45 vsub.f64 d7, d7, d5 - 2cb58: 2001 movs r0, #1 - 2cb5a: e78f b.n 2ca7c <__ieee754_rem_pio2+0x3c> - 2cb5c: f000 fcf4 bl 2d548 - 2cb60: eeb6 7b00 vmov.f64 d7, #96 ; 0x3f000000 0.5 - 2cb64: ed9f 5b4e vldr d5, [pc, #312] ; 2cca0 <__ieee754_rem_pio2+0x260> - 2cb68: eea0 7b05 vfma.f64 d7, d0, d5 - 2cb6c: eefd 7bc7 vcvt.s32.f64 s15, d7 - 2cb70: ed9f 3b41 vldr d3, [pc, #260] ; 2cc78 <__ieee754_rem_pio2+0x238> - 2cb74: ee17 0a90 vmov r0, s15 - 2cb78: ed9f 6b41 vldr d6, [pc, #260] ; 2cc80 <__ieee754_rem_pio2+0x240> - 2cb7c: 281f cmp r0, #31 - 2cb7e: eeb8 5be7 vcvt.f64.s32 d5, s15 - 2cb82: eeb1 4b45 vneg.f64 d4, d5 - 2cb86: eea5 0b43 vfms.f64 d0, d5, d3 - 2cb8a: ee25 7b06 vmul.f64 d7, d5, d6 - 2cb8e: dc1c bgt.n 2cbca <__ieee754_rem_pio2+0x18a> - 2cb90: 4b4e ldr r3, [pc, #312] ; (2cccc <__ieee754_rem_pio2+0x28c>) - 2cb92: 1e42 subs r2, r0, #1 - 2cb94: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 2cb98: 42ab cmp r3, r5 - 2cb9a: d016 beq.n 2cbca <__ieee754_rem_pio2+0x18a> - 2cb9c: ee30 6b47 vsub.f64 d6, d0, d7 - 2cba0: ed84 6b00 vstr d6, [r4] - 2cba4: ee30 0b46 vsub.f64 d0, d0, d6 - 2cba8: ee30 0b47 vsub.f64 d0, d0, d7 - 2cbac: 2e00 cmp r6, #0 - 2cbae: ed84 0b02 vstr d0, [r4, #8] - 2cbb2: f6bf af6d bge.w 2ca90 <__ieee754_rem_pio2+0x50> - 2cbb6: eeb1 6b46 vneg.f64 d6, d6 - 2cbba: eeb1 0b40 vneg.f64 d0, d0 - 2cbbe: ed84 6b00 vstr d6, [r4] - 2cbc2: ed84 0b02 vstr d0, [r4, #8] - 2cbc6: 4240 negs r0, r0 - 2cbc8: e762 b.n 2ca90 <__ieee754_rem_pio2+0x50> - 2cbca: ee30 6b47 vsub.f64 d6, d0, d7 - 2cbce: ee16 3a90 vmov r3, s13 - 2cbd2: f3c3 530a ubfx r3, r3, #20, #11 - 2cbd6: ebc3 5315 rsb r3, r3, r5, lsr #20 - 2cbda: 2b10 cmp r3, #16 - 2cbdc: ea4f 5225 mov.w r2, r5, asr #20 - 2cbe0: ddde ble.n 2cba0 <__ieee754_rem_pio2+0x160> - 2cbe2: eeb0 3b40 vmov.f64 d3, d0 - 2cbe6: ed9f 6b2a vldr d6, [pc, #168] ; 2cc90 <__ieee754_rem_pio2+0x250> - 2cbea: ed9f 2b2b vldr d2, [pc, #172] ; 2cc98 <__ieee754_rem_pio2+0x258> - 2cbee: eea4 3b06 vfma.f64 d3, d4, d6 - 2cbf2: ee30 7b43 vsub.f64 d7, d0, d3 - 2cbf6: eea4 7b06 vfma.f64 d7, d4, d6 - 2cbfa: ee95 7b02 vfnms.f64 d7, d5, d2 - 2cbfe: ee33 6b47 vsub.f64 d6, d3, d7 - 2cc02: ee16 3a90 vmov r3, s13 - 2cc06: f3c3 530a ubfx r3, r3, #20, #11 - 2cc0a: 1ad2 subs r2, r2, r3 - 2cc0c: 2a31 cmp r2, #49 ; 0x31 - 2cc0e: dc06 bgt.n 2cc1e <__ieee754_rem_pio2+0x1de> - 2cc10: eeb0 0b43 vmov.f64 d0, d3 - 2cc14: ed84 6b00 vstr d6, [r4] - 2cc18: e7c4 b.n 2cba4 <__ieee754_rem_pio2+0x164> - 2cc1a: 2303 movs r3, #3 - 2cc1c: e76d b.n 2cafa <__ieee754_rem_pio2+0xba> - 2cc1e: ed9f 6b22 vldr d6, [pc, #136] ; 2cca8 <__ieee754_rem_pio2+0x268> - 2cc22: eeb0 0b43 vmov.f64 d0, d3 - 2cc26: ed9f 2b22 vldr d2, [pc, #136] ; 2ccb0 <__ieee754_rem_pio2+0x270> - 2cc2a: eea4 0b06 vfma.f64 d0, d4, d6 - 2cc2e: ee33 7b40 vsub.f64 d7, d3, d0 - 2cc32: eea4 7b06 vfma.f64 d7, d4, d6 - 2cc36: ee95 7b02 vfnms.f64 d7, d5, d2 - 2cc3a: e7af b.n 2cb9c <__ieee754_rem_pio2+0x15c> - 2cc3c: 4924 ldr r1, [pc, #144] ; (2ccd0 <__ieee754_rem_pio2+0x290>) - 2cc3e: ee30 7b07 vadd.f64 d7, d0, d7 - 2cc42: 428d cmp r5, r1 - 2cc44: d00e beq.n 2cc64 <__ieee754_rem_pio2+0x224> - 2cc46: ed9f 6b0e vldr d6, [pc, #56] ; 2cc80 <__ieee754_rem_pio2+0x240> - 2cc4a: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 2cc4e: ee37 5b06 vadd.f64 d5, d7, d6 - 2cc52: ee37 7b45 vsub.f64 d7, d7, d5 - 2cc56: ed84 5b00 vstr d5, [r4] - 2cc5a: ee37 7b06 vadd.f64 d7, d7, d6 - 2cc5e: ed84 7b02 vstr d7, [r4, #8] - 2cc62: e715 b.n 2ca90 <__ieee754_rem_pio2+0x50> - 2cc64: ed9f 5b0a vldr d5, [pc, #40] ; 2cc90 <__ieee754_rem_pio2+0x250> - 2cc68: ed9f 6b0b vldr d6, [pc, #44] ; 2cc98 <__ieee754_rem_pio2+0x258> - 2cc6c: ee37 7b05 vadd.f64 d7, d7, d5 - 2cc70: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 2cc74: e7eb b.n 2cc4e <__ieee754_rem_pio2+0x20e> - 2cc76: bf00 nop - 2cc78: 54400000 .word 0x54400000 - 2cc7c: 3ff921fb .word 0x3ff921fb - 2cc80: 1a626331 .word 0x1a626331 - 2cc84: 3dd0b461 .word 0x3dd0b461 - 2cc88: 00000000 .word 0x00000000 - 2cc8c: 41700000 .word 0x41700000 - 2cc90: 1a600000 .word 0x1a600000 - 2cc94: 3dd0b461 .word 0x3dd0b461 - 2cc98: 2e037073 .word 0x2e037073 - 2cc9c: 3ba3198a .word 0x3ba3198a - 2cca0: 6dc9c883 .word 0x6dc9c883 - 2cca4: 3fe45f30 .word 0x3fe45f30 - 2cca8: 2e000000 .word 0x2e000000 - 2ccac: 3ba3198a .word 0x3ba3198a - 2ccb0: 252049c1 .word 0x252049c1 - 2ccb4: 397b839a .word 0x397b839a - 2ccb8: 3fe921fb .word 0x3fe921fb - 2ccbc: 4002d97b .word 0x4002d97b - 2ccc0: 413921fb .word 0x413921fb - 2ccc4: 7fefffff .word 0x7fefffff - 2ccc8: 200048d0 .word 0x200048d0 - 2cccc: 20004744 .word 0x20004744 - 2ccd0: 3ff921fb .word 0x3ff921fb - 2ccd4: 00000000 .word 0x00000000 - -0002ccd8 <__kernel_rem_pio2>: - 2ccd8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 2ccdc: ed2d 8b08 vpush {d8-d11} - 2cce0: f5ad 7d15 sub.w sp, sp, #596 ; 0x254 - 2cce4: 461c mov r4, r3 - 2cce6: 9304 str r3, [sp, #16] - 2cce8: 9107 str r1, [sp, #28] - 2ccea: 4bab ldr r3, [pc, #684] ; (2cf98 <__kernel_rem_pio2+0x2c0>) - 2ccec: 99a6 ldr r1, [sp, #664] ; 0x298 - 2ccee: f112 0f14 cmn.w r2, #20 - 2ccf2: f853 5021 ldr.w r5, [r3, r1, lsl #2] - 2ccf6: 4682 mov sl, r0 - 2ccf8: f104 38ff add.w r8, r4, #4294967295 ; 0xffffffff - 2ccfc: f2c0 8299 blt.w 2d232 <__kernel_rem_pio2+0x55a> - 2cd00: 49a6 ldr r1, [pc, #664] ; (2cf9c <__kernel_rem_pio2+0x2c4>) - 2cd02: 1ed3 subs r3, r2, #3 - 2cd04: fb81 0103 smull r0, r1, r1, r3 - 2cd08: 17db asrs r3, r3, #31 - 2cd0a: ebc3 03a1 rsb r3, r3, r1, asr #2 - 2cd0e: 9303 str r3, [sp, #12] - 2cd10: 3301 adds r3, #1 - 2cd12: eba3 0383 sub.w r3, r3, r3, lsl #2 - 2cd16: 00db lsls r3, r3, #3 - 2cd18: 18d3 adds r3, r2, r3 - 2cd1a: 9306 str r3, [sp, #24] - 2cd1c: 9b03 ldr r3, [sp, #12] - 2cd1e: eb15 0108 adds.w r1, r5, r8 - 2cd22: eba3 0308 sub.w r3, r3, r8 - 2cd26: d41a bmi.n 2cd5e <__kernel_rem_pio2+0x86> - 2cd28: 3101 adds r1, #1 - 2cd2a: ed9f 6b95 vldr d6, [pc, #596] ; 2cf80 <__kernel_rem_pio2+0x2a8> - 2cd2e: 98a7 ldr r0, [sp, #668] ; 0x29c - 2cd30: 4419 add r1, r3 - 2cd32: aa1c add r2, sp, #112 ; 0x70 - 2cd34: e00a b.n 2cd4c <__kernel_rem_pio2+0x74> - 2cd36: f850 4023 ldr.w r4, [r0, r3, lsl #2] - 2cd3a: ee07 4a90 vmov s15, r4 - 2cd3e: 3301 adds r3, #1 - 2cd40: eeb8 7be7 vcvt.f64.s32 d7, s15 - 2cd44: 428b cmp r3, r1 - 2cd46: eca2 7b02 vstmia r2!, {d7} - 2cd4a: d008 beq.n 2cd5e <__kernel_rem_pio2+0x86> - 2cd4c: 2b00 cmp r3, #0 - 2cd4e: daf2 bge.n 2cd36 <__kernel_rem_pio2+0x5e> - 2cd50: eeb0 7b46 vmov.f64 d7, d6 - 2cd54: 3301 adds r3, #1 - 2cd56: 428b cmp r3, r1 - 2cd58: eca2 7b02 vstmia r2!, {d7} - 2cd5c: d1f6 bne.n 2cd4c <__kernel_rem_pio2+0x74> - 2cd5e: 2d00 cmp r5, #0 - 2cd60: f2c0 82c9 blt.w 2d2f6 <__kernel_rem_pio2+0x61e> - 2cd64: 9b04 ldr r3, [sp, #16] - 2cd66: aa1c add r2, sp, #112 ; 0x70 - 2cd68: eb02 04c3 add.w r4, r2, r3, lsl #3 - 2cd6c: ae6c add r6, sp, #432 ; 0x1b0 - 2cd6e: ea4f 0cc3 mov.w ip, r3, lsl #3 - 2cd72: 4640 mov r0, r8 - 2cd74: 18ef adds r7, r5, r3 - 2cd76: eb0a 01c3 add.w r1, sl, r3, lsl #3 - 2cd7a: f1b8 0f00 cmp.w r8, #0 - 2cd7e: ed9f 7b80 vldr d7, [pc, #512] ; 2cf80 <__kernel_rem_pio2+0x2a8> - 2cd82: db09 blt.n 2cd98 <__kernel_rem_pio2+0xc0> - 2cd84: 4622 mov r2, r4 - 2cd86: 4653 mov r3, sl - 2cd88: ecb3 5b02 vldmia r3!, {d5} - 2cd8c: ed32 6b02 vldmdb r2!, {d6} - 2cd90: 428b cmp r3, r1 - 2cd92: eea5 7b06 vfma.f64 d7, d5, d6 - 2cd96: d1f7 bne.n 2cd88 <__kernel_rem_pio2+0xb0> - 2cd98: 3001 adds r0, #1 - 2cd9a: 42b8 cmp r0, r7 - 2cd9c: eca6 7b02 vstmia r6!, {d7} - 2cda0: f104 0408 add.w r4, r4, #8 - 2cda4: d1e9 bne.n 2cd7a <__kernel_rem_pio2+0xa2> - 2cda6: af08 add r7, sp, #32 - 2cda8: eb07 0385 add.w r3, r7, r5, lsl #2 - 2cdac: ed9f 9b76 vldr d9, [pc, #472] ; 2cf88 <__kernel_rem_pio2+0x2b0> - 2cdb0: ed9f 8b77 vldr d8, [pc, #476] ; 2cf90 <__kernel_rem_pio2+0x2b8> - 2cdb4: 3b04 subs r3, #4 - 2cdb6: f8dd b018 ldr.w fp, [sp, #24] - 2cdba: 9305 str r3, [sp, #20] - 2cdbc: eb0a 040c add.w r4, sl, ip - 2cdc0: eb07 0985 add.w r9, r7, r5, lsl #2 - 2cdc4: ae6c add r6, sp, #432 ; 0x1b0 - 2cdc6: 4629 mov r1, r5 - 2cdc8: 9501 str r5, [sp, #4] - 2cdca: ab94 add r3, sp, #592 ; 0x250 - 2cdcc: eb03 03c1 add.w r3, r3, r1, lsl #3 - 2cdd0: 2900 cmp r1, #0 - 2cdd2: ed13 0b28 vldr d0, [r3, #-160] ; 0xffffff60 - 2cdd6: dd16 ble.n 2ce06 <__kernel_rem_pio2+0x12e> - 2cdd8: eb06 03c1 add.w r3, r6, r1, lsl #3 - 2cddc: 463a mov r2, r7 - 2cdde: ee20 7b09 vmul.f64 d7, d0, d9 - 2cde2: ed33 5b02 vldmdb r3!, {d5} - 2cde6: eeb0 6b40 vmov.f64 d6, d0 - 2cdea: eebd 7bc7 vcvt.s32.f64 s14, d7 - 2cdee: 42b3 cmp r3, r6 - 2cdf0: eeb8 7bc7 vcvt.f64.s32 d7, s14 - 2cdf4: eea7 6b48 vfms.f64 d6, d7, d8 - 2cdf8: eebd 6bc6 vcvt.s32.f64 s12, d6 - 2cdfc: ee37 0b05 vadd.f64 d0, d7, d5 - 2ce00: eca2 6a01 vstmia r2!, {s12} - 2ce04: d1eb bne.n 2cdde <__kernel_rem_pio2+0x106> - 2ce06: 4658 mov r0, fp - 2ce08: 9102 str r1, [sp, #8] - 2ce0a: f000 fba9 bl 2d560 - 2ce0e: eeb0 ab40 vmov.f64 d10, d0 - 2ce12: eeb4 0b00 vmov.f64 d0, #64 ; 0x3e000000 0.125 - 2ce16: ee2a 0b00 vmul.f64 d0, d10, d0 - 2ce1a: f000 fc29 bl 2d670 - 2ce1e: eeb2 7b00 vmov.f64 d7, #32 ; 0x41000000 8.0 - 2ce22: eea0 ab47 vfms.f64 d10, d0, d7 - 2ce26: eebd bbca vcvt.s32.f64 s22, d10 - 2ce2a: f1bb 0f00 cmp.w fp, #0 - 2ce2e: eeb8 7bcb vcvt.f64.s32 d7, s22 - 2ce32: 9902 ldr r1, [sp, #8] - 2ce34: ee3a ab47 vsub.f64 d10, d10, d7 - 2ce38: dd74 ble.n 2cf24 <__kernel_rem_pio2+0x24c> - 2ce3a: f101 3eff add.w lr, r1, #4294967295 ; 0xffffffff - 2ce3e: f1cb 0318 rsb r3, fp, #24 - 2ce42: f857 202e ldr.w r2, [r7, lr, lsl #2] - 2ce46: fa42 fc03 asr.w ip, r2, r3 - 2ce4a: fa0c f303 lsl.w r3, ip, r3 - 2ce4e: 1ad2 subs r2, r2, r3 - 2ce50: f1cb 0017 rsb r0, fp, #23 - 2ce54: ee1b 3a10 vmov r3, s22 - 2ce58: fa42 f500 asr.w r5, r2, r0 - 2ce5c: 4463 add r3, ip - 2ce5e: 2d00 cmp r5, #0 - 2ce60: f847 202e str.w r2, [r7, lr, lsl #2] - 2ce64: ee0b 3a10 vmov s22, r3 - 2ce68: dc64 bgt.n 2cf34 <__kernel_rem_pio2+0x25c> - 2ce6a: eeb5 ab40 vcmp.f64 d10, #0.0 - 2ce6e: eef1 fa10 vmrs APSR_nzcv, fpscr - 2ce72: f040 80c4 bne.w 2cffe <__kernel_rem_pio2+0x326> - 2ce76: 9b01 ldr r3, [sp, #4] - 2ce78: f101 3eff add.w lr, r1, #4294967295 ; 0xffffffff - 2ce7c: 4573 cmp r3, lr - 2ce7e: dc0d bgt.n 2ce9c <__kernel_rem_pio2+0x1c4> - 2ce80: ea4f 0c81 mov.w ip, r1, lsl #2 - 2ce84: eb07 0381 add.w r3, r7, r1, lsl #2 - 2ce88: 2000 movs r0, #0 - 2ce8a: f853 2d04 ldr.w r2, [r3, #-4]! - 2ce8e: 454b cmp r3, r9 - 2ce90: ea40 0002 orr.w r0, r0, r2 - 2ce94: d1f9 bne.n 2ce8a <__kernel_rem_pio2+0x1b2> - 2ce96: 2800 cmp r0, #0 - 2ce98: f040 80f2 bne.w 2d080 <__kernel_rem_pio2+0x3a8> - 2ce9c: 9b01 ldr r3, [sp, #4] - 2ce9e: 3b01 subs r3, #1 - 2cea0: f857 3023 ldr.w r3, [r7, r3, lsl #2] - 2cea4: 2b00 cmp r3, #0 - 2cea6: f040 80e6 bne.w 2d076 <__kernel_rem_pio2+0x39e> - 2ceaa: 9b05 ldr r3, [sp, #20] - 2ceac: 2501 movs r5, #1 - 2ceae: f853 2d04 ldr.w r2, [r3, #-4]! - 2ceb2: 3501 adds r5, #1 - 2ceb4: 2a00 cmp r2, #0 - 2ceb6: d0fa beq.n 2ceae <__kernel_rem_pio2+0x1d6> - 2ceb8: f101 0e01 add.w lr, r1, #1 - 2cebc: 440d add r5, r1 - 2cebe: 4670 mov r0, lr - 2cec0: 9b04 ldr r3, [sp, #16] - 2cec2: 4419 add r1, r3 - 2cec4: 9b03 ldr r3, [sp, #12] - 2cec6: eb03 0c0e add.w ip, r3, lr - 2ceca: f10c 4c80 add.w ip, ip, #1073741824 ; 0x40000000 - 2cece: 9ba7 ldr r3, [sp, #668] ; 0x29c - 2ced0: f10c 3cff add.w ip, ip, #4294967295 ; 0xffffffff - 2ced4: eb03 0c8c add.w ip, r3, ip, lsl #2 - 2ced8: ab1c add r3, sp, #112 ; 0x70 - 2ceda: eb06 0ece add.w lr, r6, lr, lsl #3 - 2cede: eb03 01c1 add.w r1, r3, r1, lsl #3 - 2cee2: ed9c 7a01 vldr s14, [ip, #4] - 2cee6: eeb8 7bc7 vcvt.f64.s32 d7, s14 - 2ceea: f1b8 0f00 cmp.w r8, #0 - 2ceee: ed81 7b00 vstr d7, [r1] - 2cef2: f10c 0c04 add.w ip, ip, #4 - 2cef6: 460a mov r2, r1 - 2cef8: ed9f 6b21 vldr d6, [pc, #132] ; 2cf80 <__kernel_rem_pio2+0x2a8> - 2cefc: f101 0108 add.w r1, r1, #8 - 2cf00: db09 blt.n 2cf16 <__kernel_rem_pio2+0x23e> - 2cf02: 4653 mov r3, sl - 2cf04: e001 b.n 2cf0a <__kernel_rem_pio2+0x232> - 2cf06: ed32 7b02 vldmdb r2!, {d7} - 2cf0a: ecb3 5b02 vldmia r3!, {d5} - 2cf0e: 42a3 cmp r3, r4 - 2cf10: eea5 6b07 vfma.f64 d6, d5, d7 - 2cf14: d1f7 bne.n 2cf06 <__kernel_rem_pio2+0x22e> - 2cf16: 3001 adds r0, #1 - 2cf18: 42a8 cmp r0, r5 - 2cf1a: ecae 6b02 vstmia lr!, {d6} - 2cf1e: dde0 ble.n 2cee2 <__kernel_rem_pio2+0x20a> - 2cf20: 4629 mov r1, r5 - 2cf22: e752 b.n 2cdca <__kernel_rem_pio2+0xf2> - 2cf24: f040 809d bne.w 2d062 <__kernel_rem_pio2+0x38a> - 2cf28: 1e4b subs r3, r1, #1 - 2cf2a: f857 5023 ldr.w r5, [r7, r3, lsl #2] - 2cf2e: 15ed asrs r5, r5, #23 - 2cf30: 2d00 cmp r5, #0 - 2cf32: dd9a ble.n 2ce6a <__kernel_rem_pio2+0x192> - 2cf34: ee1b 3a10 vmov r3, s22 - 2cf38: 2900 cmp r1, #0 - 2cf3a: f103 0301 add.w r3, r3, #1 - 2cf3e: ee0b 3a10 vmov s22, r3 - 2cf42: f340 818c ble.w 2d25e <__kernel_rem_pio2+0x586> - 2cf46: 683a ldr r2, [r7, #0] - 2cf48: 2a00 cmp r2, #0 - 2cf4a: f040 8082 bne.w 2d052 <__kernel_rem_pio2+0x37a> - 2cf4e: 2901 cmp r1, #1 - 2cf50: d02d beq.n 2cfae <__kernel_rem_pio2+0x2d6> - 2cf52: 463b mov r3, r7 - 2cf54: 2001 movs r0, #1 - 2cf56: f853 2f04 ldr.w r2, [r3, #4]! - 2cf5a: 2a00 cmp r2, #0 - 2cf5c: d07c beq.n 2d058 <__kernel_rem_pio2+0x380> - 2cf5e: 1c43 adds r3, r0, #1 - 2cf60: f1c2 7280 rsb r2, r2, #16777216 ; 0x1000000 - 2cf64: 4299 cmp r1, r3 - 2cf66: f847 2020 str.w r2, [r7, r0, lsl #2] - 2cf6a: dd1f ble.n 2cfac <__kernel_rem_pio2+0x2d4> - 2cf6c: f857 2023 ldr.w r2, [r7, r3, lsl #2] - 2cf70: eb07 0c81 add.w ip, r7, r1, lsl #2 - 2cf74: eb07 0383 add.w r3, r7, r3, lsl #2 - 2cf78: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 - 2cf7c: e011 b.n 2cfa2 <__kernel_rem_pio2+0x2ca> - 2cf7e: bf00 nop + 2c888: 3fe921fb .word 0x3fe921fb + 2c88c: 7fefffff .word 0x7fefffff + +0002c890 <__ieee754_fmod>: + 2c890: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 2c894: b085 sub sp, #20 + 2c896: ed8d 1b00 vstr d1, [sp] + 2c89a: e9dd 7c00 ldrd r7, ip, [sp] + 2c89e: f02c 4000 bic.w r0, ip, #2147483648 ; 0x80000000 + 2c8a2: ea50 0307 orrs.w r3, r0, r7 + 2c8a6: ed8d 0b02 vstr d0, [sp, #8] + 2c8aa: d02f beq.n 2c90c <__ieee754_fmod+0x7c> + 2c8ac: 9b03 ldr r3, [sp, #12] + 2c8ae: 4a98 ldr r2, [pc, #608] ; (2cb10 <__ieee754_fmod+0x280>) + 2c8b0: f023 4e00 bic.w lr, r3, #2147483648 ; 0x80000000 + 2c8b4: 4596 cmp lr, r2 + 2c8b6: dc29 bgt.n 2c90c <__ieee754_fmod+0x7c> + 2c8b8: 427a negs r2, r7 + 2c8ba: 4996 ldr r1, [pc, #600] ; (2cb14 <__ieee754_fmod+0x284>) + 2c8bc: 433a orrs r2, r7 + 2c8be: ea40 72d2 orr.w r2, r0, r2, lsr #31 + 2c8c2: 428a cmp r2, r1 + 2c8c4: d822 bhi.n 2c90c <__ieee754_fmod+0x7c> + 2c8c6: f8dd 9008 ldr.w r9, [sp, #8] + 2c8ca: 4586 cmp lr, r0 + 2c8cc: 463c mov r4, r7 + 2c8ce: 464a mov r2, r9 + 2c8d0: f003 4600 and.w r6, r3, #2147483648 ; 0x80000000 + 2c8d4: dc06 bgt.n 2c8e4 <__ieee754_fmod+0x54> + 2c8d6: f2c0 80c7 blt.w 2ca68 <__ieee754_fmod+0x1d8> + 2c8da: 45b9 cmp r9, r7 + 2c8dc: f0c0 80c4 bcc.w 2ca68 <__ieee754_fmod+0x1d8> + 2c8e0: f000 80fd beq.w 2cade <__ieee754_fmod+0x24e> + 2c8e4: 498b ldr r1, [pc, #556] ; (2cb14 <__ieee754_fmod+0x284>) + 2c8e6: 4019 ands r1, r3 + 2c8e8: b9d9 cbnz r1, 2c922 <__ieee754_fmod+0x92> + 2c8ea: f1be 0f00 cmp.w lr, #0 + 2c8ee: f040 80df bne.w 2cab0 <__ieee754_fmod+0x220> + 2c8f2: f1b9 0f00 cmp.w r9, #0 + 2c8f6: 464d mov r5, r9 + 2c8f8: f340 8108 ble.w 2cb0c <__ieee754_fmod+0x27c> + 2c8fc: f2a1 4113 subw r1, r1, #1043 ; 0x413 + 2c900: 006d lsls r5, r5, #1 + 2c902: 2d00 cmp r5, #0 + 2c904: f101 31ff add.w r1, r1, #4294967295 ; 0xffffffff + 2c908: dcfa bgt.n 2c900 <__ieee754_fmod+0x70> + 2c90a: e00e b.n 2c92a <__ieee754_fmod+0x9a> + 2c90c: ed9d 7b02 vldr d7, [sp, #8] + 2c910: ed9d 6b00 vldr d6, [sp] + 2c914: ee27 7b06 vmul.f64 d7, d7, d6 + 2c918: ee87 0b07 vdiv.f64 d0, d7, d7 + 2c91c: b005 add sp, #20 + 2c91e: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 2c922: ea4f 512e mov.w r1, lr, asr #20 + 2c926: f2a1 31ff subw r1, r1, #1023 ; 0x3ff + 2c92a: 4d7a ldr r5, [pc, #488] ; (2cb14 <__ieee754_fmod+0x284>) + 2c92c: ea0c 0505 and.w r5, ip, r5 + 2c930: b985 cbnz r5, 2c954 <__ieee754_fmod+0xc4> + 2c932: 2800 cmp r0, #0 + 2c934: f040 80ad bne.w 2ca92 <__ieee754_fmod+0x202> + 2c938: 2f00 cmp r7, #0 + 2c93a: 46b8 mov r8, r7 + 2c93c: f340 80e4 ble.w 2cb08 <__ieee754_fmod+0x278> + 2c940: f2a5 4513 subw r5, r5, #1043 ; 0x413 + 2c944: ea4f 0848 mov.w r8, r8, lsl #1 + 2c948: f1b8 0f00 cmp.w r8, #0 + 2c94c: f105 35ff add.w r5, r5, #4294967295 ; 0xffffffff + 2c950: dcf8 bgt.n 2c944 <__ieee754_fmod+0xb4> + 2c952: e002 b.n 2c95a <__ieee754_fmod+0xca> + 2c954: 1505 asrs r5, r0, #20 + 2c956: f2a5 35ff subw r5, r5, #1023 ; 0x3ff + 2c95a: f8df 81bc ldr.w r8, [pc, #444] ; 2cb18 <__ieee754_fmod+0x288> + 2c95e: 4541 cmp r1, r8 + 2c960: db72 blt.n 2ca48 <__ieee754_fmod+0x1b8> + 2c962: f3c3 0313 ubfx r3, r3, #0, #20 + 2c966: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 + 2c96a: f8df e1ac ldr.w lr, [pc, #428] ; 2cb18 <__ieee754_fmod+0x288> + 2c96e: 4575 cmp r5, lr + 2c970: db59 blt.n 2ca26 <__ieee754_fmod+0x196> + 2c972: f3cc 0c13 ubfx ip, ip, #0, #20 + 2c976: f44c 1c80 orr.w ip, ip, #1048576 ; 0x100000 + 2c97a: 1bd0 subs r0, r2, r7 + 2c97c: 1b49 subs r1, r1, r5 + 2c97e: d10b bne.n 2c998 <__ieee754_fmod+0x108> + 2c980: e01d b.n 2c9be <__ieee754_fmod+0x12e> + 2c982: ea50 030e orrs.w r3, r0, lr + 2c986: d045 beq.n 2ca14 <__ieee754_fmod+0x184> + 2c988: ea4f 73de mov.w r3, lr, lsr #31 + 2c98c: 3901 subs r1, #1 + 2c98e: eb03 0340 add.w r3, r3, r0, lsl #1 + 2c992: ea4f 024e mov.w r2, lr, lsl #1 + 2c996: d011 beq.n 2c9bc <__ieee754_fmod+0x12c> + 2c998: eba3 000c sub.w r0, r3, ip + 2c99c: 4294 cmp r4, r2 + 2c99e: bf88 it hi + 2c9a0: f100 30ff addhi.w r0, r0, #4294967295 ; 0xffffffff + 2c9a4: 2800 cmp r0, #0 + 2c9a6: eba2 0e04 sub.w lr, r2, r4 + 2c9aa: ea4f 77d2 mov.w r7, r2, lsr #31 + 2c9ae: dae8 bge.n 2c982 <__ieee754_fmod+0xf2> + 2c9b0: 3901 subs r1, #1 + 2c9b2: eb07 0343 add.w r3, r7, r3, lsl #1 + 2c9b6: ea4f 0242 mov.w r2, r2, lsl #1 + 2c9ba: d1ed bne.n 2c998 <__ieee754_fmod+0x108> + 2c9bc: 1b10 subs r0, r2, r4 + 2c9be: eba3 0c0c sub.w ip, r3, ip + 2c9c2: 4294 cmp r4, r2 + 2c9c4: bf88 it hi + 2c9c6: f10c 3cff addhi.w ip, ip, #4294967295 ; 0xffffffff + 2c9ca: f1bc 0f00 cmp.w ip, #0 + 2c9ce: bfa4 itt ge + 2c9d0: 4602 movge r2, r0 + 2c9d2: 4663 movge r3, ip + 2c9d4: ea53 0102 orrs.w r1, r3, r2 + 2c9d8: d105 bne.n 2c9e6 <__ieee754_fmod+0x156> + 2c9da: e01b b.n 2ca14 <__ieee754_fmod+0x184> + 2c9dc: 0fd1 lsrs r1, r2, #31 + 2c9de: eb01 0343 add.w r3, r1, r3, lsl #1 + 2c9e2: 0052 lsls r2, r2, #1 + 2c9e4: 3d01 subs r5, #1 + 2c9e6: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 2c9ea: dbf7 blt.n 2c9dc <__ieee754_fmod+0x14c> + 2c9ec: 494a ldr r1, [pc, #296] ; (2cb18 <__ieee754_fmod+0x288>) + 2c9ee: 428d cmp r5, r1 + 2c9f0: da6a bge.n 2cac8 <__ieee754_fmod+0x238> + 2c9f2: 1b49 subs r1, r1, r5 + 2c9f4: 2914 cmp r1, #20 + 2c9f6: dc78 bgt.n 2caea <__ieee754_fmod+0x25a> + 2c9f8: f205 401e addw r0, r5, #1054 ; 0x41e + 2c9fc: 40ca lsrs r2, r1 + 2c9fe: fa03 f000 lsl.w r0, r3, r0 + 2ca02: fa43 f101 asr.w r1, r3, r1 + 2ca06: 4310 orrs r0, r2 + 2ca08: 430e orrs r6, r1 + 2ca0a: 4633 mov r3, r6 + 2ca0c: 4602 mov r2, r0 + 2ca0e: ec43 2b10 vmov d0, r2, r3 + 2ca12: e783 b.n 2c91c <__ieee754_fmod+0x8c> + 2ca14: 4b41 ldr r3, [pc, #260] ; (2cb1c <__ieee754_fmod+0x28c>) + 2ca16: 0ff6 lsrs r6, r6, #31 + 2ca18: eb03 03c6 add.w r3, r3, r6, lsl #3 + 2ca1c: ed93 0b00 vldr d0, [r3] + 2ca20: b005 add sp, #20 + 2ca22: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 2ca26: ebae 0405 sub.w r4, lr, r5 + 2ca2a: 2c1f cmp r4, #31 + 2ca2c: dd25 ble.n 2ca7a <__ieee754_fmod+0x1ea> + 2ca2e: 483c ldr r0, [pc, #240] ; (2cb20 <__ieee754_fmod+0x290>) + 2ca30: 1b49 subs r1, r1, r5 + 2ca32: eba0 0c05 sub.w ip, r0, r5 + 2ca36: fa07 fc0c lsl.w ip, r7, ip + 2ca3a: bf18 it ne + 2ca3c: 2400 movne r4, #0 + 2ca3e: d1ab bne.n 2c998 <__ieee754_fmod+0x108> + 2ca40: eba3 0c0c sub.w ip, r3, ip + 2ca44: 4610 mov r0, r2 + 2ca46: e7c0 b.n 2c9ca <__ieee754_fmod+0x13a> + 2ca48: eba8 0801 sub.w r8, r8, r1 + 2ca4c: f1b8 0f1f cmp.w r8, #31 + 2ca50: dc0d bgt.n 2ca6e <__ieee754_fmod+0x1de> + 2ca52: f201 431e addw r3, r1, #1054 ; 0x41e + 2ca56: fa0e fe08 lsl.w lr, lr, r8 + 2ca5a: fa29 f303 lsr.w r3, r9, r3 + 2ca5e: fa09 f208 lsl.w r2, r9, r8 + 2ca62: ea43 030e orr.w r3, r3, lr + 2ca66: e780 b.n 2c96a <__ieee754_fmod+0xda> + 2ca68: ed9d 0b02 vldr d0, [sp, #8] + 2ca6c: e756 b.n 2c91c <__ieee754_fmod+0x8c> + 2ca6e: 4b2c ldr r3, [pc, #176] ; (2cb20 <__ieee754_fmod+0x290>) + 2ca70: 1a5b subs r3, r3, r1 + 2ca72: fa09 f303 lsl.w r3, r9, r3 + 2ca76: 2200 movs r2, #0 + 2ca78: e777 b.n 2c96a <__ieee754_fmod+0xda> + 2ca7a: f205 4c1e addw ip, r5, #1054 ; 0x41e + 2ca7e: fa00 fe04 lsl.w lr, r0, r4 + 2ca82: fa27 fc0c lsr.w ip, r7, ip + 2ca86: fa07 f404 lsl.w r4, r7, r4 + 2ca8a: ea4c 0c0e orr.w ip, ip, lr + 2ca8e: 1b10 subs r0, r2, r4 + 2ca90: e774 b.n 2c97c <__ieee754_fmod+0xec> + 2ca92: ea4f 28c0 mov.w r8, r0, lsl #11 + 2ca96: f1b8 0f00 cmp.w r8, #0 + 2ca9a: 4d1f ldr r5, [pc, #124] ; (2cb18 <__ieee754_fmod+0x288>) + 2ca9c: f77f af5d ble.w 2c95a <__ieee754_fmod+0xca> + 2caa0: ea4f 0848 mov.w r8, r8, lsl #1 + 2caa4: f1b8 0f00 cmp.w r8, #0 + 2caa8: f105 35ff add.w r5, r5, #4294967295 ; 0xffffffff + 2caac: dcf8 bgt.n 2caa0 <__ieee754_fmod+0x210> + 2caae: e754 b.n 2c95a <__ieee754_fmod+0xca> + 2cab0: ea4f 25ce mov.w r5, lr, lsl #11 + 2cab4: 2d00 cmp r5, #0 + 2cab6: 4918 ldr r1, [pc, #96] ; (2cb18 <__ieee754_fmod+0x288>) + 2cab8: f77f af37 ble.w 2c92a <__ieee754_fmod+0x9a> + 2cabc: 006d lsls r5, r5, #1 + 2cabe: 2d00 cmp r5, #0 + 2cac0: f101 31ff add.w r1, r1, #4294967295 ; 0xffffffff + 2cac4: dcfa bgt.n 2cabc <__ieee754_fmod+0x22c> + 2cac6: e730 b.n 2c92a <__ieee754_fmod+0x9a> + 2cac8: f5a3 1380 sub.w r3, r3, #1048576 ; 0x100000 + 2cacc: 4333 orrs r3, r6 + 2cace: f205 35ff addw r5, r5, #1023 ; 0x3ff + 2cad2: ea43 5105 orr.w r1, r3, r5, lsl #20 + 2cad6: 4610 mov r0, r2 + 2cad8: ec41 0b10 vmov d0, r0, r1 + 2cadc: e71e b.n 2c91c <__ieee754_fmod+0x8c> + 2cade: 4b0f ldr r3, [pc, #60] ; (2cb1c <__ieee754_fmod+0x28c>) + 2cae0: eb03 7316 add.w r3, r3, r6, lsr #28 + 2cae4: ed93 0b00 vldr d0, [r3] + 2cae8: e718 b.n 2c91c <__ieee754_fmod+0x8c> + 2caea: 291f cmp r1, #31 + 2caec: dc07 bgt.n 2cafe <__ieee754_fmod+0x26e> + 2caee: f205 401e addw r0, r5, #1054 ; 0x41e + 2caf2: fa22 f101 lsr.w r1, r2, r1 + 2caf6: fa03 f000 lsl.w r0, r3, r0 + 2cafa: 4308 orrs r0, r1 + 2cafc: e785 b.n 2ca0a <__ieee754_fmod+0x17a> + 2cafe: 4808 ldr r0, [pc, #32] ; (2cb20 <__ieee754_fmod+0x290>) + 2cb00: 1b40 subs r0, r0, r5 + 2cb02: fa43 f000 asr.w r0, r3, r0 + 2cb06: e780 b.n 2ca0a <__ieee754_fmod+0x17a> + 2cb08: 4d06 ldr r5, [pc, #24] ; (2cb24 <__ieee754_fmod+0x294>) + 2cb0a: e726 b.n 2c95a <__ieee754_fmod+0xca> + 2cb0c: 4905 ldr r1, [pc, #20] ; (2cb24 <__ieee754_fmod+0x294>) + 2cb0e: e70c b.n 2c92a <__ieee754_fmod+0x9a> + 2cb10: 7fefffff .word 0x7fefffff + 2cb14: 7ff00000 .word 0x7ff00000 + 2cb18: fffffc02 .word 0xfffffc02 + 2cb1c: 200002c0 .word 0x200002c0 + 2cb20: fffffbe2 .word 0xfffffbe2 + 2cb24: fffffbed .word 0xfffffbed + +0002cb28 <__ieee754_rem_pio2>: + 2cb28: b570 push {r4, r5, r6, lr} + 2cb2a: ec53 2b10 vmov r2, r3, d0 + 2cb2e: 499c ldr r1, [pc, #624] ; (2cda0 <__ieee754_rem_pio2+0x278>) + 2cb30: f023 4500 bic.w r5, r3, #2147483648 ; 0x80000000 + 2cb34: 428d cmp r5, r1 + 2cb36: b088 sub sp, #32 + 2cb38: 4604 mov r4, r0 + 2cb3a: dd6a ble.n 2cc12 <__ieee754_rem_pio2+0xea> + 2cb3c: 4999 ldr r1, [pc, #612] ; (2cda4 <__ieee754_rem_pio2+0x27c>) + 2cb3e: 428d cmp r5, r1 + 2cb40: 461e mov r6, r3 + 2cb42: dc1b bgt.n 2cb7c <__ieee754_rem_pio2+0x54> + 2cb44: 2b00 cmp r3, #0 + 2cb46: ed9f 7b86 vldr d7, [pc, #536] ; 2cd60 <__ieee754_rem_pio2+0x238> + 2cb4a: f340 80eb ble.w 2cd24 <__ieee754_rem_pio2+0x1fc> + 2cb4e: ee30 7b47 vsub.f64 d7, d0, d7 + 2cb52: f5a1 211b sub.w r1, r1, #634880 ; 0x9b000 + 2cb56: f5a1 61f0 sub.w r1, r1, #1920 ; 0x780 + 2cb5a: 428d cmp r5, r1 + 2cb5c: d06a beq.n 2cc34 <__ieee754_rem_pio2+0x10c> + 2cb5e: ed9f 6b82 vldr d6, [pc, #520] ; 2cd68 <__ieee754_rem_pio2+0x240> + 2cb62: 2001 movs r0, #1 + 2cb64: ee37 5b46 vsub.f64 d5, d7, d6 + 2cb68: ee37 7b45 vsub.f64 d7, d7, d5 + 2cb6c: ed84 5b00 vstr d5, [r4] + 2cb70: ee37 7b46 vsub.f64 d7, d7, d6 + 2cb74: ed84 7b02 vstr d7, [r4, #8] + 2cb78: b008 add sp, #32 + 2cb7a: bd70 pop {r4, r5, r6, pc} + 2cb7c: 498a ldr r1, [pc, #552] ; (2cda8 <__ieee754_rem_pio2+0x280>) + 2cb7e: 428d cmp r5, r1 + 2cb80: dd60 ble.n 2cc44 <__ieee754_rem_pio2+0x11c> + 2cb82: 498a ldr r1, [pc, #552] ; (2cdac <__ieee754_rem_pio2+0x284>) + 2cb84: 428d cmp r5, r1 + 2cb86: dc4d bgt.n 2cc24 <__ieee754_rem_pio2+0xfc> + 2cb88: 152a asrs r2, r5, #20 + 2cb8a: ee10 0a10 vmov r0, s0 + 2cb8e: f2a2 4216 subw r2, r2, #1046 ; 0x416 + 2cb92: eba5 5102 sub.w r1, r5, r2, lsl #20 + 2cb96: ec41 0b17 vmov d7, r0, r1 + 2cb9a: ed9f 5b75 vldr d5, [pc, #468] ; 2cd70 <__ieee754_rem_pio2+0x248> + 2cb9e: eebd 6bc7 vcvt.s32.f64 s12, d7 + 2cba2: eeb8 6bc6 vcvt.f64.s32 d6, s12 + 2cba6: ee37 7b46 vsub.f64 d7, d7, d6 + 2cbaa: ee27 7b05 vmul.f64 d7, d7, d5 + 2cbae: eefd 4bc7 vcvt.s32.f64 s9, d7 + 2cbb2: ed8d 6b02 vstr d6, [sp, #8] + 2cbb6: eeb8 6be4 vcvt.f64.s32 d6, s9 + 2cbba: ee37 7b46 vsub.f64 d7, d7, d6 + 2cbbe: ee27 7b05 vmul.f64 d7, d7, d5 + 2cbc2: eeb5 7b40 vcmp.f64 d7, #0.0 + 2cbc6: eef1 fa10 vmrs APSR_nzcv, fpscr + 2cbca: ed8d 6b04 vstr d6, [sp, #16] + 2cbce: ed8d 7b06 vstr d7, [sp, #24] + 2cbd2: f040 8096 bne.w 2cd02 <__ieee754_rem_pio2+0x1da> + 2cbd6: ee14 3a90 vmov r3, s9 + 2cbda: 2b00 cmp r3, #0 + 2cbdc: bf0c ite eq + 2cbde: 2301 moveq r3, #1 + 2cbe0: 2302 movne r3, #2 + 2cbe2: 4973 ldr r1, [pc, #460] ; (2cdb0 <__ieee754_rem_pio2+0x288>) + 2cbe4: 9101 str r1, [sp, #4] + 2cbe6: 2102 movs r1, #2 + 2cbe8: 9100 str r1, [sp, #0] + 2cbea: a802 add r0, sp, #8 + 2cbec: 4621 mov r1, r4 + 2cbee: f000 f8e7 bl 2cdc0 <__kernel_rem_pio2> + 2cbf2: 2e00 cmp r6, #0 + 2cbf4: dac0 bge.n 2cb78 <__ieee754_rem_pio2+0x50> + 2cbf6: ed94 6b00 vldr d6, [r4] + 2cbfa: ed94 7b02 vldr d7, [r4, #8] + 2cbfe: eeb1 6b46 vneg.f64 d6, d6 + 2cc02: eeb1 7b47 vneg.f64 d7, d7 + 2cc06: ed84 6b00 vstr d6, [r4] + 2cc0a: ed84 7b02 vstr d7, [r4, #8] + 2cc0e: 4240 negs r0, r0 + 2cc10: e7b2 b.n 2cb78 <__ieee754_rem_pio2+0x50> + 2cc12: 2000 movs r0, #0 + 2cc14: 2100 movs r1, #0 + 2cc16: e9c4 0102 strd r0, r1, [r4, #8] + 2cc1a: 2000 movs r0, #0 + 2cc1c: ed84 0b00 vstr d0, [r4] + 2cc20: b008 add sp, #32 + 2cc22: bd70 pop {r4, r5, r6, pc} + 2cc24: ee30 7b40 vsub.f64 d7, d0, d0 + 2cc28: 2000 movs r0, #0 + 2cc2a: ed84 7b02 vstr d7, [r4, #8] + 2cc2e: ed84 7b00 vstr d7, [r4] + 2cc32: e7a1 b.n 2cb78 <__ieee754_rem_pio2+0x50> + 2cc34: ed9f 5b50 vldr d5, [pc, #320] ; 2cd78 <__ieee754_rem_pio2+0x250> + 2cc38: ed9f 6b51 vldr d6, [pc, #324] ; 2cd80 <__ieee754_rem_pio2+0x258> + 2cc3c: ee37 7b45 vsub.f64 d7, d7, d5 + 2cc40: 2001 movs r0, #1 + 2cc42: e78f b.n 2cb64 <__ieee754_rem_pio2+0x3c> + 2cc44: f000 fcf4 bl 2d630 + 2cc48: eeb6 7b00 vmov.f64 d7, #96 ; 0x3f000000 0.5 + 2cc4c: ed9f 5b4e vldr d5, [pc, #312] ; 2cd88 <__ieee754_rem_pio2+0x260> + 2cc50: eea0 7b05 vfma.f64 d7, d0, d5 + 2cc54: eefd 7bc7 vcvt.s32.f64 s15, d7 + 2cc58: ed9f 3b41 vldr d3, [pc, #260] ; 2cd60 <__ieee754_rem_pio2+0x238> + 2cc5c: ee17 0a90 vmov r0, s15 + 2cc60: ed9f 6b41 vldr d6, [pc, #260] ; 2cd68 <__ieee754_rem_pio2+0x240> + 2cc64: 281f cmp r0, #31 + 2cc66: eeb8 5be7 vcvt.f64.s32 d5, s15 + 2cc6a: eeb1 4b45 vneg.f64 d4, d5 + 2cc6e: eea5 0b43 vfms.f64 d0, d5, d3 + 2cc72: ee25 7b06 vmul.f64 d7, d5, d6 + 2cc76: dc1c bgt.n 2ccb2 <__ieee754_rem_pio2+0x18a> + 2cc78: 4b4e ldr r3, [pc, #312] ; (2cdb4 <__ieee754_rem_pio2+0x28c>) + 2cc7a: 1e42 subs r2, r0, #1 + 2cc7c: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 2cc80: 42ab cmp r3, r5 + 2cc82: d016 beq.n 2ccb2 <__ieee754_rem_pio2+0x18a> + 2cc84: ee30 6b47 vsub.f64 d6, d0, d7 + 2cc88: ed84 6b00 vstr d6, [r4] + 2cc8c: ee30 0b46 vsub.f64 d0, d0, d6 + 2cc90: ee30 0b47 vsub.f64 d0, d0, d7 + 2cc94: 2e00 cmp r6, #0 + 2cc96: ed84 0b02 vstr d0, [r4, #8] + 2cc9a: f6bf af6d bge.w 2cb78 <__ieee754_rem_pio2+0x50> + 2cc9e: eeb1 6b46 vneg.f64 d6, d6 + 2cca2: eeb1 0b40 vneg.f64 d0, d0 + 2cca6: ed84 6b00 vstr d6, [r4] + 2ccaa: ed84 0b02 vstr d0, [r4, #8] + 2ccae: 4240 negs r0, r0 + 2ccb0: e762 b.n 2cb78 <__ieee754_rem_pio2+0x50> + 2ccb2: ee30 6b47 vsub.f64 d6, d0, d7 + 2ccb6: ee16 3a90 vmov r3, s13 + 2ccba: f3c3 530a ubfx r3, r3, #20, #11 + 2ccbe: ebc3 5315 rsb r3, r3, r5, lsr #20 + 2ccc2: 2b10 cmp r3, #16 + 2ccc4: ea4f 5225 mov.w r2, r5, asr #20 + 2ccc8: ddde ble.n 2cc88 <__ieee754_rem_pio2+0x160> + 2ccca: eeb0 3b40 vmov.f64 d3, d0 + 2ccce: ed9f 6b2a vldr d6, [pc, #168] ; 2cd78 <__ieee754_rem_pio2+0x250> + 2ccd2: ed9f 2b2b vldr d2, [pc, #172] ; 2cd80 <__ieee754_rem_pio2+0x258> + 2ccd6: eea4 3b06 vfma.f64 d3, d4, d6 + 2ccda: ee30 7b43 vsub.f64 d7, d0, d3 + 2ccde: eea4 7b06 vfma.f64 d7, d4, d6 + 2cce2: ee95 7b02 vfnms.f64 d7, d5, d2 + 2cce6: ee33 6b47 vsub.f64 d6, d3, d7 + 2ccea: ee16 3a90 vmov r3, s13 + 2ccee: f3c3 530a ubfx r3, r3, #20, #11 + 2ccf2: 1ad2 subs r2, r2, r3 + 2ccf4: 2a31 cmp r2, #49 ; 0x31 + 2ccf6: dc06 bgt.n 2cd06 <__ieee754_rem_pio2+0x1de> + 2ccf8: eeb0 0b43 vmov.f64 d0, d3 + 2ccfc: ed84 6b00 vstr d6, [r4] + 2cd00: e7c4 b.n 2cc8c <__ieee754_rem_pio2+0x164> + 2cd02: 2303 movs r3, #3 + 2cd04: e76d b.n 2cbe2 <__ieee754_rem_pio2+0xba> + 2cd06: ed9f 6b22 vldr d6, [pc, #136] ; 2cd90 <__ieee754_rem_pio2+0x268> + 2cd0a: eeb0 0b43 vmov.f64 d0, d3 + 2cd0e: ed9f 2b22 vldr d2, [pc, #136] ; 2cd98 <__ieee754_rem_pio2+0x270> + 2cd12: eea4 0b06 vfma.f64 d0, d4, d6 + 2cd16: ee33 7b40 vsub.f64 d7, d3, d0 + 2cd1a: eea4 7b06 vfma.f64 d7, d4, d6 + 2cd1e: ee95 7b02 vfnms.f64 d7, d5, d2 + 2cd22: e7af b.n 2cc84 <__ieee754_rem_pio2+0x15c> + 2cd24: 4924 ldr r1, [pc, #144] ; (2cdb8 <__ieee754_rem_pio2+0x290>) + 2cd26: ee30 7b07 vadd.f64 d7, d0, d7 + 2cd2a: 428d cmp r5, r1 + 2cd2c: d00e beq.n 2cd4c <__ieee754_rem_pio2+0x224> + 2cd2e: ed9f 6b0e vldr d6, [pc, #56] ; 2cd68 <__ieee754_rem_pio2+0x240> + 2cd32: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 2cd36: ee37 5b06 vadd.f64 d5, d7, d6 + 2cd3a: ee37 7b45 vsub.f64 d7, d7, d5 + 2cd3e: ed84 5b00 vstr d5, [r4] + 2cd42: ee37 7b06 vadd.f64 d7, d7, d6 + 2cd46: ed84 7b02 vstr d7, [r4, #8] + 2cd4a: e715 b.n 2cb78 <__ieee754_rem_pio2+0x50> + 2cd4c: ed9f 5b0a vldr d5, [pc, #40] ; 2cd78 <__ieee754_rem_pio2+0x250> + 2cd50: ed9f 6b0b vldr d6, [pc, #44] ; 2cd80 <__ieee754_rem_pio2+0x258> + 2cd54: ee37 7b05 vadd.f64 d7, d7, d5 + 2cd58: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 2cd5c: e7eb b.n 2cd36 <__ieee754_rem_pio2+0x20e> + 2cd5e: bf00 nop + 2cd60: 54400000 .word 0x54400000 + 2cd64: 3ff921fb .word 0x3ff921fb + 2cd68: 1a626331 .word 0x1a626331 + 2cd6c: 3dd0b461 .word 0x3dd0b461 + 2cd70: 00000000 .word 0x00000000 + 2cd74: 41700000 .word 0x41700000 + 2cd78: 1a600000 .word 0x1a600000 + 2cd7c: 3dd0b461 .word 0x3dd0b461 + 2cd80: 2e037073 .word 0x2e037073 + 2cd84: 3ba3198a .word 0x3ba3198a + 2cd88: 6dc9c883 .word 0x6dc9c883 + 2cd8c: 3fe45f30 .word 0x3fe45f30 + 2cd90: 2e000000 .word 0x2e000000 + 2cd94: 3ba3198a .word 0x3ba3198a + 2cd98: 252049c1 .word 0x252049c1 + 2cd9c: 397b839a .word 0x397b839a + 2cda0: 3fe921fb .word 0x3fe921fb + 2cda4: 4002d97b .word 0x4002d97b + 2cda8: 413921fb .word 0x413921fb + 2cdac: 7fefffff .word 0x7fefffff + 2cdb0: 20004990 .word 0x20004990 + 2cdb4: 20004804 .word 0x20004804 + 2cdb8: 3ff921fb .word 0x3ff921fb + 2cdbc: 00000000 .word 0x00000000 + +0002cdc0 <__kernel_rem_pio2>: + 2cdc0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2cdc4: ed2d 8b08 vpush {d8-d11} + 2cdc8: f5ad 7d15 sub.w sp, sp, #596 ; 0x254 + 2cdcc: 461c mov r4, r3 + 2cdce: 9304 str r3, [sp, #16] + 2cdd0: 9107 str r1, [sp, #28] + 2cdd2: 4bab ldr r3, [pc, #684] ; (2d080 <__kernel_rem_pio2+0x2c0>) + 2cdd4: 99a6 ldr r1, [sp, #664] ; 0x298 + 2cdd6: f112 0f14 cmn.w r2, #20 + 2cdda: f853 5021 ldr.w r5, [r3, r1, lsl #2] + 2cdde: 4682 mov sl, r0 + 2cde0: f104 38ff add.w r8, r4, #4294967295 ; 0xffffffff + 2cde4: f2c0 8299 blt.w 2d31a <__kernel_rem_pio2+0x55a> + 2cde8: 49a6 ldr r1, [pc, #664] ; (2d084 <__kernel_rem_pio2+0x2c4>) + 2cdea: 1ed3 subs r3, r2, #3 + 2cdec: fb81 0103 smull r0, r1, r1, r3 + 2cdf0: 17db asrs r3, r3, #31 + 2cdf2: ebc3 03a1 rsb r3, r3, r1, asr #2 + 2cdf6: 9303 str r3, [sp, #12] + 2cdf8: 3301 adds r3, #1 + 2cdfa: eba3 0383 sub.w r3, r3, r3, lsl #2 + 2cdfe: 00db lsls r3, r3, #3 + 2ce00: 18d3 adds r3, r2, r3 + 2ce02: 9306 str r3, [sp, #24] + 2ce04: 9b03 ldr r3, [sp, #12] + 2ce06: eb15 0108 adds.w r1, r5, r8 + 2ce0a: eba3 0308 sub.w r3, r3, r8 + 2ce0e: d41a bmi.n 2ce46 <__kernel_rem_pio2+0x86> + 2ce10: 3101 adds r1, #1 + 2ce12: ed9f 6b95 vldr d6, [pc, #596] ; 2d068 <__kernel_rem_pio2+0x2a8> + 2ce16: 98a7 ldr r0, [sp, #668] ; 0x29c + 2ce18: 4419 add r1, r3 + 2ce1a: aa1c add r2, sp, #112 ; 0x70 + 2ce1c: e00a b.n 2ce34 <__kernel_rem_pio2+0x74> + 2ce1e: f850 4023 ldr.w r4, [r0, r3, lsl #2] + 2ce22: ee07 4a90 vmov s15, r4 + 2ce26: 3301 adds r3, #1 + 2ce28: eeb8 7be7 vcvt.f64.s32 d7, s15 + 2ce2c: 428b cmp r3, r1 + 2ce2e: eca2 7b02 vstmia r2!, {d7} + 2ce32: d008 beq.n 2ce46 <__kernel_rem_pio2+0x86> + 2ce34: 2b00 cmp r3, #0 + 2ce36: daf2 bge.n 2ce1e <__kernel_rem_pio2+0x5e> + 2ce38: eeb0 7b46 vmov.f64 d7, d6 + 2ce3c: 3301 adds r3, #1 + 2ce3e: 428b cmp r3, r1 + 2ce40: eca2 7b02 vstmia r2!, {d7} + 2ce44: d1f6 bne.n 2ce34 <__kernel_rem_pio2+0x74> + 2ce46: 2d00 cmp r5, #0 + 2ce48: f2c0 82c9 blt.w 2d3de <__kernel_rem_pio2+0x61e> + 2ce4c: 9b04 ldr r3, [sp, #16] + 2ce4e: aa1c add r2, sp, #112 ; 0x70 + 2ce50: eb02 04c3 add.w r4, r2, r3, lsl #3 + 2ce54: ae6c add r6, sp, #432 ; 0x1b0 + 2ce56: ea4f 0cc3 mov.w ip, r3, lsl #3 + 2ce5a: 4640 mov r0, r8 + 2ce5c: 18ef adds r7, r5, r3 + 2ce5e: eb0a 01c3 add.w r1, sl, r3, lsl #3 + 2ce62: f1b8 0f00 cmp.w r8, #0 + 2ce66: ed9f 7b80 vldr d7, [pc, #512] ; 2d068 <__kernel_rem_pio2+0x2a8> + 2ce6a: db09 blt.n 2ce80 <__kernel_rem_pio2+0xc0> + 2ce6c: 4622 mov r2, r4 + 2ce6e: 4653 mov r3, sl + 2ce70: ecb3 5b02 vldmia r3!, {d5} + 2ce74: ed32 6b02 vldmdb r2!, {d6} + 2ce78: 428b cmp r3, r1 + 2ce7a: eea5 7b06 vfma.f64 d7, d5, d6 + 2ce7e: d1f7 bne.n 2ce70 <__kernel_rem_pio2+0xb0> + 2ce80: 3001 adds r0, #1 + 2ce82: 42b8 cmp r0, r7 + 2ce84: eca6 7b02 vstmia r6!, {d7} + 2ce88: f104 0408 add.w r4, r4, #8 + 2ce8c: d1e9 bne.n 2ce62 <__kernel_rem_pio2+0xa2> + 2ce8e: af08 add r7, sp, #32 + 2ce90: eb07 0385 add.w r3, r7, r5, lsl #2 + 2ce94: ed9f 9b76 vldr d9, [pc, #472] ; 2d070 <__kernel_rem_pio2+0x2b0> + 2ce98: ed9f 8b77 vldr d8, [pc, #476] ; 2d078 <__kernel_rem_pio2+0x2b8> + 2ce9c: 3b04 subs r3, #4 + 2ce9e: f8dd b018 ldr.w fp, [sp, #24] + 2cea2: 9305 str r3, [sp, #20] + 2cea4: eb0a 040c add.w r4, sl, ip + 2cea8: eb07 0985 add.w r9, r7, r5, lsl #2 + 2ceac: ae6c add r6, sp, #432 ; 0x1b0 + 2ceae: 4629 mov r1, r5 + 2ceb0: 9501 str r5, [sp, #4] + 2ceb2: ab94 add r3, sp, #592 ; 0x250 + 2ceb4: eb03 03c1 add.w r3, r3, r1, lsl #3 + 2ceb8: 2900 cmp r1, #0 + 2ceba: ed13 0b28 vldr d0, [r3, #-160] ; 0xffffff60 + 2cebe: dd16 ble.n 2ceee <__kernel_rem_pio2+0x12e> + 2cec0: eb06 03c1 add.w r3, r6, r1, lsl #3 + 2cec4: 463a mov r2, r7 + 2cec6: ee20 7b09 vmul.f64 d7, d0, d9 + 2ceca: ed33 5b02 vldmdb r3!, {d5} + 2cece: eeb0 6b40 vmov.f64 d6, d0 + 2ced2: eebd 7bc7 vcvt.s32.f64 s14, d7 + 2ced6: 42b3 cmp r3, r6 + 2ced8: eeb8 7bc7 vcvt.f64.s32 d7, s14 + 2cedc: eea7 6b48 vfms.f64 d6, d7, d8 + 2cee0: eebd 6bc6 vcvt.s32.f64 s12, d6 + 2cee4: ee37 0b05 vadd.f64 d0, d7, d5 + 2cee8: eca2 6a01 vstmia r2!, {s12} + 2ceec: d1eb bne.n 2cec6 <__kernel_rem_pio2+0x106> + 2ceee: 4658 mov r0, fp + 2cef0: 9102 str r1, [sp, #8] + 2cef2: f000 fba9 bl 2d648 + 2cef6: eeb0 ab40 vmov.f64 d10, d0 + 2cefa: eeb4 0b00 vmov.f64 d0, #64 ; 0x3e000000 0.125 + 2cefe: ee2a 0b00 vmul.f64 d0, d10, d0 + 2cf02: f000 fc29 bl 2d758 + 2cf06: eeb2 7b00 vmov.f64 d7, #32 ; 0x41000000 8.0 + 2cf0a: eea0 ab47 vfms.f64 d10, d0, d7 + 2cf0e: eebd bbca vcvt.s32.f64 s22, d10 + 2cf12: f1bb 0f00 cmp.w fp, #0 + 2cf16: eeb8 7bcb vcvt.f64.s32 d7, s22 + 2cf1a: 9902 ldr r1, [sp, #8] + 2cf1c: ee3a ab47 vsub.f64 d10, d10, d7 + 2cf20: dd74 ble.n 2d00c <__kernel_rem_pio2+0x24c> + 2cf22: f101 3eff add.w lr, r1, #4294967295 ; 0xffffffff + 2cf26: f1cb 0318 rsb r3, fp, #24 + 2cf2a: f857 202e ldr.w r2, [r7, lr, lsl #2] + 2cf2e: fa42 fc03 asr.w ip, r2, r3 + 2cf32: fa0c f303 lsl.w r3, ip, r3 + 2cf36: 1ad2 subs r2, r2, r3 + 2cf38: f1cb 0017 rsb r0, fp, #23 + 2cf3c: ee1b 3a10 vmov r3, s22 + 2cf40: fa42 f500 asr.w r5, r2, r0 + 2cf44: 4463 add r3, ip + 2cf46: 2d00 cmp r5, #0 + 2cf48: f847 202e str.w r2, [r7, lr, lsl #2] + 2cf4c: ee0b 3a10 vmov s22, r3 + 2cf50: dc64 bgt.n 2d01c <__kernel_rem_pio2+0x25c> + 2cf52: eeb5 ab40 vcmp.f64 d10, #0.0 + 2cf56: eef1 fa10 vmrs APSR_nzcv, fpscr + 2cf5a: f040 80c4 bne.w 2d0e6 <__kernel_rem_pio2+0x326> + 2cf5e: 9b01 ldr r3, [sp, #4] + 2cf60: f101 3eff add.w lr, r1, #4294967295 ; 0xffffffff + 2cf64: 4573 cmp r3, lr + 2cf66: dc0d bgt.n 2cf84 <__kernel_rem_pio2+0x1c4> + 2cf68: ea4f 0c81 mov.w ip, r1, lsl #2 + 2cf6c: eb07 0381 add.w r3, r7, r1, lsl #2 + 2cf70: 2000 movs r0, #0 + 2cf72: f853 2d04 ldr.w r2, [r3, #-4]! + 2cf76: 454b cmp r3, r9 + 2cf78: ea40 0002 orr.w r0, r0, r2 + 2cf7c: d1f9 bne.n 2cf72 <__kernel_rem_pio2+0x1b2> + 2cf7e: 2800 cmp r0, #0 + 2cf80: f040 80f2 bne.w 2d168 <__kernel_rem_pio2+0x3a8> + 2cf84: 9b01 ldr r3, [sp, #4] + 2cf86: 3b01 subs r3, #1 + 2cf88: f857 3023 ldr.w r3, [r7, r3, lsl #2] + 2cf8c: 2b00 cmp r3, #0 + 2cf8e: f040 80e6 bne.w 2d15e <__kernel_rem_pio2+0x39e> + 2cf92: 9b05 ldr r3, [sp, #20] + 2cf94: 2501 movs r5, #1 + 2cf96: f853 2d04 ldr.w r2, [r3, #-4]! + 2cf9a: 3501 adds r5, #1 + 2cf9c: 2a00 cmp r2, #0 + 2cf9e: d0fa beq.n 2cf96 <__kernel_rem_pio2+0x1d6> + 2cfa0: f101 0e01 add.w lr, r1, #1 + 2cfa4: 440d add r5, r1 + 2cfa6: 4670 mov r0, lr + 2cfa8: 9b04 ldr r3, [sp, #16] + 2cfaa: 4419 add r1, r3 + 2cfac: 9b03 ldr r3, [sp, #12] + 2cfae: eb03 0c0e add.w ip, r3, lr + 2cfb2: f10c 4c80 add.w ip, ip, #1073741824 ; 0x40000000 + 2cfb6: 9ba7 ldr r3, [sp, #668] ; 0x29c + 2cfb8: f10c 3cff add.w ip, ip, #4294967295 ; 0xffffffff + 2cfbc: eb03 0c8c add.w ip, r3, ip, lsl #2 + 2cfc0: ab1c add r3, sp, #112 ; 0x70 + 2cfc2: eb06 0ece add.w lr, r6, lr, lsl #3 + 2cfc6: eb03 01c1 add.w r1, r3, r1, lsl #3 + 2cfca: ed9c 7a01 vldr s14, [ip, #4] + 2cfce: eeb8 7bc7 vcvt.f64.s32 d7, s14 + 2cfd2: f1b8 0f00 cmp.w r8, #0 + 2cfd6: ed81 7b00 vstr d7, [r1] + 2cfda: f10c 0c04 add.w ip, ip, #4 + 2cfde: 460a mov r2, r1 + 2cfe0: ed9f 6b21 vldr d6, [pc, #132] ; 2d068 <__kernel_rem_pio2+0x2a8> + 2cfe4: f101 0108 add.w r1, r1, #8 + 2cfe8: db09 blt.n 2cffe <__kernel_rem_pio2+0x23e> + 2cfea: 4653 mov r3, sl + 2cfec: e001 b.n 2cff2 <__kernel_rem_pio2+0x232> + 2cfee: ed32 7b02 vldmdb r2!, {d7} + 2cff2: ecb3 5b02 vldmia r3!, {d5} + 2cff6: 42a3 cmp r3, r4 + 2cff8: eea5 6b07 vfma.f64 d6, d5, d7 + 2cffc: d1f7 bne.n 2cfee <__kernel_rem_pio2+0x22e> + 2cffe: 3001 adds r0, #1 + 2d000: 42a8 cmp r0, r5 + 2d002: ecae 6b02 vstmia lr!, {d6} + 2d006: dde0 ble.n 2cfca <__kernel_rem_pio2+0x20a> + 2d008: 4629 mov r1, r5 + 2d00a: e752 b.n 2ceb2 <__kernel_rem_pio2+0xf2> + 2d00c: f040 809d bne.w 2d14a <__kernel_rem_pio2+0x38a> + 2d010: 1e4b subs r3, r1, #1 + 2d012: f857 5023 ldr.w r5, [r7, r3, lsl #2] + 2d016: 15ed asrs r5, r5, #23 + 2d018: 2d00 cmp r5, #0 + 2d01a: dd9a ble.n 2cf52 <__kernel_rem_pio2+0x192> + 2d01c: ee1b 3a10 vmov r3, s22 + 2d020: 2900 cmp r1, #0 + 2d022: f103 0301 add.w r3, r3, #1 + 2d026: ee0b 3a10 vmov s22, r3 + 2d02a: f340 818c ble.w 2d346 <__kernel_rem_pio2+0x586> + 2d02e: 683a ldr r2, [r7, #0] + 2d030: 2a00 cmp r2, #0 + 2d032: f040 8082 bne.w 2d13a <__kernel_rem_pio2+0x37a> + 2d036: 2901 cmp r1, #1 + 2d038: d02d beq.n 2d096 <__kernel_rem_pio2+0x2d6> + 2d03a: 463b mov r3, r7 + 2d03c: 2001 movs r0, #1 + 2d03e: f853 2f04 ldr.w r2, [r3, #4]! + 2d042: 2a00 cmp r2, #0 + 2d044: d07c beq.n 2d140 <__kernel_rem_pio2+0x380> + 2d046: 1c43 adds r3, r0, #1 + 2d048: f1c2 7280 rsb r2, r2, #16777216 ; 0x1000000 + 2d04c: 4299 cmp r1, r3 + 2d04e: f847 2020 str.w r2, [r7, r0, lsl #2] + 2d052: dd1f ble.n 2d094 <__kernel_rem_pio2+0x2d4> + 2d054: f857 2023 ldr.w r2, [r7, r3, lsl #2] + 2d058: eb07 0c81 add.w ip, r7, r1, lsl #2 + 2d05c: eb07 0383 add.w r3, r7, r3, lsl #2 + 2d060: f06f 407f mvn.w r0, #4278190080 ; 0xff000000 + 2d064: e011 b.n 2d08a <__kernel_rem_pio2+0x2ca> + 2d066: bf00 nop ... - 2cf8c: 3e700000 .word 0x3e700000 - 2cf90: 00000000 .word 0x00000000 - 2cf94: 41700000 .word 0x41700000 - 2cf98: 20004734 .word 0x20004734 - 2cf9c: 2aaaaaab .word 0x2aaaaaab - 2cfa0: 681a ldr r2, [r3, #0] - 2cfa2: 1a82 subs r2, r0, r2 - 2cfa4: f843 2b04 str.w r2, [r3], #4 - 2cfa8: 4563 cmp r3, ip - 2cfaa: d1f9 bne.n 2cfa0 <__kernel_rem_pio2+0x2c8> - 2cfac: 2201 movs r2, #1 - 2cfae: f1bb 0f00 cmp.w fp, #0 - 2cfb2: dd0d ble.n 2cfd0 <__kernel_rem_pio2+0x2f8> - 2cfb4: f1bb 0f01 cmp.w fp, #1 - 2cfb8: f000 8133 beq.w 2d222 <__kernel_rem_pio2+0x54a> - 2cfbc: f1bb 0f02 cmp.w fp, #2 - 2cfc0: d106 bne.n 2cfd0 <__kernel_rem_pio2+0x2f8> - 2cfc2: 1e48 subs r0, r1, #1 - 2cfc4: f857 3020 ldr.w r3, [r7, r0, lsl #2] - 2cfc8: f3c3 0315 ubfx r3, r3, #0, #22 - 2cfcc: f847 3020 str.w r3, [r7, r0, lsl #2] - 2cfd0: 2d02 cmp r5, #2 - 2cfd2: f47f af4a bne.w 2ce6a <__kernel_rem_pio2+0x192> - 2cfd6: eeb7 0b00 vmov.f64 d0, #112 ; 0x3f800000 1.0 - 2cfda: ee30 ab4a vsub.f64 d10, d0, d10 - 2cfde: 2a00 cmp r2, #0 - 2cfe0: f43f af43 beq.w 2ce6a <__kernel_rem_pio2+0x192> - 2cfe4: 4658 mov r0, fp - 2cfe6: 9102 str r1, [sp, #8] - 2cfe8: f000 faba bl 2d560 - 2cfec: ee3a ab40 vsub.f64 d10, d10, d0 - 2cff0: eeb5 ab40 vcmp.f64 d10, #0.0 - 2cff4: eef1 fa10 vmrs APSR_nzcv, fpscr - 2cff8: 9902 ldr r1, [sp, #8] - 2cffa: f43f af3c beq.w 2ce76 <__kernel_rem_pio2+0x19e> - 2cffe: 9c06 ldr r4, [sp, #24] - 2d000: eeb0 0b4a vmov.f64 d0, d10 - 2d004: 4260 negs r0, r4 - 2d006: 46a8 mov r8, r5 - 2d008: 468b mov fp, r1 - 2d00a: 9d01 ldr r5, [sp, #4] - 2d00c: f000 faa8 bl 2d560 - 2d010: ed9f 6bc1 vldr d6, [pc, #772] ; 2d318 <__kernel_rem_pio2+0x640> - 2d014: eeb4 0bc6 vcmpe.f64 d0, d6 - 2d018: eef1 fa10 vmrs APSR_nzcv, fpscr - 2d01c: f2c0 8147 blt.w 2d2ae <__kernel_rem_pio2+0x5d6> - 2d020: ed9f 7bbf vldr d7, [pc, #764] ; 2d320 <__kernel_rem_pio2+0x648> - 2d024: ee20 7b07 vmul.f64 d7, d0, d7 - 2d028: eebd 7bc7 vcvt.s32.f64 s14, d7 - 2d02c: f10b 0201 add.w r2, fp, #1 - 2d030: eeb8 5bc7 vcvt.f64.s32 d5, s14 - 2d034: eea5 0b46 vfms.f64 d0, d5, d6 - 2d038: eebd 0bc0 vcvt.s32.f64 s0, d0 - 2d03c: 3418 adds r4, #24 - 2d03e: ee10 3a10 vmov r3, s0 - 2d042: f847 302b str.w r3, [r7, fp, lsl #2] - 2d046: ee17 3a10 vmov r3, s14 - 2d04a: 9406 str r4, [sp, #24] - 2d04c: f847 3022 str.w r3, [r7, r2, lsl #2] - 2d050: e02a b.n 2d0a8 <__kernel_rem_pio2+0x3d0> - 2d052: 2301 movs r3, #1 - 2d054: 2000 movs r0, #0 - 2d056: e783 b.n 2cf60 <__kernel_rem_pio2+0x288> - 2d058: 3001 adds r0, #1 - 2d05a: 4288 cmp r0, r1 - 2d05c: f47f af7b bne.w 2cf56 <__kernel_rem_pio2+0x27e> - 2d060: e7a5 b.n 2cfae <__kernel_rem_pio2+0x2d6> - 2d062: eeb6 7b00 vmov.f64 d7, #96 ; 0x3f000000 0.5 - 2d066: eeb4 abc7 vcmpe.f64 d10, d7 - 2d06a: eef1 fa10 vmrs APSR_nzcv, fpscr - 2d06e: f280 80e5 bge.w 2d23c <__kernel_rem_pio2+0x564> - 2d072: 2500 movs r5, #0 - 2d074: e6f9 b.n 2ce6a <__kernel_rem_pio2+0x192> - 2d076: f101 0e01 add.w lr, r1, #1 - 2d07a: 4670 mov r0, lr - 2d07c: 4675 mov r5, lr - 2d07e: e71f b.n 2cec0 <__kernel_rem_pio2+0x1e8> - 2d080: 9b06 ldr r3, [sp, #24] - 2d082: f1a3 0118 sub.w r1, r3, #24 - 2d086: f857 302e ldr.w r3, [r7, lr, lsl #2] - 2d08a: 9106 str r1, [sp, #24] - 2d08c: 46a8 mov r8, r5 - 2d08e: 4672 mov r2, lr - 2d090: 9d01 ldr r5, [sp, #4] - 2d092: b94b cbnz r3, 2d0a8 <__kernel_rem_pio2+0x3d0> - 2d094: f1ac 0304 sub.w r3, ip, #4 - 2d098: 443b add r3, r7 - 2d09a: f853 0d04 ldr.w r0, [r3, #-4]! - 2d09e: 3a01 subs r2, #1 - 2d0a0: 3918 subs r1, #24 - 2d0a2: 2800 cmp r0, #0 - 2d0a4: d0f9 beq.n 2d09a <__kernel_rem_pio2+0x3c2> - 2d0a6: 9106 str r1, [sp, #24] - 2d0a8: 9806 ldr r0, [sp, #24] - 2d0aa: eeb7 0b00 vmov.f64 d0, #112 ; 0x3f800000 1.0 - 2d0ae: 9201 str r2, [sp, #4] - 2d0b0: f000 fa56 bl 2d560 - 2d0b4: 9a01 ldr r2, [sp, #4] - 2d0b6: 2a00 cmp r2, #0 - 2d0b8: f2c0 8121 blt.w 2d2fe <__kernel_rem_pio2+0x626> - 2d0bc: ed9f 6b98 vldr d6, [pc, #608] ; 2d320 <__kernel_rem_pio2+0x648> - 2d0c0: f102 0c01 add.w ip, r2, #1 - 2d0c4: a96c add r1, sp, #432 ; 0x1b0 - 2d0c6: eb07 038c add.w r3, r7, ip, lsl #2 - 2d0ca: ea4f 0ecc mov.w lr, ip, lsl #3 - 2d0ce: eb01 01cc add.w r1, r1, ip, lsl #3 - 2d0d2: ed33 7a01 vldmdb r3!, {s14} - 2d0d6: 42bb cmp r3, r7 - 2d0d8: eeb8 7bc7 vcvt.f64.s32 d7, s14 - 2d0dc: ee27 7b00 vmul.f64 d7, d7, d0 - 2d0e0: ee20 0b06 vmul.f64 d0, d0, d6 - 2d0e4: ed21 7b02 vstmdb r1!, {d7} - 2d0e8: d1f3 bne.n 2d0d2 <__kernel_rem_pio2+0x3fa> - 2d0ea: ed9f 4b8f vldr d4, [pc, #572] ; 2d328 <__kernel_rem_pio2+0x650> - 2d0ee: f1ae 0308 sub.w r3, lr, #8 - 2d0f2: a96c add r1, sp, #432 ; 0x1b0 - 2d0f4: 18ce adds r6, r1, r3 - 2d0f6: 2400 movs r4, #0 - 2d0f8: af44 add r7, sp, #272 ; 0x110 - 2d0fa: 2d00 cmp r5, #0 - 2d0fc: ed9f 7b8c vldr d7, [pc, #560] ; 2d330 <__kernel_rem_pio2+0x658> - 2d100: db10 blt.n 2d124 <__kernel_rem_pio2+0x44c> - 2d102: eeb0 6b44 vmov.f64 d6, d4 - 2d106: 488c ldr r0, [pc, #560] ; (2d338 <__kernel_rem_pio2+0x660>) - 2d108: 4631 mov r1, r6 - 2d10a: 2300 movs r3, #0 - 2d10c: e003 b.n 2d116 <__kernel_rem_pio2+0x43e> - 2d10e: 429c cmp r4, r3 - 2d110: db08 blt.n 2d124 <__kernel_rem_pio2+0x44c> - 2d112: ecb0 6b02 vldmia r0!, {d6} - 2d116: ecb1 5b02 vldmia r1!, {d5} - 2d11a: 3301 adds r3, #1 - 2d11c: 429d cmp r5, r3 - 2d11e: eea5 7b06 vfma.f64 d7, d5, d6 - 2d122: daf4 bge.n 2d10e <__kernel_rem_pio2+0x436> - 2d124: eb07 03c4 add.w r3, r7, r4, lsl #3 - 2d128: 4294 cmp r4, r2 - 2d12a: ed83 7b00 vstr d7, [r3] - 2d12e: ea4f 01c4 mov.w r1, r4, lsl #3 - 2d132: f104 0301 add.w r3, r4, #1 - 2d136: f1a6 0608 sub.w r6, r6, #8 - 2d13a: d001 beq.n 2d140 <__kernel_rem_pio2+0x468> - 2d13c: 461c mov r4, r3 - 2d13e: e7dc b.n 2d0fa <__kernel_rem_pio2+0x422> - 2d140: 9ba6 ldr r3, [sp, #664] ; 0x298 - 2d142: 2b02 cmp r3, #2 - 2d144: dc1d bgt.n 2d182 <__kernel_rem_pio2+0x4aa> - 2d146: 2b00 cmp r3, #0 - 2d148: f300 808b bgt.w 2d262 <__kernel_rem_pio2+0x58a> - 2d14c: d10f bne.n 2d16e <__kernel_rem_pio2+0x496> - 2d14e: ed9f 7b78 vldr d7, [pc, #480] ; 2d330 <__kernel_rem_pio2+0x658> - 2d152: 44be add lr, r7 - 2d154: ed3e 6b02 vldmdb lr!, {d6} - 2d158: 4577 cmp r7, lr - 2d15a: ee37 7b06 vadd.f64 d7, d7, d6 - 2d15e: d1f9 bne.n 2d154 <__kernel_rem_pio2+0x47c> - 2d160: 4643 mov r3, r8 - 2d162: b10b cbz r3, 2d168 <__kernel_rem_pio2+0x490> - 2d164: eeb1 7b47 vneg.f64 d7, d7 - 2d168: 9b07 ldr r3, [sp, #28] - 2d16a: ed83 7b00 vstr d7, [r3] - 2d16e: ee1b 3a10 vmov r3, s22 - 2d172: f003 0007 and.w r0, r3, #7 - 2d176: f50d 7d15 add.w sp, sp, #596 ; 0x254 - 2d17a: ecbd 8b08 vpop {d8-d11} - 2d17e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 2d182: 9ba6 ldr r3, [sp, #664] ; 0x298 - 2d184: 2b03 cmp r3, #3 - 2d186: d1f2 bne.n 2d16e <__kernel_rem_pio2+0x496> - 2d188: 2a00 cmp r2, #0 - 2d18a: f000 80e3 beq.w 2d354 <__kernel_rem_pio2+0x67c> - 2d18e: f102 5300 add.w r3, r2, #536870912 ; 0x20000000 - 2d192: eb07 00c2 add.w r0, r7, r2, lsl #3 - 2d196: ed30 6b02 vldmdb r0!, {d6} - 2d19a: eeb0 5b47 vmov.f64 d5, d7 - 2d19e: 4287 cmp r7, r0 - 2d1a0: ee37 7b06 vadd.f64 d7, d7, d6 - 2d1a4: ee36 6b47 vsub.f64 d6, d6, d7 - 2d1a8: ed80 7b00 vstr d7, [r0] - 2d1ac: ee36 6b05 vadd.f64 d6, d6, d5 - 2d1b0: ed80 6b02 vstr d6, [r0, #8] - 2d1b4: d1ef bne.n 2d196 <__kernel_rem_pio2+0x4be> - 2d1b6: 2a01 cmp r2, #1 - 2d1b8: f340 80cc ble.w 2d354 <__kernel_rem_pio2+0x67c> - 2d1bc: 4439 add r1, r7 - 2d1be: ed91 6b00 vldr d6, [r1] - 2d1c2: 00da lsls r2, r3, #3 - 2d1c4: a946 add r1, sp, #280 ; 0x118 - 2d1c6: eb07 03c3 add.w r3, r7, r3, lsl #3 - 2d1ca: ed33 7b02 vldmdb r3!, {d7} - 2d1ce: eeb0 5b46 vmov.f64 d5, d6 - 2d1d2: 4299 cmp r1, r3 - 2d1d4: ee36 6b07 vadd.f64 d6, d6, d7 - 2d1d8: ee37 7b46 vsub.f64 d7, d7, d6 - 2d1dc: ed83 6b00 vstr d6, [r3] - 2d1e0: ee37 7b05 vadd.f64 d7, d7, d5 - 2d1e4: ed83 7b02 vstr d7, [r3, #8] - 2d1e8: d1ef bne.n 2d1ca <__kernel_rem_pio2+0x4f2> - 2d1ea: ed9f 7b51 vldr d7, [pc, #324] ; 2d330 <__kernel_rem_pio2+0x658> - 2d1ee: f102 0308 add.w r3, r2, #8 - 2d1f2: 443b add r3, r7 - 2d1f4: f107 0210 add.w r2, r7, #16 - 2d1f8: ed33 6b02 vldmdb r3!, {d6} - 2d1fc: 429a cmp r2, r3 - 2d1fe: ee37 7b06 vadd.f64 d7, d7, d6 - 2d202: d1f9 bne.n 2d1f8 <__kernel_rem_pio2+0x520> - 2d204: 4643 mov r3, r8 - 2d206: 2b00 cmp r3, #0 - 2d208: d159 bne.n 2d2be <__kernel_rem_pio2+0x5e6> - 2d20a: e9d7 0100 ldrd r0, r1, [r7] - 2d20e: e9d7 2302 ldrd r2, r3, [r7, #8] - 2d212: 9c07 ldr r4, [sp, #28] - 2d214: ed84 7b04 vstr d7, [r4, #16] - 2d218: e9c4 0100 strd r0, r1, [r4] - 2d21c: e9c4 2302 strd r2, r3, [r4, #8] - 2d220: e7a5 b.n 2d16e <__kernel_rem_pio2+0x496> - 2d222: 1e48 subs r0, r1, #1 - 2d224: f857 3020 ldr.w r3, [r7, r0, lsl #2] - 2d228: f3c3 0316 ubfx r3, r3, #0, #23 - 2d22c: f847 3020 str.w r3, [r7, r0, lsl #2] - 2d230: e6ce b.n 2cfd0 <__kernel_rem_pio2+0x2f8> - 2d232: 2100 movs r1, #0 - 2d234: f06f 0317 mvn.w r3, #23 - 2d238: 9103 str r1, [sp, #12] - 2d23a: e56d b.n 2cd18 <__kernel_rem_pio2+0x40> - 2d23c: ee1b 3a10 vmov r3, s22 - 2d240: 2900 cmp r1, #0 - 2d242: f103 0301 add.w r3, r3, #1 - 2d246: ee0b 3a10 vmov s22, r3 - 2d24a: bfc8 it gt - 2d24c: 2502 movgt r5, #2 - 2d24e: f73f ae7a bgt.w 2cf46 <__kernel_rem_pio2+0x26e> - 2d252: eeb7 7b00 vmov.f64 d7, #112 ; 0x3f800000 1.0 - 2d256: ee37 ab4a vsub.f64 d10, d7, d10 - 2d25a: 2502 movs r5, #2 - 2d25c: e605 b.n 2ce6a <__kernel_rem_pio2+0x192> - 2d25e: 2200 movs r2, #0 - 2d260: e6a5 b.n 2cfae <__kernel_rem_pio2+0x2d6> - 2d262: ed9f 7b33 vldr d7, [pc, #204] ; 2d330 <__kernel_rem_pio2+0x658> - 2d266: eb07 0ccc add.w ip, r7, ip, lsl #3 - 2d26a: ed3c 6b02 vldmdb ip!, {d6} - 2d26e: 4567 cmp r7, ip - 2d270: ee37 7b06 vadd.f64 d7, d7, d6 - 2d274: d1f9 bne.n 2d26a <__kernel_rem_pio2+0x592> - 2d276: 4643 mov r3, r8 - 2d278: ed97 6b00 vldr d6, [r7] - 2d27c: bb8b cbnz r3, 2d2e2 <__kernel_rem_pio2+0x60a> - 2d27e: 9b07 ldr r3, [sp, #28] - 2d280: 2a00 cmp r2, #0 - 2d282: ed83 7b00 vstr d7, [r3] - 2d286: ee36 7b47 vsub.f64 d7, d6, d7 - 2d28a: dd0c ble.n 2d2a6 <__kernel_rem_pio2+0x5ce> - 2d28c: a946 add r1, sp, #280 ; 0x118 - 2d28e: 2301 movs r3, #1 - 2d290: ecb1 6b02 vldmia r1!, {d6} - 2d294: 3301 adds r3, #1 - 2d296: 429a cmp r2, r3 - 2d298: ee37 7b06 vadd.f64 d7, d7, d6 - 2d29c: daf8 bge.n 2d290 <__kernel_rem_pio2+0x5b8> - 2d29e: 4643 mov r3, r8 - 2d2a0: b10b cbz r3, 2d2a6 <__kernel_rem_pio2+0x5ce> - 2d2a2: eeb1 7b47 vneg.f64 d7, d7 - 2d2a6: 9b07 ldr r3, [sp, #28] - 2d2a8: ed83 7b02 vstr d7, [r3, #8] - 2d2ac: e75f b.n 2d16e <__kernel_rem_pio2+0x496> - 2d2ae: eebd 0bc0 vcvt.s32.f64 s0, d0 - 2d2b2: 465a mov r2, fp - 2d2b4: ee10 3a10 vmov r3, s0 - 2d2b8: f847 302b str.w r3, [r7, fp, lsl #2] - 2d2bc: e6f4 b.n 2d0a8 <__kernel_rem_pio2+0x3d0> - 2d2be: ed97 5b00 vldr d5, [r7] - 2d2c2: eeb1 7b47 vneg.f64 d7, d7 - 2d2c6: ed97 6b02 vldr d6, [r7, #8] - 2d2ca: eeb1 5b45 vneg.f64 d5, d5 - 2d2ce: 9b07 ldr r3, [sp, #28] - 2d2d0: eeb1 6b46 vneg.f64 d6, d6 - 2d2d4: ed83 5b00 vstr d5, [r3] - 2d2d8: ed83 6b02 vstr d6, [r3, #8] - 2d2dc: ed83 7b04 vstr d7, [r3, #16] - 2d2e0: e745 b.n 2d16e <__kernel_rem_pio2+0x496> - 2d2e2: 9b07 ldr r3, [sp, #28] - 2d2e4: eeb1 5b47 vneg.f64 d5, d7 - 2d2e8: 2a00 cmp r2, #0 - 2d2ea: ed83 5b00 vstr d5, [r3] - 2d2ee: ee36 7b47 vsub.f64 d7, d6, d7 - 2d2f2: dccb bgt.n 2d28c <__kernel_rem_pio2+0x5b4> - 2d2f4: e7d5 b.n 2d2a2 <__kernel_rem_pio2+0x5ca> - 2d2f6: 9b04 ldr r3, [sp, #16] - 2d2f8: ea4f 0cc3 mov.w ip, r3, lsl #3 - 2d2fc: e553 b.n 2cda6 <__kernel_rem_pio2+0xce> - 2d2fe: 9ba6 ldr r3, [sp, #664] ; 0x298 - 2d300: 2b02 cmp r3, #2 - 2d302: dc1b bgt.n 2d33c <__kernel_rem_pio2+0x664> - 2d304: 2b00 cmp r3, #0 - 2d306: dc21 bgt.n 2d34c <__kernel_rem_pio2+0x674> - 2d308: f47f af31 bne.w 2d16e <__kernel_rem_pio2+0x496> - 2d30c: ed9f 7b08 vldr d7, [pc, #32] ; 2d330 <__kernel_rem_pio2+0x658> - 2d310: e726 b.n 2d160 <__kernel_rem_pio2+0x488> - 2d312: bf00 nop - 2d314: f3af 8000 nop.w - 2d318: 00000000 .word 0x00000000 - 2d31c: 41700000 .word 0x41700000 - 2d320: 00000000 .word 0x00000000 - 2d324: 3e700000 .word 0x3e700000 - 2d328: 40000000 .word 0x40000000 - 2d32c: 3ff921fb .word 0x3ff921fb + 2d074: 3e700000 .word 0x3e700000 + 2d078: 00000000 .word 0x00000000 + 2d07c: 41700000 .word 0x41700000 + 2d080: 200047f4 .word 0x200047f4 + 2d084: 2aaaaaab .word 0x2aaaaaab + 2d088: 681a ldr r2, [r3, #0] + 2d08a: 1a82 subs r2, r0, r2 + 2d08c: f843 2b04 str.w r2, [r3], #4 + 2d090: 4563 cmp r3, ip + 2d092: d1f9 bne.n 2d088 <__kernel_rem_pio2+0x2c8> + 2d094: 2201 movs r2, #1 + 2d096: f1bb 0f00 cmp.w fp, #0 + 2d09a: dd0d ble.n 2d0b8 <__kernel_rem_pio2+0x2f8> + 2d09c: f1bb 0f01 cmp.w fp, #1 + 2d0a0: f000 8133 beq.w 2d30a <__kernel_rem_pio2+0x54a> + 2d0a4: f1bb 0f02 cmp.w fp, #2 + 2d0a8: d106 bne.n 2d0b8 <__kernel_rem_pio2+0x2f8> + 2d0aa: 1e48 subs r0, r1, #1 + 2d0ac: f857 3020 ldr.w r3, [r7, r0, lsl #2] + 2d0b0: f3c3 0315 ubfx r3, r3, #0, #22 + 2d0b4: f847 3020 str.w r3, [r7, r0, lsl #2] + 2d0b8: 2d02 cmp r5, #2 + 2d0ba: f47f af4a bne.w 2cf52 <__kernel_rem_pio2+0x192> + 2d0be: eeb7 0b00 vmov.f64 d0, #112 ; 0x3f800000 1.0 + 2d0c2: ee30 ab4a vsub.f64 d10, d0, d10 + 2d0c6: 2a00 cmp r2, #0 + 2d0c8: f43f af43 beq.w 2cf52 <__kernel_rem_pio2+0x192> + 2d0cc: 4658 mov r0, fp + 2d0ce: 9102 str r1, [sp, #8] + 2d0d0: f000 faba bl 2d648 + 2d0d4: ee3a ab40 vsub.f64 d10, d10, d0 + 2d0d8: eeb5 ab40 vcmp.f64 d10, #0.0 + 2d0dc: eef1 fa10 vmrs APSR_nzcv, fpscr + 2d0e0: 9902 ldr r1, [sp, #8] + 2d0e2: f43f af3c beq.w 2cf5e <__kernel_rem_pio2+0x19e> + 2d0e6: 9c06 ldr r4, [sp, #24] + 2d0e8: eeb0 0b4a vmov.f64 d0, d10 + 2d0ec: 4260 negs r0, r4 + 2d0ee: 46a8 mov r8, r5 + 2d0f0: 468b mov fp, r1 + 2d0f2: 9d01 ldr r5, [sp, #4] + 2d0f4: f000 faa8 bl 2d648 + 2d0f8: ed9f 6bc1 vldr d6, [pc, #772] ; 2d400 <__kernel_rem_pio2+0x640> + 2d0fc: eeb4 0bc6 vcmpe.f64 d0, d6 + 2d100: eef1 fa10 vmrs APSR_nzcv, fpscr + 2d104: f2c0 8147 blt.w 2d396 <__kernel_rem_pio2+0x5d6> + 2d108: ed9f 7bbf vldr d7, [pc, #764] ; 2d408 <__kernel_rem_pio2+0x648> + 2d10c: ee20 7b07 vmul.f64 d7, d0, d7 + 2d110: eebd 7bc7 vcvt.s32.f64 s14, d7 + 2d114: f10b 0201 add.w r2, fp, #1 + 2d118: eeb8 5bc7 vcvt.f64.s32 d5, s14 + 2d11c: eea5 0b46 vfms.f64 d0, d5, d6 + 2d120: eebd 0bc0 vcvt.s32.f64 s0, d0 + 2d124: 3418 adds r4, #24 + 2d126: ee10 3a10 vmov r3, s0 + 2d12a: f847 302b str.w r3, [r7, fp, lsl #2] + 2d12e: ee17 3a10 vmov r3, s14 + 2d132: 9406 str r4, [sp, #24] + 2d134: f847 3022 str.w r3, [r7, r2, lsl #2] + 2d138: e02a b.n 2d190 <__kernel_rem_pio2+0x3d0> + 2d13a: 2301 movs r3, #1 + 2d13c: 2000 movs r0, #0 + 2d13e: e783 b.n 2d048 <__kernel_rem_pio2+0x288> + 2d140: 3001 adds r0, #1 + 2d142: 4288 cmp r0, r1 + 2d144: f47f af7b bne.w 2d03e <__kernel_rem_pio2+0x27e> + 2d148: e7a5 b.n 2d096 <__kernel_rem_pio2+0x2d6> + 2d14a: eeb6 7b00 vmov.f64 d7, #96 ; 0x3f000000 0.5 + 2d14e: eeb4 abc7 vcmpe.f64 d10, d7 + 2d152: eef1 fa10 vmrs APSR_nzcv, fpscr + 2d156: f280 80e5 bge.w 2d324 <__kernel_rem_pio2+0x564> + 2d15a: 2500 movs r5, #0 + 2d15c: e6f9 b.n 2cf52 <__kernel_rem_pio2+0x192> + 2d15e: f101 0e01 add.w lr, r1, #1 + 2d162: 4670 mov r0, lr + 2d164: 4675 mov r5, lr + 2d166: e71f b.n 2cfa8 <__kernel_rem_pio2+0x1e8> + 2d168: 9b06 ldr r3, [sp, #24] + 2d16a: f1a3 0118 sub.w r1, r3, #24 + 2d16e: f857 302e ldr.w r3, [r7, lr, lsl #2] + 2d172: 9106 str r1, [sp, #24] + 2d174: 46a8 mov r8, r5 + 2d176: 4672 mov r2, lr + 2d178: 9d01 ldr r5, [sp, #4] + 2d17a: b94b cbnz r3, 2d190 <__kernel_rem_pio2+0x3d0> + 2d17c: f1ac 0304 sub.w r3, ip, #4 + 2d180: 443b add r3, r7 + 2d182: f853 0d04 ldr.w r0, [r3, #-4]! + 2d186: 3a01 subs r2, #1 + 2d188: 3918 subs r1, #24 + 2d18a: 2800 cmp r0, #0 + 2d18c: d0f9 beq.n 2d182 <__kernel_rem_pio2+0x3c2> + 2d18e: 9106 str r1, [sp, #24] + 2d190: 9806 ldr r0, [sp, #24] + 2d192: eeb7 0b00 vmov.f64 d0, #112 ; 0x3f800000 1.0 + 2d196: 9201 str r2, [sp, #4] + 2d198: f000 fa56 bl 2d648 + 2d19c: 9a01 ldr r2, [sp, #4] + 2d19e: 2a00 cmp r2, #0 + 2d1a0: f2c0 8121 blt.w 2d3e6 <__kernel_rem_pio2+0x626> + 2d1a4: ed9f 6b98 vldr d6, [pc, #608] ; 2d408 <__kernel_rem_pio2+0x648> + 2d1a8: f102 0c01 add.w ip, r2, #1 + 2d1ac: a96c add r1, sp, #432 ; 0x1b0 + 2d1ae: eb07 038c add.w r3, r7, ip, lsl #2 + 2d1b2: ea4f 0ecc mov.w lr, ip, lsl #3 + 2d1b6: eb01 01cc add.w r1, r1, ip, lsl #3 + 2d1ba: ed33 7a01 vldmdb r3!, {s14} + 2d1be: 42bb cmp r3, r7 + 2d1c0: eeb8 7bc7 vcvt.f64.s32 d7, s14 + 2d1c4: ee27 7b00 vmul.f64 d7, d7, d0 + 2d1c8: ee20 0b06 vmul.f64 d0, d0, d6 + 2d1cc: ed21 7b02 vstmdb r1!, {d7} + 2d1d0: d1f3 bne.n 2d1ba <__kernel_rem_pio2+0x3fa> + 2d1d2: ed9f 4b8f vldr d4, [pc, #572] ; 2d410 <__kernel_rem_pio2+0x650> + 2d1d6: f1ae 0308 sub.w r3, lr, #8 + 2d1da: a96c add r1, sp, #432 ; 0x1b0 + 2d1dc: 18ce adds r6, r1, r3 + 2d1de: 2400 movs r4, #0 + 2d1e0: af44 add r7, sp, #272 ; 0x110 + 2d1e2: 2d00 cmp r5, #0 + 2d1e4: ed9f 7b8c vldr d7, [pc, #560] ; 2d418 <__kernel_rem_pio2+0x658> + 2d1e8: db10 blt.n 2d20c <__kernel_rem_pio2+0x44c> + 2d1ea: eeb0 6b44 vmov.f64 d6, d4 + 2d1ee: 488c ldr r0, [pc, #560] ; (2d420 <__kernel_rem_pio2+0x660>) + 2d1f0: 4631 mov r1, r6 + 2d1f2: 2300 movs r3, #0 + 2d1f4: e003 b.n 2d1fe <__kernel_rem_pio2+0x43e> + 2d1f6: 429c cmp r4, r3 + 2d1f8: db08 blt.n 2d20c <__kernel_rem_pio2+0x44c> + 2d1fa: ecb0 6b02 vldmia r0!, {d6} + 2d1fe: ecb1 5b02 vldmia r1!, {d5} + 2d202: 3301 adds r3, #1 + 2d204: 429d cmp r5, r3 + 2d206: eea5 7b06 vfma.f64 d7, d5, d6 + 2d20a: daf4 bge.n 2d1f6 <__kernel_rem_pio2+0x436> + 2d20c: eb07 03c4 add.w r3, r7, r4, lsl #3 + 2d210: 4294 cmp r4, r2 + 2d212: ed83 7b00 vstr d7, [r3] + 2d216: ea4f 01c4 mov.w r1, r4, lsl #3 + 2d21a: f104 0301 add.w r3, r4, #1 + 2d21e: f1a6 0608 sub.w r6, r6, #8 + 2d222: d001 beq.n 2d228 <__kernel_rem_pio2+0x468> + 2d224: 461c mov r4, r3 + 2d226: e7dc b.n 2d1e2 <__kernel_rem_pio2+0x422> + 2d228: 9ba6 ldr r3, [sp, #664] ; 0x298 + 2d22a: 2b02 cmp r3, #2 + 2d22c: dc1d bgt.n 2d26a <__kernel_rem_pio2+0x4aa> + 2d22e: 2b00 cmp r3, #0 + 2d230: f300 808b bgt.w 2d34a <__kernel_rem_pio2+0x58a> + 2d234: d10f bne.n 2d256 <__kernel_rem_pio2+0x496> + 2d236: ed9f 7b78 vldr d7, [pc, #480] ; 2d418 <__kernel_rem_pio2+0x658> + 2d23a: 44be add lr, r7 + 2d23c: ed3e 6b02 vldmdb lr!, {d6} + 2d240: 4577 cmp r7, lr + 2d242: ee37 7b06 vadd.f64 d7, d7, d6 + 2d246: d1f9 bne.n 2d23c <__kernel_rem_pio2+0x47c> + 2d248: 4643 mov r3, r8 + 2d24a: b10b cbz r3, 2d250 <__kernel_rem_pio2+0x490> + 2d24c: eeb1 7b47 vneg.f64 d7, d7 + 2d250: 9b07 ldr r3, [sp, #28] + 2d252: ed83 7b00 vstr d7, [r3] + 2d256: ee1b 3a10 vmov r3, s22 + 2d25a: f003 0007 and.w r0, r3, #7 + 2d25e: f50d 7d15 add.w sp, sp, #596 ; 0x254 + 2d262: ecbd 8b08 vpop {d8-d11} + 2d266: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2d26a: 9ba6 ldr r3, [sp, #664] ; 0x298 + 2d26c: 2b03 cmp r3, #3 + 2d26e: d1f2 bne.n 2d256 <__kernel_rem_pio2+0x496> + 2d270: 2a00 cmp r2, #0 + 2d272: f000 80e3 beq.w 2d43c <__kernel_rem_pio2+0x67c> + 2d276: f102 5300 add.w r3, r2, #536870912 ; 0x20000000 + 2d27a: eb07 00c2 add.w r0, r7, r2, lsl #3 + 2d27e: ed30 6b02 vldmdb r0!, {d6} + 2d282: eeb0 5b47 vmov.f64 d5, d7 + 2d286: 4287 cmp r7, r0 + 2d288: ee37 7b06 vadd.f64 d7, d7, d6 + 2d28c: ee36 6b47 vsub.f64 d6, d6, d7 + 2d290: ed80 7b00 vstr d7, [r0] + 2d294: ee36 6b05 vadd.f64 d6, d6, d5 + 2d298: ed80 6b02 vstr d6, [r0, #8] + 2d29c: d1ef bne.n 2d27e <__kernel_rem_pio2+0x4be> + 2d29e: 2a01 cmp r2, #1 + 2d2a0: f340 80cc ble.w 2d43c <__kernel_rem_pio2+0x67c> + 2d2a4: 4439 add r1, r7 + 2d2a6: ed91 6b00 vldr d6, [r1] + 2d2aa: 00da lsls r2, r3, #3 + 2d2ac: a946 add r1, sp, #280 ; 0x118 + 2d2ae: eb07 03c3 add.w r3, r7, r3, lsl #3 + 2d2b2: ed33 7b02 vldmdb r3!, {d7} + 2d2b6: eeb0 5b46 vmov.f64 d5, d6 + 2d2ba: 4299 cmp r1, r3 + 2d2bc: ee36 6b07 vadd.f64 d6, d6, d7 + 2d2c0: ee37 7b46 vsub.f64 d7, d7, d6 + 2d2c4: ed83 6b00 vstr d6, [r3] + 2d2c8: ee37 7b05 vadd.f64 d7, d7, d5 + 2d2cc: ed83 7b02 vstr d7, [r3, #8] + 2d2d0: d1ef bne.n 2d2b2 <__kernel_rem_pio2+0x4f2> + 2d2d2: ed9f 7b51 vldr d7, [pc, #324] ; 2d418 <__kernel_rem_pio2+0x658> + 2d2d6: f102 0308 add.w r3, r2, #8 + 2d2da: 443b add r3, r7 + 2d2dc: f107 0210 add.w r2, r7, #16 + 2d2e0: ed33 6b02 vldmdb r3!, {d6} + 2d2e4: 429a cmp r2, r3 + 2d2e6: ee37 7b06 vadd.f64 d7, d7, d6 + 2d2ea: d1f9 bne.n 2d2e0 <__kernel_rem_pio2+0x520> + 2d2ec: 4643 mov r3, r8 + 2d2ee: 2b00 cmp r3, #0 + 2d2f0: d159 bne.n 2d3a6 <__kernel_rem_pio2+0x5e6> + 2d2f2: e9d7 0100 ldrd r0, r1, [r7] + 2d2f6: e9d7 2302 ldrd r2, r3, [r7, #8] + 2d2fa: 9c07 ldr r4, [sp, #28] + 2d2fc: ed84 7b04 vstr d7, [r4, #16] + 2d300: e9c4 0100 strd r0, r1, [r4] + 2d304: e9c4 2302 strd r2, r3, [r4, #8] + 2d308: e7a5 b.n 2d256 <__kernel_rem_pio2+0x496> + 2d30a: 1e48 subs r0, r1, #1 + 2d30c: f857 3020 ldr.w r3, [r7, r0, lsl #2] + 2d310: f3c3 0316 ubfx r3, r3, #0, #23 + 2d314: f847 3020 str.w r3, [r7, r0, lsl #2] + 2d318: e6ce b.n 2d0b8 <__kernel_rem_pio2+0x2f8> + 2d31a: 2100 movs r1, #0 + 2d31c: f06f 0317 mvn.w r3, #23 + 2d320: 9103 str r1, [sp, #12] + 2d322: e56d b.n 2ce00 <__kernel_rem_pio2+0x40> + 2d324: ee1b 3a10 vmov r3, s22 + 2d328: 2900 cmp r1, #0 + 2d32a: f103 0301 add.w r3, r3, #1 + 2d32e: ee0b 3a10 vmov s22, r3 + 2d332: bfc8 it gt + 2d334: 2502 movgt r5, #2 + 2d336: f73f ae7a bgt.w 2d02e <__kernel_rem_pio2+0x26e> + 2d33a: eeb7 7b00 vmov.f64 d7, #112 ; 0x3f800000 1.0 + 2d33e: ee37 ab4a vsub.f64 d10, d7, d10 + 2d342: 2502 movs r5, #2 + 2d344: e605 b.n 2cf52 <__kernel_rem_pio2+0x192> + 2d346: 2200 movs r2, #0 + 2d348: e6a5 b.n 2d096 <__kernel_rem_pio2+0x2d6> + 2d34a: ed9f 7b33 vldr d7, [pc, #204] ; 2d418 <__kernel_rem_pio2+0x658> + 2d34e: eb07 0ccc add.w ip, r7, ip, lsl #3 + 2d352: ed3c 6b02 vldmdb ip!, {d6} + 2d356: 4567 cmp r7, ip + 2d358: ee37 7b06 vadd.f64 d7, d7, d6 + 2d35c: d1f9 bne.n 2d352 <__kernel_rem_pio2+0x592> + 2d35e: 4643 mov r3, r8 + 2d360: ed97 6b00 vldr d6, [r7] + 2d364: bb8b cbnz r3, 2d3ca <__kernel_rem_pio2+0x60a> + 2d366: 9b07 ldr r3, [sp, #28] + 2d368: 2a00 cmp r2, #0 + 2d36a: ed83 7b00 vstr d7, [r3] + 2d36e: ee36 7b47 vsub.f64 d7, d6, d7 + 2d372: dd0c ble.n 2d38e <__kernel_rem_pio2+0x5ce> + 2d374: a946 add r1, sp, #280 ; 0x118 + 2d376: 2301 movs r3, #1 + 2d378: ecb1 6b02 vldmia r1!, {d6} + 2d37c: 3301 adds r3, #1 + 2d37e: 429a cmp r2, r3 + 2d380: ee37 7b06 vadd.f64 d7, d7, d6 + 2d384: daf8 bge.n 2d378 <__kernel_rem_pio2+0x5b8> + 2d386: 4643 mov r3, r8 + 2d388: b10b cbz r3, 2d38e <__kernel_rem_pio2+0x5ce> + 2d38a: eeb1 7b47 vneg.f64 d7, d7 + 2d38e: 9b07 ldr r3, [sp, #28] + 2d390: ed83 7b02 vstr d7, [r3, #8] + 2d394: e75f b.n 2d256 <__kernel_rem_pio2+0x496> + 2d396: eebd 0bc0 vcvt.s32.f64 s0, d0 + 2d39a: 465a mov r2, fp + 2d39c: ee10 3a10 vmov r3, s0 + 2d3a0: f847 302b str.w r3, [r7, fp, lsl #2] + 2d3a4: e6f4 b.n 2d190 <__kernel_rem_pio2+0x3d0> + 2d3a6: ed97 5b00 vldr d5, [r7] + 2d3aa: eeb1 7b47 vneg.f64 d7, d7 + 2d3ae: ed97 6b02 vldr d6, [r7, #8] + 2d3b2: eeb1 5b45 vneg.f64 d5, d5 + 2d3b6: 9b07 ldr r3, [sp, #28] + 2d3b8: eeb1 6b46 vneg.f64 d6, d6 + 2d3bc: ed83 5b00 vstr d5, [r3] + 2d3c0: ed83 6b02 vstr d6, [r3, #8] + 2d3c4: ed83 7b04 vstr d7, [r3, #16] + 2d3c8: e745 b.n 2d256 <__kernel_rem_pio2+0x496> + 2d3ca: 9b07 ldr r3, [sp, #28] + 2d3cc: eeb1 5b47 vneg.f64 d5, d7 + 2d3d0: 2a00 cmp r2, #0 + 2d3d2: ed83 5b00 vstr d5, [r3] + 2d3d6: ee36 7b47 vsub.f64 d7, d6, d7 + 2d3da: dccb bgt.n 2d374 <__kernel_rem_pio2+0x5b4> + 2d3dc: e7d5 b.n 2d38a <__kernel_rem_pio2+0x5ca> + 2d3de: 9b04 ldr r3, [sp, #16] + 2d3e0: ea4f 0cc3 mov.w ip, r3, lsl #3 + 2d3e4: e553 b.n 2ce8e <__kernel_rem_pio2+0xce> + 2d3e6: 9ba6 ldr r3, [sp, #664] ; 0x298 + 2d3e8: 2b02 cmp r3, #2 + 2d3ea: dc1b bgt.n 2d424 <__kernel_rem_pio2+0x664> + 2d3ec: 2b00 cmp r3, #0 + 2d3ee: dc21 bgt.n 2d434 <__kernel_rem_pio2+0x674> + 2d3f0: f47f af31 bne.w 2d256 <__kernel_rem_pio2+0x496> + 2d3f4: ed9f 7b08 vldr d7, [pc, #32] ; 2d418 <__kernel_rem_pio2+0x658> + 2d3f8: e726 b.n 2d248 <__kernel_rem_pio2+0x488> + 2d3fa: bf00 nop + 2d3fc: f3af 8000 nop.w + 2d400: 00000000 .word 0x00000000 + 2d404: 41700000 .word 0x41700000 + 2d408: 00000000 .word 0x00000000 + 2d40c: 3e700000 .word 0x3e700000 + 2d410: 40000000 .word 0x40000000 + 2d414: 3ff921fb .word 0x3ff921fb ... - 2d338: 20000288 .word 0x20000288 - 2d33c: 9ba6 ldr r3, [sp, #664] ; 0x298 - 2d33e: 2b03 cmp r3, #3 - 2d340: f47f af15 bne.w 2d16e <__kernel_rem_pio2+0x496> - 2d344: ed9f 7b06 vldr d7, [pc, #24] ; 2d360 <__kernel_rem_pio2+0x688> - 2d348: af44 add r7, sp, #272 ; 0x110 - 2d34a: e75b b.n 2d204 <__kernel_rem_pio2+0x52c> - 2d34c: ed9f 7b04 vldr d7, [pc, #16] ; 2d360 <__kernel_rem_pio2+0x688> - 2d350: af44 add r7, sp, #272 ; 0x110 - 2d352: e790 b.n 2d276 <__kernel_rem_pio2+0x59e> - 2d354: ed9f 7b02 vldr d7, [pc, #8] ; 2d360 <__kernel_rem_pio2+0x688> - 2d358: e754 b.n 2d204 <__kernel_rem_pio2+0x52c> - 2d35a: bf00 nop - 2d35c: f3af 8000 nop.w + 2d420: 20000288 .word 0x20000288 + 2d424: 9ba6 ldr r3, [sp, #664] ; 0x298 + 2d426: 2b03 cmp r3, #3 + 2d428: f47f af15 bne.w 2d256 <__kernel_rem_pio2+0x496> + 2d42c: ed9f 7b06 vldr d7, [pc, #24] ; 2d448 <__kernel_rem_pio2+0x688> + 2d430: af44 add r7, sp, #272 ; 0x110 + 2d432: e75b b.n 2d2ec <__kernel_rem_pio2+0x52c> + 2d434: ed9f 7b04 vldr d7, [pc, #16] ; 2d448 <__kernel_rem_pio2+0x688> + 2d438: af44 add r7, sp, #272 ; 0x110 + 2d43a: e790 b.n 2d35e <__kernel_rem_pio2+0x59e> + 2d43c: ed9f 7b02 vldr d7, [pc, #8] ; 2d448 <__kernel_rem_pio2+0x688> + 2d440: e754 b.n 2d2ec <__kernel_rem_pio2+0x52c> + 2d442: bf00 nop + 2d444: f3af 8000 nop.w ... -0002d368 <__kernel_cos>: - 2d368: ee10 3a90 vmov r3, s1 - 2d36c: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 - 2d370: f1b3 5f79 cmp.w r3, #1044381696 ; 0x3e400000 - 2d374: ed2d 8b02 vpush {d8} - 2d378: da2e bge.n 2d3d8 <__kernel_cos+0x70> - 2d37a: eefd 7bc0 vcvt.s32.f64 s15, d0 - 2d37e: ee17 3a90 vmov r3, s15 - 2d382: 2b00 cmp r3, #0 - 2d384: d065 beq.n 2d452 <__kernel_cos+0xea> - 2d386: ee20 4b00 vmul.f64 d4, d0, d0 - 2d38a: ed9f 8b35 vldr d8, [pc, #212] ; 2d460 <__kernel_cos+0xf8> - 2d38e: ed9f 2b36 vldr d2, [pc, #216] ; 2d468 <__kernel_cos+0x100> - 2d392: ed9f 3b37 vldr d3, [pc, #220] ; 2d470 <__kernel_cos+0x108> - 2d396: eea4 2b08 vfma.f64 d2, d4, d8 - 2d39a: ed9f 5b37 vldr d5, [pc, #220] ; 2d478 <__kernel_cos+0x110> - 2d39e: eea4 3b02 vfma.f64 d3, d4, d2 - 2d3a2: ed9f 6b37 vldr d6, [pc, #220] ; 2d480 <__kernel_cos+0x118> - 2d3a6: eea4 5b03 vfma.f64 d5, d4, d3 - 2d3aa: ed9f 7b37 vldr d7, [pc, #220] ; 2d488 <__kernel_cos+0x120> - 2d3ae: eea4 6b05 vfma.f64 d6, d4, d5 - 2d3b2: eea4 7b06 vfma.f64 d7, d4, d6 - 2d3b6: ee24 7b07 vmul.f64 d7, d4, d7 - 2d3ba: ee21 1b40 vnmul.f64 d1, d1, d0 - 2d3be: eeb6 6b00 vmov.f64 d6, #96 ; 0x3f000000 0.5 - 2d3c2: eea4 1b07 vfma.f64 d1, d4, d7 - 2d3c6: eeb7 0b00 vmov.f64 d0, #112 ; 0x3f800000 1.0 - 2d3ca: ee94 1b06 vfnms.f64 d1, d4, d6 - 2d3ce: ecbd 8b02 vpop {d8} - 2d3d2: ee30 0b41 vsub.f64 d0, d0, d1 - 2d3d6: 4770 bx lr - 2d3d8: ed9f 8b21 vldr d8, [pc, #132] ; 2d460 <__kernel_cos+0xf8> - 2d3dc: ee20 4b00 vmul.f64 d4, d0, d0 - 2d3e0: ed9f 2b21 vldr d2, [pc, #132] ; 2d468 <__kernel_cos+0x100> - 2d3e4: ed9f 3b22 vldr d3, [pc, #136] ; 2d470 <__kernel_cos+0x108> - 2d3e8: eea4 2b08 vfma.f64 d2, d4, d8 - 2d3ec: ed9f 5b22 vldr d5, [pc, #136] ; 2d478 <__kernel_cos+0x110> - 2d3f0: eea2 3b04 vfma.f64 d3, d2, d4 - 2d3f4: ed9f 6b22 vldr d6, [pc, #136] ; 2d480 <__kernel_cos+0x118> - 2d3f8: eea3 5b04 vfma.f64 d5, d3, d4 - 2d3fc: ed9f 7b22 vldr d7, [pc, #136] ; 2d488 <__kernel_cos+0x120> - 2d400: eea5 6b04 vfma.f64 d6, d5, d4 - 2d404: 4a22 ldr r2, [pc, #136] ; (2d490 <__kernel_cos+0x128>) - 2d406: eea6 7b04 vfma.f64 d7, d6, d4 - 2d40a: 4293 cmp r3, r2 - 2d40c: ee27 7b04 vmul.f64 d7, d7, d4 - 2d410: ddd3 ble.n 2d3ba <__kernel_cos+0x52> - 2d412: 4a20 ldr r2, [pc, #128] ; (2d494 <__kernel_cos+0x12c>) - 2d414: 4293 cmp r3, r2 - 2d416: dc17 bgt.n 2d448 <__kernel_cos+0xe0> - 2d418: eeb7 6b00 vmov.f64 d6, #112 ; 0x3f800000 1.0 - 2d41c: 2000 movs r0, #0 - 2d41e: f5a3 1100 sub.w r1, r3, #2097152 ; 0x200000 - 2d422: ec41 0b15 vmov d5, r0, r1 - 2d426: ee36 6b45 vsub.f64 d6, d6, d5 - 2d42a: ee21 1b40 vnmul.f64 d1, d1, d0 - 2d42e: eeb6 3b00 vmov.f64 d3, #96 ; 0x3f000000 0.5 - 2d432: eea4 1b07 vfma.f64 d1, d4, d7 - 2d436: ee94 5b03 vfnms.f64 d5, d4, d3 - 2d43a: ecbd 8b02 vpop {d8} - 2d43e: ee35 0b41 vsub.f64 d0, d5, d1 - 2d442: ee36 0b40 vsub.f64 d0, d6, d0 - 2d446: 4770 bx lr - 2d448: eeb6 6b07 vmov.f64 d6, #103 ; 0x3f380000 0.7187500 - 2d44c: eeb5 5b02 vmov.f64 d5, #82 ; 0x3e900000 0.2812500 - 2d450: e7eb b.n 2d42a <__kernel_cos+0xc2> - 2d452: eeb7 0b00 vmov.f64 d0, #112 ; 0x3f800000 1.0 - 2d456: ecbd 8b02 vpop {d8} - 2d45a: 4770 bx lr - 2d45c: f3af 8000 nop.w - 2d460: be8838d4 .word 0xbe8838d4 - 2d464: bda8fae9 .word 0xbda8fae9 - 2d468: bdb4b1c4 .word 0xbdb4b1c4 - 2d46c: 3e21ee9e .word 0x3e21ee9e - 2d470: 809c52ad .word 0x809c52ad - 2d474: be927e4f .word 0xbe927e4f - 2d478: 19cb1590 .word 0x19cb1590 - 2d47c: 3efa01a0 .word 0x3efa01a0 - 2d480: 16c15177 .word 0x16c15177 - 2d484: bf56c16c .word 0xbf56c16c - 2d488: 5555554c .word 0x5555554c - 2d48c: 3fa55555 .word 0x3fa55555 - 2d490: 3fd33332 .word 0x3fd33332 - 2d494: 3fe90000 .word 0x3fe90000 - -0002d498 <__kernel_sin>: - 2d498: ee10 3a90 vmov r3, s1 - 2d49c: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 - 2d4a0: f1b3 5f79 cmp.w r3, #1044381696 ; 0x3e400000 - 2d4a4: da04 bge.n 2d4b0 <__kernel_sin+0x18> - 2d4a6: eefd 7bc0 vcvt.s32.f64 s15, d0 - 2d4aa: ee17 3a90 vmov r3, s15 - 2d4ae: b35b cbz r3, 2d508 <__kernel_sin+0x70> - 2d4b0: ee20 7b00 vmul.f64 d7, d0, d0 - 2d4b4: ed9f 2b16 vldr d2, [pc, #88] ; 2d510 <__kernel_sin+0x78> - 2d4b8: ed9f 3b17 vldr d3, [pc, #92] ; 2d518 <__kernel_sin+0x80> - 2d4bc: ed9f 4b18 vldr d4, [pc, #96] ; 2d520 <__kernel_sin+0x88> - 2d4c0: eea7 3b02 vfma.f64 d3, d7, d2 - 2d4c4: ed9f 5b18 vldr d5, [pc, #96] ; 2d528 <__kernel_sin+0x90> - 2d4c8: eea3 4b07 vfma.f64 d4, d3, d7 - 2d4cc: ed9f 6b18 vldr d6, [pc, #96] ; 2d530 <__kernel_sin+0x98> - 2d4d0: eea4 5b07 vfma.f64 d5, d4, d7 - 2d4d4: eea5 6b07 vfma.f64 d6, d5, d7 - 2d4d8: ee20 5b07 vmul.f64 d5, d0, d7 - 2d4dc: b930 cbnz r0, 2d4ec <__kernel_sin+0x54> - 2d4de: ed9f 4b16 vldr d4, [pc, #88] ; 2d538 <__kernel_sin+0xa0> - 2d4e2: eea7 4b06 vfma.f64 d4, d7, d6 - 2d4e6: eea4 0b05 vfma.f64 d0, d4, d5 - 2d4ea: 4770 bx lr - 2d4ec: ed9f 4b14 vldr d4, [pc, #80] ; 2d540 <__kernel_sin+0xa8> - 2d4f0: ee26 6b45 vnmul.f64 d6, d6, d5 - 2d4f4: eeb6 3b00 vmov.f64 d3, #96 ; 0x3f000000 0.5 - 2d4f8: eea1 6b03 vfma.f64 d6, d1, d3 - 2d4fc: ee96 1b07 vfnms.f64 d1, d6, d7 - 2d500: eea5 1b04 vfma.f64 d1, d5, d4 - 2d504: ee30 0b41 vsub.f64 d0, d0, d1 - 2d508: 4770 bx lr - 2d50a: bf00 nop - 2d50c: f3af 8000 nop.w - 2d510: 5acfd57c .word 0x5acfd57c - 2d514: 3de5d93a .word 0x3de5d93a - 2d518: 8a2b9ceb .word 0x8a2b9ceb - 2d51c: be5ae5e6 .word 0xbe5ae5e6 - 2d520: 57b1fe7d .word 0x57b1fe7d - 2d524: 3ec71de3 .word 0x3ec71de3 - 2d528: 19c161d5 .word 0x19c161d5 - 2d52c: bf2a01a0 .word 0xbf2a01a0 - 2d530: 1110f8a6 .word 0x1110f8a6 - 2d534: 3f811111 .word 0x3f811111 - 2d538: 55555549 .word 0x55555549 - 2d53c: bfc55555 .word 0xbfc55555 - 2d540: 55555549 .word 0x55555549 - 2d544: 3fc55555 .word 0x3fc55555 - -0002d548 : - 2d548: ec51 0b10 vmov r0, r1, d0 - 2d54c: ee10 2a10 vmov r2, s0 - 2d550: f021 4300 bic.w r3, r1, #2147483648 ; 0x80000000 - 2d554: ec43 2b10 vmov d0, r2, r3 - 2d558: 4770 bx lr - 2d55a: bf00 nop - 2d55c: 0000 movs r0, r0 +0002d450 <__kernel_cos>: + 2d450: ee10 3a90 vmov r3, s1 + 2d454: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 2d458: f1b3 5f79 cmp.w r3, #1044381696 ; 0x3e400000 + 2d45c: ed2d 8b02 vpush {d8} + 2d460: da2e bge.n 2d4c0 <__kernel_cos+0x70> + 2d462: eefd 7bc0 vcvt.s32.f64 s15, d0 + 2d466: ee17 3a90 vmov r3, s15 + 2d46a: 2b00 cmp r3, #0 + 2d46c: d065 beq.n 2d53a <__kernel_cos+0xea> + 2d46e: ee20 4b00 vmul.f64 d4, d0, d0 + 2d472: ed9f 8b35 vldr d8, [pc, #212] ; 2d548 <__kernel_cos+0xf8> + 2d476: ed9f 2b36 vldr d2, [pc, #216] ; 2d550 <__kernel_cos+0x100> + 2d47a: ed9f 3b37 vldr d3, [pc, #220] ; 2d558 <__kernel_cos+0x108> + 2d47e: eea4 2b08 vfma.f64 d2, d4, d8 + 2d482: ed9f 5b37 vldr d5, [pc, #220] ; 2d560 <__kernel_cos+0x110> + 2d486: eea4 3b02 vfma.f64 d3, d4, d2 + 2d48a: ed9f 6b37 vldr d6, [pc, #220] ; 2d568 <__kernel_cos+0x118> + 2d48e: eea4 5b03 vfma.f64 d5, d4, d3 + 2d492: ed9f 7b37 vldr d7, [pc, #220] ; 2d570 <__kernel_cos+0x120> + 2d496: eea4 6b05 vfma.f64 d6, d4, d5 + 2d49a: eea4 7b06 vfma.f64 d7, d4, d6 + 2d49e: ee24 7b07 vmul.f64 d7, d4, d7 + 2d4a2: ee21 1b40 vnmul.f64 d1, d1, d0 + 2d4a6: eeb6 6b00 vmov.f64 d6, #96 ; 0x3f000000 0.5 + 2d4aa: eea4 1b07 vfma.f64 d1, d4, d7 + 2d4ae: eeb7 0b00 vmov.f64 d0, #112 ; 0x3f800000 1.0 + 2d4b2: ee94 1b06 vfnms.f64 d1, d4, d6 + 2d4b6: ecbd 8b02 vpop {d8} + 2d4ba: ee30 0b41 vsub.f64 d0, d0, d1 + 2d4be: 4770 bx lr + 2d4c0: ed9f 8b21 vldr d8, [pc, #132] ; 2d548 <__kernel_cos+0xf8> + 2d4c4: ee20 4b00 vmul.f64 d4, d0, d0 + 2d4c8: ed9f 2b21 vldr d2, [pc, #132] ; 2d550 <__kernel_cos+0x100> + 2d4cc: ed9f 3b22 vldr d3, [pc, #136] ; 2d558 <__kernel_cos+0x108> + 2d4d0: eea4 2b08 vfma.f64 d2, d4, d8 + 2d4d4: ed9f 5b22 vldr d5, [pc, #136] ; 2d560 <__kernel_cos+0x110> + 2d4d8: eea2 3b04 vfma.f64 d3, d2, d4 + 2d4dc: ed9f 6b22 vldr d6, [pc, #136] ; 2d568 <__kernel_cos+0x118> + 2d4e0: eea3 5b04 vfma.f64 d5, d3, d4 + 2d4e4: ed9f 7b22 vldr d7, [pc, #136] ; 2d570 <__kernel_cos+0x120> + 2d4e8: eea5 6b04 vfma.f64 d6, d5, d4 + 2d4ec: 4a22 ldr r2, [pc, #136] ; (2d578 <__kernel_cos+0x128>) + 2d4ee: eea6 7b04 vfma.f64 d7, d6, d4 + 2d4f2: 4293 cmp r3, r2 + 2d4f4: ee27 7b04 vmul.f64 d7, d7, d4 + 2d4f8: ddd3 ble.n 2d4a2 <__kernel_cos+0x52> + 2d4fa: 4a20 ldr r2, [pc, #128] ; (2d57c <__kernel_cos+0x12c>) + 2d4fc: 4293 cmp r3, r2 + 2d4fe: dc17 bgt.n 2d530 <__kernel_cos+0xe0> + 2d500: eeb7 6b00 vmov.f64 d6, #112 ; 0x3f800000 1.0 + 2d504: 2000 movs r0, #0 + 2d506: f5a3 1100 sub.w r1, r3, #2097152 ; 0x200000 + 2d50a: ec41 0b15 vmov d5, r0, r1 + 2d50e: ee36 6b45 vsub.f64 d6, d6, d5 + 2d512: ee21 1b40 vnmul.f64 d1, d1, d0 + 2d516: eeb6 3b00 vmov.f64 d3, #96 ; 0x3f000000 0.5 + 2d51a: eea4 1b07 vfma.f64 d1, d4, d7 + 2d51e: ee94 5b03 vfnms.f64 d5, d4, d3 + 2d522: ecbd 8b02 vpop {d8} + 2d526: ee35 0b41 vsub.f64 d0, d5, d1 + 2d52a: ee36 0b40 vsub.f64 d0, d6, d0 + 2d52e: 4770 bx lr + 2d530: eeb6 6b07 vmov.f64 d6, #103 ; 0x3f380000 0.7187500 + 2d534: eeb5 5b02 vmov.f64 d5, #82 ; 0x3e900000 0.2812500 + 2d538: e7eb b.n 2d512 <__kernel_cos+0xc2> + 2d53a: eeb7 0b00 vmov.f64 d0, #112 ; 0x3f800000 1.0 + 2d53e: ecbd 8b02 vpop {d8} + 2d542: 4770 bx lr + 2d544: f3af 8000 nop.w + 2d548: be8838d4 .word 0xbe8838d4 + 2d54c: bda8fae9 .word 0xbda8fae9 + 2d550: bdb4b1c4 .word 0xbdb4b1c4 + 2d554: 3e21ee9e .word 0x3e21ee9e + 2d558: 809c52ad .word 0x809c52ad + 2d55c: be927e4f .word 0xbe927e4f + 2d560: 19cb1590 .word 0x19cb1590 + 2d564: 3efa01a0 .word 0x3efa01a0 + 2d568: 16c15177 .word 0x16c15177 + 2d56c: bf56c16c .word 0xbf56c16c + 2d570: 5555554c .word 0x5555554c + 2d574: 3fa55555 .word 0x3fa55555 + 2d578: 3fd33332 .word 0x3fd33332 + 2d57c: 3fe90000 .word 0x3fe90000 + +0002d580 <__kernel_sin>: + 2d580: ee10 3a90 vmov r3, s1 + 2d584: f023 4300 bic.w r3, r3, #2147483648 ; 0x80000000 + 2d588: f1b3 5f79 cmp.w r3, #1044381696 ; 0x3e400000 + 2d58c: da04 bge.n 2d598 <__kernel_sin+0x18> + 2d58e: eefd 7bc0 vcvt.s32.f64 s15, d0 + 2d592: ee17 3a90 vmov r3, s15 + 2d596: b35b cbz r3, 2d5f0 <__kernel_sin+0x70> + 2d598: ee20 7b00 vmul.f64 d7, d0, d0 + 2d59c: ed9f 2b16 vldr d2, [pc, #88] ; 2d5f8 <__kernel_sin+0x78> + 2d5a0: ed9f 3b17 vldr d3, [pc, #92] ; 2d600 <__kernel_sin+0x80> + 2d5a4: ed9f 4b18 vldr d4, [pc, #96] ; 2d608 <__kernel_sin+0x88> + 2d5a8: eea7 3b02 vfma.f64 d3, d7, d2 + 2d5ac: ed9f 5b18 vldr d5, [pc, #96] ; 2d610 <__kernel_sin+0x90> + 2d5b0: eea3 4b07 vfma.f64 d4, d3, d7 + 2d5b4: ed9f 6b18 vldr d6, [pc, #96] ; 2d618 <__kernel_sin+0x98> + 2d5b8: eea4 5b07 vfma.f64 d5, d4, d7 + 2d5bc: eea5 6b07 vfma.f64 d6, d5, d7 + 2d5c0: ee20 5b07 vmul.f64 d5, d0, d7 + 2d5c4: b930 cbnz r0, 2d5d4 <__kernel_sin+0x54> + 2d5c6: ed9f 4b16 vldr d4, [pc, #88] ; 2d620 <__kernel_sin+0xa0> + 2d5ca: eea7 4b06 vfma.f64 d4, d7, d6 + 2d5ce: eea4 0b05 vfma.f64 d0, d4, d5 + 2d5d2: 4770 bx lr + 2d5d4: ed9f 4b14 vldr d4, [pc, #80] ; 2d628 <__kernel_sin+0xa8> + 2d5d8: ee26 6b45 vnmul.f64 d6, d6, d5 + 2d5dc: eeb6 3b00 vmov.f64 d3, #96 ; 0x3f000000 0.5 + 2d5e0: eea1 6b03 vfma.f64 d6, d1, d3 + 2d5e4: ee96 1b07 vfnms.f64 d1, d6, d7 + 2d5e8: eea5 1b04 vfma.f64 d1, d5, d4 + 2d5ec: ee30 0b41 vsub.f64 d0, d0, d1 + 2d5f0: 4770 bx lr + 2d5f2: bf00 nop + 2d5f4: f3af 8000 nop.w + 2d5f8: 5acfd57c .word 0x5acfd57c + 2d5fc: 3de5d93a .word 0x3de5d93a + 2d600: 8a2b9ceb .word 0x8a2b9ceb + 2d604: be5ae5e6 .word 0xbe5ae5e6 + 2d608: 57b1fe7d .word 0x57b1fe7d + 2d60c: 3ec71de3 .word 0x3ec71de3 + 2d610: 19c161d5 .word 0x19c161d5 + 2d614: bf2a01a0 .word 0xbf2a01a0 + 2d618: 1110f8a6 .word 0x1110f8a6 + 2d61c: 3f811111 .word 0x3f811111 + 2d620: 55555549 .word 0x55555549 + 2d624: bfc55555 .word 0xbfc55555 + 2d628: 55555549 .word 0x55555549 + 2d62c: 3fc55555 .word 0x3fc55555 + +0002d630 : + 2d630: ec51 0b10 vmov r0, r1, d0 + 2d634: ee10 2a10 vmov r2, s0 + 2d638: f021 4300 bic.w r3, r1, #2147483648 ; 0x80000000 + 2d63c: ec43 2b10 vmov d0, r2, r3 + 2d640: 4770 bx lr + 2d642: bf00 nop + 2d644: 0000 movs r0, r0 ... -0002d560 : - 2d560: ec53 2b10 vmov r2, r3, d0 - 2d564: b410 push {r4} - 2d566: f3c3 540a ubfx r4, r3, #20, #11 - 2d56a: 4619 mov r1, r3 - 2d56c: bb74 cbnz r4, 2d5cc - 2d56e: f023 4100 bic.w r1, r3, #2147483648 ; 0x80000000 - 2d572: 4311 orrs r1, r2 - 2d574: d027 beq.n 2d5c6 - 2d576: ed9f 7b30 vldr d7, [pc, #192] ; 2d638 - 2d57a: 493b ldr r1, [pc, #236] ; (2d668 ) - 2d57c: ee20 7b07 vmul.f64 d7, d0, d7 - 2d580: 4288 cmp r0, r1 - 2d582: ec53 2b17 vmov r2, r3, d7 - 2d586: db43 blt.n 2d610 - 2d588: f3c3 540a ubfx r4, r3, #20, #11 - 2d58c: 4619 mov r1, r3 - 2d58e: 3c36 subs r4, #54 ; 0x36 - 2d590: f24c 3c50 movw ip, #50000 ; 0xc350 - 2d594: 4560 cmp r0, ip - 2d596: dc22 bgt.n 2d5de - 2d598: 4420 add r0, r4 - 2d59a: f240 74fe movw r4, #2046 ; 0x7fe - 2d59e: 42a0 cmp r0, r4 - 2d5a0: dc1d bgt.n 2d5de - 2d5a2: 2800 cmp r0, #0 - 2d5a4: dc29 bgt.n 2d5fa - 2d5a6: f110 0f35 cmn.w r0, #53 ; 0x35 - 2d5aa: db38 blt.n 2d61e - 2d5ac: f021 41ff bic.w r1, r1, #2139095040 ; 0x7f800000 - 2d5b0: 3036 adds r0, #54 ; 0x36 - 2d5b2: f421 01e0 bic.w r1, r1, #7340032 ; 0x700000 - 2d5b6: ed9f 7b22 vldr d7, [pc, #136] ; 2d640 - 2d5ba: ea41 5300 orr.w r3, r1, r0, lsl #20 - 2d5be: ec43 2b10 vmov d0, r2, r3 - 2d5c2: ee20 0b07 vmul.f64 d0, d0, d7 - 2d5c6: f85d 4b04 ldr.w r4, [sp], #4 - 2d5ca: 4770 bx lr - 2d5cc: f240 7cff movw ip, #2047 ; 0x7ff - 2d5d0: 4564 cmp r4, ip - 2d5d2: d1dd bne.n 2d590 - 2d5d4: ee30 0b00 vadd.f64 d0, d0, d0 - 2d5d8: f85d 4b04 ldr.w r4, [sp], #4 - 2d5dc: 4770 bx lr - 2d5de: ed9f 7b1a vldr d7, [pc, #104] ; 2d648 - 2d5e2: ed9f 5b1b vldr d5, [pc, #108] ; 2d650 - 2d5e6: eeb0 0b47 vmov.f64 d0, d7 - 2d5ea: 2b00 cmp r3, #0 - 2d5ec: f85d 4b04 ldr.w r4, [sp], #4 - 2d5f0: fe27 7b05 vselge.f64 d7, d7, d5 - 2d5f4: ee27 0b00 vmul.f64 d0, d7, d0 - 2d5f8: 4770 bx lr - 2d5fa: f021 41ff bic.w r1, r1, #2139095040 ; 0x7f800000 - 2d5fe: f421 01e0 bic.w r1, r1, #7340032 ; 0x700000 - 2d602: ea41 5300 orr.w r3, r1, r0, lsl #20 - 2d606: ec43 2b10 vmov d0, r2, r3 - 2d60a: f85d 4b04 ldr.w r4, [sp], #4 - 2d60e: 4770 bx lr - 2d610: ed9f 0b11 vldr d0, [pc, #68] ; 2d658 - 2d614: f85d 4b04 ldr.w r4, [sp], #4 - 2d618: ee27 0b00 vmul.f64 d0, d7, d0 - 2d61c: 4770 bx lr - 2d61e: ed9f 7b0e vldr d7, [pc, #56] ; 2d658 - 2d622: ed9f 5b0f vldr d5, [pc, #60] ; 2d660 - 2d626: eeb0 0b47 vmov.f64 d0, d7 - 2d62a: 2b00 cmp r3, #0 - 2d62c: fe27 7b05 vselge.f64 d7, d7, d5 - 2d630: ee27 0b00 vmul.f64 d0, d7, d0 - 2d634: e7c7 b.n 2d5c6 - 2d636: bf00 nop - 2d638: 00000000 .word 0x00000000 - 2d63c: 43500000 .word 0x43500000 - 2d640: 00000000 .word 0x00000000 - 2d644: 3c900000 .word 0x3c900000 - 2d648: 8800759c .word 0x8800759c - 2d64c: 7e37e43c .word 0x7e37e43c - 2d650: 8800759c .word 0x8800759c - 2d654: fe37e43c .word 0xfe37e43c - 2d658: c2f8f359 .word 0xc2f8f359 - 2d65c: 01a56e1f .word 0x01a56e1f - 2d660: c2f8f359 .word 0xc2f8f359 - 2d664: 81a56e1f .word 0x81a56e1f - 2d668: ffff3cb0 .word 0xffff3cb0 - 2d66c: 00000000 .word 0x00000000 - -0002d670 : - 2d670: b510 push {r4, lr} - 2d672: b082 sub sp, #8 - 2d674: ed8d 0b00 vstr d0, [sp] - 2d678: 9901 ldr r1, [sp, #4] - 2d67a: 9800 ldr r0, [sp, #0] - 2d67c: f3c1 520a ubfx r2, r1, #20, #11 - 2d680: f2a2 33ff subw r3, r2, #1023 ; 0x3ff - 2d684: 2b13 cmp r3, #19 - 2d686: 4684 mov ip, r0 - 2d688: dc31 bgt.n 2d6ee - 2d68a: 2b00 cmp r3, #0 - 2d68c: db21 blt.n 2d6d2 - 2d68e: 4a3a ldr r2, [pc, #232] ; (2d778 ) - 2d690: 411a asrs r2, r3 - 2d692: ea01 0402 and.w r4, r1, r2 - 2d696: 4304 orrs r4, r0 - 2d698: 468e mov lr, r1 - 2d69a: d02d beq.n 2d6f8 - 2d69c: ed9f 7b34 vldr d7, [pc, #208] ; 2d770 - 2d6a0: ed9d 6b00 vldr d6, [sp] - 2d6a4: ee36 7b07 vadd.f64 d7, d6, d7 - 2d6a8: eeb5 7bc0 vcmpe.f64 d7, #0.0 - 2d6ac: eef1 fa10 vmrs APSR_nzcv, fpscr - 2d6b0: dd09 ble.n 2d6c6 - 2d6b2: 2900 cmp r1, #0 - 2d6b4: da04 bge.n 2d6c0 - 2d6b6: f44f 1180 mov.w r1, #1048576 ; 0x100000 - 2d6ba: fa41 f303 asr.w r3, r1, r3 - 2d6be: 449e add lr, r3 - 2d6c0: ea2e 0102 bic.w r1, lr, r2 - 2d6c4: 2000 movs r0, #0 - 2d6c6: 460b mov r3, r1 - 2d6c8: 4602 mov r2, r0 - 2d6ca: ec43 2b10 vmov d0, r2, r3 - 2d6ce: b002 add sp, #8 - 2d6d0: bd10 pop {r4, pc} - 2d6d2: ed9f 7b27 vldr d7, [pc, #156] ; 2d770 - 2d6d6: ee30 7b07 vadd.f64 d7, d0, d7 - 2d6da: eeb5 7bc0 vcmpe.f64 d7, #0.0 - 2d6de: eef1 fa10 vmrs APSR_nzcv, fpscr - 2d6e2: ddf0 ble.n 2d6c6 - 2d6e4: 2900 cmp r1, #0 - 2d6e6: db28 blt.n 2d73a - 2d6e8: 2000 movs r0, #0 - 2d6ea: 4601 mov r1, r0 - 2d6ec: e7eb b.n 2d6c6 - 2d6ee: 2b33 cmp r3, #51 ; 0x33 - 2d6f0: dd06 ble.n 2d700 - 2d6f2: f5b3 6f80 cmp.w r3, #1024 ; 0x400 - 2d6f6: d01b beq.n 2d730 - 2d6f8: ed9d 0b00 vldr d0, [sp] - 2d6fc: b002 add sp, #8 - 2d6fe: bd10 pop {r4, pc} - 2d700: f2a2 4213 subw r2, r2, #1043 ; 0x413 - 2d704: f04f 3eff mov.w lr, #4294967295 ; 0xffffffff - 2d708: fa2e f202 lsr.w r2, lr, r2 - 2d70c: 4210 tst r0, r2 - 2d70e: d0f3 beq.n 2d6f8 - 2d710: ed9f 7b17 vldr d7, [pc, #92] ; 2d770 - 2d714: ed9d 6b00 vldr d6, [sp] - 2d718: ee36 7b07 vadd.f64 d7, d6, d7 - 2d71c: eeb5 7bc0 vcmpe.f64 d7, #0.0 - 2d720: eef1 fa10 vmrs APSR_nzcv, fpscr - 2d724: ddcf ble.n 2d6c6 - 2d726: 2900 cmp r1, #0 - 2d728: db13 blt.n 2d752 - 2d72a: ea2c 0002 bic.w r0, ip, r2 - 2d72e: e7ca b.n 2d6c6 - 2d730: ed9d 7b00 vldr d7, [sp] - 2d734: ee37 0b07 vadd.f64 d0, d7, d7 - 2d738: e7e0 b.n 2d6fc - 2d73a: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 - 2d73e: 4301 orrs r1, r0 - 2d740: 4b0e ldr r3, [pc, #56] ; (2d77c ) - 2d742: 2900 cmp r1, #0 - 2d744: f04f 0000 mov.w r0, #0 - 2d748: bf0c ite eq - 2d74a: f04f 4100 moveq.w r1, #2147483648 ; 0x80000000 - 2d74e: 4619 movne r1, r3 - 2d750: e7b9 b.n 2d6c6 - 2d752: 2b14 cmp r3, #20 - 2d754: d009 beq.n 2d76a - 2d756: 2401 movs r4, #1 - 2d758: f1c3 0334 rsb r3, r3, #52 ; 0x34 - 2d75c: fa04 f303 lsl.w r3, r4, r3 - 2d760: 449c add ip, r3 - 2d762: 4560 cmp r0, ip - 2d764: bf88 it hi - 2d766: 1909 addhi r1, r1, r4 - 2d768: e7df b.n 2d72a - 2d76a: 3101 adds r1, #1 - 2d76c: e7dd b.n 2d72a - 2d76e: bf00 nop - 2d770: 8800759c .word 0x8800759c - 2d774: 7e37e43c .word 0x7e37e43c - 2d778: 000fffff .word 0x000fffff - 2d77c: bff00000 .word 0xbff00000 - -0002d780 <__aeabi_atexit>: - 2d780: 4603 mov r3, r0 - 2d782: 4608 mov r0, r1 - 2d784: 4619 mov r1, r3 - 2d786: f000 bf4f b.w 2e628 <__cxa_atexit> - 2d78a: bf00 nop - -0002d78c <_calloc_r>: - 2d78c: b538 push {r3, r4, r5, lr} - 2d78e: fba1 1402 umull r1, r4, r1, r2 - 2d792: bb8c cbnz r4, 2d7f8 <_calloc_r+0x6c> - 2d794: f000 f846 bl 2d824 <_malloc_r> - 2d798: 4605 mov r5, r0 - 2d79a: b1e0 cbz r0, 2d7d6 <_calloc_r+0x4a> - 2d79c: f850 2c04 ldr.w r2, [r0, #-4] - 2d7a0: f022 0203 bic.w r2, r2, #3 - 2d7a4: 3a04 subs r2, #4 - 2d7a6: 2a24 cmp r2, #36 ; 0x24 - 2d7a8: d817 bhi.n 2d7da <_calloc_r+0x4e> - 2d7aa: 2a13 cmp r2, #19 - 2d7ac: d91a bls.n 2d7e4 <_calloc_r+0x58> - 2d7ae: 2a1b cmp r2, #27 - 2d7b0: e9c0 4400 strd r4, r4, [r0] - 2d7b4: d91d bls.n 2d7f2 <_calloc_r+0x66> - 2d7b6: 2a24 cmp r2, #36 ; 0x24 - 2d7b8: bf14 ite ne - 2d7ba: f100 0210 addne.w r2, r0, #16 - 2d7be: f100 0218 addeq.w r2, r0, #24 - 2d7c2: f04f 0300 mov.w r3, #0 - 2d7c6: e9c0 4402 strd r4, r4, [r0, #8] - 2d7ca: bf04 itt eq - 2d7cc: 6104 streq r4, [r0, #16] - 2d7ce: 6144 streq r4, [r0, #20] - 2d7d0: e9c2 3300 strd r3, r3, [r2] - 2d7d4: 6093 str r3, [r2, #8] - 2d7d6: 4628 mov r0, r5 - 2d7d8: bd38 pop {r3, r4, r5, pc} - 2d7da: 4621 mov r1, r4 - 2d7dc: f000 fe56 bl 2e48c - 2d7e0: 4628 mov r0, r5 - 2d7e2: bd38 pop {r3, r4, r5, pc} - 2d7e4: 4602 mov r2, r0 - 2d7e6: 2300 movs r3, #0 - 2d7e8: e9c2 3300 strd r3, r3, [r2] - 2d7ec: 6093 str r3, [r2, #8] - 2d7ee: 4628 mov r0, r5 - 2d7f0: bd38 pop {r3, r4, r5, pc} - 2d7f2: f100 0208 add.w r2, r0, #8 - 2d7f6: e7f6 b.n 2d7e6 <_calloc_r+0x5a> - 2d7f8: f000 ff44 bl 2e684 <__errno> - 2d7fc: 230c movs r3, #12 - 2d7fe: 2500 movs r5, #0 - 2d800: 6003 str r3, [r0, #0] - 2d802: e7e8 b.n 2d7d6 <_calloc_r+0x4a> - -0002d804 : - 2d804: 4b02 ldr r3, [pc, #8] ; (2d810 ) - 2d806: 4601 mov r1, r0 - 2d808: 6818 ldr r0, [r3, #0] - 2d80a: f000 b80b b.w 2d824 <_malloc_r> - 2d80e: bf00 nop - 2d810: 200051b0 .word 0x200051b0 - -0002d814 : - 2d814: 4b02 ldr r3, [pc, #8] ; (2d820 ) - 2d816: 4601 mov r1, r0 - 2d818: 6818 ldr r0, [r3, #0] - 2d81a: f001 ba93 b.w 2ed44 <_free_r> - 2d81e: bf00 nop - 2d820: 200051b0 .word 0x200051b0 - -0002d824 <_malloc_r>: - 2d824: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 2d828: f101 060b add.w r6, r1, #11 - 2d82c: 2e16 cmp r6, #22 - 2d82e: b083 sub sp, #12 - 2d830: 4604 mov r4, r0 - 2d832: d824 bhi.n 2d87e <_malloc_r+0x5a> - 2d834: 2910 cmp r1, #16 - 2d836: f200 80ba bhi.w 2d9ae <_malloc_r+0x18a> - 2d83a: f000 faa3 bl 2dd84 <__malloc_lock> - 2d83e: 2610 movs r6, #16 - 2d840: 2218 movs r2, #24 - 2d842: 2002 movs r0, #2 - 2d844: 4fb5 ldr r7, [pc, #724] ; (2db1c <_malloc_r+0x2f8>) - 2d846: 443a add r2, r7 - 2d848: f1a2 0108 sub.w r1, r2, #8 - 2d84c: 6853 ldr r3, [r2, #4] - 2d84e: 428b cmp r3, r1 - 2d850: f000 80ba beq.w 2d9c8 <_malloc_r+0x1a4> - 2d854: 685a ldr r2, [r3, #4] - 2d856: 68d9 ldr r1, [r3, #12] - 2d858: f022 0203 bic.w r2, r2, #3 - 2d85c: 441a add r2, r3 - 2d85e: 689d ldr r5, [r3, #8] - 2d860: 60e9 str r1, [r5, #12] - 2d862: 608d str r5, [r1, #8] - 2d864: 6851 ldr r1, [r2, #4] - 2d866: f041 0101 orr.w r1, r1, #1 - 2d86a: 4620 mov r0, r4 - 2d86c: 6051 str r1, [r2, #4] - 2d86e: f103 0508 add.w r5, r3, #8 - 2d872: f000 fa8d bl 2dd90 <__malloc_unlock> - 2d876: 4628 mov r0, r5 - 2d878: b003 add sp, #12 - 2d87a: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 2d87e: f036 0607 bics.w r6, r6, #7 - 2d882: f100 8094 bmi.w 2d9ae <_malloc_r+0x18a> - 2d886: 42b1 cmp r1, r6 - 2d888: f200 8091 bhi.w 2d9ae <_malloc_r+0x18a> - 2d88c: f000 fa7a bl 2dd84 <__malloc_lock> - 2d890: f5b6 7ffc cmp.w r6, #504 ; 0x1f8 - 2d894: f0c0 819a bcc.w 2dbcc <_malloc_r+0x3a8> - 2d898: 0a73 lsrs r3, r6, #9 - 2d89a: f000 808f beq.w 2d9bc <_malloc_r+0x198> - 2d89e: 2b04 cmp r3, #4 - 2d8a0: f200 816f bhi.w 2db82 <_malloc_r+0x35e> - 2d8a4: 09b3 lsrs r3, r6, #6 - 2d8a6: f103 0039 add.w r0, r3, #57 ; 0x39 - 2d8aa: f103 0c38 add.w ip, r3, #56 ; 0x38 - 2d8ae: 00c3 lsls r3, r0, #3 - 2d8b0: 4f9a ldr r7, [pc, #616] ; (2db1c <_malloc_r+0x2f8>) - 2d8b2: 443b add r3, r7 - 2d8b4: f1a3 0508 sub.w r5, r3, #8 - 2d8b8: 685b ldr r3, [r3, #4] - 2d8ba: 429d cmp r5, r3 - 2d8bc: d106 bne.n 2d8cc <_malloc_r+0xa8> - 2d8be: e00c b.n 2d8da <_malloc_r+0xb6> - 2d8c0: 2900 cmp r1, #0 - 2d8c2: f280 8127 bge.w 2db14 <_malloc_r+0x2f0> - 2d8c6: 68db ldr r3, [r3, #12] - 2d8c8: 429d cmp r5, r3 - 2d8ca: d006 beq.n 2d8da <_malloc_r+0xb6> - 2d8cc: 685a ldr r2, [r3, #4] - 2d8ce: f022 0203 bic.w r2, r2, #3 - 2d8d2: 1b91 subs r1, r2, r6 - 2d8d4: 290f cmp r1, #15 - 2d8d6: ddf3 ble.n 2d8c0 <_malloc_r+0x9c> - 2d8d8: 4660 mov r0, ip - 2d8da: 693d ldr r5, [r7, #16] - 2d8dc: f8df c250 ldr.w ip, [pc, #592] ; 2db30 <_malloc_r+0x30c> - 2d8e0: 4565 cmp r5, ip - 2d8e2: d07c beq.n 2d9de <_malloc_r+0x1ba> - 2d8e4: 686a ldr r2, [r5, #4] - 2d8e6: f022 0203 bic.w r2, r2, #3 - 2d8ea: 1b93 subs r3, r2, r6 - 2d8ec: 2b0f cmp r3, #15 - 2d8ee: f300 817b bgt.w 2dbe8 <_malloc_r+0x3c4> - 2d8f2: 2b00 cmp r3, #0 - 2d8f4: e9c7 cc04 strd ip, ip, [r7, #16] - 2d8f8: f280 816c bge.w 2dbd4 <_malloc_r+0x3b0> - 2d8fc: f5b2 7f00 cmp.w r2, #512 ; 0x200 - 2d900: f080 811a bcs.w 2db38 <_malloc_r+0x314> - 2d904: 08d3 lsrs r3, r2, #3 - 2d906: 6879 ldr r1, [r7, #4] - 2d908: 3301 adds r3, #1 - 2d90a: ea4f 1e52 mov.w lr, r2, lsr #5 - 2d90e: 2201 movs r2, #1 - 2d910: fa02 f20e lsl.w r2, r2, lr - 2d914: 430a orrs r2, r1 - 2d916: f857 e033 ldr.w lr, [r7, r3, lsl #3] - 2d91a: f8c5 e008 str.w lr, [r5, #8] - 2d91e: eb07 01c3 add.w r1, r7, r3, lsl #3 - 2d922: 3908 subs r1, #8 - 2d924: 60e9 str r1, [r5, #12] - 2d926: 607a str r2, [r7, #4] - 2d928: f847 5033 str.w r5, [r7, r3, lsl #3] - 2d92c: f8ce 500c str.w r5, [lr, #12] - 2d930: 1083 asrs r3, r0, #2 - 2d932: 2101 movs r1, #1 - 2d934: 4099 lsls r1, r3 - 2d936: 4291 cmp r1, r2 - 2d938: d857 bhi.n 2d9ea <_malloc_r+0x1c6> - 2d93a: 4211 tst r1, r2 - 2d93c: d106 bne.n 2d94c <_malloc_r+0x128> - 2d93e: f020 0003 bic.w r0, r0, #3 - 2d942: 0049 lsls r1, r1, #1 - 2d944: 4211 tst r1, r2 - 2d946: f100 0004 add.w r0, r0, #4 - 2d94a: d0fa beq.n 2d942 <_malloc_r+0x11e> - 2d94c: eb07 09c0 add.w r9, r7, r0, lsl #3 - 2d950: 464d mov r5, r9 - 2d952: 4686 mov lr, r0 - 2d954: f8d5 800c ldr.w r8, [r5, #12] - 2d958: 4545 cmp r5, r8 - 2d95a: d108 bne.n 2d96e <_malloc_r+0x14a> - 2d95c: e11d b.n 2db9a <_malloc_r+0x376> - 2d95e: 2b00 cmp r3, #0 - 2d960: f280 8124 bge.w 2dbac <_malloc_r+0x388> - 2d964: f8d8 800c ldr.w r8, [r8, #12] - 2d968: 4545 cmp r5, r8 - 2d96a: f000 8116 beq.w 2db9a <_malloc_r+0x376> - 2d96e: f8d8 2004 ldr.w r2, [r8, #4] - 2d972: f022 0203 bic.w r2, r2, #3 - 2d976: 1b93 subs r3, r2, r6 - 2d978: 2b0f cmp r3, #15 - 2d97a: ddf0 ble.n 2d95e <_malloc_r+0x13a> - 2d97c: 4620 mov r0, r4 - 2d97e: e9d8 5402 ldrd r5, r4, [r8, #8] - 2d982: eb08 0106 add.w r1, r8, r6 - 2d986: f046 0601 orr.w r6, r6, #1 - 2d98a: f8c8 6004 str.w r6, [r8, #4] - 2d98e: 60ec str r4, [r5, #12] - 2d990: 60a5 str r5, [r4, #8] - 2d992: f043 0401 orr.w r4, r3, #1 - 2d996: e9c7 1104 strd r1, r1, [r7, #16] - 2d99a: e9c1 cc02 strd ip, ip, [r1, #8] - 2d99e: 604c str r4, [r1, #4] - 2d9a0: f848 3002 str.w r3, [r8, r2] - 2d9a4: f000 f9f4 bl 2dd90 <__malloc_unlock> - 2d9a8: f108 0508 add.w r5, r8, #8 - 2d9ac: e002 b.n 2d9b4 <_malloc_r+0x190> - 2d9ae: 230c movs r3, #12 - 2d9b0: 6023 str r3, [r4, #0] - 2d9b2: 2500 movs r5, #0 - 2d9b4: 4628 mov r0, r5 - 2d9b6: b003 add sp, #12 - 2d9b8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 2d9bc: f44f 7300 mov.w r3, #512 ; 0x200 - 2d9c0: 2040 movs r0, #64 ; 0x40 - 2d9c2: f04f 0c3f mov.w ip, #63 ; 0x3f - 2d9c6: e773 b.n 2d8b0 <_malloc_r+0x8c> - 2d9c8: 68d3 ldr r3, [r2, #12] - 2d9ca: 429a cmp r2, r3 - 2d9cc: bf08 it eq - 2d9ce: 3002 addeq r0, #2 - 2d9d0: f47f af40 bne.w 2d854 <_malloc_r+0x30> - 2d9d4: 693d ldr r5, [r7, #16] - 2d9d6: f8df c158 ldr.w ip, [pc, #344] ; 2db30 <_malloc_r+0x30c> - 2d9da: 4565 cmp r5, ip - 2d9dc: d182 bne.n 2d8e4 <_malloc_r+0xc0> - 2d9de: 687a ldr r2, [r7, #4] - 2d9e0: 1083 asrs r3, r0, #2 - 2d9e2: 2101 movs r1, #1 - 2d9e4: 4099 lsls r1, r3 - 2d9e6: 4291 cmp r1, r2 - 2d9e8: d9a7 bls.n 2d93a <_malloc_r+0x116> - 2d9ea: 68bd ldr r5, [r7, #8] - 2d9ec: 686b ldr r3, [r5, #4] - 2d9ee: f023 0903 bic.w r9, r3, #3 - 2d9f2: 454e cmp r6, r9 - 2d9f4: d803 bhi.n 2d9fe <_malloc_r+0x1da> - 2d9f6: eba9 0306 sub.w r3, r9, r6 - 2d9fa: 2b0f cmp r3, #15 - 2d9fc: dc7a bgt.n 2daf4 <_malloc_r+0x2d0> - 2d9fe: f8df b134 ldr.w fp, [pc, #308] ; 2db34 <_malloc_r+0x310> - 2da02: 4b47 ldr r3, [pc, #284] ; (2db20 <_malloc_r+0x2fc>) - 2da04: f8db 2000 ldr.w r2, [fp] - 2da08: 681b ldr r3, [r3, #0] - 2da0a: 3201 adds r2, #1 - 2da0c: 4433 add r3, r6 - 2da0e: eb05 0a09 add.w sl, r5, r9 - 2da12: f000 8133 beq.w 2dc7c <_malloc_r+0x458> - 2da16: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 2da1a: 330f adds r3, #15 - 2da1c: f423 687f bic.w r8, r3, #4080 ; 0xff0 - 2da20: f028 080f bic.w r8, r8, #15 - 2da24: 4641 mov r1, r8 - 2da26: 4620 mov r0, r4 - 2da28: f000 fe04 bl 2e634 <_sbrk_r> - 2da2c: 1c41 adds r1, r0, #1 - 2da2e: 4602 mov r2, r0 - 2da30: f000 80f3 beq.w 2dc1a <_malloc_r+0x3f6> - 2da34: 4582 cmp sl, r0 - 2da36: f200 80ee bhi.w 2dc16 <_malloc_r+0x3f2> - 2da3a: 4b3a ldr r3, [pc, #232] ; (2db24 <_malloc_r+0x300>) - 2da3c: 6819 ldr r1, [r3, #0] - 2da3e: 4441 add r1, r8 - 2da40: 6019 str r1, [r3, #0] - 2da42: 4608 mov r0, r1 - 2da44: f000 814e beq.w 2dce4 <_malloc_r+0x4c0> - 2da48: f8db 1000 ldr.w r1, [fp] - 2da4c: 9301 str r3, [sp, #4] - 2da4e: 3101 adds r1, #1 - 2da50: bf1b ittet ne - 2da52: eba2 010a subne.w r1, r2, sl - 2da56: 1809 addne r1, r1, r0 - 2da58: f8cb 2000 streq.w r2, [fp] - 2da5c: 6019 strne r1, [r3, #0] - 2da5e: f012 0b07 ands.w fp, r2, #7 - 2da62: f000 8117 beq.w 2dc94 <_malloc_r+0x470> - 2da66: f1cb 0108 rsb r1, fp, #8 - 2da6a: 440a add r2, r1 - 2da6c: f5cb 5180 rsb r1, fp, #4096 ; 0x1000 - 2da70: 4490 add r8, r2 - 2da72: 3108 adds r1, #8 - 2da74: eba1 0108 sub.w r1, r1, r8 - 2da78: f3c1 0a0b ubfx sl, r1, #0, #12 - 2da7c: 4651 mov r1, sl - 2da7e: 4620 mov r0, r4 - 2da80: 9200 str r2, [sp, #0] - 2da82: f000 fdd7 bl 2e634 <_sbrk_r> - 2da86: 1c42 adds r2, r0, #1 - 2da88: e9dd 2300 ldrd r2, r3, [sp] - 2da8c: f000 814f beq.w 2dd2e <_malloc_r+0x50a> - 2da90: 1a80 subs r0, r0, r2 - 2da92: eb00 080a add.w r8, r0, sl - 2da96: 6819 ldr r1, [r3, #0] - 2da98: 60ba str r2, [r7, #8] - 2da9a: f048 0001 orr.w r0, r8, #1 - 2da9e: 4451 add r1, sl - 2daa0: 42bd cmp r5, r7 - 2daa2: 6050 str r0, [r2, #4] - 2daa4: 6019 str r1, [r3, #0] - 2daa6: f000 8129 beq.w 2dcfc <_malloc_r+0x4d8> - 2daaa: f1b9 0f0f cmp.w r9, #15 - 2daae: f240 8127 bls.w 2dd00 <_malloc_r+0x4dc> - 2dab2: 6868 ldr r0, [r5, #4] - 2dab4: f1a9 0c0c sub.w ip, r9, #12 - 2dab8: f02c 0c07 bic.w ip, ip, #7 - 2dabc: f000 0001 and.w r0, r0, #1 - 2dac0: ea40 000c orr.w r0, r0, ip - 2dac4: 6068 str r0, [r5, #4] - 2dac6: f04f 0e05 mov.w lr, #5 - 2daca: eb05 000c add.w r0, r5, ip - 2dace: f1bc 0f0f cmp.w ip, #15 - 2dad2: e9c0 ee01 strd lr, lr, [r0, #4] - 2dad6: f200 8132 bhi.w 2dd3e <_malloc_r+0x51a> - 2dada: 6850 ldr r0, [r2, #4] - 2dadc: 4615 mov r5, r2 - 2dade: 4b12 ldr r3, [pc, #72] ; (2db28 <_malloc_r+0x304>) - 2dae0: 681a ldr r2, [r3, #0] - 2dae2: 428a cmp r2, r1 - 2dae4: bf38 it cc - 2dae6: 6019 strcc r1, [r3, #0] - 2dae8: 4b10 ldr r3, [pc, #64] ; (2db2c <_malloc_r+0x308>) - 2daea: 681a ldr r2, [r3, #0] - 2daec: 428a cmp r2, r1 - 2daee: bf38 it cc - 2daf0: 6019 strcc r1, [r3, #0] - 2daf2: e094 b.n 2dc1e <_malloc_r+0x3fa> - 2daf4: 19aa adds r2, r5, r6 - 2daf6: f043 0301 orr.w r3, r3, #1 - 2dafa: f046 0601 orr.w r6, r6, #1 - 2dafe: 606e str r6, [r5, #4] - 2db00: 4620 mov r0, r4 - 2db02: 60ba str r2, [r7, #8] - 2db04: 6053 str r3, [r2, #4] - 2db06: f000 f943 bl 2dd90 <__malloc_unlock> - 2db0a: 3508 adds r5, #8 - 2db0c: 4628 mov r0, r5 - 2db0e: b003 add sp, #12 - 2db10: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 2db14: 68d9 ldr r1, [r3, #12] - 2db16: 441a add r2, r3 - 2db18: e6a1 b.n 2d85e <_malloc_r+0x3a> - 2db1a: bf00 nop - 2db1c: 20004d94 .word 0x20004d94 - 2db20: 2000b8f0 .word 0x2000b8f0 - 2db24: 2000b8c0 .word 0x2000b8c0 - 2db28: 2000b8e8 .word 0x2000b8e8 - 2db2c: 2000b8ec .word 0x2000b8ec - 2db30: 20004d9c .word 0x20004d9c - 2db34: 2000519c .word 0x2000519c - 2db38: f5b2 6f20 cmp.w r2, #2560 ; 0xa00 - 2db3c: ea4f 2352 mov.w r3, r2, lsr #9 - 2db40: d363 bcc.n 2dc0a <_malloc_r+0x3e6> - 2db42: 2b14 cmp r3, #20 - 2db44: f200 80b7 bhi.w 2dcb6 <_malloc_r+0x492> - 2db48: f103 015c add.w r1, r3, #92 ; 0x5c - 2db4c: 00c9 lsls r1, r1, #3 - 2db4e: 335b adds r3, #91 ; 0x5b - 2db50: eb07 0e01 add.w lr, r7, r1 - 2db54: 5879 ldr r1, [r7, r1] - 2db56: f1ae 0e08 sub.w lr, lr, #8 - 2db5a: 458e cmp lr, r1 - 2db5c: f000 8091 beq.w 2dc82 <_malloc_r+0x45e> - 2db60: 684b ldr r3, [r1, #4] - 2db62: f023 0303 bic.w r3, r3, #3 - 2db66: 4293 cmp r3, r2 - 2db68: d902 bls.n 2db70 <_malloc_r+0x34c> - 2db6a: 6889 ldr r1, [r1, #8] - 2db6c: 458e cmp lr, r1 - 2db6e: d1f7 bne.n 2db60 <_malloc_r+0x33c> - 2db70: f8d1 e00c ldr.w lr, [r1, #12] - 2db74: 687a ldr r2, [r7, #4] - 2db76: e9c5 1e02 strd r1, lr, [r5, #8] - 2db7a: f8ce 5008 str.w r5, [lr, #8] - 2db7e: 60cd str r5, [r1, #12] - 2db80: e6d6 b.n 2d930 <_malloc_r+0x10c> - 2db82: 2b14 cmp r3, #20 - 2db84: d959 bls.n 2dc3a <_malloc_r+0x416> - 2db86: 2b54 cmp r3, #84 ; 0x54 - 2db88: f200 809d bhi.w 2dcc6 <_malloc_r+0x4a2> - 2db8c: 0b33 lsrs r3, r6, #12 - 2db8e: f103 006f add.w r0, r3, #111 ; 0x6f - 2db92: f103 0c6e add.w ip, r3, #110 ; 0x6e - 2db96: 00c3 lsls r3, r0, #3 - 2db98: e68a b.n 2d8b0 <_malloc_r+0x8c> - 2db9a: f10e 0e01 add.w lr, lr, #1 - 2db9e: f01e 0f03 tst.w lr, #3 - 2dba2: f105 0508 add.w r5, r5, #8 - 2dba6: f47f aed5 bne.w 2d954 <_malloc_r+0x130> - 2dbaa: e051 b.n 2dc50 <_malloc_r+0x42c> - 2dbac: 4442 add r2, r8 - 2dbae: 4645 mov r5, r8 - 2dbb0: 6853 ldr r3, [r2, #4] - 2dbb2: f8d8 100c ldr.w r1, [r8, #12] - 2dbb6: f043 0301 orr.w r3, r3, #1 - 2dbba: 6053 str r3, [r2, #4] - 2dbbc: f855 3f08 ldr.w r3, [r5, #8]! - 2dbc0: 4620 mov r0, r4 - 2dbc2: 60d9 str r1, [r3, #12] - 2dbc4: 608b str r3, [r1, #8] - 2dbc6: f000 f8e3 bl 2dd90 <__malloc_unlock> - 2dbca: e6f3 b.n 2d9b4 <_malloc_r+0x190> - 2dbcc: 08f0 lsrs r0, r6, #3 - 2dbce: f106 0208 add.w r2, r6, #8 - 2dbd2: e637 b.n 2d844 <_malloc_r+0x20> - 2dbd4: 442a add r2, r5 - 2dbd6: 4620 mov r0, r4 - 2dbd8: 6853 ldr r3, [r2, #4] - 2dbda: f043 0301 orr.w r3, r3, #1 - 2dbde: 6053 str r3, [r2, #4] - 2dbe0: 3508 adds r5, #8 - 2dbe2: f000 f8d5 bl 2dd90 <__malloc_unlock> - 2dbe6: e6e5 b.n 2d9b4 <_malloc_r+0x190> - 2dbe8: 19a9 adds r1, r5, r6 - 2dbea: 4620 mov r0, r4 - 2dbec: f046 0601 orr.w r6, r6, #1 - 2dbf0: f043 0401 orr.w r4, r3, #1 - 2dbf4: 606e str r6, [r5, #4] - 2dbf6: e9c7 1104 strd r1, r1, [r7, #16] - 2dbfa: e9c1 cc02 strd ip, ip, [r1, #8] - 2dbfe: 604c str r4, [r1, #4] - 2dc00: 50ab str r3, [r5, r2] - 2dc02: f000 f8c5 bl 2dd90 <__malloc_unlock> - 2dc06: 3508 adds r5, #8 - 2dc08: e6d4 b.n 2d9b4 <_malloc_r+0x190> - 2dc0a: 0993 lsrs r3, r2, #6 - 2dc0c: f103 0139 add.w r1, r3, #57 ; 0x39 - 2dc10: 00c9 lsls r1, r1, #3 - 2dc12: 3338 adds r3, #56 ; 0x38 - 2dc14: e79c b.n 2db50 <_malloc_r+0x32c> - 2dc16: 42bd cmp r5, r7 - 2dc18: d05f beq.n 2dcda <_malloc_r+0x4b6> - 2dc1a: 68bd ldr r5, [r7, #8] - 2dc1c: 6868 ldr r0, [r5, #4] - 2dc1e: f020 0803 bic.w r8, r0, #3 - 2dc22: 4546 cmp r6, r8 - 2dc24: eba8 0306 sub.w r3, r8, r6 - 2dc28: d802 bhi.n 2dc30 <_malloc_r+0x40c> - 2dc2a: 2b0f cmp r3, #15 - 2dc2c: f73f af62 bgt.w 2daf4 <_malloc_r+0x2d0> - 2dc30: 4620 mov r0, r4 - 2dc32: f000 f8ad bl 2dd90 <__malloc_unlock> - 2dc36: 2500 movs r5, #0 - 2dc38: e6bc b.n 2d9b4 <_malloc_r+0x190> - 2dc3a: f103 005c add.w r0, r3, #92 ; 0x5c - 2dc3e: f103 0c5b add.w ip, r3, #91 ; 0x5b - 2dc42: 00c3 lsls r3, r0, #3 - 2dc44: e634 b.n 2d8b0 <_malloc_r+0x8c> - 2dc46: f859 3908 ldr.w r3, [r9], #-8 - 2dc4a: 454b cmp r3, r9 - 2dc4c: f040 8096 bne.w 2dd7c <_malloc_r+0x558> - 2dc50: f010 0f03 tst.w r0, #3 - 2dc54: f100 30ff add.w r0, r0, #4294967295 ; 0xffffffff - 2dc58: d1f5 bne.n 2dc46 <_malloc_r+0x422> - 2dc5a: 687b ldr r3, [r7, #4] - 2dc5c: ea23 0301 bic.w r3, r3, r1 - 2dc60: 607b str r3, [r7, #4] - 2dc62: 0049 lsls r1, r1, #1 - 2dc64: 4299 cmp r1, r3 - 2dc66: f63f aec0 bhi.w 2d9ea <_malloc_r+0x1c6> - 2dc6a: b919 cbnz r1, 2dc74 <_malloc_r+0x450> - 2dc6c: e6bd b.n 2d9ea <_malloc_r+0x1c6> - 2dc6e: 0049 lsls r1, r1, #1 - 2dc70: f10e 0e04 add.w lr, lr, #4 - 2dc74: 4219 tst r1, r3 - 2dc76: d0fa beq.n 2dc6e <_malloc_r+0x44a> - 2dc78: 4670 mov r0, lr - 2dc7a: e667 b.n 2d94c <_malloc_r+0x128> - 2dc7c: f103 0810 add.w r8, r3, #16 - 2dc80: e6d0 b.n 2da24 <_malloc_r+0x200> - 2dc82: 109a asrs r2, r3, #2 - 2dc84: f04f 0801 mov.w r8, #1 - 2dc88: 687b ldr r3, [r7, #4] - 2dc8a: fa08 f202 lsl.w r2, r8, r2 - 2dc8e: 431a orrs r2, r3 - 2dc90: 607a str r2, [r7, #4] - 2dc92: e770 b.n 2db76 <_malloc_r+0x352> - 2dc94: eb02 0108 add.w r1, r2, r8 - 2dc98: 4249 negs r1, r1 - 2dc9a: f3c1 0a0b ubfx sl, r1, #0, #12 - 2dc9e: 4651 mov r1, sl - 2dca0: 4620 mov r0, r4 - 2dca2: 9200 str r2, [sp, #0] - 2dca4: f000 fcc6 bl 2e634 <_sbrk_r> - 2dca8: 1c43 adds r3, r0, #1 - 2dcaa: e9dd 2300 ldrd r2, r3, [sp] - 2dcae: f47f aeef bne.w 2da90 <_malloc_r+0x26c> - 2dcb2: 46da mov sl, fp - 2dcb4: e6ef b.n 2da96 <_malloc_r+0x272> - 2dcb6: 2b54 cmp r3, #84 ; 0x54 - 2dcb8: d825 bhi.n 2dd06 <_malloc_r+0x4e2> - 2dcba: 0b13 lsrs r3, r2, #12 - 2dcbc: f103 016f add.w r1, r3, #111 ; 0x6f - 2dcc0: 00c9 lsls r1, r1, #3 - 2dcc2: 336e adds r3, #110 ; 0x6e - 2dcc4: e744 b.n 2db50 <_malloc_r+0x32c> - 2dcc6: f5b3 7faa cmp.w r3, #340 ; 0x154 - 2dcca: d825 bhi.n 2dd18 <_malloc_r+0x4f4> - 2dccc: 0bf3 lsrs r3, r6, #15 - 2dcce: f103 0078 add.w r0, r3, #120 ; 0x78 - 2dcd2: f103 0c77 add.w ip, r3, #119 ; 0x77 - 2dcd6: 00c3 lsls r3, r0, #3 - 2dcd8: e5ea b.n 2d8b0 <_malloc_r+0x8c> - 2dcda: 4b29 ldr r3, [pc, #164] ; (2dd80 <_malloc_r+0x55c>) - 2dcdc: 6818 ldr r0, [r3, #0] - 2dcde: 4440 add r0, r8 - 2dce0: 6018 str r0, [r3, #0] - 2dce2: e6b1 b.n 2da48 <_malloc_r+0x224> - 2dce4: f3ca 0c0b ubfx ip, sl, #0, #12 - 2dce8: f1bc 0f00 cmp.w ip, #0 - 2dcec: f47f aeac bne.w 2da48 <_malloc_r+0x224> - 2dcf0: 68bd ldr r5, [r7, #8] - 2dcf2: 44c8 add r8, r9 - 2dcf4: f048 0001 orr.w r0, r8, #1 - 2dcf8: 6068 str r0, [r5, #4] - 2dcfa: e6f0 b.n 2dade <_malloc_r+0x2ba> - 2dcfc: 4615 mov r5, r2 - 2dcfe: e6ee b.n 2dade <_malloc_r+0x2ba> - 2dd00: 2301 movs r3, #1 - 2dd02: 6053 str r3, [r2, #4] - 2dd04: e794 b.n 2dc30 <_malloc_r+0x40c> - 2dd06: f5b3 7faa cmp.w r3, #340 ; 0x154 - 2dd0a: d823 bhi.n 2dd54 <_malloc_r+0x530> - 2dd0c: 0bd3 lsrs r3, r2, #15 - 2dd0e: f103 0178 add.w r1, r3, #120 ; 0x78 - 2dd12: 00c9 lsls r1, r1, #3 - 2dd14: 3377 adds r3, #119 ; 0x77 - 2dd16: e71b b.n 2db50 <_malloc_r+0x32c> - 2dd18: f240 5254 movw r2, #1364 ; 0x554 - 2dd1c: 4293 cmp r3, r2 - 2dd1e: d823 bhi.n 2dd68 <_malloc_r+0x544> - 2dd20: 0cb3 lsrs r3, r6, #18 - 2dd22: f103 007d add.w r0, r3, #125 ; 0x7d - 2dd26: f103 0c7c add.w ip, r3, #124 ; 0x7c +0002d648 : + 2d648: ec53 2b10 vmov r2, r3, d0 + 2d64c: b410 push {r4} + 2d64e: f3c3 540a ubfx r4, r3, #20, #11 + 2d652: 4619 mov r1, r3 + 2d654: bb74 cbnz r4, 2d6b4 + 2d656: f023 4100 bic.w r1, r3, #2147483648 ; 0x80000000 + 2d65a: 4311 orrs r1, r2 + 2d65c: d027 beq.n 2d6ae + 2d65e: ed9f 7b30 vldr d7, [pc, #192] ; 2d720 + 2d662: 493b ldr r1, [pc, #236] ; (2d750 ) + 2d664: ee20 7b07 vmul.f64 d7, d0, d7 + 2d668: 4288 cmp r0, r1 + 2d66a: ec53 2b17 vmov r2, r3, d7 + 2d66e: db43 blt.n 2d6f8 + 2d670: f3c3 540a ubfx r4, r3, #20, #11 + 2d674: 4619 mov r1, r3 + 2d676: 3c36 subs r4, #54 ; 0x36 + 2d678: f24c 3c50 movw ip, #50000 ; 0xc350 + 2d67c: 4560 cmp r0, ip + 2d67e: dc22 bgt.n 2d6c6 + 2d680: 4420 add r0, r4 + 2d682: f240 74fe movw r4, #2046 ; 0x7fe + 2d686: 42a0 cmp r0, r4 + 2d688: dc1d bgt.n 2d6c6 + 2d68a: 2800 cmp r0, #0 + 2d68c: dc29 bgt.n 2d6e2 + 2d68e: f110 0f35 cmn.w r0, #53 ; 0x35 + 2d692: db38 blt.n 2d706 + 2d694: f021 41ff bic.w r1, r1, #2139095040 ; 0x7f800000 + 2d698: 3036 adds r0, #54 ; 0x36 + 2d69a: f421 01e0 bic.w r1, r1, #7340032 ; 0x700000 + 2d69e: ed9f 7b22 vldr d7, [pc, #136] ; 2d728 + 2d6a2: ea41 5300 orr.w r3, r1, r0, lsl #20 + 2d6a6: ec43 2b10 vmov d0, r2, r3 + 2d6aa: ee20 0b07 vmul.f64 d0, d0, d7 + 2d6ae: f85d 4b04 ldr.w r4, [sp], #4 + 2d6b2: 4770 bx lr + 2d6b4: f240 7cff movw ip, #2047 ; 0x7ff + 2d6b8: 4564 cmp r4, ip + 2d6ba: d1dd bne.n 2d678 + 2d6bc: ee30 0b00 vadd.f64 d0, d0, d0 + 2d6c0: f85d 4b04 ldr.w r4, [sp], #4 + 2d6c4: 4770 bx lr + 2d6c6: ed9f 7b1a vldr d7, [pc, #104] ; 2d730 + 2d6ca: ed9f 5b1b vldr d5, [pc, #108] ; 2d738 + 2d6ce: eeb0 0b47 vmov.f64 d0, d7 + 2d6d2: 2b00 cmp r3, #0 + 2d6d4: f85d 4b04 ldr.w r4, [sp], #4 + 2d6d8: fe27 7b05 vselge.f64 d7, d7, d5 + 2d6dc: ee27 0b00 vmul.f64 d0, d7, d0 + 2d6e0: 4770 bx lr + 2d6e2: f021 41ff bic.w r1, r1, #2139095040 ; 0x7f800000 + 2d6e6: f421 01e0 bic.w r1, r1, #7340032 ; 0x700000 + 2d6ea: ea41 5300 orr.w r3, r1, r0, lsl #20 + 2d6ee: ec43 2b10 vmov d0, r2, r3 + 2d6f2: f85d 4b04 ldr.w r4, [sp], #4 + 2d6f6: 4770 bx lr + 2d6f8: ed9f 0b11 vldr d0, [pc, #68] ; 2d740 + 2d6fc: f85d 4b04 ldr.w r4, [sp], #4 + 2d700: ee27 0b00 vmul.f64 d0, d7, d0 + 2d704: 4770 bx lr + 2d706: ed9f 7b0e vldr d7, [pc, #56] ; 2d740 + 2d70a: ed9f 5b0f vldr d5, [pc, #60] ; 2d748 + 2d70e: eeb0 0b47 vmov.f64 d0, d7 + 2d712: 2b00 cmp r3, #0 + 2d714: fe27 7b05 vselge.f64 d7, d7, d5 + 2d718: ee27 0b00 vmul.f64 d0, d7, d0 + 2d71c: e7c7 b.n 2d6ae + 2d71e: bf00 nop + 2d720: 00000000 .word 0x00000000 + 2d724: 43500000 .word 0x43500000 + 2d728: 00000000 .word 0x00000000 + 2d72c: 3c900000 .word 0x3c900000 + 2d730: 8800759c .word 0x8800759c + 2d734: 7e37e43c .word 0x7e37e43c + 2d738: 8800759c .word 0x8800759c + 2d73c: fe37e43c .word 0xfe37e43c + 2d740: c2f8f359 .word 0xc2f8f359 + 2d744: 01a56e1f .word 0x01a56e1f + 2d748: c2f8f359 .word 0xc2f8f359 + 2d74c: 81a56e1f .word 0x81a56e1f + 2d750: ffff3cb0 .word 0xffff3cb0 + 2d754: 00000000 .word 0x00000000 + +0002d758 : + 2d758: b510 push {r4, lr} + 2d75a: b082 sub sp, #8 + 2d75c: ed8d 0b00 vstr d0, [sp] + 2d760: 9901 ldr r1, [sp, #4] + 2d762: 9800 ldr r0, [sp, #0] + 2d764: f3c1 520a ubfx r2, r1, #20, #11 + 2d768: f2a2 33ff subw r3, r2, #1023 ; 0x3ff + 2d76c: 2b13 cmp r3, #19 + 2d76e: 4684 mov ip, r0 + 2d770: dc31 bgt.n 2d7d6 + 2d772: 2b00 cmp r3, #0 + 2d774: db21 blt.n 2d7ba + 2d776: 4a3a ldr r2, [pc, #232] ; (2d860 ) + 2d778: 411a asrs r2, r3 + 2d77a: ea01 0402 and.w r4, r1, r2 + 2d77e: 4304 orrs r4, r0 + 2d780: 468e mov lr, r1 + 2d782: d02d beq.n 2d7e0 + 2d784: ed9f 7b34 vldr d7, [pc, #208] ; 2d858 + 2d788: ed9d 6b00 vldr d6, [sp] + 2d78c: ee36 7b07 vadd.f64 d7, d6, d7 + 2d790: eeb5 7bc0 vcmpe.f64 d7, #0.0 + 2d794: eef1 fa10 vmrs APSR_nzcv, fpscr + 2d798: dd09 ble.n 2d7ae + 2d79a: 2900 cmp r1, #0 + 2d79c: da04 bge.n 2d7a8 + 2d79e: f44f 1180 mov.w r1, #1048576 ; 0x100000 + 2d7a2: fa41 f303 asr.w r3, r1, r3 + 2d7a6: 449e add lr, r3 + 2d7a8: ea2e 0102 bic.w r1, lr, r2 + 2d7ac: 2000 movs r0, #0 + 2d7ae: 460b mov r3, r1 + 2d7b0: 4602 mov r2, r0 + 2d7b2: ec43 2b10 vmov d0, r2, r3 + 2d7b6: b002 add sp, #8 + 2d7b8: bd10 pop {r4, pc} + 2d7ba: ed9f 7b27 vldr d7, [pc, #156] ; 2d858 + 2d7be: ee30 7b07 vadd.f64 d7, d0, d7 + 2d7c2: eeb5 7bc0 vcmpe.f64 d7, #0.0 + 2d7c6: eef1 fa10 vmrs APSR_nzcv, fpscr + 2d7ca: ddf0 ble.n 2d7ae + 2d7cc: 2900 cmp r1, #0 + 2d7ce: db28 blt.n 2d822 + 2d7d0: 2000 movs r0, #0 + 2d7d2: 4601 mov r1, r0 + 2d7d4: e7eb b.n 2d7ae + 2d7d6: 2b33 cmp r3, #51 ; 0x33 + 2d7d8: dd06 ble.n 2d7e8 + 2d7da: f5b3 6f80 cmp.w r3, #1024 ; 0x400 + 2d7de: d01b beq.n 2d818 + 2d7e0: ed9d 0b00 vldr d0, [sp] + 2d7e4: b002 add sp, #8 + 2d7e6: bd10 pop {r4, pc} + 2d7e8: f2a2 4213 subw r2, r2, #1043 ; 0x413 + 2d7ec: f04f 3eff mov.w lr, #4294967295 ; 0xffffffff + 2d7f0: fa2e f202 lsr.w r2, lr, r2 + 2d7f4: 4210 tst r0, r2 + 2d7f6: d0f3 beq.n 2d7e0 + 2d7f8: ed9f 7b17 vldr d7, [pc, #92] ; 2d858 + 2d7fc: ed9d 6b00 vldr d6, [sp] + 2d800: ee36 7b07 vadd.f64 d7, d6, d7 + 2d804: eeb5 7bc0 vcmpe.f64 d7, #0.0 + 2d808: eef1 fa10 vmrs APSR_nzcv, fpscr + 2d80c: ddcf ble.n 2d7ae + 2d80e: 2900 cmp r1, #0 + 2d810: db13 blt.n 2d83a + 2d812: ea2c 0002 bic.w r0, ip, r2 + 2d816: e7ca b.n 2d7ae + 2d818: ed9d 7b00 vldr d7, [sp] + 2d81c: ee37 0b07 vadd.f64 d0, d7, d7 + 2d820: e7e0 b.n 2d7e4 + 2d822: f021 4100 bic.w r1, r1, #2147483648 ; 0x80000000 + 2d826: 4301 orrs r1, r0 + 2d828: 4b0e ldr r3, [pc, #56] ; (2d864 ) + 2d82a: 2900 cmp r1, #0 + 2d82c: f04f 0000 mov.w r0, #0 + 2d830: bf0c ite eq + 2d832: f04f 4100 moveq.w r1, #2147483648 ; 0x80000000 + 2d836: 4619 movne r1, r3 + 2d838: e7b9 b.n 2d7ae + 2d83a: 2b14 cmp r3, #20 + 2d83c: d009 beq.n 2d852 + 2d83e: 2401 movs r4, #1 + 2d840: f1c3 0334 rsb r3, r3, #52 ; 0x34 + 2d844: fa04 f303 lsl.w r3, r4, r3 + 2d848: 449c add ip, r3 + 2d84a: 4560 cmp r0, ip + 2d84c: bf88 it hi + 2d84e: 1909 addhi r1, r1, r4 + 2d850: e7df b.n 2d812 + 2d852: 3101 adds r1, #1 + 2d854: e7dd b.n 2d812 + 2d856: bf00 nop + 2d858: 8800759c .word 0x8800759c + 2d85c: 7e37e43c .word 0x7e37e43c + 2d860: 000fffff .word 0x000fffff + 2d864: bff00000 .word 0xbff00000 + +0002d868 <__aeabi_atexit>: + 2d868: 4603 mov r3, r0 + 2d86a: 4608 mov r0, r1 + 2d86c: 4619 mov r1, r3 + 2d86e: f000 bf4f b.w 2e710 <__cxa_atexit> + 2d872: bf00 nop + +0002d874 <_calloc_r>: + 2d874: b538 push {r3, r4, r5, lr} + 2d876: fba1 1402 umull r1, r4, r1, r2 + 2d87a: bb8c cbnz r4, 2d8e0 <_calloc_r+0x6c> + 2d87c: f000 f846 bl 2d90c <_malloc_r> + 2d880: 4605 mov r5, r0 + 2d882: b1e0 cbz r0, 2d8be <_calloc_r+0x4a> + 2d884: f850 2c04 ldr.w r2, [r0, #-4] + 2d888: f022 0203 bic.w r2, r2, #3 + 2d88c: 3a04 subs r2, #4 + 2d88e: 2a24 cmp r2, #36 ; 0x24 + 2d890: d817 bhi.n 2d8c2 <_calloc_r+0x4e> + 2d892: 2a13 cmp r2, #19 + 2d894: d91a bls.n 2d8cc <_calloc_r+0x58> + 2d896: 2a1b cmp r2, #27 + 2d898: e9c0 4400 strd r4, r4, [r0] + 2d89c: d91d bls.n 2d8da <_calloc_r+0x66> + 2d89e: 2a24 cmp r2, #36 ; 0x24 + 2d8a0: bf14 ite ne + 2d8a2: f100 0210 addne.w r2, r0, #16 + 2d8a6: f100 0218 addeq.w r2, r0, #24 + 2d8aa: f04f 0300 mov.w r3, #0 + 2d8ae: e9c0 4402 strd r4, r4, [r0, #8] + 2d8b2: bf04 itt eq + 2d8b4: 6104 streq r4, [r0, #16] + 2d8b6: 6144 streq r4, [r0, #20] + 2d8b8: e9c2 3300 strd r3, r3, [r2] + 2d8bc: 6093 str r3, [r2, #8] + 2d8be: 4628 mov r0, r5 + 2d8c0: bd38 pop {r3, r4, r5, pc} + 2d8c2: 4621 mov r1, r4 + 2d8c4: f000 fe56 bl 2e574 + 2d8c8: 4628 mov r0, r5 + 2d8ca: bd38 pop {r3, r4, r5, pc} + 2d8cc: 4602 mov r2, r0 + 2d8ce: 2300 movs r3, #0 + 2d8d0: e9c2 3300 strd r3, r3, [r2] + 2d8d4: 6093 str r3, [r2, #8] + 2d8d6: 4628 mov r0, r5 + 2d8d8: bd38 pop {r3, r4, r5, pc} + 2d8da: f100 0208 add.w r2, r0, #8 + 2d8de: e7f6 b.n 2d8ce <_calloc_r+0x5a> + 2d8e0: f000 ff44 bl 2e76c <__errno> + 2d8e4: 230c movs r3, #12 + 2d8e6: 2500 movs r5, #0 + 2d8e8: 6003 str r3, [r0, #0] + 2d8ea: e7e8 b.n 2d8be <_calloc_r+0x4a> + +0002d8ec : + 2d8ec: 4b02 ldr r3, [pc, #8] ; (2d8f8 ) + 2d8ee: 4601 mov r1, r0 + 2d8f0: 6818 ldr r0, [r3, #0] + 2d8f2: f000 b80b b.w 2d90c <_malloc_r> + 2d8f6: bf00 nop + 2d8f8: 20005270 .word 0x20005270 + +0002d8fc : + 2d8fc: 4b02 ldr r3, [pc, #8] ; (2d908 ) + 2d8fe: 4601 mov r1, r0 + 2d900: 6818 ldr r0, [r3, #0] + 2d902: f001 ba9f b.w 2ee44 <_free_r> + 2d906: bf00 nop + 2d908: 20005270 .word 0x20005270 + +0002d90c <_malloc_r>: + 2d90c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2d910: f101 060b add.w r6, r1, #11 + 2d914: 2e16 cmp r6, #22 + 2d916: b083 sub sp, #12 + 2d918: 4604 mov r4, r0 + 2d91a: d824 bhi.n 2d966 <_malloc_r+0x5a> + 2d91c: 2910 cmp r1, #16 + 2d91e: f200 80ba bhi.w 2da96 <_malloc_r+0x18a> + 2d922: f000 faa3 bl 2de6c <__malloc_lock> + 2d926: 2610 movs r6, #16 + 2d928: 2218 movs r2, #24 + 2d92a: 2002 movs r0, #2 + 2d92c: 4fb5 ldr r7, [pc, #724] ; (2dc04 <_malloc_r+0x2f8>) + 2d92e: 443a add r2, r7 + 2d930: f1a2 0108 sub.w r1, r2, #8 + 2d934: 6853 ldr r3, [r2, #4] + 2d936: 428b cmp r3, r1 + 2d938: f000 80ba beq.w 2dab0 <_malloc_r+0x1a4> + 2d93c: 685a ldr r2, [r3, #4] + 2d93e: 68d9 ldr r1, [r3, #12] + 2d940: f022 0203 bic.w r2, r2, #3 + 2d944: 441a add r2, r3 + 2d946: 689d ldr r5, [r3, #8] + 2d948: 60e9 str r1, [r5, #12] + 2d94a: 608d str r5, [r1, #8] + 2d94c: 6851 ldr r1, [r2, #4] + 2d94e: f041 0101 orr.w r1, r1, #1 + 2d952: 4620 mov r0, r4 + 2d954: 6051 str r1, [r2, #4] + 2d956: f103 0508 add.w r5, r3, #8 + 2d95a: f000 fa8d bl 2de78 <__malloc_unlock> + 2d95e: 4628 mov r0, r5 + 2d960: b003 add sp, #12 + 2d962: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2d966: f036 0607 bics.w r6, r6, #7 + 2d96a: f100 8094 bmi.w 2da96 <_malloc_r+0x18a> + 2d96e: 42b1 cmp r1, r6 + 2d970: f200 8091 bhi.w 2da96 <_malloc_r+0x18a> + 2d974: f000 fa7a bl 2de6c <__malloc_lock> + 2d978: f5b6 7ffc cmp.w r6, #504 ; 0x1f8 + 2d97c: f0c0 819a bcc.w 2dcb4 <_malloc_r+0x3a8> + 2d980: 0a73 lsrs r3, r6, #9 + 2d982: f000 808f beq.w 2daa4 <_malloc_r+0x198> + 2d986: 2b04 cmp r3, #4 + 2d988: f200 816f bhi.w 2dc6a <_malloc_r+0x35e> + 2d98c: 09b3 lsrs r3, r6, #6 + 2d98e: f103 0039 add.w r0, r3, #57 ; 0x39 + 2d992: f103 0c38 add.w ip, r3, #56 ; 0x38 + 2d996: 00c3 lsls r3, r0, #3 + 2d998: 4f9a ldr r7, [pc, #616] ; (2dc04 <_malloc_r+0x2f8>) + 2d99a: 443b add r3, r7 + 2d99c: f1a3 0508 sub.w r5, r3, #8 + 2d9a0: 685b ldr r3, [r3, #4] + 2d9a2: 429d cmp r5, r3 + 2d9a4: d106 bne.n 2d9b4 <_malloc_r+0xa8> + 2d9a6: e00c b.n 2d9c2 <_malloc_r+0xb6> + 2d9a8: 2900 cmp r1, #0 + 2d9aa: f280 8127 bge.w 2dbfc <_malloc_r+0x2f0> + 2d9ae: 68db ldr r3, [r3, #12] + 2d9b0: 429d cmp r5, r3 + 2d9b2: d006 beq.n 2d9c2 <_malloc_r+0xb6> + 2d9b4: 685a ldr r2, [r3, #4] + 2d9b6: f022 0203 bic.w r2, r2, #3 + 2d9ba: 1b91 subs r1, r2, r6 + 2d9bc: 290f cmp r1, #15 + 2d9be: ddf3 ble.n 2d9a8 <_malloc_r+0x9c> + 2d9c0: 4660 mov r0, ip + 2d9c2: 693d ldr r5, [r7, #16] + 2d9c4: f8df c250 ldr.w ip, [pc, #592] ; 2dc18 <_malloc_r+0x30c> + 2d9c8: 4565 cmp r5, ip + 2d9ca: d07c beq.n 2dac6 <_malloc_r+0x1ba> + 2d9cc: 686a ldr r2, [r5, #4] + 2d9ce: f022 0203 bic.w r2, r2, #3 + 2d9d2: 1b93 subs r3, r2, r6 + 2d9d4: 2b0f cmp r3, #15 + 2d9d6: f300 817b bgt.w 2dcd0 <_malloc_r+0x3c4> + 2d9da: 2b00 cmp r3, #0 + 2d9dc: e9c7 cc04 strd ip, ip, [r7, #16] + 2d9e0: f280 816c bge.w 2dcbc <_malloc_r+0x3b0> + 2d9e4: f5b2 7f00 cmp.w r2, #512 ; 0x200 + 2d9e8: f080 811a bcs.w 2dc20 <_malloc_r+0x314> + 2d9ec: 08d3 lsrs r3, r2, #3 + 2d9ee: 6879 ldr r1, [r7, #4] + 2d9f0: 3301 adds r3, #1 + 2d9f2: ea4f 1e52 mov.w lr, r2, lsr #5 + 2d9f6: 2201 movs r2, #1 + 2d9f8: fa02 f20e lsl.w r2, r2, lr + 2d9fc: 430a orrs r2, r1 + 2d9fe: f857 e033 ldr.w lr, [r7, r3, lsl #3] + 2da02: f8c5 e008 str.w lr, [r5, #8] + 2da06: eb07 01c3 add.w r1, r7, r3, lsl #3 + 2da0a: 3908 subs r1, #8 + 2da0c: 60e9 str r1, [r5, #12] + 2da0e: 607a str r2, [r7, #4] + 2da10: f847 5033 str.w r5, [r7, r3, lsl #3] + 2da14: f8ce 500c str.w r5, [lr, #12] + 2da18: 1083 asrs r3, r0, #2 + 2da1a: 2101 movs r1, #1 + 2da1c: 4099 lsls r1, r3 + 2da1e: 4291 cmp r1, r2 + 2da20: d857 bhi.n 2dad2 <_malloc_r+0x1c6> + 2da22: 4211 tst r1, r2 + 2da24: d106 bne.n 2da34 <_malloc_r+0x128> + 2da26: f020 0003 bic.w r0, r0, #3 + 2da2a: 0049 lsls r1, r1, #1 + 2da2c: 4211 tst r1, r2 + 2da2e: f100 0004 add.w r0, r0, #4 + 2da32: d0fa beq.n 2da2a <_malloc_r+0x11e> + 2da34: eb07 09c0 add.w r9, r7, r0, lsl #3 + 2da38: 464d mov r5, r9 + 2da3a: 4686 mov lr, r0 + 2da3c: f8d5 800c ldr.w r8, [r5, #12] + 2da40: 4545 cmp r5, r8 + 2da42: d108 bne.n 2da56 <_malloc_r+0x14a> + 2da44: e11d b.n 2dc82 <_malloc_r+0x376> + 2da46: 2b00 cmp r3, #0 + 2da48: f280 8124 bge.w 2dc94 <_malloc_r+0x388> + 2da4c: f8d8 800c ldr.w r8, [r8, #12] + 2da50: 4545 cmp r5, r8 + 2da52: f000 8116 beq.w 2dc82 <_malloc_r+0x376> + 2da56: f8d8 2004 ldr.w r2, [r8, #4] + 2da5a: f022 0203 bic.w r2, r2, #3 + 2da5e: 1b93 subs r3, r2, r6 + 2da60: 2b0f cmp r3, #15 + 2da62: ddf0 ble.n 2da46 <_malloc_r+0x13a> + 2da64: 4620 mov r0, r4 + 2da66: e9d8 5402 ldrd r5, r4, [r8, #8] + 2da6a: eb08 0106 add.w r1, r8, r6 + 2da6e: f046 0601 orr.w r6, r6, #1 + 2da72: f8c8 6004 str.w r6, [r8, #4] + 2da76: 60ec str r4, [r5, #12] + 2da78: 60a5 str r5, [r4, #8] + 2da7a: f043 0401 orr.w r4, r3, #1 + 2da7e: e9c7 1104 strd r1, r1, [r7, #16] + 2da82: e9c1 cc02 strd ip, ip, [r1, #8] + 2da86: 604c str r4, [r1, #4] + 2da88: f848 3002 str.w r3, [r8, r2] + 2da8c: f000 f9f4 bl 2de78 <__malloc_unlock> + 2da90: f108 0508 add.w r5, r8, #8 + 2da94: e002 b.n 2da9c <_malloc_r+0x190> + 2da96: 230c movs r3, #12 + 2da98: 6023 str r3, [r4, #0] + 2da9a: 2500 movs r5, #0 + 2da9c: 4628 mov r0, r5 + 2da9e: b003 add sp, #12 + 2daa0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2daa4: f44f 7300 mov.w r3, #512 ; 0x200 + 2daa8: 2040 movs r0, #64 ; 0x40 + 2daaa: f04f 0c3f mov.w ip, #63 ; 0x3f + 2daae: e773 b.n 2d998 <_malloc_r+0x8c> + 2dab0: 68d3 ldr r3, [r2, #12] + 2dab2: 429a cmp r2, r3 + 2dab4: bf08 it eq + 2dab6: 3002 addeq r0, #2 + 2dab8: f47f af40 bne.w 2d93c <_malloc_r+0x30> + 2dabc: 693d ldr r5, [r7, #16] + 2dabe: f8df c158 ldr.w ip, [pc, #344] ; 2dc18 <_malloc_r+0x30c> + 2dac2: 4565 cmp r5, ip + 2dac4: d182 bne.n 2d9cc <_malloc_r+0xc0> + 2dac6: 687a ldr r2, [r7, #4] + 2dac8: 1083 asrs r3, r0, #2 + 2daca: 2101 movs r1, #1 + 2dacc: 4099 lsls r1, r3 + 2dace: 4291 cmp r1, r2 + 2dad0: d9a7 bls.n 2da22 <_malloc_r+0x116> + 2dad2: 68bd ldr r5, [r7, #8] + 2dad4: 686b ldr r3, [r5, #4] + 2dad6: f023 0903 bic.w r9, r3, #3 + 2dada: 454e cmp r6, r9 + 2dadc: d803 bhi.n 2dae6 <_malloc_r+0x1da> + 2dade: eba9 0306 sub.w r3, r9, r6 + 2dae2: 2b0f cmp r3, #15 + 2dae4: dc7a bgt.n 2dbdc <_malloc_r+0x2d0> + 2dae6: f8df b134 ldr.w fp, [pc, #308] ; 2dc1c <_malloc_r+0x310> + 2daea: 4b47 ldr r3, [pc, #284] ; (2dc08 <_malloc_r+0x2fc>) + 2daec: f8db 2000 ldr.w r2, [fp] + 2daf0: 681b ldr r3, [r3, #0] + 2daf2: 3201 adds r2, #1 + 2daf4: 4433 add r3, r6 + 2daf6: eb05 0a09 add.w sl, r5, r9 + 2dafa: f000 8133 beq.w 2dd64 <_malloc_r+0x458> + 2dafe: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 2db02: 330f adds r3, #15 + 2db04: f423 687f bic.w r8, r3, #4080 ; 0xff0 + 2db08: f028 080f bic.w r8, r8, #15 + 2db0c: 4641 mov r1, r8 + 2db0e: 4620 mov r0, r4 + 2db10: f000 fe04 bl 2e71c <_sbrk_r> + 2db14: 1c41 adds r1, r0, #1 + 2db16: 4602 mov r2, r0 + 2db18: f000 80f3 beq.w 2dd02 <_malloc_r+0x3f6> + 2db1c: 4582 cmp sl, r0 + 2db1e: f200 80ee bhi.w 2dcfe <_malloc_r+0x3f2> + 2db22: 4b3a ldr r3, [pc, #232] ; (2dc0c <_malloc_r+0x300>) + 2db24: 6819 ldr r1, [r3, #0] + 2db26: 4441 add r1, r8 + 2db28: 6019 str r1, [r3, #0] + 2db2a: 4608 mov r0, r1 + 2db2c: f000 814e beq.w 2ddcc <_malloc_r+0x4c0> + 2db30: f8db 1000 ldr.w r1, [fp] + 2db34: 9301 str r3, [sp, #4] + 2db36: 3101 adds r1, #1 + 2db38: bf1b ittet ne + 2db3a: eba2 010a subne.w r1, r2, sl + 2db3e: 1809 addne r1, r1, r0 + 2db40: f8cb 2000 streq.w r2, [fp] + 2db44: 6019 strne r1, [r3, #0] + 2db46: f012 0b07 ands.w fp, r2, #7 + 2db4a: f000 8117 beq.w 2dd7c <_malloc_r+0x470> + 2db4e: f1cb 0108 rsb r1, fp, #8 + 2db52: 440a add r2, r1 + 2db54: f5cb 5180 rsb r1, fp, #4096 ; 0x1000 + 2db58: 4490 add r8, r2 + 2db5a: 3108 adds r1, #8 + 2db5c: eba1 0108 sub.w r1, r1, r8 + 2db60: f3c1 0a0b ubfx sl, r1, #0, #12 + 2db64: 4651 mov r1, sl + 2db66: 4620 mov r0, r4 + 2db68: 9200 str r2, [sp, #0] + 2db6a: f000 fdd7 bl 2e71c <_sbrk_r> + 2db6e: 1c42 adds r2, r0, #1 + 2db70: e9dd 2300 ldrd r2, r3, [sp] + 2db74: f000 814f beq.w 2de16 <_malloc_r+0x50a> + 2db78: 1a80 subs r0, r0, r2 + 2db7a: eb00 080a add.w r8, r0, sl + 2db7e: 6819 ldr r1, [r3, #0] + 2db80: 60ba str r2, [r7, #8] + 2db82: f048 0001 orr.w r0, r8, #1 + 2db86: 4451 add r1, sl + 2db88: 42bd cmp r5, r7 + 2db8a: 6050 str r0, [r2, #4] + 2db8c: 6019 str r1, [r3, #0] + 2db8e: f000 8129 beq.w 2dde4 <_malloc_r+0x4d8> + 2db92: f1b9 0f0f cmp.w r9, #15 + 2db96: f240 8127 bls.w 2dde8 <_malloc_r+0x4dc> + 2db9a: 6868 ldr r0, [r5, #4] + 2db9c: f1a9 0c0c sub.w ip, r9, #12 + 2dba0: f02c 0c07 bic.w ip, ip, #7 + 2dba4: f000 0001 and.w r0, r0, #1 + 2dba8: ea40 000c orr.w r0, r0, ip + 2dbac: 6068 str r0, [r5, #4] + 2dbae: f04f 0e05 mov.w lr, #5 + 2dbb2: eb05 000c add.w r0, r5, ip + 2dbb6: f1bc 0f0f cmp.w ip, #15 + 2dbba: e9c0 ee01 strd lr, lr, [r0, #4] + 2dbbe: f200 8132 bhi.w 2de26 <_malloc_r+0x51a> + 2dbc2: 6850 ldr r0, [r2, #4] + 2dbc4: 4615 mov r5, r2 + 2dbc6: 4b12 ldr r3, [pc, #72] ; (2dc10 <_malloc_r+0x304>) + 2dbc8: 681a ldr r2, [r3, #0] + 2dbca: 428a cmp r2, r1 + 2dbcc: bf38 it cc + 2dbce: 6019 strcc r1, [r3, #0] + 2dbd0: 4b10 ldr r3, [pc, #64] ; (2dc14 <_malloc_r+0x308>) + 2dbd2: 681a ldr r2, [r3, #0] + 2dbd4: 428a cmp r2, r1 + 2dbd6: bf38 it cc + 2dbd8: 6019 strcc r1, [r3, #0] + 2dbda: e094 b.n 2dd06 <_malloc_r+0x3fa> + 2dbdc: 19aa adds r2, r5, r6 + 2dbde: f043 0301 orr.w r3, r3, #1 + 2dbe2: f046 0601 orr.w r6, r6, #1 + 2dbe6: 606e str r6, [r5, #4] + 2dbe8: 4620 mov r0, r4 + 2dbea: 60ba str r2, [r7, #8] + 2dbec: 6053 str r3, [r2, #4] + 2dbee: f000 f943 bl 2de78 <__malloc_unlock> + 2dbf2: 3508 adds r5, #8 + 2dbf4: 4628 mov r0, r5 + 2dbf6: b003 add sp, #12 + 2dbf8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2dbfc: 68d9 ldr r1, [r3, #12] + 2dbfe: 441a add r2, r3 + 2dc00: e6a1 b.n 2d946 <_malloc_r+0x3a> + 2dc02: bf00 nop + 2dc04: 20004e54 .word 0x20004e54 + 2dc08: 2000b910 .word 0x2000b910 + 2dc0c: 2000b8e0 .word 0x2000b8e0 + 2dc10: 2000b908 .word 0x2000b908 + 2dc14: 2000b90c .word 0x2000b90c + 2dc18: 20004e5c .word 0x20004e5c + 2dc1c: 2000525c .word 0x2000525c + 2dc20: f5b2 6f20 cmp.w r2, #2560 ; 0xa00 + 2dc24: ea4f 2352 mov.w r3, r2, lsr #9 + 2dc28: d363 bcc.n 2dcf2 <_malloc_r+0x3e6> + 2dc2a: 2b14 cmp r3, #20 + 2dc2c: f200 80b7 bhi.w 2dd9e <_malloc_r+0x492> + 2dc30: f103 015c add.w r1, r3, #92 ; 0x5c + 2dc34: 00c9 lsls r1, r1, #3 + 2dc36: 335b adds r3, #91 ; 0x5b + 2dc38: eb07 0e01 add.w lr, r7, r1 + 2dc3c: 5879 ldr r1, [r7, r1] + 2dc3e: f1ae 0e08 sub.w lr, lr, #8 + 2dc42: 458e cmp lr, r1 + 2dc44: f000 8091 beq.w 2dd6a <_malloc_r+0x45e> + 2dc48: 684b ldr r3, [r1, #4] + 2dc4a: f023 0303 bic.w r3, r3, #3 + 2dc4e: 4293 cmp r3, r2 + 2dc50: d902 bls.n 2dc58 <_malloc_r+0x34c> + 2dc52: 6889 ldr r1, [r1, #8] + 2dc54: 458e cmp lr, r1 + 2dc56: d1f7 bne.n 2dc48 <_malloc_r+0x33c> + 2dc58: f8d1 e00c ldr.w lr, [r1, #12] + 2dc5c: 687a ldr r2, [r7, #4] + 2dc5e: e9c5 1e02 strd r1, lr, [r5, #8] + 2dc62: f8ce 5008 str.w r5, [lr, #8] + 2dc66: 60cd str r5, [r1, #12] + 2dc68: e6d6 b.n 2da18 <_malloc_r+0x10c> + 2dc6a: 2b14 cmp r3, #20 + 2dc6c: d959 bls.n 2dd22 <_malloc_r+0x416> + 2dc6e: 2b54 cmp r3, #84 ; 0x54 + 2dc70: f200 809d bhi.w 2ddae <_malloc_r+0x4a2> + 2dc74: 0b33 lsrs r3, r6, #12 + 2dc76: f103 006f add.w r0, r3, #111 ; 0x6f + 2dc7a: f103 0c6e add.w ip, r3, #110 ; 0x6e + 2dc7e: 00c3 lsls r3, r0, #3 + 2dc80: e68a b.n 2d998 <_malloc_r+0x8c> + 2dc82: f10e 0e01 add.w lr, lr, #1 + 2dc86: f01e 0f03 tst.w lr, #3 + 2dc8a: f105 0508 add.w r5, r5, #8 + 2dc8e: f47f aed5 bne.w 2da3c <_malloc_r+0x130> + 2dc92: e051 b.n 2dd38 <_malloc_r+0x42c> + 2dc94: 4442 add r2, r8 + 2dc96: 4645 mov r5, r8 + 2dc98: 6853 ldr r3, [r2, #4] + 2dc9a: f8d8 100c ldr.w r1, [r8, #12] + 2dc9e: f043 0301 orr.w r3, r3, #1 + 2dca2: 6053 str r3, [r2, #4] + 2dca4: f855 3f08 ldr.w r3, [r5, #8]! + 2dca8: 4620 mov r0, r4 + 2dcaa: 60d9 str r1, [r3, #12] + 2dcac: 608b str r3, [r1, #8] + 2dcae: f000 f8e3 bl 2de78 <__malloc_unlock> + 2dcb2: e6f3 b.n 2da9c <_malloc_r+0x190> + 2dcb4: 08f0 lsrs r0, r6, #3 + 2dcb6: f106 0208 add.w r2, r6, #8 + 2dcba: e637 b.n 2d92c <_malloc_r+0x20> + 2dcbc: 442a add r2, r5 + 2dcbe: 4620 mov r0, r4 + 2dcc0: 6853 ldr r3, [r2, #4] + 2dcc2: f043 0301 orr.w r3, r3, #1 + 2dcc6: 6053 str r3, [r2, #4] + 2dcc8: 3508 adds r5, #8 + 2dcca: f000 f8d5 bl 2de78 <__malloc_unlock> + 2dcce: e6e5 b.n 2da9c <_malloc_r+0x190> + 2dcd0: 19a9 adds r1, r5, r6 + 2dcd2: 4620 mov r0, r4 + 2dcd4: f046 0601 orr.w r6, r6, #1 + 2dcd8: f043 0401 orr.w r4, r3, #1 + 2dcdc: 606e str r6, [r5, #4] + 2dcde: e9c7 1104 strd r1, r1, [r7, #16] + 2dce2: e9c1 cc02 strd ip, ip, [r1, #8] + 2dce6: 604c str r4, [r1, #4] + 2dce8: 50ab str r3, [r5, r2] + 2dcea: f000 f8c5 bl 2de78 <__malloc_unlock> + 2dcee: 3508 adds r5, #8 + 2dcf0: e6d4 b.n 2da9c <_malloc_r+0x190> + 2dcf2: 0993 lsrs r3, r2, #6 + 2dcf4: f103 0139 add.w r1, r3, #57 ; 0x39 + 2dcf8: 00c9 lsls r1, r1, #3 + 2dcfa: 3338 adds r3, #56 ; 0x38 + 2dcfc: e79c b.n 2dc38 <_malloc_r+0x32c> + 2dcfe: 42bd cmp r5, r7 + 2dd00: d05f beq.n 2ddc2 <_malloc_r+0x4b6> + 2dd02: 68bd ldr r5, [r7, #8] + 2dd04: 6868 ldr r0, [r5, #4] + 2dd06: f020 0803 bic.w r8, r0, #3 + 2dd0a: 4546 cmp r6, r8 + 2dd0c: eba8 0306 sub.w r3, r8, r6 + 2dd10: d802 bhi.n 2dd18 <_malloc_r+0x40c> + 2dd12: 2b0f cmp r3, #15 + 2dd14: f73f af62 bgt.w 2dbdc <_malloc_r+0x2d0> + 2dd18: 4620 mov r0, r4 + 2dd1a: f000 f8ad bl 2de78 <__malloc_unlock> + 2dd1e: 2500 movs r5, #0 + 2dd20: e6bc b.n 2da9c <_malloc_r+0x190> + 2dd22: f103 005c add.w r0, r3, #92 ; 0x5c + 2dd26: f103 0c5b add.w ip, r3, #91 ; 0x5b 2dd2a: 00c3 lsls r3, r0, #3 - 2dd2c: e5c0 b.n 2d8b0 <_malloc_r+0x8c> - 2dd2e: f1ab 0b08 sub.w fp, fp, #8 - 2dd32: 44d8 add r8, fp - 2dd34: eba8 0802 sub.w r8, r8, r2 - 2dd38: f04f 0a00 mov.w sl, #0 - 2dd3c: e6ab b.n 2da96 <_malloc_r+0x272> - 2dd3e: f105 0108 add.w r1, r5, #8 - 2dd42: 4620 mov r0, r4 - 2dd44: 9300 str r3, [sp, #0] - 2dd46: f000 fffd bl 2ed44 <_free_r> - 2dd4a: 68bd ldr r5, [r7, #8] - 2dd4c: 9b00 ldr r3, [sp, #0] - 2dd4e: 6868 ldr r0, [r5, #4] - 2dd50: 6819 ldr r1, [r3, #0] - 2dd52: e6c4 b.n 2dade <_malloc_r+0x2ba> - 2dd54: f240 5154 movw r1, #1364 ; 0x554 - 2dd58: 428b cmp r3, r1 - 2dd5a: d80b bhi.n 2dd74 <_malloc_r+0x550> - 2dd5c: 0c93 lsrs r3, r2, #18 - 2dd5e: f103 017d add.w r1, r3, #125 ; 0x7d - 2dd62: 00c9 lsls r1, r1, #3 - 2dd64: 337c adds r3, #124 ; 0x7c - 2dd66: e6f3 b.n 2db50 <_malloc_r+0x32c> - 2dd68: f44f 737e mov.w r3, #1016 ; 0x3f8 - 2dd6c: 207f movs r0, #127 ; 0x7f - 2dd6e: f04f 0c7e mov.w ip, #126 ; 0x7e - 2dd72: e59d b.n 2d8b0 <_malloc_r+0x8c> - 2dd74: f44f 717e mov.w r1, #1016 ; 0x3f8 - 2dd78: 237e movs r3, #126 ; 0x7e - 2dd7a: e6e9 b.n 2db50 <_malloc_r+0x32c> - 2dd7c: 687b ldr r3, [r7, #4] - 2dd7e: e770 b.n 2dc62 <_malloc_r+0x43e> - 2dd80: 2000b8c0 .word 0x2000b8c0 - -0002dd84 <__malloc_lock>: - 2dd84: 4801 ldr r0, [pc, #4] ; (2dd8c <__malloc_lock+0x8>) - 2dd86: f000 be7f b.w 2ea88 <__retarget_lock_acquire_recursive> - 2dd8a: bf00 nop - 2dd8c: 2000b8b8 .word 0x2000b8b8 - -0002dd90 <__malloc_unlock>: - 2dd90: 4801 ldr r0, [pc, #4] ; (2dd98 <__malloc_unlock+0x8>) - 2dd92: f000 be7b b.w 2ea8c <__retarget_lock_release_recursive> - 2dd96: bf00 nop - 2dd98: 2000b8b8 .word 0x2000b8b8 - -0002dd9c : - 2dd9c: b410 push {r4} - 2dd9e: 4c04 ldr r4, [pc, #16] ; (2ddb0 ) - 2dda0: 4603 mov r3, r0 - 2dda2: 460a mov r2, r1 - 2dda4: 6820 ldr r0, [r4, #0] - 2dda6: f85d 4b04 ldr.w r4, [sp], #4 - 2ddaa: 4619 mov r1, r3 - 2ddac: f000 b802 b.w 2ddb4 <_realloc_r> - 2ddb0: 200051b0 .word 0x200051b0 - -0002ddb4 <_realloc_r>: - 2ddb4: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 2ddb8: 4617 mov r7, r2 - 2ddba: 2900 cmp r1, #0 - 2ddbc: f000 8098 beq.w 2def0 <_realloc_r+0x13c> - 2ddc0: 460c mov r4, r1 - 2ddc2: f107 050b add.w r5, r7, #11 - 2ddc6: 4680 mov r8, r0 - 2ddc8: f7ff ffdc bl 2dd84 <__malloc_lock> - 2ddcc: 2d16 cmp r5, #22 - 2ddce: f854 1c04 ldr.w r1, [r4, #-4] - 2ddd2: d85b bhi.n 2de8c <_realloc_r+0xd8> - 2ddd4: 2510 movs r5, #16 - 2ddd6: 462a mov r2, r5 - 2ddd8: 42af cmp r7, r5 - 2ddda: d85c bhi.n 2de96 <_realloc_r+0xe2> - 2dddc: f021 0603 bic.w r6, r1, #3 - 2dde0: 4296 cmp r6, r2 - 2dde2: f1a4 0908 sub.w r9, r4, #8 - 2dde6: da62 bge.n 2deae <_realloc_r+0xfa> - 2dde8: 4bbc ldr r3, [pc, #752] ; (2e0dc <_realloc_r+0x328>) - 2ddea: f8d3 c008 ldr.w ip, [r3, #8] - 2ddee: eb09 0006 add.w r0, r9, r6 - 2ddf2: 4584 cmp ip, r0 - 2ddf4: f000 8097 beq.w 2df26 <_realloc_r+0x172> - 2ddf8: f8d0 c004 ldr.w ip, [r0, #4] - 2ddfc: f02c 0301 bic.w r3, ip, #1 - 2de00: 4403 add r3, r0 - 2de02: 685b ldr r3, [r3, #4] - 2de04: 07db lsls r3, r3, #31 - 2de06: d468 bmi.n 2deda <_realloc_r+0x126> - 2de08: f02c 0c03 bic.w ip, ip, #3 - 2de0c: eb06 030c add.w r3, r6, ip - 2de10: 4293 cmp r3, r2 - 2de12: da47 bge.n 2dea4 <_realloc_r+0xf0> - 2de14: 07cb lsls r3, r1, #31 - 2de16: d410 bmi.n 2de3a <_realloc_r+0x86> - 2de18: f854 3c08 ldr.w r3, [r4, #-8] - 2de1c: eba9 0a03 sub.w sl, r9, r3 - 2de20: f8da 3004 ldr.w r3, [sl, #4] - 2de24: f023 0103 bic.w r1, r3, #3 - 2de28: 448c add ip, r1 - 2de2a: 44b4 add ip, r6 - 2de2c: 4594 cmp ip, r2 - 2de2e: f280 8111 bge.w 2e054 <_realloc_r+0x2a0> - 2de32: 1873 adds r3, r6, r1 - 2de34: 4293 cmp r3, r2 - 2de36: f280 80e8 bge.w 2e00a <_realloc_r+0x256> - 2de3a: 4639 mov r1, r7 - 2de3c: 4640 mov r0, r8 - 2de3e: f7ff fcf1 bl 2d824 <_malloc_r> - 2de42: 4607 mov r7, r0 - 2de44: b1e0 cbz r0, 2de80 <_realloc_r+0xcc> - 2de46: f854 3c04 ldr.w r3, [r4, #-4] - 2de4a: f023 0301 bic.w r3, r3, #1 - 2de4e: 444b add r3, r9 - 2de50: f1a0 0208 sub.w r2, r0, #8 - 2de54: 4293 cmp r3, r2 - 2de56: f000 80d2 beq.w 2dffe <_realloc_r+0x24a> - 2de5a: 1f32 subs r2, r6, #4 - 2de5c: 2a24 cmp r2, #36 ; 0x24 - 2de5e: f200 80f5 bhi.w 2e04c <_realloc_r+0x298> - 2de62: 2a13 cmp r2, #19 - 2de64: f200 80ac bhi.w 2dfc0 <_realloc_r+0x20c> - 2de68: 4603 mov r3, r0 - 2de6a: 4622 mov r2, r4 - 2de6c: 6811 ldr r1, [r2, #0] - 2de6e: 6019 str r1, [r3, #0] - 2de70: 6851 ldr r1, [r2, #4] - 2de72: 6059 str r1, [r3, #4] - 2de74: 6892 ldr r2, [r2, #8] - 2de76: 609a str r2, [r3, #8] - 2de78: 4621 mov r1, r4 - 2de7a: 4640 mov r0, r8 - 2de7c: f000 ff62 bl 2ed44 <_free_r> - 2de80: 4640 mov r0, r8 - 2de82: f7ff ff85 bl 2dd90 <__malloc_unlock> - 2de86: 4638 mov r0, r7 - 2de88: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 2de8c: f025 0507 bic.w r5, r5, #7 - 2de90: 2d00 cmp r5, #0 - 2de92: 462a mov r2, r5 - 2de94: daa0 bge.n 2ddd8 <_realloc_r+0x24> - 2de96: 230c movs r3, #12 - 2de98: f8c8 3000 str.w r3, [r8] - 2de9c: 2700 movs r7, #0 - 2de9e: 4638 mov r0, r7 - 2dea0: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 2dea4: 461e mov r6, r3 - 2dea6: e9d0 2302 ldrd r2, r3, [r0, #8] - 2deaa: 60d3 str r3, [r2, #12] - 2deac: 609a str r2, [r3, #8] - 2deae: 1b73 subs r3, r6, r5 - 2deb0: 2b0f cmp r3, #15 - 2deb2: d822 bhi.n 2defa <_realloc_r+0x146> - 2deb4: f8d9 3004 ldr.w r3, [r9, #4] - 2deb8: f003 0301 and.w r3, r3, #1 - 2debc: 4333 orrs r3, r6 - 2debe: 444e add r6, r9 - 2dec0: f8c9 3004 str.w r3, [r9, #4] - 2dec4: 6873 ldr r3, [r6, #4] - 2dec6: f043 0301 orr.w r3, r3, #1 - 2deca: 6073 str r3, [r6, #4] - 2decc: 4640 mov r0, r8 - 2dece: 4627 mov r7, r4 - 2ded0: f7ff ff5e bl 2dd90 <__malloc_unlock> - 2ded4: 4638 mov r0, r7 - 2ded6: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 2deda: 07c9 lsls r1, r1, #31 - 2dedc: d4ad bmi.n 2de3a <_realloc_r+0x86> - 2dede: f854 3c08 ldr.w r3, [r4, #-8] - 2dee2: eba9 0a03 sub.w sl, r9, r3 - 2dee6: f8da 1004 ldr.w r1, [sl, #4] - 2deea: f021 0103 bic.w r1, r1, #3 - 2deee: e7a0 b.n 2de32 <_realloc_r+0x7e> - 2def0: e8bd 4ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 2def4: 4611 mov r1, r2 - 2def6: f7ff bc95 b.w 2d824 <_malloc_r> - 2defa: f8d9 2004 ldr.w r2, [r9, #4] - 2defe: eb09 0105 add.w r1, r9, r5 - 2df02: f002 0201 and.w r2, r2, #1 - 2df06: 444e add r6, r9 - 2df08: f043 0301 orr.w r3, r3, #1 - 2df0c: 432a orrs r2, r5 - 2df0e: f8c9 2004 str.w r2, [r9, #4] - 2df12: 604b str r3, [r1, #4] - 2df14: 6873 ldr r3, [r6, #4] - 2df16: f043 0301 orr.w r3, r3, #1 - 2df1a: 3108 adds r1, #8 - 2df1c: 6073 str r3, [r6, #4] - 2df1e: 4640 mov r0, r8 - 2df20: f000 ff10 bl 2ed44 <_free_r> - 2df24: e7d2 b.n 2decc <_realloc_r+0x118> - 2df26: f8dc 0004 ldr.w r0, [ip, #4] - 2df2a: f020 0b03 bic.w fp, r0, #3 - 2df2e: eb06 0c0b add.w ip, r6, fp - 2df32: f105 0010 add.w r0, r5, #16 - 2df36: 4584 cmp ip, r0 - 2df38: da4d bge.n 2dfd6 <_realloc_r+0x222> - 2df3a: 07c9 lsls r1, r1, #31 - 2df3c: f53f af7d bmi.w 2de3a <_realloc_r+0x86> - 2df40: f854 1c08 ldr.w r1, [r4, #-8] - 2df44: eba9 0a01 sub.w sl, r9, r1 - 2df48: f8da 1004 ldr.w r1, [sl, #4] - 2df4c: f021 0103 bic.w r1, r1, #3 - 2df50: 448b add fp, r1 - 2df52: 44b3 add fp, r6 - 2df54: 4558 cmp r0, fp - 2df56: f73f af6c bgt.w 2de32 <_realloc_r+0x7e> - 2df5a: 4657 mov r7, sl - 2df5c: f8da 100c ldr.w r1, [sl, #12] - 2df60: f857 0f08 ldr.w r0, [r7, #8]! - 2df64: 1f32 subs r2, r6, #4 - 2df66: 2a24 cmp r2, #36 ; 0x24 - 2df68: 60c1 str r1, [r0, #12] - 2df6a: 6088 str r0, [r1, #8] - 2df6c: f200 80db bhi.w 2e126 <_realloc_r+0x372> - 2df70: 2a13 cmp r2, #19 - 2df72: f240 80d6 bls.w 2e122 <_realloc_r+0x36e> - 2df76: 6821 ldr r1, [r4, #0] - 2df78: f8ca 1008 str.w r1, [sl, #8] - 2df7c: 6861 ldr r1, [r4, #4] - 2df7e: f8ca 100c str.w r1, [sl, #12] - 2df82: 2a1b cmp r2, #27 - 2df84: f200 80df bhi.w 2e146 <_realloc_r+0x392> - 2df88: 3408 adds r4, #8 - 2df8a: f10a 0210 add.w r2, sl, #16 - 2df8e: 6821 ldr r1, [r4, #0] - 2df90: 6011 str r1, [r2, #0] - 2df92: 6861 ldr r1, [r4, #4] - 2df94: 6051 str r1, [r2, #4] - 2df96: 68a1 ldr r1, [r4, #8] - 2df98: 6091 str r1, [r2, #8] - 2df9a: eb0a 0105 add.w r1, sl, r5 - 2df9e: ebab 0205 sub.w r2, fp, r5 - 2dfa2: f042 0201 orr.w r2, r2, #1 - 2dfa6: 6099 str r1, [r3, #8] - 2dfa8: 604a str r2, [r1, #4] - 2dfaa: f8da 3004 ldr.w r3, [sl, #4] - 2dfae: f003 0301 and.w r3, r3, #1 - 2dfb2: 432b orrs r3, r5 + 2dd2c: e634 b.n 2d998 <_malloc_r+0x8c> + 2dd2e: f859 3908 ldr.w r3, [r9], #-8 + 2dd32: 454b cmp r3, r9 + 2dd34: f040 8096 bne.w 2de64 <_malloc_r+0x558> + 2dd38: f010 0f03 tst.w r0, #3 + 2dd3c: f100 30ff add.w r0, r0, #4294967295 ; 0xffffffff + 2dd40: d1f5 bne.n 2dd2e <_malloc_r+0x422> + 2dd42: 687b ldr r3, [r7, #4] + 2dd44: ea23 0301 bic.w r3, r3, r1 + 2dd48: 607b str r3, [r7, #4] + 2dd4a: 0049 lsls r1, r1, #1 + 2dd4c: 4299 cmp r1, r3 + 2dd4e: f63f aec0 bhi.w 2dad2 <_malloc_r+0x1c6> + 2dd52: b919 cbnz r1, 2dd5c <_malloc_r+0x450> + 2dd54: e6bd b.n 2dad2 <_malloc_r+0x1c6> + 2dd56: 0049 lsls r1, r1, #1 + 2dd58: f10e 0e04 add.w lr, lr, #4 + 2dd5c: 4219 tst r1, r3 + 2dd5e: d0fa beq.n 2dd56 <_malloc_r+0x44a> + 2dd60: 4670 mov r0, lr + 2dd62: e667 b.n 2da34 <_malloc_r+0x128> + 2dd64: f103 0810 add.w r8, r3, #16 + 2dd68: e6d0 b.n 2db0c <_malloc_r+0x200> + 2dd6a: 109a asrs r2, r3, #2 + 2dd6c: f04f 0801 mov.w r8, #1 + 2dd70: 687b ldr r3, [r7, #4] + 2dd72: fa08 f202 lsl.w r2, r8, r2 + 2dd76: 431a orrs r2, r3 + 2dd78: 607a str r2, [r7, #4] + 2dd7a: e770 b.n 2dc5e <_malloc_r+0x352> + 2dd7c: eb02 0108 add.w r1, r2, r8 + 2dd80: 4249 negs r1, r1 + 2dd82: f3c1 0a0b ubfx sl, r1, #0, #12 + 2dd86: 4651 mov r1, sl + 2dd88: 4620 mov r0, r4 + 2dd8a: 9200 str r2, [sp, #0] + 2dd8c: f000 fcc6 bl 2e71c <_sbrk_r> + 2dd90: 1c43 adds r3, r0, #1 + 2dd92: e9dd 2300 ldrd r2, r3, [sp] + 2dd96: f47f aeef bne.w 2db78 <_malloc_r+0x26c> + 2dd9a: 46da mov sl, fp + 2dd9c: e6ef b.n 2db7e <_malloc_r+0x272> + 2dd9e: 2b54 cmp r3, #84 ; 0x54 + 2dda0: d825 bhi.n 2ddee <_malloc_r+0x4e2> + 2dda2: 0b13 lsrs r3, r2, #12 + 2dda4: f103 016f add.w r1, r3, #111 ; 0x6f + 2dda8: 00c9 lsls r1, r1, #3 + 2ddaa: 336e adds r3, #110 ; 0x6e + 2ddac: e744 b.n 2dc38 <_malloc_r+0x32c> + 2ddae: f5b3 7faa cmp.w r3, #340 ; 0x154 + 2ddb2: d825 bhi.n 2de00 <_malloc_r+0x4f4> + 2ddb4: 0bf3 lsrs r3, r6, #15 + 2ddb6: f103 0078 add.w r0, r3, #120 ; 0x78 + 2ddba: f103 0c77 add.w ip, r3, #119 ; 0x77 + 2ddbe: 00c3 lsls r3, r0, #3 + 2ddc0: e5ea b.n 2d998 <_malloc_r+0x8c> + 2ddc2: 4b29 ldr r3, [pc, #164] ; (2de68 <_malloc_r+0x55c>) + 2ddc4: 6818 ldr r0, [r3, #0] + 2ddc6: 4440 add r0, r8 + 2ddc8: 6018 str r0, [r3, #0] + 2ddca: e6b1 b.n 2db30 <_malloc_r+0x224> + 2ddcc: f3ca 0c0b ubfx ip, sl, #0, #12 + 2ddd0: f1bc 0f00 cmp.w ip, #0 + 2ddd4: f47f aeac bne.w 2db30 <_malloc_r+0x224> + 2ddd8: 68bd ldr r5, [r7, #8] + 2ddda: 44c8 add r8, r9 + 2dddc: f048 0001 orr.w r0, r8, #1 + 2dde0: 6068 str r0, [r5, #4] + 2dde2: e6f0 b.n 2dbc6 <_malloc_r+0x2ba> + 2dde4: 4615 mov r5, r2 + 2dde6: e6ee b.n 2dbc6 <_malloc_r+0x2ba> + 2dde8: 2301 movs r3, #1 + 2ddea: 6053 str r3, [r2, #4] + 2ddec: e794 b.n 2dd18 <_malloc_r+0x40c> + 2ddee: f5b3 7faa cmp.w r3, #340 ; 0x154 + 2ddf2: d823 bhi.n 2de3c <_malloc_r+0x530> + 2ddf4: 0bd3 lsrs r3, r2, #15 + 2ddf6: f103 0178 add.w r1, r3, #120 ; 0x78 + 2ddfa: 00c9 lsls r1, r1, #3 + 2ddfc: 3377 adds r3, #119 ; 0x77 + 2ddfe: e71b b.n 2dc38 <_malloc_r+0x32c> + 2de00: f240 5254 movw r2, #1364 ; 0x554 + 2de04: 4293 cmp r3, r2 + 2de06: d823 bhi.n 2de50 <_malloc_r+0x544> + 2de08: 0cb3 lsrs r3, r6, #18 + 2de0a: f103 007d add.w r0, r3, #125 ; 0x7d + 2de0e: f103 0c7c add.w ip, r3, #124 ; 0x7c + 2de12: 00c3 lsls r3, r0, #3 + 2de14: e5c0 b.n 2d998 <_malloc_r+0x8c> + 2de16: f1ab 0b08 sub.w fp, fp, #8 + 2de1a: 44d8 add r8, fp + 2de1c: eba8 0802 sub.w r8, r8, r2 + 2de20: f04f 0a00 mov.w sl, #0 + 2de24: e6ab b.n 2db7e <_malloc_r+0x272> + 2de26: f105 0108 add.w r1, r5, #8 + 2de2a: 4620 mov r0, r4 + 2de2c: 9300 str r3, [sp, #0] + 2de2e: f001 f809 bl 2ee44 <_free_r> + 2de32: 68bd ldr r5, [r7, #8] + 2de34: 9b00 ldr r3, [sp, #0] + 2de36: 6868 ldr r0, [r5, #4] + 2de38: 6819 ldr r1, [r3, #0] + 2de3a: e6c4 b.n 2dbc6 <_malloc_r+0x2ba> + 2de3c: f240 5154 movw r1, #1364 ; 0x554 + 2de40: 428b cmp r3, r1 + 2de42: d80b bhi.n 2de5c <_malloc_r+0x550> + 2de44: 0c93 lsrs r3, r2, #18 + 2de46: f103 017d add.w r1, r3, #125 ; 0x7d + 2de4a: 00c9 lsls r1, r1, #3 + 2de4c: 337c adds r3, #124 ; 0x7c + 2de4e: e6f3 b.n 2dc38 <_malloc_r+0x32c> + 2de50: f44f 737e mov.w r3, #1016 ; 0x3f8 + 2de54: 207f movs r0, #127 ; 0x7f + 2de56: f04f 0c7e mov.w ip, #126 ; 0x7e + 2de5a: e59d b.n 2d998 <_malloc_r+0x8c> + 2de5c: f44f 717e mov.w r1, #1016 ; 0x3f8 + 2de60: 237e movs r3, #126 ; 0x7e + 2de62: e6e9 b.n 2dc38 <_malloc_r+0x32c> + 2de64: 687b ldr r3, [r7, #4] + 2de66: e770 b.n 2dd4a <_malloc_r+0x43e> + 2de68: 2000b8e0 .word 0x2000b8e0 + +0002de6c <__malloc_lock>: + 2de6c: 4801 ldr r0, [pc, #4] ; (2de74 <__malloc_lock+0x8>) + 2de6e: f000 be7b b.w 2eb68 <__retarget_lock_acquire_recursive> + 2de72: bf00 nop + 2de74: 2000b8d8 .word 0x2000b8d8 + +0002de78 <__malloc_unlock>: + 2de78: 4801 ldr r0, [pc, #4] ; (2de80 <__malloc_unlock+0x8>) + 2de7a: f000 be77 b.w 2eb6c <__retarget_lock_release_recursive> + 2de7e: bf00 nop + 2de80: 2000b8d8 .word 0x2000b8d8 + +0002de84 : + 2de84: b410 push {r4} + 2de86: 4c04 ldr r4, [pc, #16] ; (2de98 ) + 2de88: 4603 mov r3, r0 + 2de8a: 460a mov r2, r1 + 2de8c: 6820 ldr r0, [r4, #0] + 2de8e: f85d 4b04 ldr.w r4, [sp], #4 + 2de92: 4619 mov r1, r3 + 2de94: f000 b802 b.w 2de9c <_realloc_r> + 2de98: 20005270 .word 0x20005270 + +0002de9c <_realloc_r>: + 2de9c: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2dea0: 4617 mov r7, r2 + 2dea2: 2900 cmp r1, #0 + 2dea4: f000 8098 beq.w 2dfd8 <_realloc_r+0x13c> + 2dea8: 460c mov r4, r1 + 2deaa: f107 050b add.w r5, r7, #11 + 2deae: 4680 mov r8, r0 + 2deb0: f7ff ffdc bl 2de6c <__malloc_lock> + 2deb4: 2d16 cmp r5, #22 + 2deb6: f854 1c04 ldr.w r1, [r4, #-4] + 2deba: d85b bhi.n 2df74 <_realloc_r+0xd8> + 2debc: 2510 movs r5, #16 + 2debe: 462a mov r2, r5 + 2dec0: 42af cmp r7, r5 + 2dec2: d85c bhi.n 2df7e <_realloc_r+0xe2> + 2dec4: f021 0603 bic.w r6, r1, #3 + 2dec8: 4296 cmp r6, r2 + 2deca: f1a4 0908 sub.w r9, r4, #8 + 2dece: da62 bge.n 2df96 <_realloc_r+0xfa> + 2ded0: 4bbc ldr r3, [pc, #752] ; (2e1c4 <_realloc_r+0x328>) + 2ded2: f8d3 c008 ldr.w ip, [r3, #8] + 2ded6: eb09 0006 add.w r0, r9, r6 + 2deda: 4584 cmp ip, r0 + 2dedc: f000 8097 beq.w 2e00e <_realloc_r+0x172> + 2dee0: f8d0 c004 ldr.w ip, [r0, #4] + 2dee4: f02c 0301 bic.w r3, ip, #1 + 2dee8: 4403 add r3, r0 + 2deea: 685b ldr r3, [r3, #4] + 2deec: 07db lsls r3, r3, #31 + 2deee: d468 bmi.n 2dfc2 <_realloc_r+0x126> + 2def0: f02c 0c03 bic.w ip, ip, #3 + 2def4: eb06 030c add.w r3, r6, ip + 2def8: 4293 cmp r3, r2 + 2defa: da47 bge.n 2df8c <_realloc_r+0xf0> + 2defc: 07cb lsls r3, r1, #31 + 2defe: d410 bmi.n 2df22 <_realloc_r+0x86> + 2df00: f854 3c08 ldr.w r3, [r4, #-8] + 2df04: eba9 0a03 sub.w sl, r9, r3 + 2df08: f8da 3004 ldr.w r3, [sl, #4] + 2df0c: f023 0103 bic.w r1, r3, #3 + 2df10: 448c add ip, r1 + 2df12: 44b4 add ip, r6 + 2df14: 4594 cmp ip, r2 + 2df16: f280 8111 bge.w 2e13c <_realloc_r+0x2a0> + 2df1a: 1873 adds r3, r6, r1 + 2df1c: 4293 cmp r3, r2 + 2df1e: f280 80e8 bge.w 2e0f2 <_realloc_r+0x256> + 2df22: 4639 mov r1, r7 + 2df24: 4640 mov r0, r8 + 2df26: f7ff fcf1 bl 2d90c <_malloc_r> + 2df2a: 4607 mov r7, r0 + 2df2c: b1e0 cbz r0, 2df68 <_realloc_r+0xcc> + 2df2e: f854 3c04 ldr.w r3, [r4, #-4] + 2df32: f023 0301 bic.w r3, r3, #1 + 2df36: 444b add r3, r9 + 2df38: f1a0 0208 sub.w r2, r0, #8 + 2df3c: 4293 cmp r3, r2 + 2df3e: f000 80d2 beq.w 2e0e6 <_realloc_r+0x24a> + 2df42: 1f32 subs r2, r6, #4 + 2df44: 2a24 cmp r2, #36 ; 0x24 + 2df46: f200 80f5 bhi.w 2e134 <_realloc_r+0x298> + 2df4a: 2a13 cmp r2, #19 + 2df4c: f200 80ac bhi.w 2e0a8 <_realloc_r+0x20c> + 2df50: 4603 mov r3, r0 + 2df52: 4622 mov r2, r4 + 2df54: 6811 ldr r1, [r2, #0] + 2df56: 6019 str r1, [r3, #0] + 2df58: 6851 ldr r1, [r2, #4] + 2df5a: 6059 str r1, [r3, #4] + 2df5c: 6892 ldr r2, [r2, #8] + 2df5e: 609a str r2, [r3, #8] + 2df60: 4621 mov r1, r4 + 2df62: 4640 mov r0, r8 + 2df64: f000 ff6e bl 2ee44 <_free_r> + 2df68: 4640 mov r0, r8 + 2df6a: f7ff ff85 bl 2de78 <__malloc_unlock> + 2df6e: 4638 mov r0, r7 + 2df70: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2df74: f025 0507 bic.w r5, r5, #7 + 2df78: 2d00 cmp r5, #0 + 2df7a: 462a mov r2, r5 + 2df7c: daa0 bge.n 2dec0 <_realloc_r+0x24> + 2df7e: 230c movs r3, #12 + 2df80: f8c8 3000 str.w r3, [r8] + 2df84: 2700 movs r7, #0 + 2df86: 4638 mov r0, r7 + 2df88: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2df8c: 461e mov r6, r3 + 2df8e: e9d0 2302 ldrd r2, r3, [r0, #8] + 2df92: 60d3 str r3, [r2, #12] + 2df94: 609a str r2, [r3, #8] + 2df96: 1b73 subs r3, r6, r5 + 2df98: 2b0f cmp r3, #15 + 2df9a: d822 bhi.n 2dfe2 <_realloc_r+0x146> + 2df9c: f8d9 3004 ldr.w r3, [r9, #4] + 2dfa0: f003 0301 and.w r3, r3, #1 + 2dfa4: 4333 orrs r3, r6 + 2dfa6: 444e add r6, r9 + 2dfa8: f8c9 3004 str.w r3, [r9, #4] + 2dfac: 6873 ldr r3, [r6, #4] + 2dfae: f043 0301 orr.w r3, r3, #1 + 2dfb2: 6073 str r3, [r6, #4] 2dfb4: 4640 mov r0, r8 - 2dfb6: f8ca 3004 str.w r3, [sl, #4] - 2dfba: f7ff fee9 bl 2dd90 <__malloc_unlock> - 2dfbe: e76e b.n 2de9e <_realloc_r+0xea> - 2dfc0: 6823 ldr r3, [r4, #0] - 2dfc2: 6003 str r3, [r0, #0] - 2dfc4: 6863 ldr r3, [r4, #4] - 2dfc6: 6043 str r3, [r0, #4] - 2dfc8: 2a1b cmp r2, #27 - 2dfca: d868 bhi.n 2e09e <_realloc_r+0x2ea> - 2dfcc: f104 0208 add.w r2, r4, #8 - 2dfd0: f100 0308 add.w r3, r0, #8 - 2dfd4: e74a b.n 2de6c <_realloc_r+0xb8> - 2dfd6: eb09 0205 add.w r2, r9, r5 - 2dfda: 609a str r2, [r3, #8] - 2dfdc: ebac 0305 sub.w r3, ip, r5 - 2dfe0: f043 0301 orr.w r3, r3, #1 - 2dfe4: 6053 str r3, [r2, #4] - 2dfe6: f854 3c04 ldr.w r3, [r4, #-4] - 2dfea: f003 0301 and.w r3, r3, #1 - 2dfee: 432b orrs r3, r5 - 2dff0: 4640 mov r0, r8 - 2dff2: f844 3c04 str.w r3, [r4, #-4] - 2dff6: f7ff fecb bl 2dd90 <__malloc_unlock> - 2dffa: 4627 mov r7, r4 - 2dffc: e74f b.n 2de9e <_realloc_r+0xea> - 2dffe: f850 3c04 ldr.w r3, [r0, #-4] - 2e002: f023 0303 bic.w r3, r3, #3 - 2e006: 441e add r6, r3 - 2e008: e751 b.n 2deae <_realloc_r+0xfa> - 2e00a: 4657 mov r7, sl - 2e00c: f8da 100c ldr.w r1, [sl, #12] - 2e010: f857 0f08 ldr.w r0, [r7, #8]! - 2e014: 1f32 subs r2, r6, #4 - 2e016: 2a24 cmp r2, #36 ; 0x24 - 2e018: 60c1 str r1, [r0, #12] - 2e01a: 6088 str r0, [r1, #8] - 2e01c: d84c bhi.n 2e0b8 <_realloc_r+0x304> - 2e01e: 2a13 cmp r2, #19 - 2e020: d948 bls.n 2e0b4 <_realloc_r+0x300> - 2e022: 6821 ldr r1, [r4, #0] - 2e024: f8ca 1008 str.w r1, [sl, #8] - 2e028: 6861 ldr r1, [r4, #4] - 2e02a: f8ca 100c str.w r1, [sl, #12] - 2e02e: 2a1b cmp r2, #27 - 2e030: d856 bhi.n 2e0e0 <_realloc_r+0x32c> - 2e032: 3408 adds r4, #8 - 2e034: f10a 0210 add.w r2, sl, #16 - 2e038: 461e mov r6, r3 - 2e03a: 6823 ldr r3, [r4, #0] - 2e03c: 6013 str r3, [r2, #0] - 2e03e: 6863 ldr r3, [r4, #4] - 2e040: 6053 str r3, [r2, #4] - 2e042: 68a3 ldr r3, [r4, #8] - 2e044: 6093 str r3, [r2, #8] - 2e046: 46d1 mov r9, sl - 2e048: 463c mov r4, r7 - 2e04a: e730 b.n 2deae <_realloc_r+0xfa> - 2e04c: 4621 mov r1, r4 - 2e04e: f000 f9a1 bl 2e394 - 2e052: e711 b.n 2de78 <_realloc_r+0xc4> - 2e054: e9d0 1302 ldrd r1, r3, [r0, #8] - 2e058: 4657 mov r7, sl - 2e05a: 60cb str r3, [r1, #12] - 2e05c: 6099 str r1, [r3, #8] - 2e05e: f857 1f08 ldr.w r1, [r7, #8]! - 2e062: f8da 300c ldr.w r3, [sl, #12] - 2e066: 60cb str r3, [r1, #12] - 2e068: 1f32 subs r2, r6, #4 - 2e06a: 2a24 cmp r2, #36 ; 0x24 - 2e06c: 6099 str r1, [r3, #8] - 2e06e: d82d bhi.n 2e0cc <_realloc_r+0x318> - 2e070: 2a13 cmp r2, #19 - 2e072: d929 bls.n 2e0c8 <_realloc_r+0x314> - 2e074: 6823 ldr r3, [r4, #0] - 2e076: f8ca 3008 str.w r3, [sl, #8] - 2e07a: 6863 ldr r3, [r4, #4] - 2e07c: f8ca 300c str.w r3, [sl, #12] - 2e080: 2a1b cmp r2, #27 - 2e082: d842 bhi.n 2e10a <_realloc_r+0x356> - 2e084: 3408 adds r4, #8 - 2e086: f10a 0310 add.w r3, sl, #16 - 2e08a: 6822 ldr r2, [r4, #0] - 2e08c: 601a str r2, [r3, #0] - 2e08e: 6862 ldr r2, [r4, #4] - 2e090: 605a str r2, [r3, #4] - 2e092: 68a2 ldr r2, [r4, #8] - 2e094: 609a str r2, [r3, #8] - 2e096: 4666 mov r6, ip - 2e098: 46d1 mov r9, sl - 2e09a: 463c mov r4, r7 - 2e09c: e707 b.n 2deae <_realloc_r+0xfa> - 2e09e: 68a3 ldr r3, [r4, #8] - 2e0a0: 6083 str r3, [r0, #8] - 2e0a2: 68e3 ldr r3, [r4, #12] - 2e0a4: 60c3 str r3, [r0, #12] - 2e0a6: 2a24 cmp r2, #36 ; 0x24 - 2e0a8: d026 beq.n 2e0f8 <_realloc_r+0x344> - 2e0aa: f104 0210 add.w r2, r4, #16 - 2e0ae: f100 0310 add.w r3, r0, #16 - 2e0b2: e6db b.n 2de6c <_realloc_r+0xb8> - 2e0b4: 463a mov r2, r7 - 2e0b6: e7bf b.n 2e038 <_realloc_r+0x284> - 2e0b8: 4621 mov r1, r4 - 2e0ba: 4638 mov r0, r7 - 2e0bc: 461e mov r6, r3 - 2e0be: 46d1 mov r9, sl - 2e0c0: f000 f968 bl 2e394 - 2e0c4: 463c mov r4, r7 - 2e0c6: e6f2 b.n 2deae <_realloc_r+0xfa> - 2e0c8: 463b mov r3, r7 - 2e0ca: e7de b.n 2e08a <_realloc_r+0x2d6> - 2e0cc: 4621 mov r1, r4 - 2e0ce: 4638 mov r0, r7 - 2e0d0: 4666 mov r6, ip - 2e0d2: 46d1 mov r9, sl - 2e0d4: f000 f95e bl 2e394 - 2e0d8: 463c mov r4, r7 - 2e0da: e6e8 b.n 2deae <_realloc_r+0xfa> - 2e0dc: 20004d94 .word 0x20004d94 - 2e0e0: 68a1 ldr r1, [r4, #8] - 2e0e2: f8ca 1010 str.w r1, [sl, #16] - 2e0e6: 68e1 ldr r1, [r4, #12] - 2e0e8: f8ca 1014 str.w r1, [sl, #20] - 2e0ec: 2a24 cmp r2, #36 ; 0x24 - 2e0ee: d020 beq.n 2e132 <_realloc_r+0x37e> - 2e0f0: 3410 adds r4, #16 - 2e0f2: f10a 0218 add.w r2, sl, #24 - 2e0f6: e79f b.n 2e038 <_realloc_r+0x284> - 2e0f8: 6923 ldr r3, [r4, #16] - 2e0fa: 6103 str r3, [r0, #16] - 2e0fc: 6961 ldr r1, [r4, #20] - 2e0fe: 6141 str r1, [r0, #20] - 2e100: f104 0218 add.w r2, r4, #24 - 2e104: f100 0318 add.w r3, r0, #24 - 2e108: e6b0 b.n 2de6c <_realloc_r+0xb8> - 2e10a: 68a3 ldr r3, [r4, #8] - 2e10c: f8ca 3010 str.w r3, [sl, #16] - 2e110: 68e3 ldr r3, [r4, #12] - 2e112: f8ca 3014 str.w r3, [sl, #20] - 2e116: 2a24 cmp r2, #36 ; 0x24 - 2e118: d021 beq.n 2e15e <_realloc_r+0x3aa> - 2e11a: 3410 adds r4, #16 - 2e11c: f10a 0318 add.w r3, sl, #24 - 2e120: e7b3 b.n 2e08a <_realloc_r+0x2d6> - 2e122: 463a mov r2, r7 - 2e124: e733 b.n 2df8e <_realloc_r+0x1da> - 2e126: 4621 mov r1, r4 - 2e128: 4638 mov r0, r7 - 2e12a: f000 f933 bl 2e394 - 2e12e: 4b16 ldr r3, [pc, #88] ; (2e188 <_realloc_r+0x3d4>) - 2e130: e733 b.n 2df9a <_realloc_r+0x1e6> - 2e132: 6922 ldr r2, [r4, #16] - 2e134: f8ca 2018 str.w r2, [sl, #24] - 2e138: 6962 ldr r2, [r4, #20] - 2e13a: f8ca 201c str.w r2, [sl, #28] - 2e13e: 3418 adds r4, #24 - 2e140: f10a 0220 add.w r2, sl, #32 - 2e144: e778 b.n 2e038 <_realloc_r+0x284> - 2e146: 68a1 ldr r1, [r4, #8] - 2e148: f8ca 1010 str.w r1, [sl, #16] - 2e14c: 68e1 ldr r1, [r4, #12] - 2e14e: f8ca 1014 str.w r1, [sl, #20] + 2dfb6: 4627 mov r7, r4 + 2dfb8: f7ff ff5e bl 2de78 <__malloc_unlock> + 2dfbc: 4638 mov r0, r7 + 2dfbe: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2dfc2: 07c9 lsls r1, r1, #31 + 2dfc4: d4ad bmi.n 2df22 <_realloc_r+0x86> + 2dfc6: f854 3c08 ldr.w r3, [r4, #-8] + 2dfca: eba9 0a03 sub.w sl, r9, r3 + 2dfce: f8da 1004 ldr.w r1, [sl, #4] + 2dfd2: f021 0103 bic.w r1, r1, #3 + 2dfd6: e7a0 b.n 2df1a <_realloc_r+0x7e> + 2dfd8: e8bd 4ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2dfdc: 4611 mov r1, r2 + 2dfde: f7ff bc95 b.w 2d90c <_malloc_r> + 2dfe2: f8d9 2004 ldr.w r2, [r9, #4] + 2dfe6: eb09 0105 add.w r1, r9, r5 + 2dfea: f002 0201 and.w r2, r2, #1 + 2dfee: 444e add r6, r9 + 2dff0: f043 0301 orr.w r3, r3, #1 + 2dff4: 432a orrs r2, r5 + 2dff6: f8c9 2004 str.w r2, [r9, #4] + 2dffa: 604b str r3, [r1, #4] + 2dffc: 6873 ldr r3, [r6, #4] + 2dffe: f043 0301 orr.w r3, r3, #1 + 2e002: 3108 adds r1, #8 + 2e004: 6073 str r3, [r6, #4] + 2e006: 4640 mov r0, r8 + 2e008: f000 ff1c bl 2ee44 <_free_r> + 2e00c: e7d2 b.n 2dfb4 <_realloc_r+0x118> + 2e00e: f8dc 0004 ldr.w r0, [ip, #4] + 2e012: f020 0b03 bic.w fp, r0, #3 + 2e016: eb06 0c0b add.w ip, r6, fp + 2e01a: f105 0010 add.w r0, r5, #16 + 2e01e: 4584 cmp ip, r0 + 2e020: da4d bge.n 2e0be <_realloc_r+0x222> + 2e022: 07c9 lsls r1, r1, #31 + 2e024: f53f af7d bmi.w 2df22 <_realloc_r+0x86> + 2e028: f854 1c08 ldr.w r1, [r4, #-8] + 2e02c: eba9 0a01 sub.w sl, r9, r1 + 2e030: f8da 1004 ldr.w r1, [sl, #4] + 2e034: f021 0103 bic.w r1, r1, #3 + 2e038: 448b add fp, r1 + 2e03a: 44b3 add fp, r6 + 2e03c: 4558 cmp r0, fp + 2e03e: f73f af6c bgt.w 2df1a <_realloc_r+0x7e> + 2e042: 4657 mov r7, sl + 2e044: f8da 100c ldr.w r1, [sl, #12] + 2e048: f857 0f08 ldr.w r0, [r7, #8]! + 2e04c: 1f32 subs r2, r6, #4 + 2e04e: 2a24 cmp r2, #36 ; 0x24 + 2e050: 60c1 str r1, [r0, #12] + 2e052: 6088 str r0, [r1, #8] + 2e054: f200 80db bhi.w 2e20e <_realloc_r+0x372> + 2e058: 2a13 cmp r2, #19 + 2e05a: f240 80d6 bls.w 2e20a <_realloc_r+0x36e> + 2e05e: 6821 ldr r1, [r4, #0] + 2e060: f8ca 1008 str.w r1, [sl, #8] + 2e064: 6861 ldr r1, [r4, #4] + 2e066: f8ca 100c str.w r1, [sl, #12] + 2e06a: 2a1b cmp r2, #27 + 2e06c: f200 80df bhi.w 2e22e <_realloc_r+0x392> + 2e070: 3408 adds r4, #8 + 2e072: f10a 0210 add.w r2, sl, #16 + 2e076: 6821 ldr r1, [r4, #0] + 2e078: 6011 str r1, [r2, #0] + 2e07a: 6861 ldr r1, [r4, #4] + 2e07c: 6051 str r1, [r2, #4] + 2e07e: 68a1 ldr r1, [r4, #8] + 2e080: 6091 str r1, [r2, #8] + 2e082: eb0a 0105 add.w r1, sl, r5 + 2e086: ebab 0205 sub.w r2, fp, r5 + 2e08a: f042 0201 orr.w r2, r2, #1 + 2e08e: 6099 str r1, [r3, #8] + 2e090: 604a str r2, [r1, #4] + 2e092: f8da 3004 ldr.w r3, [sl, #4] + 2e096: f003 0301 and.w r3, r3, #1 + 2e09a: 432b orrs r3, r5 + 2e09c: 4640 mov r0, r8 + 2e09e: f8ca 3004 str.w r3, [sl, #4] + 2e0a2: f7ff fee9 bl 2de78 <__malloc_unlock> + 2e0a6: e76e b.n 2df86 <_realloc_r+0xea> + 2e0a8: 6823 ldr r3, [r4, #0] + 2e0aa: 6003 str r3, [r0, #0] + 2e0ac: 6863 ldr r3, [r4, #4] + 2e0ae: 6043 str r3, [r0, #4] + 2e0b0: 2a1b cmp r2, #27 + 2e0b2: d868 bhi.n 2e186 <_realloc_r+0x2ea> + 2e0b4: f104 0208 add.w r2, r4, #8 + 2e0b8: f100 0308 add.w r3, r0, #8 + 2e0bc: e74a b.n 2df54 <_realloc_r+0xb8> + 2e0be: eb09 0205 add.w r2, r9, r5 + 2e0c2: 609a str r2, [r3, #8] + 2e0c4: ebac 0305 sub.w r3, ip, r5 + 2e0c8: f043 0301 orr.w r3, r3, #1 + 2e0cc: 6053 str r3, [r2, #4] + 2e0ce: f854 3c04 ldr.w r3, [r4, #-4] + 2e0d2: f003 0301 and.w r3, r3, #1 + 2e0d6: 432b orrs r3, r5 + 2e0d8: 4640 mov r0, r8 + 2e0da: f844 3c04 str.w r3, [r4, #-4] + 2e0de: f7ff fecb bl 2de78 <__malloc_unlock> + 2e0e2: 4627 mov r7, r4 + 2e0e4: e74f b.n 2df86 <_realloc_r+0xea> + 2e0e6: f850 3c04 ldr.w r3, [r0, #-4] + 2e0ea: f023 0303 bic.w r3, r3, #3 + 2e0ee: 441e add r6, r3 + 2e0f0: e751 b.n 2df96 <_realloc_r+0xfa> + 2e0f2: 4657 mov r7, sl + 2e0f4: f8da 100c ldr.w r1, [sl, #12] + 2e0f8: f857 0f08 ldr.w r0, [r7, #8]! + 2e0fc: 1f32 subs r2, r6, #4 + 2e0fe: 2a24 cmp r2, #36 ; 0x24 + 2e100: 60c1 str r1, [r0, #12] + 2e102: 6088 str r0, [r1, #8] + 2e104: d84c bhi.n 2e1a0 <_realloc_r+0x304> + 2e106: 2a13 cmp r2, #19 + 2e108: d948 bls.n 2e19c <_realloc_r+0x300> + 2e10a: 6821 ldr r1, [r4, #0] + 2e10c: f8ca 1008 str.w r1, [sl, #8] + 2e110: 6861 ldr r1, [r4, #4] + 2e112: f8ca 100c str.w r1, [sl, #12] + 2e116: 2a1b cmp r2, #27 + 2e118: d856 bhi.n 2e1c8 <_realloc_r+0x32c> + 2e11a: 3408 adds r4, #8 + 2e11c: f10a 0210 add.w r2, sl, #16 + 2e120: 461e mov r6, r3 + 2e122: 6823 ldr r3, [r4, #0] + 2e124: 6013 str r3, [r2, #0] + 2e126: 6863 ldr r3, [r4, #4] + 2e128: 6053 str r3, [r2, #4] + 2e12a: 68a3 ldr r3, [r4, #8] + 2e12c: 6093 str r3, [r2, #8] + 2e12e: 46d1 mov r9, sl + 2e130: 463c mov r4, r7 + 2e132: e730 b.n 2df96 <_realloc_r+0xfa> + 2e134: 4621 mov r1, r4 + 2e136: f000 f9a1 bl 2e47c + 2e13a: e711 b.n 2df60 <_realloc_r+0xc4> + 2e13c: e9d0 1302 ldrd r1, r3, [r0, #8] + 2e140: 4657 mov r7, sl + 2e142: 60cb str r3, [r1, #12] + 2e144: 6099 str r1, [r3, #8] + 2e146: f857 1f08 ldr.w r1, [r7, #8]! + 2e14a: f8da 300c ldr.w r3, [sl, #12] + 2e14e: 60cb str r3, [r1, #12] + 2e150: 1f32 subs r2, r6, #4 2e152: 2a24 cmp r2, #36 ; 0x24 - 2e154: d00d beq.n 2e172 <_realloc_r+0x3be> - 2e156: 3410 adds r4, #16 - 2e158: f10a 0218 add.w r2, sl, #24 - 2e15c: e717 b.n 2df8e <_realloc_r+0x1da> - 2e15e: 6923 ldr r3, [r4, #16] - 2e160: f8ca 3018 str.w r3, [sl, #24] - 2e164: 6963 ldr r3, [r4, #20] - 2e166: f8ca 301c str.w r3, [sl, #28] - 2e16a: 3418 adds r4, #24 - 2e16c: f10a 0320 add.w r3, sl, #32 - 2e170: e78b b.n 2e08a <_realloc_r+0x2d6> - 2e172: 6922 ldr r2, [r4, #16] - 2e174: f8ca 2018 str.w r2, [sl, #24] - 2e178: 6962 ldr r2, [r4, #20] - 2e17a: f8ca 201c str.w r2, [sl, #28] - 2e17e: 3418 adds r4, #24 - 2e180: f10a 0220 add.w r2, sl, #32 - 2e184: e703 b.n 2df8e <_realloc_r+0x1da> - 2e186: bf00 nop - 2e188: 20004d94 .word 0x20004d94 - -0002e18c : - 2e18c: b40e push {r1, r2, r3} - 2e18e: b510 push {r4, lr} - 2e190: b09d sub sp, #116 ; 0x74 - 2e192: f06f 4100 mvn.w r1, #2147483648 ; 0x80000000 - 2e196: ab1f add r3, sp, #124 ; 0x7c - 2e198: e9cd 0106 strd r0, r1, [sp, #24] - 2e19c: 9104 str r1, [sp, #16] - 2e19e: 4909 ldr r1, [pc, #36] ; (2e1c4 ) - 2e1a0: f853 2b04 ldr.w r2, [r3], #4 - 2e1a4: 9002 str r0, [sp, #8] - 2e1a6: 4c08 ldr r4, [pc, #32] ; (2e1c8 ) - 2e1a8: 6808 ldr r0, [r1, #0] - 2e1aa: 9301 str r3, [sp, #4] - 2e1ac: a902 add r1, sp, #8 - 2e1ae: 9405 str r4, [sp, #20] - 2e1b0: f000 fee6 bl 2ef80 <_svfprintf_r> - 2e1b4: 9b02 ldr r3, [sp, #8] - 2e1b6: 2200 movs r2, #0 - 2e1b8: 701a strb r2, [r3, #0] - 2e1ba: b01d add sp, #116 ; 0x74 - 2e1bc: e8bd 4010 ldmia.w sp!, {r4, lr} - 2e1c0: b003 add sp, #12 - 2e1c2: 4770 bx lr - 2e1c4: 200051b0 .word 0x200051b0 - 2e1c8: ffff0208 .word 0xffff0208 - -0002e1cc : - 2e1cc: 4a02 ldr r2, [pc, #8] ; (2e1d8 ) - 2e1ce: 4903 ldr r1, [pc, #12] ; (2e1dc ) - 2e1d0: 4803 ldr r0, [pc, #12] ; (2e1e0 ) - 2e1d2: f000 b8bb b.w 2e34c <_fwalk_sglue> - 2e1d6: bf00 nop - 2e1d8: 200051a4 .word 0x200051a4 - 2e1dc: 0003123d .word 0x0003123d - 2e1e0: 20004a80 .word 0x20004a80 - -0002e1e4 : - 2e1e4: 4b0c ldr r3, [pc, #48] ; (2e218 ) - 2e1e6: 6841 ldr r1, [r0, #4] - 2e1e8: 4299 cmp r1, r3 - 2e1ea: b510 push {r4, lr} - 2e1ec: 4604 mov r4, r0 - 2e1ee: d001 beq.n 2e1f4 - 2e1f0: f003 f824 bl 3123c <_fclose_r> - 2e1f4: 68a1 ldr r1, [r4, #8] - 2e1f6: 4b09 ldr r3, [pc, #36] ; (2e21c ) - 2e1f8: 4299 cmp r1, r3 - 2e1fa: d002 beq.n 2e202 - 2e1fc: 4620 mov r0, r4 - 2e1fe: f003 f81d bl 3123c <_fclose_r> - 2e202: 68e1 ldr r1, [r4, #12] - 2e204: 4b06 ldr r3, [pc, #24] ; (2e220 ) - 2e206: 4299 cmp r1, r3 - 2e208: d004 beq.n 2e214 - 2e20a: 4620 mov r0, r4 - 2e20c: e8bd 4010 ldmia.w sp!, {r4, lr} - 2e210: f003 b814 b.w 3123c <_fclose_r> - 2e214: bd10 pop {r4, pc} - 2e216: bf00 nop - 2e218: 2000b8f4 .word 0x2000b8f4 - 2e21c: 2000b95c .word 0x2000b95c - 2e220: 2000b9c4 .word 0x2000b9c4 - -0002e224 : - 2e224: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 2e228: 4c2a ldr r4, [pc, #168] ; (2e2d4 ) - 2e22a: 4b2b ldr r3, [pc, #172] ; (2e2d8 ) - 2e22c: 482b ldr r0, [pc, #172] ; (2e2dc ) - 2e22e: f8df 90c0 ldr.w r9, [pc, #192] ; 2e2f0 - 2e232: f8df 80c0 ldr.w r8, [pc, #192] ; 2e2f4 - 2e236: 4f2a ldr r7, [pc, #168] ; (2e2e0 ) - 2e238: 6018 str r0, [r3, #0] - 2e23a: 2500 movs r5, #0 - 2e23c: 2304 movs r3, #4 - 2e23e: 2208 movs r2, #8 - 2e240: 4629 mov r1, r5 - 2e242: f104 005c add.w r0, r4, #92 ; 0x5c - 2e246: 4e27 ldr r6, [pc, #156] ; (2e2e4 ) - 2e248: 6665 str r5, [r4, #100] ; 0x64 - 2e24a: e9c4 5302 strd r5, r3, [r4, #8] - 2e24e: e9c4 5500 strd r5, r5, [r4] - 2e252: e9c4 5504 strd r5, r5, [r4, #16] - 2e256: 61a5 str r5, [r4, #24] - 2e258: f000 f918 bl 2e48c - 2e25c: 4b22 ldr r3, [pc, #136] ; (2e2e8 ) - 2e25e: 6763 str r3, [r4, #116] ; 0x74 - 2e260: 2208 movs r2, #8 - 2e262: 4629 mov r1, r5 - 2e264: f104 00c4 add.w r0, r4, #196 ; 0xc4 - 2e268: e9c4 4907 strd r4, r9, [r4, #28] - 2e26c: e9c4 8709 strd r8, r7, [r4, #36] ; 0x24 - 2e270: e9c4 551a strd r5, r5, [r4, #104] ; 0x68 - 2e274: e9c4 551e strd r5, r5, [r4, #120] ; 0x78 - 2e278: f8c4 50cc str.w r5, [r4, #204] ; 0xcc - 2e27c: 6725 str r5, [r4, #112] ; 0x70 - 2e27e: f8c4 5080 str.w r5, [r4, #128] ; 0x80 - 2e282: 62e6 str r6, [r4, #44] ; 0x2c - 2e284: f000 f902 bl 2e48c - 2e288: 4b18 ldr r3, [pc, #96] ; (2e2ec ) - 2e28a: f8c4 30dc str.w r3, [r4, #220] ; 0xdc - 2e28e: 4629 mov r1, r5 - 2e290: f104 0368 add.w r3, r4, #104 ; 0x68 - 2e294: 2208 movs r2, #8 - 2e296: f504 7096 add.w r0, r4, #300 ; 0x12c - 2e29a: f8c4 3084 str.w r3, [r4, #132] ; 0x84 - 2e29e: e9c4 9822 strd r9, r8, [r4, #136] ; 0x88 - 2e2a2: e9c4 7624 strd r7, r6, [r4, #144] ; 0x90 - 2e2a6: e9c4 5534 strd r5, r5, [r4, #208] ; 0xd0 - 2e2aa: e9c4 5538 strd r5, r5, [r4, #224] ; 0xe0 - 2e2ae: f8c4 5134 str.w r5, [r4, #308] ; 0x134 - 2e2b2: f8c4 50d8 str.w r5, [r4, #216] ; 0xd8 - 2e2b6: f8c4 50e8 str.w r5, [r4, #232] ; 0xe8 - 2e2ba: f000 f8e7 bl 2e48c - 2e2be: f104 03d0 add.w r3, r4, #208 ; 0xd0 - 2e2c2: e9c4 983c strd r9, r8, [r4, #240] ; 0xf0 - 2e2c6: e9c4 763e strd r7, r6, [r4, #248] ; 0xf8 - 2e2ca: f8c4 30ec str.w r3, [r4, #236] ; 0xec - 2e2ce: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 2e2d2: bf00 nop - 2e2d4: 2000b8f4 .word 0x2000b8f4 - 2e2d8: 2000ba2c .word 0x2000ba2c - 2e2dc: 0002e1cd .word 0x0002e1cd - 2e2e0: 000314ed .word 0x000314ed - 2e2e4: 0003150d .word 0x0003150d - 2e2e8: 00010009 .word 0x00010009 - 2e2ec: 00020012 .word 0x00020012 - 2e2f0: 00031489 .word 0x00031489 - 2e2f4: 000314ad .word 0x000314ad - -0002e2f8 <__sinit>: - 2e2f8: b510 push {r4, lr} - 2e2fa: 4604 mov r4, r0 - 2e2fc: 480a ldr r0, [pc, #40] ; (2e328 <__sinit+0x30>) - 2e2fe: f000 fbc3 bl 2ea88 <__retarget_lock_acquire_recursive> - 2e302: 6b63 ldr r3, [r4, #52] ; 0x34 - 2e304: b923 cbnz r3, 2e310 <__sinit+0x18> - 2e306: 4b09 ldr r3, [pc, #36] ; (2e32c <__sinit+0x34>) - 2e308: 4a09 ldr r2, [pc, #36] ; (2e330 <__sinit+0x38>) - 2e30a: 681b ldr r3, [r3, #0] - 2e30c: 6362 str r2, [r4, #52] ; 0x34 - 2e30e: b123 cbz r3, 2e31a <__sinit+0x22> - 2e310: e8bd 4010 ldmia.w sp!, {r4, lr} - 2e314: 4804 ldr r0, [pc, #16] ; (2e328 <__sinit+0x30>) - 2e316: f000 bbb9 b.w 2ea8c <__retarget_lock_release_recursive> - 2e31a: f7ff ff83 bl 2e224 - 2e31e: e8bd 4010 ldmia.w sp!, {r4, lr} - 2e322: 4801 ldr r0, [pc, #4] ; (2e328 <__sinit+0x30>) - 2e324: f000 bbb2 b.w 2ea8c <__retarget_lock_release_recursive> - 2e328: 2000b8bc .word 0x2000b8bc - 2e32c: 2000ba2c .word 0x2000ba2c - 2e330: 0002e1e5 .word 0x0002e1e5 - -0002e334 <__sfp_lock_acquire>: - 2e334: 4801 ldr r0, [pc, #4] ; (2e33c <__sfp_lock_acquire+0x8>) - 2e336: f000 bba7 b.w 2ea88 <__retarget_lock_acquire_recursive> - 2e33a: bf00 nop - 2e33c: 2000b8bc .word 0x2000b8bc - -0002e340 <__sfp_lock_release>: - 2e340: 4801 ldr r0, [pc, #4] ; (2e348 <__sfp_lock_release+0x8>) - 2e342: f000 bba3 b.w 2ea8c <__retarget_lock_release_recursive> - 2e346: bf00 nop - 2e348: 2000b8bc .word 0x2000b8bc - -0002e34c <_fwalk_sglue>: - 2e34c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 2e350: 4680 mov r8, r0 - 2e352: 460f mov r7, r1 - 2e354: 4616 mov r6, r2 - 2e356: f04f 0900 mov.w r9, #0 - 2e35a: e9d6 5401 ldrd r5, r4, [r6, #4] - 2e35e: 3d01 subs r5, #1 - 2e360: d411 bmi.n 2e386 <_fwalk_sglue+0x3a> - 2e362: 89a3 ldrh r3, [r4, #12] - 2e364: 2b01 cmp r3, #1 - 2e366: f105 35ff add.w r5, r5, #4294967295 ; 0xffffffff - 2e36a: d908 bls.n 2e37e <_fwalk_sglue+0x32> - 2e36c: f9b4 300e ldrsh.w r3, [r4, #14] - 2e370: 3301 adds r3, #1 - 2e372: 4621 mov r1, r4 - 2e374: d003 beq.n 2e37e <_fwalk_sglue+0x32> - 2e376: 4640 mov r0, r8 - 2e378: 47b8 blx r7 - 2e37a: ea49 0900 orr.w r9, r9, r0 - 2e37e: 1c6b adds r3, r5, #1 - 2e380: f104 0468 add.w r4, r4, #104 ; 0x68 - 2e384: d1ed bne.n 2e362 <_fwalk_sglue+0x16> - 2e386: 6836 ldr r6, [r6, #0] - 2e388: 2e00 cmp r6, #0 - 2e38a: d1e6 bne.n 2e35a <_fwalk_sglue+0xe> - 2e38c: 4648 mov r0, r9 - 2e38e: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 2e392: bf00 nop - -0002e394 : - 2e394: 4288 cmp r0, r1 - 2e396: d90d bls.n 2e3b4 - 2e398: 188b adds r3, r1, r2 - 2e39a: 4283 cmp r3, r0 - 2e39c: d90a bls.n 2e3b4 - 2e39e: eb00 0c02 add.w ip, r0, r2 - 2e3a2: b1ba cbz r2, 2e3d4 - 2e3a4: 4662 mov r2, ip - 2e3a6: f813 cd01 ldrb.w ip, [r3, #-1]! - 2e3aa: f802 cd01 strb.w ip, [r2, #-1]! - 2e3ae: 4299 cmp r1, r3 - 2e3b0: d1f9 bne.n 2e3a6 - 2e3b2: 4770 bx lr - 2e3b4: 2a0f cmp r2, #15 - 2e3b6: d80e bhi.n 2e3d6 - 2e3b8: 4603 mov r3, r0 - 2e3ba: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff - 2e3be: b14a cbz r2, 2e3d4 - 2e3c0: f10c 0c01 add.w ip, ip, #1 - 2e3c4: 3b01 subs r3, #1 - 2e3c6: 448c add ip, r1 - 2e3c8: f811 2b01 ldrb.w r2, [r1], #1 - 2e3cc: f803 2f01 strb.w r2, [r3, #1]! - 2e3d0: 4561 cmp r1, ip - 2e3d2: d1f9 bne.n 2e3c8 - 2e3d4: 4770 bx lr - 2e3d6: ea40 0301 orr.w r3, r0, r1 - 2e3da: 079b lsls r3, r3, #30 - 2e3dc: d150 bne.n 2e480 - 2e3de: f1a2 0310 sub.w r3, r2, #16 - 2e3e2: b570 push {r4, r5, r6, lr} - 2e3e4: f101 0c20 add.w ip, r1, #32 - 2e3e8: f023 050f bic.w r5, r3, #15 - 2e3ec: f101 0e10 add.w lr, r1, #16 - 2e3f0: f100 0410 add.w r4, r0, #16 - 2e3f4: 44ac add ip, r5 - 2e3f6: 091b lsrs r3, r3, #4 - 2e3f8: f85e 5c10 ldr.w r5, [lr, #-16] - 2e3fc: f844 5c10 str.w r5, [r4, #-16] - 2e400: f85e 5c0c ldr.w r5, [lr, #-12] - 2e404: f844 5c0c str.w r5, [r4, #-12] - 2e408: f85e 5c08 ldr.w r5, [lr, #-8] - 2e40c: f844 5c08 str.w r5, [r4, #-8] - 2e410: f85e 5c04 ldr.w r5, [lr, #-4] - 2e414: f844 5c04 str.w r5, [r4, #-4] - 2e418: f10e 0e10 add.w lr, lr, #16 - 2e41c: 45e6 cmp lr, ip - 2e41e: f104 0410 add.w r4, r4, #16 - 2e422: d1e9 bne.n 2e3f8 - 2e424: 3301 adds r3, #1 - 2e426: f012 0f0c tst.w r2, #12 - 2e42a: eb01 1103 add.w r1, r1, r3, lsl #4 - 2e42e: f002 040f and.w r4, r2, #15 - 2e432: eb00 1303 add.w r3, r0, r3, lsl #4 - 2e436: d027 beq.n 2e488 - 2e438: 3c04 subs r4, #4 - 2e43a: f024 0603 bic.w r6, r4, #3 - 2e43e: ea4f 0c94 mov.w ip, r4, lsr #2 - 2e442: 441e add r6, r3 - 2e444: 1f1c subs r4, r3, #4 - 2e446: 468e mov lr, r1 - 2e448: f85e 5b04 ldr.w r5, [lr], #4 - 2e44c: f844 5f04 str.w r5, [r4, #4]! - 2e450: 42b4 cmp r4, r6 - 2e452: d1f9 bne.n 2e448 - 2e454: f10c 0401 add.w r4, ip, #1 - 2e458: f002 0203 and.w r2, r2, #3 - 2e45c: eb03 0384 add.w r3, r3, r4, lsl #2 - 2e460: eb01 0184 add.w r1, r1, r4, lsl #2 - 2e464: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff - 2e468: b14a cbz r2, 2e47e - 2e46a: f10c 0c01 add.w ip, ip, #1 - 2e46e: 3b01 subs r3, #1 - 2e470: 448c add ip, r1 - 2e472: f811 2b01 ldrb.w r2, [r1], #1 - 2e476: f803 2f01 strb.w r2, [r3, #1]! - 2e47a: 4561 cmp r1, ip - 2e47c: d1f9 bne.n 2e472 - 2e47e: bd70 pop {r4, r5, r6, pc} - 2e480: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff - 2e484: 4603 mov r3, r0 - 2e486: e79b b.n 2e3c0 - 2e488: 4622 mov r2, r4 - 2e48a: e7eb b.n 2e464 - -0002e48c : - 2e48c: 0783 lsls r3, r0, #30 - 2e48e: b530 push {r4, r5, lr} - 2e490: d048 beq.n 2e524 - 2e492: 1e54 subs r4, r2, #1 - 2e494: 2a00 cmp r2, #0 - 2e496: d03f beq.n 2e518 - 2e498: b2ca uxtb r2, r1 - 2e49a: 4603 mov r3, r0 - 2e49c: e001 b.n 2e4a2 - 2e49e: 3c01 subs r4, #1 - 2e4a0: d33a bcc.n 2e518 - 2e4a2: f803 2b01 strb.w r2, [r3], #1 - 2e4a6: 079d lsls r5, r3, #30 - 2e4a8: d1f9 bne.n 2e49e - 2e4aa: 2c03 cmp r4, #3 - 2e4ac: d92d bls.n 2e50a - 2e4ae: b2cd uxtb r5, r1 - 2e4b0: ea45 2505 orr.w r5, r5, r5, lsl #8 - 2e4b4: 2c0f cmp r4, #15 - 2e4b6: ea45 4505 orr.w r5, r5, r5, lsl #16 - 2e4ba: d936 bls.n 2e52a - 2e4bc: f1a4 0210 sub.w r2, r4, #16 - 2e4c0: f022 0c0f bic.w ip, r2, #15 - 2e4c4: f103 0e20 add.w lr, r3, #32 - 2e4c8: 44e6 add lr, ip - 2e4ca: ea4f 1c12 mov.w ip, r2, lsr #4 - 2e4ce: f103 0210 add.w r2, r3, #16 - 2e4d2: e942 5504 strd r5, r5, [r2, #-16] - 2e4d6: e942 5502 strd r5, r5, [r2, #-8] - 2e4da: 3210 adds r2, #16 - 2e4dc: 4572 cmp r2, lr - 2e4de: d1f8 bne.n 2e4d2 - 2e4e0: f10c 0201 add.w r2, ip, #1 - 2e4e4: f014 0f0c tst.w r4, #12 - 2e4e8: eb03 1202 add.w r2, r3, r2, lsl #4 - 2e4ec: f004 0c0f and.w ip, r4, #15 - 2e4f0: d013 beq.n 2e51a - 2e4f2: f1ac 0304 sub.w r3, ip, #4 - 2e4f6: f023 0303 bic.w r3, r3, #3 - 2e4fa: 3304 adds r3, #4 - 2e4fc: 4413 add r3, r2 - 2e4fe: f842 5b04 str.w r5, [r2], #4 - 2e502: 4293 cmp r3, r2 - 2e504: d1fb bne.n 2e4fe - 2e506: f00c 0403 and.w r4, ip, #3 - 2e50a: b12c cbz r4, 2e518 - 2e50c: b2c9 uxtb r1, r1 - 2e50e: 441c add r4, r3 - 2e510: f803 1b01 strb.w r1, [r3], #1 - 2e514: 429c cmp r4, r3 - 2e516: d1fb bne.n 2e510 - 2e518: bd30 pop {r4, r5, pc} - 2e51a: 4664 mov r4, ip - 2e51c: 4613 mov r3, r2 - 2e51e: 2c00 cmp r4, #0 - 2e520: d1f4 bne.n 2e50c - 2e522: e7f9 b.n 2e518 - 2e524: 4603 mov r3, r0 - 2e526: 4614 mov r4, r2 - 2e528: e7bf b.n 2e4aa - 2e52a: 461a mov r2, r3 - 2e52c: 46a4 mov ip, r4 - 2e52e: e7e0 b.n 2e4f2 - -0002e530 : - 2e530: 0783 lsls r3, r0, #30 - 2e532: b510 push {r4, lr} - 2e534: 4604 mov r4, r0 - 2e536: d110 bne.n 2e55a - 2e538: 6802 ldr r2, [r0, #0] - 2e53a: f1a2 3301 sub.w r3, r2, #16843009 ; 0x1010101 - 2e53e: ea23 0302 bic.w r3, r3, r2 - 2e542: f013 3f80 tst.w r3, #2155905152 ; 0x80808080 - 2e546: d108 bne.n 2e55a - 2e548: f850 2f04 ldr.w r2, [r0, #4]! - 2e54c: f1a2 3301 sub.w r3, r2, #16843009 ; 0x1010101 - 2e550: ea23 0302 bic.w r3, r3, r2 - 2e554: f013 3f80 tst.w r3, #2155905152 ; 0x80808080 - 2e558: d0f6 beq.n 2e548 - 2e55a: 7803 ldrb r3, [r0, #0] - 2e55c: b11b cbz r3, 2e566 - 2e55e: f810 3f01 ldrb.w r3, [r0, #1]! - 2e562: 2b00 cmp r3, #0 - 2e564: d1fb bne.n 2e55e - 2e566: f000 fa09 bl 2e97c - 2e56a: 4620 mov r0, r4 - 2e56c: bd10 pop {r4, pc} - 2e56e: bf00 nop - -0002e570 : - 2e570: ea40 0301 orr.w r3, r0, r1 - 2e574: 079b lsls r3, r3, #30 + 2e154: 6099 str r1, [r3, #8] + 2e156: d82d bhi.n 2e1b4 <_realloc_r+0x318> + 2e158: 2a13 cmp r2, #19 + 2e15a: d929 bls.n 2e1b0 <_realloc_r+0x314> + 2e15c: 6823 ldr r3, [r4, #0] + 2e15e: f8ca 3008 str.w r3, [sl, #8] + 2e162: 6863 ldr r3, [r4, #4] + 2e164: f8ca 300c str.w r3, [sl, #12] + 2e168: 2a1b cmp r2, #27 + 2e16a: d842 bhi.n 2e1f2 <_realloc_r+0x356> + 2e16c: 3408 adds r4, #8 + 2e16e: f10a 0310 add.w r3, sl, #16 + 2e172: 6822 ldr r2, [r4, #0] + 2e174: 601a str r2, [r3, #0] + 2e176: 6862 ldr r2, [r4, #4] + 2e178: 605a str r2, [r3, #4] + 2e17a: 68a2 ldr r2, [r4, #8] + 2e17c: 609a str r2, [r3, #8] + 2e17e: 4666 mov r6, ip + 2e180: 46d1 mov r9, sl + 2e182: 463c mov r4, r7 + 2e184: e707 b.n 2df96 <_realloc_r+0xfa> + 2e186: 68a3 ldr r3, [r4, #8] + 2e188: 6083 str r3, [r0, #8] + 2e18a: 68e3 ldr r3, [r4, #12] + 2e18c: 60c3 str r3, [r0, #12] + 2e18e: 2a24 cmp r2, #36 ; 0x24 + 2e190: d026 beq.n 2e1e0 <_realloc_r+0x344> + 2e192: f104 0210 add.w r2, r4, #16 + 2e196: f100 0310 add.w r3, r0, #16 + 2e19a: e6db b.n 2df54 <_realloc_r+0xb8> + 2e19c: 463a mov r2, r7 + 2e19e: e7bf b.n 2e120 <_realloc_r+0x284> + 2e1a0: 4621 mov r1, r4 + 2e1a2: 4638 mov r0, r7 + 2e1a4: 461e mov r6, r3 + 2e1a6: 46d1 mov r9, sl + 2e1a8: f000 f968 bl 2e47c + 2e1ac: 463c mov r4, r7 + 2e1ae: e6f2 b.n 2df96 <_realloc_r+0xfa> + 2e1b0: 463b mov r3, r7 + 2e1b2: e7de b.n 2e172 <_realloc_r+0x2d6> + 2e1b4: 4621 mov r1, r4 + 2e1b6: 4638 mov r0, r7 + 2e1b8: 4666 mov r6, ip + 2e1ba: 46d1 mov r9, sl + 2e1bc: f000 f95e bl 2e47c + 2e1c0: 463c mov r4, r7 + 2e1c2: e6e8 b.n 2df96 <_realloc_r+0xfa> + 2e1c4: 20004e54 .word 0x20004e54 + 2e1c8: 68a1 ldr r1, [r4, #8] + 2e1ca: f8ca 1010 str.w r1, [sl, #16] + 2e1ce: 68e1 ldr r1, [r4, #12] + 2e1d0: f8ca 1014 str.w r1, [sl, #20] + 2e1d4: 2a24 cmp r2, #36 ; 0x24 + 2e1d6: d020 beq.n 2e21a <_realloc_r+0x37e> + 2e1d8: 3410 adds r4, #16 + 2e1da: f10a 0218 add.w r2, sl, #24 + 2e1de: e79f b.n 2e120 <_realloc_r+0x284> + 2e1e0: 6923 ldr r3, [r4, #16] + 2e1e2: 6103 str r3, [r0, #16] + 2e1e4: 6961 ldr r1, [r4, #20] + 2e1e6: 6141 str r1, [r0, #20] + 2e1e8: f104 0218 add.w r2, r4, #24 + 2e1ec: f100 0318 add.w r3, r0, #24 + 2e1f0: e6b0 b.n 2df54 <_realloc_r+0xb8> + 2e1f2: 68a3 ldr r3, [r4, #8] + 2e1f4: f8ca 3010 str.w r3, [sl, #16] + 2e1f8: 68e3 ldr r3, [r4, #12] + 2e1fa: f8ca 3014 str.w r3, [sl, #20] + 2e1fe: 2a24 cmp r2, #36 ; 0x24 + 2e200: d021 beq.n 2e246 <_realloc_r+0x3aa> + 2e202: 3410 adds r4, #16 + 2e204: f10a 0318 add.w r3, sl, #24 + 2e208: e7b3 b.n 2e172 <_realloc_r+0x2d6> + 2e20a: 463a mov r2, r7 + 2e20c: e733 b.n 2e076 <_realloc_r+0x1da> + 2e20e: 4621 mov r1, r4 + 2e210: 4638 mov r0, r7 + 2e212: f000 f933 bl 2e47c + 2e216: 4b16 ldr r3, [pc, #88] ; (2e270 <_realloc_r+0x3d4>) + 2e218: e733 b.n 2e082 <_realloc_r+0x1e6> + 2e21a: 6922 ldr r2, [r4, #16] + 2e21c: f8ca 2018 str.w r2, [sl, #24] + 2e220: 6962 ldr r2, [r4, #20] + 2e222: f8ca 201c str.w r2, [sl, #28] + 2e226: 3418 adds r4, #24 + 2e228: f10a 0220 add.w r2, sl, #32 + 2e22c: e778 b.n 2e120 <_realloc_r+0x284> + 2e22e: 68a1 ldr r1, [r4, #8] + 2e230: f8ca 1010 str.w r1, [sl, #16] + 2e234: 68e1 ldr r1, [r4, #12] + 2e236: f8ca 1014 str.w r1, [sl, #20] + 2e23a: 2a24 cmp r2, #36 ; 0x24 + 2e23c: d00d beq.n 2e25a <_realloc_r+0x3be> + 2e23e: 3410 adds r4, #16 + 2e240: f10a 0218 add.w r2, sl, #24 + 2e244: e717 b.n 2e076 <_realloc_r+0x1da> + 2e246: 6923 ldr r3, [r4, #16] + 2e248: f8ca 3018 str.w r3, [sl, #24] + 2e24c: 6963 ldr r3, [r4, #20] + 2e24e: f8ca 301c str.w r3, [sl, #28] + 2e252: 3418 adds r4, #24 + 2e254: f10a 0320 add.w r3, sl, #32 + 2e258: e78b b.n 2e172 <_realloc_r+0x2d6> + 2e25a: 6922 ldr r2, [r4, #16] + 2e25c: f8ca 2018 str.w r2, [sl, #24] + 2e260: 6962 ldr r2, [r4, #20] + 2e262: f8ca 201c str.w r2, [sl, #28] + 2e266: 3418 adds r4, #24 + 2e268: f10a 0220 add.w r2, sl, #32 + 2e26c: e703 b.n 2e076 <_realloc_r+0x1da> + 2e26e: bf00 nop + 2e270: 20004e54 .word 0x20004e54 + +0002e274 : + 2e274: b40e push {r1, r2, r3} + 2e276: b510 push {r4, lr} + 2e278: b09d sub sp, #116 ; 0x74 + 2e27a: f06f 4100 mvn.w r1, #2147483648 ; 0x80000000 + 2e27e: ab1f add r3, sp, #124 ; 0x7c + 2e280: e9cd 0106 strd r0, r1, [sp, #24] + 2e284: 9104 str r1, [sp, #16] + 2e286: 4909 ldr r1, [pc, #36] ; (2e2ac ) + 2e288: f853 2b04 ldr.w r2, [r3], #4 + 2e28c: 9002 str r0, [sp, #8] + 2e28e: 4c08 ldr r4, [pc, #32] ; (2e2b0 ) + 2e290: 6808 ldr r0, [r1, #0] + 2e292: 9301 str r3, [sp, #4] + 2e294: a902 add r1, sp, #8 + 2e296: 9405 str r4, [sp, #20] + 2e298: f000 fef2 bl 2f080 <_svfprintf_r> + 2e29c: 9b02 ldr r3, [sp, #8] + 2e29e: 2200 movs r2, #0 + 2e2a0: 701a strb r2, [r3, #0] + 2e2a2: b01d add sp, #116 ; 0x74 + 2e2a4: e8bd 4010 ldmia.w sp!, {r4, lr} + 2e2a8: b003 add sp, #12 + 2e2aa: 4770 bx lr + 2e2ac: 20005270 .word 0x20005270 + 2e2b0: ffff0208 .word 0xffff0208 + +0002e2b4 : + 2e2b4: 4a02 ldr r2, [pc, #8] ; (2e2c0 ) + 2e2b6: 4903 ldr r1, [pc, #12] ; (2e2c4 ) + 2e2b8: 4803 ldr r0, [pc, #12] ; (2e2c8 ) + 2e2ba: f000 b8bb b.w 2e434 <_fwalk_sglue> + 2e2be: bf00 nop + 2e2c0: 20005264 .word 0x20005264 + 2e2c4: 0003133d .word 0x0003133d + 2e2c8: 20004b40 .word 0x20004b40 + +0002e2cc : + 2e2cc: 4b0c ldr r3, [pc, #48] ; (2e300 ) + 2e2ce: 6841 ldr r1, [r0, #4] + 2e2d0: 4299 cmp r1, r3 + 2e2d2: b510 push {r4, lr} + 2e2d4: 4604 mov r4, r0 + 2e2d6: d001 beq.n 2e2dc + 2e2d8: f003 f830 bl 3133c <_fclose_r> + 2e2dc: 68a1 ldr r1, [r4, #8] + 2e2de: 4b09 ldr r3, [pc, #36] ; (2e304 ) + 2e2e0: 4299 cmp r1, r3 + 2e2e2: d002 beq.n 2e2ea + 2e2e4: 4620 mov r0, r4 + 2e2e6: f003 f829 bl 3133c <_fclose_r> + 2e2ea: 68e1 ldr r1, [r4, #12] + 2e2ec: 4b06 ldr r3, [pc, #24] ; (2e308 ) + 2e2ee: 4299 cmp r1, r3 + 2e2f0: d004 beq.n 2e2fc + 2e2f2: 4620 mov r0, r4 + 2e2f4: e8bd 4010 ldmia.w sp!, {r4, lr} + 2e2f8: f003 b820 b.w 3133c <_fclose_r> + 2e2fc: bd10 pop {r4, pc} + 2e2fe: bf00 nop + 2e300: 2000b914 .word 0x2000b914 + 2e304: 2000b97c .word 0x2000b97c + 2e308: 2000b9e4 .word 0x2000b9e4 + +0002e30c : + 2e30c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 2e310: 4c2a ldr r4, [pc, #168] ; (2e3bc ) + 2e312: 4b2b ldr r3, [pc, #172] ; (2e3c0 ) + 2e314: 482b ldr r0, [pc, #172] ; (2e3c4 ) + 2e316: f8df 90c0 ldr.w r9, [pc, #192] ; 2e3d8 + 2e31a: f8df 80c0 ldr.w r8, [pc, #192] ; 2e3dc + 2e31e: 4f2a ldr r7, [pc, #168] ; (2e3c8 ) + 2e320: 6018 str r0, [r3, #0] + 2e322: 2500 movs r5, #0 + 2e324: 2304 movs r3, #4 + 2e326: 2208 movs r2, #8 + 2e328: 4629 mov r1, r5 + 2e32a: f104 005c add.w r0, r4, #92 ; 0x5c + 2e32e: 4e27 ldr r6, [pc, #156] ; (2e3cc ) + 2e330: 6665 str r5, [r4, #100] ; 0x64 + 2e332: e9c4 5302 strd r5, r3, [r4, #8] + 2e336: e9c4 5500 strd r5, r5, [r4] + 2e33a: e9c4 5504 strd r5, r5, [r4, #16] + 2e33e: 61a5 str r5, [r4, #24] + 2e340: f000 f918 bl 2e574 + 2e344: 4b22 ldr r3, [pc, #136] ; (2e3d0 ) + 2e346: 6763 str r3, [r4, #116] ; 0x74 + 2e348: 2208 movs r2, #8 + 2e34a: 4629 mov r1, r5 + 2e34c: f104 00c4 add.w r0, r4, #196 ; 0xc4 + 2e350: e9c4 4907 strd r4, r9, [r4, #28] + 2e354: e9c4 8709 strd r8, r7, [r4, #36] ; 0x24 + 2e358: e9c4 551a strd r5, r5, [r4, #104] ; 0x68 + 2e35c: e9c4 551e strd r5, r5, [r4, #120] ; 0x78 + 2e360: f8c4 50cc str.w r5, [r4, #204] ; 0xcc + 2e364: 6725 str r5, [r4, #112] ; 0x70 + 2e366: f8c4 5080 str.w r5, [r4, #128] ; 0x80 + 2e36a: 62e6 str r6, [r4, #44] ; 0x2c + 2e36c: f000 f902 bl 2e574 + 2e370: 4b18 ldr r3, [pc, #96] ; (2e3d4 ) + 2e372: f8c4 30dc str.w r3, [r4, #220] ; 0xdc + 2e376: 4629 mov r1, r5 + 2e378: f104 0368 add.w r3, r4, #104 ; 0x68 + 2e37c: 2208 movs r2, #8 + 2e37e: f504 7096 add.w r0, r4, #300 ; 0x12c + 2e382: f8c4 3084 str.w r3, [r4, #132] ; 0x84 + 2e386: e9c4 9822 strd r9, r8, [r4, #136] ; 0x88 + 2e38a: e9c4 7624 strd r7, r6, [r4, #144] ; 0x90 + 2e38e: e9c4 5534 strd r5, r5, [r4, #208] ; 0xd0 + 2e392: e9c4 5538 strd r5, r5, [r4, #224] ; 0xe0 + 2e396: f8c4 5134 str.w r5, [r4, #308] ; 0x134 + 2e39a: f8c4 50d8 str.w r5, [r4, #216] ; 0xd8 + 2e39e: f8c4 50e8 str.w r5, [r4, #232] ; 0xe8 + 2e3a2: f000 f8e7 bl 2e574 + 2e3a6: f104 03d0 add.w r3, r4, #208 ; 0xd0 + 2e3aa: e9c4 983c strd r9, r8, [r4, #240] ; 0xf0 + 2e3ae: e9c4 763e strd r7, r6, [r4, #248] ; 0xf8 + 2e3b2: f8c4 30ec str.w r3, [r4, #236] ; 0xec + 2e3b6: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 2e3ba: bf00 nop + 2e3bc: 2000b914 .word 0x2000b914 + 2e3c0: 2000ba4c .word 0x2000ba4c + 2e3c4: 0002e2b5 .word 0x0002e2b5 + 2e3c8: 000315ed .word 0x000315ed + 2e3cc: 0003160d .word 0x0003160d + 2e3d0: 00010009 .word 0x00010009 + 2e3d4: 00020012 .word 0x00020012 + 2e3d8: 00031589 .word 0x00031589 + 2e3dc: 000315ad .word 0x000315ad + +0002e3e0 <__sinit>: + 2e3e0: b510 push {r4, lr} + 2e3e2: 4604 mov r4, r0 + 2e3e4: 480a ldr r0, [pc, #40] ; (2e410 <__sinit+0x30>) + 2e3e6: f000 fbbf bl 2eb68 <__retarget_lock_acquire_recursive> + 2e3ea: 6b63 ldr r3, [r4, #52] ; 0x34 + 2e3ec: b923 cbnz r3, 2e3f8 <__sinit+0x18> + 2e3ee: 4b09 ldr r3, [pc, #36] ; (2e414 <__sinit+0x34>) + 2e3f0: 4a09 ldr r2, [pc, #36] ; (2e418 <__sinit+0x38>) + 2e3f2: 681b ldr r3, [r3, #0] + 2e3f4: 6362 str r2, [r4, #52] ; 0x34 + 2e3f6: b123 cbz r3, 2e402 <__sinit+0x22> + 2e3f8: e8bd 4010 ldmia.w sp!, {r4, lr} + 2e3fc: 4804 ldr r0, [pc, #16] ; (2e410 <__sinit+0x30>) + 2e3fe: f000 bbb5 b.w 2eb6c <__retarget_lock_release_recursive> + 2e402: f7ff ff83 bl 2e30c + 2e406: e8bd 4010 ldmia.w sp!, {r4, lr} + 2e40a: 4801 ldr r0, [pc, #4] ; (2e410 <__sinit+0x30>) + 2e40c: f000 bbae b.w 2eb6c <__retarget_lock_release_recursive> + 2e410: 2000b8dc .word 0x2000b8dc + 2e414: 2000ba4c .word 0x2000ba4c + 2e418: 0002e2cd .word 0x0002e2cd + +0002e41c <__sfp_lock_acquire>: + 2e41c: 4801 ldr r0, [pc, #4] ; (2e424 <__sfp_lock_acquire+0x8>) + 2e41e: f000 bba3 b.w 2eb68 <__retarget_lock_acquire_recursive> + 2e422: bf00 nop + 2e424: 2000b8dc .word 0x2000b8dc + +0002e428 <__sfp_lock_release>: + 2e428: 4801 ldr r0, [pc, #4] ; (2e430 <__sfp_lock_release+0x8>) + 2e42a: f000 bb9f b.w 2eb6c <__retarget_lock_release_recursive> + 2e42e: bf00 nop + 2e430: 2000b8dc .word 0x2000b8dc + +0002e434 <_fwalk_sglue>: + 2e434: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 2e438: 4680 mov r8, r0 + 2e43a: 460f mov r7, r1 + 2e43c: 4616 mov r6, r2 + 2e43e: f04f 0900 mov.w r9, #0 + 2e442: e9d6 5401 ldrd r5, r4, [r6, #4] + 2e446: 3d01 subs r5, #1 + 2e448: d411 bmi.n 2e46e <_fwalk_sglue+0x3a> + 2e44a: 89a3 ldrh r3, [r4, #12] + 2e44c: 2b01 cmp r3, #1 + 2e44e: f105 35ff add.w r5, r5, #4294967295 ; 0xffffffff + 2e452: d908 bls.n 2e466 <_fwalk_sglue+0x32> + 2e454: f9b4 300e ldrsh.w r3, [r4, #14] + 2e458: 3301 adds r3, #1 + 2e45a: 4621 mov r1, r4 + 2e45c: d003 beq.n 2e466 <_fwalk_sglue+0x32> + 2e45e: 4640 mov r0, r8 + 2e460: 47b8 blx r7 + 2e462: ea49 0900 orr.w r9, r9, r0 + 2e466: 1c6b adds r3, r5, #1 + 2e468: f104 0468 add.w r4, r4, #104 ; 0x68 + 2e46c: d1ed bne.n 2e44a <_fwalk_sglue+0x16> + 2e46e: 6836 ldr r6, [r6, #0] + 2e470: 2e00 cmp r6, #0 + 2e472: d1e6 bne.n 2e442 <_fwalk_sglue+0xe> + 2e474: 4648 mov r0, r9 + 2e476: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 2e47a: bf00 nop + +0002e47c : + 2e47c: 4288 cmp r0, r1 + 2e47e: d90d bls.n 2e49c + 2e480: 188b adds r3, r1, r2 + 2e482: 4283 cmp r3, r0 + 2e484: d90a bls.n 2e49c + 2e486: eb00 0c02 add.w ip, r0, r2 + 2e48a: b1ba cbz r2, 2e4bc + 2e48c: 4662 mov r2, ip + 2e48e: f813 cd01 ldrb.w ip, [r3, #-1]! + 2e492: f802 cd01 strb.w ip, [r2, #-1]! + 2e496: 4299 cmp r1, r3 + 2e498: d1f9 bne.n 2e48e + 2e49a: 4770 bx lr + 2e49c: 2a0f cmp r2, #15 + 2e49e: d80e bhi.n 2e4be + 2e4a0: 4603 mov r3, r0 + 2e4a2: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff + 2e4a6: b14a cbz r2, 2e4bc + 2e4a8: f10c 0c01 add.w ip, ip, #1 + 2e4ac: 3b01 subs r3, #1 + 2e4ae: 448c add ip, r1 + 2e4b0: f811 2b01 ldrb.w r2, [r1], #1 + 2e4b4: f803 2f01 strb.w r2, [r3, #1]! + 2e4b8: 4561 cmp r1, ip + 2e4ba: d1f9 bne.n 2e4b0 + 2e4bc: 4770 bx lr + 2e4be: ea40 0301 orr.w r3, r0, r1 + 2e4c2: 079b lsls r3, r3, #30 + 2e4c4: d150 bne.n 2e568 + 2e4c6: f1a2 0310 sub.w r3, r2, #16 + 2e4ca: b570 push {r4, r5, r6, lr} + 2e4cc: f101 0c20 add.w ip, r1, #32 + 2e4d0: f023 050f bic.w r5, r3, #15 + 2e4d4: f101 0e10 add.w lr, r1, #16 + 2e4d8: f100 0410 add.w r4, r0, #16 + 2e4dc: 44ac add ip, r5 + 2e4de: 091b lsrs r3, r3, #4 + 2e4e0: f85e 5c10 ldr.w r5, [lr, #-16] + 2e4e4: f844 5c10 str.w r5, [r4, #-16] + 2e4e8: f85e 5c0c ldr.w r5, [lr, #-12] + 2e4ec: f844 5c0c str.w r5, [r4, #-12] + 2e4f0: f85e 5c08 ldr.w r5, [lr, #-8] + 2e4f4: f844 5c08 str.w r5, [r4, #-8] + 2e4f8: f85e 5c04 ldr.w r5, [lr, #-4] + 2e4fc: f844 5c04 str.w r5, [r4, #-4] + 2e500: f10e 0e10 add.w lr, lr, #16 + 2e504: 45e6 cmp lr, ip + 2e506: f104 0410 add.w r4, r4, #16 + 2e50a: d1e9 bne.n 2e4e0 + 2e50c: 3301 adds r3, #1 + 2e50e: f012 0f0c tst.w r2, #12 + 2e512: eb01 1103 add.w r1, r1, r3, lsl #4 + 2e516: f002 040f and.w r4, r2, #15 + 2e51a: eb00 1303 add.w r3, r0, r3, lsl #4 + 2e51e: d027 beq.n 2e570 + 2e520: 3c04 subs r4, #4 + 2e522: f024 0603 bic.w r6, r4, #3 + 2e526: ea4f 0c94 mov.w ip, r4, lsr #2 + 2e52a: 441e add r6, r3 + 2e52c: 1f1c subs r4, r3, #4 + 2e52e: 468e mov lr, r1 + 2e530: f85e 5b04 ldr.w r5, [lr], #4 + 2e534: f844 5f04 str.w r5, [r4, #4]! + 2e538: 42b4 cmp r4, r6 + 2e53a: d1f9 bne.n 2e530 + 2e53c: f10c 0401 add.w r4, ip, #1 + 2e540: f002 0203 and.w r2, r2, #3 + 2e544: eb03 0384 add.w r3, r3, r4, lsl #2 + 2e548: eb01 0184 add.w r1, r1, r4, lsl #2 + 2e54c: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff + 2e550: b14a cbz r2, 2e566 + 2e552: f10c 0c01 add.w ip, ip, #1 + 2e556: 3b01 subs r3, #1 + 2e558: 448c add ip, r1 + 2e55a: f811 2b01 ldrb.w r2, [r1], #1 + 2e55e: f803 2f01 strb.w r2, [r3, #1]! + 2e562: 4561 cmp r1, ip + 2e564: d1f9 bne.n 2e55a + 2e566: bd70 pop {r4, r5, r6, pc} + 2e568: f102 3cff add.w ip, r2, #4294967295 ; 0xffffffff + 2e56c: 4603 mov r3, r0 + 2e56e: e79b b.n 2e4a8 + 2e570: 4622 mov r2, r4 + 2e572: e7eb b.n 2e54c + +0002e574 : + 2e574: 0783 lsls r3, r0, #30 2e576: b530 push {r4, r5, lr} - 2e578: d101 bne.n 2e57e - 2e57a: 2a03 cmp r2, #3 - 2e57c: d80f bhi.n 2e59e - 2e57e: 4684 mov ip, r0 - 2e580: f101 3eff add.w lr, r1, #4294967295 ; 0xffffffff - 2e584: e007 b.n 2e596 - 2e586: f81e 1f01 ldrb.w r1, [lr, #1]! - 2e58a: f803 1b01 strb.w r1, [r3], #1 - 2e58e: 1e54 subs r4, r2, #1 - 2e590: b1c1 cbz r1, 2e5c4 - 2e592: 469c mov ip, r3 - 2e594: 4622 mov r2, r4 - 2e596: 4663 mov r3, ip - 2e598: 2a00 cmp r2, #0 - 2e59a: d1f4 bne.n 2e586 - 2e59c: bd30 pop {r4, r5, pc} - 2e59e: 460b mov r3, r1 - 2e5a0: 4684 mov ip, r0 - 2e5a2: 4619 mov r1, r3 - 2e5a4: f853 5b04 ldr.w r5, [r3], #4 - 2e5a8: f1a5 3401 sub.w r4, r5, #16843009 ; 0x1010101 - 2e5ac: ea24 0405 bic.w r4, r4, r5 - 2e5b0: f014 3f80 tst.w r4, #2155905152 ; 0x80808080 - 2e5b4: d1e4 bne.n 2e580 - 2e5b6: 3a04 subs r2, #4 - 2e5b8: 2a03 cmp r2, #3 - 2e5ba: f84c 5b04 str.w r5, [ip], #4 - 2e5be: 4619 mov r1, r3 - 2e5c0: d8ef bhi.n 2e5a2 - 2e5c2: e7dd b.n 2e580 - 2e5c4: 4494 add ip, r2 - 2e5c6: 2c00 cmp r4, #0 - 2e5c8: d0e8 beq.n 2e59c - 2e5ca: f803 1b01 strb.w r1, [r3], #1 - 2e5ce: 4563 cmp r3, ip - 2e5d0: d1fb bne.n 2e5ca - 2e5d2: bd30 pop {r4, r5, pc} - -0002e5d4 : - 2e5d4: ea41 0300 orr.w r3, r1, r0 - 2e5d8: 079b lsls r3, r3, #30 - 2e5da: d115 bne.n 2e608 - 2e5dc: 680b ldr r3, [r1, #0] - 2e5de: f1a3 3201 sub.w r2, r3, #16843009 ; 0x1010101 - 2e5e2: ea22 0203 bic.w r2, r2, r3 - 2e5e6: f012 3f80 tst.w r2, #2155905152 ; 0x80808080 - 2e5ea: d10d bne.n 2e608 - 2e5ec: f101 0c04 add.w ip, r1, #4 - 2e5f0: f840 3b04 str.w r3, [r0], #4 - 2e5f4: 4661 mov r1, ip - 2e5f6: f85c 3b04 ldr.w r3, [ip], #4 - 2e5fa: f1a3 3201 sub.w r2, r3, #16843009 ; 0x1010101 - 2e5fe: ea22 0203 bic.w r2, r2, r3 - 2e602: f012 3f80 tst.w r2, #2155905152 ; 0x80808080 - 2e606: d0f3 beq.n 2e5f0 - 2e608: 4603 mov r3, r0 - 2e60a: f811 2b01 ldrb.w r2, [r1], #1 - 2e60e: 4618 mov r0, r3 - 2e610: f803 2b01 strb.w r2, [r3], #1 - 2e614: 2a00 cmp r2, #0 - 2e616: d1f8 bne.n 2e60a - 2e618: 4770 bx lr - 2e61a: bf00 nop - -0002e61c <__locale_mb_cur_max>: - 2e61c: 4b01 ldr r3, [pc, #4] ; (2e624 <__locale_mb_cur_max+0x8>) - 2e61e: f893 0128 ldrb.w r0, [r3, #296] ; 0x128 - 2e622: 4770 bx lr - 2e624: 20004c28 .word 0x20004c28 - -0002e628 <__cxa_atexit>: - 2e628: 4613 mov r3, r2 - 2e62a: 460a mov r2, r1 - 2e62c: 4601 mov r1, r0 - 2e62e: 2002 movs r0, #2 - 2e630: f000 baf4 b.w 2ec1c <__register_exitproc> - -0002e634 <_sbrk_r>: - 2e634: b538 push {r3, r4, r5, lr} - 2e636: 4d07 ldr r5, [pc, #28] ; (2e654 <_sbrk_r+0x20>) - 2e638: 2200 movs r2, #0 - 2e63a: 4604 mov r4, r0 - 2e63c: 4608 mov r0, r1 - 2e63e: 602a str r2, [r5, #0] - 2e640: f7fc fb6c bl 2ad1c <_sbrk> - 2e644: 1c43 adds r3, r0, #1 - 2e646: d000 beq.n 2e64a <_sbrk_r+0x16> - 2e648: bd38 pop {r3, r4, r5, pc} - 2e64a: 682b ldr r3, [r5, #0] - 2e64c: 2b00 cmp r3, #0 - 2e64e: d0fb beq.n 2e648 <_sbrk_r+0x14> - 2e650: 6023 str r3, [r4, #0] - 2e652: bd38 pop {r3, r4, r5, pc} - 2e654: 2000ba48 .word 0x2000ba48 - -0002e658 <_write_r>: - 2e658: b538 push {r3, r4, r5, lr} - 2e65a: 460c mov r4, r1 - 2e65c: 4d08 ldr r5, [pc, #32] ; (2e680 <_write_r+0x28>) - 2e65e: 4684 mov ip, r0 - 2e660: 4611 mov r1, r2 - 2e662: 4620 mov r0, r4 - 2e664: 461a mov r2, r3 - 2e666: 2300 movs r3, #0 - 2e668: 602b str r3, [r5, #0] - 2e66a: 4664 mov r4, ip - 2e66c: f7fb fc10 bl 29e90 <_write> - 2e670: 1c43 adds r3, r0, #1 - 2e672: d000 beq.n 2e676 <_write_r+0x1e> - 2e674: bd38 pop {r3, r4, r5, pc} - 2e676: 682b ldr r3, [r5, #0] - 2e678: 2b00 cmp r3, #0 - 2e67a: d0fb beq.n 2e674 <_write_r+0x1c> - 2e67c: 6023 str r3, [r4, #0] - 2e67e: bd38 pop {r3, r4, r5, pc} - 2e680: 2000ba48 .word 0x2000ba48 - -0002e684 <__errno>: - 2e684: 4b01 ldr r3, [pc, #4] ; (2e68c <__errno+0x8>) - 2e686: 6818 ldr r0, [r3, #0] - 2e688: 4770 bx lr - 2e68a: bf00 nop - 2e68c: 200051b0 .word 0x200051b0 + 2e578: d048 beq.n 2e60c + 2e57a: 1e54 subs r4, r2, #1 + 2e57c: 2a00 cmp r2, #0 + 2e57e: d03f beq.n 2e600 + 2e580: b2ca uxtb r2, r1 + 2e582: 4603 mov r3, r0 + 2e584: e001 b.n 2e58a + 2e586: 3c01 subs r4, #1 + 2e588: d33a bcc.n 2e600 + 2e58a: f803 2b01 strb.w r2, [r3], #1 + 2e58e: 079d lsls r5, r3, #30 + 2e590: d1f9 bne.n 2e586 + 2e592: 2c03 cmp r4, #3 + 2e594: d92d bls.n 2e5f2 + 2e596: b2cd uxtb r5, r1 + 2e598: ea45 2505 orr.w r5, r5, r5, lsl #8 + 2e59c: 2c0f cmp r4, #15 + 2e59e: ea45 4505 orr.w r5, r5, r5, lsl #16 + 2e5a2: d936 bls.n 2e612 + 2e5a4: f1a4 0210 sub.w r2, r4, #16 + 2e5a8: f022 0c0f bic.w ip, r2, #15 + 2e5ac: f103 0e20 add.w lr, r3, #32 + 2e5b0: 44e6 add lr, ip + 2e5b2: ea4f 1c12 mov.w ip, r2, lsr #4 + 2e5b6: f103 0210 add.w r2, r3, #16 + 2e5ba: e942 5504 strd r5, r5, [r2, #-16] + 2e5be: e942 5502 strd r5, r5, [r2, #-8] + 2e5c2: 3210 adds r2, #16 + 2e5c4: 4572 cmp r2, lr + 2e5c6: d1f8 bne.n 2e5ba + 2e5c8: f10c 0201 add.w r2, ip, #1 + 2e5cc: f014 0f0c tst.w r4, #12 + 2e5d0: eb03 1202 add.w r2, r3, r2, lsl #4 + 2e5d4: f004 0c0f and.w ip, r4, #15 + 2e5d8: d013 beq.n 2e602 + 2e5da: f1ac 0304 sub.w r3, ip, #4 + 2e5de: f023 0303 bic.w r3, r3, #3 + 2e5e2: 3304 adds r3, #4 + 2e5e4: 4413 add r3, r2 + 2e5e6: f842 5b04 str.w r5, [r2], #4 + 2e5ea: 4293 cmp r3, r2 + 2e5ec: d1fb bne.n 2e5e6 + 2e5ee: f00c 0403 and.w r4, ip, #3 + 2e5f2: b12c cbz r4, 2e600 + 2e5f4: b2c9 uxtb r1, r1 + 2e5f6: 441c add r4, r3 + 2e5f8: f803 1b01 strb.w r1, [r3], #1 + 2e5fc: 429c cmp r4, r3 + 2e5fe: d1fb bne.n 2e5f8 + 2e600: bd30 pop {r4, r5, pc} + 2e602: 4664 mov r4, ip + 2e604: 4613 mov r3, r2 + 2e606: 2c00 cmp r4, #0 + 2e608: d1f4 bne.n 2e5f4 + 2e60a: e7f9 b.n 2e600 + 2e60c: 4603 mov r3, r0 + 2e60e: 4614 mov r4, r2 + 2e610: e7bf b.n 2e592 + 2e612: 461a mov r2, r3 + 2e614: 46a4 mov ip, r4 + 2e616: e7e0 b.n 2e5da + +0002e618 : + 2e618: 0783 lsls r3, r0, #30 + 2e61a: b510 push {r4, lr} + 2e61c: 4604 mov r4, r0 + 2e61e: d110 bne.n 2e642 + 2e620: 6802 ldr r2, [r0, #0] + 2e622: f1a2 3301 sub.w r3, r2, #16843009 ; 0x1010101 + 2e626: ea23 0302 bic.w r3, r3, r2 + 2e62a: f013 3f80 tst.w r3, #2155905152 ; 0x80808080 + 2e62e: d108 bne.n 2e642 + 2e630: f850 2f04 ldr.w r2, [r0, #4]! + 2e634: f1a2 3301 sub.w r3, r2, #16843009 ; 0x1010101 + 2e638: ea23 0302 bic.w r3, r3, r2 + 2e63c: f013 3f80 tst.w r3, #2155905152 ; 0x80808080 + 2e640: d0f6 beq.n 2e630 + 2e642: 7803 ldrb r3, [r0, #0] + 2e644: b11b cbz r3, 2e64e + 2e646: f810 3f01 ldrb.w r3, [r0, #1]! + 2e64a: 2b00 cmp r3, #0 + 2e64c: d1fb bne.n 2e646 + 2e64e: f000 fa05 bl 2ea5c + 2e652: 4620 mov r0, r4 + 2e654: bd10 pop {r4, pc} + 2e656: bf00 nop + +0002e658 : + 2e658: ea40 0301 orr.w r3, r0, r1 + 2e65c: 079b lsls r3, r3, #30 + 2e65e: b530 push {r4, r5, lr} + 2e660: d101 bne.n 2e666 + 2e662: 2a03 cmp r2, #3 + 2e664: d80f bhi.n 2e686 + 2e666: 4684 mov ip, r0 + 2e668: f101 3eff add.w lr, r1, #4294967295 ; 0xffffffff + 2e66c: e007 b.n 2e67e + 2e66e: f81e 1f01 ldrb.w r1, [lr, #1]! + 2e672: f803 1b01 strb.w r1, [r3], #1 + 2e676: 1e54 subs r4, r2, #1 + 2e678: b1c1 cbz r1, 2e6ac + 2e67a: 469c mov ip, r3 + 2e67c: 4622 mov r2, r4 + 2e67e: 4663 mov r3, ip + 2e680: 2a00 cmp r2, #0 + 2e682: d1f4 bne.n 2e66e + 2e684: bd30 pop {r4, r5, pc} + 2e686: 460b mov r3, r1 + 2e688: 4684 mov ip, r0 + 2e68a: 4619 mov r1, r3 + 2e68c: f853 5b04 ldr.w r5, [r3], #4 + 2e690: f1a5 3401 sub.w r4, r5, #16843009 ; 0x1010101 + 2e694: ea24 0405 bic.w r4, r4, r5 + 2e698: f014 3f80 tst.w r4, #2155905152 ; 0x80808080 + 2e69c: d1e4 bne.n 2e668 + 2e69e: 3a04 subs r2, #4 + 2e6a0: 2a03 cmp r2, #3 + 2e6a2: f84c 5b04 str.w r5, [ip], #4 + 2e6a6: 4619 mov r1, r3 + 2e6a8: d8ef bhi.n 2e68a + 2e6aa: e7dd b.n 2e668 + 2e6ac: 4494 add ip, r2 + 2e6ae: 2c00 cmp r4, #0 + 2e6b0: d0e8 beq.n 2e684 + 2e6b2: f803 1b01 strb.w r1, [r3], #1 + 2e6b6: 4563 cmp r3, ip + 2e6b8: d1fb bne.n 2e6b2 + 2e6ba: bd30 pop {r4, r5, pc} + +0002e6bc : + 2e6bc: ea41 0300 orr.w r3, r1, r0 + 2e6c0: 079b lsls r3, r3, #30 + 2e6c2: d115 bne.n 2e6f0 + 2e6c4: 680b ldr r3, [r1, #0] + 2e6c6: f1a3 3201 sub.w r2, r3, #16843009 ; 0x1010101 + 2e6ca: ea22 0203 bic.w r2, r2, r3 + 2e6ce: f012 3f80 tst.w r2, #2155905152 ; 0x80808080 + 2e6d2: d10d bne.n 2e6f0 + 2e6d4: f101 0c04 add.w ip, r1, #4 + 2e6d8: f840 3b04 str.w r3, [r0], #4 + 2e6dc: 4661 mov r1, ip + 2e6de: f85c 3b04 ldr.w r3, [ip], #4 + 2e6e2: f1a3 3201 sub.w r2, r3, #16843009 ; 0x1010101 + 2e6e6: ea22 0203 bic.w r2, r2, r3 + 2e6ea: f012 3f80 tst.w r2, #2155905152 ; 0x80808080 + 2e6ee: d0f3 beq.n 2e6d8 + 2e6f0: 4603 mov r3, r0 + 2e6f2: f811 2b01 ldrb.w r2, [r1], #1 + 2e6f6: 4618 mov r0, r3 + 2e6f8: f803 2b01 strb.w r2, [r3], #1 + 2e6fc: 2a00 cmp r2, #0 + 2e6fe: d1f8 bne.n 2e6f2 + 2e700: 4770 bx lr + 2e702: bf00 nop + +0002e704 <__locale_mb_cur_max>: + 2e704: 4b01 ldr r3, [pc, #4] ; (2e70c <__locale_mb_cur_max+0x8>) + 2e706: f893 0128 ldrb.w r0, [r3, #296] ; 0x128 + 2e70a: 4770 bx lr + 2e70c: 20004ce8 .word 0x20004ce8 + +0002e710 <__cxa_atexit>: + 2e710: 4613 mov r3, r2 + 2e712: 460a mov r2, r1 + 2e714: 4601 mov r1, r0 + 2e716: 2002 movs r0, #2 + 2e718: f000 bb00 b.w 2ed1c <__register_exitproc> + +0002e71c <_sbrk_r>: + 2e71c: b538 push {r3, r4, r5, lr} + 2e71e: 4d07 ldr r5, [pc, #28] ; (2e73c <_sbrk_r+0x20>) + 2e720: 2200 movs r2, #0 + 2e722: 4604 mov r4, r0 + 2e724: 4608 mov r0, r1 + 2e726: 602a str r2, [r5, #0] + 2e728: f7fc fb6c bl 2ae04 <_sbrk> + 2e72c: 1c43 adds r3, r0, #1 + 2e72e: d000 beq.n 2e732 <_sbrk_r+0x16> + 2e730: bd38 pop {r3, r4, r5, pc} + 2e732: 682b ldr r3, [r5, #0] + 2e734: 2b00 cmp r3, #0 + 2e736: d0fb beq.n 2e730 <_sbrk_r+0x14> + 2e738: 6023 str r3, [r4, #0] + 2e73a: bd38 pop {r3, r4, r5, pc} + 2e73c: 2000ba68 .word 0x2000ba68 + +0002e740 <_write_r>: + 2e740: b538 push {r3, r4, r5, lr} + 2e742: 460c mov r4, r1 + 2e744: 4d08 ldr r5, [pc, #32] ; (2e768 <_write_r+0x28>) + 2e746: 4684 mov ip, r0 + 2e748: 4611 mov r1, r2 + 2e74a: 4620 mov r0, r4 + 2e74c: 461a mov r2, r3 + 2e74e: 2300 movs r3, #0 + 2e750: 602b str r3, [r5, #0] + 2e752: 4664 mov r4, ip + 2e754: f7fb fc12 bl 29f7c <_write> + 2e758: 1c43 adds r3, r0, #1 + 2e75a: d000 beq.n 2e75e <_write_r+0x1e> + 2e75c: bd38 pop {r3, r4, r5, pc} + 2e75e: 682b ldr r3, [r5, #0] + 2e760: 2b00 cmp r3, #0 + 2e762: d0fb beq.n 2e75c <_write_r+0x1c> + 2e764: 6023 str r3, [r4, #0] + 2e766: bd38 pop {r3, r4, r5, pc} + 2e768: 2000ba68 .word 0x2000ba68 + +0002e76c <__errno>: + 2e76c: 4b01 ldr r3, [pc, #4] ; (2e774 <__errno+0x8>) + 2e76e: 6818 ldr r0, [r3, #0] + 2e770: 4770 bx lr + 2e772: bf00 nop + 2e774: 20005270 .word 0x20005270 ... - 2e6a0: eba2 0003 sub.w r0, r2, r3 - 2e6a4: 4770 bx lr - 2e6a6: bf00 nop - -0002e6a8 : - 2e6a8: 7802 ldrb r2, [r0, #0] - 2e6aa: 780b ldrb r3, [r1, #0] - 2e6ac: 2a01 cmp r2, #1 - 2e6ae: bf28 it cs - 2e6b0: 429a cmpcs r2, r3 - 2e6b2: d1f5 bne.n 2e6a0 <__errno+0x1c> - 2e6b4: e96d 4504 strd r4, r5, [sp, #-16]! - 2e6b8: ea40 0401 orr.w r4, r0, r1 - 2e6bc: e9cd 6702 strd r6, r7, [sp, #8] - 2e6c0: f06f 0c00 mvn.w ip, #0 - 2e6c4: ea4f 7244 mov.w r2, r4, lsl #29 - 2e6c8: b312 cbz r2, 2e710 - 2e6ca: ea80 0401 eor.w r4, r0, r1 - 2e6ce: f014 0f07 tst.w r4, #7 - 2e6d2: d16a bne.n 2e7aa - 2e6d4: f000 0407 and.w r4, r0, #7 - 2e6d8: f020 0007 bic.w r0, r0, #7 - 2e6dc: f004 0503 and.w r5, r4, #3 - 2e6e0: f021 0107 bic.w r1, r1, #7 - 2e6e4: ea4f 05c5 mov.w r5, r5, lsl #3 - 2e6e8: e8f0 2304 ldrd r2, r3, [r0], #16 - 2e6ec: f014 0f04 tst.w r4, #4 - 2e6f0: e8f1 6704 ldrd r6, r7, [r1], #16 - 2e6f4: fa0c f405 lsl.w r4, ip, r5 - 2e6f8: ea62 0204 orn r2, r2, r4 - 2e6fc: ea66 0604 orn r6, r6, r4 - 2e700: d00a beq.n 2e718 - 2e702: ea63 0304 orn r3, r3, r4 - 2e706: 4662 mov r2, ip - 2e708: ea67 0704 orn r7, r7, r4 - 2e70c: 4666 mov r6, ip - 2e70e: e003 b.n 2e718 - 2e710: e8f0 2304 ldrd r2, r3, [r0], #16 - 2e714: e8f1 6704 ldrd r6, r7, [r1], #16 - 2e718: fa82 f54c uadd8 r5, r2, ip - 2e71c: ea82 0406 eor.w r4, r2, r6 - 2e720: faa4 f48c sel r4, r4, ip - 2e724: bb6c cbnz r4, 2e782 - 2e726: fa83 f54c uadd8 r5, r3, ip - 2e72a: ea83 0507 eor.w r5, r3, r7 - 2e72e: faa5 f58c sel r5, r5, ip - 2e732: b995 cbnz r5, 2e75a - 2e734: e950 2302 ldrd r2, r3, [r0, #-8] - 2e738: e951 6702 ldrd r6, r7, [r1, #-8] - 2e73c: fa82 f54c uadd8 r5, r2, ip - 2e740: ea82 0406 eor.w r4, r2, r6 - 2e744: faa4 f48c sel r4, r4, ip - 2e748: fa83 f54c uadd8 r5, r3, ip - 2e74c: ea83 0507 eor.w r5, r3, r7 - 2e750: faa5 f58c sel r5, r5, ip - 2e754: 4325 orrs r5, r4 - 2e756: d0db beq.n 2e710 - 2e758: b99c cbnz r4, 2e782 - 2e75a: ba2d rev r5, r5 - 2e75c: fab5 f485 clz r4, r5 - 2e760: f024 0407 bic.w r4, r4, #7 - 2e764: fa27 f104 lsr.w r1, r7, r4 - 2e768: e9dd 6702 ldrd r6, r7, [sp, #8] - 2e76c: fa23 f304 lsr.w r3, r3, r4 - 2e770: f003 00ff and.w r0, r3, #255 ; 0xff - 2e774: f001 01ff and.w r1, r1, #255 ; 0xff - 2e778: e8fd 4504 ldrd r4, r5, [sp], #16 - 2e77c: eba0 0001 sub.w r0, r0, r1 - 2e780: 4770 bx lr - 2e782: ba24 rev r4, r4 - 2e784: fab4 f484 clz r4, r4 - 2e788: f024 0407 bic.w r4, r4, #7 - 2e78c: fa26 f104 lsr.w r1, r6, r4 - 2e790: e9dd 6702 ldrd r6, r7, [sp, #8] - 2e794: fa22 f204 lsr.w r2, r2, r4 - 2e798: f002 00ff and.w r0, r2, #255 ; 0xff - 2e79c: f001 01ff and.w r1, r1, #255 ; 0xff - 2e7a0: e8fd 4504 ldrd r4, r5, [sp], #16 - 2e7a4: eba0 0001 sub.w r0, r0, r1 - 2e7a8: 4770 bx lr - 2e7aa: f014 0f03 tst.w r4, #3 - 2e7ae: d13c bne.n 2e82a - 2e7b0: f010 0403 ands.w r4, r0, #3 - 2e7b4: d128 bne.n 2e808 - 2e7b6: f850 2b08 ldr.w r2, [r0], #8 - 2e7ba: f851 3b08 ldr.w r3, [r1], #8 - 2e7be: fa82 f54c uadd8 r5, r2, ip - 2e7c2: ea82 0503 eor.w r5, r2, r3 - 2e7c6: faa5 f58c sel r5, r5, ip - 2e7ca: b95d cbnz r5, 2e7e4 - 2e7cc: f850 2c04 ldr.w r2, [r0, #-4] - 2e7d0: f851 3c04 ldr.w r3, [r1, #-4] - 2e7d4: fa82 f54c uadd8 r5, r2, ip - 2e7d8: ea82 0503 eor.w r5, r2, r3 - 2e7dc: faa5 f58c sel r5, r5, ip - 2e7e0: 2d00 cmp r5, #0 - 2e7e2: d0e8 beq.n 2e7b6 - 2e7e4: ba2d rev r5, r5 - 2e7e6: fab5 f485 clz r4, r5 - 2e7ea: f024 0407 bic.w r4, r4, #7 - 2e7ee: fa23 f104 lsr.w r1, r3, r4 - 2e7f2: fa22 f204 lsr.w r2, r2, r4 - 2e7f6: f002 00ff and.w r0, r2, #255 ; 0xff - 2e7fa: f001 01ff and.w r1, r1, #255 ; 0xff - 2e7fe: e8fd 4504 ldrd r4, r5, [sp], #16 - 2e802: eba0 0001 sub.w r0, r0, r1 - 2e806: 4770 bx lr - 2e808: ea4f 04c4 mov.w r4, r4, lsl #3 - 2e80c: f020 0003 bic.w r0, r0, #3 - 2e810: f850 2b08 ldr.w r2, [r0], #8 - 2e814: f021 0103 bic.w r1, r1, #3 - 2e818: f851 3b08 ldr.w r3, [r1], #8 - 2e81c: fa0c f404 lsl.w r4, ip, r4 - 2e820: ea62 0204 orn r2, r2, r4 - 2e824: ea63 0304 orn r3, r3, r4 - 2e828: e7c9 b.n 2e7be - 2e82a: f010 0403 ands.w r4, r0, #3 - 2e82e: d01a beq.n 2e866 - 2e830: eba1 0104 sub.w r1, r1, r4 - 2e834: f020 0003 bic.w r0, r0, #3 - 2e838: 07e4 lsls r4, r4, #31 - 2e83a: f850 2b04 ldr.w r2, [r0], #4 - 2e83e: d006 beq.n 2e84e - 2e840: d20f bcs.n 2e862 - 2e842: 788b ldrb r3, [r1, #2] - 2e844: fa5f f4a2 uxtb.w r4, r2, ror #16 - 2e848: 1ae4 subs r4, r4, r3 - 2e84a: d106 bne.n 2e85a - 2e84c: b12b cbz r3, 2e85a - 2e84e: 78cb ldrb r3, [r1, #3] - 2e850: fa5f f4b2 uxtb.w r4, r2, ror #24 - 2e854: 1ae4 subs r4, r4, r3 - 2e856: d100 bne.n 2e85a - 2e858: b91b cbnz r3, 2e862 - 2e85a: 4620 mov r0, r4 - 2e85c: f85d 4b10 ldr.w r4, [sp], #16 + 2e780: eba2 0003 sub.w r0, r2, r3 + 2e784: 4770 bx lr + 2e786: bf00 nop + +0002e788 : + 2e788: 7802 ldrb r2, [r0, #0] + 2e78a: 780b ldrb r3, [r1, #0] + 2e78c: 2a01 cmp r2, #1 + 2e78e: bf28 it cs + 2e790: 429a cmpcs r2, r3 + 2e792: d1f5 bne.n 2e780 <__errno+0x14> + 2e794: e96d 4504 strd r4, r5, [sp, #-16]! + 2e798: ea40 0401 orr.w r4, r0, r1 + 2e79c: e9cd 6702 strd r6, r7, [sp, #8] + 2e7a0: f06f 0c00 mvn.w ip, #0 + 2e7a4: ea4f 7244 mov.w r2, r4, lsl #29 + 2e7a8: b312 cbz r2, 2e7f0 + 2e7aa: ea80 0401 eor.w r4, r0, r1 + 2e7ae: f014 0f07 tst.w r4, #7 + 2e7b2: d16a bne.n 2e88a + 2e7b4: f000 0407 and.w r4, r0, #7 + 2e7b8: f020 0007 bic.w r0, r0, #7 + 2e7bc: f004 0503 and.w r5, r4, #3 + 2e7c0: f021 0107 bic.w r1, r1, #7 + 2e7c4: ea4f 05c5 mov.w r5, r5, lsl #3 + 2e7c8: e8f0 2304 ldrd r2, r3, [r0], #16 + 2e7cc: f014 0f04 tst.w r4, #4 + 2e7d0: e8f1 6704 ldrd r6, r7, [r1], #16 + 2e7d4: fa0c f405 lsl.w r4, ip, r5 + 2e7d8: ea62 0204 orn r2, r2, r4 + 2e7dc: ea66 0604 orn r6, r6, r4 + 2e7e0: d00a beq.n 2e7f8 + 2e7e2: ea63 0304 orn r3, r3, r4 + 2e7e6: 4662 mov r2, ip + 2e7e8: ea67 0704 orn r7, r7, r4 + 2e7ec: 4666 mov r6, ip + 2e7ee: e003 b.n 2e7f8 + 2e7f0: e8f0 2304 ldrd r2, r3, [r0], #16 + 2e7f4: e8f1 6704 ldrd r6, r7, [r1], #16 + 2e7f8: fa82 f54c uadd8 r5, r2, ip + 2e7fc: ea82 0406 eor.w r4, r2, r6 + 2e800: faa4 f48c sel r4, r4, ip + 2e804: bb6c cbnz r4, 2e862 + 2e806: fa83 f54c uadd8 r5, r3, ip + 2e80a: ea83 0507 eor.w r5, r3, r7 + 2e80e: faa5 f58c sel r5, r5, ip + 2e812: b995 cbnz r5, 2e83a + 2e814: e950 2302 ldrd r2, r3, [r0, #-8] + 2e818: e951 6702 ldrd r6, r7, [r1, #-8] + 2e81c: fa82 f54c uadd8 r5, r2, ip + 2e820: ea82 0406 eor.w r4, r2, r6 + 2e824: faa4 f48c sel r4, r4, ip + 2e828: fa83 f54c uadd8 r5, r3, ip + 2e82c: ea83 0507 eor.w r5, r3, r7 + 2e830: faa5 f58c sel r5, r5, ip + 2e834: 4325 orrs r5, r4 + 2e836: d0db beq.n 2e7f0 + 2e838: b99c cbnz r4, 2e862 + 2e83a: ba2d rev r5, r5 + 2e83c: fab5 f485 clz r4, r5 + 2e840: f024 0407 bic.w r4, r4, #7 + 2e844: fa27 f104 lsr.w r1, r7, r4 + 2e848: e9dd 6702 ldrd r6, r7, [sp, #8] + 2e84c: fa23 f304 lsr.w r3, r3, r4 + 2e850: f003 00ff and.w r0, r3, #255 ; 0xff + 2e854: f001 01ff and.w r1, r1, #255 ; 0xff + 2e858: e8fd 4504 ldrd r4, r5, [sp], #16 + 2e85c: eba0 0001 sub.w r0, r0, r1 2e860: 4770 bx lr - 2e862: f101 0104 add.w r1, r1, #4 - 2e866: f850 2b04 ldr.w r2, [r0], #4 - 2e86a: 07cc lsls r4, r1, #31 - 2e86c: f021 0103 bic.w r1, r1, #3 - 2e870: f851 3b04 ldr.w r3, [r1], #4 - 2e874: d848 bhi.n 2e908 - 2e876: d224 bcs.n 2e8c2 - 2e878: f022 447f bic.w r4, r2, #4278190080 ; 0xff000000 - 2e87c: fa82 f54c uadd8 r5, r2, ip - 2e880: ea94 2513 eors.w r5, r4, r3, lsr #8 - 2e884: faa5 f58c sel r5, r5, ip - 2e888: d10a bne.n 2e8a0 - 2e88a: b965 cbnz r5, 2e8a6 - 2e88c: f851 3b04 ldr.w r3, [r1], #4 - 2e890: ea84 0402 eor.w r4, r4, r2 - 2e894: ebb4 6f03 cmp.w r4, r3, lsl #24 - 2e898: d10e bne.n 2e8b8 - 2e89a: f850 2b04 ldr.w r2, [r0], #4 - 2e89e: e7eb b.n 2e878 - 2e8a0: ea4f 2313 mov.w r3, r3, lsr #8 - 2e8a4: e055 b.n 2e952 - 2e8a6: f035 457f bics.w r5, r5, #4278190080 ; 0xff000000 - 2e8aa: d14d bne.n 2e948 - 2e8ac: 7808 ldrb r0, [r1, #0] - 2e8ae: e8fd 4504 ldrd r4, r5, [sp], #16 - 2e8b2: f1c0 0000 rsb r0, r0, #0 - 2e8b6: 4770 bx lr - 2e8b8: ea4f 6212 mov.w r2, r2, lsr #24 - 2e8bc: f003 03ff and.w r3, r3, #255 ; 0xff - 2e8c0: e047 b.n 2e952 - 2e8c2: ea02 441c and.w r4, r2, ip, lsr #16 - 2e8c6: fa82 f54c uadd8 r5, r2, ip - 2e8ca: ea94 4513 eors.w r5, r4, r3, lsr #16 - 2e8ce: faa5 f58c sel r5, r5, ip - 2e8d2: d10a bne.n 2e8ea - 2e8d4: b965 cbnz r5, 2e8f0 - 2e8d6: f851 3b04 ldr.w r3, [r1], #4 - 2e8da: ea84 0402 eor.w r4, r4, r2 - 2e8de: ebb4 4f03 cmp.w r4, r3, lsl #16 - 2e8e2: d10c bne.n 2e8fe - 2e8e4: f850 2b04 ldr.w r2, [r0], #4 - 2e8e8: e7eb b.n 2e8c2 - 2e8ea: ea4f 4313 mov.w r3, r3, lsr #16 - 2e8ee: e030 b.n 2e952 - 2e8f0: ea15 451c ands.w r5, r5, ip, lsr #16 - 2e8f4: d128 bne.n 2e948 - 2e8f6: 880b ldrh r3, [r1, #0] - 2e8f8: ea4f 4212 mov.w r2, r2, lsr #16 - 2e8fc: e029 b.n 2e952 - 2e8fe: ea4f 4212 mov.w r2, r2, lsr #16 - 2e902: ea03 431c and.w r3, r3, ip, lsr #16 - 2e906: e024 b.n 2e952 - 2e908: f002 04ff and.w r4, r2, #255 ; 0xff - 2e90c: fa82 f54c uadd8 r5, r2, ip - 2e910: ea94 6513 eors.w r5, r4, r3, lsr #24 - 2e914: faa5 f58c sel r5, r5, ip - 2e918: d10a bne.n 2e930 - 2e91a: b965 cbnz r5, 2e936 - 2e91c: f851 3b04 ldr.w r3, [r1], #4 - 2e920: ea84 0402 eor.w r4, r4, r2 - 2e924: ebb4 2f03 cmp.w r4, r3, lsl #8 - 2e928: d109 bne.n 2e93e - 2e92a: f850 2b04 ldr.w r2, [r0], #4 - 2e92e: e7eb b.n 2e908 - 2e930: ea4f 6313 mov.w r3, r3, lsr #24 - 2e934: e00d b.n 2e952 - 2e936: f015 0fff tst.w r5, #255 ; 0xff - 2e93a: d105 bne.n 2e948 - 2e93c: 680b ldr r3, [r1, #0] - 2e93e: ea4f 2212 mov.w r2, r2, lsr #8 - 2e942: f023 437f bic.w r3, r3, #4278190080 ; 0xff000000 - 2e946: e004 b.n 2e952 - 2e948: f04f 0000 mov.w r0, #0 - 2e94c: e8fd 4504 ldrd r4, r5, [sp], #16 - 2e950: 4770 bx lr - 2e952: ba12 rev r2, r2 - 2e954: ba1b rev r3, r3 - 2e956: fa82 f44c uadd8 r4, r2, ip - 2e95a: ea82 0403 eor.w r4, r2, r3 - 2e95e: faa4 f58c sel r5, r4, ip - 2e962: fab5 f485 clz r4, r5 - 2e966: fa02 f204 lsl.w r2, r2, r4 - 2e96a: fa03 f304 lsl.w r3, r3, r4 - 2e96e: ea4f 6012 mov.w r0, r2, lsr #24 - 2e972: e8fd 4504 ldrd r4, r5, [sp], #16 - 2e976: eba0 6013 sub.w r0, r0, r3, lsr #24 - 2e97a: 4770 bx lr - -0002e97c : - 2e97c: ea80 0201 eor.w r2, r0, r1 - 2e980: 4684 mov ip, r0 - 2e982: f012 0f03 tst.w r2, #3 - 2e986: d14f bne.n 2ea28 - 2e988: f011 0f03 tst.w r1, #3 - 2e98c: d132 bne.n 2e9f4 - 2e98e: f84d 4d04 str.w r4, [sp, #-4]! - 2e992: f011 0f04 tst.w r1, #4 - 2e996: f851 3b04 ldr.w r3, [r1], #4 - 2e99a: d00b beq.n 2e9b4 - 2e99c: f1a3 3201 sub.w r2, r3, #16843009 ; 0x1010101 - 2e9a0: 439a bics r2, r3 - 2e9a2: f012 3f80 tst.w r2, #2155905152 ; 0x80808080 - 2e9a6: bf04 itt eq - 2e9a8: f84c 3b04 streq.w r3, [ip], #4 - 2e9ac: f851 3b04 ldreq.w r3, [r1], #4 - 2e9b0: d116 bne.n 2e9e0 - 2e9b2: bf00 nop - 2e9b4: f851 4b04 ldr.w r4, [r1], #4 - 2e9b8: f1a3 3201 sub.w r2, r3, #16843009 ; 0x1010101 - 2e9bc: 439a bics r2, r3 - 2e9be: f012 3f80 tst.w r2, #2155905152 ; 0x80808080 - 2e9c2: f1a4 3201 sub.w r2, r4, #16843009 ; 0x1010101 - 2e9c6: d10b bne.n 2e9e0 - 2e9c8: f84c 3b04 str.w r3, [ip], #4 - 2e9cc: 43a2 bics r2, r4 - 2e9ce: f012 3f80 tst.w r2, #2155905152 ; 0x80808080 - 2e9d2: bf04 itt eq - 2e9d4: f851 3b04 ldreq.w r3, [r1], #4 - 2e9d8: f84c 4b04 streq.w r4, [ip], #4 - 2e9dc: d0ea beq.n 2e9b4 - 2e9de: 4623 mov r3, r4 - 2e9e0: f80c 3b01 strb.w r3, [ip], #1 - 2e9e4: f013 0fff tst.w r3, #255 ; 0xff - 2e9e8: ea4f 2333 mov.w r3, r3, ror #8 - 2e9ec: d1f8 bne.n 2e9e0 - 2e9ee: f85d 4b04 ldr.w r4, [sp], #4 - 2e9f2: 4770 bx lr - 2e9f4: f011 0f01 tst.w r1, #1 - 2e9f8: d006 beq.n 2ea08 - 2e9fa: f811 2b01 ldrb.w r2, [r1], #1 - 2e9fe: f80c 2b01 strb.w r2, [ip], #1 - 2ea02: 2a00 cmp r2, #0 - 2ea04: bf08 it eq - 2ea06: 4770 bxeq lr - 2ea08: f011 0f02 tst.w r1, #2 - 2ea0c: d0bf beq.n 2e98e - 2ea0e: f831 2b02 ldrh.w r2, [r1], #2 - 2ea12: f012 0fff tst.w r2, #255 ; 0xff - 2ea16: bf16 itet ne - 2ea18: f82c 2b02 strhne.w r2, [ip], #2 - 2ea1c: f88c 2000 strbeq.w r2, [ip] - 2ea20: f412 4f7f tstne.w r2, #65280 ; 0xff00 - 2ea24: d1b3 bne.n 2e98e - 2ea26: 4770 bx lr - 2ea28: f811 2b01 ldrb.w r2, [r1], #1 - 2ea2c: f80c 2b01 strb.w r2, [ip], #1 - 2ea30: 2a00 cmp r2, #0 - 2ea32: d1f9 bne.n 2ea28 - 2ea34: 4770 bx lr - 2ea36: bf00 nop - -0002ea38 <__libc_init_array>: - 2ea38: b570 push {r4, r5, r6, lr} - 2ea3a: 4e0d ldr r6, [pc, #52] ; (2ea70 <__libc_init_array+0x38>) - 2ea3c: 4d0d ldr r5, [pc, #52] ; (2ea74 <__libc_init_array+0x3c>) - 2ea3e: 1b76 subs r6, r6, r5 - 2ea40: 10b6 asrs r6, r6, #2 - 2ea42: d006 beq.n 2ea52 <__libc_init_array+0x1a> - 2ea44: 2400 movs r4, #0 - 2ea46: f855 3b04 ldr.w r3, [r5], #4 - 2ea4a: 3401 adds r4, #1 - 2ea4c: 4798 blx r3 - 2ea4e: 42a6 cmp r6, r4 - 2ea50: d1f9 bne.n 2ea46 <__libc_init_array+0xe> - 2ea52: 4e09 ldr r6, [pc, #36] ; (2ea78 <__libc_init_array+0x40>) - 2ea54: 4d09 ldr r5, [pc, #36] ; (2ea7c <__libc_init_array+0x44>) - 2ea56: 1b76 subs r6, r6, r5 - 2ea58: f005 fa0e bl 33e78 <___init_veneer> - 2ea5c: 10b6 asrs r6, r6, #2 - 2ea5e: d006 beq.n 2ea6e <__libc_init_array+0x36> - 2ea60: 2400 movs r4, #0 - 2ea62: f855 3b04 ldr.w r3, [r5], #4 - 2ea66: 3401 adds r4, #1 - 2ea68: 4798 blx r3 - 2ea6a: 42a6 cmp r6, r4 - 2ea6c: d1f9 bne.n 2ea62 <__libc_init_array+0x2a> - 2ea6e: bd70 pop {r4, r5, r6, pc} - 2ea70: 60001c38 .word 0x60001c38 - 2ea74: 60001c38 .word 0x60001c38 - 2ea78: 60001c5c .word 0x60001c5c - 2ea7c: 60001c38 .word 0x60001c38 - -0002ea80 <__retarget_lock_init_recursive>: - 2ea80: 4770 bx lr - 2ea82: bf00 nop - -0002ea84 <__retarget_lock_close_recursive>: - 2ea84: 4770 bx lr - 2ea86: bf00 nop - -0002ea88 <__retarget_lock_acquire_recursive>: - 2ea88: 4770 bx lr - 2ea8a: bf00 nop - -0002ea8c <__retarget_lock_release_recursive>: - 2ea8c: 4770 bx lr - 2ea8e: bf00 nop - -0002ea90 : - 2ea90: f001 01ff and.w r1, r1, #255 ; 0xff - 2ea94: 2a10 cmp r2, #16 - 2ea96: db2b blt.n 2eaf0 - 2ea98: f010 0f07 tst.w r0, #7 - 2ea9c: d008 beq.n 2eab0 - 2ea9e: f810 3b01 ldrb.w r3, [r0], #1 - 2eaa2: 3a01 subs r2, #1 - 2eaa4: 428b cmp r3, r1 - 2eaa6: d02d beq.n 2eb04 - 2eaa8: f010 0f07 tst.w r0, #7 - 2eaac: b342 cbz r2, 2eb00 - 2eaae: d1f6 bne.n 2ea9e - 2eab0: b4f0 push {r4, r5, r6, r7} - 2eab2: ea41 2101 orr.w r1, r1, r1, lsl #8 - 2eab6: ea41 4101 orr.w r1, r1, r1, lsl #16 - 2eaba: f022 0407 bic.w r4, r2, #7 - 2eabe: f07f 0700 mvns.w r7, #0 - 2eac2: 2300 movs r3, #0 - 2eac4: e8f0 5602 ldrd r5, r6, [r0], #8 - 2eac8: 3c08 subs r4, #8 - 2eaca: ea85 0501 eor.w r5, r5, r1 - 2eace: ea86 0601 eor.w r6, r6, r1 - 2ead2: fa85 f547 uadd8 r5, r5, r7 - 2ead6: faa3 f587 sel r5, r3, r7 - 2eada: fa86 f647 uadd8 r6, r6, r7 - 2eade: faa5 f687 sel r6, r5, r7 - 2eae2: b98e cbnz r6, 2eb08 - 2eae4: d1ee bne.n 2eac4 - 2eae6: bcf0 pop {r4, r5, r6, r7} - 2eae8: f001 01ff and.w r1, r1, #255 ; 0xff - 2eaec: f002 0207 and.w r2, r2, #7 - 2eaf0: b132 cbz r2, 2eb00 - 2eaf2: f810 3b01 ldrb.w r3, [r0], #1 - 2eaf6: 3a01 subs r2, #1 - 2eaf8: ea83 0301 eor.w r3, r3, r1 - 2eafc: b113 cbz r3, 2eb04 - 2eafe: d1f8 bne.n 2eaf2 - 2eb00: 2000 movs r0, #0 - 2eb02: 4770 bx lr - 2eb04: 3801 subs r0, #1 + 2e862: ba24 rev r4, r4 + 2e864: fab4 f484 clz r4, r4 + 2e868: f024 0407 bic.w r4, r4, #7 + 2e86c: fa26 f104 lsr.w r1, r6, r4 + 2e870: e9dd 6702 ldrd r6, r7, [sp, #8] + 2e874: fa22 f204 lsr.w r2, r2, r4 + 2e878: f002 00ff and.w r0, r2, #255 ; 0xff + 2e87c: f001 01ff and.w r1, r1, #255 ; 0xff + 2e880: e8fd 4504 ldrd r4, r5, [sp], #16 + 2e884: eba0 0001 sub.w r0, r0, r1 + 2e888: 4770 bx lr + 2e88a: f014 0f03 tst.w r4, #3 + 2e88e: d13c bne.n 2e90a + 2e890: f010 0403 ands.w r4, r0, #3 + 2e894: d128 bne.n 2e8e8 + 2e896: f850 2b08 ldr.w r2, [r0], #8 + 2e89a: f851 3b08 ldr.w r3, [r1], #8 + 2e89e: fa82 f54c uadd8 r5, r2, ip + 2e8a2: ea82 0503 eor.w r5, r2, r3 + 2e8a6: faa5 f58c sel r5, r5, ip + 2e8aa: b95d cbnz r5, 2e8c4 + 2e8ac: f850 2c04 ldr.w r2, [r0, #-4] + 2e8b0: f851 3c04 ldr.w r3, [r1, #-4] + 2e8b4: fa82 f54c uadd8 r5, r2, ip + 2e8b8: ea82 0503 eor.w r5, r2, r3 + 2e8bc: faa5 f58c sel r5, r5, ip + 2e8c0: 2d00 cmp r5, #0 + 2e8c2: d0e8 beq.n 2e896 + 2e8c4: ba2d rev r5, r5 + 2e8c6: fab5 f485 clz r4, r5 + 2e8ca: f024 0407 bic.w r4, r4, #7 + 2e8ce: fa23 f104 lsr.w r1, r3, r4 + 2e8d2: fa22 f204 lsr.w r2, r2, r4 + 2e8d6: f002 00ff and.w r0, r2, #255 ; 0xff + 2e8da: f001 01ff and.w r1, r1, #255 ; 0xff + 2e8de: e8fd 4504 ldrd r4, r5, [sp], #16 + 2e8e2: eba0 0001 sub.w r0, r0, r1 + 2e8e6: 4770 bx lr + 2e8e8: ea4f 04c4 mov.w r4, r4, lsl #3 + 2e8ec: f020 0003 bic.w r0, r0, #3 + 2e8f0: f850 2b08 ldr.w r2, [r0], #8 + 2e8f4: f021 0103 bic.w r1, r1, #3 + 2e8f8: f851 3b08 ldr.w r3, [r1], #8 + 2e8fc: fa0c f404 lsl.w r4, ip, r4 + 2e900: ea62 0204 orn r2, r2, r4 + 2e904: ea63 0304 orn r3, r3, r4 + 2e908: e7c9 b.n 2e89e + 2e90a: f010 0403 ands.w r4, r0, #3 + 2e90e: d01a beq.n 2e946 + 2e910: eba1 0104 sub.w r1, r1, r4 + 2e914: f020 0003 bic.w r0, r0, #3 + 2e918: 07e4 lsls r4, r4, #31 + 2e91a: f850 2b04 ldr.w r2, [r0], #4 + 2e91e: d006 beq.n 2e92e + 2e920: d20f bcs.n 2e942 + 2e922: 788b ldrb r3, [r1, #2] + 2e924: fa5f f4a2 uxtb.w r4, r2, ror #16 + 2e928: 1ae4 subs r4, r4, r3 + 2e92a: d106 bne.n 2e93a + 2e92c: b12b cbz r3, 2e93a + 2e92e: 78cb ldrb r3, [r1, #3] + 2e930: fa5f f4b2 uxtb.w r4, r2, ror #24 + 2e934: 1ae4 subs r4, r4, r3 + 2e936: d100 bne.n 2e93a + 2e938: b91b cbnz r3, 2e942 + 2e93a: 4620 mov r0, r4 + 2e93c: f85d 4b10 ldr.w r4, [sp], #16 + 2e940: 4770 bx lr + 2e942: f101 0104 add.w r1, r1, #4 + 2e946: f850 2b04 ldr.w r2, [r0], #4 + 2e94a: 07cc lsls r4, r1, #31 + 2e94c: f021 0103 bic.w r1, r1, #3 + 2e950: f851 3b04 ldr.w r3, [r1], #4 + 2e954: d848 bhi.n 2e9e8 + 2e956: d224 bcs.n 2e9a2 + 2e958: f022 447f bic.w r4, r2, #4278190080 ; 0xff000000 + 2e95c: fa82 f54c uadd8 r5, r2, ip + 2e960: ea94 2513 eors.w r5, r4, r3, lsr #8 + 2e964: faa5 f58c sel r5, r5, ip + 2e968: d10a bne.n 2e980 + 2e96a: b965 cbnz r5, 2e986 + 2e96c: f851 3b04 ldr.w r3, [r1], #4 + 2e970: ea84 0402 eor.w r4, r4, r2 + 2e974: ebb4 6f03 cmp.w r4, r3, lsl #24 + 2e978: d10e bne.n 2e998 + 2e97a: f850 2b04 ldr.w r2, [r0], #4 + 2e97e: e7eb b.n 2e958 + 2e980: ea4f 2313 mov.w r3, r3, lsr #8 + 2e984: e055 b.n 2ea32 + 2e986: f035 457f bics.w r5, r5, #4278190080 ; 0xff000000 + 2e98a: d14d bne.n 2ea28 + 2e98c: 7808 ldrb r0, [r1, #0] + 2e98e: e8fd 4504 ldrd r4, r5, [sp], #16 + 2e992: f1c0 0000 rsb r0, r0, #0 + 2e996: 4770 bx lr + 2e998: ea4f 6212 mov.w r2, r2, lsr #24 + 2e99c: f003 03ff and.w r3, r3, #255 ; 0xff + 2e9a0: e047 b.n 2ea32 + 2e9a2: ea02 441c and.w r4, r2, ip, lsr #16 + 2e9a6: fa82 f54c uadd8 r5, r2, ip + 2e9aa: ea94 4513 eors.w r5, r4, r3, lsr #16 + 2e9ae: faa5 f58c sel r5, r5, ip + 2e9b2: d10a bne.n 2e9ca + 2e9b4: b965 cbnz r5, 2e9d0 + 2e9b6: f851 3b04 ldr.w r3, [r1], #4 + 2e9ba: ea84 0402 eor.w r4, r4, r2 + 2e9be: ebb4 4f03 cmp.w r4, r3, lsl #16 + 2e9c2: d10c bne.n 2e9de + 2e9c4: f850 2b04 ldr.w r2, [r0], #4 + 2e9c8: e7eb b.n 2e9a2 + 2e9ca: ea4f 4313 mov.w r3, r3, lsr #16 + 2e9ce: e030 b.n 2ea32 + 2e9d0: ea15 451c ands.w r5, r5, ip, lsr #16 + 2e9d4: d128 bne.n 2ea28 + 2e9d6: 880b ldrh r3, [r1, #0] + 2e9d8: ea4f 4212 mov.w r2, r2, lsr #16 + 2e9dc: e029 b.n 2ea32 + 2e9de: ea4f 4212 mov.w r2, r2, lsr #16 + 2e9e2: ea03 431c and.w r3, r3, ip, lsr #16 + 2e9e6: e024 b.n 2ea32 + 2e9e8: f002 04ff and.w r4, r2, #255 ; 0xff + 2e9ec: fa82 f54c uadd8 r5, r2, ip + 2e9f0: ea94 6513 eors.w r5, r4, r3, lsr #24 + 2e9f4: faa5 f58c sel r5, r5, ip + 2e9f8: d10a bne.n 2ea10 + 2e9fa: b965 cbnz r5, 2ea16 + 2e9fc: f851 3b04 ldr.w r3, [r1], #4 + 2ea00: ea84 0402 eor.w r4, r4, r2 + 2ea04: ebb4 2f03 cmp.w r4, r3, lsl #8 + 2ea08: d109 bne.n 2ea1e + 2ea0a: f850 2b04 ldr.w r2, [r0], #4 + 2ea0e: e7eb b.n 2e9e8 + 2ea10: ea4f 6313 mov.w r3, r3, lsr #24 + 2ea14: e00d b.n 2ea32 + 2ea16: f015 0fff tst.w r5, #255 ; 0xff + 2ea1a: d105 bne.n 2ea28 + 2ea1c: 680b ldr r3, [r1, #0] + 2ea1e: ea4f 2212 mov.w r2, r2, lsr #8 + 2ea22: f023 437f bic.w r3, r3, #4278190080 ; 0xff000000 + 2ea26: e004 b.n 2ea32 + 2ea28: f04f 0000 mov.w r0, #0 + 2ea2c: e8fd 4504 ldrd r4, r5, [sp], #16 + 2ea30: 4770 bx lr + 2ea32: ba12 rev r2, r2 + 2ea34: ba1b rev r3, r3 + 2ea36: fa82 f44c uadd8 r4, r2, ip + 2ea3a: ea82 0403 eor.w r4, r2, r3 + 2ea3e: faa4 f58c sel r5, r4, ip + 2ea42: fab5 f485 clz r4, r5 + 2ea46: fa02 f204 lsl.w r2, r2, r4 + 2ea4a: fa03 f304 lsl.w r3, r3, r4 + 2ea4e: ea4f 6012 mov.w r0, r2, lsr #24 + 2ea52: e8fd 4504 ldrd r4, r5, [sp], #16 + 2ea56: eba0 6013 sub.w r0, r0, r3, lsr #24 + 2ea5a: 4770 bx lr + +0002ea5c : + 2ea5c: ea80 0201 eor.w r2, r0, r1 + 2ea60: 4684 mov ip, r0 + 2ea62: f012 0f03 tst.w r2, #3 + 2ea66: d14f bne.n 2eb08 + 2ea68: f011 0f03 tst.w r1, #3 + 2ea6c: d132 bne.n 2ead4 + 2ea6e: f84d 4d04 str.w r4, [sp, #-4]! + 2ea72: f011 0f04 tst.w r1, #4 + 2ea76: f851 3b04 ldr.w r3, [r1], #4 + 2ea7a: d00b beq.n 2ea94 + 2ea7c: f1a3 3201 sub.w r2, r3, #16843009 ; 0x1010101 + 2ea80: 439a bics r2, r3 + 2ea82: f012 3f80 tst.w r2, #2155905152 ; 0x80808080 + 2ea86: bf04 itt eq + 2ea88: f84c 3b04 streq.w r3, [ip], #4 + 2ea8c: f851 3b04 ldreq.w r3, [r1], #4 + 2ea90: d116 bne.n 2eac0 + 2ea92: bf00 nop + 2ea94: f851 4b04 ldr.w r4, [r1], #4 + 2ea98: f1a3 3201 sub.w r2, r3, #16843009 ; 0x1010101 + 2ea9c: 439a bics r2, r3 + 2ea9e: f012 3f80 tst.w r2, #2155905152 ; 0x80808080 + 2eaa2: f1a4 3201 sub.w r2, r4, #16843009 ; 0x1010101 + 2eaa6: d10b bne.n 2eac0 + 2eaa8: f84c 3b04 str.w r3, [ip], #4 + 2eaac: 43a2 bics r2, r4 + 2eaae: f012 3f80 tst.w r2, #2155905152 ; 0x80808080 + 2eab2: bf04 itt eq + 2eab4: f851 3b04 ldreq.w r3, [r1], #4 + 2eab8: f84c 4b04 streq.w r4, [ip], #4 + 2eabc: d0ea beq.n 2ea94 + 2eabe: 4623 mov r3, r4 + 2eac0: f80c 3b01 strb.w r3, [ip], #1 + 2eac4: f013 0fff tst.w r3, #255 ; 0xff + 2eac8: ea4f 2333 mov.w r3, r3, ror #8 + 2eacc: d1f8 bne.n 2eac0 + 2eace: f85d 4b04 ldr.w r4, [sp], #4 + 2ead2: 4770 bx lr + 2ead4: f011 0f01 tst.w r1, #1 + 2ead8: d006 beq.n 2eae8 + 2eada: f811 2b01 ldrb.w r2, [r1], #1 + 2eade: f80c 2b01 strb.w r2, [ip], #1 + 2eae2: 2a00 cmp r2, #0 + 2eae4: bf08 it eq + 2eae6: 4770 bxeq lr + 2eae8: f011 0f02 tst.w r1, #2 + 2eaec: d0bf beq.n 2ea6e + 2eaee: f831 2b02 ldrh.w r2, [r1], #2 + 2eaf2: f012 0fff tst.w r2, #255 ; 0xff + 2eaf6: bf16 itet ne + 2eaf8: f82c 2b02 strhne.w r2, [ip], #2 + 2eafc: f88c 2000 strbeq.w r2, [ip] + 2eb00: f412 4f7f tstne.w r2, #65280 ; 0xff00 + 2eb04: d1b3 bne.n 2ea6e 2eb06: 4770 bx lr - 2eb08: 2d00 cmp r5, #0 - 2eb0a: bf06 itte eq - 2eb0c: 4635 moveq r5, r6 - 2eb0e: 3803 subeq r0, #3 - 2eb10: 3807 subne r0, #7 - 2eb12: f015 0f01 tst.w r5, #1 - 2eb16: d107 bne.n 2eb28 - 2eb18: 3001 adds r0, #1 - 2eb1a: f415 7f80 tst.w r5, #256 ; 0x100 - 2eb1e: bf02 ittt eq - 2eb20: 3001 addeq r0, #1 - 2eb22: f415 3fc0 tsteq.w r5, #98304 ; 0x18000 - 2eb26: 3001 addeq r0, #1 - 2eb28: bcf0 pop {r4, r5, r6, r7} - 2eb2a: 3801 subs r0, #1 - 2eb2c: 4770 bx lr - 2eb2e: bf00 nop + 2eb08: f811 2b01 ldrb.w r2, [r1], #1 + 2eb0c: f80c 2b01 strb.w r2, [ip], #1 + 2eb10: 2a00 cmp r2, #0 + 2eb12: d1f9 bne.n 2eb08 + 2eb14: 4770 bx lr + 2eb16: bf00 nop + +0002eb18 <__libc_init_array>: + 2eb18: b570 push {r4, r5, r6, lr} + 2eb1a: 4e0d ldr r6, [pc, #52] ; (2eb50 <__libc_init_array+0x38>) + 2eb1c: 4d0d ldr r5, [pc, #52] ; (2eb54 <__libc_init_array+0x3c>) + 2eb1e: 1b76 subs r6, r6, r5 + 2eb20: 10b6 asrs r6, r6, #2 + 2eb22: d006 beq.n 2eb32 <__libc_init_array+0x1a> + 2eb24: 2400 movs r4, #0 + 2eb26: f855 3b04 ldr.w r3, [r5], #4 + 2eb2a: 3401 adds r4, #1 + 2eb2c: 4798 blx r3 + 2eb2e: 42a6 cmp r6, r4 + 2eb30: d1f9 bne.n 2eb26 <__libc_init_array+0xe> + 2eb32: 4e09 ldr r6, [pc, #36] ; (2eb58 <__libc_init_array+0x40>) + 2eb34: 4d09 ldr r5, [pc, #36] ; (2eb5c <__libc_init_array+0x44>) + 2eb36: 1b76 subs r6, r6, r5 + 2eb38: f005 fa1e bl 33f78 <___init_veneer> + 2eb3c: 10b6 asrs r6, r6, #2 + 2eb3e: d006 beq.n 2eb4e <__libc_init_array+0x36> + 2eb40: 2400 movs r4, #0 + 2eb42: f855 3b04 ldr.w r3, [r5], #4 + 2eb46: 3401 adds r4, #1 + 2eb48: 4798 blx r3 + 2eb4a: 42a6 cmp r6, r4 + 2eb4c: d1f9 bne.n 2eb42 <__libc_init_array+0x2a> + 2eb4e: bd70 pop {r4, r5, r6, pc} + 2eb50: 60001c38 .word 0x60001c38 + 2eb54: 60001c38 .word 0x60001c38 + 2eb58: 60001c5c .word 0x60001c5c + 2eb5c: 60001c38 .word 0x60001c38 + +0002eb60 <__retarget_lock_init_recursive>: + 2eb60: 4770 bx lr + 2eb62: bf00 nop + +0002eb64 <__retarget_lock_close_recursive>: + 2eb64: 4770 bx lr + 2eb66: bf00 nop + +0002eb68 <__retarget_lock_acquire_recursive>: + 2eb68: 4770 bx lr + 2eb6a: bf00 nop + +0002eb6c <__retarget_lock_release_recursive>: + 2eb6c: 4770 bx lr + 2eb6e: bf00 nop + +0002eb70 : + 2eb70: f001 01ff and.w r1, r1, #255 ; 0xff + 2eb74: 2a10 cmp r2, #16 + 2eb76: db2b blt.n 2ebd0 + 2eb78: f010 0f07 tst.w r0, #7 + 2eb7c: d008 beq.n 2eb90 + 2eb7e: f810 3b01 ldrb.w r3, [r0], #1 + 2eb82: 3a01 subs r2, #1 + 2eb84: 428b cmp r3, r1 + 2eb86: d02d beq.n 2ebe4 + 2eb88: f010 0f07 tst.w r0, #7 + 2eb8c: b342 cbz r2, 2ebe0 + 2eb8e: d1f6 bne.n 2eb7e + 2eb90: b4f0 push {r4, r5, r6, r7} + 2eb92: ea41 2101 orr.w r1, r1, r1, lsl #8 + 2eb96: ea41 4101 orr.w r1, r1, r1, lsl #16 + 2eb9a: f022 0407 bic.w r4, r2, #7 + 2eb9e: f07f 0700 mvns.w r7, #0 + 2eba2: 2300 movs r3, #0 + 2eba4: e8f0 5602 ldrd r5, r6, [r0], #8 + 2eba8: 3c08 subs r4, #8 + 2ebaa: ea85 0501 eor.w r5, r5, r1 + 2ebae: ea86 0601 eor.w r6, r6, r1 + 2ebb2: fa85 f547 uadd8 r5, r5, r7 + 2ebb6: faa3 f587 sel r5, r3, r7 + 2ebba: fa86 f647 uadd8 r6, r6, r7 + 2ebbe: faa5 f687 sel r6, r5, r7 + 2ebc2: b98e cbnz r6, 2ebe8 + 2ebc4: d1ee bne.n 2eba4 + 2ebc6: bcf0 pop {r4, r5, r6, r7} + 2ebc8: f001 01ff and.w r1, r1, #255 ; 0xff + 2ebcc: f002 0207 and.w r2, r2, #7 + 2ebd0: b132 cbz r2, 2ebe0 + 2ebd2: f810 3b01 ldrb.w r3, [r0], #1 + 2ebd6: 3a01 subs r2, #1 + 2ebd8: ea83 0301 eor.w r3, r3, r1 + 2ebdc: b113 cbz r3, 2ebe4 + 2ebde: d1f8 bne.n 2ebd2 + 2ebe0: 2000 movs r0, #0 + 2ebe2: 4770 bx lr + 2ebe4: 3801 subs r0, #1 + 2ebe6: 4770 bx lr + 2ebe8: 2d00 cmp r5, #0 + 2ebea: bf06 itte eq + 2ebec: 4635 moveq r5, r6 + 2ebee: 3803 subeq r0, #3 + 2ebf0: 3807 subne r0, #7 + 2ebf2: f015 0f01 tst.w r5, #1 + 2ebf6: d107 bne.n 2ec08 + 2ebf8: 3001 adds r0, #1 + 2ebfa: f415 7f80 tst.w r5, #256 ; 0x100 + 2ebfe: bf02 ittt eq + 2ec00: 3001 addeq r0, #1 + 2ec02: f415 3fc0 tsteq.w r5, #98304 ; 0x18000 + 2ec06: 3001 addeq r0, #1 + 2ec08: bcf0 pop {r4, r5, r6, r7} + 2ec0a: 3801 subs r0, #1 + 2ec0c: 4770 bx lr + 2ec0e: bf00 nop ... -0002eb40 : - 2eb40: f890 f000 pld [r0] - 2eb44: e96d 4502 strd r4, r5, [sp, #-8]! - 2eb48: f020 0107 bic.w r1, r0, #7 - 2eb4c: f06f 0c00 mvn.w ip, #0 - 2eb50: f010 0407 ands.w r4, r0, #7 - 2eb54: f891 f020 pld [r1, #32] - 2eb58: f040 8049 bne.w 2ebee - 2eb5c: f04f 0400 mov.w r4, #0 - 2eb60: f06f 0007 mvn.w r0, #7 - 2eb64: e9d1 2300 ldrd r2, r3, [r1] - 2eb68: f891 f040 pld [r1, #64] ; 0x40 - 2eb6c: f100 0008 add.w r0, r0, #8 - 2eb70: fa82 f24c uadd8 r2, r2, ip - 2eb74: faa4 f28c sel r2, r4, ip - 2eb78: fa83 f34c uadd8 r3, r3, ip - 2eb7c: faa2 f38c sel r3, r2, ip - 2eb80: bb4b cbnz r3, 2ebd6 - 2eb82: e9d1 2302 ldrd r2, r3, [r1, #8] - 2eb86: fa82 f24c uadd8 r2, r2, ip - 2eb8a: f100 0008 add.w r0, r0, #8 - 2eb8e: faa4 f28c sel r2, r4, ip - 2eb92: fa83 f34c uadd8 r3, r3, ip - 2eb96: faa2 f38c sel r3, r2, ip - 2eb9a: b9e3 cbnz r3, 2ebd6 - 2eb9c: e9d1 2304 ldrd r2, r3, [r1, #16] - 2eba0: fa82 f24c uadd8 r2, r2, ip - 2eba4: f100 0008 add.w r0, r0, #8 - 2eba8: faa4 f28c sel r2, r4, ip - 2ebac: fa83 f34c uadd8 r3, r3, ip - 2ebb0: faa2 f38c sel r3, r2, ip - 2ebb4: b97b cbnz r3, 2ebd6 - 2ebb6: e9d1 2306 ldrd r2, r3, [r1, #24] - 2ebba: f101 0120 add.w r1, r1, #32 - 2ebbe: fa82 f24c uadd8 r2, r2, ip - 2ebc2: f100 0008 add.w r0, r0, #8 - 2ebc6: faa4 f28c sel r2, r4, ip - 2ebca: fa83 f34c uadd8 r3, r3, ip - 2ebce: faa2 f38c sel r3, r2, ip - 2ebd2: 2b00 cmp r3, #0 - 2ebd4: d0c6 beq.n 2eb64 - 2ebd6: 2a00 cmp r2, #0 - 2ebd8: bf04 itt eq - 2ebda: 3004 addeq r0, #4 - 2ebdc: 461a moveq r2, r3 - 2ebde: ba12 rev r2, r2 - 2ebe0: fab2 f282 clz r2, r2 - 2ebe4: e8fd 4502 ldrd r4, r5, [sp], #8 - 2ebe8: eb00 00d2 add.w r0, r0, r2, lsr #3 - 2ebec: 4770 bx lr - 2ebee: e9d1 2300 ldrd r2, r3, [r1] - 2ebf2: f004 0503 and.w r5, r4, #3 - 2ebf6: f1c4 0000 rsb r0, r4, #0 - 2ebfa: ea4f 05c5 mov.w r5, r5, lsl #3 - 2ebfe: f014 0f04 tst.w r4, #4 - 2ec02: f891 f040 pld [r1, #64] ; 0x40 - 2ec06: fa0c f505 lsl.w r5, ip, r5 - 2ec0a: ea62 0205 orn r2, r2, r5 - 2ec0e: bf1c itt ne - 2ec10: ea63 0305 ornne r3, r3, r5 - 2ec14: 4662 movne r2, ip - 2ec16: f04f 0400 mov.w r4, #0 - 2ec1a: e7a9 b.n 2eb70 - -0002ec1c <__register_exitproc>: - 2ec1c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 2ec20: f8df a07c ldr.w sl, [pc, #124] ; 2eca0 <__register_exitproc+0x84> - 2ec24: 4606 mov r6, r0 - 2ec26: f8da 0000 ldr.w r0, [sl] - 2ec2a: 4698 mov r8, r3 - 2ec2c: 460f mov r7, r1 - 2ec2e: 4691 mov r9, r2 - 2ec30: f7ff ff2a bl 2ea88 <__retarget_lock_acquire_recursive> - 2ec34: 4b18 ldr r3, [pc, #96] ; (2ec98 <__register_exitproc+0x7c>) - 2ec36: 681c ldr r4, [r3, #0] - 2ec38: b324 cbz r4, 2ec84 <__register_exitproc+0x68> - 2ec3a: 6865 ldr r5, [r4, #4] - 2ec3c: 2d1f cmp r5, #31 - 2ec3e: dc24 bgt.n 2ec8a <__register_exitproc+0x6e> - 2ec40: b95e cbnz r6, 2ec5a <__register_exitproc+0x3e> - 2ec42: 1c6b adds r3, r5, #1 - 2ec44: 3502 adds r5, #2 - 2ec46: f8da 0000 ldr.w r0, [sl] - 2ec4a: 6063 str r3, [r4, #4] - 2ec4c: f844 7025 str.w r7, [r4, r5, lsl #2] - 2ec50: f7ff ff1c bl 2ea8c <__retarget_lock_release_recursive> - 2ec54: 2000 movs r0, #0 - 2ec56: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 2ec5a: eb04 0185 add.w r1, r4, r5, lsl #2 - 2ec5e: 2301 movs r3, #1 - 2ec60: f8c1 9088 str.w r9, [r1, #136] ; 0x88 - 2ec64: f8d4 2188 ldr.w r2, [r4, #392] ; 0x188 - 2ec68: 40ab lsls r3, r5 - 2ec6a: 431a orrs r2, r3 - 2ec6c: 2e02 cmp r6, #2 - 2ec6e: f8c4 2188 str.w r2, [r4, #392] ; 0x188 - 2ec72: f8c1 8108 str.w r8, [r1, #264] ; 0x108 - 2ec76: d1e4 bne.n 2ec42 <__register_exitproc+0x26> - 2ec78: f8d4 218c ldr.w r2, [r4, #396] ; 0x18c - 2ec7c: 431a orrs r2, r3 - 2ec7e: f8c4 218c str.w r2, [r4, #396] ; 0x18c - 2ec82: e7de b.n 2ec42 <__register_exitproc+0x26> - 2ec84: 4c05 ldr r4, [pc, #20] ; (2ec9c <__register_exitproc+0x80>) - 2ec86: 601c str r4, [r3, #0] - 2ec88: e7d7 b.n 2ec3a <__register_exitproc+0x1e> - 2ec8a: f8da 0000 ldr.w r0, [sl] - 2ec8e: f7ff fefd bl 2ea8c <__retarget_lock_release_recursive> - 2ec92: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 2ec96: e7de b.n 2ec56 <__register_exitproc+0x3a> - 2ec98: 2000b720 .word 0x2000b720 - 2ec9c: 2000b724 .word 0x2000b724 - 2eca0: 20004c1c .word 0x20004c1c - -0002eca4 <_malloc_trim_r>: - 2eca4: b5f8 push {r3, r4, r5, r6, r7, lr} - 2eca6: 4f24 ldr r7, [pc, #144] ; (2ed38 <_malloc_trim_r+0x94>) - 2eca8: 460c mov r4, r1 - 2ecaa: 4606 mov r6, r0 - 2ecac: f7ff f86a bl 2dd84 <__malloc_lock> - 2ecb0: 68bb ldr r3, [r7, #8] - 2ecb2: 685d ldr r5, [r3, #4] - 2ecb4: f5c4 617e rsb r1, r4, #4064 ; 0xfe0 - 2ecb8: 310f adds r1, #15 - 2ecba: f025 0503 bic.w r5, r5, #3 - 2ecbe: 194b adds r3, r1, r5 - 2ecc0: f423 637f bic.w r3, r3, #4080 ; 0xff0 - 2ecc4: f023 030f bic.w r3, r3, #15 - 2ecc8: f5a3 5480 sub.w r4, r3, #4096 ; 0x1000 - 2eccc: f5b4 5f80 cmp.w r4, #4096 ; 0x1000 - 2ecd0: db07 blt.n 2ece2 <_malloc_trim_r+0x3e> - 2ecd2: 2100 movs r1, #0 - 2ecd4: 4630 mov r0, r6 - 2ecd6: f7ff fcad bl 2e634 <_sbrk_r> - 2ecda: 68bb ldr r3, [r7, #8] - 2ecdc: 442b add r3, r5 - 2ecde: 4298 cmp r0, r3 - 2ece0: d004 beq.n 2ecec <_malloc_trim_r+0x48> - 2ece2: 4630 mov r0, r6 - 2ece4: f7ff f854 bl 2dd90 <__malloc_unlock> - 2ece8: 2000 movs r0, #0 - 2ecea: bdf8 pop {r3, r4, r5, r6, r7, pc} - 2ecec: 4261 negs r1, r4 - 2ecee: 4630 mov r0, r6 - 2ecf0: f7ff fca0 bl 2e634 <_sbrk_r> - 2ecf4: 3001 adds r0, #1 - 2ecf6: d00d beq.n 2ed14 <_malloc_trim_r+0x70> - 2ecf8: 4a10 ldr r2, [pc, #64] ; (2ed3c <_malloc_trim_r+0x98>) - 2ecfa: 68bb ldr r3, [r7, #8] - 2ecfc: 1b2d subs r5, r5, r4 - 2ecfe: f045 0501 orr.w r5, r5, #1 - 2ed02: 605d str r5, [r3, #4] - 2ed04: 6813 ldr r3, [r2, #0] - 2ed06: 4630 mov r0, r6 - 2ed08: 1b1b subs r3, r3, r4 - 2ed0a: 6013 str r3, [r2, #0] - 2ed0c: f7ff f840 bl 2dd90 <__malloc_unlock> - 2ed10: 2001 movs r0, #1 - 2ed12: bdf8 pop {r3, r4, r5, r6, r7, pc} - 2ed14: 2100 movs r1, #0 - 2ed16: 4630 mov r0, r6 - 2ed18: f7ff fc8c bl 2e634 <_sbrk_r> - 2ed1c: 68ba ldr r2, [r7, #8] - 2ed1e: 1a83 subs r3, r0, r2 - 2ed20: 2b0f cmp r3, #15 - 2ed22: ddde ble.n 2ece2 <_malloc_trim_r+0x3e> - 2ed24: f043 0301 orr.w r3, r3, #1 - 2ed28: 6053 str r3, [r2, #4] - 2ed2a: 4b05 ldr r3, [pc, #20] ; (2ed40 <_malloc_trim_r+0x9c>) - 2ed2c: 4903 ldr r1, [pc, #12] ; (2ed3c <_malloc_trim_r+0x98>) - 2ed2e: 681b ldr r3, [r3, #0] - 2ed30: 1ac0 subs r0, r0, r3 - 2ed32: 6008 str r0, [r1, #0] - 2ed34: e7d5 b.n 2ece2 <_malloc_trim_r+0x3e> - 2ed36: bf00 nop - 2ed38: 20004d94 .word 0x20004d94 - 2ed3c: 2000b8c0 .word 0x2000b8c0 - 2ed40: 2000519c .word 0x2000519c - -0002ed44 <_free_r>: - 2ed44: 2900 cmp r1, #0 - 2ed46: d061 beq.n 2ee0c <_free_r+0xc8> - 2ed48: b5f8 push {r3, r4, r5, r6, r7, lr} - 2ed4a: 460c mov r4, r1 - 2ed4c: 4606 mov r6, r0 - 2ed4e: f7ff f819 bl 2dd84 <__malloc_lock> - 2ed52: f854 2c04 ldr.w r2, [r4, #-4] - 2ed56: 4f7b ldr r7, [pc, #492] ; (2ef44 <_free_r+0x200>) - 2ed58: f1a4 0508 sub.w r5, r4, #8 - 2ed5c: f022 0101 bic.w r1, r2, #1 - 2ed60: eb05 0c01 add.w ip, r5, r1 - 2ed64: 68b8 ldr r0, [r7, #8] - 2ed66: f8dc 3004 ldr.w r3, [ip, #4] - 2ed6a: 4560 cmp r0, ip - 2ed6c: f023 0303 bic.w r3, r3, #3 - 2ed70: f000 808b beq.w 2ee8a <_free_r+0x146> - 2ed74: 07d2 lsls r2, r2, #31 - 2ed76: f8cc 3004 str.w r3, [ip, #4] - 2ed7a: d432 bmi.n 2ede2 <_free_r+0x9e> - 2ed7c: f854 2c08 ldr.w r2, [r4, #-8] - 2ed80: 1aad subs r5, r5, r2 - 2ed82: 4411 add r1, r2 - 2ed84: 68aa ldr r2, [r5, #8] - 2ed86: f107 0008 add.w r0, r7, #8 - 2ed8a: 4282 cmp r2, r0 - 2ed8c: d06a beq.n 2ee64 <_free_r+0x120> - 2ed8e: eb0c 0403 add.w r4, ip, r3 - 2ed92: f8d4 e004 ldr.w lr, [r4, #4] - 2ed96: 68ec ldr r4, [r5, #12] - 2ed98: 60d4 str r4, [r2, #12] - 2ed9a: f01e 0f01 tst.w lr, #1 - 2ed9e: 60a2 str r2, [r4, #8] - 2eda0: f000 8097 beq.w 2eed2 <_free_r+0x18e> - 2eda4: f041 0301 orr.w r3, r1, #1 - 2eda8: 606b str r3, [r5, #4] - 2edaa: f8cc 1000 str.w r1, [ip] - 2edae: f5b1 7f00 cmp.w r1, #512 ; 0x200 - 2edb2: d235 bcs.n 2ee20 <_free_r+0xdc> - 2edb4: 6878 ldr r0, [r7, #4] - 2edb6: 08cb lsrs r3, r1, #3 - 2edb8: 2201 movs r2, #1 - 2edba: 0949 lsrs r1, r1, #5 - 2edbc: 3301 adds r3, #1 - 2edbe: 408a lsls r2, r1 - 2edc0: 4302 orrs r2, r0 - 2edc2: f857 1033 ldr.w r1, [r7, r3, lsl #3] - 2edc6: 607a str r2, [r7, #4] - 2edc8: eb07 02c3 add.w r2, r7, r3, lsl #3 - 2edcc: 3a08 subs r2, #8 - 2edce: e9c5 1202 strd r1, r2, [r5, #8] - 2edd2: f847 5033 str.w r5, [r7, r3, lsl #3] - 2edd6: 60cd str r5, [r1, #12] - 2edd8: 4630 mov r0, r6 - 2edda: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} - 2edde: f7fe bfd7 b.w 2dd90 <__malloc_unlock> - 2ede2: eb0c 0203 add.w r2, ip, r3 - 2ede6: 6852 ldr r2, [r2, #4] - 2ede8: 07d0 lsls r0, r2, #31 - 2edea: d410 bmi.n 2ee0e <_free_r+0xca> - 2edec: 4419 add r1, r3 - 2edee: f107 0008 add.w r0, r7, #8 - 2edf2: f8dc 3008 ldr.w r3, [ip, #8] - 2edf6: 4283 cmp r3, r0 - 2edf8: d073 beq.n 2eee2 <_free_r+0x19e> - 2edfa: f8dc 200c ldr.w r2, [ip, #12] - 2edfe: 60da str r2, [r3, #12] - 2ee00: 6093 str r3, [r2, #8] - 2ee02: f041 0301 orr.w r3, r1, #1 - 2ee06: 606b str r3, [r5, #4] - 2ee08: 5069 str r1, [r5, r1] - 2ee0a: e7d0 b.n 2edae <_free_r+0x6a> - 2ee0c: 4770 bx lr - 2ee0e: f041 0301 orr.w r3, r1, #1 - 2ee12: f5b1 7f00 cmp.w r1, #512 ; 0x200 - 2ee16: f844 3c04 str.w r3, [r4, #-4] - 2ee1a: f8cc 1000 str.w r1, [ip] - 2ee1e: d3c9 bcc.n 2edb4 <_free_r+0x70> - 2ee20: f5b1 6f20 cmp.w r1, #2560 ; 0xa00 - 2ee24: ea4f 2351 mov.w r3, r1, lsr #9 - 2ee28: d248 bcs.n 2eebc <_free_r+0x178> - 2ee2a: 098b lsrs r3, r1, #6 - 2ee2c: f103 0039 add.w r0, r3, #57 ; 0x39 - 2ee30: f103 0238 add.w r2, r3, #56 ; 0x38 - 2ee34: 00c3 lsls r3, r0, #3 - 2ee36: 18f8 adds r0, r7, r3 - 2ee38: 58fb ldr r3, [r7, r3] - 2ee3a: 3808 subs r0, #8 - 2ee3c: 4298 cmp r0, r3 - 2ee3e: d059 beq.n 2eef4 <_free_r+0x1b0> - 2ee40: 685a ldr r2, [r3, #4] - 2ee42: f022 0203 bic.w r2, r2, #3 - 2ee46: 428a cmp r2, r1 - 2ee48: d902 bls.n 2ee50 <_free_r+0x10c> - 2ee4a: 689b ldr r3, [r3, #8] - 2ee4c: 4298 cmp r0, r3 - 2ee4e: d1f7 bne.n 2ee40 <_free_r+0xfc> - 2ee50: 68d8 ldr r0, [r3, #12] - 2ee52: e9c5 3002 strd r3, r0, [r5, #8] - 2ee56: 6085 str r5, [r0, #8] - 2ee58: 60dd str r5, [r3, #12] - 2ee5a: 4630 mov r0, r6 - 2ee5c: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} - 2ee60: f7fe bf96 b.w 2dd90 <__malloc_unlock> - 2ee64: eb0c 0203 add.w r2, ip, r3 - 2ee68: 6852 ldr r2, [r2, #4] - 2ee6a: 07d2 lsls r2, r2, #31 - 2ee6c: d463 bmi.n 2ef36 <_free_r+0x1f2> - 2ee6e: 440b add r3, r1 - 2ee70: e9dc 1202 ldrd r1, r2, [ip, #8] - 2ee74: 60ca str r2, [r1, #12] - 2ee76: 6091 str r1, [r2, #8] - 2ee78: f043 0201 orr.w r2, r3, #1 - 2ee7c: 606a str r2, [r5, #4] - 2ee7e: 4630 mov r0, r6 - 2ee80: 50eb str r3, [r5, r3] - 2ee82: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} - 2ee86: f7fe bf83 b.w 2dd90 <__malloc_unlock> - 2ee8a: 440b add r3, r1 - 2ee8c: 07d1 lsls r1, r2, #31 - 2ee8e: d407 bmi.n 2eea0 <_free_r+0x15c> - 2ee90: f854 2c08 ldr.w r2, [r4, #-8] - 2ee94: 1aad subs r5, r5, r2 - 2ee96: 4413 add r3, r2 - 2ee98: e9d5 1202 ldrd r1, r2, [r5, #8] - 2ee9c: 60ca str r2, [r1, #12] - 2ee9e: 6091 str r1, [r2, #8] - 2eea0: f043 0201 orr.w r2, r3, #1 - 2eea4: 606a str r2, [r5, #4] - 2eea6: 4a28 ldr r2, [pc, #160] ; (2ef48 <_free_r+0x204>) - 2eea8: 60bd str r5, [r7, #8] - 2eeaa: 6812 ldr r2, [r2, #0] - 2eeac: 429a cmp r2, r3 - 2eeae: d893 bhi.n 2edd8 <_free_r+0x94> - 2eeb0: 4b26 ldr r3, [pc, #152] ; (2ef4c <_free_r+0x208>) - 2eeb2: 4630 mov r0, r6 - 2eeb4: 6819 ldr r1, [r3, #0] - 2eeb6: f7ff fef5 bl 2eca4 <_malloc_trim_r> - 2eeba: e78d b.n 2edd8 <_free_r+0x94> - 2eebc: 2b14 cmp r3, #20 - 2eebe: d90a bls.n 2eed6 <_free_r+0x192> - 2eec0: 2b54 cmp r3, #84 ; 0x54 - 2eec2: d81f bhi.n 2ef04 <_free_r+0x1c0> - 2eec4: 0b0b lsrs r3, r1, #12 - 2eec6: f103 006f add.w r0, r3, #111 ; 0x6f - 2eeca: f103 026e add.w r2, r3, #110 ; 0x6e - 2eece: 00c3 lsls r3, r0, #3 - 2eed0: e7b1 b.n 2ee36 <_free_r+0xf2> - 2eed2: 4419 add r1, r3 - 2eed4: e78d b.n 2edf2 <_free_r+0xae> - 2eed6: f103 005c add.w r0, r3, #92 ; 0x5c - 2eeda: f103 025b add.w r2, r3, #91 ; 0x5b - 2eede: 00c3 lsls r3, r0, #3 - 2eee0: e7a9 b.n 2ee36 <_free_r+0xf2> - 2eee2: f041 0301 orr.w r3, r1, #1 - 2eee6: e9c7 5504 strd r5, r5, [r7, #16] - 2eeea: e9c5 0002 strd r0, r0, [r5, #8] - 2eeee: 606b str r3, [r5, #4] - 2eef0: 5069 str r1, [r5, r1] - 2eef2: e771 b.n 2edd8 <_free_r+0x94> - 2eef4: 6879 ldr r1, [r7, #4] - 2eef6: 1092 asrs r2, r2, #2 - 2eef8: 2401 movs r4, #1 - 2eefa: fa04 f202 lsl.w r2, r4, r2 - 2eefe: 430a orrs r2, r1 - 2ef00: 607a str r2, [r7, #4] - 2ef02: e7a6 b.n 2ee52 <_free_r+0x10e> - 2ef04: f5b3 7faa cmp.w r3, #340 ; 0x154 - 2ef08: d806 bhi.n 2ef18 <_free_r+0x1d4> - 2ef0a: 0bcb lsrs r3, r1, #15 - 2ef0c: f103 0078 add.w r0, r3, #120 ; 0x78 - 2ef10: f103 0277 add.w r2, r3, #119 ; 0x77 - 2ef14: 00c3 lsls r3, r0, #3 - 2ef16: e78e b.n 2ee36 <_free_r+0xf2> - 2ef18: f240 5254 movw r2, #1364 ; 0x554 - 2ef1c: 4293 cmp r3, r2 - 2ef1e: d806 bhi.n 2ef2e <_free_r+0x1ea> - 2ef20: 0c8b lsrs r3, r1, #18 - 2ef22: f103 007d add.w r0, r3, #125 ; 0x7d - 2ef26: f103 027c add.w r2, r3, #124 ; 0x7c - 2ef2a: 00c3 lsls r3, r0, #3 - 2ef2c: e783 b.n 2ee36 <_free_r+0xf2> - 2ef2e: f44f 737e mov.w r3, #1016 ; 0x3f8 - 2ef32: 227e movs r2, #126 ; 0x7e - 2ef34: e77f b.n 2ee36 <_free_r+0xf2> - 2ef36: f041 0301 orr.w r3, r1, #1 - 2ef3a: 606b str r3, [r5, #4] - 2ef3c: f8cc 1000 str.w r1, [ip] - 2ef40: e74a b.n 2edd8 <_free_r+0x94> - 2ef42: bf00 nop - 2ef44: 20004d94 .word 0x20004d94 - 2ef48: 200051a0 .word 0x200051a0 - 2ef4c: 2000b8f0 .word 0x2000b8f0 - -0002ef50 <__ascii_mbtowc>: - 2ef50: b082 sub sp, #8 - 2ef52: b149 cbz r1, 2ef68 <__ascii_mbtowc+0x18> - 2ef54: b15a cbz r2, 2ef6e <__ascii_mbtowc+0x1e> - 2ef56: b16b cbz r3, 2ef74 <__ascii_mbtowc+0x24> - 2ef58: 7813 ldrb r3, [r2, #0] - 2ef5a: 600b str r3, [r1, #0] - 2ef5c: 7812 ldrb r2, [r2, #0] - 2ef5e: 1e10 subs r0, r2, #0 - 2ef60: bf18 it ne - 2ef62: 2001 movne r0, #1 - 2ef64: b002 add sp, #8 - 2ef66: 4770 bx lr - 2ef68: a901 add r1, sp, #4 - 2ef6a: 2a00 cmp r2, #0 - 2ef6c: d1f3 bne.n 2ef56 <__ascii_mbtowc+0x6> - 2ef6e: 4610 mov r0, r2 - 2ef70: b002 add sp, #8 - 2ef72: 4770 bx lr - 2ef74: f06f 0001 mvn.w r0, #1 - 2ef78: e7f4 b.n 2ef64 <__ascii_mbtowc+0x14> - 2ef7a: bf00 nop - 2ef7c: 0000 movs r0, r0 +0002ec40 : + 2ec40: f890 f000 pld [r0] + 2ec44: e96d 4502 strd r4, r5, [sp, #-8]! + 2ec48: f020 0107 bic.w r1, r0, #7 + 2ec4c: f06f 0c00 mvn.w ip, #0 + 2ec50: f010 0407 ands.w r4, r0, #7 + 2ec54: f891 f020 pld [r1, #32] + 2ec58: f040 8049 bne.w 2ecee + 2ec5c: f04f 0400 mov.w r4, #0 + 2ec60: f06f 0007 mvn.w r0, #7 + 2ec64: e9d1 2300 ldrd r2, r3, [r1] + 2ec68: f891 f040 pld [r1, #64] ; 0x40 + 2ec6c: f100 0008 add.w r0, r0, #8 + 2ec70: fa82 f24c uadd8 r2, r2, ip + 2ec74: faa4 f28c sel r2, r4, ip + 2ec78: fa83 f34c uadd8 r3, r3, ip + 2ec7c: faa2 f38c sel r3, r2, ip + 2ec80: bb4b cbnz r3, 2ecd6 + 2ec82: e9d1 2302 ldrd r2, r3, [r1, #8] + 2ec86: fa82 f24c uadd8 r2, r2, ip + 2ec8a: f100 0008 add.w r0, r0, #8 + 2ec8e: faa4 f28c sel r2, r4, ip + 2ec92: fa83 f34c uadd8 r3, r3, ip + 2ec96: faa2 f38c sel r3, r2, ip + 2ec9a: b9e3 cbnz r3, 2ecd6 + 2ec9c: e9d1 2304 ldrd r2, r3, [r1, #16] + 2eca0: fa82 f24c uadd8 r2, r2, ip + 2eca4: f100 0008 add.w r0, r0, #8 + 2eca8: faa4 f28c sel r2, r4, ip + 2ecac: fa83 f34c uadd8 r3, r3, ip + 2ecb0: faa2 f38c sel r3, r2, ip + 2ecb4: b97b cbnz r3, 2ecd6 + 2ecb6: e9d1 2306 ldrd r2, r3, [r1, #24] + 2ecba: f101 0120 add.w r1, r1, #32 + 2ecbe: fa82 f24c uadd8 r2, r2, ip + 2ecc2: f100 0008 add.w r0, r0, #8 + 2ecc6: faa4 f28c sel r2, r4, ip + 2ecca: fa83 f34c uadd8 r3, r3, ip + 2ecce: faa2 f38c sel r3, r2, ip + 2ecd2: 2b00 cmp r3, #0 + 2ecd4: d0c6 beq.n 2ec64 + 2ecd6: 2a00 cmp r2, #0 + 2ecd8: bf04 itt eq + 2ecda: 3004 addeq r0, #4 + 2ecdc: 461a moveq r2, r3 + 2ecde: ba12 rev r2, r2 + 2ece0: fab2 f282 clz r2, r2 + 2ece4: e8fd 4502 ldrd r4, r5, [sp], #8 + 2ece8: eb00 00d2 add.w r0, r0, r2, lsr #3 + 2ecec: 4770 bx lr + 2ecee: e9d1 2300 ldrd r2, r3, [r1] + 2ecf2: f004 0503 and.w r5, r4, #3 + 2ecf6: f1c4 0000 rsb r0, r4, #0 + 2ecfa: ea4f 05c5 mov.w r5, r5, lsl #3 + 2ecfe: f014 0f04 tst.w r4, #4 + 2ed02: f891 f040 pld [r1, #64] ; 0x40 + 2ed06: fa0c f505 lsl.w r5, ip, r5 + 2ed0a: ea62 0205 orn r2, r2, r5 + 2ed0e: bf1c itt ne + 2ed10: ea63 0305 ornne r3, r3, r5 + 2ed14: 4662 movne r2, ip + 2ed16: f04f 0400 mov.w r4, #0 + 2ed1a: e7a9 b.n 2ec70 + +0002ed1c <__register_exitproc>: + 2ed1c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 2ed20: f8df a07c ldr.w sl, [pc, #124] ; 2eda0 <__register_exitproc+0x84> + 2ed24: 4606 mov r6, r0 + 2ed26: f8da 0000 ldr.w r0, [sl] + 2ed2a: 4698 mov r8, r3 + 2ed2c: 460f mov r7, r1 + 2ed2e: 4691 mov r9, r2 + 2ed30: f7ff ff1a bl 2eb68 <__retarget_lock_acquire_recursive> + 2ed34: 4b18 ldr r3, [pc, #96] ; (2ed98 <__register_exitproc+0x7c>) + 2ed36: 681c ldr r4, [r3, #0] + 2ed38: b324 cbz r4, 2ed84 <__register_exitproc+0x68> + 2ed3a: 6865 ldr r5, [r4, #4] + 2ed3c: 2d1f cmp r5, #31 + 2ed3e: dc24 bgt.n 2ed8a <__register_exitproc+0x6e> + 2ed40: b95e cbnz r6, 2ed5a <__register_exitproc+0x3e> + 2ed42: 1c6b adds r3, r5, #1 + 2ed44: 3502 adds r5, #2 + 2ed46: f8da 0000 ldr.w r0, [sl] + 2ed4a: 6063 str r3, [r4, #4] + 2ed4c: f844 7025 str.w r7, [r4, r5, lsl #2] + 2ed50: f7ff ff0c bl 2eb6c <__retarget_lock_release_recursive> + 2ed54: 2000 movs r0, #0 + 2ed56: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 2ed5a: eb04 0185 add.w r1, r4, r5, lsl #2 + 2ed5e: 2301 movs r3, #1 + 2ed60: f8c1 9088 str.w r9, [r1, #136] ; 0x88 + 2ed64: f8d4 2188 ldr.w r2, [r4, #392] ; 0x188 + 2ed68: 40ab lsls r3, r5 + 2ed6a: 431a orrs r2, r3 + 2ed6c: 2e02 cmp r6, #2 + 2ed6e: f8c4 2188 str.w r2, [r4, #392] ; 0x188 + 2ed72: f8c1 8108 str.w r8, [r1, #264] ; 0x108 + 2ed76: d1e4 bne.n 2ed42 <__register_exitproc+0x26> + 2ed78: f8d4 218c ldr.w r2, [r4, #396] ; 0x18c + 2ed7c: 431a orrs r2, r3 + 2ed7e: f8c4 218c str.w r2, [r4, #396] ; 0x18c + 2ed82: e7de b.n 2ed42 <__register_exitproc+0x26> + 2ed84: 4c05 ldr r4, [pc, #20] ; (2ed9c <__register_exitproc+0x80>) + 2ed86: 601c str r4, [r3, #0] + 2ed88: e7d7 b.n 2ed3a <__register_exitproc+0x1e> + 2ed8a: f8da 0000 ldr.w r0, [sl] + 2ed8e: f7ff feed bl 2eb6c <__retarget_lock_release_recursive> + 2ed92: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 2ed96: e7de b.n 2ed56 <__register_exitproc+0x3a> + 2ed98: 2000b740 .word 0x2000b740 + 2ed9c: 2000b744 .word 0x2000b744 + 2eda0: 20004cdc .word 0x20004cdc + +0002eda4 <_malloc_trim_r>: + 2eda4: b5f8 push {r3, r4, r5, r6, r7, lr} + 2eda6: 4f24 ldr r7, [pc, #144] ; (2ee38 <_malloc_trim_r+0x94>) + 2eda8: 460c mov r4, r1 + 2edaa: 4606 mov r6, r0 + 2edac: f7ff f85e bl 2de6c <__malloc_lock> + 2edb0: 68bb ldr r3, [r7, #8] + 2edb2: 685d ldr r5, [r3, #4] + 2edb4: f5c4 617e rsb r1, r4, #4064 ; 0xfe0 + 2edb8: 310f adds r1, #15 + 2edba: f025 0503 bic.w r5, r5, #3 + 2edbe: 194b adds r3, r1, r5 + 2edc0: f423 637f bic.w r3, r3, #4080 ; 0xff0 + 2edc4: f023 030f bic.w r3, r3, #15 + 2edc8: f5a3 5480 sub.w r4, r3, #4096 ; 0x1000 + 2edcc: f5b4 5f80 cmp.w r4, #4096 ; 0x1000 + 2edd0: db07 blt.n 2ede2 <_malloc_trim_r+0x3e> + 2edd2: 2100 movs r1, #0 + 2edd4: 4630 mov r0, r6 + 2edd6: f7ff fca1 bl 2e71c <_sbrk_r> + 2edda: 68bb ldr r3, [r7, #8] + 2eddc: 442b add r3, r5 + 2edde: 4298 cmp r0, r3 + 2ede0: d004 beq.n 2edec <_malloc_trim_r+0x48> + 2ede2: 4630 mov r0, r6 + 2ede4: f7ff f848 bl 2de78 <__malloc_unlock> + 2ede8: 2000 movs r0, #0 + 2edea: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2edec: 4261 negs r1, r4 + 2edee: 4630 mov r0, r6 + 2edf0: f7ff fc94 bl 2e71c <_sbrk_r> + 2edf4: 3001 adds r0, #1 + 2edf6: d00d beq.n 2ee14 <_malloc_trim_r+0x70> + 2edf8: 4a10 ldr r2, [pc, #64] ; (2ee3c <_malloc_trim_r+0x98>) + 2edfa: 68bb ldr r3, [r7, #8] + 2edfc: 1b2d subs r5, r5, r4 + 2edfe: f045 0501 orr.w r5, r5, #1 + 2ee02: 605d str r5, [r3, #4] + 2ee04: 6813 ldr r3, [r2, #0] + 2ee06: 4630 mov r0, r6 + 2ee08: 1b1b subs r3, r3, r4 + 2ee0a: 6013 str r3, [r2, #0] + 2ee0c: f7ff f834 bl 2de78 <__malloc_unlock> + 2ee10: 2001 movs r0, #1 + 2ee12: bdf8 pop {r3, r4, r5, r6, r7, pc} + 2ee14: 2100 movs r1, #0 + 2ee16: 4630 mov r0, r6 + 2ee18: f7ff fc80 bl 2e71c <_sbrk_r> + 2ee1c: 68ba ldr r2, [r7, #8] + 2ee1e: 1a83 subs r3, r0, r2 + 2ee20: 2b0f cmp r3, #15 + 2ee22: ddde ble.n 2ede2 <_malloc_trim_r+0x3e> + 2ee24: f043 0301 orr.w r3, r3, #1 + 2ee28: 6053 str r3, [r2, #4] + 2ee2a: 4b05 ldr r3, [pc, #20] ; (2ee40 <_malloc_trim_r+0x9c>) + 2ee2c: 4903 ldr r1, [pc, #12] ; (2ee3c <_malloc_trim_r+0x98>) + 2ee2e: 681b ldr r3, [r3, #0] + 2ee30: 1ac0 subs r0, r0, r3 + 2ee32: 6008 str r0, [r1, #0] + 2ee34: e7d5 b.n 2ede2 <_malloc_trim_r+0x3e> + 2ee36: bf00 nop + 2ee38: 20004e54 .word 0x20004e54 + 2ee3c: 2000b8e0 .word 0x2000b8e0 + 2ee40: 2000525c .word 0x2000525c + +0002ee44 <_free_r>: + 2ee44: 2900 cmp r1, #0 + 2ee46: d061 beq.n 2ef0c <_free_r+0xc8> + 2ee48: b5f8 push {r3, r4, r5, r6, r7, lr} + 2ee4a: 460c mov r4, r1 + 2ee4c: 4606 mov r6, r0 + 2ee4e: f7ff f80d bl 2de6c <__malloc_lock> + 2ee52: f854 2c04 ldr.w r2, [r4, #-4] + 2ee56: 4f7b ldr r7, [pc, #492] ; (2f044 <_free_r+0x200>) + 2ee58: f1a4 0508 sub.w r5, r4, #8 + 2ee5c: f022 0101 bic.w r1, r2, #1 + 2ee60: eb05 0c01 add.w ip, r5, r1 + 2ee64: 68b8 ldr r0, [r7, #8] + 2ee66: f8dc 3004 ldr.w r3, [ip, #4] + 2ee6a: 4560 cmp r0, ip + 2ee6c: f023 0303 bic.w r3, r3, #3 + 2ee70: f000 808b beq.w 2ef8a <_free_r+0x146> + 2ee74: 07d2 lsls r2, r2, #31 + 2ee76: f8cc 3004 str.w r3, [ip, #4] + 2ee7a: d432 bmi.n 2eee2 <_free_r+0x9e> + 2ee7c: f854 2c08 ldr.w r2, [r4, #-8] + 2ee80: 1aad subs r5, r5, r2 + 2ee82: 4411 add r1, r2 + 2ee84: 68aa ldr r2, [r5, #8] + 2ee86: f107 0008 add.w r0, r7, #8 + 2ee8a: 4282 cmp r2, r0 + 2ee8c: d06a beq.n 2ef64 <_free_r+0x120> + 2ee8e: eb0c 0403 add.w r4, ip, r3 + 2ee92: f8d4 e004 ldr.w lr, [r4, #4] + 2ee96: 68ec ldr r4, [r5, #12] + 2ee98: 60d4 str r4, [r2, #12] + 2ee9a: f01e 0f01 tst.w lr, #1 + 2ee9e: 60a2 str r2, [r4, #8] + 2eea0: f000 8097 beq.w 2efd2 <_free_r+0x18e> + 2eea4: f041 0301 orr.w r3, r1, #1 + 2eea8: 606b str r3, [r5, #4] + 2eeaa: f8cc 1000 str.w r1, [ip] + 2eeae: f5b1 7f00 cmp.w r1, #512 ; 0x200 + 2eeb2: d235 bcs.n 2ef20 <_free_r+0xdc> + 2eeb4: 6878 ldr r0, [r7, #4] + 2eeb6: 08cb lsrs r3, r1, #3 + 2eeb8: 2201 movs r2, #1 + 2eeba: 0949 lsrs r1, r1, #5 + 2eebc: 3301 adds r3, #1 + 2eebe: 408a lsls r2, r1 + 2eec0: 4302 orrs r2, r0 + 2eec2: f857 1033 ldr.w r1, [r7, r3, lsl #3] + 2eec6: 607a str r2, [r7, #4] + 2eec8: eb07 02c3 add.w r2, r7, r3, lsl #3 + 2eecc: 3a08 subs r2, #8 + 2eece: e9c5 1202 strd r1, r2, [r5, #8] + 2eed2: f847 5033 str.w r5, [r7, r3, lsl #3] + 2eed6: 60cd str r5, [r1, #12] + 2eed8: 4630 mov r0, r6 + 2eeda: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} + 2eede: f7fe bfcb b.w 2de78 <__malloc_unlock> + 2eee2: eb0c 0203 add.w r2, ip, r3 + 2eee6: 6852 ldr r2, [r2, #4] + 2eee8: 07d0 lsls r0, r2, #31 + 2eeea: d410 bmi.n 2ef0e <_free_r+0xca> + 2eeec: 4419 add r1, r3 + 2eeee: f107 0008 add.w r0, r7, #8 + 2eef2: f8dc 3008 ldr.w r3, [ip, #8] + 2eef6: 4283 cmp r3, r0 + 2eef8: d073 beq.n 2efe2 <_free_r+0x19e> + 2eefa: f8dc 200c ldr.w r2, [ip, #12] + 2eefe: 60da str r2, [r3, #12] + 2ef00: 6093 str r3, [r2, #8] + 2ef02: f041 0301 orr.w r3, r1, #1 + 2ef06: 606b str r3, [r5, #4] + 2ef08: 5069 str r1, [r5, r1] + 2ef0a: e7d0 b.n 2eeae <_free_r+0x6a> + 2ef0c: 4770 bx lr + 2ef0e: f041 0301 orr.w r3, r1, #1 + 2ef12: f5b1 7f00 cmp.w r1, #512 ; 0x200 + 2ef16: f844 3c04 str.w r3, [r4, #-4] + 2ef1a: f8cc 1000 str.w r1, [ip] + 2ef1e: d3c9 bcc.n 2eeb4 <_free_r+0x70> + 2ef20: f5b1 6f20 cmp.w r1, #2560 ; 0xa00 + 2ef24: ea4f 2351 mov.w r3, r1, lsr #9 + 2ef28: d248 bcs.n 2efbc <_free_r+0x178> + 2ef2a: 098b lsrs r3, r1, #6 + 2ef2c: f103 0039 add.w r0, r3, #57 ; 0x39 + 2ef30: f103 0238 add.w r2, r3, #56 ; 0x38 + 2ef34: 00c3 lsls r3, r0, #3 + 2ef36: 18f8 adds r0, r7, r3 + 2ef38: 58fb ldr r3, [r7, r3] + 2ef3a: 3808 subs r0, #8 + 2ef3c: 4298 cmp r0, r3 + 2ef3e: d059 beq.n 2eff4 <_free_r+0x1b0> + 2ef40: 685a ldr r2, [r3, #4] + 2ef42: f022 0203 bic.w r2, r2, #3 + 2ef46: 428a cmp r2, r1 + 2ef48: d902 bls.n 2ef50 <_free_r+0x10c> + 2ef4a: 689b ldr r3, [r3, #8] + 2ef4c: 4298 cmp r0, r3 + 2ef4e: d1f7 bne.n 2ef40 <_free_r+0xfc> + 2ef50: 68d8 ldr r0, [r3, #12] + 2ef52: e9c5 3002 strd r3, r0, [r5, #8] + 2ef56: 6085 str r5, [r0, #8] + 2ef58: 60dd str r5, [r3, #12] + 2ef5a: 4630 mov r0, r6 + 2ef5c: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} + 2ef60: f7fe bf8a b.w 2de78 <__malloc_unlock> + 2ef64: eb0c 0203 add.w r2, ip, r3 + 2ef68: 6852 ldr r2, [r2, #4] + 2ef6a: 07d2 lsls r2, r2, #31 + 2ef6c: d463 bmi.n 2f036 <_free_r+0x1f2> + 2ef6e: 440b add r3, r1 + 2ef70: e9dc 1202 ldrd r1, r2, [ip, #8] + 2ef74: 60ca str r2, [r1, #12] + 2ef76: 6091 str r1, [r2, #8] + 2ef78: f043 0201 orr.w r2, r3, #1 + 2ef7c: 606a str r2, [r5, #4] + 2ef7e: 4630 mov r0, r6 + 2ef80: 50eb str r3, [r5, r3] + 2ef82: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} + 2ef86: f7fe bf77 b.w 2de78 <__malloc_unlock> + 2ef8a: 440b add r3, r1 + 2ef8c: 07d1 lsls r1, r2, #31 + 2ef8e: d407 bmi.n 2efa0 <_free_r+0x15c> + 2ef90: f854 2c08 ldr.w r2, [r4, #-8] + 2ef94: 1aad subs r5, r5, r2 + 2ef96: 4413 add r3, r2 + 2ef98: e9d5 1202 ldrd r1, r2, [r5, #8] + 2ef9c: 60ca str r2, [r1, #12] + 2ef9e: 6091 str r1, [r2, #8] + 2efa0: f043 0201 orr.w r2, r3, #1 + 2efa4: 606a str r2, [r5, #4] + 2efa6: 4a28 ldr r2, [pc, #160] ; (2f048 <_free_r+0x204>) + 2efa8: 60bd str r5, [r7, #8] + 2efaa: 6812 ldr r2, [r2, #0] + 2efac: 429a cmp r2, r3 + 2efae: d893 bhi.n 2eed8 <_free_r+0x94> + 2efb0: 4b26 ldr r3, [pc, #152] ; (2f04c <_free_r+0x208>) + 2efb2: 4630 mov r0, r6 + 2efb4: 6819 ldr r1, [r3, #0] + 2efb6: f7ff fef5 bl 2eda4 <_malloc_trim_r> + 2efba: e78d b.n 2eed8 <_free_r+0x94> + 2efbc: 2b14 cmp r3, #20 + 2efbe: d90a bls.n 2efd6 <_free_r+0x192> + 2efc0: 2b54 cmp r3, #84 ; 0x54 + 2efc2: d81f bhi.n 2f004 <_free_r+0x1c0> + 2efc4: 0b0b lsrs r3, r1, #12 + 2efc6: f103 006f add.w r0, r3, #111 ; 0x6f + 2efca: f103 026e add.w r2, r3, #110 ; 0x6e + 2efce: 00c3 lsls r3, r0, #3 + 2efd0: e7b1 b.n 2ef36 <_free_r+0xf2> + 2efd2: 4419 add r1, r3 + 2efd4: e78d b.n 2eef2 <_free_r+0xae> + 2efd6: f103 005c add.w r0, r3, #92 ; 0x5c + 2efda: f103 025b add.w r2, r3, #91 ; 0x5b + 2efde: 00c3 lsls r3, r0, #3 + 2efe0: e7a9 b.n 2ef36 <_free_r+0xf2> + 2efe2: f041 0301 orr.w r3, r1, #1 + 2efe6: e9c7 5504 strd r5, r5, [r7, #16] + 2efea: e9c5 0002 strd r0, r0, [r5, #8] + 2efee: 606b str r3, [r5, #4] + 2eff0: 5069 str r1, [r5, r1] + 2eff2: e771 b.n 2eed8 <_free_r+0x94> + 2eff4: 6879 ldr r1, [r7, #4] + 2eff6: 1092 asrs r2, r2, #2 + 2eff8: 2401 movs r4, #1 + 2effa: fa04 f202 lsl.w r2, r4, r2 + 2effe: 430a orrs r2, r1 + 2f000: 607a str r2, [r7, #4] + 2f002: e7a6 b.n 2ef52 <_free_r+0x10e> + 2f004: f5b3 7faa cmp.w r3, #340 ; 0x154 + 2f008: d806 bhi.n 2f018 <_free_r+0x1d4> + 2f00a: 0bcb lsrs r3, r1, #15 + 2f00c: f103 0078 add.w r0, r3, #120 ; 0x78 + 2f010: f103 0277 add.w r2, r3, #119 ; 0x77 + 2f014: 00c3 lsls r3, r0, #3 + 2f016: e78e b.n 2ef36 <_free_r+0xf2> + 2f018: f240 5254 movw r2, #1364 ; 0x554 + 2f01c: 4293 cmp r3, r2 + 2f01e: d806 bhi.n 2f02e <_free_r+0x1ea> + 2f020: 0c8b lsrs r3, r1, #18 + 2f022: f103 007d add.w r0, r3, #125 ; 0x7d + 2f026: f103 027c add.w r2, r3, #124 ; 0x7c + 2f02a: 00c3 lsls r3, r0, #3 + 2f02c: e783 b.n 2ef36 <_free_r+0xf2> + 2f02e: f44f 737e mov.w r3, #1016 ; 0x3f8 + 2f032: 227e movs r2, #126 ; 0x7e + 2f034: e77f b.n 2ef36 <_free_r+0xf2> + 2f036: f041 0301 orr.w r3, r1, #1 + 2f03a: 606b str r3, [r5, #4] + 2f03c: f8cc 1000 str.w r1, [ip] + 2f040: e74a b.n 2eed8 <_free_r+0x94> + 2f042: bf00 nop + 2f044: 20004e54 .word 0x20004e54 + 2f048: 20005260 .word 0x20005260 + 2f04c: 2000b910 .word 0x2000b910 + +0002f050 <__ascii_mbtowc>: + 2f050: b082 sub sp, #8 + 2f052: b149 cbz r1, 2f068 <__ascii_mbtowc+0x18> + 2f054: b15a cbz r2, 2f06e <__ascii_mbtowc+0x1e> + 2f056: b16b cbz r3, 2f074 <__ascii_mbtowc+0x24> + 2f058: 7813 ldrb r3, [r2, #0] + 2f05a: 600b str r3, [r1, #0] + 2f05c: 7812 ldrb r2, [r2, #0] + 2f05e: 1e10 subs r0, r2, #0 + 2f060: bf18 it ne + 2f062: 2001 movne r0, #1 + 2f064: b002 add sp, #8 + 2f066: 4770 bx lr + 2f068: a901 add r1, sp, #4 + 2f06a: 2a00 cmp r2, #0 + 2f06c: d1f3 bne.n 2f056 <__ascii_mbtowc+0x6> + 2f06e: 4610 mov r0, r2 + 2f070: b002 add sp, #8 + 2f072: 4770 bx lr + 2f074: f06f 0001 mvn.w r0, #1 + 2f078: e7f4 b.n 2f064 <__ascii_mbtowc+0x14> + 2f07a: bf00 nop + 2f07c: 0000 movs r0, r0 ... -0002ef80 <_svfprintf_r>: - 2ef80: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 2ef84: ed2d 8b08 vpush {d8-d11} - 2ef88: b0d1 sub sp, #324 ; 0x144 - 2ef8a: 460c mov r4, r1 - 2ef8c: ee0b 1a10 vmov s22, r1 - 2ef90: 4690 mov r8, r2 - 2ef92: 9308 str r3, [sp, #32] - 2ef94: 4683 mov fp, r0 - 2ef96: f002 facb bl 31530 <_localeconv_r> - 2ef9a: 6803 ldr r3, [r0, #0] - 2ef9c: 9312 str r3, [sp, #72] ; 0x48 - 2ef9e: 4618 mov r0, r3 - 2efa0: f7ff fdce bl 2eb40 - 2efa4: af20 add r7, sp, #128 ; 0x80 - 2efa6: 9010 str r0, [sp, #64] ; 0x40 - 2efa8: 2208 movs r2, #8 - 2efaa: 2100 movs r1, #0 - 2efac: 4638 mov r0, r7 - 2efae: f7ff fa6d bl 2e48c - 2efb2: 89a3 ldrh r3, [r4, #12] - 2efb4: 061b lsls r3, r3, #24 - 2efb6: d503 bpl.n 2efc0 <_svfprintf_r+0x40> - 2efb8: 6923 ldr r3, [r4, #16] - 2efba: 2b00 cmp r3, #0 - 2efbc: f000 8755 beq.w 2fe6a <_svfprintf_r+0xeea> - 2efc0: 2300 movs r3, #0 - 2efc2: ed9f 8b83 vldr d8, [pc, #524] ; 2f1d0 <_svfprintf_r+0x250> - 2efc6: ed9f 9b84 vldr d9, [pc, #528] ; 2f1d8 <_svfprintf_r+0x258> - 2efca: e9cd 3325 strd r3, r3, [sp, #148] ; 0x94 - 2efce: e9cd 3313 strd r3, r3, [sp, #76] ; 0x4c - 2efd2: e9cd 3315 strd r3, r3, [sp, #84] ; 0x54 - 2efd6: aa27 add r2, sp, #156 ; 0x9c - 2efd8: 930e str r3, [sp, #56] ; 0x38 - 2efda: 9224 str r2, [sp, #144] ; 0x90 - 2efdc: 4692 mov sl, r2 - 2efde: 9311 str r3, [sp, #68] ; 0x44 - 2efe0: 9304 str r3, [sp, #16] - 2efe2: 4644 mov r4, r8 - 2efe4: 46a1 mov r9, r4 - 2efe6: 4b7e ldr r3, [pc, #504] ; (2f1e0 <_svfprintf_r+0x260>) - 2efe8: f8d3 50e4 ldr.w r5, [r3, #228] ; 0xe4 - 2efec: f7ff fb16 bl 2e61c <__locale_mb_cur_max> - 2eff0: 464a mov r2, r9 - 2eff2: 4603 mov r3, r0 - 2eff4: a91c add r1, sp, #112 ; 0x70 - 2eff6: 9700 str r7, [sp, #0] - 2eff8: 4658 mov r0, fp - 2effa: 47a8 blx r5 - 2effc: 2800 cmp r0, #0 - 2effe: f000 80b0 beq.w 2f162 <_svfprintf_r+0x1e2> - 2f002: f2c0 80a6 blt.w 2f152 <_svfprintf_r+0x1d2> - 2f006: 9a1c ldr r2, [sp, #112] ; 0x70 - 2f008: 2a25 cmp r2, #37 ; 0x25 - 2f00a: 4603 mov r3, r0 - 2f00c: d001 beq.n 2f012 <_svfprintf_r+0x92> - 2f00e: 4499 add r9, r3 - 2f010: e7e9 b.n 2efe6 <_svfprintf_r+0x66> - 2f012: ebb9 0504 subs.w r5, r9, r4 - 2f016: 4606 mov r6, r0 - 2f018: f040 80a7 bne.w 2f16a <_svfprintf_r+0x1ea> - 2f01c: 2300 movs r3, #0 - 2f01e: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff - 2f022: f88d 3067 strb.w r3, [sp, #103] ; 0x67 - 2f026: 4698 mov r8, r3 - 2f028: 9306 str r3, [sp, #24] - 2f02a: f109 0901 add.w r9, r9, #1 - 2f02e: f899 3000 ldrb.w r3, [r9] - 2f032: 9203 str r2, [sp, #12] - 2f034: 252b movs r5, #43 ; 0x2b - 2f036: 2620 movs r6, #32 - 2f038: f109 0901 add.w r9, r9, #1 - 2f03c: f1a3 0220 sub.w r2, r3, #32 - 2f040: 2a5a cmp r2, #90 ; 0x5a - 2f042: f200 80cf bhi.w 2f1e4 <_svfprintf_r+0x264> - 2f046: e8df f012 tbh [pc, r2, lsl #1] - 2f04a: 02e8 .short 0x02e8 - 2f04c: 00cd00cd .word 0x00cd00cd - 2f050: 00cd02e3 .word 0x00cd02e3 - 2f054: 00cd00cd .word 0x00cd00cd - 2f058: 00cd006a .word 0x00cd006a - 2f05c: 020500cd .word 0x020500cd - 2f060: 00cd0284 .word 0x00cd0284 - 2f064: 02c90210 .word 0x02c90210 - 2f068: 02bd00cd .word 0x02bd00cd - 2f06c: 005b005b .word 0x005b005b - 2f070: 005b005b .word 0x005b005b - 2f074: 005b005b .word 0x005b005b - 2f078: 005b005b .word 0x005b005b - 2f07c: 00cd005b .word 0x00cd005b - 2f080: 00cd00cd .word 0x00cd00cd - 2f084: 00cd00cd .word 0x00cd00cd - 2f088: 00cd00cd .word 0x00cd00cd - 2f08c: 00cd0153 .word 0x00cd0153 - 2f090: 021a0183 .word 0x021a0183 - 2f094: 01530153 .word 0x01530153 - 2f098: 00cd0153 .word 0x00cd0153 - 2f09c: 00cd00cd .word 0x00cd00cd - 2f0a0: 021500cd .word 0x021500cd - 2f0a4: 00cd00cd .word 0x00cd00cd - 2f0a8: 00cd0296 .word 0x00cd0296 - 2f0ac: 00cd00cd .word 0x00cd00cd - 2f0b0: 00cd01ab .word 0x00cd01ab - 2f0b4: 00cd02aa .word 0x00cd02aa - 2f0b8: 06e300cd .word 0x06e300cd - 2f0bc: 00cd00cd .word 0x00cd00cd - 2f0c0: 00cd00cd .word 0x00cd00cd - 2f0c4: 00cd00cd .word 0x00cd00cd - 2f0c8: 00cd00cd .word 0x00cd00cd - 2f0cc: 00cd0153 .word 0x00cd0153 - 2f0d0: 01de0183 .word 0x01de0183 - 2f0d4: 01530153 .word 0x01530153 - 2f0d8: 02770153 .word 0x02770153 - 2f0dc: 007f01de .word 0x007f01de - 2f0e0: 028900cd .word 0x028900cd - 2f0e4: 025f00cd .word 0x025f00cd - 2f0e8: 022f06e0 .word 0x022f06e0 - 2f0ec: 00cd007f .word 0x00cd007f - 2f0f0: 007c01ab .word 0x007c01ab - 2f0f4: 00cd06b8 .word 0x00cd06b8 - 2f0f8: 06bd00cd .word 0x06bd00cd - 2f0fc: 007c00cd .word 0x007c00cd - 2f100: f1a3 0230 sub.w r2, r3, #48 ; 0x30 - 2f104: 2100 movs r1, #0 - 2f106: f819 3b01 ldrb.w r3, [r9], #1 - 2f10a: eb01 0181 add.w r1, r1, r1, lsl #2 - 2f10e: eb02 0141 add.w r1, r2, r1, lsl #1 - 2f112: f1a3 0230 sub.w r2, r3, #48 ; 0x30 - 2f116: 2a09 cmp r2, #9 - 2f118: d9f5 bls.n 2f106 <_svfprintf_r+0x186> - 2f11a: 9106 str r1, [sp, #24] - 2f11c: e78e b.n 2f03c <_svfprintf_r+0xbc> - 2f11e: 4658 mov r0, fp - 2f120: f002 fa06 bl 31530 <_localeconv_r> - 2f124: 6843 ldr r3, [r0, #4] - 2f126: 9315 str r3, [sp, #84] ; 0x54 - 2f128: 4618 mov r0, r3 - 2f12a: f7ff fd09 bl 2eb40 - 2f12e: 9016 str r0, [sp, #88] ; 0x58 - 2f130: 4658 mov r0, fp - 2f132: f002 f9fd bl 31530 <_localeconv_r> - 2f136: 6883 ldr r3, [r0, #8] - 2f138: 9313 str r3, [sp, #76] ; 0x4c - 2f13a: 9b16 ldr r3, [sp, #88] ; 0x58 - 2f13c: 2b00 cmp r3, #0 - 2f13e: f040 862d bne.w 2fd9c <_svfprintf_r+0xe1c> - 2f142: f899 3000 ldrb.w r3, [r9] - 2f146: e777 b.n 2f038 <_svfprintf_r+0xb8> - 2f148: f899 3000 ldrb.w r3, [r9] - 2f14c: f048 0820 orr.w r8, r8, #32 - 2f150: e772 b.n 2f038 <_svfprintf_r+0xb8> - 2f152: 2208 movs r2, #8 - 2f154: 2100 movs r1, #0 - 2f156: 4638 mov r0, r7 - 2f158: f7ff f998 bl 2e48c - 2f15c: 2301 movs r3, #1 - 2f15e: 4499 add r9, r3 - 2f160: e741 b.n 2efe6 <_svfprintf_r+0x66> - 2f162: ebb9 0504 subs.w r5, r9, r4 - 2f166: 4606 mov r6, r0 - 2f168: d011 beq.n 2f18e <_svfprintf_r+0x20e> - 2f16a: 9b26 ldr r3, [sp, #152] ; 0x98 - 2f16c: 442b add r3, r5 - 2f16e: 9326 str r3, [sp, #152] ; 0x98 - 2f170: 9b25 ldr r3, [sp, #148] ; 0x94 - 2f172: 3301 adds r3, #1 - 2f174: 2b07 cmp r3, #7 - 2f176: e9ca 4500 strd r4, r5, [sl] - 2f17a: 9325 str r3, [sp, #148] ; 0x94 - 2f17c: dc1c bgt.n 2f1b8 <_svfprintf_r+0x238> - 2f17e: f10a 0a08 add.w sl, sl, #8 - 2f182: 9b04 ldr r3, [sp, #16] - 2f184: 442b add r3, r5 - 2f186: 9304 str r3, [sp, #16] - 2f188: 2e00 cmp r6, #0 - 2f18a: f47f af47 bne.w 2f01c <_svfprintf_r+0x9c> - 2f18e: 9b26 ldr r3, [sp, #152] ; 0x98 - 2f190: 2b00 cmp r3, #0 - 2f192: f041 820b bne.w 305ac <_svfprintf_r+0x162c> - 2f196: ee1b 3a10 vmov r3, s22 - 2f19a: f9b3 300c ldrsh.w r3, [r3, #12] - 2f19e: f013 0f40 tst.w r3, #64 ; 0x40 - 2f1a2: 9b04 ldr r3, [sp, #16] - 2f1a4: bf18 it ne - 2f1a6: f04f 33ff movne.w r3, #4294967295 ; 0xffffffff - 2f1aa: 9304 str r3, [sp, #16] - 2f1ac: 9804 ldr r0, [sp, #16] - 2f1ae: b051 add sp, #324 ; 0x144 - 2f1b0: ecbd 8b08 vpop {d8-d11} - 2f1b4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 2f1b8: ee1b 1a10 vmov r1, s22 - 2f1bc: aa24 add r2, sp, #144 ; 0x90 - 2f1be: 4658 mov r0, fp - 2f1c0: f003 f9a4 bl 3250c <__ssprint_r> - 2f1c4: 2800 cmp r0, #0 - 2f1c6: d1e6 bne.n 2f196 <_svfprintf_r+0x216> - 2f1c8: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2f1cc: e7d9 b.n 2f182 <_svfprintf_r+0x202> - 2f1ce: bf00 nop +0002f080 <_svfprintf_r>: + 2f080: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 2f084: ed2d 8b08 vpush {d8-d11} + 2f088: b0d1 sub sp, #324 ; 0x144 + 2f08a: 460c mov r4, r1 + 2f08c: ee0b 1a10 vmov s22, r1 + 2f090: 4690 mov r8, r2 + 2f092: 9308 str r3, [sp, #32] + 2f094: 4683 mov fp, r0 + 2f096: f002 facb bl 31630 <_localeconv_r> + 2f09a: 6803 ldr r3, [r0, #0] + 2f09c: 9312 str r3, [sp, #72] ; 0x48 + 2f09e: 4618 mov r0, r3 + 2f0a0: f7ff fdce bl 2ec40 + 2f0a4: af20 add r7, sp, #128 ; 0x80 + 2f0a6: 9010 str r0, [sp, #64] ; 0x40 + 2f0a8: 2208 movs r2, #8 + 2f0aa: 2100 movs r1, #0 + 2f0ac: 4638 mov r0, r7 + 2f0ae: f7ff fa61 bl 2e574 + 2f0b2: 89a3 ldrh r3, [r4, #12] + 2f0b4: 061b lsls r3, r3, #24 + 2f0b6: d503 bpl.n 2f0c0 <_svfprintf_r+0x40> + 2f0b8: 6923 ldr r3, [r4, #16] + 2f0ba: 2b00 cmp r3, #0 + 2f0bc: f000 8755 beq.w 2ff6a <_svfprintf_r+0xeea> + 2f0c0: 2300 movs r3, #0 + 2f0c2: ed9f 8b83 vldr d8, [pc, #524] ; 2f2d0 <_svfprintf_r+0x250> + 2f0c6: ed9f 9b84 vldr d9, [pc, #528] ; 2f2d8 <_svfprintf_r+0x258> + 2f0ca: e9cd 3325 strd r3, r3, [sp, #148] ; 0x94 + 2f0ce: e9cd 3313 strd r3, r3, [sp, #76] ; 0x4c + 2f0d2: e9cd 3315 strd r3, r3, [sp, #84] ; 0x54 + 2f0d6: aa27 add r2, sp, #156 ; 0x9c + 2f0d8: 930e str r3, [sp, #56] ; 0x38 + 2f0da: 9224 str r2, [sp, #144] ; 0x90 + 2f0dc: 4692 mov sl, r2 + 2f0de: 9311 str r3, [sp, #68] ; 0x44 + 2f0e0: 9304 str r3, [sp, #16] + 2f0e2: 4644 mov r4, r8 + 2f0e4: 46a1 mov r9, r4 + 2f0e6: 4b7e ldr r3, [pc, #504] ; (2f2e0 <_svfprintf_r+0x260>) + 2f0e8: f8d3 50e4 ldr.w r5, [r3, #228] ; 0xe4 + 2f0ec: f7ff fb0a bl 2e704 <__locale_mb_cur_max> + 2f0f0: 464a mov r2, r9 + 2f0f2: 4603 mov r3, r0 + 2f0f4: a91c add r1, sp, #112 ; 0x70 + 2f0f6: 9700 str r7, [sp, #0] + 2f0f8: 4658 mov r0, fp + 2f0fa: 47a8 blx r5 + 2f0fc: 2800 cmp r0, #0 + 2f0fe: f000 80b0 beq.w 2f262 <_svfprintf_r+0x1e2> + 2f102: f2c0 80a6 blt.w 2f252 <_svfprintf_r+0x1d2> + 2f106: 9a1c ldr r2, [sp, #112] ; 0x70 + 2f108: 2a25 cmp r2, #37 ; 0x25 + 2f10a: 4603 mov r3, r0 + 2f10c: d001 beq.n 2f112 <_svfprintf_r+0x92> + 2f10e: 4499 add r9, r3 + 2f110: e7e9 b.n 2f0e6 <_svfprintf_r+0x66> + 2f112: ebb9 0504 subs.w r5, r9, r4 + 2f116: 4606 mov r6, r0 + 2f118: f040 80a7 bne.w 2f26a <_svfprintf_r+0x1ea> + 2f11c: 2300 movs r3, #0 + 2f11e: f04f 32ff mov.w r2, #4294967295 ; 0xffffffff + 2f122: f88d 3067 strb.w r3, [sp, #103] ; 0x67 + 2f126: 4698 mov r8, r3 + 2f128: 9306 str r3, [sp, #24] + 2f12a: f109 0901 add.w r9, r9, #1 + 2f12e: f899 3000 ldrb.w r3, [r9] + 2f132: 9203 str r2, [sp, #12] + 2f134: 252b movs r5, #43 ; 0x2b + 2f136: 2620 movs r6, #32 + 2f138: f109 0901 add.w r9, r9, #1 + 2f13c: f1a3 0220 sub.w r2, r3, #32 + 2f140: 2a5a cmp r2, #90 ; 0x5a + 2f142: f200 80cf bhi.w 2f2e4 <_svfprintf_r+0x264> + 2f146: e8df f012 tbh [pc, r2, lsl #1] + 2f14a: 02e8 .short 0x02e8 + 2f14c: 00cd00cd .word 0x00cd00cd + 2f150: 00cd02e3 .word 0x00cd02e3 + 2f154: 00cd00cd .word 0x00cd00cd + 2f158: 00cd006a .word 0x00cd006a + 2f15c: 020500cd .word 0x020500cd + 2f160: 00cd0284 .word 0x00cd0284 + 2f164: 02c90210 .word 0x02c90210 + 2f168: 02bd00cd .word 0x02bd00cd + 2f16c: 005b005b .word 0x005b005b + 2f170: 005b005b .word 0x005b005b + 2f174: 005b005b .word 0x005b005b + 2f178: 005b005b .word 0x005b005b + 2f17c: 00cd005b .word 0x00cd005b + 2f180: 00cd00cd .word 0x00cd00cd + 2f184: 00cd00cd .word 0x00cd00cd + 2f188: 00cd00cd .word 0x00cd00cd + 2f18c: 00cd0153 .word 0x00cd0153 + 2f190: 021a0183 .word 0x021a0183 + 2f194: 01530153 .word 0x01530153 + 2f198: 00cd0153 .word 0x00cd0153 + 2f19c: 00cd00cd .word 0x00cd00cd + 2f1a0: 021500cd .word 0x021500cd + 2f1a4: 00cd00cd .word 0x00cd00cd + 2f1a8: 00cd0296 .word 0x00cd0296 + 2f1ac: 00cd00cd .word 0x00cd00cd + 2f1b0: 00cd01ab .word 0x00cd01ab + 2f1b4: 00cd02aa .word 0x00cd02aa + 2f1b8: 06e300cd .word 0x06e300cd + 2f1bc: 00cd00cd .word 0x00cd00cd + 2f1c0: 00cd00cd .word 0x00cd00cd + 2f1c4: 00cd00cd .word 0x00cd00cd + 2f1c8: 00cd00cd .word 0x00cd00cd + 2f1cc: 00cd0153 .word 0x00cd0153 + 2f1d0: 01de0183 .word 0x01de0183 + 2f1d4: 01530153 .word 0x01530153 + 2f1d8: 02770153 .word 0x02770153 + 2f1dc: 007f01de .word 0x007f01de + 2f1e0: 028900cd .word 0x028900cd + 2f1e4: 025f00cd .word 0x025f00cd + 2f1e8: 022f06e0 .word 0x022f06e0 + 2f1ec: 00cd007f .word 0x00cd007f + 2f1f0: 007c01ab .word 0x007c01ab + 2f1f4: 00cd06b8 .word 0x00cd06b8 + 2f1f8: 06bd00cd .word 0x06bd00cd + 2f1fc: 007c00cd .word 0x007c00cd + 2f200: f1a3 0230 sub.w r2, r3, #48 ; 0x30 + 2f204: 2100 movs r1, #0 + 2f206: f819 3b01 ldrb.w r3, [r9], #1 + 2f20a: eb01 0181 add.w r1, r1, r1, lsl #2 + 2f20e: eb02 0141 add.w r1, r2, r1, lsl #1 + 2f212: f1a3 0230 sub.w r2, r3, #48 ; 0x30 + 2f216: 2a09 cmp r2, #9 + 2f218: d9f5 bls.n 2f206 <_svfprintf_r+0x186> + 2f21a: 9106 str r1, [sp, #24] + 2f21c: e78e b.n 2f13c <_svfprintf_r+0xbc> + 2f21e: 4658 mov r0, fp + 2f220: f002 fa06 bl 31630 <_localeconv_r> + 2f224: 6843 ldr r3, [r0, #4] + 2f226: 9315 str r3, [sp, #84] ; 0x54 + 2f228: 4618 mov r0, r3 + 2f22a: f7ff fd09 bl 2ec40 + 2f22e: 9016 str r0, [sp, #88] ; 0x58 + 2f230: 4658 mov r0, fp + 2f232: f002 f9fd bl 31630 <_localeconv_r> + 2f236: 6883 ldr r3, [r0, #8] + 2f238: 9313 str r3, [sp, #76] ; 0x4c + 2f23a: 9b16 ldr r3, [sp, #88] ; 0x58 + 2f23c: 2b00 cmp r3, #0 + 2f23e: f040 862d bne.w 2fe9c <_svfprintf_r+0xe1c> + 2f242: f899 3000 ldrb.w r3, [r9] + 2f246: e777 b.n 2f138 <_svfprintf_r+0xb8> + 2f248: f899 3000 ldrb.w r3, [r9] + 2f24c: f048 0820 orr.w r8, r8, #32 + 2f250: e772 b.n 2f138 <_svfprintf_r+0xb8> + 2f252: 2208 movs r2, #8 + 2f254: 2100 movs r1, #0 + 2f256: 4638 mov r0, r7 + 2f258: f7ff f98c bl 2e574 + 2f25c: 2301 movs r3, #1 + 2f25e: 4499 add r9, r3 + 2f260: e741 b.n 2f0e6 <_svfprintf_r+0x66> + 2f262: ebb9 0504 subs.w r5, r9, r4 + 2f266: 4606 mov r6, r0 + 2f268: d011 beq.n 2f28e <_svfprintf_r+0x20e> + 2f26a: 9b26 ldr r3, [sp, #152] ; 0x98 + 2f26c: 442b add r3, r5 + 2f26e: 9326 str r3, [sp, #152] ; 0x98 + 2f270: 9b25 ldr r3, [sp, #148] ; 0x94 + 2f272: 3301 adds r3, #1 + 2f274: 2b07 cmp r3, #7 + 2f276: e9ca 4500 strd r4, r5, [sl] + 2f27a: 9325 str r3, [sp, #148] ; 0x94 + 2f27c: dc1c bgt.n 2f2b8 <_svfprintf_r+0x238> + 2f27e: f10a 0a08 add.w sl, sl, #8 + 2f282: 9b04 ldr r3, [sp, #16] + 2f284: 442b add r3, r5 + 2f286: 9304 str r3, [sp, #16] + 2f288: 2e00 cmp r6, #0 + 2f28a: f47f af47 bne.w 2f11c <_svfprintf_r+0x9c> + 2f28e: 9b26 ldr r3, [sp, #152] ; 0x98 + 2f290: 2b00 cmp r3, #0 + 2f292: f041 820b bne.w 306ac <_svfprintf_r+0x162c> + 2f296: ee1b 3a10 vmov r3, s22 + 2f29a: f9b3 300c ldrsh.w r3, [r3, #12] + 2f29e: f013 0f40 tst.w r3, #64 ; 0x40 + 2f2a2: 9b04 ldr r3, [sp, #16] + 2f2a4: bf18 it ne + 2f2a6: f04f 33ff movne.w r3, #4294967295 ; 0xffffffff + 2f2aa: 9304 str r3, [sp, #16] + 2f2ac: 9804 ldr r0, [sp, #16] + 2f2ae: b051 add sp, #324 ; 0x144 + 2f2b0: ecbd 8b08 vpop {d8-d11} + 2f2b4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 2f2b8: ee1b 1a10 vmov r1, s22 + 2f2bc: aa24 add r2, sp, #144 ; 0x90 + 2f2be: 4658 mov r0, fp + 2f2c0: f003 f9a4 bl 3260c <__ssprint_r> + 2f2c4: 2800 cmp r0, #0 + 2f2c6: d1e6 bne.n 2f296 <_svfprintf_r+0x216> + 2f2c8: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2f2cc: e7d9 b.n 2f282 <_svfprintf_r+0x202> + 2f2ce: bf00 nop ... - 2f1d8: ffffffff .word 0xffffffff - 2f1dc: 7fefffff .word 0x7fefffff - 2f1e0: 20004c28 .word 0x20004c28 - 2f1e4: 930b str r3, [sp, #44] ; 0x2c - 2f1e6: 2b00 cmp r3, #0 - 2f1e8: d0d1 beq.n 2f18e <_svfprintf_r+0x20e> - 2f1ea: 2100 movs r1, #0 - 2f1ec: e9cd 110c strd r1, r1, [sp, #48] ; 0x30 - 2f1f0: f88d 30dc strb.w r3, [sp, #220] ; 0xdc - 2f1f4: 2301 movs r3, #1 - 2f1f6: f88d 1067 strb.w r1, [sp, #103] ; 0x67 - 2f1fa: 9302 str r3, [sp, #8] - 2f1fc: 9107 str r1, [sp, #28] - 2f1fe: 9305 str r3, [sp, #20] - 2f200: 9103 str r1, [sp, #12] - 2f202: 910f str r1, [sp, #60] ; 0x3c - 2f204: ac37 add r4, sp, #220 ; 0xdc - 2f206: f018 0302 ands.w r3, r8, #2 - 2f20a: 9309 str r3, [sp, #36] ; 0x24 - 2f20c: d002 beq.n 2f214 <_svfprintf_r+0x294> - 2f20e: 9b02 ldr r3, [sp, #8] - 2f210: 3302 adds r3, #2 - 2f212: 9302 str r3, [sp, #8] - 2f214: f018 0384 ands.w r3, r8, #132 ; 0x84 - 2f218: 930a str r3, [sp, #40] ; 0x28 - 2f21a: d105 bne.n 2f228 <_svfprintf_r+0x2a8> - 2f21c: 9b06 ldr r3, [sp, #24] - 2f21e: 9a02 ldr r2, [sp, #8] - 2f220: 1a9d subs r5, r3, r2 - 2f222: 2d00 cmp r5, #0 - 2f224: f300 8369 bgt.w 2f8fa <_svfprintf_r+0x97a> - 2f228: 9a26 ldr r2, [sp, #152] ; 0x98 - 2f22a: b189 cbz r1, 2f250 <_svfprintf_r+0x2d0> - 2f22c: 9925 ldr r1, [sp, #148] ; 0x94 - 2f22e: f10d 0067 add.w r0, sp, #103 ; 0x67 - 2f232: 3101 adds r1, #1 - 2f234: 3201 adds r2, #1 - 2f236: f8ca 0000 str.w r0, [sl] - 2f23a: 2907 cmp r1, #7 - 2f23c: f04f 0001 mov.w r0, #1 - 2f240: 9226 str r2, [sp, #152] ; 0x98 - 2f242: 9125 str r1, [sp, #148] ; 0x94 - 2f244: f8ca 0004 str.w r0, [sl, #4] - 2f248: f300 83a2 bgt.w 2f990 <_svfprintf_r+0xa10> - 2f24c: f10a 0a08 add.w sl, sl, #8 - 2f250: 9b09 ldr r3, [sp, #36] ; 0x24 - 2f252: b183 cbz r3, 2f276 <_svfprintf_r+0x2f6> - 2f254: 9b25 ldr r3, [sp, #148] ; 0x94 - 2f256: a91a add r1, sp, #104 ; 0x68 - 2f258: 3301 adds r3, #1 - 2f25a: 3202 adds r2, #2 - 2f25c: f8ca 1000 str.w r1, [sl] - 2f260: 2b07 cmp r3, #7 - 2f262: f04f 0102 mov.w r1, #2 - 2f266: 9226 str r2, [sp, #152] ; 0x98 - 2f268: 9325 str r3, [sp, #148] ; 0x94 - 2f26a: f8ca 1004 str.w r1, [sl, #4] - 2f26e: f300 83a3 bgt.w 2f9b8 <_svfprintf_r+0xa38> - 2f272: f10a 0a08 add.w sl, sl, #8 - 2f276: 9b0a ldr r3, [sp, #40] ; 0x28 - 2f278: 2b80 cmp r3, #128 ; 0x80 - 2f27a: f000 826c beq.w 2f756 <_svfprintf_r+0x7d6> - 2f27e: 9b03 ldr r3, [sp, #12] - 2f280: 9905 ldr r1, [sp, #20] - 2f282: 1a5d subs r5, r3, r1 - 2f284: 2d00 cmp r5, #0 - 2f286: f300 82a5 bgt.w 2f7d4 <_svfprintf_r+0x854> - 2f28a: f418 7f80 tst.w r8, #256 ; 0x100 - 2f28e: f040 820d bne.w 2f6ac <_svfprintf_r+0x72c> - 2f292: 9b05 ldr r3, [sp, #20] - 2f294: f8ca 3004 str.w r3, [sl, #4] - 2f298: 441a add r2, r3 - 2f29a: 9b25 ldr r3, [sp, #148] ; 0x94 - 2f29c: f8ca 4000 str.w r4, [sl] - 2f2a0: 3301 adds r3, #1 - 2f2a2: 2b07 cmp r3, #7 - 2f2a4: 9226 str r2, [sp, #152] ; 0x98 - 2f2a6: 9325 str r3, [sp, #148] ; 0x94 - 2f2a8: f300 831b bgt.w 2f8e2 <_svfprintf_r+0x962> - 2f2ac: f10a 0a08 add.w sl, sl, #8 - 2f2b0: f018 0f04 tst.w r8, #4 - 2f2b4: d005 beq.n 2f2c2 <_svfprintf_r+0x342> - 2f2b6: 9b06 ldr r3, [sp, #24] - 2f2b8: 9902 ldr r1, [sp, #8] - 2f2ba: 1a5c subs r4, r3, r1 - 2f2bc: 2c00 cmp r4, #0 - 2f2be: f300 8388 bgt.w 2f9d2 <_svfprintf_r+0xa52> - 2f2c2: 9b04 ldr r3, [sp, #16] - 2f2c4: 9906 ldr r1, [sp, #24] - 2f2c6: 9802 ldr r0, [sp, #8] - 2f2c8: 4281 cmp r1, r0 - 2f2ca: bfac ite ge - 2f2cc: 185b addge r3, r3, r1 - 2f2ce: 181b addlt r3, r3, r0 - 2f2d0: 9304 str r3, [sp, #16] - 2f2d2: 2a00 cmp r2, #0 - 2f2d4: f040 82b0 bne.w 2f838 <_svfprintf_r+0x8b8> - 2f2d8: 2300 movs r3, #0 - 2f2da: 9325 str r3, [sp, #148] ; 0x94 - 2f2dc: 9b07 ldr r3, [sp, #28] - 2f2de: b11b cbz r3, 2f2e8 <_svfprintf_r+0x368> - 2f2e0: 9907 ldr r1, [sp, #28] - 2f2e2: 4658 mov r0, fp - 2f2e4: f7ff fd2e bl 2ed44 <_free_r> - 2f2e8: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2f2ec: 464c mov r4, r9 - 2f2ee: e679 b.n 2efe4 <_svfprintf_r+0x64> - 2f2f0: 930b str r3, [sp, #44] ; 0x2c - 2f2f2: 9b08 ldr r3, [sp, #32] - 2f2f4: 3307 adds r3, #7 - 2f2f6: f023 0307 bic.w r3, r3, #7 - 2f2fa: ecb3 8b02 vldmia r3!, {d8} - 2f2fe: eeb0 7bc8 vabs.f64 d7, d8 - 2f302: eeb4 7b49 vcmp.f64 d7, d9 - 2f306: eef1 fa10 vmrs APSR_nzcv, fpscr - 2f30a: 9308 str r3, [sp, #32] - 2f30c: f340 84e9 ble.w 2fce2 <_svfprintf_r+0xd62> - 2f310: eeb5 8bc0 vcmpe.f64 d8, #0.0 - 2f314: eef1 fa10 vmrs APSR_nzcv, fpscr - 2f318: f101 8059 bmi.w 303ce <_svfprintf_r+0x144e> - 2f31c: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 - 2f320: 4cab ldr r4, [pc, #684] ; (2f5d0 <_svfprintf_r+0x650>) - 2f322: 4bac ldr r3, [pc, #688] ; (2f5d4 <_svfprintf_r+0x654>) - 2f324: f028 0880 bic.w r8, r8, #128 ; 0x80 - 2f328: 9a0b ldr r2, [sp, #44] ; 0x2c - 2f32a: 2a47 cmp r2, #71 ; 0x47 - 2f32c: bfc8 it gt - 2f32e: 461c movgt r4, r3 - 2f330: 2300 movs r3, #0 - 2f332: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 - 2f336: 2203 movs r2, #3 - 2f338: 9307 str r3, [sp, #28] - 2f33a: 9202 str r2, [sp, #8] - 2f33c: 9205 str r2, [sp, #20] - 2f33e: 9303 str r3, [sp, #12] - 2f340: 930f str r3, [sp, #60] ; 0x3c - 2f342: 2900 cmp r1, #0 - 2f344: f43f af5f beq.w 2f206 <_svfprintf_r+0x286> - 2f348: 9b02 ldr r3, [sp, #8] - 2f34a: 3301 adds r3, #1 - 2f34c: 9302 str r3, [sp, #8] - 2f34e: e75a b.n 2f206 <_svfprintf_r+0x286> - 2f350: 2b43 cmp r3, #67 ; 0x43 - 2f352: 930b str r3, [sp, #44] ; 0x2c - 2f354: d003 beq.n 2f35e <_svfprintf_r+0x3de> - 2f356: f018 0f10 tst.w r8, #16 - 2f35a: f000 855d beq.w 2fe18 <_svfprintf_r+0xe98> - 2f35e: 9d08 ldr r5, [sp, #32] - 2f360: 2208 movs r2, #8 - 2f362: 2100 movs r1, #0 - 2f364: a822 add r0, sp, #136 ; 0x88 - 2f366: ac37 add r4, sp, #220 ; 0xdc - 2f368: f7ff f890 bl 2e48c - 2f36c: ab22 add r3, sp, #136 ; 0x88 - 2f36e: f855 2b04 ldr.w r2, [r5], #4 - 2f372: 4621 mov r1, r4 - 2f374: 4658 mov r0, fp - 2f376: f002 f91d bl 315b4 <_wcrtomb_r> - 2f37a: 4603 mov r3, r0 - 2f37c: 3301 adds r3, #1 - 2f37e: 9005 str r0, [sp, #20] - 2f380: f001 82ee beq.w 30960 <_svfprintf_r+0x19e0> - 2f384: 9b05 ldr r3, [sp, #20] - 2f386: 9508 str r5, [sp, #32] - 2f388: ea23 73e3 bic.w r3, r3, r3, asr #31 - 2f38c: 9302 str r3, [sp, #8] - 2f38e: 2100 movs r1, #0 - 2f390: e9cd 110c strd r1, r1, [sp, #48] ; 0x30 - 2f394: f88d 1067 strb.w r1, [sp, #103] ; 0x67 - 2f398: 9107 str r1, [sp, #28] - 2f39a: 9103 str r1, [sp, #12] - 2f39c: 910f str r1, [sp, #60] ; 0x3c - 2f39e: e732 b.n 2f206 <_svfprintf_r+0x286> - 2f3a0: 930b str r3, [sp, #44] ; 0x2c - 2f3a2: 9b08 ldr r3, [sp, #32] - 2f3a4: 461a mov r2, r3 - 2f3a6: 2300 movs r3, #0 - 2f3a8: f88d 3067 strb.w r3, [sp, #103] ; 0x67 - 2f3ac: 4613 mov r3, r2 - 2f3ae: f853 4b04 ldr.w r4, [r3], #4 - 2f3b2: 9308 str r3, [sp, #32] - 2f3b4: 2c00 cmp r4, #0 - 2f3b6: f000 8548 beq.w 2fe4a <_svfprintf_r+0xeca> - 2f3ba: 9b0b ldr r3, [sp, #44] ; 0x2c - 2f3bc: 2b53 cmp r3, #83 ; 0x53 - 2f3be: f000 86ec beq.w 3019a <_svfprintf_r+0x121a> - 2f3c2: f018 0310 ands.w r3, r8, #16 - 2f3c6: 930c str r3, [sp, #48] ; 0x30 - 2f3c8: f040 86e7 bne.w 3019a <_svfprintf_r+0x121a> - 2f3cc: 9b03 ldr r3, [sp, #12] - 2f3ce: 1c5d adds r5, r3, #1 - 2f3d0: f001 80e5 beq.w 3059e <_svfprintf_r+0x161e> - 2f3d4: 990c ldr r1, [sp, #48] ; 0x30 - 2f3d6: 461a mov r2, r3 - 2f3d8: 4620 mov r0, r4 - 2f3da: f7ff fb59 bl 2ea90 - 2f3de: 9007 str r0, [sp, #28] - 2f3e0: 2800 cmp r0, #0 - 2f3e2: f001 8328 beq.w 30a36 <_svfprintf_r+0x1ab6> - 2f3e6: 9b07 ldr r3, [sp, #28] - 2f3e8: 1b1a subs r2, r3, r4 - 2f3ea: 9205 str r2, [sp, #20] - 2f3ec: 9b0c ldr r3, [sp, #48] ; 0x30 - 2f3ee: 9303 str r3, [sp, #12] - 2f3f0: ea22 72e2 bic.w r2, r2, r2, asr #31 - 2f3f4: 930f str r3, [sp, #60] ; 0x3c - 2f3f6: 930d str r3, [sp, #52] ; 0x34 - 2f3f8: 9307 str r3, [sp, #28] - 2f3fa: 2373 movs r3, #115 ; 0x73 - 2f3fc: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 - 2f400: 9202 str r2, [sp, #8] - 2f402: 930b str r3, [sp, #44] ; 0x2c - 2f404: e79d b.n 2f342 <_svfprintf_r+0x3c2> - 2f406: f018 0f20 tst.w r8, #32 - 2f40a: 930b str r3, [sp, #44] ; 0x2c - 2f40c: 9b08 ldr r3, [sp, #32] - 2f40e: d03d beq.n 2f48c <_svfprintf_r+0x50c> - 2f410: 3307 adds r3, #7 - 2f412: f023 0307 bic.w r3, r3, #7 - 2f416: 461a mov r2, r3 - 2f418: 4611 mov r1, r2 - 2f41a: 685b ldr r3, [r3, #4] - 2f41c: f851 2b08 ldr.w r2, [r1], #8 - 2f420: 9108 str r1, [sp, #32] - 2f422: 4619 mov r1, r3 - 2f424: 2b00 cmp r3, #0 - 2f426: f2c0 840c blt.w 2fc42 <_svfprintf_r+0xcc2> - 2f42a: 9b03 ldr r3, [sp, #12] - 2f42c: 3301 adds r3, #1 - 2f42e: f000 829e beq.w 2f96e <_svfprintf_r+0x9ee> - 2f432: f028 0080 bic.w r0, r8, #128 ; 0x80 - 2f436: ea52 0301 orrs.w r3, r2, r1 - 2f43a: 9002 str r0, [sp, #8] - 2f43c: f040 8299 bne.w 2f972 <_svfprintf_r+0x9f2> - 2f440: 9b03 ldr r3, [sp, #12] - 2f442: 2b00 cmp r3, #0 - 2f444: f040 829a bne.w 2f97c <_svfprintf_r+0x9fc> - 2f448: 4680 mov r8, r0 - 2f44a: 2300 movs r3, #0 - 2f44c: 9303 str r3, [sp, #12] - 2f44e: 9305 str r3, [sp, #20] - 2f450: ac50 add r4, sp, #320 ; 0x140 - 2f452: e106 b.n 2f662 <_svfprintf_r+0x6e2> - 2f454: 9b08 ldr r3, [sp, #32] - 2f456: f853 2b04 ldr.w r2, [r3], #4 - 2f45a: 9206 str r2, [sp, #24] - 2f45c: 2a00 cmp r2, #0 - 2f45e: f280 8419 bge.w 2fc94 <_svfprintf_r+0xd14> - 2f462: 9a06 ldr r2, [sp, #24] - 2f464: 9308 str r3, [sp, #32] - 2f466: 4252 negs r2, r2 - 2f468: 9206 str r2, [sp, #24] - 2f46a: f899 3000 ldrb.w r3, [r9] - 2f46e: f048 0804 orr.w r8, r8, #4 - 2f472: e5e1 b.n 2f038 <_svfprintf_r+0xb8> - 2f474: f899 3000 ldrb.w r3, [r9] - 2f478: f048 0808 orr.w r8, r8, #8 - 2f47c: e5dc b.n 2f038 <_svfprintf_r+0xb8> - 2f47e: f048 0810 orr.w r8, r8, #16 - 2f482: f018 0f20 tst.w r8, #32 - 2f486: 930b str r3, [sp, #44] ; 0x2c - 2f488: 9b08 ldr r3, [sp, #32] - 2f48a: d1c1 bne.n 2f410 <_svfprintf_r+0x490> - 2f48c: f018 0f10 tst.w r8, #16 - 2f490: f040 840b bne.w 2fcaa <_svfprintf_r+0xd2a> - 2f494: f018 0f40 tst.w r8, #64 ; 0x40 - 2f498: f000 8403 beq.w 2fca2 <_svfprintf_r+0xd22> - 2f49c: f933 2b04 ldrsh.w r2, [r3], #4 - 2f4a0: 9308 str r3, [sp, #32] - 2f4a2: 17d1 asrs r1, r2, #31 - 2f4a4: 460b mov r3, r1 - 2f4a6: e7bd b.n 2f424 <_svfprintf_r+0x4a4> - 2f4a8: 9b08 ldr r3, [sp, #32] - 2f4aa: f048 0202 orr.w r2, r8, #2 - 2f4ae: 9202 str r2, [sp, #8] - 2f4b0: f853 2b04 ldr.w r2, [r3], #4 - 2f4b4: 9308 str r3, [sp, #32] - 2f4b6: f647 0330 movw r3, #30768 ; 0x7830 - 2f4ba: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 - 2f4be: 2078 movs r0, #120 ; 0x78 - 2f4c0: 4b45 ldr r3, [pc, #276] ; (2f5d8 <_svfprintf_r+0x658>) - 2f4c2: 9311 str r3, [sp, #68] ; 0x44 - 2f4c4: 2100 movs r1, #0 - 2f4c6: 2302 movs r3, #2 - 2f4c8: 900b str r0, [sp, #44] ; 0x2c - 2f4ca: 2000 movs r0, #0 - 2f4cc: 9c03 ldr r4, [sp, #12] - 2f4ce: f88d 0067 strb.w r0, [sp, #103] ; 0x67 - 2f4d2: 1c60 adds r0, r4, #1 - 2f4d4: f000 80ad beq.w 2f632 <_svfprintf_r+0x6b2> - 2f4d8: 9802 ldr r0, [sp, #8] - 2f4da: f020 0880 bic.w r8, r0, #128 ; 0x80 - 2f4de: ea52 0001 orrs.w r0, r2, r1 - 2f4e2: f040 80a4 bne.w 2f62e <_svfprintf_r+0x6ae> - 2f4e6: 2c00 cmp r4, #0 - 2f4e8: f040 86ae bne.w 30248 <_svfprintf_r+0x12c8> - 2f4ec: 2b00 cmp r3, #0 - 2f4ee: d1ac bne.n 2f44a <_svfprintf_r+0x4ca> - 2f4f0: 9b02 ldr r3, [sp, #8] - 2f4f2: f013 0301 ands.w r3, r3, #1 - 2f4f6: 9305 str r3, [sp, #20] - 2f4f8: f000 83d1 beq.w 2fc9e <_svfprintf_r+0xd1e> - 2f4fc: 2330 movs r3, #48 ; 0x30 - 2f4fe: f88d 313f strb.w r3, [sp, #319] ; 0x13f - 2f502: f20d 143f addw r4, sp, #319 ; 0x13f - 2f506: e0ac b.n 2f662 <_svfprintf_r+0x6e2> - 2f508: f018 0f20 tst.w r8, #32 - 2f50c: f040 83d4 bne.w 2fcb8 <_svfprintf_r+0xd38> - 2f510: f018 0f10 tst.w r8, #16 - 2f514: f040 869f bne.w 30256 <_svfprintf_r+0x12d6> - 2f518: f018 0f40 tst.w r8, #64 ; 0x40 - 2f51c: f040 8797 bne.w 3044e <_svfprintf_r+0x14ce> - 2f520: f418 7f00 tst.w r8, #512 ; 0x200 - 2f524: f000 8697 beq.w 30256 <_svfprintf_r+0x12d6> - 2f528: 9b08 ldr r3, [sp, #32] - 2f52a: 9904 ldr r1, [sp, #16] - 2f52c: f853 2b04 ldr.w r2, [r3], #4 - 2f530: 9308 str r3, [sp, #32] - 2f532: 7011 strb r1, [r2, #0] - 2f534: 464c mov r4, r9 - 2f536: e555 b.n 2efe4 <_svfprintf_r+0x64> - 2f538: f899 3000 ldrb.w r3, [r9] - 2f53c: 2b68 cmp r3, #104 ; 0x68 - 2f53e: bf03 ittte eq - 2f540: f899 3001 ldrbeq.w r3, [r9, #1] - 2f544: f448 7800 orreq.w r8, r8, #512 ; 0x200 - 2f548: f109 0901 addeq.w r9, r9, #1 - 2f54c: f048 0840 orrne.w r8, r8, #64 ; 0x40 - 2f550: e572 b.n 2f038 <_svfprintf_r+0xb8> - 2f552: f899 3000 ldrb.w r3, [r9] - 2f556: f88d 5067 strb.w r5, [sp, #103] ; 0x67 - 2f55a: e56d b.n 2f038 <_svfprintf_r+0xb8> - 2f55c: f899 3000 ldrb.w r3, [r9] - 2f560: 2b6c cmp r3, #108 ; 0x6c - 2f562: bf03 ittte eq - 2f564: f899 3001 ldrbeq.w r3, [r9, #1] - 2f568: f048 0820 orreq.w r8, r8, #32 - 2f56c: f109 0901 addeq.w r9, r9, #1 - 2f570: f048 0810 orrne.w r8, r8, #16 - 2f574: e560 b.n 2f038 <_svfprintf_r+0xb8> - 2f576: 930b str r3, [sp, #44] ; 0x2c - 2f578: f048 0810 orr.w r8, r8, #16 - 2f57c: f018 0120 ands.w r1, r8, #32 - 2f580: f000 8351 beq.w 2fc26 <_svfprintf_r+0xca6> - 2f584: 9b08 ldr r3, [sp, #32] - 2f586: 3307 adds r3, #7 - 2f588: f023 0307 bic.w r3, r3, #7 - 2f58c: 6859 ldr r1, [r3, #4] - 2f58e: f853 2b08 ldr.w r2, [r3], #8 - 2f592: 9308 str r3, [sp, #32] - 2f594: f428 6380 bic.w r3, r8, #1024 ; 0x400 - 2f598: 9302 str r3, [sp, #8] - 2f59a: 2300 movs r3, #0 - 2f59c: e795 b.n 2f4ca <_svfprintf_r+0x54a> - 2f59e: 930b str r3, [sp, #44] ; 0x2c - 2f5a0: f048 0310 orr.w r3, r8, #16 - 2f5a4: 9302 str r3, [sp, #8] - 2f5a6: 9b02 ldr r3, [sp, #8] - 2f5a8: f013 0120 ands.w r1, r3, #32 - 2f5ac: f000 8329 beq.w 2fc02 <_svfprintf_r+0xc82> - 2f5b0: 9b08 ldr r3, [sp, #32] - 2f5b2: 3307 adds r3, #7 - 2f5b4: f023 0307 bic.w r3, r3, #7 - 2f5b8: 6859 ldr r1, [r3, #4] - 2f5ba: f853 2b08 ldr.w r2, [r3], #8 - 2f5be: 9308 str r3, [sp, #32] - 2f5c0: 2301 movs r3, #1 - 2f5c2: e782 b.n 2f4ca <_svfprintf_r+0x54a> - 2f5c4: f899 3000 ldrb.w r3, [r9] - 2f5c8: f048 0880 orr.w r8, r8, #128 ; 0x80 - 2f5cc: e534 b.n 2f038 <_svfprintf_r+0xb8> - 2f5ce: bf00 nop - 2f5d0: 20004458 .word 0x20004458 - 2f5d4: 200036a4 .word 0x200036a4 - 2f5d8: 20004460 .word 0x20004460 - 2f5dc: 4649 mov r1, r9 - 2f5de: f811 3b01 ldrb.w r3, [r1], #1 - 2f5e2: 2b2a cmp r3, #42 ; 0x2a - 2f5e4: f001 8249 beq.w 30a7a <_svfprintf_r+0x1afa> - 2f5e8: f1a3 0230 sub.w r2, r3, #48 ; 0x30 - 2f5ec: 2a09 cmp r2, #9 - 2f5ee: 4689 mov r9, r1 - 2f5f0: bf98 it ls - 2f5f2: 2100 movls r1, #0 - 2f5f4: f201 8144 bhi.w 30880 <_svfprintf_r+0x1900> - 2f5f8: f819 3b01 ldrb.w r3, [r9], #1 - 2f5fc: eb01 0181 add.w r1, r1, r1, lsl #2 - 2f600: eb02 0141 add.w r1, r2, r1, lsl #1 - 2f604: f1a3 0230 sub.w r2, r3, #48 ; 0x30 - 2f608: 2a09 cmp r2, #9 - 2f60a: d9f5 bls.n 2f5f8 <_svfprintf_r+0x678> - 2f60c: 9103 str r1, [sp, #12] - 2f60e: e515 b.n 2f03c <_svfprintf_r+0xbc> - 2f610: f899 3000 ldrb.w r3, [r9] - 2f614: f048 0801 orr.w r8, r8, #1 - 2f618: e50e b.n 2f038 <_svfprintf_r+0xb8> - 2f61a: f89d 3067 ldrb.w r3, [sp, #103] ; 0x67 - 2f61e: 2b00 cmp r3, #0 - 2f620: f47f ad8f bne.w 2f142 <_svfprintf_r+0x1c2> - 2f624: f899 3000 ldrb.w r3, [r9] - 2f628: f88d 6067 strb.w r6, [sp, #103] ; 0x67 - 2f62c: e504 b.n 2f038 <_svfprintf_r+0xb8> - 2f62e: f8cd 8008 str.w r8, [sp, #8] - 2f632: 2b01 cmp r3, #1 - 2f634: f000 819d beq.w 2f972 <_svfprintf_r+0x9f2> - 2f638: 2b02 cmp r3, #2 - 2f63a: ac50 add r4, sp, #320 ; 0x140 - 2f63c: d120 bne.n 2f680 <_svfprintf_r+0x700> - 2f63e: 9811 ldr r0, [sp, #68] ; 0x44 - 2f640: f002 030f and.w r3, r2, #15 - 2f644: 0912 lsrs r2, r2, #4 - 2f646: 5cc3 ldrb r3, [r0, r3] - 2f648: f804 3d01 strb.w r3, [r4, #-1]! - 2f64c: ea42 7201 orr.w r2, r2, r1, lsl #28 - 2f650: 0909 lsrs r1, r1, #4 - 2f652: ea52 0301 orrs.w r3, r2, r1 - 2f656: d1f3 bne.n 2f640 <_svfprintf_r+0x6c0> - 2f658: ab50 add r3, sp, #320 ; 0x140 - 2f65a: 1b1b subs r3, r3, r4 - 2f65c: f8dd 8008 ldr.w r8, [sp, #8] - 2f660: 9305 str r3, [sp, #20] - 2f662: 9a05 ldr r2, [sp, #20] - 2f664: 9803 ldr r0, [sp, #12] - 2f666: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 - 2f66a: 4282 cmp r2, r0 - 2f66c: f04f 0300 mov.w r3, #0 - 2f670: bfb8 it lt - 2f672: 4602 movlt r2, r0 - 2f674: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 - 2f678: 9307 str r3, [sp, #28] - 2f67a: 9202 str r2, [sp, #8] - 2f67c: 930f str r3, [sp, #60] ; 0x3c - 2f67e: e660 b.n 2f342 <_svfprintf_r+0x3c2> - 2f680: f002 0307 and.w r3, r2, #7 - 2f684: 08d2 lsrs r2, r2, #3 - 2f686: ea42 7241 orr.w r2, r2, r1, lsl #29 - 2f68a: 08c9 lsrs r1, r1, #3 - 2f68c: 3330 adds r3, #48 ; 0x30 - 2f68e: ea52 0501 orrs.w r5, r2, r1 - 2f692: 4620 mov r0, r4 - 2f694: f804 3d01 strb.w r3, [r4, #-1]! - 2f698: d1f2 bne.n 2f680 <_svfprintf_r+0x700> - 2f69a: 9a02 ldr r2, [sp, #8] - 2f69c: 07d1 lsls r1, r2, #31 - 2f69e: f100 824d bmi.w 2fb3c <_svfprintf_r+0xbbc> - 2f6a2: ab50 add r3, sp, #320 ; 0x140 - 2f6a4: 1b1b subs r3, r3, r4 - 2f6a6: 4690 mov r8, r2 - 2f6a8: 9305 str r3, [sp, #20] - 2f6aa: e7da b.n 2f662 <_svfprintf_r+0x6e2> - 2f6ac: 9b0b ldr r3, [sp, #44] ; 0x2c - 2f6ae: 2b65 cmp r3, #101 ; 0x65 - 2f6b0: f340 80d4 ble.w 2f85c <_svfprintf_r+0x8dc> - 2f6b4: eeb5 8b40 vcmp.f64 d8, #0.0 - 2f6b8: eef1 fa10 vmrs APSR_nzcv, fpscr - 2f6bc: f040 81c1 bne.w 2fa42 <_svfprintf_r+0xac2> - 2f6c0: 9b25 ldr r3, [sp, #148] ; 0x94 - 2f6c2: 49ba ldr r1, [pc, #744] ; (2f9ac <_svfprintf_r+0xa2c>) - 2f6c4: f8ca 1000 str.w r1, [sl] - 2f6c8: 3301 adds r3, #1 - 2f6ca: 3201 adds r2, #1 - 2f6cc: 2101 movs r1, #1 - 2f6ce: 2b07 cmp r3, #7 - 2f6d0: 9226 str r2, [sp, #152] ; 0x98 - 2f6d2: 9325 str r3, [sp, #148] ; 0x94 - 2f6d4: f8ca 1004 str.w r1, [sl, #4] - 2f6d8: f300 8551 bgt.w 3017e <_svfprintf_r+0x11fe> - 2f6dc: f10a 0a08 add.w sl, sl, #8 - 2f6e0: 9b1b ldr r3, [sp, #108] ; 0x6c - 2f6e2: 990e ldr r1, [sp, #56] ; 0x38 - 2f6e4: 428b cmp r3, r1 - 2f6e6: f280 82d0 bge.w 2fc8a <_svfprintf_r+0xd0a> - 2f6ea: 9b10 ldr r3, [sp, #64] ; 0x40 - 2f6ec: 9912 ldr r1, [sp, #72] ; 0x48 - 2f6ee: 441a add r2, r3 - 2f6f0: e9ca 1300 strd r1, r3, [sl] - 2f6f4: 9b25 ldr r3, [sp, #148] ; 0x94 - 2f6f6: 9226 str r2, [sp, #152] ; 0x98 - 2f6f8: 3301 adds r3, #1 - 2f6fa: 2b07 cmp r3, #7 - 2f6fc: 9325 str r3, [sp, #148] ; 0x94 - 2f6fe: f300 8397 bgt.w 2fe30 <_svfprintf_r+0xeb0> - 2f702: f10a 0a08 add.w sl, sl, #8 - 2f706: 9b0e ldr r3, [sp, #56] ; 0x38 - 2f708: 1e5c subs r4, r3, #1 - 2f70a: 2c00 cmp r4, #0 - 2f70c: f77f add0 ble.w 2f2b0 <_svfprintf_r+0x330> - 2f710: 2c10 cmp r4, #16 - 2f712: 9b25 ldr r3, [sp, #148] ; 0x94 - 2f714: f340 856e ble.w 301f4 <_svfprintf_r+0x1274> - 2f718: ee1b 6a10 vmov r6, s22 - 2f71c: 2510 movs r5, #16 - 2f71e: e005 b.n 2f72c <_svfprintf_r+0x7ac> - 2f720: f10a 0a08 add.w sl, sl, #8 - 2f724: 3c10 subs r4, #16 - 2f726: 2c10 cmp r4, #16 - 2f728: f340 8564 ble.w 301f4 <_svfprintf_r+0x1274> - 2f72c: 3301 adds r3, #1 - 2f72e: 49a0 ldr r1, [pc, #640] ; (2f9b0 <_svfprintf_r+0xa30>) - 2f730: 3210 adds r2, #16 - 2f732: 2b07 cmp r3, #7 - 2f734: e9ca 1500 strd r1, r5, [sl] - 2f738: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2f73c: ddf0 ble.n 2f720 <_svfprintf_r+0x7a0> - 2f73e: aa24 add r2, sp, #144 ; 0x90 - 2f740: 4631 mov r1, r6 - 2f742: 4658 mov r0, fp - 2f744: f002 fee2 bl 3250c <__ssprint_r> - 2f748: 2800 cmp r0, #0 - 2f74a: d17e bne.n 2f84a <_svfprintf_r+0x8ca> - 2f74c: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 2f750: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2f754: e7e6 b.n 2f724 <_svfprintf_r+0x7a4> - 2f756: 9b06 ldr r3, [sp, #24] - 2f758: 9902 ldr r1, [sp, #8] - 2f75a: 1a5d subs r5, r3, r1 - 2f75c: 2d00 cmp r5, #0 - 2f75e: f77f ad8e ble.w 2f27e <_svfprintf_r+0x2fe> - 2f762: 2d10 cmp r5, #16 - 2f764: 9b25 ldr r3, [sp, #148] ; 0x94 - 2f766: dd21 ble.n 2f7ac <_svfprintf_r+0x82c> - 2f768: 9409 str r4, [sp, #36] ; 0x24 - 2f76a: 2610 movs r6, #16 - 2f76c: ee1b 4a10 vmov r4, s22 - 2f770: e004 b.n 2f77c <_svfprintf_r+0x7fc> - 2f772: 3d10 subs r5, #16 - 2f774: 2d10 cmp r5, #16 - 2f776: f10a 0a08 add.w sl, sl, #8 - 2f77a: dd16 ble.n 2f7aa <_svfprintf_r+0x82a> - 2f77c: 3301 adds r3, #1 - 2f77e: 498c ldr r1, [pc, #560] ; (2f9b0 <_svfprintf_r+0xa30>) - 2f780: 3210 adds r2, #16 - 2f782: 2b07 cmp r3, #7 - 2f784: e9ca 1600 strd r1, r6, [sl] - 2f788: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2f78c: ddf1 ble.n 2f772 <_svfprintf_r+0x7f2> - 2f78e: aa24 add r2, sp, #144 ; 0x90 - 2f790: 4621 mov r1, r4 - 2f792: 4658 mov r0, fp - 2f794: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2f798: f002 feb8 bl 3250c <__ssprint_r> - 2f79c: 2800 cmp r0, #0 - 2f79e: d154 bne.n 2f84a <_svfprintf_r+0x8ca> - 2f7a0: 3d10 subs r5, #16 - 2f7a2: 2d10 cmp r5, #16 - 2f7a4: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 2f7a8: dce8 bgt.n 2f77c <_svfprintf_r+0x7fc> - 2f7aa: 9c09 ldr r4, [sp, #36] ; 0x24 - 2f7ac: 4980 ldr r1, [pc, #512] ; (2f9b0 <_svfprintf_r+0xa30>) - 2f7ae: f8ca 5004 str.w r5, [sl, #4] - 2f7b2: 3301 adds r3, #1 - 2f7b4: 442a add r2, r5 - 2f7b6: 2b07 cmp r3, #7 - 2f7b8: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2f7bc: f8ca 1000 str.w r1, [sl] - 2f7c0: f300 8526 bgt.w 30210 <_svfprintf_r+0x1290> - 2f7c4: 9b03 ldr r3, [sp, #12] - 2f7c6: 9905 ldr r1, [sp, #20] - 2f7c8: 1a5d subs r5, r3, r1 - 2f7ca: 2d00 cmp r5, #0 - 2f7cc: f10a 0a08 add.w sl, sl, #8 - 2f7d0: f77f ad5b ble.w 2f28a <_svfprintf_r+0x30a> - 2f7d4: 2d10 cmp r5, #16 - 2f7d6: 9b25 ldr r3, [sp, #148] ; 0x94 - 2f7d8: dd1f ble.n 2f81a <_svfprintf_r+0x89a> - 2f7da: 4651 mov r1, sl - 2f7dc: 2610 movs r6, #16 - 2f7de: ee1b aa10 vmov sl, s22 - 2f7e2: e004 b.n 2f7ee <_svfprintf_r+0x86e> - 2f7e4: 3d10 subs r5, #16 - 2f7e6: 2d10 cmp r5, #16 - 2f7e8: f101 0108 add.w r1, r1, #8 - 2f7ec: dd14 ble.n 2f818 <_svfprintf_r+0x898> - 2f7ee: 3301 adds r3, #1 - 2f7f0: 486f ldr r0, [pc, #444] ; (2f9b0 <_svfprintf_r+0xa30>) - 2f7f2: 3210 adds r2, #16 - 2f7f4: 2b07 cmp r3, #7 - 2f7f6: e9c1 0600 strd r0, r6, [r1] - 2f7fa: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2f7fe: ddf1 ble.n 2f7e4 <_svfprintf_r+0x864> - 2f800: aa24 add r2, sp, #144 ; 0x90 - 2f802: 4651 mov r1, sl - 2f804: 4658 mov r0, fp - 2f806: f002 fe81 bl 3250c <__ssprint_r> - 2f80a: b9f0 cbnz r0, 2f84a <_svfprintf_r+0x8ca> - 2f80c: 3d10 subs r5, #16 - 2f80e: 2d10 cmp r5, #16 - 2f810: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 2f814: a927 add r1, sp, #156 ; 0x9c - 2f816: dcea bgt.n 2f7ee <_svfprintf_r+0x86e> - 2f818: 468a mov sl, r1 - 2f81a: 3301 adds r3, #1 - 2f81c: 4964 ldr r1, [pc, #400] ; (2f9b0 <_svfprintf_r+0xa30>) - 2f81e: f8ca 5004 str.w r5, [sl, #4] - 2f822: 442a add r2, r5 - 2f824: 2b07 cmp r3, #7 - 2f826: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2f82a: f8ca 1000 str.w r1, [sl] - 2f82e: f300 81da bgt.w 2fbe6 <_svfprintf_r+0xc66> - 2f832: f10a 0a08 add.w sl, sl, #8 - 2f836: e528 b.n 2f28a <_svfprintf_r+0x30a> - 2f838: ee1b 1a10 vmov r1, s22 - 2f83c: aa24 add r2, sp, #144 ; 0x90 - 2f83e: 4658 mov r0, fp - 2f840: f002 fe64 bl 3250c <__ssprint_r> - 2f844: 2800 cmp r0, #0 - 2f846: f43f ad47 beq.w 2f2d8 <_svfprintf_r+0x358> - 2f84a: 9b07 ldr r3, [sp, #28] - 2f84c: 2b00 cmp r3, #0 - 2f84e: f43f aca2 beq.w 2f196 <_svfprintf_r+0x216> - 2f852: 9907 ldr r1, [sp, #28] - 2f854: 4658 mov r0, fp - 2f856: f7ff fa75 bl 2ed44 <_free_r> - 2f85a: e49c b.n 2f196 <_svfprintf_r+0x216> - 2f85c: 9b0e ldr r3, [sp, #56] ; 0x38 - 2f85e: 2b01 cmp r3, #1 - 2f860: f340 817a ble.w 2fb58 <_svfprintf_r+0xbd8> + 2f2d8: ffffffff .word 0xffffffff + 2f2dc: 7fefffff .word 0x7fefffff + 2f2e0: 20004ce8 .word 0x20004ce8 + 2f2e4: 930b str r3, [sp, #44] ; 0x2c + 2f2e6: 2b00 cmp r3, #0 + 2f2e8: d0d1 beq.n 2f28e <_svfprintf_r+0x20e> + 2f2ea: 2100 movs r1, #0 + 2f2ec: e9cd 110c strd r1, r1, [sp, #48] ; 0x30 + 2f2f0: f88d 30dc strb.w r3, [sp, #220] ; 0xdc + 2f2f4: 2301 movs r3, #1 + 2f2f6: f88d 1067 strb.w r1, [sp, #103] ; 0x67 + 2f2fa: 9302 str r3, [sp, #8] + 2f2fc: 9107 str r1, [sp, #28] + 2f2fe: 9305 str r3, [sp, #20] + 2f300: 9103 str r1, [sp, #12] + 2f302: 910f str r1, [sp, #60] ; 0x3c + 2f304: ac37 add r4, sp, #220 ; 0xdc + 2f306: f018 0302 ands.w r3, r8, #2 + 2f30a: 9309 str r3, [sp, #36] ; 0x24 + 2f30c: d002 beq.n 2f314 <_svfprintf_r+0x294> + 2f30e: 9b02 ldr r3, [sp, #8] + 2f310: 3302 adds r3, #2 + 2f312: 9302 str r3, [sp, #8] + 2f314: f018 0384 ands.w r3, r8, #132 ; 0x84 + 2f318: 930a str r3, [sp, #40] ; 0x28 + 2f31a: d105 bne.n 2f328 <_svfprintf_r+0x2a8> + 2f31c: 9b06 ldr r3, [sp, #24] + 2f31e: 9a02 ldr r2, [sp, #8] + 2f320: 1a9d subs r5, r3, r2 + 2f322: 2d00 cmp r5, #0 + 2f324: f300 8369 bgt.w 2f9fa <_svfprintf_r+0x97a> + 2f328: 9a26 ldr r2, [sp, #152] ; 0x98 + 2f32a: b189 cbz r1, 2f350 <_svfprintf_r+0x2d0> + 2f32c: 9925 ldr r1, [sp, #148] ; 0x94 + 2f32e: f10d 0067 add.w r0, sp, #103 ; 0x67 + 2f332: 3101 adds r1, #1 + 2f334: 3201 adds r2, #1 + 2f336: f8ca 0000 str.w r0, [sl] + 2f33a: 2907 cmp r1, #7 + 2f33c: f04f 0001 mov.w r0, #1 + 2f340: 9226 str r2, [sp, #152] ; 0x98 + 2f342: 9125 str r1, [sp, #148] ; 0x94 + 2f344: f8ca 0004 str.w r0, [sl, #4] + 2f348: f300 83a2 bgt.w 2fa90 <_svfprintf_r+0xa10> + 2f34c: f10a 0a08 add.w sl, sl, #8 + 2f350: 9b09 ldr r3, [sp, #36] ; 0x24 + 2f352: b183 cbz r3, 2f376 <_svfprintf_r+0x2f6> + 2f354: 9b25 ldr r3, [sp, #148] ; 0x94 + 2f356: a91a add r1, sp, #104 ; 0x68 + 2f358: 3301 adds r3, #1 + 2f35a: 3202 adds r2, #2 + 2f35c: f8ca 1000 str.w r1, [sl] + 2f360: 2b07 cmp r3, #7 + 2f362: f04f 0102 mov.w r1, #2 + 2f366: 9226 str r2, [sp, #152] ; 0x98 + 2f368: 9325 str r3, [sp, #148] ; 0x94 + 2f36a: f8ca 1004 str.w r1, [sl, #4] + 2f36e: f300 83a3 bgt.w 2fab8 <_svfprintf_r+0xa38> + 2f372: f10a 0a08 add.w sl, sl, #8 + 2f376: 9b0a ldr r3, [sp, #40] ; 0x28 + 2f378: 2b80 cmp r3, #128 ; 0x80 + 2f37a: f000 826c beq.w 2f856 <_svfprintf_r+0x7d6> + 2f37e: 9b03 ldr r3, [sp, #12] + 2f380: 9905 ldr r1, [sp, #20] + 2f382: 1a5d subs r5, r3, r1 + 2f384: 2d00 cmp r5, #0 + 2f386: f300 82a5 bgt.w 2f8d4 <_svfprintf_r+0x854> + 2f38a: f418 7f80 tst.w r8, #256 ; 0x100 + 2f38e: f040 820d bne.w 2f7ac <_svfprintf_r+0x72c> + 2f392: 9b05 ldr r3, [sp, #20] + 2f394: f8ca 3004 str.w r3, [sl, #4] + 2f398: 441a add r2, r3 + 2f39a: 9b25 ldr r3, [sp, #148] ; 0x94 + 2f39c: f8ca 4000 str.w r4, [sl] + 2f3a0: 3301 adds r3, #1 + 2f3a2: 2b07 cmp r3, #7 + 2f3a4: 9226 str r2, [sp, #152] ; 0x98 + 2f3a6: 9325 str r3, [sp, #148] ; 0x94 + 2f3a8: f300 831b bgt.w 2f9e2 <_svfprintf_r+0x962> + 2f3ac: f10a 0a08 add.w sl, sl, #8 + 2f3b0: f018 0f04 tst.w r8, #4 + 2f3b4: d005 beq.n 2f3c2 <_svfprintf_r+0x342> + 2f3b6: 9b06 ldr r3, [sp, #24] + 2f3b8: 9902 ldr r1, [sp, #8] + 2f3ba: 1a5c subs r4, r3, r1 + 2f3bc: 2c00 cmp r4, #0 + 2f3be: f300 8388 bgt.w 2fad2 <_svfprintf_r+0xa52> + 2f3c2: 9b04 ldr r3, [sp, #16] + 2f3c4: 9906 ldr r1, [sp, #24] + 2f3c6: 9802 ldr r0, [sp, #8] + 2f3c8: 4281 cmp r1, r0 + 2f3ca: bfac ite ge + 2f3cc: 185b addge r3, r3, r1 + 2f3ce: 181b addlt r3, r3, r0 + 2f3d0: 9304 str r3, [sp, #16] + 2f3d2: 2a00 cmp r2, #0 + 2f3d4: f040 82b0 bne.w 2f938 <_svfprintf_r+0x8b8> + 2f3d8: 2300 movs r3, #0 + 2f3da: 9325 str r3, [sp, #148] ; 0x94 + 2f3dc: 9b07 ldr r3, [sp, #28] + 2f3de: b11b cbz r3, 2f3e8 <_svfprintf_r+0x368> + 2f3e0: 9907 ldr r1, [sp, #28] + 2f3e2: 4658 mov r0, fp + 2f3e4: f7ff fd2e bl 2ee44 <_free_r> + 2f3e8: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2f3ec: 464c mov r4, r9 + 2f3ee: e679 b.n 2f0e4 <_svfprintf_r+0x64> + 2f3f0: 930b str r3, [sp, #44] ; 0x2c + 2f3f2: 9b08 ldr r3, [sp, #32] + 2f3f4: 3307 adds r3, #7 + 2f3f6: f023 0307 bic.w r3, r3, #7 + 2f3fa: ecb3 8b02 vldmia r3!, {d8} + 2f3fe: eeb0 7bc8 vabs.f64 d7, d8 + 2f402: eeb4 7b49 vcmp.f64 d7, d9 + 2f406: eef1 fa10 vmrs APSR_nzcv, fpscr + 2f40a: 9308 str r3, [sp, #32] + 2f40c: f340 84e9 ble.w 2fde2 <_svfprintf_r+0xd62> + 2f410: eeb5 8bc0 vcmpe.f64 d8, #0.0 + 2f414: eef1 fa10 vmrs APSR_nzcv, fpscr + 2f418: f101 8059 bmi.w 304ce <_svfprintf_r+0x144e> + 2f41c: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 + 2f420: 4cab ldr r4, [pc, #684] ; (2f6d0 <_svfprintf_r+0x650>) + 2f422: 4bac ldr r3, [pc, #688] ; (2f6d4 <_svfprintf_r+0x654>) + 2f424: f028 0880 bic.w r8, r8, #128 ; 0x80 + 2f428: 9a0b ldr r2, [sp, #44] ; 0x2c + 2f42a: 2a47 cmp r2, #71 ; 0x47 + 2f42c: bfc8 it gt + 2f42e: 461c movgt r4, r3 + 2f430: 2300 movs r3, #0 + 2f432: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 + 2f436: 2203 movs r2, #3 + 2f438: 9307 str r3, [sp, #28] + 2f43a: 9202 str r2, [sp, #8] + 2f43c: 9205 str r2, [sp, #20] + 2f43e: 9303 str r3, [sp, #12] + 2f440: 930f str r3, [sp, #60] ; 0x3c + 2f442: 2900 cmp r1, #0 + 2f444: f43f af5f beq.w 2f306 <_svfprintf_r+0x286> + 2f448: 9b02 ldr r3, [sp, #8] + 2f44a: 3301 adds r3, #1 + 2f44c: 9302 str r3, [sp, #8] + 2f44e: e75a b.n 2f306 <_svfprintf_r+0x286> + 2f450: 2b43 cmp r3, #67 ; 0x43 + 2f452: 930b str r3, [sp, #44] ; 0x2c + 2f454: d003 beq.n 2f45e <_svfprintf_r+0x3de> + 2f456: f018 0f10 tst.w r8, #16 + 2f45a: f000 855d beq.w 2ff18 <_svfprintf_r+0xe98> + 2f45e: 9d08 ldr r5, [sp, #32] + 2f460: 2208 movs r2, #8 + 2f462: 2100 movs r1, #0 + 2f464: a822 add r0, sp, #136 ; 0x88 + 2f466: ac37 add r4, sp, #220 ; 0xdc + 2f468: f7ff f884 bl 2e574 + 2f46c: ab22 add r3, sp, #136 ; 0x88 + 2f46e: f855 2b04 ldr.w r2, [r5], #4 + 2f472: 4621 mov r1, r4 + 2f474: 4658 mov r0, fp + 2f476: f002 f91d bl 316b4 <_wcrtomb_r> + 2f47a: 4603 mov r3, r0 + 2f47c: 3301 adds r3, #1 + 2f47e: 9005 str r0, [sp, #20] + 2f480: f001 82ee beq.w 30a60 <_svfprintf_r+0x19e0> + 2f484: 9b05 ldr r3, [sp, #20] + 2f486: 9508 str r5, [sp, #32] + 2f488: ea23 73e3 bic.w r3, r3, r3, asr #31 + 2f48c: 9302 str r3, [sp, #8] + 2f48e: 2100 movs r1, #0 + 2f490: e9cd 110c strd r1, r1, [sp, #48] ; 0x30 + 2f494: f88d 1067 strb.w r1, [sp, #103] ; 0x67 + 2f498: 9107 str r1, [sp, #28] + 2f49a: 9103 str r1, [sp, #12] + 2f49c: 910f str r1, [sp, #60] ; 0x3c + 2f49e: e732 b.n 2f306 <_svfprintf_r+0x286> + 2f4a0: 930b str r3, [sp, #44] ; 0x2c + 2f4a2: 9b08 ldr r3, [sp, #32] + 2f4a4: 461a mov r2, r3 + 2f4a6: 2300 movs r3, #0 + 2f4a8: f88d 3067 strb.w r3, [sp, #103] ; 0x67 + 2f4ac: 4613 mov r3, r2 + 2f4ae: f853 4b04 ldr.w r4, [r3], #4 + 2f4b2: 9308 str r3, [sp, #32] + 2f4b4: 2c00 cmp r4, #0 + 2f4b6: f000 8548 beq.w 2ff4a <_svfprintf_r+0xeca> + 2f4ba: 9b0b ldr r3, [sp, #44] ; 0x2c + 2f4bc: 2b53 cmp r3, #83 ; 0x53 + 2f4be: f000 86ec beq.w 3029a <_svfprintf_r+0x121a> + 2f4c2: f018 0310 ands.w r3, r8, #16 + 2f4c6: 930c str r3, [sp, #48] ; 0x30 + 2f4c8: f040 86e7 bne.w 3029a <_svfprintf_r+0x121a> + 2f4cc: 9b03 ldr r3, [sp, #12] + 2f4ce: 1c5d adds r5, r3, #1 + 2f4d0: f001 80e5 beq.w 3069e <_svfprintf_r+0x161e> + 2f4d4: 990c ldr r1, [sp, #48] ; 0x30 + 2f4d6: 461a mov r2, r3 + 2f4d8: 4620 mov r0, r4 + 2f4da: f7ff fb49 bl 2eb70 + 2f4de: 9007 str r0, [sp, #28] + 2f4e0: 2800 cmp r0, #0 + 2f4e2: f001 8328 beq.w 30b36 <_svfprintf_r+0x1ab6> + 2f4e6: 9b07 ldr r3, [sp, #28] + 2f4e8: 1b1a subs r2, r3, r4 + 2f4ea: 9205 str r2, [sp, #20] + 2f4ec: 9b0c ldr r3, [sp, #48] ; 0x30 + 2f4ee: 9303 str r3, [sp, #12] + 2f4f0: ea22 72e2 bic.w r2, r2, r2, asr #31 + 2f4f4: 930f str r3, [sp, #60] ; 0x3c + 2f4f6: 930d str r3, [sp, #52] ; 0x34 + 2f4f8: 9307 str r3, [sp, #28] + 2f4fa: 2373 movs r3, #115 ; 0x73 + 2f4fc: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 + 2f500: 9202 str r2, [sp, #8] + 2f502: 930b str r3, [sp, #44] ; 0x2c + 2f504: e79d b.n 2f442 <_svfprintf_r+0x3c2> + 2f506: f018 0f20 tst.w r8, #32 + 2f50a: 930b str r3, [sp, #44] ; 0x2c + 2f50c: 9b08 ldr r3, [sp, #32] + 2f50e: d03d beq.n 2f58c <_svfprintf_r+0x50c> + 2f510: 3307 adds r3, #7 + 2f512: f023 0307 bic.w r3, r3, #7 + 2f516: 461a mov r2, r3 + 2f518: 4611 mov r1, r2 + 2f51a: 685b ldr r3, [r3, #4] + 2f51c: f851 2b08 ldr.w r2, [r1], #8 + 2f520: 9108 str r1, [sp, #32] + 2f522: 4619 mov r1, r3 + 2f524: 2b00 cmp r3, #0 + 2f526: f2c0 840c blt.w 2fd42 <_svfprintf_r+0xcc2> + 2f52a: 9b03 ldr r3, [sp, #12] + 2f52c: 3301 adds r3, #1 + 2f52e: f000 829e beq.w 2fa6e <_svfprintf_r+0x9ee> + 2f532: f028 0080 bic.w r0, r8, #128 ; 0x80 + 2f536: ea52 0301 orrs.w r3, r2, r1 + 2f53a: 9002 str r0, [sp, #8] + 2f53c: f040 8299 bne.w 2fa72 <_svfprintf_r+0x9f2> + 2f540: 9b03 ldr r3, [sp, #12] + 2f542: 2b00 cmp r3, #0 + 2f544: f040 829a bne.w 2fa7c <_svfprintf_r+0x9fc> + 2f548: 4680 mov r8, r0 + 2f54a: 2300 movs r3, #0 + 2f54c: 9303 str r3, [sp, #12] + 2f54e: 9305 str r3, [sp, #20] + 2f550: ac50 add r4, sp, #320 ; 0x140 + 2f552: e106 b.n 2f762 <_svfprintf_r+0x6e2> + 2f554: 9b08 ldr r3, [sp, #32] + 2f556: f853 2b04 ldr.w r2, [r3], #4 + 2f55a: 9206 str r2, [sp, #24] + 2f55c: 2a00 cmp r2, #0 + 2f55e: f280 8419 bge.w 2fd94 <_svfprintf_r+0xd14> + 2f562: 9a06 ldr r2, [sp, #24] + 2f564: 9308 str r3, [sp, #32] + 2f566: 4252 negs r2, r2 + 2f568: 9206 str r2, [sp, #24] + 2f56a: f899 3000 ldrb.w r3, [r9] + 2f56e: f048 0804 orr.w r8, r8, #4 + 2f572: e5e1 b.n 2f138 <_svfprintf_r+0xb8> + 2f574: f899 3000 ldrb.w r3, [r9] + 2f578: f048 0808 orr.w r8, r8, #8 + 2f57c: e5dc b.n 2f138 <_svfprintf_r+0xb8> + 2f57e: f048 0810 orr.w r8, r8, #16 + 2f582: f018 0f20 tst.w r8, #32 + 2f586: 930b str r3, [sp, #44] ; 0x2c + 2f588: 9b08 ldr r3, [sp, #32] + 2f58a: d1c1 bne.n 2f510 <_svfprintf_r+0x490> + 2f58c: f018 0f10 tst.w r8, #16 + 2f590: f040 840b bne.w 2fdaa <_svfprintf_r+0xd2a> + 2f594: f018 0f40 tst.w r8, #64 ; 0x40 + 2f598: f000 8403 beq.w 2fda2 <_svfprintf_r+0xd22> + 2f59c: f933 2b04 ldrsh.w r2, [r3], #4 + 2f5a0: 9308 str r3, [sp, #32] + 2f5a2: 17d1 asrs r1, r2, #31 + 2f5a4: 460b mov r3, r1 + 2f5a6: e7bd b.n 2f524 <_svfprintf_r+0x4a4> + 2f5a8: 9b08 ldr r3, [sp, #32] + 2f5aa: f048 0202 orr.w r2, r8, #2 + 2f5ae: 9202 str r2, [sp, #8] + 2f5b0: f853 2b04 ldr.w r2, [r3], #4 + 2f5b4: 9308 str r3, [sp, #32] + 2f5b6: f647 0330 movw r3, #30768 ; 0x7830 + 2f5ba: f8ad 3068 strh.w r3, [sp, #104] ; 0x68 + 2f5be: 2078 movs r0, #120 ; 0x78 + 2f5c0: 4b45 ldr r3, [pc, #276] ; (2f6d8 <_svfprintf_r+0x658>) + 2f5c2: 9311 str r3, [sp, #68] ; 0x44 + 2f5c4: 2100 movs r1, #0 + 2f5c6: 2302 movs r3, #2 + 2f5c8: 900b str r0, [sp, #44] ; 0x2c + 2f5ca: 2000 movs r0, #0 + 2f5cc: 9c03 ldr r4, [sp, #12] + 2f5ce: f88d 0067 strb.w r0, [sp, #103] ; 0x67 + 2f5d2: 1c60 adds r0, r4, #1 + 2f5d4: f000 80ad beq.w 2f732 <_svfprintf_r+0x6b2> + 2f5d8: 9802 ldr r0, [sp, #8] + 2f5da: f020 0880 bic.w r8, r0, #128 ; 0x80 + 2f5de: ea52 0001 orrs.w r0, r2, r1 + 2f5e2: f040 80a4 bne.w 2f72e <_svfprintf_r+0x6ae> + 2f5e6: 2c00 cmp r4, #0 + 2f5e8: f040 86ae bne.w 30348 <_svfprintf_r+0x12c8> + 2f5ec: 2b00 cmp r3, #0 + 2f5ee: d1ac bne.n 2f54a <_svfprintf_r+0x4ca> + 2f5f0: 9b02 ldr r3, [sp, #8] + 2f5f2: f013 0301 ands.w r3, r3, #1 + 2f5f6: 9305 str r3, [sp, #20] + 2f5f8: f000 83d1 beq.w 2fd9e <_svfprintf_r+0xd1e> + 2f5fc: 2330 movs r3, #48 ; 0x30 + 2f5fe: f88d 313f strb.w r3, [sp, #319] ; 0x13f + 2f602: f20d 143f addw r4, sp, #319 ; 0x13f + 2f606: e0ac b.n 2f762 <_svfprintf_r+0x6e2> + 2f608: f018 0f20 tst.w r8, #32 + 2f60c: f040 83d4 bne.w 2fdb8 <_svfprintf_r+0xd38> + 2f610: f018 0f10 tst.w r8, #16 + 2f614: f040 869f bne.w 30356 <_svfprintf_r+0x12d6> + 2f618: f018 0f40 tst.w r8, #64 ; 0x40 + 2f61c: f040 8797 bne.w 3054e <_svfprintf_r+0x14ce> + 2f620: f418 7f00 tst.w r8, #512 ; 0x200 + 2f624: f000 8697 beq.w 30356 <_svfprintf_r+0x12d6> + 2f628: 9b08 ldr r3, [sp, #32] + 2f62a: 9904 ldr r1, [sp, #16] + 2f62c: f853 2b04 ldr.w r2, [r3], #4 + 2f630: 9308 str r3, [sp, #32] + 2f632: 7011 strb r1, [r2, #0] + 2f634: 464c mov r4, r9 + 2f636: e555 b.n 2f0e4 <_svfprintf_r+0x64> + 2f638: f899 3000 ldrb.w r3, [r9] + 2f63c: 2b68 cmp r3, #104 ; 0x68 + 2f63e: bf03 ittte eq + 2f640: f899 3001 ldrbeq.w r3, [r9, #1] + 2f644: f448 7800 orreq.w r8, r8, #512 ; 0x200 + 2f648: f109 0901 addeq.w r9, r9, #1 + 2f64c: f048 0840 orrne.w r8, r8, #64 ; 0x40 + 2f650: e572 b.n 2f138 <_svfprintf_r+0xb8> + 2f652: f899 3000 ldrb.w r3, [r9] + 2f656: f88d 5067 strb.w r5, [sp, #103] ; 0x67 + 2f65a: e56d b.n 2f138 <_svfprintf_r+0xb8> + 2f65c: f899 3000 ldrb.w r3, [r9] + 2f660: 2b6c cmp r3, #108 ; 0x6c + 2f662: bf03 ittte eq + 2f664: f899 3001 ldrbeq.w r3, [r9, #1] + 2f668: f048 0820 orreq.w r8, r8, #32 + 2f66c: f109 0901 addeq.w r9, r9, #1 + 2f670: f048 0810 orrne.w r8, r8, #16 + 2f674: e560 b.n 2f138 <_svfprintf_r+0xb8> + 2f676: 930b str r3, [sp, #44] ; 0x2c + 2f678: f048 0810 orr.w r8, r8, #16 + 2f67c: f018 0120 ands.w r1, r8, #32 + 2f680: f000 8351 beq.w 2fd26 <_svfprintf_r+0xca6> + 2f684: 9b08 ldr r3, [sp, #32] + 2f686: 3307 adds r3, #7 + 2f688: f023 0307 bic.w r3, r3, #7 + 2f68c: 6859 ldr r1, [r3, #4] + 2f68e: f853 2b08 ldr.w r2, [r3], #8 + 2f692: 9308 str r3, [sp, #32] + 2f694: f428 6380 bic.w r3, r8, #1024 ; 0x400 + 2f698: 9302 str r3, [sp, #8] + 2f69a: 2300 movs r3, #0 + 2f69c: e795 b.n 2f5ca <_svfprintf_r+0x54a> + 2f69e: 930b str r3, [sp, #44] ; 0x2c + 2f6a0: f048 0310 orr.w r3, r8, #16 + 2f6a4: 9302 str r3, [sp, #8] + 2f6a6: 9b02 ldr r3, [sp, #8] + 2f6a8: f013 0120 ands.w r1, r3, #32 + 2f6ac: f000 8329 beq.w 2fd02 <_svfprintf_r+0xc82> + 2f6b0: 9b08 ldr r3, [sp, #32] + 2f6b2: 3307 adds r3, #7 + 2f6b4: f023 0307 bic.w r3, r3, #7 + 2f6b8: 6859 ldr r1, [r3, #4] + 2f6ba: f853 2b08 ldr.w r2, [r3], #8 + 2f6be: 9308 str r3, [sp, #32] + 2f6c0: 2301 movs r3, #1 + 2f6c2: e782 b.n 2f5ca <_svfprintf_r+0x54a> + 2f6c4: f899 3000 ldrb.w r3, [r9] + 2f6c8: f048 0880 orr.w r8, r8, #128 ; 0x80 + 2f6cc: e534 b.n 2f138 <_svfprintf_r+0xb8> + 2f6ce: bf00 nop + 2f6d0: 20004518 .word 0x20004518 + 2f6d4: 20003764 .word 0x20003764 + 2f6d8: 20004520 .word 0x20004520 + 2f6dc: 4649 mov r1, r9 + 2f6de: f811 3b01 ldrb.w r3, [r1], #1 + 2f6e2: 2b2a cmp r3, #42 ; 0x2a + 2f6e4: f001 8249 beq.w 30b7a <_svfprintf_r+0x1afa> + 2f6e8: f1a3 0230 sub.w r2, r3, #48 ; 0x30 + 2f6ec: 2a09 cmp r2, #9 + 2f6ee: 4689 mov r9, r1 + 2f6f0: bf98 it ls + 2f6f2: 2100 movls r1, #0 + 2f6f4: f201 8144 bhi.w 30980 <_svfprintf_r+0x1900> + 2f6f8: f819 3b01 ldrb.w r3, [r9], #1 + 2f6fc: eb01 0181 add.w r1, r1, r1, lsl #2 + 2f700: eb02 0141 add.w r1, r2, r1, lsl #1 + 2f704: f1a3 0230 sub.w r2, r3, #48 ; 0x30 + 2f708: 2a09 cmp r2, #9 + 2f70a: d9f5 bls.n 2f6f8 <_svfprintf_r+0x678> + 2f70c: 9103 str r1, [sp, #12] + 2f70e: e515 b.n 2f13c <_svfprintf_r+0xbc> + 2f710: f899 3000 ldrb.w r3, [r9] + 2f714: f048 0801 orr.w r8, r8, #1 + 2f718: e50e b.n 2f138 <_svfprintf_r+0xb8> + 2f71a: f89d 3067 ldrb.w r3, [sp, #103] ; 0x67 + 2f71e: 2b00 cmp r3, #0 + 2f720: f47f ad8f bne.w 2f242 <_svfprintf_r+0x1c2> + 2f724: f899 3000 ldrb.w r3, [r9] + 2f728: f88d 6067 strb.w r6, [sp, #103] ; 0x67 + 2f72c: e504 b.n 2f138 <_svfprintf_r+0xb8> + 2f72e: f8cd 8008 str.w r8, [sp, #8] + 2f732: 2b01 cmp r3, #1 + 2f734: f000 819d beq.w 2fa72 <_svfprintf_r+0x9f2> + 2f738: 2b02 cmp r3, #2 + 2f73a: ac50 add r4, sp, #320 ; 0x140 + 2f73c: d120 bne.n 2f780 <_svfprintf_r+0x700> + 2f73e: 9811 ldr r0, [sp, #68] ; 0x44 + 2f740: f002 030f and.w r3, r2, #15 + 2f744: 0912 lsrs r2, r2, #4 + 2f746: 5cc3 ldrb r3, [r0, r3] + 2f748: f804 3d01 strb.w r3, [r4, #-1]! + 2f74c: ea42 7201 orr.w r2, r2, r1, lsl #28 + 2f750: 0909 lsrs r1, r1, #4 + 2f752: ea52 0301 orrs.w r3, r2, r1 + 2f756: d1f3 bne.n 2f740 <_svfprintf_r+0x6c0> + 2f758: ab50 add r3, sp, #320 ; 0x140 + 2f75a: 1b1b subs r3, r3, r4 + 2f75c: f8dd 8008 ldr.w r8, [sp, #8] + 2f760: 9305 str r3, [sp, #20] + 2f762: 9a05 ldr r2, [sp, #20] + 2f764: 9803 ldr r0, [sp, #12] + 2f766: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 + 2f76a: 4282 cmp r2, r0 + 2f76c: f04f 0300 mov.w r3, #0 + 2f770: bfb8 it lt + 2f772: 4602 movlt r2, r0 + 2f774: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 + 2f778: 9307 str r3, [sp, #28] + 2f77a: 9202 str r2, [sp, #8] + 2f77c: 930f str r3, [sp, #60] ; 0x3c + 2f77e: e660 b.n 2f442 <_svfprintf_r+0x3c2> + 2f780: f002 0307 and.w r3, r2, #7 + 2f784: 08d2 lsrs r2, r2, #3 + 2f786: ea42 7241 orr.w r2, r2, r1, lsl #29 + 2f78a: 08c9 lsrs r1, r1, #3 + 2f78c: 3330 adds r3, #48 ; 0x30 + 2f78e: ea52 0501 orrs.w r5, r2, r1 + 2f792: 4620 mov r0, r4 + 2f794: f804 3d01 strb.w r3, [r4, #-1]! + 2f798: d1f2 bne.n 2f780 <_svfprintf_r+0x700> + 2f79a: 9a02 ldr r2, [sp, #8] + 2f79c: 07d1 lsls r1, r2, #31 + 2f79e: f100 824d bmi.w 2fc3c <_svfprintf_r+0xbbc> + 2f7a2: ab50 add r3, sp, #320 ; 0x140 + 2f7a4: 1b1b subs r3, r3, r4 + 2f7a6: 4690 mov r8, r2 + 2f7a8: 9305 str r3, [sp, #20] + 2f7aa: e7da b.n 2f762 <_svfprintf_r+0x6e2> + 2f7ac: 9b0b ldr r3, [sp, #44] ; 0x2c + 2f7ae: 2b65 cmp r3, #101 ; 0x65 + 2f7b0: f340 80d4 ble.w 2f95c <_svfprintf_r+0x8dc> + 2f7b4: eeb5 8b40 vcmp.f64 d8, #0.0 + 2f7b8: eef1 fa10 vmrs APSR_nzcv, fpscr + 2f7bc: f040 81c1 bne.w 2fb42 <_svfprintf_r+0xac2> + 2f7c0: 9b25 ldr r3, [sp, #148] ; 0x94 + 2f7c2: 49ba ldr r1, [pc, #744] ; (2faac <_svfprintf_r+0xa2c>) + 2f7c4: f8ca 1000 str.w r1, [sl] + 2f7c8: 3301 adds r3, #1 + 2f7ca: 3201 adds r2, #1 + 2f7cc: 2101 movs r1, #1 + 2f7ce: 2b07 cmp r3, #7 + 2f7d0: 9226 str r2, [sp, #152] ; 0x98 + 2f7d2: 9325 str r3, [sp, #148] ; 0x94 + 2f7d4: f8ca 1004 str.w r1, [sl, #4] + 2f7d8: f300 8551 bgt.w 3027e <_svfprintf_r+0x11fe> + 2f7dc: f10a 0a08 add.w sl, sl, #8 + 2f7e0: 9b1b ldr r3, [sp, #108] ; 0x6c + 2f7e2: 990e ldr r1, [sp, #56] ; 0x38 + 2f7e4: 428b cmp r3, r1 + 2f7e6: f280 82d0 bge.w 2fd8a <_svfprintf_r+0xd0a> + 2f7ea: 9b10 ldr r3, [sp, #64] ; 0x40 + 2f7ec: 9912 ldr r1, [sp, #72] ; 0x48 + 2f7ee: 441a add r2, r3 + 2f7f0: e9ca 1300 strd r1, r3, [sl] + 2f7f4: 9b25 ldr r3, [sp, #148] ; 0x94 + 2f7f6: 9226 str r2, [sp, #152] ; 0x98 + 2f7f8: 3301 adds r3, #1 + 2f7fa: 2b07 cmp r3, #7 + 2f7fc: 9325 str r3, [sp, #148] ; 0x94 + 2f7fe: f300 8397 bgt.w 2ff30 <_svfprintf_r+0xeb0> + 2f802: f10a 0a08 add.w sl, sl, #8 + 2f806: 9b0e ldr r3, [sp, #56] ; 0x38 + 2f808: 1e5c subs r4, r3, #1 + 2f80a: 2c00 cmp r4, #0 + 2f80c: f77f add0 ble.w 2f3b0 <_svfprintf_r+0x330> + 2f810: 2c10 cmp r4, #16 + 2f812: 9b25 ldr r3, [sp, #148] ; 0x94 + 2f814: f340 856e ble.w 302f4 <_svfprintf_r+0x1274> + 2f818: ee1b 6a10 vmov r6, s22 + 2f81c: 2510 movs r5, #16 + 2f81e: e005 b.n 2f82c <_svfprintf_r+0x7ac> + 2f820: f10a 0a08 add.w sl, sl, #8 + 2f824: 3c10 subs r4, #16 + 2f826: 2c10 cmp r4, #16 + 2f828: f340 8564 ble.w 302f4 <_svfprintf_r+0x1274> + 2f82c: 3301 adds r3, #1 + 2f82e: 49a0 ldr r1, [pc, #640] ; (2fab0 <_svfprintf_r+0xa30>) + 2f830: 3210 adds r2, #16 + 2f832: 2b07 cmp r3, #7 + 2f834: e9ca 1500 strd r1, r5, [sl] + 2f838: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2f83c: ddf0 ble.n 2f820 <_svfprintf_r+0x7a0> + 2f83e: aa24 add r2, sp, #144 ; 0x90 + 2f840: 4631 mov r1, r6 + 2f842: 4658 mov r0, fp + 2f844: f002 fee2 bl 3260c <__ssprint_r> + 2f848: 2800 cmp r0, #0 + 2f84a: d17e bne.n 2f94a <_svfprintf_r+0x8ca> + 2f84c: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 2f850: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2f854: e7e6 b.n 2f824 <_svfprintf_r+0x7a4> + 2f856: 9b06 ldr r3, [sp, #24] + 2f858: 9902 ldr r1, [sp, #8] + 2f85a: 1a5d subs r5, r3, r1 + 2f85c: 2d00 cmp r5, #0 + 2f85e: f77f ad8e ble.w 2f37e <_svfprintf_r+0x2fe> + 2f862: 2d10 cmp r5, #16 2f864: 9b25 ldr r3, [sp, #148] ; 0x94 - 2f866: f8ca 4000 str.w r4, [sl] - 2f86a: 3301 adds r3, #1 - 2f86c: 3201 adds r2, #1 - 2f86e: 2101 movs r1, #1 - 2f870: 2b07 cmp r3, #7 - 2f872: 9226 str r2, [sp, #152] ; 0x98 - 2f874: 9325 str r3, [sp, #148] ; 0x94 - 2f876: f8ca 1004 str.w r1, [sl, #4] - 2f87a: f300 81f8 bgt.w 2fc6e <_svfprintf_r+0xcee> - 2f87e: f10a 0a08 add.w sl, sl, #8 - 2f882: 9910 ldr r1, [sp, #64] ; 0x40 - 2f884: 9812 ldr r0, [sp, #72] ; 0x48 - 2f886: 3301 adds r3, #1 - 2f888: 440a add r2, r1 - 2f88a: 2b07 cmp r3, #7 - 2f88c: e9ca 0100 strd r0, r1, [sl] - 2f890: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2f894: f300 81dd bgt.w 2fc52 <_svfprintf_r+0xcd2> - 2f898: f10a 0a08 add.w sl, sl, #8 - 2f89c: eeb5 8b40 vcmp.f64 d8, #0.0 - 2f8a0: eef1 fa10 vmrs APSR_nzcv, fpscr - 2f8a4: f000 8177 beq.w 2fb96 <_svfprintf_r+0xc16> - 2f8a8: 990e ldr r1, [sp, #56] ; 0x38 - 2f8aa: 3301 adds r3, #1 - 2f8ac: 3901 subs r1, #1 - 2f8ae: 3401 adds r4, #1 - 2f8b0: 440a add r2, r1 - 2f8b2: 2b07 cmp r3, #7 - 2f8b4: f8ca 4000 str.w r4, [sl] - 2f8b8: 9325 str r3, [sp, #148] ; 0x94 - 2f8ba: f8ca 1004 str.w r1, [sl, #4] - 2f8be: 9226 str r2, [sp, #152] ; 0x98 - 2f8c0: f300 815b bgt.w 2fb7a <_svfprintf_r+0xbfa> - 2f8c4: f10a 0a08 add.w sl, sl, #8 - 2f8c8: 9914 ldr r1, [sp, #80] ; 0x50 - 2f8ca: f8ca 1004 str.w r1, [sl, #4] - 2f8ce: 3301 adds r3, #1 - 2f8d0: 440a add r2, r1 - 2f8d2: 2b07 cmp r3, #7 - 2f8d4: a91e add r1, sp, #120 ; 0x78 - 2f8d6: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2f8da: f8ca 1000 str.w r1, [sl] - 2f8de: f77f ace5 ble.w 2f2ac <_svfprintf_r+0x32c> - 2f8e2: ee1b 1a10 vmov r1, s22 - 2f8e6: aa24 add r2, sp, #144 ; 0x90 - 2f8e8: 4658 mov r0, fp - 2f8ea: f002 fe0f bl 3250c <__ssprint_r> - 2f8ee: 2800 cmp r0, #0 - 2f8f0: d1ab bne.n 2f84a <_svfprintf_r+0x8ca> - 2f8f2: 9a26 ldr r2, [sp, #152] ; 0x98 - 2f8f4: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2f8f8: e4da b.n 2f2b0 <_svfprintf_r+0x330> - 2f8fa: 2d10 cmp r5, #16 - 2f8fc: e9dd 1225 ldrd r1, r2, [sp, #148] ; 0x94 - 2f900: 4e2c ldr r6, [pc, #176] ; (2f9b4 <_svfprintf_r+0xa34>) - 2f902: dd24 ble.n 2f94e <_svfprintf_r+0x9ce> - 2f904: 9417 str r4, [sp, #92] ; 0x5c - 2f906: 2310 movs r3, #16 - 2f908: ee1b 4a10 vmov r4, s22 - 2f90c: 4608 mov r0, r1 - 2f90e: e004 b.n 2f91a <_svfprintf_r+0x99a> - 2f910: 3d10 subs r5, #16 - 2f912: 2d10 cmp r5, #16 - 2f914: f10a 0a08 add.w sl, sl, #8 - 2f918: dd17 ble.n 2f94a <_svfprintf_r+0x9ca> - 2f91a: 3001 adds r0, #1 - 2f91c: 3210 adds r2, #16 - 2f91e: 2807 cmp r0, #7 - 2f920: e9ca 6300 strd r6, r3, [sl] - 2f924: e9cd 0225 strd r0, r2, [sp, #148] ; 0x94 - 2f928: ddf2 ble.n 2f910 <_svfprintf_r+0x990> - 2f92a: aa24 add r2, sp, #144 ; 0x90 - 2f92c: 4621 mov r1, r4 - 2f92e: 4658 mov r0, fp - 2f930: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2f934: f002 fdea bl 3250c <__ssprint_r> - 2f938: 2800 cmp r0, #0 - 2f93a: d186 bne.n 2f84a <_svfprintf_r+0x8ca> - 2f93c: 3d10 subs r5, #16 - 2f93e: 2d10 cmp r5, #16 - 2f940: e9dd 0225 ldrd r0, r2, [sp, #148] ; 0x94 - 2f944: f04f 0310 mov.w r3, #16 - 2f948: dce7 bgt.n 2f91a <_svfprintf_r+0x99a> - 2f94a: 9c17 ldr r4, [sp, #92] ; 0x5c - 2f94c: 4601 mov r1, r0 - 2f94e: 3101 adds r1, #1 - 2f950: 442a add r2, r5 - 2f952: 2907 cmp r1, #7 - 2f954: e9cd 1225 strd r1, r2, [sp, #148] ; 0x94 - 2f958: f8ca 6000 str.w r6, [sl] - 2f95c: f8ca 5004 str.w r5, [sl, #4] - 2f960: f300 83bd bgt.w 300de <_svfprintf_r+0x115e> - 2f964: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 - 2f968: f10a 0a08 add.w sl, sl, #8 - 2f96c: e45d b.n 2f22a <_svfprintf_r+0x2aa> - 2f96e: f8cd 8008 str.w r8, [sp, #8] - 2f972: 2a0a cmp r2, #10 - 2f974: f171 0300 sbcs.w r3, r1, #0 - 2f978: f080 8345 bcs.w 30006 <_svfprintf_r+0x1086> - 2f97c: 3230 adds r2, #48 ; 0x30 - 2f97e: 2301 movs r3, #1 - 2f980: f8dd 8008 ldr.w r8, [sp, #8] - 2f984: f88d 213f strb.w r2, [sp, #319] ; 0x13f - 2f988: 9305 str r3, [sp, #20] - 2f98a: f20d 143f addw r4, sp, #319 ; 0x13f - 2f98e: e668 b.n 2f662 <_svfprintf_r+0x6e2> - 2f990: ee1b 1a10 vmov r1, s22 - 2f994: aa24 add r2, sp, #144 ; 0x90 - 2f996: 4658 mov r0, fp - 2f998: f002 fdb8 bl 3250c <__ssprint_r> - 2f99c: 2800 cmp r0, #0 - 2f99e: f47f af54 bne.w 2f84a <_svfprintf_r+0x8ca> - 2f9a2: 9a26 ldr r2, [sp, #152] ; 0x98 - 2f9a4: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2f9a8: e452 b.n 2f250 <_svfprintf_r+0x2d0> - 2f9aa: bf00 nop - 2f9ac: 20004490 .word 0x20004490 - 2f9b0: 20004a5c .word 0x20004a5c - 2f9b4: 20004494 .word 0x20004494 - 2f9b8: ee1b 1a10 vmov r1, s22 - 2f9bc: aa24 add r2, sp, #144 ; 0x90 - 2f9be: 4658 mov r0, fp - 2f9c0: f002 fda4 bl 3250c <__ssprint_r> - 2f9c4: 2800 cmp r0, #0 - 2f9c6: f47f af40 bne.w 2f84a <_svfprintf_r+0x8ca> - 2f9ca: 9a26 ldr r2, [sp, #152] ; 0x98 - 2f9cc: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2f9d0: e451 b.n 2f276 <_svfprintf_r+0x2f6> - 2f9d2: 2c10 cmp r4, #16 - 2f9d4: 9b25 ldr r3, [sp, #148] ; 0x94 - 2f9d6: 4ebe ldr r6, [pc, #760] ; (2fcd0 <_svfprintf_r+0xd50>) - 2f9d8: dd1f ble.n 2fa1a <_svfprintf_r+0xa9a> - 2f9da: ee1b 8a10 vmov r8, s22 - 2f9de: 2510 movs r5, #16 - 2f9e0: e004 b.n 2f9ec <_svfprintf_r+0xa6c> - 2f9e2: 3c10 subs r4, #16 - 2f9e4: 2c10 cmp r4, #16 - 2f9e6: f10a 0a08 add.w sl, sl, #8 - 2f9ea: dd16 ble.n 2fa1a <_svfprintf_r+0xa9a> - 2f9ec: 3301 adds r3, #1 - 2f9ee: 3210 adds r2, #16 - 2f9f0: 2b07 cmp r3, #7 - 2f9f2: e9ca 6500 strd r6, r5, [sl] - 2f9f6: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2f9fa: ddf2 ble.n 2f9e2 <_svfprintf_r+0xa62> - 2f9fc: aa24 add r2, sp, #144 ; 0x90 - 2f9fe: 4641 mov r1, r8 - 2fa00: 4658 mov r0, fp - 2fa02: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2fa06: f002 fd81 bl 3250c <__ssprint_r> - 2fa0a: 2800 cmp r0, #0 - 2fa0c: f47f af1d bne.w 2f84a <_svfprintf_r+0x8ca> - 2fa10: 3c10 subs r4, #16 - 2fa12: 2c10 cmp r4, #16 - 2fa14: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 2fa18: dce8 bgt.n 2f9ec <_svfprintf_r+0xa6c> - 2fa1a: 3301 adds r3, #1 - 2fa1c: 4422 add r2, r4 - 2fa1e: 2b07 cmp r3, #7 - 2fa20: e9ca 6400 strd r6, r4, [sl] - 2fa24: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2fa28: f77f ac4b ble.w 2f2c2 <_svfprintf_r+0x342> - 2fa2c: ee1b 1a10 vmov r1, s22 - 2fa30: aa24 add r2, sp, #144 ; 0x90 - 2fa32: 4658 mov r0, fp - 2fa34: f002 fd6a bl 3250c <__ssprint_r> + 2f866: dd21 ble.n 2f8ac <_svfprintf_r+0x82c> + 2f868: 9409 str r4, [sp, #36] ; 0x24 + 2f86a: 2610 movs r6, #16 + 2f86c: ee1b 4a10 vmov r4, s22 + 2f870: e004 b.n 2f87c <_svfprintf_r+0x7fc> + 2f872: 3d10 subs r5, #16 + 2f874: 2d10 cmp r5, #16 + 2f876: f10a 0a08 add.w sl, sl, #8 + 2f87a: dd16 ble.n 2f8aa <_svfprintf_r+0x82a> + 2f87c: 3301 adds r3, #1 + 2f87e: 498c ldr r1, [pc, #560] ; (2fab0 <_svfprintf_r+0xa30>) + 2f880: 3210 adds r2, #16 + 2f882: 2b07 cmp r3, #7 + 2f884: e9ca 1600 strd r1, r6, [sl] + 2f888: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2f88c: ddf1 ble.n 2f872 <_svfprintf_r+0x7f2> + 2f88e: aa24 add r2, sp, #144 ; 0x90 + 2f890: 4621 mov r1, r4 + 2f892: 4658 mov r0, fp + 2f894: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2f898: f002 feb8 bl 3260c <__ssprint_r> + 2f89c: 2800 cmp r0, #0 + 2f89e: d154 bne.n 2f94a <_svfprintf_r+0x8ca> + 2f8a0: 3d10 subs r5, #16 + 2f8a2: 2d10 cmp r5, #16 + 2f8a4: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 2f8a8: dce8 bgt.n 2f87c <_svfprintf_r+0x7fc> + 2f8aa: 9c09 ldr r4, [sp, #36] ; 0x24 + 2f8ac: 4980 ldr r1, [pc, #512] ; (2fab0 <_svfprintf_r+0xa30>) + 2f8ae: f8ca 5004 str.w r5, [sl, #4] + 2f8b2: 3301 adds r3, #1 + 2f8b4: 442a add r2, r5 + 2f8b6: 2b07 cmp r3, #7 + 2f8b8: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2f8bc: f8ca 1000 str.w r1, [sl] + 2f8c0: f300 8526 bgt.w 30310 <_svfprintf_r+0x1290> + 2f8c4: 9b03 ldr r3, [sp, #12] + 2f8c6: 9905 ldr r1, [sp, #20] + 2f8c8: 1a5d subs r5, r3, r1 + 2f8ca: 2d00 cmp r5, #0 + 2f8cc: f10a 0a08 add.w sl, sl, #8 + 2f8d0: f77f ad5b ble.w 2f38a <_svfprintf_r+0x30a> + 2f8d4: 2d10 cmp r5, #16 + 2f8d6: 9b25 ldr r3, [sp, #148] ; 0x94 + 2f8d8: dd1f ble.n 2f91a <_svfprintf_r+0x89a> + 2f8da: 4651 mov r1, sl + 2f8dc: 2610 movs r6, #16 + 2f8de: ee1b aa10 vmov sl, s22 + 2f8e2: e004 b.n 2f8ee <_svfprintf_r+0x86e> + 2f8e4: 3d10 subs r5, #16 + 2f8e6: 2d10 cmp r5, #16 + 2f8e8: f101 0108 add.w r1, r1, #8 + 2f8ec: dd14 ble.n 2f918 <_svfprintf_r+0x898> + 2f8ee: 3301 adds r3, #1 + 2f8f0: 486f ldr r0, [pc, #444] ; (2fab0 <_svfprintf_r+0xa30>) + 2f8f2: 3210 adds r2, #16 + 2f8f4: 2b07 cmp r3, #7 + 2f8f6: e9c1 0600 strd r0, r6, [r1] + 2f8fa: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2f8fe: ddf1 ble.n 2f8e4 <_svfprintf_r+0x864> + 2f900: aa24 add r2, sp, #144 ; 0x90 + 2f902: 4651 mov r1, sl + 2f904: 4658 mov r0, fp + 2f906: f002 fe81 bl 3260c <__ssprint_r> + 2f90a: b9f0 cbnz r0, 2f94a <_svfprintf_r+0x8ca> + 2f90c: 3d10 subs r5, #16 + 2f90e: 2d10 cmp r5, #16 + 2f910: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 2f914: a927 add r1, sp, #156 ; 0x9c + 2f916: dcea bgt.n 2f8ee <_svfprintf_r+0x86e> + 2f918: 468a mov sl, r1 + 2f91a: 3301 adds r3, #1 + 2f91c: 4964 ldr r1, [pc, #400] ; (2fab0 <_svfprintf_r+0xa30>) + 2f91e: f8ca 5004 str.w r5, [sl, #4] + 2f922: 442a add r2, r5 + 2f924: 2b07 cmp r3, #7 + 2f926: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2f92a: f8ca 1000 str.w r1, [sl] + 2f92e: f300 81da bgt.w 2fce6 <_svfprintf_r+0xc66> + 2f932: f10a 0a08 add.w sl, sl, #8 + 2f936: e528 b.n 2f38a <_svfprintf_r+0x30a> + 2f938: ee1b 1a10 vmov r1, s22 + 2f93c: aa24 add r2, sp, #144 ; 0x90 + 2f93e: 4658 mov r0, fp + 2f940: f002 fe64 bl 3260c <__ssprint_r> + 2f944: 2800 cmp r0, #0 + 2f946: f43f ad47 beq.w 2f3d8 <_svfprintf_r+0x358> + 2f94a: 9b07 ldr r3, [sp, #28] + 2f94c: 2b00 cmp r3, #0 + 2f94e: f43f aca2 beq.w 2f296 <_svfprintf_r+0x216> + 2f952: 9907 ldr r1, [sp, #28] + 2f954: 4658 mov r0, fp + 2f956: f7ff fa75 bl 2ee44 <_free_r> + 2f95a: e49c b.n 2f296 <_svfprintf_r+0x216> + 2f95c: 9b0e ldr r3, [sp, #56] ; 0x38 + 2f95e: 2b01 cmp r3, #1 + 2f960: f340 817a ble.w 2fc58 <_svfprintf_r+0xbd8> + 2f964: 9b25 ldr r3, [sp, #148] ; 0x94 + 2f966: f8ca 4000 str.w r4, [sl] + 2f96a: 3301 adds r3, #1 + 2f96c: 3201 adds r2, #1 + 2f96e: 2101 movs r1, #1 + 2f970: 2b07 cmp r3, #7 + 2f972: 9226 str r2, [sp, #152] ; 0x98 + 2f974: 9325 str r3, [sp, #148] ; 0x94 + 2f976: f8ca 1004 str.w r1, [sl, #4] + 2f97a: f300 81f8 bgt.w 2fd6e <_svfprintf_r+0xcee> + 2f97e: f10a 0a08 add.w sl, sl, #8 + 2f982: 9910 ldr r1, [sp, #64] ; 0x40 + 2f984: 9812 ldr r0, [sp, #72] ; 0x48 + 2f986: 3301 adds r3, #1 + 2f988: 440a add r2, r1 + 2f98a: 2b07 cmp r3, #7 + 2f98c: e9ca 0100 strd r0, r1, [sl] + 2f990: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2f994: f300 81dd bgt.w 2fd52 <_svfprintf_r+0xcd2> + 2f998: f10a 0a08 add.w sl, sl, #8 + 2f99c: eeb5 8b40 vcmp.f64 d8, #0.0 + 2f9a0: eef1 fa10 vmrs APSR_nzcv, fpscr + 2f9a4: f000 8177 beq.w 2fc96 <_svfprintf_r+0xc16> + 2f9a8: 990e ldr r1, [sp, #56] ; 0x38 + 2f9aa: 3301 adds r3, #1 + 2f9ac: 3901 subs r1, #1 + 2f9ae: 3401 adds r4, #1 + 2f9b0: 440a add r2, r1 + 2f9b2: 2b07 cmp r3, #7 + 2f9b4: f8ca 4000 str.w r4, [sl] + 2f9b8: 9325 str r3, [sp, #148] ; 0x94 + 2f9ba: f8ca 1004 str.w r1, [sl, #4] + 2f9be: 9226 str r2, [sp, #152] ; 0x98 + 2f9c0: f300 815b bgt.w 2fc7a <_svfprintf_r+0xbfa> + 2f9c4: f10a 0a08 add.w sl, sl, #8 + 2f9c8: 9914 ldr r1, [sp, #80] ; 0x50 + 2f9ca: f8ca 1004 str.w r1, [sl, #4] + 2f9ce: 3301 adds r3, #1 + 2f9d0: 440a add r2, r1 + 2f9d2: 2b07 cmp r3, #7 + 2f9d4: a91e add r1, sp, #120 ; 0x78 + 2f9d6: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2f9da: f8ca 1000 str.w r1, [sl] + 2f9de: f77f ace5 ble.w 2f3ac <_svfprintf_r+0x32c> + 2f9e2: ee1b 1a10 vmov r1, s22 + 2f9e6: aa24 add r2, sp, #144 ; 0x90 + 2f9e8: 4658 mov r0, fp + 2f9ea: f002 fe0f bl 3260c <__ssprint_r> + 2f9ee: 2800 cmp r0, #0 + 2f9f0: d1ab bne.n 2f94a <_svfprintf_r+0x8ca> + 2f9f2: 9a26 ldr r2, [sp, #152] ; 0x98 + 2f9f4: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2f9f8: e4da b.n 2f3b0 <_svfprintf_r+0x330> + 2f9fa: 2d10 cmp r5, #16 + 2f9fc: e9dd 1225 ldrd r1, r2, [sp, #148] ; 0x94 + 2fa00: 4e2c ldr r6, [pc, #176] ; (2fab4 <_svfprintf_r+0xa34>) + 2fa02: dd24 ble.n 2fa4e <_svfprintf_r+0x9ce> + 2fa04: 9417 str r4, [sp, #92] ; 0x5c + 2fa06: 2310 movs r3, #16 + 2fa08: ee1b 4a10 vmov r4, s22 + 2fa0c: 4608 mov r0, r1 + 2fa0e: e004 b.n 2fa1a <_svfprintf_r+0x99a> + 2fa10: 3d10 subs r5, #16 + 2fa12: 2d10 cmp r5, #16 + 2fa14: f10a 0a08 add.w sl, sl, #8 + 2fa18: dd17 ble.n 2fa4a <_svfprintf_r+0x9ca> + 2fa1a: 3001 adds r0, #1 + 2fa1c: 3210 adds r2, #16 + 2fa1e: 2807 cmp r0, #7 + 2fa20: e9ca 6300 strd r6, r3, [sl] + 2fa24: e9cd 0225 strd r0, r2, [sp, #148] ; 0x94 + 2fa28: ddf2 ble.n 2fa10 <_svfprintf_r+0x990> + 2fa2a: aa24 add r2, sp, #144 ; 0x90 + 2fa2c: 4621 mov r1, r4 + 2fa2e: 4658 mov r0, fp + 2fa30: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2fa34: f002 fdea bl 3260c <__ssprint_r> 2fa38: 2800 cmp r0, #0 - 2fa3a: f47f af06 bne.w 2f84a <_svfprintf_r+0x8ca> - 2fa3e: 9a26 ldr r2, [sp, #152] ; 0x98 - 2fa40: e43f b.n 2f2c2 <_svfprintf_r+0x342> - 2fa42: 991b ldr r1, [sp, #108] ; 0x6c - 2fa44: 2900 cmp r1, #0 - 2fa46: f340 835a ble.w 300fe <_svfprintf_r+0x117e> - 2fa4a: 9e0c ldr r6, [sp, #48] ; 0x30 - 2fa4c: 9b0e ldr r3, [sp, #56] ; 0x38 - 2fa4e: 429e cmp r6, r3 - 2fa50: bfa8 it ge - 2fa52: 461e movge r6, r3 - 2fa54: 2e00 cmp r6, #0 - 2fa56: dd0b ble.n 2fa70 <_svfprintf_r+0xaf0> - 2fa58: 9b25 ldr r3, [sp, #148] ; 0x94 - 2fa5a: 3301 adds r3, #1 - 2fa5c: 4432 add r2, r6 - 2fa5e: 2b07 cmp r3, #7 - 2fa60: e9ca 4600 strd r4, r6, [sl] - 2fa64: 9226 str r2, [sp, #152] ; 0x98 - 2fa66: 9325 str r3, [sp, #148] ; 0x94 - 2fa68: f300 8689 bgt.w 3077e <_svfprintf_r+0x17fe> - 2fa6c: f10a 0a08 add.w sl, sl, #8 - 2fa70: 9d0c ldr r5, [sp, #48] ; 0x30 - 2fa72: 2e00 cmp r6, #0 - 2fa74: bfa8 it ge - 2fa76: 1bad subge r5, r5, r6 - 2fa78: 2d00 cmp r5, #0 - 2fa7a: f300 8203 bgt.w 2fe84 <_svfprintf_r+0xf04> - 2fa7e: 9b0c ldr r3, [sp, #48] ; 0x30 - 2fa80: f418 6f80 tst.w r8, #1024 ; 0x400 - 2fa84: 4423 add r3, r4 - 2fa86: 9305 str r3, [sp, #20] - 2fa88: f040 821f bne.w 2feca <_svfprintf_r+0xf4a> - 2fa8c: 9b1b ldr r3, [sp, #108] ; 0x6c - 2fa8e: 990e ldr r1, [sp, #56] ; 0x38 - 2fa90: 428b cmp r3, r1 - 2fa92: db03 blt.n 2fa9c <_svfprintf_r+0xb1c> - 2fa94: f018 0f01 tst.w r8, #1 - 2fa98: f000 84cf beq.w 3043a <_svfprintf_r+0x14ba> - 2fa9c: 9910 ldr r1, [sp, #64] ; 0x40 - 2fa9e: 9812 ldr r0, [sp, #72] ; 0x48 - 2faa0: 440a add r2, r1 - 2faa2: e9ca 0100 strd r0, r1, [sl] - 2faa6: 9925 ldr r1, [sp, #148] ; 0x94 - 2faa8: 9226 str r2, [sp, #152] ; 0x98 - 2faaa: 3101 adds r1, #1 - 2faac: 2907 cmp r1, #7 - 2faae: 9125 str r1, [sp, #148] ; 0x94 - 2fab0: f300 86a5 bgt.w 307fe <_svfprintf_r+0x187e> - 2fab4: f10a 0a08 add.w sl, sl, #8 - 2fab8: 990e ldr r1, [sp, #56] ; 0x38 - 2faba: 1865 adds r5, r4, r1 - 2fabc: 1acc subs r4, r1, r3 - 2fabe: 9b05 ldr r3, [sp, #20] - 2fac0: 1aed subs r5, r5, r3 - 2fac2: 42a5 cmp r5, r4 - 2fac4: bfa8 it ge - 2fac6: 4625 movge r5, r4 - 2fac8: 2d00 cmp r5, #0 - 2faca: dd0d ble.n 2fae8 <_svfprintf_r+0xb68> - 2facc: f8ca 3000 str.w r3, [sl] - 2fad0: 9b25 ldr r3, [sp, #148] ; 0x94 - 2fad2: f8ca 5004 str.w r5, [sl, #4] - 2fad6: 3301 adds r3, #1 - 2fad8: 442a add r2, r5 - 2fada: 2b07 cmp r3, #7 - 2fadc: 9226 str r2, [sp, #152] ; 0x98 - 2fade: 9325 str r3, [sp, #148] ; 0x94 - 2fae0: f300 86bb bgt.w 3085a <_svfprintf_r+0x18da> - 2fae4: f10a 0a08 add.w sl, sl, #8 - 2fae8: 2d00 cmp r5, #0 - 2faea: bfa8 it ge - 2faec: 1b64 subge r4, r4, r5 - 2faee: 2c00 cmp r4, #0 - 2faf0: f77f abde ble.w 2f2b0 <_svfprintf_r+0x330> - 2faf4: 2c10 cmp r4, #16 - 2faf6: 9b25 ldr r3, [sp, #148] ; 0x94 - 2faf8: f340 837c ble.w 301f4 <_svfprintf_r+0x1274> - 2fafc: ee1b 6a10 vmov r6, s22 - 2fb00: 2510 movs r5, #16 - 2fb02: e005 b.n 2fb10 <_svfprintf_r+0xb90> - 2fb04: f10a 0a08 add.w sl, sl, #8 - 2fb08: 3c10 subs r4, #16 - 2fb0a: 2c10 cmp r4, #16 - 2fb0c: f340 8372 ble.w 301f4 <_svfprintf_r+0x1274> - 2fb10: 3301 adds r3, #1 - 2fb12: 4970 ldr r1, [pc, #448] ; (2fcd4 <_svfprintf_r+0xd54>) - 2fb14: 3210 adds r2, #16 - 2fb16: 2b07 cmp r3, #7 - 2fb18: e9ca 1500 strd r1, r5, [sl] - 2fb1c: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2fb20: ddf0 ble.n 2fb04 <_svfprintf_r+0xb84> - 2fb22: aa24 add r2, sp, #144 ; 0x90 - 2fb24: 4631 mov r1, r6 - 2fb26: 4658 mov r0, fp - 2fb28: f002 fcf0 bl 3250c <__ssprint_r> - 2fb2c: 2800 cmp r0, #0 - 2fb2e: f47f ae8c bne.w 2f84a <_svfprintf_r+0x8ca> - 2fb32: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 2fb36: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2fb3a: e7e5 b.n 2fb08 <_svfprintf_r+0xb88> - 2fb3c: 2b30 cmp r3, #48 ; 0x30 - 2fb3e: f43f ad8b beq.w 2f658 <_svfprintf_r+0x6d8> - 2fb42: 2330 movs r3, #48 ; 0x30 - 2fb44: 3802 subs r0, #2 - 2fb46: f804 3c01 strb.w r3, [r4, #-1] - 2fb4a: ab50 add r3, sp, #320 ; 0x140 - 2fb4c: 1a1b subs r3, r3, r0 - 2fb4e: f8dd 8008 ldr.w r8, [sp, #8] - 2fb52: 9305 str r3, [sp, #20] - 2fb54: 4604 mov r4, r0 - 2fb56: e584 b.n 2f662 <_svfprintf_r+0x6e2> - 2fb58: f018 0f01 tst.w r8, #1 - 2fb5c: f47f ae82 bne.w 2f864 <_svfprintf_r+0x8e4> - 2fb60: 9b25 ldr r3, [sp, #148] ; 0x94 - 2fb62: f8ca 4000 str.w r4, [sl] - 2fb66: 3301 adds r3, #1 - 2fb68: 3201 adds r2, #1 - 2fb6a: 2101 movs r1, #1 - 2fb6c: 2b07 cmp r3, #7 - 2fb6e: 9226 str r2, [sp, #152] ; 0x98 - 2fb70: 9325 str r3, [sp, #148] ; 0x94 - 2fb72: f8ca 1004 str.w r1, [sl, #4] - 2fb76: f77f aea5 ble.w 2f8c4 <_svfprintf_r+0x944> - 2fb7a: ee1b 1a10 vmov r1, s22 - 2fb7e: aa24 add r2, sp, #144 ; 0x90 - 2fb80: 4658 mov r0, fp - 2fb82: f002 fcc3 bl 3250c <__ssprint_r> - 2fb86: 2800 cmp r0, #0 - 2fb88: f47f ae5f bne.w 2f84a <_svfprintf_r+0x8ca> - 2fb8c: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 2fb90: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2fb94: e698 b.n 2f8c8 <_svfprintf_r+0x948> - 2fb96: 990e ldr r1, [sp, #56] ; 0x38 - 2fb98: 1e4c subs r4, r1, #1 - 2fb9a: 2c00 cmp r4, #0 - 2fb9c: f77f ae94 ble.w 2f8c8 <_svfprintf_r+0x948> - 2fba0: 2c10 cmp r4, #16 - 2fba2: f340 8361 ble.w 30268 <_svfprintf_r+0x12e8> - 2fba6: ee1b 6a10 vmov r6, s22 - 2fbaa: 2510 movs r5, #16 - 2fbac: e005 b.n 2fbba <_svfprintf_r+0xc3a> - 2fbae: f10a 0a08 add.w sl, sl, #8 - 2fbb2: 3c10 subs r4, #16 - 2fbb4: 2c10 cmp r4, #16 - 2fbb6: f340 8357 ble.w 30268 <_svfprintf_r+0x12e8> - 2fbba: 3301 adds r3, #1 - 2fbbc: 4945 ldr r1, [pc, #276] ; (2fcd4 <_svfprintf_r+0xd54>) - 2fbbe: 3210 adds r2, #16 - 2fbc0: 2b07 cmp r3, #7 - 2fbc2: e9ca 1500 strd r1, r5, [sl] - 2fbc6: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2fbca: ddf0 ble.n 2fbae <_svfprintf_r+0xc2e> - 2fbcc: aa24 add r2, sp, #144 ; 0x90 - 2fbce: 4631 mov r1, r6 - 2fbd0: 4658 mov r0, fp - 2fbd2: f002 fc9b bl 3250c <__ssprint_r> - 2fbd6: 2800 cmp r0, #0 - 2fbd8: f47f ae37 bne.w 2f84a <_svfprintf_r+0x8ca> - 2fbdc: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 2fbe0: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2fbe4: e7e5 b.n 2fbb2 <_svfprintf_r+0xc32> - 2fbe6: ee1b 1a10 vmov r1, s22 - 2fbea: aa24 add r2, sp, #144 ; 0x90 - 2fbec: 4658 mov r0, fp - 2fbee: f002 fc8d bl 3250c <__ssprint_r> - 2fbf2: 2800 cmp r0, #0 - 2fbf4: f47f ae29 bne.w 2f84a <_svfprintf_r+0x8ca> - 2fbf8: 9a26 ldr r2, [sp, #152] ; 0x98 - 2fbfa: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2fbfe: f7ff bb44 b.w 2f28a <_svfprintf_r+0x30a> - 2fc02: 9b02 ldr r3, [sp, #8] - 2fc04: f013 0310 ands.w r3, r3, #16 - 2fc08: f040 80c1 bne.w 2fd8e <_svfprintf_r+0xe0e> - 2fc0c: 9a02 ldr r2, [sp, #8] - 2fc0e: f012 0240 ands.w r2, r2, #64 ; 0x40 - 2fc12: f000 837a beq.w 3030a <_svfprintf_r+0x138a> - 2fc16: 9808 ldr r0, [sp, #32] - 2fc18: f850 2b04 ldr.w r2, [r0], #4 - 2fc1c: 9008 str r0, [sp, #32] - 2fc1e: 4619 mov r1, r3 - 2fc20: b292 uxth r2, r2 - 2fc22: 2301 movs r3, #1 - 2fc24: e451 b.n 2f4ca <_svfprintf_r+0x54a> - 2fc26: f018 0310 ands.w r3, r8, #16 - 2fc2a: d155 bne.n 2fcd8 <_svfprintf_r+0xd58> - 2fc2c: f018 0240 ands.w r2, r8, #64 ; 0x40 - 2fc30: f000 835d beq.w 302ee <_svfprintf_r+0x136e> - 2fc34: 9808 ldr r0, [sp, #32] - 2fc36: f850 2b04 ldr.w r2, [r0], #4 - 2fc3a: 9008 str r0, [sp, #32] - 2fc3c: 4619 mov r1, r3 - 2fc3e: b292 uxth r2, r2 - 2fc40: e4a8 b.n 2f594 <_svfprintf_r+0x614> - 2fc42: 4252 negs r2, r2 - 2fc44: eb61 0141 sbc.w r1, r1, r1, lsl #1 - 2fc48: f8cd 8008 str.w r8, [sp, #8] - 2fc4c: 202d movs r0, #45 ; 0x2d - 2fc4e: 2301 movs r3, #1 - 2fc50: e43c b.n 2f4cc <_svfprintf_r+0x54c> - 2fc52: ee1b 1a10 vmov r1, s22 - 2fc56: aa24 add r2, sp, #144 ; 0x90 - 2fc58: 4658 mov r0, fp - 2fc5a: f002 fc57 bl 3250c <__ssprint_r> - 2fc5e: 2800 cmp r0, #0 - 2fc60: f47f adf3 bne.w 2f84a <_svfprintf_r+0x8ca> - 2fc64: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 2fc68: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2fc6c: e616 b.n 2f89c <_svfprintf_r+0x91c> - 2fc6e: ee1b 1a10 vmov r1, s22 - 2fc72: aa24 add r2, sp, #144 ; 0x90 - 2fc74: 4658 mov r0, fp - 2fc76: f002 fc49 bl 3250c <__ssprint_r> - 2fc7a: 2800 cmp r0, #0 - 2fc7c: f47f ade5 bne.w 2f84a <_svfprintf_r+0x8ca> - 2fc80: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 2fc84: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2fc88: e5fb b.n 2f882 <_svfprintf_r+0x902> - 2fc8a: f018 0f01 tst.w r8, #1 - 2fc8e: f43f ab0f beq.w 2f2b0 <_svfprintf_r+0x330> - 2fc92: e52a b.n 2f6ea <_svfprintf_r+0x76a> - 2fc94: 9308 str r3, [sp, #32] - 2fc96: f899 3000 ldrb.w r3, [r9] - 2fc9a: f7ff b9cd b.w 2f038 <_svfprintf_r+0xb8> - 2fc9e: ac50 add r4, sp, #320 ; 0x140 - 2fca0: e4df b.n 2f662 <_svfprintf_r+0x6e2> - 2fca2: f418 7f00 tst.w r8, #512 ; 0x200 - 2fca6: f040 83db bne.w 30460 <_svfprintf_r+0x14e0> - 2fcaa: f853 2b04 ldr.w r2, [r3], #4 - 2fcae: 9308 str r3, [sp, #32] - 2fcb0: 17d1 asrs r1, r2, #31 - 2fcb2: 460b mov r3, r1 - 2fcb4: f7ff bbb6 b.w 2f424 <_svfprintf_r+0x4a4> - 2fcb8: 9b08 ldr r3, [sp, #32] - 2fcba: 9804 ldr r0, [sp, #16] - 2fcbc: f853 1b04 ldr.w r1, [r3], #4 - 2fcc0: 9308 str r3, [sp, #32] - 2fcc2: 17c2 asrs r2, r0, #31 - 2fcc4: e9c1 0200 strd r0, r2, [r1] - 2fcc8: 464c mov r4, r9 - 2fcca: f7ff b98b b.w 2efe4 <_svfprintf_r+0x64> - 2fcce: bf00 nop - 2fcd0: 20004494 .word 0x20004494 - 2fcd4: 20004a5c .word 0x20004a5c - 2fcd8: 9b08 ldr r3, [sp, #32] - 2fcda: f853 2b04 ldr.w r2, [r3], #4 - 2fcde: 9308 str r3, [sp, #32] - 2fce0: e458 b.n 2f594 <_svfprintf_r+0x614> - 2fce2: eeb4 8b48 vcmp.f64 d8, d8 - 2fce6: eef1 fa10 vmrs APSR_nzcv, fpscr - 2fcea: f180 8694 bvs.w 30a16 <_svfprintf_r+0x1a96> - 2fcee: 9b0b ldr r3, [sp, #44] ; 0x2c - 2fcf0: 2b61 cmp r3, #97 ; 0x61 - 2fcf2: f000 8552 beq.w 3079a <_svfprintf_r+0x181a> - 2fcf6: 2b41 cmp r3, #65 ; 0x41 - 2fcf8: f000 85c0 beq.w 3087c <_svfprintf_r+0x18fc> - 2fcfc: 9b03 ldr r3, [sp, #12] - 2fcfe: 3301 adds r3, #1 - 2fd00: 9b0b ldr r3, [sp, #44] ; 0x2c - 2fd02: f023 0520 bic.w r5, r3, #32 - 2fd06: f000 8480 beq.w 3060a <_svfprintf_r+0x168a> - 2fd0a: 2d47 cmp r5, #71 ; 0x47 - 2fd0c: d104 bne.n 2fd18 <_svfprintf_r+0xd98> - 2fd0e: 9b03 ldr r3, [sp, #12] - 2fd10: 2b00 cmp r3, #0 - 2fd12: bf08 it eq - 2fd14: 2301 moveq r3, #1 - 2fd16: 9303 str r3, [sp, #12] - 2fd18: ee18 3a90 vmov r3, s17 - 2fd1c: 2b00 cmp r3, #0 - 2fd1e: f448 7280 orr.w r2, r8, #256 ; 0x100 - 2fd22: 4646 mov r6, r8 - 2fd24: f2c0 8618 blt.w 30958 <_svfprintf_r+0x19d8> - 2fd28: eeb0 ab48 vmov.f64 d10, d8 - 2fd2c: 2300 movs r3, #0 - 2fd2e: 4690 mov r8, r2 - 2fd30: 9309 str r3, [sp, #36] ; 0x24 - 2fd32: 9307 str r3, [sp, #28] - 2fd34: 9b0b ldr r3, [sp, #44] ; 0x2c - 2fd36: 3b41 subs r3, #65 ; 0x41 - 2fd38: 2b25 cmp r3, #37 ; 0x25 - 2fd3a: f200 8398 bhi.w 3046e <_svfprintf_r+0x14ee> - 2fd3e: e8df f013 tbh [pc, r3, lsl #1] - 2fd42: 046f .short 0x046f - 2fd44: 03960396 .word 0x03960396 - 2fd48: 04680396 .word 0x04680396 - 2fd4c: 0396046c .word 0x0396046c - 2fd50: 03960396 .word 0x03960396 - 2fd54: 03960396 .word 0x03960396 - 2fd58: 03960396 .word 0x03960396 - 2fd5c: 03960396 .word 0x03960396 - 2fd60: 03960396 .word 0x03960396 - 2fd64: 03960396 .word 0x03960396 - 2fd68: 03960396 .word 0x03960396 - 2fd6c: 03960396 .word 0x03960396 - 2fd70: 03960396 .word 0x03960396 - 2fd74: 03960396 .word 0x03960396 - 2fd78: 03960396 .word 0x03960396 - 2fd7c: 03960396 .word 0x03960396 - 2fd80: 03960396 .word 0x03960396 - 2fd84: 03960396 .word 0x03960396 - 2fd88: 04680396 .word 0x04680396 - 2fd8c: 046c .short 0x046c - 2fd8e: 9b08 ldr r3, [sp, #32] - 2fd90: f853 2b04 ldr.w r2, [r3], #4 + 2fa3a: d186 bne.n 2f94a <_svfprintf_r+0x8ca> + 2fa3c: 3d10 subs r5, #16 + 2fa3e: 2d10 cmp r5, #16 + 2fa40: e9dd 0225 ldrd r0, r2, [sp, #148] ; 0x94 + 2fa44: f04f 0310 mov.w r3, #16 + 2fa48: dce7 bgt.n 2fa1a <_svfprintf_r+0x99a> + 2fa4a: 9c17 ldr r4, [sp, #92] ; 0x5c + 2fa4c: 4601 mov r1, r0 + 2fa4e: 3101 adds r1, #1 + 2fa50: 442a add r2, r5 + 2fa52: 2907 cmp r1, #7 + 2fa54: e9cd 1225 strd r1, r2, [sp, #148] ; 0x94 + 2fa58: f8ca 6000 str.w r6, [sl] + 2fa5c: f8ca 5004 str.w r5, [sl, #4] + 2fa60: f300 83bd bgt.w 301de <_svfprintf_r+0x115e> + 2fa64: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 + 2fa68: f10a 0a08 add.w sl, sl, #8 + 2fa6c: e45d b.n 2f32a <_svfprintf_r+0x2aa> + 2fa6e: f8cd 8008 str.w r8, [sp, #8] + 2fa72: 2a0a cmp r2, #10 + 2fa74: f171 0300 sbcs.w r3, r1, #0 + 2fa78: f080 8345 bcs.w 30106 <_svfprintf_r+0x1086> + 2fa7c: 3230 adds r2, #48 ; 0x30 + 2fa7e: 2301 movs r3, #1 + 2fa80: f8dd 8008 ldr.w r8, [sp, #8] + 2fa84: f88d 213f strb.w r2, [sp, #319] ; 0x13f + 2fa88: 9305 str r3, [sp, #20] + 2fa8a: f20d 143f addw r4, sp, #319 ; 0x13f + 2fa8e: e668 b.n 2f762 <_svfprintf_r+0x6e2> + 2fa90: ee1b 1a10 vmov r1, s22 + 2fa94: aa24 add r2, sp, #144 ; 0x90 + 2fa96: 4658 mov r0, fp + 2fa98: f002 fdb8 bl 3260c <__ssprint_r> + 2fa9c: 2800 cmp r0, #0 + 2fa9e: f47f af54 bne.w 2f94a <_svfprintf_r+0x8ca> + 2faa2: 9a26 ldr r2, [sp, #152] ; 0x98 + 2faa4: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2faa8: e452 b.n 2f350 <_svfprintf_r+0x2d0> + 2faaa: bf00 nop + 2faac: 20004550 .word 0x20004550 + 2fab0: 20004b1c .word 0x20004b1c + 2fab4: 20004554 .word 0x20004554 + 2fab8: ee1b 1a10 vmov r1, s22 + 2fabc: aa24 add r2, sp, #144 ; 0x90 + 2fabe: 4658 mov r0, fp + 2fac0: f002 fda4 bl 3260c <__ssprint_r> + 2fac4: 2800 cmp r0, #0 + 2fac6: f47f af40 bne.w 2f94a <_svfprintf_r+0x8ca> + 2faca: 9a26 ldr r2, [sp, #152] ; 0x98 + 2facc: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2fad0: e451 b.n 2f376 <_svfprintf_r+0x2f6> + 2fad2: 2c10 cmp r4, #16 + 2fad4: 9b25 ldr r3, [sp, #148] ; 0x94 + 2fad6: 4ebe ldr r6, [pc, #760] ; (2fdd0 <_svfprintf_r+0xd50>) + 2fad8: dd1f ble.n 2fb1a <_svfprintf_r+0xa9a> + 2fada: ee1b 8a10 vmov r8, s22 + 2fade: 2510 movs r5, #16 + 2fae0: e004 b.n 2faec <_svfprintf_r+0xa6c> + 2fae2: 3c10 subs r4, #16 + 2fae4: 2c10 cmp r4, #16 + 2fae6: f10a 0a08 add.w sl, sl, #8 + 2faea: dd16 ble.n 2fb1a <_svfprintf_r+0xa9a> + 2faec: 3301 adds r3, #1 + 2faee: 3210 adds r2, #16 + 2faf0: 2b07 cmp r3, #7 + 2faf2: e9ca 6500 strd r6, r5, [sl] + 2faf6: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2fafa: ddf2 ble.n 2fae2 <_svfprintf_r+0xa62> + 2fafc: aa24 add r2, sp, #144 ; 0x90 + 2fafe: 4641 mov r1, r8 + 2fb00: 4658 mov r0, fp + 2fb02: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2fb06: f002 fd81 bl 3260c <__ssprint_r> + 2fb0a: 2800 cmp r0, #0 + 2fb0c: f47f af1d bne.w 2f94a <_svfprintf_r+0x8ca> + 2fb10: 3c10 subs r4, #16 + 2fb12: 2c10 cmp r4, #16 + 2fb14: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 2fb18: dce8 bgt.n 2faec <_svfprintf_r+0xa6c> + 2fb1a: 3301 adds r3, #1 + 2fb1c: 4422 add r2, r4 + 2fb1e: 2b07 cmp r3, #7 + 2fb20: e9ca 6400 strd r6, r4, [sl] + 2fb24: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2fb28: f77f ac4b ble.w 2f3c2 <_svfprintf_r+0x342> + 2fb2c: ee1b 1a10 vmov r1, s22 + 2fb30: aa24 add r2, sp, #144 ; 0x90 + 2fb32: 4658 mov r0, fp + 2fb34: f002 fd6a bl 3260c <__ssprint_r> + 2fb38: 2800 cmp r0, #0 + 2fb3a: f47f af06 bne.w 2f94a <_svfprintf_r+0x8ca> + 2fb3e: 9a26 ldr r2, [sp, #152] ; 0x98 + 2fb40: e43f b.n 2f3c2 <_svfprintf_r+0x342> + 2fb42: 991b ldr r1, [sp, #108] ; 0x6c + 2fb44: 2900 cmp r1, #0 + 2fb46: f340 835a ble.w 301fe <_svfprintf_r+0x117e> + 2fb4a: 9e0c ldr r6, [sp, #48] ; 0x30 + 2fb4c: 9b0e ldr r3, [sp, #56] ; 0x38 + 2fb4e: 429e cmp r6, r3 + 2fb50: bfa8 it ge + 2fb52: 461e movge r6, r3 + 2fb54: 2e00 cmp r6, #0 + 2fb56: dd0b ble.n 2fb70 <_svfprintf_r+0xaf0> + 2fb58: 9b25 ldr r3, [sp, #148] ; 0x94 + 2fb5a: 3301 adds r3, #1 + 2fb5c: 4432 add r2, r6 + 2fb5e: 2b07 cmp r3, #7 + 2fb60: e9ca 4600 strd r4, r6, [sl] + 2fb64: 9226 str r2, [sp, #152] ; 0x98 + 2fb66: 9325 str r3, [sp, #148] ; 0x94 + 2fb68: f300 8689 bgt.w 3087e <_svfprintf_r+0x17fe> + 2fb6c: f10a 0a08 add.w sl, sl, #8 + 2fb70: 9d0c ldr r5, [sp, #48] ; 0x30 + 2fb72: 2e00 cmp r6, #0 + 2fb74: bfa8 it ge + 2fb76: 1bad subge r5, r5, r6 + 2fb78: 2d00 cmp r5, #0 + 2fb7a: f300 8203 bgt.w 2ff84 <_svfprintf_r+0xf04> + 2fb7e: 9b0c ldr r3, [sp, #48] ; 0x30 + 2fb80: f418 6f80 tst.w r8, #1024 ; 0x400 + 2fb84: 4423 add r3, r4 + 2fb86: 9305 str r3, [sp, #20] + 2fb88: f040 821f bne.w 2ffca <_svfprintf_r+0xf4a> + 2fb8c: 9b1b ldr r3, [sp, #108] ; 0x6c + 2fb8e: 990e ldr r1, [sp, #56] ; 0x38 + 2fb90: 428b cmp r3, r1 + 2fb92: db03 blt.n 2fb9c <_svfprintf_r+0xb1c> + 2fb94: f018 0f01 tst.w r8, #1 + 2fb98: f000 84cf beq.w 3053a <_svfprintf_r+0x14ba> + 2fb9c: 9910 ldr r1, [sp, #64] ; 0x40 + 2fb9e: 9812 ldr r0, [sp, #72] ; 0x48 + 2fba0: 440a add r2, r1 + 2fba2: e9ca 0100 strd r0, r1, [sl] + 2fba6: 9925 ldr r1, [sp, #148] ; 0x94 + 2fba8: 9226 str r2, [sp, #152] ; 0x98 + 2fbaa: 3101 adds r1, #1 + 2fbac: 2907 cmp r1, #7 + 2fbae: 9125 str r1, [sp, #148] ; 0x94 + 2fbb0: f300 86a5 bgt.w 308fe <_svfprintf_r+0x187e> + 2fbb4: f10a 0a08 add.w sl, sl, #8 + 2fbb8: 990e ldr r1, [sp, #56] ; 0x38 + 2fbba: 1865 adds r5, r4, r1 + 2fbbc: 1acc subs r4, r1, r3 + 2fbbe: 9b05 ldr r3, [sp, #20] + 2fbc0: 1aed subs r5, r5, r3 + 2fbc2: 42a5 cmp r5, r4 + 2fbc4: bfa8 it ge + 2fbc6: 4625 movge r5, r4 + 2fbc8: 2d00 cmp r5, #0 + 2fbca: dd0d ble.n 2fbe8 <_svfprintf_r+0xb68> + 2fbcc: f8ca 3000 str.w r3, [sl] + 2fbd0: 9b25 ldr r3, [sp, #148] ; 0x94 + 2fbd2: f8ca 5004 str.w r5, [sl, #4] + 2fbd6: 3301 adds r3, #1 + 2fbd8: 442a add r2, r5 + 2fbda: 2b07 cmp r3, #7 + 2fbdc: 9226 str r2, [sp, #152] ; 0x98 + 2fbde: 9325 str r3, [sp, #148] ; 0x94 + 2fbe0: f300 86bb bgt.w 3095a <_svfprintf_r+0x18da> + 2fbe4: f10a 0a08 add.w sl, sl, #8 + 2fbe8: 2d00 cmp r5, #0 + 2fbea: bfa8 it ge + 2fbec: 1b64 subge r4, r4, r5 + 2fbee: 2c00 cmp r4, #0 + 2fbf0: f77f abde ble.w 2f3b0 <_svfprintf_r+0x330> + 2fbf4: 2c10 cmp r4, #16 + 2fbf6: 9b25 ldr r3, [sp, #148] ; 0x94 + 2fbf8: f340 837c ble.w 302f4 <_svfprintf_r+0x1274> + 2fbfc: ee1b 6a10 vmov r6, s22 + 2fc00: 2510 movs r5, #16 + 2fc02: e005 b.n 2fc10 <_svfprintf_r+0xb90> + 2fc04: f10a 0a08 add.w sl, sl, #8 + 2fc08: 3c10 subs r4, #16 + 2fc0a: 2c10 cmp r4, #16 + 2fc0c: f340 8372 ble.w 302f4 <_svfprintf_r+0x1274> + 2fc10: 3301 adds r3, #1 + 2fc12: 4970 ldr r1, [pc, #448] ; (2fdd4 <_svfprintf_r+0xd54>) + 2fc14: 3210 adds r2, #16 + 2fc16: 2b07 cmp r3, #7 + 2fc18: e9ca 1500 strd r1, r5, [sl] + 2fc1c: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2fc20: ddf0 ble.n 2fc04 <_svfprintf_r+0xb84> + 2fc22: aa24 add r2, sp, #144 ; 0x90 + 2fc24: 4631 mov r1, r6 + 2fc26: 4658 mov r0, fp + 2fc28: f002 fcf0 bl 3260c <__ssprint_r> + 2fc2c: 2800 cmp r0, #0 + 2fc2e: f47f ae8c bne.w 2f94a <_svfprintf_r+0x8ca> + 2fc32: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 2fc36: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2fc3a: e7e5 b.n 2fc08 <_svfprintf_r+0xb88> + 2fc3c: 2b30 cmp r3, #48 ; 0x30 + 2fc3e: f43f ad8b beq.w 2f758 <_svfprintf_r+0x6d8> + 2fc42: 2330 movs r3, #48 ; 0x30 + 2fc44: 3802 subs r0, #2 + 2fc46: f804 3c01 strb.w r3, [r4, #-1] + 2fc4a: ab50 add r3, sp, #320 ; 0x140 + 2fc4c: 1a1b subs r3, r3, r0 + 2fc4e: f8dd 8008 ldr.w r8, [sp, #8] + 2fc52: 9305 str r3, [sp, #20] + 2fc54: 4604 mov r4, r0 + 2fc56: e584 b.n 2f762 <_svfprintf_r+0x6e2> + 2fc58: f018 0f01 tst.w r8, #1 + 2fc5c: f47f ae82 bne.w 2f964 <_svfprintf_r+0x8e4> + 2fc60: 9b25 ldr r3, [sp, #148] ; 0x94 + 2fc62: f8ca 4000 str.w r4, [sl] + 2fc66: 3301 adds r3, #1 + 2fc68: 3201 adds r2, #1 + 2fc6a: 2101 movs r1, #1 + 2fc6c: 2b07 cmp r3, #7 + 2fc6e: 9226 str r2, [sp, #152] ; 0x98 + 2fc70: 9325 str r3, [sp, #148] ; 0x94 + 2fc72: f8ca 1004 str.w r1, [sl, #4] + 2fc76: f77f aea5 ble.w 2f9c4 <_svfprintf_r+0x944> + 2fc7a: ee1b 1a10 vmov r1, s22 + 2fc7e: aa24 add r2, sp, #144 ; 0x90 + 2fc80: 4658 mov r0, fp + 2fc82: f002 fcc3 bl 3260c <__ssprint_r> + 2fc86: 2800 cmp r0, #0 + 2fc88: f47f ae5f bne.w 2f94a <_svfprintf_r+0x8ca> + 2fc8c: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 2fc90: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2fc94: e698 b.n 2f9c8 <_svfprintf_r+0x948> + 2fc96: 990e ldr r1, [sp, #56] ; 0x38 + 2fc98: 1e4c subs r4, r1, #1 + 2fc9a: 2c00 cmp r4, #0 + 2fc9c: f77f ae94 ble.w 2f9c8 <_svfprintf_r+0x948> + 2fca0: 2c10 cmp r4, #16 + 2fca2: f340 8361 ble.w 30368 <_svfprintf_r+0x12e8> + 2fca6: ee1b 6a10 vmov r6, s22 + 2fcaa: 2510 movs r5, #16 + 2fcac: e005 b.n 2fcba <_svfprintf_r+0xc3a> + 2fcae: f10a 0a08 add.w sl, sl, #8 + 2fcb2: 3c10 subs r4, #16 + 2fcb4: 2c10 cmp r4, #16 + 2fcb6: f340 8357 ble.w 30368 <_svfprintf_r+0x12e8> + 2fcba: 3301 adds r3, #1 + 2fcbc: 4945 ldr r1, [pc, #276] ; (2fdd4 <_svfprintf_r+0xd54>) + 2fcbe: 3210 adds r2, #16 + 2fcc0: 2b07 cmp r3, #7 + 2fcc2: e9ca 1500 strd r1, r5, [sl] + 2fcc6: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2fcca: ddf0 ble.n 2fcae <_svfprintf_r+0xc2e> + 2fccc: aa24 add r2, sp, #144 ; 0x90 + 2fcce: 4631 mov r1, r6 + 2fcd0: 4658 mov r0, fp + 2fcd2: f002 fc9b bl 3260c <__ssprint_r> + 2fcd6: 2800 cmp r0, #0 + 2fcd8: f47f ae37 bne.w 2f94a <_svfprintf_r+0x8ca> + 2fcdc: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 2fce0: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2fce4: e7e5 b.n 2fcb2 <_svfprintf_r+0xc32> + 2fce6: ee1b 1a10 vmov r1, s22 + 2fcea: aa24 add r2, sp, #144 ; 0x90 + 2fcec: 4658 mov r0, fp + 2fcee: f002 fc8d bl 3260c <__ssprint_r> + 2fcf2: 2800 cmp r0, #0 + 2fcf4: f47f ae29 bne.w 2f94a <_svfprintf_r+0x8ca> + 2fcf8: 9a26 ldr r2, [sp, #152] ; 0x98 + 2fcfa: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2fcfe: f7ff bb44 b.w 2f38a <_svfprintf_r+0x30a> + 2fd02: 9b02 ldr r3, [sp, #8] + 2fd04: f013 0310 ands.w r3, r3, #16 + 2fd08: f040 80c1 bne.w 2fe8e <_svfprintf_r+0xe0e> + 2fd0c: 9a02 ldr r2, [sp, #8] + 2fd0e: f012 0240 ands.w r2, r2, #64 ; 0x40 + 2fd12: f000 837a beq.w 3040a <_svfprintf_r+0x138a> + 2fd16: 9808 ldr r0, [sp, #32] + 2fd18: f850 2b04 ldr.w r2, [r0], #4 + 2fd1c: 9008 str r0, [sp, #32] + 2fd1e: 4619 mov r1, r3 + 2fd20: b292 uxth r2, r2 + 2fd22: 2301 movs r3, #1 + 2fd24: e451 b.n 2f5ca <_svfprintf_r+0x54a> + 2fd26: f018 0310 ands.w r3, r8, #16 + 2fd2a: d155 bne.n 2fdd8 <_svfprintf_r+0xd58> + 2fd2c: f018 0240 ands.w r2, r8, #64 ; 0x40 + 2fd30: f000 835d beq.w 303ee <_svfprintf_r+0x136e> + 2fd34: 9808 ldr r0, [sp, #32] + 2fd36: f850 2b04 ldr.w r2, [r0], #4 + 2fd3a: 9008 str r0, [sp, #32] + 2fd3c: 4619 mov r1, r3 + 2fd3e: b292 uxth r2, r2 + 2fd40: e4a8 b.n 2f694 <_svfprintf_r+0x614> + 2fd42: 4252 negs r2, r2 + 2fd44: eb61 0141 sbc.w r1, r1, r1, lsl #1 + 2fd48: f8cd 8008 str.w r8, [sp, #8] + 2fd4c: 202d movs r0, #45 ; 0x2d + 2fd4e: 2301 movs r3, #1 + 2fd50: e43c b.n 2f5cc <_svfprintf_r+0x54c> + 2fd52: ee1b 1a10 vmov r1, s22 + 2fd56: aa24 add r2, sp, #144 ; 0x90 + 2fd58: 4658 mov r0, fp + 2fd5a: f002 fc57 bl 3260c <__ssprint_r> + 2fd5e: 2800 cmp r0, #0 + 2fd60: f47f adf3 bne.w 2f94a <_svfprintf_r+0x8ca> + 2fd64: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 2fd68: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2fd6c: e616 b.n 2f99c <_svfprintf_r+0x91c> + 2fd6e: ee1b 1a10 vmov r1, s22 + 2fd72: aa24 add r2, sp, #144 ; 0x90 + 2fd74: 4658 mov r0, fp + 2fd76: f002 fc49 bl 3260c <__ssprint_r> + 2fd7a: 2800 cmp r0, #0 + 2fd7c: f47f ade5 bne.w 2f94a <_svfprintf_r+0x8ca> + 2fd80: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 2fd84: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2fd88: e5fb b.n 2f982 <_svfprintf_r+0x902> + 2fd8a: f018 0f01 tst.w r8, #1 + 2fd8e: f43f ab0f beq.w 2f3b0 <_svfprintf_r+0x330> + 2fd92: e52a b.n 2f7ea <_svfprintf_r+0x76a> 2fd94: 9308 str r3, [sp, #32] - 2fd96: 2301 movs r3, #1 - 2fd98: f7ff bb97 b.w 2f4ca <_svfprintf_r+0x54a> - 2fd9c: 9b13 ldr r3, [sp, #76] ; 0x4c - 2fd9e: 2b00 cmp r3, #0 - 2fda0: f43f a9cf beq.w 2f142 <_svfprintf_r+0x1c2> - 2fda4: 9b13 ldr r3, [sp, #76] ; 0x4c - 2fda6: 781b ldrb r3, [r3, #0] - 2fda8: 2b00 cmp r3, #0 - 2fdaa: f43f a9ca beq.w 2f142 <_svfprintf_r+0x1c2> - 2fdae: f899 3000 ldrb.w r3, [r9] - 2fdb2: f448 6880 orr.w r8, r8, #1024 ; 0x400 - 2fdb6: f7ff b93f b.w 2f038 <_svfprintf_r+0xb8> - 2fdba: 930b str r3, [sp, #44] ; 0x2c - 2fdbc: f8cd 8008 str.w r8, [sp, #8] - 2fdc0: f7ff bbf1 b.w 2f5a6 <_svfprintf_r+0x626> - 2fdc4: 930b str r3, [sp, #44] ; 0x2c - 2fdc6: 4b9a ldr r3, [pc, #616] ; (30030 <_svfprintf_r+0x10b0>) - 2fdc8: 9311 str r3, [sp, #68] ; 0x44 - 2fdca: f018 0120 ands.w r1, r8, #32 - 2fdce: f000 8105 beq.w 2ffdc <_svfprintf_r+0x105c> - 2fdd2: 9b08 ldr r3, [sp, #32] - 2fdd4: 3307 adds r3, #7 - 2fdd6: f023 0307 bic.w r3, r3, #7 - 2fdda: 6859 ldr r1, [r3, #4] - 2fddc: f853 2b08 ldr.w r2, [r3], #8 - 2fde0: 9308 str r3, [sp, #32] - 2fde2: f018 0f01 tst.w r8, #1 - 2fde6: d00a beq.n 2fdfe <_svfprintf_r+0xe7e> - 2fde8: ea52 0301 orrs.w r3, r2, r1 - 2fdec: d007 beq.n 2fdfe <_svfprintf_r+0xe7e> + 2fd96: f899 3000 ldrb.w r3, [r9] + 2fd9a: f7ff b9cd b.w 2f138 <_svfprintf_r+0xb8> + 2fd9e: ac50 add r4, sp, #320 ; 0x140 + 2fda0: e4df b.n 2f762 <_svfprintf_r+0x6e2> + 2fda2: f418 7f00 tst.w r8, #512 ; 0x200 + 2fda6: f040 83db bne.w 30560 <_svfprintf_r+0x14e0> + 2fdaa: f853 2b04 ldr.w r2, [r3], #4 + 2fdae: 9308 str r3, [sp, #32] + 2fdb0: 17d1 asrs r1, r2, #31 + 2fdb2: 460b mov r3, r1 + 2fdb4: f7ff bbb6 b.w 2f524 <_svfprintf_r+0x4a4> + 2fdb8: 9b08 ldr r3, [sp, #32] + 2fdba: 9804 ldr r0, [sp, #16] + 2fdbc: f853 1b04 ldr.w r1, [r3], #4 + 2fdc0: 9308 str r3, [sp, #32] + 2fdc2: 17c2 asrs r2, r0, #31 + 2fdc4: e9c1 0200 strd r0, r2, [r1] + 2fdc8: 464c mov r4, r9 + 2fdca: f7ff b98b b.w 2f0e4 <_svfprintf_r+0x64> + 2fdce: bf00 nop + 2fdd0: 20004554 .word 0x20004554 + 2fdd4: 20004b1c .word 0x20004b1c + 2fdd8: 9b08 ldr r3, [sp, #32] + 2fdda: f853 2b04 ldr.w r2, [r3], #4 + 2fdde: 9308 str r3, [sp, #32] + 2fde0: e458 b.n 2f694 <_svfprintf_r+0x614> + 2fde2: eeb4 8b48 vcmp.f64 d8, d8 + 2fde6: eef1 fa10 vmrs APSR_nzcv, fpscr + 2fdea: f180 8694 bvs.w 30b16 <_svfprintf_r+0x1a96> 2fdee: 9b0b ldr r3, [sp, #44] ; 0x2c - 2fdf0: f88d 3069 strb.w r3, [sp, #105] ; 0x69 - 2fdf4: 2330 movs r3, #48 ; 0x30 - 2fdf6: f048 0802 orr.w r8, r8, #2 - 2fdfa: f88d 3068 strb.w r3, [sp, #104] ; 0x68 - 2fdfe: f428 6380 bic.w r3, r8, #1024 ; 0x400 - 2fe02: 9302 str r3, [sp, #8] - 2fe04: 2302 movs r3, #2 - 2fe06: f7ff bb60 b.w 2f4ca <_svfprintf_r+0x54a> - 2fe0a: 930b str r3, [sp, #44] ; 0x2c - 2fe0c: f7ff bbb6 b.w 2f57c <_svfprintf_r+0x5fc> - 2fe10: 930b str r3, [sp, #44] ; 0x2c - 2fe12: 4b88 ldr r3, [pc, #544] ; (30034 <_svfprintf_r+0x10b4>) - 2fe14: 9311 str r3, [sp, #68] ; 0x44 - 2fe16: e7d8 b.n 2fdca <_svfprintf_r+0xe4a> - 2fe18: 9b08 ldr r3, [sp, #32] - 2fe1a: 2101 movs r1, #1 - 2fe1c: f853 2b04 ldr.w r2, [r3], #4 - 2fe20: 9102 str r1, [sp, #8] - 2fe22: f88d 20dc strb.w r2, [sp, #220] ; 0xdc - 2fe26: 9308 str r3, [sp, #32] - 2fe28: 9105 str r1, [sp, #20] - 2fe2a: ac37 add r4, sp, #220 ; 0xdc - 2fe2c: f7ff baaf b.w 2f38e <_svfprintf_r+0x40e> - 2fe30: ee1b 1a10 vmov r1, s22 - 2fe34: aa24 add r2, sp, #144 ; 0x90 - 2fe36: 4658 mov r0, fp - 2fe38: f002 fb68 bl 3250c <__ssprint_r> - 2fe3c: 2800 cmp r0, #0 - 2fe3e: f47f ad04 bne.w 2f84a <_svfprintf_r+0x8ca> - 2fe42: 9a26 ldr r2, [sp, #152] ; 0x98 - 2fe44: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 2fe48: e45d b.n 2f706 <_svfprintf_r+0x786> - 2fe4a: 9b03 ldr r3, [sp, #12] - 2fe4c: 9407 str r4, [sp, #28] - 2fe4e: 2b06 cmp r3, #6 - 2fe50: 4622 mov r2, r4 - 2fe52: bf28 it cs - 2fe54: 2306 movcs r3, #6 - 2fe56: 9403 str r4, [sp, #12] - 2fe58: 4621 mov r1, r4 - 2fe5a: e9cd 220c strd r2, r2, [sp, #48] ; 0x30 - 2fe5e: 4c76 ldr r4, [pc, #472] ; (30038 <_svfprintf_r+0x10b8>) - 2fe60: 9302 str r3, [sp, #8] - 2fe62: 9305 str r3, [sp, #20] - 2fe64: 920f str r2, [sp, #60] ; 0x3c - 2fe66: f7ff ba6c b.w 2f342 <_svfprintf_r+0x3c2> - 2fe6a: 2140 movs r1, #64 ; 0x40 - 2fe6c: 4658 mov r0, fp - 2fe6e: f7fd fcd9 bl 2d824 <_malloc_r> - 2fe72: 6020 str r0, [r4, #0] - 2fe74: 6120 str r0, [r4, #16] - 2fe76: 2800 cmp r0, #0 - 2fe78: f000 860f beq.w 30a9a <_svfprintf_r+0x1b1a> - 2fe7c: 2340 movs r3, #64 ; 0x40 - 2fe7e: 6163 str r3, [r4, #20] - 2fe80: f7ff b89e b.w 2efc0 <_svfprintf_r+0x40> - 2fe84: 2d10 cmp r5, #16 - 2fe86: 9b25 ldr r3, [sp, #148] ; 0x94 - 2fe88: f340 825d ble.w 30346 <_svfprintf_r+0x13c6> - 2fe8c: 4651 mov r1, sl - 2fe8e: 2610 movs r6, #16 - 2fe90: ee1b aa10 vmov sl, s22 - 2fe94: e004 b.n 2fea0 <_svfprintf_r+0xf20> - 2fe96: 3108 adds r1, #8 - 2fe98: 3d10 subs r5, #16 - 2fe9a: 2d10 cmp r5, #16 - 2fe9c: f340 8252 ble.w 30344 <_svfprintf_r+0x13c4> - 2fea0: 3301 adds r3, #1 - 2fea2: 4866 ldr r0, [pc, #408] ; (3003c <_svfprintf_r+0x10bc>) - 2fea4: 3210 adds r2, #16 - 2fea6: 2b07 cmp r3, #7 - 2fea8: e9c1 0600 strd r0, r6, [r1] - 2feac: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2feb0: ddf1 ble.n 2fe96 <_svfprintf_r+0xf16> - 2feb2: aa24 add r2, sp, #144 ; 0x90 - 2feb4: 4651 mov r1, sl - 2feb6: 4658 mov r0, fp - 2feb8: f002 fb28 bl 3250c <__ssprint_r> - 2febc: 2800 cmp r0, #0 - 2febe: f47f acc4 bne.w 2f84a <_svfprintf_r+0x8ca> - 2fec2: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 2fec6: a927 add r1, sp, #156 ; 0x9c - 2fec8: e7e6 b.n 2fe98 <_svfprintf_r+0xf18> - 2feca: 9b0e ldr r3, [sp, #56] ; 0x38 - 2fecc: f8cd 9024 str.w r9, [sp, #36] ; 0x24 - 2fed0: 18e3 adds r3, r4, r3 - 2fed2: 9303 str r3, [sp, #12] - 2fed4: 9b0d ldr r3, [sp, #52] ; 0x34 - 2fed6: f8cd 8028 str.w r8, [sp, #40] ; 0x28 - 2feda: 9e13 ldr r6, [sp, #76] ; 0x4c - 2fedc: 9d05 ldr r5, [sp, #20] - 2fede: f8dd 9058 ldr.w r9, [sp, #88] ; 0x58 - 2fee2: f8dd 803c ldr.w r8, [sp, #60] ; 0x3c - 2fee6: 940b str r4, [sp, #44] ; 0x2c - 2fee8: ee1b 1a10 vmov r1, s22 - 2feec: 4650 mov r0, sl - 2feee: 2b00 cmp r3, #0 - 2fef0: d034 beq.n 2ff5c <_svfprintf_r+0xfdc> - 2fef2: f1b8 0f00 cmp.w r8, #0 - 2fef6: d135 bne.n 2ff64 <_svfprintf_r+0xfe4> - 2fef8: 9b0d ldr r3, [sp, #52] ; 0x34 - 2fefa: 3b01 subs r3, #1 - 2fefc: 3e01 subs r6, #1 - 2fefe: 930d str r3, [sp, #52] ; 0x34 - 2ff00: 9b15 ldr r3, [sp, #84] ; 0x54 - 2ff02: e9c0 3900 strd r3, r9, [r0] - 2ff06: 9b25 ldr r3, [sp, #148] ; 0x94 - 2ff08: 3301 adds r3, #1 - 2ff0a: 444a add r2, r9 - 2ff0c: 2b07 cmp r3, #7 - 2ff0e: 9226 str r2, [sp, #152] ; 0x98 - 2ff10: 9325 str r3, [sp, #148] ; 0x94 - 2ff12: dc6c bgt.n 2ffee <_svfprintf_r+0x106e> - 2ff14: 3008 adds r0, #8 - 2ff16: 9b03 ldr r3, [sp, #12] - 2ff18: f896 c000 ldrb.w ip, [r6] - 2ff1c: 1b5b subs r3, r3, r5 - 2ff1e: 4563 cmp r3, ip - 2ff20: bfa8 it ge - 2ff22: 4663 movge r3, ip - 2ff24: 2b00 cmp r3, #0 - 2ff26: 469a mov sl, r3 - 2ff28: dd0c ble.n 2ff44 <_svfprintf_r+0xfc4> - 2ff2a: 9c25 ldr r4, [sp, #148] ; 0x94 - 2ff2c: 3401 adds r4, #1 - 2ff2e: 441a add r2, r3 - 2ff30: 2c07 cmp r4, #7 - 2ff32: e9c0 5300 strd r5, r3, [r0] - 2ff36: 9226 str r2, [sp, #152] ; 0x98 - 2ff38: 9425 str r4, [sp, #148] ; 0x94 - 2ff3a: f300 8177 bgt.w 3022c <_svfprintf_r+0x12ac> - 2ff3e: f896 c000 ldrb.w ip, [r6] - 2ff42: 3008 adds r0, #8 - 2ff44: f1ba 0f00 cmp.w sl, #0 - 2ff48: bfac ite ge - 2ff4a: ebac 040a subge.w r4, ip, sl - 2ff4e: 4664 movlt r4, ip - 2ff50: 2c00 cmp r4, #0 - 2ff52: dc0a bgt.n 2ff6a <_svfprintf_r+0xfea> - 2ff54: 4465 add r5, ip - 2ff56: 9b0d ldr r3, [sp, #52] ; 0x34 - 2ff58: 2b00 cmp r3, #0 - 2ff5a: d1ca bne.n 2fef2 <_svfprintf_r+0xf72> - 2ff5c: f1b8 0f00 cmp.w r8, #0 - 2ff60: f000 83ac beq.w 306bc <_svfprintf_r+0x173c> - 2ff64: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff - 2ff68: e7ca b.n 2ff00 <_svfprintf_r+0xf80> - 2ff6a: 2c10 cmp r4, #16 - 2ff6c: f8dd c094 ldr.w ip, [sp, #148] ; 0x94 - 2ff70: dd24 ble.n 2ffbc <_svfprintf_r+0x103c> - 2ff72: 9505 str r5, [sp, #20] - 2ff74: f04f 0a10 mov.w sl, #16 - 2ff78: 4663 mov r3, ip - 2ff7a: 460d mov r5, r1 - 2ff7c: e004 b.n 2ff88 <_svfprintf_r+0x1008> - 2ff7e: 3c10 subs r4, #16 - 2ff80: 2c10 cmp r4, #16 - 2ff82: f100 0008 add.w r0, r0, #8 - 2ff86: dd16 ble.n 2ffb6 <_svfprintf_r+0x1036> - 2ff88: 3301 adds r3, #1 - 2ff8a: 492c ldr r1, [pc, #176] ; (3003c <_svfprintf_r+0x10bc>) - 2ff8c: 3210 adds r2, #16 - 2ff8e: 2b07 cmp r3, #7 - 2ff90: e9c0 1a00 strd r1, sl, [r0] - 2ff94: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2ff98: ddf1 ble.n 2ff7e <_svfprintf_r+0xffe> - 2ff9a: aa24 add r2, sp, #144 ; 0x90 - 2ff9c: 4629 mov r1, r5 - 2ff9e: 4658 mov r0, fp - 2ffa0: f002 fab4 bl 3250c <__ssprint_r> - 2ffa4: 2800 cmp r0, #0 - 2ffa6: f47f ac50 bne.w 2f84a <_svfprintf_r+0x8ca> - 2ffaa: 3c10 subs r4, #16 - 2ffac: 2c10 cmp r4, #16 - 2ffae: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 2ffb2: a827 add r0, sp, #156 ; 0x9c - 2ffb4: dce8 bgt.n 2ff88 <_svfprintf_r+0x1008> - 2ffb6: 4629 mov r1, r5 - 2ffb8: 9d05 ldr r5, [sp, #20] - 2ffba: 469c mov ip, r3 - 2ffbc: f10c 0301 add.w r3, ip, #1 - 2ffc0: 4422 add r2, r4 - 2ffc2: 6044 str r4, [r0, #4] - 2ffc4: 2b07 cmp r3, #7 - 2ffc6: 4c1d ldr r4, [pc, #116] ; (3003c <_svfprintf_r+0x10bc>) - 2ffc8: 6004 str r4, [r0, #0] - 2ffca: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 2ffce: f300 83c6 bgt.w 3075e <_svfprintf_r+0x17de> - 2ffd2: f896 c000 ldrb.w ip, [r6] - 2ffd6: 3008 adds r0, #8 - 2ffd8: 4465 add r5, ip - 2ffda: e7bc b.n 2ff56 <_svfprintf_r+0xfd6> - 2ffdc: f018 0310 ands.w r3, r8, #16 - 2ffe0: f000 80c2 beq.w 30168 <_svfprintf_r+0x11e8> - 2ffe4: 9b08 ldr r3, [sp, #32] - 2ffe6: f853 2b04 ldr.w r2, [r3], #4 - 2ffea: 9308 str r3, [sp, #32] - 2ffec: e6f9 b.n 2fde2 <_svfprintf_r+0xe62> - 2ffee: aa24 add r2, sp, #144 ; 0x90 - 2fff0: 4658 mov r0, fp - 2fff2: 9105 str r1, [sp, #20] - 2fff4: f002 fa8a bl 3250c <__ssprint_r> - 2fff8: 2800 cmp r0, #0 - 2fffa: f47f ac26 bne.w 2f84a <_svfprintf_r+0x8ca> - 2fffe: 9a26 ldr r2, [sp, #152] ; 0x98 - 30000: 9905 ldr r1, [sp, #20] - 30002: a827 add r0, sp, #156 ; 0x9c - 30004: e787 b.n 2ff16 <_svfprintf_r+0xf96> - 30006: 9802 ldr r0, [sp, #8] - 30008: f8cd a01c str.w sl, [sp, #28] - 3000c: ac50 add r4, sp, #320 ; 0x140 - 3000e: f400 6080 and.w r0, r0, #1024 ; 0x400 - 30012: 2500 movs r5, #0 - 30014: ee0a ba10 vmov s20, fp - 30018: 4b09 ldr r3, [pc, #36] ; (30040 <_svfprintf_r+0x10c0>) - 3001a: f8dd a04c ldr.w sl, [sp, #76] ; 0x4c - 3001e: f8cd 9014 str.w r9, [sp, #20] - 30022: 46a3 mov fp, r4 - 30024: f04f 0805 mov.w r8, #5 - 30028: 46ac mov ip, r5 - 3002a: 4604 mov r4, r0 - 3002c: e010 b.n 30050 <_svfprintf_r+0x10d0> - 3002e: bf00 nop - 30030: 20004460 .word 0x20004460 - 30034: 20004474 .word 0x20004474 - 30038: 20004488 .word 0x20004488 - 3003c: 20004a5c .word 0x20004a5c - 30040: cccccccd .word 0xcccccccd - 30044: 2a0a cmp r2, #10 - 30046: f171 0100 sbcs.w r1, r1, #0 - 3004a: d336 bcc.n 300ba <_svfprintf_r+0x113a> - 3004c: 464a mov r2, r9 - 3004e: 4631 mov r1, r6 - 30050: 1850 adds r0, r2, r1 - 30052: f140 0000 adc.w r0, r0, #0 - 30056: fba3 5600 umull r5, r6, r3, r0 - 3005a: f026 0503 bic.w r5, r6, #3 - 3005e: eb05 0596 add.w r5, r5, r6, lsr #2 - 30062: 1b40 subs r0, r0, r5 - 30064: 1a15 subs r5, r2, r0 - 30066: f04f 36cc mov.w r6, #3435973836 ; 0xcccccccc - 3006a: f161 0e00 sbc.w lr, r1, #0 - 3006e: fb06 f605 mul.w r6, r6, r5 - 30072: fba5 9503 umull r9, r5, r5, r3 - 30076: fb03 660e mla r6, r3, lr, r6 - 3007a: f009 0e01 and.w lr, r9, #1 - 3007e: 442e add r6, r5 - 30080: fbae 5e08 umull r5, lr, lr, r8 - 30084: 182d adds r5, r5, r0 - 30086: ea4f 0959 mov.w r9, r9, lsr #1 - 3008a: 3530 adds r5, #48 ; 0x30 - 3008c: f80b 5c01 strb.w r5, [fp, #-1] - 30090: ea49 79c6 orr.w r9, r9, r6, lsl #31 - 30094: f10c 0c01 add.w ip, ip, #1 - 30098: f10b 3bff add.w fp, fp, #4294967295 ; 0xffffffff - 3009c: 0876 lsrs r6, r6, #1 - 3009e: 2c00 cmp r4, #0 - 300a0: d0d0 beq.n 30044 <_svfprintf_r+0x10c4> - 300a2: f89a 0000 ldrb.w r0, [sl] - 300a6: 4584 cmp ip, r0 - 300a8: d1cc bne.n 30044 <_svfprintf_r+0x10c4> - 300aa: f1bc 0fff cmp.w ip, #255 ; 0xff - 300ae: d0c9 beq.n 30044 <_svfprintf_r+0x10c4> - 300b0: 2a0a cmp r2, #10 - 300b2: f171 0100 sbcs.w r1, r1, #0 - 300b6: f080 818f bcs.w 303d8 <_svfprintf_r+0x1458> - 300ba: 465c mov r4, fp - 300bc: ab50 add r3, sp, #320 ; 0x140 - 300be: 1b1b subs r3, r3, r4 - 300c0: f8dd 9014 ldr.w r9, [sp, #20] - 300c4: f8cd a04c str.w sl, [sp, #76] ; 0x4c - 300c8: ee1a ba10 vmov fp, s20 - 300cc: f8dd a01c ldr.w sl, [sp, #28] - 300d0: f8dd 8008 ldr.w r8, [sp, #8] - 300d4: f8cd c038 str.w ip, [sp, #56] ; 0x38 - 300d8: 9305 str r3, [sp, #20] - 300da: f7ff bac2 b.w 2f662 <_svfprintf_r+0x6e2> - 300de: ee1b 1a10 vmov r1, s22 - 300e2: aa24 add r2, sp, #144 ; 0x90 - 300e4: 4658 mov r0, fp - 300e6: f002 fa11 bl 3250c <__ssprint_r> - 300ea: 2800 cmp r0, #0 - 300ec: f47f abad bne.w 2f84a <_svfprintf_r+0x8ca> - 300f0: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 - 300f4: 9a26 ldr r2, [sp, #152] ; 0x98 - 300f6: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 300fa: f7ff b896 b.w 2f22a <_svfprintf_r+0x2aa> - 300fe: 9b25 ldr r3, [sp, #148] ; 0x94 - 30100: 48be ldr r0, [pc, #760] ; (303fc <_svfprintf_r+0x147c>) - 30102: f8ca 0000 str.w r0, [sl] - 30106: 3301 adds r3, #1 - 30108: 3201 adds r2, #1 - 3010a: 2001 movs r0, #1 - 3010c: 2b07 cmp r3, #7 - 3010e: 9226 str r2, [sp, #152] ; 0x98 - 30110: 9325 str r3, [sp, #148] ; 0x94 - 30112: f8ca 0004 str.w r0, [sl, #4] - 30116: f300 8177 bgt.w 30408 <_svfprintf_r+0x1488> - 3011a: f10a 0a08 add.w sl, sl, #8 - 3011e: 2900 cmp r1, #0 - 30120: f040 80af bne.w 30282 <_svfprintf_r+0x1302> - 30124: 990e ldr r1, [sp, #56] ; 0x38 - 30126: f008 0301 and.w r3, r8, #1 - 3012a: 430b orrs r3, r1 - 3012c: f43f a8c0 beq.w 2f2b0 <_svfprintf_r+0x330> - 30130: 9b10 ldr r3, [sp, #64] ; 0x40 - 30132: 9912 ldr r1, [sp, #72] ; 0x48 - 30134: 441a add r2, r3 - 30136: e9ca 1300 strd r1, r3, [sl] - 3013a: 9b25 ldr r3, [sp, #148] ; 0x94 - 3013c: 9226 str r2, [sp, #152] ; 0x98 - 3013e: 3301 adds r3, #1 - 30140: 2b07 cmp r3, #7 - 30142: 9325 str r3, [sp, #148] ; 0x94 - 30144: f300 8252 bgt.w 305ec <_svfprintf_r+0x166c> - 30148: f10a 0a08 add.w sl, sl, #8 - 3014c: 990e ldr r1, [sp, #56] ; 0x38 - 3014e: f8ca 4000 str.w r4, [sl] - 30152: 3301 adds r3, #1 - 30154: 440a add r2, r1 - 30156: 2b07 cmp r3, #7 - 30158: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 3015c: f8ca 1004 str.w r1, [sl, #4] - 30160: f77f a8a4 ble.w 2f2ac <_svfprintf_r+0x32c> - 30164: f7ff bbbd b.w 2f8e2 <_svfprintf_r+0x962> - 30168: f018 0240 ands.w r2, r8, #64 ; 0x40 - 3016c: f000 80dd beq.w 3032a <_svfprintf_r+0x13aa> - 30170: 9808 ldr r0, [sp, #32] - 30172: f850 2b04 ldr.w r2, [r0], #4 - 30176: 9008 str r0, [sp, #32] - 30178: 4619 mov r1, r3 - 3017a: b292 uxth r2, r2 - 3017c: e631 b.n 2fde2 <_svfprintf_r+0xe62> - 3017e: ee1b 1a10 vmov r1, s22 - 30182: aa24 add r2, sp, #144 ; 0x90 - 30184: 4658 mov r0, fp - 30186: f002 f9c1 bl 3250c <__ssprint_r> - 3018a: 2800 cmp r0, #0 - 3018c: f47f ab5d bne.w 2f84a <_svfprintf_r+0x8ca> - 30190: 9a26 ldr r2, [sp, #152] ; 0x98 - 30192: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 30196: f7ff baa3 b.w 2f6e0 <_svfprintf_r+0x760> - 3019a: ae22 add r6, sp, #136 ; 0x88 - 3019c: 2208 movs r2, #8 - 3019e: 2100 movs r1, #0 - 301a0: 4630 mov r0, r6 - 301a2: 941d str r4, [sp, #116] ; 0x74 - 301a4: f7fe f972 bl 2e48c - 301a8: 9b03 ldr r3, [sp, #12] - 301aa: 1c5a adds r2, r3, #1 - 301ac: f000 80db beq.w 30366 <_svfprintf_r+0x13e6> - 301b0: 2500 movs r5, #0 - 301b2: f8cd 9008 str.w r9, [sp, #8] - 301b6: f8cd 801c str.w r8, [sp, #28] - 301ba: 4699 mov r9, r3 - 301bc: 46a8 mov r8, r5 - 301be: e00c b.n 301da <_svfprintf_r+0x125a> - 301c0: a937 add r1, sp, #220 ; 0xdc - 301c2: 4658 mov r0, fp - 301c4: f001 f9f6 bl 315b4 <_wcrtomb_r> - 301c8: 1c43 adds r3, r0, #1 - 301ca: 4440 add r0, r8 - 301cc: f000 83c8 beq.w 30960 <_svfprintf_r+0x19e0> - 301d0: 4548 cmp r0, r9 - 301d2: dc08 bgt.n 301e6 <_svfprintf_r+0x1266> - 301d4: f000 8418 beq.w 30a08 <_svfprintf_r+0x1a88> - 301d8: 4680 mov r8, r0 - 301da: 9a1d ldr r2, [sp, #116] ; 0x74 - 301dc: 5952 ldr r2, [r2, r5] - 301de: 4633 mov r3, r6 - 301e0: 3504 adds r5, #4 - 301e2: 2a00 cmp r2, #0 - 301e4: d1ec bne.n 301c0 <_svfprintf_r+0x1240> - 301e6: f8cd 8014 str.w r8, [sp, #20] - 301ea: f8dd 9008 ldr.w r9, [sp, #8] - 301ee: f8dd 801c ldr.w r8, [sp, #28] - 301f2: e0c5 b.n 30380 <_svfprintf_r+0x1400> - 301f4: 3301 adds r3, #1 - 301f6: 4982 ldr r1, [pc, #520] ; (30400 <_svfprintf_r+0x1480>) - 301f8: f8ca 4004 str.w r4, [sl, #4] - 301fc: 4422 add r2, r4 - 301fe: 2b07 cmp r3, #7 - 30200: f8ca 1000 str.w r1, [sl] - 30204: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 30208: f77f a850 ble.w 2f2ac <_svfprintf_r+0x32c> - 3020c: f7ff bb69 b.w 2f8e2 <_svfprintf_r+0x962> - 30210: ee1b 1a10 vmov r1, s22 - 30214: aa24 add r2, sp, #144 ; 0x90 - 30216: 4658 mov r0, fp - 30218: f002 f978 bl 3250c <__ssprint_r> - 3021c: 2800 cmp r0, #0 - 3021e: f47f ab14 bne.w 2f84a <_svfprintf_r+0x8ca> - 30222: 9a26 ldr r2, [sp, #152] ; 0x98 - 30224: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 30228: f7ff b829 b.w 2f27e <_svfprintf_r+0x2fe> - 3022c: aa24 add r2, sp, #144 ; 0x90 - 3022e: 4658 mov r0, fp - 30230: 9105 str r1, [sp, #20] - 30232: f002 f96b bl 3250c <__ssprint_r> - 30236: 2800 cmp r0, #0 - 30238: f47f ab07 bne.w 2f84a <_svfprintf_r+0x8ca> - 3023c: f896 c000 ldrb.w ip, [r6] - 30240: 9a26 ldr r2, [sp, #152] ; 0x98 - 30242: 9905 ldr r1, [sp, #20] - 30244: a827 add r0, sp, #156 ; 0x9c - 30246: e67d b.n 2ff44 <_svfprintf_r+0xfc4> - 30248: 2b01 cmp r3, #1 - 3024a: f8cd 8008 str.w r8, [sp, #8] - 3024e: f47f a9f3 bne.w 2f638 <_svfprintf_r+0x6b8> - 30252: f7ff bb93 b.w 2f97c <_svfprintf_r+0x9fc> - 30256: 9b08 ldr r3, [sp, #32] - 30258: 9904 ldr r1, [sp, #16] - 3025a: f853 2b04 ldr.w r2, [r3], #4 - 3025e: 464c mov r4, r9 - 30260: 6011 str r1, [r2, #0] - 30262: 9308 str r3, [sp, #32] - 30264: f7fe bebe b.w 2efe4 <_svfprintf_r+0x64> - 30268: 3301 adds r3, #1 - 3026a: 4965 ldr r1, [pc, #404] ; (30400 <_svfprintf_r+0x1480>) - 3026c: f8ca 4004 str.w r4, [sl, #4] - 30270: 4422 add r2, r4 - 30272: 2b07 cmp r3, #7 - 30274: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 30278: f8ca 1000 str.w r1, [sl] - 3027c: f77f ab22 ble.w 2f8c4 <_svfprintf_r+0x944> - 30280: e47b b.n 2fb7a <_svfprintf_r+0xbfa> - 30282: 9b10 ldr r3, [sp, #64] ; 0x40 - 30284: 9812 ldr r0, [sp, #72] ; 0x48 - 30286: 441a add r2, r3 - 30288: e9ca 0300 strd r0, r3, [sl] - 3028c: 9b25 ldr r3, [sp, #148] ; 0x94 - 3028e: 9226 str r2, [sp, #152] ; 0x98 - 30290: 3301 adds r3, #1 - 30292: 2b07 cmp r3, #7 - 30294: 9325 str r3, [sp, #148] ; 0x94 - 30296: f300 81a9 bgt.w 305ec <_svfprintf_r+0x166c> - 3029a: f10a 0a08 add.w sl, sl, #8 - 3029e: 2900 cmp r1, #0 - 302a0: f6bf af54 bge.w 3014c <_svfprintf_r+0x11cc> - 302a4: 424d negs r5, r1 - 302a6: 3110 adds r1, #16 - 302a8: f280 830f bge.w 308ca <_svfprintf_r+0x194a> - 302ac: ee1b 1a10 vmov r1, s22 - 302b0: 2610 movs r6, #16 - 302b2: e005 b.n 302c0 <_svfprintf_r+0x1340> - 302b4: f10a 0a08 add.w sl, sl, #8 - 302b8: 3d10 subs r5, #16 - 302ba: 2d10 cmp r5, #16 - 302bc: f340 8305 ble.w 308ca <_svfprintf_r+0x194a> - 302c0: 3301 adds r3, #1 - 302c2: 484f ldr r0, [pc, #316] ; (30400 <_svfprintf_r+0x1480>) - 302c4: 3210 adds r2, #16 - 302c6: 2b07 cmp r3, #7 - 302c8: e9ca 0600 strd r0, r6, [sl] - 302cc: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 302d0: ddf0 ble.n 302b4 <_svfprintf_r+0x1334> - 302d2: aa24 add r2, sp, #144 ; 0x90 - 302d4: 4658 mov r0, fp - 302d6: 9103 str r1, [sp, #12] - 302d8: f002 f918 bl 3250c <__ssprint_r> - 302dc: 2800 cmp r0, #0 - 302de: f47f aab4 bne.w 2f84a <_svfprintf_r+0x8ca> - 302e2: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 302e6: 9903 ldr r1, [sp, #12] - 302e8: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 302ec: e7e4 b.n 302b8 <_svfprintf_r+0x1338> - 302ee: 9b08 ldr r3, [sp, #32] - 302f0: f418 7100 ands.w r1, r8, #512 ; 0x200 - 302f4: bf1a itte ne - 302f6: 4611 movne r1, r2 - 302f8: f853 2b04 ldrne.w r2, [r3], #4 - 302fc: f853 2b04 ldreq.w r2, [r3], #4 - 30300: 9308 str r3, [sp, #32] - 30302: bf18 it ne - 30304: b2d2 uxtbne r2, r2 - 30306: f7ff b945 b.w 2f594 <_svfprintf_r+0x614> - 3030a: 9b02 ldr r3, [sp, #8] - 3030c: f413 7100 ands.w r1, r3, #512 ; 0x200 - 30310: 9b08 ldr r3, [sp, #32] - 30312: bf1a itte ne - 30314: 4611 movne r1, r2 - 30316: f853 2b04 ldrne.w r2, [r3], #4 - 3031a: f853 2b04 ldreq.w r2, [r3], #4 - 3031e: 9308 str r3, [sp, #32] - 30320: bf18 it ne - 30322: b2d2 uxtbne r2, r2 - 30324: 2301 movs r3, #1 - 30326: f7ff b8d0 b.w 2f4ca <_svfprintf_r+0x54a> - 3032a: 9b08 ldr r3, [sp, #32] - 3032c: f418 7100 ands.w r1, r8, #512 ; 0x200 - 30330: bf1a itte ne - 30332: 4611 movne r1, r2 - 30334: f853 2b04 ldrne.w r2, [r3], #4 - 30338: f853 2b04 ldreq.w r2, [r3], #4 - 3033c: 9308 str r3, [sp, #32] - 3033e: bf18 it ne - 30340: b2d2 uxtbne r2, r2 - 30342: e54e b.n 2fde2 <_svfprintf_r+0xe62> - 30344: 468a mov sl, r1 - 30346: 3301 adds r3, #1 - 30348: 492d ldr r1, [pc, #180] ; (30400 <_svfprintf_r+0x1480>) - 3034a: f8ca 5004 str.w r5, [sl, #4] - 3034e: 442a add r2, r5 - 30350: 2b07 cmp r3, #7 - 30352: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 30356: f8ca 1000 str.w r1, [sl] - 3035a: f300 8139 bgt.w 305d0 <_svfprintf_r+0x1650> - 3035e: f10a 0a08 add.w sl, sl, #8 - 30362: f7ff bb8c b.w 2fa7e <_svfprintf_r+0xafe> - 30366: 2300 movs r3, #0 - 30368: 4619 mov r1, r3 - 3036a: 9600 str r6, [sp, #0] - 3036c: aa1d add r2, sp, #116 ; 0x74 - 3036e: 4658 mov r0, fp - 30370: f001 f946 bl 31600 <_wcsrtombs_r> - 30374: 4603 mov r3, r0 - 30376: 3301 adds r3, #1 - 30378: 9005 str r0, [sp, #20] - 3037a: f000 82f1 beq.w 30960 <_svfprintf_r+0x19e0> - 3037e: 941d str r4, [sp, #116] ; 0x74 - 30380: 9b05 ldr r3, [sp, #20] - 30382: 2b00 cmp r3, #0 - 30384: d04e beq.n 30424 <_svfprintf_r+0x14a4> - 30386: 2b63 cmp r3, #99 ; 0x63 - 30388: f300 8118 bgt.w 305bc <_svfprintf_r+0x163c> - 3038c: 2300 movs r3, #0 - 3038e: 9307 str r3, [sp, #28] - 30390: ac37 add r4, sp, #220 ; 0xdc - 30392: 2208 movs r2, #8 - 30394: 2100 movs r1, #0 - 30396: 4630 mov r0, r6 - 30398: f7fe f878 bl 2e48c - 3039c: 9d05 ldr r5, [sp, #20] - 3039e: 9600 str r6, [sp, #0] - 303a0: 462b mov r3, r5 - 303a2: aa1d add r2, sp, #116 ; 0x74 - 303a4: 4621 mov r1, r4 - 303a6: 4658 mov r0, fp - 303a8: f001 f92a bl 31600 <_wcsrtombs_r> - 303ac: 4285 cmp r5, r0 - 303ae: f040 837c bne.w 30aaa <_svfprintf_r+0x1b2a> - 303b2: 9a05 ldr r2, [sp, #20] - 303b4: 2300 movs r3, #0 - 303b6: 54a3 strb r3, [r4, r2] - 303b8: ea22 72e2 bic.w r2, r2, r2, asr #31 - 303bc: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 - 303c0: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 - 303c4: 9303 str r3, [sp, #12] - 303c6: 9202 str r2, [sp, #8] - 303c8: 930f str r3, [sp, #60] ; 0x3c - 303ca: f7fe bfba b.w 2f342 <_svfprintf_r+0x3c2> - 303ce: 212d movs r1, #45 ; 0x2d - 303d0: f88d 1067 strb.w r1, [sp, #103] ; 0x67 - 303d4: f7fe bfa4 b.w 2f320 <_svfprintf_r+0x3a0> - 303d8: 9b16 ldr r3, [sp, #88] ; 0x58 - 303da: 9915 ldr r1, [sp, #84] ; 0x54 - 303dc: ebab 0b03 sub.w fp, fp, r3 - 303e0: 461a mov r2, r3 - 303e2: 4658 mov r0, fp - 303e4: f7fe f8c4 bl 2e570 - 303e8: f89a 2001 ldrb.w r2, [sl, #1] - 303ec: 4b05 ldr r3, [pc, #20] ; (30404 <_svfprintf_r+0x1484>) - 303ee: b10a cbz r2, 303f4 <_svfprintf_r+0x1474> - 303f0: f10a 0a01 add.w sl, sl, #1 - 303f4: f04f 0c00 mov.w ip, #0 - 303f8: e628 b.n 3004c <_svfprintf_r+0x10cc> - 303fa: bf00 nop - 303fc: 20004490 .word 0x20004490 - 30400: 20004a5c .word 0x20004a5c - 30404: cccccccd .word 0xcccccccd - 30408: ee1b 1a10 vmov r1, s22 - 3040c: aa24 add r2, sp, #144 ; 0x90 - 3040e: 4658 mov r0, fp - 30410: f002 f87c bl 3250c <__ssprint_r> - 30414: 2800 cmp r0, #0 - 30416: f47f aa18 bne.w 2f84a <_svfprintf_r+0x8ca> - 3041a: 991b ldr r1, [sp, #108] ; 0x6c - 3041c: 9a26 ldr r2, [sp, #152] ; 0x98 - 3041e: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 30422: e67c b.n 3011e <_svfprintf_r+0x119e> - 30424: 9b05 ldr r3, [sp, #20] - 30426: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 - 3042a: 930f str r3, [sp, #60] ; 0x3c - 3042c: e9cd 3302 strd r3, r3, [sp, #8] - 30430: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 - 30434: 9307 str r3, [sp, #28] - 30436: f7fe bf84 b.w 2f342 <_svfprintf_r+0x3c2> - 3043a: 990e ldr r1, [sp, #56] ; 0x38 - 3043c: 9805 ldr r0, [sp, #20] - 3043e: 1865 adds r5, r4, r1 - 30440: 1a2d subs r5, r5, r0 - 30442: 1acc subs r4, r1, r3 - 30444: 42a5 cmp r5, r4 - 30446: bfa8 it ge - 30448: 4625 movge r5, r4 - 3044a: f7ff bb4d b.w 2fae8 <_svfprintf_r+0xb68> - 3044e: 9b08 ldr r3, [sp, #32] - 30450: 9904 ldr r1, [sp, #16] - 30452: f853 2b04 ldr.w r2, [r3], #4 - 30456: 9308 str r3, [sp, #32] - 30458: 8011 strh r1, [r2, #0] - 3045a: 464c mov r4, r9 - 3045c: f7fe bdc2 b.w 2efe4 <_svfprintf_r+0x64> - 30460: f913 2b04 ldrsb.w r2, [r3], #4 - 30464: 9308 str r3, [sp, #32] - 30466: 17d1 asrs r1, r2, #31 - 30468: 460b mov r3, r1 - 3046a: f7fe bfdb b.w 2f424 <_svfprintf_r+0x4a4> - 3046e: 9a03 ldr r2, [sp, #12] - 30470: 2102 movs r1, #2 - 30472: ab22 add r3, sp, #136 ; 0x88 - 30474: 9301 str r3, [sp, #4] - 30476: ab1d add r3, sp, #116 ; 0x74 - 30478: 9300 str r3, [sp, #0] - 3047a: 4658 mov r0, fp - 3047c: ab1b add r3, sp, #108 ; 0x6c - 3047e: eeb0 0b4a vmov.f64 d0, d10 - 30482: 9202 str r2, [sp, #8] - 30484: f001 f9b8 bl 317f8 <_dtoa_r> - 30488: 2d47 cmp r5, #71 ; 0x47 - 3048a: 9a02 ldr r2, [sp, #8] - 3048c: 4604 mov r4, r0 - 3048e: f000 8161 beq.w 30754 <_svfprintf_r+0x17d4> - 30492: 2d46 cmp r5, #70 ; 0x46 - 30494: 4410 add r0, r2 - 30496: d105 bne.n 304a4 <_svfprintf_r+0x1524> - 30498: 7823 ldrb r3, [r4, #0] - 3049a: 2b30 cmp r3, #48 ; 0x30 - 3049c: f000 826f beq.w 3097e <_svfprintf_r+0x19fe> - 304a0: 9a1b ldr r2, [sp, #108] ; 0x6c - 304a2: 4410 add r0, r2 - 304a4: eeb5 ab40 vcmp.f64 d10, #0.0 - 304a8: eef1 fa10 vmrs APSR_nzcv, fpscr - 304ac: f040 8146 bne.w 3073c <_svfprintf_r+0x17bc> - 304b0: 4603 mov r3, r0 - 304b2: 1b1b subs r3, r3, r4 - 304b4: 930e str r3, [sp, #56] ; 0x38 - 304b6: 2d47 cmp r5, #71 ; 0x47 - 304b8: f000 8110 beq.w 306dc <_svfprintf_r+0x175c> - 304bc: 2d46 cmp r5, #70 ; 0x46 - 304be: f000 81b5 beq.w 3082c <_svfprintf_r+0x18ac> - 304c2: 9b1b ldr r3, [sp, #108] ; 0x6c - 304c4: 930c str r3, [sp, #48] ; 0x30 - 304c6: 9b0c ldr r3, [sp, #48] ; 0x30 - 304c8: 2d41 cmp r5, #65 ; 0x41 - 304ca: f103 33ff add.w r3, r3, #4294967295 ; 0xffffffff - 304ce: 931b str r3, [sp, #108] ; 0x6c - 304d0: f000 81e5 beq.w 3089e <_svfprintf_r+0x191e> - 304d4: f89d 202c ldrb.w r2, [sp, #44] ; 0x2c - 304d8: 2100 movs r1, #0 - 304da: 2b00 cmp r3, #0 - 304dc: bfb8 it lt - 304de: 9b0c ldrlt r3, [sp, #48] ; 0x30 - 304e0: f88d 2078 strb.w r2, [sp, #120] ; 0x78 - 304e4: bfba itte lt - 304e6: f1c3 0301 rsblt r3, r3, #1 - 304ea: 222d movlt r2, #45 ; 0x2d - 304ec: 222b movge r2, #43 ; 0x2b - 304ee: 2b09 cmp r3, #9 - 304f0: f88d 2079 strb.w r2, [sp, #121] ; 0x79 - 304f4: f340 81da ble.w 308ac <_svfprintf_r+0x192c> - 304f8: f10d 058f add.w r5, sp, #143 ; 0x8f - 304fc: f8df c41c ldr.w ip, [pc, #1052] ; 3091c <_svfprintf_r+0x199c> - 30500: 462a mov r2, r5 - 30502: 4610 mov r0, r2 - 30504: fb8c 2103 smull r2, r1, ip, r3 - 30508: 17da asrs r2, r3, #31 - 3050a: ebc2 02a1 rsb r2, r2, r1, asr #2 - 3050e: eb02 0182 add.w r1, r2, r2, lsl #2 - 30512: eba3 0141 sub.w r1, r3, r1, lsl #1 - 30516: 3130 adds r1, #48 ; 0x30 - 30518: f800 1c01 strb.w r1, [r0, #-1] - 3051c: 4619 mov r1, r3 - 3051e: 2963 cmp r1, #99 ; 0x63 - 30520: 4613 mov r3, r2 - 30522: f100 32ff add.w r2, r0, #4294967295 ; 0xffffffff - 30526: dcec bgt.n 30502 <_svfprintf_r+0x1582> - 30528: 3330 adds r3, #48 ; 0x30 - 3052a: b2d9 uxtb r1, r3 - 3052c: 1e83 subs r3, r0, #2 - 3052e: 429d cmp r5, r3 - 30530: f802 1c01 strb.w r1, [r2, #-1] - 30534: f240 828b bls.w 30a4e <_svfprintf_r+0x1ace> - 30538: 4613 mov r3, r2 - 3053a: f10d 027a add.w r2, sp, #122 ; 0x7a - 3053e: e001 b.n 30544 <_svfprintf_r+0x15c4> - 30540: f813 1b01 ldrb.w r1, [r3], #1 - 30544: f802 1b01 strb.w r1, [r2], #1 - 30548: 429d cmp r5, r3 - 3054a: d1f9 bne.n 30540 <_svfprintf_r+0x15c0> - 3054c: f10d 0391 add.w r3, sp, #145 ; 0x91 - 30550: f10d 027a add.w r2, sp, #122 ; 0x7a - 30554: 1a1b subs r3, r3, r0 - 30556: 4413 add r3, r2 - 30558: aa1e add r2, sp, #120 ; 0x78 - 3055a: 1a9b subs r3, r3, r2 - 3055c: 9314 str r3, [sp, #80] ; 0x50 - 3055e: 9b0e ldr r3, [sp, #56] ; 0x38 - 30560: 9a14 ldr r2, [sp, #80] ; 0x50 - 30562: 2b01 cmp r3, #1 - 30564: 441a add r2, r3 - 30566: 9205 str r2, [sp, #20] - 30568: f340 8203 ble.w 30972 <_svfprintf_r+0x19f2> - 3056c: 9b05 ldr r3, [sp, #20] - 3056e: 9a10 ldr r2, [sp, #64] ; 0x40 - 30570: 4413 add r3, r2 - 30572: 9305 str r3, [sp, #20] - 30574: f426 6380 bic.w r3, r6, #1024 ; 0x400 - 30578: 9a05 ldr r2, [sp, #20] - 3057a: f443 7880 orr.w r8, r3, #256 ; 0x100 - 3057e: 2300 movs r3, #0 - 30580: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 - 30584: ea22 72e2 bic.w r2, r2, r2, asr #31 - 30588: 930f str r3, [sp, #60] ; 0x3c - 3058a: 9202 str r2, [sp, #8] - 3058c: 9b09 ldr r3, [sp, #36] ; 0x24 - 3058e: 2b00 cmp r3, #0 - 30590: f040 80b1 bne.w 306f6 <_svfprintf_r+0x1776> - 30594: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 - 30598: 9303 str r3, [sp, #12] - 3059a: f7fe bed2 b.w 2f342 <_svfprintf_r+0x3c2> - 3059e: 4620 mov r0, r4 - 305a0: f7fe face bl 2eb40 - 305a4: 4602 mov r2, r0 - 305a6: 9005 str r0, [sp, #20] - 305a8: f7fe bf20 b.w 2f3ec <_svfprintf_r+0x46c> - 305ac: ee1b 1a10 vmov r1, s22 - 305b0: aa24 add r2, sp, #144 ; 0x90 - 305b2: 4658 mov r0, fp - 305b4: f001 ffaa bl 3250c <__ssprint_r> - 305b8: f7fe bded b.w 2f196 <_svfprintf_r+0x216> - 305bc: 1c59 adds r1, r3, #1 - 305be: 4658 mov r0, fp - 305c0: f7fd f930 bl 2d824 <_malloc_r> - 305c4: 4604 mov r4, r0 - 305c6: 2800 cmp r0, #0 - 305c8: f000 81ca beq.w 30960 <_svfprintf_r+0x19e0> - 305cc: 9007 str r0, [sp, #28] - 305ce: e6e0 b.n 30392 <_svfprintf_r+0x1412> - 305d0: ee1b 1a10 vmov r1, s22 - 305d4: aa24 add r2, sp, #144 ; 0x90 - 305d6: 4658 mov r0, fp - 305d8: f001 ff98 bl 3250c <__ssprint_r> - 305dc: 2800 cmp r0, #0 - 305de: f47f a934 bne.w 2f84a <_svfprintf_r+0x8ca> - 305e2: 9a26 ldr r2, [sp, #152] ; 0x98 - 305e4: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 305e8: f7ff ba49 b.w 2fa7e <_svfprintf_r+0xafe> - 305ec: ee1b 1a10 vmov r1, s22 - 305f0: aa24 add r2, sp, #144 ; 0x90 - 305f2: 4658 mov r0, fp - 305f4: f001 ff8a bl 3250c <__ssprint_r> - 305f8: 2800 cmp r0, #0 - 305fa: f47f a926 bne.w 2f84a <_svfprintf_r+0x8ca> - 305fe: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 30602: 991b ldr r1, [sp, #108] ; 0x6c - 30604: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 30608: e649 b.n 3029e <_svfprintf_r+0x131e> - 3060a: 2306 movs r3, #6 - 3060c: 9303 str r3, [sp, #12] - 3060e: f7ff bb83 b.w 2fd18 <_svfprintf_r+0xd98> - 30612: 9b03 ldr r3, [sp, #12] - 30614: 2102 movs r1, #2 - 30616: 1c5a adds r2, r3, #1 - 30618: e72b b.n 30472 <_svfprintf_r+0x14f2> - 3061a: 9a03 ldr r2, [sp, #12] - 3061c: 2103 movs r1, #3 - 3061e: e728 b.n 30472 <_svfprintf_r+0x14f2> - 30620: a81b add r0, sp, #108 ; 0x6c - 30622: eeb0 0b4a vmov.f64 d0, d10 - 30626: f000 fff7 bl 31618 - 3062a: eeb4 7b00 vmov.f64 d7, #64 ; 0x3e000000 0.125 - 3062e: ee20 0b07 vmul.f64 d0, d0, d7 - 30632: eeb5 0b40 vcmp.f64 d0, #0.0 - 30636: eef1 fa10 vmrs APSR_nzcv, fpscr - 3063a: d101 bne.n 30640 <_svfprintf_r+0x16c0> - 3063c: 2301 movs r3, #1 - 3063e: 931b str r3, [sp, #108] ; 0x6c - 30640: 48b3 ldr r0, [pc, #716] ; (30910 <_svfprintf_r+0x1990>) - 30642: 9b03 ldr r3, [sp, #12] - 30644: eeb3 5b00 vmov.f64 d5, #48 ; 0x41800000 16.0 - 30648: 3b01 subs r3, #1 - 3064a: 4622 mov r2, r4 - 3064c: e004 b.n 30658 <_svfprintf_r+0x16d8> - 3064e: eeb5 0b40 vcmp.f64 d0, #0.0 - 30652: eef1 fa10 vmrs APSR_nzcv, fpscr - 30656: d013 beq.n 30680 <_svfprintf_r+0x1700> - 30658: ee20 0b05 vmul.f64 d0, d0, d5 - 3065c: eefd 7bc0 vcvt.s32.f64 s15, d0 - 30660: f1b3 3fff cmp.w r3, #4294967295 ; 0xffffffff - 30664: ee17 1a90 vmov r1, s15 - 30668: 5c41 ldrb r1, [r0, r1] - 3066a: eeb8 6be7 vcvt.f64.s32 d6, s15 - 3066e: 4694 mov ip, r2 - 30670: ee30 0b46 vsub.f64 d0, d0, d6 - 30674: f802 1b01 strb.w r1, [r2], #1 - 30678: 4619 mov r1, r3 - 3067a: f103 33ff add.w r3, r3, #4294967295 ; 0xffffffff - 3067e: d1e6 bne.n 3064e <_svfprintf_r+0x16ce> - 30680: eeb6 6b00 vmov.f64 d6, #96 ; 0x3f000000 0.5 - 30684: eeb4 0bc6 vcmpe.f64 d0, d6 - 30688: eef1 fa10 vmrs APSR_nzcv, fpscr - 3068c: f300 8148 bgt.w 30920 <_svfprintf_r+0x19a0> - 30690: eeb4 0b46 vcmp.f64 d0, d6 - 30694: eef1 fa10 vmrs APSR_nzcv, fpscr - 30698: d104 bne.n 306a4 <_svfprintf_r+0x1724> - 3069a: ee17 3a90 vmov r3, s15 - 3069e: 07db lsls r3, r3, #31 - 306a0: f100 813e bmi.w 30920 <_svfprintf_r+0x19a0> - 306a4: 2900 cmp r1, #0 - 306a6: db06 blt.n 306b6 <_svfprintf_r+0x1736> - 306a8: 1c4b adds r3, r1, #1 - 306aa: 4413 add r3, r2 - 306ac: 2130 movs r1, #48 ; 0x30 - 306ae: f802 1b01 strb.w r1, [r2], #1 - 306b2: 4293 cmp r3, r2 - 306b4: d1fb bne.n 306ae <_svfprintf_r+0x172e> - 306b6: 1b13 subs r3, r2, r4 - 306b8: 930e str r3, [sp, #56] ; 0x38 - 306ba: e6fc b.n 304b6 <_svfprintf_r+0x1536> - 306bc: 9c0b ldr r4, [sp, #44] ; 0x2c - 306be: 9b0e ldr r3, [sp, #56] ; 0x38 - 306c0: f8dd 9024 ldr.w r9, [sp, #36] ; 0x24 - 306c4: f8dd 8028 ldr.w r8, [sp, #40] ; 0x28 - 306c8: 9613 str r6, [sp, #76] ; 0x4c - 306ca: 18e3 adds r3, r4, r3 - 306cc: 429d cmp r5, r3 - 306ce: 4629 mov r1, r5 - 306d0: bf28 it cs - 306d2: 4619 movcs r1, r3 - 306d4: 4682 mov sl, r0 - 306d6: 9105 str r1, [sp, #20] - 306d8: f7ff b9d8 b.w 2fa8c <_svfprintf_r+0xb0c> - 306dc: 9b1b ldr r3, [sp, #108] ; 0x6c - 306de: 930c str r3, [sp, #48] ; 0x30 - 306e0: 1cda adds r2, r3, #3 - 306e2: db02 blt.n 306ea <_svfprintf_r+0x176a> - 306e4: 9a03 ldr r2, [sp, #12] - 306e6: 4293 cmp r3, r2 - 306e8: dd0c ble.n 30704 <_svfprintf_r+0x1784> - 306ea: 9b0b ldr r3, [sp, #44] ; 0x2c - 306ec: 3b02 subs r3, #2 - 306ee: 930b str r3, [sp, #44] ; 0x2c - 306f0: f023 0520 bic.w r5, r3, #32 - 306f4: e6e7 b.n 304c6 <_svfprintf_r+0x1546> - 306f6: 212d movs r1, #45 ; 0x2d - 306f8: 2300 movs r3, #0 - 306fa: f88d 1067 strb.w r1, [sp, #103] ; 0x67 - 306fe: 9303 str r3, [sp, #12] - 30700: f7fe be22 b.w 2f348 <_svfprintf_r+0x3c8> - 30704: 9b0c ldr r3, [sp, #48] ; 0x30 - 30706: 9a0e ldr r2, [sp, #56] ; 0x38 - 30708: 4293 cmp r3, r2 - 3070a: f2c0 80bd blt.w 30888 <_svfprintf_r+0x1908> - 3070e: 07f0 lsls r0, r6, #31 - 30710: 9b0c ldr r3, [sp, #48] ; 0x30 - 30712: f140 8132 bpl.w 3097a <_svfprintf_r+0x19fa> - 30716: 9a10 ldr r2, [sp, #64] ; 0x40 - 30718: 4413 add r3, r2 - 3071a: 9305 str r3, [sp, #20] - 3071c: 0571 lsls r1, r6, #21 - 3071e: d503 bpl.n 30728 <_svfprintf_r+0x17a8> - 30720: 9b0c ldr r3, [sp, #48] ; 0x30 - 30722: 2b00 cmp r3, #0 - 30724: f300 8135 bgt.w 30992 <_svfprintf_r+0x1a12> - 30728: 9b05 ldr r3, [sp, #20] - 3072a: ea23 73e3 bic.w r3, r3, r3, asr #31 - 3072e: 9302 str r3, [sp, #8] - 30730: 2367 movs r3, #103 ; 0x67 - 30732: 930b str r3, [sp, #44] ; 0x2c - 30734: 2300 movs r3, #0 - 30736: 930f str r3, [sp, #60] ; 0x3c - 30738: 930d str r3, [sp, #52] ; 0x34 - 3073a: e727 b.n 3058c <_svfprintf_r+0x160c> - 3073c: 9b22 ldr r3, [sp, #136] ; 0x88 - 3073e: 4283 cmp r3, r0 - 30740: f4bf aeb7 bcs.w 304b2 <_svfprintf_r+0x1532> - 30744: 2130 movs r1, #48 ; 0x30 - 30746: 1c5a adds r2, r3, #1 - 30748: 9222 str r2, [sp, #136] ; 0x88 - 3074a: 7019 strb r1, [r3, #0] - 3074c: 9b22 ldr r3, [sp, #136] ; 0x88 - 3074e: 4298 cmp r0, r3 - 30750: d8f9 bhi.n 30746 <_svfprintf_r+0x17c6> - 30752: e6ae b.n 304b2 <_svfprintf_r+0x1532> - 30754: 07f3 lsls r3, r6, #31 - 30756: f100 80a7 bmi.w 308a8 <_svfprintf_r+0x1928> - 3075a: 9b22 ldr r3, [sp, #136] ; 0x88 - 3075c: e6a9 b.n 304b2 <_svfprintf_r+0x1532> - 3075e: aa24 add r2, sp, #144 ; 0x90 - 30760: 4658 mov r0, fp - 30762: 9105 str r1, [sp, #20] - 30764: f001 fed2 bl 3250c <__ssprint_r> - 30768: 2800 cmp r0, #0 - 3076a: f47f a86e bne.w 2f84a <_svfprintf_r+0x8ca> - 3076e: f896 c000 ldrb.w ip, [r6] - 30772: 9a26 ldr r2, [sp, #152] ; 0x98 - 30774: 9905 ldr r1, [sp, #20] - 30776: a827 add r0, sp, #156 ; 0x9c - 30778: 4465 add r5, ip - 3077a: f7ff bbec b.w 2ff56 <_svfprintf_r+0xfd6> - 3077e: ee1b 1a10 vmov r1, s22 - 30782: aa24 add r2, sp, #144 ; 0x90 - 30784: 4658 mov r0, fp - 30786: f001 fec1 bl 3250c <__ssprint_r> - 3078a: 2800 cmp r0, #0 - 3078c: f47f a85d bne.w 2f84a <_svfprintf_r+0x8ca> - 30790: 9a26 ldr r2, [sp, #152] ; 0x98 - 30792: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 30796: f7ff b96b b.w 2fa70 <_svfprintf_r+0xaf0> - 3079a: 2378 movs r3, #120 ; 0x78 - 3079c: f88d 3069 strb.w r3, [sp, #105] ; 0x69 - 307a0: 2330 movs r3, #48 ; 0x30 - 307a2: f88d 3068 strb.w r3, [sp, #104] ; 0x68 - 307a6: 9b03 ldr r3, [sp, #12] - 307a8: 2b63 cmp r3, #99 ; 0x63 - 307aa: f048 0602 orr.w r6, r8, #2 - 307ae: f300 80a6 bgt.w 308fe <_svfprintf_r+0x197e> - 307b2: 2300 movs r3, #0 - 307b4: 9307 str r3, [sp, #28] - 307b6: ac37 add r4, sp, #220 ; 0xdc - 307b8: ee18 3a90 vmov r3, s17 - 307bc: 2b00 cmp r3, #0 - 307be: f448 7881 orr.w r8, r8, #258 ; 0x102 - 307c2: db2b blt.n 3081c <_svfprintf_r+0x189c> - 307c4: eeb0 ab48 vmov.f64 d10, d8 - 307c8: 9b0b ldr r3, [sp, #44] ; 0x2c - 307ca: f023 0520 bic.w r5, r3, #32 - 307ce: 2300 movs r3, #0 - 307d0: 9309 str r3, [sp, #36] ; 0x24 - 307d2: 9b0b ldr r3, [sp, #44] ; 0x2c - 307d4: 2b61 cmp r3, #97 ; 0x61 - 307d6: f47f aaad bne.w 2fd34 <_svfprintf_r+0xdb4> - 307da: eeb0 0b4a vmov.f64 d0, d10 - 307de: a81b add r0, sp, #108 ; 0x6c - 307e0: f000 ff1a bl 31618 - 307e4: eeb4 7b00 vmov.f64 d7, #64 ; 0x3e000000 0.125 - 307e8: ee20 0b07 vmul.f64 d0, d0, d7 - 307ec: eeb5 0b40 vcmp.f64 d0, #0.0 - 307f0: eef1 fa10 vmrs APSR_nzcv, fpscr - 307f4: d101 bne.n 307fa <_svfprintf_r+0x187a> - 307f6: 2301 movs r3, #1 - 307f8: 931b str r3, [sp, #108] ; 0x6c - 307fa: 4846 ldr r0, [pc, #280] ; (30914 <_svfprintf_r+0x1994>) - 307fc: e721 b.n 30642 <_svfprintf_r+0x16c2> - 307fe: ee1b 1a10 vmov r1, s22 - 30802: aa24 add r2, sp, #144 ; 0x90 - 30804: 4658 mov r0, fp - 30806: f001 fe81 bl 3250c <__ssprint_r> - 3080a: 2800 cmp r0, #0 - 3080c: f47f a81d bne.w 2f84a <_svfprintf_r+0x8ca> - 30810: 9b1b ldr r3, [sp, #108] ; 0x6c - 30812: 9a26 ldr r2, [sp, #152] ; 0x98 - 30814: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 30818: f7ff b94e b.w 2fab8 <_svfprintf_r+0xb38> - 3081c: 9b0b ldr r3, [sp, #44] ; 0x2c - 3081e: f023 0520 bic.w r5, r3, #32 - 30822: 232d movs r3, #45 ; 0x2d - 30824: 9309 str r3, [sp, #36] ; 0x24 - 30826: eeb1 ab48 vneg.f64 d10, d8 - 3082a: e7d2 b.n 307d2 <_svfprintf_r+0x1852> - 3082c: 9a1b ldr r2, [sp, #108] ; 0x6c - 3082e: 920c str r2, [sp, #48] ; 0x30 - 30830: 2a00 cmp r2, #0 - 30832: f006 0301 and.w r3, r6, #1 - 30836: f340 810d ble.w 30a54 <_svfprintf_r+0x1ad4> - 3083a: 9903 ldr r1, [sp, #12] - 3083c: 430b orrs r3, r1 - 3083e: f040 80cf bne.w 309e0 <_svfprintf_r+0x1a60> - 30842: 9b0c ldr r3, [sp, #48] ; 0x30 - 30844: 9305 str r3, [sp, #20] - 30846: 2366 movs r3, #102 ; 0x66 - 30848: 930b str r3, [sp, #44] ; 0x2c - 3084a: 0572 lsls r2, r6, #21 - 3084c: f100 80a3 bmi.w 30996 <_svfprintf_r+0x1a16> - 30850: 9b05 ldr r3, [sp, #20] - 30852: ea23 73e3 bic.w r3, r3, r3, asr #31 - 30856: 9302 str r3, [sp, #8] - 30858: e76c b.n 30734 <_svfprintf_r+0x17b4> - 3085a: ee1b 1a10 vmov r1, s22 + 2fdf0: 2b61 cmp r3, #97 ; 0x61 + 2fdf2: f000 8552 beq.w 3089a <_svfprintf_r+0x181a> + 2fdf6: 2b41 cmp r3, #65 ; 0x41 + 2fdf8: f000 85c0 beq.w 3097c <_svfprintf_r+0x18fc> + 2fdfc: 9b03 ldr r3, [sp, #12] + 2fdfe: 3301 adds r3, #1 + 2fe00: 9b0b ldr r3, [sp, #44] ; 0x2c + 2fe02: f023 0520 bic.w r5, r3, #32 + 2fe06: f000 8480 beq.w 3070a <_svfprintf_r+0x168a> + 2fe0a: 2d47 cmp r5, #71 ; 0x47 + 2fe0c: d104 bne.n 2fe18 <_svfprintf_r+0xd98> + 2fe0e: 9b03 ldr r3, [sp, #12] + 2fe10: 2b00 cmp r3, #0 + 2fe12: bf08 it eq + 2fe14: 2301 moveq r3, #1 + 2fe16: 9303 str r3, [sp, #12] + 2fe18: ee18 3a90 vmov r3, s17 + 2fe1c: 2b00 cmp r3, #0 + 2fe1e: f448 7280 orr.w r2, r8, #256 ; 0x100 + 2fe22: 4646 mov r6, r8 + 2fe24: f2c0 8618 blt.w 30a58 <_svfprintf_r+0x19d8> + 2fe28: eeb0 ab48 vmov.f64 d10, d8 + 2fe2c: 2300 movs r3, #0 + 2fe2e: 4690 mov r8, r2 + 2fe30: 9309 str r3, [sp, #36] ; 0x24 + 2fe32: 9307 str r3, [sp, #28] + 2fe34: 9b0b ldr r3, [sp, #44] ; 0x2c + 2fe36: 3b41 subs r3, #65 ; 0x41 + 2fe38: 2b25 cmp r3, #37 ; 0x25 + 2fe3a: f200 8398 bhi.w 3056e <_svfprintf_r+0x14ee> + 2fe3e: e8df f013 tbh [pc, r3, lsl #1] + 2fe42: 046f .short 0x046f + 2fe44: 03960396 .word 0x03960396 + 2fe48: 04680396 .word 0x04680396 + 2fe4c: 0396046c .word 0x0396046c + 2fe50: 03960396 .word 0x03960396 + 2fe54: 03960396 .word 0x03960396 + 2fe58: 03960396 .word 0x03960396 + 2fe5c: 03960396 .word 0x03960396 + 2fe60: 03960396 .word 0x03960396 + 2fe64: 03960396 .word 0x03960396 + 2fe68: 03960396 .word 0x03960396 + 2fe6c: 03960396 .word 0x03960396 + 2fe70: 03960396 .word 0x03960396 + 2fe74: 03960396 .word 0x03960396 + 2fe78: 03960396 .word 0x03960396 + 2fe7c: 03960396 .word 0x03960396 + 2fe80: 03960396 .word 0x03960396 + 2fe84: 03960396 .word 0x03960396 + 2fe88: 04680396 .word 0x04680396 + 2fe8c: 046c .short 0x046c + 2fe8e: 9b08 ldr r3, [sp, #32] + 2fe90: f853 2b04 ldr.w r2, [r3], #4 + 2fe94: 9308 str r3, [sp, #32] + 2fe96: 2301 movs r3, #1 + 2fe98: f7ff bb97 b.w 2f5ca <_svfprintf_r+0x54a> + 2fe9c: 9b13 ldr r3, [sp, #76] ; 0x4c + 2fe9e: 2b00 cmp r3, #0 + 2fea0: f43f a9cf beq.w 2f242 <_svfprintf_r+0x1c2> + 2fea4: 9b13 ldr r3, [sp, #76] ; 0x4c + 2fea6: 781b ldrb r3, [r3, #0] + 2fea8: 2b00 cmp r3, #0 + 2feaa: f43f a9ca beq.w 2f242 <_svfprintf_r+0x1c2> + 2feae: f899 3000 ldrb.w r3, [r9] + 2feb2: f448 6880 orr.w r8, r8, #1024 ; 0x400 + 2feb6: f7ff b93f b.w 2f138 <_svfprintf_r+0xb8> + 2feba: 930b str r3, [sp, #44] ; 0x2c + 2febc: f8cd 8008 str.w r8, [sp, #8] + 2fec0: f7ff bbf1 b.w 2f6a6 <_svfprintf_r+0x626> + 2fec4: 930b str r3, [sp, #44] ; 0x2c + 2fec6: 4b9a ldr r3, [pc, #616] ; (30130 <_svfprintf_r+0x10b0>) + 2fec8: 9311 str r3, [sp, #68] ; 0x44 + 2feca: f018 0120 ands.w r1, r8, #32 + 2fece: f000 8105 beq.w 300dc <_svfprintf_r+0x105c> + 2fed2: 9b08 ldr r3, [sp, #32] + 2fed4: 3307 adds r3, #7 + 2fed6: f023 0307 bic.w r3, r3, #7 + 2feda: 6859 ldr r1, [r3, #4] + 2fedc: f853 2b08 ldr.w r2, [r3], #8 + 2fee0: 9308 str r3, [sp, #32] + 2fee2: f018 0f01 tst.w r8, #1 + 2fee6: d00a beq.n 2fefe <_svfprintf_r+0xe7e> + 2fee8: ea52 0301 orrs.w r3, r2, r1 + 2feec: d007 beq.n 2fefe <_svfprintf_r+0xe7e> + 2feee: 9b0b ldr r3, [sp, #44] ; 0x2c + 2fef0: f88d 3069 strb.w r3, [sp, #105] ; 0x69 + 2fef4: 2330 movs r3, #48 ; 0x30 + 2fef6: f048 0802 orr.w r8, r8, #2 + 2fefa: f88d 3068 strb.w r3, [sp, #104] ; 0x68 + 2fefe: f428 6380 bic.w r3, r8, #1024 ; 0x400 + 2ff02: 9302 str r3, [sp, #8] + 2ff04: 2302 movs r3, #2 + 2ff06: f7ff bb60 b.w 2f5ca <_svfprintf_r+0x54a> + 2ff0a: 930b str r3, [sp, #44] ; 0x2c + 2ff0c: f7ff bbb6 b.w 2f67c <_svfprintf_r+0x5fc> + 2ff10: 930b str r3, [sp, #44] ; 0x2c + 2ff12: 4b88 ldr r3, [pc, #544] ; (30134 <_svfprintf_r+0x10b4>) + 2ff14: 9311 str r3, [sp, #68] ; 0x44 + 2ff16: e7d8 b.n 2feca <_svfprintf_r+0xe4a> + 2ff18: 9b08 ldr r3, [sp, #32] + 2ff1a: 2101 movs r1, #1 + 2ff1c: f853 2b04 ldr.w r2, [r3], #4 + 2ff20: 9102 str r1, [sp, #8] + 2ff22: f88d 20dc strb.w r2, [sp, #220] ; 0xdc + 2ff26: 9308 str r3, [sp, #32] + 2ff28: 9105 str r1, [sp, #20] + 2ff2a: ac37 add r4, sp, #220 ; 0xdc + 2ff2c: f7ff baaf b.w 2f48e <_svfprintf_r+0x40e> + 2ff30: ee1b 1a10 vmov r1, s22 + 2ff34: aa24 add r2, sp, #144 ; 0x90 + 2ff36: 4658 mov r0, fp + 2ff38: f002 fb68 bl 3260c <__ssprint_r> + 2ff3c: 2800 cmp r0, #0 + 2ff3e: f47f ad04 bne.w 2f94a <_svfprintf_r+0x8ca> + 2ff42: 9a26 ldr r2, [sp, #152] ; 0x98 + 2ff44: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 2ff48: e45d b.n 2f806 <_svfprintf_r+0x786> + 2ff4a: 9b03 ldr r3, [sp, #12] + 2ff4c: 9407 str r4, [sp, #28] + 2ff4e: 2b06 cmp r3, #6 + 2ff50: 4622 mov r2, r4 + 2ff52: bf28 it cs + 2ff54: 2306 movcs r3, #6 + 2ff56: 9403 str r4, [sp, #12] + 2ff58: 4621 mov r1, r4 + 2ff5a: e9cd 220c strd r2, r2, [sp, #48] ; 0x30 + 2ff5e: 4c76 ldr r4, [pc, #472] ; (30138 <_svfprintf_r+0x10b8>) + 2ff60: 9302 str r3, [sp, #8] + 2ff62: 9305 str r3, [sp, #20] + 2ff64: 920f str r2, [sp, #60] ; 0x3c + 2ff66: f7ff ba6c b.w 2f442 <_svfprintf_r+0x3c2> + 2ff6a: 2140 movs r1, #64 ; 0x40 + 2ff6c: 4658 mov r0, fp + 2ff6e: f7fd fccd bl 2d90c <_malloc_r> + 2ff72: 6020 str r0, [r4, #0] + 2ff74: 6120 str r0, [r4, #16] + 2ff76: 2800 cmp r0, #0 + 2ff78: f000 860f beq.w 30b9a <_svfprintf_r+0x1b1a> + 2ff7c: 2340 movs r3, #64 ; 0x40 + 2ff7e: 6163 str r3, [r4, #20] + 2ff80: f7ff b89e b.w 2f0c0 <_svfprintf_r+0x40> + 2ff84: 2d10 cmp r5, #16 + 2ff86: 9b25 ldr r3, [sp, #148] ; 0x94 + 2ff88: f340 825d ble.w 30446 <_svfprintf_r+0x13c6> + 2ff8c: 4651 mov r1, sl + 2ff8e: 2610 movs r6, #16 + 2ff90: ee1b aa10 vmov sl, s22 + 2ff94: e004 b.n 2ffa0 <_svfprintf_r+0xf20> + 2ff96: 3108 adds r1, #8 + 2ff98: 3d10 subs r5, #16 + 2ff9a: 2d10 cmp r5, #16 + 2ff9c: f340 8252 ble.w 30444 <_svfprintf_r+0x13c4> + 2ffa0: 3301 adds r3, #1 + 2ffa2: 4866 ldr r0, [pc, #408] ; (3013c <_svfprintf_r+0x10bc>) + 2ffa4: 3210 adds r2, #16 + 2ffa6: 2b07 cmp r3, #7 + 2ffa8: e9c1 0600 strd r0, r6, [r1] + 2ffac: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 2ffb0: ddf1 ble.n 2ff96 <_svfprintf_r+0xf16> + 2ffb2: aa24 add r2, sp, #144 ; 0x90 + 2ffb4: 4651 mov r1, sl + 2ffb6: 4658 mov r0, fp + 2ffb8: f002 fb28 bl 3260c <__ssprint_r> + 2ffbc: 2800 cmp r0, #0 + 2ffbe: f47f acc4 bne.w 2f94a <_svfprintf_r+0x8ca> + 2ffc2: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 2ffc6: a927 add r1, sp, #156 ; 0x9c + 2ffc8: e7e6 b.n 2ff98 <_svfprintf_r+0xf18> + 2ffca: 9b0e ldr r3, [sp, #56] ; 0x38 + 2ffcc: f8cd 9024 str.w r9, [sp, #36] ; 0x24 + 2ffd0: 18e3 adds r3, r4, r3 + 2ffd2: 9303 str r3, [sp, #12] + 2ffd4: 9b0d ldr r3, [sp, #52] ; 0x34 + 2ffd6: f8cd 8028 str.w r8, [sp, #40] ; 0x28 + 2ffda: 9e13 ldr r6, [sp, #76] ; 0x4c + 2ffdc: 9d05 ldr r5, [sp, #20] + 2ffde: f8dd 9058 ldr.w r9, [sp, #88] ; 0x58 + 2ffe2: f8dd 803c ldr.w r8, [sp, #60] ; 0x3c + 2ffe6: 940b str r4, [sp, #44] ; 0x2c + 2ffe8: ee1b 1a10 vmov r1, s22 + 2ffec: 4650 mov r0, sl + 2ffee: 2b00 cmp r3, #0 + 2fff0: d034 beq.n 3005c <_svfprintf_r+0xfdc> + 2fff2: f1b8 0f00 cmp.w r8, #0 + 2fff6: d135 bne.n 30064 <_svfprintf_r+0xfe4> + 2fff8: 9b0d ldr r3, [sp, #52] ; 0x34 + 2fffa: 3b01 subs r3, #1 + 2fffc: 3e01 subs r6, #1 + 2fffe: 930d str r3, [sp, #52] ; 0x34 + 30000: 9b15 ldr r3, [sp, #84] ; 0x54 + 30002: e9c0 3900 strd r3, r9, [r0] + 30006: 9b25 ldr r3, [sp, #148] ; 0x94 + 30008: 3301 adds r3, #1 + 3000a: 444a add r2, r9 + 3000c: 2b07 cmp r3, #7 + 3000e: 9226 str r2, [sp, #152] ; 0x98 + 30010: 9325 str r3, [sp, #148] ; 0x94 + 30012: dc6c bgt.n 300ee <_svfprintf_r+0x106e> + 30014: 3008 adds r0, #8 + 30016: 9b03 ldr r3, [sp, #12] + 30018: f896 c000 ldrb.w ip, [r6] + 3001c: 1b5b subs r3, r3, r5 + 3001e: 4563 cmp r3, ip + 30020: bfa8 it ge + 30022: 4663 movge r3, ip + 30024: 2b00 cmp r3, #0 + 30026: 469a mov sl, r3 + 30028: dd0c ble.n 30044 <_svfprintf_r+0xfc4> + 3002a: 9c25 ldr r4, [sp, #148] ; 0x94 + 3002c: 3401 adds r4, #1 + 3002e: 441a add r2, r3 + 30030: 2c07 cmp r4, #7 + 30032: e9c0 5300 strd r5, r3, [r0] + 30036: 9226 str r2, [sp, #152] ; 0x98 + 30038: 9425 str r4, [sp, #148] ; 0x94 + 3003a: f300 8177 bgt.w 3032c <_svfprintf_r+0x12ac> + 3003e: f896 c000 ldrb.w ip, [r6] + 30042: 3008 adds r0, #8 + 30044: f1ba 0f00 cmp.w sl, #0 + 30048: bfac ite ge + 3004a: ebac 040a subge.w r4, ip, sl + 3004e: 4664 movlt r4, ip + 30050: 2c00 cmp r4, #0 + 30052: dc0a bgt.n 3006a <_svfprintf_r+0xfea> + 30054: 4465 add r5, ip + 30056: 9b0d ldr r3, [sp, #52] ; 0x34 + 30058: 2b00 cmp r3, #0 + 3005a: d1ca bne.n 2fff2 <_svfprintf_r+0xf72> + 3005c: f1b8 0f00 cmp.w r8, #0 + 30060: f000 83ac beq.w 307bc <_svfprintf_r+0x173c> + 30064: f108 38ff add.w r8, r8, #4294967295 ; 0xffffffff + 30068: e7ca b.n 30000 <_svfprintf_r+0xf80> + 3006a: 2c10 cmp r4, #16 + 3006c: f8dd c094 ldr.w ip, [sp, #148] ; 0x94 + 30070: dd24 ble.n 300bc <_svfprintf_r+0x103c> + 30072: 9505 str r5, [sp, #20] + 30074: f04f 0a10 mov.w sl, #16 + 30078: 4663 mov r3, ip + 3007a: 460d mov r5, r1 + 3007c: e004 b.n 30088 <_svfprintf_r+0x1008> + 3007e: 3c10 subs r4, #16 + 30080: 2c10 cmp r4, #16 + 30082: f100 0008 add.w r0, r0, #8 + 30086: dd16 ble.n 300b6 <_svfprintf_r+0x1036> + 30088: 3301 adds r3, #1 + 3008a: 492c ldr r1, [pc, #176] ; (3013c <_svfprintf_r+0x10bc>) + 3008c: 3210 adds r2, #16 + 3008e: 2b07 cmp r3, #7 + 30090: e9c0 1a00 strd r1, sl, [r0] + 30094: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 30098: ddf1 ble.n 3007e <_svfprintf_r+0xffe> + 3009a: aa24 add r2, sp, #144 ; 0x90 + 3009c: 4629 mov r1, r5 + 3009e: 4658 mov r0, fp + 300a0: f002 fab4 bl 3260c <__ssprint_r> + 300a4: 2800 cmp r0, #0 + 300a6: f47f ac50 bne.w 2f94a <_svfprintf_r+0x8ca> + 300aa: 3c10 subs r4, #16 + 300ac: 2c10 cmp r4, #16 + 300ae: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 300b2: a827 add r0, sp, #156 ; 0x9c + 300b4: dce8 bgt.n 30088 <_svfprintf_r+0x1008> + 300b6: 4629 mov r1, r5 + 300b8: 9d05 ldr r5, [sp, #20] + 300ba: 469c mov ip, r3 + 300bc: f10c 0301 add.w r3, ip, #1 + 300c0: 4422 add r2, r4 + 300c2: 6044 str r4, [r0, #4] + 300c4: 2b07 cmp r3, #7 + 300c6: 4c1d ldr r4, [pc, #116] ; (3013c <_svfprintf_r+0x10bc>) + 300c8: 6004 str r4, [r0, #0] + 300ca: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 300ce: f300 83c6 bgt.w 3085e <_svfprintf_r+0x17de> + 300d2: f896 c000 ldrb.w ip, [r6] + 300d6: 3008 adds r0, #8 + 300d8: 4465 add r5, ip + 300da: e7bc b.n 30056 <_svfprintf_r+0xfd6> + 300dc: f018 0310 ands.w r3, r8, #16 + 300e0: f000 80c2 beq.w 30268 <_svfprintf_r+0x11e8> + 300e4: 9b08 ldr r3, [sp, #32] + 300e6: f853 2b04 ldr.w r2, [r3], #4 + 300ea: 9308 str r3, [sp, #32] + 300ec: e6f9 b.n 2fee2 <_svfprintf_r+0xe62> + 300ee: aa24 add r2, sp, #144 ; 0x90 + 300f0: 4658 mov r0, fp + 300f2: 9105 str r1, [sp, #20] + 300f4: f002 fa8a bl 3260c <__ssprint_r> + 300f8: 2800 cmp r0, #0 + 300fa: f47f ac26 bne.w 2f94a <_svfprintf_r+0x8ca> + 300fe: 9a26 ldr r2, [sp, #152] ; 0x98 + 30100: 9905 ldr r1, [sp, #20] + 30102: a827 add r0, sp, #156 ; 0x9c + 30104: e787 b.n 30016 <_svfprintf_r+0xf96> + 30106: 9802 ldr r0, [sp, #8] + 30108: f8cd a01c str.w sl, [sp, #28] + 3010c: ac50 add r4, sp, #320 ; 0x140 + 3010e: f400 6080 and.w r0, r0, #1024 ; 0x400 + 30112: 2500 movs r5, #0 + 30114: ee0a ba10 vmov s20, fp + 30118: 4b09 ldr r3, [pc, #36] ; (30140 <_svfprintf_r+0x10c0>) + 3011a: f8dd a04c ldr.w sl, [sp, #76] ; 0x4c + 3011e: f8cd 9014 str.w r9, [sp, #20] + 30122: 46a3 mov fp, r4 + 30124: f04f 0805 mov.w r8, #5 + 30128: 46ac mov ip, r5 + 3012a: 4604 mov r4, r0 + 3012c: e010 b.n 30150 <_svfprintf_r+0x10d0> + 3012e: bf00 nop + 30130: 20004520 .word 0x20004520 + 30134: 20004534 .word 0x20004534 + 30138: 20004548 .word 0x20004548 + 3013c: 20004b1c .word 0x20004b1c + 30140: cccccccd .word 0xcccccccd + 30144: 2a0a cmp r2, #10 + 30146: f171 0100 sbcs.w r1, r1, #0 + 3014a: d336 bcc.n 301ba <_svfprintf_r+0x113a> + 3014c: 464a mov r2, r9 + 3014e: 4631 mov r1, r6 + 30150: 1850 adds r0, r2, r1 + 30152: f140 0000 adc.w r0, r0, #0 + 30156: fba3 5600 umull r5, r6, r3, r0 + 3015a: f026 0503 bic.w r5, r6, #3 + 3015e: eb05 0596 add.w r5, r5, r6, lsr #2 + 30162: 1b40 subs r0, r0, r5 + 30164: 1a15 subs r5, r2, r0 + 30166: f04f 36cc mov.w r6, #3435973836 ; 0xcccccccc + 3016a: f161 0e00 sbc.w lr, r1, #0 + 3016e: fb06 f605 mul.w r6, r6, r5 + 30172: fba5 9503 umull r9, r5, r5, r3 + 30176: fb03 660e mla r6, r3, lr, r6 + 3017a: f009 0e01 and.w lr, r9, #1 + 3017e: 442e add r6, r5 + 30180: fbae 5e08 umull r5, lr, lr, r8 + 30184: 182d adds r5, r5, r0 + 30186: ea4f 0959 mov.w r9, r9, lsr #1 + 3018a: 3530 adds r5, #48 ; 0x30 + 3018c: f80b 5c01 strb.w r5, [fp, #-1] + 30190: ea49 79c6 orr.w r9, r9, r6, lsl #31 + 30194: f10c 0c01 add.w ip, ip, #1 + 30198: f10b 3bff add.w fp, fp, #4294967295 ; 0xffffffff + 3019c: 0876 lsrs r6, r6, #1 + 3019e: 2c00 cmp r4, #0 + 301a0: d0d0 beq.n 30144 <_svfprintf_r+0x10c4> + 301a2: f89a 0000 ldrb.w r0, [sl] + 301a6: 4584 cmp ip, r0 + 301a8: d1cc bne.n 30144 <_svfprintf_r+0x10c4> + 301aa: f1bc 0fff cmp.w ip, #255 ; 0xff + 301ae: d0c9 beq.n 30144 <_svfprintf_r+0x10c4> + 301b0: 2a0a cmp r2, #10 + 301b2: f171 0100 sbcs.w r1, r1, #0 + 301b6: f080 818f bcs.w 304d8 <_svfprintf_r+0x1458> + 301ba: 465c mov r4, fp + 301bc: ab50 add r3, sp, #320 ; 0x140 + 301be: 1b1b subs r3, r3, r4 + 301c0: f8dd 9014 ldr.w r9, [sp, #20] + 301c4: f8cd a04c str.w sl, [sp, #76] ; 0x4c + 301c8: ee1a ba10 vmov fp, s20 + 301cc: f8dd a01c ldr.w sl, [sp, #28] + 301d0: f8dd 8008 ldr.w r8, [sp, #8] + 301d4: f8cd c038 str.w ip, [sp, #56] ; 0x38 + 301d8: 9305 str r3, [sp, #20] + 301da: f7ff bac2 b.w 2f762 <_svfprintf_r+0x6e2> + 301de: ee1b 1a10 vmov r1, s22 + 301e2: aa24 add r2, sp, #144 ; 0x90 + 301e4: 4658 mov r0, fp + 301e6: f002 fa11 bl 3260c <__ssprint_r> + 301ea: 2800 cmp r0, #0 + 301ec: f47f abad bne.w 2f94a <_svfprintf_r+0x8ca> + 301f0: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 + 301f4: 9a26 ldr r2, [sp, #152] ; 0x98 + 301f6: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 301fa: f7ff b896 b.w 2f32a <_svfprintf_r+0x2aa> + 301fe: 9b25 ldr r3, [sp, #148] ; 0x94 + 30200: 48be ldr r0, [pc, #760] ; (304fc <_svfprintf_r+0x147c>) + 30202: f8ca 0000 str.w r0, [sl] + 30206: 3301 adds r3, #1 + 30208: 3201 adds r2, #1 + 3020a: 2001 movs r0, #1 + 3020c: 2b07 cmp r3, #7 + 3020e: 9226 str r2, [sp, #152] ; 0x98 + 30210: 9325 str r3, [sp, #148] ; 0x94 + 30212: f8ca 0004 str.w r0, [sl, #4] + 30216: f300 8177 bgt.w 30508 <_svfprintf_r+0x1488> + 3021a: f10a 0a08 add.w sl, sl, #8 + 3021e: 2900 cmp r1, #0 + 30220: f040 80af bne.w 30382 <_svfprintf_r+0x1302> + 30224: 990e ldr r1, [sp, #56] ; 0x38 + 30226: f008 0301 and.w r3, r8, #1 + 3022a: 430b orrs r3, r1 + 3022c: f43f a8c0 beq.w 2f3b0 <_svfprintf_r+0x330> + 30230: 9b10 ldr r3, [sp, #64] ; 0x40 + 30232: 9912 ldr r1, [sp, #72] ; 0x48 + 30234: 441a add r2, r3 + 30236: e9ca 1300 strd r1, r3, [sl] + 3023a: 9b25 ldr r3, [sp, #148] ; 0x94 + 3023c: 9226 str r2, [sp, #152] ; 0x98 + 3023e: 3301 adds r3, #1 + 30240: 2b07 cmp r3, #7 + 30242: 9325 str r3, [sp, #148] ; 0x94 + 30244: f300 8252 bgt.w 306ec <_svfprintf_r+0x166c> + 30248: f10a 0a08 add.w sl, sl, #8 + 3024c: 990e ldr r1, [sp, #56] ; 0x38 + 3024e: f8ca 4000 str.w r4, [sl] + 30252: 3301 adds r3, #1 + 30254: 440a add r2, r1 + 30256: 2b07 cmp r3, #7 + 30258: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 3025c: f8ca 1004 str.w r1, [sl, #4] + 30260: f77f a8a4 ble.w 2f3ac <_svfprintf_r+0x32c> + 30264: f7ff bbbd b.w 2f9e2 <_svfprintf_r+0x962> + 30268: f018 0240 ands.w r2, r8, #64 ; 0x40 + 3026c: f000 80dd beq.w 3042a <_svfprintf_r+0x13aa> + 30270: 9808 ldr r0, [sp, #32] + 30272: f850 2b04 ldr.w r2, [r0], #4 + 30276: 9008 str r0, [sp, #32] + 30278: 4619 mov r1, r3 + 3027a: b292 uxth r2, r2 + 3027c: e631 b.n 2fee2 <_svfprintf_r+0xe62> + 3027e: ee1b 1a10 vmov r1, s22 + 30282: aa24 add r2, sp, #144 ; 0x90 + 30284: 4658 mov r0, fp + 30286: f002 f9c1 bl 3260c <__ssprint_r> + 3028a: 2800 cmp r0, #0 + 3028c: f47f ab5d bne.w 2f94a <_svfprintf_r+0x8ca> + 30290: 9a26 ldr r2, [sp, #152] ; 0x98 + 30292: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 30296: f7ff baa3 b.w 2f7e0 <_svfprintf_r+0x760> + 3029a: ae22 add r6, sp, #136 ; 0x88 + 3029c: 2208 movs r2, #8 + 3029e: 2100 movs r1, #0 + 302a0: 4630 mov r0, r6 + 302a2: 941d str r4, [sp, #116] ; 0x74 + 302a4: f7fe f966 bl 2e574 + 302a8: 9b03 ldr r3, [sp, #12] + 302aa: 1c5a adds r2, r3, #1 + 302ac: f000 80db beq.w 30466 <_svfprintf_r+0x13e6> + 302b0: 2500 movs r5, #0 + 302b2: f8cd 9008 str.w r9, [sp, #8] + 302b6: f8cd 801c str.w r8, [sp, #28] + 302ba: 4699 mov r9, r3 + 302bc: 46a8 mov r8, r5 + 302be: e00c b.n 302da <_svfprintf_r+0x125a> + 302c0: a937 add r1, sp, #220 ; 0xdc + 302c2: 4658 mov r0, fp + 302c4: f001 f9f6 bl 316b4 <_wcrtomb_r> + 302c8: 1c43 adds r3, r0, #1 + 302ca: 4440 add r0, r8 + 302cc: f000 83c8 beq.w 30a60 <_svfprintf_r+0x19e0> + 302d0: 4548 cmp r0, r9 + 302d2: dc08 bgt.n 302e6 <_svfprintf_r+0x1266> + 302d4: f000 8418 beq.w 30b08 <_svfprintf_r+0x1a88> + 302d8: 4680 mov r8, r0 + 302da: 9a1d ldr r2, [sp, #116] ; 0x74 + 302dc: 5952 ldr r2, [r2, r5] + 302de: 4633 mov r3, r6 + 302e0: 3504 adds r5, #4 + 302e2: 2a00 cmp r2, #0 + 302e4: d1ec bne.n 302c0 <_svfprintf_r+0x1240> + 302e6: f8cd 8014 str.w r8, [sp, #20] + 302ea: f8dd 9008 ldr.w r9, [sp, #8] + 302ee: f8dd 801c ldr.w r8, [sp, #28] + 302f2: e0c5 b.n 30480 <_svfprintf_r+0x1400> + 302f4: 3301 adds r3, #1 + 302f6: 4982 ldr r1, [pc, #520] ; (30500 <_svfprintf_r+0x1480>) + 302f8: f8ca 4004 str.w r4, [sl, #4] + 302fc: 4422 add r2, r4 + 302fe: 2b07 cmp r3, #7 + 30300: f8ca 1000 str.w r1, [sl] + 30304: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 30308: f77f a850 ble.w 2f3ac <_svfprintf_r+0x32c> + 3030c: f7ff bb69 b.w 2f9e2 <_svfprintf_r+0x962> + 30310: ee1b 1a10 vmov r1, s22 + 30314: aa24 add r2, sp, #144 ; 0x90 + 30316: 4658 mov r0, fp + 30318: f002 f978 bl 3260c <__ssprint_r> + 3031c: 2800 cmp r0, #0 + 3031e: f47f ab14 bne.w 2f94a <_svfprintf_r+0x8ca> + 30322: 9a26 ldr r2, [sp, #152] ; 0x98 + 30324: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 30328: f7ff b829 b.w 2f37e <_svfprintf_r+0x2fe> + 3032c: aa24 add r2, sp, #144 ; 0x90 + 3032e: 4658 mov r0, fp + 30330: 9105 str r1, [sp, #20] + 30332: f002 f96b bl 3260c <__ssprint_r> + 30336: 2800 cmp r0, #0 + 30338: f47f ab07 bne.w 2f94a <_svfprintf_r+0x8ca> + 3033c: f896 c000 ldrb.w ip, [r6] + 30340: 9a26 ldr r2, [sp, #152] ; 0x98 + 30342: 9905 ldr r1, [sp, #20] + 30344: a827 add r0, sp, #156 ; 0x9c + 30346: e67d b.n 30044 <_svfprintf_r+0xfc4> + 30348: 2b01 cmp r3, #1 + 3034a: f8cd 8008 str.w r8, [sp, #8] + 3034e: f47f a9f3 bne.w 2f738 <_svfprintf_r+0x6b8> + 30352: f7ff bb93 b.w 2fa7c <_svfprintf_r+0x9fc> + 30356: 9b08 ldr r3, [sp, #32] + 30358: 9904 ldr r1, [sp, #16] + 3035a: f853 2b04 ldr.w r2, [r3], #4 + 3035e: 464c mov r4, r9 + 30360: 6011 str r1, [r2, #0] + 30362: 9308 str r3, [sp, #32] + 30364: f7fe bebe b.w 2f0e4 <_svfprintf_r+0x64> + 30368: 3301 adds r3, #1 + 3036a: 4965 ldr r1, [pc, #404] ; (30500 <_svfprintf_r+0x1480>) + 3036c: f8ca 4004 str.w r4, [sl, #4] + 30370: 4422 add r2, r4 + 30372: 2b07 cmp r3, #7 + 30374: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 30378: f8ca 1000 str.w r1, [sl] + 3037c: f77f ab22 ble.w 2f9c4 <_svfprintf_r+0x944> + 30380: e47b b.n 2fc7a <_svfprintf_r+0xbfa> + 30382: 9b10 ldr r3, [sp, #64] ; 0x40 + 30384: 9812 ldr r0, [sp, #72] ; 0x48 + 30386: 441a add r2, r3 + 30388: e9ca 0300 strd r0, r3, [sl] + 3038c: 9b25 ldr r3, [sp, #148] ; 0x94 + 3038e: 9226 str r2, [sp, #152] ; 0x98 + 30390: 3301 adds r3, #1 + 30392: 2b07 cmp r3, #7 + 30394: 9325 str r3, [sp, #148] ; 0x94 + 30396: f300 81a9 bgt.w 306ec <_svfprintf_r+0x166c> + 3039a: f10a 0a08 add.w sl, sl, #8 + 3039e: 2900 cmp r1, #0 + 303a0: f6bf af54 bge.w 3024c <_svfprintf_r+0x11cc> + 303a4: 424d negs r5, r1 + 303a6: 3110 adds r1, #16 + 303a8: f280 830f bge.w 309ca <_svfprintf_r+0x194a> + 303ac: ee1b 1a10 vmov r1, s22 + 303b0: 2610 movs r6, #16 + 303b2: e005 b.n 303c0 <_svfprintf_r+0x1340> + 303b4: f10a 0a08 add.w sl, sl, #8 + 303b8: 3d10 subs r5, #16 + 303ba: 2d10 cmp r5, #16 + 303bc: f340 8305 ble.w 309ca <_svfprintf_r+0x194a> + 303c0: 3301 adds r3, #1 + 303c2: 484f ldr r0, [pc, #316] ; (30500 <_svfprintf_r+0x1480>) + 303c4: 3210 adds r2, #16 + 303c6: 2b07 cmp r3, #7 + 303c8: e9ca 0600 strd r0, r6, [sl] + 303cc: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 303d0: ddf0 ble.n 303b4 <_svfprintf_r+0x1334> + 303d2: aa24 add r2, sp, #144 ; 0x90 + 303d4: 4658 mov r0, fp + 303d6: 9103 str r1, [sp, #12] + 303d8: f002 f918 bl 3260c <__ssprint_r> + 303dc: 2800 cmp r0, #0 + 303de: f47f aab4 bne.w 2f94a <_svfprintf_r+0x8ca> + 303e2: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 303e6: 9903 ldr r1, [sp, #12] + 303e8: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 303ec: e7e4 b.n 303b8 <_svfprintf_r+0x1338> + 303ee: 9b08 ldr r3, [sp, #32] + 303f0: f418 7100 ands.w r1, r8, #512 ; 0x200 + 303f4: bf1a itte ne + 303f6: 4611 movne r1, r2 + 303f8: f853 2b04 ldrne.w r2, [r3], #4 + 303fc: f853 2b04 ldreq.w r2, [r3], #4 + 30400: 9308 str r3, [sp, #32] + 30402: bf18 it ne + 30404: b2d2 uxtbne r2, r2 + 30406: f7ff b945 b.w 2f694 <_svfprintf_r+0x614> + 3040a: 9b02 ldr r3, [sp, #8] + 3040c: f413 7100 ands.w r1, r3, #512 ; 0x200 + 30410: 9b08 ldr r3, [sp, #32] + 30412: bf1a itte ne + 30414: 4611 movne r1, r2 + 30416: f853 2b04 ldrne.w r2, [r3], #4 + 3041a: f853 2b04 ldreq.w r2, [r3], #4 + 3041e: 9308 str r3, [sp, #32] + 30420: bf18 it ne + 30422: b2d2 uxtbne r2, r2 + 30424: 2301 movs r3, #1 + 30426: f7ff b8d0 b.w 2f5ca <_svfprintf_r+0x54a> + 3042a: 9b08 ldr r3, [sp, #32] + 3042c: f418 7100 ands.w r1, r8, #512 ; 0x200 + 30430: bf1a itte ne + 30432: 4611 movne r1, r2 + 30434: f853 2b04 ldrne.w r2, [r3], #4 + 30438: f853 2b04 ldreq.w r2, [r3], #4 + 3043c: 9308 str r3, [sp, #32] + 3043e: bf18 it ne + 30440: b2d2 uxtbne r2, r2 + 30442: e54e b.n 2fee2 <_svfprintf_r+0xe62> + 30444: 468a mov sl, r1 + 30446: 3301 adds r3, #1 + 30448: 492d ldr r1, [pc, #180] ; (30500 <_svfprintf_r+0x1480>) + 3044a: f8ca 5004 str.w r5, [sl, #4] + 3044e: 442a add r2, r5 + 30450: 2b07 cmp r3, #7 + 30452: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 30456: f8ca 1000 str.w r1, [sl] + 3045a: f300 8139 bgt.w 306d0 <_svfprintf_r+0x1650> + 3045e: f10a 0a08 add.w sl, sl, #8 + 30462: f7ff bb8c b.w 2fb7e <_svfprintf_r+0xafe> + 30466: 2300 movs r3, #0 + 30468: 4619 mov r1, r3 + 3046a: 9600 str r6, [sp, #0] + 3046c: aa1d add r2, sp, #116 ; 0x74 + 3046e: 4658 mov r0, fp + 30470: f001 f946 bl 31700 <_wcsrtombs_r> + 30474: 4603 mov r3, r0 + 30476: 3301 adds r3, #1 + 30478: 9005 str r0, [sp, #20] + 3047a: f000 82f1 beq.w 30a60 <_svfprintf_r+0x19e0> + 3047e: 941d str r4, [sp, #116] ; 0x74 + 30480: 9b05 ldr r3, [sp, #20] + 30482: 2b00 cmp r3, #0 + 30484: d04e beq.n 30524 <_svfprintf_r+0x14a4> + 30486: 2b63 cmp r3, #99 ; 0x63 + 30488: f300 8118 bgt.w 306bc <_svfprintf_r+0x163c> + 3048c: 2300 movs r3, #0 + 3048e: 9307 str r3, [sp, #28] + 30490: ac37 add r4, sp, #220 ; 0xdc + 30492: 2208 movs r2, #8 + 30494: 2100 movs r1, #0 + 30496: 4630 mov r0, r6 + 30498: f7fe f86c bl 2e574 + 3049c: 9d05 ldr r5, [sp, #20] + 3049e: 9600 str r6, [sp, #0] + 304a0: 462b mov r3, r5 + 304a2: aa1d add r2, sp, #116 ; 0x74 + 304a4: 4621 mov r1, r4 + 304a6: 4658 mov r0, fp + 304a8: f001 f92a bl 31700 <_wcsrtombs_r> + 304ac: 4285 cmp r5, r0 + 304ae: f040 837c bne.w 30baa <_svfprintf_r+0x1b2a> + 304b2: 9a05 ldr r2, [sp, #20] + 304b4: 2300 movs r3, #0 + 304b6: 54a3 strb r3, [r4, r2] + 304b8: ea22 72e2 bic.w r2, r2, r2, asr #31 + 304bc: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 + 304c0: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 + 304c4: 9303 str r3, [sp, #12] + 304c6: 9202 str r2, [sp, #8] + 304c8: 930f str r3, [sp, #60] ; 0x3c + 304ca: f7fe bfba b.w 2f442 <_svfprintf_r+0x3c2> + 304ce: 212d movs r1, #45 ; 0x2d + 304d0: f88d 1067 strb.w r1, [sp, #103] ; 0x67 + 304d4: f7fe bfa4 b.w 2f420 <_svfprintf_r+0x3a0> + 304d8: 9b16 ldr r3, [sp, #88] ; 0x58 + 304da: 9915 ldr r1, [sp, #84] ; 0x54 + 304dc: ebab 0b03 sub.w fp, fp, r3 + 304e0: 461a mov r2, r3 + 304e2: 4658 mov r0, fp + 304e4: f7fe f8b8 bl 2e658 + 304e8: f89a 2001 ldrb.w r2, [sl, #1] + 304ec: 4b05 ldr r3, [pc, #20] ; (30504 <_svfprintf_r+0x1484>) + 304ee: b10a cbz r2, 304f4 <_svfprintf_r+0x1474> + 304f0: f10a 0a01 add.w sl, sl, #1 + 304f4: f04f 0c00 mov.w ip, #0 + 304f8: e628 b.n 3014c <_svfprintf_r+0x10cc> + 304fa: bf00 nop + 304fc: 20004550 .word 0x20004550 + 30500: 20004b1c .word 0x20004b1c + 30504: cccccccd .word 0xcccccccd + 30508: ee1b 1a10 vmov r1, s22 + 3050c: aa24 add r2, sp, #144 ; 0x90 + 3050e: 4658 mov r0, fp + 30510: f002 f87c bl 3260c <__ssprint_r> + 30514: 2800 cmp r0, #0 + 30516: f47f aa18 bne.w 2f94a <_svfprintf_r+0x8ca> + 3051a: 991b ldr r1, [sp, #108] ; 0x6c + 3051c: 9a26 ldr r2, [sp, #152] ; 0x98 + 3051e: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 30522: e67c b.n 3021e <_svfprintf_r+0x119e> + 30524: 9b05 ldr r3, [sp, #20] + 30526: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 + 3052a: 930f str r3, [sp, #60] ; 0x3c + 3052c: e9cd 3302 strd r3, r3, [sp, #8] + 30530: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 + 30534: 9307 str r3, [sp, #28] + 30536: f7fe bf84 b.w 2f442 <_svfprintf_r+0x3c2> + 3053a: 990e ldr r1, [sp, #56] ; 0x38 + 3053c: 9805 ldr r0, [sp, #20] + 3053e: 1865 adds r5, r4, r1 + 30540: 1a2d subs r5, r5, r0 + 30542: 1acc subs r4, r1, r3 + 30544: 42a5 cmp r5, r4 + 30546: bfa8 it ge + 30548: 4625 movge r5, r4 + 3054a: f7ff bb4d b.w 2fbe8 <_svfprintf_r+0xb68> + 3054e: 9b08 ldr r3, [sp, #32] + 30550: 9904 ldr r1, [sp, #16] + 30552: f853 2b04 ldr.w r2, [r3], #4 + 30556: 9308 str r3, [sp, #32] + 30558: 8011 strh r1, [r2, #0] + 3055a: 464c mov r4, r9 + 3055c: f7fe bdc2 b.w 2f0e4 <_svfprintf_r+0x64> + 30560: f913 2b04 ldrsb.w r2, [r3], #4 + 30564: 9308 str r3, [sp, #32] + 30566: 17d1 asrs r1, r2, #31 + 30568: 460b mov r3, r1 + 3056a: f7fe bfdb b.w 2f524 <_svfprintf_r+0x4a4> + 3056e: 9a03 ldr r2, [sp, #12] + 30570: 2102 movs r1, #2 + 30572: ab22 add r3, sp, #136 ; 0x88 + 30574: 9301 str r3, [sp, #4] + 30576: ab1d add r3, sp, #116 ; 0x74 + 30578: 9300 str r3, [sp, #0] + 3057a: 4658 mov r0, fp + 3057c: ab1b add r3, sp, #108 ; 0x6c + 3057e: eeb0 0b4a vmov.f64 d0, d10 + 30582: 9202 str r2, [sp, #8] + 30584: f001 f9b8 bl 318f8 <_dtoa_r> + 30588: 2d47 cmp r5, #71 ; 0x47 + 3058a: 9a02 ldr r2, [sp, #8] + 3058c: 4604 mov r4, r0 + 3058e: f000 8161 beq.w 30854 <_svfprintf_r+0x17d4> + 30592: 2d46 cmp r5, #70 ; 0x46 + 30594: 4410 add r0, r2 + 30596: d105 bne.n 305a4 <_svfprintf_r+0x1524> + 30598: 7823 ldrb r3, [r4, #0] + 3059a: 2b30 cmp r3, #48 ; 0x30 + 3059c: f000 826f beq.w 30a7e <_svfprintf_r+0x19fe> + 305a0: 9a1b ldr r2, [sp, #108] ; 0x6c + 305a2: 4410 add r0, r2 + 305a4: eeb5 ab40 vcmp.f64 d10, #0.0 + 305a8: eef1 fa10 vmrs APSR_nzcv, fpscr + 305ac: f040 8146 bne.w 3083c <_svfprintf_r+0x17bc> + 305b0: 4603 mov r3, r0 + 305b2: 1b1b subs r3, r3, r4 + 305b4: 930e str r3, [sp, #56] ; 0x38 + 305b6: 2d47 cmp r5, #71 ; 0x47 + 305b8: f000 8110 beq.w 307dc <_svfprintf_r+0x175c> + 305bc: 2d46 cmp r5, #70 ; 0x46 + 305be: f000 81b5 beq.w 3092c <_svfprintf_r+0x18ac> + 305c2: 9b1b ldr r3, [sp, #108] ; 0x6c + 305c4: 930c str r3, [sp, #48] ; 0x30 + 305c6: 9b0c ldr r3, [sp, #48] ; 0x30 + 305c8: 2d41 cmp r5, #65 ; 0x41 + 305ca: f103 33ff add.w r3, r3, #4294967295 ; 0xffffffff + 305ce: 931b str r3, [sp, #108] ; 0x6c + 305d0: f000 81e5 beq.w 3099e <_svfprintf_r+0x191e> + 305d4: f89d 202c ldrb.w r2, [sp, #44] ; 0x2c + 305d8: 2100 movs r1, #0 + 305da: 2b00 cmp r3, #0 + 305dc: bfb8 it lt + 305de: 9b0c ldrlt r3, [sp, #48] ; 0x30 + 305e0: f88d 2078 strb.w r2, [sp, #120] ; 0x78 + 305e4: bfba itte lt + 305e6: f1c3 0301 rsblt r3, r3, #1 + 305ea: 222d movlt r2, #45 ; 0x2d + 305ec: 222b movge r2, #43 ; 0x2b + 305ee: 2b09 cmp r3, #9 + 305f0: f88d 2079 strb.w r2, [sp, #121] ; 0x79 + 305f4: f340 81da ble.w 309ac <_svfprintf_r+0x192c> + 305f8: f10d 058f add.w r5, sp, #143 ; 0x8f + 305fc: f8df c41c ldr.w ip, [pc, #1052] ; 30a1c <_svfprintf_r+0x199c> + 30600: 462a mov r2, r5 + 30602: 4610 mov r0, r2 + 30604: fb8c 2103 smull r2, r1, ip, r3 + 30608: 17da asrs r2, r3, #31 + 3060a: ebc2 02a1 rsb r2, r2, r1, asr #2 + 3060e: eb02 0182 add.w r1, r2, r2, lsl #2 + 30612: eba3 0141 sub.w r1, r3, r1, lsl #1 + 30616: 3130 adds r1, #48 ; 0x30 + 30618: f800 1c01 strb.w r1, [r0, #-1] + 3061c: 4619 mov r1, r3 + 3061e: 2963 cmp r1, #99 ; 0x63 + 30620: 4613 mov r3, r2 + 30622: f100 32ff add.w r2, r0, #4294967295 ; 0xffffffff + 30626: dcec bgt.n 30602 <_svfprintf_r+0x1582> + 30628: 3330 adds r3, #48 ; 0x30 + 3062a: b2d9 uxtb r1, r3 + 3062c: 1e83 subs r3, r0, #2 + 3062e: 429d cmp r5, r3 + 30630: f802 1c01 strb.w r1, [r2, #-1] + 30634: f240 828b bls.w 30b4e <_svfprintf_r+0x1ace> + 30638: 4613 mov r3, r2 + 3063a: f10d 027a add.w r2, sp, #122 ; 0x7a + 3063e: e001 b.n 30644 <_svfprintf_r+0x15c4> + 30640: f813 1b01 ldrb.w r1, [r3], #1 + 30644: f802 1b01 strb.w r1, [r2], #1 + 30648: 429d cmp r5, r3 + 3064a: d1f9 bne.n 30640 <_svfprintf_r+0x15c0> + 3064c: f10d 0391 add.w r3, sp, #145 ; 0x91 + 30650: f10d 027a add.w r2, sp, #122 ; 0x7a + 30654: 1a1b subs r3, r3, r0 + 30656: 4413 add r3, r2 + 30658: aa1e add r2, sp, #120 ; 0x78 + 3065a: 1a9b subs r3, r3, r2 + 3065c: 9314 str r3, [sp, #80] ; 0x50 + 3065e: 9b0e ldr r3, [sp, #56] ; 0x38 + 30660: 9a14 ldr r2, [sp, #80] ; 0x50 + 30662: 2b01 cmp r3, #1 + 30664: 441a add r2, r3 + 30666: 9205 str r2, [sp, #20] + 30668: f340 8203 ble.w 30a72 <_svfprintf_r+0x19f2> + 3066c: 9b05 ldr r3, [sp, #20] + 3066e: 9a10 ldr r2, [sp, #64] ; 0x40 + 30670: 4413 add r3, r2 + 30672: 9305 str r3, [sp, #20] + 30674: f426 6380 bic.w r3, r6, #1024 ; 0x400 + 30678: 9a05 ldr r2, [sp, #20] + 3067a: f443 7880 orr.w r8, r3, #256 ; 0x100 + 3067e: 2300 movs r3, #0 + 30680: e9cd 330c strd r3, r3, [sp, #48] ; 0x30 + 30684: ea22 72e2 bic.w r2, r2, r2, asr #31 + 30688: 930f str r3, [sp, #60] ; 0x3c + 3068a: 9202 str r2, [sp, #8] + 3068c: 9b09 ldr r3, [sp, #36] ; 0x24 + 3068e: 2b00 cmp r3, #0 + 30690: f040 80b1 bne.w 307f6 <_svfprintf_r+0x1776> + 30694: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 + 30698: 9303 str r3, [sp, #12] + 3069a: f7fe bed2 b.w 2f442 <_svfprintf_r+0x3c2> + 3069e: 4620 mov r0, r4 + 306a0: f7fe face bl 2ec40 + 306a4: 4602 mov r2, r0 + 306a6: 9005 str r0, [sp, #20] + 306a8: f7fe bf20 b.w 2f4ec <_svfprintf_r+0x46c> + 306ac: ee1b 1a10 vmov r1, s22 + 306b0: aa24 add r2, sp, #144 ; 0x90 + 306b2: 4658 mov r0, fp + 306b4: f001 ffaa bl 3260c <__ssprint_r> + 306b8: f7fe bded b.w 2f296 <_svfprintf_r+0x216> + 306bc: 1c59 adds r1, r3, #1 + 306be: 4658 mov r0, fp + 306c0: f7fd f924 bl 2d90c <_malloc_r> + 306c4: 4604 mov r4, r0 + 306c6: 2800 cmp r0, #0 + 306c8: f000 81ca beq.w 30a60 <_svfprintf_r+0x19e0> + 306cc: 9007 str r0, [sp, #28] + 306ce: e6e0 b.n 30492 <_svfprintf_r+0x1412> + 306d0: ee1b 1a10 vmov r1, s22 + 306d4: aa24 add r2, sp, #144 ; 0x90 + 306d6: 4658 mov r0, fp + 306d8: f001 ff98 bl 3260c <__ssprint_r> + 306dc: 2800 cmp r0, #0 + 306de: f47f a934 bne.w 2f94a <_svfprintf_r+0x8ca> + 306e2: 9a26 ldr r2, [sp, #152] ; 0x98 + 306e4: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 306e8: f7ff ba49 b.w 2fb7e <_svfprintf_r+0xafe> + 306ec: ee1b 1a10 vmov r1, s22 + 306f0: aa24 add r2, sp, #144 ; 0x90 + 306f2: 4658 mov r0, fp + 306f4: f001 ff8a bl 3260c <__ssprint_r> + 306f8: 2800 cmp r0, #0 + 306fa: f47f a926 bne.w 2f94a <_svfprintf_r+0x8ca> + 306fe: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 30702: 991b ldr r1, [sp, #108] ; 0x6c + 30704: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 30708: e649 b.n 3039e <_svfprintf_r+0x131e> + 3070a: 2306 movs r3, #6 + 3070c: 9303 str r3, [sp, #12] + 3070e: f7ff bb83 b.w 2fe18 <_svfprintf_r+0xd98> + 30712: 9b03 ldr r3, [sp, #12] + 30714: 2102 movs r1, #2 + 30716: 1c5a adds r2, r3, #1 + 30718: e72b b.n 30572 <_svfprintf_r+0x14f2> + 3071a: 9a03 ldr r2, [sp, #12] + 3071c: 2103 movs r1, #3 + 3071e: e728 b.n 30572 <_svfprintf_r+0x14f2> + 30720: a81b add r0, sp, #108 ; 0x6c + 30722: eeb0 0b4a vmov.f64 d0, d10 + 30726: f000 fff7 bl 31718 + 3072a: eeb4 7b00 vmov.f64 d7, #64 ; 0x3e000000 0.125 + 3072e: ee20 0b07 vmul.f64 d0, d0, d7 + 30732: eeb5 0b40 vcmp.f64 d0, #0.0 + 30736: eef1 fa10 vmrs APSR_nzcv, fpscr + 3073a: d101 bne.n 30740 <_svfprintf_r+0x16c0> + 3073c: 2301 movs r3, #1 + 3073e: 931b str r3, [sp, #108] ; 0x6c + 30740: 48b3 ldr r0, [pc, #716] ; (30a10 <_svfprintf_r+0x1990>) + 30742: 9b03 ldr r3, [sp, #12] + 30744: eeb3 5b00 vmov.f64 d5, #48 ; 0x41800000 16.0 + 30748: 3b01 subs r3, #1 + 3074a: 4622 mov r2, r4 + 3074c: e004 b.n 30758 <_svfprintf_r+0x16d8> + 3074e: eeb5 0b40 vcmp.f64 d0, #0.0 + 30752: eef1 fa10 vmrs APSR_nzcv, fpscr + 30756: d013 beq.n 30780 <_svfprintf_r+0x1700> + 30758: ee20 0b05 vmul.f64 d0, d0, d5 + 3075c: eefd 7bc0 vcvt.s32.f64 s15, d0 + 30760: f1b3 3fff cmp.w r3, #4294967295 ; 0xffffffff + 30764: ee17 1a90 vmov r1, s15 + 30768: 5c41 ldrb r1, [r0, r1] + 3076a: eeb8 6be7 vcvt.f64.s32 d6, s15 + 3076e: 4694 mov ip, r2 + 30770: ee30 0b46 vsub.f64 d0, d0, d6 + 30774: f802 1b01 strb.w r1, [r2], #1 + 30778: 4619 mov r1, r3 + 3077a: f103 33ff add.w r3, r3, #4294967295 ; 0xffffffff + 3077e: d1e6 bne.n 3074e <_svfprintf_r+0x16ce> + 30780: eeb6 6b00 vmov.f64 d6, #96 ; 0x3f000000 0.5 + 30784: eeb4 0bc6 vcmpe.f64 d0, d6 + 30788: eef1 fa10 vmrs APSR_nzcv, fpscr + 3078c: f300 8148 bgt.w 30a20 <_svfprintf_r+0x19a0> + 30790: eeb4 0b46 vcmp.f64 d0, d6 + 30794: eef1 fa10 vmrs APSR_nzcv, fpscr + 30798: d104 bne.n 307a4 <_svfprintf_r+0x1724> + 3079a: ee17 3a90 vmov r3, s15 + 3079e: 07db lsls r3, r3, #31 + 307a0: f100 813e bmi.w 30a20 <_svfprintf_r+0x19a0> + 307a4: 2900 cmp r1, #0 + 307a6: db06 blt.n 307b6 <_svfprintf_r+0x1736> + 307a8: 1c4b adds r3, r1, #1 + 307aa: 4413 add r3, r2 + 307ac: 2130 movs r1, #48 ; 0x30 + 307ae: f802 1b01 strb.w r1, [r2], #1 + 307b2: 4293 cmp r3, r2 + 307b4: d1fb bne.n 307ae <_svfprintf_r+0x172e> + 307b6: 1b13 subs r3, r2, r4 + 307b8: 930e str r3, [sp, #56] ; 0x38 + 307ba: e6fc b.n 305b6 <_svfprintf_r+0x1536> + 307bc: 9c0b ldr r4, [sp, #44] ; 0x2c + 307be: 9b0e ldr r3, [sp, #56] ; 0x38 + 307c0: f8dd 9024 ldr.w r9, [sp, #36] ; 0x24 + 307c4: f8dd 8028 ldr.w r8, [sp, #40] ; 0x28 + 307c8: 9613 str r6, [sp, #76] ; 0x4c + 307ca: 18e3 adds r3, r4, r3 + 307cc: 429d cmp r5, r3 + 307ce: 4629 mov r1, r5 + 307d0: bf28 it cs + 307d2: 4619 movcs r1, r3 + 307d4: 4682 mov sl, r0 + 307d6: 9105 str r1, [sp, #20] + 307d8: f7ff b9d8 b.w 2fb8c <_svfprintf_r+0xb0c> + 307dc: 9b1b ldr r3, [sp, #108] ; 0x6c + 307de: 930c str r3, [sp, #48] ; 0x30 + 307e0: 1cda adds r2, r3, #3 + 307e2: db02 blt.n 307ea <_svfprintf_r+0x176a> + 307e4: 9a03 ldr r2, [sp, #12] + 307e6: 4293 cmp r3, r2 + 307e8: dd0c ble.n 30804 <_svfprintf_r+0x1784> + 307ea: 9b0b ldr r3, [sp, #44] ; 0x2c + 307ec: 3b02 subs r3, #2 + 307ee: 930b str r3, [sp, #44] ; 0x2c + 307f0: f023 0520 bic.w r5, r3, #32 + 307f4: e6e7 b.n 305c6 <_svfprintf_r+0x1546> + 307f6: 212d movs r1, #45 ; 0x2d + 307f8: 2300 movs r3, #0 + 307fa: f88d 1067 strb.w r1, [sp, #103] ; 0x67 + 307fe: 9303 str r3, [sp, #12] + 30800: f7fe be22 b.w 2f448 <_svfprintf_r+0x3c8> + 30804: 9b0c ldr r3, [sp, #48] ; 0x30 + 30806: 9a0e ldr r2, [sp, #56] ; 0x38 + 30808: 4293 cmp r3, r2 + 3080a: f2c0 80bd blt.w 30988 <_svfprintf_r+0x1908> + 3080e: 07f0 lsls r0, r6, #31 + 30810: 9b0c ldr r3, [sp, #48] ; 0x30 + 30812: f140 8132 bpl.w 30a7a <_svfprintf_r+0x19fa> + 30816: 9a10 ldr r2, [sp, #64] ; 0x40 + 30818: 4413 add r3, r2 + 3081a: 9305 str r3, [sp, #20] + 3081c: 0571 lsls r1, r6, #21 + 3081e: d503 bpl.n 30828 <_svfprintf_r+0x17a8> + 30820: 9b0c ldr r3, [sp, #48] ; 0x30 + 30822: 2b00 cmp r3, #0 + 30824: f300 8135 bgt.w 30a92 <_svfprintf_r+0x1a12> + 30828: 9b05 ldr r3, [sp, #20] + 3082a: ea23 73e3 bic.w r3, r3, r3, asr #31 + 3082e: 9302 str r3, [sp, #8] + 30830: 2367 movs r3, #103 ; 0x67 + 30832: 930b str r3, [sp, #44] ; 0x2c + 30834: 2300 movs r3, #0 + 30836: 930f str r3, [sp, #60] ; 0x3c + 30838: 930d str r3, [sp, #52] ; 0x34 + 3083a: e727 b.n 3068c <_svfprintf_r+0x160c> + 3083c: 9b22 ldr r3, [sp, #136] ; 0x88 + 3083e: 4283 cmp r3, r0 + 30840: f4bf aeb7 bcs.w 305b2 <_svfprintf_r+0x1532> + 30844: 2130 movs r1, #48 ; 0x30 + 30846: 1c5a adds r2, r3, #1 + 30848: 9222 str r2, [sp, #136] ; 0x88 + 3084a: 7019 strb r1, [r3, #0] + 3084c: 9b22 ldr r3, [sp, #136] ; 0x88 + 3084e: 4298 cmp r0, r3 + 30850: d8f9 bhi.n 30846 <_svfprintf_r+0x17c6> + 30852: e6ae b.n 305b2 <_svfprintf_r+0x1532> + 30854: 07f3 lsls r3, r6, #31 + 30856: f100 80a7 bmi.w 309a8 <_svfprintf_r+0x1928> + 3085a: 9b22 ldr r3, [sp, #136] ; 0x88 + 3085c: e6a9 b.n 305b2 <_svfprintf_r+0x1532> 3085e: aa24 add r2, sp, #144 ; 0x90 30860: 4658 mov r0, fp - 30862: f001 fe53 bl 3250c <__ssprint_r> - 30866: 2800 cmp r0, #0 - 30868: f47e afef bne.w 2f84a <_svfprintf_r+0x8ca> - 3086c: 9c1b ldr r4, [sp, #108] ; 0x6c - 3086e: 9b0e ldr r3, [sp, #56] ; 0x38 - 30870: 9a26 ldr r2, [sp, #152] ; 0x98 - 30872: 1b1c subs r4, r3, r4 - 30874: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 30878: f7ff b936 b.w 2fae8 <_svfprintf_r+0xb68> - 3087c: 2358 movs r3, #88 ; 0x58 - 3087e: e78d b.n 3079c <_svfprintf_r+0x181c> - 30880: 2200 movs r2, #0 - 30882: 9203 str r2, [sp, #12] - 30884: f7fe bbda b.w 2f03c <_svfprintf_r+0xbc> - 30888: 9b0e ldr r3, [sp, #56] ; 0x38 - 3088a: 9a10 ldr r2, [sp, #64] ; 0x40 - 3088c: 189a adds r2, r3, r2 - 3088e: 9b0c ldr r3, [sp, #48] ; 0x30 - 30890: 9205 str r2, [sp, #20] - 30892: 2b00 cmp r3, #0 - 30894: f340 80ab ble.w 309ee <_svfprintf_r+0x1a6e> - 30898: 2367 movs r3, #103 ; 0x67 - 3089a: 930b str r3, [sp, #44] ; 0x2c - 3089c: e7d5 b.n 3084a <_svfprintf_r+0x18ca> - 3089e: 9a0b ldr r2, [sp, #44] ; 0x2c - 308a0: 320f adds r2, #15 - 308a2: b2d2 uxtb r2, r2 - 308a4: 2101 movs r1, #1 - 308a6: e618 b.n 304da <_svfprintf_r+0x155a> - 308a8: 18a0 adds r0, r4, r2 - 308aa: e5fb b.n 304a4 <_svfprintf_r+0x1524> - 308ac: 2900 cmp r1, #0 - 308ae: f040 80a8 bne.w 30a02 <_svfprintf_r+0x1a82> - 308b2: 2230 movs r2, #48 ; 0x30 - 308b4: f88d 207a strb.w r2, [sp, #122] ; 0x7a - 308b8: f10d 027b add.w r2, sp, #123 ; 0x7b - 308bc: 3330 adds r3, #48 ; 0x30 - 308be: f802 3b01 strb.w r3, [r2], #1 - 308c2: ab1e add r3, sp, #120 ; 0x78 - 308c4: 1ad3 subs r3, r2, r3 - 308c6: 9314 str r3, [sp, #80] ; 0x50 - 308c8: e649 b.n 3055e <_svfprintf_r+0x15de> - 308ca: 3301 adds r3, #1 - 308cc: 4912 ldr r1, [pc, #72] ; (30918 <_svfprintf_r+0x1998>) - 308ce: f8ca 5004 str.w r5, [sl, #4] - 308d2: 442a add r2, r5 - 308d4: 2b07 cmp r3, #7 - 308d6: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 - 308da: f8ca 1000 str.w r1, [sl] - 308de: f77f ac33 ble.w 30148 <_svfprintf_r+0x11c8> - 308e2: ee1b 1a10 vmov r1, s22 - 308e6: aa24 add r2, sp, #144 ; 0x90 - 308e8: 4658 mov r0, fp - 308ea: f001 fe0f bl 3250c <__ssprint_r> - 308ee: 2800 cmp r0, #0 - 308f0: f47e afab bne.w 2f84a <_svfprintf_r+0x8ca> - 308f4: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 - 308f8: f10d 0a9c add.w sl, sp, #156 ; 0x9c - 308fc: e426 b.n 3014c <_svfprintf_r+0x11cc> - 308fe: 1c59 adds r1, r3, #1 - 30900: 4658 mov r0, fp - 30902: f7fc ff8f bl 2d824 <_malloc_r> - 30906: 4604 mov r4, r0 - 30908: b350 cbz r0, 30960 <_svfprintf_r+0x19e0> - 3090a: 9007 str r0, [sp, #28] - 3090c: e754 b.n 307b8 <_svfprintf_r+0x1838> - 3090e: bf00 nop - 30910: 20004474 .word 0x20004474 - 30914: 20004460 .word 0x20004460 - 30918: 20004a5c .word 0x20004a5c - 3091c: 66666667 .word 0x66666667 - 30920: f8cd c088 str.w ip, [sp, #136] ; 0x88 - 30924: f812 1c01 ldrb.w r1, [r2, #-1] - 30928: f890 c00f ldrb.w ip, [r0, #15] - 3092c: 4561 cmp r1, ip - 3092e: 4613 mov r3, r2 - 30930: d10a bne.n 30948 <_svfprintf_r+0x19c8> - 30932: f04f 0e30 mov.w lr, #48 ; 0x30 - 30936: f803 ec01 strb.w lr, [r3, #-1] - 3093a: 9b22 ldr r3, [sp, #136] ; 0x88 - 3093c: 1e59 subs r1, r3, #1 - 3093e: 9122 str r1, [sp, #136] ; 0x88 - 30940: f813 1c01 ldrb.w r1, [r3, #-1] - 30944: 458c cmp ip, r1 - 30946: d0f6 beq.n 30936 <_svfprintf_r+0x19b6> - 30948: 2939 cmp r1, #57 ; 0x39 - 3094a: bf16 itet ne - 3094c: 3101 addne r1, #1 - 3094e: 7a81 ldrbeq r1, [r0, #10] - 30950: b2c9 uxtbne r1, r1 - 30952: f803 1c01 strb.w r1, [r3, #-1] - 30956: e6ae b.n 306b6 <_svfprintf_r+0x1736> - 30958: 2300 movs r3, #0 - 3095a: 4690 mov r8, r2 - 3095c: 9307 str r3, [sp, #28] - 3095e: e760 b.n 30822 <_svfprintf_r+0x18a2> - 30960: ee1b 2a10 vmov r2, s22 - 30964: f9b2 300c ldrsh.w r3, [r2, #12] - 30968: f043 0340 orr.w r3, r3, #64 ; 0x40 - 3096c: 8193 strh r3, [r2, #12] - 3096e: f7fe bc16 b.w 2f19e <_svfprintf_r+0x21e> - 30972: 07f5 lsls r5, r6, #31 - 30974: f57f adfe bpl.w 30574 <_svfprintf_r+0x15f4> - 30978: e5f8 b.n 3056c <_svfprintf_r+0x15ec> - 3097a: 9305 str r3, [sp, #20] - 3097c: e6ce b.n 3071c <_svfprintf_r+0x179c> - 3097e: eeb5 ab40 vcmp.f64 d10, #0.0 - 30982: eef1 fa10 vmrs APSR_nzcv, fpscr - 30986: f43f ad8b beq.w 304a0 <_svfprintf_r+0x1520> - 3098a: f1c2 0201 rsb r2, r2, #1 - 3098e: 921b str r2, [sp, #108] ; 0x6c - 30990: e587 b.n 304a2 <_svfprintf_r+0x1522> - 30992: 2367 movs r3, #103 ; 0x67 - 30994: 930b str r3, [sp, #44] ; 0x2c - 30996: 9913 ldr r1, [sp, #76] ; 0x4c - 30998: 780b ldrb r3, [r1, #0] - 3099a: 2bff cmp r3, #255 ; 0xff - 3099c: d079 beq.n 30a92 <_svfprintf_r+0x1b12> - 3099e: 2500 movs r5, #0 - 309a0: 9a0c ldr r2, [sp, #48] ; 0x30 - 309a2: 4628 mov r0, r5 - 309a4: e003 b.n 309ae <_svfprintf_r+0x1a2e> - 309a6: 3001 adds r0, #1 - 309a8: 3101 adds r1, #1 - 309aa: 2bff cmp r3, #255 ; 0xff - 309ac: d008 beq.n 309c0 <_svfprintf_r+0x1a40> - 309ae: 4293 cmp r3, r2 - 309b0: da06 bge.n 309c0 <_svfprintf_r+0x1a40> - 309b2: 1ad2 subs r2, r2, r3 - 309b4: 784b ldrb r3, [r1, #1] - 309b6: 2b00 cmp r3, #0 - 309b8: d1f5 bne.n 309a6 <_svfprintf_r+0x1a26> - 309ba: 780b ldrb r3, [r1, #0] - 309bc: 3501 adds r5, #1 - 309be: e7f4 b.n 309aa <_svfprintf_r+0x1a2a> - 309c0: 920c str r2, [sp, #48] ; 0x30 - 309c2: 9113 str r1, [sp, #76] ; 0x4c - 309c4: 900d str r0, [sp, #52] ; 0x34 - 309c6: 950f str r5, [sp, #60] ; 0x3c - 309c8: 9a0f ldr r2, [sp, #60] ; 0x3c - 309ca: 9b0d ldr r3, [sp, #52] ; 0x34 - 309cc: 9916 ldr r1, [sp, #88] ; 0x58 - 309ce: 4413 add r3, r2 - 309d0: 9a05 ldr r2, [sp, #20] - 309d2: fb01 2303 mla r3, r1, r3, r2 - 309d6: 9305 str r3, [sp, #20] - 309d8: ea23 73e3 bic.w r3, r3, r3, asr #31 - 309dc: 9302 str r3, [sp, #8] - 309de: e5d5 b.n 3058c <_svfprintf_r+0x160c> - 309e0: 9b10 ldr r3, [sp, #64] ; 0x40 - 309e2: 18d3 adds r3, r2, r3 - 309e4: 4419 add r1, r3 - 309e6: 2366 movs r3, #102 ; 0x66 - 309e8: 9105 str r1, [sp, #20] - 309ea: 930b str r3, [sp, #44] ; 0x2c - 309ec: e72d b.n 3084a <_svfprintf_r+0x18ca> - 309ee: f1c3 0301 rsb r3, r3, #1 - 309f2: 441a add r2, r3 - 309f4: ea22 73e2 bic.w r3, r2, r2, asr #31 - 309f8: 9302 str r3, [sp, #8] - 309fa: 2367 movs r3, #103 ; 0x67 - 309fc: 9205 str r2, [sp, #20] - 309fe: 930b str r3, [sp, #44] ; 0x2c - 30a00: e698 b.n 30734 <_svfprintf_r+0x17b4> - 30a02: f10d 027a add.w r2, sp, #122 ; 0x7a - 30a06: e759 b.n 308bc <_svfprintf_r+0x193c> - 30a08: 9b03 ldr r3, [sp, #12] - 30a0a: f8dd 9008 ldr.w r9, [sp, #8] - 30a0e: f8dd 801c ldr.w r8, [sp, #28] - 30a12: 9305 str r3, [sp, #20] - 30a14: e4b4 b.n 30380 <_svfprintf_r+0x1400> - 30a16: ee18 3a90 vmov r3, s17 - 30a1a: 2b00 cmp r3, #0 - 30a1c: bfb4 ite lt - 30a1e: 212d movlt r1, #45 ; 0x2d - 30a20: f89d 1067 ldrbge.w r1, [sp, #103] ; 0x67 - 30a24: 4c25 ldr r4, [pc, #148] ; (30abc <_svfprintf_r+0x1b3c>) - 30a26: 4b26 ldr r3, [pc, #152] ; (30ac0 <_svfprintf_r+0x1b40>) - 30a28: bfb8 it lt - 30a2a: f88d 1067 strblt.w r1, [sp, #103] ; 0x67 - 30a2e: f028 0880 bic.w r8, r8, #128 ; 0x80 - 30a32: f7fe bc79 b.w 2f328 <_svfprintf_r+0x3a8> - 30a36: 9b03 ldr r3, [sp, #12] - 30a38: 9302 str r3, [sp, #8] - 30a3a: 9305 str r3, [sp, #20] - 30a3c: 2373 movs r3, #115 ; 0x73 - 30a3e: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 - 30a42: 9003 str r0, [sp, #12] - 30a44: 900f str r0, [sp, #60] ; 0x3c - 30a46: 900d str r0, [sp, #52] ; 0x34 - 30a48: 930b str r3, [sp, #44] ; 0x2c - 30a4a: f7fe bc7a b.w 2f342 <_svfprintf_r+0x3c2> - 30a4e: 2302 movs r3, #2 - 30a50: 9314 str r3, [sp, #80] ; 0x50 - 30a52: e584 b.n 3055e <_svfprintf_r+0x15de> - 30a54: 9a03 ldr r2, [sp, #12] - 30a56: 4313 orrs r3, r2 - 30a58: d105 bne.n 30a66 <_svfprintf_r+0x1ae6> - 30a5a: 2301 movs r3, #1 - 30a5c: 2266 movs r2, #102 ; 0x66 - 30a5e: 9302 str r3, [sp, #8] - 30a60: 920b str r2, [sp, #44] ; 0x2c - 30a62: 9305 str r3, [sp, #20] - 30a64: e666 b.n 30734 <_svfprintf_r+0x17b4> - 30a66: 9b10 ldr r3, [sp, #64] ; 0x40 - 30a68: 3301 adds r3, #1 - 30a6a: 441a add r2, r3 - 30a6c: ea22 73e2 bic.w r3, r2, r2, asr #31 - 30a70: 9302 str r3, [sp, #8] - 30a72: 2366 movs r3, #102 ; 0x66 - 30a74: 9205 str r2, [sp, #20] - 30a76: 930b str r3, [sp, #44] ; 0x2c - 30a78: e65c b.n 30734 <_svfprintf_r+0x17b4> - 30a7a: 9a08 ldr r2, [sp, #32] - 30a7c: f899 3001 ldrb.w r3, [r9, #1] - 30a80: 4689 mov r9, r1 - 30a82: f852 1b04 ldr.w r1, [r2], #4 - 30a86: 9208 str r2, [sp, #32] - 30a88: ea41 71e1 orr.w r1, r1, r1, asr #31 - 30a8c: 9103 str r1, [sp, #12] - 30a8e: f7fe bad3 b.w 2f038 <_svfprintf_r+0xb8> - 30a92: 2300 movs r3, #0 - 30a94: 930f str r3, [sp, #60] ; 0x3c - 30a96: 930d str r3, [sp, #52] ; 0x34 - 30a98: e796 b.n 309c8 <_svfprintf_r+0x1a48> - 30a9a: 230c movs r3, #12 - 30a9c: f8cb 3000 str.w r3, [fp] - 30aa0: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff - 30aa4: 9304 str r3, [sp, #16] - 30aa6: f7fe bb81 b.w 2f1ac <_svfprintf_r+0x22c> - 30aaa: ee1b 2a10 vmov r2, s22 - 30aae: 8993 ldrh r3, [r2, #12] - 30ab0: f043 0340 orr.w r3, r3, #64 ; 0x40 - 30ab4: 8193 strh r3, [r2, #12] - 30ab6: f7fe bec8 b.w 2f84a <_svfprintf_r+0x8ca> - 30aba: bf00 nop - 30abc: 2000445c .word 0x2000445c - 30ac0: 200036a0 .word 0x200036a0 - -00030ac4 <_Balloc>: - 30ac4: 6c43 ldr r3, [r0, #68] ; 0x44 - 30ac6: b570 push {r4, r5, r6, lr} - 30ac8: 4605 mov r5, r0 - 30aca: 460c mov r4, r1 - 30acc: b14b cbz r3, 30ae2 <_Balloc+0x1e> - 30ace: f853 0024 ldr.w r0, [r3, r4, lsl #2] - 30ad2: b180 cbz r0, 30af6 <_Balloc+0x32> - 30ad4: 6802 ldr r2, [r0, #0] - 30ad6: f843 2024 str.w r2, [r3, r4, lsl #2] - 30ada: 2300 movs r3, #0 - 30adc: e9c0 3303 strd r3, r3, [r0, #12] - 30ae0: bd70 pop {r4, r5, r6, pc} - 30ae2: 2221 movs r2, #33 ; 0x21 - 30ae4: 2104 movs r1, #4 - 30ae6: f7fc fe51 bl 2d78c <_calloc_r> - 30aea: 4603 mov r3, r0 - 30aec: 6468 str r0, [r5, #68] ; 0x44 - 30aee: 2800 cmp r0, #0 - 30af0: d1ed bne.n 30ace <_Balloc+0xa> - 30af2: 2000 movs r0, #0 - 30af4: bd70 pop {r4, r5, r6, pc} - 30af6: 2101 movs r1, #1 - 30af8: fa01 f604 lsl.w r6, r1, r4 - 30afc: 1d72 adds r2, r6, #5 - 30afe: 0092 lsls r2, r2, #2 - 30b00: 4628 mov r0, r5 - 30b02: f7fc fe43 bl 2d78c <_calloc_r> - 30b06: 2800 cmp r0, #0 - 30b08: d0f3 beq.n 30af2 <_Balloc+0x2e> - 30b0a: e9c0 4601 strd r4, r6, [r0, #4] - 30b0e: e7e4 b.n 30ada <_Balloc+0x16> - -00030b10 <_Bfree>: - 30b10: b131 cbz r1, 30b20 <_Bfree+0x10> - 30b12: 6c43 ldr r3, [r0, #68] ; 0x44 - 30b14: 684a ldr r2, [r1, #4] - 30b16: f853 0022 ldr.w r0, [r3, r2, lsl #2] - 30b1a: 6008 str r0, [r1, #0] - 30b1c: f843 1022 str.w r1, [r3, r2, lsl #2] - 30b20: 4770 bx lr - 30b22: bf00 nop - -00030b24 <__multadd>: - 30b24: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 30b28: 690e ldr r6, [r1, #16] - 30b2a: 4680 mov r8, r0 - 30b2c: 460f mov r7, r1 - 30b2e: 461d mov r5, r3 - 30b30: f101 0e14 add.w lr, r1, #20 - 30b34: 2000 movs r0, #0 - 30b36: f8de 1000 ldr.w r1, [lr] - 30b3a: b28c uxth r4, r1 - 30b3c: fb02 5304 mla r3, r2, r4, r5 - 30b40: 0c09 lsrs r1, r1, #16 - 30b42: ea4f 4c13 mov.w ip, r3, lsr #16 - 30b46: fb02 cc01 mla ip, r2, r1, ip - 30b4a: 3001 adds r0, #1 - 30b4c: b29c uxth r4, r3 - 30b4e: eb04 440c add.w r4, r4, ip, lsl #16 - 30b52: 4286 cmp r6, r0 - 30b54: f84e 4b04 str.w r4, [lr], #4 - 30b58: ea4f 451c mov.w r5, ip, lsr #16 - 30b5c: dceb bgt.n 30b36 <__multadd+0x12> - 30b5e: b13d cbz r5, 30b70 <__multadd+0x4c> - 30b60: 68bb ldr r3, [r7, #8] - 30b62: 42b3 cmp r3, r6 - 30b64: dd07 ble.n 30b76 <__multadd+0x52> - 30b66: eb07 0386 add.w r3, r7, r6, lsl #2 - 30b6a: 3601 adds r6, #1 - 30b6c: 615d str r5, [r3, #20] - 30b6e: 613e str r6, [r7, #16] - 30b70: 4638 mov r0, r7 - 30b72: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 30b76: 6879 ldr r1, [r7, #4] - 30b78: 4640 mov r0, r8 - 30b7a: 3101 adds r1, #1 - 30b7c: f7ff ffa2 bl 30ac4 <_Balloc> - 30b80: 4604 mov r4, r0 - 30b82: b1b0 cbz r0, 30bb2 <__multadd+0x8e> - 30b84: 693a ldr r2, [r7, #16] - 30b86: 3202 adds r2, #2 - 30b88: f107 010c add.w r1, r7, #12 - 30b8c: 0092 lsls r2, r2, #2 - 30b8e: 300c adds r0, #12 - 30b90: f7f9 fdba bl 2a708 - 30b94: f8d8 3044 ldr.w r3, [r8, #68] ; 0x44 - 30b98: 687a ldr r2, [r7, #4] - 30b9a: f853 1022 ldr.w r1, [r3, r2, lsl #2] - 30b9e: 6039 str r1, [r7, #0] - 30ba0: f843 7022 str.w r7, [r3, r2, lsl #2] - 30ba4: 4627 mov r7, r4 - 30ba6: eb07 0386 add.w r3, r7, r6, lsl #2 - 30baa: 3601 adds r6, #1 - 30bac: 615d str r5, [r3, #20] - 30bae: 613e str r6, [r7, #16] - 30bb0: e7de b.n 30b70 <__multadd+0x4c> - 30bb2: 4b03 ldr r3, [pc, #12] ; (30bc0 <__multadd+0x9c>) - 30bb4: 4803 ldr r0, [pc, #12] ; (30bc4 <__multadd+0xa0>) - 30bb6: 4622 mov r2, r4 - 30bb8: 21ba movs r1, #186 ; 0xba - 30bba: f000 fd69 bl 31690 <__assert_func> - 30bbe: bf00 nop - 30bc0: 20004268 .word 0x20004268 - 30bc4: 2000427c .word 0x2000427c - -00030bc8 <__hi0bits>: - 30bc8: 0c03 lsrs r3, r0, #16 - 30bca: 041b lsls r3, r3, #16 - 30bcc: b9d3 cbnz r3, 30c04 <__hi0bits+0x3c> - 30bce: 0400 lsls r0, r0, #16 - 30bd0: 2310 movs r3, #16 - 30bd2: f010 4f7f tst.w r0, #4278190080 ; 0xff000000 - 30bd6: bf04 itt eq - 30bd8: 0200 lsleq r0, r0, #8 - 30bda: 3308 addeq r3, #8 - 30bdc: f010 4f70 tst.w r0, #4026531840 ; 0xf0000000 - 30be0: bf04 itt eq - 30be2: 0100 lsleq r0, r0, #4 - 30be4: 3304 addeq r3, #4 - 30be6: f010 4f40 tst.w r0, #3221225472 ; 0xc0000000 - 30bea: bf04 itt eq - 30bec: 0080 lsleq r0, r0, #2 - 30bee: 3302 addeq r3, #2 - 30bf0: 2800 cmp r0, #0 - 30bf2: db05 blt.n 30c00 <__hi0bits+0x38> - 30bf4: f010 4f80 tst.w r0, #1073741824 ; 0x40000000 - 30bf8: f103 0301 add.w r3, r3, #1 - 30bfc: bf08 it eq - 30bfe: 2320 moveq r3, #32 - 30c00: 4618 mov r0, r3 - 30c02: 4770 bx lr - 30c04: 2300 movs r3, #0 - 30c06: e7e4 b.n 30bd2 <__hi0bits+0xa> - -00030c08 <__lo0bits>: - 30c08: 6803 ldr r3, [r0, #0] - 30c0a: f013 0207 ands.w r2, r3, #7 - 30c0e: d008 beq.n 30c22 <__lo0bits+0x1a> - 30c10: 07d9 lsls r1, r3, #31 - 30c12: d41f bmi.n 30c54 <__lo0bits+0x4c> - 30c14: 079a lsls r2, r3, #30 - 30c16: d522 bpl.n 30c5e <__lo0bits+0x56> - 30c18: 085b lsrs r3, r3, #1 - 30c1a: 6003 str r3, [r0, #0] - 30c1c: 2201 movs r2, #1 - 30c1e: 4610 mov r0, r2 + 30862: 9105 str r1, [sp, #20] + 30864: f001 fed2 bl 3260c <__ssprint_r> + 30868: 2800 cmp r0, #0 + 3086a: f47f a86e bne.w 2f94a <_svfprintf_r+0x8ca> + 3086e: f896 c000 ldrb.w ip, [r6] + 30872: 9a26 ldr r2, [sp, #152] ; 0x98 + 30874: 9905 ldr r1, [sp, #20] + 30876: a827 add r0, sp, #156 ; 0x9c + 30878: 4465 add r5, ip + 3087a: f7ff bbec b.w 30056 <_svfprintf_r+0xfd6> + 3087e: ee1b 1a10 vmov r1, s22 + 30882: aa24 add r2, sp, #144 ; 0x90 + 30884: 4658 mov r0, fp + 30886: f001 fec1 bl 3260c <__ssprint_r> + 3088a: 2800 cmp r0, #0 + 3088c: f47f a85d bne.w 2f94a <_svfprintf_r+0x8ca> + 30890: 9a26 ldr r2, [sp, #152] ; 0x98 + 30892: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 30896: f7ff b96b b.w 2fb70 <_svfprintf_r+0xaf0> + 3089a: 2378 movs r3, #120 ; 0x78 + 3089c: f88d 3069 strb.w r3, [sp, #105] ; 0x69 + 308a0: 2330 movs r3, #48 ; 0x30 + 308a2: f88d 3068 strb.w r3, [sp, #104] ; 0x68 + 308a6: 9b03 ldr r3, [sp, #12] + 308a8: 2b63 cmp r3, #99 ; 0x63 + 308aa: f048 0602 orr.w r6, r8, #2 + 308ae: f300 80a6 bgt.w 309fe <_svfprintf_r+0x197e> + 308b2: 2300 movs r3, #0 + 308b4: 9307 str r3, [sp, #28] + 308b6: ac37 add r4, sp, #220 ; 0xdc + 308b8: ee18 3a90 vmov r3, s17 + 308bc: 2b00 cmp r3, #0 + 308be: f448 7881 orr.w r8, r8, #258 ; 0x102 + 308c2: db2b blt.n 3091c <_svfprintf_r+0x189c> + 308c4: eeb0 ab48 vmov.f64 d10, d8 + 308c8: 9b0b ldr r3, [sp, #44] ; 0x2c + 308ca: f023 0520 bic.w r5, r3, #32 + 308ce: 2300 movs r3, #0 + 308d0: 9309 str r3, [sp, #36] ; 0x24 + 308d2: 9b0b ldr r3, [sp, #44] ; 0x2c + 308d4: 2b61 cmp r3, #97 ; 0x61 + 308d6: f47f aaad bne.w 2fe34 <_svfprintf_r+0xdb4> + 308da: eeb0 0b4a vmov.f64 d0, d10 + 308de: a81b add r0, sp, #108 ; 0x6c + 308e0: f000 ff1a bl 31718 + 308e4: eeb4 7b00 vmov.f64 d7, #64 ; 0x3e000000 0.125 + 308e8: ee20 0b07 vmul.f64 d0, d0, d7 + 308ec: eeb5 0b40 vcmp.f64 d0, #0.0 + 308f0: eef1 fa10 vmrs APSR_nzcv, fpscr + 308f4: d101 bne.n 308fa <_svfprintf_r+0x187a> + 308f6: 2301 movs r3, #1 + 308f8: 931b str r3, [sp, #108] ; 0x6c + 308fa: 4846 ldr r0, [pc, #280] ; (30a14 <_svfprintf_r+0x1994>) + 308fc: e721 b.n 30742 <_svfprintf_r+0x16c2> + 308fe: ee1b 1a10 vmov r1, s22 + 30902: aa24 add r2, sp, #144 ; 0x90 + 30904: 4658 mov r0, fp + 30906: f001 fe81 bl 3260c <__ssprint_r> + 3090a: 2800 cmp r0, #0 + 3090c: f47f a81d bne.w 2f94a <_svfprintf_r+0x8ca> + 30910: 9b1b ldr r3, [sp, #108] ; 0x6c + 30912: 9a26 ldr r2, [sp, #152] ; 0x98 + 30914: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 30918: f7ff b94e b.w 2fbb8 <_svfprintf_r+0xb38> + 3091c: 9b0b ldr r3, [sp, #44] ; 0x2c + 3091e: f023 0520 bic.w r5, r3, #32 + 30922: 232d movs r3, #45 ; 0x2d + 30924: 9309 str r3, [sp, #36] ; 0x24 + 30926: eeb1 ab48 vneg.f64 d10, d8 + 3092a: e7d2 b.n 308d2 <_svfprintf_r+0x1852> + 3092c: 9a1b ldr r2, [sp, #108] ; 0x6c + 3092e: 920c str r2, [sp, #48] ; 0x30 + 30930: 2a00 cmp r2, #0 + 30932: f006 0301 and.w r3, r6, #1 + 30936: f340 810d ble.w 30b54 <_svfprintf_r+0x1ad4> + 3093a: 9903 ldr r1, [sp, #12] + 3093c: 430b orrs r3, r1 + 3093e: f040 80cf bne.w 30ae0 <_svfprintf_r+0x1a60> + 30942: 9b0c ldr r3, [sp, #48] ; 0x30 + 30944: 9305 str r3, [sp, #20] + 30946: 2366 movs r3, #102 ; 0x66 + 30948: 930b str r3, [sp, #44] ; 0x2c + 3094a: 0572 lsls r2, r6, #21 + 3094c: f100 80a3 bmi.w 30a96 <_svfprintf_r+0x1a16> + 30950: 9b05 ldr r3, [sp, #20] + 30952: ea23 73e3 bic.w r3, r3, r3, asr #31 + 30956: 9302 str r3, [sp, #8] + 30958: e76c b.n 30834 <_svfprintf_r+0x17b4> + 3095a: ee1b 1a10 vmov r1, s22 + 3095e: aa24 add r2, sp, #144 ; 0x90 + 30960: 4658 mov r0, fp + 30962: f001 fe53 bl 3260c <__ssprint_r> + 30966: 2800 cmp r0, #0 + 30968: f47e afef bne.w 2f94a <_svfprintf_r+0x8ca> + 3096c: 9c1b ldr r4, [sp, #108] ; 0x6c + 3096e: 9b0e ldr r3, [sp, #56] ; 0x38 + 30970: 9a26 ldr r2, [sp, #152] ; 0x98 + 30972: 1b1c subs r4, r3, r4 + 30974: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 30978: f7ff b936 b.w 2fbe8 <_svfprintf_r+0xb68> + 3097c: 2358 movs r3, #88 ; 0x58 + 3097e: e78d b.n 3089c <_svfprintf_r+0x181c> + 30980: 2200 movs r2, #0 + 30982: 9203 str r2, [sp, #12] + 30984: f7fe bbda b.w 2f13c <_svfprintf_r+0xbc> + 30988: 9b0e ldr r3, [sp, #56] ; 0x38 + 3098a: 9a10 ldr r2, [sp, #64] ; 0x40 + 3098c: 189a adds r2, r3, r2 + 3098e: 9b0c ldr r3, [sp, #48] ; 0x30 + 30990: 9205 str r2, [sp, #20] + 30992: 2b00 cmp r3, #0 + 30994: f340 80ab ble.w 30aee <_svfprintf_r+0x1a6e> + 30998: 2367 movs r3, #103 ; 0x67 + 3099a: 930b str r3, [sp, #44] ; 0x2c + 3099c: e7d5 b.n 3094a <_svfprintf_r+0x18ca> + 3099e: 9a0b ldr r2, [sp, #44] ; 0x2c + 309a0: 320f adds r2, #15 + 309a2: b2d2 uxtb r2, r2 + 309a4: 2101 movs r1, #1 + 309a6: e618 b.n 305da <_svfprintf_r+0x155a> + 309a8: 18a0 adds r0, r4, r2 + 309aa: e5fb b.n 305a4 <_svfprintf_r+0x1524> + 309ac: 2900 cmp r1, #0 + 309ae: f040 80a8 bne.w 30b02 <_svfprintf_r+0x1a82> + 309b2: 2230 movs r2, #48 ; 0x30 + 309b4: f88d 207a strb.w r2, [sp, #122] ; 0x7a + 309b8: f10d 027b add.w r2, sp, #123 ; 0x7b + 309bc: 3330 adds r3, #48 ; 0x30 + 309be: f802 3b01 strb.w r3, [r2], #1 + 309c2: ab1e add r3, sp, #120 ; 0x78 + 309c4: 1ad3 subs r3, r2, r3 + 309c6: 9314 str r3, [sp, #80] ; 0x50 + 309c8: e649 b.n 3065e <_svfprintf_r+0x15de> + 309ca: 3301 adds r3, #1 + 309cc: 4912 ldr r1, [pc, #72] ; (30a18 <_svfprintf_r+0x1998>) + 309ce: f8ca 5004 str.w r5, [sl, #4] + 309d2: 442a add r2, r5 + 309d4: 2b07 cmp r3, #7 + 309d6: e9cd 3225 strd r3, r2, [sp, #148] ; 0x94 + 309da: f8ca 1000 str.w r1, [sl] + 309de: f77f ac33 ble.w 30248 <_svfprintf_r+0x11c8> + 309e2: ee1b 1a10 vmov r1, s22 + 309e6: aa24 add r2, sp, #144 ; 0x90 + 309e8: 4658 mov r0, fp + 309ea: f001 fe0f bl 3260c <__ssprint_r> + 309ee: 2800 cmp r0, #0 + 309f0: f47e afab bne.w 2f94a <_svfprintf_r+0x8ca> + 309f4: e9dd 3225 ldrd r3, r2, [sp, #148] ; 0x94 + 309f8: f10d 0a9c add.w sl, sp, #156 ; 0x9c + 309fc: e426 b.n 3024c <_svfprintf_r+0x11cc> + 309fe: 1c59 adds r1, r3, #1 + 30a00: 4658 mov r0, fp + 30a02: f7fc ff83 bl 2d90c <_malloc_r> + 30a06: 4604 mov r4, r0 + 30a08: b350 cbz r0, 30a60 <_svfprintf_r+0x19e0> + 30a0a: 9007 str r0, [sp, #28] + 30a0c: e754 b.n 308b8 <_svfprintf_r+0x1838> + 30a0e: bf00 nop + 30a10: 20004534 .word 0x20004534 + 30a14: 20004520 .word 0x20004520 + 30a18: 20004b1c .word 0x20004b1c + 30a1c: 66666667 .word 0x66666667 + 30a20: f8cd c088 str.w ip, [sp, #136] ; 0x88 + 30a24: f812 1c01 ldrb.w r1, [r2, #-1] + 30a28: f890 c00f ldrb.w ip, [r0, #15] + 30a2c: 4561 cmp r1, ip + 30a2e: 4613 mov r3, r2 + 30a30: d10a bne.n 30a48 <_svfprintf_r+0x19c8> + 30a32: f04f 0e30 mov.w lr, #48 ; 0x30 + 30a36: f803 ec01 strb.w lr, [r3, #-1] + 30a3a: 9b22 ldr r3, [sp, #136] ; 0x88 + 30a3c: 1e59 subs r1, r3, #1 + 30a3e: 9122 str r1, [sp, #136] ; 0x88 + 30a40: f813 1c01 ldrb.w r1, [r3, #-1] + 30a44: 458c cmp ip, r1 + 30a46: d0f6 beq.n 30a36 <_svfprintf_r+0x19b6> + 30a48: 2939 cmp r1, #57 ; 0x39 + 30a4a: bf16 itet ne + 30a4c: 3101 addne r1, #1 + 30a4e: 7a81 ldrbeq r1, [r0, #10] + 30a50: b2c9 uxtbne r1, r1 + 30a52: f803 1c01 strb.w r1, [r3, #-1] + 30a56: e6ae b.n 307b6 <_svfprintf_r+0x1736> + 30a58: 2300 movs r3, #0 + 30a5a: 4690 mov r8, r2 + 30a5c: 9307 str r3, [sp, #28] + 30a5e: e760 b.n 30922 <_svfprintf_r+0x18a2> + 30a60: ee1b 2a10 vmov r2, s22 + 30a64: f9b2 300c ldrsh.w r3, [r2, #12] + 30a68: f043 0340 orr.w r3, r3, #64 ; 0x40 + 30a6c: 8193 strh r3, [r2, #12] + 30a6e: f7fe bc16 b.w 2f29e <_svfprintf_r+0x21e> + 30a72: 07f5 lsls r5, r6, #31 + 30a74: f57f adfe bpl.w 30674 <_svfprintf_r+0x15f4> + 30a78: e5f8 b.n 3066c <_svfprintf_r+0x15ec> + 30a7a: 9305 str r3, [sp, #20] + 30a7c: e6ce b.n 3081c <_svfprintf_r+0x179c> + 30a7e: eeb5 ab40 vcmp.f64 d10, #0.0 + 30a82: eef1 fa10 vmrs APSR_nzcv, fpscr + 30a86: f43f ad8b beq.w 305a0 <_svfprintf_r+0x1520> + 30a8a: f1c2 0201 rsb r2, r2, #1 + 30a8e: 921b str r2, [sp, #108] ; 0x6c + 30a90: e587 b.n 305a2 <_svfprintf_r+0x1522> + 30a92: 2367 movs r3, #103 ; 0x67 + 30a94: 930b str r3, [sp, #44] ; 0x2c + 30a96: 9913 ldr r1, [sp, #76] ; 0x4c + 30a98: 780b ldrb r3, [r1, #0] + 30a9a: 2bff cmp r3, #255 ; 0xff + 30a9c: d079 beq.n 30b92 <_svfprintf_r+0x1b12> + 30a9e: 2500 movs r5, #0 + 30aa0: 9a0c ldr r2, [sp, #48] ; 0x30 + 30aa2: 4628 mov r0, r5 + 30aa4: e003 b.n 30aae <_svfprintf_r+0x1a2e> + 30aa6: 3001 adds r0, #1 + 30aa8: 3101 adds r1, #1 + 30aaa: 2bff cmp r3, #255 ; 0xff + 30aac: d008 beq.n 30ac0 <_svfprintf_r+0x1a40> + 30aae: 4293 cmp r3, r2 + 30ab0: da06 bge.n 30ac0 <_svfprintf_r+0x1a40> + 30ab2: 1ad2 subs r2, r2, r3 + 30ab4: 784b ldrb r3, [r1, #1] + 30ab6: 2b00 cmp r3, #0 + 30ab8: d1f5 bne.n 30aa6 <_svfprintf_r+0x1a26> + 30aba: 780b ldrb r3, [r1, #0] + 30abc: 3501 adds r5, #1 + 30abe: e7f4 b.n 30aaa <_svfprintf_r+0x1a2a> + 30ac0: 920c str r2, [sp, #48] ; 0x30 + 30ac2: 9113 str r1, [sp, #76] ; 0x4c + 30ac4: 900d str r0, [sp, #52] ; 0x34 + 30ac6: 950f str r5, [sp, #60] ; 0x3c + 30ac8: 9a0f ldr r2, [sp, #60] ; 0x3c + 30aca: 9b0d ldr r3, [sp, #52] ; 0x34 + 30acc: 9916 ldr r1, [sp, #88] ; 0x58 + 30ace: 4413 add r3, r2 + 30ad0: 9a05 ldr r2, [sp, #20] + 30ad2: fb01 2303 mla r3, r1, r3, r2 + 30ad6: 9305 str r3, [sp, #20] + 30ad8: ea23 73e3 bic.w r3, r3, r3, asr #31 + 30adc: 9302 str r3, [sp, #8] + 30ade: e5d5 b.n 3068c <_svfprintf_r+0x160c> + 30ae0: 9b10 ldr r3, [sp, #64] ; 0x40 + 30ae2: 18d3 adds r3, r2, r3 + 30ae4: 4419 add r1, r3 + 30ae6: 2366 movs r3, #102 ; 0x66 + 30ae8: 9105 str r1, [sp, #20] + 30aea: 930b str r3, [sp, #44] ; 0x2c + 30aec: e72d b.n 3094a <_svfprintf_r+0x18ca> + 30aee: f1c3 0301 rsb r3, r3, #1 + 30af2: 441a add r2, r3 + 30af4: ea22 73e2 bic.w r3, r2, r2, asr #31 + 30af8: 9302 str r3, [sp, #8] + 30afa: 2367 movs r3, #103 ; 0x67 + 30afc: 9205 str r2, [sp, #20] + 30afe: 930b str r3, [sp, #44] ; 0x2c + 30b00: e698 b.n 30834 <_svfprintf_r+0x17b4> + 30b02: f10d 027a add.w r2, sp, #122 ; 0x7a + 30b06: e759 b.n 309bc <_svfprintf_r+0x193c> + 30b08: 9b03 ldr r3, [sp, #12] + 30b0a: f8dd 9008 ldr.w r9, [sp, #8] + 30b0e: f8dd 801c ldr.w r8, [sp, #28] + 30b12: 9305 str r3, [sp, #20] + 30b14: e4b4 b.n 30480 <_svfprintf_r+0x1400> + 30b16: ee18 3a90 vmov r3, s17 + 30b1a: 2b00 cmp r3, #0 + 30b1c: bfb4 ite lt + 30b1e: 212d movlt r1, #45 ; 0x2d + 30b20: f89d 1067 ldrbge.w r1, [sp, #103] ; 0x67 + 30b24: 4c25 ldr r4, [pc, #148] ; (30bbc <_svfprintf_r+0x1b3c>) + 30b26: 4b26 ldr r3, [pc, #152] ; (30bc0 <_svfprintf_r+0x1b40>) + 30b28: bfb8 it lt + 30b2a: f88d 1067 strblt.w r1, [sp, #103] ; 0x67 + 30b2e: f028 0880 bic.w r8, r8, #128 ; 0x80 + 30b32: f7fe bc79 b.w 2f428 <_svfprintf_r+0x3a8> + 30b36: 9b03 ldr r3, [sp, #12] + 30b38: 9302 str r3, [sp, #8] + 30b3a: 9305 str r3, [sp, #20] + 30b3c: 2373 movs r3, #115 ; 0x73 + 30b3e: f89d 1067 ldrb.w r1, [sp, #103] ; 0x67 + 30b42: 9003 str r0, [sp, #12] + 30b44: 900f str r0, [sp, #60] ; 0x3c + 30b46: 900d str r0, [sp, #52] ; 0x34 + 30b48: 930b str r3, [sp, #44] ; 0x2c + 30b4a: f7fe bc7a b.w 2f442 <_svfprintf_r+0x3c2> + 30b4e: 2302 movs r3, #2 + 30b50: 9314 str r3, [sp, #80] ; 0x50 + 30b52: e584 b.n 3065e <_svfprintf_r+0x15de> + 30b54: 9a03 ldr r2, [sp, #12] + 30b56: 4313 orrs r3, r2 + 30b58: d105 bne.n 30b66 <_svfprintf_r+0x1ae6> + 30b5a: 2301 movs r3, #1 + 30b5c: 2266 movs r2, #102 ; 0x66 + 30b5e: 9302 str r3, [sp, #8] + 30b60: 920b str r2, [sp, #44] ; 0x2c + 30b62: 9305 str r3, [sp, #20] + 30b64: e666 b.n 30834 <_svfprintf_r+0x17b4> + 30b66: 9b10 ldr r3, [sp, #64] ; 0x40 + 30b68: 3301 adds r3, #1 + 30b6a: 441a add r2, r3 + 30b6c: ea22 73e2 bic.w r3, r2, r2, asr #31 + 30b70: 9302 str r3, [sp, #8] + 30b72: 2366 movs r3, #102 ; 0x66 + 30b74: 9205 str r2, [sp, #20] + 30b76: 930b str r3, [sp, #44] ; 0x2c + 30b78: e65c b.n 30834 <_svfprintf_r+0x17b4> + 30b7a: 9a08 ldr r2, [sp, #32] + 30b7c: f899 3001 ldrb.w r3, [r9, #1] + 30b80: 4689 mov r9, r1 + 30b82: f852 1b04 ldr.w r1, [r2], #4 + 30b86: 9208 str r2, [sp, #32] + 30b88: ea41 71e1 orr.w r1, r1, r1, asr #31 + 30b8c: 9103 str r1, [sp, #12] + 30b8e: f7fe bad3 b.w 2f138 <_svfprintf_r+0xb8> + 30b92: 2300 movs r3, #0 + 30b94: 930f str r3, [sp, #60] ; 0x3c + 30b96: 930d str r3, [sp, #52] ; 0x34 + 30b98: e796 b.n 30ac8 <_svfprintf_r+0x1a48> + 30b9a: 230c movs r3, #12 + 30b9c: f8cb 3000 str.w r3, [fp] + 30ba0: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff + 30ba4: 9304 str r3, [sp, #16] + 30ba6: f7fe bb81 b.w 2f2ac <_svfprintf_r+0x22c> + 30baa: ee1b 2a10 vmov r2, s22 + 30bae: 8993 ldrh r3, [r2, #12] + 30bb0: f043 0340 orr.w r3, r3, #64 ; 0x40 + 30bb4: 8193 strh r3, [r2, #12] + 30bb6: f7fe bec8 b.w 2f94a <_svfprintf_r+0x8ca> + 30bba: bf00 nop + 30bbc: 2000451c .word 0x2000451c + 30bc0: 20003760 .word 0x20003760 + +00030bc4 <_Balloc>: + 30bc4: 6c43 ldr r3, [r0, #68] ; 0x44 + 30bc6: b570 push {r4, r5, r6, lr} + 30bc8: 4605 mov r5, r0 + 30bca: 460c mov r4, r1 + 30bcc: b14b cbz r3, 30be2 <_Balloc+0x1e> + 30bce: f853 0024 ldr.w r0, [r3, r4, lsl #2] + 30bd2: b180 cbz r0, 30bf6 <_Balloc+0x32> + 30bd4: 6802 ldr r2, [r0, #0] + 30bd6: f843 2024 str.w r2, [r3, r4, lsl #2] + 30bda: 2300 movs r3, #0 + 30bdc: e9c0 3303 strd r3, r3, [r0, #12] + 30be0: bd70 pop {r4, r5, r6, pc} + 30be2: 2221 movs r2, #33 ; 0x21 + 30be4: 2104 movs r1, #4 + 30be6: f7fc fe45 bl 2d874 <_calloc_r> + 30bea: 4603 mov r3, r0 + 30bec: 6468 str r0, [r5, #68] ; 0x44 + 30bee: 2800 cmp r0, #0 + 30bf0: d1ed bne.n 30bce <_Balloc+0xa> + 30bf2: 2000 movs r0, #0 + 30bf4: bd70 pop {r4, r5, r6, pc} + 30bf6: 2101 movs r1, #1 + 30bf8: fa01 f604 lsl.w r6, r1, r4 + 30bfc: 1d72 adds r2, r6, #5 + 30bfe: 0092 lsls r2, r2, #2 + 30c00: 4628 mov r0, r5 + 30c02: f7fc fe37 bl 2d874 <_calloc_r> + 30c06: 2800 cmp r0, #0 + 30c08: d0f3 beq.n 30bf2 <_Balloc+0x2e> + 30c0a: e9c0 4601 strd r4, r6, [r0, #4] + 30c0e: e7e4 b.n 30bda <_Balloc+0x16> + +00030c10 <_Bfree>: + 30c10: b131 cbz r1, 30c20 <_Bfree+0x10> + 30c12: 6c43 ldr r3, [r0, #68] ; 0x44 + 30c14: 684a ldr r2, [r1, #4] + 30c16: f853 0022 ldr.w r0, [r3, r2, lsl #2] + 30c1a: 6008 str r0, [r1, #0] + 30c1c: f843 1022 str.w r1, [r3, r2, lsl #2] 30c20: 4770 bx lr - 30c22: b299 uxth r1, r3 - 30c24: b909 cbnz r1, 30c2a <__lo0bits+0x22> - 30c26: 0c1b lsrs r3, r3, #16 - 30c28: 2210 movs r2, #16 - 30c2a: b2d9 uxtb r1, r3 - 30c2c: b909 cbnz r1, 30c32 <__lo0bits+0x2a> - 30c2e: 3208 adds r2, #8 - 30c30: 0a1b lsrs r3, r3, #8 - 30c32: 0719 lsls r1, r3, #28 - 30c34: bf04 itt eq - 30c36: 091b lsreq r3, r3, #4 - 30c38: 3204 addeq r2, #4 - 30c3a: 0799 lsls r1, r3, #30 - 30c3c: bf04 itt eq - 30c3e: 089b lsreq r3, r3, #2 - 30c40: 3202 addeq r2, #2 - 30c42: 07d9 lsls r1, r3, #31 - 30c44: d403 bmi.n 30c4e <__lo0bits+0x46> - 30c46: 085b lsrs r3, r3, #1 - 30c48: f102 0201 add.w r2, r2, #1 - 30c4c: d005 beq.n 30c5a <__lo0bits+0x52> - 30c4e: 6003 str r3, [r0, #0] - 30c50: 4610 mov r0, r2 - 30c52: 4770 bx lr - 30c54: 2200 movs r2, #0 - 30c56: 4610 mov r0, r2 - 30c58: 4770 bx lr - 30c5a: 2220 movs r2, #32 - 30c5c: e7df b.n 30c1e <__lo0bits+0x16> - 30c5e: 089b lsrs r3, r3, #2 - 30c60: 2202 movs r2, #2 - 30c62: 6003 str r3, [r0, #0] - 30c64: 4610 mov r0, r2 - 30c66: 4770 bx lr - -00030c68 <__i2b>: - 30c68: b538 push {r3, r4, r5, lr} - 30c6a: 6c43 ldr r3, [r0, #68] ; 0x44 - 30c6c: 4604 mov r4, r0 - 30c6e: 460d mov r5, r1 - 30c70: b14b cbz r3, 30c86 <__i2b+0x1e> - 30c72: 6858 ldr r0, [r3, #4] - 30c74: b1b0 cbz r0, 30ca4 <__i2b+0x3c> - 30c76: 6802 ldr r2, [r0, #0] - 30c78: 605a str r2, [r3, #4] - 30c7a: 2200 movs r2, #0 - 30c7c: 2301 movs r3, #1 - 30c7e: e9c0 3504 strd r3, r5, [r0, #16] - 30c82: 60c2 str r2, [r0, #12] - 30c84: bd38 pop {r3, r4, r5, pc} - 30c86: 2221 movs r2, #33 ; 0x21 - 30c88: 2104 movs r1, #4 - 30c8a: f7fc fd7f bl 2d78c <_calloc_r> - 30c8e: 4603 mov r3, r0 - 30c90: 6460 str r0, [r4, #68] ; 0x44 - 30c92: 2800 cmp r0, #0 - 30c94: d1ed bne.n 30c72 <__i2b+0xa> - 30c96: 4b09 ldr r3, [pc, #36] ; (30cbc <__i2b+0x54>) - 30c98: 4809 ldr r0, [pc, #36] ; (30cc0 <__i2b+0x58>) - 30c9a: 2200 movs r2, #0 - 30c9c: f240 1145 movw r1, #325 ; 0x145 - 30ca0: f000 fcf6 bl 31690 <__assert_func> - 30ca4: 221c movs r2, #28 - 30ca6: 2101 movs r1, #1 - 30ca8: 4620 mov r0, r4 - 30caa: f7fc fd6f bl 2d78c <_calloc_r> - 30cae: 2800 cmp r0, #0 - 30cb0: d0f1 beq.n 30c96 <__i2b+0x2e> - 30cb2: 2201 movs r2, #1 - 30cb4: 2302 movs r3, #2 - 30cb6: e9c0 2301 strd r2, r3, [r0, #4] - 30cba: e7de b.n 30c7a <__i2b+0x12> - 30cbc: 20004268 .word 0x20004268 - 30cc0: 2000427c .word 0x2000427c - -00030cc4 <__multiply>: - 30cc4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 30cc8: 690e ldr r6, [r1, #16] - 30cca: 6915 ldr r5, [r2, #16] - 30ccc: 42ae cmp r6, r5 - 30cce: b085 sub sp, #20 - 30cd0: 4688 mov r8, r1 - 30cd2: 4614 mov r4, r2 - 30cd4: db05 blt.n 30ce2 <__multiply+0x1e> - 30cd6: 462a mov r2, r5 - 30cd8: 4623 mov r3, r4 - 30cda: 4635 mov r5, r6 - 30cdc: 460c mov r4, r1 - 30cde: 4616 mov r6, r2 - 30ce0: 4698 mov r8, r3 - 30ce2: 68a3 ldr r3, [r4, #8] - 30ce4: 6861 ldr r1, [r4, #4] - 30ce6: 19af adds r7, r5, r6 - 30ce8: 42bb cmp r3, r7 - 30cea: bfb8 it lt - 30cec: 3101 addlt r1, #1 - 30cee: f7ff fee9 bl 30ac4 <_Balloc> - 30cf2: 9001 str r0, [sp, #4] - 30cf4: 2800 cmp r0, #0 - 30cf6: f000 8087 beq.w 30e08 <__multiply+0x144> - 30cfa: 9b01 ldr r3, [sp, #4] - 30cfc: f103 0914 add.w r9, r3, #20 - 30d00: eb09 0a87 add.w sl, r9, r7, lsl #2 - 30d04: 45d1 cmp r9, sl - 30d06: d205 bcs.n 30d14 <__multiply+0x50> - 30d08: 464b mov r3, r9 - 30d0a: 2200 movs r2, #0 - 30d0c: f843 2b04 str.w r2, [r3], #4 - 30d10: 459a cmp sl, r3 - 30d12: d8fb bhi.n 30d0c <__multiply+0x48> - 30d14: f108 0814 add.w r8, r8, #20 - 30d18: eb08 0b86 add.w fp, r8, r6, lsl #2 - 30d1c: f104 0314 add.w r3, r4, #20 - 30d20: 45d8 cmp r8, fp - 30d22: 461a mov r2, r3 - 30d24: eb03 0585 add.w r5, r3, r5, lsl #2 - 30d28: d25f bcs.n 30dea <__multiply+0x126> - 30d2a: 1b2b subs r3, r5, r4 - 30d2c: 3b15 subs r3, #21 - 30d2e: f023 0303 bic.w r3, r3, #3 - 30d32: 3304 adds r3, #4 - 30d34: 3415 adds r4, #21 - 30d36: 42a5 cmp r5, r4 - 30d38: bf38 it cc - 30d3a: 2304 movcc r3, #4 - 30d3c: e9cd a702 strd sl, r7, [sp, #8] - 30d40: 46ac mov ip, r5 - 30d42: 461f mov r7, r3 - 30d44: 4692 mov sl, r2 - 30d46: e005 b.n 30d54 <__multiply+0x90> - 30d48: 0c09 lsrs r1, r1, #16 - 30d4a: d129 bne.n 30da0 <__multiply+0xdc> - 30d4c: 45c3 cmp fp, r8 - 30d4e: f109 0904 add.w r9, r9, #4 - 30d52: d948 bls.n 30de6 <__multiply+0x122> - 30d54: f858 1b04 ldr.w r1, [r8], #4 - 30d58: b28d uxth r5, r1 - 30d5a: 2d00 cmp r5, #0 - 30d5c: d0f4 beq.n 30d48 <__multiply+0x84> - 30d5e: 4656 mov r6, sl - 30d60: 464c mov r4, r9 - 30d62: 2300 movs r3, #0 - 30d64: f856 1b04 ldr.w r1, [r6], #4 - 30d68: 6822 ldr r2, [r4, #0] - 30d6a: fa1f fe81 uxth.w lr, r1 - 30d6e: b290 uxth r0, r2 - 30d70: 0c09 lsrs r1, r1, #16 - 30d72: fb05 000e mla r0, r5, lr, r0 - 30d76: 0c12 lsrs r2, r2, #16 - 30d78: 4403 add r3, r0 - 30d7a: fb05 2201 mla r2, r5, r1, r2 - 30d7e: eb02 4213 add.w r2, r2, r3, lsr #16 - 30d82: b29b uxth r3, r3 - 30d84: ea43 4302 orr.w r3, r3, r2, lsl #16 - 30d88: 45b4 cmp ip, r6 - 30d8a: f844 3b04 str.w r3, [r4], #4 - 30d8e: ea4f 4312 mov.w r3, r2, lsr #16 - 30d92: d8e7 bhi.n 30d64 <__multiply+0xa0> - 30d94: f849 3007 str.w r3, [r9, r7] - 30d98: f858 1c04 ldr.w r1, [r8, #-4] - 30d9c: 0c09 lsrs r1, r1, #16 - 30d9e: d0d5 beq.n 30d4c <__multiply+0x88> - 30da0: f8d9 3000 ldr.w r3, [r9] - 30da4: 4650 mov r0, sl - 30da6: 461a mov r2, r3 - 30da8: 464c mov r4, r9 - 30daa: 2600 movs r6, #0 - 30dac: 8805 ldrh r5, [r0, #0] - 30dae: 0c12 lsrs r2, r2, #16 - 30db0: fb01 2205 mla r2, r1, r5, r2 - 30db4: 4416 add r6, r2 - 30db6: b29b uxth r3, r3 - 30db8: ea43 4306 orr.w r3, r3, r6, lsl #16 - 30dbc: f844 3b04 str.w r3, [r4], #4 - 30dc0: f850 5b04 ldr.w r5, [r0], #4 - 30dc4: 6822 ldr r2, [r4, #0] - 30dc6: 0c2d lsrs r5, r5, #16 - 30dc8: b293 uxth r3, r2 - 30dca: fb01 3305 mla r3, r1, r5, r3 - 30dce: eb03 4316 add.w r3, r3, r6, lsr #16 - 30dd2: 4584 cmp ip, r0 - 30dd4: ea4f 4613 mov.w r6, r3, lsr #16 - 30dd8: d8e8 bhi.n 30dac <__multiply+0xe8> - 30dda: 45c3 cmp fp, r8 - 30ddc: f849 3007 str.w r3, [r9, r7] - 30de0: f109 0904 add.w r9, r9, #4 - 30de4: d8b6 bhi.n 30d54 <__multiply+0x90> - 30de6: e9dd a702 ldrd sl, r7, [sp, #8] - 30dea: 2f00 cmp r7, #0 - 30dec: dc02 bgt.n 30df4 <__multiply+0x130> - 30dee: e005 b.n 30dfc <__multiply+0x138> - 30df0: 3f01 subs r7, #1 - 30df2: d003 beq.n 30dfc <__multiply+0x138> - 30df4: f85a 3d04 ldr.w r3, [sl, #-4]! - 30df8: 2b00 cmp r3, #0 - 30dfa: d0f9 beq.n 30df0 <__multiply+0x12c> - 30dfc: 9b01 ldr r3, [sp, #4] - 30dfe: 4618 mov r0, r3 - 30e00: 611f str r7, [r3, #16] - 30e02: b005 add sp, #20 - 30e04: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 30e08: 4b03 ldr r3, [pc, #12] ; (30e18 <__multiply+0x154>) - 30e0a: 4804 ldr r0, [pc, #16] ; (30e1c <__multiply+0x158>) - 30e0c: 9a01 ldr r2, [sp, #4] - 30e0e: f44f 71b1 mov.w r1, #354 ; 0x162 - 30e12: f000 fc3d bl 31690 <__assert_func> - 30e16: bf00 nop - 30e18: 20004268 .word 0x20004268 - 30e1c: 2000427c .word 0x2000427c - -00030e20 <__pow5mult>: - 30e20: f012 0303 ands.w r3, r2, #3 - 30e24: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 30e28: 4614 mov r4, r2 - 30e2a: 4606 mov r6, r0 - 30e2c: d132 bne.n 30e94 <__pow5mult+0x74> - 30e2e: 460d mov r5, r1 - 30e30: 10a4 asrs r4, r4, #2 - 30e32: d020 beq.n 30e76 <__pow5mult+0x56> - 30e34: f8d6 8040 ldr.w r8, [r6, #64] ; 0x40 - 30e38: f1b8 0f00 cmp.w r8, #0 - 30e3c: d033 beq.n 30ea6 <__pow5mult+0x86> - 30e3e: 07e3 lsls r3, r4, #31 - 30e40: f04f 0700 mov.w r7, #0 - 30e44: d407 bmi.n 30e56 <__pow5mult+0x36> - 30e46: 1064 asrs r4, r4, #1 - 30e48: d015 beq.n 30e76 <__pow5mult+0x56> - 30e4a: f8d8 0000 ldr.w r0, [r8] - 30e4e: b1a8 cbz r0, 30e7c <__pow5mult+0x5c> - 30e50: 4680 mov r8, r0 - 30e52: 07e3 lsls r3, r4, #31 - 30e54: d5f7 bpl.n 30e46 <__pow5mult+0x26> - 30e56: 4642 mov r2, r8 - 30e58: 4629 mov r1, r5 - 30e5a: 4630 mov r0, r6 - 30e5c: f7ff ff32 bl 30cc4 <__multiply> - 30e60: b1b5 cbz r5, 30e90 <__pow5mult+0x70> - 30e62: 6869 ldr r1, [r5, #4] - 30e64: 6c73 ldr r3, [r6, #68] ; 0x44 - 30e66: 1064 asrs r4, r4, #1 - 30e68: f853 2021 ldr.w r2, [r3, r1, lsl #2] - 30e6c: 602a str r2, [r5, #0] - 30e6e: f843 5021 str.w r5, [r3, r1, lsl #2] - 30e72: 4605 mov r5, r0 - 30e74: d1e9 bne.n 30e4a <__pow5mult+0x2a> - 30e76: 4628 mov r0, r5 - 30e78: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 30e7c: 4642 mov r2, r8 - 30e7e: 4641 mov r1, r8 - 30e80: 4630 mov r0, r6 - 30e82: f7ff ff1f bl 30cc4 <__multiply> - 30e86: f8c8 0000 str.w r0, [r8] - 30e8a: 6007 str r7, [r0, #0] - 30e8c: 4680 mov r8, r0 - 30e8e: e7e0 b.n 30e52 <__pow5mult+0x32> - 30e90: 4605 mov r5, r0 - 30e92: e7d8 b.n 30e46 <__pow5mult+0x26> - 30e94: 3b01 subs r3, #1 - 30e96: 4a0f ldr r2, [pc, #60] ; (30ed4 <__pow5mult+0xb4>) - 30e98: f852 2023 ldr.w r2, [r2, r3, lsl #2] - 30e9c: 2300 movs r3, #0 - 30e9e: f7ff fe41 bl 30b24 <__multadd> - 30ea2: 4605 mov r5, r0 - 30ea4: e7c4 b.n 30e30 <__pow5mult+0x10> - 30ea6: 2101 movs r1, #1 - 30ea8: 4630 mov r0, r6 - 30eaa: f7ff fe0b bl 30ac4 <_Balloc> - 30eae: 4680 mov r8, r0 - 30eb0: b140 cbz r0, 30ec4 <__pow5mult+0xa4> - 30eb2: 2301 movs r3, #1 - 30eb4: f240 2271 movw r2, #625 ; 0x271 - 30eb8: e9c0 3204 strd r3, r2, [r0, #16] - 30ebc: 2300 movs r3, #0 - 30ebe: 6430 str r0, [r6, #64] ; 0x40 - 30ec0: 6003 str r3, [r0, #0] - 30ec2: e7bc b.n 30e3e <__pow5mult+0x1e> - 30ec4: 4b04 ldr r3, [pc, #16] ; (30ed8 <__pow5mult+0xb8>) - 30ec6: 4805 ldr r0, [pc, #20] ; (30edc <__pow5mult+0xbc>) - 30ec8: 4642 mov r2, r8 - 30eca: f240 1145 movw r1, #325 ; 0x145 - 30ece: f000 fbdf bl 31690 <__assert_func> - 30ed2: bf00 nop - 30ed4: 200047c4 .word 0x200047c4 - 30ed8: 20004268 .word 0x20004268 - 30edc: 2000427c .word 0x2000427c - -00030ee0 <__lshift>: - 30ee0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 30ee4: 460d mov r5, r1 - 30ee6: 4614 mov r4, r2 - 30ee8: 692f ldr r7, [r5, #16] - 30eea: 68ab ldr r3, [r5, #8] - 30eec: 6849 ldr r1, [r1, #4] - 30eee: eb07 1762 add.w r7, r7, r2, asr #5 - 30ef2: 1c7e adds r6, r7, #1 - 30ef4: 429e cmp r6, r3 - 30ef6: 4680 mov r8, r0 - 30ef8: ea4f 1962 mov.w r9, r2, asr #5 - 30efc: dd04 ble.n 30f08 <__lshift+0x28> - 30efe: 005b lsls r3, r3, #1 - 30f00: 429e cmp r6, r3 - 30f02: f101 0101 add.w r1, r1, #1 - 30f06: dcfa bgt.n 30efe <__lshift+0x1e> - 30f08: 4640 mov r0, r8 - 30f0a: f7ff fddb bl 30ac4 <_Balloc> - 30f0e: 4684 mov ip, r0 - 30f10: 2800 cmp r0, #0 - 30f12: d052 beq.n 30fba <__lshift+0xda> - 30f14: f1b9 0f00 cmp.w r9, #0 - 30f18: f100 0214 add.w r2, r0, #20 - 30f1c: dd0e ble.n 30f3c <__lshift+0x5c> - 30f1e: f109 0105 add.w r1, r9, #5 - 30f22: ea4f 0e81 mov.w lr, r1, lsl #2 - 30f26: 4613 mov r3, r2 - 30f28: eb00 0181 add.w r1, r0, r1, lsl #2 - 30f2c: 2000 movs r0, #0 - 30f2e: f843 0b04 str.w r0, [r3], #4 - 30f32: 428b cmp r3, r1 - 30f34: d1fb bne.n 30f2e <__lshift+0x4e> - 30f36: f1ae 0314 sub.w r3, lr, #20 - 30f3a: 441a add r2, r3 - 30f3c: 6929 ldr r1, [r5, #16] - 30f3e: f105 0314 add.w r3, r5, #20 - 30f42: f014 0e1f ands.w lr, r4, #31 - 30f46: eb03 0181 add.w r1, r3, r1, lsl #2 - 30f4a: d02e beq.n 30faa <__lshift+0xca> - 30f4c: f1ce 0920 rsb r9, lr, #32 - 30f50: 4610 mov r0, r2 - 30f52: f04f 0a00 mov.w sl, #0 - 30f56: 681c ldr r4, [r3, #0] - 30f58: fa04 f40e lsl.w r4, r4, lr - 30f5c: ea44 040a orr.w r4, r4, sl - 30f60: f840 4b04 str.w r4, [r0], #4 - 30f64: f853 4b04 ldr.w r4, [r3], #4 - 30f68: 4299 cmp r1, r3 - 30f6a: fa24 fa09 lsr.w sl, r4, r9 - 30f6e: d8f2 bhi.n 30f56 <__lshift+0x76> - 30f70: 1b4b subs r3, r1, r5 - 30f72: 3b15 subs r3, #21 - 30f74: f023 0303 bic.w r3, r3, #3 - 30f78: 3304 adds r3, #4 - 30f7a: f105 0015 add.w r0, r5, #21 - 30f7e: 4281 cmp r1, r0 - 30f80: bf38 it cc - 30f82: 2304 movcc r3, #4 - 30f84: f1ba 0f00 cmp.w sl, #0 - 30f88: bf18 it ne - 30f8a: 4637 movne r7, r6 - 30f8c: f842 a003 str.w sl, [r2, r3] - 30f90: f8d8 3044 ldr.w r3, [r8, #68] ; 0x44 - 30f94: 686a ldr r2, [r5, #4] - 30f96: f8cc 7010 str.w r7, [ip, #16] - 30f9a: f853 1022 ldr.w r1, [r3, r2, lsl #2] - 30f9e: 6029 str r1, [r5, #0] - 30fa0: 4660 mov r0, ip - 30fa2: f843 5022 str.w r5, [r3, r2, lsl #2] - 30fa6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 30faa: 3a04 subs r2, #4 - 30fac: f853 0b04 ldr.w r0, [r3], #4 - 30fb0: f842 0f04 str.w r0, [r2, #4]! - 30fb4: 4299 cmp r1, r3 - 30fb6: d8f9 bhi.n 30fac <__lshift+0xcc> - 30fb8: e7ea b.n 30f90 <__lshift+0xb0> - 30fba: 4b03 ldr r3, [pc, #12] ; (30fc8 <__lshift+0xe8>) - 30fbc: 4803 ldr r0, [pc, #12] ; (30fcc <__lshift+0xec>) - 30fbe: 4662 mov r2, ip - 30fc0: f44f 71ef mov.w r1, #478 ; 0x1de - 30fc4: f000 fb64 bl 31690 <__assert_func> - 30fc8: 20004268 .word 0x20004268 - 30fcc: 2000427c .word 0x2000427c - -00030fd0 <__mcmp>: - 30fd0: 690b ldr r3, [r1, #16] - 30fd2: 4684 mov ip, r0 - 30fd4: 6900 ldr r0, [r0, #16] - 30fd6: 1ac0 subs r0, r0, r3 - 30fd8: d116 bne.n 31008 <__mcmp+0x38> - 30fda: f10c 0c14 add.w ip, ip, #20 - 30fde: 3114 adds r1, #20 - 30fe0: eb0c 0283 add.w r2, ip, r3, lsl #2 - 30fe4: b410 push {r4} - 30fe6: eb01 0383 add.w r3, r1, r3, lsl #2 - 30fea: e001 b.n 30ff0 <__mcmp+0x20> - 30fec: 4594 cmp ip, r2 - 30fee: d208 bcs.n 31002 <__mcmp+0x32> - 30ff0: f852 4d04 ldr.w r4, [r2, #-4]! - 30ff4: f853 1d04 ldr.w r1, [r3, #-4]! - 30ff8: 428c cmp r4, r1 - 30ffa: d0f7 beq.n 30fec <__mcmp+0x1c> - 30ffc: d205 bcs.n 3100a <__mcmp+0x3a> - 30ffe: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 31002: f85d 4b04 ldr.w r4, [sp], #4 - 31006: 4770 bx lr - 31008: 4770 bx lr - 3100a: 2001 movs r0, #1 - 3100c: f85d 4b04 ldr.w r4, [sp], #4 - 31010: 4770 bx lr - 31012: bf00 nop - -00031014 <__mdiff>: - 31014: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 31018: 690f ldr r7, [r1, #16] - 3101a: 6913 ldr r3, [r2, #16] - 3101c: 1aff subs r7, r7, r3 - 3101e: 2f00 cmp r7, #0 - 31020: 460e mov r6, r1 - 31022: 4690 mov r8, r2 - 31024: d17f bne.n 31126 <__mdiff+0x112> - 31026: f101 0514 add.w r5, r1, #20 - 3102a: 3214 adds r2, #20 - 3102c: eb02 0283 add.w r2, r2, r3, lsl #2 - 31030: eb05 0383 add.w r3, r5, r3, lsl #2 - 31034: e001 b.n 3103a <__mdiff+0x26> - 31036: 429d cmp r5, r3 - 31038: d278 bcs.n 3112c <__mdiff+0x118> - 3103a: f853 1d04 ldr.w r1, [r3, #-4]! - 3103e: f852 4d04 ldr.w r4, [r2, #-4]! - 31042: 42a1 cmp r1, r4 - 31044: d0f7 beq.n 31036 <__mdiff+0x22> - 31046: d369 bcc.n 3111c <__mdiff+0x108> - 31048: 6871 ldr r1, [r6, #4] - 3104a: f7ff fd3b bl 30ac4 <_Balloc> - 3104e: 4681 mov r9, r0 - 31050: 2800 cmp r0, #0 - 31052: d077 beq.n 31144 <__mdiff+0x130> - 31054: 6935 ldr r5, [r6, #16] - 31056: f8d8 2010 ldr.w r2, [r8, #16] - 3105a: 60c7 str r7, [r0, #12] - 3105c: f108 0e14 add.w lr, r8, #20 - 31060: f106 0014 add.w r0, r6, #20 - 31064: f109 0a14 add.w sl, r9, #20 - 31068: f106 0110 add.w r1, r6, #16 - 3106c: eb0e 0282 add.w r2, lr, r2, lsl #2 - 31070: eb00 0785 add.w r7, r0, r5, lsl #2 - 31074: 4656 mov r6, sl - 31076: f04f 0c00 mov.w ip, #0 - 3107a: f85e 4b04 ldr.w r4, [lr], #4 - 3107e: f851 bf04 ldr.w fp, [r1, #4]! - 31082: b2a3 uxth r3, r4 - 31084: fa1c fc8b uxtah ip, ip, fp - 31088: ebac 0303 sub.w r3, ip, r3 - 3108c: ea4f 4c14 mov.w ip, r4, lsr #16 - 31090: ebcc 4c1b rsb ip, ip, fp, lsr #16 - 31094: eb0c 4c23 add.w ip, ip, r3, asr #16 - 31098: b29b uxth r3, r3 - 3109a: ea43 430c orr.w r3, r3, ip, lsl #16 - 3109e: 4572 cmp r2, lr - 310a0: f846 3b04 str.w r3, [r6], #4 - 310a4: ea4f 4c2c mov.w ip, ip, asr #16 - 310a8: d8e7 bhi.n 3107a <__mdiff+0x66> - 310aa: eba2 0108 sub.w r1, r2, r8 - 310ae: 3915 subs r1, #21 - 310b0: f108 0815 add.w r8, r8, #21 - 310b4: 4542 cmp r2, r8 - 310b6: f021 0403 bic.w r4, r1, #3 - 310ba: f104 0404 add.w r4, r4, #4 - 310be: bf38 it cc - 310c0: 2404 movcc r4, #4 - 310c2: 4420 add r0, r4 - 310c4: f021 0203 bic.w r2, r1, #3 - 310c8: bf38 it cc - 310ca: 2200 movcc r2, #0 - 310cc: 4287 cmp r7, r0 - 310ce: 4452 add r2, sl - 310d0: 4454 add r4, sl - 310d2: d918 bls.n 31106 <__mdiff+0xf2> - 310d4: 4626 mov r6, r4 - 310d6: 4601 mov r1, r0 - 310d8: f851 3b04 ldr.w r3, [r1], #4 - 310dc: fa1c fc83 uxtah ip, ip, r3 - 310e0: ea4f 422c mov.w r2, ip, asr #16 - 310e4: eb02 4213 add.w r2, r2, r3, lsr #16 - 310e8: fa1f fc8c uxth.w ip, ip - 310ec: ea4c 4302 orr.w r3, ip, r2, lsl #16 - 310f0: 428f cmp r7, r1 - 310f2: f846 3b04 str.w r3, [r6], #4 - 310f6: ea4f 4c22 mov.w ip, r2, asr #16 - 310fa: d8ed bhi.n 310d8 <__mdiff+0xc4> - 310fc: 3f01 subs r7, #1 - 310fe: 1a3f subs r7, r7, r0 - 31100: f027 0703 bic.w r7, r7, #3 - 31104: 19e2 adds r2, r4, r7 - 31106: b923 cbnz r3, 31112 <__mdiff+0xfe> - 31108: f852 3d04 ldr.w r3, [r2, #-4]! - 3110c: 3d01 subs r5, #1 - 3110e: 2b00 cmp r3, #0 - 31110: d0fa beq.n 31108 <__mdiff+0xf4> - 31112: f8c9 5010 str.w r5, [r9, #16] - 31116: 4648 mov r0, r9 - 31118: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 3111c: 4633 mov r3, r6 - 3111e: 2701 movs r7, #1 - 31120: 4646 mov r6, r8 - 31122: 4698 mov r8, r3 - 31124: e790 b.n 31048 <__mdiff+0x34> - 31126: dbf9 blt.n 3111c <__mdiff+0x108> - 31128: 2700 movs r7, #0 - 3112a: e78d b.n 31048 <__mdiff+0x34> - 3112c: 2100 movs r1, #0 - 3112e: f7ff fcc9 bl 30ac4 <_Balloc> - 31132: 4681 mov r9, r0 - 31134: b168 cbz r0, 31152 <__mdiff+0x13e> - 31136: 2201 movs r2, #1 - 31138: 2300 movs r3, #0 - 3113a: e9c9 2304 strd r2, r3, [r9, #16] - 3113e: 4648 mov r0, r9 - 31140: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 31144: 4b06 ldr r3, [pc, #24] ; (31160 <__mdiff+0x14c>) - 31146: 4807 ldr r0, [pc, #28] ; (31164 <__mdiff+0x150>) - 31148: 464a mov r2, r9 - 3114a: f240 2145 movw r1, #581 ; 0x245 - 3114e: f000 fa9f bl 31690 <__assert_func> - 31152: 4b03 ldr r3, [pc, #12] ; (31160 <__mdiff+0x14c>) - 31154: 4803 ldr r0, [pc, #12] ; (31164 <__mdiff+0x150>) - 31156: 464a mov r2, r9 - 31158: f240 2137 movw r1, #567 ; 0x237 - 3115c: f000 fa98 bl 31690 <__assert_func> - 31160: 20004268 .word 0x20004268 - 31164: 2000427c .word 0x2000427c - -00031168 <__d2b>: - 31168: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 3116c: 4688 mov r8, r1 - 3116e: b083 sub sp, #12 - 31170: 2101 movs r1, #1 - 31172: ec57 6b10 vmov r6, r7, d0 - 31176: 4615 mov r5, r2 - 31178: f7ff fca4 bl 30ac4 <_Balloc> - 3117c: 4604 mov r4, r0 - 3117e: 2800 cmp r0, #0 - 31180: d051 beq.n 31226 <__d2b+0xbe> - 31182: f3c7 590a ubfx r9, r7, #20, #11 - 31186: f3c7 0313 ubfx r3, r7, #0, #20 - 3118a: f1b9 0f00 cmp.w r9, #0 - 3118e: d001 beq.n 31194 <__d2b+0x2c> - 31190: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 - 31194: 2e00 cmp r6, #0 - 31196: 9301 str r3, [sp, #4] - 31198: d118 bne.n 311cc <__d2b+0x64> - 3119a: a801 add r0, sp, #4 - 3119c: f7ff fd34 bl 30c08 <__lo0bits> - 311a0: 9a01 ldr r2, [sp, #4] - 311a2: 6162 str r2, [r4, #20] - 311a4: 2201 movs r2, #1 - 311a6: f100 0320 add.w r3, r0, #32 - 311aa: 6122 str r2, [r4, #16] - 311ac: f1b9 0f00 cmp.w r9, #0 - 311b0: d025 beq.n 311fe <__d2b+0x96> - 311b2: f2a9 4933 subw r9, r9, #1075 ; 0x433 - 311b6: eb09 0203 add.w r2, r9, r3 - 311ba: 4620 mov r0, r4 - 311bc: f1c3 0335 rsb r3, r3, #53 ; 0x35 - 311c0: f8c8 2000 str.w r2, [r8] - 311c4: 602b str r3, [r5, #0] - 311c6: b003 add sp, #12 - 311c8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 311cc: 4668 mov r0, sp - 311ce: 9600 str r6, [sp, #0] - 311d0: f7ff fd1a bl 30c08 <__lo0bits> - 311d4: 4603 mov r3, r0 - 311d6: b310 cbz r0, 3121e <__d2b+0xb6> - 311d8: e9dd 0200 ldrd r0, r2, [sp] - 311dc: f1c3 0120 rsb r1, r3, #32 - 311e0: fa02 f101 lsl.w r1, r2, r1 - 311e4: 4301 orrs r1, r0 - 311e6: 40da lsrs r2, r3 - 311e8: 6161 str r1, [r4, #20] - 311ea: 9201 str r2, [sp, #4] - 311ec: 2a00 cmp r2, #0 - 311ee: 61a2 str r2, [r4, #24] - 311f0: bf14 ite ne - 311f2: 2202 movne r2, #2 - 311f4: 2201 moveq r2, #1 - 311f6: 6122 str r2, [r4, #16] - 311f8: f1b9 0f00 cmp.w r9, #0 - 311fc: d1d9 bne.n 311b2 <__d2b+0x4a> - 311fe: f2a3 4332 subw r3, r3, #1074 ; 0x432 - 31202: f8c8 3000 str.w r3, [r8] - 31206: eb04 0382 add.w r3, r4, r2, lsl #2 - 3120a: 6918 ldr r0, [r3, #16] - 3120c: f7ff fcdc bl 30bc8 <__hi0bits> - 31210: ebc0 1342 rsb r3, r0, r2, lsl #5 - 31214: 4620 mov r0, r4 - 31216: 602b str r3, [r5, #0] - 31218: b003 add sp, #12 - 3121a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 3121e: 9a00 ldr r2, [sp, #0] - 31220: 6162 str r2, [r4, #20] - 31222: 9a01 ldr r2, [sp, #4] - 31224: e7e2 b.n 311ec <__d2b+0x84> - 31226: 4b03 ldr r3, [pc, #12] ; (31234 <__d2b+0xcc>) - 31228: 4803 ldr r0, [pc, #12] ; (31238 <__d2b+0xd0>) - 3122a: 4622 mov r2, r4 - 3122c: f240 310f movw r1, #783 ; 0x30f - 31230: f000 fa2e bl 31690 <__assert_func> - 31234: 20004268 .word 0x20004268 - 31238: 2000427c .word 0x2000427c - -0003123c <_fclose_r>: - 3123c: b570 push {r4, r5, r6, lr} - 3123e: 2900 cmp r1, #0 - 31240: d04b beq.n 312da <_fclose_r+0x9e> - 31242: 4606 mov r6, r0 - 31244: 460c mov r4, r1 - 31246: b110 cbz r0, 3124e <_fclose_r+0x12> - 31248: 6b43 ldr r3, [r0, #52] ; 0x34 - 3124a: 2b00 cmp r3, #0 - 3124c: d048 beq.n 312e0 <_fclose_r+0xa4> - 3124e: 6e63 ldr r3, [r4, #100] ; 0x64 - 31250: 07d8 lsls r0, r3, #31 - 31252: d534 bpl.n 312be <_fclose_r+0x82> - 31254: f9b4 300c ldrsh.w r3, [r4, #12] - 31258: 2b00 cmp r3, #0 - 3125a: d03e beq.n 312da <_fclose_r+0x9e> - 3125c: 4621 mov r1, r4 - 3125e: 4630 mov r0, r6 - 31260: f000 f850 bl 31304 <__sflush_r> - 31264: 6ae3 ldr r3, [r4, #44] ; 0x2c - 31266: 4605 mov r5, r0 - 31268: b133 cbz r3, 31278 <_fclose_r+0x3c> - 3126a: 69e1 ldr r1, [r4, #28] - 3126c: 4630 mov r0, r6 - 3126e: 4798 blx r3 - 31270: 2800 cmp r0, #0 - 31272: bfb8 it lt - 31274: f04f 35ff movlt.w r5, #4294967295 ; 0xffffffff - 31278: 89a3 ldrh r3, [r4, #12] - 3127a: 061a lsls r2, r3, #24 - 3127c: d43c bmi.n 312f8 <_fclose_r+0xbc> - 3127e: 6b21 ldr r1, [r4, #48] ; 0x30 - 31280: b141 cbz r1, 31294 <_fclose_r+0x58> - 31282: f104 0340 add.w r3, r4, #64 ; 0x40 - 31286: 4299 cmp r1, r3 - 31288: d002 beq.n 31290 <_fclose_r+0x54> - 3128a: 4630 mov r0, r6 - 3128c: f7fd fd5a bl 2ed44 <_free_r> - 31290: 2300 movs r3, #0 - 31292: 6323 str r3, [r4, #48] ; 0x30 - 31294: 6c61 ldr r1, [r4, #68] ; 0x44 - 31296: b121 cbz r1, 312a2 <_fclose_r+0x66> - 31298: 4630 mov r0, r6 - 3129a: f7fd fd53 bl 2ed44 <_free_r> - 3129e: 2300 movs r3, #0 - 312a0: 6463 str r3, [r4, #68] ; 0x44 - 312a2: f7fd f847 bl 2e334 <__sfp_lock_acquire> - 312a6: 6e63 ldr r3, [r4, #100] ; 0x64 - 312a8: 2200 movs r2, #0 - 312aa: 07db lsls r3, r3, #31 - 312ac: 81a2 strh r2, [r4, #12] - 312ae: d51f bpl.n 312f0 <_fclose_r+0xb4> - 312b0: 6da0 ldr r0, [r4, #88] ; 0x58 - 312b2: f7fd fbe7 bl 2ea84 <__retarget_lock_close_recursive> - 312b6: f7fd f843 bl 2e340 <__sfp_lock_release> - 312ba: 4628 mov r0, r5 - 312bc: bd70 pop {r4, r5, r6, pc} - 312be: 89a3 ldrh r3, [r4, #12] - 312c0: 0599 lsls r1, r3, #22 - 312c2: d4cb bmi.n 3125c <_fclose_r+0x20> - 312c4: 6da0 ldr r0, [r4, #88] ; 0x58 - 312c6: f7fd fbdf bl 2ea88 <__retarget_lock_acquire_recursive> - 312ca: f9b4 300c ldrsh.w r3, [r4, #12] - 312ce: 2b00 cmp r3, #0 - 312d0: d1c4 bne.n 3125c <_fclose_r+0x20> - 312d2: 6e65 ldr r5, [r4, #100] ; 0x64 - 312d4: f015 0501 ands.w r5, r5, #1 - 312d8: d005 beq.n 312e6 <_fclose_r+0xaa> - 312da: 2500 movs r5, #0 - 312dc: 4628 mov r0, r5 - 312de: bd70 pop {r4, r5, r6, pc} - 312e0: f7fd f80a bl 2e2f8 <__sinit> - 312e4: e7b3 b.n 3124e <_fclose_r+0x12> - 312e6: 6da0 ldr r0, [r4, #88] ; 0x58 - 312e8: f7fd fbd0 bl 2ea8c <__retarget_lock_release_recursive> - 312ec: 4628 mov r0, r5 - 312ee: bd70 pop {r4, r5, r6, pc} - 312f0: 6da0 ldr r0, [r4, #88] ; 0x58 - 312f2: f7fd fbcb bl 2ea8c <__retarget_lock_release_recursive> - 312f6: e7db b.n 312b0 <_fclose_r+0x74> - 312f8: 6921 ldr r1, [r4, #16] - 312fa: 4630 mov r0, r6 - 312fc: f7fd fd22 bl 2ed44 <_free_r> - 31300: e7bd b.n 3127e <_fclose_r+0x42> - 31302: bf00 nop - -00031304 <__sflush_r>: - 31304: f9b1 200c ldrsh.w r2, [r1, #12] - 31308: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 3130c: 460c mov r4, r1 - 3130e: 0711 lsls r1, r2, #28 - 31310: 4680 mov r8, r0 - 31312: d447 bmi.n 313a4 <__sflush_r+0xa0> - 31314: 6863 ldr r3, [r4, #4] - 31316: f442 6200 orr.w r2, r2, #2048 ; 0x800 - 3131a: 2b00 cmp r3, #0 - 3131c: 81a2 strh r2, [r4, #12] - 3131e: dd5e ble.n 313de <__sflush_r+0xda> - 31320: 6aa5 ldr r5, [r4, #40] ; 0x28 - 31322: 2d00 cmp r5, #0 - 31324: d058 beq.n 313d8 <__sflush_r+0xd4> - 31326: 2300 movs r3, #0 - 31328: f8d8 6000 ldr.w r6, [r8] - 3132c: f8c8 3000 str.w r3, [r8] - 31330: b293 uxth r3, r2 - 31332: f412 5280 ands.w r2, r2, #4096 ; 0x1000 - 31336: d156 bne.n 313e6 <__sflush_r+0xe2> - 31338: 2301 movs r3, #1 - 3133a: 69e1 ldr r1, [r4, #28] - 3133c: 4640 mov r0, r8 - 3133e: 47a8 blx r5 - 31340: 1c43 adds r3, r0, #1 - 31342: d067 beq.n 31414 <__sflush_r+0x110> - 31344: 89a3 ldrh r3, [r4, #12] - 31346: 6aa5 ldr r5, [r4, #40] ; 0x28 - 31348: 075f lsls r7, r3, #29 - 3134a: d505 bpl.n 31358 <__sflush_r+0x54> - 3134c: 6863 ldr r3, [r4, #4] - 3134e: 1ac0 subs r0, r0, r3 - 31350: 6b23 ldr r3, [r4, #48] ; 0x30 - 31352: b10b cbz r3, 31358 <__sflush_r+0x54> - 31354: 6be3 ldr r3, [r4, #60] ; 0x3c - 31356: 1ac0 subs r0, r0, r3 - 31358: 69e1 ldr r1, [r4, #28] - 3135a: 4602 mov r2, r0 - 3135c: 2300 movs r3, #0 - 3135e: 4640 mov r0, r8 - 31360: 47a8 blx r5 - 31362: 1c41 adds r1, r0, #1 - 31364: d141 bne.n 313ea <__sflush_r+0xe6> - 31366: f8d8 3000 ldr.w r3, [r8] - 3136a: 2b00 cmp r3, #0 - 3136c: d03d beq.n 313ea <__sflush_r+0xe6> - 3136e: 2b1d cmp r3, #29 - 31370: d001 beq.n 31376 <__sflush_r+0x72> - 31372: 2b16 cmp r3, #22 - 31374: d156 bne.n 31424 <__sflush_r+0x120> - 31376: 89a3 ldrh r3, [r4, #12] - 31378: 6922 ldr r2, [r4, #16] - 3137a: 6022 str r2, [r4, #0] - 3137c: f423 6300 bic.w r3, r3, #2048 ; 0x800 - 31380: 2100 movs r1, #0 - 31382: 6061 str r1, [r4, #4] - 31384: 81a3 strh r3, [r4, #12] - 31386: 6b21 ldr r1, [r4, #48] ; 0x30 - 31388: f8c8 6000 str.w r6, [r8] - 3138c: b321 cbz r1, 313d8 <__sflush_r+0xd4> - 3138e: f104 0340 add.w r3, r4, #64 ; 0x40 - 31392: 4299 cmp r1, r3 - 31394: d002 beq.n 3139c <__sflush_r+0x98> - 31396: 4640 mov r0, r8 - 31398: f7fd fcd4 bl 2ed44 <_free_r> - 3139c: 2000 movs r0, #0 - 3139e: 6320 str r0, [r4, #48] ; 0x30 - 313a0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 313a4: 6926 ldr r6, [r4, #16] - 313a6: b1be cbz r6, 313d8 <__sflush_r+0xd4> - 313a8: b293 uxth r3, r2 - 313aa: 6825 ldr r5, [r4, #0] - 313ac: 6026 str r6, [r4, #0] - 313ae: 079a lsls r2, r3, #30 - 313b0: bf0c ite eq - 313b2: 6963 ldreq r3, [r4, #20] - 313b4: 2300 movne r3, #0 - 313b6: 1bad subs r5, r5, r6 - 313b8: 60a3 str r3, [r4, #8] - 313ba: e00b b.n 313d4 <__sflush_r+0xd0> - 313bc: 462b mov r3, r5 - 313be: 4632 mov r2, r6 - 313c0: 69e1 ldr r1, [r4, #28] - 313c2: 6a67 ldr r7, [r4, #36] ; 0x24 - 313c4: 4640 mov r0, r8 - 313c6: 47b8 blx r7 - 313c8: f1b0 0c00 subs.w ip, r0, #0 - 313cc: eba5 050c sub.w r5, r5, ip - 313d0: 4466 add r6, ip - 313d2: dd17 ble.n 31404 <__sflush_r+0x100> - 313d4: 2d00 cmp r5, #0 - 313d6: dcf1 bgt.n 313bc <__sflush_r+0xb8> - 313d8: 2000 movs r0, #0 - 313da: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 313de: 6be3 ldr r3, [r4, #60] ; 0x3c - 313e0: 2b00 cmp r3, #0 - 313e2: dc9d bgt.n 31320 <__sflush_r+0x1c> - 313e4: e7f8 b.n 313d8 <__sflush_r+0xd4> - 313e6: 6d20 ldr r0, [r4, #80] ; 0x50 - 313e8: e7ae b.n 31348 <__sflush_r+0x44> - 313ea: f9b4 300c ldrsh.w r3, [r4, #12] - 313ee: 6922 ldr r2, [r4, #16] - 313f0: 6022 str r2, [r4, #0] - 313f2: f423 6300 bic.w r3, r3, #2048 ; 0x800 - 313f6: 81a3 strh r3, [r4, #12] - 313f8: 2200 movs r2, #0 - 313fa: 04db lsls r3, r3, #19 - 313fc: 6062 str r2, [r4, #4] - 313fe: d5c2 bpl.n 31386 <__sflush_r+0x82> - 31400: 6520 str r0, [r4, #80] ; 0x50 - 31402: e7c0 b.n 31386 <__sflush_r+0x82> - 31404: 89a3 ldrh r3, [r4, #12] - 31406: f043 0340 orr.w r3, r3, #64 ; 0x40 - 3140a: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 3140e: 81a3 strh r3, [r4, #12] - 31410: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 31414: f8d8 3000 ldr.w r3, [r8] - 31418: 2b00 cmp r3, #0 - 3141a: d093 beq.n 31344 <__sflush_r+0x40> - 3141c: 2b1d cmp r3, #29 - 3141e: d006 beq.n 3142e <__sflush_r+0x12a> - 31420: 2b16 cmp r3, #22 - 31422: d004 beq.n 3142e <__sflush_r+0x12a> - 31424: 89a3 ldrh r3, [r4, #12] - 31426: f043 0340 orr.w r3, r3, #64 ; 0x40 - 3142a: 81a3 strh r3, [r4, #12] - 3142c: e7d5 b.n 313da <__sflush_r+0xd6> - 3142e: f8c8 6000 str.w r6, [r8] - 31432: e7d1 b.n 313d8 <__sflush_r+0xd4> - -00031434 <_fflush_r>: - 31434: b538 push {r3, r4, r5, lr} - 31436: 460c mov r4, r1 - 31438: 4605 mov r5, r0 - 3143a: b108 cbz r0, 31440 <_fflush_r+0xc> - 3143c: 6b43 ldr r3, [r0, #52] ; 0x34 - 3143e: b303 cbz r3, 31482 <_fflush_r+0x4e> - 31440: f9b4 000c ldrsh.w r0, [r4, #12] - 31444: b188 cbz r0, 3146a <_fflush_r+0x36> - 31446: 6e63 ldr r3, [r4, #100] ; 0x64 - 31448: 07db lsls r3, r3, #31 - 3144a: d401 bmi.n 31450 <_fflush_r+0x1c> - 3144c: 0581 lsls r1, r0, #22 - 3144e: d50f bpl.n 31470 <_fflush_r+0x3c> - 31450: 4628 mov r0, r5 - 31452: 4621 mov r1, r4 - 31454: f7ff ff56 bl 31304 <__sflush_r> - 31458: 6e63 ldr r3, [r4, #100] ; 0x64 - 3145a: 07da lsls r2, r3, #31 - 3145c: 4605 mov r5, r0 - 3145e: d402 bmi.n 31466 <_fflush_r+0x32> - 31460: 89a3 ldrh r3, [r4, #12] - 31462: 059b lsls r3, r3, #22 - 31464: d508 bpl.n 31478 <_fflush_r+0x44> - 31466: 4628 mov r0, r5 - 31468: bd38 pop {r3, r4, r5, pc} - 3146a: 4605 mov r5, r0 - 3146c: 4628 mov r0, r5 - 3146e: bd38 pop {r3, r4, r5, pc} - 31470: 6da0 ldr r0, [r4, #88] ; 0x58 - 31472: f7fd fb09 bl 2ea88 <__retarget_lock_acquire_recursive> - 31476: e7eb b.n 31450 <_fflush_r+0x1c> - 31478: 6da0 ldr r0, [r4, #88] ; 0x58 - 3147a: f7fd fb07 bl 2ea8c <__retarget_lock_release_recursive> - 3147e: 4628 mov r0, r5 - 31480: bd38 pop {r3, r4, r5, pc} - 31482: f7fc ff39 bl 2e2f8 <__sinit> - 31486: e7db b.n 31440 <_fflush_r+0xc> - -00031488 <__sread>: - 31488: b510 push {r4, lr} - 3148a: 460c mov r4, r1 - 3148c: f9b1 100e ldrsh.w r1, [r1, #14] - 31490: f000 f87a bl 31588 <_read_r> - 31494: 2800 cmp r0, #0 - 31496: db03 blt.n 314a0 <__sread+0x18> - 31498: 6d23 ldr r3, [r4, #80] ; 0x50 - 3149a: 4403 add r3, r0 - 3149c: 6523 str r3, [r4, #80] ; 0x50 - 3149e: bd10 pop {r4, pc} - 314a0: 89a3 ldrh r3, [r4, #12] - 314a2: f423 5380 bic.w r3, r3, #4096 ; 0x1000 - 314a6: 81a3 strh r3, [r4, #12] - 314a8: bd10 pop {r4, pc} - 314aa: bf00 nop - -000314ac <__swrite>: - 314ac: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 314b0: 460c mov r4, r1 - 314b2: f9b1 100c ldrsh.w r1, [r1, #12] - 314b6: 461f mov r7, r3 - 314b8: 05cb lsls r3, r1, #23 - 314ba: 4605 mov r5, r0 - 314bc: 4616 mov r6, r2 - 314be: d40b bmi.n 314d8 <__swrite+0x2c> - 314c0: f421 5180 bic.w r1, r1, #4096 ; 0x1000 - 314c4: 81a1 strh r1, [r4, #12] - 314c6: 463b mov r3, r7 - 314c8: f9b4 100e ldrsh.w r1, [r4, #14] - 314cc: 4632 mov r2, r6 - 314ce: 4628 mov r0, r5 - 314d0: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 314d4: f7fd b8c0 b.w 2e658 <_write_r> - 314d8: f9b4 100e ldrsh.w r1, [r4, #14] - 314dc: 2302 movs r3, #2 - 314de: 2200 movs r2, #0 - 314e0: f000 f83c bl 3155c <_lseek_r> - 314e4: f9b4 100c ldrsh.w r1, [r4, #12] - 314e8: e7ea b.n 314c0 <__swrite+0x14> - 314ea: bf00 nop - -000314ec <__sseek>: - 314ec: b510 push {r4, lr} - 314ee: 460c mov r4, r1 - 314f0: f9b1 100e ldrsh.w r1, [r1, #14] - 314f4: f000 f832 bl 3155c <_lseek_r> - 314f8: 89a3 ldrh r3, [r4, #12] - 314fa: 1c42 adds r2, r0, #1 - 314fc: bf0e itee eq - 314fe: f423 5380 biceq.w r3, r3, #4096 ; 0x1000 - 31502: f443 5380 orrne.w r3, r3, #4096 ; 0x1000 - 31506: 6520 strne r0, [r4, #80] ; 0x50 - 31508: 81a3 strh r3, [r4, #12] - 3150a: bd10 pop {r4, pc} - -0003150c <__sclose>: - 3150c: f9b1 100e ldrsh.w r1, [r1, #14] - 31510: f000 b812 b.w 31538 <_close_r> - -00031514 <__ascii_wctomb>: - 31514: b149 cbz r1, 3152a <__ascii_wctomb+0x16> - 31516: 2aff cmp r2, #255 ; 0xff - 31518: d802 bhi.n 31520 <__ascii_wctomb+0xc> - 3151a: 700a strb r2, [r1, #0] - 3151c: 2001 movs r0, #1 - 3151e: 4770 bx lr - 31520: 238a movs r3, #138 ; 0x8a - 31522: 6003 str r3, [r0, #0] - 31524: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 31528: 4770 bx lr - 3152a: 4608 mov r0, r1 - 3152c: 4770 bx lr - 3152e: bf00 nop - -00031530 <_localeconv_r>: - 31530: 4800 ldr r0, [pc, #0] ; (31534 <_localeconv_r+0x4>) - 31532: 4770 bx lr - 31534: 20004d18 .word 0x20004d18 - -00031538 <_close_r>: - 31538: b538 push {r3, r4, r5, lr} - 3153a: 4d07 ldr r5, [pc, #28] ; (31558 <_close_r+0x20>) - 3153c: 2200 movs r2, #0 - 3153e: 4604 mov r4, r0 - 31540: 4608 mov r0, r1 - 31542: 602a str r2, [r5, #0] - 31544: f7f9 fc06 bl 2ad54 <_close> - 31548: 1c43 adds r3, r0, #1 - 3154a: d000 beq.n 3154e <_close_r+0x16> - 3154c: bd38 pop {r3, r4, r5, pc} - 3154e: 682b ldr r3, [r5, #0] - 31550: 2b00 cmp r3, #0 - 31552: d0fb beq.n 3154c <_close_r+0x14> - 31554: 6023 str r3, [r4, #0] - 31556: bd38 pop {r3, r4, r5, pc} - 31558: 2000ba48 .word 0x2000ba48 - -0003155c <_lseek_r>: - 3155c: b538 push {r3, r4, r5, lr} - 3155e: 460c mov r4, r1 - 31560: 4d08 ldr r5, [pc, #32] ; (31584 <_lseek_r+0x28>) - 31562: 4684 mov ip, r0 - 31564: 4611 mov r1, r2 - 31566: 4620 mov r0, r4 - 31568: 461a mov r2, r3 - 3156a: 2300 movs r3, #0 - 3156c: 602b str r3, [r5, #0] - 3156e: 4664 mov r4, ip - 31570: f7f9 fbfc bl 2ad6c <_lseek> - 31574: 1c43 adds r3, r0, #1 - 31576: d000 beq.n 3157a <_lseek_r+0x1e> - 31578: bd38 pop {r3, r4, r5, pc} - 3157a: 682b ldr r3, [r5, #0] - 3157c: 2b00 cmp r3, #0 - 3157e: d0fb beq.n 31578 <_lseek_r+0x1c> - 31580: 6023 str r3, [r4, #0] - 31582: bd38 pop {r3, r4, r5, pc} - 31584: 2000ba48 .word 0x2000ba48 - -00031588 <_read_r>: - 31588: b538 push {r3, r4, r5, lr} + 30c22: bf00 nop + +00030c24 <__multadd>: + 30c24: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 30c28: 690e ldr r6, [r1, #16] + 30c2a: 4680 mov r8, r0 + 30c2c: 460f mov r7, r1 + 30c2e: 461d mov r5, r3 + 30c30: f101 0e14 add.w lr, r1, #20 + 30c34: 2000 movs r0, #0 + 30c36: f8de 1000 ldr.w r1, [lr] + 30c3a: b28c uxth r4, r1 + 30c3c: fb02 5304 mla r3, r2, r4, r5 + 30c40: 0c09 lsrs r1, r1, #16 + 30c42: ea4f 4c13 mov.w ip, r3, lsr #16 + 30c46: fb02 cc01 mla ip, r2, r1, ip + 30c4a: 3001 adds r0, #1 + 30c4c: b29c uxth r4, r3 + 30c4e: eb04 440c add.w r4, r4, ip, lsl #16 + 30c52: 4286 cmp r6, r0 + 30c54: f84e 4b04 str.w r4, [lr], #4 + 30c58: ea4f 451c mov.w r5, ip, lsr #16 + 30c5c: dceb bgt.n 30c36 <__multadd+0x12> + 30c5e: b13d cbz r5, 30c70 <__multadd+0x4c> + 30c60: 68bb ldr r3, [r7, #8] + 30c62: 42b3 cmp r3, r6 + 30c64: dd07 ble.n 30c76 <__multadd+0x52> + 30c66: eb07 0386 add.w r3, r7, r6, lsl #2 + 30c6a: 3601 adds r6, #1 + 30c6c: 615d str r5, [r3, #20] + 30c6e: 613e str r6, [r7, #16] + 30c70: 4638 mov r0, r7 + 30c72: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 30c76: 6879 ldr r1, [r7, #4] + 30c78: 4640 mov r0, r8 + 30c7a: 3101 adds r1, #1 + 30c7c: f7ff ffa2 bl 30bc4 <_Balloc> + 30c80: 4604 mov r4, r0 + 30c82: b1b0 cbz r0, 30cb2 <__multadd+0x8e> + 30c84: 693a ldr r2, [r7, #16] + 30c86: 3202 adds r2, #2 + 30c88: f107 010c add.w r1, r7, #12 + 30c8c: 0092 lsls r2, r2, #2 + 30c8e: 300c adds r0, #12 + 30c90: f7f9 fdae bl 2a7f0 + 30c94: f8d8 3044 ldr.w r3, [r8, #68] ; 0x44 + 30c98: 687a ldr r2, [r7, #4] + 30c9a: f853 1022 ldr.w r1, [r3, r2, lsl #2] + 30c9e: 6039 str r1, [r7, #0] + 30ca0: f843 7022 str.w r7, [r3, r2, lsl #2] + 30ca4: 4627 mov r7, r4 + 30ca6: eb07 0386 add.w r3, r7, r6, lsl #2 + 30caa: 3601 adds r6, #1 + 30cac: 615d str r5, [r3, #20] + 30cae: 613e str r6, [r7, #16] + 30cb0: e7de b.n 30c70 <__multadd+0x4c> + 30cb2: 4b03 ldr r3, [pc, #12] ; (30cc0 <__multadd+0x9c>) + 30cb4: 4803 ldr r0, [pc, #12] ; (30cc4 <__multadd+0xa0>) + 30cb6: 4622 mov r2, r4 + 30cb8: 21ba movs r1, #186 ; 0xba + 30cba: f000 fd69 bl 31790 <__assert_func> + 30cbe: bf00 nop + 30cc0: 20004328 .word 0x20004328 + 30cc4: 2000433c .word 0x2000433c + +00030cc8 <__hi0bits>: + 30cc8: 0c03 lsrs r3, r0, #16 + 30cca: 041b lsls r3, r3, #16 + 30ccc: b9d3 cbnz r3, 30d04 <__hi0bits+0x3c> + 30cce: 0400 lsls r0, r0, #16 + 30cd0: 2310 movs r3, #16 + 30cd2: f010 4f7f tst.w r0, #4278190080 ; 0xff000000 + 30cd6: bf04 itt eq + 30cd8: 0200 lsleq r0, r0, #8 + 30cda: 3308 addeq r3, #8 + 30cdc: f010 4f70 tst.w r0, #4026531840 ; 0xf0000000 + 30ce0: bf04 itt eq + 30ce2: 0100 lsleq r0, r0, #4 + 30ce4: 3304 addeq r3, #4 + 30ce6: f010 4f40 tst.w r0, #3221225472 ; 0xc0000000 + 30cea: bf04 itt eq + 30cec: 0080 lsleq r0, r0, #2 + 30cee: 3302 addeq r3, #2 + 30cf0: 2800 cmp r0, #0 + 30cf2: db05 blt.n 30d00 <__hi0bits+0x38> + 30cf4: f010 4f80 tst.w r0, #1073741824 ; 0x40000000 + 30cf8: f103 0301 add.w r3, r3, #1 + 30cfc: bf08 it eq + 30cfe: 2320 moveq r3, #32 + 30d00: 4618 mov r0, r3 + 30d02: 4770 bx lr + 30d04: 2300 movs r3, #0 + 30d06: e7e4 b.n 30cd2 <__hi0bits+0xa> + +00030d08 <__lo0bits>: + 30d08: 6803 ldr r3, [r0, #0] + 30d0a: f013 0207 ands.w r2, r3, #7 + 30d0e: d008 beq.n 30d22 <__lo0bits+0x1a> + 30d10: 07d9 lsls r1, r3, #31 + 30d12: d41f bmi.n 30d54 <__lo0bits+0x4c> + 30d14: 079a lsls r2, r3, #30 + 30d16: d522 bpl.n 30d5e <__lo0bits+0x56> + 30d18: 085b lsrs r3, r3, #1 + 30d1a: 6003 str r3, [r0, #0] + 30d1c: 2201 movs r2, #1 + 30d1e: 4610 mov r0, r2 + 30d20: 4770 bx lr + 30d22: b299 uxth r1, r3 + 30d24: b909 cbnz r1, 30d2a <__lo0bits+0x22> + 30d26: 0c1b lsrs r3, r3, #16 + 30d28: 2210 movs r2, #16 + 30d2a: b2d9 uxtb r1, r3 + 30d2c: b909 cbnz r1, 30d32 <__lo0bits+0x2a> + 30d2e: 3208 adds r2, #8 + 30d30: 0a1b lsrs r3, r3, #8 + 30d32: 0719 lsls r1, r3, #28 + 30d34: bf04 itt eq + 30d36: 091b lsreq r3, r3, #4 + 30d38: 3204 addeq r2, #4 + 30d3a: 0799 lsls r1, r3, #30 + 30d3c: bf04 itt eq + 30d3e: 089b lsreq r3, r3, #2 + 30d40: 3202 addeq r2, #2 + 30d42: 07d9 lsls r1, r3, #31 + 30d44: d403 bmi.n 30d4e <__lo0bits+0x46> + 30d46: 085b lsrs r3, r3, #1 + 30d48: f102 0201 add.w r2, r2, #1 + 30d4c: d005 beq.n 30d5a <__lo0bits+0x52> + 30d4e: 6003 str r3, [r0, #0] + 30d50: 4610 mov r0, r2 + 30d52: 4770 bx lr + 30d54: 2200 movs r2, #0 + 30d56: 4610 mov r0, r2 + 30d58: 4770 bx lr + 30d5a: 2220 movs r2, #32 + 30d5c: e7df b.n 30d1e <__lo0bits+0x16> + 30d5e: 089b lsrs r3, r3, #2 + 30d60: 2202 movs r2, #2 + 30d62: 6003 str r3, [r0, #0] + 30d64: 4610 mov r0, r2 + 30d66: 4770 bx lr + +00030d68 <__i2b>: + 30d68: b538 push {r3, r4, r5, lr} + 30d6a: 6c43 ldr r3, [r0, #68] ; 0x44 + 30d6c: 4604 mov r4, r0 + 30d6e: 460d mov r5, r1 + 30d70: b14b cbz r3, 30d86 <__i2b+0x1e> + 30d72: 6858 ldr r0, [r3, #4] + 30d74: b1b0 cbz r0, 30da4 <__i2b+0x3c> + 30d76: 6802 ldr r2, [r0, #0] + 30d78: 605a str r2, [r3, #4] + 30d7a: 2200 movs r2, #0 + 30d7c: 2301 movs r3, #1 + 30d7e: e9c0 3504 strd r3, r5, [r0, #16] + 30d82: 60c2 str r2, [r0, #12] + 30d84: bd38 pop {r3, r4, r5, pc} + 30d86: 2221 movs r2, #33 ; 0x21 + 30d88: 2104 movs r1, #4 + 30d8a: f7fc fd73 bl 2d874 <_calloc_r> + 30d8e: 4603 mov r3, r0 + 30d90: 6460 str r0, [r4, #68] ; 0x44 + 30d92: 2800 cmp r0, #0 + 30d94: d1ed bne.n 30d72 <__i2b+0xa> + 30d96: 4b09 ldr r3, [pc, #36] ; (30dbc <__i2b+0x54>) + 30d98: 4809 ldr r0, [pc, #36] ; (30dc0 <__i2b+0x58>) + 30d9a: 2200 movs r2, #0 + 30d9c: f240 1145 movw r1, #325 ; 0x145 + 30da0: f000 fcf6 bl 31790 <__assert_func> + 30da4: 221c movs r2, #28 + 30da6: 2101 movs r1, #1 + 30da8: 4620 mov r0, r4 + 30daa: f7fc fd63 bl 2d874 <_calloc_r> + 30dae: 2800 cmp r0, #0 + 30db0: d0f1 beq.n 30d96 <__i2b+0x2e> + 30db2: 2201 movs r2, #1 + 30db4: 2302 movs r3, #2 + 30db6: e9c0 2301 strd r2, r3, [r0, #4] + 30dba: e7de b.n 30d7a <__i2b+0x12> + 30dbc: 20004328 .word 0x20004328 + 30dc0: 2000433c .word 0x2000433c + +00030dc4 <__multiply>: + 30dc4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 30dc8: 690e ldr r6, [r1, #16] + 30dca: 6915 ldr r5, [r2, #16] + 30dcc: 42ae cmp r6, r5 + 30dce: b085 sub sp, #20 + 30dd0: 4688 mov r8, r1 + 30dd2: 4614 mov r4, r2 + 30dd4: db05 blt.n 30de2 <__multiply+0x1e> + 30dd6: 462a mov r2, r5 + 30dd8: 4623 mov r3, r4 + 30dda: 4635 mov r5, r6 + 30ddc: 460c mov r4, r1 + 30dde: 4616 mov r6, r2 + 30de0: 4698 mov r8, r3 + 30de2: 68a3 ldr r3, [r4, #8] + 30de4: 6861 ldr r1, [r4, #4] + 30de6: 19af adds r7, r5, r6 + 30de8: 42bb cmp r3, r7 + 30dea: bfb8 it lt + 30dec: 3101 addlt r1, #1 + 30dee: f7ff fee9 bl 30bc4 <_Balloc> + 30df2: 9001 str r0, [sp, #4] + 30df4: 2800 cmp r0, #0 + 30df6: f000 8087 beq.w 30f08 <__multiply+0x144> + 30dfa: 9b01 ldr r3, [sp, #4] + 30dfc: f103 0914 add.w r9, r3, #20 + 30e00: eb09 0a87 add.w sl, r9, r7, lsl #2 + 30e04: 45d1 cmp r9, sl + 30e06: d205 bcs.n 30e14 <__multiply+0x50> + 30e08: 464b mov r3, r9 + 30e0a: 2200 movs r2, #0 + 30e0c: f843 2b04 str.w r2, [r3], #4 + 30e10: 459a cmp sl, r3 + 30e12: d8fb bhi.n 30e0c <__multiply+0x48> + 30e14: f108 0814 add.w r8, r8, #20 + 30e18: eb08 0b86 add.w fp, r8, r6, lsl #2 + 30e1c: f104 0314 add.w r3, r4, #20 + 30e20: 45d8 cmp r8, fp + 30e22: 461a mov r2, r3 + 30e24: eb03 0585 add.w r5, r3, r5, lsl #2 + 30e28: d25f bcs.n 30eea <__multiply+0x126> + 30e2a: 1b2b subs r3, r5, r4 + 30e2c: 3b15 subs r3, #21 + 30e2e: f023 0303 bic.w r3, r3, #3 + 30e32: 3304 adds r3, #4 + 30e34: 3415 adds r4, #21 + 30e36: 42a5 cmp r5, r4 + 30e38: bf38 it cc + 30e3a: 2304 movcc r3, #4 + 30e3c: e9cd a702 strd sl, r7, [sp, #8] + 30e40: 46ac mov ip, r5 + 30e42: 461f mov r7, r3 + 30e44: 4692 mov sl, r2 + 30e46: e005 b.n 30e54 <__multiply+0x90> + 30e48: 0c09 lsrs r1, r1, #16 + 30e4a: d129 bne.n 30ea0 <__multiply+0xdc> + 30e4c: 45c3 cmp fp, r8 + 30e4e: f109 0904 add.w r9, r9, #4 + 30e52: d948 bls.n 30ee6 <__multiply+0x122> + 30e54: f858 1b04 ldr.w r1, [r8], #4 + 30e58: b28d uxth r5, r1 + 30e5a: 2d00 cmp r5, #0 + 30e5c: d0f4 beq.n 30e48 <__multiply+0x84> + 30e5e: 4656 mov r6, sl + 30e60: 464c mov r4, r9 + 30e62: 2300 movs r3, #0 + 30e64: f856 1b04 ldr.w r1, [r6], #4 + 30e68: 6822 ldr r2, [r4, #0] + 30e6a: fa1f fe81 uxth.w lr, r1 + 30e6e: b290 uxth r0, r2 + 30e70: 0c09 lsrs r1, r1, #16 + 30e72: fb05 000e mla r0, r5, lr, r0 + 30e76: 0c12 lsrs r2, r2, #16 + 30e78: 4403 add r3, r0 + 30e7a: fb05 2201 mla r2, r5, r1, r2 + 30e7e: eb02 4213 add.w r2, r2, r3, lsr #16 + 30e82: b29b uxth r3, r3 + 30e84: ea43 4302 orr.w r3, r3, r2, lsl #16 + 30e88: 45b4 cmp ip, r6 + 30e8a: f844 3b04 str.w r3, [r4], #4 + 30e8e: ea4f 4312 mov.w r3, r2, lsr #16 + 30e92: d8e7 bhi.n 30e64 <__multiply+0xa0> + 30e94: f849 3007 str.w r3, [r9, r7] + 30e98: f858 1c04 ldr.w r1, [r8, #-4] + 30e9c: 0c09 lsrs r1, r1, #16 + 30e9e: d0d5 beq.n 30e4c <__multiply+0x88> + 30ea0: f8d9 3000 ldr.w r3, [r9] + 30ea4: 4650 mov r0, sl + 30ea6: 461a mov r2, r3 + 30ea8: 464c mov r4, r9 + 30eaa: 2600 movs r6, #0 + 30eac: 8805 ldrh r5, [r0, #0] + 30eae: 0c12 lsrs r2, r2, #16 + 30eb0: fb01 2205 mla r2, r1, r5, r2 + 30eb4: 4416 add r6, r2 + 30eb6: b29b uxth r3, r3 + 30eb8: ea43 4306 orr.w r3, r3, r6, lsl #16 + 30ebc: f844 3b04 str.w r3, [r4], #4 + 30ec0: f850 5b04 ldr.w r5, [r0], #4 + 30ec4: 6822 ldr r2, [r4, #0] + 30ec6: 0c2d lsrs r5, r5, #16 + 30ec8: b293 uxth r3, r2 + 30eca: fb01 3305 mla r3, r1, r5, r3 + 30ece: eb03 4316 add.w r3, r3, r6, lsr #16 + 30ed2: 4584 cmp ip, r0 + 30ed4: ea4f 4613 mov.w r6, r3, lsr #16 + 30ed8: d8e8 bhi.n 30eac <__multiply+0xe8> + 30eda: 45c3 cmp fp, r8 + 30edc: f849 3007 str.w r3, [r9, r7] + 30ee0: f109 0904 add.w r9, r9, #4 + 30ee4: d8b6 bhi.n 30e54 <__multiply+0x90> + 30ee6: e9dd a702 ldrd sl, r7, [sp, #8] + 30eea: 2f00 cmp r7, #0 + 30eec: dc02 bgt.n 30ef4 <__multiply+0x130> + 30eee: e005 b.n 30efc <__multiply+0x138> + 30ef0: 3f01 subs r7, #1 + 30ef2: d003 beq.n 30efc <__multiply+0x138> + 30ef4: f85a 3d04 ldr.w r3, [sl, #-4]! + 30ef8: 2b00 cmp r3, #0 + 30efa: d0f9 beq.n 30ef0 <__multiply+0x12c> + 30efc: 9b01 ldr r3, [sp, #4] + 30efe: 4618 mov r0, r3 + 30f00: 611f str r7, [r3, #16] + 30f02: b005 add sp, #20 + 30f04: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 30f08: 4b03 ldr r3, [pc, #12] ; (30f18 <__multiply+0x154>) + 30f0a: 4804 ldr r0, [pc, #16] ; (30f1c <__multiply+0x158>) + 30f0c: 9a01 ldr r2, [sp, #4] + 30f0e: f44f 71b1 mov.w r1, #354 ; 0x162 + 30f12: f000 fc3d bl 31790 <__assert_func> + 30f16: bf00 nop + 30f18: 20004328 .word 0x20004328 + 30f1c: 2000433c .word 0x2000433c + +00030f20 <__pow5mult>: + 30f20: f012 0303 ands.w r3, r2, #3 + 30f24: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 30f28: 4614 mov r4, r2 + 30f2a: 4606 mov r6, r0 + 30f2c: d132 bne.n 30f94 <__pow5mult+0x74> + 30f2e: 460d mov r5, r1 + 30f30: 10a4 asrs r4, r4, #2 + 30f32: d020 beq.n 30f76 <__pow5mult+0x56> + 30f34: f8d6 8040 ldr.w r8, [r6, #64] ; 0x40 + 30f38: f1b8 0f00 cmp.w r8, #0 + 30f3c: d033 beq.n 30fa6 <__pow5mult+0x86> + 30f3e: 07e3 lsls r3, r4, #31 + 30f40: f04f 0700 mov.w r7, #0 + 30f44: d407 bmi.n 30f56 <__pow5mult+0x36> + 30f46: 1064 asrs r4, r4, #1 + 30f48: d015 beq.n 30f76 <__pow5mult+0x56> + 30f4a: f8d8 0000 ldr.w r0, [r8] + 30f4e: b1a8 cbz r0, 30f7c <__pow5mult+0x5c> + 30f50: 4680 mov r8, r0 + 30f52: 07e3 lsls r3, r4, #31 + 30f54: d5f7 bpl.n 30f46 <__pow5mult+0x26> + 30f56: 4642 mov r2, r8 + 30f58: 4629 mov r1, r5 + 30f5a: 4630 mov r0, r6 + 30f5c: f7ff ff32 bl 30dc4 <__multiply> + 30f60: b1b5 cbz r5, 30f90 <__pow5mult+0x70> + 30f62: 6869 ldr r1, [r5, #4] + 30f64: 6c73 ldr r3, [r6, #68] ; 0x44 + 30f66: 1064 asrs r4, r4, #1 + 30f68: f853 2021 ldr.w r2, [r3, r1, lsl #2] + 30f6c: 602a str r2, [r5, #0] + 30f6e: f843 5021 str.w r5, [r3, r1, lsl #2] + 30f72: 4605 mov r5, r0 + 30f74: d1e9 bne.n 30f4a <__pow5mult+0x2a> + 30f76: 4628 mov r0, r5 + 30f78: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 30f7c: 4642 mov r2, r8 + 30f7e: 4641 mov r1, r8 + 30f80: 4630 mov r0, r6 + 30f82: f7ff ff1f bl 30dc4 <__multiply> + 30f86: f8c8 0000 str.w r0, [r8] + 30f8a: 6007 str r7, [r0, #0] + 30f8c: 4680 mov r8, r0 + 30f8e: e7e0 b.n 30f52 <__pow5mult+0x32> + 30f90: 4605 mov r5, r0 + 30f92: e7d8 b.n 30f46 <__pow5mult+0x26> + 30f94: 3b01 subs r3, #1 + 30f96: 4a0f ldr r2, [pc, #60] ; (30fd4 <__pow5mult+0xb4>) + 30f98: f852 2023 ldr.w r2, [r2, r3, lsl #2] + 30f9c: 2300 movs r3, #0 + 30f9e: f7ff fe41 bl 30c24 <__multadd> + 30fa2: 4605 mov r5, r0 + 30fa4: e7c4 b.n 30f30 <__pow5mult+0x10> + 30fa6: 2101 movs r1, #1 + 30fa8: 4630 mov r0, r6 + 30faa: f7ff fe0b bl 30bc4 <_Balloc> + 30fae: 4680 mov r8, r0 + 30fb0: b140 cbz r0, 30fc4 <__pow5mult+0xa4> + 30fb2: 2301 movs r3, #1 + 30fb4: f240 2271 movw r2, #625 ; 0x271 + 30fb8: e9c0 3204 strd r3, r2, [r0, #16] + 30fbc: 2300 movs r3, #0 + 30fbe: 6430 str r0, [r6, #64] ; 0x40 + 30fc0: 6003 str r3, [r0, #0] + 30fc2: e7bc b.n 30f3e <__pow5mult+0x1e> + 30fc4: 4b04 ldr r3, [pc, #16] ; (30fd8 <__pow5mult+0xb8>) + 30fc6: 4805 ldr r0, [pc, #20] ; (30fdc <__pow5mult+0xbc>) + 30fc8: 4642 mov r2, r8 + 30fca: f240 1145 movw r1, #325 ; 0x145 + 30fce: f000 fbdf bl 31790 <__assert_func> + 30fd2: bf00 nop + 30fd4: 20004884 .word 0x20004884 + 30fd8: 20004328 .word 0x20004328 + 30fdc: 2000433c .word 0x2000433c + +00030fe0 <__lshift>: + 30fe0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 30fe4: 460d mov r5, r1 + 30fe6: 4614 mov r4, r2 + 30fe8: 692f ldr r7, [r5, #16] + 30fea: 68ab ldr r3, [r5, #8] + 30fec: 6849 ldr r1, [r1, #4] + 30fee: eb07 1762 add.w r7, r7, r2, asr #5 + 30ff2: 1c7e adds r6, r7, #1 + 30ff4: 429e cmp r6, r3 + 30ff6: 4680 mov r8, r0 + 30ff8: ea4f 1962 mov.w r9, r2, asr #5 + 30ffc: dd04 ble.n 31008 <__lshift+0x28> + 30ffe: 005b lsls r3, r3, #1 + 31000: 429e cmp r6, r3 + 31002: f101 0101 add.w r1, r1, #1 + 31006: dcfa bgt.n 30ffe <__lshift+0x1e> + 31008: 4640 mov r0, r8 + 3100a: f7ff fddb bl 30bc4 <_Balloc> + 3100e: 4684 mov ip, r0 + 31010: 2800 cmp r0, #0 + 31012: d052 beq.n 310ba <__lshift+0xda> + 31014: f1b9 0f00 cmp.w r9, #0 + 31018: f100 0214 add.w r2, r0, #20 + 3101c: dd0e ble.n 3103c <__lshift+0x5c> + 3101e: f109 0105 add.w r1, r9, #5 + 31022: ea4f 0e81 mov.w lr, r1, lsl #2 + 31026: 4613 mov r3, r2 + 31028: eb00 0181 add.w r1, r0, r1, lsl #2 + 3102c: 2000 movs r0, #0 + 3102e: f843 0b04 str.w r0, [r3], #4 + 31032: 428b cmp r3, r1 + 31034: d1fb bne.n 3102e <__lshift+0x4e> + 31036: f1ae 0314 sub.w r3, lr, #20 + 3103a: 441a add r2, r3 + 3103c: 6929 ldr r1, [r5, #16] + 3103e: f105 0314 add.w r3, r5, #20 + 31042: f014 0e1f ands.w lr, r4, #31 + 31046: eb03 0181 add.w r1, r3, r1, lsl #2 + 3104a: d02e beq.n 310aa <__lshift+0xca> + 3104c: f1ce 0920 rsb r9, lr, #32 + 31050: 4610 mov r0, r2 + 31052: f04f 0a00 mov.w sl, #0 + 31056: 681c ldr r4, [r3, #0] + 31058: fa04 f40e lsl.w r4, r4, lr + 3105c: ea44 040a orr.w r4, r4, sl + 31060: f840 4b04 str.w r4, [r0], #4 + 31064: f853 4b04 ldr.w r4, [r3], #4 + 31068: 4299 cmp r1, r3 + 3106a: fa24 fa09 lsr.w sl, r4, r9 + 3106e: d8f2 bhi.n 31056 <__lshift+0x76> + 31070: 1b4b subs r3, r1, r5 + 31072: 3b15 subs r3, #21 + 31074: f023 0303 bic.w r3, r3, #3 + 31078: 3304 adds r3, #4 + 3107a: f105 0015 add.w r0, r5, #21 + 3107e: 4281 cmp r1, r0 + 31080: bf38 it cc + 31082: 2304 movcc r3, #4 + 31084: f1ba 0f00 cmp.w sl, #0 + 31088: bf18 it ne + 3108a: 4637 movne r7, r6 + 3108c: f842 a003 str.w sl, [r2, r3] + 31090: f8d8 3044 ldr.w r3, [r8, #68] ; 0x44 + 31094: 686a ldr r2, [r5, #4] + 31096: f8cc 7010 str.w r7, [ip, #16] + 3109a: f853 1022 ldr.w r1, [r3, r2, lsl #2] + 3109e: 6029 str r1, [r5, #0] + 310a0: 4660 mov r0, ip + 310a2: f843 5022 str.w r5, [r3, r2, lsl #2] + 310a6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 310aa: 3a04 subs r2, #4 + 310ac: f853 0b04 ldr.w r0, [r3], #4 + 310b0: f842 0f04 str.w r0, [r2, #4]! + 310b4: 4299 cmp r1, r3 + 310b6: d8f9 bhi.n 310ac <__lshift+0xcc> + 310b8: e7ea b.n 31090 <__lshift+0xb0> + 310ba: 4b03 ldr r3, [pc, #12] ; (310c8 <__lshift+0xe8>) + 310bc: 4803 ldr r0, [pc, #12] ; (310cc <__lshift+0xec>) + 310be: 4662 mov r2, ip + 310c0: f44f 71ef mov.w r1, #478 ; 0x1de + 310c4: f000 fb64 bl 31790 <__assert_func> + 310c8: 20004328 .word 0x20004328 + 310cc: 2000433c .word 0x2000433c + +000310d0 <__mcmp>: + 310d0: 690b ldr r3, [r1, #16] + 310d2: 4684 mov ip, r0 + 310d4: 6900 ldr r0, [r0, #16] + 310d6: 1ac0 subs r0, r0, r3 + 310d8: d116 bne.n 31108 <__mcmp+0x38> + 310da: f10c 0c14 add.w ip, ip, #20 + 310de: 3114 adds r1, #20 + 310e0: eb0c 0283 add.w r2, ip, r3, lsl #2 + 310e4: b410 push {r4} + 310e6: eb01 0383 add.w r3, r1, r3, lsl #2 + 310ea: e001 b.n 310f0 <__mcmp+0x20> + 310ec: 4594 cmp ip, r2 + 310ee: d208 bcs.n 31102 <__mcmp+0x32> + 310f0: f852 4d04 ldr.w r4, [r2, #-4]! + 310f4: f853 1d04 ldr.w r1, [r3, #-4]! + 310f8: 428c cmp r4, r1 + 310fa: d0f7 beq.n 310ec <__mcmp+0x1c> + 310fc: d205 bcs.n 3110a <__mcmp+0x3a> + 310fe: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 31102: f85d 4b04 ldr.w r4, [sp], #4 + 31106: 4770 bx lr + 31108: 4770 bx lr + 3110a: 2001 movs r0, #1 + 3110c: f85d 4b04 ldr.w r4, [sp], #4 + 31110: 4770 bx lr + 31112: bf00 nop + +00031114 <__mdiff>: + 31114: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 31118: 690f ldr r7, [r1, #16] + 3111a: 6913 ldr r3, [r2, #16] + 3111c: 1aff subs r7, r7, r3 + 3111e: 2f00 cmp r7, #0 + 31120: 460e mov r6, r1 + 31122: 4690 mov r8, r2 + 31124: d17f bne.n 31226 <__mdiff+0x112> + 31126: f101 0514 add.w r5, r1, #20 + 3112a: 3214 adds r2, #20 + 3112c: eb02 0283 add.w r2, r2, r3, lsl #2 + 31130: eb05 0383 add.w r3, r5, r3, lsl #2 + 31134: e001 b.n 3113a <__mdiff+0x26> + 31136: 429d cmp r5, r3 + 31138: d278 bcs.n 3122c <__mdiff+0x118> + 3113a: f853 1d04 ldr.w r1, [r3, #-4]! + 3113e: f852 4d04 ldr.w r4, [r2, #-4]! + 31142: 42a1 cmp r1, r4 + 31144: d0f7 beq.n 31136 <__mdiff+0x22> + 31146: d369 bcc.n 3121c <__mdiff+0x108> + 31148: 6871 ldr r1, [r6, #4] + 3114a: f7ff fd3b bl 30bc4 <_Balloc> + 3114e: 4681 mov r9, r0 + 31150: 2800 cmp r0, #0 + 31152: d077 beq.n 31244 <__mdiff+0x130> + 31154: 6935 ldr r5, [r6, #16] + 31156: f8d8 2010 ldr.w r2, [r8, #16] + 3115a: 60c7 str r7, [r0, #12] + 3115c: f108 0e14 add.w lr, r8, #20 + 31160: f106 0014 add.w r0, r6, #20 + 31164: f109 0a14 add.w sl, r9, #20 + 31168: f106 0110 add.w r1, r6, #16 + 3116c: eb0e 0282 add.w r2, lr, r2, lsl #2 + 31170: eb00 0785 add.w r7, r0, r5, lsl #2 + 31174: 4656 mov r6, sl + 31176: f04f 0c00 mov.w ip, #0 + 3117a: f85e 4b04 ldr.w r4, [lr], #4 + 3117e: f851 bf04 ldr.w fp, [r1, #4]! + 31182: b2a3 uxth r3, r4 + 31184: fa1c fc8b uxtah ip, ip, fp + 31188: ebac 0303 sub.w r3, ip, r3 + 3118c: ea4f 4c14 mov.w ip, r4, lsr #16 + 31190: ebcc 4c1b rsb ip, ip, fp, lsr #16 + 31194: eb0c 4c23 add.w ip, ip, r3, asr #16 + 31198: b29b uxth r3, r3 + 3119a: ea43 430c orr.w r3, r3, ip, lsl #16 + 3119e: 4572 cmp r2, lr + 311a0: f846 3b04 str.w r3, [r6], #4 + 311a4: ea4f 4c2c mov.w ip, ip, asr #16 + 311a8: d8e7 bhi.n 3117a <__mdiff+0x66> + 311aa: eba2 0108 sub.w r1, r2, r8 + 311ae: 3915 subs r1, #21 + 311b0: f108 0815 add.w r8, r8, #21 + 311b4: 4542 cmp r2, r8 + 311b6: f021 0403 bic.w r4, r1, #3 + 311ba: f104 0404 add.w r4, r4, #4 + 311be: bf38 it cc + 311c0: 2404 movcc r4, #4 + 311c2: 4420 add r0, r4 + 311c4: f021 0203 bic.w r2, r1, #3 + 311c8: bf38 it cc + 311ca: 2200 movcc r2, #0 + 311cc: 4287 cmp r7, r0 + 311ce: 4452 add r2, sl + 311d0: 4454 add r4, sl + 311d2: d918 bls.n 31206 <__mdiff+0xf2> + 311d4: 4626 mov r6, r4 + 311d6: 4601 mov r1, r0 + 311d8: f851 3b04 ldr.w r3, [r1], #4 + 311dc: fa1c fc83 uxtah ip, ip, r3 + 311e0: ea4f 422c mov.w r2, ip, asr #16 + 311e4: eb02 4213 add.w r2, r2, r3, lsr #16 + 311e8: fa1f fc8c uxth.w ip, ip + 311ec: ea4c 4302 orr.w r3, ip, r2, lsl #16 + 311f0: 428f cmp r7, r1 + 311f2: f846 3b04 str.w r3, [r6], #4 + 311f6: ea4f 4c22 mov.w ip, r2, asr #16 + 311fa: d8ed bhi.n 311d8 <__mdiff+0xc4> + 311fc: 3f01 subs r7, #1 + 311fe: 1a3f subs r7, r7, r0 + 31200: f027 0703 bic.w r7, r7, #3 + 31204: 19e2 adds r2, r4, r7 + 31206: b923 cbnz r3, 31212 <__mdiff+0xfe> + 31208: f852 3d04 ldr.w r3, [r2, #-4]! + 3120c: 3d01 subs r5, #1 + 3120e: 2b00 cmp r3, #0 + 31210: d0fa beq.n 31208 <__mdiff+0xf4> + 31212: f8c9 5010 str.w r5, [r9, #16] + 31216: 4648 mov r0, r9 + 31218: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 3121c: 4633 mov r3, r6 + 3121e: 2701 movs r7, #1 + 31220: 4646 mov r6, r8 + 31222: 4698 mov r8, r3 + 31224: e790 b.n 31148 <__mdiff+0x34> + 31226: dbf9 blt.n 3121c <__mdiff+0x108> + 31228: 2700 movs r7, #0 + 3122a: e78d b.n 31148 <__mdiff+0x34> + 3122c: 2100 movs r1, #0 + 3122e: f7ff fcc9 bl 30bc4 <_Balloc> + 31232: 4681 mov r9, r0 + 31234: b168 cbz r0, 31252 <__mdiff+0x13e> + 31236: 2201 movs r2, #1 + 31238: 2300 movs r3, #0 + 3123a: e9c9 2304 strd r2, r3, [r9, #16] + 3123e: 4648 mov r0, r9 + 31240: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 31244: 4b06 ldr r3, [pc, #24] ; (31260 <__mdiff+0x14c>) + 31246: 4807 ldr r0, [pc, #28] ; (31264 <__mdiff+0x150>) + 31248: 464a mov r2, r9 + 3124a: f240 2145 movw r1, #581 ; 0x245 + 3124e: f000 fa9f bl 31790 <__assert_func> + 31252: 4b03 ldr r3, [pc, #12] ; (31260 <__mdiff+0x14c>) + 31254: 4803 ldr r0, [pc, #12] ; (31264 <__mdiff+0x150>) + 31256: 464a mov r2, r9 + 31258: f240 2137 movw r1, #567 ; 0x237 + 3125c: f000 fa98 bl 31790 <__assert_func> + 31260: 20004328 .word 0x20004328 + 31264: 2000433c .word 0x2000433c + +00031268 <__d2b>: + 31268: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 3126c: 4688 mov r8, r1 + 3126e: b083 sub sp, #12 + 31270: 2101 movs r1, #1 + 31272: ec57 6b10 vmov r6, r7, d0 + 31276: 4615 mov r5, r2 + 31278: f7ff fca4 bl 30bc4 <_Balloc> + 3127c: 4604 mov r4, r0 + 3127e: 2800 cmp r0, #0 + 31280: d051 beq.n 31326 <__d2b+0xbe> + 31282: f3c7 590a ubfx r9, r7, #20, #11 + 31286: f3c7 0313 ubfx r3, r7, #0, #20 + 3128a: f1b9 0f00 cmp.w r9, #0 + 3128e: d001 beq.n 31294 <__d2b+0x2c> + 31290: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 + 31294: 2e00 cmp r6, #0 + 31296: 9301 str r3, [sp, #4] + 31298: d118 bne.n 312cc <__d2b+0x64> + 3129a: a801 add r0, sp, #4 + 3129c: f7ff fd34 bl 30d08 <__lo0bits> + 312a0: 9a01 ldr r2, [sp, #4] + 312a2: 6162 str r2, [r4, #20] + 312a4: 2201 movs r2, #1 + 312a6: f100 0320 add.w r3, r0, #32 + 312aa: 6122 str r2, [r4, #16] + 312ac: f1b9 0f00 cmp.w r9, #0 + 312b0: d025 beq.n 312fe <__d2b+0x96> + 312b2: f2a9 4933 subw r9, r9, #1075 ; 0x433 + 312b6: eb09 0203 add.w r2, r9, r3 + 312ba: 4620 mov r0, r4 + 312bc: f1c3 0335 rsb r3, r3, #53 ; 0x35 + 312c0: f8c8 2000 str.w r2, [r8] + 312c4: 602b str r3, [r5, #0] + 312c6: b003 add sp, #12 + 312c8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 312cc: 4668 mov r0, sp + 312ce: 9600 str r6, [sp, #0] + 312d0: f7ff fd1a bl 30d08 <__lo0bits> + 312d4: 4603 mov r3, r0 + 312d6: b310 cbz r0, 3131e <__d2b+0xb6> + 312d8: e9dd 0200 ldrd r0, r2, [sp] + 312dc: f1c3 0120 rsb r1, r3, #32 + 312e0: fa02 f101 lsl.w r1, r2, r1 + 312e4: 4301 orrs r1, r0 + 312e6: 40da lsrs r2, r3 + 312e8: 6161 str r1, [r4, #20] + 312ea: 9201 str r2, [sp, #4] + 312ec: 2a00 cmp r2, #0 + 312ee: 61a2 str r2, [r4, #24] + 312f0: bf14 ite ne + 312f2: 2202 movne r2, #2 + 312f4: 2201 moveq r2, #1 + 312f6: 6122 str r2, [r4, #16] + 312f8: f1b9 0f00 cmp.w r9, #0 + 312fc: d1d9 bne.n 312b2 <__d2b+0x4a> + 312fe: f2a3 4332 subw r3, r3, #1074 ; 0x432 + 31302: f8c8 3000 str.w r3, [r8] + 31306: eb04 0382 add.w r3, r4, r2, lsl #2 + 3130a: 6918 ldr r0, [r3, #16] + 3130c: f7ff fcdc bl 30cc8 <__hi0bits> + 31310: ebc0 1342 rsb r3, r0, r2, lsl #5 + 31314: 4620 mov r0, r4 + 31316: 602b str r3, [r5, #0] + 31318: b003 add sp, #12 + 3131a: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 3131e: 9a00 ldr r2, [sp, #0] + 31320: 6162 str r2, [r4, #20] + 31322: 9a01 ldr r2, [sp, #4] + 31324: e7e2 b.n 312ec <__d2b+0x84> + 31326: 4b03 ldr r3, [pc, #12] ; (31334 <__d2b+0xcc>) + 31328: 4803 ldr r0, [pc, #12] ; (31338 <__d2b+0xd0>) + 3132a: 4622 mov r2, r4 + 3132c: f240 310f movw r1, #783 ; 0x30f + 31330: f000 fa2e bl 31790 <__assert_func> + 31334: 20004328 .word 0x20004328 + 31338: 2000433c .word 0x2000433c + +0003133c <_fclose_r>: + 3133c: b570 push {r4, r5, r6, lr} + 3133e: 2900 cmp r1, #0 + 31340: d04b beq.n 313da <_fclose_r+0x9e> + 31342: 4606 mov r6, r0 + 31344: 460c mov r4, r1 + 31346: b110 cbz r0, 3134e <_fclose_r+0x12> + 31348: 6b43 ldr r3, [r0, #52] ; 0x34 + 3134a: 2b00 cmp r3, #0 + 3134c: d048 beq.n 313e0 <_fclose_r+0xa4> + 3134e: 6e63 ldr r3, [r4, #100] ; 0x64 + 31350: 07d8 lsls r0, r3, #31 + 31352: d534 bpl.n 313be <_fclose_r+0x82> + 31354: f9b4 300c ldrsh.w r3, [r4, #12] + 31358: 2b00 cmp r3, #0 + 3135a: d03e beq.n 313da <_fclose_r+0x9e> + 3135c: 4621 mov r1, r4 + 3135e: 4630 mov r0, r6 + 31360: f000 f850 bl 31404 <__sflush_r> + 31364: 6ae3 ldr r3, [r4, #44] ; 0x2c + 31366: 4605 mov r5, r0 + 31368: b133 cbz r3, 31378 <_fclose_r+0x3c> + 3136a: 69e1 ldr r1, [r4, #28] + 3136c: 4630 mov r0, r6 + 3136e: 4798 blx r3 + 31370: 2800 cmp r0, #0 + 31372: bfb8 it lt + 31374: f04f 35ff movlt.w r5, #4294967295 ; 0xffffffff + 31378: 89a3 ldrh r3, [r4, #12] + 3137a: 061a lsls r2, r3, #24 + 3137c: d43c bmi.n 313f8 <_fclose_r+0xbc> + 3137e: 6b21 ldr r1, [r4, #48] ; 0x30 + 31380: b141 cbz r1, 31394 <_fclose_r+0x58> + 31382: f104 0340 add.w r3, r4, #64 ; 0x40 + 31386: 4299 cmp r1, r3 + 31388: d002 beq.n 31390 <_fclose_r+0x54> + 3138a: 4630 mov r0, r6 + 3138c: f7fd fd5a bl 2ee44 <_free_r> + 31390: 2300 movs r3, #0 + 31392: 6323 str r3, [r4, #48] ; 0x30 + 31394: 6c61 ldr r1, [r4, #68] ; 0x44 + 31396: b121 cbz r1, 313a2 <_fclose_r+0x66> + 31398: 4630 mov r0, r6 + 3139a: f7fd fd53 bl 2ee44 <_free_r> + 3139e: 2300 movs r3, #0 + 313a0: 6463 str r3, [r4, #68] ; 0x44 + 313a2: f7fd f83b bl 2e41c <__sfp_lock_acquire> + 313a6: 6e63 ldr r3, [r4, #100] ; 0x64 + 313a8: 2200 movs r2, #0 + 313aa: 07db lsls r3, r3, #31 + 313ac: 81a2 strh r2, [r4, #12] + 313ae: d51f bpl.n 313f0 <_fclose_r+0xb4> + 313b0: 6da0 ldr r0, [r4, #88] ; 0x58 + 313b2: f7fd fbd7 bl 2eb64 <__retarget_lock_close_recursive> + 313b6: f7fd f837 bl 2e428 <__sfp_lock_release> + 313ba: 4628 mov r0, r5 + 313bc: bd70 pop {r4, r5, r6, pc} + 313be: 89a3 ldrh r3, [r4, #12] + 313c0: 0599 lsls r1, r3, #22 + 313c2: d4cb bmi.n 3135c <_fclose_r+0x20> + 313c4: 6da0 ldr r0, [r4, #88] ; 0x58 + 313c6: f7fd fbcf bl 2eb68 <__retarget_lock_acquire_recursive> + 313ca: f9b4 300c ldrsh.w r3, [r4, #12] + 313ce: 2b00 cmp r3, #0 + 313d0: d1c4 bne.n 3135c <_fclose_r+0x20> + 313d2: 6e65 ldr r5, [r4, #100] ; 0x64 + 313d4: f015 0501 ands.w r5, r5, #1 + 313d8: d005 beq.n 313e6 <_fclose_r+0xaa> + 313da: 2500 movs r5, #0 + 313dc: 4628 mov r0, r5 + 313de: bd70 pop {r4, r5, r6, pc} + 313e0: f7fc fffe bl 2e3e0 <__sinit> + 313e4: e7b3 b.n 3134e <_fclose_r+0x12> + 313e6: 6da0 ldr r0, [r4, #88] ; 0x58 + 313e8: f7fd fbc0 bl 2eb6c <__retarget_lock_release_recursive> + 313ec: 4628 mov r0, r5 + 313ee: bd70 pop {r4, r5, r6, pc} + 313f0: 6da0 ldr r0, [r4, #88] ; 0x58 + 313f2: f7fd fbbb bl 2eb6c <__retarget_lock_release_recursive> + 313f6: e7db b.n 313b0 <_fclose_r+0x74> + 313f8: 6921 ldr r1, [r4, #16] + 313fa: 4630 mov r0, r6 + 313fc: f7fd fd22 bl 2ee44 <_free_r> + 31400: e7bd b.n 3137e <_fclose_r+0x42> + 31402: bf00 nop + +00031404 <__sflush_r>: + 31404: f9b1 200c ldrsh.w r2, [r1, #12] + 31408: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 3140c: 460c mov r4, r1 + 3140e: 0711 lsls r1, r2, #28 + 31410: 4680 mov r8, r0 + 31412: d447 bmi.n 314a4 <__sflush_r+0xa0> + 31414: 6863 ldr r3, [r4, #4] + 31416: f442 6200 orr.w r2, r2, #2048 ; 0x800 + 3141a: 2b00 cmp r3, #0 + 3141c: 81a2 strh r2, [r4, #12] + 3141e: dd5e ble.n 314de <__sflush_r+0xda> + 31420: 6aa5 ldr r5, [r4, #40] ; 0x28 + 31422: 2d00 cmp r5, #0 + 31424: d058 beq.n 314d8 <__sflush_r+0xd4> + 31426: 2300 movs r3, #0 + 31428: f8d8 6000 ldr.w r6, [r8] + 3142c: f8c8 3000 str.w r3, [r8] + 31430: b293 uxth r3, r2 + 31432: f412 5280 ands.w r2, r2, #4096 ; 0x1000 + 31436: d156 bne.n 314e6 <__sflush_r+0xe2> + 31438: 2301 movs r3, #1 + 3143a: 69e1 ldr r1, [r4, #28] + 3143c: 4640 mov r0, r8 + 3143e: 47a8 blx r5 + 31440: 1c43 adds r3, r0, #1 + 31442: d067 beq.n 31514 <__sflush_r+0x110> + 31444: 89a3 ldrh r3, [r4, #12] + 31446: 6aa5 ldr r5, [r4, #40] ; 0x28 + 31448: 075f lsls r7, r3, #29 + 3144a: d505 bpl.n 31458 <__sflush_r+0x54> + 3144c: 6863 ldr r3, [r4, #4] + 3144e: 1ac0 subs r0, r0, r3 + 31450: 6b23 ldr r3, [r4, #48] ; 0x30 + 31452: b10b cbz r3, 31458 <__sflush_r+0x54> + 31454: 6be3 ldr r3, [r4, #60] ; 0x3c + 31456: 1ac0 subs r0, r0, r3 + 31458: 69e1 ldr r1, [r4, #28] + 3145a: 4602 mov r2, r0 + 3145c: 2300 movs r3, #0 + 3145e: 4640 mov r0, r8 + 31460: 47a8 blx r5 + 31462: 1c41 adds r1, r0, #1 + 31464: d141 bne.n 314ea <__sflush_r+0xe6> + 31466: f8d8 3000 ldr.w r3, [r8] + 3146a: 2b00 cmp r3, #0 + 3146c: d03d beq.n 314ea <__sflush_r+0xe6> + 3146e: 2b1d cmp r3, #29 + 31470: d001 beq.n 31476 <__sflush_r+0x72> + 31472: 2b16 cmp r3, #22 + 31474: d156 bne.n 31524 <__sflush_r+0x120> + 31476: 89a3 ldrh r3, [r4, #12] + 31478: 6922 ldr r2, [r4, #16] + 3147a: 6022 str r2, [r4, #0] + 3147c: f423 6300 bic.w r3, r3, #2048 ; 0x800 + 31480: 2100 movs r1, #0 + 31482: 6061 str r1, [r4, #4] + 31484: 81a3 strh r3, [r4, #12] + 31486: 6b21 ldr r1, [r4, #48] ; 0x30 + 31488: f8c8 6000 str.w r6, [r8] + 3148c: b321 cbz r1, 314d8 <__sflush_r+0xd4> + 3148e: f104 0340 add.w r3, r4, #64 ; 0x40 + 31492: 4299 cmp r1, r3 + 31494: d002 beq.n 3149c <__sflush_r+0x98> + 31496: 4640 mov r0, r8 + 31498: f7fd fcd4 bl 2ee44 <_free_r> + 3149c: 2000 movs r0, #0 + 3149e: 6320 str r0, [r4, #48] ; 0x30 + 314a0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 314a4: 6926 ldr r6, [r4, #16] + 314a6: b1be cbz r6, 314d8 <__sflush_r+0xd4> + 314a8: b293 uxth r3, r2 + 314aa: 6825 ldr r5, [r4, #0] + 314ac: 6026 str r6, [r4, #0] + 314ae: 079a lsls r2, r3, #30 + 314b0: bf0c ite eq + 314b2: 6963 ldreq r3, [r4, #20] + 314b4: 2300 movne r3, #0 + 314b6: 1bad subs r5, r5, r6 + 314b8: 60a3 str r3, [r4, #8] + 314ba: e00b b.n 314d4 <__sflush_r+0xd0> + 314bc: 462b mov r3, r5 + 314be: 4632 mov r2, r6 + 314c0: 69e1 ldr r1, [r4, #28] + 314c2: 6a67 ldr r7, [r4, #36] ; 0x24 + 314c4: 4640 mov r0, r8 + 314c6: 47b8 blx r7 + 314c8: f1b0 0c00 subs.w ip, r0, #0 + 314cc: eba5 050c sub.w r5, r5, ip + 314d0: 4466 add r6, ip + 314d2: dd17 ble.n 31504 <__sflush_r+0x100> + 314d4: 2d00 cmp r5, #0 + 314d6: dcf1 bgt.n 314bc <__sflush_r+0xb8> + 314d8: 2000 movs r0, #0 + 314da: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 314de: 6be3 ldr r3, [r4, #60] ; 0x3c + 314e0: 2b00 cmp r3, #0 + 314e2: dc9d bgt.n 31420 <__sflush_r+0x1c> + 314e4: e7f8 b.n 314d8 <__sflush_r+0xd4> + 314e6: 6d20 ldr r0, [r4, #80] ; 0x50 + 314e8: e7ae b.n 31448 <__sflush_r+0x44> + 314ea: f9b4 300c ldrsh.w r3, [r4, #12] + 314ee: 6922 ldr r2, [r4, #16] + 314f0: 6022 str r2, [r4, #0] + 314f2: f423 6300 bic.w r3, r3, #2048 ; 0x800 + 314f6: 81a3 strh r3, [r4, #12] + 314f8: 2200 movs r2, #0 + 314fa: 04db lsls r3, r3, #19 + 314fc: 6062 str r2, [r4, #4] + 314fe: d5c2 bpl.n 31486 <__sflush_r+0x82> + 31500: 6520 str r0, [r4, #80] ; 0x50 + 31502: e7c0 b.n 31486 <__sflush_r+0x82> + 31504: 89a3 ldrh r3, [r4, #12] + 31506: f043 0340 orr.w r3, r3, #64 ; 0x40 + 3150a: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 3150e: 81a3 strh r3, [r4, #12] + 31510: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 31514: f8d8 3000 ldr.w r3, [r8] + 31518: 2b00 cmp r3, #0 + 3151a: d093 beq.n 31444 <__sflush_r+0x40> + 3151c: 2b1d cmp r3, #29 + 3151e: d006 beq.n 3152e <__sflush_r+0x12a> + 31520: 2b16 cmp r3, #22 + 31522: d004 beq.n 3152e <__sflush_r+0x12a> + 31524: 89a3 ldrh r3, [r4, #12] + 31526: f043 0340 orr.w r3, r3, #64 ; 0x40 + 3152a: 81a3 strh r3, [r4, #12] + 3152c: e7d5 b.n 314da <__sflush_r+0xd6> + 3152e: f8c8 6000 str.w r6, [r8] + 31532: e7d1 b.n 314d8 <__sflush_r+0xd4> + +00031534 <_fflush_r>: + 31534: b538 push {r3, r4, r5, lr} + 31536: 460c mov r4, r1 + 31538: 4605 mov r5, r0 + 3153a: b108 cbz r0, 31540 <_fflush_r+0xc> + 3153c: 6b43 ldr r3, [r0, #52] ; 0x34 + 3153e: b303 cbz r3, 31582 <_fflush_r+0x4e> + 31540: f9b4 000c ldrsh.w r0, [r4, #12] + 31544: b188 cbz r0, 3156a <_fflush_r+0x36> + 31546: 6e63 ldr r3, [r4, #100] ; 0x64 + 31548: 07db lsls r3, r3, #31 + 3154a: d401 bmi.n 31550 <_fflush_r+0x1c> + 3154c: 0581 lsls r1, r0, #22 + 3154e: d50f bpl.n 31570 <_fflush_r+0x3c> + 31550: 4628 mov r0, r5 + 31552: 4621 mov r1, r4 + 31554: f7ff ff56 bl 31404 <__sflush_r> + 31558: 6e63 ldr r3, [r4, #100] ; 0x64 + 3155a: 07da lsls r2, r3, #31 + 3155c: 4605 mov r5, r0 + 3155e: d402 bmi.n 31566 <_fflush_r+0x32> + 31560: 89a3 ldrh r3, [r4, #12] + 31562: 059b lsls r3, r3, #22 + 31564: d508 bpl.n 31578 <_fflush_r+0x44> + 31566: 4628 mov r0, r5 + 31568: bd38 pop {r3, r4, r5, pc} + 3156a: 4605 mov r5, r0 + 3156c: 4628 mov r0, r5 + 3156e: bd38 pop {r3, r4, r5, pc} + 31570: 6da0 ldr r0, [r4, #88] ; 0x58 + 31572: f7fd faf9 bl 2eb68 <__retarget_lock_acquire_recursive> + 31576: e7eb b.n 31550 <_fflush_r+0x1c> + 31578: 6da0 ldr r0, [r4, #88] ; 0x58 + 3157a: f7fd faf7 bl 2eb6c <__retarget_lock_release_recursive> + 3157e: 4628 mov r0, r5 + 31580: bd38 pop {r3, r4, r5, pc} + 31582: f7fc ff2d bl 2e3e0 <__sinit> + 31586: e7db b.n 31540 <_fflush_r+0xc> + +00031588 <__sread>: + 31588: b510 push {r4, lr} 3158a: 460c mov r4, r1 - 3158c: 4d08 ldr r5, [pc, #32] ; (315b0 <_read_r+0x28>) - 3158e: 4684 mov ip, r0 - 31590: 4611 mov r1, r2 - 31592: 4620 mov r0, r4 - 31594: 461a mov r2, r3 - 31596: 2300 movs r3, #0 - 31598: 602b str r3, [r5, #0] - 3159a: 4664 mov r4, ip - 3159c: f7f9 fbd8 bl 2ad50 <_read> - 315a0: 1c43 adds r3, r0, #1 - 315a2: d000 beq.n 315a6 <_read_r+0x1e> - 315a4: bd38 pop {r3, r4, r5, pc} - 315a6: 682b ldr r3, [r5, #0] - 315a8: 2b00 cmp r3, #0 - 315aa: d0fb beq.n 315a4 <_read_r+0x1c> - 315ac: 6023 str r3, [r4, #0] - 315ae: bd38 pop {r3, r4, r5, pc} - 315b0: 2000ba48 .word 0x2000ba48 - -000315b4 <_wcrtomb_r>: - 315b4: b570 push {r4, r5, r6, lr} - 315b6: 4605 mov r5, r0 - 315b8: b084 sub sp, #16 - 315ba: b15b cbz r3, 315d4 <_wcrtomb_r+0x20> - 315bc: 461c mov r4, r3 - 315be: b169 cbz r1, 315dc <_wcrtomb_r+0x28> - 315c0: 4b0e ldr r3, [pc, #56] ; (315fc <_wcrtomb_r+0x48>) - 315c2: 4628 mov r0, r5 - 315c4: f8d3 60e0 ldr.w r6, [r3, #224] ; 0xe0 - 315c8: 4623 mov r3, r4 - 315ca: 47b0 blx r6 - 315cc: 1c43 adds r3, r0, #1 - 315ce: d00f beq.n 315f0 <_wcrtomb_r+0x3c> - 315d0: b004 add sp, #16 - 315d2: bd70 pop {r4, r5, r6, pc} - 315d4: f500 7482 add.w r4, r0, #260 ; 0x104 - 315d8: 2900 cmp r1, #0 - 315da: d1f1 bne.n 315c0 <_wcrtomb_r+0xc> - 315dc: 4a07 ldr r2, [pc, #28] ; (315fc <_wcrtomb_r+0x48>) - 315de: 4623 mov r3, r4 - 315e0: f8d2 60e0 ldr.w r6, [r2, #224] ; 0xe0 - 315e4: 4628 mov r0, r5 - 315e6: 460a mov r2, r1 - 315e8: a901 add r1, sp, #4 - 315ea: 47b0 blx r6 - 315ec: 1c43 adds r3, r0, #1 - 315ee: d1ef bne.n 315d0 <_wcrtomb_r+0x1c> - 315f0: 2200 movs r2, #0 - 315f2: 238a movs r3, #138 ; 0x8a - 315f4: 6022 str r2, [r4, #0] - 315f6: 602b str r3, [r5, #0] - 315f8: b004 add sp, #16 - 315fa: bd70 pop {r4, r5, r6, pc} - 315fc: 20004c28 .word 0x20004c28 - -00031600 <_wcsrtombs_r>: - 31600: b510 push {r4, lr} - 31602: b082 sub sp, #8 - 31604: 9c04 ldr r4, [sp, #16] - 31606: e9cd 3400 strd r3, r4, [sp] - 3160a: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff - 3160e: f002 fb2d bl 33c6c <_wcsnrtombs_r> - 31612: b002 add sp, #8 - 31614: bd10 pop {r4, pc} - 31616: bf00 nop - -00031618 : - 31618: b430 push {r4, r5} - 3161a: b082 sub sp, #8 - 3161c: ed8d 0b00 vstr d0, [sp] - 31620: 9a01 ldr r2, [sp, #4] - 31622: 4c19 ldr r4, [pc, #100] ; (31688 ) - 31624: f022 4300 bic.w r3, r2, #2147483648 ; 0x80000000 - 31628: 2100 movs r1, #0 - 3162a: 42a3 cmp r3, r4 - 3162c: 6001 str r1, [r0, #0] - 3162e: dc21 bgt.n 31674 - 31630: 9c00 ldr r4, [sp, #0] - 31632: 431c orrs r4, r3 - 31634: d01e beq.n 31674 - 31636: 4c15 ldr r4, [pc, #84] ; (3168c ) - 31638: 4014 ands r4, r2 - 3163a: b954 cbnz r4, 31652 - 3163c: ed9f 7b10 vldr d7, [pc, #64] ; 31680 - 31640: ee20 7b07 vmul.f64 d7, d0, d7 - 31644: ed8d 7b00 vstr d7, [sp] - 31648: 9a01 ldr r2, [sp, #4] - 3164a: f06f 0135 mvn.w r1, #53 ; 0x35 - 3164e: f022 4300 bic.w r3, r2, #2147483648 ; 0x80000000 - 31652: f022 42ff bic.w r2, r2, #2139095040 ; 0x7f800000 - 31656: e9dd 4500 ldrd r4, r5, [sp] - 3165a: f422 02e0 bic.w r2, r2, #7340032 ; 0x700000 - 3165e: f042 557f orr.w r5, r2, #1069547520 ; 0x3fc00000 - 31662: 151b asrs r3, r3, #20 - 31664: f445 1500 orr.w r5, r5, #2097152 ; 0x200000 - 31668: f2a3 33fe subw r3, r3, #1022 ; 0x3fe - 3166c: e9cd 4500 strd r4, r5, [sp] - 31670: 440b add r3, r1 - 31672: 6003 str r3, [r0, #0] - 31674: ed9d 0b00 vldr d0, [sp] - 31678: b002 add sp, #8 - 3167a: bc30 pop {r4, r5} - 3167c: 4770 bx lr - 3167e: bf00 nop - 31680: 00000000 .word 0x00000000 - 31684: 43500000 .word 0x43500000 - 31688: 7fefffff .word 0x7fefffff - 3168c: 7ff00000 .word 0x7ff00000 - -00031690 <__assert_func>: - 31690: b500 push {lr} - 31692: 4c0b ldr r4, [pc, #44] ; (316c0 <__assert_func+0x30>) - 31694: 6825 ldr r5, [r4, #0] - 31696: 4614 mov r4, r2 - 31698: 68ee ldr r6, [r5, #12] - 3169a: 461a mov r2, r3 - 3169c: b085 sub sp, #20 - 3169e: 4603 mov r3, r0 - 316a0: 460d mov r5, r1 - 316a2: b14c cbz r4, 316b8 <__assert_func+0x28> - 316a4: 4907 ldr r1, [pc, #28] ; (316c4 <__assert_func+0x34>) - 316a6: 9500 str r5, [sp, #0] - 316a8: e9cd 1401 strd r1, r4, [sp, #4] - 316ac: 4630 mov r0, r6 - 316ae: 4906 ldr r1, [pc, #24] ; (316c8 <__assert_func+0x38>) - 316b0: f000 ff18 bl 324e4 - 316b4: f7f9 fb60 bl 2ad78 - 316b8: 4904 ldr r1, [pc, #16] ; (316cc <__assert_func+0x3c>) - 316ba: 460c mov r4, r1 - 316bc: e7f3 b.n 316a6 <__assert_func+0x16> - 316be: bf00 nop - 316c0: 200051b0 .word 0x200051b0 - 316c4: 20004228 .word 0x20004228 - 316c8: 20004238 .word 0x20004238 - 316cc: 20003c58 .word 0x20003c58 - -000316d0 : - 316d0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 316d4: 6903 ldr r3, [r0, #16] - 316d6: 690c ldr r4, [r1, #16] - 316d8: 42a3 cmp r3, r4 - 316da: b083 sub sp, #12 - 316dc: f2c0 8087 blt.w 317ee - 316e0: 3c01 subs r4, #1 - 316e2: f101 0514 add.w r5, r1, #20 - 316e6: 00a3 lsls r3, r4, #2 - 316e8: f100 0814 add.w r8, r0, #20 - 316ec: 9300 str r3, [sp, #0] - 316ee: f855 3024 ldr.w r3, [r5, r4, lsl #2] - 316f2: f858 2024 ldr.w r2, [r8, r4, lsl #2] - 316f6: 3301 adds r3, #1 - 316f8: 4681 mov r9, r0 - 316fa: 429a cmp r2, r3 - 316fc: eb08 0084 add.w r0, r8, r4, lsl #2 - 31700: eb05 0784 add.w r7, r5, r4, lsl #2 - 31704: 9001 str r0, [sp, #4] - 31706: fbb2 f6f3 udiv r6, r2, r3 - 3170a: d33b bcc.n 31784 - 3170c: f04f 0c00 mov.w ip, #0 - 31710: 46ae mov lr, r5 - 31712: 4640 mov r0, r8 - 31714: 46e2 mov sl, ip - 31716: 4663 mov r3, ip - 31718: f85e bb04 ldr.w fp, [lr], #4 - 3171c: 6802 ldr r2, [r0, #0] - 3171e: fa1f fc8b uxth.w ip, fp - 31722: fb06 330c mla r3, r6, ip, r3 - 31726: ea4f 4c13 mov.w ip, r3, lsr #16 - 3172a: ea4f 4b1b mov.w fp, fp, lsr #16 - 3172e: fb06 cc0b mla ip, r6, fp, ip - 31732: b29b uxth r3, r3 - 31734: ebaa 0303 sub.w r3, sl, r3 - 31738: fa1f fa8c uxth.w sl, ip - 3173c: fa13 f382 uxtah r3, r3, r2 - 31740: ebca 4212 rsb r2, sl, r2, lsr #16 - 31744: eb02 4223 add.w r2, r2, r3, asr #16 - 31748: b29b uxth r3, r3 - 3174a: ea43 4302 orr.w r3, r3, r2, lsl #16 - 3174e: 4577 cmp r7, lr - 31750: f840 3b04 str.w r3, [r0], #4 - 31754: ea4f 4a22 mov.w sl, r2, asr #16 - 31758: ea4f 431c mov.w r3, ip, lsr #16 - 3175c: d2dc bcs.n 31718 - 3175e: 9b00 ldr r3, [sp, #0] - 31760: f858 3003 ldr.w r3, [r8, r3] - 31764: b973 cbnz r3, 31784 - 31766: 9b01 ldr r3, [sp, #4] - 31768: 3b04 subs r3, #4 - 3176a: 4598 cmp r8, r3 - 3176c: d304 bcc.n 31778 - 3176e: e007 b.n 31780 - 31770: 4598 cmp r8, r3 - 31772: f104 34ff add.w r4, r4, #4294967295 ; 0xffffffff - 31776: d203 bcs.n 31780 - 31778: f853 2904 ldr.w r2, [r3], #-4 - 3177c: 2a00 cmp r2, #0 - 3177e: d0f7 beq.n 31770 - 31780: f8c9 4010 str.w r4, [r9, #16] - 31784: 4648 mov r0, r9 - 31786: f7ff fc23 bl 30fd0 <__mcmp> - 3178a: 2800 cmp r0, #0 - 3178c: db2b blt.n 317e6 - 3178e: 3601 adds r6, #1 - 31790: 4641 mov r1, r8 - 31792: 2300 movs r3, #0 - 31794: f855 0b04 ldr.w r0, [r5], #4 - 31798: f8d1 c000 ldr.w ip, [r1] - 3179c: b282 uxth r2, r0 - 3179e: 1a9a subs r2, r3, r2 - 317a0: 0c03 lsrs r3, r0, #16 - 317a2: fa12 f28c uxtah r2, r2, ip - 317a6: ebc3 431c rsb r3, r3, ip, lsr #16 - 317aa: eb03 4322 add.w r3, r3, r2, asr #16 - 317ae: b292 uxth r2, r2 - 317b0: ea42 4203 orr.w r2, r2, r3, lsl #16 - 317b4: 42af cmp r7, r5 - 317b6: f841 2b04 str.w r2, [r1], #4 - 317ba: ea4f 4323 mov.w r3, r3, asr #16 - 317be: d2e9 bcs.n 31794 - 317c0: f858 2024 ldr.w r2, [r8, r4, lsl #2] - 317c4: eb08 0384 add.w r3, r8, r4, lsl #2 - 317c8: b96a cbnz r2, 317e6 - 317ca: 3b04 subs r3, #4 - 317cc: 4598 cmp r8, r3 - 317ce: d304 bcc.n 317da - 317d0: e007 b.n 317e2 - 317d2: 4598 cmp r8, r3 - 317d4: f104 34ff add.w r4, r4, #4294967295 ; 0xffffffff - 317d8: d203 bcs.n 317e2 - 317da: f853 2904 ldr.w r2, [r3], #-4 - 317de: 2a00 cmp r2, #0 - 317e0: d0f7 beq.n 317d2 - 317e2: f8c9 4010 str.w r4, [r9, #16] - 317e6: 4630 mov r0, r6 - 317e8: b003 add sp, #12 - 317ea: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 317ee: 2000 movs r0, #0 - 317f0: b003 add sp, #12 - 317f2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 317f6: bf00 nop - -000317f8 <_dtoa_r>: - 317f8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 317fc: ed2d 8b02 vpush {d8} - 31800: b08f sub sp, #60 ; 0x3c - 31802: ed8d 0b02 vstr d0, [sp, #8] - 31806: 9101 str r1, [sp, #4] - 31808: 6b81 ldr r1, [r0, #56] ; 0x38 - 3180a: 9d1a ldr r5, [sp, #104] ; 0x68 - 3180c: 9305 str r3, [sp, #20] - 3180e: ec57 6b10 vmov r6, r7, d0 - 31812: 4604 mov r4, r0 - 31814: 4693 mov fp, r2 - 31816: b141 cbz r1, 3182a <_dtoa_r+0x32> - 31818: 6bc2 ldr r2, [r0, #60] ; 0x3c - 3181a: 604a str r2, [r1, #4] - 3181c: 2301 movs r3, #1 - 3181e: 4093 lsls r3, r2 - 31820: 608b str r3, [r1, #8] - 31822: f7ff f975 bl 30b10 <_Bfree> - 31826: 2300 movs r3, #0 - 31828: 63a3 str r3, [r4, #56] ; 0x38 - 3182a: f1b7 0800 subs.w r8, r7, #0 - 3182e: bfb4 ite lt - 31830: 2301 movlt r3, #1 - 31832: 2300 movge r3, #0 - 31834: 602b str r3, [r5, #0] - 31836: 4bbe ldr r3, [pc, #760] ; (31b30 <_dtoa_r+0x338>) - 31838: bfbc itt lt - 3183a: f028 4800 biclt.w r8, r8, #2147483648 ; 0x80000000 - 3183e: f8cd 800c strlt.w r8, [sp, #12] - 31842: ea33 0308 bics.w r3, r3, r8 - 31846: f000 809f beq.w 31988 <_dtoa_r+0x190> - 3184a: ed9d 8b02 vldr d8, [sp, #8] - 3184e: eeb5 8b40 vcmp.f64 d8, #0.0 - 31852: eef1 fa10 vmrs APSR_nzcv, fpscr - 31856: d111 bne.n 3187c <_dtoa_r+0x84> - 31858: 9a05 ldr r2, [sp, #20] - 3185a: 2301 movs r3, #1 - 3185c: 6013 str r3, [r2, #0] - 3185e: 9b1b ldr r3, [sp, #108] ; 0x6c - 31860: 2b00 cmp r3, #0 - 31862: f000 823f beq.w 31ce4 <_dtoa_r+0x4ec> - 31866: 4bb3 ldr r3, [pc, #716] ; (31b34 <_dtoa_r+0x33c>) - 31868: 9a1b ldr r2, [sp, #108] ; 0x6c - 3186a: 6013 str r3, [r2, #0] - 3186c: 3b01 subs r3, #1 - 3186e: 9300 str r3, [sp, #0] - 31870: 9800 ldr r0, [sp, #0] - 31872: b00f add sp, #60 ; 0x3c - 31874: ecbd 8b02 vpop {d8} - 31878: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 3187c: aa0c add r2, sp, #48 ; 0x30 - 3187e: a90d add r1, sp, #52 ; 0x34 - 31880: 4620 mov r0, r4 - 31882: eeb0 0b48 vmov.f64 d0, d8 - 31886: f7ff fc6f bl 31168 <__d2b> - 3188a: ea5f 5318 movs.w r3, r8, lsr #20 - 3188e: 4605 mov r5, r0 - 31890: f040 8092 bne.w 319b8 <_dtoa_r+0x1c0> - 31894: e9dd 130c ldrd r1, r3, [sp, #48] ; 0x30 - 31898: 440b add r3, r1 - 3189a: f203 4232 addw r2, r3, #1074 ; 0x432 - 3189e: 2a20 cmp r2, #32 - 318a0: f340 82fa ble.w 31e98 <_dtoa_r+0x6a0> - 318a4: f1c2 0240 rsb r2, r2, #64 ; 0x40 - 318a8: fa08 f802 lsl.w r8, r8, r2 - 318ac: f203 4212 addw r2, r3, #1042 ; 0x412 - 318b0: 40d6 lsrs r6, r2 - 318b2: ea48 0206 orr.w r2, r8, r6 - 318b6: ee07 2a10 vmov s14, r2 - 318ba: eeb8 7b47 vcvt.f64.u32 d7, s14 - 318be: 1e58 subs r0, r3, #1 - 318c0: ee17 6a90 vmov r6, s15 - 318c4: ec53 2b17 vmov r2, r3, d7 - 318c8: f04f 0a01 mov.w sl, #1 - 318cc: f1a6 73f8 sub.w r3, r6, #32505856 ; 0x1f00000 - 318d0: ed9f 3b91 vldr d3, [pc, #580] ; 31b18 <_dtoa_r+0x320> - 318d4: ed9f 7b92 vldr d7, [pc, #584] ; 31b20 <_dtoa_r+0x328> - 318d8: ed9f 5b93 vldr d5, [pc, #588] ; 31b28 <_dtoa_r+0x330> - 318dc: ee06 0a90 vmov s13, r0 - 318e0: ec43 2b12 vmov d2, r2, r3 - 318e4: eeb8 4be6 vcvt.f64.s32 d4, s13 - 318e8: eeb7 6b08 vmov.f64 d6, #120 ; 0x3fc00000 1.5 - 318ec: ee32 6b46 vsub.f64 d6, d2, d6 - 318f0: eea6 7b03 vfma.f64 d7, d6, d3 - 318f4: eea4 7b05 vfma.f64 d7, d4, d5 - 318f8: eefd 6bc7 vcvt.s32.f64 s13, d7 - 318fc: eeb5 7bc0 vcmpe.f64 d7, #0.0 - 31900: eef1 fa10 vmrs APSR_nzcv, fpscr - 31904: ee16 7a90 vmov r7, s13 - 31908: d508 bpl.n 3191c <_dtoa_r+0x124> - 3190a: eeb8 6be6 vcvt.f64.s32 d6, s13 - 3190e: eeb4 6b47 vcmp.f64 d6, d7 - 31912: eef1 fa10 vmrs APSR_nzcv, fpscr - 31916: bf18 it ne - 31918: f107 37ff addne.w r7, r7, #4294967295 ; 0xffffffff - 3191c: 2f16 cmp r7, #22 - 3191e: f200 8145 bhi.w 31bac <_dtoa_r+0x3b4> - 31922: 4b85 ldr r3, [pc, #532] ; (31b38 <_dtoa_r+0x340>) - 31924: eb03 03c7 add.w r3, r3, r7, lsl #3 - 31928: ed93 7b00 vldr d7, [r3] - 3192c: eeb4 8bc7 vcmpe.f64 d8, d7 - 31930: eef1 fa10 vmrs APSR_nzcv, fpscr - 31934: d557 bpl.n 319e6 <_dtoa_r+0x1ee> - 31936: 1a09 subs r1, r1, r0 - 31938: 2300 movs r3, #0 - 3193a: f1b1 0801 subs.w r8, r1, #1 - 3193e: f107 37ff add.w r7, r7, #4294967295 ; 0xffffffff - 31942: 930a str r3, [sp, #40] ; 0x28 - 31944: f100 8139 bmi.w 31bba <_dtoa_r+0x3c2> - 31948: 2300 movs r3, #0 - 3194a: 9306 str r3, [sp, #24] - 3194c: 2f00 cmp r7, #0 - 3194e: da52 bge.n 319f6 <_dtoa_r+0x1fe> - 31950: 9b06 ldr r3, [sp, #24] - 31952: 9704 str r7, [sp, #16] - 31954: 1bdb subs r3, r3, r7 - 31956: 9306 str r3, [sp, #24] - 31958: 427b negs r3, r7 - 3195a: 9308 str r3, [sp, #32] - 3195c: 9b01 ldr r3, [sp, #4] - 3195e: 2b09 cmp r3, #9 - 31960: f04f 0700 mov.w r7, #0 - 31964: d84e bhi.n 31a04 <_dtoa_r+0x20c> - 31966: 2b05 cmp r3, #5 - 31968: f340 829d ble.w 31ea6 <_dtoa_r+0x6ae> - 3196c: 3b04 subs r3, #4 - 3196e: 9301 str r3, [sp, #4] - 31970: 2600 movs r6, #0 - 31972: 9b01 ldr r3, [sp, #4] - 31974: 1e9a subs r2, r3, #2 - 31976: 2a03 cmp r2, #3 - 31978: f200 8125 bhi.w 31bc6 <_dtoa_r+0x3ce> - 3197c: e8df f012 tbh [pc, r2, lsl #1] - 31980: 03a703aa .word 0x03a703aa - 31984: 037e039d .word 0x037e039d - 31988: 9a05 ldr r2, [sp, #20] - 3198a: f3c8 0813 ubfx r8, r8, #0, #20 - 3198e: f242 730f movw r3, #9999 ; 0x270f - 31992: ea58 0806 orrs.w r8, r8, r6 - 31996: 6013 str r3, [r2, #0] - 31998: d11e bne.n 319d8 <_dtoa_r+0x1e0> - 3199a: 9b1b ldr r3, [sp, #108] ; 0x6c - 3199c: 2b00 cmp r3, #0 - 3199e: f000 8591 beq.w 324c4 <_dtoa_r+0xccc> - 319a2: 4b66 ldr r3, [pc, #408] ; (31b3c <_dtoa_r+0x344>) - 319a4: 9300 str r3, [sp, #0] - 319a6: 3308 adds r3, #8 - 319a8: 9a1b ldr r2, [sp, #108] ; 0x6c - 319aa: 9800 ldr r0, [sp, #0] - 319ac: 6013 str r3, [r2, #0] - 319ae: b00f add sp, #60 ; 0x3c - 319b0: ecbd 8b02 vpop {d8} - 319b4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 319b8: ee18 6a90 vmov r6, s17 - 319bc: f3c6 0613 ubfx r6, r6, #0, #20 - 319c0: f2a3 30ff subw r0, r3, #1023 ; 0x3ff - 319c4: ec53 2b18 vmov r2, r3, d8 - 319c8: f046 537f orr.w r3, r6, #1069547520 ; 0x3fc00000 - 319cc: 990c ldr r1, [sp, #48] ; 0x30 - 319ce: f04f 0a00 mov.w sl, #0 - 319d2: f443 1340 orr.w r3, r3, #3145728 ; 0x300000 - 319d6: e77b b.n 318d0 <_dtoa_r+0xd8> - 319d8: 9b1b ldr r3, [sp, #108] ; 0x6c - 319da: 2b00 cmp r3, #0 - 319dc: f040 833b bne.w 32056 <_dtoa_r+0x85e> - 319e0: 4b57 ldr r3, [pc, #348] ; (31b40 <_dtoa_r+0x348>) - 319e2: 9300 str r3, [sp, #0] - 319e4: e744 b.n 31870 <_dtoa_r+0x78> - 319e6: 1a09 subs r1, r1, r0 - 319e8: 2300 movs r3, #0 - 319ea: f1b1 0801 subs.w r8, r1, #1 - 319ee: 930a str r3, [sp, #40] ; 0x28 - 319f0: f100 80e3 bmi.w 31bba <_dtoa_r+0x3c2> - 319f4: 9306 str r3, [sp, #24] - 319f6: 2300 movs r3, #0 - 319f8: 9308 str r3, [sp, #32] - 319fa: 9b01 ldr r3, [sp, #4] - 319fc: 9704 str r7, [sp, #16] - 319fe: 2b09 cmp r3, #9 - 31a00: 44b8 add r8, r7 - 31a02: d9b0 bls.n 31966 <_dtoa_r+0x16e> - 31a04: 2300 movs r3, #0 - 31a06: 2601 movs r6, #1 - 31a08: 9301 str r3, [sp, #4] - 31a0a: 9607 str r6, [sp, #28] - 31a0c: f04f 39ff mov.w r9, #4294967295 ; 0xffffffff - 31a10: 469b mov fp, r3 - 31a12: 2100 movs r1, #0 - 31a14: 63e1 str r1, [r4, #60] ; 0x3c - 31a16: f8cd 902c str.w r9, [sp, #44] ; 0x2c - 31a1a: 4620 mov r0, r4 - 31a1c: f7ff f852 bl 30ac4 <_Balloc> - 31a20: 9000 str r0, [sp, #0] - 31a22: 2800 cmp r0, #0 - 31a24: f000 8540 beq.w 324a8 <_dtoa_r+0xcb0> - 31a28: 9b00 ldr r3, [sp, #0] - 31a2a: 63a3 str r3, [r4, #56] ; 0x38 - 31a2c: f1b9 0f0e cmp.w r9, #14 - 31a30: f200 80dc bhi.w 31bec <_dtoa_r+0x3f4> - 31a34: 2e00 cmp r6, #0 - 31a36: f000 80d9 beq.w 31bec <_dtoa_r+0x3f4> - 31a3a: 9b04 ldr r3, [sp, #16] - 31a3c: 2b00 cmp r3, #0 - 31a3e: f340 83de ble.w 321fe <_dtoa_r+0xa06> - 31a42: 4a3d ldr r2, [pc, #244] ; (31b38 <_dtoa_r+0x340>) - 31a44: f003 010f and.w r1, r3, #15 - 31a48: eb02 02c1 add.w r2, r2, r1, lsl #3 - 31a4c: ed92 7b00 vldr d7, [r2] - 31a50: 111a asrs r2, r3, #4 - 31a52: 05db lsls r3, r3, #23 - 31a54: f140 8382 bpl.w 3215c <_dtoa_r+0x964> - 31a58: 493a ldr r1, [pc, #232] ; (31b44 <_dtoa_r+0x34c>) - 31a5a: ed91 6b08 vldr d6, [r1, #32] - 31a5e: f002 020f and.w r2, r2, #15 - 31a62: 2003 movs r0, #3 - 31a64: ee88 5b06 vdiv.f64 d5, d8, d6 - 31a68: b15a cbz r2, 31a82 <_dtoa_r+0x28a> - 31a6a: 4936 ldr r1, [pc, #216] ; (31b44 <_dtoa_r+0x34c>) - 31a6c: 07d6 lsls r6, r2, #31 - 31a6e: d504 bpl.n 31a7a <_dtoa_r+0x282> - 31a70: ed91 6b00 vldr d6, [r1] - 31a74: 3001 adds r0, #1 - 31a76: ee27 7b06 vmul.f64 d7, d7, d6 - 31a7a: 1052 asrs r2, r2, #1 - 31a7c: f101 0108 add.w r1, r1, #8 - 31a80: d1f4 bne.n 31a6c <_dtoa_r+0x274> - 31a82: ee85 6b07 vdiv.f64 d6, d5, d7 - 31a86: 9b0a ldr r3, [sp, #40] ; 0x28 - 31a88: b13b cbz r3, 31a9a <_dtoa_r+0x2a2> - 31a8a: eeb7 7b00 vmov.f64 d7, #112 ; 0x3f800000 1.0 - 31a8e: eeb4 6bc7 vcmpe.f64 d6, d7 - 31a92: eef1 fa10 vmrs APSR_nzcv, fpscr - 31a96: f100 84ae bmi.w 323f6 <_dtoa_r+0xbfe> - 31a9a: ee07 0a90 vmov s15, r0 - 31a9e: eeb8 5be7 vcvt.f64.s32 d5, s15 - 31aa2: eeb1 7b0c vmov.f64 d7, #28 ; 0x40e00000 7.0 - 31aa6: eea5 7b06 vfma.f64 d7, d5, d6 - 31aaa: ee17 2a90 vmov r2, s15 - 31aae: ec51 0b17 vmov r0, r1, d7 - 31ab2: f1a2 7150 sub.w r1, r2, #54525952 ; 0x3400000 - 31ab6: f1b9 0f00 cmp.w r9, #0 - 31aba: f000 8388 beq.w 321ce <_dtoa_r+0x9d6> - 31abe: 9e04 ldr r6, [sp, #16] - 31ac0: 464a mov r2, r9 - 31ac2: 9b07 ldr r3, [sp, #28] - 31ac4: 2b00 cmp r3, #0 - 31ac6: f000 8447 beq.w 32358 <_dtoa_r+0xb60> - 31aca: eeb6 3b00 vmov.f64 d3, #96 ; 0x3f000000 0.5 - 31ace: 4b1a ldr r3, [pc, #104] ; (31b38 <_dtoa_r+0x340>) - 31ad0: eefd 4bc6 vcvt.s32.f64 s9, d6 - 31ad4: eb03 0cc2 add.w ip, r3, r2, lsl #3 - 31ad8: eeb8 7be4 vcvt.f64.s32 d7, s9 - 31adc: ee36 7b47 vsub.f64 d7, d6, d7 - 31ae0: ed1c 6b02 vldr d6, [ip, #-8] - 31ae4: ee83 5b06 vdiv.f64 d5, d3, d6 - 31ae8: ec41 0b16 vmov d6, r0, r1 - 31aec: ee14 0a90 vmov r0, s9 - 31af0: ee35 5b46 vsub.f64 d5, d5, d6 - 31af4: 9900 ldr r1, [sp, #0] - 31af6: eeb4 5bc7 vcmpe.f64 d5, d7 - 31afa: 3030 adds r0, #48 ; 0x30 - 31afc: eef1 fa10 vmrs APSR_nzcv, fpscr - 31b00: f801 0b01 strb.w r0, [r1], #1 - 31b04: f300 84ac bgt.w 32460 <_dtoa_r+0xc68> - 31b08: eeb7 2b00 vmov.f64 d2, #112 ; 0x3f800000 1.0 - 31b0c: eeb2 4b04 vmov.f64 d4, #36 ; 0x41200000 10.0 - 31b10: f04f 0c00 mov.w ip, #0 - 31b14: e031 b.n 31b7a <_dtoa_r+0x382> - 31b16: bf00 nop - 31b18: 636f4361 .word 0x636f4361 - 31b1c: 3fd287a7 .word 0x3fd287a7 - 31b20: 8b60c8b3 .word 0x8b60c8b3 - 31b24: 3fc68a28 .word 0x3fc68a28 - 31b28: 509f79fb .word 0x509f79fb - 31b2c: 3fd34413 .word 0x3fd34413 - 31b30: 7ff00000 .word 0x7ff00000 - 31b34: 20004491 .word 0x20004491 - 31b38: 200002f8 .word 0x200002f8 - 31b3c: 200043e4 .word 0x200043e4 - 31b40: 200043f0 .word 0x200043f0 - 31b44: 200002d0 .word 0x200002d0 - 31b48: f10c 0c01 add.w ip, ip, #1 - 31b4c: 4594 cmp ip, r2 - 31b4e: da4d bge.n 31bec <_dtoa_r+0x3f4> - 31b50: ee27 7b04 vmul.f64 d7, d7, d4 - 31b54: ee25 5b04 vmul.f64 d5, d5, d4 - 31b58: eefd 6bc7 vcvt.s32.f64 s13, d7 - 31b5c: ee16 3a90 vmov r3, s13 - 31b60: eeb8 3be6 vcvt.f64.s32 d3, s13 - 31b64: 3330 adds r3, #48 ; 0x30 - 31b66: ee37 7b43 vsub.f64 d7, d7, d3 - 31b6a: eeb4 7bc5 vcmpe.f64 d7, d5 - 31b6e: eef1 fa10 vmrs APSR_nzcv, fpscr - 31b72: f801 3b01 strb.w r3, [r1], #1 - 31b76: f100 8473 bmi.w 32460 <_dtoa_r+0xc68> - 31b7a: ee32 6b47 vsub.f64 d6, d2, d7 - 31b7e: eeb4 6bc5 vcmpe.f64 d6, d5 - 31b82: eef1 fa10 vmrs APSR_nzcv, fpscr - 31b86: d5df bpl.n 31b48 <_dtoa_r+0x350> - 31b88: 9a00 ldr r2, [sp, #0] - 31b8a: 9604 str r6, [sp, #16] - 31b8c: e002 b.n 31b94 <_dtoa_r+0x39c> - 31b8e: 428a cmp r2, r1 - 31b90: f000 8450 beq.w 32434 <_dtoa_r+0xc3c> - 31b94: 4689 mov r9, r1 - 31b96: f811 3d01 ldrb.w r3, [r1, #-1]! - 31b9a: 2b39 cmp r3, #57 ; 0x39 - 31b9c: d0f7 beq.n 31b8e <_dtoa_r+0x396> - 31b9e: 3301 adds r3, #1 - 31ba0: b2db uxtb r3, r3 - 31ba2: 700b strb r3, [r1, #0] - 31ba4: 9b04 ldr r3, [sp, #16] - 31ba6: 3301 adds r3, #1 - 31ba8: 9304 str r3, [sp, #16] - 31baa: e155 b.n 31e58 <_dtoa_r+0x660> - 31bac: 1a09 subs r1, r1, r0 - 31bae: 2301 movs r3, #1 - 31bb0: f1b1 0801 subs.w r8, r1, #1 - 31bb4: 930a str r3, [sp, #40] ; 0x28 - 31bb6: f57f aec7 bpl.w 31948 <_dtoa_r+0x150> - 31bba: f1c1 0301 rsb r3, r1, #1 - 31bbe: 9306 str r3, [sp, #24] - 31bc0: f04f 0800 mov.w r8, #0 - 31bc4: e6c2 b.n 3194c <_dtoa_r+0x154> - 31bc6: 2600 movs r6, #0 - 31bc8: 63e6 str r6, [r4, #60] ; 0x3c - 31bca: 4631 mov r1, r6 - 31bcc: 4620 mov r0, r4 - 31bce: f7fe ff79 bl 30ac4 <_Balloc> - 31bd2: 9000 str r0, [sp, #0] - 31bd4: 2800 cmp r0, #0 - 31bd6: f000 8467 beq.w 324a8 <_dtoa_r+0xcb0> - 31bda: 9b00 ldr r3, [sp, #0] - 31bdc: 63a3 str r3, [r4, #56] ; 0x38 - 31bde: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff - 31be2: 930b str r3, [sp, #44] ; 0x2c - 31be4: 4699 mov r9, r3 - 31be6: 2301 movs r3, #1 - 31be8: 46b3 mov fp, r6 - 31bea: 9307 str r3, [sp, #28] - 31bec: 9a0d ldr r2, [sp, #52] ; 0x34 - 31bee: 2a00 cmp r2, #0 - 31bf0: db55 blt.n 31c9e <_dtoa_r+0x4a6> - 31bf2: 9904 ldr r1, [sp, #16] - 31bf4: 290e cmp r1, #14 - 31bf6: dc52 bgt.n 31c9e <_dtoa_r+0x4a6> - 31bf8: 4bb7 ldr r3, [pc, #732] ; (31ed8 <_dtoa_r+0x6e0>) - 31bfa: f1bb 0f00 cmp.w fp, #0 - 31bfe: eb03 03c1 add.w r3, r3, r1, lsl #3 - 31c02: ed93 6b00 vldr d6, [r3] - 31c06: da15 bge.n 31c34 <_dtoa_r+0x43c> - 31c08: f1b9 0f00 cmp.w r9, #0 - 31c0c: dc12 bgt.n 31c34 <_dtoa_r+0x43c> - 31c0e: f040 82f2 bne.w 321f6 <_dtoa_r+0x9fe> - 31c12: eeb1 7b04 vmov.f64 d7, #20 ; 0x40a00000 5.0 - 31c16: ee26 7b07 vmul.f64 d7, d6, d7 - 31c1a: eeb4 8bc7 vcmpe.f64 d8, d7 - 31c1e: eef1 fa10 vmrs APSR_nzcv, fpscr - 31c22: 46ca mov sl, r9 - 31c24: 464e mov r6, r9 - 31c26: f200 826d bhi.w 32104 <_dtoa_r+0x90c> - 31c2a: f8dd 8000 ldr.w r8, [sp] - 31c2e: ea6f 0b0b mvn.w fp, fp - 31c32: e270 b.n 32116 <_dtoa_r+0x91e> - 31c34: ee88 7b06 vdiv.f64 d7, d8, d6 - 31c38: eebd 7bc7 vcvt.s32.f64 s14, d7 - 31c3c: 9900 ldr r1, [sp, #0] - 31c3e: ee17 3a10 vmov r3, s14 - 31c42: f1b9 0f01 cmp.w r9, #1 - 31c46: f103 0330 add.w r3, r3, #48 ; 0x30 - 31c4a: eeb8 5bc7 vcvt.f64.s32 d5, s14 - 31c4e: f801 3b01 strb.w r3, [r1], #1 - 31c52: eea5 8b46 vfms.f64 d8, d5, d6 - 31c56: f000 8334 beq.w 322c2 <_dtoa_r+0xaca> - 31c5a: eeb2 4b04 vmov.f64 d4, #36 ; 0x41200000 10.0 - 31c5e: 2301 movs r3, #1 - 31c60: e011 b.n 31c86 <_dtoa_r+0x48e> - 31c62: ee88 7b06 vdiv.f64 d7, d8, d6 - 31c66: eebd 7bc7 vcvt.s32.f64 s14, d7 - 31c6a: 3301 adds r3, #1 - 31c6c: ee17 2a10 vmov r2, s14 - 31c70: 454b cmp r3, r9 - 31c72: f102 0230 add.w r2, r2, #48 ; 0x30 - 31c76: eeb8 5bc7 vcvt.f64.s32 d5, s14 - 31c7a: f801 2b01 strb.w r2, [r1], #1 - 31c7e: eea5 8b46 vfms.f64 d8, d5, d6 - 31c82: f000 831e beq.w 322c2 <_dtoa_r+0xaca> - 31c86: ee28 8b04 vmul.f64 d8, d8, d4 - 31c8a: eeb5 8b40 vcmp.f64 d8, #0.0 - 31c8e: eef1 fa10 vmrs APSR_nzcv, fpscr - 31c92: d1e6 bne.n 31c62 <_dtoa_r+0x46a> - 31c94: 9b04 ldr r3, [sp, #16] - 31c96: 3301 adds r3, #1 - 31c98: 9304 str r3, [sp, #16] - 31c9a: 4689 mov r9, r1 - 31c9c: e0dc b.n 31e58 <_dtoa_r+0x660> - 31c9e: 9b07 ldr r3, [sp, #28] - 31ca0: b343 cbz r3, 31cf4 <_dtoa_r+0x4fc> - 31ca2: 9b01 ldr r3, [sp, #4] - 31ca4: 2b01 cmp r3, #1 - 31ca6: f340 8276 ble.w 32196 <_dtoa_r+0x99e> - 31caa: 9b08 ldr r3, [sp, #32] - 31cac: f109 3aff add.w sl, r9, #4294967295 ; 0xffffffff - 31cb0: 4553 cmp r3, sl - 31cb2: f280 823f bge.w 32134 <_dtoa_r+0x93c> - 31cb6: 9b08 ldr r3, [sp, #32] - 31cb8: f8cd a020 str.w sl, [sp, #32] - 31cbc: ebaa 0203 sub.w r2, sl, r3 - 31cc0: 4417 add r7, r2 - 31cc2: f04f 0a00 mov.w sl, #0 - 31cc6: f1b9 0f00 cmp.w r9, #0 - 31cca: f2c0 8325 blt.w 32318 <_dtoa_r+0xb20> - 31cce: 9b06 ldr r3, [sp, #24] - 31cd0: 9309 str r3, [sp, #36] ; 0x24 - 31cd2: 444b add r3, r9 - 31cd4: 44c8 add r8, r9 - 31cd6: 9306 str r3, [sp, #24] - 31cd8: 2101 movs r1, #1 - 31cda: 4620 mov r0, r4 - 31cdc: f7fe ffc4 bl 30c68 <__i2b> - 31ce0: 4606 mov r6, r0 - 31ce2: e00c b.n 31cfe <_dtoa_r+0x506> - 31ce4: 4b7d ldr r3, [pc, #500] ; (31edc <_dtoa_r+0x6e4>) - 31ce6: 9300 str r3, [sp, #0] - 31ce8: 9800 ldr r0, [sp, #0] - 31cea: b00f add sp, #60 ; 0x3c - 31cec: ecbd 8b02 vpop {d8} - 31cf0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 31cf4: 9b06 ldr r3, [sp, #24] - 31cf6: f8dd a020 ldr.w sl, [sp, #32] - 31cfa: 9e07 ldr r6, [sp, #28] - 31cfc: 9309 str r3, [sp, #36] ; 0x24 - 31cfe: 9b09 ldr r3, [sp, #36] ; 0x24 - 31d00: b16b cbz r3, 31d1e <_dtoa_r+0x526> - 31d02: f1b8 0f00 cmp.w r8, #0 - 31d06: dd0a ble.n 31d1e <_dtoa_r+0x526> - 31d08: 4543 cmp r3, r8 - 31d0a: 9906 ldr r1, [sp, #24] - 31d0c: 461a mov r2, r3 - 31d0e: bfa8 it ge - 31d10: 4642 movge r2, r8 - 31d12: 1a89 subs r1, r1, r2 - 31d14: 1a9b subs r3, r3, r2 - 31d16: 9106 str r1, [sp, #24] - 31d18: 9309 str r3, [sp, #36] ; 0x24 - 31d1a: eba8 0802 sub.w r8, r8, r2 - 31d1e: 9b08 ldr r3, [sp, #32] - 31d20: b163 cbz r3, 31d3c <_dtoa_r+0x544> - 31d22: 9b07 ldr r3, [sp, #28] - 31d24: 2b00 cmp r3, #0 - 31d26: f000 82a7 beq.w 32278 <_dtoa_r+0xa80> - 31d2a: f1ba 0f00 cmp.w sl, #0 - 31d2e: f300 8204 bgt.w 3213a <_dtoa_r+0x942> - 31d32: 9b08 ldr r3, [sp, #32] - 31d34: ebb3 020a subs.w r2, r3, sl - 31d38: f040 82ff bne.w 3233a <_dtoa_r+0xb42> - 31d3c: 2101 movs r1, #1 - 31d3e: 4620 mov r0, r4 - 31d40: f7fe ff92 bl 30c68 <__i2b> - 31d44: 2f00 cmp r7, #0 - 31d46: 4682 mov sl, r0 - 31d48: f300 80af bgt.w 31eaa <_dtoa_r+0x6b2> - 31d4c: 9b01 ldr r3, [sp, #4] - 31d4e: 2b01 cmp r3, #1 - 31d50: f340 8187 ble.w 32062 <_dtoa_r+0x86a> - 31d54: 2300 movs r3, #0 - 31d56: 9308 str r3, [sp, #32] - 31d58: 2001 movs r0, #1 - 31d5a: 2f00 cmp r7, #0 - 31d5c: f040 80b1 bne.w 31ec2 <_dtoa_r+0x6ca> - 31d60: 4440 add r0, r8 - 31d62: f010 001f ands.w r0, r0, #31 - 31d66: f000 817a beq.w 3205e <_dtoa_r+0x866> - 31d6a: f1c0 0220 rsb r2, r0, #32 - 31d6e: 2a04 cmp r2, #4 - 31d70: f300 8088 bgt.w 31e84 <_dtoa_r+0x68c> - 31d74: f040 81f6 bne.w 32164 <_dtoa_r+0x96c> - 31d78: 9b06 ldr r3, [sp, #24] - 31d7a: 2b00 cmp r3, #0 - 31d7c: dd05 ble.n 31d8a <_dtoa_r+0x592> - 31d7e: 4629 mov r1, r5 - 31d80: 461a mov r2, r3 - 31d82: 4620 mov r0, r4 - 31d84: f7ff f8ac bl 30ee0 <__lshift> - 31d88: 4605 mov r5, r0 - 31d8a: f1b8 0f00 cmp.w r8, #0 - 31d8e: dd05 ble.n 31d9c <_dtoa_r+0x5a4> - 31d90: 4651 mov r1, sl - 31d92: 4642 mov r2, r8 - 31d94: 4620 mov r0, r4 - 31d96: f7ff f8a3 bl 30ee0 <__lshift> - 31d9a: 4682 mov sl, r0 - 31d9c: 9b0a ldr r3, [sp, #40] ; 0x28 - 31d9e: 2b00 cmp r3, #0 - 31da0: f040 813f bne.w 32022 <_dtoa_r+0x82a> - 31da4: f1b9 0f00 cmp.w r9, #0 - 31da8: f340 8125 ble.w 31ff6 <_dtoa_r+0x7fe> - 31dac: 9b07 ldr r3, [sp, #28] - 31dae: 2b00 cmp r3, #0 - 31db0: f040 80a3 bne.w 31efa <_dtoa_r+0x702> - 31db4: 9b04 ldr r3, [sp, #16] - 31db6: 3301 adds r3, #1 - 31db8: 9304 str r3, [sp, #16] - 31dba: f8dd 8000 ldr.w r8, [sp] - 31dbe: 2701 movs r7, #1 - 31dc0: e007 b.n 31dd2 <_dtoa_r+0x5da> - 31dc2: 4629 mov r1, r5 - 31dc4: 2300 movs r3, #0 - 31dc6: 220a movs r2, #10 - 31dc8: 4620 mov r0, r4 - 31dca: f7fe feab bl 30b24 <__multadd> - 31dce: 3701 adds r7, #1 - 31dd0: 4605 mov r5, r0 - 31dd2: 4651 mov r1, sl - 31dd4: 4628 mov r0, r5 - 31dd6: f7ff fc7b bl 316d0 - 31dda: 45b9 cmp r9, r7 - 31ddc: f100 0030 add.w r0, r0, #48 ; 0x30 - 31de0: f808 0b01 strb.w r0, [r8], #1 - 31de4: dced bgt.n 31dc2 <_dtoa_r+0x5ca> - 31de6: f1b9 0f00 cmp.w r9, #0 - 31dea: 9a00 ldr r2, [sp, #0] - 31dec: bfcc ite gt - 31dee: 46cb movgt fp, r9 - 31df0: f04f 0b01 movle.w fp, #1 - 31df4: 4603 mov r3, r0 - 31df6: 4493 add fp, r2 - 31df8: 2700 movs r7, #0 - 31dfa: 4629 mov r1, r5 - 31dfc: 2201 movs r2, #1 - 31dfe: 4620 mov r0, r4 - 31e00: 9301 str r3, [sp, #4] - 31e02: f7ff f86d bl 30ee0 <__lshift> - 31e06: 4651 mov r1, sl - 31e08: 4605 mov r5, r0 - 31e0a: f7ff f8e1 bl 30fd0 <__mcmp> - 31e0e: 2800 cmp r0, #0 - 31e10: f340 81af ble.w 32172 <_dtoa_r+0x97a> - 31e14: f81b 3c01 ldrb.w r3, [fp, #-1] - 31e18: 9a00 ldr r2, [sp, #0] - 31e1a: f10b 3bff add.w fp, fp, #4294967295 ; 0xffffffff - 31e1e: e004 b.n 31e2a <_dtoa_r+0x632> - 31e20: 455a cmp r2, fp - 31e22: f000 81b1 beq.w 32188 <_dtoa_r+0x990> - 31e26: f81b 3d01 ldrb.w r3, [fp, #-1]! - 31e2a: 2b39 cmp r3, #57 ; 0x39 - 31e2c: f10b 0901 add.w r9, fp, #1 - 31e30: d0f6 beq.n 31e20 <_dtoa_r+0x628> - 31e32: 3301 adds r3, #1 - 31e34: f88b 3000 strb.w r3, [fp] - 31e38: 4651 mov r1, sl - 31e3a: 4620 mov r0, r4 - 31e3c: f7fe fe68 bl 30b10 <_Bfree> - 31e40: b156 cbz r6, 31e58 <_dtoa_r+0x660> - 31e42: b12f cbz r7, 31e50 <_dtoa_r+0x658> - 31e44: 42b7 cmp r7, r6 - 31e46: d003 beq.n 31e50 <_dtoa_r+0x658> - 31e48: 4639 mov r1, r7 - 31e4a: 4620 mov r0, r4 - 31e4c: f7fe fe60 bl 30b10 <_Bfree> - 31e50: 4631 mov r1, r6 - 31e52: 4620 mov r0, r4 - 31e54: f7fe fe5c bl 30b10 <_Bfree> - 31e58: 4629 mov r1, r5 - 31e5a: 4620 mov r0, r4 - 31e5c: f7fe fe58 bl 30b10 <_Bfree> - 31e60: 2300 movs r3, #0 - 31e62: f889 3000 strb.w r3, [r9] - 31e66: e9dd 2304 ldrd r2, r3, [sp, #16] - 31e6a: 601a str r2, [r3, #0] - 31e6c: 9b1b ldr r3, [sp, #108] ; 0x6c - 31e6e: 2b00 cmp r3, #0 - 31e70: f43f acfe beq.w 31870 <_dtoa_r+0x78> - 31e74: 9800 ldr r0, [sp, #0] - 31e76: f8c3 9000 str.w r9, [r3] - 31e7a: b00f add sp, #60 ; 0x3c - 31e7c: ecbd 8b02 vpop {d8} - 31e80: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 31e84: f1c0 001c rsb r0, r0, #28 - 31e88: 9b06 ldr r3, [sp, #24] - 31e8a: 4403 add r3, r0 - 31e8c: 9306 str r3, [sp, #24] - 31e8e: 9b09 ldr r3, [sp, #36] ; 0x24 - 31e90: 4403 add r3, r0 - 31e92: 9309 str r3, [sp, #36] ; 0x24 - 31e94: 4480 add r8, r0 - 31e96: e76f b.n 31d78 <_dtoa_r+0x580> - 31e98: f1c2 0220 rsb r2, r2, #32 - 31e9c: fa06 f202 lsl.w r2, r6, r2 - 31ea0: ee07 2a10 vmov s14, r2 - 31ea4: e509 b.n 318ba <_dtoa_r+0xc2> - 31ea6: 2601 movs r6, #1 - 31ea8: e563 b.n 31972 <_dtoa_r+0x17a> - 31eaa: 4601 mov r1, r0 - 31eac: 463a mov r2, r7 - 31eae: 4620 mov r0, r4 - 31eb0: f7fe ffb6 bl 30e20 <__pow5mult> - 31eb4: 9b01 ldr r3, [sp, #4] - 31eb6: 2b01 cmp r3, #1 - 31eb8: 4682 mov sl, r0 - 31eba: f340 81c5 ble.w 32248 <_dtoa_r+0xa50> - 31ebe: 2300 movs r3, #0 - 31ec0: 9308 str r3, [sp, #32] - 31ec2: f8da 2010 ldr.w r2, [sl, #16] - 31ec6: eb0a 0282 add.w r2, sl, r2, lsl #2 - 31eca: 6910 ldr r0, [r2, #16] - 31ecc: f7fe fe7c bl 30bc8 <__hi0bits> - 31ed0: f1c0 0020 rsb r0, r0, #32 - 31ed4: e744 b.n 31d60 <_dtoa_r+0x568> - 31ed6: bf00 nop - 31ed8: 200002f8 .word 0x200002f8 - 31edc: 20004490 .word 0x20004490 - 31ee0: 4631 mov r1, r6 - 31ee2: 2300 movs r3, #0 - 31ee4: 220a movs r2, #10 - 31ee6: 4620 mov r0, r4 - 31ee8: f7fe fe1c bl 30b24 <__multadd> - 31eec: 9b0b ldr r3, [sp, #44] ; 0x2c - 31eee: 2b00 cmp r3, #0 - 31ef0: 4606 mov r6, r0 - 31ef2: f340 82ce ble.w 32492 <_dtoa_r+0xc9a> - 31ef6: 9704 str r7, [sp, #16] - 31ef8: 4699 mov r9, r3 - 31efa: 9b09 ldr r3, [sp, #36] ; 0x24 - 31efc: 2b00 cmp r3, #0 - 31efe: dd05 ble.n 31f0c <_dtoa_r+0x714> - 31f00: 4631 mov r1, r6 - 31f02: 461a mov r2, r3 - 31f04: 4620 mov r0, r4 - 31f06: f7fe ffeb bl 30ee0 <__lshift> - 31f0a: 4606 mov r6, r0 - 31f0c: 9b08 ldr r3, [sp, #32] - 31f0e: 2b00 cmp r3, #0 - 31f10: f040 81eb bne.w 322ea <_dtoa_r+0xaf2> - 31f14: 46b0 mov r8, r6 - 31f16: 9b02 ldr r3, [sp, #8] - 31f18: 9f00 ldr r7, [sp, #0] - 31f1a: f003 0201 and.w r2, r3, #1 - 31f1e: 1e7b subs r3, r7, #1 - 31f20: 444b add r3, r9 - 31f22: 9308 str r3, [sp, #32] - 31f24: 9b01 ldr r3, [sp, #4] - 31f26: 920a str r2, [sp, #40] ; 0x28 - 31f28: 4313 orrs r3, r2 - 31f2a: 9309 str r3, [sp, #36] ; 0x24 - 31f2c: 4651 mov r1, sl - 31f2e: 4628 mov r0, r5 - 31f30: f7ff fbce bl 316d0 - 31f34: 4631 mov r1, r6 - 31f36: 4683 mov fp, r0 - 31f38: 4628 mov r0, r5 - 31f3a: f7ff f849 bl 30fd0 <__mcmp> - 31f3e: 4642 mov r2, r8 - 31f40: 4651 mov r1, sl - 31f42: 4681 mov r9, r0 - 31f44: 4620 mov r0, r4 - 31f46: f7ff f865 bl 31014 <__mdiff> - 31f4a: 68c2 ldr r2, [r0, #12] - 31f4c: 4601 mov r1, r0 - 31f4e: f10b 0330 add.w r3, fp, #48 ; 0x30 - 31f52: 2a00 cmp r2, #0 - 31f54: d142 bne.n 31fdc <_dtoa_r+0x7e4> - 31f56: e9cd 0306 strd r0, r3, [sp, #24] - 31f5a: 4628 mov r0, r5 - 31f5c: f7ff f838 bl 30fd0 <__mcmp> - 31f60: 9906 ldr r1, [sp, #24] - 31f62: 9002 str r0, [sp, #8] - 31f64: 4620 mov r0, r4 - 31f66: f7fe fdd3 bl 30b10 <_Bfree> - 31f6a: 9a02 ldr r2, [sp, #8] - 31f6c: 9b07 ldr r3, [sp, #28] - 31f6e: b91a cbnz r2, 31f78 <_dtoa_r+0x780> - 31f70: 9909 ldr r1, [sp, #36] ; 0x24 - 31f72: 2900 cmp r1, #0 - 31f74: f000 827e beq.w 32474 <_dtoa_r+0xc7c> - 31f78: f1b9 0f00 cmp.w r9, #0 - 31f7c: f2c0 8183 blt.w 32286 <_dtoa_r+0xa8e> - 31f80: 9901 ldr r1, [sp, #4] - 31f82: ea49 0901 orr.w r9, r9, r1 - 31f86: 990a ldr r1, [sp, #40] ; 0x28 - 31f88: ea51 0909 orrs.w r9, r1, r9 - 31f8c: f000 817b beq.w 32286 <_dtoa_r+0xa8e> - 31f90: 2a00 cmp r2, #0 - 31f92: f300 81c6 bgt.w 32322 <_dtoa_r+0xb2a> - 31f96: 9a08 ldr r2, [sp, #32] - 31f98: 703b strb r3, [r7, #0] - 31f9a: f107 0901 add.w r9, r7, #1 - 31f9e: 4297 cmp r7, r2 - 31fa0: 46cb mov fp, r9 - 31fa2: f000 81c4 beq.w 3232e <_dtoa_r+0xb36> - 31fa6: 4629 mov r1, r5 - 31fa8: 2300 movs r3, #0 - 31faa: 220a movs r2, #10 - 31fac: 4620 mov r0, r4 - 31fae: f7fe fdb9 bl 30b24 <__multadd> - 31fb2: 4546 cmp r6, r8 - 31fb4: 4605 mov r5, r0 - 31fb6: 4631 mov r1, r6 - 31fb8: f04f 0300 mov.w r3, #0 - 31fbc: f04f 020a mov.w r2, #10 - 31fc0: 4620 mov r0, r4 - 31fc2: d012 beq.n 31fea <_dtoa_r+0x7f2> - 31fc4: f7fe fdae bl 30b24 <__multadd> - 31fc8: 4641 mov r1, r8 - 31fca: 4606 mov r6, r0 - 31fcc: 2300 movs r3, #0 - 31fce: 220a movs r2, #10 - 31fd0: 4620 mov r0, r4 - 31fd2: f7fe fda7 bl 30b24 <__multadd> - 31fd6: 464f mov r7, r9 - 31fd8: 4680 mov r8, r0 - 31fda: e7a7 b.n 31f2c <_dtoa_r+0x734> - 31fdc: 4620 mov r0, r4 - 31fde: 9302 str r3, [sp, #8] - 31fe0: f7fe fd96 bl 30b10 <_Bfree> - 31fe4: 9b02 ldr r3, [sp, #8] - 31fe6: 2201 movs r2, #1 - 31fe8: e7c6 b.n 31f78 <_dtoa_r+0x780> - 31fea: f7fe fd9b bl 30b24 <__multadd> - 31fee: 464f mov r7, r9 + 3158c: f9b1 100e ldrsh.w r1, [r1, #14] + 31590: f000 f87a bl 31688 <_read_r> + 31594: 2800 cmp r0, #0 + 31596: db03 blt.n 315a0 <__sread+0x18> + 31598: 6d23 ldr r3, [r4, #80] ; 0x50 + 3159a: 4403 add r3, r0 + 3159c: 6523 str r3, [r4, #80] ; 0x50 + 3159e: bd10 pop {r4, pc} + 315a0: 89a3 ldrh r3, [r4, #12] + 315a2: f423 5380 bic.w r3, r3, #4096 ; 0x1000 + 315a6: 81a3 strh r3, [r4, #12] + 315a8: bd10 pop {r4, pc} + 315aa: bf00 nop + +000315ac <__swrite>: + 315ac: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 315b0: 460c mov r4, r1 + 315b2: f9b1 100c ldrsh.w r1, [r1, #12] + 315b6: 461f mov r7, r3 + 315b8: 05cb lsls r3, r1, #23 + 315ba: 4605 mov r5, r0 + 315bc: 4616 mov r6, r2 + 315be: d40b bmi.n 315d8 <__swrite+0x2c> + 315c0: f421 5180 bic.w r1, r1, #4096 ; 0x1000 + 315c4: 81a1 strh r1, [r4, #12] + 315c6: 463b mov r3, r7 + 315c8: f9b4 100e ldrsh.w r1, [r4, #14] + 315cc: 4632 mov r2, r6 + 315ce: 4628 mov r0, r5 + 315d0: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 315d4: f7fd b8b4 b.w 2e740 <_write_r> + 315d8: f9b4 100e ldrsh.w r1, [r4, #14] + 315dc: 2302 movs r3, #2 + 315de: 2200 movs r2, #0 + 315e0: f000 f83c bl 3165c <_lseek_r> + 315e4: f9b4 100c ldrsh.w r1, [r4, #12] + 315e8: e7ea b.n 315c0 <__swrite+0x14> + 315ea: bf00 nop + +000315ec <__sseek>: + 315ec: b510 push {r4, lr} + 315ee: 460c mov r4, r1 + 315f0: f9b1 100e ldrsh.w r1, [r1, #14] + 315f4: f000 f832 bl 3165c <_lseek_r> + 315f8: 89a3 ldrh r3, [r4, #12] + 315fa: 1c42 adds r2, r0, #1 + 315fc: bf0e itee eq + 315fe: f423 5380 biceq.w r3, r3, #4096 ; 0x1000 + 31602: f443 5380 orrne.w r3, r3, #4096 ; 0x1000 + 31606: 6520 strne r0, [r4, #80] ; 0x50 + 31608: 81a3 strh r3, [r4, #12] + 3160a: bd10 pop {r4, pc} + +0003160c <__sclose>: + 3160c: f9b1 100e ldrsh.w r1, [r1, #14] + 31610: f000 b812 b.w 31638 <_close_r> + +00031614 <__ascii_wctomb>: + 31614: b149 cbz r1, 3162a <__ascii_wctomb+0x16> + 31616: 2aff cmp r2, #255 ; 0xff + 31618: d802 bhi.n 31620 <__ascii_wctomb+0xc> + 3161a: 700a strb r2, [r1, #0] + 3161c: 2001 movs r0, #1 + 3161e: 4770 bx lr + 31620: 238a movs r3, #138 ; 0x8a + 31622: 6003 str r3, [r0, #0] + 31624: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 31628: 4770 bx lr + 3162a: 4608 mov r0, r1 + 3162c: 4770 bx lr + 3162e: bf00 nop + +00031630 <_localeconv_r>: + 31630: 4800 ldr r0, [pc, #0] ; (31634 <_localeconv_r+0x4>) + 31632: 4770 bx lr + 31634: 20004dd8 .word 0x20004dd8 + +00031638 <_close_r>: + 31638: b538 push {r3, r4, r5, lr} + 3163a: 4d07 ldr r5, [pc, #28] ; (31658 <_close_r+0x20>) + 3163c: 2200 movs r2, #0 + 3163e: 4604 mov r4, r0 + 31640: 4608 mov r0, r1 + 31642: 602a str r2, [r5, #0] + 31644: f7f9 fbfa bl 2ae3c <_close> + 31648: 1c43 adds r3, r0, #1 + 3164a: d000 beq.n 3164e <_close_r+0x16> + 3164c: bd38 pop {r3, r4, r5, pc} + 3164e: 682b ldr r3, [r5, #0] + 31650: 2b00 cmp r3, #0 + 31652: d0fb beq.n 3164c <_close_r+0x14> + 31654: 6023 str r3, [r4, #0] + 31656: bd38 pop {r3, r4, r5, pc} + 31658: 2000ba68 .word 0x2000ba68 + +0003165c <_lseek_r>: + 3165c: b538 push {r3, r4, r5, lr} + 3165e: 460c mov r4, r1 + 31660: 4d08 ldr r5, [pc, #32] ; (31684 <_lseek_r+0x28>) + 31662: 4684 mov ip, r0 + 31664: 4611 mov r1, r2 + 31666: 4620 mov r0, r4 + 31668: 461a mov r2, r3 + 3166a: 2300 movs r3, #0 + 3166c: 602b str r3, [r5, #0] + 3166e: 4664 mov r4, ip + 31670: f7f9 fbf0 bl 2ae54 <_lseek> + 31674: 1c43 adds r3, r0, #1 + 31676: d000 beq.n 3167a <_lseek_r+0x1e> + 31678: bd38 pop {r3, r4, r5, pc} + 3167a: 682b ldr r3, [r5, #0] + 3167c: 2b00 cmp r3, #0 + 3167e: d0fb beq.n 31678 <_lseek_r+0x1c> + 31680: 6023 str r3, [r4, #0] + 31682: bd38 pop {r3, r4, r5, pc} + 31684: 2000ba68 .word 0x2000ba68 + +00031688 <_read_r>: + 31688: b538 push {r3, r4, r5, lr} + 3168a: 460c mov r4, r1 + 3168c: 4d08 ldr r5, [pc, #32] ; (316b0 <_read_r+0x28>) + 3168e: 4684 mov ip, r0 + 31690: 4611 mov r1, r2 + 31692: 4620 mov r0, r4 + 31694: 461a mov r2, r3 + 31696: 2300 movs r3, #0 + 31698: 602b str r3, [r5, #0] + 3169a: 4664 mov r4, ip + 3169c: f7f9 fbcc bl 2ae38 <_read> + 316a0: 1c43 adds r3, r0, #1 + 316a2: d000 beq.n 316a6 <_read_r+0x1e> + 316a4: bd38 pop {r3, r4, r5, pc} + 316a6: 682b ldr r3, [r5, #0] + 316a8: 2b00 cmp r3, #0 + 316aa: d0fb beq.n 316a4 <_read_r+0x1c> + 316ac: 6023 str r3, [r4, #0] + 316ae: bd38 pop {r3, r4, r5, pc} + 316b0: 2000ba68 .word 0x2000ba68 + +000316b4 <_wcrtomb_r>: + 316b4: b570 push {r4, r5, r6, lr} + 316b6: 4605 mov r5, r0 + 316b8: b084 sub sp, #16 + 316ba: b15b cbz r3, 316d4 <_wcrtomb_r+0x20> + 316bc: 461c mov r4, r3 + 316be: b169 cbz r1, 316dc <_wcrtomb_r+0x28> + 316c0: 4b0e ldr r3, [pc, #56] ; (316fc <_wcrtomb_r+0x48>) + 316c2: 4628 mov r0, r5 + 316c4: f8d3 60e0 ldr.w r6, [r3, #224] ; 0xe0 + 316c8: 4623 mov r3, r4 + 316ca: 47b0 blx r6 + 316cc: 1c43 adds r3, r0, #1 + 316ce: d00f beq.n 316f0 <_wcrtomb_r+0x3c> + 316d0: b004 add sp, #16 + 316d2: bd70 pop {r4, r5, r6, pc} + 316d4: f500 7482 add.w r4, r0, #260 ; 0x104 + 316d8: 2900 cmp r1, #0 + 316da: d1f1 bne.n 316c0 <_wcrtomb_r+0xc> + 316dc: 4a07 ldr r2, [pc, #28] ; (316fc <_wcrtomb_r+0x48>) + 316de: 4623 mov r3, r4 + 316e0: f8d2 60e0 ldr.w r6, [r2, #224] ; 0xe0 + 316e4: 4628 mov r0, r5 + 316e6: 460a mov r2, r1 + 316e8: a901 add r1, sp, #4 + 316ea: 47b0 blx r6 + 316ec: 1c43 adds r3, r0, #1 + 316ee: d1ef bne.n 316d0 <_wcrtomb_r+0x1c> + 316f0: 2200 movs r2, #0 + 316f2: 238a movs r3, #138 ; 0x8a + 316f4: 6022 str r2, [r4, #0] + 316f6: 602b str r3, [r5, #0] + 316f8: b004 add sp, #16 + 316fa: bd70 pop {r4, r5, r6, pc} + 316fc: 20004ce8 .word 0x20004ce8 + +00031700 <_wcsrtombs_r>: + 31700: b510 push {r4, lr} + 31702: b082 sub sp, #8 + 31704: 9c04 ldr r4, [sp, #16] + 31706: e9cd 3400 strd r3, r4, [sp] + 3170a: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff + 3170e: f002 fb2d bl 33d6c <_wcsnrtombs_r> + 31712: b002 add sp, #8 + 31714: bd10 pop {r4, pc} + 31716: bf00 nop + +00031718 : + 31718: b430 push {r4, r5} + 3171a: b082 sub sp, #8 + 3171c: ed8d 0b00 vstr d0, [sp] + 31720: 9a01 ldr r2, [sp, #4] + 31722: 4c19 ldr r4, [pc, #100] ; (31788 ) + 31724: f022 4300 bic.w r3, r2, #2147483648 ; 0x80000000 + 31728: 2100 movs r1, #0 + 3172a: 42a3 cmp r3, r4 + 3172c: 6001 str r1, [r0, #0] + 3172e: dc21 bgt.n 31774 + 31730: 9c00 ldr r4, [sp, #0] + 31732: 431c orrs r4, r3 + 31734: d01e beq.n 31774 + 31736: 4c15 ldr r4, [pc, #84] ; (3178c ) + 31738: 4014 ands r4, r2 + 3173a: b954 cbnz r4, 31752 + 3173c: ed9f 7b10 vldr d7, [pc, #64] ; 31780 + 31740: ee20 7b07 vmul.f64 d7, d0, d7 + 31744: ed8d 7b00 vstr d7, [sp] + 31748: 9a01 ldr r2, [sp, #4] + 3174a: f06f 0135 mvn.w r1, #53 ; 0x35 + 3174e: f022 4300 bic.w r3, r2, #2147483648 ; 0x80000000 + 31752: f022 42ff bic.w r2, r2, #2139095040 ; 0x7f800000 + 31756: e9dd 4500 ldrd r4, r5, [sp] + 3175a: f422 02e0 bic.w r2, r2, #7340032 ; 0x700000 + 3175e: f042 557f orr.w r5, r2, #1069547520 ; 0x3fc00000 + 31762: 151b asrs r3, r3, #20 + 31764: f445 1500 orr.w r5, r5, #2097152 ; 0x200000 + 31768: f2a3 33fe subw r3, r3, #1022 ; 0x3fe + 3176c: e9cd 4500 strd r4, r5, [sp] + 31770: 440b add r3, r1 + 31772: 6003 str r3, [r0, #0] + 31774: ed9d 0b00 vldr d0, [sp] + 31778: b002 add sp, #8 + 3177a: bc30 pop {r4, r5} + 3177c: 4770 bx lr + 3177e: bf00 nop + 31780: 00000000 .word 0x00000000 + 31784: 43500000 .word 0x43500000 + 31788: 7fefffff .word 0x7fefffff + 3178c: 7ff00000 .word 0x7ff00000 + +00031790 <__assert_func>: + 31790: b500 push {lr} + 31792: 4c0b ldr r4, [pc, #44] ; (317c0 <__assert_func+0x30>) + 31794: 6825 ldr r5, [r4, #0] + 31796: 4614 mov r4, r2 + 31798: 68ee ldr r6, [r5, #12] + 3179a: 461a mov r2, r3 + 3179c: b085 sub sp, #20 + 3179e: 4603 mov r3, r0 + 317a0: 460d mov r5, r1 + 317a2: b14c cbz r4, 317b8 <__assert_func+0x28> + 317a4: 4907 ldr r1, [pc, #28] ; (317c4 <__assert_func+0x34>) + 317a6: 9500 str r5, [sp, #0] + 317a8: e9cd 1401 strd r1, r4, [sp, #4] + 317ac: 4630 mov r0, r6 + 317ae: 4906 ldr r1, [pc, #24] ; (317c8 <__assert_func+0x38>) + 317b0: f000 ff18 bl 325e4 + 317b4: f7f9 fb54 bl 2ae60 + 317b8: 4904 ldr r1, [pc, #16] ; (317cc <__assert_func+0x3c>) + 317ba: 460c mov r4, r1 + 317bc: e7f3 b.n 317a6 <__assert_func+0x16> + 317be: bf00 nop + 317c0: 20005270 .word 0x20005270 + 317c4: 200042e8 .word 0x200042e8 + 317c8: 200042f8 .word 0x200042f8 + 317cc: 20003d18 .word 0x20003d18 + +000317d0 : + 317d0: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 317d4: 6903 ldr r3, [r0, #16] + 317d6: 690c ldr r4, [r1, #16] + 317d8: 42a3 cmp r3, r4 + 317da: b083 sub sp, #12 + 317dc: f2c0 8087 blt.w 318ee + 317e0: 3c01 subs r4, #1 + 317e2: f101 0514 add.w r5, r1, #20 + 317e6: 00a3 lsls r3, r4, #2 + 317e8: f100 0814 add.w r8, r0, #20 + 317ec: 9300 str r3, [sp, #0] + 317ee: f855 3024 ldr.w r3, [r5, r4, lsl #2] + 317f2: f858 2024 ldr.w r2, [r8, r4, lsl #2] + 317f6: 3301 adds r3, #1 + 317f8: 4681 mov r9, r0 + 317fa: 429a cmp r2, r3 + 317fc: eb08 0084 add.w r0, r8, r4, lsl #2 + 31800: eb05 0784 add.w r7, r5, r4, lsl #2 + 31804: 9001 str r0, [sp, #4] + 31806: fbb2 f6f3 udiv r6, r2, r3 + 3180a: d33b bcc.n 31884 + 3180c: f04f 0c00 mov.w ip, #0 + 31810: 46ae mov lr, r5 + 31812: 4640 mov r0, r8 + 31814: 46e2 mov sl, ip + 31816: 4663 mov r3, ip + 31818: f85e bb04 ldr.w fp, [lr], #4 + 3181c: 6802 ldr r2, [r0, #0] + 3181e: fa1f fc8b uxth.w ip, fp + 31822: fb06 330c mla r3, r6, ip, r3 + 31826: ea4f 4c13 mov.w ip, r3, lsr #16 + 3182a: ea4f 4b1b mov.w fp, fp, lsr #16 + 3182e: fb06 cc0b mla ip, r6, fp, ip + 31832: b29b uxth r3, r3 + 31834: ebaa 0303 sub.w r3, sl, r3 + 31838: fa1f fa8c uxth.w sl, ip + 3183c: fa13 f382 uxtah r3, r3, r2 + 31840: ebca 4212 rsb r2, sl, r2, lsr #16 + 31844: eb02 4223 add.w r2, r2, r3, asr #16 + 31848: b29b uxth r3, r3 + 3184a: ea43 4302 orr.w r3, r3, r2, lsl #16 + 3184e: 4577 cmp r7, lr + 31850: f840 3b04 str.w r3, [r0], #4 + 31854: ea4f 4a22 mov.w sl, r2, asr #16 + 31858: ea4f 431c mov.w r3, ip, lsr #16 + 3185c: d2dc bcs.n 31818 + 3185e: 9b00 ldr r3, [sp, #0] + 31860: f858 3003 ldr.w r3, [r8, r3] + 31864: b973 cbnz r3, 31884 + 31866: 9b01 ldr r3, [sp, #4] + 31868: 3b04 subs r3, #4 + 3186a: 4598 cmp r8, r3 + 3186c: d304 bcc.n 31878 + 3186e: e007 b.n 31880 + 31870: 4598 cmp r8, r3 + 31872: f104 34ff add.w r4, r4, #4294967295 ; 0xffffffff + 31876: d203 bcs.n 31880 + 31878: f853 2904 ldr.w r2, [r3], #-4 + 3187c: 2a00 cmp r2, #0 + 3187e: d0f7 beq.n 31870 + 31880: f8c9 4010 str.w r4, [r9, #16] + 31884: 4648 mov r0, r9 + 31886: f7ff fc23 bl 310d0 <__mcmp> + 3188a: 2800 cmp r0, #0 + 3188c: db2b blt.n 318e6 + 3188e: 3601 adds r6, #1 + 31890: 4641 mov r1, r8 + 31892: 2300 movs r3, #0 + 31894: f855 0b04 ldr.w r0, [r5], #4 + 31898: f8d1 c000 ldr.w ip, [r1] + 3189c: b282 uxth r2, r0 + 3189e: 1a9a subs r2, r3, r2 + 318a0: 0c03 lsrs r3, r0, #16 + 318a2: fa12 f28c uxtah r2, r2, ip + 318a6: ebc3 431c rsb r3, r3, ip, lsr #16 + 318aa: eb03 4322 add.w r3, r3, r2, asr #16 + 318ae: b292 uxth r2, r2 + 318b0: ea42 4203 orr.w r2, r2, r3, lsl #16 + 318b4: 42af cmp r7, r5 + 318b6: f841 2b04 str.w r2, [r1], #4 + 318ba: ea4f 4323 mov.w r3, r3, asr #16 + 318be: d2e9 bcs.n 31894 + 318c0: f858 2024 ldr.w r2, [r8, r4, lsl #2] + 318c4: eb08 0384 add.w r3, r8, r4, lsl #2 + 318c8: b96a cbnz r2, 318e6 + 318ca: 3b04 subs r3, #4 + 318cc: 4598 cmp r8, r3 + 318ce: d304 bcc.n 318da + 318d0: e007 b.n 318e2 + 318d2: 4598 cmp r8, r3 + 318d4: f104 34ff add.w r4, r4, #4294967295 ; 0xffffffff + 318d8: d203 bcs.n 318e2 + 318da: f853 2904 ldr.w r2, [r3], #-4 + 318de: 2a00 cmp r2, #0 + 318e0: d0f7 beq.n 318d2 + 318e2: f8c9 4010 str.w r4, [r9, #16] + 318e6: 4630 mov r0, r6 + 318e8: b003 add sp, #12 + 318ea: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 318ee: 2000 movs r0, #0 + 318f0: b003 add sp, #12 + 318f2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 318f6: bf00 nop + +000318f8 <_dtoa_r>: + 318f8: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 318fc: ed2d 8b02 vpush {d8} + 31900: b08f sub sp, #60 ; 0x3c + 31902: ed8d 0b02 vstr d0, [sp, #8] + 31906: 9101 str r1, [sp, #4] + 31908: 6b81 ldr r1, [r0, #56] ; 0x38 + 3190a: 9d1a ldr r5, [sp, #104] ; 0x68 + 3190c: 9305 str r3, [sp, #20] + 3190e: ec57 6b10 vmov r6, r7, d0 + 31912: 4604 mov r4, r0 + 31914: 4693 mov fp, r2 + 31916: b141 cbz r1, 3192a <_dtoa_r+0x32> + 31918: 6bc2 ldr r2, [r0, #60] ; 0x3c + 3191a: 604a str r2, [r1, #4] + 3191c: 2301 movs r3, #1 + 3191e: 4093 lsls r3, r2 + 31920: 608b str r3, [r1, #8] + 31922: f7ff f975 bl 30c10 <_Bfree> + 31926: 2300 movs r3, #0 + 31928: 63a3 str r3, [r4, #56] ; 0x38 + 3192a: f1b7 0800 subs.w r8, r7, #0 + 3192e: bfb4 ite lt + 31930: 2301 movlt r3, #1 + 31932: 2300 movge r3, #0 + 31934: 602b str r3, [r5, #0] + 31936: 4bbe ldr r3, [pc, #760] ; (31c30 <_dtoa_r+0x338>) + 31938: bfbc itt lt + 3193a: f028 4800 biclt.w r8, r8, #2147483648 ; 0x80000000 + 3193e: f8cd 800c strlt.w r8, [sp, #12] + 31942: ea33 0308 bics.w r3, r3, r8 + 31946: f000 809f beq.w 31a88 <_dtoa_r+0x190> + 3194a: ed9d 8b02 vldr d8, [sp, #8] + 3194e: eeb5 8b40 vcmp.f64 d8, #0.0 + 31952: eef1 fa10 vmrs APSR_nzcv, fpscr + 31956: d111 bne.n 3197c <_dtoa_r+0x84> + 31958: 9a05 ldr r2, [sp, #20] + 3195a: 2301 movs r3, #1 + 3195c: 6013 str r3, [r2, #0] + 3195e: 9b1b ldr r3, [sp, #108] ; 0x6c + 31960: 2b00 cmp r3, #0 + 31962: f000 823f beq.w 31de4 <_dtoa_r+0x4ec> + 31966: 4bb3 ldr r3, [pc, #716] ; (31c34 <_dtoa_r+0x33c>) + 31968: 9a1b ldr r2, [sp, #108] ; 0x6c + 3196a: 6013 str r3, [r2, #0] + 3196c: 3b01 subs r3, #1 + 3196e: 9300 str r3, [sp, #0] + 31970: 9800 ldr r0, [sp, #0] + 31972: b00f add sp, #60 ; 0x3c + 31974: ecbd 8b02 vpop {d8} + 31978: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 3197c: aa0c add r2, sp, #48 ; 0x30 + 3197e: a90d add r1, sp, #52 ; 0x34 + 31980: 4620 mov r0, r4 + 31982: eeb0 0b48 vmov.f64 d0, d8 + 31986: f7ff fc6f bl 31268 <__d2b> + 3198a: ea5f 5318 movs.w r3, r8, lsr #20 + 3198e: 4605 mov r5, r0 + 31990: f040 8092 bne.w 31ab8 <_dtoa_r+0x1c0> + 31994: e9dd 130c ldrd r1, r3, [sp, #48] ; 0x30 + 31998: 440b add r3, r1 + 3199a: f203 4232 addw r2, r3, #1074 ; 0x432 + 3199e: 2a20 cmp r2, #32 + 319a0: f340 82fa ble.w 31f98 <_dtoa_r+0x6a0> + 319a4: f1c2 0240 rsb r2, r2, #64 ; 0x40 + 319a8: fa08 f802 lsl.w r8, r8, r2 + 319ac: f203 4212 addw r2, r3, #1042 ; 0x412 + 319b0: 40d6 lsrs r6, r2 + 319b2: ea48 0206 orr.w r2, r8, r6 + 319b6: ee07 2a10 vmov s14, r2 + 319ba: eeb8 7b47 vcvt.f64.u32 d7, s14 + 319be: 1e58 subs r0, r3, #1 + 319c0: ee17 6a90 vmov r6, s15 + 319c4: ec53 2b17 vmov r2, r3, d7 + 319c8: f04f 0a01 mov.w sl, #1 + 319cc: f1a6 73f8 sub.w r3, r6, #32505856 ; 0x1f00000 + 319d0: ed9f 3b91 vldr d3, [pc, #580] ; 31c18 <_dtoa_r+0x320> + 319d4: ed9f 7b92 vldr d7, [pc, #584] ; 31c20 <_dtoa_r+0x328> + 319d8: ed9f 5b93 vldr d5, [pc, #588] ; 31c28 <_dtoa_r+0x330> + 319dc: ee06 0a90 vmov s13, r0 + 319e0: ec43 2b12 vmov d2, r2, r3 + 319e4: eeb8 4be6 vcvt.f64.s32 d4, s13 + 319e8: eeb7 6b08 vmov.f64 d6, #120 ; 0x3fc00000 1.5 + 319ec: ee32 6b46 vsub.f64 d6, d2, d6 + 319f0: eea6 7b03 vfma.f64 d7, d6, d3 + 319f4: eea4 7b05 vfma.f64 d7, d4, d5 + 319f8: eefd 6bc7 vcvt.s32.f64 s13, d7 + 319fc: eeb5 7bc0 vcmpe.f64 d7, #0.0 + 31a00: eef1 fa10 vmrs APSR_nzcv, fpscr + 31a04: ee16 7a90 vmov r7, s13 + 31a08: d508 bpl.n 31a1c <_dtoa_r+0x124> + 31a0a: eeb8 6be6 vcvt.f64.s32 d6, s13 + 31a0e: eeb4 6b47 vcmp.f64 d6, d7 + 31a12: eef1 fa10 vmrs APSR_nzcv, fpscr + 31a16: bf18 it ne + 31a18: f107 37ff addne.w r7, r7, #4294967295 ; 0xffffffff + 31a1c: 2f16 cmp r7, #22 + 31a1e: f200 8145 bhi.w 31cac <_dtoa_r+0x3b4> + 31a22: 4b85 ldr r3, [pc, #532] ; (31c38 <_dtoa_r+0x340>) + 31a24: eb03 03c7 add.w r3, r3, r7, lsl #3 + 31a28: ed93 7b00 vldr d7, [r3] + 31a2c: eeb4 8bc7 vcmpe.f64 d8, d7 + 31a30: eef1 fa10 vmrs APSR_nzcv, fpscr + 31a34: d557 bpl.n 31ae6 <_dtoa_r+0x1ee> + 31a36: 1a09 subs r1, r1, r0 + 31a38: 2300 movs r3, #0 + 31a3a: f1b1 0801 subs.w r8, r1, #1 + 31a3e: f107 37ff add.w r7, r7, #4294967295 ; 0xffffffff + 31a42: 930a str r3, [sp, #40] ; 0x28 + 31a44: f100 8139 bmi.w 31cba <_dtoa_r+0x3c2> + 31a48: 2300 movs r3, #0 + 31a4a: 9306 str r3, [sp, #24] + 31a4c: 2f00 cmp r7, #0 + 31a4e: da52 bge.n 31af6 <_dtoa_r+0x1fe> + 31a50: 9b06 ldr r3, [sp, #24] + 31a52: 9704 str r7, [sp, #16] + 31a54: 1bdb subs r3, r3, r7 + 31a56: 9306 str r3, [sp, #24] + 31a58: 427b negs r3, r7 + 31a5a: 9308 str r3, [sp, #32] + 31a5c: 9b01 ldr r3, [sp, #4] + 31a5e: 2b09 cmp r3, #9 + 31a60: f04f 0700 mov.w r7, #0 + 31a64: d84e bhi.n 31b04 <_dtoa_r+0x20c> + 31a66: 2b05 cmp r3, #5 + 31a68: f340 829d ble.w 31fa6 <_dtoa_r+0x6ae> + 31a6c: 3b04 subs r3, #4 + 31a6e: 9301 str r3, [sp, #4] + 31a70: 2600 movs r6, #0 + 31a72: 9b01 ldr r3, [sp, #4] + 31a74: 1e9a subs r2, r3, #2 + 31a76: 2a03 cmp r2, #3 + 31a78: f200 8125 bhi.w 31cc6 <_dtoa_r+0x3ce> + 31a7c: e8df f012 tbh [pc, r2, lsl #1] + 31a80: 03a703aa .word 0x03a703aa + 31a84: 037e039d .word 0x037e039d + 31a88: 9a05 ldr r2, [sp, #20] + 31a8a: f3c8 0813 ubfx r8, r8, #0, #20 + 31a8e: f242 730f movw r3, #9999 ; 0x270f + 31a92: ea58 0806 orrs.w r8, r8, r6 + 31a96: 6013 str r3, [r2, #0] + 31a98: d11e bne.n 31ad8 <_dtoa_r+0x1e0> + 31a9a: 9b1b ldr r3, [sp, #108] ; 0x6c + 31a9c: 2b00 cmp r3, #0 + 31a9e: f000 8591 beq.w 325c4 <_dtoa_r+0xccc> + 31aa2: 4b66 ldr r3, [pc, #408] ; (31c3c <_dtoa_r+0x344>) + 31aa4: 9300 str r3, [sp, #0] + 31aa6: 3308 adds r3, #8 + 31aa8: 9a1b ldr r2, [sp, #108] ; 0x6c + 31aaa: 9800 ldr r0, [sp, #0] + 31aac: 6013 str r3, [r2, #0] + 31aae: b00f add sp, #60 ; 0x3c + 31ab0: ecbd 8b02 vpop {d8} + 31ab4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 31ab8: ee18 6a90 vmov r6, s17 + 31abc: f3c6 0613 ubfx r6, r6, #0, #20 + 31ac0: f2a3 30ff subw r0, r3, #1023 ; 0x3ff + 31ac4: ec53 2b18 vmov r2, r3, d8 + 31ac8: f046 537f orr.w r3, r6, #1069547520 ; 0x3fc00000 + 31acc: 990c ldr r1, [sp, #48] ; 0x30 + 31ace: f04f 0a00 mov.w sl, #0 + 31ad2: f443 1340 orr.w r3, r3, #3145728 ; 0x300000 + 31ad6: e77b b.n 319d0 <_dtoa_r+0xd8> + 31ad8: 9b1b ldr r3, [sp, #108] ; 0x6c + 31ada: 2b00 cmp r3, #0 + 31adc: f040 833b bne.w 32156 <_dtoa_r+0x85e> + 31ae0: 4b57 ldr r3, [pc, #348] ; (31c40 <_dtoa_r+0x348>) + 31ae2: 9300 str r3, [sp, #0] + 31ae4: e744 b.n 31970 <_dtoa_r+0x78> + 31ae6: 1a09 subs r1, r1, r0 + 31ae8: 2300 movs r3, #0 + 31aea: f1b1 0801 subs.w r8, r1, #1 + 31aee: 930a str r3, [sp, #40] ; 0x28 + 31af0: f100 80e3 bmi.w 31cba <_dtoa_r+0x3c2> + 31af4: 9306 str r3, [sp, #24] + 31af6: 2300 movs r3, #0 + 31af8: 9308 str r3, [sp, #32] + 31afa: 9b01 ldr r3, [sp, #4] + 31afc: 9704 str r7, [sp, #16] + 31afe: 2b09 cmp r3, #9 + 31b00: 44b8 add r8, r7 + 31b02: d9b0 bls.n 31a66 <_dtoa_r+0x16e> + 31b04: 2300 movs r3, #0 + 31b06: 2601 movs r6, #1 + 31b08: 9301 str r3, [sp, #4] + 31b0a: 9607 str r6, [sp, #28] + 31b0c: f04f 39ff mov.w r9, #4294967295 ; 0xffffffff + 31b10: 469b mov fp, r3 + 31b12: 2100 movs r1, #0 + 31b14: 63e1 str r1, [r4, #60] ; 0x3c + 31b16: f8cd 902c str.w r9, [sp, #44] ; 0x2c + 31b1a: 4620 mov r0, r4 + 31b1c: f7ff f852 bl 30bc4 <_Balloc> + 31b20: 9000 str r0, [sp, #0] + 31b22: 2800 cmp r0, #0 + 31b24: f000 8540 beq.w 325a8 <_dtoa_r+0xcb0> + 31b28: 9b00 ldr r3, [sp, #0] + 31b2a: 63a3 str r3, [r4, #56] ; 0x38 + 31b2c: f1b9 0f0e cmp.w r9, #14 + 31b30: f200 80dc bhi.w 31cec <_dtoa_r+0x3f4> + 31b34: 2e00 cmp r6, #0 + 31b36: f000 80d9 beq.w 31cec <_dtoa_r+0x3f4> + 31b3a: 9b04 ldr r3, [sp, #16] + 31b3c: 2b00 cmp r3, #0 + 31b3e: f340 83de ble.w 322fe <_dtoa_r+0xa06> + 31b42: 4a3d ldr r2, [pc, #244] ; (31c38 <_dtoa_r+0x340>) + 31b44: f003 010f and.w r1, r3, #15 + 31b48: eb02 02c1 add.w r2, r2, r1, lsl #3 + 31b4c: ed92 7b00 vldr d7, [r2] + 31b50: 111a asrs r2, r3, #4 + 31b52: 05db lsls r3, r3, #23 + 31b54: f140 8382 bpl.w 3225c <_dtoa_r+0x964> + 31b58: 493a ldr r1, [pc, #232] ; (31c44 <_dtoa_r+0x34c>) + 31b5a: ed91 6b08 vldr d6, [r1, #32] + 31b5e: f002 020f and.w r2, r2, #15 + 31b62: 2003 movs r0, #3 + 31b64: ee88 5b06 vdiv.f64 d5, d8, d6 + 31b68: b15a cbz r2, 31b82 <_dtoa_r+0x28a> + 31b6a: 4936 ldr r1, [pc, #216] ; (31c44 <_dtoa_r+0x34c>) + 31b6c: 07d6 lsls r6, r2, #31 + 31b6e: d504 bpl.n 31b7a <_dtoa_r+0x282> + 31b70: ed91 6b00 vldr d6, [r1] + 31b74: 3001 adds r0, #1 + 31b76: ee27 7b06 vmul.f64 d7, d7, d6 + 31b7a: 1052 asrs r2, r2, #1 + 31b7c: f101 0108 add.w r1, r1, #8 + 31b80: d1f4 bne.n 31b6c <_dtoa_r+0x274> + 31b82: ee85 6b07 vdiv.f64 d6, d5, d7 + 31b86: 9b0a ldr r3, [sp, #40] ; 0x28 + 31b88: b13b cbz r3, 31b9a <_dtoa_r+0x2a2> + 31b8a: eeb7 7b00 vmov.f64 d7, #112 ; 0x3f800000 1.0 + 31b8e: eeb4 6bc7 vcmpe.f64 d6, d7 + 31b92: eef1 fa10 vmrs APSR_nzcv, fpscr + 31b96: f100 84ae bmi.w 324f6 <_dtoa_r+0xbfe> + 31b9a: ee07 0a90 vmov s15, r0 + 31b9e: eeb8 5be7 vcvt.f64.s32 d5, s15 + 31ba2: eeb1 7b0c vmov.f64 d7, #28 ; 0x40e00000 7.0 + 31ba6: eea5 7b06 vfma.f64 d7, d5, d6 + 31baa: ee17 2a90 vmov r2, s15 + 31bae: ec51 0b17 vmov r0, r1, d7 + 31bb2: f1a2 7150 sub.w r1, r2, #54525952 ; 0x3400000 + 31bb6: f1b9 0f00 cmp.w r9, #0 + 31bba: f000 8388 beq.w 322ce <_dtoa_r+0x9d6> + 31bbe: 9e04 ldr r6, [sp, #16] + 31bc0: 464a mov r2, r9 + 31bc2: 9b07 ldr r3, [sp, #28] + 31bc4: 2b00 cmp r3, #0 + 31bc6: f000 8447 beq.w 32458 <_dtoa_r+0xb60> + 31bca: eeb6 3b00 vmov.f64 d3, #96 ; 0x3f000000 0.5 + 31bce: 4b1a ldr r3, [pc, #104] ; (31c38 <_dtoa_r+0x340>) + 31bd0: eefd 4bc6 vcvt.s32.f64 s9, d6 + 31bd4: eb03 0cc2 add.w ip, r3, r2, lsl #3 + 31bd8: eeb8 7be4 vcvt.f64.s32 d7, s9 + 31bdc: ee36 7b47 vsub.f64 d7, d6, d7 + 31be0: ed1c 6b02 vldr d6, [ip, #-8] + 31be4: ee83 5b06 vdiv.f64 d5, d3, d6 + 31be8: ec41 0b16 vmov d6, r0, r1 + 31bec: ee14 0a90 vmov r0, s9 + 31bf0: ee35 5b46 vsub.f64 d5, d5, d6 + 31bf4: 9900 ldr r1, [sp, #0] + 31bf6: eeb4 5bc7 vcmpe.f64 d5, d7 + 31bfa: 3030 adds r0, #48 ; 0x30 + 31bfc: eef1 fa10 vmrs APSR_nzcv, fpscr + 31c00: f801 0b01 strb.w r0, [r1], #1 + 31c04: f300 84ac bgt.w 32560 <_dtoa_r+0xc68> + 31c08: eeb7 2b00 vmov.f64 d2, #112 ; 0x3f800000 1.0 + 31c0c: eeb2 4b04 vmov.f64 d4, #36 ; 0x41200000 10.0 + 31c10: f04f 0c00 mov.w ip, #0 + 31c14: e031 b.n 31c7a <_dtoa_r+0x382> + 31c16: bf00 nop + 31c18: 636f4361 .word 0x636f4361 + 31c1c: 3fd287a7 .word 0x3fd287a7 + 31c20: 8b60c8b3 .word 0x8b60c8b3 + 31c24: 3fc68a28 .word 0x3fc68a28 + 31c28: 509f79fb .word 0x509f79fb + 31c2c: 3fd34413 .word 0x3fd34413 + 31c30: 7ff00000 .word 0x7ff00000 + 31c34: 20004551 .word 0x20004551 + 31c38: 200002f8 .word 0x200002f8 + 31c3c: 200044a4 .word 0x200044a4 + 31c40: 200044b0 .word 0x200044b0 + 31c44: 200002d0 .word 0x200002d0 + 31c48: f10c 0c01 add.w ip, ip, #1 + 31c4c: 4594 cmp ip, r2 + 31c4e: da4d bge.n 31cec <_dtoa_r+0x3f4> + 31c50: ee27 7b04 vmul.f64 d7, d7, d4 + 31c54: ee25 5b04 vmul.f64 d5, d5, d4 + 31c58: eefd 6bc7 vcvt.s32.f64 s13, d7 + 31c5c: ee16 3a90 vmov r3, s13 + 31c60: eeb8 3be6 vcvt.f64.s32 d3, s13 + 31c64: 3330 adds r3, #48 ; 0x30 + 31c66: ee37 7b43 vsub.f64 d7, d7, d3 + 31c6a: eeb4 7bc5 vcmpe.f64 d7, d5 + 31c6e: eef1 fa10 vmrs APSR_nzcv, fpscr + 31c72: f801 3b01 strb.w r3, [r1], #1 + 31c76: f100 8473 bmi.w 32560 <_dtoa_r+0xc68> + 31c7a: ee32 6b47 vsub.f64 d6, d2, d7 + 31c7e: eeb4 6bc5 vcmpe.f64 d6, d5 + 31c82: eef1 fa10 vmrs APSR_nzcv, fpscr + 31c86: d5df bpl.n 31c48 <_dtoa_r+0x350> + 31c88: 9a00 ldr r2, [sp, #0] + 31c8a: 9604 str r6, [sp, #16] + 31c8c: e002 b.n 31c94 <_dtoa_r+0x39c> + 31c8e: 428a cmp r2, r1 + 31c90: f000 8450 beq.w 32534 <_dtoa_r+0xc3c> + 31c94: 4689 mov r9, r1 + 31c96: f811 3d01 ldrb.w r3, [r1, #-1]! + 31c9a: 2b39 cmp r3, #57 ; 0x39 + 31c9c: d0f7 beq.n 31c8e <_dtoa_r+0x396> + 31c9e: 3301 adds r3, #1 + 31ca0: b2db uxtb r3, r3 + 31ca2: 700b strb r3, [r1, #0] + 31ca4: 9b04 ldr r3, [sp, #16] + 31ca6: 3301 adds r3, #1 + 31ca8: 9304 str r3, [sp, #16] + 31caa: e155 b.n 31f58 <_dtoa_r+0x660> + 31cac: 1a09 subs r1, r1, r0 + 31cae: 2301 movs r3, #1 + 31cb0: f1b1 0801 subs.w r8, r1, #1 + 31cb4: 930a str r3, [sp, #40] ; 0x28 + 31cb6: f57f aec7 bpl.w 31a48 <_dtoa_r+0x150> + 31cba: f1c1 0301 rsb r3, r1, #1 + 31cbe: 9306 str r3, [sp, #24] + 31cc0: f04f 0800 mov.w r8, #0 + 31cc4: e6c2 b.n 31a4c <_dtoa_r+0x154> + 31cc6: 2600 movs r6, #0 + 31cc8: 63e6 str r6, [r4, #60] ; 0x3c + 31cca: 4631 mov r1, r6 + 31ccc: 4620 mov r0, r4 + 31cce: f7fe ff79 bl 30bc4 <_Balloc> + 31cd2: 9000 str r0, [sp, #0] + 31cd4: 2800 cmp r0, #0 + 31cd6: f000 8467 beq.w 325a8 <_dtoa_r+0xcb0> + 31cda: 9b00 ldr r3, [sp, #0] + 31cdc: 63a3 str r3, [r4, #56] ; 0x38 + 31cde: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff + 31ce2: 930b str r3, [sp, #44] ; 0x2c + 31ce4: 4699 mov r9, r3 + 31ce6: 2301 movs r3, #1 + 31ce8: 46b3 mov fp, r6 + 31cea: 9307 str r3, [sp, #28] + 31cec: 9a0d ldr r2, [sp, #52] ; 0x34 + 31cee: 2a00 cmp r2, #0 + 31cf0: db55 blt.n 31d9e <_dtoa_r+0x4a6> + 31cf2: 9904 ldr r1, [sp, #16] + 31cf4: 290e cmp r1, #14 + 31cf6: dc52 bgt.n 31d9e <_dtoa_r+0x4a6> + 31cf8: 4bb7 ldr r3, [pc, #732] ; (31fd8 <_dtoa_r+0x6e0>) + 31cfa: f1bb 0f00 cmp.w fp, #0 + 31cfe: eb03 03c1 add.w r3, r3, r1, lsl #3 + 31d02: ed93 6b00 vldr d6, [r3] + 31d06: da15 bge.n 31d34 <_dtoa_r+0x43c> + 31d08: f1b9 0f00 cmp.w r9, #0 + 31d0c: dc12 bgt.n 31d34 <_dtoa_r+0x43c> + 31d0e: f040 82f2 bne.w 322f6 <_dtoa_r+0x9fe> + 31d12: eeb1 7b04 vmov.f64 d7, #20 ; 0x40a00000 5.0 + 31d16: ee26 7b07 vmul.f64 d7, d6, d7 + 31d1a: eeb4 8bc7 vcmpe.f64 d8, d7 + 31d1e: eef1 fa10 vmrs APSR_nzcv, fpscr + 31d22: 46ca mov sl, r9 + 31d24: 464e mov r6, r9 + 31d26: f200 826d bhi.w 32204 <_dtoa_r+0x90c> + 31d2a: f8dd 8000 ldr.w r8, [sp] + 31d2e: ea6f 0b0b mvn.w fp, fp + 31d32: e270 b.n 32216 <_dtoa_r+0x91e> + 31d34: ee88 7b06 vdiv.f64 d7, d8, d6 + 31d38: eebd 7bc7 vcvt.s32.f64 s14, d7 + 31d3c: 9900 ldr r1, [sp, #0] + 31d3e: ee17 3a10 vmov r3, s14 + 31d42: f1b9 0f01 cmp.w r9, #1 + 31d46: f103 0330 add.w r3, r3, #48 ; 0x30 + 31d4a: eeb8 5bc7 vcvt.f64.s32 d5, s14 + 31d4e: f801 3b01 strb.w r3, [r1], #1 + 31d52: eea5 8b46 vfms.f64 d8, d5, d6 + 31d56: f000 8334 beq.w 323c2 <_dtoa_r+0xaca> + 31d5a: eeb2 4b04 vmov.f64 d4, #36 ; 0x41200000 10.0 + 31d5e: 2301 movs r3, #1 + 31d60: e011 b.n 31d86 <_dtoa_r+0x48e> + 31d62: ee88 7b06 vdiv.f64 d7, d8, d6 + 31d66: eebd 7bc7 vcvt.s32.f64 s14, d7 + 31d6a: 3301 adds r3, #1 + 31d6c: ee17 2a10 vmov r2, s14 + 31d70: 454b cmp r3, r9 + 31d72: f102 0230 add.w r2, r2, #48 ; 0x30 + 31d76: eeb8 5bc7 vcvt.f64.s32 d5, s14 + 31d7a: f801 2b01 strb.w r2, [r1], #1 + 31d7e: eea5 8b46 vfms.f64 d8, d5, d6 + 31d82: f000 831e beq.w 323c2 <_dtoa_r+0xaca> + 31d86: ee28 8b04 vmul.f64 d8, d8, d4 + 31d8a: eeb5 8b40 vcmp.f64 d8, #0.0 + 31d8e: eef1 fa10 vmrs APSR_nzcv, fpscr + 31d92: d1e6 bne.n 31d62 <_dtoa_r+0x46a> + 31d94: 9b04 ldr r3, [sp, #16] + 31d96: 3301 adds r3, #1 + 31d98: 9304 str r3, [sp, #16] + 31d9a: 4689 mov r9, r1 + 31d9c: e0dc b.n 31f58 <_dtoa_r+0x660> + 31d9e: 9b07 ldr r3, [sp, #28] + 31da0: b343 cbz r3, 31df4 <_dtoa_r+0x4fc> + 31da2: 9b01 ldr r3, [sp, #4] + 31da4: 2b01 cmp r3, #1 + 31da6: f340 8276 ble.w 32296 <_dtoa_r+0x99e> + 31daa: 9b08 ldr r3, [sp, #32] + 31dac: f109 3aff add.w sl, r9, #4294967295 ; 0xffffffff + 31db0: 4553 cmp r3, sl + 31db2: f280 823f bge.w 32234 <_dtoa_r+0x93c> + 31db6: 9b08 ldr r3, [sp, #32] + 31db8: f8cd a020 str.w sl, [sp, #32] + 31dbc: ebaa 0203 sub.w r2, sl, r3 + 31dc0: 4417 add r7, r2 + 31dc2: f04f 0a00 mov.w sl, #0 + 31dc6: f1b9 0f00 cmp.w r9, #0 + 31dca: f2c0 8325 blt.w 32418 <_dtoa_r+0xb20> + 31dce: 9b06 ldr r3, [sp, #24] + 31dd0: 9309 str r3, [sp, #36] ; 0x24 + 31dd2: 444b add r3, r9 + 31dd4: 44c8 add r8, r9 + 31dd6: 9306 str r3, [sp, #24] + 31dd8: 2101 movs r1, #1 + 31dda: 4620 mov r0, r4 + 31ddc: f7fe ffc4 bl 30d68 <__i2b> + 31de0: 4606 mov r6, r0 + 31de2: e00c b.n 31dfe <_dtoa_r+0x506> + 31de4: 4b7d ldr r3, [pc, #500] ; (31fdc <_dtoa_r+0x6e4>) + 31de6: 9300 str r3, [sp, #0] + 31de8: 9800 ldr r0, [sp, #0] + 31dea: b00f add sp, #60 ; 0x3c + 31dec: ecbd 8b02 vpop {d8} + 31df0: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 31df4: 9b06 ldr r3, [sp, #24] + 31df6: f8dd a020 ldr.w sl, [sp, #32] + 31dfa: 9e07 ldr r6, [sp, #28] + 31dfc: 9309 str r3, [sp, #36] ; 0x24 + 31dfe: 9b09 ldr r3, [sp, #36] ; 0x24 + 31e00: b16b cbz r3, 31e1e <_dtoa_r+0x526> + 31e02: f1b8 0f00 cmp.w r8, #0 + 31e06: dd0a ble.n 31e1e <_dtoa_r+0x526> + 31e08: 4543 cmp r3, r8 + 31e0a: 9906 ldr r1, [sp, #24] + 31e0c: 461a mov r2, r3 + 31e0e: bfa8 it ge + 31e10: 4642 movge r2, r8 + 31e12: 1a89 subs r1, r1, r2 + 31e14: 1a9b subs r3, r3, r2 + 31e16: 9106 str r1, [sp, #24] + 31e18: 9309 str r3, [sp, #36] ; 0x24 + 31e1a: eba8 0802 sub.w r8, r8, r2 + 31e1e: 9b08 ldr r3, [sp, #32] + 31e20: b163 cbz r3, 31e3c <_dtoa_r+0x544> + 31e22: 9b07 ldr r3, [sp, #28] + 31e24: 2b00 cmp r3, #0 + 31e26: f000 82a7 beq.w 32378 <_dtoa_r+0xa80> + 31e2a: f1ba 0f00 cmp.w sl, #0 + 31e2e: f300 8204 bgt.w 3223a <_dtoa_r+0x942> + 31e32: 9b08 ldr r3, [sp, #32] + 31e34: ebb3 020a subs.w r2, r3, sl + 31e38: f040 82ff bne.w 3243a <_dtoa_r+0xb42> + 31e3c: 2101 movs r1, #1 + 31e3e: 4620 mov r0, r4 + 31e40: f7fe ff92 bl 30d68 <__i2b> + 31e44: 2f00 cmp r7, #0 + 31e46: 4682 mov sl, r0 + 31e48: f300 80af bgt.w 31faa <_dtoa_r+0x6b2> + 31e4c: 9b01 ldr r3, [sp, #4] + 31e4e: 2b01 cmp r3, #1 + 31e50: f340 8187 ble.w 32162 <_dtoa_r+0x86a> + 31e54: 2300 movs r3, #0 + 31e56: 9308 str r3, [sp, #32] + 31e58: 2001 movs r0, #1 + 31e5a: 2f00 cmp r7, #0 + 31e5c: f040 80b1 bne.w 31fc2 <_dtoa_r+0x6ca> + 31e60: 4440 add r0, r8 + 31e62: f010 001f ands.w r0, r0, #31 + 31e66: f000 817a beq.w 3215e <_dtoa_r+0x866> + 31e6a: f1c0 0220 rsb r2, r0, #32 + 31e6e: 2a04 cmp r2, #4 + 31e70: f300 8088 bgt.w 31f84 <_dtoa_r+0x68c> + 31e74: f040 81f6 bne.w 32264 <_dtoa_r+0x96c> + 31e78: 9b06 ldr r3, [sp, #24] + 31e7a: 2b00 cmp r3, #0 + 31e7c: dd05 ble.n 31e8a <_dtoa_r+0x592> + 31e7e: 4629 mov r1, r5 + 31e80: 461a mov r2, r3 + 31e82: 4620 mov r0, r4 + 31e84: f7ff f8ac bl 30fe0 <__lshift> + 31e88: 4605 mov r5, r0 + 31e8a: f1b8 0f00 cmp.w r8, #0 + 31e8e: dd05 ble.n 31e9c <_dtoa_r+0x5a4> + 31e90: 4651 mov r1, sl + 31e92: 4642 mov r2, r8 + 31e94: 4620 mov r0, r4 + 31e96: f7ff f8a3 bl 30fe0 <__lshift> + 31e9a: 4682 mov sl, r0 + 31e9c: 9b0a ldr r3, [sp, #40] ; 0x28 + 31e9e: 2b00 cmp r3, #0 + 31ea0: f040 813f bne.w 32122 <_dtoa_r+0x82a> + 31ea4: f1b9 0f00 cmp.w r9, #0 + 31ea8: f340 8125 ble.w 320f6 <_dtoa_r+0x7fe> + 31eac: 9b07 ldr r3, [sp, #28] + 31eae: 2b00 cmp r3, #0 + 31eb0: f040 80a3 bne.w 31ffa <_dtoa_r+0x702> + 31eb4: 9b04 ldr r3, [sp, #16] + 31eb6: 3301 adds r3, #1 + 31eb8: 9304 str r3, [sp, #16] + 31eba: f8dd 8000 ldr.w r8, [sp] + 31ebe: 2701 movs r7, #1 + 31ec0: e007 b.n 31ed2 <_dtoa_r+0x5da> + 31ec2: 4629 mov r1, r5 + 31ec4: 2300 movs r3, #0 + 31ec6: 220a movs r2, #10 + 31ec8: 4620 mov r0, r4 + 31eca: f7fe feab bl 30c24 <__multadd> + 31ece: 3701 adds r7, #1 + 31ed0: 4605 mov r5, r0 + 31ed2: 4651 mov r1, sl + 31ed4: 4628 mov r0, r5 + 31ed6: f7ff fc7b bl 317d0 + 31eda: 45b9 cmp r9, r7 + 31edc: f100 0030 add.w r0, r0, #48 ; 0x30 + 31ee0: f808 0b01 strb.w r0, [r8], #1 + 31ee4: dced bgt.n 31ec2 <_dtoa_r+0x5ca> + 31ee6: f1b9 0f00 cmp.w r9, #0 + 31eea: 9a00 ldr r2, [sp, #0] + 31eec: bfcc ite gt + 31eee: 46cb movgt fp, r9 + 31ef0: f04f 0b01 movle.w fp, #1 + 31ef4: 4603 mov r3, r0 + 31ef6: 4493 add fp, r2 + 31ef8: 2700 movs r7, #0 + 31efa: 4629 mov r1, r5 + 31efc: 2201 movs r2, #1 + 31efe: 4620 mov r0, r4 + 31f00: 9301 str r3, [sp, #4] + 31f02: f7ff f86d bl 30fe0 <__lshift> + 31f06: 4651 mov r1, sl + 31f08: 4605 mov r5, r0 + 31f0a: f7ff f8e1 bl 310d0 <__mcmp> + 31f0e: 2800 cmp r0, #0 + 31f10: f340 81af ble.w 32272 <_dtoa_r+0x97a> + 31f14: f81b 3c01 ldrb.w r3, [fp, #-1] + 31f18: 9a00 ldr r2, [sp, #0] + 31f1a: f10b 3bff add.w fp, fp, #4294967295 ; 0xffffffff + 31f1e: e004 b.n 31f2a <_dtoa_r+0x632> + 31f20: 455a cmp r2, fp + 31f22: f000 81b1 beq.w 32288 <_dtoa_r+0x990> + 31f26: f81b 3d01 ldrb.w r3, [fp, #-1]! + 31f2a: 2b39 cmp r3, #57 ; 0x39 + 31f2c: f10b 0901 add.w r9, fp, #1 + 31f30: d0f6 beq.n 31f20 <_dtoa_r+0x628> + 31f32: 3301 adds r3, #1 + 31f34: f88b 3000 strb.w r3, [fp] + 31f38: 4651 mov r1, sl + 31f3a: 4620 mov r0, r4 + 31f3c: f7fe fe68 bl 30c10 <_Bfree> + 31f40: b156 cbz r6, 31f58 <_dtoa_r+0x660> + 31f42: b12f cbz r7, 31f50 <_dtoa_r+0x658> + 31f44: 42b7 cmp r7, r6 + 31f46: d003 beq.n 31f50 <_dtoa_r+0x658> + 31f48: 4639 mov r1, r7 + 31f4a: 4620 mov r0, r4 + 31f4c: f7fe fe60 bl 30c10 <_Bfree> + 31f50: 4631 mov r1, r6 + 31f52: 4620 mov r0, r4 + 31f54: f7fe fe5c bl 30c10 <_Bfree> + 31f58: 4629 mov r1, r5 + 31f5a: 4620 mov r0, r4 + 31f5c: f7fe fe58 bl 30c10 <_Bfree> + 31f60: 2300 movs r3, #0 + 31f62: f889 3000 strb.w r3, [r9] + 31f66: e9dd 2304 ldrd r2, r3, [sp, #16] + 31f6a: 601a str r2, [r3, #0] + 31f6c: 9b1b ldr r3, [sp, #108] ; 0x6c + 31f6e: 2b00 cmp r3, #0 + 31f70: f43f acfe beq.w 31970 <_dtoa_r+0x78> + 31f74: 9800 ldr r0, [sp, #0] + 31f76: f8c3 9000 str.w r9, [r3] + 31f7a: b00f add sp, #60 ; 0x3c + 31f7c: ecbd 8b02 vpop {d8} + 31f80: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 31f84: f1c0 001c rsb r0, r0, #28 + 31f88: 9b06 ldr r3, [sp, #24] + 31f8a: 4403 add r3, r0 + 31f8c: 9306 str r3, [sp, #24] + 31f8e: 9b09 ldr r3, [sp, #36] ; 0x24 + 31f90: 4403 add r3, r0 + 31f92: 9309 str r3, [sp, #36] ; 0x24 + 31f94: 4480 add r8, r0 + 31f96: e76f b.n 31e78 <_dtoa_r+0x580> + 31f98: f1c2 0220 rsb r2, r2, #32 + 31f9c: fa06 f202 lsl.w r2, r6, r2 + 31fa0: ee07 2a10 vmov s14, r2 + 31fa4: e509 b.n 319ba <_dtoa_r+0xc2> + 31fa6: 2601 movs r6, #1 + 31fa8: e563 b.n 31a72 <_dtoa_r+0x17a> + 31faa: 4601 mov r1, r0 + 31fac: 463a mov r2, r7 + 31fae: 4620 mov r0, r4 + 31fb0: f7fe ffb6 bl 30f20 <__pow5mult> + 31fb4: 9b01 ldr r3, [sp, #4] + 31fb6: 2b01 cmp r3, #1 + 31fb8: 4682 mov sl, r0 + 31fba: f340 81c5 ble.w 32348 <_dtoa_r+0xa50> + 31fbe: 2300 movs r3, #0 + 31fc0: 9308 str r3, [sp, #32] + 31fc2: f8da 2010 ldr.w r2, [sl, #16] + 31fc6: eb0a 0282 add.w r2, sl, r2, lsl #2 + 31fca: 6910 ldr r0, [r2, #16] + 31fcc: f7fe fe7c bl 30cc8 <__hi0bits> + 31fd0: f1c0 0020 rsb r0, r0, #32 + 31fd4: e744 b.n 31e60 <_dtoa_r+0x568> + 31fd6: bf00 nop + 31fd8: 200002f8 .word 0x200002f8 + 31fdc: 20004550 .word 0x20004550 + 31fe0: 4631 mov r1, r6 + 31fe2: 2300 movs r3, #0 + 31fe4: 220a movs r2, #10 + 31fe6: 4620 mov r0, r4 + 31fe8: f7fe fe1c bl 30c24 <__multadd> + 31fec: 9b0b ldr r3, [sp, #44] ; 0x2c + 31fee: 2b00 cmp r3, #0 31ff0: 4606 mov r6, r0 - 31ff2: 4680 mov r8, r0 - 31ff4: e79a b.n 31f2c <_dtoa_r+0x734> - 31ff6: 9b01 ldr r3, [sp, #4] - 31ff8: 2b02 cmp r3, #2 - 31ffa: dc71 bgt.n 320e0 <_dtoa_r+0x8e8> - 31ffc: 9b07 ldr r3, [sp, #28] - 31ffe: 2b00 cmp r3, #0 - 32000: f47f af7b bne.w 31efa <_dtoa_r+0x702> - 32004: 9b04 ldr r3, [sp, #16] - 32006: 4651 mov r1, sl - 32008: 3301 adds r3, #1 - 3200a: 4628 mov r0, r5 - 3200c: 9304 str r3, [sp, #16] - 3200e: f7ff fb5f bl 316d0 - 32012: f8dd b000 ldr.w fp, [sp] - 32016: f100 0330 add.w r3, r0, #48 ; 0x30 - 3201a: f80b 3b01 strb.w r3, [fp], #1 - 3201e: 2700 movs r7, #0 - 32020: e6eb b.n 31dfa <_dtoa_r+0x602> - 32022: 4651 mov r1, sl - 32024: 4628 mov r0, r5 - 32026: f7fe ffd3 bl 30fd0 <__mcmp> - 3202a: 2800 cmp r0, #0 - 3202c: f6bf aeba bge.w 31da4 <_dtoa_r+0x5ac> - 32030: 4629 mov r1, r5 - 32032: 2300 movs r3, #0 - 32034: 220a movs r2, #10 - 32036: 4620 mov r0, r4 - 32038: f7fe fd74 bl 30b24 <__multadd> - 3203c: 9b04 ldr r3, [sp, #16] - 3203e: 1e5f subs r7, r3, #1 - 32040: 9b07 ldr r3, [sp, #28] - 32042: 4605 mov r5, r0 - 32044: 2b00 cmp r3, #0 - 32046: f47f af4b bne.w 31ee0 <_dtoa_r+0x6e8> - 3204a: 9b0b ldr r3, [sp, #44] ; 0x2c - 3204c: 2b00 cmp r3, #0 - 3204e: f340 8218 ble.w 32482 <_dtoa_r+0xc8a> - 32052: 4699 mov r9, r3 - 32054: e6b1 b.n 31dba <_dtoa_r+0x5c2> - 32056: 4bbc ldr r3, [pc, #752] ; (32348 <_dtoa_r+0xb50>) - 32058: 9300 str r3, [sp, #0] - 3205a: 3303 adds r3, #3 - 3205c: e4a4 b.n 319a8 <_dtoa_r+0x1b0> - 3205e: 201c movs r0, #28 - 32060: e712 b.n 31e88 <_dtoa_r+0x690> - 32062: e9dd 0102 ldrd r0, r1, [sp, #8] - 32066: 2800 cmp r0, #0 - 32068: f47f ae74 bne.w 31d54 <_dtoa_r+0x55c> - 3206c: f3c1 0213 ubfx r2, r1, #0, #20 - 32070: 2a00 cmp r2, #0 - 32072: f000 80f4 beq.w 3225e <_dtoa_r+0xa66> - 32076: 9b02 ldr r3, [sp, #8] - 32078: 9308 str r3, [sp, #32] - 3207a: e66d b.n 31d58 <_dtoa_r+0x560> - 3207c: 2301 movs r3, #1 - 3207e: 9307 str r3, [sp, #28] - 32080: 9b04 ldr r3, [sp, #16] - 32082: 445b add r3, fp - 32084: f103 0901 add.w r9, r3, #1 - 32088: f1b9 0f01 cmp.w r9, #1 - 3208c: 46cc mov ip, r9 - 3208e: 930b str r3, [sp, #44] ; 0x2c - 32090: bfb8 it lt - 32092: f04f 0c01 movlt.w ip, #1 - 32096: 2100 movs r1, #0 - 32098: f1bc 0f17 cmp.w ip, #23 - 3209c: 63e1 str r1, [r4, #60] ; 0x3c - 3209e: f77f acbc ble.w 31a1a <_dtoa_r+0x222> - 320a2: 2001 movs r0, #1 - 320a4: 2204 movs r2, #4 - 320a6: 0052 lsls r2, r2, #1 - 320a8: f102 0314 add.w r3, r2, #20 - 320ac: 4563 cmp r3, ip - 320ae: 4601 mov r1, r0 - 320b0: f100 0001 add.w r0, r0, #1 - 320b4: d9f7 bls.n 320a6 <_dtoa_r+0x8ae> - 320b6: 63e1 str r1, [r4, #60] ; 0x3c - 320b8: e4af b.n 31a1a <_dtoa_r+0x222> - 320ba: 2301 movs r3, #1 - 320bc: 9307 str r3, [sp, #28] - 320be: f1bb 0f00 cmp.w fp, #0 - 320c2: dd52 ble.n 3216a <_dtoa_r+0x972> - 320c4: f8cd b02c str.w fp, [sp, #44] ; 0x2c - 320c8: 46d9 mov r9, fp - 320ca: 46dc mov ip, fp - 320cc: e7e3 b.n 32096 <_dtoa_r+0x89e> - 320ce: 2300 movs r3, #0 - 320d0: 9307 str r3, [sp, #28] - 320d2: e7d5 b.n 32080 <_dtoa_r+0x888> - 320d4: 2300 movs r3, #0 - 320d6: 9307 str r3, [sp, #28] - 320d8: e7f1 b.n 320be <_dtoa_r+0x8c6> - 320da: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c - 320de: 9704 str r7, [sp, #16] - 320e0: f1b9 0f00 cmp.w r9, #0 - 320e4: f47f ada1 bne.w 31c2a <_dtoa_r+0x432> - 320e8: 4651 mov r1, sl - 320ea: 464b mov r3, r9 - 320ec: 2205 movs r2, #5 - 320ee: 4620 mov r0, r4 - 320f0: f7fe fd18 bl 30b24 <__multadd> - 320f4: 4601 mov r1, r0 - 320f6: 4682 mov sl, r0 - 320f8: 4628 mov r0, r5 - 320fa: f7fe ff69 bl 30fd0 <__mcmp> - 320fe: 2800 cmp r0, #0 - 32100: f77f ad93 ble.w 31c2a <_dtoa_r+0x432> + 31ff2: f340 82ce ble.w 32592 <_dtoa_r+0xc9a> + 31ff6: 9704 str r7, [sp, #16] + 31ff8: 4699 mov r9, r3 + 31ffa: 9b09 ldr r3, [sp, #36] ; 0x24 + 31ffc: 2b00 cmp r3, #0 + 31ffe: dd05 ble.n 3200c <_dtoa_r+0x714> + 32000: 4631 mov r1, r6 + 32002: 461a mov r2, r3 + 32004: 4620 mov r0, r4 + 32006: f7fe ffeb bl 30fe0 <__lshift> + 3200a: 4606 mov r6, r0 + 3200c: 9b08 ldr r3, [sp, #32] + 3200e: 2b00 cmp r3, #0 + 32010: f040 81eb bne.w 323ea <_dtoa_r+0xaf2> + 32014: 46b0 mov r8, r6 + 32016: 9b02 ldr r3, [sp, #8] + 32018: 9f00 ldr r7, [sp, #0] + 3201a: f003 0201 and.w r2, r3, #1 + 3201e: 1e7b subs r3, r7, #1 + 32020: 444b add r3, r9 + 32022: 9308 str r3, [sp, #32] + 32024: 9b01 ldr r3, [sp, #4] + 32026: 920a str r2, [sp, #40] ; 0x28 + 32028: 4313 orrs r3, r2 + 3202a: 9309 str r3, [sp, #36] ; 0x24 + 3202c: 4651 mov r1, sl + 3202e: 4628 mov r0, r5 + 32030: f7ff fbce bl 317d0 + 32034: 4631 mov r1, r6 + 32036: 4683 mov fp, r0 + 32038: 4628 mov r0, r5 + 3203a: f7ff f849 bl 310d0 <__mcmp> + 3203e: 4642 mov r2, r8 + 32040: 4651 mov r1, sl + 32042: 4681 mov r9, r0 + 32044: 4620 mov r0, r4 + 32046: f7ff f865 bl 31114 <__mdiff> + 3204a: 68c2 ldr r2, [r0, #12] + 3204c: 4601 mov r1, r0 + 3204e: f10b 0330 add.w r3, fp, #48 ; 0x30 + 32052: 2a00 cmp r2, #0 + 32054: d142 bne.n 320dc <_dtoa_r+0x7e4> + 32056: e9cd 0306 strd r0, r3, [sp, #24] + 3205a: 4628 mov r0, r5 + 3205c: f7ff f838 bl 310d0 <__mcmp> + 32060: 9906 ldr r1, [sp, #24] + 32062: 9002 str r0, [sp, #8] + 32064: 4620 mov r0, r4 + 32066: f7fe fdd3 bl 30c10 <_Bfree> + 3206a: 9a02 ldr r2, [sp, #8] + 3206c: 9b07 ldr r3, [sp, #28] + 3206e: b91a cbnz r2, 32078 <_dtoa_r+0x780> + 32070: 9909 ldr r1, [sp, #36] ; 0x24 + 32072: 2900 cmp r1, #0 + 32074: f000 827e beq.w 32574 <_dtoa_r+0xc7c> + 32078: f1b9 0f00 cmp.w r9, #0 + 3207c: f2c0 8183 blt.w 32386 <_dtoa_r+0xa8e> + 32080: 9901 ldr r1, [sp, #4] + 32082: ea49 0901 orr.w r9, r9, r1 + 32086: 990a ldr r1, [sp, #40] ; 0x28 + 32088: ea51 0909 orrs.w r9, r1, r9 + 3208c: f000 817b beq.w 32386 <_dtoa_r+0xa8e> + 32090: 2a00 cmp r2, #0 + 32092: f300 81c6 bgt.w 32422 <_dtoa_r+0xb2a> + 32096: 9a08 ldr r2, [sp, #32] + 32098: 703b strb r3, [r7, #0] + 3209a: f107 0901 add.w r9, r7, #1 + 3209e: 4297 cmp r7, r2 + 320a0: 46cb mov fp, r9 + 320a2: f000 81c4 beq.w 3242e <_dtoa_r+0xb36> + 320a6: 4629 mov r1, r5 + 320a8: 2300 movs r3, #0 + 320aa: 220a movs r2, #10 + 320ac: 4620 mov r0, r4 + 320ae: f7fe fdb9 bl 30c24 <__multadd> + 320b2: 4546 cmp r6, r8 + 320b4: 4605 mov r5, r0 + 320b6: 4631 mov r1, r6 + 320b8: f04f 0300 mov.w r3, #0 + 320bc: f04f 020a mov.w r2, #10 + 320c0: 4620 mov r0, r4 + 320c2: d012 beq.n 320ea <_dtoa_r+0x7f2> + 320c4: f7fe fdae bl 30c24 <__multadd> + 320c8: 4641 mov r1, r8 + 320ca: 4606 mov r6, r0 + 320cc: 2300 movs r3, #0 + 320ce: 220a movs r2, #10 + 320d0: 4620 mov r0, r4 + 320d2: f7fe fda7 bl 30c24 <__multadd> + 320d6: 464f mov r7, r9 + 320d8: 4680 mov r8, r0 + 320da: e7a7 b.n 3202c <_dtoa_r+0x734> + 320dc: 4620 mov r0, r4 + 320de: 9302 str r3, [sp, #8] + 320e0: f7fe fd96 bl 30c10 <_Bfree> + 320e4: 9b02 ldr r3, [sp, #8] + 320e6: 2201 movs r2, #1 + 320e8: e7c6 b.n 32078 <_dtoa_r+0x780> + 320ea: f7fe fd9b bl 30c24 <__multadd> + 320ee: 464f mov r7, r9 + 320f0: 4606 mov r6, r0 + 320f2: 4680 mov r8, r0 + 320f4: e79a b.n 3202c <_dtoa_r+0x734> + 320f6: 9b01 ldr r3, [sp, #4] + 320f8: 2b02 cmp r3, #2 + 320fa: dc71 bgt.n 321e0 <_dtoa_r+0x8e8> + 320fc: 9b07 ldr r3, [sp, #28] + 320fe: 2b00 cmp r3, #0 + 32100: f47f af7b bne.w 31ffa <_dtoa_r+0x702> 32104: 9b04 ldr r3, [sp, #16] - 32106: f103 0b01 add.w fp, r3, #1 - 3210a: 9b00 ldr r3, [sp, #0] - 3210c: 2231 movs r2, #49 ; 0x31 - 3210e: 4698 mov r8, r3 - 32110: f803 2b01 strb.w r2, [r3], #1 - 32114: 9300 str r3, [sp, #0] - 32116: 4651 mov r1, sl - 32118: 4620 mov r0, r4 - 3211a: f7fe fcf9 bl 30b10 <_Bfree> - 3211e: f10b 0301 add.w r3, fp, #1 - 32122: f8dd 9000 ldr.w r9, [sp] - 32126: 9304 str r3, [sp, #16] - 32128: f8cd 8000 str.w r8, [sp] - 3212c: 2e00 cmp r6, #0 - 3212e: f47f ae8f bne.w 31e50 <_dtoa_r+0x658> - 32132: e691 b.n 31e58 <_dtoa_r+0x660> - 32134: eba3 0a0a sub.w sl, r3, sl - 32138: e5c5 b.n 31cc6 <_dtoa_r+0x4ce> - 3213a: 4631 mov r1, r6 - 3213c: 4652 mov r2, sl - 3213e: 4620 mov r0, r4 - 32140: f7fe fe6e bl 30e20 <__pow5mult> - 32144: 462a mov r2, r5 - 32146: 4601 mov r1, r0 - 32148: 4606 mov r6, r0 - 3214a: 4620 mov r0, r4 - 3214c: f7fe fdba bl 30cc4 <__multiply> - 32150: 4629 mov r1, r5 - 32152: 4605 mov r5, r0 - 32154: 4620 mov r0, r4 - 32156: f7fe fcdb bl 30b10 <_Bfree> - 3215a: e5ea b.n 31d32 <_dtoa_r+0x53a> - 3215c: 2002 movs r0, #2 - 3215e: eeb0 5b48 vmov.f64 d5, d8 - 32162: e481 b.n 31a68 <_dtoa_r+0x270> - 32164: f1c0 003c rsb r0, r0, #60 ; 0x3c - 32168: e68e b.n 31e88 <_dtoa_r+0x690> - 3216a: f04f 0b01 mov.w fp, #1 - 3216e: 46d9 mov r9, fp - 32170: e44f b.n 31a12 <_dtoa_r+0x21a> - 32172: d103 bne.n 3217c <_dtoa_r+0x984> - 32174: 9b01 ldr r3, [sp, #4] - 32176: 07db lsls r3, r3, #31 - 32178: f53f ae4c bmi.w 31e14 <_dtoa_r+0x61c> - 3217c: 46d9 mov r9, fp - 3217e: f81b 3d01 ldrb.w r3, [fp, #-1]! - 32182: 2b30 cmp r3, #48 ; 0x30 - 32184: d0fa beq.n 3217c <_dtoa_r+0x984> - 32186: e657 b.n 31e38 <_dtoa_r+0x640> - 32188: 9b04 ldr r3, [sp, #16] - 3218a: 9a00 ldr r2, [sp, #0] - 3218c: 3301 adds r3, #1 - 3218e: 9304 str r3, [sp, #16] - 32190: 2331 movs r3, #49 ; 0x31 - 32192: 7013 strb r3, [r2, #0] - 32194: e650 b.n 31e38 <_dtoa_r+0x640> - 32196: f1ba 0f00 cmp.w sl, #0 - 3219a: f000 8123 beq.w 323e4 <_dtoa_r+0xbec> - 3219e: f202 4233 addw r2, r2, #1075 ; 0x433 - 321a2: 9b06 ldr r3, [sp, #24] - 321a4: 9309 str r3, [sp, #36] ; 0x24 - 321a6: 4413 add r3, r2 - 321a8: f8dd a020 ldr.w sl, [sp, #32] - 321ac: 9306 str r3, [sp, #24] - 321ae: 4490 add r8, r2 - 321b0: e592 b.n 31cd8 <_dtoa_r+0x4e0> - 321b2: ee07 0a90 vmov s15, r0 - 321b6: eeb1 5b0c vmov.f64 d5, #28 ; 0x40e00000 7.0 - 321ba: eeb8 7be7 vcvt.f64.s32 d7, s15 - 321be: eea6 5b07 vfma.f64 d5, d6, d7 - 321c2: ee15 2a90 vmov r2, s11 - 321c6: ec51 0b15 vmov r0, r1, d5 - 321ca: f1a2 7150 sub.w r1, r2, #54525952 ; 0x3400000 - 321ce: ec41 0b15 vmov d5, r0, r1 - 321d2: eeb1 7b04 vmov.f64 d7, #20 ; 0x40a00000 5.0 - 321d6: ee36 7b47 vsub.f64 d7, d6, d7 - 321da: eeb4 7bc5 vcmpe.f64 d7, d5 - 321de: eef1 fa10 vmrs APSR_nzcv, fpscr - 321e2: f300 8137 bgt.w 32454 <_dtoa_r+0xc5c> - 321e6: eeb1 5b45 vneg.f64 d5, d5 - 321ea: eeb4 7bc5 vcmpe.f64 d7, d5 - 321ee: eef1 fa10 vmrs APSR_nzcv, fpscr - 321f2: f57f acfb bpl.w 31bec <_dtoa_r+0x3f4> - 321f6: f04f 0a00 mov.w sl, #0 - 321fa: 4656 mov r6, sl - 321fc: e515 b.n 31c2a <_dtoa_r+0x432> - 321fe: f000 80f5 beq.w 323ec <_dtoa_r+0xbf4> - 32202: 9b04 ldr r3, [sp, #16] - 32204: 4951 ldr r1, [pc, #324] ; (3234c <_dtoa_r+0xb54>) - 32206: 425a negs r2, r3 - 32208: f002 000f and.w r0, r2, #15 - 3220c: eb01 01c0 add.w r1, r1, r0, lsl #3 - 32210: ed91 6b00 vldr d6, [r1] - 32214: 1112 asrs r2, r2, #4 - 32216: ee28 6b06 vmul.f64 d6, d8, d6 - 3221a: f000 8142 beq.w 324a2 <_dtoa_r+0xcaa> - 3221e: eeb0 7b46 vmov.f64 d7, d6 - 32222: 494b ldr r1, [pc, #300] ; (32350 <_dtoa_r+0xb58>) - 32224: 2600 movs r6, #0 - 32226: 2002 movs r0, #2 - 32228: 07d3 lsls r3, r2, #31 - 3222a: d505 bpl.n 32238 <_dtoa_r+0xa40> - 3222c: ed91 5b00 vldr d5, [r1] - 32230: 3001 adds r0, #1 - 32232: 2601 movs r6, #1 - 32234: ee27 7b05 vmul.f64 d7, d7, d5 - 32238: 1052 asrs r2, r2, #1 - 3223a: f101 0108 add.w r1, r1, #8 - 3223e: d1f3 bne.n 32228 <_dtoa_r+0xa30> - 32240: 2e00 cmp r6, #0 - 32242: fe06 6b07 vseleq.f64 d6, d6, d7 - 32246: e41e b.n 31a86 <_dtoa_r+0x28e> - 32248: 9b02 ldr r3, [sp, #8] - 3224a: 2b00 cmp r3, #0 - 3224c: f47f ae37 bne.w 31ebe <_dtoa_r+0x6c6> - 32250: e9dd 0102 ldrd r0, r1, [sp, #8] - 32254: f3c1 0213 ubfx r2, r1, #0, #20 - 32258: 2a00 cmp r2, #0 - 3225a: f040 8137 bne.w 324cc <_dtoa_r+0xcd4> - 3225e: 4a3d ldr r2, [pc, #244] ; (32354 <_dtoa_r+0xb5c>) - 32260: 400a ands r2, r1 - 32262: 2a00 cmp r2, #0 - 32264: f000 80fa beq.w 3245c <_dtoa_r+0xc64> - 32268: 9b06 ldr r3, [sp, #24] - 3226a: 3301 adds r3, #1 - 3226c: 9306 str r3, [sp, #24] - 3226e: 2301 movs r3, #1 - 32270: f108 0801 add.w r8, r8, #1 - 32274: 9308 str r3, [sp, #32] - 32276: e56f b.n 31d58 <_dtoa_r+0x560> - 32278: 4629 mov r1, r5 - 3227a: 9a08 ldr r2, [sp, #32] - 3227c: 4620 mov r0, r4 - 3227e: f7fe fdcf bl 30e20 <__pow5mult> - 32282: 4605 mov r5, r0 - 32284: e55a b.n 31d3c <_dtoa_r+0x544> - 32286: 2a00 cmp r2, #0 - 32288: dd12 ble.n 322b0 <_dtoa_r+0xab8> - 3228a: 4629 mov r1, r5 - 3228c: 2201 movs r2, #1 - 3228e: 4620 mov r0, r4 - 32290: 9301 str r3, [sp, #4] - 32292: f7fe fe25 bl 30ee0 <__lshift> - 32296: 4651 mov r1, sl - 32298: 4605 mov r5, r0 - 3229a: f7fe fe99 bl 30fd0 <__mcmp> - 3229e: 2800 cmp r0, #0 - 322a0: 9b01 ldr r3, [sp, #4] - 322a2: f340 80e1 ble.w 32468 <_dtoa_r+0xc70> - 322a6: 2b39 cmp r3, #57 ; 0x39 - 322a8: f000 80ca beq.w 32440 <_dtoa_r+0xc48> - 322ac: f10b 0331 add.w r3, fp, #49 ; 0x31 - 322b0: 46b9 mov r9, r7 - 322b2: f809 3b01 strb.w r3, [r9], #1 - 322b6: 9b04 ldr r3, [sp, #16] - 322b8: 3301 adds r3, #1 - 322ba: 4637 mov r7, r6 - 322bc: 9304 str r3, [sp, #16] - 322be: 4646 mov r6, r8 - 322c0: e5ba b.n 31e38 <_dtoa_r+0x640> - 322c2: ee38 8b08 vadd.f64 d8, d8, d8 - 322c6: eeb4 8bc6 vcmpe.f64 d8, d6 - 322ca: eef1 fa10 vmrs APSR_nzcv, fpscr - 322ce: dc0a bgt.n 322e6 <_dtoa_r+0xaee> - 322d0: eeb4 8b46 vcmp.f64 d8, d6 - 322d4: eef1 fa10 vmrs APSR_nzcv, fpscr - 322d8: f47f acdc bne.w 31c94 <_dtoa_r+0x49c> - 322dc: ee17 3a10 vmov r3, s14 - 322e0: 07d8 lsls r0, r3, #31 - 322e2: f57f acd7 bpl.w 31c94 <_dtoa_r+0x49c> - 322e6: 9a00 ldr r2, [sp, #0] - 322e8: e454 b.n 31b94 <_dtoa_r+0x39c> - 322ea: 6871 ldr r1, [r6, #4] - 322ec: 4620 mov r0, r4 - 322ee: f7fe fbe9 bl 30ac4 <_Balloc> - 322f2: 4607 mov r7, r0 - 322f4: 2800 cmp r0, #0 - 322f6: f000 80de beq.w 324b6 <_dtoa_r+0xcbe> - 322fa: 6933 ldr r3, [r6, #16] - 322fc: 3302 adds r3, #2 - 322fe: 009a lsls r2, r3, #2 - 32300: f106 010c add.w r1, r6, #12 - 32304: 300c adds r0, #12 - 32306: f7f8 f9ff bl 2a708 - 3230a: 4639 mov r1, r7 - 3230c: 2201 movs r2, #1 - 3230e: 4620 mov r0, r4 - 32310: f7fe fde6 bl 30ee0 <__lshift> - 32314: 4680 mov r8, r0 - 32316: e5fe b.n 31f16 <_dtoa_r+0x71e> - 32318: 9b06 ldr r3, [sp, #24] - 3231a: eba3 0309 sub.w r3, r3, r9 - 3231e: 9309 str r3, [sp, #36] ; 0x24 - 32320: e4da b.n 31cd8 <_dtoa_r+0x4e0> - 32322: 2b39 cmp r3, #57 ; 0x39 - 32324: f000 808c beq.w 32440 <_dtoa_r+0xc48> - 32328: 46b9 mov r9, r7 - 3232a: 3301 adds r3, #1 - 3232c: e7c1 b.n 322b2 <_dtoa_r+0xaba> - 3232e: 9a04 ldr r2, [sp, #16] - 32330: 3201 adds r2, #1 - 32332: 4637 mov r7, r6 - 32334: 9204 str r2, [sp, #16] - 32336: 4646 mov r6, r8 - 32338: e55f b.n 31dfa <_dtoa_r+0x602> - 3233a: 4629 mov r1, r5 - 3233c: 4620 mov r0, r4 - 3233e: f7fe fd6f bl 30e20 <__pow5mult> - 32342: 4605 mov r5, r0 - 32344: e4fa b.n 31d3c <_dtoa_r+0x544> - 32346: bf00 nop - 32348: 200043f0 .word 0x200043f0 - 3234c: 200002f8 .word 0x200002f8 - 32350: 200002d0 .word 0x200002d0 - 32354: 7ff00000 .word 0x7ff00000 - 32358: 4b5e ldr r3, [pc, #376] ; (324d4 <_dtoa_r+0xcdc>) - 3235a: eefd 5bc6 vcvt.s32.f64 s11, d6 - 3235e: eb03 0cc2 add.w ip, r3, r2, lsl #3 - 32362: ed1c 3b02 vldr d3, [ip, #-8] - 32366: eeb8 7be5 vcvt.f64.s32 d7, s11 - 3236a: ee36 7b47 vsub.f64 d7, d6, d7 - 3236e: ec41 0b16 vmov d6, r0, r1 - 32372: ee15 1a90 vmov r1, s11 - 32376: ee23 3b06 vmul.f64 d3, d3, d6 - 3237a: 9800 ldr r0, [sp, #0] - 3237c: 3130 adds r1, #48 ; 0x30 - 3237e: 2a01 cmp r2, #1 - 32380: f800 1b01 strb.w r1, [r0], #1 - 32384: f000 8083 beq.w 3248e <_dtoa_r+0xc96> - 32388: eeb2 4b04 vmov.f64 d4, #36 ; 0x41200000 10.0 - 3238c: 9b00 ldr r3, [sp, #0] - 3238e: 1899 adds r1, r3, r2 - 32390: ee27 7b04 vmul.f64 d7, d7, d4 - 32394: eefd 6bc7 vcvt.s32.f64 s13, d7 - 32398: ee16 3a90 vmov r3, s13 - 3239c: 3330 adds r3, #48 ; 0x30 - 3239e: f800 3b01 strb.w r3, [r0], #1 - 323a2: 4281 cmp r1, r0 - 323a4: eeb8 5be6 vcvt.f64.s32 d5, s13 - 323a8: ee37 7b45 vsub.f64 d7, d7, d5 - 323ac: d1f0 bne.n 32390 <_dtoa_r+0xb98> - 323ae: eeb6 6b00 vmov.f64 d6, #96 ; 0x3f000000 0.5 - 323b2: ee33 5b06 vadd.f64 d5, d3, d6 - 323b6: eeb4 5bc7 vcmpe.f64 d5, d7 - 323ba: eef1 fa10 vmrs APSR_nzcv, fpscr - 323be: f53f abe3 bmi.w 31b88 <_dtoa_r+0x390> - 323c2: ee36 6b43 vsub.f64 d6, d6, d3 - 323c6: eeb4 6bc7 vcmpe.f64 d6, d7 + 32106: 4651 mov r1, sl + 32108: 3301 adds r3, #1 + 3210a: 4628 mov r0, r5 + 3210c: 9304 str r3, [sp, #16] + 3210e: f7ff fb5f bl 317d0 + 32112: f8dd b000 ldr.w fp, [sp] + 32116: f100 0330 add.w r3, r0, #48 ; 0x30 + 3211a: f80b 3b01 strb.w r3, [fp], #1 + 3211e: 2700 movs r7, #0 + 32120: e6eb b.n 31efa <_dtoa_r+0x602> + 32122: 4651 mov r1, sl + 32124: 4628 mov r0, r5 + 32126: f7fe ffd3 bl 310d0 <__mcmp> + 3212a: 2800 cmp r0, #0 + 3212c: f6bf aeba bge.w 31ea4 <_dtoa_r+0x5ac> + 32130: 4629 mov r1, r5 + 32132: 2300 movs r3, #0 + 32134: 220a movs r2, #10 + 32136: 4620 mov r0, r4 + 32138: f7fe fd74 bl 30c24 <__multadd> + 3213c: 9b04 ldr r3, [sp, #16] + 3213e: 1e5f subs r7, r3, #1 + 32140: 9b07 ldr r3, [sp, #28] + 32142: 4605 mov r5, r0 + 32144: 2b00 cmp r3, #0 + 32146: f47f af4b bne.w 31fe0 <_dtoa_r+0x6e8> + 3214a: 9b0b ldr r3, [sp, #44] ; 0x2c + 3214c: 2b00 cmp r3, #0 + 3214e: f340 8218 ble.w 32582 <_dtoa_r+0xc8a> + 32152: 4699 mov r9, r3 + 32154: e6b1 b.n 31eba <_dtoa_r+0x5c2> + 32156: 4bbc ldr r3, [pc, #752] ; (32448 <_dtoa_r+0xb50>) + 32158: 9300 str r3, [sp, #0] + 3215a: 3303 adds r3, #3 + 3215c: e4a4 b.n 31aa8 <_dtoa_r+0x1b0> + 3215e: 201c movs r0, #28 + 32160: e712 b.n 31f88 <_dtoa_r+0x690> + 32162: e9dd 0102 ldrd r0, r1, [sp, #8] + 32166: 2800 cmp r0, #0 + 32168: f47f ae74 bne.w 31e54 <_dtoa_r+0x55c> + 3216c: f3c1 0213 ubfx r2, r1, #0, #20 + 32170: 2a00 cmp r2, #0 + 32172: f000 80f4 beq.w 3235e <_dtoa_r+0xa66> + 32176: 9b02 ldr r3, [sp, #8] + 32178: 9308 str r3, [sp, #32] + 3217a: e66d b.n 31e58 <_dtoa_r+0x560> + 3217c: 2301 movs r3, #1 + 3217e: 9307 str r3, [sp, #28] + 32180: 9b04 ldr r3, [sp, #16] + 32182: 445b add r3, fp + 32184: f103 0901 add.w r9, r3, #1 + 32188: f1b9 0f01 cmp.w r9, #1 + 3218c: 46cc mov ip, r9 + 3218e: 930b str r3, [sp, #44] ; 0x2c + 32190: bfb8 it lt + 32192: f04f 0c01 movlt.w ip, #1 + 32196: 2100 movs r1, #0 + 32198: f1bc 0f17 cmp.w ip, #23 + 3219c: 63e1 str r1, [r4, #60] ; 0x3c + 3219e: f77f acbc ble.w 31b1a <_dtoa_r+0x222> + 321a2: 2001 movs r0, #1 + 321a4: 2204 movs r2, #4 + 321a6: 0052 lsls r2, r2, #1 + 321a8: f102 0314 add.w r3, r2, #20 + 321ac: 4563 cmp r3, ip + 321ae: 4601 mov r1, r0 + 321b0: f100 0001 add.w r0, r0, #1 + 321b4: d9f7 bls.n 321a6 <_dtoa_r+0x8ae> + 321b6: 63e1 str r1, [r4, #60] ; 0x3c + 321b8: e4af b.n 31b1a <_dtoa_r+0x222> + 321ba: 2301 movs r3, #1 + 321bc: 9307 str r3, [sp, #28] + 321be: f1bb 0f00 cmp.w fp, #0 + 321c2: dd52 ble.n 3226a <_dtoa_r+0x972> + 321c4: f8cd b02c str.w fp, [sp, #44] ; 0x2c + 321c8: 46d9 mov r9, fp + 321ca: 46dc mov ip, fp + 321cc: e7e3 b.n 32196 <_dtoa_r+0x89e> + 321ce: 2300 movs r3, #0 + 321d0: 9307 str r3, [sp, #28] + 321d2: e7d5 b.n 32180 <_dtoa_r+0x888> + 321d4: 2300 movs r3, #0 + 321d6: 9307 str r3, [sp, #28] + 321d8: e7f1 b.n 321be <_dtoa_r+0x8c6> + 321da: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c + 321de: 9704 str r7, [sp, #16] + 321e0: f1b9 0f00 cmp.w r9, #0 + 321e4: f47f ada1 bne.w 31d2a <_dtoa_r+0x432> + 321e8: 4651 mov r1, sl + 321ea: 464b mov r3, r9 + 321ec: 2205 movs r2, #5 + 321ee: 4620 mov r0, r4 + 321f0: f7fe fd18 bl 30c24 <__multadd> + 321f4: 4601 mov r1, r0 + 321f6: 4682 mov sl, r0 + 321f8: 4628 mov r0, r5 + 321fa: f7fe ff69 bl 310d0 <__mcmp> + 321fe: 2800 cmp r0, #0 + 32200: f77f ad93 ble.w 31d2a <_dtoa_r+0x432> + 32204: 9b04 ldr r3, [sp, #16] + 32206: f103 0b01 add.w fp, r3, #1 + 3220a: 9b00 ldr r3, [sp, #0] + 3220c: 2231 movs r2, #49 ; 0x31 + 3220e: 4698 mov r8, r3 + 32210: f803 2b01 strb.w r2, [r3], #1 + 32214: 9300 str r3, [sp, #0] + 32216: 4651 mov r1, sl + 32218: 4620 mov r0, r4 + 3221a: f7fe fcf9 bl 30c10 <_Bfree> + 3221e: f10b 0301 add.w r3, fp, #1 + 32222: f8dd 9000 ldr.w r9, [sp] + 32226: 9304 str r3, [sp, #16] + 32228: f8cd 8000 str.w r8, [sp] + 3222c: 2e00 cmp r6, #0 + 3222e: f47f ae8f bne.w 31f50 <_dtoa_r+0x658> + 32232: e691 b.n 31f58 <_dtoa_r+0x660> + 32234: eba3 0a0a sub.w sl, r3, sl + 32238: e5c5 b.n 31dc6 <_dtoa_r+0x4ce> + 3223a: 4631 mov r1, r6 + 3223c: 4652 mov r2, sl + 3223e: 4620 mov r0, r4 + 32240: f7fe fe6e bl 30f20 <__pow5mult> + 32244: 462a mov r2, r5 + 32246: 4601 mov r1, r0 + 32248: 4606 mov r6, r0 + 3224a: 4620 mov r0, r4 + 3224c: f7fe fdba bl 30dc4 <__multiply> + 32250: 4629 mov r1, r5 + 32252: 4605 mov r5, r0 + 32254: 4620 mov r0, r4 + 32256: f7fe fcdb bl 30c10 <_Bfree> + 3225a: e5ea b.n 31e32 <_dtoa_r+0x53a> + 3225c: 2002 movs r0, #2 + 3225e: eeb0 5b48 vmov.f64 d5, d8 + 32262: e481 b.n 31b68 <_dtoa_r+0x270> + 32264: f1c0 003c rsb r0, r0, #60 ; 0x3c + 32268: e68e b.n 31f88 <_dtoa_r+0x690> + 3226a: f04f 0b01 mov.w fp, #1 + 3226e: 46d9 mov r9, fp + 32270: e44f b.n 31b12 <_dtoa_r+0x21a> + 32272: d103 bne.n 3227c <_dtoa_r+0x984> + 32274: 9b01 ldr r3, [sp, #4] + 32276: 07db lsls r3, r3, #31 + 32278: f53f ae4c bmi.w 31f14 <_dtoa_r+0x61c> + 3227c: 46d9 mov r9, fp + 3227e: f81b 3d01 ldrb.w r3, [fp, #-1]! + 32282: 2b30 cmp r3, #48 ; 0x30 + 32284: d0fa beq.n 3227c <_dtoa_r+0x984> + 32286: e657 b.n 31f38 <_dtoa_r+0x640> + 32288: 9b04 ldr r3, [sp, #16] + 3228a: 9a00 ldr r2, [sp, #0] + 3228c: 3301 adds r3, #1 + 3228e: 9304 str r3, [sp, #16] + 32290: 2331 movs r3, #49 ; 0x31 + 32292: 7013 strb r3, [r2, #0] + 32294: e650 b.n 31f38 <_dtoa_r+0x640> + 32296: f1ba 0f00 cmp.w sl, #0 + 3229a: f000 8123 beq.w 324e4 <_dtoa_r+0xbec> + 3229e: f202 4233 addw r2, r2, #1075 ; 0x433 + 322a2: 9b06 ldr r3, [sp, #24] + 322a4: 9309 str r3, [sp, #36] ; 0x24 + 322a6: 4413 add r3, r2 + 322a8: f8dd a020 ldr.w sl, [sp, #32] + 322ac: 9306 str r3, [sp, #24] + 322ae: 4490 add r8, r2 + 322b0: e592 b.n 31dd8 <_dtoa_r+0x4e0> + 322b2: ee07 0a90 vmov s15, r0 + 322b6: eeb1 5b0c vmov.f64 d5, #28 ; 0x40e00000 7.0 + 322ba: eeb8 7be7 vcvt.f64.s32 d7, s15 + 322be: eea6 5b07 vfma.f64 d5, d6, d7 + 322c2: ee15 2a90 vmov r2, s11 + 322c6: ec51 0b15 vmov r0, r1, d5 + 322ca: f1a2 7150 sub.w r1, r2, #54525952 ; 0x3400000 + 322ce: ec41 0b15 vmov d5, r0, r1 + 322d2: eeb1 7b04 vmov.f64 d7, #20 ; 0x40a00000 5.0 + 322d6: ee36 7b47 vsub.f64 d7, d6, d7 + 322da: eeb4 7bc5 vcmpe.f64 d7, d5 + 322de: eef1 fa10 vmrs APSR_nzcv, fpscr + 322e2: f300 8137 bgt.w 32554 <_dtoa_r+0xc5c> + 322e6: eeb1 5b45 vneg.f64 d5, d5 + 322ea: eeb4 7bc5 vcmpe.f64 d7, d5 + 322ee: eef1 fa10 vmrs APSR_nzcv, fpscr + 322f2: f57f acfb bpl.w 31cec <_dtoa_r+0x3f4> + 322f6: f04f 0a00 mov.w sl, #0 + 322fa: 4656 mov r6, sl + 322fc: e515 b.n 31d2a <_dtoa_r+0x432> + 322fe: f000 80f5 beq.w 324ec <_dtoa_r+0xbf4> + 32302: 9b04 ldr r3, [sp, #16] + 32304: 4951 ldr r1, [pc, #324] ; (3244c <_dtoa_r+0xb54>) + 32306: 425a negs r2, r3 + 32308: f002 000f and.w r0, r2, #15 + 3230c: eb01 01c0 add.w r1, r1, r0, lsl #3 + 32310: ed91 6b00 vldr d6, [r1] + 32314: 1112 asrs r2, r2, #4 + 32316: ee28 6b06 vmul.f64 d6, d8, d6 + 3231a: f000 8142 beq.w 325a2 <_dtoa_r+0xcaa> + 3231e: eeb0 7b46 vmov.f64 d7, d6 + 32322: 494b ldr r1, [pc, #300] ; (32450 <_dtoa_r+0xb58>) + 32324: 2600 movs r6, #0 + 32326: 2002 movs r0, #2 + 32328: 07d3 lsls r3, r2, #31 + 3232a: d505 bpl.n 32338 <_dtoa_r+0xa40> + 3232c: ed91 5b00 vldr d5, [r1] + 32330: 3001 adds r0, #1 + 32332: 2601 movs r6, #1 + 32334: ee27 7b05 vmul.f64 d7, d7, d5 + 32338: 1052 asrs r2, r2, #1 + 3233a: f101 0108 add.w r1, r1, #8 + 3233e: d1f3 bne.n 32328 <_dtoa_r+0xa30> + 32340: 2e00 cmp r6, #0 + 32342: fe06 6b07 vseleq.f64 d6, d6, d7 + 32346: e41e b.n 31b86 <_dtoa_r+0x28e> + 32348: 9b02 ldr r3, [sp, #8] + 3234a: 2b00 cmp r3, #0 + 3234c: f47f ae37 bne.w 31fbe <_dtoa_r+0x6c6> + 32350: e9dd 0102 ldrd r0, r1, [sp, #8] + 32354: f3c1 0213 ubfx r2, r1, #0, #20 + 32358: 2a00 cmp r2, #0 + 3235a: f040 8137 bne.w 325cc <_dtoa_r+0xcd4> + 3235e: 4a3d ldr r2, [pc, #244] ; (32454 <_dtoa_r+0xb5c>) + 32360: 400a ands r2, r1 + 32362: 2a00 cmp r2, #0 + 32364: f000 80fa beq.w 3255c <_dtoa_r+0xc64> + 32368: 9b06 ldr r3, [sp, #24] + 3236a: 3301 adds r3, #1 + 3236c: 9306 str r3, [sp, #24] + 3236e: 2301 movs r3, #1 + 32370: f108 0801 add.w r8, r8, #1 + 32374: 9308 str r3, [sp, #32] + 32376: e56f b.n 31e58 <_dtoa_r+0x560> + 32378: 4629 mov r1, r5 + 3237a: 9a08 ldr r2, [sp, #32] + 3237c: 4620 mov r0, r4 + 3237e: f7fe fdcf bl 30f20 <__pow5mult> + 32382: 4605 mov r5, r0 + 32384: e55a b.n 31e3c <_dtoa_r+0x544> + 32386: 2a00 cmp r2, #0 + 32388: dd12 ble.n 323b0 <_dtoa_r+0xab8> + 3238a: 4629 mov r1, r5 + 3238c: 2201 movs r2, #1 + 3238e: 4620 mov r0, r4 + 32390: 9301 str r3, [sp, #4] + 32392: f7fe fe25 bl 30fe0 <__lshift> + 32396: 4651 mov r1, sl + 32398: 4605 mov r5, r0 + 3239a: f7fe fe99 bl 310d0 <__mcmp> + 3239e: 2800 cmp r0, #0 + 323a0: 9b01 ldr r3, [sp, #4] + 323a2: f340 80e1 ble.w 32568 <_dtoa_r+0xc70> + 323a6: 2b39 cmp r3, #57 ; 0x39 + 323a8: f000 80ca beq.w 32540 <_dtoa_r+0xc48> + 323ac: f10b 0331 add.w r3, fp, #49 ; 0x31 + 323b0: 46b9 mov r9, r7 + 323b2: f809 3b01 strb.w r3, [r9], #1 + 323b6: 9b04 ldr r3, [sp, #16] + 323b8: 3301 adds r3, #1 + 323ba: 4637 mov r7, r6 + 323bc: 9304 str r3, [sp, #16] + 323be: 4646 mov r6, r8 + 323c0: e5ba b.n 31f38 <_dtoa_r+0x640> + 323c2: ee38 8b08 vadd.f64 d8, d8, d8 + 323c6: eeb4 8bc6 vcmpe.f64 d8, d6 323ca: eef1 fa10 vmrs APSR_nzcv, fpscr - 323ce: f77f ac0d ble.w 31bec <_dtoa_r+0x3f4> - 323d2: 4689 mov r9, r1 - 323d4: 3901 subs r1, #1 - 323d6: f819 3c01 ldrb.w r3, [r9, #-1] - 323da: 2b30 cmp r3, #48 ; 0x30 - 323dc: d0f9 beq.n 323d2 <_dtoa_r+0xbda> - 323de: 1c73 adds r3, r6, #1 - 323e0: 9304 str r3, [sp, #16] - 323e2: e539 b.n 31e58 <_dtoa_r+0x660> - 323e4: 9a0c ldr r2, [sp, #48] ; 0x30 - 323e6: f1c2 0236 rsb r2, r2, #54 ; 0x36 - 323ea: e6da b.n 321a2 <_dtoa_r+0x9aa> - 323ec: 2002 movs r0, #2 - 323ee: eeb0 6b48 vmov.f64 d6, d8 - 323f2: f7ff bb48 b.w 31a86 <_dtoa_r+0x28e> - 323f6: f1b9 0f00 cmp.w r9, #0 - 323fa: f43f aeda beq.w 321b2 <_dtoa_r+0x9ba> - 323fe: 9a0b ldr r2, [sp, #44] ; 0x2c - 32400: 2a00 cmp r2, #0 - 32402: f77f abf3 ble.w 31bec <_dtoa_r+0x3f4> - 32406: eeb2 4b04 vmov.f64 d4, #36 ; 0x41200000 10.0 - 3240a: ee26 6b04 vmul.f64 d6, d6, d4 - 3240e: 3001 adds r0, #1 - 32410: ee07 0a90 vmov s15, r0 - 32414: 9b04 ldr r3, [sp, #16] - 32416: eeb8 5be7 vcvt.f64.s32 d5, s15 - 3241a: eeb1 7b0c vmov.f64 d7, #28 ; 0x40e00000 7.0 - 3241e: eea6 7b05 vfma.f64 d7, d6, d5 - 32422: ee17 ca90 vmov ip, s15 - 32426: ec51 0b17 vmov r0, r1, d7 - 3242a: 1e5e subs r6, r3, #1 - 3242c: f1ac 7150 sub.w r1, ip, #54525952 ; 0x3400000 - 32430: f7ff bb47 b.w 31ac2 <_dtoa_r+0x2ca> - 32434: 9b04 ldr r3, [sp, #16] - 32436: 3301 adds r3, #1 - 32438: 9304 str r3, [sp, #16] - 3243a: 2331 movs r3, #49 ; 0x31 - 3243c: f7ff bbb1 b.w 31ba2 <_dtoa_r+0x3aa> - 32440: 9b04 ldr r3, [sp, #16] - 32442: 46bb mov fp, r7 - 32444: 3301 adds r3, #1 - 32446: 9304 str r3, [sp, #16] - 32448: 2339 movs r3, #57 ; 0x39 - 3244a: 4637 mov r7, r6 - 3244c: f80b 3b01 strb.w r3, [fp], #1 - 32450: 4646 mov r6, r8 - 32452: e4e1 b.n 31e18 <_dtoa_r+0x620> - 32454: f04f 0a00 mov.w sl, #0 - 32458: 4656 mov r6, sl - 3245a: e653 b.n 32104 <_dtoa_r+0x90c> - 3245c: 9208 str r2, [sp, #32] - 3245e: e47b b.n 31d58 <_dtoa_r+0x560> - 32460: 1c73 adds r3, r6, #1 - 32462: 9304 str r3, [sp, #16] - 32464: 4689 mov r9, r1 - 32466: e4f7 b.n 31e58 <_dtoa_r+0x660> - 32468: f47f af22 bne.w 322b0 <_dtoa_r+0xab8> - 3246c: 07da lsls r2, r3, #31 - 3246e: f57f af1f bpl.w 322b0 <_dtoa_r+0xab8> - 32472: e718 b.n 322a6 <_dtoa_r+0xaae> - 32474: 2b39 cmp r3, #57 ; 0x39 - 32476: d0e3 beq.n 32440 <_dtoa_r+0xc48> - 32478: f1b9 0f00 cmp.w r9, #0 - 3247c: f73f af16 bgt.w 322ac <_dtoa_r+0xab4> - 32480: e716 b.n 322b0 <_dtoa_r+0xab8> - 32482: 9b01 ldr r3, [sp, #4] - 32484: 2b02 cmp r3, #2 - 32486: f73f ae28 bgt.w 320da <_dtoa_r+0x8e2> - 3248a: 9704 str r7, [sp, #16] - 3248c: e5ba b.n 32004 <_dtoa_r+0x80c> - 3248e: 4601 mov r1, r0 - 32490: e78d b.n 323ae <_dtoa_r+0xbb6> - 32492: 9b01 ldr r3, [sp, #4] - 32494: 2b02 cmp r3, #2 - 32496: f73f ae20 bgt.w 320da <_dtoa_r+0x8e2> - 3249a: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c - 3249e: 9704 str r7, [sp, #16] - 324a0: e52b b.n 31efa <_dtoa_r+0x702> - 324a2: 2002 movs r0, #2 - 324a4: f7ff baef b.w 31a86 <_dtoa_r+0x28e> - 324a8: 4b0b ldr r3, [pc, #44] ; (324d8 <_dtoa_r+0xce0>) - 324aa: 480c ldr r0, [pc, #48] ; (324dc <_dtoa_r+0xce4>) - 324ac: 2200 movs r2, #0 - 324ae: f240 11af movw r1, #431 ; 0x1af - 324b2: f7ff f8ed bl 31690 <__assert_func> - 324b6: 4b08 ldr r3, [pc, #32] ; (324d8 <_dtoa_r+0xce0>) - 324b8: 4808 ldr r0, [pc, #32] ; (324dc <_dtoa_r+0xce4>) - 324ba: 463a mov r2, r7 - 324bc: f240 21ef movw r1, #751 ; 0x2ef - 324c0: f7ff f8e6 bl 31690 <__assert_func> - 324c4: 4b06 ldr r3, [pc, #24] ; (324e0 <_dtoa_r+0xce8>) - 324c6: 9300 str r3, [sp, #0] - 324c8: f7ff b9d2 b.w 31870 <_dtoa_r+0x78> - 324cc: 9b02 ldr r3, [sp, #8] - 324ce: 9308 str r3, [sp, #32] - 324d0: e4f7 b.n 31ec2 <_dtoa_r+0x6ca> - 324d2: bf00 nop - 324d4: 200002f8 .word 0x200002f8 - 324d8: 20004268 .word 0x20004268 - 324dc: 200043f4 .word 0x200043f4 - 324e0: 200043e4 .word 0x200043e4 - -000324e4 : - 324e4: b40e push {r1, r2, r3} - 324e6: b510 push {r4, lr} - 324e8: b083 sub sp, #12 - 324ea: ab05 add r3, sp, #20 - 324ec: 4c06 ldr r4, [pc, #24] ; (32508 ) - 324ee: f853 2b04 ldr.w r2, [r3], #4 - 324f2: 9301 str r3, [sp, #4] - 324f4: 4601 mov r1, r0 - 324f6: 6820 ldr r0, [r4, #0] - 324f8: f000 f8c4 bl 32684 <_vfiprintf_r> - 324fc: b003 add sp, #12 - 324fe: e8bd 4010 ldmia.w sp!, {r4, lr} - 32502: b003 add sp, #12 - 32504: 4770 bx lr - 32506: bf00 nop - 32508: 200051b0 .word 0x200051b0 - -0003250c <__ssprint_r>: - 3250c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 32510: 6893 ldr r3, [r2, #8] - 32512: 6817 ldr r7, [r2, #0] - 32514: b083 sub sp, #12 - 32516: 4692 mov sl, r2 - 32518: 2b00 cmp r3, #0 - 3251a: d070 beq.n 325fe <__ssprint_r+0xf2> - 3251c: 4681 mov r9, r0 - 3251e: 688a ldr r2, [r1, #8] - 32520: 6808 ldr r0, [r1, #0] - 32522: 460c mov r4, r1 - 32524: 3708 adds r7, #8 - 32526: e043 b.n 325b0 <__ssprint_r+0xa4> - 32528: 89a3 ldrh r3, [r4, #12] - 3252a: f413 6f90 tst.w r3, #1152 ; 0x480 - 3252e: d02e beq.n 3258e <__ssprint_r+0x82> - 32530: e9d4 1604 ldrd r1, r6, [r4, #16] - 32534: eba0 0801 sub.w r8, r0, r1 - 32538: eb06 0646 add.w r6, r6, r6, lsl #1 - 3253c: eb06 76d6 add.w r6, r6, r6, lsr #31 - 32540: f108 0001 add.w r0, r8, #1 - 32544: 1076 asrs r6, r6, #1 - 32546: 4428 add r0, r5 - 32548: 42b0 cmp r0, r6 - 3254a: 4632 mov r2, r6 - 3254c: bf84 itt hi - 3254e: 4606 movhi r6, r0 - 32550: 4632 movhi r2, r6 - 32552: 055b lsls r3, r3, #21 - 32554: d537 bpl.n 325c6 <__ssprint_r+0xba> - 32556: 4611 mov r1, r2 - 32558: 4648 mov r0, r9 - 3255a: f7fb f963 bl 2d824 <_malloc_r> - 3255e: 9001 str r0, [sp, #4] - 32560: 2800 cmp r0, #0 - 32562: d03a beq.n 325da <__ssprint_r+0xce> - 32564: 4642 mov r2, r8 - 32566: 6921 ldr r1, [r4, #16] - 32568: f7f8 f8ce bl 2a708 - 3256c: 89a2 ldrh r2, [r4, #12] - 3256e: 9b01 ldr r3, [sp, #4] - 32570: f422 6290 bic.w r2, r2, #1152 ; 0x480 - 32574: f042 0280 orr.w r2, r2, #128 ; 0x80 - 32578: 81a2 strh r2, [r4, #12] - 3257a: eba6 0208 sub.w r2, r6, r8 - 3257e: eb03 0008 add.w r0, r3, r8 - 32582: 6166 str r6, [r4, #20] - 32584: 60a2 str r2, [r4, #8] - 32586: 6123 str r3, [r4, #16] - 32588: 6020 str r0, [r4, #0] - 3258a: 462e mov r6, r5 - 3258c: 46a8 mov r8, r5 - 3258e: 4642 mov r2, r8 - 32590: 4659 mov r1, fp - 32592: f7fb feff bl 2e394 - 32596: f8da 3008 ldr.w r3, [sl, #8] - 3259a: 68a2 ldr r2, [r4, #8] - 3259c: 6820 ldr r0, [r4, #0] - 3259e: 1b92 subs r2, r2, r6 - 325a0: 4440 add r0, r8 - 325a2: 1b5b subs r3, r3, r5 - 325a4: 60a2 str r2, [r4, #8] - 325a6: 6020 str r0, [r4, #0] - 325a8: f8ca 3008 str.w r3, [sl, #8] - 325ac: b33b cbz r3, 325fe <__ssprint_r+0xf2> - 325ae: 3708 adds r7, #8 - 325b0: e957 b502 ldrd fp, r5, [r7, #-8] - 325b4: 2d00 cmp r5, #0 - 325b6: d0fa beq.n 325ae <__ssprint_r+0xa2> - 325b8: 42aa cmp r2, r5 - 325ba: 4616 mov r6, r2 - 325bc: 4690 mov r8, r2 - 325be: d9b3 bls.n 32528 <__ssprint_r+0x1c> - 325c0: 462e mov r6, r5 - 325c2: 46a8 mov r8, r5 - 325c4: e7e3 b.n 3258e <__ssprint_r+0x82> - 325c6: 4648 mov r0, r9 - 325c8: f7fb fbf4 bl 2ddb4 <_realloc_r> - 325cc: 4603 mov r3, r0 - 325ce: 2800 cmp r0, #0 - 325d0: d1d3 bne.n 3257a <__ssprint_r+0x6e> - 325d2: 6921 ldr r1, [r4, #16] - 325d4: 4648 mov r0, r9 - 325d6: f7fc fbb5 bl 2ed44 <_free_r> - 325da: 89a3 ldrh r3, [r4, #12] - 325dc: 220c movs r2, #12 - 325de: f043 0340 orr.w r3, r3, #64 ; 0x40 - 325e2: f8c9 2000 str.w r2, [r9] - 325e6: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 325ea: 81a3 strh r3, [r4, #12] - 325ec: 2200 movs r2, #0 - 325ee: 2300 movs r3, #0 - 325f0: f8ca 2008 str.w r2, [sl, #8] - 325f4: f8ca 3004 str.w r3, [sl, #4] - 325f8: b003 add sp, #12 - 325fa: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 325fe: 2000 movs r0, #0 - 32600: 2300 movs r3, #0 - 32602: f8ca 3004 str.w r3, [sl, #4] - 32606: b003 add sp, #12 - 32608: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - -0003260c <__sprint_r.part.0>: - 3260c: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} - 32610: 6e4b ldr r3, [r1, #100] ; 0x64 - 32612: 049c lsls r4, r3, #18 - 32614: 4690 mov r8, r2 - 32616: d52d bpl.n 32674 <__sprint_r.part.0+0x68> - 32618: 6893 ldr r3, [r2, #8] - 3261a: 6812 ldr r2, [r2, #0] - 3261c: b343 cbz r3, 32670 <__sprint_r.part.0+0x64> - 3261e: 468b mov fp, r1 - 32620: 4606 mov r6, r0 - 32622: f102 0908 add.w r9, r2, #8 - 32626: e959 5a02 ldrd r5, sl, [r9, #-8] - 3262a: ea5f 079a movs.w r7, sl, lsr #2 - 3262e: d015 beq.n 3265c <__sprint_r.part.0+0x50> - 32630: 3d04 subs r5, #4 - 32632: 2400 movs r4, #0 - 32634: e001 b.n 3263a <__sprint_r.part.0+0x2e> - 32636: 42a7 cmp r7, r4 - 32638: d00e beq.n 32658 <__sprint_r.part.0+0x4c> - 3263a: f855 1f04 ldr.w r1, [r5, #4]! - 3263e: 465a mov r2, fp - 32640: 4630 mov r0, r6 - 32642: f001 fa5b bl 33afc <_fputwc_r> - 32646: 1c43 adds r3, r0, #1 - 32648: f104 0401 add.w r4, r4, #1 - 3264c: d1f3 bne.n 32636 <__sprint_r.part.0+0x2a> - 3264e: 2300 movs r3, #0 - 32650: e9c8 3301 strd r3, r3, [r8, #4] - 32654: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 32658: f8d8 3008 ldr.w r3, [r8, #8] - 3265c: f02a 0a03 bic.w sl, sl, #3 - 32660: eba3 030a sub.w r3, r3, sl - 32664: f8c8 3008 str.w r3, [r8, #8] - 32668: f109 0908 add.w r9, r9, #8 - 3266c: 2b00 cmp r3, #0 - 3266e: d1da bne.n 32626 <__sprint_r.part.0+0x1a> - 32670: 2000 movs r0, #0 - 32672: e7ec b.n 3264e <__sprint_r.part.0+0x42> - 32674: f001 f80c bl 33690 <__sfvwrite_r> - 32678: 2300 movs r3, #0 - 3267a: e9c8 3301 strd r3, r3, [r8, #4] - 3267e: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} - 32682: bf00 nop - -00032684 <_vfiprintf_r>: - 32684: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 32688: ed2d 8b02 vpush {d8} - 3268c: b0c5 sub sp, #276 ; 0x114 - 3268e: f10d 0a50 add.w sl, sp, #80 ; 0x50 - 32692: 4683 mov fp, r0 - 32694: ee08 1a10 vmov s16, r1 - 32698: 4616 mov r6, r2 - 3269a: 2100 movs r1, #0 - 3269c: 2208 movs r2, #8 - 3269e: 4650 mov r0, sl - 326a0: 461c mov r4, r3 - 326a2: 9307 str r3, [sp, #28] - 326a4: f7fb fef2 bl 2e48c - 326a8: f1bb 0f00 cmp.w fp, #0 - 326ac: d004 beq.n 326b8 <_vfiprintf_r+0x34> - 326ae: f8db 3034 ldr.w r3, [fp, #52] ; 0x34 - 326b2: 2b00 cmp r3, #0 - 326b4: f000 86a0 beq.w 333f8 <_vfiprintf_r+0xd74> - 326b8: ee18 2a10 vmov r2, s16 - 326bc: 6e53 ldr r3, [r2, #100] ; 0x64 - 326be: 07db lsls r3, r3, #31 - 326c0: f140 8513 bpl.w 330ea <_vfiprintf_r+0xa66> - 326c4: f9b2 100c ldrsh.w r1, [r2, #12] - 326c8: b28a uxth r2, r1 - 326ca: 0495 lsls r5, r2, #18 - 326cc: d40b bmi.n 326e6 <_vfiprintf_r+0x62> - 326ce: ee18 3a10 vmov r3, s16 - 326d2: f441 5100 orr.w r1, r1, #8192 ; 0x2000 - 326d6: 8199 strh r1, [r3, #12] - 326d8: 6e5b ldr r3, [r3, #100] ; 0x64 - 326da: b28a uxth r2, r1 - 326dc: ee18 1a10 vmov r1, s16 - 326e0: f423 5300 bic.w r3, r3, #8192 ; 0x2000 - 326e4: 664b str r3, [r1, #100] ; 0x64 - 326e6: 0710 lsls r0, r2, #28 - 326e8: f140 8105 bpl.w 328f6 <_vfiprintf_r+0x272> - 326ec: ee18 3a10 vmov r3, s16 - 326f0: 691b ldr r3, [r3, #16] - 326f2: 2b00 cmp r3, #0 - 326f4: f000 80ff beq.w 328f6 <_vfiprintf_r+0x272> - 326f8: f002 031a and.w r3, r2, #26 - 326fc: 2b0a cmp r3, #10 - 326fe: f000 810a beq.w 32916 <_vfiprintf_r+0x292> - 32702: 2300 movs r3, #0 - 32704: e9cd 3319 strd r3, r3, [sp, #100] ; 0x64 - 32708: e9cd 330d strd r3, r3, [sp, #52] ; 0x34 - 3270c: aa1b add r2, sp, #108 ; 0x6c - 3270e: 930c str r3, [sp, #48] ; 0x30 - 32710: 9218 str r2, [sp, #96] ; 0x60 - 32712: 4691 mov r9, r2 - 32714: 930b str r3, [sp, #44] ; 0x2c - 32716: 9305 str r3, [sp, #20] - 32718: 46b0 mov r8, r6 - 3271a: 4644 mov r4, r8 - 3271c: 4ba8 ldr r3, [pc, #672] ; (329c0 <_vfiprintf_r+0x33c>) - 3271e: f8d3 50e4 ldr.w r5, [r3, #228] ; 0xe4 - 32722: f7fb ff7b bl 2e61c <__locale_mb_cur_max> - 32726: 4622 mov r2, r4 - 32728: 4603 mov r3, r0 - 3272a: a912 add r1, sp, #72 ; 0x48 - 3272c: f8cd a000 str.w sl, [sp] - 32730: 4658 mov r0, fp - 32732: 47a8 blx r5 - 32734: 2800 cmp r0, #0 - 32736: f000 8145 beq.w 329c4 <_vfiprintf_r+0x340> - 3273a: f2c0 8139 blt.w 329b0 <_vfiprintf_r+0x32c> - 3273e: 9a12 ldr r2, [sp, #72] ; 0x48 - 32740: 2a25 cmp r2, #37 ; 0x25 - 32742: 4603 mov r3, r0 - 32744: d001 beq.n 3274a <_vfiprintf_r+0xc6> - 32746: 441c add r4, r3 - 32748: e7e8 b.n 3271c <_vfiprintf_r+0x98> - 3274a: ebb4 0608 subs.w r6, r4, r8 - 3274e: 4605 mov r5, r0 - 32750: f040 813c bne.w 329cc <_vfiprintf_r+0x348> - 32754: 2300 movs r3, #0 - 32756: 7861 ldrb r1, [r4, #1] - 32758: f88d 3043 strb.w r3, [sp, #67] ; 0x43 - 3275c: f104 0801 add.w r8, r4, #1 - 32760: 9306 str r3, [sp, #24] - 32762: f04f 37ff mov.w r7, #4294967295 ; 0xffffffff - 32766: 461e mov r6, r3 - 32768: 242b movs r4, #43 ; 0x2b - 3276a: f108 0801 add.w r8, r8, #1 - 3276e: f1a1 0320 sub.w r3, r1, #32 - 32772: 2b5a cmp r3, #90 ; 0x5a - 32774: f200 8178 bhi.w 32a68 <_vfiprintf_r+0x3e4> - 32778: e8df f013 tbh [pc, r3, lsl #1] - 3277c: 017602b5 .word 0x017602b5 - 32780: 02b00176 .word 0x02b00176 - 32784: 01760176 .word 0x01760176 - 32788: 006a0176 .word 0x006a0176 - 3278c: 01760176 .word 0x01760176 - 32790: 028d027d .word 0x028d027d - 32794: 02880176 .word 0x02880176 - 32798: 01760297 .word 0x01760297 - 3279c: 005b0292 .word 0x005b0292 - 327a0: 005b005b .word 0x005b005b - 327a4: 005b005b .word 0x005b005b - 327a8: 005b005b .word 0x005b005b - 327ac: 005b005b .word 0x005b005b - 327b0: 01760176 .word 0x01760176 - 327b4: 01760176 .word 0x01760176 - 327b8: 01760176 .word 0x01760176 - 327bc: 01760176 .word 0x01760176 - 327c0: 025c0176 .word 0x025c0176 - 327c4: 01760084 .word 0x01760084 - 327c8: 01760176 .word 0x01760176 - 327cc: 01760176 .word 0x01760176 - 327d0: 01760176 .word 0x01760176 - 327d4: 01760176 .word 0x01760176 - 327d8: 00e80176 .word 0x00e80176 - 327dc: 01760176 .word 0x01760176 - 327e0: 02330176 .word 0x02330176 - 327e4: 02da0176 .word 0x02da0176 - 327e8: 01760176 .word 0x01760176 - 327ec: 0176058b .word 0x0176058b - 327f0: 01760176 .word 0x01760176 - 327f4: 01760176 .word 0x01760176 - 327f8: 01760176 .word 0x01760176 - 327fc: 01760176 .word 0x01760176 - 32800: 025c0176 .word 0x025c0176 - 32804: 01760086 .word 0x01760086 - 32808: 01760176 .word 0x01760176 - 3280c: 008602cd .word 0x008602cd - 32810: 0176007f .word 0x0176007f - 32814: 017602c0 .word 0x017602c0 - 32818: 00ea02fd .word 0x00ea02fd - 3281c: 007f02ed .word 0x007f02ed - 32820: 02330176 .word 0x02330176 - 32824: 0569007c .word 0x0569007c - 32828: 01760176 .word 0x01760176 - 3282c: 0176056b .word 0x0176056b - 32830: 007c .short 0x007c - 32832: f1a1 0330 sub.w r3, r1, #48 ; 0x30 - 32836: 2200 movs r2, #0 - 32838: f818 1b01 ldrb.w r1, [r8], #1 - 3283c: eb02 0282 add.w r2, r2, r2, lsl #2 - 32840: eb03 0242 add.w r2, r3, r2, lsl #1 - 32844: f1a1 0330 sub.w r3, r1, #48 ; 0x30 - 32848: 2b09 cmp r3, #9 - 3284a: d9f5 bls.n 32838 <_vfiprintf_r+0x1b4> - 3284c: 9206 str r2, [sp, #24] - 3284e: e78e b.n 3276e <_vfiprintf_r+0xea> - 32850: 4658 mov r0, fp - 32852: f7fe fe6d bl 31530 <_localeconv_r> - 32856: 6843 ldr r3, [r0, #4] - 32858: 930d str r3, [sp, #52] ; 0x34 - 3285a: 4618 mov r0, r3 - 3285c: f7fc f970 bl 2eb40 - 32860: 900e str r0, [sp, #56] ; 0x38 - 32862: 4605 mov r5, r0 - 32864: 4658 mov r0, fp - 32866: f7fe fe63 bl 31530 <_localeconv_r> - 3286a: 6883 ldr r3, [r0, #8] - 3286c: 930b str r3, [sp, #44] ; 0x2c - 3286e: 2d00 cmp r5, #0 - 32870: f040 84d6 bne.w 33220 <_vfiprintf_r+0xb9c> - 32874: f898 1000 ldrb.w r1, [r8] - 32878: e777 b.n 3276a <_vfiprintf_r+0xe6> - 3287a: f898 1000 ldrb.w r1, [r8] - 3287e: f046 0620 orr.w r6, r6, #32 - 32882: e772 b.n 3276a <_vfiprintf_r+0xe6> - 32884: f046 0610 orr.w r6, r6, #16 - 32888: 06b4 lsls r4, r6, #26 - 3288a: f140 818e bpl.w 32baa <_vfiprintf_r+0x526> - 3288e: 9b07 ldr r3, [sp, #28] - 32890: 3307 adds r3, #7 - 32892: f023 0307 bic.w r3, r3, #7 - 32896: 461a mov r2, r3 - 32898: 6859 ldr r1, [r3, #4] - 3289a: f852 3b08 ldr.w r3, [r2], #8 - 3289e: 9207 str r2, [sp, #28] - 328a0: 460a mov r2, r1 - 328a2: 2900 cmp r1, #0 - 328a4: f2c0 8470 blt.w 33188 <_vfiprintf_r+0xb04> - 328a8: 1c79 adds r1, r7, #1 - 328aa: f000 85a2 beq.w 333f2 <_vfiprintf_r+0xd6e> - 328ae: f026 0180 bic.w r1, r6, #128 ; 0x80 - 328b2: 9103 str r1, [sp, #12] - 328b4: ea53 0102 orrs.w r1, r3, r2 - 328b8: f000 843f beq.w 3313a <_vfiprintf_r+0xab6> - 328bc: 2b0a cmp r3, #10 - 328be: f172 0100 sbcs.w r1, r2, #0 - 328c2: f080 8541 bcs.w 33348 <_vfiprintf_r+0xcc4> - 328c6: 3330 adds r3, #48 ; 0x30 - 328c8: f88d 310f strb.w r3, [sp, #271] ; 0x10f - 328cc: 9e03 ldr r6, [sp, #12] - 328ce: 2301 movs r3, #1 - 328d0: 9304 str r3, [sp, #16] - 328d2: f20d 140f addw r4, sp, #271 ; 0x10f - 328d6: 9b04 ldr r3, [sp, #16] - 328d8: 42bb cmp r3, r7 - 328da: bfb8 it lt - 328dc: 463b movlt r3, r7 - 328de: 9303 str r3, [sp, #12] - 328e0: 2300 movs r3, #0 - 328e2: 9308 str r3, [sp, #32] - 328e4: f89d 3043 ldrb.w r3, [sp, #67] ; 0x43 - 328e8: 2b00 cmp r3, #0 - 328ea: f000 80cb beq.w 32a84 <_vfiprintf_r+0x400> - 328ee: 9b03 ldr r3, [sp, #12] - 328f0: 3301 adds r3, #1 - 328f2: 9303 str r3, [sp, #12] - 328f4: e0c6 b.n 32a84 <_vfiprintf_r+0x400> - 328f6: ee18 1a10 vmov r1, s16 - 328fa: 4658 mov r0, fp - 328fc: ee18 5a10 vmov r5, s16 - 32900: f001 f840 bl 33984 <__swsetup_r> - 32904: 2800 cmp r0, #0 - 32906: f040 8652 bne.w 335ae <_vfiprintf_r+0xf2a> - 3290a: 89aa ldrh r2, [r5, #12] - 3290c: f002 031a and.w r3, r2, #26 - 32910: 2b0a cmp r3, #10 - 32912: f47f aef6 bne.w 32702 <_vfiprintf_r+0x7e> - 32916: ee18 1a10 vmov r1, s16 - 3291a: f9b1 300e ldrsh.w r3, [r1, #14] - 3291e: 2b00 cmp r3, #0 - 32920: f6ff aeef blt.w 32702 <_vfiprintf_r+0x7e> - 32924: 6e4b ldr r3, [r1, #100] ; 0x64 - 32926: 07db lsls r3, r3, #31 - 32928: d402 bmi.n 32930 <_vfiprintf_r+0x2ac> - 3292a: 0597 lsls r7, r2, #22 - 3292c: f140 8612 bpl.w 33554 <_vfiprintf_r+0xed0> - 32930: ee18 1a10 vmov r1, s16 - 32934: 4623 mov r3, r4 - 32936: 4632 mov r2, r6 - 32938: 4658 mov r0, fp - 3293a: f000 fe69 bl 33610 <__sbprintf> - 3293e: 9005 str r0, [sp, #20] - 32940: 9805 ldr r0, [sp, #20] - 32942: b045 add sp, #276 ; 0x114 - 32944: ecbd 8b02 vpop {d8} - 32948: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 3294c: f046 0610 orr.w r6, r6, #16 - 32950: f016 0220 ands.w r2, r6, #32 - 32954: f000 8136 beq.w 32bc4 <_vfiprintf_r+0x540> - 32958: 9b07 ldr r3, [sp, #28] - 3295a: 3307 adds r3, #7 - 3295c: f023 0307 bic.w r3, r3, #7 - 32960: 4619 mov r1, r3 - 32962: 685a ldr r2, [r3, #4] - 32964: f851 3b08 ldr.w r3, [r1], #8 - 32968: 9107 str r1, [sp, #28] - 3296a: f426 6180 bic.w r1, r6, #1024 ; 0x400 - 3296e: 9103 str r1, [sp, #12] - 32970: 2100 movs r1, #0 - 32972: 2000 movs r0, #0 - 32974: f88d 0043 strb.w r0, [sp, #67] ; 0x43 - 32978: 1c78 adds r0, r7, #1 - 3297a: f000 8210 beq.w 32d9e <_vfiprintf_r+0x71a> - 3297e: 9803 ldr r0, [sp, #12] - 32980: f020 0680 bic.w r6, r0, #128 ; 0x80 - 32984: ea53 0002 orrs.w r0, r3, r2 - 32988: f040 8208 bne.w 32d9c <_vfiprintf_r+0x718> - 3298c: 2f00 cmp r7, #0 - 3298e: f040 8538 bne.w 33402 <_vfiprintf_r+0xd7e> - 32992: 2900 cmp r1, #0 - 32994: f040 83d5 bne.w 33142 <_vfiprintf_r+0xabe> - 32998: 9b03 ldr r3, [sp, #12] - 3299a: f013 0301 ands.w r3, r3, #1 - 3299e: 9304 str r3, [sp, #16] - 329a0: f000 8411 beq.w 331c6 <_vfiprintf_r+0xb42> - 329a4: 2330 movs r3, #48 ; 0x30 - 329a6: f88d 310f strb.w r3, [sp, #271] ; 0x10f - 329aa: f20d 140f addw r4, sp, #271 ; 0x10f - 329ae: e792 b.n 328d6 <_vfiprintf_r+0x252> - 329b0: 2208 movs r2, #8 - 329b2: 2100 movs r1, #0 - 329b4: 4650 mov r0, sl - 329b6: f7fb fd69 bl 2e48c - 329ba: 2301 movs r3, #1 - 329bc: 441c add r4, r3 - 329be: e6ad b.n 3271c <_vfiprintf_r+0x98> - 329c0: 20004c28 .word 0x20004c28 - 329c4: ebb4 0608 subs.w r6, r4, r8 - 329c8: 4605 mov r5, r0 - 329ca: d01b beq.n 32a04 <_vfiprintf_r+0x380> - 329cc: 9b19 ldr r3, [sp, #100] ; 0x64 - 329ce: 9a1a ldr r2, [sp, #104] ; 0x68 - 329d0: 3301 adds r3, #1 - 329d2: 4432 add r2, r6 - 329d4: 2b07 cmp r3, #7 - 329d6: e9c9 8600 strd r8, r6, [r9] - 329da: 921a str r2, [sp, #104] ; 0x68 - 329dc: 9319 str r3, [sp, #100] ; 0x64 - 329de: dd1c ble.n 32a1a <_vfiprintf_r+0x396> - 329e0: 2a00 cmp r2, #0 - 329e2: f000 83a6 beq.w 33132 <_vfiprintf_r+0xaae> - 329e6: ee18 1a10 vmov r1, s16 - 329ea: aa18 add r2, sp, #96 ; 0x60 - 329ec: 4658 mov r0, fp - 329ee: f7ff fe0d bl 3260c <__sprint_r.part.0> - 329f2: bb20 cbnz r0, 32a3e <_vfiprintf_r+0x3ba> - 329f4: f10d 096c add.w r9, sp, #108 ; 0x6c - 329f8: 9b05 ldr r3, [sp, #20] - 329fa: 4433 add r3, r6 - 329fc: 9305 str r3, [sp, #20] - 329fe: 2d00 cmp r5, #0 - 32a00: f47f aea8 bne.w 32754 <_vfiprintf_r+0xd0> - 32a04: 9b1a ldr r3, [sp, #104] ; 0x68 - 32a06: 2b00 cmp r3, #0 - 32a08: f040 85c1 bne.w 3358e <_vfiprintf_r+0xf0a> - 32a0c: ee18 3a10 vmov r3, s16 - 32a10: 2200 movs r2, #0 - 32a12: f9b3 300c ldrsh.w r3, [r3, #12] - 32a16: 9219 str r2, [sp, #100] ; 0x64 - 32a18: e015 b.n 32a46 <_vfiprintf_r+0x3c2> - 32a1a: f109 0908 add.w r9, r9, #8 - 32a1e: e7eb b.n 329f8 <_vfiprintf_r+0x374> - 32a20: ee18 1a10 vmov r1, s16 - 32a24: aa18 add r2, sp, #96 ; 0x60 - 32a26: 4658 mov r0, fp - 32a28: f7ff fdf0 bl 3260c <__sprint_r.part.0> - 32a2c: 2800 cmp r0, #0 - 32a2e: f000 80a6 beq.w 32b7e <_vfiprintf_r+0x4fa> - 32a32: 9b08 ldr r3, [sp, #32] - 32a34: b11b cbz r3, 32a3e <_vfiprintf_r+0x3ba> - 32a36: 9908 ldr r1, [sp, #32] + 323ce: dc0a bgt.n 323e6 <_dtoa_r+0xaee> + 323d0: eeb4 8b46 vcmp.f64 d8, d6 + 323d4: eef1 fa10 vmrs APSR_nzcv, fpscr + 323d8: f47f acdc bne.w 31d94 <_dtoa_r+0x49c> + 323dc: ee17 3a10 vmov r3, s14 + 323e0: 07d8 lsls r0, r3, #31 + 323e2: f57f acd7 bpl.w 31d94 <_dtoa_r+0x49c> + 323e6: 9a00 ldr r2, [sp, #0] + 323e8: e454 b.n 31c94 <_dtoa_r+0x39c> + 323ea: 6871 ldr r1, [r6, #4] + 323ec: 4620 mov r0, r4 + 323ee: f7fe fbe9 bl 30bc4 <_Balloc> + 323f2: 4607 mov r7, r0 + 323f4: 2800 cmp r0, #0 + 323f6: f000 80de beq.w 325b6 <_dtoa_r+0xcbe> + 323fa: 6933 ldr r3, [r6, #16] + 323fc: 3302 adds r3, #2 + 323fe: 009a lsls r2, r3, #2 + 32400: f106 010c add.w r1, r6, #12 + 32404: 300c adds r0, #12 + 32406: f7f8 f9f3 bl 2a7f0 + 3240a: 4639 mov r1, r7 + 3240c: 2201 movs r2, #1 + 3240e: 4620 mov r0, r4 + 32410: f7fe fde6 bl 30fe0 <__lshift> + 32414: 4680 mov r8, r0 + 32416: e5fe b.n 32016 <_dtoa_r+0x71e> + 32418: 9b06 ldr r3, [sp, #24] + 3241a: eba3 0309 sub.w r3, r3, r9 + 3241e: 9309 str r3, [sp, #36] ; 0x24 + 32420: e4da b.n 31dd8 <_dtoa_r+0x4e0> + 32422: 2b39 cmp r3, #57 ; 0x39 + 32424: f000 808c beq.w 32540 <_dtoa_r+0xc48> + 32428: 46b9 mov r9, r7 + 3242a: 3301 adds r3, #1 + 3242c: e7c1 b.n 323b2 <_dtoa_r+0xaba> + 3242e: 9a04 ldr r2, [sp, #16] + 32430: 3201 adds r2, #1 + 32432: 4637 mov r7, r6 + 32434: 9204 str r2, [sp, #16] + 32436: 4646 mov r6, r8 + 32438: e55f b.n 31efa <_dtoa_r+0x602> + 3243a: 4629 mov r1, r5 + 3243c: 4620 mov r0, r4 + 3243e: f7fe fd6f bl 30f20 <__pow5mult> + 32442: 4605 mov r5, r0 + 32444: e4fa b.n 31e3c <_dtoa_r+0x544> + 32446: bf00 nop + 32448: 200044b0 .word 0x200044b0 + 3244c: 200002f8 .word 0x200002f8 + 32450: 200002d0 .word 0x200002d0 + 32454: 7ff00000 .word 0x7ff00000 + 32458: 4b5e ldr r3, [pc, #376] ; (325d4 <_dtoa_r+0xcdc>) + 3245a: eefd 5bc6 vcvt.s32.f64 s11, d6 + 3245e: eb03 0cc2 add.w ip, r3, r2, lsl #3 + 32462: ed1c 3b02 vldr d3, [ip, #-8] + 32466: eeb8 7be5 vcvt.f64.s32 d7, s11 + 3246a: ee36 7b47 vsub.f64 d7, d6, d7 + 3246e: ec41 0b16 vmov d6, r0, r1 + 32472: ee15 1a90 vmov r1, s11 + 32476: ee23 3b06 vmul.f64 d3, d3, d6 + 3247a: 9800 ldr r0, [sp, #0] + 3247c: 3130 adds r1, #48 ; 0x30 + 3247e: 2a01 cmp r2, #1 + 32480: f800 1b01 strb.w r1, [r0], #1 + 32484: f000 8083 beq.w 3258e <_dtoa_r+0xc96> + 32488: eeb2 4b04 vmov.f64 d4, #36 ; 0x41200000 10.0 + 3248c: 9b00 ldr r3, [sp, #0] + 3248e: 1899 adds r1, r3, r2 + 32490: ee27 7b04 vmul.f64 d7, d7, d4 + 32494: eefd 6bc7 vcvt.s32.f64 s13, d7 + 32498: ee16 3a90 vmov r3, s13 + 3249c: 3330 adds r3, #48 ; 0x30 + 3249e: f800 3b01 strb.w r3, [r0], #1 + 324a2: 4281 cmp r1, r0 + 324a4: eeb8 5be6 vcvt.f64.s32 d5, s13 + 324a8: ee37 7b45 vsub.f64 d7, d7, d5 + 324ac: d1f0 bne.n 32490 <_dtoa_r+0xb98> + 324ae: eeb6 6b00 vmov.f64 d6, #96 ; 0x3f000000 0.5 + 324b2: ee33 5b06 vadd.f64 d5, d3, d6 + 324b6: eeb4 5bc7 vcmpe.f64 d5, d7 + 324ba: eef1 fa10 vmrs APSR_nzcv, fpscr + 324be: f53f abe3 bmi.w 31c88 <_dtoa_r+0x390> + 324c2: ee36 6b43 vsub.f64 d6, d6, d3 + 324c6: eeb4 6bc7 vcmpe.f64 d6, d7 + 324ca: eef1 fa10 vmrs APSR_nzcv, fpscr + 324ce: f77f ac0d ble.w 31cec <_dtoa_r+0x3f4> + 324d2: 4689 mov r9, r1 + 324d4: 3901 subs r1, #1 + 324d6: f819 3c01 ldrb.w r3, [r9, #-1] + 324da: 2b30 cmp r3, #48 ; 0x30 + 324dc: d0f9 beq.n 324d2 <_dtoa_r+0xbda> + 324de: 1c73 adds r3, r6, #1 + 324e0: 9304 str r3, [sp, #16] + 324e2: e539 b.n 31f58 <_dtoa_r+0x660> + 324e4: 9a0c ldr r2, [sp, #48] ; 0x30 + 324e6: f1c2 0236 rsb r2, r2, #54 ; 0x36 + 324ea: e6da b.n 322a2 <_dtoa_r+0x9aa> + 324ec: 2002 movs r0, #2 + 324ee: eeb0 6b48 vmov.f64 d6, d8 + 324f2: f7ff bb48 b.w 31b86 <_dtoa_r+0x28e> + 324f6: f1b9 0f00 cmp.w r9, #0 + 324fa: f43f aeda beq.w 322b2 <_dtoa_r+0x9ba> + 324fe: 9a0b ldr r2, [sp, #44] ; 0x2c + 32500: 2a00 cmp r2, #0 + 32502: f77f abf3 ble.w 31cec <_dtoa_r+0x3f4> + 32506: eeb2 4b04 vmov.f64 d4, #36 ; 0x41200000 10.0 + 3250a: ee26 6b04 vmul.f64 d6, d6, d4 + 3250e: 3001 adds r0, #1 + 32510: ee07 0a90 vmov s15, r0 + 32514: 9b04 ldr r3, [sp, #16] + 32516: eeb8 5be7 vcvt.f64.s32 d5, s15 + 3251a: eeb1 7b0c vmov.f64 d7, #28 ; 0x40e00000 7.0 + 3251e: eea6 7b05 vfma.f64 d7, d6, d5 + 32522: ee17 ca90 vmov ip, s15 + 32526: ec51 0b17 vmov r0, r1, d7 + 3252a: 1e5e subs r6, r3, #1 + 3252c: f1ac 7150 sub.w r1, ip, #54525952 ; 0x3400000 + 32530: f7ff bb47 b.w 31bc2 <_dtoa_r+0x2ca> + 32534: 9b04 ldr r3, [sp, #16] + 32536: 3301 adds r3, #1 + 32538: 9304 str r3, [sp, #16] + 3253a: 2331 movs r3, #49 ; 0x31 + 3253c: f7ff bbb1 b.w 31ca2 <_dtoa_r+0x3aa> + 32540: 9b04 ldr r3, [sp, #16] + 32542: 46bb mov fp, r7 + 32544: 3301 adds r3, #1 + 32546: 9304 str r3, [sp, #16] + 32548: 2339 movs r3, #57 ; 0x39 + 3254a: 4637 mov r7, r6 + 3254c: f80b 3b01 strb.w r3, [fp], #1 + 32550: 4646 mov r6, r8 + 32552: e4e1 b.n 31f18 <_dtoa_r+0x620> + 32554: f04f 0a00 mov.w sl, #0 + 32558: 4656 mov r6, sl + 3255a: e653 b.n 32204 <_dtoa_r+0x90c> + 3255c: 9208 str r2, [sp, #32] + 3255e: e47b b.n 31e58 <_dtoa_r+0x560> + 32560: 1c73 adds r3, r6, #1 + 32562: 9304 str r3, [sp, #16] + 32564: 4689 mov r9, r1 + 32566: e4f7 b.n 31f58 <_dtoa_r+0x660> + 32568: f47f af22 bne.w 323b0 <_dtoa_r+0xab8> + 3256c: 07da lsls r2, r3, #31 + 3256e: f57f af1f bpl.w 323b0 <_dtoa_r+0xab8> + 32572: e718 b.n 323a6 <_dtoa_r+0xaae> + 32574: 2b39 cmp r3, #57 ; 0x39 + 32576: d0e3 beq.n 32540 <_dtoa_r+0xc48> + 32578: f1b9 0f00 cmp.w r9, #0 + 3257c: f73f af16 bgt.w 323ac <_dtoa_r+0xab4> + 32580: e716 b.n 323b0 <_dtoa_r+0xab8> + 32582: 9b01 ldr r3, [sp, #4] + 32584: 2b02 cmp r3, #2 + 32586: f73f ae28 bgt.w 321da <_dtoa_r+0x8e2> + 3258a: 9704 str r7, [sp, #16] + 3258c: e5ba b.n 32104 <_dtoa_r+0x80c> + 3258e: 4601 mov r1, r0 + 32590: e78d b.n 324ae <_dtoa_r+0xbb6> + 32592: 9b01 ldr r3, [sp, #4] + 32594: 2b02 cmp r3, #2 + 32596: f73f ae20 bgt.w 321da <_dtoa_r+0x8e2> + 3259a: f8dd 902c ldr.w r9, [sp, #44] ; 0x2c + 3259e: 9704 str r7, [sp, #16] + 325a0: e52b b.n 31ffa <_dtoa_r+0x702> + 325a2: 2002 movs r0, #2 + 325a4: f7ff baef b.w 31b86 <_dtoa_r+0x28e> + 325a8: 4b0b ldr r3, [pc, #44] ; (325d8 <_dtoa_r+0xce0>) + 325aa: 480c ldr r0, [pc, #48] ; (325dc <_dtoa_r+0xce4>) + 325ac: 2200 movs r2, #0 + 325ae: f240 11af movw r1, #431 ; 0x1af + 325b2: f7ff f8ed bl 31790 <__assert_func> + 325b6: 4b08 ldr r3, [pc, #32] ; (325d8 <_dtoa_r+0xce0>) + 325b8: 4808 ldr r0, [pc, #32] ; (325dc <_dtoa_r+0xce4>) + 325ba: 463a mov r2, r7 + 325bc: f240 21ef movw r1, #751 ; 0x2ef + 325c0: f7ff f8e6 bl 31790 <__assert_func> + 325c4: 4b06 ldr r3, [pc, #24] ; (325e0 <_dtoa_r+0xce8>) + 325c6: 9300 str r3, [sp, #0] + 325c8: f7ff b9d2 b.w 31970 <_dtoa_r+0x78> + 325cc: 9b02 ldr r3, [sp, #8] + 325ce: 9308 str r3, [sp, #32] + 325d0: e4f7 b.n 31fc2 <_dtoa_r+0x6ca> + 325d2: bf00 nop + 325d4: 200002f8 .word 0x200002f8 + 325d8: 20004328 .word 0x20004328 + 325dc: 200044b4 .word 0x200044b4 + 325e0: 200044a4 .word 0x200044a4 + +000325e4 : + 325e4: b40e push {r1, r2, r3} + 325e6: b510 push {r4, lr} + 325e8: b083 sub sp, #12 + 325ea: ab05 add r3, sp, #20 + 325ec: 4c06 ldr r4, [pc, #24] ; (32608 ) + 325ee: f853 2b04 ldr.w r2, [r3], #4 + 325f2: 9301 str r3, [sp, #4] + 325f4: 4601 mov r1, r0 + 325f6: 6820 ldr r0, [r4, #0] + 325f8: f000 f8c4 bl 32784 <_vfiprintf_r> + 325fc: b003 add sp, #12 + 325fe: e8bd 4010 ldmia.w sp!, {r4, lr} + 32602: b003 add sp, #12 + 32604: 4770 bx lr + 32606: bf00 nop + 32608: 20005270 .word 0x20005270 + +0003260c <__ssprint_r>: + 3260c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 32610: 6893 ldr r3, [r2, #8] + 32612: 6817 ldr r7, [r2, #0] + 32614: b083 sub sp, #12 + 32616: 4692 mov sl, r2 + 32618: 2b00 cmp r3, #0 + 3261a: d070 beq.n 326fe <__ssprint_r+0xf2> + 3261c: 4681 mov r9, r0 + 3261e: 688a ldr r2, [r1, #8] + 32620: 6808 ldr r0, [r1, #0] + 32622: 460c mov r4, r1 + 32624: 3708 adds r7, #8 + 32626: e043 b.n 326b0 <__ssprint_r+0xa4> + 32628: 89a3 ldrh r3, [r4, #12] + 3262a: f413 6f90 tst.w r3, #1152 ; 0x480 + 3262e: d02e beq.n 3268e <__ssprint_r+0x82> + 32630: e9d4 1604 ldrd r1, r6, [r4, #16] + 32634: eba0 0801 sub.w r8, r0, r1 + 32638: eb06 0646 add.w r6, r6, r6, lsl #1 + 3263c: eb06 76d6 add.w r6, r6, r6, lsr #31 + 32640: f108 0001 add.w r0, r8, #1 + 32644: 1076 asrs r6, r6, #1 + 32646: 4428 add r0, r5 + 32648: 42b0 cmp r0, r6 + 3264a: 4632 mov r2, r6 + 3264c: bf84 itt hi + 3264e: 4606 movhi r6, r0 + 32650: 4632 movhi r2, r6 + 32652: 055b lsls r3, r3, #21 + 32654: d537 bpl.n 326c6 <__ssprint_r+0xba> + 32656: 4611 mov r1, r2 + 32658: 4648 mov r0, r9 + 3265a: f7fb f957 bl 2d90c <_malloc_r> + 3265e: 9001 str r0, [sp, #4] + 32660: 2800 cmp r0, #0 + 32662: d03a beq.n 326da <__ssprint_r+0xce> + 32664: 4642 mov r2, r8 + 32666: 6921 ldr r1, [r4, #16] + 32668: f7f8 f8c2 bl 2a7f0 + 3266c: 89a2 ldrh r2, [r4, #12] + 3266e: 9b01 ldr r3, [sp, #4] + 32670: f422 6290 bic.w r2, r2, #1152 ; 0x480 + 32674: f042 0280 orr.w r2, r2, #128 ; 0x80 + 32678: 81a2 strh r2, [r4, #12] + 3267a: eba6 0208 sub.w r2, r6, r8 + 3267e: eb03 0008 add.w r0, r3, r8 + 32682: 6166 str r6, [r4, #20] + 32684: 60a2 str r2, [r4, #8] + 32686: 6123 str r3, [r4, #16] + 32688: 6020 str r0, [r4, #0] + 3268a: 462e mov r6, r5 + 3268c: 46a8 mov r8, r5 + 3268e: 4642 mov r2, r8 + 32690: 4659 mov r1, fp + 32692: f7fb fef3 bl 2e47c + 32696: f8da 3008 ldr.w r3, [sl, #8] + 3269a: 68a2 ldr r2, [r4, #8] + 3269c: 6820 ldr r0, [r4, #0] + 3269e: 1b92 subs r2, r2, r6 + 326a0: 4440 add r0, r8 + 326a2: 1b5b subs r3, r3, r5 + 326a4: 60a2 str r2, [r4, #8] + 326a6: 6020 str r0, [r4, #0] + 326a8: f8ca 3008 str.w r3, [sl, #8] + 326ac: b33b cbz r3, 326fe <__ssprint_r+0xf2> + 326ae: 3708 adds r7, #8 + 326b0: e957 b502 ldrd fp, r5, [r7, #-8] + 326b4: 2d00 cmp r5, #0 + 326b6: d0fa beq.n 326ae <__ssprint_r+0xa2> + 326b8: 42aa cmp r2, r5 + 326ba: 4616 mov r6, r2 + 326bc: 4690 mov r8, r2 + 326be: d9b3 bls.n 32628 <__ssprint_r+0x1c> + 326c0: 462e mov r6, r5 + 326c2: 46a8 mov r8, r5 + 326c4: e7e3 b.n 3268e <__ssprint_r+0x82> + 326c6: 4648 mov r0, r9 + 326c8: f7fb fbe8 bl 2de9c <_realloc_r> + 326cc: 4603 mov r3, r0 + 326ce: 2800 cmp r0, #0 + 326d0: d1d3 bne.n 3267a <__ssprint_r+0x6e> + 326d2: 6921 ldr r1, [r4, #16] + 326d4: 4648 mov r0, r9 + 326d6: f7fc fbb5 bl 2ee44 <_free_r> + 326da: 89a3 ldrh r3, [r4, #12] + 326dc: 220c movs r2, #12 + 326de: f043 0340 orr.w r3, r3, #64 ; 0x40 + 326e2: f8c9 2000 str.w r2, [r9] + 326e6: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 326ea: 81a3 strh r3, [r4, #12] + 326ec: 2200 movs r2, #0 + 326ee: 2300 movs r3, #0 + 326f0: f8ca 2008 str.w r2, [sl, #8] + 326f4: f8ca 3004 str.w r3, [sl, #4] + 326f8: b003 add sp, #12 + 326fa: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 326fe: 2000 movs r0, #0 + 32700: 2300 movs r3, #0 + 32702: f8ca 3004 str.w r3, [sl, #4] + 32706: b003 add sp, #12 + 32708: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + +0003270c <__sprint_r.part.0>: + 3270c: e92d 4ff8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} + 32710: 6e4b ldr r3, [r1, #100] ; 0x64 + 32712: 049c lsls r4, r3, #18 + 32714: 4690 mov r8, r2 + 32716: d52d bpl.n 32774 <__sprint_r.part.0+0x68> + 32718: 6893 ldr r3, [r2, #8] + 3271a: 6812 ldr r2, [r2, #0] + 3271c: b343 cbz r3, 32770 <__sprint_r.part.0+0x64> + 3271e: 468b mov fp, r1 + 32720: 4606 mov r6, r0 + 32722: f102 0908 add.w r9, r2, #8 + 32726: e959 5a02 ldrd r5, sl, [r9, #-8] + 3272a: ea5f 079a movs.w r7, sl, lsr #2 + 3272e: d015 beq.n 3275c <__sprint_r.part.0+0x50> + 32730: 3d04 subs r5, #4 + 32732: 2400 movs r4, #0 + 32734: e001 b.n 3273a <__sprint_r.part.0+0x2e> + 32736: 42a7 cmp r7, r4 + 32738: d00e beq.n 32758 <__sprint_r.part.0+0x4c> + 3273a: f855 1f04 ldr.w r1, [r5, #4]! + 3273e: 465a mov r2, fp + 32740: 4630 mov r0, r6 + 32742: f001 fa5b bl 33bfc <_fputwc_r> + 32746: 1c43 adds r3, r0, #1 + 32748: f104 0401 add.w r4, r4, #1 + 3274c: d1f3 bne.n 32736 <__sprint_r.part.0+0x2a> + 3274e: 2300 movs r3, #0 + 32750: e9c8 3301 strd r3, r3, [r8, #4] + 32754: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 32758: f8d8 3008 ldr.w r3, [r8, #8] + 3275c: f02a 0a03 bic.w sl, sl, #3 + 32760: eba3 030a sub.w r3, r3, sl + 32764: f8c8 3008 str.w r3, [r8, #8] + 32768: f109 0908 add.w r9, r9, #8 + 3276c: 2b00 cmp r3, #0 + 3276e: d1da bne.n 32726 <__sprint_r.part.0+0x1a> + 32770: 2000 movs r0, #0 + 32772: e7ec b.n 3274e <__sprint_r.part.0+0x42> + 32774: f001 f80c bl 33790 <__sfvwrite_r> + 32778: 2300 movs r3, #0 + 3277a: e9c8 3301 strd r3, r3, [r8, #4] + 3277e: e8bd 8ff8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} + 32782: bf00 nop + +00032784 <_vfiprintf_r>: + 32784: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 32788: ed2d 8b02 vpush {d8} + 3278c: b0c5 sub sp, #276 ; 0x114 + 3278e: f10d 0a50 add.w sl, sp, #80 ; 0x50 + 32792: 4683 mov fp, r0 + 32794: ee08 1a10 vmov s16, r1 + 32798: 4616 mov r6, r2 + 3279a: 2100 movs r1, #0 + 3279c: 2208 movs r2, #8 + 3279e: 4650 mov r0, sl + 327a0: 461c mov r4, r3 + 327a2: 9307 str r3, [sp, #28] + 327a4: f7fb fee6 bl 2e574 + 327a8: f1bb 0f00 cmp.w fp, #0 + 327ac: d004 beq.n 327b8 <_vfiprintf_r+0x34> + 327ae: f8db 3034 ldr.w r3, [fp, #52] ; 0x34 + 327b2: 2b00 cmp r3, #0 + 327b4: f000 86a0 beq.w 334f8 <_vfiprintf_r+0xd74> + 327b8: ee18 2a10 vmov r2, s16 + 327bc: 6e53 ldr r3, [r2, #100] ; 0x64 + 327be: 07db lsls r3, r3, #31 + 327c0: f140 8513 bpl.w 331ea <_vfiprintf_r+0xa66> + 327c4: f9b2 100c ldrsh.w r1, [r2, #12] + 327c8: b28a uxth r2, r1 + 327ca: 0495 lsls r5, r2, #18 + 327cc: d40b bmi.n 327e6 <_vfiprintf_r+0x62> + 327ce: ee18 3a10 vmov r3, s16 + 327d2: f441 5100 orr.w r1, r1, #8192 ; 0x2000 + 327d6: 8199 strh r1, [r3, #12] + 327d8: 6e5b ldr r3, [r3, #100] ; 0x64 + 327da: b28a uxth r2, r1 + 327dc: ee18 1a10 vmov r1, s16 + 327e0: f423 5300 bic.w r3, r3, #8192 ; 0x2000 + 327e4: 664b str r3, [r1, #100] ; 0x64 + 327e6: 0710 lsls r0, r2, #28 + 327e8: f140 8105 bpl.w 329f6 <_vfiprintf_r+0x272> + 327ec: ee18 3a10 vmov r3, s16 + 327f0: 691b ldr r3, [r3, #16] + 327f2: 2b00 cmp r3, #0 + 327f4: f000 80ff beq.w 329f6 <_vfiprintf_r+0x272> + 327f8: f002 031a and.w r3, r2, #26 + 327fc: 2b0a cmp r3, #10 + 327fe: f000 810a beq.w 32a16 <_vfiprintf_r+0x292> + 32802: 2300 movs r3, #0 + 32804: e9cd 3319 strd r3, r3, [sp, #100] ; 0x64 + 32808: e9cd 330d strd r3, r3, [sp, #52] ; 0x34 + 3280c: aa1b add r2, sp, #108 ; 0x6c + 3280e: 930c str r3, [sp, #48] ; 0x30 + 32810: 9218 str r2, [sp, #96] ; 0x60 + 32812: 4691 mov r9, r2 + 32814: 930b str r3, [sp, #44] ; 0x2c + 32816: 9305 str r3, [sp, #20] + 32818: 46b0 mov r8, r6 + 3281a: 4644 mov r4, r8 + 3281c: 4ba8 ldr r3, [pc, #672] ; (32ac0 <_vfiprintf_r+0x33c>) + 3281e: f8d3 50e4 ldr.w r5, [r3, #228] ; 0xe4 + 32822: f7fb ff6f bl 2e704 <__locale_mb_cur_max> + 32826: 4622 mov r2, r4 + 32828: 4603 mov r3, r0 + 3282a: a912 add r1, sp, #72 ; 0x48 + 3282c: f8cd a000 str.w sl, [sp] + 32830: 4658 mov r0, fp + 32832: 47a8 blx r5 + 32834: 2800 cmp r0, #0 + 32836: f000 8145 beq.w 32ac4 <_vfiprintf_r+0x340> + 3283a: f2c0 8139 blt.w 32ab0 <_vfiprintf_r+0x32c> + 3283e: 9a12 ldr r2, [sp, #72] ; 0x48 + 32840: 2a25 cmp r2, #37 ; 0x25 + 32842: 4603 mov r3, r0 + 32844: d001 beq.n 3284a <_vfiprintf_r+0xc6> + 32846: 441c add r4, r3 + 32848: e7e8 b.n 3281c <_vfiprintf_r+0x98> + 3284a: ebb4 0608 subs.w r6, r4, r8 + 3284e: 4605 mov r5, r0 + 32850: f040 813c bne.w 32acc <_vfiprintf_r+0x348> + 32854: 2300 movs r3, #0 + 32856: 7861 ldrb r1, [r4, #1] + 32858: f88d 3043 strb.w r3, [sp, #67] ; 0x43 + 3285c: f104 0801 add.w r8, r4, #1 + 32860: 9306 str r3, [sp, #24] + 32862: f04f 37ff mov.w r7, #4294967295 ; 0xffffffff + 32866: 461e mov r6, r3 + 32868: 242b movs r4, #43 ; 0x2b + 3286a: f108 0801 add.w r8, r8, #1 + 3286e: f1a1 0320 sub.w r3, r1, #32 + 32872: 2b5a cmp r3, #90 ; 0x5a + 32874: f200 8178 bhi.w 32b68 <_vfiprintf_r+0x3e4> + 32878: e8df f013 tbh [pc, r3, lsl #1] + 3287c: 017602b5 .word 0x017602b5 + 32880: 02b00176 .word 0x02b00176 + 32884: 01760176 .word 0x01760176 + 32888: 006a0176 .word 0x006a0176 + 3288c: 01760176 .word 0x01760176 + 32890: 028d027d .word 0x028d027d + 32894: 02880176 .word 0x02880176 + 32898: 01760297 .word 0x01760297 + 3289c: 005b0292 .word 0x005b0292 + 328a0: 005b005b .word 0x005b005b + 328a4: 005b005b .word 0x005b005b + 328a8: 005b005b .word 0x005b005b + 328ac: 005b005b .word 0x005b005b + 328b0: 01760176 .word 0x01760176 + 328b4: 01760176 .word 0x01760176 + 328b8: 01760176 .word 0x01760176 + 328bc: 01760176 .word 0x01760176 + 328c0: 025c0176 .word 0x025c0176 + 328c4: 01760084 .word 0x01760084 + 328c8: 01760176 .word 0x01760176 + 328cc: 01760176 .word 0x01760176 + 328d0: 01760176 .word 0x01760176 + 328d4: 01760176 .word 0x01760176 + 328d8: 00e80176 .word 0x00e80176 + 328dc: 01760176 .word 0x01760176 + 328e0: 02330176 .word 0x02330176 + 328e4: 02da0176 .word 0x02da0176 + 328e8: 01760176 .word 0x01760176 + 328ec: 0176058b .word 0x0176058b + 328f0: 01760176 .word 0x01760176 + 328f4: 01760176 .word 0x01760176 + 328f8: 01760176 .word 0x01760176 + 328fc: 01760176 .word 0x01760176 + 32900: 025c0176 .word 0x025c0176 + 32904: 01760086 .word 0x01760086 + 32908: 01760176 .word 0x01760176 + 3290c: 008602cd .word 0x008602cd + 32910: 0176007f .word 0x0176007f + 32914: 017602c0 .word 0x017602c0 + 32918: 00ea02fd .word 0x00ea02fd + 3291c: 007f02ed .word 0x007f02ed + 32920: 02330176 .word 0x02330176 + 32924: 0569007c .word 0x0569007c + 32928: 01760176 .word 0x01760176 + 3292c: 0176056b .word 0x0176056b + 32930: 007c .short 0x007c + 32932: f1a1 0330 sub.w r3, r1, #48 ; 0x30 + 32936: 2200 movs r2, #0 + 32938: f818 1b01 ldrb.w r1, [r8], #1 + 3293c: eb02 0282 add.w r2, r2, r2, lsl #2 + 32940: eb03 0242 add.w r2, r3, r2, lsl #1 + 32944: f1a1 0330 sub.w r3, r1, #48 ; 0x30 + 32948: 2b09 cmp r3, #9 + 3294a: d9f5 bls.n 32938 <_vfiprintf_r+0x1b4> + 3294c: 9206 str r2, [sp, #24] + 3294e: e78e b.n 3286e <_vfiprintf_r+0xea> + 32950: 4658 mov r0, fp + 32952: f7fe fe6d bl 31630 <_localeconv_r> + 32956: 6843 ldr r3, [r0, #4] + 32958: 930d str r3, [sp, #52] ; 0x34 + 3295a: 4618 mov r0, r3 + 3295c: f7fc f970 bl 2ec40 + 32960: 900e str r0, [sp, #56] ; 0x38 + 32962: 4605 mov r5, r0 + 32964: 4658 mov r0, fp + 32966: f7fe fe63 bl 31630 <_localeconv_r> + 3296a: 6883 ldr r3, [r0, #8] + 3296c: 930b str r3, [sp, #44] ; 0x2c + 3296e: 2d00 cmp r5, #0 + 32970: f040 84d6 bne.w 33320 <_vfiprintf_r+0xb9c> + 32974: f898 1000 ldrb.w r1, [r8] + 32978: e777 b.n 3286a <_vfiprintf_r+0xe6> + 3297a: f898 1000 ldrb.w r1, [r8] + 3297e: f046 0620 orr.w r6, r6, #32 + 32982: e772 b.n 3286a <_vfiprintf_r+0xe6> + 32984: f046 0610 orr.w r6, r6, #16 + 32988: 06b4 lsls r4, r6, #26 + 3298a: f140 818e bpl.w 32caa <_vfiprintf_r+0x526> + 3298e: 9b07 ldr r3, [sp, #28] + 32990: 3307 adds r3, #7 + 32992: f023 0307 bic.w r3, r3, #7 + 32996: 461a mov r2, r3 + 32998: 6859 ldr r1, [r3, #4] + 3299a: f852 3b08 ldr.w r3, [r2], #8 + 3299e: 9207 str r2, [sp, #28] + 329a0: 460a mov r2, r1 + 329a2: 2900 cmp r1, #0 + 329a4: f2c0 8470 blt.w 33288 <_vfiprintf_r+0xb04> + 329a8: 1c79 adds r1, r7, #1 + 329aa: f000 85a2 beq.w 334f2 <_vfiprintf_r+0xd6e> + 329ae: f026 0180 bic.w r1, r6, #128 ; 0x80 + 329b2: 9103 str r1, [sp, #12] + 329b4: ea53 0102 orrs.w r1, r3, r2 + 329b8: f000 843f beq.w 3323a <_vfiprintf_r+0xab6> + 329bc: 2b0a cmp r3, #10 + 329be: f172 0100 sbcs.w r1, r2, #0 + 329c2: f080 8541 bcs.w 33448 <_vfiprintf_r+0xcc4> + 329c6: 3330 adds r3, #48 ; 0x30 + 329c8: f88d 310f strb.w r3, [sp, #271] ; 0x10f + 329cc: 9e03 ldr r6, [sp, #12] + 329ce: 2301 movs r3, #1 + 329d0: 9304 str r3, [sp, #16] + 329d2: f20d 140f addw r4, sp, #271 ; 0x10f + 329d6: 9b04 ldr r3, [sp, #16] + 329d8: 42bb cmp r3, r7 + 329da: bfb8 it lt + 329dc: 463b movlt r3, r7 + 329de: 9303 str r3, [sp, #12] + 329e0: 2300 movs r3, #0 + 329e2: 9308 str r3, [sp, #32] + 329e4: f89d 3043 ldrb.w r3, [sp, #67] ; 0x43 + 329e8: 2b00 cmp r3, #0 + 329ea: f000 80cb beq.w 32b84 <_vfiprintf_r+0x400> + 329ee: 9b03 ldr r3, [sp, #12] + 329f0: 3301 adds r3, #1 + 329f2: 9303 str r3, [sp, #12] + 329f4: e0c6 b.n 32b84 <_vfiprintf_r+0x400> + 329f6: ee18 1a10 vmov r1, s16 + 329fa: 4658 mov r0, fp + 329fc: ee18 5a10 vmov r5, s16 + 32a00: f001 f840 bl 33a84 <__swsetup_r> + 32a04: 2800 cmp r0, #0 + 32a06: f040 8652 bne.w 336ae <_vfiprintf_r+0xf2a> + 32a0a: 89aa ldrh r2, [r5, #12] + 32a0c: f002 031a and.w r3, r2, #26 + 32a10: 2b0a cmp r3, #10 + 32a12: f47f aef6 bne.w 32802 <_vfiprintf_r+0x7e> + 32a16: ee18 1a10 vmov r1, s16 + 32a1a: f9b1 300e ldrsh.w r3, [r1, #14] + 32a1e: 2b00 cmp r3, #0 + 32a20: f6ff aeef blt.w 32802 <_vfiprintf_r+0x7e> + 32a24: 6e4b ldr r3, [r1, #100] ; 0x64 + 32a26: 07db lsls r3, r3, #31 + 32a28: d402 bmi.n 32a30 <_vfiprintf_r+0x2ac> + 32a2a: 0597 lsls r7, r2, #22 + 32a2c: f140 8612 bpl.w 33654 <_vfiprintf_r+0xed0> + 32a30: ee18 1a10 vmov r1, s16 + 32a34: 4623 mov r3, r4 + 32a36: 4632 mov r2, r6 32a38: 4658 mov r0, fp - 32a3a: f7fc f983 bl 2ed44 <_free_r> - 32a3e: ee18 3a10 vmov r3, s16 - 32a42: f9b3 300c ldrsh.w r3, [r3, #12] - 32a46: ee18 2a10 vmov r2, s16 - 32a4a: 6e52 ldr r2, [r2, #100] ; 0x64 - 32a4c: f012 0f01 tst.w r2, #1 - 32a50: b29a uxth r2, r3 - 32a52: f000 80a0 beq.w 32b96 <_vfiprintf_r+0x512> - 32a56: 0650 lsls r0, r2, #25 - 32a58: f100 85b2 bmi.w 335c0 <_vfiprintf_r+0xf3c> - 32a5c: 9805 ldr r0, [sp, #20] - 32a5e: b045 add sp, #276 ; 0x114 - 32a60: ecbd 8b02 vpop {d8} - 32a64: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 32a68: 2900 cmp r1, #0 - 32a6a: d0cb beq.n 32a04 <_vfiprintf_r+0x380> - 32a6c: 2300 movs r3, #0 - 32a6e: f88d 3043 strb.w r3, [sp, #67] ; 0x43 - 32a72: 2301 movs r3, #1 - 32a74: e9cd 3303 strd r3, r3, [sp, #12] - 32a78: f88d 10ac strb.w r1, [sp, #172] ; 0xac - 32a7c: ac2b add r4, sp, #172 ; 0xac - 32a7e: 2300 movs r3, #0 - 32a80: 9308 str r3, [sp, #32] - 32a82: 461f mov r7, r3 - 32a84: f016 0302 ands.w r3, r6, #2 - 32a88: 9309 str r3, [sp, #36] ; 0x24 - 32a8a: d002 beq.n 32a92 <_vfiprintf_r+0x40e> - 32a8c: 9b03 ldr r3, [sp, #12] - 32a8e: 3302 adds r3, #2 - 32a90: 9303 str r3, [sp, #12] - 32a92: f016 0384 ands.w r3, r6, #132 ; 0x84 - 32a96: 930a str r3, [sp, #40] ; 0x28 - 32a98: d105 bne.n 32aa6 <_vfiprintf_r+0x422> - 32a9a: 9b06 ldr r3, [sp, #24] - 32a9c: 9a03 ldr r2, [sp, #12] - 32a9e: 1a9d subs r5, r3, r2 - 32aa0: 2d00 cmp r5, #0 - 32aa2: f300 827b bgt.w 32f9c <_vfiprintf_r+0x918> - 32aa6: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 - 32aaa: 1c41 adds r1, r0, #1 - 32aac: f89d 2043 ldrb.w r2, [sp, #67] ; 0x43 - 32ab0: b182 cbz r2, 32ad4 <_vfiprintf_r+0x450> - 32ab2: 2201 movs r2, #1 - 32ab4: 3301 adds r3, #1 - 32ab6: f8c9 2004 str.w r2, [r9, #4] - 32aba: 2907 cmp r1, #7 - 32abc: f10d 0243 add.w r2, sp, #67 ; 0x43 - 32ac0: e9cd 1319 strd r1, r3, [sp, #100] ; 0x64 - 32ac4: f8c9 2000 str.w r2, [r9] - 32ac8: f300 824a bgt.w 32f60 <_vfiprintf_r+0x8dc> - 32acc: 4608 mov r0, r1 - 32ace: f109 0908 add.w r9, r9, #8 - 32ad2: 3101 adds r1, #1 - 32ad4: 9a09 ldr r2, [sp, #36] ; 0x24 - 32ad6: b1e2 cbz r2, 32b12 <_vfiprintf_r+0x48e> - 32ad8: aa11 add r2, sp, #68 ; 0x44 - 32ada: 3302 adds r3, #2 - 32adc: f8c9 2000 str.w r2, [r9] - 32ae0: 2907 cmp r1, #7 - 32ae2: f04f 0202 mov.w r2, #2 - 32ae6: e9cd 1319 strd r1, r3, [sp, #100] ; 0x64 - 32aea: f8c9 2004 str.w r2, [r9, #4] - 32aee: f340 8250 ble.w 32f92 <_vfiprintf_r+0x90e> - 32af2: 2b00 cmp r3, #0 - 32af4: f000 8343 beq.w 3317e <_vfiprintf_r+0xafa> - 32af8: ee18 1a10 vmov r1, s16 - 32afc: aa18 add r2, sp, #96 ; 0x60 - 32afe: 4658 mov r0, fp - 32b00: f7ff fd84 bl 3260c <__sprint_r.part.0> - 32b04: 2800 cmp r0, #0 - 32b06: d194 bne.n 32a32 <_vfiprintf_r+0x3ae> - 32b08: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 - 32b0c: f10d 096c add.w r9, sp, #108 ; 0x6c - 32b10: 1c41 adds r1, r0, #1 - 32b12: 9a0a ldr r2, [sp, #40] ; 0x28 - 32b14: 2a80 cmp r2, #128 ; 0x80 - 32b16: f000 8184 beq.w 32e22 <_vfiprintf_r+0x79e> - 32b1a: 9a04 ldr r2, [sp, #16] - 32b1c: 1abd subs r5, r7, r2 - 32b1e: 2d00 cmp r5, #0 - 32b20: f300 81d7 bgt.w 32ed2 <_vfiprintf_r+0x84e> - 32b24: 9a04 ldr r2, [sp, #16] - 32b26: f8c9 4000 str.w r4, [r9] - 32b2a: 4413 add r3, r2 - 32b2c: 2907 cmp r1, #7 - 32b2e: e9cd 1319 strd r1, r3, [sp, #100] ; 0x64 - 32b32: f8c9 2004 str.w r2, [r9, #4] - 32b36: f340 816e ble.w 32e16 <_vfiprintf_r+0x792> - 32b3a: 2b00 cmp r3, #0 - 32b3c: f000 8275 beq.w 3302a <_vfiprintf_r+0x9a6> - 32b40: ee18 1a10 vmov r1, s16 - 32b44: aa18 add r2, sp, #96 ; 0x60 - 32b46: 4658 mov r0, fp - 32b48: f7ff fd60 bl 3260c <__sprint_r.part.0> - 32b4c: 2800 cmp r0, #0 - 32b4e: f47f af70 bne.w 32a32 <_vfiprintf_r+0x3ae> - 32b52: 9b1a ldr r3, [sp, #104] ; 0x68 - 32b54: f10d 096c add.w r9, sp, #108 ; 0x6c - 32b58: 0775 lsls r5, r6, #29 - 32b5a: d505 bpl.n 32b68 <_vfiprintf_r+0x4e4> - 32b5c: 9a06 ldr r2, [sp, #24] - 32b5e: 9903 ldr r1, [sp, #12] - 32b60: 1a54 subs r4, r2, r1 - 32b62: 2c00 cmp r4, #0 - 32b64: f300 826b bgt.w 3303e <_vfiprintf_r+0x9ba> - 32b68: e9dd 2105 ldrd r2, r1, [sp, #20] - 32b6c: 9803 ldr r0, [sp, #12] - 32b6e: 4281 cmp r1, r0 - 32b70: bfac ite ge - 32b72: 1852 addge r2, r2, r1 - 32b74: 1812 addlt r2, r2, r0 - 32b76: 9205 str r2, [sp, #20] - 32b78: 2b00 cmp r3, #0 - 32b7a: f47f af51 bne.w 32a20 <_vfiprintf_r+0x39c> - 32b7e: 9908 ldr r1, [sp, #32] - 32b80: 2300 movs r3, #0 - 32b82: 9319 str r3, [sp, #100] ; 0x64 - 32b84: 2900 cmp r1, #0 - 32b86: f000 8149 beq.w 32e1c <_vfiprintf_r+0x798> - 32b8a: 4658 mov r0, fp - 32b8c: f7fc f8da bl 2ed44 <_free_r> - 32b90: f10d 096c add.w r9, sp, #108 ; 0x6c - 32b94: e5c1 b.n 3271a <_vfiprintf_r+0x96> - 32b96: 059c lsls r4, r3, #22 - 32b98: f53f af5d bmi.w 32a56 <_vfiprintf_r+0x3d2> - 32b9c: ee18 4a10 vmov r4, s16 - 32ba0: 6da0 ldr r0, [r4, #88] ; 0x58 - 32ba2: f7fb ff73 bl 2ea8c <__retarget_lock_release_recursive> - 32ba6: 89a2 ldrh r2, [r4, #12] - 32ba8: e755 b.n 32a56 <_vfiprintf_r+0x3d2> - 32baa: 06f0 lsls r0, r6, #27 - 32bac: 9a07 ldr r2, [sp, #28] - 32bae: f100 831f bmi.w 331f0 <_vfiprintf_r+0xb6c> - 32bb2: 0671 lsls r1, r6, #25 - 32bb4: f140 8319 bpl.w 331ea <_vfiprintf_r+0xb66> - 32bb8: f932 3b04 ldrsh.w r3, [r2], #4 - 32bbc: 9207 str r2, [sp, #28] - 32bbe: 17da asrs r2, r3, #31 - 32bc0: 4611 mov r1, r2 - 32bc2: e66e b.n 328a2 <_vfiprintf_r+0x21e> - 32bc4: f016 0310 ands.w r3, r6, #16 - 32bc8: 9907 ldr r1, [sp, #28] - 32bca: f040 8309 bne.w 331e0 <_vfiprintf_r+0xb5c> - 32bce: f016 0040 ands.w r0, r6, #64 ; 0x40 - 32bd2: f000 8301 beq.w 331d8 <_vfiprintf_r+0xb54> - 32bd6: 461a mov r2, r3 - 32bd8: f851 3b04 ldr.w r3, [r1], #4 - 32bdc: 9107 str r1, [sp, #28] - 32bde: b29b uxth r3, r3 - 32be0: e6c3 b.n 3296a <_vfiprintf_r+0x2e6> - 32be2: 9b07 ldr r3, [sp, #28] - 32be4: 461a mov r2, r3 - 32be6: 2300 movs r3, #0 - 32be8: f88d 3043 strb.w r3, [sp, #67] ; 0x43 - 32bec: 4613 mov r3, r2 - 32bee: f853 4b04 ldr.w r4, [r3], #4 - 32bf2: 9303 str r3, [sp, #12] - 32bf4: 2c00 cmp r4, #0 - 32bf6: f000 8412 beq.w 3341e <_vfiprintf_r+0xd9a> - 32bfa: 2953 cmp r1, #83 ; 0x53 - 32bfc: f000 8365 beq.w 332ca <_vfiprintf_r+0xc46> - 32c00: f016 0510 ands.w r5, r6, #16 - 32c04: f040 8361 bne.w 332ca <_vfiprintf_r+0xc46> - 32c08: 1c7b adds r3, r7, #1 - 32c0a: f000 84b3 beq.w 33574 <_vfiprintf_r+0xef0> - 32c0e: 463a mov r2, r7 - 32c10: 4629 mov r1, r5 - 32c12: 4620 mov r0, r4 - 32c14: f7fb ff3c bl 2ea90 - 32c18: 9008 str r0, [sp, #32] - 32c1a: 2800 cmp r0, #0 - 32c1c: f000 849f beq.w 3355e <_vfiprintf_r+0xeda> - 32c20: 1b03 subs r3, r0, r4 - 32c22: 9a03 ldr r2, [sp, #12] - 32c24: 9304 str r3, [sp, #16] - 32c26: ea23 73e3 bic.w r3, r3, r3, asr #31 - 32c2a: 462f mov r7, r5 - 32c2c: 9207 str r2, [sp, #28] - 32c2e: 9303 str r3, [sp, #12] - 32c30: 9508 str r5, [sp, #32] - 32c32: e657 b.n 328e4 <_vfiprintf_r+0x260> - 32c34: 2943 cmp r1, #67 ; 0x43 - 32c36: d002 beq.n 32c3e <_vfiprintf_r+0x5ba> - 32c38: 06f5 lsls r5, r6, #27 - 32c3a: f140 832d bpl.w 33298 <_vfiprintf_r+0xc14> - 32c3e: 9d07 ldr r5, [sp, #28] - 32c40: 2208 movs r2, #8 - 32c42: 2100 movs r1, #0 - 32c44: a816 add r0, sp, #88 ; 0x58 - 32c46: ac2b add r4, sp, #172 ; 0xac - 32c48: f7fb fc20 bl 2e48c - 32c4c: ab16 add r3, sp, #88 ; 0x58 - 32c4e: f855 2b04 ldr.w r2, [r5], #4 - 32c52: 4621 mov r1, r4 - 32c54: 4658 mov r0, fp - 32c56: f7fe fcad bl 315b4 <_wcrtomb_r> - 32c5a: 4603 mov r3, r0 - 32c5c: 3301 adds r3, #1 - 32c5e: 9004 str r0, [sp, #16] - 32c60: f000 84b3 beq.w 335ca <_vfiprintf_r+0xf46> - 32c64: 9b04 ldr r3, [sp, #16] - 32c66: 9507 str r5, [sp, #28] - 32c68: ea23 73e3 bic.w r3, r3, r3, asr #31 - 32c6c: 9303 str r3, [sp, #12] - 32c6e: 2300 movs r3, #0 - 32c70: f88d 3043 strb.w r3, [sp, #67] ; 0x43 - 32c74: e703 b.n 32a7e <_vfiprintf_r+0x3fa> - 32c76: 9b07 ldr r3, [sp, #28] - 32c78: f853 2b04 ldr.w r2, [r3], #4 - 32c7c: 9206 str r2, [sp, #24] - 32c7e: 2a00 cmp r2, #0 - 32c80: f280 829c bge.w 331bc <_vfiprintf_r+0xb38> - 32c84: 9a06 ldr r2, [sp, #24] - 32c86: 4252 negs r2, r2 - 32c88: e9cd 2306 strd r2, r3, [sp, #24] - 32c8c: f898 1000 ldrb.w r1, [r8] - 32c90: f046 0604 orr.w r6, r6, #4 - 32c94: e569 b.n 3276a <_vfiprintf_r+0xe6> - 32c96: f898 1000 ldrb.w r1, [r8] - 32c9a: f88d 4043 strb.w r4, [sp, #67] ; 0x43 - 32c9e: e564 b.n 3276a <_vfiprintf_r+0xe6> - 32ca0: f898 1000 ldrb.w r1, [r8] - 32ca4: f046 0680 orr.w r6, r6, #128 ; 0x80 - 32ca8: e55f b.n 3276a <_vfiprintf_r+0xe6> - 32caa: 4642 mov r2, r8 - 32cac: f812 1b01 ldrb.w r1, [r2], #1 - 32cb0: 292a cmp r1, #42 ; 0x2a - 32cb2: f000 8496 beq.w 335e2 <_vfiprintf_r+0xf5e> - 32cb6: f1a1 0330 sub.w r3, r1, #48 ; 0x30 - 32cba: 2b09 cmp r3, #9 - 32cbc: 4690 mov r8, r2 - 32cbe: f04f 0700 mov.w r7, #0 - 32cc2: f63f ad54 bhi.w 3276e <_vfiprintf_r+0xea> - 32cc6: f818 1b01 ldrb.w r1, [r8], #1 - 32cca: eb07 0787 add.w r7, r7, r7, lsl #2 - 32cce: eb03 0747 add.w r7, r3, r7, lsl #1 - 32cd2: f1a1 0330 sub.w r3, r1, #48 ; 0x30 - 32cd6: 2b09 cmp r3, #9 - 32cd8: d9f5 bls.n 32cc6 <_vfiprintf_r+0x642> - 32cda: e548 b.n 3276e <_vfiprintf_r+0xea> - 32cdc: f898 1000 ldrb.w r1, [r8] - 32ce0: f046 0601 orr.w r6, r6, #1 - 32ce4: e541 b.n 3276a <_vfiprintf_r+0xe6> - 32ce6: f89d 3043 ldrb.w r3, [sp, #67] ; 0x43 - 32cea: 2b00 cmp r3, #0 - 32cec: f47f adc2 bne.w 32874 <_vfiprintf_r+0x1f0> - 32cf0: 2320 movs r3, #32 - 32cf2: f898 1000 ldrb.w r1, [r8] - 32cf6: f88d 3043 strb.w r3, [sp, #67] ; 0x43 - 32cfa: e536 b.n 3276a <_vfiprintf_r+0xe6> - 32cfc: f898 1000 ldrb.w r1, [r8] - 32d00: 296c cmp r1, #108 ; 0x6c - 32d02: bf03 ittte eq - 32d04: f898 1001 ldrbeq.w r1, [r8, #1] - 32d08: f046 0620 orreq.w r6, r6, #32 - 32d0c: f108 0801 addeq.w r8, r8, #1 - 32d10: f046 0610 orrne.w r6, r6, #16 - 32d14: e529 b.n 3276a <_vfiprintf_r+0xe6> - 32d16: f898 1000 ldrb.w r1, [r8] - 32d1a: 2968 cmp r1, #104 ; 0x68 - 32d1c: bf03 ittte eq - 32d1e: f898 1001 ldrbeq.w r1, [r8, #1] - 32d22: f446 7600 orreq.w r6, r6, #512 ; 0x200 - 32d26: f108 0801 addeq.w r8, r8, #1 - 32d2a: f046 0640 orrne.w r6, r6, #64 ; 0x40 - 32d2e: e51c b.n 3276a <_vfiprintf_r+0xe6> - 32d30: f046 0310 orr.w r3, r6, #16 - 32d34: 9303 str r3, [sp, #12] - 32d36: 9b03 ldr r3, [sp, #12] - 32d38: f013 0220 ands.w r2, r3, #32 - 32d3c: f000 8206 beq.w 3314c <_vfiprintf_r+0xac8> - 32d40: 9b07 ldr r3, [sp, #28] - 32d42: 3307 adds r3, #7 - 32d44: f023 0307 bic.w r3, r3, #7 - 32d48: 4619 mov r1, r3 - 32d4a: 685a ldr r2, [r3, #4] - 32d4c: f851 3b08 ldr.w r3, [r1], #8 - 32d50: 9107 str r1, [sp, #28] - 32d52: 2101 movs r1, #1 - 32d54: e60d b.n 32972 <_vfiprintf_r+0x2ee> - 32d56: 9a07 ldr r2, [sp, #28] - 32d58: f046 0302 orr.w r3, r6, #2 - 32d5c: 9303 str r3, [sp, #12] - 32d5e: f852 3b04 ldr.w r3, [r2], #4 - 32d62: 9207 str r2, [sp, #28] - 32d64: f647 0230 movw r2, #30768 ; 0x7830 - 32d68: f8ad 2044 strh.w r2, [sp, #68] ; 0x44 - 32d6c: 4ab8 ldr r2, [pc, #736] ; (33050 <_vfiprintf_r+0x9cc>) - 32d6e: 920c str r2, [sp, #48] ; 0x30 - 32d70: 2102 movs r1, #2 - 32d72: 2200 movs r2, #0 - 32d74: e5fd b.n 32972 <_vfiprintf_r+0x2ee> - 32d76: 06b7 lsls r7, r6, #26 - 32d78: f100 8248 bmi.w 3320c <_vfiprintf_r+0xb88> - 32d7c: 06f5 lsls r5, r6, #27 - 32d7e: f100 8346 bmi.w 3340e <_vfiprintf_r+0xd8a> - 32d82: 0674 lsls r4, r6, #25 - 32d84: f100 83d5 bmi.w 33532 <_vfiprintf_r+0xeae> - 32d88: 05b0 lsls r0, r6, #22 - 32d8a: f140 8340 bpl.w 3340e <_vfiprintf_r+0xd8a> - 32d8e: 9b07 ldr r3, [sp, #28] - 32d90: 9905 ldr r1, [sp, #20] - 32d92: f853 2b04 ldr.w r2, [r3], #4 - 32d96: 9307 str r3, [sp, #28] - 32d98: 7011 strb r1, [r2, #0] - 32d9a: e4be b.n 3271a <_vfiprintf_r+0x96> - 32d9c: 9603 str r6, [sp, #12] - 32d9e: 2901 cmp r1, #1 - 32da0: f43f ad8c beq.w 328bc <_vfiprintf_r+0x238> - 32da4: 2902 cmp r1, #2 - 32da6: ac44 add r4, sp, #272 ; 0x110 - 32da8: d111 bne.n 32dce <_vfiprintf_r+0x74a> - 32daa: 980c ldr r0, [sp, #48] ; 0x30 - 32dac: f003 010f and.w r1, r3, #15 - 32db0: 091b lsrs r3, r3, #4 - 32db2: 5c41 ldrb r1, [r0, r1] - 32db4: f804 1d01 strb.w r1, [r4, #-1]! - 32db8: ea43 7302 orr.w r3, r3, r2, lsl #28 - 32dbc: 0912 lsrs r2, r2, #4 - 32dbe: ea53 0102 orrs.w r1, r3, r2 - 32dc2: d1f3 bne.n 32dac <_vfiprintf_r+0x728> - 32dc4: 9e03 ldr r6, [sp, #12] - 32dc6: ab44 add r3, sp, #272 ; 0x110 - 32dc8: 1b1b subs r3, r3, r4 - 32dca: 9304 str r3, [sp, #16] - 32dcc: e583 b.n 328d6 <_vfiprintf_r+0x252> - 32dce: f003 0107 and.w r1, r3, #7 - 32dd2: 08db lsrs r3, r3, #3 - 32dd4: ea43 7342 orr.w r3, r3, r2, lsl #29 - 32dd8: 08d2 lsrs r2, r2, #3 - 32dda: 3130 adds r1, #48 ; 0x30 - 32ddc: ea53 0502 orrs.w r5, r3, r2 - 32de0: 4620 mov r0, r4 - 32de2: f804 1d01 strb.w r1, [r4, #-1]! - 32de6: d1f2 bne.n 32dce <_vfiprintf_r+0x74a> - 32de8: 9e03 ldr r6, [sp, #12] - 32dea: 07f3 lsls r3, r6, #31 - 32dec: d5eb bpl.n 32dc6 <_vfiprintf_r+0x742> - 32dee: 2930 cmp r1, #48 ; 0x30 - 32df0: d0e8 beq.n 32dc4 <_vfiprintf_r+0x740> - 32df2: 2330 movs r3, #48 ; 0x30 - 32df4: 3802 subs r0, #2 - 32df6: f804 3c01 strb.w r3, [r4, #-1] - 32dfa: ab44 add r3, sp, #272 ; 0x110 - 32dfc: 1a1b subs r3, r3, r0 - 32dfe: 9e03 ldr r6, [sp, #12] - 32e00: 9304 str r3, [sp, #16] - 32e02: 4604 mov r4, r0 - 32e04: e567 b.n 328d6 <_vfiprintf_r+0x252> - 32e06: 9b04 ldr r3, [sp, #16] - 32e08: 941b str r4, [sp, #108] ; 0x6c - 32e0a: 2201 movs r2, #1 - 32e0c: 931c str r3, [sp, #112] ; 0x70 - 32e0e: 931a str r3, [sp, #104] ; 0x68 - 32e10: 9219 str r2, [sp, #100] ; 0x64 - 32e12: f10d 096c add.w r9, sp, #108 ; 0x6c - 32e16: f109 0908 add.w r9, r9, #8 - 32e1a: e69d b.n 32b58 <_vfiprintf_r+0x4d4> - 32e1c: f10d 096c add.w r9, sp, #108 ; 0x6c - 32e20: e47b b.n 3271a <_vfiprintf_r+0x96> - 32e22: 9a06 ldr r2, [sp, #24] - 32e24: 9d03 ldr r5, [sp, #12] - 32e26: 1b55 subs r5, r2, r5 - 32e28: 2d00 cmp r5, #0 - 32e2a: f77f ae76 ble.w 32b1a <_vfiprintf_r+0x496> - 32e2e: 2d10 cmp r5, #16 - 32e30: f340 83bb ble.w 335aa <_vfiprintf_r+0xf26> - 32e34: 9409 str r4, [sp, #36] ; 0x24 - 32e36: ee18 4a10 vmov r4, s16 - 32e3a: e007 b.n 32e4c <_vfiprintf_r+0x7c8> - 32e3c: f100 0c02 add.w ip, r0, #2 - 32e40: f109 0908 add.w r9, r9, #8 - 32e44: 4610 mov r0, r2 - 32e46: 3d10 subs r5, #16 - 32e48: 2d10 cmp r5, #16 - 32e4a: dd1e ble.n 32e8a <_vfiprintf_r+0x806> - 32e4c: 4981 ldr r1, [pc, #516] ; (33054 <_vfiprintf_r+0x9d0>) - 32e4e: f8c9 1000 str.w r1, [r9] - 32e52: 1c42 adds r2, r0, #1 - 32e54: 3310 adds r3, #16 - 32e56: 2110 movs r1, #16 - 32e58: 2a07 cmp r2, #7 - 32e5a: e9cd 2319 strd r2, r3, [sp, #100] ; 0x64 - 32e5e: f8c9 1004 str.w r1, [r9, #4] - 32e62: ddeb ble.n 32e3c <_vfiprintf_r+0x7b8> - 32e64: aa18 add r2, sp, #96 ; 0x60 - 32e66: 2b00 cmp r3, #0 - 32e68: d074 beq.n 32f54 <_vfiprintf_r+0x8d0> - 32e6a: 4621 mov r1, r4 - 32e6c: 4658 mov r0, fp - 32e6e: f10d 096c add.w r9, sp, #108 ; 0x6c - 32e72: f7ff fbcb bl 3260c <__sprint_r.part.0> - 32e76: 2800 cmp r0, #0 - 32e78: f47f addb bne.w 32a32 <_vfiprintf_r+0x3ae> - 32e7c: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 - 32e80: 3d10 subs r5, #16 - 32e82: 2d10 cmp r5, #16 - 32e84: f100 0c01 add.w ip, r0, #1 - 32e88: dce0 bgt.n 32e4c <_vfiprintf_r+0x7c8> - 32e8a: 9c09 ldr r4, [sp, #36] ; 0x24 - 32e8c: 4a71 ldr r2, [pc, #452] ; (33054 <_vfiprintf_r+0x9d0>) - 32e8e: f8c9 5004 str.w r5, [r9, #4] - 32e92: 442b add r3, r5 - 32e94: f1bc 0f07 cmp.w ip, #7 - 32e98: e9cd c319 strd ip, r3, [sp, #100] ; 0x64 - 32e9c: f8c9 2000 str.w r2, [r9] - 32ea0: f340 8194 ble.w 331cc <_vfiprintf_r+0xb48> - 32ea4: 2b00 cmp r3, #0 - 32ea6: f000 831f beq.w 334e8 <_vfiprintf_r+0xe64> - 32eaa: ee18 1a10 vmov r1, s16 - 32eae: aa18 add r2, sp, #96 ; 0x60 - 32eb0: 4658 mov r0, fp - 32eb2: f7ff fbab bl 3260c <__sprint_r.part.0> - 32eb6: 2800 cmp r0, #0 - 32eb8: f47f adbb bne.w 32a32 <_vfiprintf_r+0x3ae> - 32ebc: 9a04 ldr r2, [sp, #16] - 32ebe: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 - 32ec2: 1abd subs r5, r7, r2 - 32ec4: 2d00 cmp r5, #0 - 32ec6: f100 0101 add.w r1, r0, #1 - 32eca: f10d 096c add.w r9, sp, #108 ; 0x6c - 32ece: f77f ae29 ble.w 32b24 <_vfiprintf_r+0x4a0> - 32ed2: 2d10 cmp r5, #16 - 32ed4: dd29 ble.n 32f2a <_vfiprintf_r+0x8a6> - 32ed6: 9409 str r4, [sp, #36] ; 0x24 - 32ed8: 2710 movs r7, #16 - 32eda: ee18 4a10 vmov r4, s16 - 32ede: e007 b.n 32ef0 <_vfiprintf_r+0x86c> - 32ee0: f100 0c02 add.w ip, r0, #2 - 32ee4: f109 0908 add.w r9, r9, #8 - 32ee8: 4610 mov r0, r2 - 32eea: 3d10 subs r5, #16 - 32eec: 2d10 cmp r5, #16 - 32eee: dd1a ble.n 32f26 <_vfiprintf_r+0x8a2> - 32ef0: 1c42 adds r2, r0, #1 - 32ef2: 4958 ldr r1, [pc, #352] ; (33054 <_vfiprintf_r+0x9d0>) - 32ef4: 3310 adds r3, #16 - 32ef6: 2a07 cmp r2, #7 - 32ef8: e9c9 1700 strd r1, r7, [r9] - 32efc: e9cd 2319 strd r2, r3, [sp, #100] ; 0x64 - 32f00: ddee ble.n 32ee0 <_vfiprintf_r+0x85c> - 32f02: aa18 add r2, sp, #96 ; 0x60 - 32f04: b303 cbz r3, 32f48 <_vfiprintf_r+0x8c4> - 32f06: 4621 mov r1, r4 - 32f08: 4658 mov r0, fp - 32f0a: f10d 096c add.w r9, sp, #108 ; 0x6c - 32f0e: f7ff fb7d bl 3260c <__sprint_r.part.0> - 32f12: 2800 cmp r0, #0 - 32f14: f47f ad8d bne.w 32a32 <_vfiprintf_r+0x3ae> - 32f18: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 - 32f1c: 3d10 subs r5, #16 - 32f1e: 2d10 cmp r5, #16 - 32f20: f100 0c01 add.w ip, r0, #1 - 32f24: dce4 bgt.n 32ef0 <_vfiprintf_r+0x86c> - 32f26: 9c09 ldr r4, [sp, #36] ; 0x24 - 32f28: 4661 mov r1, ip - 32f2a: 4a4a ldr r2, [pc, #296] ; (33054 <_vfiprintf_r+0x9d0>) - 32f2c: f8c9 5004 str.w r5, [r9, #4] - 32f30: 442b add r3, r5 - 32f32: 2907 cmp r1, #7 - 32f34: e9cd 1319 strd r1, r3, [sp, #100] ; 0x64 - 32f38: f8c9 2000 str.w r2, [r9] - 32f3c: f300 80e7 bgt.w 3310e <_vfiprintf_r+0xa8a> + 32a3a: f000 fe69 bl 33710 <__sbprintf> + 32a3e: 9005 str r0, [sp, #20] + 32a40: 9805 ldr r0, [sp, #20] + 32a42: b045 add sp, #276 ; 0x114 + 32a44: ecbd 8b02 vpop {d8} + 32a48: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 32a4c: f046 0610 orr.w r6, r6, #16 + 32a50: f016 0220 ands.w r2, r6, #32 + 32a54: f000 8136 beq.w 32cc4 <_vfiprintf_r+0x540> + 32a58: 9b07 ldr r3, [sp, #28] + 32a5a: 3307 adds r3, #7 + 32a5c: f023 0307 bic.w r3, r3, #7 + 32a60: 4619 mov r1, r3 + 32a62: 685a ldr r2, [r3, #4] + 32a64: f851 3b08 ldr.w r3, [r1], #8 + 32a68: 9107 str r1, [sp, #28] + 32a6a: f426 6180 bic.w r1, r6, #1024 ; 0x400 + 32a6e: 9103 str r1, [sp, #12] + 32a70: 2100 movs r1, #0 + 32a72: 2000 movs r0, #0 + 32a74: f88d 0043 strb.w r0, [sp, #67] ; 0x43 + 32a78: 1c78 adds r0, r7, #1 + 32a7a: f000 8210 beq.w 32e9e <_vfiprintf_r+0x71a> + 32a7e: 9803 ldr r0, [sp, #12] + 32a80: f020 0680 bic.w r6, r0, #128 ; 0x80 + 32a84: ea53 0002 orrs.w r0, r3, r2 + 32a88: f040 8208 bne.w 32e9c <_vfiprintf_r+0x718> + 32a8c: 2f00 cmp r7, #0 + 32a8e: f040 8538 bne.w 33502 <_vfiprintf_r+0xd7e> + 32a92: 2900 cmp r1, #0 + 32a94: f040 83d5 bne.w 33242 <_vfiprintf_r+0xabe> + 32a98: 9b03 ldr r3, [sp, #12] + 32a9a: f013 0301 ands.w r3, r3, #1 + 32a9e: 9304 str r3, [sp, #16] + 32aa0: f000 8411 beq.w 332c6 <_vfiprintf_r+0xb42> + 32aa4: 2330 movs r3, #48 ; 0x30 + 32aa6: f88d 310f strb.w r3, [sp, #271] ; 0x10f + 32aaa: f20d 140f addw r4, sp, #271 ; 0x10f + 32aae: e792 b.n 329d6 <_vfiprintf_r+0x252> + 32ab0: 2208 movs r2, #8 + 32ab2: 2100 movs r1, #0 + 32ab4: 4650 mov r0, sl + 32ab6: f7fb fd5d bl 2e574 + 32aba: 2301 movs r3, #1 + 32abc: 441c add r4, r3 + 32abe: e6ad b.n 3281c <_vfiprintf_r+0x98> + 32ac0: 20004ce8 .word 0x20004ce8 + 32ac4: ebb4 0608 subs.w r6, r4, r8 + 32ac8: 4605 mov r5, r0 + 32aca: d01b beq.n 32b04 <_vfiprintf_r+0x380> + 32acc: 9b19 ldr r3, [sp, #100] ; 0x64 + 32ace: 9a1a ldr r2, [sp, #104] ; 0x68 + 32ad0: 3301 adds r3, #1 + 32ad2: 4432 add r2, r6 + 32ad4: 2b07 cmp r3, #7 + 32ad6: e9c9 8600 strd r8, r6, [r9] + 32ada: 921a str r2, [sp, #104] ; 0x68 + 32adc: 9319 str r3, [sp, #100] ; 0x64 + 32ade: dd1c ble.n 32b1a <_vfiprintf_r+0x396> + 32ae0: 2a00 cmp r2, #0 + 32ae2: f000 83a6 beq.w 33232 <_vfiprintf_r+0xaae> + 32ae6: ee18 1a10 vmov r1, s16 + 32aea: aa18 add r2, sp, #96 ; 0x60 + 32aec: 4658 mov r0, fp + 32aee: f7ff fe0d bl 3270c <__sprint_r.part.0> + 32af2: bb20 cbnz r0, 32b3e <_vfiprintf_r+0x3ba> + 32af4: f10d 096c add.w r9, sp, #108 ; 0x6c + 32af8: 9b05 ldr r3, [sp, #20] + 32afa: 4433 add r3, r6 + 32afc: 9305 str r3, [sp, #20] + 32afe: 2d00 cmp r5, #0 + 32b00: f47f aea8 bne.w 32854 <_vfiprintf_r+0xd0> + 32b04: 9b1a ldr r3, [sp, #104] ; 0x68 + 32b06: 2b00 cmp r3, #0 + 32b08: f040 85c1 bne.w 3368e <_vfiprintf_r+0xf0a> + 32b0c: ee18 3a10 vmov r3, s16 + 32b10: 2200 movs r2, #0 + 32b12: f9b3 300c ldrsh.w r3, [r3, #12] + 32b16: 9219 str r2, [sp, #100] ; 0x64 + 32b18: e015 b.n 32b46 <_vfiprintf_r+0x3c2> + 32b1a: f109 0908 add.w r9, r9, #8 + 32b1e: e7eb b.n 32af8 <_vfiprintf_r+0x374> + 32b20: ee18 1a10 vmov r1, s16 + 32b24: aa18 add r2, sp, #96 ; 0x60 + 32b26: 4658 mov r0, fp + 32b28: f7ff fdf0 bl 3270c <__sprint_r.part.0> + 32b2c: 2800 cmp r0, #0 + 32b2e: f000 80a6 beq.w 32c7e <_vfiprintf_r+0x4fa> + 32b32: 9b08 ldr r3, [sp, #32] + 32b34: b11b cbz r3, 32b3e <_vfiprintf_r+0x3ba> + 32b36: 9908 ldr r1, [sp, #32] + 32b38: 4658 mov r0, fp + 32b3a: f7fc f983 bl 2ee44 <_free_r> + 32b3e: ee18 3a10 vmov r3, s16 + 32b42: f9b3 300c ldrsh.w r3, [r3, #12] + 32b46: ee18 2a10 vmov r2, s16 + 32b4a: 6e52 ldr r2, [r2, #100] ; 0x64 + 32b4c: f012 0f01 tst.w r2, #1 + 32b50: b29a uxth r2, r3 + 32b52: f000 80a0 beq.w 32c96 <_vfiprintf_r+0x512> + 32b56: 0650 lsls r0, r2, #25 + 32b58: f100 85b2 bmi.w 336c0 <_vfiprintf_r+0xf3c> + 32b5c: 9805 ldr r0, [sp, #20] + 32b5e: b045 add sp, #276 ; 0x114 + 32b60: ecbd 8b02 vpop {d8} + 32b64: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 32b68: 2900 cmp r1, #0 + 32b6a: d0cb beq.n 32b04 <_vfiprintf_r+0x380> + 32b6c: 2300 movs r3, #0 + 32b6e: f88d 3043 strb.w r3, [sp, #67] ; 0x43 + 32b72: 2301 movs r3, #1 + 32b74: e9cd 3303 strd r3, r3, [sp, #12] + 32b78: f88d 10ac strb.w r1, [sp, #172] ; 0xac + 32b7c: ac2b add r4, sp, #172 ; 0xac + 32b7e: 2300 movs r3, #0 + 32b80: 9308 str r3, [sp, #32] + 32b82: 461f mov r7, r3 + 32b84: f016 0302 ands.w r3, r6, #2 + 32b88: 9309 str r3, [sp, #36] ; 0x24 + 32b8a: d002 beq.n 32b92 <_vfiprintf_r+0x40e> + 32b8c: 9b03 ldr r3, [sp, #12] + 32b8e: 3302 adds r3, #2 + 32b90: 9303 str r3, [sp, #12] + 32b92: f016 0384 ands.w r3, r6, #132 ; 0x84 + 32b96: 930a str r3, [sp, #40] ; 0x28 + 32b98: d105 bne.n 32ba6 <_vfiprintf_r+0x422> + 32b9a: 9b06 ldr r3, [sp, #24] + 32b9c: 9a03 ldr r2, [sp, #12] + 32b9e: 1a9d subs r5, r3, r2 + 32ba0: 2d00 cmp r5, #0 + 32ba2: f300 827b bgt.w 3309c <_vfiprintf_r+0x918> + 32ba6: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 + 32baa: 1c41 adds r1, r0, #1 + 32bac: f89d 2043 ldrb.w r2, [sp, #67] ; 0x43 + 32bb0: b182 cbz r2, 32bd4 <_vfiprintf_r+0x450> + 32bb2: 2201 movs r2, #1 + 32bb4: 3301 adds r3, #1 + 32bb6: f8c9 2004 str.w r2, [r9, #4] + 32bba: 2907 cmp r1, #7 + 32bbc: f10d 0243 add.w r2, sp, #67 ; 0x43 + 32bc0: e9cd 1319 strd r1, r3, [sp, #100] ; 0x64 + 32bc4: f8c9 2000 str.w r2, [r9] + 32bc8: f300 824a bgt.w 33060 <_vfiprintf_r+0x8dc> + 32bcc: 4608 mov r0, r1 + 32bce: f109 0908 add.w r9, r9, #8 + 32bd2: 3101 adds r1, #1 + 32bd4: 9a09 ldr r2, [sp, #36] ; 0x24 + 32bd6: b1e2 cbz r2, 32c12 <_vfiprintf_r+0x48e> + 32bd8: aa11 add r2, sp, #68 ; 0x44 + 32bda: 3302 adds r3, #2 + 32bdc: f8c9 2000 str.w r2, [r9] + 32be0: 2907 cmp r1, #7 + 32be2: f04f 0202 mov.w r2, #2 + 32be6: e9cd 1319 strd r1, r3, [sp, #100] ; 0x64 + 32bea: f8c9 2004 str.w r2, [r9, #4] + 32bee: f340 8250 ble.w 33092 <_vfiprintf_r+0x90e> + 32bf2: 2b00 cmp r3, #0 + 32bf4: f000 8343 beq.w 3327e <_vfiprintf_r+0xafa> + 32bf8: ee18 1a10 vmov r1, s16 + 32bfc: aa18 add r2, sp, #96 ; 0x60 + 32bfe: 4658 mov r0, fp + 32c00: f7ff fd84 bl 3270c <__sprint_r.part.0> + 32c04: 2800 cmp r0, #0 + 32c06: d194 bne.n 32b32 <_vfiprintf_r+0x3ae> + 32c08: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 + 32c0c: f10d 096c add.w r9, sp, #108 ; 0x6c + 32c10: 1c41 adds r1, r0, #1 + 32c12: 9a0a ldr r2, [sp, #40] ; 0x28 + 32c14: 2a80 cmp r2, #128 ; 0x80 + 32c16: f000 8184 beq.w 32f22 <_vfiprintf_r+0x79e> + 32c1a: 9a04 ldr r2, [sp, #16] + 32c1c: 1abd subs r5, r7, r2 + 32c1e: 2d00 cmp r5, #0 + 32c20: f300 81d7 bgt.w 32fd2 <_vfiprintf_r+0x84e> + 32c24: 9a04 ldr r2, [sp, #16] + 32c26: f8c9 4000 str.w r4, [r9] + 32c2a: 4413 add r3, r2 + 32c2c: 2907 cmp r1, #7 + 32c2e: e9cd 1319 strd r1, r3, [sp, #100] ; 0x64 + 32c32: f8c9 2004 str.w r2, [r9, #4] + 32c36: f340 816e ble.w 32f16 <_vfiprintf_r+0x792> + 32c3a: 2b00 cmp r3, #0 + 32c3c: f000 8275 beq.w 3312a <_vfiprintf_r+0x9a6> + 32c40: ee18 1a10 vmov r1, s16 + 32c44: aa18 add r2, sp, #96 ; 0x60 + 32c46: 4658 mov r0, fp + 32c48: f7ff fd60 bl 3270c <__sprint_r.part.0> + 32c4c: 2800 cmp r0, #0 + 32c4e: f47f af70 bne.w 32b32 <_vfiprintf_r+0x3ae> + 32c52: 9b1a ldr r3, [sp, #104] ; 0x68 + 32c54: f10d 096c add.w r9, sp, #108 ; 0x6c + 32c58: 0775 lsls r5, r6, #29 + 32c5a: d505 bpl.n 32c68 <_vfiprintf_r+0x4e4> + 32c5c: 9a06 ldr r2, [sp, #24] + 32c5e: 9903 ldr r1, [sp, #12] + 32c60: 1a54 subs r4, r2, r1 + 32c62: 2c00 cmp r4, #0 + 32c64: f300 826b bgt.w 3313e <_vfiprintf_r+0x9ba> + 32c68: e9dd 2105 ldrd r2, r1, [sp, #20] + 32c6c: 9803 ldr r0, [sp, #12] + 32c6e: 4281 cmp r1, r0 + 32c70: bfac ite ge + 32c72: 1852 addge r2, r2, r1 + 32c74: 1812 addlt r2, r2, r0 + 32c76: 9205 str r2, [sp, #20] + 32c78: 2b00 cmp r3, #0 + 32c7a: f47f af51 bne.w 32b20 <_vfiprintf_r+0x39c> + 32c7e: 9908 ldr r1, [sp, #32] + 32c80: 2300 movs r3, #0 + 32c82: 9319 str r3, [sp, #100] ; 0x64 + 32c84: 2900 cmp r1, #0 + 32c86: f000 8149 beq.w 32f1c <_vfiprintf_r+0x798> + 32c8a: 4658 mov r0, fp + 32c8c: f7fc f8da bl 2ee44 <_free_r> + 32c90: f10d 096c add.w r9, sp, #108 ; 0x6c + 32c94: e5c1 b.n 3281a <_vfiprintf_r+0x96> + 32c96: 059c lsls r4, r3, #22 + 32c98: f53f af5d bmi.w 32b56 <_vfiprintf_r+0x3d2> + 32c9c: ee18 4a10 vmov r4, s16 + 32ca0: 6da0 ldr r0, [r4, #88] ; 0x58 + 32ca2: f7fb ff63 bl 2eb6c <__retarget_lock_release_recursive> + 32ca6: 89a2 ldrh r2, [r4, #12] + 32ca8: e755 b.n 32b56 <_vfiprintf_r+0x3d2> + 32caa: 06f0 lsls r0, r6, #27 + 32cac: 9a07 ldr r2, [sp, #28] + 32cae: f100 831f bmi.w 332f0 <_vfiprintf_r+0xb6c> + 32cb2: 0671 lsls r1, r6, #25 + 32cb4: f140 8319 bpl.w 332ea <_vfiprintf_r+0xb66> + 32cb8: f932 3b04 ldrsh.w r3, [r2], #4 + 32cbc: 9207 str r2, [sp, #28] + 32cbe: 17da asrs r2, r3, #31 + 32cc0: 4611 mov r1, r2 + 32cc2: e66e b.n 329a2 <_vfiprintf_r+0x21e> + 32cc4: f016 0310 ands.w r3, r6, #16 + 32cc8: 9907 ldr r1, [sp, #28] + 32cca: f040 8309 bne.w 332e0 <_vfiprintf_r+0xb5c> + 32cce: f016 0040 ands.w r0, r6, #64 ; 0x40 + 32cd2: f000 8301 beq.w 332d8 <_vfiprintf_r+0xb54> + 32cd6: 461a mov r2, r3 + 32cd8: f851 3b04 ldr.w r3, [r1], #4 + 32cdc: 9107 str r1, [sp, #28] + 32cde: b29b uxth r3, r3 + 32ce0: e6c3 b.n 32a6a <_vfiprintf_r+0x2e6> + 32ce2: 9b07 ldr r3, [sp, #28] + 32ce4: 461a mov r2, r3 + 32ce6: 2300 movs r3, #0 + 32ce8: f88d 3043 strb.w r3, [sp, #67] ; 0x43 + 32cec: 4613 mov r3, r2 + 32cee: f853 4b04 ldr.w r4, [r3], #4 + 32cf2: 9303 str r3, [sp, #12] + 32cf4: 2c00 cmp r4, #0 + 32cf6: f000 8412 beq.w 3351e <_vfiprintf_r+0xd9a> + 32cfa: 2953 cmp r1, #83 ; 0x53 + 32cfc: f000 8365 beq.w 333ca <_vfiprintf_r+0xc46> + 32d00: f016 0510 ands.w r5, r6, #16 + 32d04: f040 8361 bne.w 333ca <_vfiprintf_r+0xc46> + 32d08: 1c7b adds r3, r7, #1 + 32d0a: f000 84b3 beq.w 33674 <_vfiprintf_r+0xef0> + 32d0e: 463a mov r2, r7 + 32d10: 4629 mov r1, r5 + 32d12: 4620 mov r0, r4 + 32d14: f7fb ff2c bl 2eb70 + 32d18: 9008 str r0, [sp, #32] + 32d1a: 2800 cmp r0, #0 + 32d1c: f000 849f beq.w 3365e <_vfiprintf_r+0xeda> + 32d20: 1b03 subs r3, r0, r4 + 32d22: 9a03 ldr r2, [sp, #12] + 32d24: 9304 str r3, [sp, #16] + 32d26: ea23 73e3 bic.w r3, r3, r3, asr #31 + 32d2a: 462f mov r7, r5 + 32d2c: 9207 str r2, [sp, #28] + 32d2e: 9303 str r3, [sp, #12] + 32d30: 9508 str r5, [sp, #32] + 32d32: e657 b.n 329e4 <_vfiprintf_r+0x260> + 32d34: 2943 cmp r1, #67 ; 0x43 + 32d36: d002 beq.n 32d3e <_vfiprintf_r+0x5ba> + 32d38: 06f5 lsls r5, r6, #27 + 32d3a: f140 832d bpl.w 33398 <_vfiprintf_r+0xc14> + 32d3e: 9d07 ldr r5, [sp, #28] + 32d40: 2208 movs r2, #8 + 32d42: 2100 movs r1, #0 + 32d44: a816 add r0, sp, #88 ; 0x58 + 32d46: ac2b add r4, sp, #172 ; 0xac + 32d48: f7fb fc14 bl 2e574 + 32d4c: ab16 add r3, sp, #88 ; 0x58 + 32d4e: f855 2b04 ldr.w r2, [r5], #4 + 32d52: 4621 mov r1, r4 + 32d54: 4658 mov r0, fp + 32d56: f7fe fcad bl 316b4 <_wcrtomb_r> + 32d5a: 4603 mov r3, r0 + 32d5c: 3301 adds r3, #1 + 32d5e: 9004 str r0, [sp, #16] + 32d60: f000 84b3 beq.w 336ca <_vfiprintf_r+0xf46> + 32d64: 9b04 ldr r3, [sp, #16] + 32d66: 9507 str r5, [sp, #28] + 32d68: ea23 73e3 bic.w r3, r3, r3, asr #31 + 32d6c: 9303 str r3, [sp, #12] + 32d6e: 2300 movs r3, #0 + 32d70: f88d 3043 strb.w r3, [sp, #67] ; 0x43 + 32d74: e703 b.n 32b7e <_vfiprintf_r+0x3fa> + 32d76: 9b07 ldr r3, [sp, #28] + 32d78: f853 2b04 ldr.w r2, [r3], #4 + 32d7c: 9206 str r2, [sp, #24] + 32d7e: 2a00 cmp r2, #0 + 32d80: f280 829c bge.w 332bc <_vfiprintf_r+0xb38> + 32d84: 9a06 ldr r2, [sp, #24] + 32d86: 4252 negs r2, r2 + 32d88: e9cd 2306 strd r2, r3, [sp, #24] + 32d8c: f898 1000 ldrb.w r1, [r8] + 32d90: f046 0604 orr.w r6, r6, #4 + 32d94: e569 b.n 3286a <_vfiprintf_r+0xe6> + 32d96: f898 1000 ldrb.w r1, [r8] + 32d9a: f88d 4043 strb.w r4, [sp, #67] ; 0x43 + 32d9e: e564 b.n 3286a <_vfiprintf_r+0xe6> + 32da0: f898 1000 ldrb.w r1, [r8] + 32da4: f046 0680 orr.w r6, r6, #128 ; 0x80 + 32da8: e55f b.n 3286a <_vfiprintf_r+0xe6> + 32daa: 4642 mov r2, r8 + 32dac: f812 1b01 ldrb.w r1, [r2], #1 + 32db0: 292a cmp r1, #42 ; 0x2a + 32db2: f000 8496 beq.w 336e2 <_vfiprintf_r+0xf5e> + 32db6: f1a1 0330 sub.w r3, r1, #48 ; 0x30 + 32dba: 2b09 cmp r3, #9 + 32dbc: 4690 mov r8, r2 + 32dbe: f04f 0700 mov.w r7, #0 + 32dc2: f63f ad54 bhi.w 3286e <_vfiprintf_r+0xea> + 32dc6: f818 1b01 ldrb.w r1, [r8], #1 + 32dca: eb07 0787 add.w r7, r7, r7, lsl #2 + 32dce: eb03 0747 add.w r7, r3, r7, lsl #1 + 32dd2: f1a1 0330 sub.w r3, r1, #48 ; 0x30 + 32dd6: 2b09 cmp r3, #9 + 32dd8: d9f5 bls.n 32dc6 <_vfiprintf_r+0x642> + 32dda: e548 b.n 3286e <_vfiprintf_r+0xea> + 32ddc: f898 1000 ldrb.w r1, [r8] + 32de0: f046 0601 orr.w r6, r6, #1 + 32de4: e541 b.n 3286a <_vfiprintf_r+0xe6> + 32de6: f89d 3043 ldrb.w r3, [sp, #67] ; 0x43 + 32dea: 2b00 cmp r3, #0 + 32dec: f47f adc2 bne.w 32974 <_vfiprintf_r+0x1f0> + 32df0: 2320 movs r3, #32 + 32df2: f898 1000 ldrb.w r1, [r8] + 32df6: f88d 3043 strb.w r3, [sp, #67] ; 0x43 + 32dfa: e536 b.n 3286a <_vfiprintf_r+0xe6> + 32dfc: f898 1000 ldrb.w r1, [r8] + 32e00: 296c cmp r1, #108 ; 0x6c + 32e02: bf03 ittte eq + 32e04: f898 1001 ldrbeq.w r1, [r8, #1] + 32e08: f046 0620 orreq.w r6, r6, #32 + 32e0c: f108 0801 addeq.w r8, r8, #1 + 32e10: f046 0610 orrne.w r6, r6, #16 + 32e14: e529 b.n 3286a <_vfiprintf_r+0xe6> + 32e16: f898 1000 ldrb.w r1, [r8] + 32e1a: 2968 cmp r1, #104 ; 0x68 + 32e1c: bf03 ittte eq + 32e1e: f898 1001 ldrbeq.w r1, [r8, #1] + 32e22: f446 7600 orreq.w r6, r6, #512 ; 0x200 + 32e26: f108 0801 addeq.w r8, r8, #1 + 32e2a: f046 0640 orrne.w r6, r6, #64 ; 0x40 + 32e2e: e51c b.n 3286a <_vfiprintf_r+0xe6> + 32e30: f046 0310 orr.w r3, r6, #16 + 32e34: 9303 str r3, [sp, #12] + 32e36: 9b03 ldr r3, [sp, #12] + 32e38: f013 0220 ands.w r2, r3, #32 + 32e3c: f000 8206 beq.w 3324c <_vfiprintf_r+0xac8> + 32e40: 9b07 ldr r3, [sp, #28] + 32e42: 3307 adds r3, #7 + 32e44: f023 0307 bic.w r3, r3, #7 + 32e48: 4619 mov r1, r3 + 32e4a: 685a ldr r2, [r3, #4] + 32e4c: f851 3b08 ldr.w r3, [r1], #8 + 32e50: 9107 str r1, [sp, #28] + 32e52: 2101 movs r1, #1 + 32e54: e60d b.n 32a72 <_vfiprintf_r+0x2ee> + 32e56: 9a07 ldr r2, [sp, #28] + 32e58: f046 0302 orr.w r3, r6, #2 + 32e5c: 9303 str r3, [sp, #12] + 32e5e: f852 3b04 ldr.w r3, [r2], #4 + 32e62: 9207 str r2, [sp, #28] + 32e64: f647 0230 movw r2, #30768 ; 0x7830 + 32e68: f8ad 2044 strh.w r2, [sp, #68] ; 0x44 + 32e6c: 4ab8 ldr r2, [pc, #736] ; (33150 <_vfiprintf_r+0x9cc>) + 32e6e: 920c str r2, [sp, #48] ; 0x30 + 32e70: 2102 movs r1, #2 + 32e72: 2200 movs r2, #0 + 32e74: e5fd b.n 32a72 <_vfiprintf_r+0x2ee> + 32e76: 06b7 lsls r7, r6, #26 + 32e78: f100 8248 bmi.w 3330c <_vfiprintf_r+0xb88> + 32e7c: 06f5 lsls r5, r6, #27 + 32e7e: f100 8346 bmi.w 3350e <_vfiprintf_r+0xd8a> + 32e82: 0674 lsls r4, r6, #25 + 32e84: f100 83d5 bmi.w 33632 <_vfiprintf_r+0xeae> + 32e88: 05b0 lsls r0, r6, #22 + 32e8a: f140 8340 bpl.w 3350e <_vfiprintf_r+0xd8a> + 32e8e: 9b07 ldr r3, [sp, #28] + 32e90: 9905 ldr r1, [sp, #20] + 32e92: f853 2b04 ldr.w r2, [r3], #4 + 32e96: 9307 str r3, [sp, #28] + 32e98: 7011 strb r1, [r2, #0] + 32e9a: e4be b.n 3281a <_vfiprintf_r+0x96> + 32e9c: 9603 str r6, [sp, #12] + 32e9e: 2901 cmp r1, #1 + 32ea0: f43f ad8c beq.w 329bc <_vfiprintf_r+0x238> + 32ea4: 2902 cmp r1, #2 + 32ea6: ac44 add r4, sp, #272 ; 0x110 + 32ea8: d111 bne.n 32ece <_vfiprintf_r+0x74a> + 32eaa: 980c ldr r0, [sp, #48] ; 0x30 + 32eac: f003 010f and.w r1, r3, #15 + 32eb0: 091b lsrs r3, r3, #4 + 32eb2: 5c41 ldrb r1, [r0, r1] + 32eb4: f804 1d01 strb.w r1, [r4, #-1]! + 32eb8: ea43 7302 orr.w r3, r3, r2, lsl #28 + 32ebc: 0912 lsrs r2, r2, #4 + 32ebe: ea53 0102 orrs.w r1, r3, r2 + 32ec2: d1f3 bne.n 32eac <_vfiprintf_r+0x728> + 32ec4: 9e03 ldr r6, [sp, #12] + 32ec6: ab44 add r3, sp, #272 ; 0x110 + 32ec8: 1b1b subs r3, r3, r4 + 32eca: 9304 str r3, [sp, #16] + 32ecc: e583 b.n 329d6 <_vfiprintf_r+0x252> + 32ece: f003 0107 and.w r1, r3, #7 + 32ed2: 08db lsrs r3, r3, #3 + 32ed4: ea43 7342 orr.w r3, r3, r2, lsl #29 + 32ed8: 08d2 lsrs r2, r2, #3 + 32eda: 3130 adds r1, #48 ; 0x30 + 32edc: ea53 0502 orrs.w r5, r3, r2 + 32ee0: 4620 mov r0, r4 + 32ee2: f804 1d01 strb.w r1, [r4, #-1]! + 32ee6: d1f2 bne.n 32ece <_vfiprintf_r+0x74a> + 32ee8: 9e03 ldr r6, [sp, #12] + 32eea: 07f3 lsls r3, r6, #31 + 32eec: d5eb bpl.n 32ec6 <_vfiprintf_r+0x742> + 32eee: 2930 cmp r1, #48 ; 0x30 + 32ef0: d0e8 beq.n 32ec4 <_vfiprintf_r+0x740> + 32ef2: 2330 movs r3, #48 ; 0x30 + 32ef4: 3802 subs r0, #2 + 32ef6: f804 3c01 strb.w r3, [r4, #-1] + 32efa: ab44 add r3, sp, #272 ; 0x110 + 32efc: 1a1b subs r3, r3, r0 + 32efe: 9e03 ldr r6, [sp, #12] + 32f00: 9304 str r3, [sp, #16] + 32f02: 4604 mov r4, r0 + 32f04: e567 b.n 329d6 <_vfiprintf_r+0x252> + 32f06: 9b04 ldr r3, [sp, #16] + 32f08: 941b str r4, [sp, #108] ; 0x6c + 32f0a: 2201 movs r2, #1 + 32f0c: 931c str r3, [sp, #112] ; 0x70 + 32f0e: 931a str r3, [sp, #104] ; 0x68 + 32f10: 9219 str r2, [sp, #100] ; 0x64 + 32f12: f10d 096c add.w r9, sp, #108 ; 0x6c + 32f16: f109 0908 add.w r9, r9, #8 + 32f1a: e69d b.n 32c58 <_vfiprintf_r+0x4d4> + 32f1c: f10d 096c add.w r9, sp, #108 ; 0x6c + 32f20: e47b b.n 3281a <_vfiprintf_r+0x96> + 32f22: 9a06 ldr r2, [sp, #24] + 32f24: 9d03 ldr r5, [sp, #12] + 32f26: 1b55 subs r5, r2, r5 + 32f28: 2d00 cmp r5, #0 + 32f2a: f77f ae76 ble.w 32c1a <_vfiprintf_r+0x496> + 32f2e: 2d10 cmp r5, #16 + 32f30: f340 83bb ble.w 336aa <_vfiprintf_r+0xf26> + 32f34: 9409 str r4, [sp, #36] ; 0x24 + 32f36: ee18 4a10 vmov r4, s16 + 32f3a: e007 b.n 32f4c <_vfiprintf_r+0x7c8> + 32f3c: f100 0c02 add.w ip, r0, #2 32f40: f109 0908 add.w r9, r9, #8 - 32f44: 3101 adds r1, #1 - 32f46: e5ed b.n 32b24 <_vfiprintf_r+0x4a0> - 32f48: f04f 0c01 mov.w ip, #1 - 32f4c: 4618 mov r0, r3 - 32f4e: f10d 096c add.w r9, sp, #108 ; 0x6c - 32f52: e7ca b.n 32eea <_vfiprintf_r+0x866> - 32f54: f04f 0c01 mov.w ip, #1 - 32f58: 4618 mov r0, r3 - 32f5a: f10d 096c add.w r9, sp, #108 ; 0x6c - 32f5e: e772 b.n 32e46 <_vfiprintf_r+0x7c2> - 32f60: 2b00 cmp r3, #0 - 32f62: f000 8104 beq.w 3316e <_vfiprintf_r+0xaea> - 32f66: ee18 1a10 vmov r1, s16 - 32f6a: aa18 add r2, sp, #96 ; 0x60 + 32f44: 4610 mov r0, r2 + 32f46: 3d10 subs r5, #16 + 32f48: 2d10 cmp r5, #16 + 32f4a: dd1e ble.n 32f8a <_vfiprintf_r+0x806> + 32f4c: 4981 ldr r1, [pc, #516] ; (33154 <_vfiprintf_r+0x9d0>) + 32f4e: f8c9 1000 str.w r1, [r9] + 32f52: 1c42 adds r2, r0, #1 + 32f54: 3310 adds r3, #16 + 32f56: 2110 movs r1, #16 + 32f58: 2a07 cmp r2, #7 + 32f5a: e9cd 2319 strd r2, r3, [sp, #100] ; 0x64 + 32f5e: f8c9 1004 str.w r1, [r9, #4] + 32f62: ddeb ble.n 32f3c <_vfiprintf_r+0x7b8> + 32f64: aa18 add r2, sp, #96 ; 0x60 + 32f66: 2b00 cmp r3, #0 + 32f68: d074 beq.n 33054 <_vfiprintf_r+0x8d0> + 32f6a: 4621 mov r1, r4 32f6c: 4658 mov r0, fp - 32f6e: f7ff fb4d bl 3260c <__sprint_r.part.0> - 32f72: 2800 cmp r0, #0 - 32f74: f47f ad5d bne.w 32a32 <_vfiprintf_r+0x3ae> - 32f78: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 - 32f7c: f10d 096c add.w r9, sp, #108 ; 0x6c - 32f80: 1c41 adds r1, r0, #1 - 32f82: e5a7 b.n 32ad4 <_vfiprintf_r+0x450> - 32f84: 2302 movs r3, #2 - 32f86: aa11 add r2, sp, #68 ; 0x44 - 32f88: 931c str r3, [sp, #112] ; 0x70 - 32f8a: 921b str r2, [sp, #108] ; 0x6c - 32f8c: 2101 movs r1, #1 - 32f8e: f10d 096c add.w r9, sp, #108 ; 0x6c - 32f92: 4608 mov r0, r1 - 32f94: f109 0908 add.w r9, r9, #8 - 32f98: 1c41 adds r1, r0, #1 - 32f9a: e5ba b.n 32b12 <_vfiprintf_r+0x48e> - 32f9c: 2d10 cmp r5, #16 - 32f9e: f340 82e5 ble.w 3356c <_vfiprintf_r+0xee8> - 32fa2: e9dd 1319 ldrd r1, r3, [sp, #100] ; 0x64 - 32fa6: 940f str r4, [sp, #60] ; 0x3c - 32fa8: 4608 mov r0, r1 - 32faa: ee18 4a10 vmov r4, s16 - 32fae: e007 b.n 32fc0 <_vfiprintf_r+0x93c> - 32fb0: f100 0c02 add.w ip, r0, #2 - 32fb4: f109 0908 add.w r9, r9, #8 - 32fb8: 4610 mov r0, r2 - 32fba: 3d10 subs r5, #16 - 32fbc: 2d10 cmp r5, #16 - 32fbe: dd1d ble.n 32ffc <_vfiprintf_r+0x978> - 32fc0: 4925 ldr r1, [pc, #148] ; (33058 <_vfiprintf_r+0x9d4>) - 32fc2: f8c9 1000 str.w r1, [r9] - 32fc6: 1c42 adds r2, r0, #1 - 32fc8: 3310 adds r3, #16 - 32fca: 2110 movs r1, #16 - 32fcc: 2a07 cmp r2, #7 - 32fce: e9cd 2319 strd r2, r3, [sp, #100] ; 0x64 - 32fd2: f8c9 1004 str.w r1, [r9, #4] - 32fd6: ddeb ble.n 32fb0 <_vfiprintf_r+0x92c> - 32fd8: aa18 add r2, sp, #96 ; 0x60 - 32fda: b303 cbz r3, 3301e <_vfiprintf_r+0x99a> - 32fdc: 4621 mov r1, r4 - 32fde: 4658 mov r0, fp - 32fe0: f10d 096c add.w r9, sp, #108 ; 0x6c - 32fe4: f7ff fb12 bl 3260c <__sprint_r.part.0> - 32fe8: 2800 cmp r0, #0 - 32fea: f47f ad22 bne.w 32a32 <_vfiprintf_r+0x3ae> - 32fee: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 - 32ff2: 3d10 subs r5, #16 - 32ff4: 2d10 cmp r5, #16 - 32ff6: f100 0c01 add.w ip, r0, #1 - 32ffa: dce1 bgt.n 32fc0 <_vfiprintf_r+0x93c> - 32ffc: 9c0f ldr r4, [sp, #60] ; 0x3c - 32ffe: 4660 mov r0, ip - 33000: 4a15 ldr r2, [pc, #84] ; (33058 <_vfiprintf_r+0x9d4>) - 33002: f8c9 5004 str.w r5, [r9, #4] - 33006: 442b add r3, r5 - 33008: 2807 cmp r0, #7 - 3300a: e9cd 0319 strd r0, r3, [sp, #100] ; 0x64 - 3300e: f8c9 2000 str.w r2, [r9] - 33012: f300 80c1 bgt.w 33198 <_vfiprintf_r+0xb14> - 33016: f109 0908 add.w r9, r9, #8 - 3301a: 1c41 adds r1, r0, #1 - 3301c: e546 b.n 32aac <_vfiprintf_r+0x428> - 3301e: 4618 mov r0, r3 - 33020: f04f 0c01 mov.w ip, #1 - 33024: f10d 096c add.w r9, sp, #108 ; 0x6c - 33028: e7c7 b.n 32fba <_vfiprintf_r+0x936> - 3302a: 0776 lsls r6, r6, #29 - 3302c: 9319 str r3, [sp, #100] ; 0x64 - 3302e: d553 bpl.n 330d8 <_vfiprintf_r+0xa54> - 33030: 9a06 ldr r2, [sp, #24] - 33032: 9903 ldr r1, [sp, #12] - 33034: 1a54 subs r4, r2, r1 - 33036: 2c00 cmp r4, #0 - 33038: dd4e ble.n 330d8 <_vfiprintf_r+0xa54> - 3303a: f10d 096c add.w r9, sp, #108 ; 0x6c - 3303e: 2c10 cmp r4, #16 - 33040: f340 82b0 ble.w 335a4 <_vfiprintf_r+0xf20> - 33044: 9919 ldr r1, [sp, #100] ; 0x64 - 33046: ee18 6a10 vmov r6, s16 - 3304a: 2510 movs r5, #16 - 3304c: e00d b.n 3306a <_vfiprintf_r+0x9e6> - 3304e: bf00 nop - 33050: 20004460 .word 0x20004460 - 33054: 20004a6c .word 0x20004a6c - 33058: 200044a4 .word 0x200044a4 - 3305c: 1c88 adds r0, r1, #2 - 3305e: f109 0908 add.w r9, r9, #8 - 33062: 4611 mov r1, r2 - 33064: 3c10 subs r4, #16 - 33066: 2c10 cmp r4, #16 - 33068: dd1a ble.n 330a0 <_vfiprintf_r+0xa1c> - 3306a: 1c4a adds r2, r1, #1 - 3306c: 48b3 ldr r0, [pc, #716] ; (3333c <_vfiprintf_r+0xcb8>) - 3306e: 3310 adds r3, #16 - 33070: 2a07 cmp r2, #7 - 33072: e9c9 0500 strd r0, r5, [r9] - 33076: e9cd 2319 strd r2, r3, [sp, #100] ; 0x64 - 3307a: ddef ble.n 3305c <_vfiprintf_r+0x9d8> - 3307c: aa18 add r2, sp, #96 ; 0x60 - 3307e: b333 cbz r3, 330ce <_vfiprintf_r+0xa4a> - 33080: 4631 mov r1, r6 - 33082: 4658 mov r0, fp - 33084: f7ff fac2 bl 3260c <__sprint_r.part.0> - 33088: 2800 cmp r0, #0 - 3308a: f47f acd2 bne.w 32a32 <_vfiprintf_r+0x3ae> - 3308e: e9dd 1319 ldrd r1, r3, [sp, #100] ; 0x64 - 33092: 3c10 subs r4, #16 - 33094: 2c10 cmp r4, #16 - 33096: f101 0001 add.w r0, r1, #1 - 3309a: f10d 096c add.w r9, sp, #108 ; 0x6c - 3309e: dce4 bgt.n 3306a <_vfiprintf_r+0x9e6> - 330a0: 4aa6 ldr r2, [pc, #664] ; (3333c <_vfiprintf_r+0xcb8>) - 330a2: f8c9 4004 str.w r4, [r9, #4] - 330a6: 4423 add r3, r4 - 330a8: 2807 cmp r0, #7 - 330aa: e9cd 0319 strd r0, r3, [sp, #100] ; 0x64 - 330ae: f8c9 2000 str.w r2, [r9] - 330b2: f77f ad59 ble.w 32b68 <_vfiprintf_r+0x4e4> - 330b6: b17b cbz r3, 330d8 <_vfiprintf_r+0xa54> - 330b8: ee18 1a10 vmov r1, s16 - 330bc: aa18 add r2, sp, #96 ; 0x60 - 330be: 4658 mov r0, fp - 330c0: f7ff faa4 bl 3260c <__sprint_r.part.0> - 330c4: 2800 cmp r0, #0 - 330c6: f47f acb4 bne.w 32a32 <_vfiprintf_r+0x3ae> - 330ca: 9b1a ldr r3, [sp, #104] ; 0x68 - 330cc: e54c b.n 32b68 <_vfiprintf_r+0x4e4> - 330ce: 2001 movs r0, #1 - 330d0: 4619 mov r1, r3 - 330d2: f10d 096c add.w r9, sp, #108 ; 0x6c - 330d6: e7c5 b.n 33064 <_vfiprintf_r+0x9e0> - 330d8: e9dd 3205 ldrd r3, r2, [sp, #20] - 330dc: 9903 ldr r1, [sp, #12] - 330de: 428a cmp r2, r1 - 330e0: bfac ite ge - 330e2: 189b addge r3, r3, r2 - 330e4: 185b addlt r3, r3, r1 - 330e6: 9305 str r3, [sp, #20] - 330e8: e549 b.n 32b7e <_vfiprintf_r+0x4fa> - 330ea: f9b2 100c ldrsh.w r1, [r2, #12] - 330ee: 058f lsls r7, r1, #22 - 330f0: ee18 3a10 vmov r3, s16 - 330f4: b28a uxth r2, r1 - 330f6: f53f aae8 bmi.w 326ca <_vfiprintf_r+0x46> - 330fa: ee18 5a10 vmov r5, s16 - 330fe: 6d98 ldr r0, [r3, #88] ; 0x58 - 33100: f7fb fcc2 bl 2ea88 <__retarget_lock_acquire_recursive> - 33104: f9b5 100c ldrsh.w r1, [r5, #12] - 33108: b28a uxth r2, r1 - 3310a: f7ff bade b.w 326ca <_vfiprintf_r+0x46> - 3310e: 2b00 cmp r3, #0 - 33110: f43f ae79 beq.w 32e06 <_vfiprintf_r+0x782> - 33114: ee18 1a10 vmov r1, s16 - 33118: aa18 add r2, sp, #96 ; 0x60 - 3311a: 4658 mov r0, fp - 3311c: f7ff fa76 bl 3260c <__sprint_r.part.0> - 33120: 2800 cmp r0, #0 - 33122: f47f ac86 bne.w 32a32 <_vfiprintf_r+0x3ae> - 33126: 9919 ldr r1, [sp, #100] ; 0x64 - 33128: 9b1a ldr r3, [sp, #104] ; 0x68 - 3312a: 3101 adds r1, #1 - 3312c: f10d 096c add.w r9, sp, #108 ; 0x6c - 33130: e4f8 b.n 32b24 <_vfiprintf_r+0x4a0> - 33132: 9219 str r2, [sp, #100] ; 0x64 - 33134: f10d 096c add.w r9, sp, #108 ; 0x6c - 33138: e45e b.n 329f8 <_vfiprintf_r+0x374> - 3313a: 2f00 cmp r7, #0 - 3313c: f47f abc3 bne.w 328c6 <_vfiprintf_r+0x242> - 33140: 9e03 ldr r6, [sp, #12] - 33142: 2700 movs r7, #0 - 33144: 9704 str r7, [sp, #16] - 33146: ac44 add r4, sp, #272 ; 0x110 - 33148: f7ff bbc5 b.w 328d6 <_vfiprintf_r+0x252> - 3314c: 9b03 ldr r3, [sp, #12] - 3314e: f013 0310 ands.w r3, r3, #16 - 33152: d154 bne.n 331fe <_vfiprintf_r+0xb7a> - 33154: 9a03 ldr r2, [sp, #12] - 33156: f012 0040 ands.w r0, r2, #64 ; 0x40 - 3315a: f000 816b beq.w 33434 <_vfiprintf_r+0xdb0> - 3315e: 9907 ldr r1, [sp, #28] - 33160: 461a mov r2, r3 - 33162: f851 3b04 ldr.w r3, [r1], #4 - 33166: 9107 str r1, [sp, #28] - 33168: b29b uxth r3, r3 - 3316a: 2101 movs r1, #1 - 3316c: e401 b.n 32972 <_vfiprintf_r+0x2ee> - 3316e: 9a09 ldr r2, [sp, #36] ; 0x24 - 33170: 2a00 cmp r2, #0 - 33172: d164 bne.n 3323e <_vfiprintf_r+0xbba> - 33174: 4618 mov r0, r3 - 33176: 2101 movs r1, #1 - 33178: f10d 096c add.w r9, sp, #108 ; 0x6c - 3317c: e4c9 b.n 32b12 <_vfiprintf_r+0x48e> - 3317e: 2101 movs r1, #1 - 33180: 4618 mov r0, r3 - 33182: f10d 096c add.w r9, sp, #108 ; 0x6c - 33186: e4c4 b.n 32b12 <_vfiprintf_r+0x48e> - 33188: 425b negs r3, r3 - 3318a: eb62 0242 sbc.w r2, r2, r2, lsl #1 - 3318e: 9603 str r6, [sp, #12] - 33190: 202d movs r0, #45 ; 0x2d - 33192: 2101 movs r1, #1 - 33194: f7ff bbee b.w 32974 <_vfiprintf_r+0x2f0> - 33198: 2b00 cmp r3, #0 - 3319a: f000 8088 beq.w 332ae <_vfiprintf_r+0xc2a> - 3319e: ee18 1a10 vmov r1, s16 - 331a2: aa18 add r2, sp, #96 ; 0x60 - 331a4: 4658 mov r0, fp - 331a6: f7ff fa31 bl 3260c <__sprint_r.part.0> - 331aa: 2800 cmp r0, #0 - 331ac: f47f ac41 bne.w 32a32 <_vfiprintf_r+0x3ae> - 331b0: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 - 331b4: f10d 096c add.w r9, sp, #108 ; 0x6c - 331b8: 1c41 adds r1, r0, #1 - 331ba: e477 b.n 32aac <_vfiprintf_r+0x428> - 331bc: f898 1000 ldrb.w r1, [r8] - 331c0: 9307 str r3, [sp, #28] - 331c2: f7ff bad2 b.w 3276a <_vfiprintf_r+0xe6> - 331c6: ac44 add r4, sp, #272 ; 0x110 - 331c8: f7ff bb85 b.w 328d6 <_vfiprintf_r+0x252> - 331cc: f109 0908 add.w r9, r9, #8 - 331d0: f10c 0101 add.w r1, ip, #1 - 331d4: 4660 mov r0, ip - 331d6: e4a0 b.n 32b1a <_vfiprintf_r+0x496> - 331d8: f416 7200 ands.w r2, r6, #512 ; 0x200 - 331dc: f040 8197 bne.w 3350e <_vfiprintf_r+0xe8a> - 331e0: f851 3b04 ldr.w r3, [r1], #4 - 331e4: 9107 str r1, [sp, #28] - 331e6: f7ff bbc0 b.w 3296a <_vfiprintf_r+0x2e6> - 331ea: 05b3 lsls r3, r6, #22 - 331ec: f100 8188 bmi.w 33500 <_vfiprintf_r+0xe7c> - 331f0: f852 3b04 ldr.w r3, [r2], #4 - 331f4: 9207 str r2, [sp, #28] - 331f6: 17da asrs r2, r3, #31 - 331f8: 4611 mov r1, r2 - 331fa: f7ff bb52 b.w 328a2 <_vfiprintf_r+0x21e> - 331fe: 9907 ldr r1, [sp, #28] - 33200: f851 3b04 ldr.w r3, [r1], #4 - 33204: 9107 str r1, [sp, #28] - 33206: 2101 movs r1, #1 - 33208: f7ff bbb3 b.w 32972 <_vfiprintf_r+0x2ee> - 3320c: 9b07 ldr r3, [sp, #28] - 3320e: 9805 ldr r0, [sp, #20] - 33210: f853 1b04 ldr.w r1, [r3], #4 - 33214: 9307 str r3, [sp, #28] - 33216: 17c2 asrs r2, r0, #31 - 33218: e9c1 0200 strd r0, r2, [r1] - 3321c: f7ff ba7d b.w 3271a <_vfiprintf_r+0x96> - 33220: 9b0b ldr r3, [sp, #44] ; 0x2c - 33222: 2b00 cmp r3, #0 - 33224: f43f ab26 beq.w 32874 <_vfiprintf_r+0x1f0> - 33228: 9b0b ldr r3, [sp, #44] ; 0x2c - 3322a: 781b ldrb r3, [r3, #0] - 3322c: 2b00 cmp r3, #0 - 3322e: f43f ab21 beq.w 32874 <_vfiprintf_r+0x1f0> - 33232: f898 1000 ldrb.w r1, [r8] - 33236: f446 6680 orr.w r6, r6, #1024 ; 0x400 - 3323a: f7ff ba96 b.w 3276a <_vfiprintf_r+0xe6> - 3323e: 2302 movs r3, #2 - 33240: aa11 add r2, sp, #68 ; 0x44 - 33242: 931c str r3, [sp, #112] ; 0x70 - 33244: 921b str r2, [sp, #108] ; 0x6c - 33246: 2001 movs r0, #1 - 33248: f10d 096c add.w r9, sp, #108 ; 0x6c - 3324c: e6a2 b.n 32f94 <_vfiprintf_r+0x910> - 3324e: 9603 str r6, [sp, #12] - 33250: e571 b.n 32d36 <_vfiprintf_r+0x6b2> - 33252: 4b3b ldr r3, [pc, #236] ; (33340 <_vfiprintf_r+0xcbc>) - 33254: 930c str r3, [sp, #48] ; 0x30 - 33256: f016 0220 ands.w r2, r6, #32 - 3325a: d059 beq.n 33310 <_vfiprintf_r+0xc8c> - 3325c: 9b07 ldr r3, [sp, #28] - 3325e: 3307 adds r3, #7 - 33260: f023 0307 bic.w r3, r3, #7 - 33264: 4618 mov r0, r3 - 33266: 685a ldr r2, [r3, #4] - 33268: f850 3b08 ldr.w r3, [r0], #8 - 3326c: 9007 str r0, [sp, #28] - 3326e: 07f4 lsls r4, r6, #31 - 33270: d509 bpl.n 33286 <_vfiprintf_r+0xc02> - 33272: ea53 0002 orrs.w r0, r3, r2 - 33276: d006 beq.n 33286 <_vfiprintf_r+0xc02> - 33278: f88d 1045 strb.w r1, [sp, #69] ; 0x45 - 3327c: 2130 movs r1, #48 ; 0x30 - 3327e: f046 0602 orr.w r6, r6, #2 - 33282: f88d 1044 strb.w r1, [sp, #68] ; 0x44 - 33286: f426 6180 bic.w r1, r6, #1024 ; 0x400 - 3328a: 9103 str r1, [sp, #12] - 3328c: 2102 movs r1, #2 - 3328e: f7ff bb70 b.w 32972 <_vfiprintf_r+0x2ee> - 33292: 4b2c ldr r3, [pc, #176] ; (33344 <_vfiprintf_r+0xcc0>) - 33294: 930c str r3, [sp, #48] ; 0x30 - 33296: e7de b.n 33256 <_vfiprintf_r+0xbd2> - 33298: 9b07 ldr r3, [sp, #28] - 3329a: 2101 movs r1, #1 - 3329c: f853 2b04 ldr.w r2, [r3], #4 - 332a0: 9103 str r1, [sp, #12] - 332a2: f88d 20ac strb.w r2, [sp, #172] ; 0xac - 332a6: 9307 str r3, [sp, #28] - 332a8: 9104 str r1, [sp, #16] - 332aa: ac2b add r4, sp, #172 ; 0xac - 332ac: e4df b.n 32c6e <_vfiprintf_r+0x5ea> - 332ae: f89d 2043 ldrb.w r2, [sp, #67] ; 0x43 - 332b2: 2a00 cmp r2, #0 - 332b4: f040 8132 bne.w 3351c <_vfiprintf_r+0xe98> - 332b8: 9a09 ldr r2, [sp, #36] ; 0x24 - 332ba: 2a00 cmp r2, #0 - 332bc: f47f ae62 bne.w 32f84 <_vfiprintf_r+0x900> - 332c0: 4618 mov r0, r3 - 332c2: 2101 movs r1, #1 - 332c4: f10d 096c add.w r9, sp, #108 ; 0x6c - 332c8: e427 b.n 32b1a <_vfiprintf_r+0x496> - 332ca: 2100 movs r1, #0 - 332cc: 2208 movs r2, #8 - 332ce: a816 add r0, sp, #88 ; 0x58 - 332d0: 9413 str r4, [sp, #76] ; 0x4c - 332d2: f7fb f8db bl 2e48c - 332d6: 1c79 adds r1, r7, #1 - 332d8: f000 80bc beq.w 33454 <_vfiprintf_r+0xdd0> - 332dc: 2500 movs r5, #0 - 332de: 9407 str r4, [sp, #28] - 332e0: 462c mov r4, r5 - 332e2: e00c b.n 332fe <_vfiprintf_r+0xc7a> - 332e4: a92b add r1, sp, #172 ; 0xac - 332e6: 4658 mov r0, fp - 332e8: f7fe f964 bl 315b4 <_wcrtomb_r> - 332ec: 1c42 adds r2, r0, #1 - 332ee: 4420 add r0, r4 - 332f0: f000 816b beq.w 335ca <_vfiprintf_r+0xf46> - 332f4: 42b8 cmp r0, r7 - 332f6: dc08 bgt.n 3330a <_vfiprintf_r+0xc86> - 332f8: f000 8170 beq.w 335dc <_vfiprintf_r+0xf58> - 332fc: 4604 mov r4, r0 - 332fe: 9a13 ldr r2, [sp, #76] ; 0x4c - 33300: 5952 ldr r2, [r2, r5] - 33302: ab16 add r3, sp, #88 ; 0x58 - 33304: 3504 adds r5, #4 - 33306: 2a00 cmp r2, #0 - 33308: d1ec bne.n 332e4 <_vfiprintf_r+0xc60> - 3330a: 9404 str r4, [sp, #16] - 3330c: 9c07 ldr r4, [sp, #28] - 3330e: e0af b.n 33470 <_vfiprintf_r+0xdec> - 33310: f016 0310 ands.w r3, r6, #16 - 33314: 9807 ldr r0, [sp, #28] - 33316: d10c bne.n 33332 <_vfiprintf_r+0xcae> - 33318: f016 0440 ands.w r4, r6, #64 ; 0x40 - 3331c: d005 beq.n 3332a <_vfiprintf_r+0xca6> - 3331e: 461a mov r2, r3 - 33320: f850 3b04 ldr.w r3, [r0], #4 - 33324: 9007 str r0, [sp, #28] - 33326: b29b uxth r3, r3 - 33328: e7a1 b.n 3326e <_vfiprintf_r+0xbea> - 3332a: f416 7200 ands.w r2, r6, #512 ; 0x200 - 3332e: f040 80e1 bne.w 334f4 <_vfiprintf_r+0xe70> - 33332: f850 3b04 ldr.w r3, [r0], #4 - 33336: 9007 str r0, [sp, #28] - 33338: e799 b.n 3326e <_vfiprintf_r+0xbea> - 3333a: bf00 nop - 3333c: 200044a4 .word 0x200044a4 - 33340: 20004460 .word 0x20004460 - 33344: 20004474 .word 0x20004474 - 33348: 9903 ldr r1, [sp, #12] - 3334a: 9704 str r7, [sp, #16] - 3334c: ac44 add r4, sp, #272 ; 0x110 - 3334e: 469e mov lr, r3 - 33350: ee08 ba90 vmov s17, fp - 33354: f401 6680 and.w r6, r1, #1024 ; 0x400 - 33358: f04f 0c00 mov.w ip, #0 - 3335c: 4623 mov r3, r4 - 3335e: e006 b.n 3336e <_vfiprintf_r+0xcea> - 33360: f1be 0f0a cmp.w lr, #10 - 33364: f172 0200 sbcs.w r2, r2, #0 - 33368: d339 bcc.n 333de <_vfiprintf_r+0xd5a> - 3336a: 46a6 mov lr, r4 - 3336c: 462a mov r2, r5 - 3336e: 49a6 ldr r1, [pc, #664] ; (33608 <_vfiprintf_r+0xf84>) - 33370: eb1e 0002 adds.w r0, lr, r2 - 33374: f140 0000 adc.w r0, r0, #0 - 33378: 460f mov r7, r1 - 3337a: fba1 1400 umull r1, r4, r1, r0 - 3337e: f024 0103 bic.w r1, r4, #3 - 33382: eb01 0194 add.w r1, r1, r4, lsr #2 - 33386: 1a40 subs r0, r0, r1 - 33388: ebbe 0100 subs.w r1, lr, r0 - 3338c: f04f 35cc mov.w r5, #3435973836 ; 0xcccccccc - 33390: f162 0400 sbc.w r4, r2, #0 - 33394: fb05 f501 mul.w r5, r5, r1 - 33398: fb07 5504 mla r5, r7, r4, r5 - 3339c: fba1 4107 umull r4, r1, r1, r7 - 333a0: 440d add r5, r1 - 333a2: 2705 movs r7, #5 - 333a4: f004 0101 and.w r1, r4, #1 - 333a8: fba1 1b07 umull r1, fp, r1, r7 - 333ac: 1809 adds r1, r1, r0 - 333ae: 0864 lsrs r4, r4, #1 - 333b0: 3130 adds r1, #48 ; 0x30 - 333b2: f803 1c01 strb.w r1, [r3, #-1] - 333b6: ea44 74c5 orr.w r4, r4, r5, lsl #31 - 333ba: f10c 0c01 add.w ip, ip, #1 - 333be: 3b01 subs r3, #1 - 333c0: 086d lsrs r5, r5, #1 - 333c2: 2e00 cmp r6, #0 - 333c4: d0cc beq.n 33360 <_vfiprintf_r+0xcdc> - 333c6: 990b ldr r1, [sp, #44] ; 0x2c - 333c8: 7809 ldrb r1, [r1, #0] - 333ca: 4561 cmp r1, ip - 333cc: d1c8 bne.n 33360 <_vfiprintf_r+0xcdc> - 333ce: f1bc 0fff cmp.w ip, #255 ; 0xff - 333d2: d0c5 beq.n 33360 <_vfiprintf_r+0xcdc> - 333d4: f1be 0f0a cmp.w lr, #10 - 333d8: f172 0200 sbcs.w r2, r2, #0 - 333dc: d26c bcs.n 334b8 <_vfiprintf_r+0xe34> - 333de: 461c mov r4, r3 - 333e0: ab44 add r3, sp, #272 ; 0x110 - 333e2: 1b1b subs r3, r3, r4 - 333e4: 9f04 ldr r7, [sp, #16] - 333e6: 9e03 ldr r6, [sp, #12] - 333e8: 9304 str r3, [sp, #16] - 333ea: ee18 ba90 vmov fp, s17 - 333ee: f7ff ba72 b.w 328d6 <_vfiprintf_r+0x252> - 333f2: 9603 str r6, [sp, #12] - 333f4: f7ff ba62 b.w 328bc <_vfiprintf_r+0x238> - 333f8: 4658 mov r0, fp - 333fa: f7fa ff7d bl 2e2f8 <__sinit> - 333fe: f7ff b95b b.w 326b8 <_vfiprintf_r+0x34> - 33402: 2901 cmp r1, #1 - 33404: 9603 str r6, [sp, #12] - 33406: f47f accd bne.w 32da4 <_vfiprintf_r+0x720> - 3340a: f7ff ba5c b.w 328c6 <_vfiprintf_r+0x242> - 3340e: 9b07 ldr r3, [sp, #28] - 33410: 9905 ldr r1, [sp, #20] - 33412: f853 2b04 ldr.w r2, [r3], #4 - 33416: 6011 str r1, [r2, #0] - 33418: 9307 str r3, [sp, #28] - 3341a: f7ff b97e b.w 3271a <_vfiprintf_r+0x96> - 3341e: 2f06 cmp r7, #6 - 33420: 463b mov r3, r7 - 33422: 9a03 ldr r2, [sp, #12] - 33424: 4c79 ldr r4, [pc, #484] ; (3360c <_vfiprintf_r+0xf88>) - 33426: 9207 str r2, [sp, #28] - 33428: bf28 it cs - 3342a: 2306 movcs r3, #6 - 3342c: 9304 str r3, [sp, #16] - 3342e: 9303 str r3, [sp, #12] - 33430: f7ff bb25 b.w 32a7e <_vfiprintf_r+0x3fa> - 33434: 9b03 ldr r3, [sp, #12] - 33436: 9907 ldr r1, [sp, #28] - 33438: f413 7200 ands.w r2, r3, #512 ; 0x200 - 3343c: bf14 ite ne - 3343e: f851 3b04 ldrne.w r3, [r1], #4 - 33442: f851 3b04 ldreq.w r3, [r1], #4 - 33446: 9107 str r1, [sp, #28] - 33448: bf1c itt ne - 3344a: 4602 movne r2, r0 - 3344c: b2db uxtbne r3, r3 - 3344e: 2101 movs r1, #1 - 33450: f7ff ba8f b.w 32972 <_vfiprintf_r+0x2ee> - 33454: ab16 add r3, sp, #88 ; 0x58 - 33456: 9300 str r3, [sp, #0] - 33458: 2300 movs r3, #0 - 3345a: 4619 mov r1, r3 - 3345c: aa13 add r2, sp, #76 ; 0x4c - 3345e: 4658 mov r0, fp - 33460: f7fe f8ce bl 31600 <_wcsrtombs_r> - 33464: 4603 mov r3, r0 - 33466: 3301 adds r3, #1 - 33468: 9004 str r0, [sp, #16] - 3346a: f000 80ae beq.w 335ca <_vfiprintf_r+0xf46> - 3346e: 9413 str r4, [sp, #76] ; 0x4c - 33470: 9b04 ldr r3, [sp, #16] - 33472: 2b00 cmp r3, #0 - 33474: d030 beq.n 334d8 <_vfiprintf_r+0xe54> - 33476: 2b63 cmp r3, #99 ; 0x63 - 33478: dc63 bgt.n 33542 <_vfiprintf_r+0xebe> - 3347a: 2300 movs r3, #0 - 3347c: 9308 str r3, [sp, #32] - 3347e: ac2b add r4, sp, #172 ; 0xac - 33480: 2208 movs r2, #8 - 33482: 2100 movs r1, #0 - 33484: a816 add r0, sp, #88 ; 0x58 - 33486: f7fb f801 bl 2e48c - 3348a: 9d04 ldr r5, [sp, #16] - 3348c: ab16 add r3, sp, #88 ; 0x58 - 3348e: 9300 str r3, [sp, #0] - 33490: aa13 add r2, sp, #76 ; 0x4c - 33492: 462b mov r3, r5 - 33494: 4621 mov r1, r4 - 33496: 4658 mov r0, fp - 33498: f7fe f8b2 bl 31600 <_wcsrtombs_r> - 3349c: 4285 cmp r5, r0 - 3349e: f040 80ab bne.w 335f8 <_vfiprintf_r+0xf74> - 334a2: 9b03 ldr r3, [sp, #12] - 334a4: 9a04 ldr r2, [sp, #16] - 334a6: 9307 str r3, [sp, #28] - 334a8: 2300 movs r3, #0 - 334aa: 54a3 strb r3, [r4, r2] - 334ac: 461f mov r7, r3 - 334ae: ea22 73e2 bic.w r3, r2, r2, asr #31 - 334b2: 9303 str r3, [sp, #12] - 334b4: f7ff ba16 b.w 328e4 <_vfiprintf_r+0x260> - 334b8: 9a0e ldr r2, [sp, #56] ; 0x38 - 334ba: 990d ldr r1, [sp, #52] ; 0x34 - 334bc: 1a9b subs r3, r3, r2 - 334be: 4618 mov r0, r3 - 334c0: 9308 str r3, [sp, #32] - 334c2: f7fb f855 bl 2e570 + 32f6e: f10d 096c add.w r9, sp, #108 ; 0x6c + 32f72: f7ff fbcb bl 3270c <__sprint_r.part.0> + 32f76: 2800 cmp r0, #0 + 32f78: f47f addb bne.w 32b32 <_vfiprintf_r+0x3ae> + 32f7c: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 + 32f80: 3d10 subs r5, #16 + 32f82: 2d10 cmp r5, #16 + 32f84: f100 0c01 add.w ip, r0, #1 + 32f88: dce0 bgt.n 32f4c <_vfiprintf_r+0x7c8> + 32f8a: 9c09 ldr r4, [sp, #36] ; 0x24 + 32f8c: 4a71 ldr r2, [pc, #452] ; (33154 <_vfiprintf_r+0x9d0>) + 32f8e: f8c9 5004 str.w r5, [r9, #4] + 32f92: 442b add r3, r5 + 32f94: f1bc 0f07 cmp.w ip, #7 + 32f98: e9cd c319 strd ip, r3, [sp, #100] ; 0x64 + 32f9c: f8c9 2000 str.w r2, [r9] + 32fa0: f340 8194 ble.w 332cc <_vfiprintf_r+0xb48> + 32fa4: 2b00 cmp r3, #0 + 32fa6: f000 831f beq.w 335e8 <_vfiprintf_r+0xe64> + 32faa: ee18 1a10 vmov r1, s16 + 32fae: aa18 add r2, sp, #96 ; 0x60 + 32fb0: 4658 mov r0, fp + 32fb2: f7ff fbab bl 3270c <__sprint_r.part.0> + 32fb6: 2800 cmp r0, #0 + 32fb8: f47f adbb bne.w 32b32 <_vfiprintf_r+0x3ae> + 32fbc: 9a04 ldr r2, [sp, #16] + 32fbe: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 + 32fc2: 1abd subs r5, r7, r2 + 32fc4: 2d00 cmp r5, #0 + 32fc6: f100 0101 add.w r1, r0, #1 + 32fca: f10d 096c add.w r9, sp, #108 ; 0x6c + 32fce: f77f ae29 ble.w 32c24 <_vfiprintf_r+0x4a0> + 32fd2: 2d10 cmp r5, #16 + 32fd4: dd29 ble.n 3302a <_vfiprintf_r+0x8a6> + 32fd6: 9409 str r4, [sp, #36] ; 0x24 + 32fd8: 2710 movs r7, #16 + 32fda: ee18 4a10 vmov r4, s16 + 32fde: e007 b.n 32ff0 <_vfiprintf_r+0x86c> + 32fe0: f100 0c02 add.w ip, r0, #2 + 32fe4: f109 0908 add.w r9, r9, #8 + 32fe8: 4610 mov r0, r2 + 32fea: 3d10 subs r5, #16 + 32fec: 2d10 cmp r5, #16 + 32fee: dd1a ble.n 33026 <_vfiprintf_r+0x8a2> + 32ff0: 1c42 adds r2, r0, #1 + 32ff2: 4958 ldr r1, [pc, #352] ; (33154 <_vfiprintf_r+0x9d0>) + 32ff4: 3310 adds r3, #16 + 32ff6: 2a07 cmp r2, #7 + 32ff8: e9c9 1700 strd r1, r7, [r9] + 32ffc: e9cd 2319 strd r2, r3, [sp, #100] ; 0x64 + 33000: ddee ble.n 32fe0 <_vfiprintf_r+0x85c> + 33002: aa18 add r2, sp, #96 ; 0x60 + 33004: b303 cbz r3, 33048 <_vfiprintf_r+0x8c4> + 33006: 4621 mov r1, r4 + 33008: 4658 mov r0, fp + 3300a: f10d 096c add.w r9, sp, #108 ; 0x6c + 3300e: f7ff fb7d bl 3270c <__sprint_r.part.0> + 33012: 2800 cmp r0, #0 + 33014: f47f ad8d bne.w 32b32 <_vfiprintf_r+0x3ae> + 33018: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 + 3301c: 3d10 subs r5, #16 + 3301e: 2d10 cmp r5, #16 + 33020: f100 0c01 add.w ip, r0, #1 + 33024: dce4 bgt.n 32ff0 <_vfiprintf_r+0x86c> + 33026: 9c09 ldr r4, [sp, #36] ; 0x24 + 33028: 4661 mov r1, ip + 3302a: 4a4a ldr r2, [pc, #296] ; (33154 <_vfiprintf_r+0x9d0>) + 3302c: f8c9 5004 str.w r5, [r9, #4] + 33030: 442b add r3, r5 + 33032: 2907 cmp r1, #7 + 33034: e9cd 1319 strd r1, r3, [sp, #100] ; 0x64 + 33038: f8c9 2000 str.w r2, [r9] + 3303c: f300 80e7 bgt.w 3320e <_vfiprintf_r+0xa8a> + 33040: f109 0908 add.w r9, r9, #8 + 33044: 3101 adds r1, #1 + 33046: e5ed b.n 32c24 <_vfiprintf_r+0x4a0> + 33048: f04f 0c01 mov.w ip, #1 + 3304c: 4618 mov r0, r3 + 3304e: f10d 096c add.w r9, sp, #108 ; 0x6c + 33052: e7ca b.n 32fea <_vfiprintf_r+0x866> + 33054: f04f 0c01 mov.w ip, #1 + 33058: 4618 mov r0, r3 + 3305a: f10d 096c add.w r9, sp, #108 ; 0x6c + 3305e: e772 b.n 32f46 <_vfiprintf_r+0x7c2> + 33060: 2b00 cmp r3, #0 + 33062: f000 8104 beq.w 3326e <_vfiprintf_r+0xaea> + 33066: ee18 1a10 vmov r1, s16 + 3306a: aa18 add r2, sp, #96 ; 0x60 + 3306c: 4658 mov r0, fp + 3306e: f7ff fb4d bl 3270c <__sprint_r.part.0> + 33072: 2800 cmp r0, #0 + 33074: f47f ad5d bne.w 32b32 <_vfiprintf_r+0x3ae> + 33078: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 + 3307c: f10d 096c add.w r9, sp, #108 ; 0x6c + 33080: 1c41 adds r1, r0, #1 + 33082: e5a7 b.n 32bd4 <_vfiprintf_r+0x450> + 33084: 2302 movs r3, #2 + 33086: aa11 add r2, sp, #68 ; 0x44 + 33088: 931c str r3, [sp, #112] ; 0x70 + 3308a: 921b str r2, [sp, #108] ; 0x6c + 3308c: 2101 movs r1, #1 + 3308e: f10d 096c add.w r9, sp, #108 ; 0x6c + 33092: 4608 mov r0, r1 + 33094: f109 0908 add.w r9, r9, #8 + 33098: 1c41 adds r1, r0, #1 + 3309a: e5ba b.n 32c12 <_vfiprintf_r+0x48e> + 3309c: 2d10 cmp r5, #16 + 3309e: f340 82e5 ble.w 3366c <_vfiprintf_r+0xee8> + 330a2: e9dd 1319 ldrd r1, r3, [sp, #100] ; 0x64 + 330a6: 940f str r4, [sp, #60] ; 0x3c + 330a8: 4608 mov r0, r1 + 330aa: ee18 4a10 vmov r4, s16 + 330ae: e007 b.n 330c0 <_vfiprintf_r+0x93c> + 330b0: f100 0c02 add.w ip, r0, #2 + 330b4: f109 0908 add.w r9, r9, #8 + 330b8: 4610 mov r0, r2 + 330ba: 3d10 subs r5, #16 + 330bc: 2d10 cmp r5, #16 + 330be: dd1d ble.n 330fc <_vfiprintf_r+0x978> + 330c0: 4925 ldr r1, [pc, #148] ; (33158 <_vfiprintf_r+0x9d4>) + 330c2: f8c9 1000 str.w r1, [r9] + 330c6: 1c42 adds r2, r0, #1 + 330c8: 3310 adds r3, #16 + 330ca: 2110 movs r1, #16 + 330cc: 2a07 cmp r2, #7 + 330ce: e9cd 2319 strd r2, r3, [sp, #100] ; 0x64 + 330d2: f8c9 1004 str.w r1, [r9, #4] + 330d6: ddeb ble.n 330b0 <_vfiprintf_r+0x92c> + 330d8: aa18 add r2, sp, #96 ; 0x60 + 330da: b303 cbz r3, 3311e <_vfiprintf_r+0x99a> + 330dc: 4621 mov r1, r4 + 330de: 4658 mov r0, fp + 330e0: f10d 096c add.w r9, sp, #108 ; 0x6c + 330e4: f7ff fb12 bl 3270c <__sprint_r.part.0> + 330e8: 2800 cmp r0, #0 + 330ea: f47f ad22 bne.w 32b32 <_vfiprintf_r+0x3ae> + 330ee: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 + 330f2: 3d10 subs r5, #16 + 330f4: 2d10 cmp r5, #16 + 330f6: f100 0c01 add.w ip, r0, #1 + 330fa: dce1 bgt.n 330c0 <_vfiprintf_r+0x93c> + 330fc: 9c0f ldr r4, [sp, #60] ; 0x3c + 330fe: 4660 mov r0, ip + 33100: 4a15 ldr r2, [pc, #84] ; (33158 <_vfiprintf_r+0x9d4>) + 33102: f8c9 5004 str.w r5, [r9, #4] + 33106: 442b add r3, r5 + 33108: 2807 cmp r0, #7 + 3310a: e9cd 0319 strd r0, r3, [sp, #100] ; 0x64 + 3310e: f8c9 2000 str.w r2, [r9] + 33112: f300 80c1 bgt.w 33298 <_vfiprintf_r+0xb14> + 33116: f109 0908 add.w r9, r9, #8 + 3311a: 1c41 adds r1, r0, #1 + 3311c: e546 b.n 32bac <_vfiprintf_r+0x428> + 3311e: 4618 mov r0, r3 + 33120: f04f 0c01 mov.w ip, #1 + 33124: f10d 096c add.w r9, sp, #108 ; 0x6c + 33128: e7c7 b.n 330ba <_vfiprintf_r+0x936> + 3312a: 0776 lsls r6, r6, #29 + 3312c: 9319 str r3, [sp, #100] ; 0x64 + 3312e: d553 bpl.n 331d8 <_vfiprintf_r+0xa54> + 33130: 9a06 ldr r2, [sp, #24] + 33132: 9903 ldr r1, [sp, #12] + 33134: 1a54 subs r4, r2, r1 + 33136: 2c00 cmp r4, #0 + 33138: dd4e ble.n 331d8 <_vfiprintf_r+0xa54> + 3313a: f10d 096c add.w r9, sp, #108 ; 0x6c + 3313e: 2c10 cmp r4, #16 + 33140: f340 82b0 ble.w 336a4 <_vfiprintf_r+0xf20> + 33144: 9919 ldr r1, [sp, #100] ; 0x64 + 33146: ee18 6a10 vmov r6, s16 + 3314a: 2510 movs r5, #16 + 3314c: e00d b.n 3316a <_vfiprintf_r+0x9e6> + 3314e: bf00 nop + 33150: 20004520 .word 0x20004520 + 33154: 20004b2c .word 0x20004b2c + 33158: 20004564 .word 0x20004564 + 3315c: 1c88 adds r0, r1, #2 + 3315e: f109 0908 add.w r9, r9, #8 + 33162: 4611 mov r1, r2 + 33164: 3c10 subs r4, #16 + 33166: 2c10 cmp r4, #16 + 33168: dd1a ble.n 331a0 <_vfiprintf_r+0xa1c> + 3316a: 1c4a adds r2, r1, #1 + 3316c: 48b3 ldr r0, [pc, #716] ; (3343c <_vfiprintf_r+0xcb8>) + 3316e: 3310 adds r3, #16 + 33170: 2a07 cmp r2, #7 + 33172: e9c9 0500 strd r0, r5, [r9] + 33176: e9cd 2319 strd r2, r3, [sp, #100] ; 0x64 + 3317a: ddef ble.n 3315c <_vfiprintf_r+0x9d8> + 3317c: aa18 add r2, sp, #96 ; 0x60 + 3317e: b333 cbz r3, 331ce <_vfiprintf_r+0xa4a> + 33180: 4631 mov r1, r6 + 33182: 4658 mov r0, fp + 33184: f7ff fac2 bl 3270c <__sprint_r.part.0> + 33188: 2800 cmp r0, #0 + 3318a: f47f acd2 bne.w 32b32 <_vfiprintf_r+0x3ae> + 3318e: e9dd 1319 ldrd r1, r3, [sp, #100] ; 0x64 + 33192: 3c10 subs r4, #16 + 33194: 2c10 cmp r4, #16 + 33196: f101 0001 add.w r0, r1, #1 + 3319a: f10d 096c add.w r9, sp, #108 ; 0x6c + 3319e: dce4 bgt.n 3316a <_vfiprintf_r+0x9e6> + 331a0: 4aa6 ldr r2, [pc, #664] ; (3343c <_vfiprintf_r+0xcb8>) + 331a2: f8c9 4004 str.w r4, [r9, #4] + 331a6: 4423 add r3, r4 + 331a8: 2807 cmp r0, #7 + 331aa: e9cd 0319 strd r0, r3, [sp, #100] ; 0x64 + 331ae: f8c9 2000 str.w r2, [r9] + 331b2: f77f ad59 ble.w 32c68 <_vfiprintf_r+0x4e4> + 331b6: b17b cbz r3, 331d8 <_vfiprintf_r+0xa54> + 331b8: ee18 1a10 vmov r1, s16 + 331bc: aa18 add r2, sp, #96 ; 0x60 + 331be: 4658 mov r0, fp + 331c0: f7ff faa4 bl 3270c <__sprint_r.part.0> + 331c4: 2800 cmp r0, #0 + 331c6: f47f acb4 bne.w 32b32 <_vfiprintf_r+0x3ae> + 331ca: 9b1a ldr r3, [sp, #104] ; 0x68 + 331cc: e54c b.n 32c68 <_vfiprintf_r+0x4e4> + 331ce: 2001 movs r0, #1 + 331d0: 4619 mov r1, r3 + 331d2: f10d 096c add.w r9, sp, #108 ; 0x6c + 331d6: e7c5 b.n 33164 <_vfiprintf_r+0x9e0> + 331d8: e9dd 3205 ldrd r3, r2, [sp, #20] + 331dc: 9903 ldr r1, [sp, #12] + 331de: 428a cmp r2, r1 + 331e0: bfac ite ge + 331e2: 189b addge r3, r3, r2 + 331e4: 185b addlt r3, r3, r1 + 331e6: 9305 str r3, [sp, #20] + 331e8: e549 b.n 32c7e <_vfiprintf_r+0x4fa> + 331ea: f9b2 100c ldrsh.w r1, [r2, #12] + 331ee: 058f lsls r7, r1, #22 + 331f0: ee18 3a10 vmov r3, s16 + 331f4: b28a uxth r2, r1 + 331f6: f53f aae8 bmi.w 327ca <_vfiprintf_r+0x46> + 331fa: ee18 5a10 vmov r5, s16 + 331fe: 6d98 ldr r0, [r3, #88] ; 0x58 + 33200: f7fb fcb2 bl 2eb68 <__retarget_lock_acquire_recursive> + 33204: f9b5 100c ldrsh.w r1, [r5, #12] + 33208: b28a uxth r2, r1 + 3320a: f7ff bade b.w 327ca <_vfiprintf_r+0x46> + 3320e: 2b00 cmp r3, #0 + 33210: f43f ae79 beq.w 32f06 <_vfiprintf_r+0x782> + 33214: ee18 1a10 vmov r1, s16 + 33218: aa18 add r2, sp, #96 ; 0x60 + 3321a: 4658 mov r0, fp + 3321c: f7ff fa76 bl 3270c <__sprint_r.part.0> + 33220: 2800 cmp r0, #0 + 33222: f47f ac86 bne.w 32b32 <_vfiprintf_r+0x3ae> + 33226: 9919 ldr r1, [sp, #100] ; 0x64 + 33228: 9b1a ldr r3, [sp, #104] ; 0x68 + 3322a: 3101 adds r1, #1 + 3322c: f10d 096c add.w r9, sp, #108 ; 0x6c + 33230: e4f8 b.n 32c24 <_vfiprintf_r+0x4a0> + 33232: 9219 str r2, [sp, #100] ; 0x64 + 33234: f10d 096c add.w r9, sp, #108 ; 0x6c + 33238: e45e b.n 32af8 <_vfiprintf_r+0x374> + 3323a: 2f00 cmp r7, #0 + 3323c: f47f abc3 bne.w 329c6 <_vfiprintf_r+0x242> + 33240: 9e03 ldr r6, [sp, #12] + 33242: 2700 movs r7, #0 + 33244: 9704 str r7, [sp, #16] + 33246: ac44 add r4, sp, #272 ; 0x110 + 33248: f7ff bbc5 b.w 329d6 <_vfiprintf_r+0x252> + 3324c: 9b03 ldr r3, [sp, #12] + 3324e: f013 0310 ands.w r3, r3, #16 + 33252: d154 bne.n 332fe <_vfiprintf_r+0xb7a> + 33254: 9a03 ldr r2, [sp, #12] + 33256: f012 0040 ands.w r0, r2, #64 ; 0x40 + 3325a: f000 816b beq.w 33534 <_vfiprintf_r+0xdb0> + 3325e: 9907 ldr r1, [sp, #28] + 33260: 461a mov r2, r3 + 33262: f851 3b04 ldr.w r3, [r1], #4 + 33266: 9107 str r1, [sp, #28] + 33268: b29b uxth r3, r3 + 3326a: 2101 movs r1, #1 + 3326c: e401 b.n 32a72 <_vfiprintf_r+0x2ee> + 3326e: 9a09 ldr r2, [sp, #36] ; 0x24 + 33270: 2a00 cmp r2, #0 + 33272: d164 bne.n 3333e <_vfiprintf_r+0xbba> + 33274: 4618 mov r0, r3 + 33276: 2101 movs r1, #1 + 33278: f10d 096c add.w r9, sp, #108 ; 0x6c + 3327c: e4c9 b.n 32c12 <_vfiprintf_r+0x48e> + 3327e: 2101 movs r1, #1 + 33280: 4618 mov r0, r3 + 33282: f10d 096c add.w r9, sp, #108 ; 0x6c + 33286: e4c4 b.n 32c12 <_vfiprintf_r+0x48e> + 33288: 425b negs r3, r3 + 3328a: eb62 0242 sbc.w r2, r2, r2, lsl #1 + 3328e: 9603 str r6, [sp, #12] + 33290: 202d movs r0, #45 ; 0x2d + 33292: 2101 movs r1, #1 + 33294: f7ff bbee b.w 32a74 <_vfiprintf_r+0x2f0> + 33298: 2b00 cmp r3, #0 + 3329a: f000 8088 beq.w 333ae <_vfiprintf_r+0xc2a> + 3329e: ee18 1a10 vmov r1, s16 + 332a2: aa18 add r2, sp, #96 ; 0x60 + 332a4: 4658 mov r0, fp + 332a6: f7ff fa31 bl 3270c <__sprint_r.part.0> + 332aa: 2800 cmp r0, #0 + 332ac: f47f ac41 bne.w 32b32 <_vfiprintf_r+0x3ae> + 332b0: e9dd 0319 ldrd r0, r3, [sp, #100] ; 0x64 + 332b4: f10d 096c add.w r9, sp, #108 ; 0x6c + 332b8: 1c41 adds r1, r0, #1 + 332ba: e477 b.n 32bac <_vfiprintf_r+0x428> + 332bc: f898 1000 ldrb.w r1, [r8] + 332c0: 9307 str r3, [sp, #28] + 332c2: f7ff bad2 b.w 3286a <_vfiprintf_r+0xe6> + 332c6: ac44 add r4, sp, #272 ; 0x110 + 332c8: f7ff bb85 b.w 329d6 <_vfiprintf_r+0x252> + 332cc: f109 0908 add.w r9, r9, #8 + 332d0: f10c 0101 add.w r1, ip, #1 + 332d4: 4660 mov r0, ip + 332d6: e4a0 b.n 32c1a <_vfiprintf_r+0x496> + 332d8: f416 7200 ands.w r2, r6, #512 ; 0x200 + 332dc: f040 8197 bne.w 3360e <_vfiprintf_r+0xe8a> + 332e0: f851 3b04 ldr.w r3, [r1], #4 + 332e4: 9107 str r1, [sp, #28] + 332e6: f7ff bbc0 b.w 32a6a <_vfiprintf_r+0x2e6> + 332ea: 05b3 lsls r3, r6, #22 + 332ec: f100 8188 bmi.w 33600 <_vfiprintf_r+0xe7c> + 332f0: f852 3b04 ldr.w r3, [r2], #4 + 332f4: 9207 str r2, [sp, #28] + 332f6: 17da asrs r2, r3, #31 + 332f8: 4611 mov r1, r2 + 332fa: f7ff bb52 b.w 329a2 <_vfiprintf_r+0x21e> + 332fe: 9907 ldr r1, [sp, #28] + 33300: f851 3b04 ldr.w r3, [r1], #4 + 33304: 9107 str r1, [sp, #28] + 33306: 2101 movs r1, #1 + 33308: f7ff bbb3 b.w 32a72 <_vfiprintf_r+0x2ee> + 3330c: 9b07 ldr r3, [sp, #28] + 3330e: 9805 ldr r0, [sp, #20] + 33310: f853 1b04 ldr.w r1, [r3], #4 + 33314: 9307 str r3, [sp, #28] + 33316: 17c2 asrs r2, r0, #31 + 33318: e9c1 0200 strd r0, r2, [r1] + 3331c: f7ff ba7d b.w 3281a <_vfiprintf_r+0x96> + 33320: 9b0b ldr r3, [sp, #44] ; 0x2c + 33322: 2b00 cmp r3, #0 + 33324: f43f ab26 beq.w 32974 <_vfiprintf_r+0x1f0> + 33328: 9b0b ldr r3, [sp, #44] ; 0x2c + 3332a: 781b ldrb r3, [r3, #0] + 3332c: 2b00 cmp r3, #0 + 3332e: f43f ab21 beq.w 32974 <_vfiprintf_r+0x1f0> + 33332: f898 1000 ldrb.w r1, [r8] + 33336: f446 6680 orr.w r6, r6, #1024 ; 0x400 + 3333a: f7ff ba96 b.w 3286a <_vfiprintf_r+0xe6> + 3333e: 2302 movs r3, #2 + 33340: aa11 add r2, sp, #68 ; 0x44 + 33342: 931c str r3, [sp, #112] ; 0x70 + 33344: 921b str r2, [sp, #108] ; 0x6c + 33346: 2001 movs r0, #1 + 33348: f10d 096c add.w r9, sp, #108 ; 0x6c + 3334c: e6a2 b.n 33094 <_vfiprintf_r+0x910> + 3334e: 9603 str r6, [sp, #12] + 33350: e571 b.n 32e36 <_vfiprintf_r+0x6b2> + 33352: 4b3b ldr r3, [pc, #236] ; (33440 <_vfiprintf_r+0xcbc>) + 33354: 930c str r3, [sp, #48] ; 0x30 + 33356: f016 0220 ands.w r2, r6, #32 + 3335a: d059 beq.n 33410 <_vfiprintf_r+0xc8c> + 3335c: 9b07 ldr r3, [sp, #28] + 3335e: 3307 adds r3, #7 + 33360: f023 0307 bic.w r3, r3, #7 + 33364: 4618 mov r0, r3 + 33366: 685a ldr r2, [r3, #4] + 33368: f850 3b08 ldr.w r3, [r0], #8 + 3336c: 9007 str r0, [sp, #28] + 3336e: 07f4 lsls r4, r6, #31 + 33370: d509 bpl.n 33386 <_vfiprintf_r+0xc02> + 33372: ea53 0002 orrs.w r0, r3, r2 + 33376: d006 beq.n 33386 <_vfiprintf_r+0xc02> + 33378: f88d 1045 strb.w r1, [sp, #69] ; 0x45 + 3337c: 2130 movs r1, #48 ; 0x30 + 3337e: f046 0602 orr.w r6, r6, #2 + 33382: f88d 1044 strb.w r1, [sp, #68] ; 0x44 + 33386: f426 6180 bic.w r1, r6, #1024 ; 0x400 + 3338a: 9103 str r1, [sp, #12] + 3338c: 2102 movs r1, #2 + 3338e: f7ff bb70 b.w 32a72 <_vfiprintf_r+0x2ee> + 33392: 4b2c ldr r3, [pc, #176] ; (33444 <_vfiprintf_r+0xcc0>) + 33394: 930c str r3, [sp, #48] ; 0x30 + 33396: e7de b.n 33356 <_vfiprintf_r+0xbd2> + 33398: 9b07 ldr r3, [sp, #28] + 3339a: 2101 movs r1, #1 + 3339c: f853 2b04 ldr.w r2, [r3], #4 + 333a0: 9103 str r1, [sp, #12] + 333a2: f88d 20ac strb.w r2, [sp, #172] ; 0xac + 333a6: 9307 str r3, [sp, #28] + 333a8: 9104 str r1, [sp, #16] + 333aa: ac2b add r4, sp, #172 ; 0xac + 333ac: e4df b.n 32d6e <_vfiprintf_r+0x5ea> + 333ae: f89d 2043 ldrb.w r2, [sp, #67] ; 0x43 + 333b2: 2a00 cmp r2, #0 + 333b4: f040 8132 bne.w 3361c <_vfiprintf_r+0xe98> + 333b8: 9a09 ldr r2, [sp, #36] ; 0x24 + 333ba: 2a00 cmp r2, #0 + 333bc: f47f ae62 bne.w 33084 <_vfiprintf_r+0x900> + 333c0: 4618 mov r0, r3 + 333c2: 2101 movs r1, #1 + 333c4: f10d 096c add.w r9, sp, #108 ; 0x6c + 333c8: e427 b.n 32c1a <_vfiprintf_r+0x496> + 333ca: 2100 movs r1, #0 + 333cc: 2208 movs r2, #8 + 333ce: a816 add r0, sp, #88 ; 0x58 + 333d0: 9413 str r4, [sp, #76] ; 0x4c + 333d2: f7fb f8cf bl 2e574 + 333d6: 1c79 adds r1, r7, #1 + 333d8: f000 80bc beq.w 33554 <_vfiprintf_r+0xdd0> + 333dc: 2500 movs r5, #0 + 333de: 9407 str r4, [sp, #28] + 333e0: 462c mov r4, r5 + 333e2: e00c b.n 333fe <_vfiprintf_r+0xc7a> + 333e4: a92b add r1, sp, #172 ; 0xac + 333e6: 4658 mov r0, fp + 333e8: f7fe f964 bl 316b4 <_wcrtomb_r> + 333ec: 1c42 adds r2, r0, #1 + 333ee: 4420 add r0, r4 + 333f0: f000 816b beq.w 336ca <_vfiprintf_r+0xf46> + 333f4: 42b8 cmp r0, r7 + 333f6: dc08 bgt.n 3340a <_vfiprintf_r+0xc86> + 333f8: f000 8170 beq.w 336dc <_vfiprintf_r+0xf58> + 333fc: 4604 mov r4, r0 + 333fe: 9a13 ldr r2, [sp, #76] ; 0x4c + 33400: 5952 ldr r2, [r2, r5] + 33402: ab16 add r3, sp, #88 ; 0x58 + 33404: 3504 adds r5, #4 + 33406: 2a00 cmp r2, #0 + 33408: d1ec bne.n 333e4 <_vfiprintf_r+0xc60> + 3340a: 9404 str r4, [sp, #16] + 3340c: 9c07 ldr r4, [sp, #28] + 3340e: e0af b.n 33570 <_vfiprintf_r+0xdec> + 33410: f016 0310 ands.w r3, r6, #16 + 33414: 9807 ldr r0, [sp, #28] + 33416: d10c bne.n 33432 <_vfiprintf_r+0xcae> + 33418: f016 0440 ands.w r4, r6, #64 ; 0x40 + 3341c: d005 beq.n 3342a <_vfiprintf_r+0xca6> + 3341e: 461a mov r2, r3 + 33420: f850 3b04 ldr.w r3, [r0], #4 + 33424: 9007 str r0, [sp, #28] + 33426: b29b uxth r3, r3 + 33428: e7a1 b.n 3336e <_vfiprintf_r+0xbea> + 3342a: f416 7200 ands.w r2, r6, #512 ; 0x200 + 3342e: f040 80e1 bne.w 335f4 <_vfiprintf_r+0xe70> + 33432: f850 3b04 ldr.w r3, [r0], #4 + 33436: 9007 str r0, [sp, #28] + 33438: e799 b.n 3336e <_vfiprintf_r+0xbea> + 3343a: bf00 nop + 3343c: 20004564 .word 0x20004564 + 33440: 20004520 .word 0x20004520 + 33444: 20004534 .word 0x20004534 + 33448: 9903 ldr r1, [sp, #12] + 3344a: 9704 str r7, [sp, #16] + 3344c: ac44 add r4, sp, #272 ; 0x110 + 3344e: 469e mov lr, r3 + 33450: ee08 ba90 vmov s17, fp + 33454: f401 6680 and.w r6, r1, #1024 ; 0x400 + 33458: f04f 0c00 mov.w ip, #0 + 3345c: 4623 mov r3, r4 + 3345e: e006 b.n 3346e <_vfiprintf_r+0xcea> + 33460: f1be 0f0a cmp.w lr, #10 + 33464: f172 0200 sbcs.w r2, r2, #0 + 33468: d339 bcc.n 334de <_vfiprintf_r+0xd5a> + 3346a: 46a6 mov lr, r4 + 3346c: 462a mov r2, r5 + 3346e: 49a6 ldr r1, [pc, #664] ; (33708 <_vfiprintf_r+0xf84>) + 33470: eb1e 0002 adds.w r0, lr, r2 + 33474: f140 0000 adc.w r0, r0, #0 + 33478: 460f mov r7, r1 + 3347a: fba1 1400 umull r1, r4, r1, r0 + 3347e: f024 0103 bic.w r1, r4, #3 + 33482: eb01 0194 add.w r1, r1, r4, lsr #2 + 33486: 1a40 subs r0, r0, r1 + 33488: ebbe 0100 subs.w r1, lr, r0 + 3348c: f04f 35cc mov.w r5, #3435973836 ; 0xcccccccc + 33490: f162 0400 sbc.w r4, r2, #0 + 33494: fb05 f501 mul.w r5, r5, r1 + 33498: fb07 5504 mla r5, r7, r4, r5 + 3349c: fba1 4107 umull r4, r1, r1, r7 + 334a0: 440d add r5, r1 + 334a2: 2705 movs r7, #5 + 334a4: f004 0101 and.w r1, r4, #1 + 334a8: fba1 1b07 umull r1, fp, r1, r7 + 334ac: 1809 adds r1, r1, r0 + 334ae: 0864 lsrs r4, r4, #1 + 334b0: 3130 adds r1, #48 ; 0x30 + 334b2: f803 1c01 strb.w r1, [r3, #-1] + 334b6: ea44 74c5 orr.w r4, r4, r5, lsl #31 + 334ba: f10c 0c01 add.w ip, ip, #1 + 334be: 3b01 subs r3, #1 + 334c0: 086d lsrs r5, r5, #1 + 334c2: 2e00 cmp r6, #0 + 334c4: d0cc beq.n 33460 <_vfiprintf_r+0xcdc> 334c6: 990b ldr r1, [sp, #44] ; 0x2c - 334c8: 9b08 ldr r3, [sp, #32] - 334ca: 784a ldrb r2, [r1, #1] - 334cc: b10a cbz r2, 334d2 <_vfiprintf_r+0xe4e> - 334ce: 3101 adds r1, #1 - 334d0: 910b str r1, [sp, #44] ; 0x2c - 334d2: f04f 0c00 mov.w ip, #0 - 334d6: e748 b.n 3336a <_vfiprintf_r+0xce6> - 334d8: 9b03 ldr r3, [sp, #12] - 334da: 9307 str r3, [sp, #28] - 334dc: 9b04 ldr r3, [sp, #16] - 334de: 9303 str r3, [sp, #12] - 334e0: 461f mov r7, r3 - 334e2: 9308 str r3, [sp, #32] - 334e4: f7ff b9fe b.w 328e4 <_vfiprintf_r+0x260> - 334e8: 2101 movs r1, #1 - 334ea: 4618 mov r0, r3 - 334ec: f10d 096c add.w r9, sp, #108 ; 0x6c - 334f0: f7ff bb13 b.w 32b1a <_vfiprintf_r+0x496> - 334f4: f850 3b04 ldr.w r3, [r0], #4 - 334f8: 9007 str r0, [sp, #28] - 334fa: 4622 mov r2, r4 - 334fc: b2db uxtb r3, r3 - 334fe: e6b6 b.n 3326e <_vfiprintf_r+0xbea> - 33500: f912 3b04 ldrsb.w r3, [r2], #4 - 33504: 9207 str r2, [sp, #28] - 33506: 17da asrs r2, r3, #31 - 33508: 4611 mov r1, r2 - 3350a: f7ff b9ca b.w 328a2 <_vfiprintf_r+0x21e> - 3350e: f851 3b04 ldr.w r3, [r1], #4 - 33512: 9107 str r1, [sp, #28] - 33514: 4602 mov r2, r0 - 33516: b2db uxtb r3, r3 - 33518: f7ff ba27 b.w 3296a <_vfiprintf_r+0x2e6> - 3351c: 2301 movs r3, #1 - 3351e: 931c str r3, [sp, #112] ; 0x70 - 33520: 2101 movs r1, #1 - 33522: f10d 0343 add.w r3, sp, #67 ; 0x43 - 33526: 931b str r3, [sp, #108] ; 0x6c - 33528: f10d 096c add.w r9, sp, #108 ; 0x6c - 3352c: 460b mov r3, r1 - 3352e: f7ff bacd b.w 32acc <_vfiprintf_r+0x448> - 33532: 9b07 ldr r3, [sp, #28] - 33534: 9905 ldr r1, [sp, #20] - 33536: f853 2b04 ldr.w r2, [r3], #4 - 3353a: 9307 str r3, [sp, #28] - 3353c: 8011 strh r1, [r2, #0] - 3353e: f7ff b8ec b.w 3271a <_vfiprintf_r+0x96> - 33542: 1c59 adds r1, r3, #1 - 33544: 4658 mov r0, fp - 33546: f7fa f96d bl 2d824 <_malloc_r> - 3354a: 4604 mov r4, r0 - 3354c: 2800 cmp r0, #0 - 3354e: d03c beq.n 335ca <_vfiprintf_r+0xf46> - 33550: 9008 str r0, [sp, #32] - 33552: e795 b.n 33480 <_vfiprintf_r+0xdfc> - 33554: 6d88 ldr r0, [r1, #88] ; 0x58 - 33556: f7fb fa99 bl 2ea8c <__retarget_lock_release_recursive> - 3355a: f7ff b9e9 b.w 32930 <_vfiprintf_r+0x2ac> - 3355e: 9b03 ldr r3, [sp, #12] - 33560: 9307 str r3, [sp, #28] - 33562: e9cd 7703 strd r7, r7, [sp, #12] - 33566: 9f08 ldr r7, [sp, #32] - 33568: f7ff b9bc b.w 328e4 <_vfiprintf_r+0x260> - 3356c: 9819 ldr r0, [sp, #100] ; 0x64 - 3356e: 9b1a ldr r3, [sp, #104] ; 0x68 - 33570: 3001 adds r0, #1 - 33572: e545 b.n 33000 <_vfiprintf_r+0x97c> - 33574: 9b03 ldr r3, [sp, #12] - 33576: 9307 str r3, [sp, #28] - 33578: 4620 mov r0, r4 - 3357a: f7fb fae1 bl 2eb40 - 3357e: ea20 73e0 bic.w r3, r0, r0, asr #31 - 33582: 462f mov r7, r5 - 33584: 9004 str r0, [sp, #16] - 33586: 9303 str r3, [sp, #12] - 33588: 9508 str r5, [sp, #32] - 3358a: f7ff b9ab b.w 328e4 <_vfiprintf_r+0x260> - 3358e: ee18 1a10 vmov r1, s16 - 33592: aa18 add r2, sp, #96 ; 0x60 - 33594: 4658 mov r0, fp - 33596: f7ff f839 bl 3260c <__sprint_r.part.0> - 3359a: 2800 cmp r0, #0 - 3359c: f43f aa36 beq.w 32a0c <_vfiprintf_r+0x388> - 335a0: f7ff ba4d b.w 32a3e <_vfiprintf_r+0x3ba> - 335a4: 9819 ldr r0, [sp, #100] ; 0x64 - 335a6: 3001 adds r0, #1 - 335a8: e57a b.n 330a0 <_vfiprintf_r+0xa1c> - 335aa: 468c mov ip, r1 - 335ac: e46e b.n 32e8c <_vfiprintf_r+0x808> - 335ae: 6e6b ldr r3, [r5, #100] ; 0x64 - 335b0: 07d9 lsls r1, r3, #31 - 335b2: d405 bmi.n 335c0 <_vfiprintf_r+0xf3c> - 335b4: 89ab ldrh r3, [r5, #12] - 335b6: 059a lsls r2, r3, #22 - 335b8: d402 bmi.n 335c0 <_vfiprintf_r+0xf3c> - 335ba: 6da8 ldr r0, [r5, #88] ; 0x58 - 335bc: f7fb fa66 bl 2ea8c <__retarget_lock_release_recursive> - 335c0: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff - 335c4: 9305 str r3, [sp, #20] - 335c6: f7ff ba49 b.w 32a5c <_vfiprintf_r+0x3d8> - 335ca: ee18 2a10 vmov r2, s16 - 335ce: f9b2 300c ldrsh.w r3, [r2, #12] - 335d2: f043 0340 orr.w r3, r3, #64 ; 0x40 - 335d6: 8193 strh r3, [r2, #12] - 335d8: f7ff ba35 b.w 32a46 <_vfiprintf_r+0x3c2> - 335dc: 9c07 ldr r4, [sp, #28] - 335de: 9704 str r7, [sp, #16] - 335e0: e746 b.n 33470 <_vfiprintf_r+0xdec> - 335e2: 9b07 ldr r3, [sp, #28] - 335e4: f898 1001 ldrb.w r1, [r8, #1] - 335e8: f853 7b04 ldr.w r7, [r3], #4 - 335ec: 9307 str r3, [sp, #28] - 335ee: 4690 mov r8, r2 - 335f0: ea47 77e7 orr.w r7, r7, r7, asr #31 - 335f4: f7ff b8b9 b.w 3276a <_vfiprintf_r+0xe6> - 335f8: ee18 2a10 vmov r2, s16 - 335fc: 8993 ldrh r3, [r2, #12] - 335fe: f043 0340 orr.w r3, r3, #64 ; 0x40 - 33602: 8193 strh r3, [r2, #12] - 33604: f7ff ba15 b.w 32a32 <_vfiprintf_r+0x3ae> - 33608: cccccccd .word 0xcccccccd - 3360c: 20004488 .word 0x20004488 - -00033610 <__sbprintf>: - 33610: b570 push {r4, r5, r6, lr} - 33612: 460c mov r4, r1 - 33614: 8989 ldrh r1, [r1, #12] - 33616: f5ad 6d8e sub.w sp, sp, #1136 ; 0x470 - 3361a: f021 0102 bic.w r1, r1, #2 - 3361e: f8ad 1014 strh.w r1, [sp, #20] - 33622: 6e61 ldr r1, [r4, #100] ; 0x64 - 33624: 911b str r1, [sp, #108] ; 0x6c - 33626: 89e1 ldrh r1, [r4, #14] - 33628: f8ad 1016 strh.w r1, [sp, #22] - 3362c: 69e1 ldr r1, [r4, #28] - 3362e: 9109 str r1, [sp, #36] ; 0x24 - 33630: 6a61 ldr r1, [r4, #36] ; 0x24 - 33632: 910b str r1, [sp, #44] ; 0x2c - 33634: a91c add r1, sp, #112 ; 0x70 - 33636: 9102 str r1, [sp, #8] - 33638: 9106 str r1, [sp, #24] - 3363a: f44f 6180 mov.w r1, #1024 ; 0x400 - 3363e: 4606 mov r6, r0 - 33640: 9104 str r1, [sp, #16] - 33642: 9107 str r1, [sp, #28] - 33644: a818 add r0, sp, #96 ; 0x60 - 33646: 2100 movs r1, #0 - 33648: e9cd 3200 strd r3, r2, [sp] - 3364c: 9108 str r1, [sp, #32] - 3364e: f7fb fa17 bl 2ea80 <__retarget_lock_init_recursive> - 33652: e9dd 3200 ldrd r3, r2, [sp] - 33656: a902 add r1, sp, #8 - 33658: 4630 mov r0, r6 - 3365a: f7ff f813 bl 32684 <_vfiprintf_r> - 3365e: 1e05 subs r5, r0, #0 - 33660: db07 blt.n 33672 <__sbprintf+0x62> - 33662: a902 add r1, sp, #8 - 33664: 4630 mov r0, r6 - 33666: f7fd fee5 bl 31434 <_fflush_r> - 3366a: 2800 cmp r0, #0 - 3366c: bf18 it ne - 3366e: f04f 35ff movne.w r5, #4294967295 ; 0xffffffff - 33672: f8bd 3014 ldrh.w r3, [sp, #20] - 33676: 065b lsls r3, r3, #25 - 33678: d503 bpl.n 33682 <__sbprintf+0x72> - 3367a: 89a3 ldrh r3, [r4, #12] - 3367c: f043 0340 orr.w r3, r3, #64 ; 0x40 - 33680: 81a3 strh r3, [r4, #12] - 33682: 9818 ldr r0, [sp, #96] ; 0x60 - 33684: f7fb f9fe bl 2ea84 <__retarget_lock_close_recursive> - 33688: 4628 mov r0, r5 - 3368a: f50d 6d8e add.w sp, sp, #1136 ; 0x470 - 3368e: bd70 pop {r4, r5, r6, pc} - -00033690 <__sfvwrite_r>: - 33690: 6893 ldr r3, [r2, #8] - 33692: 2b00 cmp r3, #0 - 33694: f000 8085 beq.w 337a2 <__sfvwrite_r+0x112> - 33698: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 3369c: f9b1 300c ldrsh.w r3, [r1, #12] - 336a0: 460c mov r4, r1 - 336a2: 0719 lsls r1, r3, #28 - 336a4: 4680 mov r8, r0 - 336a6: b083 sub sp, #12 - 336a8: 4617 mov r7, r2 - 336aa: b298 uxth r0, r3 - 336ac: d525 bpl.n 336fa <__sfvwrite_r+0x6a> - 336ae: 6923 ldr r3, [r4, #16] - 336b0: b31b cbz r3, 336fa <__sfvwrite_r+0x6a> - 336b2: f010 0302 ands.w r3, r0, #2 - 336b6: 683d ldr r5, [r7, #0] - 336b8: d02d beq.n 33716 <__sfvwrite_r+0x86> - 336ba: f04f 0a00 mov.w sl, #0 - 336be: f8df b2c0 ldr.w fp, [pc, #704] ; 33980 <__sfvwrite_r+0x2f0> - 336c2: 4656 mov r6, sl - 336c4: 46b9 mov r9, r7 - 336c6: 455e cmp r6, fp - 336c8: 4633 mov r3, r6 - 336ca: 4652 mov r2, sl - 336cc: bf28 it cs - 336ce: 465b movcs r3, fp - 336d0: 4640 mov r0, r8 - 336d2: 2e00 cmp r6, #0 - 336d4: d052 beq.n 3377c <__sfvwrite_r+0xec> - 336d6: 69e1 ldr r1, [r4, #28] - 336d8: 6a67 ldr r7, [r4, #36] ; 0x24 - 336da: 47b8 blx r7 - 336dc: 2800 cmp r0, #0 - 336de: dd56 ble.n 3378e <__sfvwrite_r+0xfe> - 336e0: f8d9 3008 ldr.w r3, [r9, #8] - 336e4: 1a1b subs r3, r3, r0 - 336e6: 4482 add sl, r0 - 336e8: 1a36 subs r6, r6, r0 - 336ea: f8c9 3008 str.w r3, [r9, #8] - 336ee: 2b00 cmp r3, #0 - 336f0: d1e9 bne.n 336c6 <__sfvwrite_r+0x36> - 336f2: 2000 movs r0, #0 - 336f4: b003 add sp, #12 - 336f6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 336fa: 4621 mov r1, r4 - 336fc: 4640 mov r0, r8 - 336fe: f000 f941 bl 33984 <__swsetup_r> - 33702: 2800 cmp r0, #0 - 33704: f040 8138 bne.w 33978 <__sfvwrite_r+0x2e8> - 33708: f9b4 300c ldrsh.w r3, [r4, #12] - 3370c: 683d ldr r5, [r7, #0] - 3370e: b298 uxth r0, r3 - 33710: f010 0302 ands.w r3, r0, #2 - 33714: d1d1 bne.n 336ba <__sfvwrite_r+0x2a> - 33716: f010 0901 ands.w r9, r0, #1 - 3371a: d144 bne.n 337a6 <__sfvwrite_r+0x116> - 3371c: 464e mov r6, r9 - 3371e: 9700 str r7, [sp, #0] - 33720: b346 cbz r6, 33774 <__sfvwrite_r+0xe4> - 33722: 0582 lsls r2, r0, #22 - 33724: f8d4 b008 ldr.w fp, [r4, #8] - 33728: f140 8085 bpl.w 33836 <__sfvwrite_r+0x1a6> - 3372c: 45b3 cmp fp, r6 - 3372e: 465a mov r2, fp - 33730: f200 80b4 bhi.w 3389c <__sfvwrite_r+0x20c> - 33734: f410 6f90 tst.w r0, #1152 ; 0x480 - 33738: f040 80c1 bne.w 338be <__sfvwrite_r+0x22e> - 3373c: 6820 ldr r0, [r4, #0] - 3373e: 9201 str r2, [sp, #4] - 33740: 4649 mov r1, r9 - 33742: f7fa fe27 bl 2e394 - 33746: 68a3 ldr r3, [r4, #8] - 33748: 9a01 ldr r2, [sp, #4] - 3374a: eba3 010b sub.w r1, r3, fp - 3374e: 6823 ldr r3, [r4, #0] - 33750: 60a1 str r1, [r4, #8] - 33752: 4413 add r3, r2 - 33754: 46b2 mov sl, r6 - 33756: 6023 str r3, [r4, #0] - 33758: 2600 movs r6, #0 - 3375a: 9a00 ldr r2, [sp, #0] - 3375c: 6893 ldr r3, [r2, #8] - 3375e: eba3 030a sub.w r3, r3, sl - 33762: 44d1 add r9, sl - 33764: 6093 str r3, [r2, #8] - 33766: 2b00 cmp r3, #0 - 33768: d0c3 beq.n 336f2 <__sfvwrite_r+0x62> - 3376a: f9b4 000c ldrsh.w r0, [r4, #12] - 3376e: b280 uxth r0, r0 - 33770: 2e00 cmp r6, #0 - 33772: d1d6 bne.n 33722 <__sfvwrite_r+0x92> - 33774: e9d5 9600 ldrd r9, r6, [r5] - 33778: 3508 adds r5, #8 - 3377a: e7d1 b.n 33720 <__sfvwrite_r+0x90> - 3377c: e9d5 a600 ldrd sl, r6, [r5] - 33780: 3508 adds r5, #8 - 33782: e7a0 b.n 336c6 <__sfvwrite_r+0x36> - 33784: 4621 mov r1, r4 - 33786: 4640 mov r0, r8 - 33788: f7fd fe54 bl 31434 <_fflush_r> - 3378c: b388 cbz r0, 337f2 <__sfvwrite_r+0x162> - 3378e: f9b4 300c ldrsh.w r3, [r4, #12] - 33792: f043 0340 orr.w r3, r3, #64 ; 0x40 - 33796: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 3379a: 81a3 strh r3, [r4, #12] - 3379c: b003 add sp, #12 - 3379e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 337a2: 2000 movs r0, #0 - 337a4: 4770 bx lr - 337a6: 461e mov r6, r3 - 337a8: 46ba mov sl, r7 - 337aa: 4699 mov r9, r3 - 337ac: 4618 mov r0, r3 - 337ae: 9500 str r5, [sp, #0] - 337b0: 461f mov r7, r3 - 337b2: b366 cbz r6, 3380e <__sfvwrite_r+0x17e> - 337b4: 2800 cmp r0, #0 - 337b6: d032 beq.n 3381e <__sfvwrite_r+0x18e> - 337b8: 464a mov r2, r9 - 337ba: e9d4 1304 ldrd r1, r3, [r4, #16] - 337be: 6820 ldr r0, [r4, #0] - 337c0: 68a5 ldr r5, [r4, #8] - 337c2: 42b2 cmp r2, r6 - 337c4: bf28 it cs - 337c6: 4632 movcs r2, r6 - 337c8: 4288 cmp r0, r1 - 337ca: d904 bls.n 337d6 <__sfvwrite_r+0x146> - 337cc: eb05 0b03 add.w fp, r5, r3 - 337d0: 455a cmp r2, fp - 337d2: f300 80a7 bgt.w 33924 <__sfvwrite_r+0x294> - 337d6: 4293 cmp r3, r2 - 337d8: dc64 bgt.n 338a4 <__sfvwrite_r+0x214> - 337da: 69e1 ldr r1, [r4, #28] - 337dc: 6a65 ldr r5, [r4, #36] ; 0x24 - 337de: 463a mov r2, r7 - 337e0: 4640 mov r0, r8 - 337e2: 47a8 blx r5 - 337e4: f1b0 0b00 subs.w fp, r0, #0 - 337e8: ddd1 ble.n 3378e <__sfvwrite_r+0xfe> - 337ea: ebb9 090b subs.w r9, r9, fp - 337ee: d0c9 beq.n 33784 <__sfvwrite_r+0xf4> - 337f0: 2001 movs r0, #1 - 337f2: f8da 3008 ldr.w r3, [sl, #8] - 337f6: eba3 030b sub.w r3, r3, fp - 337fa: 445f add r7, fp - 337fc: eba6 060b sub.w r6, r6, fp - 33800: f8ca 3008 str.w r3, [sl, #8] - 33804: 2b00 cmp r3, #0 - 33806: f43f af74 beq.w 336f2 <__sfvwrite_r+0x62> - 3380a: 2e00 cmp r6, #0 - 3380c: d1d2 bne.n 337b4 <__sfvwrite_r+0x124> - 3380e: 9a00 ldr r2, [sp, #0] - 33810: 6856 ldr r6, [r2, #4] - 33812: 4613 mov r3, r2 - 33814: 3208 adds r2, #8 - 33816: 9200 str r2, [sp, #0] - 33818: 2e00 cmp r6, #0 - 3381a: d0f8 beq.n 3380e <__sfvwrite_r+0x17e> - 3381c: 681f ldr r7, [r3, #0] - 3381e: 4632 mov r2, r6 - 33820: 210a movs r1, #10 - 33822: 4638 mov r0, r7 - 33824: f7fb f934 bl 2ea90 - 33828: 2800 cmp r0, #0 - 3382a: f000 809c beq.w 33966 <__sfvwrite_r+0x2d6> - 3382e: 3001 adds r0, #1 - 33830: eba0 0907 sub.w r9, r0, r7 - 33834: e7c0 b.n 337b8 <__sfvwrite_r+0x128> - 33836: 6820 ldr r0, [r4, #0] - 33838: 6923 ldr r3, [r4, #16] - 3383a: 4298 cmp r0, r3 - 3383c: d816 bhi.n 3386c <__sfvwrite_r+0x1dc> - 3383e: 6962 ldr r2, [r4, #20] - 33840: 42b2 cmp r2, r6 - 33842: d813 bhi.n 3386c <__sfvwrite_r+0x1dc> - 33844: f06f 4300 mvn.w r3, #2147483648 ; 0x80000000 - 33848: 42b3 cmp r3, r6 - 3384a: bf28 it cs - 3384c: 4633 movcs r3, r6 - 3384e: 69e1 ldr r1, [r4, #28] - 33850: fb93 f3f2 sdiv r3, r3, r2 - 33854: 6a67 ldr r7, [r4, #36] ; 0x24 - 33856: fb02 f303 mul.w r3, r2, r3 - 3385a: 4640 mov r0, r8 - 3385c: 464a mov r2, r9 - 3385e: 47b8 blx r7 - 33860: f1b0 0a00 subs.w sl, r0, #0 - 33864: dd93 ble.n 3378e <__sfvwrite_r+0xfe> - 33866: eba6 060a sub.w r6, r6, sl - 3386a: e776 b.n 3375a <__sfvwrite_r+0xca> - 3386c: 45b3 cmp fp, r6 - 3386e: 46da mov sl, fp - 33870: bf28 it cs - 33872: 46b2 movcs sl, r6 - 33874: 4652 mov r2, sl - 33876: 4649 mov r1, r9 - 33878: f7fa fd8c bl 2e394 - 3387c: 68a3 ldr r3, [r4, #8] - 3387e: 6822 ldr r2, [r4, #0] - 33880: eba3 030a sub.w r3, r3, sl - 33884: 4452 add r2, sl - 33886: 60a3 str r3, [r4, #8] - 33888: 6022 str r2, [r4, #0] - 3388a: 2b00 cmp r3, #0 - 3388c: d1eb bne.n 33866 <__sfvwrite_r+0x1d6> - 3388e: 4621 mov r1, r4 - 33890: 4640 mov r0, r8 - 33892: f7fd fdcf bl 31434 <_fflush_r> - 33896: 2800 cmp r0, #0 - 33898: d0e5 beq.n 33866 <__sfvwrite_r+0x1d6> - 3389a: e778 b.n 3378e <__sfvwrite_r+0xfe> - 3389c: 6820 ldr r0, [r4, #0] - 3389e: 46b3 mov fp, r6 - 338a0: 4632 mov r2, r6 - 338a2: e74c b.n 3373e <__sfvwrite_r+0xae> - 338a4: 4639 mov r1, r7 - 338a6: 9201 str r2, [sp, #4] - 338a8: f7fa fd74 bl 2e394 - 338ac: 9a01 ldr r2, [sp, #4] - 338ae: 68a3 ldr r3, [r4, #8] - 338b0: 1a9b subs r3, r3, r2 - 338b2: 60a3 str r3, [r4, #8] - 338b4: 6823 ldr r3, [r4, #0] - 338b6: 4413 add r3, r2 - 338b8: 6023 str r3, [r4, #0] - 338ba: 4693 mov fp, r2 - 338bc: e795 b.n 337ea <__sfvwrite_r+0x15a> - 338be: 6823 ldr r3, [r4, #0] - 338c0: 6921 ldr r1, [r4, #16] - 338c2: eba3 0b01 sub.w fp, r3, r1 - 338c6: 6963 ldr r3, [r4, #20] - 338c8: eb03 0a43 add.w sl, r3, r3, lsl #1 - 338cc: eb0a 7ada add.w sl, sl, sl, lsr #31 - 338d0: f10b 0301 add.w r3, fp, #1 - 338d4: ea4f 0a6a mov.w sl, sl, asr #1 - 338d8: 4433 add r3, r6 - 338da: 4553 cmp r3, sl - 338dc: 4652 mov r2, sl - 338de: bf84 itt hi - 338e0: 469a movhi sl, r3 - 338e2: 4652 movhi r2, sl - 338e4: 0543 lsls r3, r0, #21 - 338e6: d52c bpl.n 33942 <__sfvwrite_r+0x2b2> - 338e8: 4611 mov r1, r2 - 338ea: 4640 mov r0, r8 - 338ec: f7f9 ff9a bl 2d824 <_malloc_r> - 338f0: 2800 cmp r0, #0 - 338f2: d03b beq.n 3396c <__sfvwrite_r+0x2dc> - 338f4: 465a mov r2, fp - 338f6: 6921 ldr r1, [r4, #16] - 338f8: 9001 str r0, [sp, #4] - 338fa: f7f6 ff05 bl 2a708 - 338fe: 89a2 ldrh r2, [r4, #12] - 33900: 9b01 ldr r3, [sp, #4] - 33902: f422 6290 bic.w r2, r2, #1152 ; 0x480 - 33906: f042 0280 orr.w r2, r2, #128 ; 0x80 - 3390a: 81a2 strh r2, [r4, #12] - 3390c: eb03 000b add.w r0, r3, fp - 33910: 6123 str r3, [r4, #16] - 33912: ebaa 030b sub.w r3, sl, fp - 33916: f8c4 a014 str.w sl, [r4, #20] - 3391a: 60a3 str r3, [r4, #8] - 3391c: 6020 str r0, [r4, #0] - 3391e: 46b3 mov fp, r6 - 33920: 4632 mov r2, r6 - 33922: e70c b.n 3373e <__sfvwrite_r+0xae> - 33924: 4639 mov r1, r7 - 33926: 465a mov r2, fp - 33928: f7fa fd34 bl 2e394 - 3392c: 6823 ldr r3, [r4, #0] - 3392e: 445b add r3, fp - 33930: 6023 str r3, [r4, #0] - 33932: 4621 mov r1, r4 - 33934: 4640 mov r0, r8 - 33936: f7fd fd7d bl 31434 <_fflush_r> - 3393a: 2800 cmp r0, #0 - 3393c: f43f af55 beq.w 337ea <__sfvwrite_r+0x15a> - 33940: e725 b.n 3378e <__sfvwrite_r+0xfe> - 33942: 4640 mov r0, r8 - 33944: f7fa fa36 bl 2ddb4 <_realloc_r> - 33948: 4603 mov r3, r0 - 3394a: 2800 cmp r0, #0 - 3394c: d1de bne.n 3390c <__sfvwrite_r+0x27c> - 3394e: 6921 ldr r1, [r4, #16] - 33950: 4640 mov r0, r8 - 33952: f7fb f9f7 bl 2ed44 <_free_r> - 33956: f9b4 300c ldrsh.w r3, [r4, #12] - 3395a: 220c movs r2, #12 - 3395c: f023 0380 bic.w r3, r3, #128 ; 0x80 - 33960: f8c8 2000 str.w r2, [r8] - 33964: e715 b.n 33792 <__sfvwrite_r+0x102> - 33966: 1c72 adds r2, r6, #1 - 33968: 4691 mov r9, r2 - 3396a: e726 b.n 337ba <__sfvwrite_r+0x12a> - 3396c: 220c movs r2, #12 - 3396e: f9b4 300c ldrsh.w r3, [r4, #12] - 33972: f8c8 2000 str.w r2, [r8] - 33976: e70c b.n 33792 <__sfvwrite_r+0x102> - 33978: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 3397c: e6ba b.n 336f4 <__sfvwrite_r+0x64> - 3397e: bf00 nop - 33980: 7ffffc00 .word 0x7ffffc00 - -00033984 <__swsetup_r>: - 33984: b538 push {r3, r4, r5, lr} - 33986: 4b31 ldr r3, [pc, #196] ; (33a4c <__swsetup_r+0xc8>) - 33988: 681b ldr r3, [r3, #0] - 3398a: 4605 mov r5, r0 - 3398c: 460c mov r4, r1 - 3398e: b113 cbz r3, 33996 <__swsetup_r+0x12> - 33990: 6b5a ldr r2, [r3, #52] ; 0x34 - 33992: 2a00 cmp r2, #0 - 33994: d04e beq.n 33a34 <__swsetup_r+0xb0> - 33996: f9b4 300c ldrsh.w r3, [r4, #12] - 3399a: 0718 lsls r0, r3, #28 - 3399c: b29a uxth r2, r3 - 3399e: d51c bpl.n 339da <__swsetup_r+0x56> - 339a0: 6921 ldr r1, [r4, #16] - 339a2: b329 cbz r1, 339f0 <__swsetup_r+0x6c> - 339a4: f012 0001 ands.w r0, r2, #1 - 339a8: d007 beq.n 339ba <__swsetup_r+0x36> - 339aa: 2000 movs r0, #0 - 339ac: 60a0 str r0, [r4, #8] - 339ae: 6960 ldr r0, [r4, #20] - 339b0: 4240 negs r0, r0 - 339b2: 61a0 str r0, [r4, #24] - 339b4: b139 cbz r1, 339c6 <__swsetup_r+0x42> - 339b6: 2000 movs r0, #0 - 339b8: bd38 pop {r3, r4, r5, pc} - 339ba: 0795 lsls r5, r2, #30 - 339bc: bf58 it pl - 339be: 6960 ldrpl r0, [r4, #20] - 339c0: 60a0 str r0, [r4, #8] - 339c2: 2900 cmp r1, #0 - 339c4: d1f7 bne.n 339b6 <__swsetup_r+0x32> - 339c6: 0612 lsls r2, r2, #24 - 339c8: bf58 it pl - 339ca: 4608 movpl r0, r1 - 339cc: d5f4 bpl.n 339b8 <__swsetup_r+0x34> - 339ce: f043 0340 orr.w r3, r3, #64 ; 0x40 - 339d2: 81a3 strh r3, [r4, #12] - 339d4: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 339d8: bd38 pop {r3, r4, r5, pc} - 339da: 06d1 lsls r1, r2, #27 - 339dc: d52e bpl.n 33a3c <__swsetup_r+0xb8> - 339de: 0752 lsls r2, r2, #29 - 339e0: d414 bmi.n 33a0c <__swsetup_r+0x88> - 339e2: 6921 ldr r1, [r4, #16] - 339e4: f043 0308 orr.w r3, r3, #8 - 339e8: 81a3 strh r3, [r4, #12] - 339ea: b29a uxth r2, r3 - 339ec: 2900 cmp r1, #0 - 339ee: d1d9 bne.n 339a4 <__swsetup_r+0x20> - 339f0: f402 7020 and.w r0, r2, #640 ; 0x280 - 339f4: f5b0 7f00 cmp.w r0, #512 ; 0x200 - 339f8: d0d4 beq.n 339a4 <__swsetup_r+0x20> - 339fa: 4621 mov r1, r4 - 339fc: 4628 mov r0, r5 - 339fe: f000 f947 bl 33c90 <__smakebuf_r> - 33a02: f9b4 300c ldrsh.w r3, [r4, #12] - 33a06: 6921 ldr r1, [r4, #16] - 33a08: b29a uxth r2, r3 - 33a0a: e7cb b.n 339a4 <__swsetup_r+0x20> - 33a0c: 6b21 ldr r1, [r4, #48] ; 0x30 - 33a0e: b151 cbz r1, 33a26 <__swsetup_r+0xa2> - 33a10: f104 0240 add.w r2, r4, #64 ; 0x40 - 33a14: 4291 cmp r1, r2 - 33a16: d004 beq.n 33a22 <__swsetup_r+0x9e> - 33a18: 4628 mov r0, r5 - 33a1a: f7fb f993 bl 2ed44 <_free_r> - 33a1e: f9b4 300c ldrsh.w r3, [r4, #12] - 33a22: 2200 movs r2, #0 - 33a24: 6322 str r2, [r4, #48] ; 0x30 - 33a26: 6921 ldr r1, [r4, #16] - 33a28: 2200 movs r2, #0 - 33a2a: e9c4 1200 strd r1, r2, [r4] - 33a2e: f023 0324 bic.w r3, r3, #36 ; 0x24 - 33a32: e7d7 b.n 339e4 <__swsetup_r+0x60> - 33a34: 4618 mov r0, r3 - 33a36: f7fa fc5f bl 2e2f8 <__sinit> - 33a3a: e7ac b.n 33996 <__swsetup_r+0x12> - 33a3c: 2209 movs r2, #9 - 33a3e: f043 0340 orr.w r3, r3, #64 ; 0x40 - 33a42: 602a str r2, [r5, #0] - 33a44: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff - 33a48: 81a3 strh r3, [r4, #12] - 33a4a: bd38 pop {r3, r4, r5, pc} - 33a4c: 200051b0 .word 0x200051b0 - -00033a50 <__fputwc>: - 33a50: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 33a54: b082 sub sp, #8 - 33a56: 4682 mov sl, r0 - 33a58: 4688 mov r8, r1 - 33a5a: 4614 mov r4, r2 - 33a5c: f7fa fdde bl 2e61c <__locale_mb_cur_max> - 33a60: 2801 cmp r0, #1 - 33a62: d103 bne.n 33a6c <__fputwc+0x1c> - 33a64: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff - 33a68: 2bfe cmp r3, #254 ; 0xfe - 33a6a: d936 bls.n 33ada <__fputwc+0x8a> - 33a6c: f10d 0904 add.w r9, sp, #4 - 33a70: 4642 mov r2, r8 - 33a72: f104 035c add.w r3, r4, #92 ; 0x5c - 33a76: 4649 mov r1, r9 - 33a78: 4650 mov r0, sl - 33a7a: f7fd fd9b bl 315b4 <_wcrtomb_r> - 33a7e: 1c42 adds r2, r0, #1 - 33a80: 4606 mov r6, r0 - 33a82: d032 beq.n 33aea <__fputwc+0x9a> - 33a84: b320 cbz r0, 33ad0 <__fputwc+0x80> - 33a86: f89d c004 ldrb.w ip, [sp, #4] - 33a8a: 2500 movs r5, #0 - 33a8c: e009 b.n 33aa2 <__fputwc+0x52> - 33a8e: 6823 ldr r3, [r4, #0] - 33a90: 1c5a adds r2, r3, #1 - 33a92: 6022 str r2, [r4, #0] - 33a94: f883 c000 strb.w ip, [r3] - 33a98: 3501 adds r5, #1 - 33a9a: 42b5 cmp r5, r6 - 33a9c: d218 bcs.n 33ad0 <__fputwc+0x80> - 33a9e: f819 cf01 ldrb.w ip, [r9, #1]! - 33aa2: 68a3 ldr r3, [r4, #8] - 33aa4: 3b01 subs r3, #1 - 33aa6: 2b00 cmp r3, #0 - 33aa8: 60a3 str r3, [r4, #8] - 33aaa: daf0 bge.n 33a8e <__fputwc+0x3e> - 33aac: 69a7 ldr r7, [r4, #24] - 33aae: 42bb cmp r3, r7 - 33ab0: 4661 mov r1, ip - 33ab2: 4622 mov r2, r4 - 33ab4: 4650 mov r0, sl - 33ab6: db02 blt.n 33abe <__fputwc+0x6e> - 33ab8: f1bc 0f0a cmp.w ip, #10 - 33abc: d1e7 bne.n 33a8e <__fputwc+0x3e> - 33abe: f000 f953 bl 33d68 <__swbuf_r> - 33ac2: 1c43 adds r3, r0, #1 - 33ac4: d1e8 bne.n 33a98 <__fputwc+0x48> - 33ac6: 4606 mov r6, r0 - 33ac8: 4630 mov r0, r6 - 33aca: b002 add sp, #8 - 33acc: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 33ad0: 4646 mov r6, r8 - 33ad2: 4630 mov r0, r6 - 33ad4: b002 add sp, #8 - 33ad6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 33ada: fa5f fc88 uxtb.w ip, r8 - 33ade: f88d c004 strb.w ip, [sp, #4] - 33ae2: 4606 mov r6, r0 - 33ae4: f10d 0904 add.w r9, sp, #4 - 33ae8: e7cf b.n 33a8a <__fputwc+0x3a> - 33aea: 89a3 ldrh r3, [r4, #12] - 33aec: 4630 mov r0, r6 - 33aee: f043 0340 orr.w r3, r3, #64 ; 0x40 - 33af2: 81a3 strh r3, [r4, #12] - 33af4: b002 add sp, #8 - 33af6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 33afa: bf00 nop - -00033afc <_fputwc_r>: - 33afc: b530 push {r4, r5, lr} - 33afe: 6e53 ldr r3, [r2, #100] ; 0x64 - 33b00: f013 0f01 tst.w r3, #1 - 33b04: f9b2 300c ldrsh.w r3, [r2, #12] - 33b08: 4614 mov r4, r2 - 33b0a: b083 sub sp, #12 - 33b0c: 4605 mov r5, r0 - 33b0e: b29a uxth r2, r3 - 33b10: d101 bne.n 33b16 <_fputwc_r+0x1a> - 33b12: 0598 lsls r0, r3, #22 - 33b14: d51c bpl.n 33b50 <_fputwc_r+0x54> - 33b16: 0490 lsls r0, r2, #18 - 33b18: d406 bmi.n 33b28 <_fputwc_r+0x2c> - 33b1a: 6e62 ldr r2, [r4, #100] ; 0x64 - 33b1c: f443 5300 orr.w r3, r3, #8192 ; 0x2000 - 33b20: f442 5200 orr.w r2, r2, #8192 ; 0x2000 - 33b24: 81a3 strh r3, [r4, #12] - 33b26: 6662 str r2, [r4, #100] ; 0x64 - 33b28: 4622 mov r2, r4 - 33b2a: 4628 mov r0, r5 - 33b2c: f7ff ff90 bl 33a50 <__fputwc> - 33b30: 6e63 ldr r3, [r4, #100] ; 0x64 - 33b32: 07da lsls r2, r3, #31 - 33b34: 4605 mov r5, r0 - 33b36: d402 bmi.n 33b3e <_fputwc_r+0x42> - 33b38: 89a3 ldrh r3, [r4, #12] - 33b3a: 059b lsls r3, r3, #22 - 33b3c: d502 bpl.n 33b44 <_fputwc_r+0x48> - 33b3e: 4628 mov r0, r5 - 33b40: b003 add sp, #12 - 33b42: bd30 pop {r4, r5, pc} - 33b44: 6da0 ldr r0, [r4, #88] ; 0x58 - 33b46: f7fa ffa1 bl 2ea8c <__retarget_lock_release_recursive> - 33b4a: 4628 mov r0, r5 - 33b4c: b003 add sp, #12 - 33b4e: bd30 pop {r4, r5, pc} - 33b50: 6da0 ldr r0, [r4, #88] ; 0x58 - 33b52: 9101 str r1, [sp, #4] - 33b54: f7fa ff98 bl 2ea88 <__retarget_lock_acquire_recursive> - 33b58: f9b4 300c ldrsh.w r3, [r4, #12] - 33b5c: 9901 ldr r1, [sp, #4] - 33b5e: b29a uxth r2, r3 - 33b60: e7d9 b.n 33b16 <_fputwc_r+0x1a> - 33b62: bf00 nop - -00033b64 <_wcsnrtombs_l>: - 33b64: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 33b68: b08b sub sp, #44 ; 0x2c - 33b6a: e9dd 8a15 ldrd r8, sl, [sp, #84] ; 0x54 - 33b6e: 9f14 ldr r7, [sp, #80] ; 0x50 - 33b70: 9103 str r1, [sp, #12] - 33b72: 4681 mov r9, r0 - 33b74: 9205 str r2, [sp, #20] - 33b76: 461e mov r6, r3 - 33b78: f1b8 0f00 cmp.w r8, #0 - 33b7c: d05c beq.n 33c38 <_wcsnrtombs_l+0xd4> - 33b7e: 9b03 ldr r3, [sp, #12] - 33b80: 2b00 cmp r3, #0 - 33b82: d05e beq.n 33c42 <_wcsnrtombs_l+0xde> - 33b84: 9b05 ldr r3, [sp, #20] - 33b86: 681d ldr r5, [r3, #0] - 33b88: 2f00 cmp r7, #0 - 33b8a: d06a beq.n 33c62 <_wcsnrtombs_l+0xfe> - 33b8c: 1e74 subs r4, r6, #1 - 33b8e: b34e cbz r6, 33be4 <_wcsnrtombs_l+0x80> - 33b90: 9b03 ldr r3, [sp, #12] - 33b92: 9304 str r3, [sp, #16] - 33b94: 3d04 subs r5, #4 - 33b96: 2600 movs r6, #0 - 33b98: 9501 str r5, [sp, #4] - 33b9a: e00b b.n 33bb4 <_wcsnrtombs_l+0x50> - 33b9c: 9b03 ldr r3, [sp, #12] - 33b9e: bb2b cbnz r3, 33bec <_wcsnrtombs_l+0x88> - 33ba0: 9b01 ldr r3, [sp, #4] - 33ba2: 681a ldr r2, [r3, #0] - 33ba4: 2a00 cmp r2, #0 - 33ba6: d03a beq.n 33c1e <_wcsnrtombs_l+0xba> - 33ba8: 45bc cmp ip, r7 - 33baa: d25c bcs.n 33c66 <_wcsnrtombs_l+0x102> - 33bac: 3c01 subs r4, #1 - 33bae: 1c63 adds r3, r4, #1 - 33bb0: 4666 mov r6, ip - 33bb2: d017 beq.n 33be4 <_wcsnrtombs_l+0x80> - 33bb4: f8d8 3000 ldr.w r3, [r8] - 33bb8: 9302 str r3, [sp, #8] - 33bba: 9b01 ldr r3, [sp, #4] - 33bbc: f8da 50e0 ldr.w r5, [sl, #224] ; 0xe0 - 33bc0: f853 2f04 ldr.w r2, [r3, #4]! - 33bc4: 9301 str r3, [sp, #4] - 33bc6: a907 add r1, sp, #28 - 33bc8: 4643 mov r3, r8 - 33bca: 4648 mov r0, r9 - 33bcc: f8d8 b004 ldr.w fp, [r8, #4] - 33bd0: 47a8 blx r5 - 33bd2: 1c42 adds r2, r0, #1 - 33bd4: d03a beq.n 33c4c <_wcsnrtombs_l+0xe8> - 33bd6: eb00 0c06 add.w ip, r0, r6 - 33bda: 45bc cmp ip, r7 - 33bdc: d9de bls.n 33b9c <_wcsnrtombs_l+0x38> - 33bde: 9b02 ldr r3, [sp, #8] - 33be0: e9c8 3b00 strd r3, fp, [r8] - 33be4: 4630 mov r0, r6 - 33be6: b00b add sp, #44 ; 0x2c - 33be8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 33bec: 2800 cmp r0, #0 - 33bee: dd0e ble.n 33c0e <_wcsnrtombs_l+0xaa> - 33bf0: 9b04 ldr r3, [sp, #16] - 33bf2: 9d01 ldr r5, [sp, #4] - 33bf4: 4418 add r0, r3 - 33bf6: 1e5a subs r2, r3, #1 - 33bf8: a907 add r1, sp, #28 - 33bfa: f100 3eff add.w lr, r0, #4294967295 ; 0xffffffff - 33bfe: f811 3b01 ldrb.w r3, [r1], #1 - 33c02: f802 3f01 strb.w r3, [r2, #1]! - 33c06: 4572 cmp r2, lr - 33c08: d1f9 bne.n 33bfe <_wcsnrtombs_l+0x9a> - 33c0a: 9501 str r5, [sp, #4] - 33c0c: 9004 str r0, [sp, #16] - 33c0e: 9b05 ldr r3, [sp, #20] - 33c10: 681a ldr r2, [r3, #0] - 33c12: 3204 adds r2, #4 - 33c14: 601a str r2, [r3, #0] - 33c16: 9b01 ldr r3, [sp, #4] - 33c18: 681a ldr r2, [r3, #0] - 33c1a: 2a00 cmp r2, #0 - 33c1c: d1c4 bne.n 33ba8 <_wcsnrtombs_l+0x44> - 33c1e: 9b03 ldr r3, [sp, #12] - 33c20: b10b cbz r3, 33c26 <_wcsnrtombs_l+0xc2> - 33c22: 9b05 ldr r3, [sp, #20] - 33c24: 601a str r2, [r3, #0] - 33c26: f10c 36ff add.w r6, ip, #4294967295 ; 0xffffffff - 33c2a: 2200 movs r2, #0 - 33c2c: 4630 mov r0, r6 - 33c2e: f8c8 2000 str.w r2, [r8] - 33c32: b00b add sp, #44 ; 0x2c - 33c34: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 33c38: 9b03 ldr r3, [sp, #12] - 33c3a: f500 7886 add.w r8, r0, #268 ; 0x10c - 33c3e: 2b00 cmp r3, #0 - 33c40: d1a0 bne.n 33b84 <_wcsnrtombs_l+0x20> - 33c42: 9b05 ldr r3, [sp, #20] - 33c44: f04f 37ff mov.w r7, #4294967295 ; 0xffffffff - 33c48: 681d ldr r5, [r3, #0] - 33c4a: e79f b.n 33b8c <_wcsnrtombs_l+0x28> - 33c4c: 4606 mov r6, r0 - 33c4e: 218a movs r1, #138 ; 0x8a - 33c50: 2200 movs r2, #0 - 33c52: 4630 mov r0, r6 - 33c54: f8c9 1000 str.w r1, [r9] - 33c58: f8c8 2000 str.w r2, [r8] - 33c5c: b00b add sp, #44 ; 0x2c - 33c5e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 33c62: 463e mov r6, r7 - 33c64: e7be b.n 33be4 <_wcsnrtombs_l+0x80> - 33c66: 4666 mov r6, ip - 33c68: e7bc b.n 33be4 <_wcsnrtombs_l+0x80> - 33c6a: bf00 nop - -00033c6c <_wcsnrtombs_r>: - 33c6c: b510 push {r4, lr} - 33c6e: b084 sub sp, #16 - 33c70: 4c05 ldr r4, [pc, #20] ; (33c88 <_wcsnrtombs_r+0x1c>) - 33c72: 9806 ldr r0, [sp, #24] - 33c74: 9000 str r0, [sp, #0] - 33c76: 9807 ldr r0, [sp, #28] - 33c78: 9001 str r0, [sp, #4] - 33c7a: 4804 ldr r0, [pc, #16] ; (33c8c <_wcsnrtombs_r+0x20>) - 33c7c: 6800 ldr r0, [r0, #0] - 33c7e: 9402 str r4, [sp, #8] - 33c80: f7ff ff70 bl 33b64 <_wcsnrtombs_l> - 33c84: b004 add sp, #16 - 33c86: bd10 pop {r4, pc} - 33c88: 20004c28 .word 0x20004c28 - 33c8c: 200051b0 .word 0x200051b0 - -00033c90 <__smakebuf_r>: - 33c90: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 33c94: 898b ldrh r3, [r1, #12] - 33c96: 460c mov r4, r1 - 33c98: 0799 lsls r1, r3, #30 - 33c9a: b096 sub sp, #88 ; 0x58 - 33c9c: d508 bpl.n 33cb0 <__smakebuf_r+0x20> - 33c9e: f104 0343 add.w r3, r4, #67 ; 0x43 - 33ca2: 2201 movs r2, #1 - 33ca4: e9c4 3204 strd r3, r2, [r4, #16] - 33ca8: 6023 str r3, [r4, #0] - 33caa: b016 add sp, #88 ; 0x58 - 33cac: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 33cb0: f9b4 100e ldrsh.w r1, [r4, #14] - 33cb4: 2900 cmp r1, #0 - 33cb6: 4606 mov r6, r0 - 33cb8: db25 blt.n 33d06 <__smakebuf_r+0x76> - 33cba: 466a mov r2, sp - 33cbc: f000 f8ac bl 33e18 <_fstat_r> - 33cc0: 2800 cmp r0, #0 - 33cc2: db1f blt.n 33d04 <__smakebuf_r+0x74> - 33cc4: 9d01 ldr r5, [sp, #4] - 33cc6: f405 4570 and.w r5, r5, #61440 ; 0xf000 - 33cca: f5a5 5500 sub.w r5, r5, #8192 ; 0x2000 - 33cce: fab5 f585 clz r5, r5 - 33cd2: f44f 6880 mov.w r8, #1024 ; 0x400 - 33cd6: 096d lsrs r5, r5, #5 - 33cd8: f44f 6700 mov.w r7, #2048 ; 0x800 - 33cdc: 4641 mov r1, r8 - 33cde: 4630 mov r0, r6 - 33ce0: f7f9 fda0 bl 2d824 <_malloc_r> - 33ce4: b1e0 cbz r0, 33d20 <__smakebuf_r+0x90> - 33ce6: f9b4 300c ldrsh.w r3, [r4, #12] - 33cea: f8c4 8014 str.w r8, [r4, #20] - 33cee: f043 0380 orr.w r3, r3, #128 ; 0x80 - 33cf2: 6020 str r0, [r4, #0] - 33cf4: 6120 str r0, [r4, #16] - 33cf6: 81a3 strh r3, [r4, #12] - 33cf8: bb35 cbnz r5, 33d48 <__smakebuf_r+0xb8> - 33cfa: 433b orrs r3, r7 - 33cfc: 81a3 strh r3, [r4, #12] - 33cfe: b016 add sp, #88 ; 0x58 - 33d00: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 33d04: 89a3 ldrh r3, [r4, #12] - 33d06: f013 0580 ands.w r5, r3, #128 ; 0x80 - 33d0a: d019 beq.n 33d40 <__smakebuf_r+0xb0> - 33d0c: f04f 0840 mov.w r8, #64 ; 0x40 - 33d10: 2500 movs r5, #0 - 33d12: 4641 mov r1, r8 - 33d14: 4630 mov r0, r6 - 33d16: 462f mov r7, r5 - 33d18: f7f9 fd84 bl 2d824 <_malloc_r> - 33d1c: 2800 cmp r0, #0 - 33d1e: d1e2 bne.n 33ce6 <__smakebuf_r+0x56> - 33d20: f9b4 300c ldrsh.w r3, [r4, #12] - 33d24: 059a lsls r2, r3, #22 - 33d26: d4c0 bmi.n 33caa <__smakebuf_r+0x1a> - 33d28: f023 0303 bic.w r3, r3, #3 - 33d2c: f104 0243 add.w r2, r4, #67 ; 0x43 - 33d30: f043 0302 orr.w r3, r3, #2 - 33d34: 2101 movs r1, #1 - 33d36: e9c4 2104 strd r2, r1, [r4, #16] - 33d3a: 81a3 strh r3, [r4, #12] - 33d3c: 6022 str r2, [r4, #0] - 33d3e: e7b4 b.n 33caa <__smakebuf_r+0x1a> - 33d40: f44f 6880 mov.w r8, #1024 ; 0x400 - 33d44: 462f mov r7, r5 - 33d46: e7c9 b.n 33cdc <__smakebuf_r+0x4c> - 33d48: f9b4 100e ldrsh.w r1, [r4, #14] - 33d4c: 4630 mov r0, r6 - 33d4e: f000 f879 bl 33e44 <_isatty_r> - 33d52: b910 cbnz r0, 33d5a <__smakebuf_r+0xca> - 33d54: f9b4 300c ldrsh.w r3, [r4, #12] - 33d58: e7cf b.n 33cfa <__smakebuf_r+0x6a> - 33d5a: 89a3 ldrh r3, [r4, #12] - 33d5c: f023 0303 bic.w r3, r3, #3 - 33d60: f043 0301 orr.w r3, r3, #1 - 33d64: b21b sxth r3, r3 - 33d66: e7c8 b.n 33cfa <__smakebuf_r+0x6a> - -00033d68 <__swbuf_r>: - 33d68: b5f8 push {r3, r4, r5, r6, r7, lr} - 33d6a: 460d mov r5, r1 - 33d6c: 4614 mov r4, r2 - 33d6e: 4606 mov r6, r0 - 33d70: b110 cbz r0, 33d78 <__swbuf_r+0x10> - 33d72: 6b43 ldr r3, [r0, #52] ; 0x34 - 33d74: 2b00 cmp r3, #0 - 33d76: d04c beq.n 33e12 <__swbuf_r+0xaa> - 33d78: f9b4 200c ldrsh.w r2, [r4, #12] - 33d7c: 69a3 ldr r3, [r4, #24] - 33d7e: 60a3 str r3, [r4, #8] - 33d80: 0717 lsls r7, r2, #28 - 33d82: b290 uxth r0, r2 - 33d84: d51b bpl.n 33dbe <__swbuf_r+0x56> - 33d86: 6923 ldr r3, [r4, #16] - 33d88: b1cb cbz r3, 33dbe <__swbuf_r+0x56> - 33d8a: b2ed uxtb r5, r5 - 33d8c: 0481 lsls r1, r0, #18 - 33d8e: 462f mov r7, r5 - 33d90: d522 bpl.n 33dd8 <__swbuf_r+0x70> - 33d92: 6822 ldr r2, [r4, #0] - 33d94: 6961 ldr r1, [r4, #20] - 33d96: 1ad3 subs r3, r2, r3 - 33d98: 4299 cmp r1, r3 - 33d9a: dd29 ble.n 33df0 <__swbuf_r+0x88> - 33d9c: 3301 adds r3, #1 - 33d9e: 68a1 ldr r1, [r4, #8] - 33da0: 3901 subs r1, #1 - 33da2: 60a1 str r1, [r4, #8] - 33da4: 1c51 adds r1, r2, #1 - 33da6: 6021 str r1, [r4, #0] - 33da8: 7015 strb r5, [r2, #0] - 33daa: 6962 ldr r2, [r4, #20] - 33dac: 429a cmp r2, r3 - 33dae: d027 beq.n 33e00 <__swbuf_r+0x98> - 33db0: 89a3 ldrh r3, [r4, #12] - 33db2: 07db lsls r3, r3, #31 - 33db4: d501 bpl.n 33dba <__swbuf_r+0x52> - 33db6: 2d0a cmp r5, #10 - 33db8: d022 beq.n 33e00 <__swbuf_r+0x98> - 33dba: 4638 mov r0, r7 - 33dbc: bdf8 pop {r3, r4, r5, r6, r7, pc} - 33dbe: 4621 mov r1, r4 - 33dc0: 4630 mov r0, r6 - 33dc2: f7ff fddf bl 33984 <__swsetup_r> - 33dc6: bb08 cbnz r0, 33e0c <__swbuf_r+0xa4> - 33dc8: f9b4 200c ldrsh.w r2, [r4, #12] - 33dcc: 6923 ldr r3, [r4, #16] - 33dce: b290 uxth r0, r2 - 33dd0: b2ed uxtb r5, r5 - 33dd2: 0481 lsls r1, r0, #18 - 33dd4: 462f mov r7, r5 - 33dd6: d4dc bmi.n 33d92 <__swbuf_r+0x2a> - 33dd8: f442 5200 orr.w r2, r2, #8192 ; 0x2000 - 33ddc: 81a2 strh r2, [r4, #12] - 33dde: 6e62 ldr r2, [r4, #100] ; 0x64 - 33de0: 6961 ldr r1, [r4, #20] - 33de2: f422 5200 bic.w r2, r2, #8192 ; 0x2000 - 33de6: 6662 str r2, [r4, #100] ; 0x64 - 33de8: 6822 ldr r2, [r4, #0] - 33dea: 1ad3 subs r3, r2, r3 - 33dec: 4299 cmp r1, r3 - 33dee: dcd5 bgt.n 33d9c <__swbuf_r+0x34> - 33df0: 4621 mov r1, r4 - 33df2: 4630 mov r0, r6 - 33df4: f7fd fb1e bl 31434 <_fflush_r> - 33df8: b940 cbnz r0, 33e0c <__swbuf_r+0xa4> - 33dfa: 6822 ldr r2, [r4, #0] - 33dfc: 2301 movs r3, #1 - 33dfe: e7ce b.n 33d9e <__swbuf_r+0x36> - 33e00: 4621 mov r1, r4 - 33e02: 4630 mov r0, r6 - 33e04: f7fd fb16 bl 31434 <_fflush_r> - 33e08: 2800 cmp r0, #0 - 33e0a: d0d6 beq.n 33dba <__swbuf_r+0x52> - 33e0c: f04f 37ff mov.w r7, #4294967295 ; 0xffffffff - 33e10: e7d3 b.n 33dba <__swbuf_r+0x52> - 33e12: f7fa fa71 bl 2e2f8 <__sinit> - 33e16: e7af b.n 33d78 <__swbuf_r+0x10> - -00033e18 <_fstat_r>: - 33e18: b570 push {r4, r5, r6, lr} - 33e1a: 460c mov r4, r1 - 33e1c: 4d08 ldr r5, [pc, #32] ; (33e40 <_fstat_r+0x28>) - 33e1e: 4603 mov r3, r0 - 33e20: 2600 movs r6, #0 - 33e22: 4620 mov r0, r4 - 33e24: 4611 mov r1, r2 - 33e26: 461c mov r4, r3 - 33e28: 602e str r6, [r5, #0] - 33e2a: f7f6 ff97 bl 2ad5c <_fstat> - 33e2e: 1c43 adds r3, r0, #1 - 33e30: d000 beq.n 33e34 <_fstat_r+0x1c> - 33e32: bd70 pop {r4, r5, r6, pc} - 33e34: 682b ldr r3, [r5, #0] - 33e36: 2b00 cmp r3, #0 - 33e38: d0fb beq.n 33e32 <_fstat_r+0x1a> - 33e3a: 6023 str r3, [r4, #0] - 33e3c: bd70 pop {r4, r5, r6, pc} - 33e3e: bf00 nop - 33e40: 2000ba48 .word 0x2000ba48 - -00033e44 <_isatty_r>: - 33e44: b538 push {r3, r4, r5, lr} - 33e46: 4d07 ldr r5, [pc, #28] ; (33e64 <_isatty_r+0x20>) - 33e48: 2200 movs r2, #0 - 33e4a: 4604 mov r4, r0 - 33e4c: 4608 mov r0, r1 - 33e4e: 602a str r2, [r5, #0] - 33e50: f7f6 ff8a bl 2ad68 <_isatty> - 33e54: 1c43 adds r3, r0, #1 - 33e56: d000 beq.n 33e5a <_isatty_r+0x16> - 33e58: bd38 pop {r3, r4, r5, pc} - 33e5a: 682b ldr r3, [r5, #0] - 33e5c: 2b00 cmp r3, #0 - 33e5e: d0fb beq.n 33e58 <_isatty_r+0x14> - 33e60: 6023 str r3, [r4, #0] - 33e62: bd38 pop {r3, r4, r5, pc} - 33e64: 2000ba48 .word 0x2000ba48 - -00033e68 <___reboot_Teensyduino__veneer>: - 33e68: f85f f000 ldr.w pc, [pc] ; 33e6c <___reboot_Teensyduino__veneer+0x4> - 33e6c: 60001b9d .word 0x60001b9d - -00033e70 <___ZN7TwoWire5beginEv_veneer>: - 33e70: f85f f000 ldr.w pc, [pc] ; 33e74 <___ZN7TwoWire5beginEv_veneer+0x4> - 33e74: 60001765 .word 0x60001765 - -00033e78 <___init_veneer>: - 33e78: f85f f000 ldr.w pc, [pc] ; 33e7c <___init_veneer+0x4> - 33e7c: 60001bf1 .word 0x60001bf1 + 334c8: 7809 ldrb r1, [r1, #0] + 334ca: 4561 cmp r1, ip + 334cc: d1c8 bne.n 33460 <_vfiprintf_r+0xcdc> + 334ce: f1bc 0fff cmp.w ip, #255 ; 0xff + 334d2: d0c5 beq.n 33460 <_vfiprintf_r+0xcdc> + 334d4: f1be 0f0a cmp.w lr, #10 + 334d8: f172 0200 sbcs.w r2, r2, #0 + 334dc: d26c bcs.n 335b8 <_vfiprintf_r+0xe34> + 334de: 461c mov r4, r3 + 334e0: ab44 add r3, sp, #272 ; 0x110 + 334e2: 1b1b subs r3, r3, r4 + 334e4: 9f04 ldr r7, [sp, #16] + 334e6: 9e03 ldr r6, [sp, #12] + 334e8: 9304 str r3, [sp, #16] + 334ea: ee18 ba90 vmov fp, s17 + 334ee: f7ff ba72 b.w 329d6 <_vfiprintf_r+0x252> + 334f2: 9603 str r6, [sp, #12] + 334f4: f7ff ba62 b.w 329bc <_vfiprintf_r+0x238> + 334f8: 4658 mov r0, fp + 334fa: f7fa ff71 bl 2e3e0 <__sinit> + 334fe: f7ff b95b b.w 327b8 <_vfiprintf_r+0x34> + 33502: 2901 cmp r1, #1 + 33504: 9603 str r6, [sp, #12] + 33506: f47f accd bne.w 32ea4 <_vfiprintf_r+0x720> + 3350a: f7ff ba5c b.w 329c6 <_vfiprintf_r+0x242> + 3350e: 9b07 ldr r3, [sp, #28] + 33510: 9905 ldr r1, [sp, #20] + 33512: f853 2b04 ldr.w r2, [r3], #4 + 33516: 6011 str r1, [r2, #0] + 33518: 9307 str r3, [sp, #28] + 3351a: f7ff b97e b.w 3281a <_vfiprintf_r+0x96> + 3351e: 2f06 cmp r7, #6 + 33520: 463b mov r3, r7 + 33522: 9a03 ldr r2, [sp, #12] + 33524: 4c79 ldr r4, [pc, #484] ; (3370c <_vfiprintf_r+0xf88>) + 33526: 9207 str r2, [sp, #28] + 33528: bf28 it cs + 3352a: 2306 movcs r3, #6 + 3352c: 9304 str r3, [sp, #16] + 3352e: 9303 str r3, [sp, #12] + 33530: f7ff bb25 b.w 32b7e <_vfiprintf_r+0x3fa> + 33534: 9b03 ldr r3, [sp, #12] + 33536: 9907 ldr r1, [sp, #28] + 33538: f413 7200 ands.w r2, r3, #512 ; 0x200 + 3353c: bf14 ite ne + 3353e: f851 3b04 ldrne.w r3, [r1], #4 + 33542: f851 3b04 ldreq.w r3, [r1], #4 + 33546: 9107 str r1, [sp, #28] + 33548: bf1c itt ne + 3354a: 4602 movne r2, r0 + 3354c: b2db uxtbne r3, r3 + 3354e: 2101 movs r1, #1 + 33550: f7ff ba8f b.w 32a72 <_vfiprintf_r+0x2ee> + 33554: ab16 add r3, sp, #88 ; 0x58 + 33556: 9300 str r3, [sp, #0] + 33558: 2300 movs r3, #0 + 3355a: 4619 mov r1, r3 + 3355c: aa13 add r2, sp, #76 ; 0x4c + 3355e: 4658 mov r0, fp + 33560: f7fe f8ce bl 31700 <_wcsrtombs_r> + 33564: 4603 mov r3, r0 + 33566: 3301 adds r3, #1 + 33568: 9004 str r0, [sp, #16] + 3356a: f000 80ae beq.w 336ca <_vfiprintf_r+0xf46> + 3356e: 9413 str r4, [sp, #76] ; 0x4c + 33570: 9b04 ldr r3, [sp, #16] + 33572: 2b00 cmp r3, #0 + 33574: d030 beq.n 335d8 <_vfiprintf_r+0xe54> + 33576: 2b63 cmp r3, #99 ; 0x63 + 33578: dc63 bgt.n 33642 <_vfiprintf_r+0xebe> + 3357a: 2300 movs r3, #0 + 3357c: 9308 str r3, [sp, #32] + 3357e: ac2b add r4, sp, #172 ; 0xac + 33580: 2208 movs r2, #8 + 33582: 2100 movs r1, #0 + 33584: a816 add r0, sp, #88 ; 0x58 + 33586: f7fa fff5 bl 2e574 + 3358a: 9d04 ldr r5, [sp, #16] + 3358c: ab16 add r3, sp, #88 ; 0x58 + 3358e: 9300 str r3, [sp, #0] + 33590: aa13 add r2, sp, #76 ; 0x4c + 33592: 462b mov r3, r5 + 33594: 4621 mov r1, r4 + 33596: 4658 mov r0, fp + 33598: f7fe f8b2 bl 31700 <_wcsrtombs_r> + 3359c: 4285 cmp r5, r0 + 3359e: f040 80ab bne.w 336f8 <_vfiprintf_r+0xf74> + 335a2: 9b03 ldr r3, [sp, #12] + 335a4: 9a04 ldr r2, [sp, #16] + 335a6: 9307 str r3, [sp, #28] + 335a8: 2300 movs r3, #0 + 335aa: 54a3 strb r3, [r4, r2] + 335ac: 461f mov r7, r3 + 335ae: ea22 73e2 bic.w r3, r2, r2, asr #31 + 335b2: 9303 str r3, [sp, #12] + 335b4: f7ff ba16 b.w 329e4 <_vfiprintf_r+0x260> + 335b8: 9a0e ldr r2, [sp, #56] ; 0x38 + 335ba: 990d ldr r1, [sp, #52] ; 0x34 + 335bc: 1a9b subs r3, r3, r2 + 335be: 4618 mov r0, r3 + 335c0: 9308 str r3, [sp, #32] + 335c2: f7fb f849 bl 2e658 + 335c6: 990b ldr r1, [sp, #44] ; 0x2c + 335c8: 9b08 ldr r3, [sp, #32] + 335ca: 784a ldrb r2, [r1, #1] + 335cc: b10a cbz r2, 335d2 <_vfiprintf_r+0xe4e> + 335ce: 3101 adds r1, #1 + 335d0: 910b str r1, [sp, #44] ; 0x2c + 335d2: f04f 0c00 mov.w ip, #0 + 335d6: e748 b.n 3346a <_vfiprintf_r+0xce6> + 335d8: 9b03 ldr r3, [sp, #12] + 335da: 9307 str r3, [sp, #28] + 335dc: 9b04 ldr r3, [sp, #16] + 335de: 9303 str r3, [sp, #12] + 335e0: 461f mov r7, r3 + 335e2: 9308 str r3, [sp, #32] + 335e4: f7ff b9fe b.w 329e4 <_vfiprintf_r+0x260> + 335e8: 2101 movs r1, #1 + 335ea: 4618 mov r0, r3 + 335ec: f10d 096c add.w r9, sp, #108 ; 0x6c + 335f0: f7ff bb13 b.w 32c1a <_vfiprintf_r+0x496> + 335f4: f850 3b04 ldr.w r3, [r0], #4 + 335f8: 9007 str r0, [sp, #28] + 335fa: 4622 mov r2, r4 + 335fc: b2db uxtb r3, r3 + 335fe: e6b6 b.n 3336e <_vfiprintf_r+0xbea> + 33600: f912 3b04 ldrsb.w r3, [r2], #4 + 33604: 9207 str r2, [sp, #28] + 33606: 17da asrs r2, r3, #31 + 33608: 4611 mov r1, r2 + 3360a: f7ff b9ca b.w 329a2 <_vfiprintf_r+0x21e> + 3360e: f851 3b04 ldr.w r3, [r1], #4 + 33612: 9107 str r1, [sp, #28] + 33614: 4602 mov r2, r0 + 33616: b2db uxtb r3, r3 + 33618: f7ff ba27 b.w 32a6a <_vfiprintf_r+0x2e6> + 3361c: 2301 movs r3, #1 + 3361e: 931c str r3, [sp, #112] ; 0x70 + 33620: 2101 movs r1, #1 + 33622: f10d 0343 add.w r3, sp, #67 ; 0x43 + 33626: 931b str r3, [sp, #108] ; 0x6c + 33628: f10d 096c add.w r9, sp, #108 ; 0x6c + 3362c: 460b mov r3, r1 + 3362e: f7ff bacd b.w 32bcc <_vfiprintf_r+0x448> + 33632: 9b07 ldr r3, [sp, #28] + 33634: 9905 ldr r1, [sp, #20] + 33636: f853 2b04 ldr.w r2, [r3], #4 + 3363a: 9307 str r3, [sp, #28] + 3363c: 8011 strh r1, [r2, #0] + 3363e: f7ff b8ec b.w 3281a <_vfiprintf_r+0x96> + 33642: 1c59 adds r1, r3, #1 + 33644: 4658 mov r0, fp + 33646: f7fa f961 bl 2d90c <_malloc_r> + 3364a: 4604 mov r4, r0 + 3364c: 2800 cmp r0, #0 + 3364e: d03c beq.n 336ca <_vfiprintf_r+0xf46> + 33650: 9008 str r0, [sp, #32] + 33652: e795 b.n 33580 <_vfiprintf_r+0xdfc> + 33654: 6d88 ldr r0, [r1, #88] ; 0x58 + 33656: f7fb fa89 bl 2eb6c <__retarget_lock_release_recursive> + 3365a: f7ff b9e9 b.w 32a30 <_vfiprintf_r+0x2ac> + 3365e: 9b03 ldr r3, [sp, #12] + 33660: 9307 str r3, [sp, #28] + 33662: e9cd 7703 strd r7, r7, [sp, #12] + 33666: 9f08 ldr r7, [sp, #32] + 33668: f7ff b9bc b.w 329e4 <_vfiprintf_r+0x260> + 3366c: 9819 ldr r0, [sp, #100] ; 0x64 + 3366e: 9b1a ldr r3, [sp, #104] ; 0x68 + 33670: 3001 adds r0, #1 + 33672: e545 b.n 33100 <_vfiprintf_r+0x97c> + 33674: 9b03 ldr r3, [sp, #12] + 33676: 9307 str r3, [sp, #28] + 33678: 4620 mov r0, r4 + 3367a: f7fb fae1 bl 2ec40 + 3367e: ea20 73e0 bic.w r3, r0, r0, asr #31 + 33682: 462f mov r7, r5 + 33684: 9004 str r0, [sp, #16] + 33686: 9303 str r3, [sp, #12] + 33688: 9508 str r5, [sp, #32] + 3368a: f7ff b9ab b.w 329e4 <_vfiprintf_r+0x260> + 3368e: ee18 1a10 vmov r1, s16 + 33692: aa18 add r2, sp, #96 ; 0x60 + 33694: 4658 mov r0, fp + 33696: f7ff f839 bl 3270c <__sprint_r.part.0> + 3369a: 2800 cmp r0, #0 + 3369c: f43f aa36 beq.w 32b0c <_vfiprintf_r+0x388> + 336a0: f7ff ba4d b.w 32b3e <_vfiprintf_r+0x3ba> + 336a4: 9819 ldr r0, [sp, #100] ; 0x64 + 336a6: 3001 adds r0, #1 + 336a8: e57a b.n 331a0 <_vfiprintf_r+0xa1c> + 336aa: 468c mov ip, r1 + 336ac: e46e b.n 32f8c <_vfiprintf_r+0x808> + 336ae: 6e6b ldr r3, [r5, #100] ; 0x64 + 336b0: 07d9 lsls r1, r3, #31 + 336b2: d405 bmi.n 336c0 <_vfiprintf_r+0xf3c> + 336b4: 89ab ldrh r3, [r5, #12] + 336b6: 059a lsls r2, r3, #22 + 336b8: d402 bmi.n 336c0 <_vfiprintf_r+0xf3c> + 336ba: 6da8 ldr r0, [r5, #88] ; 0x58 + 336bc: f7fb fa56 bl 2eb6c <__retarget_lock_release_recursive> + 336c0: f04f 33ff mov.w r3, #4294967295 ; 0xffffffff + 336c4: 9305 str r3, [sp, #20] + 336c6: f7ff ba49 b.w 32b5c <_vfiprintf_r+0x3d8> + 336ca: ee18 2a10 vmov r2, s16 + 336ce: f9b2 300c ldrsh.w r3, [r2, #12] + 336d2: f043 0340 orr.w r3, r3, #64 ; 0x40 + 336d6: 8193 strh r3, [r2, #12] + 336d8: f7ff ba35 b.w 32b46 <_vfiprintf_r+0x3c2> + 336dc: 9c07 ldr r4, [sp, #28] + 336de: 9704 str r7, [sp, #16] + 336e0: e746 b.n 33570 <_vfiprintf_r+0xdec> + 336e2: 9b07 ldr r3, [sp, #28] + 336e4: f898 1001 ldrb.w r1, [r8, #1] + 336e8: f853 7b04 ldr.w r7, [r3], #4 + 336ec: 9307 str r3, [sp, #28] + 336ee: 4690 mov r8, r2 + 336f0: ea47 77e7 orr.w r7, r7, r7, asr #31 + 336f4: f7ff b8b9 b.w 3286a <_vfiprintf_r+0xe6> + 336f8: ee18 2a10 vmov r2, s16 + 336fc: 8993 ldrh r3, [r2, #12] + 336fe: f043 0340 orr.w r3, r3, #64 ; 0x40 + 33702: 8193 strh r3, [r2, #12] + 33704: f7ff ba15 b.w 32b32 <_vfiprintf_r+0x3ae> + 33708: cccccccd .word 0xcccccccd + 3370c: 20004548 .word 0x20004548 + +00033710 <__sbprintf>: + 33710: b570 push {r4, r5, r6, lr} + 33712: 460c mov r4, r1 + 33714: 8989 ldrh r1, [r1, #12] + 33716: f5ad 6d8e sub.w sp, sp, #1136 ; 0x470 + 3371a: f021 0102 bic.w r1, r1, #2 + 3371e: f8ad 1014 strh.w r1, [sp, #20] + 33722: 6e61 ldr r1, [r4, #100] ; 0x64 + 33724: 911b str r1, [sp, #108] ; 0x6c + 33726: 89e1 ldrh r1, [r4, #14] + 33728: f8ad 1016 strh.w r1, [sp, #22] + 3372c: 69e1 ldr r1, [r4, #28] + 3372e: 9109 str r1, [sp, #36] ; 0x24 + 33730: 6a61 ldr r1, [r4, #36] ; 0x24 + 33732: 910b str r1, [sp, #44] ; 0x2c + 33734: a91c add r1, sp, #112 ; 0x70 + 33736: 9102 str r1, [sp, #8] + 33738: 9106 str r1, [sp, #24] + 3373a: f44f 6180 mov.w r1, #1024 ; 0x400 + 3373e: 4606 mov r6, r0 + 33740: 9104 str r1, [sp, #16] + 33742: 9107 str r1, [sp, #28] + 33744: a818 add r0, sp, #96 ; 0x60 + 33746: 2100 movs r1, #0 + 33748: e9cd 3200 strd r3, r2, [sp] + 3374c: 9108 str r1, [sp, #32] + 3374e: f7fb fa07 bl 2eb60 <__retarget_lock_init_recursive> + 33752: e9dd 3200 ldrd r3, r2, [sp] + 33756: a902 add r1, sp, #8 + 33758: 4630 mov r0, r6 + 3375a: f7ff f813 bl 32784 <_vfiprintf_r> + 3375e: 1e05 subs r5, r0, #0 + 33760: db07 blt.n 33772 <__sbprintf+0x62> + 33762: a902 add r1, sp, #8 + 33764: 4630 mov r0, r6 + 33766: f7fd fee5 bl 31534 <_fflush_r> + 3376a: 2800 cmp r0, #0 + 3376c: bf18 it ne + 3376e: f04f 35ff movne.w r5, #4294967295 ; 0xffffffff + 33772: f8bd 3014 ldrh.w r3, [sp, #20] + 33776: 065b lsls r3, r3, #25 + 33778: d503 bpl.n 33782 <__sbprintf+0x72> + 3377a: 89a3 ldrh r3, [r4, #12] + 3377c: f043 0340 orr.w r3, r3, #64 ; 0x40 + 33780: 81a3 strh r3, [r4, #12] + 33782: 9818 ldr r0, [sp, #96] ; 0x60 + 33784: f7fb f9ee bl 2eb64 <__retarget_lock_close_recursive> + 33788: 4628 mov r0, r5 + 3378a: f50d 6d8e add.w sp, sp, #1136 ; 0x470 + 3378e: bd70 pop {r4, r5, r6, pc} + +00033790 <__sfvwrite_r>: + 33790: 6893 ldr r3, [r2, #8] + 33792: 2b00 cmp r3, #0 + 33794: f000 8085 beq.w 338a2 <__sfvwrite_r+0x112> + 33798: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 3379c: f9b1 300c ldrsh.w r3, [r1, #12] + 337a0: 460c mov r4, r1 + 337a2: 0719 lsls r1, r3, #28 + 337a4: 4680 mov r8, r0 + 337a6: b083 sub sp, #12 + 337a8: 4617 mov r7, r2 + 337aa: b298 uxth r0, r3 + 337ac: d525 bpl.n 337fa <__sfvwrite_r+0x6a> + 337ae: 6923 ldr r3, [r4, #16] + 337b0: b31b cbz r3, 337fa <__sfvwrite_r+0x6a> + 337b2: f010 0302 ands.w r3, r0, #2 + 337b6: 683d ldr r5, [r7, #0] + 337b8: d02d beq.n 33816 <__sfvwrite_r+0x86> + 337ba: f04f 0a00 mov.w sl, #0 + 337be: f8df b2c0 ldr.w fp, [pc, #704] ; 33a80 <__sfvwrite_r+0x2f0> + 337c2: 4656 mov r6, sl + 337c4: 46b9 mov r9, r7 + 337c6: 455e cmp r6, fp + 337c8: 4633 mov r3, r6 + 337ca: 4652 mov r2, sl + 337cc: bf28 it cs + 337ce: 465b movcs r3, fp + 337d0: 4640 mov r0, r8 + 337d2: 2e00 cmp r6, #0 + 337d4: d052 beq.n 3387c <__sfvwrite_r+0xec> + 337d6: 69e1 ldr r1, [r4, #28] + 337d8: 6a67 ldr r7, [r4, #36] ; 0x24 + 337da: 47b8 blx r7 + 337dc: 2800 cmp r0, #0 + 337de: dd56 ble.n 3388e <__sfvwrite_r+0xfe> + 337e0: f8d9 3008 ldr.w r3, [r9, #8] + 337e4: 1a1b subs r3, r3, r0 + 337e6: 4482 add sl, r0 + 337e8: 1a36 subs r6, r6, r0 + 337ea: f8c9 3008 str.w r3, [r9, #8] + 337ee: 2b00 cmp r3, #0 + 337f0: d1e9 bne.n 337c6 <__sfvwrite_r+0x36> + 337f2: 2000 movs r0, #0 + 337f4: b003 add sp, #12 + 337f6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 337fa: 4621 mov r1, r4 + 337fc: 4640 mov r0, r8 + 337fe: f000 f941 bl 33a84 <__swsetup_r> + 33802: 2800 cmp r0, #0 + 33804: f040 8138 bne.w 33a78 <__sfvwrite_r+0x2e8> + 33808: f9b4 300c ldrsh.w r3, [r4, #12] + 3380c: 683d ldr r5, [r7, #0] + 3380e: b298 uxth r0, r3 + 33810: f010 0302 ands.w r3, r0, #2 + 33814: d1d1 bne.n 337ba <__sfvwrite_r+0x2a> + 33816: f010 0901 ands.w r9, r0, #1 + 3381a: d144 bne.n 338a6 <__sfvwrite_r+0x116> + 3381c: 464e mov r6, r9 + 3381e: 9700 str r7, [sp, #0] + 33820: b346 cbz r6, 33874 <__sfvwrite_r+0xe4> + 33822: 0582 lsls r2, r0, #22 + 33824: f8d4 b008 ldr.w fp, [r4, #8] + 33828: f140 8085 bpl.w 33936 <__sfvwrite_r+0x1a6> + 3382c: 45b3 cmp fp, r6 + 3382e: 465a mov r2, fp + 33830: f200 80b4 bhi.w 3399c <__sfvwrite_r+0x20c> + 33834: f410 6f90 tst.w r0, #1152 ; 0x480 + 33838: f040 80c1 bne.w 339be <__sfvwrite_r+0x22e> + 3383c: 6820 ldr r0, [r4, #0] + 3383e: 9201 str r2, [sp, #4] + 33840: 4649 mov r1, r9 + 33842: f7fa fe1b bl 2e47c + 33846: 68a3 ldr r3, [r4, #8] + 33848: 9a01 ldr r2, [sp, #4] + 3384a: eba3 010b sub.w r1, r3, fp + 3384e: 6823 ldr r3, [r4, #0] + 33850: 60a1 str r1, [r4, #8] + 33852: 4413 add r3, r2 + 33854: 46b2 mov sl, r6 + 33856: 6023 str r3, [r4, #0] + 33858: 2600 movs r6, #0 + 3385a: 9a00 ldr r2, [sp, #0] + 3385c: 6893 ldr r3, [r2, #8] + 3385e: eba3 030a sub.w r3, r3, sl + 33862: 44d1 add r9, sl + 33864: 6093 str r3, [r2, #8] + 33866: 2b00 cmp r3, #0 + 33868: d0c3 beq.n 337f2 <__sfvwrite_r+0x62> + 3386a: f9b4 000c ldrsh.w r0, [r4, #12] + 3386e: b280 uxth r0, r0 + 33870: 2e00 cmp r6, #0 + 33872: d1d6 bne.n 33822 <__sfvwrite_r+0x92> + 33874: e9d5 9600 ldrd r9, r6, [r5] + 33878: 3508 adds r5, #8 + 3387a: e7d1 b.n 33820 <__sfvwrite_r+0x90> + 3387c: e9d5 a600 ldrd sl, r6, [r5] + 33880: 3508 adds r5, #8 + 33882: e7a0 b.n 337c6 <__sfvwrite_r+0x36> + 33884: 4621 mov r1, r4 + 33886: 4640 mov r0, r8 + 33888: f7fd fe54 bl 31534 <_fflush_r> + 3388c: b388 cbz r0, 338f2 <__sfvwrite_r+0x162> + 3388e: f9b4 300c ldrsh.w r3, [r4, #12] + 33892: f043 0340 orr.w r3, r3, #64 ; 0x40 + 33896: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 3389a: 81a3 strh r3, [r4, #12] + 3389c: b003 add sp, #12 + 3389e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 338a2: 2000 movs r0, #0 + 338a4: 4770 bx lr + 338a6: 461e mov r6, r3 + 338a8: 46ba mov sl, r7 + 338aa: 4699 mov r9, r3 + 338ac: 4618 mov r0, r3 + 338ae: 9500 str r5, [sp, #0] + 338b0: 461f mov r7, r3 + 338b2: b366 cbz r6, 3390e <__sfvwrite_r+0x17e> + 338b4: 2800 cmp r0, #0 + 338b6: d032 beq.n 3391e <__sfvwrite_r+0x18e> + 338b8: 464a mov r2, r9 + 338ba: e9d4 1304 ldrd r1, r3, [r4, #16] + 338be: 6820 ldr r0, [r4, #0] + 338c0: 68a5 ldr r5, [r4, #8] + 338c2: 42b2 cmp r2, r6 + 338c4: bf28 it cs + 338c6: 4632 movcs r2, r6 + 338c8: 4288 cmp r0, r1 + 338ca: d904 bls.n 338d6 <__sfvwrite_r+0x146> + 338cc: eb05 0b03 add.w fp, r5, r3 + 338d0: 455a cmp r2, fp + 338d2: f300 80a7 bgt.w 33a24 <__sfvwrite_r+0x294> + 338d6: 4293 cmp r3, r2 + 338d8: dc64 bgt.n 339a4 <__sfvwrite_r+0x214> + 338da: 69e1 ldr r1, [r4, #28] + 338dc: 6a65 ldr r5, [r4, #36] ; 0x24 + 338de: 463a mov r2, r7 + 338e0: 4640 mov r0, r8 + 338e2: 47a8 blx r5 + 338e4: f1b0 0b00 subs.w fp, r0, #0 + 338e8: ddd1 ble.n 3388e <__sfvwrite_r+0xfe> + 338ea: ebb9 090b subs.w r9, r9, fp + 338ee: d0c9 beq.n 33884 <__sfvwrite_r+0xf4> + 338f0: 2001 movs r0, #1 + 338f2: f8da 3008 ldr.w r3, [sl, #8] + 338f6: eba3 030b sub.w r3, r3, fp + 338fa: 445f add r7, fp + 338fc: eba6 060b sub.w r6, r6, fp + 33900: f8ca 3008 str.w r3, [sl, #8] + 33904: 2b00 cmp r3, #0 + 33906: f43f af74 beq.w 337f2 <__sfvwrite_r+0x62> + 3390a: 2e00 cmp r6, #0 + 3390c: d1d2 bne.n 338b4 <__sfvwrite_r+0x124> + 3390e: 9a00 ldr r2, [sp, #0] + 33910: 6856 ldr r6, [r2, #4] + 33912: 4613 mov r3, r2 + 33914: 3208 adds r2, #8 + 33916: 9200 str r2, [sp, #0] + 33918: 2e00 cmp r6, #0 + 3391a: d0f8 beq.n 3390e <__sfvwrite_r+0x17e> + 3391c: 681f ldr r7, [r3, #0] + 3391e: 4632 mov r2, r6 + 33920: 210a movs r1, #10 + 33922: 4638 mov r0, r7 + 33924: f7fb f924 bl 2eb70 + 33928: 2800 cmp r0, #0 + 3392a: f000 809c beq.w 33a66 <__sfvwrite_r+0x2d6> + 3392e: 3001 adds r0, #1 + 33930: eba0 0907 sub.w r9, r0, r7 + 33934: e7c0 b.n 338b8 <__sfvwrite_r+0x128> + 33936: 6820 ldr r0, [r4, #0] + 33938: 6923 ldr r3, [r4, #16] + 3393a: 4298 cmp r0, r3 + 3393c: d816 bhi.n 3396c <__sfvwrite_r+0x1dc> + 3393e: 6962 ldr r2, [r4, #20] + 33940: 42b2 cmp r2, r6 + 33942: d813 bhi.n 3396c <__sfvwrite_r+0x1dc> + 33944: f06f 4300 mvn.w r3, #2147483648 ; 0x80000000 + 33948: 42b3 cmp r3, r6 + 3394a: bf28 it cs + 3394c: 4633 movcs r3, r6 + 3394e: 69e1 ldr r1, [r4, #28] + 33950: fb93 f3f2 sdiv r3, r3, r2 + 33954: 6a67 ldr r7, [r4, #36] ; 0x24 + 33956: fb02 f303 mul.w r3, r2, r3 + 3395a: 4640 mov r0, r8 + 3395c: 464a mov r2, r9 + 3395e: 47b8 blx r7 + 33960: f1b0 0a00 subs.w sl, r0, #0 + 33964: dd93 ble.n 3388e <__sfvwrite_r+0xfe> + 33966: eba6 060a sub.w r6, r6, sl + 3396a: e776 b.n 3385a <__sfvwrite_r+0xca> + 3396c: 45b3 cmp fp, r6 + 3396e: 46da mov sl, fp + 33970: bf28 it cs + 33972: 46b2 movcs sl, r6 + 33974: 4652 mov r2, sl + 33976: 4649 mov r1, r9 + 33978: f7fa fd80 bl 2e47c + 3397c: 68a3 ldr r3, [r4, #8] + 3397e: 6822 ldr r2, [r4, #0] + 33980: eba3 030a sub.w r3, r3, sl + 33984: 4452 add r2, sl + 33986: 60a3 str r3, [r4, #8] + 33988: 6022 str r2, [r4, #0] + 3398a: 2b00 cmp r3, #0 + 3398c: d1eb bne.n 33966 <__sfvwrite_r+0x1d6> + 3398e: 4621 mov r1, r4 + 33990: 4640 mov r0, r8 + 33992: f7fd fdcf bl 31534 <_fflush_r> + 33996: 2800 cmp r0, #0 + 33998: d0e5 beq.n 33966 <__sfvwrite_r+0x1d6> + 3399a: e778 b.n 3388e <__sfvwrite_r+0xfe> + 3399c: 6820 ldr r0, [r4, #0] + 3399e: 46b3 mov fp, r6 + 339a0: 4632 mov r2, r6 + 339a2: e74c b.n 3383e <__sfvwrite_r+0xae> + 339a4: 4639 mov r1, r7 + 339a6: 9201 str r2, [sp, #4] + 339a8: f7fa fd68 bl 2e47c + 339ac: 9a01 ldr r2, [sp, #4] + 339ae: 68a3 ldr r3, [r4, #8] + 339b0: 1a9b subs r3, r3, r2 + 339b2: 60a3 str r3, [r4, #8] + 339b4: 6823 ldr r3, [r4, #0] + 339b6: 4413 add r3, r2 + 339b8: 6023 str r3, [r4, #0] + 339ba: 4693 mov fp, r2 + 339bc: e795 b.n 338ea <__sfvwrite_r+0x15a> + 339be: 6823 ldr r3, [r4, #0] + 339c0: 6921 ldr r1, [r4, #16] + 339c2: eba3 0b01 sub.w fp, r3, r1 + 339c6: 6963 ldr r3, [r4, #20] + 339c8: eb03 0a43 add.w sl, r3, r3, lsl #1 + 339cc: eb0a 7ada add.w sl, sl, sl, lsr #31 + 339d0: f10b 0301 add.w r3, fp, #1 + 339d4: ea4f 0a6a mov.w sl, sl, asr #1 + 339d8: 4433 add r3, r6 + 339da: 4553 cmp r3, sl + 339dc: 4652 mov r2, sl + 339de: bf84 itt hi + 339e0: 469a movhi sl, r3 + 339e2: 4652 movhi r2, sl + 339e4: 0543 lsls r3, r0, #21 + 339e6: d52c bpl.n 33a42 <__sfvwrite_r+0x2b2> + 339e8: 4611 mov r1, r2 + 339ea: 4640 mov r0, r8 + 339ec: f7f9 ff8e bl 2d90c <_malloc_r> + 339f0: 2800 cmp r0, #0 + 339f2: d03b beq.n 33a6c <__sfvwrite_r+0x2dc> + 339f4: 465a mov r2, fp + 339f6: 6921 ldr r1, [r4, #16] + 339f8: 9001 str r0, [sp, #4] + 339fa: f7f6 fef9 bl 2a7f0 + 339fe: 89a2 ldrh r2, [r4, #12] + 33a00: 9b01 ldr r3, [sp, #4] + 33a02: f422 6290 bic.w r2, r2, #1152 ; 0x480 + 33a06: f042 0280 orr.w r2, r2, #128 ; 0x80 + 33a0a: 81a2 strh r2, [r4, #12] + 33a0c: eb03 000b add.w r0, r3, fp + 33a10: 6123 str r3, [r4, #16] + 33a12: ebaa 030b sub.w r3, sl, fp + 33a16: f8c4 a014 str.w sl, [r4, #20] + 33a1a: 60a3 str r3, [r4, #8] + 33a1c: 6020 str r0, [r4, #0] + 33a1e: 46b3 mov fp, r6 + 33a20: 4632 mov r2, r6 + 33a22: e70c b.n 3383e <__sfvwrite_r+0xae> + 33a24: 4639 mov r1, r7 + 33a26: 465a mov r2, fp + 33a28: f7fa fd28 bl 2e47c + 33a2c: 6823 ldr r3, [r4, #0] + 33a2e: 445b add r3, fp + 33a30: 6023 str r3, [r4, #0] + 33a32: 4621 mov r1, r4 + 33a34: 4640 mov r0, r8 + 33a36: f7fd fd7d bl 31534 <_fflush_r> + 33a3a: 2800 cmp r0, #0 + 33a3c: f43f af55 beq.w 338ea <__sfvwrite_r+0x15a> + 33a40: e725 b.n 3388e <__sfvwrite_r+0xfe> + 33a42: 4640 mov r0, r8 + 33a44: f7fa fa2a bl 2de9c <_realloc_r> + 33a48: 4603 mov r3, r0 + 33a4a: 2800 cmp r0, #0 + 33a4c: d1de bne.n 33a0c <__sfvwrite_r+0x27c> + 33a4e: 6921 ldr r1, [r4, #16] + 33a50: 4640 mov r0, r8 + 33a52: f7fb f9f7 bl 2ee44 <_free_r> + 33a56: f9b4 300c ldrsh.w r3, [r4, #12] + 33a5a: 220c movs r2, #12 + 33a5c: f023 0380 bic.w r3, r3, #128 ; 0x80 + 33a60: f8c8 2000 str.w r2, [r8] + 33a64: e715 b.n 33892 <__sfvwrite_r+0x102> + 33a66: 1c72 adds r2, r6, #1 + 33a68: 4691 mov r9, r2 + 33a6a: e726 b.n 338ba <__sfvwrite_r+0x12a> + 33a6c: 220c movs r2, #12 + 33a6e: f9b4 300c ldrsh.w r3, [r4, #12] + 33a72: f8c8 2000 str.w r2, [r8] + 33a76: e70c b.n 33892 <__sfvwrite_r+0x102> + 33a78: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 33a7c: e6ba b.n 337f4 <__sfvwrite_r+0x64> + 33a7e: bf00 nop + 33a80: 7ffffc00 .word 0x7ffffc00 + +00033a84 <__swsetup_r>: + 33a84: b538 push {r3, r4, r5, lr} + 33a86: 4b31 ldr r3, [pc, #196] ; (33b4c <__swsetup_r+0xc8>) + 33a88: 681b ldr r3, [r3, #0] + 33a8a: 4605 mov r5, r0 + 33a8c: 460c mov r4, r1 + 33a8e: b113 cbz r3, 33a96 <__swsetup_r+0x12> + 33a90: 6b5a ldr r2, [r3, #52] ; 0x34 + 33a92: 2a00 cmp r2, #0 + 33a94: d04e beq.n 33b34 <__swsetup_r+0xb0> + 33a96: f9b4 300c ldrsh.w r3, [r4, #12] + 33a9a: 0718 lsls r0, r3, #28 + 33a9c: b29a uxth r2, r3 + 33a9e: d51c bpl.n 33ada <__swsetup_r+0x56> + 33aa0: 6921 ldr r1, [r4, #16] + 33aa2: b329 cbz r1, 33af0 <__swsetup_r+0x6c> + 33aa4: f012 0001 ands.w r0, r2, #1 + 33aa8: d007 beq.n 33aba <__swsetup_r+0x36> + 33aaa: 2000 movs r0, #0 + 33aac: 60a0 str r0, [r4, #8] + 33aae: 6960 ldr r0, [r4, #20] + 33ab0: 4240 negs r0, r0 + 33ab2: 61a0 str r0, [r4, #24] + 33ab4: b139 cbz r1, 33ac6 <__swsetup_r+0x42> + 33ab6: 2000 movs r0, #0 + 33ab8: bd38 pop {r3, r4, r5, pc} + 33aba: 0795 lsls r5, r2, #30 + 33abc: bf58 it pl + 33abe: 6960 ldrpl r0, [r4, #20] + 33ac0: 60a0 str r0, [r4, #8] + 33ac2: 2900 cmp r1, #0 + 33ac4: d1f7 bne.n 33ab6 <__swsetup_r+0x32> + 33ac6: 0612 lsls r2, r2, #24 + 33ac8: bf58 it pl + 33aca: 4608 movpl r0, r1 + 33acc: d5f4 bpl.n 33ab8 <__swsetup_r+0x34> + 33ace: f043 0340 orr.w r3, r3, #64 ; 0x40 + 33ad2: 81a3 strh r3, [r4, #12] + 33ad4: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 33ad8: bd38 pop {r3, r4, r5, pc} + 33ada: 06d1 lsls r1, r2, #27 + 33adc: d52e bpl.n 33b3c <__swsetup_r+0xb8> + 33ade: 0752 lsls r2, r2, #29 + 33ae0: d414 bmi.n 33b0c <__swsetup_r+0x88> + 33ae2: 6921 ldr r1, [r4, #16] + 33ae4: f043 0308 orr.w r3, r3, #8 + 33ae8: 81a3 strh r3, [r4, #12] + 33aea: b29a uxth r2, r3 + 33aec: 2900 cmp r1, #0 + 33aee: d1d9 bne.n 33aa4 <__swsetup_r+0x20> + 33af0: f402 7020 and.w r0, r2, #640 ; 0x280 + 33af4: f5b0 7f00 cmp.w r0, #512 ; 0x200 + 33af8: d0d4 beq.n 33aa4 <__swsetup_r+0x20> + 33afa: 4621 mov r1, r4 + 33afc: 4628 mov r0, r5 + 33afe: f000 f947 bl 33d90 <__smakebuf_r> + 33b02: f9b4 300c ldrsh.w r3, [r4, #12] + 33b06: 6921 ldr r1, [r4, #16] + 33b08: b29a uxth r2, r3 + 33b0a: e7cb b.n 33aa4 <__swsetup_r+0x20> + 33b0c: 6b21 ldr r1, [r4, #48] ; 0x30 + 33b0e: b151 cbz r1, 33b26 <__swsetup_r+0xa2> + 33b10: f104 0240 add.w r2, r4, #64 ; 0x40 + 33b14: 4291 cmp r1, r2 + 33b16: d004 beq.n 33b22 <__swsetup_r+0x9e> + 33b18: 4628 mov r0, r5 + 33b1a: f7fb f993 bl 2ee44 <_free_r> + 33b1e: f9b4 300c ldrsh.w r3, [r4, #12] + 33b22: 2200 movs r2, #0 + 33b24: 6322 str r2, [r4, #48] ; 0x30 + 33b26: 6921 ldr r1, [r4, #16] + 33b28: 2200 movs r2, #0 + 33b2a: e9c4 1200 strd r1, r2, [r4] + 33b2e: f023 0324 bic.w r3, r3, #36 ; 0x24 + 33b32: e7d7 b.n 33ae4 <__swsetup_r+0x60> + 33b34: 4618 mov r0, r3 + 33b36: f7fa fc53 bl 2e3e0 <__sinit> + 33b3a: e7ac b.n 33a96 <__swsetup_r+0x12> + 33b3c: 2209 movs r2, #9 + 33b3e: f043 0340 orr.w r3, r3, #64 ; 0x40 + 33b42: 602a str r2, [r5, #0] + 33b44: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff + 33b48: 81a3 strh r3, [r4, #12] + 33b4a: bd38 pop {r3, r4, r5, pc} + 33b4c: 20005270 .word 0x20005270 + +00033b50 <__fputwc>: + 33b50: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 33b54: b082 sub sp, #8 + 33b56: 4682 mov sl, r0 + 33b58: 4688 mov r8, r1 + 33b5a: 4614 mov r4, r2 + 33b5c: f7fa fdd2 bl 2e704 <__locale_mb_cur_max> + 33b60: 2801 cmp r0, #1 + 33b62: d103 bne.n 33b6c <__fputwc+0x1c> + 33b64: f108 33ff add.w r3, r8, #4294967295 ; 0xffffffff + 33b68: 2bfe cmp r3, #254 ; 0xfe + 33b6a: d936 bls.n 33bda <__fputwc+0x8a> + 33b6c: f10d 0904 add.w r9, sp, #4 + 33b70: 4642 mov r2, r8 + 33b72: f104 035c add.w r3, r4, #92 ; 0x5c + 33b76: 4649 mov r1, r9 + 33b78: 4650 mov r0, sl + 33b7a: f7fd fd9b bl 316b4 <_wcrtomb_r> + 33b7e: 1c42 adds r2, r0, #1 + 33b80: 4606 mov r6, r0 + 33b82: d032 beq.n 33bea <__fputwc+0x9a> + 33b84: b320 cbz r0, 33bd0 <__fputwc+0x80> + 33b86: f89d c004 ldrb.w ip, [sp, #4] + 33b8a: 2500 movs r5, #0 + 33b8c: e009 b.n 33ba2 <__fputwc+0x52> + 33b8e: 6823 ldr r3, [r4, #0] + 33b90: 1c5a adds r2, r3, #1 + 33b92: 6022 str r2, [r4, #0] + 33b94: f883 c000 strb.w ip, [r3] + 33b98: 3501 adds r5, #1 + 33b9a: 42b5 cmp r5, r6 + 33b9c: d218 bcs.n 33bd0 <__fputwc+0x80> + 33b9e: f819 cf01 ldrb.w ip, [r9, #1]! + 33ba2: 68a3 ldr r3, [r4, #8] + 33ba4: 3b01 subs r3, #1 + 33ba6: 2b00 cmp r3, #0 + 33ba8: 60a3 str r3, [r4, #8] + 33baa: daf0 bge.n 33b8e <__fputwc+0x3e> + 33bac: 69a7 ldr r7, [r4, #24] + 33bae: 42bb cmp r3, r7 + 33bb0: 4661 mov r1, ip + 33bb2: 4622 mov r2, r4 + 33bb4: 4650 mov r0, sl + 33bb6: db02 blt.n 33bbe <__fputwc+0x6e> + 33bb8: f1bc 0f0a cmp.w ip, #10 + 33bbc: d1e7 bne.n 33b8e <__fputwc+0x3e> + 33bbe: f000 f953 bl 33e68 <__swbuf_r> + 33bc2: 1c43 adds r3, r0, #1 + 33bc4: d1e8 bne.n 33b98 <__fputwc+0x48> + 33bc6: 4606 mov r6, r0 + 33bc8: 4630 mov r0, r6 + 33bca: b002 add sp, #8 + 33bcc: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 33bd0: 4646 mov r6, r8 + 33bd2: 4630 mov r0, r6 + 33bd4: b002 add sp, #8 + 33bd6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 33bda: fa5f fc88 uxtb.w ip, r8 + 33bde: f88d c004 strb.w ip, [sp, #4] + 33be2: 4606 mov r6, r0 + 33be4: f10d 0904 add.w r9, sp, #4 + 33be8: e7cf b.n 33b8a <__fputwc+0x3a> + 33bea: 89a3 ldrh r3, [r4, #12] + 33bec: 4630 mov r0, r6 + 33bee: f043 0340 orr.w r3, r3, #64 ; 0x40 + 33bf2: 81a3 strh r3, [r4, #12] + 33bf4: b002 add sp, #8 + 33bf6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 33bfa: bf00 nop + +00033bfc <_fputwc_r>: + 33bfc: b530 push {r4, r5, lr} + 33bfe: 6e53 ldr r3, [r2, #100] ; 0x64 + 33c00: f013 0f01 tst.w r3, #1 + 33c04: f9b2 300c ldrsh.w r3, [r2, #12] + 33c08: 4614 mov r4, r2 + 33c0a: b083 sub sp, #12 + 33c0c: 4605 mov r5, r0 + 33c0e: b29a uxth r2, r3 + 33c10: d101 bne.n 33c16 <_fputwc_r+0x1a> + 33c12: 0598 lsls r0, r3, #22 + 33c14: d51c bpl.n 33c50 <_fputwc_r+0x54> + 33c16: 0490 lsls r0, r2, #18 + 33c18: d406 bmi.n 33c28 <_fputwc_r+0x2c> + 33c1a: 6e62 ldr r2, [r4, #100] ; 0x64 + 33c1c: f443 5300 orr.w r3, r3, #8192 ; 0x2000 + 33c20: f442 5200 orr.w r2, r2, #8192 ; 0x2000 + 33c24: 81a3 strh r3, [r4, #12] + 33c26: 6662 str r2, [r4, #100] ; 0x64 + 33c28: 4622 mov r2, r4 + 33c2a: 4628 mov r0, r5 + 33c2c: f7ff ff90 bl 33b50 <__fputwc> + 33c30: 6e63 ldr r3, [r4, #100] ; 0x64 + 33c32: 07da lsls r2, r3, #31 + 33c34: 4605 mov r5, r0 + 33c36: d402 bmi.n 33c3e <_fputwc_r+0x42> + 33c38: 89a3 ldrh r3, [r4, #12] + 33c3a: 059b lsls r3, r3, #22 + 33c3c: d502 bpl.n 33c44 <_fputwc_r+0x48> + 33c3e: 4628 mov r0, r5 + 33c40: b003 add sp, #12 + 33c42: bd30 pop {r4, r5, pc} + 33c44: 6da0 ldr r0, [r4, #88] ; 0x58 + 33c46: f7fa ff91 bl 2eb6c <__retarget_lock_release_recursive> + 33c4a: 4628 mov r0, r5 + 33c4c: b003 add sp, #12 + 33c4e: bd30 pop {r4, r5, pc} + 33c50: 6da0 ldr r0, [r4, #88] ; 0x58 + 33c52: 9101 str r1, [sp, #4] + 33c54: f7fa ff88 bl 2eb68 <__retarget_lock_acquire_recursive> + 33c58: f9b4 300c ldrsh.w r3, [r4, #12] + 33c5c: 9901 ldr r1, [sp, #4] + 33c5e: b29a uxth r2, r3 + 33c60: e7d9 b.n 33c16 <_fputwc_r+0x1a> + 33c62: bf00 nop + +00033c64 <_wcsnrtombs_l>: + 33c64: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 33c68: b08b sub sp, #44 ; 0x2c + 33c6a: e9dd 8a15 ldrd r8, sl, [sp, #84] ; 0x54 + 33c6e: 9f14 ldr r7, [sp, #80] ; 0x50 + 33c70: 9103 str r1, [sp, #12] + 33c72: 4681 mov r9, r0 + 33c74: 9205 str r2, [sp, #20] + 33c76: 461e mov r6, r3 + 33c78: f1b8 0f00 cmp.w r8, #0 + 33c7c: d05c beq.n 33d38 <_wcsnrtombs_l+0xd4> + 33c7e: 9b03 ldr r3, [sp, #12] + 33c80: 2b00 cmp r3, #0 + 33c82: d05e beq.n 33d42 <_wcsnrtombs_l+0xde> + 33c84: 9b05 ldr r3, [sp, #20] + 33c86: 681d ldr r5, [r3, #0] + 33c88: 2f00 cmp r7, #0 + 33c8a: d06a beq.n 33d62 <_wcsnrtombs_l+0xfe> + 33c8c: 1e74 subs r4, r6, #1 + 33c8e: b34e cbz r6, 33ce4 <_wcsnrtombs_l+0x80> + 33c90: 9b03 ldr r3, [sp, #12] + 33c92: 9304 str r3, [sp, #16] + 33c94: 3d04 subs r5, #4 + 33c96: 2600 movs r6, #0 + 33c98: 9501 str r5, [sp, #4] + 33c9a: e00b b.n 33cb4 <_wcsnrtombs_l+0x50> + 33c9c: 9b03 ldr r3, [sp, #12] + 33c9e: bb2b cbnz r3, 33cec <_wcsnrtombs_l+0x88> + 33ca0: 9b01 ldr r3, [sp, #4] + 33ca2: 681a ldr r2, [r3, #0] + 33ca4: 2a00 cmp r2, #0 + 33ca6: d03a beq.n 33d1e <_wcsnrtombs_l+0xba> + 33ca8: 45bc cmp ip, r7 + 33caa: d25c bcs.n 33d66 <_wcsnrtombs_l+0x102> + 33cac: 3c01 subs r4, #1 + 33cae: 1c63 adds r3, r4, #1 + 33cb0: 4666 mov r6, ip + 33cb2: d017 beq.n 33ce4 <_wcsnrtombs_l+0x80> + 33cb4: f8d8 3000 ldr.w r3, [r8] + 33cb8: 9302 str r3, [sp, #8] + 33cba: 9b01 ldr r3, [sp, #4] + 33cbc: f8da 50e0 ldr.w r5, [sl, #224] ; 0xe0 + 33cc0: f853 2f04 ldr.w r2, [r3, #4]! + 33cc4: 9301 str r3, [sp, #4] + 33cc6: a907 add r1, sp, #28 + 33cc8: 4643 mov r3, r8 + 33cca: 4648 mov r0, r9 + 33ccc: f8d8 b004 ldr.w fp, [r8, #4] + 33cd0: 47a8 blx r5 + 33cd2: 1c42 adds r2, r0, #1 + 33cd4: d03a beq.n 33d4c <_wcsnrtombs_l+0xe8> + 33cd6: eb00 0c06 add.w ip, r0, r6 + 33cda: 45bc cmp ip, r7 + 33cdc: d9de bls.n 33c9c <_wcsnrtombs_l+0x38> + 33cde: 9b02 ldr r3, [sp, #8] + 33ce0: e9c8 3b00 strd r3, fp, [r8] + 33ce4: 4630 mov r0, r6 + 33ce6: b00b add sp, #44 ; 0x2c + 33ce8: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 33cec: 2800 cmp r0, #0 + 33cee: dd0e ble.n 33d0e <_wcsnrtombs_l+0xaa> + 33cf0: 9b04 ldr r3, [sp, #16] + 33cf2: 9d01 ldr r5, [sp, #4] + 33cf4: 4418 add r0, r3 + 33cf6: 1e5a subs r2, r3, #1 + 33cf8: a907 add r1, sp, #28 + 33cfa: f100 3eff add.w lr, r0, #4294967295 ; 0xffffffff + 33cfe: f811 3b01 ldrb.w r3, [r1], #1 + 33d02: f802 3f01 strb.w r3, [r2, #1]! + 33d06: 4572 cmp r2, lr + 33d08: d1f9 bne.n 33cfe <_wcsnrtombs_l+0x9a> + 33d0a: 9501 str r5, [sp, #4] + 33d0c: 9004 str r0, [sp, #16] + 33d0e: 9b05 ldr r3, [sp, #20] + 33d10: 681a ldr r2, [r3, #0] + 33d12: 3204 adds r2, #4 + 33d14: 601a str r2, [r3, #0] + 33d16: 9b01 ldr r3, [sp, #4] + 33d18: 681a ldr r2, [r3, #0] + 33d1a: 2a00 cmp r2, #0 + 33d1c: d1c4 bne.n 33ca8 <_wcsnrtombs_l+0x44> + 33d1e: 9b03 ldr r3, [sp, #12] + 33d20: b10b cbz r3, 33d26 <_wcsnrtombs_l+0xc2> + 33d22: 9b05 ldr r3, [sp, #20] + 33d24: 601a str r2, [r3, #0] + 33d26: f10c 36ff add.w r6, ip, #4294967295 ; 0xffffffff + 33d2a: 2200 movs r2, #0 + 33d2c: 4630 mov r0, r6 + 33d2e: f8c8 2000 str.w r2, [r8] + 33d32: b00b add sp, #44 ; 0x2c + 33d34: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 33d38: 9b03 ldr r3, [sp, #12] + 33d3a: f500 7886 add.w r8, r0, #268 ; 0x10c + 33d3e: 2b00 cmp r3, #0 + 33d40: d1a0 bne.n 33c84 <_wcsnrtombs_l+0x20> + 33d42: 9b05 ldr r3, [sp, #20] + 33d44: f04f 37ff mov.w r7, #4294967295 ; 0xffffffff + 33d48: 681d ldr r5, [r3, #0] + 33d4a: e79f b.n 33c8c <_wcsnrtombs_l+0x28> + 33d4c: 4606 mov r6, r0 + 33d4e: 218a movs r1, #138 ; 0x8a + 33d50: 2200 movs r2, #0 + 33d52: 4630 mov r0, r6 + 33d54: f8c9 1000 str.w r1, [r9] + 33d58: f8c8 2000 str.w r2, [r8] + 33d5c: b00b add sp, #44 ; 0x2c + 33d5e: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 33d62: 463e mov r6, r7 + 33d64: e7be b.n 33ce4 <_wcsnrtombs_l+0x80> + 33d66: 4666 mov r6, ip + 33d68: e7bc b.n 33ce4 <_wcsnrtombs_l+0x80> + 33d6a: bf00 nop + +00033d6c <_wcsnrtombs_r>: + 33d6c: b510 push {r4, lr} + 33d6e: b084 sub sp, #16 + 33d70: 4c05 ldr r4, [pc, #20] ; (33d88 <_wcsnrtombs_r+0x1c>) + 33d72: 9806 ldr r0, [sp, #24] + 33d74: 9000 str r0, [sp, #0] + 33d76: 9807 ldr r0, [sp, #28] + 33d78: 9001 str r0, [sp, #4] + 33d7a: 4804 ldr r0, [pc, #16] ; (33d8c <_wcsnrtombs_r+0x20>) + 33d7c: 6800 ldr r0, [r0, #0] + 33d7e: 9402 str r4, [sp, #8] + 33d80: f7ff ff70 bl 33c64 <_wcsnrtombs_l> + 33d84: b004 add sp, #16 + 33d86: bd10 pop {r4, pc} + 33d88: 20004ce8 .word 0x20004ce8 + 33d8c: 20005270 .word 0x20005270 + +00033d90 <__smakebuf_r>: + 33d90: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 33d94: 898b ldrh r3, [r1, #12] + 33d96: 460c mov r4, r1 + 33d98: 0799 lsls r1, r3, #30 + 33d9a: b096 sub sp, #88 ; 0x58 + 33d9c: d508 bpl.n 33db0 <__smakebuf_r+0x20> + 33d9e: f104 0343 add.w r3, r4, #67 ; 0x43 + 33da2: 2201 movs r2, #1 + 33da4: e9c4 3204 strd r3, r2, [r4, #16] + 33da8: 6023 str r3, [r4, #0] + 33daa: b016 add sp, #88 ; 0x58 + 33dac: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 33db0: f9b4 100e ldrsh.w r1, [r4, #14] + 33db4: 2900 cmp r1, #0 + 33db6: 4606 mov r6, r0 + 33db8: db25 blt.n 33e06 <__smakebuf_r+0x76> + 33dba: 466a mov r2, sp + 33dbc: f000 f8ac bl 33f18 <_fstat_r> + 33dc0: 2800 cmp r0, #0 + 33dc2: db1f blt.n 33e04 <__smakebuf_r+0x74> + 33dc4: 9d01 ldr r5, [sp, #4] + 33dc6: f405 4570 and.w r5, r5, #61440 ; 0xf000 + 33dca: f5a5 5500 sub.w r5, r5, #8192 ; 0x2000 + 33dce: fab5 f585 clz r5, r5 + 33dd2: f44f 6880 mov.w r8, #1024 ; 0x400 + 33dd6: 096d lsrs r5, r5, #5 + 33dd8: f44f 6700 mov.w r7, #2048 ; 0x800 + 33ddc: 4641 mov r1, r8 + 33dde: 4630 mov r0, r6 + 33de0: f7f9 fd94 bl 2d90c <_malloc_r> + 33de4: b1e0 cbz r0, 33e20 <__smakebuf_r+0x90> + 33de6: f9b4 300c ldrsh.w r3, [r4, #12] + 33dea: f8c4 8014 str.w r8, [r4, #20] + 33dee: f043 0380 orr.w r3, r3, #128 ; 0x80 + 33df2: 6020 str r0, [r4, #0] + 33df4: 6120 str r0, [r4, #16] + 33df6: 81a3 strh r3, [r4, #12] + 33df8: bb35 cbnz r5, 33e48 <__smakebuf_r+0xb8> + 33dfa: 433b orrs r3, r7 + 33dfc: 81a3 strh r3, [r4, #12] + 33dfe: b016 add sp, #88 ; 0x58 + 33e00: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 33e04: 89a3 ldrh r3, [r4, #12] + 33e06: f013 0580 ands.w r5, r3, #128 ; 0x80 + 33e0a: d019 beq.n 33e40 <__smakebuf_r+0xb0> + 33e0c: f04f 0840 mov.w r8, #64 ; 0x40 + 33e10: 2500 movs r5, #0 + 33e12: 4641 mov r1, r8 + 33e14: 4630 mov r0, r6 + 33e16: 462f mov r7, r5 + 33e18: f7f9 fd78 bl 2d90c <_malloc_r> + 33e1c: 2800 cmp r0, #0 + 33e1e: d1e2 bne.n 33de6 <__smakebuf_r+0x56> + 33e20: f9b4 300c ldrsh.w r3, [r4, #12] + 33e24: 059a lsls r2, r3, #22 + 33e26: d4c0 bmi.n 33daa <__smakebuf_r+0x1a> + 33e28: f023 0303 bic.w r3, r3, #3 + 33e2c: f104 0243 add.w r2, r4, #67 ; 0x43 + 33e30: f043 0302 orr.w r3, r3, #2 + 33e34: 2101 movs r1, #1 + 33e36: e9c4 2104 strd r2, r1, [r4, #16] + 33e3a: 81a3 strh r3, [r4, #12] + 33e3c: 6022 str r2, [r4, #0] + 33e3e: e7b4 b.n 33daa <__smakebuf_r+0x1a> + 33e40: f44f 6880 mov.w r8, #1024 ; 0x400 + 33e44: 462f mov r7, r5 + 33e46: e7c9 b.n 33ddc <__smakebuf_r+0x4c> + 33e48: f9b4 100e ldrsh.w r1, [r4, #14] + 33e4c: 4630 mov r0, r6 + 33e4e: f000 f879 bl 33f44 <_isatty_r> + 33e52: b910 cbnz r0, 33e5a <__smakebuf_r+0xca> + 33e54: f9b4 300c ldrsh.w r3, [r4, #12] + 33e58: e7cf b.n 33dfa <__smakebuf_r+0x6a> + 33e5a: 89a3 ldrh r3, [r4, #12] + 33e5c: f023 0303 bic.w r3, r3, #3 + 33e60: f043 0301 orr.w r3, r3, #1 + 33e64: b21b sxth r3, r3 + 33e66: e7c8 b.n 33dfa <__smakebuf_r+0x6a> + +00033e68 <__swbuf_r>: + 33e68: b5f8 push {r3, r4, r5, r6, r7, lr} + 33e6a: 460d mov r5, r1 + 33e6c: 4614 mov r4, r2 + 33e6e: 4606 mov r6, r0 + 33e70: b110 cbz r0, 33e78 <__swbuf_r+0x10> + 33e72: 6b43 ldr r3, [r0, #52] ; 0x34 + 33e74: 2b00 cmp r3, #0 + 33e76: d04c beq.n 33f12 <__swbuf_r+0xaa> + 33e78: f9b4 200c ldrsh.w r2, [r4, #12] + 33e7c: 69a3 ldr r3, [r4, #24] + 33e7e: 60a3 str r3, [r4, #8] + 33e80: 0717 lsls r7, r2, #28 + 33e82: b290 uxth r0, r2 + 33e84: d51b bpl.n 33ebe <__swbuf_r+0x56> + 33e86: 6923 ldr r3, [r4, #16] + 33e88: b1cb cbz r3, 33ebe <__swbuf_r+0x56> + 33e8a: b2ed uxtb r5, r5 + 33e8c: 0481 lsls r1, r0, #18 + 33e8e: 462f mov r7, r5 + 33e90: d522 bpl.n 33ed8 <__swbuf_r+0x70> + 33e92: 6822 ldr r2, [r4, #0] + 33e94: 6961 ldr r1, [r4, #20] + 33e96: 1ad3 subs r3, r2, r3 + 33e98: 4299 cmp r1, r3 + 33e9a: dd29 ble.n 33ef0 <__swbuf_r+0x88> + 33e9c: 3301 adds r3, #1 + 33e9e: 68a1 ldr r1, [r4, #8] + 33ea0: 3901 subs r1, #1 + 33ea2: 60a1 str r1, [r4, #8] + 33ea4: 1c51 adds r1, r2, #1 + 33ea6: 6021 str r1, [r4, #0] + 33ea8: 7015 strb r5, [r2, #0] + 33eaa: 6962 ldr r2, [r4, #20] + 33eac: 429a cmp r2, r3 + 33eae: d027 beq.n 33f00 <__swbuf_r+0x98> + 33eb0: 89a3 ldrh r3, [r4, #12] + 33eb2: 07db lsls r3, r3, #31 + 33eb4: d501 bpl.n 33eba <__swbuf_r+0x52> + 33eb6: 2d0a cmp r5, #10 + 33eb8: d022 beq.n 33f00 <__swbuf_r+0x98> + 33eba: 4638 mov r0, r7 + 33ebc: bdf8 pop {r3, r4, r5, r6, r7, pc} + 33ebe: 4621 mov r1, r4 + 33ec0: 4630 mov r0, r6 + 33ec2: f7ff fddf bl 33a84 <__swsetup_r> + 33ec6: bb08 cbnz r0, 33f0c <__swbuf_r+0xa4> + 33ec8: f9b4 200c ldrsh.w r2, [r4, #12] + 33ecc: 6923 ldr r3, [r4, #16] + 33ece: b290 uxth r0, r2 + 33ed0: b2ed uxtb r5, r5 + 33ed2: 0481 lsls r1, r0, #18 + 33ed4: 462f mov r7, r5 + 33ed6: d4dc bmi.n 33e92 <__swbuf_r+0x2a> + 33ed8: f442 5200 orr.w r2, r2, #8192 ; 0x2000 + 33edc: 81a2 strh r2, [r4, #12] + 33ede: 6e62 ldr r2, [r4, #100] ; 0x64 + 33ee0: 6961 ldr r1, [r4, #20] + 33ee2: f422 5200 bic.w r2, r2, #8192 ; 0x2000 + 33ee6: 6662 str r2, [r4, #100] ; 0x64 + 33ee8: 6822 ldr r2, [r4, #0] + 33eea: 1ad3 subs r3, r2, r3 + 33eec: 4299 cmp r1, r3 + 33eee: dcd5 bgt.n 33e9c <__swbuf_r+0x34> + 33ef0: 4621 mov r1, r4 + 33ef2: 4630 mov r0, r6 + 33ef4: f7fd fb1e bl 31534 <_fflush_r> + 33ef8: b940 cbnz r0, 33f0c <__swbuf_r+0xa4> + 33efa: 6822 ldr r2, [r4, #0] + 33efc: 2301 movs r3, #1 + 33efe: e7ce b.n 33e9e <__swbuf_r+0x36> + 33f00: 4621 mov r1, r4 + 33f02: 4630 mov r0, r6 + 33f04: f7fd fb16 bl 31534 <_fflush_r> + 33f08: 2800 cmp r0, #0 + 33f0a: d0d6 beq.n 33eba <__swbuf_r+0x52> + 33f0c: f04f 37ff mov.w r7, #4294967295 ; 0xffffffff + 33f10: e7d3 b.n 33eba <__swbuf_r+0x52> + 33f12: f7fa fa65 bl 2e3e0 <__sinit> + 33f16: e7af b.n 33e78 <__swbuf_r+0x10> + +00033f18 <_fstat_r>: + 33f18: b570 push {r4, r5, r6, lr} + 33f1a: 460c mov r4, r1 + 33f1c: 4d08 ldr r5, [pc, #32] ; (33f40 <_fstat_r+0x28>) + 33f1e: 4603 mov r3, r0 + 33f20: 2600 movs r6, #0 + 33f22: 4620 mov r0, r4 + 33f24: 4611 mov r1, r2 + 33f26: 461c mov r4, r3 + 33f28: 602e str r6, [r5, #0] + 33f2a: f7f6 ff8b bl 2ae44 <_fstat> + 33f2e: 1c43 adds r3, r0, #1 + 33f30: d000 beq.n 33f34 <_fstat_r+0x1c> + 33f32: bd70 pop {r4, r5, r6, pc} + 33f34: 682b ldr r3, [r5, #0] + 33f36: 2b00 cmp r3, #0 + 33f38: d0fb beq.n 33f32 <_fstat_r+0x1a> + 33f3a: 6023 str r3, [r4, #0] + 33f3c: bd70 pop {r4, r5, r6, pc} + 33f3e: bf00 nop + 33f40: 2000ba68 .word 0x2000ba68 + +00033f44 <_isatty_r>: + 33f44: b538 push {r3, r4, r5, lr} + 33f46: 4d07 ldr r5, [pc, #28] ; (33f64 <_isatty_r+0x20>) + 33f48: 2200 movs r2, #0 + 33f4a: 4604 mov r4, r0 + 33f4c: 4608 mov r0, r1 + 33f4e: 602a str r2, [r5, #0] + 33f50: f7f6 ff7e bl 2ae50 <_isatty> + 33f54: 1c43 adds r3, r0, #1 + 33f56: d000 beq.n 33f5a <_isatty_r+0x16> + 33f58: bd38 pop {r3, r4, r5, pc} + 33f5a: 682b ldr r3, [r5, #0] + 33f5c: 2b00 cmp r3, #0 + 33f5e: d0fb beq.n 33f58 <_isatty_r+0x14> + 33f60: 6023 str r3, [r4, #0] + 33f62: bd38 pop {r3, r4, r5, pc} + 33f64: 2000ba68 .word 0x2000ba68 + +00033f68 <___reboot_Teensyduino__veneer>: + 33f68: f85f f000 ldr.w pc, [pc] ; 33f6c <___reboot_Teensyduino__veneer+0x4> + 33f6c: 60001b9d .word 0x60001b9d + +00033f70 <___ZN7TwoWire5beginEv_veneer>: + 33f70: f85f f000 ldr.w pc, [pc] ; 33f74 <___ZN7TwoWire5beginEv_veneer+0x4> + 33f74: 60001765 .word 0x60001765 + +00033f78 <___init_veneer>: + 33f78: f85f f000 ldr.w pc, [pc] ; 33f7c <___init_veneer+0x4> + 33f7c: 60001bf1 .word 0x60001bf1 Disassembly of section .fini: -00033e80 <_fini>: - 33e80: b5f8 push {r3, r4, r5, r6, r7, lr} - 33e82: bf00 nop +00033f80 <_fini>: + 33f80: b5f8 push {r3, r4, r5, r6, r7, lr} + 33f82: bf00 nop diff --git a/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.sym b/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.sym index 86a08ed..6c48b0e 100644 --- a/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.sym +++ b/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/build/badassmidi.avr.bmc_teensy40/Holly-BLE-v2-2-2.ino.sym @@ -6,12 +6,12 @@ SYMBOL TABLE: 60001400 l d .text.code 00000000 .text.code 60001c5c l d .text.progmem 00000000 .text.progmem 00000000 l d .text.itcm 00000000 .text.itcm -00033e80 l d .fini 00000000 .fini -00033e84 l d .ARM.exidx 00000000 .ARM.exidx +00033f80 l d .fini 00000000 .fini +00033f84 l d .ARM.exidx 00000000 .ARM.exidx 20000000 l d .data 00000000 .data 200056c0 l d .bss 00000000 .bss 20200000 l d .bss.dma 00000000 .bss.dma -600578d8 l d .text.csf 00000000 .text.csf +600579d8 l d .text.csf 00000000 .text.csf 00000000 l d .debug_info 00000000 .debug_info 00000000 l d .debug_abbrev 00000000 .debug_abbrev 00000000 l d .debug_line 00000000 .debug_line @@ -29,55 +29,55 @@ SYMBOL TABLE: 60001418 l F .text.code 00000010 memory_clear 60001428 l F .text.code 000001f8 ResetHandler2 00000000 l df *ABS* 00000000 WireIMXRT.cpp -00025758 l F .text.itcm 00000044 _GLOBAL__sub_I__ZN7TwoWire5beginEv +00025844 l F .text.itcm 00000044 _GLOBAL__sub_I__ZN7TwoWire5beginEv 00000000 l df *ABS* 00000000 analog.c -2000bc81 l O .bss 00000001 calibrating +2000bca1 l O .bss 00000001 calibrating 00000000 l df *ABS* 00000000 tempmon.c -2000bab0 l O .bss 00000004 s_hotCount -2000bab4 l O .bss 00000004 s_hotTemp -2000bab8 l O .bss 00000004 s_hot_ROOM -2000babc l O .bss 00000004 s_roomC_hotC +2000bad0 l O .bss 00000004 s_hotCount +2000bad4 l O .bss 00000004 s_hotTemp +2000bad8 l O .bss 00000004 s_hot_ROOM +2000badc l O .bss 00000004 s_roomC_hotC 00000000 l df *ABS* 00000000 usb.c -0002ade0 l F .text.itcm 00000088 schedule_transfer -0002ae68 l F .text.itcm 00000036 run_callbacks -0002aea0 l F .text.itcm 00000098 endpoint0_transmit.constprop.0 -2000ba38 l O .bss 00000008 endpoint0_buffer -2000ba40 l O .bss 00000004 endpoint0_notify_mask -2000af28 l O .bss 00000008 endpoint0_setupdata -2000ba44 l O .bss 00000004 endpointN_notify_mask -2000ba64 l O .bss 00000008 reply_buffer -2000bc87 l O .bss 00000001 sof_usage -2000bc95 l O .bss 00000001 usb_reboot_timer +0002aec8 l F .text.itcm 00000088 schedule_transfer +0002af50 l F .text.itcm 00000036 run_callbacks +0002af88 l F .text.itcm 00000098 endpoint0_transmit.constprop.0 +2000ba58 l O .bss 00000008 endpoint0_buffer +2000ba60 l O .bss 00000004 endpoint0_notify_mask +2000af48 l O .bss 00000008 endpoint0_setupdata +2000ba64 l O .bss 00000004 endpointN_notify_mask +2000ba84 l O .bss 00000008 reply_buffer +2000bca7 l O .bss 00000001 sof_usage +2000bcb5 l O .bss 00000001 usb_reboot_timer 00000000 l df *ABS* 00000000 crti.o 00000000 l df *ABS* 00000000 crtn.o 00000000 l df *ABS* 00000000 crtstuff.c 00000020 l F .text.itcm 00000000 register_tm_clones 00000044 l F .text.itcm 00000000 frame_dummy -2000ba4c l O .bss 00000000 object.0 +2000ba6c l O .bss 00000000 object.0 60001c38 l O .text.code 00000000 __frame_dummy_init_array_entry 00000000 l df *ABS* 00000000 Holly-BLE-v2-2-2.ino.cpp 000000a4 l F .text.itcm 00000024 _GLOBAL__sub_I_bmc 00000000 l df *ABS* 00000000 BMC-ST7735_t3.cpp -00018fe0 l F .text.itcm 00000024 __tcf_0 -00019004 l F .text.itcm 00000044 _GLOBAL__sub_I__dma_dummy_rx +000190c4 l F .text.itcm 00000024 __tcf_0 +000190e8 l F .text.itcm 00000044 _GLOBAL__sub_I__dma_dummy_rx 00000000 l df *ABS* 00000000 SPI.cpp -00026b94 l F .text.itcm 00000048 _GLOBAL__sub_I__ZN8SPIClass5beginEv +00026c80 l F .text.itcm 00000048 _GLOBAL__sub_I__ZN8SPIClass5beginEv 00000000 l df *ABS* 00000000 bluetooth.cpp -00026be0 l F .text.itcm 00000024 _GLOBAL__sub_I_em_rx_tx2 +00026ccc l F .text.itcm 00000024 _GLOBAL__sub_I_em_rx_tx2 00000000 l df *ABS* 00000000 joystick.cpp -000280e0 l F .text.itcm 00000028 _GLOBAL__sub_I_ack_rvd +000281cc l F .text.itcm 00000028 _GLOBAL__sub_I_ack_rvd 00000000 l df *ABS* 00000000 HardwareSerial1.cpp -00029c40 l F .text.itcm 00000074 _GLOBAL__sub_I_IRQHandler_Serial1 -2000b4b8 l O .bss 00000040 rx_buffer1 -2000b538 l O .bss 00000040 tx_buffer1 +00029d2c l F .text.itcm 00000074 _GLOBAL__sub_I_IRQHandler_Serial1 +2000b4d8 l O .bss 00000040 rx_buffer1 +2000b558 l O .bss 00000040 tx_buffer1 20000fd8 l O .data 00000064 UART6_Hardware 00000000 l df *ABS* 00000000 HardwareSerial3.cpp -00029cc0 l F .text.itcm 00000078 _GLOBAL__sub_I_IRQHandler_Serial3 -2000b4f8 l O .bss 00000040 rx_buffer3 -2000b578 l O .bss 00000028 tx_buffer3 -20004bb8 l O .data 00000064 UART2_Hardware +00029dac l F .text.itcm 00000078 _GLOBAL__sub_I_IRQHandler_Serial3 +2000b518 l O .bss 00000040 rx_buffer3 +2000b598 l O .bss 00000028 tx_buffer3 +20004c78 l O .data 00000064 UART2_Hardware 00000000 l df *ABS* 00000000 BMC.cpp -000027a0 l F .text.itcm 00000050 BMCDisplay::selectMux(unsigned char) [clone .isra.0] +000027a8 l F .text.itcm 00000050 BMCDisplay::selectMux(unsigned char) [clone .isra.0] 60001c5c l O .text.progmem 00000010 BMCGFXFont48pt7b 60001fb4 l O .text.progmem 0000521a BMCGFXFont48pt7bBitmaps 60001cbc l O .text.progmem 000002f8 BMCGFXFont48pt7bGlyphs @@ -98,18 +98,17 @@ SYMBOL TABLE: 6000f830 l O .text.progmem 000002f8 BMCGFXFont10pt7bGlyphs 20000f18 l O .data 00000003 CSWTCH.368 00000000 l df *ABS* 00000000 BMC.events.cpp -00006d14 l F .text.itcm 00000014 BMCStopwatch::getState() [clone .part.0] -00006d28 l F .text.itcm 0000002a BMCFas::getBlockChannel(unsigned short) [clone .part.0] -00006d54 l F .text.itcm 00000058 BMCFas::setPresetNumber(unsigned short) [clone .part.0] -00006dac l F .text.itcm 00000152 bool BMCDisplayHandlerFas::renderTriangle(BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0] -00006f00 l F .text.itcm 00000020 Print::write(char const*) [clone .isra.0] -00006f20 l F .text.itcm 000000d0 BMCDisplay::generateCrc(BMCDataContainer) [clone .isra.0] -00006ff0 l F .text.itcm 0000028c bool BMCDisplayHandlerMain::renderSlider(BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0] -00007280 l F .text.itcm 000003e4 bool BMCDisplayHandlerFas::renderTuner(BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0] -00009110 l F .text.itcm 0000004a BMCFas::toggleBlockChannel(unsigned short, unsigned char, unsigned char) [clone .part.0] -0000a320 l F .text.itcm 00000050 BMCDisplay::selectMux(unsigned char) [clone .isra.0] -0000a6ac l F .text.itcm 0000015e BMC_OLED::renderLine(char const*, unsigned char, unsigned char, unsigned char, unsigned char, bool) [clone .isra.0] -0000a80c l F .text.itcm 000001d0 BMC_OLED::print(BMCDataContainer, char*) [clone .isra.0] +00006d84 l F .text.itcm 00000014 BMCStopwatch::getState() [clone .part.0] +00006d98 l F .text.itcm 0000002a BMCFas::getBlockChannel(unsigned short) [clone .part.0] +00006dc4 l F .text.itcm 00000058 BMCFas::setPresetNumber(unsigned short) [clone .part.0] +00006e1c l F .text.itcm 00000152 bool BMCDisplayHandlerFas::renderTriangle(BMC_SSD1306&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0] +00006f70 l F .text.itcm 00000020 Print::write(char const*) [clone .isra.0] +00006f90 l F .text.itcm 0000028c bool BMCDisplayHandlerMain::renderSlider(BMC_SSD1306&, unsigned short&, unsigned short&, BMCDataContainer, BMCDiplayHandlerData, bool) [clone .isra.0] +00007220 l F .text.itcm 000003e4 bool BMCDisplayHandlerFas::renderTuner(BMC_SSD1306&, BMCTunerData&, BMCDiplayHandlerData, bool) [clone .isra.0] +000090b0 l F .text.itcm 0000004a BMCFas::toggleBlockChannel(unsigned short, unsigned char, unsigned char) [clone .part.0] +0000a2c4 l F .text.itcm 00000050 BMCDisplay::selectMux(unsigned char) [clone .isra.0] +0000a650 l F .text.itcm 0000015e BMC_OLED::renderLine(char const*, unsigned char, unsigned char, unsigned char, unsigned char, bool) [clone .isra.0] +0000a7b0 l F .text.itcm 000001d0 BMC_OLED::print(BMCDataContainer, char*) [clone .isra.0] 6000fec4 l O .text.progmem 00000010 BMCGFXFont48pt7b 6001021c l O .text.progmem 0000521a BMCGFXFont48pt7bBitmaps 6000ff24 l O .text.progmem 000002f8 BMCGFXFont48pt7bGlyphs @@ -129,10 +128,10 @@ SYMBOL TABLE: 6001dd90 l O .text.progmem 0000039b BMCGFXFont10pt7bBitmaps 6001da98 l O .text.progmem 000002f8 BMCGFXFont10pt7bGlyphs 20000f1c l O .data 00000028 CSWTCH.677 -20000fac l O .data 00000003 CSWTCH.852 +20000fac l O .data 00000003 CSWTCH.853 00000000 l df *ABS* 00000000 BMC-SSD1306.cpp -000185d8 l F .text.itcm 00000088 BMC_SSD1306::drawFastHLineInternal(short, short, short, unsigned short) [clone .part.0] -00018660 l F .text.itcm 00000160 BMC_SSD1306::drawFastVLineInternal(short, short, short, unsigned short) [clone .part.0] +000186bc l F .text.itcm 00000088 BMC_SSD1306::drawFastHLineInternal(short, short, short, unsigned short) [clone .part.0] +00018744 l F .text.itcm 00000160 BMC_SSD1306::drawFastVLineInternal(short, short, short, unsigned short) [clone .part.0] 6001e12c l O .text.progmem 00000008 BMC_SSD1306::drawFastVLineInternal(short, short, short, unsigned short)::premask 6001e134 l O .text.progmem 00000008 BMC_SSD1306::drawFastVLineInternal(short, short, short, unsigned short)::postmask 6001e13c l O .text.progmem 00000005 BMC_SSD1306::display()::dlist1 @@ -149,8 +148,8 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 serialEvent1.cpp 00000000 l df *ABS* 00000000 serialEvent3.cpp 00000000 l df *ABS* 00000000 usb_desc.c -200051b4 l O .data 00000012 device_descriptor -200051c8 l O .data 00000021 seremu_report_desc +20005274 l O .data 00000012 device_descriptor +20005288 l O .data 00000021 seremu_report_desc 6001e380 l O .text.progmem 0000000a qualifier_descriptor 00000000 l df *ABS* 00000000 BMC.debug.cpp 00003670 l F .text.itcm 00000012 Print::println(int) [clone .isra.0] @@ -167,13 +166,13 @@ SYMBOL TABLE: 20000fb0 l O .data 00000028 CSWTCH.98 00000000 l df *ABS* 00000000 BMC.hardware.leds.cpp 00000000 l df *ABS* 00000000 BMC.hardware.pixels.cpp -00014438 l F .text.itcm 00000004 BMCPixels::getDefaultColor(unsigned short) [clone .isra.0] +00014504 l F .text.itcm 00000004 BMCPixels::getDefaultColor(unsigned short) [clone .isra.0] 20000f44 l O .data 00000028 CSWTCH.71 20000f6c l O .data 00000040 CSWTCH.73 00000000 l df *ABS* 00000000 BMC.layers.cpp -00014e50 l F .text.itcm 000002f0 BMC::setLayer(unsigned char, bool, bool) [clone .part.0] +00014f1c l F .text.itcm 000002f0 BMC::setLayer(unsigned char, bool, bool) [clone .part.0] 00000000 l df *ABS* 00000000 BMC.midi.cpp -0001523c l F .text.itcm 00000078 BMCDawLogicControl::incomingSysEx(BMCMidiMessage) [clone .part.0] +00015308 l F .text.itcm 00000078 BMCDawLogicControl::incomingSysEx(BMCMidiMessage) [clone .part.0] 00000000 l df *ABS* 00000000 BMC.sketchBytes.cpp 00000000 l df *ABS* 00000000 BMC.sketchStream.cpp 00000000 l df *ABS* 00000000 BMC.tempoToTap.cpp @@ -182,90 +181,90 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 BMC-ILI9341.cpp 00000000 l df *ABS* 00000000 BMC-Editor.backup.cpp 00000000 l df *ABS* 00000000 BMC-Editor.cpp -00019898 l F .text.itcm 00000428 BMCEditor::storeErase(bool) [clone .isra.0] +00019978 l F .text.itcm 00000428 BMCEditor::storeErase(bool) [clone .isra.0] 00000000 l df *ABS* 00000000 BMC-Editor.midi.cpp 00000000 l df *ABS* 00000000 BMC-Editor.midi.global.cpp -0001ac68 l F .text.itcm 00000028 BMCMidiMessage::appendSysExByte(unsigned char, bool) [clone .isra.0] -0001ac90 l F .text.itcm 00000020 Print::write(char const*) [clone .isra.0] -0001acb0 l F .text.itcm 00000024 Print::println(char const*) [clone .isra.0] -0001af24 l F .text.itcm 00000046 BMCEditor::globalSetTime(bool) [clone .part.0] -0001af6c l F .text.itcm 00000182 BMCEditor::globalEditorMessenger(bool) [clone .part.0] -0001b0f0 l F .text.itcm 000000b0 BMCEditor::globalEditorFeedback(bool) [clone .part.0] -0001b21c l F .text.itcm 00000192 void BMCEditor::deviceResponseData<(unsigned char)1, (unsigned char)16, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0] -0001b3b0 l F .text.itcm 00000192 void BMCEditor::deviceResponseData<(unsigned char)1, (unsigned char)8, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0] -0001b544 l F .text.itcm 00000170 void BMCEditor::deviceResponseData<(unsigned char)1, (unsigned char)1, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0] -0001b6b4 l F .text.itcm 000001b8 void BMCEditor::deviceResponseData<(unsigned char)6, (unsigned char)6, unsigned char>(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0] -0001b86c l F .text.itcm 00000182 void BMCEditor::deviceResponseData<(unsigned char)0, (unsigned char)6, unsigned char>(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0] -0001ba64 l F .text.itcm 00000426 BMCEditor::globalBuildInfoMessage() [clone .part.0] -0001be8c l F .text.itcm 000000a8 BMCEditor::globalEditorMetrics() [clone .part.0] -0001c02c l F .text.itcm 00000180 BMCEditor::saveSetListSong(unsigned short) [clone .part.0] -0001c1ac l F .text.itcm 00000180 BMCEditor::saveSetList(unsigned char) [clone .part.0] -0001c32c l F .text.itcm 00000180 BMCEditor::saveGlobalButton(unsigned char) [clone .part.0] -0001c4ac l F .text.itcm 00000170 BMCEditor::saveTempoToTap(unsigned char) [clone .part.0] -0001c61c l F .text.itcm 0000017c BMCEditor::savePotCalibration(unsigned short) [clone .part.0] -0001c798 l F .text.itcm 0000017c BMCEditor::saveAuxJack(unsigned char) [clone .part.0] -0001c914 l F .text.itcm 0000016c BMCEditor::saveTrigger(unsigned char) [clone .part.0] -0001ca80 l F .text.itcm 0000016c BMCEditor::saveTimedEvent(unsigned char) [clone .part.0] -0001cbec l F .text.itcm 00000180 BMCEditor::savePreset(unsigned short) [clone .part.0] -0001cd6c l F .text.itcm 00000180 BMCEditor::saveCustomSysEx(unsigned char) [clone .part.0] -0001ceec l F .text.itcm 00000170 BMCEditor::saveGlobalLed(unsigned char) [clone .part.0] -0001d800 l F .text.itcm 0000015a void BMCEditor::incomingMessageDeviceWrite<(unsigned char)1, (unsigned char)8, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0] -0001d95c l F .text.itcm 00000174 void BMCEditor::incomingMessageDeviceWrite<(unsigned char)1, (unsigned char)16, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0] -0001dad0 l F .text.itcm 00000164 void BMCEditor::incomingMessageDeviceWrite<(unsigned char)1, (unsigned char)1, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0] -0001dc34 l F .text.itcm 00000176 void BMCEditor::incomingMessageDeviceWrite<(unsigned char)6, (unsigned char)6, unsigned char>(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0] -0001ddac l F .text.itcm 00000114 void BMCEditor::incomingMessageDeviceWrite<(unsigned char)0, (unsigned char)6, unsigned char>(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0] -0001dec0 l F .text.itcm 0000033c BMCEditor::storeErase(bool) [clone .isra.0] -0001e2bc l F .text.itcm 000000c8 BMCEditor::globalEditorErase(bool) [clone .part.0] +0001ad48 l F .text.itcm 00000028 BMCMidiMessage::appendSysExByte(unsigned char, bool) [clone .isra.0] +0001ad70 l F .text.itcm 00000020 Print::write(char const*) [clone .isra.0] +0001ad90 l F .text.itcm 00000024 Print::println(char const*) [clone .isra.0] +0001b004 l F .text.itcm 00000046 BMCEditor::globalSetTime(bool) [clone .part.0] +0001b04c l F .text.itcm 00000182 BMCEditor::globalEditorMessenger(bool) [clone .part.0] +0001b1d0 l F .text.itcm 000000b0 BMCEditor::globalEditorFeedback(bool) [clone .part.0] +0001b2fc l F .text.itcm 00000192 void BMCEditor::deviceResponseData<(unsigned char)1, (unsigned char)16, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0] +0001b490 l F .text.itcm 00000192 void BMCEditor::deviceResponseData<(unsigned char)1, (unsigned char)8, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0] +0001b624 l F .text.itcm 00000170 void BMCEditor::deviceResponseData<(unsigned char)1, (unsigned char)1, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0] +0001b794 l F .text.itcm 000001b8 void BMCEditor::deviceResponseData<(unsigned char)6, (unsigned char)6, unsigned char>(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0] +0001b94c l F .text.itcm 00000182 void BMCEditor::deviceResponseData<(unsigned char)0, (unsigned char)6, unsigned char>(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, BMCMidiMessage&, unsigned short, unsigned char) [clone .isra.0] +0001bb44 l F .text.itcm 00000426 BMCEditor::globalBuildInfoMessage() [clone .part.0] +0001bf6c l F .text.itcm 000000a8 BMCEditor::globalEditorMetrics() [clone .part.0] +0001c10c l F .text.itcm 00000180 BMCEditor::saveSetListSong(unsigned short) [clone .part.0] +0001c28c l F .text.itcm 00000180 BMCEditor::saveSetList(unsigned char) [clone .part.0] +0001c40c l F .text.itcm 00000180 BMCEditor::saveGlobalButton(unsigned char) [clone .part.0] +0001c58c l F .text.itcm 00000170 BMCEditor::saveTempoToTap(unsigned char) [clone .part.0] +0001c6fc l F .text.itcm 0000017c BMCEditor::savePotCalibration(unsigned short) [clone .part.0] +0001c878 l F .text.itcm 0000017c BMCEditor::saveAuxJack(unsigned char) [clone .part.0] +0001c9f4 l F .text.itcm 0000016c BMCEditor::saveTrigger(unsigned char) [clone .part.0] +0001cb60 l F .text.itcm 0000016c BMCEditor::saveTimedEvent(unsigned char) [clone .part.0] +0001cccc l F .text.itcm 00000180 BMCEditor::savePreset(unsigned short) [clone .part.0] +0001ce4c l F .text.itcm 00000180 BMCEditor::saveCustomSysEx(unsigned char) [clone .part.0] +0001cfcc l F .text.itcm 00000170 BMCEditor::saveGlobalLed(unsigned char) [clone .part.0] +0001d8e0 l F .text.itcm 0000015a void BMCEditor::incomingMessageDeviceWrite<(unsigned char)1, (unsigned char)8, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)8, unsigned char>&, unsigned short, short) [clone .isra.0] +0001da3c l F .text.itcm 00000174 void BMCEditor::incomingMessageDeviceWrite<(unsigned char)1, (unsigned char)16, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)16, unsigned char>&, unsigned short, short) [clone .isra.0] +0001dbb0 l F .text.itcm 00000164 void BMCEditor::incomingMessageDeviceWrite<(unsigned char)1, (unsigned char)1, unsigned char>(bmcStoreDevice<(unsigned char)1, (unsigned char)1, unsigned char>&, unsigned short, short) [clone .isra.0] +0001dd14 l F .text.itcm 00000176 void BMCEditor::incomingMessageDeviceWrite<(unsigned char)6, (unsigned char)6, unsigned char>(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0] +0001de8c l F .text.itcm 00000114 void BMCEditor::incomingMessageDeviceWrite<(unsigned char)0, (unsigned char)6, unsigned char>(bmcStoreDevice<(unsigned char)0, (unsigned char)6, unsigned char>&, unsigned short, short) [clone .isra.0] +0001dfa0 l F .text.itcm 0000033c BMCEditor::storeErase(bool) [clone .isra.0] +0001e39c l F .text.itcm 000000c8 BMCEditor::globalEditorErase(bool) [clone .part.0] 00000000 l df *ABS* 00000000 BMC-Editor.midi.layers.cpp -0002208c l F .text.itcm 000001c8 BMCEditor::layerMessageLayerCopySwap(bool) [clone .part.0] +0002216c l F .text.itcm 000001c8 BMCEditor::layerMessageLayerCopySwap(bool) [clone .part.0] 00000000 l df *ABS* 00000000 BMC-Editor.midi.utility.cpp 00000000 l df *ABS* 00000000 BMC-Midi.cpp -00022bfc l F .text.itcm 000002a0 BMCMidi::sendSysEx(unsigned char, unsigned char*, unsigned short, bool, unsigned char, bool) [clone .part.0] -00022e9c l F .text.itcm 0000021c BMCMidi::sendRealTime(unsigned char, unsigned char, unsigned char) [clone .part.0] -00023358 l F .text.itcm 00000082 BMCMidi::scrollPC(unsigned char, unsigned char, unsigned char, bool, bool, unsigned char, unsigned char) [clone .part.0] -000236c4 l F .text.itcm 00000090 BMCMidi::scrollCC(unsigned char, unsigned char, unsigned char, unsigned char, bool, bool, unsigned char, unsigned char) [clone .part.0] +00022cdc l F .text.itcm 000002a8 BMCMidi::sendSysEx(unsigned char, unsigned char*, unsigned short, bool, unsigned char, bool) [clone .part.0] +00022f84 l F .text.itcm 00000200 BMCMidi::sendRealTime(unsigned char, unsigned char, unsigned char) [clone .part.0] +0002341c l F .text.itcm 00000082 BMCMidi::scrollPC(unsigned char, unsigned char, unsigned char, bool, bool, unsigned char, unsigned char) [clone .part.0] +00023788 l F .text.itcm 00000090 BMCMidi::scrollCC(unsigned char, unsigned char, unsigned char, unsigned char, bool, bool, unsigned char, unsigned char) [clone .part.0] 00000000 l df *ABS* 00000000 BMC-24LC256.cpp 00000000 l df *ABS* 00000000 Adafruit_GFX.cpp 2000103c l O .data 00000500 font 00000000 l df *ABS* 00000000 MassStorageDriver.cpp 00000000 l df *ABS* 00000000 ehci.cpp -2000bc7a l O .bss 00000001 port_state -2000b5a0 l O .bss 00000004 active_timers +2000bc9a l O .bss 00000001 port_state +2000b5c0 l O .bss 00000004 active_timers 20006000 l O .bss 00000080 periodictable -2000b5d4 l O .bss 00000100 uframe_bandwidth -2000b6dc l O .bss 00000004 async_followup_last -2000b6e0 l O .bss 00000004 async_followup_first -2000b6e4 l O .bss 00000004 periodic_followup_last -2000b6e8 l O .bss 00000004 periodic_followup_first -2000b6f0 l O .bss 00000004 rootdev +2000b5f4 l O .bss 00000100 uframe_bandwidth +2000b6fc l O .bss 00000004 async_followup_last +2000b700 l O .bss 00000004 async_followup_first +2000b704 l O .bss 00000004 periodic_followup_last +2000b708 l O .bss 00000004 periodic_followup_first +2000b710 l O .bss 00000004 rootdev 00000000 l df *ABS* 00000000 enumeration.cpp -2000b6d4 l O .bss 00000004 available_drivers -2000b6ec l O .bss 00000004 devlist -2000a720 l O .bss 00000800 enumbuf -2000bc6c l O .bss 00000002 enumlen -2000af20 l O .bss 00000008 enumsetup -2000bc80 l O .bss 00000001 USBHost::assign_address()::last_assigned_address +2000b6f4 l O .bss 00000004 available_drivers +2000b70c l O .bss 00000004 devlist +2000a740 l O .bss 00000800 enumbuf +2000bc8c l O .bss 00000002 enumlen +2000af40 l O .bss 00000008 enumsetup +2000bca0 l O .bss 00000001 USBHost::assign_address()::last_assigned_address 00000000 l df *ABS* 00000000 memory.cpp 20006080 l O .bss 00000060 memory_Pipe -2000b5a4 l O .bss 00000024 memory_Device -2000b5c8 l O .bss 00000004 free_Pipe_list +2000b5c4 l O .bss 00000024 memory_Device +2000b5e8 l O .bss 00000004 free_Pipe_list 200060e0 l O .bss 00000100 memory_Transfer -2000b5cc l O .bss 00000004 free_Device_list -2000b5d0 l O .bss 00000004 free_strbuf_list -2000b6d8 l O .bss 00000004 free_Transfer_list +2000b5ec l O .bss 00000004 free_Device_list +2000b5f0 l O .bss 00000004 free_strbuf_list +2000b6f8 l O .bss 00000004 free_Transfer_list 00000000 l df *ABS* 00000000 midi.cpp 00000000 l df *ABS* 00000000 WS2812Serial.cpp 00000000 l df *ABS* 00000000 DMAChannel.cpp 00000000 l df *ABS* 00000000 HardwareSerial.cpp 00000000 l df *ABS* 00000000 Print.cpp -00029d40 l F .text.itcm 0000007e Print::printNumber(unsigned long, unsigned char, unsigned char) [clone .part.0] +00029e2c l F .text.itcm 0000007e Print::printNumber(unsigned long, unsigned char, unsigned char) [clone .part.0] 00000000 l df *ABS* 00000000 WString.cpp 00000000 l df *ABS* 00000000 clockspeed.c 00000000 l df *ABS* 00000000 delay.c 00000000 l df *ABS* 00000000 digital.c 00000000 l df *ABS* 00000000 eeprom.c -2000bc82 l O .bss 00000001 initialized -2000bac4 l O .bss 0000001e sector_index +2000bca2 l O .bss 00000001 initialized +2000bae4 l O .bss 0000001e sector_index 00000000 l df *ABS* 00000000 main.cpp 00000000 l df *ABS* 00000000 memcpy-armv7m.S.o 00000000 l df *ABS* 00000000 new.cpp @@ -273,46 +272,46 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 pwm.c 00000000 l df *ABS* 00000000 usb_inst.cpp 00000000 l df *ABS* 00000000 usb_midi.c -0002b70c l F .text.itcm 00000040 sysex_byte -0002b74c l F .text.itcm 00000060 rx_queue_transfer -0002b7ac l F .text.itcm 00000064 rx_event -0002b810 l F .text.itcm 0000013c usb_midi_write_packed.part.0 -2000ba6c l O .bss 00000004 rx_available -2000ba74 l O .bss 0000000c rx_count -2000bc83 l O .bss 00000001 rx_head -2000ba80 l O .bss 0000000c rx_index -2000ba9c l O .bss 00000007 rx_list -2000bc70 l O .bss 00000002 rx_packet_size -2000bc85 l O .bss 00000001 rx_tail -2000a360 l O .bss 000000c0 rx_transfer -2000bc88 l O .bss 00000001 transmit_previous_timeout -2000bc72 l O .bss 00000002 tx_available -2000bc8a l O .bss 00000001 tx_head -2000bc8c l O .bss 00000001 tx_noautoflush -2000bc76 l O .bss 00000002 tx_packet_size -2000a520 l O .bss 00000080 tx_transfer +0002b7f4 l F .text.itcm 00000040 sysex_byte +0002b834 l F .text.itcm 00000060 rx_queue_transfer +0002b894 l F .text.itcm 00000064 rx_event +0002b8f8 l F .text.itcm 0000013c usb_midi_write_packed.part.0 +2000ba8c l O .bss 00000004 rx_available +2000ba94 l O .bss 0000000c rx_count +2000bca3 l O .bss 00000001 rx_head +2000baa0 l O .bss 0000000c rx_index +2000babc l O .bss 00000007 rx_list +2000bc90 l O .bss 00000002 rx_packet_size +2000bca5 l O .bss 00000001 rx_tail +2000a380 l O .bss 000000c0 rx_transfer +2000bca8 l O .bss 00000001 transmit_previous_timeout +2000bc92 l O .bss 00000002 tx_available +2000bcaa l O .bss 00000001 tx_head +2000bcac l O .bss 00000001 tx_noautoflush +2000bc96 l O .bss 00000002 tx_packet_size +2000a540 l O .bss 00000080 tx_transfer 20200080 l O .bss.dma 00000c00 rx_buffer 20200c80 l O .bss.dma 00000800 txbuffer 00000000 l df *ABS* 00000000 usb_seremu.c -0002c110 l F .text.itcm 0000004c rx_queue_transfer -0002c15c l F .text.itcm 00000058 rx_event -0002c398 l F .text.itcm 00000048 usb_seremu_flush_callback -0002c3e0 l F .text.itcm 0000013c usb_seremu_write.part.0 -2000ba70 l O .bss 00000004 rx_available -2000bc84 l O .bss 00000001 rx_head -2000ba8c l O .bss 00000010 rx_index -2000baa4 l O .bss 00000009 rx_list -2000bc86 l O .bss 00000001 rx_tail -2000a420 l O .bss 00000100 rx_transfer -2000bc89 l O .bss 00000001 transmit_previous_timeout -2000bc74 l O .bss 00000002 tx_available -2000bc8b l O .bss 00000001 tx_head -2000bc8d l O .bss 00000001 tx_noautoflush -2000a5a0 l O .bss 00000180 tx_transfer +0002c1f8 l F .text.itcm 0000004c rx_queue_transfer +0002c244 l F .text.itcm 00000058 rx_event +0002c480 l F .text.itcm 00000048 usb_seremu_flush_callback +0002c4c8 l F .text.itcm 0000013c usb_seremu_write.part.0 +2000ba90 l O .bss 00000004 rx_available +2000bca4 l O .bss 00000001 rx_head +2000baac l O .bss 00000010 rx_index +2000bac4 l O .bss 00000009 rx_list +2000bca6 l O .bss 00000001 rx_tail +2000a440 l O .bss 00000100 rx_transfer +2000bca9 l O .bss 00000001 transmit_previous_timeout +2000bc94 l O .bss 00000002 tx_available +2000bcab l O .bss 00000001 tx_head +2000bcad l O .bss 00000001 tx_noautoflush +2000a5c0 l O .bss 00000180 tx_transfer 20201480 l O .bss.dma 00000100 rx_buffer 20201580 l O .bss.dma 00000300 txbuffer 00000000 l df *ABS* 00000000 yield.cpp -2000bc7e l O .bss 00000001 yield::running +2000bc9e l O .bss 00000001 yield::running 00000000 l df *ABS* 00000000 rtc.c 00000000 l df *ABS* 00000000 serialEvent.cpp 00000000 l df *ABS* 00000000 libm_a-w_fmod.o @@ -334,9 +333,9 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 libc_a-reallocr.o 00000000 l df *ABS* 00000000 libc_a-sprintf.o 00000000 l df *ABS* 00000000 libc_a-findfp.o -0002e1cc l F .text.itcm 00000018 stdio_exit_handler -0002e1e4 l F .text.itcm 00000040 cleanup_stdio -0002e224 l F .text.itcm 000000d4 global_stdio_init.part.0 +0002e2b4 l F .text.itcm 00000018 stdio_exit_handler +0002e2cc l F .text.itcm 00000040 cleanup_stdio +0002e30c l F .text.itcm 000000d4 global_stdio_init.part.0 00000000 l df *ABS* 00000000 libc_a-fwalk.o 00000000 l df *ABS* 00000000 libc_a-memmove.o 00000000 l df *ABS* 00000000 libc_a-memset.o @@ -372,12 +371,12 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 libm_a-s_frexp.o 00000000 l df *ABS* 00000000 libc_a-assert.o 00000000 l df *ABS* 00000000 libc_a-dtoa.o -000316d0 l F .text.itcm 00000126 quorem +000317d0 l F .text.itcm 00000126 quorem 00000000 l df *ABS* 00000000 libc_a-fiprintf.o 00000000 l df *ABS* 00000000 libc_a-svfiprintf.o 00000000 l df *ABS* 00000000 libc_a-vfiprintf.o -0003260c l F .text.itcm 00000076 __sprint_r.part.0 -00033610 l F .text.itcm 00000080 __sbprintf +0003270c l F .text.itcm 00000076 __sprint_r.part.0 +00033710 l F .text.itcm 00000080 __sbprintf 00000000 l df *ABS* 00000000 libc_a-fvwrite.o 00000000 l df *ABS* 00000000 libc_a-wsetup.o 00000000 l df *ABS* 00000000 libc_a-fputwc.o @@ -390,729 +389,731 @@ SYMBOL TABLE: 00000000 l df *ABS* 00000000 libc_a-impure.o 00000000 l df *ABS* 00000000 libc_a-__call_atexit.o 00000000 l df *ABS* 00000000 usb_product_name.c -00033e68 l F .text.itcm 00000008 ___reboot_Teensyduino__veneer -00033e70 l F .text.itcm 00000008 ___ZN7TwoWire5beginEv_veneer -00033e78 l F .text.itcm 00000008 ___init_veneer -60001c00 l F .text.code 00000008 __pwm_init_veneer -60001c08 l F .text.code 00000008 __usb_init_serialnumber_veneer -60001c10 l F .text.code 00000008 ____libc_init_array_veneer -60001c18 l F .text.code 00000008 __memset_veneer -60001c20 l F .text.code 00000008 __main_veneer -60001c28 l F .text.code 00000008 __delay_veneer -60001c30 l F .text.code 00000008 __set_arm_clock_veneer -0001acd4 w F .text.itcm 000001cc BMCBuildData::getUIData(unsigned char, short) -0002e5d4 g F .text.itcm 00000046 stpcpy -000281d4 g F .text.itcm 00000010 USBHost::free_string_buffer(strbuf_t*) -0001a7e0 g F .text.itcm 00000010 BMCEditor::getGlobalOffset() -00005ce8 g F .text.itcm 00000188 BMC::printButtonTrigger(unsigned char, unsigned char, unsigned char) -00028108 g F .text.itcm 00000050 USBHost::init_Device_Pipe_Transfer_memory() -00033e44 g F .text.itcm 00000024 _isatty_r -0002e97c g F .text.itcm 000000ba strcpy -0002c310 g F .text.itcm 00000024 usb_seremu_available -000268e8 g F .text.itcm 000000b0 Adafruit_GFX::getTextBounds(char const*, short, short, short*, short*, unsigned short*, unsigned short*) -00006644 g F .text.itcm 00000560 BMC::ctrlHardware() +00033f68 l F .text.itcm 00000008 ___reboot_Teensyduino__veneer +00033f70 l F .text.itcm 00000008 ___ZN7TwoWire5beginEv_veneer +00033f78 l F .text.itcm 00000008 ___init_veneer +60001c00 l F .text.code 00000008 __main_veneer +60001c08 l F .text.code 00000008 __set_arm_clock_veneer +60001c10 l F .text.code 00000008 __pwm_init_veneer +60001c18 l F .text.code 00000008 __usb_init_serialnumber_veneer +60001c20 l F .text.code 00000008 __delay_veneer +60001c28 l F .text.code 00000008 ____libc_init_array_veneer +60001c30 l F .text.code 00000008 __memset_veneer +0001adb4 w F .text.itcm 000001cc BMCBuildData::getUIData(unsigned char, short) +0002e6bc g F .text.itcm 00000046 stpcpy +000282c0 g F .text.itcm 00000010 USBHost::free_string_buffer(strbuf_t*) +0001a8c0 g F .text.itcm 00000010 BMCEditor::getGlobalOffset() +00005d70 g F .text.itcm 00000188 BMC::printButtonTrigger(unsigned char, unsigned char, unsigned char) +000281f4 g F .text.itcm 00000050 USBHost::init_Device_Pipe_Transfer_memory() +00033f44 g F .text.itcm 00000024 _isatty_r +0002ea5c g F .text.itcm 000000ba strcpy +0002c3f8 g F .text.itcm 00000024 usb_seremu_available +000269d4 g F .text.itcm 000000b0 Adafruit_GFX::getTextBounds(char const*, short, short, short*, short*, unsigned short*, unsigned short*) +000066b0 g F .text.itcm 00000564 BMC::ctrlHardware() 60001828 g F .text.code 00000002 startup_default_late_hook -0002d548 g F .text.itcm 00000012 fabs -0003155c g F .text.itcm 0000002c _lseek_r -0001b1a0 w F .text.itcm 00000032 BMCMidiMessage::appendToSysEx14Bits(unsigned short) -0002c5bc w F .text.itcm 000000f0 yield -00014378 g F .text.itcm 000000c0 BMC::readLeds() -2000bc68 g O .bss 00000004 usb_timer1_callback -000257f0 g F .text.itcm 0000001e Adafruit_GFX::fillScreen(unsigned short) -2000ba34 g O .bss 00000004 em_rx_tx2 +0002d630 g F .text.itcm 00000012 fabs +0003165c g F .text.itcm 0000002c _lseek_r +0001b280 w F .text.itcm 00000032 BMCMidiMessage::appendToSysEx14Bits(unsigned short) +0002c6a4 w F .text.itcm 000000f0 yield +00014444 g F .text.itcm 000000c0 BMC::readLeds() +2000bc88 g O .bss 00000004 usb_timer1_callback +000258dc g F .text.itcm 0000001e Adafruit_GFX::fillScreen(unsigned short) +2000ba54 g O .bss 00000004 em_rx_tx2 6001e27c g O .text.progmem 00000018 usb_string_manufacturer_name_default -000257c4 g F .text.itcm 00000012 Adafruit_GFX::writeFastHLine(short, short, short, unsigned short) -00007fe4 w F .text.itcm 000000c4 BMCSetLists::scrollSet(bool, bool, unsigned char, unsigned char, unsigned char) -2000bb10 g O .bss 00000004 usb_midi_handleProgramChange -2000b238 g O .bss 00000140 Wire1 -0002b6f0 w F .text.itcm 00000004 usb_seremu_class::peek() -000196a8 w F .text.itcm 000001ec BMCEditor::saveSettings() +000258b0 g F .text.itcm 00000012 Adafruit_GFX::writeFastHLine(short, short, short, unsigned short) +00007f84 w F .text.itcm 000000c4 BMCSetLists::scrollSet(bool, bool, unsigned char, unsigned char, unsigned char) +2000bb30 g O .bss 00000004 usb_midi_handleProgramChange +2000b258 g O .bss 00000140 Wire1 +0002b7d8 w F .text.itcm 00000004 usb_seremu_class::peek() +00019788 w F .text.itcm 000001ec BMCEditor::saveSettings() 6001e25c w O .text.progmem 00000001 _serialEventUSB2_default -000233dc g F .text.itcm 000002e8 BMCMidi::sendControlChange(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, bool) -2000b8b4 g O .bss 00000001 __lock___atexit_recursive_mutex -000315b4 g F .text.itcm 0000004c _wcrtomb_r -00027cb0 g F .text.itcm 00000110 USBHost::claim_drivers(Device_struct*) +000234a0 g F .text.itcm 000002e8 BMCMidi::sendControlChange(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, bool) +2000b8d4 g O .bss 00000001 __lock___atexit_recursive_mutex +000316b4 g F .text.itcm 0000004c _wcrtomb_r +00027d9c g F .text.itcm 00000110 USBHost::claim_drivers(Device_struct*) 60001650 g F .text.code 00000034 TwoWire::configSDApin(unsigned char) -00029e74 g F .text.itcm 0000001c Print::println() -00025610 g F .text.itcm 000000ac TwoWire::isr() -000314ec g F .text.itcm 00000020 __sseek -0002e2f8 g F .text.itcm 0000003c __sinit -00033d68 g F .text.itcm 000000b0 __swbuf_r -000271d4 g F .text.itcm 0000015c USBHost::followup_Error() -00028ddc g F .text.itcm 000001ac WS2812Serial::begin() -0002dd90 g F .text.itcm 0000000c __malloc_unlock -2000baf4 g O .bss 00000004 usb_midi_handleAfterTouch +00029f60 g F .text.itcm 0000001c Print::println() +000256fc g F .text.itcm 000000ac TwoWire::isr() +000315ec g F .text.itcm 00000020 __sseek +0002e3e0 g F .text.itcm 0000003c __sinit +00033e68 g F .text.itcm 000000b0 __swbuf_r +000272c0 g F .text.itcm 0000015c USBHost::followup_Error() +00028ec8 g F .text.itcm 000001ac WS2812Serial::begin() +0002de78 g F .text.itcm 0000000c __malloc_unlock +2000bb14 g O .bss 00000004 usb_midi_handleAfterTouch 000000c8 w F .text.itcm 00000002 USBDriver::control(Transfer_struct const*) -00015544 w F .text.itcm 0000011c BMCMidi::routing(BMCMidiMessage&) -2000bc7d g O .bss 00000001 USBHost::enumeration_busy -000026f4 g F .text.itcm 000000ac BMC::stopwatchCmd(unsigned char, unsigned char, unsigned char, unsigned char) -00028248 g F .text.itcm 00000030 USBHost::contribute_String_Buffers(strbuf_t*, unsigned long) -00026734 g F .text.itcm 000001b2 Adafruit_GFX::charBounds(unsigned char, short*, short*, short*, short*, short*, short*) +00015610 w F .text.itcm 0000010e BMCMidi::routing(BMCMidiMessage&) +2000bc9d g O .bss 00000001 USBHost::enumeration_busy +000026fc g F .text.itcm 000000ac BMC::stopwatchCmd(unsigned char, unsigned char, unsigned char, unsigned char) +00028334 g F .text.itcm 00000030 USBHost::contribute_String_Buffers(strbuf_t*, unsigned long) +00026820 g F .text.itcm 000001b2 Adafruit_GFX::charBounds(unsigned char, short*, short*, short*, short*, short*, short*) 600017cc g F .text.code 00000054 analog_init -0002a6b0 g F .text.itcm 00000048 eeprom_initialize -00001a5c w F .text.itcm 0000010c BMC::runLayerChanged() -20004ba4 g O .data 00000004 F_CPU_ACTUAL -2000bb28 g O .bss 00000004 usb_midi_handleSysExComplete -000225f0 g F .text.itcm 00000034 BMCEditor::layerProcessMessage() -00019154 g F .text.itcm 00000114 BMCEditor::backupEventMessage(unsigned short) -0002e394 g F .text.itcm 000000f8 memmove -0001d084 w F .text.itcm 00000170 BMCEditor::saveDevicePorts(unsigned char) -00029618 g F .text.itcm 00000072 HardwareSerial::peek() -00028198 g F .text.itcm 00000010 USBHost::allocate_Transfer() -00030ac4 g F .text.itcm 0000004c _Balloc -00033e8c g .ARM.exidx 00000000 __exidx_end -2000bc94 g O .bss 00000001 usb_midi_msg_type -00013f20 g F .text.itcm 00000130 BMC::assignLeds() -2000bc7b g O .bss 00000001 EventResponder::runningFromYield -00015660 w F .text.itcm 000002ac BMCMidiClock::read(bool, bool) -0000afc0 w F .text.itcm 000002a4 BMCDisplay::renderFasLooper(BMCDataContainer) -200047ec g O .data 000000a0 pwm_pin_info -00009998 w F .text.itcm 0000018a BMCBeatBuddy::tempo(unsigned short) -0002ad80 g F .text.itcm 00000060 tempmonGetTemp -00027b34 g F .text.itcm 00000038 USBHost::Task() -00029dc0 g F .text.itcm 00000050 Print::write(unsigned char const*, unsigned int) -000285a8 g F .text.itcm 0000000c MIDIDeviceBase::rx_callback(Transfer_struct const*) -20004c1c g O .data 00000004 __atexit_recursive_mutex -000151f8 g F .text.itcm 00000020 BMC::prevLayer() -0002e684 g F .text.itcm 0000000c __errno +0002a798 g F .text.itcm 00000048 eeprom_initialize +00001a50 w F .text.itcm 0000010c BMC::runLayerChanged() +20004c64 g O .data 00000004 F_CPU_ACTUAL +2000bb48 g O .bss 00000004 usb_midi_handleSysExComplete +000226d0 g F .text.itcm 00000034 BMCEditor::layerProcessMessage() +00019238 g F .text.itcm 00000114 BMCEditor::backupEventMessage(unsigned short) +0002e47c g F .text.itcm 000000f8 memmove +0001d164 w F .text.itcm 00000170 BMCEditor::saveDevicePorts(unsigned char) +00029704 g F .text.itcm 00000072 HardwareSerial::peek() +00028284 g F .text.itcm 00000010 USBHost::allocate_Transfer() +00030bc4 g F .text.itcm 0000004c _Balloc +00033f8c g .ARM.exidx 00000000 __exidx_end +2000bcb4 g O .bss 00000001 usb_midi_msg_type +00013fe8 g F .text.itcm 00000132 BMC::assignLeds() +2000bc9b g O .bss 00000001 EventResponder::runningFromYield +00015720 w F .text.itcm 000002ac BMCMidiClock::read(bool, bool) +0000b088 w F .text.itcm 000002a4 BMCDisplay::renderFasLooper(BMCDataContainer) +200048ac g O .data 000000a0 pwm_pin_info +00009938 w F .text.itcm 0000018a BMCBeatBuddy::tempo(unsigned short) +0002ae68 g F .text.itcm 00000060 tempmonGetTemp +00027c20 g F .text.itcm 00000038 USBHost::Task() +00029eac g F .text.itcm 00000050 Print::write(unsigned char const*, unsigned int) +00028694 g F .text.itcm 0000000c MIDIDeviceBase::rx_callback(Transfer_struct const*) +20004cdc g O .data 00000004 __atexit_recursive_mutex +000152c4 g F .text.itcm 00000020 BMC::prevLayer() +0002e76c g F .text.itcm 0000000c __errno 60001000 g O .text.headers 00000020 ImageVectorTable -0001ee04 g F .text.itcm 00001f6e BMCEditor::incomingMessageDevice(bool) -0002b6f4 w F .text.itcm 00000004 usb_seremu_class::read() -00026b68 w F .text.itcm 0000002c SPIClass::SPIClass(unsigned int, unsigned int) -2000b6fc g O .bss 00000004 EventResponder::firstInterrupt -0002b694 g F .text.itcm 00000004 usb_transfer_status -00027c30 g F .text.itcm 0000007e USBHost::convertStringDescriptorToASCIIString(unsigned char, Device_struct*, Transfer_struct const*) -00018934 g F .text.itcm 00000078 BMC_SSD1306::dim(bool) -2000ba2c g O .bss 00000004 __stdio_exit_handler -00025074 g F .text.itcm 000000d8 BMC24LC256::read(unsigned long, unsigned char*, unsigned int) -00025af4 g F .text.itcm 00000118 Adafruit_GFX::writeLine(short, short, short, short, unsigned short) -2000b038 g O .bss 00000060 Serial1 -20005216 g O .data 00000001 analog_write_res -0002a03c g F .text.itcm 0000003a String::String(String const&) -000188ac g F .text.itcm 00000018 BMC_SSD1306::BMC_SSD1306(unsigned char, unsigned char) -0002c564 g F .text.itcm 00000058 usb_seremu_flush_output -0002c51c g F .text.itcm 0000002c usb_seremu_putchar -00033e18 g F .text.itcm 0000002c _fstat_r -200044b4 g O .data 00000280 digital_pin_to_info_PGM -0002c7a8 g F .text.itcm 00000298 __ieee754_fmod -000018c0 w F .text.itcm 0000019c BMCSync::BMCSync(BMCMidi&, BMCMidiClock&, BMCCallbacks&) -2000ba48 g O .bss 00000004 errno -0002d670 g F .text.itcm 00000110 floor +0001eee4 g F .text.itcm 00001f6e BMCEditor::incomingMessageDevice(bool) +0002b7dc w F .text.itcm 00000004 usb_seremu_class::read() +00026c54 w F .text.itcm 0000002c SPIClass::SPIClass(unsigned int, unsigned int) +2000b71c g O .bss 00000004 EventResponder::firstInterrupt +0002b77c g F .text.itcm 00000004 usb_transfer_status +00027d1c g F .text.itcm 0000007e USBHost::convertStringDescriptorToASCIIString(unsigned char, Device_struct*, Transfer_struct const*) +00018a18 g F .text.itcm 00000078 BMC_SSD1306::dim(bool) +2000ba4c g O .bss 00000004 __stdio_exit_handler +00025160 g F .text.itcm 000000d8 BMC24LC256::read(unsigned long, unsigned char*, unsigned int) +00025be0 g F .text.itcm 00000118 Adafruit_GFX::writeLine(short, short, short, short, unsigned short) +2000b058 g O .bss 00000060 Serial1 +200052d6 g O .data 00000001 analog_write_res +0002a124 g F .text.itcm 0000003a String::String(String const&) +00018990 g F .text.itcm 00000018 BMC_SSD1306::BMC_SSD1306(unsigned char, unsigned char) +0002c64c g F .text.itcm 00000058 usb_seremu_flush_output +00017528 w F .text.itcm 000001e2 BMCSerialMIDI<(unsigned char)6, HardwareSerial>::_read() +0002c604 g F .text.itcm 0000002c usb_seremu_putchar +00033f18 g F .text.itcm 0000002c _fstat_r +20004574 g O .data 00000280 digital_pin_to_info_PGM +0002c890 g F .text.itcm 00000298 __ieee754_fmod +000018b4 w F .text.itcm 0000019c BMCSync::BMCSync(BMCMidi&, BMCMidiClock&, BMCCallbacks&) +2000ba68 g O .bss 00000004 errno +0002d758 g F .text.itcm 00000110 floor 6001e1bc g O .text.progmem 00000050 TwoWire::i2c3_hardware -00033e88 g .text.itcm 00000000 _etext -00026a8c g F .text.itcm 000000dc _spi_dma_rxISR0() +00033f88 g .text.itcm 00000000 _etext +00026b78 g F .text.itcm 000000dc _spi_dma_rxISR0() 200056c0 g .bss 00000000 _sbss -00027330 g F .text.itcm 000001e0 USBHost::isr() -00012bdc w F .text.itcm 0000012c BMCButtonsDualHandler::read(unsigned char, unsigned char, bool) -000258e8 g F .text.itcm 000000a4 Adafruit_GFX::drawLine(short, short, short, short, unsigned short) -00008314 w F .text.itcm 000000d0 BMCSetLists::getPartName(unsigned char, char*) -2000bb3c g O .bss 00000004 usb_midi_handleVelocityChange -00027b8c g F .text.itcm 000000a4 USBHost::new_Device(unsigned long, unsigned long, unsigned long) -000295f0 g F .text.itcm 00000026 HardwareSerial::available() -00011bc8 g F .text.itcm 000001f4 BMC::assignAuxJacks() -0002c560 g F .text.itcm 00000004 usb_seremu_write_buffer_free -0002a61c g F .text.itcm 00000024 digitalRead -00009b6c w F .text.itcm 000001ba BMCCustomSysEx::send(unsigned char, unsigned char, unsigned char, unsigned char) +0002741c g F .text.itcm 000001e0 USBHost::isr() +00012cb4 w F .text.itcm 0000012c BMCButtonsDualHandler::read(unsigned char, unsigned char, bool) +000259d4 g F .text.itcm 000000a4 Adafruit_GFX::drawLine(short, short, short, short, unsigned short) +000082b4 w F .text.itcm 000000d0 BMCSetLists::getPartName(unsigned char, char*) +2000bb5c g O .bss 00000004 usb_midi_handleVelocityChange +00027c78 g F .text.itcm 000000a4 USBHost::new_Device(unsigned long, unsigned long, unsigned long) +000296dc g F .text.itcm 00000026 HardwareSerial::available() +00011ca4 g F .text.itcm 000001f4 BMC::assignAuxJacks() +0002c648 g F .text.itcm 00000004 usb_seremu_write_buffer_free +0002a704 g F .text.itcm 00000024 digitalRead +00009b0c w F .text.itcm 000001ba BMCCustomSysEx::send(unsigned char, unsigned char, unsigned char, unsigned char) 6001e38c g *ABS* 00000000 _stextload -000187c0 g F .text.itcm 00000076 BMC_SSD1306::drawFastHLine(short, short, short, unsigned short) +000188a4 g F .text.itcm 00000076 BMC_SSD1306::drawFastHLine(short, short, short, unsigned short) 00000098 g F .text.itcm 0000000c loop -0002aa24 g F .text.itcm 0000007a flexpwm_init -0002a8a4 g F .text.itcm 000000b4 flexpwmWrite -0002ba20 g F .text.itcm 000000a0 usb_midi_flush_output +0002ab0c g F .text.itcm 0000007a flexpwm_init +0002a98c g F .text.itcm 000000b4 flexpwmWrite +0002bb08 g F .text.itcm 000000a0 usb_midi_flush_output 6000182c g F .text.code 00000004 startup_debug_reset -0001d1f4 w F .text.itcm 00000184 BMCEditor::saveShortCuts(unsigned char) -00024e48 g F .text.itcm 00000026 BMCMidi::scrollPC(unsigned char, unsigned char, unsigned char, bool, bool, unsigned char, unsigned char) -0002b558 g F .text.itcm 00000064 usb_config_rx -0002ab94 w F .text.itcm 00000002 serialEvent1() -00015c04 g F .text.itcm 00001558 BMC::incomingMidi(BMCMidiMessage) +0001d2d4 w F .text.itcm 00000184 BMCEditor::saveShortCuts(unsigned char) +00024f34 g F .text.itcm 00000026 BMCMidi::scrollPC(unsigned char, unsigned char, unsigned char, bool, bool, unsigned char, unsigned char) +0002b640 g F .text.itcm 00000064 usb_config_rx +0002ac7c w F .text.itcm 00000002 serialEvent1() +00015cc4 g F .text.itcm 00001550 BMC::incomingMidi(BMCMidiMessage) 000000cc w F .text.itcm 00000002 USBDriver::Task() -0002b704 w F .text.itcm 00000008 usb_seremu_class::write(unsigned char const*, unsigned int) -0002bd38 g F .text.itcm 000003d8 usb_midi_read -00027dc0 g F .text.itcm 000002a0 USBHost::enumeration(Transfer_struct const*) -0001a85c g F .text.itcm 00000010 BMCEditor::getGlobalButtonOffset(unsigned short) -00029acc g F .text.itcm 00000004 HardwareSerial::write(unsigned char) -2000bb30 g O .bss 00000004 usb_midi_handleSystemReset -00025c0c g F .text.itcm 00000030 Adafruit_GFX::Adafruit_GFX(short, short) -000253d4 g F .text.itcm 000000fc TwoWire::endTransmission(unsigned char) -0002ca40 g F .text.itcm 00000294 __ieee754_rem_pio2 -0002199c g F .text.itcm 00000212 BMCEditor::globalSketchBytesData() -2000b6f8 g O .bss 00000004 EventResponder::lastInterrupt -2000bc78 g O .bss 00000002 usb_midi_msg_sysex_len -0002a708 g F .text.itcm 00000134 memcpy -0001a7a4 g F .text.itcm 00000016 BMCEditor::connectionHasChanged() -00008128 w F .text.itcm 00000080 BMCSetLists::scrollPart(bool, bool, unsigned char, unsigned char, unsigned char) -2000bb14 g O .bss 00000004 usb_midi_handleRealTimeSystem -00017e3c g F .text.itcm 000000fc BMC::streamToSketch(unsigned char, int, char*) +0002b7ec w F .text.itcm 00000008 usb_seremu_class::write(unsigned char const*, unsigned int) +0002be20 g F .text.itcm 000003d8 usb_midi_read +00027eac g F .text.itcm 000002a0 USBHost::enumeration(Transfer_struct const*) +0001a93c g F .text.itcm 00000010 BMCEditor::getGlobalButtonOffset(unsigned short) +00029bb8 g F .text.itcm 00000004 HardwareSerial::write(unsigned char) +2000bb50 g O .bss 00000004 usb_midi_handleSystemReset +00025cf8 g F .text.itcm 00000030 Adafruit_GFX::Adafruit_GFX(short, short) +000254c0 g F .text.itcm 000000fc TwoWire::endTransmission(unsigned char) +0002cb28 g F .text.itcm 00000294 __ieee754_rem_pio2 +00021a7c g F .text.itcm 00000212 BMCEditor::globalSketchBytesData() +2000b718 g O .bss 00000004 EventResponder::lastInterrupt +2000bc98 g O .bss 00000002 usb_midi_msg_sysex_len +0002a7f0 g F .text.itcm 00000134 memcpy +0001a884 g F .text.itcm 00000016 BMCEditor::connectionHasChanged() +000080c8 w F .text.itcm 00000080 BMCSetLists::scrollPart(bool, bool, unsigned char, unsigned char, unsigned char) +2000bb34 g O .bss 00000004 usb_midi_handleRealTimeSystem +00017f20 g F .text.itcm 000000fc BMC::streamToSketch(unsigned char, int, char*) 200056c0 g O .data 00000000 .hidden __TMC_END__ -0002ef80 g F .text.itcm 00001b44 _svfprintf_r -00014964 g F .text.itcm 00000010 BMC::setupPixels() -2000bae8 g O .bss 00000004 systick_millis_count -000230e8 g F .text.itcm 00000270 BMCMidi::sendProgramChange(unsigned char, unsigned char, unsigned char, unsigned char) -00025394 g F .text.itcm 00000040 TwoWire::wait_idle() -2000bc8e g O .bss 00000001 usb_configuration +0002f080 g F .text.itcm 00001b44 _svfprintf_r +00014a30 g F .text.itcm 00000010 BMC::setupPixels() +2000bb08 g O .bss 00000004 systick_millis_count +000231b4 g F .text.itcm 00000268 BMCMidi::sendProgramChange(unsigned char, unsigned char, unsigned char, unsigned char) +00025480 g F .text.itcm 00000040 TwoWire::wait_idle() +2000bcae g O .bss 00000001 usb_configuration 60000000 g O .text.headers 00000200 FlexSPI_NOR_Config -0001590c w F .text.itcm 00000144 BMCDawLogicControl::incomingSysEx(BMCMidiMessage) -0002a958 g F .text.itcm 000000cc analogWrite -0001bfa8 w F .text.itcm 00000084 BMCStorage::debugStopTiming() +000159cc w F .text.itcm 00000144 BMCDawLogicControl::incomingSysEx(BMCMidiMessage) +0002aa40 g F .text.itcm 000000cc analogWrite +0001c088 w F .text.itcm 00000084 BMCStorage::debugStopTiming() 6001e27c w O .text.progmem 00000018 usb_string_manufacturer_name -0001a8c0 g F .text.itcm 0000000c BMCEditor::getTimedEventOffset(unsigned short) -0001443c w F .text.itcm 0000028c BMCPixels::begin() -00011dbc g F .text.itcm 00000046 BMC::setupAuxJacks() -0002d804 g F .text.itcm 00000010 malloc +0001a9a0 g F .text.itcm 0000000c BMCEditor::getTimedEventOffset(unsigned short) +00014508 w F .text.itcm 0000028c BMCPixels::begin() +00011e98 g F .text.itcm 00000044 BMC::setupAuxJacks() +0002d8ec g F .text.itcm 00000010 malloc 6001e16c g O .text.progmem 00000050 TwoWire::i2c1_hardware -000188d4 g F .text.itcm 0000001e BMC_SSD1306::clearDisplay() -0002ad5c w F .text.itcm 0000000a _fstat -0002517c w F .text.itcm 0000001e TwoWire::read() -0002829c g F .text.itcm 00000008 MIDIDeviceBase::disconnect() -00031690 g F .text.itcm 00000040 __assert_func -00026998 w F .text.itcm 00000016 EventResponder::triggerEvent(int, void*) -0001a898 g F .text.itcm 0000000e BMCEditor::getCustomSysExOffset(unsigned short) -000239fc g F .text.itcm 000002a8 BMCMidi::sendNoteOff(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) +000189b8 g F .text.itcm 0000001e BMC_SSD1306::clearDisplay() +0002ae44 w F .text.itcm 0000000a _fstat +00025268 w F .text.itcm 0000001e TwoWire::read() +00028388 g F .text.itcm 00000008 MIDIDeviceBase::disconnect() +00031790 g F .text.itcm 00000040 __assert_func +00026a84 w F .text.itcm 00000016 EventResponder::triggerEvent(int, void*) +0001a978 g F .text.itcm 0000000e BMCEditor::getCustomSysExOffset(unsigned short) +00023ac4 g F .text.itcm 000002ac BMCMidi::sendNoteOff(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) 200002f8 g O .data 000000c8 __mprec_tens 60001ab4 g F .text.code 000000e8 usb_init -000188ac g F .text.itcm 00000018 BMC_SSD1306::BMC_SSD1306(unsigned char, unsigned char) -2000bc7f w O .bss 00000001 BMCSerialMonitor::read(char*)::i -0002d368 g F .text.itcm 00000130 __kernel_cos -00025810 g F .text.itcm 00000002 Adafruit_GFX::invertDisplay(bool) -00018ae8 g F .text.itcm 000004f8 BMC_SSD1306::begin(unsigned char, unsigned char) -2000b8f0 g O .bss 00000004 __malloc_top_pad -2000af80 g O .bss 00000050 SPI1 -2000baec g O .bss 00000004 systick_safe_read -0002528c g F .text.itcm 00000108 TwoWire::force_clock() -000081a8 w F .text.itcm 000000b0 BMCSetLists::getSetName(unsigned char, char*) -0001a824 g F .text.itcm 0000000a BMCEditor::getSketchBytesOffset(unsigned short) +00018990 g F .text.itcm 00000018 BMC_SSD1306::BMC_SSD1306(unsigned char, unsigned char) +2000bc9f w O .bss 00000001 BMCSerialMonitor::read(char*)::i +0002d450 g F .text.itcm 00000130 __kernel_cos +000258fc g F .text.itcm 00000002 Adafruit_GFX::invertDisplay(bool) +00018bcc g F .text.itcm 000004f8 BMC_SSD1306::begin(unsigned char, unsigned char) +2000b910 g O .bss 00000004 __malloc_top_pad +2000afa0 g O .bss 00000050 SPI1 +2000bb0c g O .bss 00000004 systick_safe_read +00025378 g F .text.itcm 00000108 TwoWire::force_clock() +00008148 w F .text.itcm 000000b0 BMCSetLists::getSetName(unsigned char, char*) +0001a904 g F .text.itcm 0000000a BMCEditor::getSketchBytesOffset(unsigned short) aaaabfff g *ABS* 00000000 _flexram_bank_config -20004c24 g O .data 00000000 .hidden __dso_handle -0001728c w F .text.itcm 000001e2 BMCSerialMIDI<(unsigned char)1, HardwareSerial>::_read() -0000ad88 w F .text.itcm 00000238 BMCDisplay::renderFasTuner(BMCDataContainer) -00031530 g F .text.itcm 00000008 _localeconv_r -00033690 g F .text.itcm 000002f4 __sfvwrite_r -00030c68 g F .text.itcm 0000005c __i2b -00009650 w F .text.itcm 00000348 BMCBeatBuddy::sendCommand(unsigned char, unsigned char) +20004ce4 g O .data 00000000 .hidden __dso_handle +00017344 w F .text.itcm 000001e2 BMCSerialMIDI<(unsigned char)1, HardwareSerial>::_read() +0000ae50 w F .text.itcm 00000238 BMCDisplay::renderFasTuner(BMCDataContainer) +00031630 g F .text.itcm 00000008 _localeconv_r +00033790 g F .text.itcm 000002f4 __sfvwrite_r +00030d68 g F .text.itcm 0000005c __i2b +000095f0 w F .text.itcm 00000348 BMCBeatBuddy::sendCommand(unsigned char, unsigned char) 20000000 g .data 00000000 _sdata -000212d4 g F .text.itcm 00000038 BMCEditor::globalBuildInfoMessage() -2000bb08 g O .bss 00000004 usb_midi_handleNoteOn -00029d38 w F .text.itcm 00000006 usb_seremu_class::write(unsigned char) +000213b4 g F .text.itcm 00000038 BMCEditor::globalBuildInfoMessage() +2000bb28 g O .bss 00000004 usb_midi_handleNoteOn +00029e24 w F .text.itcm 00000006 usb_seremu_class::write(unsigned char) 6001e30c g O .text.progmem 00000073 usb_config_descriptor_480 -0002e634 g F .text.itcm 00000024 _sbrk_r -00012ef4 w F .text.itcm 0000006c void BMC::handleButton<(unsigned char)6, (unsigned char)6>(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char) +0002e71c g F .text.itcm 00000024 _sbrk_r +00012fc8 w F .text.itcm 0000006c void BMC::handleButton<(unsigned char)6, (unsigned char)6>(bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&, unsigned char, unsigned short, unsigned char) 60001820 g F .text.code 00000002 startup_default_early_hook 60001620 g F .text.code 00000030 ResetHandler -200040f0 g O .data 00000058 vtable for BMC_SSD1306 -000281e4 g F .text.itcm 00000030 USBHost::contribute_Pipes(Pipe_struct*, unsigned long) -0001d4f4 w F .text.itcm 0000016c BMCEditor::saveSketchBytes() -0002a5c8 g F .text.itcm 00000054 digitalWrite -2000b700 g O .bss 00000004 EventResponder::lastYield -0002514c g F .text.itcm 00000022 BMC24LC256::read(unsigned long) -00031588 g F .text.itcm 0000002c _read_r -0002b94c g F .text.itcm 000000c4 usb_midi_configure -0003123c g F .text.itcm 000000c6 _fclose_r -00021010 g F .text.itcm 00000130 BMCEditor::disconnect(bool) -00021bf8 g F .text.itcm 00000038 BMCEditor::globalEditorMetrics() -2000b8e8 g O .bss 00000004 __malloc_max_sbrked_mem -0001aacc g F .text.itcm 0000019c BMCEditor::read() -00021140 g F .text.itcm 000000e0 BMCEditor::disconnectEditor() -0002a640 g F .text.itcm 00000070 pinMode -0002a118 g F .text.itcm 00000036 String::getBytes(unsigned char*, unsigned int, unsigned int) const -00029ed8 g F .text.itcm 00000164 Print::printFloat(double, unsigned char) -0002d498 g F .text.itcm 000000b0 __kernel_sin +200041b0 g O .data 00000058 vtable for BMC_SSD1306 +000282d0 g F .text.itcm 00000030 USBHost::contribute_Pipes(Pipe_struct*, unsigned long) +0001d5d4 w F .text.itcm 0000016c BMCEditor::saveSketchBytes() +0002a6b0 g F .text.itcm 00000054 digitalWrite +2000b720 g O .bss 00000004 EventResponder::lastYield +00025238 g F .text.itcm 00000022 BMC24LC256::read(unsigned long) +00031688 g F .text.itcm 0000002c _read_r +0002ba34 g F .text.itcm 000000c4 usb_midi_configure +0003133c g F .text.itcm 000000c6 _fclose_r +000210f0 g F .text.itcm 00000130 BMCEditor::disconnect(bool) +00021cd8 g F .text.itcm 00000038 BMCEditor::globalEditorMetrics() +2000b908 g O .bss 00000004 __malloc_max_sbrked_mem +0001abac g F .text.itcm 0000019c BMCEditor::read() +00021220 g F .text.itcm 000000e0 BMCEditor::disconnectEditor() +0002a728 g F .text.itcm 00000070 pinMode +0002a200 g F .text.itcm 00000036 String::getBytes(unsigned char*, unsigned int, unsigned int) const +00029fc0 g F .text.itcm 00000164 Print::printFloat(double, unsigned char) +0002d580 g F .text.itcm 000000b0 __kernel_sin 00003b08 g F .text.itcm 000001d4 BMC::printBoardInfo() -000091e0 w F .text.itcm 0000010c BMCFas::looperControl(unsigned char) -00028f88 g F .text.itcm 00000474 WS2812Serial::show() +00009180 w F .text.itcm 0000010c BMCFas::looperControl(unsigned char) +00029074 g F .text.itcm 00000474 WS2812Serial::show() 6001e25d w O .text.progmem 00000001 _serialEventUSB1_default 60001684 g F .text.code 00000054 TwoWire::setSDA(unsigned char) -2000b378 g O .bss 00000140 Wire2 -2000bb2c g O .bss 00000004 usb_midi_handleSysExPartial +2000b398 g O .bss 00000140 Wire2 +2000bb4c g O .bss 00000004 usb_midi_handleSysExPartial 60057c00 g O .text.csf 00000c00 hab_csf 20280000 g .text.csf 00000000 _heap_end -00015164 g F .text.itcm 00000092 BMC::scrollLayer(bool, bool, unsigned char, unsigned char, unsigned char) -00033e84 g .ARM.exidx 00000000 __exidx_start -0002ad68 w F .text.itcm 00000004 _isatty -2000bc92 g O .bss 00000001 usb_midi_msg_data1 -2000b6f4 g O .bss 00000004 EventResponder::firstYield -000257d8 g F .text.itcm 00000018 Adafruit_GFX::writeFillRect(short, short, short, short, unsigned short) -0001a878 g F .text.itcm 0000000e BMCEditor::getPotCalibrationOffset(unsigned short) -0002ddb4 g F .text.itcm 000003d8 _realloc_r -0002ea38 g F .text.itcm 00000048 __libc_init_array -00025170 w F .text.itcm 0000000c TwoWire::available() -00024ed0 g F .text.itcm 00000068 BMC24LC256::begin(BMC24LC256::twiClockFreq_t) -0002b6fc w F .text.itcm 00000004 usb_seremu_class::flush() -00033afc g F .text.itcm 00000066 _fputwc_r -00026b68 w F .text.itcm 0000002c SPIClass::SPIClass(unsigned int, unsigned int) +00015230 g F .text.itcm 00000092 BMC::scrollLayer(bool, bool, unsigned char, unsigned char, unsigned char) +00033f84 g .ARM.exidx 00000000 __exidx_start +0002ae50 w F .text.itcm 00000004 _isatty +2000bcb2 g O .bss 00000001 usb_midi_msg_data1 +2000b714 g O .bss 00000004 EventResponder::firstYield +000258c4 g F .text.itcm 00000018 Adafruit_GFX::writeFillRect(short, short, short, short, unsigned short) +0001a958 g F .text.itcm 0000000e BMCEditor::getPotCalibrationOffset(unsigned short) +0002de9c g F .text.itcm 000003d8 _realloc_r +0002eb18 g F .text.itcm 00000048 __libc_init_array +0002525c w F .text.itcm 0000000c TwoWire::available() +00024fbc g F .text.itcm 00000068 BMC24LC256::begin(BMC24LC256::twiClockFreq_t) +0002b7e4 w F .text.itcm 00000004 usb_seremu_class::flush() +00033bfc g F .text.itcm 00000066 _fputwc_r +00026c54 w F .text.itcm 0000002c SPIClass::SPIClass(unsigned int, unsigned int) 200002d0 g O .data 00000028 __mprec_bigtens -0002ad78 w F .text.itcm 00000004 abort -000254d0 g F .text.itcm 00000140 TwoWire::requestFrom(unsigned char, unsigned char, unsigned char) +0002ae60 w F .text.itcm 00000004 abort +000255bc g F .text.itcm 00000140 TwoWire::requestFrom(unsigned char, unsigned char, unsigned char) 00000168 w F .text.itcm 00000180 BMC_SSD1306::getCenteredXY(char*, unsigned short, unsigned short, unsigned short, unsigned short, unsigned char) -00026e7c g F .text.itcm 000000e8 USBHost::queue_Transfer(Pipe_struct*, Transfer_struct*) -00024e70 g F .text.itcm 00000060 BMC24LC256::BMC24LC256(BMC_eeprom_size_t, unsigned char, unsigned int, unsigned char) -0002ad1c w F .text.itcm 00000034 _sbrk -60052218 g *ABS* 00000000 _sdataload -00030fd0 g F .text.itcm 00000042 __mcmp -20004c20 g O .data 00000004 __brkval -0001a988 g F .text.itcm 00000144 BMCEditor::sendNotification(unsigned short, unsigned long, bool, bool) -00002980 g F .text.itcm 000004e4 BMC::begin() -0001a7d0 g F .text.itcm 0000000e BMCEditor::getStoreOffset() -000018c0 w F .text.itcm 0000019c BMCSync::BMCSync(BMCMidi&, BMCMidiClock&, BMCCallbacks&) +00026f68 g F .text.itcm 000000e8 USBHost::queue_Transfer(Pipe_struct*, Transfer_struct*) +00024f5c g F .text.itcm 00000060 BMC24LC256::BMC24LC256(BMC_eeprom_size_t, unsigned char, unsigned int, unsigned char) +0002ae04 w F .text.itcm 00000034 _sbrk +60052318 g *ABS* 00000000 _sdataload +000310d0 g F .text.itcm 00000042 __mcmp +20004ce0 g O .data 00000004 __brkval +0001aa68 g F .text.itcm 00000144 BMCEditor::sendNotification(unsigned short, unsigned long, bool, bool) +00002988 g F .text.itcm 000004e4 BMC::begin() +0001a8b0 g F .text.itcm 0000000e BMCEditor::getStoreOffset() +000018b4 w F .text.itcm 0000019c BMCSync::BMCSync(BMCMidi&, BMCMidiClock&, BMCCallbacks&) 60001bf0 g F .text.code 00000000 _init -00028658 g F .text.itcm 000000ac MIDIDeviceBase::send_sysex_buffer_has_term(unsigned char const*, unsigned long, unsigned char) -00025f58 g F .text.itcm 000002a0 Adafruit_GFX::fillTriangle(short, short, short, short, short, short, unsigned short) -20003a24 g O .data 00000050 SPIClass::spiclass_lpspi1_hardware -0002a078 g F .text.itcm 0000000e String::~String() -0002bac0 g F .text.itcm 000000c0 usb_midi_send_sysex_buffer_has_term -00025c3c g F .text.itcm 000001a0 Adafruit_GFX::fillCircleHelper(short, short, short, unsigned char, short, unsigned short) -0002a03c g F .text.itcm 0000003a String::String(String const&) -00027b6c g F .text.itcm 00000020 USBHost::driver_ready_for_device(USBDriver*) -00012f60 g F .text.itcm 0000041c BMC::readButtons() -00014d94 g F .text.itcm 0000001c BMC::layerChanged() -0002c548 g F .text.itcm 00000018 usb_seremu_write -0001aea0 w F .text.itcm 00000024 BMCMidiMessage::get14Bits(unsigned short) -0001144c w F .text.itcm 000003f2 BMCAuxJackPot::begin(unsigned char) +00028744 g F .text.itcm 000000ac MIDIDeviceBase::send_sysex_buffer_has_term(unsigned char const*, unsigned long, unsigned char) +00026044 g F .text.itcm 000002a0 Adafruit_GFX::fillTriangle(short, short, short, short, short, short, unsigned short) +20003ae4 g O .data 00000050 SPIClass::spiclass_lpspi1_hardware +0002a160 g F .text.itcm 0000000e String::~String() +0002bba8 g F .text.itcm 000000c0 usb_midi_send_sysex_buffer_has_term +00025d28 g F .text.itcm 000001a0 Adafruit_GFX::fillCircleHelper(short, short, short, unsigned char, short, unsigned short) +0002a124 g F .text.itcm 0000003a String::String(String const&) +00027c58 g F .text.itcm 00000020 USBHost::driver_ready_for_device(USBDriver*) +00013034 g F .text.itcm 00000410 BMC::readButtons() +00014e60 g F .text.itcm 0000001c BMC::layerChanged() +0002c630 g F .text.itcm 00000018 usb_seremu_write +0001af80 w F .text.itcm 00000024 BMCMidiMessage::get14Bits(unsigned short) +00011528 w F .text.itcm 000003f2 BMCAuxJackPot::begin(unsigned char) 6001e298 g O .text.progmem 00000073 usb_config_descriptor_12 -0002ccd8 g F .text.itcm 00000690 __kernel_rem_pio2 -20004204 g O .data 00000024 vtable for TwoWire -2000bcc0 g .bss 00000000 _ebss -00009b24 w F .text.itcm 00000048 BMCBeatBuddy::tempoControl(unsigned char, bool) -000257a0 g F .text.itcm 0000000e Adafruit_GFX::writePixel(short, short, unsigned short) -2000b098 g O .bss 00000060 Serial3 -000265cc g F .text.itcm 00000136 Adafruit_GFX::write(unsigned char) -0001a7bc g F .text.itcm 0000000a BMCEditor::setLayer(unsigned char) +0002cdc0 g F .text.itcm 00000690 __kernel_rem_pio2 +200042c4 g O .data 00000024 vtable for TwoWire +2000bce0 g .bss 00000000 _ebss +00009ac4 w F .text.itcm 00000048 BMCBeatBuddy::tempoControl(unsigned char, bool) +0002588c g F .text.itcm 0000000e Adafruit_GFX::writePixel(short, short, unsigned short) +2000b0b8 g O .bss 00000060 Serial3 +000266b8 g F .text.itcm 00000136 Adafruit_GFX::write(unsigned char) +0001a89c g F .text.itcm 0000000a BMCEditor::setLayer(unsigned char) 600016d8 g F .text.code 00000034 TwoWire::configSCLpin(unsigned char) -000295d0 g F .text.itcm 00000020 HardwareSerial::availableForWrite() -00015a50 w F .text.itcm 000001b4 BMCBeatBuddy::incoming(BMCMidiMessage) -00030bc8 g F .text.itcm 00000040 __hi0bits -00009190 w F .text.itcm 00000026 BMCFas::tunerOn() -000256c8 g F .text.itcm 0000000c lpi2c3_isr() -000080a8 w F .text.itcm 00000080 BMCSetLists::scrollSong(bool, bool, unsigned char, unsigned char, unsigned char) -0001d660 w F .text.itcm 000001a0 BMCEditor::saveLayersAndReloadData(unsigned char) -00012d74 g F .text.itcm 00000116 BMC::assignButton(BMCButton&, bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&) +000296bc g F .text.itcm 00000020 HardwareSerial::availableForWrite() +00015b10 w F .text.itcm 000001b4 BMCBeatBuddy::incoming(BMCMidiMessage) +00030cc8 g F .text.itcm 00000040 __hi0bits +00009130 w F .text.itcm 00000026 BMCFas::tunerOn() +000257b4 g F .text.itcm 0000000c lpi2c3_isr() +00008048 w F .text.itcm 00000080 BMCSetLists::scrollSong(bool, bool, unsigned char, unsigned char, unsigned char) +0001d740 w F .text.itcm 000001a0 BMCEditor::saveLayersAndReloadData(unsigned char) +00012e4c g F .text.itcm 00000116 BMC::assignButton(BMCButton&, bmcStoreDevice<(unsigned char)6, (unsigned char)6, unsigned char>&) 20201880 g .bss.dma 00000000 _heap_start -00017f38 g F .text.itcm 000000ac BMC::streamMidi(unsigned char, unsigned char, unsigned char, unsigned char) -2000b8b8 g O .bss 00000001 __lock___malloc_recursive_mutex -00021e98 w F .text.itcm 000001f4 BMCEditor::saveLayer(unsigned char) +0001801c g F .text.itcm 000000ac BMC::streamMidi(unsigned char, unsigned char, unsigned char, unsigned char) +2000b8d8 g O .bss 00000001 __lock___malloc_recursive_mutex +00021f78 w F .text.itcm 000001f4 BMCEditor::saveLayer(unsigned char) 6001e20c g O .text.progmem 00000050 TwoWire::i2c4_hardware -0002a088 g F .text.itcm 00000066 String::copy(char const*, unsigned int) -2000b8f4 g O .bss 00000138 __sf -0001a84c g F .text.itcm 0000000e BMCEditor::getSetListSongOffset(unsigned short) +0002a170 g F .text.itcm 00000066 String::copy(char const*, unsigned int) +2000b914 g O .bss 00000138 __sf +0001a92c g F .text.itcm 0000000e BMCEditor::getSetListSongOffset(unsigned short) 00000007 g *ABS* 00000000 _itcm_block_count -000299f4 g F .text.itcm 000000d8 HardwareSerial::write9bit(unsigned long) -2000a340 g O .bss 00000020 endpoint0_transfer_data -0002aaa0 g F .text.itcm 000000f4 pwm_init -00019fdc g F .text.itcm 000003a4 BMCEditor::BMCEditor(bmcStore&, BMCMidi&, BMCSettings&, BMCMessenger&) -00007b4c w F .text.itcm 000002d8 BMCEditor::getDeviceNameText(unsigned char, unsigned short, char*) -00017228 g F .text.itcm 00000064 BMC::midiProgramBankTrigger(unsigned char, unsigned char) +00029ae0 g F .text.itcm 000000d8 HardwareSerial::write9bit(unsigned long) +2000a360 g O .bss 00000020 endpoint0_transfer_data +0002ab88 g F .text.itcm 000000f4 pwm_init +0001a0bc g F .text.itcm 000003a4 BMCEditor::BMCEditor(bmcStore&, BMCMidi&, BMCSettings&, BMCMessenger&) +00007aec w F .text.itcm 000002d8 BMCEditor::getDeviceNameText(unsigned char, unsigned short, char*) +000172e0 g F .text.itcm 00000064 BMC::midiProgramBankTrigger(unsigned char, unsigned char) 000008d4 w F .text.itcm 00000afa BMCDawLogicControl::sendButtonCommand(unsigned char, unsigned char, bool, bool) -00025220 w F .text.itcm 0000006c TwoWire::TwoWire(IMXRT_LPI2C_t*, TwoWire::I2C_Hardware_t const&) -000134e4 g F .text.itcm 00000210 BMC::controlFirstLed(bool) -00029720 g F .text.itcm 0000001a HardwareSerial::flush() -0001bf34 w F .text.itcm 00000074 BMCStorage::debugStartTiming(char const*) -0002e530 g F .text.itcm 0000003e strcat -0002a078 g F .text.itcm 0000000e String::~String() +0002530c w F .text.itcm 0000006c TwoWire::TwoWire(IMXRT_LPI2C_t*, TwoWire::I2C_Hardware_t const&) +000135ac g F .text.itcm 00000210 BMC::controlFirstLed(bool) +0002980c g F .text.itcm 0000001a HardwareSerial::flush() +0001c014 w F .text.itcm 00000074 BMCStorage::debugStartTiming(char const*) +0002e618 g F .text.itcm 0000003e strcat +0002a160 g F .text.itcm 0000000e String::~String() 60058800 g .text.csf 00000000 __text_csf_end -000257b0 g F .text.itcm 00000012 Adafruit_GFX::writeFastVLine(short, short, short, unsigned short) +0002589c g F .text.itcm 00000012 Adafruit_GFX::writeFastVLine(short, short, short, unsigned short) 60001928 g F .text.code 0000005c usb_pll_start -00030e20 g F .text.itcm 000000c0 __pow5mult -000256d4 g F .text.itcm 0000000c lpi2c4_isr() -000282a4 g F .text.itcm 00000052 MIDIDeviceBase::timer_event(USBDriverTimer*) -0001a8cc g F .text.itcm 000000ba BMCEditor::sendToEditor(BMCMidiMessage, bool, bool) -00019334 w F .text.itcm 00000370 BMCStorage::begin() -00025220 w F .text.itcm 0000006c TwoWire::TwoWire(IMXRT_LPI2C_t*, TwoWire::I2C_Hardware_t const&) -00005e70 w F .text.itcm 000001ec BMCEditor::saveGlobalAndReloadData() -2000a320 g O .bss 00000020 endpoint0_transfer_ack -00012918 w F .text.itcm 000002c4 BMCButton::read() -0002b650 g F .text.itcm 00000028 usb_transmit -0001b9f0 w F .text.itcm 00000074 BMCMidiMessage::appendToSysEx32Bits(unsigned long) -000224ec g F .text.itcm 000000bc BMCEditor::layerSendChangeMessage(bool) -000182cc g F .text.itcm 0000020e BMC::readTrigger() -000295b0 g F .text.itcm 00000020 systick_isr -0002ea8c g F .text.itcm 00000002 __retarget_lock_release_recursive -0001809c g F .text.itcm 00000050 BMC::streamMidiClockBPM(unsigned short) -00027098 g F .text.itcm 0000013c USBHost::queue_Data_Transfer(Pipe_struct*, void*, unsigned long, USBDriver*) -20004ba8 g O .data 00000010 Serial -00029c34 g F .text.itcm 0000000c IRQHandler_Serial1 -200041a0 g O .data 00000024 vtable for HardwareSerial +00030f20 g F .text.itcm 000000c0 __pow5mult +000257c0 g F .text.itcm 0000000c lpi2c4_isr() +00028390 g F .text.itcm 00000052 MIDIDeviceBase::timer_event(USBDriverTimer*) +0001a9ac g F .text.itcm 000000ba BMCEditor::sendToEditor(BMCMidiMessage, bool, bool) +00019418 w F .text.itcm 00000370 BMCStorage::begin() +0002530c w F .text.itcm 0000006c TwoWire::TwoWire(IMXRT_LPI2C_t*, TwoWire::I2C_Hardware_t const&) +00005ef8 w F .text.itcm 000001ec BMCEditor::saveGlobalAndReloadData() +2000a340 g O .bss 00000020 endpoint0_transfer_ack +000129f0 w F .text.itcm 000002c4 BMCButton::read() +0002b738 g F .text.itcm 00000028 usb_transmit +0001bad0 w F .text.itcm 00000074 BMCMidiMessage::appendToSysEx32Bits(unsigned long) +000225cc g F .text.itcm 000000bc BMCEditor::layerSendChangeMessage(bool) +000183b0 g F .text.itcm 0000020e BMC::readTrigger() +0002969c g F .text.itcm 00000020 systick_isr +0002eb6c g F .text.itcm 00000002 __retarget_lock_release_recursive +00018180 g F .text.itcm 00000050 BMC::streamMidiClockBPM(unsigned short) +00027184 g F .text.itcm 0000013c USBHost::queue_Data_Transfer(Pipe_struct*, void*, unsigned long, USBDriver*) +20004c68 g O .data 00000010 Serial +00029d20 g F .text.itcm 0000000c IRQHandler_Serial1 +20004260 g O .data 00000024 vtable for HardwareSerial 60001820 w F .text.code 00000002 startup_early_hook -0001a7f8 g F .text.itcm 0000000a BMCEditor::getNamesOffset(unsigned short) -00023ca4 g F .text.itcm 0000034c BMCMidi::sendPitchBend(unsigned char, unsigned char, short, unsigned char) -0002b700 w F .text.itcm 00000004 usb_seremu_class::availableForWrite() -00029cb4 g F .text.itcm 0000000c IRQHandler_Serial3 -0002c6d8 g F .text.itcm 00000050 fmod -00006ba4 g F .text.itcm 00000074 BMC::ctrlPreset() -0002c728 g F .text.itcm 00000080 cos -00022a6c g F .text.itcm 0000008a BMCEditor::utilitySendAnalogInputCalibrationStatus(bool, bool, bool) -0001e760 g F .text.itcm 000003bc BMCEditor::incomingMessageEvent(bool) -0002e334 g F .text.itcm 0000000c __sfp_lock_acquire -0002ea90 g F .text.itcm 00000000 memchr +0001a8d8 g F .text.itcm 0000000a BMCEditor::getNamesOffset(unsigned short) +00023d70 g F .text.itcm 00000348 BMCMidi::sendPitchBend(unsigned char, unsigned char, short, unsigned char) +0002b7e8 w F .text.itcm 00000004 usb_seremu_class::availableForWrite() +00029da0 g F .text.itcm 0000000c IRQHandler_Serial3 +0002c7c0 g F .text.itcm 00000050 fmod +00006c14 g F .text.itcm 00000074 BMC::ctrlPreset() +0002c810 g F .text.itcm 00000080 cos +00022b4c g F .text.itcm 0000008a BMCEditor::utilitySendAnalogInputCalibrationStatus(bool, bool, bool) +0001e840 g F .text.itcm 000003bc BMCEditor::incomingMessageEvent(bool) +0002e41c g F .text.itcm 0000000c __sfp_lock_acquire +0002eb70 g F .text.itcm 00000000 memchr 00003818 w F .text.itcm 00000174 BMCTools::getMidiStatusName(unsigned char) -00014db0 g F .text.itcm 000000a0 BMC::getLayerName(unsigned char, char*) -0002a1dc g F .text.itcm 000002f0 set_arm_clock -2000bae4 g O .bss 00000004 systick_cycle_count -00022624 g F .text.itcm 00000082 BMCEditor::utilityCommand() -20005200 g O .data 00000016 usb_string_serial_number_default -000188c4 g F .text.itcm 00000010 BMC_SSD1306::~BMC_SSD1306() -0002ed44 g F .text.itcm 0000020c _free_r -2000bb24 g O .bss 00000004 usb_midi_handleStop -00017654 g F .text.itcm 00000780 BMC::readMidi() +00014e7c g F .text.itcm 000000a0 BMC::getLayerName(unsigned char, char*) +0002a2c4 g F .text.itcm 000002f0 set_arm_clock +2000bb04 g O .bss 00000004 systick_cycle_count +00022704 g F .text.itcm 00000082 BMCEditor::utilityCommand() +200052c0 g O .data 00000016 usb_string_serial_number_default +000189a8 g F .text.itcm 00000010 BMC_SSD1306::~BMC_SSD1306() +0002ee44 g F .text.itcm 0000020c _free_r +2000bb44 g O .bss 00000004 usb_midi_handleStop +000178e0 g F .text.itcm 000005d8 BMC::readMidi() 00000068 w F .text.itcm 00000022 BMCApi::~BMCApi() -0002e61c g F .text.itcm 0000000c __locale_mb_cur_max -00031600 g F .text.itcm 00000016 _wcsrtombs_r -000248d8 g F .text.itcm 000004a6 BMCMidi::send(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) -2000b724 g O .bss 00000190 __atexit0 -00019fdc g F .text.itcm 000003a4 BMCEditor::BMCEditor(bmcStore&, BMCMidi&, BMCSettings&, BMCMessenger&) +0002e704 g F .text.itcm 0000000c __locale_mb_cur_max +00031700 g F .text.itcm 00000016 _wcsrtombs_r +000249b4 g F .text.itcm 000004b8 BMCMidi::send(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) +2000b744 g O .bss 00000190 __atexit0 +0001a0bc g F .text.itcm 000003a4 BMCEditor::BMCEditor(bmcStore&, BMCMidi&, BMCSettings&, BMCMessenger&) 000004d0 w F .text.itcm 000000ee bmcStoreGlobal::bmcStoreGlobal() -2000bb00 g O .bss 00000004 usb_midi_handleControlChange -00024d80 g F .text.itcm 00000068 BMCMidi::send(unsigned char, BMCMidiMessage, unsigned char) -2000519c g O .data 00000004 __malloc_sbrk_base -0001a380 g F .text.itcm 000003d8 BMCEditor::begin() -00017e08 g F .text.itcm 00000034 BMC::getSketchByte(unsigned char) -0002598c g F .text.itcm 00000094 Adafruit_GFX::fillRect(short, short, short, short, unsigned short) -0002ad6c w F .text.itcm 00000006 _lseek -0002ad74 w F .text.itcm 00000004 __cxa_pure_virtual -00030ee0 g F .text.itcm 000000f0 __lshift -0002b620 g F .text.itcm 00000030 usb_prepare_transfer -0002ab9c g F .text.itcm 00000180 unused_interrupt_vector -0003250c g F .text.itcm 00000100 __ssprint_r -2000bc64 g O .bss 00000004 usb_timer0_callback +2000bb20 g O .bss 00000004 usb_midi_handleControlChange +00024e6c g F .text.itcm 00000068 BMCMidi::send(unsigned char, BMCMidiMessage, unsigned char) +2000525c g O .data 00000004 __malloc_sbrk_base +0001a460 g F .text.itcm 000003d8 BMCEditor::begin() +00017eec g F .text.itcm 00000034 BMC::getSketchByte(unsigned char) +00025a78 g F .text.itcm 00000094 Adafruit_GFX::fillRect(short, short, short, short, unsigned short) +0002ae54 w F .text.itcm 00000006 _lseek +0002ae5c w F .text.itcm 00000004 __cxa_pure_virtual +00030fe0 g F .text.itcm 000000f0 __lshift +0002b708 g F .text.itcm 00000030 usb_prepare_transfer +0002ac84 g F .text.itcm 00000180 unused_interrupt_vector +0003260c g F .text.itcm 00000100 __ssprint_r +2000bc84 g O .bss 00000004 usb_timer0_callback 60001984 g F .text.code 00000130 tempmon_init -0002c6d0 w F .text.itcm 00000002 serialEvent() -00028214 g F .text.itcm 00000034 USBHost::contribute_Transfers(Transfer_struct*, unsigned long) -0002ec1c g F .text.itcm 00000088 __register_exitproc -000222b0 g F .text.itcm 0000023c BMCEditor::layerNameMessage(bool) -00001b68 w F .text.itcm 0000013a BMC::runPresetChanged() -0002c1b4 g F .text.itcm 000000b0 usb_seremu_configure -00018838 g F .text.itcm 00000074 BMC_SSD1306::drawFastVLine(short, short, short, unsigned short) -00022254 g F .text.itcm 0000005a BMCEditor::layerMessage(bool) -0001803c g F .text.itcm 00000060 BMC::streamMidiControl(unsigned char, unsigned char, unsigned char) -00030cc4 g F .text.itcm 0000015c __multiply +0002c7b8 w F .text.itcm 00000002 serialEvent() +00028300 g F .text.itcm 00000034 USBHost::contribute_Transfers(Transfer_struct*, unsigned long) +0002ed1c g F .text.itcm 00000088 __register_exitproc +00022390 g F .text.itcm 0000023c BMCEditor::layerNameMessage(bool) +00001b5c w F .text.itcm 0000013a BMC::runPresetChanged() +0002c29c g F .text.itcm 000000b0 usb_seremu_configure +0001891c g F .text.itcm 00000074 BMC_SSD1306::drawFastVLine(short, short, short, unsigned short) +00022334 g F .text.itcm 0000005a BMCEditor::layerMessage(bool) +00018120 g F .text.itcm 00000060 BMC::streamMidiControl(unsigned char, unsigned char, unsigned char) +00030dc4 g F .text.itcm 0000015c __multiply 00000024 g *ABS* 00000000 _teensy_model_identifier -0002e570 g F .text.itcm 00000064 strncpy -2000b8c0 g O .bss 00000028 __malloc_current_mallinfo -0002c264 g F .text.itcm 00000068 usb_seremu_getchar -20003ac4 g O .data 00000050 SPIClass::spiclass_lpspi4_hardware -00031168 g F .text.itcm 000000d4 __d2b -000188f4 g F .text.itcm 00000040 BMC_SSD1306::invertDisplay(bool) -0002579c g F .text.itcm 00000002 Adafruit_GFX::endWrite() -2000b704 g O .bss 0000001c HardwareSerial::s_serials_with_serial_events -00015218 g F .text.itcm 00000024 BMC::nextLayer() +0002e658 g F .text.itcm 00000064 strncpy +2000b8e0 g O .bss 00000028 __malloc_current_mallinfo +0002c34c g F .text.itcm 00000068 usb_seremu_getchar +20003b84 g O .data 00000050 SPIClass::spiclass_lpspi4_hardware +00031268 g F .text.itcm 000000d4 __d2b +000189d8 g F .text.itcm 00000040 BMC_SSD1306::invertDisplay(bool) +00025888 g F .text.itcm 00000002 Adafruit_GFX::endWrite() +2000b724 g O .bss 0000001c HardwareSerial::s_serials_with_serial_events +000152e4 g F .text.itcm 00000024 BMC::nextLayer() 60001b9c g F .text.code 00000054 _reboot_Teensyduino_ 60001824 g F .text.code 00000002 startup_default_middle_hook -0002dd9c g F .text.itcm 00000018 realloc -000189ac g F .text.itcm 0000013c BMC_SSD1306::display() -00007934 w F .text.itcm 00000044 BMCTools::getBankLetter(unsigned char, char*) -00027510 g F .text.itcm 00000240 USBHost::allocate_interrupt_pipe_bandwidth(Pipe_struct*, unsigned long, unsigned long) -00024f38 g F .text.itcm 0000013c BMC24LC256::write(unsigned long, unsigned char*, unsigned int) -0002af9c g F .text.itcm 000005bc usb_isr -0002e628 g F .text.itcm 0000000c __cxa_atexit -00026f64 g F .text.itcm 00000134 USBHost::queue_Control_Transfer(Device_struct*, setup_t*, void*, USBDriver*) -00031538 g F .text.itcm 00000024 _close_r -0001715c g F .text.itcm 000000cc BMC::midiProgramBankScroll(bool, bool, unsigned char, unsigned char, unsigned char) -2000bb04 g O .bss 00000004 usb_midi_handleNoteOff -00026710 g F .text.itcm 00000022 Adafruit_GFX::setFont(GFXfont const*) -000281b8 g F .text.itcm 0000001c USBHost::allocate_string_buffer() -00014ba8 g F .text.itcm 000001ec BMC::readPixels() -2000af30 g O .bss 00000050 SPI +0002de84 g F .text.itcm 00000018 realloc +00018a90 g F .text.itcm 0000013c BMC_SSD1306::display() +000078d4 w F .text.itcm 00000044 BMCTools::getBankLetter(unsigned char, char*) +000275fc g F .text.itcm 00000240 USBHost::allocate_interrupt_pipe_bandwidth(Pipe_struct*, unsigned long, unsigned long) +00025024 g F .text.itcm 0000013c BMC24LC256::write(unsigned long, unsigned char*, unsigned int) +0002b084 g F .text.itcm 000005bc usb_isr +0002e710 g F .text.itcm 0000000c __cxa_atexit +00027050 g F .text.itcm 00000134 USBHost::queue_Control_Transfer(Device_struct*, setup_t*, void*, USBDriver*) +00031638 g F .text.itcm 00000024 _close_r +00017214 g F .text.itcm 000000cc BMC::midiProgramBankScroll(bool, bool, unsigned char, unsigned char, unsigned char) +2000bb24 g O .bss 00000004 usb_midi_handleNoteOff +000267fc g F .text.itcm 00000022 Adafruit_GFX::setFont(GFXfont const*) +000282a4 g F .text.itcm 0000001c USBHost::allocate_string_buffer() +00014c74 g F .text.itcm 000001ec BMC::readPixels() +2000af50 g O .bss 00000050 SPI 6001e260 g O .text.progmem 00000001 _serialEvent3_default -0002a0f0 g F .text.itcm 00000026 String::String(char const*) -0002ea84 g F .text.itcm 00000002 __retarget_lock_close_recursive -000282f8 g F .text.itcm 000001bc MIDIDeviceBase::claim(Device_struct*, int, unsigned char const*, unsigned long) -000180ec g F .text.itcm 000000e4 BMC::runTempoToTap() -00026c04 g F .text.itcm 0000014c USBHost::begin() -2000bac0 g O .bss 00000004 scale_cpu_cycles_to_microseconds -2000afd0 g O .bss 00000050 SPI2 -00033984 g F .text.itcm 000000cc __swsetup_r -20004148 g O .data 00000058 vtable for Adafruit_GFX -0002c2cc g F .text.itcm 00000044 usb_seremu_peekchar -00025e6c g F .text.itcm 000000ec Adafruit_GFX::fillRoundRect(short, short, short, short, short, unsigned short) -00027750 g F .text.itcm 0000007c USBHost::add_qh_to_periodic_schedule(Pipe_struct*) +0002a1d8 g F .text.itcm 00000026 String::String(char const*) +0002eb64 g F .text.itcm 00000002 __retarget_lock_close_recursive +000283e4 g F .text.itcm 000001bc MIDIDeviceBase::claim(Device_struct*, int, unsigned char const*, unsigned long) +000181d0 g F .text.itcm 000000e4 BMC::runTempoToTap() +00026cf0 g F .text.itcm 0000014c USBHost::begin() +2000bae0 g O .bss 00000004 scale_cpu_cycles_to_microseconds +2000aff0 g O .bss 00000050 SPI2 +00033a84 g F .text.itcm 000000cc __swsetup_r +20004208 g O .data 00000058 vtable for Adafruit_GFX +0002c3b4 g F .text.itcm 00000044 usb_seremu_peekchar +00025f58 g F .text.itcm 000000ec Adafruit_GFX::fillRoundRect(short, short, short, short, short, unsigned short) +0002783c g F .text.itcm 0000007c USBHost::add_qh_to_periodic_schedule(Pipe_struct*) 6001e25f g O .text.progmem 00000001 _serialEvent1_default -00025890 g F .text.itcm 00000058 Adafruit_GFX::drawFastHLine(short, short, short, unsigned short) -20004d94 g O .data 00000408 __malloc_av_ -2000b720 g O .bss 00000004 __atexit -00019268 g F .text.itcm 000000c8 BMCEditor::backupNameMessage(unsigned short) -00007e24 w F .text.itcm 00000154 BMCPresets::getName(unsigned short, char*) -00028704 g F .text.itcm 000000e8 MIDIDeviceBase::send_sysex_add_term_bytes(unsigned char const*, unsigned long, unsigned char) -00012d08 g F .text.itcm 0000006c BMC::setupButtons() -00031488 g F .text.itcm 00000022 __sread -00021c78 g F .text.itcm 0000021c BMCEditor::globalProcessMessage() -0002dd84 g F .text.itcm 0000000c __malloc_lock -0001a8b4 g F .text.itcm 0000000c BMCEditor::getTempoToTapOffset(unsigned short) -00021bb0 g F .text.itcm 00000046 BMCEditor::globalEditorFeedback(bool) +0002597c g F .text.itcm 00000058 Adafruit_GFX::drawFastHLine(short, short, short, unsigned short) +20004e54 g O .data 00000408 __malloc_av_ +2000b740 g O .bss 00000004 __atexit +0001934c g F .text.itcm 000000c8 BMCEditor::backupNameMessage(unsigned short) +00007dc4 w F .text.itcm 00000154 BMCPresets::getName(unsigned short, char*) +000287f0 g F .text.itcm 000000e8 MIDIDeviceBase::send_sysex_add_term_bytes(unsigned char const*, unsigned long, unsigned char) +00012de0 g F .text.itcm 0000006c BMC::setupButtons() +00031588 g F .text.itcm 00000022 __sread +00021d58 g F .text.itcm 0000021c BMCEditor::globalProcessMessage() +0002de6c g F .text.itcm 0000000c __malloc_lock +0001a994 g F .text.itcm 0000000c BMCEditor::getTempoToTapOffset(unsigned short) +00021c90 g F .text.itcm 00000046 BMCEditor::globalEditorFeedback(bool) 20005400 g O .data 000002c0 _VectorsRam -00026bdc w F .text.itcm 00000002 USBDriver::timer_event(USBDriverTimer*) -00031434 g F .text.itcm 00000054 _fflush_r +00026cc8 w F .text.itcm 00000002 USBDriver::timer_event(USBDriverTimer*) +00031534 g F .text.itcm 00000054 _fflush_r 00000068 w F .text.itcm 00000022 BMCApi::~BMCApi() -00021c30 g F .text.itcm 00000046 BMCEditor::globalEditorMessenger(bool) -0002d78c g F .text.itcm 00000078 _calloc_r -00013db8 g F .text.itcm 000000f4 BMC::handleSetupLeds(BMCLed&, unsigned short) -00012294 w F .text.itcm 00000578 BMCButton::begin(unsigned char) -200041c4 g O .data 0000001c vtable for MIDIDeviceBase -00009d28 g F .text.itcm 00000328 BMC::handleClockLeds() -0001a830 g F .text.itcm 0000000c BMCEditor::getPresetOffset(unsigned short) -20005217 g O .data 00000001 yield_active_check_flags -0002ea88 g F .text.itcm 00000002 __retarget_lock_acquire_recursive -2000bc8f g O .bss 00000001 usb_high_speed -0002130c g F .text.itcm 00000130 BMCEditor::globalStoreAddress(bool) -0001a7f0 g F .text.itcm 00000008 BMCEditor::getEventsOffset(unsigned short) -0001eb1c g F .text.itcm 000002e8 BMCEditor::incomingMessageName(bool) -0002e48c g F .text.itcm 000000a4 memset -200041e0 w O .data 00000024 vtable for usb_seremu_class -00017fe4 g F .text.itcm 00000058 BMC::streamMidiProgram(unsigned char, unsigned char) -0002a6f8 g F .text.itcm 00000010 main -00025838 g F .text.itcm 00000058 Adafruit_GFX::drawFastVLine(short, short, short, unsigned short) -0001541c w F .text.itcm 00000128 BMCMidiPortHost::read(BMCMidiMessage&, bool) -2000b8ec g O .bss 00000004 __malloc_max_total_mem -0002ea80 g F .text.itcm 00000002 __retarget_lock_init_recursive +00021d10 g F .text.itcm 00000046 BMCEditor::globalEditorMessenger(bool) +0002d874 g F .text.itcm 00000078 _calloc_r +00013e80 g F .text.itcm 000000f4 BMC::handleSetupLeds(BMCLed&, unsigned short) +0001236c w F .text.itcm 00000578 BMCButton::begin(unsigned char) +20004284 g O .data 0000001c vtable for MIDIDeviceBase +00009cc8 g F .text.itcm 0000032c BMC::handleClockLeds() +0001a910 g F .text.itcm 0000000c BMCEditor::getPresetOffset(unsigned short) +200052d7 g O .data 00000001 yield_active_check_flags +0002eb68 g F .text.itcm 00000002 __retarget_lock_acquire_recursive +2000bcaf g O .bss 00000001 usb_high_speed +000213ec g F .text.itcm 00000130 BMCEditor::globalStoreAddress(bool) +0001a8d0 g F .text.itcm 00000008 BMCEditor::getEventsOffset(unsigned short) +0001ebfc g F .text.itcm 000002e8 BMCEditor::incomingMessageName(bool) +0002e574 g F .text.itcm 000000a4 memset +200042a0 w O .data 00000024 vtable for usb_seremu_class +000180c8 g F .text.itcm 00000058 BMC::streamMidiProgram(unsigned char, unsigned char) +0002a7e0 g F .text.itcm 00000010 main +00025924 g F .text.itcm 00000058 Adafruit_GFX::drawFastVLine(short, short, short, unsigned short) +000154e8 w F .text.itcm 00000128 BMCMidiPortHost::read(BMCMidiMessage&, bool) +2000b90c g O .bss 00000004 __malloc_max_total_mem +0002eb60 g F .text.itcm 00000002 __retarget_lock_init_recursive 20200000 g O .bss.dma 00000073 usb_descriptor_buffer 000004d0 w F .text.itcm 000000ee bmcStoreGlobal::bmcStoreGlobal() -00028158 g F .text.itcm 00000010 USBHost::allocate_Device() -0003150c g F .text.itcm 00000008 __sclose -0001a818 g F .text.itcm 0000000a BMCEditor::getLfoOffset(unsigned short) -0002b698 g F .text.itcm 00000058 usb_init_serialnumber -00001ca4 g F .text.itcm 00000a50 BMC::BMC() -0002579c g F .text.itcm 00000002 Adafruit_GFX::startWrite() -00001ca4 g F .text.itcm 00000a50 BMC::BMC() +00028244 g F .text.itcm 00000010 USBHost::allocate_Device() +0003160c g F .text.itcm 00000008 __sclose +0001a8f8 g F .text.itcm 0000000a BMCEditor::getLfoOffset(unsigned short) +0002b780 g F .text.itcm 00000058 usb_init_serialnumber +00001c98 g F .text.itcm 00000a64 BMC::BMC() +00025888 g F .text.itcm 00000002 Adafruit_GFX::startWrite() +00001c98 g F .text.itcm 00000a64 BMC::BMC() 60001c5c g .text.code 00000000 __init_array_end -000317f8 g F .text.itcm 00000cec _dtoa_r -0002d824 g F .text.itcm 00000560 _malloc_r -2000bc7c g O .bss 00000001 HardwareSerial::s_count_serials_with_serial_events -00031514 g F .text.itcm 0000001a __ascii_wctomb -2000bb18 g O .bss 00000004 usb_midi_handleSongPosition -000294e4 g F .text.itcm 00000084 EventResponder::triggerEventNotImmediate() -2000bafc g O .bss 00000004 usb_midi_handleContinue -2000bc93 g O .bss 00000001 usb_midi_msg_data2 -0002a574 g F .text.itcm 00000054 micros -0000153c w F .text.itcm 000001d8 BMCFas::update() -000256e0 g F .text.itcm 00000078 TwoWire::setClock(unsigned long) -0002eca4 g F .text.itcm 000000a0 _malloc_trim_r -00021220 g F .text.itcm 000000b4 BMCEditor::forceDisconnectEditor() -00033b64 g F .text.itcm 00000106 _wcsnrtombs_l +000318f8 g F .text.itcm 00000cec _dtoa_r +0002d90c g F .text.itcm 00000560 _malloc_r +2000bc9c g O .bss 00000001 HardwareSerial::s_count_serials_with_serial_events +00031614 g F .text.itcm 0000001a __ascii_wctomb +2000bb38 g O .bss 00000004 usb_midi_handleSongPosition +000295d0 g F .text.itcm 00000084 EventResponder::triggerEventNotImmediate() +2000bb1c g O .bss 00000004 usb_midi_handleContinue +2000bcb3 g O .bss 00000001 usb_midi_msg_data2 +0002a65c g F .text.itcm 00000054 micros +0000153c w F .text.itcm 000001cc BMCFas::update() +000257cc g F .text.itcm 00000078 TwoWire::setClock(unsigned long) +0002eda4 g F .text.itcm 000000a0 _malloc_trim_r +00021300 g F .text.itcm 000000b4 BMCEditor::forceDisconnectEditor() +00033c64 g F .text.itcm 00000106 _wcsnrtombs_l 6001e294 g O .text.progmem 00000004 string0 -00028518 g F .text.itcm 00000090 MIDIDeviceBase::rx_data(Transfer_struct const*) -00013eac g F .text.itcm 00000074 BMC::setupLeds() -00026d50 g F .text.itcm 000000bc USBDriverTimer::start(unsigned long) -0001375c g F .text.itcm 0000020c BMC::readHardware() +00028604 g F .text.itcm 00000090 MIDIDeviceBase::rx_data(Transfer_struct const*) +00013f74 g F .text.itcm 00000074 BMC::setupLeds() +00026e3c g F .text.itcm 000000bc USBDriverTimer::start(unsigned long) +00013824 g F .text.itcm 0000020c BMC::readHardware() 60001828 w F .text.code 00000002 startup_late_hook -2000b020 g O .bss 00000018 SWIMUCal -000053ac g F .text.itcm 0000093c BMC::midiInDebug(BMCMidiMessage) -0002af38 g F .text.itcm 00000038 usb_start_sof_interrupts -00007978 w F .text.itcm 000001d4 BMCEditor::saveStore() -0002e6a8 g F .text.itcm 000002dc strcmp +2000b040 g O .bss 00000018 SWIMUCal +00005434 g F .text.itcm 0000093c BMC::midiInDebug(BMCMidiMessage) +0002b020 g F .text.itcm 00000038 usb_start_sof_interrupts +00007918 w F .text.itcm 000001d4 BMCEditor::saveStore() +0002e788 g F .text.itcm 000002dc strcmp 6001e25e w O .text.progmem 00000001 _serialEvent_default -2000bc90 g O .bss 00000001 usb_midi_msg_cable -20006480 g O .bss 00003ea0 bmc +2000bcb0 g O .bss 00000001 usb_midi_msg_cable +20006480 g O .bss 00003ec0 bmc 000013d0 w F .text.itcm 0000016c BMCFas::fetchSysEx(unsigned char, unsigned short, unsigned short, unsigned char) 20000000 g O .data 00000280 endpoint_queue_head -200051ec g O .data 00000014 usb_string_product_name -0001a7c8 g F .text.itcm 00000006 BMCEditor::getLayer() -00015140 g F .text.itcm 0000000e BMC::setLayer(unsigned char, bool, bool) -0002a4cc g F .text.itcm 000000a8 delay -2000bc6e g O .bss 00000002 dma_channel_allocated_mask -0001d05c w F .text.itcm 00000026 BMCEditor::backupActive() -00033e80 g F .fini 00000000 _fini -000229a8 g F .text.itcm 000000c2 BMCEditor::utilitySendPreset(unsigned char, unsigned char, bool) -000230c8 g F .text.itcm 00000020 BMCMidi::sendSysEx(unsigned char, unsigned char*, unsigned short, bool, unsigned char, bool) -000251b8 g F .text.itcm 0000002a TwoWire::write(unsigned char) +200052ac g O .data 00000014 usb_string_product_name +0001a8a8 g F .text.itcm 00000006 BMCEditor::getLayer() +0001520c g F .text.itcm 0000000e BMC::setLayer(unsigned char, bool, bool) +0002a5b4 g F .text.itcm 000000a8 delay +2000bc8e g O .bss 00000002 dma_channel_allocated_mask +0001d13c w F .text.itcm 00000026 BMCEditor::backupActive() +00033f80 g F .fini 00000000 _fini +0001770c w F .text.itcm 000001d4 BMCMidi::readBle() +00022a88 g F .text.itcm 000000c2 BMCEditor::utilitySendPreset(unsigned char, unsigned char, bool) +00023194 g F .text.itcm 00000020 BMCMidi::sendSysEx(unsigned char, unsigned char*, unsigned short, bool, unsigned char, bool) +000252a4 g F .text.itcm 0000002a TwoWire::write(unsigned char) 60001020 g O .text.headers 0000000c BootData 000000d0 w F .text.itcm 00000098 BMCStopwatch::set(unsigned char, unsigned char, unsigned char) -00024238 g F .text.itcm 000002a8 BMCMidi::sendAfterTouchPoly(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) -00023ff0 g F .text.itcm 00000248 BMCMidi::sendAfterTouch(unsigned char, unsigned char, unsigned char, unsigned char) -0002e18c g F .text.itcm 00000040 sprintf -00029e5c g F .text.itcm 00000016 Print::print(long) -0002ad7c g F .text.itcm 00000004 Panic_Temp_isr -0002ba10 g F .text.itcm 00000010 usb_midi_write_packed -000188c4 g F .text.itcm 00000010 BMC_SSD1306::~BMC_SSD1306() -00033c6c g F .text.itcm 00000024 _wcsnrtombs_r -00017dd4 g F .text.itcm 00000034 BMC::setSketchByte(unsigned char, unsigned char) -0002e658 g F .text.itcm 0000002c _write_r -000094a4 w F .text.itcm 000000c4 BMCHelix::snapshotScroll(bool) -00025a20 g F .text.itcm 000000d4 Adafruit_GFX::drawRect(short, short, short, short, unsigned short) -0002b6f8 w F .text.itcm 00000004 usb_seremu_class::available() -0001a794 g F .text.itcm 0000000e BMCEditor::connected() -0002a0f0 g F .text.itcm 00000026 String::String(char const*) -000027f0 w F .text.itcm 00000190 BMCDisplay::initOled() -0002bc90 g F .text.itcm 000000a8 usb_midi_read_message -200051b0 g O .data 00000004 _impure_ptr -0001a86c g F .text.itcm 0000000c BMCEditor::getGlobalLedOffset(unsigned short) -00031304 g F .text.itcm 00000130 __sflush_r -0002d560 g F .text.itcm 0000010c scalbn -2000b0f8 g O .bss 00000140 Wire -0002e34c g F .text.itcm 00000046 _fwalk_sglue -2000bb38 g O .bss 00000004 usb_midi_handleTuneRequest +00024308 g F .text.itcm 000002ac BMCMidi::sendAfterTouchPoly(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) +000240b8 g F .text.itcm 00000250 BMCMidi::sendAfterTouch(unsigned char, unsigned char, unsigned char, unsigned char) +0002e274 g F .text.itcm 00000040 sprintf +00029f48 g F .text.itcm 00000016 Print::print(long) +0002ae64 g F .text.itcm 00000004 Panic_Temp_isr +0000ad2c w F .text.itcm 00000122 BMCDisplay::renderFasFxBlock(BMCDataContainer) +0002baf8 g F .text.itcm 00000010 usb_midi_write_packed +000189a8 g F .text.itcm 00000010 BMC_SSD1306::~BMC_SSD1306() +00033d6c g F .text.itcm 00000024 _wcsnrtombs_r +00017eb8 g F .text.itcm 00000034 BMC::setSketchByte(unsigned char, unsigned char) +0002e740 g F .text.itcm 0000002c _write_r +00009444 w F .text.itcm 000000c4 BMCHelix::snapshotScroll(bool) +00025b0c g F .text.itcm 000000d4 Adafruit_GFX::drawRect(short, short, short, short, unsigned short) +0002b7e0 w F .text.itcm 00000004 usb_seremu_class::available() +0001a874 g F .text.itcm 0000000e BMCEditor::connected() +0002a1d8 g F .text.itcm 00000026 String::String(char const*) +000027f8 w F .text.itcm 00000190 BMCDisplay::initOled() +0002bd78 g F .text.itcm 000000a8 usb_midi_read_message +20005270 g O .data 00000004 _impure_ptr +0001a94c g F .text.itcm 0000000c BMCEditor::getGlobalLedOffset(unsigned short) +00031404 g F .text.itcm 00000130 __sflush_r +0002d648 g F .text.itcm 0000010c scalbn +2000b118 g O .bss 00000140 Wire +0002e434 g F .text.itcm 00000046 _fwalk_sglue +2000bb58 g O .bss 00000004 usb_midi_handleTuneRequest 60001c38 g .text.code 00000000 __preinit_array_end -0001d378 w F .text.itcm 0000017c BMCEditor::saveLFO(unsigned char) +0001d458 w F .text.itcm 0000017c BMCEditor::saveLFO(unsigned char) 000005c0 w F .text.itcm 00000120 BMCPresets::set(unsigned char, unsigned char, bool) -0001a804 g F .text.itcm 00000008 BMCEditor::getPortPresetsOffset(unsigned short) -0000a9dc w F .text.itcm 000003ac BMCDisplay::renderBlock(BMCDataContainer) -2000bc91 g O .bss 00000001 usb_midi_msg_channel -0002ef50 g F .text.itcm 0000002a __ascii_mbtowc -0000605c w F .text.itcm 000000d8 BMCSync::assignSettings() -0000b87c g F .text.itcm 00005bce BMC::processEvent(unsigned char, unsigned char, unsigned short, unsigned short, unsigned char, unsigned char) -00019330 g F .text.itcm 00000002 BMCEditor::backupLayerName(unsigned short) -0002af70 g F .text.itcm 0000002c usb_stop_sof_interrupts -00014974 g F .text.itcm 00000232 BMC::assignPixels() -00008258 w F .text.itcm 000000bc BMCSetLists::getSongName(unsigned char, char*) -0002519c w F .text.itcm 00000018 TwoWire::peek() -00029ad0 g F .text.itcm 00000164 HardwareSerial::IRQHandler() -000251b4 w F .text.itcm 00000002 TwoWire::flush() +0001a8e4 g F .text.itcm 00000008 BMCEditor::getPortPresetsOffset(unsigned short) +0000a980 w F .text.itcm 000003ac BMCDisplay::renderBlock(BMCDataContainer) +2000bcb1 g O .bss 00000001 usb_midi_msg_channel +0002f050 g F .text.itcm 0000002a __ascii_mbtowc +000060e4 w F .text.itcm 000000d8 BMCSync::assignSettings() +0000b944 g F .text.itcm 00005be4 BMC::processEvent(unsigned char, unsigned char, unsigned short, unsigned short, unsigned char, unsigned char) +00019414 g F .text.itcm 00000002 BMCEditor::backupLayerName(unsigned short) +0002b058 g F .text.itcm 0000002c usb_stop_sof_interrupts +00014a40 g F .text.itcm 00000232 BMC::assignPixels() +000081f8 w F .text.itcm 000000bc BMCSetLists::getSongName(unsigned char, char*) +00025288 w F .text.itcm 00000018 TwoWire::peek() +00029bbc g F .text.itcm 00000164 HardwareSerial::IRQHandler() +000252a0 w F .text.itcm 00000002 TwoWire::flush() 0000008c g F .text.itcm 0000000c setup -200049d8 g O .data 00000084 usb_descriptor_list -0002143c g F .text.itcm 000000ce BMCEditor::globalSendBackupStatus() -00007f78 w F .text.itcm 0000006c BMCSetLists::set(unsigned char) -000184e0 w F .text.itcm 00000002 Print::flush() -2000bb20 g O .bss 00000004 usb_midi_handleStart -000261f8 g F .text.itcm 000003d4 Adafruit_GFX::drawChar(short, short, unsigned char, unsigned short, unsigned short, unsigned char, unsigned char) -00006178 g F .text.itcm 000004cc BMC::assignSettings() -0002bb80 g F .text.itcm 00000110 usb_midi_send_sysex_add_term_bytes -000181d0 g F .text.itcm 000000fc BMC::readTimedEvent() -000281a8 g F .text.itcm 00000010 USBHost::free_Transfer(Transfer_struct*) +20004a98 g O .data 00000084 usb_descriptor_list +0002151c g F .text.itcm 000000ce BMCEditor::globalSendBackupStatus() +00007f18 w F .text.itcm 0000006c BMCSetLists::set(unsigned char) +000185c4 w F .text.itcm 00000002 Print::flush() +2000bb40 g O .bss 00000004 usb_midi_handleStart +000262e4 g F .text.itcm 000003d4 Adafruit_GFX::drawChar(short, short, unsigned char, unsigned short, unsigned short, unsigned char, unsigned char) +00006200 g F .text.itcm 000004b0 BMC::assignSettings() +0002bc68 g F .text.itcm 00000110 usb_midi_send_sysex_add_term_bytes +000182b4 g F .text.itcm 000000fc BMC::readTimedEvent() +00028294 g F .text.itcm 00000010 USBHost::free_Transfer(Transfer_struct*) 20048000 g .text.csf 00000000 _estack -000294b0 g F .text.itcm 00000034 DMAChannel::release() -00028178 g F .text.itcm 00000010 USBHost::allocate_Pipe() -000287ec g F .text.itcm 000005f0 MIDIDeviceBase::read(unsigned char) -00012e8c g F .text.itcm 00000066 BMC::assignButtons() -0000b58c w F .text.itcm 000002f0 BMCDisplay::renderFasStatus(BMCDataContainer) -00008d20 w F .text.itcm 0000011a BMCDawLogicControl::sendEncoderScrollAssign(bool) -000246ec g F .text.itcm 000001ec BMCMidi::sendSongSelect(unsigned char, unsigned char, unsigned char) +0002959c g F .text.itcm 00000034 DMAChannel::release() +00028264 g F .text.itcm 00000010 USBHost::allocate_Pipe() +000288d8 g F .text.itcm 000005f0 MIDIDeviceBase::read(unsigned char) +00012f64 g F .text.itcm 00000064 BMC::assignButtons() +0000b654 w F .text.itcm 000002f0 BMCDisplay::renderFasStatus(BMCDataContainer) +00008cc0 w F .text.itcm 0000011a BMCDawLogicControl::sendEncoderScrollAssign(bool) +000247cc g F .text.itcm 000001e8 BMCMidi::sendSongSelect(unsigned char, unsigned char, unsigned char) 000006e0 w F .text.itcm 000000e4 BMCSetLists::setPart(unsigned char) 6000170c g F .text.code 00000058 TwoWire::setSCL(unsigned char) -200051a4 g O .data 0000000c __sglue -0001a77c g F .text.itcm 00000016 BMCEditor::dataForBMCAvailable() -000251e4 g F .text.itcm 0000003c TwoWire::write(unsigned char const*, unsigned int) -000284b4 g F .text.itcm 00000062 MIDIDeviceBase::init() -00029e90 w F .text.itcm 0000001c _write +20005264 g O .data 0000000c __sglue +0001a85c g F .text.itcm 00000016 BMCEditor::dataForBMCAvailable() +000252d0 g F .text.itcm 0000003c TwoWire::write(unsigned char const*, unsigned int) +000285a0 g F .text.itcm 00000062 MIDIDeviceBase::init() +00029f7c w F .text.itcm 0000001c _write 200056c0 g .data 00000000 _edata -000083e4 w F .text.itcm 0000093a BMCDawLogicControl::getLedState(unsigned char, unsigned char) -00019048 g F .text.itcm 0000010c BMCEditor::backupGlobalSettings(unsigned short) +00008384 w F .text.itcm 0000093a BMCDawLogicControl::getLedState(unsigned char, unsigned char) +0001912c g F .text.itcm 0000010c BMCEditor::backupGlobalSettings(unsigned short) 00003cdc g F .text.itcm 00000170 BMC::setupDebug() -00033a50 g F .text.itcm 000000aa __fputwc -000091b8 w F .text.itcm 00000026 BMCFas::tunerOff() -0001337c g F .text.itcm 00000168 BMC::setupHardware() -000256bc g F .text.itcm 0000000c lpi2c1_isr() -0002973c g F .text.itcm 00000040 nvic_execution_priority() -000230b8 g F .text.itcm 00000010 BMCMidi::sendRealTime(unsigned char, unsigned char, unsigned char) -2000baf8 g O .bss 00000004 usb_midi_handleClock -00028188 g F .text.itcm 00000010 USBHost::free_Pipe(Pipe_struct*) -00009600 w F .text.itcm 00000050 BMCHelix::toggleSnapshot(unsigned char, unsigned char) -0002a840 g F .text.itcm 00000062 ultoa +00033b50 g F .text.itcm 000000aa __fputwc +00009158 w F .text.itcm 00000026 BMCFas::tunerOff() +00013444 g F .text.itcm 00000168 BMC::setupHardware() +000257a8 g F .text.itcm 0000000c lpi2c1_isr() +00029828 g F .text.itcm 00000040 nvic_execution_priority() +00023184 g F .text.itcm 00000010 BMCMidi::sendRealTime(unsigned char, unsigned char, unsigned char) +2000bb18 g O .bss 00000004 usb_midi_handleClock +00028274 g F .text.itcm 00000010 USBHost::free_Pipe(Pipe_struct*) +000095a0 w F .text.itcm 00000050 BMCHelix::toggleSnapshot(unsigned char, unsigned char) +0002a928 g F .text.itcm 00000062 ultoa 60001764 g F .text.code 00000068 TwoWire::begin() -00019cc0 w F .text.itcm 0000031c BMCEditor::getStore() -000225a8 g F .text.itcm 00000046 BMCEditor::layerMessageLayerCopySwap(bool) +00019da0 w F .text.itcm 0000031c BMCEditor::getStore() +00022688 g F .text.itcm 00000046 BMCEditor::layerMessageLayerCopySwap(bool) 000007c4 w F .text.itcm 00000110 BMCSetLists::setSong(unsigned char) -00025ddc g F .text.itcm 00000090 Adafruit_GFX::fillCircle(short, short, short, unsigned short) -0001a8a8 g F .text.itcm 0000000a BMCEditor::getTriggerOffset(unsigned short) -000314ac g F .text.itcm 0000003e __swrite -0002a83c g F .text.itcm 00000004 operator new(unsigned int) -00029568 g F .text.itcm 00000044 EventResponder::runFromInterrupt() -0001a888 g F .text.itcm 0000000e BMCEditor::getAuxJackOffset(unsigned short) -200051a0 g O .data 00000004 __malloc_trim_threshold +00025ec8 g F .text.itcm 00000090 Adafruit_GFX::fillCircle(short, short, short, unsigned short) +0001a988 g F .text.itcm 0000000a BMCEditor::getTriggerOffset(unsigned short) +000315ac g F .text.itcm 0000003e __swrite +0002a924 g F .text.itcm 00000004 operator new(unsigned int) +00029654 g F .text.itcm 00000044 EventResponder::runFromInterrupt() +0001a968 g F .text.itcm 0000000e BMCEditor::getAuxJackOffset(unsigned short) +20005260 g O .data 00000004 __malloc_trim_threshold 000002e8 w F .text.itcm 000001e8 BMCLFO::getWave(unsigned long) -0001a80c g F .text.itcm 0000000a BMCEditor::getShortcutsOffset(unsigned short) -000226a8 g F .text.itcm 0000008a BMCEditor::utilitySendFasState(unsigned char, bool) -000324e4 g F .text.itcm 00000028 fiprintf -0000a050 w F .text.itcm 000002d0 bool BMCDisplayHandlerFas::renderLooper(BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool) -00032684 g F .text.itcm 00000f8c _vfiprintf_r -00015150 g F .text.itcm 00000012 BMC::reloadLayer() +0001a8ec g F .text.itcm 0000000a BMCEditor::getShortcutsOffset(unsigned short) +00022788 g F .text.itcm 0000008a BMCEditor::utilitySendFasState(unsigned char, bool) +000325e4 g F .text.itcm 00000028 fiprintf +00009ff4 w F .text.itcm 000002d0 bool BMCDisplayHandlerFas::renderLooper(BMC_SSD1306&, unsigned char&, BMCDiplayHandlerData, bool) +00032784 g F .text.itcm 00000f8c _vfiprintf_r +0001521c g F .text.itcm 00000012 BMC::reloadLayer() 0000398c w F .text.itcm 0000017c BMCEditor::printDevicesInfo() -00031014 g F .text.itcm 00000154 __mdiff -0002968c g F .text.itcm 00000092 HardwareSerial::read() -20003a74 g O .data 00000050 SPIClass::spiclass_lpspi3_hardware -00017470 w F .text.itcm 000001e2 BMCSerialMIDI<(unsigned char)2, HardwareSerial>::_read() -00024e20 g F .text.itcm 00000028 BMCMidi::scrollCC(unsigned char, unsigned char, unsigned char, unsigned char, bool, bool, unsigned char, unsigned char) -000269b0 g F .text.itcm 000000dc _spi_dma_rxISR1() -2000bb0c g O .bss 00000004 usb_midi_handlePitchChange -00011840 w F .text.itcm 00000388 BMCAuxJackButton::begin(unsigned char) -00002e64 g F .text.itcm 0000080c BMC::update() -00026e0c g F .text.itcm 00000070 USBDriverTimer::stop() -20004a80 g O .data 00000120 _impure_data -0001a83c g F .text.itcm 0000000e BMCEditor::getSetListOffset(unsigned short) -00007664 w F .text.itcm 00000120 BMCBuildData::getSketchByteData(unsigned char) -0002e340 g F .text.itcm 0000000c __sfp_lock_release -00028278 g F .text.itcm 00000024 MIDIDeviceBase::tx_callback(Transfer_struct const*) -00008e3c w F .text.itcm 000002d4 BMCDawLogicControl::sendEncoderScrolling(unsigned char, unsigned char, bool, unsigned char) -0000915c w F .text.itcm 00000032 BMCFas::isBlockEngaged(unsigned short) -2000bb34 g O .bss 00000004 usb_midi_handleTimeCodeQuarterFrame -200042e0 g O .data 00000101 _ctype_ -00022af8 g F .text.itcm 00000102 BMCEditor::utilitySendAnalogInputCalibrationActivity(unsigned char, unsigned short, unsigned short, unsigned short, bool) -00003e4c g F .text.itcm 00001560 BMC::readDebug() -0002ad50 w F .text.itcm 00000004 _read +00031114 g F .text.itcm 00000154 __mdiff +00029778 g F .text.itcm 00000092 HardwareSerial::read() +20003b34 g O .data 00000050 SPIClass::spiclass_lpspi3_hardware +00024f0c g F .text.itcm 00000028 BMCMidi::scrollCC(unsigned char, unsigned char, unsigned char, unsigned char, bool, bool, unsigned char, unsigned char) +00026a9c g F .text.itcm 000000dc _spi_dma_rxISR1() +2000bb2c g O .bss 00000004 usb_midi_handlePitchChange +0001191c w F .text.itcm 00000388 BMCAuxJackButton::begin(unsigned char) +00002e6c g F .text.itcm 00000804 BMC::update() +00026ef8 g F .text.itcm 00000070 USBDriverTimer::stop() +20004b40 g O .data 00000120 _impure_data +0001a91c g F .text.itcm 0000000e BMCEditor::getSetListOffset(unsigned short) +00007604 w F .text.itcm 00000120 BMCBuildData::getSketchByteData(unsigned char) +0002e428 g F .text.itcm 0000000c __sfp_lock_release +00028364 g F .text.itcm 00000024 MIDIDeviceBase::tx_callback(Transfer_struct const*) +00008ddc w F .text.itcm 000002d4 BMCDawLogicControl::sendEncoderScrolling(unsigned char, unsigned char, bool, unsigned char) +000090fc w F .text.itcm 00000032 BMCFas::isBlockEngaged(unsigned short) +2000bb54 g O .bss 00000004 usb_midi_handleTimeCodeQuarterFrame +200043a0 g O .data 00000101 _ctype_ +00022bd8 g F .text.itcm 00000102 BMCEditor::utilitySendAnalogInputCalibrationActivity(unsigned char, unsigned short, unsigned short, unsigned short, bool) +00003e4c g F .text.itcm 000015e8 BMC::readDebug() +0002ae38 w F .text.itcm 00000004 _read 200061e0 g O .bss 000002a0 BMC_ST7735_t3::_dma_data 60001c38 g .text.code 00000000 __init_array_start -0002a150 g F .text.itcm 0000008c analogRead -20004ba0 g O .data 00000004 F_BUS_ACTUAL -2000ba30 g O .bss 00000004 em_rx_tx -2000bb40 g O .bss 00000122 usb_midi_msg_sysex -200047d0 g O .data 0000001c pin_to_channel -00006134 g F .text.itcm 00000044 BMC::assignStoreData() -00023754 g F .text.itcm 000002a8 BMCMidi::sendNoteOn(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) +0002a238 g F .text.itcm 0000008c analogRead +20004c60 g O .data 00000004 F_BUS_ACTUAL +2000ba50 g O .bss 00000004 em_rx_tx +2000bb60 g O .bss 00000122 usb_midi_msg_sysex +20004890 g O .data 0000001c pin_to_channel +000061bc g F .text.itcm 00000044 BMC::assignStoreData() +00023818 g F .text.itcm 000002ac BMCMidi::sendNoteOn(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) 00003738 w F .text.itcm 000000e0 BMCTools::printPortsNames(unsigned char) -0000b264 w F .text.itcm 00000328 BMCDisplay::renderFasLooperIcon(BMCDataContainer) -00033c90 g F .text.itcm 000000d8 __smakebuf_r -0001e604 g F .text.itcm 0000015a BMCEditor::incomingMessageLinks() +0000b32c w F .text.itcm 00000328 BMCDisplay::renderFasLooperIcon(BMCDataContainer) +00033d90 g F .text.itcm 000000d8 __smakebuf_r +0001e6e4 g F .text.itcm 0000015a BMCEditor::incomingMessageLinks() 00000000 g .text.itcm 00000000 _stext -000293fc g F .text.itcm 000000b4 DMAChannel::begin(bool) -00009568 w F .text.itcm 00000098 BMCHelix::setSnapshot(unsigned char) -00013968 w F .text.itcm 00000450 BMCLed::begin(unsigned char) -0002166c g F .text.itcm 00000330 BMCEditor::globalSettingsMessage(bool) -000244e0 g F .text.itcm 0000020c BMCMidi::sendSongPosition(unsigned char, unsigned short, unsigned char) -0002eb40 g F .text.itcm 000000dc strlen -00028168 g F .text.itcm 00000010 USBHost::free_Device(Device_struct*) -00011e04 g F .text.itcm 00000490 BMC::readAuxJacks() -2000bc96 g O .bss 00000001 usb_seremu_online -000184e4 g F .text.itcm 000000f2 BMC_SSD1306::drawPixel(short, short, unsigned short) +000294e8 g F .text.itcm 000000b4 DMAChannel::begin(bool) +00009508 w F .text.itcm 00000098 BMCHelix::setSnapshot(unsigned char) +00013a30 w F .text.itcm 00000450 BMCLed::begin(unsigned char) +0002174c g F .text.itcm 00000330 BMCEditor::globalSettingsMessage(bool) +000245b4 g F .text.itcm 00000218 BMCMidi::sendSongPosition(unsigned char, unsigned short, unsigned char) +0002ec40 g F .text.itcm 000000dc strlen +00028254 g F .text.itcm 00000010 USBHost::free_Device(Device_struct*) +00011edc g F .text.itcm 00000490 BMC::readAuxJacks() +2000bcb6 g O .bss 00000001 usb_seremu_online +000185c8 g F .text.itcm 000000f2 BMC_SSD1306::drawPixel(short, short, unsigned short) 6001e264 g O .text.progmem 00000018 usb_string_product_name_default -00022734 g F .text.itcm 00000272 BMCEditor::utilitySendStateBits(unsigned char, bool) -0001a764 g F .text.itcm 00000016 BMCEditor::readyToReload() -0001e384 w F .text.itcm 00000280 BMCEditor::changeStoreLocal(unsigned char) -00007784 w F .text.itcm 000001b0 BMCTools::getSketchByteFormat(char*, unsigned char, unsigned char) +00022814 g F .text.itcm 00000272 BMCEditor::utilitySendStateBits(unsigned char, bool) +0001a844 g F .text.itcm 00000016 BMCEditor::readyToReload() +0001e464 w F .text.itcm 00000280 BMCEditor::changeStoreLocal(unsigned char) +00007724 w F .text.itcm 000001b0 BMCTools::getSketchByteFormat(char*, unsigned char, unsigned char) 60001824 w F .text.code 00000002 startup_middle_hook -00029e10 g F .text.itcm 0000004c Print::print(String const&) +00029efc g F .text.itcm 0000004c Print::print(String const&) 60001830 g F .text.code 000000f8 configure_cache -00028060 g F .text.itcm 00000080 USBHost::disconnect_Device(Device_struct*) -00006c18 g F .text.itcm 000000fa BMC::editorRead() -000285b4 g F .text.itcm 000000a2 MIDIDeviceBase::write_packed(unsigned long) -0002977c g F .text.itcm 00000278 HardwareSerial::begin(unsigned long, unsigned short) -0000a370 w F .text.itcm 0000033c BMCDisplay::renderMidi(BMCDataContainer) -000152b4 w F .text.itcm 00000168 BMCTunerData::setData(unsigned char, unsigned char, unsigned char) +0002814c g F .text.itcm 00000080 USBHost::disconnect_Device(Device_struct*) +00006c88 g F .text.itcm 000000fa BMC::editorRead() +000286a0 g F .text.itcm 000000a2 MIDIDeviceBase::write_packed(unsigned long) +00029868 g F .text.itcm 00000278 HardwareSerial::begin(unsigned long, unsigned short) +0000a314 w F .text.itcm 0000033c BMCDisplay::renderMidi(BMCDataContainer) +00015380 w F .text.itcm 00000168 BMCTunerData::setData(unsigned char, unsigned char, unsigned char) 60001c38 g .text.code 00000000 __preinit_array_start -0002b678 g F .text.itcm 0000001c usb_receive -0001a758 g F .text.itcm 0000000a BMCEditor::update() -00030c08 g F .text.itcm 00000060 __lo0bits -0001b1d4 w F .text.itcm 00000048 BMCMidiMessage::appendToSysEx16Bits(unsigned short) -0002c334 g F .text.itcm 00000064 tx_queue_transfer -00014050 w F .text.itcm 00000328 void BMC::handleLed<(unsigned short)5>(BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char) -00027918 g F .text.itcm 0000021c USBHost::delete_Pipe(Pipe_struct*) +0002b760 g F .text.itcm 0000001c usb_receive +0001a838 g F .text.itcm 0000000a BMCEditor::update() +00030d08 g F .text.itcm 00000060 __lo0bits +0001b2b4 w F .text.itcm 00000048 BMCMidiMessage::appendToSysEx16Bits(unsigned short) +0002c41c g F .text.itcm 00000064 tx_queue_transfer +0001411c w F .text.itcm 00000328 void BMC::handleLed<(unsigned short)5>(BMCLed&, BMCBitStates<(unsigned short)5>&, unsigned char, unsigned char) +00027a04 g F .text.itcm 0000021c USBHost::delete_Pipe(Pipe_struct*) 00058800 g *ABS* 00000000 _flashimagelen -00025c0c g F .text.itcm 00000030 Adafruit_GFX::Adafruit_GFX(short, short) -000146c8 w F .text.itcm 0000029c BMCPixels::write(unsigned short, unsigned char) -0002ab98 w F .text.itcm 00000002 serialEvent3() -0002d780 g F .text.itcm 0000000a __aeabi_atexit -0001e1fc w F .text.itcm 000000c0 BMCEditor::backupCancel() -2000bb1c g O .bss 00000004 usb_midi_handleSongSelect -0002c6ac g F .text.itcm 00000024 rtc_get -00026704 g F .text.itcm 0000000c Adafruit_GFX::setTextSize(unsigned char) -00031618 g F .text.itcm 00000078 frexp -000295ac g F .text.itcm 00000004 pendablesrvreq_isr -000092ec w F .text.itcm 000001b8 BMCHelix::command(unsigned char, unsigned char, unsigned char) -0001aec4 w F .text.itcm 00000060 BMCMidiMessage::prepareEditorMessage(unsigned char, unsigned char, unsigned char, unsigned char, unsigned short) -00024de8 g F .text.itcm 00000038 BMCMidi::toggleCC(unsigned char, unsigned char, unsigned char) -000184dc w F .text.itcm 00000004 Print::availableForWrite() -20004c28 g O .data 0000016c __global_locale -000277cc g F .text.itcm 0000014c USBHost::new_Pipe(Device_struct*, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long) -200040d4 w O .data 0000001c vtable for MIDIDevice -2000b8bc g O .bss 00000001 __lock___sfp_recursive_mutex -00025814 g F .text.itcm 00000022 Adafruit_GFX::setRotation(unsigned char) -0002150c g F .text.itcm 00000160 BMCEditor::globalBackupMessage(bool) -00029eac g F .text.itcm 00000028 Print::printNumber(unsigned long, unsigned char, unsigned char) -0001280c w F .text.itcm 0000010c BMCButton::update() -0002b5bc g F .text.itcm 00000064 usb_config_tx -0002ad54 w F .text.itcm 00000006 _close -00001714 w F .text.itcm 000001ac BMCBeatBuddy::update() -2000baf0 g O .bss 00000004 usb_midi_handleActiveSensing -0002d814 g F .text.itcm 00000010 free -00020d74 g F .text.itcm 0000029c BMCEditor::connectEditor() -00030b24 g F .text.itcm 000000a4 __multadd -00030b10 g F .text.itcm 00000012 _Bfree -20005200 w O .data 00000016 usb_string_serial_number -00024e70 g F .text.itcm 00000060 BMC24LC256::BMC24LC256(BMC_eeprom_size_t, unsigned char, unsigned int, unsigned char) -000136f4 g F .text.itcm 00000068 BMC::assignHardware() +00025cf8 g F .text.itcm 00000030 Adafruit_GFX::Adafruit_GFX(short, short) +00014794 w F .text.itcm 0000029c BMCPixels::write(unsigned short, unsigned char) +0002ac80 w F .text.itcm 00000002 serialEvent3() +0002d868 g F .text.itcm 0000000a __aeabi_atexit +0001e2dc w F .text.itcm 000000c0 BMCEditor::backupCancel() +2000bb3c g O .bss 00000004 usb_midi_handleSongSelect +0002c794 g F .text.itcm 00000024 rtc_get +000267f0 g F .text.itcm 0000000c Adafruit_GFX::setTextSize(unsigned char) +00031718 g F .text.itcm 00000078 frexp +00029698 g F .text.itcm 00000004 pendablesrvreq_isr +0000928c w F .text.itcm 000001b8 BMCHelix::command(unsigned char, unsigned char, unsigned char) +0001afa4 w F .text.itcm 00000060 BMCMidiMessage::prepareEditorMessage(unsigned char, unsigned char, unsigned char, unsigned char, unsigned short) +00024ed4 g F .text.itcm 00000038 BMCMidi::toggleCC(unsigned char, unsigned char, unsigned char) +000185c0 w F .text.itcm 00000004 Print::availableForWrite() +20004ce8 g O .data 0000016c __global_locale +000278b8 g F .text.itcm 0000014c USBHost::new_Pipe(Device_struct*, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long) +20004194 w O .data 0000001c vtable for MIDIDevice +2000b8dc g O .bss 00000001 __lock___sfp_recursive_mutex +00025900 g F .text.itcm 00000022 Adafruit_GFX::setRotation(unsigned char) +000215ec g F .text.itcm 00000160 BMCEditor::globalBackupMessage(bool) +00029f98 g F .text.itcm 00000028 Print::printNumber(unsigned long, unsigned char, unsigned char) +000128e4 w F .text.itcm 0000010c BMCButton::update() +0002b6a4 g F .text.itcm 00000064 usb_config_tx +0002ae3c w F .text.itcm 00000006 _close +00001708 w F .text.itcm 000001ac BMCBeatBuddy::update() +2000bb10 g O .bss 00000004 usb_midi_handleActiveSensing +0002d8fc g F .text.itcm 00000010 free +00020e54 g F .text.itcm 0000029c BMCEditor::connectEditor() +00030c24 g F .text.itcm 000000a4 __multadd +00030c10 g F .text.itcm 00000012 _Bfree +200052c0 w O .data 00000016 usb_string_serial_number +00024f5c g F .text.itcm 00000060 BMC24LC256::BMC24LC256(BMC_eeprom_size_t, unsigned char, unsigned int, unsigned char) +000137bc g F .text.itcm 00000068 BMC::assignHardware() diff --git a/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/config.h b/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/config.h index 2fb9f60..49bf567 100644 --- a/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/config.h +++ b/examples/BMC-Holly/Holly BLE/Holly-BLE-v2-2-2/config.h @@ -1,4 +1,4 @@ -//{"version":2.2,"board":40,"sysExId":8224125,"debug":true,"allowMerge":true,"obeCmd":[[0,0],[0,0],[0,0],[0,0],[0,0]],"daw":true,"fastMode":true,"clickTrack":false,"display":{"oled":{"enabled":true,"length":0,"mux":0,"rotation":[],"address":[],"position":[],"muxPort":[],"settings":1},"ili":{"enabled":false,"t_cs":-1,"t_irq":-1,"reset":-1,"size":0,"disableObe":0,"blocks":[],"position":{"x":0,"y":0},"rotation":1},"reset":-1,"miniDisplay":{"enabled":false,"t_cs":-1,"reset":-1,"rotation":[],"address":[],"position":[]},"lcd":{"enabled":false,"chars":0,"size":0,"type":0,"pwm":-1,"address":-1}},"magicEncoders":false,"events":200,"names":128,"namesLength":17,"maxMidiChannelTracking":16,"serialA":1,"serialAInputDisable":0,"serialB":2,"serialBInputDisable":0,"serialC":3,"serialCInputDisable":0,"serialD":4,"serialDInputDisable":0,"storage":"external","eepromAddress":80,"eepromMaxSize":1,"muxGpioType":0,"muxGpioPinCount":0,"muxGpioAddr1":0,"muxGpioAddr2":0,"muxGpioAddr3":0,"muxGpioAddr4":0,"muxInType":2,"muxInPinCount":8,"muxInAddr1":0,"muxInAddr2":0,"muxInAddr3":0,"muxInAddr4":0,"muxInKeypadType":0,"muxInKeypadPinCount":0,"muxInKeypadRows":0,"muxInKeypadCols":4,"muxInKeypadR1":-1,"muxInKeypadR2":-1,"muxInKeypadR3":-1,"muxInKeypadR4":-1,"muxInKeypadR5":-1,"muxInKeypadR6":-1,"muxInKeypadR7":-1,"muxInKeypadR8":-1,"muxInKeypadC1":-1,"muxInKeypadC2":-1,"muxInKeypadC3":-1,"muxInKeypadC4":-1,"muxInKeypadC5":-1,"muxInKeypadC6":-1,"muxInKeypadC7":-1,"muxInKeypadC8":-1,"muxIn74HC165LoadPin":6,"muxIn74HC165ClockPin":7,"muxIn74HC165DataPin":5,"muxOut74HC595PwmPin":-1,"muxInAnalogType":0,"muxInAnalogPinCount":0,"muxInAnalog74HC4067Pins":{"sig":[-1,-1,-1,-1,-1,-1,-1,-1],"channels":[-1,-1,-1,-1]},"muxInAnalog74HC4051Pins":{"sig":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"channels":[-1,-1,-1]},"muxOutType":0,"muxOutPinCount":0,"muxOut74HC595LatchPin":-1,"muxOut74HC595ClockPin":-1,"muxOut74HC595DataPin":-1,"pixelsRearrageList":[],"rgbPixelsRearrageList":[],"pixelsEnablePin":-1,"pixelsEnablePinMode":1,"pixelsRgbMode":"WS2812_GRB","deviceName":"BMC Holly","bleName":"","usbName":"BMC Holly","storageSize":32000,"time":false,"useHelix":true,"useBeatBuddy":true,"useFas":2,"useKemper":false,"merge":{"encoders":[],"pots":[],"buttonLeds":[],"biLeds":[],"triLeds":[],"biGlobalLeds":[],"triGlobalLeds":[],"relaysL":[],"relaysNL":[],"buttonPixels":[],"buttonRgbPixels":[]},"advanced":{"BMC_BUTTON_DEBOUNCE_TIME":0,"BMC_BUTTON_DUAL_PRESS_TIMEOUT":0,"BMC_BTN_CONTINUOUS_INTERVAL":0,"BMC_BUTTON_DOUBLE_PRESS_THRESHOLD":0,"BMC_BUTTON_NO_PULLUP":0,"BMC_BUTTON_DEBOUNCE_MAX_RESPONSE":0,"BMC_LED_PULSE_TIMEOUT":0,"BMC_LED_PWM_DIM_VALUE":0,"BMC_LED_PWM_MAX_VALUE":0,"BMC_LED_BLINK_TIMEOUT":0,"BMC_LEDS_MAX_TEMP_BLINKER":0,"BMC_REVERSE_LED_POLARITY":0,"BMC_NO_LED_TEST_AT_LAUNCH":0,"BMC_NO_GLOBAL_LED_TEST_AT_LAUNCH":0,"BMC_LAYER_LED_DIM":0,"BMC_GLOBAL_LED_DIM":0,"BMC_USE_USB_MIDI_BIG_BUFFER":0,"BMC_L_RELAY_HOLD_TIME":0,"BMC_RELAYS_MOMENTARY_HOLD":0,"BMC_MIDI_SYSEX_SIZE":128,"BMC_DELAY_SYSEX_ON_SERIAL":0,"BMC_RESET_INCOMING_EDITOR_MESSAGES":0,"BMC_PIXEL_MAX_BRIGHTNESS":128,"BMC_PIXEL_DIM_BRIGHTNESS":10,"BMC_TIME_ADJUST":0,"BMC_I2C_FREQ_100K":0,"BMC_OLED_HEIGHT":32,"BMC_FAS3_POLL_TIME":2000,"BMC_ENCODER_INPUT_PULLUP":0,"BMC_STREAM_TEMPL_LAYER":"","BMC_STREAM_TEMPL_PRESET":"","BMC_STREAM_TEMPL_SETLIST":"","BMC_STREAM_TEMPL_SETLIST_SONG":"","BMC_STREAM_TEMPL_MIDI_PC":"","BMC_STREAM_TEMPL_MIDI_CC":"","BMC_STREAM_TEMPL_MIDI_NOTE_ON":"","BMC_STREAM_TEMPL_MIDI_NOTE_OFF":"","BMC_STREAM_TEMPL_MIDI_CLOCK_BPM":"","BMC_ILI9341_RED":"","BMC_ILI9341_GREEN":"","BMC_ILI9341_BLUE":"","BMC_ILI9341_YELLOW":"","BMC_ILI9341_CYAN":"","BMC_ILI9341_MAGENTA":"","BMC_ILI9341_ORANGE":"","BMC_ILI9341_GRAY":"","BMC_ILI9341_NAVY":"","BMC_ILI9341_DARKGREEN":"","BMC_ILI9341_OLIVE":"","BMC_ILI9341_MAROON":"","BMC_ILI9341_PURPLE":""},"ports":{"host":true,"serialA":1,"serialB":3,"serialC":0,"serialD":0,"ble":false,"pixels":2},"blePins":{"interrupt":2,"reset":9,"chip_select":10},"excludedPins":[18,19,6,7,5,0,1,15,14,8],"excludeI2c":true,"excludeSPI":false,"layers":5,"layerEvents":6,"buttonEvents":6,"triggers":4,"timedEvents":4,"customSysEx":4,"tempoToTap":2,"sketchBytes":4,"sketchBytesData":[{"name":"Byte 0","min":0,"max":255,"step":1,"initialValue":0,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 1","min":0,"max":255,"step":1,"initialValue":0,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 2","min":0,"max":255,"step":1,"initialValue":0,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 3","min":0,"max":255,"step":1,"initialValue":0,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 4","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 5","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 6","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 7","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 8","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 9","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 10","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 11","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 12","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 13","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 14","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 15","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 16","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 17","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 18","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 19","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 20","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 21","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 22","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 23","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 24","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 25","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 26","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 27","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 28","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 29","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 30","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 31","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0}],"presetBanks":8,"presetsPerBank":8,"presetItems":8,"setLists":8,"setListsSongs":16,"setListsSongLibrary":64,"setListsSongParts":8,"pixelPrograms":0,"pixelStrip":0,"ui":{"ledColors":{"leds":{},"globalLeds":{"0":2,"1":2,"2":2,"3":2,"4":2},"biLeds":{},"globalBiLeds":{},"triLeds":{},"globalTriLeds":{},"pixels":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"globalPixels":{},"rgbPixels":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"globalRgbPixels":{},"pixelStrip":{}},"links":[{"items":[{"id":4,"index":0},{"id":14,"index":0},{"id":22,"index":0}]},{"items":[{"id":4,"index":1},{"id":14,"index":1},{"id":22,"index":1}]},{"items":[{"id":4,"index":2},{"id":14,"index":2},{"id":22,"index":2}]},{"items":[{"id":4,"index":3},{"id":14,"index":3},{"id":22,"index":3}]},{"items":[{"id":4,"index":4},{"id":14,"index":4},{"id":22,"index":4}]},{"items":[{"id":4,"index":5},{"id":22,"index":5},{"id":14,"index":5}]}],"buttons":[{"pins":[64,-1,-1],"pin":0,"pinB":0,"x":220,"y":440,"style":0,"mergeType":14,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[65,-1,-1],"pin":0,"pinB":0,"x":520,"y":440,"style":0,"mergeType":14,"mergeIndex":1,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[66,-1,-1],"pin":0,"pinB":0,"x":820,"y":440,"style":0,"mergeType":14,"mergeIndex":2,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[67,-1,-1],"pin":0,"pinB":0,"x":820,"y":190,"style":0,"mergeType":14,"mergeIndex":3,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[68,-1,-1],"pin":0,"pinB":0,"x":520,"y":190,"style":0,"mergeType":14,"mergeIndex":4,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[69,-1,-1],"pin":0,"pinB":0,"x":220,"y":190,"style":0,"mergeType":14,"mergeIndex":5,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]}],"encoders":[],"pots":[],"leds":[],"biLeds":[],"globalBiLeds":[],"triLeds":[],"globalTriLeds":[],"pwmLeds":[],"pixels":[],"rgbPixels":[{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":240,"y":570,"style":0,"mergeType":4,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":540,"y":570,"style":0,"mergeType":4,"mergeIndex":1,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":840,"y":570,"style":0,"mergeType":4,"mergeIndex":2,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":830,"y":120,"style":0,"mergeType":4,"mergeIndex":3,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":540,"y":120,"style":0,"mergeType":4,"mergeIndex":4,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":240,"y":110,"style":0,"mergeType":4,"mergeIndex":5,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]}],"globalPixels":[],"globalRgbPixels":[],"pixelStrip":[],"globalButtons":[{"pins":[30,-1,-1],"pin":0,"pinB":0,"x":640,"y":280,"style":4,"mergeType":0,"mergeIndex":0,"rotation":32,"size":0,"background":0,"color":1,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[31,-1,-1],"pin":0,"pinB":0,"x":720,"y":280,"style":4,"mergeType":0,"mergeIndex":0,"rotation":32,"size":0,"background":0,"color":1,"value":0,"other1":-1,"other2":-1,"blocks":[]}],"globalEncoders":[],"globalPots":[],"globalLeds":[{"pins":[24,-1,-1],"pin":0,"pinB":0,"x":630,"y":390,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":2,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[25,-1,-1],"pin":0,"pinB":0,"x":660,"y":390,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":2,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[26,-1,-1],"pin":0,"pinB":0,"x":690,"y":390,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":2,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[27,-1,-1],"pin":0,"pinB":0,"x":720,"y":390,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":2,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[28,-1,-1],"pin":0,"pinB":0,"x":750,"y":390,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":2,"value":0,"other1":-1,"other2":-1,"blocks":[]}],"magicEncoders":[],"globalMagicEncoders":[],"relaysNL":[],"relaysL":[],"auxJacks":[{"pins":[23,22,21],"pin":0,"pinB":0,"x":610,"y":30,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]}],"oled":[{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":200,"y":380,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":0,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":500,"y":380,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":5,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":800,"y":380,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":4,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":800,"y":280,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":3,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":500,"y":280,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":2,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":200,"y":280,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":1,"blocks":[]}],"ili":[],"miniDisplay":[],"lcd":[],"lfo":[],"shortcuts":[{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":900,"y":10,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]}]},"uiMerge":[{"hide":false,"parent":4,"parentId":0,"child":14,"childId":0},{"hide":false,"parent":4,"parentId":1,"child":14,"childId":1},{"hide":false,"parent":4,"parentId":2,"child":14,"childId":2},{"hide":false,"parent":4,"parentId":3,"child":14,"childId":3},{"hide":false,"parent":4,"parentId":4,"child":14,"childId":4},{"hide":false,"parent":4,"parentId":5,"child":14,"childId":5},{"hide":false,"parent":14,"parentId":0,"child":4,"childId":0},{"hide":false,"parent":14,"parentId":1,"child":4,"childId":1},{"hide":false,"parent":14,"parentId":2,"child":4,"childId":2},{"hide":false,"parent":14,"parentId":3,"child":4,"childId":3},{"hide":false,"parent":14,"parentId":4,"child":4,"childId":4},{"hide":false,"parent":14,"parentId":5,"child":4,"childId":5}],"uiTemp":[],"hardware":{"buttons":{"length":0,"pins":[],"position":[],"style":[]},"encoders":{"length":0,"pins":[],"pinsA":[],"pinsB":[],"position":[]},"pots":{"length":0,"pins":[],"position":[],"style":[]},"leds":{"length":0,"pins":[],"position":[],"color":[]},"pixels":{"length":0,"pins":[],"position":[]},"rgbPixels":{"length":0,"pins":[],"position":[]},"globalButtons":{"length":0,"pins":[],"position":[],"style":[]},"globalEncoders":{"length":0,"pins":[],"pinsA":[],"pinsB":[],"position":[]},"globalPots":{"length":0,"pins":[],"position":[],"style":[]},"globalLeds":{"length":0,"pins":[],"position":[],"color":[]},"globalPixels":{"length":0,"pins":[],"position":[]},"globalRgbPixels":{"length":0,"pins":[],"position":[]},"relaysNL":{"length":0,"pins":[],"position":[]},"relaysL":{"length":0,"pins":[],"pinsA":[],"pinsB":[],"position":[]}},"pixelsPrograms":0} +//{"version":2.2,"board":40,"sysExId":8224125,"debug":true,"allowMerge":true,"obeCmd":[[0,0],[0,0],[0,0],[0,0],[0,0]],"daw":true,"fastMode":true,"clickTrack":false,"display":{"oled":{"enabled":true,"length":0,"mux":0,"rotation":[],"address":[],"position":[],"muxPort":[],"settings":1},"ili":{"enabled":false,"t_cs":-1,"t_irq":-1,"reset":-1,"size":0,"disableObe":0,"blocks":[],"position":{"x":0,"y":0},"rotation":1},"reset":-1,"miniDisplay":{"enabled":false,"t_cs":-1,"reset":-1,"rotation":[],"address":[],"position":[]},"lcd":{"enabled":false,"chars":0,"size":0,"type":0,"pwm":-1,"address":-1}},"magicEncoders":false,"events":200,"names":128,"namesLength":17,"maxMidiChannelTracking":16,"serialA":1,"serialAInputDisable":0,"serialB":2,"serialBInputDisable":0,"serialC":3,"serialCInputDisable":0,"serialD":4,"serialDInputDisable":0,"midiBLE":5,"storage":"external","eepromAddress":80,"eepromMaxSize":1,"muxGpioType":0,"muxGpioPinCount":0,"muxGpioAddr1":0,"muxGpioAddr2":0,"muxGpioAddr3":0,"muxGpioAddr4":0,"muxInType":2,"muxInPinCount":8,"muxInAddr1":0,"muxInAddr2":0,"muxInAddr3":0,"muxInAddr4":0,"muxInKeypadType":0,"muxInKeypadPinCount":0,"muxInKeypadRows":0,"muxInKeypadCols":4,"muxInKeypadR1":-1,"muxInKeypadR2":-1,"muxInKeypadR3":-1,"muxInKeypadR4":-1,"muxInKeypadR5":-1,"muxInKeypadR6":-1,"muxInKeypadR7":-1,"muxInKeypadR8":-1,"muxInKeypadC1":-1,"muxInKeypadC2":-1,"muxInKeypadC3":-1,"muxInKeypadC4":-1,"muxInKeypadC5":-1,"muxInKeypadC6":-1,"muxInKeypadC7":-1,"muxInKeypadC8":-1,"muxIn74HC165LoadPin":6,"muxIn74HC165ClockPin":7,"muxIn74HC165DataPin":5,"muxOut74HC595PwmPin":-1,"muxInAnalogType":0,"muxInAnalogPinCount":0,"muxInAnalog74HC4067Pins":{"sig":[-1,-1,-1,-1,-1,-1,-1,-1],"channels":[-1,-1,-1,-1]},"muxInAnalog74HC4051Pins":{"sig":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"channels":[-1,-1,-1]},"muxOutType":0,"muxOutPinCount":0,"muxOut74HC595LatchPin":-1,"muxOut74HC595ClockPin":-1,"muxOut74HC595DataPin":-1,"pixelsRearrageList":[],"rgbPixelsRearrageList":[],"pixelsEnablePin":-1,"pixelsEnablePinMode":1,"pixelsRgbMode":"WS2812_GRB","deviceName":"BMC Holly","bleName":"","usbName":"BMC Holly","storageSize":32000,"time":false,"useHelix":true,"useBeatBuddy":true,"useFas":2,"useKemper":false,"merge":{"encoders":[],"pots":[],"buttonLeds":[],"biLeds":[],"triLeds":[],"biGlobalLeds":[],"triGlobalLeds":[],"relaysL":[],"relaysNL":[],"buttonPixels":[],"buttonRgbPixels":[]},"advanced":{"BMC_BUTTON_DEBOUNCE_TIME":0,"BMC_BUTTON_DUAL_PRESS_TIMEOUT":0,"BMC_BTN_CONTINUOUS_INTERVAL":0,"BMC_BUTTON_DOUBLE_PRESS_THRESHOLD":0,"BMC_BUTTON_NO_PULLUP":0,"BMC_BUTTON_DEBOUNCE_MAX_RESPONSE":0,"BMC_LED_PULSE_TIMEOUT":0,"BMC_LED_PWM_DIM_VALUE":0,"BMC_LED_PWM_MAX_VALUE":0,"BMC_LED_BLINK_TIMEOUT":0,"BMC_LEDS_MAX_TEMP_BLINKER":0,"BMC_REVERSE_LED_POLARITY":0,"BMC_NO_LED_TEST_AT_LAUNCH":0,"BMC_NO_GLOBAL_LED_TEST_AT_LAUNCH":0,"BMC_LAYER_LED_DIM":0,"BMC_GLOBAL_LED_DIM":0,"BMC_USE_USB_MIDI_BIG_BUFFER":0,"BMC_L_RELAY_HOLD_TIME":0,"BMC_RELAYS_MOMENTARY_HOLD":0,"BMC_MIDI_SYSEX_SIZE":128,"BMC_DELAY_SYSEX_ON_SERIAL":0,"BMC_RESET_INCOMING_EDITOR_MESSAGES":0,"BMC_PIXEL_MAX_BRIGHTNESS":128,"BMC_PIXEL_DIM_BRIGHTNESS":10,"BMC_TIME_ADJUST":0,"BMC_I2C_FREQ_100K":0,"BMC_OLED_HEIGHT":32,"BMC_FAS3_POLL_TIME":2000,"BMC_ENCODER_INPUT_PULLUP":0,"BMC_STREAM_TEMPL_LAYER":"","BMC_STREAM_TEMPL_PRESET":"","BMC_STREAM_TEMPL_SETLIST":"","BMC_STREAM_TEMPL_SETLIST_SONG":"","BMC_STREAM_TEMPL_MIDI_PC":"","BMC_STREAM_TEMPL_MIDI_CC":"","BMC_STREAM_TEMPL_MIDI_NOTE_ON":"","BMC_STREAM_TEMPL_MIDI_NOTE_OFF":"","BMC_STREAM_TEMPL_MIDI_CLOCK_BPM":"","BMC_ILI9341_WHITE":"","BMC_ILI9341_RED":"","BMC_ILI9341_GREEN":"","BMC_ILI9341_BLUE":"","BMC_ILI9341_YELLOW":"","BMC_ILI9341_CYAN":"","BMC_ILI9341_MAGENTA":"","BMC_ILI9341_ORANGE":"","BMC_ILI9341_GRAY":"","BMC_ILI9341_NAVY":"","BMC_ILI9341_DARKGREEN":"","BMC_ILI9341_OLIVE":"","BMC_ILI9341_MAROON":"","BMC_ILI9341_PURPLE":"","BMC_ILI9341_LIGHTGREY":"","BMC_ILI9341_DARKGREY":"","BMC_ILI9341_DARKCYAN":"","BMC_ILI9341_GREENYELLOW":"","BMC_ILI9341_PINK":"","BMC_SPLASH_BORDER_COLOR":"","BMC_SPLASH_NAME_COLOR":"","BMC_SPLASH_VERSION_COLOR":"","BMC_DHFAS_STATUS_PRESET_NUMBER":"","BMC_DHFAS_STATUS_PRESET_NAME":"","BMC_DHFAS_STATUS_SCENE_NAME":"","BMC_DHFAS_TUNER_ARROWS":"","BMC_DHFAS_TUNER_NEEDLE":"","BMC_DHFAS_TUNER_BORDER":"","BMC_DHFAS_LOOPER_REC":"","BMC_DHFAS_LOOPER_PLAY":""},"ports":{"host":true,"serialA":1,"serialB":0,"serialC":0,"serialD":0,"ble":false,"pixels":2,"midiBLE":3},"blePins":{"interrupt":2,"reset":9,"chip_select":10},"excludedPins":[18,19,6,7,5,0,1,8,15,14],"excludeI2c":true,"excludeSPI":false,"layers":5,"layerEvents":6,"buttonEvents":6,"triggers":4,"timedEvents":4,"customSysEx":4,"tempoToTap":2,"sketchBytes":4,"sketchBytesData":[{"name":"Byte 0","min":0,"max":255,"step":1,"initialValue":0,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 1","min":0,"max":255,"step":1,"initialValue":0,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 2","min":0,"max":255,"step":1,"initialValue":0,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 3","min":0,"max":255,"step":1,"initialValue":0,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 4","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 5","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 6","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 7","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 8","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 9","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 10","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 11","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 12","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 13","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 14","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 15","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 16","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 17","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 18","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 19","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 20","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 21","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 22","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 23","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 24","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 25","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 26","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 27","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 28","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 29","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 30","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0},{"name":"Byte 31","min":0,"max":255,"step":1,"initialValue":-1,"formatType":0,"formatValue":0,"formatAppend":0}],"presetBanks":8,"presetsPerBank":8,"presetItems":8,"setLists":8,"setListsSongs":16,"setListsSongLibrary":64,"setListsSongParts":8,"pixelPrograms":0,"pixelStrip":0,"ui":{"ledColors":{"leds":{},"globalLeds":{"0":2,"1":2,"2":2,"3":2,"4":2},"biLeds":{},"globalBiLeds":{},"triLeds":{},"globalTriLeds":{},"pixels":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"globalPixels":{},"rgbPixels":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"globalRgbPixels":{},"pixelStrip":{}},"links":[{"items":[{"id":4,"index":0},{"id":14,"index":0},{"id":22,"index":0}]},{"items":[{"id":4,"index":1},{"id":14,"index":1},{"id":22,"index":1}]},{"items":[{"id":4,"index":2},{"id":14,"index":2},{"id":22,"index":2}]},{"items":[{"id":4,"index":3},{"id":14,"index":3},{"id":22,"index":3}]},{"items":[{"id":4,"index":4},{"id":14,"index":4},{"id":22,"index":4}]},{"items":[{"id":4,"index":5},{"id":22,"index":5},{"id":14,"index":5}]}],"buttons":[{"pins":[64,-1,-1],"pin":0,"pinB":0,"x":220,"y":440,"style":0,"mergeType":14,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[65,-1,-1],"pin":0,"pinB":0,"x":520,"y":440,"style":0,"mergeType":14,"mergeIndex":1,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[66,-1,-1],"pin":0,"pinB":0,"x":820,"y":440,"style":0,"mergeType":14,"mergeIndex":2,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[67,-1,-1],"pin":0,"pinB":0,"x":820,"y":190,"style":0,"mergeType":14,"mergeIndex":3,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[68,-1,-1],"pin":0,"pinB":0,"x":520,"y":190,"style":0,"mergeType":14,"mergeIndex":4,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[69,-1,-1],"pin":0,"pinB":0,"x":220,"y":190,"style":0,"mergeType":14,"mergeIndex":5,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]}],"encoders":[],"pots":[],"leds":[],"biLeds":[],"globalBiLeds":[],"triLeds":[],"globalTriLeds":[],"pwmLeds":[],"pixels":[],"rgbPixels":[{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":240,"y":570,"style":0,"mergeType":4,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":540,"y":570,"style":0,"mergeType":4,"mergeIndex":1,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":840,"y":570,"style":0,"mergeType":4,"mergeIndex":2,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":830,"y":120,"style":0,"mergeType":4,"mergeIndex":3,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":540,"y":120,"style":0,"mergeType":4,"mergeIndex":4,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":240,"y":110,"style":0,"mergeType":4,"mergeIndex":5,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]}],"globalPixels":[],"globalRgbPixels":[],"pixelStrip":[],"globalButtons":[{"pins":[30,-1,-1],"pin":0,"pinB":0,"x":640,"y":280,"style":4,"mergeType":0,"mergeIndex":0,"rotation":32,"size":0,"background":0,"color":1,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[31,-1,-1],"pin":0,"pinB":0,"x":720,"y":280,"style":4,"mergeType":0,"mergeIndex":0,"rotation":32,"size":0,"background":0,"color":1,"value":0,"other1":-1,"other2":-1,"blocks":[]}],"globalEncoders":[],"globalPots":[],"globalLeds":[{"pins":[24,-1,-1],"pin":0,"pinB":0,"x":630,"y":390,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":2,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[25,-1,-1],"pin":0,"pinB":0,"x":660,"y":390,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":2,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[26,-1,-1],"pin":0,"pinB":0,"x":690,"y":390,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":2,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[27,-1,-1],"pin":0,"pinB":0,"x":720,"y":390,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":2,"value":0,"other1":-1,"other2":-1,"blocks":[]},{"pins":[28,-1,-1],"pin":0,"pinB":0,"x":750,"y":390,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":2,"value":0,"other1":-1,"other2":-1,"blocks":[]}],"magicEncoders":[],"globalMagicEncoders":[],"relaysNL":[],"relaysL":[],"auxJacks":[{"pins":[23,22,21],"pin":0,"pinB":0,"x":610,"y":30,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]}],"oled":[{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":200,"y":380,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":0,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":500,"y":380,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":5,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":800,"y":380,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":4,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":800,"y":280,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":3,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":500,"y":280,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":2,"blocks":[]},{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":200,"y":280,"style":2,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":0,"other2":1,"blocks":[]}],"ili":[],"miniDisplay":[],"lcd":[],"lfo":[],"shortcuts":[{"pins":[-1,-1,-1],"pin":0,"pinB":0,"x":900,"y":10,"style":0,"mergeType":0,"mergeIndex":0,"rotation":0,"size":0,"background":0,"color":0,"value":0,"other1":-1,"other2":-1,"blocks":[]}]},"uiMerge":[{"hide":false,"parent":4,"parentId":0,"child":14,"childId":0},{"hide":false,"parent":4,"parentId":1,"child":14,"childId":1},{"hide":false,"parent":4,"parentId":2,"child":14,"childId":2},{"hide":false,"parent":4,"parentId":3,"child":14,"childId":3},{"hide":false,"parent":4,"parentId":4,"child":14,"childId":4},{"hide":false,"parent":4,"parentId":5,"child":14,"childId":5},{"hide":false,"parent":14,"parentId":0,"child":4,"childId":0},{"hide":false,"parent":14,"parentId":1,"child":4,"childId":1},{"hide":false,"parent":14,"parentId":2,"child":4,"childId":2},{"hide":false,"parent":14,"parentId":3,"child":4,"childId":3},{"hide":false,"parent":14,"parentId":4,"child":4,"childId":4},{"hide":false,"parent":14,"parentId":5,"child":4,"childId":5}],"uiTemp":[],"hardware":{"buttons":{"length":0,"pins":[],"position":[],"style":[]},"encoders":{"length":0,"pins":[],"pinsA":[],"pinsB":[],"position":[]},"pots":{"length":0,"pins":[],"position":[],"style":[]},"leds":{"length":0,"pins":[],"position":[],"color":[]},"pixels":{"length":0,"pins":[],"position":[]},"rgbPixels":{"length":0,"pins":[],"position":[]},"globalButtons":{"length":0,"pins":[],"position":[],"style":[]},"globalEncoders":{"length":0,"pins":[],"pinsA":[],"pinsB":[],"position":[]},"globalPots":{"length":0,"pins":[],"position":[],"style":[]},"globalLeds":{"length":0,"pins":[],"position":[],"color":[]},"globalPixels":{"length":0,"pins":[],"position":[]},"globalRgbPixels":{"length":0,"pins":[],"position":[]},"relaysNL":{"length":0,"pins":[],"position":[]},"relaysL":{"length":0,"pins":[],"pinsA":[],"pinsB":[],"position":[]}},"pixelsPrograms":0} #ifndef BMC_CONFIG_H #define BMC_CONFIG_H @@ -9,11 +9,9 @@ // ****************************************************** // **************************************************** -// ***** Generated for Teensy 4.0 on 2023-07-20 ***** +// ***** Generated for Teensy 4.0 on 2024-02-06 ***** // **************************************************** -#define BMC_EDITOR_SYSEX_ID 0x7D7D7D - // **************************** // ***** DATA RETENTION ***** @@ -26,7 +24,6 @@ // ***** TOOLS ***** // ******************* #define BMC_DEBUG -//#define BMC_USE_TIME // ****************** // ***** SYNC ***** @@ -49,14 +46,14 @@ #define BMC_USE_USB_HOST // Use Serial A #define BMC_USE_MIDI_SERIAL_A -// Use Serial B -#define BMC_USE_MIDI_SERIAL_B +// Use MIDIBLE +#define BMC_USE_MIDIBLE // ************************************** // ***** Serial Ports Assignments ***** // ************************************** #define BMC_MIDI_SERIAL_IO_A Serial1 -#define BMC_MIDI_SERIAL_IO_B Serial3 +#define BMC_MIDI_SERIAL_IO_BLE Serial3 // ********************** // ***** ADVANCED *****